QDMA Subsystem for PCI Express

Overview

Product Description

The AMD LogiCORE™ QDMA for PCI Express® (PCIe) implements a high performance, configurable Scatter Gather DMA for use with the PCI Express Integrated Block.  The IP provides an optional AXI4-MM or AXI4-Stream user interface.

The QDMA solution provides support for multiple Physical/ Virtual Functions with scalable queues, and is ideal for applications that require small packet performance at low latency.

The QDMA solution is available for early access beta customers in 2018.1 (April, 2018). 


Drivers:

The drivers are available at:
1.    Linux + DPDK QDMA Drivers: https://github.com/Xilinx/dma_ip_drivers
2.    Windows Driver :  https://www.xilinx.com/member/qdma_windows_driver.html - Requires Registration

 

Key Features and Benefits

Supports Integrated Blocks for PCIe in UltraScale+™ devices, including Virtex™ UltraScale+™ devices with HBM

  • Supports 64, 128, 256 and 512-bit data path
  • Supports x1, x2, x4, x8, or x16 link widths.
  • Supports Gen1, Gen2, and Gen3 link speeds
  • Support for both the AXI4-Memory Mapped and AXI4-Stream interfaces per queue
  • 2K queue sets
    • 2K H2C Descriptor rings
    • 2K C2H Descriptor rings
    • 2K C2H Write back rings
  • Supports Polling Mode (Status Descriptor Write Back)
  • C2H Stream interrupt moderation
  • C2H stream CMPT entry coalesce
  • Descriptor and DMA Customization through user logic
    • Allow Custom Descriptor format
    • Traffic Management
  • Supports SR-IOV up to 4 Physical Functions and 252 Virtual Functions
    • Thin Hypervisor model
    • Allows only privileged/Physical function (PF) to program contexts and registers
    • Function Level Reset support
    • Mailbox
  • Interrupts
    • 2K MSI-X vectors
    • Up to 8 MSI-X per function
    • Interrupt coalescing

Resource Utilization


Support

Documentation

Featured Documents

Default Default Title Document Type Date
Getting Started

After selecting a device and outlining your design, follow these steps to get started.

1. Choose your IP Solution

AMD offers multiple solutions:

Integrated Block

This solution provides the highest level of design flexibility to customer architecture, with the drawback of requiring the most back-end work. If you are looking to streamline a high-performance solution and want a high level of control of operations, choose this IP. Once at the stream interface, use the descriptors (packetized formats for these interfaces) to interact with the data and form responses or process the responses. This solution is available in Endpoint or Root Port mode.

Bridge

This solution is a combination of the Integrated Block for PCI Express® and the Bridge. It is the most complex option and provides the most prebuilt functionality. It includes a full DMA engine on the backside of the Integrated Block. This can be quickly and easily set up and controlled from the host system, but initiates the transactions from the Endpoint. There are two directional channels – Host2Card (Endpoint initiates MemRd requests to host to pull data to the card) and Card2Host (Endpoint initiates MemWr requests to push data to the host). The solution also includes the bypass port, which is a version of the Bridge that allows the host to directly transact with an AXI4 device behind the DMA/Bridge.  This solution is available in Endpoint or Root Port mode.

DMA

Device
PCIe Solution
All Architectures DMA Subsystem for PCI Express in DMA Mode

The DMA Subsystem for PCI Express includes the Integrated Block for PCI Express and has an AXI4-Stream to AXI4 memory mapping bridge. This easy-to-use solution has an AXI subsystem and interconnection scheme. The IP takes in the descriptors from the four functional interfaces in the Integrated Block, and translates these descriptors into AXI4-compliant interactions – a Master bridge for the CQ-CC, and the Slave bridge for the RQ-RC.  This solution is only available in Endpoint mode.

QDMA

Device
PCIe Solution
UltraScale+ Only QDMA Subsystem for PCI Express

The QDMA Subsystem for PCI Express implements a high performance, configurable Scatter Gather DMA for use with the Integrated Block for PCI Express. The IP provides an optional AXI4-MM or AXI4-Stream user interface. The QDMA solution provides support for multiple Physical/ Virtual Functions with scalable queues, and is ideal for applications that require small packet performance at low latency. 


2. Configure the IP

For full details on configuring the IP in the Vivado™ Integrated Design Environment, review the Customizing and Generating the Core section in the Design Flow Steps chapter of the IP product guide. See References below.

At a minimum, set the following parameters in the Basic tab in the Customize IP dialog box:

  • Lane Width
  • Link Width
  • GT Location
  • Integrated Block Location
  • Input Clock Frequency

An example of configuration selections is shown in the UltraScale FPGA Integrated Block Video: How to Create a PCI Express Design https://www.xilinx.com/video/hardware/create-pci-express-design-ultrascale-fpga.html

After the IP has been configured, generate the IP solution.


3. Generate the Example Design for a Demonstration Board

All PCIe® solutions provide an example design. For details, review the Example Design chapter of the IP product guide. See References below.

AMD provides tutorials on bringing up the IP example design on various platforms:

For information on how to simulate the example design, see the Simulating the Example Design section in the Example Design chapter in the IP product guide. See References below.

For information on testing or validating the example design on the demonstration board, see the following:

  • Check that the PCI Express link comes up. Use LSPCI or a Teledyne LeCroy tool to see which PCI™, PCI Express, chipsets, and others are enumerated in your BIOS. For more details, see:
  • Verify that you see the sample traffic on the PCIe interface. If not, see the Debugging chapter of the IP product guide for help.

For DMA applications, AMD provides software drivers.


4. Port the Example Design to Your Board

Now that you have built the example design and simulated it, you are ready to generate a bitstream and test it out on your board. For information on how to program your FPGA, see the Vivado Design Suite User Guide: Programming and Debugging (UG908).


5. Integration

Now you are ready to integrate the IP into your application. The first step is to integrate your application code.

  • Review the example design to see how the user interfaces can be integrated into your design.  See the user interfaces described in the Port Description section of the Product Specification chapter in the IP product guide.
  • The goal is to replace the example traffic generator with your application code.

For PCI Express, locate the provided support wrapper (xdma_0_support_i) in the file hierarchy above the XCI file (xdma_0_i) and instantiate the wrapper in your application. This does not include the sample application (xdma_app_i). You will need to provide your own application.