From d7b03d7ef4704afa468b80e951ab0817ee646cde Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Mon, 13 Nov 2017 02:32:06 +0100 Subject: [PATCH] Add mask databases Signed-off-by: Clifford Wolf Signed-off-by: Tim 'mithro' Ansell --- fuzzers/013-intpips/.gitignore | 1 + fuzzers/013-intpips/Makefile | 18 ++++++++++---- htmlgen/htmlgen.py | 43 ++++++++++++++++++++++++++++++---- utils/mergedb.sh | 8 +++++++ 4 files changed, 60 insertions(+), 10 deletions(-) diff --git a/fuzzers/013-intpips/.gitignore b/fuzzers/013-intpips/.gitignore index ef8791a6..c1039e86 100644 --- a/fuzzers/013-intpips/.gitignore +++ b/fuzzers/013-intpips/.gitignore @@ -1,2 +1,3 @@ /specimen_[0-9][0-9][0-9]/ /seg_clbl[lm]_int_[lr].segbits +/seg_clbl[lm]_mask_[lr].segbits diff --git a/fuzzers/013-intpips/Makefile b/fuzzers/013-intpips/Makefile index 4ad764f0..7ed6473c 100644 --- a/fuzzers/013-intpips/Makefile +++ b/fuzzers/013-intpips/Makefile @@ -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 diff --git a/htmlgen/htmlgen.py b/htmlgen/htmlgen.py index 5471e02c..affbf814 100644 --- a/htmlgen/htmlgen.py +++ b/htmlgen/htmlgen.py @@ -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("

", file=f) print("

%s

" % ", ".join(sorted(rgroup_names[grp])), file=f) @@ -276,5 +298,16 @@ for segtype in segbits.keys(): print("", 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("

Note(s):
", file=f) + print("Groups sharing bit %s: %s.
" % (bit, ", ".join(sorted(shared_bits[bit]))), file=f) + first_note = False + if not first_note: + print("

", file=f) + print("", file=f) diff --git a/utils/mergedb.sh b/utils/mergedb.sh index 3883455d..e70b8ea3 100644 --- a/utils/mergedb.sh +++ b/utils/mergedb.sh @@ -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"