diff --git a/Makefile b/Makefile
index 9bb954a..381430b 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@
 
 CARAVEL_ROOT?=$(PWD)/caravel
 PRECHECK_ROOT?=${HOME}/mpw_precheck
-MCW_ROOT?=$(PWD)/mgmt_core_wrapper
+MCW_ROOT?=$(UPRJ_ROOT)/mgmt_core_wrapper
 SIM?=RTL
 
 export SKYWATER_COMMIT=c094b6e83a4f9298e47f696ec5a7fd53535ec5eb
@@ -79,7 +79,11 @@
 docker_run_verify=\
 	docker run -v ${TARGET_PATH}:${TARGET_PATH} -v ${PDK_ROOT}:${PDK_ROOT} \
 		-v ${CARAVEL_ROOT}:${CARAVEL_ROOT} \
+<<<<<<< HEAD
 		-v ${MCW_ROOT}:${MCW_ROOT} \
+=======
+		-v $(MCW_ROOT):$(MCW_ROOT) \
+>>>>>>> sram
 		-e TARGET_PATH=${TARGET_PATH} -e PDK_ROOT=${PDK_ROOT} \
 		-e CARAVEL_ROOT=${CARAVEL_ROOT} \
 		-e TOOLS=/opt/riscv32i \
@@ -176,7 +180,7 @@
 .PHONY: clean
 clean:
 	cd ./verilog/dv/ && \
-		$(MAKE) -j$(THREADS) clean
+		$(MAKE) clean
 
 check-caravel:
 	@if [ ! -d "$(CARAVEL_ROOT)" ]; then \
diff --git a/openlane/user_proj_example/config.tcl b/openlane/user_proj_example/config.tcl
index c9266ee..94eecca 100755
--- a/openlane/user_proj_example/config.tcl
+++ b/openlane/user_proj_example/config.tcl
@@ -22,7 +22,12 @@
 
 set ::env(VERILOG_FILES) "\
 	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
-	$script_dir/../../verilog/rtl/user_proj_example.v"
+	$script_dir/../../verilog/rtl/user_proj_example.v \
+	$script_dir/../../verilog/rtl/wb_interconnect/wb_interconnect.sv \
+	$script_dir/../../verilog/rtl/wb_interconnect/wb_signal_reg.sv \
+	$script_dir/../../verilog/rtl/sram/sky130_sram_2kbyte_1rw1r_32x512_8.v \
+	$script_dir/../../verilog/rtl/sram/sram_wb_wrapper.sv \
+	"
 
 set ::env(DESIGN_IS_CORE) 0
 
diff --git a/verilog/includes/includes.rtl.caravel_user_project b/verilog/includes/includes.rtl.caravel_user_project
index f714ae3..acc27a6 100644
--- a/verilog/includes/includes.rtl.caravel_user_project
+++ b/verilog/includes/includes.rtl.caravel_user_project
@@ -1,8 +1,9 @@
 # Caravel user project includes	     
 -v $(USER_PROJECT_VERILOG)/rtl/user_project_wrapper.v
 -v $(USER_PROJECT_VERILOG)/rtl/user_proj_example.v
+-v $(USER_PROJECT_VERILOG)/rtl/sram/sram_wb_wrapper.sv
 -v $(USER_PROJECT_VERILOG)/rtl/wb_interconnect/wb_interconnect.sv
--v $(USER_PROJECT_VERILOG)/rtl/wb_interconnect/wb_stagging.sv
+-v $(USER_PROJECT_VERILOG)/rtl/wb_interconnect/wb_signal_reg.sv
 -v $(USER_PROJECT_VERILOG)/rtl/wbuart32/rxuart.v
 -v $(USER_PROJECT_VERILOG)/rtl/wbuart32/txuart.v
 -v $(USER_PROJECT_VERILOG)/rtl/wbuart32/rxuartlite.v
diff --git a/verilog/rtl/sram/sky130_sram_2kbyte_1rw1r_32x512_8.v b/verilog/rtl/sram/sky130_sram_2kbyte_1rw1r_32x512_8.v
index 289a770..7da4327 100644
--- a/verilog/rtl/sram/sky130_sram_2kbyte_1rw1r_32x512_8.v
+++ b/verilog/rtl/sram/sky130_sram_2kbyte_1rw1r_32x512_8.v
@@ -20,7 +20,7 @@
   parameter RAM_DEPTH = 1 << ADDR_WIDTH;
   // FIXME: This delay is arbitrary.
   parameter DELAY = 3 ;
-  parameter VERBOSE = 0 ; //Set to 0 to only display warnings
+  parameter VERBOSE = 1 ; //Set to 0 to only display warnings
   parameter T_HOLD = 1 ; //Delay to hold dout value after posedge. Value is arbitrary
 
 `ifdef USE_POWER_PINS
diff --git a/verilog/rtl/sram/sram_wb_wrapper.sv b/verilog/rtl/sram/sram_wb_wrapper.sv
index 58ec2d3..e003b4a 100644
--- a/verilog/rtl/sram/sram_wb_wrapper.sv
+++ b/verilog/rtl/sram/sram_wb_wrapper.sv
@@ -34,23 +34,23 @@
     input   logic                       wb_we_i,   // write
     input   logic [SRAM_DATA_WD-1:0]    wb_dat_i,  // data output
     input   logic [SRAM_DATA_WD/8-1:0]  wb_sel_i,  // byte enable
-    output  logic [SRAM_DATA_WD-1:0]    wb_dat_o,  // data input
+    output  wire  [SRAM_DATA_WD-1:0]    wb_dat_o,  // data input
     output  logic                       wb_ack_o   // acknowlegement
 );
 
 // Port A
-logic                      sram_clk_a;
-logic                      sram_csb_a;
-logic [SRAM_ADDR_WD-1:0]   sram_addr_a;
-logic [SRAM_DATA_WD-1:0]   sram_dout_a;
+wire                      sram_clk_a;
+wire                      sram_csb_a;
+wire [SRAM_ADDR_WD-1:0]   sram_addr_a;
+wire [SRAM_DATA_WD-1:0]   sram_dout_a;
 
 // Port B
-logic                      sram_clk_b;
-logic                      sram_csb_b;
-logic                      sram_web_b;
-logic [SRAM_DATA_WD/8-1:0] sram_mask_b;
-logic [SRAM_ADDR_WD-1:0]   sram_addr_b;
-logic [SRAM_DATA_WD-1:0]   sram_din_b;
+wire                      sram_clk_b;
+wire                      sram_csb_b;
+wire                      sram_web_b;
+wire [SRAM_DATA_WD/8-1:0] sram_mask_b;
+wire [SRAM_ADDR_WD-1:0]   sram_addr_b;
+wire [SRAM_DATA_WD-1:0]   sram_din_b;
 
 // Memory Write Port
 assign sram_clk_b  = wb_clk_i;
@@ -62,7 +62,7 @@
 
 // Memory Read Port
 assign sram_clk_a  = wb_clk_i;
-assign sram_csb_a  = (wb_stb_i == 1'b1 && wb_we_i == 1'b0 && wb_ack_o == 0) ? 1'b0 : 1'b1;
+assign sram_csb_a  = (wb_stb_i == 1'b1 && wb_we_i == 1'b0 && wb_cyc_i == 1'b1) ? 1'b0 : 1'b1;
 assign sram_addr_a = wb_adr_i;
 
 assign wb_dat_o    = sram_dout_a;
@@ -88,13 +88,14 @@
 );
 
 // Generate once cycle delayed ACK to get the data from SRAM
-always_ff @(posedge wb_clk_i) begin
+always @(negedge rst_n or posedge wb_clk_i) 
+begin
     if ( rst_n == 1'b0 )
     begin
         wb_ack_o <= 'h0;
     end else
     begin
-        wb_ack_o <= (wb_stb_i == 1'b1) & (wb_ack_o == 0);
+        wb_ack_o <= (wb_stb_i == 1'b1) & (wb_cyc_i == 1'b1) & (wb_ack_o == 0);
     end
 end
 
diff --git a/verilog/rtl/user_proj_example.v b/verilog/rtl/user_proj_example.v
index 3ae9bc1..e9be131 100644
--- a/verilog/rtl/user_proj_example.v
+++ b/verilog/rtl/user_proj_example.v
@@ -83,8 +83,7 @@
 //---------------------------------------------------------------------
 // WB Master Interface
 //---------------------------------------------------------------------
-wire clk;
-wire rst;
+wire rst_n = !wb_rst_i;
 wire [`MPRJ_IO_PADS-1:0] io_in;
 wire [`MPRJ_IO_PADS-1:0] io_out;
 wire [`MPRJ_IO_PADS-1:0] io_oeb;
@@ -122,7 +121,7 @@
     .vssd1(vssd1),    // User area 1 digital ground
 `endif
     .clk_i(wb_clk_i),
-    .rst_n(wb_rst_i),
+    .rst_n(rst_n),
 
     // Master 0 Interface
     .m0_wb_dat_i(wbs_dat_i),
@@ -133,47 +132,46 @@
     .m0_wb_stb_i(wbs_stb_i),
     .m0_wb_dat_o(wbs_dat_o),
     .m0_wb_ack_o(wbs_ack_o),
-    .m0_wb_err_o(),
 
     // Slave 0 Interface
-    .s0_wb_dat_i(s0_wb_dat_i),
+    .s0_wb_dat_i(s0_wb_dat_o),
     .s0_wb_ack_i(s0_wb_ack_o),
     .s0_wb_dat_o(s0_wb_dat_i),
     .s0_wb_adr_o(s0_wb_adr_i),
     .s0_wb_sel_o(s0_wb_sel_i),
     .s0_wb_we_o (s0_wb_we_i),
     .s0_wb_cyc_o(s0_wb_cyc_i),
-    .s0_wb_stb_o(s0_wb_stb_i),
+    .s0_wb_stb_o(s0_wb_stb_i)
 
     // Slave 1 Interface
-    .s1_wb_dat_i(),
-    .s1_wb_ack_i(),
-    .s1_wb_dat_o(),
-    .s1_wb_adr_o(),
-    .s1_wb_sel_o(),
-    .s1_wb_we_o (),
-    .s1_wb_cyc_o(),
-    .s1_wb_stb_o(),
+    .s1_wb_dat_i(s1_wb_dat_o),
+    .s1_wb_ack_i(s1_wb_ack_o),
+    .s1_wb_dat_o(s1_wb_dat_i),
+    .s1_wb_adr_o(s1_wb_adr_i),
+    .s1_wb_sel_o(s1_wb_sel_i),
+    .s1_wb_we_o (s1_wb_we_i)),
+    .s1_wb_cyc_o(s1_wb_cyc_i),
+    .s1_wb_stb_o(s1_wb_stb_i),
 
     // Slave 2 Interface
-    .s2_wb_dat_i(),
-    .s2_wb_ack_i(),
-    .s2_wb_dat_o(),
-    .s2_wb_adr_o(),
-    .s2_wb_sel_o(),
-    .s2_wb_we_o (),
-    .s2_wb_cyc_o(),
-    .s2_wb_stb_o(),
+    // .s2_wb_dat_i(),
+    // .s2_wb_ack_i(),
+    // .s2_wb_dat_o(),
+    // .s2_wb_adr_o(),
+    // .s2_wb_sel_o(),
+    // .s2_wb_we_o (),
+    // .s2_wb_cyc_o(),
+    // .s2_wb_stb_o(),
 
     // Slave 3 Interface
-    .s3_wb_dat_i(),
-    .s3_wb_ack_i(),
-    .s3_wb_dat_o(),
-    .s3_wb_adr_o(),
-    .s3_wb_sel_o(),
-    .s3_wb_we_o (),
-    .s3_wb_cyc_o(),
-    .s3_wb_stb_o()
+    // .s3_wb_dat_i(),
+    // .s3_wb_ack_i(),
+    // .s3_wb_dat_o(),
+    // .s3_wb_adr_o(),
+    // .s3_wb_sel_o(),
+    // .s3_wb_we_o (),
+    // .s3_wb_cyc_o(),
+    // .s3_wb_stb_o()
 );
 
 sram_wb_wrapper #(
@@ -185,7 +183,7 @@
 `endif
     )
     wb_wrapper0 (
-    .rst_n(wb_rst_i),
+    .rst_n(rst_n),
     // Wishbone Interface
     .wb_clk_i(wb_clk_i),     // System clock
     .wb_cyc_i(s0_wb_cyc_i),  // cycle enable
diff --git a/verilog/rtl/wb_interconnect/wb_interconnect.sv b/verilog/rtl/wb_interconnect/wb_interconnect.sv
index e76b65a..6397bc6 100644
--- a/verilog/rtl/wb_interconnect/wb_interconnect.sv
+++ b/verilog/rtl/wb_interconnect/wb_interconnect.sv
@@ -39,89 +39,74 @@
     input   logic          m0_wb_we_i,
     input   logic          m0_wb_cyc_i,
     input   logic          m0_wb_stb_i,
-    output  logic [31:0]   m0_wb_dat_o,
-    output  logic	       m0_wb_ack_o,
-    output  logic	       m0_wb_err_o,
+    output  wire  [31:0]   m0_wb_dat_o,
+    output  wire	       m0_wb_ack_o,
 
     // Slave 0 Interface
     input	logic [31:0]   s0_wb_dat_i,
     input	logic 	       s0_wb_ack_i,
-    output	logic [31:0]   s0_wb_dat_o,
-    output	logic [7:0]	   s0_wb_adr_o,
-    output	logic [3:0]	   s0_wb_sel_o,
-    output	logic 	       s0_wb_we_o,
-    output	logic 	       s0_wb_cyc_o,
-    output	logic 	       s0_wb_stb_o,
+    output	wire  [31:0]   s0_wb_dat_o,
+    output	wire  [8:0]	   s0_wb_adr_o,
+    output	wire  [3:0]	   s0_wb_sel_o,
+    output	wire  	       s0_wb_we_o,
+    output	wire  	       s0_wb_cyc_o,
+    output	wire  	       s0_wb_stb_o
 
     // Slave 1 Interface
     input	logic [31:0]   s1_wb_dat_i,
     input	logic 	       s1_wb_ack_i,
-    output	logic [31:0]   s1_wb_dat_o,
-    output	logic [10:0]   s1_wb_adr_o,
-    output	logic [3:0]	   s1_wb_sel_o,
-    output	logic 	       s1_wb_we_o,
-    output	logic 	       s1_wb_cyc_o,
-    output	logic 	       s1_wb_stb_o,
+    output	wire  [31:0]   s1_wb_dat_o,
+    output	wire  [8:0]    s1_wb_adr_o,
+    output	wire  [3:0]	   s1_wb_sel_o,
+    output	wire  	       s1_wb_we_o,
+    output	wire  	       s1_wb_cyc_o,
+    output	wire  	       s1_wb_stb_o,
 
     // Slave 2 Interface
-    input	logic [31:0]   s2_wb_dat_i,
-    input	logic 	       s2_wb_ack_i,
-    output	logic [31:0]   s2_wb_dat_o,
-    output	logic [10:0]   s2_wb_adr_o,
-    output	logic [3:0]    s2_wb_sel_o,
-    output	logic 	       s2_wb_we_o,
-    output	logic 	       s2_wb_cyc_o,
-    output	logic 	       s2_wb_stb_o,
+    // input	logic [31:0]   s2_wb_dat_i,
+    // input	logic 	       s2_wb_ack_i,
+    // output	wire  [31:0]   s2_wb_dat_o,
+    // output	wire  [8:0]    s2_wb_adr_o,
+    // output	wire  [3:0]    s2_wb_sel_o,
+    // output	wire  	       s2_wb_we_o,
+    // output	wire  	       s2_wb_cyc_o,
+    // output	wire  	       s2_wb_stb_o,
 
     // Slave 3 Interface
-    input	logic [31:0]   s3_wb_dat_i,
-    input	logic 	       s3_wb_ack_i,
-    output	logic [31:0]   s3_wb_dat_o,
-    output	logic [10:0]   s3_wb_adr_o,
-    output	logic [3:0]    s3_wb_sel_o,
-    output	logic 	       s3_wb_we_o,
-    output	logic 	       s3_wb_cyc_o,
-    output	logic 	       s3_wb_stb_o
+    // input	logic [31:0]   s3_wb_dat_i,
+    // input	logic 	       s3_wb_ack_i,
+    // output	wire  [31:0]   s3_wb_dat_o,
+    // output	wire  [8:0]    s3_wb_adr_o,
+    // output	wire  [3:0]    s3_wb_sel_o,
+    // output	wire  	       s3_wb_we_o,
+    // output	wire  	       s3_wb_cyc_o,
+    // output	wire  	       s3_wb_stb_o
 );
 
-// WishBone Wr Interface
-typedef struct packed {
-    logic [31:0] wb_dat;
-    logic [31:0] wb_adr;
-    logic [3:0]	 wb_sel;
-    logic  	     wb_we;
-    logic  	     wb_cyc;
-    logic  	     wb_stb;
-    logic [1:0]  wb_tid; // target id
-} type_wb_wr_intf;
+logic holding_busy; // Indicate Stagging for Free or not
 
-// WishBone Rd Interface
-typedef struct packed {
-    logic [31:0] wb_dat;
-    logic        wb_ack;
-    logic        wb_err;
-} type_wb_rd_intf;
+logic [31:0] m0_wb_dat_i_reg;
+logic [31:0] m0_wb_adr_reg;
+logic [3:0]	 m0_wb_sel_reg;
+logic  	     m0_wb_we_reg;
+logic  	     m0_wb_cyc_reg;
+logic  	     m0_wb_stb_reg;
+logic [1:0]  m0_wb_tid_reg;
 
-// Master Write Interface
-type_wb_wr_intf  m0_wb_wr;
+logic [31:0] m0_wb_dat_o_reg;
+logic        m0_wb_ack_reg;
 
-// Master Read Interface
-type_wb_rd_intf  m0_wb_rd;
+wire [31:0] s_bus_rd_wb_dat = (m0_wb_adr_i[13:12] == 2'b00) ? s0_wb_dat_i :
+                              (m0_wb_adr_i[13:12] == 2'b01) ? s1_wb_dat_i :
+                              (m0_wb_adr_i[13:12] == 2'b10) ? s2_wb_dat_i : 
+                              s3_wb_dat_i;
+wire        s_bus_rd_wb_ack = (m0_wb_adr_i[13:12] == 2'b00) ? s0_wb_ack_i :
+                              (m0_wb_adr_i[13:12] == 2'b01) ? s1_wb_ack_i :
+                              (m0_wb_adr_i[13:12] == 2'b10) ? s2_wb_ack_i : 
+                              s3_wb_ack_i;
 
-// Slave Write Interface
-type_wb_wr_intf  s0_wb_wr;
-type_wb_wr_intf  s1_wb_wr;
-type_wb_wr_intf  s2_wb_wr;
-type_wb_wr_intf  s3_wb_wr;
-
-// Slave Read Interface
-type_wb_rd_intf  s0_wb_rd;
-type_wb_rd_intf  s1_wb_rd;
-type_wb_rd_intf  s2_wb_rd;
-type_wb_rd_intf  s3_wb_rd;
-
-type_wb_wr_intf  s_bus_wr;  // Multiplexed Master I/F
-type_wb_rd_intf  s_bus_rd;  // Multiplexed Slave I/F
+//wire [31:0] s_bus_rd_wb_dat = s0_wb_dat_i;
+//wire        s_bus_rd_wb_ack = s0_wb_ack_i;
 
 //-------------------------------------------------------------------
 // EXTERNAL MEMORY MAP
@@ -129,121 +114,91 @@
 // 0x0000_1000 to 0x0000_1FFF  - UART
 // 0x0000_2000 to 0x0000_2FFF  - TRNG
 // 0x0000_3000 to 0x0000_3FFF  - SPI
-// ------------------------------------------------------------------
+//------------------------------------------------------------------
 wire [1:0] m0_wb_tid_i = m0_wb_adr_i[13:12];
 
 //----------------------------------------
-// Master Mapping
-// ---------------------------------------
-assign m0_wb_wr.wb_dat = m0_wb_dat_i;
-assign m0_wb_wr.wb_adr = {m0_wb_adr_i[31:2],2'b00};
-assign m0_wb_wr.wb_sel = m0_wb_sel_i;
-assign m0_wb_wr.wb_we  = m0_wb_we_i;
-assign m0_wb_wr.wb_cyc = m0_wb_cyc_i;
-assign m0_wb_wr.wb_stb = m0_wb_stb_i;
-assign m0_wb_wr.wb_tid = m0_wb_tid_i;
-
-assign m0_wb_dat_o = m0_wb_rd.wb_dat;
-assign m0_wb_ack_o = m0_wb_rd.wb_ack;
-assign m0_wb_err_o = m0_wb_rd.wb_err;
-
-//----------------------------------------
 // Slave Mapping
-// -------------------------------------
-// 2KB SRAM
-assign s0_wb_dat_o = s0_wb_wr.wb_dat;
-assign s0_wb_adr_o = s0_wb_wr.wb_adr[8:0];
-assign s0_wb_sel_o = s0_wb_wr.wb_sel;
-assign s0_wb_we_o  = s0_wb_wr.wb_we;
-assign s0_wb_cyc_o = s0_wb_wr.wb_cyc;
-assign s0_wb_stb_o = s0_wb_wr.wb_stb;
+//---------------------------------------
+//assign s0_wb_dat_o = m0_wb_dat_i_reg;
+//assign s0_wb_adr_o = m0_wb_adr_reg[8:0];
+//assign s0_wb_sel_o = m0_wb_sel_reg;
+//assign s0_wb_we_o  = m0_wb_we_reg;
+//assign s0_wb_cyc_o = m0_wb_cyc_reg;
+//assign s0_wb_stb_o = m0_wb_stb_reg;
 
-assign s0_wb_rd.wb_dat = s0_wb_dat_i;
-assign s0_wb_rd.wb_ack = s0_wb_ack_i;
-assign s0_wb_rd.wb_err = 1'b0;
+assign s0_wb_dat_o = (m0_wb_tid_reg == 2'b00) ? m0_wb_dat_i_reg : 2'b00;
+assign s0_wb_adr_o = (m0_wb_tid_reg == 2'b00) ? m0_wb_adr_reg : 2'b00;
+assign s0_wb_sel_o = (m0_wb_tid_reg == 2'b00) ? m0_wb_sel_reg : 2'b00;
+assign s0_wb_we_o  = (m0_wb_tid_reg == 2'b00) ? m0_wb_we_reg  : 2'b00;
+assign s0_wb_cyc_o = (m0_wb_tid_reg == 2'b00) ? m0_wb_cyc_reg : 2'b00;
+assign s0_wb_stb_o = (m0_wb_tid_reg == 2'b00) ? m0_wb_stb_reg : 2'b00;
 
-// UART
-assign s1_wb_dat_o = s1_wb_wr.wb_dat;
-assign s1_wb_adr_o = s1_wb_wr.wb_adr[10:0];
-assign s1_wb_sel_o = s1_wb_wr.wb_sel;
-assign s1_wb_we_o  = s1_wb_wr.wb_we;
-assign s1_wb_cyc_o = s1_wb_wr.wb_cyc;
-assign s1_wb_stb_o = s1_wb_wr.wb_stb;
+assign s1_wb_dat_o = (m0_wb_tid_reg == 2'b01) ? m0_wb_dat_i_reg : 2'b00;
+assign s1_wb_adr_o = (m0_wb_tid_reg == 2'b01) ? m0_wb_adr_reg : 2'b00;
+assign s1_wb_sel_o = (m0_wb_tid_reg == 2'b01) ? m0_wb_sel_reg : 2'b00;
+assign s1_wb_we_o  = (m0_wb_tid_reg == 2'b01) ? m0_wb_we_reg  : 2'b00;
+assign s1_wb_cyc_o = (m0_wb_tid_reg == 2'b01) ? m0_wb_cyc_reg : 2'b00;
+assign s1_wb_stb_o = (m0_wb_tid_reg == 2'b01) ? m0_wb_stb_reg : 2'b00;
 
-assign s1_wb_rd.wb_dat = s1_wb_dat_i;
-assign s1_wb_rd.wb_ack = s1_wb_ack_i;
-assign s1_wb_rd.wb_err = 1'b0;
+// assign s2_wb_dat_o = (m0_wb_tid_reg == 2'b10) ? m0_wb_dat_i_reg : 2'b00;
+// assign s2_wb_adr_o = (m0_wb_tid_reg == 2'b10) ? m0_wb_adr_reg : 2'b00;
+// assign s2_wb_sel_o = (m0_wb_tid_reg == 2'b10) ? m0_wb_sel_reg : 2'b00;
+// assign s2_wb_we_o  = (m0_wb_tid_reg == 2'b10) ? m0_wb_we_reg  : 2'b00;
+// assign s2_wb_cyc_o = (m0_wb_tid_reg == 2'b10) ? m0_wb_cyc_reg : 2'b00;
+// assign s2_wb_stb_o = (m0_wb_tid_reg == 2'b10) ? m0_wb_stb_reg : 2'b00;
 
-// TRNG
-assign s2_wb_dat_o = s2_wb_wr.wb_dat;
-assign s2_wb_adr_o = s2_wb_wr.wb_adr[10:0];
-assign s2_wb_sel_o = s2_wb_wr.wb_sel;
-assign s2_wb_we_o  = s2_wb_wr.wb_we;
-assign s2_wb_cyc_o = s2_wb_wr.wb_cyc;
-assign s2_wb_stb_o = s2_wb_wr.wb_stb;
+// assign s3_wb_dat_o = (m0_wb_tid_reg == 2'b11) ? m0_wb_dat_i_reg : 2'b00;
+// assign s3_wb_adr_o = (m0_wb_tid_reg == 2'b11) ? m0_wb_adr_reg : 2'b00;
+// assign s3_wb_sel_o = (m0_wb_tid_reg == 2'b11) ? m0_wb_sel_reg : 2'b00;
+// assign s3_wb_we_o  = (m0_wb_tid_reg == 2'b11) ? m0_wb_we_reg  : 2'b00;
+// assign s3_wb_cyc_o = (m0_wb_tid_reg == 2'b11) ? m0_wb_cyc_reg : 2'b00;
+// assign s3_wb_stb_o = (m0_wb_tid_reg == 2'b11) ? m0_wb_stb_reg : 2'b00;
 
-assign s2_wb_rd.wb_dat = s2_wb_dat_i;
-assign s2_wb_rd.wb_ack = s2_wb_ack_i;
-assign s2_wb_rd.wb_err = 1'b0;
+assign m0_wb_dat_o = s_bus_rd_wb_dat;
+assign m0_wb_ack_o = s_bus_rd_wb_ack;
 
-// SPI
-assign s3_wb_dat_o = s3_wb_wr.wb_dat;
-assign s3_wb_adr_o = s3_wb_wr.wb_adr[10:0];
-assign s3_wb_sel_o = s3_wb_wr.wb_sel;
-assign s3_wb_we_o  = s3_wb_wr.wb_we;
-assign s3_wb_cyc_o = s3_wb_wr.wb_cyc;
-assign s3_wb_stb_o = s3_wb_wr.wb_stb;
+always @(negedge rst_n or posedge clk_i)
+begin
+    if(rst_n == 1'b0) begin
+        // holding_busy    <= 1'b0;
+        m0_wb_dat_i_reg <= 'h0;
+        m0_wb_adr_reg   <= 'h0;
+        m0_wb_sel_reg   <= 'h0;
+        m0_wb_we_reg    <= 'h0;
+        m0_wb_cyc_reg   <= 'h0;
+        m0_wb_stb_reg   <= 'h0;
+        m0_wb_tid_reg   <= 'h0;
 
-assign s3_wb_rd.wb_dat = s3_wb_dat_i;
-assign s3_wb_rd.wb_ack = s3_wb_ack_i;
-assign s3_wb_rd.wb_err = 1'b0;
+        m0_wb_dat_o_reg <= 'h0;
+        m0_wb_ack_reg   <= 'h0;
+        
+    end else begin
+        m0_wb_dat_i_reg <= 'h0;
+        m0_wb_adr_reg   <= 'h0;
+        m0_wb_sel_reg   <= 'h0;
+        m0_wb_we_reg    <= 'h0;
+        m0_wb_cyc_reg   <= 'h0;
+        m0_wb_stb_reg   <= 'h0;
+        m0_wb_tid_reg   <= 'h0;
 
-// Generate Multiplexed Slave Interface based on target Id
-wire [3:0] s_wb_tid = s_bus_wr.wb_tid; // to fix iverilog warning
+        // m0_wb_dat_o_reg <= 'h0;
+        // m0_wb_ack_reg   <= 'h0;
 
-always begin
-    case(s_wb_tid)
-        2'b00: s_bus_rd = s0_wb_rd;
-        2'b01: s_bus_rd = s1_wb_rd;
-        2'b10: s_bus_rd = s2_wb_rd;
-        2'b11: s_bus_rd = s3_wb_rd;
-    endcase
+        if(m0_wb_stb_i && m0_wb_cyc_i && s_bus_rd_wb_ack == 0) begin
+            // holding_busy    <= 1'b1;
+            m0_wb_dat_i_reg <= m0_wb_dat_i;
+            m0_wb_adr_reg   <= {2'b00,m0_wb_adr_i[31:2]};
+            m0_wb_sel_reg   <= m0_wb_sel_i;
+            m0_wb_we_reg    <= m0_wb_we_i;
+            m0_wb_cyc_reg   <= m0_wb_cyc_i;
+            m0_wb_stb_reg   <= m0_wb_stb_i;
+            m0_wb_tid_reg   <= m0_wb_tid_i;
+
+            // m0_wb_dat_o_reg <= s_bus_rd_wb_dat;
+            // m0_wb_ack_reg   <= s_bus_rd_wb_ack;
+        end 
+    end
 end
 
-// Connect Master => Slave
-assign  s0_wb_wr = (s_wb_tid == 2'b00) ? s_bus_wr : 2'b00;
-assign  s1_wb_wr = (s_wb_tid == 2'b01) ? s_bus_wr : 2'b00;
-assign  s2_wb_wr = (s_wb_tid == 2'b10) ? s_bus_wr : 2'b00;
-assign  s3_wb_wr = (s_wb_tid == 2'b11) ? s_bus_wr : 2'b00;
-
-// Stagging FF to break write and read timing path
-wb_stagging u_m_wb_stage(
-    .clk_i            (clk_i),
-    .rst_n            (rst_n),
-
-    // WishBone Input master I/P
-    .m_wb_dat_i      (m0_wb_wr.wb_dat),
-    .m_wb_adr_i      (m0_wb_wr.wb_adr),
-    .m_wb_sel_i      (m0_wb_wr.wb_sel),
-    .m_wb_we_i       (m0_wb_wr.wb_we ),
-    .m_wb_cyc_i      (m0_wb_wr.wb_cyc),
-    .m_wb_stb_i      (m0_wb_wr.wb_stb),
-    .m_wb_tid_i      (m0_wb_wr.wb_tid),
-    .m_wb_dat_o      (m0_wb_rd.wb_dat),
-    .m_wb_ack_o      (m0_wb_rd.wb_ack),
-    .m_wb_err_o      (m0_wb_rd.wb_err),
-
-    // Slave Interface
-    .s_wb_dat_i      (s_bus_rd.wb_dat),
-    .s_wb_ack_i      (s_bus_rd.wb_ack),
-    .s_wb_err_i      (s_bus_rd.wb_err),
-    .s_wb_dat_o      (s_bus_wr.wb_dat),
-    .s_wb_adr_o      (s_bus_wr.wb_adr),
-    .s_wb_sel_o      (s_bus_wr.wb_sel),
-    .s_wb_we_o       (s_bus_wr.wb_we ),
-    .s_wb_cyc_o      (s_bus_wr.wb_cyc),
-    .s_wb_stb_o      (s_bus_wr.wb_stb),
-    .s_wb_tid_o      (s_bus_wr.wb_tid)
-);
-
 endmodule
diff --git a/verilog/rtl/wb_interconnect/wb_signal_reg.sv b/verilog/rtl/wb_interconnect/wb_signal_reg.sv
new file mode 100644
index 0000000..d68156d
--- /dev/null
+++ b/verilog/rtl/wb_interconnect/wb_signal_reg.sv
@@ -0,0 +1,94 @@
+//-----------------------------------------------------------------------------
+// @file      wb_signal_reg.vhd
+//
+// @brief     Register wishbone signals.
+//
+// @details   This logic create a holding FF for Wishbone interface.
+//            This is usefull to break timing issue at interconnect
+//			  
+// @author    Sukru Uzun <sukru.uzun@procenne.com>
+// @date      10.03.2022
+//
+// @todo 	  
+// @warning	  
+//
+// @project   https://github.com/Procenne-Digital-Design/secure-memory.git
+//
+// @revision :
+//    0.1 - 10 March 2022, Sukru Uzun
+//          initial version
+//-----------------------------------------------------------------------------
+
+module wb_signal_reg (
+    input logic	clk_i, 
+    input logic rst_n,
+    
+    // WishBone Input master I/P
+    input   logic [31:0] m_wb_dat_i,
+    input   logic [31:0] m_wb_adr_i,
+    input   logic [3:0]	 m_wb_sel_i,
+    input   logic  	     m_wb_we_i,
+    input   logic  	     m_wb_cyc_i,
+    input   logic  	     m_wb_stb_i,
+    input   logic [1:0]	 m_wb_tid_i,
+    output  logic [31:0] m_wb_dat_o,
+    output  logic		 m_wb_ack_o,
+    output  logic		 m_wb_err_o,
+
+    // Slave Interface
+    input	logic [31:0] s_wb_dat_i,
+    input	logic 	     s_wb_ack_i,
+    input	logic 	     s_wb_err_i,
+    output	logic [31:0] s_wb_dat_o,
+    output	logic [31:0] s_wb_adr_o,
+    output	logic [3:0]	 s_wb_sel_o,
+    output	logic 	     s_wb_we_o,
+    output	logic 	     s_wb_cyc_o,
+    output	logic 	     s_wb_stb_o,
+    output	logic [1:0]	 s_wb_tid_o
+);
+
+logic holding_busy   ; // Indicate Stagging for Free or not
+
+always @(negedge rst_n or posedge clk_i)
+begin
+    if(rst_n == 1'b0) begin
+        holding_busy   <= 1'b0;
+        s_wb_dat_o <= 'h0;
+        s_wb_adr_o <= 'h0;
+        s_wb_sel_o <= 'h0;
+        s_wb_we_o  <= 'h0;
+        s_wb_cyc_o <= 'h0;
+        s_wb_stb_o <= 'h0;
+        s_wb_tid_o <= 'h0;
+        m_wb_dat_o <= 'h0;
+        m_wb_ack_o <= 'h0;
+        m_wb_err_o <= 'h0;
+    end else begin
+        m_wb_dat_o <= s_wb_dat_i;
+        m_wb_ack_o <= s_wb_ack_i;
+        m_wb_err_o <= s_wb_err_i;
+        if(m_wb_stb_i && holding_busy == 0 && m_wb_ack_o == 0) begin
+            holding_busy   <= 1'b1;
+            s_wb_dat_o <= m_wb_dat_i;
+            s_wb_adr_o <= m_wb_adr_i;
+            s_wb_sel_o <= m_wb_sel_i;
+            s_wb_we_o  <= m_wb_we_i;
+            s_wb_cyc_o <= m_wb_cyc_i;
+            s_wb_stb_o <= m_wb_stb_i;
+            s_wb_tid_o <= m_wb_tid_i;
+        end 
+        else if (holding_busy && s_wb_ack_i) begin
+            holding_busy   <= 1'b0;
+            s_wb_dat_o <= 'h0;
+            s_wb_adr_o <= 'h0;
+            s_wb_sel_o <= 'h0;
+            s_wb_we_o  <= 'h0;
+            s_wb_cyc_o <= 'h0;
+            s_wb_stb_o <= 'h0;
+            s_wb_tid_o <= 'h0;
+        end
+    end
+end
+
+endmodule
diff --git a/verilog/rtl/wb_interconnect/wb_stagging.sv b/verilog/rtl/wb_interconnect/wb_stagging.sv
deleted file mode 100644
index 2d0121e..0000000
--- a/verilog/rtl/wb_interconnect/wb_stagging.sv
+++ /dev/null
@@ -1,116 +0,0 @@
-//-----------------------------------------------------------------------------
-// @file      wb_staging.vhd
-//
-// @brief     Register wishbone signals.
-//
-// @details   This logic create a holding FF for Wishbone interface.
-//            This is usefull to break timing issue at interconnect
-//			  
-// @author    Sukru Uzun <sukru.uzun@procenne.com>
-// @date      10.03.2022
-//
-// @todo 	  
-// @warning	  
-//
-// @project   https://github.com/Procenne-Digital-Design/secure-memory.git
-//
-// @revision :
-//    0.1 - 10 March 2022, Sukru Uzun
-//          initial version
-//-----------------------------------------------------------------------------
-
-module wb_stagging (
-    input logic	clk_i, 
-    input logic rst_n,
-    
-    // WishBone Input master I/P
-    input   logic [31:0] m_wbd_dat_i,
-    input   logic [31:0] m_wbd_adr_i,
-    input   logic [3:0]	 m_wbd_sel_i,
-    input   logic  	     m_wbd_we_i,
-    input   logic  	     m_wbd_cyc_i,
-    input   logic  	     m_wbd_stb_i,
-    input   logic [3:0]	 m_wbd_tid_i,
-    output  logic [31:0] m_wbd_dat_o,
-    output  logic		 m_wbd_ack_o,
-    output  logic		 m_wbd_err_o,
-
-    // Slave Interface
-    input	logic [31:0] s_wbd_dat_i,
-    input	logic 	     s_wbd_ack_i,
-    input	logic 	     s_wbd_err_i,
-    output	logic [31:0] s_wbd_dat_o,
-    output	logic [31:0] s_wbd_adr_o,
-    output	logic [3:0]	 s_wbd_sel_o,
-    output	logic 	     s_wbd_we_o,
-    output	logic 	     s_wbd_cyc_o,
-    output	logic 	     s_wbd_stb_o,
-    output	logic [3:0]	 s_wbd_tid_o
-);
-
-logic        holding_busy   ; // Indicate Stagging for Free or not
-logic [31:0] m_wbd_dat_i_ff ; // Flopped vesion of m_wbd_dat_i
-logic [31:0] m_wbd_adr_i_ff ; // Flopped vesion of m_wbd_adr_i
-logic [3:0]  m_wbd_sel_i_ff ; // Flopped vesion of m_wbd_sel_i
-logic        m_wbd_we_i_ff  ; // Flopped vesion of m_wbd_we_i
-logic        m_wbd_cyc_i_ff ; // Flopped vesion of m_wbd_cyc_i
-logic        m_wbd_stb_i_ff ; // Flopped vesion of m_wbd_stb_i
-logic [3:0]  m_wbd_tid_i_ff ; // Flopped vesion of m_wbd_tid_i
-logic [31:0] s_wbd_dat_i_ff ; // Flopped vesion of s_wbd_dat_i
-logic        s_wbd_ack_i_ff ; // Flopped vesion of s_wbd_ack_i
-logic        s_wbd_err_i_ff ; // Flopped vesion of s_wbd_err_i
-
-assign s_wbd_dat_o = m_wbd_dat_i_ff;
-assign s_wbd_adr_o = m_wbd_adr_i_ff;
-assign s_wbd_sel_o = m_wbd_sel_i_ff;
-assign s_wbd_we_o  = m_wbd_we_i_ff;
-assign s_wbd_cyc_o = m_wbd_cyc_i_ff;
-assign s_wbd_stb_o = m_wbd_stb_i_ff;
-assign s_wbd_tid_o = m_wbd_tid_i_ff;
-
-assign m_wbd_dat_o = s_wbd_dat_i_ff;
-assign m_wbd_ack_o = s_wbd_ack_i_ff;
-assign m_wbd_err_o = s_wbd_err_i_ff;
-
-always @(negedge rst_n or posedge clk_i)
-begin
-    if(rst_n == 1'b0) begin
-        holding_busy   <= 1'b0;
-        m_wbd_dat_i_ff <= 'h0;
-        m_wbd_adr_i_ff <= 'h0;
-        m_wbd_sel_i_ff <= 'h0;
-        m_wbd_we_i_ff  <= 'h0;
-        m_wbd_cyc_i_ff <= 'h0;
-        m_wbd_stb_i_ff <= 'h0;
-        m_wbd_tid_i_ff <= 'h0;
-        s_wbd_dat_i_ff <= 'h0;
-        s_wbd_ack_i_ff <= 'h0;
-        s_wbd_err_i_ff <= 'h0;
-    end else begin
-        s_wbd_dat_i_ff <= s_wbd_dat_i;
-        s_wbd_ack_i_ff <= s_wbd_ack_i;
-        s_wbd_err_i_ff <= s_wbd_err_i;
-        if(m_wbd_stb_i && holding_busy == 0 && m_wbd_ack_o == 0) begin
-            holding_busy   <= 1'b1;
-            m_wbd_dat_i_ff <= m_wbd_dat_i;
-            m_wbd_adr_i_ff <= m_wbd_adr_i;
-            m_wbd_sel_i_ff <= m_wbd_sel_i;
-            m_wbd_we_i_ff  <= m_wbd_we_i;
-            m_wbd_cyc_i_ff <= m_wbd_cyc_i;
-            m_wbd_stb_i_ff <= m_wbd_stb_i;
-            m_wbd_tid_i_ff <= m_wbd_tid_i;
-        end 
-        else if (holding_busy && s_wbd_ack_i) begin
-            holding_busy   <= 1'b0;
-            m_wbd_dat_i_ff <= 'h0;
-            m_wbd_adr_i_ff <= 'h0;
-            m_wbd_sel_i_ff <= 'h0;
-            m_wbd_we_i_ff  <= 'h0;
-            m_wbd_cyc_i_ff <= 'h0;
-            m_wbd_stb_i_ff <= 'h0;
-            m_wbd_tid_i_ff <= 'h0;
-        end
-    end
-end
-
-endmodule
