(57)【要約】  テストパターン生成装置は、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成する。第１及び第２の共通回路毎にスキャンチェーンの集合と仮定故障の集合を作成し、第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定し、決定された第１のテスト対象の共通回路に対するＡＴＰＧ及び回路故障の検出を行った後に、第１のテスト対象の共通回路についてのＡＴＰＧの成功で生成されたテストパターンを第２のテスト対象して決定された共通回路に流用して非共通回路部分のＡＴＰＧ及び回路故障の検出を行う。
2009087769.tif 000002
【特許請求の範囲】
【請求項１】
回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、前記第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成方法において、
前記半導体回路の回路情報を読み込むステップと、
前記第１及び第２の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
前記第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定するステップと、
前記決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うステップと、
前記生成されたテストパターンの圧縮を行うステップと、
前記圧縮されたテストパターンを用いて、前記第１のテスト対象の共通回路が有する回路故障の検出を行うステップと、
前記第１及び第２の共通回路のうち、前記第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するステップを有することを特徴とするテストパターン生成方法。
【請求項２】
前記テストパターン生成方法はさらに、
前記圧縮されたテストパターンを用いて、前記第２のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うステップを有することを特徴とする請求項１記載のテストパターン生成方法。
【請求項３】
前記テストパターン生成方法はさらに、
前記第１及び第２の共通回路毎にスキャンチェーンの集合を作成するステップにおいて、
前記第１及び第２の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする請求項１又は２記載のテストパターン生成方法。
【請求項４】
前記回路故障は、前記共通回路が有する回路が０又は１を固定的に出力する固定故障であることを特徴とする請求項１乃至３のいずれかに記載のテストパターン生成方法。
【請求項５】
回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、前記第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成装置において、
前記半導体回路の回路情報を読み込む回路情報読込部と、
前記第１及び第２の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するスキャンチェーン集合作成部と、
前記第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定し、決定された前記第１のテスト対象の共通回路に対する回路故障の検出を行った後に、前記第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するテスト対象回路決定部と、
前記決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うテストパターン生成部と、
前記生成されたテストパターンの圧縮を行うテストパターン圧縮部と、
前記圧縮されたテストパターンを用いて、前記第１のテスト対象の共通回路が有する回路故障の検出を行う回路故障検出部を有することを特徴とするテストパターン生成装置。
【請求項６】
前記回路故障検出部はさらに、
前記圧縮されたテストパターンを用いて、前記第２のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うことを特徴とする請求項５記載のテストパターン生成装置。
【請求項７】
前記スキャンチェーン集合作成部はさらに、
前記第１及び第２の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする請求項５又は６記載のテストパターン生成装置。
【請求項８】
前記回路故障は、前記共通回路が有する回路が０又は１を固定的に出力する固定故障であることを特徴とする請求項５乃至７のいずれかに記載のテストパターン生成装置。
【請求項９】
回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、前記第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成プログラムにおいて、
前記半導体回路の回路情報を読み込むステップと、
前記第１及び第２の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
前記第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定するステップと、
前記決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うステップと、
前記生成されたテストパターンの圧縮を行うステップと、
前記圧縮されたテストパターンを用いて、前記第１のテスト対象の共通回路が有する回路故障の検出を行うステップと、
前記第１及び第２の共通回路のうち、前記第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するステップをコンピュータに実行させることを特徴とするテストパターン生成プログラム。
【請求項１０】
前記テストパターン生成プログラムはさらに、
前記圧縮されたテストパターンを用いて、前記第２のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うステップを有することを特徴とする請求項９記載のテストパターン生成プログラム。
【請求項１１】
前記テストパターン生成プログラムはさらに、
前記第１及び第２の共通回路毎にスキャンチェーンの集合を作成するステップにおいて、
前記第１及び第２の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする請求項９又は１０記載のテストパターン生成プログラム。
【請求項１２】
前記回路故障は、前記共通回路が有する回路が０又は１を固定的に出力する固定故障であることを特徴とする請求項９〜１１のいずれかに記載のテストパターン生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製造されたＬＳＩの良否を判定するテスタ上で実施されるテストのためのテストパターン生成方法、装置及びプログラムに関し、特に、マルチコアプロセサのように複数の共通回路を備えたＬＳＩの良否判定に使用するテストのためのテストパターン生成方法、装置及びプログラムに関する。
【背景技術】
【０００２】
従来、ＬＳＩの製造工程の最終工程にあっては、製造されたＬＳＩの良否を判定するためテスタ上でテストパターンを用いてテスト動作を行っている。【０００３】
一般的にＬＳＩの良否判定に使用されるテストパターンは、自動テストパターン生成システム（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ：以下「ＡＴＰＧ」という）が使用されている。【０００４】
このようなＡＴＰＧシステムにあっては、主要な機能として、
（１）  回路モデル読み出し及び書き込み機能、
（２）  与えられた１つの故障に対してテストパターンの生成を行う自動テストパターン生成機能、
（３）  ＡＴＰＧが作成したテストパターンを圧縮する静的あるいは動的な圧縮（Compaction）機能、及び
（４）  生成されたテストを評価する故障シミュレータ機能
などが存在する。
【特許文献１】特開昭６３−７５９７３号公報
【特許文献２】特開２００５−１７４１１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、近年のプロセサ設計においては、複数のコアユニットを１つのＬＳＩ内部に持ち、各コアを並列動作させることにより高性能化を図るマルチコアプロセサ技術が注目されている。【０００６】
このようなマルチコアプロセサを対象にテストパターンを生成する場合、従来のシステムでは、何かしらの制約条件が与えられなければ、ＡＴＰＧの実行はある時点で達成可能な全ての仮定故障に対して行われるため、コアの複数化により回路規模が増大することは、ＡＴＰＧが実行される仮定故障の増加、即ちテスト生成時間が単純にコア数に比例して増加するという問題を引き起こすことになる。【０００７】
また、コア数の増加の影響はテスト生成時間の増加に留まらず、テスト時に必要なテストベクタ量（回路が設計仕様を満たしているか評価するために用いるデータの量）の増加という問題も引き起こすことになる。【０００８】
本発明は、マルチコアプロセサのコアのように等価性あるいは類似性を持つ複数の共通回路を備えた半導体回路に対しテスト生成時間、及びテストベクタ量の増加を抑制するテストパターン生成方法、装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
（方法）
本発明はパターン生成方法を提供する。本発明は、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成方法において、
半導体回路の回路情報を読み込むステップと、
第１及び第２の共通回路毎にスキャンチェーンの集合と共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定するステップと、
決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と仮定故障の集合を用いて、テストパターンの生成を行うステップと、
生成されたテストパターンの圧縮を行うステップと、
圧縮されたテストパターンを用いて、第１のテスト対象の共通回路が有する回路故障の検出を行うステップと、
第１及び第２の共通回路のうち、第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するステップを有することを特徴とする。【００１０】
本発明のテストパターン生成方法はさらに、
圧縮されたテストパターンを用いて（テスト流用）、第２のテスト対象の共通回路に対して、共通回路が有する回路故障の検出を行うステップを有することを特徴とする。【００１１】
本発明のテストパターン生成方法はさらに、
第１及び第２の共通回路毎にスキャンチェーンの集合を作成するステップにおいて、
第１及び第２の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする。【００１２】
ここで、回路故障は、共通回路が有する回路が０又は１を固定的に出力する固定故障である。
（装置）
本発明はテストパターン生成装置を提供する。本発明は、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成装置において、
半導体回路の回路情報を読み込む回路情報読込部と、
第１及び第２の共通回路毎にスキャンチェーンの集合と共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するスキャンチェーン集合作成部と、
第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定し、決定された第１のテスト対象の共通回路に対する回路故障の検出を行った後に、第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するテスト対象回路決定部と、
決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と仮定故障の集合を用いて、テストパターンの生成を行うテストパターン生成部と、
生成されたテストパターンの圧縮を行うテストパターン圧縮部と、
圧縮されたテストパターンを用いて、第１のテスト対象の共通回路が有する回路故障の検出を行う回路故障検出部を有することを特徴とする。【００１３】
さらに、圧縮されたテストパターンを用いて、第２のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行う。
（プログラム）
本発明はパターン生成プログラムを提供する。本発明は、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成させるテストパターン生成プログラムにおいて、
半導体回路の回路情報を読み込むステップと、
第１及び第２の共通回路毎にスキャンチェーンの集合と共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定するステップと、
決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と仮定故障の集合を用いて、テストパターンの生成を行うステップと、
生成されたテストパターンの圧縮を行うステップと、
圧縮されたテストパターンを用いて、第１のテスト対象の共通回路が有する回路故障の検出を行うステップと、
第１及び第２の共通回路のうち、第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するステップをコンピュータに実行させることを特徴とする。【００１４】
さらに、圧縮されたテストパターンを用いて、第２のテスト対象の共通回路に対して、共通回路が有する回路故障の検出を行うステップを有することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、複数の共通回路を持つ半導体装置について、第１のテスト対象の共通回路における内部故障に対してテストパターンの生成に成功した場合に、生成されたテストパターンを第２のテスト対象の共通回路に流用することで、第２のテスト対象以降の共通回路におけるテストパターンの生成処理を削減し、その結果、複数の共通回路をもつ半導体装置全体に使用するテストパターンの生成時間を大幅に削減することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態によるテストパターン生成システムの機能構成を示したブロック図
【図２】図１のダイナミックコンパクション実行部の機能構成の詳細を示したブロック図
【図３】本実施形態のテストパターン生成が適用されるマルチコアプロセサを示したブロック図
【図４】図３のクロックコントローラの詳細を示したブロック図
【図５】図３のデータコントローラの詳細を示したブロック図
【図６】図３のマルチコアプロセサを模式的な等価回路により示したブロック図
【図７】図６のマルチコアプロセサにおけるスキャンＦＦ集合と仮定故障集合のコア間での対応付けを示した説明図
【図８】本実施形態で使用される故障データのテーブル構造を示した説明図
【図９】図８の故障データに含まれるコアと回路全体の故障集合、及びコアと回路全体のスキャンＦＦ集合のテーブル構造を示した説明図
【図１０】本実施形態におけるＡＴＰＧに成功したコアのテストパターンを他のコアに流用する処理を示した説明図
【図１１】本実施形態におけるテストパターンを流用したコアに対しＡＴＰＧを実行するテストパターン補間処理を示した説明図
【図１２】本実施形態におけるコア間の排他性を示した説明図
【図１３】本実施形態における対象コア交換処理を示した説明図
【図１４】本実施形態によるテストパターン流用の際に回路の初期状態をコア間で共通する必要のあるｎτパスを１τパスと対比して示した説明図
【図１５】本実施形態におけるコア間の制御排他性を排除する個別制御部に設けたキャンセラ回路を示したブロック図
【図１６】本実施形態におけるコア間の制御排他性を排除する共通観測部に設けたキャンセラ回路を示したブロック図
【図１７】本実施形態における各コアのスキャンＦＦチェーンのスキャンシフトを共用化する回路を示したブロック図
【図１８】図１７に設けたキャンセラ用スキャンＦＦチェーンの詳細を示した説明図
【図１９】本実施形態におけるテストパターン生成処理の手順を示したフローチャート
【図２０】本実施形態におけるａｔｐｇフラグとスキップフラグの設定を示した説明図
【図２１】図１９のステップＳ５におけるＡＴＰＧ処理の詳細を示したフローチャート
【図２２】図１９のステップＳ７におけるダイナミックコンパクションの詳細を示したフローチャート
【図２３】図２２のステップＳ５におけるテスト流用処理の詳細を示したフローチャート
【図２４】図２３のテスト流用処理をスキャンＦＦ集合について具体的に示した説明図
【図２５】図２２のステップＳ６におけるテスト補間処理の詳細を示したフローチャート
【図２６】図１９のステップＳ８における故障シミュレーションの詳細を示したフローチャート
【図２７】図２６のステップＳ２におけるイベントスケジュールの詳細を示したフローチャート
【図２８】図２７のイベントスケジュールの具体例を示した説明図
【図２９】図２６のステップＳ４におけるイベント伝播の詳細を示したフローチャート
【図３０】図２９のイベント伝播の具体例を示した説明図
【図３１】図２６のステップＳ５におけるイベント伝播先ゲート処理の詳細について縮退故障を対象に示したフローチャート
【図３２】図３１のイベント伝播先ゲート処理の具体例を示した説明図
【図３３】図２６のステップＳ５におけるイベント伝播先ゲート処理の詳細についてディレイ故障を対象に示したフローチャート
【図３４】図２６のステップＳ７における故障検出処理の詳細を縮示したフローチャート
【図３５】本実施形態によるＡＴＰＧ処理時間の削減を示した説明図
【図３６】本実施形態による処理時間削減の測定対象とするマルチコアプログラムセサにおけるスキャンＦＦのビット分布を示した説明図
【図３７】図３６の測定対象コアにおけるＡＴＰＧの対象ビットをコア、共通、個別のグループに分類して示した円グラフの説明図
【図３８】図３６の測定対象コアにおけるコンパンクション回数に対する実行時間を通常動作と本実施形態による流用動作について示したグラフ図
【図３９】図３６の測定対象コアにおけるコンパンクションについてＡＴＰＧ、故障シミュレーション、その他のグループに分類して実行時間の割合を通常動作と本実施形態の流用動作について示した棒グラフ図
【図４０】本実施形態のテストパターン生成プログラムが実行されるコンピュータのハードウェア環境を示したブロック図
【発明を実施するための最良の形態】
【００１７】
＜目次＞
１．システム構成と機能
２．入力ポイントと故障の対応付け
３．テストパターンの流用
４．テストパターンの補間
５．対象コアの交換
６．ＡＴＰＧスキップの無効化
７．コア間での回路初期状態の共通化
８．コア間排他性のキャンセル
９．スキャンシフトの共有化
１０．テストパターン生成処理
１１．ＡＴＰＧ処理
１２．ダイナミックコンパクション
１３．テストパターン流用処理と補間処理
１４．故障シミュレーション
１５．処理時間の削減効果
図１は本実施形態によるマルチコアプロセサなどの共通回路部を備えた半導体回路を対象としたテストパターン生成システムの機能構成を示したブロック図である。【００１８】
図１において、本実施形態のテストパターン生成システムは、回路情報読込部１０、回路データ１４及びテストパターン１６を格納するテストデータベース１２、スキャンチェーン集合２０を作成するスキャンチェーン集合作成部１８、仮定故障集合２４を作成する仮定故障集合作成部２２、テスト対象回路決定部２６、ＡＴＰＧ実行部３０とテストパターン圧縮部として機能するダイナミックコンパクション実行部３２を備えたテストパターン生成部２８、故障シミュレータとして機能する回路故障検出部３４、対象回路交換部３６及び回路データ書込部３８を備えている。【００１９】
テストデータベース１２に格納された回路データ１４としては、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンを有する複数の共通回路と、複数の共通回路以外の非共通回路を備えた半導体回路の回路データを格納している。【００２０】
具体的な回路データ１４としては、後の説明で明らかにするように、マルチコアプロセサの回路データが格納されている。マルチコアプロセサは複数のコアを備えており、各コア同士は等価あるいは類似した回路構成であるという特徴を持つ場合が多く、この特徴に着目して本実施形態にあっては、テストパターンの生成時間及びテストベクタ量の削減を目的としたテスト生成処理を実行する。【００２１】
回路情報読込部１０は、テストデータベース１２の回路データ１４から、処理対象とする半導体回路の回路情報、例えばマルチコアプロセサの回路情報を読み込む。【００２２】
スキャンチェーン集合作成部１８は、回路情報読込部１０で読み込んだ回路情報の中に含まれる複数の共通回路、例えばマルチコアプロセサにあっては各コアのスキャンチェーン集合２０を作成する。【００２３】
仮定故障集合作成部２２は、回路情報読込部１０で読み込んだ半導体回路、例えばマルチコアプロセサにおけるコア毎に仮定故障集合２４を作成する。ここで、仮定故障とは、共通回路を構成する論理素子の端子が０又は１に固定される故障をいう。【００２４】
スキャンチェーン集合作成部１８によるスキャンチェーン集合２０の作成と、仮定故障集合作成部２２における仮定故障集合２４の作成は、具体的には共通回路の等価性に着目したテストパターンの生成を行うため、各共通回路における入力ポイントであるスキャンチェーン集合（以下「スキャンＦＦ集合」という）及び仮定故障集合２４のコア間における対応付けを行っている。【００２５】
テスト対象回路決定部２６は、回路情報読込部１０で読み込んだ半導体回路、例えばマルチコアプロセサにおける複数の共通回路である各コアのいずれか１つを第１のテスト対象のコアとして決定し、決定された第１のテスト対象のコアに対する回路故障の検出を行った後に、第１のテスト対象のコアとは異なる他のコアを第２のテスト対象のコアとして決定する処理を行う。【００２６】
テストパターン生成部２８は、テスト対象回路決定部２６で決定された第１のテスト対象の共通回路について作成されたスキャンチェーン集合２０と仮定故障集合を用いて、テストパターンの生成を行う。このテストパターンの生成は、ＡＴＰＧ実行部３０とダイナミックコンパクション実行部３２により行われる。【００２７】
ＡＴＰＧ実行部３０は、仮定故障集合２４より未検出な仮定故障を１つ、１次故障として選択し、選択された１次故障に対し、１次故障を検出するためのテストパターンを生成する。【００２８】
ダイナミックコンパクション実行部３２は、ＡＴＰＧ実行部３０により１次故障のテストパターン生成に成功したならば、そのときのネットステートにおいて、仮定故障集合２４において未検出である仮定故障を２次故障として任意に１つ選択し、選択した２次故障に対しＡＴＰＧ実行部３０により２次故障を検出するためのテストパターンを生成する。【００２９】
このためダイナミックコンパクション実行部３２は、１次故障に対するＡＴＰＧの成功で生成されたテストパターンを更に圧縮するテストパターン圧縮部として機能することになる。【００３０】
故障シミュレータとして機能する回路故障検出部３４は、テストパターン生成部２８により圧縮されたテストパターンを用いて、共通回路である複数コアの論理回路を対象に回路故障の検出を行う。【００３１】
対象回路交換部３６は、テスト対象回路決定部２６で決定された第１のテスト対象の共通回路であるコア、即ち対象コアを順次交換し、コア間での検出故障の偏りを抑制する。【００３２】
回路データ書込部３８は、テストパターン生成部２８において所定の終了条件が満たされた場合に、検出故障情報などをテストデータベース１２の回路データ１４に書き出して処理を終了する。【００３３】
ここで図１のテストパターン生成システムにあっては、スキャンチェーン集合作成部１８、仮定故障集合作成部２２及び対象回路交換部３６が本実施形態により新たに追加された機能であり、またテストパターン生成部２８に設けているダイナミックコンパクション実行部３２が本実施形態により修正が加えられた機能であり、それ以外の機能は従来のテストパターン生成システムと基本的に同じである。【００３４】
図１のテストパターン生成システムの基本的な動作を説明すると次のようになる。【００３５】
本実施形態におけるテストパターン生成は、テストデータベース１２から回路データ１４を回路情報読込部１０で読み込んだ後、初期化手続きとして、スキャンチェーン集合作成部１８及び仮定故障集合作成部２２により、例えば回路データとしてマルチコアプロセサを読み込んだ場合には、マルチコアプロセサの共通回路である複数のコアごとのスキャンチェーン集合２０と仮定故障集合２４を作成し、更にテスト対象回路決定部２６においてＡＴＰＧ対象フラグをセットする操作であるテスト対象コアの設定が行われる。【００３６】
続いてテストパターン生成部２８、回路故障検出部３４及び対象回路交換部３６のループにおいて、所定の終了条件を満たすまで、仮定故障集合２４から取り出した１次故障に対しＡＴＰＧ実行部３０による処理が行われる。【００３７】
ＡＴＰＧ実行部３０による１次故障に対するＡＴＰＧが成功したならば、テストパターン圧縮部として機能するダイナミックコンパクション実行部３２による処理が仮定故障集合２４の中から取り出した２次故障に対し実行され、圧縮されたテストパターンを生成する。【００３８】
続いて回路故障検出部３４が、ダイナミックコンパクション実行部３２の処理により生成されたテストパターンを用いた故障シミュレーションにより仮定故障の検出処理が行われ、テストデータベース１２に対しテストパターン１６の保存が行われる。【００３９】
テストパターン生成部２８、回路故障検出部３４及び対象回路交換部３６によるループ処理の際に、回路故障検出部３４における故障シミュレーションの後でコア間の故障検出比率のばらつきを抑制するため、対象回路交換部３６による対象コアの交換処理がＡＴＰＧ対象フラグの設定変更により行われる。【００４０】
そして、テストパターン生成部２８で所定の終了条件を満たした場合に、回路データ書込部３８が、検出された故障情報などをテストデータベース１２の回路データ１４に書き出して一連の処理を終了する。【００４１】
図２はテストパターン圧縮部として機能する図１のダイナミックコンパクション実行部３２の機能構成を示したブロック図である。ダイナミックコンパクション実行部３２は、終了条件判定部３８、対象コア判定部４０、２次故障ＡＴＰＧ実行部４２、テスト流用部４４及びテスト補間部４５で構成される。【００４２】
このダイナミックコンパクション実行部３２の機能の内、対象コア判定部４０、テスト流用部４４及びテスト補間部４５が、本実施形態により新たに追加された機能であり、それ以外の機能は従来のダイナミックコンパクションにおける機能と同じである。【００４３】
ダイナミックコンパクション実行部３２におけるダイナミックコンパクションの処理は、基本的には終了条件判定部３８において未検出故障がなくなるまで、対象コア判定部４０に２次故障ＡＴＰＧ実行部４２、テスト流用部４４及びテスト補間部４５からなるループを実行する処理である。【００４４】
対象コア判定部４０は、コアごとの仮定故障集合２４に設定されたＡＴＰＧ対象フラグ及びスキップフラグを参照し、ＡＴＰＧ対象フラグがオンしていれば２次故障ＡＴＰＧ実行部４２を実行するが、オフしている場合には２次故障ＡＴＰＧ実行部４２の処理はスキップする。【００４５】
テスト流用部４４は、処理対象としている１つのコア内部の仮定故障に対し、２次故障ＡＴＰＧ実行部４２による処理でテストパターンの生成に成功した場合に、生成されたテストパターンを他のコアに流用することで、対応する仮定故障に対するＡＴＰＧの実行を削減し、テストパターンの生成時間全体を削減可能とする。【００４６】
テスト補間部４５は、テスト流用部４４でテストパターンを他のコアに流用した後に、他のコアの対応する故障に対しても２次故障ＡＴＰＧ実行部４２による処理を行うことで、テストパターンの補間を行う。【００４７】
本実施形態にあっては、図２のダイナミックコンパクション実行部３２に示すように、ＡＴＰＧに成功した際のテストパターンの流用及びテストパターンの補間、更には図１に示した対象回路交換部３６による対象コアの交換に加え、後の説明で明らかにするコア間での回路初期状態の共通化やコア間排他性のキャンセル、更にはスキャンシフトの共有化などにより、全体としてのテストパターン生成時間の削減を達成する。【００４８】
図３は本実施形態のテストパターン生成システムが適用されるマルチコアプロセサを示したブロック図である。図３において、マルチコアプロセサ４６は、入出力制御部４８に対し４つのコア５０−１，５０−２，５０−３，５０−４を設けている。【００４９】
入出力制御部４８には、入出力インタフェース５２、キャッシュメモリ５４−１，５４−２、ＰＬＬ５８を備えたクロックコントローラ５６及びデータコントローラ６０が設けられる。コア５０−１〜５０−４は、クロックコントローラ５６に対しクロックパスで接続され、またデータコントローラ６０に対してはデータパスで接続されている。【００５０】
コア５０−１〜５０−４は等価な回路構成を持ち、これに対し入出力制御部４８には、コア５０−１〜５０−４の入出力部として共通制御部、個別制御部、共通観測部及び個別観測部が存在する。【００５１】
図４は図３のクロックコントローラ５６の概略を示したブロック図であり、個別制御部６４−１と共通制御部６２−１が設けられている。【００５２】
図５は図３のデータコントローラ６０の概略を示したブロック図であり、個別制御部６４−２と共通制御部６２−２が設けられると共に、共通観測部６６と個別観測部６８が設けられている。【００５３】
図６は図３のマルチコアプロセサ４６を模式的な等価回路により示したブロック図である。即ち、図３のマルチコアプロセサ４６において、等価な回路構成を持つコア５０−１〜５０−４を中心に回路構成を見た場合、それぞれのコアの入出力として図５及び図６に示したような共通制御部と個別制御部及び共通観測部と個別観測部が存在しており、マルチコアプロセサ４６をこのような回路構成と考えた場合、図６のような模式的な等価回路で表すことができる。【００５４】
図６において、コア５０−１〜５０−４は同じ回路構成を備えている。例えばコア５０−１を例にとると、論理ゲートの集合である３つのコア回路７２−１１，７２−１２，７２−１３が設けられ、それぞれの入力としてスキャンＦＦ７０−１１，７０−１２，７−１３が設けられ、またコア回路７２−１１の出力にはスキャンＦＦ集合７０−１４が設けられている。【００５５】
またコア５０−１〜５０−４のそれぞれに対しては、共通制御部６２、個別制御部６４、共通観測部６６、個別観測部６８が設けられている。共通制御部６２にはスキャンＦＦ７２−５が設けられ、コア５０−１〜５０−４に設けているコア回路７２−１１〜７２−４１に入力接続している。【００５６】
個別制御部６４にはスキャンＦＦ７２−６が設けられ、コア５０−１〜５０−４に設けているコア回路部７２−１１〜７２−４１のそれぞれに独立に個別接続している。【００５７】
共通観測部６６にはスキャンＦＦ７２−７が設けられ、スキャンＦＦ７２−７に対してはコア５０−１〜５０−４のコア回路７２−１２，７２−２２，７２−３２，７２−４２の出力を、デコーダ７５を介して接続している。【００５８】
個別観測部６８にはスキャンＦＦ７２−８が設けられ、コア５０−１〜５０−４に設けているコア回路７２−１３，７２−２３，７２−３３，７２−４３の出力が個別に接続されている。【００５９】
以下、図６の模式的に示したマルチコアプロセサ４６を対象に、本実施形態によるテストパターン生成処理を詳細に説明する。
（２．入力ポイントと故障の対応付け）
本実施形態にあっては、マルチコアプロセサ４６におけるコア５０−１〜５０−４の等価性に着目したテストパターン生成を行うため、コア５０−１〜５０−４における入力ポイントであるスキャンＦＦ集合及び仮定故障集合の対応付けを行う必要がある。【００６０】
スキャンＦＦ集合及び仮定故障集合の対応付けは、マルチコアプロセサ４６が階層設計されている場合には、コア５０−１〜５０−４は同一のモジュールとして設計されているはずであることから、単純にネット名あるいはシグナル名の比較によってスキャンＦＦ集合と仮定故障集合のコア間での対応付けが可能である。【００６１】
またマルチコアプロセサ４６が階層設計されていない場合であっても、既存の論理位置検証ツールなどを使用することによって、スキャンＦＦ集合及び仮定故障集合のコア間での対応付けが実現できる。【００６２】
ここでマルチコアプロセサ４６のコア数を一般化してｍ（ｍは正の整数）とすると、各コア内部のスキャンＦＦ集合Ｓ及び仮定故障集合Ｆのそれぞれは次のように表記することができる。
Ｓ＝｛ｓ［１］［ｉ］，ｓ［２］［ｉ］・・・，ｓ［ｍ］［ｉ］｝
ｉ：コア内部のスキャンＦＦ数（ｉは正の整数）
Ｆ＝｛ｆ［１］［ｊ］，ｆ［２］［ｊ］・・・，ｆ［ｍ］［ｊ］｝
ｊ：コア内部の仮定故障数（ｊは正の整数）
図７は図６のマルチコアプロセサ４６におけるコア数をｍと一般化して、スキャンＦＦ集合と仮定故障集合のコア間での対応付けを示した説明図である。【００６３】
図７（Ａ）はｍ個のコア５０−１〜５０−ｍを取り出して示しており、それぞれ図６のコア５０−１〜５０−４に示したのと同じスキャンＦＦ７０−１１〜７０−ｍ３及びコア回路７２−１１〜７２−ｍ３を備えている。【００６４】
ここでコア５０−１を例にとると、そのスキャンＦＦ集合７４−１は、コア回路７２−１１，７２−１２，７２−１３の入出力に設けているスキャンＦＦ集合７０−１１，７０−１２，７０−１３及び７０−１４を点線のようにまとめた集合であり、図７（Ｂ）に取り出して示す集合となる。【００６５】
一方、仮定故障集合７６−１はコア５０−１に設けているコア回路７２−１１，７２−１２，７２−１３について設定された０又は１に固定される仮定故障の集合である。例えば、コア５０−１に設けているコア回路７２−１１は、図７（Ｃ）に取り出して示すゲート回路であり、このゲート回路における入力のそれぞれに仮定故障としてｆ［１］［１］、ｆ［１］［２］及びｆ［１］［３］が設定されており、これらの仮定故障をすべてのコア回路７２−１１〜７２−１３について集めた集合が仮定故障集合７６−１となる。【００６６】
図８は本実施形態で使用される故障データのテーブル構造を示した説明図であり、Ｃ++で記述した場合を例に取っている。【００６７】
図８において、故障データ８２は故障テーブル８４と故障集合テーブル８６で構成されている。故障テーブル８４には
識別子、
仮定ネット、
故障値、
ａｔｐｇトライ済みフラグ、
検出済みフラグ
が存在する。更に本実施形態では新たに加えられた情報として、
ａｔｐｇ対象フラグ８５、
スキップフラグ８７
が設けられている。【００６８】
故障データにおけるａｔｐｇ対象フラグ８５及びスキップフラグ８７を参照することで、コア部分がＡＴＰＧの対象となるか否か、スキップするか否かを制御する。【００６９】
ＡＴＰＧの実行にあっては、テスト対象回路における個々の故障に関する情報である故障テーブル８４と、テスト対象回路における故障テーブル８４の集合である故障集合テーブル８６をインスタンス化し、故障データ８２として扱うことになる。【００７０】
図９は図１のスキャンチェーン集合作成部１８及び仮定故障集合作成部２２により、ＡＴＰＧの成功の際に生成したテストパターンを他のコアに流用するために用意するコアごとの仮定故障集合及びスキャンＦＦ集合を、Ｃ＋＋言語によりテーブル構造で示した説明図である。【００７１】
図９（Ａ）は仮定故障集合データ８８であり、１コア分の故障集合テーブル９０−１と回路全体でのコア故障集合テーブル９０−２で構成されている。【００７２】
即ち、１コア分の故障集合テーブル９０−１におけるｉｄ配列には、図７（Ａ）に示したようなＡＴＰＧ成功時のテストパターン流用を行うために用意するコアごとの仮定故障集合７６−１〜７６−ｍを保存し、この配列の各要素には図８に示した故障テーブル８４における故障クラスの識別子を保存する。【００７３】
そして、これらコアごとの故障集合テーブル９０−１をまとめた回路全体でのコア故障集合テーブル９０−２を用いて管理することで、コア流用や対象コア交換などのように回路全体に亘る動作を実現する。【００７４】
図９（Ｂ）はスキャンＦＦ集合データ９２であり、１コア分のスキャンＦＦ集合テーブル９４−１と回路全体でのスキャンＦＦ集合テーブル９４−２で構成される。【００７５】
この場合にも、スキャンＦＦ集合テーブル９４−１のｉｄ配列には図７（Ａ）のコア５０−１〜５０−ｍに示したスキャンＦＦ集合７４−１〜７４−ｍを保存し、また、このｉｄ配列の各要素には図８の故障テーブル８４に示した識別子を保存する。【００７６】
そして、コアごとのスキャンＦＦ集合テーブル９４−１をまとめた回路全体でのスキャンＦＦ集合テーブル９４−２を用いて管理することで、ＡＴＰＧ成功時のテストパターンの流用や対象コアの交換のような回路全体に亘る動作が実現できる。
（３．テストパターンの流用）
図１０は本実施形態におけるＡＴＰＧに成功したコアのテストパターンを他のコアに流用する処理を示した説明図である。【００７７】
本実施形態にあっては、図１のスキャンチェーン集合作成部１８及び仮定故障集合作成部２２により、スキャンチェーン集合Ｓと仮定故障集合Ｆのコア間の対応付けができたならば、例えば図１０において対象コアとしてコア５０−１を選択しているときには、コア５０−１〜５０−４に仮定される故障の内、コア５０−１の内部の仮定故障ｆ［１］［ｊ］に対してのみＡＴＰＧを実行し、テストパターンの生成を試みる。【００７８】
このＡＴＰＧの実行によりコア５０−１の故障に対するテストパターンの生成が成功した場合にのみ、残りのコア５０−２，５０−３，５０−４の仮定故障ｆ［２］［ｊ］，ｆ［３］［ｊ］，ｆ［４］［ｊ］のためのテストパターンとして、ＡＴＰＧ成功時のコア５０−１の内部のスキャンＦＦ集合ｓ［１］［＊］に設定されたステートを、図１０の矢印で示すようにコア５０−２，５０−３，５０−４に流用する。【００７９】
より詳細には、ＡＴＰＧ成功時のコア５０−１の内部のスキャンＦＦ集合ｓ［１］［＊］に設定されたステートの中の、ＡＴＰＧにより参照されたスキャンＦＦ集合のステートが流用される。【００８０】
この流用は
ｓ［１］［＊］→ｓ［２］［＊］，ｓ［３］［＊］，ｓ［４］［＊］
として表すことができる。【００８１】
このようにコア５０−１の内部の故障に対しＡＴＰＧがテストパターンの生成に成功した場合に、生成されたテストパターン（スキャンＦＦ集合のステート）を他のコア５０−２，５０−３，５０−４に流用することで、コア５０−２，５０−３，５０−４の対応する内部の故障に対するＡＴＰＧの実行を削除することができ、これによって回路全体に対するテスト生成時間を削減することができる。
（４．テストパターンの補間）
図１１は本実施形態におけるテストパターンを流用したコアに対し、ＡＴＰＧを実行するテストパターン補間処理を示した説明図である。【００８２】
図１１において、コア５０−１〜５０−４の内部の仮定故障ｊがスキャンＦＦ集合Ｓによってのみ与えられるステートによって検出されるならば、図１０に示したテストパターンの流用によってテストパターンの生成は完了することになる。【００８３】
しかしながら、実際のマルチコアプロセサ４６にあっては、コアごとに制御を行う個別制御部６４を持つ場合には、図１０に示したテストパターンの流用を行うのみでは、当該個別制御部６４に対するテストパターンは生成されないため、ＣＰＵ全体に対するテストパターン生成は未完成となってしまう。【００８４】
そこで本実施形態にあっては、例えばコア５０−１の仮定故障に対し生成されたテストパターンを、図１０の矢印に示すように他のコア５０−２，５０−３，５０−４に流用した後に、図１１に示すように流用先のコア５０−２，５０−３，５０−４に対しても改めてＡＴＰＧを実行し、コア５０−１〜５０−４ごとに存在する個別制御部６４に対するテストパターン生成を補間する。【００８５】
ここで、テストパターンの補間処理によれば、対象としたコア５０−１の仮定故障ｆ［１］［ｊ］以外に、例えば残りのコアをコア５０−２〜５０−ｍの仮定故障ｆ［２］［ｊ］〜ｆ［ｍ］［ｊ］に対し、ＡＴＰＧが（ｍ−１）回、実行される。【００８６】
このためテストパターンの生成に必要な時間は、元となるコア５０−１の仮定故障ｆ［１］［ｊ］に対する時間をｔ１とした場合、これを含めて
ｔ１＋（ｍ−１）×ｔ１＝ｍ×ｔ１
となり、テストパターン生成時間の削減は期待できないように見える。【００８７】
しかしながら、本実施形態にあっては、図１０に示すように、コア５０−２〜５０−ｍ（ｍ＝４）の仮定故障ｆ［２］［ｊ］〜ｆ［ｍ］［ｊ］に対しては、ＡＴＰＧの初期ステートとして、最初に処理したコア５０−１の仮定故障ｆ［１］［ｊ］に対するテストパターンが流用されるため、探索を行わなければならない空間は個別制御によって決定される空間のみに限定される。【００８８】
このため、コア５０−２〜５０−ｍの故障に対するＡＴＰＧを必要とするテストパターン生成時間ｔ２〜ｔｍの総和は
Σｔｊ  ≦  （ｍ−１）×ｔ１
但し、ｊ＝２，３・・・，ｍ
となる。【００８９】
このため仮定故障ｆ［２］［ｊ］〜ｆ［ｍ］［ｊ］に対して単純にＡＴＰＧを（ｍ−１）回繰り返し実行した場合の生成時間よりも、コア５０−２〜５０−ｍの故障に対するＡＴＰＧが必要とするテスト生成時間の総和が大きくなることはない。
（５．対象コアの交換）
本実施形態にあっては、複数のコアの中から特定のコアを選択してテストパターン生成処理を行う際に、対象コアを順次交換して、コア間での検出故障の偏りを抑制する。【００９０】
図１２は本実施形態におけるコア間の排他性を示した説明図である。図１２のマルチコアプロセサ４６において、実際の回路構成にあっては、個別制御部６４と共通観測部６６において、それぞれ排他な論理が存在する場合がある。【００９１】
個別制御部６４にあっては、スキャンＦＦ７５−６の出力側にデコーダ９６が設けられており、デコーダ９６にあっては、コア５０−１のコア回路７２−１１からの要求値「０」を充足すると、コア５０−２，５０−３，５０−４に設けているコア回路７２−２１，７２−３１，７２−４１への信号が「１」に決定される論理を持っており、この結果、個別制御部６４はコア５０−１とコア５０−２〜５０−４の間で制御排他性を持つことになる。【００９２】
また共通観測部６６のスキャンＦＦ７２−７に対しては、コア５０−１〜５０−４に設けているコア回路７２−１２，７２−２２，７２−３２，７２−４２からの信号が論理積演算を行うＡＮＤゲート９８により結合されている。【００９３】
この状態で、コア５０−１のコア回路７２−１２における故障ｆ［１］［ｊ］を観測するときに、この信号が「０」となるならば、コア５０−２，５０−３，５０−４におけるコア回路７２−２２，７２−３２，７２−４２の故障ｆ［２］［ｊ］，ｆ［３］［ｊ］及びｆ［４］［ｊ］による信号は、ＡＮＤゲート９８の出力が０となるため、同時に観測することができない。したがって共通観測部６６にあっては、コア５０−１〜５０−４の間に観測排他性が存在している。【００９４】
このようにコア間に制御排他性及び観測排他性がある場合には、例えば対象コアとしてコア５０−１を固定して、図１のテストパターン生成システムによりテストパターンの流用及びテストパターンの補間を含む処理を実行すると、対象コア５０−１以外のコア５０−２〜５０−４では正しいテストパターンが生成されなくなるため、故障検出率が対象コア５０−１に比べて低下するというアンバランスを引き起こす。【００９５】
そこで本実施形態にあっては、テストパターン生成処理の対象とするコアを適当なタイミングで順次交換することで、コア間の検出故障のアンバランスを抑制する。【００９６】
本実施形態における対象コアの交換は、
（１）  故障集合テーブルの再構成
（２）  故障集合テーブルへのアクセス順序の交換
等の方法により実現できる。【００９７】
図１３は前記（２）の故障集合テーブルへのアクセス順序を交換する対象コア交換処理を示した説明図である。【００９８】
図１３はマルチコアプロセサ４６のコア数をｍと一般化にした場合を例に取っており、コア５０−１〜５０−ｍに対応して仮定故障集合Ｆが
Ｆ＝｛ｆ［１］［＊］，ｆ［２］［＊］・・・，ｆ［ｍ］［＊］
として作成されている。【００９９】
図１３の対象コア交換処理にあっては、図１のテストパターン生成部２８に示したダイナミックコンパクションのｎ回目のコンパクションターンにおいて、コア５０−１をＡＴＰＧ対象としている場合には、コア５０−１に対応した仮定故障集合７６−１のＡＴＰＧフラグ（ＡＴＰＧを行う対象のコアを示すＡＴＰＧ対象フラグ）をオンしてＡＴＰＧ対象とし、それ以外のコア５０−２〜５０−ｍの仮定故障集合７６−２〜７６−ｍについてはＡＴＰＧフラグをオフとしてＡＴＰＧ対象外としている。【０１００】
次にｎ＋１のコンパクションターンの際には、ｎ回目のコンパクションターンでオンしていたコア５０−１の仮定故障集合７６−１のＡＴＰＧフラグをオフとすると同時に、次のコア５０−２の仮定故障集合７６−２におけるＡＴＰＧフラグをオンしてＡＴＰＧ対象とし、ＡＴＰＧの対象コアをコア５０−１から５０−２に交換する。以下同様に、コンパクションターンごとにＡＴＰＧフラグの操作により、ＡＴＰＧ対象コアを順次交換する処理を繰り返す。【０１０１】
このようにＡＴＰＧ対象コアを順次交換して、例えば２次故障に対するダイナミックコンパクションを繰り返すことで、図２に示したような制御排他性及び観測排他性に起因したコア間での検出故障の偏りを抑制することができる。【０１０２】
ここで、ＡＴＰＧ対象コアをコア５０−１，５０−２，５０−３，５０−４と順次交換するコンパクションをくりかえした場合、ＡＴＰＧ対象コア５０−１〜５０−４の各々の対応する仮定故障ｆ［１］［ｊ］，ｆ［２］［ｊ］，ｆ［３］［ｊ］，ｆ［４］［ｊ］の内、交換された１つの仮定故障ＡＴＰＧしか実行されず、残りはスキップされる理由を説明する。【０１０３】
いま、ＡＴＰＧ対象コアをコア５０−１，５０−２，５０−３，５０−４と順次交換するコンパクションとして、例えば次の仮定故障につきＡＴＰＧを繰り返えしたとする。
ｎ回目    ：コア５０−１の仮定故障ｆ［１］［ｎ］
ｎ＋１回目：コア５０−２の仮定故障ｆ［２］［ｎ＋１］
ｎ＋２回目：コア５０−３の仮定故障ｆ［３］［ｎ＋２］
ｎ＋３回目：コア５０−４の仮定故障ｆ［４］［ｎ＋３］
この場合、次のｎ＋４回目でコア５０−１に戻ってきた場合、コア５０−１の次の仮定故障はｆ［１］［ｎ＋４］が選択され、仮定故障ｆ［１］［ｎ＋１］〜ｆ［１］［ｎ＋３］はスキップされる。【０１０４】
スキップできる理由は次の仕組みによる。ＡＴＰＧ対象コアについて、コア５０−１，５０−２，５０−３，５０−４を順次交換したコンパクションによりＡＴＰＧに成功した場合、生成したテストパターンを使用して図１の回路故障検出部３４による故障シミュレーションがコア５０−１〜５０−４の共通回路全体を対象に実行され故障が検出され、故障シミュレーションによりコア５０−１〜５０−４の検出故障につき図８の故障テーブルに示した「検出済みフラグ」がセットされる。【０１０５】
このためｎ＋４回目でコア５０−１に戻ってきた場合、仮定故障ｆ［１］［ｎ＋１］〜ｆ［１］［ｎ＋３］には故障シミュレーションにより「検出済みフラグ」がセットされているためスキップされ、仮定故障ｆ［１］［ｎ＋４］を選択することができる。
（６．ＡＴＰＧスキップの無効化）
図１２に示すマルチコアプロセサ４６における個別制御部６４の制御排他性及び共通観測部６６の観測排他性を含むコア間の排他性は、テスト対象としている回路構成に依存したものであり、この排他性によって、ＡＴＰＧ対象コア５０−１に対応するコア５０−２〜５０−４の仮定故障ｆ［２］［ｊ］〜ｆ［４］［ｊ］は、同時検出の可能性と不可能性を一意に決定することができなくなる。【０１０６】
本実施形態にあっては、対象として選択した例えばコア５０−１の仮定故障ｆ［１］［ｊ］に対するＡＴＰＧ実行の成功をトリガとして、その後、他のコア５０−２〜５０−４に対する一連のテストパターンの流用及びテストパターンの補間処理が行われる。【０１０７】
このようなテストパターンの流用及びテストパターンの補間処理において、コア間での同時検出の可能性と不可能性を一意に決定できない故障に対しては、故障検出の効率が低下することになる。【０１０８】
例えば、コア５０−１〜５０−４に対応する仮定故障集合
｛ｆ［１］［ｊ］，ｆ［２］［ｊ］，ｆ［３］［ｊ］，ｆ［４］［ｊ］｝
が存在した場合に、ある条件の下、例えばダイナミックコンパクションの中のネットステートにおいて、コア５０−１，５０−２の仮定故障集合
｛ｆ［１］［ｊ］，ｆ［２］［ｊ］｝
に対するテストパターンは存在するが、コア５０−３，５０−４に対する仮定故障集合
｛ｆ［３］［ｊ］，ｆ［４］［ｊ］｝
に対するテストパターンが存在しなかったとする。【０１０９】
このとき対象とするコアとしてコア５０−１又はコア５０−２を選択していれば問題ないが、コア５０−３又は５０−４を選択していた場合には、コア５０−１又は５０−２を選択していれば本来テストパターンの生成が可能であったはずの仮定故障集合
｛ｆ［１］［ｊ］，ｆ［２］［ｊ］｝
へのテストパターン生成を取りこぼすことになり、これはテストパターン当たりの故障検出の効率の低下を招くことになる。【０１１０】
本実施形態にあっては、例えば対象コア５０−１に対するＡＴＰＧが成功したにもかかわらず他のコア５０−２，５０−３，５０−４に対するテストパターンの流用やテストパターンの補間処理に失敗した場合には、それらの故障の間にはテストパターン生成に関するコア間の排他性が存在するはずである。【０１１１】
そこで、テストパターンの流用やテストパターンの補間処理に失敗した後は、流用先及び補間先のコアに対応して生成している仮定故障集合に設けているスキップフラグをそれまでのオンからオフに設定し、ＡＴＰＧをスキップしないように学習する。【０１１２】
例えばＪ＝１，２，３，・・・・・ｉ，ｊとした場合、コア５０−１を対象としたｉ番目の仮定故障ｆ［１］［ｉ］によるＡＴＰＧの成功に基づき、他のコア５０−２〜５０−４へのテストパターンの流用処理を行ったが失敗した場合は、流用先となるコア５０−２〜５０−４のｉ番目の仮定故障ｆ［２］［ｉ］，ｆ［３］［ｉ］，ｆ［４］［ｉ］のスキップフラグをオフする。【０１１３】
そして、対象コア５０−１のテストパターン生成が終了してコア５０−２〜５０−４のテストパターン生成に移行した際に、スキップフラグがオフとなっている仮定故障を選択してＡＴＰＧを実行することになる。
（７．コア間での回路初期状態の共通化）
本実施形態による対象コアの故障に対するＡＴＰＧ成功時のテストパターン流用及びテストパターン補間の失敗の要因としては、図１２に示したような回路構成自体によるコア間の排他性以外にも、テストパターンの流用時に流用元コアと流用先コアとでＡＴＰＧが対象としている仮定故障集合の周辺のネットステートの不一致が考えられる。【０１１４】
このようなネットステートの不一致は、ダイナミックコンパクションでは、テストパターンの生成の進行（コンパクションターン）に伴い、図１２に示した回路の排他性によっても起こるが、それ以前のテストパターン生成の初期段階から回路状態が異なっている場合がある。【０１１５】
即ち、回路の初期状態を決定する操作としては
（１）  ユーザによって特定のプライマリインプットやスキャンインプットなどの入力ポイントに対し、０、１、Ｘ（不定値）又はＺ（ハイインピーダンス値）等の入力値を維持するステートが指示されるクリップ処理、
（２）  クリップ処理のような入力ポイントの直接的な指示ではなく、回路内部におけるネット（接続信号）に対する０、１、Ｘ（不定値）又はＺ（ハイインピーダンス値）等の特定のステート（以下、「ネットステート」という）を固定するような指示のみが与えられ、この指示によるネットステートの実現にＡＴＰＧが使用される処理、
がある。【０１１６】
クリップ処理はユーザによる任意の指示であるため、クリップ処理に伴うコア間のネットステートの不一致はＡＴＰＧによっては調整不可能である。しかしながら、回路内部のネットステートを固定する指示によるコア間でのネットステートの不一致はＡＴＰＧによって調整することが可能である。【０１１７】
回路内部のネットステート固定の具体例としては、例えばプロセサを例にとると、計算機システムの起動時やリバック時のみに使用される設定情報を出力するｎτパス（マルチサイクルパスとも呼ぶ）が存在する場合である。【０１１８】
図１４（Ａ）は通常のＣＰＵ内部における動作周波数で度鬱する１τパス１００を示しており、送りＦＦ１０２、ゲート回路１０４−１，１０４−２及び受けＦＦ１０６で構成される。【０１１９】
ディレイファンクションテストにあっては、一般的に、送りＦＦ１０２に対する送りクロックによって変化するステート、例えば０から１への変化を送りＦＦ１０２に設定し、発生した変化を受けＦＦ１０６に印加される受けクロックによって観測できるか否かにより試験する。【０１２０】
図１４（Ｂ）は１τパス１００の試験結果であり、時刻ｔ１での送りクロックによりステートを０から１に変化させると、時刻ｔ２の受けクロックにより、その変化を観測することができる。【０１２１】
図１４（Ｃ）はｎτパス１０１を示している。ｎτパス１０１は、送りＦＦ１０２と受けＦＦ１０６の間に例えば５つのゲート回路１０４−１〜１０４−５が存在している。【０１２２】
図１４（Ａ）の１τパス１００と同様、ｎτパス１０１について１τサイクルで回路を動作させるディレイファンクションテストを実行した場合、図１４（Ｄ）に示す観測結果となり、時刻ｔ２の受けクロックによる受けＦＦ１０６によっては、送りＦＦ１０２のステート０から１への変化がパスの遅延により伝播が保証されず、与えられた１τサイクルのテストサイクルに依存して期待値不良を起こす可能性がある。【０１２３】
そこでディレイファンクションテストの際には、ｎτパス１０１のネットにカットポイント１０８を与え、カットポイント１０８の手前のゲート１０４−３に対し、ステートを固定化するカット処理として、送りクロック及び受けクロックに同期してステート０からステート０への変化を与えることで、ゲート１０４−３の出力のカットポイント１０８を固定化している。【０１２４】
このようにｎτパス１０１に対しステートを固定化するカット処理を行う際に、何らかの制約条件がなければ、ＡＴＰＧは与えられたカットポイント１０８に対し独立にステートを固定化するためのカット処理を行おうとするため、各コアにおいて同じ回路状態となることが保証されていない。このため、テストパターンの流用及び補間処理の際に失敗する可能性がある。【０１２５】
そこで本実施形態にあっては、回路の初期状態をコア間で共通にするため、カット処理を行う際に、例えば図１２におけるコア５０−１を対象コアとして選択した場合、選択した対象コア５０−１内に指示されたカットポイントのステート固定がＡＴＰＧによりテストパターンの生成に成功したならば、カットを実現するためのステートを、図１０に示したスキャンＦＦ集合のステートの流用の場合と同様に他のコア５０−２，５０−３，５０−４に流用する。【０１２６】
更に、カットを実現するステートを流用した後に流用先のカットポイントに対しＡＴＰＧを実行して補間することで、回路の初期化状態をコア間で共通化する。
（８．コア間排他性のキャンセル）
図１５（Ａ）は図１２に示した個別制御部６４における制御排他性の原因となる回路部分を取り出している。図１５（Ａ）にあっては、個別制御部６４から各コアへの制御信号が、例えばデコーダ９６の論理を介することで、制御排他性を持つことになる。【０１２７】
このような場合には、図１５（Ｂ）に示すキャンセラ回路１１０を設ける。キャンセラ回路１１０はスキャンＦＦ１１２とＥＯＲゲート（排他的論理和ゲート）１１４−１〜１１４−４で構成される。即ち、ＥＯＲゲート１１４−１〜１１４−４の一方の入力にデコーダ９６からの各コアに対する制御信号を入力すると共に、他方の入力にスキャンＦＦ１１２からの信号を入力している。【０１２８】
このようなキャンセラ回路１１０を用いることで、デコーダ９６からＥＯＲゲート１１４−１〜１１４−４を介して出力される各コアへの制御信号は、スキャンＦＦ１１２に対するステート０または１により独立に設定でき、コア間での制御排他性を排除することができる。【０１２９】
図１６（Ａ）は図１２の共通観測部６６側における観測排他性を持つ回路部を示している。図１６（Ａ）に示す各コアからの信号が論理積演算を行うＡＮＤゲート９８で結合されるような場合には、あるコアからの故障を観測するときに、その信号値が０となる必要があるならば他のコアからの信号値は１でなければならず、コア間の観測に関して観測排他性が生じている。【０１３０】
このような観測排他性は、１６（Ｂ）に示すキャンセラ回路１１６を設けることでキャンセルすることができる。図１６（Ｂ）にあっては、キャンセラ回路１１６として排他的論理和演算を行うＥＯＲゲート１１８を設け、ＡＮＤゲート９８に対する各コアからの制御信号を入力し、ＥＯＲ１１８の出力にスキャンＦＦ１２０を設けている。【０１３１】
このようなキャンセラ回路１１６を設けたことで、各コアからの観測信号、例えば「０１１１」をＥＯＲゲート１１８により集約させて、その出力を「１」とし、ＡＮＤゲート９８に対する信号値に関わりなく、他のコアからの故障を示す信号値をスキャンＦＦ１２０で同時に観測できるようにしている。【０１３２】
即ち、キャンセラ回路１１６にＥＯＲゲート１１８を用いることで、ＥＯＲ１１８は制御値を持たずに常に故障伝播が可能であるため、コア間での故障観測に関する排他性を排除することができる。
（９．スキャンシフトの共有化）
本実施形態おいて、あるコアにおけるＡＴＰＧ成功時の他のコアに対するテストパターンの流用を考慮しない場合、マルチコアプロセサにおけるスキャンシフトは、すべてのコアのスキャンＦＦチェーンに対し独立にテストパターンをシフトする必要があるため、テスタにロードさせるコア部分に関するテストベクタの量は、スキャンイン及びスキャンシフトの場合でそれぞれ
［１つのコアのテストベクタ］×コア数
となる。【０１３３】
一方、本実施形態にあっては、各コアには類似するベクタをシフトするため、図１７に示すスキャン回路の構成をとることでテストベクタの圧縮が実現できる。【０１３４】
図１７のスキャン回路にあっては、４つのコアごとにコア内のスキャンチェーン１２０−１，１２０−２，１２０−３，１２０−４が存在しているが、スキャンチェーン１２０−１〜１２０−４の入力側にセレクタ１２４−１，１２４−２，１２４−３，１２４−４を設け、セレクタ１２４−１〜１２４−４の一方の入力に共通スキャンイン端子１２２を接続し、他方の入力端子に個別スキャンイン端子１２６−１〜１２６−４を接続している。【０１３５】
セレクタ１２４−１〜１２４−４は、共通動作切替端子１２８に対するセレクト信号により、本実施形態にあっては共通スキャンイン端子１２２の入力を選択するようにしている。【０１３６】
一方、スキャンチェーン１２０−１〜１２０−４の出力には個別スキャンアウト端子１３４−１〜１３４−４が設けられているが、これに加えて各スキャン出力をＥＯＲ１３０に結合して、共通スキャンアウト端子１３２を用いて観測するようにしている。【０１３７】
更に、スキャンチェーン１２０−１〜１２０−４側の回路構成に加え、独立にキャンセラ用スキャンチェーン１３４を設け、スキャンイン端子１３６とスキャンアウト端子１３８を設けている。【０１３８】
スキャンチェーン１２０−１〜１２０−４側の本来のスキャン回路にあっては、スキャンイン時には共通動作切替端子１２８のセレクト信号により、セレクタ１２４−１〜１２４−４を共通スキャンイン端子１２２の入力に切り替え、共通スキャンイン端子１２２を用いてテストベクタをスキャンチェーン１２０−１〜１２０−４に並列的にロードする。【０１３９】
またスキャンアウト時には、スキャンチェーン１２０−１〜１２０−４をＥＯＲゲート１３０で結合して、共通スキャンアウト端子１３２に出力して観測する。これによって、コア部分に関するテストベクタの量をスキャンイン及びスキャンアウトの場合のそれぞれ
［１つのコアのテストベクタ］
とすることができ、本実施形態によらない場合の元のテストベクタ量を（１／コア数）に圧縮することができる。【０１４０】
図１８は図１７に設けたキャンセラ用スキャンチェーン１３４の詳細を示した説明図である。図１８にあっては、マルチコアプロセサに２つの個別制御部６４−１，６４−２と共通観測部６６−１，６６−２を設けた回路構成を例に取っており、共通制御部６４−１，６４−２については、図１５（Ｂ）に示したと同じキャンセラ回路１１０−１，１１０−２が設けられる。【０１４１】
また共通観測部６６−１，６６−２に対しては、図１６（Ｂ）に示したと同じキャンセラ回路１１６−１，１１６−２が設けられている。そして、それぞれのキャンセラ回路１１０−１，１１０−２におけるスキャンＦＦ１１２−６１，１１２−６２及びスキャン回路１１６−１，１１６−２におけるスキャンＦＦ１２０−１，１２０−２を１つの独立したスキャンチェーンとすることで、コア間の排他性をキャンセルした個別制御と故障観測を実現することができる。
（１０．テストパターン生成処理）
図１９は本実施形態におけるテストパターン生成処理の手順を示したフローチャートであり、図１を参照して説明すると次のようになる。【０１４２】
図１９において、まずステップＳ１で回路情報読込部１０がテストデータベース１２から回路データ１４を読み込む。次にステップＳ２でスキャンチェーン集合作成部１８及び仮定故障集合作成部２２が初期化手続きとしてコアごとのスキャンチェーン集合２０と仮定故障集合２４を作成する。【０１４３】
次にステップＳ３で対象コアの設定を行う。例えばステップＳ１で読み込んだ回路データが図６のマルチプロセサ４６の回路データであったとすると、例えば対象コアとしてコア５０−１を選択し、残りのコア５０−２〜５０−４は非対象コアとする。【０１４４】
対象コアの選択は具体的には図８に示した故障データ８２に設けているコアごとの故障テーブル８４に設けているａｔｐｇ対象フラグ８５とスキップフラグ８７の設定で行う。【０１４５】
図２０は対象コアをコア５０−１として設定した場合の各コアの仮定故障集合におけるａｔｐｇフラグとスキップフラグの設定状態を示している。【０１４６】
コア５０−１を対象とコアとして選択した場合にはａｔｐｇフラグはオンし、スキップフラグはオフとしている。これに対し非対象コアとなるコア５０−２、５０−３、５０−４についてはａｔｐｇフラグはオフ、スキップフラグをオンに設定している。【０１４７】
再び図１９を参照するにステップＳ４で所定の終了条件を判別するまでステップＳ５〜Ｓ１０のループの処理を繰り返す。ステップＳ４で判別する終了条件としては次のものがある。
（１）指定された実行時間の上限をこえた実行が行われたか否か。
（２）指定されたテストパターン数の上限を超えたテストパターン生成が行われたか否か。
（３）指定された故障検出率の上限を超えた故障検出率が得られたか否か。
（４）未提出故障が存在するか否か。【０１４８】
続いてステップＳ５で１次故障に対するＡＴＰＧを実行する。即ち対象コアとして選択されたコア５０−１の仮定故障集合から未提出な故障を１次故障として任意にひとつ選択し、ＡＴＰＧによりテストパターンを生成する。【０１４９】
続いてステップＳ６で１次故障に対するＡＴＰＧが成功したか否かチェックし、成功した場合にはステップＳ７に進み、ダイナミックコンパクション実行部３２によりダイナミックコンパクションを実行する。ダイナミックコンパクションの詳細は後の説明で明らかにする。【０１５０】
ダイナミックコンパクションによりテストパターンが生成できたならば、続いてステップＳ８で回路故障検出部３４により生成されたテストパターンを用いた故障シミュレーションにより故障検出とテストデータベース１２に対するテストパターン１６の保存が行われる。【０１５１】
続いてステップＳ９で故障検出率のコア間でのばらつきを抑制するため対象コアを交換する処理が行われる。この対象コアを交換する処理は図８に示したａｔｐｇ対象フラグ８５、スキップフラグ８７につき、例えばコア５０−１からコア５０−２に対象コアを交換する場合には、それまで選択していたコア５０−１のａｔｐｇフラグをオンからオフに設定するとともに、スキップフラグをオフからオンに設定し、同時に次に対象となるコア５０−２のａｔｐｇフラグをそれまでのオフからオンに設定し、スキップフラグをそれまでのオンからオフに切替える。【０１５２】
ステップＳ４で前記（１）〜（４）に示した終了条件のいずれかが判別されるとステップＳ１０に進み、故障検出情報などの回路データ１４をテストデータベース１２に書き込み、一連の処理を終了する。
（１１．ＡＴＰＧ処理）
図２１は図１９のステップＳ５におけるＡＴＰＧ処理の詳細を示したフローチャートである。【０１５３】
図２１において、ＡＴＰＧ処理はステップＳ１で故障励起ステートを設定する。この故障励起ステートの設定は指定される故障が仮定ネットに対する正常値と故障値の励起ステートを設定する処理である。【０１５４】
次にステップＳ２、Ｓ３、Ｓ４の処理により含意処理を実行する。含意処理とは［〜であるならば、〜］という論理検算である。例えばＡ、Ｂを入力、Ｃを出力するａｎｄゲートを例にとると、その含意は次のようになる。
［Ｃ＝ａｎｄ（Ａ，Ｂ）のとき、Ａ＝０ｏｒＢ＝０→Ｃ＝０あるいはＣ＝１→Ａ＝１、Ｂ＝１である］のこのようなａｎｄゲートにおいてＡ＝０ｏｒＢ＝０，Ｃ＝１ならば矛盾である。【０１５５】
この含意処理は具体的にはステップＳ２でバックトラックに備え、
ｃｏｎｄｉｔｉｏｎ（ｎｅｔ−ｓｔａｔｅ，Ｊ／Ｄ−ｆｒｏｎｔｉｅｒ）
をスタックにプッシュし、次にステップＳ３で含意可能なゲートが存在するか矛盾が発生するまで論理検算を行い、ステップＳ４で矛盾を判別した場合にはステップＳ１３に進み、スタックがあればステップＳ１４でスタック内容をトップし、再びステップＳ２からの処理を繰り返す。これにより論理検算で発生及び消滅するＪ−ｆｒｏｎｔｉｅｒ及びＤ−ｆｒｏｎｔｉｅｒを更新する処理を実行する。【０１５６】
続いてステップＳ４で含意の結果、矛盾がなかった場合にはステップＳ５、Ｓ６、Ｓ７のＪ−ｆｒｏｎｔｉｅｒの処理に進む。即ちステップＳ５で未解決なゲートでＪ−ｆｒｏｎｔｉｅｒであることを判別すると、ステップＳ６で解決ステートの有無をチェックし、解決ステートがあればステップＳ７で解決ステートを選択する。【０１５７】
ここでＪ−ｆｒｏｎｔｉｅｒとは、含意で発生する出力のみにステートを持ち、入力が含意不可能のため未設定となるゲートである。例えばＣ＝ａｎｄ（Ａ，Ｂ）のときＣ＝０、Ａ＝Ｂ＝Ｘ（不定値）のようなゲートである。【０１５８】
ＡＴＰＧではＪ−ｆｒｏｎｔｉｅｒに対し、全ての可能な選択が行われる。例えばａｎｄゲートにおいてはＡ＝０が選択され、Ａ＝０の選択で矛盾が生じたならばＢ＝０が選択される。【０１５９】
一方、ステップＳ５で未解決なＪ−ｆｒｏｎｔｉｅｒがなかった場合にはステップＳ８に進み、故障観測をチェックし、故障観測がなければステップＳ９、Ｓ１０、Ｓ１１の処理によりＤ−ｆｒｏｎｔｉｅｒの処理を実行する。即ちステップＳ９で未解決なゲートであるＤ−ｆｒｏｎｔｉｅｒを判別し、ステップＳ１０で解決ステートがあればステップＳ１１で解決ステートを選択する。【０１６０】
ここでＤ−ｆｒｏｎｔｉｅｒとは、含意で発生するいずれかにＤ値（正常値／故障値）をもち、出力にＤ値が伝播していないゲートである。例えばＡＮＤゲートを例にとると、論理積演算をＡ，Ｂに対して行った結果であるＣ＝ａｎｄ（Ａ、Ｂ）においては、ＢのみにＤ（１／０）が伝播し、Ａが不定値（ｘ／ｘ）であるためにｘ／０＝ａｎｄ（ｘ／ｘ、１／０）となるようなゲートである。【０１６１】
ＡＴＰＧではＤ−ｆｒｏｎｔｉｅｒに対し、入力まで伝播しているＤ値を出力に伝播させるための選択が行われ、例えばＡＮＤゲートに対してはＡ＝１／ｘの選択が行われる。【０１６２】
このような処理の繰り返しで、ステップＳ８で故障観測が得られればステップＳ１２に進み、テスト成功と判断して一連のＡＴＰＧの処理を終了する。【０１６３】
一方、ステップＳ４で矛盾ありが判別され、ステップＳ１３でスタックがなくなった場合には、ステップＳ１５でテスト失敗としてＡＴＰＧ処理を終了する。
（１２．ダイナミックコンパクション）
図２２は図１９のステップＳ７におけるダイナミックコンパクションの詳細を示したフローチャートである。図２２において、ダイナミックコンパクションはステップＳ１で終了条件として残存未検出故障があるか否かチェックし、残存未検出故障があればステップＳ２に進み、対象コアか否か判別する。【０１６４】
対象コアの判別は図２０に示したａｔｐｇフラグおよびスキップフラグを参照し、この場合にはａｔｐｇフラグがオンでスキップフラグがオフとなっているコア５０−１を対象コアとして選択し、それ以外のａｔｐｇフラグがオフでスキップフラグがオンとなっている他のコア５０−２〜５０−４についてはそれぞれの仮定故障集合に対するＡＴＰＧ実行はスキップされる。【０１６５】
次にステップＳ３で選択された対象コア５０−１の仮定故障集合から未検出な故障を２次故障として任意にひとつ選択し、選択した２次故障に対しＡＴＰＧを実行する。このＡＴＰＧの詳細は図２１のフローチャートで示したと同じである。【０１６６】
続いてステップＳ４でＡＴＰＧの成功の有無をチェックし、成功した場合にはステップＳ５に進み、対象コアから非対象コアへのテストパターンの流用処理を実行する。続いてステップＳ６でＡＴＰＧにより個別制御部のテストパターンを補間する補間処理を実行する。
（１３．テストパターン流用処理と補間処理）
図２３は図２２のステップＳ５におけるテストパターン流用処理の詳細を示したフローチャートである。【０１６７】
図２３において、テストパターン流用処理はステップＳ１で対象コア＃ｃに対するＡＴＰＧの要求スキャン集合Ｒ＃ｃを取得する。【０１６８】
図２４（Ａ）はコア５０−１〜５０−ｍを対象としたスキャンチェーン集合７４−１〜７４−ｍであり、ステップＳ１にあっては例えば対象コア５０−１に対するＡＴＰＧの要求スキャン集合Ｒ＃ｃとして例えば図２４（Ｂ）に示すｍ＝４とした場合に要求チェーン集合１４０を取得する。【０１６９】
続いてステップＳ２で対象コア＃ｃに対応する非対象コア＃ｋの要求スキャンチェーン集合Ｒ＃ｋを取得する。ここで非対象コア＃ｋは例えばコア５０−２〜５０−３、５０−４であることから、図２４（Ａ）のスキャンチェーン集合７４−２、７４−３、７４−４（図示せず）から図２４（Ｃ）に示すような非対象コアの要求チェーン集合１４２を取得する。【０１７０】
次にステップＳ３で要求スキャンチェーン集合Ｒの要素ｒ（ｒ＝１〜４）を取得し、ステップＳ４で流用先のスキャンＦＦのｓｔａｔｅ［ｓ［ｋ］［ｒ］］のステートが不定値ｘか判定する。【０１７１】
不定値ｘであった場合にはステップＳ５で流用元のｓｔａｔｅ［ｓ［ｃ］［ｒ］］を流用先のｓｔｓｔｅ［ｓ［ｋ］［ｒ］］として流用する。即ち図２４（Ｄ）に示すように、対象コア５０−１におけるＡＴＰＧの成功で得られた流用元のステート１４４を、流用先となる他のコア５０−３〜５０−４における流用先のステート１４６に流用する。【０１７２】
一方、ステップＳ４で流用先のｓｔａｔｅ［ｓ］［ｋ］［ｒ］が不定値ｘでなかった場合には、ステップＳ６で流用失敗のため、流用先の故障集合ｆ［ｋ］［ｊ］のそれまでのオンとなっていたスキップフラグをオフとし、これによってＡＴＰＧの実行を可能とする。【０１７３】
続いてステップＳ７で要求スキャン集合Ｒの全ての要素ｒを処理するまでステップＳ３からの処理を繰り返し、全ての要素ｒの処理が終了するとステップＳ８で全ての非対象コアの処理が済むまでステップＳ２からの処理を繰り返し、全ての非対象コアの処理がすめば一連の処理を終了する。【０１７４】
図２５は図２２のステップＳ６におけるテストパターン補間処理の詳細を示したフローチャートである。図２５において、テストパターン補間処理は図６に示した個別制御部６４のテストパターン生成処理の未完成を抑止するための処理である。【０１７５】
図２５において、テストパターン補間処理は、ステップＳ１で対象コア＃ｃの故障＃ｊに対応する非対象コア＃ｋの故障集合Ｆを取得する。例えば図１０の場合にはコア５０−１を対象コア＃ｃとし、その故障ｆ［１］［ｊ］に対応する故障集合
Ｆ＝｛ｆ［２］［ｊ］，ｆ［３］［ｊ］，・・・，ｆ［ｍ］［ｊ］｝
ｊ：コア内部の仮定故障数
を取得する。【０１７６】
続いてステップＳ２で故障集合Ｆの要素ｆ［ｋ］［ｊ］についてＡＴＰＧを実行する。続いてステップＳ３でＡＴＰＧの成功を判別するとステップＳ４で全要素の処理終了を判別するまでステップ２からの処理を繰り返す。【０１７７】
ステップＳ３でＡＴＰＧに失敗した場合には対象コア５０−１の２次故障と対応する他のコア５０−２、５０−３、５０−４の故障集合との間には排他性、すなわち同時検出不可能性が存在するため、ステップＳ４で故障集合ｆ［ｋ］［ｊ］のスキップフラグをオフとし、それ以降の処理においてこの故障についてＡＴＰＧはスキップされずに実行されることになる。
（１４．故障シミュレーション）
図２６は図１９のステップＳ８における故障シミュレーションの詳細を示したフローチャートであり、イベントドリブン型のシミュレーションを例にとっている。【０１７８】
図２６の故障シミュレーションにおいて、まずステップＳ１でディレイ故障を条件として基準ネットワークの保存を行う。続いてステップＳ２で入力点でのイベントスケジュールを行う。【０１７９】
次にステップＳ３でイベントありを判別するとステップＳ４でイベントの伝播を行ったあと、ステップＳ５でイベント伝播先のゲートを処理して故障リストを作成してステップＳ６で故障リストをイベントテーブルに登録する。【０１８０】
このようなステップＳ４〜Ｓ６の処理をステップＳ３でイベントがなくなるまで繰り返し、イベントがなくなるとステップＳ７で故障検出処理を実行する。【０１８１】
図２７は図２６のステップＳ２におけるイベントスケジュールの詳細を示したフローチャートである。図２７のイベントスケジュールにあっては、ステップＳ１で全入力ポイントにスケジュール済みか否かチェックし、スケジュール済みでなければステップＳ２で入力ポイントに対する正常値を設定し、ステップＳ３で入力ポイントのイベントテーブルを作成し、全入力ポイントに対するスケジュールが完了するまでその処理を繰り返す。【０１８２】
図２８は図２７のステップＳ３におけるイベントテーブルの作成動作を示した説明図である。イベントテーブルの作成動作は、故障リストとして[スケジュールネット，［故障ｉｄ，故障値］]
を用いて正常値と故障値が異なる故障をイベントテーブルに登録する。【０１８３】
例えば図２８のスキャンＦＦ１４８を例にとると、そのＱ出力ｎ１にそれぞれ（０，１）の値を持つ故障を（ｆ１，ｆ２）が仮定されている場合に正常値として０をスケジュールしたときには、故障リストとして
［ｎ１，（ｆ２，１）］
をイベントテーブルに登録する。【０１８４】
図２９は図２６のステップＳ４におけるイベント伝播の詳細を示したフローチャートである。イベント伝播はステップＳ１で全イベントテーブルが処理済みとなるまでステップＳ２の処理を繰り返す。ステップＳ２にあってはイベントテーブルのスケジュールネットのリンク先にネットステート及び故障リストを伝播する。【０１８５】
図３０は図２９のイベント伝播の具体例を示した説明図である。図３０にあっては、Ｇ１〜Ｇ３で示すゲート１５０、１５２、１５４の入力ポイントｎ１、ｎ２、ｎ３への正常値（０、１）のスケジュールによって故障リスト
ＦＬ１：｛ｎ１，（ｆ２，１）｝
ＦＬ２：｛ｎ２，（ｆ３，０）｝
ＦＬ３：｛ｎ３，（ｆ５，０）｝
がイベントテーブルに登録されている。【０１８６】
このイベントテーブルに登録されている故障リストがスケジュールネットのリンク先となるａｎｄゲート１５６、１５８に、ネットステート（０，
１，１）及び故障リスト（ＦＬ１，ＦＬ２，ＦＬ３）として伝播される。【０１８７】
図３１は図２６のステップＳ５におけるイベント伝播先ゲート処理の詳細を、縮退故障を対象に示したフローチャートであり、ステップＳ１〜Ｓ２が正常ゲートの演算処理であり、ステップＳ３〜Ｓ１１が故障ゲートの演算処理となる。【０１８８】
まず正常ゲートの演算処理は、ステップＳ１でネットリストの正常値によりゲート演算を実行し、ステップＳ２で故障リストとして
［スケジュールネット（ネット出力）］
を生成する。【０１８９】
次の故障ゲートの演算処理は、まずステップＳ３で伝播故障リストの登録故障とゲート仮定故障をｉｄでソートした故障ｉｄ集合Ｆを作成する。続いて、ステップＳ４で故障ｉｄ集合Ｆからひとつの故障ｆを選択し、ステップＳ５で選択した故障が故障ｆと同じｉｄを持つ故障であった場合にはステップＳ６に進み、選択した故障ｆと同一の故障値を注入する。【０１９０】
ステップＳ５で選択された故障ｆと異なる故障ｉｄの場合にはステップＳ７で正常値を注入する。続いてステップＳ８に進み、注入された故障値によりゲート演算を実行する。続いてステップＳ９でゲート出力が正常値と同じか否かチェックし、正常値出力と異なった場合にはステップＳ１０で故障リストに故障値部として（ｉｄ，故障値）を追加する。【０１９１】
続いてステップＳ１１で全ての故障ｆを選択するまでステップＳ４からの処理を繰り返す。【０１９２】
図３２は図３１の故障の場合のイベント伝播先ゲート処理の具体例を示した説明図である。図３２にあってはＧ４で示すＡＮＤゲート１６０に故障リストＦＬ１、ＦＬ２が伝播してきている縮退故障の場合の動作を示している。まず正常ゲート演算処理としては正常値（ｎ４：０、ｎ５：１）を用いてゲート演算ａｎｄ（０，１）＝０を実行する。そして故障リストのスケジュールネットとしてＦＬ４：｛ｎ８｝を作成する。【０１９３】
一方、故障ゲートの演算処理は、まず故障ｉｄ集合Ｆを作成する。即ちＦＬ１、ＦＬ２及びＧ４の仮定故障から故障ｉｄ集合Ｆとして
Ｆ＝｛ｆ２，ｆ３，ｆ７，ｆ８，ｆ９，ｆ１０，ｆ１１，ｆ１２｝
を作成する。【０１９４】
続いて故障ｉｄ集合Ｆの先頭から全ての要素に対し次の処理を繰り返す。
（１）故障ｉｄ集合Ｆから故障ｆ２を選択、
（２）故障リストＦＬ１、ＦＬ２及びＧ４の仮定故障と故障ｆ２を比較、
（３）故障ｆ２は故障リストＦＬ１に含まれる故障なのでｎ４に故障値１を注入、
（４）ゲート演算ａｎｄ（１，１）＝１を実行、
（５）正常値０と異なるため故障リストＦＬ４に（ｆ２，１）を追加、
→ＦＬ４：｛ｎ８，（ｆ２，１）｝
（６）故障ｆ３以降の故障に対し同様の操作を行ってゲート１６０において次の故障リストＦＬ４を作成、
→ＦＬ４：｛ｎ８，（ｆ２，１），（ｆ８，１），（ｆ１２，１）｝
図３３は図２６のステップＳ５におけるイベント伝播処理の詳細について、ディレイ故障を対象に示したフローチャートである。【０１９５】
図３３において、ステップＳ１〜Ｓ２は図３１と同様、正常ゲート演算ステップで基本的に同じである。またステップＳ３〜Ｓ１３は故障ゲート演算処理となっている。【０１９６】
故障ゲート演算処理にあってはステップＳ５〜Ｓ９がディレイ故障固有の処理であり、ステップＳ１０〜Ｓ１３は図３１の縮退故障におけるステップＳ８〜Ｓ１１と同じである。【０１９７】
そこでステップＳ４〜Ｓ１３における故障ゲートの演算処理を説明すると次のようになる。ステップＳ４にあっては故障ｉｄ集合Ｆからひとつの故障ｆを選択した後、ステップＳ５で選択された故障ｆが伝播してきた故障リストの故障か否かチェックする。選択された故障ｆが伝播してきたリストの故障であれば、図３１の縮退故障の場合と同様、ステップＳ６に進み、選択故障ｆの故障値を注入する。【０１９８】
一方、ステップＳ５で選択された故障ｆが伝播してきた故障リストの故障でなければステップＳ７に進み、選択された故障ｆはゲートに仮定される故障か否かチェックする。ゲートに仮定される故障であったならば、ステップＳ８に進み、基準ネットステートと現在のネットステートが異なる場合にはステップＳ６に進み選択された故障ｆの故障値を注入する。同じである場合にはステップＳ９に進み、正常値を注入する。【０１９９】
続いてステップＳ１０で注入された故障値によりゲート演算を実行する。その後のステップＳ１１〜Ｓ１３は図３１の縮退故障のステップＳ９〜Ｓ１１と同じである。【０２００】
図３４は図２６のステップＳ７における検出故障処理の詳細を示したフローチャートである。図３４の故障検出処理にあっては、ステップＳ１でスケジュールネットを観測ポイントした故障リストを作成し、ステップＳ２で故障リストに保存されている正常値と故障値が（０，１）または（１，０）の組合せとなるｉｄの故障を検出済みにする。【０２０１】
（１５．処理時間の削減効果）
図６に示したマルチコアプロセサ４６を対象としたダイナミックコンパクションを伴う従来のテストパターン生成システムにおけるＡＴＰＧ処理時間を分解すると、コア５０−１〜５０−４に対する処理時間と、コア以外の共通部分に対する処理時間の合計であり、次のように表すことができる。
従来の処理時間
＝｛コア部の故障に対する処理時間｝×コア数
＋｛共通部分の故障に対する処理時間｝
更に、コアの故障に対する処理時間は、ＡＴＰＧに成功する処理時間と失敗する処理時間に分解可能なため、最終的に次の内訳となる。
従来の処理時間
＝｛ATPG処理時間(成功)＋ATPG処理時間(失敗)｝×コア数
＋｛共通部分の故障に対する処理時間｝                    （１）
一方、本実施形態によるＡＴＰＧ処理時間は、コア以外の共通部分は従来と変わりはないが、コア５０−１〜５０−４に関しては、ＡＴＰＧの処理対象となる故障は１コア分であり、これにＡＴＰＧが成功した場合の（コア数−１）個分のテストパターン流用処理とテストパターン補間処理の処理時間の合計となるため、以下のように表すことができる。
本発明の処理時間
＝｛ＡＴＰＧ処理時間(成功)＋ＡＴＰＧ処理時間(失敗)｝×1コア
＋｛ＡＴＰＧ成功の場合の流用／補間処理時間｝×（コア数−1）
＋｛共通部分の故障に対する処理時間｝                    （２）
次に（１）（２）式においてコア数をパラメータとした場合、従来は「コア部の故障に対する処理時間」］はコア数の増加に伴い単純に線形に増加するのに対し、本実施形態にあっては１コア分のまま固定である。【０２０２】
このため、上記の（２）式においては、「コア部の故障に対する処理時間」］が支配的であり、「ＡＴＰＧに成功した場合の流用／補間処理時間」が十分に小さく無視できる場合において、定性的には、本実施形態によるＡＴＰＧの処理時間は従来の場合に対して、
従来の処理時間×（1／コア数）                            （３）
となり、コア数が多くなるほど処理時間の削減効果が大きくなる。【０２０３】
このように共通回路となるコアを複数持つマルチコアプロセサに対するテストパターン生成において、本実施形態によれば、従来に比べＡＴＰＧ処理時間をコア数に応じて大幅に削減することができる。【０２０４】
更に、図１７及び図１８に示したようなスキャンチェーン回路を持つことで、コア部分に関するテストベクタ量も
従来のテストベクタ量×（1／コア数）                      （４）
に削減することができる。【０２０５】
図３５は本実施形態によるＡＴＰＧ処理時間の削減を示した説明図である。図３５にあっては、マルチコアプロセサのコア数ｍをｍ＝４とし、テストパターン流用処理及びテストパターン補間処理の各々の処理時間に、元来のＡＴＰＧ処理（成功時）の半分の時間がかかるとした場合のモデルケースでの処理時間の削減の様子を棒グラフで示している。【０２０６】
図３５において、従来技術にあっては、４つのコア処理時間１６２−１，１６２−２，１６２−３，１６２−４に共通部分１６０の時間を加えた時間であるコア処理時間１６２−１〜１６２−４は、それぞれＡＴＰＧ失敗分の処理時間Ｔ１１，Ｔ２１，Ｔ３１，Ｔ４１と、ＡＴＰＧ成功分の処理時間Ｔ１２，Ｔ２２，Ｔ３２，Ｔ４２に分かれている。【０２０７】
これに対し本発明の処理時間は、１コア分の処理時間１６２−１にコア３個分の処理時間１６４、即ちテストパターン流用処理及びテストパターン補間処理によるＡＴＰＧ成功時の時間の半分の時間Ｔ３を３つ合わせた処理時間に、更に共通部分１６０の時間Ｔ０を加えた時間であり、削減量１６５が得られている。【０２０８】
更に、本実施形態による処理時間削減の効果を具体的なマルチコアプロセサを例に取って説明すると次のようになる。【０２０９】
まず測定対象として、図３に示した機能構成を持つマルチコアプロセサ４６の回路モデルとして富士通株式会社製
コードネーム：Ｊｕｐｉｔｅｒ
製品名      ：ＳＰＡＲＣ６４■＋アーキテクチャ（４コア）
（ただし、「ＳＰＡＲＣ」は登録商標）
論理ゲート数：２３，１３２，８５２個
仮定故障数  ：８４，６２３，８５１個
図３６は本実施形態による処理時間削減の測定対象とする回路モデル
におけるスキャンＦＦのビット分布を示した説明図である。【０２１０】
図３６にあっては、ＡＴＰＧにおける故障励起の前処理として行われるナローイング処理を示している。即ち、コア５０−１の対応する故障ｆ０、及びコア５０−２の対応する故障ｆ１から、受け側のスキャンＦＦ集合群１８６，１８８を経由して、送り側となる制御側スキャンＦＦ集合１６６までのナローイング範囲を示している。故障点ｆ０に対するＡＴＰＧは故障伝播コーン１８２のように受け側のスキャンＦＦ集合１８６にバックトレース１９０を行い、また、受け側のスキャンＦＦ集合１８６で折り返した後、活性化条件コーン１７８で制御側スキャンＦＦ集合１６６側にバックトレース１９２を行っている。【０２１１】
制御側スキャンＦＦ集合１６０は、コア、共通、個別のグループに分類される。即ち、故障検出の制御側スキャンＦＦ集合１６６は活性化条件コーン１７８，１８０に隣接し、コア５０−１の個別制御部となるスキャンＦＦ集合１６８、コア５０−１の内部のスキャンＦＦ集合１７０、コア５０−１と５０−２で共通する共通制御部のスキャンＦＦ集合１７２、コア５０−２の内部のスキャンＦＦ集合１７４、コア５０−２の個別制御部のスキャンＦＦ集合１７６のビット数の分布になる。【０２１２】
ここでコア５０のスキャンＦＦ集合１６８のビット数をＢ−ｉｎｄ、コア５０−１の内部スキャンＦＦ集合１７０のビット数Ｂ−ｃｏｒｅ、更に共通制御部となるスキャンＦＦ集合１７２のビット数をＢ−ｃｏｍとする。【０２１３】
このような制御側スキャンＦＦ集合１６６において、コア、共通、個別のグループに分類した場合の制御ビット数の割合を測定すると、図３７及び図３８の結果が得られている。【０２１４】
実行時間の測定環境としては次の通りである。
ＣＰＵ：Ｏｐｔｅｒｏｎ  ２５４    ２，７９３ＭＨｚ
メモリ：１６ギガバイト
ＯＳ  ：Ｄｅｂｉａｎ（ＧＮＵ／Ｌｉｎｕｘ）
ただし実行時間の測定に時間がかかることから、測定はコア内部の仮定される故障の１パーセントでサンプリングしている。【０２１５】
図３７は図３６の測定対象コアにおけるＡＴＰＧ対象ビットを、コア、共通、個別のグループに分類して測定した場合の測定対象全体でのビット数割合の平均を示している。【０２１６】
図３７において、ＡＴＰＧ成功時のテストパターン補間により探索が必要な制御ビットは個別制御部分１９４の０．７４パーセントのみであり、コア１９０の９７．０２パーセントと共通制御部分１９２の２．２４パーセントを合わせた制御ビット９９．２６パーセントは、本実施形態によるＡＴＰＧ成功時のテストパターン流用処理の操作までに決定されることを示している。【０２１７】
図３８及び図３９は、図３６に示すコア、共通、個別の３グループに分けた制御ビット数分布を持つマルチコアプロセサの回路モデルを対象に、ＡＴＰＧ実行時間の測定結果を示している。【０２１８】
このＡＴＰＧ実行時間の測定にあっては、本実施形態によるＡＴＰＧの成功によるテストパターンの流用のない通常動作と、テストパターンの流用動作のそれぞれについて、コンパクション回数に対するジョブ全体の実行時間を求めている。実際の測定時間については、約２日間のランニングで８６回のコンパクションを実行している。【０２１９】
図３８の実行時間にあっては、本発明１９６と従来１９８を示しており、コンパクション回数の増加に対する本発明の実行時間の増加割合は、従来１９８に比べほぼ半分に抑えられている。【０２２０】
図３９は実行時間の測定におけるコンパクション８６回目までの実行時間に占めるＡＴＰＧ実行時間、故障シミュレータ実行時間、及びその他の実行時間に分類した内訳を示している。【０２２１】
図３９の従来技術１９８にあっては、ＡＴＰＧ実行時間２０２−１が大部分を占めており、次に故障シミュレータ実行時間２０４−１があり、その他の実行時間２０６−１は最も少ない。【０２２２】
これに対し本発明２００にあっては、全体の実行時間が従来技術１９８の約４３分に対し約２０分と半分以下に削減しており、その内訳はＡＴＰＧ実行時間２０２−２、故障シミュレータ実行時間２０４−２及びその他の実行時間２０６−２に分かれている。【０２２３】
故障シミュレータ実行時間２０４−２は従来技術１９８とほぼ同じであり、またその他の実行時間２０６−２も従来に比べわずかに増加しているが、大部分はＡＴＰＧ実行時間２０２−２であり、このＡＴＰＧ実行時間２０２−２が従来のＡＴＰＧ実行時間２０２−１に対し１つの対象コアに対するＡＴＰＧの成功を契機に他のコアにテストパターン流用処理とテストパターン補間処理を行うことで、半分以下の実行時間に低減できている。【０２２４】
このような実際のマルチコアプロセサの回路モデルにおける実行時間の測定結果からも、図３５で予測した本発明による処理時間の削減量１６５が達成されていることが裏付けられている。【０２２５】
また本発明はテストパターン生成のためのプログラムを提供するものであり、このプログラムは、図１９、図２１〜図２３、図２５〜図２７、図２９，図３１，図３３，図３４のそれぞれのフローチャートに示した内容を有するものである。【０２２６】
本実施形態におけるテストパターン生成プログラムは、例えば図４０に示すようなコンピュータのハードウェア環境により実行される。図４０において、ＣＰＵ２００のバス２０２に対しては、ＲＡＭ２０４、ＲＯＭ２０６、ハードディスクドライブ２０８、キーボード２１０，マウス２１２，ディスプレイ２１４を接続するデバイスインタフェース２１６、及びネットワークアダプタ２１８が設けられている。【０２２７】
ハードディスクドライブ２０８には、本実施形態によるテストパターン生成プログラムがアプリケーションプログラムとして格納されている。【０２２８】
コンピュータを起動すると、ＢＩＯＳのブート処理によりハードディスクドライブからＯＳがＲＡＭ２０４に読出し配置され、ＣＰＵ２００により実行される。ＣＰＵ２００によるＯＳの実行でハードディスクドライブから本実施形態のテストパターン生成プログラムがＲＡＭに読出し配置され、ＣＰＵ２００により実行される。【０２２９】
なお上記の実施形態にあっては、テストパターン生成処理を行う回路としてマルチコアプロセサを例にとるものであったが、本発明はこれに限定されず、等価性や類似性を持つ共通回路を複数備えた半導体回路につき、そのまま適用することができる。【０２３０】
また本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【図１】
2009087769.tif 000003
【図２】
2009087769.tif 000004
【図３】
2009087769.tif 000005
【図４】
2009087769.tif 000006
【図５】
2009087769.tif 000007
【図６】
2009087769.tif 000008
【図７】
2009087769.tif 000009
【図８】
2009087769.tif 000010
【図９】
2009087769.tif 000011
【図１０】
2009087769.tif 000012
【図１１】
2009087769.tif 000013
【図１２】
2009087769.tif 000014
【図１３】
2009087769.tif 000015
【図１４】
2009087769.tif 000016
【図１５】
2009087769.tif 000017
【図１６】
2009087769.tif 000018
【図１７】
2009087769.tif 000019
【図１８】
2009087769.tif 000020
【図１９】
2009087769.tif 000021
【図２０】
2009087769.tif 000022
【図２１】
2009087769.tif 000023
【図２２】
2009087769.tif 000024
【図２３】
2009087769.tif 000025
【図２４】
2009087769.tif 000026
【図２５】
2009087769.tif 000027
【図２６】
2009087769.tif 000028
【図２７】
2009087769.tif 000029
【図２８】
2009087769.tif 000030
【図２９】
2009087769.tif 000031
【図３０】
2009087769.tif 000032
【図３１】
2009087769.tif 000033
【図３２】
2009087769.tif 000034
【図３３】
2009087769.tif 000035
【図３４】
2009087769.tif 000036
【図３５】
2009087769.tif 000037
【図３６】
2009087769.tif 000038
【図３７】
2009087769.tif 000039
【図３８】
2009087769.tif 000040
【図３９】
2009087769.tif 000041
【図４０】
2009087769.tif 000042
【手続補正書】
【提出日】平成22年7月15日(2010.7.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、前記第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成方法において、
前記半導体回路の回路情報を読み込むステップと、
前記第１及び第２の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
前記第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定するステップと、
前記決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うステップと、
前記生成されたテストパターンの圧縮を行うステップと、
前記圧縮されたテストパターンを用いて、前記第１のテスト対象の共通回路が有する回路故障の検出を行うステップと、
前記第１及び第２の共通回路のうち、前記第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するステップを有することを特徴とするテストパターン生成方法。
【請求項２】
前記テストパターン生成方法はさらに、
前記圧縮されたテストパターンを用いて、前記第２のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うステップを有することを特徴とする請求項１記載のテストパターン生成方法。
【請求項３】
前記テストパターン生成方法はさらに、
前記第１及び第２の共通回路毎にスキャンチェーンの集合を作成するステップにおいて、
前記第１及び第２の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする請求項１又は２記載のテストパターン生成方法。
【請求項４】
回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、前記第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成装置において、
前記半導体回路の回路情報を読み込む回路情報読込部と、
前記第１及び第２の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するスキャンチェーン集合作成部と、
前記第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定し、決定された前記第１のテスト対象の共通回路に対する回路故障の検出を行った後に、前記第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するテスト対象回路決定部と、
前記決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うテストパターン生成部と、
前記生成されたテストパターンの圧縮を行うテストパターン圧縮部と、
前記圧縮されたテストパターンを用いて、前記第１のテスト対象の共通回路が有する回路故障の検出を行う回路故障検出部を有することを特徴とするテストパターン生成装置。
【請求項５】
前記回路故障検出部はさらに、
前記圧縮されたテストパターンを用いて、前記第２のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うことを特徴とする請求項４記載のテストパターン生成装置。
【請求項６】
回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第１及び第２の共通回路と、前記第１及び第２の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成プログラムにおいて、
前記半導体回路の回路情報を読み込むステップと、
前記第１及び第２の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
前記第１及び第２の共通回路のいずれかを、第１のテスト対象の共通回路として決定するステップと、
前記決定された第１のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うステップと、
前記生成されたテストパターンの圧縮を行うステップと、
前記圧縮されたテストパターンを用いて、前記第１のテスト対象の共通回路が有する回路故障の検出を行うステップと、
前記第１及び第２の共通回路のうち、前記第１のテスト対象の共通回路とは異なる共通回路を第２のテスト対象の共通回路として決定するステップをコンピュータに実行させることを特徴とするテストパターン生成プログラム。
【請求項７】
前記テストパターン生成プログラムはさらに、
前記圧縮されたテストパターンを用いて、前記第２のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うステップを有することを特徴とする請求項６記載のテストパターン生成プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
【図面の簡単な説明】
【図１】
本実施形態によるテストパターン生成システムの機能構成を示したブロック図
【図２】
図１のダイナミックコンパクション実行部の機能構成の詳細を示したブロック図
【図３】
本実施形態のテストパターン生成が適用されるマルチコアプロセサを示したブロック図
【図４】
図３のクロックコントローラの詳細を示したブロック図
【図５】
図３のデータコントローラの詳細を示したブロック図
【図６】
図３のマルチコアプロセサを模式的な等価回路により示したブロック図
【図７】
図６のマルチコアプロセサにおけるスキャンＦＦ集合と仮定故障集合のコア間での対応付けを示した説明図
【図８】
本実施形態で使用される故障データのテーブル構造を示した説明図
【図９】
図８の故障データに含まれるコアと回路全体の故障集合、及びコアと回路全体のスキャンＦＦ集合のテーブル構造を示した説明図
【図１０】
本実施形態におけるＡＴＰＧに成功したコアのテストパターンを他のコアに流用する処理を示した説明図
【図１１】
本実施形態におけるテストパターンを流用したコアに対しＡＴＰＧを実行するテストパターン補間処理を示した説明図
【図１２】
本実施形態におけるコア間の排他性を示した説明図
【図１３】
本実施形態における対象コア交換処理を示した説明図
【図１４】
本実施形態によるテストパターン流用の際に回路の初期状態をコア間で共通する必要のあるｎτパスを１τパスと対比して示した説明図
【図１５】
本実施形態におけるコア間の制御排他性を排除する個別制御部に設けたキャンセラ回路を示したブロック図
【図１６】
本実施形態におけるコア間の制御排他性を排除する共通観測部に設けたキャンセラ回路を示したブロック図
【図１７】
本実施形態における各コアのスキャンＦＦチェーンのスキャンシフトを共用化する回路を示したブロック図
【図１８】
図１７に設けたキャンセラ用スキャンＦＦチェーンの詳細を示した説明図
【図１９】
本実施形態におけるテストパターン生成処理の手順を示したフローチャート
【図２０】
本実施形態におけるａｔｐｇフラグとスキップフラグの設定を示した説明図
【図２１】
図１９のステップＳ５におけるＡＴＰＧ処理の詳細を示したフローチャート
【図２２】
図１９のステップＳ７におけるダイナミックコンパクションの詳細を示したフローチャート
【図２３】
図２２のステップＳ５におけるテスト流用処理の詳細を示したフローチャート
【図２４】
図２３のテスト流用処理をスキャンＦＦ集合について具体的に示した説明図
【図２５】
図２２のステップＳ６におけるテスト補間処理の詳細を示したフローチャート
【図２６】
図１９のステップＳ８における故障シミュレーションの詳細を示したフローチャート
【図２７】
図２６のステップＳ２におけるイベントスケジュールの詳細を示したフローチャート
【図２８】
図２７のイベントスケジュールの具体例を示した説明図
【図２９】
図２６のステップＳ４におけるイベント伝播の詳細を示したフローチャート
【図３０】
図２９のイベント伝播の具体例を示した説明図
【図３１】
図２６のステップＳ５におけるイベント伝播先ゲート処理の詳細について縮退故障を対象に示したフローチャート
【図３２】
図３１のイベント伝播先ゲート処理の具体例を示した説明図
【図３３】
図２６のステップＳ５におけるイベント伝播先ゲート処理の詳細についてディレイ故障を対象に示したフローチャート
【図３４】
図２６のステップＳ７における故障検出処理の詳細を示したフローチャート
【図３５】
本実施形態によるＡＴＰＧ処理時間の削減を示した説明図
【図３６】
本実施形態による処理時間削減の測定対象とするマルチコアプロセサにおけるスキャンＦＦのビット分布を示した説明図
【図３７】
図３６の測定対象コアにおけるＡＴＰＧの対象ビットをコア、共通、個別のグループに分類して示した円グラフの説明図
【図３８】
図３６の測定対象コアにおけるコンパンクション回数に対する実行時間を通常動作と本実施形態による流用動作について示したグラフ図
【図３９】
図３６の測定対象コアにおけるコンパンクションについてＡＴＰＧ、故障シミュレーション、その他のグループに分類して実行時間の割合を通常動作と本実施形態の流用動作について示した棒グラフ図
【図４０】
本実施形態のテストパターン生成プログラムが実行されるコンピュータのハードウェア環境を示したブロック図
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
ダイナミックコンパクション実行部３２におけるダイナミックコンパクションの処理は、基本的には終了条件判定部３８において未検出故障がなくなるまで、対象コア判定部４０、２次故障ＡＴＰＧ実行部４２、テスト流用部４４及びテスト補間部４５からなるループを実行する処理である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
図６において、コア５０−１〜５０−４は同じ回路構成を備えている。例えばコア５０−１を例にとると、論理ゲートの集合である３つのコア回路７２−１１，７２−１２，７２−１３が設けられ、それぞれの入力としてスキャンＦＦ７０−１１，７０−１２，７２−１３が設けられ、またコア回路７２−１１の出力にはスキャンＦＦ集合７０−１４が設けられている。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
図１３はマルチコアプロセサ４６のコア数をｍと一般化にした場合を例に取っており、コア５０−１〜５０−ｍに対応して仮定故障集合Ｆが
Ｆ＝｛ｆ［１］［＊］，ｆ［２］［＊］・・・，ｆ［ｍ］［＊］  ｝
として作成されている。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１４７
【補正方法】変更
【補正の内容】
【０１４７】
再び図１９を参照するにステップＳ４で所定の終了条件を判別するまでステップＳ５〜Ｓ９のループの処理を繰り返す。ステップＳ４で判別する終了条件としては次のものがある。
（１）指定された実行時間の上限をこえた実行が行われたか否か。
（２）指定されたテストパターン数の上限を超えたテストパターン生成が行われたか否か。
（３）指定された故障検出率の上限を超えた故障検出率が得られたか否か。
（４）未提出故障が存在するか否か。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１７１
【補正方法】変更
【補正の内容】
【０１７１】
不定値ｘであった場合にはステップＳ５で流用元のｓｔａｔｅ［ｓ［ｃ］［ｒ］］を流用先のｓｔａｔｅ［ｓ［ｋ］［ｒ］］として流用する。即ち図２４（Ｄ）に示すように、対象コア５０−１におけるＡＴＰＧの成功で得られた流用元のステート１４４を、流用先となる他のコア５０−３〜５０−４における流用先のステート１４６に流用する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１７６
【補正方法】変更
【補正の内容】
【０１７６】
続いてステップＳ２で故障集合Ｆの要素ｆ［ｋ］［ｊ］についてＡＴＰＧを実行する。続いてステップＳ３でＡＴＰＧの成功を判別するとステップＳ５で全要素の処理終了を判別するまでステップ２からの処理を繰り返す。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０２００
【補正方法】変更
【補正の内容】
【０２００】
図３４は図２６のステップＳ７における故障検出処理の詳細を示したフローチャートである。図３４の故障検出処理にあっては、ステップＳ１でスケジュールネットを観測ポイントした故障リストを作成し、ステップＳ２で故障リストに保存されている正常値と故障値が（０，１）または（１，０）の組合せとなるｉｄの故障を検出済みにする。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０２０６
【補正方法】変更
【補正の内容】
【０２０６】
図３５において、従来技術にあっては、処理時間は、４つのコア処理時間１６２−１，１６２−２，１６２−３，１６２−４に共通部分１６０の時間を加えた時間であり、コア処理時間１６２−１〜１６２−４は、それぞれＡＴＰＧ失敗分の処理時間Ｔ１１，Ｔ２１，Ｔ３１，Ｔ４１と、ＡＴＰＧ成功分の処理時間Ｔ１２，Ｔ２２，Ｔ３２，Ｔ４２に分かれている。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０２１１
【補正方法】変更
【補正の内容】
【０２１１】
制御側スキャンＦＦ集合１６６は、コア、共通、個別のグループに分類される。即ち、故障検出の制御側スキャンＦＦ集合１６６は活性化条件コーン１７８，１８０に隣接し、コア５０−１の個別制御部となるスキャンＦＦ集合１６８、コア５０−１の内部のスキャンＦＦ集合１７０、コア５０−１と５０−２で共通する共通制御部のスキャンＦＦ集合１７２、コア５０−２の内部のスキャンＦＦ集合１７４、コア５０−２の個別制御部のスキャンＦＦ集合１７６のビット数の分布になる。
【国際調査報告】
2009087769.tif 000043
2009087769.tif 000044
2009087769.tif 000045