diff --git a/fuzzers/056-rempips/.gitignore b/fuzzers/056-rempips/.gitignore index 145bd747..0c1760e4 100644 --- a/fuzzers/056-rempips/.gitignore +++ b/fuzzers/056-rempips/.gitignore @@ -1,14 +1,3 @@ -/filtered_seg_int_l.segbits -/filtered_seg_int_r.segbits -/pattern_l.txt -/pattern_r.txt -/piplist.dcp -/piplist/ -/pips_int_l.txt -/pips_int_r.txt -/seg_int_l.segbits -/seg_int_r.segbits -/specimen_[0-9][0-9][0-9]/ -/todo.txt -/vivado* -/run.ok +build +run.ok + diff --git a/fuzzers/056-rempips/Makefile b/fuzzers/056-rempips/Makefile index 62b81f16..47567eb4 100644 --- a/fuzzers/056-rempips/Makefile +++ b/fuzzers/056-rempips/Makefile @@ -1,36 +1,41 @@ - +# WARNING: N cannot be reduced or -m will always fail N := 10 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) +SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N))) SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_l.db $(addsuffix /segdata_int_l.txt,$(SPECIMENS)) - ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_r.db $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) + ${XRAY_SEGMATCH} -m 5 -M 15 -o build/seg_int_l.db $(addsuffix /segdata_int_l.txt,$(SPECIMENS)) + ${XRAY_SEGMATCH} -m 5 -M 15 -o build/seg_int_r.db $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: ${XRAY_DBFIXUP} --db-root . --clb-int - ${XRAY_MERGEDB} int_l seg_int_l.db - ${XRAY_MERGEDB} int_r seg_int_r.db + ${XRAY_MERGEDB} int_l build/seg_int_l.db + ${XRAY_MERGEDB} int_r build/seg_int_r.db -$(SPECIMENS_OK): todo.txt - bash generate.sh $(subst /OK,,$@) +$(SPECIMENS_OK): build/todo.txt + mkdir -p build + bash ${XRAY_DIR}/utils/top_generate.sh $(subst /OK,,$@) touch $@ -pips_int_l.txt: piplist.tcl - vivado -mode batch -source piplist.tcl +build/pips_int_l.txt: piplist.tcl + mkdir -p build + cd build && vivado -mode batch -source ../piplist.tcl -todo.txt: pips_int_l.txt - python3 maketodo.py | sort -R | head -n10 > todo.txt.tmp - mv todo.txt.tmp todo.txt +# Used 1) to see if we are done 2) pips to try in generate.tcl +build/todo.txt: build/pips_int_l.txt + #python3 maketodo.py --no-strict | sort -R | head -n10 > build/todo.txt.tmp + python3 maketodo.py --no-strict | sort -R | head -n10 > build/todo.txt.tmp + mv build/todo.txt.tmp build/todo.txt -# Conider moving to script + +# XXX: conider moving to script run: \ +set -ex; \ while \ make clean; \ - make todo.txt || exit 1; \ - test -s todo.txt; \ + make build/todo.txt || exit 1; \ + test -s build/todo.txt; \ do \ if make database; then \ make pushdb; \ @@ -40,9 +45,7 @@ run: touch run.ok clean: - rm -rf .Xil/ .cache/ filtered_seg_int_[lr].db run.ok - rm -rf todo.txt vivado* piplist/ piplist.dcp pattern_[lr].txt pips_int_[lr].txt - rm -rf specimen_[0-9][0-9][0-9]/ seg_int_[lr].db + rm -rf build run.ok .PHONY: database pushdb run clean diff --git a/fuzzers/056-rempips/generate.sh b/fuzzers/056-rempips/generate.sh index 9f904105..60b0c180 100644 --- a/fuzzers/056-rempips/generate.sh +++ b/fuzzers/056-rempips/generate.sh @@ -1,5 +1,6 @@ #!/bin/bash +FUZDIR=$PWD source ${XRAY_GENHEADER} vivado -mode batch -source ../generate.tcl diff --git a/fuzzers/056-rempips/generate.tcl b/fuzzers/056-rempips/generate.tcl index 5f160173..286a3afd 100644 --- a/fuzzers/056-rempips/generate.tcl +++ b/fuzzers/056-rempips/generate.tcl @@ -1,6 +1,6 @@ create_project -force -part $::env(XRAY_PART) design design -read_verilog ../top.v +read_verilog ../../top.v synth_design -top top set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_00) IOSTANDARD LVCMOS33" [get_ports i] @@ -19,7 +19,7 @@ route_design # write_checkpoint -force design.dcp -source ../../../utils/utils.tcl +source "$::env(XRAY_DIR)/utils/utils.tcl" set fp [open "../todo.txt" r] set todo_lines {} @@ -77,6 +77,10 @@ proc write_txtdata {filename} { } route_design + +# Ex: ERROR: [DRC RTSTAT-5] Partial antennas: 1 net(s) have a partial antenna. The problem bus(es) and/or net(s) are mynet_2. +# set_property IS_ENABLED 0 [get_drc_checks {RTSTAT-5}] + write_checkpoint -force design.dcp write_bitstream -force design.bit write_txtdata design.txt diff --git a/fuzzers/056-rempips/maketodo.py b/fuzzers/056-rempips/maketodo.py index 8702c95d..59391a8a 100644 --- a/fuzzers/056-rempips/maketodo.py +++ b/fuzzers/056-rempips/maketodo.py @@ -42,12 +42,12 @@ def maketodo(pipfile, dbfile, strict=True): def run(strict=True): maketodo( - "pips_int_l.txt", + "build/pips_int_l.txt", "%s/%s/segbits_int_l.db" % (os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE")), strict=strict) maketodo( - "pips_int_r.txt", + "build/pips_int_r.txt", "%s/%s/segbits_int_r.db" % (os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE")), strict=strict) diff --git a/fuzzers/056-rempips/piplist.tcl b/fuzzers/056-rempips/piplist.tcl index 4b2c87cc..0086ab9b 100644 --- a/fuzzers/056-rempips/piplist.tcl +++ b/fuzzers/056-rempips/piplist.tcl @@ -1,6 +1,6 @@ create_project -force -part $::env(XRAY_PART) piplist piplist -read_verilog top.v +read_verilog ../top.v synth_design -top top set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_00) IOSTANDARD LVCMOS33" [get_ports i] @@ -18,7 +18,7 @@ route_design write_checkpoint -force piplist.dcp -source ../../utils/utils.tcl +source "$::env(XRAY_DIR)/utils/utils.tcl" proc print_tile_pips {tile_type filename} { set tile [lindex [get_tiles -filter "TYPE == $tile_type"] 0] diff --git a/utils/top_generate.sh b/utils/top_generate.sh index f07384aa..41056b6b 100644 --- a/utils/top_generate.sh +++ b/utils/top_generate.sh @@ -7,7 +7,11 @@ set -ex FUZDIR=$PWD source ${XRAY_GENHEADER} -python3 $FUZDIR/top.py >top.v +# Some projects have hard coded top.v, others are generated +if [ -f $FUZDIR/top.py ] ; then + python3 $FUZDIR/top.py >top.v +fi + vivado -mode batch -source $FUZDIR/generate.tcl test -z "$(fgrep CRITICAL vivado.log)"