diff --git a/testbench/wishbone/lm32_testsys/lm32_test_system.vhd b/testbench/wishbone/lm32_testsys/lm32_test_system.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..4a3a05b12ed9b99d74da6fe822d174822ef80763
--- /dev/null
+++ b/testbench/wishbone/lm32_testsys/lm32_test_system.vhd
@@ -0,0 +1,151 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+use work.wishbone_pkg.all;
+
+entity lm32_test_system is
+  
+  port (
+    clk_sys_i : in std_logic;
+    rst_n_i   : in std_logic;
+
+    gpio_b    : inout std_logic_vector(31 downto 0);
+    onewire_b : inout std_logic;
+    txd_o     : out   std_logic;
+    rxd_i     : in    std_logic
+    );
+
+end lm32_test_system;
+
+architecture rtl of lm32_test_system is  
+  constant c_cnx_slave_ports  : integer := 2;
+  constant c_cnx_master_ports : integer := 3;
+
+  constant c_peripherals : integer := 3;
+
+
+  signal cnx_slave_in  : t_wishbone_slave_in_array(c_cnx_slave_ports-1 downto 0);
+  signal cnx_slave_out : t_wishbone_slave_out_array(c_cnx_slave_ports-1 downto 0);
+
+  signal cnx_master_in  : t_wishbone_master_in_array(c_cnx_master_ports-1 downto 0);
+  signal cnx_master_out : t_wishbone_master_out_array(c_cnx_master_ports-1 downto 0);
+
+  signal periph_out : t_wishbone_master_out_array(0 to c_peripherals-1);
+  signal periph_in  : t_wishbone_master_in_array(0 to c_peripherals-1);
+
+
+  constant c_cfg_base_addr : t_wishbone_address_array(c_cnx_master_ports-1 downto 0) :=
+    (0 => x"00000000",                  -- CPU I-mem
+     1 => x"10000000",                  -- CPU D-mem
+     2 => x"20000000");                 -- Peripherals
+
+  constant c_cfg_base_mask : t_wishbone_address_array(c_cnx_master_ports-1 downto 0) :=
+    (0 => x"f0000000",
+     1 => x"f0000000",
+     2 => x"f0000000");
+
+  signal owr_en_slv, owr_in_slv : std_logic_vector(0 downto 0);
+  
+begin  -- rtl
+
+  U_CPU : xwb_lm32
+    generic map (
+      g_profile => "medium")
+    port map (
+      clk_sys_i => clk_sys_i,
+      rst_n_i   => rst_n_i,
+      irq_i     => x"00000000",
+      dwb_o     => cnx_slave_in(0),
+      dwb_i     => cnx_slave_out(0),
+      iwb_o     => cnx_slave_in(1),
+      iwb_i     => cnx_slave_out(1));
+
+  U_Intercon : xwb_crossbar
+    generic map (
+      g_num_masters => c_cnx_slave_ports,
+      g_num_slaves  => c_cnx_master_ports,
+      g_registered  => false)
+    port map (
+      clk_sys_i     => clk_sys_i,
+      rst_n_i       => rst_n_i,
+      slave_i       => cnx_slave_in,
+      slave_o       => cnx_slave_out,
+      master_i      => cnx_master_in,
+      master_o      => cnx_master_out,
+      cfg_address_i => c_cfg_base_addr,
+      cfg_mask_i    => c_cfg_base_mask);
+
+  U_DPRAM : xwb_dpram
+    generic map (
+      g_size                  => 8192,
+      g_init_file             => "sw/main.ram",
+      g_must_have_init_file   => true,
+      g_slave1_interface_mode => PIPELINED,
+      g_slave2_interface_mode => PIPELINED,
+      g_slave1_granularity    => BYTE,
+      g_slave2_granularity    => BYTE)
+    port map (
+      clk_sys_i => clk_sys_i,
+      rst_n_i   => rst_n_i,
+      slave1_i  => cnx_master_out(0),
+      slave1_o  => cnx_master_in(0),
+      slave2_i  => cnx_master_out(1),
+      slave2_o  => cnx_master_in(1));
+
+  U_peripheral_Fanout : xwb_bus_fanout
+    generic map (
+      g_num_outputs          => c_peripherals,
+      g_bits_per_slave       => 8,
+      g_address_granularity  => BYTE,
+      g_slave_interface_mode => PIPELINED)
+    port map (
+      clk_sys_i => clk_sys_i,
+      rst_n_i   => rst_n_i,
+      slave_i   => cnx_master_out(2),
+      slave_o   => cnx_master_in(2),
+      master_i  => periph_in,
+      master_o  => periph_out);
+
+  U_GPIO : xwb_gpio_port
+    generic map (
+      g_interface_mode         => CLASSIC,
+      g_address_granularity    => BYTE,
+      g_num_pins               => 32,
+      g_with_builtin_tristates => true)
+    port map (
+      clk_sys_i => clk_sys_i,
+      rst_n_i   => rst_n_i,
+      slave_i   => periph_out(0),
+      slave_o   => periph_in(0),
+      gpio_b    => gpio_b,
+      gpio_in_i => x"00000000"
+      );
+
+  U_UART : xwb_simple_uart
+    generic map (
+      g_interface_mode      => CLASSIC,
+      g_address_granularity => BYTE)
+    port map (
+      clk_sys_i  => clk_sys_i,
+      rst_n_i    => rst_n_i,
+      slave_i    => periph_out(1),
+      slave_o    => periph_in(1),
+      uart_rxd_i => rxd_i,
+      uart_txd_o => txd_o);
+
+  U_OneWire : xwb_onewire_master
+    generic map (
+      g_interface_mode      => CLASSIC,
+      g_address_granularity => BYTE,
+      g_num_ports           => 1)
+    port map (
+      clk_sys_i => clk_sys_i,
+      rst_n_i   => rst_n_i,
+      slave_i   => periph_out(2),
+      slave_o   => periph_in(2),
+      owr_en_o  => owr_en_slv,
+      owr_i     => owr_in_slv);
+
+  onewire_b <= '0' when owr_en_slv(0) = '1' else 'Z';
+  owr_in_slv(0) <= onewire_b;
+end rtl;
diff --git a/testbench/wishbone/lm32_testsys/main.sv b/testbench/wishbone/lm32_testsys/main.sv
new file mode 100644
index 0000000000000000000000000000000000000000..47c39914ca747b00f209bb9e608f201a78b2b987
--- /dev/null
+++ b/testbench/wishbone/lm32_testsys/main.sv
@@ -0,0 +1,27 @@
+`timescale 1ns/1ps
+
+module main;
+
+   reg clk_sys  =0;
+   reg rst_n    = 0;
+
+   always #5 clk_sys <= ~clk_sys;
+   
+   initial begin
+      repeat(3) @(posedge clk_sys);
+      rst_n  = 1;
+   end
+
+   
+   lm32_test_system
+     DUT (
+          .clk_sys_i (clk_sys),
+          .rst_n_i   (rst_n),
+          .gpio_b ()
+          );
+   
+                            
+
+endmodule // main
+
+
diff --git a/testbench/wishbone/lm32_testsys/manifest.py b/testbench/wishbone/lm32_testsys/manifest.py
new file mode 100644
index 0000000000000000000000000000000000000000..ace1434fa7f90c58bc1026ebbc36add41eb5004f
--- /dev/null
+++ b/testbench/wishbone/lm32_testsys/manifest.py
@@ -0,0 +1,5 @@
+action = "simulation"
+target = "simulation"
+
+modules = {"local" : [ "../../.." ]	};
+files = ["main.sv", "lm32_test_system.vhd"]		
diff --git a/testbench/wishbone/lm32_testsys/run.do b/testbench/wishbone/lm32_testsys/run.do
new file mode 100644
index 0000000000000000000000000000000000000000..d29641e2e009d8cb94611f5503bc2f93406f8b85
--- /dev/null
+++ b/testbench/wishbone/lm32_testsys/run.do
@@ -0,0 +1,10 @@
+make
+
+vsim -L XilinxCoreLib -L secureip work.main -voptargs="+acc"
+radix -hexadecimal
+do wave.do
+set StdArithNoWarnings 1
+set NumericStdNoWarnings 1
+
+run 100us
+wave zoomfull
\ No newline at end of file
diff --git a/testbench/wishbone/lm32_testsys/sw/main.ram b/testbench/wishbone/lm32_testsys/sw/main.ram
new file mode 100644
index 0000000000000000000000000000000000000000..f732d823bfbb4f32b384b665b27c95396c101077
--- /dev/null
+++ b/testbench/wishbone/lm32_testsys/sw/main.ram
@@ -0,0 +1,230 @@
+write 0 98000000
+write 1 D0000000
+write 2 D0200000
+write 3 78010000
+write 4 38210000
+write 5 D0E10000
+write 6 F800003A
+write 7 34000000
+write 8 00000000
+write 9 00000000
+write a 00000000
+write b 00000000
+write c 00000000
+write d 00000000
+write e 00000000
+write f 00000000
+write 10 00000000
+write 11 00000000
+write 12 00000000
+write 13 00000000
+write 14 00000000
+write 15 00000000
+write 16 00000000
+write 17 00000000
+write 18 00000000
+write 19 00000000
+write 1a 00000000
+write 1b 00000000
+write 1c 00000000
+write 1d 00000000
+write 1e 00000000
+write 1f 00000000
+write 20 00000000
+write 21 00000000
+write 22 00000000
+write 23 00000000
+write 24 00000000
+write 25 00000000
+write 26 00000000
+write 27 00000000
+write 28 00000000
+write 29 00000000
+write 2a 00000000
+write 2b 00000000
+write 2c 00000000
+write 2d 00000000
+write 2e 00000000
+write 2f 00000000
+write 30 5B9D0000
+write 31 F8000020
+write 32 34010002
+write 33 F8000041
+write 34 E0000030
+write 35 34000000
+write 36 34000000
+write 37 34000000
+write 38 00000000
+write 39 00000000
+write 3a 00000000
+write 3b 00000000
+write 3c 00000000
+write 3d 00000000
+write 3e 00000000
+write 3f 00000000
+write 40 98000000
+write 41 781C0000
+write 42 3B9CFFFC
+write 43 781A0000
+write 44 3B5A8390
+write 45 78010000
+write 46 38210394
+write 47 34020000
+write 48 78030000
+write 49 38630394
+write 4a C8611800
+write 4b F800005F
+write 4c 34010000
+write 4d 34020000
+write 4e 34030000
+write 4f F8000026
+write 50 E0000000
+write 51 379CFFC4
+write 52 5B810004
+write 53 5B820008
+write 54 5B83000C
+write 55 5B840010
+write 56 5B850014
+write 57 5B860018
+write 58 5B87001C
+write 59 5B880020
+write 5a 5B890024
+write 5b 5B8A0028
+write 5c 5B9E0034
+write 5d 5B9F0038
+write 5e 2B81003C
+write 5f 5B810030
+write 60 BB800800
+write 61 3421003C
+write 62 5B81002C
+write 63 C3A00000
+write 64 2B810004
+write 65 2B820008
+write 66 2B83000C
+write 67 2B840010
+write 68 2B850014
+write 69 2B860018
+write 6a 2B87001C
+write 6b 2B880020
+write 6c 2B890024
+write 6d 2B8A0028
+write 6e 2B9D0030
+write 6f 2B9E0034
+write 70 2B9F0038
+write 71 2B9C002C
+write 72 34000000
+write 73 C3C00000
+write 74 C3A00000
+write 75 379CFFFC
+write 76 5B9D0004
+write 77 F8000014
+write 78 34010055
+write 79 F8000017
+write 7a 34010055
+write 7b F8000015
+write 7c 34010055
+write 7d F8000013
+write 7e 34010055
+write 7f F8000011
+write 80 34010055
+write 81 F800000F
+write 82 34010055
+write 83 F800000D
+write 84 34010055
+write 85 F800000B
+write 86 34010055
+write 87 F8000009
+write 88 2B9D0004
+write 89 379C0004
+write 8a C3A00000
+write 8b 78012000
+write 8c 38210100
+write 8d 3402147B
+write 8e 58220004
+write 8f C3A00000
+write 90 379CFFFC
+write 91 5B9D0004
+write 92 78022000
+write 93 202300FF
+write 94 38420100
+write 95 28410000
+write 96 20210001
+write 97 5C20FFFE
+write 98 58430008
+write 99 3401000A
+write 9a 5C610003
+write 9b 3401000D
+write 9c FBFFFFF4
+write 9d 2B9D0004
+write 9e 379C0004
+write 9f C3A00000
+write a0 78012000
+write a1 38210100
+write a2 28210000
+write a3 20210002
+write a4 C3A00000
+write a5 78012000
+write a6 38210100
+write a7 2821000C
+write a8 202100FF
+write a9 C3A00000
+write aa B8204000
+write ab B8202800
+write ac 34010003
+write ad B8602000
+write ae 204900FF
+write af 50230023
+write b0 A1010800
+write b1 44200009
+write b2 212200FF
+write b3 34030000
+write b4 B4A30800
+write b5 30220000
+write b6 34630001
+write b7 5C64FFFD
+write b8 B9000800
+write b9 C3A00000
+write ba 3D210008
+write bb 3403000F
+write bc B8290800
+write bd 3C220010
+write be B9003800
+write bf B8412800
+write c0 B8603000
+write c1 B9000800
+write c2 B8801000
+write c3 54830011
+write c4 34030000
+write c5 34060003
+write c6 B4E31000
+write c7 34630004
+write c8 58450000
+write c9 C8830800
+write ca 5426FFFC
+write cb 3482FFFC
+write cc 00410002
+write cd 20440003
+write ce 34210001
+write cf 3C210002
+write d0 B4E13800
+write d1 B8E02800
+write d2 5C80FFE0
+write d3 E3FFFFE5
+write d4 58250000
+write d5 58250004
+write d6 58250008
+write d7 5825000C
+write d8 3442FFF0
+write d9 34210010
+write da 5446FFFA
+write db 3481FFF0
+write dc 00220004
+write dd 2024000F
+write de 34420001
+write df 3C420004
+write e0 34010003
+write e1 B5023800
+write e2 5481FFE2
+write e3 B8E02800
+write e4 E3FFFFEE
+write e5 E3FFFFEE
diff --git a/testbench/wishbone/lm32_testsys/wave.do b/testbench/wishbone/lm32_testsys/wave.do
new file mode 100644
index 0000000000000000000000000000000000000000..b21092201905a8b1a4f80b56c0b2c064e78ad5d4
--- /dev/null
+++ b/testbench/wishbone/lm32_testsys/wave.do
@@ -0,0 +1,60 @@
+onerror {resume}
+quietly WaveActivateNextPane {} 0
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/g_with_virtual_uart
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/g_with_physical_uart
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/g_interface_mode
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/g_address_granularity
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/clk_sys_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/rst_n_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_adr_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_dat_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_dat_o
+add wave -noupdate /main/DUT/U_CPU/dwb_o
+add wave -noupdate /main/DUT/U_CPU/dwb_i
+add wave -noupdate /main/DUT/U_CPU/iwb_o
+add wave -noupdate /main/DUT/U_CPU/iwb_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_cyc_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_sel_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_stb_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_we_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_ack_o
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_stall_o
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/uart_rxd_i
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/uart_txd_o
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/rx_ready_reg
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/rx_ready
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/uart_bcr
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/rdr_rack
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/host_rack
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/baud_tick
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/baud_tick8
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/resized_addr
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_in
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/wb_out
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/regs_in
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/regs_out
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/fifo_empty
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/fifo_full
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/fifo_rd
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/fifo_wr
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/fifo_count
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/phys_rx_ready
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/phys_tx_busy
+add wave -noupdate /main/DUT/U_UART/U_Wrapped_UART/phys_rx_data
+TreeUpdate [SetDefaultTree]
+WaveRestoreCursors {{Cursor 1} {5032567 ps} 0}
+configure wave -namecolwidth 350
+configure wave -valuecolwidth 100
+configure wave -justifyvalue left
+configure wave -signalnamewidth 1
+configure wave -snapdistance 10
+configure wave -datasetprefix 0
+configure wave -rowmargin 4
+configure wave -childrowmargin 2
+configure wave -gridoffset 0
+configure wave -gridperiod 1
+configure wave -griddelta 40
+configure wave -timeline 0
+configure wave -timelineunits ns
+update
+WaveRestoreZoom {1751287 ps} {8313847 ps}