2.4. Simulator Integration#
SimBricks enables the creation of virtual prototypes by orchestrating, connecting and synchronizing multiple instances of already existing (or newly created) simulators. To use them as part of the SimBricks platform, a user must integrate a respective simulator.
Integrated simulators live in their own component repositories (e.g. component-corundum, component-qemu, component-ns3) and are distributed as installable packages, so integrating a new simulator does not require changing the SimBricks core. An integration consists of three parts:
An Adapter inside the simulator that implements the SimBricks protocol for the interfaces the simulator exposes (e.g. PCIe, Ethernet, memory) — see Background and Implementation.
A small Python integration into the orchestration framework, so the simulator can be used in virtual prototype scripts — classes under the
simbricks.components.*namespace.Packaging as a component repository with conda recipes, so users (and Runners) can simply install the simulator — see Packaging a Simulator as a Component Repository.
On this page, we provide an overview of how SimBricks connects existing simulators into an end-to-end virtual prototype. In the end, you should have all the required knowledge to extend SimBricks by integrating a new Simulator.
Tip
In case you want to jump straight into the implementation details, check out the Implementation section.