Co-simulatie
Co-simulatie (Co-operatieve simulatie) is een verschijnsel in de computer- en elektronicawereld. Het is een simulatiemethode die individuele componenten toelaat om informatie uit te wisselen op een samenwerkende manier en gesimuleerd te worden door verschillende simultaan lopende simulatietools.

Drie hoofdmethoden 

1. Hardware en software die aan elkaar gekoppeld zijn in een simulatie, enkel gebruik makend van virtuele modellen.
De hardware wordt door software nagebootst en draait in een simulator. 
Voorbeeld: Alle hardware/software draaien in standaard simulators op één of meerdere werkstations (PC’s).

2. Hardwaresimulatie met links naar echte hardware. 
De softwarecode is omgezet in hardwarecode, er is dus geen sprake meer van software. De hardwarecode wordt wel gesimuleerd aan de hand van een hardware simulatieprogramma.
Voorbeeld: Een Register Transfer Language (RTL) simulatie in een hardware simulatieprogramma dat een fysische beschrijving van een Application-Specific Integrated Circuit (ASIC) simuleert.

3. Softwaremodel met links naar echte hardware.
Software en hardware verwerken samen gegevens en werken ofwel met een cycle-stepping interface ofwel met een asynchrone interface.
De software gebruikt voor bepaalde delen van de uitvoering hardware (bijvoorbeeld bepaalde delen van een FPGA).

Interfaces 

Wanneer we co-simuleren bestaan er 2 typen van interfaces met hardware, namelijk: cycle-stepping en asynchroon.

Cycle-stepping 

Cycle-stepping wil zeggen dat de hardware volledig synchroon moet zijn met één kloksignaal. Voor iedere cyclus worden, vanuit de simulatie, de invoer gegeven aan het Device Under Test (DUT). De clock edges of intervallen worden naar de DUT gestuurd. De outputs van de DUT worden naar de inputs van de simulatie gelezen.

Met co-simulatie is het de bedoeling om aan uitvoersnelheid te winnen. Deze verhoging van snelheid komt doordat hardware sneller is dan software. Door synchroon te werken zorgen loopt de software tegelijk met de hardware. Hierdoor is het mogelijk gegevens realtime te verwerken en loopt de hardware dus niet voor op de software.

Asynchroon 

Wanneer de berekeningen eerst in software worden gedaan en de resultaten daarna pas naar hardware worden verstuurd, spreken we van asynchroon. We kunnen ook zeggen dat eerst de software werkt en de gegevens daarna verstuurd naar de hardware. De hardware verwerkt deze gegevens dan en stuurt deze dan terug naar de software. Een voordeel hiervan is dat de DUT op zijn maximumsnelheid kan werken. Een nadeel is dat het meer complexe DUT interfaces in hardware nodig heeft. Een ander nadeel is dat de hardware achterloopt op de software. Hierdoor is het niet mogelijk om realtime te werken.

Externe links 
www.flowmaster.com/flowmaster_cosimulation

Computerhardware
Software engineering