summaryrefslogtreecommitdiff
path: root/rtl/core/control/writeback.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-11-08 00:19:49 -0600
committerAlejandro Soto <alejandro@34project.org>2022-11-08 00:19:49 -0600
commitac0d6f4e068ff0ff08f05e04053ebd53ba20bcb8 (patch)
tree8c2019cb296f94b2fd39894a245a4aac899d2371 /rtl/core/control/writeback.sv
parent942461c315db3269fcbe9a9ca18beee9afa78d9c (diff)
Refactor decode signals into unified insn_decode struct
Diffstat (limited to 'rtl/core/control/writeback.sv')
-rw-r--r--rtl/core/control/writeback.sv66
1 files changed, 32 insertions, 34 deletions
diff --git a/rtl/core/control/writeback.sv b/rtl/core/control/writeback.sv
index 6506ae5..73a8a4c 100644
--- a/rtl/core/control/writeback.sv
+++ b/rtl/core/control/writeback.sv
@@ -2,37 +2,35 @@
module core_control_writeback
(
- input logic clk,
-
- input datapath_decode dec,
- input psr_decode dec_psr,
- input data_decode dec_data,
- input psr_flags alu_flags,
- input word q_alu,
- mem_data_rd,
- input logic mem_ready,
- mem_write,
- input word mul_q_hi,
- mul_q_lo,
-
- input ctrl_cycle cycle,
- next_cycle,
- input word saved_base,
- vector,
- input reg_num ra,
- popped,
- mul_r_add_hi,
- input logic issue,
- pop_valid,
-
- output reg_num rd,
- final_rd,
- output logic writeback,
- final_writeback,
- update_flags,
- final_update_flags,
- output word wr_value,
- output psr_flags wb_alu_flags
+ input logic clk,
+
+ input insn_decode dec,
+ input psr_flags alu_flags,
+ input word q_alu,
+ mem_data_rd,
+ input logic mem_ready,
+ mem_write,
+ input word mul_q_hi,
+ mul_q_lo,
+
+ input ctrl_cycle cycle,
+ next_cycle,
+ input word saved_base,
+ vector,
+ input reg_num ra,
+ popped,
+ mul_r_add_hi,
+ input logic issue,
+ pop_valid,
+
+ output reg_num rd,
+ final_rd,
+ output logic writeback,
+ final_writeback,
+ update_flags,
+ final_update_flags,
+ output word wr_value,
+ output psr_flags wb_alu_flags
);
reg_num last_rd;
@@ -108,7 +106,7 @@ module core_control_writeback
unique case(next_cycle)
ISSUE:
- final_rd <= dec_data.rd;
+ final_rd <= dec.data.rd;
TRANSFER:
if((cycle != TRANSFER || mem_ready) && pop_valid)
@@ -123,7 +121,7 @@ module core_control_writeback
unique case(next_cycle)
ISSUE:
- final_writeback <= issue && dec.writeback;
+ final_writeback <= issue && dec.ctrl.writeback;
EXCEPTION:
final_writeback <= 1;
@@ -140,7 +138,7 @@ module core_control_writeback
unique case(next_cycle)
ISSUE:
- final_update_flags <= issue && dec_psr.update_flags;
+ final_update_flags <= issue && dec.psr.update_flags;
EXCEPTION:
final_update_flags <= 0;