mirror of https://github.com/openXC7/prjxray.git
51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import os
|
|
|
|
from prjxray.segmaker import Segmaker
|
|
from prjxray import util
|
|
|
|
segmk = Segmaker(util.get_db_root(), "design.bits")
|
|
|
|
tiledata = dict()
|
|
pipdata = set()
|
|
|
|
print("Loading tags from design.txt.")
|
|
with open("design.txt", "r") as f:
|
|
for line in f:
|
|
ab, dst, src = line.split()
|
|
tile, dst = dst.split("/")
|
|
_, src = src.split("/")
|
|
|
|
if tile not in tiledata:
|
|
tiledata[tile] = {
|
|
"pips": set(),
|
|
"nodes": set(),
|
|
}
|
|
|
|
if ab == "A":
|
|
tiledata[tile]["pips"].add((dst, src))
|
|
pipdata.add((dst, src))
|
|
else:
|
|
tiledata[tile]["nodes"].add(src)
|
|
tiledata[tile]["nodes"].add(dst)
|
|
|
|
for tile, pips_nodes in tiledata.items():
|
|
pips = pips_nodes["pips"]
|
|
nodes = pips_nodes["nodes"]
|
|
|
|
for dst, src in pipdata:
|
|
if (dst, src) in pips:
|
|
segmk.add_tile_tag(tile, "%s.%s" % (dst, src), 1)
|
|
elif dst not in nodes and src not in nodes:
|
|
segmk.add_tile_tag(tile, "%s.%s" % (dst, src), 0)
|
|
|
|
|
|
def bitfilter(frame_idx, bit_idx):
|
|
assert os.getenv("XRAY_DATABASE") in ["artix7", "kintex7"]
|
|
return frame_idx in [0, 1]
|
|
|
|
|
|
segmk.compile(bitfilter=bitfilter)
|
|
segmk.write()
|