Dynamic Re-Encoding During MDD Minimization

0 downloads 0 Views 95KB Size Report
In this paper, we present a new method that uses re- encoding, i.e. ... Recently, a method that uses static vari- .... count BDD nodes but MDD nodes with respect to the vari- .... max512. 9. 6. 72. 72. 0.30. 0.31. 0.36 misex1. 8. 7. 22. 22. 0.20. 0.20. 0.22 ... 82. 56. 123. 101. 15.19. 2.05. 25.56 x3. 135. 99. 406. 324. 90.25. 8.51.
IEEE International Symposium on Multiple-Valued Logic (ISMVL’2000) Portland, May 2000

Dynamic Re-Encoding During MDD Minimization Frank Schmiedle Wolfgang G¨unther Rolf Drechsler Institute of Computer Science, Albert-Ludwigs-University Chair of Computer Architecture (Prof. Dr. Bernd Becker) 79110 Freiburg im Breisgau, Germany fschmiedl, guenther, [email protected] Abstract Multi-valued decision diagrams (MDDs) are a generalization of binary decision diagrams (BDDs). They often allow efficient representation of functions with multi-valued input variables similar to BDDs in the binary case. Therefore they are suitable for several applications in synthesis and verification of integrated circuits. MDD sizes counted in number of nodes vary from linear to exponential dependent on the variable ordering used. In all these applications, minimization of MDDs is crucial. In many cases, multi-valued variables are composed by a certain number of binary variables, and so the multi-valued inputs arise by grouping binary variables. The selection of these groups, that is, the decision which variables to merge, has enormous impact on MDD sizes. Techniques for finding variable groupings before starting MDD minimization have been proposed recently. In this paper, we present a new method that uses reencoding, i.e. dynamic variable grouping. We don't choose one fixed variable grouping before minimizing MDDs, but allow to change the binary variables to be considered together during the minimization process. This is possible since MDDs are simulated on top of BDDs. By this, the underlying binary variables remain accessible throughout the minimization process. This technique is described in detail and we also show experimental results that demonstrate the efficiency of our approach.

1 Introduction MDDs [16] are used to represent functions with multivalued input variables. These decision diagrams are derived from BDDs [4], and therefore the two data structures have similar properties. E.g. most of the efficient operations that make BDDs fundamental for many applications dealing with large binary functions, can be provided for MDDs, too. Hence, functions with multi-valued inputs can be represented efficiently using MDDs. Such functions are very important for some issues in verification [6, 17], physical design [14] and logic synthesis [13]. In [9], a method for functional simulation that uses MDDs is described that in the meantime is integrated in a commercial tool, i.e. C OBRA T M from cadence1 . During simulation, functions are realized as MDDs. Each MDD node is substituted by a look-up table allowing fast random access, and by this functions can be evaluated very efficiently. 1 www.cadence.com

In all the above mentioned applications that use MDDs, minimization of the sizes of these MDDs is the key issue. The MDD sizes, measured in the number of nodes, usually is reduced by varying the ordering of the MDD variables. The variable ordering of an MDD strongly influences its size. There are examples with sizes that are linear in the number of MDD variables for one variable ordering and exponential for a different one. The problem of finding optimal variable orderings for MDDs is NP-hard, so heuristics have to be used for larger problem instances. An optimization method that has been applied to this problem successfully is sifting, which is based on a traversal of single variables throughout the whole ordering list. The sifting approach has originally been presented for BDDs [12] and Miller showed in [10] that it is also feasible for MDDs. If the multi-valued input variables of an MDD are formed by grouping variables of an underlying set of binary variables, there is a second degree of freedom for MDD minimization: the variable grouping. Finding a good variable grouping reduces the number of nodes of an MDD considerably. The number of possible variable groupings is exponential in the number of MDD variables, so exhaustive search is not possible within reasonable time bounds. Hence, heuristics have to be used for finding good variable groupings. Recently, a method that uses static variable grouping has been proposed [1]. Variable groupings are chosen fixed according to an algorithm at the beginning and subsequently the MDD sizes are reduced by usual sifting methods. Optimizing the variable ordering, the observation has been made that the step from static variable ordering minimization to dynamic minimization, i.e. sifting, has been very successful resulting in a reduction of up to 90%. In this paper we show that the use of dynamic variable grouping instead of static variable grouping causes significant profits in MDD sizes as well and therefore is very suitable for MDD minimization. We present a method that combines dynamic variable ordering and dynamic variable grouping. We use sifting to find a good ordering of the MDD variables, and in every step, the MDD is re-encoded, that is, variable grouping is adapted to the new ordering. By this, we do not only reduce the sizes of the MDDs enormously but also speed up computation. BDDs are used to simulate MDDs and for this access to the binary variables (the multi-valued variables consist of) remains possible. Sifting is performed by changing levels of the binary variables, and so the re-encoding resp. re-grouping is given by the new ordering obtained by these changes. We also propose a technique that shows that further minimization of MDDs is possible if it is allowed to use overlapping groupings, i.e. groupings which in certain cases may contain vari-

able groups that are not disjoint, in parallel. Experiments have been carried out and their results show that our MDDs are more than 20% smaller in comparison to those generated by the best previously known methods. At the same time, we are able to reduce runtimes by more than a factor of 5 on average.

2 Preliminaries

xi1 0

mi

1

xi2

xi2 0

0

1 0

1 2 3

1

2.1 Multi-valued Decision Diagrams

As well-known, each Boolean function f : Bn 7! B can be represented by an ordered binary decision diagram (BDD) [4], i.e. a directed acyclic graph where a Shannon decomposition is carried out in each node. Obviously, BDDs can be extended to represent functions f : Bn 7! f0; ::; k ? 1g and the resulting graphs are denoted as multi-terminal BDDs (MTBDDs). The operations on MTBDDs can be carried out as efficiently as in the case of two terminals [5, 2]. It is straightforward to extend MTBDDs to multi-valued decision diagrams (MDDs) [16] representing functions f : f0; ::; k ? 1gn 7! f0; ::; k ? 1g. For this, each internal node has k outgoing edges2 . In [16] it has been shown that the efficient operations known for BDDs can also be carried out on MDDs using a case-operator instead of the ite-operator [3]. A DD is called ordered if each variable is encountered at most once on each path from the root to a terminal and if the variables are encountered in the same order on all such paths. A DD is called reduced if it does not contain vertices either with isomorphic sub-graphs or with all successors pointing to the same node. In the following we only consider reduced, ordered MDDs, i.e. reduced OMDDs. Analogously to Section 4 of [8], we only consider functions f : f0; ::; k ? 1g 7! B and therefore our MDDs like BDDs only contain the terminal nodes 0 and 1. Generalization to MDDs with arbitrary integer-valued terminals is straightforward — MTBDDs instead of BDDs would have to be used to simulate MDDs in that case.

The MDD that represents f~ can easily be derived from B . If the binary variables that are grouped to one multi-valued variable mi are adjacent in the variable ordering of B , this can be done by simply replacing all subtrees of inner nodes labeled with these binary variables by one node labeled with mi . Figure 1 illustrates this for l = 2. If the binary variables that are grouped together are not adjacent in the variable ordering of B , f~ can still be represented by this BDD, but derivation of the corresponding MDD is more complicated then. In that case, it is necessary to change the variable ordering of B , e.g. by iterated level exchange such that the variables belonging to the same group are adjacent to each other before replacing the nodes in the way that has been previously described.

2.2 Derivation of MDDs from BDDs by Grouping Variables

3 MDD Minimization using Dynamic Variable Grouping

Specialized MDD packages exist [11], but they suffer from not being as well optimized as state-of-the-art BDD packages. One reason for this is that implementation of MDD operations, e.g. re-ordering by level exchange of variables is considerably more complex than for BDDs. Therefore it is often more efficient to realize MDDs using a BDD package by just simulating MDDs on BDDs [17]. This can be done by grouping binary BDD variables to multi-valued MDD variables [8]. For a group of r variables x1 ; : : : ; xr , there are 2r possible combinations of values. So, this variable group can also be considered as one single multi-valued variable m with 2r different possible values. A complete (non-reduced) BDD for an arbitrary function with binary inputs x1 ; : : : ; xr hence has 2r ? 1 inner nodes and 2r leafs. This BDD can also be viewed as an MDD with one inner node labeled with the variable m and the same 2r leafs that occur in the BDD. The value of m is then given by the decimal equivalent of the BCD representation of the values of x1 ; : : : ; xr . An analogous correspondence exists between an MDD with 2 In our application we restrict ourselves w.l.o.g. to the case that all variables are defined over the same set of values.

Figure 1. Simulation of MDDs on BDDs by variable grouping more than one inner node and a BDD representing a binary function f where x1 ; : : : ; xr is a subset of the input variables of f . In general, if a BDD B that represents a function f : fx1 ; : : : ; xrl g 7! B is given, then a corresponding multivariable input function f~ : fm1 ; : : : ; ml g 7! B can be generated by grouping binary variables as follows:

m1 := fx11 ; : : : ; x1r g; : : : ; m

l

:=

fx 1 ; : : : ; x r g l

l

Minimizing BDDs usually means searching for optimal variable orderings, i.e. BDD minimization is performed by sifting or some other re-ordering technique. Since sifting also works for MDDs [10], minimization of MDDs can be done using dynamic variable ordering, too. But if MDD variables are made up by grouping binary variables as described in Section 2.2, then there is one further degree of freedom: the choice of binary variables that are grouped to one MDD variable. It is well-known that there are significant differences in DD sizes when different variable orderings are used for DDs representing a given function. The same can be observed with respect to variable groupings. Example 1 MDD sizes vary considerably dependent on the variable grouping that is used. Figure 2 illustrates this for the function

f : B4 7! B; f (x1 ; x2 ; x3 ; x4 ) := x1 (x2  x3 ): Even though f does not depend on x4 , this dummy vari-

able is necessary for MDD representation since we always

a)

b)

x1

c)

1

m1 x2

0 0

x3

0

0 1

0

0-

1

x3

m1 11

1-

10

1

0-

m2

m2

0-

1- 0-

00 11

m2 01 10

1-

1

0

1

0

MDD Minimization: Preprocessing; while improvement for all binary variables xi sifting m(xi ) end forall end while

1

Figure 2. DDs representing f . a) as BDD, b),c) as MDDs using different variable groupings group the same number of binary variables. Therefore we always consider even numbers of variables. Figure 2 a) shows the BDD for f , b) shows the corresponding MDD M1 with variable grouping g1 = ffx1; x2 g; fx3 ; x4 gg and in c) the resulting MDD M2 when using the grouping g2 = ffx1; x4 g; fx2 ; x3 gg is given. 3 inner nodes are needed in M1 while 2 inner nodes are sufficient to represent f~ by M2 using the variable grouping g2 . Recently, Babu and Sasao [1] proposed a method for MDD minimization which considers variable grouping. A fixed grouping is computed before starting to minimize MDD size by dynamic variable re-ordering. In the following, we refer to this method as static variable grouping. In the approach to be presented here, we use dynamic variable grouping, i.e. the variable groups are changed during dynamic variable re-ordering. The realization of MDDs by simulation on BDDs keeps the underlying binary variables accessible, and due to this, dynamic grouping becomes possible. Re-ordering is carried out at the binary level, i.e. levels of binary variables instead of levels of multi-valued variables are swapped. When the level of a binary variable xi is changed, the variables that are adjacent to xi change, too. As mentioned in Section 2.2, generation of the corresponding MDD can be done efficiently only if the variable groups exclusively consist of binary variables in adjacent levels. Therefore, in this approach only variables in adjacent levels are grouped3. When the levels of binary variables are changed, obviously the adjacency to other variables changes, too. Hence implicitly also the grouping is modified by this level change. In the following, we restrict ourselves to groups containing two variables, but extension to MDD minimization using groups with more than two variables is straightforward. For variable re-ordering, BDD sifting can be used if the evaluation function is modified in a way that it does not count BDD nodes but MDD nodes with respect to the variable grouping that in this case is determined by the variable ordering. In the following, first the overall minimization procedure is given. Afterwards, the significant differences between the implemented versions, i.e. the preprocessing steps and also the node counting functions used during dynamic reordering, are described in detail. Figure 3 outlines the minimization procedure. The algorithm starts with Preprocessing. In this step, no multivalued aspects are considered. Instead of minimizing the number of MDD nodes, the node count of the underlying 3 An exception is the case when overlapping groupings are allowed. This is explained later in this section.

Figure 3. Algorithm for MDD minimization BDD is reduced. By this, a suitable starting point for MDD minimization is found. There are two preprocessing methods that have been used in this approach: 1. Conventional BDD sifting 2. BDD minimization using evolutionary algorithms [7] After preprocessing, MDD minimization by dynamic variable re-ordering starts. This is done by consecutively sifting all the binary variables. Level changes during the sifting m procedure are performed in the same way as for BDD minimization, but the procedure differs in the evaluation of the resulting BDDs. Instead of simply counting BDD nodes, binary variables in even levels are grouped with those in the subsequent levels and the number of nodes of the resulting MDD is counted. Obviously, the grouping changes with every variable re-ordering step. Three different methods for counting MDD nodes have been implemented: 1. Global node count 2. Local node count 3. Node count for overlapping groupings Global node count traverses the whole BDD. Starting with the top level4 , even levels are considered together with the subsequent ones. Variables in these two levels are considered to be grouped and the node number of the resulting MDD level is added to the actual count. If the index of the bottom level of inner nodes is even, there is no possibility for grouping the according variable with another one and thus all the nodes in this level have to be counted, i.e. like in the example shown in Figure 2 an additional dummy variable is introduced. The algorithm for global node count is shown in Figure 4. Since global node count can be realized by a single traversal of the BDD, computation time is linear in the number of nodes of the BDD. The algorithm for global node count can be sped up using the following observation: if overlapping grouping is not allowed5 , it is not necessary to traverse the whole BDD after each level change operation as done by global node count. This is a local operation and thus the same result can be obtained by updating the count of nodes, i.e. computing the difference between the number of MDD nodes before and after the level change operation is performed and add it to resp. subtract it from the node count. More formally, if variables xi and xi+1 in level i and i + 1 are exchanged and i is even, then xi and xi+1 belong to the same variable group resp. MDD level and hence the 4 The

index of the top level is zero. means if only nodes of adjacent levels may be grouped and no different nodes labeled with the same variable may be grouped with nodes labeled with different variables. 5 That

Name of circuit accpla alu2 alu4 apex1 apex5 apla br1 dc2 dist dk27 duke2 e64 ex4 f51m max512 misex1 misex2 misex3 misg mish mlp4 opa rd84 sao2 seq soar t3 tial vg2 x1 x2dn x3 x7dn xparc



I/O in out 50 69 10 6 14 8 45 45 117 88 10 12 12 8 8 7 8 5 9 9 22 29 65 65 128 28 8 8 9 6 8 7 25 18 14 14 56 23 94 43 8 8 17 69 8 4 10 4 41 35 83 94 12 8 14 8 25 8 51 35 82 56 135 99 66 15 41 73

MDD sizes distinct overlap 1068 891 92 88 214 211 749 678 726 555 58 57 50 49 37 30 61 61 31 31 215 201 96 96 269 252 23 23 72 72 22 22 62 45 293 285 61 47 76 66 69 69 247 219 21 21 43 43 799 678 293 259 34 32 313 311 49 43 366 272 123 101 406 324 278 223 1040 974 8366 7329

global 23.68 0.33 0.94 16.68 101.76 0.28 0.27 0.19 0.25 0.24 1.49 9.97 76.56 0.17 0.30 0.20 0.81 1.43 4.76 19.47 0.29 0.89 0.19 0.26 13.05 26.07 0.33 1.16 0.97 9.33 15.19 90.25 16.65 21.63 456.04

Runtime local 6.54 0.31 0.78 5.74 10.05 0.27 0.28 0.21 0.26 0.23 0.92 3.17 6.09 0.22 0.31 0.20 0.51 1.25 1.08 2.23 0.26 0.66 0.20 0.23 4.77 3.57 0.28 0.92 0.60 2.58 2.05 8.51 3.73 8.37 77.32

overlap 28.90 0.36 1.00 19.86 145.49 0.32 0.37 0.19 0.28 0.25 1.78 16.27 138.19 0.19 0.36 0.22 1.11 1.58 7.92 35.64 0.28 1.11 0.20 0.28 16.03 37.42 0.32 1.26 1.31 12.30 25.56 142.62 27.58 33.83 700.41

Table 1. Results for MDD minimization methods using dynamic grouping Global Node Count: actual node count = 0; for all even levels i actual level count = #nodes in level i; for all nodes j in level i + 1 if j is referenced by variables of levels 6= i actual level count++; end if end forall actual node count = actual node count + actual level count; end forall Figure 4. Global MDD node count level i level i+1

level j level j+1

Figure 5. Overlapping variable groupings

number of MDD nodes for this level is not affected. Thus the node count has only to be updated if i is an odd number. In that case, the number of nodes of the MDD after level change is computed as follows: #nodes = o ? oi?1;i ? oi+1;i+2 + ni?1;i + ni+1;i+2 ; where o is the number of MDD nodes before the level exchange is carried out and ox;y denotes the number of MDD nodes in the multi-valued level derived from the binary levels x and y before the level exchange has taken place. nx;y is the number of nodes in the same level after the re-ordering step has been carried out. Computation time is linear in the maximum number of nodes per level in this case. In Section 4 it will be shown that the use of local instead of global node count speeds up MDD minimization considerably. Another way of reducing the number of MDD nodes is to allow overlapping variable grouping. If so, nodes labeled with binary variables belonging to non-adjacent BDD levels are grouped if there is an edge between these nodes and if there is no edge between one of these nodes and another one belonging to the same MDD level. Figure 5 illustrates this situation. In all other cases, variables are grouped in the same way as by the methods previously described in this section. Our efficient local node count method is not applicable in this case, and therefore the nodes are counted by global node count, i.e. by traversing the whole DD. Making use of such groupings increases runtime for minimization but leads to further reductions of MDD sizes.

4 Experimental Results We implemented the MDD minimization method described in Section 3 in the programming language C. MDDs are simulated on top of BDDs and for realization of BDDs a state-of-the-art package CUDD [15] that includes complementary edges has been used. All experiments have been carried out on a S UN U LTRA 1 workstation with 256MB memory. Runtimes are measured in CPU seconds. In Table 1, resulting MDD sizes and runtimes for the different approaches presented in Section 3 are given. Columns 1-3 contain the name and the number of binary inputs and outputs for the benchmark. In the following two columns, sizes of the reduced MDDs obtained with and without using overlapping groupings are given. In the last three columns, runtimes for global node count, local node count and minimization with overlapping groupings are compared. Preprocessing has been performed by BDD sifting. The results show that by using local node count instead of global node count, computation times for minimization can be reduced enormously for big examples (up to 90%, e.g. for circuit x3). When considering the sizes of the reduced MDDs, it can be observed that by allowing overlapping groupings during minimization, resulting MDD sizes are considerably smaller (by up to 15%) for big examples while for small examples, in most cases the resulting number of MDD nodes only slightly differs from the node count that is obtained by exclusively using distinct groupings. The BDD sizes before MDD minimization —but after preprocessing— and after minimization has been finished are shown in column 2 resp. 3 of Table 2 while column 4 and 5 contain the node counts of the MDDs at the same stage of the minimization process. MDD sizes are reduced by more than 10% on average. At the same time, BDD sizes grow by nearly 10%. This indicates that there are significant differences between MDD minimization using dynamic grouping and minimization of the underlying BDDs by one of the well-known methods. The influence of using an evolutionary algorithm during preprocessing is shown in Table 3. Sizes of the reduced MDDs and runtimes are compared for the local node count method. MDD sizes can be reduced by further 5% when using evolutionary algorithms, but especially for big benchmarks computation time increases considerably in this case. In Table 4, we compare the MDD sizes and runtimes for the dynamic approach that uses local node count and hence does not allow overlapping groupings to the static variable grouping method presented in [1]. The experiments have been carried out on machines different from those that have been used in [1]. In the static grouping approach, several variations for MDD minimization have been presented. In Table 4, for each benchmark we compare our results to a “best of” selection from [1], i.e very pessimistic for our approach. Nevertheless, our approach gives significant reductions in size and runtime due to the dynamic technique. BDD sifting is used during preprocessing in the case of dynamic grouping, but no evolutionary algorithm is applied. The number of MDD nodes using dynamic grouping is more than 20% smaller on average. In particular, for most of the big benchmarks, minimized MDDs are much smaller when dynamic grouping is used (see e.g. ex4). Runtime for static grouping is not available for all benchmarks. We summed the runtimes for all benchmarks considering the ones not available to be zero. Nevertheless, the sum of runtimes for all benchmarks is by more than a factor 5 higher than in the case of dynamic grouping. For circuit apex5,

Name of Local node count circuit BDD init BDD final MDD init MDD final accpla 1661 1748 1121 1068 alu2 159 169 92 92 alu4 353 435 261 214 apex1 1251 1318 970 749 apex5 1073 1113 741 726 apla 105 108 58 58 br1 88 95 50 50 dc2 61 64 37 37 dist 120 120 61 61 dk27 59 61 31 31 duke2 351 385 296 215 e64 128 141 96 96 ex4 466 484 288 269 f51m 38 42 23 23 max512 144 151 72 72 misex1 35 41 23 22 misex2 79 87 64 62 misex3 520 546 316 293 misg 70 82 64 61 mish 101 105 81 76 mlp4 134 145 70 69 opa 363 386 247 247 rd84 41 41 21 21 sao2 80 85 45 43 seq 1195 1280 980 799 soar 427 477 327 293 t3 55 62 34 34 tial 579 623 327 313 vg2 80 83 57 49 x1 446 528 381 366 x2dn 166 178 137 123 x3 524 585 465 406 x7dn 414 453 320 278 xparc 1867 1940 1320 1040  13233 14161 9476 8356

Table 2. Development of MDD and BDD sizes during minimization minimization with static grouping takes more than 1000 times as long as minimization by the method presented in this paper. Although the results for the different methods were computed on different machines, this gives an impression of the efficiency of our approach. All in all, it can be seen that our method reduces MDD sizes significantly.

5 Conclusions We presented a new approach for minimization of MDDs. MDDs are simulated on top of BDDs and thus multi-valued variables consist of groups of binary variables. Minimization of MDDs is performed by optimizing two degrees of freedom: variable ordering and variable grouping. Variable re-ordering usually is done dynamically and approaches that use static variable grouping have also been presented earlier. In this paper, we described a method that reduces number of nodes of MDDs by performing dynamic re-ordering and dynamic grouping at the same time. Additionally, an approach for MDD minimization when overlapping groupings are allowed has been given. We also showed how computation can be sped up using a local node count operation instead of counting nodes by traversal of the whole DD. Experimental results have been given to demonstrate the efficiency of our approach. After minimization on BDD level is done, a further reduction of MDD sizes by minimization using dynamic grouping by more than 10% is possible. Runtimes are reduced by more than 80% on aver-

Name of MDD size Runtime circuit no EA with EA no EA with EA accpla 1068 1042 6.54 152.53 alu2 92 79 0.31 1.07 alu4 214 208 0.78 3.88 apex1 749 742 5.74 80.69 apex5 726 622 0.05 56.59 apla 58 58 0.27 0.74 br1 50 48 0.28 1.16 dc2 37 37 0.21 0.38 dist 61 61 0.26 0.59 dk27 31 31 0.23 0.76 duke2 215 221 0.92 8.51 e64 96 96 3.17 61.99 ex4 269 288 6.09 21.77 f51m 23 23 0.22 0.36 max512 72 72 0.31 0.67 misex1 22 20 0.20 0.37 misex2 62 62 0.51 5.84 misex3 293 273 1.25 5.32 misg 61 53 1.08 8.54 mish 76 75 2.23 12.24 mlp4 69 69 0.26 0.69 opa 247 239 0.66 3.79 rd84 21 21 0.20 0.51 sao2 43 43 0.23 0.77 seq 799 782 4.77 114.94 soar 293 282 3.57 30.22 t3 34 34 0.28 0.99 tial 313 340 0.92 5.47 vg2 49 49 0.60 8.69 x1 366 324 2.58 45.17 x2dn 123 103 2.05 21.93 x3 406 378 8.51 36.04 x7dn 278 248 3.73 67.99 xparc 1040 1013 8.37 96.46  8356 8036 67.38 857.66

Name of MDD size Runtime circuit Static(best) Dynamic Static Dynamic accpla 1065 1068 74.25 6.54 alu2 40 92 n/a 0.31 alu4 365 214 n/a 0.78 apex1 1109 749 56.90 5.74 apex5 527 726 160.71 0.05 apla 73 58 n/a 0.27 br1 37 50 n/a 0.28 dc2 29 37 n/a 0.21 dist 85 61 n/a 0.26 dk27 24 31 n/a 0.23 duke2 297 215 n/a 0.92 e64 110 96 25.32 3.17 ex4 1435 269 20.57 6.09 f51m 33 23 n/a 0.22 max512 65 72 n/a 0.31 misex1 20 22 n/a 0.20 misex2 69 62 n/a 0.51 misex3 310 293 n/a 1.25 misg 47 61 0.73 1.08 mish 103 76 4.95 2.23 mlp4 70 69 n/a 0.26 opa 178 247 0.03 0.66 rd84 24 21 n/a 0.20 sao2 43 43 n/a 0.23 seq 730 799 12.25 4.77 soar 520 293 4.71 3.57 t3 26 34 n/a 0.28 tial 355 313 n/a 0.92 vg2 62 49 n/a 0.60 x1 776 366 29.46 2.58 x2dn 101 123 4.05 2.05 x3 682 406 87.35 8.51 x7dn 351 278 10.61 3.73 xparc 1012 1040 65.70 8.37  10773 8356 (557.59) 67.38

Table 3. Impact of preprocessing step (EA) age in comparison to previously proposed methods. The observation that BDD sizes increase while MDD sizes are reduced indicates that directly minimizing MDDs is more effective than just reducing the underlying BDDs. It has also been shown that minimization using dynamic grouping on the average produces better results than known static methods and thus it is very suitable for MDD minimization.

Table 4. Comparison of static and dynamic grouping

Acknowledgment The authors like to thank Bernd Becker for helpful discussions on this work.

References [1] H. Babu and T. Sasao. Shared multiple-valued decision diagrams for multiple-output functions. In Int' l Symp. on MultiValued Logic, pages 166–172, 1999. [2] R. Bahar, E. Frohm, C. Gaona, G. Hachtel, E. Macii, A. Pardo, and F. Somenzi. Algebraic decision diagrams and their application. In Int' l Conf. on CAD, pages 188–191, 1993. [3] K. Brace, R. Rudell, and R. Bryant. Efficient implementation of a BDD package. In Design Automation Conf., pages 40–45, 1990. [4] R. Bryant. Graph - based algorithms for Boolean function manipulation. IEEE Trans. on Comp., 35(8):677–691, 1986. [5] E. Clarke, M. Fujita, P. McGeer, K. McMillan, J. Yang, and X. Zhao. Multi terminal binary decision diagrams: An efficient data structure for matrix representation. In Int' l Workshop on Logic Synth., pages P6a:1–15, 1993. [6] R. Drechsler. Verification of multi-valued logic networks. In Int' l Symp. on Multi-Valued Logic, pages 10–15, 1996.

[7] R. Drechsler, B. Becker, and N. G¨ockel. A genetic algorithm for variable ordering of OBDDs. IEE Proceedings, 143(6):364–368, 1996. [8] T. Kam, T. Villa, R. Brayton, and A. SangiovanniVincentelli. Multi-valued decision diagrams: Theory and applications. Multiple Valued Logic - An International Journal, pages 9–62, 1998. [9] P. McGeer, K. McMillan, A. Saldanha, A. SangiovanniVincentelli, and P. Scaglia. Fast discrete function evaluation using decision diagrams. In Int' l Conf. on CAD, pages 402–407, 1995. [10] D. Miller. Multiple-valued logic design tools. In Int' l Symp. on Multi-Valued Logic, pages 2–11, 1993. [11] M. Miller and R. Drechsler. Implementing a multiple-valued decision diagram package. In Int' l Symp. on Multi-Valued Logic, pages 52–57, 1998. [12] R. Rudell. Dynamic variable ordering for ordered binary decision diagrams. In Int' l Conf. on CAD, pages 42–47, 1993. [13] T. Sasao and J. Butler. Planar multiple-valued decision diagrams. In Int' l Symp. on Multi-Valued Logic, pages 28–35, 1995. [14] F. Schmiedle, R. Drechsler, and B. Becker. Exact routing using symbolic representation. In Int' l Symp. Circ. and Systems, pages VI:394–VI:397, 1999. [15] F. Somenzi. CUDD: CU Decision Diagram Package Release 2.3.0. University of Colorado at Boulder, 1998. [16] A. Srinivasan, T. Kam, S. Malik, and R. Brayton. Algorithms for discrete function manipulation. In Int' l Conf. on CAD, pages 92–95, 1990. [17] The VIS Group. VIS: A system for verification and synthesis. In 8th Int' l Conf. on Computer Aided Verification, LNCS 1102, pages 428–432, 1996.