wishbone is available!
diff --git a/verilog/dv/jacaranda_test/jacaranda_test.c b/verilog/dv/jacaranda_test/jacaranda_test.c
index df7b26b..6c18fcf 100644
--- a/verilog/dv/jacaranda_test/jacaranda_test.c
+++ b/verilog/dv/jacaranda_test/jacaranda_test.c
@@ -24,7 +24,7 @@
 //
 
 #define BASE_ADDR 0x30000000
-#define IMEM_WRITE (BASE_ADDR + 0x100)
+#define IMEM_WRITE BASE_ADDR
 
 static void
 write(uint32_t addr, uint32_t val)
@@ -52,9 +52,9 @@
     // set reset to high
 	reg_la0_data = 1;
 
-    write(IMEM_WRITE + 0x00, 0b11000000);
-    write(IMEM_WRITE + 0x01, 0b11010000);
-    write(IMEM_WRITE + 0x02, 0b10110011);
+    write(IMEM_WRITE, 0x00 << 8 | 0xC0);
+    write(IMEM_WRITE, 0x01 << 8 | 0xD0);
+    write(IMEM_WRITE, 0x02 << 8 | 0xB3);
 
 //    reg_la0_data = 1 << 16 | 0x00 << 8 | 0b11000000; // ldih 0  0xC0
 //    reg_la0_data = 1 << 16 | 0x01 << 8 | 0b11010000; // ldil 0  0xD0
diff --git a/verilog/dv/jacaranda_test/jacaranda_test_tb.v b/verilog/dv/jacaranda_test/jacaranda_test_tb.v
index ea5a2dc..ea53532 100644
--- a/verilog/dv/jacaranda_test/jacaranda_test_tb.v
+++ b/verilog/dv/jacaranda_test/jacaranda_test_tb.v
@@ -46,7 +46,7 @@
 		$dumpvars(0, jacaranda_test_tb);
 
 		// Repeat cycles of 1000 clock edges as needed to complete testbench
-		repeat (30) begin
+		repeat (20) begin
 			repeat (1000) @(posedge clock);
 			    $display("+1000 cycles");
 		end
diff --git a/verilog/rtl/jacaranda-8/computer.v b/verilog/rtl/jacaranda-8/computer.v
index 2e84175..5b20099 100644
--- a/verilog/rtl/jacaranda-8/computer.v
+++ b/verilog/rtl/jacaranda-8/computer.v
@@ -90,12 +90,16 @@
     wire [7:0] instr_mem_data; 
     wire instr_mem_en;
 
+    wire [7:0] wb_instr_req_addr;
+
+    assign instr_mem_addr = reset ? wb_instr_req_addr: pc;
+
     wire reset;
 
     assign reset = la_data_in[0];
 
     wire clock;
-    assign clock = ~reset & wb_clk_i;
+    assign clock = reset ? 1'b1 : wb_clk_i;
 
     wishbone wb(.wb_clk_i(wb_clk_i),
                 .wb_rst_i(wb_rst_i),
@@ -107,7 +111,7 @@
                 .wbs_dat_i(wbs_dat_i),
                 .wbs_ack_o(wbs_ack_o),
                 .wbs_dat_o(wbs_dat_o),
-                .instr_mem_addr(instr_mem_addr),
+                .instr_mem_addr(wb_instr_req_addr),
                 .instr_mem_data(instr_mem_data),
                 .instr_mem_en(instr_mem_en));
 
@@ -115,7 +119,8 @@
                         .w_data(instr_mem_data),
                         .w_en(instr_mem_en),
                         .r_data(instr),
-                        .clock(wb_clk_i));
+                        .clock(wb_clk_i),
+                        .reset(reset));
 
     cpu cpu(.clock(clock),
             .reset(reset),
diff --git a/verilog/rtl/jacaranda-8/instr_mem.v b/verilog/rtl/jacaranda-8/instr_mem.v
index 115fb11..0c638e8 100644
--- a/verilog/rtl/jacaranda-8/instr_mem.v
+++ b/verilog/rtl/jacaranda-8/instr_mem.v
@@ -1,13 +1,14 @@
-module instr_mem(addr, w_data, w_en, r_data, clock);
+module instr_mem(addr, w_data, w_en, r_data, clock, reset);
     input [7:0] addr;
     input [7:0] w_data;
     input w_en;
     input clock;
     output [7:0] r_data;
+    input reset;
 
     reg [7:0] mem[0:255];
     
-    assign r_data = mem[addr];
+    assign r_data = reset ? 8'b0 : mem[addr];
 
     always @(posedge clock) begin
         if(w_en) begin
diff --git a/verilog/rtl/jacaranda-8/wishbone.v b/verilog/rtl/jacaranda-8/wishbone.v
index 57a1ded..06e2125 100644
--- a/verilog/rtl/jacaranda-8/wishbone.v
+++ b/verilog/rtl/jacaranda-8/wishbone.v
@@ -15,8 +15,7 @@
     output reg instr_mem_en
 );
 
-// 0x3000_0100 - 0x3000_01FF: IMEM_WRITE
-parameter IMEM_WRITE_PREFIX = 24'h3000_01;
+parameter IMEM_WRITE = 32'h3000_0000;
 
 wire valid;
 wire we;
@@ -41,23 +40,18 @@
 
 always @(posedge clk) begin
     if(reset) begin
-        // reset
         ready <= 1'b0;
     end else begin
         if(ready) begin
             ready <= 1'b0;
             instr_mem_en <= 1'b0;
         end
-        // Read
         if (valid && !ready && !we) begin
-            //case(addr)
-            //endcase
             ready <= 1'b1;
-        // Write
         end else if (valid && !ready && we) begin
-            case(addr[31:8])
-                IMEM_WRITE_PREFIX: begin
-                    instr_mem_addr <= addr[7:0];
+            case(addr)
+                IMEM_WRITE: begin
+                    instr_mem_addr <= wdata[15:8];
                     instr_mem_data <= wdata[7:0];
                     instr_mem_en <= 1'b1;
                 end