pdf-Datei mit 72-dpi-Fotos - FG Mikroelektronik, TU Berlin
pdf-Datei mit 72-dpi-Fotos - FG Mikroelektronik, TU Berlin
pdf-Datei mit 72-dpi-Fotos - FG Mikroelektronik, TU Berlin
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Technische Universität <strong>Berlin</strong><br />
Institut für <strong>Mikroelektronik</strong><br />
Lukas Bauer<br />
Dissertation<br />
Perspektiven des modernen ASIC-Designs<br />
Kapitel 4.4<br />
Seite 65<br />
Welche Systemfunktionen sich <strong>mit</strong> welchem Entwicklungsaufwand realisieren lassen und zu<br />
welchen Mehrkosten an Siliziumfläche sie führen oder ob die Aufteilung der auszuführenden<br />
Systemfunktionen zwischen Hardware und Software sinnvoll gewählt ist, sind Fragen, die vom<br />
Kunden oft nicht alleine beantwortet werden, da ihm das genaue Verständnis der technischen<br />
Möglichkeiten meistens fehlt. Die endgültige Systemkonzeption entsteht daher in der Regel während<br />
der technischen Vorverhandlungen zwischen Kunde und Designer.<br />
Anschließend wird die Spezifikation immer detaillierter ausgearbeitet. Spätestens dann, wenn es<br />
darum geht, z. B. die exakte Funktion einzelner Steuerbits zu definieren, ist aber meist der ASIC-<br />
Designer gefragt, da nur dieser die genaue Anzahl und Bedeutung der zur Steuerung der einzelnen<br />
Funktionen benötigten Registerbits etc. kennt bzw. da diese Details von der von ihm zu findenden<br />
Hardwarelösung abhängig sind. Es ergibt sich so<strong>mit</strong> ein fließender Übergang zwischen der<br />
Spezifikationsphase und der Design-Entry-Phase. Dies gilt insbesondere bei der Verwendung<br />
grafischer HDL-Programme, da bei diesen nicht mehr alle Details verbal, sondern vielfach direkt<br />
in HDL spezifiziert werden.<br />
4.4.2.3 Kontrolle statt ausschließlicher Simulation in der Design-Entry-Phase<br />
Die Design-Entry-Phase ist die kreativste Phase eines ASIC-Designs. Ausgehend von der<br />
Systemkonzeption bzw. der verbalen Spezifikation wird eine geeignete Lösung entworfen und als<br />
Schematic, in Form einer HDL-<strong>Datei</strong> oder <strong>mit</strong>tels grafischem HDL, also stets in computerlesbarer<br />
Form, eingegeben. Da sich dieser Schritt aufgrund der nicht computerlesbaren Zielvorgaben<br />
einer automatischen Verifikation entzieht, ist der Designer in dieser Phase am stärksten gefordert,<br />
die Korrektheit der eingegebenen Lösungsansätze zu überprüfen.<br />
Das klassische Prüfverfahren stellt hierbei die Simulation der Schaltung dar, bei der Testmuster<br />
erzeugt werden und die Reaktion der Schaltung anhand von grafischen Signalverläufen visuell<br />
begutachtet wird. Da letzteres bei Änderungen und Erweiterungen der Schaltung wiederholt<br />
erforderlich ist (und evtl. <strong>mit</strong> nachlassender Sorgfalt geschieht), erscheint es vorteilhafter, die<br />
erwarteten Reaktionen der Schaltung als Abfragen in der Simulationsdatei zu formulieren und so<br />
ggf. automatisch Fehlermeldungen zu erhalten. Bei Designs <strong>mit</strong> integrierter CPU kann dies sogar<br />
in Form von Programmen geschehen, die von der CPU ausgeführt werden. So wurden z. B. die<br />
UARTs in einem universellen Microcontroller simuliert, indem die zwei UARTs in der Simulationsdatei<br />
Chip-extern <strong>mit</strong>einander verbunden wurden und programmgesteuert Daten zwischen<br />
ihnen übertragen und ausgewertet wurden. Optional können dabei in der Testumgebung künstlich<br />
Übertragungsfehler generiert werden. An die Stelle der wiederholten visuellen Begutachtung von<br />
Kurvenformen tritt so die einmalige (und nicht zu unterschätzende) Prüfung, ob das ausgeführte<br />
Microcontrollerprogramm alle Fehler korrekt melden würde. Gleichzeitig ist menschliches Versagen<br />
bei der Interpretation der Simulationsergebnisse ausgeschlossen.<br />
Jede Simulation ist aber nur so gut, wie sie den Funktionsumfang der Schaltung überdeckt. Hier<br />
wird immer wieder übersehen, dass neben den erwünschten Schaltungsfunktionen auch getestet<br />
werden muss, ob unerwünschte Nebeneffekte auftreten. Soll beispielsweise ein Controller mehrere<br />
komplexe Startbedingungen überprüfen, so reicht es nicht aus, nur diese zu simulieren, da<br />
da<strong>mit</strong> nicht sichergestellt ist, dass der Controller nicht auch startet, wenn eine Startbedingung<br />
unvollständig erfüllt ist. Auch bei Registern wird zwar meist kontrolliert, ob sich ein Register an<br />
der spezifizierten Adresse schreiben und lesen lässt, es wird aber oft darauf verzichtet zu prüfen,<br />
ob es z. B. bei Schreibzugriffen auf falsche Adressen unverändert bleibt.<br />
Um all dies zu simulieren, wäre ein extrem hoher Simulationsaufwand erforderlich. Mit FPGA-<br />
Prototypenboards lässt sich bei solchen Details zwar die zeitraubende Simulation durch Tests in<br />
(evtl. skalierter) Echtzeit ersetzen, es bleibt aber der Aufwand für die Durchführung der einzel-