Skip to content

Commit 4977b6c

Browse files
sermazzFrancescoConti
authored andcommitted
rtl: 🐛 Fix FF regfile not properly implementing 1-cc-latency reads
1 parent 86c6ad7 commit 4977b6c

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

rtl/hwpe_ctrl_regfile_ff.sv

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ module hwpe_ctrl_regfile_ff #(
4141
output logic [NumWords-1:0][DataWidth-1:0] MemContent_o
4242
);
4343

44+
logic [DataWidth-1:0] r_data_d, r_data_q;
4445
logic [NumWords-1:0][DataWidth-1:0] data_d, data_q;
4546

4647
logic clk_int;
@@ -50,7 +51,20 @@ assign enable = WriteEnable_i & (WriteAddr_i <= NumWords);
5051

5152
assign clkg_en = enable | clear_i;
5253

53-
assign ReadData_o = (ReadEnable_i && (ReadAddr_i <= NumWords)) ? data_q[ReadAddr_i] : '0;
54+
// Output read with 1 cycle latency
55+
always_ff @(posedge clk_i, negedge rst_ni) begin
56+
if (~rst_ni)
57+
r_data_q <= '0;
58+
else begin
59+
if (clear_i)
60+
r_data_q <= '0;
61+
else
62+
r_data_q <= r_data_d;
63+
end
64+
end
65+
66+
assign r_data_d = (ReadEnable_i && (ReadAddr_i <= NumWords)) ? data_q[ReadAddr_i] : '0;
67+
assign ReadData_o = r_data_q;
5468

5569
tc_clk_gating i_we_clkg (
5670
.clk_i ( clk_i ),

0 commit comments

Comments
 (0)