Mihir Choudhury, Kartik Mohanram (ICCAD’10 best paper nominee) Presentor: ABert Liu
Introduction Terminology Algorithm Illustration Experimental Result Conclusion Outline
Introduction
Bi-decomposition is a special kind of functional decomposition Functional decomposition Break a large function into a network of smaller functions Reduce circuit and communication complexity and thus simplify physical design Bi-decomposition plays an important role in logic synthesis for restructuring Boolean networks Introduction
Problem f fAfA f B h XAXA XBXB XCXC XBXB XCXC Bi-decompose XAXA
Terminology
Blocking Edge Graph (BEG): It’s an undirected graph. Every vertex represent a variable. One graph represents only one non-decomposability of and, or, or xor. The edges connected variable pair {i, j} means no variable partition can decompose this variable pair. BEG can extract variable partition. Terminology
( a, b) and ( b, d) are not blocked in the and BEG. ( c, d) and ( c, b) are not blocked in the or BEG. The xor BEG is complete graph. BEG Example OR AND ab dc ab dc XOR ab dc
Algorithm
1.Construct BEG 2.Do variable partition on the BEG. 3.Compute the decomposed functions. 4.Recursively bi-decompose the decomposed functions from 3. In 4. if the function is not decomposable it will do some relaxation to make further decompose. (It’s not bi-decomposition) Algorithm
Illustration
Construct BEG
Blocking condition: One square blocks the others. Construct BEG
K-map ij\k Example AND i kj OR i kj XOR i kj For { i, j } pair : assign k=0 assign k=1 i\j 0 1 i\j or xor square square Blocking all { i, j} in all BEGs. Other pair do the same thing to finish constructing the BEGs.
K-map ij\k Example AND i kj OR i kj XOR i kj For { i, j } pair : assign k=0 assign k=1 i\j 0 1 i\j Literal Zero square square
We can compute whether the edge ( i, j) should be added or not in and and or BEGs by compute x. If x is not constant 0 the edge will be added. Construct BEG i j k On-Set Off-set
The same for or and and : Construct BEG i j k On-Set Off-set
Whether the function is bi-decomposable or not? Guarantee the existence of variable partition. Variable Partition
Who can be common variable? Vertex cut is necessary but not sufficient condition. Variable Partition
Vertex Cut: A set of vertices whose removal renders a connected graph disconnected. Examples: Variable Partition ab dc Legal cut Not a vertex cut a b d c e Legal cut Another legal cut
Decomposed function for or and and : For an or bi-decomposition. Decomposed Function Off-set On-set An and bi-decomposition can be obtained in a similar manner by interchanging the off-set and the on-set of f. It’s subset of off-set of f. It’s obtained from expanding on-set of f and does not overlap with off-set of decomposed function.
For xor : Decomposed Function
Example
Experimental Result
Conclusion
The experimental result looks good. This work implemented in ABC using CUDD package, it might have memory problem when function is large. Solving problem with new graph structure might be a good idea. The BEG has global view of the decomposability of every variable pairs to choose the best partition. Maybe we can improve our bi-decomposition work. Conclusion
Thanks for Attention