def main(): _log = log.init_logging("main") vhdl_dict = VHDLConstantsParser.parse_vhdl_file("data/ugmt_constants.vhd") basedir_testbench = "data/patterns/emu/" rankLUT = l1t.MicroGMTRankPtQualLUT() options = parse_options() file_dict = discover_files(options) for pattern, fnames in file_dict.iteritems(): _log.info("{patt:+^90}".format(patt=pattern)) _log.info("{info:>90}".format(info="HW PARSING")) # Reading and processing the hardware data input_parser = InputBufferParser(fnames["rx"], vhdl_dict) in_muons = input_parser.get_input_muons() input_testbench = PatternDumper(basedir_testbench + pattern + ".txt", vhdl_dict, TestbenchWriter) offset = 36 fwdp_range = range(offset + vhdl_dict["FWD_POS_LOW"], offset + vhdl_dict["FWD_POS_HIGH"]) fwdn_range = range(offset + vhdl_dict["FWD_NEG_LOW"], offset + vhdl_dict["FWD_NEG_HIGH"]) bar_range = range(offset + vhdl_dict["BARREL_LOW"], offset + vhdl_dict["BARREL_HIGH"]) ovlp_range = range(offset + vhdl_dict["OVL_POS_LOW"], offset + vhdl_dict["OVL_POS_HIGH"]) ovln_range = range(offset + vhdl_dict["OVL_NEG_LOW"], offset + vhdl_dict["OVL_NEG_HIGH"]) while len(in_muons) > 0: bar_muons = [] ovlp_muons = [] ovln_muons = [] fwdp_muons = [] fwdn_muons = [] for i in range(108): mu = in_muons[0] if mu.link in fwdp_range: fwdp_muons.append(mu) if mu.link in fwdn_range: fwdn_muons.append(mu) if mu.link in ovlp_range: ovlp_muons.append(mu) if mu.link in ovln_range: ovln_muons.append(mu) if mu.link in bar_range: bar_muons.append(mu) del in_muons[0] input_testbench.writeMuonBasedInputBX(bar_muons, fwdp_muons, fwdn_muons, ovlp_muons, ovln_muons, [], rankLUT, False, True) input_testbench.dump()
imd_match_dict[mu_out] = [relation, mu_imd] return in_match_dict, imd_match_dict if __name__ == "__main__": vhdl_dict = VHDLConstantsParser.parse_vhdl_file("data/ugmt_constants.vhd") options = parse_options() file_dict = discover_files(options) for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['rx']) print "+"*30, pattern, "+"*30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames['rx'], vhdl_dict) output_parser = OutputBufferParser(fnames['tx'], vhdl_dict, version) in_muons = input_parser.get_input_muons() out_muons = output_parser.get_output_muons() imd_muons = output_parser.get_intermediate_muons() imd_ranks = output_parser.get_ranks() in_mu_non_zero = [ in_mu for in_mu in in_muons if in_mu.bitword != 0 ] out_mu_non_zero = [ out_mu for out_mu in out_muons if out_mu.bitword != 0 ] imd_mu_non_zero = [imd_mu for imd_mu in imd_muons if imd_mu.bitword != 0 ] imd_ranks_non_zero = [imd_rank for imd_rank in imd_ranks if imd_rank != 0] # get closest matches: in_matches, imd_matches = get_closest_matches(in_mu_non_zero, out_mu_non_zero, imd_mu_non_zero)
return in_match_dict, imd_match_dict if __name__ == "__main__": vhdl_dict = VHDLConstantsParser.parse_vhdl_file("data/ugmt_constants.vhd") options = parse_options() file_dict = discover_files(options) for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['rx']) print "+" * 30, pattern, "+" * 30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames['rx'], vhdl_dict) output_parser = OutputBufferParser(fnames['tx'], vhdl_dict, version) in_muons = input_parser.get_input_muons() out_muons = output_parser.get_output_muons() imd_muons = output_parser.get_intermediate_muons() imd_ranks = output_parser.get_ranks() in_mu_non_zero = [in_mu for in_mu in in_muons if in_mu.bitword != 0] out_mu_non_zero = [ out_mu for out_mu in out_muons if out_mu.bitword != 0 ] imd_mu_non_zero = [ imd_mu for imd_mu in imd_muons if imd_mu.bitword != 0 ] imd_ranks_non_zero = [
#### Parameters for histograms may be changed here at any time hist_parameters = { "qualityBits": ["qualityBits", 16, -0.5, 15.5], "ptBits": ["ptBits", 128, 0, 512],#(pt_high-pt_low)/pt_unit, pt_low, pt_high], "phiBits": ["phiBits", 128, 0, 1024], #(phi_high-phi_low)/phi_unit, phi_low, phi_high], "etaBits": ["etaBits", 128, -256, 256] #(eta_high-eta_low)/eta_unit, eta_low, eta_high] } for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['base']) print "+"*30, "version detected:", version, "+"*30 print "+"*30, pattern, "+"*30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames["rx"], vhdl_dict) output_parser = OutputBufferParser(fnames["tx"], vhdl_dict, version) in_muons = input_parser.get_input_muons() for mu in in_muons: if mu.bitword != 0: if mu.qualityBits == 2: _log.debug(print_in_word(mu.bitword)) _log.debug(hex(mu.bitword)) out_muons = output_parser.get_output_muons() intermediate_muons = output_parser.get_intermediate_muons() ranks = output_parser.get_ranks() #### here the number of nonzero ranks is counted rank_num_of_non_zeros = 0 for i in xrange(len(ranks)):
"qualityBits": ["qualityBits", 16, -0.5, 15.5], "ptBits": ["ptBits", 128, 0, 512], #(pt_high-pt_low)/pt_unit, pt_low, pt_high], "phiBits": ["phiBits", 128, 0, 1024], #(phi_high-phi_low)/phi_unit, phi_low, phi_high], "etaBits": ["etaBits", 128, -256, 256] #(eta_high-eta_low)/eta_unit, eta_low, eta_high] } for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['base']) print "+" * 30, "version detected:", version, "+" * 30 print "+" * 30, pattern, "+" * 30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames["rx"], vhdl_dict) output_parser = OutputBufferParser(fnames["tx"], vhdl_dict, version) in_muons = input_parser.get_input_muons() for mu in in_muons: if mu.bitword != 0: if mu.qualityBits == 2: _log.debug(print_in_word(mu.bitword)) _log.debug(hex(mu.bitword)) out_muons = output_parser.get_output_muons() intermediate_muons = output_parser.get_intermediate_muons() ranks = output_parser.get_ranks() #### here the number of nonzero ranks is counted rank_num_of_non_zeros = 0 for i in xrange(len(ranks)):
from tools.muon_helpers import print_in_word from helpers.options import parse_options, discover_files from tools.vhdl import VHDLConstantsParser if __name__ == "__main__": vhdl_dict = VHDLConstantsParser.parse_vhdl_file("data/ugmt_constants.vhd") options = parse_options() file_dict = discover_files(options) for pattern, fnames in file_dict.iteritems(): version = Version.from_filename(fnames['base']) print "+" * 30, "version detected:", version, "+" * 30 print "+" * 30, pattern, "+" * 30 # Reading and processing the hardware data input_parser = InputBufferParser(fnames["rx"], vhdl_dict) in_muons = input_parser.get_input_muons() non_zero = [mu for mu in in_muons if mu.bitword != 0] emu_in_muons = None if "emu_rx" in fnames.keys(): emu_input_parser = InputBufferParser(fnames["emu_rx"], vhdl_dict) emu_in_muons = emu_input_parser.get_input_muons() non_zero_emu = [mu for mu in emu_in_muons if mu.bitword != 0] if emu_in_muons is not None: mu_to_print = {} if options.verbose: mu_to_print = zip(in_muons, emu_in_muons) else: mu_to_print = zip(non_zero, non_zero_emu)