blob: 36f25f4d16d03a839280135367cf07ee483421a1 [file] [log] [blame]
from fuzzconfig import FuzzConfig
import interconnect
import nets
import pytrellis
import re
jobs = [
{
"pos": [(47, 0), (48, 0), (49, 0)],
"cfg": FuzzConfig(job="PIOROUTEL", family="ECP5", device="LFE5U-45F", ncl="pioroute.ncl",
tiles=["MIB_R47C0:PICL0", "MIB_R48C0:PICL1", "MIB_R49C0:PICL2"])
},
{
"pos": [(47, 90), (48, 90), (49, 90)],
"cfg": FuzzConfig(job="PIOROUTER", family="ECP5", device="LFE5U-45F", ncl="pioroute.ncl",
tiles=["MIB_R47C90:PICR0", "MIB_R48C90:PICR1", "MIB_R49C90:PICR2"])
},
{
"pos": [(0, 22), (1, 23), (0, 22), (1, 23)],
"cfg": FuzzConfig(job="PIOROUTET", family="ECP5", device="LFE5U-45F", ncl="pioroute.ncl",
tiles=["MIB_R0C22:PIOT0", "MIB_R0C23:PIOT1", "MIB_R1C22:PICT0", "MIB_R1C23:PICT1"])
},
{
"pos": [(71, 11), (71, 12), (70, 11), (70, 12)],
"cfg": FuzzConfig(job="PIOROUTET", family="ECP5", device="LFE5U-45F", ncl="pioroute.ncl",
tiles=["MIB_R71C11:PICB0", "MIB_R71C12:PICB1"])
}
]
def main():
pytrellis.load_database("../../../database")
for job in jobs:
cfg = job["cfg"]
cfg.setup()
def nn_filter(net, netnames):
return not nets.is_cib(net)
orig_tiles = cfg.tiles
for pos in job["pos"]:
# Put fixed connections in the most appropriate tile
target_tile = None
for tile in orig_tiles:
if "R{}C{}".format(pos[0], pos[1]) in tile:
target_tile = tile
break
if target_tile is not None:
cfg.tiles = [target_tile] + [_ for _ in orig_tiles if _ != orig_tiles]
else:
cfg.tiles = orig_tiles
interconnect.fuzz_interconnect(config=cfg, location=pos,
netname_predicate=nn_filter,
netname_filter_union=False,
func_cib=True)
if __name__ == "__main__":
main()