以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係る試験装置10の構成を複数のDUT300とともに示す。本実施形態に係る試験装置10は、少なくとも1つの被試験デバイス(DUT)300を試験する。
試験装置10は、一例として、1つのDUT300を順次試験する。また、試験装置10は、一例として、1つのDUT300を順次連続的に試験してもよいし、1つのDUT300を順次断続的に試験してもよい。
試験装置10は、複数の制御装置18と、複数の試験モジュール20と、接続部24と、システム制御部26と、複数の編集装置28とを備える。試験装置10は、1つの種類のDUT300のみを試験する場合においては、複数の制御装置18に代えて、1つの制御装置18のみを備える構成であってもよい。
複数の制御装置18のそれぞれは、試験プログラムを実行して、対応するDUT300の試験を制御する。複数の制御装置18のそれぞれは、DUT300の種類毎に対応して設けられる。また、複数の制御装置18のそれぞれは、複数のスレッド40を順次実行する。複数の制御装置18のそれぞれは、1つの試験プログラムに対応して1つのスレッド40を実行する。従って、複数の制御装置18のそれぞれは、複数のスレッド40を実行することにより、複数の試験プログラムを順次実行することができる。
複数の試験モジュール20のそれぞれは、例えばテストヘッド内に装着される基板である。複数の試験モジュール20のそれぞれは、複数の試験部32と、インターフェイス部34とを有する。
複数の試験部32のそれぞれは、何れか1つのDUT300における何れかの端子に接続される。複数の試験部32のそれぞれは、DUT300における接続された端子との間で信号を伝送して、当該DUT300を試験する。
また、複数の試験部32のそれぞれは、何れか1つの制御装置18の何れか1つのスレッド40に割り当てられている。当該割り当ては、スレッド40が順次実行されるのに伴い、順次変更される。複数の試験部32のそれぞれは、割り当てられたスレッド40によって対応する試験を実行する。そして、複数の試験部32のそれぞれは、割り当てられた制御装置18に対応するDUT300に接続されている。即ち、複数の試験部32のそれぞれは、割り当てられている制御装置18のスレッド40に対応する試験プログラムによって制御され、割り当てられている制御装置18に対応するDUT300との間で信号を伝送して、当該DUT300を試験する。
なお、1つの試験モジュール20内の複数の試験部32は、第1のDUT300に接続される試験部32と、第2のDUT300に接続される試験部32とを含んでよく、他のDUT300に接続される試験部32を更に含んでもよい。また、複数のDUT300のそれぞれは、互いに異なる試験モジュール20に接続されてもよい。
インターフェイス部34は、対応する制御装置18から送信されたコマンドを受信する。そして、インターフェイス部34は、当該コマンドを送信した制御装置18のスレッド40に割り当てられた試験部32に、受信したコマンドに応じてアクセスをする。より具体的には、インターフェイス部34は、コマンドを受信したことに応じて、当該コマンドにより指定される試験部32の内部レジスタに、当該コマンドに含まれるデータを書き込む。そして、試験部32は、内部レジスタにデータが書き込まれたことに応じて、書き込まれたデータに応じた動作を実行する。
また、インターフェイス部34は、読み出しコマンドを受信した場合には、当該コマンドにより指定される試験部32の内部レジスタからデータを読み出す。そして、インターフェイス部34は、読み出したデータを含むメッセージを、コマンドの送信元となる制御装置18のスレッド40へと送信する。
接続部24は、複数の制御装置18のそれぞれと複数の試験モジュール20のそれぞれとの間を接続する。接続部24は、一例として、複数の制御装置18のそれぞれと複数の試験モジュール20との間の接続を切り替えるスイッチコントローラ等であってよい。
システム制御部26は、複数の制御装置18のそれぞれと接続され、当該試験装置10の全体を制御する。システム制御部26と複数の制御装置18との間は、一例として、汎用または専用の高速シリアルバス等により接続される。
複数の編集装置28のそれぞれは、複数の制御装置18のそれぞれに対応して設けられる。複数の編集装置28のそれぞれは、対応する制御装置18により実行される試験プログラムをユーザに編集させる。複数の編集装置28のそれぞれは、一例として、当該制御装置18により実行される試験プログラムの実行順をユーザに編集させる。
ここで、複数の制御装置18は、DUT300を試験するための複数の試験プログラムを順次実行して、複数の試験プログラムのそれぞれに割り当てられた複数の試験部32のそれぞれの動作を順次制御する。より具体的には、複数の制御装置18のそれぞれは、複数のスレッド40を順次実行して、それぞれのスレッド40において対応する1つの試験プログラムを実行する。そして、このような制御装置18により制御される複数の試験部32は、DUT300との間で並列に信号を伝送して、DUT300を試験する。
また、この場合において、複数の制御装置18のそれぞれは、それぞれが互いに独立した試験をする複数の試験プログラムを順次実行する。即ち、複数の制御装置18のそれぞれは、互いに依存関係の無い試験をする複数の試験プログラムを順次実行する。ここで、制御装置18は、ある試験プログラムの一部と、その試験プログラムの次に順次実行されるべき試験プログラムの一部とをオーバーラップさせて、試験プログラムを順次実行する(本明細書においてオーバーラップ試験と称する)。これにより、DUT300に対して複数の試験を実行する場合において、試験時間を短くすることができる。なお、試験モジュール20および制御装置18の間を接続するバスは、複数の試験結果を並行に伝送できないバスであってもよい。
また、複数の制御装置18のそれぞれは、互いに異なるユーザにより管理される試験プログラムを実行可能であり、割り当てられた試験部32の動作を制御する。これにより、試験装置10によれば、複数のユーザのそれぞれに対して、対応する編集装置28を用いて対応する制御装置18により実行される試験プログラムを同時に編集させることができる。
図2は、オーバーラップ試験を実行する場合における、試験装置10内の制御の流れおよび試験装置10とDUT300との間の信号の流れの一例を示す。図2において、信号伝送期間の少なくとも一部が重複する信号の流れを、同一の番号の「タイミング」で示す。なお、図2においてはシステム制御部26、編集装置28およびインターフェイス部34を省略して示す。ユーザは、オーバーラップ試験を実行するために、オーバーラップ試験を実行することができる試験プログラムを準備してよい。当該試験プログラムには、各スレッドの開始条件が設定されてよい。
制御装置18は、複数の試験プログラムに対応する、第1のスレッド40−1、第2のスレッド40−2および第3のスレッド40−3を順次実行する。制御装置18は、試験部32を通じて複数の試験プログラムを順次実行し、DUT300の試験を制御する。
試験モジュール20は、制御装置18により制御され、DUT300と通信してDUT300を試験する。そして、試験モジュール20は、試験プログラム(スレッド40)毎の試験結果を制御装置18に送信する。つまり、試験モジュール20は、制御装置18により制御されて、第1のスレッド40−1を実行して、DUT300のコア42を試験する。次に、試験モジュール20は、制御装置18に制御されて、第2のスレッド40−2および第3のスレッド40−3を順次実行して、DUT300のコア42を順次試験する。さらに、試験モジュール20は、試験プログラム毎の試験結果を制御装置18に送信する。
試験モジュール20は、それぞれ試験プログラム毎の試験結果を格納するメモリとして第1のメモリバンク31−1および第2のメモリバンク31−2を有する。試験部32は、第1のスレッド40−1によりDUT300のコア42を試験して、その試験結果を第1のメモリバンク31−1に格納する(タイミング1)。次に、試験部32は、第2のスレッド40−2によりDUT300のコア42を試験して、その試験結果を第2のメモリバンク31−2に格納する(タイミング2)。試験部32が第2のスレッド40−2によりDUT300を試験し、また、当該試験結果を第2のメモリバンク31−2に格納している間に、試験モジュール20は、第1のメモリバンク31−1に格納されていた第1のスレッド40−1の試験結果を制御装置に送信する(タイミング2)。同様に、試験部32は、第3のスレッド40−3によりDUT300のコア42を試験して、その試験結果を第1のメモリバンク31−1に格納する(タイミング3)。試験部32が第3のスレッド40−3に応じて動作している間に、試験モジュール20は、第2のメモリバンク31−2に格納されていた第2のスレッド40−2の試験結果を制御装置に送信する(タイミング3)。
この例において、試験モジュール20は、DUT300のコア42を試験して、その試験結果を第1のメモリバンク31−1(もしくは第2のメモリバンク31−2)に格納するとともに、第2のメモリバンク31−2(もしくは第1のメモリバンク31−1)に格納されていた直前の試験結果を制御装置に送信する。これにより、制御装置18は、試験開始から試験結果を格納するまでの時間と、直前の試験結果を制御装置に送信してから制御装置18が当該試験結果を処理するまでの時間をオーバーラップさせることができる。したがって、試験時間の短縮が可能となる。
図3は、オーバーラップ試験を実行する場合における、試験プログラムの実行順序の一例を示す。試験装置10は、例えば、第1のスレッド40−1から第3のスレッド40−3を実行して、DUT300に対する第1から第3のテストをそれぞれ実行する。第1のスレッド40−1から第3のスレッド40−3は、同一の試験部32を制御する。
第1から3のテストはそれぞれ、第1のスレッド40−1から第3のスレッド40−3による試験を指す。第1から3のテストはそれぞれ、試験実行期間および結果処理期間を有する。試験実行期間は、試験部32が当該テストのために動作する期間を指し、例えば試験部32のセトリング開始から測定終了までの期間を指す。ここで、セトリングとは、当該テストを実行するための、試験部32の設定を行う動作であってよい。また、セトリング開始とは、当該テストに対応するスレッド40を、制御装置18が実行開始したタイミングを指してもよい。測定とは、試験部32がDUT300からの信号を測定する動作を指してよい。測定終了とは、試験部32からメモリバンク31への試験結果の転送が終了したタイミングを指してよい。また、試験実行期間は、それぞれのテストを開始してから、試験結果をメモリバンク31に格納するまでの期間であってもよい。
結果処理期間は、メモリバンク31が格納した試験結果を制御装置18に転送し始めてから、制御装置18が当該試験結果に対する処理を終了するまでの期間を指す。例えば制御装置18は、受け取った試験結果を演算処理して、演算結果に応じてDUT300をビニングする。ビニングとは、制御装置18が、試験結果に応じて当該DUT300を分類する処理を指す。例えば制御装置18は、試験結果に応じて当該DUT300の性能のグレード分けを行う。
例えば、試験モジュール20は、第1のテストにおける結果処理期間の少なくとも一部と、次の第2のテストにおける試験実行期間の一部が重なるように、第2のテストを開始する。つまり、試験モジュール20および制御装置18は、各テストの試験実行期間内において試験結果を第1のメモリバンク31−1(もしくは第2のメモリバンク31−2)に格納して、次のテストの試験実行期間内に、第1のメモリバンク31−1(もしくは第2のメモリバンク31−2)を通じて直前のテストの試験結果を処理することができる。このようにして、試験モジュール20は、順次実行する試験プログラムに対応する試験結果を、試験プログラム毎に交互に第1のメモリバンク31−1および第2のメモリバンク31−2に格納する。
図3の例では、試験モジュール20は、第1のテストにおいて、時刻t0にセトリングを開始する。そして試験モジュール20は、時刻t1に測定を終了する。すなわち、試験実行期間はt0からt1となる。また、試験モジュール20は、時刻t1にメモリバンク31から制御装置18への試験結果の転送を開始する。制御装置18は、受け取った試験結果に対して演算およびビニング処理を行い、時刻t2に処理を終了する。すなわち、結果処理期間は、t1からt2となる。
試験モジュール20は、第2のテストにおいて、時刻t1からt2の間で、試験実行期間を開始する。本例の試験モジュール20は、時刻t1にセトリングを開始する。そして試験モジュール20は、時刻t3に測定を終了する。すなわち、試験実行期間はt1からt3となる。このような処理により、第1のテストの結果処理期間と、第2のテストの試験実行期間とを並行させることができ、試験期間を短縮することができる。
なお、各テストの結果処理期間の開始と、次のテストの試験実行期間の開始は、必ずしも現在のテストの試験実行期間の終了と同時でなくともよい。例えば、図3に示すように、第3のテストの結果処理期間が始まる前に第2のテストの結果処理期間が終わる範囲であれば、第2のテストの結果処理期間を遅れて開始してもよい。このとき試験モジュール20は、各テストの試験実行期間が連続するように動作することが好ましい。ただし、試験モジュール20の動作は、各テストの試験実行期間が連続する形態に限定されない。前のテストの結果処理期間の少なくとも一部と、次のテストの試験実行期間の一部が重複すれば、重複した分だけ、試験期間を短縮することができる。
このように、試験モジュール20は、第1のメモリバンク31−1を用いた次の試験の実行の開始と並行して、第2のメモリバンク31−2が格納している試験結果の制御装置18への送信を開始することにより、第1のテストの結果処理期間と第2のテストの試験実行期間とをオーバーラップさせることができる。つまり、直前のテストの結果処理期間中の処理と現在のテストの試験実行期間中の処理との少なくとも一部の処理が時間的に並行することにより、オーバーラップ処理が可能となる。
図4は、オーバーラップ試験を実行する場合における、試験プログラムの実行順序の他の例を示す。本例の試験装置10は、3つの試験プログラムを順次実行して、第1から第3のテストを実行する。本例の試験装置10では、各テストにおける試験実行期間の処理として、セトリング処理Sおよび測定処理Mを行う。また、各テストにおける結果処理期間の処理として、転送処理T、演算処理C、判定処理Jおよびビニング処理Bを行う。判定処理Jは、演算処理Cにおける演算処理結果に基づいて、DUT300の良否判定を行う処理であってよい。また、各テストにおいて、2つのスレッド40の試験実行期間を並列に進行させ、同一の試験部32を制御する。
本例では、制御装置18への各試験結果の転送処理Tが重複しないように実行される。例えば、第1のテストにおける一方のスレッド40に対応する試験結果の転送処理Tが終了すると、第1のテストにおける他方のスレッド40に対応する試験結果の転送処理Tが開始される。また、制御装置18は、第1の試験結果に対して第1の結果処理(例えば演算処理C)を実行している間に、他のスレッド40またはテストに対応する第2の試験結果を受け取った場合、第2の試験結果に対する第2の結果処理(例えば演算処理C)を、第1の結果処理と並行して行う。
また、制御装置18は、各テストを、図1から図3において説明したオーバーラップ処理で実行する。この場合、各テストの開始順序と、終了順序とが逆転する場合が考えられる。例えば、図4の第2および第3のテストのように、第2のテストの結果処理期間よりも、第3のテストの試験実行期間および結果処理期間の和が短いと、後から開始したテストの終了が、前に開始したテストの終了よりも早くなる場合がある。
一方、試験プログラムの都合、または、試験装置10の仕様等により、結果処理期間に行う処理のうち、特定の処理については、テストの開始順序通りに行うことが要求される場合がある。しかし、上述した通り、オーバーラップ処理を行うと、特定の処理について、テストの開始順序通りに行うことができない場合がある。
本例の制御装置18は、複数の試験プログラムの実行順序を記録し、結果処理期間に行うべき結果処理のうちの少なくとも一部を、記録した実行順序に応じた順番で実行する。一例として制御装置18は、それぞれの結果処理の最後に実行される最後処理を、対応する試験プログラムの実行順序に応じた順番で実行する。本例の制御装置18は、結果処理期間に行うべき結果処理のうち、最後のビニング処理Bを試験プログラムの実行順序に応じた順番で実行する。制御装置18は、各テストにおいてビニング処理B以外の処理が終了したタイミングで、前のテストに対応するビニング処理Bが終了しているか否かを検出してよい。
制御装置18は、後から開始された試験プログラムの結果処理における最後処理以外の処理(本例では転送処理T、演算処理Cおよび判定処理J)が、前に開始された試験プログラムにおける最後処理よりも早く終了した場合に、前に開始された試験プログラムの最後処理が終了するまで、後から開始された試験プログラムの最後処理の実行を待機する。図4の例では、制御装置18は、第3のテストにおける判定処理Jが終了した時点で第2のテストにおけるビニング処理Bが終了していないので、第3のテストにおけるビニング処理Bの実行を待機させる。そして、第2のテストにおけるビニング処理Bが終了した後に、第3のテストにおけるビニング処理Bを実行させる。
図5は、同一種類の2つのDUT300に対して並列試験を実行する場合における、試験装置10内の制御の流れおよび試験装置10とDUT300との間の信号の流れの一例を示す。なお、図5においてはシステム制御部26、編集装置28およびインターフェイス部34を省略して示す。
前述のオーバーラップ試験は、複数のスレッド40を、同一の試験部32で連続して実行する場合において、試験期間を短縮できる。これに対して、複数のスレッド40を、複数の試験部32で並行して試験してもよい。
例えば、複数のスレッド40のそれぞれが所定の試験項目を実行する場合において、当該試験項目を実行できる試験部32の個数が当該スレッド40の個数以上である場合、試験装置10は、当該複数のスレッド40を、複数の試験部32を用いて並行して実行する。また、当該試験項目を実行できる試験部32の個数が当該スレッド40の個数より少ない場合、試験装置10は、当該複数のスレッド40のうちの少なくとも2つのスレッド40を、上述したオーバーラップ試験で実行する。各スレッド40を、並行試験で実行するか、オーバーラップ試験で実行するかは、ユーザが試験プログラムにおいて設定してよい。また、システム制御部26が、ユーザから与えられる試験プログラム、および、試験装置10が備える試験部32の構成情報に基づいて判断してもよい。この場合、システム制御部26には、試験プログラムにより指定される試験項目を実行するのに必要な試験部32に関する情報が、予め格納されてよい。
以下、並列試験について説明する。本例の試験装置10は、図1から図3に関連して説明した試験装置10と同一の構造を有してよい。図4では、試験装置10の構成のうち、一つの制御装置18、接続部24、第1の試験モジュール20−1および第2の試験モジュール20−2を示す。また、各試験モジュール20におけるインターフェイス部34を省略して示す。制御装置18は、一例として、DUT300の第1のコア42−1および第2のコア42−2を同時に試験する。本例では、制御装置18は、第1のスレッド40−1および第2のスレッド40−2を備える。
第1の試験モジュール20−1は、一例として、第1の試験部32−1および第2の試験部32−2を有する。第2の試験モジュール20−2は、一例として、第3の試験部32−3および第4の試験部32−4を有する。
また、第1の試験部32−1および第3の試験部32−3は、第1のコア42−1に接続されており、第2の試験部32−2および第4の試験部32−4は、第2のコア42−2に接続されている。
このような例において、制御装置18は、第1のスレッド40−1および第2のスレッド40−2を並行して実行する。また、制御装置18は、複数の試験部32のそれぞれをいずれか1つのスレッド40に割り当てる。制御装置18は、各スレッド40の試験項目を実行するのに必要な試験部32を、各スレッド40に割り当てる。このとき制御装置18は、単一の試験モジュール20に含まれる2つの試験部32を、異なるスレッド40に割り当ててよい。また、異なる試験モジュール20に含まれる複数の試験部32を、同一のスレッド40に割り当ててよい。これにより、試験モジュール20のリソースを効率よく使用して、複数のスレッド40を並行して実行することができる。
本例では、制御装置18は、第1の試験部32−1および第3の試験部32−3に第1のスレッド40−1を割り当て、第2の試験部32−2および第4の試験部32−4に第2のスレッド40−2を割り当てる。制御装置18は、第1の試験部32−1から第4の試験部32−4のそれぞれにコマンドを送信して、これらの動作を制御する。
第1の試験モジュール20−1は、第1のスレッド40−1を実行して、第1の試験部32−1を通じて第1のコア42−1を試験する。また、第1の試験モジュール20−1は、第2のスレッド40−2を実行して第2の試験部32−2を通じて第2のコア42−2を試験する。第2の試験モジュール20−2は、第1のスレッド40−1を実行して、第3の試験部32−3を通じて第1のコア42−1を試験する。また、第2の試験モジュール20−2は、第2のスレッド40−2を実行して第4の試験部32−4を通じて第2のコア42−2を試験する。
これにより、制御装置18は、DUT300のコア42−1およびコア42−2を並列に試験するための2つのスレッド40を並列に実行して、2つのスレッド40のそれぞれに対応する複数の試験部32のそれぞれの動作を並列に制御することができる。そして、第1の試験モジュール20−1および第2の試験モジュール20−2は、第1のコア42−1および第2のコア42−2を並列に試験することができる。
なお、並列試験において、オーバーラップ試験を合わせて実行することもできる。例えば、第1の試験部32−1は、第1のスレッド40−1の後に、第3のスレッド40をオーバーラップして実行する。また、各試験部32には、2つのメモリバンク31が接続されている。オーバーラップ試験を実行しない試験部32は、予め定められたメモリバンク31に試験結果を格納する。
第1の試験部32−1は、第1のスレッド40−1によりDUT300の第1のコア42−1を試験する。第1の試験部32−1は、その試験結果を第1のメモリバンク31−1に格納する。オーバーラップ試験を実行する場合、次に、第1の試験部32−1は、第3のスレッド40によりDUT300のコア42を試験して、その試験結果を第2のメモリバンク31−2に格納する。第1の試験モジュール20−1は、第2のスレッド40−2によりコア42が試験されて、その試験結果が第2のメモリバンク31−2に格納されるまでの間に、第1のメモリバンク31−1に格納されていた第1のスレッド40−1の試験結果を制御装置18に転送する。
上記の例では、第1の試験部32−1は、2つのスレッド40を順次実行することによりオーバーラップ試験を実行する。しかしながら、第1の試験部32−1は、3以上のスレッド40を順次実行して、オーバーラップ試験を実行してよい。また、複数の試験部32においてオーバーラップ試験を並行に実行してもよい。
このようにして、並列試験およびオーバーラップ試験を実行することができる。すなわち、試験モジュール20は、複数の試験部32に対して同じスレッド40の試験を並列に実行して、かつ、一つの試験部32に対して、複数のスレッド40の試験をオーバーラップして順次実行することができる。
図6は、3種類のDUT300を並列に試験する場合において、1つの試験モジュール20内の複数の試験部32のそれぞれに対する制御装置18への割り当ての一例を示す。1つの試験モジュール20内の複数の試験部32のそれぞれは、互いに異なる制御装置18に割り当てられてもよい。
この場合、1つの試験モジュール20内の複数の試験部32のそれぞれは、複数の種類のDUT300のいずれかに接続される。これにより、複数の制御装置18のそれぞれは、同一の試験モジュール20内の試験部32を、異なるDUT300の試験リソースとして用いることができる。
図7は、本実施形態に係るインターフェイス部34の構成を示す。インターフェイス部34は、割当記憶部62と、入出力部64と、ピンマップテーブル66と、DUTマップテーブル68と、ポインタ記憶部70と、アンド回路72と、アクセス部74とを有する。
割当記憶部62は、当該試験モジュール20が有する複数の試験部32に割り当てられている制御装置18およびスレッド40の組を示す識別情報を記憶する。割当記憶部62には、試験プログラムの実行に先立って、対応する制御装置18により排他的に識別情報が書き込まれる。
入出力部64は、制御装置18から送信されたコマンドを受信する。また、入出力部64は、試験部32から読み出されたデータを含むメッセージを、対応する制御装置18へと送信する。入出力部64は、受信したコマンドのうち、当該試験モジュールが有する試験部32に割り当てられた制御装置18およびスレッド40から送信されたコマンドのみを取得する。
入出力部64は、取得したコマンドに含まれる論理アドレスをピンマップテーブル66に供給する。論理アドレスは、例えばDUT300の端子を特定するアドレスである。また、入出力部64は、取得したコマンドに含まれるサイト番号およびコンテキスト番号をピンマップテーブル66およびDUTマップテーブル68に供給する。サイト番号は、各制御装置18を他の制御装置18から識別する番号であり、コンテキスト番号は、各スレッド40を他のスレッド40から識別する番号である。なお、コマンドの内容および入出力部64の処理の詳細については、図11を参照して更に説明する。
ピンマップテーブル66は、当該試験モジュール20が有する複数の試験部32とDUT300の各端子との接続関係を記憶する。ピンマップテーブル66は、論理アドレスを受け取ったことに応じて、接続関係を参照して、論理アドレスにより特定されるDUT300の端子が接続された1または複数の試験部32を特定する物理アドレスを出力する。
また、ピンマップテーブル66は、制御装置18毎に(即ち、接続されているDUT300の種類毎に)接続関係を記憶しており、コマンドを送信した制御装置18毎に参照する接続関係を切り換えて物理アドレスを出力してもよい。さらに、ピンマップテーブル66は、スレッド40毎に接続関係を記憶し、コマンドを送信したスレッド40毎に参照する接続関係を切り換えて物理アドレスを出力してもよい。なお、ピンマップテーブル66については、図12および図13を参照して更に説明する。
DUTマップテーブル68は、当該試験モジュール20に接続されたDUT300のうち、試験対象となるDUT300の端子が接続された試験部32を特定する物理アドレスを出力する。DUTマップテーブル68は、一例として、試験対象となる一以上のDUT300の一以上の端子を特定する物理アドレス(DUTマップと称する)の複数の候補を記憶する。DUTマップテーブル68が記憶するDUTマップの複数の候補のそれぞれは、サイト番号およびコンテキスト番号の組に対応する。そして、DUTマップテーブル68は、複数の候補のうち入出力部64が取得したコマンドに含まれるサイト番号およびコンテキスト番号の組に対応したDUTマップを出力する。より具体的には、DUTマップテーブル68は、試験対象となるDUT300が接続された試験部32を特定する物理アドレスの候補を複数個記憶して、ポインタ記憶部70に記憶されたポインタにより指定された物理アドレスを出力する。なお、DUTマップテーブル68については、図14を参照して更に説明する。
ポインタ記憶部70は、DUTマップテーブル68が記憶している複数のDUTマップの候補のうち、出力すべきDUTマップを指定するポインタを記憶する。ポインタ記憶部70は、制御装置18毎に(即ち、接続されているDUT300の種類毎に)ポインタを記憶しており、コマンドを送信した制御装置18毎にポインタを切り換えて出力してもよい。さらに、ポインタ記憶部70は、制御装置18およびスレッド40の組毎にポインタを記憶し、コマンドに含まれるサイト番号およびコンテキスト番号の組に応じて、コマンドを送信した制御装置18およびスレッド40の組毎にポインタを切り換えて出力してもよい。これにより、ポインタ記憶部70は、試験対象となるDUT300の端子を特定するDUTマップを制御装置18及びスレッド40の組毎に切り換えてDUTマップテーブル68から出力させることができる。ポインタ記憶部70は、試験プログラムの実行に先立って、対応する制御装置18によりポインタが書き込まれる。また、ポインタ記憶部70には、サイト番号およびコンテキスト番号の組と、ポインタ(またはDUTマップ)との対応を示す情報が、試験プログラムの実行に先立って、対応する制御装置18から書き込まれる。当該情報は、使用者等により制御装置18に設定されてよい。
アンド回路72は、ピンマップテーブル66から出力された物理アドレスにより指定される1または複数の試験部32のうち、DUTマップテーブル68から出力されたDUTマップにより特定される端子に対応する試験部32のみを特定する物理アドレスを出力する。より具体的には、アンド回路72は、ピンマップテーブル66から出力された物理アドレス(制御対象の端子に接続された試験部32を特定する物理アドレス)とDUTマップテーブル68から出力された物理アドレス(試験対象のDUT300に接続された試験部32を特定する物理アドレス)とのビット毎の論理積を演算する。これにより、アンド回路72は、試験において、DUT300との間で信号を伝送すべき試験部32を示す物理アドレスを出力することができる。また、試験対象となるDUT300を、スレッド40毎に切り替えることができる。そして、アンド回路72は、演算結果を出力アドレスとしてアクセス部74に供給する。なお、アンド回路72の処理の一例については、図15を参照して更に説明する。
アクセス部74は、入出力部64により取得されたコマンドに応じて、アンド回路72から出力された出力アドレスにより特定される試験部32に対してアクセスする。アクセス部74は、一例として、入出力部64が取得したコマンドに含まれるデータを、アンド回路72から出力された出力アドレスにより特定される試験部32の内部レジスタに書き込む。これにより、内部レジスタにデータが書き込まれた試験部32は、書き込まれたデータに応じた動作を実行することができる。
また、入出力部64が取得したコマンドが読み出しコマンドである場合には、更に、アクセス部74は、アンド回路72から出力された出力アドレスにより特定される試験部32に返信する。入出力部64は、取得したコマンドが読み出しコマンドである場合には、アクセス部74から受け取ったデータを含むメッセージを、コマンドを送信した制御装置18へと返信する。
アクセス部74は、入出力部64により取得されたコマンドに応じて、メモリバンク31に対してアクセスする。アクセス部74は、一例として、入出力部64が取得したコマンドに含まれるバンク切り替え信号によりデータを受け取るメモリバンク31を切り替える。これにより、複数のメモリバンク31は、格納データを順次交互に出力することができる。
以上のようにインターフェイス部34は、制御装置18から送信されたコマンドを取得することができる。そして、インターフェイス部34は、取得したコマンドを送信した制御装置18のスレッド40に割り当てられた試験部32に対して、取得したコマンドに応じたアクセスをすることができる。
また、インターフェイス部34は、DUTマップテーブル68、ポインタ記憶部70およびアンド回路72により、受信したコマンドによって試験対象として指定される1または複数の被試験デバイスのうちのサイト番号およびコンテキスト番号の組に対応する1または複数の被試験デバイスを試験する試験部32に対してアクセスすることができる。換言すると、インターフェイス部34は、受信したコマンドによって試験対象として指定される1または複数の被試験デバイスのうちのサイト番号およびコンテキスト番号の組に対応する1または複数の被試験デバイス以外の被試験デバイスへのアクセスをマスクする。インターフェイス部34は、並列試験およびオーバーラップ試験のいずれにおいても上述した動作を行ってよい。
図8は、割当記憶部62が記憶する識別情報の一例を示す。割当記憶部62は、一例として、識別情報を格納する複数のエントリを有する。
複数の制御装置18のそれぞれには、他の制御装置18と識別するためのサイト番号が付けられる。また、各制御装置18において実行される複数のスレッド40のそれぞれには、当該制御装置18内における他のスレッド40と識別するためのコンテキスト番号が付けられる。
識別情報は、制御装置18を識別するためのサイト番号およびスレッド40を識別するためのコンテキスト番号の組により表される。割当記憶部62の各エントリは、このようなサイト番号およびコンテキスト番号の組により表される識別情報を格納する。
各制御装置18は、新たな試験プログラムに対応するスレッド40の実行に先立って、当該制御装置18および当該スレッド40を識別するための識別情報(サイト番号およびコンテキスト番号の組)を、当該スレッド40が制御する試験部32(即ち、リソースとして使用する試験部32)を有する各試験モジュール20の割当記憶部62に書き込む。この場合において、各制御装置18は、対応する割当記憶部62の先頭のエントリから順次にアクセスして空きエントリを探し、最初の空きエントリに対して識別情報を格納する。
さらに、各制御装置18は、対応する割当記憶部62に対して排他的にアクセスして、識別情報を格納する。また、各制御装置18は、試験プログラムに対応するスレッド40の実行を終了した場合、当該制御装置18および当該スレッド40を識別するための識別情報を割当記憶部62のエントリから削除する。これにより、インターフェイス部34は、異なる2以上のスレッド40の間において、同一の試験部32の重複使用を禁止することができる。
図9は、並列試験およびオーバーラップ試験を実行する場合における制御装置18の処理の一例を示す。まず、並列処理について説明する。本例では、異なる試験部32が複数のスレッド40(#2、#3)を並列に実行する場合について説明する。それぞれのスレッド40は、以下のステップS11からステップS16の処理を実行する。まず、ステップS11において、各スレッド40は、自身のコンテキスト番号を新たに取得する。この場合、各スレッド40は、当該制御装置18内において他のスレッド40とは重複しない番号を取得する。
続いて、ステップS12において、各スレッド40は、アクセスする試験部32(即ち、リソースとして使用する試験部32)を備える試験モジュール20の割当記憶部62に対して、自身の識別情報(サイト番号およびコンテキスト番号の組)を書き込む。この場合において、各スレッド40は、割当記憶部62における先頭から1番目に現れる空きエントリに自身の識別情報を排他的に記憶させる。これにより、各スレッド40は、異なる2以上のスレッド40の間において、同一の試験部32を重複して使用しないように登録することができる。
続いて、ステップS13において、各スレッド40は、試験プログラムを実行する。これにより、複数のスレッド40のそれぞれにおいて試験プログラムが実行されるので、制御装置18は、複数の試験プログラムを並列に実行することができる。
ステップS13の処理が終了すると、ステップS14において、各スレッド40は、アクセスした試験部32を備える試験モジュール20の割当記憶部62から、自身の識別情報を削除する。これにより、各スレッド40は、リソースとして使用していた試験部32を他のスレッド40に開放することができる。
続いて、ステップS15において、各スレッド40は、試験結果を処理する。具体的には、試験モジュール20が、データを制御装置18に転送等する。
続いて、ステップS16において、各スレッド40は、取得しているコンテキスト番号を開放する。各スレッド40は、ステップS15の処理を終えると、並列処理を終了する。以上のように、制御装置18によれば、複数の試験プログラムを並列に実行することができる。
次に、オーバーラップ処理について説明する。本例では、同一の試験部32が異なるスレッド40(#2および#4)を順次実行する場合について、並列処理と異なる部分を説明する。
各スレッド40は、割当記憶部62の空きエントリに自身の識別情報を排他的に記憶させる。ただし、スレッド40(#2)が先にステップS13およびステップS14の処理を実行する。そして、スレッド40(#2)のステップS13およびステップS14の処理終了後に、スレッド40(#4)がステップS13の処理を実行する。例えば、スレッド40(#4)は、スレッド40(#2)のステップS15の処理と並行して、ステップS13の処理を実行する。このようにして、それぞれのスレッド40は、先のスレッド40(#2)の結果処理(S15)の時間と、次のスレッド40(#4)の試験実行(S13)の時間とが、一部重なるように処理を実行する。
図10は、登録ステップおよび登録削除ステップでの割当記憶部62のエントリの一例を示す。図10では、図9のS12の登録ステップにおけるエントリと、スレッド40(#4)のS14の削除ステップにおけるエントリを示す。各スレッド40は、S12のステップにおいて、アクセスする試験部32を備える試験モジュール20の割当記憶部62の各エントリに対して、(サイト番号、コンテキスト番号)の組として、(1、2)、(1、3)および(1、4)を書き込む。また、各スレッド40のS14のステップにおいて、先に書き込まれた(サイト番号、コンテキスト番号)の組は、削除される。
図11は、制御装置18から試験モジュール20へと送信されるコマンドのフォーマットの一例を示す。各制御装置18は、一例として、図11に示されるようなフォーマットのコマンドを生成して各試験モジュール20へと送信する。
コマンドは、一例として、サイト番号、コンテキスト番号、モジュール番号、R/Wフラグ、論理アドレス、データおよびバンク切り替え信号を含む。サイト番号は、当該コマンドを送信した制御装置18を識別するための番号である。コンテキスト番号は、当該コマンドを送信したスレッド40を制御装置18内において識別するための番号である。モジュール番号は、当該コマンドの送信先である試験モジュール20を識別するための番号である。
R/Wフラグは、当該コマンドが書き込みコマンドであるか、読み出しコマンドであるかを識別するフラグである。論理アドレスは、DUT300が有する1または複数の端子の位置を指定する情報であり、当該コマンドにより制御をすべき試験部32を示す。データは、論理アドレスにより指定した端子に接続された試験部32に対して与える命令等の情報である。当該データは、論理アドレスにより指定した端子に接続された試験部32の内部レジスタに書き込まれる。バンク切り替え信号は、メモリバンク31への接続を切り替えるための信号である。制御装置18は、バンク切り替え信号により、メモリバンク31から順次交互に情報を取り出すことができる。
各試験モジュール20の入出力部64は、このようなコマンドを各制御装置18から受信する。入出力部64は、コマンドを受信した場合、受信したコマンドに含まれるモジュール番号が当該入出力部64を有する試験モジュール20のモジュール番号と一致するか否かを判断する。入出力部64は、モジュール番号が一致しなければ、受信したコマンドを破棄する。
入出力部64は、モジュール番号が一致した場合、更に、受信したコマンドに含まれるサイト番号およびコンテキスト番号の組が、割当記憶部62のエントリに記憶されている識別情報(サイト番号およびコンテキスト番号の組)の何れかに一致するか否かを判断する。入出力部64は、サイト番号およびコンテキスト番号の組が一致しなければ、受信したコマンドを破棄する。
そして、入出力部64は、サイト番号およびコンテキスト番号の組が一致すれば、受信したコマンドを取得する。これにより、入出力部64は、当該試験モジュール20が有する何れかの試験部32が割り当てられている制御装置18およびスレッド40からコマンドを受信した場合には、当該コマンドを取得することができる。即ち、入出力部64は、割り当てられていない制御装置18およびスレッド40からコマンドを受信した場合には、当該コマンドを破棄することができる。
入出力部64は、取得したコマンドに含まれる論理アドレス、サイト番号およびコンテキスト番号をピンマップテーブル66に供給する。また、入出力部64は、R/Wフラグをアクセス部74に供給する。また、入出力部64は、取得したコマンドに含まれるサイト番号およびコンテキスト番号をDUTマップテーブル68に供給する。
図12は、試験モジュール20と4つのDUT300との接続例を示す。例えば、図12に示されるように、1つの試験モジュール20に接続されたDUT300の端子のそれぞれには、当該試験モジュール20が有する何れか1つの試験部32に対応するピンが接続される。
また、DUT300の各端子には、論理ピン番号が付けられている。論理アドレスは、1または複数の論理ピン番号を指定するための情報である。
また、試験モジュール20の各試験部32には、それぞれ物理ピン番号が付けられている。物理アドレスは、1または複数の物理ピン番号を指定するための情報である。
ピンマップテーブル66は、このような当該試験モジュール20が有する複数の試験部32と、各DUT300の端子のそれぞれとの接続関係を記憶する。例えば、図12のように、8個の端子を有する4つのDUT300を同時に試験する場合の例においては、ピンマップテーブル66は、DUT300の1番目の端子(論理ピン番号=1)に当該試験モジュール20の1番目、9番目、17番目および25番目のピン(物理ピン番号=1、9、17、25)が接続されていることを記憶する。また、例えば、ピンマップテーブル66は、DUT300の2番目の端子(論理ピン番号=2)に当該試験モジュール20の2番目、10番目、18番目および26番目のピン(物理ピン番号=2、10、18、26)が接続されていることを記憶する。同様に、ピンマップテーブル66は、DUT300の3番目から8番目についても接続関係を記憶する。
図13は、ピンマップテーブル66による論理アドレスから物理アドレスへの変換の一例を示す。ピンマップテーブル66は、入出力部64から論理アドレスが供給されると、複数の試験部32とDUT300の端子との接続関係を参照して、当該論理アドレスを対応する物理アドレスに変換する。
即ち、ピンマップテーブル66は、論理アドレスを受け取ったことに応じて、論理アドレスにより特定されるDUT300の端子が接続された、1または複数の試験部32を特定する物理アドレスを出力する。これにより、ピンマップテーブル66は、取得したコマンドによる制御対象の端子に接続された試験部32を特定する物理アドレスを出力することができる。
例えば、ピンマップテーブル66は、図13に示されるように、DUT300の1番目の端子を特定する論理アドレスを受け取ったとする。このような場合、DUTマップテーブル68は、受け取った論理アドレスを、各DUT300における1番目の端子に接続された全ての試験部32を特定する物理アドレスに変換して、出力する。
例えば、図12に示した接続例において、DUT300における1番目の端子を指定する論理アドレスを受け取った場合には、ピンマップテーブル66は、各DUT300における1番目の端子に接続された、当該試験モジュール20の1番目、9番目、17番目および25番目のピン(物理ピン番号=1、9、17、25)を特定する物理アドレスを出力する。
なお、ピンマップテーブル66は、制御装置18毎に(即ち、接続されているDUT300の種類毎に)およびスレッド40毎に、参照する接続関係を切り換えてもよい。即ち、ピンマップテーブル66は、入出力部64から供給されたサイト番号およびコンテキスト番号に応じて、参照する接続関係を切り換えて、物理アドレスを出力してもよい。
図14は、DUTマップテーブル68に記憶された、試験対象のDUT300を特定する物理アドレスの候補の一例を示す。DUTマップテーブル68は、当該試験モジュール20に接続された複数のDUT300のうち、試験対象となる1または複数のDUT300が接続された試験部32を特定する物理アドレスを出力する。
図14の例においては、DUTマップテーブル68は、4個の物理アドレスの候補を記憶している。より具体的には、この場合、DUTマップテーブル68は、4個のDUT300のうちの1番目のDUT300が試験対象となった場合における物理アドレス、2番目のDUT300が試験対象となった場合における物理アドレス、1番目および3番目のDUT300が試験対象となった場合における物理アドレス、および、全てのDUT300が試験対象となった場合における物理アドレスの候補を記憶している。
DUTマップテーブル68は、記憶した複数の候補の物理アドレスのうちポインタ記憶部70に記憶されているポインタにより指定される1つの物理アドレスを、試験対象となるDUT300が接続された試験部32を特定する物理アドレスとして出力する。制御装置18は、試験プログラムの実行に先立って、試験対象とするDUT300を選択し、選択したDUT300を試験対象とするべくポインタ記憶部70にポインタを書き込む。これにより、DUTマップテーブル68は、試験プログラムが試験対象とするDUT300を特定する物理アドレスを出力することができる。
なお、ポインタ記憶部70は、制御装置18毎およびスレッド40毎にポインタを記憶する。そして、ポインタ記憶部70は、入出力部64から供給されたサイト番号およびコンテキスト番号に応じてポインタを切り換えて出力する。これにより、DUTマップテーブル68は、制御装置18毎に(即ち、接続されているDUT300の種類毎に)およびスレッド40毎に、試験対象とするDUT300を切り替えることができる。
図15は、アンド回路72での処理の一例を示す。アンド回路72は、ピンマップテーブル66から出力された物理アドレス(制御対象の端子に接続された試験部32を特定する物理アドレス)とDUTマップテーブル68から出力された物理アドレス(試験対象のDUT300に接続された試験部32を特定する物理アドレス)との、対応するビット毎の論理積を演算する。
例えば、図15に示されるように、8個の端子を有する4つのDUT300を同時に試験する場合において、アンド回路72は、4つのDUT300の全ての1番目の端子を特定する物理アドレスをピンマップテーブル66から受け取ったとする。また、この場合において、アンド回路72は、4つのDUT300のうちの1番目および3番目のDUT300を指定する物理アドレスをDUTマップテーブル68から受け取ったとする。
この場合、アンド回路72は、2つの物理アドレスのビット毎の論理積を演算して、1番目のDUT300の1番目の端子および3番目のDUT300の1番目の端子を指定する出力アドレスを出力する。これにより、アンド回路72は、試験において、DUT300との間で信号を伝送すべき試験部32を示す物理アドレスを、アクセス部74に対して供給することができる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。