Beispiel #1
0
 def test_realistic(self):
     real_nets = {
         'Net1': [('R1', 1), ('R2', 1)],
         'Net2': [('R1', 2)],
         'Net3': [('R3', 1)],
         'Net4': [('R2', 2), ('R3', 2)]
     }
     worker = CurrentFlow()
     self.assertEqual(
         list(map(sorted, worker.do(real_nets))),
         [['Net1', 'Net2', 'Net3', 'Net4']]
     )
Beispiel #2
0
#####################

# Default net hopping should work for Custom BB.
NetHopper = CurrentFlow()

MirrorCustomBBReader = PcadReader(mirror_custom_bb_netlist)
mirror_custom_bb_descr = MirrorCustomBBReader.read(NetHopper)

MirrorBPReader = PcadNaiveReader(mirror_bp_netlist)
mirror_bp_descr = MirrorBPReader.read()

# MirrorBPHopper = CurrentFlow([PLACE COMPONENTS TO TREAT AS COPPER HERE])
MirrorBPHopper = CurrentFlow([r"^R\d", r"^RT\d", r"^C\d"])

PcadReader.make_equivalent_nets_identical(
    mirror_bp_descr, MirrorBPHopper.do(mirror_bp_descr)
)


#############
# Filtering #
#############

mirror_custom_bb_result = filter_comp(
    mirror_custom_bb_descr, r"^J_PT_\d+|^J_1V5_\d+|^J_2V5_\d+|^JT0$|^JT1$|^JT2$"
)

mirror_bp_result = filter_comp(mirror_bp_descr,
                               r"^JP\d|^JD\d|^JT0$|^JT1$|^JT2$")

# Mirror Custom BB #############################################################
    RuleNetlist_RBMislabelledAsR(),
    RuleNetlist_NeverUsedFROElks(),
    RuleNetlist_Default()
]

RawNetChecker = SelectorNet(netlist_dict, raw_net_rules)
result_check_raw_net = RawNetChecker.do()

#####################################
# Do net hopping on the raw netlist #
#####################################

NetHopper = CurrentFlow(
    [r'^R\d+', r'^C\d+', r'^NT\d+', r'^CXRB_\d+', r'^RB_\d+|^RBSP\d+'])
PcadReader.make_equivalent_nets_identical(netlist_dict,
                                          NetHopper.do(netlist_dict))

#################################
# Rules to check hopped netlist #
#################################


class RuleNetlistHopped_SingleToDiffN(RuleNetlist):
    def match(self, netname, components):
        return bool(
            re.match(
                r'JD\d_JP\d_EC_(RESET_GPIO|HYB_i2C_SDA|HYB_i2C_SCL)_\d_N$',
                netname))

    def process(self, netname, components):
        result = RuleNetlist.NETLISTCHECK_PROCESSED_NO_ERROR_FOUND
Beispiel #4
0
true_bp_netlist = input_dir / Path("mirror_backplane.net")

###########
# Helpers #
###########


def filter_netname(nets, name):
    for n in nets:
        if re.search(name, n):
            return True
    return False


def netname_printout(nets, name):
    for n in nets:
        if re.search(name, n):
            print(n)


#################
# True BP debug #
#################

TrueBPReader = PcadNaiveReader(true_bp_netlist)
true_bp_descr = TrueBPReader.read()

TrueBPHopper = CurrentFlow([r'^R\d+', r'^RSP_\d+'])
true_nets_hopped = TrueBPHopper.do(true_bp_descr)
Beispiel #5
0
# NOTE: Net hopping won't work for COMET, nor COMET DB, because of the special
# resistors RNXX that have 8 legs, instead of 2.
CometHopper = CurrentFlow([r'^R\d+', r'^NT\d+', r'^RN\d+_\d[ABCD]', r'^C\d+'])
CometDBHopper = CurrentFlow([r'^R\d+', r'^NT\d+', r'^RN\d+[ABCD]'])

CometReader = PcadNaiveReader(comet_netlist)
CometDBReader = PcadNaiveReader(comet_db_netlist)

comet_descr = split_rn(CometReader.read())
comet_db_descr = split_rn(
    CometDBReader.read(),
    regexp=r'^RN((?!5$|6$|9$|12$|15$|18$|21$|24$|27$|39$|30$|33$|36$)\d+)$')

# Manually do net hopping for COMET and COMET DB.
PcadReader.make_equivalent_nets_identical(comet_descr,
                                          CometHopper.do(comet_descr))
PcadReader.make_equivalent_nets_identical(comet_db_descr,
                                          CometDBHopper.do(comet_db_descr))

# Default net hopping should work for Pathfinder and DCB.
NetHopper = CurrentFlow()

PathFinderReader = PcadReader(path_finder_netlist)
DcbReader = PcadReader(dcb_netlist)

path_finder_descr = PathFinderReader.read(NetHopper)
dcb_descr = DcbReader.read(NetHopper)

#############
# Filtering #
#############