Virtuelle Prototypen

Das Konzept des Embedded-System-Designs entstand kurz nachdem die ersten Mikroprozessoren auf den Markt kamen. Seitdem haben sich Embedded Systeme stark verbreitet. Die extremen Anforderungen heutiger Systeme an die Rechenleistung erfordern allerdings den Einsatz mehrerer CPU- und DSP-Cores in Verbindung mit Dutzenden oder gar Hunderten von Peripheriemodul- und Hardware-Beschleunigerblöcken sowie mehrstufigen Speicher-Strukturen, die alle durch komplexe hierarchische Bus- und CrossBar-Strukturen miteinander verbunden sind. Da wird die Fehlersuche schnell zum Albtraum.

Das Konzept des Embedded-System-Designs entstand kurz nachdem die ersten Mikroprozessoren auf den Markt kamen. Seitdem haben sich Embedded Systeme stark verbreitet. Die extremen Anforderungen heutiger Systeme an die Rechenleistung erfordern allerdings den Einsatz mehrerer CPU- und DSP-Cores in Verbindung mit Dutzenden oder gar Hunderten von Peripheriemodul- und Hardware-Beschleunigerblöcken sowie mehrstufigen Speicher-Strukturen, die alle durch komplexe hierarchische Bus- und CrossBar-Strukturen miteinander verbunden sind. Da wird die Fehlersuche schnell zum Albtraum.

Tatsächlich erweist sich das Debugging sehr komplexer Systeme als recht problematisch, da alle Bausteine in großen Single- Chip-Lösungen realisiert werden. Dadurch sind die Möglichkeiten der Einsicht in das Verhalten und die Kontrollierbarkeit in den Debugphasen stark eingeschränkt. Zudem nimmt der Softwareanteil in heutigen Systemen rapide zu. Es ist damit zu rechnen, dass ein typisches Mobiltelefon der nächsten Generation etwa zehn Millionen oder mehr Programmzeilen enthalten wird. Diese laufen im Kontext von mehreren Betriebssystemen, an die einhundert Gerätetreibern, mehreren Modem-Stacks, Echtzeit-Steueralgorithmen und Anwendungen wie Multimedia, E-Mail, Kalender, Datenbanken, Spielen usw. ab (Bild 1).

Diesen Herausforderungen lässt sich am besten durch eine frühzeitige (und möglichst optimale) Definition der Systemarchitektur begegnen, sowie durch den nebenläufigen Entwurf von Hardware und Software (Treiber, Middleware und Anwendungen). Rasch zunehmenden Einsatz finden VSPs (Virtuelle Systemprototypen) im gesamten Entwurfsablauf von Embedded Systemen.

Bei Virtuellen Systemprototypen handelt es sich um softwarebasierte, taktzyklen- und registerakkurate Modelle des Gesamtsystems, die dabei jedoch recht hohe Simulationsgeschwindigkeit erlauben. Dieses Entwurfsverfahren erfreut sich zunehmender Beliebtheit, da es schnell und effizient zu verbesserter Qualität und verkürzten Entwicklungszeiten führt. Dabei hat diese Vorgehensweise schon im Entwurf von mobilen Systemen und Consumerprodukten breite Akzeptanz gefunden, im Entwurf von Steuergeräten für Automobilelektronik befindet sich die Anwendung noch in den Startlöchern. Architekturentscheidungen lassen sich in einem Bruchteil der Zeit analysieren, welche heute übliche Methoden (basierend auf FPGA-Prototypen oder Emulation) benötigen, so dass innerhalb kurzer Zeit viele Varianten eines zukünftigen Systems ausgewertet werden können und sich die »optimale« mit guter Vorhersagbarkeit identifizieren lässt (Bild 2).

Dieser optimale VSP wird als ausführbare Spezifikation zur »goldenen Referenz « für das System verwendet. An dieser Stelle können die Hardwareentwickler mit der Erstellung eines detaillierten Designs beginnen, während die Softwareentwickler den VSP für das Portieren und Entwickeln der übrigen Software für das System verwenden können. Da VSPs fast genauso schnell wie Hardware-Implementierungen sind, lässt sich der komplette Entwicklungszyklus (Edit, Compile, Execute, Debug) so effizient wie bei realer Hardware durchführen. Aufgrund der hervorragenden Kontrollierbarkeit und Beobachtbarkeit des Modells ist dieser Ablauf mit VSPs aber stets produktiver (bessere Qualität zu einem früheren Zeitpunkt). VSPs können Echtzeitbetriebssysteme in wenigen Sekunden booten und Software bei Geschwindigkeiten von 20 MIPS bis 200 MIPS zyklengenau ausführen.