The requester completion interface of the core sends completion data received from the link to the user application as AXI4-Stream packets. Each packet starts with a descriptor, and can have payload data following the descriptor. The descriptor is always 12 bytes long, and is sent in the first 12 bytes of the completion packet. When the completion data is split into multiple Split Completions, the core sends each Split Completion as a separate AXI4-Stream packet, with its own descriptor.
The format of the requester completion descriptor is illustrated in the following figure. The individual fields of the requester completion descriptor are described in the following table.
Bit Index | Field Name | Description |
---|---|---|
11:0 | Lower Address |
This field provides the 12 least significant bits of the first byte referenced by the request. The core returns this address from its Split Completion Table, where it stores the address and other parameters of all pending Non-Posted requests on the requester side. When the Completion delivered has an error, only bits [6:0] of the address should be considered valid. This is a byte-level address. For ATS translation requests, this field is reserved and implied to be zero. |
15:12 | Error Code |
Completion error code. These three bits encode error conditions detected from error checking performed by the core on received Completions. Its encodings are:
|
28:16 | Byte Count | These 13 bits can have values in the range of 0 – 4,096 bytes. If a
Memory Read Request is completed using a single Completion, the Byte
Count value indicates Payload size in bytes. This field must be set to 4
for I/O read Completions and I/O write Completions. The byte count must
be set to 1 while sending a Completion for a zero-length memory read,
and a dummy payload of 1 Dword must follow the descriptor. For each Memory Read Completion, the Byte Count field must indicate the remaining number of bytes required to complete the Request, including the number of bytes returned with the Completion. If a Memory Read Request is completed using multiple Completions, the Byte Count value for each successive Completion is the value indicated by the preceding Completion minus the number of bytes returned with the preceding Completion. |
29 | Locked Read Completion | This bit is set to 1 when the Completion is in response to a Locked Read request. It is set to 0 for all other Completions. |
30 | Request Completed | The core asserts this bit in the descriptor of the last Completion of
a request. The assertion of the bit indicates normal termination of the
request (because all data has been received), or abnormal termination
because of an error condition. The user logic can use this indication to
clear its outstanding request. When tags are assigned by the user logic, the user logic should not reassign a tag allocated to a request until it has received a Completion Descriptor from the core with a matching tag field and the Request Completed bit set to 1. |
31 | T8 | When 10-bit tags are enabled on the requester side, this field provides bit [8] of the PCIe tag associated with the Completion. This bit is reserved when 10-bit tags are disabled on the requester side. |
42:32 | Dword Count | These 11 bits indicate the size of the payload of the current packet in Dwords. Its range is 0 – 1K Dwords. This field is set to 1 for I/O read Completions and 0 for I/O write Completions. The Dword count is also set to 1 while transferring a Completion for a zero-length memory read. In all other cases, the Dword count corresponds to the actual number of Dwords in the payload of the current packet. |
45:43 | Completion Status |
These bits reflect the setting of the Completion Status field of the received Completion TLP. The valid settings are:
|
46 | Poisoned Completion | This bit is set to indicate that the Poison bit in the Completion TLP was set. Data in the packet should be considered corrupted. |
47 | T9 | When 10-bit tags are enabled on the requester side, this field provides bit [9] of the PCIe tag associated with the Completion. This bit is reserved when 10-bit tags are disabled on the requester side. |
63:48 | Requester ID | PCI Requester ID associated with the Completion. |
71:64 | Tag | PCIe Tag associated with the Completion. |
87:72 | Completer ID | Completer ID received in the Completion TLP. (These 16 bits are divided into an 8-bit bus number, 5-bit device number, and 3-bit function number in the legacy interpretation mode. In ARI mode, these 16 bits must be treated as an 8-bit bus number + 8-bit Function number.) |
88 | Reserved | This bit is reserved. |
91:89 | Transaction Class (TC) | PCIe Transaction Class (TC) associated with the Completion. |
94:92 | Attributes | PCIe attributes associated with the Completion. Bit 92 is the No Snoop bit, bit 93 is the Relaxed Ordering bit, and bit 94 is reserved. |
95 | Reserved | This bit is reserved. |