UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 30133

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

Description

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.

AR# 30133
Date Created 01/25/2008
Last Updated 12/15/2012
Status Active
Type General Article