diff --git a/fuzzers/005-tilegrid/generate.py b/fuzzers/005-tilegrid/generate.py index 66687ecc..15c548d0 100644 --- a/fuzzers/005-tilegrid/generate.py +++ b/fuzzers/005-tilegrid/generate.py @@ -51,9 +51,12 @@ 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()) database["segments"][segment_name] = dict() database["segments"][segment_name]["tiles"] = [tile_name] - database["segments"][segment_name]["type"] = "SEG_" + tile_type + database["segments"][segment_name]["type"] = segtype + database["segments"][segment_name]["frames"] = 36 + database["segments"][segment_name]["words"] = 2 if framebaseaddr is not None: database["segments"][segment_name]["baseaddr"] = [framebaseaddr, 0] database["tiles"][tile_name]["segment"] = segment_name diff --git a/fuzzers/005-tilegrid/generate.sh b/fuzzers/005-tilegrid/generate.sh index 2883f7f1..c3136884 100644 --- a/fuzzers/005-tilegrid/generate.sh +++ b/fuzzers/005-tilegrid/generate.sh @@ -1,10 +1,6 @@ #!/bin/bash -set -ex -test $# = 1 -test ! -e $1 -mkdir $1 -cd $1 +. ../../utils/genheader.sh vivado -mode batch -source ../generate.tcl diff --git a/fuzzers/010-lutinit/.gitignore b/fuzzers/010-lutinit/.gitignore index 046704d8..932efba0 100644 --- a/fuzzers/010-lutinit/.gitignore +++ b/fuzzers/010-lutinit/.gitignore @@ -1,4 +1,2 @@ /specimen_[0-9][0-9][0-9]/ -/lutbits.txt -/seg_clbl[lm]_[rl].segbits /seg_clbl[lm].segbits diff --git a/fuzzers/010-lutinit/Makefile b/fuzzers/010-lutinit/Makefile index 7eddf2cc..6b4dbfd1 100644 --- a/fuzzers/010-lutinit/Makefile +++ b/fuzzers/010-lutinit/Makefile @@ -3,26 +3,18 @@ N := 1 SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) -database: $(SPECIMENS_OK) - ../../tools/segmatch -o lutbits.txt \ - $(addsuffix /segdata_0.txt,$(SPECIMENS)) \ - $(addsuffix /segdata_1.txt,$(SPECIMENS)) \ - $(addsuffix /segdata_2.txt,$(SPECIMENS)) - grep '^CLBLL_L\.' lutbits.txt | cut -f2- -d. | sort > seg_clbll_l.segbits - grep '^CLBLL_R\.' lutbits.txt | cut -f2- -d. | sort > seg_clbll_r.segbits - grep '^CLBLM_L\.' lutbits.txt | cut -f2- -d. | sort > seg_clblm_l.segbits - grep '^CLBLM_R\.' lutbits.txt | cut -f2- -d. | sort > seg_clblm_r.segbits - cmp seg_clbll_l.segbits seg_clbll_r.segbits - cmp seg_clblm_l.segbits seg_clblm_r.segbits - -pushdb/%: - touch ../../database/$(XRAY_DATABASE)/seg_$(notdir $@).segbits - sort -u ../../database/$(XRAY_DATABASE)/seg_$(notdir $@).segbits \ - seg_$(notdir $@)_?.segbits > seg_$(notdir $@).segbits - cp seg_$(notdir $@).segbits ../../database/$(XRAY_DATABASE)/seg_$(notdir $@).segbits +database: database/clbll database/clblm 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 + $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) touch $@ diff --git a/fuzzers/010-lutinit/generate.py b/fuzzers/010-lutinit/generate.py index 6013cab2..423e468d 100644 --- a/fuzzers/010-lutinit/generate.py +++ b/fuzzers/010-lutinit/generate.py @@ -52,14 +52,17 @@ with open("lutdata_%s.txt" % sys.argv[1], "r") as f: print("Compile segment data.") -segments = dict() +segments_by_type = dict() for tilename, tiledata in grid["tiles"].items(): if "segment" not in tiledata: continue - segtype = tiledata["segment"] - segdata = grid["segments"][segtype] + segdata = grid["segments"][tiledata["segment"]] + + if segdata["type"] not in segments_by_type: + segments_by_type[segdata["type"]] = dict() + segments = segments_by_type[segdata["type"]] tile_type = tiledata["type"] segname = "%s_%02x" % (segdata["baseaddr"][0][2:], segdata["baseaddr"][1]) @@ -79,7 +82,7 @@ for tilename, tiledata in grid["tiles"].items(): assert 0 for name, value in luts[site].items(): - segments[segname]["tags"]["%s.%s.%s" % (tile_type, sitekey, name)] = value + segments[segname]["tags"]["%s.%s.%s" % (re.sub("_[LR]$", "", tile_type), sitekey, name)] = value base_frame = int(segdata["baseaddr"][0][2:], 16) for wordidx in range(segdata["baseaddr"][1], segdata["baseaddr"][1]+2): @@ -98,11 +101,13 @@ for tilename, tiledata in grid["tiles"].items(): print("Write segment data.") -with open("segdata_%s.txt" % sys.argv[1], "w") as f: - for segname, segdata in sorted(segments.items()): - print("seg %s" % segname, file=f) - for bitname in sorted(segdata["bits"]): - print("bit %s" % bitname, file=f) - for tagname, tagval in sorted(segdata["tags"].items()): - print("tag %s %d" % (tagname, tagval), file=f) +for segtype in segments_by_type.keys(): + with open("segdata_%s_%s.txt" % (segtype, sys.argv[1]), "w") as f: + segments = segments_by_type[segtype] + for segname, segdata in sorted(segments.items()): + print("seg %s" % segname, file=f) + for bitname in sorted(segdata["bits"]): + print("bit %s" % bitname, file=f) + for tagname, tagval in sorted(segdata["tags"].items()): + print("tag %s %d" % (tagname, tagval), file=f) diff --git a/fuzzers/010-lutinit/generate.sh b/fuzzers/010-lutinit/generate.sh index 6c243573..04d134f0 100644 --- a/fuzzers/010-lutinit/generate.sh +++ b/fuzzers/010-lutinit/generate.sh @@ -1,10 +1,6 @@ #!/bin/bash -set -ex -test $# = 1 -test ! -e $1 -mkdir $1 -cd $1 +. ../../utils/genheader.sh echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh diff --git a/htmlgen/.gitignore b/htmlgen/.gitignore index b16c57f1..63ea916e 100644 --- a/htmlgen/.gitignore +++ b/htmlgen/.gitignore @@ -1,3 +1 @@ -/index.html -/seg_clbll.html -/seg_clblm.html +/*/ diff --git a/htmlgen/htmlgen.py b/htmlgen/htmlgen.py index 250c4147..03657553 100644 --- a/htmlgen/htmlgen.py +++ b/htmlgen/htmlgen.py @@ -25,7 +25,7 @@ for segname, segdata in grid["segments"].items(): segframes[segtype] = 36 print("Loading %s segbits." % segtype) - with open("../database/%s/%s.segbits" % (os.getenv("XRAY_DATABASE"), segtype)) as f: + with open("../database/%s/seg_%s.segbits" % (os.getenv("XRAY_DATABASE"), segtype)) as f: for line in f: bit_name, bit_pos = line.split() segbits[segtype][bit_name] = bit_pos @@ -38,8 +38,9 @@ for segname, segdata in grid["segments"].items(): grid_range = None grid_map = dict() -print("Writing index.html.") -with open("index.html", "w") as f: +print("Writing %s/index.html." % os.getenv("XRAY_DATABASE")) +os.makedirs(os.getenv("XRAY_DATABASE"), exist_ok=True) +with open("%s/index.html" % os.getenv("XRAY_DATABASE"), "w") as f: print("
| %d | " % frameidx, file =f) print("", file =f) - for bitidx in range(64): + for bitidx in range(63, -1, -1): print("
|---|
| %d | " % bitidx, file =f) for frameidx in range(segframes[segtype]): diff --git a/utils/genheader.sh b/utils/genheader.sh new file mode 100644 index 00000000..7c9bba0f --- /dev/null +++ b/utils/genheader.sh @@ -0,0 +1,14 @@ +# header for fuzzer generate.sh scripts + +if [ -z "$XRAY_DATABASE" ]; then + echo "No XRAY environment found. Make sure to source the settings file first!" + exit 1 +fi + +set -ex + +test $# = 1 +test ! -e $1 +mkdir $1 +cd $1 + diff --git a/utils/mergedb.sh b/utils/mergedb.sh new file mode 100644 index 00000000..37f5b0fa --- /dev/null +++ b/utils/mergedb.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -ex +test $# = 2 +test -e "$1" +touch "$2" +tmp=`mktemp -p .` +sort -u "$1" "$2" > "$tmp" +mv "$tmp" "$2"