(57)【要約】【課題】スキャンテスト機能を備える半導体集積回路において、回路設計後に任意の回路に適用することが可能で、テストパタン長の削減と故障検出率の向上を達成する。【解決手段】回路内のフリップフロップを除く論理素子をナンド、ノアに置き換え（１００）、フリップフロップの入力を終点とし、前記終点から入力側の回路を遡り到達するフリップフロップ、ハードマクロ、外部端子及び論理固定点をそれぞれ始点とし、前記始点と前記終点との間の素子数及び前記始点と前記終点とを結ぶパスに関する評価値を計算する評価方法と基準値を定め、前記評価値が前記基準値以上であるパスを判定し（１０２）、スキャンテスト用ゲートを挿入する（１０４）。【選択図】　図１
2004086717.tif 000002
【特許請求の範囲】
【請求項１】
スキャンテスト機能を備える半導体集積回路において、フリップフロップの入力を終点とし、前記終点から入力側の回路を遡り到達するフリップフロップ、ハードマクロ、外部端子及び論理固定点をそれぞれ始点とし、前記始点と前記終点との間の素子数及び前記始点と前記終点とを結ぶパスに関する評価値を計算する評価方法と基準値を定め、前記評価値が前記基準値以上であるパスに対してスキャンテスト用ゲートを挿入することを特徴とするスキャンテスト用ゲート挿入方法。
【請求項２】
前記始点と前記終点との間の素子数は、ハードマクロ及びフリップフロップを除く全ての素子をナンド、ノア又はインバータで置き換えたときのナンド又はノアの数とすることを特徴とする請求項１記載のスキャンテスト用ゲート挿入方法。
【請求項３】
前記評価方法は、前記始点の総数を計算することを特徴とする請求項１又は２記載のスキャンテスト用ゲート挿入方法。
【請求項４】
前記評価方法は、前記始点と前記終点とを結ぶ全てのパスの上にあるナンド及びノアの総数を計算することを特徴とする請求項２記載のスキャンテスト用ゲート挿入方法。
【請求項５】
前記評価方法は、第１の評価で前記始点と前記終点とを結ぶ各パスの上にあるナンド及びノアの総数を計算し、第２の評価で前記第１の評価において基準値以上であったパスの総数を計算することを特徴とする請求項２記載のスキャンテスト用ゲート挿入方法。
【請求項６】
前記評価方法は、請求項３記載の評価方法、請求項４記載の評価方法及び請求項５記載の評価方法の少なくとも２つの評価方法を併用することを特徴とする請求項２記載のスキャンテスト用ゲート挿入方法。
【請求項７】
回路構成をトーナメント型の回路構成に置き換えることによりテストパタン長を推算して基準値を決定することを特徴とする請求項２から６のいずれか一項記載のスキャンテスト用ゲート挿入方法。
【請求項８】
前記スキャンテスト用ゲートを、前記始点と前記終点とを結ぶ各パスを終点から遡り、前記基準値に応じて決定されるＮ番目（Ｎは自然数）の素子の入力側に一律に挿入することを特徴とする請求項１から７のいずれか一項記載のスキャンテスト用ゲート挿入方法。
【請求項９】
前記スキャンテスト用ゲートを、最多数の素子を含むパスのみを対象にして終点から遡り、前記基準値に応じて決定されるＮ番目（Ｎは自然数）の素子の入力側に挿入することを特徴とする請求項１から７のいずれか一項記載のスキャンテスト用ゲート挿入方法。
【請求項１０】
前記論理固定点の直後に前記スキャンテスト用ゲートを挿入することを特徴とする請求項１から９のいずれか一項記載のスキャンテスト用ゲート挿入方法。
【請求項１１】
パスに挿入される前記スキャンテスト用ゲートはスキャンチェーンに接続されるスキャンフリップフロップ及びセレクタを用いて構成され、前記セレクタはスキャンテストモードで前記スキャンフリップフロップを選択し、非スキャンテストモードで前記スキャンフリップフロップをバイパスする接続を選択することを特徴とする請求項１から１０のいずれか一項記載のスキャンテスト用ゲート挿入方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＳＩのスキャンテストにおいて、テストパタン長（テストパタン数）の削減を可能にするスキャンテスト用ゲート挿入方法に関する。
【０００２】
【従来の技術】
近年、ＬＳＩの設計においてＣ言語が使用されるようになり、ＲＴＬ記述よりも抽象度の高いレベルで設計が行われるようになった。また、半導体プロセスが進化し、より高集積のＬＳＩが設計されるようになった。そのため、設計時にゲートレベルを意識して、テストパタン長を削減できる回路や、故障検出が容易になるような回路を設計することが困難になってきている。
【０００３】
テストパタン長を削減するための従来技術として、スキャンテスト回路のシフトレジスタを複数の群に分割し、分割した場所にバイパス用セレクタ回路を挿入し、シフトレジスタの分割に対応してフリップフロップ回路のクロック信号にラッチ回路を挿入することにより、テスト時のクロック信号を削減するとともに、不必要な信号を組み合わせ回路に入れないようにする方法がある（特許第２７３８３５１号公報）。
【０００４】
また、テストパタン長を削減するための他の従来技術として、１つおきにフリップフロップをスキャンフリップフロップにし、ＬＳＩチップ面積の削減及びテスト時間の短縮を実現する方法がある（特許第２７４６０７６号公報）。
【０００５】
さらに、回路内にゲートを挿入する方法を採る従来技術として、フリップフロップを入力側に遡り、バッファに到達するとそこにダミーゲートを挿入し、挿入位置が確定した場合はそこに目的のゲートを挿入し、再度挿入済みのダミーゲートの入力側を遡って同様の処理を行い、順次目的のゲート挿入位置を決定していく方法がある（特許第３１９１１８３号公報）。
【０００６】
また、故障検出率を向上させるための従来技術として、故障シミュレーションを実施し、それで故障検出ができない箇所が多数ある場合は、実動作のパタンを用いて未検出の箇所を検出できるようにする方法がある。この方法においては、故障検出ができない箇所の仕様を把握し、効果が得られそうな箇所へ人手でスキャンテスト用のゲートを挿入し故障検出率向上を図ってきた。
【０００７】
【発明が解決しようとする課題】
しかしながら、従来の技術において、テストパタン長の削減を目的とした方法は、テストパタンが削減されるような固有の回路構成を取り入れた回路設計をすることが必須となっており、回路設計後に対応することは困難であり、任意の回路に適用可能な方法ではないという問題がある。
【０００８】
また、従来の技術において、回路内に一意にゲートを挿入する手法は、挿入箇所の検索時間の短縮を目的としており、目的位置の決定の一手法として活用はできるが、テストパタン長の削減や故障検出率向上の効果が得られる手法ではないという問題がある。
【０００９】
また、故障検出率を向上させるための従来技術は、故障シミュレーションを実施した後に、回路仕様を理解した上で、人手で挿入箇所を特定してゲートを挿入していたため、回路が完全に決定されテストパタンも準備されている状態でないと作業は困難であり、また人手で実施しているため作業時間が長くなり、仕様を理解している技術者でないと挿入箇所の決定が困難であるという問題がある。
【００１０】
本発明は上記従来の問題点を解決するもので、スキャンテスト機能を備える半導体集積回路において、回路設計後に任意の回路に適用することが可能で、また、人手によらず自動的な処理が可能で、テストパタン長の削減と故障検出率の向上を達成することができるスキャンテスト用ゲート挿入方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
この課題を解決するために、請求項１記載の発明は、スキャンテスト機能を備える半導体集積回路において、フリップフロップの入力を終点とし、前記終点から入力側の回路を遡り到達するフリップフロップ、ハードマクロ、外部端子及び論理固定点をそれぞれ始点とし、前記始点と前記終点との間の素子数及び前記始点と前記終点とを結ぶパスに関する評価値を計算する評価方法と基準値を定め、前記評価値が前記基準値以上であるパスに対してスキャンテスト用ゲートを挿入するものである。
【００１２】
上記構成によれば、評価方法に従って回路を評価し、基準値以上のパスに対してスキャンテスト用ゲートを挿入することにより、テストパタン長が長くなる原因となる回路構成を分割することができため、テストパタン長を基準値に応じた所望の長さに揃えることができ、スキャンテスト時間を削減することができる。また、テストパタン長が短くなることにより、従来は検出不可能だった箇所の故障検出が可能となり、故障検出率の向上を実現することができる。
【００１３】
請求項２記載の発明は、請求項１記載のスキャンテスト用ゲート挿入方法において、前記始点と前記終点との間の素子数は、ハードマクロ及びフリップフロップを除く全ての素子をナンド、ノア又はインバータで置き換えたときのナンド又はノアの数とするものである。
【００１４】
上記構成によれば、ハードマクロ及びフリップフロップを除く全ての素子をナンド、ノア、インバータで置き換えることにより、複雑な回路が最も単純な回路に置き換えられるため、所望のテストパタンを得るための評価方法を単純にすることができ、基準値を容易に決定することができる。
【００１５】
請求項３記載の発明は、請求項１又は２記載のスキャンテスト用ゲート挿入方法において、前記評価方法は前記始点の総数を計算するものである。
【００１６】
上記構成によれば、望ましい始点の総数を基準値で指定することができるため、所望のテストパタン長から逆算した始点数になるように回路構成を分割することができる。
【００１７】
請求項４記載の発明は、請求項２記載のスキャンテスト用ゲート挿入方法において、前記評価方法は前記始点と前記終点とを結ぶ全てのパスの上にあるナンド及びノアの総数を計算するものである。
【００１８】
上記構成によれば、テスト対象の回路の総数を基準値で指定することができるため、所望のテストパタン数から逆算した回路数になるように回路構成を分割することができる。
【００１９】
請求項５記載の発明は、請求項２記載のスキャンテスト用ゲート挿入方法において、前記評価方法は、第１の評価で前記始点と前記終点とを結ぶ各パスの上にあるナンド及びノアの総数を計算し、第２の評価で前記第１の評価において基準値以上であったパスの総数を計算するものである。
【００２０】
上記構成によれば、第１の評価である程度長いパスを抽出し、そのパス数を第２の評価の基準値で指定することができるため、請求項３あるいは請求項４の評価方法によると過度の回路分割をするおそれがあるような構成の回路においても、適切に回路構成を分割することができる。
【００２１】
請求項６記載の発明は、請求項２記載のスキャンテスト用ゲート挿入方法において、前記評価方法は、請求項３記載の評価方法、請求項４記載の評価方法及び請求項５記載の評価方法の少なくとも２つの評価方法を併用するものである。
【００２２】
上記構成によれば、２つの評価方法あるいは３つの評価方法を併用することにより、より適切に回路構成を分割することができる。
【００２３】
請求項７記載の発明は、請求項２から６のいずれか一項記載のスキャンテスト用ゲート挿入方法において、回路構成をトーナメント型の回路構成に置き換えることによりテストパタン長を推算して基準値を決定するものである。
【００２４】
上記構成によれば、回路構成をトーナメント型の回路構成に置き換えることによりパス長が最も長くなるため、評価値が最大になる場合を想定して一意に基準値を与えることができる。
【００２５】
請求項８記載の発明は、請求項１から７のいずれか１項記載のスキャンテスト用ゲート挿入方法において、前記スキャンテスト用ゲートを、前記始点と前記終点とを結ぶ各パスを終点から遡り、前記基準値に応じて決定されるＮ番目（Ｎは自然数）の素子の入力側に一律に挿入するものである。
【００２６】
上記構成によれば、基準値に応じて決定されるＮ番目の素子の入力側に一律にスキャンテスト用ゲートが挿入されるため、確実にテストパタン長を削減することができる。
【００２７】
請求項９記載の発明は、請求項１から７のいずれか一項記載のスキャンテスト用ゲート挿入方法において、前記スキャンテスト用ゲートを、最多数の素子を含むパスのみを対象にして終点から遡り、前記基準値に応じて決定されるＮ番目（Ｎは自然数）の素子の入力側に挿入するものである。
【００２８】
上記構成によれば、最多数の素子を含むパスのみを対象してスキャンテスト用ゲートが挿入されるため、一律にスキャンテスト用ゲートを挿入すると回路のオーバヘッドが大きくなる場合に、次善の対策とすることができる。
【００２９】
請求項１０記載の発明は、請求項１から９のいずれか一項記載のスキャンテスト用ゲート挿入方法において、前記論理固定点の直後に前記スキャンテスト用ゲートを挿入するものである。
【００３０】
上記構成によれば、論理固定点の直後に前記スキャンテスト用ゲートを挿入することにより、論理固定による反対論理の未検出を回避することができ、故障検出率の向上を実現することができる。
【００３１】
請求項１１記載の発明は、請求項１から１０のいずれか一項記載のスキャンテスト用ゲート挿入方法において、パスに挿入される前記スキャンテスト用ゲートはスキャンチェーンに接続されるスキャンフリップフロップ及びセレクタを用いて構成され、前記セレクタはスキャンテストモードで前記スキャンフリップフロップを選択し、非スキャンテストモードで前記スキャンフリップフロップをバイパスする接続を選択するものである。
【００３２】
上記構成によれば、対策を必要とするパスに挿入するスキャンテスト用ゲートを、スキャンチェーンに接続されるスキャンフリップフロップとセレクタを用いて構成することにより、最も簡単な回路で実現することができる。
【００３３】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照しながら説明する。
図１は本発明の一実施の形態に係るスキャンテスト用ゲート挿入方法の全体の処理手順を示すフローチャートである。図１において、まず、ステップ１００で、回路内に存在するフリップフロップを除く全ての論理素子をナンド、ノア、インバータに仮想的に置き換える。実際のネットを変更するのではなく、セレクタやエクスクルーシィブオアなどをナンドとノアとインバータで構成した場合を考える。
【００３４】
次に、ステップ１０１で、仮想的にナンド、ノア、インバータに置き換わったネットに存在する全てのフリップフロップを順に対象として選択し、それぞれのフリップフロップについてステップ１０２を実施する。ステップ１０２は大きく分けると３段階の評価方法を用いている。３段階の評価方法をそれぞれ単独で使用することも可能である。詳細については後で説明する。
【００３５】
ステップ１０２において、あらかじめ定めた基準に満たないフリップフロップに関しては、ステップ１０３に進み、スキャンテスト用ゲート挿入の対象から除外する。ステップ１０２において、あらかじめ定めた基準を満たすフリップフロップに関しては、ステップ１０４に進み、スキャンテスト用ゲートを挿入する。
【００３６】
挿入位置が重複した場合は複数個挿入するのではなく、その場所に１個だけスキャンテスト用ゲートを挿入する。複数個挿入しても効果は変わらず、回路のオーバヘッドが大きくなるだけである。詳細な挿入方法については後で説明する。これによりスキャンテスト用ゲート挿入を終了する。
【００３７】
以下、図１のフローチャートにおける各ステップの詳細な実施形態について説明する。まず、図２、図３を用いて、ステップ１００における論理回路をインバータ、ノア、ナンドに置き換える例について説明する。
【００３８】
図２は通常の論理回路例である。ここで、図２のセレクタ２００、エクスクルーシィブオア２０１、ナンド２０２、フリップフロップ２０３〜２０８で構成された回路を、図３のようにインバータ、ノア、ナンドに仮想的に置き換えて考える。図２のセレクタ２００は、図３の破線３００で囲まれた３個のナンド３０１〜３０３と１個のインバータ３０４に置き換える。また、図２のエクスクルーシィブオア２０１は、図３の破線３０５で囲まれた３個のナンド３０６〜３０８と２個のインバータ３０９、３１０に置き換える。
【００３９】
このとき、図２のフリップフロップ２０３〜２０８は、図３でもそのままフリップフロップ２０３〜２０８として使用する。また、図２のナンド２０２は置き換えの必要がないため、図３でもそのままナンド２０２として使用する。図２、図３は論理回路を全てインバータ、ノア、ナンドに置き換える例であり、最終的にインバータ、ノア、ナンドのみとなればその置き換え方は本例の通りでなくても問題無い。
【００４０】
次に、図４から図１０を用いて、ステップ１０２の処理の実施形態について説明する。ステップ１０２で行うスキャンテスト用ゲート挿入が必要なフリップフロップかどうかを評価判定する方法として、図４のステップ４００、図５のステップ５００、図６のステップ６００〜６０１の３種類の評価方法の実施形態がある。この３種類の評価方法を組み合わせて判定を行うのが図７から図１０に示す実施形態である。
【００４１】
まず、第１の評価方法の実施形態である図４について説明する。図４では、図１のステップ１００とステップ１０１をまとめてステップ４０１として記載してある。
【００４２】
次のステップ４００では、フリップフロップにデータが入力されるパスをデータの流れとは逆方向に遡り、途中に存在するインバータは無視し、ノア、ナンドは単なる分岐点として認識し、最終的に到達するフリップフロップ、外部端子、ハードマクロあるいは０又は１に固定された論理固定点の総数を計算し、その値があらかじめ設定された基準値以上かどうかを判定する。この基準値の決定方法に関しては後で説明する。判定の結果、基準値以上のフリップフロップに関しては、ステップ１０４でスキャンテスト用ゲート挿入の処理を行う。判定の結果、基準値以上のフリップフロップに関しては、ステップ１０４でスキャンテスト用ゲート挿入の処理を行う。
【００４３】
次に、第２の評価方法の実施形態である図５について説明する。図４と同様のステップ４０１の次に、ステップ５００では、フリップフロップにデータが入力されるパスをデータの流れとは逆方向に遡り、途中に存在するインバータは無視し、ノア、ナンドは単なる分岐点として認識し、最終的に到達するフリップフロップ、外部端子、ハードマクロあるいは０又は１に固定された論理固定点と、遡りの開始点であるフリップフロップの入力との間のパス上に存在したノア、ナンドの総数を計算し、その値が基準値以上かどうかを判定する。この基準値の決定方法に関しては後で説明する。判定の結果、基準値以上のフリップフロップに関しては、図４と同様にステップ１０４の処理を行う。
【００４４】
次に、第３の評価方法の実施形態である図６について説明する。図４と同様のステップ４０１の次に、ステップ６００〜６０１では、フリップフロップにデータが入力されるパスをデータの流れとは逆方向に遡り、途中に存在するインバータは無視し、ノア、ナンドは単なる分岐点として認識し、最終的に到達するフリップフロップ、外部端子、ハードマクロあるいは０又は１に固定された論理固定点と、遡りの開始点であるフリップフロップの入力との間の個別のパスに着目し、パス毎に存在するノア、ナンドの数を計算する。
【００４５】
次に、パス上に存在するノア、ナンドの数が一定値以上のパスを抽出して該当するパス数を計算し、その値が基準値以上であるかどうかを判定する。この基準値の決定方法に関しては後で説明する。判定の結果、基準値以上のフリップフロップに関しては、図４と同様にステップ１０４の処理を行う。
【００４６】
次に、上記第１から第３の評価方法の実施形態を組み合わせてスキャンテスト用ゲート挿入対象のパスを特定する実施形態を、第４から第７の実施形態として図７から図１０に示す。
【００４７】
まず、第４の実施形態である図７について説明する。図４と同様のステップ４０１の次に、第１の実施形態で用いた評価方法であるステップ４００を行う。次に、第２の実施形態で用いた評価方法であるステップ５００を行う。このステップ４００、ステップ５００の判定基準を満たしたフリップフロップに関してのみ、図４と同様にステップ１０４の処理を行う。本実施形態においてステップ４００とステップ５００は順番を変更しても同様の効果を得ることができるため、ステップ４００とステップ５００の順番を逆にした処理の流れとしてもよい。
【００４８】
次に、第５の実施形態である図８について説明する。図４と同様のステップ４０１の次に、第１の実施形態で用いた評価方法であるステップ４００を行う。次に、第３の実施形態で用いた評価方法であるステップ６００〜６０１を行う。このステップ４００及びステップ６００〜６０１の判定基準を満たしたフリップフロップに関してのみ、図４と同様にステップ１０４の処理を行う。本実施形態においてステップ４００とステップ６００〜６０１は順番を変更しても同様の効果を得ることができるため、ステップ４００とステップ６００〜６０１の順番を逆にした処理の流れとしてもよい。
【００４９】
次に、第６の実施形態である図９について説明する。図４と同様のステップ４０１の次に、第２の実施形態で用いた評価方法であるステップ５００を行う。次に、第３の実施形態で用いた評価方法であるステップ６００〜６０１を行う。このステップ５００及びステップ６００〜６０１の判定基準を満たしたフリップフロップに関してのみ、図４同様にステップ１０４の処理を行う。本実施形態においてステップ５００とステップ６００〜６０１は順番を変更しても同様の効果を得ることができるため、ステップ５００とステップ６００〜６０１の順番を逆にした処理の流れとしてもよい。
【００５０】
次に、第７の実施形態である図１０について説明する。図４と同様のステップ４０１の次に、第１の実施形態で用いた評価方法であるステップ４００を行う。次に、第２の実施形態で用いた評価方法であるステップ５００を行う。次に、第３の実施形態で用いた評価方法であるステップ６００〜６０１を行う。このステップ４００、ステップ５００及びステップ６００〜６０１の判定基準を満たしたフリップフロップに関してのみ、図４同様にステップ１０４の処理を行う。本実施形態においてステップ４００とステップ５００とステップ６００〜６０１は順番を変更しても同様の効果を得ることができるため、ステップ４００とステップ５００とステップ６００〜６０１の順番を変更した処理の流れとしてもよい。
【００５１】
次に、第１、第２、第３の実施形態の評価方法で用いた基準値を決定する方法について説明する。この基準値を決めるには、まず、設計者がテストパタン長を最大でどれだけにするかを決定する。最大テストパタン長を決定すると、第１、第２、第３の実施形態で用いる基準値を一意に決定することができる。
【００５２】
最大テストパタン長より第１、第２、第３の実施形態で用いる基準値を決定するために、まず、回路構成が図１１に示すようにトーナメント型になっていると想定する。トーナメント型の回路構成とは、２入力に対して１つの出力が割り当てられ、そこには必ずノア又はナンドが存在する構成である。このときの回路は、論理素子をインバータ、ノア、ナンドに置き換えたと想定する処理を施した後の論理回路とする。トーナメント型に回路が構成されるとパス長が最も長くなるため、このように想定する。
【００５３】
図１１において、まず、フリップフロップ１１００の入力側を遡り、到達したフリップフロップ１１０１〜１１０９、外部端子１１１０〜１１１１、ハードマクロ１１１２、０又は１固定の論理固定点１１１３を全てまとめて始点群とする。図１１では、これを破線１１１４で囲っている。
【００５４】
この回路の始点群１１１４とフリップフロップ１１００の入力との間に存在するノア及びナンド１１２０〜１１３４の故障検出を１００％にするためには、始点群の総数は１６であるので、２＾１６＝６５５３６通りのテストパタンが必要になる。このトーナメントが一段少なくなるとノア又はナンド１１２０〜１１２７がなくなる。このときの故障検出率を１００％にするためには、始点の数が８となるので、必要なテストパタンは、２＾８＝２５６通りとなる。
【００５５】
本発明の第１、第２、第３の実施形態で用いる基準値は、スキャンテスト対象の回路を最大でも何段のトーナメントに区切るかにより決定する。すなわち、図１１のように４段であると最大で６５５３６通り、一段少なくすると２５６通りということになる。
【００５６】
まず、第１の実施形態の基準値を決定する方法を、図１１を例にして説明する。基準値は始点の総数であるので、図１１では始点群１１１４に相当し、１６点存在する。このときのテストパタン長は上記のように６５５３６通りとなる。そのため、最大テストパタン長が６５５３６を超えないようにしたい場合は基準値を１６と設定し、この基準値以上のフリップフロップに関してはスキャンテスト用ゲートを挿入する。このように設計者が要望する最大テストパタン長がトーナメント型の回路構成に換算すると何段になるかを求め、その段数による２のべき乗数を基準値に設定する。
【００５７】
次に、第２の実施形態の基準値を決定する方法を、図１１を例にして説明する。基準値は始点群１１１４とフリップフロップ１１００の入力との間に存在するノア及びナンドの総数であるので、図１１では１１２０〜１１３４の１５個となる。後は、第１の実施形態の判定基準値を決定した方法と同様に、ノア及びナンドの総数からトーナメント形式に回路を置き換えた場合のテストパタン長を求め、それが設計者の要望する値を満たしているかどうかで基準値を決定する。第１の実施形態の判断方法と異なるのは、図２の回路のように、始点群の中のあるフリップフロップからの出力が複数存在する場合があるからである。
【００５８】
次に、第３の実施形態の基準値を決定する方法を説明する。図１２は、フリップフロップ、ナンド、ノアの数が同数であるが、回路構成が異なる例を示す回路図である。第１、第２の実施形態では図１２（ａ）、（ｂ）の回路を区別して判定することが出来ないため、第３の実施形態が必要となる。
【００５９】
図１１のトーナメント型の回路を例にとって説明すると、まず、基準値となる各パスに存在するナンドとノアの和の総数としては、フリップフロップの入力に接続されるパスが１６本あり、それぞれのパスにナンド又はノアが総数で４個存在している。
【００６０】
設計者の要望する最大テストパタン長が６５５３６通りの場合は、パス上に４個以上のノア又はナンドが存在するパスが１６本以上あることが基準となる。パス上に幾つのナンド又はノアが存在するか、それが何本以上存在するかで最大パタン長を決定することができる。ここで、基準値を満たしたパスが何本以上と設定しているが、基準値を満たしたパスが全パス中で何割を占めるかを判定基準としてもよい。
【００６１】
次に、第１から第７の実施形態に共通するステップ１０４のスキャンテスト用ゲート挿入方法の実施形態について、図１３の回路を例にとって説明する。まず、スキャンテスト用ゲート挿入対象のフリップフロップを図１３のフリップフロップ１３００とする。また、その入力を遡り到達する始点群を、フリップフロップ１３０１〜１３０９、ハードマクロ１３０２、外部端子１３１０〜１３１１、０又は１の論理固定点１３１３とする。
【００６２】
この始点群とフリップフロップ１３００の入力の間に存在するナンド又はノア１３２０〜１３３５は、総数で１６個となる。挿入対象のフリップフロップ１３００を入力側に遡り、ｎ個目のノア又はナンドの入力側に一律にスキャンテスト用ゲートを挿入する。図１３ではｎ＝２とし、ノア１３３２、１３３３の入力側である１３３６〜１３３９の位置にスキャンテスト用ゲートを挿入する。
【００６３】
また、一律に挿入すると回路のオーバヘッドが大きくなる場合は、最も長いパスのみに挿入する。図１３では、フリップフロップ１３０１と外部端子１３１０に到達するパスのみに挿入する。その場合の挿入位置は１３３６のみとなる。テストパタン長を確実に削減する場合は一律に挿入する。
【００６４】
挿入位置を決定するｎは、最大テストパタン長をどれだけにするかによって決める。すなわち、トーナメント型の段数を何段に減らすかの判断と同等と考えて決定する。段数を半分にすれば、図１３では単純に計算すれば４０９６分の１に削減される。
【００６５】
故障検出が不可能な箇所が発生する危険がある０又は１の論理固定点の直後の接続箇所１３４０にもスキャンテスト用ゲートを挿入する。本実施形態は、スキャン対象のフリップフロップの入力を遡り到達した点のみに限定せず、全ての０又は１の論理固定点に対して挿入を行っても良いことは言うまでもない。
【００６６】
次に、スキャンテスト用挿入ゲートの実施形態を説明する。図１４の破線１４００で囲まれた部分が挿入されたゲートの例である。スキャンテスト用挿入ゲートはフリップフロップ１４０１とセレクタ１４０２で構成され、セレクタ１４０２は、スキャンテスト時はフリップフロップ１４０１を通るパスを選択し、通常時はフリップフロップ１４０１をバイパスする側のパスを選択するようにする。
【００６７】
【発明の効果】
以上説明したように、本発明によれば、評価方法に従って回路を評価し、基準値以上のパスに対して一意にスキャンテスト用ゲートを挿入することにより、パスが長すぎる回路構成を適切に分割することができるため、テストパタン長を所望の長さに削減することができ、テスト時間を短縮し、さらには故障検出率を向上させることができるという優れた効果が得られる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るスキャンテスト用ゲート挿入方法の全体の処理手順を示すフローチャート。
【図２】通常の論理回路でノア、ナンド以外の論理素子を含む回路を示す図。
【図３】図２の論理回路をノア、ナンド、インバータに仮想的に置き換えた回路を示す図。
【図４】本発明の実施の形態に係るスキャンテスト用ゲート挿入方法において、始点の総数を基準値で指定する評価方法を示すフローチャート。
【図５】本発明の実施の形態に係るスキャンテスト用ゲート挿入方法において、全てのパスの素子の総数を基準値で指定する評価方法を示すフローチャート。
【図６】本発明の実施の形態に係るスキャンテスト用ゲート挿入方法において、素子数が一定値以上のパスの総数を基準値で指定する評価方法を示すフローチャート。
【図７】本発明の実施の形態に係るスキャンテスト用ゲート挿入方法において、始点の総数と、全てのパスの素子の総数を基準値で指定する評価方法を示すフローチャート。
【図８】本発明の実施の形態に係るスキャンテスト用ゲート挿入方法において、始点の総数と、素子数が一定値以上のパスの総数を基準値で指定する評価方法を示すフローチャート。
【図９】本発明の実施の形態に係るスキャンテスト用ゲート挿入方法において、全てのパスの素子の総数と、素子数が一定値以上のパスの総数を基準値で指定する評価方法を示すフローチャート。
【図１０】本発明の実施の形態に係るスキャンテスト用ゲート挿入方法において、始点の総数、全てのパスの素子の総数、素子数が一定値以上のパスの総数を基準値で指定する評価方法を示すフローチャート。
【図１１】トーナメント型回路の構成を示す図。
【図１２】フリップフロップ、ナンド、ノアの数が同数で異なる構成の回路を示す図。
【図１３】スキャンテスト用ゲートの挿入位置を示す回路図。
【図１４】スキャンテスト用ゲートの構成を示す回路図。
【符号の説明】
２００　セレクタ
２０１　エクスクルーシィブオア
２０２　ナンド
２０３、２０４、２０５、２０６、２０７、２０８　フリップフロップ
３００　セレクタを変換した回路部分
３０１、３０２、３０３、３０６、３０７、３０８　ナンド
３０４、３０９、３１０　インバータ
３０５　エクスクルーシィブオアを変換した回路部分
１１００〜１１０９、１３００〜１３０９　フリップフロップ
１１１０、１１１１、１３１０、１３１１　外部端子
１１１２、１３１２　ハードマクロ
１１１３、１３１３　０又は１の論理固定点
１１１４　始点群
１１２０〜１１２３、１１２８〜１１３１、１３２０〜１３２３、１３２８〜１３３１、１３３５　ナンド
１１２４〜１１２７、１１３２〜１１３４、１３２４〜１３２７、１３３２〜１３３４　ノア
１３３６〜１３４０　スキャンテスト用ゲート挿入位置
１４００　スキャンテスト用ゲート回路
１４０１　フリップフロップ
１４０２　セレクタ
【図１】
2004086717.tif 000003
【図２】
2004086717.tif 000004
【図３】
2004086717.tif 000005
【図４】
2004086717.tif 000006
【図５】
2004086717.tif 000007
【図６】
2004086717.tif 000008
【図７】
2004086717.tif 000009
【図８】
2004086717.tif 000010
【図９】
2004086717.tif 000011
【図１０】
2004086717.tif 000012
【図１１】
2004086717.tif 000013
【図１２】
2004086717.tif 000014
【図１３】
2004086717.tif 000015
【図１４】
2004086717.tif 000016