Emulation is supported for both data center and embedded platforms. For data center platforms, the host application is compiled for x86 server, while the device is modeled as separate x86 process emulating the hardware. The user host code and the device model process communicate using RPC calls. For embedded platforms, where the CPU code is running on the embedded Arm processor, emulation flows use QEMU (Quick Emulator) to mimic the Arm-based PS-subsystem. In QEMU, you can boot embedded Linux and run Arm binaries on the emulation targets.
For running software emulation (sw_emu
) and
hardware emulation (hw_emu
) of a data center
application, you must compile an emulation model of the accelerator card using the
emconfigutil
command and set the XCL_EMULATION_MODE
environment variable prior to launching
your application. The steps are detailed in Running Emulation on Data Center Accelerator Cards.
For running sw_emu
or hw_emu
of an embedded application, you must launch the QEMU emulation
environment on the x86 processor to model the execution environment of the Arm processor. This requires the use of the launch_emulator.py
command, or shell scripts generated
during the build process. The details of this flow are explained in Running Emulation on an Embedded Processor Platform.