summaryrefslogtreecommitdiff
path: root/rtl
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-09-25 19:22:43 -0600
committerAlejandro Soto <alejandro@34project.org>2022-09-25 19:22:43 -0600
commit3aa075cf009d9aa8c602389853cc3ea78cda8701 (patch)
treed14d298de29c7d0a6040192018200b2a88b2b93e /rtl
parentf65e5611fde5e1c3e3a509cb2f3ffcafce5bbd33 (diff)
Fix Quartus issues
Diffstat (limited to 'rtl')
-rw-r--r--rtl/core/cycles.sv1
-rw-r--r--rtl/core/decode/decode.sv2
-rw-r--r--rtl/core/regs/file.sv15
3 files changed, 12 insertions, 6 deletions
diff --git a/rtl/core/cycles.sv b/rtl/core/cycles.sv
index d52c0b0..c5ad62f 100644
--- a/rtl/core/cycles.sv
+++ b/rtl/core/cycles.sv
@@ -39,7 +39,6 @@ module core_cycles
always_ff @(posedge clk) begin
cycle <= next_cycle;
- stall <= next_cycle != EXECUTE;
flags <= next_flags;
if(next_cycle == EXECUTE) begin
diff --git a/rtl/core/decode/decode.sv b/rtl/core/decode/decode.sv
index 57744e1..508467d 100644
--- a/rtl/core/decode/decode.sv
+++ b/rtl/core/decode/decode.sv
@@ -59,7 +59,7 @@ module core_decode
rd = 4'bxxxx;
data_op = 4'bxxxx;
- priority case(insn `FIELD_OP) inside
+ priority casez(insn `FIELD_OP)
`GROUP_B: begin
branch = 1;
if(branch_link) begin
diff --git a/rtl/core/regs/file.sv b/rtl/core/regs/file.sv
index 1b10682..e2bcc09 100644
--- a/rtl/core/regs/file.sv
+++ b/rtl/core/regs/file.sv
@@ -13,12 +13,19 @@ module core_reg_file
// Ver comentario en uarch.sv
word file[30];
+ word q, wr_value_hold;
+ logic overwrite_hold;
- always @(posedge clk)
- if(wr_enable)
+ assign rd_value = overwrite_hold ? wr_value_hold : q;
+
+ always @(posedge clk) begin
+ if(wr_enable) begin
file[rd_index] <= wr_value;
+ wr_value_hold <= wr_value;
+ end
- always @(posedge clk)
- rd_value <= wr_enable & (rd_index == wr_index) ? wr_value : file[rd_index];
+ q <= file[rd_index];
+ overwrite_hold <= wr_enable & (rd_index == wr_index);
+ end
endmodule