GTS AXI Multichannel DMA IP for PCI Express* User Guide
ID
847470
Date
8/25/2025
Public
1. Overview
2. Quick Start Guide
3. Configuring and Generating the GTS AXI Multichannel DMA IP for PCI Express
4. Integrating the IP With Your Application
5. Simulating the IP
6. Validating the IP
7. Known Issues
A. Functional Description
B. Software Programming Model
C. Registers
D. Document Revision History for the GTS AXI Multichannel DMA IP for PCI Express*
2.1.1. Downloading and Installing Quartus® Prime Software
2.1.2. Configuring and Generating the GTS AXI Multichannel DMA IP for PCI Express
2.1.3. Configuring and Generating the GTS AXI Streaming IP for PCI Express
2.1.4. Configuring and Generating the GTS System PLL Clocks IP
2.1.5. Configuring and Generating the GTS Reset Sequencer IP
2.1.6. Configuring and Generating the Reset Release IP
2.1.7. Instantiating and Connecting the IP Interfaces
2.1.8. Simulate, Compile and Validate the Design on Hardware
4.4.1. PCIe AXI-Stream TX Interface (ss_tx_st)
4.4.2. PCIe AXI-Stream RX Interface (ss_rx_st)
4.4.3. Control and Status Register Interface (ss_csr_lite)
4.4.4. Transmit Flow Control Credit Interface (ss_txcrdt)
4.4.5. Configuration Intercept Interface (CII)
4.4.6. Completion Timeout Interface (ss_cplto)
4.4.7. Function Level Reset (FLR) Interface
4.4.8. Control Shadow Interface (ss_ctrlshadow)
4.4.9. Error Interface
4.5.1. H2D AXI-Stream Manager (h2d_st_initatr)
4.5.2. D2H AXI-Stream Subordinate (d2h_st_respndr)
4.5.3. H2D/D2H AXI-MM Manager (dma_mm_initatr)
4.5.4. BAM AXI-MM Manager (bam_mm_initatr)
4.5.5. BAS AXI-MM Subordinate (bas_mm_respndr)
4.5.6. PIO AXI-Lite Manager (pio_lite_initiatr)
4.5.7. HIP Reconfiguration AXI-Lite Subordinate (user_csr_lite)
4.5.8. User Event MSI-X (user_msix)
4.5.9. User Event MSI (user_msi)
4.5.10. User Function Level Reset (user_flr)
4.5.11. User Configuration Intercept Interface
4.5.12. Configuration Slave (cs_lite_respndr)
A.1.1.1. H2D Data Mover
A.1.1.2. D2H Data Mover
A.1.1.3. Descriptors
A.1.1.4. AXI4-Lite PIO Manager
A.1.1.5. AXI-MM Write (H2D) and Read (D2H) Manager
A.1.1.6. AXI-Stream Manager (H2D) and Subordinate (D2H)
A.1.1.7. User MSI-X
A.1.1.8. User Function Level Reset (FLR)
A.1.1.9. Control and Status Registers
B.1.6.1. ifc_api_start
B.1.6.2. ifc_mcdma_port_by_name
B.1.6.3. ifc_qdma_device_get
B.1.6.4. ifc_num_channels_get
B.1.6.5. ifc_qdma_channel_get
B.1.6.6. ifc_qdma_acquire_channels
B.1.6.7. ifc_qdma_release_all_channels
B.1.6.8. ifc_qdma_device_put
B.1.6.9. ifc_qdma_channel_put
B.1.6.10. ifc_qdma_completion_poll
B.1.6.11. ifc_qdma_request_start
B.1.6.12. ifc_qdma_request_prepare
B.1.6.13. ifc_qdma_descq_queue_batch_load
B.1.6.14. ifc_qdma_request_submit
B.1.6.15. ifc_qdma_pio_read32
B.1.6.16. ifc_qdma_pio_write32
B.1.6.17. ifc_qdma_pio_read64
B.1.6.18. ifc_qdma_pio_write64
B.1.6.19. ifc_qdma_pio_read128
B.1.6.20. ifc_qdma_pio_write128
B.1.6.21. ifc_qdma_pio_read256
B.1.6.22. ifc_qdma_pio_write256
B.1.6.23. ifc_request_malloc
B.1.6.24. ifc_request_free
B.1.6.25. ifc_app_stop
B.1.6.26. ifc_qdma_poll_init
B.1.6.27. ifc_qdma_poll_add
B.1.6.28. ifc_qdma_poll_wait
B.1.6.29. ifc_mcdma_port_by_name
6.3.5.5. BAM Test
- If the BAM support is enabled on hardware, enable the following flag in p0_software/user/common/mk/common.mk for 256-bit or 128-bit read or write operations:
__cflags += -DIFC_PIO_256 → 256b read/write operations on the PIO BAR.
__cflags += -DIFC_PIO_128 → 128b read/write operations on the PIO BAR.
Note: You are required to undefine the following software flag:#undef IFC_QDMA_INTF_ST(p0_software/user/common/include/mcdma_ip_params.h)
- Complete the instructions outlined in Prerequisites to install the Linux Kernel driver, and build the driver application for testing.
- If the data width has changed from the default 64 bits due to the flag settings mentioned above, rebuild the application for the new setting to take effect by following the instructions in Build the Reference Application.
If only the 64-bit BAM PIO is enabled:
root@bapveac025t:perfq_app# sudo ./perfq_app -b 0000:98:00.0 -o --bam_perf PIO 64 Write Performance Test ... Total Bandwidth: 0.03GBPS Pass root@bapveac025t:perfq_app#
If 128-bit and 256-bit BAM PIO are also enabled:
root@bapveac025t:perfq_app# sudo ./perfq_app -b 0000:98:00.0 -o --bam_perf PIO 128 Write Performance Test ... Total Bandwidth: 0.05GBPS Pass root@bapveac025t:perfq_app# root@bapveac025t:perfq_app# sudo ./perfq_app -b 0000:98:00.0 -o --bam_perf PIO 256 Write Performance Test ... Total Bandwidth: 0.11GBPS Pass
- By default, BAR 2 is used for BAM. Pass the BAR number parameter as shown below:
--bar=2 for BAM
For example:
./perfq_app -b 0000:98:00.0 --bam_perf -o --bar=2
- The Performance mode of BAM tries to send the data for 10 seconds and calculates the bandwidth.
- The PIO 256b test may display a Fail because only a 2k memory is enabled in the device and the PIO test is trying to access a memory greater than 2k.
Note: Refer to Design Example Variants and BAR Mappings for BAR mapping information.
- By default, BAR 2 is used for BAM. Pass the BAR number parameter as shown below: