(57)【特許請求の範囲】
【請求項１】
それぞれが組合せ論理素子を含む第１の論理回路及び第２の論理回路と、
入力側が前記第１の論理回路の出力側と接続され出力側が前記第２の論理回路の入力側と接続された第１のスキャンレジスタと、
入力側が前記第２の論理回路の出力側と接続された第２のスキャンレジスタとを備え、
前記第１のスキャンレジスタと前記第２のスキャンレジスタとの間の信号経路に対して、１個のキャプチャクロックパルスを用いたスキャンテスト方式によって、前記第２のスキャンレジスタが保持するデータのデータ保持エラーを前記第２のスキャンレジスタの出力データに基づいて検査するためのテストパターンを生成し、
前記キャプチャクロックパルスの直前のクロックパルスと該キャプチャクロックパルスとの間の時間間隔は、実動作時のクロックパルス同士における時間間隔よりも大きく設定し、
前記第１のスキャンレジスタにその出力値として第１の設定値を設定する工程と、
前記第１の設定値に基づいて、前記第１の論理回路又は前記第２の論理回路に対して含意操作を行なうことにより第１のテストパターンを生成する工程と、
前記第１のスキャンレジスタにその入力値として前記第１の設定値を反転してなる第２の設定値を設定する工程と、
前記第２の設定値に基づいて、前記第１の論理回路又は前記第２の論理回路に対して含意操作を行なうことにより第２のテストパターンを生成する工程と、
同期用クロック信号の一のパルスが入力される直前において前記信号経路が活性化されるように前記第１のテストパターン及び第２のテストパターンを併合することにより、一のスキャンテストパターンを生成する工程とを備えていることを特徴とする半導体集積回路のテストパターン生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、製造時に生じた半導体集積回路の遅延異常をスキャン方式を用いて検査するためのテストパターンを生成する半導体集積回路のテストパターン生成方法、及び生成されたテストパターンを用いる半導体集積回路の検査方法に関する。
【０００２】
【従来の技術】
近年の半導体プロセスの微細化技術の急速な進歩により、半導体集積回路の大規模化及び高機能化が急激に進み、これに伴って半導体集積回路の検査が一層困難となってきている。この問題に対処するため、半導体集積回路の検査容易化手法としてスキャン方式等が普及し、縮退故障モデルとして表わされる故障は効率的に検査できるようになっきている。縮退故障モデルにより仮定された故障を検出する場合は、故障検出能力が同期用のクロック信号の周波数に依存しないため、スキャンテストを実施する際には、一般に、実際の動作速度よりも遅いクロック周波数を用いて行なわれている。
【０００３】
しかしながら、半導体プロセスの微細化の進展と共に、プロセスのばらつきが顕在化し、従来のスキャン方式を用いた低クロック周波数による検査だけでは検査品質を十分に保証できなくなり、実動作時と同一のクロック周波数を用いるパスディレイテストのような、信号経路（パス）上の信号遅延を考慮した検査が必要とされるようになってきている。ここで、従来のパスディレイテスト技術は特開平第９−２６９９５９号公報等にも開示されている。
【０００４】
従来のパスディレイテストは、製造上の欠陥により、信号経路上の遅延値が増大する故障モデル、すなわち、正常であれば１クロック周期内で信号経路の終端に到達すべき信号が、欠陥により１クロック周期内で到達し得なくなるという故障モデルを対象として行なわれている。
【０００５】
【発明が解決しようとする課題】
しかしながら、前記従来のパスディレイテストは、製造上の欠陥により、逆に遅延値が小さくなり過ぎるという故障（以下、過小遅延と呼ぶ。）モデルに対しては行なわれていない。
【０００６】
同期式の半導体集積回路においては、製造上の欠陥が過小遅延として顕在化する要因として以下の２点が挙げられる。
（１）フリップフロップ間の信号経路上の信号が設計値よりも早く伝搬する。
（２）各フリップフロップに供給されるクロック配線のスキュー値がばらつく。
これらの現象が生じると、フリップフロップ間の信号経路がホールドエラー（データ保持エラー）という誤動作を起こす。
【０００７】
以下、これら２つの要因を図面に基づいて説明する。
【０００８】
図７は検査対象とする半導体集積回路の部分回路を表わしている。図７に示すように、それぞれがデータ入力端子Ｄ、データ出力端子Ｑ及びクロック入力端子ＣＫを有する第１のフリップフロップ１０１と第２のフリップフロップ１０２との間には、少なくとも１つの組合せ論理素子を含む組合せ回路１０３が配置されている。第１のフリップフロップ１０１と第２のフリップフロップ１０２とを結ぶ複数の信号経路のうちの１つを１０４として表わす。第１のフリップフロップ１０１のクロック入力端子ＣＫは、第１のクロックツリーバッファ１０５を介して第１のクロック配線１０６と接続され、第２のフリップフロップ１０２のクロック入力端子ＣＫは、第２のクロックツリーバッファ１０７を介して第２のクロック配線１０８と接続されている。
【０００９】
図８（ａ）〜図８（ｃ）は図７の半導体集積回路における動作の信号波形であって、図８（ａ）は信号経路１０４の遅延の程度が正常範囲にある場合を示し、図８（ｂ）は信号経路１０４に対して信号が設計値と比べて早く伝搬してしまう過小遅延による故障が生じた場合を示し、図８（ｃ）は第１のクロック配線１０６と第２のクロック配線１０８との間で遅延値のばらつきによるスキューが発生している場合を示している。図８（ａ）に示すように、設計時においては、信号経路１０４上の遅延値は予想される最速の場合でも、第２のフリップフロップ１０２のホールドマージンＡを満たすように考慮して設計される。このとき、第１のクロック配線１０６及び第２のクロック配線１０８上のクロック信号のスキュー量が０又はほぼ０となるように、第１のクロックツリーバッファ１０６及び第２のクロックツリーバッファ１０７に対してそのサイズ又は配置等の調整を行なう。
【００１０】
しかしながら、半導体集積回路の製造工程によるばらつき又は欠陥等によって、図８（ｂ）に示すように、要因（１）であって、信号経路１０４上の信号が設計時の遅延値以下の速度で伝搬した場合は、第２のフリップフロップ１０２にホールドエラーが生じ、該第２のフリップフロップ１０２の誤動作の原因となる。また、信号経路１０４上の遅延値が正常な場合でも、第１のクロックツリーバッファ１０５、第２のクロックツリーバッファ１０７、第１のクロック配線１０６又は第２のクロック配線１０８の製造上の欠陥やばらつきによって、図８（ｃ）に示すように、要因（２）であって、第１のクロック配線１０６又は第２のクロック配線１０８上のクロック信号にスキューが生じた場合には、第２のフリップフロップ１０２が誤って第１のフリップフロップ１０１の変化後の信号を取り込んでしまうため、誤動作を生じる。
【００１１】
従って、各信号経路に対して製造上の欠陥による誤動作が生じた場合には、信号経路の故障を検出する検査と、該検査に用いるテストパターンの生成が必要となる。
【００１２】
本発明は、スキャン設計された半導体集積回路に対して、過小遅延の検査に必要なテストパターンを生成できるようにすると共に、過小遅延に対する検査を行なえるようにすることを目的とする。
【００１３】
【課題を解決するための手段】
前記の目的を達成するため、本発明に係る第１の半導体集積回路のテストパターン生成方法は、組合せ論理素子を含む論理回路と、出力側が論理回路の入力側と接続された第１の順序回路と、入力側が論理回路の出力側と接続された第２の順序回路とを備え、第１の順序回路と第２の順序回路との間の信号経路に対して、第２の順序回路が保持するデータのデータ保持エラーを第２の順序回路の出力データに基づいて検査するためのテストパターンを生成する半導体集積回路のテストパターン生成方法を対象とし、同期用クロック信号の一のパルスが入力される直前及び直後において信号経路が活性化されるように、第１の順序回路に対して、信号経路の第１の設定値を設定することにより第１のテストパターンを生成すると共に、第１の順序回路に対して第１の設定値を反転してなる第２の設定値を設定することにより第２のテストパターンを生成する。
【００１４】
第１の半導体集積回路のテストパターン生成方法によると、同期用クロック信号の一のパルスが入力される直前及び直後において信号経路が活性化されるように、第１の順序回路に対して、信号経路における第１の設定値を設定することにより第１のテストパターンを生成すると共に、第１の順序回路に対して第１の設定値を反転してなる第２の設定値を設定することにより第２のテストパターンを生成するため、検査対象の信号経路上に過小遅延によるデータ保持エラーに起因する誤動作が発生した場合の検査を行なえるようになる。
【００１５】
本発明に係る第２の半導体集積回路のテストパターン生成方法は、それぞれが組合せ論理素子を含む第１の論理回路及び第２の論理回路と、入力側が第１の論理回路の出力側と接続され出力側が第２の論理回路の入力側と接続された第１のスキャンレジスタと、入力側が第２の論理回路の出力側と接続された第２のスキャンレジスタとを備え、第１のスキャンレジスタと第２のスキャンレジスタとの間の信号経路に対して、１個のキャプチャクロックパルスを用いたスキャンテスト方式によって、第２のスキャンレジスタが保持するデータのデータ保持エラーを第２のスキャンレジスタの出力データに基づいて検査するためのテストパターンを生成する半導体集積回路のテストパターン生成方を対象とし、第１のスキャンレジスタにその出力値として第１の設定値を設定する工程と、第１の設定値に基づいて、第１の論理回路又は第２の論理回路に対して含意操作を行なうことにより第１のテストパターンを生成する工程と、第１のスキャンレジスタにその入力値として第１の設定値を反転してなる第２の設定値を設定する工程と、  第２の設定値に基づいて、第１の論理回路又は第２の論理回路に対して含意操作を行なうことにより第２のテストパターンを生成する工程と、同期用クロック信号の一のパルスが入力される直前において信号経路が活性化されるように第１のテストパターン及び第２のテストパターンを併合することにより、一のスキャンテストパターンを生成する工程をと備えている。
【００１６】
第２の半導体集積回路のテストパターン生成方法によると、第１のスキャンレジスタの出力値として設定された第１の設定値に基づいて、第１のスキャンレジスタと接続される第１の論理回路又は第２の論理回路に対して含意操作を行なうことにより第１のテストパターンを生成する。続いて、第１のスキャンレジスタの入力値として設定され第１の設定値の反転値からなる第２の設定値に基づいて、第１の論理回路又は第２の論理回路に対して含意操作を行なうことにより第２のテストパターンを生成する。続いて、同期用クロック信号の一のパルスが入力される直前及び直後において検査対象の信号経路が活性化されるように第１及び第２のテストパターンを併合して一のスキャンテストパターンを生成するため、スキャン動作でなく通常動作として同期用クロック信号の一パルスを与えると、該一パルスの前後で信号の論理に矛盾が生じない。従って、検査対象の信号経路上に過小遅延によるデータ保持エラーに起因する誤動作が発生した場合の検査を行なえるようになる。
【００１９】
【発明の実施の形態】
（第１の実施形態）
本発明の第１の実施形態について図面を参照しながら説明する。
【００２０】
図１は本発明の第１の実施形態に係る半導体集積回路のテストパターン生成方法の概略フローを示している。図１に示すように、パス判定工程ＳＴ０１において、半導体集積回路に含まれる複数の信号経路（以下、パスと呼ぶ。）のうちに未処理の検査対象とするパスが存在するか否かを判定する。
【００２１】
次に、パス選択工程ＳＴ０２において、未処理の検査対象パスが存在すれば、それを選択する。
【００２２】
次に、２パターン生成試行工程ＳＴ０３において、検査対象パスの検査に必要な初期化パターン及び遷移パターンの生成を試みる。
【００２３】
次に、パターン生成判定工程ＳＴ０４において、初期化パターン及び遷移パターンの生成が成功したか否かを判定し、成功であれば、次のスキャンパターン生成工程ＳＴ０５に進む。
【００２４】
次に、残りパターン判定工程ＳＴ０６において、別の初期化パターン及び遷移パターンの生成が可能と判定されれば、２パターン生成試行工程ＳＴ０３から繰り返す。
【００２５】
次に、別の初期化パターン及び遷移パターンの生成が不可能であれば、生成不能決定工程ＳＴ０７において、テストパターンの生成が不可能であることを決定し、パス判定工程ＳＴ０１から繰り返す。
【００２６】
また、スキャンパターン生成工程ＳＴ０５においては、生成された初期化パターン及び遷移パターンをスキャンパターンに変換する。
【００２７】
図２は本実施形態に係る２パターン生成試行工程ＳＴ０３の詳細なフローを表わしている。図２に示すように、ステップＳＴ３０〜ＳＴ３３において初期化パターンを生成し、ステップＳＴ３４〜ＳＴ３８においてパスの初期値を変更して、すなわち２値論理の場合には、初期値が０の場合には１に、初期値が１の場合には０に遷移させた遷移パターンを生成する。
【００２８】
まず、ステップＳＴ３０において、検査対象パスの始点であるフリップフロップの出力値として０又は１を設定する。
【００２９】
次に、ステップＳＴ３１において、検査対象パス上に位置する複数の入力端子を持つ各論理素子（ゲート）に対して、検査対象パスに含まれない入力端子に出力結果の論理値が変更されることがない非制御値を設定する。
【００３０】
次に、ステップＳＴ３２において、ステップＳＴ３１により設定された各ゲートの入力値に基づいて、入力側へ含意操作を行なう。ここで、含意操作とは、設定値と矛盾しない論理値となるように、上流側の論理値を決定する操作をいう。
【００３１】
次に、ステップＳＴ３３において、ステップＳＴ３０の結果とステップ３２の結果との基づいて、始点となるフリップフロップと終点となるフリップフロップとからなるスキャンパスの第１のテストパターンとしての初期化パターンを決定する。ここで、スキャンパス上の始点と終点との間には他の１つ以上のフリップフロップが介在していてもよい。
【００３２】
次に、ステップＳＴ３４において、始点となるフリップフロップの入力値としてステップＳＴ３０における設定値の反転値を設定する。
【００３３】
次に、ステップＳＴ３５において、始点となるフリップフロップを除くスキャンパスに対して、初期化パターンを設定する。
【００３４】
次に、ステップＳＴ３６において、ステップＳＴ３４及びＳＴ３５により設定された各ゲートの入力端子の値に基づいて、入力側へ含意操作を行なう。
【００３５】
次に、ステップＳＴ３７において、ステップＳＴ３６の含意操作が成功したか失敗したかを判定し、成功であるならば、次のステップＳＴ３８において、第２のテストパターンとしての遷移パターンを確定する。失敗であるならば、次のステップＳＴ３９において、テストパターンが生成できないことを確定する。
【００３６】
図３は本実施形態に係る半導体集積回路のテストパターン生成方法及び検査方法の対象とする半導体集積回路装置の一例を示している。図３に示すように、半導体集積回路装置１０には、外部から半導体集積回路装置１０をスキャンテスト状態とするスキャンイネーブル信号ＳＥが入力されるスキャンイネーブル信号入力端子１１、スキャンテスト用のテストパターンが入力されるスキャンイン信号入力端子１２、半導体集積回路装置の同期用クロック信号ＣＫが入力されるクロック信号入力端子１３、及び通常動作時の出力端子を兼ねるスキャンアウト信号出力端子１４を備えている。
【００３７】
半導体集積回路装置１０には、例えば、通常動作時には、同期用クロック信号ＣＫに基づいてデータをラッチする一方、スキャンテスト時には、互いにシフトレジスタを構成してスキャンパスを形成する順序回路としての７つのスキャンフリップフロップ２１〜２７を有している。スキャンフリップフロップ２１〜２７には、スキャンイン信号ＳＩが入力されるＳＩ端子と、通常動作時のデータが入力されるＤ端子と、同期用クロック信号ＣＫが入力されるＣＫ端子と、スキャンイネーブル信号ＳＥが入力されるＳＥ端子と、データを出力するＱ端子とがそれぞれ設けられている。
【００３８】
図４はスキャンフリップフロップの詳細な構成例を示している。図４において、図３に示す構成要素と同一の構成要素には同一の符号を付すことにより説明を省略する。図４に示すように、スキャンフリップフロップ２１は、Ｄ0 端子、ＣＫ0 端子及びＱ0 端子を有するフリップフロップ２１０と、スキャンフリップフロップ２１への入力データＤとスキャンイン信号ＳＩとをスキャンイネーブルＳＥ信号により選択してフリップフロップ２１０のＤ0 端子に出力するセレクタ２１１とから構成されている。フリップフロップ２１０はＣＫ0 端子に入力された同期用クロック信号ＣＫに同期して、Ｄ0 端子に与えられたデータを取り込んで、Ｑ0 端子から出力する。セレクタ２１１は、ＳＥ端子の信号が０（通常動作モード）のときにＤ端子の信号を選択して出力し、ＳＥ端子の信号が１（スキャン動作モード）のときにＳＩ端子の信号を選択して出力する。他のスキャンフリップフロップ２２〜２７も図４に示す回路構成を持つ。
【００３９】
第１のスキャンフリップフロップ２１は、ＳＩ端子がスキャンイン信号入力端子１２と接続され、ＣＫ端子がクロック信号入力端子１３と接続され、ＳＥ端子がスキャンイネーブル信号入力端子１１と接続されている。第２のスキャンフリップフロップ２２は、ＳＩ端子が第１のスキャンフリップフロップ２１のＱ端子と接続され、同様に第３のスキャンフリップフロップ２３の出力データは、順次第４、第５、第６及び第７のスキャンフリップフロップ２４〜２７に入力可能なように接続されされている。また、第２〜第７の各スキャンフリップフロップ２２〜２７のいずれにも、スキャンイネーブル信号ＳＥ及び同期用クロック信号ＣＫが並列に入力されている。
【００４０】
第１のスキャンフリップフロップ２１と第４のスキャンフリップフロップ２４との間には、組合せ論理素子である第１のＯＲゲート３１が配置され、第２のスキャンフリップフロップ２２と第５のスキャンフリップフロップ２５との間には、組合せ論理素子であるＮＯＲゲート３２が配置され、第３のスキャンフリップフロップ２３と第６のスキャンフリップフロップ２６との間には、組合せ論理素子である第１のＡＮＤゲート３３が配置され、第４のスキャンフリップフロップ２４と第７のスキャンフリップフロップ２７との間には第２のＡＮＤゲート３４が配置され、第５のスキャンフリップフロップ２５と第７のスキャンフリップフロップ２７との間には第２のＯＲゲート３５が配置されている。
【００４１】
第１のＯＲゲート３１は、一の入力端子が第１のスキャンフリップフロップ２１のＱ端子と接続され、他の入力端子が第２のスキャンフリップフロップ２２のＱ端子と接続され、出力端子が第４のスキャンフリップフロップ２４のＤ端子と接続されている。
【００４２】
ＮＯＲゲート３２は、一の入力端子が第２のスキャンフリップフロップ２２のＱ端子と接続され、他の入力端子が第２のＯＲゲート３５の入力端子及びインバータ３６の入力端子と接続され、出力端子が第５のスキャンフリップフロップ２５のＤ端子と接続されている。
【００４３】
第１のＡＮＤゲート３３は、一の入力端子がインバータ３６の出力を受け、他の入力端子が第３のスキャンフリップフロップ２３のＱ端子と接続され、出力端子が第６のスキャンフリップフロップ２６のＤ端子と接続されている。
【００４４】
第２のＡＮＤゲート３４は、一の入力端子が第１の配線１５により第４のスキャンフリップフロップ２４のＱ端子と接続され、他の入力端子が第２のＯＲゲート３５の出力端子と接続され、出力端子が第２の配線１６により第７のスキャンフリップフロップ２７のＤ端子と接続されている。
【００４５】
第２のＯＲゲート３５は、一の入力端子が第５のスキャンフリップフロップ２５のＱ端子と接続され、他の入力端子が第３の配線１７によりインバータ３６の入力端子と接続されている。
【００４６】
以下、前記のように構成された半導体集積回路装置１０に基づいて、本実施形態に係るテストパターン生成方法を説明する。
【００４７】
ここでは、半導体集積回路装置１０に含まれる複数のパスのうち、第４のスキャンフリップフロップ２４、第１の配線１５、第２のＡＮＤゲート３４、第２の配線１６及び第７のスキャンフリップフロップ２７からなるパスを検査対象のパスＰ１とする。
【００４８】
まず、図１に示すパス判定工程ＳＴ０１において、複数のパスのなかから未検査のパスを検索し、次のパス選択工程ＳＴ０２において、未検査のパスＰ１が選択されたとする。続いて、２パターン生成試行工程ＳＴ０３において、初期化パターン及び遷移パターンの生成を試みる。この試行過程を図２に示す詳細フローに基づいて説明する。
【００４９】
図２に示すように、まず、初期化パターンを決定する。すなわち、ステップＳＴ３０において、パスＰ１の始点である第４のスキャンフリップフロップ２４の出力値として０を設定する。
【００５０】
次に、ステップＳＴ３１において、パスＰ１上には、２入力の第２のＡＮＤゲート３４が配置されているため、第２のＡＮＤゲート３４のパスＰ１に属さない他の入力端子に対して、該第２のＡＮＤゲート３４の出力結果の論理値を変更し得ない非制御値１を設定する。
【００５１】
次に、ステップＳＴ３２において、ステップＳＴ３１において設定された第２のＡＮＤゲート３４の入力値及び出力値に基づいて入力側に含意操作を行なう。含意操作の結果、第２のＡＮＤゲート３４に設定した非制御値の１により第２のＯＲゲート３５の出力値は１が確定するものの、該第２のＯＲゲート３５の２つの入力値は確定しない。なぜなら、第２のＯＲゲート３５の２つの入力値が取り得る値として（１，１）、（１，０）及び（０，１）の３通りが考えられるからである。
【００５２】
次に、ステップＳＴ３３において、この３通りの組合せから、仮に（１，１）を採用して第５のスキャンフリップフロップ２５及び第６のスキャンフリップフロップ３６に設定する。これにより、初期化パターンは、第４〜第６のスキャンフリップフロップ１２４〜２６の出力値が（０，１，１）と決定される。
【００５３】
次に、遷移パターンの生成を試みる。ステップＳＴ３４において、パスＰ１の始点である第４のスキャンフリップフロップ２４の入力値として、ステップＳＴ３０において設定した値の反転値である１を設定する。
【００５４】
次に、ステップＳＴ３５において、ステップＳＴ３３により出力値が決定された第４〜第６のスキャンフリップフロップ２４〜２６のうち、パスＰ１の始点である第４のスキャンフリップフロップ２４を除いた残りの第５及び第６のフリップフロップ２５、２６に対して、初期化パターンの一部（１，１）を設定する。
【００５５】
次に、ステップＳＴ３６において、ステップＳＴ３４及びＳＴ３５において設定された値を入力側に対して含意操作を行なう。まず、２入力の第１のＯＲゲート３１は、出力値が１となるため、前述したのと同様に、この時点では２入力値を確定することはできない。一方、ＮＯＲゲート３２の出力値は１であるため、含意操作によって該ＮＯＲゲート３２の２入力値は共に０に確定される。しかしながら、ＮＯＲゲート３２におけるインバータ３６の入力端子と接続されている入力端子は、第３の配線１７により、第６のスキャンフリップフロップ２６のＱ端子と接続されており、該第６のスキャンフリップフロップ２６の出力値はステップＳＴ３３において値を１と決定しているため、矛盾する。従って、次のステップＳＴ３７において含意操作が失敗と判定されて、次のステップＳＴ３９において、２パターン生成が失敗と決定される。
【００５６】
これにより、図１に示すパターン生成判定工程ＳＴ０４においてパターン生成は失敗と判定され、次の残りパターン判定工程ＳＴ０６において、他の初期化パターンが存在するか否かを判定する。ここでは、ステップＳＴ３３において、第５及び第６のスキャンフリップフロップ２５、２６のパターンとして、（１，０）及び（０，１）がまだ試行されていないため、再度、２パターン生成試行工程ＳＴ０３から繰り返す。
【００５７】
２度目の２パターン生成試行工程ＳＴ０３におけるステップＳＴ３０〜ＳＴ３２の処理は、前述した処理内容と同一であるため説明を省略する。
【００５８】
次に、ステップＳＴ３３において、第５及び第６のスキャンフリップフロップ２５、２６の初期化パターンとして、残りのパターンのうちから（１，０）を採用する。
【００５９】
次に、ステップＳＴ３４において、パスＰ１の始点である第４のスキャンフリップフロップ２４の入力値として、ステップＳＴ３０において設定した値の反転値である１を設定する。
【００６０】
次に、ステップＳＴ３５において、第４のスキャンフリップフロップ２４を除き、第５及び第６のスキャンフリップフロップ２５、２６に対して、ステップＳＴ３３において決定された値（１，０）をそれぞれ設定する。すなわち、第５のスキャンフリップフロップ２５に対しては値１を設定し、第６のスキャンフリップフロップ２６に対しては値０を設定する。
【００６１】
次に、ステップＳＴ３６において、ステップＳＴ３４及びＳＴ３５により設定された値に基づいて入力側に対して含意操作を行なう。まず、２入力の第１のＯＲゲート３１は、出力値が１となるため２入力値を確定できない。一方、ＮＯＲゲート３２の出力値は１であるため、含意操作によってＮＯＲゲート３２の２入力値は共に０に確定できる。ここで、第３の配線１７と接続されている第６のスキャンフリップフロップ２６の出力値も０であるため矛盾は生じない。また、第１のＡＮＤゲート３３の出力値は０であるが、第３の配線１７上の値０はインバータ３６により反転されてその値が１となるため、第１のＡＮＤゲート３３の他の入力端子の値は含意操作により０と確定される。再度、第１のＯＲゲート３１において、ＮＯＲゲート３２の２入力値はいずれも０と確定したたため、第１のＯＲゲート３１における、第１のスキャンフリップフロップ２１からの入力値は、第４のスキャンフリップフロップ２４の入力値を１としていることから、１と確定できる。これにより、含意操作はすべて矛盾なく成功するため、図２に示すステップＳＴ３７において含意操作が成功と判定されて、次のステップＳＴ３８において、第１のスキャンフリップフロップ２１、第２のスキャンフリップフロップ２２、第３のスキャンフリップフロップ２３及び第６のスキャンフリップフロップ２６に対して、遷移パターンとして（１，０，０，０）が決定される。
【００６２】
次に図１に示すパターン生成判定工程ＳＴ０４において、２パターン生成が成功と判定されるため、次のスキャンパターン生成工程ＳＴ０５において、初期化パターン及び遷移パターンをスキャンパターンへと変換する。ここでは、図２に示すステップＳＴ３３の結果である第４〜第６のスキャンフリップフロップ２４〜２６に対する初期化パターン（Ｘ，Ｘ，Ｘ，０，１，０）と、ステップＳＴ３８の結果である第１〜第３のスキャンフリップフロップ２１〜２３及び第６のスキャンフリップフロップ２６に対する遷移パターン（１，０，０，Ｘ，Ｘ，０）を１つのスキャンパターンに変換する。ここで、Ｘは不定値を表わしている。これらの結果から、第１〜第６のスキャンフリップフロップ２１〜２６に設定すべき値は、スキャンフリップフロップと確定値とを順次対応付けると、（１，０，０，０，１，０）となるので、半導体集積回路装置１０のスキャンイン信号入力端子１２から与えるスキャンパターンは、０→１→０→０→０→１と変換される。ここで、スキャンパターンは、シリアルデータからなるため、ビット列として表現すると”１０００１０”となり、ＭＳＢ側から順次入力される。
【００６３】
次に、図１に示すパス判定工程ＳＴ０１から繰り返し、未検査のパスが存在しなければ処理を終了する。
【００６４】
このようにして、半導体集積回路装置１０のうちのパスＰ１に対するテストパターンを生成できる。
【００６５】
（第２の実施形態）
以下、本発明の第２の実施形態について図面を参照しながら説明する。
【００６６】
図５は本発明の第２の実施形態に係る半導体集積回路の検査方法の概略フローを示している。本実施形態においては、第１の実施形態により生成されるテストパターンを用いた、図３に示す半導体集積回路装置１０におけるパスＰ１の遅延検査を行なう方法を説明する。ここで、半導体集積回路１０におけるパスＰ１の設計上の遅延時間を１ｎｓとし、第１〜第７のスキャンフリップフロップ２１〜２７のホールドマージンを０．５ｎｓとし、各スキャンフリップフロップ２１〜２７に供給される同期用クロック信号ＣＫのスキュー時間を０ｎｓとする。
【００６７】
まず、図５に示すように、パス判定工程ＳＴ１１において、複数のパスのなかから未検査のパスを検索し、パスＰ１が未検査のパスと判定されたとする。
【００６８】
次に、スキャンイン操作工程ＳＴ１２において、図６のタイミングチャートに示すように、パスＰ１用に生成したスキャンパターン（０→１→０→０→０→１）を半導体集積回路装置１０のスキャンイン信号入力端子１２から５クロック（Ｔ1 〜Ｔ5 ）で入力する。ここで、図６は制御信号及び各スキャンフリップフロップ２１〜２７の入出力信号の信号波形を表わしており、符号２１Ｑ〜２７Ｑは、各スキャンフリップフロップ２１〜２７のＱ端子を表わし、符号２４Ｄ〜２７Ｄは、各スキャンフリップフロップ２４〜２７のＤ端子を表わしている。また、符号＊２７Ｄ及び＊２７Ｑは、パスＰ１に過小遅延による誤動作が生じた場合における第７のスキャンフリップフロップ２７のＤ端子及びＱ端子の波形を表わしている。
【００６９】
図６に示すように、５クロック分のスキャンパターンが入力された後の第１〜第６のスキャンフリップフロップ２１〜２６のＱ端子の値は、それぞれ、１、０、０、０、１及び０となる。このとき、パスＰ１の論理値は０となる。ここで、スキャンイネーブル信号入力端子１１に印加されるスキャンイネーブル信号ＳＥは時刻Ｔ1 〜Ｔ5 までは活性状態となっている。
【００７０】
次に、図５に示すキャプチャ操作工程ＳＴ１３において、時刻Ｔ6 でスキャンイネーブル信号ＳＥを非活性とする。これにより、スキャンパターン（０→１→０→０→０→１）の最後尾のデータ０が入力されるタイミングＴ6 で、各スキャンフリップフロップ２１〜２７の各Ｄ端子に入力された値が自身の各Ｑ端子に出力される。例えば、第４のスキャンフリップフロップ２４のＱ端子（２４Ｑ）には、第３のスキャンフリップフロップ２３のＱ端子（２３Ｑ）の出力値の０ではなく、第４のスキャンフリップフロップ２４のＤ端子（２４Ｄ）の出力値の１が出力される。その結果、パスＰ１の論理値は１に変化する。
【００７１】
このとき、図６に示すように、パスＰ１に過小遅延故障が生じていない場合は、第７のスキャンフリップフロップ２７のＤ端子（２７Ｄ）の値は、キャプチャクロックＴ6 が入力された後であって、所定の遅延時間である１ｎｓ程度の時間が経過した後に０から１に変化する。この場合は、第７のスキャンフリップフロップ２７のホールドマージンの０．５ｎｓに対して十分なマージンがあるため、第７のスキャンフリップフロップ２７は正常に動作して、キャプチャクロックＴ6 が入力された後のＱ端子（２７Ｑ）値は０となる。
【００７２】
次に、図５に示すスキャンアウト操作工程ＳＴ１４において、スキャンアウト操作を行なう。すなわち、時刻Ｔ7 において、再度、スキャンイネーブル信号ＳＥを活性化し、検査結果を半導体集積回路装置１０のスキャンアウト信号出力端子１４から観測する。第７のスキャンフリップフロップ２７のＱ端子（２７Ｑ）はスキャンアウト信号出力端子１４と直接に接続されているため、第７のスキャンフリップフロップ２７のＱ端子の値は、キャプチャクロックＴ6 の後で且つ次のクロックＴ7 が入力されるよりも前のタイミングで期待値の比較を行なう。このとき、スキャンアウト信号出力端子１４において、出力値０が観測された場合は、前述したように、検査対象のパスＰ１が正常であることが保証される。
【００７３】
ここで、パスＰ１に過小遅延による故障が生じており、パスＰ１の遅延値が０．２ｎｓとなった場合には、第７のスキャンフリップフロップ２７のＤ端子（２７Ｄ）の値は、キャプチャクロックＴ6 が入力された後から０．２ｎｓ後に０から１へ変化する。従って、この場合は、第７のスキャンフリップフロップ２７のホールドマージン０．５ｎｓに対してマージンが不足するため、第７のスキャンフリップフロップ２７は、キャプチャクロックＴ6 が入力されたときに誤動作を起こす可能性がある。
【００７４】
図６に示すように、第７のスキャンフリップフロップ２７がキャプチャクロックＴ6 の入力時に誤動作した場合には、第７のスキャンフリップフロップ２７は、Ｄ端子（＊２７Ｄ）の変化後の値１を取り込んでしまうため、第７のスキャンフリップフロップ２７のＱ端子（＊２７）の値は１となり、期待値の０と値が異なるので、回路に不具合があることが確認される。
【００７５】
次に、図５に示すパス判定工程ＳＴ１１から繰り返し、他の未検査のパスが存在しなければ、検査を終了する。
【００７６】
なお、本実施形態において、クロック周波数は、検査対象パスの活性化によるホールドエラー（データ保持エラー）を励起するには無関係である。従って、検査対象パスの活性化に用いるキャプチャパターンは、高い周波数のクロック信号は不要であり、比較的低周波数のクロック信号であっても十分に検査が可能となる。
【００７７】
【発明の効果】
本発明の半導体集積回路のテストパターン生成方法によると、同期用クロック信号の一のパルスが入力される直前及び直後において検査対象の信号経路が活性化されるようにスキャンテストパターンを生成するため、スキャン動作でなく通常動作として同期用クロック信号の一パルスを与えると、該一パルスの前後で信号の論理に矛盾が生じない。従って、検査対象の信号経路上に過小遅延によるデータ保持エラーに起因する誤動作が発生した場合の検査を行なえるようになる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る半導体集積回路のテストパターン生成方法を示す概略フロー図である。
【図２】本発明の第１の実施形態に係る半導体集積回路のテストパターン生成方法における初期化パターン及び遷移パターンの生成方法を示す詳細フロー図である。
【図３】本発明の第１の実施形態に係る半導体集積回路のテストパターン生成方法及び検査方法の対象とする半導体集積回路装置の回路図である。
【図４】図３に示す半導体集積回路装置のスキャンフリップフロップを示す回路図である。
【図５】本発明の第２の実施形態に係る半導体集積回路の検査方法を示すフロー図である。
【図６】本発明の第２の実施形態に係る半導体集積回路の検査方法におけるタイミングチャートである。
【図７】従来のパスディレイテストを説明するための半導体集積回路の模式的な部分回路図である。
【図８】（ａ）〜（ｃ）は図７の半導体集積回路の動作を示す信号波形図である。
【符合の説明】
１０    半導体集積回路装置
１１    スキャンイネーブル信号入力端子
１２    スキャンイン信号入力端子
１３    クロック信号入力端子
１４    スキャンアウト信号出力端子
１５    第１の配線
１６    第２の配線
１７    第３の配線
Ｐ１    検査対象パス
２１    第１のスキャンフリップフロップ（順序回路）
２１０  フリップフロップ
２１１  セレクタ
２２    第２のスキャンフリップフロップ（順序回路）
２３    第３のスキャンフリップフロップ（順序回路）
２４    第４のスキャンフリップフロップ（順序回路）
２５    第５のスキャンフリップフロップ（順序回路）
２６    第６のスキャンフリップフロップ（順序回路）
２７    第７のスキャンフリップフロップ（順序回路）
３１    第１のＯＲゲート（組合せ論理素子）
３２    ＮＯＲゲート（組合せ論理素子）
３３    第１のＡＮＤゲート（組合せ論理素子）
３４    第２のＡＮＤゲート（組合せ論理素子）
３５    第２のＯＲゲート（組合せ論理素子）
３６    インバータ
【図１】
0004789297.tif 000002
【図２】
0004789297.tif 000003
【図３】
0004789297.tif 000004
【図４】
0004789297.tif 000005
【図５】
0004789297.tif 000006
【図６】
0004789297.tif 000007
【図７】
0004789297.tif 000008
【図８】
0004789297.tif 000009