(57)【特許請求の範囲】
【請求項１】
集積回路を複数の回路に分割した回路毎のテストパターンを、複数の演算処理装置を用いて生成するテストパターン生成装置であって、
各々いずれかの分割した回路のテストパターンの生成を行なう複数の第１の演算処理装置と、
前記複数の第１の演算処理装置によるテストパターン生成を制御し、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を格納する要求値バッファを有する第２の演算処理装置と
を備え、
前記第２の演算処理装置は、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定し、
前記第１の演算処理装置は、前記分割した回路のテストパターンの生成中に前記第２の演算処理装置との通信を行ない、
前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該第１の演算処理装置は当該要求値の設定を抑止する
ことを特徴とするテストパターン生成装置。
【請求項２】
請求項１に記載のテストパターン生成装置であって、
前記第１の演算処理装置は、前記分割した回路に含まれる要求値の設定対象となる入力点に要求値を設定する際、設定しようとする要求値が、当該入力点に対して他の第１の演算処理装置が設定した要求値と異なるコンフリクトが発生するか否かを前記第２の演算処理装置に問い合わせ、
前記第２の演算処理装置は、前記第１の演算処理装置からの問い合わせがあった場合、前記要求値バッファに格納された要求値に基づいて当該問い合わせに係る判定を実行する
ことを特徴とするテストパターン生成装置。
【請求項３】
請求項２に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、前記第１の演算処理装置からの前記コンフリクトの有無の問い合わせがあった場合、
前記第１の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生しない場合、当該問い合わせに係る要求値を、前記要求値バッファに格納された対応する要求値に反映させると共に、当該問い合わせの結果としてコンフリクトが発生しない旨を前記第１の演算処理装置に応答し、
前記第１の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生する場合、当該問い合わせの結果としてコンフリクトが発生する旨を前記第１の演算処理装置に応答する
ことを特徴とするテストパターン生成装置。
【請求項４】
請求項３に記載のテストパターン生成装置であって、
前記第１の演算処理装置は、前記問い合わせの結果としてコンフリクトが発生しない旨を受信すると、前記問い合わせに係る要求値の設定を行なう
ことを特徴とするテストパターン生成装置。
【請求項５】
請求項３または請求項４に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、前記コンフリクトが発生しない場合、前記問い合わせの結果としてコンフリクトが発生しない旨を前記第１の演算処理装置に応答すると共に、前記要求値バッファに格納されている前記入力点毎の要求値を前記第１の演算処理装置に応答し、
前記第１の演算処理装置は、前記要求値バッファに格納されている前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、次の要求値の設定を行なう
ことを特徴とするテストパターン生成装置。
【請求項６】
請求項１〜請求項５のいずれか一項に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、前記複数の第１の演算処理装置が要求値の設定を終了すると、前記要求値バッファにおいて要求値が未設定の入力点に対し乱数を付加してから、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を前記複数の第１の演算処理装置に送信し、
前記複数の第１の演算処理装置のそれぞれは、前記第２の演算処理装置から、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、各第１の演算処理装置が担当する前記分割した回路の故障シミュレーションを行ない、当該分割した回路に前記要求値を入力した時の応答値を期待値として取得する
ことを特徴とするテストパターン生成装置。
【請求項７】
請求項１〜請求項６のいずれか一項に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、出力状態を期待値として観測すべき前記集積回路のスキャンラッチを複数のラッチグループに分割し、分割した各ラッチグループからバックトレースを実行することにより、前記集積回路を、前記複数のラッチグループにそれぞれ対応する前記複数の回路に分割し、分割した前記複数の回路をそれぞれ前記複数の第１の演算処理装置に割り当てる
ことを特徴とするテストパターン生成装置。
【請求項８】
請求項７に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、ダブルパルスによるディレイ試験に対応すべく、前記分割した各ラッチグループから少なくとも２ステージ分のバックトレースを実行する
ことを特徴とするテストパターン生成装置。
【請求項９】
集積回路を複数の回路に分割した回路毎のテストパターンを、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第１の演算処理装置と前記複数の第１の演算処理装置によるテストパターン生成を制御する第２の演算処理装置とを用いて生成するテストパターン生成方法であって、
前記第２の演算処理装置は、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定し、
前記第１の演算処理装置は、前記分割した回路のテストパターンの生成中に前記第２の演算処理装置との通信を行ない、
前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該第１の演算処理装置は当該要求値の設定を抑止する
ことを特徴とするテストパターン生成方法。
【請求項１０】
集積回路を複数の回路に分割した回路毎のテストパターンを生成すべく、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第１の演算処理装置の一つ、もしくは、前記複数の第１の演算処理装置によるテストパターン生成を制御する第２の演算処理装置として、コンピュータを機能させるテストパターン生成プログラムであって、
前記第２の演算処理装置として機能するコンピュータに、
各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する処理を実行させ、
前記第１の演算処理装置として機能するコンピュータに、
前記分割した回路のテストパターンの生成中に前記第２の演算処理装置との通信を行ない、
前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該要求値の設定を抑止する処理を実行させる
ことを特徴とするテストパターン生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストパターン生成装置，テストパターン生成方法およびテストパターン生成プログラムに関する。
【背景技術】
【０００２】
一般に、集積回路、例えばＬＳＩ（Large Scale Integration）の製造工程の最終段階では、製造されたＬＳＩの試験が、テスタにより、所定のテストパターンを用いて行なわれる。一般的なＬＳＩの試験工程の一例を、図１１に示すフローチャート（ステップＳ１０１〜Ｓ１１３）に従って説明する。ＬＳＩを形成されたウエハが取り出されると（Wafer out；ステップＳ１０１）、ウエハ上のＬＳＩの試験が、テスタにより、データベース１２６に格納されたテストパターンを用いて行なわれる（ステップＳ１０２）。そして、試験の良否判定（ステップＳ１０３）の結果が「否」である場合、当該ＬＳＩは廃棄される一方（ステップＳ１０４）、試験の良否判定（ステップＳ１０３）の結果が「良」である場合、当該ＬＳＩを切り出してパッケージングする処理が実行される（ステップＳ１０５）。
【０００３】
ついで、パッケージング処理を施されたＬＳＩの試験が、テスタにより、データベース１２６に格納されたテストパターンを用いて行なわれる（ステップＳ１０６）。そして、試験の良否判定（ステップＳ１０７）の結果が「否」である場合、当該ＬＳＩは廃棄される一方（ステップＳ１０８）、試験の良否判定（ステップＳ１０７）の結果が「良」である場合、パッケージングされたＬＳＩの負荷試験（Burn-in処理）が実行される（ステップＳ１０９）。
【０００４】
最後に、負荷試験後のＬＳＩの試験が、テスタにより、データベース１２６に格納されたテストパターンを用いて行なわれる（ステップＳ１１０）。そして、試験の良否判定（ステップＳ１１１）の結果が「否」である場合、当該ＬＳＩは廃棄される一方（ステップＳ１１２）、試験の良否判定（ステップＳ１１１）の結果が「良」である場合、当該ＬＳＩは、次の組み立て工程へ出荷される（ステップＳ１１３）。
【０００５】
ここで、テストパターンは、ＬＳＩ等の試験対象回路に入力されるべき入力ステートの集合と、各入力ステートをＬＳＩに入力した際に当該試験対象回路から出力されるべき出力ステートの集合とを含んでいる。
各入力ステートは、試験対象回路で発生しうる故障を検出するために当該試験対象回路の入力点に設定すべき値（以下、要求値という）であり、ＡＴＰＧ（Automatic Test Pattern Generator）により生成される。上記入力点は、例えばデータイン端子（Primary-input）やスキャンラッチ（Scan-input）等である。
【０００６】
各出力ステートは、故障シミュレータにおいて上述した各入力ステートを試験対象回路の入力点に与えシミュレーションを行なって得られる、試験対象回路の応答である期待値である。
上述したテストパターンを用いた試験では、試験対象回路の入力点に要求値を設定して当該試験対象回路を動作させ、当該試験対象回路からの応答値が取得される。そして、取得された応答値が上記期待値と一致する場合、試験結果は「良」と判定される一方、取得された応答値が上記期待値と一致しない場合、試験結果は「否」と判定される。このような試験が、図１１に示す試験工程では、ステップＳ１０２，Ｓ１０６，Ｓ１１０で行なわれる。
【０００７】
ところで、近年、ＬＳＩ等の試験対象回路は大規模化しており、試験対象回路の大規模化は、テストパターンの増加を招き、ひいては試験実行時に使用するメモリ量の増大や試験実行時間の増大を招いている。例えば図１１に示す試験工程では、試験が３回実行されるため（ステップＳ１０２，Ｓ１０６，Ｓ１１０参照）、テストパターンの増加は、明らかに試験工程時間の増加を意味し、最終的には製造コストの増加に結び付く。
【０００８】
また、試験対象回路の大規模化によりテストパターンの生成自体に必要な計算機資源（使用メモリや計算時間）も増大しており、それらの増大を抑制すべく、テストパターンの生成手法に対して改善が求められている。この改善のために、テストパターンを生成する際に取り扱う対象（例えば故障集合や回路）を分割して縮小してから、分割した対象を複数の計算機で並列に処理することが行なわれている。分割を行なってテストパターン生成を行なう代表的な技術としては、分割対象によって、故障分割技術と回路分割技術との２つが挙げられる。
【０００９】
故障分割技術では、ネットリストの分割は行なわず故障集合のみを分割した回路モデルが用意され、各回路モデルについて複数の計算機により並列にテストパターンが生成され、各回路モデルについて生成されたテストパターンのマージが行なわれる。
回路分割技術では、ネットリストとネットに属する故障集合との両方を分割した回路モデルが用意され、各回路モデルについて複数の計算機により並列にテストパターンが生成され、各回路モデルについて生成されたテストパターンのマージが行なわれる。
【００１０】
分割した回路について複数の計算機により並列にテストパターン生成を行なう技術として、以下のような技術も提案されている。学習等により抽出された固定値信号線（論理の値が固定された固定値信号線）をバックトレースして回路分割を行なうことで、分割した回路間の独立性を高める技術（特許文献１）。スタティックなパターン圧縮の高速化を目的として、適当な判定基準を設けることにより、各計算機で、独立に、ＡＴＧ（Algorithmic Test Generation）の実行と一時的に蓄積されている部分テストパターン集合の圧縮とを切り替える技術（特許文献２）。
【００１１】
上述のように分割した対象を複数の計算機で並列に処理する技術によって、使用メモリ量の増大やテストパターン生成試験実行時間の増大を抑制することは可能である。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平７−２３４２６６号公報
【特許文献２】特開２００３−２２２６５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、並列処理に伴い当該並列処理に関わるオーバヘッドとして生成されるテストパターンが増加する可能性がある。その理由について、以下に説明する。試験対象回路の分割を行なった場合、特別な回路でない限り、分割後の複数の回路は、一部重複し、共通の入力点を有することになる。一方、上述した従来の並列処理によるテストパターン生成技術では、各計算機で行なわれる、各分割回路についてのテストパターン生成過程は、他の計算機から独立している。共通の入力点を有する複数の分割回路について、独立に動作する複数の計算機により並列にテストパターンを生成した場合、コンフリクトが発生する可能性がある。コンフリクト（不一致，衝突）とは、各計算機が要求対象となる同じ入力点に対してそれぞれ異なる要求値を設定してしまう事象である。このように同じ入力点に対し異なる要求値が設定されるコンフリクトの発生した２以上のテストパターンは、マージすることができず、それぞれ異なるテストパターンとして生成される。このため、テストパターンの増加を招くことになる。
【００１４】
一つの側面で、本件は、並列処理に起因するテストパターンの増加を抑止することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本件の他の目的の一つとして位置付けることができる。
【課題を解決するための手段】
【００１５】
本件のテストパターン生成装置は、集積回路を複数の回路に分割した回路毎のテストパターンを、複数の演算処理装置を用いて生成するもので、複数の第１の演算処理装置と、第２の演算処理装置とを有する。複数の第１の演算処理装置は、各々いずれかの分割した回路のテストパターンの生成を行なう。第２の演算処理装置は、前記複数の第１の演算処理装置によるテストパターン生成を制御し、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を格納する要求値バッファを有している。そして、前記第２の演算処理装置は、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する。また、前記第１の演算処理装置は、前記分割した回路のテストパターンの生成中に前記第２の演算処理装置との通信を行なう。さらに、前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該第１の演算処理装置は当該要求値の設定を抑止する。
【００１６】
本件のテストパターン生成方法は、集積回路を複数の回路に分割した回路毎のテストパターンを、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第１の演算処理装置と前記複数の第１の演算処理装置によるテストパターン生成を制御する第２の演算処理装置とを用いて生成する方法である。その方法において、前記第２の演算処理装置は、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する。また、前記第１の演算処理装置は、前記分割した回路のテストパターンの生成中に前記第２の演算処理装置との通信を行なう。そして、前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該第１の演算処理装置は当該要求値の設定を抑止する。
【００１７】
本件のテストパターン生成プログラムは、集積回路を複数の回路に分割した回路毎のテストパターンを生成すべく、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第１の演算処理装置の一つ、もしくは、前記複数の第１の演算処理装置によるテストパターン生成を制御する第２の演算処理装置として、コンピュータを機能させる。そして、当該プログラムは、前記第２の演算処理装置として機能するコンピュータに、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する処理を実行させる。また、当該プログラムは、前記第１の演算処理装置として機能するコンピュータに、前記分割した回路のテストパターンの生成中に前記第２の演算処理装置との通信を行ない、前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該要求値の設定を抑止する処理を実行させる。
【発明の効果】
【００１８】
一態様によれば、並列処理に起因するテストパターンの増加が抑止される。
【図面の簡単な説明】
【００１９】
【図１】本実施形態のテストパターン生成装置のハードウエア構成および機能構成を示すブロック図である。
【図２】本実施形態の回路分割手法を説明するための図である。
【図３】本実施形態の回路分割手法と同手法により分割された回路の重複領域とを説明するための図である。
【図４】図１に示すテストパターン生成装置の動作を説明するためのフローチャートである。
【図５】図４に示す回路分割処理の手順を説明するためのフローチャートである。
【図６】図４に示す要求値の同期化処理を説明するためのフローチャートである。
【図７】（Ａ）〜（Ｃ）は本実施形態のテストパターン生成装置の動作例を従来技術の動作例と比較しながら具体的に説明するための図である。
【図８】本実施形態のスレーブとマスタとの間における要求値の非同期通信について説明するための図である。
【図９】一般的なテストパターン生成装置の機能構成を示すブロック図である。
【図１０】図９に示すテストパターン生成装置の動作を説明するためのフローチャートである。
【図１１】一般的なＬＳＩの試験工程の例を説明するためのフローチャートである。
【発明を実施するための形態】
【００２０】
以下、図面を参照して実施の形態を説明する。
〔１〕一般的なテストパターン生成装置
まず、図９および図１０を参照しながら、並列処理によってテストパターンの生成を行なう一般的なテストパターン生成装置１００の機能構成および動作について簡単に説明する。なお、図９は一般的なテストパターン生成装置１００の機能構成を示すブロック図、図１０は、図９に示すテストパターン生成装置１００の動作を説明するためのフローチャートである。
【００２１】
図９に示す一般的なテストパターン生成装置１００は、ＬＳＩ等の試験対象回路を複数の回路に分割し、分割した回路毎のテストパターンを、複数のコンピュータ１１０，１２０を用いて生成する。テストパターン生成装置１００は、複数のスレーブコンピュータ（以下、単にスレーブという）１１０と、一つのマスタコンピュータ（以下、単にマスタという）１２０とを有している。
【００２２】
マスタ１２０には、回路データベース１２５およびテストパターンデータベース１２６が付設されている。回路データベース１２５は、試験対象回路全体のネットリスト，故障情報などを格納する。テストパターンデータベース１２６は、後述するマージ部１２１ｄによってマージされた試験対象回路全体のテストパターンや、検出故障などを格納する。
また、各スレーブ１１０には、分割回路データベース１１５が付設されている。分割回路データベース１１５は、後述する回路分割部１２１ａによって分割され各スレーブ１１０に割り当てられた回路のネットリスト，故障情報などを格納する。
【００２３】
複数のスレーブ１１０は、分割された複数の回路をそれぞれ割り当てられ、割り当てられた回路のテストパターンの生成を並列的に行なうもので、各スレーブ１１０は、ＡＴＰＧ１１１ａおよび故障シミュレータ１１１ｂとしての機能を有している。
ＡＴＰＧ１１１ａは、分割回路データベース１１５の情報に基づいて、分割した回路毎に、当該回路で発生しうる故障を検出するために当該回路の入力点に設定すべき要求値を生成する。ＡＴＰＧ１１１ａは、マスタ１２０からの開始信号を受けて動作を開始し、図１０を参照しながら後述する処理（ステップＡ２１〜Ａ２７）を実行する。
【００２４】
故障シミュレータ１１１ｂは、マスタ１２０からの開始信号を受けて動作を開始し、ＡＴＰＧ１１１ａで生成された要求値を当該回路の入力点に与えシミュレーションを行なうことにより、当該回路の応答である期待値を得る。
ＡＴＰＧ１１１ａで得られた要求値と、故障シミュレータ１１１ｂで得られた期待値とは、当該回路のテストパターンとして各スレーブ１１０からマスタ１２０へ送信される。このとき、テストパターンによって検出される故障、つまり検出故障に関する情報も、各スレーブ１１０からマスタ１２０へ送信される。
【００２５】
マスタ１２０は、複数のスレーブ１１０によるテストパターン生成を制御するもので、回路分割部１２１ａ，ＡＴＰＧ制御部１２１ｂ，故障シミュレータ制御部１２１ｃおよびマージ部１２１ｄとしての機能を有している。
回路分割部１２１ａは、回路データベース１２５に格納された試験対象回路全体の情報に基づき、試験対象回路を複数の回路に分割する。なお、分割後の複数の回路は、一部重複し、共通の入力点を有する可能性がある。各分割した回路の情報は、当該回路の処理を割り当てられたスレーブ１１０の分割回路データベース１１５に格納される。
【００２６】
ＡＴＰＧ制御部１２１ｂは、各スレーブ１１０のＡＴＰＧ１１１ａの動作を制御するもので、各スレーブ１１０のＡＴＰＧ１１１ａに対し要求値の生成開始を指示する。具体的に、ＡＴＰＧ制御部１２１ｂは、図１０を参照しながら後述する処理（ステップＡ１１〜Ａ１４）を実行する。
【００２７】
故障シミュレータ制御部１２１ｃは、各スレーブ１１０の故障シミュレータ１１１ｂの動作を制御するもので、各スレーブ１１０の故障シミュレータ１１１ｂに対し故障シミュレーションの開始を指示する。具体的に、故障シミュレータ制御部１２１ｃは、図１０を参照しながら後述する処理（ステップＡ１５，Ａ１６）を実行する。
マージ部１２１ｄは、各スレーブ１１０の故障シミュレータ１１１ｂから受信した、分割回路についてのテストパターンをマージし、試験対象回路全体のテストパターンを生成しテストパターンデータベース１２６に保存する。
【００２８】
次に、図９に示す一般的なテストパターン生成装置１００の動作について、図１０に示すフローチャート（ステップＡ１０〜Ａ３０）に従って説明する。
まず、マスタ１２０の回路分割部１２１ａにより、回路データベース１２５に格納された試験対象回路が、複数の回路に分割される（ステップＡ１０）。分割された回路の情報は、当該回路の処理を割り当てられたスレーブ１１０の分割回路データベース１１５に格納される。そして、ＡＴＰＧ制御部１２１ｂから、全てのスレーブ１１０のＡＴＰＧ１１１ａに対し、要求値の生成開始を指示するＡＴＰＧ開始信号が送信される（ステップＡ１１）。
【００２９】
各スレーブ１１０のＡＴＰＧ１１１ａでは、マスタ１２０からのＡＴＰＧ開始信号を受信すると、要求値の生成が開始され、まず、分割回路の一次故障が選択される（ステップＡ２１の「故障あり」ルート）。そして、選択された一次故障を検出するために分割回路の入力点に設定すべき要求値が生成され（ステップＡ２２）、動的圧縮（Dynamic Compaction）が実行される。動的圧縮では、上記一次故障を検出する要求値設定条件下で、二次故障が選択され（ステップＡ２３の「故障あり」ルート）、選択された二次故障を検出するために分割回路の入力点に設定すべき要求値が生成される（ステップＡ２４）。ステップＡ２３，Ａ２４の処理を繰り返すことで、上記一次故障を検出する要求値設定条件下で、二次故障を検出するための要求値が重畳される。重畳すべき二次故障、つまり選択可能な二次故障がなくなると（ステップＡ２３の「故障なし」ルート）、要求値が未設定の入力点に対し乱数を付加する乱数付加処理が実行される（ステップＡ２５）。乱数付加処理後、ＡＴＰＧ１１１ａは、処理を終了し、ＡＴＰＧ終了信号をマスタ１２０へ送信する（ステップＡ２６）。ステップＡ２１〜Ａ２５の処理によって得られた、分割回路についての要求値セットは、故障シミュレータ１１１ｂに受け渡される。
【００３０】
一方、マスタ１２０のＡＴＰＧ制御部１２１ｂは、ＡＴＰＧ開始信号を送信した後、全てのスレーブ１１０からＡＴＰＧ終了信号が送信されてくるのを待ち合わせる（ステップＡ１２）。ＡＴＰＧ制御部１２１ｂは、全てのスレーブ１１０からのＡＴＰＧ終了信号を受信すると（ステップＡ１２のＹＥＳルート）、処理を終了し、故障シミュレータ制御部１２１ｃが起動される。これに伴い、故障シミュレータ制御部１２１ｃから、全てのスレーブ１１０の故障シミュレータ１１１ｂに対し、故障シミュレーションの開始を指示する開始信号が送信される（ステップＡ１５）。
【００３１】
各スレーブ１１０の故障シミュレータ１１１ｂでは、マスタ１２０から故障シミュレーションの開始信号を受信すると、故障シミュレーションが開始される。つまり、故障シミュレータ１１１ｂは、ＡＴＰＧ１１１ａで生成された要求値を、分割回路の入力点に与え、シミュレーションを行なうことにより、分割回路の応答である期待値を得る（ステップＡ２８）。ＡＴＰＧ１１１ａで得られた要求値と故障シミュレータ１１１ｂで得られた期待値とは、分割回路のテストパターンとして各スレーブ１１０からマスタ１２０へ送信されるとともに、検出故障に関する情報も、各スレーブ１１０からマスタ１２０へ送信される（ステップＡ２９）。テストパターンおよび検出故障の送信後、故障シミュレータ１１１ｂは、処理を終了し、故障シミュレーションの終了信号をマスタ１２０へ送信する（ステップＡ３０）。
【００３２】
マスタ１２０の故障シミュレータ制御部１２１ｃは、故障シミュレーションの開始信号を送信した後、全てのスレーブ１１０から故障シミュレーションの終了信号が送信されてくるのを待ち合わせる（ステップＡ１６）。故障シミュレータ制御部１２１ｃは、全てのスレーブ１１０から故障シミュレーションの終了信号を受信すると（ステップＡ１６のＹＥＳルート）、処理を終了し、マージ部１２１ｄが起動される。これに伴い、マージ部１２１ｄは、各スレーブ１１０から受信した、各分割回路についてのテストパターンをマージし、試験対象回路全体のテストパターンを生成しテストパターンデータベース１２６に保存する（ステップＡ１７）。マスタ１２０は、終了条件を満たすまで（ステップＡ１８でＹＥＳ判定となるまで）、ステップＡ１１に戻り上述と同様の処理を繰り返す。
【００３３】
ここで、図９，図１０に示す各スレーブ１１０のＡＴＰＧ１１１ａによる処理は、各スレーブ１１０内に閉じた独立な処理であり、マスタ１２０は、各スレーブ１１０へのＡＴＰＧ開始信号の送信と各スレーブ１１０からのＡＴＰＧ終了信号の受信とを行なっているだけである。つまり、各スレーブ１１０のＡＴＰＧ１１１ａによる処理は、それぞれ独立であり、当該処理の開始から終了までの間に各スレーブ１１０とマスタ１２０との通信は一切行なわれない。このため、上述したように、共通の入力点である入力点を有する複数の分割回路について、独立に動作する複数のスレーブ１１０により並列にテストパターンを生成した場合、コンフリクト（不一致，衝突）が発生する可能性がある。コンフリクトとは、上述した通り、各スレーブ１１０が要求対象となる同じ入力点に対してそれぞれ異なる要求値を設定してしまう事象である。このように同じ入力点に対し異なる要求値が設定されるコンフリクトの発生した２以上のテストパターンは、マージ部１２１ｄによりマージすることができず、それぞれ異なるテストパターンとして生成されるため、テストパターンの増加が発生してしまう。
【００３４】
なお、各スレーブ１１０のＡＴＰＧ１１１ａが分割回路に割り当てられた全ての故障について要求値の生成を行ない選択可能な故障がなくなった場合（ステップＡ２１の「故障なし」ルート）、当該スレーブ１１０は、以下の動作を行なう。つまり、当該スレーブ１１０は、マスタ１２０に完了信号を送信するとともに（ステップＡ２７）、自身の状態を完了として、故障シミュレータ１１１ｂによる処理を行なうことなく自身の処理を停止する。また、完了信号を受信したマスタ１２０は、完了信号を送信してきたスレーブ１１０を切り離し（ステップＡ１３）、全てのスレーブ１１０から完了信号が送信されてくるのを待ち合わせる（ステップＡ１４）。マスタ１２０は、全てのスレーブ１１０から完了信号を受信すると（ステップＡ１４のＹＥＳルート）、自身の状態を完了として、故障シミュレータ制御部１２１ｃを起動することなく処理を終了する。
【００３５】
各スレーブ１１０の本来の処理は、分割回路に割り当てられた故障についてのテストパターンを生成することである。したがって、各スレーブ１１０において処理すべき故障が存在しなくなった場合に、上述した完了動作（ステップＡ２７，Ａ１３，Ａ１４）を行なって各スレーブ１１０の処理を直ちに停止することは自然な動作である。しかしながら、処理を停止したスレーブ１１０では、故障シミュレーションも行なわれなくなるため、停止したスレーブ１１０に割り当てられた分割回路に関係する期待値が得られなくなる。
【００３６】
ＬＳＩとしては、期待値に含まれる不定値に対するマスク処理を必要とするＢＡＳＴ（ＢＩＳＴ(Built In Self Test) Aided Scan Test）回路を有する試験系をそなえたものがある。このような試験系をそなえたＬＳＩが試験対象回路である場合、上述のごとき完了動作（ステップＡ２７，Ａ１３，Ａ１４）を行なっていると、並列処理に起因した不定値マスク処理に伴うオーバヘッド、即ちテストパターンの増加が発生してしまう。
【００３７】
ここで、ＢＡＳＴ回路について簡単に説明する。ＢＡＳＴ回路は、テストデータ圧縮のために用いられる技術であり、疑似乱数発生器（ＬＦＳＲ：Linear Feedback Shift Register），シグネチャ生成器（ＭＩＳＲ：Multiple Input Signature Register），反転ブロック，不定値マスクブロック，デコーダブロックなどを有している。なお、ＢＡＳＴ回路については、例えば電子情報通信学会論文誌 D-1 Vol.J88-D-1 No.6 pp.1012-1022に開示され、ＭＩＳＲについては、例えば特開平８−１５３８２号公報に開示されている。
【００３８】
ＭＩＳＲは、ＬＦＳＲを用いる疑似乱数生成器の一種であり、与えられる入力値に依存して乱数値であるシグネチャが変化する。つまり、テスタ測定においてＭＩＳＲの入力値としてスキャンアウト値を与えることで、スキャンアウト値に含まれる故障観測の有無に依存してシグネチャが変化する。従って、事前計算により得られた、故障がない場合のシグネチャと、実際のテスタ測定から得られたシグネチャとを比較することにより、長大なスキャンアウト値を直接比較することなく、故障観測の有無を判定することができる。即ち、長大なスキャンアウト値を比較するのではなく、短いシグネチャどうしを比較するだけで故障観測の有無を判定できるので、テストパターンを圧縮することができる。
【００３９】
ただし、故障がない場合のシグネチャを事前計算するときに、ＭＩＳＲに入力されるスキャンアウト値に不定値が含まれる場合には、その不定値のマスクを行なう必要がある。なぜならば、ＭＩＳＲは、フリップフロップ（ＦＦ）に保持される現在のシグネチャと入力値との排他的論理和をとったものを次のシグネチャとしているため、入力値に不定値が含まれていると、ＦＦに不定値が保持され、サイクルの進行に伴い不定値が拡散され、最終的にシグネチャが期待値を持てなくなる、つまりシグネチャが破壊されるからである。例えば、あるタイムフレームにおいて不定値マスクを行なうためには、不定値マスクを行なう必要のあるスキャンチェーン数分のクロックの印加が必要となり、印加されるクロックが、テストパターンを増加させるオーバヘッドとなる（上記電子情報通信学会論文誌 D-1 Vol.J88-D-1 No.6 pp.1012-1022の表２参照）。
【００４０】
〔２〕本実施形態のテストパターン生成装置
上述したように、図９および図１０に示すテストパターン生成装置１００では、分割回路のテストパターンが、独立に並列動作する複数のスレーブにおけるＡＴＰＧにより作成された後、マージされている。
これに対し、後述する本実施形態のテストパターン生成装置１（図１参照）では、スレーブを完全独立に動作させるのではなく、ＡＴＰＧによる要求値の生成処理中にマスタとスレーブとの間で通信を行なって分割回路間で共通の入力点に設定される要求値のコンフリクトを回避する仕組みがそなえられている。
【００４１】
この仕組みでは、マスタにおける要求値バッファ２２ａ（図１，図６参照）を用いて複数のスレーブ間で要求値の同期化（同値化）が行なわれる。つまり、各スレーブの要求値は、マスタ（要求値バッファ２２ａ）を介し互いに同期（同値化）される。これにより、複数のスレーブを用いた並列処理でテストパターン生成を行なった場合であっても、系全体としては、単一の演算処理装置でテストパターン生成を行なった場合と同等の回路状態が、要求値バッファ２２ａを介して維持され、並列処理に伴うテストパターン増加が抑制される。
【００４２】
また、後述する本実施形態のテストパターン生成装置１は、ＭＩＳＲを用いるパターン圧縮回路に対応すべく、選択すべき故障がなくなったスレーブにおいて、ＡＴＰＧによる要求値生成処理をスキップするが、故障シミュレーション処理を実行して期待値を得るように構成される。これにより、不定値のマスク処理に伴うテストパターンの増加が抑制される。
【００４３】
〔２−１〕本実施形態のテストパターン生成装置の構成
図１は、本実施形態のテストパターン生成装置１のハードウエア構成および機能構成を示すブロック図である。
図１に示すテストパターン生成装置１は、上述したテストパターン生成装置１００と同様、ＬＳＩ等の試験対象回路を複数の回路に分割し、分割した回路毎のテストパターンを、複数のコンピュータ（演算処理装置）１０，２０を用いて生成する。テストパターン生成装置１は、複数のスレーブコンピュータ（第１の演算処理装置；以下、単にスレーブという）１０と、一つのマスタコンピュータ（第２の演算処理装置；以下、単にマスタという）２０とを有している。
【００４４】
マスタ２０には、回路データベース２５およびテストパターンデータベース２６が付設されている。回路データベース２５は、試験対象回路全体のネットリスト，故障情報などを格納する。テストパターンデータベース２６は、後述するマージ部２１ｄによってマージされた試験対象回路全体のテストパターンや、検出故障などを格納する。
また、各スレーブ１０には、分割回路データベース１５が付設されている。分割回路データベース１５は、後述する回路分割部２１ａによって分割され各スレーブ１０に割り当てられた回路のネットリスト，故障情報などを格納する。
【００４５】
複数のスレーブ１０は、分割された複数の回路をそれぞれ割り当てられ、割り当てられた回路のテストパターンの生成を並列的に行なうもので、各スレーブ１０は、処理部（ＣＰＵ；Central Processing Unit）１１，記憶部１２，送信部１３および受信部１４を有している。
処理部１１は、テストパターン生成プログラムを含む所定のプログラムを実行することにより、後述するＡＴＰＧ１１ａおよび故障シミュレータ１１ｂとしての機能を果たす。
【００４６】
記憶部１２は、上記所定のプログラムや、ＡＴＰＧ１１ａおよび故障シミュレータ１１ｂの処理に係る各種情報を記憶する。
送信部１３は、処理部１１によって制御され、マスタ２０へ各種情報（要求値，終了信号，完了信号，検出故障，期待値等）を送信する。
受信部１４は、マスタ２０から各種情報（開始信号，応答値，コンフリクトを抑制された要求値等）を受信し、処理部１１に通知する。
【００４７】
ＡＴＰＧ１１ａは、分割回路データベース１５の情報に基づいて、分割回路毎に、当該分割回路で発生しうる故障を検出するために当該分割回路の入力点である入力点に設定すべき要求値を生成する。ＡＴＰＧ１１ａは、マスタ２０からの開始信号を受けて動作を開始し、図４および図６を参照しながら後述する処理（ステップＳ２１〜Ｓ２７およびステップＳ２５１〜Ｓ２５４）を実行する。
【００４８】
故障シミュレータ１１ｂは、マスタ２０からの開始信号を受けて動作を開始し、後述するごとくマスタ２０から受信した、コンフリクトを抑制された要求値を当該分割回路の入力点に与えシミュレーションを行なうことにより、当該分割回路の応答である期待値を得る。故障シミュレータ１１ｂで得られた期待値は、各スレーブ１０からマスタ２０へ送信される。このとき、テストパターンによって検出される故障、つまり検出故障に関する情報も、各スレーブ１０からマスタ２０へ送信される。
【００４９】
マスタ２０は、複数のスレーブ１０によるテストパターン生成を制御するもので、処理部（ＣＰＵ）２１，記憶部２２，送信部２３および受信部２４を有している。
処理部１１は、テストパターン生成プログラムを含む所定のプログラムを実行することにより、後述する回路分割部２１ａ，ＡＴＰＧ制御部２１ｂ，故障シミュレータ制御部２１ｃ，判定部２１ｄ，乱数付加部２１ｅおよびマージ部２１ｆとしての機能を果たす。
【００５０】
記憶部２２は、上記所定のプログラムや、回路分割部２１ａ，ＡＴＰＧ制御部２１ｂ，故障シミュレータ制御部２１ｃ，判定部２１ｄ，乱数付加部２１ｅおよびマージ部２１ｆの処理に係る各種情報を記憶する。記憶部２２には、要求値バッファ２２ａが含まれている。要求値バッファ２２ａは、後述するごとく回路分割部２１ａにより分割した回路に含まれる要求対象となる入力点毎の要求値を格納する。
【００５１】
送信部２３は、処理部２１によって制御され、各スレーブ１０へ各種情報（開始信号，応答値，コンフリクトを抑制された要求値等）を送信する。
受信部２４は、各スレーブ１０から各種情報（要求値，終了信号，完了信号，検出故障，期待値等）を受信し、処理部２１に通知する。
【００５２】
回路分割部２１ａは、回路データベース２５に格納された試験対象回路全体の情報に基づき、試験対象回路を複数の回路に分割する。なお、複数の分割回路は、一部重複し、共通の入力点を有する可能性がある。各分割回路の情報は、当該分割回路の処理を割り当てられたスレーブ１０の分割回路データベース１５に格納される。
【００５３】
ここで、図２および図３を参照しながら、本実施形態の回路分割部２１ａによる回路分割手法について説明する。なお、図２は本実施形態の回路分割手法を説明するための図、図３は、本実施形態の回路分割手法と同手法により分割された回路の重複領域とを説明するための図である。また、回路分割部２１ａによる詳細な回路分割手法については、図５を参照しながら後述する。
【００５４】
分割回路は、各分割回路の処理を担当するスレーブ１０の回路状態と期待値とが正確に保証されるモデルでなければ、テストパターン生成装置１の全体として、単一の演算処理装置でテストパターン生成を行なった場合と同等の回路状態と期待値とを維持することは困難である。このため、回路分割部２１ａは、以下のように回路分割を行なっている。
【００５５】
図２および図３に示すように、回路分割部２１ａは、出力状態を期待値として観測すべき試験対象回路の観測点スキャンラッチを、複数のラッチグループに分割し、これらのラッチグループをそれぞれ異なる複数の分割回路（図３の分割回路＃１，＃２）に所属させる。このとき、複数の分割回路間において重複して存在する観測点スキャンラッチは存在しない。なお、図２は、一つのラッチグループからバックトレースを行なった状態を示しており、図３は、２つのラッチグループからバックトレースを行ない、共通の入力点を有する２つの分割回路を特定した状態を示している。
【００５６】
そして、回路分割部２１ａは、分割した各ラッチグループからバックトレースすることにより、図３に示すように、試験対象回路を、複数のラッチグループにそれぞれ対応する複数の回路に分割し、分割した複数の回路をそれぞれ複数のスレーブ１０（図３のスレーブ＃１，＃２参照）に割り当てる。このように、観測点スキャンラッチ側からバックトレースして回路分割を行なうことで、回路分割時の期待値の正当性が保証される。
【００５７】
また、回路分割部２１ａは、ダブルパルスによるディレイ試験（ＷＤＦＴ：Double pulse Delay Function Test）に対応すべく、分割した各ラッチグループから、データラインおよび制御ラインを一般的なスタティック試験の場合よりも１ステージ分多く、バックトレースする。つまり、回路分割部２１ａによるバックトレースの深さは、図２に示すように、データラインで２ステージ分（State＃１，＃２）、クロック，クリア等の制御ラインで３ステージ分（制御ライン＃１〜＃３）である。
【００５８】
なお、バックトレースによって到達した入力点であるスキャンラッチのデータ端子Ｄｉｎには、図５を参照しながら後述するように、境界処理が施され、常に制御不可能な値（Const-U；Constant-Uncontrollable）に接続される。
また、図３に示すように、一般に任意の観測点スキャンラッチからバックトレースにより回路を分割する場合、共通の入力（図３の重複スキャンイン参照）が、異なる分割回路に重複して登録されることがある。図３に示すような共通入力（重複スキャンイン）に対し、異なる分割回路を担当するスレーブ１０毎に異なる要求値が設定されると、つまりコンフリクトが発生すると、テストパタンの増加の原因となる。
【００５９】
このような共通入力における要求値のコンフリクトを、要求値の同期化処理によって回避する構成について、以下、図１を参照しながら説明する。
ＡＴＰＧ制御部２１ｂは、各スレーブ１０のＡＴＰＧ１１ａの動作を制御するもので、各スレーブ１０のＡＴＰＧ１１ａに対し、要求値の生成開始を指示するＡＴＰＧ開始信号を、送信部２３経由で送信する。具体的に、ＡＴＰＧ制御部２１ｂは、後述する判定部２１ｄと連携し、図４および図６を参照しながら後述する処理（ステップＳ１１〜Ｓ１５およびＳ１４１〜Ｓ１４７）を実行する。
【００６０】
故障シミュレータ制御部２１ｃは、各スレーブ１０の故障シミュレータ１１ｂの動作を制御するもので、各スレーブ１０の故障シミュレータ１１ｂに対し故障シミュレーションの開始を指示する開始信号を、送信部２３経由で送信する。具体的に、故障シミュレータ制御部２１ｃは、図４を参照しながら後述する処理（ステップＳ１７，Ｓ１８）を実行する。
【００６１】
判定部２１ｄは、複数のスレーブ１０が要求対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを、要求値バッファ２２ａに格納された要求値に基づいて判定する。
各スレーブ１０は、ＡＴＰＧ１１ａにおいて分割回路に含まれる要求対象となる入力点に要求値を設定する際、コンフリクトが発生するか否かを、送信部１３および受信部２４を介して、マスタ２０の判定部２１ｄに問い合わせる。ここで、コンフリクトとは、各スレーブ１０のＡＴＰＧ１１ａが入力点に設定しようとする要求値が、当該入力点に対して他のスレーブ１０が設定した要求値と異なる事象のことである。
【００６２】
判定部２１ｄは、スレーブ１０から、設定しようとする要求値のコンフリクトの有無の問い合わせがあった場合、要求値バッファ２２ａに格納された要求値に基づいて当該問い合わせに係る判定を実行する。つまり、判定部２１ｄは、当該問い合わせに係る要求値と要求値バッファ２２ａに保存された要求値とを照合する。
より具体的に、判定部２１ｄは、要求値バッファ２２ａにおいて、当該問い合わせに係る要求値を設定される入力点に対応するビットを参照し、当該ビットに保存されている要求値と当該問い合わせに係る要求値とを比較する。
【００６３】
そして、判定部２１ｄは、これらの要求値が同じ値である場合や前記対応するビットにまだ要求値が設定されていない場合、コンフリクトが発生していない（コンフリクト無）と判定する。一方、判定部２１ｄは、前記対応するビットに、当該問い合わせに係る要求値と異なる値が設定されている場合、コンフリクトが発生している（コンフリクト有）と判定する。つまり、当該問い合わせに係る要求値が１の時に対応ビットに０が設定されている場合、または、当該問い合わせに係る要求値が０の時に対応ビットに１が設定されている場合、コンフリクトが発生している（コンフリクト有）と判定される。
【００６４】
判定部２１ｄは、コンフリクトが発生すると判定した場合、当該問い合わせの結果としてコンフリクトが発生する旨（却下）を、送信部２３および受信部１４を介して、当該問い合わせを行なったスレーブ１０に応答する。却下応答を受信したスレーブ１０は、当該要求値の設定を抑止する。
【００６５】
判定部２１ｄは、コンフリクトが発生しないと判定した場合、当該問い合わせに係る要求値を、要求値バッファ２２ａに格納された対応する要求値に反映させる。つまり、当該問い合わせに係る要求値が、対応入力点に設定される要求値として、要求値バッファ２２ａに追加保存される。また、判定部２１ｄは、当該問い合わせの結果としてコンフリクトが発生しない旨（受理）と、要求値バッファ２２ａに格納されている入力点毎の要求値とを、送信部２３および受信部１４を介して、当該問い合わせを行なったスレーブ１０に応答する。受理応答を受信したスレーブ１０は、問い合わせに係る要求値の設定を行なうとともに、受信した入力点毎の要求値に基づき、次の要求値の設定を行なう。
【００６６】
乱数付加部２１ｅは、複数のスレーブ１０の全てが要求値の設定を終了すると、要求値バッファ２２ａにおいて要求値が未設定の入力点に対し乱数を付加する。乱数付加部２１ｅによって乱数を付加された、要求値バッファ２２ａにおける入力点毎の要求値は、送信部２３および受信部１４を介して、複数のスレーブ１０に送信される。複数のスレーブ１０のそれぞれは、マスタ２０から、乱数を付加された、要求値バッファ２２ａにおける入力点毎の要求値を受信すると、受信した入力点毎の要求値に基づき故障シミュレータ１１ｂによる故障シミュレーションを実行させる。このとき、故障シミュレータ１１ｂは、各スレーブ１０が担当する分割回路の故障シミュレーションを行ない、当該分割回路に要求値を入力した時の応答値を期待値として取得する。故障シミュレータ１１ｂにより取得された期待値は、当該要求値によって検出される故障、つまり検出故障に関する情報とともに、送信部１３および受信部２４を介してマスタ２０へ送信される。
【００６７】
マージ部２１ｆは、各スレーブ１０から受信した、分割回路についての期待値をマージする。マージ部２１ｆによってマージされた期待値と、乱数を付加された、要求値バッファ２２ａにおける入力点毎の要求値とは、試験対象回路全体のテストパターンとして、テストパターンデータベース２６に保存される。
【００６８】
〔２−２〕本実施形態のテストパターン生成装置の動作
次に、上述のごとく構成されたテストパターン生成装置１の動作について、図４に示すフローチャート（ステップＳ１０〜Ｓ３０）に従って、図５〜図８を参照しながら説明する。
まず、マスタ２０の回路分割部２１ａにより、回路データベース２５に格納された試験対象回路が、図２および図３を参照しながら前述した通り、複数の回路に分割される（ステップＳ１０）。
【００６９】
ここで、回路分割部２１ａによる回路分割処理の詳細な手順について、図５に示すフローチャート（ステップＳ３１〜Ｓ３５，Ｓ３４１〜Ｓ３４４，Ｓ３５１〜Ｓ３５３）に従って説明する。
回路分割部２１ａは、回路データベース２５から、試験対象回路全体の回路モデルを取り込み（ステップＳ３１）、出力状態を期待値として観測すべき試験対象回路の観測点スキャンラッチを、複数のラッチグループに分割する。各ラッチグループには、分割回路のＩＤ＝１，２，…，ｎ（ｎは分割数）のいずれか一つが付与される（ステップＳ３２）。
【００７０】
この後、ＩＤ＝１，２，…，ｎのラッチグループのそれぞれについて、以下の分割回路トレース処理（ステップＳ３４）が実行されるとともに、以下の分割回路出力処理（ステップＳ３５）が実行される。全てのラッチグループに対し、分割回路トレース処理および分割回路出力処理が実行されると（ステップＳ３３のＹＥＳルート）、回路分割部２１ａは、回路分割処理を終了する。
【００７１】
分割回路トレース処理（ステップＳ３４）において、まず、回路分割部２１ａは、ＩＤ＝ｉ（ｉ＝１，２，…，ｎ）のラッチグループをレベルＬ＝１の開始点集合に設定する初期化処理を行なう（ステップＳ３４１）。初期化処理後、レベルＬ＝１，２，３について、以下の処理（ステップＳ３４３，Ｓ３４４）が実行される。レベルＬ＝１，２，３に対し、以下の処理（ステップＳ３４３，Ｓ３４４）が実行されると（ステップＳ３４２のＹＥＳルート）、分割回路トレース処理（ステップＳ３４）を終了する。
【００７２】
ステップＳ３４３において、回路分割部２１ａは、レベルＬの開始点集合からバックトレースを開始する。ただし、Ｌ＝３の場合、スキャンラッチのデータイン端子Ｄｉｎからのバックトレースは行なわない。
ステップＳ３４４において、回路分割部２１ａは、レベルＬの開始点集合から前段ロジックのスキャンラッチまでの１ステージ分のバックトレースを行なう。そして、回路分割部２１ａは、バックトレースによって到達したスキャンラッチを、次のレベルＬ＝ｉ＋１の開始点集合に設定し、トレース範囲をマークする。
【００７３】
分割回路出力処理（ステップＳ３５）において、回路分割部２１ａは、スキャンアウト属性の調整を行なう（ステップＳ３５１）。具体的に、レベルＬ＝１以外のスキャンラッチのスキャンアウト属性が消去される。そして、回路分割部２１ａは、境界処理を行なう（ステップＳ３５２）。つまり、回路分割部２１ａは、ステップＳ３４４でマークされたトレース範囲を参照し、トレースと非トレースとの境界を、常に制御不可能な値（Const-U）に終端させる。この後、回路分割部２１ａは、ＩＤ＝ｉの分割回路モデルを出力し（ステップＳ３５３）、ステップＳ３３の処理へ移行する。
【００７４】
以上の回路分割処理により、図２および図３に示すように、ダブルパルスによるディレイ試験（ＷＤＦＴ）に対応すべく、分割した各ラッチグループから、データラインで２ステージ分、制御ラインで３ステージ分のバックトレースが行なわれる。そして、分割したラッチグループ毎に、試験対象回路の分割回路が得られる。分割回路の情報は、当該分割回路の処理を割り当てられたスレーブ１０の分割回路データベース１５に格納される。
この後、マスタ２０は、要求値バッファ２２ａのクリア処理を行なってから（ステップＳ１１）、ＡＴＰＧ制御部２１ｂから、送信部２３を介して、全てのスレーブ１０のＡＴＰＧ１１ａに対し、要求値の生成開始を指示するＡＴＰＧ開始信号を送信する（ステップＳ１２）。
【００７５】
各スレーブ１０のＡＴＰＧ１１ａでは、受信部１４によりマスタ２０からのＡＴＰＧ開始信号を受信すると、要求値の生成が開始され、まず、分割回路の一次故障が選択される（ステップＳ２１の「故障あり」ルート）。そして、選択された一次故障を検出するために分割回路の入力点に設定すべき要求値が生成され（ステップＳ２２）、動的圧縮（Dynamic Compaction）が実行される。動的圧縮では、上記一次故障を検出する要求値設定条件下で、二次故障が選択され（ステップＳ２３の「故障あり」ルート）、選択された二次故障を検出するために分割回路の入力点に設定すべき要求値が生成・作成される（ステップＳ２４）。なお、二次故障についての要求値生成に成功した場合、当該要求値生成に成功したことを示すフラグがセットされる。
【００７６】
ステップＳ２４で要求値要求が作成されると、スレーブ１０とマスタ２０との間で要求値の同期化処理（ステップＳ２５およびＳ１４）が実行される。
ここで、図６に示すフローチャート（ステップＳ１４１〜Ｓ１４７，Ｓ２５１〜Ｓ２５４）に従って、図４に示す要求値の同期化処理（ステップＳ１４，Ｓ２５）について説明する。
【００７７】
ステップＳ２４で要求値が作成されると、スレーブ１０は、分割回路モデルから当該故障の検出に関わる状態を一旦クリアした後、コンフリクトが発生するか否かを、送信部１３および受信部２４を介して、マスタ２０の判定部２１ｄに問い合わせる（ステップＳ２５１）。ここで、コンフリクトとは、ステップＳ２４で作成された要求値、つまりスレーブ１０のＡＴＰＧ１１ａが入力点に設定しようとする要求値が、当該入力点に対して他のスレーブ１０が設定した要求値と異なる事象のことである。
【００７８】
マスタ２０は、受信部２４により、スレーブ１０から、設定しようとする要求値のコンフリクトの有無の問い合わせを受信すると（ステップＳ１４１）、判定部２１ｄにより、当該問い合わせに係る要求値と要求値バッファ２２ａに保存された要求値とを照合する（ステップＳ１４２）。このとき、判定部２１ｄは、前述したように、要求値バッファ２２ａにおいて、当該問い合わせに係る要求値を設定される入力点に対応するビットを参照し、当該ビットに保存されている要求値と当該問い合わせに係る要求値とを比較する。
【００７９】
判定部２１ｄによりコンフリクトが発生すると判定された場合（ステップＳ１４３のＹＥＳルート）、要求値バッファ２２ａの更新は行なわず、スレーブ１０に対する応答値に、コンフリクトが発生する旨（却下）が設定される（ステップＳ１４４）。そして、「却下」を設定された応答値が、送信部２３および受信部１４を介して、当該問い合わせを行なったスレーブ１０に送信される（ステップＳ１４５）。応答値の送信後、マスタ２０の処理は後述するステップＳ１３に戻る。
【００８０】
スレーブ１０において、受信部２４によりマスタ２０からの応答値が受信され（ステップＳ２５２）、受信した応答値に「却下」が設定されていた場合（ステップＳ２５３のＮＯルート）、スレーブ１０（ＡＴＰＧ１１ａ）は、当該要求値の設定を抑止し、ステップＳ２３の処理へ移行する。なお、このとき、スレーブ１０は、次回の動的圧縮で同二次故障を、再度、ターゲット（選択対象）にするために、同二次故障についての要求値生成に成功したことを示すフラグがクリアされる。
【００８１】
一方、判定部２１ｄによりコンフリクトが発生しないと判定された場合（ステップＳ１４３のＮＯルート）、スレーブ１０に対する応答値に、コンフリクトが発生しない旨（受理）と要求値バッファ２２ａに格納されている入力点毎の要求値とが設定される（ステップＳ１４６）。また、当該問い合わせに係る要求値は、要求値バッファ２２ａに格納された対応する要求値に反映される。つまり、当該問い合わせに係る要求値が、対応入力点に設定される要求値として、要求値バッファ２２ａに追加保存される（ステップＳ１４７）。そして、「受理」、および、要求値バッファ２２ａに格納されている入力点毎の要求値を設定された応答値が、送信部２３および受信部１４を介して、当該問い合わせを行なったスレーブ１０に送信される（ステップＳ１４５）。応答値の送信後、マスタ２０の処理は後述するステップＳ１３に戻る。
【００８２】
スレーブ１０において、受信部２４によりマスタ２０からの応答値が受信され（ステップＳ２５２）、受信した応答値に「受理」が設定されていた場合（ステップＳ２５３のＹＥＳルート）、スレーブ１０（ＡＴＰＧ１１ａ）は、問い合わせに係る要求値の設定を行なう（ステップＳ２５４）。つまり、スレーブ１０（ＡＴＰＧ１１ａ）は、マスタ２０から返信されてきた入力点毎の要求値を用い、分割回路モデルの状態を含意し、ステップＳ２３の処理へ移行する。
【００８３】
ＡＴＰＧ１１ａにおいては、ステップＳ２３〜Ｓ２５の処理を繰り返すことで、上記一次故障を検出する要求値設定条件下で、二次故障を検出するための要求値が重畳される。重畳すべき二次故障、つまり選択可能な二次故障がなくなると（ステップＳ２３の「故障なし」ルート）、ＡＴＰＧ１１ａは、処理を終了し、ＡＴＰＧ終了信号をマスタ１２０へ送信する（ステップＳ２６）。
【００８４】
一方、マスタ２０において、ＡＴＰＧ制御部２１ｂは、ＡＴＰＧ開始信号を送信した後、全てのスレーブ１０からＡＴＰＧ終了信号が送信されてくるのを待ち合わせる（ステップＳ１３）。各スレーブ１０からのＡＴＰＧ終了信号を待ち合わせている間、ＡＴＰＧ制御部２１ｂは、各スレーブ１０からの問い合わせに応じ要求値の同期化処理（ステップＳ１４）を実行する。
【００８５】
そして、ＡＴＰＧ制御部２１ｂは、受信部２４により、全てのスレーブ１０からのＡＴＰＧ終了信号を受信すると（ステップＳ１３のＹＥＳルート）、乱数付加部２１ｅが、要求値バッファ２２ａにおいて要求値が未設定の入力点に対し乱数を付加する（ステップＳ１６）。乱数付加部２１ｅによって乱数を付加された、要求値バッファ２２ａにおける入力点毎の要求値、つまりコンフリクトを抑制された要求値は、送信部２３および受信部１４を介して、全てのスレーブ１０に送信される。この後、故障シミュレータ制御部２１ｃが起動され、故障シミュレータ制御部２１ｃから、全てのスレーブ１０の故障シミュレータ１１ｂに対し、故障シミュレーションの開始を指示する開始信号が送信される（ステップＳ１７）。
【００８６】
各スレーブ１０は、マスタ２０から、コンフリクトを抑制された要求値と故障シミュレーションの開始信号とを受信すると、故障シミュレーションが開始される。つまり、故障シミュレータ１１ｂは、マスタ２０からの、コンフリクトを抑制された要求値を、分割回路の入力点に与え、シミュレーションを行なうことにより、分割回路の応答である期待値を得る（ステップＳ２８）。故障シミュレータ１１ｂにより取得された期待値は、当該要求値によって検出される故障に関する情報とともに、送信部１３および受信部２４を介してマスタ２０へ送信される（ステップＳ２９）。期待値および検出故障の送信後、故障シミュレータ１１ｂは、処理を終了し、故障シミュレーションの終了信号をマスタ２０へ送信する（ステップＳ３０）。
【００８７】
マスタ２０において、故障シミュレータ制御部２１ｃは、故障シミュレーションの開始信号を送信した後、全てのスレーブ１０から故障シミュレーションの終了信号が送信されてくるのを待ち合わせる（ステップＳ１８）。故障シミュレータ制御部２１ｃは、全てのスレーブ１０から故障シミュレーションの終了信号を受信すると（ステップＳ１８のＹＥＳルート）、処理を終了し、マージ部２１ｆが起動される。これに伴い、マージ部２１ｆは、各スレーブ１０から受信した、各分割回路についての期待値をマージする。そして、マージ部２１ｆは、マージされた期待値と、乱数を付加された、要求値バッファ２２ａにおける入力点毎の要求値とを、試験対象回路全体のテストパターンとして、テストパターンデータベース２６に保存する（ステップＳ１９）。マスタ２０は、終了条件を満たすまで（ステップＳ２０でＹＥＳ判定となるまで）、ステップＳ１１に戻り上述と同様の処理を繰り返す。
【００８８】
なお、各スレーブ１０のＡＴＰＧ１１ａが分割回路に割り当てられた全ての故障について要求値の生成を行ない選択可能な故障がなくなった場合（ステップＳ２１の「故障なし」ルート）、当該スレーブ１０は、以下の動作を行なう。つまり、当該スレーブ１０は、送信部１３および受信部２４を介して、マスタ２０に完了信号を送信する（ステップＳ２７）。このとき、スレーブ１０は、図９や図１０に示したテストパターン生成装置１００のごとくスレーブ自体の処理を停止させるのではなく、ＡＴＰＧ１１ａによる処理を停止させるだけで、引き続き故障シミュレーションの開始を待機する。
【００８９】
また、完了信号を受信したマスタ２０は、図９や図１０に示したテストパターン生成装置１００のごとくスレーブ１０の切り離しは行なわず、全てのスレーブ１０から完了信号が送信されてくるのを待ち合わせる（ステップＳ１５）。マスタ２０は、全てのスレーブ１０から完了信号を受信すると（ステップＳ１５のＹＥＳルート）、故障シミュレータ制御部２１ｃを起動し、ステップＳ１７〜Ｓ２０の処理を実行する。
このような動作により、選択すべき故障がなくなったスレーブ１０において、ＡＴＰＧ１１ａによる要求値生成処理はスキップされるが、故障シミュレーション処理を実行して期待値を得ることができる。
【００９０】
次に、図７（Ａ）〜図７（Ｃ）を参照し、本実施形態のテストパターン生成装置１の動作例を従来技術の動作例と比較しながら具体的に説明する。
２つのスレーブ１０（Slave#1, Slave#2）が、それぞれ、分割された故障集合における故障ｆ１１，ｆ２１に対し、要求値を生成した場合の具体例を図７（Ａ）に示す。この図７（Ａ）では、例えば、
Slave#1は故障ｆ１１に対し要求値Ａ１＝｛＊＊＊１１＊０＊＊｝を生成し、
Slave#2は故障ｆ２１に対し要求値Ｂ１＝｛＊１＊１１０＊＊＊｝を生成している。
【００９１】
なお、「＊」は、要求値が未設定のビット（入力点）を示している。
図７（Ａ）に示す状態では、故障ｆ１１に対する要求値Ａ１と故障ｆ２１に対する要求値Ｂ１との間でコンフリクトは発生していない。したがって、この例の場合、要求値Ａ１と要求値Ｂ１とをマージした要求値｛＊１＊１１００＊＊｝をテストパターンとして用いることができるので、テストパターンの増加は発生しない。
【００９２】
図７（Ｂ）は、図９や図１０に示す一般的なテストパターン生成装置１００において、Slave#1およびSlave#2がそれぞれ図７（Ａ）に示す要求値Ａ１，Ｂ１を生成した状態で、Slave#2が二次故障ｆ２２に対する要求値Ｂ２を生成した場合を示している。ここで、Slave#2は故障ｆ２２に対し要求値Ｂ２＝｛＊＊＊＊＊＊１＊＊｝を生成している。
この場合、Slave#1とは完全に独立して並列処理を行なっているSlave#2は、要求値Ｂ１に要求値Ｂ２を重ね合わせ、要求値Ｂ３＝｛＊１＊１１０１＊＊｝を生成している。このようにSlave#2で生成された要求値Ｂ３＝｛＊１＊１１０１＊＊｝と、他のSlave#1で生成されている要求値Ａ１＝｛＊＊＊１１＊０＊＊｝との間では、左から７ビット目の要求値が異なっており、コンフリクトが発生している。したがって、これらの要求値Ａ１，Ｂ３はマージすることができず、テストパターンの増加が発生する。
【００９３】
図７（Ｃ）は、本実施形態のテストパターン生成装置１において、Slave#1が図７（Ａ）に示す要求値Ａ１を生成した後にSlave#2が図７（Ａ）に示す要求値Ｂ１を生成した状態で、Slave#2が、二次故障ｆ２２に対する要求値Ｂ４を生成した場合を示している。
このとき、Slave#1が図７（Ａ）に示す要求値Ａ１を生成した時点で、マスタ２０の要求値バッファ２２ａに格納される要求値は、要求値Ａ１と同じ｛＊＊＊１１＊０＊＊｝となっている。この後、Slave#2が図７（Ａ）に示す要求値Ｂ１を生成した場合、Slave#2は、要求値Ｂ１についてマスタ２０に問い合わせを行なう。このとき、上述したように要求値Ａ１と要求値Ｂ１との間ではコンフリクトが生じない。したがって、要求値Ｂ１には、要求値バッファ２２ａに格納されている要求値が反映されるとともに、要求値バッファ２２ａには要求値Ｂ１が反映される。つまり、要求値バッファ２２ａの要求値は｛＊１＊１１００＊＊｝となり、マスタ２０からSlave#2へ返信される要求値も｛＊１＊１１００＊＊｝となり、要求値の同期化が行なわれる。
【００９４】
同期化した要求値｛＊１＊１１００＊＊｝の条件で、Slave#2が、二次故障ｆ２２に対する要求値Ｂ４＝｛＊＊１＊＊＊＊＊＊｝を生成すると、同期化した要求値｛＊１＊１１００＊＊｝に要求値Ｂ４＝｛＊＊１＊＊＊＊＊＊｝を追加した要求値Ｂ５＝｛＊１１１１００＊＊｝を生成する。要求値Ｂ５についてマスタ２０に問い合わせを行なうと、要求値障バッファ２２ａの要求値｛＊１＊１１００＊＊｝と要求値Ｂ５との間ではコンフリクトが生じない。したがって、要求値バッファ２２ａの要求値は｛＊１１１１００＊＊｝となり、マスタ２０からSlave#2へ返信される要求値も｛＊１１１１００＊＊｝となり、要求値の同期化が行なわれる。
【００９５】
上述のようにして、各スレーブ１０で生成される要求値は、マスタ２０（要求値バッファ２２ａ）を介して同期化（同値化）される。つまり、他のスレーブ１０からの要求値を同期化した条件の下で、検出可能な故障に対する要求値が生成されるので、可能な限りコンフリクトを回避しながら要求値の生成を行なうことができ、テストパターンの増加が抑制される。
【００９６】
なお、本実施形態のテストパターン生成装置１では、図８に示すように、各スレーブ１０からマスタ２０への要求値の送信（問い合わせ）に優先順序を設けておらず、要求値の送信は非同期的に行なわれる。このため、マスタ２０での要求値の受信、および、要求値バッファ２２ａへの要求値の設定は早い者順になる（矢印Ａ１，Ａ２参照）。図８は、本実施形態のスレーブ１０とマスタ２０との間における要求値の非同期通信について説明するための図である。
【００９７】
図８では、他のスレーブ１０がマスタ２０にアクセスし（矢印Ａ１参照）、他のスレーブ１０からの要求値が要求値バッファ２２ａに反映された後に、スレーブ１０が要求値の問い合わせをマスタ２０に行なっている（矢印Ａ２参照）。スレーブ１０からの問い合わせに応じて、当該問い合わせに係る要求値と要求値バッファ２２ａにおける要求値との照合が行なわれる。照合の結果、コンフリクトが発生する場合、却下を示す応答値がスレーブ１０に返送される（矢印Ａ３参照）。一方、コンフリクトが発生しない場合、受理を示すとともに要求値バッファ２２ａの保存要求値を含む応答値がスレーブ１０に返送される（矢印Ａ３参照）。
【００９８】
〔２−３〕本実施形態のテストパターン生成装置の効果
このように、本実施形態のテストパターン生成装置１によれば、スレーブ１０を完全独立に動作させるのではなく、ＡＴＰＧ１１ａによる要求値の生成処理中にマスタ２０とスレーブ１０との間で通信を行なって分割回路間で共通の入力点に設定される要求値のコンフリクトが回避される。
【００９９】
より具体的には、マスタ２０における要求値バッファ２２ａを用いて複数のスレーブ１０間で要求値の同期化（同値化）が行なわれる。つまり、各スレーブ１０の要求値は、要求値バッファ２２ａを介し互いに同期（同値化）される。これにより、複数のスレーブ１０を用いた並列処理でテストパターン生成を行なった場合であっても、系全体としては、単一の演算処理装置でテストパターン生成を行なった場合と同等の回路状態が、要求値バッファ２２ａに維持され、並列処理に伴うテストパターン増加が抑制される。したがって、テストパターンの増加というオーバヘッドなしに複数の計算機（演算処理装置）を用いることで、計算機１台あたりのメモリ使用量を削減する負荷分散と並列処理による高速なテストパターン生成とが可能となる。
【０１００】
また、本実施形態のテストパターン生成装置１は、ＭＩＳＲを用いるパターン圧縮回路に対応すべく、選択すべき故障がなくなったスレーブ１０において、ＡＴＰＧ１１ａによる要求値生成処理をスキップするが、故障シミュレーション処理を実行して期待値を得るように構成される。これにより、不定値のマスク処理に伴うテストパターンの増加が抑制される。
【０１０１】
さらに、図１０のステップＡ２５に示すように一般的なテストパターン生成装置１００では各スレーブ１１０において実行されていた乱数付加処理が、本実施形態のテストパターン生成装置１では、マスタ２０の乱数付加部２１ｅにより一元的に実行される（図４のステップＳ１６参照）。これにより、各スレーブ１０の負荷を軽減することが可能になる。
【０１０２】
〔３〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
なお、上述したスレーブ１０におけるＡＴＰＧ１１ａおよび故障シミュレータ１１ｂとしての機能や、上述したマスタ２０における回路分割部２１ａ，ＡＴＰＧ制御部２１ｂ，故障シミュレータ制御部２１ｃ，判定部２１ｄ，乱数付加部２１ｅおよびマージ部２１ｆとしての機能の全部もしくは一部は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（テストパターン生成プログラム）を実行することによって実現される。
【０１０３】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【０１０４】
ここで、コンピュータとは、ハードウエアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウエアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウエアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記テストパターン生成プログラムは、上述のようなコンピュータに、ＡＴＰＧ１１ａ，故障シミュレータ１１ｂ，回路分割部２１ａ，ＡＴＰＧ制御部２１ｂ，故障シミュレータ制御部２１ｃ，判定部２１ｄ，乱数付加部２１ｅおよびマージ部２１ｆとしての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【０１０５】
〔４〕付記
以上の本実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
集積回路を複数の回路に分割した回路毎のテストパターンを、複数の演算処理装置を用いて生成するテストパターン生成装置であって、
各々いずれかの分割した回路のテストパターンの生成を行なう複数の第１の演算処理装置と、
前記複数の第１の演算処理装置によるテストパターン生成を制御し、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を格納する要求値バッファを有する第２の演算処理装置と
を備え、
前記第２の演算処理装置は、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定し、
前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該第１の演算処理装置は当該要求値の設定を抑止する
ことを特徴とするテストパターン生成装置。
【０１０６】
（付記２）
付記１に記載のテストパターン生成装置であって、
前記第１の演算処理装置は、前記分割した回路に含まれる要求値の設定対象となる入力点に要求値を設定する際、設定しようとする要求値が、当該入力点に対して他の第１の演算処理装置が設定した要求値と異なるコンフリクトが発生するか否かを前記第２の演算処理装置に問い合わせ、
前記第２の演算処理装置は、前記第１の演算処理装置からの問い合わせがあった場合、前記要求値バッファに格納された要求値に基づいて当該問い合わせに係る判定を実行する
ことを特徴とするテストパターン生成装置。
【０１０７】
（付記３）
付記２に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、前記第１の演算処理装置からの前記コンフリクトの有無の問い合わせがあった場合、
前記第１の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生しない場合、当該問い合わせに係る要求値を、前記要求値バッファに格納された対応する要求値に反映させると共に、当該問い合わせの結果としてコンフリクトが発生しない旨を前記第１の演算処理装置に応答し、
前記第１の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生する場合、当該問い合わせの結果としてコンフリクトが発生する旨を前記第１の演算処理装置に応答する
ことを特徴とするテストパターン生成装置。
【０１０８】
（付記４）
付記３に記載のテストパターン生成装置であって、
前記第１の演算処理装置は、前記問い合わせの結果としてコンフリクトが発生しない旨を受信すると、前記問い合わせに係る要求値の設定を行なう
ことを特徴とするテストパターン生成装置。
【０１０９】
（付記５）
付記３または付記４に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、前記コンフリクトが発生しない場合、前記問い合わせの結果としてコンフリクトが発生しない旨を前記第１の演算処理装置に応答すると共に、前記要求値バッファに格納されている前記入力点毎の要求値を前記第１の演算処理装置に応答し、
前記第１の演算処理装置は、前記要求値バッファに格納されている前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、次の要求値の設定を行なう
ことを特徴とするテストパターン生成装置。
【０１１０】
（付記６）
付記１〜付記５のいずれか一項に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、前記複数の第１の演算処理装置が要求値の設定を終了すると、前記要求値バッファにおいて要求値が未設定の入力点に対し乱数を付加してから、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を前記複数の第１の演算処理装置に送信し、
前記複数の第１の演算処理装置のそれぞれは、前記第２の演算処理装置から、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、各第１の演算処理装置が担当する前記分割した回路の故障シミュレーションを行ない、当該分割した回路に前記要求値を入力した時の応答値を期待値として取得する
ことを特徴とするテストパターン生成装置。
【０１１１】
（付記７）
付記１〜付記６のいずれか一項に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、出力状態を期待値として観測すべき前記集積回路のスキャンラッチを複数のラッチグループに分割し、分割した各ラッチグループからバックトレースを実行することにより、前記集積回路を、前記複数のラッチグループにそれぞれ対応する前記複数の回路に分割し、分割した前記複数の回路をそれぞれ前記複数の第１の演算処理装置に割り当てる
ことを特徴とするテストパターン生成装置。
【０１１２】
（付記８）
付記７に記載のテストパターン生成装置であって、
前記第２の演算処理装置は、ダブルパルスによるディレイ試験に対応すべく、前記分割した各ラッチグループから少なくとも２ステージ分のバックトレースを実行する
ことを特徴とするテストパターン生成装置。
【０１１３】
（付記９）
集積回路を複数の回路に分割した回路毎のテストパターンを、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第１の演算処理装置と前記複数の第１の演算処理装置によるテストパターン生成を制御する第２の演算処理装置とを用いて生成するテストパターン生成方法であって、
前記第２の演算処理装置は、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定し、
前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該第１の演算処理装置は当該要求値の設定を抑止する
ことを特徴とするテストパターン生成方法。
【０１１４】
（付記１０）
付記９に記載のテストパターン生成方法であって、
前記第１の演算処理装置は、前記分割した回路に含まれる要求値の設定対象となる入力点に要求値を設定する際、設定しようとする要求値が、当該入力点に対して他の第１の演算処理装置が設定した要求値と異なるコンフリクトが発生するか否かを前記第２の演算処理装置に問い合わせ、
前記第２の演算処理装置は、前記第１の演算処理装置からの問い合わせがあった場合、前記要求値バッファに格納された故障設定値に基づいて当該問い合わせに係る判定を実行する
ことを特徴とするテストパターン生成方法。
【０１１５】
（付記１１）
付記１０に記載のテストパターン生成方法であって、
前記第２の演算処理装置は、前記第１の演算処理装置からの前記コンフリクトの有無の問い合わせがあった場合、
前記第１の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生しない場合、当該問い合わせに係る要求値を、前記要求値バッファに格納された対応する要求値に反映させると共に、当該問い合わせの結果としてコンフリクトが発生しない旨を前記第１の演算処理装置に応答し、
前記第１の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生する場合、当該問い合わせの結果としてコンフリクトが発生する旨を前記第１の演算処理装置に応答する
ことを特徴とするテストパターン生成方法。
【０１１６】
（付記１２）
付記１１に記載のテストパターン生成方法であって、
前記第１の演算処理装置は、前記問い合わせの結果としてコンフリクトが発生しない旨を受信すると、前記問い合わせに係る要求値の設定を行なう
ことを特徴とするテストパターン生成方法。
【０１１７】
（付記１３）
付記１１または付記１２に記載のテストパターン生成方法であって、
前記第２の演算処理装置は、前記コンフリクトが発生しない場合、前記問い合わせの結果としてコンフリクトが発生しない旨を前記第１の演算処理装置に応答すると共に、前記要求値バッファに格納されている前記入力点毎の要求値を前記第１の演算処理装置に応答し、
前記第１の演算処理装置は、前記要求値バッファに格納されている前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、次の要求値の設定を行なう
ことを特徴とするテストパターン生成方法。
【０１１８】
（付記１４）
付記９〜付記１３のいずれか一項に記載のテストパターン生成方法であって、
前記第２の演算処理装置は、前記複数の第１の演算処理装置が要求値の設定を終了すると、前記要求値バッファにおいて要求値が未設定の入力点に対し乱数を付加してから、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を前記複数の第１の演算処理装置に送信し、
前記複数の第１の演算処理装置のそれぞれは、前記第２の演算処理装置から、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、各第１の演算処理装置が担当する前記分割した回路の故障シミュレーションを行ない、当該分割した回路に前記要求値を入力した時の応答値を期待値として取得する
ことを特徴とするテストパターン生成方法。
【０１１９】
（付記１５）
付記９〜付記１４のいずれか一項に記載のテストパターン生成方法であって、
前記第２の演算処理装置は、出力状態を期待値として観測すべき前記集積回路のスキャンラッチを複数のラッチグループに分割し、分割した各ラッチグループからバックトレースを実行することにより、前記集積回路を、前記複数のラッチグループにそれぞれ対応する前記複数の回路に分割し、分割した前記複数の回路をそれぞれ前記複数の第１の演算処理装置に割り当てる
ことを特徴とするテストパターン生成方法。
【０１２０】
（付記１６）
付記１５に記載のテストパターン生成方法であって、
前記第２の演算処理装置は、ダブルパルスによるディレイ試験に対応すべく、前記分割した各ラッチグループから少なくとも２ステージ分のバックトレースを実行する
ことを特徴とするテストパターン生成方法。
【０１２１】
（付記１７）
集積回路を複数の回路に分割した回路毎のテストパターンを生成すべく、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第１の演算処理装置の一つ、もしくは、前記複数の第１の演算処理装置によるテストパターン生成を制御する第２の演算処理装置として、コンピュータを機能させるテストパターン生成プログラムであって、
前記第２の演算処理装置として機能するコンピュータに、
各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第１の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する処理を実行させ、
前記第１の演算処理装置として機能するコンピュータに、
前記第１の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第１の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第２の演算処理装置により判定した場合、当該要求値の設定を抑止する処理を実行させる
ことを特徴とするテストパターン生成プログラム。
【０１２２】
（付記１８）
付記１７に記載のテストパターン生成プログラムであって、
前記第１の演算処理装置として機能するコンピュータに、
前記分割した回路に含まれる要求対象となる入力点に要求値を設定する際、設定しようとする要求値が、当該入力点に対して他の第１の演算処理装置が設定した要求値と異なるコンフリクトが発生するか否かを前記第２の演算処理装置に問い合わせる処理を実行させ、
前記第２の演算処理装置として機能するコンピュータに、
前記第１の演算処理装置からの問い合わせがあった場合、前記要求値バッファに格納された要求値に基づいて当該問い合わせに係る判定を実行させる
ことを特徴とするテストパターン生成プログラム。
【０１２３】
（付記１９）
付記１８に記載のテストパターン生成プログラムであって、
前記第２の演算処理装置として機能するコンピュータに、
前記第１の演算処理装置からの前記コンフリクトの有無の問い合わせがあった場合、
前記第１の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生しない場合、当該問い合わせに係る要求値を、前記要求値バッファに格納された対応する要求値に反映させると共に、当該問い合わせの結果としてコンフリクトが発生しない旨を前記第１の演算処理装置に応答し、
前記第１の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生する場合、当該問い合わせの結果としてコンフリクトが発生する旨を前記第１の演算処理装置に応答する、処理を実行させる
ことを特徴とするテストパターン生成プログラム。
【０１２４】
（付記２０）
付記１９に記載のテストパターン生成プログラムであって、
前記第２の演算処理装置として機能するコンピュータに、
前記コンフリクトが発生しない場合、前記問い合わせの結果としてコンフリクトが発生しない旨を前記第１の演算処理装置に応答すると共に、前記要求値バッファに格納されている前記入力点毎の要求値を前記第１の演算処理装置に応答する処理を実行させ、
前記第１の演算処理装置として機能するコンピュータに、
前記要求値バッファに格納されている前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、次の要求値の設定を実行させる
ことを特徴とするテストパターン生成プログラム。
【符号の説明】
【０１２５】
１    テストパターン生成装置
１０，１１０    スレーブコンピュータ（第１の演算処理装置）
１１    処理部（ＣＰＵ）
１１ａ，１１１ａ    ＡＴＰＧ
１１ｂ，１１１ｂ    故障シミュレータ
１２    記憶部
１３    送信部
１４    受信部
１５，１１５    分割回路データベース
２０，１２０    マスタコンピュータ（第２の演算処理装置）
２１    処理部（ＣＰＵ）
２１ａ，１２１ａ    回路分割部
２１ｂ，１２１ｂ    ＡＴＰＧ制御部
２１ｃ，１２１ｃ    故障シミュレータ制御部
２１ｄ，１２１ｄ    マージ部
２１ｅ    判定部
２１ｆ    乱数付加部
２２    記憶部
２２ａ    要求値バッファ
２３    送信部
２４    受信部
２５，１２５    回路データベース
２６，１２６    テストパターンデータベース
【図１】
0005794027.tif 000002
【図２】
0005794027.tif 000003
【図３】
0005794027.tif 000004
【図４】
0005794027.tif 000005
【図５】
0005794027.tif 000006
【図６】
0005794027.tif 000007
【図７】
0005794027.tif 000008
【図８】
0005794027.tif 000009
【図９】
0005794027.tif 000010
【図１０】
0005794027.tif 000011
【図１１】
0005794027.tif 000012