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()