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)
Example #3
0
    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)):
Example #6
0
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)