The RC interface of the PCIe® core has the capability to start up to eight Completions in the same beat on the requester completion interface. This straddle option is enabled during core customization in the AMD Vivado™ IDE. The straddle option can be used only with the Dword-aligned mode.
When the straddle option is enabled, Completion TLPs are transferred on the AXI4-Stream interface as a continuous stream, with no packet boundaries.
Thus, the signals m_axis_rc_tkeep and m_axis_rc_tlast
are not useful in determining the boundaries of Completion TLPs delivered on the
interface (the core sets m_axis_rc_tkeep to all 1s and
m_axis_rc_tlast to 0 permanently when the straddle option is in
use.). Instead, delineation of TLPs is performed using the following signals provided
within the m_axis_rc_tuser bus.
-
is_sop[7:0]: The core sets this output to a non-zero value in a beat when there is at least one Completion TLP starting in the beat. When straddle is disabled, onlyis_sop[0]is valid andis_sop[7:1]are permanently set to 0. When straddle is enabled, the settings are as follows:-
00000000: No new TLP starting in this beat. -
00000001: A single new TLP starts in this beat. ts start position is indicated byis_sop0_ptr[1:0]. -
00000011: Two new TLPs are starting in this beat.is_sop0_ptr[1:0]provides the start position of the first TLP andis_sop1_ptr[1:0]provides the start position of the second TLP. -
00000111: Three new TLPs are starting in this beat.is_sop0_ptr[1:0]provides the start position of the first TLP,is_sop1_ptr[1:0]provides the start position of the second TLP, andis_sop2_ptr[1:0]provides the start position of the third TLP. -
00001111: Four new TLPs are starting in this beat.is_sop0_ptr[1:0]provides the start position of the first TLP,is_sop1_ptr[1:0]provides the start position of the second TLP,is_sop2_ptr[1:0]provides the start position of the third TLP, andis_sop3_ptr[1:0]provides the start position of the fourth TLP. -
00011111: Five TLPs starting in this beat, at locations determined byis_sop0_ptr[2:0],is_sop1_ptr[2:0],is_sop2_ptr[2:0],is_sop3_ptr[2:0]andis_sop4_ptr[2:0], respectively. -
00111111: Six TLPs starting in this beat, at locations determined byis_sop0_ptr[2:0],is_sop1_ptr[2:0],is_sop2_ptr[2:0],is_sop3_ptr[2:0],is_sop4_ptr[2:0]andis_sop5_ptr[2:0], respectively. -
01111111: Seven TLPs starting in this beat, at locations determined byis_sop0_ptr[2:0],is_sop1_ptr[2:0],is_sop2_ptr[2:0],is_sop3_ptr[2:0],is_sop4_ptr[2:0],is_sop5_ptr[2:0]andis_sop6_ptr[2:0], respectively. -
11111111: Eight TLPs starting in this beat, at locations determined byis_sop0_ptr[2:0],is_sop1_ptr[2:0],is_sop2_ptr[2:0],is_sop3_ptr[2:0],is_sop4_ptr[2:0],is_sop5_ptr[2:0],is_sop6_ptr[2:0], andis_sop7_ptr[2:0]respectively. - All other settings are reserved.
-
-
is_sop0_ptr[2:0]: Whenis_sop[0]is set, this field indicates the offset of the first Completion TLP starting in the current beat. Valid settings are as follows:-
000- TLP starting at Byte lane 0 -
001- Byte lane 16 -
010- Byte lane 32 -
011- Byte lane 48 -
100- Byte lane 64 -
101- Byte lane 80 -
110- Byte lane 96 -
111- Byte lane 112
-
-
is_sop1_ptr[7:0]: Whenis_sop[1]is set, this field indicates the offset of the second Completion TLP starting in the current beat. Valid settings is equivalent tois_sop0_ptr[7:0]except value 'h0 is not valid. -
is_eop[7:0]: These outputs signals that one or more TLPs are ending in this beat. These outputs are set in the final beat of a TLP. When straddle is disabled, onlyis_eop[0]is valid andis_eop[7:1]are permanently set to 0. When straddle is enabled, the settings are as follows:-
00000000: No TLPs ending in this beat. -
00000001: A single TLP is ending in this beat.is_eop0_ptr[3:0]provides the offset of the last Dword of this TLP. -
00000011: Two TLPs are ending in this beat.is_eop0_ptr[3:0]provides the offset of the last Dword of the first TLP andis_eop1_ptr[3:0]provides the offset of the last Dword of the second TLP. -
00000111: Three TLPs are ending in this beat.is_eop0_ptr[3:0]provides the offset of the last Dword of the first TLP,is_eop1_ptr[3:0]provides the offset of the last Dword of the second TLP, andis_eop2_ptr[3:0]provides the offset of the last Dword of the third TLP. -
00001111: Four TLPs are ending in this beat.is_eop0_ptr[3:0]provides the offset of the last Dword of the first TLP,is_eop1_ptr[3:0]provides the offset of the last Dword of the second TLP,is_eop2_ptr[3:0]provides the offset of the last Dword of the third TLP, andis_eop3_ptr[3:0]provides the offset of the last Dword of the fourth TLP. -
00011111: Five TLPs ending in this beat, at locations determined byis_eop0_ptr[4:0],is_eop1_ptr[4:0],is_eop2_ptr[4:0],is_eop3_ptr[4:0]andis_eop4_ptr[4:0], respectively. -
00111111: Six TLPs ending in this beat, at locations determined byis_eop0_ptr[4:0],is_eop1_ptr[4:0],is_eop2_ptr[4:0],is_eop3_ptr[4:0],is_eop4_ptr[4:0]andis_eop5_ptr[4:0], respectively. -
01111111: Seven TLPs ending in this beat, at locations determined byis_eop0_ptr[4:0],is_eop1_ptr[4:0],is_eop2_ptr[4:0],is_eop3_ptr[4:0],is_eop4_ptr[4:0],is_eop5_ptr[4:0]andis_eop6_ptr[4:0], respectively. -
11111111: Eight TLPs ending in this beat, at locations determined byis_eop0_ptr[4:0],is_eop1_ptr[4:0],is_eop2_ptr[4:0],is_eop3_ptr[4:0],is_eop4_ptr[4:0],is_eop5_ptr[4:0],is_eop6_ptr[4:0]andis_eop7_ptr[4:0], respectively. - All other settings are reserved.
-
-
is_eop0_ptr[4:0]: Whenis_eop[0]is set, this field provides the offset of the last Dword of the first TLP ending in this beat. The offset for the last byte can be determined from the starting address and length of the TLP, or from the byte enable signalsbyte_en[63:0]. -
is_eop1_ptr[7:0]: Whenis_eop[1]is set, this field provides the offset of the last Dword of the second TLP ending in this beat.
The following figure illustrates the transfer of 11 Completion TLPs on the requester
completion interface when the straddle option is enabled. The first Completion TLP
(COMPL 1) starts at Dword position 0 of Beat 1 and ends in Dword position 2 of Beat 2.
The second TLP (COMPL 2) starts in Dword position 8 of the same beat and ends in Dword
position 14. Thus, there is one TLP starting in Beat 1, whose starting position is
indicated by is_sop0_ptr, and two TLPs ending, whose ending Dword positions are
indicated by is_eop0_ptr and is_eop1_ptr,
respectively.
Beat 3 has COMPL 3 starting at Dword offset 8, ending at Dword offset10. There is also a
second TLP (CMPL 4) in the same beat, starting at Dword offset 12 and continuing to the
next beat. In this beat, is_sop0_ptr points to the starting Dword
offset of COMPL 3 and is_sop1_ptr points to the starting Dword offset
of COMPL 4. is_eop0_ptr points to the offset of the last Dword offset
of COMPL 4.
Beat 4 has COMPL 4 ending with Dword offset 0, and has three new complete TLPs in it
(COMPL 5, 6 and 7). The starting Dword offsets of the new Completions 5, 6 and 7 are
provided by is_sop0_ptr, is_sop1_ptr, and
is_sop2_ptr, respectively. The ending offsets of Completions 4, 5,
6 and 7 are indicated by is_eop0_ptr, is_eop1_ptr,
is_eop2_ptr and is_eop3_ptr, respectively.
Finally, Beat 5 contains four complete TLPs (COMPL 8 – 11). Their starting Dword offsets
are signaled by is_sop0_ptr, is_sop1_ptr,
is_sop2_ptr and is_sop3_ptr, respectively. The
ending offsets are indicated by is_eop0_ptr,
is_eop1_ptr, is_eop2_ptr and
is_eop3_ptr, respectively. Thus, all the four SOP and EOP pointers
provide valid information in this beat.