Heterogeneous Co-simulation in Distributed Environments

Introducing Co-simulation

With the growing complexity of systems in areas such as automotive, aerospace, and communications, integrating software, hardware, and mechanical components is becoming more and more challenging. In many engineering organizations, the design of complex systems often requires the cooperation of several teams from different domains of expertise using different development and validation tools. Before actual implementation, system engineers today need to be able to validate the whole system behavior as early as possible in the development- cycle and at different abstraction levels.


In contrast to a point-to-point solution, where one simulator is able to communicate with only one other simulator, CosiMate uses an open architecture based on a co-simulation bus.

This solution offers two major advantages, an open architecture enabling multi-point integration and communication of heterogeneous simulators, and the ability to simulate models across the network optimizing CPU usage and simulation performance.

An Open Architecture

CosiMate's open architecture enables engineers to connect an unlimited number of simulation environments together. Once the co-simulation process is launched, users can interact with the native simulators transparently as if CosiMate were not present.

Models representing different abstraction levels can be mixed and matched providing a high degree of flexibility. Additionally, overall system quality is ensured because individual engineers can work in their familiar environment.

A Test Environment

CosiMate can be used as a test environment by integrating C/C++ debuggers or monitors as well as Test & Measurement tools such as LabVIEW or LabWindows/CVI. Specialized tools such as CarSim, which simulates and animates dynamic tests of cars and trucks, can also be supported.

CosiMate provides a set of utilities such as the Automatic Bench Generator to facilitate the development of models or code without co-simulating the full system. The generated C code allows an easy way to test a part of the system by using co-simulation techniques.

A Verification Platform

CosiMate has the ability to co-simulate a model at different levels of abstraction. This capability provides a complete environment to verify a non regression of the model functionality along the design flow.

Working with our OEM customers, Chiastek has proved the concept of software-in-the-loop (SIL) verification using CosiMate. Our customers created a complete framework for testing production control software against various plant models on PCs. The focus is mainly on software communication (direct I/O, CAN, ...), software initialization (calibration), system synchronization (task scheduling).

A Networked Architecture

CosiMate's networked architecture is well adapted to the concept of multi-disciplinary development teams. Because of its networked nature, CosiMate also supports the study of system behavior in a multi tasking mode by partitioning the model and distributing the simulation of the various parts across several different machines. In a number of customer benchmarks, this technique has contributed to significant improvements in simulation speed.

Performance Implications

CosiMate technology offers a solution to overcome the difficulty in simulating integrated, large-scale, dynamic systems. A potential speed up of 2 to 11 was measured on an actual large Simulink model. Significant reduction in simulation time is achieved by the traditional technique of partitioning (splitting the full-order model into several smaller parts) and simulating on single or multiple computers.

Interacting With CosiMate

Users configure the co-simulation session using a graphical drag & drop interface and must define the following set of parameters: simulator list (types, network addresses, etc.), connection types between simulators, and simulation start mode. A data manager controls data synchronization between the different environments throughout the co-simulation process. Internal scopes are also available to follow the activity on the co-simulation bus.

Interacting With Native Simulators

An important CosiMate feature is the easy way to interact with the user’s preferred simulator. In addition to the default CosiMate user interface to control the co-simulation, CosiMate allows execution in the native simulation environment. As a result, CosiMate users can easily work in their familiar environment controlling, debugging, and monitoring simulations as if they are running in a stand-alone mode.

Connecting a new simulator

The Interface Development Package is a set of tools, resources and documents to facilitate the integration of new simulators into the CosiMate framework. The new interface code is developed and compiled within the Eclipse CDT environment. The end user manages the components of the CosiMate library by using graphical XML editing capabilities in the Eclipse environment. The CosimMate API documentation is available and integrated in the Eclipse IDE.

In addition to creating new interfaces, users have the ability to customize the interfaces to simulators such as Simulink and Saber which are currently supported in the standard CosiMate offering.

Functional Mock-up Interface (FMI)

FMI defines an open interface to exchange models (FMI for Model-Exchange) between various simulation environments, or to co-simulate the models together (FMI for Co-simulation).

The integration done with the CosiMate platform allows co-simulation between FMI and non-FMI models as Simulink®, Saber® or other type of simulator. Moreover, the CosiMate environment is enough powerful and flexible to enable co-simulation between FMI for co-simulation and FMI for model-exchange models.


Key Features

  • Heterogeneous models: electrical, mechanical, electronic, hydraulic, algorithmic, state charts etc...
  • Hardware / Software co-verification, Hardware In the Loop testing.
  • Simulation across functional areas and across the organization.
  • Supports multiple simulators/ languages, multiple solvers within a unique simulator, multiple abstraction levels, various data type connections all possible within a single co-simulation project.
  • Flexibility for simulation dynamics: multiple communication sample times (time steps), and multiple start times are supported.
  • Supports pure Event-Driven co-simulations with HDL and UML based simulators.
  • Flexibility for event-driven communication: interrupt driven, busy-wait polling, buffering...
  • Supports heterogeneous co-simulation between solvers (e.g., Simulink) and event-driven (HDL, UML) or sequential (C) simulators.


  • Easy simulator connection using a graphical editor to build the co-simulation netlist.
  • Easy setup for remote access and Multi-platforms co-simulations.
  • Easy simulator management and customized simulators set up.
  • Easy framework integration by using by using standard XML descriptions for I/O.
  • Integrated debugging and monitoring features (Spy data, VCD and Excel traces, co-simulation controls).
  • A large choice of simulation types (e.g., continuous or discrete simulations) and data types (e.g., scalar, logic, vector, or bus).
  • LAN and WAN co-simulations.
  • MPI co-simulation

Supported Simulator and Language Interfaces



  • The MathWorks: Matlab®/Simulink®
  • IBM Rational: Statemate®, Rhapsody®
  • Synopsys: Saber®, SaberRD®, Saber® HDL, Virtualizer
  • MSC Software: Easy5®, Adams®
  • Autodesk: Inventor®
  • LMS International: Imagine.Lab AMESim®, Virtual.Lab® Motion
  • Powersys: EMTP-RV®
  • Powersim: PSIM®
  • Gamma Technologies: GT-Suite®
  • Mentor Graphics: Modelsim®
  • Engineering Center Steyr: Kuli®
  • Dassault Systèmes: Dymola®
  • OpenModelica®
  • Mechanical Simulation: CarSim®
  • Siemens: NX I-deas TMG
  • ANSYS Mechanical



  • FMI
  • Modelica
  • C, C++
  • Java

Note: Additional languages can be easily encapsulated in a C wrapper.

Supported Platforms

Windows 32 and 64-bits: XP Pro SP2+, Vista, 7, 10.