Requester Request Descriptor Formats - 3.4 English

Versal Adaptive SoC CPM Mode for PCI Express Product Guide (PG346)

Document ID
PG346
Release Date
2024-05-30
Version
3.4 English

The user application must transfer each request to be transmitted on the link to the requester request interface of the core as an independent AXI4-Stream packet. Each packet must start with a descriptor, and can have payload data following the descriptor. The descriptor is always 16 bytes long, and must be sent in the first 16 bytes of the request packet. The descriptor is transferred during the first two beats on a 64-bit interface, and in the first beat on a 128-bit or 256-bit interface. The formats of the descriptor for different request types are illustrated in the following figures.

The format of the following figure applies when the request TLP being transferred is a memory read/write request, an I/O read/write request, or an Atomic Operation request.

Figure 1. Requester Request Descriptor Format for Memory, I/O, and Atomic Op Requests

The format of the following figure is used for Vendor-Defined Messages (Type 0 or Type 1) only.

Figure 2. Requester Request Descriptor Format for Vendor-Defined Messages

The format of the following figure is used for all ATS messages (Invalid Request, Invalid Completion, Page Request, PRG Response).

Figure 3. Requester Request Descriptor Format for ATS Messages

For all other messages, the descriptor takes the format of the following figure:

Figure 4. Requester Request Descriptor Format for All Other Messages

For configuration request messages, the descriptor takes the format of the following figure:

Figure 5. Requester Request Descriptor Format for Configuration Requests

The following tables describe the individual fields of the requester request descriptor.

Table 1. Requester Request Descriptor Fields for Memory, I/O, and Atomic Operation Requests
Bit Index Field Name Description
1:0 Address Type

This field is defined for memory transactions and Atomic Operations only. The core copies this field into the AT of the TL header of the request TLP.

00: Address in the request is un-translated

01: Transaction is a translation request

10: Address in the request is a translated address

11: Reserved

63:2 Address

This field applies to memory, I/O and atomic operation requests. This is the address of the first Dword referenced by the request. The client must also set the First_BE and Last_BE bits in s_axis_rq_tuser to indicate the valid bytes in the first and last Dwords, respectively.

When the transaction specifies a 32-bit address, bits [63:32] of this field must be set to 0. When Address Type is 01b (Translation Request), Address [11:2] is Reserved and should be driven to 0.

74:64 Dword Count

These 11 bits indicate the size of the block (in Dwords) to be read or written (for messages, size of the message payload). Its range is 0 – 1024 Dwords. For I/O accesses, the Dword count will always be 1.

For memory read requests, Dword count is in the range 1-1024. For a zero length memory read/write request, the Dword count must be 1 with the First_BE bits set to all zeroes.

The integrated block does not check the setting of this field against the actual length of the payload supplied (for requests with payload), nor against the maximum payload size or read request size settings of the integrated block.

78:75 Request Type Identifies the transaction type. The transaction types and their encodings are listed in Table 6.
79 Poisoned Request This bit can be used by the client to poison the request TLP being sent. This feature is supported on all request types except - Type 0 or 1 Configuration Write Request. This bit must be set to 0 for all requests, except when the client has detected an error in the block of data following the descriptor and wants to communicate this information using the Data Poisoning feature of PCI Express.
87:80

Requester Function/Device Number

or

Function ID[7:0]

Device and/or Function number of the Requester Function.

Endpoint mode:

  • ARI enabled:
    • Bits [87:80] must be set to the Requester Function number
  • ARI disabled:
    • Bits [82:80] must be set to the Requester Function number
    • Bits [87:83] are not used

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

  • ARI enabled:
    • Bits [87:80] must be set to the Requester Function number
  • ARI disabled:
    • Bits [82:80] must be set to the Requester Function number.
    • Bits [87:83] are not used if the request is originating from the switch itself. These bits must be set to the Requester Device number where the request was originated if the switch is relaying the request (Requester is external to the switch). This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

  • ARI enabled:
    • Bits [87:80] must be set to the Requester Function number.
  • ARI disabled:
    • Bits [87:80] must be set to the Requester Function number.
    • Bits [87:83] must be set to the Requester Device number. This is used with Requester ID Enable bit in the descriptor.
95:88

Requester Bus Number

or

{{3{Reserved}}, Function ID[12:8]}

Bus number associated with the Requester Function.

Endpoint mode:

  • Lower 5 bits of this field are set to the Function ID[12:8].
  • Remaining 3 bits are reserved for future use Upstream Port for Switch use case (Endpoint mode is selected within the IP)
  • Not used if the request is originating from the switch itself. These bits must be set to the Requester Bus number where the request was originated if the switch is relaying the request (Requester is external to the switch). This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

Must be set to the Requester Bus number. This is used with Requester ID Enable bit in the descriptor.

103:96 Tag PCIe Tag associated with the request. For posted transactions, the core always uses the value from this field as the tag for the request.

For Non-Posted transactions, the core uses the value from this field if the attribute attr_axisten_if_enable_client_tag is set (that is, when tag management is performed by the client). If this attribute is not set, tag management logic in the core is responsible for generating the tag to be used and the value in the tag field of the descriptor is not used.

119:104 Completer ID This field is applicable only to Configuration requests and messages routed by ID. For these requests, this field specifies the PCI Completer ID associated with the request (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 the ARI mode, these 16 bits are treated as an 8-bit bus number and 8-bit Function number).
120 Requester ID Enable/T8

When 10-bit tags are disabled for the requester, this field is used as Requester ID Enable:

  • 1'b1: The client supplies Bus, Device, and Function numbers in the descriptor to be populated as the Requester ID field in the TLP header.
  • 1'b0: IP uses Bus and Device numbers captured from the received configuration requests and the client supplies function numbers in the descriptor to be populated as the Requester ID field in the TLP header. When Requester ID enable is 0 the device number fields in descriptor should also be 0.

Endpoint mode:

  • Must be set to 1'b0
  • Upstream port for switch use case (Endpoint mode is selected within the IP)
  • Set to 1'b0 when the request is originating from the switch itself
  • Set to 1'b1 when the switch is relaying the request (Requester is external to the switch). This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Root Port mode:

Must be set to 1'b1. This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Note: When 10-bit tags are enabled for the requester, the Requester ID Enable is implicitly assumed to be set to 0 in the EP mode, and set to 1 in all other modes. In this case, this field is used to transport bit [8] of the PCIe tag associated with Non-Posted requests.
123:121 Transaction Class (TC) PCIe Transaction Class (TC) associated with the request.
126:124 Attributes

These bits provide the setting of the attribute bits associated with the request. Bit-124 is the No Snoop bit and bit 125 is the Relaxed Ordering bit. Bit-126 is the ID-Based Ordering bit, it can be set only for memory requests and messages.

The core forces the attribute bits to 0 in the request sent on the link if the corresponding attribute is not enabled in the Function’s PCI Express Device Control Register.

127 T9 When 10-bit tags are enabled for the requester, this field is used to transport bit [9] of the PCIe tag associated with Non-Posted requests. This field must be set to 0 when sending a Posted request.
Table 2. Requester Request Descriptor Fields for Configuration Requests
Bit Index Field Name Description
1:0 Reserved These bits are reserved.
7:2 Reg Number This field specifies the register number targeted by the configuration request.
11:8 Extended Reg Number This field specifies the extended bits for the register number targeted by the configuration request, if applicable.
63:12 Reserved These bits are reserved.
74:64 Dword Count

These 11 bits indicate the size of the block (in Dwords) to be read or written (for messages, size of the message payload). Its range is 0 – 1024 Dwords. For I/O accesses, the Dword count will always be 1.

For memory read requests Dword count is in the range 1-1024.

For a zero length memory read/write request, the Dword count must be 1, with the First_BE bits set to all zeroes.

The integrated block does not check the setting of this field against the actual length of the payload supplied (for requests with payload), nor against the maximum payload size or read request size settings of the integrated block.

78:75 Request Type

Identifies the transaction type. The transactions types and their encodings are listed in Table 6.

79 Poisoned Request This bit can be used by the client to poison the request TLP being sent. This feature is supported in all request types except in Type 0 or 1 Configuration Write Request. This bit must be set to 0 for all requests, except when the client has detected an error in the block of data following the descriptor and wants to communicate this information using the Data Poisoning feature of PCI Express.
87:80

Requester Function/Device Number

or

Function ID[7:0]

Device and/or Function number of the Requester Function.

Endpoint mode:

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [82:80] must be set to the Requester Function number.

Bits [87:83] are not used

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [82:80] must be set to the Requester Function number.

Bits [87:83] are not used if the request is originating from the switch itself. These bits must be set to the Requester Device number where the request was originated if the switch is relaying the request (Requester is external to the switch).

This is used in with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [87:80] must be set to the Requester Function number.

Bits [87:83] must be set to the Requester Device number. This is used with Requester ID Enable bit in the descriptor.

95:88

Requester Bus Number

or

{{3{Reserved}}, Function ID[12:8]}

Bus number associated with the Requester Function.

Endpoint mode:

Lower 5 bits of this field are set to the Function ID[12:8].

Remaining 3 bits are reserved for future use.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

Not used if the request is originating from the switch itself. These bits must be set to the Requester Bus number where the request was originated if the switch is relaying the request (Requester is external to the switch). This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

Must be set to the Requester Bus number. This is used with Requester ID Enable bit in the descriptor.

103:96 Tag PCIe Tag associated with the request. For posted transactions, the core always uses the value from this field as the tag for the request.

For Non-Posted transactions, the core uses the value from this field if the attribute attr_axisten_if_ enable_client_tag is set (that is, when tag management is performed by the client). If this attribute is not set, tag management logic in the core is responsible for generating the tag to be used, and the value in the tag field of the descriptor is not used.

119:104 Completer ID This field is applicable only to Configuration requests and messages routed by ID. For these requests, this field specifies the PCI Completer ID associated with the request (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 the ARI mode, these 16 bits are treated as an 8-bit bus number and 8-bit Function number).
120 Requester ID Enable/T8

When 10-bit tags are disabled for the requester, this field is used as Requester ID Enable:

1'b1: The client supplies Bus, Device, and Function numbers in the descriptor to be populated as the Requester ID field in the TLP header.

1'b0: IP uses Bus and Device numbers captured from received Configuration requests and the client supplies Function numbers in the descriptor to be populated as the Requester ID field in the TLP header. When Requester ID enable is 0 the device number fields in descriptor should also be 0.

Endpoint mode:

Must be set to 1'b0.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

Set to 1'b0 when the request is originating from the switch itself.

Set to 1'b1 when the switch is relaying the request (Requester is external to the switch). This is used with Requester.

Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Root Port mode:

Must be set to 1'b1. This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Note: When 10-bit tags are enabled for the requester, the Requester ID Enable is implicitly assumed to be set to 0 in the EP mode, and set to 1 in all other modes. In this case, this field is used to transport bit [8] of the PCIe tag associated with Non-Posted requests.
123:121 Transaction Class (TC) PCIe Transaction Class (TC) associated with the request.
126:124 Attributes

These bits provide the setting of the Attribute bits associated with the request. Bit 124 is the No Snoop bit and bit 125 is the Relaxed Ordering bit. Bit 126 is the ID-Based Ordering bit, and can be set only for memory requests and messages.

The core forces the attribute bits to 0 in the request sent on the link if the corresponding attribute is not enabled in the Function’s PCI Express Device Control Register.

127 T9

When 10-bit tags are enabled for the requester, this field is used to transport bit [9] of the PCIe tag associated with Non-Posted requests. This field must be set to 0 when sending a Posted request.

Table 3. Requester Request Descriptor Fields for Vendor-Defined Messages
Bit Index Field Name Description
15:0 Destination ID This field applies to Vendor-Defined Messages only. When the message is routed by ID (that is, when the Message Routing field is 010 binary), this field must be set to the Destination ID of the message.
31:16 Vendor ID This field applies to Vendor-Defined Messages only. It provides the Vendor ID for the message.
63:32 Vendor-Defined Header This field applies to Vendor-Defined Messages only. It is copied into Dword 3 of the TL header.
74:64 Dword Count

These 11 bits indicate the size of the block (in Dwords) to be read or written (for messages, size of the message payload). Its range is 0 – 1024 Dwords. For I/O accesses, the Dword count will always be 1.

For memory read requests Dword count is in the range 1-1024.

For a zero length memory read/write request, the Dword count must be 1, with the First_BE bits set to all zeroes.

The integrated block does not check the setting of this field against the actual length of the payload supplied (for requests with payload), nor against the maximum payload size or read request size settings of the integrated block.

78:75 Request Type Identifies the transaction type. The transactions types and their encodings are listed in Table 6.
79 Poisoned Request This bit can be used by the client to poison the request TLP being sent. This feature is supported on all request types except - Type 0 or 1 Configuration Write Request. This bit must be set to 0 for all requests, except when the client has detected an error in the block of data following the descriptor and wants to communicate this information using the Data Poisoning feature of PCI Express.
87:80

Requester Function/Device Number

or

Function ID[7:0]

Device and/or Function number of the Requester Function. Endpoint mode:

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [82:80] must be set to the Requester Function number.

Bits [87:83] are not used.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [82:80] must be set to the Requester Function number.

Bits [87:83] are not used if the request is originating from the switch itself. These bits must be set to the Requester Device number where the request was originated if the switch is relaying the request (Requester is external to the switch).

This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [87:80] must be set to the Requester Function number.

Bits [87:83] must be set to the Requester Device number. This is used with Requester ID Enable bit in the descriptor.

95:88

Requester Bus Number

or

{{3{Reserved}}, Function ID[12:8]}

Bus number associated with the Requester Function.

Endpoint mode:

Lower 5 bits of this field are set to the Function ID[12:8].

Remaining 3 bits are reserved for future use

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

Not used if the request is originating from the switch itself. These bits must be set to the Requester Bus number where the request was originated if the switch is relaying the request (Requester is external to the switch). This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

Must be set to the Requester Bus number. This is used with Requester ID Enable bit in the descriptor.

103:96 Tag PCIe Tag associated with the request. For posted transactions, the core always uses the value from this field as the tag for the request.

For Non-Posted transactions, the core will use the value from this field if the attribute attr_axisten_if_enable_client_tag is set (that is, when tag management is performed by the client). If this attribute is not set, tag management logic in the core is responsible for generating the tag to be used, and the value in the tag field of the descriptor is not used.

111:104 Message Code This field is defined for all messages. It contains the 8-bit Message Code to be set in the TL header.
114:112 Message Routing This field is defined for all messages. The core copies these bits into the 3-bit Routing field r[2:0] of the TL header of the Request TLP.
119:115 Reserved These bits are reserved.
120 Requester ID Enable/T8

When 10-bit tags are disabled for the requester, this field is used as Requester ID Enable:

1'b1: The client supplies Bus, Device, and Function numbers in the descriptor to be populated as the Requester ID field in the TLP header.

1'b0: IP uses Bus and Device numbers captured from the received configuration requests and the client supplies Function numbers in the descriptor to be populated as the Requester ID field in the TLP header. When Requester ID enable is 0 the device number fields in descriptor should also be 0.

Endpoint mode:

Must be set to 1'b0.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

Set to 1'b0 when the request is originating from the switch itself.

Set to 1'b1 when the switch is relaying the request (Requester is external to the switch). This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Root Port mode:

Must be set to 1'b1. This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Note: When 10-bit tags are enabled for the requester, the Requester ID Enable is implicitly assumed to be set to 0 in the EP mode, and set to 1 in all other modes. In this case, this field is used to transport bit [8] of the PCIe tag associated with Non-Posted requests.
123:121 Transaction Class (TC) PCIe Transaction Class (TC) associated with the request.
126:124 Attributes

These bits provide the setting of the Attribute bits associated with the request. Bit 124 is the No Snoop bit and bit 125 is the Relaxed Ordering bit. Bit 126 is the ID-Based Ordering bit, and can be set only for memory requests and messages.

The core forces the attribute bits to 0 in the request sent on the link if the corresponding attribute is not enabled in the Function’s PCI Express Device Control Register.

127 T9 When 10-bit tags are enabled for the requester, this field is used to transport bit [9] of the PCIe tag associated with Non-Posted requests. This field must be set to 0 when sending a Posted request.
Table 4. Requester Request Descriptor Fields for ATS Messages
Bit Index Field Name Description
63:0 ATS Header This field is applicable to ATS messages only. It contains the bytes that the core copies into Dwords 2 and 3 of the TL header.
74:64 Dword Count

These 11 bits indicate the size of the block (in Dwords) to be read or written (for messages, size of the message payload). Its range is 0 – 1024 Dwords. For I/O accesses, the Dword count is always 1.

For memory read requests Dword count is in the range 1 - 1024.

For a zero length memory read/write request, the Dword count must be 1, with the First_BE bits set to all zeroes.

The integrated block does not check the setting of this field against the actual length of the payload supplied (for requests with payload), nor against the maximum payload size or read request size settings of the integrated block.

78:75 Request Type Identifies the transaction type. The transactions types and their encodings are listed in Table 6.
79 Poisoned Request This bit can be used by the client to poison the request TLP being sent. This feature is supported on all request types except - Type 0 or 1 Configuration Write Request. This bit must be set to 0 for all requests, except when the client has detected an error in the block of data following the descriptor and wants to communicate this information using the Data Poisoning feature of PCI Express.
87:80

Requester Function/Device Number

or

Function ID[7:0]

Device and/or Function number of the Requester Function. Endpoint mode:

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [82:80] must be set to the Requester Function number.

Bits [87:83] are not used.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [82:80] must be set to the Requester Function number.

Bits [87:83] are not used if the request is originating from the switch itself. These bits must be set to the Requester Device number where the request was originated if the switch is relaying the request (Requester is external to the switch).

This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [87:80] must be set to the Requester Function number.

Bits [87:83] must be set to the Requester Device number. This is used with Requester ID Enable bit in the descriptor.

95:88

Requester Bus Number

or

{{3{Reserved}}, Function ID[12:8]}

Bus number associated with the Requester Function.

Endpoint mode:

Lower 5 bits of this field are set to the Function ID[12:8].

Remaining 3 bits are reserved for future use

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

Not used if the request is originating from the switch itself. These bits must be set to the Requester Bus number where the request was originated if the switch is relaying the request (Requester is external to the switch). This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

Must be set to the Requester Bus number. This is used with Requester ID Enable bit in the descriptor.

103:96 Tag PCIe Tag associated with the request. For posted transactions, the core always uses the value from this field as the tag for the request.

For Non-Posted transactions, the core will use the value from this field if the attribute attr_axisten_if_enable_client_tag is set (that is, when tag management is performed by the client). If this attribute is not set, tag management logic in the core is responsible for generating the tag to be used, and the value in the tag field of the descriptor is not used.

111:104 Message Code This field is defined for all messages. It contains the 8-bit Message Code to be set in the TL header.
114:112 Message Routing This field is defined for all messages. The core copies these bits into the 3-bit Routing field r[2:0] of the TL header of the Request TLP.
119:115 Reserved These bits are reserved.
120 Requester ID Enable/T8

When 10-bit tags are disabled for the requester, this field is used as Requester ID Enable:

1'b1: The client supplies Bus, Device, and Function numbers in the descriptor to be populated as the Requester ID field in the TLP header.

1'b0: IP uses Bus and Device numbers captured from received configuration requests and the client supplies Function numbers in the descriptor to be populated as the Requester ID field in the TLP header. When Requester ID enable is 0 the device number fields in descriptor should also be 0.

Endpoint mode:

Must be set to 1'b0.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

Set to 1'b0 when the request is originating from the switch itself.

Set to 1'b1 when the switch is relaying the request (Requester is external to the switch). This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Root Port mode:

Must be set to 1'b1. This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Note: When 10-bit tags are enabled for the requester, the Requester ID Enable is implicitly assumed to be set to 0 in the EP mode, and set to 1 in all other modes. In this case, this field is used to transport bit [8] of the PCIe tag associated with Non-Posted requests.
123:121 Transaction Class (TC) PCIe Transaction Class (TC) associated with the request.
126:124 Attributes

These bits provide the setting of the Attribute bits associated with the request. Bit-124 is the No Snoop bit and bit-125 is the Relaxed Ordering bit. Bit-126 is the ID-Based Ordering bit, and can be set only for memory requests and messages.

The core forces the attribute bits to 0 in the request sent on the link if the corresponding attribute is not enabled in the Function’s PCI Express Device Control Register.

127 T9 When 10-bit tags are enabled for the requester, this field is used to transport bit [9] of the PCIe tag associated with Non-Posted requests. This field must be set to 0 when sending a Posted request.
Table 5. Requester Request Descriptor Fields for all Other Messages
Bit Index Field Name Description
15:0 Snoop Latency This field is defined for LTR messages only, it is reserved for the others. It provides the value of the 16-bit Snoop Latency field in the TL header of the message.
31:16 No-Snoop Latency This field is defined for LTR messages only, it is reserved for the others. It provides the value of the 16-bit No-Snoop Latency field in the TL header of the message.
35:32 OBFF Code This field is defined for OBFF messages only, it is reserved for the others. The OBFF Code field is used to distinguish between various OBFF cases:

- 1111b : CPU Active – System fully active for all device actions including bus mastering and interrupts

- 0001b : OBFF – System memory path available for device memory read/write bus master activities

- 0000b Idle – System in an idle, low power state

- All other codes are reserved.

63:36 Reserved These bits are reserved
74:64 Dword Count

These 11 bits indicate the size of the block (in Dwords) to be read or written (for messages, size of the message payload). Its range is 0 – 1024 Dwords. For I/O accesses, the Dword count will always be 1.

For memory read requests Dword count is in the range 1 - 1024.

For a zero length memory read/write request, the Dword count must be 1, with the First_BE bits set to all zeroes.

The integrated block does not check the setting of this field against the actual length of the payload supplied (for requests with payload), nor against the maximum payload size or read request size settings of the integrated block.

78:75 Request Type Identifies the transaction type. The transactions types and their encodings are listed in Table 6.
79 Poisoned Request This bit can be used by the client to poison the request TLP being sent. This feature is supported on all request types except - Type 0 or 1 Configuration Write Request. This bit must be set to 0 for all requests, except when the client has detected an error in the block of data following the descriptor and wants to communicate this information using the Data Poisoning feature of PCI Express.
87:80

Requester Function/Device Number

or

Function ID[7:0]

Device and/or Function number of the Requester Function. Endpoint mode:

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [82:80] must be set to the Requester Function number.

Bits [87:83] are not used.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [82:80] must be set to the Requester Function number.

Bits [87:83] are not used if the request is originating from the switch itself. These bits must be set to the Requester Device number where the request was originated if the switch is relaying the request (Requester is external to the switch). This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

ARI enabled:

Bits [87:80] must be set to the Requester Function number.

ARI disabled:

Bits [87:80] must be set to the Requester Function number.

Bits [87:83] must be set to the Requester Device number. This is used with Requester ID Enable bit in the descriptor.

95:88

Requester Bus Number

or

{{3{Reserved}}, Function ID[12:8]}

Bus number associated with the Requester Function. Endpoint mode:

Lower 5 bits of this field are set to the Function ID[12:8].

Remaining 3 bits are reserved for future use.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

Not used if the request is originating from the switch itself. These bits must be set to the Requester Bus number where the request was originated if the switch is relaying the request (Requester is external to the switch). This is used with Requester ID Enable bit in the descriptor.

Root Port mode (Downstream Port):

Must be set to the Requester Bus number. This is used with Requester ID Enable bit in the descriptor.

103:96 Tag PCIe Tag associated with the request. For posted transactions, the core always uses the value from this field as the tag for the request.

For Non-Posted transactions, the core uses the value from this field if the attribute attr_axisten_if_enable_client_tag is set (that is, when tag management is performed by the client). If this attribute is not set, tag management logic in the core is responsible for generating the tag to be used, and the value in the tag field of the descriptor is not used.

111:104 Message Code This field is defined for all messages. It contains the 8-bit Message Code to be set in the TL header.
114:112 Message Routing This field is defined for all messages. The core copies these bits into the 3-bit Routing field r[2:0] of the TL header of the Request TLP.
119:115 Reserved These bits are reserved.
120 Requester ID Enable/T8

When 10-bit tags are disabled for the requester, this field is used as Requester ID Enable:

1'b1: The client supplies Bus, Device, and Function numbers in the descriptor to be populated as the Requester ID field in the TLP header.

1'b0: IP uses Bus and Device numbers captured from received

Configuration requests and the client supplies Function numbers in the descriptor to be populated as the Requester ID field in the TLP header. When Requester ID enable is 0 the device number fields in descriptor should also be 0.

Endpoint mode:

Must be set to 1'b0.

Upstream Port for Switch use case (Endpoint mode is selected within the IP):

Set to 1'b0 when the request is originating from the switch itself.

Set to 1'b1 when the switch is relaying the request (Requester is external to the switch). This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Root Port mode:

Must be set to 1'b1. This is used with Requester Bus Number bits [95:88] and Requester Function/Device Number bits [87:83] when ARI is not enabled.

Note: When 10-bit tags are enabled for the requester, the Requester ID Enable is implicitly assumed to be set to 0 in the EP mode, and set to 1 in all other modes. In this case, this field is used to transport bit [8] of the PCIe tag associated with Non-Posted requests.
123:121 Transaction Class (TC) PCIe Transaction Class (TC) associated with the request.
126:124 Attributes

These bits provide the setting of the Attribute bits associated with the request. Bit 124 is the No Snoop bit and bit 125 is the Relaxed Ordering bit. Bit 126 is the ID-Based Ordering bit, and can be set only for memory requests and messages.

The core forces the attribute bits to 0 in the request sent on the link if the corresponding attribute is not enabled in the Function’s PCI Express Device Control Register.

127 T9 When 10-bit tags are enabled for the requester, this field is used to transport bit [9] of the PCIe tag associated with Non-Posted requests. This field must be set to 0 when sending a Posted request.
Table 6. Transaction Types
Request Type (binary) Description
0000 Memory read request
0001 Memory write request
0010 I/O read request
0011 I/O write request
0100 Memory fetch and add request
0101 Memory unconditional swap request
0110 Memory compare and swap request
0111 Locked read request (allowed only in legacy devices)
1000 Type 0 configuration read request (on requester side only)
1001 Type 1 configuration read request (on requester side only)
1010 Type 0 configuration write request (on requester side only)
1011 Type 1 configuration write request (on requester side only)
1100 Any message, except ATS and vendor defined messages
1101 Vendor defined message
1110 ATS message
1111 Reserved