diff --git a/fuzzers/010-lutinit/Makefile b/fuzzers/010-lutinit/Makefile index 7ef252ff..7be45338 100644 --- a/fuzzers/010-lutinit/Makefile +++ b/fuzzers/010-lutinit/Makefile @@ -1,3 +1,5 @@ +# NOt using clb.mk: 0-2 segmatch +# Could probably change segmatch to re though N := 1 SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) diff --git a/fuzzers/011-ffconfig/.gitignore b/fuzzers/011-ffconfig/.gitignore index 5996573c..9ef96044 100644 --- a/fuzzers/011-ffconfig/.gitignore +++ b/fuzzers/011-ffconfig/.gitignore @@ -1,11 +1,2 @@ -/.Xil -/design/ -/design.bit -/design.bits -/design.dcp -/usage_statistics_webtalk.* -/vivado* -/specimen_* -/__pycache__/ -/*.segbits -/run.ok +build + diff --git a/fuzzers/011-ffconfig/Makefile b/fuzzers/011-ffconfig/Makefile index cf669fbf..f5f5a631 100644 --- a/fuzzers/011-ffconfig/Makefile +++ b/fuzzers/011-ffconfig/Makefile @@ -1,29 +1,3 @@ N := 1 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) -SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) - -database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) - -pushdb: - ${XRAY_MERGEDB} clbll_l seg_clblx.segbits - ${XRAY_MERGEDB} clbll_r seg_clblx.segbits - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits - -$(SPECIMENS_OK): - bash generate.sh $(subst /OK,,$@) - touch $@ - -run: - $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb - touch run.ok - -clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits __pycache__ run.ok - rm -rf vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v - -.PHONY: database pushdb run clean +include ../clb.mk diff --git a/fuzzers/011-ffconfig/generate.sh b/fuzzers/011-ffconfig/generate.sh index e6a8b5ba..f42f840c 100644 --- a/fuzzers/011-ffconfig/generate.sh +++ b/fuzzers/011-ffconfig/generate.sh @@ -1,17 +1,5 @@ #!/bin/bash set -ex - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/012-clbn5ffmux/.gitignore b/fuzzers/012-clbn5ffmux/.gitignore index 93a7f16a..9ef96044 100644 --- a/fuzzers/012-clbn5ffmux/.gitignore +++ b/fuzzers/012-clbn5ffmux/.gitignore @@ -1,5 +1,2 @@ -/specimen_*/ -/*.segbits -/vivado.log -/vivado.jou -/run.ok +build + diff --git a/fuzzers/012-clbn5ffmux/Makefile b/fuzzers/012-clbn5ffmux/Makefile index 1a7faa6e..f5f5a631 100644 --- a/fuzzers/012-clbn5ffmux/Makefile +++ b/fuzzers/012-clbn5ffmux/Makefile @@ -1,28 +1,3 @@ N := 1 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) -SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) - -database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) - -pushdb: - ${XRAY_MERGEDB} clbll_l seg_clblx.segbits - ${XRAY_MERGEDB} clbll_r seg_clblx.segbits - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits - -$(SPECIMENS_OK): - bash generate.sh $(subst /OK,,$@) - touch $@ - -run: - $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb - touch run.ok - -clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v run.ok - -.PHONY: database pushdb run clean +include ../clb.mk diff --git a/fuzzers/012-clbn5ffmux/generate.sh b/fuzzers/012-clbn5ffmux/generate.sh index 8bfd1d47..50e0e763 100644 --- a/fuzzers/012-clbn5ffmux/generate.sh +++ b/fuzzers/012-clbn5ffmux/generate.sh @@ -2,18 +2,5 @@ set -ex if [ $(vivado -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl -test -z "$(fgrep CRITICAL vivado.log)" - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/013-clbncy0/.gitignore b/fuzzers/013-clbncy0/.gitignore index ba2275d5..378eac25 100644 --- a/fuzzers/013-clbncy0/.gitignore +++ b/fuzzers/013-clbncy0/.gitignore @@ -1,3 +1 @@ -/specimen_*/ -/*.segbits -/run.ok +build diff --git a/fuzzers/013-clbncy0/Makefile b/fuzzers/013-clbncy0/Makefile index 1a7faa6e..f5f5a631 100644 --- a/fuzzers/013-clbncy0/Makefile +++ b/fuzzers/013-clbncy0/Makefile @@ -1,28 +1,3 @@ N := 1 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) -SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) - -database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) - -pushdb: - ${XRAY_MERGEDB} clbll_l seg_clblx.segbits - ${XRAY_MERGEDB} clbll_r seg_clblx.segbits - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits - -$(SPECIMENS_OK): - bash generate.sh $(subst /OK,,$@) - touch $@ - -run: - $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb - touch run.ok - -clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v run.ok - -.PHONY: database pushdb run clean +include ../clb.mk diff --git a/fuzzers/013-clbncy0/generate.sh b/fuzzers/013-clbncy0/generate.sh index 54774bf8..f42f840c 100644 --- a/fuzzers/013-clbncy0/generate.sh +++ b/fuzzers/013-clbncy0/generate.sh @@ -1,18 +1,5 @@ #!/bin/bash set -ex - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl -test -z "$(fgrep CRITICAL vivado.log)" - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/014-ffsrcemux/.gitignore b/fuzzers/014-ffsrcemux/.gitignore index 1f98dc9d..378eac25 100644 --- a/fuzzers/014-ffsrcemux/.gitignore +++ b/fuzzers/014-ffsrcemux/.gitignore @@ -1,10 +1 @@ -/.Xil -/design/ -/design.bit -/design.bits -/design.dcp -/usage_statistics_webtalk.* -/vivado* -/specimen_* -/*.segbits -/run.ok +build diff --git a/fuzzers/014-ffsrcemux/Makefile b/fuzzers/014-ffsrcemux/Makefile index 1a7faa6e..f5f5a631 100644 --- a/fuzzers/014-ffsrcemux/Makefile +++ b/fuzzers/014-ffsrcemux/Makefile @@ -1,28 +1,3 @@ N := 1 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) -SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) - -database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) - -pushdb: - ${XRAY_MERGEDB} clbll_l seg_clblx.segbits - ${XRAY_MERGEDB} clbll_r seg_clblx.segbits - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits - -$(SPECIMENS_OK): - bash generate.sh $(subst /OK,,$@) - touch $@ - -run: - $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb - touch run.ok - -clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v run.ok - -.PHONY: database pushdb run clean +include ../clb.mk diff --git a/fuzzers/014-ffsrcemux/generate.sh b/fuzzers/014-ffsrcemux/generate.sh index e6a8b5ba..f42f840c 100644 --- a/fuzzers/014-ffsrcemux/generate.sh +++ b/fuzzers/014-ffsrcemux/generate.sh @@ -1,17 +1,5 @@ #!/bin/bash set -ex - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/015-clbnffmux/.gitignore b/fuzzers/015-clbnffmux/.gitignore index 93b5bef8..378eac25 100644 --- a/fuzzers/015-clbnffmux/.gitignore +++ b/fuzzers/015-clbnffmux/.gitignore @@ -1,4 +1 @@ -/specimen_*/ -/*.segbits -/vivado.log -/vivado.jou +build diff --git a/fuzzers/015-clbnffmux/Makefile b/fuzzers/015-clbnffmux/Makefile index f8fedf89..df45a018 100644 --- a/fuzzers/015-clbnffmux/Makefile +++ b/fuzzers/015-clbnffmux/Makefile @@ -1,29 +1,4 @@ N := 1 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) -SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) - -database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) - -pushdb: - ${XRAY_MERGEDB} clbll_l seg_clblx.segbits - ${XRAY_MERGEDB} clbll_r seg_clblx.segbits - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits - ${XRAY_DBFIXUP} - -$(SPECIMENS_OK): - bash generate.sh $(subst /OK,,$@) - touch $@ - -run: - $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb - touch run.ok - -clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v run.ok - -.PHONY: database pushdb run clean +DBFIXUP := ${XRAY_DBFIXUP} --db_root build --zero-db bits.dbf --zero-tile-types clblx +include ../clb.mk diff --git a/fuzzers/015-clbnffmux/bits.dbf b/fuzzers/015-clbnffmux/bits.dbf new file mode 100644 index 00000000..ffed4810 --- /dev/null +++ b/fuzzers/015-clbnffmux/bits.dbf @@ -0,0 +1,9 @@ +"30_00 30_01 30_02 30_03" +"30_24 30_25 30_26 30_27" +"30_35 30_36 30_37 30_38" +"30_59 30_60 30_61 30_62" +"30_04 31_00 31_01 31_02" +"31_24 31_25 31_26 31_27" +"31_35 31_36 31_37 31_38" +"30_58 31_60 31_61 31_62" + diff --git a/fuzzers/015-clbnffmux/generate.sh b/fuzzers/015-clbnffmux/generate.sh index 8bfd1d47..50e0e763 100644 --- a/fuzzers/015-clbnffmux/generate.sh +++ b/fuzzers/015-clbnffmux/generate.sh @@ -2,18 +2,5 @@ set -ex if [ $(vivado -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl -test -z "$(fgrep CRITICAL vivado.log)" - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/016-clbnoutmux/.gitignore b/fuzzers/016-clbnoutmux/.gitignore index 826eddb4..9ef96044 100644 --- a/fuzzers/016-clbnoutmux/.gitignore +++ b/fuzzers/016-clbnoutmux/.gitignore @@ -1,5 +1,2 @@ -/specimen_*/ -/*.segbits -!/o6.segbits -/vivado.log -/vivado.jou +build + diff --git a/fuzzers/016-clbnoutmux/Makefile b/fuzzers/016-clbnoutmux/Makefile index b4d9daa1..df45a018 100644 --- a/fuzzers/016-clbnoutmux/Makefile +++ b/fuzzers/016-clbnoutmux/Makefile @@ -1,29 +1,4 @@ N := 1 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) -SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) - -database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) - -pushdb: - ${XRAY_MERGEDB} clbll_l seg_clblx.segbits - ${XRAY_MERGEDB} clbll_r seg_clblx.segbits - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits - ${XRAY_DBFIXUP} - -$(SPECIMENS_OK): - bash generate.sh $(subst /OK,,$@) - touch $@ - -run: - $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb - touch run.ok - -clean: - rm -rf specimen_[0-9][0-9][0-9]/ *.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v run.ok - -.PHONY: database pushdb run clean +DBFIXUP := ${XRAY_DBFIXUP} --db_root build --zero-db bits.dbf --zero-tile-types clblx +include ../clb.mk diff --git a/fuzzers/016-clbnoutmux/bits.dbf b/fuzzers/016-clbnoutmux/bits.dbf new file mode 100644 index 00000000..f85d38df --- /dev/null +++ b/fuzzers/016-clbnoutmux/bits.dbf @@ -0,0 +1,9 @@ +30_06 30_07 30_08 30_11 +30_20 30_21 30_22 30_23 +30_40 30_43 30_44 30_45 +30_51 30_52 30_56 30_57 +30_05 31_07 31_09 31_10 +30_28 30_29 31_20 31_21 +30_41 30_42 31_40 31_43 +30_53 31_53 31_56 31_57 + diff --git a/fuzzers/016-clbnoutmux/generate.sh b/fuzzers/016-clbnoutmux/generate.sh index 8bfd1d47..50e0e763 100644 --- a/fuzzers/016-clbnoutmux/generate.sh +++ b/fuzzers/016-clbnoutmux/generate.sh @@ -2,18 +2,5 @@ set -ex if [ $(vivado -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl -test -z "$(fgrep CRITICAL vivado.log)" - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/017-clbprecyinit/.gitignore b/fuzzers/017-clbprecyinit/.gitignore index 93a7f16a..9ef96044 100644 --- a/fuzzers/017-clbprecyinit/.gitignore +++ b/fuzzers/017-clbprecyinit/.gitignore @@ -1,5 +1,2 @@ -/specimen_*/ -/*.segbits -/vivado.log -/vivado.jou -/run.ok +build + diff --git a/fuzzers/017-clbprecyinit/Makefile b/fuzzers/017-clbprecyinit/Makefile index f8fedf89..df45a018 100644 --- a/fuzzers/017-clbprecyinit/Makefile +++ b/fuzzers/017-clbprecyinit/Makefile @@ -1,29 +1,4 @@ N := 1 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) -SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) - -database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) - -pushdb: - ${XRAY_MERGEDB} clbll_l seg_clblx.segbits - ${XRAY_MERGEDB} clbll_r seg_clblx.segbits - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits - ${XRAY_DBFIXUP} - -$(SPECIMENS_OK): - bash generate.sh $(subst /OK,,$@) - touch $@ - -run: - $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb - touch run.ok - -clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v run.ok - -.PHONY: database pushdb run clean +DBFIXUP := ${XRAY_DBFIXUP} --db_root build --zero-db bits.dbf --zero-tile-types clblx +include ../clb.mk diff --git a/fuzzers/017-clbprecyinit/bits.dbf b/fuzzers/017-clbprecyinit/bits.dbf new file mode 100644 index 00000000..70f04f31 --- /dev/null +++ b/fuzzers/017-clbprecyinit/bits.dbf @@ -0,0 +1,4 @@ +# Reserved for PRECYINIT.0 +# Running on empty DB still removes +# https://github.com/SymbiFlow/prjxray/issues/232 + diff --git a/fuzzers/017-clbprecyinit/generate.sh b/fuzzers/017-clbprecyinit/generate.sh index 54774bf8..f42f840c 100644 --- a/fuzzers/017-clbprecyinit/generate.sh +++ b/fuzzers/017-clbprecyinit/generate.sh @@ -1,18 +1,5 @@ #!/bin/bash set -ex - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl -test -z "$(fgrep CRITICAL vivado.log)" - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/018-clbram/.gitignore b/fuzzers/018-clbram/.gitignore index 93b5bef8..378eac25 100644 --- a/fuzzers/018-clbram/.gitignore +++ b/fuzzers/018-clbram/.gitignore @@ -1,4 +1 @@ -/specimen_*/ -/*.segbits -/vivado.log -/vivado.jou +build diff --git a/fuzzers/018-clbram/Makefile b/fuzzers/018-clbram/Makefile index 1a7faa6e..f5f5a631 100644 --- a/fuzzers/018-clbram/Makefile +++ b/fuzzers/018-clbram/Makefile @@ -1,28 +1,3 @@ N := 1 -SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) -SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) - -database: $(SPECIMENS_OK) - ${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) - -pushdb: - ${XRAY_MERGEDB} clbll_l seg_clblx.segbits - ${XRAY_MERGEDB} clbll_r seg_clblx.segbits - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits - -$(SPECIMENS_OK): - bash generate.sh $(subst /OK,,$@) - touch $@ - -run: - $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb - touch run.ok - -clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v run.ok - -.PHONY: database pushdb run clean +include ../clb.mk diff --git a/fuzzers/018-clbram/generate.sh b/fuzzers/018-clbram/generate.sh index 54774bf8..f42f840c 100644 --- a/fuzzers/018-clbram/generate.sh +++ b/fuzzers/018-clbram/generate.sh @@ -1,18 +1,5 @@ #!/bin/bash set -ex - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl -test -z "$(fgrep CRITICAL vivado.log)" - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/019-ndi1mux/.gitignore b/fuzzers/019-ndi1mux/.gitignore index 93b5bef8..378eac25 100644 --- a/fuzzers/019-ndi1mux/.gitignore +++ b/fuzzers/019-ndi1mux/.gitignore @@ -1,4 +1 @@ -/specimen_*/ -/*.segbits -/vivado.log -/vivado.jou +build diff --git a/fuzzers/019-ndi1mux/Makefile b/fuzzers/019-ndi1mux/Makefile index 5e13cafb..3bb3b58b 100644 --- a/fuzzers/019-ndi1mux/Makefile +++ b/fuzzers/019-ndi1mux/Makefile @@ -1,15 +1,20 @@ +# clb.mk clblm only + N := 1 -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} -o seg_clblx.segbits $(addsuffix /segdata_clblm_[lr].txt,$(SPECIMENS)) + ${XRAY_SEGMATCH} -o build/seg_clblx.segbits $(addsuffix /segdata_clblm_[lr].txt,$(SPECIMENS)) pushdb: - ${XRAY_MERGEDB} clblm_l seg_clblx.segbits - ${XRAY_MERGEDB} clblm_r seg_clblx.segbits + ${XRAY_MERGEDB} clblm_l build/seg_clblx.segbits + ${XRAY_MERGEDB} clblm_r build/seg_clblx.segbits -$(SPECIMENS_OK): +build: + mkdir build + +$(SPECIMENS_OK): build bash generate.sh $(subst /OK,,$@) touch $@ @@ -20,7 +25,7 @@ run: touch run.ok clean: - rm -rf specimen_[0-9][0-9][0-9]/ seg_clblx.segbits vivado*.log vivado_*.str vivado*.jou design *.bits *.dcp *.bit top.v run.ok + rm -rf build .PHONY: database pushdb run clean diff --git a/fuzzers/019-ndi1mux/generate.sh b/fuzzers/019-ndi1mux/generate.sh index 54774bf8..f42f840c 100644 --- a/fuzzers/019-ndi1mux/generate.sh +++ b/fuzzers/019-ndi1mux/generate.sh @@ -1,18 +1,5 @@ #!/bin/bash set -ex - -source ${XRAY_GENHEADER} - -#echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh - -python3 ../top.py >top.v -vivado -mode batch -source ../generate.tcl -test -z "$(fgrep CRITICAL vivado.log)" - -for x in design*.bit; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x -done - -python3 ../generate.py +source ${XRAY_DIR}/utils/top_generate.sh diff --git a/fuzzers/025-bram-config/Makefile b/fuzzers/025-bram-config/Makefile index 01b733c4..46c9ba13 100644 --- a/fuzzers/025-bram-config/Makefile +++ b/fuzzers/025-bram-config/Makefile @@ -14,7 +14,7 @@ build: mkdir build $(SPECIMENS_OK): build - bash generate.sh $(subst /OK,,$@) + bash ${XRAY_DIR}/utils/top_generate.sh $(subst /OK,,$@) touch $@ run: diff --git a/fuzzers/050-intpips/Makefile b/fuzzers/050-intpips/Makefile index 171d2998..75ea7774 100644 --- a/fuzzers/050-intpips/Makefile +++ b/fuzzers/050-intpips/Makefile @@ -12,13 +12,13 @@ database: $(SPECIMENS_OK) ${XRAY_MASKMERGE} mask_clblm_r.segbits $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} int_l seg_int_l.segbits ${XRAY_MERGEDB} int_r seg_int_r.segbits ${XRAY_MERGEDB} mask_clbll_l mask_clbll_l.segbits ${XRAY_MERGEDB} mask_clbll_r mask_clbll_r.segbits ${XRAY_MERGEDB} mask_clblm_l mask_clblm_l.segbits ${XRAY_MERGEDB} mask_clblm_r mask_clblm_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/051-imuxlout/Makefile b/fuzzers/051-imuxlout/Makefile index 10161520..909c1698 100644 --- a/fuzzers/051-imuxlout/Makefile +++ b/fuzzers/051-imuxlout/Makefile @@ -8,9 +8,9 @@ database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_r.segbits $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} int_l seg_int_l.segbits ${XRAY_MERGEDB} int_r seg_int_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): todo.txt bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/052-clkin/Makefile b/fuzzers/052-clkin/Makefile index a0f9a3eb..81aa681b 100644 --- a/fuzzers/052-clkin/Makefile +++ b/fuzzers/052-clkin/Makefile @@ -8,9 +8,9 @@ database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_r.segbits $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} int_l seg_int_l.segbits ${XRAY_MERGEDB} int_r seg_int_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): todo.txt bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/053-ctrlin/Makefile b/fuzzers/053-ctrlin/Makefile index a0f9a3eb..81aa681b 100644 --- a/fuzzers/053-ctrlin/Makefile +++ b/fuzzers/053-ctrlin/Makefile @@ -8,9 +8,9 @@ database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_r.segbits $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} int_l seg_int_l.segbits ${XRAY_MERGEDB} int_r seg_int_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): todo.txt bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/054-gfan/Makefile b/fuzzers/054-gfan/Makefile index a0f9a3eb..81aa681b 100644 --- a/fuzzers/054-gfan/Makefile +++ b/fuzzers/054-gfan/Makefile @@ -8,9 +8,9 @@ database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_r.segbits $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} int_l seg_int_l.segbits ${XRAY_MERGEDB} int_r seg_int_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): todo.txt bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/055-gnd/Makefile b/fuzzers/055-gnd/Makefile index c7a87af2..433aaa57 100644 --- a/fuzzers/055-gnd/Makefile +++ b/fuzzers/055-gnd/Makefile @@ -8,9 +8,9 @@ database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_r.segbits $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} int_l seg_int_l.segbits ${XRAY_MERGEDB} int_r seg_int_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): todo.txt bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/056-rempips/Makefile b/fuzzers/056-rempips/Makefile index f6e68065..da89b0f6 100644 --- a/fuzzers/056-rempips/Makefile +++ b/fuzzers/056-rempips/Makefile @@ -8,9 +8,9 @@ database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_r.segbits $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} int_l seg_int_l.segbits ${XRAY_MERGEDB} int_r seg_int_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): todo.txt bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/057-bipips/Makefile b/fuzzers/057-bipips/Makefile index efbdfd07..27621a26 100644 --- a/fuzzers/057-bipips/Makefile +++ b/fuzzers/057-bipips/Makefile @@ -8,9 +8,9 @@ database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -m 5 -M 15 -o seg_int_r.segbits $(addsuffix /segdata_int_r.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} int_l seg_int_l.segbits ${XRAY_MERGEDB} int_r seg_int_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): todo.txt bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/058-hclkpips/Makefile b/fuzzers/058-hclkpips/Makefile index df6a8fd4..b3f16759 100644 --- a/fuzzers/058-hclkpips/Makefile +++ b/fuzzers/058-hclkpips/Makefile @@ -12,13 +12,13 @@ database: $(SPECIMENS_OK) grep CK_INOUT seg_hclk_r.segbits | sed 's, .*, always,' > ppips_hclk_r.txt pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} hclk_l seg_hclk_l.segbits ${XRAY_MERGEDB} hclk_r seg_hclk_r.segbits ${XRAY_MERGEDB} mask_hclk_l mask_hclk_l.segbits ${XRAY_MERGEDB} mask_hclk_r mask_hclk_r.segbits cp ppips_hclk_l.txt ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/ppips_hclk_l.db cp ppips_hclk_r.txt ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/ppips_hclk_r.db - ${XRAY_DBFIXUP} $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/100-dsp-mskpat/Makefile b/fuzzers/100-dsp-mskpat/Makefile index 42c02da0..22deaf41 100644 --- a/fuzzers/100-dsp-mskpat/Makefile +++ b/fuzzers/100-dsp-mskpat/Makefile @@ -8,9 +8,9 @@ database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -o seg_dsp_r.segbits $(addsuffix /segdata_dsp_r_*.txt,$(SPECIMENS)) pushdb: + ${XRAY_DBFIXUP} --db_root . --clb-int ${XRAY_MERGEDB} dsp_l seg_dsp_l.segbits ${XRAY_MERGEDB} dsp_r seg_dsp_r.segbits - ${XRAY_DBFIXUP} $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) diff --git a/fuzzers/clb.mk b/fuzzers/clb.mk new file mode 100644 index 00000000..a328b287 --- /dev/null +++ b/fuzzers/clb.mk @@ -0,0 +1,34 @@ +N ?= 1 +DBFIXUP ?= + +SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N))) +SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) + +database: $(SPECIMENS_OK) + ${XRAY_SEGMATCH} -o build/segbits_clblx.db $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) + +pushdb: + $(DBFIXUP) + ${XRAY_MERGEDB} clbll_l build/segbits_clblx.db + ${XRAY_MERGEDB} clbll_r build/segbits_clblx.db + ${XRAY_MERGEDB} clblm_l build/segbits_clblx.db + ${XRAY_MERGEDB} clblm_r build/segbits_clblx.db + +build: + mkdir build + +$(SPECIMENS_OK): build + bash generate.sh $(subst /OK,,$@) + touch $@ + +run: + $(MAKE) clean + $(MAKE) database + $(MAKE) pushdb + touch run.ok + +clean: + rm -rf build + +.PHONY: database pushdb run clean + diff --git a/prjxray/util.py b/prjxray/util.py index 70ed3427..facb89b3 100644 --- a/prjxray/util.py +++ b/prjxray/util.py @@ -38,3 +38,15 @@ def get_roi(): # we know that all bits for CLB MUXes are in frames 30 and 31, so filter all other bits def bitfilter_clb_mux(frame_idx, bit_idx): return frame_idx in [30, 31] + + +def db_root_arg(parser): + database_dir = os.getenv("XRAY_DATABASE_DIR") + database = os.getenv("XRAY_DATABASE") + db_root_kwargs = {} + if database_dir is None or database is None: + db_root_kwargs['required'] = True + else: + db_root_kwargs['required'] = False + db_root_kwargs['default'] = os.path.join(database_dir, database) + parser.add_argument('--db_root', help="Database root.", **db_root_kwargs) diff --git a/utils/dbfixup.py b/utils/dbfixup.py index eb71a1b0..bea481bb 100755 --- a/utils/dbfixup.py +++ b/utils/dbfixup.py @@ -1,96 +1,158 @@ #/usr/bin/env python3 import sys, os, re +from prjxray import util -zero_db = [ +clb_int_zero_db = [ + # CLB interconnet + # Ex: + # segbits_hclk_l.db:73:HCLK_L.HCLK_LEAF_CLK_B_BOTL4.HCLK_CK_BUFHCLK10 00_21 04_21 + # segbits_int_l.db:207:INT_L.CLK_L0.GCLK_L_B8_WEST !01_21 00_21 00_25 01_20 01_24 "00_21 00_22 00_26 01_28|00_25 01_20 01_21 01_24", "00_23 00_30 01_22 01_25|00_27 00_29 01_26 01_29", "01_12 01_14 01_16 01_18|00_10 00_11 01_09 01_10", "00_13 01_17 00_15 00_17|00_18 00_19 01_13 00_14", "00_34 00_38 01_33 01_37|00_35 00_39 01_38 01_40", "00_33 00_41 01_32 01_34|00_37 00_42 01_36 01_41", - - # CLBL?_?.SLICE?_X?.?FF.DMUX - "30_00 30_01 30_02 30_03", - "30_24 30_25 30_26 30_27", - "30_35 30_36 30_37 30_38", - "30_59 30_60 30_61 30_62", - "30_04 31_00 31_01 31_02", - "31_24 31_25 31_26 31_27", - "31_35 31_36 31_37 31_38", - "30_58 31_60 31_61 31_62", - - # CLBL?_?.SLICE?_X?.?MUX - "30_06 30_07 30_08 30_11", - "30_20 30_21 30_22 30_23", - "30_40 30_43 30_44 30_45", - "30_51 30_52 30_56 30_57", - "30_05 31_07 31_09 31_10", - "30_28 30_29 31_20 31_21", - "30_41 30_42 31_40 31_43", - "30_53 31_53 31_56 31_57", ] -def add_zero_bits(tile_type): - assert os.getenv("XRAY_DATABASE") in ["artix7", "kintex7"] - dbfile = "%s/%s/segbits_%s.db" % ( - os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"), tile_type) - new_lines = set() - llast = None +def parse_line(line): + parts = line.split() + # Ex: CLBLL_L.SLICEL_X0.AMUX.A5Q + tag = parts[0] + # Ex: !30_06 !30_08 !30_11 30_07 + bits = set(parts[1:]) + return tag, bits - if not os.path.exists(dbfile): + +def zero_range(bits, wordmin, wordmax): + """ + If any bits occur wordmin <= word <= wordmax, + default bits in wordmin <= word <= wordmax to 0 + """ + + # The bit index, if any, that needs to be one hotted + bitidx = None + for bit in bits: + if bit[0] == "!": + continue + fidx, bidx = [int(s) for s in bit.split("_")] + if wordmin <= fidx <= wordmax: + assert bitidx is None or bidx == bitidx + bitidx = bidx + + if bitidx is None: return + for fidx in range(wordmin, wordmax + 1): + bit = "%02d_%02d" % (fidx, bitidx) + # Preserve 1 bits, set others to 0 + if bit not in bits: + bits.add("!" + bit) + + +def bits_str(bits): + """Convert a set into canonical form""" + return ' '.join(sorted(list(bits))) + + +def zero_groups(bits, zero_db, strict=True, verbose=False): + """ + See if a line occurs within a bit group + If it does, add 0 bits + + Ex: 01_02 04_05 + Means find a line that has either of these bits + If either of them occurs, default bits in that set to zero + + Ex: 01_02 04_05 | 07_08 10_11 + If any bits from the first group occur, + default bits in the second group to zero + + strict: assert that the size of the given group is the size of the given mask + """ + for zdb in zero_db: + if "|" in zdb: + a, b = zdb.split("|") + a = a.split() + b = b.split() + else: + a = zdb.split() + b = a + + match = False + for bit in a: + if bit in bits: + match = True + if match: + bits_orig = set(bits) + for bit in b: + if bit not in bits: + bits.add("!" + bit) + verbose and print( + "Grouped: %s => %s" % (bits_str(bits_orig), bits_str(bits))) + if a == b and strict: + assert len(bits) == len( + a), "Mask size %u != DB entry size %u: %s" % ( + len(a), len(bits), bits_str(bits)) + + +def add_zero_bits(db_root, tile_type, zero_db, clb_int=False, verbose=False): + ''' + Add multibit entries + This requires adding some zero bits (ex: !31_09) + If an entry has any of the + ''' + dbfile = "%s/segbits_%s.db" % (db_root, tile_type) + new_lines = set() + changes = 0 + + verbose and print("zb %s: %s" % (dbfile, os.path.exists(dbfile))) + if not os.path.exists(dbfile): + return None + + llast = None with open(dbfile, "r") as f: for line in f: # Hack: skip duplicate lines # This happens while merging a new multibit entry + line = line.strip() if line == llast: continue - line = line.split() - tag = line[0] - bits = set(line[1:]) - bitidx = None - for bit in bits: - if bit[0] == "!": - continue - fidx, bidx = [int(s) for s in bit.split("_")] - if 22 <= fidx <= 25: - bitidx = bidx - if bitidx is not None: - for fidx in range(22, 26): - bit = "%02d_%02d" % (fidx, bitidx) - if bit not in bits: - bits.add("!" + bit) - for zdb in zero_db: - if "|" in zdb: - a, b = zdb.split("|") - a = a.split() - b = b.split() - else: - a = zdb.split() - b = a - match = False - for bit in a: - if bit in bits: - match = True - if match: - for bit in b: - if bit not in bits: - bits.add("!" + bit) - new_lines.add(" ".join([tag] + sorted(bits))) + + tag, bits = parse_line(line) + """ + This appears to be a large range of one hot interconnect bits + They are immediately before the first CLB real bits + """ + # FIXME: handle these better + # https://github.com/SymbiFlow/prjxray/issues/232 + orig_bits = line.replace(tag + " ", "") + if orig_bits in ("", "<0 candidates>"): + print("WARNING: dropping %s" % line) + changes += 1 + continue + if clb_int: + zero_range(bits, 22, 25) + zero_groups(bits, zero_db, strict=not clb_int, verbose=verbose) + + new_line = " ".join([tag] + sorted(bits)) + if new_line != line: + changes += 1 + new_lines.add(new_line) llast = line with open(dbfile, "w") as f: for line in sorted(new_lines): print(line, file=f) + return changes -def update_mask(mask_db, *src_dbs, offset=0): + +def update_mask(db_root, mask_db, src_dbs, offset=0): bits = set() - mask_db_file = "%s/%s/mask_%s.db" % ( - os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"), mask_db) + mask_db_file = "%s/mask_%s.db" % (db_root, mask_db) if os.path.exists(mask_db_file): with open(mask_db_file, "r") as f: @@ -101,8 +163,7 @@ def update_mask(mask_db, *src_dbs, offset=0): bits.add(line[1]) for src_db in src_dbs: - seg_db_file = "%s/%s/segbits_%s.db" % ( - os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"), src_db) + seg_db_file = "%s/segbits_%s.db" % (db_root, src_db) if not os.path.exists(seg_db_file): continue @@ -125,27 +186,100 @@ def update_mask(mask_db, *src_dbs, offset=0): print("bit %s" % bit, file=f) -add_zero_bits("int_l") -add_zero_bits("int_r") -add_zero_bits("clbll_l") -add_zero_bits("clbll_r") -add_zero_bits("clblm_l") -add_zero_bits("clblm_r") +def load_zero_db(fn): + # Remove comments and convert to list of lines + ret = [] + for l in open(fn, "r"): + pos = l.find("#") + if pos >= 0: + l = l[0:pos] + l = l.strip() + if not l: + continue + ret.append(l) + return ret -update_mask("clbll_l", "clbll_l", "int_l") -update_mask("clbll_r", "clbll_r", "int_r") -update_mask("clblm_l", "clblm_l", "int_l") -update_mask("clblm_r", "clblm_r", "int_r") -update_mask("hclk_l", "hclk_l") -update_mask("hclk_r", "hclk_r") -update_mask("bram_l", "bram_l") -update_mask("bram_r", "bram_r") -update_mask("dsp_l", "dsp_l") -update_mask("dsp_r", "dsp_r") +def run( + db_root, + clb_int=False, + zero_db_fn=None, + zero_tile_types=None, + verbose=False): + if clb_int: + zero_db = clb_int_zero_db + # clblx is used by the CLB fuzzers before being expanded to DB + zero_tile_types = [ + "int_l", "int_r", "clbll_l", "clbll_r", "clblm_l", "clblm_r", + "clblx" + ] + else: + assert zero_db_fn + assert zero_tile_types + zero_db = load_zero_db(zero_db_fn) + print("CLB INT mode: %s" % clb_int) + print("Segbit groups: %s" % len(zero_db)) -for k in range(5): - update_mask("bram_l", "int_l", offset=64 * k) - update_mask("bram_r", "int_r", offset=64 * k) - update_mask("dsp_l", "int_l", offset=64 * k) - update_mask("dsp_r", "int_r", offset=64 * k) + seg_files = 0 + seg_lines = 0 + for tile_type in zero_tile_types: + changes = add_zero_bits( + db_root, tile_type, zero_db, clb_int=clb_int, verbose=verbose) + if changes is not None: + seg_files += 1 + seg_lines += changes + print( + "Segbit: checked %u files w/ %u changed lines" % + (seg_files, seg_lines)) + + if clb_int: + for mask_db, src_dbs in [ + ("clbll_l", ("clbll_l", "int_l")), + ("clbll_r", ("clbll_r", "int_r")), + ("clblm_l", ("clblm_l", "int_l")), + ("clblm_r", ("clblm_r", "int_r")), + ("hclk_l", ("hclk_l", )), + ("hclk_r", ("hclk_r", )), + ("bram_l", ("bram_l", )), + ("bram_r", ("bram_r", )), + ("dsp_l", ("dsp_l", )), + ("dsp_r", ("dsp_r", )), + ]: + update_mask(db_root, mask_db, src_dbs) + + for mask_db, src_dbs in [ + ("bram_l", ("int_l", )), + ("bram_r", ("int_r", )), + ("dsp_l", ("int_l", )), + ("dsp_r", ("int_r", )), + ]: + for k in range(5): + update_mask(db_root, mask_db, src_dbs, offset=64 * k) + + print("Mask: checked files") + + +def main(): + import argparse + + parser = argparse.ArgumentParser(description='Create multi-bit entries') + + util.db_root_arg(parser) + parser.add_argument('--verbose', action='store_true', help='') + parser.add_argument( + '--clb-int', action='store_true', help='Fixup CLB interconnect') + parser.add_argument('--zero-db', help='Apply custom patches') + parser.add_argument('--zero-tile-types', help='') + args = parser.parse_args() + + # XXX: can auto detect this? + zero_tile_types = args.zero_tile_types.split( + ",") if args.zero_tile_types else None + + run( + args.db_root, args.clb_int, args.zero_db, zero_tile_types, + args.verbose) + + +if __name__ == '__main__': + main() diff --git a/utils/segprint.py b/utils/segprint.py index 3442e5c8..fabad99b 100755 --- a/utils/segprint.py +++ b/utils/segprint.py @@ -9,6 +9,7 @@ Ex: BRAM_L_X6Y100:CLB_IO_CLK import sys, os, json, re from prjxray import bitstream from prjxray import db as prjxraydb +from prjxray import util class NoDB(Exception): @@ -449,21 +450,10 @@ def run( def main(): import argparse - # XXX: tool still works, but not well - # need to eliminate segments entirely parser = argparse.ArgumentParser( - description='XXX: does not print all data?') + description="Decode bits within a tile's address space") - database_dir = os.getenv("XRAY_DATABASE_DIR") - database = os.getenv("XRAY_DATABASE") - db_root_kwargs = {} - if database_dir is None or database is None: - db_root_kwargs['required'] = True - else: - db_root_kwargs['required'] = False - db_root_kwargs['default'] = os.path.join(database_dir, database) - - parser.add_argument('--db_root', help="Database root.", **db_root_kwargs) + util.db_root_arg(parser) parser.add_argument('--verbose', action='store_true', help='') parser.add_argument( '-z', diff --git a/fuzzers/025-bram-config/generate.sh b/utils/top_generate.sh similarity index 71% rename from fuzzers/025-bram-config/generate.sh rename to utils/top_generate.sh index abebd98c..f07384aa 100644 --- a/fuzzers/025-bram-config/generate.sh +++ b/utils/top_generate.sh @@ -1,11 +1,12 @@ #!/bin/bash +# Generic generate.sh for scripts that use top.py to generate top.v +# and then use generate.py for segment generation set -ex FUZDIR=$PWD source ${XRAY_GENHEADER} - python3 $FUZDIR/top.py >top.v vivado -mode batch -source $FUZDIR/generate.tcl test -z "$(fgrep CRITICAL vivado.log)"