GTS AXI Streaming Intel® FPGA IP for PCI Express* Design Example User Guide

ID 817713
Date 4/07/2025
Public
Document Table of Contents

1.4. Performance Design Example Functional Description

  1. GTS AXI Streaming IP for PCI Express* (DUT): This IP is required to incorporate PCI Express* ( PCIe* ) into your design utilizing Altera's advanced PCIe* hardened protocol stack, which encompasses transaction, data link, and physical layers. This component interacts with the root complex/switch at the other end of the PCIe* link and translates the data from the PCIe* link into AXI Stream interface format and vice versa.
  2. Performance Design Example for GTS AXI Streaming IP (perf0): This design example component generates the requested data traffic for throughput measurement. It consists of the following sub-modules:
    1. The AXI_AVST_Interface Adapter converts the single segment 256-bit AXI Transaction Layer Packet (TLP) received from GTS AXI Streaming IP to 512-bit single segment Avalon® -ST TLP. After the conversion, it diverts the TLP to the pioperf_rx_intf or to return CplD tag to the DMA Read in the DMA Top depending on the type of TLP received. The pioperf_rx_diverter module diverts memory write or memory read TLPs from the host and completion TLPs to their respective destinations for further processing.
    2. The pioperf_rx_intf (RX Interface) is a block between the pioperf_rx_diverter and the control register in DMA Top. It decodes the TLP headers and data from the upstream module. It also extracts the information needed to construct the TLP header of the completion data such as the requester ID, tag, attribute, tc and byte count and then passes this to the TX Interface for further processing.
    3. The pioperf_tx_intf (TX Interface) consists of the pioperf_tx_arbiter and the pioperf_tx_slave. It converts the requests from the pioperf_rx_intf and pioperf_dma_top modules into TLPs and sends them to the DUT. The TLPs are transmitted in a simplified weighted round-robin manner with the following priority scheme: completion TLP > memory read TLP > memory write TLP.
    4. The altpcied_512_256_tx_adapter converts the TX Interface output in 512-bit two segments Avalon® -ST format to 256-bit single segment AXI Stream format.
    5. The avst_to_axi_converter converts the Avalon® streaming interface to the AXI Stream interface.
    6. The pioperf_dma_top (DMA Top) module generates memory write and memory read requests and passes them to the pioperf_tx_intf module based on the information in the control register. Every memory read request is tagged to expecting the completion data before timeout to ensure data completeness. The release of memory write and memory read TLPs builds up the traffic at the TX and RX interfaces of the PCIe* link. A throughput counter is included to analyze the overall throughput of the system.
    7. TX Credit Initialization: The back pressure mechanism by the perf0 is done through the credit system. Therefore, the credit value must be declared during the credit initialization stage. An initial TX credit value is captured and is deducted for any TLP sent to the DUT. When the credit reaches zero, the DUT ceases to send further TLP until the credit is returned by the DUT. This block interfaces with the credit signals from the DUT and focuses on initializing and return of the TX credit. For the TX direction, only crdt_init_ack is asserted in the block to complete the initialization stage. The perf0 captures the TX credit during the initialization stage which is initiated by the DUT.
    8. Soft Reset Controller: This module handles the reset and handshake signals of the GTS AXI Streaming IP for graceful entry and exit for each of the resets (cold, warm, etc.) especially when initiated by the host system.
  3. GTS System PLL Clocks Intel® FPGA IP: This IP is required for PCIe* interface implementation on Agilex™ 3 and Agilex™ 5 devices to configure the reference clock for the System PLL. The reference clock to the System PLL must adhere to the following requirements:
    • If compliance with PCIe* link training timing specifications is required, the reference clock to the System PLL must be available and stable before device configuration begins. The reference clock should be derived from an independent and free-running clock source.
    • Alternatively, if the reference clock from the PCIe* link is guaranteed to be available before device configuration begins, you can use it to drive the System PLL. Once the PCIe* link reference clock is running, it can never be allowed to go down.
      Note: For more information, refer to the Implementing the Implementing the GTS System PLL Clocks Intel® FPGA IP section in the GTS Transceiver PHY User Guide.

      Once the reference clock for the System PLL is up, it must be stable and present throughout the device operation and must not go down. If you are not able to adhere to this requirement, you must reconfigure the device.

  4. GTS Reset Sequencer Intel® FPGA IP: This IP must be instantiated for each device side that uses transceivers. Based on your design, you must instantiate one or two instances of the IP.
    • One GTS Reset Sequencer Intel® FPGA IP instance if your design uses transceivers on one side of the device.
    • Two GTS Reset Sequencer Intel® FPGA IP instances if your design uses transceivers on both sides of the device.
    Note: For more information, refer to the Implementing the GTS Reset Sequencer Intel® FPGA IP section in the GTS Transceiver PHY User Guide.
  5. Reset Release Intel® FPGA IP: This IP holds a control circuit in reset until the device has fully entered user mode. The FPGA asserts the INIT_DONE output to signal that the device is in user mode. The Reset Release IP generates an inverted version of the internal INIT_DONE signal to create the nINIT_DONE output that you can use for your design. The nINIT_DONE signal is high until the entire device enters user mode. After nINIT_DONE asserts (low), all logic is in user mode and the device operates normally. You can use the nINIT_DONE signal in one of the following ways:
    • To gate an external or internal reset.
    • To gate the reset input to I/O PLLs.
    • To gate the write enable of your design blocks such as embedded memory blocks, state machines, and shift registers.
    • To synchronously drive the register reset input ports in your design.
    Note: For more information about the Reset Release Intel® FPGA IP, refer to the Device Configuration User Guide: Agilex 5 FPGAs and SoCs.
Figure 6.  Platform Designer System Contents for the GTS AXI Streaming IP Performance Design Example