Platform Modes
VRT supports three execution platforms. The same application source code runs on all three — the platform is determined by the vrtbin file, not by the application.
Platform |
Transport |
Build target |
Use case |
|---|---|---|---|
Hardware |
PCIe BAR + QDMA |
|
Production runs on a physical V80 board |
Emulation |
ZeroMQ IPC to C-model |
|
Functional verification without FPGA hardware |
Simulation |
Verilog register map |
|
Cycle-accurate RTL simulation |
Platform Selection
The platform is encoded inside the vrtbin archive. When VRT extracts the
archive, it reads the <Platform> element from system_map.xml:
"Hardware"→vrt::Platform::HARDWARE"Emulation"→vrt::Platform::EMULATION"Simulation"→vrt::Platform::SIMULATION
Your application can query the active platform at runtime:
if (device.getPlatform() == vrt::Platform::EMULATION) {
// emulation-specific logic
}
Building for Each Platform
Each example provides three vrtbin targets via CMake:
add_vbin(TARGET "axilite_hw" PLATFORM "hw" CFG "${CFG_FILE}" KERNELS ${_KERNELS})
add_vbin(TARGET "axilite_sim" PLATFORM "sim" CFG "${CFG_FILE}" KERNELS ${_KERNELS})
add_vbin(TARGET "axilite_emu" PLATFORM "emu" CFG "${CFG_FILE}" KERNELS ${_KERNELS})
The application executable is the same regardless of platform — only the vrtbin file passed at runtime differs.
Hardware
On hardware, VRT communicates with the V80 board through the full SLASH stack:
Register access — BAR MMIO via PF2 (kernel arguments, control, status).
Data transfer — QDMA via PF1 (buffer sync between host and device memory).
Device management — vrtd daemon (programming, reset, multi-tenancy).
This is the only platform that exercises the physical FPGA. It requires:
A V80 board installed in the host.
The
slashkernel module loaded.The
vrtddaemon running.
Emulation
Emulation replaces the FPGA with a software C-model of the HLS kernels. VRT communicates with the emulated kernels over ZeroMQ IPC sockets.
Advantages:
No FPGA hardware required.
Fast iteration — recompile the C-model instead of running synthesis.
Full functional verification of kernel logic.
Limitations:
Timing is not modelled — performance measurements are not meaningful.
HLS kernels must include at least one AXI4-Lite interface.
Freerunning streaming kernel chains (e.g. example
02_chain) are not supported in emulation.
Simulation
Simulation runs the kernel RTL in a Verilog simulator. VRT accesses the simulated design through a register-map interface.
Advantages:
Cycle-accurate behaviour.
Can catch timing and protocol issues that emulation misses.
Limitations:
Significantly slower than emulation.
Requires AMD Vivado and a simulator licence.
Memory roundtrip fidelity may differ from hardware (floating-point representation in the simulator can introduce NaN artefacts that the application must handle).