Unate Decomposition of Boolean Functions

We propose a new way of decomposing completely or incompletely specified Boolean functions into a set of unate functional blocks to obtain a good initial structure for logic synthesis. The input to our algorithm is a flattened netlist. The output is a multi-level netlist that can be efficiently implemented using a logic synthesis tool. Experimental results on Espresso PLA benchmarks employing a state of the art commercial synthesis tool show that our technique leads to an average 11 % improvement in the area after technology mapping, without sacrificing on speed.