(57)【特許請求の範囲】
【請求項１】
半導体装置の故障箇所を推定する故障診断装置が実行する故障診断方法であって、
前記半導体装置は、テスト対象の回路にテストパターンを供給し前記テスト対象の回路の各点の信号レベルを保持する複数のスキャンチェーンと、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの幅方向に圧縮する第１の圧縮器と、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの長さ方向に圧縮する第２の圧縮器とを含み、
記憶装置には、前記第１の圧縮器及び前記第２の圧縮器の出力信号をテスト装置にて観測した第１の観測結果及び第２の観測結果がそれぞれ記憶され、
前記故障診断装置は、
故障仮定箇所に縮退故障を設定して前記第１の圧縮器をシミュレーションし、
前記第１の圧縮器のシミュレーション結果と前記第１の観測結果とを比較した結果に基づいて前記第２の圧縮器の入力信号を設定して前記第２の圧縮器をシミュレーションし、
前記第２の圧縮器のシミュレーション結果と、前記第２の観測結果とに基づいて、前記故障仮定箇所のスコアを算出する、
ことを特徴とする故障診断方法。
【請求項２】
前記故障診断装置は、
テストパターンにより前記テスト対象の回路と前記複数のスキャンチェーンを論理シミュレーションし、
前記論理シミュレーションによる故障仮定箇所の信号値に応じて前記故障仮定箇所に縮退故障を設定して前記テスト対象の回路と前記複数のスキャンチェーンを故障シミュレーションし、
前記第１の圧縮器のシミュレーション結果と前記第１の観測結果とを比較した結果に基づいて、前記シミュレーション結果と前記第１の観測結果とが一致する場合に前記故障シミュレーションの結果を前記第２の圧縮器の入力値に設定し、前記シミュレーション結果と前記第１の観測結果とが一致しない場合に前記論理シミュレーションの結果を前記第２の圧縮器の入力値に設定する、
ことを特徴とする請求項１記載の故障診断方法。
【請求項３】
前記故障診断装置は、
前記故障シミュレーションの結果に基づいて前記スキャンチェーンまで故障が伝搬したか否かを判定し、
前記故障が前記スキャンチェーンまで伝搬しない場合、前記論理シミュレーションの結果を前記第２の圧縮器の入力値に設定し、
前記故障が前記スキャンチェーンまで伝搬した場合、前記故障シミュレーションの結果を前記第１の圧縮器の入力値に設定して前記第１の圧縮器をシミュレーションする、
ことを特徴とする請求項２記載の故障診断方法。
【請求項４】
半導体装置の故障箇所を推定する故障診断装置であって、
前記半導体装置は、テスト対象の回路にテストパターンを供給し前記テスト対象の回路の各点の信号レベルを保持する複数のスキャンチェーンと、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの幅方向に圧縮する第１の圧縮器と、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの長さ方向に圧縮する第２の圧縮器とを含み、
記憶装置には、前記第１の圧縮器及び前記第２の圧縮器の出力信号をテスト装置にて観測した第１の観測結果及び第２の観測結果がそれぞれ記憶され、
故障仮定箇所に縮退故障を設定して前記第１の圧縮器をシミュレーションし、前記第１の圧縮器のシミュレーション結果と前記第１の観測結果とを比較した結果に基づいて前記第２の圧縮器の入力信号を設定して前記第２の圧縮器をシミュレーションし、前記第２の圧縮器のシミュレーション結果と、前記第２の観測結果とに基づいて、前記故障仮定箇所のスコアを算出する、
ことを特徴とする故障診断装置。
【請求項５】
半導体装置をテストするテストシステムであって、
前記半導体装置は、テスト対象の回路にテストパターンを供給し前記テスト対象の回路の各点の信号レベルを保持する複数のスキャンチェーンと、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの幅方向に圧縮する第１の圧縮器と、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの長さ方向に圧縮する第２の圧縮器とを含み、
テストパターンを前記複数のスキャンチェーンを介して前記テスト対象の回路にシフトインさせ、前記テスト対象の回路の各点の信号レベルを前記複数のスキャンチェーンにキャプチャさせ、前記複数のスキャンチェーンから前記第１の圧縮器と前記第２の圧縮器へシフトアウトさせ、前記第１の圧縮器及び前記第２の圧縮器の出力信号を観測した第１の観測結果及び第２の観測結果をそれぞれ記憶装置に記憶するテスト装置と、
前記半導体装置の回路情報と前記テストパターンに基づいて、故障仮定箇所に縮退故障を設定して前記第１の圧縮器をシミュレーションし、前記第１の圧縮器のシミュレーション結果と前記第１の観測結果とを比較した結果に基づいて前記第２の圧縮器の入力信号を設定して前記第２の圧縮器をシミュレーションし、前記第２の圧縮器のシミュレーション結果と、前記第２の観測結果とに基づいて、前記故障仮定箇所のスコアを算出する故障診断装置と、
を含むテストシステム。
【請求項６】
半導体装置の故障箇所を推定する故障診断装置が実行するプログラムであって、
前記半導体装置は、テスト対象の回路にテストパターンを供給し前記テスト対象の回路の各点の信号レベルを保持する複数のスキャンチェーンと、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの幅方向に圧縮する第１の圧縮器と、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの長さ方向に圧縮する第２の圧縮器とを含み、
記憶装置には、前記第１の圧縮器及び前記第２の圧縮器の出力信号をテスト装置にて観測した第１の観測結果及び第２の観測結果がそれぞれ記憶され、
前記故障診断装置が実行するプログラムは、
故障仮定箇所に縮退故障を設定して前記第１の圧縮器をシミュレーションするステップと、
前記第１の圧縮器のシミュレーション結果と前記第１の観測結果とを比較した結果に基づいて前記第２の圧縮器の入力信号を設定して前記第２の圧縮器をシミュレーションするステップ、
前記第２の圧縮器のシミュレーション結果と、前記第２の観測結果とに基づいて、前記故障仮定箇所のスコアを算出するステップと、
を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
故障診断方法、故障診断装置、テストシステム及びプログラムに関する。
【背景技術】
【０００２】
従来、半導体装置には、故障を判定するために、自己テスト回路（ＢＩＳＴ：Built-in Self Test）を搭載したものがある（例えば、特許文献１参照）。テスト装置（故障診断装置）は、自己テスト回路の出力信号に基づいて、半導体装置に発生した故障箇所を推定する。
【０００３】
自己テスト回路は、直列に接続された複数のスキャンフリップフロップを含む複数のスキャンチェーンと、複数のスキャンチェーンの出力信号を圧縮した信号を出力する圧縮器とを含む。圧縮器は、例えば、排他的論理和回路（ＥＯＲ：Exclusive OR）回路であり、複数のスキャンチェーンの出力信号を、スキャンチェーンの数よりも少ない数（例えば１ビット）の出力信号に圧縮する。圧縮器は、半導体装置の外部端子の減少に寄与する。即ち、圧縮器を含まない半導体装置は、スキャンチェーンの数と等しい数の外部端子を、テストのために必要とする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２４９６２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
故障として、例えばゲート回路に信号を供給する配線にオープン故障が生じた場合、そのゲート回路の入力に接続された配線は、隣接する配線との間のカップリング容量によって、隣接配線によって伝達される信号の影響を受ける。このような故障は、隣接配線の信号値によって、０縮退故障として観測される場合と、１縮退故障として観測される場合がある。
【０００６】
圧縮器を用いた自己テスト回路の場合、故障が単一の外部観測点のみに伝達する故障の場合、故障箇所の候補数が増加する。例えば、スキャンフリップフロップのデータ端子に接続される配線にオープン故障が生じた場合、そのオープン故障が生じたスキャンフリップフロップと同じ段の全てのスキャンフリップフロップのデータ端子に接続された配線が故障箇所の候補となる。このように、自己テスト回路に含まれる圧縮器は、複数のスキャンチェーンの出力信号を圧縮するため、圧縮器の出力信号に基づいて故障を診断した場合、故障の状態によっては故障箇所と推定する箇所が多くなる、つまり推定精度が低下する場合があった。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、半導体装置は、テスト対象の回路にテストパターンを供給し前記テスト対象の回路の各点の信号レベルを保持する複数のスキャンチェーンと、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの幅方向に圧縮する第１の圧縮器と、前記複数のスキャンチェーンの出力信号を前記スキャンチェーンの長さ方向に圧縮する第２の圧縮器とを含み、記憶装置には、前記第１の圧縮器及び前記第２の圧縮器の出力信号をテスト装置にて観測した第１の観測結果及び第２の観測結果がそれぞれ記憶され、故障診断装置は、故障仮定箇所に縮退故障を設定して第１の圧縮器をシミュレーションし、前記第１の圧縮器のシミュレーション結果と前記第１の観測結果とを比較した結果に基づいて第２の圧縮器の入力信号を設定して前記第２の圧縮器をシミュレーションし、前記第２の圧縮器のシミュレーション結果と、前記第２の観測結果とに基づいて、前記故障仮定箇所のスコアを算出する。
【発明の効果】
【０００８】
本発明の一観点によれば、故障箇所推定の精度低下を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】（ａ）（ｂ）は、テストシステムの概略構成図である。
【図２】圧縮器の回路図である。
【図３】テストパターンシーケンスの説明図である。
【図４】故障診断処理のフローチャートである。
【図５】故障診断処理のフローチャートである。
【図６】計算機の概略構成図である。
【図７】（ａ）（ｂ）は、故障モデルの説明図である。
【図８】（ａ）（ｂ）は、故障モデルの説明図である。
【図９】（ａ）（ｂ）は、故障モデルの説明図である。
【図１０】ドライブ故障モデルと縮退故障モデルの関係を示す説明図である。
【発明を実施するための形態】
【００１０】
以下、実施形態を添付図面に従って説明する。
図１（ａ）に示すように、テストシステム１０は、テスト対象の半導体装置２０をテストするテスト装置１１と、テスト装置１１のテスト結果に基づいて半導体装置２０の故障箇所を推定する故障診断装置１２とを備えている。
【００１１】
先ず、テスト対象の半導体装置２０の構成を説明する。
図１（ｂ）に示すように、半導体装置２０は、ロジック回路２１と、ロジック回路２１をテストするための自己テスト回路（ＢＩＳＴ（Built-in Self Test）回路）２２を備えている。
【００１２】
自己テスト回路２２は、展開器２３と、複数（図１（ｂ）では２つ）のスキャンチェーン２４，２５と、圧縮器２６，２７とを含む。
展開器２３は、テスト装置１１からテスト信号ＴＳが供給される。テスト信号ＴＳは圧縮されたデータであり、展開器２３は、テスト信号ＴＳを展開し、各スキャンチェーン２４，２５に供給する。
【００１３】
スキャンチェーン２４は、直列的に接続された複数段（図において３段）のスキャンフリップフロップ（以下、ＳＦＦ）２４ａ，２４ｂ，２４ｃを備える。同様に、スキャンチェーン２５は、ＳＦＦ２５ａ，２５ｂ，２５ｃを備える。各ＳＦＦ２４ａ〜２５ｃは、展開器２３から供給されるテストパターンを保持する。ロジック回路２１は、各ＳＦＦ２４ａ〜２５ｃに保持されたテストパターンに従って動作する。即ち、スキャンチェーン２４，２５は、展開器２３から入力されるシリアルテストパターンを、ロジック回路２１に供給する。
【００１４】
また、各ＳＦＦ２４ａ〜２５ｃは、ロジック回路２１の各観測箇所における信号レベルを保持する。スキャンチェーン２４，２５は、保持した信号レベルを、各ＳＦＦ２４ａ〜２５ｃの接続に従って転送する。即ち、スキャンチェーン２４，２５は、ロジック回路２１の各観測点における信号レベル（テスト応答）を保持し、保持した信号レベルを圧縮器２６，２７に伝達する。
【００１５】
スキャンチェーン２４，２５のＳＦＦ２４ａ〜２５ｃにテストパターンを保持する動作をシフトイン（SHIFT IN）という。各ＳＦＦ２４ａ〜２５ｃにテスト応答を保持することを、キャプチャ（Capture ）という。そして、各ＳＦＦ２４ａ〜２５ｃに保持した信号レベル（テスト応答）を転送・出力する動作をシフトアウト（SHIFT OUT ）という。なお、シフトインは、スキャンイン（Scan-in ）やロード（Load）と呼ばれることがある。また、シフトアウトは、スキャンアウト（Scan-out）やアンロード（Unload）と呼ばれることがある。
【００１６】
第１の圧縮器２６は、例えば、排他的論理和回路（ＥＯＲ回路）である。圧縮器２６は、複数のスキャンチェーン２４，２５から出力される信号を１ビットの出力信号に圧縮し、圧縮後の信号Ｄ１を出力する。詳しくは、圧縮器２６は、各スキャンチェーン２４，２５の各段のＳＦＦに保持した信号を１ビットの信号に圧縮する。従って、スキャンチェーンの段数をｍ、スキャンチェーンの数をｎとすると、自己テスト回路２２は、ロジック回路２１における（ｍ×ｎ）箇所の信号レベル（テスト応答）を保持する。なお、段数ｍは、複数のスキャンチェーンの段数の最大値となる。そして、圧縮器２６は、（ｍ×ｎ）個の信号を、ｍ個の信号に圧縮する。つまり、圧縮器２６は、各スキャンチェーン２４，２５から同時に出力される２つの信号を１つの信号に圧縮する。このように、スキャンチェーンの幅方向に信号を圧縮する圧縮器を、空間圧縮回路と呼ぶ。
【００１７】
第２の圧縮器２７は、例えば、多入力線形帰還シフトレジスタ（ＭＩＳＲ:Multiple Input Signature Register）である。圧縮器２７は、ロジック回路２１における（ｍ×ｎ）個の信号を、ｎ個の信号に圧縮する。つまり、圧縮器２７は、複数のスキャンチェーン２４，２５に保持した信号を、スキャンチェーンに含まれるＳＦＦの接続方向（スキャンチェーンの長さ方向）に圧縮する。このように、複数のスキャンチェーンの長さ方向に信号を圧縮する圧縮器を、時間圧縮回路又は時系列圧縮回路と呼ぶ。
【００１８】
図１（ａ）に示すように、テスト装置１１は、半導体装置２０に対応するテストパターン１３を入力する。テストパターン１３は、出荷試験時にサイクル番号毎に半導体装置２０を動作させるテスト信号のパターンと、そのパターンにより半導体装置２０から出力されるであろう信号を示す期待値を含む。
【００１９】
テスト装置１１は、テストパターンを半導体装置２０に供給する。そして、テスト装置１１は、テストパターンに対応して半導体装置２０の圧縮器２６から出力されるテスト応答（信号Ｄ１）を観測し、観測結果、即ちテスト応答結果に応じてフェイル情報１４を生成する。
【００２０】
例えば、テスト装置１１は、観測したテスト結果と期待値とを比較し、半導体装置２０の良否を判定する。そして、テスト装置１１は、テスト結果と期待値とが一致しない場合に半導体装置２０が故障していると判定し、その判定結果と、半導体装置２０に対する観測結果を含むフェイル情報１４を生成する。
【００２１】
また、テスト装置１１は、テストパターンに応じて圧縮器２６から出力される複数のテスト応答の観測後に、圧縮器２７における圧縮結果（シグネチャ（Signature ）と呼ぶ）を観測する。そして、テスト装置１１は、観測したシグネチャをフェイル情報１４に格納する。
【００２２】
テストパターン１３には、複数のパターンが含まれている。テスト装置１１は、複数のパターンを半導体装置２０のスキャンチェーン２４，２５（図１（ｂ）参照）にシフトインし、各スキャンチェーン２４，２５からシフトアウトされたデータをそれぞれ観測する。なお、テスト装置１１は、１つのパターンに対するテスト応答をシフトアウトするときに、次のパターンをシフトインする。各スキャンチェーン２４，２５は、各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃに対して、シフト用のパルス信号（例えばクロック信号）に応答して、シフトイン及びシフトアウトを行う。
【００２３】
即ち、図３に示すように、テスト装置１１は、先ず、自己テスト回路２２の初期化を行う。次いで、テスト装置１１は、スキャンチェーン２４，２５の段数（ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃの数）のパターンＰ１をシフトイン（「SHIFT IN(P1)」と表記）する。次いで、テスト装置１１は、ロジック回路２１を動作させ、ロジック回路２１におけるパターンＰ１に対応するテスト応答を、各スキャンチェーン２４，２５にキャプチャ（「Capture(P1) 」と表記）させる。
【００２４】
次いで、テスト装置１１は、キャプチャしたテスト応答をシフトアウト（「SHIFT OUT(P1) 」と表記）させるとともに、次のパターンＰ２をシフトインする。そして、テスト装置１１は、スキャンチェーン２４，２５の段数に対応する数のテスト応答、つまりパターンＰ１に対するテスト結果をシフトアウトさせ、各テスト応答を観測する。
【００２５】
詳しくは、テスト装置１１は、スキャンチェーン２４，２５の各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃにクロック信号を供給する。各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃは、クロック信号の各パルスに応答して、入力される信号を保持する。これにより、スキャンチェーン２４，２５は、保持したデータをシフトする。圧縮器２６は、各スキャンチェーン２４，２５から出力される信号を、１ビットの信号に圧縮する。そして、テスト装置１１は、クロック信号のパルス毎に、圧縮器２６から出力される信号を観測する。
【００２６】
同様にして、テスト装置１１は、ｎ個のパターンＰ１〜Ｐｎをシフトインさせる。テスト装置１１は、ｎ個目のパターンＰｎに対するテスト応答をキャプチャ（「Capture(Pｎ) 」と表記）させる。そして、テスト装置１１は、テスト応答をシフトアウトさせ、各テスト応答を観測する。
【００２７】
上記したように、テスト装置１１は、全てのパターンＰ１〜Ｐｎに対応するテスト応答をシフトアウトさせて観測する。テスト装置１１は、例えばパターンＰ１に対応するテスト応答のシフトアウトとパターンＰ２のシフトインのように、テスト応答のシフトアウトと次のパターンのシフトインとを同時に行うことで、半導体装置２０に対するテスト期間の長期化を抑制している。
【００２８】
次いで、テスト装置１１は、圧縮器２７における圧縮結果（Signature ）を観測する。上記したように、圧縮器２７は、例えば多入力線形帰還シフトレジスタ（ＭＩＳＲ）であり、パルス信号（例えばクロック信号）に応答して圧縮結果を出力する。テスト装置１１は、スキャンチェーンの本数分のパルスを圧縮器２７に供給し、各パルスに応答して圧縮器２７から出力される圧縮結果（「Signature OUT 」と表記）を観測する。このように、テスト装置１１は、全てのパターンＰ１〜Ｐｎに対応するテスト応答を観測した後に、そのテスト応答の圧縮結果（Signature ）を観測することで、テストパターン長の増加を最小限に抑えることができる。
【００２９】
故障診断装置１２は、テストパターン１３と、フェイル情報１４と、半導体装置２０の回路情報（ネットリスト）１５とを入力する。
故障診断装置１２は、半導体装置２０の故障仮定箇所に縮退故障を設定し、シミュレーションを実施する。故障診断装置１２は、シミュレーションにより得た圧縮器２６の出力信号と、テスト装置１１により観測した圧縮器２６の出力信号とを比較し、その比較結果に応じて圧縮器２７の入力信号を設定してシミュレーションを実施する。そして、故障診断装置１２は、シミュレーションにより得た圧縮器２７の出力信号と、テスト装置１１により観測した圧縮器２７の出力信号に基づいて、故障仮定箇所のスコアを算出する。
【００３０】
故障診断装置１２は、テストパターン１３を読み込み、半導体装置２０のロジック回路２１とスキャンチェーン２４，２５の各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃの論理シミュレーションを行う。そして、故障診断装置１２は、故障仮定箇所の信号レベルに応じて、０縮退故障又は１縮退故障を故障仮定箇所に設定する。
【００３１】
また、故障診断装置１２は、縮退故障を設定して故障シミュレーションを実施した結果、故障がＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃまで伝搬しない場合、論理シミュレーションの結果における各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃの信号レベルを圧縮器２７の入力に採用する。一方、故障診断装置１２は、故障がＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃまで伝搬した場合、故障シミュレーションの結果におけるＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃの信号レベルを採用し、圧縮器２６をシミュレーションする。そして、故障診断装置１２は、シミュレーションにより得た圧縮器２６の出力信号と、テスト装置１１により観測した圧縮器２６の出力信号とを比較する。
【００３２】
上記のテスト装置１１と故障診断装置１２は、は、パーソナルコンピュータ、ワークステーション等の汎用的な目的で使用される計算機上で実行されるコンピュータプログラムにより実現する。図６に示すように、計算機は、処理装置（ＣＰＵ）４１、メモリ（主記憶装置）４２、記憶装置（補助記憶装置）４３、出力装置４４、入力装置４５、ドライブ装置４６などから構成され、コンピュータプログラムを実行するものであり、コンピュータプログラムは、フレキシブルディスクやＣＤ−ＲＯＭ等の可搬型記録媒体４８やネットワーク接続された他の計算機の主記憶装置や補助記憶装置等に格納されて提供される。提供されたコンピュータプログラムは、可搬型記録媒体４８からドライブ装置４６を介して記憶装置４３にコピーまたはインストール後にメモリ４２にロードされ実行される。また、ネットワーク接続された他の装置に格納されて提供された場合も、他の装置からネットワークを経由して受信後に記憶装置４３にコピーまたはインストールされ、メモリ４２にロードされ実行されるものである。記憶装置４３には、図１に示すテストパターン１３，フェイル情報１４，回路情報１５，故障候補１６がファイルとして格納される。
【００３３】
次に、圧縮器の構成例を説明する。
図２に示すように、圧縮器２６ａは、例えば５入力の排他的論理和回路（ＥＯＲ回路）であり、５つのスキャンチェーンの出力信号を圧縮する。同様に、圧縮器２７ａは、５つのスキャンチェーンから出力される信号を圧縮する。この圧縮器２７ａは、入力信号の数に対応する５つの排他的論理和回路（ＥＯＲ回路）３１ａ〜３１ｅ及びスキャンフリップフロップ（ＳＦＦ）３２ａ〜３２ｅを備えている。各ＥＯＲ回路３１ａ〜３１ｅの出力端子はＳＦＦ３２ａ〜３２ｅのデータ入力端子Ｄに接続されている。各ＳＦＦ３２ａ〜３２ｄの出力端子Ｑは、次段のＳＦＦ３２ｂ〜３２ｅのスキャンイン端子ＳＩと、各段に対応するＥＯＲ回路３１ｂ〜３１ｅの入力端子に接続されている。最終段のＳＦＦ３２ｅの出力端子Ｑは、初段のＥＯＲ回路３１ａの入力端子に接続されている。初段のＳＦＦ３２ａのスキャンイン端子ＳＩには、初期化のためのデータが入力される。尚、回路の初期化は、各ＳＦＦのリセット端子に供給する信号により行われても良い。そして、各ＳＦＦ３２ａ〜３２ｅのクロック端子にはクロック信号ＣＬＫが供給される。
【００３４】
次に、故障診断装置１２が実行する処理を説明する。
故障診断装置１２は、図４及び図５に示すフローチャートに従って、故障診断処理を実行する。
【００３５】
図４に示すように、故障診断装置１２は、先ず、回路情報１５を入力する（ステップ５１）。
次いで、故障診断装置１２は、故障仮定箇所を１つ選択する（ステップ５２）。故障診断装置１２は、半導体装置２０で故障する可能性のある複数の箇所のうちの１つを選択する。半導体装置２０で故障する可能性のある箇所は、例えば、テスト装置１１のテスト結果に基づいて、回路情報１５（例えばネットリスト）をバックトレースすることで、仮定する故障箇所の候補が複数設定され、例えばフェイル情報１４に格納されている。なお、バンクトレースは、故障診断装置が行うようにしてもよい。また、バックトレースを行わずに故障する可能性のある箇所を設定するようにしてもよい。
【００３６】
次いで、故障診断装置１２は、テストパターン１３に含まれる全てのパターン（例えば、図３に示すシーケンス説明図では、ｎ個のパターン）に対する処理を終了したか否かを判定する（ステップ５３）。全てのパターンに対する処理を終了していないと判定した場合（判定：ＮＯ）、故障診断装置１２は次のステップ５４に進む。
【００３７】
次いで、故障診断装置１２は、テストパターン１３に含まれる１つのパターンを読み込む（ステップ５４）。
次いで、故障診断装置１２は、読み込んだパターンで、テスト対象のロジック回路２１とスキャンチェーン２４，２５の各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃを論理シミュレーションする（ステップ５５）。そして、故障診断装置１２は、この論理シミュレーション結果の値を、第１のシミュレーション結果として記憶する。
【００３８】
次いで、故障診断装置１２は、論理シミュレーション結果に基づいて、選択した箇所における信号値が「０」か否かを判定する（ステップ５６）。論理シミュレーション結果の信号値が「１」（判定：ＮＯ）の場合、故障診断装置１２は、ステップ５７ａにおいて、選択した箇所に、０縮退故障（Stuck-at-0故障：ＳＡ０）を埋め込む。一方、論理シミュレーション結果の信号値が「０」（判定：ＹＥＳ）の場合、故障診断装置１２は、ステップ５７ｂにおいて、選択した箇所に、１縮退故障（Stuck-at-1故障：ＳＡ１）を埋め込む。つまり、故障診断装置１２は、論理シミュレーション結果に基づいて、そのシミュレーション結果と異なる縮退故障を、選択した箇所に仮定する。
【００３９】
０縮退故障は、状態値（信号レベル）を「０」に固定する故障であり、期待値が「１」のときに観測値が「０」になることによって、故障と判定される。１縮退故障は、状態値（信号レベル）を「１」に固定する故障であり、期待値が「０」のときに観測値が「１」になることによって、故障と判定される。
【００４０】
次いで、故障診断装置１２は、テスト対象のロジック回路２１とスキャンチェーン２４，２５の各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃを故障シミュレーションする（ステップ５８）。そして、故障診断装置１２は、この故障シミュレーション結果の値を、第２のシミュレーション結果として記憶する。
【００４１】
次いで、故障診断装置１２は、ステップ５８の故障シミュレーションにおいて、スキャンチェーン２４，２５のＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃまで故障が伝搬したか否かを判定する（ステップ５９）。故障が伝搬しない場合（ＮＯ）、故障診断装置１２は、ステップ６２ａに移行する。一方、故障が伝搬した場合（ＹＥＳ）、故障診断装置１２は、ステップ６０に移行する。
【００４２】
次いで、故障診断装置１２は、ステップ５８の故障シミュレーションにおける各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃの信号値を用いて、空間圧縮タイプの圧縮器２６をシミュレーションし、チップ外部端子での出力結果を得る（ステップ６０）。図１（ａ）に示すテスト装置１１は、半導体装置２０の外部端子と電気的に接続され、圧縮器２６の出力信号レベルを観測する。従って、故障診断装置１２は、故障シミュレーションにおける各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃの信号値に基づいて、圧縮器２６から出力されるテスト応答をシミュレーションにより得る。
【００４３】
次いで、故障診断装置１２は、圧縮器２６のシミュレーション結果（「ＳＩＭ結果」と表記）と、テスト装置１１による圧縮器２６の観測結果とが一致するか否かを判定する（ステップ６１）。即ち、故障診断装置１２は、ステップ５４において読み込んだパターンに対応するテスト応答（テスト装置１１の観測結果）を、フェイル情報１４から読み込む。そして、故障診断装置１２は、読み込んだテスト応答と、ステップ６０におけるシミュレーションにより得られた信号レベルと比較し、テスト応答とシミュレーション結果とが一致するか否かを判定する。故障診断装置１２は、シミュレーション結果と観測結果とが一致しない場合（ＮＯ）にステップ６２ａに移行し、シミュレーション結果と観測結果とが一致する場合（ＹＥＳ）にステップ６２ｂに移行する。
【００４４】
ステップ６２ａにおいて、故障診断装置１２は、圧縮器２７の入力値として、上記第１のシミュレーション結果（Ａ）を採用する。一方、ステップ６２ｂにおいて、故障診断装置１２は、圧縮器２７の入力値として、上記第２のシミュレーション結果（Ｂ）を採用する。つまり、故障診断装置１２は、観測結果とシミュレーション結果とが一致しない場合に、論理シミュレーションにより得られた値（Ａ）を採用し、観測結果とシミュレーション結果とが一致する場合に故障シミュレーションにより得られた値（Ｂ）を採用する。
【００４５】
次いで、故障診断装置１２は、上記のステップ６２ａ又はステップ６２ｂにおいて採用した値を用いて、時間圧縮タイプの圧縮器２７の状態をシミュレーションする（ステップ６３）。そして、故障診断装置１２は、シミュレーション結果を、仮定した縮退故障に対応付けて記憶する。そして、故障診断装置１２は、ステップ５３に移行する。
【００４６】
ステップ５３において、故障診断装置１２は、全てのパターンに対する処理を終了したと判定した場合（判定：ＹＥＳ）、図５に示すステップ６４に移行する。
次に、故障診断装置１２は、圧縮器２７のシミュレーション結果と、テスト装置１１による圧縮器２７の観測結果とに基づいて、仮定した縮退故障に対するスコアＫＣを算出する（ステップ６４）。時間圧縮タイプの圧縮器２７に対するシミュレーション結果と一致したテスト装置１１の観測結果の数をＫｍ、圧縮器２７に含まれるＳＦＦの総数をＫｎとし、スコアＫＣを、
ＫＣ＝Ｋｍ÷Ｋｎ×１００
により算出する。シミュレーション結果と観測結果とが全て一致する場合、一致数Ｋｍは、圧縮器２７に含まれるＳＦＦの総数Ｋｎと等しく、スコアＫＣの値は「１００」となる。従って、スコアＫＣの値が「１００」に近いほど、仮定した縮退故障が真である可能性が高い。
【００４７】
次いで、故障診断装置１２は、全ての故障仮定箇所に対する処理を終了したか否かを判定する（ステップ６７）。全ての故障箇所に対する処理を終了していない場合（判定：ＮＯ）、故障診断装置１２は、図４に示すステップ５２に移行する。一方、全ての故障箇所に対する処理を終了した場合（判定ＹＥＳ）、故障診断装置１２は、次のステップ６６に移行する。
【００４８】
次いで、故障診断装置１２は、レポートを作成する（ステップ６６）。即ち、故障診断装置１２は、全ての故障仮定箇所に対応するスコアＫＣを含む故障候補１６を作成する。そして、故障診断装置１２は、処理を終了する。
【００４９】
次に、上記のように構成された故障診断装置１２の作用を説明する。
［ドライブ故障の説明］
先ず、ドライブ故障について説明する。
【００５０】
図７（ａ）に示すように、半導体装置２０には複数本（図において２本）の配線７１，７２が形成され、信号は、配線７１，７２を介して伝達される。これらの配線７１，７２は、ネットリストに従って形成され、モジュール（セルやパッド等）の間を接続する。尚、図７（ａ）において、信号は図の左側から右側に向って伝達されるものとする。
【００５１】
例えば、配線７１において、図７（ｂ）に示すように、オープン故障が発生する、つまり断線する。この場合、配線７１ａから配線７１ｂに信号が伝達されない。そして、この配線７１ｂの信号レベルは、隣接ネット、即ち配線７２との間のカップリング容量７３により、配線７２の信号レベルの影響を受ける。このように、他の配線の影響を受ける故障をドライブ故障と呼ぶ。なお、ドライブ故障は、複数の隣接ネットの影響を、同時に又は何れか一方を支配的に受ける故障、隣接ネットの信号値の組合せ（＝テストパターン）によって振る舞いが変る場合、等を含む。
【００５２】
上記したように、ドライブ故障は、隣接ネットの信号値により、０縮退故障として観測される場合と、１縮退故障として観測される場合がある。
したがって、テスト装置１１において観測されたフェイルが、故障仮定箇所を０縮退故障と仮定したシミュレーション結果と、故障仮定箇所を１縮退故障と仮定したシミュレーション結果の何れかで説明できる場合、この故障仮定箇所が図８（ｂ）に示すドライブ故障モデルであると推定することができる。なお、図８（ａ）は、正常なドライブモデルを示す。つまり、セル８１の出力端子はセル８２の入力端子に接続され、セル８３の出力端子は、セル８４の入力端子に接続されている。これに対し、ドライブ故障モデルは、セル８１の出力端子は未接続であり、セル８２の入力端子はセル８３の出力端子に接続されている。このようなドライブ故障モデルを故障仮定箇所に設定し、故障シミュレーションを実行する。
【００５３】
従って、図９（ａ）に示すように、セル９１，９２間のオープン故障は、図９（ｂ）に示すドライブ故障モデルを設定し、故障シミュレーションを実行する。その結果、図１０に示すように、テスト装置により、ドライブネットの信号値と等しい観測結果（「テスタ（故障）」と表記）が得られる。尚、ドライブネットは、図９（ｂ）に示す配線９３を介して伝達される信号ネットである。
【００５４】
図１０に示すように、テスト装置の観測結果において、正常時の信号値が「０」であってテスタの信号値が「１」の場合、テスタにおいてフェイル（Fail）している。この状態は、故障シミュレーション結果（「故障ＳＩＭ結果」と表記）の１縮退故障（ＳＡ１）を設定した結果「１（故障、ＴＦＳＦ）」により説明される。故障シミュレーションは、設定した１縮退故障により、正常時と異なる信号値をシミュレーション結果として出力する。つまり、１縮退故障により説明される。
【００５５】
同様に、テスト応答「０（Fail）」は、０縮退故障（ＳＡ０）を設定した結果「０（故障、ＴＦＳＦ）」により説明される。故障シミュレーションは、設定した０縮退故障により、正常時と異なる信号値をシミュレーション結果として出力する。つまり、０縮退故障により説明される。
【００５６】
なお、図１０中の「ＴＦＳＦ」は、テスタでフェイル、故障シミュレーションでフェイル（Tester Fail and Simulation Fault）を示す。また、「ＴＰＳＦ」は、テスタでパス、故障シミュレーションでフェイル（Tester Pass and Simulation Fault）を示す。
【００５７】
故障診断処理において、上記の図１０に示すドライブネットを特定することは、困難である。それは、故障仮定箇所毎に、半導体装置２０のレイアウトデータから隣接ネットを抽出しなければならないため、隣接ネットの抽出に非常に多くの時間を要するからである。また、故障仮定箇所は、例えば２つのセルの間に設定されるため、その２つのセルが離間して配置されていると、その間の配線に対する隣接ネットが対象となるため、隣接ネットの抽出に非常に多くの時間を要する。また、故障仮定箇所として設定したネットの配線が、２つの配線に挟まれている場合、それら２つの隣接ネットの何れの信号が支配的か、又は２つの隣接ネットが共に影響するか、不明である。従って、ドライブネットを特定することは、実質的に不可能ということになる。また、複数の隣接ネットの影響を同時に受ける場合や、隣接ネットのテストパターンによって振る舞いが変る場合、不良箇所の特定前に、実際の不良チップで発生している物理現象の完全な予測は不可能である。
【００５８】
［本実施形態の説明］
本実施形態の故障診断装置１２は、空間圧縮回路の故障シミュレーション結果と、空間圧縮回路のテスタ観測結果とに基づいて、圧縮前のテスト応答、つまりスキャンチェーン２４，２５の各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃに保持された信号レベルを推測する。故障診断装置１２は、推測した信号レベルにより時間圧縮回路の状態をシミュレーションする。そして、故障診断装置１２は、時間圧縮回路のシミュレーション結果に基づいて、故障箇所を推定する。
【００５９】
詳述すると、不良箇所の信号は、例えばＣＭＯＳ構造の半導体装置の場合に論理値「０」又はロン塵「１」に落ち着き、１つのテストパターンにおいて、０縮退故障，１縮退故障，故障なしのいずれかとして観測される。従って、故障診断装置１２は、故障仮定箇所に縮退故障を設定した回路情報を故障シミュレーションした結果と、テスト装置１１による観測結果とを比較する。そして、故障診断装置１２は、故障シミュレーション結果と観測結果とが一致した場合、設定した縮退故障が活性化したと判定する。これにより、圧縮器２７（時間圧縮回路）の故障シミュレーションにおいて、不確定な部分を無くすことができる。
【００６０】
つまり、縮退故障を設定した故障シミュレーション結果とテスト装置１１の観測結果が一致している場合、設定した縮退故障は、物理動作、つまり半導体装置２０の動作と一致している。従って、半導体装置２０では、テストパターンに対して、ドライブ故障が活性化している可能性が高いと判定することができる。このため、故障診断装置１２は、圧縮器２７の入力信号レベル、つまり、スキャンチェーン２４，２５の各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃに保持した信号レベルに、故障シミュレーションの結果を採用する。
【００６１】
また、縮退故障を設定した故障シミュレーション結果とテスト装置１１の観測結果が一致していない場合、設定した縮退故障は、物理動作、つまり半導体装置２０の動作と一致していない。従って、半導体装置２０では、テストパターンに対して、ドライブ故障が活性化していない可能性が高いと判定することができる。このため、故障診断装置１２は、圧縮器２７の入力信号レベル、つまり、スキャンチェーン２４，２５の各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃに保持した信号レベルに、論理シミュレーションの結果を採用する。
【００６２】
このように、故障診断装置１２は、縮退故障を設定した故障シミュレーション結果とテスト装置１１の観測結果の比較結果に応じて、論理シミュレーションの結果又は故障シミュレーションの結果を採用する。これにより、隣接ネットを特定することなくドライブ故障の活性化を判定することができ、圧縮器２７（時間圧縮回路）の故障シミュレーションを行うことができる。
【００６３】
故障診断装置１２は、圧縮器２７の故障シミュレーションの結果と、テスト装置１１の観測結果に基づいて、故障仮定箇所のスコアを算出する。そして、故障診断装置１２は、全ての故障仮定箇所のスコアを含むレポートを作成する。スコアは、圧縮器２７のシグネチャの総ビット数に対する、故障シミュレーション結果とテスト装置１１の観測結果とが互いに一致するビットの数の割合である。従って、スコアの値が大きいほど、一致するビット数が多い、つまり、設定した故障仮定箇所が正しい（真）である可能性が高いことを示す。
【００６４】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）半導体装置２０のスキャンチェーン２４，２５はロジック回路２１にテストパターンを供給し、ロジック回路２１の各点における信号レベルを保持する。第１の圧縮器２６は、スキャンチェーン２４，２５の出力信号を、スキャンチェーン２４，２５の幅方向に圧縮する。第２の圧縮器２７は、スキャンチェーン２４，２５の出力信号を、スキャンチェーン２４，２５の長さ方向に圧縮する。
【００６５】
テスト装置１１は、テストパターン１３を半導体装置２０に供給し、各圧縮器２６，２７の出力信号を観測してフェイル情報１４を生成する。
故障診断装置１２は、半導体装置２０の故障仮定箇所に縮退故障を設定し、シミュレーションを実施する。故障診断装置１２は、シミュレーションにより得た圧縮器２６の出力信号と、テスト装置１１により観測した圧縮器２６の出力信号とを比較し、その比較結果に応じて圧縮器２７の入力信号を設定してシミュレーションを実施する。そして、故障診断装置１２は、シミュレーションにより得た圧縮器２７の出力信号と、テスト装置１１により観測した圧縮器２７の出力信号に基づいて、故障仮定箇所のスコアを算出する。
【００６６】
故障仮定箇所のスコアは、その値が大きいほど、シミュレーションにより得た圧縮器２７の出力信号と、テスト装置１１により観測した圧縮器２７の出力信号とが一致する、つまり、故障仮定箇所に設定した縮退故障が正しい（真である）ことを示す。従って、圧縮器２６のみを用いた場合と比べ、故障箇所の候補とする箇所を少なくすることができ、故障箇所推定の精度低下を抑制することができる。また、ドライブ故障に対して、隣接ネットを特定する必要がない。診断時間の長期化を防ぎ、実質的に有効な時間で故障診断を行うことができる。
【００６７】
（２）故障診断装置１２は、縮退故障を設定して故障シミュレーションを実施した結果、故障がＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃまで伝搬しない場合、論理シミュレーションの結果における各ＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃの信号レベルを採用する。一方、故障診断装置１２は、故障がＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃまで伝搬した場合、故障シミュレーションの結果におけるＳＦＦ２４ａ〜２４ｃ，２５ａ〜２５ｃの信号レベルを採用し、圧縮器２６をシミュレーションする。そして、故障診断装置１２は、シミュレーションにより得た圧縮器２６の出力信号と、テスト装置１１により観測した圧縮器２６の出力信号とを比較する。これにより、隣接ネットを特定することなくドライブ故障の活性化を判定することができ、圧縮器２７（時間圧縮回路）の故障シミュレーションを行うことができる。
【００６８】
尚、上記各実施形態は、以下の態様で実施してもよい。
・空間系の圧縮器２６として例えば排他的論理和回路（ＥＯＲ回路）を用いたが、その他の圧縮器を用いても良い。
【００６９】
・時間系の圧縮器２７として例えば多入力線形帰還シフトレジスタ（ＭＩＳＲ）を用いたが、その他の圧縮器、例えば、線形帰還シフトレジスタ（ＬＦＳＲ；Linear Feedback Shift Register）を用いても良い。
【００７０】
・故障診断装置１２が実行する処理を適宜変更してもよい。例えば、上記実施形態では、図４，５に示すように、選択した故障仮定箇所に対して、全てのテストパターンについて圧縮器２７の状態をシミュレーションするようにした。これに対し、１つのテストパターンを選択し、そのテストパターンについて、全ての故障箇所に対して圧縮器２７の状態をシミュレーションするようにしてもよい。
【００７１】
・上記実施形態では、圧縮器２７の入力信号を、スキャンチェーン２４，２５の本数と同じに設定したが、スキャンチェーンの本数よりも少ない数を入力信号の数として設定してもよい。その場合、スキャンチェーンと圧縮器２７との間に、スキャンチェーンの幅方向に圧縮する空間圧縮型の圧縮器（例えばＥＯＲ回路）を挿入し、その圧縮器にて信号を圧縮して圧縮器２７に供給するようにしてもよい。
【００７２】
・半導体装置２０において、スキャンチェーン２４，２５と外部出力端子との間に、他の回路が存在してもよい。例えば、スキャンチェーン２４，２５と圧縮器２６との間にマスク回路が存在する構成としてもよい。
【００７３】
・上記実施形態に対し、スキャンチェーンの本数、各スキャンチェーンに含まれるＳＦＦの数は、適宜変更されてもよい。
・上記実施の形態では、実際の半導体装置２０のテストをテスト装置１１にて行い、半導体装置２０の回路情報１５に基づく故障箇所の推定を故障診断装置１２にて行うようにしたが、これらを１つの装置にて行うようにしてもよい。
【００７４】
・上記実施の形態では、テスト装置１１にテストパターン１３を入力する構成としたが、半導体装置にテストパターンを生成する回路を備える構成としてもよい。また、半導体装置に期待値と出力信号とを比較し、比較結果を出力する回路を備えるようにしてもよい。
【符号の説明】
【００７５】
１１  テスト装置
１２  故障診断装置
２０  半導体装置
２１  ロジック回路
２２  自己テスト回路
２４，２５  スキャンチェーン
２６  第１の圧縮器
２７  第２の圧縮器
【図１】
0005549622.tif 000002
【図２】
0005549622.tif 000003
【図３】
0005549622.tif 000004
【図４】
0005549622.tif 000005
【図５】
0005549622.tif 000006
【図６】
0005549622.tif 000007
【図７】
0005549622.tif 000008
【図８】
0005549622.tif 000009
【図９】
0005549622.tif 000010
【図１０】
0005549622.tif 000011