mirror of https://github.com/openXC7/prjxray.git
Add dbcheck.py, split seg_int.segbits
Signed-off-by: Clifford Wolf <clifford@clifford.at> Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
parent
de1f909a37
commit
67d461a1ed
|
|
@ -1,2 +1,3 @@
|
|||
/specimen_[0-9][0-9][0-9]/
|
||||
/seg_int.segbits
|
||||
/seg_clbll_int.segbits
|
||||
/seg_clblm_int.segbits
|
||||
|
|
|
|||
|
|
@ -4,13 +4,16 @@ SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N)))
|
|||
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
|
||||
|
||||
database: $(SPECIMENS_OK)
|
||||
../../tools/segmatch -m 5 -M 15 -o seg_int.segbits \
|
||||
$(addsuffix /segdata_clbll.txt,$(SPECIMENS)) \
|
||||
../../tools/segmatch -m 5 -M 15 -o seg_clbll_int.segbits \
|
||||
$(addsuffix /segdata_clbll.txt,$(SPECIMENS))
|
||||
../../tools/segmatch -m 5 -M 15 -o seg_clblm_int.segbits \
|
||||
$(addsuffix /segdata_clblm.txt,$(SPECIMENS))
|
||||
|
||||
pushdb:
|
||||
bash ../../utils/mergedb.sh seg_int.segbits \
|
||||
../../database/$(XRAY_DATABASE)/seg_int.segbits
|
||||
bash ../../utils/mergedb.sh seg_clbll_int.segbits \
|
||||
../../database/$(XRAY_DATABASE)/seg_clbll_int.segbits
|
||||
bash ../../utils/mergedb.sh seg_clblm_int.segbits \
|
||||
../../database/$(XRAY_DATABASE)/seg_clblm_int.segbits
|
||||
|
||||
$(SPECIMENS_OK):
|
||||
bash generate.sh $(subst /OK,,$@)
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ for segname, segdata in grid["segments"].items():
|
|||
if segtype not in segbits:
|
||||
segbits[segtype] = dict()
|
||||
segbits_r[segtype] = dict()
|
||||
routebits[segtype] = dict()
|
||||
segframes[segtype] = segdata["frames"]
|
||||
|
||||
print("Loading %s segbits." % segtype)
|
||||
|
|
@ -32,14 +33,14 @@ for segname, segdata in grid["segments"].items():
|
|||
segbits[segtype][bit_name] = bit_pos
|
||||
segbits_r[segtype][bit_pos] = bit_name
|
||||
|
||||
print("Loading routing segbits.")
|
||||
with open("../database/%s/seg_int.segbits" % os.getenv("XRAY_DATABASE")) as f:
|
||||
for line in f:
|
||||
bit_name, *bit_pos = line.split()
|
||||
for bit in bit_pos:
|
||||
if bit not in routebits:
|
||||
routebits[bit] = set()
|
||||
routebits[bit].add(bit_name)
|
||||
print("Loading %s_int segbits." % segtype)
|
||||
with open("../database/%s/seg_%s_int.segbits" % (os.getenv("XRAY_DATABASE"), segtype)) as f:
|
||||
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)
|
||||
|
||||
|
||||
#################################################
|
||||
|
|
@ -169,8 +170,8 @@ for segtype in segbits.keys():
|
|||
bgcolor = "#cccc88"
|
||||
label = bit_name[-5] + "5"
|
||||
|
||||
elif bit_pos in routebits:
|
||||
title += list(routebits[bit_pos])
|
||||
elif bit_pos in routebits[segtype]:
|
||||
title += list(routebits[segtype][bit_pos])
|
||||
bgcolor = "#6666cc"
|
||||
label = "R"
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys, re
|
||||
|
||||
database = dict()
|
||||
database_r = dict()
|
||||
|
||||
for arg in sys.argv[1:]:
|
||||
with open(arg, "r") as f:
|
||||
for line in f:
|
||||
if "<" in line:
|
||||
raise Exception("Found '<' in this line: %s" % line)
|
||||
|
||||
line = line.split()
|
||||
key = line[0]
|
||||
bits = tuple(sorted(set(line[1:])))
|
||||
|
||||
if key in database:
|
||||
raise Exception("Duplicate key: %s %s" % (key, bits))
|
||||
|
||||
if bits in database_r:
|
||||
raise Exception("Duplicate bits: %s %s" % (key, bits))
|
||||
|
||||
database[key] = bits
|
||||
database_r[bits] = key
|
||||
|
||||
def get_subsets(bits):
|
||||
retval = list()
|
||||
retval.append(bits)
|
||||
for i in range(len(bits)):
|
||||
for s in get_subsets(bits[i+1:]):
|
||||
retval.append(bits[0:i] + s);
|
||||
return retval
|
||||
|
||||
def check_subsets(bits):
|
||||
for sub_bits in sorted(get_subsets(bits)):
|
||||
if sub_bits != bits and sub_bits != ():
|
||||
if sub_bits in database_r:
|
||||
raise Exception("Entry %s %s is a subset of entry %s %s." % (database_r[sub_bits], sub_bits, database_r[bits], bits))
|
||||
|
||||
for key, bits in database.items():
|
||||
check_subsets(bits)
|
||||
|
||||
Loading…
Reference in New Issue