k621-Binaere_Entscheidungsdiagramme_BDDs_ROBDDs_kanonische_Darstellung
k621-Binaere_Entscheidungsdiagramme_BDDs_ROBDDs_kanonische_Darstellung
Page 1
Kapitel 6 – Formale Spezifikation von Hardware
- Boolesche Ausdrücke (Wiederholung)
- Binäre Entscheidungsdiagramme (BDDs)
2.1 Kanonische Darstellung, ROBDDs
2.2 Konstruktion von BDDs
2.3 ITE-Beispiel, Variablenordnung - Anwendung: Formale Verifikation mit BDDs
Albert-Ludwigs-Universität Freiburg
Prof. Dr. Armin Biere
Institut für Informatik
Page 2
Motivation
... zur Eindeutigkeit der Darstellung Boolescher Funktionen
Die Darstellung einer gegebenen Booleschen Funktion als Schaltkreis oder als Boolescher Ausdruck ist im Allgemeinen nicht eindeutig.
Beispiel: „
Wir kennen eindeutige Darstellungen einer Booleschen Funktion. Zum Beispiel:
- Funktionstabelle
- Kanonische disjunktive Normalform KDNF (alle Minterme)
Page 3
Motivation (ctd.)
Aber: Diese eindeutigen Darstellungen sind „sehr sperrig".
Ziel: Finde eine eindeutige, aber kompakte Darstellung Boolescher Funktionen.
Page 4
Wozu Eindeutigkeit?
Zur schnellen Überprüfung, ob zwei Boolesche Funktionen äquivalent sind.
Beispiel: Ein Designer hat Optimierungen an der Hardware vorgenommen und 15 Gatter gespart. Hat er dabei vielleicht die Funktionalität verändert?
→ Erzeuge eindeutige Darstellung für alten und neuen Block und vergleiche.
→ Dieses Vorgehen nennt man (Formalen) Äquivalenzcheck oder auf Englisch (Formal) Equivalence Checking.
Page 5
Illustration: Formaler Äquivalenztest
→ Eindeutige Darstellung der durch
Page 6
Binäre Entscheidungsdiagramme (Binary Decision Diagrams)
BDDs repräsentieren Boolesche Funktionen eindeutig und kompakt.
→ Enthält genau die gleiche Information wie eine Funktionstabelle.
Es gibt Verfahren, um BDD aus einem Schaltkreis zu erzeugen. → Man muss nicht erst die Funktionstabelle erzeugen.
Es existieren Software-Packages, die Erzeugung und Manipulation von BDDs unterstützen (BDD-Bibliotheken):
- CUDD von Fabio Somenzi (University of Colorado): http://web.mit.edu/sage/export/tmp/y/usr/share/doc/polybori/cudd/cuddIntro.html
- Sylvan von Tom van Dijk (University of Twente): https://trolando.github.io/sylvan
Optimierungen bei Cache-Ausnutzung, Garbage Collection, usw.
Page 7
Binary Decision Diagram – Syntax
Sei
Definition: Ein BDD ist
- ein azyklischer gerichteter Graph
mit- genau einer Wurzel,
für alle inneren Knoten .
- Jeder Knoten
hat eine Markierung
- Die Nachfolger (Kinder) eines inneren Knoten
sind- das Low-Kind:
, - das High-Kind:
.
- das Low-Kind:
Page 8
BDDs: Semantik
Gegeben sei ein BDD.
Definition: Sei
- Ist
ein Blatt, so beschreibt die konstante Funktion, die jede Variablenbelegung auf abbildet. - Ist
ein innerer Knoten mit , so gilt die Kompositionsregel:
Page 9
BDDs: Beispiel
BDD mit Knoten:
Page 10
BDDs: Beispiel
Page 11
BDDs: Beispiel
Page 12
BDDs: Beispiel
Page 13
BDDs: Beispiel
Page 14
BDDs: Beispiel
Page 15
BDDs: Beispiel
Page 16
BDDs: Beispiel
Page 17
BDDs von typischen Funktionen
Seien
Page 18
BDDs von typischen Funktionen
Seien
: Knoten , Blätter : Knoten , Blätter
Page 19
BDDs von typischen Funktionen
Seien
: Knoten , Blätter : Knoten , Blätter : Knoten , Blätter
Page 20
BDDs von typischen Funktionen
Seien
: Knoten , Blätter : Knoten , Blätter : Knoten , Blätter : Knoten , Blätter
Page 21
BDDs von typischen Funktionen
Seien
: Knoten , Blätter : Knoten , Blätter : Knoten , Blätter : Knoten , Blätter : Knoten , Blätter
Page 22
Variablenordnung
Definition: Ein BDD heißt geordnet, wenn auf jedem Pfad von der Wurzel zu einem Blatt jede Variable höchstens einmal (oder keinmal) als Markierung vorkommt und die Variablen stets in der selben Reihenfolge abgefragt werden.
Diese Reihenfolge heißt Variablenordnung.
Page 23
Beispiel für unterschiedliche Variablenordnung
BDD mit Variablenordnung
Page 24
Beispiel für unterschiedliche Variablenordnung
BDD mit Variablenordnung
BDD mit Variablenordnung
Page 25
Beispiel für unterschiedliche Variablenordnung
BDD mit Variablenordnung
BDD mit Variablenordnung
Page 26
Vollständiges BDD
Ist ein geordnetes BDD, wobei alle Pfade von der Wurzel zu einem Blatt maximale Länge haben und
Entspricht genau der Funktionstabelle (Beweis klar).
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 0 |
Page 27
Zusammenhang: BDD ↔ Boolesche Funktion
Lemma 1: Jedes (geordnete) BDD stellt eine Boolesche Funktion dar.
Beweis: Ist
Lemma 2: Zu jeder Booleschen Funktion existiert ein (geordnetes) BDD, das diese darstellt.
Beweis: Konstruiere vollständiges BDD aus Funktionstabelle.
Page 28
Eindeutigkeit von BDDs
- Nicht geordnete BDDs sind nicht eindeutige Darstellungen, ebenso BDDs mit unterschiedlicher (nicht fester) Variablenordnung.
- (aber eben immer abhängig von der Variablenordnung)
- Die vollständigen BDDs sind eindeutige Darstellungen (da die Funktionstabelle eindeutig ist).
- Aber: Funktionstabelle ineffizient
Reduktion von BDDs
Page 29
Reduzierte BDDs
Idee: Stelle Information möglichst kompakt dar, „isomorphe Teil-BDDs" werden identifiziert.
Definition: Ein BDD heißt reduziert, wenn
- es keinen nichtterminalen Knoten
gibt mit Label und . - keine verschiedenen Knoten
und gibt, die gleich markiert sind und deren Low- und High-Kind (falls existent) jeweils identisch sind.
Page 30
Beispiel für reduzierte und nicht reduzierte BDDs (1/2)
Nicht reduziertes BDD mit Knoten:
Page 31
Beispiel für reduzierte und nicht reduzierte BDDs (1/2)
Identifikation isomorpher Knoten (4 Paare).
Page 32
Beispiel für reduzierte und nicht reduzierte BDDs (1/2)
Nach Identifikation isomorpher Knoten: reduziertes BDD mit Knoten
Page 33
Beispiel für reduzierte und nicht reduzierte BDDs (2/2)
Reduziertes BDD:
Page 34
Beispiel für reduzierte und nicht reduzierte BDDs (2/2)
Redundante Knoten im BDD markiert.
Page 35
Beispiel für reduzierte und nicht reduzierte BDDs (2/2)
Nach Entfernen redundanter Knoten:
Page 36
Beispiel: Reduktion eines BDDs (1/7)
Vollständiges BDD für 4 Variablen
Page 37
Beispiel: Reduktion eines BDDs (1/7)
Identifikation isomorpher Teil-BDDs:
(Wurzel) (zwei isomorphe Teil-BDDs) (zwei isomorphe Teil-BDDs) (zwei Blätter)
Page 38
Beispiel: Reduktion eines BDDs (2/7)
Gleiche Struktur nach Identifikation der isomorphen Teil-BDDs.
Page 39
Beispiel: Reduktion eines BDDs (3/7)
Weitere Reduktion durch Entfernen redundanter Knoten.
Page 40
Beispiel: Reduktion eines BDDs (4/7)
Weitere Reduktion.
Page 41
Beispiel: Reduktion eines BDDs (5/7)
Reduziertes BDD mit
Page 42
Beispiel: Reduktion eines BDDs (5/7)
Gleiche Struktur mit markierten
Page 43
Beispiel: Reduktion eines BDDs (6/7)
Reduziertes BDD mit
Page 44
Beispiel: Reduktion eines BDDs (7/7)
Finale reduzierte Form:
(zwei isomorphe Teil-BDDs) (zwei Blätter)
Page 45
Beispiel: Reduktion eines BDDs (7/7)
Finale reduzierte Form mit annotierten Teil-BDDs:
Page 46
Satz von Bryant (1986)
Satz: ROBDDs (Reduced Ordered BDDs, geordnete, reduzierte BDDs) sind kanonische Darstellungen Boolescher Funktionen.
Ohne Beweis.
Bedeutung: Für eine fixe Variablenordnung ist ein ROBDD eine eindeutige Darstellung für eine Boolesche Funktion.
Notation: Ab sofort bezeichnen wir ROBDDs als BDDs.













































