(57)【要約】【課題】少ないテストパターンで一定のテスト品質を得ることができ、テストコストを削減できるテストパターン選択装置を提供する。【解決手段】論理回路内に仮定される故障を検出する為に、検証パターンの集合から機能検証カバレジまたは故障の検出率を基準にして一部の検証パターンを第１のテストパターンとして選択する第１のテストパターン選択部と、選択された第１のテストパターン（選択テストパターン）によって検出されない故障（第１の未検出故障）にレイアウトに関する重みを付す重み付け部と、選択されなかった検証パターン（非選択検証パターン）の中から第１の未検出故障に付された重みを考慮して一部の検証パターンを第２のテストパターンとして選択する第２のテストパターン選択部とを有する。【選択図】　　　図１
2004125670.tif 000002
【特許請求の範囲】
【請求項１】
論理回路の動作を検証すると共に前記論理回路内に仮定される故障を検出する為のテストパターンの集合から、機能検証カバレジまたは前記故障の検出率等を基準にして、一部の前記テストパターンを選択する第１のテストパターン選択部と、
選択された前記テストパターン（以後、「選択テストパターン」という）を用いて前記故障を検出できるか否かを計算する第１の故障シミュレーションを実行する故障シミュレーション部と、
少なくとも前記選択テストパターンによって検出されなかった故障（以後、「第１の未検出故障」という）に、前記論理回路のレイアウトに関する重みを付す重み付け部と、
選択されなかった前記テストパターン（以後、「非選択テストパターン」という）の任意の１本を用いて、前記第１の未検出故障を検出できるか否かを計算する第２の故障シミュレーションを実行する前記故障シミュレーション部と、
前記非選択テストパターンの中から、前記第１の未検出故障に付された前記重みを考慮して、一部の前記テストパターンを選択する第２のテストパターン選択部と
を有することを特徴とするテストパターン選択装置。
【請求項２】
前記第１の故障シミュレーションの結果、故障の検出率向上が所定の基準以下だった選択パターンは、非選択パターンに加えるか、以降の選択から除外することを特徴とする請求項１記載のテストパターン選択装置。
【請求項３】
前記第１の未検出故障のリストから、一部の前記故障を抽出する故障抽出部を更に有し、
前記故障シミュレーション部は、前記非選択テストパターンの任意の１本を用いて、抽出された前記故障（以後、「第２の未検出故障」という）を検出できるか否かを計算し、
前記第２のテストパターン選択部は、前記非選択テストパターンの中から、前記第２の未検出故障に付された前記重みを考慮して、一部の前記テストパターンを選択する
ことを特徴とする請求項１記載のテストパターン選択装置。
【請求項４】
前記第１のテストパターン選択部は、
前記テストパターンの機能検証カバレッジを評価する機能検証カバレッジ評価部と、
前記テストパターンの集合から、前記機能検証カバレッジを基準にして、一部の前記テストパターンを選択する選択実行部と
を有することを特徴とする請求項１又は２記載のパターン選択装置。
【請求項５】
前記第１の故障シミュレーションは、選択テストパターンの任意の１本について実行し、前記第２のテストパターン選択装置を用いて故障の検出率または検出に伴うレイアウト重みの向上に寄与の小さいものは非選択テストパターンに加えるか以降の選択から除外することを特徴とする請求項１又は２記載のパターン選択装置。
【請求項６】
前記故障抽出部は、前記重みを基準にして、前記第１の未検出故障のリストから一部の前記故障を抽出することを特徴とする請求項２記載のテストパターン選択装置。
【請求項７】
論理回路の動作を検証すると共に前記論理回路内に仮定される故障を検出する為のテストパターンの集合から、機能検証カバレジまたは前記故障の検出率等を基準にして、一部の前記テストパターンを選択し、
選択された前記テストパターン（以後、「選択テストパターン」という）を用いて前記故障を検出できるか否かを計算し、
少なくとも前記選択テストパターンによって検出されなかった故障（以後、「第１の未検出故障」という）に、前記論理回路のレイアウトに関する重みを付し、
選択されなかった前記テストパターン（以後、「非選択テストパターン」という）の任意の１本を用いて、前記第１の未検出故障を検出できるか否かを計算し、
前記非選択テストパターンの中から、前記第１の未検出故障に付された前記重みを考慮して、一部の前記テストパターンを選択する
ことを特徴とするテストパターン選択方法。
【請求項８】
前記第１の未検出故障のリストから、一部の前記故障を抽出し、
前記非選択テストパターンの任意の１本を用いて、抽出された前記故障（以後、「第２の未検出故障」という）を検出できるか否かを計算し、
前記非選択テストパターンの中から、前記第２の未検出故障に付された前記重みを考慮して、一部の前記テストパターンを選択する
ことを特徴とする請求項７記載のテストパターン選択方法。
【請求項９】
論理回路の動作を検証すると共に前記論理回路内に仮定される故障を検出する為のテストパターンの集合から、機能検証カバレジまたは前記故障の検出率等を基準にして、一部の前記テストパターンを選択することは、
前記テストパターンの機能検証カバレッジを評価し、
前記テストパターンの集合から、前記機能検証カバレッジを基準にして、一部の前記テストパターンを選択することである
ことを特徴とする請求項７又は８記載のパターン選択方法。
【請求項１０】
前記第１の未検出故障のリストから、一部の前記故障を抽出することは、前記重みを基準にして行うことを特徴とする請求項８記載のテストパターン選択方法。
【請求項１１】
コンピュータに、
論理回路の動作を検証すると共に前記論理回路内に仮定される故障を検出する為のテストパターンの集合から、機能検証カバレジまたは前記故障の検出率等を基準にして、一部の前記テストパターンを選択し、
選択された前記テストパターン（以後、「選択テストパターン」という）を用いて前記故障を検出できるか否かを計算し、
少なくとも前記選択テストパターンによって検出されなかった故障（以後、「第１の未検出故障」という）に、前記論理回路のレイアウトに関する重みを付し、
選択されなかった前記テストパターン（以後、「非選択テストパターン」という）の任意の１本を用いて、前記第１の未検出故障を検出できるか否かを計算し、
前記非選択テストパターンの中から、前記第１の未検出故障に付された前記重みを考慮して、一部の前記テストパターンを選択する
ことを実行させることを特徴とするテストパターン選択プログラム。
【請求項１２】
前記第１の未検出故障のリストから、一部の前記故障を抽出し、
前記非選択テストパターンの任意の１本を用いて、抽出された前記故障（以後、「第２の未検出故障」という）を検出できるか否かを計算し、
前記非選択テストパターンの中から、前記第２の未検出故障に付された前記重みを考慮して、一部の前記テストパターンを選択する
ことを特徴とする請求項１１記載のテストパターン選択プログラム。
【請求項１３】
論理回路の動作を検証すると共に前記論理回路内に仮定される故障を検出する為のテストパターンの集合から、機能検証カバレジまたは前記故障の検出率等を基準にして、一部の前記テストパターンを選択することは、
前記テストパターンの機能検証カバレッジを評価し、
前記テストパターンの集合から、前記機能検証カバレッジを基準にして、一部の前記テストパターンを選択することである
ことを特徴とする請求項１１又は１２記載のパターン選択プログラム。
【請求項１４】
前記第１の未検出故障のリストから、一部の前記未検出故障を抽出することは、前記重みを基準にして行うことを特徴とする請求項１２記載のテストパターン選択プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、テストパターン選択装置、テストパターン選択方法、及びテストパターン選択プログラムに関し、特に、製造品質との相関の強いレイアウト情報を反映した故障検出率を活用したテストパターンの効果的な削減に使用される、ＬＳＩの故障シミュレーションの応用技術に関する。
【０００２】
【従来の技術】
通常、製造されたＬＳＩのチップに対しては、出荷前にそのチップが不良品でないことを確認し、不良品と判定された場合には廃棄する（出荷しない）出荷テスト（製造品質テスト）が行われる。この出荷テストは、論理回路内に存在している可能性のある故障を検出する為のテストパターンを用いて行われる。この出荷テストにおいては、使用するテストパターンがＬＳＩ内の故障をどれだけ確実に検出できるか（故障検出率）が重要なポイントとなるが、この故障検出率の評価は、出荷テストに使用するテストパターンを用いた故障シミュレーションにより行われる。
【０００３】
また、テストパターンとして、ＬＳＩ開発時の機能検証に使用する複数の検証パターンを用いることも多い。検証パターンを用いた故障シミュレーションは、非常に多くのＣＰＵリソースを必要とする。近年のＬＳＩの大規模化等に伴い、検証パターンのサイズ（ステップ数）が増大している。よって、検証パターンをそのままテストパターンに流用することは困難であり、テストパターンとして使用する検証パターンを大幅に削減することが必須条件となっている。（以後、製造品質のテスト（出荷テスト）で使用する検証パターンは、すべて「テストパターン」と呼ぶ。）。
【０００４】
従来、一定の故障検出率を維持しつつ、使用するテストパターンを大幅に削減する技術がある（例えば、特許文献１参照。）。ここではまず、ＬＳＩのＲＴＬ（Ｒｅｇｉｓｔｅｒ　Ｔｒａｎｓｆｅｒ　Ｌｅｖｅｌ）記述に対して、検証パターンがどの程度の機能検証カバレジを達成しているかを評価し、総ての検証パターンと同じ機能検証カバレジを達成する最小の検証パターンの集合を第１のテストパターンとして選択する。選択された第１のテストパターンを用いて故障シミュレーションを行って第１の未検出故障リストを抽出し、第１の未検出故障の一部を無作為抽出して第２の未検出故障リストを作成する。非選択検証パターンを用いて第２の未検出故障リストに対して故障シミュレーションを行い、検証パターン毎の検出／未検出故障リストを作成する。このリストを参照して非選択検証パターンの中から故障検出率向上への寄与が大きい検証パターンを第２のテストパターンとして選択する。こうして、最初に選択した第１のテストパターンと、非選択の検証パターンから選択した第２のテストパターンを合わせ、ＬＳＩの出荷テストに用いるテストパターンとする。
【０００５】
また、論理回路の論理接続情報と、レイアウト情報と、論理接続ノードに仮定される故障と関連付けて抽出されるレイアウト関連パラメータ情報から、重み付き故障リスト或いは重み付き故障検出率を出力する技術（例えば、特許文献２参照。）もある。
【０００６】
【特許文献１】
特開２００１−２７３１６０号公報
【０００７】
【特許文献２】
特開２０００−２７６５００号公報
【０００８】
【発明が解決しようとする課題】
上述したように、第１の従来技術は、機能検証カバレジをパターン選択のための指標とする機能検証カバレジ評価ツールと、故障検出率をパターン選択のための指標とする故障シミュレーションの応用ツールとを組合せている。これにより、故障検出率を殆ど低下させることなくテストパターン数（サイズ）を大幅に削減することができていた。
【０００９】
しかしながら、ここで仮定されている故障は、ＬＳＩ内部の接続ノードや基本セルの入出力端子といったように、論理的な意味で定義されたものであるに過ぎず、製造テスト品質（不良品リジェクト率）とより密接に関連しているレイアウト要素の情報が考慮されていなかった。したがって、レイアウト要素の情報を考慮した場合に比べ、有効性が低いテストパターンを選択する可能性があり、結果としてテストパターン数が多くなってしまうという問題があった。
【００１０】
本発明はこのような従来技術の問題点を解決するために成されたものであり、その目的は、少ないテストパターンで一定のテスト品質を得ることができ、テストコストを削減することができるテストパターン選択装置、テストパターン選択方法、及びテストパターン選択プログラムを提供することである。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の特徴は、論理回路内に仮定される故障を検出する為に、検証パターンの集合から機能検証カバレジまたは故障の検出率を基準にして一部の検証パターンを第１のテストパターンとして選択する第１のテストパターン選択部と、選択された第１のテストパターン（選択テストパターン）を用いて故障を検出できるか否かを計算する第１の故障シミュレーション部と、第１のテストパターンによって検出されなかった故障（第１の未検出故障）に論理回路のレイアウトに関する重みを付す重み付け部と、選択されなかった検証パターン（非選択検証パターン）を用いて第１の未検出故障を検出できるか否かを計算する第２の故障シミュレーション部と、非選択検証パターンの中から第１の未検出故障に付された重みを考慮して一部の検証パターンを第２のテストパターンとして選択する第２のテストパターン選択部とを有するテストパターン選択装置であることである。論理回路の出荷テストは、第１及び第２のテストパターンを用いて行われる。
【００１２】
本発明の第１の特徴によれば、第１のテストパターン選択部が選択する第１のテストパターンには漏れたが、レイアウトに関する重みを考慮した故障検出率の向上に大きな寄与があり、かつテストパターン長の増加が少ない検証パターンを第２のテストパターンとして優先的に選択することができる。
【００１３】
本発明の第２の特徴は、論理回路内に仮定される故障を検出する為に、検証パターンの集合から機能検証カバレジまたは故障の検出率を基準にして一部の検証パターンを第１のテストパターンとして選択し、選択された第１のテストパターン（選択テストパターン）を用いて故障を検出できるか否かを計算し、第１のテストパターンによって検出されなかった故障（第１の未検出故障）に論理回路のレイアウトに関する重みを付し、選択されなかった検証パターン（非選択検証パターン）を用いて第１の未検出故障を検出できるか否かを計算し、非選択検証パターンの中から第１の未検出故障に付された重みを考慮して一部の検証パターンを第２のテストパターンとして選択するテストパターン選択方法であることである。論理回路の出荷テストには、第１及び第２のテストパターンを用いる。
【００１４】
本発明の第３の特徴は、コンピュータに、論理回路内に仮定される故障を検出する為に、検証パターンの集合から機能検証カバレジまたは故障の検出率を基準にして一部の検証パターンを第１のテストパターンとして選択し、選択された第１のテストパターン（選択テストパターン）を用いて故障を検出できるか否かを計算し、第１のテストパターンによって検出されなかった故障（第１の未検出故障）に論理回路のレイアウトに関する重みを付し、選択されなかった検証パターン（非選択検証パターン）を用いて第１の未検出故障を検出できるか否かを計算し、非選択検証パターンの中から第１の未検出故障に付された重みを考慮して一部の検証パターンを第２のテストパターンとして選択することを実行させるテストパターン選択プログラムであることである。
【００１５】
本発明の第２及び第３の特徴によれば、第１のテストパターン選択には漏れたが、レイアウトに関する重みを考慮した故障検出率の向上に大きな寄与があり、かつパターン長の増加が少ない検証パターンを第２のテストパターンとして優先的に選択することができる。
【００１６】
【発明の実施の形態】
以下図面を参照して、本発明の実施の形態を説明する。図面の記載において同一あるいは類似部分には同一あるいは類似な符号を付している。
【００１７】
図１に示すように、本発明の実施の形態に係るテストパターン選択装置は、実施の形態に係るパターン選択方法を実行する為の機能手段を備えた演算部１と、データや命令を転送する為のバス１１を介して演算部１に接続されたデータ記憶部及びプログラム記憶部１２とを少なくとも有する。演算部１は、第１のテストパターン選択部２０と、故障シミュレーション部２１と、重み付け部２３と、故障抽出部２４と、第２のテストパターン選択部２６とを有する。データ記憶部は、故障リスト記憶部２と、テストパターン記憶部３と、レイアウト情報記憶部４と、レイアウト関連パラメータ情報記憶部４．５と、回路情報記憶部５と、基本セルライブラリ記憶部６と、選択情報記憶部７とを有する。レイアウト情報記憶部４にはレイアウト情報３６、レイアウト関連パラメータ情報記憶部４．５にはレイアウト関連パラメータ情報３６が格納されている。回路情報記憶部５にはＲＴＬネット３７及びゲートレベルネット３８の情報が格納されている。
【００１８】
演算部１は、通常のコンピュータシステムの中央処理装置（ＣＰＵ）の一部として構成すればよい。第１のテストパターン選択部２０、故障シミュレーション部２１、重み付け部２３、故障抽出部２４、及び第２のテストパターン選択部２６は、それぞれ専用のハードウェアで構成しても良く、通常のコンピュータシステムのＣＰＵを用いて、ソフトウェアで実質的に等価な機能を有する機能手段として構成しても構わない。
【００１９】
故障リスト記憶部２、テストパターン記憶部３、レイアウト情報記憶部４、レイアウト関連パラメータ情報記憶部４．５、回路情報記憶部５、基本セルライブラリ記憶部６、選択情報記憶部７、及びプログラム記憶部１２は、それぞれ、半導体ＲＯＭ、半導体ＲＡＭ等の半導体メモリ装置、磁気ディスク装置、磁気ドラム装置、磁気テープ装置などの外部記憶装置で構成してもよく、ＣＰＵの内部の主記憶装置で構成しても構わない。
【００２０】
また、バス１１には、入出力制御部８を介して、操作者からのデータや命令などの入力を受け付ける入力装置９と、テストパターンの選択結果を出力する出力装置１０が接続されている。入力装置９は、キーボード、マウス、ライトペンまたはフレキシブルディスク装置などで構成されている。また出力装置１０は、ディスプレイ装置やプリンタ装置などにより構成されている。
【００２１】
図１に示した演算部１で実行される各処理の入力データは、データ記憶部に記憶され、プログラム命令はプログラム記憶部１２に記憶されている。そしてこれらの入力データやプログラム命令は必要に応じてＣＰＵに読み込まれ、ＣＰＵの内部の演算部１によって、演算処理が実行されるとともに、一連の演算処理の各段階で発生した数値情報などのデータは、ＲＡＭや磁気ディスクなどのデータ記憶部に格納される。
【００２２】
第１のテストパターン選択部２０は、論理回路内に仮定される故障を検出する為に、検証パターンの集合から、機能検証カバレジまたは故障の検出率を基準にして、一部の検証パターンを第１のテストパターンとして選択する。第１のテストパターン選択部２０により選択されたテストパターンは、選択テストパターン３３としてテストパターン記憶部３に記憶される。一方、第１のテストパターン選択部２０により選択されなかった検証パターンは、非選択検証パターン３４としてテストパターン記憶部３に記憶される。ここで、「論理回路」は、ＬＳＩ全体の論理回路或いはＬＳＩの一部の機能ブロックなどの論理回路を示す。「機能検証カバレジ」（「ＲＴＬコードカバレジ」とも言う）は、ＬＳＩの論理回路のＲＴＬ記述に対し、一般に多数本から構成される検証パターンがどの程度十分に検証を行っているかを確認するための指標であり、ＲＴＬ記述の実行可能な文をどの程度実行したかというステートメントカバレジ（ｓｔａｔｅｍｅｎｔ　ｃｏｖｅｒａｇｅ）、分岐文の真と偽をどの程度実行したかというブランチカバレジ（ｂｒａｎｃｈ　ｃｏｖｅｒａｇｅ）、分岐の論理式の各信号の組み合わせをどの程度実行したかというコンディションカバレジ（ｃｏｎｄｉｔｉｏｎ　ｃｏｖｅｒａｇｅ）、各信号がどの程度変化したかというトグルカバレジ（ｔｏｇｇｌｅ　ｃｏｖｅｒａｇｅ）、等がある。「故障の検出率」は、論理回路内に仮定される故障に対してテストパターンを用いて故障シミュレーションを実施した場合におけるテストパターンが故障を検出する程度を示す。
【００２３】
具体的には、機能検証カバレジを基準にする場合、第１のテストパターン選択部２０は、検証パターンの機能検証カバレジを評価する機能検証カバレジ評価部２８と、検証パターンの集合から、機能検証カバレジを基準にして、一部の検証パターンを選択する選択実行部２９とを有する。近年、ＬＳＩのＲＴＬ記述に対し、一般に多数本の個別検証パターンで構成される検証パターンの集合がどの程度の機能検証カバレジ（「ＲＴＬコードカバレジ」ともいう）を達成しているかを調べる機能検証カバレジ評価ツールが市販されている。さらに、検証パターン毎に得られる機能検証カバレジの評価結果を利用して、全ての検証パターンと同じ機能検証カバレジを達成する最小本数の検証パターンの組を選択する検証パターン選択ツールが市販されている。機能検証カバレジ評価部２８として機能検証カバレジ評価ツールを使用し、選択実行部２９として検証パターン選択ツールを使用することができる。
【００２４】
機能検証カバレジ評価部２８及び選択実行部２９においては、テストパターンとして、ＬＳＩ開発時の機能検証に使用する検証パターンを適宜編集或いは流用して使用している。ＬＳＩの中でも特にＣＰＵのような論理回路において、この検証パターンは、技術者にとって必要な検証項目をカバーしたことが理解しやすいように開発・作成され、検証パターンの長さを最小にしようという意図のもとに作成される訳ではない。したがって、機能検証カバレジ評価ツール及びテストパターン選択ツールを用いた場合、選択テストパターン３３のサイズ（ステップ数）は、全検証パターンの数分の１〜１／１０未満になることもしばしばある。
【００２５】
選択テストパターン３３の集合は、機能検証カバレジという面ではテストパターン記憶部３内の全テストパターン（検証パターン）の集合と等価となる。したがって、ＲＴＬネット３７に対し機能検証カバレジが１００％に近い値に到達しているという条件下では、ゲートレベルネット３８に対しても同様に高い故障の検出率を達成できると期待される。ここで、ゲートレベルネット３８とは、論理回路の内部の多数の基本セル及び入出力端子、及びこれらの間を接続する配線からなるゲートレベルの論理接続ネットを示す。基本セルは、組合せ論理ゲート（簡単な素子も含む）と、ラッチ、フリップフロップ等の記憶セルによって構成されている。さらに、広い意味でＲＯＭ、ＲＡＭといったメモリやその他特殊な回路の動作モデル（故障シミュレーション用）を含む場合もある。
【００２６】
第１の故障シミュレーション部２１は、選択テストパターン３３を用いて故障を検出できるか否かを計算する。ここで、「故障」には、故障リスト記憶部２に記憶されている故障リストが含まれる。また、故障リスト記憶部２に記憶されている故障リストは、通常、第１の故障シミュレーション部２１によってゲートレベルネット３８に対応するものが作成される。故障リストは故障シミュレーション実行前に一旦故障リスト部２に格納しても良いし、故障シミュレーション実行後に故障リスト部２に格納するようにしても良い。本実施例では前者の場合について説明する。「故障」のモデルとしては、ゲートレベルネット３８内の任意の１個の接続ノード（ネット）の値が０または１に固定されたと仮定する単一ネット縮退故障モデルが含まれ、また、ＬＳＩ内部の基本セルの入出力端子部分に０／１縮退故障を仮定する単一ピン縮退故障モデルが更に含まれ、「故障」はいずれかのモデルに従って仮定される。仮定される故障の最大数（総ての可能な箇所に故障仮定した場合の故障数）は、それぞれのモデルにおいて、２×（接続ノード数）個、２×（入出力端子数＋基本セルの入出力端子数）個となる。ここでは、故障シミュレーションは、ゲートレベルネット３８を対象とする場合について説明するが、ゲートレベルネット３８の中に素子レベルの接続ネットが混在しても構わない。
【００２７】
具体的には、故障シミュレーション部２１は、故障リスト記憶部２に記憶されている故障リスト３０ａに対して、選択テストパターン３３と、ゲートレベルネット３８と、基本セルライブラリ６とを用いて第１の故障シミュレーションを実行する。実行結果は、選択テストパターン３３によって故障リストの故障が検出されたかまたは検出されなかったかという情報を含んだ第１の（未）検出故障リスト３０ａとして故障リスト記憶部２に上書き・記憶される。故障検出率はこのリスト３０ａから算出される。通常は故障シミュレーション部２１が算出機能を有してる。
【００２８】
なお、詳細に見ると、故障シミュレーションの結果、故障リスト記憶部２に記憶されている故障は、選択テストパターン３３によって確実に検出された（ｈａｒｄｄｅｔｅｃｔｅｄ）故障、ポテンシャル検出（ｐｏｔｅｎｔｉａｌｌｙ　ｄｅｔｅｃｔｅｄ）故障、ハイパーアクティブ（ｈｙｐｅｒａｃｔｉｖｅ）故障、発振（ｏｓｃｉｌｌａｔｏｒｙ）故障、冗長な故障等に分類される（冗長な故障は故障リスト作成時に分類がなされることもある）。ここで、ポテンシャル検出故障とは、例えば正常な場合には０または１の確定出力であるものが、その故障の存在の結果不定値（ｘ）になるといった範疇の故障を示す。発振故障は故障の存在により回路が発振してしまう故障である。また、ハイパーアクティブ故障とは、特定のテストパターンでの故障シミュレーションにおいてＣＰＵ時間の無意味な増加を招く恐れがあるため計算を中断した故障を示す。故障シミュレーションを複数回実施してポテンシャル検出が所定の回数を越えた場合、ポテンシャル検出故障は、ほぼ確実に検出されたと見做してポッシブル検出（ｐｏｓｓｉｂｌｙ　ｄｅｔｅｃｔｅｄ）と分類される場合もある。これらの分類の中で第１の（未）検出故障リスト３０ａに本発明における未検出故障として含まれるものは、基本的には、完全な未検出故障と、ハイパーアクティブ故障とである。或いは、発振故障、ポテンシャル検出故障の一部（割合）まで含ませても構わない。さらに、最近は、複数回の確実な検出がＬＳＩ内部の実際の不良の検出能力の向上に有効であることが分かってきており、所定の検出回数に満たない「確実な検出」故障まで含ませても良い。なお、本発明の上記「未検出」扱いの故障を、故障リスト３０ａと異なる故障リストにまとめるようにしても良い。
【００２９】
重み付け部２３は、第１の（未）検出故障リスト３０ａの故障（少なくとも前記「未検出」扱いの故障）に、論理回路のレイアウトに関する重みを付す。論理回路のレイアウトに関する重みは、レイアウト情報記憶部４に格納された対象とするＬＳＩのレイアウト情報３６から、レイアウト関連パラメータ情報記憶部４．５に格納されたレイアウト関連パラメータ情報３６．５に従って抽出される。レイアウト情報としては、自動配置配線ツールがＬＳＩの基本セルの配置及び基本セルの入出力端子（ＬＳＩの入出力端子含む）間の配線処理を行った結果の情報や、さらには、基本セル内部のレイアウト情報まで含んだものもある。レイアウト関連パラメータ情報３６．５は、対象とするＬＳＩのレイアウト情報から着目する論理接続ノード又は入出力端子に仮定される故障と関連付けて抽出されるべき情報である。重み付け部２３は、レイアウト情報３６から、レイアウト関連パラメータ情報３６．５に従って、ＬＳＩ内の論理接続ノード又は入出力端子に対応する所定のレイアウト要素の量を重みとして抽出（算出）し、関連する故障に対応付ける。なお、所定のレイアウト要素の量を、論理回路のレイアウトに関する重みとする代わりに、操作者が外部から論理回路のレイアウトに関する重みを直接指示しても構わない。
【００３０】
具体的には、レイアウト関連パラメータ情報３６．５には、故障発生の原因になりやすく、論理接続ノード又は入出力端子に仮定された故障と対応付けしたいレイアウト要素、その組合せ、乃至それらを決定する為の制約条件・規則などに関する情報が含まれる。故障と対応付けしたいレイアウト要素には、例えば、隣り合う配線との距離が最小ピッチとなっている配線部分の長さや、最小サイズのコンタクトだけで接合された部分の個数などが含まれる。
【００３１】
故障の重み付けにより、論理接続ノード又は入出力端子に仮定された故障とレイアウト上現実に故障が発生し易い個所との対応を明確にすることができる。重みが付された第１の（未）検出故障リスト３０ａは、第１の（未）検出故障リスト（重み付き）３０ｂとして故障リスト記憶部２に記憶される。重みを付す前の故障リストと、重みを付した後の故障リストは、例えば表１及び表２に示すようになる。
【００３２】
【表１】
2004125670.tif 000003
【表２】
2004125670.tif 000004
表１及び表２中の“Ｄ”は故障シミュレーションにより確実に検出されたことを示し、“Ｕ”は検出されなかったことを示す。縮退故障である“故障Ａ”は、例えばＬＳＩ内部の接続ノード名と、“０”への縮退（ｓｔｕｃｋ−ａｔ０：ＳＡ０）或いは“１”への縮退（ｓｔｕｃｋ−ａｔ１：ＳＡ１）を区別する情報（ＳＡ０／ＳＡ１）とによって構成されている。さらに、代表故障（ｒｅｐｒｅｓｅｎｔａｔｉｖｅ　ｆａｕｌｔ）か等価故障（ｅｑｕｉｖａｌｅｎｔ　ｆａｕｌｔ）かを区別する情報（例えばｒｅｐ／ｅｑ）が追加されることがある。故障の中には、ＬＳＩ外部から総ての可能なテストパターンを印加しても、誤り出力（正常回路の場合と異なる出力）が互いに全く同じとなって区別ができないものがあり、そうした故障同士を等価故障という（こうした等価故障の組は多数存在する）。故障シミュレーションでは、ＣＰＵ時間制約の為、等価故障の各組毎に各１個を代表故障として選び、実行するのが一般的である。故障リストでは、代表故障のすぐ下の行以降に関連する等価故障を記載することが多い。未検出故障の正しい優先度付け（テストパターン追加の優先度付け）のためには、この等価故障まで考慮して重みを算出できるようにしておくことが望ましい。ここで、接続ノード名としては、通常“／Ｉ１５／Ｉｘｙｚ／Ａ［１２］”のように、接続ネットの階層を反映した形で記載される。また、表１では、各故障Ａ，Ｂ，Ｃに対し、それぞれ重みＷＡ，ＷＢ，ＷＣが付されている。表２では、各故障（Ａ，Ｂ，Ｃ）に対し、付加すべき複数（２種類）のレイアウト要素の重みｗ１（異なるメタル配線間の最小接続コンタクト数）、ｗ２（メタル配線長）の重みが記載され、それぞれに対応する具体的なレイアウト要素の詳細（例えばｗ１Ａに対しては個々の識別名の和（Ｖ１２＿３１＋Ｖ２１＿１７８２）の形で表記）が付記されており、さらに最終の重みＷが付された形となっている。例えば、故障Ａについては、ＷＡ＝ｘ・ｗ１Ａ＋ｙ・ｗ２Ａという式によって算出される（ｘ、ｙは適当な定数：故障Ｂ、Ｃについても同様）。この計算は重み付け部２３によって実行される。こうした式の情報は、予め必要なレイアウト関連パラメータ情報を検討して各故障に付加すべき重みを決定し、重み付け部２３に計算プログラムとして格納しておくと良い。この際、定数部分については、レイアウト関連パラメータ３６．５の一部とパラメータ設定できるようにしても良い。なお、各故障に重みを付すに当って注意すべき点は、複数の故障が特定のレイアウト要素を共有する場合がしばしばあることである。この例を図２に示す。基本セルＣ０からＣ１、Ｃ２、Ｃ３に配線が接続されており（接続ノードＡ）、それぞれの端子Ｚ、Ａ１、Ａ２、Ａ３に故障ｆｌｔ０、ｆｌｔ１、ｆｌｔ２、ｆｌｔ３（総て０縮退か、または１縮退故障）が定義されている。ノードＡを構成するレイアウト要素は、第１層メタル配線Ｍ１＿０〜Ｍ１＿３、第１層・第２層メタル間コンタクト（ＶＩＡ）（最小サイズのもの）Ｖ１２＿０〜Ｖ１２＿３、第２層メタル配線Ｍ２＿１〜Ｍ２＿３（実際は１本の配線、計算の便宜上）である。ここで、故障ｆｌｔ０、ｆｌｔ２が、検出（Ｄ）、ｆｌｔ１、ｆｌｔ３が未検出（Ｕ）とすると、上記レイアウト要素の内、Ｍ１＿０、Ｖ１２＿０、Ｍ２＿２、Ｖ１２＿２、Ｍ１＿２の部分に生じた不良は検出されることになるが、その他のレイアウト要素に対応した部分に発生した不良は検出できない。ここで未検出の故障ｆｌｔ１に対応するレイアウト要素について見てみると、Ｍ１＿０、Ｖ１２＿０、Ｍ２＿２、Ｍ２＿１、Ｖ１２＿１、Ｍ１＿１であるが、ｆｌｔ０、ｆｌｔ２の検出によって、Ｍ１＿０、Ｖ１２＿０、Ｍ２＿２、Ｍ１＿２に発生する不良は確実に検出できると判明しているため、ｆｌｔ０、ｆｌｔ２が検出という条件下で未検出故障ｆｌｔ１に対応するレイアウト要素は、Ｍ２＿１、Ｖ１２＿１、Ｍ１＿１となる。また、ｆｌｔ０、ｆｌｔ３が検出で、ｆｌｔ１、ｆｌｔ２が未検出の場合、ｆｌｔ１に対応するレイアウト要素は、Ｍ２＿２、Ｍ２＿１、Ｖ１２＿１、Ｍ１＿１となる。このように、特定のレイアウト要素が複数の故障に共有される場合があるため、未検出故障に対応させるべきレイアウト要素は、他の故障の検出（未検出）状況に依存する場合があることに注意し、重み付けする必要がある。
【００３３】
故障抽出部２４は、第１の（未）検出故障リスト（重み付き）３０ｂから、レイアウトに関する重みを基準にして、本発明において「未検出」扱いとする故障の一部を抽出し、「未検出」故障リスト３１を作成する。即ち、故障抽出部２４は、レイアウトに関する重みに対応（基本的には比例）した確率で、一部の未検出扱いの故障の一部を無作為抽出する（総てを抽出しても良い）。これにより、意味のある（実際発生する不良と強い相関のある）故障を用いてテストパターンの選択を実施することができる。なお、故障抽出部２４は、レイアウトに関する重みを基準にする代わりに、第１の（未）検出故障リスト（重み付き）３０ｂ内の「未検出」扱いの故障を重みを考慮せずに無作為抽出（ランダム・ランプリング）しても構わない。
【００３４】
故障抽出部２４は、故障シミュレーションの実行に必要なＣＰＵ時間を減少させることを目的とする。故障シミュレーションの実行時間は、抽出の割合にほぼ比例する。抽出の割合を低くすると、抽出されなかった故障の検出に関する推定の信頼度が低下し、また、追加選択されるテストパターンが減り、故障の検出率の信頼性が低下することになる。しかし、前述したように、機能検証カバレジ評価部２８及び選択実行部２９が選択したテストパターン３３は、故障の検出率（故障シミュレーション部２１が故障シミュレーション実行後の故障リスト３０ｂに対応する結果として出力）が全テストパターンによるものにかなり近くなると考えられる。したがって、抽出の割合をある程度低くしても、故障検出率の結果に大きな食い違いが出る余地は小さくなると考えられる。しかしながら、抽出の割合をあまり低くしすぎると、テストパターン選択の信頼性が低下するため、経験的に適当な値にすることが望ましい。
【００３５】
次に、故障シミュレーション部２１は、非選択テストパターン３４を用いて、第２の「未検出」故障リスト３１の故障を検出できるか否かを計算する。即ち、故障シミュレーション部２１は、第２の「未検出」故障リスト３１に対して、非選択テストパターン３４と、ゲートレベルネット３８と、基本セルライブラリ６とを用いて第２の故障シミュレーションを実行する。故障シミュレーションは、非選択テストパターン３４の任意の１本について実行される。非選択テストパターン３４によって検出された故障は、追加検出故障リスト３２として故障リスト記憶部２に記憶される。追加検出故障リスト３２は、総ての非選択テストパターン３４についてテストパターン毎に作成される。
【００３６】
なお、第２の「未検出」故障リスト３１の故障には重みが付されている。故障シミュレーションは、通常、重み付きの故障に対して実行できない。しかし、簡単なプログラムにより、故障シミュレーション部２１への入力にはレイアウト要素の重みを省略した故障リストを用いるようにすることが可能である。また、故障シミュレーション部２１から出力される追加検出故障リスト３２には再び重みが付される。
【００３７】
第２のテストパターン選択部２６は、非選択テストパターン３４の中から、追加検出故障リスト３２の故障に付された重みを考慮した故障の検出率を基準にして、一部のテストパターンを選択する。このとき、第２のテストパターン選択部２６は、重み付きの「未検出」故障リスト３１、重み付きの追加検出故障リスト３２及び選択情報記憶部７に記憶されている選択情報を入力情報として用いる。ここで、「選択情報」は、故障リストから直接には得られない、パターン選択のために必要な情報を示す。第２のテストパターン選択部２６によって選択されたテストパターンは、追加選択テストパターン３５としてテストパターン記憶部３に記憶される。追加選択テストパターン３５及び選択テストパターン３３からなるテストパターンの集合は、テストパターン記憶部３内の全テストパターンで到達することができる故障の検出率とほぼ同じ故障の検出率を達成することができる。第２のテストパターン選択部２６の詳細な構成は図３を参照して後述する。
【００３８】
最後に、故障シミュレーション部２１は、追加選択テストパターン３５を用いて、第１の（未）検出故障リスト３０ｂの「未検出」故障を検出できるか否かを計算する。即ち、故障シミュレーション部２１は、第１の（未）検出故障リスト３０ｂに対して、追加選択テストパターン３５と、ゲートレベルネット３８と、基本セルライブラリ６とを用いて第３の故障シミュレーションを実行する。故障シミュレーション部２１は、最終的な故障の検出率を確認することを目的とする。最終的な故障の検出率は、追加選択テストパターン３５及び選択テストパターン３３からなるテストパターンの集合により達成される故障検出率を示す。なお、故障シミュレーション部２１は、第１の（未）検出故障リスト（重み付き）３０ｂの代わりに、第１の（未）検出故障リスト３０ａを用いても構わない。
【００３９】
故障シミュレーション部２１による第３の故障シミュレーションによって、論理回路（ゲートレベルネット３８）に対する最終的な重み付き故障検出率及び未検出故障のリスト（３０ｃ、ｄ）などが得られる。「未検出故障」とは、選択テストパターン３３及び追加選択テストパターン３５によって検出されなかった故障であり、基本的には完全な未検出故障とハイパーアクティブ故障からなり、場合によってポテンシャル検出故障及び発振故障の一部（割合として含む）からなる。第３のシミュレーションにより、故障抽出部２４によって抽出されなかった「未検出」扱いの故障についても追加選択テストパターン３５による検出／未検出が明確となり、対象とするＬＳＩなどの論理回路の未検出故障解析、追加テストパターンの作成を容易にすることができる。なお、（レイアウト要素の）重み付きの故障検出率は、（１）式により定義される。
【００４０】
重み付き故障検出率
＝（検出された故障の重みの総和）／（全故障の重みの総和）・・・（１）
図３に示すように、第２のテストパターン選択部２６は、追加検出故障数評価部５１と、候補テストパターン選択部５２と、ベストパターン選択部５３と、ベストパターン評価部５４と、評価対象リスト変更部５５とを有する。
【００４１】
追加検出故障数評価部５１は、非選択テストパターン３４の１本ごとに、評価対象となる「未検出」故障リスト（評価対象リスト）の「未検出」故障と追加検出故障リスト３２内の追加検出故障（またはレイアウト要素）を比較し、追加検出故障数（またはその重み）が０（または殆ど０）である、即ち故障を全く（または殆ど全く）追加検出していない非選択テストパターン３４を、第２のテストパターン選択部２６の選択対象から除外する。但し、最初のステップでは、上記比較は不要であり、追加検出故障リスト３２内で追加検出故障数（またはその重み）が０または０に近いものを除外するだけで良い。
【００４２】
候補テストパターン選択部５２は、（２）式に示す評価値（ＥＶ）の条件式を満たす非選択テストパターン３４の１本以上を候補テストパターンとして選択する。
【００４３】
ＥＶ（パターン）≧α　　　　　　　　　　　　　　　・・・（２）
なお、αは、０＜α≦１である。具体的には、まず、候補テストパターン選択部５２は、非選択テストパターン３４の１本毎の追加検出故障リスト３２（重み付き）、選択情報記憶部７内の選択情報及び評価対象リスト（最初は重み付きの「未検出」故障リスト３１）を元に、非選択テストパターン３４毎に評価値（ＥＶ）を計算する。そして、その評価値（ＥＶ）が一定の値（α）以上である１又は２以上のテストパターンを候補テストパターンとして選択する。評価値（ＥＶ）の計算式の例を（３）乃至（５）式に示す。
【００４４】
ＥＶ（パターン）＝　ｒ×（規格化された追加検出故障重み）＋（１−ｒ）／（規格化されたテストパターン長）・・・（３）
（規格化された追加検出故障重み）＝　（その非選択テストパターンで追加検出された故障の重みの総和）／（その時点での全ての非選択テストパターン別の追加検出された全故障重みの総和の最大値）　　　・・・（４）
（規格化されたテストパターン長）＝　（その非選択テストパターンの長さ（ステップ数））／（その時点での全ての非選択テストパターン別の最大長さ（ステップ数））・・・（５）
ここで、上記の各故障の重みは図２で説明したように、検出された故障による影響を正しく考慮しつつ、前出の表２のリストを用い、前出の重み付け式に従って算出する。
【００４５】
なお、ｒは、０≦ｒ≦１である。ｒは、追加検出故障のレイアウト要素による重みとテストパターン長の逆数（１／テストパターン長）の間の重み付けを調整するためのパラメータであり、選択情報として与えられる。ｒの値が大きくなると、テストパターン長よりも追加検出故障の重みの方を重視することになり、重み付き故障検出率の向上へ寄与するテストパターンが優先的に選択される。しかし、テストパターン長が長く、テスト時間が長いテストパターンが選択されてしまう欠点がある。第３の故障シミュレーションのＣＰＵ時間が長くなるという影響もある。
【００４６】
一方、ｒの値が小さくなると、テストパターン長の短いテストパターンが優先的に選択されることになる。しかし、選択したテストパターンの本数が増えても、それに比例して追加検出される故障数が速やかに増加していかない。したがって、所定の故障検出率に到達するまで第２のテストパターン選択部２６内においてより多くの計算を実行させる必要が生じ、全体のＣＰＵ時間が増加してしまう欠点が出てくる。実際の使用では、経験的に妥当な値を設定する必要がある。
【００４７】
ベストパターン選択部５３は、候補テストパターンの中で、評価値（ＥＶ）が最大であるテストパターンを含め適当な本数をベストパターンとして選択する。
【００４８】
ベストパターン選択部５３は、まず、評価値（ＥＶ）が最大の「最初の」ベストパターン１本の追加検出故障リスト３２と、評価対象リストＢ０とを比較する。ここで、「評価対象リストＢ０」の初期値は、第２の「未検出」故障リスト３１を示す。具体的には、評価対象リストＢ０の「未検出」故障のうち、ベストパターンによってどの故障（及びレイアウト要素）が検出され、またどの故障（及びレイアウト要素）が未検出のままかを求め、検出されたものについては、評価対象リストＢ０から除外し、除外後のリストを新たに評価対象リストＢ０とする。このリストＢ０と残りの候補テストパターンの追加検出故障リスト３２とを比較する。評価対象リストＢ０に対して残りの各候補テストパターンによって検出される故障に伴う重みが予め決めておいた基準に達していない場合、その候補テストパターンはこの候補テストパターンの組での選択では選択しない。例えば、ベストパターン選択部５３は、（６）式の条件を満たさない候補テストパターンは選択しない。
【００４９】
ＥＶ（候補パターン）≧
β×（ＥＶ（最初のベストパターン）−可能な最低の評価値（０））・・・（６）
なお、βは、０＜β≦１である。ＥＶ（候補パターン）は、評価対象の候補テストパターンの評価値（ＥＶ）を示す。ＥＶ（最初のベストパターン）は、ベストパターン選択部５３が全候補テストパターンの中から最初に選択したベストパターンの評価値（ＥＶ）を示す。（６）式を満たす候補テストパターン中、評価値（ＥＶ）が最大のものが２番目のベストパターンとして選ばれ、評価対象リスト変更部５５が評価対象リストＢ０の「未検出」故障中、追加検出した故障を除外して新たな評価対象リストＢ０とする。これを順次、（６）式を満たす候補テストパターンがなくなるまで繰り返す。こうして、１本以上の「ベスト」パターンが選択される。
【００５０】
上述した仕組みにより、候補テストパターンとして選択された時には追加検出故障数が多かったものの、検出した故障が互いに似通ったテストパターンが複数ある場合に、これらのテストパターンが重複して選択され、冗長なテストパターンが選択される、といったことが生じない。即ち、ベストパターン選択部５３は、追加選択テストパターン３５として選択されるテストパターンの数が不用意に増加させるのを防ぐようになっている。
【００５１】
なお、テストパターン数を最少にしたい場合、故障抽出部２４が総ての「未検出」故障を抽出して（１００％　サンプリング）、第２の「未検出」故障リスト３１を作成した上で、ベストパターンを１本づつ選択していけば良い。但し、この場合、ＣＰＵ時間が大幅に増加する場合がある。
【００５２】
評価対象リスト変更部５５は、候補テストパターンが（６）式の条件を満たしている場合に、評価対象リストＢ０からこの候補テストパターンの追加検出故障リスト３２に記載された故障（及びレイアウト要素）を削除して、これを新たな評価対象リストＢ０と定義する。なお、候補テストパターンが（６）式の条件を満たしていない場合には、評価対象リストＢ０は変更されない。
【００５３】
１回の候補テストパターン選択（候補テストパターン選択部５２による）の度に、総ての候補テストパターンの評価が終了するまで、ベストパターン選択部５３及び評価対象リスト変更部５５は繰り返し実施される。次には、更新された評価対象リストＢ０を新たな評価対象リストＡ０とし、選択されなかったテストパターンの中から、候補テストパターン選択部５２が候補テストパターンを選択し、同様な処理を行う。これを順次繰り返し、最終的に候補テストパターンが選択されなくなるまで（即ち、追加検出故障が０となるまで）、または、候補テストパターン選択の有効性が殆どなくなるまで実施することが望ましい。後者のケースは、例えば、ベストパターンの追加選択に比して故障検出率の向上が殆ど見込めなくなるまで、繰り返し実施することが望ましい。繰り返して実施することにより、効率的に未検出故障を検出している幾つかのテストパターンを選び出すことができる。
【００５４】
以上説明したように、実施の形態に係るテストパターン選択装置によれば、第１のテストパターン選択部２０が選択するテストパターンには漏れたが、レイアウトに関する重みを考慮した故障検出率の向上に大きな寄与があり、かつパターン長の増加が少ないテストパターンを優先的に選択することができる。
【００５５】
次に、図４を参照して、本発明の実施の形態に係るテストパターン選択方法について説明する。
【００５６】
（イ）まず、Ｓ０１段階において、論理回路内に仮定される故障を検出する為のテストパターンの集合から、機能検証カバレジまたは故障の検出率等を基準にして、一部のテストパターンを選択する。具体的には、まず、テストパターンの機能検証カバレッジを評価する。そして、テストパターンの集合から、機能検証カバレッジを基準にして、一部のテストパターンを選択する。
【００５７】
選択されたテストパターン（選択テストパターン）３３の集合は、全テストパターンより大幅にサイズが小さいが、全テストパターンで期待される故障の検出率に比較的近い故障検出率を達成すると思われる。しかし、機能検証カバレジは、対象としているＬＳＩのＲＴＬ記述レベルの機能検証項目を活性化したということであり、ゲートレベルの記述において、テスト容易性（ｔｅｓｔａｂｉｌｉｔｙ）の内、テスト制御性（ｃｏｎｔｒｏｌｌａｂｉｌｉｔｙ）に対してはよい指標となる。しかし、テスト容易性の内、テスト観測性（ｏｂｓｅｒｖａｂｉｌｉｔｙ）については確実に反映しているとは言えない。したがって、全テストパターンと同程度の故障検出率を確保するためには、第１次解としては有効だが、故障検出率が全テストパターンで本来得られるであろう故障検出率よりも幾分（数％程度）低くなる可能性が高い。また、未検出故障の調査及びテストパターンの追加作成は、多くの技術者リソースを必要とする困難な作業である。
【００５８】
そこで、以下に示す手順を経て、選択されなかったテストパターン（非選択テストパターン）３４の中から、未検出故障を効率的に検出するテストパターンを追加選択する。
【００５９】
なお、選択テストパターン３３を得る為には、他の手段もあり、例えば、対象故障を低いサンプリング率でサンプリングし、全テストパターンで個別に故障シミュレーションし、その結果で検出率の高いものを選択することもできる。最悪の場合、検証担当者が検証項目・内容から推定して選別することも可能である。
【００６０】
（ロ）次に、Ｓ０２段階において、選択テストパターン３３を用いて故障を検出できるか否かを計算する。即ち、故障リストに対して、選択テストパターン３３と、ゲートレベルネット３８と、基本セルライブラリ６とを用いて故障シミュレーションを実行する。実行結果として出力される第１の（未）検出故障リスト３０ａは、少なくとも選択テストパターン３３によって検出されなかった故障のリストを含む。「未検出」は有効なテストパターンを選別する為に定義される。
【００６１】
（ハ）次に、Ｓ０３段階において、第１の（未）検出故障リスト３０ａの故障に、論理回路のレイアウトに関する重みを付す。論理回路のレイアウトに関する重みは、レイアウト情報３６からレイアウト関連パラメータ情報３６．５に従って抽出される。故障の重み付けにより、論理接続ノード又は入出力端子に仮定された故障とレイアウト上現実に故障が発生し易い個所との対応を明確にすることができる。重みが付された第１の（未）検出故障リスト３０ａは、第１の（未）検出故障リスト（重み付き）３０ｂに相当する。
【００６２】
（ニ）次に、Ｓ０４段階において、少なくとも「未検出」故障を含む第１の（未）検出故障リスト（重み付き）３０ｂから、論理回路のレイアウトに関する重みを基準にして、一部の「未検出」故障を抽出する。具体的には、レイアウトに関する重みに対応（基本的には比例）した確率で、一部の「未検出」故障を無作為抽出する。抽出された「未検出」故障のリストは、第２の未検出故障リスト３１に相当する。
【００６３】
（ホ）次に、Ｓ０５段階において、非選択テストパターン３４を用いて、第２の未検出故障リスト３１の故障を検出できるか否かを計算する。即ち、第２の未検出故障リスト３１に対して、非選択テストパターン３４と、ゲートレベルネット３８と、基本セルライブラリ６とを用いて故障シミュレーションを実行する。非選択テストパターン３４によって検出された故障のリストは、追加検出故障リスト３２に相当する。故障シミュレーションは非選択テストパターン３４の１本毎に実行され、追加検出故障リスト３２は非選択テストパターン３４の１本毎に作成される。
【００６４】
なお、第２の未検出故障リスト３１の故障には重みが付されている。よって、予めレイアウト要素の重みを除去し、レイアウト要素の重みを省略した故障に対して故障シミュレーションを行う。また、故障シミュレーションの結果、出力される追加検出故障リスト３２には再び重みが付される。
【００６５】
（ヘ）次に、Ｓ０６段階において、非選択テストパターン３４の中から、追加検出故障リスト３２の追加検出故障に付された重みを考慮した検出率を基準にして、一部のテストパターンを選択する。Ｓ０６段階におけるテストパターン選択は、重み付きの「未検出」故障リスト３１、重み付きの追加検出故障リスト３２及び選択情報記憶部７に記憶されている選択情報を入力情報として用いる。Ｓ０６段階において選択されたテストパターンは、追加選択テストパターン３５に相当する。Ｓ０６段階の詳細な構成は図５を参照して後述する。
【００６６】
（ト）最後に、Ｓ０７段階において、追加選択テストパターン３５を用いて、第１の（未）検出故障リスト３０ｂの故障を検出できるか否かを計算する。即ち、第１の（未）検出故障リスト３０ｂに対して、追加選択テストパターン３５と、ゲートレベルネット３８と、基本セルライブラリ６とを用いて故障シミュレーションを実行する。Ｓ０７段階における故障シミュレーションは、最終的な故障の検出率を確認することを目的とする。なお、第１の（未）検出故障リスト（重み付き）３０ｂの代わりに、第１の（未）検出故障リスト３０ａを用いて、故障シミュレーションを行っても構わない。
【００６７】
Ｓ０７段階によって、論理回路に対する最終的な重み付き故障検出率及び未検出故障のリストなどが得られる。「未検出故障」とは、Ｓ０１段階で選択される選択テストパターン３３とＳ０６段階で追加選択された追加選択パターン３５によって検出されなかった故障であり、基本的には完全な未検出故障とハイパーアクティブ故障からなり、場合によりポテンシャル検出故障及び発振故障の一部（割合として含む）からなる。
【００６８】
図５に示すように、図４のＳ０６段階は、Ｓ６０１段階〜Ｓ６１２段階から構成されている。
【００６９】
外側のループ１２を回すことで、選択条件に合った（高い評価値の）テストパターンの組を選択することができる。また、内側のループ１３を回すことで、適当な条件を満たしたテストパターンの中で類似した故障を検出しているものが重複して選択されるのを防ぐことができる。
【００７０】
（Ａ）まず、Ｓ０５段階が終了した後、Ｓ６０１段階において、非選択テストパターン３４の１本毎に追加検出故障数（またはその重み）を評価する。具体的には、非選択テストパターン３４の１本毎の追加検出故障リスト３２と、評価対象リストＡ０とを比較して、各非選択テストパターン３４が評価対象リストＡ０内の未検出故障（またはそのレイアウト要素）をどの程度検出したかを算出する。なお、最初のループ１２において、「評価対象リストＡ０」は第２の「未検出」故障リスト３１である。従って、最初のループ１２においては、上記の比較をする必要はなく、各追加検出故障リスト３２の追加検出故障数（またはその重み）をそのまま用いることも可能である。
【００７１】
（Ｂ）次に、Ｓ６０２段階において、追加検出故障数（またはその重み）が０（または０に近い値でも良い、以下の説明では省略）である、即ち故障を全く（または殆ど）検出していない非選択テストパターン３４を、Ｓ０６段階におけるテストパターンの選択対象から除外する。
【００７２】
（Ｃ）次に、Ｓ６０３段階において、非選択テストパターン３４の中に、追加検出故障数（またはその重み）が０でないテストパターンがあるか否かを判断する。総ての非選択テストパターン３４について、追加検出故障数（またはその重み）が０である場合（Ｓ６０３段階においてＮｏ）、Ｓ０６段階は終了し、Ｓ０７段階へ進む。非選択テストパターン３４の中で、追加検出故障数（またはその重み）が０でないテストパターンがある場合（Ｓ６０３段階においてＹｅｓ）、Ｓ６０４段階へ進む。なお、Ｓ６０３段階は、主として２回目以降のループ１２において意味を成し、Ｓ６１１段階と共にＳ０６段階を終了させるか否かを判断する為の段階である。
【００７３】
（Ｄ）次に、Ｓ６０４段階において、（２）式に示す評価値（ＥＶ）の条件式を満たす非選択テストパターン３４を候補テストパターンとして選択する。具体的には、まず、非選択テストパターン３４の１本毎の追加検出故障リスト３２（重み付き）、選択情報及び評価対象リストＡ０（最初は「未検出」故障リスト３１）を元に、非選択テストパターン３４の１本毎に評価値（ＥＶ）を計算する。そして、その評価値（ＥＶ）が一定の値（α）以上である１又は２以上のテストパターンを候補テストパターンとして選択する。なお、評価値（ＥＶ）は、例えば、（３）乃至（５）式によって算出される。
【００７４】
（Ｅ）次に、Ｓ６０５段階において、評価対象リストＡ０を評価対象リストＢ０へ代入する。なお、最初のループ１２においては、評価対象リストＢ０に、第２の「未検出」故障リスト３１（評価対象リストＡ０）が代入される。Ｓ６０４段階とＳ６０５段階は何れが先になっても差し支えない。
【００７５】
（Ｆ）次に、Ｓ６０６段階において、対象となる候補テストパターンの評価値（ＥＶ）を算出する。最初のステップでは評価値（ＥＶ）は算出済みのため、改めて算出する必要はない。なお、ここでの評価値（ＥＶ）は、最初のベストパターンによって規格化された（最初のベストパターンのデータを分母にした）ものを用いる。
【００７６】
（Ｇ）次に、Ｓ６０７段階において、各候補パターンの追加検出故障リスト３２と、評価対象リストＢ０とを比較する。具体的には、評価対象リストＢ０の「未検出」故障（及びレイアウト要素）のうち、各候補パターンによってどの故障（及びレイアウト要素）が検出され、またどの故障（及びレイアウト要素）が未検出のままかを求める。評価対象リストＢ０に対して各候補パターンによって追加検出される故障に伴う重みが予め決めておいた基準に達しているか否かを判断する。例えば、（６）式の条件に従って判断する。
【００７７】
候補パターンの評価値（ＥＶ）が（６）式の条件を満たさない候補パターンについては（Ｓ６０７段階においてＮｏ）、Ｓ６０９段階に進む。そして、その候補パターンを、内側のループ１３における選択対象から除外する。Ｓ６０９段階において除外される候補パターンは、候補テストパターンとして選択された時（Ｓ６０４段階）には追加検出故障に伴う重みが大きかったが、既に選択されているテストパターンと似通った故障を検出している。したがって、Ｓ６０７及びＳ６０９段階は、重複するベストパターンを除外し、冗長なテストパターンの組を形成されることを防ぐ。
【００７８】
候補パターンの評価値（ＥＶ）が（６）式の条件を満たす候補パターンについては（Ｓ６０７段階においてＹｅｓ）、Ｓ６０７．５段階に進む。そして、評価値（ＥＶ）が最大の候補パターンをベストパターンとして選択確定する。（Ｇ）’次に、評価対象リストＢ０からベストパターンの追加検出故障リスト３２に含まれる故障（及びレイアウト要素）を削除して、これを新たな評価対象リストＢ０と定義する。なお、Ｓ６０７段階においてＮｏの候補パターンについては、評価対象リストＢ０は変更されない。
【００７９】
（Ｈ）次に、Ｓ６１０段階において、総ての候補テストパターンの評価が終了したか否かを判断する。評価が終了していない場合（Ｓ６１０段階においてＮｏ）、Ｓ６０６段階に戻り、総ての候補テストパターンの評価が終了するまで、内側のループ１３を繰り返す。内側のループ１３は、効率的に未検出故障を検出している幾つかのテストパターンをベストパターンとして選び出し、追加選択テストパターン３５として選択されるテストパターンの数が不用意に増加するのを防ぐ。なお、内側のループ１３は、例えば、テストパターンの追加選択に比して故障検出率（またはレイアウトの重み）の向上が殆ど見込めなくなるまで、適当な回数繰り返すことが望ましい。
【００８０】
（Ｉ）最後に、Ｓ６１１段階において、非選択テストパターン３４の中に、追加検出故障数（またはこれに伴うレイアウト重み）が０（または殆ど０）でないテストパターンが残っているか否かを判断する。総ての非選択テストパターン３４について、追加検出故障数（またはこれに伴うレイアウト重み）が０（または殆ど０）である場合（Ｓ６１１段階においてＮｏ）、Ｓ０６段階は終了し、Ｓ０７段階へ進む。非選択テストパターン３４の中で、追加検出故障数（またはこれに伴うレイアウト重み）が０（または殆ど０）でないテストパターンが残っている場合（Ｓ６１１段階においてＹｅｓ）、Ｓ６１２段階へ進む。
【００８１】
Ｓ６１２段階において、評価対象リストＢ０を評価対象リストＡ０に上書きし、残っているテストパターンの数を、Ｓ６０１段階に示す「Ｎ」の値に代入する。「残っているテストパターン」とは、非選択テストパターン３４の中から、ベストパターンとして選択されているテストパターンとＳ６０２段階で除外されたテストパターンを除いたものを示す。そして、Ｓ６０１段階に戻り、Ｓ６０３段階或いはＳ６１１段階において“Ｎｏ”が選択されるまで、外側のループ１２を繰り返す。最終的に、Ｓ０６段階が終了する時点において選択されているベストパターンが、追加選択テストパターン３５に相当する。
【００８２】
なお、Ｓ６１１段階或いはＳ６０３段階において、予め、Ｓ０６段階のパターン選択を終了する条件を設定しておくことができる。勿論、前述したように、残りの全てのテストパターンの追加検出故障が０となればＳ０６段階は終了する。しかし、それまでに相当数のテストパターンが選択されてしまう可能性もある。そこで、それよりも前に、例えば、残りの全てのテストパターンによって、対象とするＬＳＩの故障検出率（または重み付きの故障検出率）が所定の値（例えば０．１％）未満しか向上できないと判断した場合、Ｓ０６段階を終了する方が現実的と考えられる。
【００８３】
また、テストパターン数を最少にしたい場合、Ｓ０４段階において総ての故障を抽出して（１００％　サンプリング）、第２の未検出故障リスト３１を作成した上で、Ｓ０６段階のループ１３の各ループにおいてべストパターンを１本づつのみ選択すれば良い（Ｓ６０７段階の“＝”に相当）。但し、この場合、ＣＰＵ時間が大幅に増加する場合がある。
【００８４】
図６は、図１に示したテストパターン選択装置の各構成要素を用いて、図４に示したテストパターン選択方法の手順を表現したものである。テストパターン記憶部３内のテストパターン及び回路情報記憶部５内のＲＴＬネット３７が、第１のテストパターン選択部２０に入力される。具体的には、テストパターン３及びＲＴＬネット３７は、機能検証カバレジ評価部２８に入力される。機能検証カバレジ評価部２８は、テストパターン３のおのおの（１本毎）の機能検証カバレジを出力する。選択実行部２９は、全テストパターンで期待される故障の検出率に比較的近い故障検出率を達成する選択テストパターン３３の集合と、残りの非選択テストパターン３４とを出力する。
【００８５】
また、ＲＴＬネット３７と論理合成用の基本セルライブラリ６．５から、論理合成３９により、ゲートレベルネット３８が生成される。ゲートレベルネット３８は、基本セルと、ＬＳＩの入出力端子を含む基本セルの入出力端子間の接続情報よりなっている。この際、一般に、メモリ等については、論理合成の対象外となっており、ＲＴＬ記述のままとなっているため、故障シミュレーションで動作させる為、利用する故障シミュレータで用意されている仕様に従ってモデル化する必要がある。こうしたメモリモデルは広い意味で基本セルライブラリに含まれるものであり、予め用意しておくことも可能である。なお、基本セルライブラリは、論理合成用のものと、故障シミュレーション用のものとで、基本セルの名前、入出力端子は同じだが、動作を記述する部分が異なり、共通して利用することはできない。
【００８６】
選択テストパターン３３及び回路情報記憶部５内のゲートレベルネット３８は、故障リスト記憶部２内の故障リスト、基本セルライブラリ記憶部６内の基本セルライブラリと共に、故障シミュレーション部２１に入力される。故障シミュレーション部２１は、第１の（未）検出故障リスト３０ａを出力する。この際、故障検出率の向上が所定の基準以下だったものは、選択テストパターンから除外し、非選択パターン３４に加えることもできる（破線で示す）。
【００８７】
第１の（未）検出故障リスト３０ａの少なくとも「未検出」扱いの故障リスト部分は、レイアウト情報記憶部４内のレイアウト情報３６と、レイアウト関連パラメータ情報記憶部４．５内のレイアウト関連パラメータ情報３６．５と共に、重み付け部２３に入力される。重み付け部２３は、第１の（未）検出故障リスト（重み付き）３０ｂを出力する。第１の未検出故障リスト（重み付き）３０ｂは故障抽出部２４に入力され、故障抽出部２４は第２の「未検出」故障リスト３１を出力する。第２の「未検出」故障リスト３１及び非選択テストパターン３４は、ゲートレベルネット３８及び基本セルライブラリ６と共に、故障シミュレーション部２１に入力され、第２の故障シミュレーションが実施される。故障シミュレーション部２１は、テストパターン毎に追加検出故障リスト３２を作成及び出力する。
【００８８】
追加検出故障リスト３２は、重み付きの「未検出」故障リスト３１、選択情報７と共に、第２のテストパターン選択部２６に入力される。第２のテストパターン選択部２６は、追加選択テストパターン３５を出力する。追加選択テストパターン３５は、第１の（未）検出故障リスト３０ｂ（または３０ａ）、ゲートレベルネット３８及び基本セルライブラリ６と共に、故障シミュレーション部２１に入力される。故障シミュレーション部２１は、重み付き故障検出率及び未検出故障リスト４１などを出力する。直接重み付きの結果を出力できない場合は、重み付け部２３を利用して重み付けを行う。
【００８９】
以上説明したように、実施の形態に係るテストパターン選択方法によれば、Ｓ０１段階の機能検証カバレジまたは故障の検出率等を基準にしたテストパターン選択には漏れたが、レイアウトに関する重みを考慮した故障検出率の向上に大きな寄与があり、かつパターン長の増加が少ないテストパターンを優先的に選択することができる。
【００９０】
上述したテストパターン選択方法は、時系列的につながった一連の処理又は操作、即ち「手順」として表現することができる。従って、テストパターン選択方法を、コンピュータシステムを用いて実行するために、コンピュータシステム内のプロセッサーなどが果たす複数の機能を特定するコンピュータプログラムとして構成することができる。また、このコンピュータプログラムは、コンピュータ読み取り及び（または）書き込み可能な記録媒体または記録装置に保存することができる。この記録媒体または記録装置をコンピュータシステムによって読み込ませ、このコンピュータプログラムを実行してコンピュータを制御しながら上述したテストパターン選択方法を実現することができる。この記録媒体または記録装置は、図１に示したプログラム記憶部１２を始めとする各記憶部として用いる、あるいはプログラム記憶部１２を始めとする各記憶部に読み込ませ、このコンピュータプログラムにより演算部１における種々の作業を所定の処理手順に従って実行することができる。ここで、記録媒体としては、メモリ装置、磁気ディスク装置、光ディスク装置、その他のプログラムを記録することができるような装置が含まれる。
【００９１】
図７に示すように、テストパターン選択装置９０の本体全面には、フレキシブルディスクドライブ９１、及びＣＤ−ＲＯＭドライブ９２が設けられており、磁気ディスクとしてのフレキシブルディスク９３または光ディスクとしてのＣＤ−ＲＯＭ９４を各ドライブ入り口から挿入し、所定の読み出し操作を行うことにより、これらの記録媒体に格納されたプログラムをシステム内にインストールすることができる。また、所定のドライブ装置９７を接続することにより、例えばゲームパックなどに使用されている半導体メモリとしてのＲＯＭ９５や、磁気テープとしてのカセットテープ９６を用いることもできる。
【００９２】
以上説明したように、本発明の実施の形態によれば、製造品質との相関の強いレイアウト情報を反映した故障検出率を活用してテストパターンを効果的な削減することができ、与えられたテストパターンの中で製造テストの品質に最も効果のあるものだけを優先的に選択できるようになる。したがって、従来よりも少ないテストパターンで同じテスト品質を得ることができ、テストコストを削減することができる。
【００９３】
（その他の実施の形態）
上記のように、本発明は、１つの実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【００９４】
実施の形態では、故障抽出部２４は、レイアウトに関する重みに比例した確率で、一部の未検出故障を無作為抽出していた。しかし、本発明はこれに限定されるものではない。故障抽出部２４は、未検出故障をレイアウトに関する重み順に降順で並べ替え、重みの大きい方から（７）式を用いて、第２の未検出故障リスト３１の故障として抽出しても構わない。この場合、レイアウトに関する重みの大きい故障は総て考慮されることになり、より信頼性の高いテストパターン選択が実施できる。
【００９５】
Ｘ＝（重みの大きい故障による重みの和）／（全故障の重み）・・・（７）
また、第１のテストパターン選択部２０は、機能検証カバレジ２８と、選択実行部２９とを具備する場合について示したが、本発明はこれに限定されるものではない。例えば、第１のテストパターン選択部２０は、予め対象ＬＳＩの故障をランダムにサンプリングし、これに対して各検証パターンの故障シミュレーションを実行し、故障検出率向上の寄与の大きいものから選択するようにしても良い。この際、既に第２のテストパターン選択部２６において説明したような、似通ったテストパターンを重視して選択しないようなループを設ける必要がある。また、極端な場合、十分経験を積んだ設計者または検証者が、検証パターンが何をどの程度検証しているかによってテストパターンを選択するようにしても良い。
【００９６】
なお、本発明の別の実施形態としては、第１の故障シミュレーションを、選択テストパターン１本毎に実行し、その結果の検出故障リストを第２のテストパターン選択部２６に入力し、より削減された選択テストパターンと、第１の未検出故障リスト３０ａまたは３０ｂ（重み付き、重み付け部２３を利用）を出力するというものがある（図面は省略）。これにより、最初の選択でも最小サイズのテストパターンが選択されることになり、全体として選択されるテストパターンのサイズがより小さくなるという効果が期待されることとなる。
【００９７】
このように、本発明はここでは記載していない様々な実施の形態等を包含するということを理解すべきである。したがって、本発明はこの開示から妥当な特許請求の範囲に係る発明特定事項によってのみ限定されるものである。
【００９８】
【発明の効果】
以上説明したように、本発明によれば、少ないテストパターンで一定のテスト品質を得ることができ、テストコストを削減することができるテストパターン選択装置、テストパターン選択方法、及びテストパターン選択プログラムを提供することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るテストパターン選択装置の全体構成を示すブロック図である。
【図２】具体的なレイアウトとレイアウト要素の例を示す図である。
【図３】第２のテストパターン選択部の構成を示すブロック図である。
【図４】本発明の実施の形態に係るテストパターン選択方法を示すフローチャートである。
【図５】図３のＳ０６段階の詳細な構成を示すフローチャートである。
【図６】図３に示したテストパターン選択方法の手順を、図１に示したテストパターン選択装置の構成要素を用いて示したデータフロー図である。
【図７】本発明の実施の形態に係るテストパターン選択方法を実現する為のコンピュータシステムからなるテストパターン選択装置の一例を示す外観図である。
【符号の説明】
１　　演算部
２　　故障リスト記憶部
３　　テストパターン記憶部
４　　レイアウト情報記憶部
４．５　　レイアウト関連パラメータ情報記憶部
５　　回路情報記憶部
６　　基本セルライブラリ記憶部
７　　選択情報記憶部
８　　入出力制御部
９　　入力装置
１０　　出力装置
１１　　バス
１２　　プログラム記憶部
２０　　第１のテストパターン選択部
２１　　故障シミュレーション部（第１、第２及び第３の故障シミュレーション用）
２３　　重み付け部
２４　　故障抽出部
２６　　第２のテストパターン選択部
２８　　機能検証カバレジ評価部
２９　　選択実行部
３０ａ　　故障リストまたは第１の（未）検出故障リスト
３０ｂ　　第１の（未）検出故障リスト（重み付き）
３０ｃ　　最終の（未）検出故障リスト
３０ｄ　　最終の（未）検出故障リスト
３１　　第２の未検出故障リスト
３２　　追加検出故障リスト（テストパターン別）
３３　　選択テストパターン
３４　　非選択テストパターン
３５　　追加選択テストパターン
３６　　レイアウト情報
３６．５　　レイアウト関連パラメータ情報
４１　　重み付き故障検出率／（未検出）故障リスト
５１　　追加検出故障数評価部
５２　　候補テストパターン選択部
５３　　ベストパターン選択部
５５　　評価対象リスト変更部
【図１】
2004125670.tif 000005
【図２】
2004125670.tif 000006
【図３】
2004125670.tif 000007
【図４】
2004125670.tif 000008
【図５】
2004125670.tif 000009
【図６】
2004125670.tif 000010
【図７】
2004125670.tif 000011