blob: 03662ca1d22cd8dec738d6a8f6adcf89e8e35413 [file] [log] [blame]
from fuzzconfig import FuzzConfig
import interconnect
import pytrellis
jobs = [
{
"cfg": FuzzConfig(job="LMID_45K", family="ECP5", device="LFE5U-45F", ncl="emux_45k.ncl",
tiles=["MIB_R34C3:LMID_0"]),
"mux_output": "R34C21_HPFE{:02d}00",
"dcc_loc": "R34C1",
"dcc_pos": "L",
"size": 14,
"prefix": "45K_",
"cibclk": ["R34C1_JLLQPCLKCIB1", "R34C1_JLLQPCLKCIB0", "R34C1_JLLMPCLKCIB0", "R34C1_JULQPCLKCIB0", "R34C1_JULQPCLKCIB1", "R34C1_JULMPCLKCIB0"]
},
{
"cfg": FuzzConfig(job="RMID_45K", family="ECP5", device="LFE5U-45F", ncl="emux_45k.ncl",
tiles=["MIB_R34C87:RMID_0"]),
"mux_output": "R34C65_HPFW{:02d}00",
"dcc_loc": "R34C89",
"dcc_pos": "R",
"size": 14,
"prefix": "45K_",
"cibclk": ["R34C89_JLRQPCLKCIB1", "R34C89_JLRQPCLKCIB0", "R34C89_JLRMPCLKCIB0", "R34C89_JURQPCLKCIB1", "R34C89_JURQPCLKCIB0", "R34C89_JURMPCLKCIB0"]
},
{
"cfg": FuzzConfig(job="TMID_45K", family="ECP5", device="LFE5U-45F", ncl="emux_45k.ncl",
tiles=["MIB_R0C40:TMID_0", "MIB_R0C41:TMID_1"]),
"mux_output": "R18C40_VPFS{:02d}00",
"dcc_loc": "R1C40",
"dcc_pos": "T",
"size": 12,
"prefix": "45K_",
"cibclk": ["R1C40_JTRQPCLKCIB1", "R1C40_JTRQPCLKCIB0", "R1C40_JURMPCLKCIB1", "R1C40_JULMPCLKCIB1", "R1C40_JTLQPCLKCIB0", "R1C40_JTLQPCLKCIB1"]
},
{
"cfg": FuzzConfig(job="BMID_45K", family="ECP5", device="LFE5U-45F", ncl="emux_45k.ncl",
tiles=["MIB_R71C40:BMID_0V", "MIB_R71C41:BMID_2V"]),
"mux_output": "R52C40_VPFN{:02d}00",
"dcc_loc": "R70C40",
"dcc_pos": "B",
"size": 16,
"prefix": "45K_",
"cibclk": ["R70C40_JBLQPCLKCIB0", "R70C40_JBLQPCLKCIB1", "R70C40_JLLMPCLKCIB1", "R70C40_JBRQPCLKCIB1", "R70C40_JBRQPCLKCIB0", "R70C40_JLRMPCLKCIB1"]
},
{
"cfg": FuzzConfig(job="LMID_25K", family="ECP5", device="LFE5U-25F", ncl="emux_25k.ncl",
tiles=["MIB_R25C3:LMID_0"]),
"mux_output": "R25C16_HPFE{:02d}00",
"dcc_loc": "R25C1",
"dcc_pos": "L",
"size": 14,
"prefix": "25K_",
"cibclk": ["R25C1_JLLQPCLKCIB1", "R25C1_JLLQPCLKCIB0", "R25C1_JLLMPCLKCIB0" "R25C1_JULQPCLKCIB1", "R25C1_JULQPCLKCIB0", "R25C1_JULMPCLKCIB0"]
},
{
"cfg": FuzzConfig(job="RMID_25K", family="ECP5", device="LFE5U-25F", ncl="emux_25k.ncl",
tiles=["MIB_R25C69:RMID_0"]),
"mux_output": "R25C51_HPFW{:02d}00",
"dcc_loc": "R25C71",
"dcc_pos": "R",
"size": 14,
"prefix": "25K_",
"cibclk": ["R25C71_JLRQPCLKCIB1", "R25C71_JLRQPCLKCIB1", "R25C71_JLRMPCLKCIB0", "R25C71_JURQPCLKCIB1", "R25C71_JURQPCLKCIB0", "R25C71_JURMPCLKCIB0"]
},
{
"cfg": FuzzConfig(job="TMID_25K", family="ECP5", device="LFE5U-25F", ncl="emux_25k.ncl",
tiles=["MIB_R0C31:TMID_0", "MIB_R0C32:TMID_1"]),
"mux_output": "R13C31_VPFS{:02d}00",
"dcc_loc": "R1C31",
"dcc_pos": "T",
"size": 12,
"prefix": "25K_",
"cibclk": ["R1C31_JULMPCLKCIB1", "R1C31_JTLQPCLKCIB0", "R1C31_JTLQPCLKCIB1", "R1C31_JURMPCLKCIB1", "R1C31_JTRQPCLKCIB0", "R1C31_JTRQPCLKCIB1"]
},
{
"cfg": FuzzConfig(job="BMID_25K", family="ECP5", device="LFE5U-25F", ncl="emux_25k.ncl",
tiles=["MIB_R50C31:BMID_0V", "MIB_R50C32:BMID_2V"]),
"mux_output": "R37C31_VPFN{:02d}00",
"dcc_loc": "R49C31",
"dcc_pos": "B",
"size": 16,
"prefix": "25K_",
"cibclk": ["R49C31_JBLQPCLKCIB0", "R49C31_JBLQPCLKCIB1", "R49C31_JLLMPCLKCIB1", "R49C31_JLRMPCLKCIB1", "R49C31_JBRQPCLKCIB0", "R49C31_JBRQPCLKCIB1"]
},
{
"cfg": FuzzConfig(job="LMID_85K", family="ECP5", device="LFE5U-85F", ncl="emux_85k.ncl",
tiles=["MIB_R46C3:LMID_0"]),
"mux_output": "R46C34_HPFE{:02d}00",
"dcc_loc": "R46C1",
"dcc_pos": "L",
"size": 14,
"prefix": "85K_",
"cibclk": ["R46C1_JLLQPCLKCIB1", "R46C1_JLLQPCLKCIB0", "R46C1_JLLMPCLKCIB2", "R46C1_JLLMPCLKCIB0", "R46C1_JULQPCLKCIB1", "R46C1_JULQPCLKCIB0", "R46C1_JULMPCLKCIB2", "R46C1_JULMPCLKCIB0"]
},
{
"cfg": FuzzConfig(job="RMID_85K", family="ECP5", device="LFE5U-85F", ncl="emux_85k.ncl",
tiles=["MIB_R46C123:RMID_0"]),
"mux_output": "R46C96_HPFW{:02d}00",
"dcc_loc": "R46C125",
"dcc_pos": "R",
"size": 14,
"prefix": "85K_",
"cibclk": ["R46C125_JLRQPCLKCIB1", "R46C125_JLRQPCLKCIB0", "R46C125_JLRMPCLKCIB2", "R46C125_JLRMPCLKCIB0", "R46C125_JURQPCLKCIB1", "R46C125_JURQPCLKCIB0", "R46C125_JURMPCLKCIB2", "R46C125_JURMPCLKCIB0"]
},
{
"cfg": FuzzConfig(job="TMID_85K", family="ECP5", device="LFE5U-85F", ncl="emux_85k.ncl",
tiles=["MIB_R0C67:TMID_0", "MIB_R0C68:TMID_1"]),
"mux_output": "R24C67_VPFS{:02d}00",
"dcc_loc": "R1C67",
"dcc_pos": "T",
"size": 12,
"prefix": "85K_",
"cibclk": ["R1C67_JULMPCLKCIB1", "R1C67_JULMPCLKCIB3", "R1C67_JTLQPCLKCIB0", "R1C67_JTLQPCLKCIB1", "R1C67_JTRQPCLKCIB1", "R1C67_JTRQPCLKCIB0", "R1C67_JURMPCLKCIB3", "R1C67_JURMPCLKCIB1"]
},
{
"cfg": FuzzConfig(job="BMID_85K", family="ECP5", device="LFE5U-85F", ncl="emux_85k.ncl",
tiles=["MIB_R95C67:BMID_0V", "MIB_R95C68:BMID_2V"]),
"mux_output": "R70C67_VPFN{:02d}00",
"dcc_loc": "R94C67",
"dcc_pos": "B",
"size": 16,
"prefix": "85K_",
"cibclk": ["R94C67_JBLQPCLKCIB0", "R94C67_JBLQPCLKCIB1", "R94C67_JLLMPCLKCIB1", "R94C67_JLLMPCLKCIB3", "R94C67_JLRMPCLKCIB1", "R94C67_JLRMPCLKCIB3", "R94C67_JBRQPCLKCIB0", "R94C67_JBRQPCLKCIB1"]
},
]
def get_sinks(job):
# Get the sinks to fuzz for a given edgemux job
sinks = []
size = job["size"]
sinks += [job["mux_output"].format(i) for i in range(size)]
for dcc in range(size):
loc = job["dcc_loc"]
pos = job["dcc_pos"]
sinks.append("{}_CLKI_{}DCC{}".format(loc, pos, dcc))
sinks.append("{}_JCE_{}DCC{}".format(loc, pos, dcc))
sinks.append("{}_{}DCC{}CLKI".format(loc, pos, dcc))
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,
fc_prefix=job["prefix"])
if __name__ == "__main__":
main()