Logic Synthesis 2 Outline –Two-Level Logic Optimization –ESPRESSO Goal –Understand two-level optimization –Understand ESPRESSO operation
Logic Optimization Definitions N-dimensional boolean space - 2 N points, each associated with a unique set of N literals –e.g. entries in a Karnaugh map or truth table –each point is a minterm –e.g. abcd, ab’cd, in space cube - conjunction (AND) of literals in N-dim boolean space –points on N-dim hypercube that are 1 –examples: a’bc, acd expression - disjunction (OR) of cubes, i.e. equation –example: a’bc + def don’t cares - missing literals from cube –example: abc in space of, d is don’t care –result is cube covering larger part of space –abc = abcd’ + abcd a’b’ a’bab ab’ cube: a’ DC: b space:
Two-Level Logic Optimization Approach –find minimal set of cubes to cover ON-set (1 minterms) –each cube = AND gate »minimal cubes => minimal AND gates –each expression = cubes + OR gate »one expression (OR gate) per output –exploit don’t cares to increase cube sizes »each DC doubles cube size »cube must only cover 1 or DC vertices »or cover OFF-set (0 minterms) instead a’b’ a’bab ab’ a’ + b redundancy in cube cover ON DC OFF
Two-Level Logic Optimization Minimal set of cubes –minimum graph covering problem –NP-complete - exponential in worst case –must use heuristic search Complications –solve simultaneously for each expression (output) »minimize total number of unique cubes –consider ON vs. OFF vs. DON’T CARE set x = ab’ + b’c + abc’ y = abc’ + ab z = ab’.i 3.o 3.p 4 10x101 x x010.e.i 3.o 3.p e x = b’c + ac’ y = ab z = ab’ ESPRESSO outputESPRESSO input
Two-Level Logic Optimization Approach –minimize cover of ON-set of function »ON-set is set of vertices for which expression is TRUE »minimum set of cubes –exploit don’t cares to increase cube sizes Algorithm –start with cubes covering the ON-set »this is just sum-of-products form –iteratively expand, shrink, add, remove cubes –remove redundant (covered) cubes –result is irredundant cover a’b’ a’bab ab’a’b’ a’bab ab’ x = a’b + ab + a’b’ x = a’ + b
ESPRESSO Algorithm Forig = ON-set; /* vertices with expression TRUE */ R = OFF-set; /* vertices with expression FALSE */ D = DC-set; /* vertices with expression DC */ F = expand(Forig, R); /* expand cubes against OFF-set */ F = irredundant(F, D); /* remove redundant cubes */ do { F = reduce(F, D); /* shrink cubes against ON-set */ F = expand(F, R); F = irredundant(F, D); } until cost is “stable”; /* perturb solution */ G = reduce_gasp(F, D); /* add cubes that can be reduced */ G = expand_gasp(G, R); /* expand cubes that cover another */ F = irredundant(F+G, D); } until time is up; ok = verify(F, Forig, D); /* check that result is correct */
Cube Operations Expand –expand essential cubes in F in decreasing size to a prime cube –prime cube - fully expanded against OFF-set –essential cube - contains essential vertex –essential vertex - minterm no other cube covers –remove any covered cubes Expand ON DC OFF
Cube Operations Irredundant ON DC OFF Irredundant –find minimal cover with each cube containing an essential vertex –find relatively essential cubes E »removing them violates cover - keep them –redundant cubes R = F - E »can be individually removed »totally redundant R t - covered by E+D »remove R t »partially redundant R p - R - R t –new F = E + minimal set of R p E RpRp RpRp RtRt
Cube Operations Reduce ON DC OFF Reduce –shrink cubes in descending order of size while maintaining cover –smaller cubes can expand in more directions –smaller cubes more likely to be covered by other cubes during expansion
Cube Operations Expand Gasp Reduce Gasp ON DC OFF Reduce Gasp –for each cube add a subcube not covered by other cubes Expand Gasp –expand subcubes and add them if they cover another cube –later use Irredundant to discard redundant cubes –this is a “last gasp” heuristic for exploration »no ordering by cube size
Example a’b’ a’bab ab’a’b’ a’bab ab’ x = a’b + ab + a’b’ Expand a’b’ a’bab ab’ Irredundant a’b’ a’bab ab’ Reduce a’b’ a’bab ab’ Expand Irredundant a’b’ a’bab ab’ Cost Stable x = a’ + b
Examples Essential and Redundant Cubes Prime & Irredundant Cover RpRp RpRp E E Initial CoverReduceExpand in right direction
Conclusions Experimental Results –ESPRESSO algorithm gets minimum or close to minimum cover where cover is known –up to input literals, 100 inputs, 100 outputs tested –CPU time < 12 min on high-speed workstation Application –PLA minimization –use as subroutine in multi-level logic minimization »minimize pieces of larger circuit