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:
Clifford Wolf 2017-11-13 02:32:06 +01:00 committed by Tim 'mithro' Ansell
parent 9b61d5bd85
commit d7b03d7ef4
4 changed files with 60 additions and 10 deletions

View File

@ -1,2 +1,3 @@
/specimen_[0-9][0-9][0-9]/
/seg_clbl[lm]_int_[lr].segbits
/seg_clbl[lm]_mask_[lr].segbits

View File

@ -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

View File

@ -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)

View File

@ -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"