k621-Binaere_Entscheidungsdiagramme_BDDs_ROBDDs_kanonische_Darstellung

k621-Binaere_Entscheidungsdiagramme_BDDs_ROBDDs_kanonische_Darstellung

Page 1

page-01.png

Kapitel 6 – Formale Spezifikation von Hardware

  1. Boolesche Ausdrücke (Wiederholung)
  2. Binäre Entscheidungsdiagramme (BDDs)
    2.1 Kanonische Darstellung, ROBDDs
    2.2 Konstruktion von BDDs
    2.3 ITE-Beispiel, Variablenordnung
  3. Anwendung: Formale Verifikation mit BDDs
    Albert-Ludwigs-Universität Freiburg
    Prof. Dr. Armin Biere
    Institut für Informatik

Page 2

page-02.png

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: „" und „".

Wir kennen eindeutige Darstellungen einer Booleschen Funktion. Zum Beispiel:

  • Funktionstabelle
  • Kanonische disjunktive Normalform KDNF (alle Minterme)

Page 3

page-03.png

Motivation (ctd.)

Aber: Diese eindeutigen Darstellungen sind „sehr sperrig".

Einträge in der Funktionstabelle für Variablen.

Minterme für Funktionen in Variablen.

Ziel: Finde eine eindeutige, aber kompakte Darstellung Boolescher Funktionen.

Page 4

page-04.png

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

page-05.png

Illustration: Formaler Äquivalenztest

(Schaltkreis mit ) (Schaltkreis mit )

→ Eindeutige Darstellung der durch realisierten Booleschen Funktion Eindeutige Darstellung der durch realisierten Booleschen Funktion

Page 6

page-06.png

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

Optimierungen bei Cache-Ausnutzung, Garbage Collection, usw.

Page 7

page-07.png

Binary Decision Diagram – Syntax

Sei eine endliche Menge von Variablen.

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

Page 8

page-08.png

BDDs: Semantik

Gegeben sei ein BDD.

Definition: Sei die Funktion, die ein Teil-BDD ausgehend von Knoten beschreibt.

  • Ist ein Blatt, so beschreibt die konstante Funktion, die jede Variablenbelegung auf abbildet.
  • Ist ein innerer Knoten mit , so gilt die Kompositionsregel:

Page 9

page-09.png

BDDs: Beispiel

BDD mit Knoten: , Blätter:

Page 10

page-10.png

BDDs: Beispiel

Page 11

page-11.png

BDDs: Beispiel

Page 12

page-12.png

BDDs: Beispiel

Page 13

page-13.png

BDDs: Beispiel

Page 14

page-14.png

BDDs: Beispiel

Page 15

page-15.png

BDDs: Beispiel

Page 16

page-16.png

BDDs: Beispiel

Page 17

page-17.png

BDDs von typischen Funktionen

Seien beliebige Boolesche Variablen.

: Knoten , Blätter

Page 18

page-18.png

BDDs von typischen Funktionen

Seien beliebige Boolesche Variablen.

  • : Knoten , Blätter
  • : Knoten , Blätter

Page 19

page-19.png

BDDs von typischen Funktionen

Seien beliebige Boolesche Variablen.

  • : Knoten , Blätter
  • : Knoten , Blätter
  • : Knoten , Blätter

Page 20

page-20.png

BDDs von typischen Funktionen

Seien beliebige Boolesche Variablen.

  • : Knoten , Blätter
  • : Knoten , Blätter
  • : Knoten , Blätter
  • : Knoten , Blätter

Page 21

page-21.png

BDDs von typischen Funktionen

Seien beliebige Boolesche Variablen.

  • : Knoten , Blätter
  • : Knoten , Blätter
  • : Knoten , Blätter
  • : Knoten , Blätter
  • : Knoten , Blätter

Page 22

page-22.png

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

page-23.png

Beispiel für unterschiedliche Variablenordnung

BDD mit Variablenordnung :

Page 24

page-24.png

Beispiel für unterschiedliche Variablenordnung

BDD mit Variablenordnung :

BDD mit Variablenordnung :

Page 25

page-25.png

Beispiel für unterschiedliche Variablenordnung

BDD mit Variablenordnung :

BDD mit Variablenordnung :

Beide BDDs beschreiben die Boolesche Funktion .

Page 26

page-26.png

Vollständiges BDD

Ist ein geordnetes BDD, wobei alle Pfade von der Wurzel zu einem Blatt maximale Länge haben und für alle Knoten .

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

page-27.png

Zusammenhang: BDD ↔ Boolesche Funktion

Lemma 1: Jedes (geordnete) BDD stellt eine Boolesche Funktion dar.

Beweis: Ist die Wurzel des BDDs, dann erhält man mit der Kompositionsregel die dargestellte Boolesche Funktion .

Lemma 2: Zu jeder Booleschen Funktion existiert ein (geordnetes) BDD, das diese darstellt.

Beweis: Konstruiere vollständiges BDD aus Funktionstabelle.

Page 28

page-28.png

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

page-29.png

Reduzierte BDDs

Idee: Stelle Information möglichst kompakt dar, „isomorphe Teil-BDDs" werden identifiziert.

Definition: Ein BDD heißt reduziert, wenn

  1. es keinen nichtterminalen Knoten gibt mit Label und .
  2. keine verschiedenen Knoten und gibt, die gleich markiert sind und deren Low- und High-Kind (falls existent) jeweils identisch sind.

Page 30

page-30.png

Beispiel für reduzierte und nicht reduzierte BDDs (1/2)

Nicht reduziertes BDD mit Knoten: , Blätter:

Page 31

page-31.png

Beispiel für reduzierte und nicht reduzierte BDDs (1/2)

Identifikation isomorpher Knoten (4 Paare).

Page 32

page-32.png

Beispiel für reduzierte und nicht reduzierte BDDs (1/2)

Nach Identifikation isomorpher Knoten: reduziertes BDD mit Knoten , Blätter .

Page 33

page-33.png

Beispiel für reduzierte und nicht reduzierte BDDs (2/2)

Reduziertes BDD: , Blätter .

Page 34

page-34.png

Beispiel für reduzierte und nicht reduzierte BDDs (2/2)

Redundante Knoten im BDD markiert.

Page 35

page-35.png

Beispiel für reduzierte und nicht reduzierte BDDs (2/2)

Nach Entfernen redundanter Knoten: , Blätter .

Page 36

page-36.png

Beispiel: Reduktion eines BDDs (1/7)

Vollständiges BDD für 4 Variablen mit 16 Blättern.

Page 37

page-37.png

Beispiel: Reduktion eines BDDs (1/7)

Identifikation isomorpher Teil-BDDs:

  • (Wurzel)
  • (zwei isomorphe Teil-BDDs)
  • (zwei isomorphe Teil-BDDs)
  • (zwei Blätter)

Page 38

page-38.png

Beispiel: Reduktion eines BDDs (2/7)

Gleiche Struktur nach Identifikation der isomorphen Teil-BDDs.

Page 39

page-39.png

Beispiel: Reduktion eines BDDs (3/7)

Weitere Reduktion durch Entfernen redundanter Knoten.

Page 40

page-40.png

Beispiel: Reduktion eines BDDs (4/7)

Weitere Reduktion.

Page 41

page-41.png

Beispiel: Reduktion eines BDDs (5/7)

Reduziertes BDD mit , Blätter .

Page 42

page-42.png

Beispiel: Reduktion eines BDDs (5/7)

Gleiche Struktur mit markierten -Blättern.

Page 43

page-43.png

Beispiel: Reduktion eines BDDs (6/7)

Reduziertes BDD mit , , , .

Page 44

page-44.png

Beispiel: Reduktion eines BDDs (7/7)

Finale reduzierte Form:

  • (zwei isomorphe Teil-BDDs)
  • (zwei Blätter)

Page 45

page-45.png

Beispiel: Reduktion eines BDDs (7/7)

Finale reduzierte Form mit annotierten Teil-BDDs:

Page 46

page-46.png

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.