user_project_wrapper: DRT do not finish...
diff --git a/gds/Marmot.gds.gz b/gds/Marmot.gds.gz
index cd14fbe..784b9d1 100644
--- a/gds/Marmot.gds.gz
+++ b/gds/Marmot.gds.gz
Binary files differ
diff --git a/gds/user_project_wrapper.gds.gz b/gds/user_project_wrapper.gds.gz
index b787a4a..e659690 100644
--- a/gds/user_project_wrapper.gds.gz
+++ b/gds/user_project_wrapper.gds.gz
Binary files differ
diff --git a/openlane/marmot/base.sdc b/openlane/marmot/base.sdc
index da6753b..39ed907 100644
--- a/openlane/marmot/base.sdc
+++ b/openlane/marmot/base.sdc
@@ -31,10 +31,10 @@
  -group [get_clocks {jtag_TCK}]\
 
 # max delay for RAM clocks
-set MAX_DELAY_RAM_CLOCK 6.0
+#set MAX_DELAY_RAM_CLOCK 6.0
 #set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports data_arrays_0_ext_ram_clk]
-set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports tag_array_ext_ram_clk]
-set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports data_arrays_0_0_ext_ram_clk]
+#set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports tag_array_ext_ram_clk]
+#set_max_delay $MAX_DELAY_RAM_CLOCK -from [get_ports wb_clk_i] -to [get_ports data_arrays_0_0_ext_ram_clk]
 
 # input/output delay
 set input_delay_value [expr $::env(CLOCK_PERIOD) * $::env(IO_PCT)]
@@ -103,10 +103,6 @@
 set_input_delay  $input_delay_value  -clock [get_clocks jtag_TCK] [get_ports $TDI_port]
 set_output_delay $output_delay_value -clock [get_clocks jtag_TCK] [get_ports $TDO_port]
 
-# false path: static RAM clock skew adjust signals
-set_false_path -from [get_ports la_data_in[46:32]]
-set_false_path -from [get_ports la_oenb[46:32]]
-
 # max fanout
 set_max_fanout $::env(SYNTH_MAX_FANOUT) [current_design]
 
diff --git a/openlane/marmot/config.tcl b/openlane/marmot/config.tcl
index 5f076af..7b2577c 100644
--- a/openlane/marmot/config.tcl
+++ b/openlane/marmot/config.tcl
@@ -25,27 +25,23 @@
 set ::env(SYNTH_READ_BLACKBOX_LIB) 1
 
 set ::env(DESIGN_IS_CORE) 0
+
 set ::env(DESIGN_NAME) Marmot
 
 set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/marmot]
 
 set ::env(VERILOG_FILES) "\
 	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
-  $script_dir/../../verilog/lib/clk_skew_adjust.gv \
-  $script_dir/../../verilog/lib/ctech_cells.sv \
 	[glob $script_dir/../../verilog/rtl/marmot/*.v]"
 
 set ::env(CLOCK_PORT) "wb_clk_i"
-set ::env(CLOCK_PERIOD) 40
+set ::env(CLOCK_PERIOD) 35
 set ::env(IO_PCT)     0.2
 set ::env(IO_PCT_RAM) 0.3
 
-#set ::env(SYNTH_CAP_LOAD) 70
-
 set ::env(BASE_SDC_FILE) $script_dir/base.sdc
 
 #set ::env(SYNTH_STRATEGY) "AREA 0"
-#set ::env(SYNTH_NO_FLAT) 1
 
 set ::env(FP_CORE_UTIL) 30
 #set ::env(FP_SIZING) absolute
diff --git a/openlane/marmot/pin_order.cfg b/openlane/marmot/pin_order.cfg
index 605f79f..0a0e4aa 100644
--- a/openlane/marmot/pin_order.cfg
+++ b/openlane/marmot/pin_order.cfg
@@ -7,6 +7,7 @@
 irq.*
 
 #N
+ram_clk_delay_sel\[.*\]
 tag_array_ext_ram_rdata0\[.*\]
 tag_array_ext_ram_addr\[.*\]
 tag_array_ext_ram_clk
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index c63b19c..7ee8ff8 100644
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -44,64 +44,69 @@
 set ::env(ROUTING_CORES) 4
 
 # Define
-set ::env(SYNTH_DEFINES) "MARMOT_EMPTY"
+set ::env(SYNTH_DEFINES) "MARMOT_EMPTY clk_skew_adjust_EMPTY"
 
 ## Source Verilog Files
 set ::env(VERILOG_FILES) "\
-	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
-	$script_dir/../../verilog/rtl/user_project_wrapper.v"
+  $::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
+  $script_dir/../../verilog/rtl/user_project_wrapper.v"
 
 ## Clock configurations
 set ::env(CLOCK_PORT) "wb_clk_i"
-#set ::env(CLOCK_NET) "Marmot.clk"
 
-set ::env(CLOCK_PERIOD) "40"
+set ::env(CLOCK_PERIOD) 35
 
 set ::env(BASE_SDC_FILE) $script_dir/base.sdc
 
 set ::env(FP_PDN_HPITCH) 105
 set ::env(FP_PDN_VPITCH) 100
 
-#set ::env(FP_PDN_HWIDTH) 2.9
-
 ## Internal Macros
 ### Macro PDN Connections
 set ::env(FP_PDN_MACRO_HOOKS) "\
-	Marmot vccd1 vssd1 \
-        data_arrays_0_0_ext_ram0l vccd1 vssd1 \
-        data_arrays_0_0_ext_ram0h vccd1 vssd1 \
-        data_arrays_0_0_ext_ram1l vccd1 vssd1 \
-        data_arrays_0_0_ext_ram1h vccd1 vssd1 \
-        data_arrays_0_0_ext_ram2l vccd1 vssd1 \
-        data_arrays_0_0_ext_ram2h vccd1 vssd1 \
-        data_arrays_0_0_ext_ram3l vccd1 vssd1 \
-        data_arrays_0_0_ext_ram3h vccd1 vssd1 \
-        tag_array_ext_ram0l vccd1 vssd1 \
-        tag_array_ext_ram0h vccd1 vssd1"
+  Marmot vccd1 vssd1 \
+  u_clk_skew_adjust_0 vccd1 vssd1 \
+  u_clk_skew_adjust_1 vccd1 vssd1 \
+  u_clk_skew_adjust_2 vccd1 vssd1 \
+  u_clk_skew_adjust_3 vccd1 vssd1 \
+  u_clk_skew_adjust_4 vccd1 vssd1 \
+  data_arrays_0_0_ext_ram0l vccd1 vssd1 \
+  data_arrays_0_0_ext_ram0h vccd1 vssd1 \
+  data_arrays_0_0_ext_ram1l vccd1 vssd1 \
+  data_arrays_0_0_ext_ram1h vccd1 vssd1 \
+  data_arrays_0_0_ext_ram2l vccd1 vssd1 \
+  data_arrays_0_0_ext_ram2h vccd1 vssd1 \
+  data_arrays_0_0_ext_ram3l vccd1 vssd1 \
+  data_arrays_0_0_ext_ram3h vccd1 vssd1 \
+  tag_array_ext_ram0l vccd1 vssd1 \
+  tag_array_ext_ram0h vccd1 vssd1"
 
 ### Macro Placement
 set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro.cfg
 
 ### Black-box verilog and views
 set ::env(VERILOG_FILES_BLACKBOX) "\
-	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
-	$script_dir/../../verilog/rtl/marmot/Marmot.v \
-        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \
-        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_1kbyte_1rw1r_32x256_8.v"
+  $::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
+  $script_dir/../../verilog/rtl/marmot/Marmot.v \
+  $script_dir/../../verilog/lib/clk_skew_adjust.gv \
+  $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \
+  $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_1kbyte_1rw1r_32x256_8.v"
 
 set ::env(EXTRA_LEFS) "\
-	$script_dir/../../lef/Marmot.lef \
-        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \
-        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_1kbyte_1rw1r_32x256_8.lef"
+  $script_dir/../../lef/Marmot.lef \
+  $script_dir/../../lef/clk_skew_adjust.lef \
+  $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \
+  $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_1kbyte_1rw1r_32x256_8.lef"
 
 set ::env(EXTRA_GDS_FILES) "\
-	$script_dir/../../gds/Marmot.gds \
-        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds \
-        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_1kbyte_1rw1r_32x256_8.gds"
+  $script_dir/../../gds/Marmot.gds \
+  $script_dir/../../gds/clk_skew_adjust.gds \
+  $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds \
+  $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_1kbyte_1rw1r_32x256_8.gds"
 
 set ::env(EXTRA_LIBS) "\
-        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_1kbyte_1rw1r_32x256_8_TT_1p8V_25C.lib \
-        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C.lib"
+  $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_1kbyte_1rw1r_32x256_8_TT_1p8V_25C.lib \
+  $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C.lib"
 
 # Obstruction over SRAMs
 set ::env(GLB_RT_OBS) " \
@@ -157,6 +162,7 @@
 
 # The following is because there are no std cells in the example wrapper project.
 set ::env(SYNTH_TOP_LEVEL) 1
+#set ::env(PL_TIME_DRIVEN) 1
 set ::env(PL_RANDOM_GLB_PLACEMENT) 1
 
 set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index 70ee044..d451797 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1,5 +1,5 @@
 # Logic
-Marmot 1000 300 N
+Marmot 1000 250 N
 
 # I-Cache / ITIM
 data_arrays_0_0_ext_ram0l  150  150 FN
@@ -8,8 +8,15 @@
 data_arrays_0_0_ext_ram1h  150 1830 FN
 data_arrays_0_0_ext_ram2l  150 2390 FN
 data_arrays_0_0_ext_ram2h  150 2950 FN
-data_arrays_0_0_ext_ram3l 1000 2270 FN
-data_arrays_0_0_ext_ram3h 2050 2270 N
-tag_array_ext_ram0l       1200 2890 FN
-tag_array_ext_ram0h       2050 2890 N
+data_arrays_0_0_ext_ram3l 1000 2390 FN
+data_arrays_0_0_ext_ram3h 2050 2390 N
+tag_array_ext_ram0l       1200 2950 FN
+tag_array_ext_ram0h       2050 2950 N
+
+# Clock skew adjust
+u_clk_skew_adjust_1       1000   63 N
+u_clk_skew_adjust_2       1000 2163 N
+u_clk_skew_adjust_3       1000 2898 N
+u_clk_skew_adjust_4       1845 2373 N
+u_clk_skew_adjust_0       1845 3003 N
 
diff --git a/verilog/gl/Marmot.v b/verilog/gl/Marmot.v
index f8c61ff..2dd22fe 100644
--- a/verilog/gl/Marmot.v
+++ b/verilog/gl/Marmot.v
Binary files differ
diff --git a/verilog/lib/clk_skew_adjust.gv b/verilog/lib/clk_skew_adjust.gv
index ccab011..40333c5 100644
--- a/verilog/lib/clk_skew_adjust.gv
+++ b/verilog/lib/clk_skew_adjust.gv
@@ -89,6 +89,7 @@
   output clk_out;
   input [4:0] sel;
 
+`ifndef clk_skew_adjust_EMPTY
   wire clk_d1;
   wire clk_d2;
   wire clk_d3;
@@ -229,4 +230,6 @@
   // output clock
   ctech_clk_buf u_clk_out_buf (.A(d40), .X(clk_out));
 
+`endif  // clk_skew_adjust_EMPTY
+
 endmodule