説明

テストパターン生成装置,テストパターン生成方法およびテストパターン生成プログラム

【課題】並列処理に起因するテストパターンの増加を抑止する。
【解決手段】第2の演算処理装置20は、複数の第1の演算処理装置10が要求値の設定対象となる同じ回路素子に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを要求値バッファ22aに格納された要求値に基づいて判定する。そして、第1の演算処理装置10が要求値の設定対象となる入力点に設定しようとする要求値が、他の第1の演算処理装置10が当該入力点に設定する要求値と異なるコンフリクトが発生すると、第2の演算処理装置20が判定した場合、当該第1の演算処理装置10は当該要求値の設定を抑止する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テストパターン生成装置,テストパターン生成方法およびテストパターン生成プログラムに関する。
【背景技術】
【0002】
一般に、集積回路、例えばLSI(Large Scale Integration)の製造工程の最終段階では、製造されたLSIの試験が、テスタにより、所定のテストパターンを用いて行なわれる。一般的なLSIの試験工程の一例を、図11に示すフローチャート(ステップS101〜S113)に従って説明する。LSIを形成されたウエハが取り出されると(Wafer out;ステップS101)、ウエハ上のLSIの試験が、テスタにより、データベース126に格納されたテストパターンを用いて行なわれる(ステップS102)。そして、試験の良否判定(ステップS103)の結果が「否」である場合、当該LSIは廃棄される一方(ステップS104)、試験の良否判定(ステップS103)の結果が「良」である場合、当該LSIを切り出してパッケージングする処理が実行される(ステップS105)。
【0003】
ついで、パッケージング処理を施されたLSIの試験が、テスタにより、データベース126に格納されたテストパターンを用いて行なわれる(ステップS106)。そして、試験の良否判定(ステップS107)の結果が「否」である場合、当該LSIは廃棄される一方(ステップS108)、試験の良否判定(ステップS107)の結果が「良」である場合、パッケージングされたLSIの負荷試験(Burn-in処理)が実行される(ステップS109)。
【0004】
最後に、負荷試験後のLSIの試験が、テスタにより、データベース126に格納されたテストパターンを用いて行なわれる(ステップS110)。そして、試験の良否判定(ステップS111)の結果が「否」である場合、当該LSIは廃棄される一方(ステップS112)、試験の良否判定(ステップS111)の結果が「良」である場合、当該LSIは、次の組み立て工程へ出荷される(ステップS113)。
【0005】
ここで、テストパターンは、LSI等の試験対象回路に入力されるべき入力ステートの集合と、各入力ステートをLSIに入力した際に当該試験対象回路から出力されるべき出力ステートの集合とを含んでいる。
各入力ステートは、試験対象回路で発生しうる故障を検出するために当該試験対象回路の入力点に設定すべき値(以下、要求値という)であり、ATPG(Automatic Test Pattern Generator)により生成される。上記入力点は、例えばデータイン端子(Primary-input)やスキャンラッチ(Scan-input)等である。
【0006】
各出力ステートは、故障シミュレータにおいて上述した各入力ステートを試験対象回路の入力点に与えシミュレーションを行なって得られる、試験対象回路の応答である期待値である。
上述したテストパターンを用いた試験では、試験対象回路の入力点に要求値を設定して当該試験対象回路を動作させ、当該試験対象回路からの応答値が取得される。そして、取得された応答値が上記期待値と一致する場合、試験結果は「良」と判定される一方、取得された応答値が上記期待値と一致しない場合、試験結果は「否」と判定される。このような試験が、図11に示す試験工程では、ステップS102,S106,S110で行なわれる。
【0007】
ところで、近年、LSI等の試験対象回路は大規模化しており、試験対象回路の大規模化は、テストパターンの増加を招き、ひいては試験実行時に使用するメモリ量の増大や試験実行時間の増大を招いている。例えば図11に示す試験工程では、試験が3回実行されるため(ステップS102,S106,S110参照)、テストパターンの増加は、明らかに試験工程時間の増加を意味し、最終的には製造コストの増加に結び付く。
【0008】
また、試験対象回路の大規模化によりテストパターンの生成自体に必要な計算機資源(使用メモリや計算時間)も増大しており、それらの増大を抑制すべく、テストパターンの生成手法に対して改善が求められている。この改善のために、テストパターンを生成する際に取り扱う対象(例えば故障集合や回路)を分割して縮小してから、分割した対象を複数の計算機で並列に処理することが行なわれている。分割を行なってテストパターン生成を行なう代表的な技術としては、分割対象によって、故障分割技術と回路分割技術との2つが挙げられる。
【0009】
故障分割技術では、ネットリストの分割は行なわず故障集合のみを分割した回路モデルが用意され、各回路モデルについて複数の計算機により並列にテストパターンが生成され、各回路モデルについて生成されたテストパターンのマージが行なわれる。
回路分割技術では、ネットリストとネットに属する故障集合との両方を分割した回路モデルが用意され、各回路モデルについて複数の計算機により並列にテストパターンが生成され、各回路モデルについて生成されたテストパターンのマージが行なわれる。
【0010】
分割した回路について複数の計算機により並列にテストパターン生成を行なう技術として、以下のような技術も提案されている。学習等により抽出された固定値信号線(論理の値が固定された固定値信号線)をバックトレースして回路分割を行なうことで、分割した回路間の独立性を高める技術(特許文献1)。スタティックなパターン圧縮の高速化を目的として、適当な判定基準を設けることにより、各計算機で、独立に、ATG(Algorithmic Test Generation)の実行と一時的に蓄積されている部分テストパターン集合の圧縮とを切り替える技術(特許文献2)。
【0011】
上述のように分割した対象を複数の計算機で並列に処理する技術によって、使用メモリ量の増大やテストパターン生成試験実行時間の増大を抑制することは可能である。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開平7−234266号公報
【特許文献2】特開2003−222658号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
しかしながら、並列処理に伴い当該並列処理に関わるオーバヘッドとして生成されるテストパターンが増加する可能性がある。その理由について、以下に説明する。試験対象回路の分割を行なった場合、特別な回路でない限り、分割後の複数の回路は、一部重複し、共通の入力点を有することになる。一方、上述した従来の並列処理によるテストパターン生成技術では、各計算機で行なわれる、各分割回路についてのテストパターン生成過程は、他の計算機から独立している。共通の入力点を有する複数の分割回路について、独立に動作する複数の計算機により並列にテストパターンを生成した場合、コンフリクトが発生する可能性がある。コンフリクト(不一致,衝突)とは、各計算機が要求対象となる同じ入力点に対してそれぞれ異なる要求値を設定してしまう事象である。このように同じ入力点に対し異なる要求値が設定されるコンフリクトの発生した2以上のテストパターンは、マージすることができず、それぞれ異なるテストパターンとして生成される。このため、テストパターンの増加を招くことになる。
【0014】
一つの側面で、本件は、並列処理に起因するテストパターンの増加を抑止することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本件の他の目的の一つとして位置付けることができる。
【課題を解決するための手段】
【0015】
本件のテストパターン生成装置は、集積回路を複数の回路に分割した回路毎のテストパターンを、複数の演算処理装置を用いて生成するもので、複数の第1の演算処理装置と、第2の演算処理装置とを有する。複数の第1の演算処理装置は、各々いずれかの分割した回路のテストパターンの生成を行なう。第2の演算処理装置は、前記複数の第1の演算処理装置によるテストパターン生成を制御し、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を格納する要求値バッファを有している。そして、前記第2の演算処理装置は、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する。また、前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該第1の演算処理装置は当該要求値の設定を抑止する。
【0016】
本件のテストパターン生成方法は、集積回路を複数の回路に分割した回路毎のテストパターンを、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第1の演算処理装置と前記複数の第1の演算処理装置によるテストパターン生成を制御する第2の演算処理装置とを用いて生成する方法である。その方法において、前記第2の演算処理装置は、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する。そして、前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該第1の演算処理装置は当該要求値の設定を抑止する。
【0017】
本件のテストパターン生成プログラムは、集積回路を複数の回路に分割した回路毎のテストパターンを生成すべく、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第1の演算処理装置の一つ、もしくは、前記複数の第1の演算処理装置によるテストパターン生成を制御する第2の演算処理装置として、コンピュータを機能させる。そして、当該プログラムは、前記第2の演算処理装置として機能するコンピュータに、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する処理を実行させる。また、当該プログラムは、前記第1の演算処理装置として機能するコンピュータに、前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該要求値の設定を抑止する処理を実行させる。
【発明の効果】
【0018】
一態様によれば、並列処理に起因するテストパターンの増加が抑止される。
【図面の簡単な説明】
【0019】
【図1】本実施形態のテストパターン生成装置のハードウエア構成および機能構成を示すブロック図である。
【図2】本実施形態の回路分割手法を説明するための図である。
【図3】本実施形態の回路分割手法と同手法により分割された回路の重複領域とを説明するための図である。
【図4】図1に示すテストパターン生成装置の動作を説明するためのフローチャートである。
【図5】図4に示す回路分割処理の手順を説明するためのフローチャートである。
【図6】図4に示す要求値の同期化処理を説明するためのフローチャートである。
【図7】(A)〜(C)は本実施形態のテストパターン生成装置の動作例を従来技術の動作例と比較しながら具体的に説明するための図である。
【図8】本実施形態のスレーブとマスタとの間における要求値の非同期通信について説明するための図である。
【図9】一般的なテストパターン生成装置の機能構成を示すブロック図である。
【図10】図9に示すテストパターン生成装置の動作を説明するためのフローチャートである。
【図11】一般的なLSIの試験工程の例を説明するためのフローチャートである。
【発明を実施するための形態】
【0020】
以下、図面を参照して実施の形態を説明する。
〔1〕一般的なテストパターン生成装置
まず、図9および図10を参照しながら、並列処理によってテストパターンの生成を行なう一般的なテストパターン生成装置100の機能構成および動作について簡単に説明する。なお、図9は一般的なテストパターン生成装置100の機能構成を示すブロック図、図10は、図9に示すテストパターン生成装置100の動作を説明するためのフローチャートである。
【0021】
図9に示す一般的なテストパターン生成装置100は、LSI等の試験対象回路を複数の回路に分割し、分割した回路毎のテストパターンを、複数のコンピュータ110,120を用いて生成する。テストパターン生成装置100は、複数のスレーブコンピュータ(以下、単にスレーブという)110と、一つのマスタコンピュータ(以下、単にマスタという)120とを有している。
【0022】
マスタ120には、回路データベース125およびテストパターンデータベース126が付設されている。回路データベース125は、試験対象回路全体のネットリスト,故障情報などを格納する。テストパターンデータベース126は、後述するマージ部121dによってマージされた試験対象回路全体のテストパターンや、検出故障などを格納する。
また、各スレーブ110には、分割回路データベース115が付設されている。分割回路データベース115は、後述する回路分割部121aによって分割され各スレーブ110に割り当てられた回路のネットリスト,故障情報などを格納する。
【0023】
複数のスレーブ110は、分割された複数の回路をそれぞれ割り当てられ、割り当てられた回路のテストパターンの生成を並列的に行なうもので、各スレーブ110は、ATPG111aおよび故障シミュレータ111bとしての機能を有している。
ATPG111aは、分割回路データベース115の情報に基づいて、分割した回路毎に、当該回路で発生しうる故障を検出するために当該回路の入力点に設定すべき要求値を生成する。ATPG111aは、マスタ120からの開始信号を受けて動作を開始し、図10を参照しながら後述する処理(ステップA21〜A27)を実行する。
【0024】
故障シミュレータ111bは、マスタ120からの開始信号を受けて動作を開始し、ATPG111aで生成された要求値を当該回路の入力点に与えシミュレーションを行なうことにより、当該回路の応答である期待値を得る。
ATPG111aで得られた要求値と、故障シミュレータ111bで得られた期待値とは、当該回路のテストパターンとして各スレーブ110からマスタ120へ送信される。このとき、テストパターンによって検出される故障、つまり検出故障に関する情報も、各スレーブ110からマスタ120へ送信される。
【0025】
マスタ120は、複数のスレーブ110によるテストパターン生成を制御するもので、回路分割部121a,ATPG制御部121b,故障シミュレータ制御部121cおよびマージ部121dとしての機能を有している。
回路分割部121aは、回路データベース125に格納された試験対象回路全体の情報に基づき、試験対象回路を複数の回路に分割する。なお、分割後の複数の回路は、一部重複し、共通の入力点を有する可能性がある。各分割した回路の情報は、当該回路の処理を割り当てられたスレーブ110の分割回路データベース115に格納される。
【0026】
ATPG制御部121bは、各スレーブ110のATPG111aの動作を制御するもので、各スレーブ110のATPG111aに対し要求値の生成開始を指示する。具体的に、ATPG制御部121bは、図10を参照しながら後述する処理(ステップA11〜A14)を実行する。
【0027】
故障シミュレータ制御部121cは、各スレーブ110の故障シミュレータ111bの動作を制御するもので、各スレーブ110の故障シミュレータ111bに対し故障シミュレーションの開始を指示する。具体的に、故障シミュレータ制御部121cは、図10を参照しながら後述する処理(ステップA15,A16)を実行する。
マージ部121dは、各スレーブ110の故障シミュレータ111bから受信した、分割回路についてのテストパターンをマージし、試験対象回路全体のテストパターンを生成しテストパターンデータベース126に保存する。
【0028】
次に、図9に示す一般的なテストパターン生成装置100の動作について、図10に示すフローチャート(ステップA10〜A30)に従って説明する。
まず、マスタ120の回路分割部121aにより、回路データベース125に格納された試験対象回路が、複数の回路に分割される(ステップA10)。分割された回路の情報は、当該回路の処理を割り当てられたスレーブ110の分割回路データベース115に格納される。そして、ATPG制御部121bから、全てのスレーブ110のATPG111aに対し、要求値の生成開始を指示するATPG開始信号が送信される(ステップA11)。
【0029】
各スレーブ110のATPG111aでは、マスタ120からのATPG開始信号を受信すると、要求値の生成が開始され、まず、分割回路の一次故障が選択される(ステップA21の「故障あり」ルート)。そして、選択された一次故障を検出するために分割回路の入力点に設定すべき要求値が生成され(ステップA22)、動的圧縮(Dynamic Compaction)が実行される。動的圧縮では、上記一次故障を検出する要求値設定条件下で、二次故障が選択され(ステップA23の「故障あり」ルート)、選択された二次故障を検出するために分割回路の入力点に設定すべき要求値が生成される(ステップA24)。ステップA23,A24の処理を繰り返すことで、上記一次故障を検出する要求値設定条件下で、二次故障を検出するための要求値が重畳される。重畳すべき二次故障、つまり選択可能な二次故障がなくなると(ステップA23の「故障なし」ルート)、要求値が未設定の入力点に対し乱数を付加する乱数付加処理が実行される(ステップA25)。乱数付加処理後、ATPG111aは、処理を終了し、ATPG終了信号をマスタ120へ送信する(ステップA26)。ステップA21〜A25の処理によって得られた、分割回路についての要求値セットは、故障シミュレータ111bに受け渡される。
【0030】
一方、マスタ120のATPG制御部121bは、ATPG開始信号を送信した後、全てのスレーブ110からATPG終了信号が送信されてくるのを待ち合わせる(ステップA12)。ATPG制御部121bは、全てのスレーブ110からのATPG終了信号を受信すると(ステップA12のYESルート)、処理を終了し、故障シミュレータ制御部121cが起動される。これに伴い、故障シミュレータ制御部121cから、全てのスレーブ110の故障シミュレータ111bに対し、故障シミュレーションの開始を指示する開始信号が送信される(ステップA15)。
【0031】
各スレーブ110の故障シミュレータ111bでは、マスタ120から故障シミュレーションの開始信号を受信すると、故障シミュレーションが開始される。つまり、故障シミュレータ111bは、ATPG111aで生成された要求値を、分割回路の入力点に与え、シミュレーションを行なうことにより、分割回路の応答である期待値を得る(ステップA28)。ATPG111aで得られた要求値と故障シミュレータ111bで得られた期待値とは、分割回路のテストパターンとして各スレーブ110からマスタ120へ送信されるとともに、検出故障に関する情報も、各スレーブ110からマスタ120へ送信される(ステップA29)。テストパターンおよび検出故障の送信後、故障シミュレータ111bは、処理を終了し、故障シミュレーションの終了信号をマスタ120へ送信する(ステップA30)。
【0032】
マスタ120の故障シミュレータ制御部121cは、故障シミュレーションの開始信号を送信した後、全てのスレーブ110から故障シミュレーションの終了信号が送信されてくるのを待ち合わせる(ステップA16)。故障シミュレータ制御部121cは、全てのスレーブ110から故障シミュレーションの終了信号を受信すると(ステップA16のYESルート)、処理を終了し、マージ部121dが起動される。これに伴い、マージ部121dは、各スレーブ110から受信した、各分割回路についてのテストパターンをマージし、試験対象回路全体のテストパターンを生成しテストパターンデータベース126に保存する(ステップA17)。マスタ120は、終了条件を満たすまで(ステップA18でYES判定となるまで)、ステップA11に戻り上述と同様の処理を繰り返す。
【0033】
ここで、図9,図10に示す各スレーブ110のATPG111aによる処理は、各スレーブ110内に閉じた独立な処理であり、マスタ120は、各スレーブ110へのATPG開始信号の送信と各スレーブ110からのATPG終了信号の受信とを行なっているだけである。つまり、各スレーブ110のATPG111aによる処理は、それぞれ独立であり、当該処理の開始から終了までの間に各スレーブ110とマスタ120との通信は一切行なわれない。このため、上述したように、共通の入力点である入力点を有する複数の分割回路について、独立に動作する複数のスレーブ110により並列にテストパターンを生成した場合、コンフリクト(不一致,衝突)が発生する可能性がある。コンフリクトとは、上述した通り、各スレーブ110が要求対象となる同じ入力点に対してそれぞれ異なる要求値を設定してしまう事象である。このように同じ入力点に対し異なる要求値が設定されるコンフリクトの発生した2以上のテストパターンは、マージ部121dによりマージすることができず、それぞれ異なるテストパターンとして生成されるため、テストパターンの増加が発生してしまう。
【0034】
なお、各スレーブ110のATPG111aが分割回路に割り当てられた全ての故障について要求値の生成を行ない選択可能な故障がなくなった場合(ステップA21の「故障なし」ルート)、当該スレーブ110は、以下の動作を行なう。つまり、当該スレーブ110は、マスタ120に完了信号を送信するとともに(ステップA27)、自身の状態を完了として、故障シミュレータ111bによる処理を行なうことなく自身の処理を停止する。また、完了信号を受信したマスタ120は、完了信号を送信してきたスレーブ110を切り離し(ステップA13)、全てのスレーブ110から完了信号が送信されてくるのを待ち合わせる(ステップA14)。マスタ120は、全てのスレーブ110から完了信号を受信すると(ステップA14のYESルート)、自身の状態を完了として、故障シミュレータ制御部121cを起動することなく処理を終了する。
【0035】
各スレーブ110の本来の処理は、分割回路に割り当てられた故障についてのテストパターンを生成することである。したがって、各スレーブ110において処理すべき故障が存在しなくなった場合に、上述した完了動作(ステップA27,A13,A14)を行なって各スレーブ110の処理を直ちに停止することは自然な動作である。しかしながら、処理を停止したスレーブ110では、故障シミュレーションも行なわれなくなるため、停止したスレーブ110に割り当てられた分割回路に関係する期待値が得られなくなる。
【0036】
LSIとしては、期待値に含まれる不定値に対するマスク処理を必要とするBAST(BIST(Built In Self Test) Aided Scan Test)回路を有する試験系をそなえたものがある。このような試験系をそなえたLSIが試験対象回路である場合、上述のごとき完了動作(ステップA27,A13,A14)を行なっていると、並列処理に起因した不定値マスク処理に伴うオーバヘッド、即ちテストパターンの増加が発生してしまう。
【0037】
ここで、BAST回路について簡単に説明する。BAST回路は、テストデータ圧縮のために用いられる技術であり、疑似乱数発生器(LFSR:Linear Feedback Shift Register),シグネチャ生成器(MISR:Multiple Input Signature Register),反転ブロック,不定値マスクブロック,デコーダブロックなどを有している。なお、BAST回路については、例えば電子情報通信学会論文誌 D-1 Vol.J88-D-1 No.6 pp.1012-1022に開示され、MISRについては、例えば特開平8−15382号公報に開示されている。
【0038】
MISRは、LFSRを用いる疑似乱数生成器の一種であり、与えられる入力値に依存して乱数値であるシグネチャが変化する。つまり、テスタ測定においてMISRの入力値としてスキャンアウト値を与えることで、スキャンアウト値に含まれる故障観測の有無に依存してシグネチャが変化する。従って、事前計算により得られた、故障がない場合のシグネチャと、実際のテスタ測定から得られたシグネチャとを比較することにより、長大なスキャンアウト値を直接比較することなく、故障観測の有無を判定することができる。即ち、長大なスキャンアウト値を比較するのではなく、短いシグネチャどうしを比較するだけで故障観測の有無を判定できるので、テストパターンを圧縮することができる。
【0039】
ただし、故障がない場合のシグネチャを事前計算するときに、MISRに入力されるスキャンアウト値に不定値が含まれる場合には、その不定値のマスクを行なう必要がある。なぜならば、MISRは、フリップフロップ(FF)に保持される現在のシグネチャと入力値との排他的論理和をとったものを次のシグネチャとしているため、入力値に不定値が含まれていると、FFに不定値が保持され、サイクルの進行に伴い不定値が拡散され、最終的にシグネチャが期待値を持てなくなる、つまりシグネチャが破壊されるからである。例えば、あるタイムフレームにおいて不定値マスクを行なうためには、不定値マスクを行なう必要のあるスキャンチェーン数分のクロックの印加が必要となり、印加されるクロックが、テストパターンを増加させるオーバヘッドとなる(上記電子情報通信学会論文誌 D-1 Vol.J88-D-1 No.6 pp.1012-1022の表2参照)。
【0040】
〔2〕本実施形態のテストパターン生成装置
上述したように、図9および図10に示すテストパターン生成装置100では、分割回路のテストパターンが、独立に並列動作する複数のスレーブにおけるATPGにより作成された後、マージされている。
これに対し、後述する本実施形態のテストパターン生成装置1(図1参照)では、スレーブを完全独立に動作させるのではなく、ATPGによる要求値の生成処理中にマスタとスレーブとの間で通信を行なって分割回路間で共通の入力点に設定される要求値のコンフリクトを回避する仕組みがそなえられている。
【0041】
この仕組みでは、マスタにおける要求値バッファ22a(図1,図6参照)を用いて複数のスレーブ間で要求値の同期化(同値化)が行なわれる。つまり、各スレーブの要求値は、マスタ(要求値バッファ22a)を介し互いに同期(同値化)される。これにより、複数のスレーブを用いた並列処理でテストパターン生成を行なった場合であっても、系全体としては、単一の演算処理装置でテストパターン生成を行なった場合と同等の回路状態が、要求値バッファ22aを介して維持され、並列処理に伴うテストパターン増加が抑制される。
【0042】
また、後述する本実施形態のテストパターン生成装置1は、MISRを用いるパターン圧縮回路に対応すべく、選択すべき故障がなくなったスレーブにおいて、ATPGによる要求値生成処理をスキップするが、故障シミュレーション処理を実行して期待値を得るように構成される。これにより、不定値のマスク処理に伴うテストパターンの増加が抑制される。
【0043】
〔2−1〕本実施形態のテストパターン生成装置の構成
図1は、本実施形態のテストパターン生成装置1のハードウエア構成および機能構成を示すブロック図である。
図1に示すテストパターン生成装置1は、上述したテストパターン生成装置100と同様、LSI等の試験対象回路を複数の回路に分割し、分割した回路毎のテストパターンを、複数のコンピュータ(演算処理装置)10,20を用いて生成する。テストパターン生成装置1は、複数のスレーブコンピュータ(第1の演算処理装置;以下、単にスレーブという)10と、一つのマスタコンピュータ(第2の演算処理装置;以下、単にマスタという)20とを有している。
【0044】
マスタ20には、回路データベース25およびテストパターンデータベース26が付設されている。回路データベース25は、試験対象回路全体のネットリスト,故障情報などを格納する。テストパターンデータベース26は、後述するマージ部21dによってマージされた試験対象回路全体のテストパターンや、検出故障などを格納する。
また、各スレーブ10には、分割回路データベース15が付設されている。分割回路データベース15は、後述する回路分割部21aによって分割され各スレーブ10に割り当てられた回路のネットリスト,故障情報などを格納する。
【0045】
複数のスレーブ10は、分割された複数の回路をそれぞれ割り当てられ、割り当てられた回路のテストパターンの生成を並列的に行なうもので、各スレーブ10は、処理部(CPU;Central Processing Unit)11,記憶部12,送信部13および受信部14を有している。
処理部11は、テストパターン生成プログラムを含む所定のプログラムを実行することにより、後述するATPG11aおよび故障シミュレータ11bとしての機能を果たす。
【0046】
記憶部12は、上記所定のプログラムや、ATPG11aおよび故障シミュレータ11bの処理に係る各種情報を記憶する。
送信部13は、処理部11によって制御され、マスタ20へ各種情報(要求値,終了信号,完了信号,検出故障,期待値等)を送信する。
受信部14は、マスタ20から各種情報(開始信号,応答値,コンフリクトを抑制された要求値等)を受信し、処理部11に通知する。
【0047】
ATPG11aは、分割回路データベース15の情報に基づいて、分割回路毎に、当該分割回路で発生しうる故障を検出するために当該分割回路の入力点である入力点に設定すべき要求値を生成する。ATPG11aは、マスタ20からの開始信号を受けて動作を開始し、図4および図6を参照しながら後述する処理(ステップS21〜S27およびステップS251〜S254)を実行する。
【0048】
故障シミュレータ11bは、マスタ20からの開始信号を受けて動作を開始し、後述するごとくマスタ20から受信した、コンフリクトを抑制された要求値を当該分割回路の入力点に与えシミュレーションを行なうことにより、当該分割回路の応答である期待値を得る。故障シミュレータ11bで得られた期待値は、各スレーブ10からマスタ20へ送信される。このとき、テストパターンによって検出される故障、つまり検出故障に関する情報も、各スレーブ10からマスタ20へ送信される。
【0049】
マスタ20は、複数のスレーブ10によるテストパターン生成を制御するもので、処理部(CPU)21,記憶部22,送信部23および受信部24を有している。
処理部11は、テストパターン生成プログラムを含む所定のプログラムを実行することにより、後述する回路分割部21a,ATPG制御部21b,故障シミュレータ制御部21c,判定部21d,乱数付加部21eおよびマージ部21fとしての機能を果たす。
【0050】
記憶部22は、上記所定のプログラムや、回路分割部21a,ATPG制御部21b,故障シミュレータ制御部21c,判定部21d,乱数付加部21eおよびマージ部21fの処理に係る各種情報を記憶する。記憶部22には、要求値バッファ22aが含まれている。要求値バッファ22aは、後述するごとく回路分割部21aにより分割した回路に含まれる要求対象となる入力点毎の要求値を格納する。
【0051】
送信部23は、処理部21によって制御され、各スレーブ10へ各種情報(開始信号,応答値,コンフリクトを抑制された要求値等)を送信する。
受信部24は、各スレーブ10から各種情報(要求値,終了信号,完了信号,検出故障,期待値等)を受信し、処理部21に通知する。
【0052】
回路分割部21aは、回路データベース25に格納された試験対象回路全体の情報に基づき、試験対象回路を複数の回路に分割する。なお、複数の分割回路は、一部重複し、共通の入力点を有する可能性がある。各分割回路の情報は、当該分割回路の処理を割り当てられたスレーブ10の分割回路データベース15に格納される。
【0053】
ここで、図2および図3を参照しながら、本実施形態の回路分割部21aによる回路分割手法について説明する。なお、図2は本実施形態の回路分割手法を説明するための図、図3は、本実施形態の回路分割手法と同手法により分割された回路の重複領域とを説明するための図である。また、回路分割部21aによる詳細な回路分割手法については、図5を参照しながら後述する。
【0054】
分割回路は、各分割回路の処理を担当するスレーブ10の回路状態と期待値とが正確に保証されるモデルでなければ、テストパターン生成装置1の全体として、単一の演算処理装置でテストパターン生成を行なった場合と同等の回路状態と期待値とを維持することは困難である。このため、回路分割部21aは、以下のように回路分割を行なっている。
【0055】
図2および図3に示すように、回路分割部21aは、出力状態を期待値として観測すべき試験対象回路の観測点スキャンラッチを、複数のラッチグループに分割し、これらのラッチグループをそれぞれ異なる複数の分割回路(図3の分割回路#1,#2)に所属させる。このとき、複数の分割回路間において重複して存在する観測点スキャンラッチは存在しない。なお、図2は、一つのラッチグループからバックトレースを行なった状態を示しており、図3は、2つのラッチグループからバックトレースを行ない、共通の入力点を有する2つの分割回路を特定した状態を示している。
【0056】
そして、回路分割部21aは、分割した各ラッチグループからバックトレースすることにより、図3に示すように、試験対象回路を、複数のラッチグループにそれぞれ対応する複数の回路に分割し、分割した複数の回路をそれぞれ複数のスレーブ10(図3のスレーブ#1,#2参照)に割り当てる。このように、観測点スキャンラッチ側からバックトレースして回路分割を行なうことで、回路分割時の期待値の正当性が保証される。
【0057】
また、回路分割部21aは、ダブルパルスによるディレイ試験(WDFT:Double pulse Delay Function Test)に対応すべく、分割した各ラッチグループから、データラインおよび制御ラインを一般的なスタティック試験の場合よりも1ステージ分多く、バックトレースする。つまり、回路分割部21aによるバックトレースの深さは、図2に示すように、データラインで2ステージ分(State#1,#2)、クロック,クリア等の制御ラインで3ステージ分(制御ライン#1〜#3)である。
【0058】
なお、バックトレースによって到達した入力点であるスキャンラッチのデータ端子Dinには、図5を参照しながら後述するように、境界処理が施され、常に制御不可能な値(Const-U;Constant-Uncontrollable)に接続される。
また、図3に示すように、一般に任意の観測点スキャンラッチからバックトレースにより回路を分割する場合、共通の入力(図3の重複スキャンイン参照)が、異なる分割回路に重複して登録されることがある。図3に示すような共通入力(重複スキャンイン)に対し、異なる分割回路を担当するスレーブ10毎に異なる要求値が設定されると、つまりコンフリクトが発生すると、テストパタンの増加の原因となる。
【0059】
このような共通入力における要求値のコンフリクトを、要求値の同期化処理によって回避する構成について、以下、図1を参照しながら説明する。
ATPG制御部21bは、各スレーブ10のATPG11aの動作を制御するもので、各スレーブ10のATPG11aに対し、要求値の生成開始を指示するATPG開始信号を、送信部23経由で送信する。具体的に、ATPG制御部21bは、後述する判定部21dと連携し、図4および図6を参照しながら後述する処理(ステップS11〜S15およびS141〜S147)を実行する。
【0060】
故障シミュレータ制御部21cは、各スレーブ10の故障シミュレータ11bの動作を制御するもので、各スレーブ10の故障シミュレータ11bに対し故障シミュレーションの開始を指示する開始信号を、送信部23経由で送信する。具体的に、故障シミュレータ制御部21cは、図4を参照しながら後述する処理(ステップS17,S18)を実行する。
【0061】
判定部21dは、複数のスレーブ10が要求対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを、要求値バッファ22aに格納された要求値に基づいて判定する。
各スレーブ10は、ATPG11aにおいて分割回路に含まれる要求対象となる入力点に要求値を設定する際、コンフリクトが発生するか否かを、送信部13および受信部24を介して、マスタ20の判定部21dに問い合わせる。ここで、コンフリクトとは、各スレーブ10のATPG11aが入力点に設定しようとする要求値が、当該入力点に対して他のスレーブ10が設定した要求値と異なる事象のことである。
【0062】
判定部21dは、スレーブ10から、設定しようとする要求値のコンフリクトの有無の問い合わせがあった場合、要求値バッファ22aに格納された要求値に基づいて当該問い合わせに係る判定を実行する。つまり、判定部21dは、当該問い合わせに係る要求値と要求値バッファ22aに保存された要求値とを照合する。
より具体的に、判定部21dは、要求値バッファ22aにおいて、当該問い合わせに係る要求値を設定される入力点に対応するビットを参照し、当該ビットに保存されている要求値と当該問い合わせに係る要求値とを比較する。
【0063】
そして、判定部21dは、これらの要求値が同じ値である場合や前記対応するビットにまだ要求値が設定されていない場合、コンフリクトが発生していない(コンフリクト無)と判定する。一方、判定部21dは、前記対応するビットに、当該問い合わせに係る要求値と異なる値が設定されている場合、コンフリクトが発生している(コンフリクト有)と判定する。つまり、当該問い合わせに係る要求値が1の時に対応ビットに0が設定されている場合、または、当該問い合わせに係る要求値が0の時に対応ビットに1が設定されている場合、コンフリクトが発生している(コンフリクト有)と判定される。
【0064】
判定部21dは、コンフリクトが発生すると判定した場合、当該問い合わせの結果としてコンフリクトが発生する旨(却下)を、送信部13および受信部24を介して、当該問い合わせを行なったスレーブ10に応答する。却下応答を受信したスレーブ10は、当該要求値の設定を抑止する。
【0065】
判定部21dは、コンフリクトが発生しないと判定した場合、当該問い合わせに係る要求値を、要求値バッファ22aに格納された対応する要求値に反映させる。つまり、当該問い合わせに係る要求値が、対応入力点に設定される要求値として、要求値バッファ22aに追加保存される。また、判定部21dは、当該問い合わせの結果としてコンフリクトが発生しない旨(受理)と、要求値バッファ22aに格納されている入力点毎の要求値とを、送信部13および受信部24を介して、当該問い合わせを行なったスレーブ10に応答する。受理応答を受信したスレーブ10は、問い合わせに係る要求値の設定を行なうとともに、受信した入力点毎の要求値に基づき、次の要求値の設定を行なう。
【0066】
乱数付加部21eは、複数のスレーブ10の全てが要求値の設定を終了すると、要求値バッファ22aにおいて要求値が未設定の入力点に対し乱数を付加する。乱数付加部21eによって乱数を付加された、要求値バッファ22aにおける入力点毎の要求値は、送信部13および受信部24を介して、複数のスレーブ10に送信される。複数のスレーブ10のそれぞれは、マスタ20から、乱数を付加された、要求値バッファ22aにおける入力点毎の要求値を受信すると、受信した入力点毎の要求値に基づき故障シミュレータ11bによる故障シミュレーションを実行させる。このとき、故障シミュレータ11bは、各スレーブ10が担当する分割回路の故障シミュレーションを行ない、当該分割回路に要求値を入力した時の応答値を期待値として取得する。故障シミュレータ11bにより取得された期待値は、当該要求値によって検出される故障、つまり検出故障に関する情報とともに、送信部23および受信部14を介してマスタ20へ送信される。
【0067】
マージ部21fは、各スレーブ10から受信した、分割回路についての期待値をマージする。マージ部21fによってマージされた期待値と、乱数を付加された、要求値バッファ22aにおける入力点毎の要求値とは、試験対象回路全体のテストパターンとして、テストパターンデータベース26に保存される。
【0068】
〔2−2〕本実施形態のテストパターン生成装置の動作
次に、上述のごとく構成されたテストパターン生成装置1の動作について、図4に示すフローチャート(ステップS10〜S30)に従って、図5〜図8を参照しながら説明する。
まず、マスタ20の回路分割部21aにより、回路データベース25に格納された試験対象回路が、図2および図3を参照しながら前述した通り、複数の回路に分割される(ステップS10)。
【0069】
ここで、回路分割部21aによる回路分割処理の詳細な手順について、図5に示すフローチャート(ステップS31〜S35,S341〜S344,S351〜S353)に従って説明する。
回路分割部21aは、回路データベース25から、試験対象回路全体の回路モデルを取り込み(ステップS31)、出力状態を期待値として観測すべき試験対象回路の観測点スキャンラッチを、複数のラッチグループに分割する。各ラッチグループには、分割回路のID=1,2,…,n(nは分割数)のいずれか一つが付与される(ステップS32)。
【0070】
この後、ID=1,2,…,nのラッチグループのそれぞれについて、以下の分割回路トレース処理(ステップS34)が実行されるとともに、以下の分割回路出力処理(ステップS35)が実行される。全てのラッチグループに対し、分割回路トレース処理および分割回路出力処理が実行されると(ステップS33のYESルート)、回路分割部21aは、回路分割処理を終了する。
【0071】
分割回路トレース処理(ステップS34)において、まず、回路分割部21aは、ID=i(i=1,2,…,n)のラッチグループをレベルL=1の開始点集合に設定する初期化処理を行なう(ステップS341)。初期化処理後、レベルL=1,2,3について、以下の処理(ステップS343,S344)が実行される。レベルL=1,2,3に対し、以下の処理(ステップS343,S344)が実行されると(ステップS342のYESルート)、分割回路トレース処理(ステップS34)を終了する。
【0072】
ステップS343において、回路分割部21aは、レベルLの開始点集合からバックトレースを開始する。ただし、L=3の場合、スキャンラッチのデータイン端子Dinからのバックトレースは行なわない。
ステップS344において、回路分割部21aは、レベルLの開始点集合から前段ロジックのスキャンラッチまでの1ステージ分のバックトレースを行なう。そして、回路分割部21aは、バックトレースによって到達したスキャンラッチを、次のレベルL=i+1の開始点集合に設定し、トレース範囲をマークする。
【0073】
分割回路出力処理(ステップS35)において、回路分割部21aは、スキャンアウト属性の調整を行なう(ステップS351)。具体的に、レベルL=1以外のスキャンラッチのスキャンアウト属性が消去される。そして、回路分割部21aは、境界処理を行なう(ステップS352)。つまり、回路分割部21aは、ステップS344でマークされたトレース範囲を参照し、トレースと非トレースとの境界を、常に制御不可能な値(Const-U)に終端させる。この後、回路分割部21aは、ID=iの分割回路モデルを出力し(ステップS353)、ステップS33の処理へ移行する。
【0074】
以上の回路分割処理により、図2および図3に示すように、ダブルパルスによるディレイ試験(WDFT)に対応すべく、分割した各ラッチグループから、データラインで2ステージ分、制御ラインで3ステージ分のバックトレースが行なわれる。そして、分割したラッチグループ毎に、試験対象回路の分割回路が得られる。分割回路の情報は、当該分割回路の処理を割り当てられたスレーブ10の分割回路データベース15に格納される。
この後、マスタ20は、要求値バッファ22aのクリア処理を行なってから(ステップS11)、ATPG制御部21bから、送信部23を介して、全てのスレーブ10のATPG11aに対し、要求値の生成開始を指示するATPG開始信号を送信する(ステップS12)。
【0075】
各スレーブ10のATPG11aでは、受信部14によりマスタ20からのATPG開始信号を受信すると、要求値の生成が開始され、まず、分割回路の一次故障が選択される(ステップS21の「故障あり」ルート)。そして、選択された一次故障を検出するために分割回路の入力点に設定すべき要求値が生成され(ステップS22)、動的圧縮(Dynamic Compaction)が実行される。動的圧縮では、上記一次故障を検出する要求値設定条件下で、二次故障が選択され(ステップS23の「故障あり」ルート)、選択された二次故障を検出するために分割回路の入力点に設定すべき要求値が生成・作成される(ステップS24)。なお、二次故障についての要求値生成に成功した場合、当該要求値生成に成功したことを示すフラグがセットされる。
【0076】
ステップS24で要求値要求が作成されると、スレーブ10とマスタ20との間で要求値の同期化処理(ステップS25およびS14)が実行される。
ここで、図6に示すフローチャート(ステップS141〜S147,S251〜S254)に従って、図4に示す要求値の同期化処理(ステップS14,S25)について説明する。
【0077】
ステップS24で要求値が作成されると、スレーブ10は、分割回路モデルから当該故障の検出に関わる状態を一旦クリアした後、コンフリクトが発生するか否かを、送信部13および受信部24を介して、マスタ20の判定部21dに問い合わせる(ステップS251)。ここで、コンフリクトとは、ステップS24で作成された要求値、つまりスレーブ10のATPG11aが入力点に設定しようとする要求値が、当該入力点に対して他のスレーブ10が設定した要求値と異なる事象のことである。
【0078】
マスタ20は、受信部24により、スレーブ10から、設定しようとする要求値のコンフリクトの有無の問い合わせを受信すると(ステップS141)、判定部21dにより、当該問い合わせに係る要求値と要求値バッファ22aに保存された要求値とを照合する(ステップ142)。このとき、判定部21dは、前述したように、要求値バッファ22aにおいて、当該問い合わせに係る要求値を設定される入力点に対応するビットを参照し、当該ビットに保存されている要求値と当該問い合わせに係る要求値とを比較する。
【0079】
判定部21dによりコンフリクトが発生すると判定された場合(ステップS143のYESルート)、要求値バッファ22aの更新は行なわず、スレーブ10に対する応答値に、コンフリクトが発生する旨(却下)が設定される(ステップS144)。そして、「却下」を設定された応答値が、送信部13および受信部24を介して、当該問い合わせを行なったスレーブ10に送信される(ステップS145)。応答値の送信後、マスタ20の処理は後述するステップS13に戻る。
【0080】
スレーブ10において、受信部24によりマスタ20からの応答値が受信され(ステップS252)、受信した応答値に「却下」が設定されていた場合(ステップS253のNOルート)、スレーブ10(ATPG11a)は、当該要求値の設定を抑止し、ステップS23の処理へ移行する。なお、このとき、スレーブ10は、次回の動的圧縮で同二次故障を、再度、ターゲット(選択対象)にするために、同二次故障についての要求値生成に成功したことを示すフラグがクリアされる。
【0081】
一方、判定部21dによりコンフリクトが発生しないと判定された場合(ステップS143のNOルート)、スレーブ10に対する応答値に、コンフリクトが発生しない旨(受理)と要求値バッファ22aに格納されている入力点毎の要求値とが設定される(ステップS146)。また、当該問い合わせに係る要求値は、要求値バッファ22aに格納された対応する要求値に反映される。つまり、当該問い合わせに係る要求値が、対応入力点に設定される要求値として、要求値バッファ22aに追加保存される(ステップS147)。そして、「受理」、および、要求値バッファ22aに格納されている入力点毎の要求値を設定された応答値が、送信部13および受信部24を介して、当該問い合わせを行なったスレーブ10に送信される(ステップS145)。応答値の送信後、マスタ20の処理は後述するステップS13に戻る。
【0082】
スレーブ10において、受信部24によりマスタ20からの応答値が受信され(ステップS252)、受信した応答値に「受理」が設定されていた場合(ステップS253のYESルート)、スレーブ10(ATPG11a)は、問い合わせに係る要求値の設定を行なう(ステップS254)。つまり、スレーブ10(ATPG11a)は、マスタ20から返信されてきた入力点毎の要求値を用い、分割回路モデルの状態を含意し、ステップS23の処理へ移行する。
【0083】
ATPG11aにおいては、ステップS23〜S25の処理を繰り返すことで、上記一次故障を検出する要求値設定条件下で、二次故障を検出するための要求値が重畳される。重畳すべき二次故障、つまり選択可能な二次故障がなくなると(ステップS23の「故障なし」ルート)、ATPG111aは、処理を終了し、ATPG終了信号をマスタ120へ送信する(ステップS26)。
【0084】
一方、マスタ20において、ATPG制御部21bは、ATPG開始信号を送信した後、全てのスレーブ10からATPG終了信号が送信されてくるのを待ち合わせる(ステップS13)。各スレーブ10からのATPG終了信号を待ち合わせている間、ATPG制御部21bは、各スレーブ10からの問い合わせに応じ要求値の同期化処理(ステップS14)を実行する。
【0085】
そして、ATPG制御部21bは、受信部24により、全てのスレーブ10からのATPG終了信号を受信すると(ステップS13のYESルート)、乱数付加部21eが、要求値バッファ22aにおいて要求値が未設定の入力点に対し乱数を付加する(ステップS16)。乱数付加部21eによって乱数を付加された、要求値バッファ22aにおける入力点毎の要求値、つまりコンフリクトを抑制された要求値は、送信部13および受信部24を介して、全てのスレーブ10に送信される。この後、故障シミュレータ制御部21cが起動され、故障シミュレータ制御部121cから、全てのスレーブ10の故障シミュレータ11bに対し、故障シミュレーションの開始を指示する開始信号が送信される(ステップS17)。
【0086】
各スレーブ10は、マスタ20から、コンフリクトを抑制された要求値と故障シミュレーションの開始信号とを受信すると、故障シミュレーションが開始される。つまり、故障シミュレータ11bは、マスタ20からの、コンフリクトを抑制された要求値を、分割回路の入力点に与え、シミュレーションを行なうことにより、分割回路の応答である期待値を得る(ステップS28)。故障シミュレータ11bにより取得された期待値は、当該要求値によって検出される故障に関する情報とともに、送信部23および受信部14を介してマスタ20へ送信される(ステップS29)。期待値および検出故障の送信後、故障シミュレータ11bは、処理を終了し、故障シミュレーションの終了信号をマスタ20へ送信する(ステップS30)。
【0087】
マスタ20において、故障シミュレータ制御部21cは、故障シミュレーションの開始信号を送信した後、全てのスレーブ10から故障シミュレーションの終了信号が送信されてくるのを待ち合わせる(ステップS18)。故障シミュレータ制御部21cは、全てのスレーブ10から故障シミュレーションの終了信号を受信すると(ステップS18のYESルート)、処理を終了し、マージ部21fが起動される。これに伴い、マージ部21fは、各スレーブ10から受信した、各分割回路についての期待値をマージする。そして、マージ部21fは、マージされた期待値と、乱数を付加された、要求値バッファ22aにおける入力点毎の要求値とを、試験対象回路全体のテストパターンとして、テストパターンデータベース26に保存する(ステップS19)。マスタ20は、終了条件を満たすまで(ステップS20でYES判定となるまで)、ステップS11に戻り上述と同様の処理を繰り返す。
【0088】
なお、各スレーブ10のATPG11aが分割回路に割り当てられた全ての故障について要求値の生成を行ない選択可能な故障がなくなった場合(ステップS21の「故障なし」ルート)、当該スレーブ10は、以下の動作を行なう。つまり、当該スレーブ10は、送信部13および受信部24を介して、マスタ20に完了信号を送信する(ステップS27)。このとき、スレーブ10は、図9や図10に示したテストパターン生成装置100のごとくスレーブ自体の処理を停止させるのではなく、ATPG11aによる処理を停止させるだけで、引き続き故障シミュレーションの開始を待機する。
【0089】
また、完了信号を受信したマスタ20は、図9や図10に示したテストパターン生成装置100のごとくスレーブ10の切り離しは行なわず、全てのスレーブ110から完了信号が送信されてくるのを待ち合わせる(ステップS15)。マスタ20は、全てのスレーブ10から完了信号を受信すると(ステップS15のYESルート)、故障シミュレータ制御部121cを起動し、ステップS17〜S20の処理を実行する。
このような動作により、選択すべき故障がなくなったスレーブ10において、ATPG11aによる要求値生成処理はスキップされるが、故障シミュレーション処理を実行して期待値を得ることができる。
【0090】
次に、図7(A)〜図7(C)を参照し、本実施形態のテストパターン生成装置1の動作例を従来技術の動作例と比較しながら具体的に説明する。
2つのスレーブ10(Slave#1, Slave#2)が、それぞれ、分割された故障集合における故障f11,f21に対し、要求値を生成した場合の具体例を図7(A)に示す。この図7(A)では、例えば、
Slave#1は故障f11に対し要求値A1={***11*0**}を生成し、
Slave#2は故障f21に対し要求値B1={*1*110***}を生成している。
【0091】
なお、「*」は、要求値が未設定のビット(入力点)を示している。
図7(A)に示す状態では、故障f11に対する要求値A1と故障f21に対する要求値B1との間でコンフリクトは発生していない。したがって、この例の場合、要求値A1と要求値B1とをマージした要求値{*1*1100**}をテストパターンとして用いることができるので、テストパターンの増加は発生しない。
【0092】
図7(B)は、図9や図10に示す一般的なテストパターン生成装置100において、Slave#1およびSlave#2がそれぞれ図7(A)に示す要求値A1,B1を生成した状態で、Slave#2が二次故障f22に対する要求値B2を生成した場合を示している。ここで、Slave#2は故障f22に対し要求値B2={******1**}を生成している。
この場合、Slave#1とは完全に独立して並列処理を行なっているSlave#2は、要求値B1に要求値B2を重ね合わせ、要求値B3={*1*1101**}を生成している。このようにSlave#2で生成された要求値B3={*1*1101**}と、他のSlave#1で生成されている要求値A1={***11*0**}との間では、左から7ビット目の要求値が異なっており、コンフリクトが発生している。したがって、これらの要求値A1,B3はマージすることができず、テストパターンの増加が発生する。
【0093】
図7(C)は、本実施形態のテストパターン生成装置1において、Slave#1が図7(A)に示す要求値A1を生成した後にSlave#2が図7(A)に示す要求値B1を生成した状態で、Slave#2が、二次故障f22に対する要求値B4を生成した場合を示している。
このとき、Slave#1が図7(A)に示す要求値A1を生成した時点で、マスタ20の要求値バッファ22aに格納される要求値は、要求値A1と同じ{***11*0**}となっている。この後、Slave#2が図7(A)に示す要求値B1を生成した場合、Slave#2は、要求値B1についてマスタ20に問い合わせを行なう。このとき、上述したように要求値A1と要求値B1との間ではコンフリクトが生じない。したがって、要求値B1には、要求値バッファ22aに格納されている要求値が反映されるとともに、要求値バッファ22aには要求値B1が反映される。つまり、要求値バッファ22aの要求値は{*1*1100**}となり、マスタ20からSlave#2へ返信される要求値も{*1*1100**}となり、要求値の同期化が行なわれる。
【0094】
同期化した要求値{*1*1100**}の条件で、Slave#2が、二次故障f22に対する要求値B4={**1******}を生成すると、同期化した要求値{*1*1100**}に要求値B4={**1******}を追加した要求値B5={*111100**}を生成する。要求値B5についてマスタ20に問い合わせを行なうと、要求値障バッファ22aの要求値{*1*1100**}と要求値B5との間ではコンフリクトが生じない。したがって、要求値バッファ22aの要求値は{*111100**}となり、マスタ20からSlave#2へ返信される要求値も{*111100**}となり、要求値の同期化が行なわれる。
【0095】
上述のようにして、各スレーブ10で生成される要求値は、マスタ20(要求値バッファ22a)を介して同期化(同値化)される。つまり、他のスレーブ10からの要求値を同期化した条件の下で、検出可能な故障に対する要求値が生成されるので、可能な限りコンフリクトを回避しながら要求値の生成を行なうことができ、テストパターンの増加が抑制される。
【0096】
なお、本実施形態のテストパターン生成装置1では、図8に示すように、各スレーブ10からマスタ20への要求値の送信(問い合わせ)に優先順序を設けておらず、要求値の送信は非同期的に行なわれる。このため、マスタ20での要求値の受信、および、要求値バッファ22aへの要求値の設定は早い者順になる(矢印A1,A2参照)。図8は、本実施形態のスレーブ10とマスタ20との間における要求値の非同期通信について説明するための図である。
【0097】
図8では、他のスレーブ10がマスタ20にアクセスし(矢印A1参照)、他のスレーブ10からの要求値が要求値バッファ22aに反映された後に、スレーブ10が要求値の問い合わせをマスタ20に行なっている(矢印A2参照)。スレーブ10からの問い合わせに応じて、当該問い合わせに係る要求値と要求値バッファ22aにおける要求値との照合が行なわれる。照合の結果、コンフリクトが発生する場合、却下を示す応答値がスレーブ10に返送される(矢印A3参照)。一方、コンフリクトが発生しない場合、受理を示すとともに要求値バッファ22aの保存要求値を含む応答値がスレーブ10に返送される(矢印A3参照)。
【0098】
〔2−3〕本実施形態のテストパターン生成装置の効果
このように、本実施形態のテストパターン生成装置1によれば、スレーブ10を完全独立に動作させるのではなく、ATPG11aによる要求値の生成処理中にマスタ20とスレーブ10との間で通信を行なって分割回路間で共通の入力点に設定される要求値のコンフリクトが回避される。
【0099】
より具体的には、マスタ20における要求値バッファ22aを用いて複数のスレーブ10間で要求値の同期化(同値化)が行なわれる。つまり、各スレーブ10の要求値は、要求値バッファ22aを介し互いに同期(同値化)される。これにより、複数のスレーブ10を用いた並列処理でテストパターン生成を行なった場合であっても、系全体としては、単一の演算処理装置でテストパターン生成を行なった場合と同等の回路状態が、要求値バッファ22aに維持され、並列処理に伴うテストパターン増加が抑制される。したがって、テストパターンの増加というオーバヘッドなしに複数の計算機(演算処理装置)を用いることで、計算機1台あたりのメモリ使用量を削減する負荷分散と並列処理による高速なテストパターン生成とが可能となる。
【0100】
また、本実施形態のテストパターン生成装置1は、MISRを用いるパターン圧縮回路に対応すべく、選択すべき故障がなくなったスレーブ10において、ATPG11aによる要求値生成処理をスキップするが、故障シミュレーション処理を実行して期待値を得るように構成される。これにより、不定値のマスク処理に伴うテストパターンの増加が抑制される。
【0101】
さらに、図10のステップA25に示すように一般的なテストパターン生成装置100では各スレーブ110において実行されていた乱数付加処理が、本実施形態のテストパターン生成装置1では、マスタ20の乱数付加部21eにより一元的に実行される(図4のステップS16参照)。これにより、各スレーブ10の負荷を軽減することが可能になる。
【0102】
〔3〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
なお、上述したスレーブ10におけるATPG11aおよび故障シミュレータ11bとしての機能や、上述したマスタ20における回路分割部21a,ATPG制御部21b,故障シミュレータ制御部21c,判定部21d,乱数付加部21eおよびマージ部21fとしての機能の全部もしくは一部は、コンピュータ(CPU,情報処理装置,各種端末を含む)が所定のアプリケーションプログラム(テストパターン生成プログラム)を実行することによって実現される。
【0103】
そのプログラムは、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RWなど),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD−RW,DVD+R,DVD+RWなど),ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【0104】
ここで、コンピュータとは、ハードウエアとOS(オペレーティングシステム)とを含む概念であり、OSの制御の下で動作するハードウエアを意味している。また、OSが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウエアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記テストパターン生成プログラムは、上述のようなコンピュータに、ATPG11a,故障シミュレータ11b,回路分割部21a,ATPG制御部21b,故障シミュレータ制御部21c,判定部21d,乱数付加部21eおよびマージ部21fとしての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくOSによって実現されてもよい。
【0105】
〔4〕付記
以上の本実施形態を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
集積回路を複数の回路に分割した回路毎のテストパターンを、複数の演算処理装置を用いて生成するテストパターン生成装置であって、
各々いずれかの分割した回路のテストパターンの生成を行なう複数の第1の演算処理装置と、
前記複数の第1の演算処理装置によるテストパターン生成を制御し、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を格納する要求値バッファを有する第2の演算処理装置と
を備え、
前記第2の演算処理装置は、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定し、
前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該第1の演算処理装置は当該要求値の設定を抑止する
ことを特徴とするテストパターン生成装置。
【0106】
(付記2)
付記1に記載のテストパターン生成装置であって、
前記第1の演算処理装置は、前記分割した回路に含まれる要求値の設定対象となる入力点に要求値を設定する際、設定しようとする要求値が、当該入力点に対して他の第1の演算処理装置が設定した要求値と異なるコンフリクトが発生するか否かを前記第2の演算処理装置に問い合わせ、
前記第2の演算処理装置は、前記第1の演算処理装置からの問い合わせがあった場合、前記要求値バッファに格納された要求値に基づいて当該問い合わせに係る判定を実行する
ことを特徴とするテストパターン生成装置。
【0107】
(付記3)
付記2に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、前記第1の演算処理装置からの前記コンフリクトの有無の問い合わせがあった場合、
前記第1の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生しない場合、当該問い合わせに係る要求値を、前記要求値バッファに格納された対応する要求値に反映させると共に、当該問い合わせの結果としてコンフリクトが発生しない旨を前記第1の演算処理装置に応答し、
前記第1の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生する場合、当該問い合わせの結果としてコンフリクトが発生する旨を前記第1の演算処理装置に応答する
ことを特徴とするテストパターン生成装置。
【0108】
(付記4)
付記3に記載のテストパターン生成装置であって、
前記第1の演算処理装置は、前記問い合わせの結果としてコンフリクトが発生しない旨を受信すると、前記問い合わせに係る要求値の設定を行なう
ことを特徴とするテストパターン生成装置。
【0109】
(付記5)
付記3または付記4に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、前記コンフリクトが発生しない場合、前記問い合わせの結果としてコンフリクトが発生しない旨を前記第1の演算処理装置に応答すると共に、前記要求値バッファに格納されている前記入力点毎の要求値を前記第1の演算処理装置に応答し、
前記第1の演算処理装置は、前記要求値バッファに格納されている前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、次の要求定値の設定を行なう
ことを特徴とするテストパターン生成装置。
【0110】
(付記6)
付記1〜付記5のいずれか一項に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、前記複数の第1の演算処理装置が要求値の設定を終了すると、前記要求値バッファにおいて要求値が未設定の入力点に対し乱数を付加してから、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を前記複数の第1の演算処理装置に送信し、
前記複数の第1の演算処理装置のそれぞれは、前記第2の演算処理装置から、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、各第1の演算処理装置が担当する前記分割した回路の故障シミュレーションを行ない、当該分割した回路に前記要求値を入力した時の応答値を期待値として取得する
ことを特徴とするテストパターン生成装置。
【0111】
(付記7)
付記1〜付記6のいずれか一項に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、出力状態を期待値として観測すべき前記集積回路のスキャンラッチを複数のラッチグループに分割し、分割した各ラッチグループからバックトレースを実行することにより、前記集積回路を、前記複数のラッチグループにそれぞれ対応する前記複数の回路に分割し、分割した前記複数の回路をそれぞれ前記複数の第1の演算処理装置に割り当てる
ことを特徴とするテストパターン生成装置。
【0112】
(付記8)
付記7に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、ダブルパルスによるディレイ試験に対応すべく、前記分割した各ラッチグループから少なくとも2ステージ分のバックトレースを実行する
ことを特徴とするテストパターン生成装置。
【0113】
(付記9)
集積回路を複数の回路に分割した回路毎のテストパターンを、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第1の演算処理装置と前記複数の第1の演算処理装置によるテストパターン生成を制御する第2の演算処理装置とを用いて生成するテストパターン生成方法であって、
前記第2の演算処理装置は、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定し、
前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該第1の演算処理装置は当該要求値の設定を抑止する
ことを特徴とするテストパターン生成方法。
【0114】
(付記10)
付記9に記載のテストパターン生成方法であって、
前記第1の演算処理装置は、前記分割した回路に含まれる要求値の設定対象となる入力点に要求値を設定する際、設定しようとする要求値が、当該入力点に対して他の第1の演算処理装置が設定した要求値と異なるコンフリクトが発生するか否かを前記第2の演算処理装置に問い合わせ、
前記第2の演算処理装置は、前記第1の演算処理装置からの問い合わせがあった場合、前記要求値バッファに格納された故障設定値に基づいて当該問い合わせに係る判定を実行する
ことを特徴とするテストパターン生成方法。
【0115】
(付記11)
付記10に記載のテストパターン生成方法であって、
前記第2の演算処理装置は、前記第1の演算処理装置からの前記コンフリクトの有無の問い合わせがあった場合、
前記第1の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生しない場合、当該問い合わせに係る要求値を、前記要求値バッファに格納された対応する要求値に反映させると共に、当該問い合わせの結果としてコンフリクトが発生しない旨を前記第1の演算処理装置に応答し、
前記第1の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生する場合、当該問い合わせの結果としてコンフリクトが発生する旨を前記第1の演算処理装置に応答する
ことを特徴とするテストパターン生成方法。
【0116】
(付記12)
付記11に記載のテストパターン生成方法であって、
前記第1の演算処理装置は、前記問い合わせの結果としてコンフリクトが発生しない旨を受信すると、前記問い合わせに係る要求値の設定を行なう
ことを特徴とするテストパターン生成方法。
【0117】
(付記13)
付記11または付記12に記載のテストパターン生成方法であって、
前記第2の演算処理装置は、前記コンフリクトが発生しない場合、前記問い合わせの結果としてコンフリクトが発生しない旨を前記第1の演算処理装置に応答すると共に、前記要求値バッファに格納されている前記入力点毎の要求値を前記第1の演算処理装置に応答し、
前記第1の演算処理装置は、前記要求値バッファに格納されている前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、次の要求値の設定を行なう
ことを特徴とするテストパターン生成方法。
【0118】
(付記14)
付記9〜付記13のいずれか一項に記載のテストパターン生成方法であって、
前記第2の演算処理装置は、前記複数の第1の演算処理装置が要求値の設定を終了すると、前記要求値バッファにおいて要求値が未設定の入力点に対し乱数を付加してから、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を前記複数の第1の演算処理装置に送信し、
前記複数の第1の演算処理装置のそれぞれは、前記第2の演算処理装置から、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、各第1の演算処理装置が担当する前記分割した回路の故障シミュレーションを行ない、当該分割した回路に前記要求値を入力した時の応答値を期待値として取得する
ことを特徴とするテストパターン生成方法。
【0119】
(付記15)
付記9〜付記14のいずれか一項に記載のテストパターン生成方法であって、
前記第2の演算処理装置は、出力状態を期待値として観測すべき前記集積回路のスキャンラッチを複数のラッチグループに分割し、分割した各ラッチグループからバックトレースを実行することにより、前記集積回路を、前記複数のラッチグループにそれぞれ対応する前記複数の回路に分割し、分割した前記複数の回路をそれぞれ前記複数の第1の演算処理装置に割り当てる
ことを特徴とするテストパターン生成方法。
【0120】
(付記16)
付記15に記載のテストパターン生成方法であって、
前記第2の演算処理装置は、ダブルパルスによるディレイ試験に対応すべく、前記分割した各ラッチグループから少なくとも2ステージ分のバックトレースを実行する
ことを特徴とするテストパターン生成方法。
【0121】
(付記17)
集積回路を複数の回路に分割した回路毎のテストパターンを生成すべく、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第1の演算処理装置の一つ、もしくは、前記複数の第1の演算処理装置によるテストパターン生成を制御する第2の演算処理装置として、コンピュータを機能させるテストパターン生成プログラムであって、
前記第2の演算処理装置として機能するコンピュータに、
各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する処理を実行させ、
前記第1の演算処理装置として機能するコンピュータに、
前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該要求値の設定を抑止する処理を実行させる
ことを特徴とするテストパターン生成プログラム。
【0122】
(付記18)
付記17に記載のテストパターン生成プログラムであって、
前記第1の演算処理装置として機能するコンピュータに、
前記分割した回路に含まれる要求対象となる入力点に要求値を設定する際、設定しようとする要求値が、当該入力点に対して他の第1の演算処理装置が設定した要求値と異なるコンフリクトが発生するか否かを前記第2の演算処理装置に問い合わせる処理を実行させ、
前記第2の演算処理装置として機能するコンピュータに、
前記第1の演算処理装置からの問い合わせがあった場合、前記要求値バッファに格納された要求値に基づいて当該問い合わせに係る判定を実行させる
ことを特徴とするテストパターン生成プログラム。
【0123】
(付記19)
付記18に記載のテストパターン生成プログラムであって、
前記第2の演算処理装置として機能するコンピュータに、
前記第1の演算処理装置からの前記コンフリクトの有無の問い合わせがあった場合、
前記第1の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生しない場合、当該問い合わせに係る要求値を、前記要求値バッファに格納された対応する要求値に反映させると共に、当該問い合わせの結果としてコンフリクトが発生しない旨を前記第1の演算処理装置に応答し、
前記第1の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生する場合、当該問い合わせの結果としてコンフリクトが発生する旨を前記第1の演算処理装置に応答する、処理を実行させる
ことを特徴とするテストパターン生成プログラム。
【0124】
(付記20)
付記19に記載のテストパターン生成プログラムであって、
前記第2の演算処理装置として機能するコンピュータに、
前記コンフリクトが発生しない場合、前記問い合わせの結果としてコンフリクトが発生しない旨を前記第1の演算処理装置に応答すると共に、前記要求値バッファに格納されている前記入力点毎の要求値を前記第1の演算処理装置に応答する処理を実行させ、
前記第1の演算処理装置として機能するコンピュータに、
前記要求値バッファに格納されている前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、次の要求値の設定を実行させる
ことを特徴とするテストパターン生成プログラム。
【符号の説明】
【0125】
1 テストパターン生成装置
10,110 スレーブコンピュータ(第1の演算処理装置)
11 処理部(CPU)
11a,111a ATPG
11b,111b 故障シミュレータ
12 記憶部
13 送信部
14 受信部
15,115 分割回路データベース
20,120 マスタコンピュータ(第2の演算処理装置)
21 処理部(CPU)
21a,121a 回路分割部
21b,121b ATPG制御部
21c,121c 故障シミュレータ制御部
21d,121d マージ部
21e 判定部
21f 乱数付加部
22 記憶部
22a 要求値バッファ
23 送信部
24 受信部
25,125 回路データベース
26,126 テストパターンデータベース

【特許請求の範囲】
【請求項1】
集積回路を複数の回路に分割した回路毎のテストパターンを、複数の演算処理装置を用いて生成するテストパターン生成装置であって、
各々いずれかの分割した回路のテストパターンの生成を行なう複数の第1の演算処理装置と、
前記複数の第1の演算処理装置によるテストパターン生成を制御し、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を格納する要求値バッファを有する第2の演算処理装置と
を備え、
前記第2の演算処理装置は、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定し、
前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該第1の演算処理装置は当該要求値の設定を抑止する
ことを特徴とするテストパターン生成装置。
【請求項2】
請求項1に記載のテストパターン生成装置であって、
前記第1の演算処理装置は、前記分割した回路に含まれる要求値の設定対象となる入力点に要求値を設定する際、設定しようとする要求値が、当該入力点に対して他の第1の演算処理装置が設定した要求値と異なるコンフリクトが発生するか否かを前記第2の演算処理装置に問い合わせ、
前記第2の演算処理装置は、前記第1の演算処理装置からの問い合わせがあった場合、前記要求値バッファに格納された要求値に基づいて当該問い合わせに係る判定を実行する
ことを特徴とするテストパターン生成装置。
【請求項3】
請求項2に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、前記第1の演算処理装置からの前記コンフリクトの有無の問い合わせがあった場合、
前記第1の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生しない場合、当該問い合わせに係る要求値を、前記要求値バッファに格納された対応する要求値に反映させると共に、当該問い合わせの結果としてコンフリクトが発生しない旨を前記第1の演算処理装置に応答し、
前記第1の演算処理装置からの問い合わせに係る要求値が、前記要求値バッファに格納された対応する要求値と異なるコンフリクトが発生する場合、当該問い合わせの結果としてコンフリクトが発生する旨を前記第1の演算処理装置に応答する
ことを特徴とするテストパターン生成装置。
【請求項4】
請求項3に記載のテストパターン生成装置であって、
前記第1の演算処理装置は、前記問い合わせの結果としてコンフリクトが発生しない旨を受信すると、前記問い合わせに係る要求値の設定を行なう
ことを特徴とするテストパターン生成装置。
【請求項5】
請求項3または請求項4に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、前記コンフリクトが発生しない場合、前記問い合わせの結果としてコンフリクトが発生しない旨を前記第1の演算処理装置に応答すると共に、前記要求値バッファに格納されている前記入力点毎の要求値を前記第1の演算処理装置に応答し、
前記第1の演算処理装置は、前記要求値バッファに格納されている前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、次の要求定値の設定を行なう
ことを特徴とするテストパターン生成装置。
【請求項6】
請求項1〜請求項5のいずれか一項に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、前記複数の第1の演算処理装置が要求値の設定を終了すると、前記要求値バッファにおいて要求値が未設定の入力点に対し乱数を付加してから、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を前記複数の第1の演算処理装置に送信し、
前記複数の第1の演算処理装置のそれぞれは、前記第2の演算処理装置から、前記乱数を付加された、前記要求値バッファにおける前記入力点毎の要求値を受信すると、受信した前記入力点毎の要求値に基づき、各第1の演算処理装置が担当する前記分割した回路の故障シミュレーションを行ない、当該分割した回路に前記要求値を入力した時の応答値を期待値として取得する
ことを特徴とするテストパターン生成装置。
【請求項7】
請求項1〜請求項6のいずれか一項に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、出力状態を期待値として観測すべき前記集積回路のスキャンラッチを複数のラッチグループに分割し、分割した各ラッチグループからバックトレースを実行することにより、前記集積回路を、前記複数のラッチグループにそれぞれ対応する前記複数の回路に分割し、分割した前記複数の回路をそれぞれ前記複数の第1の演算処理装置に割り当てる
ことを特徴とするテストパターン生成装置。
【請求項8】
請求項7に記載のテストパターン生成装置であって、
前記第2の演算処理装置は、ダブルパルスによるディレイ試験に対応すべく、前記分割した各ラッチグループから少なくとも2ステージ分のバックトレースを実行する
ことを特徴とするテストパターン生成装置。
【請求項9】
集積回路を複数の回路に分割した回路毎のテストパターンを、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第1の演算処理装置と前記複数の第1の演算処理装置によるテストパターン生成を制御する第2の演算処理装置とを用いて生成するテストパターン生成方法であって、
前記第2の演算処理装置は、各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定し、
前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該第1の演算処理装置は当該要求値の設定を抑止する
ことを特徴とするテストパターン生成方法。
【請求項10】
集積回路を複数の回路に分割した回路毎のテストパターンを生成すべく、各々いずれかの分割した回路のテストパターンの生成を行なう複数の第1の演算処理装置の一つ、もしくは、前記複数の第1の演算処理装置によるテストパターン生成を制御する第2の演算処理装置として、コンピュータを機能させるテストパターン生成プログラムであって、
前記第2の演算処理装置として機能するコンピュータに、
各分割した回路に含まれる試験対象回路の故障検出に用いる要求値の設定対象となる入力点毎の要求値を、要求値バッファに格納すると共に、前記複数の第1の演算処理装置が要求値の設定対象となる同じ入力点に対してそれぞれ異なる要求値を設定するコンフリクトが発生するか否かを前記要求値バッファに格納された要求値に基づいて判定する処理を実行させ、
前記第1の演算処理装置として機能するコンピュータに、
前記第1の演算処理装置が要求値の設定対象となる入力点に設定しようとする要求値が他の第1の演算処理装置が当該入力点に設定する要求値と異なるコンフリクトが発生すると前記第2の演算処理装置により判定した場合、当該要求値の設定を抑止する処理を実行させる
ことを特徴とするテストパターン生成プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2013−32963(P2013−32963A)
【公開日】平成25年2月14日(2013.2.14)
【国際特許分類】
【出願番号】特願2011−169010(P2011−169010)
【出願日】平成23年8月2日(2011.8.2)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】