On the transmit side, the integrated block receives TLPs on two different
interfaces: the Requester reQuest (RQ) interface and the Completer Completion (CC)
interface. The integrated block does not reorder transactions received from each of
these interfaces. It is difficult to predict how the requester-side requests and
completer-side completions are ordered in the transmit pipeline of the integrated block,
after these are multiplexed into a single traffic stream. In cases where completion TLPs
must maintain ordering with respect to requests, user logic can supply a 4-bit sequence
number with any request that needs to maintain strict ordering with respect to a
Completion transmitted from the CC interface, on the seq_num[3:0]
inputs within the s_axis_rq_tuser
bus. The integrated block places this sequence number on
its pcie_rq_seq_num[3:0]
output and asserts pcie_rq_seq_num_vld
when the request TLP has reached a
point in the transmit pipeline at which no new completion TLP from the user application
can pass it. This mechanism can be used in the following situations to maintain TLP
order:
- The user logic requires ordering to be maintained between a request TLP and a
completion TLP that follows it. In this case, user logic must wait for the sequence
number of the requester request to appear on the
pcie_rq_seq_num[3:0]
output before starting the transfer of the completion TLP on the target completion interface. - The user logic requires ordering to be maintained between a request TLP and
MSI/MSI-X TLP signaled through the MSI Message interface. In this case, the user
logic must wait for the sequence number of the requester request to appear on
the
pcie_rq_seq_num[3:0]
output before signaling MSI or MSI-X on the MSI Message interface.