Hard- und Software-Co-Design mit FPGAs #####

Hard-/Software-Co-Design lautet das Zauberwort zur Beschleunigung der Entwicklung mikroprozessorgesteuerter Geräte. Im Fall von programmierbaren Bausteinen wie etwa FPGAs heißt dies nicht nur, Baustein, Board und Applikations-Software gleichzeitig zu entwickeln, sondern auch, bei der Grenzziehung dessen, was in Hard- und was in Software implementiert wird, möglichst lange flexibel zu bleiben.

Hard-/Software-Co-Design lautet das Zauberwort zur Beschleunigung der Entwicklung mikroprozessorgesteuerter Geräte. Im Fall von programmierbaren Bausteinen wie etwa FPGAs heißt dies nicht nur, Baustein, Board und Applikations-Software gleichzeitig zu entwickeln, sondern auch, bei der Grenzziehung dessen, was in Hard- und was in Software implementiert wird, möglichst lange flexibel zu bleiben.

Die Entwicklung von elektronischen Geräten stellt den Ingenieur vor eine Reihe von Herausforderungen, die ihn in einen Zielkonflikt beim Entwicklungsprozess führen. Einerseits führen Globalisierung und Wettbewerbsdruck dazu, dass Produkte schnell auf den Markt gebracht werden müssen. Andererseits steigen Funktionsumfang und Komplexität der Geräte, und auch die Qualität soll nicht leiden. Hinzu kommt eine große Ungewissheit über künftig fällige technische Änderungen. Leah Jamieson, Dekanin für Ingenieurwissenschaften an der Universität von Purdue und 2007 Präsidentin des IEEE, sagte auf einem Vortrag anlässlich der DesignCon, dass die „Halbwertszeit“ des Wissens eines Ingenieurs – also die Zeit, in der die Hälfte des Wissens überholt sein wird – bei ca. fünf Jahren liegen mag.

Das bedeutet: Der Entwickler muss flexibel auf heute noch völlig unbekannte Anforderungen von Markt, Kunden oder technischen Gegebenheiten reagieren können. Bei einem so hohen „Unsicherheitsfaktor“ in Form von potentiellen Änderungen sollte jedoch der gesamte Prozess des Elektronikdesigns auf den Prüfstand gestellt werden. Einfach nur mit der aktuellen Methode weiterzumachen, ist langfristig keine überlebensfähige Option. Damit lässt sich die steigende Komplexität nicht bewältigen. Welche Probleme müssen aber adressiert werden, um anspruchsvollere Produkte noch schneller zu entwickeln? Wie können Entwickler durch volle Nutzung des Potentials aktueller Elektroniktechnologie der steigenden Komplexität Herr werden?

Die „provisorische“ Lösung zur Bewältigung dieser Probleme ist der Standard-Ansatz, mit dem die meisten Entwickler heute vertraut sind: Der Designprozess wird schlicht in aufeinander folgende Abschnitte aufgeteilt. Zuerst wird die Hardware erstellt, dann wird das Innenleben von programmierbaren Bausteinen wie FPGAs entwickelt und als „Krönung“ des Ganzen wird die Software für den Prozessor erstellt, der bereits im Hardware-Prozess implementiert wurde. Jede Stufe wird abgeschlossen, bevor die „Stafette“ übergeben wird, bis letztlich die Übergabe an die Fertigung erfolgt.

So praktikabel dieser Ansatz bisher war, so schränken doch einige Faktoren seine langfristige Brauchbarkeit stark ein. Die Design-Zyklen werden immer enger gepackt und die Abhängigkeiten eines sequenziellen Design-Flows lassen den Terminplan sehr anfällig werden. Daneben wird jeder Bereich für sich komplexer – die Grenzen dazwischen verwischen. Als Beispiel zwingen Softcore-Prozessoren kombiniert mit einer C-zu-Hardware-Synthese und griffbereiten IP-Cores den Entwickler dazu, ein Verständnis für mehrere verschiedene Disziplinen zu entwickeln und einen Satz von Tools zu beherrschen, um diese Teile miteinander zu verkoppeln. Die Anforderungen des Marktes und die Bauteiltechnologie dringen in Bereiche vor, die die Skalierbarkeit dieser sequenziellen Methode an ihre Grenzen bringt.