diff --git a/fuzzers/005-tilegrid/Makefile b/fuzzers/005-tilegrid/Makefile index fc2b3c5d..c587aa0b 100644 --- a/fuzzers/005-tilegrid/Makefile +++ b/fuzzers/005-tilegrid/Makefile @@ -9,6 +9,7 @@ TILEGRID_TDB_DEPENDENCIES += bram_block/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += bram_int/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += clb/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += clb_int/build/segbits_tilegrid.tdb +TILEGRID_TDB_DEPENDENCIES += cfg/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += dsp/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += fifo_int/build/segbits_tilegrid.tdb TILEGRID_TDB_DEPENDENCIES += cfg_int/build/segbits_tilegrid.tdb @@ -54,6 +55,9 @@ clb/build/segbits_tilegrid.tdb: build/basicdb/tilegrid.json clb_int/build/segbits_tilegrid.tdb: build/basicdb/tilegrid.json cd clb_int && $(MAKE) +cfg/build/segbits_tilegrid.tdb: build/basicdb/tilegrid.json + cd cfg && $(MAKE) + iob/build/segbits_tilegrid.tdb: build/basicdb/tilegrid.json cd iob && $(MAKE) @@ -126,6 +130,7 @@ clean: rm -rf build run.ok cd clb && $(MAKE) clean cd clb_int && $(MAKE) clean + cd cfg && $(MAKE) clean cd iob && $(MAKE) clean cd iob_int && $(MAKE) clean cd mmcm && $(MAKE) clean diff --git a/fuzzers/005-tilegrid/add_tdb.py b/fuzzers/005-tilegrid/add_tdb.py index f5b32147..316db698 100644 --- a/fuzzers/005-tilegrid/add_tdb.py +++ b/fuzzers/005-tilegrid/add_tdb.py @@ -83,6 +83,7 @@ def run(fn_in, fn_out, verbose=False): ("bram/build/segbits_tilegrid.tdb", 28, 10), ("bram_block/build/segbits_tilegrid.tdb", 128, 10), ("clb/build/segbits_tilegrid.tdb", 36, 2), + ("cfg/build/segbits_tilegrid.tdb", 30, 101), ("dsp/build/segbits_tilegrid.tdb", 28, 10), ("clk_hrow/build/segbits_tilegrid.tdb", 30, 18), ("clk_bufg/build/segbits_tilegrid.tdb", 30, 8), diff --git a/fuzzers/005-tilegrid/cfg/Makefile b/fuzzers/005-tilegrid/cfg/Makefile new file mode 100644 index 00000000..215b3469 --- /dev/null +++ b/fuzzers/005-tilegrid/cfg/Makefile @@ -0,0 +1,4 @@ +N ?= 2 +GENERATE_ARGS?="--oneval 1 --design params.csv --dword 67 --dframe 1B --dbit 18" +include ../fuzzaddr/common.mk + diff --git a/fuzzers/005-tilegrid/cfg/generate.tcl b/fuzzers/005-tilegrid/cfg/generate.tcl new file mode 100644 index 00000000..b28533cd --- /dev/null +++ b/fuzzers/005-tilegrid/cfg/generate.tcl @@ -0,0 +1,2 @@ +source "$::env(XRAY_DIR)/utils/utils.tcl" +generate_top diff --git a/fuzzers/005-tilegrid/cfg/top.py b/fuzzers/005-tilegrid/cfg/top.py new file mode 100644 index 00000000..e1d3a3e9 --- /dev/null +++ b/fuzzers/005-tilegrid/cfg/top.py @@ -0,0 +1,64 @@ +import os +import random +#random.seed(int(os.getenv("SEED"), 16)) +from prjxray import util +from prjxray.db import Database + + +def gen_sites(): + db = Database(util.get_db_root()) + grid = db.grid() + for tile_name in sorted(grid.tiles()): + loc = grid.loc_of_tilename(tile_name) + gridinfo = grid.gridinfo_at_loc(loc) + if gridinfo.tile_type in ['CFG_CENTER_MID']: + for site_name in sorted(gridinfo.sites.keys()): + if site_name.startswith("BSCAN_X0Y0"): + yield tile_name, site_name + + +def write_params(params): + pinstr = 'tile,val,site\n' + for tile, (site, val) in sorted(params.items()): + pinstr += '%s,%s,%s\n' % (tile, val, site) + open('params.csv', 'w').write(pinstr) + + +def run(): + print(''' +module top(); + ''') + params = {} + + sites = list(gen_sites()) + jtag_chains = ("1", "2", "3", "4") + for (tile_name, site_name), isone in zip(sites, + util.gen_fuzz_states(len(sites))): + params[tile_name] = (site_name, isone) + print( + ''' + (* KEEP, DONT_TOUCH, LOC = "{0}" *) + BSCANE2 #( + .JTAG_CHAIN("{1}") + ) + BSCANE2_{0} ( + .CAPTURE(), + .DRCK(), + .RESET(), + .RUNTEST(), + .SEL(), + .SHIFT(), + .TCK(), + .TDI(), + .TMS(), + .UPDATE(), + .TDO(1'b1) + ); + '''.format(site_name, jtag_chains[isone])) + + print("endmodule") + write_params(params) + + +if __name__ == '__main__': + run()