This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Unformatted text preview: BDDs:
Implementation IsSues
& Variable Ordering Richard Rudell Synopsys, Inc. CAD Apoucations 0 BDD's: Theory and Practic. o 1993 archaic nudall 0800 Package Interface typed“ struct bdd_managar_scruc: 'bdd_manuqor:
typedt strum: bdd_£omula_atzuct 'bdd_tomu‘.a: bdd_manaqcr “Jew ) ;
void bu.“ bdd_mnnqor bdd) ; ' bdeozaula Nd_cnn:o_urthlobdd_mnagcr bdd) :
bdd_£omula Nd_nze(bdd) : bdd_tomu1a Md_ono( bdd) . bdd_:armula had_nu1.¢u bdd_fomu‘.a E) : bdd_£amula Nd_noc(bdd_tomula t) , bdeomula banndlbdeotmula t. bdd_£cmuln q).
bdd_tonmilabdd_otlbdd_£omula E. bdd_!cmula q);
bdd_:omula bdd_xo:tbdd_fomula E. bdd£cmu‘.a q).
bdd_£omulaMd_lto(bdd_fomula t. bdd£:mula q. bdd_Eomula h);
bdd_£armula bddoxil:lbdd_fomu1a f. bdd£cmula q);
bdd_!omula bad_£o:au(bdd_fomula t. bdd_5cr:nula q);
bdd_£omu1abdd_co£nc:oubdd_£omula t. hdeomula q): bdd_£c:mula Nd_co~oudbdd_ﬁomula E. bdd_£omula q. bdd_£cmula h).
void bad_lrootbdd_£omu1a E) ; in: bdd_oqmbdd_£omula t. bdd_£amula q);
in: ban_loq(bdd_fomla E. bdd_£omula q);
in: baa_auolnubdd_tzmula E. bdeomula 9). int m_tcc_tautolm13dd_tomula !. bdd_£omula q, bdd_fomula h).
inc NdJuctbdeomula I. bdd_£omula '11“): CAD Anathema“ o! BDD's: Thaory Ina Prlctnc. a a 1993 Ruchara Rude" 0800 Package Example g, h. a:::, one1 a a bdd_::ea:a_veriablerbdd):
b  bdd_c:ea:e_variableibdd):
and: : bdd_noc(a)i '
E : bdd_and(anoc. b):
bdd_€:ee(anoc):
c : bddcteace_variableibddi;
q : bddandia. c);
h a bdd_xn=r(E, q);
if (bdd_equih. one!) ( << do something >>
)
bdd_£reeit):
bdd_£:eeigi;
bdd_£ree(h); bdd_end(bdd): CAD Applications at 300:: Theory and Practice 5 c 1993 Richard Ruaeil Review: Chained Hash Table Insert the pair (key. vaiue) into the hash table
void heeh_ineeruhesh_table 'hash_cable. void 'key, void 'value); Return the value associated with the given key (it it exists)
in: heel_lookuuhesh_cable 'haeh_:ab1e, void 'key. void "value); key Hash
Function hash table entries array of
hash cable entry pointers 0 density a it entries / it bins 0 resize array to maintain constant density (9.9., 4 entries per bin)
' constanttime lockup operation (assuming good hash function) CAD Aoorutrons of 800:: Theory and Prectrce B D 1993 Richard Rude“ Review: Memory Function  Store table of values (x. Fix); for a pure function F. I
 Before computing Fix), check table for stored value  avoid recomputing Fm if value is already known  when Fm is computed. save (x. Fm; in the table I no memory function. with memory function.
exponential compleXIty linear complexity in: fiblin: a) (
in: t: it in <2 2) l
:31. ifln<=2l(
) eLse ( c = 1;
c a tibial.) v EiblnZ): ) olu 1.! (noown) l 0) (
) t  melanin]:
return z: . l else (
t  Eibllnl) . EibUnZl;
WITH“  c:
)
ESL'UII'. L'.’ CAD AWIMI oi BDD‘I: Theory and Practice 9 o 1993 Richard Rude" MultiRooted (Shared) OBDD  A DAG node F is represented by a tuple (x, .G.H )
 x, is called the top variable of F _
 node (.r,.G.H) represents the function ite(.r,.G.H)= x,G+.‘r‘,H
 DAG contains both extemal functions (user functions) and internal functions CAD Applications of 300's: Theory and Practice 11 c 1993 Ridian Rude“ Unique Table Hash Table Mapping (.r,.7'.l)>UI
(x,.7'2.7'.)—iU2
(.r;.T,.l)>Tl
(x3.0.T,)—>T‘2
(.r,.0.l)>T,
(.r_.0.o)—)l
(.r_.=.e))0  Unlque table: hash table mapping tuples(.r, .G. H) into a node in the DAG
 before adding a node to the DAG. check to see if it already exists
— avoids ever creating two nodes with the same function
— strong canonical form: pointer equality determines function equality
 resize unique table array to maintain constant density of 4 entries/bin CAD Applications of 500's: Theory and Practice 12 o 1993 Richard Rude" W , J Shannon Cofactors of an 0800 Function Computing the Shannon Calacfor (Restriction) on an 0800 function
is trivial when the variable is at or above the top variable of the node. Let F = (x, .G.Hi and let x, be a variable at level i' or above (i.e., j s i). ifj<i " " F ifj<i
an F—=
d " {H ifj=i x3 is top variable of T.
(71).: =Tl!r:l =7} (TI )1: =Tl 1:!" =1 x. is above top variable of TI = LII = 7I (n),,=r.l,,e.=r. CAD Applications of 000‘s: Theory and Practice 13 o 1993 Richard Auden ITE Recursive Formulation Let Z = itc(F.G.H) = FG+ F‘H. Let x be the top variable of F.G.H. Z = x2, +32.
= x(FG+ F'l‘l)x +£(FG+7'H)l
= .r(F'G, + EH,)+E(F;GI + EH?)
= itc(x.ite(l’‘,.G,.HJl ).ite(F;.G;.H;))
=(.r.itc(F,.G,.H,).ite(F..G,.Hi)) itc(F.G.H) =(x.ite( F,.G,.Hr ).ite(I}.G,.H, )).
Because 1: is the top variable of F.G.H, the colactors F, . 1}. etc. are trivial Terminal cases:
itc(I.G.H)= G
itc(0.G.H) = H
ite(F.l.0) = F CAD Applications at 800’:: Theory and Practice 14 D 1993 Ricard Rude" Computed Table 0 Computed table: hash table to implement a memOry function for ITE
 Maps ITE arguments lF.G.H) into the result iteiF.G.H) ' Computed table is persistent  Computed table results remain valid across toplevel calls to ITE — allows results computed from previous ITEs to improve performance
of subsequent lTEs  no need to initialize and tree the computed table every ITE
initialize computed table once when the 0500 is created
saves linear time cost of allocating and lreeing the table every lTE CAD Application: at 800's: Theory and Practice is o 1993 Richard Rudlll ITE Algorithm i:I(F.G.H) (
it (torminal casc) (
R x trivial answer:
) 013. if (hash_lookup(compucod_cablo, (F.G.H). Ercsult)) (
R a result;
) Ilse (
x a top variable from F, G. H;
(F1.F0) a crivial_ca£ac:ot(F. x):
(61.60) a :rivia1_co£ac:or(c, x);
(H1.H0) s triv1l_cotac:or(ﬂ. x);
R]. I it¢(F1,Gl,H1):
R0 : 1:0(F0.GO,HO):
if (31. I: R0) (
R 1 R1:
2 also LE (hash_lookup(uniquo_tab1¢, (x.Rl.RO). srasul:)) (
R = result;
) else (
R x new_noda(x,R1.ROb:
hash_inscr:(uniquo_tablo, (x.a1.RO). Rx:
;
hash_insor:(ccmpu:od_tahlo. IF.G.H). R):
)
return R: CAD Mannedon: on 800:: Thoy and Pnemo 13 e 1993 Richard ﬁnd." ITE Algorithm Trace' I= ite(F.G.H)
= (.q .ith‘n .0“ .H'I ).ite( Ff: .sz .Ht ))
= (x, ,ite(l.C.H).ite( B.0.H))
=(x,.C.(.r;.ite(B,= .0“ .H,: mm 3;: .0?: .H7: ))
=(.r‘.C.(.r1.itc(l.0.l).ite(0.0.D))
=(xI.C.(.r:.0.D) CAD Applications at 300's: Than and Practuco I7 D '99:! Richard ﬁudIll ITE Algorithm Improvements  Improve computed table performance  equivalent forms itc(F.G.0) = itc(G.F.0) = itcl £0. F) '= itch.F.G) = FG
ite(F.l.H)= itc(H,l.F)= iteiF.F.H) = itcl H.H.F)= F+H — store only 1 of 4 equivalent forms in the computed table map to a canonical form (e.g.. iici F .60) with addr(F) < addr(0))
 easy to detect because of strong canonical form ifiF==HIIH==Oli
/. function is F G "
H = 0;
it laddressl?) > add:essiGii (
swaplEF,&Gl;
)
)
iriFuGHGastif
/' function is F . H "
G = 1:
if (addressiF) > addressiHli (
swaplEF.&H);
)
) CAD Application: oi 800's: Theory and Practice is o 1993 Richard Rudlll Computed Table Cache  Replace computed table hash table with a hashbased cache
 stare only one entry per bin (no collision chain)
overwrite existing entry at insert
check against only one entry at lockup  introduces possibility of cache miss which forces redundant
computation (affects performance. but not correctness) manage impact by sizing the cache proportional to the number of
nodes in the unique table (F,G.Hl
Hash
Functien compu:nd Siﬂqlt :551. ccmpuced
bin; 2351‘
entry CAD Applications at BDD‘I: Theory and Practice 19 t 1993 Fiction! Rude" Reusing Memory  New nodes are added to the DAG during ITE
 minimum number nodes to represent the result are created!  The user discards old computation results using bdd_free ()
 problems with deleting the nodes immediately .
1.need to know if the nodes are shared by other roots
2. computed table entries are never deleted
3. computed table entries may point at the node
backpointers would take too much memory
sweeping entire computed table would be too slow CAD Application of 800's: Theory and Practice 20 o 1993 Ricard Rudolf Garbage Collection 0 Solution  Garbage Collection
.  maintain reference count for each node . includes user references and internal references
does not count references from the computed table
reference count is incremented when nodes are reused in the DAG
reference count is decremented when a root is freed by the user  nodes with reference count of 0 are called dead
they remain in the DAG until the next garbage collection  periodic garbage collection ' '
delete all computed table entries which point to a dead node
remove all dead nodes from the unique table CAD Application: of 300's: Theory and Practice at o 1993 Richard Rude“ Reference Counting Example  Freeing formula U2 reduces reference count on nodes below U2
reduce count of UI to 0; it becomes dead so free its children
reduce count of T. to 1
reduce count of T2 to 0: it becomes dead so free its children
reduce count of T3 to l o Nodes U2 and T2 have rel count 0
they will be made available for reuse at the next garbage collection CAD We of 300's: Theory and Practice 22 o 1993 Richer Rude“ Effect of Variable Ordering ai'bi + az’bz * ao'ba
Good Ordering Bad Ordering 22$ Linear Growth Exponential Growth Flop. a. “905. ' OBDD Variable Ordering  Goal: Form 0800 functions for all nets of a combinational circuit — represent function of every net in terms of primary inputs
called the global functions '  first step of verification and optimization algorithms 08005 for all nets or just primary outputs?
— comb. and seq. verification require only primary output OBDDs
 optimization algorithms require 0800s for all nets  Consistent variable order for all nets?
 comb. verification can handle different order for each primary output — seq. verification and optz algorithms need same order for all nets Why worry about variable ordering?
 using a random variable order almost always fails e.g.. OBDDs cannot be formed for 23 of the 35 largest circuits from
WLS'91 benchmark set when using a randomly generated order
and 100.000 node limit CAD Applications at 800's: Theory and Practice 27 c 1993 Richard Ruooil 03003 for Combinational Circuits  Depthcfirst walk on combinational circuit from each primary output
 form logic function for net in terms at primary inputs only Tl “it T: =7i‘z =5in
Ts =xITJ=0 :I =T5 =0 T; =TJ =‘i +32
T.=.r2 7; = TJ'yrJ =.tlf1X3 «i=1,
T, = T, 97;, = .rlfzx, +£2.15
:; = 72, =J:,.?3x3 +5243 CAD Aepiicationa or 800's: Theory Ind Practice 23 o 1993 Richard Rude“ Heuristic Variable Order  Use circuit topology to find a good variable order
 [FujitalCCADBS]. [MalikICCADSB]. [MinatoDACQO]
 variations on the following idea Define depth of each node n:
d( n) = { max “m”, d( f )+1 if n not a primary input
0 ' if n is a primary input Starting from deepest output. traverse network in depthofirst fashion
 order fanin at each node by decreasing depth
explore deep fanins first .
 break ties arbitrarily (or with more heuristics) Order of traversal of primary inputs defines OBDD variable order
 first variable visited is at the top of the 0800 CAO Applications oi 300:: Theory and Practice  29 o 1993 Richard Hudell L..__.____'_3 Heuristic Variable Order Example  Deepest output is z;
0 Depthfirst traversal. ordered by depth. visits inputs in order:
x. .x3.x3 CAD Applications of 3003: Theory and Practice 30 b 1996 Ricard Rude" I‘ s.
H\ C.
3’ 5':
ODE <
oua
an~ 2.
2%
(950 z
ooﬁ ,0
D
H.”' g
o " 0
<3"
 ~ %
Hp."
5‘51
5?\ 008 5910401; ﬂurseezoep u; peuos sepou 3 zen10pm Flationale for DepthFirst Heuristic  Primary inputs which feed deep cones of logic get ordered near the top
— heuristic: they are the more important decision makers 0' Theorem: If F = G( I‘,.Fz E.) where each pair of functions F; and F, if a 1) share no variables in common. then there exists an optimum OBDD Variable
order for F which consists of a noninterleaved concatenation of the optimum
variable orders of the F; (for some ordering of the functions F, . F2 .mfj, ). Xi is optimum variable order for F, Optimum variable order tor F is
(meiszi”'~xain)) for some permutation a. CAD Applications oi 800's: Theory and Pvlctlc. 31 o 1993 Richard Rude" P0339 u Q. a 3523: x no: en 51:33 5 :3 x33... R. H QA>.§.A\?§»A. . .9—l_A\=. 51.; . . :53... :5 9.. :3 are 35 93:33: melee: Pans—.35 Si 31.
s... >9. .5331 3.: P. $3.33. \33 2:: ex 28 e251? Se: 25 own—.35: olnlg \3 N n. 23 «38335.8: ex. :5 3.25:3 e?
Rolaqa \9. 3n 5... 3 3o 3&3 b M. 2.3.1. \o \ai: soy—Human .\
onaonbwun a 3:5“
uuzwzonaola. omnonhwunf ngwsonaolaone. onnonhwunv A :92? m onnonbwunv
Hogan: uni: nos—vane .2...” En nova—1 nonnoakuaabwod I are»: 333 w:
nonnouuwsm a: go noun—.0“
aonoun: 25»: w: nonaeakgwabwua
, nuisance—.255. 03.75::
uvuoannonnonbwun . 583 “ Special Case: Fanout Free Circuits a
d
m
h
b
a
.n
m
m
U
m
w
.n.
.m
e
m
m
n
e
m
.H.
O
m
D
N
A
:6
G
m
m for F which consists of an arbitrary (order independent) noninterleaved concatenation ol the optimum variables orders of the li. 0 Corollary: The depth first ordering algorithm returns an optimum order for O 1993 Rid“!!! Bud.“ (8 We 6 e)( l 9W! 0
(c d e)(a b)(h i)(t g)
(i hug me a cxb a) Optimum orders a combinational circuit with no reconvergent lanout composed from simple gates (AND. OR. NOT). CAD Who"! oi 300's: Theory and Practice O ’1 . C O O C
EEEEEE ' '3
g
r 5.: § §
EEEIEEEEEEEEE
i ‘ . WIN '1 1511ide M301 , giggig :ssgi g;
§§§*22§;zaé :
gang$3}: 3
g 3;; a0 g '3'? 3N E
s. E? Ei E s gi s g Heuristic Variable Ordering Limitations  Random orders almost always fail
 fails for 23 of 35 largest examples in IWLS'91 benchmark set 0 Depthfirst heuristic order also fails for many examples .
 fails for 11 of 35 largest examples in.lWLS'91 benchmark set 0 Is this inherent OBDD exponential complexity or just bad orders? 0 Many functions exhibit behavior that some orders produce large OBOOs
while other orders produce small OBDDs — e.g., nbit adder
( a,_. .bn‘ 4..; .b.z .o  .a. .bI .a" .b") linear
(0,.. .a,,_1 .  a. .a" .17". .b 2 .« .b, .b") exponential  e.g.. Achilles Heel function: f = .r,,x. +x:.r3++x,._z.r,,,.
(.r.,..rI ..r3..r_‘...r,,_2x,,_, ) linear
ix" .x: .x‘ .  ..r,,_2 . .r' .x, .  ..r,,. ) exponential CAD muons ol BOO’s: Theory and Practice 33 , O 1993 Richard Rude“ Dynamic Variable Ordering  Motivation:
 many OBDD operations run out of memory using heuristic ordering
 p rammer must devise applicationspecific orderin a rithms for
e231 0800 application ' 9 I90
can be complex for some applications
expend effort on better heuristics or finding a nonOBDD solution? 0 Solution: Dynamic Variable Ordering
 allow the 0800 package to modify the order on the ﬂy
' OBOD package hides all variable ordering details from user 0800 order is no longer static
Allow 0800 order to change inbetween operations  maintain consistent_order for the 0800 before.& after each lTE
modify the order as a sideaffect of 0800 processing
use current 0800 functions to determine new variable order CAD Applications at 800's: Theory and Practice 3‘ o is” Ridlaro Rude“ 5 Dynamic Variable Ordering Paradigm  General solution paradigm with many choices — when to modify the order?
e..g.. every time the 0800 DAG doubles in size
e.g.. when memory limit is exceeded
e.g.. every 10 ite operations
e.g.. every {00,000 ite steps  how to choose a new order
erg" variety of 0800 minimization algorithms  Logically perform variable ordering inbetween operations. but:
 F and G are small. but no is too large to be represented
need to make all 3 functions (F.G.F+G) small simultaneously
 solution: reorder variables deep in ITE recursion include partial result for F+G CAO Applications or 8003: Theory and Practice 35 c 1993 Richard Fludeil OBDD Minimization  Problem definition: Given a mumrooted OBDD DAG. reorder the
variables to minimize the number of nodes in the DAG needed to
represent all user functions (simultaneously) ' 0 Complexity: ‘
n! permutations (orders) for n variables
bruteforce search: 0(n!2") _
a dynamic programming search: 00:33") [Friedman & Supowit] ‘ 0 Optimum ordering problem is NPhard  Don't need optimum order! I y
‘ Just want to avoid exponentiallysized worst case when possible CAO Applications cl 800's: Theory and Practice 36 o 1993 Richard Rude“ I. Adjacent Variable Swap 0 Swapping the order of two adjacent variables
 affects only the nodes at the two levels! 0 For a single OBDD function F. the nodes at level i represent the unique
functions lrom the set {Fang .F,,z...; F } which depend on x, For all levels above .r,.
the set of cofactors remains unchanged by variable
exchange because levels .r, and xm are not involved . For all levels below x,,, ,
the set of cofactors remains unchanged by variable
exchange because of commutivity of cofactor (Ft. =(F...)' =F... CAD Application: or 300‘s: Theory and Practice 37 o 1993 Richard Rue: Adjacent Variable Swap Before variable swap:
F=(.ri.G.H)=(x,.(.r,...A.B).lx,,,.C.D)) After variable swap:
F=(.r,~,..G'.H') =(.t,...(.’r, ..l.C).fx,.B.D)) CAO Applications of 300's: Theory and Practice 30 '9 l9” Richard Rudolf Adjacent Variable Swap Comments 0 Several special cases: .
C does not depend on .r,,, implies A = B
H does not depend on x,., implies C = D
It A = C. then G' =(x,.A.C)= A
if B: D. then H'=i.r,.B.D)= B  Modification of Flor the new variable order: — removes. at most. nodes G and H from the DAG
these nodes may be deleted if they are referenced only by F
 adds. at most. nodes 6' and H' to the DAG
these nodes may be redundant or may already exist in the DAG CAD Applications oi 800's: Theory and Practice 39 c 1993 Richard Rude" Complexity of Adjacent Variable Swap  Overwrite each node at level i with 'a new node at level H»! (x, .G.H) + (.i:M .G'.H’)
(x, .(xM .A. B).(x,,. .C. D)) > (xM ,(xi .A.C).(x, .B.D))  How to reach nodes at level i“?  Walk DAG lrom the roots to reach level i (expensive in runtime)
 doublelinked list lor all nodes at each level (expensive in memory) — replace unique table with an array of hash tables. one per level
replace hash_lookup(unique_table, (1.6, H) , &value)
with hlash_lookup (unique_table [ ii . (6.11) , &valuel
walk down‘the hash table array for each level to reach all nodes  Adjacent variable swap complexity is proportional to the‘number of nodes
at level i and independent of the total DAG size! CAD Applications oi 300's: Theory and Practice w 9 1993 Richard Ruoeil Window Permutation Algorithm  Exhaustive search of all orders within a limited size window  e.g.. variables ix. ..rz..r,..r‘..r,..r,,..r7 ). window size 3 starting at x, Start ix,..r:.x3,x.,x,.x,,.x7)
swap (.r3.x4) _’(.r,..r:.x.,x,,x,.x,,.x,)
swap (x,..r,) (x. ..r:.x.,x,,x,.x6.x,)
swap (.r...r,) (.r..x:.x,,x.,x,.x6,.t7)
swap (x4..r,) (.r...r2.x,,x,,x‘.x6.x,)
swap (x,.x3) (.r..x3.x5.xs.x‘.xﬁ.x,)  Repeat optimal search within the window at each variable position Fujita .et al. EDAC'91]
lshiura et al. lCCAD'St] CAD Applications at 800's: mm and Practice 41 c 1993 Richard Rudell Window Permutation Algorithm 0 Move window of size I: to a spot in the DAG  Explore all k! permutations using kll edlecent variable swaps
 Record best permutation seen along the way  Restore optimal permutation with at most k(k  l)/ 2 adiacent swaps
 Iterate sliding window across the variables while DAG size decreases  Local optimum condition a variable has to move at least I: positions
to reduce the DAG size 0 Key limitation: can only afford small windows (e.g.. Ir 5 5) CAD W8 oi 300's: Theory and Practice ‘2 o la: Richard Rude" C. Sifting Algorithm
0 Find theoptimum position for a variable assuming other variables remain fixed 0 eg. 7 positions forx4 (including its current position) $13le ix, x. x, ix“ in} 0 Use painivise adjacent swap to exhaustively search all 7 positions
start (xl .x: ..r,.x..x,.x6.x,)
swap xv. _‘ (x,..r:..r,,x,.x..x,..x,)
swap xv. (x, ..r:..r,..t,..r,,.x‘.x7)
swap .r4 .. (13.x: .'x,,.t, .x6 .x, .x‘)
swap x7.. (x...r3..r,,x,..r,,.x..x7) swap x,,.. l.t..x:.x3,.t,.x... ..
swap x, .. (x .x: .x,.x.'.x, .. .
swap .t,.Jc4 (x...r:.x..x,.x_... .
swapxzut4 l.r..x..x3..r,,x,.. swap 1,43 (X‘..t...t:.x3,x5.. . CAD Applications at 300's: Theory and Practice ‘3 o 1993 Richard Fludeii . a,“ ] Sitting Algorithm Comments 0 Sift each variable lrom its current position
 down to the bottom of the DAG. then up to the top
 record best position seen
 restore best position alter completing search 0 Advantages:
 variables can move an arbitrarily long distance
independentoi intermediate increases in the DAG size
 solves Achilles heel ordering problem optimally starting with bad order
 solves adder ordering problem optimally starting with bad order CAO Applications at 300:: Theory and Practice 44 r c 1993 Richard Rude" _ r ewe 4, 7 7 Dynamic Variable Ordering  Results  Experiment #1: Window Permutation Algorithm vs. Silt Algorithm  35 largest examples from IWLS'91 benchmark set  100.000 node limit placed on the 0800 package
it memory limit exceeded. example is unsolved  Attempt to form 0800 for all primary outputs
start with heuristic depthﬁrst variable order ' (11 at 35 circuits are unsolved without dynamic ordering) apply BDD minimization every time DAG doubles in size  Results:
window permutation algorithm:
k=2:' solves 2 of 11 unsolved problems k=3. solves 3 at 11 unsolved problems k=4: solves 3 of 11 unsolved problems
sift algorithm:
solves 9 of 11 unsolved problems CAD Applications at BDD's: Theory and Practice es c 1993 Flian Rudell Dynamic Variable Ordering  Results 0 Experiment #2: Heuristic order vs. random order starting point  35 largest examples from IWLS'91 benchmark set  100.000 node limit placed on the 0800 package
it memory limit exceeded. example is unsolved  Attempt to lonn OBDD for all primary outputs
start with random variable order (23 at 35 examples are unsolved without dynamic ordering) apply BDD minimization every time DAG doubles in size ' Compare heuristic ordering start from random order start
sift algorithm:
solves 32 of 35 examples
random tails for 1 example which succeeds with heuristic order
2x longer runtime starting from random order
slightly larger DAG sizes when starting from random order CAD Applications ct 800‘s: Theory and Prectice 46 c 1993 Riaierd Rudell Dynamic Variable Ordering Summary  Effective technique to increase utility and application of 08005
 allows OBDD computation to complete in many cases
 classic space vs. time tradeoff
no memory increase runtime increases up to 10x
0 (Almost) removes need for heuristic ordering algorithms
 Sitting algorithm superior to window permutation  produces smaller DAG sizes
— allows more examples to complete Dynamic variable ordering future work
‘  need to explore other applications to demonstrate utility
 need faster and more effective BDD minimization algorithms CAO Acetications of 300's; Theory and Practice ‘7 c 1993 Richard Rudell ...
View
Full Document
 Fall '09
 brewer

Click to edit the document details