BDDs - BDDs: Implementation IsSues & Variable Ordering...

Info iconThis preview shows pages 1–22. Sign up to view the full content.

View Full Document Right Arrow Icon
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 2
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 4
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 6
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 8
Background image of page 9

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 10
Background image of page 11

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 12
Background image of page 13

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 14
Background image of page 15

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 16
Background image of page 17

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 18
Background image of page 19

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 20
Background image of page 21

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 22
This is the end of the preview. Sign up to access the rest of the 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: typed-t strum: bdd_£omula_atzuct 'bdd_tomu‘.a: bdd_manaqcr “Jew ) ; void bu.“ bdd_mnnqor bdd) ; ' bdeoz-aula Nd_cnn:o_urt|hlobdd_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 banndlbdeot-mula 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 bdd-oxil: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_fiomula 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 : bdd-cteace_variableibddi; q : bdd-andia. 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) ' constant-time 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 re-computing 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 tibia-l.) v Eibln-Z): ) olu 1.! (no-own) l- 0) ( ) t - melanin]: return z: . l else ( t - Eiblln-l) . EibUn-Zl; WITH“ - c: ) ESL'UII'. L'.’ CAD AWIMI oi BDD‘I: Theory and Practice 9 o 1993 Richard Rude" Multi-Rooted (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 = 7-I (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 top-level 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 triv1|l_cotac:or(fl. 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 Manned-on: on 800:: Tho-y and Pnemo 13 e 1993 Richard find." 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 fiudIll 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 hash-based 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 Siflqlt :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 back-pointers 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 re-use 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 - [Fujita-lCCADBS]. [Malik-ICCADSB]. [Minato-DACQO] - 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 Depth-first 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 oofi ,0 D- H.”' g o " 0 <3" - ~- % Hp." 5‘51 5?\ 008 5910401; flurseezoep u; peuos sepou 3 zen-10pm Flationale for Depth-First 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 (mei-szi-”'~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 Depth-first 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., n-bit 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 application-specific orderin a rithms for e231 0800 application ' 9 I90 can be complex for some applications expend effort on better heuristics or finding a non-OBDD solution? 0 Solution: Dynamic Variable Ordering - allow the 0800 package to modify the order on the fly ' OBOD package hides all variable ordering details from user 0800 order is no longer static Allow 0800 order to change in-between operations - maintain consistent_order for the 0800 before.& after each lTE modify the order as a side-affect 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 in-between 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 mum-rooted 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 brute-force search: 0(n!2") _ a dynamic programming search: 00:33") [Friedman & Supowit] ‘ 0 Optimum ordering problem is NP-hard - Don't need optimum order! I y ‘ Just want to avoid exponentially-sized 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 run-time) - double-linked 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.1-1) , &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‘.xfi.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 kl-l 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 the-optimum 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 independent-oi 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-first 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 run-time 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 trade-off no memory increase run-time 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

This note was uploaded on 12/29/2011 for the course ECE 256b taught by Professor Brewer during the Fall '09 term at UCSB.

Page1 / 22

BDDs - BDDs: Implementation IsSues & Variable Ordering...

This preview shows document pages 1 - 22. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online