Move clk_skew_adjust under user_project_wrapper
diff --git a/verilog/rtl/marmot/Marmot.v b/verilog/rtl/marmot/Marmot.v
index b07d5db..18fd2c7 100644
--- a/verilog/rtl/marmot/Marmot.v
+++ b/verilog/rtl/marmot/Marmot.v
@@ -47,7 +47,10 @@
     // IRQ
     output [2:0] irq,
 
-    // RAM signals
+    // RAM clock delay select
+    output [31:0] ram_clk_delay_sel,
+
+    // DTIM RAM I/F
 //  output        data_arrays_0_ext_ram_clk,
 //  output [7:0]  data_arrays_0_ext_ram_csb,
 //  output        data_arrays_0_ext_ram_web,
@@ -65,6 +68,7 @@
 //  output [7:0]  data_arrays_0_ext_ram_csb1,
 //  output [8:0]  data_arrays_0_ext_ram_addr1,
 
+    // I-Cache Tag RAM I/F
     output        tag_array_ext_ram_clk,
     output        tag_array_ext_ram_csb,
     output        tag_array_ext_ram_web,
@@ -76,6 +80,7 @@
     output [1:0]  tag_array_ext_ram_csb1,
     output [7:0]  tag_array_ext_ram_addr1,
 
+    // I-Cache Data RAM I/F
     output        data_arrays_0_0_ext_ram_clk,
     output [3:0]  data_arrays_0_0_ext_ram_csb,
     output        data_arrays_0_0_ext_ram_web,
@@ -177,16 +182,16 @@
     // Logic Analyzer Signals
     wire [127:0] la_data_out;   // [127:32] <- 0
                                 // [ 31: 0] <- gpio_out[31:0]
-
-    wire [127:0] la_data_input; // [127:47] -> not in use
-                                // [ 46:42] -> clock skew adjust for I-Cache Data RAMs
-                                // [ 41:37] -> clock skew adjust for I-Cache Tag RAMs
-                                // [ 36:32] -> clock skew adjust for DTIM RAMs
-                                // [ 31: 0] -> gpio_in[31:0]
-
     assign la_data_out[127:32] = 96'd0;
+
+    wire [127:0] la_data_input; // [127:64] -> not in use
+                                // [ 63:32] -> RAM clock delay select
+                                // [ 31: 0] -> gpio_in[31:0]
     assign la_data_input = ~la_oenb & la_data_in;
 
+    wire [31:0] ram_clk_delay_sel;
+    assign ram_clk_delay_sel = la_data_input[63:32];
+
     //------------------------------------------------------------------------------
     // IRQ
     wire [2:0] irq;
@@ -421,22 +426,12 @@
     );
 
     assign data_arrays_0_ext_ram_addr  = data_arrays_0_ext_RW0_addr[8:0];
-    //assign data_arrays_0_ext_ram_clk   = data_arrays_0_ext_RW0_clk;
+    assign data_arrays_0_ext_ram_clk   = data_arrays_0_ext_RW0_clk;
     assign data_arrays_0_ext_ram_wdata = data_arrays_0_ext_RW0_wdata;
     assign data_arrays_0_ext_ram_wmask = data_arrays_0_ext_RW0_wmask;
     assign data_arrays_0_ext_ram_csb1  = 8'hff;
     assign data_arrays_0_ext_ram_addr1 = 9'h000;
 
-    clk_skew_adjust u_clk_skew_adjust_0 (
-      `ifdef USE_POWER_PINS
-         .vccd1(vccd1),
-         .vssd1(vssd1),
-       `endif
-         .clk_in(clk),
-         .sel(la_data_input[36:32]),
-         .clk_out(data_arrays_0_ext_ram_clk)
-    );
-
     // I-Cache Tag RAM interfaces
     tag_array_ext tag_array_ext (
       .RW0_addr(tag_array_ext_RW0_addr),
@@ -453,22 +448,12 @@
     );
 
     assign tag_array_ext_ram_addr  = {1'b0, tag_array_ext_RW0_addr};
-    //assign tag_array_ext_ram_clk   = tag_array_ext_RW0_clk;
+    assign tag_array_ext_ram_clk   = tag_array_ext_RW0_clk;
     assign tag_array_ext_ram_wdata = {12'd0, tag_array_ext_RW0_wdata[39:20], 12'd0, tag_array_ext_RW0_wdata[19:0]};
     assign tag_array_ext_ram_wmask = tag_array_ext_RW0_wmask;
     assign tag_array_ext_ram_csb1  = 2'b11;
     assign tag_array_ext_ram_addr1 = 8'h00;
 
-    clk_skew_adjust u_clk_skew_adjust_1 (
-      `ifdef USE_POWER_PINS
-         .vccd1(vccd1),
-         .vssd1(vssd1),
-       `endif
-         .clk_in(clk),
-         .sel(la_data_input[41:37]),
-         .clk_out(tag_array_ext_ram_clk)
-    );
-
     // I-Cache Data RAM interfaces
     data_arrays_0_0_ext data_arrays_0_0_ext (
       .RW0_addr(data_arrays_0_0_ext_RW0_addr),
@@ -487,21 +472,11 @@
     );
 
     assign data_arrays_0_0_ext_ram_addr  = data_arrays_0_0_ext_RW0_addr[8:0];
-    //assign data_arrays_0_0_ext_ram_clk   = data_arrays_0_0_ext_RW0_clk;
+    assign data_arrays_0_0_ext_ram_clk   = data_arrays_0_0_ext_RW0_clk;
     assign data_arrays_0_0_ext_ram_wdata = data_arrays_0_0_ext_RW0_wdata;
     assign data_arrays_0_0_ext_ram_wmask = data_arrays_0_0_ext_RW0_wmask;
     assign data_arrays_0_0_ext_ram_csb1  = 8'hff;
     assign data_arrays_0_0_ext_ram_addr1 = 9'h000;
 
-    clk_skew_adjust u_clk_skew_adjust_2 (
-      `ifdef USE_POWER_PINS
-         .vccd1(vccd1),
-         .vssd1(vssd1),
-       `endif
-         .clk_in(clk),
-         .sel(la_data_input[46:42]),
-         .clk_out(data_arrays_0_0_ext_ram_clk)
-    );
-
 `endif  // MARMOT_EMPTY
 endmodule
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index b4336ac..746d21b 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -13,6 +13,11 @@
 // limitations under the License.
 // SPDX-License-Identifier: Apache-2.0
 
+// RAM message control
+`ifndef VERBOSE
+  `define VERBOSE 0
+`endif
+
 `default_nettype none
 /*
  *-------------------------------------------------------------
@@ -81,7 +86,10 @@
 /*--------------------------------------*/
 /* User project is instantiated  here   */
 /*--------------------------------------*/
-  // For data_arrays_0_ext
+  // RAM clock skew adjust
+  wire [31:0] ram_clk_delay_sel;
+
+  // DTIM RAM I/F
 //wire [8:0]  data_arrays_0_ext_ram_addr;
 //wire        data_arrays_0_ext_ram_clk;
 //wire [31:0] data_arrays_0_ext_ram_wdata;
@@ -99,7 +107,7 @@
 //wire [7:0]  data_arrays_0_ext_ram_csb1;
 //wire [8:0]  data_arrays_0_ext_ram_addr1;
 
-  // For tag_array_ext
+  // I-Cache Tag RAM I/F
   wire [7:0]  tag_array_ext_ram_addr;
   wire        tag_array_ext_ram_clk;
   wire [63:0] tag_array_ext_ram_wdata;
@@ -111,9 +119,12 @@
   wire [1:0]  tag_array_ext_ram_csb1;
   wire [7:0]  tag_array_ext_ram_addr1;
 
-  // For data_arrays_0_0_ext
+  // I-Cache Data RAM I/F
   wire [8:0]  data_arrays_0_0_ext_ram_addr;
-  wire        data_arrays_0_0_ext_ram_clk;
+  wire        data_arrays_0_0_ext_ram_clk0;
+  wire        data_arrays_0_0_ext_ram_clk1;
+  wire        data_arrays_0_0_ext_ram_clk2;
+  wire        data_arrays_0_0_ext_ram_clk3;
   wire [63:0] data_arrays_0_0_ext_ram_wdata;
   wire [1:0]  data_arrays_0_0_ext_ram_wmask;
   wire [3:0]  data_arrays_0_0_ext_ram_csb;
@@ -130,12 +141,11 @@
 	.vccd1(vccd1),	// User area 1 1.8V power
 	.vssd1(vssd1),	// User area 1 digital ground
 `endif
-
+    // Clock and Reset
     .wb_clk_i(wb_clk_i),
     .wb_rst_i(wb_rst_i),
 
     // MGMT SoC Wishbone Slave
-
     .wbs_cyc_i(wbs_cyc_i),
     .wbs_stb_i(wbs_stb_i),
     .wbs_we_i(wbs_we_i),
@@ -146,13 +156,11 @@
     .wbs_dat_o(wbs_dat_o),
 
     // Logic Analyzer
-
     .la_data_in(la_data_in),
     .la_data_out(la_data_out),
     .la_oenb (la_oenb),
 
     // IO Pads
-
     .io_in (io_in),
     .io_out(io_out),
     .io_oeb(io_oeb),
@@ -160,9 +168,12 @@
     // IRQ
     .irq(user_irq),
 
-    // RAM Signals
+    // RAM clock skew adjust
+    .ram_clk_delay_sel(ram_clk_delay_sel),
+
+    // DTIM RAM I/F
 //  .data_arrays_0_ext_ram_addr(data_arrays_0_ext_ram_addr),
-//  .data_arrays_0_ext_ram_clk(data_arrays_0_ext_ram_clk),
+//  .data_arrays_0_ext_ram_clk(),
 //  .data_arrays_0_ext_ram_wdata(data_arrays_0_ext_ram_wdata),
 //  .data_arrays_0_ext_ram_wmask(data_arrays_0_ext_ram_wmask),
 //  .data_arrays_0_ext_ram_csb(data_arrays_0_ext_ram_csb),
@@ -178,8 +189,9 @@
 //  .data_arrays_0_ext_ram_csb1(data_arrays_0_ext_ram_csb1),
 //  .data_arrays_0_ext_ram_addr1(data_arrays_0_ext_ram_addr1),
 
+    // I-Cache Tag RAM I/F
     .tag_array_ext_ram_addr(tag_array_ext_ram_addr),
-    .tag_array_ext_ram_clk(tag_array_ext_ram_clk),
+    .tag_array_ext_ram_clk(),
     .tag_array_ext_ram_wdata(tag_array_ext_ram_wdata),
     .tag_array_ext_ram_wmask(tag_array_ext_ram_wmask),
     .tag_array_ext_ram_csb(tag_array_ext_ram_csb),
@@ -189,8 +201,9 @@
     .tag_array_ext_ram_csb1(tag_array_ext_ram_csb1),
     .tag_array_ext_ram_addr1(tag_array_ext_ram_addr1),
 
+    // I-Cache Data RAM I/F
     .data_arrays_0_0_ext_ram_addr(data_arrays_0_0_ext_ram_addr),
-    .data_arrays_0_0_ext_ram_clk(data_arrays_0_0_ext_ram_clk),
+    .data_arrays_0_0_ext_ram_clk(),
     .data_arrays_0_0_ext_ram_wdata(data_arrays_0_0_ext_ram_wdata),
     .data_arrays_0_0_ext_ram_wmask(data_arrays_0_0_ext_ram_wmask),
     .data_arrays_0_0_ext_ram_csb(data_arrays_0_0_ext_ram_csb),
@@ -203,12 +216,8 @@
     .data_arrays_0_0_ext_ram_addr1(data_arrays_0_0_ext_ram_addr1)
 );
 
-`ifndef VERBOSE
-  `define VERBOSE 0
-`endif
-
 //-----------------------------------------------------------------------
-// RAMs for data_arrays_0_ext
+// DTIM RAMs
 //-----------------------------------------------------------------------
 `ifdef DO_NOT_DEFINE
   sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_ext_ram0 (
@@ -357,8 +366,18 @@
 `endif // DO_NOT_DEFINE
 
 //-----------------------------------------------------------------------
-// RAMs for tag_array_ext
+// I-Cache Tag RAMs
 //-----------------------------------------------------------------------
+  clk_skew_adjust u_clk_skew_adjust_0 (
+    `ifdef USE_POWER_PINS
+      .vccd1(vccd1),
+      .vssd1(vssd1),
+    `endif
+      .clk_in(wb_clk_i),
+      .sel(ram_clk_delay_sel[4:0]),
+      .clk_out(tag_array_ext_ram_clk)
+  );
+
   sky130_sram_1kbyte_1rw1r_32x256_8 #(.VERBOSE(`VERBOSE)) tag_array_ext_ram0h (
 `ifdef USE_POWER_PINS
     .vccd1  (vccd1),
@@ -396,21 +415,61 @@
   );
 
 //-----------------------------------------------------------------------
-// RAMs for  data_arrays_0_0_ext
+// I-Cache Data RAMs
 //-----------------------------------------------------------------------
+  clk_skew_adjust u_clk_skew_adjust_1 (
+    `ifdef USE_POWER_PINS
+      .vccd1(vccd1),
+      .vssd1(vssd1),
+    `endif
+      .clk_in(wb_clk_i),
+      .sel(ram_clk_delay_sel[9:5]),
+      .clk_out(data_arrays_0_0_ext_ram_clk0)
+  );
+
+  clk_skew_adjust u_clk_skew_adjust_2 (
+    `ifdef USE_POWER_PINS
+      .vccd1(vccd1),
+      .vssd1(vssd1),
+    `endif
+      .clk_in(wb_clk_i),
+      .sel(ram_clk_delay_sel[14:10]),
+      .clk_out(data_arrays_0_0_ext_ram_clk1)
+  );
+
+  clk_skew_adjust u_clk_skew_adjust_3 (
+    `ifdef USE_POWER_PINS
+      .vccd1(vccd1),
+      .vssd1(vssd1),
+    `endif
+      .clk_in(wb_clk_i),
+      .sel(ram_clk_delay_sel[19:15]),
+      .clk_out(data_arrays_0_0_ext_ram_clk2)
+  );
+
+  clk_skew_adjust u_clk_skew_adjust_4 (
+    `ifdef USE_POWER_PINS
+      .vccd1(vccd1),
+      .vssd1(vssd1),
+    `endif
+      .clk_in(wb_clk_i),
+      .sel(ram_clk_delay_sel[24:20]),
+      .clk_out(data_arrays_0_0_ext_ram_clk3)
+  );
+
   sky130_sram_2kbyte_1rw1r_32x512_8 #(.VERBOSE(`VERBOSE)) data_arrays_0_0_ext_ram0h (
 `ifdef USE_POWER_PINS
     .vccd1  (vccd1),
     .vssd1  (vssd1),
 `endif
-    .clk0   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk0   (data_arrays_0_0_ext_ram_clk0),   // clock
     .csb0   (data_arrays_0_0_ext_ram_csb[0]), // active low chip select
     .web0   (data_arrays_0_0_ext_ram_web),    // active low write control
     .wmask0 ({4{data_arrays_0_0_ext_ram_wmask[1]}}), // write mask
     .addr0  (data_arrays_0_0_ext_ram_addr),
     .din0   (data_arrays_0_0_ext_ram_wdata[63:32]),
     .dout0  (data_arrays_0_0_ext_ram_rdata0[63:32]),
-    .clk1   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk1   (data_arrays_0_0_ext_ram_clk0),   // clock
     .csb1   (data_arrays_0_0_ext_ram_csb1[0]),// active low chip select
     .addr1  (data_arrays_0_0_ext_ram_addr1),
     .dout1  ()
@@ -421,14 +480,14 @@
     .vccd1  (vccd1),
     .vssd1  (vssd1),
 `endif
-    .clk0   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk0   (data_arrays_0_0_ext_ram_clk0),   // clock
     .csb0   (data_arrays_0_0_ext_ram_csb[0]), // active low chip select
     .web0   (data_arrays_0_0_ext_ram_web),    // active low write control
     .wmask0 ({4{data_arrays_0_0_ext_ram_wmask[0]}}), // write mask
     .addr0  (data_arrays_0_0_ext_ram_addr),
     .din0   (data_arrays_0_0_ext_ram_wdata[31:0]),
     .dout0  (data_arrays_0_0_ext_ram_rdata0[31:0]),
-    .clk1   (data_arrays_0_0_ext_ram_clk),   // clock
+    .clk1   (data_arrays_0_0_ext_ram_clk0),   // clock
     .csb1   (data_arrays_0_0_ext_ram_csb1[1]),// active low chip select
     .addr1  (data_arrays_0_0_ext_ram_addr1),
     .dout1  ()
@@ -439,14 +498,14 @@
     .vccd1  (vccd1),
     .vssd1  (vssd1),
 `endif
-    .clk0   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk0   (data_arrays_0_0_ext_ram_clk1),   // clock
     .csb0   (data_arrays_0_0_ext_ram_csb[1]), // active low chip select
     .web0   (data_arrays_0_0_ext_ram_web),    // active low write control
     .wmask0 ({4{data_arrays_0_0_ext_ram_wmask[1]}}), // write mask
     .addr0  (data_arrays_0_0_ext_ram_addr),
     .din0   (data_arrays_0_0_ext_ram_wdata[63:32]),
     .dout0  (data_arrays_0_0_ext_ram_rdata1[63:32]),
-    .clk1   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk1   (data_arrays_0_0_ext_ram_clk1),   // clock
     .csb1   (data_arrays_0_0_ext_ram_csb1[2]),// active low chip select
     .addr1  (data_arrays_0_0_ext_ram_addr1),
     .dout1  ()
@@ -457,14 +516,14 @@
     .vccd1  (vccd1),
     .vssd1  (vssd1),
 `endif
-    .clk0   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk0   (data_arrays_0_0_ext_ram_clk1),   // clock
     .csb0   (data_arrays_0_0_ext_ram_csb[1]), // active low chip select
     .web0   (data_arrays_0_0_ext_ram_web),    // active low write control
     .wmask0 ({4{data_arrays_0_0_ext_ram_wmask[0]}}), // write mask
     .addr0  (data_arrays_0_0_ext_ram_addr),
     .din0   (data_arrays_0_0_ext_ram_wdata[31:0]),
     .dout0  (data_arrays_0_0_ext_ram_rdata1[31:0]),
-    .clk1   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk1   (data_arrays_0_0_ext_ram_clk1),   // clock
     .csb1   (data_arrays_0_0_ext_ram_csb1[3]),// active low chip select
     .addr1  (data_arrays_0_0_ext_ram_addr1),
     .dout1  ()
@@ -475,14 +534,14 @@
     .vccd1  (vccd1),
     .vssd1  (vssd1),
 `endif
-    .clk0   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk0   (data_arrays_0_0_ext_ram_clk2),   // clock
     .csb0   (data_arrays_0_0_ext_ram_csb[2]), // active low chip select
     .web0   (data_arrays_0_0_ext_ram_web),    // active low write control
     .wmask0 ({4{data_arrays_0_0_ext_ram_wmask[1]}}), // write mask
     .addr0  (data_arrays_0_0_ext_ram_addr),
     .din0   (data_arrays_0_0_ext_ram_wdata[63:32]),
     .dout0  (data_arrays_0_0_ext_ram_rdata2[63:32]),
-    .clk1   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk1   (data_arrays_0_0_ext_ram_clk2),   // clock
     .csb1   (data_arrays_0_0_ext_ram_csb1[4]),// active low chip select
     .addr1  (data_arrays_0_0_ext_ram_addr1),
     .dout1  ()
@@ -493,14 +552,14 @@
     .vccd1  (vccd1),
     .vssd1  (vssd1),
 `endif
-    .clk0   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk0   (data_arrays_0_0_ext_ram_clk2),   // clock
     .csb0   (data_arrays_0_0_ext_ram_csb[2]), // active low chip select
     .web0   (data_arrays_0_0_ext_ram_web),    // active low write control
     .wmask0 ({4{data_arrays_0_0_ext_ram_wmask[0]}}), // write mask
     .addr0  (data_arrays_0_0_ext_ram_addr),
     .din0   (data_arrays_0_0_ext_ram_wdata[31:0]),
     .dout0  (data_arrays_0_0_ext_ram_rdata2[31:0]),
-    .clk1   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk1   (data_arrays_0_0_ext_ram_clk2),   // clock
     .csb1   (data_arrays_0_0_ext_ram_csb1[5]),// active low chip select
     .addr1  (data_arrays_0_0_ext_ram_addr1),
     .dout1  ()
@@ -511,14 +570,14 @@
     .vccd1  (vccd1),
     .vssd1  (vssd1),
 `endif
-    .clk0   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk0   (data_arrays_0_0_ext_ram_clk3),   // clock
     .csb0   (data_arrays_0_0_ext_ram_csb[3]), // active low chip select
     .web0   (data_arrays_0_0_ext_ram_web),    // active low write control
     .wmask0 ({4{data_arrays_0_0_ext_ram_wmask[1]}}), // write mask
     .addr0  (data_arrays_0_0_ext_ram_addr),
     .din0   (data_arrays_0_0_ext_ram_wdata[63:32]),
     .dout0  (data_arrays_0_0_ext_ram_rdata3[63:32]),
-    .clk1   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk1   (data_arrays_0_0_ext_ram_clk3),   // clock
     .csb1   (data_arrays_0_0_ext_ram_csb1[6]),// active low chip select
     .addr1  (data_arrays_0_0_ext_ram_addr1),
     .dout1  ()
@@ -529,14 +588,14 @@
     .vccd1  (vccd1),
     .vssd1  (vssd1),
 `endif
-    .clk0   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk0   (data_arrays_0_0_ext_ram_clk3),   // clock
     .csb0   (data_arrays_0_0_ext_ram_csb[3]), // active low chip select
     .web0   (data_arrays_0_0_ext_ram_web),    // active low write control
     .wmask0 ({4{data_arrays_0_0_ext_ram_wmask[0]}}), // write mask
     .addr0  (data_arrays_0_0_ext_ram_addr),
     .din0   (data_arrays_0_0_ext_ram_wdata[31:0]),
     .dout0  (data_arrays_0_0_ext_ram_rdata3[31:0]),
-    .clk1   (data_arrays_0_0_ext_ram_clk),    // clock
+    .clk1   (data_arrays_0_0_ext_ram_clk3),   // clock
     .csb1   (data_arrays_0_0_ext_ram_csb1[7]),// active low chip select
     .addr1  (data_arrays_0_0_ext_ram_addr1),
     .dout1  ()