Fix exceptions during stalls

This commit is contained in:
Sven Stucki 2015-10-16 11:10:00 +02:00
parent c28ca4444a
commit 8d4c069d84
2 changed files with 5 additions and 4 deletions

View file

@ -147,7 +147,7 @@ module riscv_controller
always_ff @(negedge clk)
begin
// print warning in case of decoding errors
if (illegal_insn_i) begin
if (is_decoding_o && illegal_insn_i) begin
$display("%t: Illegal instruction (core %0d) at PC 0x%h:", $time, riscv_core.core_id_i,
riscv_id_stage.current_pc_id_i);
end
@ -272,6 +272,7 @@ module riscv_controller
pc_set_o = 1'b1;
end
// handle exceptions
if (exc_req_i) begin
pc_mux_sel_o = `PC_EXCEPTION;
pc_set_o = 1'b1;

View file

@ -715,9 +715,9 @@ module riscv_id_stage
.irq_i ( irq_i ),
.irq_enable_i ( irq_enable_i ),
.illegal_insn_i ( illegal_insn_dec ),
.ecall_insn_i ( ecall_insn_dec ),
.eret_insn_i ( eret_insn_dec ),
.illegal_insn_i ( id_valid_o & is_decoding_o & illegal_insn_dec ),
.ecall_insn_i ( id_valid_o & is_decoding_o & ecall_insn_dec ),
.eret_insn_i ( id_valid_o & is_decoding_o & eret_insn_dec ),
.cause_o ( exc_cause_o ),
.save_cause_o ( save_exc_cause_o )