570 likes | 673 Views
Implicant Expansion Methods Used in The BOOM Minimizer. Petr Fišer, Jan Hlavička Czech Technical University, Karlovo nám. 13, 121 35 Prague 2 e-mail: hlavicka@fel.cvut.cz, fiserp@fel.cvut.cz. Outline. 1. Introduction 2. Problem Statement 3. BOOM Structure 4. Iterative Minimization
E N D
Implicant Expansion Methods Used in The BOOM Minimizer Petr Fišer, Jan Hlavička Czech Technical University, Karlovo nám. 13, 121 35 Prague 2 e-mail: hlavicka@fel.cvut.cz, fiserp@fel.cvut.cz
Outline 1. Introduction 2. Problem Statement 3. BOOM Structure 4. Iterative Minimization 5. CD-Search 6. Implicant Expansion 7. Tree Buffer 8. Experimental Results 9. Conclusions
Problem Statement • Given Boolean function of n input variables F(x1, x2, … xn,), • by truth table: 1-terms (on-set) • 0-terms (off-set) • only few of the 2n minterms have an output value assigned (care terms) • the rest are don't care states. • Task • Formulate a synthesis algorithm, which will produce a two-level disjunctive form of F, whose complexity is close to the minimal disjunctive form.
BOOM Structure • Single-output functions: • CD-Search (generation of implicants) • Implicant Expansion (generation of PIs) • Covering problem solution • Multi-output functions: • CD-Search (generation of implicants) • Implicant Expansion (generation of PIs) • Implicant Reduction (generation of group implicants) • Solution of the Group Covering Problem • Output Reduction
Iterative Minimization • The solution depends on random events • CD-Search, IE and IR are repeated - more implicants, then covering problem is solved
CD - Search • Combines the implicant generation with covering problem solution • Greedy algorithm - implicants need not be prime • CD_Search(F,R) { • H= • do • F’ = F • t = 1 • do • l = most_frequent_literal(F’) • t = t * l • F’ = F’ – cubes_not_including(t) • while (t R) • H= Ht • F= F- F’ • until (F== ) • return H • }
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 abcde f(1): ..... f(0): .....
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 abcde f(1): 2.... f(0): 7....
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 abcde f(1): 24... f(0): 75...
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 abcde f(1): 246.. f(0): 753..
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 abcde f(1): 2463. f(0): 7536.
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 abcde f(1): 24632 f(0): 75367 selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS a‘ SOLUTION abcde f(1): -3245 f(0): -4532 selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS a‘c SOLUTION abcde f(1): -1-33 f(0): -4-22 selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS SOLUTION a‘bc abcde f(1): ..... f(0): .....
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS SOLUTION a‘bc abcde f(1): 20210 f(0): 35345 selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS b‘ SOLUTION a‘bc abcde f(1): 2-210 f(0): 3-345 selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS b‘e‘ SOLUTION a‘bc abcde f(1): 2-21- f(0): 3-34- selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS SOLUTION a‘bc + b‘e‘d‘ abcde f(1): ..... f(0): .....
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS SOLUTION a‘bc + b‘e‘d‘ abcde f(1): 00010 f(0): 11101 selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS b‘ SOLUTION a‘bc + b‘e‘d‘ abcde f(1): 0-010 f(0): 1-101 selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 TERM IN PROGRESS b‘e‘ SOLUTION a‘bc + b‘e‘d‘ abcde f(1): 0-01- f(0): 1-10- selected
CD-Search Example abcde y 1. 01010 0 2. 01100 1 3. 01110 1 4. 11100 0 5. 11011 0 6. 01000 0 7. 01111 1 8. 10110 0 9. 01011 0 10. 01101 1 11. 10000 1 12. 10101 0 13. 10100 1 14. 00010 1 15. 00000 1 16. 11010 0 17. 00110 0 18. 00100 1 19. 00011 0 20. 11110 0 SOLUTION a‘bc + b‘e‘d‘ + b‘e‘c‘
Implicant Expansion Methods • Sequential Search candidates for rejection from a term are selected one by one • Multiple Sequential Search more PIs are produced • Exhaustive Expansion all primes are generated • Distributed Exhaustive Expansion literal elimination distributed over several consecutive iterations
Multiple Sequential Search Example Term: 010010 Off - set: 000010 011110 011000 010011 110000
Multiple Sequential Search Example Term: 010010 010010 Off - set: 000010 011110 011000 010011 110000
Multiple Sequential Search Example Term: 010010 010010 -10010 - OK Off - set: 000010 011110 011000 010011 110000
Multiple Sequential Search Example Term: 010010 010010 -10010 - OK --0010 - COLLISION Off - set: 000010 011110 011000 010011 110000
Multiple Sequential Search Example Term: 010010 010010 -10010 - OK --0010 - COLLISION -1-010 - OK Off - set: 000010 011110 011000 010011 110000
Multiple Sequential Search Example Term: 010010 010010 -10010 - OK --0010 - COLLISION -1-010 - OK -1--10 - COLLISION Off - set: 000010 011110 011000 010011 110000
Multiple Sequential Search Example Term: 010010 010010 -10010 - OK --0010 - COLLISION -1-010 - OK -1--10 - COLLISION -1-0-0 - COLLISION Off - set: 000010 011110 011000 010011 110000
Multiple Sequential Search Example Term: 010010 010010 -10010 - OK --0010 - COLLISION -1-010 - OK -1--10 - COLLISION -1-0-0 - COLLISION -1-01- - COLLISION Off - set: 000010 011110 011000 010011 110000 PRIMES: -1-010
Multiple Sequential Search Example Term: 010010 010010 0-0010 - COLLISION 01-010 - OK 01--10 - COLLISION 01-0-0 - COLLISION 01-01- - COLLISION -1-010 - OK Off - set: 000010 011110 011000 010011 110000 PRIMES: -1-010 skip next position
Multiple Sequential Search Example Term: 010010 010010 010-10 - OK 010--0 - OK 010--- - COLLISION -10--0 - COLLISION 0-0--0 - COLLISION 01---0 - COLLISION Off - set: 000010 011110 011000 010011 110000 PRIMES: -1-010 010--0
Multiple Sequential Search Example Term: 010010 010010 0100-0 - OK 0100-- - COLLISION -100-0 - COLLISION 0-00-0 - COLLISION 01-0-0 - COLLISION 010--0 - OK Off - set: 000010 011110 011000 010011 110000 PRIMES: -1-010 010--0
Multiple Sequential Search Example Term: 010010 010010 01001- - COLLISION Off - set: 000010 011110 011000 010011 110000 SAME AS FIRST POSITION PRIMES: -1-010 010--0
Multiple Sequential Search Example BUT! Term: 010010 Off - set: 000010 011110 011000 010011 110000 010010 -10010 - OK -1-010 - IGNORED -10-10 - OK ! -10--0 - COLLISION -10-1- - COLLISION PRIMES: -1-010 010--0 -10-10 => EXHAUSTIVE EXPANSION
Implicant Expansion Strategies Evaluation Time growth for different IE methods
Implicant Expansion Strategies Evaluation Primes growth for different IE methods
Accelerating Iterative Minimization Already processed implicants are not considered in next iterations
TREE BUFFER • Main Features: • High look-up speed • Low memory demands • Simple operations
TREE BUFFER • Operations: • Insert term • Find term • Find & Insert • Find & Delete
TREE BUFFER Ternary tree Tree buffer node: 0 1 - Depth = number of input variables
Tree Buffer Example Inserting: a‘b‘c‘d (0001-)
Tree Buffer Example Inserting: a‘b‘c‘d (0001-) a
Tree Buffer Example Inserting: a‘b‘c‘d (0001-) a b
Tree Buffer Example Inserting: a‘b‘c‘d (0001-) a b c
Tree Buffer Example Inserting: a‘b‘c‘d (0001-) a b c d
Tree Buffer Example Inserting: a‘b‘c‘d (0001-) a b c d e 0001-