Im Simulator läuft das originale Binärabbild, das der Compiler auswirft. Das erlaubt dann auch Effekte, die auf der echten Hardware nicht möglich sind: Mit Simics kann ein Snapshot des aktuellen Systemzustands gespeichert werden – entweder, um Teammitgliedern einen bestimmten Effekt oder Arbeitspunkt zu demonstrieren und von hier aus weiterzuarbeiten, oder um von hier den Code rückwärts ablaufen zu lassen, um Fehler einzugrenzen. Letzterer Effekt kann auch mit einem Hardware Debugger erreicht werden, der einen Trace aufgezeichnet hat.
Eine weitere neue Funktion von Simics 5 ist die Fehlerinjektion: mittels eines Framework, das alle möglichen Fehlerquellen simulieren kann. So lassen sich diverse Szenarien durchspielen, wie z.B. den Ausfall eines Prozessorkerns, einer Netzwerkverbindung oder die elektrische Trennung eines PCI-Gerätes. Die Fehlersimulation ist besonders sinnvoll für die Zertifizierung von Systemen mit funktionalen Sicherheitsanforderungen nach ISO 26262. Die Reaktion der Software auf zahlreiche Fehlerfälle, die mit realer Hardware nur mit großem Aufwand durchführbar sind, lässt sich hier testen.
Ein anderer Anwendungsfall für Simulation sind IoT-Szenarien aus verteilten Systemen. Man denke z.B. an eine Smart-Meter-Installation mit Tausenden von angeschlossenen Messstationen, die noch dazu für die Abrechnung relevant sind. Hier können möglicherweise ungeahnte Effekte auftauchen, die sich einer Testinstallation mit nur wenigen Testgeräten nicht einstellen. Wie gut, wenn man die Fernablesung bzw. -steuerung tausender Smart Meters vorher simulieren kann.
Modellierung des Zielsystems
Voraussetzung für eine Simulation ist das Vorhandensein eines Software-Modells des Zielsystems. Um an diese Modelle zu gelangen, erhält der Kunde drei Dinge: fertige, lauffähige Simulationsplattformen, ein Modellierungs- und Debug Tool, um diese Modelle zu modifizieren, und schließlich IP-Blöcke für Peripherie wie USB, PCI, I2C und Memory Controller. Die lauffähigen Simulationsmodelle sind in der Regel die Referenz-Boards für die jeweiligen Plattformen, die von Simics unterstützt werden. Dazu zählen Boards für die verschiedenen x86-CPUs von Intel, PowerPC/PowerQUICC von Freescale und die Cortex-Referenz-Boards von ARM. Das im jeweiligen Projekt genutzte Zielsystem kann sich der Kunde von Wind River entweder als Dienstleistung modellieren lassen oder er kann es mit dem Modellierungs-Tool selbst entwerfen. Wer selbst IP-Blöcke besitzt und die Hardware-Beschreibungssprache SystemC nutzt, kann auch eigene Blöcke in Simics einbauen. Durch diese Flexibilität lassen sich auch spezielle SoCs nachbilden. Das Lizenzmodell von Simics umfasst zwei Komponenten: die Entwicklungs-Tools, die pro Arbeitsplatz lizenziert werden, und die Architekturlizenz. Eine einfache Installation mit einem Arbeitsplatz und Unterstützung für ein Referenz-Board beginnt bei ca. 4000 US-Dollar. Große Installationen mit vielen Teammitgliedern können dann allerdings in die Hunderttausende gehen.