| from fuzzconfig import FuzzConfig | |
| import interconnect | |
| import pytrellis | |
| jobs = [ | |
| { | |
| "cfg": FuzzConfig(job="LECLK_45K", family="ECP5", device="LFE5U-45F", ncl="emux_45k.ncl", | |
| tiles=["CIB_R34C2:ECLK_L"]), | |
| "eclk_loc": ["R34C0", "R35C0"], | |
| "prefix": "45K_", | |
| "bank_eclk": ["R18C0_BANK7ECLK0", "R18C0_BANK7ECLK1", "R53C0_BANK6ECLK0", "R53C0_BANK6ECLK1"], | |
| "eclk_i": ["R34C0_ECLKI0", "R35C0_ECLKI0", "R34C0_JECLKI1", "R35C0_JECLKI1"], | |
| "cibclk": ["R34C0_JULQECLKCIB0", "R34C0_JULQECLKCIB1", "R34C0_JLLQECLKCIB0", "R34C0_JLLQECLKCIB1"], | |
| }, | |
| { | |
| "cfg": FuzzConfig(job="RECLK_45K", family="ECP5", device="LFE5U-45F", ncl="emux_45k.ncl", | |
| tiles=["CIB_R34C88:ECLK_R"]), | |
| "eclk_loc": ["R34C90", "R35C90"], | |
| "prefix": "45K_", | |
| "bank_eclk": ["R18C90_BANK2ECLK0", "R18C90_BANK2ECLK1", "R53C90_BANK3ECLK0", "R53C90_BANK3ECLK1"], | |
| "eclk_i": ["R34C90_JECLKI0", "R35C90_JECLKI0", "R34C90_ECLKI1", "R35C90_ECLKI1"], | |
| "cibclk": ["R34C90_JURQECLKCIB0", "R34C90_JURQECLKCIB1", "R34C90_JLRQECLKCIB0", "R34C90_JLRQECLKCIB1"], | |
| }, | |
| ] | |
| def get_sinks(job): | |
| # Get the sinks to fuzz for a given edgemux job | |
| sinks = [] | |
| sinks += job["eclk_i"] | |
| for loc in job["eclk_loc"]: | |
| for i in range(2): | |
| sinks.append("{}_ECLKI_ECLKSYNC{}".format(loc, i)) | |
| sinks.append("{}_JSTOP_ECLKSYNC{}".format(loc, i)) | |
| sinks.append("{}_JECLKO_ECLKSYNC{}".format(loc, i)) | |
| sinks.append("{}_SYNCECLK{}".format(loc, i)) | |
| sinks.append("{}_JNEIGHBORECLK{}".format(loc, i)) | |
| sinks.append("{}_JBRGECLK{}".format(loc, i)) | |
| sinks.append("{}_JECLK{}".format(loc, i)) | |
| sinks += job["bank_eclk"] | |
| sinks += job["cibclk"] | |
| return sinks | |
| def main(): | |
| pytrellis.load_database("../../../database") | |
| for job in jobs: | |
| cfg = job["cfg"] | |
| cfg.setup() | |
| netnames = get_sinks(job) | |
| interconnect.fuzz_interconnect_with_netnames(config=cfg, netnames=netnames, | |
| netname_filter_union=False, | |
| full_mux_style=True, | |
| nonlocal_prefix=job["prefix"]) | |
| if __name__ == "__main__": | |
| main() |