[otbn, dv] Fixes bad_ispr issue of picking valid csr / wsr addr
bad_ispr generated instructions with valid csr / wsr addresses. This
commit fixes the code.
Signed-off-by: Prajwala Puttappa <prajwalaputtappa@lowrisc.org>
diff --git a/hw/ip/otbn/dv/rig/rig/gens/bad_ispr.py b/hw/ip/otbn/dv/rig/rig/gens/bad_ispr.py
index c3ddbe2..3aaaa39 100644
--- a/hw/ip/otbn/dv/rig/rig/gens/bad_ispr.py
+++ b/hw/ip/otbn/dv/rig/rig/gens/bad_ispr.py
@@ -6,6 +6,7 @@
from typing import Optional, Tuple
from shared.insn_yaml import InsnsFile
+from shared.operand import ImmOperandType
from ..config import Config
from ..program import ProgInsn, Program
@@ -93,5 +94,12 @@
bad_addr = model.pick_bad_addr(mem_type)
assert bad_addr is not None
prog_insn.lsu_info = mem_type, bad_addr
+ imm_idx = None
+ for i, each in enumerate(prog_insn.insn.operands):
+ if isinstance(each.op_type, ImmOperandType):
+ assert imm_idx is None
+ imm_idx = i
+ assert imm_idx is not None
+ prog_insn.operands[imm_idx] = bad_addr
return (prog_insn, model)