Title: CDSearch Example
1Implicant Expansion Methods Used in The BOOM
Minimizer
Petr Fier, Jan Hlavicka Czech Technical
University, Karlovo nám. 13, 121 35 Prague
2 e-mail hlavicka_at_fel.cvut.cz,
fiserp_at_fel.cvut.cz
2Outline
- 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
3Problem 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.
4BOOM 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
5Iterative Minimization
- The solution depends on random events
- CD-Search, IE and IR are repeated - more
implicants, then covering problem is solved
6CD - 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 H ?
t F F - F until (F ?) return H
7CD-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
8CD-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) .....
9CD-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....
10CD-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...
11CD-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..
12CD-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.
13CD-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
14CD-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
15CD-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 ac SOLUTION
abcde f(1) -1-33 f(0) -4-22
selected
16CD-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 abc
abcde f(1) ..... f(0) .....
17CD-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 abc
abcde f(1) 20210 f(0) 35345
selected
18CD-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 abc
abcde f(1) 2-210 f(0) 3-345
selected
19CD-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 be SOLUTION abc
abcde f(1) 2-21- f(0) 3-34-
selected
20CD-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 abc bed
abcde f(1) ..... f(0) .....
21CD-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 abc bed
abcde f(1) 00010 f(0) 11101
selected
22CD-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 abc bed
abcde f(1) 0-010 f(0) 1-101
selected
23CD-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 be SOLUTION abc bed
abcde f(1) 0-01- f(0) 1-10-
selected
24CD-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 abc bed bec
25Implicant 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
26Multiple Sequential Search Example
Term 010010
Off - set 000010 011110 011000 010011 110000
27Multiple Sequential Search Example
Term 010010
010010
Off - set 000010 011110 011000 010011 110000
28Multiple Sequential Search Example
Term 010010
010010 -10010 - OK
Off - set 000010 011110 011000 010011 110000
29Multiple Sequential Search Example
Term 010010
010010 -10010 - OK --0010 - COLLISION
Off - set 000010 011110 011000 010011 110000
30Multiple Sequential Search Example
Term 010010
010010 -10010 - OK --0010 - COLLISION -1-010 - OK
Off - set 000010 011110 011000 010011 110000
31Multiple Sequential Search Example
Term 010010
010010 -10010 - OK --0010 - COLLISION -1-010 -
OK -1--10 - COLLISION
Off - set 000010 011110 011000 010011 110000
32Multiple 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
33Multiple 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
34Multiple 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
35Multiple 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
36Multiple 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
37Multiple Sequential Search Example
Term 010010
010010 01001- - COLLISION
Off - set 000010 011110 011000 010011 110000
SAME AS FIRST POSITION
PRIMES -1-010 010--0
38Multiple 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
gt EXHAUSTIVE EXPANSION
39Implicant Expansion Strategies Evaluation
Time growth for different IE methods
40Implicant Expansion Strategies Evaluation
Primes growth for different IE methods
41Accelerating Iterative Minimization
Already processed implicants are not considered
in next iterations
42TREE BUFFER
- Main Features
- High look-up speed
- Low memory demands
- Simple operations
43TREE BUFFER
- Operations
- Insert term
- Find term
- Find Insert
- Find Delete
44TREE BUFFER
Ternary tree
Tree buffer node
0
1
-
Depth number of input variables
45Tree Buffer Example
Inserting abcd (0001-)
46Tree Buffer Example
Inserting abcd (0001-)
a
47Tree Buffer Example
Inserting abcd (0001-)
a
b
48Tree Buffer Example
Inserting abcd (0001-)
a
b
c
49Tree Buffer Example
Inserting abcd (0001-)
a
b
c
d
50Tree Buffer Example
Inserting abcd (0001-)
a
b
c
d
e
0001-
51Tree Buffer Example
a
b
c
d
e
00000
0001-
-0-10
-0-11
101-1
11--0
11111
52Tree Buffer Example
Searching abcd (1001-)
a
b
failure
c
d
e
00000
0001-
-0-10
-0-11
101-1
11--0
11111
53Tree Buffer vs. Linear Buffer
Input variables n Inserted terms i
Tree buffer Linear buffer max. size lt n i,
if i ltlt 3n n i min. size lt 3n-1, if i 3n n
i n 3n max. lookup time n n i min.
lookup time 1 i
54Experimental Results
Comparison with ESPRESSO Percentage of time
needed by BOOM
55Experimental Results
Time for one iteration on very large problems
56Time Complexity Evaluation
57Conclusions
- New Boolean minimization method was presented
- Applicable to problems of large dimensions
- Advantageous for problems with large DC set
- The results are comparable with ESPRESSO
- Run times are shorter
- For problems with more than 100 input variables
beats ESPRESSO both in time and minimality