[otbn] Don't send RND requests on an IMEM error

If the check bits for an instruction are invalid, we shouldn't take
any outwardly observable action. In this case, we weren't squashing
the RND request from a CSRRW that wrote to RND_PREFETCH.

Signed-off-by: Rupert Swarbrick <rswarbrick@lowrisc.org>
diff --git a/hw/ip/otbn/rtl/otbn_controller.sv b/hw/ip/otbn/rtl/otbn_controller.sv
index 25211f6..50c3bab 100644
--- a/hw/ip/otbn/rtl/otbn_controller.sv
+++ b/hw/ip/otbn/rtl/otbn_controller.sv
@@ -201,6 +201,7 @@
 
   logic lsu_load_req_raw;
   logic lsu_store_req_raw;
+  logic rnd_req_raw;
 
   // Register read data with integrity stripped off
   logic [31:0]     rf_base_rd_data_a_no_intg;
@@ -266,7 +267,7 @@
   assign mem_stall = lsu_load_req_raw;
 
   // Reads to RND must stall until data is available
-  assign ispr_stall = rnd_req_o & ~rnd_valid_i;
+  assign ispr_stall = rnd_req_raw & ~rnd_valid_i;
 
   assign stall = mem_stall | ispr_stall;
 
@@ -1114,8 +1115,9 @@
                                                                dmem_addr_unaligned_bignum |
                                                                dmem_addr_unaligned_base);
 
-  assign rnd_req_o = insn_valid_i & ispr_rd_insn & (ispr_addr_o == IsprRnd);
+  assign rnd_req_raw = insn_valid_i & ispr_rd_insn & (ispr_addr_o == IsprRnd);
+  assign rnd_req_o = rnd_req_raw & insn_executing;
 
-  assign rnd_prefetch_req_o = insn_valid_i & ispr_wr_insn &
+  assign rnd_prefetch_req_o = insn_executing & ispr_wr_insn &
       (insn_dec_shared_i.subset == InsnSubsetBase) & (csr_addr == CsrRndPrefetch);
 endmodule