User guide

Virtex-5 FPGA Integrated Endpoint Block www.xilinx.com 79
UG197 (v1.5) July 22, 2009
Known Restrictions
64-Packet Threshold for Completion Streaming on RX Interface
The LLKPREFERREDTYPE and LLKRXCH*AVAILABLE signals together allow the user to
implement both strict-ordering and relaxed-ordering rules. Relaxed ordering allows
completion packets to bypass older posted or non-posted packets available in the receive
buffers. For more information on relaxed ordering, refer to Section 2.4 of the PCI Express
Base Specification. LogiCORE Endpoint Block Plus for PCI Express uses these signals to
implement relaxed ordering when used in Completion Streaming mode to achieve high
performance on completions.
When older posted and non-posted packets are bypassed by completion packets, the user
must ensure that any given completion packet is allowed to pass any given non-posted
packet only if it is within a 64-packet window from the non-posted packet. If this
requirement is not met, several undesirable effects can result including older non-posted
packets, passing older posted packets, complete blocking of posted, or non-posted packets.
This requirement must be met when completions to bypass posted and non-posted packets
are allowed while draining packets from the receive buffers.
Workaround
Certain precautions must be taken when allowing completion packets to bypass older
posted or non-posted packets. When older posted and non-posted packets are bypassed by
completion packets, any given completion packet is only allowed to pass any given non-
posted packet when it is within a 64-packet window from the non-posted packet.
Monitoring when a completion packet arrives relative to a non-posted packet and waiting
for it to be drained will ensure a 64-packet window from the non-posted packet before
allowing it to pass. Using the management interface, monitor the
LLKRXNONPOSTEDAVAILABLE signal, LLKRXPREFERREDTYPE signal, and the credit status
information. By selecting one of three options in the GUI, LogiCORE Endpoint Block Plus
for PCI Express v1.4 or later, when used in Completion Streaming Mode implements the
workaround logic. No workarounds are implemented in LogiCORE Endpoint Block for
PCI Express.
The next step is to switch from draining completions to draining posted or non-posted
packets whenever the 64-packet window is required. In this example, the 64-packet
window requirement workaround uses a traffic pattern where posted and non-posted
packets are scattered inside a stream of completions:
1P, 10C, 2NP, 50C, 1P, 10C, 1NP, 90C, 2NP …
In this illustration, each packet is described with the type of packet followed by the
sequence number assigned to it by the receive logic. The example sequence is converted to:
P-1, C-2, ..., C-11, NP-12, NP-13, C-14, ..., C-63, P-64, C-65, ..., C-74, NP-75,
C-76, ..., C-165, NP-166, NP-167
and the following statements are true:
C-77 (12+65) cannot pass NP-12, C-78 (13+65) cannot pass NP-13 and so forth.
If one of the above conditions is violated, and C-130 is allowed to pass P-1(1+129),
then NP-12 will look younger than P-1 and could be read out ahead of P-1.
Using the previous example, the packets can be drained in the following sequence without
violating the 64-packet window requirement:
C-1,…, C-76, P-1, NP-12, C-77, NP-13, C-78,…, C-139, P-64, NP-75, C-140,…, C-165,
NP-166, NP-167 ...