blob: 50fb419141b3c2cb52c025fdae616d612fd7ef07 [file] [log] [blame]
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()