第9章 テスト生成
9.1 ブール微分
変数xi に関する関数 F のブール微分
F(x
1, x
2, !!! , x
n)
dF
dx
i= F(x
1, !!! , x
i, !!! , x
n) ! F(x
1, !!! , x
i, !!! , x
n)
3
9.1 ブール微分
変数xi に関する関数 F のブール微分
dF
dx
i= F(x
1, !!! , x
i, !!! , x
n) ! F(x
1, !!! , x
i, !!! , x
n)
シャノンの展開定理より
F(x1, !!! , xi, !!! , xn) = xiFi(1) ! xiFi(0)
F(x
1,
!!!, x
i,
!!!, x
n) = x
iF
i(1) ! x
iF
i(0)
F
i(1) = F(x
1, !!! , x
i-1,1, x
i+1, !!! , x
n)
F
i(0) = F(x
1, !!! , x
i-1,0, x
i+1, !!! , x
n)
9.1 ブール微分
dF
dx
i= F(x
1, !!! , x
i, !!! , x
n) ! F(x
1, !!! , x
i, !!! , x
n)
= x
iF
i(1) ! x
iF
i(0) ! x
iF
i(1) ! x
iF
i(0)
= F
i(1) ! F
i(0)
5
9.1 ブール微分
F = (x
1+ x
2)(x
3+ x
4)
dF
dx
1= F
1(1) ! F
1(0)
= (x 3 + x 4 ) ! x 2 (x 3 + x 4 )
= x 2 (x 3 + x 4 )
テストベクトル
F
!(x
1, x
2, !!! , x
n) = F(x
1, !!! , x
i-1,0, x
i+1, !!! , x
n)
= F
i(0)
F(x
1, x
2, !!! , x
n)
組合せ回路の出力関数を
入力線 x
iが0に縮退する故障 α の故障関数 F αは
を満たす入力の組み合わせ
F(X) ! F
"(X) = 1
故障 α を検出するテスト入力は
!!"!#$!%!$!%!&&&%!$!'
( ) *7
テストベクトル
F(X) ! F
"(X) = x
iF
i(1) ! x
iF
i(0) ! F
i(0)
= x
iF
i(1) ! x
iF
i(0) ! (x
i! x
i)F
i(0)
= x
iF
i(1) ! F
i(0)
= x
idF
dx
i故障 xi /0 を検出するテストパターンの集合は
{X | x
idF
dx
i= 1}
同様に
故障 xi /1 を検出するテストパターンの集合は
{X | x
idF
dx
i= 1}
テストベクトル
故障 x
i /0 を検出するテストパターンの集合は
{X | x
idF
dx
i= 1}
= x
iF
i(1) ! F
i(0)
= x
idF
dx
i=1
x
1x
dF/dxi =1 誤りを外部出力まで伝搬
9
テストベクトル
x
1dF
dx
1= x
1x
2(x
3+ x
4)
= x
1x
2x
3+ x
1x
2x
4x 1 =x 2 =x 3 =1 x
1
=x
2=x
4=1
したがって、故障 x1/0 のテストパターンは
X s-a-0
テストベクトル
x
1dF
dx
1= x
1x
2(x
3+ x
4)
= x
1x
2x
3+ x
1x
2x
4x 1 =x 2 =x 3 =1 x
1
=x
2=x
4=1
したがって、故障 x1/0 のテストパターンは
X s-a-0 1
1
1
0/1
1/0
0/1
1/-
11
経路活性化
x
1dF
dx
1= x
1x
2(x
3+ x
4)
= x
1x
2x
3+ x
1x
2x
4x 1 =x 2 =x 3 =1 x
1=x
2=x
4=1
したがって、故障 x
1/0 のテストパターンは
X s-a-0 1
1
1
0/1
1/0
0/1
-
1/-
活性化された経路
多重経路活性化
x
1dF
dx
1= x
1x
2(x
3+ x
4)
= x
1x
2x
3+ x
1x
2x
4x 1 =x 2 =x 3 =1 x
1=x
2=x
4=1
したがって、故障 x
1/0 のテストパターンは
13
内部信号線のテスト
故障点hで誤りを発生するために h(X) = 1
h の値を出力まで伝搬するために
h/0 の故障のテストパターンの集合は F*(X, h) = F(X)
dF*(X, h) dh = 1 信号線 h の0縮退故障
{X | h(X) dF*(X, h)
dh = 1}
内部信号線のテスト
信号線 h の1縮退故障
F = (x
1+ x
2)(x
3+ x
4)
F*(X) = ( x
1+ x
2)x
4+ h
h(X) = x
1x
2+ x
3dF*(X, h)
dh = 1 ! (x1 + x2)x4
= x
1x
2+ x
4h dF*
dh = (x
1+ x
2)x
3x
4= x
1x
3x
4+ x
2x
3x
4x
1x
3x
4x
2x
3x
4h/1 の故障のテストパターンは または
F*(X, h)
15
演習問題1
図 9.26 の回路に対して、出力関数をfとするとき、つぎのブール微分を求 めよ。
(a) f を x1 , x2 , x3 , x4 で表現するとき、f の x1に関するブール微分 (b) f を h と x3 , x4 で表現するとき、f の h に関するブール微分
演習問題1( (a)解答)
(a) f を x1 , x2 , x3 , x4 で表現するとき、f の x1に関するブール微分
f = (x
1
x
2
) (x
3
x
4
) + (x
1
x
2
) (x
3
x
4
) = (x
1
x
2
) + (x
3
x
4
)
df/dx
1
= (x
3
x
4
) + x
2
+ (x
3
x
4
) = x
2
17
演習問題1( (b)解答)
(b) f を h と x
3 , x4 で表現するとき、f の h に関するブール微分
f = h (x
3
x
4
) + h (x
3
x
4
) = h + (x
3
x
4
) df/dh = (x
3
x
4
) + (1 +(x
3
x
4
)) = 1
演習問題2
図 9.26 の回路において、 h の 0縮退故障に対するテストパターンの集合を ブール微分で求めよ
19
演習問題2(解答)
図 9.26 の回路において、 h の 0縮退故障に対するテストパターンの集合を ブール微分で求めよ
df/dh = (x
3
x
4
) + (1 +(x
3
x
4
)) = 1 h(df/dh) = h = x
1
x
2
x
1
= 1, x
2
= 1
演習問題2(解答)
図 9.26 の回路において、 h の 0縮退故障に対するテストパターンの集合を ブール微分で求めよ
x
1
= 1, x
2
= 1
1 1/0
df/dh = (x
3
x
4
) + (1 +(x
3
x
4
)) = 1 h(df/dh) = h = x
1
x
2
21
演習問題2(解答)
図 9.26 の回路において、 h の 0縮退故障に対するテストパターンの集合を ブール微分で求めよ
x
1
= 1, x
2
= 1
1 1
1/0
0
1
1/0
1/0 0
0
x df/dh = (x
3
x
4
) + (1 +(x
3
x
4
)) = 1 h(df/dh) = h = x
1
x
2
演習問題2(解答)
図 9.26 の回路において、 h の 0縮退故障に対するテストパターンの集合を ブール微分で求めよ
x
1
= 1, x
2
= 1
1 1
1/0
1
0
0/1
0
0/1
0/1
1 1 df/dh = (x
3
x
4
) + (1 +(x
3
x
4
)) = 1 h(df/dh) = h = x
1
x
2
23
9.2 組合せ回路のテスト生成
与えられた故障が冗長であるか否かを判定し 冗長でない故障であれば
それを検出するテストパターンを常に求めることができる 完全なテスト生成アルゴリズムとして
1966年 IBM のJ.P. Roth により Dアルゴリズム(D-algorithm)が考案された
想定する縮退故障をテストするためのテストパターンを生成する
0縮退故障
D アルゴリズム
25
1 1
D
故障を活性化するために D=1/0
誤り = 正常/故障
D アルゴリズム
想定する縮退故障をテストするためのテストパターンを生成する
1 1
D
誤りを伝搬するために
0
D
D 1
D アルゴリズム
想定する縮退故障をテストするためのテストパターンを生成する
27
1 1
D
正当化するために
0
D
D 1
0
0 1
D アルゴリズム
想定する縮退故障をテストするためのテストパターンを生成する
1 1
D
テストパターン f s-a-0
D アルゴリズム
想定する縮退故障をテストするためのテストパターンを生成する
29
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
D アルゴリズム
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1 / 0
誤り発生
D アルゴリズム
31
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1 / 0
1
1
D アルゴリズム
テスト生成(Dアルゴリズム)
1
3
5
6
8
9
12 G2
G4
G5
G
1 / 0
1 1 / 0
1
1
1
誤り伝播
D アルゴリズム
33
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1 / 0
1
1 1 / 0
1 / 0
1
1
0
1
1
0 / 1
D アルゴリズム
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1 / 0
1
1 1 / 0
1 / 0
1
1
0
1
1
0 / 1
1
1
1 / 0
D アルゴリズム
35
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1 / 0
1
1 1 / 0
1 / 0
1
正当化
0
1
1
0 / 1
1
1
1 / 0
0
1
1
D アルゴリズム
テスト生成(Dアルゴリズム)
1
3
5
6
8
9
12 G2
G4
G5
G
1 / 0
1 1 / 0
1
1
0
1
1
0 / 1
1 / 0
含意
D アルゴリズム
37
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1 / 0
1
1 1 / 0
1 / 0
1
1
0
1
1
0 / 1
1
D アルゴリズム
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1 / 0
1
1 1 / 0
1 / 0
1
1
0
1
1
0 / 1
1
0 / 1
1
0
1
D アルゴリズム
39
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1 / 0
1
1 1 / 0
1 / 0
1
1
0
1
1
0 / 1
1
1
0 / 1
1
0
1
1 / 0
D アルゴリズム
テスト生成(Dアルゴリズム)
1
3
5
6
8
9
12 G2
G4
G5
G
1 / 0
1 1 / 0
1
1
0
1
1
0 / 1
1 / 0
D アルゴリズム
41
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
D アルゴリズム
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
誤り発生
D アルゴリズム
D
D=1/0 誤り = 正常/故障
43
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1
1
D アルゴリズム
D
テスト生成(Dアルゴリズム)
1
3
5
6
8
9
12 G2
G4
G5
G
1
1
1
1
誤り伝播
D アルゴリズム
D
D
45
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1
1
1
1
0
1
1
D アルゴリズム
D
D
D
D
D=0/1 誤り = 正常/故障
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1
1
1
1
0
1
1
1
1
D アルゴリズム
D
D
D
D
D
47
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1
1
1
正当化
0
1
1
1
1
0
1
1
D アルゴリズム
D
D
D
D
D
テスト生成(Dアルゴリズム)
1
3
5
6
8
9
12 G2
G4
G5
G
1
1
1
0
1
1
含意
D アルゴリズム
D
D
D
D
49
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1
1
1
1
0
1
1
1
D アルゴリズム
D
D
D
D
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1
1
1
1
0
1
1
1
1
0
1
D アルゴリズム
D
D
D
D
D
51
テスト生成(Dアルゴリズム)
1 2
3
4
5
6
7
8
9
10
11
12 G1 X
G2
G3
G4
G5
G6
G7
G8 0 縮退故障
1
1
1
1
0
1
1
1
1
1
0
1
D アルゴリズム
D
D
D
D
D
D
テスト生成(Dアルゴリズム)
1
3
5
6
8
9
12 G2
G4
G5
G
D
1
D1
1
0
1
1
DD
D アルゴリズム
D=0/1 誤り = 正常/故障 D=1/0
誤り = 正常/故障
53
演習問題3
図 9.26 の回路において、 h の 0縮退故障に対するテストパターンを Dアルゴリズムで求めよ
演習問題3(解答)
図 9.26 の回路において、 h の 0縮退故障に対するテストパターンを Dアルゴリズムで求めよ
D 1
1
D 1
0 D
0 0
x
55
演習問題3(解答)
図 9.26 の回路において、 h の 0縮退故障に対するテストパターンを Dアルゴリズムで求めよ
D 1
1
D 0
0
D 1
1
1
D
Present state at time q Initial state
is unknown
Next state at time q
fault fault fault
9.3 順序回路のテスト生成
57
9.3 順序回路のテスト生成
Stuck-at-1
Time expansion model (3 time frames)
9.3 順序回路のテスト生成
59
Time expansion model (3 time frames) D = 1 / 0 D = 0 / 1
D-drive Fault propagation
9.3 順序回路のテスト生成
D = 1 / 0 D = 0 / 1
State justification
9.3 順序回路のテスト生成
61
Time expansion model (4 time frames) D = 1 / 0 D = 0 / 1
D-drive Fault propagation
9.3 順序回路のテスト生成
Time expansion model (4 time frames) D = 1 / 0 D = 0 / 1
State justification
Initial state is (X,X)
9.3 順序回路のテスト生成
63
テスト生成アルゴリズムの歴史
Combinational ATPG
1966
D-algorithm (Roth, IBM)
1981
PODEM (Goel)
1983
FAN (Fujiwara)
1985
ISCAS-85 Benchmarks (Fujiwara & Brglez)
1988
SOCRATES (Schulz, et al.)
1990
Recursive Learning (Kunz,et al.)
1999
ITC-99 benchmarks
2001
SPIRIT (Gizdarski
& Fujiwara) 1993
NEMESIS (Larrabee)
1992
TRAN (Chakradhar, et al.)
2000
IGRAINE (Tafertshofer, et al.)
The first ATPG able to achieve 100% fault efficiency
for ISCAS’85
SAT-based ATPG
The first ATPG able to achieve 100% fault efficiency
for ITC’99
Combinational ATPG
1966
D-algorithm (Roth, IBM)
1981
PODEM (Goel)
1983
FAN (Fujiwara)
1985
ISCAS-85 Benchmarks
1988
SOCRATES (Schulz, et al.)
1990
Recursive Learning (Kunz,et al.)
1999 2001
SPIRIT (Gizdarski
& Fujiwara) 1993
NEMESIS (Larrabee)
1992
TRAN (Chakradhar, et al.)
2000
IGRAINE (Tafertshofer, et al.)
テスト生成アルゴリズムの歴史
65
9.4 故障シミュレーション
並列故障シミュレーション(parallel fault simulation)
演繹故障シミュレーション(deductive fault simulation)
同時故障シミュレーション(concurrent fault simulation)
演繹故障シミュレーション
L
A
= {a, e} L
B
= {b, c} L
C
= {a, b, c, d} L
D = {a, d, f}
LE = LA!LB " LC" LD
LE = LA!LB " LC" LD ! E/1
67
演繹故障シミュレーション
LA = {A/1} LB = {B/0} LC = { LD = {D/0}
LE = LA ! LB " {E/1} ={A/1, E/1}
LH =LF ! {H/0} ={C/0, D/0, F/0, H/0} LN =LF ! {N/0} ={C/0, D/0, G/0, N/0}
LJ =LE ! {J/1} ={A/1, E/1, J/1} LK =LE ! {K/1} ={Q/1, E/1, K/1}
LL =LH ! {L/1} ={C/0, D/0, F/0, H/0, L/1}
LM =LJ ! {M/0} ={A/1, E/1, J/1, M/0} LP = LK ! LL " {P/1} ={P/1} LQ = LM ! LN ! {Q/0}
={A/1, C/0, D/0, E/1, F/0, J/1, M/0, N/0, Q/0}
L
R= L
P! L
Q" {R/0}
={A/1, C/0, D/0, E/1, F/0, J/1, M/0, N/0, Q/0, R/0} LF =LC ! LD ! {F/0} ={C/0, D/0, F/0}同時故障シミュレーション
69
同時故障シミュレーション
同時故障シミュレーション
71
同時故障シミュレーション
同時故障シミュレーション
73
演習問題4
図 9.27 に示すように、4入力 NAND に対して、A=B=0, C=D=1 の 入力パターンが与えられているとする
故障リスト L
A , LB , LC , LD が出力 E にどのように伝搬するかを計算する 集合算を示せ
演習問題4(解答)
L
A
={A/1}, L
B
={B/1}, L
C
={C/0}, L
D
={D/0}
L
E
= (L
A
∩ L
B
∩ L
C
∩ L
D
)∪ {E/ 0}
まず、入力 A, B, C, D の故障リストはつぎのようになる。
つぎに、NANDゲートにおいて、E の故障リストは