(57)【要約】【課題】  半導体集積回路の故障診断に関し、ディレイ故障の故障箇所を高精度に特定する。【解決手段】  故障仮定と終点フリップフロップＦＦ抽出部１１６を設け、故障仮定情報より故障仮定を選択し、故障仮定より出力側に向かって論理トレースを実行する。故障仮定からトレースの結果得られた終点のフリップフロップＦＦのテスト結果を判定する（１１７）。終点のフリップフロップＦＦまでの伝搬経路の最大値と最小値を求め、そこからディレイ余裕度を求める。ディレイ余裕度と１１７で求めたテスト結果を用いてディレイ範囲を求め（１１８）、故障候補とディレイ範囲決定部１１９で故障候補とディレイ故障のディレイ範囲を特定する。【選択図】  図２
2010249662.tif 000002
【特許請求の範囲】
【請求項１】
テスタから、スキャンチェイン入力端子を介し、半導体集積回路装置内のスキャンチェインのフリップフロップへ、テストパタンを入力し、
テストクロックを供給することにより、前記半導体集積回路装置を動作させ、
前記スキャンチェインから、スキャンチェイン出力端子を介し、前記テスタへ、テスト結果を出力し、
前記テスタから情報処理装置へ前記テスト結果を送信し、
前記情報処理装置により、データベースから期待値を読み出し、前記スキャンチェインを構成する各フリップフロップについて前記テスト結果と前記期待値との一致・不一致を判定し、判定結果を前記データベースに格納し、
前記情報処理装置により、前記データベースに格納されたネットリスト情報を読み出し、前記フリップフロップ間の信号伝搬経路の中から、所定箇所を経路として含み前記フリップフロップの一つである第１フリップフロップを終点として含む複数の第１伝搬経路と、前記所定箇所を経路として含み、前記フリップフロップの一つである第２フリップフロップを終点として含む複数の第２伝搬経路とを抽出し、
前記情報処理装置により、前記データベースに格納された配線、及び、セルの遅延情報を読み出し、前記第１伝搬経路および上にある配線、及び、セルの遅延情報を足し合わせることにより、前記第１経路の伝搬時間を求め、前記テストクロックの時間間隔から前記伝搬時間を引き、各第１伝搬経路について第１ディレイ余裕度をそれぞれ求め、前記第２伝搬経路および上にある配線、及び、セルの遅延情報を足し合わせることにより、前記第２経路の伝搬時間を求め、前記テストクロックの時間間隔から前記伝搬時間を引き、各第２伝搬経路について第２ディレイ余裕度をそれぞれ求め、
前記情報処理装置により、前記第１フリップフロップにおける前記判定結果が一致である場合には、前記所定箇所における信号の論理レベルの第１遷移時間は最長の前記第１ディレイ余裕度より短いと判定し、
前記情報処理装置により、前記第１フリップフロップにおける前記判定結果が不一致である場合には、前記所定箇所における信号の論理レベルの前記第１遷移時間は最短の前記第１ディレイ余裕度より長いと判定し、
前記情報処理装置により、前記第２フリップフロップにおける前記判定結果が一致である場合には、前記所定箇所における信号の論理レベルの第２遷移時間は最長の前記第２ディレイ余裕度より短いと判定し、
前記情報処理装置により、前記第２フリップフロップにおける前記判定結果が不一致である場合には、前記所定箇所における信号の論理レベルの第２遷移時間は最短の前記第２ディレイ余裕度より長いと判定し、
前記情報処理装置により、前記第１遷移時間と前記第２遷移時間について共通範囲がある場合には、前記所定箇所にディレイ故障が存在すると判定することを特徴とする故障診断方法。
【請求項２】
請求項１に記載の故障診断方法において、
異なる時間間隔の前記テストクロックを供給し、前記半導体集積回路装置を動作させることを特徴とする故障診断方法。
【請求項３】
テスタから、スキャンチェイン入力端子を介し、半導体集積回路装置内のスキャンチェインのフリップフロップへ、テストパタンを入力するステップと、
テストクロックを供給することにより、前記半導体集積回路装置を動作させるステップと、
前記スキャンチェインから、スキャンチェイン出力端子を介し、前記テスタへ、テスト結果を出力するステップと、
前記テスタから情報処理装置へ前記テスト結果を送信するステップと、
前記情報処理装置により、データベースから期待値と前記テスト結果を読み出し、前記スキャンチェインを構成する各フリップフロップについて前記テスト結果と前記期待値との一致・不一致を判定し、判定結果を前記データベースに格納するステップと、
前記情報処理装置により、前記データベースに格納されたネットリスト情報を読み出し、前記フリップフロップ間の信号伝搬経路の中から、所定箇所を経路として含み前記フリップフロップの一つである第１フリップフロップを終点として含む複数の第１伝搬経路と、前記所定箇所を経路として含み、前記フリップフロップの一つである第２フリップフロップを終点として含む複数の第２伝搬経路とを抽出するステップと、
前記情報処理装置により、前記データベースに格納された配線、及び、セルの遅延情報を読み出し、前記第１伝搬経路および上にある配線、及び、セルの遅延情報を足し合わせることにより、前記第１経路の伝搬時間を求め、前記テストクロックの時間間隔から前記伝搬時間を引き、各第１伝搬経路について第１ディレイ余裕度をそれぞれ求め、前記第２伝搬経路および上にある配線、及び、セルの遅延情報を足し合わせることにより、前記第２経路の伝搬時間を求め、前記テストクロックの時間間隔から前記伝搬時間を引き、各第２伝搬経路について第２ディレイ余裕度をそれぞれ求めるステップと、
前記情報処理装置により、前記第１フリップフロップにおける前記判定結果が一致である場合には、前記所定箇所における信号の論理レベルの第１遷移時間は最長の前記第１ディレイ余裕度より短いと判定するステップと、
前記情報処理装置により、前記第１フリップフロップにおける前記判定結果が不一致である場合には、前記所定箇所における信号の論理レベルの前記第１遷移時間は最短の前記第１ディレイ余裕度より長いと判定するステップと、
前記情報処理装置により、前記第２フリップフロップにおける前記判定結果が一致である場合には、前記所定箇所における信号の論理レベルの第２遷移時間は最長の前記第２ディレイ余裕度より短いと判定するステップと、
前記情報処理装置により、前記第２フリップフロップにおける前記判定結果が不一致である場合には、前記所定箇所における信号の論理レベルの第２遷移時間は最短の前記第２ディレイ余裕度より長いと判定するステップと、
前記情報処理装置により、前記第１遷移時間と前記第２遷移時間について共通範囲がある場合には、前記所定箇所にディレイ故障が存在すると判定するステップとを有することを特徴とする故障診断プログラム。
【請求項４】
請求項３に記載の故障診断プログラムにおいて、
異なる時間間隔の前記テストクロックを供給し、前記半導体集積回路装置を動作させることを特徴とする故障診断プログラム。
【請求項５】
テスタと、データベースを有する情報処理装置と有し、
前記テスタから、スキャンチェイン入力端子を介し、半導体集積回路装置内のスキャンチェインのフリップフロップへ、テストパタンを入力し、
テストクロックを供給することにより、前記半導体集積回路装置を動作させ、
前記スキャンチェインから、スキャンチェイン出力端子を介し、前記テスタへ、テスト結果を出力し、
前記テスタから前記情報処理装置へ前記テスト結果を送信し、
前記情報処理装置により、データベースから期待値を読み出し、前記スキャンチェインを構成する各フリップフロップについて前記テスト結果と前記期待値との一致・不一致を判定し、判定結果を前記データベースに格納し、
前記情報処理装置により、前記データベースに格納されたネットリスト情報を読み出し、前記フリップフロップ間の信号伝搬経路の中から、所定箇所を経路として含み前記フリップフロップの一つである第１フリップフロップを終点として含む複数の第１伝搬経路と、前記所定箇所を経路として含み、前記フリップフロップの一つである第２フリップフロップを終点として含む複数の第２伝搬経路とを抽出し、
前記情報処理装置により、前記データベースに格納された配線、及び、セルの遅延情報を読み出し、前記第１伝搬経路および上にある配線、及び、セルの遅延情報を足し合わせることにより、前記第１経路の伝搬時間を求め、前記テストクロックの時間間隔から前記伝搬時間を引き、各第１伝搬経路について第１ディレイ余裕度をそれぞれ求め、前記第２伝搬経路および上にある配線、及び、セルの遅延情報を足し合わせることにより、前記第２経路の伝搬時間を求め、前記テストクロックの時間間隔から前記伝搬時間を引き、各第２伝搬経路について第２ディレイ余裕度をそれぞれ求め、
前記情報処理装置により、前記第１フリップフロップにおける前記判定結果が一致である場合には、前記所定箇所における信号の論理レベルの第１遷移時間は最長の前記第１ディレイ余裕度より短いと判定し、
前記情報処理装置により、前記第１フリップフロップにおける前記判定結果が不一致である場合には、前記所定箇所における信号の論理レベルの前記第１遷移時間は最短の前記第１ディレイ余裕度より長いと判定し、
前記情報処理装置により、前記第２フリップフロップにおける前記判定結果が一致である場合には、前記所定箇所における信号の論理レベルの第２遷移時間は最長の前記第２ディレイ余裕度より短いと判定し、
前記情報処理装置により、前記第２フリップフロップにおける前記判定結果が不一致である場合には、前記所定箇所における信号の論理レベルの第２遷移時間は最短の前記第２ディレイ余裕度より長いと判定し、
前記情報処理装置により、前記第１遷移時間と前記第２遷移時間について共通範囲がある場合には、前記所定箇所にディレイ故障が存在すると判定することを特徴とする故障診断システム。
【請求項６】
請求項５に記載の故障診断方法において、
異なる時間間隔の前記テストクロックを供給し、前記半導体集積回路装置を動作させることを特徴とする故障診断システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体装置、さらにはそれにおける故障診断技術に関する。
【背景技術】
【０００２】
半導体集積回路のディレイ故障診断には、テストのフェイル・パスの情報と故障辞書を使い故障箇所を特定する手法がある。
【０００３】
テストには通常スキャンテスト方式が用いられる。スキャンテスト方式は、フリップフロップＦＦを直列に繋げたスキャンチェインを半導体集積回路に組み込みテストを行う。スキャンチェインに入力端子からテストパタンを入力し、その後、クロックを印加することで組合せ回路部にテストパタンを伝搬させる。組合せ回路部を伝搬した応答パタンはフリップフロップＦＦで補足し、スキャンチェインから出力端子に読み出し、テスタで信号レベルを観測する。そして、観測した応答パタンと予め計算されテスタのメモリに格納された期待値を比較し、一致していればパス、一致していなければフェイルと判定する。期待値はスキャンチェインを構成する全フリップフロップＦＦについて計算されているため、どのフリップフロップＦＦがパスまたはフェイルと判定されるかの情報も得ることが出来る。これらの一連の操作はテストパタン毎に実施され、パスと判定されたフリップフロップＦＦをそのテストパタンに関するパスフリップフロップＦＦ、フェイルと判定されたフリップフロップＦＦをそのテストパタンに関するフェイルフリップフロップＦＦと呼ぶ。
【０００４】
故障辞書とは、半導体集積回路に故障が存在した場合、印加した各テストパタンに対して、どのフリップフロップＦＦがフェイルまたはパスするかをコンピュータによる論理シミュレーションで求めたものである。フリップフロップＦＦがフェイルとは、故障の影響がそのフリップフロップＦＦに伝搬し、テスタで観測可能なことを示し、フリップフロップＦＦがパスとは故障の影響は観測不能なことを示す。故障辞書では、故障モデルを仮定した場所を故障仮定と呼ぶ。よって、故障仮定に含まれる情報は、故障を仮定した場所と仮定した故障モデルである。故障辞書には、故障仮定ごとに全フリップフロップＦＦのパス・フェイルの情報を格納している。
【０００５】
故障辞書を使った故障診断では、テストパタン毎にテスタで観測された全フリップフロップＦＦのパス・フェイル情報と、故障辞書に格納された故障仮定の全フリップフロップＦＦのパス・フェイル情報を照合し、一致した故障仮定を故障候補とする。完全に一致しなくても、一致度合いに重み付けをすることで真の故障の可能性が高い故障候補を特定する。
【０００６】
ディレイ故障診断では、ディレイ故障を仮定して故障辞書を作成する。ディレイ故障とは、半導体集積回路において、信号が「設定された時間」内に伝搬せず、論理的誤動作を引き起こすことを指す。通常、半導体集積回路のクロック動作周波数で決まるクロック周期が「設定された時間」に相当する。このためディレイ故障の故障モデルは、着目した論理ノードで発生した信号の遷移が、故障による影響で遅れるために、設定された時間内に観測すべきフリップフロップＦＦに伝搬が到達せず、信号遷移はフリップフロップＦＦで観測されないという論理的な状態をモデル化する。具体的には、信号の論理レベルがＨ（ハイレベル）からＬ（ローレベル）へ遷移する箇所で、Ｈのままになっている立下り故障と、信号がＬからＨへ遷移する箇所でＬのままになっている立上り故障を扱う。
【０００７】
ディレイ故障診断について記載した特許文献１を挙げる。特許文献１で開示されている故障診断手法は、まずフェイルフリップフロップＦＦから入力側に向かってトレースを行い、故障候補の絞込みを行う。次に絞込んだ故障候補にディレイ故障を仮定し、論理的なシミュレーションを行う。そして最後に、シミュレーションで求めたパス・フェイル情報とテストのパス・フェイル情報を照合し、故障箇所を特定している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−１１８８６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来のディレイ故障で用いるディレイ故障モデルは背景技術に示したように、故障を仮定する箇所で正常な信号遷移が発生しないというモデルを使用しており、信号遷移のディレイ値を全く考慮していない。しかし、実際の半導体集積回路におけるディレイ故障では、故障箇所の信号遷移の遅延は無限大ではなく、ある大きさを持つため、故障の影響が伝搬する経路の長さによって、フリップフロップＦＦで故障が観測されたりされなかったりする。すなわち、ディレイ値が大きい伝搬経路では実動作のクロック周期に対して余裕が少ないため微細なディレイ故障でも影響がフリップフロップＦＦで観測できる。一方ディレイ値が小さい伝搬経路では実動作のクロック周期に対する余裕が大きいため微細なディレイ故障はフリップフロップＦＦで観測できず、ディレイ故障の故障辞書とテストの結果が一致しないことがある。故障診断は故障辞書とフェイル情報の一致具合で故障箇所を特定するため、伝搬経路のディレイ値を考慮していないモデルで得たディレイ故障の故障辞書では故障箇所を高精度に特定できない。
【００１０】
本発明は、伝搬経路のディレイ値を考慮した高精度の故障箇所の特定を目的とするものである。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記とおりである。すなわち、半導体集積回路の中から故障仮定を取り出し、故障仮定から出力側のフリップフロップＦＦまでの論理回路を抽出し、故障仮定の入力側のフリップフロップＦＦから故障仮定を通過し、出力側のフリップフロップＦＦまで到達するすべての伝搬経路のディレイ値を計算し、伝搬経路のディレイ値の中から最大値と最小値を抽出し、伝搬経路のディレイ値の最大値と最小値からディレイ余裕度を計算し、ディレイ余裕度と半導体集積回路のテスト結果とを比較し、ディレイ故障のディレイ範囲を抽出する。この操作をテストパタン毎に行うことで、故障仮定に対して複数のディレイ範囲を求め、これらを重ね合わせることで、故障仮定が真の故障箇所であるかを判断することをコンピュータに実行させる。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものの効果を簡単に説明すれば、下記とおりである。すなわち、本発明のディレイ故障診断プログラムによれば、半導体集積回路におけるディレイ故障箇所を容易に発見することができる。
【図面の簡単な説明】
【００１３】
【図１】ディレイ故障診断プログラムを実行するハードウェアの環境を示している。
【図２】ディレイ故障診断プログラムの処理の流れを示している。
【図３】スキャンテストの機能を持つ半導体集積回路の詳細図を示している。
【図４】ディレイ故障診断プログラムの処理の一部である故障仮定と終点フリップフロップＦＦ抽出部の詳細を示している。
【図５】ディレイ故障の故障モデルを示している。
【図６】選択した故障仮定から出力側に向かって論理トレースを実行した例を示している。
【図７】ディレイ故障診断プログラムの処理の一部である故障仮定の各終点フリップフロップＦＦのテスト結果判定部の前半の処理を示している。
【図８】ディレイ故障診断プログラムの処理の一部である故障仮定の各終点フリップフロップＦＦのテスト結果判定部の後半の処理を示している。
【図９】故障が終点フリップフロップＦＦまで伝搬する場合と伝搬しない場合の例を示している。
【図１０】ディレイ故障診断プログラムの処理の一部である故障仮定の各終点フリップフロップＦＦのディレイ範囲抽出の詳細を示している。
【図１１】選択した故障仮定から入力側に向かって論理トレースを実行した例を示している。
【図１２】故障仮定を通過し、終点フリップフロップＦＦに到達する伝搬経路のディレイ値とディレイ余裕度を示している。
【図１３】終点フリップフロップＦＦのテスト結果を示している。
【図１４】故障仮定と終点フリップフロップＦＦのディレイ余裕度の最大値、最小値とディレイ範囲を示している。
【図１５】ディレイ故障診断プログラムの処理の一部である故障候補とディレイ範囲決定部の詳細を示している。
【図１６】故障仮定の各終点フリップフロップＦＦのディレイ範囲とその共通範囲を示している。
【図１７】図１６とは異なる故障仮定の各終点フリップフロップＦＦのディレイ範囲を示している。
【図１８】複数のテストタイミングでテストしたフェイル情報を示している。
【図１９】テストタイミングTc5のフェイル情報を使用し、図２の処理を実行した結果を示している。
【図２０】テストタイミングTc3、Tc5の共通範囲と、Tc3、Tc5から得られた新しい共通範囲を示している。
【図２１】図２０とは異なる故障仮定のテストタイミングTc3、Tc5の共通範囲を示している。
【発明を実施するための形態】
【実施例１】
【００１４】
＜ハードウェアの実行環境＞
図１は本発明であるディレイ故障診断プログラムを実行するハードウェアの環境を示している。このハードウェアは、半導体集積回路１３０、半導体集積回路のテスタ１２０、ネットワーク５０９、情報処理装置５１０から構成される。情報処理装置は、ＣＰＵ５０１、メモリ５０２、ＲＯＭ５０３、ハードディスク５０４、ディスプレイ５０５、マウス５０６、キーボード５０７、これらを結ぶバス５０８ととで構成される。テスタ１２０と情報処理装置５１０は、ネットワーク５０９を介し接続される。
【００１５】
半導体集積回路のテスタ１２０は半導体集積回路１３０のテストを行う。ＣＰＵ５０１はプログラム実行過程の演算を行う。メモリ５０２はＣＰＵ５０１の演算に必要な情報を納めるワークスペースである。ＲＯＭ５０３にはプログラムのデータが収められている。ディスプレイ５０５はプログラムの実行結果を出力する。プログラム実行者はディスプレイ５０５を通してプログラムの実行結果を見ることが出来る。マウス５０６はプログラム使用者がプログラムに命令を与えるためのインターフェースである。マウス５０６を使用した命令はディスプレイ５０５に反映される。キーボード５０７はプログラム実行者がプログラムに命令を与えるためのインターフェースである。キーボード５０７を使用した命令はディスプレイに反映される。マウス５０６とキーボード５０７はタッチパネルを使用したインターフェースでも代用が可能である。それぞれの装置はバス５０８で結合されており、相互にデータの送受信が可能である。バス５０８はネットワーク５０９を通じて他の装置とデータの送受信も可能である。例えば、半導体集積回路のテスタ１２０から出力されたフェイル情報１０１とテスタ１２０に納められているテストパタン１２１はネットワーク５０９を通じてハードディスク５０４に納められる。
【００１６】
ハードディスク５０４は、プログラム実行のために必要な情報やプログラム実行結果、出力データなどを格納する。また、ハードディスク５０４は、データベースとして、入力データであるテストパタン１２１、フェイル情報１０１、ネットリスト１０２、セルライブラリ１０３、配線・セルの遅延情報１０４、故障仮定情報１０５、テストパタン１２１もハードディスク５０４に格納する。なお、フェイル情報１０１とはテストパタン１２１を使った半導体集積回路のテストで、期待値と出力値が不一致となった場合に出力される。フェイル情報１０１には、フェイルと判定されたフリップフロップＦＦの情報が含まれている。
【００１７】
図２以降において説明する処理１１６〜１１９などは、ＣＰＵ５０１とメモリ５０２で行われる。プログラム自体はＲＯＭ５０３に納められている。出力部１１８の結果はディスプレイ５０５に出力される。ディスプレイ５０５に出力されるデータをハードディスク５０４に納めておくことも可能である。
＜プログラム処理の流れ＞
図２は本発明の処理の流れの概要を示している。
ステップ１１５では、半導体集積回路１３０についてスキャンテストを行う。
ステップ１１６では、フェイル情報１０１とネットリスト１０２とセルライブラリ１０３と配線・セルの遅延情報１０４と故障仮定情報１０５とテストパタン１２１を入力し、故障仮定と終点フリップフロップＦＦ１１０を出力する。
ステップ１１７では、フェイル情報１０１とネットリスト１０２とセルライブラリ１０３と配線・セルの遅延情報１０４と故障仮定情報１０５とテストパタン１２１、そして故障仮定と終点フリップフロップＦＦ１１０を入力し、故障仮定と終点フリップフロップＦＦのテスト結果１１１を出力する。
ステップ１１８では、フェイル情報１０１とネットリスト１０２とセルライブラリ１０３と配線・セルの遅延情報１０４と故障仮定情報１０５とテストパタン１２１、そして故障仮定と終点フリップフロップＦＦのテスト結果１１１を入力し、故障仮定と各終点フリップフロップＦＦのディレイ範囲１１２を出力する。
ステップ１１９では、故障仮定と各終点フリップフロップＦＦのディレイ範囲１１２を入力し、故障候補とディレイ範囲１１３を出力する。各処理の詳細な説明は後述する。
＜半導体集積回路のスキャンテストの処理の詳細＞
図３はスキャンテストの機能を持つ半導体集積回路１３０の詳細図を示している。半導体集積回路１３０は、はフリップフロップＦＦ３０１〜３０７と、フリップフロップＦＦを直列に繋ぎ合わせたスキャンチェイン３５０、３５１と、各フリップフロップＦＦにテストクロックを供給するテストクロック生成回路（ＴＧＮ）３６０と、スキャンチェインの入出力端子３７１〜３７４とテスト対象となる組合せ回路２０１〜２１０から構成される。
【００１８】
以下では、スキャンテストの動作の詳細について説明する。まず、テスタ１２０からスキャンチェインの入力端子３７１、３７２を介してテストパタンを各フリップフロップＦＦ３０１〜３０７に印加する。次にテストクロック生成回路（ＴＧＮ）３６０からテストクロックを各フリップフロップＦＦに印加し、組合せ回路２０１〜２１０にフリップフロップＦＦのテストパタンを伝搬させる。その後、再びテストクロックを印加し、組合せ回路通過後のテストパタンをフリップフロップＦＦに取り込む。取り込んだテストパタンはスキャンチェインの出力端子３７３、３７４から取り出し、あらかじめ計算された期待値と比較する。比較した値が一致の場合はテストパス、不一致の場合はテストフェイルとなる。また、２つのテストクロックの時間間隔をテストタイミングと呼ぶ。なお、テスタ１２０からテストクロック生成回路３６０を制御し、テストタイミングを変更することができる。
＜故障仮定と終点フリップフロップＦＦ抽出部の処理の詳細＞
以下では故障仮定と終点フリップフロップＦＦ抽出１１６の詳細を説明する。
【００１９】
図４は、図２の故障仮定と終点フリップフロップＦＦ抽出１１６の処理の詳細を示している。図４の処理実行時に必要な情報は図１に示しているフェイル情報１０１、ネットリスト１０２、セルライブラリ１０３、配線・セルの遅延情報１０４、故障仮定情報１０５、テストパタン１２１であり、ハードディスク５０４に納められている。図４に示す故障仮定と終点フリップフロップＦＦ抽出１１６の処理はＣＰＵ５０１、メモリ５０２で行われ、出力情報である故障仮定と終点フリップフロップＦＦ１１０はハードディスク５０４に納められる。またディスプレイ５０５を通じて出力することもできる。故障仮定と終点フリップフロップＦＦ抽出１１６を実行時に、プログラム実行者はマウス５０６やキーボード５０７を通して命令を出すことができる。ここでの命令はプログラム開始の命令であり、プログラム自体は自動で動作する。以下、図４の処理を詳細に説明する。
【００２０】
まず故障仮定の選択を行う（Ｓ１０１）。故障仮定情報１０５から任意の故障仮定を選択する。故障仮定とは、半導体集積回路の不良動作を論理的なモデルに置き換えた故障モデルを各論理ゲートの入出力端子に仮定することである。図５にディレイ故障の故障モデルを示す。ディレイ故障の故障モデルは２つあり、１つは図５（１）のように信号レベルＬがＨに遷移するタイミングが正常時より遅い状態、もう１つは図５（２）のように信号レベルＨがＬに遷移するタイミングが正常時より遅い状態である。この各故障モデルを論理ゲートの端子に仮定する。よって、故障仮定は仮定した故障モデルと端子名の情報を持つ。故障仮定はテストパタン生成時に各論理ゲートの端子について行われている。
【００２１】
次に選択された故障仮定から出力側に向かってフリップフロップＦＦの入力端子に行き着くまで論理トレースを行う（Ｓ１０２）。論理トレースとは、半導体集積回路の結線情報から信号の伝搬経路を追跡することである。論理トレースによって得られたフリップフロップＦＦをその故障仮定の終点フリップフロップＦＦと呼ぶ。論理トレースは故障仮定から出力側の回路全てについて行うため終点フリップフロップＦＦも複数になることがある。出力側に論理トレースを実行した具体的な例を、図６を用いて説明する。
【００２２】
図６は、選択された故障仮定から出力側に向かって論理トレースを実行した例を示している。図６は故障仮定P1（２５０）と論理素子２０１〜２０６と終点フリップフロップＦＦ３０１〜３０３から構成されている。故障仮定P1（２５０）から出力側に向かって論理素子の入力端子をトレースする。論理素子２０１の入力端子に到達した場合、その論理素子２０１の出力端子から再び次の論理素子の入力端子までトレースする。これをフリップフロップＦＦの入力端子に到達するまで繰り返す。図６の故障仮定P1（２５０）の場合、３つの終点フリップフロップＦＦ３０１〜３０３を得ることが出来る。
【００２３】
次に終点フリップフロップＦＦとフェイル情報１０１のフェイルフリップフロップＦＦを照合し、終点フリップフロップＦＦにフェイルフリップフロップＦＦが全て含まれているかの判定を行う（Ｓ１０３）。終点フリップフロップＦＦにフェイルフリップフロップＦＦが全て含まれていた場合、Ｓ１０３のＹＥＳを選択し、選択した故障仮定とその終点フリップフロップＦＦを登録する（Ｓ１０４）。終点フリップフロップＦＦにフェイルフリップフロップＦＦが全て含まれていない場合、Ｓ１０３のＮＯに進み、選択した故障仮定を破棄する（Ｓ１０５）。Ｓ１０４またはＳ１０５の処理が終了したら全ての故障仮定についてＳ１０２〜Ｓ１０４またはＳ１０５までの処理を行ったかの判定を行う（Ｓ１０６）。全ての故障仮定について処理を行った場合、Ｓ１０６のＹＥＳに進み、故障仮定と終点フリップフロップＦＦの情報を出力する（Ｓ１０７）。ここで出力された情報は図１の故障仮定と終点フリップフロップＦＦ１１０に相当し、故障仮定の各終点フリップフロップＦＦのテスト結果判定１１７に使われる。全ての故障仮定について処理を行っていない場合、Ｓ１０６のＮＯに進み、Ｓ１０１より再度処理を実行する。Ｓ１０７の処理で、故障仮定と終点フリップフロップＦＦ抽出１１６は終了する。
＜故障仮定の各終点フリップフロップＦＦのテスト結果判定部の処理の詳細＞
以下では故障仮定の各終点フリップフロップＦＦのテスト結果判定１１７の詳細を説明する。
【００２４】
図７と図８は、図２の故障仮定の各終点フリップフロップＦＦのテスト結果判定１１７の処理の詳細を示している。図７はＳ２１１までの処理を示しており、図８はＳ２１１以降の処理を示している。図７と図８の処理実行時に必要な情報は図１に示しているフェイル情報１０１、ネットリスト１０２、セルライブラリ１０３、配線・セルの遅延情報１０４、故障仮定情報１０５、テストパタン１２１、故障仮定と終点フリップフロップＦＦ１１０であり、ハードディスク５０４に納められている。処理はＣＰＵ５０１、メモリ５０２で行われ、出力情報である故障仮定と終点フリップフロップＦＦのテスト結果１１１はハードディスク５０４に納められる。またディスプレイ５０５を通じて出力することもできる。以下、図７、図８の処理を詳細に説明する。
【００２５】
まず、故障仮定と終点フリップフロップＦＦ１１０から故障仮定を１つ選択する（Ｓ２０１）。次に選択した故障仮定の終点フリップフロップＦＦの中から終点フリップフロップＦＦを１つ選択する。（Ｓ２０２）。次にテストパタン１２１からテストパタンを選択する（Ｓ２０３）。
【００２６】
次に選択した終点フリップフロップＦＦに故障が伝搬するかの判断を行う（Ｓ２０４）。ここで扱う故障とは背景技術で説明した立上り故障、立下り故障のことである。故障が伝搬するとは、故障仮定の故障の影響が、与えられたテストパタンで終点フリップフロップＦＦまで到達することをいう。故障が終点フリップフロップＦＦまで伝搬する具体的な例を、図９を用いて説明する。
【００２７】
図９は、故障が終点フリップフロップＦＦまで伝搬する場合と、伝搬しない場合の例を示している。図９はフリップフロップＦＦ４０１〜４０３と論理素子４２１、４２２と故障仮定４５０とで構成されている。論理素子４２１は入力された信号レベルをそのまま出力する。具体的にはＨが入力された場合、Ｈを出力し、Ｌが入力された場合は、Ｌを出力する。論理素子４２２は２入力のＡＮＤ回路である。ＡＮＤ回路は２つの入力信号がともにＨの時にＨを出力し、どちらか一方がＬまたは両方がＬの時にＬを出力する。故障仮定４５０の位置は論理素子４２１の出力であり、故障モデルは図５（２）の立下り故障である。フリップフロップＦＦ４０３は故障仮定４５０の終点フリップフロップＦＦである。フリップフロップＦＦ４０１、４０２の上部には、選択したテストパタンがフリップフロップＦＦ４０１、４０２に設定する信号レベルを記している。
【００２８】
まず図９（Ａ）故障が伝搬する場合について説明する。テストパタンはフリップフロップＦＦ４０１にＨからＬへ遷移する信号、フリップフロップＦＦ４０２にＨのままの信号を設定したとする。フリップフロップＦＦ４０１は遷移する信号を出力するため、故障仮定４５０においても信号遷移が発生する。そして、信号遷移は論理素子４２２へ伝搬する。論理素子４２２のもう一方の入力端子にはフリップフロップＦＦ４０２よりＨ信号が入力されているため、信号遷移は論理素子４２２を通過し、フリップフロップＦＦ４０３へ伝搬する。よって故障仮定４５０の故障は終点フリップフロップＦＦ４０３まで伝搬する。
【００２９】
次に図９（Ｂ）故障が伝搬しない場合について説明する。テストパタンはフリップフロップＦＦ４０１にＨからＬに遷移する信号、フリップフロップＦＦ４０２にＬのままの信号を設定したとする。フリップフロップＦＦ４０１の信号遷移は図９（Ｂ）の場合と同様に論理素子４２２まで伝搬する。しかし、論理素子４２２のもう一方の入力端子にはフリップフロップＦＦ４０２よりＬ信号が入力されているため、フリップフロップＦＦ４０３へはＬ信号が伝搬する。そのため、故障仮定４５０の故障は終点フリップフロップＦＦ４０３まで伝搬しない。
【００３０】
図９（Ａ）（Ｂ）で説明したように、選択した終点フリップフロップＦＦに故障が伝搬するかをＳ２０４で計算し、判断を行う。
【００３１】
故障が伝搬する場合はＳ２０４のＹＥＳに進み、Ｓ２０５の判断を行う。全てのテストパタンについてＳ２０４の処理を行っている場合はＹＥＳに進み、Ｓ２１１の判断を行う。Ｓ２１１の処理については後述する。全てのテストパタンについて処理を行っていない場合は、ＮＯに進みＳ２０３から処理を再度実行する。
【００３２】
故障が伝搬しない場合はＳ２０４のＮＯに進み、Ｓ２０６の判断を行う。パスフリップフロップＦＦとは選択したテストパタンを使用したテスタ１２０でパスと判定されたフリップフロップＦＦのことである。選択した終点フリップフロップＦＦがパスフリップフロップＦＦの場合はＹＥＳに進み、Ｓ２０８の判断を行う。終点フリップフロップＦＦがパスフリップフロップＦＦで無かった場合はＮＯに進み、選択した故障仮定を破棄し、Ｓ２０１より処理を再度実行する（Ｓ２０７）。終点フリップフロップＦＦがパスフリップフロップＦＦで無いということは、故障が伝搬しない終点フリップフロップＦＦでフェイルと判定されており、選択した故障仮定ではフェイル情報のパス・フェイルを再現することができないことを意味している。よって、ここで故障仮定の破棄を行う。
【００３３】
Ｓ２０８ではＳ２０５と同様に全てのテストパタンでＳ２０４の処理を行ったかを判断する。全てのテストパタンで処理を行った場合はＹＥＳに進み、Ｓ２０９の判断を行う。全てのテストパタンで処理を行っていない場合はＮＯに進み、Ｓ２０３より処理を再度実行する。
【００３４】
Ｓ２０９ではＳ２０４の処理でＹＥＳを選択し、Ｓ２０５へ進んだテストパタンが存在するかを判断する。Ｓ２０４の処理でＹＥＳを選択したテストパタンが存在しない場合はＹＥＳに進み、選択した終点フリップフロップＦＦを破棄し、Ｓ２０２より処理を再度実行する（Ｓ２１０）。Ｓ２０４の処理でＹＥＳを選択したテストパタンが存在しないということは、どのテストパタンでも終点フリップフロップＦＦに故障は伝搬しないことを意味している。故障が伝搬しないフリップフロップＦＦのパス判定の情報は故障箇所特定に役立たないため、ここで終点フリップフロップＦＦの破棄を行う。Ｓ２０４の処理でＹＥＳを選択したテストパタンが存在する場合はＮＯに進み、Ｓ２１１の判断を行う。
【００３５】
Ｓ２１１以降の処理は図８に示している。Ｓ２１１ではＳ２０４の処理でＹＥＳを選択したときの終点フリップフロップＦＦは全てフェイルフリップフロップＦＦかの判断を行う。フェイルフリップフロップＦＦとは選択したテストパタンを使用したテスタ１２０でフェイルと判定されたフリップフロップＦＦのことである。Ｓ２０４の処理でＹＥＳを選択したときの終点フリップフロップＦＦが全てフェイルフリップフロップＦＦである場合はＹＥＳに進み、選択した終点フリップフロップＦＦのテスト結果をテストフェイルとして故障仮定と共に登録する（Ｓ２１３）。テストフェイルとは選択した終点フリップフロップＦＦの故障仮定が終点フリップフロップＦＦまで伝搬し、且すべてのテストパタンでフェイルフリップフロップＦＦとなっていることを意味する。Ｓ２０４の処理でＹＥＳを選択したときの終点フリップフロップＦＦが全てフェイルフリップフロップＦＦでない場合はＮＯに進み、Ｓ２１２の判断を行う。
【００３６】
Ｓ２１２では、Ｓ２０４の処理でＹＥＳを選択した終点フリップフロップＦＦは全てパスフリップフロップＦＦかの判断を行う。全てパスフリップフロップＦＦの場合はＹＥＳに進み、選択した終点フリップフロップＦＦのテスト結果をテストパスとして故障仮定と共に登録する（Ｓ２１４）。テストパスとは選択した終点フリップフロップＦＦの故障仮定が終点フリップフロップＦＦまで伝搬し、且すべてのテストパタンでパスフリップフロップＦＦとなっていることを意味する。Ｓ２０４の処理でＹＥＳを選択した終点フリップフロップＦＦが全てパスフリップフロップＦＦでない場合はＮＯに進み、選択した終点フリップフロップＦＦのテスト結果をテストパス・フェイルとして故障仮定と共に登録する（Ｓ２１５）。テストパス・フェイルとは選択した終点フリップフロップＦＦの故障仮定が終点フリップフロップＦＦまで伝搬し、且テストパタンによってパスフリップフロップＦＦ、フェイルフリップフロップＦＦになっていることを意味する。
【００３７】
Ｓ２１３、Ｓ２１４、Ｓ２１５の処理の次は全ての終点フリップフロップＦＦについて処理を行ったかの判断を行う（Ｓ２１６）。全ての終点フリップフロップＦＦについて処理を行った場合はＹＥＳに進み、Ｓ２１７の判断を行う。全ての終点フリップフロップＦＦについて処理を行っていない場合はＮＯに進み、Ｓ２０２より処理を再度実行する。
【００３８】
Ｓ２１７では全て故障仮定について処理を行ったかの判断を行う。全ての故障仮定について処理を行った場合はＹＥＳに進み、故障仮定と終点フリップフロップＦＦのテスト結果の情報を出力する（Ｓ２１８）。全ての故障仮定について処理を行っていない場合はＮＯに進み、Ｓ２０１より処理を再度実行する。ここで出力された情報は図１の故障仮定と終点フリップフロップＦＦのテスト結果１１１に相当し、故障仮定の各終点フリップフロップＦＦのディレイ範囲抽出１１８で使われる。Ｓ２１８の処理で、故障仮定の各終点フリップフロップＦＦのテスト結果判定１１７の処理は終了する。
＜故障仮定の各終点フリップフロップＦＦのディレイ範囲抽出部の処理の詳細＞
以下では故障仮定の各終点フリップフロップＦＦのディレイ範囲抽出１１８の詳細を説明する。
【００３９】
図１０は、図２の故障仮定の各終点フリップフロップＦＦのディレイ範囲抽出１１８の処理の詳細を示している。図１０の処理実行時に必要な情報は図１に示しているフェイル情報１０１、ネットリスト１０２、セルライブラリ１０３、配線・セルの遅延情報１０４、故障仮定情報１０５、テストパタン１２１、故障仮定と終点フリップフロップＦＦのテスト結果１１１であり、ハードディスク５０４に納められている。処理はＣＰＵ５０１、メモリ５０２で行われ、出力情報である故障仮定と各終点フリップフロップＦＦのディレイ範囲１１２はハードディスク５０４に納められる。またディスプレイ５０５を通じて出力することもできる。以下、図１０の処理を詳細に説明する。
【００４０】
まず、故障仮定と終点フリップフロップＦＦのテスト結果１１１から故障仮定を１つ選択する（Ｓ３０１）。次に選択した故障仮定から終点フリップフロップＦＦを選択する（Ｓ３０２）。
【００４１】
次に故障仮定を通過し、選択した終点フリップフロップＦＦまで到達する全ての伝搬経路のディレイ値を計算する（Ｓ３０３）。ここでの伝搬経路は故障仮定を通過する信号を出力する始点となるフリップフロップＦＦから終点フリップフロップＦＦまでの経路のことを指す。始点となるフリップフロップＦＦは故障仮定から入力側に向かって論理をトレースすることで得ることができる。こうして得られたフリップフロップＦＦを始点フリップフロップＦＦと呼ぶ。伝搬経路のディレイ値は、始点フリップフロップＦＦから故障仮定を通り、終点フリップフロップＦＦまで到達する経路上にある配線・セルの遅延情報を全て足し合わせることで得ることが出来る。始点フリップフロップＦＦが複数ある場合や故障仮定から終点フリップフロップＦＦまでの伝搬経路が複数ある場合は、その組合せの数だけ伝搬経路があるため、それぞれの伝搬経路についてディレイ値を計算する。Ｓ３０１からＳ３０３までの処理の具体的な例を、図１１を用いて説明する。
【００４２】
図１１は、図６の故障仮定P1（２５０）から入力側に向かって論理トレースを実行した例を示している。
図１１は故障仮定P1（２５０）と論理素子２０１〜２１０と終点フリップフロップＦＦ３０１〜３０３と始点フリップフロップＦＦ３０４〜３０７から構成されている。図１１では、Ｓ３０１で故障仮定P1（２５０）が選択され、Ｓ３０２で終点フリップフロップＦＦ３０１が選択されたとする。この場合、Ｓ３０３の処理は以下に説明するようになる。まず、故障仮定から入力側に向かって論理回路の出力端子をトレースする。論理素子２０７の出力端子に到達した場合、その入力端子から再び次の論理素子の入力までトレースする。これをフリップフロップＦＦの出力端子に到達するまで繰り返す。図１１の故障仮定P1（２５０）の場合、４つの始点フリップフロップＦＦ３０４〜３０７を得ることが出来る。
【００４３】
次に、伝搬経路のディレイ値を計算する。図１１において、故障仮定P1(２５０)から選択した終点フリップフロップＦＦ３０１までの伝搬経路は論理素子２０１、２０２、２０３、２０４を通過した経路しかない。一方、始点フリップフロップＦＦ３０４〜３０７は複数あるため、故障仮定P1（２５０）までの伝搬経路も複数であり、その数は５つである。組合せを考えると、故障仮定P1（２５０）を通過し、終点フリップフロップＦＦ３０１まで到達する伝搬経路は次の５つになる。始点フリップフロップＦＦ３０４から論理素子２０８、２０７、故障仮定P1（２５０）を通過し、終点フリップフロップＦＦ３０１に到達する伝搬経路１、始点フリップフロップＦＦ３０５から論理素子２０８、２０７、故障仮定P1（２５０）を通過し、終点フリップフロップＦＦ３０１に到達する伝搬経路２、始点フリップフロップＦＦ３０５から論理素子２１０、２０９、２０７、故障仮定P1（２５０）を通過し、終点フリップフロップＦＦ３０１に到達する伝搬経路３、始点フリップフロップＦＦ３０６から論理素子２１０、２０９、２０７、故障仮定P1（２５０）を通過し、終点フリップフロップＦＦ３０１に到達する伝搬経路４、始点フリップフロップＦＦ３０７から論理素子２０９、２０７、故障仮定P1（２５０）を通過し、終点フリップフロップＦＦ３０１に到達する伝搬経路５。各伝搬経路上にある配線・セルの遅延情報を足し合わせると伝搬経路のディレイ値を得ることができる。
【００４４】
次にディレイ余裕度の最大値と最小値を計算する（Ｓ３０４）。ディレイ余裕度とはテストタイミングから伝搬経路のディレイ値を引いた値である。テストタイミングとは、各フリップフロップＦＦに入力するテストクロックの時間間隔のことである。このテストタイミング内に始点フリップフロップＦＦから終点フリップフロップＦＦまで信号が伝搬しなければ半導体集積回路は正常に動作しない。故障仮定を通過し、選択した終点フリップフロップＦＦまで到達する伝搬経路が複数ある場合はディレイ余裕度もその数だけ存在する。その中で最も大きい値をディレイ余裕度の最大値とし、Tmgn_max(P,フリップフロップＦＦ)、最も小さい値をディレイ余裕度の最小値とし、Tmgn_min(P,フリップフロップＦＦ)とする。ここでPは故障仮定の名前、フリップフロップＦＦは選択された終点フリップフロップＦＦの名前を示す。伝搬経路が１つしかない場合はディレイ余裕度の最大値と最小値は同じ値となる。具体的な例を、図１２を用いて説明する。
【００４５】
図１２は、図１１の故障仮定P1（２５０）を通過し、終点フリップフロップＦＦ３０１に到達する５つの伝搬経路のディレイ値とディレイ余裕度を示したものである。各伝搬経路のディレイ値を棒グラフ、ディレイ余裕度を矢印、テストタイミングの位置を点線で示している。図１２の中でディレイ余裕度の最大値は伝搬経路１であり、その値をTmgn_max(P1,フリップフロップＦＦ301)としている。一方、ディレイ余裕度の最小値は伝搬経路４であり、その値をTmgn_min(P1,フリップフロップＦＦ301)としている。
【００４６】
以上、ディレイ余裕度の最大値、最小値の求め方を説明したが、従来技術であるＳＴＡ（スタティックタイミングアナリシス）を使用した求め方も存在する。ＳＴＡの場合は、ディレイ余裕度をスラックと呼ぶ。よって、故障仮定を通過し、指定したフリップフロップＦＦまで到達する全ての伝搬経路のスラックの最大値、最小値を求め、本発明に使用してもよい。
【００４７】
次に選択した終点フリップフロップＦＦのテスト結果からディレイ範囲を計算する（Ｓ３０５）。終点フリップフロップＦＦのテスト結果は、故障仮定と終点フリップフロップＦＦのテスト結果１１１の情報を使う。以下、ディレイ範囲の計算方法について説明する。
【００４８】
選択された終点フリップフロップＦＦのテスト結果がテストパスの場合、少なくともディレイ余裕度の最大値よりディレイ故障のディレイ値が小さくなければならない。故障仮定Pにおける選択された終点フリップフロップＦＦのテスト結果がテストパスの場合のディレイ範囲をDf(P,フリップフロップＦＦ)とするとディレイ余裕度の最大値Tmgn_max(P,フリップフロップＦＦ)との関係は次のように表される。
Df(P,フリップフロップＦＦ) < Tmgn_max(P,フリップフロップＦＦ)
選択された終点フリップフロップＦＦのテスト結果がテストフェイルの場合、少なくともディレイ余裕度の最小値よりディレイ故障のディレイ値が大きくなければならない。故障仮定Pにおける選択された終点フリップフロップＦＦのテスト結果がテストフェイルの場合のディレイ範囲をDf(P,フリップフロップＦＦ)とするとディレイ余裕度の最小値Tmgn_min(P,フリップフロップＦＦ)との関係は次のように表される。
Tmgn_min(P,フリップフロップＦＦ) < Df(P,フリップフロップＦＦ)
選択された終点フリップフロップＦＦのテスト結果がテストパス・フェイルの場合、少なくともディレイ余裕度の最小値よりディレイ故障のディレイ値が大きく、かつディレイ余裕度の最大値よりディレイ故障のディレイ値が小さくなければならない。故障仮定Pにおける選択された終点フリップフロップＦＦのテスト結果がテストパス・フェイルの場合のディレイ範囲をDf(P,フリップフロップＦＦ)とするとディレイ余裕度の最小値Tmgn_min(P,フリップフロップＦＦ)、最大値Tmgn_max(P,フリップフロップＦＦ)との関係は次のように表される。
Tmgn_min(P,フリップフロップＦＦ) < Df(P,フリップフロップＦＦ) < Tmgn_max(P,フリップフロップＦＦ)
ディレイ範囲を計算した後は、全ての終点フリップフロップＦＦついて処理を行ったかの判断を行う（Ｓ３０６）。故障仮定の終点フリップフロップＦＦ全てについてＳ３０２〜Ｓ３０５までの処理を行った場合はＹＥＳへ進み、故障仮定と各終点フリップフロップＦＦのディレイ範囲を登録する（Ｓ３０７）。まだ処理を終えていない終点フリップフロップＦＦがある場合はＮＯに進み、Ｓ３０２から処理を再実行する。ここまでの処理を具体的な例として図１３、１４を用いて説明する。
【００４９】
図１３は、図１１で示される終点フリップフロップＦＦ３０１〜３０３のテスト結果を示している。尚、このテスト結果は図２の故障仮定の各終点フリップフロップＦＦのテスト結果判定１１７から得られたものである。
【００５０】
図１４は、終点フリップフロップＦＦ３０１〜３０３が図１３のテスト結果の場合のディレイ範囲を示している。棒グラフはＳ３０３、Ｓ３０４の処理の結果得られたディレイ余裕度の最大値と最小値を示している。矢印はＳ３０５の処理の結果得られた各終点フリップフロップＦＦのディレイ範囲を示している。終点フリップフロップＦＦ３０１はテストパスのため、少なくともディレイ余裕度の最大値よりはディレイ故障のディレイ値が小さくなければならない。よって、ディレイ範囲を式で表すと次のようになる。
Df(P1,フリップフロップＦＦ301) < Tmgn_max(P1,フリップフロップＦＦ301)
終点フリップフロップＦＦ３０２はテストパス・フェイルのため、少なくともディレイ余裕度の最大値よりはディレイ故障のディレイ値が小さく、かつ最小値よりはディレイ故障のディレイ値が大きくなければならない。よって、ディレイ範囲を式で表すと次のようになる。
Tmgn_min(P1,フリップフロップＦＦ302) < Df(P1,フリップフロップＦＦ302) < Tmgn_max(P1,フリップフロップＦＦ302)
終点フリップフロップＦＦ３０３はテストフェイルのため、少なくともディレイ余裕度の最小値よりはディレイ故障のディレイ値が大きくなければならない。よって、ディレイ範囲を式で表すと次のようになる。
Tmgn_min(P1,フリップフロップＦＦ303) < Df(P1,フリップフロップＦＦ303)
以上、故障仮定P1（２５０）に関しては終点フリップフロップＦＦのディレイ範囲としてDf(P1,フリップフロップＦＦ301)、Df(P1,フリップフロップＦＦ302)、Df(P1,フリップフロップＦＦ303)を登録することになる。
【００５１】
Ｓ３０７の処理の次は、全ての故障仮定について処理を行ったかの判断を行う（Ｓ３０８）。故障仮定と終点フリップフロップＦＦのテスト結果１１１に登録されている全ての故障仮定についてＳ３０２〜Ｓ３０７の処理を行った場合はＹＥＳに進み、故障仮定と各終点フリップフロップＦＦのディレイ範囲を出力する（Ｓ３０９）。ここで出力された故障仮定と各終点フリップフロップＦＦのディレイ範囲は、図１の故障仮定と各終点フリップフロップＦＦのディレイ範囲１１２に相当し、故障候補とディレイ範囲決定１１９で使用される。Ｓ３０９の処理で、故障仮定の各終点フリップフロップＦＦのディレイ範囲抽出１１８の処理は終了する。未処理の故障仮定が存在する場合はＮＯに進み、Ｓ３０１から再び処理を実行する。
＜故障候補とディレイ範囲決定部の処理の詳細＞
以下では故障候補とディレイ範囲決定１１９の詳細を説明する。
【００５２】
図１５は、図２の故障候補とディレイ範囲決定１１９の処理の詳細を示している。図１５の処理実行時に必要な情報は図１に示している故障仮定と各終点フリップフロップＦＦのディレイ範囲１１２であり、ハードディスク５０４に納められている。処理はＣＰＵ５０１、メモリ５０２で行われ、出力情報である故障候補とディレイ範囲１１３はハードディスク５０４に納められる。またディスプレイ５０５を通じて出力することもできる。以下、図１５の処理を詳細に説明する。
【００５３】
まず、故障仮定と各終点フリップフロップＦＦのディレイ範囲１１２から故障仮定を選択し、その終点フリップフロップＦＦのディレイ範囲の情報を得る（Ｓ４０１）。ここで故障仮定P1（２０５）を選択すると、図１４のような情報を得ることになる。
【００５４】
次に各終点フリップフロップＦＦのディレイ範囲から共通範囲を求める（Ｓ４０２）。故障仮定のディレイ範囲は終点フリップフロップＦＦごとに決まっているが、この終点フリップフロップＦＦのディレイ範囲を重ね合わせ、共通範囲を求めることで故障仮定に存在するディレイ故障のディレイ範囲を求めることが出来る。故障仮定に存在するディレイ故障のディレイ範囲をDf(P)とする。Pは故障仮定の名前である。具体的な例を、図１６、図１７を用いて説明する。
【００５５】
図１６は、故障仮定P1の各終点フリップフロップＦＦのディレイ範囲とその共通範囲を示している。棒グラフは各終点フリップフロップＦＦ３０１〜３０３のディレイ余裕度の最大値と最小値を、黒矢印は各終点フリップフロップＦＦ３０１〜３０３のディレイ範囲を、白矢印は各終点フリップフロップＦＦ３０１〜３０３のディレイ範囲の共通範囲を示している。共通範囲が故障仮定P1（２０５）におけるディレイ故障のディレイ範囲になる。共通範囲を式で表現すると以下のようになる。
Tmgn_min(P1,フリップフロップＦＦ302) < Df(P1) < Tmgn_max(P1,フリップフロップＦＦ301)
図１６の例では共通範囲が存在しているが、故障仮定によっては共通範囲が存在しないものもある。以下、具体的な例を説明する。
【００５６】
図１７は、図１６とは異なる故障仮定の各終点フリップフロップＦＦのディレイ範囲を示している。棒グラフは各終点フリップフロップＦＦ３０１〜３０３のディレイ余裕度の最大値と最小値を、黒矢印は各終点フリップフロップＦＦ３０１〜３０３のディレイ範囲を示している。図１７の場合、ディレイ範囲の共通範囲は存在しない。これは、故障仮定P2ではフェイル情報１０１のパス・フェイルを再現することができないことを意味している。よって、故障仮定P2にはディレイ故障が存在しないと言える。
【００５７】
Ｓ４０２の処理の後に、共通範囲が存在するかの判断を行う（Ｓ４０３）。Ｓ４０２の処理で共通範囲が存在するならばＹＥＳに進む。共通範囲が存在する故障仮定は故障候補となり、その共通範囲はディレイ故障のディレイ範囲となる。そこで、Ｓ４０４で故障候補をＳ４０３で求めた共通範囲と共に登録する。Ｓ４０２の処理で共通範囲が存在しない場合はＮＯに進み、故障仮定を破棄する（Ｓ４０５）。共通範囲が存在しないということは、故障仮定にディレイ故障が存在しないことを意味するため、ここで故障仮定の破棄を行う。
【００５８】
次に全ての故障仮定について処理を行ったかの判断を行う（Ｓ４０６）。故障仮定と各終点フリップフロップＦＦのディレイ範囲１１２内の全ての故障仮定についてＳ４０２〜Ｓ４０４またはＳ４０５までの処理を行った場合はＹＥＳに進み、故障候補とディレイ範囲を出力する（Ｓ４０７）。ここで出力された故障候補とディレイ範囲は、図１の故障候補とディレイ範囲１１３に相当する。処理１１６〜１１９はこの故障候補とディレイ範囲１１３を出力することで終了する。未処理の故障仮定が存在する場合はＮＯに進み、Ｓ４０１から処理を再度実行する。
＜実施例１の効果＞
本発明は、故障仮定から終点フリップフロップＦＦまでの全ての伝搬経路の長さを計算し、テストタイミングからディレイ余裕度の最大値と最小値を計算している。次にディレイ余裕度の最大値、最小値と終点フリップフロップＦＦのテスト結果を用いてディレイ範囲を計算している。そのため、伝搬経路の長さを考慮しない従来のディレイ故障診断より高精度な故障箇所の特定を行うことが出来る。
さらに故障箇所と同時にディレイ故障のディレイ範囲も求められるため故障解析時間の短縮にも繋がる。
【実施例２】
【００５９】
実施例１ではテストタイミングを固定してテストを行い、その結果得られたフェイル情報１０１を使用している。しかし、テストタイミングはテスト実行者が任意に設定できるため、異なるテストタイミングで複数のフェイル情報を得ることが可能である。またテストタイミングを変更すると、同じ半導体集積回路でもフェイル情報が変化する。この複数のテストタイミングで得られた、複数のフェイル情報を使用して、故障箇所の特定を行うことが実施例２である。
【００６０】
以下、実施例２について図を用いて説明する。図１８は、図１０に示される半導体集積回路を複数のテストタイミングでテストしたフェイル情報を示している。横軸はテストタイミングの大きさを示しており、各マスには終点フリップフロップＦＦ３０１〜３０３のフェイル情報を示している。符号は、Ｆがフェイルのみ、Ｐがパスのみ、ＦＰがフェイルとパス両方有り、Tcがテストタイミングを示している。テストタイミングは７つ使用し、Tc1が最も小さく、Tc7が最も大きい。なお、テストタイミングTc3のテスト結果は図１３に示されるテスト結果と同じになる。よってTc3のフェイル情報を使用し、図２の処理を行うと、図１６のような結果が得られる。本実施例は、複数のテストタイミングで得られた、複数のフェイル情報を使用することを特徴としているため、テストタイミングTc3とTc5のフェイル情報を使用する。
【００６１】
図１９は、テストタイミングTc5のフェイル情報を使用し、図２の処理を実行した結果を示している。斜線の棒グラフは図１４のディレイ余裕度からの増加分を示している。テストタイミングTc5はTc3よりも大きいため、その差分だけディレイ余裕度も増加する。またテスト結果も終点フリップフロップＦＦ３０２がテストパス・フェイルからテストパスへ変化しているため、終点フリップフロップＦＦ３０２のディレイ範囲が変化している。結果、故障仮定P1における各終点フリップフロップＦＦ３０１〜３０３のディレイ範囲の共通範囲も変化する。
【００６２】
図２０は、テストタイミングTc3、Tc5の共通範囲と、Tc3、Tc5から得られた新しい共通範囲を示している。黒矢印は図２の処理の結果得られたそれぞれのテストタイミングの共通範囲を示している。白矢印はテストタイミングTc3とTc5の共通範囲から得られた新しい共通範囲を示している。白矢印で示される範囲は、単一のテストタイミングの範囲よりも狭くなっている。このように複数のテストタイミングの共通範囲を重ねることにより、ディレイ故障のディレイ範囲をさらに絞り込むことが出来る。
【００６３】
図２１は、図２０と異なる故障仮定のテストタイミングTc3、Tc5の共通範囲を示している。図２０と異なり、この故障仮定では新しい共通範囲が存在しない。これは、この故障仮定では複数のテストタイミングのフェイル情報を説明できないことを意味している。よって、この故障仮定にはディレイ故障が存在しないと言える。このように複数のテストタイミングの共通範囲を重ねることにより故障候補の更なる絞込みも可能になる。図２１では２つのテストタイミングのフェイル情報を使用したが、さらに多くのフェイル情報を使用することも可能である。その場合、１つでも重ならない共通範囲が存在する場合、その故障仮定にディレイ故障は存在しないことがいえる。
＜実施例２の効果＞
実施例２は複数のテストタイミングを使うため、テスト時間と故障診断の処理時間が実施例１に対し増加する。しかし、故障候補の絞込み、ディレイ故障のディレイ範囲の絞込みという観点では実施例２のほうが有利である。
【符号の説明】
【００６４】
１０１・・・フェイル情報、１０２・・・ネットリスト、１０３・・・セルライブラリ、１０４・・・配線・セルの遅延情報、１０５・・・故障仮定情報、１１５・・・スキャンテスト、１１６・・・故障仮定と終点フリップフロップＦＦ抽出、１１７・・・故障仮定の各終点フリップフロップＦＦのテスト結果判定、１１８・・・故障仮定の各終点フリップフロップＦＦのディレイ範囲抽出、１１９・・・故障候補とディレイ範囲決定、１１０・・・故障仮定と終点フリップフロップＦＦ、１１１・・・故障仮定と終点フリップフロップＦＦのテスト結果、１１２・・・故障仮定と各終点フリップフロップＦＦのディレイ範囲、１１３・・・故障候補とディレイ範囲、１２０・・・半導体集積回路のテスタ、１２１・・・テストパタン、１３０・・・半導体集積回路、２０１〜２１０・・・論理素子、２５０・・・故障仮定Ｐ１、３０１〜３０７・・・フリップフロップＦＦ、３５０・３５１・・・スキャンチェイン、３６０・・・テストクロック生成回路（ＴＧＮ）、３７１〜３７４・・・スキャンチェインの入出力端子、４０１〜４０３・・・フリップフロップＦＦ、４２１・４２２・・・論理素子、４５０・・・故障仮定、５０１・・・ＣＰＵ、５０２・・・メモリ、５０３・・・ＲＯＭ、５０４・・・ハードディスク、５０５・・・ディスプレイ、５０６・・・マウス、５０７・・・キーボード、５０８・・・バス、５０９・・・ネットワーク、５１０・・・情報処理装置、Ｈ・・・信号のハイレベル、Ｌ・・・信号のローレベル
【図１】
2010249662.tif 000003
【図２】
2010249662.tif 000004
【図３】
2010249662.tif 000005
【図４】
2010249662.tif 000006
【図５】
2010249662.tif 000007
【図６】
2010249662.tif 000008
【図７】
2010249662.tif 000009
【図８】
2010249662.tif 000010
【図９】
2010249662.tif 000011
【図１０】
2010249662.tif 000012
【図１１】
2010249662.tif 000013
【図１２】
2010249662.tif 000014
【図１３】
2010249662.tif 000015
【図１４】
2010249662.tif 000016
【図１５】
2010249662.tif 000017
【図１６】
2010249662.tif 000018
【図１７】
2010249662.tif 000019
【図１８】
2010249662.tif 000020
【図１９】
2010249662.tif 000021
【図２０】
2010249662.tif 000022
【図２１】
2010249662.tif 000023