mirror of https://github.com/openXC7/prjxray.git
Add explicit zero bits to DB format, some cleanups
Signed-off-by: Clifford Wolf <clifford@clifford.at> Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
parent
15290dc80a
commit
3f6ba4b94e
|
|
@ -18,6 +18,7 @@ pushdb:
|
|||
${XRAY_MERGEDB} mask_clbll_r mask_clbll_r.segbits
|
||||
${XRAY_MERGEDB} mask_clblm_l mask_clblm_l.segbits
|
||||
${XRAY_MERGEDB} mask_clblm_r mask_clblm_r.segbits
|
||||
${XRAY_DBFIXUP}
|
||||
|
||||
$(SPECIMENS_OK):
|
||||
bash generate.sh $(subst /OK,,$@)
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ with open("design.txt", "r") as f:
|
|||
|
||||
if pnum == 1 or pdir == 0 or \
|
||||
re.match(r"^(L[HV]B?|G?CLK)(_L)?(_B)?[0-9]", src) or \
|
||||
re.match(r"^(L[HV]B?|G?CLK)(_L)?(_B)?[0-9]", dst):
|
||||
re.match(r"^(L[HV]B?|G?CLK)(_L)?(_B)?[0-9]", dst) or \
|
||||
re.match(r"^(CTRL|GFAN)(_L)?[0-9]", dst):
|
||||
ignpip.add(pip)
|
||||
|
||||
for tile, pips_srcs_dsts in tiledata.items():
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ segbits = dict()
|
|||
segbits_r = dict()
|
||||
segframes = dict()
|
||||
routebits = dict()
|
||||
routezbits = dict()
|
||||
piptypes = dict()
|
||||
maskbits = dict()
|
||||
|
||||
|
|
@ -46,6 +47,7 @@ for segname, segdata in grid["segments"].items():
|
|||
segbits[segtype] = dict()
|
||||
segbits_r[segtype] = dict()
|
||||
routebits[segtype] = dict()
|
||||
routezbits[segtype] = dict()
|
||||
maskbits[segtype] = set()
|
||||
segframes[segtype] = segdata["frames"]
|
||||
|
||||
|
|
@ -53,6 +55,7 @@ for segname, segdata in grid["segments"].items():
|
|||
with open("../database/%s/segbits_%s.db" % (os.getenv("XRAY_DATABASE"), segtype)) as f:
|
||||
for line in f:
|
||||
bit_name, bit_pos = line.split()
|
||||
assert bit_pos[0] != "!"
|
||||
segbits[segtype][bit_name] = bit_pos
|
||||
segbits_r[segtype][bit_pos] = bit_name
|
||||
|
||||
|
|
@ -61,9 +64,14 @@ for segname, segdata in grid["segments"].items():
|
|||
for line in f:
|
||||
bit_name, *bit_pos = line.split()
|
||||
for bit in bit_pos:
|
||||
if bit not in routebits[segtype]:
|
||||
routebits[segtype][bit] = set()
|
||||
routebits[segtype][bit].add(bit_name)
|
||||
if bit[0] == "!":
|
||||
if bit[1:] not in routezbits[segtype]:
|
||||
routezbits[segtype][bit[1:]] = set()
|
||||
routezbits[segtype][bit[1:]].add(bit_name)
|
||||
else:
|
||||
if bit not in routebits[segtype]:
|
||||
routebits[segtype][bit] = set()
|
||||
routebits[segtype][bit].add(bit_name)
|
||||
|
||||
print("Loading %s maskbits." % segtype)
|
||||
with open("../database/%s/mask_%s.db" % (os.getenv("XRAY_DATABASE"), segtype)) as f:
|
||||
|
|
@ -215,12 +223,6 @@ for segtype in segbits.keys():
|
|||
bgcolor = "#6666cc"
|
||||
label = "R"
|
||||
for bn in sorted(routebits[segtype][bit_pos]):
|
||||
if re.match("^INT_[LR].CTRL(_L)?[0-9]", bn):
|
||||
bgcolor = "#8844ff"
|
||||
label = "CTRL"
|
||||
if re.match("^INT_[LR].GFAN(_L)?[0-9]", bn):
|
||||
bgcolor = "#4488ff"
|
||||
label = "GFAN"
|
||||
if re.match("^INT_[LR].[SNWE][SNWE]", bn):
|
||||
bgcolor = "#aa88ff"
|
||||
label = "SNWE"
|
||||
|
|
@ -278,8 +280,10 @@ for segtype in segbits.keys():
|
|||
print("</table>", file=f)
|
||||
|
||||
ruf = UnionFind()
|
||||
routebits_routezbits = list(routebits[segtype].items())
|
||||
routebits_routezbits += list(routezbits[segtype].items())
|
||||
|
||||
for bit, pips in routebits[segtype].items():
|
||||
for bit, pips in routebits_routezbits:
|
||||
for pip in pips:
|
||||
grp = pip.split('.')[1]
|
||||
ruf.union(grp, bit)
|
||||
|
|
@ -287,7 +291,7 @@ for segtype in segbits.keys():
|
|||
rgroups = dict()
|
||||
rgroup_names = dict()
|
||||
|
||||
for bit, pips in routebits[segtype].items():
|
||||
for bit, pips in routebits_routezbits:
|
||||
for pip in pips:
|
||||
grp_name = pip.split('.')[1]
|
||||
grp = ruf.find(grp_name)
|
||||
|
|
@ -301,7 +305,7 @@ for segtype in segbits.keys():
|
|||
rgroups[grp][pip].add(bit)
|
||||
|
||||
shared_bits = dict()
|
||||
for bit, pips in routebits[segtype].items():
|
||||
for bit, pips in routebits_routezbits:
|
||||
for pip in pips:
|
||||
grp_name = pip.split('.')[1]
|
||||
if bit not in shared_bits:
|
||||
|
|
@ -344,7 +348,9 @@ for segtype in segbits.keys():
|
|||
for pip, bits in sorted(gdata.items()):
|
||||
line = " --><td>%s</td>" % (pip)
|
||||
for bit in grp_bits:
|
||||
c = "1" if bit in bits else "-"
|
||||
c = "-"
|
||||
if bit in routebits[segtype] and pip in routebits[segtype][bit]: c = "1"
|
||||
if bit in routezbits[segtype] and pip in routezbits[segtype][bit]: c = "0"
|
||||
line = "%s%s<td align=\"center\">%s</td>" % (c, line, c)
|
||||
lines.append(line)
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
#/usr/bin/env python3
|
||||
|
||||
import sys, os, re
|
||||
|
||||
def add_zero_bits(tile_type):
|
||||
assert os.getenv("XRAY_DATABASE") == "artix7"
|
||||
dbfile = "%s/%s/segbits_%s.db" % (os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"), tile_type)
|
||||
new_lines = set()
|
||||
with open(dbfile, "r") as f:
|
||||
for line in f:
|
||||
line = line.split()
|
||||
tag = line[0]
|
||||
bits = set(line[1:])
|
||||
bitidx = None
|
||||
for bit in bits:
|
||||
if bit[0] == "!":
|
||||
continue
|
||||
fidx, bidx = [int(s) for s in bit.split("_")]
|
||||
if 22 <= fidx <= 25:
|
||||
bitidx = bidx
|
||||
if bitidx is not None:
|
||||
for fidx in range(22, 26):
|
||||
bit = "%02d_%02d" % (fidx, bitidx)
|
||||
if bit not in bits:
|
||||
bits.add("!" + bit)
|
||||
new_lines.add(" ".join([tag] + sorted(bits)))
|
||||
with open(dbfile, "w") as f:
|
||||
for line in sorted(new_lines):
|
||||
print(line, file=f)
|
||||
|
||||
add_zero_bits("int_l")
|
||||
add_zero_bits("int_r")
|
||||
|
||||
|
|
@ -13,6 +13,7 @@ export XRAY_TOOLS_DIR="${XRAY_DIR}/build/tools"
|
|||
export XRAY_GENHEADER="${XRAY_UTILS_DIR}/genheader.sh"
|
||||
export XRAY_BITREAD="${XRAY_TOOLS_DIR}/bitread"
|
||||
export XRAY_MERGEDB="bash ${XRAY_UTILS_DIR}/mergedb.sh"
|
||||
export XRAY_DBFIXUP="python3 ${XRAY_UTILS_DIR}/dbfixup.py"
|
||||
export XRAY_MASKMERGE="bash ${XRAY_UTILS_DIR}/maskmerge.sh"
|
||||
export XRAY_SEGMATCH="${XRAY_TOOLS_DIR}/segmatch"
|
||||
export XRAY_SEGPRINT="python2 ${XRAY_UTILS_DIR}/segprint.py"
|
||||
export XRAY_SEGPRINT="python3 ${XRAY_UTILS_DIR}/segprint.py"
|
||||
|
|
|
|||
Loading…
Reference in New Issue