mirror of https://github.com/openXC7/prjxray.git
Add mask databases
Signed-off-by: Clifford Wolf <clifford@clifford.at> Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
parent
9b61d5bd85
commit
d7b03d7ef4
|
|
@ -1,2 +1,3 @@
|
|||
/specimen_[0-9][0-9][0-9]/
|
||||
/seg_clbl[lm]_int_[lr].segbits
|
||||
/seg_clbl[lm]_mask_[lr].segbits
|
||||
|
|
|
|||
|
|
@ -4,23 +4,31 @@ 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_clbll_int_l.segbits $(addsuffix /segdata_clbll_l.txt,$(SPECIMENS))
|
||||
../../tools/segmatch -m 5 -M 15 -o seg_clbll_int_r.segbits $(addsuffix /segdata_clbll_r.txt,$(SPECIMENS))
|
||||
../../tools/segmatch -m 5 -M 15 -o seg_clblm_int_l.segbits $(addsuffix /segdata_clblm_l.txt,$(SPECIMENS))
|
||||
../../tools/segmatch -m 5 -M 15 -o seg_clblm_int_r.segbits $(addsuffix /segdata_clblm_r.txt,$(SPECIMENS))
|
||||
: ../../tools/segmatch -m 5 -M 15 -o seg_clbll_int_l.segbits $(addsuffix /segdata_clbll_l.txt,$(SPECIMENS))
|
||||
: ../../tools/segmatch -m 5 -M 15 -o seg_clbll_int_r.segbits $(addsuffix /segdata_clbll_r.txt,$(SPECIMENS))
|
||||
: ../../tools/segmatch -m 5 -M 15 -o seg_clblm_int_l.segbits $(addsuffix /segdata_clblm_l.txt,$(SPECIMENS))
|
||||
: ../../tools/segmatch -m 5 -M 15 -o seg_clblm_int_r.segbits $(addsuffix /segdata_clblm_r.txt,$(SPECIMENS))
|
||||
grep -h ^bit $(addsuffix /segdata_clbll_l.txt,$(SPECIMENS)) | sort -u > seg_clbll_mask_l.segbits
|
||||
grep -h ^bit $(addsuffix /segdata_clbll_r.txt,$(SPECIMENS)) | sort -u > seg_clbll_mask_r.segbits
|
||||
grep -h ^bit $(addsuffix /segdata_clblm_l.txt,$(SPECIMENS)) | sort -u > seg_clblm_mask_l.segbits
|
||||
grep -h ^bit $(addsuffix /segdata_clblm_r.txt,$(SPECIMENS)) | sort -u > seg_clblm_mask_r.segbits
|
||||
|
||||
pushdb:
|
||||
bash ../../utils/mergedb.sh clbll_int_l seg_clbll_int_l.segbits
|
||||
bash ../../utils/mergedb.sh clbll_int_r seg_clbll_int_r.segbits
|
||||
bash ../../utils/mergedb.sh clblm_int_l seg_clblm_int_l.segbits
|
||||
bash ../../utils/mergedb.sh clblm_int_r seg_clblm_int_r.segbits
|
||||
bash ../../utils/mergedb.sh clbll_mask_l seg_clbll_mask_l.segbits
|
||||
bash ../../utils/mergedb.sh clbll_mask_r seg_clbll_mask_r.segbits
|
||||
bash ../../utils/mergedb.sh clblm_mask_l seg_clblm_mask_l.segbits
|
||||
bash ../../utils/mergedb.sh clblm_mask_r seg_clblm_mask_r.segbits
|
||||
|
||||
$(SPECIMENS_OK):
|
||||
bash generate.sh $(subst /OK,,$@)
|
||||
touch $@
|
||||
|
||||
clean:
|
||||
rm -rf specimen_[0-9][0-9][0-9]/ seg_clbl[lm]_int_[lr].segbits
|
||||
rm -rf specimen_[0-9][0-9][0-9]/ seg_clbl[lm]_int_[lr].segbits seg_clbl[lm]_mask_[lr].segbits
|
||||
|
||||
.PHONY: database pushdb clean
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import os, sys, json, re
|
||||
|
||||
routing_use_union = False
|
||||
|
||||
class UnionFind:
|
||||
def __init__(self):
|
||||
|
|
@ -33,6 +34,7 @@ segbits = dict()
|
|||
segbits_r = dict()
|
||||
segframes = dict()
|
||||
routebits = dict()
|
||||
maskbits = dict()
|
||||
|
||||
print("Loading tilegrid.")
|
||||
with open("../database/%s/tilegrid.json" % os.getenv("XRAY_DATABASE"), "r") as f:
|
||||
|
|
@ -45,6 +47,7 @@ for segname, segdata in grid["segments"].items():
|
|||
segbits[segtype] = dict()
|
||||
segbits_r[segtype] = dict()
|
||||
routebits[segtype] = dict()
|
||||
maskbits[segtype] = set()
|
||||
segframes[segtype] = segdata["frames"]
|
||||
|
||||
print("Loading %s segbits." % segtype)
|
||||
|
|
@ -54,7 +57,7 @@ for segname, segdata in grid["segments"].items():
|
|||
segbits[segtype][bit_name] = bit_pos
|
||||
segbits_r[segtype][bit_pos] = bit_name
|
||||
|
||||
print("Loading %s_int segbits." % segtype)
|
||||
print("Loading %s segbits." % segtype.replace("_", "_int_"))
|
||||
with open("../database/%s/seg_%s.segbits" % (os.getenv("XRAY_DATABASE"), segtype.replace("_", "_int_"))) as f:
|
||||
for line in f:
|
||||
bit_name, *bit_pos = line.split()
|
||||
|
|
@ -63,6 +66,12 @@ for segname, segdata in grid["segments"].items():
|
|||
routebits[segtype][bit] = set()
|
||||
routebits[segtype][bit].add(bit_name)
|
||||
|
||||
print("Loading %s segbits." % segtype.replace("_", "_mask_"))
|
||||
with open("../database/%s/seg_%s.segbits" % (os.getenv("XRAY_DATABASE"), segtype.replace("_", "_mask_"))) as f:
|
||||
for line in f:
|
||||
_, bit = line.split()
|
||||
maskbits[segtype].add(bit)
|
||||
|
||||
|
||||
#################################################
|
||||
# Create Tilegrid Page
|
||||
|
|
@ -161,6 +170,9 @@ for segtype in segbits.keys():
|
|||
title = [bit_pos]
|
||||
bgcolor = "#aaaaaa"
|
||||
|
||||
if bit_pos not in maskbits[segtype]:
|
||||
bgcolor = "#444444"
|
||||
|
||||
if bit_name is not None:
|
||||
bgcolor = "#ff0000"
|
||||
title.append(bit_name)
|
||||
|
|
@ -225,10 +237,11 @@ for segtype in segbits.keys():
|
|||
|
||||
ruf = UnionFind()
|
||||
|
||||
for bit, pips in routebits[segtype].items():
|
||||
for pip in pips:
|
||||
grp = pip.split('.')[1]
|
||||
ruf.union(grp, bit)
|
||||
if routing_use_union:
|
||||
for bit, pips in routebits[segtype].items():
|
||||
for pip in pips:
|
||||
grp = pip.split('.')[1]
|
||||
ruf.union(grp, bit)
|
||||
|
||||
rgroups = dict()
|
||||
rgroup_names = dict()
|
||||
|
|
@ -246,6 +259,15 @@ for segtype in segbits.keys():
|
|||
rgroups[grp][pip] = set()
|
||||
rgroups[grp][pip].add(bit)
|
||||
|
||||
if not routing_use_union:
|
||||
shared_bits = dict()
|
||||
for grp, gdata in sorted(rgroups.items()):
|
||||
for pip, bits in gdata.items():
|
||||
for bit in bits:
|
||||
if bit not in shared_bits:
|
||||
shared_bits[bit] = set()
|
||||
shared_bits[bit].add(grp)
|
||||
|
||||
for grp, gdata in sorted(rgroups.items()):
|
||||
print("<p/>", file=f)
|
||||
print("<h4>%s</h4>" % ", ".join(sorted(rgroup_names[grp])), file=f)
|
||||
|
|
@ -276,5 +298,16 @@ for segtype in segbits.keys():
|
|||
|
||||
print("</table>", file=f)
|
||||
|
||||
if not routing_use_union:
|
||||
first_note = True
|
||||
for bit in grp_bits:
|
||||
if len(shared_bits[bit]) > 1:
|
||||
if first_note:
|
||||
print("<p><b>Note(s):</b><br/>", file=f)
|
||||
print("Groups sharing bit <b>%s</b>: %s.<br/>" % (bit, ", ".join(sorted(shared_bits[bit]))), file=f)
|
||||
first_note = False
|
||||
if not first_note:
|
||||
print("</p>", file=f)
|
||||
|
||||
print("</body></html>", file=f)
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,14 @@ case "$1" in
|
|||
sed < "$2" > "$tmp1" -e 's/^INT\./CLBLM_INT_L./' ;;
|
||||
clblm_int_r)
|
||||
sed < "$2" > "$tmp1" -e 's/^INT\./CLBLM_INT_R./' ;;
|
||||
clbll_mask_l)
|
||||
sed < "$2" > "$tmp1" -e 's/^bit/CLBLL_MASK_L/' ;;
|
||||
clbll_mask_r)
|
||||
sed < "$2" > "$tmp1" -e 's/^bit/CLBLL_MASK_R/' ;;
|
||||
clblm_mask_l)
|
||||
sed < "$2" > "$tmp1" -e 's/^bit/CLBLM_MASK_L/' ;;
|
||||
clblm_mask_r)
|
||||
sed < "$2" > "$tmp1" -e 's/^bit/CLBLM_MASK_R/' ;;
|
||||
*)
|
||||
echo "Invalid mode: $1"
|
||||
rm -f "$tmp1" "$tmp2"
|
||||
|
|
|
|||
Loading…
Reference in New Issue