100 likes | 361 Views
a. E. T. b. b. T. T. E. E. c. c. E. E. d. T. T. T. E. 1. 0. Binary decision diagrams (BDD’s). Compact representation of a logic function ROBDD’s (reduced ordered BDD’s) are a canonical representation: equivalence of ROBDD’s implies that the functions are identical
E N D
a E T b b T T E E c c E E d T T T E 1 0 Binary decision diagrams (BDD’s) • Compact representation of a logic function • ROBDD’s (reduced ordered BDD’s) are a canonical representation: equivalence of ROBDD’s implies that the functions are identical • Example: f = abc + b’d + c’d • T = then edge, E = else edge • Same variable ordering on each path: a b c d (Ordered BDD) Material taken mostly from G. Hachtel and F. Somenzi, “Logic Synthesis and Verification Algorithms,” Kluwer Academic Publishers, Boston, MA, 1996.
Effect of variable ordering • Size of diagram varies with variable ordering a d b c b c a d b a E T E T d d c E T E T T b b E a E E E T T d c c T T E E T T E 1 0 1 0
a E T b b T T E E c c E E d T T T E 1 0 Relation to the Shannon expansion • Each node is basically a Shannon expansion • f = a fa + a’fa’ f fa’ fa
Building a BDD from a Shannon expansion f = abc + b’d + c’d b T E fb = ac + c’d c fbc’ = d T E fb’ = d fbc = a (… and so on …)
a b d c d a a d c d d b d c c BDD as a compact truth table • Truth table: complete ordered binary tree • Reduce this by combining isomorphic parts and removing redundant nodes (T,E point to same node) to get ROBDD redundant T E T E T E T E T T E T E T E E T T redundant E T 1 0 T E T E T E T E 1 1 1 0 0 0 T E T E BDD shown earlier for the ordering b c a d isomorphic 1 1 0 0 isomorphic
Multioutput BDD’s • (Notation: solid line = Then edge; dashed line = Else edge) • Example: F1 = b+c, F2 = a+ b+c Combined Multioutput BDD Separate BDD’s F2 F1 F2 F1 a a b b b c c c 1 0 1 0 1 0
Compactness of BDD’s • BDD’s are successful at compactly representing many common functions • XOR is an example of a function with a large SOP/POS representation, but a very compact BDD • Worst case: O(2n) nodes • Functions that require this many nodes do exist • Can use multilevel techniques to represent BDD’s more compactly (“partitioned ROBDD’s”)
Operations on BDD’s • Given BDD’s for functions f and g, can use Shannon expansion to see how operations are performed • Assume variables v1, v2 … vn • f <op> g = v1 (f <op> g)v1 + v1’ (f <op> g)v1’ = v1 (fv1 <op> gv1) + v1’ (fv1’ <op> gv1’) • Can now do this recursively • Pictorially: • Identify identical subtrees as we come up the recursion tree using a hashing function v1 T E (BDD for fv1 <op> gv1) (BDD for fv1’ <op> gv1’)