Today’s SoC FPGAs present new verification challenges for system, software and hardware engineers. Common issues related to HW/SW integration continue to increase, and yet they are only typically found in the testbed with the SoC FPGA running. Finding the issues in the testbed is often too late and can cause project delays.
Aldec provides a HW/SW co-simulation interface between Riviera-PRO™ and QEMU (open-source processor emulator). System integration and co-simulation of HDL code with software applications/drivers executing in QEMU is now simplified with the addition of the Aldec QEMU Bridge. The QEMU Bridge connects Riviera-PRO and QEMU, and converts SystemC TLM transactions to AXI and vice versa providing a fast interface for co-simulation.
Figure 1: HW/SW Co-Simulation Environment with Riviera-PRO and QEMU
The AXI Bus Functional Models (BFMs) developed by Aldec for RTL simulation of AXI-based designs is available in Riviera-PRO. The BFMs are delivered as encrypted Verilog and System Verilog modules. User test bench can test the BFMs via Verilog or System Verilog tasks API provided by Aldec. The following BFMs are supported by the Aldec AXI BFM:
Each BFM enables users to turn on built-in AXI transaction recorder for logging AXI transactions into ASDB (Aldec Simulation Database) format. For more information about using transactions in Riviera-PRO, refer to documentation Riviera-PRO Transactions. The process of AXI injection into design includes:
Figure 2: AXI Transactions in Riviera-PRO
Developed by Aldec based on SystemC Transaction Level Modeling (TLM), it is transaction accurate bridge that allows full SoC co-simulation between the Programmable Logic (PL) system and Processing System (PS). The communication is automatically handled by this bridge, and there is no need for extra interaction from verification engineer side.
Hardware engineers (using Riviera-PRO) can set break points in the HDL, examine data flow, and even analyze the code coverage and paths that are exercised by the software application running in QEMU. Software engineers (using QEMU) can use GNU Debugger (GDB) to instrument both the kernel and the driver to step through the code using breakpoints.
Xilinx® provides QEMU tree for Microblaze™, Zynq™ and Zynq UltraScale+. The QEMU tree must be downloaded and installed by the user. Xilinx recommends that users download the QEMU tree provided at https://github.com/Xilinx/qemu.