(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-28
(45)【発行日】2023-04-05
(54)【発明の名称】試験装置
(51)【国際特許分類】
G01R 31/28 20060101AFI20230329BHJP
G01R 31/26 20200101ALI20230329BHJP
【FI】
G01R31/28 M
G01R31/28 R
G01R31/28 Y
G01R31/26 G
(21)【出願番号】P 2019100390
(22)【出願日】2019-05-29
【審査請求日】2021-10-13
(73)【特許権者】
【識別番号】390005175
【氏名又は名称】株式会社アドバンテスト
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(74)【代理人】
【識別番号】100109047
【氏名又は名称】村田 雄祐
(74)【代理人】
【識別番号】100109081
【氏名又は名称】三木 友由
(74)【代理人】
【識別番号】100133215
【氏名又は名称】真家 大樹
(72)【発明者】
【氏名】豊田 直哉
(72)【発明者】
【氏名】秋田 康樹
【審査官】青木 洋平
(56)【参考文献】
【文献】特開2002-196051(JP,A)
【文献】特開2018-117400(JP,A)
【文献】特開2017-015477(JP,A)
【文献】特開2016-223828(JP,A)
【文献】特開2008-216030(JP,A)
【文献】特開2008-164563(JP,A)
【文献】特開2019-060792(JP,A)
【文献】米国特許出願公開第2020/0393509(US,A1)
【文献】米国特許第6324665(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G01R 31/28
G01R 31/26
(57)【特許請求の範囲】
【請求項1】
被試験デバイス
の電源電圧または電源電流である電気信号を所定のサンプリングレートでデジタル信号に変換するA/Dコンバータと、前記A/Dコンバータにより得られる前記デジタル信号の列である波形データを格納する第1メモリユニットと、を含む波形データ取得モジュールと、
パターンプログラムを実行し、前記被試験デバイス
にテストパターンを供給するとともに、前記テストパターンに応答して前記被試験デバイスから戻ってくる信号を測定する試験ユニット
と、第2メモリユニット
と、を含むファンクション試験モジュールと、
上位コントローラと、
を備え、
前記上位コントローラは、前記波形データ取得モジュールに
対して、前記A/Dコンバータによるサンプリングの開始を指示するとともに、
前記サンプリングの開始を指示した時刻t
1のタイムスタンプを保持し、
前記波形データ取得モジュールは、前記サンプリングの開始の指示に応答して、前記A/Dコンバータが前記サンプリングを実際に開始した時刻t
1
’を、ローカルの時間管理機能を利用して生成し、
前記第1メモリユニットは、前
記時刻t
1’のタイムスタンプを記録し、
前記上位コントローラは、前記ファンクション試験モジュールにパターンプログラムの実行開始を指示するとともに、
前記パターンプログラムの実行開始を指示した時刻t
2のタイムスタンプを保持し、
前記ファンクション試験モジュールは、前記パターンプログラムの実行開始の指示に応答して、前記パターンプログラムを実際に実行開始した時刻t
2
’のタイムスタンプをローカルの時間管理機能を利用して生成し、
前記第2メモリユニットは、前
記時刻t
2’のタイムスタンプを記録
し、
前記上位コントローラは、前記波形データ取得モジュールから前記時刻t
1
’のタイムスタンプおよび前記波形データを取得し、前記ファンクション試験モジュールから、前記時刻t
2
’のタイムスタンプを収集することを特徴とする試験装置。
【請求項2】
前記ファンクション試験モジュールはさらに、前記パターンプログラムに含まれる所定のアドレスの命令の実行時刻t
3
のタイムスタンプをローカルの時間管理機能を利用して生成し、
前記第2メモリユニットは、前記時刻t
2に加えて、前
記実行時刻t
3のタイムスタンプを記録
し、
前記上位コントローラは、前記ファンクション試験モジュールから、前記実行時刻t
3
のタイムスタンプを収集することを特徴とする請求項1に記載の試験装置。
【請求項3】
前記ファンクション試験モジュールは、前記実行時刻t
3
に加えて、前記所定アドレスの命令にもとづく前記被試験デバイスへの入力値を生成し、
前記第2メモリユニットは、前記実行時刻t
3に加えて
、前記被試験デバイスへの入力値を記録
し、
前記上位コントローラは、前記ファンクション試験モジュールから、前記被試験デバイスへの前記入力値を収集することを特徴とする請求項2に記載の試験装置。
【請求項4】
前記ファンクション試験モジュールは、エラーの発生、異常の発生、タイムアウトのいずれかである所定のイベントを検出可能に構成されており、
前記ファンクション試験モジュールは、前記所定のイベントの発生時刻のタイムスタンプをローカルの時間管理機能を利用して生成し、
前記第2メモリユニットは、
前記所定のイベントの発生時刻のタイムスタンプを記録
し、
前記上位コントローラは、前記ファンクション試験モジュールから、前記所定のイベントの発生時刻のタイムスタンプを収集することを特徴とする請求項2または3に記載の試験装置。
【請求項5】
前記第1メモリユニットは、
第1バンクおよび第2バンクと、
前記第1バンクおよび前記第2バンクの一方に前記デジタル信号を連続して書き込み、メモリフルになると前記上位コントローラにメモリフルであることを通知するとともに、書き込み先のメモリを他方に切り替えるメモリコントローラと、
を含むことを特徴とする請求項1から4のいずれかに記載の試験装置。
【請求項6】
前記上位コントローラは、前記通知に応答して前記メモリフルである前記第1バンクおよび前記第2バンクの一方からデータを読み出すことを特徴とする請求項5に記載の試験装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体試験装置に関する。
【背景技術】
【0002】
近年、さまざまな電子機器に利用される半導体デバイスの種類は、非常に多岐にわたっている。半導体デバイスとしては、(i)DRAM(Dynamic Random Access Memory)やフラッシュメモリなどのメモリデバイスや、(ii)CPU(Central Processing Unit)やMPU(Micro-Processing Unit)、マイクロコントローラなどのプロセッサ、あるいは(iii)デジタル/アナログ混載デバイス、SoC(System On Chip)などの多機能デバイスが例示される。これらの半導体デバイスを試験するために、半導体試験装置(以下、単に試験装置ともいう)が利用される。
【0003】
半導体デバイスの試験項目は、主としてファンクション試験、ACパラメトリック試験、DC(直流)特性試験(DC試験)に大別される。ファンクション試験では、DUT(被試験デバイス)が設計通りに正常に動作するか否かが判定され、不良箇所が特定される。ACパラメトリック試験は、タイミングパラメータや周波数測定の試験行われる。DC試験では、DUTのリーク電流測定、動作電流(電源電流)測定、耐圧などが測定される。
【発明の概要】
【発明が解決しようとする課題】
【0004】
半導体デバイスに流れる電源電流は、半導体デバイスの動作と直結しているため、電源電流波形には、半導体デバイスの状態を解析する上で有益な情報が多く含まれている。電源電圧は、電源電流の変動に応じて変動するため、電源電圧波形にもデバイスの解析に有益な情報が含まれている。
【0005】
ところで、半導体デバイスの試験では、試験のため被試験デバイスをパターンプログラムで制御することが多い。ところが、従来の半導体試験装置は、DC試験に並行して、時間的な制約なく膨大な電源電圧などの波形データと取り込み続ける機能がなかった。したがってユーザは、その必要がある場合には、半導体試験装置とは別に、オシロスコープなどのハードウェアを追加し、半導体試験装置を走らせながら、それと並行して、電源電圧波形などを測定する必要があった。
【0006】
また、多くのDC試験では、パターンプログラムを用いて、被試験デバイスの回路状態を試験項目で狙った状態にしたのち、電圧もしくは電流測定を行う。例えば、被試験デバイスの回路状態を、事前にわかっている、内部のゲートでの故障を顕在化する状態にしたのちに電圧や電流が測定されている。
【0007】
一般的に、パターンプログラムに従って動作するファンクション試験モジュールが生成した信号を、被試験デバイスに入力して、狙った状態に設定する。また、試験では、狙った回路状態に設定した後、測定を行う、を複数の異なる狙った状態に対して行う。よって、パターンプログラムには、回路状態を設定する信号の組み合わせ(パターン)が、複数含まれる。
【0008】
もしパターンプログラムの進行と、取り込んだ波形データを対応づけて取得することができれば、被試験デバイスに関する多くの情報が得られることが期待される。しかしながらオシロスコープなどの外部のハードウェアを追加する場合、波形とパターンプログラムの進行の対応付けは容易ではない。
【0009】
本発明は係る課題に鑑みてされたものであり、そのある態様の例示的な目的のひとつは、DC試験あるいはその他の試験中に、パターンプログラムの進行と対応付けて、電源電流や電源電圧などのアナログ信号の波形データを取得可能な試験装置の提供にある。
【課題を解決するための手段】
【0010】
本発明のある態様は、試験装置に関する。試験装置は、波形データ取得モジュールと、ファンクション試験モジュールと、波形データ取得モジュールおよびファンクション試験モジュールを制御するとともに、波形データ取得モジュールおよびファンクション試験モジュールにおいて得られたデータを収集する上位コントローラと、を備える。波形データ取得モジュールは、被試験デバイスに関連する電気信号を所定のサンプリングレートでデジタル信号に変換するA/Dコンバータと、A/Dコンバータにより得られるデジタル信号の列である波形データを格納する第1メモリユニットと、を含む。ファンクション試験モジュールは、被試験デバイスを試験する試験ユニットと第2メモリユニットとを含む。上位コントローラは、波形データ取得モジュールにサンプリングの開始を指示するとともに、その時刻t1のタイムスタンプを保持し、第1メモリユニットは、サンプリングの開始の時刻t1’のタイムスタンプを記録し、上位コントローラは、ファンクション試験モジュールにパターンプログラムの実行開始を指示するとともにその時刻t2のタイムスタンプを保持し、第2メモリユニットは、パターンプログラムの実行開始の時刻t2’のタイムスタンプを記録する。
【0011】
なお、以上の構成要素を任意に組み合わせたもの、あるいは本発明の表現を、方法、装置などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0012】
本発明のある態様によれば、DC試験あるいはその他の試験中に、パターンプログラムの進行と対応付けて、電源電流や電源電圧などのアナログ信号の波形データを取得できる。
【図面の簡単な説明】
【0013】
【
図1】実施の形態に係る試験装置のブロック図である。
【
図2】波形データ取得モジュールのブロック図である。
【
図3】メモリコントローラおよび第1メモリ、第2メモリの構成例を示すブロック図である。
【
図4】メモリアクセスの書き込みに関するタイムチャートである。
【
図5】データの読み出しに関するタイムチャートである。
【
図6】メモリのオーバーフローの検出を説明するタイムチャートである。
【
図7】上位コントローラおよび波形データ取得モジュールのブロック図である。
【
図8】上位コントローラと波形データ取得モジュールの間のデータアクセスを説明するシーケンス図である。
【
図9】直接割り込みのパケット生成に関するブロック図である。
【
図10】
図9のパケット生成部の動作を説明する図である。
【
図12】
図11の試験装置の動作を説明するタイムチャートである。
【
図13】試験装置により得られる波形データと、ファンクション試験モジュールにおけるパターンプログラムのPG命令の対応関係の一例を示す図である。
【発明を実施するための形態】
【0014】
(実施の形態の概要)
本明細書に開示される一実施の形態は試験装置に関する。試験装置は、波形データ取得モジュールと、ファンクション試験モジュールと、波形データ取得モジュールおよびファンクション試験モジュールを制御するとともに、波形データ取得モジュールおよびファンクション試験モジュールにおいて得られたデータを収集する上位コントローラと、を備える。波形データ取得モジュールは、被試験デバイスに関連する電気信号を所定のサンプリングレートでデジタル信号に変換するA/Dコンバータと、A/Dコンバータにより得られるデジタル信号の列である波形データを格納する第1メモリユニットと、を含む。ファンクション試験モジュールは、被試験デバイスを試験する試験ユニットと第2メモリユニットとを含む。上位コントローラは、波形データ取得モジュールにサンプリングの開始を指示するとともに、その時刻t1のタイムスタンプを保持し、第1メモリユニットは、サンプリングの開始時刻t1’のタイムスタンプを記録し、上位コントローラは、ファンクション試験モジュールにパターンプログラムの実行開始を指示するとともにその時刻t2のタイムスタンプを保持し、第2メモリユニットは、パターンプログラムの実行開始時刻t2’のタイムスタンプを記録する。
【0015】
A/DコンバータのサンプリングレートFsが既知であるとき、波形データ取得モジュールのローカルの時間軸での波形データのj番目のデータの時刻tj’は、
tj’=t1’+j×1/Fs
から得ることができる。そして、波形データ取得モジュールのローカル時刻t1’を、上位コントローラの時間軸の時刻t1にアラインすることにより、上位コントローラ110の時間軸での波形データのj番目のデータの時刻tjは、
tj=t1+j×1/Fs
から得ることができる。またファンクション試験モジュールのローカル時刻t2’を上位コントローラの時刻t2にアラインすることで、波形データと、パターンプログラムの進行を対応付けることができる。
【0016】
第2メモリユニットは、時刻t2に加えて、パターンプログラムに含まれる所定のアドレスの命令の実行時刻t3のタイムスタンプを記録してもよい。これにより、波形データと、パターンプログラムの進行をより詳細に対応付けることができる。
【0017】
第2メモリユニットは、実行時刻t3に加えて、所定アドレスの命令にもとづく被試験デバイスへの入力値を記録してもよい。これにより、被試験デバイスへの入力値(論理データ、テストベクトルやテストパターンなど)と波形データの対応関係から、被試験デバイスの不良、故障に関する情報を得ることができる。
【0018】
第2メモリユニットは、所定のイベントの発生時刻のタイムスタンプを記録してもよい。たとえば所定のイベントはエラーや異常の発生、タイムアウトの発生などであってもよい。
【0019】
第1メモリユニットは、第1バンクおよび第2バンクと、第1バンクおよび第2バンクの一方にデジタル信号を連続して書き込み、メモリフルになると前記上位コントローラにメモリフルであることを通知するとともに、書き込み先のメモリを他方に切り替えるメモリコントローラと、を含んでもよい。上位コントローラは、通知に応答してメモリフルである第1バンクおよび第2バンクの一方からデータを読み出すことができる。この波形データ取得モジュールによれば、2個のバンクに交互に波形データを格納することで、時間的な制約を受けずに波形データを取り込み続けることができる。
【0020】
電気信号は、被試験デバイスの電源電圧または電源電流であってもよい。
【0021】
(実施の形態)
以下、本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、実施の形態は、発明を限定するものではなく例示であって、実施の形態に記述されるすべての特徴やその組み合わせは、必ずしも発明の本質的なものであるとは限らない。
【0022】
(試験システム全体について)
図1は、実施の形態に係る試験装置100のブロック図である。この試験装置100は、複数のDUT(被試験デバイス)2それぞれについて、ファンクション試験を実行しながら、それと並行してDUT2の電気的状態を示す電気信号の波形をキャプチャする。試験装置100がキャプチャするDUT2の電気信号の種類は特に限定されないが、たとえば電源電圧や電源電流などが例示される。
【0023】
一般的に、DUT2の試験は、サンプリングレートFsに比べて非常に長い時間を要する。試験装置100は、試験の開始から終了までの長い時間全体にわたり(あるいはその一部分について)、電気信号の波形を取り込み続ける機能を備える。以下、試験装置100がキャプチャする電源電圧や電源電流を、電源信号と総称する。
【0024】
試験装置100は、上位コントローラ110、バススイッチ120、複数のファンクション試験モジュール130_1~130_N、複数の波形データ取得モジュール140_1~140_Nを備える。
【0025】
上位コントローラ110は、試験装置100全体を統括的に制御するコントローラであり、後述するようにCPU(Central Processing Unit)、メモリ、CPUが実行するプログラムなどで構成される。ファンクション試験モジュール130_1~130_Mおよび波形データ取得モジュール140_1~140_Mは、バススイッチ120を介して上位コントローラ110と接続される。上位コントローラ110は、ファンクション試験モジュール130および波形データ取得モジュール140に対して、指令を与え、あるいはそれらからデータを読み出す。上位コントローラ110は、波形データ取得モジュール140が測定した複数チャンネル分の膨大なデータ(ビッグデータ)を収集する。
【0026】
複数のDUT2は、複数のグループGP1~GPMにわけられる。ファンクション試験モジュール130_i(i=1~M)と波形データ取得モジュール140_iはペアをなしており、共通のグループGPiに割り当てられる。ファンクション試験モジュール130_iは、たとえば、割り当てられたグループGPi内の複数のDUT2それぞれに対して、データ(テストパターン)を与え、データを読み出して、期待値と比較することにより、DUT2の良否を判定する。DUT2の種類は限定されないが、マイコン(Microcontroller)、メモリ、CPU(Central Processing Unit)などが例示される。
【0027】
波形データ取得モジュール140_iは、割り当てられたグループGP_i内の複数のDUT2それぞれの電源信号の波形をキャプチャする。波形データ取得モジュール140はそれぞれ、Nチャンネル(CH1~CHN)で構成される。1チャンネルは、1つのピンと対応付けられ、チャンネルごとに、1個の電気信号の波形をキャプチャすることができる。
【0028】
1個のDUT2について、電源電圧と電源電流を測定する場合、Nチャンネルの波形データ取得モジュール140によって、N/2個のDUT2が割り当てられる。N=96の場合、48個のDUT2の電源電圧と電源電流の波形が取得される。
【0029】
波形データ取得モジュール140に、試験開始から終了までにわたる電源信号の波形を完全に保存しようとすると、波形データ取得モジュール140に非常に大きな容量のメモリが必要となり、コストの観点から現実的ではない。そこで以下では、1個の波形データ取得モジュール140に搭載するメモリの容量を削減するためのアーキテクチャを説明する。
【0030】
(波形データ取得モジュール)
図2は、波形データ取得モジュール140のブロック図である。上述のように、波形データ取得モジュール140は、複数チャンネルCH1~CHNの信号波形をキャプチャ可能に構成される。
【0031】
波形データ取得モジュール140は、複数のチャンネルCH1~CHNに対応する複数のキャプチャユニット150_1~150_Nと、モジュールインタフェース180と、を備える。
【0032】
複数のキャプチャユニット150_1~150_Nは同様に構成される。キャプチャユニット150は、A/Dコンバータ152、信号処理部154、第1メモリ156A、第2メモリ156B、メモリコントローラ160を備える。信号処理部154およびメモリコントローラ160は、FPGA(Field Programmable Gate Array)で構成してもよい。この場合においてメモリ156A,156Bは、FPGAに内蔵されるSRAMであってもよい。
【0033】
A/Dコンバータ152は、所定のサンプリングレートで、キャプチャの対象である電源信号(アナログ信号)S1を、デジタル信号S2に変換する。サンプリングレートは、チャンネルごとに個別に設定可能である。
【0034】
信号処理部154は、必要に応じて、デジタル信号S2に対して信号処理を施す。信号処理の内容は特に限定されないが、たとえばキャリブレーション処理が例示される。信号処理部154における信号処理後のデジタルデータS3は、メモリコントローラ160に入力される。
【0035】
メモリコントローラ160には2個のメモリ156A,156Bが接続される。メモリ156A、156Bを、バンクA(BANKA),バンクB(BANKB)とも表記する。メモリ156A、156Bは、たとえば8kワード程度の安価なメモリを採用することができる。
【0036】
メモリコントローラ160は、2個のメモリ156A,156Bを時分割で交互に使用する。具体的にはデジタルデータS3を2個のメモリ156A,156Bの一方156#(#=A,B)に書き込んでいき、メモリ156#がフルになると、デジタルデータS3の書き込み先を他方のメモリに切り替える。またメモリコントローラ160は、一方のメモリ156#がフルになったことを示すフラグMEMORY_FULL_#(#=A,B)をアサートする。
【0037】
モジュールインタフェース180は、上位コントローラ110と複数のキャプチャユニット150_1~150_Nとのインタフェースである。
【0038】
モジュールインタフェース180は、複数のチャンネルCH1~CHNそれぞれにおけるフラグMEMORY_FULL_#(#=A,B)を監視し、どのチャンネルのメモリがフルになっているかを、上位コントローラ110に通知する。
【0039】
またモジュールインタフェース180は、キャプチャユニット150_1~150_Nにおいて発生するエラーを監視し、エラーの状態を上位コントローラ110に通知する。モジュールインタフェース180から上位コントローラ110への通知には後述の直接割り込みが使用される。
【0040】
上位コントローラ110は、モジュールインタフェース180からの通知によって、どのチャンネルにおいてメモリ156がフルになっているかを知ることができる。上位コントローラ110は、フルになっているチャンネルを指定し、モジュールインタフェース180にリード命令を発行する。
【0041】
本実施の形態において、1つのメモリ命令によって、任意の複数のチャンネルを同時に指定可能となっている。モジュールインタフェース180は、上位コントローラ110からリード命令を受けると、指定されたチャンネルに対して順番に、ローカルの読み出し命令LOCAL_READを与える。モジュールインタフェース180から、ローカルの読み出し命令LOCAL_READを受信したメモリコントローラ160は、フルになっているバンクからデータを読み出し、それを出力する。フルになっているバンクからのデータの読み出しが完了すると、そのバンクに関するメモリフルフラグMEMORY_FULL_#がネゲート(デアサート)される。
【0042】
上位コントローラ110が1回のリードで取得するデータは、波形データの1部分である。上位コントローラ110は、同じチャンネルの波形データの部分を繋ぎ合わせて、元の連続した波形データを復元する。
【0043】
波形データ取得モジュール140によれば、2個のメモリ156A,156Bに交互に波形データを格納することで、時間的な制約なく、膨大な波形データを取り込み続けることができる。またメモリフルとなるたびに、上位コントローラ110に通知を送信することで、上位コントローラ110にデータの読み出しを促すことができる。
【0044】
(メモリコントローラ)
図3は、メモリコントローラ160およびメモリ156A,156Bの構成例を示すブロック図である。この例において、メモリ156A,156Bは1ワード19ビットのデュアルポートメモリである。メモリ156A,156Bはそれぞれ8kワードの容量を有する。
【0045】
各メモリ156は、ポートaのアドレス入力address_a[12:0]、ポートaのデータ入力data_a[18:0]、ポートaのライトイネーブルwren_a、ポートbのアドレス入力address_b[12:0]、ポートbのデータ入力data_b[18:0]、ポートbのライトイネーブルwren_bを有する。
【0046】
メモリコントローラ160には、信号処理部154からのデジタルデータS3と、それと同期したライトイネーブル信号MEAS_MEMORY_WENが入力される。デジタルデータS3は、18ビットのデータCAL_DATA[17:0]である。ライトイネーブル信号MEAS_MEMORY_WENは、信号処理部154によって、CAL_DATA[17:0]が生成されるたびにアサートされる。
【0047】
またメモリコントローラ160には、測定アドレスMEAS_ADDRESS[28:0]が入力される。測定アドレスMEAS_ADDRESS[28:0]は、測定開始からのサンプリング回数を示してもよい。
【0048】
またメモリコントローラ160には、信号処理部154からのエラー信号OVER,OVR_STBYが入力される。エラー信号OVERは、信号処理部154での演算中にオーバーフローが発生したこと、あるいは測定データにオーバーフローがあることを示すフラグである。またエラー信号OVR_STYBは、A/Dコンバータ152による測定中にオーバーフローが発生したことを示すフラグである。
【0049】
メモリコントローラ160は、メモリへのデータの書き込みに関して、ライトエンコーダ162、ライトセレクタ164、ライトカウンタ166、ステートマシン168を備える。
【0050】
ライトエンコーダ162は、データCAL_DATA[17:0]、エラー信号OVER,OVR_STBYを受け、メモリ156A,156Bに書き込むべき19ビットのデータmem_data[18:0]を生成する。エラーが発生していないとき、データmem_data[18:0]は、元のデータCAL_DATA[17:0]またはそれを加工したデータを含んでおり、エラーが発生しているとき、データmem_data[18:0]は所定のコードを含む。
【0051】
ライトセレクタ164は、測定アドレスMEAS_ADDRESS[28:0]と、測定メモリライトイネーブル信号MEAS_MEMORY_WENを受ける。MEAS_ADDRESS[28:0]は、イネーブル信号MEAS_MEMORY_WENのアサートごとにインクリメントされる。
【0052】
ライトセレクタ164は、測定アドレスMEAS_ADDRESS[28:0]の下位14ビット目MEAS_ADDRESS[13]にもとづいて、書き込み先のメモリ(156A,156B)を選択する。具体的には、MEAS_ADDRESS[13]が0のとき、メモリ156Aが選択され、1のときメモリ156Bが選択される。ライトセレクタ164は、選択したメモリ156#のアドレス入力address_#[12:0]に、測定アドレスMEAS_ADDRESS[28:0]の下位13ビットMEAS_ADDRESS[13:0]を供給し、選択したメモリ156#のライトイネーブルwren_#に、ライトイネーブル信号MEAS_MEMORY_WENを供給する。
【0053】
これにより、新たな測定データCAL_DATAが生成されるたびに、それが適切なメモリ(バンク)に書き込まれていく。
【0054】
ライトカウンタ166は、ライトイネーブル信号MEAS_MEMORY_WENを監視し、書き込み回数をカウントする。このカウント値はステートマシン168に供給される。
【0055】
ステートマシン168は、現在の書き込み先である一方のメモリ156#がフルになると、そのメモリがフルであることを示すフラグMEMORY_FULL_#をアサートする。
【0056】
以上がメモリコントローラ160の書き込みに関する構成である。続いて読み出しに関する構成を説明する。メモリコントローラ160は、データの読み出しに関して、命令デコーダ170、リードカウンタ172、出力セレクタ174を備える。
【0057】
命令デコーダ170は、モジュールインタフェース180からの制御信号(命令)を受け、それをデコードする。命令デコーダ170は、ローカルの読み出し命令LOCAL_READを受けると、フルになっている書き込み完了後のメモリ156#から、データを読み出す。リードカウンタ172は、読み出した回数をカウントする。リードカウンタ172のカウント値は、メモリ156#のアドレス信号MW:ADC_MEMORY_ADDRESS[12:0]として、メモリ156#のポートbのアドレス入力address_b[12:0]に供給される。これにより、メモリ156#の先頭のアドレスから最後のアドレスに向かって、1ワードずつデータが読み出されていく。出力セレクタ174は、メモリ156A,156Bのポートbの出力q_bのデータを受け、バンクセレクト信号BANL_SELに応じた一方を選択する。バンクセレクト信号BANL_SELは、現在フルになっているメモリ(つまり読み出すべきバンク)を指定するフラグであり、0のとき、メモリ156Aが選択され、1のとき、メモリ156Bが選択される。
【0058】
またリードカウンタ172のカウント値は、ステートマシン168に供給される。ステートマシン168は、リードカウンタ172のカウント値を参照し、メモリ156#のすべてのアドレスからデータが読み出されると、フラグMEMORY_FULL_#をネゲートする。フラグMEMORY_FULL_#がネゲートされると、BANK_SELをトグルし、上位コントローラ110がデータを読み出すべきメモリを入れ替える。
【0059】
ステートマシン168は、2つのフラグMEMORY_FULL_A,MEMORY_FULL_Bを監視し、両方が同時にアサートされると、メモリの読み出しに失敗したことを示すフラグMEMORY_OVER_FLOWをアサートする。フラグMEMORY_OVER_FLOWは、一方のバンクがフルの状態で、次のバンクもフルになったことを示す。これは、元のバンクに新たなデータが上書きされてデータが破壊されていることを示すエラー信号である。
【0060】
続いてメモリアクセスの動作を説明する。
図4は、メモリアクセスの書き込みに関するタイムチャートである。BANKの番号は、切り替え毎に1ずつインクリメントしており、奇数のバンク番号は、メモリ156Aが書き込み先であることを示し、偶数のバンク番号は、メモリ156Bが書き込み先であることを示す。
【0061】
測定アドレスMEAS_ADDRESS[28:0]は、1ずつインクリメントする。測定アドレスの値が0x0~0x1FFFの間は、メモリ156Aにデータが書き込まれ、測定アドレスの値が0x2000~0x3FFFの間は、メモリ156Bにデータが書き込まれ、測定アドレスの値が0x4000~0x5FFFの間は、メモリ156Aにデータが書き込まれ、測定アドレスの値が0x6000~0x7FFFの間は、メモリ156Bにデータが書き込まれ、測定アドレスの値が0x8000~0x9FFFの間は、メモリ156Aにデータが書き込まれる。
【0062】
フラグMEMORY_FULL_Aは、メモリ156Aのすべてのアドレス0x0~0x1FFFへのデータ書き込みが完了するとアサートされる。また上位コントローラ110によってすべてのアドレスのデータ読み出しが完了するとネゲートされる。この動作が、2つのメモリ156A,156Bで交互に繰り返される。
【0063】
図5は、データの読み出しに関するタイムチャートである。フラグMEMORY_FULL_Aがアサートされると、上位コントローラ110に通知される。MEMORY_FULL_Aのアサートから、次のMEMORY_FULL_Bのアサートまでの間が、メモリ156Aに対するデータ読み出し期間となり、この期間の間に、上位コントローラ110は、リード命令を発生し、メモリ156Aからすべてのデータを読み出さなければならない。
【0064】
上位コントローラ110が発生したリード命令に応答して、メモリ156Aのリードアクセスが発生し、8192回すなわち全アドレス0x0~0x1FFFの読み出しが完了すると、フラグMEMORY_FULL_Aはネゲートされる。この動作が、2つのメモリ156A,156Bで交互に繰り返される。
【0065】
図6は、メモリのオーバーフローの検出を説明するタイムチャートである。この例では、メモリ156A(BANK1)への書き込みが完了し、フラグMEMORY_FULL_Aがアサートされる。その後、メモリ156B(BANK2)への書き込みが完了し、フラグMEMORY_FULL_Bがアサートされるまでが、BANK1に対するデータ読み出し期間となる。読み出し期間の間に発生したリード回数が8192回に満たないとき、すなわち読み出し期間の間に、フラグMEMORY_FULL_Aがネゲートされないと、オーバーフローを示すフラグMEMORY_OVER_FLOWがアサートされる。
【0066】
(バスインタフェースについて)
以上がローカルのメモリアクセスに関する説明である。続いて、波形データ取得モジュール140と上位コントローラ110との間のインタフェースについて説明する。
【0067】
図7は、上位コントローラ110および波形データ取得モジュール140のブロック図である。上位コントローラ110は、CPU112、バスインタフェース114、メモリ118を備える。バスインタフェース114は、PCI Express(登録商標)カードなどであり、DMA(Direct Memory Access)コントローラ116を有する。DMAコントローラ116は、CPU112からのメモリアクセス命令にもとづいて、波形データ取得モジュール140にアクセスし、読み出したデータをメモリ118に格納する(バースト伝送)。
【0068】
モジュールインタフェース180は、複数のチャンネルCH1~CHNのうち、どのチャンネルのメモリがフルになっているかをバスインタフェース114を経由してCPU112に通知する。たとえば、CPU112は、複数のチャンネルCH1~CHNをいくつかのセットに分類して管理する。そして、同じセットに含まれるチャンネルのメモリがすべてフルになったことを検出すると、そのセットに含まれるすべてのチャンネルのメモリを対象とするリード命令(バースト伝送命令)を発生する。このリード命令に応答して、DMAコントローラ116は、モジュールインタフェース180に対して、リード命令を送信する。
【0069】
モジュールインタフェース180はシーケンサ182を含む。シーケンサ182は、DMAコントローラ116からのリード命令READが指定する複数のチャンネルのキャプチャユニット150に対して、順にローカルのリード命令LOCAL_READを発生する。たとえば、DMAコントローラ116からのリード命令が、CH1~CH4を指定したリード命令である場合、シーケンサ182は、CH1~CH4に対して、順にローカルのリード命令を発生する。その結果、チャンネルごとのデータが順にバスインタフェース114に送信される。DMAコントローラ116は、各チャンネルのデータを、メモリ118の対応するアドレスに格納する。
【0070】
従来のバースト伝送では、複数のチャンネルにまたがったデータ伝送は不可能であったが、モジュールインタフェース180にシーケンサ182を実装することで、複数のチャンネルを指定したバースト伝送が可能となる。
【0071】
図8は、上位コントローラ110と波形データ取得モジュール140の間のデータアクセスを説明するシーケンス図である。はじめにCPU112によって、アクセスすべき波形データ取得モジュール140の番号と、チャンネル番号が指定される。アクセスすべき波形データ取得モジュール140の番号に応じて、バススイッチ120が切り替えられる。またチャンネル番号が波形データ取得モジュール140に送信される(S100)。
【0072】
続いてDMAコントローラ116に起動指示が与えられる(S102)。DMAコントローラ116は、モジュールインタフェース180に対してリード命令を出力する(S104)。モジュールインタフェース180のシーケンサ182は、指定されたチャンネル(この例では全チャンネルCH1~CHN)に対して順に、ローカルのリード命令を発行する(S106)。各チャンネルのリード命令に応答して、データが上位コントローラ110のメモリ118に対してバースト伝送される(S108)。そして全チャンネルの伝送が完了すると、DMA終了の割り込みがバスインタフェース114からCPU112に出力される(S110)。
【0073】
(直接割り込み)
続いて、波形データ取得モジュール140から上位コントローラ110への各種通知について説明する。波形データ取得モジュール140は、割り込みによって、メモリフルの通知、メモリのオーバーフローの通知および、波形測定が完了したことの通知を、上位コントローラ110に送信する。この割り込みには、レガシーの割り込み線を用いた通知を用いてもよいが、本実施の形態では、それとは異なる割り込み(以下、直接割り込みという)によって、これらの情報を上位コントローラ110に送信する。
【0074】
直接割り込みでは、メモリフルに関する情報、メモリオーバーフローに関する情報、波形測定完了の通知が、パケット化され、上位コントローラ110に送信される。
【0075】
図9は、直接割り込みのパケット生成に関するブロック図である。複数のチャンネルCH1~CHNは、12チャンネルごとに分割される。12チャンネルのセットを、1スプリットと称する。モジュールインタフェース180は、1スプリットごとに、割り込みパケットを生成するパケット生成部184を組む。チャンネル数Nが96チャンネルの場合、96/12=8個のパケット生成部184が設けられる。
【0076】
パケット生成部184には、12チャンネル分のメモリフルフラグMEMORY_FULL_A,Bをまとめた割り込みデータMEMFUL_INT[11:0]、12チャンネル分の波形測定完了フラグADC_DONEをまとめた割り込みデータADDONE_INT[11:0]、12チャンネル分のメモリオーバーフローフラグMEMORY_OVER_FLOWをまとめた割り込みデータMEMOFL_INT[11:0]が入力される。MEMFUL_INT[i]は、チャンネルCHiにおける2個のフラグMEMORY_FULL_A,MEMORY_FULL_Bの論理和であってもよい。
【0077】
パケット生成部184は、パケットデータSEND_TCM_STATUSと、ステータスフラグSBDTCM2Oを生成する。ステータスフラグSBDTCM2Oは、割り込みデータMEMFUL_INT[11:0]、ADDONE_INT[11:0]、MEMOFL_INT[11:0]のいずれかのビットに1が立つと、アサートされる。
【0078】
上位コントローラ110のメモリ118には、割り込み専用のアドレスが用意されている。モジュールインタフェース180は、パケットデータSEND_TCM_STATUSを、その割り込み専用のアドレスに書き込む。上位コントローラ110のCPU112は、割り込み専用のアドレスを監視しており、割り込みを検出すると同時に、割り込み要因などを取得する。
【0079】
割り込みデータMEMFUL_INT[11:0]、ADDONE_INT[11:0]、MEMOFL_INT[11:0]は全部で36ビット存在する。この36ビットをパケット化する際に、全ビットを含めると、パケットのサイズが大きくなり、パケットデータを複数に分割して送信する必要がある。そこでパケット生成部184は、メモリオーバーフローを示す割り込みデータMEMOFL_INT[11:0]については、全ビットをOR演算して1ビットにまとめて、パケットデータSEND_TCM_STATUSに含めることとした。
【0080】
一方、割り込みパケットの送信ごとに、割り込みデータMEMFUL_INT[11:0],ADDONE_INT[11:0]を交互に、パケットデータSEND_TCM_STATUSに含めて送信することとしている。パケットデータSEND_TCM_STATUSは、現在、MEMFUL_INT[11:0],ADDONE_INT[11:0]のいずれを含んでいるかを示すフラグOUTPUT_STATUSを含む。1ビットのMEMOFLは、MEMFUL_INT[11:0]とともに送信される。
【0081】
ステータスラッチ信号status_latchが発生する度に、出力ステータスOUTPUT_STATUSがトグルする。OUTPUT_STATUS=0は、MEMFUL_INTを通知する状態を、OUTPUT_STATUS=1は、ADDONE_INTを通知する状態を表す。
【0082】
MEMORY_FULL_CLR信号は、OUTPUT_STATUSのネガエッジごとにアサートされる。MEMORY_FULL_CLR信号のアサートに応答して、フリップフロップFF2の値(MEMORY_FULLのステータス)が確定し、後段のマルチプレクサMUXに出力される。またMEMORY_FULL_CLR信号のアサートに応答してフリップフロップFF1の値が0となり、MEMORY_FULLに関連する割り込み要因がクリアされる。
【0083】
MEMORY_FULL_CLR信号は、フリップフロップFF5,FF6にも供給される。MEMORY_FULL_CLR信号のアサートに応答して、フリップフロップFF6の値(MEMORY_OVER_FLOWのステータス)が確定し、後段のマルチプレクサMUXに出力される。またMEMORY_FULL_CLR信号のアサートに応答してフリップフロップFF5の値が0となり、MEMORY_OVER_FLOWに関連する割り込み要因がクリアされる。
【0084】
ADC_DONE_CLR信号は、OUTPUT_STATUSのポジエッジごとにアサートされる。ADC_DONE_CLR信号のアサートに応答して、フリップフロップFF4の値(ADC_DONEのステータス)が確定し、後段のマルチプレクサMUXに出力される。またADC_DONE_CLR信号のアサートに応答して、フリップフロップFF3の値がゼロとなり、ADC_DONEに関連する割り込み要因がクリアされる。
【0085】
図10は、
図9のパケット生成部184の動作を説明する図である。時刻t
0に、MEMFUL_INT[11:0]のいずれかのビットに1が立つと、対応するチャンネルのフリップフロップFF1に1が格納され、SBDTCM2O信号がハイとなる。続いて、SEND_TCM_STATUSパケットを送信するためのバスコマンドが生成され、status_latch信号がアサートされる。status_latch信号のネガエッジによって、出力ステータスがMEMORY_FULLに切り替わり、MEMORY_FULL_CLR信号がアサートされ、フリップフロップFF1(およびFF5)の値が0となり、MEMORY_FULLの割り込み要因がクリアされる。またフリップフロップFF2の出力が、フリップフロップFF5の出力とともにマルチプレクサMUXに入力され、SEND_TCM_STATUSパケットに格納される。
【0086】
時刻t1に、再びMEMFUL_INT[11:0]のいずれかのビットに1が立つと、対応するチャンネルのフリップフロップFF1に1が格納され、SBDTCM2O信号がハイとなる。続いて、SEND_TCM_STATUSパケットを送信するためのバスコマンドが生成され、status_latch信号がアサートされる。status_latch信号のネガエッジによって、出力ステータスがADC_DONEに切り替わり、ADC_DONE_CLR信号がアサートされる。ADC_DONE_CLR信号がアサートされると、FF4の出力がマルチプレクサMUXに入力され、SEND_TCM_STATUSパケットに格納され、送信される。ただし、このパケットには、送信すべき割り込み要因であるMEMORY_FULLに関する情報は含まれない。
【0087】
ADC_DONE_CLR信号がアサートでは、フリップフロップFF1の値(すなわちMEMORY_FULLの割り込み要因)はクリアされないため、SBDTCM2O信号はハイを維持する。したがって、ふたたび、バスコマンドSEND_TCM_STATUSが生成され、status_latch信号がアサートされる。status_latch信号のネガエッジによって、出力ステータスがMEMORY_FULLに切り替わり、MEMORY_FULL信号がアサートされる。これにより、MEMORY_FULLに関する情報を含むパケットSEND_TCM_STATUSが生成され、送信される。またフリップフロップFF1がクリアされ、SBDTCM2O信号がローとなる。
【0088】
時刻t2に、MEMORY_FULL,MEMORY_OVER_FLOW,ADC_DONEのすべての割り込み要因が発生し、SBDTCM2O信号はハイとなる。それに続くバスコマンドSEND_TCM_STによって、ADC_DONEに関する割り込みが、上位コントローラ110に送信され、割り込み要因がクリアされる。
【0089】
時刻t3に、ADC_DONE[11:0]のいずれかのビットに1が立つと、対応するチャンネルのフリップフロップFF3に1が格納される。
【0090】
続くバスコマンドSEND_TCM_STによって、MEMORY_FULLに関する割り込みが上位コントローラ110に送信され、割り込み要因がクリアされる。
【0091】
この状態では、時刻t3に発生した割り込み要因がまだ残っているため、SBDTCM2O信号はハイを維持している。そして次のバスコマンドSEND_TCM_STによって、ADC_DONEに関する割り込みが上位コントローラ110に送信され、割り込み要因がクリアされる。
【0092】
以上が直接割り込みの説明である。続いて直接割り込みの利点を説明する。従来の割り込みでは、CPUは、割り込み信号を監視し、割り込みを検出すると、波形データ取得モジュール140にアクセスして割り込み要因を読み出す必要があったため、オーバーヘッドが大きかった。
【0093】
これに対して本実施の形態では、直接割り込みを受けた上位コントローラ110のCPU112は、パケットSEND_TCM_STATUSの中身を見ることにより、どのチャンネルでどのような割り込み要因が発生したかを直接知ることができる。したがって従来の割り込みよりも高速な通知が可能となる。
【0094】
(エラー検出)
図7を参照する。バスインタフェース114は、波形データ取得モジュール140にリード命令を発行してから所定時間内にデータを受け取れない場合、処理を打ち切り、CPU112にエラー割り込みをかける。
【0095】
モジュールインタフェース180は、ローカルのリード命令を発行した後に、所定の時間内にキャプチャユニット150からデータが出力されない場合、処理を打ち切る。モジュールインタフェース180が処理を打ち切ると、上位コントローラ110のバスインタフェース114にもデータは伝送されなくなる。結果として、バスインタフェース114が所定時間内にデータを受け取れなくなるため、CPU112にエラー割り込みがかかる。
【0096】
続いて、パターンプログラムの進行と対応付けて、電源電流や電源電圧などのアナログ信号の波形データを取得するためのアーキテクチャを説明する。
【0097】
図11は、試験装置100のブロック図である。上述のように、試験装置100は多チャンネルで構成されるが、
図11では簡略化して1チャンネル分の構成のみを示す。
【0098】
試験装置100は、上位コントローラ110、波形データ取得モジュール140、ファンクション試験モジュール130を備える。
【0099】
波形データ取得モジュール140は、A/Dコンバータ152、信号処理部154、第1メモリユニット155、モジュールインタフェース180を備える。A/Dコンバータ152は、DUT2に関連する電気信号S1(たとえば電源電圧や電源電流)を、所定のサンプリングレートFsでデジタル信号S2に変換するデジタイザである。
【0100】
信号処理部154は、必要に応じて、A/Dコンバータ152の出力であるデジタル信号S2に対して信号処理を施す。信号処理の内容は特に限定されないが、たとえばキャリブレーション処理が例示される。
【0101】
第1メモリユニット155は、A/Dコンバータ152により得られるデジタル信号S2にもとづくデジタルデータS3の列である波形データを格納する。第1メモリユニット155は、
図2で説明したアーキテクチャで実装してもよく、メモリコントローラ160および2バンクのメモリ156A,156Bを含みうる。
【0102】
モジュールインタフェース180は、上位コントローラ110とのインタフェースである。
【0103】
ファンクション試験モジュール130は、試験ユニット132、第2メモリユニット134、モジュールインタフェース136を含む。試験ユニット132は、DUT2のためのパターンプログラムを実行する。パターンプログラムは、DUT2に与えるべき信号(1/0)の組み合わせ(テストパターンあるいはテストベクトル)と、与えた信号に応答してDUT2から戻ってくるべき信号(期待値、H/L)の組み合わせを記述するPG命令を、実行順にリスト化したものである。パターンプログラムは、その他、条件分岐、待機、トリガーを発生するためのPG命令などを組み合わせて構成される。
【0104】
試験ユニット132の構成は特に限定されるものではないが、たとえば、パターンプログラムに記述されるテストパターンをDUT2に供給するドライバDRと、与えたテストパターンに応答してDUT2からの出力される信号を受信するレシーバ、レシーバが受信した信号をその期待値と比較し、一致、不一致を判定するコンパレータ、などを含む。
【0105】
第2メモリユニット134は、試験ユニット132によって得られた判定結果を記録する。モジュールインタフェース136は、上位コントローラ110とのインタフェースである。
【0106】
上位コントローラ110は、波形データ取得モジュール140およびファンクション試験モジュール130を制御するとともに、波形データ取得モジュール140およびファンクション試験モジュール130において得られたデータを収集する。
【0107】
図12は、
図11の試験装置100の動作を説明するタイムチャートである。上位コントローラ110は、波形データ取得モジュール140にサンプリングの開始を指示する(S100)とともに、その時刻t
1のタイムスタンプを保持する。この時刻t
1は、上位コントローラ110の時間管理機能にもとづいて生成される。
【0108】
波形データ取得モジュール140のモジュールインタフェース180がサンプリング開始の指示(S100)を受けると、第1メモリユニット155は、サンプリングの開始の時刻t1’のタイムスタンプを記録する。この時刻t1’は、上位コントローラ110から送信されるわけではなく、波形データ取得モジュール140のローカルの時間管理機能にもとづいて生成される。
【0109】
また上位コントローラ110は、ファンクション試験モジュール130に対して、パターンプログラムの実行開始を指示(S102)するとともにその時刻t2のタイムスタンプを保持する。ファンクション試験モジュール130のモジュールインタフェース136が、パターンプログラムの実行開始の指示(S102)を受けると、第2メモリユニット134は、パターンプログラムの実行開始の時刻t2のタイムスタンプを記録する。この時刻t2は、ファンクション試験モジュール130のローカルの時間管理機能にもとづいて生成される。
【0110】
パターンプログラム中に、条件分岐や、待機が含まれない場合は、パターンプログラムの開始時刻だけ記録しておけば、それに続く各命令の実行時刻は推定することができる。ところが、実際のパターンプログラムは、条件分岐や、ループ、待機を含む場合が多く、その場合には、第2メモリユニット134は、時刻t
2に加えて、パターンプログラムに含まれる所定のアドレス…の命令(
図12においてハッチングを付す)の実行時刻t
3_1,t
3_1…のタイムスタンプを記録する。これによりパターンプログラムの進行と、波形を対応付けることができる。
【0111】
タイムスタンプを残すべき命令は、ユーザが指定可能である。パターンプログラムに、指定したアドレスの実行時刻においてタイムスタンプを残すための命令を追加してもよい。あるいは、パターンプログラムとは別に、タイムスタンプをとるべき箇所(パターンプログラムのアドレス)を指定するリストをユーザが用意して、ファンクション試験モジュール130がそのリストを読んで、タイムスタンプをとるようにしてもよい。
【0112】
また第2メモリユニット134は、所定のアドレスADR1,ADR2…の命令の実行ごとに、そのとき、あるいはその直前のDUT2への入力値を記録してもよい。DUT2への入力値は、たとえばテストベクトルやテストパターンであってもよいし、その他の制御パラメータであってもよい。
【0113】
また第2メモリユニット134は、所定のイベントEVT1,EVT2…ごとに、各イベントEVTj(i=1,2…)の種類を示す識別子IDiとその発生時刻のタイムスタンプを記録してもよい。イベントEVTは、ファンクション試験モジュール130による異常検知などであってもよい。
【0114】
上位コントローラ110は、適切なタイミングで第1メモリユニット155にアクセスし、波形データと開始時刻t1’を読み出す。
【0115】
また上位コントローラ110は、適切なタイミングで第2メモリユニット134にアクセスし、試験ユニット132が生成したデータと、開始時刻t2’や、所定命令の実行時刻t3のタイムスタンプを読み出す。
【0116】
A/Dコンバータ152のサンプリングレートFsは既知であり、波形データ取得モジュール140のローカルの時間軸での波形データのj番目のデータの時刻tj’は、
tj’=t1’+j×1/Fs
で表される。
【0117】
上位コントローラ110は、波形データ取得モジュールのローカル時刻t1’を、上位コントローラの時間軸の時刻t1にアラインする。このとき、上位コントローラ110の時間軸での波形データのj番目のデータの時刻tjは、
tj=t1+j×1/Fs
に修正される。
またファンクション試験モジュールのローカル時刻t2’を上位コントローラの時刻t2にアラインすることで、波形データと、ファンクション試験の進行を対応付けることができる。
【0118】
図13は、試験装置100により得られる電源電流I
DDの波形データと、パターンプログラムのPG命令の対応関係の一例を示す図である。
【0119】
いま、DUT2の状態を、切り替えながら、電源電流IDDを測定するケースを考える。時刻t2’はパターンプログラムの実行開始時刻である。パターンプログラムは先頭のアドレスから順に実行されていく。そして、状態設定のためのPG命令群300が実行されることにより、DUT2の内部状態が第1状態となる。PG命令群300の実行が完了すると、測定のトリガー命令302が実行される。このトリガー命令302は、本来、電源電流IDDの測定開始(取り込み開始)を示すが、本実施の形態では、トリガー命令302より前に、電源電流IDDは連続的にサンプリングされていることに留意されたい。そして、測定の完了まで待機を指示する待機命令304が実行される。待機命令304の実行が完了すると、第1状態での電源電流IDDの測定が完了する。
【0120】
続いて、DUT2を第2状態に設定するためのPG命令群306が実行され、DUT2の内部状態が切り替えられる。命令群306の実行が完了すると、測定のトリガー命令308が実行され、待機命令310が実行される。待機命令310の実行が完了すると、第2状態での電源電流IDDの測定が完了する。
【0121】
このような試験を行う際に、たとえば、トリガ命令302,308の実行時刻t3_1,t3_3を示すタイムスタンプを残してもよい。このタイムスタンプを後からチェックすることにより、DUTの状態が安定していたか、電流を取り込むべきタイミングとして適切であったか、を確認できる。具体的には、実行時刻t3_1、t3_3のタイムスタンプにもとづいて、それらに対応する時刻における電源電流IDDの波形をチェックできる。この例では、タイムスタンプt3_1における電源電流IDDは安定しており、したがってDUTの状態が安定していることが確認できる。一方、タイムスタンプt3_3において電源電流IDDは過渡的に遷移しており、したがってDUTの状態が安定しておらず、電源電流IDDの測定タイミングとして不適切であったことを確認できる。
【0122】
また時刻t3_2のタイムスタンプを記録しておくと、トリガー命令302に対して、待機命令の待ち時間が適切であったかを確認することができる。この情報は、待機命令304の設定時間を変更するような修正をパターンプログラムを施す際にも役立つ。
【0123】
なお
図13の波形は一例であり、実行されるパターンプログラムの中身や、タイムスタンプを残すべき命令は、ユーザが自由に決めることができる。
【0124】
試験装置100によれば、
図13に示すように、波形データと、ファンクション試験モジュール130における命令(イベント)とを時間軸上で対応付けることが可能となり、パターンプログラムのどの工程において、監視対象の電気信号がどのように振る舞うのかを知ることができる。
【0125】
ここまでの説明では、DC試験においてパターンプログラムと同期した波形データの取得を説明したが、DC試験以外の試験、たとえばACパラメトリック試験やファンクション試験、マージン試験についても、それらにおいて実行されるパターンプログラムと同期して、波形データを取得することができる。
【0126】
たとえば、波形データ取得モジュール140は、ACパラメトリック試験やファンクション試験に必要な機能ブロックやIPをさらに含んでもよく、この場合、波形データ取得モジュール140は、それぞれの試験ユニットを兼ねることとなる。
【0127】
図13には、1個のDUTについて得られる波形データのみが示されるが、実施の形態に係る試験装置100は、複数のDUTを同時に測定可能である。一般に、複数のDUTを同時測定する際には、DUTごとのファンクション試験モジュール130は独立に異なるタイミングで動作するところ、試験装置100によれば、多数のDUTそれぞれの波形データを、それぞれを制御するパターンプログラムの進行と対応付けて取得することができる。
【0128】
実施の形態にもとづき本発明を説明したが、実施の形態は、本発明の原理、応用を示しているにすぎず、実施の形態には、請求の範囲に規定された本発明の思想を逸脱しない範囲において、多くの変形例や配置の変更が認められる。
【符号の説明】
【0129】
DUT 2
100 試験装置
110 上位コントローラ
112 CPU
114 バスインタフェース
116 DMAコントローラ
118 メモリ
120 バススイッチ
130 ファンクション試験モジュール
132 試験ユニット
134 第2メモリユニット
136 モジュールインタフェース
140 波形データ取得モジュール
150 キャプチャユニット
152 A/Dコンバータ
154 信号処理部
155 第1メモリユニット
156A,156B メモリ
160 メモリコントローラ
162 ライトエンコーダ
164 ライトセレクタ
166 ライトカウンタ
168 ステートマシン
170 命令デコーダ
172 リードカウンタ
174 出力セレクタ
180 モジュールインタフェース
182 シーケンサ
184 パケット生成部