R-Tile Avalon® Streaming Intel® FPGA IP for PCI Express* Design Example User Guide

ID 683544
Date 11/05/2024
Public
Document Table of Contents

1.2.1. Functional Description for the Programmed Input/Output (PIO) Design Example

The Programmed Input/Output (PIO) design example performs memory transfers from a host processor to a target device. In this design example, the host processor performs Memory Read (MemRd) and Memory Write (MemWr) Transaction Layer Packets (TLPs). Note that this design example does not support back-to-back transactions from the host processor since the design is intended to showcase single-dword transactions.

The PIO design example automatically creates the files necessary to simulate and compile in the Quartus® Prime software. The design example covers a wide range of parameters. However, it does not cover all possible parameterizations of the R-Tile Hard IP for PCIe.

This design example supports the following configurations:

Table 3.  Configurations Supported by the PIO Design ExampleSupport level keys: S = simulation, C = compilation, T = timing, H = hardware, N/A = configuration not supported.
Port Mode Link Width Link Speed Data Width (Bits) Design Example Support Simulators Supported
Endpoint x16 Gen5 1024 (4 x 256) SCTH Siemens EDA QuestaSim* , QuestaFE, VCS* , VCS* MX, Xcelium* 3
Gen4 1024 (4 x 256) CTH N/A
512 (2 x 256) N/A N/A
Gen3 1024 (4 x 256) CTH N/A
512 (2 x 256) N/A N/A
x8 Gen5 512 (2 x 256) SCTH Siemens EDA QuestaSim* , VCS* , VCS* MX, Xcelium* 3
Gen4 512 (2 x 256) CTH N/A
256 (1 x 256) N/A N/A
Gen3 512 (2 x 256) CTH N/A
256 (1 x 256) N/A N/A
x4 Gen5 256 (2 x 128) N/A N/A
Gen4 256 (2 x 128) N/A N/A
128 (1 x 128) N/A N/A
Gen3 256 (2 x 128) N/A N/A
128 (1 x 128) N/A N/A
Root Port N/A N/A N/A N/A N/A
TL Bypass N/A N/A N/A N/A N/A
PIPE Direct

(PIPE-D)

N/A N/A N/A N/A N/A
Note: In the 24.3 release of Quartus® Prime, this design example only supports the default settings in the Parameter Editor of the R-Tile Avalon® Streaming Intel FPGA IP for PCIe.
Note: This design example supports payload sizes of up to 388 Bytes only.
This design example includes the following components:
  • The generated R-Tile Avalon® Streaming (Avalon-ST) Hard IP Endpoint variant (DUT) with the parameters you specified. This component drives TLP data received to the PIO application. It translates the PCIe serial data received from the link to the Avalon® -ST data format.
  • The PIO Application (APPS) component, which performs the necessary translation between the PCI Express TLPs and simple Avalon® Memory-mapped ( Avalon® -MM) writes and reads to the on-chip memory.
    Note: The current APPS component supports only single-cycle data transfers. Data transfers longer than one clock cycle are not supported.
  • An on-chip memory (MEM) component (one 32 KB memory for the x16 design example, and two 32 KB memories for the 2x8 design example).
  • Reset Release IP: This IP holds the control circuit in reset until the device has fully entered user mode. The FPGA asserts the nINIT_DONE output to signal that the device is in user mode. The nINIT_DONE signal is high until the entire device enters user mode. After nINIT_DONE deasserts (low), all logic is in user mode and operates normally.

The Gen5 x16 design example instantiates a PIO component with a 1024-bit data path to interface with the 1024-bit DUT. The clock comes from the coreclkout_hip output of the IP and runs at 500 MHz. Also, the design example instantiates only one MEM device as shown in the figure below.

Figure 1. Gen5 1x16 Design Example Block Diagram

The Gen5 2x8 design example instantiates two PIO components with 512-bit data paths to interface with the 2x512-bit DUT. The clock comes from the coreclkout_hip output of the IP and runs at 500 MHz. Also, the design example instantiates two MEM devices as shown in the figure below.

Figure 2. Gen5 2x8 Design Example Block Diagram

For simulation purposes, this design example also generates a testbench that instantiates the PIO design example and a Root Port BFM to interface with the target Endpoint.

Note: The simulation testbench for the PCIe 2x8 PIO design example has a single PCIe x8 link although the actual design implements two PCIe x8 links.
Figure 3. Block Diagram for the Platform Designer PIO Design Example Simulation Testbench

The test program writes to and reads back data from the same location in the on-chip memory. It compares the data read to the expected result. The test reports, "Simulation stopped due to successful completion" if no errors occur.

Figure 4.  Platform Designer System Contents for the R-Tile Avalon® -ST PCI Express Gen5 1x16 PIO Design Example
Figure 5.  Platform Designer System Contents for the R-Tile Avalon® -ST PCI Express Gen5 2x8 PIO Design Example
3 Xcelium* simulator support is only available in devices with the following OPN numbers: AGIx027R29AxxxxR3, AGIx027R29AxxxxR2, AGIx027R29BxxxxR3, AGIx023R18AxxxxR0, AGIx041R29DxxxxR0, AGIx041R29DxxxxR1, AGMx039R47AxxR0. For more details on OPN decoding, refer to the Agilex™ 7 FPGAs and SoCs Device Overview.