DOCA Device Emulation


BlueField Platforms provide the ability to emulate a PCIe device. The DOCA Device Emulation subsystem, provides a low-level software API for users to develop PCIe devices and their controllers. These APIs include discovery, configuration, hot plugging/unplugging, management, and IO path handling. In simpler terms, the libraries enable the user to implement a hardware PCIe function using software, such that the host is not aware that the PCIe function is emulated, and all interactions from the host are routed to software on the BlueField Platform instead of actual hardware.


The diagram shows the potential for device emulation to replace a regular PCIe function of some PCIe device.

  • On the left is a conventional setup where the host is connected to a PCIe device (e.g., NVMe SSD). On the host, user applications interact with the kernel driver of that device, using some software interface, and the driver communicates with the hardware/firmware of the device.

  • On the right is a setup where the PCIe device is replaced with a DPU with an application using DOCA Device Emulation. The application can use the DOCA DevEmu PCI library to control the device, and intercept any IOs written by the host to the PCIe device. Additionally, the application can use other DOCA libraries to perform IO processing, such as copying data from host memory using DMA, or sending RDMA/Ethernet traffic, as well as other acceleration libraries for encryption, compression, and more.

  • This library is supported at alpha level; backward compatibility is not guaranteed

  • VFs are not currently supported

  • Some limitations apply when creating a generic emulated function, for more details refer to DOCA DevEmu PCI Generic Limitations.

  • Consult your NVIDIA representative for limitations on the emulated device's behavior

© Copyright 2024, NVIDIA. Last updated on May 7, 2024.