I’ve been working in processor and embedded systems simulation for my whole career, as a simulator developer and as a user of simulation for firmware development.
System simulation is more than just simulators. It’s an ecosystem of tooling and frameworks that tie a specification through to a simulation to a verification of the system under test. The categories below reflect that ecosystem. Standards and interoperability (FMI/FMU, TLM, IP-XACT) cross-cut all of them.
graph LR
%% Pipeline flow (top to bottom, displayed as left column)
subgraph pipeline["Activity Pipeline"]
direction TB
p1([Specify]) --> p2([Simulate]) --> p3([Verify]) --> p4([Integrate])
end
%% Section hierarchy (top to bottom, displayed as right column)
subgraph sections["Page Sections"]
direction TB
spec[Machine Readable
Specifications]
spec --> reg[Register and Device
Descriptions]
spec --> isa[ISA Specifications]
spec --> sysarch[System Architecture]
spec --> iface[Interface Definitions]
spec --> cosim[Co-simulation Interfaces]
sim[System Simulation]
sim --> proc[Simulated Processors]
sim --> fw[Frameworks and Kernels]
fw --> hyp[Hypervisors and
Partitioning]
sim --> plant[Plant and Physical
Modelling]
sim --> fed[Federated and Distributed
Simulation]
test[Testing and Stimulus]
test --> tb[Testbenches and
Verification]
test --> hil[Hardware-in-the-Loop]
sim -.-> tb
build[Build and Integration]
build --> buildsys[Build Systems]
build --> mw[Middleware and Transport]
build --> codegen[Code Generation]
build --> ci[CI for Simulation]
build --> repro[Reproducibility]
end
%% Map sections to pipeline stages
p1 -.-> spec
p2 -.-> sim
p3 -.-> test
p4 -.-> build
click spec "#machine-readable-system-specifications" "Exchange formats, DSLs, ISA specs"
click reg "#register-and-device-descriptions" "SVD, SystemRDL, IP-XACT, Device Tree"
click isa "#isa-specifications" "ARM XML, RISC-V opcodes, Sail"
click sysarch "#system-architecture" "SysML v2, AADL"
click iface "#interface-definitions" "IDL, Protobuf, OpenAPI, ASN.1"
click cosim "#co-simulation-interfaces" "FMI"
click sim "#system-simulation" "Processors, frameworks, plant, federated"
click proc "#simulated-processors" "ISS, virtual platforms, RTL simulation"
click fw "#frameworks-and-kernels" "SystemC, logic sim, tracing, RTOS, hypervisors"
click hyp "#hypervisors-and-partitioning" "Jailhouse"
click plant "#plant-and-physical-modelling" "Modelica, FMI/FMU, physics"
click fed "#federated-and-distributed-simulation" "HLA, DIS, DDS, automotive, robotics"
click test "#testing-and-stimulus" "Testbenches, verification, HIL"
click tb "#testbenches-and-verification" "UVM, cocotb, embedded test frameworks"
click hil "#hardware-in-the-loop" "HIL platforms, debug probes, bus adapters"
click build "#build-and-integration" "Build systems, code gen, CI, reproducibility"
click buildsys "#build-systems" "Yocto, Buildroot, KAS, FuseSoC"
click mw "#middleware-and-transport" "DDS, Zenoh, iceoryx"
click codegen "#code-generation" "Jinja2, svd2rust, PeakRDL, rggen"
click ci "#ci-for-simulation" "GitHub Actions, Renode, Docker"
click repro "#reproducibility" "Nix, Docker, Yocto"
style p1 fill:#f9f,stroke:#333
style p2 fill:#bbf,stroke:#333
style p3 fill:#bfb,stroke:#333
style p4 fill:#fbf,stroke:#333
style spec fill:#f9f,stroke:#333
style sim fill:#bbf,stroke:#333
style test fill:#bfb,stroke:#333
style build fill:#fbf,stroke:#333
Machine Readable System Specifications
Formal descriptions of hardware and system interfaces. These serve as the input stage of a code generation pipeline: specification → parser → template → generated output (article forthcoming).
Register and Device Descriptions
| Tool |
Type |
Description |
| CMSIS-SVD |
Standard Schema |
ARM/RISC-V peripheral register descriptions in XML. Widely supported by tooling. |
| SystemRDL |
Standard DSL |
Accellera register and address map specification language. |
| IP-XACT (IEEE 1685) |
Standard Schema |
IP component packaging and system integration metadata in XML. Free via IEEE GET. |
| Device Tree |
Standard Schema |
Hardware description format for Linux kernel and bootloader device drivers. |
ISA Specifications
Machine readable instruction set architecture data — instructions, encodings, system registers, and formal models.
ARM
| Tool |
Type |
Description |
| ARM A-profile XML |
ISA Formal Spec |
System registers, AArch64/AArch32 instruction encodings, decode trees. XML archives. |
| MRA Tools |
OSS Tool |
Scripts for processing ARM XML specs. ASL transpiler to C, Verilog, SMT. Blog. |
RISC-V
| Tool |
Type |
Description |
| riscv-opcodes |
OSS ISA Data |
Official RISC-V instruction opcode definitions. Easy to parse text format. |
| Sail RISC-V |
ISA Formal Spec |
Official formal ISA model in Sail language. Behavioural spec for verification and synthesis. |
| riscv-config |
OSS Tool |
RISC-V configuration spec for compliance. Describes implemented features in YAML. |
| riscv-isa-data |
OSS ISA Data |
YAML: opcodes, CSRs, extensions. Overview. |
System Architecture
| Tool |
Type |
Description |
| SysML v2 |
Standard DSL |
OMG systems modelling language. Textual notation in v2. |
| AADL |
Standard DSL |
SAE architecture analysis and design language for real-time embedded systems. |
| SysPhS (OMG) |
Standard DSL |
SysML extension for physical interaction and signal flow simulation. Translates to Modelica and Simulink/Simscape. |
Interface Definitions
| Tool |
Type |
Description |
| OMG IDL |
Standard DSL |
Interface definition language for CORBA and DDS distributed systems. |
| Protocol Buffers |
OSS Tool |
Google’s language-neutral serialization format with code generation via protoc. |
| OpenAPI |
Standard Schema |
REST API descriptions in YAML/JSON. Drives client/server code generation. |
| ASN.1 |
Standard DSL |
ITU-T notation for defining data structures in telecom and aerospace. |
Co-simulation Interfaces
| Tool |
Type |
Description |
| FMI (v2.0, v3.0) |
Standard Protocol |
Functional Mock-up Interface for model exchange and co-simulation. |
| FMI Library |
OSS Library |
Modelon C library for loading and interacting with FMUs. |
System Simulation
Simulated Processors
The spectrum from instruction-level interpretation through cycle-accurate RTL simulation. Higher fidelity costs more simulation time.
Instruction Set Simulators
| Tool |
Type |
Description |
| QEMU |
OSS Tool |
Fast processor emulator with KVM acceleration. ARM, RISC-V, x86 and more. |
| Renode |
OSS Tool |
Embedded systems simulation framework by Antmicro. Multi-node, multi-arch. |
| gem5 |
OSS Tool |
Cycle-accurate simulator for computer architecture research. |
| RISC-V Spike |
OSS Tool |
RISC-V ISA reference functional simulator. |
| Imperas OVP |
Free / Commercial |
Open Virtual Platforms for multi-core instruction-accurate simulation. |
| Dromajo |
OSS Tool |
RV64GC emulator for RTL co-simulation with checkpoint/resume. CHIPS Alliance. |
| NEMU |
OSS Tool |
High-performance RISC-V ISS from the XiangShan processor project (ISCAS). |
| GVSoC |
OSS Tool |
Event-based PULP platform simulator. Cycle-accurate cores with ~2500x RTL speedup. |
| rv32emu |
OSS Tool |
Compact RV32I[MAFC] emulator in C99 with tiered JIT compilation. |
| Tool |
Type |
Description |
| ARM Fast Models |
Commercial IP |
SystemC TLM-based models for ARM Cortex-A/R/M processors. |
| Synopsys Virtualizer / Simics |
Commercial Tool |
Full-system virtual prototyping. Simics acquired from Wind River. |
| Cadence VLAB |
Commercial Tool |
Virtual platform simulation environment. |
| Tool |
Type |
Description |
| Chipyard |
OSS Tool |
Agile RISC-V SoC design framework. Integrates Rocket, BOOM, CVA6 with Verilator and FireSim. |
| FireSim |
OSS Tool |
FPGA-accelerated cycle-exact full-system simulation. Scales from single Alveo board to cloud FPGAs. |
| LiteX |
OSS Tool |
Python-based SoC builder and IP library. Multi-ISA with simulation and FPGA targets. |
| OpenTitan |
OSS Tool |
Open silicon root of trust around Ibex RV32 core. Full simulation environment. |
RTL Simulation
| Tool |
Type |
Description |
| Verilator |
OSS Tool |
Fast Verilog/SystemVerilog to C++/SystemC compiler. Lint, coverage, assertions. |
| Icarus Verilog |
OSS Tool |
Verilog simulation and synthesis tool. |
| Siemens Questa (formerly ModelSim) |
Commercial Tool |
SystemVerilog/VHDL simulation and verification. Free Starter Edition via Intel/Altera Quartus. |
| Synopsys VCS |
Commercial Tool |
Industry-standard SystemVerilog simulator. |
| Cadence Xcelium |
Commercial Tool |
Multi-language (Verilog, VHDL, SystemC) parallel simulation. |
| GHDL |
OSS Tool |
Open-source VHDL 2008/93/87 simulator. VPI, VHPIDIRECT co-simulation, cocotb integration. |
| CXXRTL |
OSS Tool |
Yosys simulation backend generating optimized C++ from synthesis. Zero-setup RTL simulation. |
FPGA prototyping platforms (Cadence Palladium, Synopsys ZeBu) bridge RTL simulation and physical hardware but are outside the scope of this page.
vECU Abstraction Levels
Automotive virtual ECU levels as a fidelity ladder. AUTOSAR-specific terminology, but useful for any embedded virtual platform.
| Level |
Binary |
Host |
Description |
| Level 0 |
None |
Modelling tool |
Algorithm/controller model (e.g. Simulink) or generated C, no platform. |
| Level 1 |
Host |
Dev ISA |
Application software (ASW) only, no RTE or BSW. |
| Level 2 |
Host |
Dev ISA |
ASW plus RTE — component interfaces validated. |
| Level 3 |
Host |
Dev ISA |
Full AUTOSAR stack (ASW + RTE + BSW), MCAL drivers stubbed. |
| Level 3a |
Host |
Dev ISA |
HLOS (Linux/QNX) application stack, host-compiled. |
| Level 3b |
Target |
Target ISA |
HLOS application target-compiled, running on a target-compatible host (e.g. ARM Linux on ARM, qemu-user). |
| Level 4 |
Target |
ISS |
Target-compiled binary on instruction set simulator with hardware emulation. |
| Level 4a |
Mixed |
ISS + Dev ISA |
Partial target binary — selective function bypass via host functions / VIRTIO (Synopsys extension). |
| Level 4b |
Target |
ISS |
Full target binary, complete production code with full hardware emulation (Synopsys extension). |
| |
Target |
Target HW |
Full target binary on target. |
Frameworks and Kernels
Simulation engines, verification frameworks, and the RTOS layers that run on them. See SystemC below for detailed coverage.
System Simulation
| Tool |
Type |
Description |
| SystemC / TLM 2.0 (IEEE 1666) |
Standard API |
C++ class library standard for system-level modelling. Free via IEEE GET. See detailed section. |
| Accellera SystemC |
OSS Library |
Reference implementation of IEEE 1666. Apache 2.0. The only full open source implementation. |
| Renode |
OSS Tool |
Also a framework: C#/Python peripheral modelling API, Robot Framework integration. |
| VCML |
OSS Library |
Virtual Components Modelling Library. SystemC/TLM convenience layer by MachineWare. |
| SCML |
Commercial Library |
Synopsys SystemC Modelling Library. TLM 2.0 convenience layer for Virtualizer peripheral models. |
| CCI |
Standard API |
Accellera SystemC Configuration, Control and Inspection. Standardizes model configuration; register introspection on roadmap. |
| Accellera CCI |
OSS Library |
Reference implementation of CCI standard. Apache 2.0. |
| SystemC-AMS (IEEE 1666.1) |
Standard API |
Analog/mixed-signal modelling extension for SystemC. COSEDA proof-of-concept implementation (Apache 2.0). |
| SCC |
OSS Library |
MINRES SystemC Components. Productivity library with extended logging, JSON config, automatic tracing. |
| DRAMSys |
OSS Library |
SystemC TLM-2.0 DRAM subsystem simulator. DDR5/LPDDR5 memory design-space exploration. |
| RISC-V VP |
OSS Tool |
SystemC TLM-2.0 RISC-V virtual platform with GDB, FreeRTOS/Zephyr/Linux support. AGRA Bremen. |
| RISC-V VP++ |
OSS Tool |
Extended successor of RISC-V VP maintained at JKU Linz. Improved models and tooling. |
| SymEx-VP |
OSS Tool |
Concolic testing engine for RISC-V embedded software with SystemC peripheral models. |
| vcml-silkit |
OSS Library |
VCML and Vector SIL Kit integration for distributed virtual platform co-simulation. |
| SST |
OSS Tool |
Sandia Structural Simulation Toolkit. Parallel discrete-event framework; integrates with SystemC. |
Logic Simulation and Verification
| Tool |
Type |
Description |
| cocotb |
OSS Library |
Python coroutines driving HDL simulation. Works with Verilator, Icarus, VCS, Questa. |
| cocotb-bus |
OSS Library |
Bus protocol drivers (AXI, Avalon, Wishbone) for cocotb testbenches. |
| UVM (IEEE 1800.2) |
Standard Methodology |
Universal Verification Methodology for SystemVerilog testbenches. Free via IEEE GET. |
| Accellera UVM |
OSS Library |
Reference implementation of UVM. SystemVerilog class library. |
| UVM-SystemC |
OSS Library |
UVM ported to SystemC/C++. Enables UVM methodology without SystemVerilog. |
| Verilator |
OSS Tool |
Also a framework: C++ testbench API, SystemC integration, VCD/FST tracing. |
| SymbiYosys |
OSS Tool |
Front-end for Yosys-based formal hardware verification. Bounded/unbounded property checking, cover generation. |
| Chisel |
OSS Library |
Scala-embedded HDL for hardware generators. Generates Verilog for simulation via Verilator/CXXRTL. |
| SpinalHDL |
OSS Library |
Scala-embedded HDL with SpinalSim simulation API wrapping Verilator/GHDL/Icarus. |
| Amaranth HDL |
OSS Library |
Python hardware definition language with built-in simulator and formal verification. Successor to nMigen. |
| PyMTL3 |
OSS Library |
Python framework for multi-level hardware modelling (FL/CL/RTL), simulation, and verification. Cornell. |
Tracing and Debugging
| Tool |
Type |
Description |
| VCD |
Format |
IEEE 1364 Value Change Dump. Standard signal-level trace format. Text-based, widely supported. |
| FST |
Format |
Fast Signal Trace. GTKWave’s binary alternative to VCD. Smaller files, faster load. |
| srzip |
Format |
sigrok native format. ZIP-based container with metadata and binary samples. |
| GTKWave |
OSS Tool |
Waveform viewer for VCD, FST, and other trace formats. |
| Surfer |
OSS Tool |
Extensible waveform viewer. VCD, FST, GHW support. Modern GTKWave alternative. |
| sigrok |
OSS Tool |
Signal analysis suite. Supports 100+ logic analyzer hardware devices. |
| PulseView |
OSS Tool |
sigrok GUI. Protocol decoders, logic analyzer capture and analysis. |
| Lauterbach TRACE32 |
Commercial Tool |
Debug and trace tools for embedded processors. Hardware trace support. |
| Orbuculum |
OSS Tool |
SWO/SWV demux and post-processing for Cortex-M trace data. Companion ORBTrace debug probe. |
| Konata |
OSS Tool |
Instruction pipeline visualizer for gem5 O3PipeView traces. |
| VaporView |
OSS Tool |
VS Code extension for VCD/FST/GHW waveform viewing. Remote development support. |
RTOS with Simulation Support
These RTOS are listed for their host-compiled simulation targets and CI integration, not as a general RTOS survey.
| Tool |
Type |
Description |
| Zephyr (native_sim) |
OSS Tool |
POSIX-based host simulation board. Runs Zephyr apps natively for CI with Twister. |
| FreeRTOS |
OSS Library |
POSIX port enables host-compiled testing. Widely used in MCU firmware. |
| NuttX |
OSS Tool |
POSIX-compliant RTOS. sim board runs on host; QEMU targets for ARM/RISC-V CI. |
Hypervisors and Partitioning
| Tool |
Type |
Description |
| Jailhouse |
OSS Tool |
Linux-based partitioning hypervisor by Siemens. Static partitioning of CPU cores, memory, and I/O into isolated cells running bare-metal or RTOS inmates. QEMU target for development. |
Plant and Physical Modelling
Continuous-time and multi-domain physical models — the “world outside the chip.”
Modelica Ecosystem
| Tool |
Type |
Description |
| OpenModelica |
OSS Tool |
Modelica-based modelling and simulation environment for multi-physics systems. |
| Modelica Standard Library |
OSS Library |
Electrical, mechanical, thermal, fluid component models. |
| VehicleInterfaces |
OSS Library |
Standardized interfaces for automotive subsystem modelling. |
FMI / FMU
| Tool |
Type |
Description |
| FMI (v2.0, v3.0) |
Standard Protocol |
Functional Mock-up Interface for model exchange and co-simulation. |
| FMI Library |
OSS Library |
Modelon C library for loading and interacting with FMUs. |
| FMI-LS-BUS |
Standard Protocol |
FMI layered standard for network communication (CAN, LIN, FlexRay). |
| Reference-FMUs |
OSS Library |
Standardized FMU test models with fmusim command-line runner. |
| FMPy |
OSS Library |
Python library for simulating FMUs. GUI and command-line interface. |
| SIL Kit FMU Importer |
OSS Tool |
Vector tool for importing FMUs into SIL Kit distributed co-simulations. |
| Maestro (INTO-CPS) |
OSS Tool |
FMI 2.0 co-simulation orchestration engine with DSL (MaBL), CLI and web API. |
| Open Simulation Platform |
OSS Tool |
FMI-based maritime co-simulation ecosystem from DNV. Plug-and-play model configuration. |
Physics Simulation
| Tool |
Type |
Description |
| Gazebo |
OSS Tool |
Physics simulation for robotics. ROS 2 integration. |
| Simulink / Simscape |
Commercial Tool |
MathWorks model-based design. Industry standard for control systems. |
| Scilab / Xcos |
OSS Tool |
Numerical computation with graphical block diagram editor (Simulink-like). |
| GNU Octave |
OSS Tool |
MATLAB-compatible numerical computing with control systems toolbox. |
| ngspice |
OSS Tool |
Open-source mixed-level/mixed-signal SPICE circuit simulator with XSPICE extensions. |
Federated and Distributed Simulation
Connecting multiple simulators into a coherent system-of-systems.
Automotive and Robotics
| Tool |
Type |
Description |
| ROS 2 |
OSS Tool |
Robot Operating System. DDS-based middleware for multi-process simulation and deployment. |
| Gazebo |
OSS Tool |
Pairs with ROS 2 for physics-in-the-loop robotics simulation. |
| PX4 SITL |
OSS Tool |
Software-in-the-loop for PX4 autopilot. Gazebo and jMAVSim backends. |
| CARLA |
OSS Tool |
Open-source autonomous driving simulator. Unreal Engine based. |
| Vector SIL Kit |
OSS Library |
Vector open-source distributed co-simulation middleware. CAN, LIN, FlexRay, Ethernet bus simulation for SIL/HIL integration. |
| SIL Kit Adapters TAP |
OSS Tool |
Connect Linux/Windows TAP network devices to SIL Kit. |
| SIL Kit Adapters vCAN |
OSS Tool |
Connect Linux virtual CAN devices to SIL Kit. |
| SIL Kit Adapters Linux IO |
OSS Tool |
Connect generic Linux IO devices to SIL Kit. |
| meta-silkit |
OSS Tool |
Yocto meta layer for building SIL Kit and adapters into custom Linux distros. |
| Eclipse SUMO |
OSS Tool |
Microscopic traffic simulation. Used with CARLA and ROS for autonomous driving simulation. |
| vsomeip |
OSS Library |
SOME/IP protocol and service discovery implementation from BMW/COVESA. |
| CommonAPI SOME/IP |
OSS Library |
High-level IPC abstraction with SOME/IP binding and code generation. COVESA. |
| XCPlite |
OSS Library |
Lightweight ASAM XCP on Ethernet implementation from Vector. Measurement and calibration. |
| xcp-lite |
OSS Library |
XCP protocol implementation in Rust from Vector. |
| COVESA VSS |
Standard Schema |
Standardized vehicle signal catalog and syntax for automotive data modelling. |
| autoas/as |
OSS Tool |
Simple AUTOSAR basic software with simulation GUI tools for Com/Dcm/FlashLoader. |
QEMU Co-simulation
| Tool |
Type |
Description |
| VPSim |
OSS Tool |
CEA-List virtual platform framework. QEMU + SystemC integration. |
| QBox / libqbox |
OSS Library |
Qualcomm/GreenSocs QEMU-in-SystemC for heterogeneous SoC simulation. |
| Xilinx Remote Port |
OSS Tool |
Co-simulation bridge in Xilinx QEMU fork. Connects QEMU to SystemC/Verilator processes. |
| SIL Kit Adapters QEMU |
OSS Tool |
Vector adapters bridging QEMU virtual network/serial devices to SIL Kit distributed co-simulation. |
Standards
| Standard |
Type |
Description |
| HLA (IEEE 1516) |
Standard Protocol |
High Level Architecture for defence and large-scale distributed simulation. |
| NASA TrickHLA |
OSS Library |
NASA open-source HLA implementation for the Trick simulation environment. |
| DIS (IEEE 1278) |
Standard Protocol |
Distributed Interactive Simulation. Real-time protocol for military training. |
| Open-DIS |
OSS Library |
Open-source DIS implementations (Java, C++, Python, JS). Tutorial. |
| DDS (OMG) |
Standard Protocol |
Data Distribution Service. Publish-subscribe middleware for real-time systems. |
| DCP |
Standard Protocol |
Distributed Co-Simulation Protocol. Modelica Association standard for integrating models and real-time systems via UDP/TCP. |
| FSS |
Standard Protocol |
Accellera Federated Simulation Standard. Interoperability across simulation standards and tools (in development). |
| FMI-LS-BUS |
Standard Protocol |
FMI layered standard for network communication (CAN, LIN, FlexRay) in co-simulation. |
| ECSS SMP |
Standard API |
European space industry Simulation Model Portability standard. |
| EUROCAE ED-247 |
Standard Protocol |
Avionics simulation interface standard for virtual integration. |
| SISO WebLVC |
Standard Protocol |
Web-based Live, Virtual, Constructive simulation interoperability. |
Network Simulation
| Tool |
Type |
Description |
| OMNeT++ |
OSS Tool |
Modular discrete-event network simulator. INET framework for IoT protocol simulation. |
| ns-3 |
OSS Tool |
Discrete-event network simulator for Internet systems. Co-simulation gateway support. |
| Cooja / Contiki-NG |
OSS Tool |
IoT OS with Cooja network emulator for wireless sensor network simulation. |
Testing and Stimulus
Testbenches and Verification
HDL Verification
| Tool |
Type |
Description |
| UVM (IEEE 1800.2) |
Standard Methodology |
Universal Verification Methodology for constrained-random, coverage-driven SystemVerilog testbenches. Free via IEEE GET. |
| Accellera UVM |
OSS Library |
Reference implementation of UVM. SystemVerilog class library. |
| cocotb |
OSS Library |
Python coroutine-based HDL testbenches. CI-friendly alternative to SystemVerilog UVM. |
| cocotb-bus |
OSS Library |
Reusable bus protocol drivers (AXI, Avalon, Wishbone) for cocotb. |
| pyuvm |
OSS Library |
Python implementation of UVM. Runs on cocotb simulators. |
| CORE-V Verif |
OSS Tool |
OpenHW Group industrial-grade UVM verification environment for CORE-V RISC-V cores. |
Embedded Test Frameworks
| Tool |
Type |
Description |
| Robot Framework |
OSS Tool |
Keyword-driven test automation. Renode integration for embedded system-level tests. |
| Zephyr Twister |
OSS Tool |
Zephyr’s test runner. Manages native_sim, QEMU, and hardware targets from CI. |
| Unity / Ceedling |
OSS Tool |
Unit testing and build automation for embedded C. CMock for test doubles. |
| CppUTest |
OSS Tool |
C/C++ unit test framework designed for embedded systems and test-driven development. |
| FFF (Fake Function Framework) |
OSS Library |
Macro-based C mock/fake generation. Lightweight alternative to CMock for embedded. |
| CMocka |
OSS Tool |
C unit testing framework with mocking support. Works on embedded platforms. |
On-Target and Debugger-Based Testing
| Tool |
Type |
Description |
| metal.test |
OSS Tool |
Debugger-based bare-metal testing via GDB Python. No test harness on target. |
| iSYSTEM testIDEA |
Commercial Tool |
Unit testing on real hardware via debug probes. No target-side instrumentation. |
| Tool |
Type |
Description |
| CBMC |
OSS Tool |
Bounded model checker for C/C++. Verifies array bounds, pointer safety, assertions in embedded firmware. |
| KLEE |
OSS Tool |
LLVM-based symbolic execution engine. Generates high-coverage test cases for C/C++. |
Methodology
Test doubles taxonomy (Meszaros) and the relationship between platform fidelity, hardware modelling, and testbench capability are covered in the embedded systems testing series (article forthcoming).
Hardware-in-the-Loop
Bridging simulation to real hardware.
| Tool |
Type |
Description |
| dSPACE SCALEXIO |
Commercial Platform |
Real-time HIL simulation for automotive ECU testing. |
| NI VeriStand |
Commercial Tool |
Real-time test configuration for HIL systems. |
| Speedgoat |
Commercial Platform |
Real-time target machines for Simulink Real-Time. One-click RCP and HIL from Simulink models. |
| Vector VT System |
Commercial Platform |
ECU testing with CAN/LIN/FlexRay network simulation. |
Debug Interfaces
| Tool |
Type |
Description |
| JTAG (IEEE 1149.1) |
Standard Protocol |
On-chip debug interface. Used across ARM, RISC-V, MIPS, and FPGA targets. TI Primer (free). |
| SWD |
Standard Protocol |
ARM Serial Wire Debug. Two-pin alternative to JTAG for Cortex-M/A/R. |
| Lauterbach TRACE32 |
Commercial Tool |
Debug and trace tools. Hardware trace with streaming to host. |
| J-Link EDU |
Commercial Hardware |
Segger debug probe (educational license). Broadest device support. |
| Black Magic Probe |
OSS Tool |
Debug probe with built-in GDB server. No host software needed. Can flash onto ST-Link clones. |
| ST-Link |
Commercial Hardware |
STMicroelectronics debug probe. Ships on Nucleo/Discovery boards. Very low cost. |
| LPC-Link2 |
Commercial Hardware |
NXP debug probe. Runs CMSIS-DAP or J-Link firmware. |
| Raspberry Pi Debug Probe |
OSS Tool |
Pico-based CMSIS-DAP probe. ~$12. |
| DAPLink |
OSS Tool |
ARM open source debug probe firmware (CMSIS-DAP). Runs on various boards. |
USB Bus Adapters
Low-cost USB adapters for exercising target peripherals (I2C, SPI, GPIO, CAN) from a host during HIL testing.
| Tool |
Type |
Description |
| Total Phase Aardvark |
Commercial Hardware |
USB-to-I2C/SPI host adapter. Python API. Industry standard for bus exercising. |
| Total Phase Beagle |
Commercial Hardware |
USB/I2C/SPI protocol analyzer. Non-intrusive monitoring. |
| Bus Pirate |
OSS Tool |
Open-source multi-protocol bus interface (I2C, SPI, UART, 1-Wire, JTAG). |
| FTDI FT2232H |
Commercial Hardware |
Dual-channel USB-to-MPSSE (I2C, SPI, JTAG, UART). Widely used in dev boards. |
| GreatFET |
OSS Tool |
Open-source USB peripheral for hardware hacking. GPIO, I2C, SPI, logic analysis. |
| CANable |
OSS Tool |
Open-source USB-to-CAN adapter. Works with SocketCAN on Linux. |
Scriptable Debug Software
| Tool |
Type |
Description |
| OpenOCD |
OSS Tool |
Open On-Chip Debugger. Bridges cheap probes to GDB for scripted test execution. |
| pyOCD |
OSS Tool |
Python-based debug access for ARM Cortex-M. Good for CI scripting. |
| probe-rs |
OSS Tool |
Rust-based embedded debugging and flashing toolkit. |
Open-Source Approaches
| Tool |
Type |
Description |
| metal.test |
OSS Tool |
GDB-based HIL: run tests on real targets via debug probe, report to CI. |
| Golioth HIL |
OSS Tool |
Zephyr Twister with hardware runners for on-target regression testing. |
Build and Integration
Assembling simulation environments, generating code from specifications, and making it reproducible.
Build Systems
| Tool |
Type |
Description |
| Yocto / OpenEmbedded |
OSS Tool |
Embedded Linux build system. Built-in QEMU integration via runqemu. |
| Buildroot |
OSS Tool |
Simple, fast embedded Linux build system. QEMU defconfigs included. |
| KAS |
OSS Tool |
Setup tool for Bitbake/Yocto projects. Simplifies multi-layer configuration. |
| FuseSoC |
OSS Tool |
Package manager and build system for HDL code. |
Middleware and Transport
| Tool |
Type |
Description |
| Eclipse Cyclone DDS |
OSS Library |
High-performance DDS implementation. Default middleware for ROS 2. |
| OpenSplice DDS |
OSS Library |
Vortex OpenSplice community edition (LGPL). Legacy; see Cyclone DDS. |
| Eclipse Zenoh |
OSS Library |
Low-latency pub/sub protocol. Used as FSS demonstrator transport layer. |
| Eclipse iceoryx |
OSS Library |
True zero-copy shared-memory IPC. Automotive origins (AUTOSAR Adaptive). ROS 2 transport option. |
| Eclipse SDV |
OSS Project |
Software Defined Vehicle project. FSS aligns with for automotive simulation. |
| Eclipse Ditto |
OSS Library |
Digital twin framework for IoT. Manages device twins with MQTT/AMQP/Kafka connectivity. |
| Eclipse BaSyx |
OSS Library |
Industry 4.0 middleware implementing Asset Administration Shell. OPC-UA/MQTT/PLC4X connectivity. |
Code Generation
The pipeline pattern — specification → parser → template → output — applies across all these tools (article forthcoming).
| Tool |
Type |
Description |
| Jinja2 |
OSS Library |
Python template engine. Common choice for custom code generation pipelines. |
| svd2rust |
OSS Tool |
Generates Rust peripheral access crates from CMSIS-SVD files. |
| PeakRDL |
OSS Tool |
SystemRDL-based register code generation (C headers, UVM, HTML docs). |
| rggen |
OSS Tool |
Register generator from SystemRDL/YAML. RTL, UVM, C header output. |
| cheby |
OSS Tool |
CERN hardware register description tool. VHDL, Verilog, C, Python output. |
| development-utils |
OSS Tool |
Jinja2 generators for SVD, SystemRDL, Device Tree, DBML, IDL → C++17/C++20. |
CI for Simulation
| Tool |
Type |
Description |
| GitHub Actions + Zephyr |
OSS Tool |
Zephyr setup action for CI. Twister runs native_sim and QEMU targets. |
| Renode GitHub Action |
OSS Tool |
Run Renode simulation tests in CI. Robot Framework integration. |
| Docker containers |
OSS Tool |
Pre-built images with simulation toolchains for reproducible CI environments. |
Reproducibility
| Tool |
Type |
Description |
| Nix |
OSS Tool |
Reproducible builds and development environments. Declarative configuration. |
| Docker |
OSS Tool |
Container-based environment isolation for build and simulation. |
| Yocto reproducible builds |
OSS Tool |
Yocto’s reproducible_build class for bit-identical output. |
My Repos
Simulation-related repositories, categorized by the taxonomy above.
Original
Forked
Detailed Topics
SystemC
SystemC is a C++ class library for system-level design and verification, spanning hardware and software. The reference implementation is now open source under Apache 2.0.
Official
Related Accellera projects: UVM-SystemC, CCI, FC4SC
Other
Historical
Before Accellera published the source on GitHub, I assembled a reference repo from the Accellera download tarballs (versions 1.0.2 through 2.3.2) for online code browsing. The Doxygen output was enhanced over the mainline: source comments were converted to doxygen format, enums and macro definitions were documented, and treeview navigation and search were added.