fix soc to pass dv test
diff --git a/openlane/user_proj/config.tcl b/openlane/user_proj/config.tcl
index 4d4f08c..f031102 100755
--- a/openlane/user_proj/config.tcl
+++ b/openlane/user_proj/config.tcl
@@ -39,7 +39,7 @@
         $script_dir/src/wb_led.v \
         $script_dir/src/timer_wb.v"
 
-#set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/includes]
+set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/src]
 
 set ::env(CLOCK_PORT) "wb_clk_i"
 set ::env(CLOCK_PERIOD) 10
diff --git a/openlane/user_proj/src/simpleuart.v b/openlane/user_proj/src/simpleuart.v
index 280f9b2..57d4a23 100644
--- a/openlane/user_proj/src/simpleuart.v
+++ b/openlane/user_proj/src/simpleuart.v
@@ -20,8 +20,8 @@
  *  SPDX-License-Identifier: ISC
  */
 
-module simpleuart_wb # (
-    parameter BASE_ADR = 32'h4000_1000,
+module simpleuartA_wb # (
+    parameter BASE_ADR = 32'h 2000_0000,
     parameter CLK_DIV = 8'h00,
     parameter DATA = 8'h04,
     parameter CONFIG = 8'h08
@@ -44,31 +44,31 @@
     input  ser_rx
 
 );
-    wire [31:0] simpleuart_reg_div_do;
-    wire [31:0] simpleuart_reg_dat_do;
-    wire [31:0] simpleuart_reg_cfg_do;
+    wire [31:0] simpleuartA_reg_div_do;
+    wire [31:0] simpleuartA_reg_dat_do;
+    wire [31:0] simpleuartA_reg_cfg_do;
     wire reg_dat_wait;
 
     wire resetn = ~wb_rst_i;
     wire valid = wb_stb_i && wb_cyc_i; 
-    wire simpleuart_reg_div_sel = valid && (wb_adr_i == (BASE_ADR | CLK_DIV));
-    wire simpleuart_reg_dat_sel = valid && (wb_adr_i == (BASE_ADR | DATA));
-    wire simpleuart_reg_cfg_sel = valid && (wb_adr_i == (BASE_ADR | CONFIG));
+    wire simpleuartA_reg_div_sel = valid && (wb_adr_i == (BASE_ADR | CLK_DIV));
+    wire simpleuartA_reg_dat_sel = valid && (wb_adr_i == (BASE_ADR | DATA));
+    wire simpleuartA_reg_cfg_sel = valid && (wb_adr_i == (BASE_ADR | CONFIG));
 
-    wire [3:0] reg_div_we = simpleuart_reg_div_sel ? (wb_sel_i & {4{wb_we_i}}): 4'b 0000; 
-    wire reg_dat_we = simpleuart_reg_dat_sel ? (wb_sel_i[0] & wb_we_i): 1'b 0;      // simpleuart_reg_dat_sel ? mem_wstrb[0] : 1'b 0
-    wire reg_cfg_we = simpleuart_reg_cfg_sel ? (wb_sel_i[0] & wb_we_i): 1'b 0; 
+    wire [3:0] reg_div_we = simpleuartA_reg_div_sel ? (wb_sel_i & {4{wb_we_i}}): 4'b 0000; 
+    wire reg_dat_we = simpleuartA_reg_dat_sel ? (wb_sel_i[0] & wb_we_i): 1'b 0;      // simpleuartA_reg_dat_sel ? mem_wstrb[0] : 1'b 0
+    wire reg_cfg_we = simpleuartA_reg_cfg_sel ? (wb_sel_i[0] & wb_we_i): 1'b 0; 
 
     wire [31:0] mem_wdata = wb_dat_i;
-    wire reg_dat_re = simpleuart_reg_dat_sel && !wb_sel_i && ~wb_we_i; // read_enable
+    wire reg_dat_re = simpleuartA_reg_dat_sel && !wb_sel_i && ~wb_we_i; // read_enable
 
-    assign wb_dat_o = simpleuart_reg_div_sel ? simpleuart_reg_div_do:
-		      simpleuart_reg_cfg_sel ? simpleuart_reg_cfg_do:
-					       simpleuart_reg_dat_do;
-    assign wb_ack_o = (simpleuart_reg_div_sel || simpleuart_reg_dat_sel
-			|| simpleuart_reg_cfg_sel) && (!reg_dat_wait);
+    assign wb_dat_o = simpleuartA_reg_div_sel ? simpleuartA_reg_div_do:
+		      simpleuartA_reg_cfg_sel ? simpleuartA_reg_cfg_do:
+					       simpleuartA_reg_dat_do;
+    assign wb_ack_o = (simpleuartA_reg_div_sel || simpleuartA_reg_dat_sel
+			|| simpleuartA_reg_cfg_sel) && (!reg_dat_wait);
     
-    simpleuart simpleuart (
+    simpleuartA simpleuartA (
         .clk    (wb_clk_i),
         .resetn (resetn),
 
@@ -78,22 +78,22 @@
 
         .reg_div_we  (reg_div_we), 
         .reg_div_di  (mem_wdata),
-        .reg_div_do  (simpleuart_reg_div_do),
+        .reg_div_do  (simpleuartA_reg_div_do),
 
         .reg_cfg_we  (reg_cfg_we), 
         .reg_cfg_di  (mem_wdata),
-        .reg_cfg_do  (simpleuart_reg_cfg_do),
+        .reg_cfg_do  (simpleuartA_reg_cfg_do),
 
         .reg_dat_we  (reg_dat_we),
         .reg_dat_re  (reg_dat_re),
         .reg_dat_di  (mem_wdata),
-        .reg_dat_do  (simpleuart_reg_dat_do),
+        .reg_dat_do  (simpleuartA_reg_dat_do),
         .reg_dat_wait(reg_dat_wait)
     );
 
 endmodule
 
-module simpleuart (
+module simpleuartA (
     input clk,
     input resetn,
 
diff --git a/openlane/user_proj/src/soc.v b/openlane/user_proj/src/soc.v
index c50d0ac..afda746 100644
--- a/openlane/user_proj/src/soc.v
+++ b/openlane/user_proj/src/soc.v
@@ -9,8 +9,11 @@
   inout vccd1,	// User area 1 1.8V supply
   inout vssd1,	// User area 1 digital ground
 `endif
-  input clk_i,
-  input rst_i,
+  input clk,
+  input rst,
+
+  input wb_clk,
+  input wb_rst,
 
   output LED,
   input MCU_UART_TX,
@@ -22,14 +25,14 @@
   output jtag_tdo,
   input jtag_tck,
 
-  input mprj_ack_i,
-	input [31:0] mprj_dat_i,
-  output mprj_cyc_o,
-	output mprj_stb_o,
-	output mprj_we_o,
-	output [3:0] mprj_sel_o,
-	output [31:0] mprj_adr_o,
+  output mprj_ack_o,
 	output [31:0] mprj_dat_o,
+	input [31:0] mprj_dat_i,
+  input mprj_cyc_i,
+	input mprj_stb_i,
+	input mprj_we_i,
+	input [3:0] mprj_sel_i,
+	input [31:0] mprj_adr_i,
 
   output [3:0] o_wmask0,
   output [8:0] o_waddr0,
@@ -37,241 +40,30 @@
   input [31:0] i_dout0,
   output o_web0,
   output o_csb0,
-  output [8:0] o_addr1,
-  input [31:0] i_dout1,
-  output o_csb1,
 
   output [3:0] o_wmask0_1,
   output [8:0] o_waddr0_1,
   output [31:0] o_din0_1,
   input [31:0] i_dout0_1,
   output o_web0_1,
-  output o_csb0_1,
-  output [8:0] o_addr1_1,
-  input [31:0] i_dout1_1,
-  output o_csb1_1
+  output o_csb0_1
 );
 
-/***************************************************************************/
-// THE BASE ADDRESSES SHOULD MATCH yb_interconnect.yml
+`include "wb_interconnect.vh"
 parameter ROM_BASE_ADDRESS =    32'h3000_0000;
-parameter RAM_BASE_ADDRESS =    32'h3000_3000;
-parameter TIMER_BASE_ADDRESS =  32'h4000_0000;
-parameter UART_BASE_ADR =       32'h4000_1000;
-parameter LED_BASE_ADR =        32'h4000_2000;
-//`include "openlane_test/wb_interconnect.vh"
-// THIS FILE IS AUTOGENERATED BY wb_intercon_gen
-// ANY MANUAL CHANGES WILL BE LOST
-wire [31:0] wb_m2s_cpu0_ibus_adr;
-wire [31:0] wb_m2s_cpu0_ibus_dat;
-wire  [3:0] wb_m2s_cpu0_ibus_sel;
-wire        wb_m2s_cpu0_ibus_we;
-wire        wb_m2s_cpu0_ibus_cyc;
-wire        wb_m2s_cpu0_ibus_stb;
-wire  [2:0] wb_m2s_cpu0_ibus_cti;
-wire  [1:0] wb_m2s_cpu0_ibus_bte;
-wire [31:0] wb_s2m_cpu0_ibus_dat;
-wire        wb_s2m_cpu0_ibus_ack;
-wire        wb_s2m_cpu0_ibus_err;
-wire        wb_s2m_cpu0_ibus_rty;
-wire [31:0] wb_m2s_cpu0_dbus_adr;
-wire [31:0] wb_m2s_cpu0_dbus_dat;
-wire  [3:0] wb_m2s_cpu0_dbus_sel;
-wire        wb_m2s_cpu0_dbus_we;
-wire        wb_m2s_cpu0_dbus_cyc;
-wire        wb_m2s_cpu0_dbus_stb;
-wire  [2:0] wb_m2s_cpu0_dbus_cti;
-wire  [1:0] wb_m2s_cpu0_dbus_bte;
-wire [31:0] wb_s2m_cpu0_dbus_dat;
-wire        wb_s2m_cpu0_dbus_ack;
-wire        wb_s2m_cpu0_dbus_err;
-wire        wb_s2m_cpu0_dbus_rty;
-wire [31:0] wb_m2s_mgmt_adr;
-wire [31:0] wb_m2s_mgmt_dat;
-wire  [3:0] wb_m2s_mgmt_sel;
-wire        wb_m2s_mgmt_we;
-wire        wb_m2s_mgmt_cyc;
-wire        wb_m2s_mgmt_stb;
-wire  [2:0] wb_m2s_mgmt_cti;
-wire  [1:0] wb_m2s_mgmt_bte;
-wire [31:0] wb_s2m_mgmt_dat;
-wire        wb_s2m_mgmt_ack;
-wire        wb_s2m_mgmt_err;
-wire        wb_s2m_mgmt_rty;
-wire [31:0] wb_m2s_timer0_adr;
-wire [31:0] wb_m2s_timer0_dat;
-wire  [3:0] wb_m2s_timer0_sel;
-wire        wb_m2s_timer0_we;
-wire        wb_m2s_timer0_cyc;
-wire        wb_m2s_timer0_stb;
-wire  [2:0] wb_m2s_timer0_cti;
-wire  [1:0] wb_m2s_timer0_bte;
-wire [31:0] wb_s2m_timer0_dat;
-wire        wb_s2m_timer0_ack;
-wire        wb_s2m_timer0_err;
-wire        wb_s2m_timer0_rty;
-wire [31:0] wb_m2s_uart0_adr;
-wire [31:0] wb_m2s_uart0_dat;
-wire  [3:0] wb_m2s_uart0_sel;
-wire        wb_m2s_uart0_we;
-wire        wb_m2s_uart0_cyc;
-wire        wb_m2s_uart0_stb;
-wire  [2:0] wb_m2s_uart0_cti;
-wire  [1:0] wb_m2s_uart0_bte;
-wire [31:0] wb_s2m_uart0_dat;
-wire        wb_s2m_uart0_ack;
-wire        wb_s2m_uart0_err;
-wire        wb_s2m_uart0_rty;
-wire [31:0] wb_m2s_led0_adr;
-wire [31:0] wb_m2s_led0_dat;
-wire  [3:0] wb_m2s_led0_sel;
-wire        wb_m2s_led0_we;
-wire        wb_m2s_led0_cyc;
-wire        wb_m2s_led0_stb;
-wire  [2:0] wb_m2s_led0_cti;
-wire  [1:0] wb_m2s_led0_bte;
-wire [31:0] wb_s2m_led0_dat;
-wire        wb_s2m_led0_ack;
-wire        wb_s2m_led0_err;
-wire        wb_s2m_led0_rty;
-wire [31:0] wb_m2s_cpu0_rom_adr;
-wire [31:0] wb_m2s_cpu0_rom_dat;
-wire  [3:0] wb_m2s_cpu0_rom_sel;
-wire        wb_m2s_cpu0_rom_we;
-wire        wb_m2s_cpu0_rom_cyc;
-wire        wb_m2s_cpu0_rom_stb;
-wire  [2:0] wb_m2s_cpu0_rom_cti;
-wire  [1:0] wb_m2s_cpu0_rom_bte;
-wire [31:0] wb_s2m_cpu0_rom_dat;
-wire        wb_s2m_cpu0_rom_ack;
-wire        wb_s2m_cpu0_rom_err;
-wire        wb_s2m_cpu0_rom_rty;
-wire [31:0] wb_m2s_cpu0_ram_adr;
-wire [31:0] wb_m2s_cpu0_ram_dat;
-wire  [3:0] wb_m2s_cpu0_ram_sel;
-wire        wb_m2s_cpu0_ram_we;
-wire        wb_m2s_cpu0_ram_cyc;
-wire        wb_m2s_cpu0_ram_stb;
-wire  [2:0] wb_m2s_cpu0_ram_cti;
-wire  [1:0] wb_m2s_cpu0_ram_bte;
-wire [31:0] wb_s2m_cpu0_ram_dat;
-wire        wb_s2m_cpu0_ram_ack;
-wire        wb_s2m_cpu0_ram_err;
-wire        wb_s2m_cpu0_ram_rty;
+parameter RAM_BASE_ADDRESS =    32'h3000_1000;
+parameter TIMER_BASE_ADDRESS =  32'h30ff_ff00;
+parameter UART_BASE_ADR =       32'h30ff_fe00;
+parameter LED_BASE_ADR =        32'h30ff_fd00;
 
-wb_interconnect wb_intercon0(
-  .wb_clk_i           (wb_clk),
-  .wb_rst_i           (wb_rst),
-  .wb_cpu0_ibus_adr_i (wb_m2s_cpu0_ibus_adr),
-  .wb_cpu0_ibus_dat_i (wb_m2s_cpu0_ibus_dat),
-  .wb_cpu0_ibus_sel_i (wb_m2s_cpu0_ibus_sel),
-  .wb_cpu0_ibus_we_i  (wb_m2s_cpu0_ibus_we),
-  .wb_cpu0_ibus_cyc_i (wb_m2s_cpu0_ibus_cyc),
-  .wb_cpu0_ibus_stb_i (wb_m2s_cpu0_ibus_stb),
-  .wb_cpu0_ibus_cti_i (wb_m2s_cpu0_ibus_cti),
-  .wb_cpu0_ibus_bte_i (wb_m2s_cpu0_ibus_bte),
-  .wb_cpu0_ibus_dat_o (wb_s2m_cpu0_ibus_dat),
-  .wb_cpu0_ibus_ack_o (wb_s2m_cpu0_ibus_ack),
-  .wb_cpu0_ibus_err_o (wb_s2m_cpu0_ibus_err),
-  .wb_cpu0_ibus_rty_o (wb_s2m_cpu0_ibus_rty),
-  .wb_cpu0_dbus_adr_i (wb_m2s_cpu0_dbus_adr),
-  .wb_cpu0_dbus_dat_i (wb_m2s_cpu0_dbus_dat),
-  .wb_cpu0_dbus_sel_i (wb_m2s_cpu0_dbus_sel),
-  .wb_cpu0_dbus_we_i  (wb_m2s_cpu0_dbus_we),
-  .wb_cpu0_dbus_cyc_i (wb_m2s_cpu0_dbus_cyc),
-  .wb_cpu0_dbus_stb_i (wb_m2s_cpu0_dbus_stb),
-  .wb_cpu0_dbus_cti_i (wb_m2s_cpu0_dbus_cti),
-  .wb_cpu0_dbus_bte_i (wb_m2s_cpu0_dbus_bte),
-  .wb_cpu0_dbus_dat_o (wb_s2m_cpu0_dbus_dat),
-  .wb_cpu0_dbus_ack_o (wb_s2m_cpu0_dbus_ack),
-  .wb_cpu0_dbus_err_o (wb_s2m_cpu0_dbus_err),
-  .wb_cpu0_dbus_rty_o (wb_s2m_cpu0_dbus_rty),
-  .wb_mgmt_adr_i      (wb_m2s_mgmt_adr),
-  .wb_mgmt_dat_i      (wb_m2s_mgmt_dat),
-  .wb_mgmt_sel_i      (wb_m2s_mgmt_sel),
-  .wb_mgmt_we_i       (wb_m2s_mgmt_we),
-  .wb_mgmt_cyc_i      (wb_m2s_mgmt_cyc),
-  .wb_mgmt_stb_i      (wb_m2s_mgmt_stb),
-  .wb_mgmt_cti_i      (wb_m2s_mgmt_cti),
-  .wb_mgmt_bte_i      (wb_m2s_mgmt_bte),
-  .wb_mgmt_dat_o      (wb_s2m_mgmt_dat),
-  .wb_mgmt_ack_o      (wb_s2m_mgmt_ack),
-  .wb_mgmt_err_o      (wb_s2m_mgmt_err),
-  .wb_mgmt_rty_o      (wb_s2m_mgmt_rty),
-  .wb_timer0_adr_o    (wb_m2s_timer0_adr),
-  .wb_timer0_dat_o    (wb_m2s_timer0_dat),
-  .wb_timer0_sel_o    (wb_m2s_timer0_sel),
-  .wb_timer0_we_o     (wb_m2s_timer0_we),
-  .wb_timer0_cyc_o    (wb_m2s_timer0_cyc),
-  .wb_timer0_stb_o    (wb_m2s_timer0_stb),
-  .wb_timer0_cti_o    (wb_m2s_timer0_cti),
-  .wb_timer0_bte_o    (wb_m2s_timer0_bte),
-  .wb_timer0_dat_i    (wb_s2m_timer0_dat),
-  .wb_timer0_ack_i    (wb_s2m_timer0_ack),
-  .wb_timer0_err_i    (wb_s2m_timer0_err),
-  .wb_timer0_rty_i    (wb_s2m_timer0_rty),
-  .wb_uart0_adr_o     (wb_m2s_uart0_adr),
-  .wb_uart0_dat_o     (wb_m2s_uart0_dat),
-  .wb_uart0_sel_o     (wb_m2s_uart0_sel),
-  .wb_uart0_we_o      (wb_m2s_uart0_we),
-  .wb_uart0_cyc_o     (wb_m2s_uart0_cyc),
-  .wb_uart0_stb_o     (wb_m2s_uart0_stb),
-  .wb_uart0_cti_o     (wb_m2s_uart0_cti),
-  .wb_uart0_bte_o     (wb_m2s_uart0_bte),
-  .wb_uart0_dat_i     (wb_s2m_uart0_dat),
-  .wb_uart0_ack_i     (wb_s2m_uart0_ack),
-  .wb_uart0_err_i     (wb_s2m_uart0_err),
-  .wb_uart0_rty_i     (wb_s2m_uart0_rty),
-  .wb_led0_adr_o      (wb_m2s_led0_adr),
-  .wb_led0_dat_o      (wb_m2s_led0_dat),
-  .wb_led0_sel_o      (wb_m2s_led0_sel),
-  .wb_led0_we_o       (wb_m2s_led0_we),
-  .wb_led0_cyc_o      (wb_m2s_led0_cyc),
-  .wb_led0_stb_o      (wb_m2s_led0_stb),
-  .wb_led0_cti_o      (wb_m2s_led0_cti),
-  .wb_led0_bte_o      (wb_m2s_led0_bte),
-  .wb_led0_dat_i      (wb_s2m_led0_dat),
-  .wb_led0_ack_i      (wb_s2m_led0_ack),
-  .wb_led0_err_i      (wb_s2m_led0_err),
-  .wb_led0_rty_i      (wb_s2m_led0_rty),
-  .wb_cpu0_rom_adr_o  (wb_m2s_cpu0_rom_adr),
-  .wb_cpu0_rom_dat_o  (wb_m2s_cpu0_rom_dat),
-  .wb_cpu0_rom_sel_o  (wb_m2s_cpu0_rom_sel),
-  .wb_cpu0_rom_we_o   (wb_m2s_cpu0_rom_we),
-  .wb_cpu0_rom_cyc_o  (wb_m2s_cpu0_rom_cyc),
-  .wb_cpu0_rom_stb_o  (wb_m2s_cpu0_rom_stb),
-  .wb_cpu0_rom_cti_o  (wb_m2s_cpu0_rom_cti),
-  .wb_cpu0_rom_bte_o  (wb_m2s_cpu0_rom_bte),
-  .wb_cpu0_rom_dat_i  (wb_s2m_cpu0_rom_dat),
-  .wb_cpu0_rom_ack_i  (wb_s2m_cpu0_rom_ack),
-  .wb_cpu0_rom_err_i  (wb_s2m_cpu0_rom_err),
-  .wb_cpu0_rom_rty_i  (wb_s2m_cpu0_rom_rty),
-  .wb_cpu0_ram_adr_o  (wb_m2s_cpu0_ram_adr),
-  .wb_cpu0_ram_dat_o  (wb_m2s_cpu0_ram_dat),
-  .wb_cpu0_ram_sel_o  (wb_m2s_cpu0_ram_sel),
-  .wb_cpu0_ram_we_o   (wb_m2s_cpu0_ram_we),
-  .wb_cpu0_ram_cyc_o  (wb_m2s_cpu0_ram_cyc),
-  .wb_cpu0_ram_stb_o  (wb_m2s_cpu0_ram_stb),
-  .wb_cpu0_ram_cti_o  (wb_m2s_cpu0_ram_cti),
-  .wb_cpu0_ram_bte_o  (wb_m2s_cpu0_ram_bte),
-  .wb_cpu0_ram_dat_i  (wb_s2m_cpu0_ram_dat),
-  .wb_cpu0_ram_ack_i  (wb_s2m_cpu0_ram_ack),
-  .wb_cpu0_ram_err_i  (wb_s2m_cpu0_ram_err),
-  .wb_cpu0_ram_rty_i  (wb_s2m_cpu0_ram_rty)
-);
-/***************************************************************************/
-
-assign mprj_adr_o = wb_m2s_mgmt_adr;
-assign mprj_dat_o = wb_m2s_mgmt_dat;
-assign mprj_sel_o = wb_m2s_mgmt_sel;
-assign mprj_we_o = wb_m2s_mgmt_we;
-assign mprj_cyc_o = wb_m2s_mgmt_cyc;
-assign mprj_stb_o = wb_m2s_mgmt_stb;
-assign wb_s2m_mgmt_dat = mprj_dat_i;
-assign wb_s2m_mgmt_ack = mprj_ack_i;
-
-wire wb_rst = rst_i;
-wire wb_clk = clk_i;
+assign wb_m2s_mgmt_adr = mprj_adr_i;
+assign wb_m2s_mgmt_dat = mprj_dat_i;
+assign wb_m2s_mgmt_sel = mprj_sel_i;
+assign wb_m2s_mgmt_we = mprj_we_i;
+assign wb_m2s_mgmt_cyc = mprj_cyc_i;
+assign wb_m2s_mgmt_stb = mprj_stb_i;
+assign mprj_dat_o = wb_s2m_mgmt_dat;
+assign mprj_ack_o = wb_s2m_mgmt_ack;
 
 `ifdef USE_MEMRAM
 wb_ram cpu0_ram (
@@ -329,17 +121,12 @@
   .wbs_stb_i(wb_m2s_cpu0_ram_stb),
   .wbs_dat_o(wb_s2m_cpu0_ram_dat),
   .wbs_ack_o(wb_s2m_cpu0_ram_ack),
-  .ram_clk0(wb_clk),
   .ram_csb0(o_csb0),
   .ram_web0(o_web0),
   .ram_wmask0(o_wmask0),
   .ram_addr0(o_waddr0),
   .ram_din0(o_din0),
-  .ram_dout0(i_dout0),
-  .ram_clk1(wb_clk),
-  .ram_csb1(o_csb1),
-  .ram_addr1(o_addr1),
-  .ram_dout1(i_dout1)
+  .ram_dout0(i_dout0)
 );
 wb_openram_wrapper #(
   .BASE_ADDR(ROM_BASE_ADDRESS),
@@ -359,17 +146,12 @@
   .wbs_stb_i(wb_m2s_cpu0_rom_stb),
   .wbs_dat_o(wb_s2m_cpu0_rom_dat),
   .wbs_ack_o(wb_s2m_cpu0_rom_ack),
-  .ram_clk0(wb_clk),
   .ram_csb0(o_csb0_1),
   .ram_web0(o_web0_1),
   .ram_wmask0(o_wmask0_1),
   .ram_addr0(o_waddr0_1),
   .ram_din0(o_din0_1),
-  .ram_dout0(i_dout0_1),
-  .ram_clk1(wb_clk),
-  .ram_csb1(o_csb1_1),
-  .ram_addr1(o_addr1_1),
-  .ram_dout1(i_dout1_1)
+  .ram_dout0(i_dout0_1)
 );
 `endif //USE_MEMRAM
 
@@ -397,7 +179,9 @@
 
 // Uart for console logging
 `ifndef USE_OBSOLETE_UART
-simpleuart_wb simpleuart (
+simpleuartA_wb #(
+  .BASE_ADR(UART_BASE_ADR)
+) simpleuartA0 (
   .wb_clk_i(wb_clk),
   .wb_rst_i(wb_rst),
   .wb_adr_i(wb_m2s_uart0_adr),      
@@ -476,8 +260,8 @@
   .vssd1(vssd1),	// User area 1 digital ground
 `endif
 */
-  .clk(wb_clk),
-  .reset(wb_rst),
+  .clk(clk),
+  .reset(rst),
 
   .timerInterrupt(timer_interrupt),
   .externalInterrupt(1'b0),
diff --git a/openlane/user_proj/src/user_proj.v b/openlane/user_proj/src/user_proj.v
index 5b14c17..7af1f78 100644
--- a/openlane/user_proj/src/user_proj.v
+++ b/openlane/user_proj/src/user_proj.v
@@ -42,6 +42,8 @@
     inout vccd1,	// User area 1 1.8V supply
     inout vssd1,	// User area 1 digital ground
 `endif
+    input clk_i,
+    input rst_i,
 
     // Wishbone Slave ports (WB MI A)
     input wb_clk_i,
@@ -75,9 +77,6 @@
     input [31:0] i_dout0,
     output o_web0,
     output o_csb0,
-    output [8:0] o_addr1,
-    input [31:0] i_dout1,
-    output o_csb1,
 
     // SRAM1
     output [3:0] o_wmask0_1,
@@ -85,10 +84,7 @@
     output [31:0] o_din0_1,
     input [31:0] i_dout0_1,
     output o_web0_1,
-    output o_csb0_1,
-    output [8:0] o_addr1_1,
-    input [31:0] i_dout1_1,
-    output o_csb1_1
+    output o_csb0_1
 );
 
 //assign io_oeb = 0;
@@ -99,87 +95,79 @@
 */
 assign irq = 3'b0;
 
-wire ser_rx;
+// ser_rx;in
 assign io_oeb[12] = 1'b1;
-assign ser_rx = io_in[12];
 
-wire ser_tx;
+// ser_tx;out
 assign io_oeb[13] = 1'b0;
-assign io_out[13] = ser_tx;
 
-wire jtag_trstb;
+// srst;in
+assign io_oeb[19] = 1'b1;
+
+// jtag_trstb;in
 assign io_oeb[20] = 1'b1;
-assign jtag_trstb = io_in[20];
 
-wire jtag_tms;
+// jtag_tms;in
 assign io_oeb[21] = 1'b1;
-assign jtag_tms = io_in[21];
 
-wire jtag_tdo;
+// jtag_tdo;out
 assign io_oeb[22] = 1'b0;
-assign io_out[22] = jtag_tdo;
 
-wire jtag_tdi;
+// jtag_tdi;in
 assign io_oeb[23] = 1'b1;
-assign jtag_tdi = io_in[23];
 
-wire jtag_tck;
+//  jtag_tck;in
 assign io_oeb[24] = 1'b1;
-assign jtag_tck = io_in[24];
 
-wire led;
+// led;out
 assign io_oeb[25] = 1'b0;
-assign io_out[25] = led;
 
 soc soc(
 `ifdef USE_POWER_PINS
     .vccd1(vccd1),	// User area 1 1.8V power
     .vssd1(vssd1),	// User area 1 digital ground
 `endif
-    .clk_i(wb_clk_i),
-    .rst_i(wb_rst_i),
+    .clk(clk_i),
+    .rst(rst_i | ~io_oeb[19]),
 
-    .LED(led),
-    .MCU_UART_TX(ser_tx),
-    .MCU_UART_RX(ser_rx),
+    .wb_clk(wb_clk_i),
+    .wb_rst(wb_rst_i),
 
-    .jtag_trst(~jtag_trstb),
-    .jtag_tms(jtag_tms),
-    .jtag_tdi(jtag_tdi),
-    .jtag_tdo(jtag_tdo),
-    .jtag_tck(jtag_tck),
+    .LED(io_out[25]),
+    .MCU_UART_TX(io_out[13]),
+    .MCU_UART_RX(io_in[12]),
+
+    .jtag_trst(~io_in[20]),
+    .jtag_tms(io_in[21]),
+    .jtag_tdi(io_in[23]),
+    .jtag_tdo(io_out[22]),
+    .jtag_tck(io_in[24]),
 
     // User Project Slave ports (WB MI A)
-    .mprj_cyc_o(wbs_cyc_i),
-    .mprj_stb_o(wbs_stb_i),
-    .mprj_we_o(wbs_we_i),
-    .mprj_sel_o(wbs_sel_i),
-    .mprj_adr_o(wbs_adr_i),
-    .mprj_dat_o(wbs_dat_i),
-    .mprj_ack_i(wbs_ack_o),
-    .mprj_dat_i(wbs_dat_o),
+    .mprj_cyc_i(wbs_cyc_i),
+    .mprj_stb_i(wbs_stb_i),
+    .mprj_we_i(wbs_we_i),
+    .mprj_sel_i(wbs_sel_i),
+    .mprj_adr_i(wbs_adr_i),
+    .mprj_dat_i(wbs_dat_i),
+    .mprj_ack_o(wbs_ack_o),
+    .mprj_dat_o(wbs_dat_o),
 
     // SRAM
     .o_wmask0(o_wmask0),
     .o_waddr0(o_waddr0),
     .o_din0(o_din0),
     .i_dout0(i_dout0),
-    .o_addr1(o_addr1),
-    .i_dout1(i_dout1),
     .o_web0(o_web0),
     .o_csb0(o_csb0),
-    .o_csb1(o_csb1),
 
     // SRAM1
     .o_wmask0_1(o_wmask0_1),
     .o_waddr0_1(o_waddr0_1),
     .o_din0_1(o_din0_1),
     .i_dout0_1(i_dout0_1),
-    .o_addr1_1(o_addr1_1),
-    .i_dout1_1(i_dout1_1),
     .o_web0_1(o_web0_1),
-    .o_csb0_1(o_csb0_1),
-    .o_csb1_1(o_csb1_1)
+    .o_csb0_1(o_csb0_1)
 );
 
 endmodule
diff --git a/openlane/user_proj/src/wb_arbiter.v b/openlane/user_proj/src/wb_arbiter.v
index 02a7deb..124fa1e 100644
--- a/openlane/user_proj/src/wb_arbiter.v
+++ b/openlane/user_proj/src/wb_arbiter.v
@@ -25,7 +25,7 @@
 module wb_arbiter
  #(parameter dw = 32,
    parameter aw = 32,
-   parameter num_masters = 0)
+   parameter num_masters = 1)
   (
 `ifdef USE_POWER_PINS
     inout vccd1,	// User area 1 1.8V supply
@@ -91,7 +91,12 @@
    arbiter
      #(.NUM_PORTS (num_masters))
    arbiter0
-     (.clk (wb_clk_i),
+     (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+      .clk (wb_clk_i),
       .rst (wb_rst_i),
       .request (wbm_cyc_i),
       .grant (grant),
diff --git a/openlane/user_proj/src/wb_interconnect.v b/openlane/user_proj/src/wb_interconnect.v
index 9bed0be..9533346 100644
--- a/openlane/user_proj/src/wb_interconnect.v
+++ b/openlane/user_proj/src/wb_interconnect.v
@@ -1,8 +1,25 @@
-// THIS FILE IS AUTOGENERATED BY wb_intercon_gen
+// THIS FILE IS AUTOGENERATED BY wb_interconA_gen
 // ANY MANUAL CHANGES WILL BE LOST
-module wb_interconnect
-   (input         wb_clk_i,
+module wb_interconA
+   (
+`ifdef USE_POWER_PINS
+    inout vccd1,	// User area 1 1.8V supply
+    inout vssd1,	// User area 1 digital ground
+`endif
+    input         wb_clk_i,
     input         wb_rst_i,
+    input  [31:0] wb_mgmt_adr_i,
+    input  [31:0] wb_mgmt_dat_i,
+    input   [3:0] wb_mgmt_sel_i,
+    input         wb_mgmt_we_i,
+    input         wb_mgmt_cyc_i,
+    input         wb_mgmt_stb_i,
+    input   [2:0] wb_mgmt_cti_i,
+    input   [1:0] wb_mgmt_bte_i,
+    output [31:0] wb_mgmt_dat_o,
+    output        wb_mgmt_ack_o,
+    output        wb_mgmt_err_o,
+    output        wb_mgmt_rty_o,
     input  [31:0] wb_cpu0_ibus_adr_i,
     input  [31:0] wb_cpu0_ibus_dat_i,
     input   [3:0] wb_cpu0_ibus_sel_i,
@@ -27,18 +44,6 @@
     output        wb_cpu0_dbus_ack_o,
     output        wb_cpu0_dbus_err_o,
     output        wb_cpu0_dbus_rty_o,
-    input  [31:0] wb_mgmt_adr_i,
-    input  [31:0] wb_mgmt_dat_i,
-    input   [3:0] wb_mgmt_sel_i,
-    input         wb_mgmt_we_i,
-    input         wb_mgmt_cyc_i,
-    input         wb_mgmt_stb_i,
-    input   [2:0] wb_mgmt_cti_i,
-    input   [1:0] wb_mgmt_bte_i,
-    output [31:0] wb_mgmt_dat_o,
-    output        wb_mgmt_ack_o,
-    output        wb_mgmt_err_o,
-    output        wb_mgmt_rty_o,
     output [31:0] wb_timer0_adr_o,
     output [31:0] wb_timer0_dat_o,
     output  [3:0] wb_timer0_sel_o,
@@ -75,18 +80,6 @@
     input         wb_led0_ack_i,
     input         wb_led0_err_i,
     input         wb_led0_rty_i,
-    output [31:0] wb_cpu0_rom_adr_o,
-    output [31:0] wb_cpu0_rom_dat_o,
-    output  [3:0] wb_cpu0_rom_sel_o,
-    output        wb_cpu0_rom_we_o,
-    output        wb_cpu0_rom_cyc_o,
-    output        wb_cpu0_rom_stb_o,
-    output  [2:0] wb_cpu0_rom_cti_o,
-    output  [1:0] wb_cpu0_rom_bte_o,
-    input  [31:0] wb_cpu0_rom_dat_i,
-    input         wb_cpu0_rom_ack_i,
-    input         wb_cpu0_rom_err_i,
-    input         wb_cpu0_rom_rty_i,
     output [31:0] wb_cpu0_ram_adr_o,
     output [31:0] wb_cpu0_ram_dat_o,
     output  [3:0] wb_cpu0_ram_sel_o,
@@ -98,8 +91,80 @@
     input  [31:0] wb_cpu0_ram_dat_i,
     input         wb_cpu0_ram_ack_i,
     input         wb_cpu0_ram_err_i,
-    input         wb_cpu0_ram_rty_i);
+    input         wb_cpu0_ram_rty_i,
+    output [31:0] wb_cpu0_rom_adr_o,
+    output [31:0] wb_cpu0_rom_dat_o,
+    output  [3:0] wb_cpu0_rom_sel_o,
+    output        wb_cpu0_rom_we_o,
+    output        wb_cpu0_rom_cyc_o,
+    output        wb_cpu0_rom_stb_o,
+    output  [2:0] wb_cpu0_rom_cti_o,
+    output  [1:0] wb_cpu0_rom_bte_o,
+    input  [31:0] wb_cpu0_rom_dat_i,
+    input         wb_cpu0_rom_ack_i,
+    input         wb_cpu0_rom_err_i,
+    input         wb_cpu0_rom_rty_i);
 
+wire [31:0] wb_m2s_mgmt_cpu0_rom_adr;
+wire [31:0] wb_m2s_mgmt_cpu0_rom_dat;
+wire  [3:0] wb_m2s_mgmt_cpu0_rom_sel;
+wire        wb_m2s_mgmt_cpu0_rom_we;
+wire        wb_m2s_mgmt_cpu0_rom_cyc;
+wire        wb_m2s_mgmt_cpu0_rom_stb;
+wire  [2:0] wb_m2s_mgmt_cpu0_rom_cti;
+wire  [1:0] wb_m2s_mgmt_cpu0_rom_bte;
+wire [31:0] wb_s2m_mgmt_cpu0_rom_dat;
+wire        wb_s2m_mgmt_cpu0_rom_ack;
+wire        wb_s2m_mgmt_cpu0_rom_err;
+wire        wb_s2m_mgmt_cpu0_rom_rty;
+wire [31:0] wb_m2s_mgmt_cpu0_ram_adr;
+wire [31:0] wb_m2s_mgmt_cpu0_ram_dat;
+wire  [3:0] wb_m2s_mgmt_cpu0_ram_sel;
+wire        wb_m2s_mgmt_cpu0_ram_we;
+wire        wb_m2s_mgmt_cpu0_ram_cyc;
+wire        wb_m2s_mgmt_cpu0_ram_stb;
+wire  [2:0] wb_m2s_mgmt_cpu0_ram_cti;
+wire  [1:0] wb_m2s_mgmt_cpu0_ram_bte;
+wire [31:0] wb_s2m_mgmt_cpu0_ram_dat;
+wire        wb_s2m_mgmt_cpu0_ram_ack;
+wire        wb_s2m_mgmt_cpu0_ram_err;
+wire        wb_s2m_mgmt_cpu0_ram_rty;
+wire [31:0] wb_m2s_mgmt_led0_adr;
+wire [31:0] wb_m2s_mgmt_led0_dat;
+wire  [3:0] wb_m2s_mgmt_led0_sel;
+wire        wb_m2s_mgmt_led0_we;
+wire        wb_m2s_mgmt_led0_cyc;
+wire        wb_m2s_mgmt_led0_stb;
+wire  [2:0] wb_m2s_mgmt_led0_cti;
+wire  [1:0] wb_m2s_mgmt_led0_bte;
+wire [31:0] wb_s2m_mgmt_led0_dat;
+wire        wb_s2m_mgmt_led0_ack;
+wire        wb_s2m_mgmt_led0_err;
+wire        wb_s2m_mgmt_led0_rty;
+wire [31:0] wb_m2s_mgmt_uart0_adr;
+wire [31:0] wb_m2s_mgmt_uart0_dat;
+wire  [3:0] wb_m2s_mgmt_uart0_sel;
+wire        wb_m2s_mgmt_uart0_we;
+wire        wb_m2s_mgmt_uart0_cyc;
+wire        wb_m2s_mgmt_uart0_stb;
+wire  [2:0] wb_m2s_mgmt_uart0_cti;
+wire  [1:0] wb_m2s_mgmt_uart0_bte;
+wire [31:0] wb_s2m_mgmt_uart0_dat;
+wire        wb_s2m_mgmt_uart0_ack;
+wire        wb_s2m_mgmt_uart0_err;
+wire        wb_s2m_mgmt_uart0_rty;
+wire [31:0] wb_m2s_mgmt_timer0_adr;
+wire [31:0] wb_m2s_mgmt_timer0_dat;
+wire  [3:0] wb_m2s_mgmt_timer0_sel;
+wire        wb_m2s_mgmt_timer0_we;
+wire        wb_m2s_mgmt_timer0_cyc;
+wire        wb_m2s_mgmt_timer0_stb;
+wire  [2:0] wb_m2s_mgmt_timer0_cti;
+wire  [1:0] wb_m2s_mgmt_timer0_bte;
+wire [31:0] wb_s2m_mgmt_timer0_dat;
+wire        wb_s2m_mgmt_timer0_ack;
+wire        wb_s2m_mgmt_timer0_err;
+wire        wb_s2m_mgmt_timer0_rty;
 wire [31:0] wb_m2s_cpu0_ibus_cpu0_rom_adr;
 wire [31:0] wb_m2s_cpu0_ibus_cpu0_rom_dat;
 wire  [3:0] wb_m2s_cpu0_ibus_cpu0_rom_sel;
@@ -136,30 +201,6 @@
 wire        wb_s2m_cpu0_dbus_cpu0_ram_ack;
 wire        wb_s2m_cpu0_dbus_cpu0_ram_err;
 wire        wb_s2m_cpu0_dbus_cpu0_ram_rty;
-wire [31:0] wb_m2s_cpu0_dbus_timer0_adr;
-wire [31:0] wb_m2s_cpu0_dbus_timer0_dat;
-wire  [3:0] wb_m2s_cpu0_dbus_timer0_sel;
-wire        wb_m2s_cpu0_dbus_timer0_we;
-wire        wb_m2s_cpu0_dbus_timer0_cyc;
-wire        wb_m2s_cpu0_dbus_timer0_stb;
-wire  [2:0] wb_m2s_cpu0_dbus_timer0_cti;
-wire  [1:0] wb_m2s_cpu0_dbus_timer0_bte;
-wire [31:0] wb_s2m_cpu0_dbus_timer0_dat;
-wire        wb_s2m_cpu0_dbus_timer0_ack;
-wire        wb_s2m_cpu0_dbus_timer0_err;
-wire        wb_s2m_cpu0_dbus_timer0_rty;
-wire [31:0] wb_m2s_cpu0_dbus_uart0_adr;
-wire [31:0] wb_m2s_cpu0_dbus_uart0_dat;
-wire  [3:0] wb_m2s_cpu0_dbus_uart0_sel;
-wire        wb_m2s_cpu0_dbus_uart0_we;
-wire        wb_m2s_cpu0_dbus_uart0_cyc;
-wire        wb_m2s_cpu0_dbus_uart0_stb;
-wire  [2:0] wb_m2s_cpu0_dbus_uart0_cti;
-wire  [1:0] wb_m2s_cpu0_dbus_uart0_bte;
-wire [31:0] wb_s2m_cpu0_dbus_uart0_dat;
-wire        wb_s2m_cpu0_dbus_uart0_ack;
-wire        wb_s2m_cpu0_dbus_uart0_err;
-wire        wb_s2m_cpu0_dbus_uart0_rty;
 wire [31:0] wb_m2s_cpu0_dbus_led0_adr;
 wire [31:0] wb_m2s_cpu0_dbus_led0_dat;
 wire  [3:0] wb_m2s_cpu0_dbus_led0_sel;
@@ -172,73 +213,79 @@
 wire        wb_s2m_cpu0_dbus_led0_ack;
 wire        wb_s2m_cpu0_dbus_led0_err;
 wire        wb_s2m_cpu0_dbus_led0_rty;
-wire [31:0] wb_m2s_mgmt_cpu0_rom_adr;
-wire [31:0] wb_m2s_mgmt_cpu0_rom_dat;
-wire  [3:0] wb_m2s_mgmt_cpu0_rom_sel;
-wire        wb_m2s_mgmt_cpu0_rom_we;
-wire        wb_m2s_mgmt_cpu0_rom_cyc;
-wire        wb_m2s_mgmt_cpu0_rom_stb;
-wire  [2:0] wb_m2s_mgmt_cpu0_rom_cti;
-wire  [1:0] wb_m2s_mgmt_cpu0_rom_bte;
-wire [31:0] wb_s2m_mgmt_cpu0_rom_dat;
-wire        wb_s2m_mgmt_cpu0_rom_ack;
-wire        wb_s2m_mgmt_cpu0_rom_err;
-wire        wb_s2m_mgmt_cpu0_rom_rty;
-wire [31:0] wb_m2s_mgmt_cpu0_ram_adr;
-wire [31:0] wb_m2s_mgmt_cpu0_ram_dat;
-wire  [3:0] wb_m2s_mgmt_cpu0_ram_sel;
-wire        wb_m2s_mgmt_cpu0_ram_we;
-wire        wb_m2s_mgmt_cpu0_ram_cyc;
-wire        wb_m2s_mgmt_cpu0_ram_stb;
-wire  [2:0] wb_m2s_mgmt_cpu0_ram_cti;
-wire  [1:0] wb_m2s_mgmt_cpu0_ram_bte;
-wire [31:0] wb_s2m_mgmt_cpu0_ram_dat;
-wire        wb_s2m_mgmt_cpu0_ram_ack;
-wire        wb_s2m_mgmt_cpu0_ram_err;
-wire        wb_s2m_mgmt_cpu0_ram_rty;
-wire [31:0] wb_m2s_mgmt_timer0_adr;
-wire [31:0] wb_m2s_mgmt_timer0_dat;
-wire  [3:0] wb_m2s_mgmt_timer0_sel;
-wire        wb_m2s_mgmt_timer0_we;
-wire        wb_m2s_mgmt_timer0_cyc;
-wire        wb_m2s_mgmt_timer0_stb;
-wire  [2:0] wb_m2s_mgmt_timer0_cti;
-wire  [1:0] wb_m2s_mgmt_timer0_bte;
-wire [31:0] wb_s2m_mgmt_timer0_dat;
-wire        wb_s2m_mgmt_timer0_ack;
-wire        wb_s2m_mgmt_timer0_err;
-wire        wb_s2m_mgmt_timer0_rty;
-wire [31:0] wb_m2s_mgmt_uart0_adr;
-wire [31:0] wb_m2s_mgmt_uart0_dat;
-wire  [3:0] wb_m2s_mgmt_uart0_sel;
-wire        wb_m2s_mgmt_uart0_we;
-wire        wb_m2s_mgmt_uart0_cyc;
-wire        wb_m2s_mgmt_uart0_stb;
-wire  [2:0] wb_m2s_mgmt_uart0_cti;
-wire  [1:0] wb_m2s_mgmt_uart0_bte;
-wire [31:0] wb_s2m_mgmt_uart0_dat;
-wire        wb_s2m_mgmt_uart0_ack;
-wire        wb_s2m_mgmt_uart0_err;
-wire        wb_s2m_mgmt_uart0_rty;
-wire [31:0] wb_m2s_mgmt_led0_adr;
-wire [31:0] wb_m2s_mgmt_led0_dat;
-wire  [3:0] wb_m2s_mgmt_led0_sel;
-wire        wb_m2s_mgmt_led0_we;
-wire        wb_m2s_mgmt_led0_cyc;
-wire        wb_m2s_mgmt_led0_stb;
-wire  [2:0] wb_m2s_mgmt_led0_cti;
-wire  [1:0] wb_m2s_mgmt_led0_bte;
-wire [31:0] wb_s2m_mgmt_led0_dat;
-wire        wb_s2m_mgmt_led0_ack;
-wire        wb_s2m_mgmt_led0_err;
-wire        wb_s2m_mgmt_led0_rty;
+wire [31:0] wb_m2s_cpu0_dbus_uart0_adr;
+wire [31:0] wb_m2s_cpu0_dbus_uart0_dat;
+wire  [3:0] wb_m2s_cpu0_dbus_uart0_sel;
+wire        wb_m2s_cpu0_dbus_uart0_we;
+wire        wb_m2s_cpu0_dbus_uart0_cyc;
+wire        wb_m2s_cpu0_dbus_uart0_stb;
+wire  [2:0] wb_m2s_cpu0_dbus_uart0_cti;
+wire  [1:0] wb_m2s_cpu0_dbus_uart0_bte;
+wire [31:0] wb_s2m_cpu0_dbus_uart0_dat;
+wire        wb_s2m_cpu0_dbus_uart0_ack;
+wire        wb_s2m_cpu0_dbus_uart0_err;
+wire        wb_s2m_cpu0_dbus_uart0_rty;
+wire [31:0] wb_m2s_cpu0_dbus_timer0_adr;
+wire [31:0] wb_m2s_cpu0_dbus_timer0_dat;
+wire  [3:0] wb_m2s_cpu0_dbus_timer0_sel;
+wire        wb_m2s_cpu0_dbus_timer0_we;
+wire        wb_m2s_cpu0_dbus_timer0_cyc;
+wire        wb_m2s_cpu0_dbus_timer0_stb;
+wire  [2:0] wb_m2s_cpu0_dbus_timer0_cti;
+wire  [1:0] wb_m2s_cpu0_dbus_timer0_bte;
+wire [31:0] wb_s2m_cpu0_dbus_timer0_dat;
+wire        wb_s2m_cpu0_dbus_timer0_ack;
+wire        wb_s2m_cpu0_dbus_timer0_err;
+wire        wb_s2m_cpu0_dbus_timer0_rty;
+
+wb_mux
+  #(.num_slaves (5),
+    .MATCH_ADDR ({32'h30000000, 32'h30001000, 32'h30fffd00, 32'h30fffe00, 32'h30ffff00}),
+    .MATCH_MASK ({32'hfffff800, 32'hfffff800, 32'hffffff00, 32'hffffff00, 32'hffffff00}))
+ wb_mux_mgmt
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i  (wb_clk_i),
+    .wb_rst_i  (wb_rst_i),
+    .wbm_adr_i (wb_mgmt_adr_i),
+    .wbm_dat_i (wb_mgmt_dat_i),
+    .wbm_sel_i (wb_mgmt_sel_i),
+    .wbm_we_i  (wb_mgmt_we_i),
+    .wbm_cyc_i (wb_mgmt_cyc_i),
+    .wbm_stb_i (wb_mgmt_stb_i),
+    .wbm_cti_i (wb_mgmt_cti_i),
+    .wbm_bte_i (wb_mgmt_bte_i),
+    .wbm_dat_o (wb_mgmt_dat_o),
+    .wbm_ack_o (wb_mgmt_ack_o),
+    .wbm_err_o (wb_mgmt_err_o),
+    .wbm_rty_o (wb_mgmt_rty_o),
+    .wbs_adr_o ({wb_m2s_mgmt_cpu0_rom_adr, wb_m2s_mgmt_cpu0_ram_adr, wb_m2s_mgmt_led0_adr, wb_m2s_mgmt_uart0_adr, wb_m2s_mgmt_timer0_adr}),
+    .wbs_dat_o ({wb_m2s_mgmt_cpu0_rom_dat, wb_m2s_mgmt_cpu0_ram_dat, wb_m2s_mgmt_led0_dat, wb_m2s_mgmt_uart0_dat, wb_m2s_mgmt_timer0_dat}),
+    .wbs_sel_o ({wb_m2s_mgmt_cpu0_rom_sel, wb_m2s_mgmt_cpu0_ram_sel, wb_m2s_mgmt_led0_sel, wb_m2s_mgmt_uart0_sel, wb_m2s_mgmt_timer0_sel}),
+    .wbs_we_o  ({wb_m2s_mgmt_cpu0_rom_we, wb_m2s_mgmt_cpu0_ram_we, wb_m2s_mgmt_led0_we, wb_m2s_mgmt_uart0_we, wb_m2s_mgmt_timer0_we}),
+    .wbs_cyc_o ({wb_m2s_mgmt_cpu0_rom_cyc, wb_m2s_mgmt_cpu0_ram_cyc, wb_m2s_mgmt_led0_cyc, wb_m2s_mgmt_uart0_cyc, wb_m2s_mgmt_timer0_cyc}),
+    .wbs_stb_o ({wb_m2s_mgmt_cpu0_rom_stb, wb_m2s_mgmt_cpu0_ram_stb, wb_m2s_mgmt_led0_stb, wb_m2s_mgmt_uart0_stb, wb_m2s_mgmt_timer0_stb}),
+    .wbs_cti_o ({wb_m2s_mgmt_cpu0_rom_cti, wb_m2s_mgmt_cpu0_ram_cti, wb_m2s_mgmt_led0_cti, wb_m2s_mgmt_uart0_cti, wb_m2s_mgmt_timer0_cti}),
+    .wbs_bte_o ({wb_m2s_mgmt_cpu0_rom_bte, wb_m2s_mgmt_cpu0_ram_bte, wb_m2s_mgmt_led0_bte, wb_m2s_mgmt_uart0_bte, wb_m2s_mgmt_timer0_bte}),
+    .wbs_dat_i ({wb_s2m_mgmt_cpu0_rom_dat, wb_s2m_mgmt_cpu0_ram_dat, wb_s2m_mgmt_led0_dat, wb_s2m_mgmt_uart0_dat, wb_s2m_mgmt_timer0_dat}),
+    .wbs_ack_i ({wb_s2m_mgmt_cpu0_rom_ack, wb_s2m_mgmt_cpu0_ram_ack, wb_s2m_mgmt_led0_ack, wb_s2m_mgmt_uart0_ack, wb_s2m_mgmt_timer0_ack}),
+    .wbs_err_i ({wb_s2m_mgmt_cpu0_rom_err, wb_s2m_mgmt_cpu0_ram_err, wb_s2m_mgmt_led0_err, wb_s2m_mgmt_uart0_err, wb_s2m_mgmt_timer0_err}),
+    .wbs_rty_i ({wb_s2m_mgmt_cpu0_rom_rty, wb_s2m_mgmt_cpu0_ram_rty, wb_s2m_mgmt_led0_rty, wb_s2m_mgmt_uart0_rty, wb_s2m_mgmt_timer0_rty}));
 
 wb_mux
   #(.num_slaves (1),
     .MATCH_ADDR ({32'h30000000}),
     .MATCH_MASK ({32'hfffff800}))
  wb_mux_cpu0_ibus
-   (.wb_clk_i  (wb_clk_i),
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i  (wb_clk_i),
     .wb_rst_i  (wb_rst_i),
     .wbm_adr_i (wb_cpu0_ibus_adr_i),
     .wbm_dat_i (wb_cpu0_ibus_dat_i),
@@ -267,10 +314,15 @@
 
 wb_mux
   #(.num_slaves (5),
-    .MATCH_ADDR ({32'h30000000, 32'h30003000, 32'h40000000, 32'h40001000, 32'h40002000}),
-    .MATCH_MASK ({32'hfffff800, 32'hfffff800, 32'hfffff000, 32'hfffff000, 32'hfffff000}))
+    .MATCH_ADDR ({32'h30000000, 32'h30001000, 32'h30fffd00, 32'h30fffe00, 32'h30ffff00}),
+    .MATCH_MASK ({32'hfffff800, 32'hfffff800, 32'hffffff00, 32'hffffff00, 32'hffffff00}))
  wb_mux_cpu0_dbus
-   (.wb_clk_i  (wb_clk_i),
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i  (wb_clk_i),
     .wb_rst_i  (wb_rst_i),
     .wbm_adr_i (wb_cpu0_dbus_adr_i),
     .wbm_dat_i (wb_cpu0_dbus_dat_i),
@@ -284,68 +336,41 @@
     .wbm_ack_o (wb_cpu0_dbus_ack_o),
     .wbm_err_o (wb_cpu0_dbus_err_o),
     .wbm_rty_o (wb_cpu0_dbus_rty_o),
-    .wbs_adr_o ({wb_m2s_cpu0_dbus_cpu0_rom_adr, wb_m2s_cpu0_dbus_cpu0_ram_adr, wb_m2s_cpu0_dbus_timer0_adr, wb_m2s_cpu0_dbus_uart0_adr, wb_m2s_cpu0_dbus_led0_adr}),
-    .wbs_dat_o ({wb_m2s_cpu0_dbus_cpu0_rom_dat, wb_m2s_cpu0_dbus_cpu0_ram_dat, wb_m2s_cpu0_dbus_timer0_dat, wb_m2s_cpu0_dbus_uart0_dat, wb_m2s_cpu0_dbus_led0_dat}),
-    .wbs_sel_o ({wb_m2s_cpu0_dbus_cpu0_rom_sel, wb_m2s_cpu0_dbus_cpu0_ram_sel, wb_m2s_cpu0_dbus_timer0_sel, wb_m2s_cpu0_dbus_uart0_sel, wb_m2s_cpu0_dbus_led0_sel}),
-    .wbs_we_o  ({wb_m2s_cpu0_dbus_cpu0_rom_we, wb_m2s_cpu0_dbus_cpu0_ram_we, wb_m2s_cpu0_dbus_timer0_we, wb_m2s_cpu0_dbus_uart0_we, wb_m2s_cpu0_dbus_led0_we}),
-    .wbs_cyc_o ({wb_m2s_cpu0_dbus_cpu0_rom_cyc, wb_m2s_cpu0_dbus_cpu0_ram_cyc, wb_m2s_cpu0_dbus_timer0_cyc, wb_m2s_cpu0_dbus_uart0_cyc, wb_m2s_cpu0_dbus_led0_cyc}),
-    .wbs_stb_o ({wb_m2s_cpu0_dbus_cpu0_rom_stb, wb_m2s_cpu0_dbus_cpu0_ram_stb, wb_m2s_cpu0_dbus_timer0_stb, wb_m2s_cpu0_dbus_uart0_stb, wb_m2s_cpu0_dbus_led0_stb}),
-    .wbs_cti_o ({wb_m2s_cpu0_dbus_cpu0_rom_cti, wb_m2s_cpu0_dbus_cpu0_ram_cti, wb_m2s_cpu0_dbus_timer0_cti, wb_m2s_cpu0_dbus_uart0_cti, wb_m2s_cpu0_dbus_led0_cti}),
-    .wbs_bte_o ({wb_m2s_cpu0_dbus_cpu0_rom_bte, wb_m2s_cpu0_dbus_cpu0_ram_bte, wb_m2s_cpu0_dbus_timer0_bte, wb_m2s_cpu0_dbus_uart0_bte, wb_m2s_cpu0_dbus_led0_bte}),
-    .wbs_dat_i ({wb_s2m_cpu0_dbus_cpu0_rom_dat, wb_s2m_cpu0_dbus_cpu0_ram_dat, wb_s2m_cpu0_dbus_timer0_dat, wb_s2m_cpu0_dbus_uart0_dat, wb_s2m_cpu0_dbus_led0_dat}),
-    .wbs_ack_i ({wb_s2m_cpu0_dbus_cpu0_rom_ack, wb_s2m_cpu0_dbus_cpu0_ram_ack, wb_s2m_cpu0_dbus_timer0_ack, wb_s2m_cpu0_dbus_uart0_ack, wb_s2m_cpu0_dbus_led0_ack}),
-    .wbs_err_i ({wb_s2m_cpu0_dbus_cpu0_rom_err, wb_s2m_cpu0_dbus_cpu0_ram_err, wb_s2m_cpu0_dbus_timer0_err, wb_s2m_cpu0_dbus_uart0_err, wb_s2m_cpu0_dbus_led0_err}),
-    .wbs_rty_i ({wb_s2m_cpu0_dbus_cpu0_rom_rty, wb_s2m_cpu0_dbus_cpu0_ram_rty, wb_s2m_cpu0_dbus_timer0_rty, wb_s2m_cpu0_dbus_uart0_rty, wb_s2m_cpu0_dbus_led0_rty}));
-
-wb_mux
-  #(.num_slaves (5),
-    .MATCH_ADDR ({32'h30000000, 32'h30003000, 32'h40000000, 32'h40001000, 32'h40002000}),
-    .MATCH_MASK ({32'hfffff800, 32'hfffff800, 32'hfffff000, 32'hfffff000, 32'hfffff000}))
- wb_mux_mgmt
-   (.wb_clk_i  (wb_clk_i),
-    .wb_rst_i  (wb_rst_i),
-    .wbm_adr_i (wb_mgmt_adr_i),
-    .wbm_dat_i (wb_mgmt_dat_i),
-    .wbm_sel_i (wb_mgmt_sel_i),
-    .wbm_we_i  (wb_mgmt_we_i),
-    .wbm_cyc_i (wb_mgmt_cyc_i),
-    .wbm_stb_i (wb_mgmt_stb_i),
-    .wbm_cti_i (wb_mgmt_cti_i),
-    .wbm_bte_i (wb_mgmt_bte_i),
-    .wbm_dat_o (wb_mgmt_dat_o),
-    .wbm_ack_o (wb_mgmt_ack_o),
-    .wbm_err_o (wb_mgmt_err_o),
-    .wbm_rty_o (wb_mgmt_rty_o),
-    .wbs_adr_o ({wb_m2s_mgmt_cpu0_rom_adr, wb_m2s_mgmt_cpu0_ram_adr, wb_m2s_mgmt_timer0_adr, wb_m2s_mgmt_uart0_adr, wb_m2s_mgmt_led0_adr}),
-    .wbs_dat_o ({wb_m2s_mgmt_cpu0_rom_dat, wb_m2s_mgmt_cpu0_ram_dat, wb_m2s_mgmt_timer0_dat, wb_m2s_mgmt_uart0_dat, wb_m2s_mgmt_led0_dat}),
-    .wbs_sel_o ({wb_m2s_mgmt_cpu0_rom_sel, wb_m2s_mgmt_cpu0_ram_sel, wb_m2s_mgmt_timer0_sel, wb_m2s_mgmt_uart0_sel, wb_m2s_mgmt_led0_sel}),
-    .wbs_we_o  ({wb_m2s_mgmt_cpu0_rom_we, wb_m2s_mgmt_cpu0_ram_we, wb_m2s_mgmt_timer0_we, wb_m2s_mgmt_uart0_we, wb_m2s_mgmt_led0_we}),
-    .wbs_cyc_o ({wb_m2s_mgmt_cpu0_rom_cyc, wb_m2s_mgmt_cpu0_ram_cyc, wb_m2s_mgmt_timer0_cyc, wb_m2s_mgmt_uart0_cyc, wb_m2s_mgmt_led0_cyc}),
-    .wbs_stb_o ({wb_m2s_mgmt_cpu0_rom_stb, wb_m2s_mgmt_cpu0_ram_stb, wb_m2s_mgmt_timer0_stb, wb_m2s_mgmt_uart0_stb, wb_m2s_mgmt_led0_stb}),
-    .wbs_cti_o ({wb_m2s_mgmt_cpu0_rom_cti, wb_m2s_mgmt_cpu0_ram_cti, wb_m2s_mgmt_timer0_cti, wb_m2s_mgmt_uart0_cti, wb_m2s_mgmt_led0_cti}),
-    .wbs_bte_o ({wb_m2s_mgmt_cpu0_rom_bte, wb_m2s_mgmt_cpu0_ram_bte, wb_m2s_mgmt_timer0_bte, wb_m2s_mgmt_uart0_bte, wb_m2s_mgmt_led0_bte}),
-    .wbs_dat_i ({wb_s2m_mgmt_cpu0_rom_dat, wb_s2m_mgmt_cpu0_ram_dat, wb_s2m_mgmt_timer0_dat, wb_s2m_mgmt_uart0_dat, wb_s2m_mgmt_led0_dat}),
-    .wbs_ack_i ({wb_s2m_mgmt_cpu0_rom_ack, wb_s2m_mgmt_cpu0_ram_ack, wb_s2m_mgmt_timer0_ack, wb_s2m_mgmt_uart0_ack, wb_s2m_mgmt_led0_ack}),
-    .wbs_err_i ({wb_s2m_mgmt_cpu0_rom_err, wb_s2m_mgmt_cpu0_ram_err, wb_s2m_mgmt_timer0_err, wb_s2m_mgmt_uart0_err, wb_s2m_mgmt_led0_err}),
-    .wbs_rty_i ({wb_s2m_mgmt_cpu0_rom_rty, wb_s2m_mgmt_cpu0_ram_rty, wb_s2m_mgmt_timer0_rty, wb_s2m_mgmt_uart0_rty, wb_s2m_mgmt_led0_rty}));
+    .wbs_adr_o ({wb_m2s_cpu0_dbus_cpu0_rom_adr, wb_m2s_cpu0_dbus_cpu0_ram_adr, wb_m2s_cpu0_dbus_led0_adr, wb_m2s_cpu0_dbus_uart0_adr, wb_m2s_cpu0_dbus_timer0_adr}),
+    .wbs_dat_o ({wb_m2s_cpu0_dbus_cpu0_rom_dat, wb_m2s_cpu0_dbus_cpu0_ram_dat, wb_m2s_cpu0_dbus_led0_dat, wb_m2s_cpu0_dbus_uart0_dat, wb_m2s_cpu0_dbus_timer0_dat}),
+    .wbs_sel_o ({wb_m2s_cpu0_dbus_cpu0_rom_sel, wb_m2s_cpu0_dbus_cpu0_ram_sel, wb_m2s_cpu0_dbus_led0_sel, wb_m2s_cpu0_dbus_uart0_sel, wb_m2s_cpu0_dbus_timer0_sel}),
+    .wbs_we_o  ({wb_m2s_cpu0_dbus_cpu0_rom_we, wb_m2s_cpu0_dbus_cpu0_ram_we, wb_m2s_cpu0_dbus_led0_we, wb_m2s_cpu0_dbus_uart0_we, wb_m2s_cpu0_dbus_timer0_we}),
+    .wbs_cyc_o ({wb_m2s_cpu0_dbus_cpu0_rom_cyc, wb_m2s_cpu0_dbus_cpu0_ram_cyc, wb_m2s_cpu0_dbus_led0_cyc, wb_m2s_cpu0_dbus_uart0_cyc, wb_m2s_cpu0_dbus_timer0_cyc}),
+    .wbs_stb_o ({wb_m2s_cpu0_dbus_cpu0_rom_stb, wb_m2s_cpu0_dbus_cpu0_ram_stb, wb_m2s_cpu0_dbus_led0_stb, wb_m2s_cpu0_dbus_uart0_stb, wb_m2s_cpu0_dbus_timer0_stb}),
+    .wbs_cti_o ({wb_m2s_cpu0_dbus_cpu0_rom_cti, wb_m2s_cpu0_dbus_cpu0_ram_cti, wb_m2s_cpu0_dbus_led0_cti, wb_m2s_cpu0_dbus_uart0_cti, wb_m2s_cpu0_dbus_timer0_cti}),
+    .wbs_bte_o ({wb_m2s_cpu0_dbus_cpu0_rom_bte, wb_m2s_cpu0_dbus_cpu0_ram_bte, wb_m2s_cpu0_dbus_led0_bte, wb_m2s_cpu0_dbus_uart0_bte, wb_m2s_cpu0_dbus_timer0_bte}),
+    .wbs_dat_i ({wb_s2m_cpu0_dbus_cpu0_rom_dat, wb_s2m_cpu0_dbus_cpu0_ram_dat, wb_s2m_cpu0_dbus_led0_dat, wb_s2m_cpu0_dbus_uart0_dat, wb_s2m_cpu0_dbus_timer0_dat}),
+    .wbs_ack_i ({wb_s2m_cpu0_dbus_cpu0_rom_ack, wb_s2m_cpu0_dbus_cpu0_ram_ack, wb_s2m_cpu0_dbus_led0_ack, wb_s2m_cpu0_dbus_uart0_ack, wb_s2m_cpu0_dbus_timer0_ack}),
+    .wbs_err_i ({wb_s2m_cpu0_dbus_cpu0_rom_err, wb_s2m_cpu0_dbus_cpu0_ram_err, wb_s2m_cpu0_dbus_led0_err, wb_s2m_cpu0_dbus_uart0_err, wb_s2m_cpu0_dbus_timer0_err}),
+    .wbs_rty_i ({wb_s2m_cpu0_dbus_cpu0_rom_rty, wb_s2m_cpu0_dbus_cpu0_ram_rty, wb_s2m_cpu0_dbus_led0_rty, wb_s2m_cpu0_dbus_uart0_rty, wb_s2m_cpu0_dbus_timer0_rty}));
 
 wb_arbiter
   #(.num_masters (2))
  wb_arbiter_timer0
-   (.wb_clk_i  (wb_clk_i),
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i  (wb_clk_i),
     .wb_rst_i  (wb_rst_i),
-    .wbm_adr_i ({wb_m2s_cpu0_dbus_timer0_adr, wb_m2s_mgmt_timer0_adr}),
-    .wbm_dat_i ({wb_m2s_cpu0_dbus_timer0_dat, wb_m2s_mgmt_timer0_dat}),
-    .wbm_sel_i ({wb_m2s_cpu0_dbus_timer0_sel, wb_m2s_mgmt_timer0_sel}),
-    .wbm_we_i  ({wb_m2s_cpu0_dbus_timer0_we, wb_m2s_mgmt_timer0_we}),
-    .wbm_cyc_i ({wb_m2s_cpu0_dbus_timer0_cyc, wb_m2s_mgmt_timer0_cyc}),
-    .wbm_stb_i ({wb_m2s_cpu0_dbus_timer0_stb, wb_m2s_mgmt_timer0_stb}),
-    .wbm_cti_i ({wb_m2s_cpu0_dbus_timer0_cti, wb_m2s_mgmt_timer0_cti}),
-    .wbm_bte_i ({wb_m2s_cpu0_dbus_timer0_bte, wb_m2s_mgmt_timer0_bte}),
-    .wbm_dat_o ({wb_s2m_cpu0_dbus_timer0_dat, wb_s2m_mgmt_timer0_dat}),
-    .wbm_ack_o ({wb_s2m_cpu0_dbus_timer0_ack, wb_s2m_mgmt_timer0_ack}),
-    .wbm_err_o ({wb_s2m_cpu0_dbus_timer0_err, wb_s2m_mgmt_timer0_err}),
-    .wbm_rty_o ({wb_s2m_cpu0_dbus_timer0_rty, wb_s2m_mgmt_timer0_rty}),
+    .wbm_adr_i ({wb_m2s_mgmt_timer0_adr, wb_m2s_cpu0_dbus_timer0_adr}),
+    .wbm_dat_i ({wb_m2s_mgmt_timer0_dat, wb_m2s_cpu0_dbus_timer0_dat}),
+    .wbm_sel_i ({wb_m2s_mgmt_timer0_sel, wb_m2s_cpu0_dbus_timer0_sel}),
+    .wbm_we_i  ({wb_m2s_mgmt_timer0_we, wb_m2s_cpu0_dbus_timer0_we}),
+    .wbm_cyc_i ({wb_m2s_mgmt_timer0_cyc, wb_m2s_cpu0_dbus_timer0_cyc}),
+    .wbm_stb_i ({wb_m2s_mgmt_timer0_stb, wb_m2s_cpu0_dbus_timer0_stb}),
+    .wbm_cti_i ({wb_m2s_mgmt_timer0_cti, wb_m2s_cpu0_dbus_timer0_cti}),
+    .wbm_bte_i ({wb_m2s_mgmt_timer0_bte, wb_m2s_cpu0_dbus_timer0_bte}),
+    .wbm_dat_o ({wb_s2m_mgmt_timer0_dat, wb_s2m_cpu0_dbus_timer0_dat}),
+    .wbm_ack_o ({wb_s2m_mgmt_timer0_ack, wb_s2m_cpu0_dbus_timer0_ack}),
+    .wbm_err_o ({wb_s2m_mgmt_timer0_err, wb_s2m_cpu0_dbus_timer0_err}),
+    .wbm_rty_o ({wb_s2m_mgmt_timer0_rty, wb_s2m_cpu0_dbus_timer0_rty}),
     .wbs_adr_o (wb_timer0_adr_o),
     .wbs_dat_o (wb_timer0_dat_o),
     .wbs_sel_o (wb_timer0_sel_o),
@@ -362,20 +387,25 @@
 wb_arbiter
   #(.num_masters (2))
  wb_arbiter_uart0
-   (.wb_clk_i  (wb_clk_i),
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i  (wb_clk_i),
     .wb_rst_i  (wb_rst_i),
-    .wbm_adr_i ({wb_m2s_cpu0_dbus_uart0_adr, wb_m2s_mgmt_uart0_adr}),
-    .wbm_dat_i ({wb_m2s_cpu0_dbus_uart0_dat, wb_m2s_mgmt_uart0_dat}),
-    .wbm_sel_i ({wb_m2s_cpu0_dbus_uart0_sel, wb_m2s_mgmt_uart0_sel}),
-    .wbm_we_i  ({wb_m2s_cpu0_dbus_uart0_we, wb_m2s_mgmt_uart0_we}),
-    .wbm_cyc_i ({wb_m2s_cpu0_dbus_uart0_cyc, wb_m2s_mgmt_uart0_cyc}),
-    .wbm_stb_i ({wb_m2s_cpu0_dbus_uart0_stb, wb_m2s_mgmt_uart0_stb}),
-    .wbm_cti_i ({wb_m2s_cpu0_dbus_uart0_cti, wb_m2s_mgmt_uart0_cti}),
-    .wbm_bte_i ({wb_m2s_cpu0_dbus_uart0_bte, wb_m2s_mgmt_uart0_bte}),
-    .wbm_dat_o ({wb_s2m_cpu0_dbus_uart0_dat, wb_s2m_mgmt_uart0_dat}),
-    .wbm_ack_o ({wb_s2m_cpu0_dbus_uart0_ack, wb_s2m_mgmt_uart0_ack}),
-    .wbm_err_o ({wb_s2m_cpu0_dbus_uart0_err, wb_s2m_mgmt_uart0_err}),
-    .wbm_rty_o ({wb_s2m_cpu0_dbus_uart0_rty, wb_s2m_mgmt_uart0_rty}),
+    .wbm_adr_i ({wb_m2s_mgmt_uart0_adr, wb_m2s_cpu0_dbus_uart0_adr}),
+    .wbm_dat_i ({wb_m2s_mgmt_uart0_dat, wb_m2s_cpu0_dbus_uart0_dat}),
+    .wbm_sel_i ({wb_m2s_mgmt_uart0_sel, wb_m2s_cpu0_dbus_uart0_sel}),
+    .wbm_we_i  ({wb_m2s_mgmt_uart0_we, wb_m2s_cpu0_dbus_uart0_we}),
+    .wbm_cyc_i ({wb_m2s_mgmt_uart0_cyc, wb_m2s_cpu0_dbus_uart0_cyc}),
+    .wbm_stb_i ({wb_m2s_mgmt_uart0_stb, wb_m2s_cpu0_dbus_uart0_stb}),
+    .wbm_cti_i ({wb_m2s_mgmt_uart0_cti, wb_m2s_cpu0_dbus_uart0_cti}),
+    .wbm_bte_i ({wb_m2s_mgmt_uart0_bte, wb_m2s_cpu0_dbus_uart0_bte}),
+    .wbm_dat_o ({wb_s2m_mgmt_uart0_dat, wb_s2m_cpu0_dbus_uart0_dat}),
+    .wbm_ack_o ({wb_s2m_mgmt_uart0_ack, wb_s2m_cpu0_dbus_uart0_ack}),
+    .wbm_err_o ({wb_s2m_mgmt_uart0_err, wb_s2m_cpu0_dbus_uart0_err}),
+    .wbm_rty_o ({wb_s2m_mgmt_uart0_rty, wb_s2m_cpu0_dbus_uart0_rty}),
     .wbs_adr_o (wb_uart0_adr_o),
     .wbs_dat_o (wb_uart0_dat_o),
     .wbs_sel_o (wb_uart0_sel_o),
@@ -392,20 +422,25 @@
 wb_arbiter
   #(.num_masters (2))
  wb_arbiter_led0
-   (.wb_clk_i  (wb_clk_i),
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i  (wb_clk_i),
     .wb_rst_i  (wb_rst_i),
-    .wbm_adr_i ({wb_m2s_cpu0_dbus_led0_adr, wb_m2s_mgmt_led0_adr}),
-    .wbm_dat_i ({wb_m2s_cpu0_dbus_led0_dat, wb_m2s_mgmt_led0_dat}),
-    .wbm_sel_i ({wb_m2s_cpu0_dbus_led0_sel, wb_m2s_mgmt_led0_sel}),
-    .wbm_we_i  ({wb_m2s_cpu0_dbus_led0_we, wb_m2s_mgmt_led0_we}),
-    .wbm_cyc_i ({wb_m2s_cpu0_dbus_led0_cyc, wb_m2s_mgmt_led0_cyc}),
-    .wbm_stb_i ({wb_m2s_cpu0_dbus_led0_stb, wb_m2s_mgmt_led0_stb}),
-    .wbm_cti_i ({wb_m2s_cpu0_dbus_led0_cti, wb_m2s_mgmt_led0_cti}),
-    .wbm_bte_i ({wb_m2s_cpu0_dbus_led0_bte, wb_m2s_mgmt_led0_bte}),
-    .wbm_dat_o ({wb_s2m_cpu0_dbus_led0_dat, wb_s2m_mgmt_led0_dat}),
-    .wbm_ack_o ({wb_s2m_cpu0_dbus_led0_ack, wb_s2m_mgmt_led0_ack}),
-    .wbm_err_o ({wb_s2m_cpu0_dbus_led0_err, wb_s2m_mgmt_led0_err}),
-    .wbm_rty_o ({wb_s2m_cpu0_dbus_led0_rty, wb_s2m_mgmt_led0_rty}),
+    .wbm_adr_i ({wb_m2s_mgmt_led0_adr, wb_m2s_cpu0_dbus_led0_adr}),
+    .wbm_dat_i ({wb_m2s_mgmt_led0_dat, wb_m2s_cpu0_dbus_led0_dat}),
+    .wbm_sel_i ({wb_m2s_mgmt_led0_sel, wb_m2s_cpu0_dbus_led0_sel}),
+    .wbm_we_i  ({wb_m2s_mgmt_led0_we, wb_m2s_cpu0_dbus_led0_we}),
+    .wbm_cyc_i ({wb_m2s_mgmt_led0_cyc, wb_m2s_cpu0_dbus_led0_cyc}),
+    .wbm_stb_i ({wb_m2s_mgmt_led0_stb, wb_m2s_cpu0_dbus_led0_stb}),
+    .wbm_cti_i ({wb_m2s_mgmt_led0_cti, wb_m2s_cpu0_dbus_led0_cti}),
+    .wbm_bte_i ({wb_m2s_mgmt_led0_bte, wb_m2s_cpu0_dbus_led0_bte}),
+    .wbm_dat_o ({wb_s2m_mgmt_led0_dat, wb_s2m_cpu0_dbus_led0_dat}),
+    .wbm_ack_o ({wb_s2m_mgmt_led0_ack, wb_s2m_cpu0_dbus_led0_ack}),
+    .wbm_err_o ({wb_s2m_mgmt_led0_err, wb_s2m_cpu0_dbus_led0_err}),
+    .wbm_rty_o ({wb_s2m_mgmt_led0_rty, wb_s2m_cpu0_dbus_led0_rty}),
     .wbs_adr_o (wb_led0_adr_o),
     .wbs_dat_o (wb_led0_dat_o),
     .wbs_sel_o (wb_led0_sel_o),
@@ -420,52 +455,27 @@
     .wbs_rty_i (wb_led0_rty_i));
 
 wb_arbiter
-  #(.num_masters (3))
- wb_arbiter_cpu0_rom
-   (.wb_clk_i  (wb_clk_i),
-    .wb_rst_i  (wb_rst_i),
-    .wbm_adr_i ({wb_m2s_cpu0_ibus_cpu0_rom_adr, wb_m2s_cpu0_dbus_cpu0_rom_adr, wb_m2s_mgmt_cpu0_rom_adr}),
-    .wbm_dat_i ({wb_m2s_cpu0_ibus_cpu0_rom_dat, wb_m2s_cpu0_dbus_cpu0_rom_dat, wb_m2s_mgmt_cpu0_rom_dat}),
-    .wbm_sel_i ({wb_m2s_cpu0_ibus_cpu0_rom_sel, wb_m2s_cpu0_dbus_cpu0_rom_sel, wb_m2s_mgmt_cpu0_rom_sel}),
-    .wbm_we_i  ({wb_m2s_cpu0_ibus_cpu0_rom_we, wb_m2s_cpu0_dbus_cpu0_rom_we, wb_m2s_mgmt_cpu0_rom_we}),
-    .wbm_cyc_i ({wb_m2s_cpu0_ibus_cpu0_rom_cyc, wb_m2s_cpu0_dbus_cpu0_rom_cyc, wb_m2s_mgmt_cpu0_rom_cyc}),
-    .wbm_stb_i ({wb_m2s_cpu0_ibus_cpu0_rom_stb, wb_m2s_cpu0_dbus_cpu0_rom_stb, wb_m2s_mgmt_cpu0_rom_stb}),
-    .wbm_cti_i ({wb_m2s_cpu0_ibus_cpu0_rom_cti, wb_m2s_cpu0_dbus_cpu0_rom_cti, wb_m2s_mgmt_cpu0_rom_cti}),
-    .wbm_bte_i ({wb_m2s_cpu0_ibus_cpu0_rom_bte, wb_m2s_cpu0_dbus_cpu0_rom_bte, wb_m2s_mgmt_cpu0_rom_bte}),
-    .wbm_dat_o ({wb_s2m_cpu0_ibus_cpu0_rom_dat, wb_s2m_cpu0_dbus_cpu0_rom_dat, wb_s2m_mgmt_cpu0_rom_dat}),
-    .wbm_ack_o ({wb_s2m_cpu0_ibus_cpu0_rom_ack, wb_s2m_cpu0_dbus_cpu0_rom_ack, wb_s2m_mgmt_cpu0_rom_ack}),
-    .wbm_err_o ({wb_s2m_cpu0_ibus_cpu0_rom_err, wb_s2m_cpu0_dbus_cpu0_rom_err, wb_s2m_mgmt_cpu0_rom_err}),
-    .wbm_rty_o ({wb_s2m_cpu0_ibus_cpu0_rom_rty, wb_s2m_cpu0_dbus_cpu0_rom_rty, wb_s2m_mgmt_cpu0_rom_rty}),
-    .wbs_adr_o (wb_cpu0_rom_adr_o),
-    .wbs_dat_o (wb_cpu0_rom_dat_o),
-    .wbs_sel_o (wb_cpu0_rom_sel_o),
-    .wbs_we_o  (wb_cpu0_rom_we_o),
-    .wbs_cyc_o (wb_cpu0_rom_cyc_o),
-    .wbs_stb_o (wb_cpu0_rom_stb_o),
-    .wbs_cti_o (wb_cpu0_rom_cti_o),
-    .wbs_bte_o (wb_cpu0_rom_bte_o),
-    .wbs_dat_i (wb_cpu0_rom_dat_i),
-    .wbs_ack_i (wb_cpu0_rom_ack_i),
-    .wbs_err_i (wb_cpu0_rom_err_i),
-    .wbs_rty_i (wb_cpu0_rom_rty_i));
-
-wb_arbiter
   #(.num_masters (2))
  wb_arbiter_cpu0_ram
-   (.wb_clk_i  (wb_clk_i),
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i  (wb_clk_i),
     .wb_rst_i  (wb_rst_i),
-    .wbm_adr_i ({wb_m2s_cpu0_dbus_cpu0_ram_adr, wb_m2s_mgmt_cpu0_ram_adr}),
-    .wbm_dat_i ({wb_m2s_cpu0_dbus_cpu0_ram_dat, wb_m2s_mgmt_cpu0_ram_dat}),
-    .wbm_sel_i ({wb_m2s_cpu0_dbus_cpu0_ram_sel, wb_m2s_mgmt_cpu0_ram_sel}),
-    .wbm_we_i  ({wb_m2s_cpu0_dbus_cpu0_ram_we, wb_m2s_mgmt_cpu0_ram_we}),
-    .wbm_cyc_i ({wb_m2s_cpu0_dbus_cpu0_ram_cyc, wb_m2s_mgmt_cpu0_ram_cyc}),
-    .wbm_stb_i ({wb_m2s_cpu0_dbus_cpu0_ram_stb, wb_m2s_mgmt_cpu0_ram_stb}),
-    .wbm_cti_i ({wb_m2s_cpu0_dbus_cpu0_ram_cti, wb_m2s_mgmt_cpu0_ram_cti}),
-    .wbm_bte_i ({wb_m2s_cpu0_dbus_cpu0_ram_bte, wb_m2s_mgmt_cpu0_ram_bte}),
-    .wbm_dat_o ({wb_s2m_cpu0_dbus_cpu0_ram_dat, wb_s2m_mgmt_cpu0_ram_dat}),
-    .wbm_ack_o ({wb_s2m_cpu0_dbus_cpu0_ram_ack, wb_s2m_mgmt_cpu0_ram_ack}),
-    .wbm_err_o ({wb_s2m_cpu0_dbus_cpu0_ram_err, wb_s2m_mgmt_cpu0_ram_err}),
-    .wbm_rty_o ({wb_s2m_cpu0_dbus_cpu0_ram_rty, wb_s2m_mgmt_cpu0_ram_rty}),
+    .wbm_adr_i ({wb_m2s_mgmt_cpu0_ram_adr, wb_m2s_cpu0_dbus_cpu0_ram_adr}),
+    .wbm_dat_i ({wb_m2s_mgmt_cpu0_ram_dat, wb_m2s_cpu0_dbus_cpu0_ram_dat}),
+    .wbm_sel_i ({wb_m2s_mgmt_cpu0_ram_sel, wb_m2s_cpu0_dbus_cpu0_ram_sel}),
+    .wbm_we_i  ({wb_m2s_mgmt_cpu0_ram_we, wb_m2s_cpu0_dbus_cpu0_ram_we}),
+    .wbm_cyc_i ({wb_m2s_mgmt_cpu0_ram_cyc, wb_m2s_cpu0_dbus_cpu0_ram_cyc}),
+    .wbm_stb_i ({wb_m2s_mgmt_cpu0_ram_stb, wb_m2s_cpu0_dbus_cpu0_ram_stb}),
+    .wbm_cti_i ({wb_m2s_mgmt_cpu0_ram_cti, wb_m2s_cpu0_dbus_cpu0_ram_cti}),
+    .wbm_bte_i ({wb_m2s_mgmt_cpu0_ram_bte, wb_m2s_cpu0_dbus_cpu0_ram_bte}),
+    .wbm_dat_o ({wb_s2m_mgmt_cpu0_ram_dat, wb_s2m_cpu0_dbus_cpu0_ram_dat}),
+    .wbm_ack_o ({wb_s2m_mgmt_cpu0_ram_ack, wb_s2m_cpu0_dbus_cpu0_ram_ack}),
+    .wbm_err_o ({wb_s2m_mgmt_cpu0_ram_err, wb_s2m_cpu0_dbus_cpu0_ram_err}),
+    .wbm_rty_o ({wb_s2m_mgmt_cpu0_ram_rty, wb_s2m_cpu0_dbus_cpu0_ram_rty}),
     .wbs_adr_o (wb_cpu0_ram_adr_o),
     .wbs_dat_o (wb_cpu0_ram_dat_o),
     .wbs_sel_o (wb_cpu0_ram_sel_o),
@@ -479,4 +489,39 @@
     .wbs_err_i (wb_cpu0_ram_err_i),
     .wbs_rty_i (wb_cpu0_ram_rty_i));
 
+wb_arbiter
+  #(.num_masters (3))
+ wb_arbiter_cpu0_rom
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i  (wb_clk_i),
+    .wb_rst_i  (wb_rst_i),
+    .wbm_adr_i ({wb_m2s_mgmt_cpu0_rom_adr, wb_m2s_cpu0_ibus_cpu0_rom_adr, wb_m2s_cpu0_dbus_cpu0_rom_adr}),
+    .wbm_dat_i ({wb_m2s_mgmt_cpu0_rom_dat, wb_m2s_cpu0_ibus_cpu0_rom_dat, wb_m2s_cpu0_dbus_cpu0_rom_dat}),
+    .wbm_sel_i ({wb_m2s_mgmt_cpu0_rom_sel, wb_m2s_cpu0_ibus_cpu0_rom_sel, wb_m2s_cpu0_dbus_cpu0_rom_sel}),
+    .wbm_we_i  ({wb_m2s_mgmt_cpu0_rom_we, wb_m2s_cpu0_ibus_cpu0_rom_we, wb_m2s_cpu0_dbus_cpu0_rom_we}),
+    .wbm_cyc_i ({wb_m2s_mgmt_cpu0_rom_cyc, wb_m2s_cpu0_ibus_cpu0_rom_cyc, wb_m2s_cpu0_dbus_cpu0_rom_cyc}),
+    .wbm_stb_i ({wb_m2s_mgmt_cpu0_rom_stb, wb_m2s_cpu0_ibus_cpu0_rom_stb, wb_m2s_cpu0_dbus_cpu0_rom_stb}),
+    .wbm_cti_i ({wb_m2s_mgmt_cpu0_rom_cti, wb_m2s_cpu0_ibus_cpu0_rom_cti, wb_m2s_cpu0_dbus_cpu0_rom_cti}),
+    .wbm_bte_i ({wb_m2s_mgmt_cpu0_rom_bte, wb_m2s_cpu0_ibus_cpu0_rom_bte, wb_m2s_cpu0_dbus_cpu0_rom_bte}),
+    .wbm_dat_o ({wb_s2m_mgmt_cpu0_rom_dat, wb_s2m_cpu0_ibus_cpu0_rom_dat, wb_s2m_cpu0_dbus_cpu0_rom_dat}),
+    .wbm_ack_o ({wb_s2m_mgmt_cpu0_rom_ack, wb_s2m_cpu0_ibus_cpu0_rom_ack, wb_s2m_cpu0_dbus_cpu0_rom_ack}),
+    .wbm_err_o ({wb_s2m_mgmt_cpu0_rom_err, wb_s2m_cpu0_ibus_cpu0_rom_err, wb_s2m_cpu0_dbus_cpu0_rom_err}),
+    .wbm_rty_o ({wb_s2m_mgmt_cpu0_rom_rty, wb_s2m_cpu0_ibus_cpu0_rom_rty, wb_s2m_cpu0_dbus_cpu0_rom_rty}),
+    .wbs_adr_o (wb_cpu0_rom_adr_o),
+    .wbs_dat_o (wb_cpu0_rom_dat_o),
+    .wbs_sel_o (wb_cpu0_rom_sel_o),
+    .wbs_we_o  (wb_cpu0_rom_we_o),
+    .wbs_cyc_o (wb_cpu0_rom_cyc_o),
+    .wbs_stb_o (wb_cpu0_rom_stb_o),
+    .wbs_cti_o (wb_cpu0_rom_cti_o),
+    .wbs_bte_o (wb_cpu0_rom_bte_o),
+    .wbs_dat_i (wb_cpu0_rom_dat_i),
+    .wbs_ack_i (wb_cpu0_rom_ack_i),
+    .wbs_err_i (wb_cpu0_rom_err_i),
+    .wbs_rty_i (wb_cpu0_rom_rty_i));
+
 endmodule
diff --git a/openlane/user_proj/src/wb_interconnect.vh b/openlane/user_proj/src/wb_interconnect.vh
new file mode 100644
index 0000000..43e5d85
--- /dev/null
+++ b/openlane/user_proj/src/wb_interconnect.vh
@@ -0,0 +1,204 @@
+// THIS FILE IS AUTOGENERATED BY wb_interconA_gen
+// ANY MANUAL CHANGES WILL BE LOST
+wire [31:0] wb_m2s_mgmt_adr;
+wire [31:0] wb_m2s_mgmt_dat;
+wire  [3:0] wb_m2s_mgmt_sel;
+wire        wb_m2s_mgmt_we;
+wire        wb_m2s_mgmt_cyc;
+wire        wb_m2s_mgmt_stb;
+wire  [2:0] wb_m2s_mgmt_cti;
+wire  [1:0] wb_m2s_mgmt_bte;
+wire [31:0] wb_s2m_mgmt_dat;
+wire        wb_s2m_mgmt_ack;
+wire        wb_s2m_mgmt_err;
+wire        wb_s2m_mgmt_rty;
+wire [31:0] wb_m2s_cpu0_ibus_adr;
+wire [31:0] wb_m2s_cpu0_ibus_dat;
+wire  [3:0] wb_m2s_cpu0_ibus_sel;
+wire        wb_m2s_cpu0_ibus_we;
+wire        wb_m2s_cpu0_ibus_cyc;
+wire        wb_m2s_cpu0_ibus_stb;
+wire  [2:0] wb_m2s_cpu0_ibus_cti;
+wire  [1:0] wb_m2s_cpu0_ibus_bte;
+wire [31:0] wb_s2m_cpu0_ibus_dat;
+wire        wb_s2m_cpu0_ibus_ack;
+wire        wb_s2m_cpu0_ibus_err;
+wire        wb_s2m_cpu0_ibus_rty;
+wire [31:0] wb_m2s_cpu0_dbus_adr;
+wire [31:0] wb_m2s_cpu0_dbus_dat;
+wire  [3:0] wb_m2s_cpu0_dbus_sel;
+wire        wb_m2s_cpu0_dbus_we;
+wire        wb_m2s_cpu0_dbus_cyc;
+wire        wb_m2s_cpu0_dbus_stb;
+wire  [2:0] wb_m2s_cpu0_dbus_cti;
+wire  [1:0] wb_m2s_cpu0_dbus_bte;
+wire [31:0] wb_s2m_cpu0_dbus_dat;
+wire        wb_s2m_cpu0_dbus_ack;
+wire        wb_s2m_cpu0_dbus_err;
+wire        wb_s2m_cpu0_dbus_rty;
+wire [31:0] wb_m2s_timer0_adr;
+wire [31:0] wb_m2s_timer0_dat;
+wire  [3:0] wb_m2s_timer0_sel;
+wire        wb_m2s_timer0_we;
+wire        wb_m2s_timer0_cyc;
+wire        wb_m2s_timer0_stb;
+wire  [2:0] wb_m2s_timer0_cti;
+wire  [1:0] wb_m2s_timer0_bte;
+wire [31:0] wb_s2m_timer0_dat;
+wire        wb_s2m_timer0_ack;
+wire        wb_s2m_timer0_err;
+wire        wb_s2m_timer0_rty;
+wire [31:0] wb_m2s_uart0_adr;
+wire [31:0] wb_m2s_uart0_dat;
+wire  [3:0] wb_m2s_uart0_sel;
+wire        wb_m2s_uart0_we;
+wire        wb_m2s_uart0_cyc;
+wire        wb_m2s_uart0_stb;
+wire  [2:0] wb_m2s_uart0_cti;
+wire  [1:0] wb_m2s_uart0_bte;
+wire [31:0] wb_s2m_uart0_dat;
+wire        wb_s2m_uart0_ack;
+wire        wb_s2m_uart0_err;
+wire        wb_s2m_uart0_rty;
+wire [31:0] wb_m2s_led0_adr;
+wire [31:0] wb_m2s_led0_dat;
+wire  [3:0] wb_m2s_led0_sel;
+wire        wb_m2s_led0_we;
+wire        wb_m2s_led0_cyc;
+wire        wb_m2s_led0_stb;
+wire  [2:0] wb_m2s_led0_cti;
+wire  [1:0] wb_m2s_led0_bte;
+wire [31:0] wb_s2m_led0_dat;
+wire        wb_s2m_led0_ack;
+wire        wb_s2m_led0_err;
+wire        wb_s2m_led0_rty;
+wire [31:0] wb_m2s_cpu0_ram_adr;
+wire [31:0] wb_m2s_cpu0_ram_dat;
+wire  [3:0] wb_m2s_cpu0_ram_sel;
+wire        wb_m2s_cpu0_ram_we;
+wire        wb_m2s_cpu0_ram_cyc;
+wire        wb_m2s_cpu0_ram_stb;
+wire  [2:0] wb_m2s_cpu0_ram_cti;
+wire  [1:0] wb_m2s_cpu0_ram_bte;
+wire [31:0] wb_s2m_cpu0_ram_dat;
+wire        wb_s2m_cpu0_ram_ack;
+wire        wb_s2m_cpu0_ram_err;
+wire        wb_s2m_cpu0_ram_rty;
+wire [31:0] wb_m2s_cpu0_rom_adr;
+wire [31:0] wb_m2s_cpu0_rom_dat;
+wire  [3:0] wb_m2s_cpu0_rom_sel;
+wire        wb_m2s_cpu0_rom_we;
+wire        wb_m2s_cpu0_rom_cyc;
+wire        wb_m2s_cpu0_rom_stb;
+wire  [2:0] wb_m2s_cpu0_rom_cti;
+wire  [1:0] wb_m2s_cpu0_rom_bte;
+wire [31:0] wb_s2m_cpu0_rom_dat;
+wire        wb_s2m_cpu0_rom_ack;
+wire        wb_s2m_cpu0_rom_err;
+wire        wb_s2m_cpu0_rom_rty;
+
+wb_interconA wb_interconA0
+   (
+`ifdef USE_POWER_PINS
+  .vccd1(vccd1),	// User area 1 1.8V power
+  .vssd1(vssd1),	// User area 1 digital ground
+`endif
+    .wb_clk_i           (wb_clk),
+    .wb_rst_i           (wb_rst),
+    .wb_mgmt_adr_i      (wb_m2s_mgmt_adr),
+    .wb_mgmt_dat_i      (wb_m2s_mgmt_dat),
+    .wb_mgmt_sel_i      (wb_m2s_mgmt_sel),
+    .wb_mgmt_we_i       (wb_m2s_mgmt_we),
+    .wb_mgmt_cyc_i      (wb_m2s_mgmt_cyc),
+    .wb_mgmt_stb_i      (wb_m2s_mgmt_stb),
+    .wb_mgmt_cti_i      (wb_m2s_mgmt_cti),
+    .wb_mgmt_bte_i      (wb_m2s_mgmt_bte),
+    .wb_mgmt_dat_o      (wb_s2m_mgmt_dat),
+    .wb_mgmt_ack_o      (wb_s2m_mgmt_ack),
+    .wb_mgmt_err_o      (wb_s2m_mgmt_err),
+    .wb_mgmt_rty_o      (wb_s2m_mgmt_rty),
+    .wb_cpu0_ibus_adr_i (wb_m2s_cpu0_ibus_adr),
+    .wb_cpu0_ibus_dat_i (wb_m2s_cpu0_ibus_dat),
+    .wb_cpu0_ibus_sel_i (wb_m2s_cpu0_ibus_sel),
+    .wb_cpu0_ibus_we_i  (wb_m2s_cpu0_ibus_we),
+    .wb_cpu0_ibus_cyc_i (wb_m2s_cpu0_ibus_cyc),
+    .wb_cpu0_ibus_stb_i (wb_m2s_cpu0_ibus_stb),
+    .wb_cpu0_ibus_cti_i (wb_m2s_cpu0_ibus_cti),
+    .wb_cpu0_ibus_bte_i (wb_m2s_cpu0_ibus_bte),
+    .wb_cpu0_ibus_dat_o (wb_s2m_cpu0_ibus_dat),
+    .wb_cpu0_ibus_ack_o (wb_s2m_cpu0_ibus_ack),
+    .wb_cpu0_ibus_err_o (wb_s2m_cpu0_ibus_err),
+    .wb_cpu0_ibus_rty_o (wb_s2m_cpu0_ibus_rty),
+    .wb_cpu0_dbus_adr_i (wb_m2s_cpu0_dbus_adr),
+    .wb_cpu0_dbus_dat_i (wb_m2s_cpu0_dbus_dat),
+    .wb_cpu0_dbus_sel_i (wb_m2s_cpu0_dbus_sel),
+    .wb_cpu0_dbus_we_i  (wb_m2s_cpu0_dbus_we),
+    .wb_cpu0_dbus_cyc_i (wb_m2s_cpu0_dbus_cyc),
+    .wb_cpu0_dbus_stb_i (wb_m2s_cpu0_dbus_stb),
+    .wb_cpu0_dbus_cti_i (wb_m2s_cpu0_dbus_cti),
+    .wb_cpu0_dbus_bte_i (wb_m2s_cpu0_dbus_bte),
+    .wb_cpu0_dbus_dat_o (wb_s2m_cpu0_dbus_dat),
+    .wb_cpu0_dbus_ack_o (wb_s2m_cpu0_dbus_ack),
+    .wb_cpu0_dbus_err_o (wb_s2m_cpu0_dbus_err),
+    .wb_cpu0_dbus_rty_o (wb_s2m_cpu0_dbus_rty),
+    .wb_timer0_adr_o    (wb_m2s_timer0_adr),
+    .wb_timer0_dat_o    (wb_m2s_timer0_dat),
+    .wb_timer0_sel_o    (wb_m2s_timer0_sel),
+    .wb_timer0_we_o     (wb_m2s_timer0_we),
+    .wb_timer0_cyc_o    (wb_m2s_timer0_cyc),
+    .wb_timer0_stb_o    (wb_m2s_timer0_stb),
+    .wb_timer0_cti_o    (wb_m2s_timer0_cti),
+    .wb_timer0_bte_o    (wb_m2s_timer0_bte),
+    .wb_timer0_dat_i    (wb_s2m_timer0_dat),
+    .wb_timer0_ack_i    (wb_s2m_timer0_ack),
+    .wb_timer0_err_i    (wb_s2m_timer0_err),
+    .wb_timer0_rty_i    (wb_s2m_timer0_rty),
+    .wb_uart0_adr_o     (wb_m2s_uart0_adr),
+    .wb_uart0_dat_o     (wb_m2s_uart0_dat),
+    .wb_uart0_sel_o     (wb_m2s_uart0_sel),
+    .wb_uart0_we_o      (wb_m2s_uart0_we),
+    .wb_uart0_cyc_o     (wb_m2s_uart0_cyc),
+    .wb_uart0_stb_o     (wb_m2s_uart0_stb),
+    .wb_uart0_cti_o     (wb_m2s_uart0_cti),
+    .wb_uart0_bte_o     (wb_m2s_uart0_bte),
+    .wb_uart0_dat_i     (wb_s2m_uart0_dat),
+    .wb_uart0_ack_i     (wb_s2m_uart0_ack),
+    .wb_uart0_err_i     (wb_s2m_uart0_err),
+    .wb_uart0_rty_i     (wb_s2m_uart0_rty),
+    .wb_led0_adr_o      (wb_m2s_led0_adr),
+    .wb_led0_dat_o      (wb_m2s_led0_dat),
+    .wb_led0_sel_o      (wb_m2s_led0_sel),
+    .wb_led0_we_o       (wb_m2s_led0_we),
+    .wb_led0_cyc_o      (wb_m2s_led0_cyc),
+    .wb_led0_stb_o      (wb_m2s_led0_stb),
+    .wb_led0_cti_o      (wb_m2s_led0_cti),
+    .wb_led0_bte_o      (wb_m2s_led0_bte),
+    .wb_led0_dat_i      (wb_s2m_led0_dat),
+    .wb_led0_ack_i      (wb_s2m_led0_ack),
+    .wb_led0_err_i      (wb_s2m_led0_err),
+    .wb_led0_rty_i      (wb_s2m_led0_rty),
+    .wb_cpu0_ram_adr_o  (wb_m2s_cpu0_ram_adr),
+    .wb_cpu0_ram_dat_o  (wb_m2s_cpu0_ram_dat),
+    .wb_cpu0_ram_sel_o  (wb_m2s_cpu0_ram_sel),
+    .wb_cpu0_ram_we_o   (wb_m2s_cpu0_ram_we),
+    .wb_cpu0_ram_cyc_o  (wb_m2s_cpu0_ram_cyc),
+    .wb_cpu0_ram_stb_o  (wb_m2s_cpu0_ram_stb),
+    .wb_cpu0_ram_cti_o  (wb_m2s_cpu0_ram_cti),
+    .wb_cpu0_ram_bte_o  (wb_m2s_cpu0_ram_bte),
+    .wb_cpu0_ram_dat_i  (wb_s2m_cpu0_ram_dat),
+    .wb_cpu0_ram_ack_i  (wb_s2m_cpu0_ram_ack),
+    .wb_cpu0_ram_err_i  (wb_s2m_cpu0_ram_err),
+    .wb_cpu0_ram_rty_i  (wb_s2m_cpu0_ram_rty),
+    .wb_cpu0_rom_adr_o  (wb_m2s_cpu0_rom_adr),
+    .wb_cpu0_rom_dat_o  (wb_m2s_cpu0_rom_dat),
+    .wb_cpu0_rom_sel_o  (wb_m2s_cpu0_rom_sel),
+    .wb_cpu0_rom_we_o   (wb_m2s_cpu0_rom_we),
+    .wb_cpu0_rom_cyc_o  (wb_m2s_cpu0_rom_cyc),
+    .wb_cpu0_rom_stb_o  (wb_m2s_cpu0_rom_stb),
+    .wb_cpu0_rom_cti_o  (wb_m2s_cpu0_rom_cti),
+    .wb_cpu0_rom_bte_o  (wb_m2s_cpu0_rom_bte),
+    .wb_cpu0_rom_dat_i  (wb_s2m_cpu0_rom_dat),
+    .wb_cpu0_rom_ack_i  (wb_s2m_cpu0_rom_ack),
+    .wb_cpu0_rom_err_i  (wb_s2m_cpu0_rom_err),
+    .wb_cpu0_rom_rty_i  (wb_s2m_cpu0_rom_rty));
+
diff --git a/openlane/user_proj/src/wb_led.v b/openlane/user_proj/src/wb_led.v
index cc0a93f..5755d18 100644
--- a/openlane/user_proj/src/wb_led.v
+++ b/openlane/user_proj/src/wb_led.v
@@ -24,16 +24,14 @@
 // Wishbone register addresses
 localparam
     wb_r_DATA  = 1'b0,
-    wb_r_SHIFT = 1'b1,
     wb_r_MAX   = 1'b1;
 
 // register
 reg [31:0] data;
-reg [5:0] shift;
 
 // output generation
 always @(posedge i_clk) begin
-    o_led <= data[shift];
+    o_led <= data[0];
 end
 
 // Since the incoming wishbone address from the CPU increments by 4 bytes, we
@@ -45,7 +43,6 @@
     if (i_reset) begin
         o_wb_ack <= 0;
         data <= 0;
-        shift <= 0;
     end else begin
         // Wishbone interface logic
         o_wb_ack <= 1'b0;
@@ -55,14 +52,12 @@
             // Register read
             case (register_index)
                 wb_r_DATA: o_wb_dat <= data;
-                wb_r_SHIFT:o_wb_dat <= shift;
             endcase
 
             // Register write
             if (i_wb_we) begin
                 case (register_index)
                     wb_r_DATA: data <= i_wb_dat;
-                    wb_r_SHIFT: shift <= i_wb_dat;
                 endcase
             end
         end
diff --git a/openlane/user_proj/src/wb_openram_wrapper.v b/openlane/user_proj/src/wb_openram_wrapper.v
index a39c814..3b40509 100644
--- a/openlane/user_proj/src/wb_openram_wrapper.v
+++ b/openlane/user_proj/src/wb_openram_wrapper.v
@@ -15,74 +15,124 @@
 
 `default_nettype none
 
-module wb_openram_wrapper 
+module wb_openram_wrapper1
 #(
-    parameter BASE_ADDR = 32'h30c0_0000,
-    parameter ADDR_WIDTH = 8
+    parameter BASE_ADDR = 32'h3000_0000,
+    parameter ADDR_WIDTH = 9
 )
 (
 `ifdef USE_POWER_PINS
     inout vccd1,	// User area 1 1.8V supply
     inout vssd1,	// User area 1 digital ground
 `endif
+    input             wb_clk_i,
+    input             wb_rst_i,
+    input             wbs_stb_i,
+    input             wbs_cyc_i,
+    input             wbs_we_i,
+    input   [3:0]     wbs_sel_i,
+    input   [31:0]    wbs_dat_i,
+    input   [31:0]    wbs_adr_i,
+    output reg        wbs_ack_o,
+    output reg [31:0] wbs_dat_o,
 
-    // Wishbone port A
-    input           wb_clk_i,
-    input           wb_rst_i,
-    input           wbs_stb_i,
-    input           wbs_cyc_i,
-    input           wbs_we_i,
-    input   [3:0]   wbs_sel_i,
-    input   [31:0]  wbs_dat_i,
-    input   [31:0]  wbs_adr_i,
-    output          wbs_ack_o,
-    output  [31:0]  wbs_dat_o,
-
-    // OpenRAM interface - almost dual port: RW + R
-    // Port 0: RW
-    output                      ram_clk0,       // clock
-    output                      ram_csb0,       // active low chip select
-    output                      ram_web0,       // active low write control
-    output  [3:0]              	ram_wmask0,     // write (byte) mask
+    // OpenRAM interface - RW
+    output                      ram_csb0,
+    output                      ram_web0,
+    output  [3:0]              	ram_wmask0,
     output  [ADDR_WIDTH-1:0]    ram_addr0,
-    input   [31:0]              ram_din0,
-    output  [31:0]              ram_dout0,
-
-    // Port 1: R (UNUSED)
-    output                      ram_clk1,       // clock
-    output                      ram_csb1,       // active low chip select
-    output  [ADDR_WIDTH-1:0]    ram_addr1,  
-    output  [31:0]              ram_dout1
+    input   [31:0]              ram_dout0,
+    output reg [31:0]           ram_din0
 );
 
-parameter ADDR_LO_MASK = (1 << ADDR_WIDTH) - 1;
-parameter ADDR_HI_MASK = 32'hffff_ffff - ADDR_LO_MASK;
-
-wire ram_cs;
-assign ram_cs = wbs_stb_i && wbs_cyc_i && ((wbs_adr_i & ADDR_HI_MASK) == BASE_ADDR) && !wb_rst_i;
-
-reg ram_cs_r;
-reg ram_wbs_ack_r;
-always @(negedge wb_clk_i) begin
+always @(posedge wb_clk_i) begin
     if (wb_rst_i) begin
-        ram_cs_r <= 0;
-        ram_wbs_ack_r <= 0;
-    end
-    else begin
-        ram_cs_r <= !ram_cs_r && ram_cs;
-        ram_wbs_ack_r <= ram_cs_r;
+        wbs_ack_o <= 1'b0;
+    end else begin
+        wbs_ack_o <= 1'b0;
+        if (wbs_cyc_i & wbs_stb_i & ~wbs_ack_o) begin
+            wbs_ack_o <= 1'b1;
+            wbs_dat_o <= ram_dout0;
+            if (wbs_we_i) begin
+                ram_din0 <= wbs_dat_i;
+            end
+        end
     end
 end
-     
-assign ram_clk0 = wb_clk_i;
-assign ram_csb0 = !ram_cs_r;
+
+assign ram_csb0 = ~wbs_stb_i;
 assign ram_web0 = ~wbs_we_i;
 assign ram_wmask0 = wbs_sel_i;
 assign ram_addr0 = wbs_adr_i[ADDR_WIDTH-1:0];
-assign ram_dout0 = wbs_dat_i;
 
-assign wbs_dat_o = ram_din0;
-assign wbs_ack_o = ram_wbs_ack_r && ram_cs;
+endmodule	// wb_openram_wrapper
+
+module wb_openram_wrapper
+#(
+    parameter BASE_ADDR = 32'h3000_0000,
+    parameter ADDR_WIDTH = 9
+)
+(
+`ifdef USE_POWER_PINS
+    inout vccd1,	// User area 1 1.8V supply
+    inout vssd1,	// User area 1 digital ground
+`endif
+    input wb_clk_i,
+    input wb_rst_i,
+
+    input [31:0] wbs_adr_i,
+    input [31:0] wbs_dat_i,
+    input [3:0] wbs_sel_i,
+    input wbs_we_i,
+    input wbs_cyc_i,
+    input wbs_stb_i,
+
+    output wbs_ack_o,
+    output [31:0] wbs_dat_o,
+
+    // OpenRAM interface - RW
+    output                      ram_csb0,
+    output                      ram_web0,
+    output  [3:0]              	ram_wmask0,
+    output  [ADDR_WIDTH-1:0]    ram_addr0,
+    input   [31:0]              ram_dout0,
+    output  [31:0]              ram_din0
+);
+
+    wire valid;
+    wire ram_wen;
+    wire [3:0] wen; // write enable
+
+    assign valid = wbs_cyc_i & wbs_stb_i;
+    assign ram_wen = wbs_we_i && valid;
+
+    assign wen = wbs_sel_i & {4{ram_wen}} ;
+
+    /*
+        Ack Generation
+            - write transaction: asserted upon receiving adr_i & dat_i 
+            - read transaction : asserted one clock cycle after receiving the adr_i & dat_i
+    */
+
+    reg wb_ack_read;
+    reg wbs_ack_o;
+
+    always @(posedge wb_clk_i) begin
+        if (wb_rst_i == 1'b 1) begin
+            wb_ack_read <= 1'b0;
+            wbs_ack_o <= 1'b0;
+        end else begin
+            wb_ack_read <= (valid & !wbs_ack_o) & !wb_ack_read;
+            wbs_ack_o    <= wbs_we_i? (valid & !wbs_ack_o): wb_ack_read;
+        end
+    end
+
+    assign ram_csb0 = ~valid;
+    assign ram_web0 = ~|wen;
+    assign ram_wmask0 = wen;
+    assign ram_addr0 = wbs_adr_i[ADDR_WIDTH-1:0];
+    assign wbs_dat_o = ram_dout0;
+    assign ram_din0 = wbs_dat_i;
 
 endmodule	// wb_openram_wrapper
 
diff --git a/openlane/user_project_wrapper/src/user_project_wrapper.v b/openlane/user_project_wrapper/src/user_project_wrapper.v
index e42e954..99600b5 100644
--- a/openlane/user_project_wrapper/src/user_project_wrapper.v
+++ b/openlane/user_project_wrapper/src/user_project_wrapper.v
@@ -93,9 +93,6 @@
 wire [8:0] o_waddr0;
 wire [31:0]o_din0;
 wire [31:0]i_dout0;
-wire o_csb1;
-wire [8:0] o_addr1;
-wire [31:0]i_dout1;
 
 wire o_csb0_1;
 wire o_web0_1;
@@ -103,9 +100,6 @@
 wire [8:0] o_waddr0_1;
 wire [31:0]o_din0_1;
 wire [31:0]i_dout0_1;
-wire o_csb1_1;
-wire [8:0] o_addr1_1;
-wire [31:0]i_dout1_1;
 
 sky130_sram_2kbyte_1rw1r_32x512_8 sram (
 `ifdef USE_POWER_PINS
@@ -119,10 +113,9 @@
     .addr0  (o_waddr0),
     .din0   (o_din0),
     .dout0  (i_dout0),
-    .clk1   (wb_clk_i),
-    .csb1   (o_csb1),
-    .addr1  (o_addr1),
-    .dout1  (i_dout1)
+    .clk1   (1'b0),
+    .csb1   (1'b0),
+    .addr1  (9'h0)
 );
 
 sky130_sram_2kbyte_1rw1r_32x512_8 sram1 (
@@ -137,10 +130,9 @@
     .addr0  (o_waddr0_1),
     .din0   (o_din0_1),
     .dout0  (i_dout0_1),
-    .clk1   (wb_clk_i),
-    .csb1   (o_csb1_1),
-    .addr1  (o_addr1_1),
-    .dout1  (i_dout1_1)
+    .clk1   (1'b0),
+    .csb1   (1'b0),
+    .addr1  (9'h0)
 );
 
 user_proj mprj (
@@ -149,6 +141,9 @@
 	.vssd1(vssd1),	// User area 1 digital ground
 `endif
 
+    .clk_i(wb_clk_i),
+    .rst_i(wb_rst_i),
+
     .wb_clk_i(wb_clk_i),
     .wb_rst_i(wb_rst_i),
 
@@ -180,22 +175,16 @@
     .o_waddr0(o_waddr0),
     .o_din0(o_din0),
     .i_dout0(i_dout0),
-    .o_addr1(o_addr1),
-    .i_dout1(i_dout1),
     .o_web0(o_web0),
     .o_csb0(o_csb0),
-    .o_csb1(o_csb1),
 
     // SRAM1
     .o_wmask0_1(o_wmask0_1),
     .o_waddr0_1(o_waddr0_1),
     .o_din0_1(o_din0_1),
     .i_dout0_1(i_dout0_1),
-    .o_addr1_1(o_addr1_1),
-    .i_dout1_1(i_dout1_1),
     .o_web0_1(o_web0_1),
-    .o_csb0_1(o_csb0_1),
-    .o_csb1_1(o_csb1_1)
+    .o_csb0_1(o_csb0_1)
 );
 
 endmodule	// user_project_wrapper