blob: 949690e10e4e1b92191dbf2ee0a8d6db4ffab295 [file] [log] [blame]
from fuzzconfig import FuzzConfig
import interconnect
import nets
import pytrellis
import re
jobs = [
((4, 1), "45K_", FuzzConfig(job="PLLROUTE0", family="ECP5", device="LFE5U-45F", ncl="pllroute.ncl",
tiles=["MIB_R4C0:PLL0_UL", "MIB_R5C0:PLL1_UL", "CIB_R4C1:CIB_PLL0", "CIB_R5C1:CIB_PLL1"])),
((70, 2), "45K_", FuzzConfig(job="PLLROUTE1", family="ECP5", device="LFE5U-45F", ncl="pllroute.ncl",
tiles=["MIB_R71C2:PLL0_LL", "MIB_R71C3:BANKREF8", "CIB_R70C2:CIB_PLL2", "CIB_R70C3:CIB_PLL3"])),
((70, 88), "45K_", FuzzConfig(job="PLLROUTE2", family="ECP5", device="LFE5U-45F", ncl="pllroute.ncl",
tiles=["MIB_R71C88:PLL0_LR", "MIB_R71C87:PLL1_LR", "CIB_R70C87:CIB_PLL3", "CIB_R70C88:CIB_PLL2"])),
((4, 89), "45K_", FuzzConfig(job="PLLROUTE3", family="ECP5", device="LFE5U-45F", ncl="pllroute.ncl",
tiles=["MIB_R4C90:PLL0_UR", "MIB_R5C90:PLL1_UR", "CIB_R4C89:CIB_PLL0", "CIB_R5C89:CIB_PLL1"])),
((4, 1), "85K_", FuzzConfig(job="PLLROUTE0", family="ECP5", device="LFE5U-85F", ncl="pllroute_85k.ncl",
tiles=["MIB_R4C0:PLL0_UL", "MIB_R5C0:PLL1_UL", "CIB_R4C1:CIB_PLL0", "CIB_R5C1:CIB_PLL1"])),
((94, 2), "85K_", FuzzConfig(job="PLLROUTE1", family="ECP5", device="LFE5U-85F", ncl="pllroute_85k.ncl",
tiles=["MIB_R95C2:PLL0_LL", "MIB_R95C3:BANKREF8"])),
((94, 124), "85K_", FuzzConfig(job="PLLROUTE2", family="ECP5", device="LFE5U-85F", ncl="pllroute_85k.ncl",
tiles=["MIB_R95C124:PLL0_LR", "MIB_R95C123:BANKREF4"])),
((4, 125), "85K_", FuzzConfig(job="PLLROUTE3", family="ECP5", device="LFE5U-85F", ncl="pllroute_85k.ncl",
tiles=["MIB_R4C126:PLL0_UR", "MIB_R5C126:PLL1_UR"])),
((49, 2), "25K_", FuzzConfig(job="PLLROUTE1", family="ECP5", device="LFE5U-25F", ncl="pllroute_25k.ncl",
tiles=["MIB_R50C2:PLL0_LL", "MIB_R50C3:BANKREF8"])),
((49, 70), "25K_", FuzzConfig(job="PLLROUTE2", family="ECP5", device="LFE5U-25F", ncl="pllroute_25k.ncl",
tiles=["MIB_R50C70:PLL0_LR", "MIB_R50C69:PLL1_LR"])),
]
def main():
pytrellis.load_database("../../../database")
for job in jobs:
loc, prefix, cfg = job
cfg.setup()
def nn_filter(net, netnames):
return "PLL" in net or "CLKFB" in net or "CLKINT" in net or "REFCLK" in net
def arc_filter(arc, netnames):
# Skip broken PLL route-throughs
src, dest = arc
return ("JREFCLK_PLL" not in src or "JQ" not in dest) and ("CLKI_PLL" not in src or "CLKO" not in dest)
interconnect.fuzz_interconnect(config=cfg, location=loc,
netname_predicate=nn_filter,
arc_predicate=arc_filter,
netname_filter_union=False,
func_cib=True,
nonlocal_prefix=prefix)
if __name__ == "__main__":
main()