210 likes | 359 Views
Representing Boolean Functions for Symbolic Model Checking. Supratik Chakraborty IIT Bombay. Example: 3-bit Counter. Model State transition graph defined by X0’ = NOT(x0) X1’ = XOR(x1, x0) X2’ = XOR(x2, x0.x1). x2. X2’. x1. X1’. Property The state x0,x1,x2 = 000
E N D
Representing Boolean Functions for Symbolic Model Checking Supratik Chakraborty IIT Bombay
Example: 3-bit Counter Model State transition graph defined by X0’ = NOT(x0) X1’ = XOR(x1, x0) X2’ = XOR(x2, x0.x1) x2 X2’ x1 X1’ Property The state x0,x1,x2 = 000 is always eventually reached from the current state. x0 X0’ Clk
Model Checking • Number of states, stored explicitly, may become too large (10120) • Symbolic model checking uses Boolean functions to compactly represent • Sets of states • Transition relation • Searching the states of the model translates to manipulation of Boolean functions • Satisfaction of a CTL property translates to satisfiability of an appropriate Boolean function.
Representing States and Transitions • For 3-bit counter, • Set of states x0,x1,x2 = {000, 010, 011, 001} can be represented by S (x0, x1, x2) = S(x) = x0. • Set of state transitions can be represented by Tr (x0, x1, x2, X0’, X1’, X2’) = Tr (x, X’) = (X0’ x0) AND (X1’ x1 x0)) AND (X2’ x2 (x1.x0))
Post Image Computation • Post(S0) = Set of states reachable in 1 step from S0 • Post(S0) = {x | y in S0 and Tr(y, x) = true} • Expressed as Boolean functions: Given S0 (x0, x1, x2), Post(S0 (x0, x1, x2)) = y0 y1 y2 . (S0 (y0, y1, y2) AND Tr(y0,y1,y2x0,x1,x2)) • Given functions S0 and Tr, function for Post (S0) obtained
Pre Image Computation • Pre(S0) = Set of states from which a state in S0 can be reached in 1 step • Pre(S0) = {x | y in S0 and Tr(x, y) = true} • Expressed as Boolean functions: Given S0 (x0, x1, x2), Pre(S0 (x0, x1, x2)) = y0 y1 y2 . (S0 (y0, y1, y2) AND Tr(x0,x1,x2,y0,y1,y2)) • Given functions S0 and Tr, function for Pre(S0) obtained
Representing Boolean Functions • Need to represent and efficiently manipulate Boolean functions • Commonly used representations: • Truth table, Karnaugh map, canonical sum-of-products representation • Too large to represent functions of 100s of variables • Size 2n for n-argument function • Operations (e.g. AND, NOT) inefficient • Not appropriate for practical applications • e.g., representing carry-out function of a 64-bit adder,
x1 x2 x2 x3 x3 x3 1 0 1 1 1 0 1 0 Binary Decision Diagrams • A graphical representation [Lee, Akers, Bryant] • Allows efficient representation & manipulation of Boolean functions in many practical cases • Enables efficient verification of a large class of designs • Worst-case behavior still exponential • Example: f = x1.x2 + x3’ • Represent as binary tree • Evaluating f: • Start from root • For each vertex labeled xi • take left branch if xi = 0 • else take right branch x3
Binary Decision Diagrams • Underlying principle: Shannon decomposition • f(x1, x2, x3) = x1.f(1, x2, x3) + x1’.f(0, x2, x3) = x1. (x2 + x3’) + x1’. (x3’) • Can be applied recursively to f(1, x2, x3) and f(0, x2, x3) • Gives tree • Extend to n arguments • But number of nodes can be exponential in number of arguments x1 x2 x2 x3 x3 x3 x3 1 0 1 1 1 0 1 0 f = x1.x2 + x3’
Restrictions on BDDs • Ordering of variables • In all paths from root to leaf, variable labels of nodes must appear in a specified order • Reduced graphs • No two distinct vertices must represent the same function • Each non-leaf vertex must have distinct children REDUCED ORDERED BDD (ROBDD): Directed Acyclic Graph x1 x2 x3 x2 x3 x2 x3 1 0 1 1 1 0 1 0 f = x’1.x’2 + x1.x2 + x1.x3’
ROBDDs x1 • Example: • Properties • Unique (canonical) representation of f for given ordering of variables • Checking f1 = f2 reduces to checking if ROBDDs are isomorphic • Shared subgraphs: size reduction • Every path doesn’t have all labels x1, x2, x3 • Every non-leaf vertex has a path to 0 and 1 So far good ! f = x1.x2 + x3’ x2 x3 0 1 x1 x2 x2 x3 x3 x3 1 0 1 1 1 0 1 0
Variable Ordering Problem f = x1.x2 + x3.x4 + x5.x6 1 1 2 3 3 3 5 5 5 5 4 2 2 2 2 5 4 4 6 6 0 1 0 1 Order 1,3,5,2,4,6 Order 1,2,3,4,5,6
Variable Ordering Problem • ROBDD size • Extremely sensitive to variable ordering • f = x_1.x_2 + x_3.x_4 + … x_2n-1.x_2n • 2n+2 vertices for order 1,2,3,4…2n-1,2n • 2n+1 vertices for order 1,n+1,2,n+2,…n,2n • Non-exponential regardless of variable ordering • f = x1.x2.x3….xn • n+2 vertices for all orderings • Exponential regardless of variable ordering • Output functions of integer multipliers [Bryant] • Determining best variable order for a function is computationally intractable • Heuristics: Static ordering, Dynamic ordering
Operations on BDDs OperationComplexity • Reduce O(|G|) • G reduced to canonical form • Apply O(|G1||G2|) • Any binary Boolean op: AND, XOR … ) • Compose O(|G1|2|G2|) • f(x1, x2, x5) composed with g(x3, x4) at position of x2 is: f(x1, g(x3,x4), x5) • Satisfy-one O(n) • Find one assignment of x1, x2, … xn for which f(x1, x2, … xn) = 1 • Restrict O(|G|) • Find ROBDD for f(x1, x2, …,1, ... xn) or f (x1, x2, … 0 … xn)
Operations on BDDs • Complexity polynomial in size of BDDs • If size can be kept under control, we are in business! • BDD size limiting factor in most applications • Ongoing research on variable ordering problem • If arguments to an operation are ROBDDs, result is also an ROBDD. • Quantification expressed as: • x1. f(x1, x2, x3) = f(0, x2, x3) + f(1, x2, x3) • x1. f(x1, x2, x3) = f(0, x2, x3) . f(1, x2, x3) • Useful in model checking if functions can be represented compactly
Neat tricks in BDD packages • Shared BDDs (SBDDs) • Multiple functions represented simultaneously as a multi-rooted DAG. • Each root and descendants form an ROBDD • Different roots can share subgraphs • Variable ordering same for all functions represented • Representing functions using ITE operator • if-then-else (x, y, z) = x.y + x’z • Natural implementation using BDDs • Can express any binary Boolean operation using ITE • NAND(x,y) = ITE(x,y’,0); NOT(x) = ITE(x,0,1) • Efficient algorithm for computing ITE with ROBDDs exist
Neat tricks in BDD packages f = x1.x2 + x3’ • Complement edges • If a vertex is reached by a complement edge, take the complement of the function represented by the vertex • Simplifies complementation • Saves duplication of computation • Hash Tables and Caches • Facilitates identifying ROBDD node for an already computed function • Avoids computation duplication • Very effective in practice x1 x2 x3 0 1 f = x1.x2’x3 + x1’x3’ x1 x2 x3 0 1
BDD Packages Out There • CUDD package (Colorado University) • CMU BDD package • TiGeR (commercial package) • CAL (University of California, Berkeley) • EHV • ...
Applications of BDDs • Extensively used in CAD applications for digital hardware • Some Interesting applications • Combinational logic verification • Is a combinational circuit functionally equivalent to another? • Sequential machine equivalence • Using combinational equivalence of next-state logic • For representing transition relations and state spaces in symbolic methods • Symbolic model checking • Test pattern generation • Automatic Test Pattern Generation (ATPG) essentially tries to come up with satisfying instances of a Boolean formula
Applications of BDDs • Timing verification • For representing false paths in a circuit succinctly • For representing discretized time encoded as binary values • Representing sets using characteristic functions • Symbolic simulation • Assign variables and/or constants to circuit inputs and determine output values in terms of variables • Representing sets of constant values • Logic synthesis and optimization • Other domains: Combinatorics, manipulating classes of combined Boolean algebraic expressions ...