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

ID 683038
Date 4/04/2024
Public
Document Table of Contents

2.6.3. Running the Performance Design Example

  1. Navigate to ./software/user/example under the design example directory.
  2. Compile the design example application:

    $ make

  3. Run the test:

    $ sudo ./intel_fpga_pcie_link_test

    You can run the Intel FPGA IP PCIe link test in manual or automatic mode. Choose from:
    • In automatic mode, the application automatically selects the device. The test selects the Intel PCIe device with the lowest BDF by matching the Vendor ID. The test also selects the lowest available BAR.
    • In manual mode, the test queries you for the bus, device, and function number and BAR.

    For the Stratix® 10 DX or Agilex™ 7 Development Kit, you can determine the BDF by typing the following command:

    $ lspci -d 1172:

  4. Here are sample transcripts for automatic and manual modes:

    Automatic mode:

    Manual mode:

  5. To perform the DMA for throughput test, enter option "9" and press the Enter key to proceed.
  6. Enter the number of DMA iterations to be carried out and then press the Enter key to select the type of DMA operation: “0” for write operation (device to host), “1” for read operation (host to device) and “2” for simultaneous write and read operations.
  7. Enter the number of the corresponding payload size to perform DMA operations with the selected payload size. Enter option "1" for 16B, "2" for 32B, "3" for 64B, "4" for 128B, "5" for 256B and "6" for 512B.
  8. Here are sample test results for write only, read only and simultaneous write and read for 10 iterations respectively.
    Write only:
             ********************************************************
               0: Link test - 100 writes and reads
               1: Write memory space
               2: Read memory space
               3: Write configuration space
               4: Read configuration space
               5: Change BAR for PIO
               6: Change device
               7: Enable SRIOV
               8: Do a link test for every enabled virtual function
                  belonging to the current device
               9: Perform DMA for Throughput
              10: Quit program
             *********************************************************
             > 9
             Enter number of loop (between 1 - 1000; 1 second per loop):
             > 10
             Enter type of operation (0 for write, 1 for read and 2 for 
             simultaneous write and read):
             > 0
             Choose payload size:
             1. 16B
             2. 32B
             3. 64B
             4. 128B
             5. 256B
             6. 512B
             > 6
             DMA WRITE only (MemWr)
             *********************************************************
             PERF WRITE GB/s:     29.9683
             PERF WRITE GB/s:     29.9683
             PERF WRITE GB/s:     29.9788
             PERF WRITE GB/s:     29.9788
             PERF WRITE GB/s:     29.9683
             PERF WRITE GB/s:     29.9788
             PERF WRITE GB/s:     29.9788
             PERF WRITE GB/s:     29.9683
             PERF WRITE GB/s:     29.9683
             PERF WRITE GB/s:     29.9788
    Read only:
             ********************************************************
               0: Link test - 100 writes and reads
               1: Write memory space
               2: Read memory space
               3: Write configuration space
               4: Read configuration space
               5: Change BAR for PIO
               6: Change device
               7: Enable SRIOV
               8: Do a link test for every enabled virtual function
                  belonging to the current device
               9: Perform DMA for Throughput
              10: Quit program
             *********************************************************
             > 9
             Enter number of loop (between 1 - 1000; 1 second per loop):
             > 10
             Enter type of operation (0 for write, 1 for read and 2 for 
             simultaneous write and read):
             > 1
             Choose payload size:
             1. 16B
             2. 32B
             3. 64B
             4. 128B
             5. 256B
             6. 512B
             > 6
             DMA READ only (MemRd)
             *********************************************************
             PERF READ GB/s:     29.1085
             PERF READ GB/s:     29.1085
             PERF READ GB/s:     29.1399
             PERF READ GB/s:     29.1294
             PERF READ GB/s:     29.1294
             PERF READ GB/s:     29.1294
             PERF READ GB/s:     29.1294
             PERF READ GB/s:     29.1294
             PERF READ GB/s:     29.1294
             PERF READ GB/s:     29.1294
    Simultaneous write and read:
             ********************************************************
               0: Link test - 100 writes and reads
               1: Write memory space
               2: Read memory space
               3: Write configuration space
               4: Read configuration space
               5: Change BAR for PIO
               6: Change device
               7: Enable SRIOV
               8: Do a link test for every enabled virtual function
                  belonging to the current device
               9: Perform DMA for Throughput
              10: Quit program
             *********************************************************
             > 9
             Enter number of loop (between 1 - 1000; 1 second per loop):
             > 10
             Enter type of operation (0 for write, 1 for read and 2 for 
             simultaneous write and read):
             > 2
             Choose payload size:
             1. 16B
             2. 32B
             3. 64B
             4. 128B
             5. 256B
             6. 512B
             > 6
             DMA READ & WRITE
             *********************************************************
             PERF WRITE GB/s:     26.6233
             PERF READ GB/s:     28.1333
             PERF WRITE GB/s:     26.6233
             PERF READ GB/s:     28.1438
             PERF WRITE GB/s:     26.6233
             PERF READ GB/s:     28.1438
             PERF WRITE GB/s:     26.6233
             PERF READ GB/s:     28.1333
             PERF WRITE GB/s:     26.6129
             PERF READ GB/s:     28.1438
             PERF WRITE GB/s:     26.6129
             PERF READ GB/s:     28.1333
             PERF WRITE GB/s:     26.6129
             PERF READ GB/s:     28.1438
             PERF WRITE GB/s:     26.6233
             PERF READ GB/s:     28.1228
             PERF WRITE GB/s:     26.6233
             PERF READ GB/s:     28.1333
             PERF WRITE GB/s:     26.6129
             PERF READ GB/s:     28.1333