改訂版EDA用語辞典とは・著者一覧

 故障シミュレーションとは,LSIのテスト・パターンを評価するためのシミュレーションである。故障シミュレーションは論理シミュレーションがベースになっている。故障シミュレーションでは,評価対象のテスト・パターンを使って,故障の存在する回路(以下,故障回路)と故障の存在しない回路(以下,正常回路)の両方に対して論理シミュレーションを実施する。

 このとき,故障回路と正常回路からの出力パターンが異なれば,入力したテスト・パターンによって故障が検出されたことになるので,このテスト・パターンは有効と判定できる。一方,二つの回路からの出力パターンが同じならば,故障は検出されていないことになるので,このテスト・パターンは有効でないと判定される。

0/1縮退故障が対象

 現在使われている故障シミュレータでは,「単一0/1縮退故障」と呼ばれる故障モデルを扱うのが一般的である。「単一」とは,全回路中で故障が一度に一つしか発生しないことを意味する。「0/1縮退故障」とは,ある素子(論理ゲートやフリップフロップなど)の入力端子または出力端子が,論理値“1"あるいは論理値“0"に固定される故障である。

 故障シミュレータの入力は,ゲート・レベルの論理回路のネットリストと,テスト・パターン,故障リストである。故障リストとは,対象のテスト・パターンで検出したい故障のリスト(ネットリストのどのノードにどの故障を仮定したかを記述したもの)を指す。一方,故障シミュレータの出力は,故障検出率と未検出故障リストである。故障検出率(fault coverage)とは,故障リスト中の全故障のなかで,入力のテスト・パターンで検出できる故障の割合をいう。検出できなかった故障のリストが,未検出故障リストである。

 故障シミュレーションの主な用途は次の3つである。

(1)LSIの機能・論理設計者が論理シミュレーションに使ったテスト・パターンが,LSIテスト用のテスト・パターンとして流用できるかどうかを確かめる。

(2)ATPGで生成されたテスト・パターンによって対象の故障が検出できるかどうかを確認するとともに,同時に他の故障を検出できるかどうかを調べる。すなわち,ATPGの一部として使われる。

(3)故障診断などのために故障辞書を作成する。故障診断とは,LSI中で故障が発生している場所を特定することをいう。また,故障辞書とは,あるテスト・パターンで検出できるすべての故障を列挙したものである。

コンカレント手法が主流

 上で述べたように,故障シミュレーションは単一0/1縮退故障を対象にするため,ある回路に1000個の故障を仮定すると,故障回路は1000種類存在することになる。すなわち,これら1000個の故障回路に対してシミュレーションを実施し,正常回路のシミュレーション結果と比べないと,全故障が検出可能かどうかわからない。つまり,「全故障数+1回」の論理シミュレーションが必要になる。これが,もっとも基本的な故障シミュレーション方法である。

 しかし,この方法をそのまま実現したのでは,大規模な回路の故障シミュレーションには非常に長い処理時間が必要となり,非現実的である。そこで,さまざまな高速化の方法が考案されている。

 故障シミュレーションの高速化手法としては,並列故障シミュレーション,ディダクティブ故障シミュレーション,コンカレント故障シミュレーションなどがある。並列故障シミュレーションは計算機のワードを構成する各ビットにそれぞれ異なる故障回路を割り当てることにより,一度のワード演算で複数の故障回路を同時に処理しようという手法である。また,ディダクティブ故障シミュレーションは正常回路を1回シミュレーションし,その回路状態で検出される全故障を演繹的に求める手法である。ただし,この二つの手法は制限が多く,あまり使われていない。

 一方で,コンカレント故障シミュレーションは大規模複雑なLSIへの適用も可能で,最も成功した高速化手法といえる。現在の多くの市販故障シミュレータで採用されている手法である。

 コンカレント故障シミュレーションは,同じテスト・パターンを正常回路と故障回路に入力すると,その動作がほとんど同じであることに着目して高速化を実現している。すなわち,動作が異なるわずかな部分だけ,故障回路のシミュレーションを正常回路のシミュレーションと同時に行ない,その他の部分は正常回路のシミュレーションを実行する。この方法は,論理シミュレーションとほぼ同等の制約しかないため,高インピーダンス状態などの0,1以外の論理値や,遅延値も扱え,自由度が高いという特徴もある。

 上記のような故障シミュレーション手法の高速化以外に,複数のCPUを用いた分散処理をすることによって,処理時間を短縮する方法も一般的となってきている。

運用上の工夫が必要

 ただし,大規模な回路の故障シミュレーションは非常に長い時間が必要な処理という事実に変わりはない。処理時間を短縮するためには,目的に応じて運用上の工夫が必要である。たとえば,あるテスト・パターンの故障検出率を求めたいのならば,全故障を対象にする必要はない。いくつかの故障を抜き出し,それを対象に故障シミュレーション(故障サンプリング)すれば十分である。

 なお,DFT技術の適用による構造テストが一般化した現在では,故障シミュレーションの主用途はATPGの一部や(上述の(2)),故障診断(同(3))であるが,構造テスト補完のための機能パターンの有効性確認にも根強い需要がある。そのため,扱える故障モデルの拡張(例えば,遅延故障やブリッジ故障)などが継続的に行われている。