Figure 26: Transfer of a Normal Completion on the Completer Completion Interface
(512-bit Interface, Dword-Aligned Mode)
The previous figure illustrates the Dword-aligned transfer of a Completion from the user logic
across the completer completion interface. In this case, the first Dword of the payload starts
immediately after the descriptor. When the data block is not a multiple of 4 bytes, or when the
start of the payload is not aligned on a Dword address boundary, the user application must add
null bytes to align the start of the payload on a Dword boundary and make the payload a multiple
of Dwords. For example, when the data block starts at byte address 7 and has a size of 3 bytes,
the user logic must add 3 null bytes before the first byte and two null bytes at the end of the
block to make it 2 Dwords long. Also, in the case of non-contiguous reads, not all bytes in the
data block returned are be valid. In that case, the user application must return the valid bytes in
the proper positions, with null bytes added in gaps between valid bytes, when needed. The
interface does not have any signals to indicate the valid bytes in the payload. This is not required,
as the requester is responsible for keeping track of the byte enables in the request and discarding
invalid bytes from the Completion.
In the Dword-aligned mode, the transfer starts with the 12 descriptor bytes, followed
immediately by the payload bytes. The user application must keep the signal
s_axis_cc_tvalid
asserted over the duration of the packet. The core treats the deassertion
of
s_axis_cc_tvalid
during the packet transfer as an error, and nullifies the corresponding
Completion TLP transmitted on the link to avoid data corruption.
Chapter 4: Designing with the Core
PG346 (v3.3) November 16, 2022
CPM Mode for PCI Express
148