Share

Unisim, a system simulator for binary code testing

Unisim is an electronic systems simulation environment for easier testing of complex software binary code. It offers extensive emulation capabilities, from a single instruction set to an entire electronic system; is interoperable with outside testing, debugging, and code analysis tools; and includes a wide range of analysis support features.

 

Use

Testing binary code

Unisim is an electronic systems simulation environment for the testing and validation of binary code. It offers a vast array of emulation capabilities, from simple instruction sets to entire electronic systems. Unisim integrates a library of hardware component models that can be used to build complete virtual systems like integrated component sets and circuit boards.

It can simulate the most common processor architectures (ARM, Intel, PowerPC) and includes a variety of instrumentation tools (debuggers, profilers, etc.). The Unisim environment can interface with third-party testing, debugging, and code analysis tools, including Frama-C and Binsec.

This open-source environment is compatible with the SystemC and TLM simulation standards and can easily be enhanced with third-party virtual components and extensions.

A flexible, open-source environment with extensive analysis support features

Unisim offers a number of major advantages:

  • A modular architecture and the ability to interface with a wide range of analysis tools.
  • The ability to perform analyses without impacting execution, regardless of the number of probes used.
  • The ability to alter the execution of a program by dynamically influencing its environment or by introducing errors into the execution.
  • Generation of semantic representations from the interpreted binary code, which can then be used for subsequent analysis.
  • Instrumentation of programs and input-output signals.

Software profiling and debugging interface

Hardware signal instrumentation and software debugging interface

Overview

Validation of complex and custom-developed software

Unisim is designed to facilitate the validation of complex software (system software, embedded software, critical software, distributed software, etc.), especially in scenarios where formal analysis is a challenge.

It is primarily used to:

  • Assess the safety and security of code.
  • Validate the robustness of code in continuous integration (CI) workflows.
Use case

A cybersecurity acceptance testing environment

For today’s geolocation, image processing, and other embedded systems to work, the numerical computations that power them must be both accurate and stable. Unisim can be used to analyze the numerical accuracy of an embedded system in actual operating conditions.

It was used to instrument a simulated 64-bit PowerPC instruction set to analyze the accuracy of a geolocation algorithm for a rail-industry use case. Simulations of real-world situations were used on the algorithm, and issues at certain train travel speeds were identified.

Use case

Numerical stability

For today’s geolocation, image processing, and other embedded systems to work, the numerical computations that power them must be both accurate and stable. Unisim can be used to analyze the numerical accuracy of an embedded system in actual operating conditions.

It was used to instrument a simulated 64-bit PowerPC instruction set to analyze the accuracy of a geolocation algorithm for a rail-industry use case. Simulations of real-world situations were used on the algorithm, and issues at certain train travel speeds were identified.

Publications