09.08.2013 Views

RTL Design Flow - Computation Structures Group

RTL Design Flow - Computation Structures Group

RTL Design Flow - Computation Structures Group

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Algebraic vs. Boolean Methods<br />

Algebraic techniques view equations as<br />

polynomials and attempt to factor equations or<br />

“divide” them<br />

Do not exploit Boolean identities e.g., a a = 0<br />

In algebraic substitution (or division) if a function<br />

f = f(a, b, c) is divided by g = g(a, b), a and b<br />

will not appear in f / g<br />

Algebraic division: O(n log n) time<br />

Boolean division: 2-level minimization required<br />

Strong (or Boolean) Division<br />

Given a function f to be strong divided by g<br />

Add an extra input to f corresponding to g,<br />

namely G and obtain function h as follows<br />

h DC = Gg+ Gg<br />

h ON = f ON − h DC<br />

Minimize h using two-level minimizer<br />

9<br />

11<br />

Comparison<br />

f = ab + ac+ ba+ bc + ca + cb<br />

Algebraic factorization procedures<br />

f = a( b + c ) + a ( b + c ) + bc + cb<br />

Boolean factorization produces<br />

f = ( a + b + c ) ( a + b + c )<br />

l = ( bf+ bf ) ( a + e)+<br />

ae( b f + bf )<br />

r = ( bf+ b f ) ( a + e)+<br />

ae( b f + bf )<br />

Algebraic substitution of l into r fails<br />

Boolean substitution<br />

r = a( el + el ) + a( el + el )<br />

l = a( er + e r ) + a( er + er)<br />

Strong Division Example<br />

f=a bc +abc +abc +a b c<br />

g = ab+ab<br />

bc<br />

00<br />

01<br />

11<br />

10<br />

Ga<br />

00 01 11 10<br />

1<br />

x<br />

x<br />

x<br />

x x<br />

Minimization gives h = G c + G c<br />

1<br />

h DC = G (a b + a b) + G (a b + a b)<br />

h ON = f ON − h DC<br />

1<br />

x<br />

x<br />

x<br />

1<br />

Function h<br />

10<br />

12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!