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 (
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.
hw_emu of an embedded application, you will compile the
application for an Arm processor using Arm-GCC and launch the QEMU emulation environment on an
x86 processor to model the execution environment of the Arm processor. This requires the use of the
launch_emulator.py command, or
launch_emulator.sh shell scripts generated during the build process. The
details of this flow are explained in Running Emulation on an Embedded Processor Platform.