Add CLEM_R to tilegrid. Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
diff --git a/fuzzers/002-tilegrid/Makefile b/fuzzers/002-tilegrid/Makefile index 59eb899..0f5c31a 100644 --- a/fuzzers/002-tilegrid/Makefile +++ b/fuzzers/002-tilegrid/Makefile
@@ -4,7 +4,8 @@ TILEGRID_TDB_DEPENDENCIES= TILEGRID_TDB_DEPENDENCIES += cle/$(BUILD_FOLDER)/segbits_tilegrid.tdb \ clel_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb \ - clem_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb + clem_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb \ + clem_r/$(BUILD_FOLDER)/segbits_tilegrid.tdb GENERATE_FULL_ARGS= database: $(BUILD_FOLDER)/tilegrid.json
diff --git a/fuzzers/002-tilegrid/add_tdb.py b/fuzzers/002-tilegrid/add_tdb.py index c15bd60..4112279 100644 --- a/fuzzers/002-tilegrid/add_tdb.py +++ b/fuzzers/002-tilegrid/add_tdb.py
@@ -76,6 +76,7 @@ build_dir = "build_" + os.getenv('URAY_PART') tdb_fns = [ ("cle/" + build_dir + "/segbits_tilegrid.tdb", 36, 3), + ("cle_m/" + build_dir + "/segbits_tilegrid.tdb", 36, 3), ("clel_int/" + build_dir + "/segbits_tilegrid.tdb", int_frames, int_words), ("clem_int/" + build_dir + "/segbits_tilegrid.tdb", int_frames,
diff --git a/fuzzers/002-tilegrid/clem_r/Makefile b/fuzzers/002-tilegrid/clem_r/Makefile new file mode 100644 index 0000000..b1ac459 --- /dev/null +++ b/fuzzers/002-tilegrid/clem_r/Makefile
@@ -0,0 +1,4 @@ +N ?= 15 +GENERATE_ARGS?=--oneval 1 --design params.csv --dword 0 --dframe 0B --filter_words 46 +include ../fuzzaddr/common.mk +
diff --git a/fuzzers/002-tilegrid/clem_r/generate.tcl b/fuzzers/002-tilegrid/clem_r/generate.tcl new file mode 100644 index 0000000..37d2ad8 --- /dev/null +++ b/fuzzers/002-tilegrid/clem_r/generate.tcl
@@ -0,0 +1,21 @@ +source "$::env(URAY_DIR)/utils/utils.tcl" + +proc run {} { + create_project -force -part $::env(URAY_PART) design design + read_verilog top.v + synth_design -top top + + set_property BEL A6LUT [get_cells -filter "REF_NAME == LUT6"] + set_property IS_BEL_FIXED 1 [get_cells -filter "REF_NAME == LUT6"] + + set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design] + set_property IS_ENABLED 0 [get_drc_checks {LUTLP-1}] + + place_design -directive Quick + route_design -directive Quick + + write_checkpoint -force design.dcp + write_bitstream -force design.bit +} + +run
diff --git a/fuzzers/002-tilegrid/clem_r/top.py b/fuzzers/002-tilegrid/clem_r/top.py new file mode 100644 index 0000000..31a7488 --- /dev/null +++ b/fuzzers/002-tilegrid/clem_r/top.py
@@ -0,0 +1,60 @@ +import os +import random +random.seed(int(os.getenv("SEED"), 16)) +from utils import util +from utils.db import Database + + +def gen_sites(): + db = Database(util.get_db_root(), util.get_part()) + 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 ['CLEM_R']: + site_name = sorted(gridinfo.sites.keys())[0] + 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()) + 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 = "{loc}", LOCK_PINS="I0:A1 I1:A2 I2:A3 I3:A4 I4:A5 I5:A6" *) + wire loop_{loc}; + LUT6 #(.INIT(64'b{isone}) ) lut_{loc} ( + .I0(loop_{loc}), + .I1(1), + .I2(1), + .I3(1), + .I4(1), + .I5(1), + .O(loop_{loc}) + ); +'''.format( + loc=site_name, + isone=isone, + )) + + print("endmodule") + write_params(params) + + +if __name__ == '__main__': + run()