What we do
Based in the LLVM framework, the Terma Emulator is a suite of instruction-level emulators, supporting several processors used in the space industry:
- SPARC
- ERC32 (TSC691E, TSC695F)
- LEON2 (AT697E, AT697F) along with the standard peripheral devices: UARTs, GPIO, etc.
- LEON3 (UT699, UT700, GR712RC)
- LEON4 (GR740)
- PowerPC
- e500 (P2010, P2020)
- ARM
- Cortex-R5 (TMS570)
Note that TEMU emulator is not restricted to these pre-configured systems. The flexibility of the Terma Emulator design allows for the tailoring of many configurations, including the ability of adding user-defined models or to replace some of the "standard" models with customized ones.
The Emulator can also be used as the core of a simulation kernel, with the simulation models being scheduled by the emulator itself.
The PLATO Mission
Benefits of Terma Spacecraft Emulator
Designed for performance
The LLVM based emulator core is highly optimised with different instruction variants, threaded code, and many other sophisticated optimisations. In addition, the spacecraft emulator integrates a dynamic binary translator engine, enabling the direct translation of target instructions to host instructions. Support for custom code patterns detectors, that can trigger either idle mode, or simply call a user provided function, and this can be used for mission specific optimizations.
Instruction-Level Emulation Accuracy
Designed to be used for different use cases, including but not limited to target software development, software validation, and training and operational simulation. The emulator can run in real-time simulation environments. In general existing operating systems and boot software should be able to run unmodified on the emulator thanks to instruction-level accuracy and the extensive I/O model library bundled with TEMU
Highly Customizable
Almost any desired customization is possible through the tailoring mechanisms provided by the Terma Emulator Suite. CPU configurations can be adapted by picking and mapping in different device models as needed , memory remapping can even be triggered dynamically by target software.
Extensible
The emulator has a public API for implementing native device models but can easily be integrated with other device modeling systems (e.g. ECSS-SMP, System-C and others). The emulator has also been designed to allow for additional targets. Any RISC-like (fixed width) instruction-set can be added with relative ease, other non-RISC instruction sets can be supported.
Not Restricted to any Particular Simulation Infrastructure
The Terma Emulator Suite is designed to be embeddable in different simulation frameworks, including to the ESA/SIMSAT software. It is also possible to implement a full simulator using the TEMU framework.
User Friendly
A fully functional command line test harness program provides complete visibility of the emulation to the users. Interactive commands allow the inspection and modification of the memory and emulated registers, assembly and disassembly of instructions, setting of breakpoints and watch points, and more.
Debug Variants Available
The emulator comes in two versions which can be installed at the same time. A normal release version, and a debug version with asserts enabled. The debug version is helpful during simulator integration, but you do not have to pay the performance penalty of runtime asserts if you do not want to.
Exhaustive and Fully Automated Test Suite Enabling Nightly Builds
Each instruction is extensively tested to cover a wide range of possible operands and combinations. The testsuite includes not only instruction tests and functionality, but also real-world uses such as booting the Linux kernel, and several other operating systems. The complete testsuite is executed on every change to the emulator and the emulator release of both continuous builds and tagged versions is predicated on the 100% success of the tests.
Multi-Core and Multi-System Emulation
Multi-core processors (and multi-system emulation) is supported out of the box by the Terma Emulator. Several emulator cores can be run in either in a fully deterministic manner, or in parallel mode offering higher performance but at the cost of full determinism.
Portable
The emulator supports x86-64 Linux, and other POSIX (GNU/Linux, BSD, Solaris, macOS) systems can easily be supported. Windows support can be made available.
FUNCTIONALITY
The Terma Emulator can be used in two main ways:
- Linked with the command line test harness, providing a standalone binary which provides the emulation and simulation environment.
- As a shared library that can be combined or loaded in the corresponding simulation infrastructure or model.
Contact us
If you have any questions about our Emulators, please send us a message.
Need more details?
Then download our solution materials
Want to learn more?
If you have any questions about Star Trackers, please get in touch with our expert.