(57)【特許請求の範囲】
【請求項１】
テストパターンをテストサイクルに同期させて半導体デバイスに入力し、前記半導体デバイスからの出力信号に応じてフェイルが発生したか否かを判定する半導体試験方法において、
前記テストサイクルのうちの任意のサイクルを狭めて前記テストパターンを入力し、前記半導体デバイスにフェイルが発生したか否かを検出し、
前記半導体デバイスがフェイルしたとき、フェイルの発生したテストサイクルで動作を停止し、
前記動作が停止された時の前記半導体デバイスの回路内の信号状態を取得し、
前記動作が停止された時のテストサイクルの箇所と同じテストサイクルの箇所で前記半導体デバイスが正常動作したときの前記半導体デバイスの回路内の信号状態を取得し、
フェイルしたときのテストサイクルの１サイクル前の前記半導体デバイスの回路内の信号状態と、前記正常動作したときの前記半導体デバイスの回路内の信号状態と、前記動作が停止されたときの前記半導体デバイスの回路内の信号状態とを比較し、
不良回路内の不良パスを特定する手順を有することを特徴とする半導体試験方法。
【請求項２】
前記正常動作したときの前記半導体デバイスの回路内の信号状態は、前記半導体デバイスがフェイルしないテストサイクル周期でテストパターンを供給し取得することを特徴とする請求項１記載の半導体試験方法。
【請求項３】
前記正常動作したときの前記半導体デバイスの回路内の信号状態は、前記半導体デバイスの動作シミュレーションを用いて前記半導体デバイスが正常動作した場合に想定される回路内の信号状態を取得することを特徴とする請求項１記載の半導体試験方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は半導体試験方法に関し、特にテストパターンの入力信号を半導体デバイスに供給し、正常動作での内部状態とフェイルしたときの内部状態とを比較することにより半導体デバイスの不良回路箇所を特定する半導体試験方法に関する。
【０００２】
【従来の技術】
現在、半導体デバイスは大規模、複雑化してきた。このような状況に合わせテストも困難になってきており、テストの容易化を行うことが種々考えられている。
【０００３】
従来において、半導体デバイスに一定の動作周波数でテストパターンを入力し、このテストパターンにより出力される期待値と実際の出力されるデータとを比較し、これらが一致するか否かにより半導体デバイスの内部回路の正常、不良を判断する。
【０００４】
【発明が解決しようとする課題】
上記の半導体試験方法で不良箇所を特定するには、テストパターンが半導体デバイスの回路内を伝播した後の、出力されたデータの情報から類推して行わなければならない。テストパターンは、半導体デバイスの回路内を伝播する際拡散されるため、伝播した後のデータからでは、不良箇所を特定することは困難である。
【０００５】
本発明はこのような点に鑑みてなされたものであり、半導体デバイスの不良箇所を容易に特定することができる半導体試験方法を提供することを目的とする。
【０００６】
【課題を解決するための手段】
本発明によれば、テストパターンをテストサイクルに同期させて半導体デバイスに入力し、前記半導体デバイスからの出力信号に応じてフェイルが発生したか否かを判定する半導体試験方法において、前記テストサイクルのうちの任意のサイクルを狭めて前記テストパターンを入力し、前記半導体デバイスにフェイルが発生したか否かを検出し、前記半導体デバイスがフェイルしたとき、フェイルの発生したテストサイクルで動作を停止し、前記動作が停止された時の前記半導体デバイスの回路内の信号状態を取得し、前記動作が停止された時のテストサイクルの箇所と同じテストサイクルの箇所で前記半導体デバイスが正常動作したときの前記半導体デバイスの回路内の信号状態を取得し、フェイルしたときのテストサイクルの１サイクル前の前記半導体デバイスの回路内の信号状態と、前記正常動作したときの前記半導体デバイスの回路内の信号状態と、前記動作が停止されたときの前記半導体デバイスの回路内の信号状態とを比較し、不良回路内の不良パスを特定する手順を有することを特徴とする半導体試験方法が提供される。
【０００７】
上記方法によれば、フェイルしたときのテストサイクルの１サイクル前の半導体デバイスの回路内の信号状態と、正常動作したときの半導体デバイスの回路内の信号状態と、動作が停止されたときの半導体デバイスの回路内の信号状態とを比較することにより不良パスを特定する。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は本発明の半導体試験方法の手順の流れを示した図である。
【０００９】
まず、半導体デバイスにテストパターンをテストサイクルに同期させ任意のテストサイクルの周波数を狭めて半導体デバイスに入力する（Ｓ１）。そして入力されたテストパターンの出力データの期待値と、実際に半導体デバイスが出力した出力データとを比較しフェイルが発生しているか否かを検出する（Ｓ２）。フェイルが発生していない場合は、次のテストサイクルのテストパターンを入力する（Ｓ１）。
【００１０】
あるテストサイクルで半導体デバイスがフェイルした時、テストパターンの入力、半導体デバイスの動作を停止し、フェイルした半導体デバイスの回路内の信号状態を固定する（Ｓ３）。
【００１１】
固定された状態の半導体デバイスの回路内の信号状態を取得する（Ｓ４）。
次に半導体デバイスが正常動作するテストパターンを入力する。このときテストサイクルは、フェイルにより停止したテストサイクルの箇所と同じテストサイクルの箇所で停止させる。ここでテストサイクルの箇所とは、例えばテストパターンは１〜ｎ個のデータからなり１からｎまで順番に半導体デバイスに入力され、この順番の番号を示す。続いて、半導体デバイスの回路内の信号状態を取得する（Ｓ５）。
【００１２】
次にフェイルにおける半導体デバイスの回路内の信号状態と、正常動作における半導体デバイスの回路内の信号状態を比較する。比較して異なった信号状態の箇所により半導体デバイスの内部回路の不良箇所を特定する（Ｓ６）。
【００１３】
次に本発明の実施の形態の一例について説明する。
図２は、半導体デバイスの回路図である。半導体デバイス１は、フリップフロップＦ／Ｆ１〜１０と、ポートＩ／Ｏ１〜９と、インバータＺ１〜３と、ＡＮＤ回路Ｚ４と、バッファＺ５〜１３と、端子Ｓｙｓｔｅｍ＿ＣＬＫ、Ｓｃａｎ＿ＣＬＫから構成される。また、回路２はＡＮＤ回路Ｚ４とバッファＺ１０からなる部分を示し、パス３はＺ１０を含みＺ４までの配線部分を示す。
【００１４】
端子Ｓｙｓｔｅｍ＿ＣＬＫ、Ｓｃａｎ＿ＣＬＫは、クロックが入力される。このクロックは、半導体デバイス１の内部回路のフリップフロップＦ／Ｆ１〜１０に供給される。
【００１５】
ポートＩ／Ｏ１〜３は、テストパターンが入力される。
ポートＩ／Ｏ４は、半導体デバイス１の内部状態を示すポートである。フリップフロップＦ／Ｆ１〜３のデータが端子Ｓｃａｎ＿ＣＬＫのクロックに同期して順次出力される。
【００１６】
ポートＩ／Ｏ５は、半導体デバイス１の内部状態を示すポートである。フリップフロップＦ／Ｆ４〜６のデータが端子Ｓｃａｎ＿ＣＬＫのクロックに同期して順次出力される。
【００１７】
ポートＩ／Ｏ６は、半導体デバイス１の内部状態を示すポートである。フリップフロップＦ／Ｆ７、８のデータが端子Ｓｃａｎ＿ＣＬＫのクロックに同期して順次出力される。
【００１８】
ポートＩ／Ｏ７は、半導体デバイス１の内部状態を示すポートである。フリップフロップＦ／Ｆ９、１０のデータが端子Ｓｃａｎ＿ＣＬＫのクロックに同期して順次出力される。
【００１９】
ポートＩ／Ｏ８、９は、テストパターンが半導体デバイス１の内部の回路を伝播してきたデータを出力するポートである。
フリップフロップＦ／Ｆ１〜１０は、端子Ｓｙｓｔｅｍ＿ＣＬＫに入力されるクロックに同期してＤａｔａ＿Ｉｎ側のデータを入力し、同時に保存していたデータをＤａｔａ＿Ｏｕｔ側に出力する。また、フリップフロップＦ／Ｆ１〜１０は、端子Ｓｃａｎ＿ＣＬＫに入力されたクロックに同期してＳｃａｎ＿Ｉｎ側のデータを入力、保存し、保存していたデータをＳｃａｎ＿Ｏｕｔ側に出力する。
【００２０】
インバータＺ１〜３は、データの論理を反転し出力する。
ＡＮＤ回路Ｚ４は、入力データのＡＮＤ演算を行い出力する。
バッファＺ５〜１３は、入力されたデータをドライブし、論理はそのままの状態で出力する。
【００２１】
次に、上記の半導体デバイス１の動作について説明する。
まず、テストパターンは、ポートＩ／Ｏ１〜３に入力される。入力されたデータは、端子Ｓｙｓｔｅｍ＿ＣＬＫに入力されるクロックに同期してフリップフロップＦ／Ｆ１〜３に順次入力される。
【００２２】
同時に、フリップフロップＦ／Ｆ１〜３のデータは、フリップフロップＦ／Ｆ４〜６へ遷移する。ただし、フリップフロップＦ／Ｆ１の論理は、インバータＺ１により逆転された状態で、フリップフロップＦ／Ｆ２の論理はバッファＺ５を通過しそのままの状態で、フリップフロップＦ／Ｆ３の論理は、インバータＺ２、３を通過するためそのままの状態で遷移する。
【００２３】
また同時に、フリップフロップＦ／Ｆ４のデータは、バッファＺ６〜９を通過し、論理はそのままの状態でフリップフロップＦ／Ｆ７へ遷移する。フリップフロップＦ／Ｆ５のデータはバッファＺ１０を通過し、フリップフロップＦ／Ｆ６のデータとＡＮＤ回路Ｚ４によりＡＮＤ演算され、フリップフロップＦ／Ｆ８へ遷移する。
【００２４】
また同時に、フリップフロップＦ／Ｆ７のデータは、バッファＺ１１、１２を通過し、論理はそのままの状態でフリップフロップＦ／Ｆ９へ遷移する。フリップフロップＦ／Ｆ８のデータは、バッファＺ１３を通過し、論理はそのままの状態でフリップフロップＦ／Ｆ１０へ遷移する。フリップフロップＦ／Ｆ７、８のデータは、バッファＺ１１、１２、そしてＺ１３を通過し、論理はそのままの状態でフリップフロップＦ／Ｆ９、１０へと遷移する。
【００２５】
さらに同時に、フリップフロップＦ／Ｆ９、１０のデータは、ポートＩ／Ｏ８、９に遷移する。
以上の動作を繰り返すと、ポートＩ／Ｏ１〜３に入力されたテストパターンは、ポートＩ／Ｏ８、９へと次々に遷移していく。また、ある遷移状態のとき、端子Ｓｃａｎ＿ＣＬＫにクロックを入力すると、このクロックに同期して、フリップフロップＦ／Ｆ１、４、７、９の状態がポートＩ／Ｏ４〜７へ、フリップフロップＦ／Ｆ２、５、８、１０の状態がフリップフロップＦ／Ｆ１、４、７、９へ、フリップフロップＦ／Ｆ３、６の状態がフリップフロップＦ／Ｆ２、５へ遷移する。順次端子Ｓｃａｎ＿ＣＬＫにクロックを与えるとフリップフロップＦ／Ｆ１〜１０の状態が順次Ｉ／Ｏ４〜７に出力される。
【００２６】
以上の動作から半導体デバイス１の内部の状態を知ることができる。
次にテストパターンを半導体デバイス１に入力したときの動作について説明する。
【００２７】
図３は半導体デバイスに入力するテストパターンのデータを示した図である。テストパターンのデータ４の枠５内の０，１は、テストパターンとして半導体デバイス１に入力する。
【００２８】
入力＃１〜３は、ポートＩ／Ｏ１〜３に対応する。
テストサイクル１〜８は端子Ｓｙｓｔｅｍ＿ＣＬＫに入力されるクロックに従ってポートＩ／Ｏ１〜３に入力されるテストパターンの順番を示す。
【００２９】
クロックレートは、順次入力されるテストパターンのクロック動作周波数である。このクロック動作周波数は、半導体デバイス１の端子Ｓｙｓｔｅｍ＿ＣＬＫに入力される。
【００３０】
枠６内のＨ、Ｌは出力データで、半導体デバイス１に入力されたテストパターンがポートＩ／Ｏ８、９から出力される状態を示す。
出力＃Ａ，ＢはポートＩ／Ｏ８、９に対応する。
【００３１】
出力サイクル１〜８は、テストパターンの出力値の順番を示す。
テストサイクル１から順番にテストパターンのデータ４のテストパターンが半導体デバイス１に入力されていく。入力されるテストパターンは、半導体デバイス１の回路を端子Ｓｙｓｔｅｍ＿ＣＬＫに入力されるクロックに同期し、論理状態を遷移しながら出力される。半導体デバイス１の入力から出力までフリップフロップが４段あるためテストサイクル５から出力データが得られる。
【００３２】
以上より入力したテストパターンから出力されるデータと、予め規定されている出力データの期待値を比較することで半導体デバイス１がフェイルであるか否かを判断できる。
【００３３】
次にフェイルが生じる半導体デバイス１で回路のどの箇所が不良であるかを特定する方法について述べる。
図４は順次クロックレートを狭めていくテストパターンのデータの内容を示す図である。テストパターンのデータ７の枠８の０、１は、テストパターンである。
【００３４】
入力＃１〜３は、ポートＩ／Ｏ１〜３に対応する。
テストサイクル１〜８は端子Ｓｙｓｔｅｍ＿ＣＬＫに入力されるクロックに従ってポートＩ／Ｏ１〜３に入力されるテストパターンの順番を示す。
【００３５】
クロックレートは、順次入力されるテストパターンのクロック動作周波数である。このクロック動作周波数は、半導体デバイス１の端子Ｓｙｓｔｅｍ＿ＣＬＫに入力される。
【００３６】
枠９内のＨ、Ｌは出力データで、半導体デバイス１に入力されたテストパターンがポートＩ／Ｏ８、９から出力される状態を示す。
出力＃Ａ，ＢはポートＩ／Ｏ８、９に対応する。
【００３７】
出力サイクル１〜８は、テストパターンの出力値の順番を示す。
１回目のテストでは、テストサイクル１に６ｎＳｅｃのクロックレートを端子Ｓｙｓｔｅｍ＿ＣＬＫに入力し、残りのテストサイクル２〜８は８ｎＳｅｃのクロックレートを入力する。２回目のテストでは、テストサイクル２に６ｎＳｅｃのクロックレートを端子Ｓｙｓｔｅｍ＿ＣＬＫに入力し、残りのテストサイクル１および３〜８は８ｎＳｅｃのクロックレートを入力する。このように各テストの回毎にテストパターンのクロックレート６ｎＳｅｃを順次後のテストサイクルにずらしていく。
【００３８】
図５は半導体デバイスの回路内の信号状態を示す図である。（ａ）はフリップフロップＦ／Ｆ１〜１０の対応図であり、（ｂ）はフェイル時の信号状態でありログ１、（ｃ）は正常動作時の信号状態でありログ２とする。図５（ｂ）、（ｃ）の０、１の値は、（ａ）のフリップフロップＦ／Ｆ１〜１０の状態に対応する。
【００３９】
まず、半導体デバイス１にテストパターンのデータ４のテストパターンをクロックレート６ｎＳｅｃで試験を行った結果、出力サイクル７でフェイルが生じるものとする。また、半導体デバイス１は、テストパターンのデータ４のテストパターンをクロックレート８ｎＳｅｃで試験を行った場合フェイルを生じないものとする。
【００４０】
テストパターンのデータ７のテストパターンを半導体デバイス１に入力する。８回目のテストの８サイクル目でフェイルが生じたとする。同時に半導体デバイス１の動作を停止させる。このときの半導体デバイス１の回路内の信号状態を端子Ｓｃａｎ＿ＣＬＫにクロックを入力して読み出す。このようにしてフェイル時の半導体デバイス１の回路内の信号状態ログ１を取得する。
【００４１】
次にテストサイクルが８サイクル目のときにフェイルしない状態の半導体デバイス１の回路内の信号状態を取得する。
取得する１つの方法として、半導体デバイス１がフェイルしない条件で再試験をする。テストパターンのデータ４のテストパターンをクロックレート８ｎＳｅｃで入力する。このときテストパターンのデータ７のテストパターンを入力し、フェイルを生じた同じテストサイクルの数（８サイクル目）で半導体デバイス１の動作を停止し、半導体デバイス１の回路内の信号状態を端子Ｓｃａｎ＿ＣＬＫにクロックを入力して読み出す。
【００４２】
他の方法として、回路設計時等に用いたシミュレーションによりフェイルを生じたテストサイクルでの回路内部状態をシミュレーションする。
上記いずれかの方法で得た半導体デバイス１の正常動作時の回路内の信号状態をログ２とする。
【００４３】
以上からログ１、ログ２を比較するとフリップフロップＦ／Ｆ８の値が異なっている。よって、回路２の不良により誤ったデータがフリップフロップＦ／Ｆ８に出力され、不良回路の箇所を特定できる。
【００４４】
次に回路の不良パスを特定する方法を説明する。
まずフェイルを生じたテストサイクルの１サイクル前の回路内の信号状態を取得する。
【００４５】
情報を得る１つの方法として、不良回路がフェイルしない条件で半導体デバイス１を再試験する。フェイルを生じたテストサイクルの１サイクル前（７サイクル目）でテストパターンを停止する。このときの半導体デバイス１の回路内の信号状態を端子Ｓｃａｎ＿ＣＬＫにクロックを入力して読み出す。
【００４６】
他の方法として、回路設計時等に用いたシミュレーションによりフェイルを生じたテストサイクルの１サイクル前での回路内の信号状態をシミュレーションする。
【００４７】
上記いずれかの方法で得た信号状態とログ１，ログ２を比較することで、半導体デバイス１の回路２内部のパス３を特定することができる。
以上より特別な半導体デバイスの解析ツールがなくても、スキャンフリップフロップを有する回路、通常の測定テストパターンがあれば測定結果の比較のみで解析が完了するため、大規模回路の不良解析をシミュレーションなしで終えることが可能である。
【００４８】
また、短時間、低コストで解析ができる。
さらに、解析する回路の内部理論を知ることなく、不良箇所、原因の特定が可能である。
【００４９】
【発明の効果】
以上説明したように本発明では、フェイルしたときのテストサイクルの１サイクル前の半導体デバイスの回路内の信号状態と、正常動作したときの半導体デバイスの回路内の信号状態と、動作が停止されたときの半導体デバイスの回路内の信号状態とを比較するので、類推することなく容易に不良パスを特定することができる。
【図面の簡単な説明】
【図１】本発明の半導体試験方法の手順の流れを示した図である。
【図２】半導体デバイスの回路図である。
【図３】半導体デバイスに入力するテストパターンのデータを示した図である。
【図４】順次クロックレートを狭めていくテストパターンのデータの内容を示した図である。
【図５】半導体デバイスの回路内の信号状態を示す図で、（ａ）はフリップフロップＦ／Ｆ１〜１０の対応図であり、（ｂ）はフェイル時の信号状態、（ｃ）は正常動作時の信号状態を示す。
【符号の説明】
１…半導体デバイス、２…回路、３…パス、４…テストパターンのデータ、５、６…枠、７…テストパターンのデータ、８、９…枠
【図１】
0004644966.tif 000002
【図２】
0004644966.tif 000003
【図３】
0004644966.tif 000004
【図４】
0004644966.tif 000005
【図５】
0004644966.tif 000006