0% found this document useful (0 votes)
108 views45 pages

Vlsi Cad:: Logic To Layout

The document discusses multi-level logic and Boolean logic networks. It explains why multi-level designs are preferred over strict two-level designs, and introduces the Boolean logic network model. The document also discusses the basic operations needed for optimizing Boolean logic networks, including simplifying nodes, removing nodes, and adding new nodes through factoring.

Uploaded by

Sohini Roy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
108 views45 pages

Vlsi Cad:: Logic To Layout

The document discusses multi-level logic and Boolean logic networks. It explains why multi-level designs are preferred over strict two-level designs, and introduces the Boolean logic network model. The document also discusses the basic operations needed for optimizing Boolean logic networks, including simplifying nodes, removing nodes, and adding new nodes through factoring.

Uploaded by

Sohini Roy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 45

VLSI CAD: Lecture 6.

1
Logic to Layout Logic Synthesis:
Multilevel Logic and
the Boolean Network Model
Rob A. Rutenbar
University of Illinois
Why Multi-level Logic?
•  2-level forms are too restrictive: specific area vs. delay tradeoff
•  Area = gates + literals (wires), i.e., things that take space on a chip
•  Delay = maximum levels of logic gates required to compute function
•  2-level is minimum gate delay possible, but usually worst on area

DELAY Multi-level designs =


fewer gates, but > 2 levels

slower, >2 levels


Typical 2-level design =
many gates, but only 2 levels
of logic, so fastest possible
fastest, 2 levels
AREA
small, big,
Slide 2 few gates+literals many gates+literals © 2013, R.A. Rutenbar
Why Multilevel?
•  Rarely see 2-level designs for really big things…
•  We use 2-level logic mostly for pieces of bigger things
•  Even smallish things routinely done as multi-level

1 2 3 4 999
?
~1000 gate
“block” of logic
1000
This is just NOT going to be the
preferred logic network structure...

Slide 3 © 2013, R.A. Rutenbar


Real Multilevel Example
•  …this is a small design, done by commercial synthesis tool

Levels of
logic in
1 2 3 4 5 6 7 8 9 10 11 network

Slide 4 © 2013, R.A. Rutenbar


Boolean Logic Network Model
•  Need more sophisticated model: Boolean Logic Network
•  Idea: it’s a graph of connected blocks, like any logic diagram, but now individual
component blocks can be 2-level Boolean functions in SOP form

…now as a Boolean logic network,


Ordinary gate logic x, y are now Boolean functions
a x a
b x=ab x Bug fix:
y b x+c, not b+c
c
y=x+c y
c

primary internal primary


inputs vertices outputs
Slide 5 © 2013, R.A. Rutenbar
Multilevel Logic: What to Optimize?
•  This is simplistic but surprisingly useful: Total literal count
•  Count every appearance of every variable on right hand side of “=“ in every node
•  (Yes, delays matter too, but for this class, only focus on logic complexity)

#Literals =
a
b Q = aX
Y = b+c Q
c
X = Yd + Z
Z = b•c

Slide 6 © 2013, R.A. Rutenbar


Optimizing Multilevel Logic: Big Ideas
•  Again: this is a data structure. What operators do we need?

•  3 basic kinds of operators


•  Simplify network nodes: no change in # of nodes, just simplify insides, SOP form
•  à You already know this! This is 2-level synthesis, this is ESPRESSO!
•  Remove network nodes: take “too small” nodes, substitute them back into fanouts
•  à This is not too hard. This is mostly manipulating the graph, simple SOP edits.
•  Add new network nodes: this is factoring. Take big nodes, split into smaller nodes.
•  à This is a big deal. This is new. This is what we need to teach you…

Slide 7 © 2013, R.A. Rutenbar


Optimizing Boolean Logic Network
•  Simplifying a node •  Removing a node
•  Just run ESPRESSO on 2-level form •  Typical case is you have a “small”
inside the node, to reduce # literals factor which doesn’t seem to be worth
making it a separate node
•  As structural changes happen across
network, “insides” of nodes may •  “Push” it back into its fanouts, make
present opportunity to simplify those nodes bigger, and hope you
can use 2-level simplification on them

X = a +ab +bc X = qZ + stuff X = qab + stuff

Z = ab
X = a + bc Y = cdZ + stuff Y = cdab + stuff

Slide 8 © 2013, R.A. Rutenbar


Optimizing Boolean Logic Network
•  Adding new node(s): this is Factoring, this is new, and hard
•  Look at existing nodes, identify common divisors, extract them, connect as fanins
•  Tradeoff: more delay (another level of logic), but fewer literals (less gate area)

X = ab + c + r X=Q+r

Y = abd + cd Q = ab+c Y = Qd

divisor
Z = abrs+crs Z = Qrs
16 literals 10 literals
Slide 9 © 2013, R.A. Rutenbar
VLSI CAD: Lecture 6.2
Logic to Layout Logic Synthesis:
Multilevel Logic:
Algebraic Model for
Factoring
Rob A. Rutenbar
University of Illinois
Aside: Multilevel Synthesis Scripts
•  Multilevel synthesis–like 2-level synthesis–is heuristic
•  …but it’s also more complex. Write scripts of basic operators
•  Do several passes of different optimizations over the Boolean logic network
•  Do some “cleanup” steps to get rid of “too small” nodes (remove them)
•  Look for “easy” factors, just sitting around as existing nodes, and try to use them
•  Look for “hard” factors, do the work to extract them, try them, keep the good ones
•  Do 2-level optimization of insides of each logic node in network (ESPRESSO)
•  Lots of “art” in the engineering of these scripts

•  For us, the one big thing you don’t know: How to factor…

Slide 11 © 2013, R.A. Rutenbar


Another New Model: Algebraic Model
•  Factoring: How do we really do it?
•  Develop another model for Boolean functions, cleverly designed to let us do this
•  Tradeoff: lose some “expressivity” -- some aspects of Boolean behavior and some
Boolean optimizations we just cannot do, but we gain practical factoring.

•  New model: Algebraic model


•  Surprise: Term “algebraic” comes from pretending that Boolean expressions
behave like polynomials of real numbers, not like Boolean algebra
•  Big new Boolean operator: Algebraic Division (or, also “Weak” Division)

Slide 12 © 2013, R.A. Rutenbar


Algebraic Model
•  Idea: keep just those rules (axioms) that work for polynomials of
reals AND Boolean algebra, dump the rest
Real numbers Boolean algebra
a•b = b•a a•b = b•a
a+b = b+a a+b = b+a
a•(b•c) = (a•b)•c a•(b•c) = (a•b)•c
a+(b+c) = (a+b)+c SAME a+(b+c) = (a+b)+c
a•(b+c) = a•b + a•c a•(b+c) = a•b+a•c
a•1 = a a•0 = 0 a•1 = a a•0 = 0
a+0 = a a+0 = a

x
a+a’ = 1 a•a’ = 0
NOT a•a = a a+a = a
ALLOWED a+1 = 1
a+(b•c) = (a+b)•(a+c)

Slide 13 © 2013, R.A. Rutenbar


Algebraic Model
•  If we only get to use algebra rules from real numbers….
•  Consequence: A variable and its complement must be treated as totally unrelated
•  Aside: this is one of the losses of “expressive power” for Booleans we just tolerate

F = ab + a’x + b’y
Let R = a’
Let S = b’
ab + Rx + Sy
•  Idea
•  Boolean functions manipulated as SOP expressions–like polynomials
•  Each product term in such an expression is just a set of variables, e.g., abRy
•  SOP expression itself is just a list of these products (cubes), e.g. ab + Rx = ab,Rx
Slide 14 © 2013, R.A. Rutenbar
Algebraic Division: Our Model for Factoring
•  Given function D we want to factor as:

F = D•Q + R
divisor remainder (if =0, then we say the divisor
quotient is ‘technically’ called a Factor)

Example with REAL Example with BOOLEAN SOP

15 = 7•2 + 1 F = ac + ad + bc + bd + e
7 = D = divisor = (a+b)•(c+d) + e
2 = Q = quotient
1 = R = remainder (a+b) = D = divisor
(c+d) = Q = quotient
e = R = remainder
Slide 15 © 2013, R.A. Rutenbar
Algebraic Division
•  Example F = ac + ad + bc + bd + e want F = D • Q + R
•  Reminder: Quotient is only called a “Factor” if remainder is 0

Divisors (D) Quotient (Q) Remainder (R) Factor?


ac+ad+bc+bd+e 1 0 Yes (trivial)
Bug fix:
a+b c+d Q e No
c+d a+b e No
a c+d bc+bd+e No
b c+d ac+ad+e No
c a+b ad+bd+e No
d a+b ac+bc+e No
e 1 ac+ad+bc+bd No

Slide 16 © 2013, R.A. Rutenbar


VLSI CAD: Lecture 6.3
Logic to Layout Logic Synthesis:
Multilevel Logic:
Algebraic Division
Rob A. Rutenbar
University of Illinois
Algebraic Division: Very Nice Algorithm
•  Inputs
•  A Boolean expression F and a divisor (to divide by) D, represented as lists of cubes
(and each cube a set of literals)

•  Output
•  Quotient Q = F/D = cubes in quotient, or 0 (empty) if none
•  Remainder R = cubes in remainder, or 0 (empty) if D was a factor
•  i.e., figures out Q, R so that F = D•Q+ R = D•(F/D) + R

•  Strategy
•  Cubewise walk thru cubes in divisor D, trying to divide each of them into F
•  ...being careful to track which cubes do divide into F

Slide 18 © 2013, R.A. Rutenbar


Algebraic Division Algorithm
AlgebraicDivision( F, D) { // divide D into F Example:
Cube xyzw contains
for ( each cube d in divisor D ) { product term “yz”
let C = { cubes in F that contain this product term “d” };
if ( C is empty ) {
return ( quotient = 0, remainder = F);
}
let C = cross out literals of cube “d” in each cube of C;
if ( d is the first cube we have looked at in divisor D )
let Q = C;
else Q = Q ∩ C;
} Example:
R = F - ( Q • D ); Suppose C = xyz + yzw +pqyz
return ( quotient = Q, remainder = R) and d = “yz”. Then crossing
} out all the “yz” parts yields
Example: x + w + pq
Suppose Q = xyz + yzw +pqyz
and C = “ xyz”. Then Q ∩ C
is just the cubes that are in both Q and C
Slide 19 © 2013, R.A. Rutenbar
in this case: xyz
Algebraic Division: Example
F/D: F = axc + axd + axe + bc + bd + de D = ax + b
D cube: ax D cube: b Easiest way manually is to make this table:
F cube
1 C=… 3 C=… one row per cube in F, one column per cube in D,
axc axcàaxcàc -- bottom row to evolve Quotient Q and, when done,
remember to get remainder R
axd axdàaxdàd --
AlgebraicDivision( F, D) { // divide D into F
axe axeàaxeàe -- for ( each cube d in divisor D ) {
bc -- bcàbcàc let C = { cubes in F that contain this product term “d” };
if ( C is empty ) {
Bug fix: return ( quotient = 0, remainder = F);
bd axe -- bdàbdàd }
let C = cross out literals of cube “d” in each cube of C;
if ( d is the first cube we have looked at in divisor D )
de -- -- let Q = C;
else Q = Q ∩ C;

2 Q = c+d+e 4 Q = (c+d) ∩ }
R = F - ( Q • D );
(c+d+e) }
return ( quotient = Q, remainder = R)

= c+d

Remainder R = F–Q•D: R = (axc + axd + axe + bc + bd + de) – (c+d)•(ax+b) 5


(axc + axd + axe + bc + bd + de) – (axc + axd + bc + bd)
“—” means remove cubes in
Q•D that appear same in F = (axe + de) = remainder
Slide 20 © 2013, R.A. Rutenbar
Algebraic Division: Warning
•  Remember: No “Boolean” simplification, only “algebraic”
•  So what? Well, suppose you have this

F = ab’c’ + ab + ac + bc G = ab + c’ want F / G

•  You must transform it to something like this...

Let X=b’, Y=c’


à F = aXY + ab + ac + bc G = ab + Y then can do F / G

•  Because must treat the true and complement forms of variable as different

Slide 21 © 2013, R.A. Rutenbar


One More Constraint: Redundant Cubes
•  To do F/D, function F must have no redundant cubes
•  Technical term is: “minimal with respect to single-cube containment”
•  In words: no one cube is completely covered by other cubes in SOP cover

F = a + ab + bc is redundant quotient ab
D = a is the divisor c 00 01 11 10
Now: compute F / D, i.e., F / a 0 1 1
use our algebraic division algorithm
1 1 1 1
à  Problem: F / D = 1 + b, remainder = bc
à  “1+b” is not operation in Algebraic model!

Slide 22 © 2013, R.A. Rutenbar


Multilevel Synthesis Models: Where are We?
•  For Boolean F, D, can compute F = Q•D + R via algebraic model
•  This is great—but it’s still not enough. Don’t know how to find these divisors.
•  Real problem: n functions F1, F2, … Fn, find a set of good common divisors di

F1 = ab + c + x F1 = d1 + x

factor d1 = ab+c
F2 = abx + cx + q F2 = (d1)x+q

F3 = ab + q F3 = ab+q

•  What are we looking for?


•  Case 1: divisors d that are just 1 cube (1 product term), e.g., d = ab
•  Case 2: “bigger” multiple-cube divisors, e.g. d = ab + cd + e
Slide 23 © 2013, R.A. Rutenbar
VLSI CAD: Lecture 6.4
Logic to Layout Logic Synthesis:
Multilevel Logic:
Role of Kernels and
Co-Kernels in Factoring
Rob A. Rutenbar
University of Illinois
Where To Look For Good Divisors?
•  Surprisingly, the Algebraic Model has a beautiful answer
•  One more reason we like it: Has some surprising and elegant “deep structure”

•  Where to look for divisors of function F? In the kernels of F


•  Denoted K(F). Pronounced like “Colonel.” Spelled with TWO e’s (remember!)
•  K(F) is another set of two-level SOP forms which are the special, foundational
structure of any function F, being interpreted in our algebraic model.

•  How to find a kernel k∈K(F)? Algebraically divide F by one of


its co-kernels, c.
•  Wow – lots of new concepts and terms here. Let us go develop these ideas…

Slide 25 © 2013, R.A. Rutenbar


Kernels and Co-Kernels of Function F
•  Kernel of a Boolean expression F is:
•  A cube-free quotient k obtained by (algebraically) dividing F by a single cube c
•  This single cube c also has a name: it is a co-kernel of function F

quotient Q kernel k if cube-free

divisor D expression F c = 1 cube expression F

remainder R remainder R
F = D•Q + R F = c•k + R

Slide 26 © 2013, R.A. Rutenbar


Kernels Are Cube-Free…
•  Cube-free means...?
•  You cannot factor out a single cube (product term) divisor that leaves no remainder
•  Technically -- has no one cube (product) that is a factor of expression
•  Do F / cube, look at result, if you can ‘cross out’ some cube in each term, not a kernel

Expression F F=d•Q+R Cube-free?


a a(1)+0 No
a+b -- Yes
ab + ac a(b+c)+0 No

abc + abd ab(c+d)+0 No

ab + acd + bd -- Yes

Slide 27 © 2013, R.A. Rutenbar


Some Kernel Examples
•  Kernels of F denoted K(F). Suppose F = abc + abd + bcd

Divisor cube d F= d•Q + R Is it a Kernel of f?


1 (1)(abc+abd+bcd)+0 No, has cube = b as factor
a (a)(bc+bd)+bcd No, also has cube = b as factor
b (b)(ac+ad+cd)+0 Yes, a kernel; co-kernel = (b)
ab (ab)(c+d)+bcd Yes, a kernel; co-kernel = (ab)
… etc

•  So, any Boolean F can have many different kernels k∈K(F)

Slide 28 © 2013, R.A. Rutenbar


Kernels: Why Are They Important?
•  …, if they are important, how do we actually compute them?
•  Big result: Brayton & McMullen Theorem
•  From: R. Brayton and C. McMullen, “The decomposition and factorization of Boolean
expressions. In IEEE International Symposium on Circuits and Systems, pages 49–54, 1982.

Expressions F, G have a common multiple-cube divisor d


if and only if

there are kernels k1∈K(F), k2 ∈K(G)


such that d = k1 ∩ k2 (ie, SOP form with common cubes in it)
and d is an expression with at least 2 cubes in it

Slide 29 © 2013, R.A. Rutenbar


Multiple-Cube Divisors and Kernels
•  In words:
•  The only place to look for multiple-cube divisors is in the intersection of kernels!
•  Further: this intersection of kernels is the divisor, there are no others

Kernels of F Intersect?
k3
≥2 cubes?
k1 F = new
F = stuff
k2
k3 k5
d = ab+c+…
k4 k5 Yes! d=… G = new
G = stuff Multi-cube
k6 k7
divisor extracted!
Kernels of G

Slide 30 © 2013, R.A. Rutenbar


Brayton-McMullen: Informal Illustration
•  Remember: kernel1, kernel2 are cube-free…
F = cube1 • kernel1 + remainder1 F = cube1 • [X + Y + stuff1] + remainder1
G = cube2 • kernel2 + remainder2 G = cube2 • [X + Y + stuff2] + remainder2

F = cube1 • [X + Y] + [cube1•stuff1 + remainder1]


G = cube2 • [X + Y] + [cube2•stuff2 + remainder2]

F = cube1•d + …
kernel1 ∩ kernel2 = [X + Y]
d = X+Y
= a multicube divisor of F & G
G = cube2•d + …

Slide 31 © 2013, R.A. Rutenbar


Kernels: Real Example
•  Consider this F, G

F = ae + be + cde + ab G= ad + ae + bd + be + bc
K(F) Kernel Co-kernel K(G) Kernel Co-kernel
a+b+cd e a+b d or e
b+e a d+e a or b
a+e b d+e+c b
ae+be+cde+ab 1 ad+ae+bd+be+bc 1

Intersecting these 2 kernels: (a+b+cd) ∩ (a+b) =

So, this is workable multicube divisor we can consider for both F,G

Slide 32 © 2013, R.A. Rutenbar


VLSI CAD: Lecture 6.5
Logic to Layout Logic Synthesis:
Multilevel Logic:
Finding the Kernels
Rob A. Rutenbar
University of Illinois
Kernels: Very Useful, But How To Find?
•  Another recursive algorithm (are we surprised...?)
•  There are 2 more useful properties of kernels we need to see first…

•  Start with a function F and a kernel k1 in K(F)

F = cube1 • k1 + remainder1

•  Then: a new, interesting question: what about K( k1) ??


•  k1 is a perfectly nice Boolean expression, so it has got its own kernels
•  Do these k1’s kernels have anything interesting to say about K(F)...?

Slide 34 © 2013, R.A. Rutenbar


How K(k1) Relates to K(F)…
•  We know this: F = cube1•k1 + remainder1
•  Suppose k2 is a kernel in K( k1 ), then we know
•  k1 = cube2•k2 + remainder2
•  Substitute this expression for k1 in original expression for F
•  F = cube1•[cube2•k2 + remainder2] + remainder1
•  Neat trick: cube1•cube2 is itself just another single cube, rewrite to emphasize:
•  F = (cube1•cube2)•[ k2 ] + [ cube1•remainder2 + remainder1]

•  Lovely result: k2 also a kernel of original F (with co-kernel cube1•cube2)

Slide 35 © 2013, R.A. Rutenbar


There is a Hierarchy of Kernels Inside F
•  Terminology: k∈K(F) is:
F = stuff
•  A level-0 kernel if it contains no kernels
inside it except itself
•  In words: Only cube you can pull Level-2 kernel
out, get a cube-free quotient is ‘1’
•  A level-n kernel if it contains at least Level-1 kernel Level-1 kernel
one level-(n-1) kernel, and no other
level-n kernels except itself Level-0 kernel
Level-0 kernel Level-0 kernel
•  In words: a level-1 kernel only has
level-0 kernels inside it.
A level-2 kernel only has level-1 and
level-0 kernels in it, etc…

Slide 36 © 2013, R.A. Rutenbar


Kernel Hierarchy
•  2nd useful result [Brayton et al]
•  Co-kernels of a Boolean expression in SOP form correspond to
intersections of 2 or more of the cubes in this constituent SOP form

•  Note: Intersections here means specifically that we regard a


cube as a set of literals, and look at common subsets of literals
•  This is not like “AND” for products. This is simple common sub-expressions.
•  Example ace + bce + de + g

ace ∩ bce = ce à ce is a potential co-kernel

ace ∩ bce ∩ de = e à e is a potential co-kernel

Slide 37 © 2013, R.A. Rutenbar


Kernel Hierarchy
•  How do we use these 2 results?
•  Find the kernels recursively. Whenever we find one:
•  Call FindKernels( ) on it, to find (if any) lower level kernels are inside

•  Use algebraic division to divide function by potential co-kernels, to drive recursion


•  …but be smart: co-kernels are intersections of the cubes
•  ...if there’s at least 2 cubes, then look at the intersection of those cubes, and use
that intersected result as our potential co-kernel cube

•  One technical point: need to start with a cube-free function F to make things work
right. If not cube-free, just divide by the biggest common cube to simplify F…
Slide 38 © 2013, R.A. Rutenbar
Kernel Algorithm
•  Algorithm is then...
FindKernels( cube-free SOP expression F) {
K = empty;
for ( each variable x in F ) {
if ( there are at least 2 cubes in F that have variable x ) {
let S = { cubes in F that have variable x in them };
let co = cube that results from intersection of all cubes in S,
this will be the product of just those literals
that appear in each of these cubes in S;
K = K ∪ FindKernels( F / co) ;
} F/co = a kernel, returned at end.
} This is algebraic division, but
K=K∪F; simpler since it always
return( K ) Cube-free F is always its just divides by exactly
} own kernel, with 1 cube, a simple product term
trivial co-kernel = 1
Slide 39 © 2013, R.A. Rutenbar
Kerneling Example
•  To start, divide F by each of the variables, and use to recurse
•  We are looking for co-kernels that start with this ONE variable in them
•  But—be smart, it cannot be a co-kernel unless it’s in at least 2 cubes
F = ace + bce + de + g
a b c d e g
no work no work cubes w/ c = no work cubes w/ e = no work
only 1 only 1 only 1 only 1
ace,bce ace,bce,de
cube w/ a cube w/ b cube w/ d cube w/ g
co =∩= co =∩=
ce e
Bug fix:
F/co = F/co = ac+bc+d
a+b ac+bc+d
Aside: “w/” = “with” recurse on: a+b recurse on: ac+bc+d
Slide 40 © 2013, R.A. Rutenbar
Kernel Hierarchy, Example Continued
•  With this algorithm, overall recursion tree looks like this
F = ace + bce + de + g
a b c d e g
no work no work cubes= ace,bce no work cubes= ace,bce,de no work
co = ce co = e
F/co = a+b F/co = ac+bc+d

Kernel = ac+bc+d
no work for any variable
Kernel = a+b Co-kernel = e
Co-kernel = ce
a b c d e g
no work no work cubes= ac,bc no work no work no work
Kernel = a+b co =∩= c
Co-kernel = ce F/co = a+b
(get co-kernel by ANDing
co cubes up recursion tree no work for any variable
Slide 41 © 2013, R.A. Rutenbar
Kernel Hierarchy
•  With this algorithm...
•  Can find all the kernels (and co-kernels too)
•  Get co-kernels by ANDing the divisor co cubes up recursion tree

•  One tiny problem


•  Will revisit same kernel multiple times

•  Solution: remember which variables already tried in co-kernels


•  Problem: kernel you get for co-kernel abc is same as for cba, but current
algorithm doesn’t know this and will find same kernel for both cubes
•  A little extra book keeping solves this

Slide 42 © 2013, R.A. Rutenbar


Using Kernels and Co-Kernels
•  These are exactly the right component pieces for...
•  Extraction of a single-cube divisor from multiple expressions
•  Extraction of a multiple-cube divisor from multiple expressions

F F = d•Q1 + R1
d
G G = d•Q2 +R 2

•  When you want a single-cube divisor: Go look for co-kernels


•  When you want a multiple-cube divisor: Go look for kernels

Slide 43 © 2013, R.A. Rutenbar


Multilevel Synthesis Models: Summary
•  Boolean network model
•  Like a gate network, but each node in network is an SOP form
•  Supports many operations to add, reduce, simplify nodes in network
•  Algebraic model & algebraic division
•  Simplifies Boolean functions to behave like polynomials of real numbers
•  Divides one Boolean function by another: F = (divisor D )•(quotient Q) + remainder R
•  Kernels / Co-kernels of a function F
•  Kernel = cube-free quotient obtained by dividing by a single cube (co-kernel)
•  Intersections of F, G kernels à all multiple-cube common divisors (Brayton-McMullen)
•  Next: what are best common divisors to get, given these ideas?

Slide 44 © 2013, R.A. Rutenbar


Notes:
•  The algebraic model (and division) are not the only options
•  There are also “Boolean division” models and algorithms that don’t lose expressivity
•  ..but they are more complex.
•  Rich universe of models & methods here.

•  Good references to read about all these ideas


•  R.K. Brayton, R. Rudell, A. Sangiovanni-Vincentelli, A.R. Wang, “MIS: A Multiple-
Level Logic Optimization System,” IEEE Transactions on CAD of ICs, vol. CAD-6, no.
6, November 1987, pp. 1062-1081.
•  Giovanni De Micheli, Synthesis and Optimization of Digital Circuits, McGraw-Hill,
1994.

Slide 45 © 2013, R.A. Rutenbar

You might also like