diff --git a/fuzzers/005-tilegrid/Makefile b/fuzzers/005-tilegrid/Makefile index 0d0b31ba..79ebb70f 100644 --- a/fuzzers/005-tilegrid/Makefile +++ b/fuzzers/005-tilegrid/Makefile @@ -18,6 +18,7 @@ TILEGRID_TDB_DEPENDENCIES += monitor_int/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += clk_hrow/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += clk_bufg/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += hclk_cmt/build/segbits_tilegrid.tdb +TILEGRID_TDB_DEPENDENCIES += pll/build/segbits_tilegrid.tdb GENERATE_FULL_ARGS= ifeq (${XRAY_DATABASE}, zynq7) @@ -25,7 +26,6 @@ ifeq (${XRAY_DATABASE}, zynq7) TILEGRID_TDB_DEPENDENCIES += ps7_int/build/segbits_tilegrid.tdb else # Artix7/Kintex7 only -TILEGRID_TDB_DEPENDENCIES += pll/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += mmcm/build/segbits_tilegrid.tdb endif diff --git a/fuzzers/032-cmt-pll/Makefile b/fuzzers/032-cmt-pll/Makefile index 726d9f34..63e5bc0f 100644 --- a/fuzzers/032-cmt-pll/Makefile +++ b/fuzzers/032-cmt-pll/Makefile @@ -5,8 +5,7 @@ database: build/segbits_cmt_top_upper_t.db build/segbits_cmt_top_upper_t.rdb: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -c 150 -o build/segbits_cmt_top_upper_t.rdb \ - $(addsuffix /segdata_cmt_top_r_upper_t.txt,$(SPECIMENS)) \ - $(addsuffix /segdata_cmt_top_l_upper_t.txt,$(SPECIMENS)) + $(shell find ${FUZDIR} -name "segdata_cmt_top_*_upper_t.txt") build/segbits_cmt_top_upper_t.db: build/segbits_cmt_top_upper_t.rdb write_pll_reg.py python3 write_pll_reg.py \ diff --git a/fuzzers/032-cmt-pll/generate.tcl b/fuzzers/032-cmt-pll/generate.tcl index 5e87ca44..46ff0d76 100644 --- a/fuzzers/032-cmt-pll/generate.tcl +++ b/fuzzers/032-cmt-pll/generate.tcl @@ -10,8 +10,11 @@ set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design] create_clock -period 10.00 [get_ports clk] +set net [get_nets clk_IBUF] +if { [llength $net] > 0 } { + set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF] +} -set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF] # Disable MMCM frequency etc sanity checks set_property IS_ENABLED 0 [get_drc_checks {PDRC-29}] set_property IS_ENABLED 0 [get_drc_checks {PDRC-30}] diff --git a/fuzzers/032-cmt-pll/top.py b/fuzzers/032-cmt-pll/top.py index 096bde34..02cc7256 100644 --- a/fuzzers/032-cmt-pll/top.py +++ b/fuzzers/032-cmt-pll/top.py @@ -23,7 +23,12 @@ def main(): f = open('params.jl', 'w') f.write('module,loc,params\n') - print('module top(input clk);') + print( + """module top(input clk); + + (* KEEP, DONT_TOUCH *) + LUT1 dummy(); + """) for site in sorted(gen_sites()): params = { diff --git a/fuzzers/034-cmt-pll-pips/Makefile b/fuzzers/034-cmt-pll-pips/Makefile index 17834ae6..03771b89 100644 --- a/fuzzers/034-cmt-pll-pips/Makefile +++ b/fuzzers/034-cmt-pll-pips/Makefile @@ -1,9 +1,13 @@ export FUZDIR=$(shell pwd) PIP_TYPE?=cmt_top PIPLIST_TCL=$(FUZDIR)/cmt_top_upper_t.tcl -TODO_RE=".*\.CMT_TOP_R_UPPER_T_PLLE2_CLK_[^_]+_INT" +TODO_RE=".*\.CMT_TOP_[LR]_UPPER_T_PLLE2_CLK_[^_]+_INT" +ifneq (${XRAY_DATABASE}, zynq7) MAKETODO_FLAGS=--sides "r_upper_t,l_upper_t" --pip-type ${PIP_TYPE} --seg-type cmt_top --re $(TODO_RE) +else +MAKETODO_FLAGS=--sides "l_upper_t" --pip-type ${PIP_TYPE} --seg-type cmt_top --re $(TODO_RE) +endif N = 50 A_PIPLIST=cmt_top_l_upper_t.txt @@ -14,38 +18,55 @@ build/segbits_cmt_top_l_upper_t.rdb: $(SPECIMENS_OK) ${XRAY_SEGMATCH} ${SEGMATCH_FLAGS} -o build/segbits_cmt_top_l_upper_t.rdb \ $(shell find build -name segdata_cmt_top_l_upper_t.txt) +RDBS = build/segbits_cmt_top_l_upper_t.rdb + +ifneq (${XRAY_DATABASE}, zynq7) +# Target Zynq7 part has no CMT_TOP_R_UPPER_T build/segbits_cmt_top_r_upper_t.rdb: $(SPECIMENS_OK) ${XRAY_SEGMATCH} ${SEGMATCH_FLAGS} -o build/segbits_cmt_top_r_upper_t.rdb \ $(shell find build -name segdata_cmt_top_r_upper_t.txt) -database: build/segbits_cmt_top_l_upper_t.rdb build/segbits_cmt_top_r_upper_t.rdb +RDBS += build/segbits_cmt_top_r_upper_t.rdb +endif + +database: ${RDBS} ${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf \ --seg-fn-in build/segbits_cmt_top_l_upper_t.rdb \ --seg-fn-out build/segbits_cmt_top_l_upper_t.db +ifneq (${XRAY_DATABASE}, zynq7) ${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf \ --seg-fn-in build/segbits_cmt_top_r_upper_t.rdb \ --seg-fn-out build/segbits_cmt_top_r_upper_t.db +endif # Keep a copy to track iter progress cp build/segbits_cmt_top_l_upper_t.rdb build/$(ITER)/segbits_cmt_top_l_upper_t.rdb cp build/segbits_cmt_top_l_upper_t.db build/$(ITER)/segbits_cmt_top_l_upper_t.db +ifneq (${XRAY_DATABASE}, zynq7) cp build/segbits_cmt_top_r_upper_t.rdb build/$(ITER)/segbits_cmt_top_r_upper_t.rdb cp build/segbits_cmt_top_r_upper_t.db build/$(ITER)/segbits_cmt_top_r_upper_t.db +endif ${XRAY_MASKMERGE} build/mask_cmt_top_l_upper_t.db \ $(shell find build -name segdata_cmt_top_l_upper_t.txt) +ifneq (${XRAY_DATABASE}, zynq7) ${XRAY_MASKMERGE} build/mask_cmt_top_r_upper_t.db \ $(shell find build -name segdata_cmt_top_r_upper_t.txt) +endif # Clobber existing .db to eliminate potential conflicts cp ${XRAY_DATABASE_DIR}/${XRAY_DATABASE}/segbits*.db build/database/${XRAY_DATABASE} XRAY_DATABASE_DIR=${FUZDIR}/build/database ${XRAY_MERGEDB} cmt_top_l_upper_t build/segbits_cmt_top_l_upper_t.db +ifneq (${XRAY_DATABASE}, zynq7) XRAY_DATABASE_DIR=${FUZDIR}/build/database ${XRAY_MERGEDB} cmt_top_r_upper_t build/segbits_cmt_top_r_upper_t.db +endif pushdb: database ${XRAY_MERGEDB} cmt_top_l_upper_t build/segbits_cmt_top_l_upper_t.db +ifneq (${XRAY_DATABASE}, zynq7) ${XRAY_MERGEDB} cmt_top_r_upper_t build/segbits_cmt_top_r_upper_t.db +endif .PHONY: database pushdb