Shutterstock 1210203127 Sentinel Mission Ice Hero

Flight Processor Emulators

Flight Processor Emulators are an essential part of satellite simulators – both for testing of flight software and at the heart of operational simulators. They are essential for both developers and operators who need to run their spacecraft flight software unmodified.

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.

Illustration of ESA's PLATO spacecraft. ESA
ESA’s Planet Hunter

The PLATO Mission

The objective of PLATO (PLAnetary Transits and Oscillations of stars) is to find and study a large number of extrasolar planetary systems, with emphasis on the properties of terrestrial planets in the habitable zone around solar-like stars. PLATO has also been designed to investigate seismic activity in stars, enabling the precise characterization of the planet host star, including its age. The flight software for PLATO is developed using the our TEMU Emulator.

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.

Moonsurface Shutterstock

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.

Want to learn more?

If you have any questions about Star Trackers, please get in touch with our expert.

Portrait of Søren Pedersen.

Director, Sales and Business Development

Søren Pedersen

spds@terma.com