190 likes | 309 Views
This paper introduces a novel two-level Boolean minimizer utilizing ternary trees to efficiently handle functions with a vast number of product terms, often reaching millions. Unlike standard two-level minimizers, which struggle with large-scale functions, our approach focuses on speed, prioritizing quick results over optimality. The method capitalizes on early detection of redundancies to reduce memory consumption and computation time, proving crucial for various logic synthesis applications. Experimental results demonstrate significant performance advantages, establishing the viability of this technique in real-world scenarios.
E N D
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: 0 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: 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 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 ???- ???1 ???- ???0 DDECS’2008, Bratislava
TT Minimization Example 001010011100101110111 00101-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 DDECS’2008, Bratislava
Experimental Results - Collapsing DDECS’2008, Bratislava
Experimental Results – Random Functions 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