(57)【要約】【課題】縮退故障の故障診断を行う際に、ホールドエラー要因を取除くことによって故障診断結果の信頼性を高める。【解決手段】１つの検査系列に対する故障シミュレーション処理において、キャプチャクロック入力直前の時刻Ｔ１において活性化されている経路を探索し（ステップ２３）、これらの経路のうち、キャプチャクロック入力直後の時刻Ｔ２において信号遷移が伝搬しているパスを探索し（ステップ２４）、この経路上の縮退故障を故障シミュレーションの対象から除去して故障シミュレーションを実行する（ステップ２５、２６）。これにより、ホールドエラー要因を取除いた故障シミュレーションを行うことができ、故障診断の正確性を向上させることができる。【選択図】　　　図１
2004037190.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の故障検査の結果を用いて故障箇所の特定を行う故障診断方法であって、
故障診断を行う対象となる縮退故障集合から故障時にホールドエラーと同じ検査結果となる縮退故障を除外する対象故障絞込み操作を行い、残った縮退故障集合に対して故障診断を行うことを特徴とする故障診断方法。
【請求項２】
半導体集積回路の故障検査の結果を用いて故障箇所の特定を行う故障診断方法であって、
故障診断を行う対象となる縮退故障集合から故障時にホールドエラーと同じ検査結果を持つ縮退故障を除外し、残った縮退故障集合に対して故障診断を行った後、ホールドエラー検査を行うことによってホールドエラー箇所を特定することを特徴とする故障診断方法。
【請求項３】
故障検査では、スキャン方式によって検査を行うことを特徴とする請求項１または２に記載の故障診断方法。
【請求項４】
対象故障絞込み操作では、キャプチャクロック入力前の時刻をＴ１とし、キャプチャクロック入力後の時刻をＴ２とした場合に、時刻Ｔ１において記憶素子間の経路が活性化されており、かつ時刻Ｔ２において前記経路上を信号遷移が伝搬するという条件を満たす経路の終点にあたる記憶素子において検出される縮退故障をすべて故障診断の対象から除外することを特徴とする請求項３に記載の故障診断方法。
【請求項５】
対象故障絞込み操作では、キャプチャクロック入力前の時刻をＴ１とし、キャプチャクロック入力後の時刻をＴ２とした場合に、時刻Ｔ１における故障シミュレーションで検出され、かつ時刻Ｔ２における故障シミュレーションでも検出されるという条件を満たす縮退故障をすべて故障診断の対象から除外することを特徴とする請求項３に記載の故障診断方法。
【請求項６】
ホールドエラー検査では、キャプチャクロック入力前の時刻をＴ１とし、キャプチャクロック入力後の時刻をＴ２とした場合に、時刻Ｔ１において記憶素子間の経路が活性化され、時刻Ｔ２において前記経路上に信号伝搬が発生する検査系列を用いて検査を行うことを特徴とする請求項２に記載の故障診断方法。
【請求項７】
スキャン記憶素子の出力および入力をそれぞれ擬似外部入力、擬似外部出力とした場合に、縮退故障を対象として検査系列を生成する際に、割当てる必要がある値がドントケアであるような外部入力または擬似外部入力に対して、前記擬似外部入力に対応する擬似外部出力の値の変化が最小になるように前記外部入力または前記擬似外部入力へ値を割当てることを特徴とする検査系列生成方法。
【請求項８】
擬似外部出力の信号変化数を重み付けし、この重みを使って前記外部入力または前記擬似外部入力へ値を割当てることを特徴とする請求項７に記載の検査系列生成方法。
【請求項９】
キャプチャクロック入力前の時刻をＴ１とし、キャプチャクロック入力後の時刻をＴ２とした場合に、対象故障が時刻Ｔ１と時刻Ｔ２の両方で検出されるように検査系列を生成することを特徴とする検査系列生成方法。
【請求項１０】
時刻Ｔ１の回路部と時刻Ｔ２の回路部を直列に結合した回路を用い、対象故障を前記時刻Ｔ１の回路部と前記時刻Ｔ２の回路部の両方へ定義し、定義した故障がすべて検出可能となる検査系列を生成することを特徴とする請求項９に記載の検査系列生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路の故障検査によって故障の存在が明らかになった場合に、故障箇所を特定するための故障診断技術に関するものである。
【０００２】
【従来の技術】
近年、半導体プロセスの微細化技術の急速な進歩によって、半導体集積回路の大規模化、複雑化が急激に進み、これに伴って半導体集積回路の検査が一層困難になっている。この問題に対処するため、半導体集積回路の検査を容易化する手段としてスキャン方式などによる検査容易化設計手法が普及し、縮退故障モデルで表される故障は効率的に検査できるようになった。さらに、歩留り改善などの観点から半導体集積回路の良否判定だけでなく、故障箇所を特定する故障診断技術も非常に重要となっている。
【０００３】
従来、縮退故障に対する故障診断を行う際には、テスタで検出された複数のフェール箇所に関する情報を基にして、故障辞書を用いるなどの方法によって故障箇所の絞込みを行っていた。故障診断技術に関する従来技術は特開平１１−８３９４５号公報などで述べられている。
【０００４】
【発明が解決しようとする課題】
ところで、半導体プロセスの微細化に伴うプロセスばらつきの増加などの理由により、製造された半導体集積回路のホールドエラー故障が増加する傾向にある。スキャン方式による縮退故障検査を行う場合、検査の結果として故障が検出されるケースとして、定義した縮退故障だけでなくホールドエラー故障も検出される場合がある。しかし、前記の従来技術では、検出された故障結果が縮退故障によるものか、ホールドエラーによるものかを区別することができないため、ホールドエラーによる故障結果も縮退故障と考えて故障診断を行ってしまい、誤った故障診断結果をもたらすという問題があった。
【０００５】
この問題について以下、図を用いて説明する。
【０００６】
図１０は、従来技術による故障診断方法を示すフローチャートである。１は検査対象である論理回路のデータ、２は論理回路を検査するための検査系列、３は故障シミュレーション操作、４は故障シミュレーションの結果得られた故障辞書、５はテスタを使って製造後の論理回路を検査して得られた検査結果、６は故障辞書４中の故障から検査結果５に適合する故障を検索する故障辞書検索操作、７は故障辞書検索６によって得られた被疑故障リストを示す。なお、論理回路をスキャン方式で検査する場合、検査系列２は、一般には縮退故障用のＡＴＰＧ（自動検査系列生成）を用いて生成される。
【０００７】
図１１（ａ）〜（ｄ）は、検査対象である論理回路を示す回路図である。Ａ、Ｂ、Ｃはそれぞれスキャンフリップフロップ、ａ、ｂ、ｃはそれぞれノードを示す。図１１（ａ）〜（ｄ）の論理回路はスキャン方式で設計されており、スキャンフリップフロップＡ〜Ｃはすべてスキャンチェーン上に接続されている。また、スキャンフリップフロップＡ〜Ｃの端子Ｄ、Ｑ、ＳＩ、ＳＯは、それぞれ通常データ入力、通常データ出力、スキャンデータ入力、スキャンデータ出力を示し、スキャンチェーン上のスキャンフリップフロップＡ〜Ｃをシフトレジスタとして動作させる際には、各スキャンフリップフロップＡ〜Ｃにおいて、端子ＳＩ→端子ＳＯへデータが転送され、スキャンフリップフロップＡ〜Ｃを通常動作させる際には、各スキャンフリップフロップＡ〜Ｃにおいて、端子Ｄ→端子Ｑへデータが転送される。また、図中、ｓａ０、ｓａ１はそれぞれ０縮退故障、１縮退故障を示す。
【０００８】
図１２は故障辞書４の一例を示し、時刻、検査点、故障ノード、縮退値は、それぞれテスタ上で検査した際に故障値が検出された時刻、検出されたスキャンフリップフロップ、その時に検出される故障箇所のノード、縮退故障値を示す。
【０００９】
最初に、図１１（ａ）の論理回路において、ノードａに１縮退故障が存在すると仮定して、従来技術において生じる問題点を説明する。以下、図１０のフローチャートに従い、図１１（ａ）の論理回路に対してスキャン方式を用いて検査を行った場合を取り上げて説明する。論理回路データ１は、図１１（ａ）の論理回路の回路データを使用する。一方、検査系列２は、（０，１）、（１，１）、（１，０）の３種類の検査系列で構成されているとする。ここで、（Ａ，Ｂ）は、スキャンフリップフロップＡ、Ｂへスキャンシフト動作によってそれぞれ与える値の組合せを示す（それぞれの検査系列２において検出される縮退故障を図１１（ｂ）、図１１（ｃ）、図１１（ｄ）に示す）。次に、故障シミュレーション３を実行することによって、図１２に示す通りの故障辞書４が得られたとする。テスタ上での検査結果５では、時刻ｔ１とｔ３のみにおいてスキャンフリップフロップＣで故障値が検出されたとする。図１２に示す故障辞書４と検査結果５から故障辞書検索操作６を行うと、図１２の網掛けの部分に共通に現れる故障がノードｃの１縮退故障という結果が得られ、ノードｃの１縮退故障のみから構成される被疑故障リスト７が得られる。
【００１０】
ここで、スキャンシフト動作に続く１クロックを使った通常動作を行うことによって、故障の結果をスキャンフリップフロップＣに取り込む際に、同時にスキャンフリップフロップＡ、Ｂは、端子Ｄから取り込んだ値を端子Ｑに転送する。スキャンテスト中の通常動作において用いる１クロックのことを、本明細書中では以後「キャプチャクロック」と呼ぶこととする。
【００１１】
このとき、スキャンフリップフロップＡ、Ｂの端子Ｑの値がキャプチャクロック入力前後で変化し、かつスキャンフリップフロップＡまたはＢからスキャンフリップフロップＣまでの経路でホールドエラー故障が存在する場合、スキャンフリップフロップＣはホールドエラーによる故障値を取ることがある。
【００１２】
図１１（ｂ）〜（ｄ）におけるスキャンフリップフロップＡ、Ｂの近傍に示した２つの数字「１１」「０１」等は、「（キャプチャクロック入力前の値）（キャプチャクロック入力後の値）」を意味する。例えば、図１１（ｄ）では、スキャンフリップフロップＢにおいて、キャプチャクロック入力前後で値が０→１と変化している。一方、スキャンフリップフロップＡでは、キャプチャクロック入力前後で値が１のままである。このとき、もしスキャンフリップフロップＢ→Ｃの経路でホールドエラーが生じていた場合、たとえ論理回路上に全く縮退故障がなくても、スキャンフリップフロップＣにおいて故障値が観測される。
【００１３】
今、図１１（ａ）においてノードａ上に１縮退故障が存在し、またスキャンフリップフロップＢ→Ｃの経路上にホールドエラーが存在していると仮定する。
【００１４】
従来の故障診断方法では、ホールドエラーを考慮していないため、キャプチャクロック入力前の１つの値のみを使って故障診断を実行している。例えば、図１１（ｄ）においては、フリップフロップＡ、Ｂの値をそれぞれ１、０の１つずつの値のみを使用している。したがって、図１１（ｄ）において、ノードｂ、ｃ上の１縮退故障と、スキャンフリップフロップＢ→Ｃの経路でホールドエラーが生じた結果とを区別することができないため、実際にはホールドエラーにより生じたエラー結果を、誤ってノードｂまたはｃ上の１縮退故障と認識してしまう。このため、図１０のフローチャートに従った処理を行い、その結果、故障箇所はノードｃ上の１縮退故障と判定されてしまい、実際の故障箇所であるノードａが被疑故障リストから漏れてしまうという問題があった。
【００１５】
本発明はこのような問題を解決するために、縮退故障診断の際にホールドエラーの要因を取り除くことによって、縮退故障診断の精度を向上させる故障診断方法を提供することを目的とする。さらには、従来の縮退故障診断方法では特定できなかったホールドエラー箇所の特定を行う故障診断方法を提供することを目的とする。
【００１６】
【課題を解決するための手段】
上記の目的を達成するため、本発明は、次のような解決手段を講じた。
【００１７】
すなわち、請求項１〜６に記載の発明は、故障診断方法に関するものであり、そのうち、請求項１に記載の発明は、半導体集積回路の故障検査の結果を用いて故障箇所の特定を行う故障診断方法において、故障診断を行う対象となる縮退故障集合から故障時にホールドエラーと同じ検査結果となる縮退故障を除外する対象故障絞込み操作を行い、残った縮退故障集合に対して故障診断を行うことを特徴とする。
【００１８】
請求項２に記載の発明は、半導体集積回路の故障検査の結果を用いて故障箇所の特定を行う故障診断方法において、故障診断を行う対象となる縮退故障集合から故障時にホールドエラーと同じ検査結果を持つ縮退故障を除外し、残った縮退故障集合に対して故障診断を行った後、ホールドエラー検査を行うことによってホールドエラー箇所を特定することを特徴とする。
【００１９】
請求項３に記載の発明は、請求項１または２に記載の発明において、故障検査では、スキャン方式によって検査を行うことを特徴とする。
【００２０】
請求項４に記載の発明は、請求項３に記載の発明において、対象故障絞込み操作では、キャプチャクロック入力前の時刻をＴ１とし、キャプチャクロック入力後の時刻をＴ２とした場合に、時刻Ｔ１において記憶素子間の経路が活性化されており、かつ時刻Ｔ２において前記経路上を信号遷移が伝搬するという条件を満たす経路の終点にあたる記憶素子において検出される縮退故障をすべて故障診断の対象から除外することを特徴とする。
【００２１】
請求項５に記載の発明は、請求項３に記載の発明において、対象故障絞込み操作では、キャプチャクロック入力前の時刻をＴ１とし、キャプチャクロック入力後の時刻をＴ２とした場合に、時刻Ｔ１における故障シミュレーションで検出され、かつ時刻Ｔ２における故障シミュレーションでも検出されるという条件を満たす縮退故障をすべて故障診断の対象から除外することを特徴とする。
【００２２】
請求項６に記載の発明は、請求項２に記載の発明において、ホールドエラー検査では、キャプチャクロック入力前の時刻をＴ１とし、キャプチャクロック入力後の時刻をＴ２とした場合に、時刻Ｔ１において記憶素子間の経路が活性化され、時刻Ｔ２において前記経路上に信号伝搬が発生する検査系列を用いて検査を行うことを特徴とする。
【００２３】
請求項７〜１０に記載の発明は、検査系列生成方法に関するものであり、そのうち、請求項７に記載の発明は、スキャン記憶素子の出力および入力をそれぞれ擬似外部入力、擬似外部出力とした場合に、縮退故障を対象として検査系列を生成する際に、割当てる必要がある値がドントケアであるような外部入力または擬似外部入力に対して、前記擬似外部入力に対応する擬似外部出力の値の変化が最小になるように前記外部入力または前記擬似外部入力へ値を割当てることを特徴とする。
【００２４】
請求項８に記載の発明は、請求項７に記載の発明において、擬似外部出力の信号変化数を重み付けし、この重みを使って前記外部入力または前記擬似外部入力へ値を割当てることを特徴とする。
【００２５】
請求項９に記載の発明は、キャプチャクロック入力前の時刻をＴ１とし、キャプチャクロック入力後の時刻をＴ２とした場合に、対象故障が時刻Ｔ１と時刻Ｔ２の両方で検出されるように検査系列を生成することを特徴とする。
【００２６】
請求項１０に記載の発明は、請求項９に記載の発明において、時刻Ｔ１の回路部と時刻Ｔ２の回路部を直列に結合した回路を用い、対象故障を前記時刻Ｔ１の回路部と前記時刻Ｔ２の回路部の両方へ定義し、定義した故障がすべて検出可能となる検査系列を生成することを特徴とする。
【００２７】
上記の構成により、請求項１〜６に記載の発明では、回路中にホールドエラーが存在する場合でも正しい故障診断結果が得られる。
【００２８】
請求項７〜１０に記載の発明では、ホールドエラーを発生しにくい検査系列が生成され、この検査系列を使用して故障診断を行うことで、回路中にホールドエラーが存在する場合でも、また従来の故障診断方法を用いた場合でも、より精度の高い故障診断結果が得られる。
【００２９】
【発明の実施の形態】
以下、この発明の実施の形態について図面に基づいて説明する。
【００３０】
本明細書中では、キャプチャクロックが入力される直前のクロックサイクルの時刻をＴ１、キャプチャクロックが入力された直後のクロックサイクルの時刻をＴ２と定義して説明を行う。
【００３１】
（第１の実施形態）
第１の実施形態では、従来例の故障診断方法で用いた図１０のフローチャートにおいて故障シミュレーション操作３を図１のフローチャートに置き替えるものとする。
【００３２】
図１中、２１は未処理の検査系列が存在するか否かの判定、２２は検査系列を１つ選択する操作、２３は時刻Ｔ１における活性化経路を探索する操作、２４は時刻Ｔ２において遷移が伝搬する経路を探索する操作、２５は前記遷移伝搬経路探索操作２４で探索された経路上の故障を除去する操作、２６は選択された検査系列を用いて故障シミュレーションを実行する操作を示す。この故障シミュレーション操作２６において、第１の実施形態では説明の便宜上、スキャン方式用の一般的な故障シミュレーションを用いるものとして説明する。
【００３３】
図２は故障辞書４の内容を示し、その内訳は図１２と同様である。
【００３４】
以下、図１、図２、図１０および図１１（ａ）〜（ｄ）を用いて、第１の実施形態を説明する。
【００３５】
最初に、図１１（ａ）の論理回路において、従来技術の説明と同様にノードａに１縮退故障が存在すると仮定する。以下、図１０のフローチャートに従い、図１１（ａ）の論理回路に対してスキャン方式を用いて検査を行った場合を取り上げて説明する。論理回路データ１は図１１（ａ）の論理回路を使用する。一方、検査系列２は、従来技術の説明と同様に（０，１）、（１，１）、（１，０）の３種類の検査系列で構成されているとする。ここで、（Ａ，Ｂ）は、スキャンフリップフロップＡ、Ｂへスキャンシフト動作によってそれぞれ与える値の組合せを示す。図１１（ｂ）〜（ｄ）は、それぞれ検査系列（０，１）、（１，１）、（１，０）が与えられたときのスキャンフリップフロップＡおよびＢの時刻Ｔ１、Ｔ２の値と、このとき検出できる縮退故障を表示している。スキャンフリップフロップＡおよびＢの近傍に示した２つの数字「１１」「０１」等は、「（時刻Ｔ１の値）（時刻Ｔ２の値）」を示す。
【００３６】
次に、故障シミュレーション操作３を実行するが、その要領を図１を参照しつつ説明する。まず、ステップ２１において未処理の検査系列が存在するかどうかを判定し、（０，１）、（１，１）、（１，０）の３つの検査系列が存在するので、次にステップ２２で検査系列（０，１）を選択する。続いて、ステップ２３では、時刻Ｔ１において活性化される経路を探索する。時刻Ｔ１におけるスキャンフリップフロップＡ、Ｂの値はそれぞれ０、１であり、ノードｂの値も１となるため、スキャンフリップフロップＡ→Ｃの経路が活性化されていることが探索される。引き続いて、ステップ２４では、ステップ２３で探索された活性化されている経路のうち、遷移が伝搬する経路を探索する。スキャンフリップフロップＡの時刻Ｔ１、Ｔ２の値は、それぞれ０、０であり信号変化がないため、活性化されている唯一の経路であるスキャンフリップフロップＡ→Ｃ上を遷移が伝搬することはできない。したがって、遷移が伝搬する経路はないことがわかる。次にステップ２５では、遷移が伝搬している経路上の故障を除去する操作を行うが、ステップ２４において遷移が伝搬している経路が存在しないため、ここでは故障の除去は行われない。最後にステップ２６では、検査系列（０，１）を用いた一般的な故障シミュレーションが実行され、ノードａ、ｃの１縮退故障がこの検査系列で検出されることが、故障辞書４の時刻ｔ１の箇所に書き込まれる（図２参照）。
【００３７】
次に、ステップ２１に戻って未処理の検査系列が存在するかどうかを判定し、（１，１）、（１，０）の２つの検査系列が存在するので、次にステップ２２で検査系列（１，１）を選択する。続いて、ステップ２３では、時刻Ｔ１におけるスキャンフリップフロップＡ、Ｂの値はそれぞれ１、１であり、ノードａ、ｂともに値が１となるため、スキャンフリップフロップＡ→ＣとスキャンフリップフロップＢ→Ｃの２つの経路が活性化されていることが探索される。引き続いて、ステップ２４では、スキャンフリップフロップＡ、Ｂともに時刻Ｔ１、Ｔ２の値は、それぞれ１、１であり信号変化がないため、活性化されている２つの経路であるスキャンフリップフロップＡ→Ｃ、スキャンフリップフロップＢ→Ｃはいずれも遷移が伝搬することはできない。したがって、遷移が伝搬する経路はないことがわかる。次に、ステップ２５では、ステップ２４において遷移が伝搬している経路が存在しないため、故障の除去は行われない。最後にステップ２６では、検査系列（１，１）を用いた一般的な故障シミュレーションが実行され、ノードａ、ｂ、ｃの０縮退故障がこの検査系列で検出されることが、故障辞書４の時刻ｔ２の箇所に書き込まれる（図２参照）。
【００３８】
次に、再度、ステップ２１に戻って未処理の検査系列が存在するかどうかを判定し、（１，０）の検査系列が存在するので、次にステップ２２で検査系列（１，０）を選択する。続いて、ステップ２３では、時刻Ｔ１におけるスキャンフリップフロップＡ、Ｂの値はそれぞれ１、０であり、ノードａの値が１となるため、スキャンフリップフロップＢ→Ｃの経路が活性化されていることが探索される。引き続いて、ステップ２４では、スキャンフリップフロップＢの時刻Ｔ１、Ｔ２の値が、それぞれ０、１であり信号変化が発生しているため、活性化されている経路であるスキャンフリップフロップＢ→Ｃ上を遷移が伝搬することがわかる。次に、ステップ２５では、遷移が伝搬している経路であるスキャンフリップフロップＢ→Ｃ上の故障を除去する。すなわち、ノードｂ、ｃの１縮退故障および０縮退故障を故障シミュレーションの対象から除去する。最後にステップ２６では、検査系列（１，０）を用いて、ノードｂ、ｃの１縮退故障および０縮退故障を除いた故障に対して故障シミュレーションが実行され、何も検出されないため、故障辞書４には何も書き込まれない。
【００３９】
以上の故障シミュレーション操作３によって故障辞書４が得られたとする。次に、テスタ上での検査結果５では、時刻ｔ１のみにおいてスキャンフリップフロップＣで故障値が検出されたとする。図２に示す故障辞書４と検査結果５から故障辞書検索操作６を行うと、ノードａ、ｃの１縮退故障という結果が得られ、ノードａ、ｃの１縮退故障から構成される被疑故障リスト７が得られる。
【００４０】
以上の操作により、実際の故障箇所であるノードａの１縮退故障を含んだ被疑故障リスト７を得ることができる。従来の手法では、スキャンフリップフロップＢ→Ｃの経路上のホールドエラーの存在によって、実際の故障箇所であるノードａの１縮退故障が被疑故障リスト７から漏れてしまうために誤った故障診断結果となるが、この第１の実施形態では、ホールドエラーが存在しても、実際の縮退故障箇所が被疑故障リスト７から漏れることがないため、正しい故障診断結果を得ることができる。したがって、縮退故障診断の精度を向上させることができる。
【００４１】
なお、ステップ２３における活性化された経路の探索、およびステップ２４における遷移が伝搬している経路の探索には、一般的な論理シミュレーションを用いてもよい。また、ステップ２６における故障シミュレーションをスキャン方式用の故障シミュレーションとして説明を行ったが、順序回路用の故障シミュレーションなどの他の方式の故障シミュレーションであってもよい。
【００４２】
（第２の実施形態）
第２の実施形態では、従来例の故障診断方法で用いた図１０のフローチャートにおいて故障シミュレーション操作３を図３のフローチャートに置き替えるものとする。
【００４３】
図３中、５３は時刻Ｔ１における故障シミュレーションを行う操作、５４は時刻Ｔ２において故障シミュレーションを行う操作、５５はステップ５３、５４において共通に検出された故障を集計する操作を示す。また、図３中、図２と一致する記号は図１と同じものを示す。さらに、ステップ５３、５４において、第２の実施形態では説明の便宜上、スキャン方式用の故障シミュレーションを用いるものとして説明する。
【００４４】
以下、図２、図３、図１０および図１１（ａ）〜（ｄ）を用いて、第２の実施形態を説明する。
【００４５】
最初に、図１１（ａ）の論理回路において、従来技術の説明と同様にノードａに１縮退故障が存在すると仮定する。以下、図１０のフローチャートに従い、図１１（ａ）の論理回路に対してスキャン方式を用いて検査を行った場合を取り上げて説明する。論理回路データ１は図１１（ａ）の論理回路を使用する。一方、検査系列２は、従来技術の説明と同様に（０，１）、（１，１）、（１，０）の３種類の検査系列で構成されているとする。ここで、（Ａ，Ｂ）は、スキャンフリップフロップＡ、Ｂへスキャンシフト動作によってそれぞれ与える値の組合せを示す。図１１（ｂ）〜（ｄ）は、それぞれ検査系列（０，１）、（１，１）、（１，０）が与えられたときのスキャンフリップフロップＡおよびＢの時刻Ｔ１、Ｔ２の値と、このとき検出できる縮退故障を表示している。スキャンフリップフロップＡおよびＢの近傍に示した２つの数字「１１」「０１」等は、「（時刻Ｔ１の値）（時刻Ｔ２の値）」を示す。
【００４６】
次に、故障シミュレーション操作３を実行するが、その要領を図３を参照しつつ説明する。まず、ステップ２１において未処理の検査系列が存在するかどうかを判定し、（０，１）、（１，１）、（１，０）の３つの検査系列が存在するので、次にステップ２２で検査系列（０，１）を選択する。続いて、ステップ５３では、時刻Ｔ１におけるスキャンフリップフロップＡ、Ｂの値（０、１）を用いて、故障シミュレーションを行う。このとき検出される故障は、ノードａ、ｃの１縮退故障である。引き続いて、ステップ５４では、時刻Ｔ２におけるスキャンフリップフロップＡ、Ｂの値（０、１）を用いて、故障シミュレーションを行う。このとき検出される故障は、ステップ５３と同様にノードａ、ｃの１縮退故障である。最後に、ステップ５５では、ステップ５３、５４で共通に検出された故障を集計すると、ノードａ、ｃの１縮退故障であるので、この２個の故障について、検査系列（０，１）で検出された故障として検出情報を故障辞書４の時刻ｔ１の箇所に書き込む。
【００４７】
次に、ステップ２１へ戻って未処理の検査系列が存在するかどうかを判定し、（１，１）、（１，０）の２つの検査系列が存在するので、次にステップ２２で検査系列（１，１）を選択する。続いて、ステップ５３では、時刻Ｔ１におけるスキャンフリップフロップＡ、Ｂの値（１、１）を用いて、故障シミュレーションを行う。このとき検出される故障は、ノードａ、ｂ、ｃの０縮退故障である。引き続いて、ステップ５４では、時刻Ｔ２におけるスキャンフリップフロップＡ、Ｂの値（１、１）を用いて、故障シミュレーションを行う。このとき検出される故障は、ステップ５３と同様にノードａ、ｂ、ｃの０縮退故障である。最後にステップ５５では、ステップ５３、５４で共通に検出された故障を集計すると、ノードａ、ｂ、ｃの０縮退故障であるので、この３個の故障について、検査系列（１，１）で検出された故障として、検出情報を故障辞書４の時刻ｔ２の箇所に書き込む。
【００４８】
次に、再びステップ２１へ戻って未処理の検査系列が存在するかどうかを判定し、（１，０）の検査系列が存在するので、次にステップ２２で検査系列（１，０）を選択する。続いて、ステップ５３では、時刻Ｔ１におけるスキャンフリップフロップＡ、Ｂの値（１、０）を用いて、故障シミュレーションを行う。このとき検出される故障は、ノードｂ、ｃの１縮退故障である。引き続いて、ステップ５４では、時刻Ｔ２におけるスキャンフリップフロップＡ、Ｂの値（１、０）を用いて、故障シミュレーションを行う。このとき検出される故障は、ノードａ、ｂ、ｃの０縮退故障である。最後に、ステップ５５では、ステップ５３、５４で共通に検出された故障は存在しないので、検査系列（１，０）で検出された故障は全くないものとして故障辞書４には何も書き込まない。
【００４９】
以上の故障シュミレーション操作３によって故障辞書４が得られたとする。次に、テスタ上での検査結果５では、時刻ｔ１のみにおいて、スキャンフリップフロップＣで故障値が検出されたとする。図２に示す故障辞書４と検査結果５から故障辞書検索６を行うと、ノードａ、ｃの１縮退故障という結果が得られ、ノードａ、ｃの１縮退故障から構成される被疑故障リスト７が得られる。
【００５０】
以上の操作により、実際の故障箇所であるノードａの１縮退故障を含んだ被疑故障リスト７を得ることができる。従来の手法ではスキャンフリップフロップＢ→Ｃの経路上のホールドエラーの存在によって、実際の故障箇所であるノードａの１縮退故障が被疑故障リスト７から漏れてしまうために誤った故障診断結果となるが、この第２の実施形態では、ホールドエラーが存在しても実際の縮退故障箇所が被疑故障リスト７から漏れることがないため、正しい故障診断結果を得ることができる。したがって、縮退故障診断の精度を向上させることができる。
【００５１】
なお、ステップ５３、５４における故障シミュレーションをスキャン方式用の故障シミュレーションとして説明を行ったが、順序回路用の故障シミュレーションなどの他の方式の故障シミュレーションであってもよい。
【００５２】
（第３の実施形態）
図４は本発明の第３の実施形態に係る検査系列生成方法を示すフローチャートである。図４中、ステップ６１は検査系列の対象となる縮退故障のうち未処理の故障が存在するか否かの判定、ステップ６２は未処理の対象故障から１つを選択する操作、ステップ６３は選択した対象故障を検出する検査系列を生成する操作、ステップ６４は検査系列生成に成功したか否かの判定、ステップ６５は値がドントケア（Ｘ）である入力に対して同じ入力における時刻Ｔ２の値をＸの代わりに割当てる操作、ステップ６６は選択した対象故障に対する検査系列を最終決定する操作を示す。なお、ステップ６３における検査系列生成方法は、この第３の実施形態では、スキャン方式を用いた一般的な検査系列生成方法を使うものとする。
【００５３】
図５（ａ）〜（ｅ）は検査対象である論理回路を示す回路図である。Ａ、Ｂはそれぞれスキャンフリップフロップ、ａ、ｂ、ｃ、ｄはそれぞれノードを示す。図５（ａ）〜（ｅ）の論理回路はスキャン方式で設計されており、スキャンフリップフロップＡ、Ｂはすべてスキャンチェーン上に接続されている。また、スキャンフリップフロップＡ、Ｂの端子Ｄ、Ｑ、ＳＩ、ＳＯは、それぞれ通常データ入力、通常データ出力、スキャンデータ入力、スキャンデータ出力を示し、スキャンチェーン上のスキャンフリップフロップＡ、Ｂをシフトレジスタとして動作させる際には、各スキャンフリップフロップＡ、Ｂにおいて、端子ＳＩ→端子ＳＯへデータが転送され、スキャンフリップフロップＡ、Ｂを通常動作させる際には、各スキャンフリップフロップＡ、Ｂにおいて、端子Ｄ→端子Ｑへデータが転送される。また、図中、ｓａ０、ｓａ１はそれぞれ０縮退故障、１縮退故障を示す。
【００５４】
以下、図４、図５（ａ）〜（ｅ）、図６および図７を用いて、第３の実施形態を説明する。
【００５５】
この第３の実施形態では、説明の簡略化のために検査系列の対象となる縮退故障をノードｃの０縮退故障のみとする。
【００５６】
まず、最初に、ステップ６１で未処理の故障があるかどうかを判定し、ノードｃの０縮退故障が未処理なので、次にステップ６２へ進み、ノードｃの０縮退故障を検査系列生成の対象として選択する。次に、ステップ６３では、選択した故障に対して検査系列操作を行い、スキャンフリップフロップＡ、Ｂに対する検査系列（０，Ｘ）が生成されたとする。図５（ｂ）にこのときの状態を示す。ここで、Ｘはドントケアを示し、Ｘの値が１と０のいずれであっても選択したノードｃの０縮退故障を検出することができる。次に、ステップ６４では、ステップ６３の検査系列生成操作に成功したのでステップ６５へ進む。ステップ６５では、Ｘの割当てが存在しなければ何も行わないが、今、スキャンフリップフロップＢに割当てられた値がＸであるので、スキャンフリップフロップＢの時刻Ｔ２における値をＸの代わりに割当てる。もし、時刻Ｔ２におけるスキャンフリップフロップＢの値がＸのままである場合には、割当てる値はＸのままとするが、ここでは、時刻Ｔ２におけるスキャンフリップフロップＢの値は、時刻Ｔ１におけるスキャンフリップフロップＢへの入力値（すなわちノードｃの値）であるため、スキャンフリップフロップＡに割当てられた値０から容易に計算され、その値は１となる。図５（ｃ）にこのときの状態を示す。したがって、ステップ６５では、スキャンフリップフロップＢに対してＸの代わりに１を割当てる。図５（ｄ）にこのときの状態を示す。最後に、ステップ６６において、変更された検査系列（０，１）を選択された対象故障に対する検査系列と決定する。
【００５７】
次に、ステップ６１へ戻り、未処理の対象故障が存在しないため操作をすべて終了する。
【００５８】
引き続いて、ステップ６１〜６６の操作で生成された検査系列（０，１）を用いて、図１０に示した従来の故障診断方法に適用した場合について説明する。今、図５（ａ）におけるノードｄに１縮退故障が存在すると仮定して説明を行う。
【００５９】
論理回路データ１は図５（ａ）の回路を使用し、検査系列２は検査系列（０，１）を使用する。まず、故障シミュレーション３を行うと、故障辞書４として図６に示す故障辞書が得られる。次に、検査結果５では、時刻ｔ１においてスキャンフリップフロップＡで故障が検出されたものとすると、この結果は図６の網掛け部分に相当するため、被疑故障リスト７としてノードｄの１縮退故障が得られ、正しい故障診断が行われる。
【００６０】
仮に、スキャンフリップフロップＢ→Ａの経路上にホールドエラーが存在する場合でも、このホールドエラーの影響を全く受けないため、故障診断の結果は変わらない。
【００６１】
一方、従来の検査系列生成方法では、検査系列中にＸの割当てがある場合、Ｘの代わりに０か１かいずれかの値をランダムに割当てていたため、同じノードｃの０縮退故障に対する検査系列が（０，０）となることがあった。図５（ｅ）にこのときの状態を示す。スキャンフリップフロップＢ→Ａの経路上にホールドエラーが存在すると仮定した場合に、この検査系列を用いて、同じく図１０に示した従来の故障診断方法に適用した場合について、同様に図５（ａ）におけるノードｄに１縮退故障が存在するとして説明すると、故障辞書４として図７に示す故障辞書が得られる。検査結果５では、スキャンフリップフロップＢ→Ａの経路上のホールドエラーのために、時刻ｔ１においてスキャンフリップフロップＡで故障が検出される。この結果は図７の網掛け部分に相当するため、被疑故障リスト７としてノードｄの０縮退故障という誤った結果が得られることになる。
【００６２】
なお、ステップ６６における時刻Ｔ２の各スキャンフリップフロップＢの値の計算には、一般的な論理シミュレーションを用いてもよい。また、この第３の実施形態では、本発明の検査系列生成方法自体の効果を示すために、生成された検査系列を用いた故障診断方法の適用例として図１０の従来の故障診断方法を使用したが、前述の第１の実施形態および第２の実施形態に示した故障診断方法を用いてもよいことは明らかである。
【００６３】
（第４の実施形態）
図８は本発明の第４の実施形態に係る検査系列生成方法を示すフローチャートである。ステップ１０１は回路を時刻Ｔ１、Ｔ２の２時刻へ展開する操作、ステップ１０２は検査系列の対象となる縮退故障のうち未処理の故障が存在するか否かの判定、ステップ１０３は未処理の対象故障から１つを選択する操作、ステップ１０４は選択した対象故障を、展開した回路上の時刻Ｔ１、Ｔ２に相当する箇所の両方へ設定し、設定した２箇所の故障を共に検出する検査系列を生成する操作、ステップ１０５は検査系列生成に成功したか否かの判定、ステップ１０６は選択した故障を展開した回路上の時刻Ｔ１に相当する箇所のみに設定して検査系列を生成する操作を示す。なお、ステップ１０６における検査系列生成方法は、この第４の実施形態では、スキャン方式を用いた一般的な検査系列生成方法を使うものとする。
【００６４】
図９（ａ）、図９（ｂ）は、図５（ａ）の論理回路を時刻Ｔ１、Ｔ２の２時刻に展開した回路図である。Ａ、Ｂ、Ａ’、Ｂ’はそれぞれスキャンフリップフロップ、ａ、ｂ、ｃ、ｄ、ａ’、ｂ’、ｃ’、ｄ’はそれぞれノードを示す。スキャンフリップフロップＡ’、Ｂ’は時刻Ｔ２における観測点としてのスキャンフリップフロップＡ、Ｂに相当し、ノードａ’、ｂ’、ｃ’、ｄ’はそれぞれノードａ、ｂ、ｃ、ｄに相当する時刻Ｔ２におけるノードである。図９（ａ）、図９（ｂ）の論理回路はスキャン方式で設計されており、スキャンフリップフロップＡ、Ｂはすべてスキャンチェーン上に接続されている。また、スキャンフリップフロップＡ、Ｂの端子Ｄ、Ｑ、ＳＩ、ＳＯは、それぞれ通常データ入力、通常データ出力、スキャンデータ入力、スキャンデータ出力を示し、スキャンチェーン上のスキャンフリップフロップＡ、Ｂをシフトレジスタとして動作させる際には、各スキャンフリップフロップＡ、Ｂにおいて、端子ＳＩ→端子ＳＯへデータが転送され、スキャンフリップフロップＡ、Ｂを通常動作させる際には、各スキャンフリップフロップＡ、Ｂにおいて端子Ｄ→端子Ｑへデータが転送される。また、図中、ｓａ０、ｓａ１はそれぞれ０縮退故障、１縮退故障を示す。
【００６５】
以下、図８、図５（ａ）、図９（ａ）および図９（ｂ）を用いて、第４の実施形態を説明する。
【００６６】
この第４の実施形態では、説明の簡略化のために検査系列の対象となる縮退故障をノードｃの０縮退故障のみとする。
【００６７】
まず、最初に、ステップ１０１で回路を時刻Ｔ１、Ｔ２の２時刻展開を行い、図５（ａ）の回路を図９（ａ）に変換する。次に、ステップ１０２で未処理の故障があるかどうかを判定し、ノードｃの０縮退故障が未処理なので、ステップ１０３へ進み、ノードｃの０縮退故障を検査系列生成の対象として選択する。次に、ステップ１０４では、ノードｃ、ｃ’の２箇所に対して０縮退故障を設定し、設定した故障の両方が検出可能となるように検査系列操作を行う。このとき、ノードｃ、ｃ’の２箇所の０縮退故障が両方検出されるための条件は、ノードａ、ａ’の値が共に０となり、ノードｂ、ｂ’の値が共にＸとなる。図９（ａ）にこのときの状態を示す。また図９（ａ）の状態からノードｂ、ｂ’の値を計算すると、ともに１に決定する。以上の操作によりスキャンフリップフロップＡ、Ｂに対する検査系列（０，１）が生成される。図９（ｂ）にこのときの状態を示す。次に、ステップ１０５では、もし、ステップ１０４の操作に失敗した場合は、ステップ１０６に進んでノードｃにのみ０縮退故障を設定して検査系列生成を行うが、ここでは、ステップ１０４の検査系列生成操作に成功したのでステップ６１へ戻り、未処理の対象故障が存在しないため操作をすべて終了する。
【００６８】
以上の操作で生成された検査系列（０，１）は第３の実施形態で生成された検査系列と同じであり、この検査系列を用いて、図１０に示した従来の故障診断方法に適用することによって、第３の実施形態と同様の効果を得ることができる。すなわち、仮にスキャンフリップフロップＢ→Ａの経路上にホールドエラーが存在する場合でも、このホールドエラーの影響を全く受けないため、正しい故障診断を行うことができる。
【００６９】
【発明の効果】
以上説明したように、請求項１〜６に係る故障診断方法によれば、回路中にホールドエラーが存在する場合でも、正しい故障診断結果を得ることができる。
【００７０】
請求項７〜１０に係る検査系列生成方法によれば、ホールドエラーを発生しにくい検査系列を生成することができ、この検査系列を使用して故障診断を行うことで、回路中にホールドエラーが存在する場合でも、また従来の故障診断方法を用いた場合でも、より精度の高い故障診断結果を得ることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る故障診断方法において故障シミュレーション操作を示すフローチャートである。
【図２】本発明の第１の実施形態に係る故障診断方法を説明するための故障辞書の内容である。
【図３】本発明の第２の実施形態に係る故障診断方法において故障シミュレーション操作を示すフローチャートである。
【図４】本発明の第３の実施形態に係る検査系列生成方法を示すフローチャートである。
【図５】本発明の第３の実施形態に係る検査系列生成方法で使用した論理回路を示す回路図である。
【図６】本発明の第３の実施形態に係る故障診断方法を説明するための故障辞書の内容である。
【図７】本発明の第３の実施形態に係る故障診断方法を説明するための故障辞書の内容である。
【図８】本発明の第４の実施形態に係る検査系列生成方法を示すフローチャートである。
【図９】本発明の第４の実施形態に係る検査系列生成方法で使用した論理回路を示す回路図である。
【図１０】従来例および各実施形態において故障診断方法を説明するためのフローチャートである。
【図１１】従来例および各実施形態において検査対象である論理回路を示す回路図である。
【図１２】従来例の故障診断方法を説明するための故障辞書の内容である。
【符号の説明】
３　　　　故障シミュレーション操作
２３　　　　時刻Ｔ１における活性化経路探索操作
２４　　　　時刻Ｔ２における遷移伝搬経路探索操作
２５　　　　遷移伝搬系路上の故障除去操作
５３　　　　時刻Ｔ１における故障シミュレーション操作
５４　　　　時刻Ｔ２における故障シミュレーション操作
５５　　　　共通に検出された故障の集計操作
６５　　　　Ｔ２の値と同じ値をＸに割当てる操作
１０１　　　　回路を２時刻へ展開する操作
１０４　　　　対象故障を２時刻へ設定し検査系列生成する操作
１０６　　　　対象故障をＴ１のみに設定して検査系列生成する操作
【図１】
2004037190.tif 000003
【図２】
2004037190.tif 000004
【図３】
2004037190.tif 000005
【図４】
2004037190.tif 000006
【図５】
2004037190.tif 000007
【図６】
2004037190.tif 000008
【図７】
2004037190.tif 000009
【図８】
2004037190.tif 000010
【図９】
2004037190.tif 000011
【図１０】
2004037190.tif 000012
【図１１】
2004037190.tif 000013
【図１２】
2004037190.tif 000014