Skip to content

Commit 4c21f55

Browse files
committed
Exclude cm.mva01s instruction if a0 or a1 are reserved
1 parent 613ed03 commit 4c21f55

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

src/riscv_instr_stream.sv

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,12 @@ class riscv_rand_instr_stream extends riscv_instr_stream;
234234
((avail_regs.size() > 0) && !(SP inside {avail_regs}))) begin
235235
exclude_instr = {exclude_instr, C_ADDI4SPN, C_ADDI16SP, C_LWSP, C_LDSP};
236236
end
237+
if ((A0 inside {reserved_rd, cfg.reserved_regs}) ||
238+
(A1 inside {reserved_rd, cfg.reserved_regs}) ||
239+
((avail_regs.size() > 0) && (!(A0 inside {avail_regs}) || !(A1 inside {avail_regs})))) begin
240+
// MVA01S instruction needs both A0 and A1 to be writable
241+
exclude_instr = {exclude_instr, CM_MVA01S};
242+
end
237243
// Post-process the exclude_instr lists to handle adding ebreak instructions to the debug rom.
238244
if (is_in_debug) begin
239245
if (!cfg.no_ebreak && !cfg.enable_ebreak_in_debug_rom) begin

0 commit comments

Comments
 (0)