(57)【要約】【課題】  故障候補の特定にかかる時間を削減し、故障解析の効率を向上させる故障候補特定システムおよび故障候補特定方法を実現する。【解決手段】  本発明の故障候補特定システムは、故障辞書１９から選択された入力パターンがノードに設定された木構造を有し、ノードのルートノードからの経路中に入力パターンが重複して存在しない故障候補検索ツリー１１と、注目している故障モードでのＤｅｔｅｃｔ故障数とＵｎｄｅｔｅｃｔ故障数の差の絶対値が最も小さい入力パターンを故障辞書１９から選択し、子ノードとして設定する検索ツリー生成手段１４と、フェイル情報が“Ｆａｉｌ”である場合には、Ｄノードを検索した後、Ｕノードを検索し、フェイル情報が“Ｐａｓｓ”である場合には、Ｄノードを検索せずにＵノードを検索して故障候補を抽出する故障候補検索手段１６を有する。【選択図】  図１
2005326161.tif 000002
【特許請求の範囲】
【請求項１】
故障シミュレーションにより作成される故障辞書とテスタ測定によって得られるフェイルログを照合し、半導体装置の故障原因となり得る故障モードを故障候補として抽出する故障候補特定システムであって、
前記故障辞書から選択された入力パターンがノードに設定された木構造を有し、前記ノードのルートノードからの経路中に前記入力パターンが重複して存在しない故障候補検索ツリーと、
前記ノードが子ノードを有する場合には、前記ノードの前記入力パターンでのＤｅｔｅｃｔ故障またはＵｎｄｅｔｅｃｔ故障に注目し、前記注目している故障モードでのＤｅｔｅｃｔ故障数とＵｎｄｅｔｅｃｔ故障数の差の絶対値が最も小さい入力パターンを前記故障辞書から選択し、前記ノードの前記子ノードとして設定する検索ツリー生成手段と、
前記フェイルログ中の“Ｐａｓｓ”または“Ｆａｉｌ”を示すフェイル情報に基づいて、前記フェイル情報が“Ｆａｉｌ”である場合には、前記Ｄｅｔｅｃｔ故障に注目して前記子ノードとして設定されたＤノードを検索した後、前記Ｕｎｄｅｔｅｃｔ故障に注目して前記子ノードとして設定されたＵノードを検索し、前記フェイル情報が“Ｐａｓｓ”である場合には、前記Ｄノードを検索せずに前記Ｕノードを検索して前記故障候補を抽出する故障候補検索手段を備えたことを特徴とする故障候補特定システム。
【請求項２】
前記故障候補検索ツリーに含まれる入力パターンを重複なく抽出し、前記テスタ測定の入力として合成するテストベクトル生成手段をさらに備えたことを特徴とする請求項１に記載の故障候補特定システム。
【請求項３】
故障シミュレーションにより作成される故障辞書とテスタ測定によって得られるフェイルログを照合し、半導体装置の故障原因となり得る故障モードを故障候補として抽出する故障候補特定方法であって、
前記故障辞書から選択された入力パターンが設定されているノードが子ノードを有する場合には、前記ノードの前記入力パターンでのＤｅｔｅｃｔ故障またはＵｎｄｅｔｅｃｔ故障に注目し、前記ノードの前記入力パターンを除いて、前記注目している故障モードでのＤｅｔｅｃｔ故障数とＵｎｄｅｔｅｃｔ故障数の差の絶対値が最も小さい入力パターンを前記故障辞書から選択して前記ノードの前記子ノードとして設定し、木構造を有する故障候補検索ツリーを構築する検索ツリー構築ステップと、
前記フェイルログ中の“Ｐａｓｓ”または“Ｆａｉｌ”を示すフェイル情報に基づいて、前記フェイル情報が“Ｆａｉｌ”である場合には、前記Ｄｅｔｅｃｔ故障に注目して前記子ノードとして設定されたＤノードを検索した後、前記Ｕｎｄｅｔｅｃｔ故障に注目して前記子ノードとして設定されたＵノードを検索し、前記フェイル情報が“Ｐａｓｓ”である場合には、前記Ｄノードを検索せずに前記Ｕノードを検索して前記故障候補を抽出する故障候補検索ステップを備えたことを特徴とする故障候補特定方法。
【請求項４】
前記故障候補検索ツリーは、
前記ノードの前記子ノードとして、１つの前記Ｄノードおよび／または１つの前記Ｕノードを有する２分木であることを特徴とする請求項３に記載の故障候補特定方法。
【請求項５】
前記故障候補検索ツリーに含まれる入力パターンを重複なく抽出し、前記テスタ測定の入力として合成するテストベクトル合成ステップをさらに備えたことを特徴とする請求項３に記載の故障候補特定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の故障解析における故障候補特定システムおよび故障候補特定方法に関する。
【背景技術】
【０００２】
半導体集積回路の故障解析においては、故障原因を解明する物理解析等を実施するために、テスタでの測定結果をもとに膨大な回路ノード、回路素子の中からその故障原因となりうる故障候補を探さなければならない。同一の故障サンプルで複数箇所、複数原因に対して物理解析を複数回実施することはきわめて困難であるため、物理解析に先だって可能な限り故障候補を絞り込んでおく必要がある。この故障候補特定作業は、故障シミュレーションにより作成された故障辞書と、それらに対応する測定結果を比較することにより行われる。
【０００３】
しかし、故障候補の特定には多大な手間と時間がかるうえ、従来の方法では故障候補の数を絞りきれずに故障原因の解明に失敗する場合も多かった。
【０００４】
特に、近年、半導体製造技術の微細化が進展し、１チップに搭載される回路の大規模化、複雑化が飛躍的に進んでいる。これに伴って故障解析においても、故障候補特定にさらに膨大な手間と時間を要し、故障原因解明がより困難になってきている。一方、配線の多層化、回路の複雑化につれて、物理解析はさらに難しくなっており、故障候補の絞り込みはますます重要になっている。
【０００５】
このような故障解析の困難さを解決する１つの手段として、故障シミュレーションにおける出力期待値と、テスタでの実際の測定結果をテストパターンの各時刻で比較しながら、故障原因を絞り込んでいく方法が特許文献１に記載されている。
【０００６】
しかしながら、この方法では、故障解析のために高価なテスタを占有する必要があるという問題があった。また、不良原因が複数存在する場合などには、テストパターンの各時刻での次のテストパターンの選択をバックトラックしながらテスタ測定を繰り返す必要があり、故障解析の時間、つまり、テスタ占有の時間が飛躍的に長くなるという問題もあった。さらに、故障シミュレーションでの出力期待値との比較で故障候補を絞り込んでいくため、Ｉｄｄｑ故障などへの応用が困難であるという問題もあった。
【特許文献１】特開２０００−１５５１５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、上記問題点を解決するためになされたもので、故障候補の特定にかかる時間を削減でき、故障解析の効率を向上させることができる故障候補特定システムおよび故障候補特定方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、故障シミュレーションにより作成される故障辞書とテスタ測定によって得られるフェイルログを照合し、半導体装置の故障原因となり得る故障モードを故障候補として抽出する故障候補特定システムであって、前記故障辞書から選択された入力パターンがノードに設定された木構造を有し、前記ノードのルートノードからの経路中に前記入力パターンが重複して存在しない故障候補検索ツリーと、前記ノードが子ノードを有する場合には、前記ノードの前記入力パターンでのＤｅｔｅｃｔ故障またはＵｎｄｅｔｅｃｔ故障に注目し、前記注目している故障モードでのＤｅｔｅｃｔ故障数とＵｎｄｅｔｅｃｔ故障数の差の絶対値が最も小さい入力パターンを前記故障辞書から選択し、前記ノードの前記子ノードとして設定する検索ツリー生成手段と、前記フェイルログ中の“Ｐａｓｓ”または“Ｆａｉｌ”を示すフェイル情報に基づいて、前記フェイル情報が“Ｆａｉｌ”である場合には、前記Ｄｅｔｅｃｔ故障に注目して前記子ノードとして設定されたＤノードを検索した後、前記Ｕｎｄｅｔｅｃｔ故障に注目して前記子ノードとして設定されたＵノードを検索し、前記フェイル情報が“Ｐａｓｓ”である場合には、前記Ｄノードを検索せずに前記Ｕノードを検索して前記故障候補を抽出する故障候補検索手段を備えたことを特徴とする故障候補特定システムが提供される。
【０００９】
本発明の別の一態様によれば、故障シミュレーションにより作成される故障辞書とテスタ測定によって得られるフェイルログを照合し、半導体装置の故障原因となり得る故障モードを故障候補として抽出する故障候補特定方法であって、前記故障辞書から選択された入力パターンが設定されているノードが子ノードを有する場合には、前記ノードの前記入力パターンでのＤｅｔｅｃｔ故障またはＵｎｄｅｔｅｃｔ故障に注目し、前記ノードの前記入力パターンを除いて、前記注目している故障モードでのＤｅｔｅｃｔ故障数とＵｎｄｅｔｅｃｔ故障数の差の絶対値が最も小さい入力パターンを前記故障辞書から選択して前記ノードの前記子ノードとして設定し、木構造を有する故障候補検索ツリーを構築する検索ツリー構築ステップと、前記フェイルログ中の“Ｐａｓｓ”または“Ｆａｉｌ”を示すフェイル情報に基づいて、前記フェイル情報が“Ｆａｉｌ”である場合には、前記Ｄｅｔｅｃｔ故障に注目して前記子ノードとして設定されたＤノードを検索した後、前記Ｕｎｄｅｔｅｃｔ故障に注目して前記子ノードとして設定されたＵノードを検索し、前記フェイル情報が“Ｐａｓｓ”である場合には、前記Ｄノードを検索せずに前記Ｕノードを検索して前記故障候補を抽出する故障候補検索ステップを備えたことを特徴とする故障候補特定方法が提供される。
【発明の効果】
【００１０】
本発明によれば、故障候補検索ツリーを構築することで故障辞書と測定結果の比較を効率よく行うことができるので、故障候補の特定にかかる時間を削減でき、故障解析の効率を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら、本発明の実施例を説明する。
【実施例】
【００１２】
図１は、本発明の実施例に係わる故障候補特定システムの構成を示すブロック図である。ここでは、主に、故障候補検索ツリー１１の構築とそれを用いた故障候補１２の絞り込みにかかわる部分を示した。
【００１３】
本発明の実施例に係わる故障候補特定システムは、故障辞書格納部１３、検索ツリー生成部１４、テストベクトル生成部１５、故障候補検索部１６、および表示部１７を備えている。
【００１４】
故障辞書格納部１３には、故障シミュレーション１８によって作成された故障辞書１９が記憶されている。故障辞書１９は、入力パターンに対して各故障モードを仮定した故障シミュレーション１８を行い、Ｄｅｔｅｃｔ故障（検出故障。以下、「Ｄ故障」という。）、Ｕｎｄｅｔｅｃｔ故障（未検出故障。以下、「Ｕ故障」という。）をリストアップしたテーブルである。
【００１５】
検索ツリー生成部１４は、故障辞書格納部１３に記憶された故障辞書１９を用いて、故障候補１２を特定するための故障候補検索ツリー１１を構築し、これをテストベクトル生成部１５および故障候補検索部１６へ出力する。
【００１６】
テストベクトル生成部１５は、検索ツリー生成部１４から受信した故障候補検索ツリー１１に基づいて、解析対象である半導体装置（以下、「解析対象」という。）をテスタ２０で測定するためのテストベクトルを生成し、これをテスタ２０へ出力する。
【００１７】
故障候補検索部１６は、テスタ２０による測定結果であるフェイルログ２１と、検索ツリー生成部１４からの故障候補検索ツリー１１を受信して、これらに基づいて、故障モードの絞り込みを行い、故障候補１２として表示部１７へ出力する。
【００１８】
表示部１７は、故障候補検索部１６から受信した故障候補１２を端末機器などに出力する。
【００１９】
図２は、本発明の実施例に係わる故障候補特定システムで使用される故障辞書１９を示すイメージ図である。
【００２０】
テストパターンは、解析対象への入力で、複数のアドレスから構成され、各アドレスは時間的な変化のない論理値の組み合わせである。
【００２１】
ここでは、一例として、５つのアドレス（以下、「アドレス１〜５」という。）からなる１つのテストパターン（以下、「テストパターン１」という。）を示した。
【００２２】
また、故障辞書１９は、１１個の故障モード（以下、「故障Ａ〜Ｋ」という。）に対するシミュレーション結果（Ｄ故障またはＵ故障。図のテーブル中では“Ｄ”または“Ｕ”と表示する。以下、これらを総称して「故障データ」という。）と、故障モード数で構成されている。
【００２３】
故障モードは、故障箇所と故障状態の組み合せであり、故障状態には、例えば、０固定故障や１固定故障などがある。
【００２４】
Ｄ故障は、その入力パターン（図２では、各アドレス。）で、その故障モードを検出可能なことを意味し、もし、その故障モードが実際に解析対象に存在すれば、この入力パターンによるテスタ測定での結果は“Ｆａｉｌ”になる。
【００２５】
逆に、Ｕ故障は、その入力パターン（図２では、各アドレス。）では、その故障モードを検出できないことを意味し、たとえその故障モードが実際に解析対象に存在しても、この入力パターンによるテスタ測定での結果は“Ｐａｓｓ”になる。
【００２６】
例えば、テストパターン１のアドレス１（以下、「アドレス１−１」のように表す。）では、故障Ａ〜ＤがＤ故障であり、故障Ｅ〜ＫがＵ故障である。
【００２７】
ここで、重要なことは、Ｕ故障がその故障モードの存在を否定するものではないことである。すなわち、ある入力パターンでＵ故障となる故障モードであっても、別の入力パターンでは、Ｄ故障になる可能性は残っている。
【００２８】
したがって、実際の故障シミュレーション１８では、対象となる故障モードに対して、可能な限り多くのアドレスの組合せを実行しておくことが望ましい。
【００２９】
故障モード数には、図２に示したように、そのアドレスでＤ故障となる故障モードの数とＵ故障となる故障モードの数が記録されている。
【００３０】
また、図２右下の矢印は、アドレス１−４が故障候補検索ツリー１１のルートノードとして選択されることを示している。
【００３１】
図３は、本発明の実施例に係わる故障候補特定システムの故障候補検索ツリー１１を示すイメージ図である。ここでは、一例として、図２で示した故障辞書１９に基づいて故障候補１２を特定するための故障候補検索ツリー１１を示した。
【００３２】
本発明の実施例に係わる故障候補特定システムの故障候補検索ツリー１１は、深さ“０”のルートノード、深さ“１”の２つの子ノード、深さ“２”の４つの孫ノード、および深さ“３”の３つの曾孫ノードを持つ２分木構造を有している。
【００３３】
各ノードは、Ｄ故障である故障モード（以下、「Ｄ候補」という。）とＵ故障である故障モード（以下、「Ｕ候補」という。）に基づいてそれぞれ選択される２つの子ノードを持つ。以下、Ｄ候補に基づいて選択される子ノードを「Ｄノード」、Ｕ候補に基づいて選択される子ノードを「Ｕノード」という。
【００３４】
ＤノードのＤ候補とＵ候補（以下、これらを総称して［注目候補］という。）を合わせたものは、親ノードのＤ候補と同じであり、Ｕノードの注目候補は親ノードのＵ候補と同じになっている。
【００３５】
また、故障候補検索ツリー１１は順序木でもあり、Ｄノードが「兄ノード」、Ｕノードが「弟ノード」である。図３では、Ｄノードを左側に、Ｕノードを右側に記してある。
【００３６】
各ノードの左上に示した“［］”で囲まれた数字はノード番号を表し、その横の“−”で結ばれた数字は、図２に示したアドレスを表している。
【００３７】
さらに、Ｄ候補またはＵ候補が１つであるノードは、対応する子ノードが存在しない。例えば、図３に示したように、ノード“［３］  １−１”は、Ｄ候補が故障ＣだけなのでＤノードを持っていない。
【００３８】
さらに、図３では該当するノードはないが、注目候補が複数あっても、必ずしもその子ノードが存在するとは限らない。
【００３９】
次に、上述した構成を持つ故障候補特定システムの故障候補特定方法について説明する。図４は、本発明の実施例に係わる故障候補特定システムの動作を示す全体フロー図である。ここでは、主に、故障候補特定方法にかかわる部分を示した。
【００４０】
本発明の実施例に係わる故障候補特定方法は、故障辞書作成ステップ４１、検索ツリー構築ステップ４２、テストベクトル合成ステップ４３、測定ステップ４４、故障候補検索ステップ４５、および表示ステップ４６から構成されている。
【００４１】
故障辞書作成ステップ４１では、まず、故障シミュレーション１８により、検出すべき故障モードに対して可能な限り多くのアドレスの組み合せがシミュレーションされる。そして、それぞれのアドレスについて各故障モードがＤ故障であるかＵ故障であるかが判定され、図２に示したような故障辞書１９が作成される。
【００４２】
Ｄ故障であるかＵ故障であるかの判定基準には、出力のいわゆる期待値比較ばかりでなく、解析対象の電流値変化（異常電流の検知）なども用いられる。
【００４３】
ここで作成された故障辞書１９は、故障辞書格納部１３に記憶される。
【００４４】
検索ツリー構築ステップ４２では、検索ツリー生成部１４が、故障辞書作成ステップ４１で作成された故障辞書１９を読み込み、後述するツリー構築方法に従って、図３に示したような２分木構造を持つ故障候補検索ツリー１１を構築する。
【００４５】
そして、構築された故障候補検索ツリー１１を内部データとしてテストベクトル生成部１５および故障候補検索部１６へ出力する。
【００４６】
テストベクトル合成ステップ４３では、テストベクトル生成部１５が、受信した故障候補検索ツリー１１に基づいて、テスタ２０で実際に測定するためのテストベクトル４７を合成しテスタ２０へ出力する。
【００４７】
実際に生成されるテストベクトル４７は、故障候補検索ツリー１１で使用されている全アドレスが重複なく時系列に並んだものである。例えば、図３の場合、アドレス１−１はツリーのノードとして３回出現しているが、テスタ２０での測定は１回だけでよい。
【００４８】
他のノードについても同様で、すなわち、図３の故障候補検索ツリー１１から合成されるテストベクトル４７は、アドレスの順序を除いて、図２のテストパターン１と同じものになる。
【００４９】
測定ステップ４４では、テストベクトル合成ステップ４３で合成されたテストベクトル４７を用いて、被検体である半導体装置がテスタ２０により測定され、測定結果がフェイルログ２１として出力される。
【００５０】
故障候補検索ステップ４５では、故障候補検索部１６が、フェイルログ２１と故障候補検索ツリー１１に基づいて、後述するツリー検索方法に従って故障モードの絞り込みを行う。
【００５１】
そして、ここで抽出された故障モードを故障候補１２として表示部１７へ出力する。
【００５２】
表示ステップ４６では、表示部１７が、受信した故障候補１２をそれらの経路情報とともに故障候補リスト４８として表示する。
【００５３】
経路情報は、その故障モードを特定するために故障候補検索ツリー１１上で検索されたルートノードからの経路を示しており、故障候補リスト４８には、ノード番号、アドレスおよびテスタ２０での測定結果（以下、個々のアドレスに対する測定結果を「フェイル情報」という。）がツリーの深さ順に表示される。
【００５４】
図５は、本発明の実施例に係わる故障候補特定システムにおける故障候補の経路情報を示すテーブルである。ここでは、一例として、図２の故障Ａ〜Ｋに対する図３の故障候補検索ツリー１１における経路情報を示した。
【００５５】
例えば、故障Ａは、アドレス１−４のフェイル情報が“Ｆａｉｌ”で、かつ、アドレス１−５のフェイル情報が“Ｐａｓｓ”で、かつ、アドレス１−１のフェイル情報が“Ｆａｉｌ”の場合に、故障候補１２として抽出され、表示される。
【００５６】
測定結果における“Ｐａｓｓ”または“Ｆａｉｌ”の判定基準は、故障辞書作成ステップ４１における故障シミュレーション１８でのＤ故障またはＵ故障の判定基準と同様である。
【００５７】
図５にはすべての故障モードについて経路情報が示されているが、故障候補リスト４８では、測定ステップ４４での測定結果（フェイルログ２１）に基づいて、故障Ａ〜Ｋの中から故障候補１２が絞り込まれ、表示される。
【００５８】
次に、上述した検索ツリー構築ステップ４２における故障候補検索ツリー１１の構築方法について説明する。図６は、本発明の実施例に係わる故障候補特定方法における故障候補検索ツリー１１の構築方法（以下、「ツリー構築方法」という。）を示すフロー図である。ここでは、ツリー構築方法を簡潔に表現するため、自己読み出しルーチンを用いた再帰的な動作フローを示した。
【００５９】
本発明の実施例に係わる故障候補特定方法におけるツリー構築方法は、図６（ａ）に示すように、初期化ステップ６１、ルートノード設定ステップ６２、および子ノード設定ステップ６３から構成される。
【００６０】
初期化ステップ６１では、検索ツリー生成部１４は、まず、故障辞書１９をルートテーブルにコピーする。ここで作成されたルートテーブルは、引数として子ノード設定ステップ６３に渡される。
【００６１】
次に、ルートノード設定ステップ６２で、検索ツリー生成部１４は、ルートテーブルの故障モード数に基づいて、ルートテーブルの中からルートノードとして設定するアドレスを１つ選択し、故障候補検索ツリー１１の根（深さ“０”）に設定する。このルートノードは、Ｄ故障数とＵ故障数の差の絶対値が最も小さいアドレスの中から任意に選択される。
【００６２】
例えば、図２の故障辞書１９の場合、Ｄ故障数が“６”、Ｕ故障数が“５”のアドレス１−４（図中の矢印）が選択され、図３の故障候補検索ツリー１１のルートノード（根）に設定される。
【００６３】
次に、子ノード設定ステップ６３で、検索ツリー生成部１４は、ルートノードの注目候補に基づいて、ＤノードおよびＵノードを選択し、深さ“１”の子ノードに設定する。子ノード設定ステップ６３は、再帰的なステップであり、そのフローの途中で自分自身を呼び出して、さらにその子ノードを設定する。このようにして、２分木構造の故障候補検索ツリー１１が構築される。
【００６４】
故障候補検索ツリー１１が完成すると、検索ツリー生成部１４はこれをテストベクトル生成部１５および故障候補検索部１６へ出力し、検索ツリー構築ステップ４２は終了する。
【００６５】
図６（ｂ）は、子ノード設定ステップ６３の詳細を示すフロー図である。子ノード設定ステップ６３は、再帰的に自分自身を呼び出すＤノード設定ステップ６４とＵノード設定ステップ６５、候補テーブルコピーステップ６６、Ｄテーブル更新ステップ６７、Ｄ候補判定ステップ６８、Ｕテーブル更新ステップ６９、およびＵ候補判定ステップ７０から構成されている。
【００６６】
まず、候補テーブルコピーステップ６６で、検索ツリー生成部１４は、引数として渡されたルートテーブルをコピーし、２つの候補テーブル、すなわち、Ｄ候補テーブルおよびＵ候補テーブルを作成する。Ｄ候補テーブルは、Ｄノード選択のために使用され、Ｕ候補テーブルは、Ｕノード選択のために使用される。
【００６７】
次に、Ｄテーブル更新ステップ６７で、検索ツリー生成部１４は、ルートノードのＤ候補に注目してＤ候補テーブルを更新する。例えば、図２の場合、アドレス１−４のＤ故障、つまり、故障Ａ、故障Ｃ、故障Ｅ、故障Ｇ、故障Ｉ、および故障ＫがルートノードのＤ候補である。
【００６８】
Ｄ候補テーブルの更新は、まず、候補テーブルコピーステップ６６で作成されたＤ候補テーブルからルートノードのデータを削除し、次に、ルートノードのＤ候補に対応する故障データだけを残すことによって実行される。
【００６９】
図７は、本発明の実施例に係わる故障候補特定方法における候補テーブルを示すイメージ図である。図７（ａ）は、図３の故障候補検索ツリー１１におけるルートノードの更新されたＤ候補テーブルを示している。同様に、図７（ｂ）はそのＵ候補テーブルを示している。
【００７０】
また、各テーブル左上の数字は、図３に対応して、ノード番号とアドレスを表している。
【００７１】
さらに、図７では、テーブル更新の様子を示すために、ルートテーブルから削除されたデータは“−”で表している。
【００７２】
例えば、図３のルートノードのＤ候補テーブルでは、図７（ａ）に示すように、アドレス１−４のすべてのデータと、Ｕ候補である故障Ｂ、故障Ｄ、故障Ｆ、故障Ｈ、および故障Ｊに対応する故障データが削除されている。
【００７３】
そして、Ｄ候補テーブルの故障モード数は、Ｄ候補に対応する故障データのＤ故障の数およびＵ故障の数に更新されている。すなわち、例えば、図７（ａ）におけるアドレス１−１の場合には、Ｄ故障の数＝“２”、Ｕ故障の数＝“４”である。
【００７４】
次に、Ｄ候補判定ステップ６８で、検索ツリー生成部１４は、Ｄテーブル更新ステップ６７で更新されたＤ候補テーブルに基づいて、Ｄノードの有無を判定する。Ｄノードの選択基準は、ルートテーブルでのルートノードの選択の場合と同様である。
【００７５】
すなわち、Ｄ故障の数またはＵ故障の数が“０”であるアドレスを除いて、両者の差の絶対値が最も小さいアドレスの中から１つが選択される。
【００７６】
ただし、Ｄ候補テーブルに残っているアドレスすべてについて、Ｄ故障の数またはＵ故障の数が“０”である場合には、Ｄノードは選択されない。
【００７７】
Ｄノードが存在すれば（“Ｙｅｓ”）、検索ツリー生成部１４は、Ｄ候補テーブルを引数として子ノード設定ステップ６３を呼び出すＤノード設定ステップ６４に移行し、Ｄノードが存在しなければ（“Ｎｏ”）、Ｄノード設定ステップ６４をスキップして、Ｕテーブル更新ステップ６９へ移行する。
【００７８】
例えば、図７（ａ）の場合には、Ｄ故障数とＵ故障数が等しいアドレス１−５が選択され、図３に示したように、深さ“１”のＤノード（ノード番号｛１｝）として設定される。
【００７９】
Ｄノード設定ステップ６４は、Ｄテーブル更新ステップ６７で更新されたＤ候補テーブルを引数として自分自身（子ノード設定ステップ６３）を呼び出す再帰的なステップであり、故障候補検索ツリー１１の各ノードにおいてその子ノードであるＤノードを設定する。
【００８０】
このような再帰的なフローを用いることで、ツリー構築の際のＤノードの設定と親ノードへのバックトラックを自然な形で実現することができる。
【００８１】
具体的には、例えば、図３のノード［０］の場合には、図７（ａ）に示したＤ候補テーブルを引数として子ノード設定ステップ６３を呼び出し、Ｄ候補判定ステップ６８で選択したアドレス１−５をＤノードとして設定する。
【００８２】
呼び出された子ノード設定ステップ６３の中で、後述するＵノード設定ステップ６５での再帰呼び出しとともに、さらに子ノード設定ステップ６３を再帰呼び出しすることで、ノード［１］以下の子孫ノード、すなわち、ノード［１］、［３］、［４］、［７］、および［８］を設定する。
【００８３】
Ｄノードの設定が終了すると、検索ツリー生成部１４は、Ｕテーブル更新ステップ６９で、ルートノードのＵ候補に注目してＵ候補テーブルを更新する。例えば、図２の場合、アドレス１−４のＵ故障、つまり、故障Ｂ、故障Ｄ、故障Ｆ、故障Ｈ、および故障ＪがルートノードのＵ候補である。
【００８４】
そして、Ｕ候補テーブルの更新は、前述したＤ候補テーブルの更新と同様に実行される。例えば、図３のルートノードにおけるＵ候補テーブルでは、図７（ｂ）に示すように、アドレス１−４のすべてのデータと、Ｄ候補である故障Ａ、故障Ｃ、故障Ｅ、故障Ｇ、故障Ｉ、および故障Ｋに対応する故障データが削除されている。
【００８５】
さらに、Ｕ候補テーブルの故障モード数は、Ｕ候補に対応する故障データのＤ故障の数およびＵ故障の数に更新されている。すなわち、例えば、図７（ｂ）におけるアドレス１−１の場合には、Ｄ故障の数＝“２”、Ｕ故障の数＝“３”である。
【００８６】
次に、Ｕ候補判定ステップ７０で、検索ツリー生成部１４は、Ｕテーブル更新ステップ６９で更新されたＵ候補テーブルに基づいて、Ｕノードの有無を判定する。Ｕノードの選択基準は、ルートテーブルでのルートノードの選択の場合と同様である。
【００８７】
すなわち、更新されたＵ候補テーブルで、Ｄ故障の数またはＵ故障の数が“０”であるアドレスを除いて、両者の差の絶対値が最も小さいアドレスの中から１つが選択される。
【００８８】
ただし、更新されたＵ候補テーブルに残っているアドレスすべてについて、Ｄ故障の数またはＵ故障の数が“０”である場合には、Ｕノードは選択されない。
【００８９】
Ｕノードが存在すれば（“Ｙｅｓ”）、検索ツリー生成部１４は、Ｕ候補テーブルを引数として子ノード設定ステップ６３を呼び出すＵノード設定ステップ６５に移行し、Ｕノードが存在しなければ（“Ｎｏ”）、Ｕノード設定ステップ６５をスキップして、子ノード設定ステップ６３を終了する。
【００９０】
例えば、図７（ｂ）の場合には、Ｄ故障数とＵ故障数の差の絶対値が“１”であるアドレス１−１が選択され、図３に示したように、深さ“１”のＵノード（ノード番号｛２｝）として設定される。
【００９１】
Ｕノード設定ステップ６５は、上述したＤノード設定ステップ６４と同様に、再帰的なステップであり、Ｕ候補テーブルを引数として子ノード設定ステップ６３を呼び出し、故障候補検索ツリー１１の各ノードにおいてその子ノードであるＵノードを設定する。
【００９２】
具体的には、例えば、図３のノード［０］の場合には、図７（ｂ）に示したＵ候補テーブルを引数として子ノード設定ステップ６３を呼び出し、Ｕ候補判定ステップ７０で選択したアドレス１−１をＵノードとして設定する。
【００９３】
Ｕノード設定ステップ６５では、Ｄノード設定ステップ６４と同様に、子ノード設定ステップ６３を再帰呼び出しすることで、ノード［２］以下の子孫ノード、すなわち、ノード［５］、［６］、および［９］が設定される。
【００９４】
表１は、上述したツリー構築フローに従って、図２の故障辞書１９から図３の故障候補検索ツリー１１を構築した例を構築されるノード順に示したものである。
【表１】
2005326161.tif 000003
【００９５】
図８および図９は、本発明の実施例に係わる故障候補特定方法における候補テーブルの一例を示すイメージ図である。
【００９６】
図８は、ツリーの深さ“１”での各ノードの候補テーブルであり、図９は、ツリーの深さ“２”での各ノードの候補テーブルである。いずれも、図７の候補テーブルと同様に、Ｄテーブル更新ステップ６７またはＵテーブル更新ステップ６９で更新され、Ｄ候補判定ステップ６８またはＵ候補判定ステップ７０で使用される。
【００９７】
ここで注意することは、同じアドレスについての候補テーブルであっても、ノード番号、つまり、ルートノードからの経路が異なると、注目候補が異なり、候補テーブルが異なっていることである。
【００９８】
例えば、図８（ｄ）と図９（ａ）は、ともにアドレス１−１についてのＵ候補テーブルであるが、ノード番号が異なるため、異なるＵ候補テーブルになっている。
【００９９】
なお、図９および表１には、子ノードが設定されない場合の候補テーブルは示していない。
【０１００】
次に、上述した故障候補検索ステップ４５における故障候補検索ツリー１１の検索方法について説明する。図１０は、本発明の実施例に係わる故障候補特定方法における故障候補検索ツリー１１の検索方法（以下、「ツリー検索方法」という。）を示すフロー図である。ここでは、図６と同様に、再帰的な動作フローを示した。
【０１０１】
本発明の実施例に係わる故障候補特定方法におけるツリー検索方法は、図１０（ａ）に示すように、フェイルログ読み込みステップ８１、ルートノード取得ステップ８２、子ノード検索ステップ８３、および故障候補出力ステップ８４から構成されている。
【０１０２】
まず、故障候補検索部１６は、フェイルログ読み込みステップ８１で、テスタ２０が出力したフェイルログ２１を読み込み、アドレスとそのフェイル情報からなるフェイルテーブルを作成する。
【０１０３】
次に、ルートノード取得ステップ８２で、故障候補検索部１６は、検索ツリー生成部１４が構築した故障候補検索ツリー１１からルートノードを取得する。ここで取得したルートノードは、子ノード検索ステップ８３の呼び出しの際に引数として渡される。
【０１０４】
次に、子ノード検索ステップ８３で、故障候補検索部１６は、フェイルログ読み込みステップ８１で作成したフェイルテーブルに基づいて、取得したルートノードを起点として故障候補検索ツリー１１を検索し、故障候補１２を絞り込んでいく。
【０１０５】
子ノード検索ステップ８３は、上述したツリー構築方法の子ノード設定ステップ６３と同様に、再帰的なステップである。また、子ノード検索ステップ８３が呼び出される際には、処理するノードが引数として渡される。
【０１０６】
子ノード検索が終了すると故障候補出力ステップ８４で、故障候補検索部１６は、子ノード検索ステップ８３で絞り込まれた故障候補１２をその経路情報とともに表示部１７へ出力し、故障候補検索ステップ４５を終了する。
【０１０７】
図１０（ｂ）は、子ノード検索ステップ８３の詳細を示すフロー図である。子ノード検索ステップ８３は、再帰的に子ノード検索ステップ８３を呼び出すＤノード検索ステップ８５とＵノード検索ステップ８６、フェイル情報取得ステップ８７、経路情報記憶ステップ８８、Ｐ／Ｓ判定ステップ８９、Ｄノード判定ステップ９０、Ｄ候補記憶ステップ９１、Ｕノード判定ステップ９２、Ｕ候補記憶ステップ９３、および経路情報除去ステップ９４から構成されている。
【０１０８】
まず、フェイル情報取得ステップ８７で、故障候補検索部１６は、フェイルログ読み込みステップ８１で作成したフェイルテーブルから引数として渡されたノードのフェイル情報を取得する。
【０１０９】
次に、経路情報記憶ステップ８８で、故障候補検索部１６は、ノード番号、アドレス、および取得したフェイル情報をスタックに積んで一時記憶する。
【０１１０】
そして、Ｐ／Ｓ判定ステップ８９で、故障候補検索部１６は、そのノードのフェイル情報が“Ｐａｓｓ”であるか“Ｆａｉｌ”であるかを判定する。もし、“Ｆａｉｌ”であれば、そのノードのＤ候補の中に故障候補１２が存在することを意味しているので、故障候補検索部１６は、Ｄノード判定ステップ９０へ移行する。
【０１１１】
また、もし、フェイル情報が“Ｐａｓｓ”であれば、そのノードのＤ候補の中には故障候補１２が存在しないことを意味するので、故障候補検索部１６は、Ｄノードの検索は行わずにＵノード判定ステップ９２へ移行する。
【０１１２】
ここで重要なことは、“Ｆａｉｌ”が必ずしもＵ候補の中に故障候補１２が存在しないことを意味してはいない、ということである。したがって、“Ｆａｉｌ”の場合には、Ｄノードの検索が終了した後、さらに、Ｕノードの検索を行う必要がある。
【０１１３】
Ｄノード判定ステップ９０では、故障候補検索部１６は、そのノードにＤノードが存在するかを判定する。もし、Ｄノードが存在すれば（“Ｙｅｓ”）、そのＤノードを引数として子ノード検索ステップ８３を再帰的に呼び出すＤノード検索ステップ８５へ移行する。
【０１１４】
Ｄノードが存在しない場合（“Ｎｏ”）には、そのＤ候補を故障候補１２として記憶するために、故障候補検索部１６はＤ候補記憶ステップ９１へ移行する。
【０１１５】
Ｄ候補記憶ステップ９１では、故障候補検索部１６は、故障候補出力ステップ８４で故障候補１２として表示部１７へ出力するために、そのノードのＤ候補をスタックに積まれている経路情報とともに一時記憶する。
【０１１６】
Ｄノード検索ステップ８５またはＤ候補記憶ステップ９１が終了すると、故障候補検索部１６は、Ｕノードの検索を行うために、Ｕノード判定ステップ９２へ移行する。
【０１１７】
Ｕノード判定ステップ９２では、故障候補検索部１６は、そのノードにＵノードが存在するかを判定する。もし、Ｕノードが存在すれば（“Ｙｅｓ”）、そのＵノードを引数として子ノード検索ステップ８３を再帰的に呼び出すＵノード検索ステップ８６へ移行する。
【０１１８】
Ｕノードが存在しない場合（“Ｎｏ”）には、そのＵ候補を故障候補１２として記憶するために、故障候補検索部１６はＵ候補記憶ステップ９３へ移行する。
【０１１９】
ここで、上述したように、“Ｆａｉｌ”が必ずしもＵ候補の中に故障候補１２が存在しないことを意味してはいないので、子ノードを持たないノード（例えば、図３のノード番号［５］。）でフェイル情報が“Ｆａｉｌ”の場合でも、そのＵ候補も故障候補１２になりうる。
【０１２０】
ただし、先祖ノードがすべてＵノードの場合（例えば、図３のノード番号［９］におけるＵ候補。）には、そのＵ候補が故障原因であるとは必ずしもいえないので、注意する必要がある。
【０１２１】
Ｕ候補記憶ステップ９３で、故障候補検索部１６は、故障候補出力ステップ８４で故障候補１２として表示部１７へ出力するために、そのノードのＵ候補をスタックに積まれている経路情報とともに一時記憶する。
【０１２２】
Ｕノード検索ステップ８６またはＵ候補記憶ステップ９３が終了すると、経路情報除去ステップ９４で、故障候補検索部１６は、スタックに積まれている現在のノードの経路情報をスタックから取り除き、この子ノード検索ステップ８３を終了する。
【０１２３】
以上説明したように、故障辞書１９に基づき故障候補検索ツリー１１を構築し、テスタ２０の測定結果であるフェイルログ２１を用いてこのツリーを検索することで、各アドレスに対する１回のテスタ測定で効率よく故障候補１２を絞り込むことができる。
【０１２４】
このため、上述した実施例によれば、故障候補絞り込みで高価なテスタ２０を占有する必要がなく、効率よく故障解析を実行することができる。
【０１２５】
また、上記実施例によれば、故障候補検索ツリー１１の各ノードにおける子ノードをＤ故障数とＵ故障数の差の絶対値が小さいアドレスから選択することにより、特定対象となる故障辞書１９に対して故障候補検索ツリー１１の深さを最小にすることができるので、絞り込みに要する検索時間、ひいては故障解析に要する時間を大幅に短縮することができる。
【０１２６】
さらに、上記実施例によれば、故障シミュレーション１８およびテスタ測定で“Ｐａｓｓ”または“Ｆａｉｌ”が判定できる故障であれば同様に絞り込みを実行でき、従来より広い故障モードに柔軟に適用できる。これにより、故障解析の効率を飛躍的に向上させることができる。
【０１２７】
上述の実施例では、故障候補検索ツリー１１は、検索効率を考慮して２分木であるとしたが、本発明はこれに限られるものではない。例えば、注目候補に対応するＤ故障数またはＵ故障数が“０”でないアドレスの全部または一部を子ノードとして設定しても良い。
【０１２８】
このような故障候補検索ツリー１１は、１つの故障モードに対してツリー上で複数の経路が存在するため、ツリーの構築、検索にかかる時間は増加するが、経路中のアドレスの順序、つまり、入力パターンの履歴に依存する故障も絞り込みの対象とすることができる。
【０１２９】
また、上記実施例では、アドレス単位で故障候補検索ツリー１１を構築し、検索するとしたが、本発明はこれに限られるものではない。例えば、テストパターン単位で故障候補検索ツリー１１を構築し、テスタ２０での測定結果に基づいてテストパターンごとに検索することで、機能単位の故障箇所を大局的に特定することもできる。この場合も、実施例と同様に、１つのテストパターンについてのテスタ２０での測定は１回でよい。
【０１３０】
さらに、このような大局的な絞り込みと実施例で述べたアドレス単位の絞り込みを段階的に併用すれば、大規模な半導体装置の故障解析において、より効率的な故障候補１２の特定が可能である。
【０１３１】
さらに、上記実施例では、簡潔に表現するため、故障候補検索ツリー１１の構築と検索の説明で再帰的な動作フローを用いているが、本発明はこれに限られるものではなく、単純なループと適切な終了条件で置き換えてこれらを実現することもできる。
【図面の簡単な説明】
【０１３２】
【図１】本発明の実施例に係わる故障候補特定システムの構成を示すブロック図。
【図２】本発明の実施例に係わる故障候補特定システムで使用される故障辞書を示すイメージ図。
【図３】本発明の実施例に係わる故障候補特定システムの故障候補検索ツリーを示すイメージ図。
【図４】本発明の実施例に係わる故障候補特定方法を示すフロー図。
【図５】本発明の実施例に係わる故障候補特定システムにおける故障候補の経路情報を示すテーブル。
【図６】本発明の実施例に係わる故障候補特定方法における故障候補検索ツリーの構築方法を示すフロー図。
【図７】本発明の実施例に係わる故障候補特定方法におけるルートノードの候補テーブルを示すイメージ図。
【図８】本発明の実施例に係わる故障候補特定方法における深さ“１”のノードの候補テーブルを示すイメージ図。
【図９】本発明の実施例に係わる故障候補特定方法における深さ“２”のノードの候補テーブルを示すイメージ図。
【図１０】本発明の実施例に係わる故障候補特定方法における故障候補検索ツリーの検索方法を示すフロー図。
【符号の説明】
【０１３３】
１１  故障候補検索ツリー
１２  故障候補
１３  故障辞書格納部
１４  検索ツリー生成部
１５  テストベクトル生成部
１６  故障候補検索部
１９  故障辞書
２１  フェイルログ
４１  故障辞書作成ステップ
４２  検索ツリー構築ステップ
４３  テストベクトル合成ステップ
４４  測定ステップ
４５  故障候補検索ステップ
【図１】
2005326161.tif 000004
【図２】
2005326161.tif 000005
【図３】
2005326161.tif 000006
【図４】
2005326161.tif 000007
【図５】
2005326161.tif 000008
【図６】
2005326161.tif 000009
【図７】
2005326161.tif 000010
【図８】
2005326161.tif 000011
【図９】
2005326161.tif 000012
【図１０】
2005326161.tif 000013