SCoPE is a C++ library that extends, without modifying, the standard language SystemC to perform the co-simulation. On one side, it simulates C/C++ software code based on two different operating system interfaces (POSIX and MicroC/OS). On the other hand, it co-simulates these pieces of code with hardware described on SystemC language.
An engineer with this tool can simulate a specific software over a custom platform and obtain estimations of:
The modelled estimations cover not only the core but also the processor's instruction cache.
This library models the detailed behavior of the RTOS including concurrency (among tasks in the same processor), parallelism (among tasks in different processors), scheduling and synchronization.
Although the SystemC kernel executes processes following a non-preemptive scheduling policy without priorities, SCoPE models preemption under different scheduling policies based on priorities.
Operating system interfaces
SCoPE integrates a POSIX based API that allows the execution of a large number of software applications that follows this standard.
POSIX is the main operating system interface nowadays, but it is not the unique. Thus, SCoPE has been improved to support extensions for other types of interfaces. An example is the integration with the MicroC/OS interface. This is a demonstration of the scalability of the tool, in terms of software support.
The design of embedded systems require not only software handling but also hardware communication. For this reason SCoPE includes a set of more of a hundred of driver facilities to implement this communication. One of the most extended operative systems in this sector is Linux, thus this driver facilities are based on the Linux kernel version 2.6.
Furthermore, SCoPE is able to simulate the loading of kernel modules and the handling of hardware interruptions and its correspondent scheduling.
Hardware simulationSystemC is the language used for the modelling of the hardware platform due to the easiness of implementation (C++ extension) and its simulation kernel. For the purpose of simulate different platforms SCoPE incorporates some generic hardware modules.
- Bus based on TLM2 used for the communication with peripherals and the transmission of hardware interruptions.
- DMA for coping large amount of data.
- Simple memory for the simulation of cache and DMA traffic.
- Hardware interface for an easy custom hardware connection.
- Network interface that work as a net card for the NoC.
- External network simulator to implement the NoC connected to SCoPE.
- Multi-computation: One of the advantages of this tool is the possibility of interconnection among independent nodes and simulate the interaction among them.
- Modular structure: Each RTOS component is an independent object that does not share any data with the others. Furthermore, each process is isolated from the rest of the system, thus, a process with global variables can be replicated in many nodes without data collision problems. That is, each process has a separated memory space.
To make easy for users the configuration of the processor models, SCoPE integrates a graphical user interface that provides a structured framework to set the needed parameters.
SCoPE incorporates a simple template for platform configuration that covers the main use cases.