summaryrefslogtreecommitdiff
path: root/rtl
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-10-23 21:35:08 -0600
committerAlejandro Soto <alejandro@34project.org>2022-10-23 21:35:08 -0600
commit95644e64bfde13b3cc56537740851906f0eba173 (patch)
tree01f430a4466219348ef5b2918a973f968c16eddc /rtl
parent3e134fb9758ca0bc5b0d4cad9d95564aa019be5f (diff)
Fix PC writeback hazard
Diffstat (limited to 'rtl')
-rw-r--r--rtl/core/control/control.sv3
1 files changed, 2 insertions, 1 deletions
diff --git a/rtl/core/control/control.sv b/rtl/core/control/control.sv
index c2484ef..0f5b067 100644
--- a/rtl/core/control/control.sv
+++ b/rtl/core/control/control.sv
@@ -83,7 +83,8 @@ module core_control
assign next_pc_visible = fetch_insn_pc + 2;
assign next_bubble =
- ((dec_update_flags || dec_conditional) && (final_update_flags || update_flags))
+ (final_writeback && final_rd == `R15)
+ || ((dec_update_flags || dec_conditional) && (final_update_flags || update_flags))
|| (final_writeback && ((dec_uses_rn && (final_rd == dec_data.rn || dec_data.rn == `R15))
|| final_rd == dec_snd.r || dec_snd.r == `R15));