OMNEST makes it possible to create simulations that mix SystemC™ code and native OMNEST models. This feature is useful if you have existing SystemC code (e.g. developed in-house or purchased as IP blocks) that you would like to incorporate in OMNEST simulations. A possible scenario is to test a wireless chip's SystemC IP block in an OMNEST simulation, where radio channel modeling and higher-layer protocols come from OMNEST network modeling frameworks. It is possible to embed both RTL and higher-level (e.g. TLM) models; the latter is usually a better choice. SystemC is a system specification and simulation library from the Open SystemC Initiative (OSCI, www.systemc.org).
High Performance. When running a mixed SystemC / OMNEST model using our integration feature, SystemC and OMNEST modules will be part of the same program, and will execute in the same OS process. This usually results in orders of magnitude higher simulation speeds than distributed solutions like co-simulation or HLA, and also allows simpler and more fine-grained communication between modules.
How does it work? SystemC models are C++ code and SystemC itself is a C++ library, so SystemC models can be compiled/linked into existing OMNEST simulations to form a single executable. Because both OMNEST modules and SystemC modules are C++ objects, they can communicate via C++ method calls. Timestamp-ordered execution of SystemC and OMNEST events is ensured by a custom OMNEST scheduler.
As an extra benefit, SystemC code embedded in an OMNEST simulation has access to advanced OMNEST facilities like result recording, model parameterization, random variable generation, and so on; even parallel distributed simulation is possible.
The OMNEST package contains several examples for mixed OMNEST-SystemC simulations.