mirror of https://github.com/openXC7/prjxray.git
Some refactoring
Signed-off-by: Clifford Wolf <clifford@clifford.at> Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
parent
28fa81b645
commit
85f366bac9
|
|
@ -51,9 +51,12 @@ for record in tiles:
|
||||||
|
|
||||||
if tile_type in ["CLBLL_L", "CLBLL_R", "CLBLM_L", "CLBLM_R"]:
|
if tile_type in ["CLBLL_L", "CLBLL_R", "CLBLM_L", "CLBLM_R"]:
|
||||||
segment_name = "SEG_" + tile_name
|
segment_name = "SEG_" + tile_name
|
||||||
|
segtype = re.sub(r"_[lr]$", "", tile_type.lower())
|
||||||
database["segments"][segment_name] = dict()
|
database["segments"][segment_name] = dict()
|
||||||
database["segments"][segment_name]["tiles"] = [tile_name]
|
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:
|
if framebaseaddr is not None:
|
||||||
database["segments"][segment_name]["baseaddr"] = [framebaseaddr, 0]
|
database["segments"][segment_name]["baseaddr"] = [framebaseaddr, 0]
|
||||||
database["tiles"][tile_name]["segment"] = segment_name
|
database["tiles"][tile_name]["segment"] = segment_name
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -ex
|
. ../../utils/genheader.sh
|
||||||
test $# = 1
|
|
||||||
test ! -e $1
|
|
||||||
mkdir $1
|
|
||||||
cd $1
|
|
||||||
|
|
||||||
vivado -mode batch -source ../generate.tcl
|
vivado -mode batch -source ../generate.tcl
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,2 @@
|
||||||
/specimen_[0-9][0-9][0-9]/
|
/specimen_[0-9][0-9][0-9]/
|
||||||
/lutbits.txt
|
|
||||||
/seg_clbl[lm]_[rl].segbits
|
|
||||||
/seg_clbl[lm].segbits
|
/seg_clbl[lm].segbits
|
||||||
|
|
|
||||||
|
|
@ -3,26 +3,18 @@ N := 1
|
||||||
SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N)))
|
SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N)))
|
||||||
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
|
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
|
||||||
|
|
||||||
database: $(SPECIMENS_OK)
|
database: database/clbll database/clblm
|
||||||
../../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
|
|
||||||
|
|
||||||
pushdb: pushdb/clbll pushdb/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):
|
$(SPECIMENS_OK):
|
||||||
bash generate.sh $(subst /OK,,$@)
|
bash generate.sh $(subst /OK,,$@)
|
||||||
touch $@
|
touch $@
|
||||||
|
|
|
||||||
|
|
@ -52,14 +52,17 @@ with open("lutdata_%s.txt" % sys.argv[1], "r") as f:
|
||||||
|
|
||||||
print("Compile segment data.")
|
print("Compile segment data.")
|
||||||
|
|
||||||
segments = dict()
|
segments_by_type = dict()
|
||||||
|
|
||||||
for tilename, tiledata in grid["tiles"].items():
|
for tilename, tiledata in grid["tiles"].items():
|
||||||
if "segment" not in tiledata:
|
if "segment" not in tiledata:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
segtype = tiledata["segment"]
|
segdata = grid["segments"][tiledata["segment"]]
|
||||||
segdata = grid["segments"][segtype]
|
|
||||||
|
if segdata["type"] not in segments_by_type:
|
||||||
|
segments_by_type[segdata["type"]] = dict()
|
||||||
|
segments = segments_by_type[segdata["type"]]
|
||||||
|
|
||||||
tile_type = tiledata["type"]
|
tile_type = tiledata["type"]
|
||||||
segname = "%s_%02x" % (segdata["baseaddr"][0][2:], segdata["baseaddr"][1])
|
segname = "%s_%02x" % (segdata["baseaddr"][0][2:], segdata["baseaddr"][1])
|
||||||
|
|
@ -79,7 +82,7 @@ for tilename, tiledata in grid["tiles"].items():
|
||||||
assert 0
|
assert 0
|
||||||
|
|
||||||
for name, value in luts[site].items():
|
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)
|
base_frame = int(segdata["baseaddr"][0][2:], 16)
|
||||||
for wordidx in range(segdata["baseaddr"][1], segdata["baseaddr"][1]+2):
|
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.")
|
print("Write segment data.")
|
||||||
|
|
||||||
with open("segdata_%s.txt" % sys.argv[1], "w") as f:
|
for segtype in segments_by_type.keys():
|
||||||
for segname, segdata in sorted(segments.items()):
|
with open("segdata_%s_%s.txt" % (segtype, sys.argv[1]), "w") as f:
|
||||||
print("seg %s" % segname, file=f)
|
segments = segments_by_type[segtype]
|
||||||
for bitname in sorted(segdata["bits"]):
|
for segname, segdata in sorted(segments.items()):
|
||||||
print("bit %s" % bitname, file=f)
|
print("seg %s" % segname, file=f)
|
||||||
for tagname, tagval in sorted(segdata["tags"].items()):
|
for bitname in sorted(segdata["bits"]):
|
||||||
print("tag %s %d" % (tagname, tagval), file=f)
|
print("bit %s" % bitname, file=f)
|
||||||
|
for tagname, tagval in sorted(segdata["tags"].items()):
|
||||||
|
print("tag %s %d" % (tagname, tagval), file=f)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -ex
|
. ../../utils/genheader.sh
|
||||||
test $# = 1
|
|
||||||
test ! -e $1
|
|
||||||
mkdir $1
|
|
||||||
cd $1
|
|
||||||
|
|
||||||
echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh
|
echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1 @@
|
||||||
/index.html
|
/*/
|
||||||
/seg_clbll.html
|
|
||||||
/seg_clblm.html
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ for segname, segdata in grid["segments"].items():
|
||||||
segframes[segtype] = 36
|
segframes[segtype] = 36
|
||||||
|
|
||||||
print("Loading %s segbits." % segtype)
|
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:
|
for line in f:
|
||||||
bit_name, bit_pos = line.split()
|
bit_name, bit_pos = line.split()
|
||||||
segbits[segtype][bit_name] = bit_pos
|
segbits[segtype][bit_name] = bit_pos
|
||||||
|
|
@ -38,8 +38,9 @@ for segname, segdata in grid["segments"].items():
|
||||||
grid_range = None
|
grid_range = None
|
||||||
grid_map = dict()
|
grid_map = dict()
|
||||||
|
|
||||||
print("Writing index.html.")
|
print("Writing %s/index.html." % os.getenv("XRAY_DATABASE"))
|
||||||
with open("index.html", "w") as f:
|
os.makedirs(os.getenv("XRAY_DATABASE"), exist_ok=True)
|
||||||
|
with open("%s/index.html" % os.getenv("XRAY_DATABASE"), "w") as f:
|
||||||
print("<html><title>X-Ray %s Database</title><body>" % os.getenv("XRAY_DATABASE").upper(), file=f)
|
print("<html><title>X-Ray %s Database</title><body>" % os.getenv("XRAY_DATABASE").upper(), file=f)
|
||||||
|
|
||||||
for tilename, tiledata in grid["tiles"].items():
|
for tilename, tiledata in grid["tiles"].items():
|
||||||
|
|
@ -88,7 +89,7 @@ with open("index.html", "w") as f:
|
||||||
if "segment" in tiledata:
|
if "segment" in tiledata:
|
||||||
segtype = segdata["type"].lower()
|
segtype = segdata["type"].lower()
|
||||||
segtype = re.sub(r"_[lr]$", "", segtype)
|
segtype = re.sub(r"_[lr]$", "", segtype)
|
||||||
print("<center><small><a href=\"%s.html\">%s</a></small></center></td>" %
|
print("<center><small><a href=\"seg_%s.html\">%s</a></small></center></td>" %
|
||||||
(segtype, tilename.replace("_X", "<br/>X")), file=f)
|
(segtype, tilename.replace("_X", "<br/>X")), file=f)
|
||||||
else:
|
else:
|
||||||
print("<center><small>%s</small></center></td>" % tilename.replace("_X", "<br/>X"), file=f)
|
print("<center><small>%s</small></center></td>" % tilename.replace("_X", "<br/>X"), file=f)
|
||||||
|
|
@ -103,8 +104,8 @@ with open("index.html", "w") as f:
|
||||||
# Create Segment Pages
|
# Create Segment Pages
|
||||||
|
|
||||||
for segtype in segbits.keys():
|
for segtype in segbits.keys():
|
||||||
print("Writing %s.html." % segtype)
|
print("Writing %s/seg_%s.html." % (os.getenv("XRAY_DATABASE"), segtype))
|
||||||
with open("%s.html" % segtype, "w") as f:
|
with open("%s/seg_%s.html" % (os.getenv("XRAY_DATABASE"), segtype), "w") as f:
|
||||||
print("<html><title>X-Ray %s Database: %s</title><body>" % (os.getenv("XRAY_DATABASE").upper(), segtype.upper()), file=f)
|
print("<html><title>X-Ray %s Database: %s</title><body>" % (os.getenv("XRAY_DATABASE").upper(), segtype.upper()), file=f)
|
||||||
print("<table border>", file =f)
|
print("<table border>", file =f)
|
||||||
|
|
||||||
|
|
@ -114,7 +115,7 @@ for segtype in segbits.keys():
|
||||||
print("<th width=\"50\">%d</th>" % frameidx, file =f)
|
print("<th width=\"50\">%d</th>" % frameidx, file =f)
|
||||||
print("</tr>", file =f)
|
print("</tr>", file =f)
|
||||||
|
|
||||||
for bitidx in range(64):
|
for bitidx in range(63, -1, -1):
|
||||||
print("<tr>", file =f)
|
print("<tr>", file =f)
|
||||||
print("<th align=\"right\">%d</th>" % bitidx, file =f)
|
print("<th align=\"right\">%d</th>" % bitidx, file =f)
|
||||||
for frameidx in range(segframes[segtype]):
|
for frameidx in range(segframes[segtype]):
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
@ -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"
|
||||||
Loading…
Reference in New Issue