Multi Channel DMA Intel® FPGA IP for PCI Express* Design Example User Guide

ID 683517
Date 6/09/2025
Public
Document Table of Contents

3.5.8.5. BAS Test

Note: For the Traffic Generator/Checker design example, you must disable the MSI-X parameter, IFC_QDMA_MSIX_ENABLE, in the Custom Driver's p0_software/kernel/common/include/mcdma_ip_params.h file if MSI-X is not enabled in the IP Parameter Editor. By default, the Custom Driver software parameter is enabled and MSI-X is disabled in the IP. This mismatch prevents the ifc_uio kernel module from being loaded.
For BAS x4:
  1. BAS x4 supports a burst length of 32 by default. In the file perfq_app.h (p0_software/user/cli/perfq_app/perfq_app.h)

    #define IFC_MCDMA_BAS_X4_BURST_LENGTH 32

To enable BAS, set the following software flag in p0_software/user/common/mk/common.mk):

__cflags += -DIFC_MCDMA_BAS_EN

Note: Refer to Design Example BAR Mappings for BAR mappings information.

Commands:

To verify the write operation:

$ sudo ./cli/perfq_app/perfq_app -b 0000:01:00.0 -s 512
-e -t --bar=0
Figure 37. BAS Write Operation

To verify the read operation:

$ sudo ./cli/perfq_app/perfq_app -b 0000:01:00.0 -s 512
-e -r --bar=0
Figure 38. BAS Read Operation

To verify the write and read operations:

$ sudo ./cli/perfq_app/perfq_app -b 0000:01:00.0 -s 512
-e -z --bar=0
Figure 39. BAS Write and Read Operations

Performance test:

The log below is collected on a Gen4 1x16 P-Tile:

sudo ./cli/perfq_app/perfq_app -b 0000:01:00.0 -s 16384 --bas_perf -z
        --bar=0
Figure 40. BAS Write and Read Performance Test
Note: You may not be able to proceed with the -z option. Add the flag #define IFC_QDMA_INTF_ST in user/common/include/mcdma_ip_params.h as a workaround to make it work.
Note: In the case of VFIO, to run BAM+BAS+MCDMA, you need to create at least three VFs and run on each VF respectively. If you try to use one VF to run BAM+BAS+MCDMA simultaneously in the case of VFIO, it gives a "resource busy" prompt.