Automatic Test Pattern Generation for Digital Circuits, Study notes of Spanish Language

The problem of automatic test pattern generation (atpg) for digital circuits, including the d-algorithm, podem, and boolean satisfiability approaches for combinational circuits, and time-frame expansion, nine-valued test generation, and potential detection for sequential circuits. Potential problems and solutions for the d-algorithm are also discussed.

Typology: Study notes

Pre 2010

Uploaded on 08/30/2009

koofers-user-e3t
koofers-user-e3t 🇺🇸

9 documents

1 / 8

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
© K.T. Tim Cheng, 05_comb_tg, v1.0 1© K.T. Tim Cheng, 05_comb_tg, v1.0 2
Outline – Automatic Test Pattern
Generation
Test generation systems
Test generation for combinational ckts
–D-Algorithm
PODEM
Boolean Satisfiability approach
Test compaction
Test generation for sequential ckts
Time-frame expansion & Extended D-Algorithm
Nine-valued test generation
Potential detection
Issues of sequential ATPG
© K.T. Tim Cheng, 05_comb_tg, v1.0 3
The ATPG Problem
Problem definition: Given a logical fault model, and
a circuit, determine a small set of test vectors
that detect all faults in the circuit.
Problem complexity: Under the stuck-at fault
model, the problem is NP-complete even for
combinational circuits
However, commercial test generators that
efficiently generate tests for >10M-gate ckts
are in use today.
© K.T. Tim Cheng, 05_comb_tg, v1.0 4
Test Generation Systems
Circuit
Description
Test
Patterns
Undetected
Faults
Redundant
Faults
Aborted
Faults
Backtrack
Distribution
Fault
List
Compacter
ATPG
With fault
simulator
Ack: Bushnell and Agrawal, Essential of Electronic Testing, 2000
© K.T. Tim Cheng, 05_comb_tg, v1.0 5
Basics: Path Sensitization Method
Atomic operations:
1. Activation, fault excitation: Specify inputs so as to
generate the appropriate value at fault site for fault
excitation (I.e. set S to 1 for S-stuck-at-0 fault)
2. Error propagation: specify additional signal values to
propagate the fault effect from the fault site to the
outputs/observation points
3. Line justificatio n: Specify input values so as to produce
the signal values specified in (1) or (2)
4. Value implicatio n: unique determination of values at
other signals due to value assignments made in (1), (2), or (3)
© K.T. Tim Cheng, 05_comb_tg, v1.0 6
(1) Fault activation : A = B = C = 1
(2) Have a choice of error propagating: through G5 or G6
(a) Propagating through G5 requires G2= 1 A=D=0 contradiction
(b) Propagating through G6 requires G4= 1 C=1, E=0
Test ABCDE=(111x0)
G
1
G
5
G
2
G
6
G
3
A
C
B
D
E
a
f
2
f
1
A Simple Example
X
s.a.1
pf3
pf4
pf5
pf8

Partial preview of the text

Download Automatic Test Pattern Generation for Digital Circuits and more Study notes Spanish Language in PDF only on Docsity!

© K.T. Tim Cheng, 05_comb_tg, v1.0 1 © K.T. Tim Cheng, 05_comb_tg, v1.0 2

Outline – Automatic Test Pattern

Generation

  • Test generation systems
  • Test generation for combinational ckts
    • D-Algorithm
    • PODEM
    • Boolean Satisfiability approach
    • Test compaction
  • Test generation for sequential ckts
    • Time-frame expansion & Extended D-Algorithm
    • Nine-valued test generation
    • Potential detection
    • Issues of sequential ATPG

© K.T. Tim Cheng, 05_comb_tg, v1.0 3

The ATPG Problem

  • Problem definition: Given a logical fault model, and a circuit, determine a small set of test vectors that detect all faults in the circuit.
  • Problem complexity: Under the stuck-at fault model, the problem is NP-complete even for combinational circuits - However, commercial test generators that efficiently generate tests for >10M-gate ckts are in use today.

© K.T. Tim Cheng, 05_comb_tg, v1.0 4

Test Generation Systems

Circuit Description

Test Patterns

Undetected Faults

Redundant Faults

Aborted Faults

Backtrack Distribution

Fault Compacter List

ATPG

With fault simulator

Ack: Bushnell and Agrawal, Essential of Electronic Testing, 2000

Basics: Path Sensitization Method

Atomic operations:

  1. Activation, fault excitation: Specify inputs so as to generate the appropriate value at fault site for fault excitation (I.e. set S to 1 for S-stuck-at-0 fault)
  2. Error propagation: specify additional signal values to propagate the fault effect from the fault site to the outputs/observation points
  3. Line justification: Specify input values so as to produce the signal values specified in (1) or (2)
  4. Value implication: unique determination of values at other signals due to value assignments made in (1), (2), or (3)

(1) Fault activation : A = B = C = 1 (2) Have a choice of error propagating: through G 5 or G 6 (a) Propagating through G 5 requires G 2 = 1 ⇒ A=D=0 ⇒ contradiction (b) Propagating through G 6 requires G 4 = 1 ⇒ C=1, E= ⇒ Test ABCDE=(111x0)

G 1

G (^2) G 5

G 6

G 3

A CB

D

E

a f 2

f 1

A Simple Example

s.a.1^ X

© K.T. Tim Cheng, 05_comb_tg, v1.0 7

  • E s-a-1 ⇒ E =
  • C = D = 1 to propagate through G 1.
  • To propagate G 4 , need G 2 = G 3 = 1 Attempt to line justify G 2 = G 3 = 1
    • G 3 = 1possible if A = F = 1 or B = H = 1
      • If A = F = 1 ⇒ inconsistency since C = 1 so G 2 = 0. ⇒ Therefore, G 3 = 1 ⇒ B = H = 1
    • G 2 = 1 need A = 0 or F = 0 ⇒ Tests are ABCDEH, BCDEFH

G 1

G 2 G^4

G 3 A

C

B

DE

H F

Line Justification

© K.T. Tim Cheng, 05_comb_tg, v1.0 8

Completeness of ATPG Algorithms

  • A test generation algorithm is deemedcomplete iff it will find a test for a fault if exists or prove that there exists no test, given sufficient time. - Complete algorithms can identify untestable faults
  • Major complete algorithms for comb. ckts
    • D-algorithm (Roth, 1966)
    • PODEM (Goel, 1981)
    • FAN (Fujiwara, 1983)
    • Socrates (Schulz, 1988)
    • Boolean-SAT-based ATPG (Larrabee, 1992)

© K.T. Tim Cheng, 05_comb_tg, v1.0 9

Single Path Sensitization Is NOT

Complete

G 3

G 2

G 4 G 5

G (^1) f

C

E

A

B d s.a.0^ x^ d G^6

  • d s-a-0 : ⇒ A = B = 1
  • Propagate along G 3 , G 6 requires C =1, G 2 = G 4 = G 5 = 1.
    • In order for G 4 = 1 either E = 0 or G 1 = 0 ⇒ inconsistency ⇒ E = 0, B = 1 ⇒ G 5 = 0 ⇒ inconsistency
  • Propagate along G 4 , G^6 ⇒^ E = 1 & G^2 = G^3 = G^5 = 1
    • G 2 = 1 ⇒ C = 1, ABC = 111 ⇒ G 3 = 0 inconsistency ⇒ No test (^) © K.T. Tim Cheng, 05_comb_tg, v1.0 10

G 3

G 2

G 4

G 5

G 1

C

E

A B

(^1) d G 6 1

1

1

0

0

1

1

1/01/

0/

0/

s-a-0 1/

But Boolean Difference Method

Finds Test ABCD=(1111)!!

Multiple Path Sensitization

G 3

G 2

G 4

G 5

G 1

C

E

A B

(^1) d G 6 1

1

1

0

0

1

1

1/ 1/

0/

0/

s-a-0 1/

  • Two paths G 3 , G 2 and G 4 , G 6 are sensitized, i.e. error is

propagated alongboth paths.

The D-Algebra

  • Need to be able to deal with multiple “errors” at the inputs to a gate.
  • D represents a signal which has value 1 in normal (fault-free, good) ckt, and value 0 in faulty ckt. (I.e. D ≡ 1/0); Similarly, D ≡ 0/ D D D D D D

D D D D D D

D 0 D D 1 D

  • Behaves like a Boolean variable.

© K.T. Tim Cheng, 05_comb_tg, v1.0 19

Flowchart for D-algorithm

start Initialize test cube (tc) Select a primitive D-cube of that as C D-intersect C with previous test cube tc and perform implication

Is there a D or D on any PO?

Select a gate from D-frontier and a propagation D-cube of the selected gate as C

Backtrack to the last point a choice exists

Line Justification

inconsistent consistent yes impossible Test hasbeen none exists generated

no done

© K.T. Tim Cheng, 05_comb_tg, v1.0 20

Line Justification

Begin

Intersect C with previous test cube tc

Is there any line in tc which are not justified

Select an unjustified line and a primitive cube C to justify the line

Backtrack to the last point a choice exists

consistent inconsistent

yes

Test has generatedbeen

none exists

no

Line justification impossible

© K.T. Tim Cheng, 05_comb_tg, v1.0 21

D

1 2 3 4 5 6 7 8 9 10 11 12 11 1 1 1

1 1 0 1 1 1 D

0 1 0

X

D 0

0 0 0 D 1

1

primitive D-cube (1) Select D-frontier G 5 (3)

Line justification (7)Implication

1 1 D D D D

D 0 1 1 1

1 D D

1 D 1 1 D 1 1 1 0 D 1 D 1 1 D 1 1 1 1 1 1 D 1 1 D 1 1 1 00 D 01 D 1 1 D 1 1 1 00 D 01 D 1 1 D 1 0 1 1 1 0 D 1 D 1 D D 1 1 1 10 D 1 DD 1 1 0 0 1 1 1 10 D 01 D D 1 D

implication (2)

implication (4)

implication (10)

Select D-frontier G 8 (6)

Line justification (8)Implication

backtrack to (6)inconsistent & Select D-frontierG 6 (9)

implication (8)

Test is found : 1 1 1 1

implication (5) 1 D

G (^5) G 8

G 4

G 6

G 7

G 2

4

2 6

1 3

8

11

9 s-a-

12 10

G (^15)

G (^37)

A D-Algorithm

Example

© K.T. Tim Cheng, 05_comb_tg, v1.0 22

Potential Problems with D-Algorithm

  • Since the assignment of values is allowed to internal lines, more than one choice is available at such internal line/gate and backtracking could occur at each gate
  • Could result in inefficiency for large ckts and some special classes of ckts.
  • Example: An ECAT (error-correction-&-translation) ckt AB CE FG

s.a.0H J K N

L

Q

P (^) R

M

The PODEM Algorithm (Goel 1981)

  • Only allows assignment of values to primary inputs
  • The values assigned to primary inputs are then

propagated toward internal lines by theimplication.

AB CE

GF

H s.a.

J K N L Q

P

R

M

  • Example: ƒ First, a binary value is assigned to an unassigned PI to provide a fault effect at fault site: A = 1 ƒ Determine the implications of assigned PIs (only forward implication): A= 1 cause no implication ƒ Next, assign B = 1 ƒ A = B = 1 ⇒ imply H = D

Start

A = 1 B = 1

G = 1

G = 0

F = 0

E = 0

B = 0

Test has beenSuccessfully generated

A = 0

C = 1 E = 1

F = 1

AB CE FG

H s.a.

J K N L Q

P

R

M

PODEM Decision Tree for the Example

© K.T. Tim Cheng, 05_comb_tg, v1.0 25

PODEM

  • Essentially a process of finding a PI & a binary value for initial assignment.
  • Continue assigning PI values, checking to see if the error is being propagated to outputs (after each PI assignment, perform forward implication)
  • If at any stage, either the fault cannot be excited or the error cannot be propagated further,

backtrack to the most recent PI assignment and

change it.

© K.T. Tim Cheng, 05_comb_tg, v1.0 26

Flowchart of PODEM

Start Assign a binary valueto an unassigned PI

Determine implication of all PIs Is there a D or D on anyP0? Test possible with additionalassigned PIs? untried combinationIs there an of values on assignedPIs?

of values on assigned PIsSet untried combination

Test is found

No test exists

maybe

yes

no

no no

yes

© K.T. Tim Cheng, 05_comb_tg, v1.0 27

Steps in PODEM

(1) Determine aninitial objective. If the fault

effect has not appeared at fault site, the initial objective is directed toward providing the fault effect on the faulty line. (2) Given the initial objective, a PI & a logic value are chosen that have a good likelihood of meeting the object.

  • Done using thebacktrace procedure.

© K.T. Tim Cheng, 05_comb_tg, v1.0 28

Flowchart ofBacktrace

begin (^) Is objective line fed by a PI? Current objective value V and type of gate driving objective line? Next obj line isthe input of G which is at xand is the hardest to control

Next obj line isthe input of G which is at xand is the easiest to control Is G a NAND/NORgate?

Next obj value is the same asthe current objective value

Next obj value is the complementof the current objective value

Found PI initial assignmentis the current objective value

A

Exit

no (fed bygate G) OR/NAND & V=1AND/NOR & V=

yes

OR/NAND & V=0AND/NOR & V=

A

no yes

A PODEM Example

G (^5) G 8

G 4

G 6

G 7

G (^2) s-a-1 Z 1

G 1

G 3

X 2 X 3 X 4

X 1

  • Initial objective: (0, G 2 )
  • Backtrace to PI : X 2 = 1
  • Initial objective: (0, G 2 )
  • Backtrace: X 3 = 1
  • Implication: G 2 = D
  • D-frontier is { G 5 , G 6 }
  • Attempt to propagate through G 5
    • Require X 1 = 1
  • Implication: G 1 = 0, G 4 = 1, G 5 = D
  • Attempt to propagate D through G 8
    • Initial objective: ( 1, G 6 )
    • Backtrace to set X 4 = 0
    • Implication: G 3 = 1, G 7 = 0 & G 8 = 1 ⇒ failed in propagating error
    • Backtrack to most recent PI assignment ⇒ reassign X 4 = 1
    • Implication: G 3 = 0, G 6 = D, G 8 = D ⇒ Test is generated

Decision tree

A PODEM Example – Cont’d

X 2 = 1 X 3 = 1 X 1 = 1 X 4 = 0 test is found conflict &backtrack

X 4 = 1

G 8

G 5

G 4

G 6

G 7

G (^2) s-a-1 Z 1

G 1

G 3

X 2 X 3 X 4

X 1

© K.T. Tim Cheng, 05_comb_tg, v1.0 37

(c) Construct the formula of the Boolean Difference: XOR of (a) & (b) and the output of XOR should be 1

ƒ From (a): (X+D)x(X+E)x(X+D+E)x(D+A)x(D+B)x(D+A+B)x(C+E)x(C+E) ƒ From (b): (X’+D’)x(X’+E)x(X’+D’+E)xD’ ƒ From (c): (V 1 +X)x(V 1 +X’)x(V 1 +X+X’)x(V 2 +X)x(V 2 +X’)x(V 2 +X+X’)x(BD+V 1 )x(BD+V 2 )x (BD+V 1 +V 2 )xBD (note: BD=X⊕X’=(X+X’)x(X+X’)=V 1 xV 2 )

Step 1: Extracting the formula – Cont’d

X X’

BD=(X+X’)x(X+X’)=V 1 xV 2 =

© K.T. Tim Cheng, 05_comb_tg, v1.0 38

Step 2: Satisfying the Formula

- Boolean Satisfiability

  • Given a suitable representation for a Boolean functionf(X):
    • Find an assignmentX* such thatf(X*) = 1
    • Or prove that such an assignment does not exist (i.e.f(X) = 0 for all possible assignments)
  • In the “classical” SAT problem,f(X) is represented in product-of- sums (POS) or conjunctive normal form (CNF)
  • Many decision (yes/no) problems can be formulated either directly or indirectly in terms of Boolean Satisfiability

© K.T. Tim Cheng, 05_comb_tg, v1.0 39

Conjunctive Normal Form (CNF)

Clause

Positive Literal

Negative Literal

ϕ = ( a + c ) ( b + c ) (¬a + ¬b + ¬c )

  • Source: João Marques-Silva and Karem A. Sakallah, “Boolean Satisfiability in EDA”, CAV2000 tutorial. © K.T. Tim Cheng, 05_comb_tg, v1.0 40

Literal & Clause Classification

ϕ = (a + ¬b)(¬a + b + ¬c )(a + c + d )(¬a + ¬b + ¬c )

a assignedb assigned 0 c and d unassigned 1

violated satisfied unresolved satisfied

  • Source: João Marques-Silva and Karem A. Sakallah, “Boolean Satisfiability in EDA”, CAV2000 tutorial.

© K.T. Tim Cheng, 05_comb_tg, v1.0 41

Basic Backtracking Search

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c)^ a (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

b

c

d d

b

c

d d

c

(¬b + ¬c + ¬d) d

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

(¬b + ¬c + ¬d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

  • Source: João Marques-Silva and Karem A. Sakallah, “Boolean Satisfiability in EDA”, CAV2000 tutorial. © K.T. Tim Cheng, 05_comb_tg, v1.0 42
  • An unresolved clause isunit if it has exactly one unassigned literal

ϕ = (a +c)(b +c)(¬a + ¬b + ¬c)

  • A unit clause has exactly one option for being satisfied

a b → ¬c

i.e.c must be set to 0.

Unit Clause Rule - Implications

  • Source: João Marques-Silva and Karem A. Sakallah, “Boolean Satisfiability in EDA”, CAV2000 tutorial.

© K.T. Tim Cheng, 05_comb_tg, v1.0 43

Basic Search with Implications

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c)^ a (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

b

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

c

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) d

b c

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) 8 8

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) d

a c

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) 6 6

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) c

a b

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) 5

d

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) 6

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

b

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

c

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) d

a c

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

  • Source: João Marques-Silva and Karem A. Sakallah, “Boolean Satisfiability in EDA”, CAV2000 tutorial. © K.T. Tim Cheng, 05_comb_tg, v1.0 44

Public Released SAT Solvers by UCSB

  • C-SAT: Combinational Circuit-based SAT Solver
    • F. Lu, Li-C. Wang, K.-T Cheng, and R. Huang, “A Circuit SAT solver with Signal Correlation guided learning,” DATE, March 2003.
    • F. Lu, L.-C. Wang, K.-T. Cheng, J. Moondanos and Z. Hanna, "A Signal Correlation Guided ATPG Solver and Its Applications for Solving Difficult Industrial Cases," DAC, Jun. 2003.
  • Satori & Satori2: Sequential Circuit-based SAT Solver
    • M. K. Iyer, G. Parthasarathy, and K.-T Cheng, “SATORI—A Fast Sequential SAT solver for Circuits,” ICCAD, Nov. 2003.
    • F. Lu, G Parthasarathy, M. K. Iyer, L.-C. Wang, K.-T. Cheng, "A Efficient Sequential SAT Solver With Improved Search Stategies", UCSB Technical Report, Dec. 2003

© K.T. Tim Cheng, 05_comb_tg, v1.0 45

Test Compaction for Comb. Tests

  • Fault simulate test patterns in reverse order of generation - ATPG patterns go first - Randomly-generated patterns go last (because they may have less coverage) - When coverage reaches 100%, drop remaining patterns (which are the useless random ones) - Could significantly shortens test sequence – reducing test application time