ECE 667 - Synthesis & Verification - Lecture 9 1 ECE 697B (667) Spring 2006 ECE 697B (667) Spring 2006 Synthesis and Verification of Digital Systems Multi-level.

Slides:



Advertisements
Similar presentations
Courtesy RK Brayton (UCB) and A Kuehlmann (Cadence) 1 Logic Synthesis Factored Forms.
Advertisements

Linear Equations in Linear Algebra
Design and Analysis of Experiments
ECE 667 Synthesis & Verification - Algebraic Division 1 ECE 667 ECE 667 Synthesis and Verification of Digital Systems Multi-level Minimization Algebraic.
1 Consensus Definition Let w, x, y, z be cubes, and a be a variable such that w = ax and y = a’z w = ax and y = a’z Then the cube xz is called the consensus.
1 Outline Division is central in many operations. –What is it (in the context of Boolean functions)? –What to divide (divisor) with? –How to divide (quotient.
Common Subexpression Elimination Involving Multiple Variables for Linear DSP Synthesis 15 th IEEE International Conference on Application Specific Architectures.
ENEE 6441 On Quine-McCluskey Method > Goal: find a minimum SOP form > Why We Need to Find all PIs? f(w,x,y,z) = x’y’ +wxy+x’yz’+wy’z = x’y’+x’z’+wxy+wy’z.
ECE Synthesis & Verification - Lecture 19 1 ECE 667 Spring 2009 ECE 667 Spring 2009 Synthesis and Verification of Digital Systems Functional Decomposition.
Lecture 5 Multilevel Logic Synthesis
Reducing Hardware Complexity of Linear DSP Systems by Iteratively Eliminating Two-Term Common Subexpressions IEEE/ACM Asia South Pacific Design Automation.
ECE Synthesis & Verification - Lecture 9b 1 ECE 697B (667) Fall 2004 ECE 697B (667) Fall 2004 Synthesis and Verification of Digital Systems Boolean.
ECE Synthesis & Verification - Lecture 14 1 ECE 697B (667) Spring 2006 ECE 697B (667) Spring 2006 Synthesis and Verification of Digital Systems BDD-based.
Multilevel Logic Synthesis -- Algebraic Methods. ENEE 6442 Why Algebraic Methods? > What is our goal? minimization, maximally factored form. > Algebraic.
Logic Synthesis 3 1 Logic Synthesis Part III Maciej Ciesielski Univ. of Massachusetts Amherst, MA.
ECE 667 Synthesis & Verification - Multi-level Optimization 1 ECE 667 ECE 667 Synthesis and Verification of Digital Systems Multi-level Minimization (Kernel-based)
ECE Synthesis & Verification 1 ECE 667 ECE 667 Synthesis and Verification of Digital Systems Exact Two-level Minimization Quine-McCluskey Procedure.
ECE 667 Synthesis and Verification of Digital Systems
1 Outline Division is central in many operations. –What is it (in the context of Boolean functions)? –What to divide (divisor) with? –How to divide (quotient.
Logic Decomposition ECE1769 Jianwen Zhu (Courtesy Dennis Wu)
Overview Part 2 – Circuit Optimization 2-4 Two-Level Optimization
Courtesy RK Brayton (UCB) and A Kuehlmann (Cadence) 1 Logic Synthesis Two-Level Minimization I.
ECE 667 Synthesis and Verification of Digital Systems
ECE Synthesis & Verification - Lecture 8 1 ECE 697B (667) Spring 2006 ECE 697B (667) Spring 2006 Synthesis and Verification of Digital Systems Multi-level.
CSE Autumn Combinational Logic - 1 Multi-Level Optimization z1. Reduce number of literals yfewer literals means less transistors (less space)
Courtesy RK Brayton (UCB) and A Kuehlmann (Cadence) 1 Logic Synthesis Two-Level Minimization II.
Zvi Kohavi and Niraj K. Jha 1 Capabilities, Minimization, and Transformation of Sequential Machines.
ECE 331 – Digital System Design
Based on slides by: Charles Kime & Thomas Kaminski © 2004 Pearson Education, Inc. ECE/CS 352: Digital System Fundamentals Lecture 9 – Multilevel Optimization.
Department of Computer Engineering
Graph Partitioning Problem Kernighan and Lin Algorithm
Statistical Analysis Professor Lynne Stokes Department of Statistical Science Lecture 14 Sequential Experimentation, Screening Designs, Fold-Over Designs.
State university of New York at New Paltz Electrical and Computer Engineering Department Logic Synthesis Optimization Lect19: Multi Level Logic Minimization.
CS143 Review: Normalization Theory Q: Is it a good table design? We can start with an ER diagram or with a large relation that contain a sample of the.
Zvi Kohavi and Niraj K. Jha 1 Multi-level Logic Synthesis.
1 Multi-Level Logic Synthesis Slides courtesy of Andreas Kuehlmann (Cadence)
Fractional Factorial Design Full Factorial Disadvantages Full Factorial Disadvantages –Costly (Degrees of freedom wasted on estimating higher order terms)
Optimization Algorithm
The Integers. The Division Algorithms A high-school question: Compute 58/17. We can write 58 as 58 = 3 (17) + 7 This forms illustrates the answer: “3.
Courtesy RK Brayton (UCB) and A Kuehlmann (Cadence) 1 Logic Synthesis Algebraic Division.
Two Level Networks. Two-Level Networks Slide 2 SOPs A function has, in general many SOPs Functions can be simplified using Boolean algebra Compare the.
Multi-Level Logic Optimization. Multi-Level Logic Synthesis Two Level Logic : –Espresso –Programmable Logic Array (PLA) Multilevel Logic : –Standard Cell.
Minimum Cover of F. Minimal Cover for a Set of FDs Minimal cover G for a set of FDs F: –Closure of F = closure of G. –Right hand side of each FD in G.
Dynamic Programming1. 2 Outline and Reading Matrix Chain-Product (§5.3.1) The General Technique (§5.3.2) 0-1 Knapsack Problem (§5.3.3)
Digital Logic (Karnaugh Map). Karnaugh Maps Karnaugh maps (K-maps) are graphical representations of boolean functions. One map cell corresponds to a row.
CMPUT Computer Organization and Architecture II1 CMPUT329 - Fall 2003 Topic 4: Cost of Logic Circuits and Karnaugh Maps José Nelson Amaral.
Boolean Functions 1 ECE 667 ECE 667 Synthesis and Verification of Digital Circuits Boolean Functions Basics Maciej Ciesielski Univ.
BDS – A BDD Based Logic Optimization System Presented by Nitin Prakash (ECE 667, Spring 2011)
ECE 301 – Digital Electronics Minimizing Boolean Expressions using K-maps, The Minimal Cover, and Incompletely Specified Boolean Functions (Lecture #6)
Data Mining Association Rules Mining Frequent Itemset Mining Support and Confidence Apriori Approach.
ELEC692 VLSI Signal Processing Architecture Lecture 12 Numerical Strength Reduction.
1 1.2 Linear Equations in Linear Algebra Row Reduction and Echelon Forms © 2016 Pearson Education, Ltd.
State university of New York at New Paltz Electrical and Computer Engineering Department Logic Synthesis Optimization Lect18: Multi Level Logic Minimization.
1 CS 352 Introduction to Logic Design Lecture 2 Ahmed Ezzat Boolean Algebra and Its Applications Ch-3 + Ch-4.
©2010 Cengage Learning SLIDES FOR CHAPTER 3 BOOLEAN ALGEBRA (continued) Click the mouse to move to the next page. Use the ESC key to exit this chapter.
CHAPTER 6 Quine-McCluskey Method
Logic Synthesis Boolean Division.
Lecture 7 Multi-Level Gate Networks
Lesson 2.9 Objective: Probability permutations and combinations
ECE 667 Synthesis and Verification of Digital Systems
Lecture 3 Algebraic Simplification
Optimized Implementation of Logic Function
Optimized Implementation of Logic Function
ECE 331 – Digital System Design
EECS 465: Digital Systems Lecture Notes # 2
ECE 667 Synthesis and Verification of Digital Systems
Optimization Algorithm
Exploring Partially ordered sets
VLSI CAD Flow: Logic Synthesis, Placement and Routing Lecture 5
ECE 331 – Digital System Design
Presentation transcript:

ECE Synthesis & Verification - Lecture 9 1 ECE 697B (667) Spring 2006 ECE 697B (667) Spring 2006 Synthesis and Verification of Digital Systems Multi-level Minimization - Algebraic division Slides adopted (with permission) from A. Kuehlmann, UC Berkeley, 2003

ECE Synthesis & Verification - Lecture 9 2 Outline Division and factorization – –Definition – –Examples Algebraic vs Boolean division – –Algorithms – –Applications Finding good divisors – –Kernels and co-kernels

ECE Synthesis & Verification - Lecture 9 3 Factorization Given an F in SOP form, how do we generate a “good” factored form Division operation: – –central in many operations – –need to find a good divisor D – –apply the actual division results in quotient Q and remainder R Applications: – –factoring – –substitution – –extraction

ECE Synthesis & Verification - Lecture 9 4 Division Definition 1: An operation OP is called division if, given two SOP expressions F and G, it generates expressions H and R, such that: F = GH + R – –G is called the divisor – –H is called the quotient – –R is called the remainder Definition 2: If GH is an algebraic product, then OP is called an algebraic division (denoted F // G) otherwise GH is a Boolean product and OP is a Boolean division (denoted F  G).

ECE Synthesis & Verification - Lecture 9 5 Division ( f = gh+r ) Example: f = ad + ae + bcd + j g 1 = a + bc g 2 = a + b Algebraic division: – –f // a = d + e, r = bcd + j – –f // (bc) = d, r = ad + ae + j – –h 1 = f // g 1 = d, r 1 = ae + j Boolean division: – –h 2 = f  g 2 = (a + c)d, r 2 = ae + j. i.e. f = (a+b)(a+c)d + ae + j

ECE Synthesis & Verification - Lecture 9 6 Division Definition 3: G is an algebraic factor of F if there exists an algebraic expression H such that F = GH using algebraic multiplication. Definition 4: G is an Boolean factor of F if there exists an expression H such that F = GH using Boolean multiplication. Example: f = ac + ad + bc + bd (a+b) is an algebraic factor of f since f = (a+b)(c+d) f = a’b + ac + bc (a+b) is a Boolean factor of f since f = (a+b)(a’+c)

ECE Synthesis & Verification - Lecture 9 7 Why Use Algebraic Methods? Need spectrum of operations – – algebraic methods provide fast algorithms Treat logic function like a polynomial – –efficient data structures – –fast methods for manipulation of polynomials available Loss of optimality, but results are quite good Can iterate and interleave with Boolean operations In specific instances slight extensions available to include Boolean methods

ECE Synthesis & Verification - Lecture 9 8 Weak Division Weak division is a specific case of algebraic division. Definition 5: Given two algebraic expressions F and G, a division is called weak division if it is algebraic and R has as few cubes as possible. The quotient H resulting from weak division is denoted by F/G. THEOREM: Given expressions F and G, expressions H and R generated by weak division are unique.

ECE Synthesis & Verification - Lecture 9 9 Algorithm ALGORITHM WEAK_DIV(F,G) { // G={g 1,g 2,...}, f=(f 1,f 2,...} foreach g i  G{ V gi =  foreach f j  F { if(f j contains all literals of g i ) { v ij =f j - literals of g i V gi =V gi  v ij } H =   V gi R = F - GH return (H,R); }

ECE Synthesis & Verification - Lecture 9 10 Example of WEAK_DIV Example: divide F by G F = ace + ade + bc + bd + be +a’b + ab G = ae + b V ae = c + d V b = c + d + e + a’ + a H = c + d = F/G H =  V g i R = be + a’b + ab R = F \ GH F = (ae + b)(c + d) + be + a’b + ab

ECE Synthesis & Verification - Lecture 9 11 Efficiency Issues We use filters to prevent trying a division. G is not an algebraic divisor of F if: G contains a literal not in F. G has more terms than F. For any literal, its count in G exceeds that in F. F is in the transitive fanin of G.

ECE Synthesis & Verification - Lecture 9 12 Division - What do we divide with? Weak_Div provides a methods to divide an expression for a given divisor How do we find a “good” divisor? – –Restrict to algebraic divisors – –Generalize to Boolean divisors Problem: – –Given a set of functions { F i }, find common weak (algebraic) divisors.

ECE Synthesis & Verification - Lecture 9 13 Kernels and Kernel Intersections Definition 6: An expression is cube-free if no cube divides the expression evenly (i.e. there is no literal that is common to all the cubes). (ab + c) is cube-free (ab + ac) and abc are not cube-free Note: a cube-free expression must have more than one cube. Definition 7: The primary divisors of an expression F are the set of expressions D(F) = { F/c | c is a cube }.

ECE Synthesis & Verification - Lecture 9 14 Kernels and Kernel Intersections Definition 8: The kernels of an expression F are the set of expressions K(F) = {G | G  D(F) and G is cube-free}. In other words, the kernels of an expression F are the cube-free primary divisors of F. Definition 9: A cube c used to obtain the kernel K = F/c is called a co-kernel of K. C(F) is used to denote the set of co-kernels of F.

ECE Synthesis & Verification - Lecture 9 15 Example Example: x = adf + aef + bdf + bef + cdf + cef + g = (a + b + c)(d + e)f + g kernelsco-kernels a+b+cdf, ef d+eaf, bf, cf (a+b+c)(d+e)f+g1

ECE Synthesis & Verification - Lecture 9 16 Fundamental Theorem THEOREM: If two expressions F and G have the property that  k F  K(F),  k G  K(G)  | k G  k F |  1 (i.e., k G and k F have at most one term in common), then F and G have no common algebraic multiple divisors (i.e. with more than one cube). Important: If we “kernel” all functions and there are no nontrivial intersections, then the only common algebraic divisors left are single cube divisors.

ECE Synthesis & Verification - Lecture 9 17 The Level of a Kernel Definition 10: A kernel is of level 0 (K 0 ) if it contains no kernels except itself. A kernel is of level n (K n ) if it contains at least one kernel of level (n-1), but no kernels (except itself) of level n or greater K 0 (F)  K 1 (F)  K 2 (F) ...  K n (F)  K(F). level-n kernels = K n (F) \ K n-1 (F) K n (F) is the set of kernels of level k or less. Example: F = (a + b(c + d))(e + g) k 1 = a + b(c + d)  K 1  K 0 ==> level-1 k 2 = c + d  K 0 k 3 = e + g  K 0

ECE Synthesis & Verification - Lecture 9 18 Kerneling Algorithm Algorithm KERNEL(j, G) { // l i = literal associated with variable i R =  if(CUBE_FREE(G)) R = {G} // scan variables in predefined order // i = index of lexicographically ordered literals for(i=j+1,...,n) { if(l i appears only in one term) continue if(  k  i, l k  all cubes of G/l i )continue R = R  KERNEL(i,MAKE_CUBE_FREE(G/l i ) } return R } MAKE_CUBE_FREE(F) removes algebraic cube factor from F i = index of lexicographically ordered literals

ECE Synthesis & Verification - Lecture 9 19 Kernel Generation - Example F = ace + bce + de + g // n = 6 variables, {a,b,c,d,e,g} Call KERNEL (0, F) – –i = 1, I 1 = aliteral a appears only once, continue – –i = 2, I 2 = bliteral b appears only once, continue – –i = 3, I 3 = c make_cube_free(F/c) = (a+b) call KERNEL(3, (a+b)) – –the call considers variables 4,5,6 = {d,e,g} – no kernels return R = {(a+b)} – –i = 4, I 4 = dliteral d appears only once, continue – –i = 5, I 5 = e make_cube_free(F/e) = (ac+bc+d) call KERNEL(5, (ac+bc+d)) – –the call considers variable 6 = {g} – no kernels – –return R = {(a+b), (ac+bc+d)} – –i = 6, I 6 = gliteral g appears only once, continue, stop Return R  {(a+b), (ac+bc+d), (ace+bce+de+g)}

ECE Synthesis & Verification - Lecture 9 20 Kerneling Algorithm - efficiency KERNEL(0, F) returns all the kernels of F. Notes: The test If (  k  i, l k  all cubes of G/l i ) continue is a major efficiency factor. In our example (previous slide) it saved us from repeating kernel (a+b) for i = 5, variable e. It also guarantees that no co-kernel is tried more than once. Can be used to generate all co-kernels.

ECE Synthesis & Verification - Lecture 9 21 Kerneling Illustrated abcd + abce + adfg + aefg + adbe + acdef + beg a b c (a) c d e ac+d+g g d+ecd+g f ce+g f b+cf e d b+df e b+ef d c d+e c+e c+d b c d e (bc + fg)(d + e) + de(b + cf) c(d+e) + de d(c+e) + ce e(c+d) + cd a(d+e)

ECE Synthesis & Verification - Lecture 9 22 co-kernelskernels 1a((bc + fg)(d + e) + de(b + cf))) + beg a(bc + fg)(d + e) + de(b + cf) abc(d+e) + de abcd + e abdc + e abec + d acb(d + e) + def acdb + ef Note: f/bc = ad + ae = a(d + e) Kerneling Illustrated

ECE Synthesis & Verification - Lecture 9 23 Applications - Factoring Algorithm FACTOR(F) { if(F has no factor) return F // e.g. if |F|=1, or F is an OR of single literals // or of no literal appears more than once D = CHOOSE_DIVISOR(F) (Q,R) = DIVIDE(F,D) return FACTOR(Q)×FACTOR(D) + FACTOR(R) // recur } – –Different heuristics can be applied for CHOOSE_DIVISOR – ) –Different DIVIDE routines may be applied (e.g. also Boolean divide)

ECE Synthesis & Verification - Lecture 9 24 Example and Problems of Factor Example: F = abc + abd + ae + af + g D = c + d Q = ab P = ab(c + d) + ae + af + g O = ab(c + d) + a(e + f) + g O is not optimal since not maximally factored. Can be further factored to a(b(c + d) + e + f) + g The problem occurs when quotient Q is a single cube, and some of the literals of Q also appear in the remainder R. Notation: F = the original function, D = the divisor, Q = the quotient, P = the partial factored form, O = the final factored form by FACTOR. Restrict to algebraic operations only.

ECE Synthesis & Verification - Lecture 9 25 Solving the Problem Solving this problem: Check if the quotient Q is not a single cube, then done, else,Check if the quotient Q is not a single cube, then done, else, Pick a literal l 1 in Q which occurs most frequently in cubes of F.Pick a literal l 1 in Q which occurs most frequently in cubes of F. Divide F by l 1 to obtain a new divisor D 1. Now, F has a new partial factored form (l 1 )(D 1 ) + (R 1 ) and literal l 1 does not appear in R 1.Divide F by l 1 to obtain a new divisor D 1. Now, F has a new partial factored form (l 1 )(D 1 ) + (R 1 ) and literal l 1 does not appear in R 1.Note: The new divisor D 1 contains the original D as a divisor because l 1 is a literal of Q. When recursively factoring D 1, D can be discovered again.

ECE Synthesis & Verification - Lecture 9 26 Second Problem with FACTOR Example: F = ace + ade + bce + bde + cf + df D = a + b Q = ce + de P = (ce + de)(a + b) + (c + d) f O = e(c + d)(a + b) + (c + d)f O is not maximally factored because (c + d) is common to both products e(c + d)(a + b) and remainder (c + d)f. The final factored form should have been: (c+d)(e(a + b) + f) Notation: F = the original function, D = the divisor, Q = the quotient, P = the partial factored form, O = the final factored form by FACTOR.

ECE Synthesis & Verification - Lecture 9 27 Second Problem with FACTOR Solving the problem: Essentially, we reverse D and Q ! Make Q cube-free to get Q 1 Obtain a new divisor D 1 by dividing F by Q 1 If D 1 is cube-free, the partial factored form is F = (Q 1 )(D 1 ) + R 1, and can recursively factor Q 1, D 1, and R 1 If D 1 is not cube-free, let D 1 = cD 2 and D 3 = Q 1 D 2. We have the partial factoring F = cD 3 + R 1. Now recursively factor D 3 and R 1.

ECE Synthesis & Verification - Lecture 9 28 Improved Factoring Improved Factoring Algorithm GFACTOR(F, DIVISOR, DIVIDE) { D = DIVISOR(F) if(D = 0) return F Q = DIVIDE(F,D) if (|Q| = 1) return LF(F, Q, DIVISOR, DIVIDE) Q = MAKE_CUBE_FREE(Q) (D, R) = DIVIDE(F,Q) if (CUBE_FREE(D)) { Q = GFACTOR(Q, DIVISOR, DIVIDE) D = GFACTOR(D, DIVISOR, DIVIDE) R = GFACTOR(R, DIVISOR, DIVIDE) return Q × D + R } else { C = COMMON_CUBE(D) return LF(F, C, DIVISOR, DIVIDE) }}

ECE Synthesis & Verification - Lecture 9 29 Improved Factoring Algorithm LF(F, C, DIVISOR, DIVIDE) { L = BEST_LITERAL(F, C) // most frequent (Q, R) = DIVIDE(F, L) C = COMMON_CUBE(Q) // largest one Q = CUBE_FREE(Q) Q = GFACTOR(Q, DIVISOR, DIVIDE) R = GFACTOR(R, DIVISOR, DIVIDE) return L × C × Q + R }

ECE Synthesis & Verification - Lecture 9 30 Improving the Divisor Various kinds of factoring can be obtained by choosing different forms of DIVISOR and DIVIDE. CHOOSE_DIVISOR: – –LITERAL - chooses most frequent literal – –QUICK_DIVISOR - chooses the first level-0 kernel – –BEST_DIVISOR - chooses the best kernel DIVIDE: – –Algebraic division – –Boolean division

ECE Synthesis & Verification - Lecture 9 31 Factoring Algorithms x = ac + ad + ae + ag + bc + bd +be + bf + ce + cf + df + dg LITERAL_FACTOR: x = a(c + d + e + g) + b(c + d + e + f) + c(e + f) + d(f + g) QUICK_FACTOR: x = g(a + d) + (a + b)(c + d + e) + c(e + f) + f(b + d) GOOD_FACTOR: (c + d + e)(a + b) + f(b + c + d) + g(a + d) + ce

ECE Synthesis & Verification - Lecture 9 32 Example: QUICK_FACTOR QUICK_FACTOR uses GFACTOR, First level-0 kernel DIVISOR, and WEAK_DIV. x = ae + afg + afh + bce + bcfg + bcfh + bde + bdfg + bcfh D = c + d ---- level-0 kernel (first found) Q = x/D = b(e + f(g + h)) ---- weak division Q = e + f(g + h) ---- make cube-free (D, R) = WEAK_DIV(x, Q) ---- second division D = a + b(c + d) x = QD + R R = 0 x = (e + f(g + h)) (a + b(c + d))

ECE Synthesis & Verification - Lecture 9 33 Application - Decomposition Decomposition is the same as factoring except: – –divisors are added as new nodes in the network. – –the new nodes may fan out elsewhere in the network in both positive and negative phases Algorithm DECOMP(f i ) { k = CHOOSE_KERNEL(f i ) if (k == 0) return f m+j = k // create new node m + j f i = (f i /k)y m+j +(f i /k’)y’ m+j +r // change node i using new // node for kernel DECOMP(f i ) DECOMP(f m+j ) } Similar to factoring, we can define – –QUICK_DECOMP: pick a level 0 kernel and improve it. – –GOOD_DECOMP: pick the best kernel.

ECE Synthesis & Verification - Lecture 9 34 Re-substitution Idea: An existing node in a network may be a useful divisor in another node. If so, no loss in using it (unless delay is a factor). Algebraic substitution consists of the process of algebraically dividing the function f i at node i in the network by the function f j (or by f’ j ) at node j. During substitution, if f j is an algebraic divisor of f j, then f i is transformed into f i = qy j + r (or f i = q 1 y j + q 0 y’ j + r ) In practice, this is tried for each node pair of the network. For n nodes in the network  O(n 2 ) divisions. fifififi fjfjfjfj yjyjyjyj

ECE Synthesis & Verification - Lecture 9 35 Extraction Recall: Extraction operation identifies common sub-expressions and manipulates the Boolean network. Combine decomposition and substitution to provide an effective extraction algorithm. Algorithm EXTRACT foreach node n { DECOMP(n) // decompose all network nodes } foreach node n { RESUB(n) // resubstitute using existing nodes } ELIMINATE_NODES_WITH_SMALL_VALUE }

ECE Synthesis & Verification - Lecture 9 36 Extraction Kernel Extraction: 1. Find all kernels of all functions 2. Choose kernel intersection with best “value” 3. Create new node with this as function 4. Algebraically substitute new node everywhere 5. Repeat 1,2,3,4 until best value  threshold New Node

ECE Synthesis & Verification - Lecture 9 37 Example-Extraction f 1 = ab(c(d + e) + f + g) + h, f 2 = ai(c(d + e) + f + j) + k (only level-0 kernels used in this example) 1. Extraction: K 0 (f 1 ) = K 0 (f 2 ) = {d + e} K 0 (f 1 )  K 0 (f 2 ) = {d + e} l = d + ef 1 = ab(cl + f + g) + h f 2 = ai(cl + f + j) + k 2. Extraction: K 0 (f 1 ) = {cl + f + g}; K 0 (f 2 ) = {cl + f + j) K 0 (f 1 )  K 0 (f 2 ) = cl + f m = cl + ff 1 = ab(m + g) + h f 2 = ai(m + j) + k No kernel intersections anymore ! 3. Cube extraction: n = amf 1 = b(n + ag) + h f 2 = i(n + aj) + k

ECE Synthesis & Verification - Lecture 9 38 Rectangle Covering Alternative method for extraction Build co-kernel cube matrix M = R  C – –rows correspond to co-kernels of individual functions – –columns correspond to individual cubes of kernel – –m ij = cubes of functions – – = 0 if cube not there Rectangle covering: – –identify sub-matrix M’ = R’  C’, where R’  R, C’  C, and m’ ij  0 – –construct divisor d corresponding to M’ as new node – –extract d from all functions

ECE Synthesis & Verification - Lecture 9 39 Example of Rectangle Covering F = af + bf + ag + cg + ade + bde + cde G = af + bf + ace + bce H = ade + cde Kernels/Co-kernels : F: (de+f+g)/a (de + f)/b (a+b+c/de (a + b)/f (de+g)/c (a+c)/g G: (ce+f)/{a,b} (a+b)/{f,ce} H: (a+c)/de

ECE Synthesis & Verification - Lecture 9 40 Example of Rectangle Covering F = af + bf + ag + cg + ade + bde + cde G = af + bf + ace + bce H = ade + cde Pick sub-matrix M’ Extract new expression X X = a + b F = fx + ag + cg + dex + cde G = fx + cex H =ade + cde Update M

ECE Synthesis & Verification - Lecture 9 41 Value of a Sub-Matrix Number literals before - Number of literals after For the example V = = 8

ECE Synthesis & Verification - Lecture 9 42 Pseudo-Boolean Division Idea: consider entries in covering matrix that are don’t cares – –overlap of rectangles (a+a = a) – –product that cancel each other out (a+a’ = 0) Example: F = ab’ + ac’ + a’b + a’c + bc’ + b’c Result: X = a’ + b’ + c’ F = ax + bx + cx

ECE Synthesis & Verification - Lecture 9 43 Faster “Kernel” Extraction Non-robustness of kernel extraction – –Recomputation of kernels after every substitution: expensive – –Some functions may have many kernels (e.g. symmetric functions) Cannot measure if kernel can be used as complemented node Solution: compute only subset of kernels: – –Two-cube “kernel” extraction [Rajski et al ‘90] – –Objects: 2-cube divisors 2-literal cube divisors – –Example: f = abd + a’b’d + a’cd ab + a’b’, b’ + c and ab + a’c are 2-cube divisors. a’d is a 2-literal cube divisor.

ECE Synthesis & Verification - Lecture 9 44 Fast Divisor Extraction Properties of fast divisor (kernel) extraction: O(n 2 ) number of 2-cube divisors in an n-cube Boolean expression. Concurrent extraction of 2-cube divisors and 2-literal cube divisors. Handle divisor and complemented divisor simultaneously Example: f = abd + a’b’d + a’cd. k = ab + a’b’, k’ = ab’ + a’b (both 2-cube divisors) j = ab + a’c, j’ = a’b’ + ac’ (both 2-cube divisors) c = ab (2-literal cube), c’ = a’ + b’ (2-cube divisor)

ECE Synthesis & Verification - Lecture 9 45 Generating All 2-cube Divisors F = {c i }, D(F) = {d | d = make_cube_free(c i + c j )} This takes all pairs of cubes in F and makes them cube-free. c i, c j are any pair of cubes of cubes in F Divisor generation is O(n 2 ), where n = number of cubes in F Example: F = axe + ag + bcxe + bcg make_cube_free(c i + c j ) = {xe + g, a + bc, axe + bcg, ag + bcxe} Note: the function F is made into an algebraic expression before generating double-cube divisors not all 2-cube divisors are kernels (why ?)

ECE Synthesis & Verification - Lecture 9 46 Key Result For 2-cube Divisors THEOREM: Expressions F and G have a common multiple-cube divisors if and only if D(F)  D(G)  0. Proof: If: If D(F)  D(G)  0 then  d  D(F)  D(G) which is a double-cube divisor of F and G. d is a multiple-cube divisor of F and of G. Only if: Suppose C = {c 1, c 2,..., c m } is a multiple-cube divisor of F and of G. Take any e = (c i + c j ). If e is cube-free, then e  D(F)  D(G). If e is not cube-free, then let d = make_cube_free(c i + c j ). Then d has 2 cubes since F and G are algebraic expressions. Hence d  D(F)  D(G).

ECE Synthesis & Verification - Lecture 9 47 Example: Suppose that C = ab + ac + f is a multiple divisor of F and G. If e = ac + f, e is cube-free and e  D(F)  D(G). If e = ab + ac, d = {b + c}  D(F)  D(G) As a result of the Theorem, all multiple-cube divisors can be “discovered” by using just double-cube divisors. Key Result For 2-cube Divisors

ECE Synthesis & Verification - Lecture 9 48 Fast Divisor Extraction Algorithm: Generate and store all 2-cube kernels (2-literal cubes) and recognize complement divisors. Find the best 2-cube kernel or 2-literal cube divisor at each stage and extract it. Update 2-cube divisor (2-literal cubes) set after extraction Iteratate extraction of divisors until no more improvement Results: – –Much faster – –Quality as good as that of kernel extraction