k623-Binaere_Entscheidungsdiagramme_BDDs_ITE-Beispiel_Variablenordnung
k623-Binaere_Entscheidungsdiagramme_BDDs_ITE-Beispiel_Variablenordnung
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
ITE-Berechnung: Beispiel (1/2)
BDDs:
: root , Blätter : root , Blätter : root , Blätter
Wir haben vorhin gerechnet:
Dies entspricht:
Wir wollen nun die rekursive ITE-Berechnung nachvollziehen.
Es liegt kein Terminalfall vor, obere Variable:
Page 3
ITE-Berechnung: Beispiel (2/2)
Berechne zunächst rekursiv
Rechne rekursiv mit Variable
Page 4
Beispiel:
Insgesamt:
Page 5
Beispiel:
Berechne zunächst rekursiv
Ein Terminalfall liegt vor:
Page 6
Beispiel – Ende
Durch die Verwendung der sogenannten Unique Table (UT) sind die berechneten BDDs bereits reduziert: Somit muss ITE nur noch einen Knoten
Ergebnis:
Page 7
Zur Komplexität von ITE
Bei der rekursiven Konstruktion von ITE überprüft man zunächst vor einem ITE-Aufruf, ob das BDD
Nur wenn dies nicht der Fall ist, wird das BDD durch den rekursiven Aufruf erzeugt, der Aufruf wird in der CT referenziert und das Ergebnis in die UT eingetragen.
Implementiert man dies effizient, wird die Komplexität von ITE zu
Ohne Beweis (betrachte Anzahl möglicher Einträge in CT).
Somit lässt sich etwa die Komplexität von
durch
Page 8
ITE-Algorithmus
function ITE(F, G, H):
// Überprüfe erst 4 Terminalfälle
if F == 1: return G
if F == 0: return H
if G == 1 and H == 0: return F
if G == H: return G
R = Lookup_Computed_Table(F, G, H)
if R exists: return R
x = Top_Variable(F, G, H) // Gleiche Variablenordnung
high = ITE(F_{x=1}, G_{x=1}, H_{x=1})
low = ITE(F_{x=0}, G_{x=0}, H_{x=0})
if high == low: return low
R = Find_Or_Add_in_Unique_Table(x, high, low)
Insert_in_Computed_Table((F, G, H), R)
return R
Page 9
Größe von BDDs
- Oft exponentiell.
- Hängt stark von der Variablenordnung ab.
- Siehe Beispiel auf der nächsten Folie.
- Für viele in der Praxis vorkommende Funktionen sind BDDs zumindest für einige Variablenordnungen kompakt.
- BDD-Minimierung: Finden einer „guten" Variablenordnung (ist wohl NP-hartes Problem).
- Exakte und heuristische Verfahren.
- Für einige Funktionen, u.a. Multiplizierer, ist BDD-Größe für jede Variablenordnung exponentiell.
Page 10
Einfluss der Variablenordnung
Beispiel:
Page 11
Einfluss der Variablenordnung
Beispiel:
Variablenordnung
Page 12
Einfluss der Variablenordnung
Beispiel:
| Variablenordnung | Größe |
|---|---|
| exponentiell | |
| linear |
Page 13
Schaltkreis direkt aus BDD
BDD:
Page 14
Schaltkreis direkt aus BDD
BDD → MUX-Schaltkreis: Erster MUX für
Page 15
Schaltkreis direkt aus BDD
Zweiter MUX für
Page 16
Schaltkreis direkt aus BDD
Dritter MUX für
Page 17
Schaltkreis direkt aus BDD
Vierter MUX für
Page 18
Schaltkreis direkt aus BDD
... beschreibt die Boolesche Funktion

















