故障モデルと故障の検出

トランジスタが故障したり、配線が切れたりショートしたりするとどのような現象が起こるのであろうか。

図1.3 2入力NAND回路のPAトランジスタが故障で常時オフになった場合の出力状態

2入力NAND回路のトランジスタPAが故障し、常時オフ(オンにならない)という故障が起こったとすると、A=0、B=1 入力の状態ではトランジスタはPBがオフ、NAがオフで、本来オンになるべきPAが故障でオフのままであるので、出力XはVdd側にもVss型にも接続されないフロート状態になる。

出力Xの電位は、つながっている配線などの寄生容量で電圧が保持されるので、以前の状態が"1"であればフロート状態の出力Xは"1"の状態を保ち、2入力NANDは正しく動作する。一方、以前の状態が"0"であると出力XはBの否定となり、正常な2入力NAND回路のA入力がVddとショートして"1"固定になったかのように動作する。

図1.4 2入力NAND回路のNAトランジスタが故障で常時オフになった場合の出力状態

一方、NAトランジスタがオンにならない場合は図1.4のようになり、A=1、B=1の状態で出力Xはフロート状態になってしまう。この場合はX=0となる入力の組み合わせが無いのでフロート状態でもX=1となり、正常な2入力NAND回路で入力A、あるいはB、あるいは両方が"0"である場合、または、出力XがVddとショートするなどで"1"に成りっぱなしという状態と同じとなる。

図1.3のケースでは、その振る舞いが以前の状態に依存するというように、実際のトランジスタの故障が論理回路の動作に及ぼす影響は複雑であるが、図1.4のように、入力や出力が"0"固定や"1"固定になったのと同じような動きをする場合もかなり多い。

このような故障をStuck-at-0故障、Stuck-at-1故障と呼び、テストパターンの生成にあたっては図1.5に示すように、それぞれのゲートの全ての入力と出力にStuck-at-0故障とStuck-at-1故障を作った論理回路の故障論理モデルを作る。

図1.5 赤色の3入力NANDゲートでは8種の異なる故障論理モデルが作られる

原理的には2入力NANDゲート100万個で出来ている論理回路の場合、それぞれのゲートに対して2入力+1出力のそれぞれに2つの故障状態があるので、ゲートあたり6種の故障モデルができ、論理回路全体では600万種の故障論理モデルが作られることになる。

図1.6 入力パターンによる故障検出の概念図

1つの故障を含む600万種の論理回路に同じ入力パターンを与えて、論理シミュレーションを行って論理回路全体の出力を求める。この出力が故障のないオリジナルの論理モデルの出力と異なっていれば、その故障はその入力パターンで検出できることになる。

最初の入力パターンで検出された故障は除外して、次の入力パターンを入れて故障を検出して、という風に入力パターンを作っていくので、シミュレーションが必要な故障論理モデルの数は生成が進むにつれて減少していく。このようにして、次々と入力パターンを生成して行き、全部の故障を検出できる入力パターン群が作られたら、想定した全ての故障が検出できることになる。

図1.6に示したのは原理を示す概念図で、何100万もの故障モデルをシミュレーションすると膨大な時間が掛ってしまう。そのため、実際には、その入力パターンで検出できる全てのStuck故障をより高速に見つける方法が使われている。このやり方では、まず、正常な回路を論理シミュレーションして各ゲートの入出力の状態を決定する。そして図1.7に示すように、Scan FFの入力に繋がっているネットから組み合わせ回路の入力に向かって、信号が伝わるかどうかを順に調べて行く。

経路にAND回路があり、他方の入力の状態が"1"の場合は信号は伝わるが、他方の入力が"0"の場合はANDの結果は0になり、信号は伝わらない。OR回路がある場合は、この逆で"0"の場合に信号が伝わる。そして、信号が伝わるネットでは、入力パターンに対する論理シミュレーションで求められた状態と反対の状態になるStuck故障は、その入力パターンで検出できることになる。

図1.7に示す例では赤線の経路では信号が伝わり、赤字で書かれた信号値が故障で反転すると、Scan FFの入力が反転する。そして、赤字のネットに対しては、それを駆動する前段のゲートを信号が通過するかどうかをさかのぼって調べていく。

一方、黒字の信号は他の信号でブロックされて、故障で状態が反転してもScan FFの入力には影響が現われない。これより前の段の故障はScan FFの入力に影響しないので、これ以上さかのぼっていく必要はない。

図1.7 赤線の経路で信号が伝搬し,赤字の状態が故障で反転するとScan FFの入力が変わり検出ができる

このようにすれば、比較的簡単に信号の伝わる全てのネットを見つけることができる。この入力パターンでは、それらの全てのネットの故障(無故障のシミュレーション結果と逆の状態にStuck-atになっている故障)をまとめて見つけることができるので、それぞれ1つの故障を想定した多数のモデルの論理シミュレーションを行うのに比べて、大幅に高速にStuck故障を検出する入力パターンを生成することができる。

最初は、適当なパターンを入れても多数のStuck故障が見つかるので、最初からしばらくはランダムな入力パターンを入れて、未検出のStuck故障が少なくなってくると、残った故障を狙って検出するパターンを発生するというやり方が用いられる。

このようにして作られた入力パターン群では、同じ故障が複数の入力パターンで検出できるという場合が多い。入力パターンの数はLSIテスタに必要なパターンメモリの量や、テスト時間に効くので、これらの重複を減らして入力パターンの数を減らすことが行われる。

ここで想定した故障はゲートの入出力のStuck故障であり、図1.3のように以前の状態に出力が依存するという故障が全て検出できるかどうかは保障されていない。このため、最近では、オープン故障やショート故障を想定した故障論理モデルを作り、それらの故障を検出する入力パターンを生成することも行われている。

また、この故障論理モデルの作り方は2つ以上の故障が同時に起こることはないという単一故障モデルの考え方で作られているので、複数の不良による故障が生じている場合には、検出できない可能性がある。