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