diff --git a/fuzzers/005-tilegrid/generate.py b/fuzzers/005-tilegrid/generate.py index 15c548d0..50ecfb7c 100644 --- a/fuzzers/005-tilegrid/generate.py +++ b/fuzzers/005-tilegrid/generate.py @@ -51,7 +51,7 @@ for record in tiles: if tile_type in ["CLBLL_L", "CLBLL_R", "CLBLM_L", "CLBLM_R"]: segment_name = "SEG_" + tile_name - segtype = re.sub(r"_[lr]$", "", tile_type.lower()) + segtype = tile_type.lower() database["segments"][segment_name] = dict() database["segments"][segment_name]["tiles"] = [tile_name] database["segments"][segment_name]["type"] = segtype diff --git a/fuzzers/010-lutinit/Makefile b/fuzzers/010-lutinit/Makefile index 93c169f8..adcfb44c 100644 --- a/fuzzers/010-lutinit/Makefile +++ b/fuzzers/010-lutinit/Makefile @@ -3,17 +3,15 @@ N := 1 SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) -database: database/clbll database/clblm +database: $(SPECIMENS_OK) + ../../tools/segmatch -o seg_clbll.segbits $(addsuffix /segdata_clbll_[lr]_[012].txt,$(SPECIMENS)) + ../../tools/segmatch -o seg_clblm.segbits $(addsuffix /segdata_clblm_[lr]_[012].txt,$(SPECIMENS)) -pushdb: pushdb/clbll pushdb/clblm - -database/%: $(SPECIMENS_OK) - ../../tools/segmatch -o seg_$(notdir $@).segbits \ - $(addsuffix /segdata_$(notdir $@)_[012].txt,$(SPECIMENS)) - -pushdb/%: - bash ../../utils/mergedb.sh seg_$(notdir $@).segbits \ - ../../database/$(XRAY_DATABASE)/seg_$(notdir $@).segbits +pushdb: + bash ../../utils/mergedb.sh clbll_l seg_clbll.segbits + bash ../../utils/mergedb.sh clbll_r seg_clbll.segbits + bash ../../utils/mergedb.sh clblm_l seg_clblm.segbits + bash ../../utils/mergedb.sh clblm_r seg_clblm.segbits $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/011-ffconfig/.gitignore b/fuzzers/011-ffconfig/.gitignore index 932efba0..252118b4 100644 --- a/fuzzers/011-ffconfig/.gitignore +++ b/fuzzers/011-ffconfig/.gitignore @@ -1,2 +1,2 @@ /specimen_[0-9][0-9][0-9]/ -/seg_clbl[lm].segbits +/seg_clblx.segbits diff --git a/fuzzers/011-ffconfig/Makefile b/fuzzers/011-ffconfig/Makefile index d0dc3e6b..f0b20f11 100644 --- a/fuzzers/011-ffconfig/Makefile +++ b/fuzzers/011-ffconfig/Makefile @@ -3,25 +3,19 @@ N := 3 SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) -database: database/clbll database/clblm +database: $(SPECIMENS_OK) + ../../tools/segmatch -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr]_[0-9].txt,$(SPECIMENS)) -pushdb: pushdb/clbll pushdb/clblm - -database/%: $(SPECIMENS_OK) - ../../tools/segmatch -o seg_$(notdir $@).segbits \ - $(addsuffix /segdata_$(notdir $@)_[0-9].txt,$(SPECIMENS)) - -pushdb/%: - bash ../../utils/mergedb.sh seg_$(notdir $@).segbits \ - ../../database/$(XRAY_DATABASE)/seg_$(notdir $@).segbits +pushdb: + bash ../../utils/mergedb.sh clbll_l seg_clblx.segbits + bash ../../utils/mergedb.sh clbll_r seg_clblx.segbits + bash ../../utils/mergedb.sh clblm_l seg_clblx.segbits + bash ../../utils/mergedb.sh clblm_r seg_clblx.segbits $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) touch $@ -regen: - set -ex; for d in $(SPECIMENS); do cd $$d; for i in 0 1 2 3 4 5 6 7 8 9; do python3 ../generate.py $$i; done; cd ..; done - clean: rm -rf specimen_[0-9][0-9][0-9]/ seg_clbll.segbits seg_clblm.segbits diff --git a/fuzzers/012-lut5/.gitignore b/fuzzers/012-lut5/.gitignore index 96a8fae1..252118b4 100644 --- a/fuzzers/012-lut5/.gitignore +++ b/fuzzers/012-lut5/.gitignore @@ -1,2 +1,2 @@ /specimen_[0-9][0-9][0-9]/ -/tilegrid.json +/seg_clblx.segbits diff --git a/fuzzers/012-lut5/Makefile b/fuzzers/012-lut5/Makefile index 39d213eb..129d453f 100644 --- a/fuzzers/012-lut5/Makefile +++ b/fuzzers/012-lut5/Makefile @@ -1,26 +1,22 @@ -# SLICEM takes a while to converge -N := 10 +N := 3 SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) -database: database/clbll database/clblm +database: $(SPECIMENS_OK) + ../../tools/segmatch -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) -pushdb: pushdb/clbll pushdb/clblm - -database/%: $(SPECIMENS_OK) - ../../tools/segmatch -o seg_$(notdir $@).segbits \ - $(addsuffix /segdata_$(notdir $@).txt,$(SPECIMENS)) - -pushdb/%: - bash ../../utils/mergedb.sh seg_$(notdir $@).segbits \ - ../../database/$(XRAY_DATABASE)/seg_$(notdir $@).segbits +pushdb: + bash ../../utils/mergedb.sh clbll_l seg_clblx.segbits + bash ../../utils/mergedb.sh clbll_r seg_clblx.segbits + bash ../../utils/mergedb.sh clblm_l seg_clblx.segbits + bash ../../utils/mergedb.sh clblm_r seg_clblx.segbits $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) touch $@ clean: - rm -rf specimen_[0-9][0-9][0-9]/ tilegrid.json vivado*.log vivado*.jou + rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits .PHONY: database pushdb clean diff --git a/fuzzers/013-intpips/.gitignore b/fuzzers/013-intpips/.gitignore index 0539c342..ef8791a6 100644 --- a/fuzzers/013-intpips/.gitignore +++ b/fuzzers/013-intpips/.gitignore @@ -1,3 +1,2 @@ /specimen_[0-9][0-9][0-9]/ -/seg_clbll_int.segbits -/seg_clblm_int.segbits +/seg_clbl[lm]_int_[lr].segbits diff --git a/fuzzers/013-intpips/Makefile b/fuzzers/013-intpips/Makefile index 77cdee37..4ad764f0 100644 --- a/fuzzers/013-intpips/Makefile +++ b/fuzzers/013-intpips/Makefile @@ -4,23 +4,23 @@ 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.segbits \ - $(addsuffix /segdata_clbll.txt,$(SPECIMENS)) - ../../tools/segmatch -m 5 -M 15 -o seg_clblm_int.segbits \ - $(addsuffix /segdata_clblm.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)) pushdb: - 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 + 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 $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) touch $@ clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clbll.segbits seg_clblm.segbits + rm -rf specimen_[0-9][0-9][0-9]/ seg_clbl[lm]_int_[lr].segbits .PHONY: database pushdb clean diff --git a/htmlgen/htmlgen.py b/htmlgen/htmlgen.py index 78acaaba..5471e02c 100644 --- a/htmlgen/htmlgen.py +++ b/htmlgen/htmlgen.py @@ -40,7 +40,6 @@ with open("../database/%s/tilegrid.json" % os.getenv("XRAY_DATABASE"), "r") as f for segname, segdata in grid["segments"].items(): segtype = segdata["type"].lower() - segtype = re.sub(r"_[lr]$", "", segtype) if segtype not in segbits: segbits[segtype] = dict() @@ -56,7 +55,7 @@ for segname, segdata in grid["segments"].items(): segbits_r[segtype][bit_pos] = bit_name print("Loading %s_int segbits." % segtype) - with open("../database/%s/seg_%s_int.segbits" % (os.getenv("XRAY_DATABASE"), segtype)) as f: + 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() for bit in bit_pos: @@ -124,7 +123,6 @@ with open("%s/index.html" % os.getenv("XRAY_DATABASE"), "w") as f: print("" % (bgcolor, "\n".join(title)), file=f) if "segment" in tiledata: segtype = segdata["type"].lower() - segtype = re.sub(r"_[lr]$", "", segtype) print("%s" % (segtype, tilename.replace("_X", "
X")), file=f) else: diff --git a/utils/mergedb.sh b/utils/mergedb.sh index 0835073a..3883455d 100644 --- a/utils/mergedb.sh +++ b/utils/mergedb.sh @@ -1,8 +1,45 @@ #!/bin/bash set -ex test $# = 2 -test -e "$1" -touch "$2" -tmp=`mktemp -p .` -sort -u "$1" "$2" | grep -v '<.*>' > "$tmp" -mv "$tmp" "$2" +test -e "$2" + +tmp1=`mktemp -p .` +tmp2=`mktemp -p .` + +case "$1" in + clbll_l) + sed < "$2" > "$tmp1" \ + -e 's/^CLB\.SLICE_X0\./CLBLL_L.SLICEL_X0./' \ + -e 's/^CLB\.SLICE_X1\./CLBLL_L.SLICEL_X1./' ;; + clbll_r) + sed < "$2" > "$tmp1" \ + -e 's/^CLB\.SLICE_X0\./CLBLL_R.SLICEL_X0./' \ + -e 's/^CLB\.SLICE_X1\./CLBLL_R.SLICEL_X1./' ;; + clblm_l) + sed < "$2" > "$tmp1" \ + -e 's/^CLB\.SLICE_X0\./CLBLM_L.SLICEM_X0./' \ + -e 's/^CLB\.SLICE_X1\./CLBLM_L.SLICEL_X1./' ;; + clblm_r) + sed < "$2" > "$tmp1" \ + -e 's/^CLB\.SLICE_X0\./CLBLM_R.SLICEM_X0./' \ + -e 's/^CLB\.SLICE_X1\./CLBLM_R.SLICEL_X1./' ;; + clbll_int_l) + sed < "$2" > "$tmp1" -e 's/^INT\./CLBLL_INT_L./' ;; + clbll_int_r) + sed < "$2" > "$tmp1" -e 's/^INT\./CLBLL_INT_R./' ;; + clblm_int_l) + sed < "$2" > "$tmp1" -e 's/^INT\./CLBLM_INT_L./' ;; + clblm_int_r) + sed < "$2" > "$tmp1" -e 's/^INT\./CLBLM_INT_R./' ;; + *) + echo "Invalid mode: $1" + rm -f "$tmp1" "$tmp2" + exit 1 +esac + +db=../../database/$XRAY_DATABASE/seg_$1.segbits +touch "$db" +sort -u "$tmp1" "$db" | grep -v '<.*>' > "$tmp2" +mv "$tmp2" "$db" +rm -f "$tmp1" + diff --git a/utils/segmaker.py b/utils/segmaker.py index 5cdc73c3..c1105814 100644 --- a/utils/segmaker.py +++ b/utils/segmaker.py @@ -67,7 +67,7 @@ class segmaker: add_segbits() for name, value in self.tags[tilename].items(): - tag = "%s.%s" % (re.sub("_[LR]$", "", tile_type), name) + tag = "%s.%s" % (re.sub("(LL|LM)?_[LR]$", "", tile_type), name) segments[segname]["tags"][tag] = value for site in tiledata["sites"]: @@ -84,11 +84,9 @@ class segmaker: assert 0 for name, value in self.tags[site].items(): - tag = "%s.%s.%s" % (re.sub("_[LR]$", "", tile_type), sitekey, name) - tag = tag.replace("SLICE_X0.SLICEM", "SLICEM_X0") - tag = tag.replace("SLICE_X1.SLICEM", "SLICEM_X1") - tag = tag.replace("SLICE_X0.SLICEL", "SLICEL_X0") - tag = tag.replace("SLICE_X1.SLICEL", "SLICEL_X1") + tag = "%s.%s.%s" % (re.sub("(LL|LM)?_[LR]$", "", tile_type), sitekey, name) + tag = tag.replace(".SLICEM.", ".") + tag = tag.replace(".SLICEL.", ".") segments[segname]["tags"][tag] = value def write(self, suffix=None, roi=False):