blob: 68b70ce5547a44e615327a194cd3eb4c7c7909a0 [file] [log] [blame]
from fuzzconfig import FuzzConfig
import interconnect
import pytrellis
import argparse
from nets import net_product
def mk_nets(tilepos, glb_ids):
ud_nets = []
rc_prefix = "R{}C{}_".format(tilepos[0], tilepos[1])
# Up/Down conns
ud_nets.extend(net_product(
net_product(["R4C{}_VPTX0{{}}00", "R9C{}_VPTX0{{}}00"], [tilepos[1]]),
glb_ids))
# Phantom DCCs- First fill in "T"/"B", and then global id
ud_nets.extend(net_product(
net_product([rc_prefix + "CLKI{{}}{}_DCC",
# rc_prefix + "JCE{{}}{}_DCC", # TODO: These nets may not exist?
rc_prefix + "CLKO{{}}{}_DCC"], ("T", "B")),
glb_ids))
return ud_nets
def flatten_nets(tilepos):
return [nets for netpair in [(0, 4), (1, 5), (2, 6), (3, 7)] for nets in mk_nets(tilepos, netpair)]
jobs = [
(FuzzConfig(job="GLB_UPDOWN26", family="MachXO2", device="LCMXO2-1200HC", ncl="tap.ncl",
tiles=["CIB_R6C4:CIB_EBR0"]), mk_nets((6, 4), (2, 6))),
(FuzzConfig(job="GLB_UPDOWN15", family="MachXO2", device="LCMXO2-1200HC", ncl="tap.ncl",
tiles=["CIB_R6C7:CIB_EBR0"]), mk_nets((6, 7), (1, 5))),
(FuzzConfig(job="GLB_UPDOWN04", family="MachXO2", device="LCMXO2-1200HC", ncl="tap.ncl",
tiles=["CIB_R6C10:CIB_EBR0"]), mk_nets((6, 10), (0, 4))),
(FuzzConfig(job="GLB_UPDOWN37", family="MachXO2", device="LCMXO2-1200HC", ncl="tap.ncl",
tiles=["CIB_R6C17:CIB_EBR0"]), mk_nets((6, 17), (3, 7))),
(FuzzConfig(job="CIB0_EBR0_END0_UPDOWN", family="MachXO2", device="LCMXO2-1200HC", ncl="tap.ncl",
tiles=["CIB_R6C1:CIB_EBR0_END0"]), flatten_nets((6,1))),
(FuzzConfig(job="CIB0_EBR2_END0_UPDOWN", family="MachXO2", device="LCMXO2-1200HC", ncl="tap.ncl",
tiles=["CIB_R6C22:CIB_EBR2_END0"]), flatten_nets((6,22)))
]
def main(args):
pytrellis.load_database("../../../database")
for job in [jobs[i] for i in args.ids]:
cfg, netnames = job
cfg.setup()
interconnect.fuzz_interconnect_with_netnames(config=cfg, netnames=netnames,
netname_filter_union=False)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Center Mux Routing Fuzzer.")
parser.add_argument(dest="ids", metavar="N", type=int, nargs="*",
default=range(0, len(jobs)), help="Job (indices) to run.")
args = parser.parse_args()
main(args)