Verifikation Simulation und formale Methoden
Motivation Thema: formale (=exakte) Hardwareverifikation Ziel der formalen Hardwareverifikation automatische, zuverlässige und frühzeitige Erkennung von Entwurfsfehlern in Hardware (riesiges) Problem: akkurate Modellbildung zur Formulierung der Verifikationsaufgabe Komplexität der algorithmischen Probleme Formale Hardwareverifikation ist "paperware"!?
Hardware-Fehler Historisch erster "Bug": erster amerikanischer Computer: MARK I (Harvard University) August 1945: Multi-Additionstest scheitert Ursache: Relais #70, Tafel F: "Motte im Relais" Erkennung von Hardwarefehlern: Aufgabe des Testens: Erkennung von herstellungsbedingten Defekten oder von Defekten, die während des Betriebes auftreten Aufgabe der Entwurfsvalidierung: Erkennung von Fehlern, die in der Entwurfsphase gemacht werden
Typischer Entwurfsablauf mit Standarddesignsystem Spezifikation (schematic entry oder HDL (=hardware description language)) entity VHDL is port( A, B : in INTEGER range 0 to 7; C : out INTEGER range 0 to 7; ); end VHDL; architecture VHDL_1 of VHDL is begin C <= A + B; end VHDL_1; Logiksynthese Layoutgenerierung Umsetzung der Schaltungsidee in formale Beschreibung Designer "engineering changes" in-house tools Fehlererkennung durch Verifikation
Grundsätzliche Möglichkeiten der Entwurfsvalidierung (Verifikation) Simulation Evaluierung des Entwurfs durch Simulation von Stimuli, die entweder nach funktionalen Gesichtspunkten oder zufällig erzeugt werden Emulation Aufbau eines Prototypen, z.b. durch programmierbare Bausteine (field programmable gate arrays (FPGAs)) formale Verifikation Anwendung exakter mathematischer Methoden zum formalen Nachweis (automatisches Beweisen) von Schaltungseigenschaften
Konventionelle Technik: Simulation Konventionelle Technik: Simulation 1993: Entwurfsfehler im INTEL PENTIUM Prozessor wird übersehen!! Gründe für formale Verifikation: Simulation oder Emulation können niemals das gesamte mögliche Verhalten eines Entwurfs erfassen Reduktion der time-to-market, Vermeidung von Entwurfsiterationen durch frühzeitige Erkennung von Entwurfsfehlern worst case scenario: Herstellung und Auslieferung eines Chips mit Entwurfsfehler
Warum kann Simulation scheitern? Die internen Knoten der Schaltung sind aufgrund der logischen Struktur durch Zufallsmuster nur schlecht "stimulierbar", d.h. viele Signale ändern niemals ihren Wert. ("random pattern resistant"). z.b. AND-Gatter mit 10 Eingängen Schaltungen können eine sehr große sequentielle Tiefe haben. z.b. Zähler
Ein Designexperiment gegeben : eine PLA (programmable logic array) mit 10 Eingängen, 11 Ausgängen und 18 Produkttermen (optimiert mit ESPRESSO) eine Bibliothek mit den Gattertypen NOT, NAND2, NAND3, NOR2, NOR3 Designaufgabe: 1) Führe eine manuelle Synthese zur Erzeugung einer mehrstufigen Schaltung mit möglichst wenig Gattern durch 2) Übertrage die Schaltung durch schematic entry auf einen Rechner 3) Verifiziere die Schaltung durch Simulation Teilnehmer: 22 Studierende der Elektrotechnik
Verifikationsstrategien Strategie 1: Strategie 2: Strategie 3: Jede(r) Designer(in) soll einen Testsatz angeben, den er (sie) für besonders geeignet hält Simulation von 210 Zufallsvektoren Simuliere alle 1024 Vektoren (erschöpfender Test) Ausserdem: Es werden atomare Syntheseoperationen definiert (einzelne Optimierungsschritte, z.b. Ausklammern einer Variablen, Substitution eines Gatters, Anwendung der DeMorgan-Regel auf Teilschaltung etc.) und für jeden Designer gezählt. Auswertung: Mittels Strategie 3 werden alle Designfehler erkannt und in einem Diagnoseprozess den atomaren Syntheseschritten zugeordnet
Designexperiment - Ergebnisse Strategie 1: - im Durchschnitt haben die Designer 14 Testvektoren definiert - 6 von 22 Designs enthalten nach Anwendung von Strategie 1 immer noch Fehler - die Designs enthalten durchschnittlich noch 1,68 Fehler Strategie 2: - 5 von 22 Designs enthalten nach Anwendung von Strategie 2 immer noch Fehler - die Designs enthalten durchschnittlich noch 0,41 Fehler
Auswertung der Entwürfe min max Durchschnitt Kosten für Fläche 126 245 153 # atomare Operationen 480 982 598 # man hours 7 26 16 # Entwurfsfehler 0 52 8,5
Typische Entwurfsfehler Welche Fehler traten auf? Fehlertyp Anzahl fehlender oder zusätzlicher Inverter 91 falscher Gattertyp 35 falsch platzierte Eingangsverbindung eines Gatters 32 fehlende Eingangsverbindung eines Gatters 17 fehlendes Gatter 9 andere 4
Modell eines typischen Entwurfsvorgangs 100% Quality Synthesis Verif. Synthesis Verif. Time Designqualität während des Entwurfsvorgangs
Was soll verifiziert werden? Entspricht die formale Spezifikation des Designs den Vorstellungen des Designers? - Können unerwünschte Situationen auftreten? - Gibt es unerwünschte Nebeneffekte? - Funktionieren bestimmte Dinge immer? Aufgabe: "design verification" Methode / Tool: "property checking"
Was soll verifiziert werden? t die Spezifikation korrekt in eine Implementierung mgesetzt? ögliche Fehlerursachen: - bugs in der Synthesesoftware - fehlerhaftes Zusammenwirken verschiedener Tools (Schnittstellenprobleme) - manuelle Interaktion des Designers Aufgabe: "implementation verification" Methode / Tool: "equivalence checking" Äquivalenzvergleich
Was ist machbar? Beweismethoden z.b.: SAT-solving Graphendarstellungen (Boolescher) Funktionen Traversierung endlicher Automaten automatisches Theorembeweisen (Boyer-Moore, HOL) formales Verifikationswerkzeug für digitale Systeme Sprache z.b.: Aussagenlogik temporale Logik Prädikatenlogik Methoden zur Layoutextraktion Modellbildung z.b.: Boolesches Netzwerk, endlicher Automat Methoden zur Abstraktion und Reduktion vo Modellen
In der industriellen Praxis Designverifikation: property checking mittels symbolic model checking SAT-basiertes model checking Verifikation der Implementierung: equivalence checking Äquivalenzprüfung kombinatorischer und sequentieller Schaltungen