| from fuzzconfig import FuzzConfig |
| import interconnect |
| import pytrellis |
| |
| jobs = [ |
| { |
| "cfg": FuzzConfig(job="BMID_45K", family="ECP5", device="LFE5UM5G-45F", ncl="emux_45k.ncl", |
| tiles=["MIB_R71C40:BMID_0H", "MIB_R71C41:BMID_2"]), |
| "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="BMID_25K", family="ECP5", device="LFE5UM5G-25F", ncl="emux_25k.ncl", |
| tiles=["MIB_R50C31:BMID_0H", "MIB_R50C32:BMID_2"]), |
| "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="BMID_85K", family="ECP5", device="LFE5UM5G-85F", ncl="emux_85k.ncl", |
| tiles=["MIB_R95C67:BMID_0H", "MIB_R95C68:BMID_2"]), |
| "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() |