Skip to content

Commit cbb39bd

Browse files
MoritzScherermoritz
andauthored
cdc_fifo_gray: Fix SpyGlass CDC Lint issues (#262)
* Refactor Source side CDC for lint compliance * Port fix to cdc_fifo_gray_clearable * Fixup --------- Co-authored-by: moritz <[email protected]>
1 parent 1e384c9 commit cbb39bd

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

src/cdc_fifo_gray.sv

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,15 +187,17 @@ module cdc_fifo_gray_src #(
187187
localparam int PtrWidth = LOG_DEPTH+1;
188188
localparam logic [PtrWidth-1:0] PtrFull = (1 << LOG_DEPTH);
189189

190-
T [2**LOG_DEPTH-1:0] data_q;
190+
T [2**LOG_DEPTH-1:0] data_q, data_d;
191191
logic [PtrWidth-1:0] wptr_q, wptr_d, wptr_bin, wptr_next, rptr, rptr_bin;
192192

193193
// Data FIFO.
194194
assign async_data_o = data_q;
195-
for (genvar i = 0; i < 2**LOG_DEPTH; i++) begin : gen_word
196-
`FFLNR(data_q[i], src_data_i,
197-
src_valid_i & src_ready_o & (wptr_bin[LOG_DEPTH-1:0] == i), src_clk_i)
195+
196+
always_comb begin
197+
data_d = data_q;
198+
data_d[wptr_bin[LOG_DEPTH-1:0]] = src_data_i;
198199
end
200+
`FFLARN(data_q, data_d, src_valid_i & src_ready_o, '0, src_clk_i, src_rst_ni)
199201

200202
// Read pointer.
201203
for (genvar i = 0; i < PtrWidth; i++) begin : gen_sync

src/cdc_fifo_gray_clearable.sv

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,15 +285,16 @@ module cdc_fifo_gray_src_clearable #(
285285
localparam int PtrWidth = LOG_DEPTH+1;
286286
localparam logic [PtrWidth-1:0] PtrFull = (1 << LOG_DEPTH);
287287

288-
T [2**LOG_DEPTH-1:0] data_q;
288+
T [2**LOG_DEPTH-1:0] data_q, data_d;
289289
logic [PtrWidth-1:0] wptr_q, wptr_d, wptr_bin, wptr_next, rptr, rptr_bin;
290290

291291
// Data FIFO.
292292
assign async_data_o = data_q;
293-
for (genvar i = 0; i < 2**LOG_DEPTH; i++) begin : gen_word
294-
`FFLNR(data_q[i], src_data_i,
295-
src_valid_i & src_ready_o & (wptr_bin[LOG_DEPTH-1:0] == i), src_clk_i)
293+
always_comb begin
294+
data_d = data_q;
295+
data_d[wptr_bin[LOG_DEPTH-1:0]] = src_data_i;
296296
end
297+
`FFLARN(data_q, data_d, src_valid_i & src_ready_o, '0, src_clk_i, src_rst_ni)
297298

298299
// Read pointer.
299300
for (genvar i = 0; i < PtrWidth; i++) begin : gen_sync

0 commit comments

Comments
 (0)