(57)【要約】    【課題】  ＬＳＩの設計期間を短縮するテスト容易化設計方法を提供する。    【解決手段】  論理ゲートを含む回路に対してスキャンパスを設計するステップと、前記スキャンパスを挿入することでテストパターンを生成するステップとを有するＬＳＩのテスト容易化設計方法において、スキャンパスを挿入する前に、前記テストパターンによる故障検出率を概算するステップ（１０）と、概算した故障検出率が所定値を超えない場合は、前記故障検出率が前記所定値を満たすようにスキャン化率の増減または回路修正を行うステップとを含む。【選択図】  図１
2006228213.tif 000002
【特許請求の範囲】
【請求項１】
論理ゲートを含む回路に対してスキャンパスを設計するステップと、前記スキャンパスを挿入することでテストパターンを生成するステップとを有するＬＳＩのテスト容易化設計方法において、
前記スキャンパスを挿入する前に、前記テストパターンによる故障検出率を概算するステップと、
前記概算した故障検出率が所定値を超えない場合は、前記故障検出率が前記所定値を満たすようにスキャン化率の増減または回路修正を行うステップとを含む、
ＬＳＩのテスト容易化設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は論理ゲートを含む集積回路に対するテスト容易化設計に関する。
【背景技術】
【０００２】
近年の半導体集積回路技術の進歩に伴い、ＬＳＩ（大規模集積回路）中に含まれる素子（論理ゲート）数も増大し、それに伴い、ＬＳＩのテストをいかに効率よく行うかが問題となってきた。この問題を解決する方法としてテスト容易化設計がある。代表的なものにスキャンパス法を用いたスキャンパス設計がある（例えば特許文献１参照）。
【０００３】
スキャンパス法では、ＬＳＩ中に含まれるフリップフロップの全部または一部をテスト用のフリップフロップ（以下、「スキャンフリップフロップ」という。）に置き換え、これらをシリアルに接続してスキャンパスを形成する（これを「スキャンパス挿入」という。）。ここで、スキャンフリップフロップは、一般に、テストモードに設定するためのテストイネーブル端子、スキャンデータを入力するためのスキャンイン端子、スキャンデータを出力するためのスキャンアウト端子等を有する。最初のスキャンフリップフロップのスキャンイン端子はＬＳＩの外部入力端子に接続され、最後のスキャンフリップフロップのスキャンアウト端子はＬＳＩの外部出力端子に接続される。そして、各スキャンフリップフロップのクロックを外部より制御し、シフトレジスタとして動作させる。このとき、外部入力端子を介してテストデータを与え、各スキャンフリップフロップに記憶された値を外部出力端子を介して順次取り出すことにより、各スキャンフリップフロップに接続された組み合わせ回路のテストを行う。
【０００４】
このようなスキャンパス法を用いたテスト容易化設計（スキャンパス設計）に対しては、いくつかの基本的な設計ルールがある。例えば、１）フリップフロップのクロックは全て外部ポートから制御可能であること、２）非同期リセット／セットが外部ポートから制御可能であること、３）組み合わせ回路のフィードバックを含まないこと等の設計ルールがある。
【０００５】
そこで、スキャンパス設計を行う前に、対象回路に対して設計ルールの検査を行った後、スキャンパス設計が可能であれば、スキャンパス挿入を行い、テストパターン自動生成（ATPG: Automatic Test Pattern Generator）を行う。テストパターン自動生成では、テストパターンと、そのテストパターンによる縮退故障の検出度合いを示す故障検出率とが出力される。その後、故障検出率を確認して、故障検出率が不十分であれば回路修正やスキャン化率の増減を行った後、再度、テスト容易化設計ルールの検査を行い、スキャンパス挿入、テストパターン自動生成を行う。テストパターン自動生成により十分な故障検出率が得られるまで、上記処理を繰り返す。
【特許文献１】特開平５−６４０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このように、従来では、故障検出率を求めるために、テスト容易化設計のルール検査、スキャンパス挿入、テストパターン自動生成（ＡＴＰＧ）による故障検出率の算出、スキャン化率の増減や回路修正の各処理を繰り返して行う必要があった。
【０００７】
この場合、スキャンパス法、特に、回路中の一部のフリップフロップをスキャンフリップに置換するパーシャルスキャンにおいては、スキャンパス挿入、ＡＴＰＧによる故障検出率の算出を繰り返すため、設計時間が長くなるという問題がある。
【０００８】
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、ＬＳＩの設計期間を短縮するテスト容易化設計方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明に係るテスト容易化設計方法は、論理ゲートを含む回路に対してスキャンパスを設計するステップと、前記スキャンパスを挿入することでテストパターンを生成するステップとを有するＬＳＩのテスト容易化設計方法において、スキャンパスを挿入する前に、テストパターンによる故障検出率を概算するステップと、概算した故障検出率が所定値を超えない場合は、故障検出率が前記所定値を満たすようにスキャン化率の増減または回路修正を行うステップとを含む。
【発明の効果】
【００１０】
本発明によれば、ＬＳＩの設計期間を短縮できる。
【発明を実施するための最良の形態】
【００１１】
以下、添付の図面を参照して本発明に係るテスト容易化設計ルール検査装置の実施の形態を説明する。本実施形態のテスト容易化設計ルール検査装置は、半導体集積回路に対してスキャンパス設計を行う際の設計ルールを検査する装置であり、テストパターン自動生成（ＡＴＰＧ）により生成されるテストパターンの故障検出率を概算する。
【００１２】
＜テスト容易化設計ルール検査装置の構成＞
図１はテスト容易化設計ルール検査装置の構成を示すブロック図である。テスト容易化設計ルール検査装置は、外部よりデータや設定値、ユーザの操作情報等を入力するデータ入力部３と、スキャンパス設計を行うときの一般的な設計ルール（設計制約）を検査するＤＦＴルール検査部５と、回路に対する故障検出率を算出する故障検出率算出部１０と、故障検出率の算出結果等の種々の表示を行う表示制御部２０とを備える。故障検出率算出部１０は、論理値を伝播させてネット探索を行うネット探索部１３と、故障検出率を算出するために、特定の条件を満たす論理ゲートの入出力端子を元とする集合を求める集合生成部１５と、故障検出率を計算する故障検出率計算部１７とからなる。さらに、テスト容易化設計ルール検査装置は、ネットワーク構造データベース５０と、集合データベース６０とを備える。なお、本実施形態のテスト容易化設計ルール検査装置は、図示してないが、Verilog-HDL等で記述されるテスト対象回路の回路情報である論理回路情報も有する。
【００１３】
上記のような構成のテスト容易化設計ルール検査装置は、所定のプログラムを実行し所定の機能を実現するＣＰＵ、プログラムやデータ等を格納するハードディスクやＲＯＭ等の記憶装置、ＣＰＵが実行するプログラムがロードされるＲＡＭ、表示装置およびキーボードやマウス等の入力装置等のハードウェアから構成されてもよい。この場合、図１に示す各ブロックの機能は、ハードディスクやＲＯＭ等の情報記録媒体に格納された所定のプログラムがＲＡＭにロードされ、ＣＰＵにより実行されることにより実現される。
【００１４】
＜種々のデータベース＞
ネットワーク構造データベース５０は、回路を構成する論理ゲートを定義する情報である論理ゲート情報５１と、論理ゲート間の接続関係を定義する情報である信号接続情報５３とを有する。論理ゲート情報５１には、論理ゲートの名前と、論理ゲートの入力端子群、論理ゲートの出力端子群の情報と、論理ゲートの演算子を示す情報（演算オペコード）とが含まれる。信号接続情報５３には、論理ゲート間を接続する信号線の名前と、信号線に接続される論理ゲート端子の情報とが含まれる。
【００１５】
図２に、論理ゲート情報５１をＣ言語の構造体を用いて構成した例を示す。図に示すように論理ゲート情報構造体１００は、論理ゲート名１０１と、出力端子リストへのポインタ１０３と、入力端子リストへのポインタ１０５とからなる。出力端子リストへのポインタ１０３は、出力端子リストの先頭アドレスを格納する。すなわち、出力端子リストへのポインタ１０３は、最初の出力端子名１０３ａの記憶場所（アドレス）を格納する。この出力端子リストへのポインタ１０３が示すアドレスを基準として出力端子リストに含まれる出力端子名を順次読み出すことができる。同様に、入力端子リストへのポインタ１０５は、入力端子リストの先頭アドレスを格納する。
【００１６】
さらに、論理ゲート情報５１は、出力端子名１０３ａ…と関連付けられた演算子構造体１１０を有する。演算子構造体１１０は、演算を示す演算子オペコードを格納する演算オペコード１１１と、演算に対する第１の引数のアドレスを格納する第１引数ポインタ１１３と、第２の引数のアドレスを格納する第２引数ポインタ１１５とからなる。演算オペコード１１１は、場合によっては入力端子名を格納する。
【００１７】
図３に、上記構造体を用いた論理ゲート情報５１におけるデータの具体例を示す。図３の（ｂ）は、図３の（ａ）に示すＡＮＤゲートに対して、論理ゲート情報５１に格納されるデータ例を示している。図３の（ａ）に示すＡＮＤゲートの論理ゲート名は「ＡＮＤ０３」であり、端子名が「Ｉ１」、「Ｉ２」、「Ｉ３」となる３つの入力端子を有し、端子名が「Ｏ１」となる１つの出力端子を有する。すなわち、図３の（ｂ）に示すように、論理ゲート構造体１００において、論理ゲート名１０１には「ＡＮＤ０３」が格納され、出力端子リストへのポインタ１０３が示す出力端子名１０３ａには「Ｏ１」が格納される。また、演算子構造体１１０において、演算オペコード１１１にはＡＮＤ演算を示すオペコードである「＆」が格納され、第１引数ポインタ１１３には演算子構造体１１０ｂの先頭アドレスが、第２引数ポインタ１１５には演算子構造体１１０ｃの先頭アドレスが格納される。演算子構造体１１０ｂの演算オペコード１１１ｂには入力端子名「Ｉ１」が格納される。演算子構造体１１０ｃにおいて、演算オペコード１１１ｃにはＡＮＤ演算を示すオペコードである「＆」が格納され、第１引数ポインタ１１３ｃには演算子構造体１１０ｄの先頭アドレスが、第２引数ポインタ１１５ｃには演算子構造体１１０ｅの先頭アドレスが格納される。演算子構造体１１０ｄの演算オペコード１１１ｄには入力端子名「Ｉ２」が格納される。演算子構造体１１０ｅの演算オペコード１１１ｅには入力端子名「Ｉ３」が格納される。入力端子リストへのポインタ１０５が示すアドレス領域１０５ａには入力端子名「Ｉ１」が記憶される。その後、順次、入力端子リストの所定領域に入力端子名「Ｉ２」、「Ｉ３」が記憶される。なお、図中、「ｎｕｌｌ」はデータが格納されていないことを示し、出力端子リスト及び入力端子リストにおいては、データの終了を示す。
【００１８】
図４に、信号接続情報５３をＣ言語の構造体を用いて構成した例を示す。図に示すように信号接続情報構造体２００は、信号線名２０１と、ファンインへのポインタ２０３と、ファンアウトリストへのポインタ２０５とからなる。ファンインへのポインタ２０３は、この信号線の入力側に接続される論理ゲートの出力端子名が格納される記憶域のアドレスを格納する。ファンアウトリストへのポインタ２０５は、ファンアウトリストの先頭アドレスを格納する。ファンアウトリストは、ポインタ２０５ａ、２０５ｂ…からなる。ポインタ２０５ａ、２０５ｂ…は、信号線に対して出力側に接続される論理ゲートの入力端子名の記憶域のアドレスを格納する。
【００１９】
図５は、上記構造体を用いた信号接続情報５３におけるデータの具体例を示した図である。図５の（ｂ）は、図５の（ａ）に示す回路に対して、信号接続情報５３に格納されるデータ例を示している。図５の（ａ）では、ＡＮＤゲート（ＡＮＤ０３）の出力が、信号線（ＮＥＴ０１）を介して、インバータ（ＩＮＶ０１）及びＡＮＤゲート（ＡＮＤ０４）に接続された例を示す。この例では、信号接続情報構造体２００において、信号線名２０１には、「ＮＥＴ０１」が、ファンインへのポインタ２０３には、出力端子「Ｏ１」のアドレスが格納される。ファンアウトリストへのポインタ２０５には、ファンアウトリストの先頭アドレス、すなわち、ポインタ２０５ａのアドレスが格納される。ポインタ２０５ａには入力端子「Ｉ４」のアドレスが格納され、ポインタ２０５ｂには入力端子「Ｉ５」のアドレスが格納される。ポインタ２０５ｃにはファンアウトリストの終了を示す「ｎｕｌｌ」が格納される。
【００２０】
集合データベース６０は、論理ゲート端子のうちテスト不可能な端子を元とする集合ＵＴと、論理ゲート端子のうちテスト時に外部から制御不可能な端子を元とする集合ＵＣと、論理ゲート端子のうちテスト時に外部から観測不可能な端子を元とする集合ＵＯとからなる。集合データベース６０をＣ言語構造体を用いて構成した例を図６の（ａ）に示す。集合構造体３００は、集合名３０１と、端子リストへのポインタ３０３とからなる。端子リストへのポインタ３０３には、端子リストの先頭アドレス、すなわち、ポインタ３０３ａのアドレスが格納される。端子リストは、集合に含まれる端子の端子名が格納された記憶域を示すポインタ３０３ａ…からなる。図６の（ｂ）にデータ格納例を示す。
【００２１】
＜テスト容易化設計ルール検査装置の動作＞
以上のように構成されるテスト容易化設計ルール検査装置の動作について説明する。
【００２２】
本実施形態のテスト容易化設計ルール検査装置は、テスト容易化設計ルールを検査する際に、所定の論理値を伝播させてネット検査を行うことにより、ＡＴＰＧにより生成されるテストパターンの故障検出率を概算する。テスト容易化設計ルール検査装置の全体動作を説明する前に、まず、ネット探索処理について説明する。
【００２３】
＜ネット探索処理＞
図７に、テスト容易化設計ルール検査装置のネット探索処理を示すフローチャートを示す。ネット探索処理では、深さ方向に論理ゲートを順次訪問し、訪問した論理ゲートにおいてその演算オペコードに応じた論理演算を行う。本処理はネット探索部１３により制御される。
【００２４】
図に示すように、まず、ネット探索を開始するため初期条件を設定する。すなわち、ネット探索を開始する入力端子と、伝播させる論理値とをデータ入力部３を介して入力する（Ｓ１０１）。次に、入力した入力端子の格納場所を示すポインタをスタック構造メモリにプッシュする（Ｓ１０２）。ここで、スタック構造メモリとは一般的に後入れ先出し機能（ＬＩＦＯ）を実現するメモリであり、スタック構造メモリにデータを格納する操作をプッシュといい、スタック構造メモリからデータを取り出す操作をポップという。スタック構造メモリは、訪問すべき論理ゲートの入力端子のポインタを格納する。
【００２５】
その後、スタック構造メモリに格納されたポインタに従って、論理ゲートを訪問し、その論理ゲートに応じて論理演算を行う。
【００２６】
すなわち、スタック構造メモリから論理ゲートの入力端子のアドレスをポップする（Ｓ１０３）。スタック構造メモリからのアドレスのポップの可否を判断し（Ｓ１０４）、スタック構造メモリからアドレスをポップできないとき、すなわち、スタック構造メモリが空のときは、ネット探索処理を終了する。アドレスがポップできたときは、論理ゲート情報を参照し、その入力端子のアドレスから論理ゲートのアドレスを取得し（Ｓ１０５）、さらに、その論理ゲートの出力端子のアドレスを取得する（Ｓ１０６）。出力端子のアドレス取得の可否を判断し（Ｓ１０７）、取得できなかったときはステップＳ１０３に戻る。出力端子のアドレスが取得できたときは、その論理ゲートに対して演算オペコードと論理値とに基づき論理演算を行う（Ｓ１０８）。なお、論理演算の結果は、その論理ゲートでの伝播結果として所定の記憶域に保持される。
【００２７】
その後、現時点で訪問している論理ゲートの次に訪問すべき全ての論理ゲートを探し、それらに対して、それらの入力端子のアドレスおよび伝播させる論理値を設定する（Ｓ１０９）。本処理の詳細は後述する。
【００２８】
訪問すべき論理ゲートの入力端子のアドレスおよび伝播させる論理値の設定（Ｓ１０９）が終了すると、ステップＳ１０６に戻る。１つの論理ゲートに対する全ての出力端子に対して上記処理（Ｓ１０６〜Ｓ１０９）が繰り返され、その後、ステップＳ１０３に戻り、スタック構造メモリから次に探索する入力端子のアドレスをポップする。このとき、スタック構造メモリには、最初に設定された入力端子を持つ論理ゲートの出力が接続された次の論理ゲートの入力端子が格納されており、深さ方向に１つ進んだことになる。以後、上記処理を繰り返すことにより、深さ方向に順次探索が行われる。
【００２９】
なお、上記フローチャートにおいて、ネットの終端に達したときは、次の訪問先の設定処理（ステップＳ１０９）に入っても、スタック構造メモリに新たに入力端子のアドレスがプッシュされることはない。これによって、次にスタック構造メモリをポップすることにより、別の枝に接続する論理ゲートに対して連続してネット探索を行うことができる。
【００３０】
上記ステップＳ１０９における次の訪問先の設定処理を図８に示すフローチャートを用いて説明する。
【００３１】
まず、信号線接続情報を参照して、今訪問中の出力端子のアドレスに基づき、その出力端子が接続される次の論理ゲートの入力端子のアドレスを順次取得する（Ｓ１１１）。入力端子のアドレスは、信号線接続情報のファンアウトリストへのアドレスによって順次指定されることにより取得される。その後、アドレス取得の可否を判断する（Ｓ１１２）。アドレスが取得されたときは、その入力端子に入力する論理値として、前段の論理ゲートでの論理演算結果（ステップＳ１０８で計算されたもの）を設定する（Ｓ１１３）。その後、スタック構造メモリに次の入力端子のアドレスをプッシュし（Ｓ１１４）、ステップＳ１１１に戻る。今訪問中の論理ゲートの出力端子に対する全ての入力端子のアドレスおよび論理値の設定が終了するまで上記処理を繰り返す。
【００３２】
＜ネット探索処理のプログラム例＞
図９に、図７及び図８のフローチャートで示されるネット探索処理を実現するプログラムの一例を示す。なお、本プログラムはＣ言語の文法に基づいて記載されている。
【００３３】
図９において、（ａ）で示す関数depth_search()はネット探索を行う関数である。関数depth_search()はスタック構造メモリを用い、訪問する論理ゲートのアドレスをスタック構造メモリに格納しながらネット探索を行う。関数depth_search()において、変数v、o_pin、instanceはそれぞれ入力端子、出力端子、論理ゲートのアドレスの値を格納するポインタである。（ｂ）で示す関数culc_opr(a,b)は、引数ａにより指定される論理ゲートの演算オペコードを参照し、引数ｂの値を用いて論理演算を実行し、その論理演算結果を返す。（ｃ）で示す関数stuck_push(x)は、スタック構造メモリに引数xで指定されるポインタをプッシュする。（ｄ）で示す関数stuck_pop()は、スタック構造メモリからポインタをポップして返す。（ｅ）で示す関数get_funout(x)は、引数ｘで指定される論理ゲート（または出力端子）に接続される論理ゲートの入力端子のアドレスを返す。この場合、引数ｘで指定される論理ゲート（または出力端子）に接続される論理ゲートの入力端子が複数あるときは、関数が呼び出される度にそれらの入力端子のアドレスを順次返す。depth_search()に対しては、ネット探索を開始する論理ゲートの入力端子のポインタi_pinと、論理値の初期値valとが引数として渡される。
【００３４】
図９に示すプログラムにおいて、ステ−トメント（１）、（２）は、ステップＳ１０１、Ｓ１０２に対応する。ステ−トメント（３）は、ステップＳ１０３、Ｓ１０４に対応する。ステ−トメント（４）は、ステップＳ１０５に対応する。ステ−トメント（５）は、ステップＳ１０６、Ｓ１０７に対応する。ステ−トメント（６）は、ステップＳ１０８に対応する。ステ−トメント（７）は、ステップＳ１１１、Ｓ１１２に対応する。ステ−トメント（８）は、ステップＳ１１３に対応する。ステ−トメント（９）は、ステップＳ１１４に対応する。プログラムループで見ると、ステートメント（３）〜（１２）のループは、ステップＳ１０３〜Ｓ１０９のループに対応する。ステートメント（５）〜（１１）のループは、ステップＳ１０６〜Ｓ１０９のループに対応する。ステートメント（７）〜（１０）のループは、ステップＳ１０９すなわちステップＳ１１１〜Ｓ１１４のループに対応する。
【００３５】
＜メインフロ−＞
以下に、テスト容易化設計ルール検査装置の全体動作を図１０のフローチャートを用いて説明する。
【００３６】
テスト容易化設計ルール検査装置において、データ入力部３において動作の開始操作が入力されると、ＤＦＴルール検査部５は、Verilog-HDL等で記述されたテスト対象回路の論理回路情報を参照し、スキャンパス設計における一般的な設計ルールの検査を行う（Ｓ１）。一般的なスキャンパス設計における設計ルールとしては、例えば、以下の項目が検査される。すなわち、ａ）スキャン対象のフリップフロップのクロック、セット／リセット端子が外部から制御可能であるか否か、ｂ）スキャン対象のフリップフロップが、対応するスキャンフリップフロップを有するか否か等が検査される。その後、検査結果を判断し（Ｓ２）、スキャンパス設計のための制約を満たしていれば、故障検出率算出部１０は、所定のネット探索処理を行って故障検出率を算出する（Ｓ３）。最後に、表示制御部２０は、設計制約の検査結果、故障検出率、ネット探索処理の結果等を表示する（Ｓ４）。
【００３７】
＜故障検出率算出処理＞
以下に、上記故障検出率の算出（ステップＳ３）について図１１のフローチャートを用いて説明する。前述のように本処理は故障検出率算出部１０により制御される。
【００３８】
図１１において、最初に、データ入力部３がテストパターン自動生成（ＡＴＰＧ）のためのコンストレイン、すなわちテストモードに設定するための信号と、伝播させる論理値の初期値とを入力する（Ｓ１１）。その後、故障検出率算出部１０のネット探索部１３は、入力した論理値を回路内の各論理ゲートに伝播させる（Ｓ１２）。ここで、論理値を伝播させるとは、一の論理ゲートに対して所定の論理値を与えて論理演算を行い、その演算結果を次の論理ゲートに与えて論理演算を行い、さらに、その演算結果をその次の論理ゲートに入力して論理演算を行うという処理を繰り返して、論理演算結果を順次求めていくことである。例えば、図１２の（ａ）に示す例では、外部入力端子７１、ＡＮＤゲート７２、インバータ７３、ＯＲゲート７４に対して、論理値は０→０→１→１と伝播する。
【００３９】
次に、集合生成部１５は、テストモード時にコンストレインによって値が固定されるためにテスト不可能となる論理ゲート端子の集合ＵＴを求める（Ｓ１３）。つまり、集合生成部１５は、論理値の伝播結果を参照し、コンストレインにより端子の状態が０または１に固定される論理ゲート端子（ノード）を検出し、これらの論理ゲート端子を元とする集合ＵＴを作成する。例えば、ＡＮＤゲートの入力端子の１つがコンストレインにより０になるとき、ＡＮＤゲートの出力は０に固定されるため、その出力端子は集合ＵＴに含まれる。集合ＵＴには、図６に示すような構造体を持つデータベースにおいて、論理ゲート端子名の格納場所のアドレス（ポインタ）が格納される。
【００４０】
次に、集合生成部１５は、テストモード時に制御不可能な論理ゲート端子の集合である集合ＵＣを求める。すなわち、ネット探索部１３は、スキャン変換対象外のフリップフロップのＱ出力から論理値Ｘ（論理値Ｘは「０」または「１」のいずれの値でもよい。）を伝播させてネット探索を行う（Ｓ１４）。その後、論理値Ｘの伝播によるネット探索において、論理値ＸがＸのまま伝播する論理ゲート端子を検出し、これらの論理ゲート端子を元とする集合ＵＣを作成する（Ｓ１５）。
【００４１】
ここで、論理値Ｘの伝播について図１２の（ｂ）を用いて説明する。図において、ＯＲゲート８４の一方の入力はコンストレインにより「０」に固定され、また、ＡＮＤゲート８５の一方の入力もコンストレインにより「０」に固定される。このような回路に、外部入力端子８１から論理値Ｘを伝播させると、インバータ８２の出力は「Ｘを反転した値」に、インバータ８３の出力は「Ｘ」に、ＯＲゲート８４の出力は「Ｘ」に、ＡＮＤゲート８５の出力は「０」になる。したがって、インバータ８２、８３の入出力端子と、ＯＲゲート８４の入力端子の他方と、ＡＮＤゲート８５の入力端子の他方については論理値Ｘが伝播したことになり、それ以外の端子には論理値Ｘが伝播しないことになる。この論理値Ｘの伝播によるネット探索は、ネットワーク構造データベース５０に格納された各論理ゲート情報及び信号接続情報を参照して行われる。
【００４２】
図１１に戻り、さらに、集合生成部１５は、テストモード時に制御不可能な論理ゲート端子の集合である集合ＵＯを求める。すなわち、集合生成部１５は、上記のステップで求めた集合ＵＴ、ＵＣに含まれない論理ゲート端子の集合ＵＯを仮に作成する（Ｓ１６）。その後、仮の集合ＵＯ内の各論理ゲート端子に対して論理値Ｘの伝播によるネット探索を実施して（Ｓ１７）、外部出力端子またはスキャン変換対象のフリップフロップのＤ入力まで到達できた論理ゲート端子を検出し、仮の集合ＵＯからこれらの論理ゲート端子を除き、最終的な集合ＵＯを作成する（Ｓ１８）。
【００４３】
最後に、故障検出率計算部１７が、集合ＵＴ、集合ＵＣ、集合ＵＯのそれぞれの元の数をut、uc、uoと、回路中の前端子数をtotalとし、スキャンパス挿入後の故障検出率を次式を用いて算出する（Ｓ１９）。
故障検出率 ＝ ( total - ( ut + uc + uo ) ) / total * 100 (%)
【００４４】
このようにして、テスト容易化設計ルール検査装置は、スキャンパス挿入後の故障検出率を求める。
【００４５】
以上のように、集合ＵＴは、ＡＴＰＧのためのコンストレインにより論理値が固定されるため、テスト不能とみなされる論理ゲート端子群である。集合ＵＣは、スキャン変換対象外のフリップフロップ、すなわちスキャンパス挿入後の回路においてスキャンされないフリップフロップのデータ出力により制御されるのでコンビネーショナルＡＴＰＧでは制御不能となる論理ゲート端子群である。また、集合ＵＯは、スキャン変換対象のフリップフロップ、すなわちスキャンパス挿入後の回路においてスキャンされるフリップフロップや、外部出力端子から観測不能となる論理ゲート端子群である。近年のコンビネーショナルＡＴＰＧでは、冗長回路、フィードバックループパスを除けば、ほぼ１００％の故障検出可能なパターンが生成できる。また、近年の論理合成ツールで論理回路を合成すれば冗長回路は皆無にできる。したがって、上記のように回路中の全論理回路ゲートの端子数から、テスト時に値が固定されるためにテスト不可能な端子、テスト時に制御不可能な端子、観測不可能な端子を除いて故障検出率を求めることにより、ＡＴＰＧによる故障検出率を予想することができる。
【００４６】
＜ネット探索結果等の表示処理＞
次に、上記ネット探索処理の結果等の表示処理（ステップＳ４）について説明する。本処理は表示制御部２０により制御され、故障検出率の算出過程において求められた集合ＵＴ、集合ＵＣ、集合ＵＯに属する端子名のリストを表示装置に表示させる。すなわち、集合ＵＴ、集合ＵＣ、集合ＵＯのそれぞれに属する端子に対して、論理ゲート構造体を参照して端子名を取得し、それらの端子名を表示装置上に表示させる。これにより、ユーザは表示装置上でテスト不能個所、制御不能個所、観測不能個所を確認できるため、テスト容易化のための回路修正個所の特定や、スキャン化率の検討を容易にでき、設計効率を向上できる。
【００４７】
また、本テスト容易化設計ルール検査装置において、データ入力部３はＡＴＰＧのためのコンストレインのみならず、ユーザにより指定された回路の範囲、すなわち論理ゲートの範囲を入力するようにしてもよい。このとき、表示制御部２０は、指定された回路範囲内のネットワークに対するネット探索結果、すなわち論理値の伝播状況を表示するようにする。すなわち、指定された回路の範囲において論理値がどのように伝播していくかを表示する。これにより、ユーザは、ネット探索結果を確認し、その結果が所望のものか否かを迅速に判断でき、伝播させる論理値の変更→確認→変更等を対話的に処理できる。これにより、テスト容易化のための回路修正等に対して迅速な対応が可能となり、設計効率を向上できる。
【００４８】
以上のように、本テスト容易化設計ルール検査装置は、ＤＦＴルールの検査を行う際に同時に故障検出率を算出する。このため、故障検出率の算出するために、従来のようにＤＦＴルール検査、スキャンパス挿入、テストパターン自動生成（ＡＴＰＧ）による故障検出率の算出、スキャン化率の増減や回路修正を繰り返す必要がなく、設計効率を向上できる。
【００４９】
本実施形態のテスト容易化設計ルール検査装置によれば、テスト容易化設計ルール検査において、テストパターン自動生成（ＡＴＰＧ）による故障検出率を予想することができる。これにより、故障検出率を求めるために、テスト容易化設計のルール検査、スキャンパス挿入、テストパターン自動生成による故障検出率の算出、スキャン化率の増減や回路修正の各処理を繰り返す必要がなくなり、設計効率を向上できる。
【００５０】
また、テスト不能個所、制御不可能個所、観測不可能個所が表示されるため、テスト容易化設計のための回路修正個所の特定やスキャン化率の検討が容易にでき、設計効率を向上できる。
【００５１】
また、指定された回路範囲におけるネット探索の結果が表示される。このため、ユーザは回路の所望範囲の論理伝播状況を確認でき、テスト状態時のスキャンパス解析が可能となる。これにより、テスト容易化設計のための回路修正個所の特定やスキャン化率の検討が容易にでき、設計効率を向上できる。
【産業上の利用可能性】
【００５２】
本発明は、論理ゲートを含む集積回路に対するテスト容易化設計に適用可能である。
【図面の簡単な説明】
【００５３】
【図１】本発明に係るテスト容易化設計ルール検査装置のブロック構成図。
【図２】Ｃ言語の構造体を用いて構成された論理ゲート情報の構成例を示した図。
【図３】Ｃ言語の構造体を用いて構成された論理ゲート情報において格納されるデータの具体例を示した図。
【図４】Ｃ言語の構造体を用いて構成された信号接続情報の構成例を示した図。
【図５】Ｃ言語の構造体を用いて構成された信号接続情報において格納されるデータの具体例を示した図。
【図６】（ａ）Ｃ言語の構造体を用いて構成された集合データベースの構成例を示した図と、（ｂ）その集合データベースにおいて格納されるデータの具体例を示した図。
【図７】本発明に係るテスト容易化設計ルール検査装置のネット探索処理を示すフローチャート。
【図８】本発明に係るテスト容易化設計ルール検査装置のネット探索処理における次の訪問先の設定処理を示すフローチャート。
【図９】本発明に係るテスト容易化設計ルール検査装置のネット探索処理を実現するプログラム例を示す図。
【図１０】本発明に係るテスト容易化設計ルール検査装置の全体動作を示すフローチャート。
【図１１】本発明に係るテスト容易化設計ルール検査装置の故障検出率算出処理を示すフローチャート。
【図１２】（ａ）一般的な論理値の伝播を説明した図と、（ｂ）論理値Ｘの伝播を説明した図。
【符号の説明】
【００５４】
３  データ入力部
５  ＤＦＴルール検査部
１０  故障率算出部
１３  ネット探索部
１５  集合生成部
１７  故障率計算部
２０  表示制御部
５０  ネットワーク構造データベース
５１  論理ゲート情報
５３  信号接続情報
６０  集合データベース
【図１】
2006228213.tif 000003
【図２】
2006228213.tif 000004
【図３】
2006228213.tif 000005
【図４】
2006228213.tif 000006
【図５】
2006228213.tif 000007
【図６】
2006228213.tif 000008
【図７】
2006228213.tif 000009
【図８】
2006228213.tif 000010
【図９】
2006228213.tif 000011
【図１０】
2006228213.tif 000012
【図１１】
2006228213.tif 000013
【図１２】
2006228213.tif 000014