Intel FPGA P-Tile Avalon Memory-mapped IP for PCI Express User Guide
Version Information
Updated for: |
---|
Intel® Quartus® Prime Design Suite 20.4 |
IP Version 4.0.0 |
1. Introduction
1.1. Overview
The P-Tile Avalon® memory mapped IP for PCIe combines the functionality of previous Avalon® memory-mapped (Avalon-MM) and Avalon memory-mapped with direct memory access (DMA) interfaces. The IP core using the Avalon-MM interface removes many of the complexities associated with the PCIe protocol. It handles all of the Transaction Layer Packet (TLP) encoding and decoding, simplifying the design task. It also includes optional Read and Write Data Mover modules facilitating the creation of high-performance DMA designs. Both the Avalon-MM interface and the Read and Write Data Mover modules are implemented in soft logic. This IP Core natively supports Endpoint and Root Port configurations with Gen3/Gen4 data rates and x4/x8/x16 link widths. Gen1/Gen2 data rates and x1/x2 link widths are supported via link down-training.
- Modules, implemented in soft logic, that perform Avalon® memory mapped functions. Together, these modules form an Avalon® memory mapped Bridge.
- A PCIe Hard IP that implements the Transaction, Data Link, and Physical layers stack that is compliant with PCI Express Base Specification 4.0 . This stack allows the user application logic in the Intel FPGA to interface with another device via a PCI Express link.
This IP provides support for an Avalon® memory mapped interface with DMA and is designed to optimize the performance of large-size data transfers. If you want to achieve maximum performance with small-size transfers, Intel recommends the use of the P-Tile Avalon® streaming IP for PCIe.
1.2. Features
- Configurations supported:
Table 1. Configurations Supported by the P-Tile Avalon® memory mapped IP for PCI Express Gen3/Gen4 x16 Gen3/Gen4 x8 Gen3/Gen4 x4 Endpoint (EP) Yes Yes N/A Root Port (RP) 1 N/A Yes Note: Gen1/Gen2 configurations are supported via link down-training. - Support for 256-bit and 512-bit data paths.
- 512-bit data path with 250 MHz interfaces to user logic to ease timing closure for Gen3 x16.
- Support for a single function (PF0).
- High-throughput Bursting
Avalon®
memory mapped Slave (BAS).
- Byte enables with byte granularity.
- High-throughput Bursting Avalon® memory mapped Master (BAM).
- Support for up to 7 BARs, including expansion ROM BAR.
- Support for byte enables with byte granularity.
- Support for up to 64 outstanding Non-Posted requests.
- Summary of outstanding Non-Posted requests supported:
Table 2. Outstanding Non-Posted Requests Supported Ports Active Cores Outstanding Non-Posted Requests 0 x16 64, 512 (*) 1 x8 64 2 and 3 x4 64 Note: (*) : 512 outstanding Non-Posted requests support may be available in a future Intel® Quartus® Prime release. - Data movers with high throughput for DMA support
- Move data using PCIe Memory Read and Memory Write packets.
- Bursting Avalon® memory mapped Master interfaces for data path.
- Byte enables with dword granularity.
- Avalon® streaming interfaces for control and status.
- DMA transfers of 1 dword to (1 MB - 1 dword) in 1 dword increments.
- All addresses are dword-aligned.
- Bursts of up to 8 cycles (512 bytes) for the Bursting Avalon® memory mapped Master, Bursting Avalon® memory mapped Slave and the data movers.
- Support for Max Payload Size values of 128, 256 and 512 bytes.
- Support for Max Read Request Size values of 128, 256 and 512 bytes.
- Available as a Platform Designer component with standard Avalon® interfaces.
- MSI and MSI-X.
- Separate Refclk with Independent Spread Spectrum Clocking (SRIS).
- You cannot change the pin allocations for the P-Tile Avalon® memory mapped IP for PCI Express* in the Intel® Quartus® Prime project. However, this IP does support lane reversal and polarity inversion on the PCB.
- Supports Autonomous Hard IP mode.
- This mode allows the PCIe Hard IP to communicate with the Host
before the FPGA configuration and entry into User mode are
complete.Note: Unless Readiness Notifications mechanisms are used, the Root Complex and/or system software must allow at least 1.0 s after a Conventional Reset of a device before it may determine that a device that fails to return a Successful Completion status for a valid Configuration Request is a broken device. This period is independent of how quickly Link training completes.
- This mode allows the PCIe Hard IP to communicate with the Host
before the FPGA configuration and entry into User mode are
complete.
- Modular implementation allowing users to enable the required features
for a specific application. For example:
- Simultaneous support for DMA modules and high-throughput Avalon® memory mapped Slaves and Masters.
- Avalon® memory mapped Slave for easy access to the whole PCIe address space.
- VCS is the only simulator supported in the 20.2 release of Intel® Quartus® Prime. Other simulators may be supported in a future release.
1.3. Release Information
Item |
Description |
---|---|
IP Version |
4.0.0 |
Intel® Quartus® Prime Version | 20.4 |
Release Date | December 2020 |
Ordering Codes |
No ordering code is required |
IP versions are the same as the Intel Quartus Prime Design Suite software versions up to v19.1. From Intel Quartus Prime Design Suite software version 19.2 or later, IPs have a new IP versioning scheme.
- X indicates a major revision of the IP. If you update your Intel Quartus Prime software, you must regenerate the IP.
- Y indicates the IP includes new features. Regenerate your IP to include these new features.
- Z indicates the IP includes minor changes. Regenerate your IP to include these changes.
Intel verifies that the current version of the Intel® Quartus® Prime Pro Edition software compiles the previous version of each IP core, if this IP core was included in the previous release. Intel reports any exceptions to this verification in the Intel IP Release Notes or clarifies them in the Intel® Quartus® Prime Pro Edition IP Update tool. Intel does not verify compilation with IP core versions older than the previous release.
1.4. Device Family Support
The following terms define device support levels for Intel® FPGA IP cores:
- Advance support—the IP core is available for simulation and compilation for this device family. Timing models include initial engineering estimates of delays based on early post-layout information. The timing models are subject to change as silicon testing improves the correlation between the actual silicon and the timing models. You can use this IP core for system architecture and resource utilization studies, simulation, pinout, system latency assessments, basic timing assessments (pipeline budgeting), and I/O transfer strategy (data-path width, burst depth, I/O standards tradeoffs).
- Preliminary support—the IP core is verified with preliminary timing models for this device family. The IP core meets all functional requirements, but might still be undergoing timing analysis for the device family. It can be used in production designs with caution.
- Final support—the IP core is verified with final timing models for this device family. The IP core meets all functional and timing requirements for the device family and can be used in production designs.
Device Family |
Support Level |
---|---|
Intel® Stratix® 10 DX |
Preliminary support |
Intel® Agilex™ |
Preliminary support |
Other device families |
No support Refer to the Intel PCI Express Solutions web page on the Intel website for support information on other device families. |
1.5. Performance and Resource Utilization
The following table shows the recommended FPGA fabric speed grades for all the configurations that the Avalon® -MM IP core supports.
Lane Rate |
Link Width |
Application Interface Data Width |
Application Clock Frequency (MHz) |
Recommended FPGA Fabric Speed Grades |
---|---|---|---|---|
Gen4 |
x4 | 256-bit |
200 MHz ( Intel® Stratix® 10 DX) 250 MHz ( Intel® Agilex™ ) |
-1, -2 |
x8 | 512-bit |
200 MHz ( Intel® Stratix® 10 DX) 250 MHz ( Intel® Agilex™ ) |
-1, -2 | |
x16 | 512-bit |
350 MHz ( Intel® Stratix® 10 DX) 350 MHz / 400 MHz ( Intel® Agilex™ ) |
-1, -2 | |
Gen3 |
x4 | 256-bit | 125 MHz | -1, -2 |
x8 |
512-bit | 125 MHz | -1, -2 | |
x16 | 512-bit | 250 MHz | -1, -2 |
The Avalon® -MM variants include an Avalon® -MM DMA bridge implemented in soft logic. It operates as a front end to the hardened protocol stack. The resource utilization table below shows results for the Simple DMA dynamically generated design example.
The results are for the current version of the Intel® Quartus® Prime Pro Edition software.
Design Example Used |
Link Configuration | Device Family |
Typical ALMs |
M20K Memory Blocks2 |
Logic Registers |
|
---|---|---|---|---|---|---|
DMA | Gen3 x16, EP | Intel® Stratix® 10 DX | 15956 | 120 | 42345 | |
DMA | Gen3 x16, EP | Intel® Agilex™ | 17116 | 120 | 42940 | |
DMA | Gen4 x16, EP | Intel® Stratix® 10 DX | 15967 | 120 | 42641 | |
DMA | Gen4 x16, EP | Intel® Agilex™ | 16963 | 120 | 45425 | |
DMA | Gen4 x8, EP | Intel® Stratix® 10 DX | 14533 | 97 | 42610 | |
DMA | Gen4 x8, EP | Intel® Agilex™ | 16275 | 97 | 41025 |
1.6. IP Core and Design Example Support Levels
The following table shows the support levels of the Avalon-MM IP core and design example in Intel® Stratix® 10 DX devices.
Configuration | PCIe IP Support | Design Example Support | ||
---|---|---|---|---|
EP | RP | EP | RP | |
Gen4 x16 512-bit | S C T H | (††) | S C T H (†) | (††) |
Gen4 x8/x8 512-bit | S C T H | N/A | S C T H (†) | N/A |
Gen4 x4/x4/x4/x4 256-bit | N/A | S C T H | N/A | (††) |
Gen3 x16 512-bit | S C T H | (††) | S C T H (†) | (††) |
Gen3 x8/x8 512-bit | S C T H | N/A | S C T H (†) | N/A |
Gen3 x4/x4/x4/x4 256-bit | N/A | S C T H | N/A | (††) |
The following table shows the support levels of the Avalon-MM IP core and design example in Intel® Agilex™ devices.
Configuration | PCIe IP Support | Design Example Support | ||
---|---|---|---|---|
EP | RP | EP | RP | |
Gen4 x16 512-bit | S C T H | (††) | S C T H (†) | (††) |
Gen4 x8/x8 512-bit | S C T H | N/A | S C T H (†) | N/A |
Gen4 x4/x4/x4/x4 256-bit | N/A | S C T H | N/A | (††) |
Gen3 x16 512-bit | S C T H | (††) | S C T H (†) | (††) |
Gen3 x8/x8 512-bit | S C T H | N/A | S C T H (†) | N/A |
Gen3 x4/x4/x4/x4 256-bit | N/A | S C T H | N/A | (††) |
2. IP Architecture and Functional Description
2.1. Top-Level Architecture
- PMA/PCS
- Four PCIe* cores (one x16 core, one x8 core and two x4 cores)
- Embedded Multi-die Interconnect Bridge (EMIB)
- Soft logic blocks in the FPGA fabric to implement the Avalon® -MM Bridge, which translates the PCIe TLPs from the PCIe Hard IP into standard Avalon® memory-mapped reads and writes.
The four cores in the IP can be configured to support the following topologies:
Configuration Mode | Native Hard IP Mode |
Endpoint (EP) / Root Port (RP) |
Active Cores |
---|---|---|---|
Configuration Mode 0 | Gen3x16 or Gen4x16 |
EP/RP |
x16 |
Configuration Mode 1 | Gen3x8/Gen3x8 or Gen4x8/Gen4x8 |
EP |
x16, x8 |
Configuration Mode 2 | Gen3x4/Gen3x4/Gen3x4/Gen3x4 or Gen4x4/Gen4x4/Gen4x4/Gen4x4 |
RP |
x16, x8, x4_0, x4_1 |
In Configuration Mode 0, only the x16 core is active, and it operates in Gen3 x16 mode or Gen4 x16 mode.
In Configuration Mode 1, the x16 core and x8 core are active, and they operate as two Gen3 x8 cores or two Gen4 x8 cores.
In Configuration Mode 2, all four cores (x16, x8, x4_0, x4_1) are active, and they operate as four Gen3 x4 cores or four Gen4 x4 cores.
2.1.1. Avalon -MM Bridge Architecture
- Endpoint mode with Data Movers.
- Endpoint mode.
- Root Port mode.
In the first two modes, the P-Tile Avalon® -MM IP functions as an Endpoint (EP). In Root Port mode, it functions as a Root Port (RP).
The Avalon® -MM Bridge consists of five main modules: Read Data Mover (RDDM), Write Data Mover (WRDM), Bursting Avalon® -MM Master (BAM), Bursting Avalon® -MM Slave (BAS) and Control Register Access (CRA). These modules are shown in Figure 2 and described below. Depending on the mode of operation, different modules in the IP core are enabled.
Modes | Modules | ||||||
---|---|---|---|---|---|---|---|
Read Data Mover (RDDM) | Write Data Mover (WRDM) | Bursting Avalon® -MM Master (BAM) | Bursting Avalon® -MM Slave (BAS) | Control Register Access (CRA) | |||
Non-Bursting Mode | Bursting Mode | Non-Bursting Mode | Bursting Mode | ||||
Endpoint mode with Data Movers (EP) | Yes | Yes | Yes | No | No | No | No |
Endpoint mode (EP) | No | No | Yes | No | No | Yes | No |
Root Port mode (RP) | No | No | No | Yes | Yes | No | Yes |
Here is a block diagram of the P-Tile Avalon® -MM Bridge showing the main modules:
- Bursting Master (BAM): This module converts memory read and write TLPs initiated by the remote link partner and received over the PCIe link into Avalon® -MM burst read and write transactions, and sends back CplD TLPs for read requests it receives. It can also function in a non-bursting mode.
- Bursting Slave (BAS): This module converts Avalon® -MM read and write transactions initiated by the application logic into PCIe memory read and write TLPs to be transmitted over the PCIe link. This module also processes the CplD TLPs received for the read requests it sent. It can also function in a non-bursting mode.
- Read Data Mover (RDDM): This module uses PCIe memory read TLPs and Avalon® -MM write transactions to move large amounts of data from the system memory in the PCIe space to the FPGA memory in the Avalon® -MM space. It fetches descriptors from the system memory through one of its two Avalon® -ST sink interfaces. These descriptors define the data transfers to be executed. The RDDM also reports the status of these data transfers via its Avalon® -ST source interface.
- Write Data Mover (WRDM): This module uses PCIe memory write TLPs and Avalon® -MM read transactions to move large amounts of data from your application logic in the Avalon® -MM space to the system memory in the PCIe space. The WRDM also supports immediate writes, which are enabled by a bit in the descriptors that the WRDM receives via one of its Avalon® -ST descriptor sink interfaces. For more details on immediate writes, refer to Write Data Mover Avalon -ST Descriptor Sinks. Similar to the RDDM, the WRDM also has its own Avalon® -ST source interface to report the status of its data transfers.
- Control Register Access (CRA) Avalon-MM Slave (Root Port only): This module is used in Root Port mode only to issue accesses to the Endpoint's configuration space registers. It supports a single transaction at a time. It converts single-cycle, 32-bit Avalon® -MM read and write transactions into PCIe configuration read and write TLPs (CfgRd0, CfgRd1, CfgWr0 and CfgWr1) to be sent over the PCIe link. This module also processes the completion TLPs (Cpl and CplD) it receives in return.
The Response Reordering module assembles and reorders completion TLPs received over the PCIe link for the Bursting Slave and the Read Data Mover. It routes the completions based on their tags.
No re-ordering is necessary for the completions sent to the CRA module as it only issues one request TLP at a time.
Endpoint applications typically need the Bursting Master to enable the host to provide information for the other modules.
2.1.2. Clock Domains
- PHY clock domain (i.e. core_clk domain): this clock is synchronous to the SerDes parallel clock.
- EMIB/FPGA fabric interface clock domain (i.e. pld_clk domain): this clock is derived from the same reference clock (refclk0) as the one used by the SerDes. However, this clock is generated from a stand-alone core PLL.
- Application clock domain (p<n>_app_clk): this clock is an output from the P-Tile IP. The frequency of this clock depends on the configuration that the IP is in. Refer to Table 11 below for more details. This is a per-port signal (i.e, n = 0,1,2,3).
The PHY clock domain (i.e. core_clk domain) is a dynamic frequency domain. The PHY clock frequency is dependent on the current link speed.
Link Speed | PHY Clock Frequency | Application Clock Frequency | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Gen1 | 125 MHz | Gen1 is supported only via link down-training and not natively. Hence, the application clock frequency depends on the configuration you choose in the IP Parameter Editor. | ||||||||||||||||||||||
Gen2 | 250 MHz | Gen2 is supported only via link down-training and not natively. Hence, the application clock frequency depends on the configuration you choose in the IP Parameter Editor. | ||||||||||||||||||||||
Gen3 | 500 MHz |
|
||||||||||||||||||||||
Gen4 | 1000 MHz |
|
2.1.3. Refclk
P-Tile has two reference clock inputs at the package level, refclk0 and refclk1. You must connect a 100 MHz reference clock source to these two inputs. Depending on the port mode, you can drive the two refclk inputs using either a single clock source or two independent clock sources.
In 1x16 and 4x4 modes, drive the refclk inputs with a single clock source (through a fanout buffer) as shown in the figure below.
- If the link can handle two separate reference clocks, drive the refclk0 of P-Tile with the on-board free-running oscillator.
- If the link needs to use a common reference clock, then PERST# needs to indicate the stability of this reference clock. If this reference clock goes down, the entire P-Tile must be reset.
2.1.4. Reset
There is only one PERST# (pin_perst_n) pin on P-Tile. Therefore, toggling pin_perst_n will affect the entire P-Tile. If the P-Tile x16 port is bifurcated into two x8 Endpoints, toggling pin_perst_n will affect both x8 Endpoints.
To reset each port individually, use the in-band mechanism like Hot Reset.
- pin_perst_n is a "power good" indicator from the associated power domain (to which P-Tile is connected). Also, it shall qualify that both the P-Tile refclk0 and refclk1 are stable. If one of the reference clocks becomes stable later, deassert pin_perst_n after this reference clock becomes stable.
- pin_perst_n assertion is required for proper Autonomous P-Tile functionality. In Autonomous mode, P-Tile can successfully link up upon the release of pin_perst_n regardless of the FPGA fabric configuration and will send out CRS (Configuration Retry Status) until the FPGA fabric is configured and ready.
The following is an example where a single PERST# (pin_perst_n) is driven with independent refclk0 and refclk1. In this example, the add-in card (FPGA and Soc) is powered up first. P-Tile refclk0 is fed by the on-board free-running oscillator. P-Tile refclk1 driven by the Host becomes stable later. Hence, the PERST# is connected to the Host.
2.2. Functional Description
2.2.1. PMA/PCS
The P-Tile Avalon® -MM IP for PCI Express contains Physical Medium Attachment (PMA) and PCI Express Physical Coding Sublayer (PCIe PCS) blocks for handling the Physical layer (PHY) packets. The PMA receives and transmits high-speed serial data on the serial lanes. The PCS acts as an interface between the PMA and the PCIe controller, and performs functions like data encoding and decoding, scrambling and descrambling, block synchronization etc. The PCIe PCS in the P-Tile Avalon® -MM IP for PCI Express is based on the PHY Interface for PCI Express (PIPE) Base Specification 4.4.1.
In this IP, the PMA consists of up to four quads. Each quad contains a pair of transmit PLLs and four SerDes lanes capable of running up to 16 GT/s to perform the various TX and RX functions.
PLLA generates the required transmit clocks for Gen1/Gen2 speeds, while PLLB generates the required clocks for Gen3/Gen4 speeds. For the x8 and x16 lane widths, one of the quads acts as the master PLL source to drive the clock inputs for each of the lanes in the other quads.
The PMA performs functions such as serialization/deserialization, clock data recovery, and analog front-end functions such as Continuous Time Linear Equalizer (CTLE), Decision Feedback Equalizer (DFE) and transmit equalization.
The transmitter consists of a 3-tap equalizer with one tap of pre-cursor, one tap of main cursor and one tap of post-cursor.
- Maximum Timing Offset: -0.2UI to +0.2UI.
- Number of timing steps in each direction: 9.
- Independent left and right timing margining is supported.
- Independent Error Sampler is not supported (lane margining may produce logical errors in the data stream and cause the LTSSM to go to the Recovery state).
The PHY layer uses a fixed 16-bit PCS-PMA interface width to output the PHY clock (core_clk). The frequency of this clock is dependent on the current link speed. Refer to Table 11 for the frequencies at various link speeds.
2.2.2. Data Link Layer Overview
The Data Link Layer (DLL) is located between the Transaction Layer and the Physical Layer. It maintains packet integrity and communicates (by DLL packet transmission) at the PCI Express link level.
The DLL implements the following functions:
- Link management through the reception and transmission of DLL Packets
(DLLP), which are used for the following functions:
- Power management of DLLP reception and transmission
- To transmit and receive ACK/NAK packets
- Data integrity through the generation and checking of CRCs for TLPs and DLLPs
- TLP retransmission in case of NAK DLLP reception or replay timeout, using the retry (replay) buffer
- Management of the retry buffer
- Link retraining requests in case of error through the Link Training and Status State Machine (LTSSM) of the Physical Layer
The DLL has the following sub-blocks:
- Data Link Control and Management State Machine—This state machine connects to both the Physical Layer’s LTSSM state machine and the Transaction Layer. It initializes the link and flow control credits and reports status to the Transaction Layer.
- Power Management—This function handles the handshake to enter low power mode. Such a transition is based on register values in the Configuration Space and received Power Management (PM) DLLPs. For more details on the power states supported by the P-Tile Avalon® -MM IP for PCIe, refer to section Power Management Interface.
- Data Link Layer Packet Generator and Checker—This block is associated with the DLLP’s 16-bit CRC and maintains the integrity of transmitted packets.
- Transaction Layer Packet Generator—This block generates transmit packets, including a sequence number and a 32-bit Link CRC (LCRC). The packets are also sent to the retry buffer for internal storage. In retry mode, the TLP generator receives the packets from the retry buffer and generates the CRC for the transmit packet.
- Retry Buffer—The retry buffer stores TLPs and retransmits all unacknowledged packets in the case of NAK DLLP reception. In case of ACK DLLP reception, the retry buffer discards all acknowledged packets.
- ACK/NAK Packets—The ACK/NAK block handles ACK/NAK DLLPs and generates the sequence number of transmitted packets.
- Transaction Layer Packet Checker—This block checks the integrity of the received TLP and generates a request for transmission of an ACK/NAK DLLP.
- TX Arbitration—This block arbitrates transactions, prioritizing in the
following order:
- Initialize FC Data Link Layer packet
- ACK/NAK DLLP (high priority)
- Update FC DLLP (high priority)
- PM DLLP
- Retry buffer TLP
- TLP
- Update FC DLLP (low priority)
- ACK/NAK FC DLLP (low priority)
2.2.3. Transaction Layer Overview
The following figure shows the major blocks in the P-Tile Avalon® -MM IP for PCI Express Transaction Layer:
The RAS (Reliability, Availability, and Serviceability) block includes a set of features to maintain the integrity of the link.
For example: Transaction Layer inserts an optional ECRC in the transmit logic and checks it in the receive logic to provide End-to-End data protection.
When the application logic sets the TLP Digest (TD) bit in the Header of the TLP, the P-Tile Avalon® -MM IP for PCIe will append the ECRC automatically.
The TX block sends out the TLPs that it receives as-is. It also sends the information about non-posted TLPs to the Completion (CPL) Timeout Block for CPL timeout detection.
- Filtering block: This module checks if the TLP is good or bad and generates the associated error message and completion. It also tracks received completions and updates the completion timeout (CPL timeout) block.
- RX Buffer Queue: The P-Tile IP for PCIe has separate queues for posted/non-posted transactions and completions. This avoids head-of-queue blocking on the received TLPs and provides flexibility to extract TLPs according to the PCIe ordering rules.
2.2.4. Avalon -MM Bridge
- Endpoint mode with Data Movers.
- Endpoint mode.
- Root Port mode.
2.2.4.1. Endpoint Mode with Data Movers
- Read Data Mover (RDDM)
- Write Data Mover (WRDM)
- Bursting Master (BAM) in Non-Bursting Mode
The following figure shows how the DMA example design that you can generate using the Intel® Quartus® Prime software interfaces with the P-Tile Avalon® -MM IP to perform DMA operations. If you are not using the provided DMA example design, you need to implement your custom DMA Controller and BAR Interpreter in your application logic.
In this DMA example design, the BAM is used in non-bursting mode by the host to program the Control and Status registers of the DMA controller in the user Avalon® -MM space. The DMA controller, after being programmed, sends descriptor-fetching instructions to the host via the RDDM. After the fetched descriptors are processed by the WRDM and RDDM, status and/or MSI-X messages are sent to the host via the WRDM in “Immediate” mode. In this mode, the data payload is embedded in bits [31:0] or [63:0] of the fetched descriptors that the WRDM receives (depending on whether a one- or two-dword immediate transfer is needed respectively). For more details on immediate transfers, refer to Write Data Mover Avalon -ST Descriptor Sinks.
The RDDM uses PCIe memory read TLPs and Avalon® -MM write transactions (which can be bursting transactions) to move large amounts of data from the host memory in PCIe space to the local FPGA memory in Avalon® -MM space. On the other hand, the WRDM uses PCIe memory write TLPs and Avalon® -MM read transactions to move large amounts of data from the FPGA memory in Avalon® -MM space to the host memory in PCIe space. The Data Movers' transfers are controlled by descriptors that are provided to the Data Movers through one of their Avalon® -ST sink interfaces. The Data Movers report the transfers’ status through their Avalon® -ST source interfaces.
2.2.4.2. Endpoint Mode
- Bursting Slave (in bursting mode)
- Bursting Master (in non-bursting mode)
The external Avalon® -MM master can be a custom DMA controller that uses the Bursting Slave in the IP core to send memory reads and writes upstream. These memory reads and writes can be up to 512-bytes long. The reordering buffer in the IP core reorders the Completion TLPs received over the PCIe link and sends them to the Bursting Slave.
The Bursting Master provides the host with access to the registers and memory in the Avalon® -MM address space of the FPGA. It converts PCIe memory reads and writes to Avalon® -MM reads and writes.
Registers in the custom DMA controller can be programmed by software via the Bursting Master port.
2.2.4.3. Root Port Mode
- Bursting Master (in bursting and non-bursting modes)
- Bursting Slave (in non-bursting mode)
- Control Register Access
The IP core must be able to generate and process configuration reads and writes to the Endpoint and to the Hard IP configuration registers. This is done via the Configuration Slave. Since the DMA controller resides on the Endpoint side, its control registers need to be programmed by the FPGA local processor. Using the Bursting Slave (in non-bursting mode), the local processor can program the Endpoint control registers for DMA operations. The Endpoint can also send updates of its DMA status to the local processor via the Bursting Master.
3. Parameters
This chapter provides a reference for all the parameters that are configurable in the Intel® Quartus® Prime IP Parameter Editor for the P-Tile Avalon® -MM IP for PCIe.
3.1. Top-Level Settings
Parameter | Value | Default Value | Description |
---|---|---|---|
Hard IP Mode |
Gen4x16, Interface - 512-bit Gen3x16, Interface - 512-bit Gen4x8, Interface - 256-bit Gen3x8, Interface - 256-bit Gen4x4, Interface - 128-bit Gen3x4, Interface - 128-bit |
Gen4x16, Interface - 512-bit |
Select the lane data rate and lane
width.
Note: The
lane data rate and lane width options shown here apply to the PCIe Hard IP
interface to the
Avalon®
memory-mapped
bridge. For the data rate and width on the interface between the
Avalon®
memory-mapped bridge and the application
logic, refer to Table 11.
Note: Refer to the P-Tile IP for
PCI Express*
IP Core Release Notes for the
matrix of configurations supported by the P-Tile
Avalon®
memory-mapped
IP for
PCI Express*
.
|
Port Mode |
Root Port Native Endpoint |
Native Endpoint |
Specifies the port type. |
Enable PHY Reconfiguration | True/False | False | Enable the PHY Reconfiguration Interface. |
PLD Clock Frequency |
400 MHz 350 MHz 250 MHz 125 MHz |
350 MHz (for Gen4 mode) 250 MHz (for Gen3 modes) |
Select the frequency of the Application clock. The options available vary depending on the setting of the Hard IP Mode parameter. For Gen4 modes, the available clock frequencies are 400 MHz / 350 MHz / 250 MHz (for Intel® Agilex™ ) and 350 MHz / 200 MHz (for Intel® Stratix® 10 DX). For Gen3 modes, the available clock frequencies are 250 MHz / 125 MHz (for Intel® Agilex™ ) and 250 MHz / 125 MHz (for Intel® Stratix® 10 DX). For more details, refer to Table 11. |
Enable SRIS Mode | True/False | False |
Enable the Separate Reference Clock with Independent Spread Spectrum Clocking (SRIS) feature. |
P-Tile Sim Mode | True/False | False | Enabling this parameter reduces
the simulation time of Hot Reset tests by 5 ms. Note: Do not enable this option if you need to run
synthesis.
|
Enable RST of PCS & Controller | True/False | False |
Enable the reset of PCS and Controller in User Mode for Endpoint and Bypass Upstream modes. When this parameter is True, depending on the topology, new signals (p<n>_pld_clrpcs_n) are exported to the Avalon® Streaming interface. When this parameter is False (default), the IP internally ties off these signals instead of exporting them. Note: This feature is only supported in the X8X8 Endpoint/Bypass
Upstream topology.
Note: If you have more questions regarding the bifurcation feature and
its usage, contact your Application Engineer.
|
The following figure shows how to enable Root Port mode:

3.2. Core Parameters
Depending on which Hard IP Mode you choose in the Top-Level Settings tab, you will see different tabs for setting the core parameters.

3.2.1. Base Address Registers
Parameter | Value | Description |
---|---|---|
BAR0 Type |
Disabled 64-bit prefetchable memory 64-bit non-prefetchable memory 32-bit non-prefetchable memory 32-bit prefetchable memory |
If you select 64-bit prefetchable memory, 2 contiguous BARs are combined to form a 64-bit prefetchable BAR; you must set the higher numbered BAR to Disabled. Defining memory as prefetchable allows contiguous data to be fetched ahead. Prefetching memory is advantageous when the requestor may require more data from the same region than was originally requested. If you specify that a memory is prefetchable, it must have the following 2 attributes:
|
BAR1 Type |
Disabled 32-bit non-prefetchable memory 32-bit prefetchable memory |
For a definition of prefetchable memory, refer to the BAR0 Type description. |
BAR2 Type |
Disabled 64-bit prefetchable memory 64-bit non-prefetchable memory 32-bit non-prefetchable memory 32-bit prefetchable memory |
For a definition of prefetchable memory and a description of what happens when you select the 64-bit prefetchable memory option, refer to the BAR0 Type description. |
BAR3 Type |
Disabled 32-bit non-prefetchable memory 32-bit prefetchable memory |
For a definition of prefetchable memory, refer to the BAR0 Type description. |
BAR4 Type |
Disabled 64-bit prefetchable memory 64-bit non-prefetchable memory 32-bit non-prefetchable memory 32-bit prefetchable memory |
For a definition of prefetchable memory and a description of what happens when you select the 64-bit prefetchable memory option, refer to the BAR0 Type description. |
BAR5 Type |
Disabled 32-bit non-prefetchable memory 32-bit prefetchable memory |
For a definition of prefetchable memory, refer to the BAR0 Type description. |
BARn Size |
128 Bytes - 16 EBytes |
Specifies the size of the address space accessible to BARn when BARn is enabled. n = 0, 1, 2, 3, 4 or 5 |
Expansion ROM |
Disabled 4 KBytes - 12 bits 8 KBytes - 13 bits 16 KBytes - 14 bits 32 KBytes - 15 bits 64 KBytes - 16 bits 128 KBytes - 17 bits 256 KBytes - 18 bits 512 KBytes - 19 bits 1 MByte - 20 bits 2 MBytes - 21 bits 4 MBytes - 22 bits 8 MBytes - 23 bits 16 MBytes - 24 bits |
Specifies the size of the expansion ROM from 4 KBytes to 16 MBytes when enabled. |
3.2.2. PCI Express and PCI Capabilities Parameters
For each core (PCIe0/PCIe1/PCIe2/PCIe3), the PCI Express / PCI Capabilities tab contains separate tabs for the device, MSI (Endpoint mode), ACS capabilities (Root Port mode), slot (Root Port mode), MSI-X, and legacy interrupt pin register parameters.

3.2.2.1. Device Capabilities
Parameter | Value | Default Value | Description |
---|---|---|---|
Maximum payload sizes supported |
128 bytes 256 bytes 512 bytes |
512 bytes | Specifies the maximum payload size supported. This parameter sets the read-only value of the max payload size supported field of the Device Capabilities register. |
3.2.2.2. Link Capabilities
Parameter | Value | Default Value | Description |
---|---|---|---|
Link port number (Root Port only) | 0 - 255 | 1 | Sets the read-only value of the port number field in the Link Capabilities register. This parameter is for Root Ports only. It should not be changed. |
Slot clock configuration | True/False | True | When this parameter is True, it indicates that the Endpoint uses the same physical reference clock that the system provides on the connector. When it is False, the IP core uses an independent clock regardless of the presence of a reference clock on the connector. This parameter sets the Slot Clock Configuration bit (bit 12) in the PCI Express Link Status register. |
3.2.2.3. Legacy Interrupt Pin Register
Parameter | Value | Default Value | Description |
---|---|---|---|
Enable Legacy Interrupts for PF0 | True/False | False | Enable Legacy Interrupts (INTx) for PF0 of PCIe0. |
Set Interrupt Pin for PF0 |
NO INT INTA |
NO INT |
When Legacy Interrupts are not enabled, the only option available is NO INT. When Legacy Interrupts are enabled, the only option available is INTA. |
3.2.2.4. MSI Capabilities
Parameter | Value | Default Value | Description |
---|---|---|---|
PF0 Enable MSI | True/False | False |
Enables MSI functionality for PF0. If this parameter is True, the Number of MSI messages requested parameter will appear allowing you to set the number of MSI messages. |
PF0 MSI Extended Data Capable | True/False | False | Enables or disables MSI extended data capability for PF0. |
PF0 Number of MSI messages requested |
1 2 4 8 16 32 |
1 | Sets the number of messages that the application can request in the multiple message capable field of the Message Control register. |
3.2.2.5. MSI-X Capabilities
Parameter | Value | Default Value | Description |
---|---|---|---|
Enable MSI-X (Endpoint only) | True/False | False |
Enables the MSI-X functionality. |
MSI-X Table Size | 0x0 - 0x7FF (only values of powers of two minus 1 are valid) | 0 |
System software reads this field to determine the MSI-X table size <n>, which is encoded as <n-1>. For example, a returned value of 2047 indicates a table size of 2048. This field is read-only. Address offset: 0x068[26:16] |
MSI-X Table Offset | 0x0 - 0xFFFFFFFF | 0 | Points to the base of the MSI-X table. The lower 3 bits of the table BAR indicator (BIR) are set to zero by software to form a 64-bit qword-aligned offset. This field is read-only after being programmed. |
Table BAR indicator | 0x0 - 0x5 | 0 | Specifies which one of a function's BARs, located beginning at 0x10 in Configuration Space, is used to map the MSI-X table into memory space. This field is read-only after being programmed. |
Pending bit array (PBA) offset | 0x0 - 0xFFFFFFFF | 0 | Used as an offset from the address contained in one of the function's Base Address registers to point to the base of the MSI-X PBA. The lower 3 bits of the PBA BIR are set to zero by software to form a 32-bit qword-aligned offset. This field is read-only after being programmed. |
PBA BAR indicator | 0x0 - 0x5 | 0 | Specifies the function's Base Address register, located beginning at 0x10 in Configuration Space, that maps the MSI-X PBA into memory space. This field is read-only after being programmed. |
3.2.2.6. Device Serial Number Capability
Parameter | Value | Default Value | Description |
---|---|---|---|
Enable Device Serial Number Capability | True/False | False |
Enables the device serial number capability. This is an optional extended capability that provides a unique identifier for the PCIe device. |
3.2.3. Device Identification Registers
The following table lists the default values of the Device ID registers. You can use the parameter editor to change the values of these registers.
Register Name | Range | Default Value | Description |
---|---|---|---|
Vendor ID | 16 bits | 0x00001172 |
Sets the read-only value of the Vendor ID register. This parameter cannot be set to 0xFFFF per the PCI Express Base Specification. Note: Set
your own Vendor ID by
changing
this parameter.
Address offset: 0x000. |
Device ID | 16 bits | 0x00000000 |
Sets the read-only value of the Device ID register. This register is only valid in the Type 0 (Endpoint) Configuration Space. Address offset: 0x000. |
Revision ID | 8 bits | 0x00000001 |
Sets the read-only value of the Revision ID register. Address offset: 0x008. |
Class Code | 24 bits | 0x00FF0000 |
Sets the read-only value of the Class Code register. Address offset: 0x008. This parameter cannot be set to 0x0 per the PCI Express Base Specification. |
Subsystem Vendor ID | 16 bits | 0x00000000 |
Sets the read-only value of the Subsystem Vendor ID register in the PCI Type 0 Configuration Space. This parameter cannot be set to 0xFFFF per the PCI Express Base Specification. This value is assigned by PCI-SIG to the device manufacturer. Address offset: 0x02C. |
Subsystem Device ID | 16 bits | 0x00000000 |
Sets the read-only value of the Subsystem Device ID register in the PCI Type 0 Configuration Space. Address offset: 0x02C. |
3.2.4. Configuration, Debug and Extension Options
Parameter | Value | Default Value | Description |
---|---|---|---|
Gen 3 Requested equalization far-end TX preset vector | 0 - 65535 | 0x00000004 | Specifies the Gen 3 requested phase 2/3 far-end TX preset vector. Choosing a value different from the default is not recommended for most designs. |
Gen 4 Requested equalization far-end TX preset vector | 0 - 65535 | 0x00000270 | Specifies the Gen 4 requested phase 2/3 far-end TX preset vector. Choosing a value different from the default is not recommended for most designs. |
Port 1 REFCLK Init Active | True/False | True |
If this parameter is True (default), the refclk1 is stable after pin_perst and is free-running. This parameter must be set to True for Type A/B/C systems. If this parameter is False, refclk1 is only available later in User Mode. This parameter must be set to False for Type D systems. This parameter is only available in the PCIe1 Settings tab for a X8X8 topology. Note: If you have more questions regarding the bifurcation feature and
its usage, contact your Application Engineer.
|
Enable Debug Toolkit | True/False | False | Enable the P-Tile Debug Toolkit for JTAG-based System Console debug access. |
Enable HIP dynamic reconfiguration of PCIe* registers | True/False | False | Enable the user Hard IP reconfiguration Avalon® -MM interface. |

3.3. Avalon-MM Settings
Parameter | Value | Default Value | Description |
---|---|---|---|
Endpoint Settings | |||
Enable Bursting Slave Mode | True/False | False | Enable bursting Avalon® -MM Slave Interface. This will enable the Endpoint mode (where the IP's BAS and BAM modules are enabled, but its Data Movers are not enabled). |
Address width of Read Data Mover | {10:64} | 64 |
Address width of Read Data Mover. |
Address width of Write Data Mover | {10:64} | 64 |
Address width of Write Data Mover. |
Export interrupt conduit interfaces | True/False | False | Export internal signals to support generation of Legacy Interrupts/multiple MSI/MSI-X. |
Address width of Bursting Master | {10:64} | 64 |
Only present in Root Port mode. In Endpoint modes, this parameter is set by the largest BAR address width. |
Root Port Settings | |||
Avalon® -MM address width |
32-bit 64-bit |
64-bit | Selects the Avalon® -MM address width. |
Address width of accessible PCIe memory space (TXS) | 1 - 64 | 32 | Selects the address width of accessible memory space. |
Enable burst capability for Avalon® -MM Master Port | True/False | False | Enable burst capabilities for the BAR0 RXM. If this option is set to True, the RXM port will be a bursting master. Otherwise, this RXM will be a single Dword master. |
4. Interfaces
4.1. Overview
- High-performance bursting master (BAM) and slave (BAS) Avalon® -MM interfaces to translate between PCIe TLPs and Avalon® -MM memory-mapped reads and writes
- Read and Write Data Movers to transfer large blocks of data
- Standard PCIe serial interface to transfer data over the PCIe link
- System interfaces for interrupts, clocking, reset
- Optional reconfiguration interface to dynamically change the value of Configuration Space registers at run-time
- Optional status interface for debug
Read Data Mover (RDDM) interface: This interface transfers DMA data from the PCIe system memory to the memory in Avalon® -MM address space.
Write Data Mover (WRDM) interface: This interface transfers DMA data from the memory in Avalon® -MM address space to the PCIe system memory.
Bursting Master (BAM) interface: This interface provides host access to the registers and memory in Avalon® -MM address space. The Busting Master module converts PCIe Memory Reads and Writes to Avalon® -MM Reads and Writes.
Bursting Slave (BAS) interface: This interface allows the user application in the FPGA to access the PCIe system memory. The Bursting Slave module converts Avalon® -MM Reads and Writes to PCIe Memory Reads and Writes.
Control Register Access (CRA) interface: This optional, 32-bit Avalon-MM Slave interface provides access to the Control and Status registers. You must enable this interface when you enable address mapping for any of the Avalon-MM slaves or if interrupts are implemented. The address bus width of this interface is fixed at 15 bits. The prefix for this interface is cra*.
The modular design of the P-Tile Avalon® -MM IP for PCIe lets you enable just the interfaces required for your application.
Avalon® -MM Type | Data Bus Width | Max Burst Size | Byte Enable Granularity | Max Outstanding Read Request |
---|---|---|---|---|
Bursting Slave | 512 bits |
Bursting Mode: 8 cycles Non-Bursting Mode: 1 cycle |
dword/byte |
Bursting Mode: 64 Non-Bursting Mode: 1 |
Bursting Master | 512 bits |
Bursting Mode: 8 cycles Non-Bursting Mode: 1 cycle |
dword/byte |
Bursting Mode: 32 Non-Bursting Mode: 1 |
Read Data Mover Write Master | 512 bits | 8 cycles | dword | N/A |
Write Data Mover Read Master | 512 bits | 8 cycles | dword | 32 |
Control Register Access | 32 bits | 1 cycle | byte | 1 |
4.2. Clocks and Resets
4.2.1. Interface Clock Signals
Name | I/O | Description | EP/RP | Clock Frequency |
---|---|---|---|---|
p<n>_app_clk (where n = 0, 1, 2, 3) | O | This is the application clock generated from coreclkout_hip or from the same source as refclk. This is a per-port signal. | EP/RP |
Native Gen3: 250 MHz Native Gen4: 350 MHz ( Intel® Stratix® 10 DX) / 400 MHz ( Intel® Agilex™ ) The frequencies given above are the maximum frequencies. The frequencies available vary depending on the configurations that the IP is in. For more details, refer to Table 11. |
coreclkout_hip | O |
This is an internal clock only that is planned to be removed in a future release of the Intel FPGA P-tile Avalon® Memory-mapped IP for PCI Express. The Application Layer must use the p<n>_app_clk instead. The frequency depends on the data rate and the number of lanes being used. |
EP/RP |
Native Gen3: 250 MHz Native Gen4: 350 MHz ( Intel® Stratix® 10 DX) / 400 MHz ( Intel® Agilex™ ) |
refclk[1:0] | I |
These are the input reference clocks for the IP core. These clocks must be free-running. For more details on how to connect these clocks, refer to the section Clock Sharing in Bifurcation Modes. |
EP/RP |
100 MHz ± 300 ppm When the Enable SRIS Mode parameter is enabled in the IP Parameter Editor, the P-Tile Avalon® -MM IP can communicate with a link partner whose clock domain is not synchronized to the refclk domain of the P-Tile. In this mode of operation, P-Tile and its link partner can both have their own spread spectrum clocks. |
p<n>_hip_reconfig_clk (where n = 0, 1, 2, 3) | I | Clock for the hip_reconfig interface. This is an Avalon® -MM interface. It is an optional interface that is enabled when the Enable HIP dynamic reconfiguration of PCIe registers option in the PCIe Configuration, Debug and Extension Options tab is enabled. | EP/RP |
50 MHz - 125 MHz (range) 100 MHz (recommended) |
xcvr_reconfig_clk | I | Clock for the PHY reconfiguration interface. This is an Avalon® -MM interface. This optional interface is enabled when you turn on the Enable PHY reconfiguration option in the Top-Level Settings tab. This interface is shared among all the cores. | EP/RP |
50 MHz - 125 MHz (range) 100 MHz (recommended) |
4.2.2. Interface Reset Signals
Signal Name | Direction | Clock | EP/RP | Description |
---|---|---|---|---|
pin_perst_n | Input | Asynchronous | EP/RP | This is an active-low input to the PCIe* Hard IP, and implements the PERST# function defined by the PCIe* specification. |
p<n>_reset_status_n | Output | Synchronous | EP/RP | This active-low signal is held low until pin_perst_n has been deasserted and the PCIe* Hard IP has come out of reset. This signal is synchronous to p<n>_app_clk. When port bifurcation is used, there is one such signal for each interface. The signals are differentiated by the prefixes p<n>. |
p<n>_link_req_rst_n | Output | Synchronous | EP/RP |
This active-low signal is asserted by the PCIe Hard IP when it is about to go into reset. The Avalon® -MM Bridge IP will reset all its PCIe-related registers and queues including anything related to tags. It will also stop sending packets to the PCIe Hard IP until the Bus Master Enable bit is set again. The Bridge will also ignore any packet received from the PCIe Hard IP. |
p<n>_pld_warm_rst_rdy | Input | Synchronous | EP/RP | This active-high signal is asserted by the user logic in
response to p<n>_link_req_rst_n
when it has completed its pre-reset tasks. Note: When not using this signal, set it to 1'b1.
|
ninit_done | Input | Asynchronous | EP/RP |
A "1" on this active-low signal indicates that the FPGA device is not yet fully configured. A "0" indicates the device has been configured and is in normal operating mode. Intel recommends using the output of the Reset Release Intel Fpga IP to drive this ninit_done input. For more details on this IP, refer to the Application Note AN891 at https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an891.pdf |
4.3. Avalon -MM Interface
The figures below provide the top-level block diagrams of the P-Tile Avalon® -MM IP with all interfaces while operating in Endpoint mode with Data Movers or in Endpoint mode. These interfaces are described in more details in following sections.
4.3.1. Endpoint Mode Interface (512-bit Avalon -MM Interface)
Avalon-MM Type | Data Bus Width | Max Burst Size | Byte Enable Granularity | Max Outstanding Read Request |
---|---|---|---|---|
Bursting Slave | 512 bits | 8 cycles | byte | 64 |
Bursting Master | 512 bits | 8 cycles | byte | 32 |
Read Data Mover Write Master | 512 bits | 8 cycles | dword | N/A |
Write Data Mover Read Master | 512 bits | 8 cycles | dword | 128 |
Control Register Access | 32 bits | 1 cycle | byte | 1 |
These interfaces are standard Avalon® interfaces. For timing diagrams, refer to the Avalon Interface Specifications.
4.3.1.1. Bursting Avalon -MM Master and Conduit
The Bursting Avalon® -MM Master module has one user-visible Avalon® -MM Master interface.
You enable this interface by turning On the Enable Bursting Avalon® -MM Master interface option in the Avalon® -MM Settings tab of the IP Parameter Editor.
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
bam_pfnum_o[1:0] | O |
Physical function number
|
|
bam_bar_o[2:0] | O |
This bus contains the BAR address for a particular TLP. This bus acts as an extension of the standard address bus. 000: Memory BAR 0 001: Memory BAR 1 010: Memory BAR 2 011: Memory BAR 3 100: Memory BAR 4 101: Memory BAR 5 110: Reserved 111: Expansion ROM BAR |
|
bam_waitrequest_i | I |
When asserted, indicates that the Avalon® -MM slave is not ready to respond to a request. waitrequestAllowance = 8 The master can still issue 8 transfers after bam_waitrequest_i is asserted. |
bam_master |
bam_address_o[BAM_ADDR_WIDTH-1:0] | O |
The width of the Bursting Master’s address bus is the maximum of the widths of all the enabled BARs. For BARs narrower than the widest BAR, the address bus’ additional most significant (MSB) bits are driven to 0. |
|
bam_byteenable_o[63:0] | O |
Specify the valid bytes of bam_writedata_o[511:0]. Each bit corresponds to a byte in bam_writedata_o[511:0]. For single-cycle read bursts and for all write bursts, all contiguous sets of enabled bytes are supported. For multi-cycle read bursts, all bits of bam_byteenable_o[63:0] are asserted, regardless of the First Byte Enable (BE) and Last BE fields of the corresponding TLP. |
|
bam_read_o | O | When asserted, indicates the master is requesting a read transaction. | |
bam_readdata_i[511:0] | I | Read data bus | |
bam_readdatavalid_i | I | Asserted by the slave to indicate that the bam_readdata_i[511:0] bus contains valid data in response to a previous read request. | |
bam_write_o | O | When asserted, indicates the master is requesting a write transaction. | |
bam_writedata_o[511:0] | O | Data signals for write transfers. | |
bam_burstcount_o[3:0] | O | The master uses these signals to indicate the number of transfers in each burst. | |
bam_response_i[1:0] | I |
00 : OKAY - successful response for a transaction. 01 : RESERVED 10 : SLAVEERROR 11 : DECODEERROR |
4.3.1.1.1. Bursting Avalon -MM Master and Conduit in Non-Bursting Mode
- Burst count must be 1.
- The request size ranges from 1 to 16 dwords with the following
limitations:
- The address and size combination must generate a TLP that fits in one 512-bit chunk of data. For example, if the address starts at dword 15 of a 512-bit transaction, only one dword of data transfer is allowed. If the address starts at dword 0, all data transfer sizes up to 16 dwords are possible. The same rule applies to read completions.
- Byte enables are supported for a transfer size of one dword. For larger transfer sizes, dword enables apply.
- If non-bursting mode is enabled, sending a TLP larger than 64 bytes targeting this interface causes the interface to misbehave. In this case, a reset is required to allow the interface to recover.
- One outstanding read at a time. Incoming RX read/write TLPs will be delayed while a downstream outstanding read exists.
4.3.1.2. Bursting Avalon -MM Slave and Conduit
The Bursting Avalon® -MM Slave module has one user-visible Avalon® -MM slave interface.
You enable this interface by turning On the Enable Bursting Avalon® -MM Slave interface option in the IP Parameter Editor.
For more details on these interface signals, refer to the Avalon® Interface Specifications.
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
bas_pfnum_i[1:0] | I |
Physical function number
|
|
bas_waitrequest_o | O |
When asserted, indicates that the Avalon® -MM slave is not ready to respond to a request. waitrequestAllowance = 0 The master cannot issue any transfer after bas_waitrequest_o is asserted. |
bas_master |
bas_address_i[63:0] | I | Specify the byte address regardless of the data width of the master. | |
bas_byteenable_i[63:0] | I |
Specify the valid bytes of bas_writedata_i[511:0]. Each bit corresponds to a byte in bas_writedata_i[511:0]. For single-cycle read bursts and for all write bursts, all contiguous sets of enabled bytes are supported. For burst read transactions, the bas_byteenable_i[63:0] must be 64'hFFFF_FFFF_FFFF_FFFF. |
|
bas_read_i | I | When asserted, indicates the master is requesting a read transaction. | |
bas_readdata_o[511:0] | O |
Ensure that disabled bytes do not contain stale data. |
|
bas_readdatavalid_o | O |
maximumPendingReadTransactions: 64 The maximum number of pending reads that the Avalon® -MM slave can queue up is 64. |
|
bas_response_o[1:0] | O |
These bits contain the response status for any transaction
happening on the BAS interface:
|
|
bas_write_i | I | When asserted, indicates the master is requesting a write transaction. | |
bas_writedata_i[511:0] | I | Data signals for write transfers. | |
bas_burstcount_i[3:0] | I | The master uses these signals to indicate the number of transfers in each burst. |
4.3.1.2.1. Bursting Avalon -MM Slave and Conduit in Non-Bursting Mode
The Bursting Avalon® -MM Slave module supports bursting mode while operating in Root Port mode.
- Burst count must be 1.
- The request size ranges from 1 to 16 dwords with the following
limitations:
- The address and size combination must generate a TLP that fits in one 512B chunk of data. For example, if the address starts at dword 15 of a 512B transaction, only one dword of data transfer is allowed. If the address starts at dword 0, all data transfer sizes up to 16 dwords are possible. The same rule applies to read completions.
- Byte enables are supported for a transfer size of one dword. For larger transfer sizes, dword enables apply.
- One outstanding read at a time (back-pressures the Avalon® -MM Master while the outstanding read exists).
4.3.1.3. Read Data Mover
- One Avalon® -MM Write Master with sideband signals to write data to the Avalon® domain.
- Two Avalon® -ST Sinks to receive descriptors. One acts as a queue for priority descriptors, and the other acts as a queue for normal descriptors.
- One Avalon® -ST Source to report status.
4.3.1.3.1. Read Data Mover Avalon -MM Write Master and Conduit
This interface provides the Read data from the Host memory to the user application. The rddm_address_o value is set within the descriptor destination address.
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
rddm_pfnum_o[1:0] | O |
Physical function number.
|
rddm_conduit |
rddm_waitrequest_i | I |
When asserted, indicates that the Avalon® -MM slave is not ready to respond to a request. waitrequestAllowance = 16 The master can still issue 16 transfers after rddm_waitrequest_i is asserted. |
rddm_master |
rddm_write_o | O | When asserted, indicates the master is requesting a write transaction. | |
rddm_address_o[63:0] | O | Specify the byte address regardless of the data width of the master. | |
rddm_burstcount_o[3:0] | O | The master uses these signals to indicate the number of transfers in each burst. | |
rddm_byteenable_o[63:0] | O | Specify the valid bytes of rddm_writedata_o[511:0]. Each bit corresponds to a byte in rddm_writedata_o[511:0]. | |
rddm_writedata_o[511:0] | O | Data signals for write transfers. |
4.3.1.3.2. Read Data Mover Avalon -ST Descriptor Sinks
The Read Data Mover has two Avalon® -ST sink interfaces to receive the descriptors that define the data transfers to be executed. One of the interfaces receives descriptors for normal data transfers, while the other receives descriptors for high-priority data transfers.
The descriptor format for the Read Data Mover is described in the section Descriptor Format for Data Movers.
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
rddm_desc_ready_o | O | When asserted, this ready signal indicates the normal descriptor queue in the Read Data Mover is ready to accept data. The ready latency of this interface is 3 cycles. | rddm_desc |
rddm_desc_valid_i | I | When asserted, this signal qualifies valid data on any cycle where data is being transferred to the normal descriptor queue. On each cycle where this signal is active, the queue samples the data. | |
rddm_desc_data_i[173:0] | I |
[173:160]: reserved. Should be tied to 0. [159:152]: descriptor ID [151:149] : application specific [148] : single destination 3 [147] : reserved [146] : reserved [145:128]: number of dwords to transfer up to 1 MB [127:64]: destination Avalon® -MM address [63:0]: source PCIe address |
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
rddm_prio_ready_o | O | When asserted, this ready signal indicates the priority descriptor queue in the Read Data Mover is ready to accept data. The ready latency of this interface is 3 cycles. | rddm_prio |
rddm_prio_valid_i | I | When asserted, this signal qualifies valid data on any cycle where data is being transferred to the priority descriptor queue. On each cycle where this signal is active, the queue samples the data. | |
rddm_prio_data_i[173:0] | I |
[173:160]: reserved. Should be tied to 0. [159:152]: descriptor ID [151:149] : application specific [148] : single destination [147] : reserved [146] : reserved [145:128]: number of dwords to transfer up to 1 MB [127:64]: destination Avalon® -MM address [63:0]: source PCIe address |
The Read Data Mover internally supports two queues of descriptors. The priority queue has absolute priority over the normal queue. Use it carefully to avoid starving the normal queue.
If the Read Data Mover receives a descriptor on the priority interface while processing a descriptor from the normal queue, it switches to processing descriptors from the priority queue as soon as it has completed the current descriptor. The Read Data Mover resumes processing the descriptors from the normal queue once the priority queue is empty. Do not use the same descriptor ID simultaneously in the two queues as there would be no way to distinguish them on the Status Avalon® -ST source interface.
The Read Data Mover handles one descriptor at a time. When a descriptor has been processed (the memory command has been issued to the PCIe link), the Read Data Mover will read the next descriptor from the priority or normal descriptor interface.
Software should only send new descriptors when the Read Data Mover has processed all previously sent descriptors. The P-Tile Avalon® -MM IP indicates the completion of the Read Data Mover's data processing by performing an immediate write to the system memory using its Write Data Mover. For more details, refer to the Read DMA Example section in the P-tile Avalon Memory Mapped (Avalon-MM) IP for PCI Express Design Example User Guide (see the link in the Related Information below).
4.3.1.3.3. Read Data Mover Status Avalon -ST Source
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
rddm_tx_data_o[31:0] | O |
[31:16]: reserved [15]: error [14:12]: application specific [11:9] : reserved [8] : priority [7:0]: descriptor ID |
rddm_tx |
rddm_tx_valid_o | O | Valid status signal |
This interface does not have a ready input. The application logic must always be ready to receive status information for any descriptor that it has sent to the Read Data Mover.
The Read Data Mover copies over the application specific bits in the rddm_tx_data_o bus from the corresponding descriptor. A set priority bit indicates that the descriptor is from the priority descriptor sink.
A status word is output on this interface when the processing of a descriptor has completed, including the reception of all completions for all memory read requests.
4.3.1.4. Write Data Mover
- One Avalon® -MM Read Master with sideband signals to read data from the Avalon® domain.
- Two Avalon® -ST Sinks to receive descriptors. One Sink acts as a queue for priority descriptors, and the other acts as a queue for normal descriptors.
- One Avalon® -ST Source to report status
4.3.1.4.1. Write Data Mover Avalon -MM Read Master and Conduit
This interface reads data from the Avalon-MM Read Master interface and writes it to the Host memory.
The wrdm_address_o value is set within the descriptor source address.
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
wrdm_pfnum_o[1:0] | O |
Physical function number.
|
|
wrdm_waitrequest_i | I |
When asserted, indicates that the Avalon® -MM slave is not ready to respond to a request. waitrequestAllowance = 4 The master can still issue 4 transfers after wrdm_waitrequest_i is asserted. |
wrdm_master |
wrdm_read_o | O | When asserted, indicates the master is requesting a read transaction. | |
wrdm_address_o[63:0] | O | Specify the byte address regardless of the data width of the master. | |
wrdm_burstcount_o[3:0] | O | The master uses these signals to indicate the number of transfers in each burst. | |
wrdm_byteenable_o[63:0] | O | Specify the valid bytes of wrdm_writedata_o[511:0]. Each bit corresponds to a byte in wrdm_writedata_o[511:0]. | |
wrdm_readdatavalid_i | I | Asserted by the slave to indicate that the wrdm_readdata_i[511:0] signals contain valid data in response to a previous read request. | |
wrdm_readdata_i[511:0] | I | Data signals for read transfers. | |
wrdm_response_i[1:0] | I |
The response signals are optional signals that carry the response status. Note: Because the signals are shared, an interface cannot issue or accept
a write response and a read response in the same clock cycle.
The following encodings are available:
For read responses:
|
4.3.1.4.2. Write Data Mover Avalon -ST Descriptor Sinks
The Write Data Mover has two Avalon® -ST sink interfaces to receive the descriptors that define the data transfers to be executed. One of the interfaces receives descriptors for normal data transfers, while the other receives descriptors for high-priority data transfers.
The descriptor format for the Write Data Mover is described in the section Descriptor Formats for Data Movers.
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
wrdm_desc_ready_o | O | When asserted, this ready signal indicates the normal descriptor queue in the Write Data Mover is ready to accept data. The ready latency of this interface is 3 cycles. | wrdm_desc |
wrdm_desc_valid_i | I | When asserted, this signal qualifies valid data on any cycle where data is being transferred to the normal descriptor queue. On each cycle where this signal is active, the queue samples the data. | |
wrdm_desc_data_i[173:0] | I |
[173:160]: reserved. Should be tied to 0. [159:152]: descriptor ID [151:149] : application specific [148] : reserved [147] : single source 4 [146] : immediate 5 [145:128]: number of dwords to transfer up to 1 MB [127:64]: destination PCIe address [63:0]: source Avalon® -MM address / immediate data |
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
wrdm_prio_ready_o | O | When asserted, this ready signal indicates the priority descriptor queue in the Write Data Mover is ready to accept data. The ready latency of this interface is 3 cycles. | wrdm_prio |
wrdm_prio_valid_i | I | When asserted, this signal qualifies valid data on any cycle where data is being transferred to the priority descriptor queue. On each cycle where this signal is active, the queue samples the data. | |
wrdm_prio_data_i[173:0] | I |
[173:160]: reserved. Should be tied to 0. [159:152]: descriptor ID [151:149] : application specific [148] : reserved [147] : single source [146] : immediate [145:128]: number of dwords to transfer up to 1 MB [127:64]: destination PCIe address [63:0]: source Avalon® -MM address / immediate data |
The Write Data Mover internally supports two queues of descriptors. The priority queue has absolute priority over the normal queue, so it should be used carefully to avoid starving the normal queue.
If the Write Data Mover receives a descriptor on the priority interface while processing a descriptor from the normal queue, it switches to processing descriptors from the priority queue after it has completed processing the current descriptor. The Write Data Mover resumes processing descriptors from the normal queue once the priority queue is empty. Do not use the same descriptor ID simultaneously in the two queues as there would be no way to distinguish them on the Status Avalon® -ST source interface.
The Write Data Mover handles one descriptor at a time. When a descriptor has been processed, the Write Data Mover will read the next descriptor from the priority or normal descriptor interface.
Software should only send new descriptors when the Write Data Mover has processed all previously sent descriptors. The Write Data Mover indicates the completion of the its data processing by performing an immediate write to the system memory using the last descriptor in the descriptor table. For more details, refer to the Write DMA Example section in the P-tile Avalon Memory Mapped (Avalon-MM) IP for PCI Express Design Example User Guide (see the link in the Related Information below).
4.3.1.4.3. Write Data Mover Status Avalon -ST Source
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
wrdm_tx_data_o[31:0] | O |
[31:16]: reserved [15]: error [14:12] : application specific [11:9] : reserved [8] : priority bit [7:0]: descriptor ID |
wrdm_tx |
wrdm_tx_valid_o | O | Valid status signal |
This interface does not have a ready input. The application logic must always be ready to receive status information for any descriptor that it has sent to the Write Data Mover.
The ready latency does not matter because there is no ready input.
The Write Data Mover copies over the application specific bits in the wrdm_tx_data_o bus from the corresponding descriptor. A set priority bit indicates that the descriptor was from the priority descriptor sink.
4.3.1.5. Descriptor Format for Data Movers
The Read and Write Data Movers uses descriptors to transfer data. The descriptor format is fixed and specified below:
Signals Description (for rddm_desc_data_i or wrdm_desc_data_i) | Read Data Mover | Write Data Mover |
---|---|---|
[173:160]: reserved | N/A | N/A |
[159:152]: descriptor ID | ID of the descriptor | ID of the descriptor |
[151:149]: application-specific |
Application-specific bits. Example of an Intel application is provided below. |
Application-specific bits. Example of an Intel application is provided below. |
[148]: single destination | When the single destination bit is set, the same destination address is used for all the transfers. If the bit is not set, the address increments for each transfer. | N/A |
[147]: single source | N/A | When the single source bit is set, the same source address is used for all the transfers. If the bit is not set, the address increments for each transfer. Note that in single source mode, the PCIe address and Avalon-MM address must be 64-byte aligned. |
[146]: immediate | N/A |
When set, the immediate bit indicates immediate writes. Immediate writes of one or two dwords are supported. For immediate transfers, bits [31:0] or [63:0] contain the payload for one- or two-dword transfers respectively. The two-dword immediate writes cannot cross a 4k boundary. This can be used for MSI/MSI-X for example. |
[145:128]: transfer size |
Number of dwords to transfer (up to 1 MB). |
Number of dwords to transfer (up to 1 MB). |
[127:64]: destination address |
Avalon-MM address |
PCIe Address |
[63:0]: source address | PCIe Address | Avalon-MM address |
Application-Specific Bits
Three application-specific bits (bits [151:149] ) from the Write Data Mover and Read Data Mover Status Avalon-ST Source interfaces control when interrupts are generated.
Bit [151] | Bit [150] | Bit [149] | Action |
---|---|---|---|
0 | 1 | 1 | Interrupt always |
0 | 1 | 0 | Interrupt if error |
0 | 0 | 1 | No interrupt |
0 | 0 | 0 | No interrupt and drop status word |
The External DMA Controller makes the decision whether to drop the status word and whether to generate an interrupt as soon as it receives the status word from the Data Mover. When the generation of an interrupt is requested, and the corresponding RI or WI register does enable interrupts, the DMA Controller generates the interrupt. It does so by queuing an immediate write to the Write Data Mover's descriptor queue (specified in the corresponding interrupt control register) using the MSI address and message data provided in that register.
4.3.1.6. Avalon -MM DMA Operations
Avalon® -MM DMA operations are used to transfer large blocks of data. The P-Tile Avalon® -MM IP for PCIe can support DMA operations with an external descriptor controller implemented in the user application.
- It must provide the descriptors to the Read Data Mover and Write Data Mover in the P-Tile IP.
- It must process the status that the DMA Avalon® -MM Read and Write masters provide.
The following figure shows the Avalon® -MM DMA Bridge when a custom external descriptor controller drives the Read and Write Data Movers.
This configuration includes the PCIe Read DMA and Write DMA Data Movers. The custom DMA descriptor controller must connect to the following Data Mover interfaces:
- PCIe Read Descriptor Sinks: These are two 174-bit, Avalon® -ST sink interfaces (for normal and priority descriptors). The custom DMA descriptor controller drives read descriptor table entries on this bus. For more details on this interface, refer to Read Data Mover Avalon -ST Descriptor Sinks.
- PCIe Write Descriptor Sinks: These are two 174-bit, Avalon® -ST sink interfaces (for normal and priority descriptors). The custom DMA descriptor controller drives write descriptor table entries on this bus. For more details on this interface, refer to Write Data Mover Avalon -ST Descriptor Sinks.
- PCIe Read Data Mover Status Source: The Read Data Mover reports status to the custom DMA descriptor controller on this interface. For more details on this interface, refer to Read Data Mover Status Avalon -ST Source.
- PCIe Write Data Mover Status Source: The Write Data Mover reports status to the custom DMA descriptor controller on this interface. For more details on this interface, refer to Write Data Mover Status Avalon -ST Source.
4.3.2. Root Port Mode Interface (256-bit Avalon -MM Interface)
In Gen3 x4 and Gen4 x4 Root Port modes, the IP core uses the 256-bit Avalon® -MM bridge instead of the 512-bit Avalon® -MM bridge for the performance purpose. In Root Port mode, DMA functionalities are not available. The table below shows the interfaces for the P-tile 256-bit Avalon® -MM bridge.
Interface Name | Data Width | Burst Count Width | Byte Enable Width | Wait Request |
---|---|---|---|---|
Bursting Master | 256 | 5 | 32 | Yes |
Non-Bursting Slave (optional) |
32 | N/A | 4 | Yes |
Bursting Slave (optional) |
256 | 5 | 32 | Yes |
Control Register Access (CRA) | 32 | N/A | 4 | Yes |
4.3.2.1. High Performance Avalon -MM Slave (HPTXS) Interface
The High Performance Avalon® -MM Slave has a 256-bit-wide data bus. It supports up to 16-cycle bursts with dword granularity byte enable on the first and last cycles of a write burst and for single-cycle read bursts. It also supports optional address mapping when the address bus is less than 64-bit wide.
This interface is optional. You enable it by turning On the Enable Bursting Slave option in the GUI.
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
hptxs_address_i [hptxs_address_width_hwtcl-1:0] | I | Byte address. Bits [4:0] are assumed to be zeros. | hptxs_slave |
hptxs_byteenable_i [31:0] | I | Specifies the valid bytes for a write command. | |
hptxs_read_i | I | When asserted, specifies a TX Avalon® -MM slave read request. | |
hptxs_readdata_o[255:0] | O | This bus contains the read completion data. | |
hptxs_write_i | I | When asserted, specifies a TX Avalon® -MM slave write request. | |
hptxs_writedata_i[255:0] | I | This bus contains the Avalon® -MM data for a write command. | |
hptxs_waitrequest_o | O | When asserted, indicates that the Avalon® -MM slave port is not ready to respond to a read or write request. | |
hptxs_readdatavalid_o | O | When asserted, indicates that the read data is valid. | |
hptxs_burstcount_i[4:0] | I |
When asserted, the value on the response signal is a valid write response. Writeresponsevalid is only asserted one clock cycle or more after the write command is accepted. There is at least a one clock cycle latency from command acceptance to the assertion of writeresponsevalid. |
4.3.2.2. High Performance Avalon -MM Master (HPRXM) Interface
The bursting Avalon® -MM master is always enabled in Root Port mode and is not associated with any BAR. Packets targeting addresses outside of the range of the base and limit registers are forwarded to the host via the HPRXM master. The bursting Avalon® -MM master has a 256-bit-wide data bus and supports up to 16-cycle bursts with dword granularity byte enable on the first and last cycles of a write burst and on single-cycle read bursts. Byte granularity access is supported for single-cycle one-dword or smaller transactions.
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
rxm_write_o | O | Asserted by the core to request a write to an Avalon® -MM slave. | hprxm_master |
rxm_address_o[avmm_addr_width_hwtcl-1:0] | O | The address of the Avalon® -MM slave being accessed. | |
rxm_writedata_o[255:0] | O | This bus contains the RX data being written to the slave. | |
rxm_byteenable_o[31:0] | O | These bits specify the valid bytes for the write data. | |
rxm_burstcount_o[4:0] | O | The burst count, measured in qwords, of the RX write or read request. The maximum amount of data in a burst is 512 bytes. | |
rxm_waitrequest_i | I | When asserted by the external Avalon® -MM slave, this signal indicates that the slave is not ready for the next read or write request. | |
rxm_read_o | O | Asserted by the core to request a read. | |
rxm_readdata_i[255:0] | I | Read data returned from the Avalon® -MM slave in response to a read request. This data is sent to the IP core through the TX interface. | |
rxm_readdatavalid_i | I | Asserted by the system interconnect fabric to indicate that the read data is valid. |
4.3.2.3. 32-Bit Control Register Access (CRA) Slave (Root Port only)
- 32-bit data bus
- Supports a single transaction at a time
- Supports single-cycle transactions (no bursting)
Signal Name | Direction | Description | Platform Designer Interface Name |
---|---|---|---|
cra_read_i | I | Read enable. | cra |
cra_write_i | I |
Write request. |
|
cra_address_i[14:0] | I | ||
cra_writedata_i[31:0] | I | Write data. The current version of the CRA slave interface is read-only. Including this signal as a part of the Avalon-MM interface makes future enhancements possible. | |
cra_readdata_o[31:0] | O | Read data. | |
cra_byteenable_i[3:0] | I | Byte enable. | |
cra_waitrequest_o | O | Wait request to hold off additional requests. | |
cra_chipselect_i | I | Chip select signal to this slave. | |
cra_irq_o | O | Interrupt request. A port request for an Avalon-MM interrupt. |
4.4. Serial Data Interface
The P-Tile Avalon® -MM IP for PCIe natively supports 4, 8, or 16 PCIe lanes. Each lane includes a TX differential pair and an RX differential pair. Data is striped across all available lanes.
Signal Name | Direction | Description |
---|---|---|
tx_p_out[<b>-1:0], tx_n_out[<b>-1:0] | O | Transmit serial data outputs using the High Speed Differential I/O standard. |
rx_p_in[<b>-1:0], rx_n_in[<b>-1:0] | I | Receive serial data inputs using the High Speed Differential I/O standard. |
The value of the variable b depends on which configuration is active (1x16, 2x8 or 4x4).
- For 1x16, b = 16.
- For 2x8, b = 8.
- For 4x4, b = 4.
4.5. Hard IP Status Interface
This interface includes the signals that are useful for debugging, such as the link status signal, LTSSM state outputs, etc. These signals are available when the optional Power Management interface is enabled.
Signal Name | Direction | Description | Clock Domain | EP/RP |
---|---|---|---|---|
link_up_o | O | When asserted, this signal indicates the link is up. | p<n>_app_clk | EP/RP |
dl_up_o | O | When asserted, this signal indicates the Data Link (DL) Layer is active. | p<n>_app_clk | EP/RP |
ltssm_state_o[5:0] | O | Indicates the LTSSM state:
|
p<n>_app_clk | EP/RP |
surprise_down_err_o | O | When active, indicates that a surprise link down event is occurring. | p<n>_app_clk | RP |
4.6. Interrupt Interface
The P-Tile Avalon® -MM IP for PCI Express* supports Message Signaled Interrupts (MSI), MSI-X interrupts, and legacy interrupts. MSI and legacy interrupts are mutually exclusive.
Legacy interrupts, MSI, and MSI-X interrupts are all controlled and generated externally to the Avalon® -MM IP to ensure total flexibility of allocating interrupt resources based on the user’s application needs.
To support domain-isolation, legacy interrupt messages, MSI, and MSI-X TLPs need to be sent with the appropriate source IDs.
The following figure shows an example integrating an external interrupt controller with the P-Tile Avalon® -MM IP. The interrupt controller takes interrupt requests from the external DMA controller as well as those from the user application.
4.6.1. Legacy Interrupts
If legacy interrupts are enabled at IP configuration time, the user’s interrupt controller generates legacy interrupts by asserting the intx_req_i input signal which causes the PCIe Hard IP to send the corresponding interrupt message. Use of legacy interrupts to signal the completion of DMA transfers is not recommended as their ordering with respect to the DMA traffic is not guaranteed.
4.6.2. MSI
If MSI or MSI-X are enabled at IP configuration time, the external interrupt controller can generate MSI/MSI-X transactions by issuing memory writes to the Bursting Slave or using the immediate write feature of the Write Data Mover, especially if signaling the completion of a DMA transfer by the Write Data Mover. The interrupt controller gets the address and data information to generate the MSI/MSI-X messages from the MSI or MSI-X capability registers in the Transaction Layer in the P-Tile IP.
MSI interrupts are signaled on the PCI Express link using a single dword Memory Write TLP. The user application issues an MSI request (MWr) through the Avalon® -ST interface and updates the configuration space register using the MSI interface.
For more details on the MSI Capability Structure, refer to Figure 55.
The Mask Bits register and Pending Bits register are 32 bits in length each, with each potential interrupt message having its own mask bit and pending bit. If bit[0] of the Mask Bits register is set, interrupt message 0 is masked. When an interrupt message is masked, the MSI for that vector cannot be sent. If software clears the mask bit and the corresponding pending bit is set, the function must send the MSI request at that time.
You should obtain the necessary MSI information (such as the message address and data) from the configuration output interface (tl_cfg_*) to create the MWr TLP in the format shown below to be sent via the Avalon® -ST interface.
Signal Name | Direction | Description | Clock Domain | EP/RP |
---|---|---|---|---|
msi_pnd_func_i[2:0] | I | Function number select for the Pending Bits register in the MSI capability structure. | p<n>_app_clk | EP |
msi_pnd_addr_i[1:0] | I | Byte select for Pending Bits Register in the MSI Capability Structure. For example if msi_pnd_addr_i[1:0] = 00, bits [7:0] of the Pending Bits register will be updated with msi_pnd_byte_i[7:0]. If msi_pnd_addr_i[1:0] = 01, bits [15:8] of the Pending Bits register will be updated with msi_pnd_byte_i[7:0]. | p<n>_app_clk | EP |
msi_pnd_byte_i[7:0] | I | Indicate that function has a pending associated message. | p<n>_app_clk | EP |
The following figure shows the timings of msi_pnd_* signals in three scenarios. The first scenario shows the case when the MSI pending bits register is not used. The second scenario shows the case when only physical function 0 is enabled and the MSI pending bits register is used. The last scenario shows the case when four physical functions are enabled and the MSI pending bits register is used.
There are 32 possible MSI messages. The number of messages requested by a particular component does not necessarily correspond to the number of messages allocated. For example, in the following figure, the Endpoint requests eight MSIs but is only allocated two. In this case, you must design the Application Layer to use only two allocated messages.
The following table describes three example implementations. The first example allocates all 32 MSI messages. The second and third examples only allocate 4 interrupts.
MSI |
Allocated |
||
---|---|---|---|
32 |
4 |
4 |
|
System Error |
31 |
3 |
3 |
Hot Plug and Power Management Event |
30 |
2 |
3 |
Application Layer |
29:0 |
1:0 |
2:0 |
MSI interrupts generated for Hot Plug, Power Management Events, and System Errors always use Traffic Class 0. MSI interrupts generated by the Application Layer can use any Traffic Class. For example, a DMA that generates an MSI at the end of a transmission can use the same traffic control as was used to transfer data.
The following figure illustrates a possible implementation of the Interrupt Handler Module with a per vector enable bit in the Application Layer. Alternatively, the Application Layer could implement a global interrupt enable instead of this per vector MSI.
4.6.3. MSI-X
The P-Tile Avalon® -MM IP provides a Configuration Intercept Interface. User soft logic can monitor this interface to get MSI-X Enable and MSI-X function mask related information. User application logic needs to implement the MSI-X tables for all PFs and VFs at the memory space pointed to by the BARs as a part of your Application Layer.
For more details on the MSI-X related information that you can obtain from the Configuration Intercept Interface, refer to the MSI-X Registers section in the Registers chapter.
MSI-X is an optional feature that allows the user application to support large amount of vectors with independent message data and address for each vector.
When MSI-X is supported, you need to specify the size and the location (BARs and offsets) of the MSI-X table and PBA. MSI-X can support up to 2048 vectors per function versus 32 vectors per function for MSI.
A function is allowed to send MSI-X messages when MSI-X is enabled and the function is not masked. The application uses the Configuration Output Interface (address 0x0C bit[5:4]) or Configuration Intercept Interface to access this information.
When the application needs to generate an MSI-X, it will use the contents of the MSI-X Table (Address and Data) and generate a Memory Write through the Avalon® -ST interface.
You can enable MSI-X interrupts by turning on the Enable MSI-X option under the PCI Express/PCI Capabilities tab in the parameter editor. If you turn on the Enable MSI-X option, you should implement the MSI-X table structures at the memory space pointed to by the BARs as a part of your Application Layer.
The MSI-X Capability Structure contains information about the MSI-X Table and PBA Structure. For example, it contains pointers to the bases of the MSI-X Table and PBA Structure, expressed as offsets from the addresses in the function's BARs. The Message Control register within the MSI-X Capability Structure also contains the MSI-X Enable bit, the Function Mask bit, and the size of the MSI-X Table. For a picture of the MSI-X Capability Structure, refer to Figure 57.
MSI-X interrupts are standard Memory Writes, therefore Memory Write ordering rules apply.
Example:
MSI-X Vector | MSI-X Upper Address | MSI-X Lower Address | MSI-X Data |
---|---|---|---|
0 | 0x00000001 | 0xAAAA0000 | 0x00000001 |
1 | 0x00000001 | 0xBBBB0000 | 0x00000002 |
2 | 0x00000001 | 0xCCCC0000 | 0x00000003 |
PBA Table | PBA Entries |
---|---|
Offset 0 | 0x0 |
If the application needs to generate an MSI-X interrupt (vector 1), it will read the MSI-X Table information, generate a MWR TLP through the Avalon® -ST interface and assert the corresponding PBA bits (bit[1]) in a similar fashion as for MSI generation.
The generated TLP will be sent to address 0x00000001_BBBB0000 and the data will be 0x00000002. When the MSI-X has been sent, the application can clear the associated PBA bits.
4.6.3.1. Implementing MSI-X Interrupts
-
Host software sets up the MSI-X interrupts in the Application
Layer by completing the following steps:
-
Host software reads the Message
Control register at 0x050 register to determine the MSI-X
Table size. The number of table entries is the <value read> + 1.
The maximum table size is 2048 entries. Each 16-byte entry is divided in 4 fields as shown in the figure below. For multi-function variants, BAR4 accesses the MSI-X table. For all other variants, any BAR can access the MSI-X table. The base address of the MSI-X table must be aligned to a 4 KB boundary.Note that multi-function support is not available in the current release of Intel® Quartus® Prime.
-
The host sets up the MSI-X table. It programs MSI-X
address, data, and masks bits for each entry as shown in the figure
below.
Figure 25. Format of MSI-X Table
-
The host calculates the address of the <n
th
> entry using the following formula:
nth_address = base address[BAR] + 16<n>
-
Host software reads the Message
Control register at 0x050 register to determine the MSI-X
Table size. The number of table entries is the <value read> + 1.
- When Application Layer has an interrupt, it drives an interrupt request to the IRQ Source module.
-
The IRQ Processor reads the entry in the MSI-X table.
- If the interrupt is masked by the Vector_Control field of the MSI-X table, the interrupt remains in the pending state.
- If the interrupt is not masked, IRQ Processor sends Memory Write Request to the TX slave interface. It uses the address and data from the MSI-X table. If Message Upper Address = 0, the IRQ Processor creates a three-dword header. If the Message Upper Address > 0, it creates a 4-dword header.
- The host interrupt service routine detects the TLP as an interrupt and services it.
4.7. Hot Plug Interface (RP Only)
Hot Plug support means that the device can be added to or removed from a system during runtime. The Hot Plug Interface in the P-Tile Avalon® -MM IP for PCIe allows an Intel FPGA with this IP to safely provide this capability.
This section describes the signals reported by the on-board hot plug components in the Downstream Port. This interface is available only if the Slot Status Register of the PCI Express Capability Structure is enabled.
Signal Name | Direction | Description | Clock Domain | EP/RP |
---|---|---|---|---|
sys_atten_button_pressed_i | I | Attention Button Pressed. Indicates that the system attention button was pressed, and sets the Attention Button Pressed bit in the Slot Status Register. | p<n>_app_clk | RP |
sys_pwr_fault_det_i | I | Power Fault Detected. Indicates the power controller detected a power fault at this slot. | p<n>_app_clk | RP |
sys_mrl_sensor_chged_i | I | MRL Sensor Changed. Indicates that the state of the MRL sensor has changed. | p<n>_app_clk | RP |
sys_pre_det_chged_i | I | Presence Detect Changed. Indicates that the state of the card presence detector has changed. | p<n>_app_clk | RP |
sys_cmd_cpled_int_i | I | Command Completed Interrupt. Indicates that the Hot Plug controller completed a command. | p<n>_app_clk | RP |
sys_pre_det_state_i | I |
Indicates whether or not a card is present in the slot. 0 : slot is empty. 1 : card is present in the slot. |
p<n>_app_clk | RP |
sys_mrl_sensor_state_i | I |
MRL Sensor State. Indicates the state of the manually operated retention latch (MRL) sensor. 0 : MRL is closed. 1 : MRL is open. |
p<n>_app_clk | RP |
sys_eml_interlock_engaged_i | I | Indicates whether the system electromechanical interlock is engaged, and controls the state of the electromechanical interlock status bit in the Slot Status Register. | p<n>_app_clk | RP |
sys_aux_pwr_det_i | I |
Auxiliary Power Detected. Used to report to the host software that auxiliary power (Vaux) is present. Refer to the Device Status Register in the PCI Express Capability Structure. |
p<n>_app_clk | RP |
4.8. Power Management Interface
Software programs the device into a D-state by writing to the Power Management Control and Status register in the PCI Power Management Capability Structure. The power management output signals indicate the current power state. The IP core supports the two mandatory power states: D0 (full power) and D3 (preparation for a loss of power). It does not support the optional D1 and D2 low-power states.
The correspondence between the device power states (D states) and link power states (L states) is as follows:
Device Power State | Link Power State |
---|---|
D0 | L0 |
D1 (not supported) | L1 |
D2 (not supported) | L1 |
D3 | L1, L2/L3 Ready |
P-Tile does not support ASPM.
Signal Name | Direction | Description | Clock Domain | EP/RP |
---|---|---|---|---|
pm_state_o[2:0] | O | Indicates the current power state. | p<n>_app_clk | EP/RP |
x16/x8: pm_dstate_o[31:0] x4: pm_dstate_o[3:0] |
O | Power management D-state for each
function.
|
Async | EP/RP |
x16/x8: apps_pm_xmt_pme_i[7:0] x4: NA |
I | The application logic asserts this signal for one cycle to wake up the Power Management Capability (PMC) state machine from a D1, D2, or D3 power state. Upon wake-up, the IP core sends a PM_PME message. | p<n>_app_clk | EP |
x16/x8: app_ready_entr_l23_i x4: NA |
I | The application logic asserts this signal to indicate that it is ready to enter the L2/L3 Ready state. The app_ready_entr_l23_i signal is provided for applications that must control the L2/L3 Ready entry (in case certain tasks must be performed before going into L2/L3 Ready). The core delays sending PM_Enter_L23 (in response to PM_Turn_Off) until this signal becomes active. This is a level-sensitive signal. | p<n>_app_clk | EP |
x16: app_req_retry_en_i[7:0] x8: app_req_retry_en_i x4: NA |
I |
When these signals are asserted, the P-Tile Avalon® -MM IP will respond to Configuration TLPs with a Configuration Retry Status (CRS) if it is not ready to respond with non-CRS status since the last reset. For x4 ports, this signal is not used and needs to be driven to zero. |
Async | EP |
4.9. Configuration Output Interface
The Transaction Layer configuration output (tl_cfg) bus provides a subset of the information stored in the Configuration Space. Use this information in conjunction with the app_err* signals to understand TLP transmission problems.
Signal Name | Direction | Description | Clock Domain | EP/RP |
---|---|---|---|---|
tl_cfg_ctl_o[15:0] | O | Multiplexed data output from the register specified by tl_cfg_add_o[4:0]. The detailed information for each field in this bus is defined in the following table. | p<n>_app_clk | EP/RP |
tl_cfg_add_o[4:0] | O | This address bus contains the index indicating which Configuration Space register information is being driven onto the tl_cfg_ctl_o[15:0] bits. | p<n>_app_clk | EP/RP |
x16/x8: tl_cfg_func_o[2:0] x4: NA |
O | Specifies the function whose
Configuration Space register values are being driven out on tl_cfg_ctl_o[15:0].
and so on Note: In the 19.4 release of
Intel®
Quartus® Prime, the P-Tile
Avalon®
-MM IP only supports
PF0.
|
p<n>_app_clk | EP/RP |
The table below provides the tl_cfg_add_o[4:0] to tl_cfg_ctl_o[15:0] mapping.
tl_cfg_add_o[4:0] | tl_cfg_ctl_o[15:8] | tl_cfg_ctl_o[7:0] |
---|---|---|
5'h00 |
[15]: memory space enable [14]: IDO completion enable [13]: perr_en [12]: serr_en [11]: fatal_err_rpt_en [10]: nonfatal_err_rpt_en [9]: corr_err_rpt_en [8]: unsupported_req_rpt_en |
Device control: [7]: bus master enable [6]: extended tag enable [5:3]: maximum read request size [2:0]: maximum payload size |
5'h01 |
[15]: IDO request enable [14]: No Snoop enable [13]: Relaxed Ordering enable [12:8]: Device number |
bus number |
5'h02 |
[15]: pm_no_soft_rst [14]: RCB control [13]: Interrupt Request (IRQ) disable [12:8]: PCIe Capability IRQ message number |
[7:5]: reserved [4]: system power control [3:2]: system attention indicator control [1:0]: system power indicator control |
5'h03 | Number of VFs [15:0] | |
5'h04 |
[15]: reserved [14]: AtomicOP Egress Block field (cfg_atomic_egress_block) [13:9]: ATS Smallest Translation Unit (STU)[4:0] [8]: ATS cache enable |
[7]: ARI forward enable [6]: Atomic request enable [5:3]: TPH ST mode [2:1]: TPH enable [0]: VF enable |
5'h05 |
[15:12]: auto negotiation link speed. Link speed encoding values
are:
[11:1]: Index of Start VF [10:0] [0]: reserved |
|
5'h06 | MSI Address [15:0] | |
5'h07 | MSI Address [31:16] | |
5'h08 | MSI Address [47:32] | |
5'h09 | MSI Address [63:48] | |
5'h0A | MSI Mask [15:0] | |
5'h0B | MSI Mask [31:16] | |
5'h0C |
[15]: cfg_send_f_err [14]: cfg_send_nf_err [13]: cfg_send_cor_err [12:8]: AER IRQ message number |
[7]: Enable extended message data for MSI (cfg_msi_ext_data_en) [6]: MSI-X func mask [5]: MSI-X enable [4:2]: Multiple MSI enable [1]: 64-bit MSI [0]: MSI enable |
5'h0D | MSI Data [15:0] | |
5'h0E | AER uncorrectable error mask [15:0] | |
5'h0F | AER uncorrectable error mask [31:16] | |
5'h10 | AER correctable error mask [15:0] | |
5'h11 | AER correctable error mask [31:16] | |
5'h12 | AER uncorrectable error severity [15:0] | |
5'h13 | AER uncorrectable error severity [31:16] | |
5'h14 | [15:8]: ACS Egress Control Register (cfg_acs_egress_ctrl_vec) |
[7]: ACS function group enable (cfg_acs_func_grp_en) [6]: ACS direct translated P2P enable (cfg_acs_p2p_direct_tranl_en) [5]: ACS P2P egress control enable (cfg_acs_egress_ctrl_en) [4]: ACS upstream forwarding enable (cfg_acs_up_forward_en) [3]: ACS P2P completion redirect enable (cfg_acs_p2p_compl_redirect_en) [2]: ACS P2P request redirect enable (cfg_acs_p2p_req_redirect_en) [1]: ACS translation blocking enable (cfg_acs_at_blocking_en) [0]: ACS source validation enable (RP) (cfg_acs_validation_en) |
5'h15 |
[15]: reserved [14]: 10-bit tag requester enable (cfg_10b_tag_req_en) [13]: VF 10-bit tag requester enable (cfg_vf_10b_tag_req_en) [12]: PRS_RESP_FAILURE (cfg_prs_response_failure) [11]: PRS_UPRGI (cfg_prs_uprgi) [10]: PRS_STOPPED (cfg_prs_stopped) [9]: PRS_RESET (cfg_prs_reset) [8]: PRS_ENABLE (cfg_prs_enable) |
[7:3]: reserved [2:0]: ARI function group (cfg_ari_func_grp) |
5'h16 | PRS_OUTSTANDING_ALLOCATION (cfg_prs_outstanding_allocation) [15:0] | |
5'h17 | PRS_OUTSTANDING_ALLOCATION (cfg_prs_outstanding_allocation) [31:16] | |
5'h18 |
[15:10]: reserved [9]: Disable autonomous generation of LTR clear message (cfg_disable_ltr_clr_msg) [8]: LTR mechanism enable (cfg_ltr_m_en) |
[7]: Infinite credits for Posted header [6]: Infinite credits for Posted data [5]: Infinite credits for Completion header [4]: Infinite credits for Completion data [3]: End-end TLP prefix blocking (cfg_end2end_tlp_pfx_blck) [2]: PASID enable (cfg_pf_pasid_en) [1]: Execute permission enable (cfg_pf_passid_execute_perm_en ) [0]: Privileged mode enable (cfg_pf_passid_priv_mode_en) |
5'h19 |
[15:9]: reserved [8]: Slot control attention button pressed enable (cfg_atten_button_pressed_en) |
[7]: Slot control power fault detect enable (cfg_pwr_fault_det_en) [6]: Slot control MRL sensor changed enable (cfg_mrl_sensor_chged_en) [5]: Slot control presence detect changed enable (cfg_pre_det_chged_en) [4]: Slot control hot plug interrupt enable (cfg_hp_int_en) [3]: Slot control command completed interrupt enable (cfg_cmd_cpled_int_en) [2]: Slot control DLL state change enable (cfg_dll_state_change_en) [1]: Slot control accessed (cfg_hp_slot_ctrl_access) [0]: PF’s SERR# enable (cfg_br_ctrl_serren) |
5'h1A | LTR maximum snoop latency register (cfg_ltr_max_latency[15:0]) | |
5'h1B | LTR maximum no-snoop latency register (cfg_ltr_max_latency[31:16]) | |
5'h1C | [15:8]: enabled Traffic Classes (TCs) (cfg_tc_enable[7:0]) |
[5:0]: auto negotiation link width 6’h01 = x1 6’h02 = x2 6’h04 = x4 6’h08 = x8 6’h10 = x16 |
5'h1D | MSI Data[31:16] | |
5'h1E | N/A | |
5'h1F | N/A |
The information on the Configuration Output (tl_cfg) bus is time-division multiplexed (TDM).
- When tl_cfg_func[2:0] = 3'b000, tl_cfg_ctl[31:0] drive out the PF0 Configuration Space register values.
- Then, tl_cfg_func[2:0] are incremented to 3'b001.
- When tl_cfg_func[2:0] = 3'b001, tl_cfg_ctl[31:0] drive out the PF1 Configuration Space register values.
- This pattern repeats to cover all enabled PFs.
- The P-Tile Avalon® -MM IP for PCIe only supports PF0.
4.10. Hard IP Reconfiguration Interface
The Hard IP reconfiguration interface is an Avalon® -MM slave interface with a 21‑bit address and an 8‑bit data bus. It is also sometimes referred to as the User Avalon® -MM Interface. You can use this interface to dynamically modify the value of configuration registers. Note that after a warm reset or cold reset, changes made to the configuration registers of the Hard IP via the Hard IP reconfiguration interface are lost as these registers revert back to their default values.
In Root Port mode, the application logic uses the Hard IP reconfiguration interface to access its PCIe configuration space to perform link control functions (such as Hot Reset, link disable, or link retrain).
Signal Name | Direction | Description | Clock Domain | EP/RP |
---|---|---|---|---|
hip_reconfig_clk | I |
Reconfiguration clock 50 MHz - 125 MHz (Range) 100 MHz (Recommended) |
EP/RP | |
hip_reconfig_readdata_o[7:0] | O | Avalon® -MM read data outputs | hip_reconfig_clk | EP/RP |
hip_reconfig_readdatavalid_o | O | Avalon® -MM read data valid. When asserted, the data on hip_reconfig_readdata_o[7:0] is valid. | hip_reconfig_clk | EP/RP |
hip_reconfig_write_i | I | Avalon® -MM write enable | hip_reconfig_clk | EP/RP |
hip_reconfig_read_i | I | Avalon® -MM read enable | hip_reconfig_clk | EP/RP |
hip_reconfig_address_i[20:0] | I | Avalon® -MM address | hip_reconfig_clk | EP/RP |
hip_reconfig_writedata_i[7:0] | I | Avalon® -MM write data inputs | hip_reconfig_clk | EP/RP |
hip_reconfig_waitrequest_o | O | When asserted, this signal indicates that the IP core is not ready to respond to a request. | hip_reconfig_clk | EP/RP |
dummy_user_avmm_rst | I | Reset signal. You can tie it to ground or leave it floating when using the Hard IP Reconfiguration Interface. | EP/RP |
Reading and Writing to the Hard IP Reconfiguration Interface
Reading from the Hard IP reconfiguration interface of the P-Tile Avalon® -MM IP for PCI Express retrieves the current value at a specific address. Writing to the reconfiguration interface changes the data value at a specific address. Intel recommends that you perform read-modify-writes when writing to a register, because two or more features may share the same reconfiguration address.
Modifying the PCIe configuration registers directly affects the behavior of the PCIe device.

4.10.1. Address Map for the User Avalon-MM Interface
The User Avalon® -MM interface provides access to the configuration registers and the IP core registers. This interface includes an 8-bit data bus and a 21-bit address bus (which contains the byte addresses).
- Using direct User Avalon® -MM interface (byte access)
- Using the Debug (DBI) register access (dword access). This method is useful when you need to read/write the entire 32 bits at one time (Counter/ Lane Margining, etc.)
The following diagram and table show the address offsets for physical function 0 (PF0), User Avalon® -MM Port Configuration Register and Debug (DBI) Register.
Registers | User Avalon® -MM Offsets | Comments |
---|---|---|
Physical function 0 | 0x0000 | Refer to Appendix A for more details of the PF configuration space. This PF is available for x16, x8 and x4 cores. |
User Avalon-MM Port Configuration Register | 0x104068 | Refer to User Avalon-MM Port Configuration Register (Offset 0x104068) for more details. |
Debug (DBI) Register | 0x104200 to 0x104204 | Refer to Using the Debug Register Interface Access for more details. |
4.10.2. Configuration Registers Access
4.10.2.1. Using Direct User Avalon-MM Interface (Byte Access)
Targeting PF Configuration Space Registers
User application needs to specify the offsets of the targeted PF registers.
For example, if the application wants to read the MSI Capability Register of PF0, it will issue a Read with address 0x0050 to target the MSI Capability Structure of PF0.
Targeting VSEC Registers
User application needs to program the VSEC field (0x104068 bit[0]) first. Then all accesses from the user Avalon® -MM interface starting at offset 0xD00 will be translated to VSEC configuration space registers.
4.10.2.2. Using the Debug Register Interface Access
DEBUG_DBI_ADDR register is located at user Avalon® -MM offsets 0x104204 to 0x104207 (corresponding to byte 0 to byte 3). For example, the d_done bit is bit 7 at byte address 0x104207.
Names | Bits | R/W | Descriptions |
---|---|---|---|
d_done | 31 | RO | 1: indicates debug DBI read/write access done |
d_write | 30 | R/W |
1: write access 0: read access |
d_warm_reset | 29 | RO |
1: normal operation 0: warm reset is on-going |
d_vf | 28:18 | R/W | Specify the virtual function number. |
d_vf_select | 17 | R/W | To access the virtual function registers, set this bit to one. |
d_pf | 16:14 | R/W | Specify the physical function number. |
reserved | 13:12 | R/W | Reserved |
d_addr | 11:2 | R/W | Specify the DW address for the P-Tile Avalon® -MM IP DBI interface. |
d_shadow_select | 1 | R/W |
Reserved. Clear this bit for access to standard PCIe configuration registers. |
d_vsec_select | 0 | R/W | If set, this bit allows access to Intel VSEC registers. |
DEBUG_DBI_DATA register is located at user Avalon® -MM offsets 0x104200 to 0x104203 (corresponding to byte 0 to byte 3).
Names | Bits | R/W | Descriptions |
---|---|---|---|
d_data | 31:0 | R/W | Read or write data for the P-Tile Avalon® -MM IP register access. |
- Use the user_avmm interface to access 0x104200 to 0x104203 to write the data first.
- Use the user_avmm interface to access 0x104204 to 0x104206 to set the address and control bits.
- Use the user_avmm interface to write to 0x104207 to enable the read/write bit (bit[30]).
- Use the user_avmm interface to access 0x104207 bit[31] to poll if the write is complete.
- Use the user_avmm interface to access 0x104204 to 0x104206 to set the address and control bits.
- Use the user_avmm interface to write to 0x104207 to enable the read bit (bit[30]).
- Use the user_avmm interface to access 0x104207 bit[31] to poll if the read is complete.
- Use the user_avmm interface to access 0x104200 to 0x104203 to read the data
4.11. PHY Reconfiguration Interface
The PHY reconfiguration interface is an optional Avalon® -MM slave interface with a 26‑bit address and an 8‑bit data bus. Use this bus to read the value of PHY registers. Refer to Table 62 for details on addresses and bit mappings for the PHY registers that you can access using this interface.
These signals are present when you turn on Enable PHY reconfiguration on the Top-Level Settings tab using the parameter editor.
Please note that the PHY reconfiguration interface is shared among all the PMA quads.
Signal Name | Direction | Description | Clock Domain | EP/RP |
---|---|---|---|---|
xcvr_reconfig_clk | I |
Reconfiguration clock 50 MHz - 125 MHz (Range) 100 MHz (Recommended) |
EP/RP | |
xcvr_reconfig_readdata[7:0] | O | Avalon® -MM read data outputs | xcvr_reconfig_clk | EP/RP |
xcvr_reconfig_readdatavalid | O | Avalon® -MM read data valid. When asserted, the data on xcvr_reconfig_readdata[7:0] is valid. | xcvr_reconfig_clk | EP/RP |
xcvr_reconfig_write | I | Avalon® -MM write enable | xcvr_reconfig_clk | EP/RP |
xcvr_reconfig_read | I | Avalon® -MM read enable. This interface is not pipelined. You must wait for the return of the xcvr_reconfig_readdata[7:0] from the current read before starting another read operation. | xcvr_reconfig_clk | EP/RP |
xcvr_reconfig_address[25:0] | I |
Avalon® -MM address [25:21] are used to indicate the Quad. 5'b00001 : Quad 0 5'b00010 : Quad 1 5'b00100 : Quad 2 5'b01000 : Quad 3 [20:0] are used to indicate the offset address. |
xcvr_reconfig_clk | EP/RP |
xcvr_reconfig_writedata[7:0] | I | Avalon® -MM write data inputs | xcvr_reconfig_clk | EP/RP |
xcvr_reconfig_waitrequest | O | When asserted, this signal indicates that the PHY is not ready to respond to a request. | xcvr_reconfig_clk | EP/RP |
Reading from the PHY Reconfiguration Interface
Reading from the PHY reconfiguration interface of the P-Tile Avalon® -MM IP for PCI Express retrieves the current value at a specific address.
5. Advanced Features
5.1. PCIe Port Bifurcation and PHY Channel Mapping
The PCIe* controller IP contains a set of port bifurcation muxes to remap the four controller PIPE lane interfaces to the shared 16 PCIe* PHY lanes. The table below shows the relationship between PHY lanes and the port mapping.
Bifurcation Mode | Port 0 (x16) | Port 1 (x8) | Port 2 (x4) | Port 3 (x4) |
---|---|---|---|---|
1 x16 | 0 - 15 | NA | NA | NA |
2 x8 | 0 - 7 | 8 - 15 | NA | NA |
4 x4 | 4 - 7 | 8 - 11 | 0 - 3 | 12 - 15 |
6. Troubleshooting/Debugging
As you bring up your PCI Express system, you may face issues related to FPGA configuration, link training, BIOS enumeration, data transfer, and so on. This chapter suggests some strategies to resolve the common issues that occur during bring-up.
You can additionally use the P-Tile Debug Toolkit to identify the issues.
6.1. Hardware
- Link training
- BIOS enumeration and data transfer
The following sections describe the flow to debug link issues during the hardware bring-up. Intel recommends a systematic approach to diagnosing issues as illustrated in the following figure.
- Protocol and link status information.
- Basic and advanced debugging capabilities including PMA register access and Eye viewing capability.
6.1.1. Debugging Link Training Issues
The Physical Layer automatically performs link training and initialization without software intervention. This is a well-defined process to configure and initialize the device's Physical Layer and link so that PCIe packets can be transmitted.
- Link fails to negotiate to expected link speed.
- Link fails to negotiate to the expected link width.
- LTSSM fails to reach/stay stable at L0.
Flow Chart for Debugging Link Training Issues
Use the flow chart below to identify the potential cause of the issue seen during link training when using the P-Tile Avalon® -MM IP for PCI Express.
Note: (*) Redo the equalization using the Link Equalization Request 8.0 GT/s bit of the Link Status 2 register for 8.0 GT/s or Link Equalization Request 16.0 GT/s bit of the 16.0 GT/s Status Register.
Use the following debug tools for debugging link training issues observed on the PCI Express link when using the P-tile Avalon® -MM IP for PCI Express.
6.1.1.1. Generic Tools and Utilities
You can use utilities like lspci, setpci to obtain general information of the device like link speed, link width etc.
Example: To read the negotiated link speed for the P-Tile device in a system, you can use the following commands:
sudo lspci –s $bdf -vvv
-s refers to “slot” and is used with the bus/device/function number (bdf) information. Use this command if you know the bdf of the device in the system topology.
sudo lspci –d <1172>:$did -vvv
-d refers to device and is used with the device ID (vid:did). Use this command to search using the device ID.

The LnkCap under Capabilities indicates the advertised link speed and width capabilities of the device. The LnkSta under Capabilities indicates the negotiated link speed and width of the device.
6.1.1.2. SignalTapII Logic Analyzer
Using the SignalTapII Logic Analyzer, you can monitor the following top-level signals from the P-Tile Avalon® -MM IP for PCI Express to confirm the failure symptom for any port type (Root port, Endpoint or TLP Bypass) and configuration (Gen4/Gen3).
Signals | Description | Expected Value for Successful Link-up |
---|---|---|
pin_perst_n |
Active-low asynchronous input signal to the PCIe Hard IP. Implements the PERST# function defined by the PCIe specification. |
1'b1 |
p0_reset_status_n |
Active-low output signal from the PCIe Hard IP, synchronous to p<n>_app_clk. Held low until pin_perst_n is deasserted and the PCIe Hard IP comes out of reset, synchronous to p<n>_app_clk. When port bifurcation is used, there is one such signal for each Avalon® -MM interface. |
1'b1 |
ninit_done | Active-low output signal from the PCIe Hard IP. High indicates that the FPGA device is not yet fully configured, and low indicates the device has been configured and is in normal operating mode. | 1'b0 |
link_up_o |
Active-high output signal from the PCIe Hard IP, synchronous to p<n>_app_clk. Indicates that the Physical Layer link is up. |
1'b1 |
dl_up_o |
Active-high output signal from the PCIe Hard IP, synchronous to p<n>_app_clk. Indicates that the Data Link Layer is active. |
1'b1 |
ltssm_state_o[5:0] |
Indicates the LTSSM state, synchronous to p<n>_app_clk. |
6'h11 (L0) |
6.1.1.3. Additional Debug Tools
Use the Hard IP reconfiguration interface and PHY reconfiguration interface on the P-Tile Avalon® -MM IP for PCI Express to access additional registers (for example, receiver detection, lane reversal etc.).
Using the Hard IP Reconfiguration Interface
Refer to the section Hard IP Reconfiguration Interface for details on this interface and the associated address map.
The following table lists the address offsets and bit settings for the PHY status registers. Use the Hard IP Reconfiguration Interface to access these read-only registers.
Offset | Bit Position | Register |
---|---|---|
0x0003E9 | [0] | RX polarity |
[1] | RX detection | |
[2] | RX Valid | |
[3] | RX Electrical Idle | |
[4] | TX Electrical Idle | |
0x0003EC | [7] | Framing error |
0x0003ED | [7] | Lane reversal |
- Enable the Hard IP reconfiguration interface (User Avalon® -MM interface) using the IP Parameter Editor.
- Set the lane number for which you want to read the status by performing
a read-modify-write to the address hip_reconfig_addr_i[20:0] with write data of lane number on hip_reconfig_writedata_i[7:0] using the Hard IP reconfiguration
interface signals.
- hip_reconfig_write_i = 1’b1
- hip_reconfig_addr_i[20:0] = 0x0003E8
- hip_reconfig_writedata_i[3:0] = <Lane number>, where Lane number = 4’h0 for lane 0, 4’h1 for lane 1, 4’h2 for lane 2, …
- Read the status of the register you want by performing a read operation from the address hip_reconfig_addr_i[20:0] using the Hard IP reconfiguration interface signals.
- Enable the Hard IP reconfiguration interface using the IP Parameter Editor.
- Perform read-modify-write to address 0x0003E8 to set the lane number to
0 using the Hard IP reconfiguration interface signals.
- hip_reconfig_write_i = 1’b1
- hip_reconfig_addr_i[20:0] = 0x0003E8
- hip_reconfig_writedata_i[3:0] = 4'h0
- Read the status of the RX detection register by performing a read
operation from the address 0x0003E9[1] using the Hard IP reconfiguration interface
signals.
- hip_reconfig_read_i = 1’b1
- hip_reconfig_addr_i[20:0] = 0x0003E9
- hip_reconfig_readdata_o[1] = 1'b1 (Far end receiver detected)
Using the PHY Reconfiguration Interface
Refer to the section PHY Reconfiguration Interface for details on how to use this interface.
Follow the steps below to access registers in Table 62 using the PHY reconfiguration interface.
- Enable the PHY reconfiguration interface using the IP Parameter Editor.
- Set the Quad and address offset from which you want to read the status by performing a read operation from the address xcvr_reconfig_addr_i[25:0] using the PHY reconfiguration interface signals.
PHY Offset | Bit Position | Register |
---|---|---|
0x000006 | [7] |
PLLA state output status signal. 1'b1 indicates that PLLA is locked. |
0x00000a | [7] |
PLLB state output status signal. 1'b1 indicates that PLLB is locked. |
- Enable the PHY reconfiguration interface using the IP Parameter Editor.
- Perform a read from address 0x000006 to read the PLLA status output of
Quad0 using the PHY reconfiguration interface signals.
- xcvr_reconfig_read_i = 1'b1
- xcvr_reconfig_addr_i[25:0] = 0x000006
- xcvr_reconfig_readdata_o[7:0] = 8'h80
- xcvr_reconfig_readdata_i = 1'b1 (PLLA state output high indicating PLL lock)
6.1.2. Debugging Data Transfer and Performance Issues
There are many possible reasons causing the PCIe link to stop transmitting data. The PCI Express base specification defines three types of errors, outlined in the table below:
Type | Responsible Agent | Description |
---|---|---|
Correctable | Hardware | While correctable errors may affect system performance, data integrity is maintained. |
Uncorrectable, non-fatal | Device software | Uncorrectable, non-fatal errors are defined as errors in which data is lost, but system integrity is maintained. For example, the fabric may lose a particular TLP, but it still works without problems. |
Uncorrectable, fatal | System software | Errors generated by a loss of data and system failure are considered uncorrectable and fatal. Software must determine how to handle such errors: whether to reset the link or implement other means to minimize the problem. |
Observation | Issue | Resolution |
---|---|---|
Receiver error bit set |
Physical layer error which may be due to a PCS error when a lane is in L0, or a Control symbol being received in the wrong lane, or signal Integrity issues where the link may transition from L0 to the Recovery state. |
Use the Hard IP reconfiguration interface and the flow chart in Figure 35 to obtain more information about the error. |
Bad DLLP bit set |
Data link layer error which may occur when a CRC verification fails. |
Use the Hard IP reconfiguration interface to obtain more information about the error. |
Bad TLP bit set | Data link layer error which may occur when an LCRC verification fails or when a sequence number error occurs. | Use the Hard IP reconfiguration interface to obtain more information about the error. |
Replay_num_rollover bit set | Data link layer error which may be due to TLPs sent without success (no ACK) four times in a row. | Use the Hard IP reconfiguration interface to obtain more information about the error. |
replay timer timeout status bit set |
Data link layer error which may occur when no ACK or NAK was received within the timeout period for the TLPs transmitted. |
Use the Hard IP reconfiguration interface to obtain more information about the error. |
Advisory non-fatal | Transaction layer error which may be due to higher priority uncorrectable error detected. | |
Corrected internal error bits set | Transaction layer error which may be due to an ECC error in the internal Hard IP RAM. | Use the Hard IP reconfiguration interface and DBI registers to obtain more information about the error. |
Observation | Issue | Resolution |
---|---|---|
Data link protocol error | Data link layer error which may be due to transmitter receiving an ACK/NAK whose Seq ID does not correspond to an unacknowledged TLP or ACK sequence number. | Use the Hard IP reconfiguration interface to obtain more information about the error. |
Surprise down error | Data link layer error which may be due to link_up_o getting deasserted during L0, indicating the physical layer link is going down unexpectedly. | Use the Hard IP reconfiguration interface and DBI registers to obtain more information about the error. |
Flow control protocol error |
Transaction layer error which can be due to the receiver reporting more than the allowed credit limit. This error occurs when a component does not receive updated flow control credits with the 200 μs limit. |
Use the TX/RX flow control interface, Hard IP reconfiguration interface to obtain more information about the error. |
Poisoned TLP received | Transaction layer error which can be due to a received TLP with the EP bit set. | Use the Hard IP reconfiguration interface to obtain more information on the error and determine the appropriate action. |
Completion timeout | Transaction layer error which can be due to a completion not received within the required amount of time after a non-posted request was sent. | Use the Hard IP reconfiguration interface to obtain more information on the error. |
Completer abort | Transaction layer error which can be due to a completer being unable to fulfill a request due to a problem with the requester or a failure of the completer. | Use the Hard IP reconfiguration interface to obtain more information on the error. |
Unexpected completion |
Transaction layer error which can be due to a requester receiving a completion that doesn’t match any request awaiting a completion. The TLP is deleted by the Hard IP and not presented to the Application Layer. |
Use the Hard IP reconfiguration interface to obtain more information on the error. |
Receiver overflow |
Transaction layer error which can be due to a receiver receiving more TLPs than the available receive buffer space. The TLP is deleted by the Hard IP and not presented to the Application Layer. |
Use the TX/RX flow control interface and Hard IP reconfiguration interface to obtain more information on the error. |
Malformed TLP |
Transaction layer error which can be due to errors in the received TLP header. The TLP is deleted by the Hard IP and not presented to the Application Layer. |
Use the Hard IP reconfiguration interface to obtain more information on the error. |
ECRC error |
Transaction layer error which can be due to an ECRC check failure at the receiver despite the fact that the TLP is not malformed and the LCRC check is valid. The Hard IP block handles this TLP automatically. If the TLP is a non-posted request, the Hard IP block generates a completion with a completer abort status. The TLP is deleted by the Hard IP and not presented to the Application Layer. |
Use the Hard IP reconfiguration interface to obtain more information on the error. |
Unsupported request |
Transaction layer error which can be due to the completer being unable to fulfill the request. The TLP is deleted in the Hard IP block and not presented to the Application Layer. If the TLP is a non-posted request, the Hard IP block generates a completion with Unsupported Request status. |
Use the Hard IP reconfiguration interface to obtain more information on the error. |
ACS violation | Transaction layer error which can be due to access control error in the received posted or non-posted request. | Use the Hard IP reconfiguration interface to obtain more information on the error. |
Uncorrectable internal error | Transaction layer error which can be due to an internal error that cannot be corrected by the hardware. | Use the Hard IP reconfiguration interface and DBI registers to obtain more information on the error. |
Atomic egress blocked | Use the Hard IP reconfiguration interface to obtain more information on the error. | |
TLP prefix blocked | EP or RP only | Use the Hard IP reconfiguration interface to obtain more information on the error. |
Poisoned TLP egress blocked | EP or RP only | Use the Hard IP reconfiguration interface to obtain more information on the error. |
Use the debug tools mentioned in the next two sections for debugging link training issues observed on the PCI Express link when using the P-Tile Avalon® -MM IP for PCI Express.
6.1.2.1. Advanced Error Reporting (AER)
Each PCI Express compliant device must implement a basic level of error management and can optionally implement advanced error management. The PCI Express Advanced Error Reporting Capability is an optional Extended Capability that may be implemented by PCI Express device functions supporting advanced error control and reporting.
The P-Tile Avalon® -MM IP for PCI Express implements both basic and advanced error reporting. Error handling for a Root Port is more complex than that of an Endpoint. In this P-Tile Avalon® -MM IP for PCI Express, the AER capability is enabled by default.
Use the AER capability of the PCIe Hard IP to identify the type of error and the protocol stack layer in which the error may have occurred. Refer to the PCI Express Capability Structures section of the Configuration Space Registers appendix for the AER Extended Capability Structure and the associated registers.
6.1.2.2. Second-Level Debug Tools
Use the following debug tools for second-level debug of any issue observed on the PCI Express link when using P-Tile:
Using the Hard IP Reconfiguration Interface
- Refer to the section Hard IP Reconfiguration Interface for details on this interface and the address map.
Using the PHY Reconfiguration Interface
- Refer to the section PHY Reconfiguration Interface for details on this interface and the address map.
6.2. Debug Toolkit
6.2.1. Overview
The P-Tile Debug Toolkit is a System Console-based tool for P-Tile that provides real-time control, monitoring and debugging of the PCIe links at the Physical, Data Link and Transaction layers.
The P-Tile Debug Toolkit allows you to:
- View protocol and link status of the PCIe links per port.
- View PLL and per-channel status of the PCIe links per port.
- Control the channel analog settings.
- View the receiver eye and measure the eye height and width.
- Indicate the presence of a re-timer connected between the link partners.
The following figure provides an overview of the P-Tile Debug Toolkit in the P-Tile Avalon® -MM IP for PCI Express.
When you enable the P-Tile Debug Toolkit, the intel_pcie_ptile_avmm module of the generated IP includes the Debug Toolkit modules and related logic as shown in the figure above.
Drive the Debug Toolkit from a System Console. The System Console connects to the Debug Toolkit via an Native PHY Debug Master Endpoint (NPDME). Make this connection via an Intel FPGA Download Cable.
- The NPDME module
- PHY reconfiguration interface (xcvr_reconfig)
- Hard IP reconfiguration interface (hip_reconfig)
Provide a clock source (50 MHz - 125 MHz, 100 MHz recommended clock frequency) to drive the xcvr_reconfig_clk clock. Use the output of the Reset Release Intel FPGA IP to drive the ninit_done, which provides the reset signal to the NPDME module.
- set_location_assignment PIN_A31 -to p0_hip_reconfig_clk_clk
- set_location_assignment PIN_C23 -to xcvr_reconfig_clk_clk
6.2.2. Enabling the P-Tile Debug Toolkit
To enable the P-Tile Debug Toolkit in your design, enable the option Enable Debug Toolkit in the PCIe Configuration, Debug and Extension options tab of the Intel FPGA P-Tile Avalon® -MM IP for PCI Express.
When using bifurcated ports, you can enable the Debug Toolkit for each bifurcated port by enabling the option Enable Debug Toolkit on each of the bifurcated ports.
6.2.3. Launching the P-Tile Debug Toolkit
Use the design example you compiled by following the Quick Start Guide to familiarize yourself with the P-Tile Debug Toolkit. Follow the steps in the Generating the Design Example and Compiling the Design Example to generate the SRAM Object File, (.sof) for this design example.
To use the P-Tile Debug Toolkit, download the .sof to the Intel Development Kit. Then, open the System Console and load the design to the System Console as well. Loading the .sof to the System Console allows the System Console to communicate with the design using NPDME. NPDME is a JTAG-based Avalon-MM master. It drives Avalon-MM slave interfaces in the PCIe design. When using NPDME, the Intel Quartus Prime software inserts the debug interconnect fabric to connect with JTAG.
- Use the
Intel®
Quartus® Prime Programmer to
download the .sof to the Intel FPGA Development Kit.Note: To ensure correct operation, use the same version of the Intel® Quartus® Prime Programmer and Intel® Quartus® Prime Pro Edition software that you used to generate the .sof.
- To load the design into System Console:
- Launch the Intel® Quartus® Prime Pro Edition software.
- Start System Console by choosing Tools, then System Debugging Tools, then System Console.
- On the System Console File menu, select Load design and browse to the .sof file.
- Select the .sof and click OK. The .sof loads to the System Console.
- The System Console Toolkit Explorer window will list all the DUTs in the
design that have the P-Tile Debug Toolkit enabled.
- Select the DUT with the P-Tile Debug Toolkit you want to view. This
will open the Debug Toolkit instance of that DUT in the Details window.
- Click on the ptile_debug_toolkit_avmm to open that instance of the Toolkit. Once the
Debug Toolkit is initialized and loaded, you will see the following message in the
Messages window: “Initializing P-Tile debug toolkit – done”.
- A new window Main view will
open with a view of all the channels in that instance.
- Select the DUT with the P-Tile Debug Toolkit you want to view. This
will open the Debug Toolkit instance of that DUT in the Details window.
6.2.4. Using the P-Tile Debug Toolkit
The following sections describe the different tabs and features available in the Debug Toolkit.
A. Main View
The main view tab lists a summary of the transmitter and receiver settings per channel for the given instance of the PCIe IP.
Toolkit Channel | X16 Mode | 2X8 Mode | 4x4 Mode |
---|---|---|---|
Lane 0 | Lane 0 | Lane 0 | Lane 0 |
Lane 1 | Lane 1 | Lane 1 | Lane 1 |
Lane 2 | Lane 2 | Lane 2 | Lane 2 |
Lane 3 | Lane 3 | Lane 3 | Lane 3 |
Lane 4 | Lane 4 | Lane 4 | Lane 0 |
Lane 5 | Lane 5 | Lane 5 | Lane 1 |
Lane 6 | Lane 6 | Lane 6 | Lane 2 |
Lane 7 | Lane 7 | Lane 7 | Lane 3 |
Lane 8 | Lane 8 | Lane 0 | Lane 0 |
Lane 9 | Lane 9 | Lane 1 | Lane 1 |
Lane 10 | Lane 10 | Lane 2 | Lane 2 |
Lane 11 | Lane 11 | Lane 3 | Lane 3 |
Lane 12 | Lane 12 | Lane 4 | Lane 0 |
Lane 13 | Lane 13 | Lane 5 | Lane 1 |
Lane 14 | Lane 14 | Lane 6 | Lane 2 |
Lane 15 | Lane 15 | Lane 7 | Lane 3 |
B. Toolkit Parameters
The Toolkit parameters window has 2 sub-tabs.
B.1. P-Tile Information
This lists a summary of the P-Tile PCIe IP parameter settings in the PCIe IP Parameter Editor when the IP was generated, as read by the P-Tile Debug Toolkit when initialized.
When using bifurcated ports, you will see all the P-Tile information for each port for which the Debug Toolkit has been enabled.
All the information is read-only.
Use the Get P-tile Info button to read the settings.
Parameter | Values | Descriptions |
---|---|---|
Intel Vendor ID | 1172 | Indicates the Vendor ID as set in the IP Parameter Editor. |
Protocol | PCIe | Indicates the Protocol. |
HIP Type | Root Port, End Point | Indicates the Hard IP Port type. |
Intel IP Type | intel_pcie_ptile_ast, intel_pcie_ptile_avmm | Indicates the IP type used. |
Advertised speed | Gen3, Gen4 | Indicates the advertised speed as configured in the IP Parameter Editor. |
Advertised width | x16, x8, x4 | Indicates the advertised width as configured in the IP Parameter Editor. |
Negotiated speed | Gen3, Gen4 | Indicates the negotiated speed during link training. |
Negotiated width | x16, x8, x4 | Indicates the negotiated link width during link training. |
Link status | Link up, link down | Indicates if the link (DL) is up or not. |
Retimer 1 | Detected, not detected | Indicates if a retimer was detected between the Root Port and the Endpoint. |
Retimer 2 | Detected, not detected | Indicates if a retimer was detected between the Root Port and the Endpoint. |

B.2. PCIe Configuration Space
This lists a summary of the P-Tile PCIe configuration settings of the PCIe configuration space registers, as read by the P-Tile Debug Toolkit when initialized.
All the information is read-only.
Use the Read cfg space button to read the settings.

C. Channel Parameters
The channel parameters window allows you to monitor and control the transmitter and receiver settings for a given channel. It has the following 2 sub-windows.
C.1. TX Path
This tab allows you to monitor and control the transmitter settings for the channel selected. Use the TX Refresh button to read the settings, TX Apply Ch to apply the settings to the selected channel, and TX apply all to apply the settings to all channels.
Parameters | Values | Descriptions | |
---|---|---|---|
PHY Status | Refclk enable | Enable, Disable |
Indicates reference clock is enabled for the PHY. Enable: Reference clock is enabled for the PHY. Disable: Reference clock is disabled for the PHY. |
PHY reset | Normal, Reset |
Indicates the PHY is in reset mode. Normal: PHY is out of reset. Reset: PHY is in reset. |
|
TX Status | TX Lane enable | Enable, Disable |
Indicates if TX lane is enabled in the PHY. Enable: TX lane is enabled in the PHY. Disable: TX lane is disabled in the PHY. |
TX Data enable | Enable, Disable |
Indicates if TX driver is enabled and serial data is transmitted. Enable: TX driver for the corresponding lane is enabled. Disable: TX driver for the corresponding lane is disabled. |
|
TX Reset | Normal, Reset |
Indicates if TX (TX datapath, TX settings) is in reset or normal operating mode. Normal: TX is in normal operating mode. Reset: TX is in reset. |
|
TX PLL | TX PLL enable | Enable, Disable |
Indicates if the TX PLL is powered on or powered down. This is dependent on the PLL selected as indicated by TX PLL select. There is one set of PLLs per Quad. The TX path of each channel
reads out the PLL status corresponding to that Quad.
Enable: TX PLL is powered on. Disable: TX PLL is powered down. |
TX PLL select |
PLLA: Gen1/Gen2 PLLB: Gen3/Gen4 |
Indicates which PLL is selected. There is one set of PLLs per Quad. The TX path of each channel
reads out the PLL status corresponding to that Quad.
|
|
TX PLL lock | Green, Red |
Indicates if TX PLL is locked. This is dependent on the PLL selected as indicated by TX PLL select. There is one set of PLLs per Quad. The TX path of each channel
reads out the PLL status corresponding to that Quad.
Green: TX PLL is locked. Red: TX PLL is not locked. |
|
TX VOD | Iboost level |
Gen3: 15 Gen4: 15 |
Indicates the transmitter current boost level when the TX amplitude boost mode is enabled. |
Vboost en |
Gen3 Enable Gen4 Enable |
Indicates if the TX swing boost level is enabled. Enable: TX swing boost is enabled. Disable: TX swing boost is disabled. |
|
Vboost level |
Gen3: 5 Gen4: 5 |
Indicates the TX Vboost level. | |
TX Equalization | Pre-shoot coefficient |
Gen3: 20 (Preset 8) Gen4: 0 (Preset 0) |
Indicates transmitter driver output pre-emphasis (pre-shoot coefficient). |
Main coefficient |
Gen3: 30 (Preset 8) Gen4: 30 (Preset 0) |
Indicates transmitter driver output pre-emphasis (main coefficient). |
|
Post coefficient |
Gen3: 20 (Preset 8) Gen4: 40 (Preset 0) |
Indicates transmitter driver output pre-emphasis (post coefficient). |

C.1. RX Path
This tab allows you to monitor and control the receiver settings for the channel selected. Use the RX Refresh button to read the settings, RX Apply Ch to apply the settings to the selected channel, and RX apply all to apply the settings to all channels.
Parameters | Values | Descriptions | |
---|---|---|---|
RX Status | RX Lane enable | Enable, Disable |
Indicates if RX lane is enabled in the PHY. Enable: RX lane is enabled in the PHY. Disable: RX lane is disabled in the PHY. |
RX Data enable | Enable, Disable |
Indicates if RX driver is enabled and serial data is transmitted. Enable: RX driver for the corresponding lane is enabled. Disable: RX driver for the corresponding lane is disabled. |
|
RX Reset | Normal, Reset |
Indicates if RX (RX datapath, RX settings) is in reset or normal operating mode. Normal: RX is in normal operating mode. Reset: RX is in reset. |
|
RX LOS | <1,0> |
Indicates if the receiver has lost the signal. 1: Receiver loss of signal. 0: Receiver has a data signal. |
|
RX CDR | CDR Lock | Green, Red |
Indicates the CDR lock state. Green: CDR is locked. Red: CDR is not locked. |
CDR Mode | Locked to Reference (LTR), Locked to Data (LTD) |
Indicates the CDR lock mode. LTR: CDR is locked to reference clock. LTD: CDR is locked to data. |
|
RX Equalization | Adapt Mode |
Gen3: Gen3 adaptation mode. Gen4: Gen4 adaptation mode. |
Indicates the RX adaptation mode. |
Adapt Continuous |
Gen3: 1 Gen4: 1 |
Indicates if the receiver is in continuous adaptation.
|
|
RX ATT |
Gen3: 0 Gen4: 0 |
Indicates the RX equalization attenuation level. |
|
RX CTLE Boost |
Gen3: 12 Gen4: 16 |
Indicates the RX CTLE boost value. |
|
RX CTLE Pole |
Gen3: 2 Gen4: 2 |
Indicates the RX CTLE pole value. |
|
RX VGA1 |
Gen3: 5 Gen4: 5 |
Indicates the RX AFE first stage VGA gain value. |
|
RX VGA2 |
Gen3: 5 Gen4: 5 |
Indicates the RX AFE second stage VGA gain value. |
|
RX FOM | <0-255> |
Indicates the Receiver Figure of Merit (FOM) / quality of the received data eye. A higher value indicates better link equalization, with 8'd0 indicating the worst equalization setting and 8'd255 indicating the best equalization setting. |
|
DFE Enable | Enable, Disable |
Indicates DFE adaptation is enabled for taps 1 - 5. Enable: DFE adaptation is enabled for taps 1 - 5. Disable: DFE adaptation is disabled for taps 1 - 5. |
|
DFE Tap1 adapted value | <-128 to 127> |
Indicates the adapted value of DFE tap 1. This is a signed input (two's complement encoded). |
|
DFE Tap2 adapted value | <-32 to 31> |
Indicates the adapted value of DFE tap 2. This is a signed input (two's complement encoded). |
|
DFE Tap3 adapted value | <-32 to 31> |
Indicates the adapted value of DFE tap 3. This is a signed input (two's complement encoded). |
|
DFE Tap4 adapted value | <-32 to 31> |
Indicates the adapted value of DFE tap 4. This is a signed input (two's complement encoded). |
|
DFE Tap5 adapted value | <-32 to 31> |
Indicates the adapted value of DFE tap 5. This is a signed input (two's complement encoded). |

Eye Viewer
The P-Tile Debug Toolkit supports running eye tests for Intel devices with P-Tile. The Eye Viewer tool allows you to set up and run eye tests, monitoring bit errors.
- In the System Console Tools menu
option, click on Eye View Tool.Figure 43. Opening the Eye Viewer
- This will open a new tab Eye View
Tool next to the Main View tab. Choose
the instance and channel for which you want to run the eye view tests.Figure 44. Opening the Instance and Channel
- Choose the eye vertical step setting from the drop-down menu. The eye
view tool allows you to choose between vertical step sizes of 1, 2, 4, 8.Note: The time taken for the eye view tool to draw the eye varies with different vertical step sizes (8 results in a faster eye plot when compared to 1).Figure 45. Choosing the Step Size
- The messages window displays information messages to indicate the eye
view tool's progress.Figure 46. Eye View Tool Messages
- Once the eye plot is complete, the eye height, eye width and eye diagram
are displayed.Figure 47. Sample Eye Plot
6.2.5. Enabling the P-Tile Link Inspector
To enable the Link Inspector, enable the option Enable Debug Toolkit in the PCIe Configuration, Debug and Extension Options tab. The PCIe Link Inspector is enabled by default if Enable Debug Toolkit is enabled.

6.2.6. Using the P-Tile Link Inspector
The Link Inspector is found under the PCIe Link Inspector tab after opening the Debug Toolkit:

When the Dump LTSSM Sequence to Text File button is initially clicked, a text file (ltssm_sequence_dump_p*.txt) with the LTSSM information is created in the location from where the System Console window is opened. Depending on the PCIe topology, there can be up to four text files. Subsequent LTSSM sequence dumps will append to the respective files.


Each LTSSM monitor has a FIFO storing the time values and captured LTSSM states. The FIFO is written when there is a state transition. When you want to dump the LTSSM sequence, a single read of the FIFO status of the respective core is performed. Depending on the empty status and how many entries are in the FIFO, successive reads are executed.
7. Document Revision History
7.1. Document Revision History for the Intel FPGA P-Tile Avalon Memory-mapped IP for PCI Express User Guide
Document Version | Intel® Quartus® Prime Version | IP Version | Changes |
---|---|---|---|
2020.12.14 | 20.4 | 4.0.0 |
Added parameters to enable the independent resets for the x8x8 bifurcated mode to the Parameters chapter. Added a note to the Interface Clock Signals section to clarify that coreclkout_hip is an internal clock only, and the Application layer must use the p<n>_app_clk clock instead. Replaced all references to coreclkout_hip with p<n>_app_clk. |
2020.11.17 | 20.3 | 3.1.0 |
Removed the support for the Gen3 x4 256-bit and Gen4 x4 256-bit configurations from the IP Core and Design Example Support Levels section. This support may be available in a future release of Intel® Quartus® Prime. |
2020.10.05 | 20.3 | 3.1.0 |
Updated the app_clk frequencies in the Clock domains section. Added Root Port settings to the Avalon® -MM Settings section. |
2020.07.13 | 20.2 | 3.0.0 |
Added support for the Gen3 x8 Endpoint and Gen4 x8 Endpoint modes to the Features chapter. Updated the resource utilization numbers in the Resource Utilization chapter. Added description for the Link Inspector in the Debug Toolkit chapter. |
2020.06.22 | 20.2 | 3.0.0 |
Added the lane reversal and polarity inversion support to the Features section. Updated the bit ranges for the Next Capability Offset and Version fields in the Intel-Defined VSEC Capability Registers section. |
2020.04.29 | 20.1 | 2.0.0 |
Added clarification that VCS is the only simulator supported in the 20.1 release of Intel® Quartus® Prime. Also added that PIPE mode simulations are not supported in this release. Changed the operation mode names from DMA Mode with Data Movers to Endpoint Mode with Data Movers, and from Bursting Slave Mode to Endpoint Mode. |
2020.04.28 | 20.1 | 2.0.0 |
Updated the document title to Intel FPGA P-Tile Avalon® memory mapped IP for PCI Express User Guide to meet new legal naming guidelines. Updated the list of configurations supported in the Features section. Replaced the Configuration Slave Interface with the Control Register Access Interface. |
2019.12.16 | 19.4 | 1.1.0 |
Added parameters in Intel® Quartus® Prime to control PASID and LTR. Added MSI extended data support. |
2019.11.05 | 19.3 | 1.0.0 |
Added resource utilization numbers for the DMA design example in Intel® Stratix® 10 DX devices. Added the step to choose Intel® Stratix® 10 DX devices to the Generating the Design Example section. |
2019.10.28 | 19.3 | 1.0.0 | Removed a note containing a restriction on which normal descriptors cannot be interrupted by priority descriptors from the section Write Data Mover Avalon-ST Descriptor Sinks, because all normal descriptors being processed cannot be interrupted. |
2019.10.23 | 19.3 | 1.0.0 | Initial release. |
A. Configuration Space Registers
A.1. Configuration Space Registers
In addition to accessing the Endpoint's configuration space registers by sending Configuration Read/Write TLPs via the Avalon® -ST interface, the application logic can also gain read access to these registers via the Configuration Output Interface (tl_cfg*). Furthermore, the Hard IP Reconfiguration Interface (a User Avalon® -MM interface) also provides read/write access to these registers.
For signal timings on the User Avalon® -MM interface, refer to the Avalon® Interface Specifications document.
The table PCIe Configuration Space Registers describes the registers for each PF. To calculate the address for a particular register in a particular PF, add the offset for that PF from the table Configuration Space Offsets to the byte address for that register as given in the table PCIe Configuration Space Registers.
Registers | User Avalon® -MM Offsets |
---|---|
Physical function 0 | 0x00000 |
Physical function 1 | 0x10000 |
Physical function 2 | 0x20000 |
Physical function 3 | 0x30000 |
Physical function 4 | 0x40000 |
Physical function 5 | 0x50000 |
Physical function 6 | 0x60000 |
Physical function 7 | 0x70000 |
Port Configuration and Status Register | 0x104000 |
Debug (DBI) Register | 0x104200, 0x104204 |
Byte Address | Hard IP Configuration Space Register | Corresponding Section in PCIe Specification |
---|---|---|
x16 (Port 0) = 0x000 : 0x03C x8 (Port 1) = 0x000 : 0x03C x4 (Ports 2,3) = 0x000 : 0x03C |
PCI Header Type 0/1 Configuration Registers | Type 0/1 Configuration Space Header |
x16 (Port 0) = 0x040 : 0x044 x8 (Port 1) = 0x040 : 0x044 x4 (Ports 2,3) = 0x040 : 0x044 |
Power Management | PCI Power Management Capability Structure |
x16 (Port 0) = 0x050 : 0x064 x8 (Port 1) = 0x050 : 0x064 x4 (Ports 2,3) = 0x050 : 0x064 |
MSI Capability |
MSI Capability Structure, see also PCI Local Bus Specification |
x16 (Port 0) = 0x070 : 0x0A8 x8 (Port 1) = 0x070 : 0x0A8 x4 (Ports 2,3) = 0x070 : 0x0A8 |
PCI Express Capability | PCI Express Capability Structure |
x16 (Port 0) = 0x0B0 : 0x0B9 x8 (Port 1) = 0x0B0 : 0x0B9 x4 (Ports 2,3) = 0x0B0 : 0x0B9 |
MSI-X Capability | MSI-X Capability Structure, see also PCI Local Bus Specification |
x16 (Port 0) = 0x0BC : 0x0FC x8 (Port 1) = 0x0BC : 0x0FC x4 (Ports 2,3) = 0x0BC : 0x0FC |
Reserved | N/A |
x16 (Port 0) = 0x100 : 0x144 x8 (Port 1) = 0x100 : 0x144 x4 (Ports 2,3) = 0x100 : 0x144 |
Advanced Error Reporting (AER) | Advanced Error Reporting Capability Structure |
x16 (Port 0) = 0x148 : 0x164 x8 (Port 1) = 0x148 : 0x164 x4 (Ports 2,3) = 0x148 : 0x164 |
Virtual Channel Capability | Virtual Channel Capability Structure |
x16 (Port 0) = 0x178 : 0x17C x8 (Port 1) = 0x178 : 0x17C x4 (Ports 2,3) = N/A |
Alternative Routing-ID Implementation (ARI) | ARI Capability Structure |
x16 (Port 0) = 0x188 : 0x1B4 x8 (Port 1) = 0x188 : 0x1A4 x4 (Ports 2,3) = 0x188 : 0x1A4 |
Secondary PCI Express Extended Capability Header |
PCI Express Extended Capability |
x16 (Port 0) = 0x1B8 : 0x1E4 x8 (Port 1) = 0x1A8 : 0x1CC x4 (Ports 2,3) = 0x1A8 : 0x1C8 |
Physical Layer 16.0 GT/s Extended Capability | Physical Layer 16.0 GT/s Extended Capability Structure |
x16 (Port 0) = 0x1E8 : 0x22C x8 (Port 1) = 0x1D0 : 0x1F4 x4 (Ports 2,3) = 0x1CC : 0x1E0 |
Margining Extended Capability | Margining Extended Capability Structure |
x16 (Port 0) = 0x230 : 0x26C x8 (Port 1) = 0x1F8 : 0x234 x4 (Ports 2,3) = N/A |
SR-IOV Capability | SR-IOV Capability Structure |
x16 (Port 0) = 0x270 : 0x2F8 x8 (Port 1) = 0x238 : 0x2C0 x4 (Ports 2,3) = 0x1E4 : 0x26C |
TLP Processing Hints (TPH) Capability | TLP Processing Hints (TPH) Capability Structure |
x16 (Port 0) = 0x2FC : 0x300 x8 (Port 1) = 0x2C4 : 0x2C8 x4 (Ports 2,3) = N/A |
Address Translation Services (ATS) Capability | Address Translation Services Extended Capability (ATS) in Single Root I/O Virtualization and Sharing Specification |
x16 (Port 0) = 0x30C : 0x314 x8 (Port 1) = 0x2D4 : 0x2DC x4 (Ports 2,3) = 0x280 : 0x288 |
Access Control Services (ACS) Capability | Access Control Services (ACS) Capability |
x16 (Port 0) = 0x318 : 0x324 x8 (Port 1) = 0x2E0 : 0x2EC x4 (Ports 2,3) = N/A |
Page Request Services (PRS) Capability | Page Request Services (PRS) Capability |
x16 (Port 0) = 0x328 : 0x32C x8 (Port 1) = 0x2F0 : 0x2F4 x4 (Ports 2,3) = N/A |
Latency Tolerance Reporting (LTR) Capability | Latency Tolerance Reporting (LTR) Capability |
x16 (Port 0) = 0x330 : 0x334 x8 (Port 1) = 0x2F8 : 0x2FC x4 (Ports 2,3) = N/A |
Process Address Space (PASID) Capability | Process Address Space (PASID) Capability Structure |
x16 (Port 0) = 0x338 : 0x434 x8 (Port 1) = 0x300 : 0x3FC x4 (Ports 2,3) = 0x2AC : 0x3A8 |
RAS D.E.S. Capability (VSEC) | |
x16 (Port 0) = 0x470 : 0x478 x8 (Port 1) = 0x438 : 0x440 x4 (Ports 2,3) = 0x3E4 : 0x3EC |
Data Link Feature Extended Capability | |
x16 (Port 0) = 0xD00 : 0xD58 x8 (Port 1) = 0xD00 : 0xD58 x4 (Ports 2,3) = 0xD00 : 0xD58 |
Intel-defined VSEC |
A.1.1. Register Access Definitions
This document uses the following abbreviations when describing register accesses.
Abbreviation | Meaning |
---|---|
RW | Read and write access |
RO | Read only |
WO | Write only |
RW1C | Read write 1 to clear |
RW1CS | Read write 1 to clear sticky |
RWS | Read write sticky |
A.1.2. PCIe Configuration Header Registers
The Corresponding Section in PCIe Specification column in the tables in the Configuration Space Registers section lists the appropriate sections of the PCI Express Base Specification that describe these registers.
A.1.3. PCI Express Capability Structures
A.1.4. Physical Layer 16.0 GT/s Extended Capability Structure

A.1.5. MSI-X Registers
Bit Location | Description | Access | Default Value |
---|---|---|---|
31 |
MSI-X Enable: This bit must be set to enable the MSI-X interrupt generation. |
RW | 0 |
30 |
MSI-X Function Mask: This bit can be set to mask all MSI-X interrupts from this function. |
RW | 0 |
29:27 | Reserved | RO | 0 |
26:16 |
Size of the MSI-X table (number of MSI-X interrupt vectors). The value in this field is one less than the size of the table set up for this function. Maximum value is 0x7FF (2048 interrupt vectors). This field is shared among all VFs attached to one PF. |
RO | Programmed via the programming interface. |
15:8 | Next Capability Pointer Points to the PCI Express Capability. | RO | Programmed via the programming interface. |
7:0 | Capability ID assigned by PCI-SIG. | RO | 0x11 |
Bit Location | Description | Access | Default Value |
---|---|---|---|
2:0 |
BAR Indicator Register: Specifies the BAR corresponding to the memory address range where the MSI-X table of this function is located (000 = VF BAR0, 001 = VF BAR1, …, 101 = VF BAR5). This field is shared among all VFs attached to one PF. |
RO | Programmed via the programming interface. |
31:3 |
Offset of the memory address where the MSI-X table is located, relative to the specified BAR. The address is extended by appending three zeroes to make it Qword aligned. This field is shared among all VFs attached to one PF. |
RO | Programmed via the programming interface. |
Bit Location | Description | Access | Default Value |
---|---|---|---|
2:0 |
BAR Indicator Register: Specifies the BAR corresponding to the memory address range where the Pending Bit Array of this function is located (000 = VF BAR0, 001 = VF BAR1, …, 101 = VF BAR5). This field is shared among all VFs attached to one PF. |
RO | Programmed via the programming interface. |
31:3 |
Offset of the memory address where the Pending Bit Array is located, relative to the specified BAR. The address is extended by appending three zeroes to make it Qword aligned. This field is shared among all VFs attached to one PF. |
RO | Programmed via the programming interface. |
A.2. Intel-Defined VSEC Capability Registers
31 : 20 | 19 : 16 | 15 : 8 | 7 : 0 | PCIe Byte Offset |
---|---|---|---|---|
Next Cap Offset | Version | PCI Express* Extended Capability ID | 00h | |
VSEC Length | VSEC Rev | VSEC ID | 04h | |
Intel Marker | 08h | |||
JTAG Silicon ID DW0 | 0Ch | |||
JTAG Silicon ID DW1 | 10h | |||
JTAG Silicon ID DW2 | 14h | |||
JTAG Silicon ID DW3 | 18h | |||
CvP Status | User Configurable Device/Board ID | 1Ch | ||
CvP Mode Control | 20h | |||
CvP Data 2 | 24h | |||
CvP Data | 28h | |||
CvP Programming Control | 2Ch | |||
General Purpose Control and Status | 30h | |||
Uncorrectable Internal Error Status Register | 34h | |||
Uncorrectable Internal Error Mask Register | 38h | |||
Correctable Error Status Register | 3Ch | |||
Correctable Error Mask Register | 40h | |||
SSM IRQ Request & Status | 44h | |||
SSM IRQ Result Code 1 Shadow | 48h | |||
SSM IRQ Result Code 2 Shadow | 4Ch | |||
SSM Mailbox | 50h | |||
SSM Credit 0 Shadow | 54h | |||
SSM Credit 1 Shadow | 58h |
A.2.1. Intel-Defined VSEC Capability Header (Offset 00h)
Bits | Register Description | Default Value | Access |
---|---|---|---|
[31:20] |
Next Capability Pointer. Value is the starting address of the next Capability Structure implemented, if any. Otherwise, NULL. Refer to the Configuration Address Map. |
Variable | RO |
[19:16] |
Capability Version. PCIe specification-defined value for VSEC Capability Version. |
0x1 | RO |
[15:0] |
Extended Capability ID. PCIe specification-defined value for VSEC Extended Capability ID. |
0x000B | RO |
A.2.2. Intel-Defined Vendor Specific Header (Offset 04h)
Bits | Register Description | Default Value | Access |
---|---|---|---|
[31:20] | VSEC Length. Total length of this structure in bytes. | 0x5C | RO |
[19:16] | VSEC Rev. User configurable VSEC revision. | k_vsec_rev_i | RO |
[15:0] |
VSEC ID. User configurable VSEC ID. The default value is 0x1172 (the Intel Vendor ID), but you can change this ID to your own Vendor ID. |
0x1172 | RO |
A.2.3. Intel Marker (Offset 08h)
Bits | Register Description | Default Value | Access |
---|---|---|---|
[31:0] | Intel Marker - An additional marker for standard Intel programming software to be able to verify that this is the right structure. | 0x41721172 | RO |
A.2.4. JTAG Silicon ID (Offset 0x0C - 0x18)
This read-only register returns the JTAG Silicon ID. Intel programming software uses this JTAG ID to ensure that is is using the correct SRM Object File (*.sof).
These registers are only good for Port 0 ( PCIe* Gen4 x16). They are blocked for the other Ports.
Bits | Register Description | Default Value6 | Access |
---|---|---|---|
[127:96] | JTAG Silicon ID DW3 | Unique ID | RO |
[95:64] | JTAG Silicon ID DW2 | Unique ID | RO |
[63:32] | JTAG Silicon ID DW1 | Unique ID | RO |
[31:0] | JTAG Silicon ID DW0 | Unique ID | RO |
A.2.5. User Configurable Device and Board ID (Offset 0x1C - 0x1D)
This register provides a user configurable device or board ID so that the user software can determine which .sof file to load into the device.
This register is only available for Port 0 ( PCIe* Gen4 x16). It is blocked for the other Ports.
Bits | Register Description | Default Value | Access |
---|---|---|---|
[15:0] | This register allows you to specify the ID of the .sof file to be loaded. |
From configuration bits |
RO |
A.2.6. General Purpose Control and Status Register (Offset 0x30)
This register provides up to eight I/O pins each for Application Layer Control and Status requirements. This feature supports Partial Reconfiguration of the FPGA fabric. Partial Reconfiguration only requires one input pin and one output pin. The other seven I/Os make this interface extensible.
Bits | Register Description | Default Value | Access |
---|---|---|---|
[31:16] | Reserved. | N/A | RO |
[15:8] | General Purpose Status. The Application Layer can read these status bits. These bits are only available for Port 0 ( PCIe* Gen4 x16). They are blocked for the other Ports. | 0x00 | RO |
[7:0] | General Purpose Control. The Application Layer can write these control bits. These bits are only available for Port 0 ( PCIe* Gen4 x16). They are blocked for the other Ports. | 0x00 | RW |
A.2.7. Uncorrectable Internal Error Status Register (Offset 0x34)
This register reports the status of the internally checked errors that are uncorrectable. When these specific errors are enabled by the Uncorrectable Internal Error Mask register, they are forwarded as Uncorrectable Internal Errors.
Bits | Register Description | Default Value | Access |
---|---|---|---|
[31:13] | Reserved | 0x0 | RO |
[12] | Debug Bus Interface (DBI) access error status from Config RAM block. | 0x0 | RW1CS |
[11] | Uncorrectable ECC error from Config RAM block. | 0x0 | RW1C |
[10:9] | Reserved | 0x0 | RO |
[8] | RX Transaction Layer parity error reported by the IP core. | 0x0 | RW1CS |
[7] | TX Transaction Layer parity error reported by the IP core. | 0x0 | RW1CS |
[6] |
Uncorrectable Internal Error reported by the FPGA. |
0x0 | RW1CS |
[5] | cvp_config_error_latched: Configuration error detected in CvP mode is reported as an uncorrectable error. Set whenever ssm_cvp_config_error of the SSM Scratch CvP Status register bit[1] rises in CvP mode. This bit is only available for Port 0 ( PCIe* Gen4 x16), but not for the other Ports. | 0x0 | RW1CS |
[4:0] | Reserved | 0x0 | RO |
A.2.8. Uncorrectable Internal Error Mask Register (Offset 0x38)
This register controls which errors are forwarded as internal uncorrectable errors.
Bits | Register Description | Default Value | Access |
---|---|---|---|
[31:13] | Reserved | 0x0 | RO |
[12] | Mask for Debug Bus Interface (DBI) access error. | 0x1 | RWS |
[11] | Mask for Uncorrectable ECC error from Config RAM block. | 0x1 | RWS |
[10:9] | Reserved | 0x0 | RO |
[8] | Mask for RX Transaction Layer parity error reported by the IP core. | 0x1 | RWS |
[7] | Mask for TX Transaction Layer parity error reported by the IP core. | 0x1 | RWS |
[6] | Mask for Uncorrectable Internal error reported by the FPGA. | 0x1 | RWS |
[5] | Mask for Configuration Error detected in CvP mode. This bit is only available for Port 0 ( PCIe* Gen4 x16), but not for the other Ports. | 0x0 | RWS |
[4:0] | Reserved | 0x0 | RO |
A.2.9. Correctable Internal Error Status Register (Offset 0x3C)
The Correctable Internal Error Status register reports the status of the internally checked errors that are correctable. When these specific errors are enabled by the Correctable Internal Error Mask register, they are forwarded as correctable internal errors. This register is for debug only. Only use this register to observe behavior, not to drive custom logic
Bits | Register Description | Default Value | Access |
---|---|---|---|
[31:12] | Reserved | 0x0 | RO |
[11] | Correctable ECC error status from Config RAM. | 0x0 | RW1CS |
[10:7] | Reserved | 0x0 | RO |
[6] | Correctable Internal Error reported by the FPGA. | 0x0 | RW1CS |
[5] | cvp_config_error_latched: Configuration error detected in CvP mode (to be reported as correctable) - Set whenever cvp_config_error rises while in CvP mode. This bit is only available for Port 0 ( PCIe* Gen4 x16), but not for the other Ports. | 0x0 | RW1CS |
[4:0] | Reserved | 0x0 | RO |
A.2.10. Correctable Internal Error Mask Register (Offset 0x40)
This register controls which errors are forwarded as internal correctable errors.
Bits | Register Description | Default Value | Access |
---|---|---|---|
[31:12] | Reserved | 0x0 | RO |
[11] | Mask for Correctable ECC error status for Config RAM. | 0x1 | RWS |
[10:7] | Reserved | 0x0 | RWS |
[6] | Mask for Correctable Internal Error reported by the FPGA. | 0x1 | RWS |
[5] | Mask for Configuration Error detected in CvP mode. This bit is only available for Port 0 ( PCIe* Gen4 x16), but not for the other Ports. | 0x1 | RWS |
[4] | Reserved | 0x1 | RWS |
[3:0] | Reserved | 0x0 | RWS |