k630-Anwendung_Formale_Verifikation
k630-Anwendung_Formale_Verifikation
Page 1
Kapitel 6
Formale Spezifikation von Hardware:
- Boolesche Ausdrücke (Wiederholung)
- Binäre Entscheidungsdiagramme (BDDs)
- Anwendung: Formale Verifikation mit BDDs
Albert-Ludwigs-Universität Freiburg
Prof. Dr. Armin Biere
Institut für Informatik
Page 2
Formale Verifikation
Ziel: Mit formalen Methoden weitgehend automatisch feststellen, ob der Entwurf korrekt ist.
Hier: Nur grobe Prinzipien, es gibt eine Vielzahl von Weiterentwicklungen, die auch im Einsatz sind.
Äquivalenz-Check als Beispiel: Vergleich der Spezifikation mit der Implementierung.
Hier: Komplexeres Beispiel (ein „Slice" der ReTI-CPU) mit Hilfe von BDDs.
Page 3
Schaltrealisierung der ALU
ALU mit Eingängen
| Operation | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 0 | 0 | 1 | |
| 0 | 1 | 0 | |
| 0 | 1 | 1 | |
| 1 | 0 | 0 | |
| 1 | 0 | 1 | |
| 1 | 1 | 0 | |
| 1 | 1 | 1 |
Page 4
„0-tes Slice der ALU"
Das „0-te Slice" ist der Teil der kombinatorischen Logik, der den 0. Ausgang der ALU berechnet.
Das Vorgehen für die gesamte CPU wäre identisch, die BDDs jedoch (sehr) viel größer.
Vorgehen:
- Erstelle die Funktionstabelle für den 0. Ausgang der ALU („Spezifikation") und berechne das BDD dazu.
- Bestimme die Hardware, welche den 0. Ausgang ansteuert („Implementierung") und berechne das BDD dazu.
- Sind die BDDs gleich, ist die Implementierung korrekt!
Page 5
Spezifikation für das 0-te Slice
| 0. Ausgang | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 0 | 0 | 1 | |
| 0 | 1 | 0 | |
| 0 | 1 | 1 | |
| 1 | 0 | 0 | |
| 1 | 0 | 1 | |
| 1 | 1 | 0 | |
| 1 | 1 | 1 |
Page 6
BDD für die Spezifikation
Variablenordnung:
Reduziert bis auf Terminalknoten (wegen Übersichtlichkeit).
Page 7
Schaltrealisierung der ALU
ALU mit Eingängen
| Operation | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 0 | 0 | 1 | |
| 0 | 1 | 0 | |
| 0 | 1 | 1 | |
| 1 | 0 | 0 | |
| 1 | 0 | 1 | |
| 1 | 1 | 0 | |
| 1 | 1 | 1 |
Page 8
Hardware für das „0-te Slice"
Schaltkreis für den 0. Ausgang mit Gattern: AND, EXOR, MUX, gesteuert durch
| Operation | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 0 | 0 | 1 | |
| 0 | 1 | 0 | |
| 0 | 1 | 1 | |
| 1 | 0 | 0 | |
| 1 | 0 | 1 | |
| 1 | 1 | 0 | |
| 1 | 1 | 1 |
Page 9
BDD für die Schaltrealisierung
Das BDD entspricht nicht dem für die Spezifikation!
Irgendwo muss ein Entwurfsfehler sein!
Page 10
Im Entwurf ist ein Fehler – aber wo?
Wir wollen nicht nur wissen, dass der Entwurf fehlerhaft ist, sondern den Fehler finden (und dann beheben)!
Dies wird „Diagnose von Entwurfsfehlern" genannt.
Ein mögliches Vorgehen: Finde eine Belegung der Eingänge, für die Spezifikation und Implementierung nicht übereinstimmen.
Wir suchen also eine Belegung von
Mit BDDs ist das ganz einfach: Berechne BDD für
und betrachte einen beliebigen Pfad zu 1-Terminalknoten.
Page 11
Fehlerdiagnose
Ergebnis der XOR-Verknüpfung der beiden BDDs:
Ein Pfad zum 1-Terminal:
Die ALU soll also
Page 12
Simulation der gefundenen Belegung (1/3)
Simulation mit
| Operation | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 0 | 0 | 1 | |
| 0 | 1 | 0 | |
| 0 | 1 | 1 | |
| 1 | 0 | 0 | |
| 1 | 0 | 1 | |
| 1 | 1 | 0 | |
| 1 | 1 | 1 |
Page 13
Simulation der gefundenen Belegung (2/3)
Simulation mit
| Operation | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 0 | 0 | 1 | |
| 0 | 1 | 0 | |
| 0 | 1 | 1 | |
| 1 | 0 | 0 | |
| 1 | 0 | 1 | |
| 1 | 1 | 0 | |
| 1 | 1 | 1 |
Page 14
Simulation der gefundenen Belegung (3/3)
Simulationsergebnis: Ausgang der Implementierung liefert
| Operation | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 0 | 0 | 1 | |
| 0 | 1 | 0 | |
| 0 | 1 | 1 | |
| 1 | 0 | 0 | |
| 1 | 0 | 1 | |
| 1 | 1 | 0 | |
| 1 | 1 | 1 |
Page 15
Analyse der Simulationsergebnisse
- Es werden zwei Zahlen subtrahiert, die mit „0" enden. Das Ergebnis soll mit „1" enden.
- Das kann nicht sein, die ALU subtrahiert falsch.
- Die Dateneingänge des Addierers sind richtig.
- Der Übertragseingang des Addierers ist aber falsch, er hätte bei Subtraktion 1 sein müssen!
- Der Fehler muss in der Logik liegen, die den Übertragseingang steuert. Das sind 4 Gatter.
- Tatsächlich sind ein AND- und ein XOR-Gatter vertauscht.
- Vgl. die (richtige) Folie aus Kap. 3.5.
Page 16
Original-Folie aus Kapitel 3
Korrekte ALU-Schaltrealisierung (zum Vergleich).
| Operation | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 0 | 0 | 1 | |
| 0 | 1 | 0 | |
| 0 | 1 | 1 | |
| 1 | 0 | 0 | |
| 1 | 0 | 1 | |
| 1 | 1 | 0 | |
| 1 | 1 | 1 |
Page 17
Was hat die formale Analyse gebracht?
- Wir mussten den Fehler nach wie vor manuell suchen, ...
- ... allerdings in den 4 Gattern und nicht in der gesamten Schaltung!
- Es gibt (komplexere) Diagnose-Ansätze, die voll-automatisch (oder fast voll-automatisch) arbeiten.
- Außerdem würden wir, wenn wir die Analyse mit der korrigierten Schaltung wiederholen, wissen, dass die Implementierung nun korrekt ist und wir keine weiteren Fehler suchen müssen!
Page 18
Ist die Analyse den Aufwand wert?
- Es ist sehr kompliziert, BDDs aufzuschreiben und ihre Verknüpfungen auszurechnen.
- Dadurch ist es auch fehleranfällig.
- Woher weiß man, dass man bei den BDD-Operationen keinen Rechen- oder Schreibfehler gemacht hat?
- Antwort: Software-Werkzeuge, die Manipulation von BDDs übernehmen!
- Diese können BDDs mit Millionen Knoten repräsentieren und in vertretbarer Zeit verarbeiten.
- Spezifikation und Implementierung werden aus Dateien eingelesen und BDDs automatisch erzeugt/verglichen.
- Standard in modernen Entwurfsabläufen!
Page 19
Formale Verifikation
Ziel: Mit formalen Methoden weitgehend automatisch feststellen, ob der Entwurf korrekt ist.
bisher Äquivalenz-Check: Vergleich der Spezifikation mit der Implementierung.
Hier: Komplexeres Beispiel (ein „Slice" der ReTI-CPU) mit Hilfe von BDDs bzw. SAT.
Eigenschafts-Check: Überprüfung, ob bestimmte Eigenschaften gelten.
Hier: Abwesenheit von Bus Contention auf einem Bus.
Page 20
Eigenschaftsprüfung
Ziel: Nachweis, dass eine bestimmte Eigenschaft immer gilt, manchmal gilt oder nie gelten kann.
Es gibt spezielle Sprachen, um solche Eigenschaften zu formulieren.
An dieser Stelle soll das Vorgehen am Beispiel von Bus Contention auf Bus
Konkret wollen wir zeigen, dass Treiber
Page 21
Zur Erinnerung: ReTI-Aufbau
ReTI-CPU mit Registern (PC, IN1, IN2, ACC), ALU, Bussen (A, D, L), SRAM und Steuersignalen.
Page 22
Eigenschaftsprüfung: Bus Contention (1/2)
Weise nach, dass es keine Eingangsbelegung gibt, für die
- Befehle JUMP (
) - Compute-Befehle (
) mit ( ) - MOVE-Befehl (
) mit ( )
- Befehl LOADI (
)
Page 23
Eigenschaftsprüfung: Bus Contention (2/2)
Eigenschaft: Für alle Belegungen der relevanten Signale
Bedeutung: Zu jedem Zeitpunkt muss mindestens eines der Signale 1 sein, sie sind nie gleichzeitig 0 (aktiv).
Vorgehen mittels BDDs: Berechne BDD für
Falls nicht, liefern die Pfade zum 0-Terminalknoten die Belegungen, für welche die Eigenschaft verletzt ist!
Umsetzung mit SAT?
Page 24
Eigenschaftsprüfung: Diskussion
- Wir haben eine selbstverständliche Aussage bewiesen (Signale bei unterschiedlichen Befehlen aktiv).
- Der Entwerfer hätte aber, etwa bei der Logik-Optimierung, einen Fehler machen können, die zur Verletzung der Eigenschaft geführt hätte.
- Wir sind noch lange nicht fertig.
- Auf dem
-Bus und auf anderen Bussen gibt es noch viele Möglichkeiten, wie Bus Contention auftreten kann. - Selbst wenn wir sämtliche Quellen für Bus Contention ausschließen, wissen wir noch nicht, dass der Prozessor korrekt implementiert ist. Wir wissen nur, dass keine Bus Contention auftritt.
Page 25
Formale Verifikation in der Praxis
- Eigene Produktklasse der Entwurfsautomatisierungsindustrie (auch in Deutschland).
- Äquivalenzprüfung ist Routine-Bestandteil beim Entwurf von komplexen Hardware-Produkten.
- Eigenschaftsprüfung spielt im Hardware- und im Software-Bereich eine immer größere Rolle, der Einsatz ist jedoch mit Schwierigkeiten verbunden.
- Formulierung von Eigenschaften erfordert hochqualifizierte (und teure) Mitarbeiter.
- Es ist oft nicht klar, wann genug Eigenschaften erstellt wurden und das Produkt als korrekt anzusehen ist.
Page 26
Zusammenfassung: Formale Spezifikation
- Boolesche Funktionen, Boolesche Ausdrücke, kombinatorische Schaltkreise und BDDs sind ineinander transformierbar.
- Formale Verifikation kann Entwurfsqualität enorm steigern und die Entwurfszeiten reduzieren.
- Ein Großteil des Aufwandes kann von einem Rechner geleistet werden. Dabei spielen effiziente Datenstrukturen und korrespondierende, darauf abgestimmte Verfahren (BDDs, Äquivalenz- und Eigenschaftsprüfung) eine entscheidende Rolle.
- Voraussetzung dafür ist eine formal-mathematische Beschreibung, die der Rechner ohne menschliche Hilfe interpretieren kann.

























