There is an issue with XAPP887 that requires an update to the PRC macro. This issue only occurs for PRC packets of 16 words or less. This should only be an issue for your design if it meets one of thetwo criteria:
1) The final PRC packet has a length field of less than 16 words and PR_LOAD is deasserted within 2 clocks of PR_DONE assertion. The exact number of words at which the problem occurs depends on the relationship of the FIFO_CLK and ICAP_CLK.
2) The PRC packet has a length field of less than 4 words regardless of PR_LOAD deassertion timing.
In this scenario, the packet is not fully loaded to the ICAP. This can lead to device configuration logic getting into an indeterminate state and potentially causing a CRC error. CRC errors can result in a loss of functionality as described in (Xilinx Answer 46735).
To determine if you might be encountering this issue, you need to examine your packet sizes. The default packet size is 512 32-bitwords. If you are using thedefault or apacket size of greater than 16 words,you will only see a smaller packet in the final packet. To determine if your final packet is less than 16 words, examine your ".prc" files. The best method is to use a filecomparison tool which can compare Binary files such as Beyond Compare. Comparing with the original PR bit file will highlight the packet headers; see the example below:
96D8C3B4: Previous packet CRC.
000A000E: This is the packet header for the last packet. It translates as 000A = Packet 10*, 000E = Packet of length 14 words.
* Final packet is packet0A. The final packet number can be any number 00 through FF.The packet counters wraps around atFF.
For further assistance, please contact Xilinx Technical Support: