| from fuzzconfig import FuzzConfig |
| import interconnect |
| import nets |
| import pytrellis |
| import re |
| |
| dsp_tiles = [ |
| "MIB_R13C60:MIB_DSP0", "MIB_R13C60:MIB2_DSP0", |
| "MIB_R13C61:MIB_DSP1", "MIB_R13C61:MIB2_DSP1", |
| "MIB_R13C62:MIB_DSP2", "MIB_R13C62:MIB2_DSP2", |
| "MIB_R13C63:MIB_DSP3", "MIB_R13C63:MIB2_DSP3", |
| "MIB_R13C64:MIB_DSP4", "MIB_R13C64:MIB2_DSP4", |
| "MIB_R13C65:MIB_DSP5", "MIB_R13C65:MIB2_DSP5", |
| "MIB_R13C66:MIB_DSP6", "MIB_R13C66:MIB2_DSP6", |
| "MIB_R13C67:MIB_DSP7", "MIB_R13C67:MIB2_DSP7", |
| "MIB_R13C68:MIB_DSP8", "MIB_R13C68:MIB2_DSP8", |
| ] |
| |
| |
| def get_tiles(first): |
| # |
| # Get the list of tiles, placing a certain tile first so it is prioritised for fixed conns |
| return [first] + [_ for _ in dsp_tiles if _ != first] |
| |
| |
| jobs = [ |
| ((13, 60), FuzzConfig(job="DSPROUTE0", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C60:MIB_DSP0"))), |
| ((13, 61), FuzzConfig(job="DSPROUTE1", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C61:MIB_DSP1"))), |
| ((13, 62), FuzzConfig(job="DSPROUTE2", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C62:MIB_DSP2"))), |
| ((13, 63), FuzzConfig(job="DSPROUTE3", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C63:MIB_DSP3"))), |
| ((13, 64), FuzzConfig(job="DSPROUTE4", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C64:MIB_DSP4"))), |
| ((13, 65), FuzzConfig(job="DSPROUTE5", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C65:MIB_DSP5"))), |
| ((13, 66), FuzzConfig(job="DSPROUTE6", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C66:MIB_DSP6"))), |
| ((13, 67), FuzzConfig(job="DSPROUTE7", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C67:MIB_DSP7"))), |
| ((13, 68), FuzzConfig(job="DSPROUTE8", family="ECP5", device="LFE5U-25F", ncl="dsproute.ncl", |
| tiles=get_tiles("MIB_R13C68:MIB_DSP8"))) |
| ] |
| |
| |
| def main(): |
| pytrellis.load_database("../../../database") |
| for job in jobs: |
| loc, cfg = job |
| cfg.setup() |
| |
| def nn_filter(net, netnames): |
| return ("MULT" in net) or ("ADD" in net) or ("JMUI" in net) or ("JP" in net) \ |
| or ("DSP" in net) or ("JSRO" in net) or ("JNEXTR" in net) \ |
| or ("JCFB" in net) or ("JPSR"in net) or ("JMSR" in net) or ("JR" in net) \ |
| or ("ALU" in net) or ("JCO" in net) or ("JSOURCE" in net) |
| interconnect.fuzz_interconnect(config=cfg, location=loc, |
| netname_predicate=nn_filter, |
| netname_filter_union=False, |
| func_cib=True) |
| |
| |
| if __name__ == "__main__": |
| main() |