
Aborting a Transfer
For any request that includes an associated payload, The user application are abort the request at
any time during the transfer of the payload by asserting the discontinue signal in the
s_axis_rq_tuser
bus. The core nullifies the corresponding TLP on the link to avoid data
corruption.
The user application are assert this signal in any cycle during the transfer, when the request being
transferred has an associated payload. The user application are either choose to terminate the
packet prematurely in the cycle where the error was signaled (by asserting
s_axis_rq_tlast
),
or are continue until all bytes of the payload are delivered to the core. In the latter case, the core
treats the error as sticky for the following beats of the packet, even if the user logic deasserts the
discontinue signal before reaching the end of the packet.
The
discontinue
signal can be asserted only when
s_axis_rq_tvalid
is High. The core
samples this signal when
s_axis_rq_tvalid
and
s_axis_rq_tready
are both High. Thus,
once asserted, it should not be deasserted until
s_axis_rq_tready
is High. The user
application must not start a new packet in the same beat when a previous packet is aborted by
asserting the
discontinue
input.
When the core is configured as an Endpoint, this error is reported by the core to the Root
Complex it is attached to, as an Uncorrectable Internal Error using the Advanced Error Reporting
(AER) mechanisms.
Straddle Option on RQ Interface
The PCIe
®
core has the capability to start the transfer of a new request packet on the requester
request interface in the same beat when the previous request has ended on or before Dword
position 7 on the data bus. This straddle option is enabled during core customization in the
Vivado
®
IDE. The straddle option can be used only with the Dword-aligned mode.
When the straddle option is enabled, request TLPs are transferred on the AXI4-Stream interface
as a continuous stream, with no packet boundaries. Thus, the signals
m_axis_rq_tkeep
and
m_axis_rq_tlast
are not useful in determining the boundaries of TLPs delivered on the
interface. Instead, delineation of TLPs is performed using the following signals provided within
the
m_axis_rq_tuser
bus.
•
is_sop[0]
: This input must be set High in a beat when there is at least one request TLP
starting in the beat. The position of the first byte of the descriptor of this TLP is determined as
follows:
○
If the previous TLP ended before this beat, the first byte of the descriptor is in byte lane 0.
○
If a previous TLP is continuing in this beat, the first byte of this descriptor is in byte lane
32. This is possible only when the previous TLP ends in the current beat, that is when
is_eop[0]
is also set.
Chapter 4: Designing with the Core
PG346 (v3.3) November 16, 2022
CPM Mode for PCI Express
166