AR #30133 - 10.1 EDK, MPMC v4.00.a - NPI PIM_RdFifo_Empty signal incorrectly goes Low when PIM_RdFifo_Flush is asserted

Search Answers Database


 

10.1 EDK, MPMC v4.00.a - NPI PIM_RdFifo_Empty signal incorrectly goes Low when PIM_RdFifo_Flush is asserted

AR# 30133
Part IP-MPMC
Last Modified 2008-05-20 00:00:00.0
Status Active
Keywords glitch, pushaddr, flush, empty

Description

Keywords: glitch, pushaddr, flush, empty

I have a NPI peripheral that attaches to a 64-bit PIM port of the MPMC controller. I have observed in hardware that when the PIM_RdFifo_Flush signal is active (1-cycle), two cycles later the PIM_RdFifo_Empty signal will go Low for one cycle. The PIM port is idle, no pending requests, at the assertion of the RdFifo_Flush. The false non-empty assertion is a problem for the FIFO read logic that monitors it.

This issue affects only designs with P_INPUT_PIPELINE == 1.

Solution

To work around this issue, the pushaddr_r signal must be synchronously reset by both the RST and Flush signals. Copy the MPMC to the project pcores directory and modify either the mpmc_data_path.v (MPMC v3) or mpmc_read_fifo.v (MPMC v4) file to match as follows:

generate
if (P_INPUT_PIPELINE == 1) begin : gen_pushaddr_pipeline
always @(posedge Clk) begin
if (Rst | Flush) --add
pushaddr_r <= 0; --add
else --add
pushaddr_r <= pushaddr;
//push_r <= Push;
end
end


This issue has been fixed in MPMC v4.01.a, which was released in EDK 10.1, Service Pack 1.
 
 
Jobs Events Webcasts News Investors Feedback Legal Privacy Trademarks Sitemap
©  1994-2008 Xilinx, Inc. All Rights Reserved.