(57)【要約】【課題】パターンプログラムの進行と対応付けて、アナログ信号の波形データを取得する。【解決手段】波形データ取得モジュール１４０は、ＤＵＴ２に関連する電気信号をデジタル信号に変換するＡ／Ｄコンバータ１５２と、デジタル信号の列である波形データを格納する第１メモリユニット１５５と、を含む。ファンクション試験モジュール１３０は、試験ユニット１３２と第２メモリユニット１３４とを含む。上位コントローラ１１０は、波形データ取得モジュール１４０にサンプリング開始を指示し、その時刻ｔ１を保持し、ファンクション試験モジュール１３０にパターンプログラムの実行開始を指示し、その時刻ｔ２を保持する。第１メモリユニット１５５は、サンプリングの開始の時刻ｔ１’を記録する。上位コントローラ１１０は、第２メモリユニット１３４は、パターンプログラムの実行開始の時刻ｔ２’を記録する。【選択図】図１１
2020193899.tif 000002
【特許請求の範囲】
【請求項１】
被試験デバイスに関連する電気信号を所定のサンプリングレートでデジタル信号に変換するＡ／Ｄコンバータと、前記Ａ／Ｄコンバータにより得られる前記デジタル信号の列である波形データを格納する第１メモリユニットと、を含む波形データ取得モジュールと、
前記被試験デバイスを試験する試験ユニットと第２メモリユニットとを含むファンクション試験モジュールと、
前記波形データ取得モジュールおよび前記ファンクション試験モジュールを制御するとともに、前記波形データ取得モジュールおよび前記ファンクション試験モジュールにおいて得られたデータを収集する上位コントローラと、
を備え、
前記上位コントローラは、前記波形データ取得モジュールにサンプリングの開始を指示するとともに、その時刻ｔ１のタイムスタンプを保持し、
前記第１メモリユニットは、前記サンプリングの開始の時刻ｔ１’のタイムスタンプを記録し、
前記上位コントローラは、前記ファンクション試験モジュールにパターンプログラムの実行開始を指示するとともにその時刻ｔ２のタイムスタンプを保持し、
前記第２メモリユニットは、前記パターンプログラムの実行開始の時刻ｔ２’のタイムスタンプを記録することを特徴とする試験装置。
【請求項２】
前記第２メモリユニットは、前記時刻ｔ２に加えて、前記パターンプログラムに含まれる所定のアドレスの命令の実行時刻ｔ３のタイムスタンプを記録することを特徴とする請求項１に記載の試験装置。
【請求項３】
前記第２メモリユニットは、前記実行時刻ｔ３に加えて、前記所定アドレスの命令にもとづく前記被試験デバイスへの入力値を記録することを特徴とする請求項２に記載の試験装置。
【請求項４】
前記第２メモリユニットは、所定のイベントの発生時刻のタイムスタンプを記録することを特徴とする請求項２または３に記載の試験装置。
【請求項５】
前記第１メモリユニットは、
第１バンクおよび第２バンクと、
前記第１バンクおよび前記第２バンクの一方に前記デジタル信号を連続して書き込み、メモリフルになると前記上位コントローラにメモリフルであることを通知するとともに、書き込み先のメモリを他方に切り替えるメモリコントローラと、
を含むことを特徴とする請求項１から４のいずれかに記載の試験装置。
【請求項６】
前記上位コントローラは、前記通知に応答して前記メモリフルである前記第１バンクおよび前記第２バンクの一方からデータを読み出すことを特徴とする請求項５に記載の試験装置。
【請求項７】
前記電気信号は、被試験デバイスの電源電圧または電源電流であることを特徴とする請求項１から６のいずれかに記載の試験装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体試験装置に関する。
【背景技術】
【０００２】
近年、さまざまな電子機器に利用される半導体デバイスの種類は、非常に多岐にわたっている。半導体デバイスとしては、（i）ＤＲＡＭ（Dynamic Random Access Memory）やフラッシュメモリなどのメモリデバイスや、（ii）ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）、マイクロコントローラなどのプロセッサ、あるいは（iii）デジタル／アナログ混載デバイス、ＳｏＣ（System On Chip）などの多機能デバイスが例示される。これらの半導体デバイスを試験するために、半導体試験装置（以下、単に試験装置ともいう）が利用される。
【０００３】
半導体デバイスの試験項目は、主としてファンクション試験、ＡＣパラメトリック試験、ＤＣ（直流）特性試験（ＤＣ試験）に大別される。ファンクション試験では、ＤＵＴ（被試験デバイス）が設計通りに正常に動作するか否かが判定され、不良箇所が特定される。ＡＣパラメトリック試験は、タイミングパラメータや周波数測定の試験行われる。ＤＣ試験では、ＤＵＴのリーク電流測定、動作電流（電源電流）測定、耐圧などが測定される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
半導体デバイスに流れる電源電流は、半導体デバイスの動作と直結しているため、電源電流波形には、半導体デバイスの状態を解析する上で有益な情報が多く含まれている。電源電圧は、電源電流の変動に応じて変動するため、電源電圧波形にもデバイスの解析に有益な情報が含まれている。
【０００５】
ところで、半導体デバイスの試験では、試験のため被試験デバイスをパターンプログラムで制御することが多い。ところが、従来の半導体試験装置は、ＤＣ試験に並行して、時間的な制約なく膨大な電源電圧などの波形データと取り込み続ける機能がなかった。したがってユーザは、その必要がある場合には、半導体試験装置とは別に、オシロスコープなどのハードウェアを追加し、半導体試験装置を走らせながら、それと並行して、電源電圧波形などを測定する必要があった。
【０００６】
また、多くのＤＣ試験では、パターンプログラムを用いて、被試験デバイスの回路状態を試験項目で狙った状態にしたのち、電圧もしくは電流測定を行う。例えば、被試験デバイスの回路状態を、事前にわかっている、内部のゲートでの故障を顕在化する状態にしたのちに電圧や電流が測定されている。
【０００７】
一般的に、パターンプログラムに従って動作するファンクション試験モジュールが生成した信号を、被試験デバイスに入力して、狙った状態に設定する。また、試験では、狙った回路状態に設定した後、測定を行う、を複数の異なる狙った状態に対して行う。よって、パターンプログラムには、回路状態を設定する信号の組み合わせ(パターン)が、複数含まれる。
【０００８】
もしパターンプログラムの進行と、取り込んだ波形データを対応づけて取得することができれば、被試験デバイスに関する多くの情報が得られることが期待される。しかしながらオシロスコープなどの外部のハードウェアを追加する場合、波形とパターンプログラムの進行の対応付けは容易ではない。
【０００９】
本発明は係る課題に鑑みてされたものであり、そのある態様の例示的な目的のひとつは、ＤＣ試験あるいはその他の試験中に、パターンプログラムの進行と対応付けて、電源電流や電源電圧などのアナログ信号の波形データを取得可能な試験装置の提供にある。
【課題を解決するための手段】
【００１０】
本発明のある態様は、試験装置に関する。試験装置は、波形データ取得モジュールと、ファンクション試験モジュールと、波形データ取得モジュールおよびファンクション試験モジュールを制御するとともに、波形データ取得モジュールおよびファンクション試験モジュールにおいて得られたデータを収集する上位コントローラと、を備える。波形データ取得モジュールは、被試験デバイスに関連する電気信号を所定のサンプリングレートでデジタル信号に変換するＡ／Ｄコンバータと、Ａ／Ｄコンバータにより得られるデジタル信号の列である波形データを格納する第１メモリユニットと、を含む。ファンクション試験モジュールは、被試験デバイスを試験する試験ユニットと第２メモリユニットとを含む。上位コントローラは、波形データ取得モジュールにサンプリングの開始を指示するとともに、その時刻ｔ１のタイムスタンプを保持し、第１メモリユニットは、サンプリングの開始の時刻ｔ１’のタイムスタンプを記録し、上位コントローラは、ファンクション試験モジュールにパターンプログラムの実行開始を指示するとともにその時刻ｔ２のタイムスタンプを保持し、第２メモリユニットは、パターンプログラムの実行開始の時刻ｔ２’のタイムスタンプを記録する。
【００１１】
なお、以上の構成要素を任意に組み合わせたもの、あるいは本発明の表現を、方法、装置などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明のある態様によれば、ＤＣ試験あるいはその他の試験中に、パターンプログラムの進行と対応付けて、電源電流や電源電圧などのアナログ信号の波形データを取得できる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態に係る試験装置のブロック図である。
【図２】波形データ取得モジュールのブロック図である。
【図３】メモリコントローラおよび第１メモリ、第２メモリの構成例を示すブロック図である。
【図４】メモリアクセスの書き込みに関するタイムチャートである。
【図５】データの読み出しに関するタイムチャートである。
【図６】メモリのオーバーフローの検出を説明するタイムチャートである。
【図７】上位コントローラおよび波形データ取得モジュールのブロック図である。
【図８】上位コントローラと波形データ取得モジュールの間のデータアクセスを説明するシーケンス図である。
【図９】直接割り込みのパケット生成に関するブロック図である。
【図１０】図９のパケット生成部の動作を説明する図である。
【図１１】試験装置のブロック図である。
【図１２】図１１の試験装置の動作を説明するタイムチャートである。
【図１３】試験装置により得られる波形データと、ファンクション試験モジュールにおけるパターンプログラムのＰＧ命令の対応関係の一例を示す図である。
【発明を実施するための形態】
【００１４】
（実施の形態の概要）
本明細書に開示される一実施の形態は試験装置に関する。試験装置は、波形データ取得モジュールと、ファンクション試験モジュールと、波形データ取得モジュールおよびファンクション試験モジュールを制御するとともに、波形データ取得モジュールおよびファンクション試験モジュールにおいて得られたデータを収集する上位コントローラと、を備える。波形データ取得モジュールは、被試験デバイスに関連する電気信号を所定のサンプリングレートでデジタル信号に変換するＡ／Ｄコンバータと、Ａ／Ｄコンバータにより得られるデジタル信号の列である波形データを格納する第１メモリユニットと、を含む。ファンクション試験モジュールは、被試験デバイスを試験する試験ユニットと第２メモリユニットとを含む。上位コントローラは、波形データ取得モジュールにサンプリングの開始を指示するとともに、その時刻ｔ１のタイムスタンプを保持し、第１メモリユニットは、サンプリングの開始時刻ｔ１’のタイムスタンプを記録し、上位コントローラは、ファンクション試験モジュールにパターンプログラムの実行開始を指示するとともにその時刻ｔ２のタイムスタンプを保持し、第２メモリユニットは、パターンプログラムの実行開始時刻ｔ２’のタイムスタンプを記録する。
【００１５】
Ａ／ＤコンバータのサンプリングレートＦｓが既知であるとき、波形データ取得モジュールのローカルの時間軸での波形データのｊ番目のデータの時刻ｔｊ’は、
ｔｊ’＝ｔ１’＋ｊ×１／Ｆｓ
から得ることができる。そして、波形データ取得モジュールのローカル時刻ｔ１’を、上位コントローラの時間軸の時刻ｔ１にアラインすることにより、上位コントローラ１１０の時間軸での波形データのｊ番目のデータの時刻ｔｊは、
ｔｊ＝ｔ１＋ｊ×１／Ｆｓ
から得ることができる。またファンクション試験モジュールのローカル時刻ｔ２’を上位コントローラの時刻ｔ２にアラインすることで、波形データと、パターンプログラムの進行を対応付けることができる。
【００１６】
第２メモリユニットは、時刻ｔ２に加えて、パターンプログラムに含まれる所定のアドレスの命令の実行時刻ｔ３のタイムスタンプを記録してもよい。これにより、波形データと、パターンプログラムの進行をより詳細に対応付けることができる。
【００１７】
第２メモリユニットは、実行時刻ｔ３に加えて、所定アドレスの命令にもとづく被試験デバイスへの入力値を記録してもよい。これにより、被試験デバイスへの入力値（論理データ、テストベクトルやテストパターンなど）と波形データの対応関係から、被試験デバイスの不良、故障に関する情報を得ることができる。
【００１８】
第２メモリユニットは、所定のイベントの発生時刻のタイムスタンプを記録してもよい。たとえば所定のイベントはエラーや異常の発生、タイムアウトの発生などであってもよい。
【００１９】
第１メモリユニットは、第１バンクおよび第２バンクと、第１バンクおよび第２バンクの一方にデジタル信号を連続して書き込み、メモリフルになると前記上位コントローラにメモリフルであることを通知するとともに、書き込み先のメモリを他方に切り替えるメモリコントローラと、を含んでもよい。上位コントローラは、通知に応答してメモリフルである第１バンクおよび第２バンクの一方からデータを読み出すことができる。この波形データ取得モジュールによれば、２個のバンクに交互に波形データを格納することで、時間的な制約を受けずに波形データを取り込み続けることができる。
【００２０】
電気信号は、被試験デバイスの電源電圧または電源電流であってもよい。
【００２１】
（実施の形態）
以下、本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、実施の形態は、発明を限定するものではなく例示であって、実施の形態に記述されるすべての特徴やその組み合わせは、必ずしも発明の本質的なものであるとは限らない。
【００２２】
（試験システム全体について）
図１は、実施の形態に係る試験装置１００のブロック図である。この試験装置１００は、複数のＤＵＴ（被試験デバイス）２それぞれについて、ファンクション試験を実行しながら、それと並行してＤＵＴ２の電気的状態を示す電気信号の波形をキャプチャする。試験装置１００がキャプチャするＤＵＴ２の電気信号の種類は特に限定されないが、たとえば電源電圧や電源電流などが例示される。
【００２３】
一般的に、ＤＵＴ２の試験は、サンプリングレートＦｓに比べて非常に長い時間を要する。試験装置１００は、試験の開始から終了までの長い時間全体にわたり（あるいはその一部分について）、電気信号の波形を取り込み続ける機能を備える。以下、試験装置１００がキャプチャする電源電圧や電源電流を、電源信号と総称する。
【００２４】
試験装置１００は、上位コントローラ１１０、バススイッチ１２０、複数のファンクション試験モジュール１３０＿１〜１３０＿Ｎ、複数の波形データ取得モジュール１４０＿１〜１４０＿Ｎを備える。
【００２５】
上位コントローラ１１０は、試験装置１００全体を統括的に制御するコントローラであり、後述するようにＣＰＵ（Central Processing Unit）、メモリ、ＣＰＵが実行するプログラムなどで構成される。ファンクション試験モジュール１３０＿１〜１３０＿Ｍおよび波形データ取得モジュール１４０＿１〜１４０＿Ｍは、バススイッチ１２０を介して上位コントローラ１１０と接続される。上位コントローラ１１０は、ファンクション試験モジュール１３０および波形データ取得モジュール１４０に対して、指令を与え、あるいはそれらからデータを読み出す。上位コントローラ１１０は、波形データ取得モジュール１４０が測定した複数チャンネル分の膨大なデータ（ビッグデータ）を収集する。
【００２６】
複数のＤＵＴ２は、複数のグループＧＰ１〜ＧＰＭにわけられる。ファンクション試験モジュール１３０＿ｉ（ｉ＝１〜Ｍ）と波形データ取得モジュール１４０＿ｉはペアをなしており、共通のグループＧＰｉに割り当てられる。ファンクション試験モジュール１３０＿ｉは、たとえば、割り当てられたグループＧＰｉ内の複数のＤＵＴ２それぞれに対して、データ（テストパターン）を与え、データを読み出して、期待値と比較することにより、ＤＵＴ２の良否を判定する。ＤＵＴ２の種類は限定されないが、マイコン（Microcontroller）、メモリ、ＣＰＵ（Central Processing Unit）などが例示される。
【００２７】
波形データ取得モジュール１４０＿ｉは、割り当てられたグループＧＰ＿ｉ内の複数のＤＵＴ２それぞれの電源信号の波形をキャプチャする。波形データ取得モジュール１４０はそれぞれ、Ｎチャンネル（ＣＨ１〜ＣＨＮ）で構成される。１チャンネルは、１つのピンと対応付けられ、チャンネルごとに、１個の電気信号の波形をキャプチャすることができる。
【００２８】
１個のＤＵＴ２について、電源電圧と電源電流を測定する場合、Ｎチャンネルの波形データ取得モジュール１４０によって、Ｎ／２個のＤＵＴ２が割り当てられる。Ｎ＝９６の場合、４８個のＤＵＴ２の電源電圧と電源電流の波形が取得される。
【００２９】
波形データ取得モジュール１４０に、試験開始から終了までにわたる電源信号の波形を完全に保存しようとすると、波形データ取得モジュール１４０に非常に大きな容量のメモリが必要となり、コストの観点から現実的ではない。そこで以下では、１個の波形データ取得モジュール１４０に搭載するメモリの容量を削減するためのアーキテクチャを説明する。
【００３０】
（波形データ取得モジュール）
図２は、波形データ取得モジュール１４０のブロック図である。上述のように、波形データ取得モジュール１４０は、複数チャンネルＣＨ１〜ＣＨＮの信号波形をキャプチャ可能に構成される。
【００３１】
波形データ取得モジュール１４０は、複数のチャンネルＣＨ１〜ＣＨＮに対応する複数のキャプチャユニット１５０＿１〜１５０＿Ｎと、モジュールインタフェース１８０と、を備える。
【００３２】
複数のキャプチャユニット１５０＿１〜１５０＿Ｎは同様に構成される。キャプチャユニット１５０は、Ａ／Ｄコンバータ１５２、信号処理部１５４、第１メモリ１５６Ａ、第２メモリ１５６Ｂ、メモリコントローラ１６０を備える。信号処理部１５４およびメモリコントローラ１６０は、ＦＰＧＡ（Field Programmable Gate Array）で構成してもよい。この場合においてメモリ１５６Ａ，１５６Ｂは、ＦＰＧＡに内蔵されるＳＲＡＭであってもよい。
【００３３】
Ａ／Ｄコンバータ１５２は、所定のサンプリングレートで、キャプチャの対象である電源信号（アナログ信号）Ｓ１を、デジタル信号Ｓ２に変換する。サンプリングレートは、チャンネルごとに個別に設定可能である。
【００３４】
信号処理部１５４は、必要に応じて、デジタル信号Ｓ２に対して信号処理を施す。信号処理の内容は特に限定されないが、たとえばキャリブレーション処理が例示される。信号処理部１５４における信号処理後のデジタルデータＳ３は、メモリコントローラ１６０に入力される。
【００３５】
メモリコントローラ１６０には２個のメモリ１５６Ａ，１５６Ｂが接続される。メモリ１５６Ａ、１５６Ｂを、バンクＡ（ＢＡＮＫＡ），バンクＢ（ＢＡＮＫＢ）とも表記する。メモリ１５６Ａ、１５６Ｂは、たとえば８ｋワード程度の安価なメモリを採用することができる。
【００３６】
メモリコントローラ１６０は、２個のメモリ１５６Ａ，１５６Ｂを時分割で交互に使用する。具体的にはデジタルデータＳ３を２個のメモリ１５６Ａ，１５６Ｂの一方１５６＃（＃＝Ａ，Ｂ）に書き込んでいき、メモリ１５６＃がフルになると、デジタルデータＳ３の書き込み先を他方のメモリに切り替える。またメモリコントローラ１６０は、一方のメモリ１５６＃がフルになったことを示すフラグＭＥＭＯＲＹ＿ＦＵＬＬ＿＃（＃＝Ａ，Ｂ）をアサートする。
【００３７】
モジュールインタフェース１８０は、上位コントローラ１１０と複数のキャプチャユニット１５０＿１〜１５０＿Ｎとのインタフェースである。
【００３８】
モジュールインタフェース１８０は、複数のチャンネルＣＨ１〜ＣＨＮそれぞれにおけるフラグＭＥＭＯＲＹ＿ＦＵＬＬ＿＃（＃＝Ａ，Ｂ）を監視し、どのチャンネルのメモリがフルになっているかを、上位コントローラ１１０に通知する。
【００３９】
またモジュールインタフェース１８０は、キャプチャユニット１５０＿１〜１５０＿Ｎにおいて発生するエラーを監視し、エラーの状態を上位コントローラ１１０に通知する。モジュールインタフェース１８０から上位コントローラ１１０への通知には後述の直接割り込みが使用される。
【００４０】
上位コントローラ１１０は、モジュールインタフェース１８０からの通知によって、どのチャンネルにおいてメモリ１５６がフルになっているかを知ることができる。上位コントローラ１１０は、フルになっているチャンネルを指定し、モジュールインタフェース１８０にリード命令を発行する。
【００４１】
本実施の形態において、１つのメモリ命令によって、任意の複数のチャンネルを同時に指定可能となっている。モジュールインタフェース１８０は、上位コントローラ１１０からリード命令を受けると、指定されたチャンネルに対して順番に、ローカルの読み出し命令ＬＯＣＡＬ＿ＲＥＡＤを与える。モジュールインタフェース１８０から、ローカルの読み出し命令ＬＯＣＡＬ＿ＲＥＡＤを受信したメモリコントローラ１６０は、フルになっているバンクからデータを読み出し、それを出力する。フルになっているバンクからのデータの読み出しが完了すると、そのバンクに関するメモリフルフラグＭＥＭＯＲＹ＿ＦＵＬＬ＿＃がネゲート（デアサート）される。
【００４２】
上位コントローラ１１０が１回のリードで取得するデータは、波形データの１部分である。上位コントローラ１１０は、同じチャンネルの波形データの部分を繋ぎ合わせて、元の連続した波形データを復元する。
【００４３】
波形データ取得モジュール１４０によれば、２個のメモリ１５６Ａ，１５６Ｂに交互に波形データを格納することで、時間的な制約なく、膨大な波形データを取り込み続けることができる。またメモリフルとなるたびに、上位コントローラ１１０に通知を送信することで、上位コントローラ１１０にデータの読み出しを促すことができる。
【００４４】
（メモリコントローラ）
図３は、メモリコントローラ１６０およびメモリ１５６Ａ，１５６Ｂの構成例を示すブロック図である。この例において、メモリ１５６Ａ，１５６Ｂは１ワード１９ビットのデュアルポートメモリである。メモリ１５６Ａ，１５６Ｂはそれぞれ８ｋワードの容量を有する。
【００４５】
各メモリ１５６は、ポートａのアドレス入力ａｄｄｒｅｓｓ＿ａ［１２：０］、ポートａのデータ入力ｄａｔａ＿ａ［１８：０］、ポートａのライトイネーブルｗｒｅｎ＿ａ、ポートｂのアドレス入力ａｄｄｒｅｓｓ＿ｂ［１２：０］、ポートｂのデータ入力ｄａｔａ＿ｂ［１８：０］、ポートｂのライトイネーブルｗｒｅｎ＿ｂを有する。
【００４６】
メモリコントローラ１６０には、信号処理部１５４からのデジタルデータＳ３と、それと同期したライトイネーブル信号ＭＥＡＳ＿ＭＥＭＯＲＹ＿ＷＥＮが入力される。デジタルデータＳ３は、１８ビットのデータＣＡＬ＿ＤＡＴＡ［１７：０］である。ライトイネーブル信号ＭＥＡＳ＿ＭＥＭＯＲＹ＿ＷＥＮは、信号処理部１５４によって、ＣＡＬ＿ＤＡＴＡ［１７：０］が生成されるたびにアサートされる。
【００４７】
またメモリコントローラ１６０には、測定アドレスＭＥＡＳ＿ＡＤＤＲＥＳＳ［２８：０］が入力される。測定アドレスＭＥＡＳ＿ＡＤＤＲＥＳＳ［２８：０］は、測定開始からのサンプリング回数を示してもよい。
【００４８】
またメモリコントローラ１６０には、信号処理部１５４からのエラー信号ＯＶＥＲ，ＯＶＲ＿ＳＴＢＹが入力される。エラー信号ＯＶＥＲは、信号処理部１５４での演算中にオーバーフローが発生したこと、あるいは測定データにオーバーフローがあることを示すフラグである。またエラー信号ＯＶＲ＿ＳＴＹＢは、Ａ／Ｄコンバータ１５２による測定中にオーバーフローが発生したことを示すフラグである。
【００４９】
メモリコントローラ１６０は、メモリへのデータの書き込みに関して、ライトエンコーダ１６２、ライトセレクタ１６４、ライトカウンタ１６６、ステートマシン１６８を備える。
【００５０】
ライトエンコーダ１６２は、データＣＡＬ＿ＤＡＴＡ［１７：０］、エラー信号ＯＶＥＲ，ＯＶＲ＿ＳＴＢＹを受け、メモリ１５６Ａ，１５６Ｂに書き込むべき１９ビットのデータｍｅｍ＿ｄａｔａ［１８：０］を生成する。エラーが発生していないとき、データｍｅｍ＿ｄａｔａ［１８：０］は、元のデータＣＡＬ＿ＤＡＴＡ［１７：０］またはそれを加工したデータを含んでおり、エラーが発生しているとき、データｍｅｍ＿ｄａｔａ［１８：０］は所定のコードを含む。
【００５１】
ライトセレクタ１６４は、測定アドレスＭＥＡＳ＿ＡＤＤＲＥＳＳ［２８：０］と、測定メモリライトイネーブル信号ＭＥＡＳ＿ＭＥＭＯＲＹ＿ＷＥＮを受ける。ＭＥＡＳ＿ＡＤＤＲＥＳＳ［２８：０］は、イネーブル信号ＭＥＡＳ＿ＭＥＭＯＲＹ＿ＷＥＮのアサートごとにインクリメントされる。
【００５２】
ライトセレクタ１６４は、測定アドレスＭＥＡＳ＿ＡＤＤＲＥＳＳ［２８：０］の下位１４ビット目ＭＥＡＳ＿ＡＤＤＲＥＳＳ［１３］にもとづいて、書き込み先のメモリ（１５６Ａ，１５６Ｂ）を選択する。具体的には、ＭＥＡＳ＿ＡＤＤＲＥＳＳ［１３］が０のとき、メモリ１５６Ａが選択され、１のときメモリ１５６Ｂが選択される。ライトセレクタ１６４は、選択したメモリ１５６＃のアドレス入力ａｄｄｒｅｓｓ＿＃［１２：０］に、測定アドレスＭＥＡＳ＿ＡＤＤＲＥＳＳ［２８：０］の下位１３ビットＭＥＡＳ＿ＡＤＤＲＥＳＳ［１３：０］を供給し、選択したメモリ１５６＃のライトイネーブルｗｒｅｎ＿＃に、ライトイネーブル信号ＭＥＡＳ＿ＭＥＭＯＲＹ＿ＷＥＮを供給する。
【００５３】
これにより、新たな測定データＣＡＬ＿ＤＡＴＡが生成されるたびに、それが適切なメモリ（バンク）に書き込まれていく。
【００５４】
ライトカウンタ１６６は、ライトイネーブル信号ＭＥＡＳ＿ＭＥＭＯＲＹ＿ＷＥＮを監視し、書き込み回数をカウントする。このカウント値はステートマシン１６８に供給される。
【００５５】
ステートマシン１６８は、現在の書き込み先である一方のメモリ１５６＃がフルになると、そのメモリがフルであることを示すフラグＭＥＭＯＲＹ＿ＦＵＬＬ＿＃をアサートする。
【００５６】
以上がメモリコントローラ１６０の書き込みに関する構成である。続いて読み出しに関する構成を説明する。メモリコントローラ１６０は、データの読み出しに関して、命令デコーダ１７０、リードカウンタ１７２、出力セレクタ１７４を備える。
【００５７】
命令デコーダ１７０は、モジュールインタフェース１８０からの制御信号（命令）を受け、それをデコードする。命令デコーダ１７０は、ローカルの読み出し命令ＬＯＣＡＬ＿ＲＥＡＤを受けると、フルになっている書き込み完了後のメモリ１５６＃から、データを読み出す。リードカウンタ１７２は、読み出した回数をカウントする。リードカウンタ１７２のカウント値は、メモリ１５６＃のアドレス信号ＭＷ：ＡＤＣ＿ＭＥＭＯＲＹ＿ＡＤＤＲＥＳＳ［１２：０］として、メモリ１５６＃のポートｂのアドレス入力ａｄｄｒｅｓｓ＿ｂ［１２：０］に供給される。これにより、メモリ１５６＃の先頭のアドレスから最後のアドレスに向かって、１ワードずつデータが読み出されていく。出力セレクタ１７４は、メモリ１５６Ａ，１５６Ｂのポートｂの出力ｑ＿ｂのデータを受け、バンクセレクト信号ＢＡＮＬ＿ＳＥＬに応じた一方を選択する。バンクセレクト信号ＢＡＮＬ＿ＳＥＬは、現在フルになっているメモリ（つまり読み出すべきバンク）を指定するフラグであり、０のとき、メモリ１５６Ａが選択され、１のとき、メモリ１５６Ｂが選択される。
【００５８】
またリードカウンタ１７２のカウント値は、ステートマシン１６８に供給される。ステートマシン１６８は、リードカウンタ１７２のカウント値を参照し、メモリ１５６＃のすべてのアドレスからデータが読み出されると、フラグＭＥＭＯＲＹ＿ＦＵＬＬ＿＃をネゲートする。フラグＭＥＭＯＲＹ＿ＦＵＬＬ＿＃がネゲートされると、ＢＡＮＫ＿ＳＥＬをトグルし、上位コントローラ１１０がデータを読み出すべきメモリを入れ替える。
【００５９】
ステートマシン１６８は、２つのフラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａ，ＭＥＭＯＲＹ＿ＦＵＬＬ＿Ｂを監視し、両方が同時にアサートされると、メモリの読み出しに失敗したことを示すフラグＭＥＭＯＲＹ＿ＯＶＥＲ＿ＦＬＯＷをアサートする。フラグＭＥＭＯＲＹ＿ＯＶＥＲ＿ＦＬＯＷは、一方のバンクがフルの状態で、次のバンクもフルになったことを示す。これは、元のバンクに新たなデータが上書きされてデータが破壊されていることを示すエラー信号である。
【００６０】
続いてメモリアクセスの動作を説明する。図４は、メモリアクセスの書き込みに関するタイムチャートである。ＢＡＮＫの番号は、切り替え毎に１ずつインクリメントしており、奇数のバンク番号は、メモリ１５６Ａが書き込み先であることを示し、偶数のバンク番号は、メモリ１５６Ｂが書き込み先であることを示す。
【００６１】
測定アドレスＭＥＡＳ＿ＡＤＤＲＥＳＳ［２８：０］は、１ずつインクリメントする。測定アドレスの値が０ｘ０〜０ｘ１ＦＦＦの間は、メモリ１５６Ａにデータが書き込まれ、測定アドレスの値が０ｘ２０００〜０ｘ３ＦＦＦの間は、メモリ１５６Ｂにデータが書き込まれ、測定アドレスの値が０ｘ４０００〜０ｘ５ＦＦＦの間は、メモリ１５６Ａにデータが書き込まれ、測定アドレスの値が０ｘ６０００〜０ｘ７ＦＦＦの間は、メモリ１５６Ｂにデータが書き込まれ、測定アドレスの値が０ｘ８０００〜０ｘ９ＦＦＦの間は、メモリ１５６Ａにデータが書き込まれる。
【００６２】
フラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａは、メモリ１５６Ａのすべてのアドレス０ｘ０〜０ｘ１ＦＦＦへのデータ書き込みが完了するとアサートされる。また上位コントローラ１１０によってすべてのアドレスのデータ読み出しが完了するとネゲートされる。この動作が、２つのメモリ１５６Ａ，１５６Ｂで交互に繰り返される。
【００６３】
図５は、データの読み出しに関するタイムチャートである。フラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａがアサートされると、上位コントローラ１１０に通知される。ＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａのアサートから、次のＭＥＭＯＲＹ＿ＦＵＬＬ＿Ｂのアサートまでの間が、メモリ１５６Ａに対するデータ読み出し期間となり、この期間の間に、上位コントローラ１１０は、リード命令を発生し、メモリ１５６Ａからすべてのデータを読み出さなければならない。
【００６４】
上位コントローラ１１０が発生したリード命令に応答して、メモリ１５６Ａのリードアクセスが発生し、８１９２回すなわち全アドレス０ｘ０〜０ｘ１ＦＦＦの読み出しが完了すると、フラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａはネゲートされる。この動作が、２つのメモリ１５６Ａ，１５６Ｂで交互に繰り返される。
【００６５】
図６は、メモリのオーバーフローの検出を説明するタイムチャートである。この例では、メモリ１５６Ａ（ＢＡＮＫ１）への書き込みが完了し、フラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａがアサートされる。その後、メモリ１５６Ｂ（ＢＡＮＫ２）への書き込みが完了し、フラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ｂがアサートされるまでが、ＢＡＮＫ１に対するデータ読み出し期間となる。読み出し期間の間に発生したリード回数が８１９２回に満たないとき、すなわち読み出し期間の間に、フラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａがネゲートされないと、オーバーフローを示すフラグＭＥＭＯＲＹ＿ＯＶＥＲ＿ＦＬＯＷがアサートされる。
【００６６】
（バスインタフェースについて）
以上がローカルのメモリアクセスに関する説明である。続いて、波形データ取得モジュール１４０と上位コントローラ１１０との間のインタフェースについて説明する。
【００６７】
図７は、上位コントローラ１１０および波形データ取得モジュール１４０のブロック図である。上位コントローラ１１０は、ＣＰＵ１１２、バスインタフェース１１４、メモリ１１８を備える。バスインタフェース１１４は、ＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）カードなどであり、ＤＭＡ（Direct Memory Access）コントローラ１１６を有する。ＤＭＡコントローラ１１６は、ＣＰＵ１１２からのメモリアクセス命令にもとづいて、波形データ取得モジュール１４０にアクセスし、読み出したデータをメモリ１１８に格納する（バースト伝送）。
【００６８】
モジュールインタフェース１８０は、複数のチャンネルＣＨ１〜ＣＨＮのうち、どのチャンネルのメモリがフルになっているかをバスインタフェース１１４を経由してＣＰＵ１１２に通知する。たとえば、ＣＰＵ１１２は、複数のチャンネルＣＨ１〜ＣＨＮをいくつかのセットに分類して管理する。そして、同じセットに含まれるチャンネルのメモリがすべてフルになったことを検出すると、そのセットに含まれるすべてのチャンネルのメモリを対象とするリード命令（バースト伝送命令）を発生する。このリード命令に応答して、ＤＭＡコントローラ１１６は、モジュールインタフェース１８０に対して、リード命令を送信する。
【００６９】
モジュールインタフェース１８０はシーケンサ１８２を含む。シーケンサ１８２は、ＤＭＡコントローラ１１６からのリード命令ＲＥＡＤが指定する複数のチャンネルのキャプチャユニット１５０に対して、順にローカルのリード命令ＬＯＣＡＬ＿ＲＥＡＤを発生する。たとえば、ＤＭＡコントローラ１１６からのリード命令が、ＣＨ１〜ＣＨ４を指定したリード命令である場合、シーケンサ１８２は、ＣＨ１〜ＣＨ４に対して、順にローカルのリード命令を発生する。その結果、チャンネルごとのデータが順にバスインタフェース１１４に送信される。ＤＭＡコントローラ１１６は、各チャンネルのデータを、メモリ１１８の対応するアドレスに格納する。
【００７０】
従来のバースト伝送では、複数のチャンネルにまたがったデータ伝送は不可能であったが、モジュールインタフェース１８０にシーケンサ１８２を実装することで、複数のチャンネルを指定したバースト伝送が可能となる。
【００７１】
図８は、上位コントローラ１１０と波形データ取得モジュール１４０の間のデータアクセスを説明するシーケンス図である。はじめにＣＰＵ１１２によって、アクセスすべき波形データ取得モジュール１４０の番号と、チャンネル番号が指定される。アクセスすべき波形データ取得モジュール１４０の番号に応じて、バススイッチ１２０が切り替えられる。またチャンネル番号が波形データ取得モジュール１４０に送信される（Ｓ１００）。
【００７２】
続いてＤＭＡコントローラ１１６に起動指示が与えられる（Ｓ１０２）。ＤＭＡコントローラ１１６は、モジュールインタフェース１８０に対してリード命令を出力する（Ｓ１０４）。モジュールインタフェース１８０のシーケンサ１８２は、指定されたチャンネル（この例では全チャンネルＣＨ１〜ＣＨＮ）に対して順に、ローカルのリード命令を発行する（Ｓ１０６）。各チャンネルのリード命令に応答して、データが上位コントローラ１１０のメモリ１１８に対してバースト伝送される（Ｓ１０８）。そして全チャンネルの伝送が完了すると、ＤＭＡ終了の割り込みがバスインタフェース１１４からＣＰＵ１１２に出力される（Ｓ１１０）。
【００７３】
（直接割り込み）
続いて、波形データ取得モジュール１４０から上位コントローラ１１０への各種通知について説明する。波形データ取得モジュール１４０は、割り込みによって、メモリフルの通知、メモリのオーバーフローの通知および、波形測定が完了したことの通知を、上位コントローラ１１０に送信する。この割り込みには、レガシーの割り込み線を用いた通知を用いてもよいが、本実施の形態では、それとは異なる割り込み（以下、直接割り込みという）によって、これらの情報を上位コントローラ１１０に送信する。
【００７４】
直接割り込みでは、メモリフルに関する情報、メモリオーバーフローに関する情報、波形測定完了の通知が、パケット化され、上位コントローラ１１０に送信される。
【００７５】
図９は、直接割り込みのパケット生成に関するブロック図である。複数のチャンネルＣＨ１〜ＣＨＮは、１２チャンネルごとに分割される。１２チャンネルのセットを、１スプリットと称する。モジュールインタフェース１８０は、１スプリットごとに、割り込みパケットを生成するパケット生成部１８４を組む。チャンネル数Ｎが９６チャンネルの場合、９６／１２＝８個のパケット生成部１８４が設けられる。
【００７６】
パケット生成部１８４には、１２チャンネル分のメモリフルフラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａ，Ｂをまとめた割り込みデータＭＥＭＦＵＬ＿ＩＮＴ［１１：０］、１２チャンネル分の波形測定完了フラグＡＤＣ＿ＤＯＮＥをまとめた割り込みデータＡＤＤＯＮＥ＿ＩＮＴ［１１：０］、１２チャンネル分のメモリオーバーフローフラグＭＥＭＯＲＹ＿ＯＶＥＲ＿ＦＬＯＷをまとめた割り込みデータＭＥＭＯＦＬ＿ＩＮＴ［１１：０］が入力される。ＭＥＭＦＵＬ＿ＩＮＴ［ｉ］は、チャンネルＣＨｉにおける２個のフラグＭＥＭＯＲＹ＿ＦＵＬＬ＿Ａ，ＭＥＭＯＲＹ＿ＦＵＬＬ＿Ｂの論理和であってもよい。
【００７７】
パケット生成部１８４は、パケットデータＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳと、ステータスフラグＳＢＤＴＣＭ２Ｏを生成する。ステータスフラグＳＢＤＴＣＭ２Ｏは、割り込みデータＭＥＭＦＵＬ＿ＩＮＴ［１１：０］、ＡＤＤＯＮＥ＿ＩＮＴ［１１：０］、ＭＥＭＯＦＬ＿ＩＮＴ［１１：０］のいずれかのビットに１が立つと、アサートされる。
【００７８】
上位コントローラ１１０のメモリ１１８には、割り込み専用のアドレスが用意されている。モジュールインタフェース１８０は、パケットデータＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳを、その割り込み専用のアドレスに書き込む。上位コントローラ１１０のＣＰＵ１１２は、割り込み専用のアドレスを監視しており、割り込みを検出すると同時に、割り込み要因などを取得する。
【００７９】
割り込みデータＭＥＭＦＵＬ＿ＩＮＴ［１１：０］、ＡＤＤＯＮＥ＿ＩＮＴ［１１：０］、ＭＥＭＯＦＬ＿ＩＮＴ［１１：０］は全部で３６ビット存在する。この３６ビットをパケット化する際に、全ビットを含めると、パケットのサイズが大きくなり、パケットデータを複数に分割して送信する必要がある。そこでパケット生成部１８４は、メモリオーバーフローを示す割り込みデータＭＥＭＯＦＬ＿ＩＮＴ［１１：０］については、全ビットをＯＲ演算して１ビットにまとめて、パケットデータＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳに含めることとした。
【００８０】
一方、割り込みパケットの送信ごとに、割り込みデータＭＥＭＦＵＬ＿ＩＮＴ［１１：０］，ＡＤＤＯＮＥ＿ＩＮＴ［１１：０］を交互に、パケットデータＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳに含めて送信することとしている。パケットデータＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳは、現在、ＭＥＭＦＵＬ＿ＩＮＴ［１１：０］，ＡＤＤＯＮＥ＿ＩＮＴ［１１：０］のいずれを含んでいるかを示すフラグＯＵＴＰＵＴ＿ＳＴＡＴＵＳを含む。１ビットのＭＥＭＯＦＬは、ＭＥＭＦＵＬ＿ＩＮＴ［１１：０］とともに送信される。
【００８１】
ステータスラッチ信号ｓｔａｔｕｓ＿ｌａｔｃｈが発生する度に、出力ステータスＯＵＴＰＵＴ＿ＳＴＡＴＵＳがトグルする。ＯＵＴＰＵＴ＿ＳＴＡＴＵＳ＝０は、ＭＥＭＦＵＬ＿ＩＮＴを通知する状態を、ＯＵＴＰＵＴ＿ＳＴＡＴＵＳ＝１は、ＡＤＤＯＮＥ＿ＩＮＴを通知する状態を表す。
【００８２】
ＭＥＭＯＲＹ＿ＦＵＬＬ＿ＣＬＲ信号は、ＯＵＴＰＵＴ＿ＳＴＡＴＵＳのネガエッジごとにアサートされる。ＭＥＭＯＲＹ＿ＦＵＬＬ＿ＣＬＲ信号のアサートに応答して、フリップフロップＦＦ２の値（ＭＥＭＯＲＹ＿ＦＵＬＬのステータス）が確定し、後段のマルチプレクサＭＵＸに出力される。またＭＥＭＯＲＹ＿ＦＵＬＬ＿ＣＬＲ信号のアサートに応答してフリップフロップＦＦ１の値が０となり、ＭＥＭＯＲＹ＿ＦＵＬＬに関連する割り込み要因がクリアされる。
【００８３】
ＭＥＭＯＲＹ＿ＦＵＬＬ＿ＣＬＲ信号は、フリップフロップＦＦ５，ＦＦ６にも供給される。ＭＥＭＯＲＹ＿ＦＵＬＬ＿ＣＬＲ信号のアサートに応答して、フリップフロップＦＦ６の値（ＭＥＭＯＲＹ＿ＯＶＥＲ＿ＦＬＯＷのステータス）が確定し、後段のマルチプレクサＭＵＸに出力される。またＭＥＭＯＲＹ＿ＦＵＬＬ＿ＣＬＲ信号のアサートに応答してフリップフロップＦＦ５の値が０となり、ＭＥＭＯＲＹ＿ＯＶＥＲ＿ＦＬＯＷに関連する割り込み要因がクリアされる。
【００８４】
ＡＤＣ＿ＤＯＮＥ＿ＣＬＲ信号は、ＯＵＴＰＵＴ＿ＳＴＡＴＵＳのポジエッジごとにアサートされる。ＡＤＣ＿ＤＯＮＥ＿ＣＬＲ信号のアサートに応答して、フリップフロップＦＦ４の値（ＡＤＣ＿ＤＯＮＥのステータス）が確定し、後段のマルチプレクサＭＵＸに出力される。またＡＤＣ＿ＤＯＮＥ＿ＣＬＲ信号のアサートに応答して、フリップフロップＦＦ３の値がゼロとなり、ＡＤＣ＿ＤＯＮＥに関連する割り込み要因がクリアされる。
【００８５】
図１０は、図９のパケット生成部１８４の動作を説明する図である。時刻ｔ０に、ＭＥＭＦＵＬ＿ＩＮＴ［１１：０］のいずれかのビットに１が立つと、対応するチャンネルのフリップフロップＦＦ１に１が格納され、ＳＢＤＴＣＭ２Ｏ信号がハイとなる。続いて、ＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳパケットを送信するためのバスコマンドが生成され、ｓｔａｔｕｓ＿ｌａｔｃｈ信号がアサートされる。ｓｔａｔｕｓ＿ｌａｔｃｈ信号のネガエッジによって、出力ステータスがＭＥＭＯＲＹ＿ＦＵＬＬに切り替わり、ＭＥＭＯＲＹ＿ＦＵＬＬ＿ＣＬＲ信号がアサートされ、フリップフロップＦＦ１（およびＦＦ５）の値が０となり、ＭＥＭＯＲＹ＿ＦＵＬＬの割り込み要因がクリアされる。またフリップフロップＦＦ２の出力が、フリップフロップＦＦ５の出力とともにマルチプレクサＭＵＸに入力され、ＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳパケットに格納される。
【００８６】
時刻ｔ１に、再びＭＥＭＦＵＬ＿ＩＮＴ［１１：０］のいずれかのビットに１が立つと、対応するチャンネルのフリップフロップＦＦ１に１が格納され、ＳＢＤＴＣＭ２Ｏ信号がハイとなる。続いて、ＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳパケットを送信するためのバスコマンドが生成され、ｓｔａｔｕｓ＿ｌａｔｃｈ信号がアサートされる。ｓｔａｔｕｓ＿ｌａｔｃｈ信号のネガエッジによって、出力ステータスがＡＤＣ＿ＤＯＮＥに切り替わり、ＡＤＣ＿ＤＯＮＥ＿ＣＬＲ信号がアサートされる。ＡＤＣ＿ＤＯＮＥ＿ＣＬＲ信号がアサートされると、ＦＦ４の出力がマルチプレクサＭＵＸに入力され、ＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳパケットに格納され、送信される。ただし、このパケットには、送信すべき割り込み要因であるＭＥＭＯＲＹ＿ＦＵＬＬに関する情報は含まれない。
【００８７】
ＡＤＣ＿ＤＯＮＥ＿ＣＬＲ信号がアサートでは、フリップフロップＦＦ１の値（すなわちＭＥＭＯＲＹ＿ＦＵＬＬの割り込み要因）はクリアされないため、ＳＢＤＴＣＭ２Ｏ信号はハイを維持する。したがって、ふたたび、バスコマンドＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳが生成され、ｓｔａｔｕｓ＿ｌａｔｃｈ信号がアサートされる。ｓｔａｔｕｓ＿ｌａｔｃｈ信号のネガエッジによって、出力ステータスがＭＥＭＯＲＹ＿ＦＵＬＬに切り替わり、ＭＥＭＯＲＹ＿ＦＵＬＬ信号がアサートされる。これにより、ＭＥＭＯＲＹ＿ＦＵＬＬに関する情報を含むパケットＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳが生成され、送信される。またフリップフロップＦＦ１がクリアされ、ＳＢＤＴＣＭ２Ｏ信号がローとなる。
【００８８】
時刻ｔ２に、ＭＥＭＯＲＹ＿ＦＵＬＬ，ＭＥＭＯＲＹ＿ＯＶＥＲ＿ＦＬＯＷ，ＡＤＣ＿ＤＯＮＥのすべての割り込み要因が発生し、ＳＢＤＴＣＭ２Ｏ信号はハイとなる。それに続くバスコマンドＳＥＮＤ＿ＴＣＭ＿ＳＴによって、ＡＤＣ＿ＤＯＮＥに関する割り込みが、上位コントローラ１１０に送信され、割り込み要因がクリアされる。
【００８９】
時刻ｔ３に、ＡＤＣ＿ＤＯＮＥ［１１：０］のいずれかのビットに１が立つと、対応するチャンネルのフリップフロップＦＦ３に１が格納される。
【００９０】
続くバスコマンドＳＥＮＤ＿ＴＣＭ＿ＳＴによって、ＭＥＭＯＲＹ＿ＦＵＬＬに関する割り込みが上位コントローラ１１０に送信され、割り込み要因がクリアされる。
【００９１】
この状態では、時刻ｔ３に発生した割り込み要因がまだ残っているため、ＳＢＤＴＣＭ２Ｏ信号はハイを維持している。そして次のバスコマンドＳＥＮＤ＿ＴＣＭ＿ＳＴによって、ＡＤＣ＿ＤＯＮＥに関する割り込みが上位コントローラ１１０に送信され、割り込み要因がクリアされる。
【００９２】
以上が直接割り込みの説明である。続いて直接割り込みの利点を説明する。従来の割り込みでは、ＣＰＵは、割り込み信号を監視し、割り込みを検出すると、波形データ取得モジュール１４０にアクセスして割り込み要因を読み出す必要があったため、オーバーヘッドが大きかった。
【００９３】
これに対して本実施の形態では、直接割り込みを受けた上位コントローラ１１０のＣＰＵ１１２は、パケットＳＥＮＤ＿ＴＣＭ＿ＳＴＡＴＵＳの中身を見ることにより、どのチャンネルでどのような割り込み要因が発生したかを直接知ることができる。したがって従来の割り込みよりも高速な通知が可能となる。
【００９４】
（エラー検出）
図７を参照する。バスインタフェース１１４は、波形データ取得モジュール１４０にリード命令を発行してから所定時間内にデータを受け取れない場合、処理を打ち切り、ＣＰＵ１１２にエラー割り込みをかける。
【００９５】
モジュールインタフェース１８０は、ローカルのリード命令を発行した後に、所定の時間内にキャプチャユニット１５０からデータが出力されない場合、処理を打ち切る。モジュールインタフェース１８０が処理を打ち切ると、上位コントローラ１１０のバスインタフェース１１４にもデータは伝送されなくなる。結果として、バスインタフェース１１４が所定時間内にデータを受け取れなくなるため、ＣＰＵ１１２にエラー割り込みがかかる。
【００９６】
続いて、パターンプログラムの進行と対応付けて、電源電流や電源電圧などのアナログ信号の波形データを取得するためのアーキテクチャを説明する。
【００９７】
図１１は、試験装置１００のブロック図である。上述のように、試験装置１００は多チャンネルで構成されるが、図１１では簡略化して１チャンネル分の構成のみを示す。
【００９８】
試験装置１００は、上位コントローラ１１０、波形データ取得モジュール１４０、ファンクション試験モジュール１３０を備える。
【００９９】
波形データ取得モジュール１４０は、Ａ／Ｄコンバータ１５２、信号処理部１５４、第１メモリユニット１５５、モジュールインタフェース１８０を備える。Ａ／Ｄコンバータ１５２は、ＤＵＴ２に関連する電気信号Ｓ１（たとえば電源電圧や電源電流）を、所定のサンプリングレートＦｓでデジタル信号Ｓ２に変換するデジタイザである。
【０１００】
信号処理部１５４は、必要に応じて、Ａ／Ｄコンバータ１５２の出力であるデジタル信号Ｓ２に対して信号処理を施す。信号処理の内容は特に限定されないが、たとえばキャリブレーション処理が例示される。
【０１０１】
第１メモリユニット１５５は、Ａ／Ｄコンバータ１５２により得られるデジタル信号Ｓ２にもとづくデジタルデータＳ３の列である波形データを格納する。第１メモリユニット１５５は、図２で説明したアーキテクチャで実装してもよく、メモリコントローラ１６０および２バンクのメモリ１５６Ａ，１５６Ｂを含みうる。
【０１０２】
モジュールインタフェース１８０は、上位コントローラ１１０とのインタフェースである。
【０１０３】
ファンクション試験モジュール１３０は、試験ユニット１３２、第２メモリユニット１３４、モジュールインタフェース１３６を含む。試験ユニット１３２は、ＤＵＴ２のためのパターンプログラムを実行する。パターンプログラムは、ＤＵＴ２に与えるべき信号（１／０）の組み合わせ（テストパターンあるいはテストベクトル）と、与えた信号に応答してＤＵＴ２から戻ってくるべき信号（期待値、Ｈ／Ｌ）の組み合わせを記述するＰＧ命令を、実行順にリスト化したものである。パターンプログラムは、その他、条件分岐、待機、トリガーを発生するためのＰＧ命令などを組み合わせて構成される。
【０１０４】
試験ユニット１３２の構成は特に限定されるものではないが、たとえば、パターンプログラムに記述されるテストパターンをＤＵＴ２に供給するドライバＤＲと、与えたテストパターンに応答してＤＵＴ２からの出力される信号を受信するレシーバ、レシーバが受信した信号をその期待値と比較し、一致、不一致を判定するコンパレータ、などを含む。
【０１０５】
第２メモリユニット１３４は、試験ユニット１３２によって得られた判定結果を記録する。モジュールインタフェース１３６は、上位コントローラ１１０とのインタフェースである。
【０１０６】
上位コントローラ１１０は、波形データ取得モジュール１４０およびファンクション試験モジュール１３０を制御するとともに、波形データ取得モジュール１４０およびファンクション試験モジュール１３０において得られたデータを収集する。
【０１０７】
図１２は、図１１の試験装置１００の動作を説明するタイムチャートである。上位コントローラ１１０は、波形データ取得モジュール１４０にサンプリングの開始を指示する（Ｓ１００）とともに、その時刻ｔ１のタイムスタンプを保持する。この時刻ｔ１は、上位コントローラ１１０の時間管理機能にもとづいて生成される。
【０１０８】
波形データ取得モジュール１４０のモジュールインタフェース１８０がサンプリング開始の指示（Ｓ１００）を受けると、第１メモリユニット１５５は、サンプリングの開始の時刻ｔ１’のタイムスタンプを記録する。この時刻ｔ１’は、上位コントローラ１１０から送信されるわけではなく、波形データ取得モジュール１４０のローカルの時間管理機能にもとづいて生成される。
【０１０９】
また上位コントローラ１１０は、ファンクション試験モジュール１３０に対して、パターンプログラムの実行開始を指示（Ｓ１０２）するとともにその時刻ｔ２のタイムスタンプを保持する。ファンクション試験モジュール１３０のモジュールインタフェース１３６が、パターンプログラムの実行開始の指示（Ｓ１０２）を受けると、第２メモリユニット１３４は、パターンプログラムの実行開始の時刻ｔ２のタイムスタンプを記録する。この時刻ｔ２は、ファンクション試験モジュール１３０のローカルの時間管理機能にもとづいて生成される。
【０１１０】
パターンプログラム中に、条件分岐や、待機が含まれない場合は、パターンプログラムの開始時刻だけ記録しておけば、それに続く各命令の実行時刻は推定することができる。ところが、実際のパターンプログラムは、条件分岐や、ループ、待機を含む場合が多く、その場合には、第２メモリユニット１３４は、時刻ｔ２に加えて、パターンプログラムに含まれる所定のアドレス…の命令（図１２においてハッチングを付す）の実行時刻ｔ３＿１，ｔ３＿１…のタイムスタンプを記録する。これによりパターンプログラムの進行と、波形を対応付けることができる。
【０１１１】
タイムスタンプを残すべき命令は、ユーザが指定可能である。パターンプログラムに、指定したアドレスの実行時刻においてタイムスタンプを残すための命令を追加してもよい。あるいは、パターンプログラムとは別に、タイムスタンプをとるべき箇所（パターンプログラムのアドレス）を指定するリストをユーザが用意して、ファンクション試験モジュール１３０がそのリストを読んで、タイムスタンプをとるようにしてもよい。
【０１１２】
また第２メモリユニット１３４は、所定のアドレスＡＤＲ１，ＡＤＲ２…の命令の実行ごとに、そのとき、あるいはその直前のＤＵＴ２への入力値を記録してもよい。ＤＵＴ２への入力値は、たとえばテストベクトルやテストパターンであってもよいし、その他の制御パラメータであってもよい。
【０１１３】
また第２メモリユニット１３４は、所定のイベントＥＶＴ１，ＥＶＴ２…ごとに、各イベントＥＶＴｊ（ｉ＝１，２…）の種類を示す識別子ＩＤｉとその発生時刻のタイムスタンプを記録してもよい。イベントＥＶＴは、ファンクション試験モジュール１３０による異常検知などであってもよい。
【０１１４】
上位コントローラ１１０は、適切なタイミングで第１メモリユニット１５５にアクセスし、波形データと開始時刻ｔ１’を読み出す。
【０１１５】
また上位コントローラ１１０は、適切なタイミングで第２メモリユニット１３４にアクセスし、試験ユニット１３２が生成したデータと、開始時刻ｔ２’や、所定命令の実行時刻ｔ３のタイムスタンプを読み出す。
【０１１６】
Ａ／Ｄコンバータ１５２のサンプリングレートＦｓは既知であり、波形データ取得モジュール１４０のローカルの時間軸での波形データのｊ番目のデータの時刻ｔｊ’は、
ｔｊ’＝ｔ１’＋ｊ×１／Ｆｓ
で表される。
【０１１７】
上位コントローラ１１０は、波形データ取得モジュールのローカル時刻ｔ１’を、上位コントローラの時間軸の時刻ｔ１にアラインする。このとき、上位コントローラ１１０の時間軸での波形データのｊ番目のデータの時刻ｔｊは、
ｔｊ＝ｔ１＋ｊ×１／Ｆｓ
に修正される。
またファンクション試験モジュールのローカル時刻ｔ２’を上位コントローラの時刻ｔ２にアラインすることで、波形データと、ファンクション試験の進行を対応付けることができる。
【０１１８】
図１３は、試験装置１００により得られる電源電流ＩＤＤの波形データと、パターンプログラムのＰＧ命令の対応関係の一例を示す図である。
【０１１９】
いま、ＤＵＴ２の状態を、切り替えながら、電源電流ＩＤＤを測定するケースを考える。時刻ｔ２’はパターンプログラムの実行開始時刻である。パターンプログラムは先頭のアドレスから順に実行されていく。そして、状態設定のためのＰＧ命令群３００が実行されることにより、ＤＵＴ２の内部状態が第１状態となる。ＰＧ命令群３００の実行が完了すると、測定のトリガー命令３０２が実行される。このトリガー命令３０２は、本来、電源電流ＩＤＤの測定開始（取り込み開始）を示すが、本実施の形態では、トリガー命令３０２より前に、電源電流ＩＤＤは連続的にサンプリングされていることに留意されたい。そして、測定の完了まで待機を指示する待機命令３０４が実行される。待機命令３０４の実行が完了すると、第１状態での電源電流ＩＤＤの測定が完了する。
【０１２０】
続いて、ＤＵＴ２を第２状態に設定するためのＰＧ命令群３０６が実行され、ＤＵＴ２の内部状態が切り替えられる。命令群３０６の実行が完了すると、測定のトリガー命令３０８が実行され、待機命令３１０が実行される。待機命令３１０の実行が完了すると、第２状態での電源電流ＩＤＤの測定が完了する。
【０１２１】
このような試験を行う際に、たとえば、トリガ命令３０２，３０８の実行時刻ｔ３＿１，ｔ３＿３を示すタイムスタンプを残してもよい。このタイムスタンプを後からチェックすることにより、ＤＵＴの状態が安定していたか、電流を取り込むべきタイミングとして適切であったか、を確認できる。具体的には、実行時刻ｔ３＿１、ｔ３＿３のタイムスタンプにもとづいて、それらに対応する時刻における電源電流ＩＤＤの波形をチェックできる。この例では、タイムスタンプｔ３＿１における電源電流ＩＤＤは安定しており、したがってＤＵＴの状態が安定していることが確認できる。一方、タイムスタンプｔ３＿３において電源電流ＩＤＤは過渡的に遷移しており、したがってＤＵＴの状態が安定しておらず、電源電流ＩＤＤの測定タイミングとして不適切であったことを確認できる。
【０１２２】
また時刻ｔ３＿２のタイムスタンプを記録しておくと、トリガー命令３０２に対して、待機命令の待ち時間が適切であったかを確認することができる。この情報は、待機命令３０４の設定時間を変更するような修正をパターンプログラムを施す際にも役立つ。
【０１２３】
なお図１３の波形は一例であり、実行されるパターンプログラムの中身や、タイムスタンプを残すべき命令は、ユーザが自由に決めることができる。
【０１２４】
試験装置１００によれば、図１３に示すように、波形データと、ファンクション試験モジュール１３０における命令（イベント）とを時間軸上で対応付けることが可能となり、パターンプログラムのどの工程において、監視対象の電気信号がどのように振る舞うのかを知ることができる。
【０１２５】
ここまでの説明では、ＤＣ試験においてパターンプログラムと同期した波形データの取得を説明したが、ＤＣ試験以外の試験、たとえばＡＣパラメトリック試験やファンクション試験、マージン試験についても、それらにおいて実行されるパターンプログラムと同期して、波形データを取得することができる。
【０１２６】
たとえば、波形データ取得モジュール１４０は、ＡＣパラメトリック試験やファンクション試験に必要な機能ブロックやＩＰをさらに含んでもよく、この場合、波形データ取得モジュール１４０は、それぞれの試験ユニットを兼ねることとなる。
【０１２７】
図１３には、１個のＤＵＴについて得られる波形データのみが示されるが、実施の形態に係る試験装置１００は、複数のＤＵＴを同時に測定可能である。一般に、複数のＤＵＴを同時測定する際には、ＤＵＴごとのファンクション試験モジュール１３０は独立に異なるタイミングで動作するところ、試験装置１００によれば、多数のＤＵＴそれぞれの波形データを、それぞれを制御するパターンプログラムの進行と対応付けて取得することができる。
【０１２８】
実施の形態にもとづき本発明を説明したが、実施の形態は、本発明の原理、応用を示しているにすぎず、実施の形態には、請求の範囲に規定された本発明の思想を逸脱しない範囲において、多くの変形例や配置の変更が認められる。
【符号の説明】
【０１２９】
ＤＵＴ  ２
１００  試験装置
１１０  上位コントローラ
１１２  ＣＰＵ
１１４  バスインタフェース
１１６  ＤＭＡコントローラ
１１８  メモリ
１２０  バススイッチ
１３０  ファンクション試験モジュール
１３２  試験ユニット
１３４  第２メモリユニット
１３６  モジュールインタフェース
１４０  波形データ取得モジュール
１５０  キャプチャユニット
１５２  Ａ／Ｄコンバータ
１５４  信号処理部
１５５  第１メモリユニット
１５６Ａ，１５６Ｂ  メモリ
１６０  メモリコントローラ
１６２  ライトエンコーダ
１６４  ライトセレクタ
１６６  ライトカウンタ
１６８  ステートマシン
１７０  命令デコーダ
１７２  リードカウンタ
１７４  出力セレクタ
１８０  モジュールインタフェース
１８２  シーケンサ
１８４  パケット生成部
【図１】
2020193899.tif 000003
【図２】
2020193899.tif 000004
【図３】
2020193899.tif 000005
【図４】
2020193899.tif 000006
【図５】
2020193899.tif 000007
【図６】
2020193899.tif 000008
【図７】
2020193899.tif 000009
【図８】
2020193899.tif 000010
【図９】
2020193899.tif 000011
【図１０】
2020193899.tif 000012
【図１１】
2020193899.tif 000013
【図１２】
2020193899.tif 000014
【図１３】
2020193899.tif 000015