Fast Boolean Minimizer for Completely Specified Functions Petr Fišer1, Přemysl Rucký1, Irena Váňová2 1Czech Technical University in Prague Dept. of Computer Science and Engineering 2UTIA, CAS
Outline Motivation Ternary tree The minimization algorithm Experimental results Conclusions DDECS’2008, Bratislava
Motivation Standard two-level minimizers are not able to handle “huge” functions “Normal” functions → Espresso Many input variables → BOOM Many output variables → FC-Min Many defined terms → ??? DDECS’2008, Bratislava
Motivation Functions having many (up to millions) product terms often emerge in logic synthesis (e.g., collapsing, Boolean manipulations with functions, etc.) These functions often contain redundancies, easily detectable absorptions, … Early detection of these would significantly reduce memory consumption and the computation time → There is a need for a two-level minimizer able to handle such functions. The priority is speed, not the result quality: “Do something with it, but I want the result immediately” DDECS’2008, Bratislava
Ternary Tree Recall: Many terms = tenths of thousands, millions There could occur redundancies (duplicate terms) → An efficient storage structure is needed DDECS’2008, Bratislava
Ternary Tree Used as a storage of terms. It is not a function representation (like BDDs)! Ternary tree node: 1 - Depth = number of input variables DDECS’2008, Bratislava
Ternary Tree a b c d e 00000 0001- -0-10 -0-11 101-1 11--0 11111 DDECS’2008, Bratislava
Ternary Tree Properties: Insertion of a term in O(n) Looking up a term in O(n) Size: between n and 3n+1 Comparison of look-up speeds: On success On failure Ternary tree n 1 … (n-1) Truth table n … n.p n.p DDECS’2008, Bratislava
Ternary Tree Look-up Example Searching: ab‘c‘d (1001-) a b failure c d e 00000 0001- -0-10 -0-11 101-1 11--0 11111 DDECS’2008, Bratislava
TT Minimization Absorption of one variable Complement property Very simple. Only two rules applicable to the leaves only: Absorption of one variable a + ab = a (00-) + (001) = (00-) Complement property ab + a’b = b (000) + (001) = (00-) ???- ???1 ???- ???0 ???1 ???- DDECS’2008, Bratislava
TT Minimization Example 001 010 011 100 101 110 111 001 01- 10- 11- DDECS’2008, Bratislava
Tree Rotation The operations can be performed on leaves only => the tree must be rotated Cut off the root node → TT is split into three (at most) Append the root variable to all the leaves Merge the trees DDECS’2008, Bratislava
Tree Rotation Example DDECS’2008, Bratislava
TT Minimization Example cont. … 10- 00- 01- 11- 001 -1- 10- DDECS’2008, Bratislava
Experimental Results - Collapsing Benchmark Size (n / p) Espresso TT-Min TT-min + Espresso Terms Time [s] c880_3 60 / 212290 15673 470 57853 23.11 305 c880_4 60 / 67136 440 37 12046 6.44 439 8.5 c1908_4 33 / 32768 7040 20 20990 1.1 17 c1908_5 33 / 6464 2144 1 4640 0.19 2 c1908_6 33 / 13700 3200 4 8704 0.41 4.5 c3540_1 50 / 403298 32455 4740 101512 32.9 32396 1569 c3540_2 50 / 42568 10202 254 19620 4.2 10065 193 c3540_3 50 / 4464 1022 2112 0.34 2.5 c3540_4 50 / 1912 184 0.1 459 0.07 c3540_5 50 / 6657 1516 5 3654 0.62 1522 c3540_6 50 / 159920 14397 900 43442 9.09 382 c3540_7 50 / 6933 611 2360 0.37 DDECS’2008, Bratislava
Experimental Results - Collapsing Benchmark Size (n / p) Espresso TT-Min TT-min + Espresso Terms Time [s] c880_3 60 / 212290 15673 470 57853 23.11 305 c880_4 60 / 67136 440 37 12046 6.44 439 8.5 c1908_4 33 / 32768 7040 20 20990 1.1 17 c1908_5 33 / 6464 2144 1 4640 0.19 2 c1908_6 33 / 13700 3200 4 8704 0.41 4.5 c3540_1 50 / 403298 32455 4740 101512 32.9 32396 1569 c3540_2 50 / 42568 10202 254 19620 4.2 10065 193 c3540_3 50 / 4464 1022 2112 0.34 2.5 c3540_4 50 / 1912 184 0.1 459 0.07 c3540_5 50 / 6657 1516 5 3654 0.62 1522 c3540_6 50 / 159920 14397 900 43442 9.09 382 c3540_7 50 / 6933 611 2360 0.37 DDECS’2008, Bratislava
Experimental Results – Random Functions Benchmark Espresso TT-Min Terms Time [s] 30 / 5000 35 17.82 1004 0.63 35 / 5000 1169 1306.34 1719 1.01 35 / 8000 200 400.98 3703 2.41 40 / 5000 - > 24 h 3033 5.5 40 / 10000 5054 7.0 40 / 20000 6606 13.72 50 / 30000 13232 33.6 60 / 50000 38203 94.9 DDECS’2008, Bratislava
Conclusions A new two-level minimizer based on ternary trees Good for functions described by many terms Ternary tree is a good “storage” for a large number of terms The minimization is very fast, the result quality is not optimum, though Anyway, we are lucky that at least some minimization is done, since standard tools are completely unusable for these functions Practice has shown that such a fast minimization is essential for many logic synthesis processes (multi-level network collapsing, Boolean manipulation with functions…) DDECS’2008, Bratislava