About UNISIM

Software simulation is the crux of all processor and systems-on-chips design processes. Due to the growing complexity of hardware on-chip systems, the growing complexity of software applications, and the growing impact of technology issues (power, process variability,...) on system design, software simulation methodology must rapidly evolve in the following ways:

UNISIM proposes, on top of SystemC, a set of architecture interfaces, and communication protocols between these interfaces, at different design granularity levels.

The goal of UNISIM is to build upon SystemC and add missing features to this environment. UNISIM is *not* a new environment, it is a SystemC *add-on*.

Simulators based on different environments, developed by different groups, can interoperate with minimal efforts, thanks to UNISIM architecture interfaces and communication protocols.

The main requirement is to modify existing simulators so that they become slaves of the UNISIM simulation engine, i.e., they can be called by UNISIM.

One of the major objectives of UNISIM is to enable automatic and systematic design-space exploration.

Among other features, automatic DSE is achieved thanks to the standardized architecture interfaces, and by empowering simulator modules with parameters introspection capabilities, as well as the possibility to query parameters of modules they are connected to. The UNISIM group is currently setting up an architecture browser which will automatically and permanently explore all possible architecture configurations, and maintain a permanent ranking of possible architectures, under various performance constraints.

With the intent of fostering a large library of modules, UNISIM comes with an open repository, where academics and engineers can upload open-source modules while retaining the full intellectual property of their work, and apply the license of their choice. The only requirement is that these modules or models implement at least one of UNISIM interfaces, in order to compose them with other modules.

UNISIM proposes a set of *services interfaces* for plugging many such models within simulators. In addition, it proposes a set of default such services implementations, but which can be easily replaced by other tools. These services include energy, area and cost (based on the CACTI model), and prototype full-system support now exists.

UNISIM is developing techniques for improving simulation speed, which can be transparently used with any target architecture.

UNISIM proposes to distribute control code in order to enable true reuse of a large share of simulation code.

This property is only available to simulators natively written in UNISIM. Native UNISIM simulators are either cycle-level or TLM (transaction-level modeling) simulators. Control distribution uses the same communication protocol used between architecture interfaces, so no new coding principles and syntax need to be learnt.