Why does a single memory read request result in multiple completions being returned?
NOTE: This Answer Record is part of the Xilinx Solution Center for PCI Express (Xilinx Answer 34536). The Xilinx Solution Center for PCI Express is available to address all questions related to PCIe.Whether you are starting a new design with PCIe or troubleshooting a problem, use the Solution Center for PCIe to guide you to the right information.
The PCI Express specification in section 126.96.36.199 details how completions for a single read request can be broken up. Any read larger than 64 bytes is almost always broken up into multiple completions and very often reads smaller than 64 bytes can be broken up depending on the starting address of the read. The user application must be able to handle this scenario.
For more information and the various rules that govern data returned for read request, see section 188.8.131.52 of the specification. Also,for information on ordering of completions, see (Xilinx Answer 36591).
02/21/2011 - Initial Release