(57)【要約】【課題】複数のプロセッサを同期させる。【解決手段】テストプログラムは複数の処理単位を含む。複数のサイトＣＰＵ１０間で同期処理すべき処理単位を示す同期処理設定データＳ１０が、共有メモリ２２に書き込まれる。複数のサイトＣＰＵ１０が共有メモリ２２にアクセスし、同期処理設定データＳ１０を取得する。ワークステーション１１０からの起動命令Ｓ１２を契機として、複数のサイトＣＰＵ１０がそれぞれテストプログラムの実行を開始する。各サイトＣＰＵ１０は、同期処理すべき処理単位を完了すると、メインプロセッサ２０に処理完了を通知するとともに、プログラムの実行を一時停止する。メインプロセッサ２０が、すべてのサイトＣＰＵ１０から処理完了の通知を受領すると、プログラムの再開命令Ｓ１６を発行する。メインプロセッサ２０からの再開命令Ｓ１６を契機として、複数のサイトＣＰＵ１０がプログラムの次の処理単位を開始する。【選択図】図２
2009289108.tif 000002
【特許請求の範囲】
【請求項１】
外部に接続されるワークステーションと協調動作する試験装置であって、
それぞれが独立して所定のプログラムを実行可能な複数のプロセッサと、
メインプロセッサと、
前記複数のプロセッサおよび前記メインプロセッサからアクセス可能な共有メモリと、
を備え、
前記所定のプログラムに含まれる複数の処理単位のうち、前記複数のプロセッサ間で同期処理すべき処理単位を示すデータを、前記ワークステーションから受け、前記共有メモリに書き込むステップと、
前記複数のプロセッサが前記共有メモリにアクセスし、前記同期処理すべき処理単位を示すデータを取得するステップと、
前記ワークステーションからの起動命令を契機として、前記複数のプロセッサがそれぞれ前記所定のプログラムの実行を開始するステップと、
前記複数のプロセッサがそれぞれ、前記同期処理すべき処理単位を完了すると、前記メインプロセッサに処理完了を通知するとともに、前記プログラムの実行を一時停止するステップと、
前記メインプロセッサが、すべてのプロセッサから処理完了の通知を受領すると、前記複数のプロセッサに対して、前記プログラムの再開命令を発行するステップと、
前記メインプロセッサからの再開命令を契機として、前記複数のプロセッサが前記プログラムの次の処理単位の実行を開始するステップと、
を実行することを特徴とする試験装置。
【請求項２】
前記ワークステーションは、前記複数のプロセッサ間で同期処理すべき処理単位を複数指定し、
前記複数のプロセッサは、同期処理すべき処理単位をひとつ完了するごとに、前記メインプロセッサに処理完了を通知することを特徴とする請求項１に記載の試験装置。
【請求項３】
前記所定のプログラムは、前記試験装置の起動時に実行される自己診断プログラムであることを特徴とする請求項１または２に記載の試験装置。
【請求項４】
請求項１から３のいずれかに記載の試験装置と、
前記試験装置に起動命令を発行するワークステーションと、
を備えることを特徴とする試験システム。
【請求項５】
外部に接続されるワークステーションと協調動作する試験装置の制御方法であって、
前記試験装置は、
それぞれが独立して所定のプログラムを実行可能な複数のプロセッサと、
メインプロセッサと、
前記複数のプロセッサおよび前記メインプロセッサからアクセス可能な共有メモリと、
を備え、当該制御方法は、
前記所定のプログラムに含まれる複数の処理単位のうち、前記複数のプロセッサ間で同期処理すべき処理単位を示すデータを、前記ワークステーションから受け、前記共有メモリに書き込むステップと、
前記複数のプロセッサが前記共有メモリにアクセスし、前記同期処理すべき処理単位を示すデータを取得するステップと、
前記ワークステーションからの起動命令を契機として、前記複数のプロセッサがそれぞれ前記所定のプログラムの実行を開始するステップと、
前記複数のプロセッサがそれぞれ、前記同期処理すべき処理単位を完了すると、前記メインプロセッサに処理完了を通知するとともに、前記プログラムの実行を一時停止するステップと、
前記メインプロセッサが、すべてのプロセッサから処理完了の通知を受領すると、前記複数のプロセッサに対して、前記プログラムの再開命令を発行するステップと、
前記メインプロセッサからの再開命令を契機として、前記複数のプロセッサが前記プログラムの次の処理単位の実行を開始するステップと、
を含むことを特徴とする制御方法。
【請求項６】
前記ワークステーションは、前記複数のプロセッサ間で同期処理すべき処理単位を複数指定し、
前記複数のプロセッサは、同期処理すべき処理単位をひとつ完了するごとに、前記メインプロセッサに処理完了を通知することを特徴とする請求項５に記載の制御方法。
【請求項７】
前記所定のプログラムは、前記試験装置の起動時に実行される自己診断プログラムであることを特徴とする請求項５または６に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体デバイスの試験装置に関する。
【背景技術】
【０００２】
複数の被試験デバイス（ＤＵＴ）を効率的に試験するために、複数のＣＰＵ（Central Processing Unit）が搭載された試験装置が利用される。図１は、複数のＣＰＵ（以下、サイトＣＰＵという）を搭載した自動試験装置（Automatic Test Equipment、以下ＡＴＥと称す）３００の構成を示すブロック図である。試験システム４００は、ＡＴＥ３００とワークステーション３１０を備える。ＡＴＥ３００は、複数のサイトＣＰＵ３０２＿１〜３０２＿ｎを備える。たとえば複数のサイトＣＰＵ３０２＿１〜３０２＿ｎは、複数のテストユニット（不図示）ごとに設けられており、対応するテストユニットを制御し、あるいはテストユニットから得られた試験結果を解析処理する。
【０００３】
複数のサイトＣＰＵ３０２＿１〜３０２＿ｎ（以下、必要に応じてこれらを単にサイトＣＰＵ３０２と総称する）は、それぞれが個別、独立にプログラムを実行可能である。ワークステーション３１０は一般的な構成を有する汎用のコンピュータであり、ＡＴＥ３００を統括的に制御するとともに、ユーザとＡＴＥ３００のインタフェースを提供する。
【０００４】
こうした構成を有する試験システム４００では、プログラムが以下のフローに従って実行される。
１．  ワークステーション３１０は、複数のサイトＣＰＵ３０２に対してプログラム起動命令Ｓ１を発行する。
２．  プログラム起動命令Ｓ１が発行されると、各サイトＣＰＵ３０２は、起動されたプログラムを実行する。
３．  各サイトＣＰＵ３０２は、プログラムが終了すると、ワークステーション３１０に対して終了通知Ｓ２を送信する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
図１の試験システム４００において、複数のサイトＣＰＵ３０２を同期させる場合、以下のような問題が発生する。
【０００６】
たとえばＡＴＥ３００は、その起動直後に自己診断を実行する。この際、複数のサイトＣＰＵ３０２は診断用のプログラムを独自に並列的に実行する。すべてのサイトＣＰＵ３０２が同じプログラムを実行する場合であっても、サイトＣＰＵ３０２ごとに処理速度（処理能力）が異なったり、テストユニットごとに診断プログラム中のループ処理の回数が異なったりすると、サイトＣＰＵ３０２ごとに診断プログラムの進行状況や、処理を終了するタイミングが異なってくる。
【０００７】
この試験システム４００において、複数のサイトＣＰＵ３０２同士で同期をとりながらプログラムを実行させたい場合、同期をとりたい処理単位ごとにプログラムを分割して記述しておき、すべてのサイトＣＰＵ３０２がひとつの処理単位を完了すると、一旦ワークステーション３１０に処理を戻し、続けて次のプログラムを起動させる必要がある。あるいは別の方法としては、同期をとりたいサイトＣＰＵ３０２ごとの終了フラグをプログラム内に組み込んでおき、すべてのフラグがアサートされるまで待機するといったソフトウェア的な処理が必要となる。かかる状況は、試験システム４００のユーザが、プログラムをプログラミングする際の負担を増大させることになる。
【０００８】
本発明はかかる状況に鑑みてなされたものであり、その目的は複数のＣＰＵ間で同期をとりながらプログラムを実行可能な試験システムの提供にある。
【課題を解決するための手段】
【０００９】
本発明のある態様は、外部に接続されるワークステーションと協調動作する試験装置に関する。この試験装置は、それぞれが独立して所定のプログラムを実行可能な複数のプロセッサと、メインプロセッサと、複数のプロセッサおよびメインプロセッサからアクセス可能な共有メモリと、を備える。この試験装置は、以下のステップを実行する。
１．  所定のプログラムに含まれる複数の処理単位のうち、複数のプロセッサ間で同期処理すべき処理単位を示すデータを、ワークステーションから受け、共有メモリに書き込むステップ
２．  複数のプロセッサが共有メモリにアクセスし、同期処理すべき処理単位を示すデータを取得するステップ
３．  ワークステーションからの起動命令を契機として、複数のプロセッサがそれぞれ所定のプログラムの実行を開始するステップ
４．  複数のプロセッサがそれぞれ同期処理すべき処理単位を完了すると、メインプロセッサに処理完了を通知するとともに、プログラムの実行を一時停止するステップ
５．  メインプロセッサが、すべてのプロセッサから処理完了の通知を受領すると、複数のプロセッサに対して、プログラムの再開命令を発行するステップ
６．  メインプロセッサからの再開命令を契機として、複数のプロセッサがプログラムの次の処理単位の実行を開始するステップ
各ステップの実行順序は、処理に支障を来さない範囲で任意に設定される。
【００１０】
「処理単位」とは、関数、メインルーチン、サブルーチン、プロシージャ、スレッド、プログラムモジュールとして把握でき、あるいはこれらの複数の集合体をいう。この態様によると、試験装置のユーザ（単にユーザともいう）がプログラム中で同期処理すべき処理単位（同期処理単位ともいう）を予め定義しておくことにより、すべてのプロセッサが同期処理単位を完了するまで、プログラムの実行を一時的に停止させることができ、同期処理が実現できる。
【００１１】
ワークステーションは、複数のプロセッサ間で同期処理すべき処理単位（同期処理単位）を複数指定してもよい。複数のプロセッサは、同期処理すべき処理単位をひとつ完了するごとに、メインプロセッサに処理完了を通知してもよい。
【００１２】
所定のプログラムは、試験装置の起動時に実行される自己診断プログラムであってもよい。
【００１３】
本発明の別の態様は、試験システムである。この試験システムは、上述のいずれかの態様の試験装置と、試験装置に起動命令を発行するワークステーションと、を備える。
【００１４】
本発明のさらに別の態様は、外部に接続されるワークステーションと協調動作する試験装置の制御方法に関する。試験装置は、それぞれが独立して所定のプログラムを実行可能な複数のプロセッサと、メインプロセッサと、複数のプロセッサおよびメインプロセッサからアクセス可能な共有メモリと、を備える。制御方法は、以下のステップを実行する。
１．  所定のプログラムに含まれる複数の処理単位のうち、複数のプロセッサ間で同期処理すべき処理単位を示すデータを、ワークステーションから受け、共有メモリに書き込むステップ
２．  複数のプロセッサが共有メモリにアクセスし、同期処理すべき処理単位を示すデータを取得するステップ
３．  ワークステーションからの起動命令を契機として、複数のプロセッサがそれぞれ所定のプログラムの実行を開始するステップ
４．  複数のプロセッサがそれぞれ、同期処理すべき処理単位を完了すると、メインプロセッサに処理完了を通知するとともに、プログラムの実行を一時停止するステップ
５．  メインプロセッサが、すべてのプロセッサから処理完了の通知を受領すると、複数のプロセッサに対して、プログラムの再開命令を発行するステップ
６．  メインプロセッサからの再開命令を契機として、複数のプロセッサがプログラムの次の処理単位の実行を開始するステップ
【００１５】
なお、以上の構成要素の任意の組み合わせや、本発明の構成要素や表現を、方法、装置、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１６】
本発明のある態様によれば、複数のプロセッサ間の同期が容易に実現できる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、実施の形態は、発明を限定するものではなく例示であって、実施の形態に記述されるすべての特徴やその組み合わせは、必ずしも発明の本質的なものであるとは限らない。
【００１８】
図２は、実施の形態に係る試験システム２００の構成を示すブロック図である。試験システム２００は、ＡＴＥ１００とワークステーション１１０を備える。
ＡＴＥ１００は、外部に接続されるワークステーション１１０と協調動作する。単一のワークステーション１１０に、複数のＡＴＥ１００が接続されてもよい。ワークステーション１１０は、テストプログラムにもとづいて、ＡＴＥ１００によるＤＵＴ（不図示）の試験シーケンスを制御するとともに、ＡＴＥ１００による試験結果を解析処理する。ワークステーション１１０はＣＰＵ、メモリ、ハードディスクなどを備えた汎用のコンピュータである。
【００１９】
ＡＴＥ１００は、複数のサイトＣＰＵ１０＿１〜１０＿ｎ、メインＣＰＵ２０、共有メモリ２２を備える。その他にＡＴＥ１００は図示しない試験ユニット、タイミング発生器、パターン発生器などを備える。
【００２０】
複数のサイトＣＰＵ１０はそれぞれ、独立して所定のテストプログラムを実行可能に構成される。複数のサイトＣＰＵ１０は、個別のパッケージであってもよいし、マルチコアプロセッサのように単一のパッケージに集積化されていてもよい。
【００２１】
ある態様において、複数のサイトＣＰＵ１０＿１〜１０＿ｎは、たとえば複数のテストユニット（不図示）ごとに設けられており、対応するテストユニットを制御し、あるいはテストユニットから得られた試験結果を解析処理する。
【００２２】
別の態様において、ＡＴＥ１００が複数のＤＵＴを同時並列的に試験する場合、複数のサイトＣＰＵ１０＿１〜１０＿ｎは、ＤＵＴごとに設けられてもよい。各サイトＣＰＵ１０は、テストプログラムにもとづいて対応するＤＵＴを試験してもよい。
【００２３】
さらに別の態様において、ＤＵＴがマルチバンクのメモリである場合には、各サイトＣＰＵ１０は、バンクごとに設けられてもよい。各サイトＣＰＵ１０は、テストプログラムにもとづいて対応するバンクを試験してもよい。
なお複数のサイトＣＰＵ１０の配置や機能はこれらの態様には限定されない。
【００２４】
メインＣＰＵ２０は、ＡＴＥ１００を統合的に制御するためのプロセッサである。共有メモリ２２は、メインＣＰＵ２０からのみでなく、複数のサイトＣＰＵ１０＿１〜１０＿ｎからもアクセス可能に構成される。共有メモリ２２は、メインＣＰＵ２０と別チップとして構成されてもよいし、メインＣＰＵ２０と一体に構成されてもよい。
【００２５】
ワークステーション１１０側の記憶装置、たとえばハードディスク（不図示）には、複数のサイトＣＰＵ１０＿１〜１０＿ｎが実行すべきテストプログラムが格納されている。なおテストプログラムは、ＡＴＥ１００側の記憶装置（不図示）に格納されてもよい。テストプログラムは、複数の処理単位の集合体としてプログラミングされる。処理単位は、関数、メインルーチン、サブルーチン、プロシージャ、スレッド、プログラムモジュールとして把握でき、あるいはこれらの複数の集合体である。
【００２６】
以上がＡＴＥ１００の全体構成である。ＡＴＥ１００およびワークステーション１１０は以下の処理を実行する。
【００２７】
複数のサイトＣＰＵ１０＿1〜１０＿ｎの処理を同期させたい場合がある。たとえばＡＴＥ１００の起動時にＤＵＴの試験の開始に先立ち、各サイトＣＰＵ１０＿１〜１０＿ｎに自己診断プログラムを実行させる際に、サイトＣＰＵ１０＿１〜１０＿ｎの処理を同期させたい状況が生ずる。あるいは複数のＤＵＴを並列的に試験する際に、あるＤＵＴの解析処理に別のＤＵＴの解析結果が必要な場合があるが、この場合にも、同期処理が必要となる。
【００２８】
これらの場合、試験システム２００のユーザは、同期処理すべき処理単位（以下、同期処理単位という）を予め定義しておき、同期処理単位（関数情報）を指定するデータ（以下、同期処理設定データという）Ｓ１０を、ワークステーション１１０に登録しておく。
【００２９】
ワークステーション１１０は、複数のサイトＣＰＵ１０＿１〜１０＿ｎによるテストプログラムの実行開始に先立ち、定義された同期処理単位を示す同期処理設定データＳ１０をＡＴＥ１００の共有メモリ２２に書き込み、同期処理単位をＡＴＥ１００側に登録する。登録される同期処理単位はひとつであってもよいし、複数であってもよい。
【００３０】
複数のサイトＣＰＵ１０＿１〜１０＿ｎは、共有メモリ２２にアクセスして同期処理設定データＳ１０を参照し、同期処理すべき処理単位を識別する。
【００３１】
サイトＣＰＵ１０＿１〜１０＿ｎは、ワークステーション１１０からの起動命令Ｓ１２を契機として、テストプログラムの実行を開始する。
【００３２】
各サイトＣＰＵ１０＿１〜１０＿ｎはそれぞれ、テストプログラムに含まれる処理単位を実行していき、同期処理単位の処理を完了すると、メインプロセッサ２０に処理完了を通知する。同期処理単位の完了は、たとえばプログラム中のリターン文と対応づけることができる。具体的には、各サイトＣＰＵ１０は、同期処理設定データＳ１０により指定される同期処理単位（関数）のリターン文の直前（もしくは直後）のタイミングで、処理完了を通知するデータ（完了通知データという）Ｓ１４をメインＣＰＵ２０に出力する。各サイトＣＰＵ１０は、その状態でプログラムの実行を一時停止する。完了通知データＳ１４は、サイトＣＰＵ１０ごとに設けられたレジスタへのデータ書き込みによって実現してもよい。
【００３３】
メインＣＰＵ２０は、すべてのサイトＣＰＵ１０から処理完了の通知を受領すると、複数のプロセッサに対して、テストプログラムの再開命令Ｓ１６を一斉に発行する。
【００３４】
複数のサイトＣＰＵ１０は、メインプロセッサ２０からの再開命令Ｓ１６を契機として、一時停止状態から解放され、テストプログラムの次の処理単位の実行を開始する。
【００３５】
同期処理設定データＳ１０によって、複数の同期処理単位が指定される場合、複数のプロセッサはそれぞれ、同期処理単位をひとつ完了するごとに、メインプロセッサ２０に処理完了を通知し、処理を一時停止する。
【００３６】
以上がＡＴＥ１００の構成である。以下、ＡＴＥ１００の動作を説明する。図３は、図２のＡＴＥ１００の動作を示すタイムチャートである。
理解を容易とするため、テストプログラムは処理単位に相当する複数の関数ｆｕｎｃ１〜ｆｕｎｃ５を含み、サイトＣＰＵが４個の場合を想定する。関数ｆｕｎｃ１〜ｆｕｎｃ４は各サイトＣＰＵ１０によって順に実行される。また第２関数ｆｕｎｃ２と第４関数ｆｕｎｃ４が、同期処理すべき関数（同期処理単位）として予めユーザによって指定される。この状況において、ＡＴＥ１００は以下の処理を実行する。
【００３７】
ワークステーション１１０は、同期処理すべき関数ｆｕｎｃ２、ｆｕｃｎ４を指定する同期処理設定データＳ１０を共有メモリ２２へと書き込み、関数ｆｕｎｃ２、ｆｕｎｃ４を登録する。
【００３８】
複数のサイトＣＰＵ１０＿１〜１０＿ｎは、共有メモリ２２にアクセスし、同期処理設定データＳ１０を参照する。その結果、各サイトＣＰＵ１０に対して、複数の関数ｆｕｎｃ１〜ｆｕｎｃ５のうち、関数ｆｕｎｃ２、ｆｕｎｃ４を同期すべきであることが通知される。
【００３９】
ワークステーション１１０から起動命令Ｓ１２が出力されると、複数のサイトＣＰＵ１０が、テストプログラムの実行を開始する（時刻ｔ０）。具体的には、各サイトＣＰＵ１〜ＣＰＵ４は、関数ｆｕｎｃ１の処理を開始する。同じ関数を実行した場合であっても、各サイトＣＰＵ１０ごとにループ処理の回数や分岐処理が異なるため、関数を完了するのに要する時間は異なっている。
【００４０】
関数ｆｕｎｃ１は、同期処理すべき関数として登録されていない。各サイトＣＰＵ１０は、関数ｆｕｎｃ１を完了すると、関数ｆｕｃｎ２の処理を開始する。
【００４１】
関数ｆｕｎｃ２は、同期処理設定データＳ１０によって同期処理すべき関数として登録されているため、サイトＣＰＵ１０＿１〜１０＿４はそれぞれ、関数ｆｕｎｃ２の処理を完了すると、完了通知データＳ１４＿１〜Ｓ１４＿４を出力し、処理を一時停止する。
【００４２】
時刻ｔ１に、すべてのサイトＣＰＵ１０＿１〜１０＿４から完了通知データＳ１４が出力されると、メインＣＰＵ２０は再開命令Ｓ１６を発行する。再開命令Ｓ１６を受けると、サイトＣＰＵ１０＿１〜１０＿４は、続く処理単位である関数ｆｕｎｃ３の処理を開始する。
【００４３】
関数ｆｕｎｃ３は、同期処理すべき関数として登録されていないため、各サイトＣＰＵ１０は、関数ｆｕｎｃ３を完了すると、関数ｆｕｃｎ４の処理を開始する。関数ｆｕｎｃ４は、同期処理設定データＳ１０によって同期処理すべき関数として登録されているため、サイトＣＰＵ１０＿１〜１０＿４はそれぞれ、関数ｆｕｎｃ４の処理を完了すると、完了通知データＳ１４＿１〜Ｓ１４＿４を出力し、処理を一時停止する。
【００４４】
時刻ｔ２に、すべてのサイトＣＰＵ１０＿１〜１０＿４から完了通知データＳ１４が出力されると、メインＣＰＵ２０は再開命令Ｓ１６を発行する。再開命令Ｓ１６を受けると、サイトＣＰＵ１０＿１〜１０＿４は、続く処理単位である関数ｆｕｎｃ５の処理を開始する。
【００４５】
すべてのサイトＣＰＵ１０＿１〜１０＿４が、関数ｆｕｃｎ５の処理を完了すると、テストプログラムの処理が完了する。
【００４６】
以上がＡＴＥ１００の動作である。実施の形態に係るＡＴＥ１００によれば、任意の処理単位を柔軟に同期させることができる。また同期処理はＡＴＥ１００のメインＣＰＵ２０および共有メモリ２２によって自動的になされるため、ユーザは同期すべき処理単位を指定するのみでよく、テストプログラムのプログラミングの負担を軽減することができる。
【００４７】
実施の形態にもとづき本発明を説明したが、実施の形態は、本発明の原理、応用を示しているにすぎず、実施の形態には、請求の範囲に規定された本発明の思想を逸脱しない範囲において、多くの変形例や配置の変更が可能である。
【図面の簡単な説明】
【００４８】
【図１】複数のＣＰＵを搭載したＡＴＥの構成を示すブロック図である。
【図２】実施の形態に係る試験システムの構成を示すブロック図である。
【図３】図２のＡＴＥの動作を示すタイムチャートである。
【符号の説明】
【００４９】
１００…ＡＴＥ、１１０…ワークステーション、２００…試験システム、１０…サイトＣＰＵ、２０…メインＣＰＵ、２２…共有メモリ、Ｓ１０…同期処理設定データ、Ｓ１２…起動命令、Ｓ１４…完了通知データ、Ｓ１６…再開命令。
【図１】
2009289108.tif 000003
【図２】
2009289108.tif 000004
【図３】
2009289108.tif 000005