Skip to content

Commit 786e971

Browse files
committed
Remove separate memory read register (it causes ISE to crash, and is not necessary for URAM inference)
Signed-off-by: Alex Forencich <[email protected]>
1 parent 46bd430 commit 786e971

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

rtl/axis_async_fifo.v

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,6 @@ reg m_rst_sync3_reg = 1'b1;
209209

210210
(* ramstyle = "no_rw_check" *)
211211
reg [WIDTH-1:0] mem[(2**ADDR_WIDTH)-1:0];
212-
reg [WIDTH-1:0] mem_read_data_reg;
213212
reg mem_read_data_valid_reg = 1'b0;
214213

215214
(* shreg_extract = "no" *)
@@ -268,7 +267,7 @@ generate
268267
if (USER_ENABLE) assign s_axis[USER_OFFSET +: USER_WIDTH] = s_axis_tuser;
269268
endgenerate
270269

271-
wire [WIDTH-1:0] m_axis = RAM_PIPELINE ? m_axis_pipe_reg[RAM_PIPELINE+1-1] : mem_read_data_reg;
270+
wire [WIDTH-1:0] m_axis = m_axis_pipe_reg[RAM_PIPELINE+1-1];
272271

273272
wire m_axis_tvalid_pipe = m_axis_tvalid_pipe_reg[RAM_PIPELINE+1-1];
274273

@@ -551,15 +550,15 @@ always @(posedge m_clk) begin
551550
if (OUTPUT_FIFO_ENABLE || m_axis_tready || ((~m_axis_tvalid_pipe_reg) >> j)) begin
552551
// output ready or bubble in pipeline; transfer down pipeline
553552
m_axis_tvalid_pipe_reg[j] <= m_axis_tvalid_pipe_reg[j-1];
554-
m_axis_pipe_reg[j] <= j == 1 ? mem_read_data_reg : m_axis_pipe_reg[j-1];
553+
m_axis_pipe_reg[j] <= m_axis_pipe_reg[j-1];
555554
m_axis_tvalid_pipe_reg[j-1] <= 1'b0;
556555
end
557556
end
558557

559558
if (OUTPUT_FIFO_ENABLE || m_axis_tready || ~m_axis_tvalid_pipe_reg) begin
560559
// output ready or bubble in pipeline; read new data from FIFO
561560
m_axis_tvalid_pipe_reg[0] <= 1'b0;
562-
mem_read_data_reg <= mem[rd_ptr_reg[ADDR_WIDTH-1:0]];
561+
m_axis_pipe_reg[0] <= mem[rd_ptr_reg[ADDR_WIDTH-1:0]];
563562
if (!empty && !m_rst_sync3_reg && !m_drop_frame_reg && pipe_ready) begin
564563
// not empty, increment pointer
565564
m_axis_tvalid_pipe_reg[0] <= 1'b1;

rtl/axis_fifo.v

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ reg [ADDR_WIDTH:0] rd_ptr_reg = {ADDR_WIDTH+1{1'b0}};
163163

164164
(* ramstyle = "no_rw_check" *)
165165
reg [WIDTH-1:0] mem[(2**ADDR_WIDTH)-1:0];
166-
reg [WIDTH-1:0] mem_read_data_reg;
167166
reg mem_read_data_valid_reg = 1'b0;
168167

169168
(* shreg_extract = "no" *)
@@ -197,7 +196,7 @@ generate
197196
if (USER_ENABLE) assign s_axis[USER_OFFSET +: USER_WIDTH] = s_axis_tuser;
198197
endgenerate
199198

200-
wire [WIDTH-1:0] m_axis = RAM_PIPELINE ? m_axis_pipe_reg[RAM_PIPELINE+1-1] : mem_read_data_reg;
199+
wire [WIDTH-1:0] m_axis = m_axis_pipe_reg[RAM_PIPELINE+1-1];
201200

202201
wire m_axis_tvalid_pipe = m_axis_tvalid_pipe_reg[RAM_PIPELINE+1-1];
203202

@@ -286,15 +285,15 @@ always @(posedge clk) begin
286285
if (OUTPUT_FIFO_ENABLE || m_axis_tready || ((~m_axis_tvalid_pipe_reg) >> j)) begin
287286
// output ready or bubble in pipeline; transfer down pipeline
288287
m_axis_tvalid_pipe_reg[j] <= m_axis_tvalid_pipe_reg[j-1];
289-
m_axis_pipe_reg[j] <= j == 1 ? mem_read_data_reg : m_axis_pipe_reg[j-1];
288+
m_axis_pipe_reg[j] <= m_axis_pipe_reg[j-1];
290289
m_axis_tvalid_pipe_reg[j-1] <= 1'b0;
291290
end
292291
end
293292

294293
if (OUTPUT_FIFO_ENABLE || m_axis_tready || ~m_axis_tvalid_pipe_reg) begin
295294
// output ready or bubble in pipeline; read new data from FIFO
296295
m_axis_tvalid_pipe_reg[0] <= 1'b0;
297-
mem_read_data_reg <= mem[rd_ptr_reg[ADDR_WIDTH-1:0]];
296+
m_axis_pipe_reg[0] <= mem[rd_ptr_reg[ADDR_WIDTH-1:0]];
298297
if (!empty && pipe_ready) begin
299298
// not empty, increment pointer
300299
m_axis_tvalid_pipe_reg[0] <= 1'b1;

syn/vivado/axis_async_fifo.tcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ foreach fifo_inst [get_cells -hier -filter {(ORIG_REF_NAME == axis_async_fifo ||
8383
}
8484

8585
# output register (needed for distributed RAM sync write/async read)
86-
set output_reg_ffs [get_cells -quiet "$fifo_inst/mem_read_data_reg_reg[*]"]
86+
set output_reg_ffs [get_cells -quiet "$fifo_inst/m_axis_pipe_reg_reg[0][*]"]
8787

8888
if {[llength $output_reg_ffs]} {
8989
set_false_path -from $write_clk -to $output_reg_ffs

0 commit comments

Comments
 (0)