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