k630-Anwendung_Formale_Verifikation

k630-Anwendung_Formale_Verifikation

Page 1

page-01.png

Kapitel 6
Formale Spezifikation von Hardware:

  1. Boolesche Ausdrücke (Wiederholung)
  2. Binäre Entscheidungsdiagramme (BDDs)
  3. Anwendung: Formale Verifikation mit BDDs
    Albert-Ludwigs-Universität Freiburg
    Prof. Dr. Armin Biere
    Institut für Informatik

Page 2

page-02.png

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

page-03.png

Schaltrealisierung der ALU

ALU mit Eingängen , , Steuereingängen , Übertrag .

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

page-04.png

„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:

  1. Erstelle die Funktionstabelle für den 0. Ausgang der ALU („Spezifikation") und berechne das BDD dazu.
  2. Bestimme die Hardware, welche den 0. Ausgang ansteuert („Implementierung") und berechne das BDD dazu.
  3. Sind die BDDs gleich, ist die Implementierung korrekt!

Page 5

page-05.png

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

page-06.png

BDD für die Spezifikation

Variablenordnung: .

Reduziert bis auf Terminalknoten (wegen Übersichtlichkeit).

Page 7

page-07.png

Schaltrealisierung der ALU

ALU mit Eingängen , , Steuereingängen , Übertrag .

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

page-08.png

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

page-09.png

BDD für die Schaltrealisierung

Das BDD entspricht nicht dem für die Spezifikation!

Irgendwo muss ein Entwurfsfehler sein!

Page 10

page-10.png

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 , für welche gilt:

Mit BDDs ist das ganz einfach: Berechne BDD für

und betrachte einen beliebigen Pfad zu 1-Terminalknoten.

Page 11

page-11.png

Fehlerdiagnose

Ergebnis der XOR-Verknüpfung der beiden BDDs:

Ein Pfad zum 1-Terminal: , , , .

sind unbestimmt; setze z.B. , .

Die ALU soll also berechnen (da ).

Page 12

page-12.png

Simulation der gefundenen Belegung (1/3)

Simulation mit in der Schaltrealisierung.

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

page-13.png

Simulation der gefundenen Belegung (2/3)

Simulation mit : Signalwerte an den Gattern.

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

page-14.png

Simulation der gefundenen Belegung (3/3)

Simulationsergebnis: Ausgang der Implementierung liefert , Spezifikation erwartet .

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

page-15.png

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

page-16.png

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

page-17.png

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

page-18.png

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

page-19.png

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

page-20.png

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 von ReTI illustriert werden.

Konkret wollen wir zeigen, dass Treiber und nie gleichzeitig enabled sind.

Page 21

page-21.png

Zur Erinnerung: ReTI-Aufbau

ReTI-CPU mit Registern (PC, IN1, IN2, ACC), ALU, Bussen (A, D, L), SRAM und Steuersignalen.

Page 22

page-22.png

Eigenschaftsprüfung: Bus Contention (1/2)

Weise nach, dass es keine Eingangsbelegung gibt, für die und beide aktiv sind.

enabled in der Execute-Phase () für:

  • Befehle JUMP ()
  • Compute-Befehle () mit ()
  • MOVE-Befehl () mit ()

enabled in der Execute-Phase () für:

  • Befehl LOADI ()

Page 23

page-23.png

Eigenschaftsprüfung: Bus Contention (2/2)

Eigenschaft: Für alle Belegungen der relevanten Signale gilt stets:

Bedeutung: Zu jedem Zeitpunkt muss mindestens eines der Signale 1 sein, sie sind nie gleichzeitig 0 (aktiv).

Vorgehen mittels BDDs: Berechne BDD für , BDD für und die OR-Verknüpfung der beiden BDDs. Diese muss 1 sein, d.h. aus nur einem 1-Terminalknoten bestehen.

Falls nicht, liefern die Pfade zum 0-Terminalknoten die Belegungen, für welche die Eigenschaft verletzt ist!

Umsetzung mit SAT?

Page 24

page-24.png

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

page-25.png

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

page-26.png

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.