@@ -908,23 +908,28 @@ module mem_stream_to_banks_detailed #(
908908 assign mem_req_ready = (& req_ready) & (& resp_ready) & ! dead_write_fifo_full;
909909
910910 if (HideStrb) begin : gen_dead_write_fifo
911+ logic dead_write_fifo_empty;
912+ logic [NumBanks- 1 : 0 ] dead_write_fifo_out_data;
911913 fifo_v3 # (
912914 .FALL_THROUGH ( 1'b0 ),
913915 .DEPTH ( MaxTrans+ 1 ),
914916 .DATA_WIDTH ( NumBanks )
915917 ) i_dead_write_fifo (
916918 .clk_i,
917919 .rst_ni,
918- .flush_i ( 1'b0 ),
919- .testmode_i ( 1'b0 ),
920- .full_o ( dead_write_fifo_full ),
921- .empty_o (),
922- .usage_o (),
923- .data_i ( bank_we_o & zero_strobe ),
924- .push_i ( mem_req_valid & mem_req_ready ),
925- .data_o ( dead_response ),
926- .pop_i ( rvalid_o & rready_i )
920+ .flush_i ( 1'b0 ),
921+ .testmode_i ( 1'b0 ),
922+ .full_o ( dead_write_fifo_full ),
923+ .empty_o ( dead_write_fifo_empty ),
924+ .usage_o ( ),
925+ .data_i ( bank_we_o & zero_strobe ),
926+ .push_i ( mem_req_valid & mem_req_ready ),
927+ .data_o ( dead_write_fifo_out_data ),
928+ .pop_i ( rvalid_o & rready_i )
927929 );
930+ // We only actually have a dead response if the FIFO is not empty. Otherwise, we could signal
931+ // rvalid_o based on stale data in the FIFO.
932+ assign dead_response = dead_write_fifo_empty ? '0 : dead_write_fifo_out_data;
928933 end else begin : gen_no_dead_write_fifo
929934 assign dead_response = '0 ;
930935 assign dead_write_fifo_full = 1'b0 ;
0 commit comments