以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、実施形態に係る試験装置100の構成例を示す図である。試験装置100は、半導体回路等の被試験デバイス200を試験する装置であって、試験制御部110、および、複数の試験部120を備える。
試験制御部110は、試験装置100の全体を制御する。例えば試験制御部110は、使用者等から与えられるプログラム、指示等に応じて、複数の試験部120を制御してよい。より具体的には、試験制御部110は、試験部120の動作周期を規定する基準クロックを生成してよく、試験部120の動作を制御する制御命令を生成してよい。また、試験制御部110は、それぞれの試験部120に、所定の試験プログラム、データパターンを予め格納してよい。
それぞれの試験部120は、与えられる試験プログラムに応じて動作して、被試験デバイス200を試験する。例えば試験部120は、与えられる試験プログラムに含まれるそれぞれの命令を順次実行して、各命令に応じて動作する。例えば試験プログラムには、予め与えられる複数のデータパターンを、どのような順序で出力するかを示すシーケンスが含まれてよい。
図2は、試験部120の構成例を示す図である。試験部120は、複数の試験モジュール122、複数のドライバ76、および、複数のコンパレータ86を有する。それぞれの試験モジュール122は、試験制御部110から与えられる試験プログラム、制御命令等に応じて動作する。
それぞれの試験モジュール122は、送信側シーケンサ124、シリアライザ36、デシリアライザ82、受信側シーケンサ126、変換制御部128、および、比較部140を有する。送信側シーケンサ124は、試験制御部110から試験プログラムおよびデータパターンを受け取り、当該試験プログラムに応じた順序でデータパターンを順次出力する。送信側シーケンサ124は、Nビット(ただし、Nは2以上の整数)のパラレルデータを出力する。
シリアライザ36は、送信側シーケンサからパラレルデータを受け取り、当該パラレルデータを、M本のシリアルデータ(ただし、MはNの約数)に変換して出力する。M本のシリアルデータは、Mビットのパラレルデータであってもよい。
変換制御部128は、シリアライザ36が出力するそれぞれのシリアルデータの周波数を、シリアライザ36が出力するシリアルデータの本数に応じて変更する。例えば変換制御部128は、それぞれのシリアルデータの周波数を、パラレルデータの周波数のN/M倍に制御する。具体例として、シリアライザ36が、32ビット、250MHzのパラレルデータを受け取り、1本のシリアルデータを出力する場合、変換制御部128は、当該シリアルデータの周波数を、250MHz×32/1=8GHzに制御する。
本例の変換制御部128は、8GHzで1本のシリアルデータ、4GHzで2本のシリアルデータ、・・・、500MHzで16本のシリアルデータ、250MHzで32本のシリアルデータのいずれかの組み合わせをシリアライザ36に出力させる。信号生成部として機能するドライバ76は、シリアライザ36が出力するそれぞれのシリアルデータから、被試験デバイス200に供給すべきアナログの試験信号をそれぞれ生成する。ドライバ76は、シリアルデータのパターンに応じた波形を有するアナログの試験信号を出力してよい。
また、ドライバ76は、1つのシリアライザ36に対して、N個設けられてよい。つまり、ドライバ76は、シリアライザ36が出力するシリアルデータの本数の最大値に応じた数が設けられてよい。当該ドライバ76のうち、シリアライザ36が出力するシリアルデータの本数に応じた個数のドライバ76が、試験信号を被試験デバイス200の対応するピンに印加する。このような構成により、試験装置100の出力ピン数と、試験信号の周波数とを多様な組み合わせに変更することができる。
コンパレータ86は、被試験デバイス200が出力する応答信号を受け取り、それぞれシリアルデータに変換してデシリアライザ82に入力する。コンパレータ86は、ドライバ76と同数設けられてよい。
デシリアライザ82は、対応する1または複数のコンパレータ86から受け取ったM本のシリアルデータを、Nビットのパラレルデータに変換する。デシリアライザ82が出力するパラレルデータの周波数は、シリアライザ36に入力されるパラレルデータの周波数と同一であってよい。デシリアライザ82は、シリアライザ36の逆の処理で、パラレルデータを生成してよい。例えばデシリアライザ82は、それぞれのシリアルデータのビットを、シリアルデータに対してM/N倍の周波数を有するパラレルデータの各ビットに割り当てて出力する。
受信側シーケンサ126は、被試験デバイス200が出力する応答信号に対する期待値パターンを生成する。受信側シーケンサ126は、試験制御部110から試験プログラムおよびデータパターンを受け取り、当該試験プログラムに応じた順序でデータパターンを順次出力することで、Nビットのパラレルデータで期待値パターンを出力する。
比較部140は、デシリアライザ82が出力するNビットのパラレルデータを、受信側シーケンサ126が出力するNビットの期待値パターンと比較する。比較部140は、デシリアライザ82が出力するパラレルデータが、期待値パターンと一致したか否かを、送信側シーケンサ124が出力した試験パターン毎に記録してよい。
図3Aは、シリアライザ36の動作を規定するテーブルの一例を示す。シリアライザ36は、パラレルデータに対して1/Nの周期の動作タイミングで、各シリアルデータの各ビットを出力可能な回路を有する。テーブルは、シリアライザ36に、それぞれのシリアルデータの各ビットを、いずれの動作タイミングで出力させるかを指定する。または、テーブルは、シリアライザ36に、それぞれの動作タイミングにおいて、パラレルデータのいずれのビットを出力させるかを指定する。
図3Aに示すテーブルの各列は、シリアライザ36に与えられるパラレルデータの1周期分のビットを示す。また、当該テーブルの各行は、シリアライザ36がシリアルデータの各ビットを出力する動作タイミングを示す。それぞれの動作タイミングは、パラレルデータの1周期をN個に分割する動作タイミングを示す。本例では、N=32として、シリアライザ36が、パラレルデータに対して32倍の周波数を有するシリアルデータを1本出力する例を説明する。
この場合、図3Aに示すように、パラレルデータの各周期について、各動作タイミングでパラレルデータの各ビットを1つ(S1)ずつ順番に選択して出力するテーブルが設定される。シリアライザ36は、パラレルデータの各周期で受け取る32ビットのデータを、当該テーブルに応じて、パラレルデータの周期を32分割した各動作タイミングで1ビットずつ順次出力する。これにより、シリアライザ36は、パラレルデータに対して32倍の周波数を有するシリアルデータを1本(S1)出力する。
図3Bは、シリアライザ36の動作を規定するテーブルの他例を示す。本例では、シリアライザ36が、パラレルデータに対して16倍の周波数を有するシリアルデータを2本出力する例を説明する。
この場合、図3Bに示すように、1つおきの動作タイミングで、パラレルデータのビットを2つ(S1、S2)ずつ順番に選択して出力するテーブルが設定される。シリアライザ36は、パラレルデータの各周期で受け取る32ビットのデータを、当該テーブルに応じて、パラレルデータの周期を16分割した各動作タイミングで2ビットずつ順次出力する。
なお、シリアライザ36が出力する各ビットは、それぞれがシリアルデータに対応する。これにより、シリアライザ36は、パラレルデータに対して16倍の周波数を有するシリアルデータを2本(S1、S2)出力する。テーブルは、図3Bに示すように、パラレルデータの各ビットを、いずれのシリアルデータ(S1、S2)のビットとして出力させるかを指定してよい。
図3Cは、シリアライザ36の動作を規定するテーブルの他例を示す。本例では、シリアライザ36が、パラレルデータに対して1倍の周波数を有するシリアルデータを32本出力する例を説明する。
この場合、図3Cに示すように、いずれか1つの動作タイミングで、パラレルデータのビットを全て並列に出力するテーブルが設定される。シリアライザ36は、パラレルデータの各周期で受け取る32ビットのデータを、当該テーブルに応じて、いずれか1つの動作タイミングで全て並列に出力する。
これにより、シリアライザ36は、パラレルデータに対して1倍の周波数を有するシリアルデータを32本(S1、S2、・・・、S32)出力する。図3Aから図3Cに示したように、シリアライザ36に対して、パラレルデータの各ビットを、いずれの動作タイミングで出力するかを制御することで、共通のシーケンサおよびシリアライザ36を用いて、多様な周波数のシリアルデータを出力することができる。
なお、図3Aから図3Cの例では、入力されるパラレルデータの上位側ビットから順番に、出力されるシリアルデータS1、S2、・・・に順番に割り当てる(または、出力されるパラレルデータの上位側ビットから順番に割り当てる)例を説明した。ただし、ビットの割り当ては、図3Aから図3Cの例に限定されない。変換制御部128は、シリアライザ36に、入力されるパラレルデータの各ビットを、出力される複数のシリアルデータのうち、いずれのシリアルデータのビットとして出力するか(または、出力されるパラレルデータのいずれのビットとして出力するか)を、テーブルを更新することで制御してよい。
例えば変換制御部128は、被試験デバイス200のインターフェースの仕様に応じて、シリアライザ36に入力されるパラレルデータの各ビットを、出力側のいずれのビットとして出力させるかを変更してよい。より具体的な例としては、変換制御部128は、入力されるデータの最上位ビットおよび最下位ビットを入れ換えて出力してよい。
図4は、シリアライザ36の構成例を示す図である。シリアライザ36は、N個のバッファ142、N個の変換部144、および、テーブル格納部146を有する。テーブル格納部146は、図3Aから図3Cに関連して説明したテーブルを格納して、シリアライザ36の動作を制御する。
N個のバッファ142は、パラレルデータの各ビットに対応して設けられ、対応するビットのデータを格納する。それぞれのバッファ142は、複数のビットを格納できるFIFOバッファであってよい。
N個の変換部144は、それぞれが全てのバッファ142に接続される。それぞれの変換部144は、1又は複数のバッファ142を選択して、選択したバッファ142から与えられるデータを、シリアルデータに変換して出力する。変換部144は、図3Aから図3Cに関連して説明したいずれかのシリアルデータ(S1、S2、・・・、S32)に対応付けられる。また、それぞれの変換部144には、パラレルデータに対して1/N倍の周期を有する動作クロックが与えられ、当該動作クロックに応じてシリアルデータの各ビットを出力できる。
上述したようにテーブル格納部146は、それぞれの変換部144が、いずれのバッファ142のデータをシリアルデータに変換すべきか、および、いずれの動作タイミングでシリアルデータの各ビットを出力するかを指定する。変換制御部128は、テーブル格納部146が格納したテーブルを更新することで、シリアライザ36が出力するシリアルデータの本数およびシリアルデータの周波数を制御する。具体的には、変換制御部128は、テーブルにおける、それぞれの動作タイミングで出力される、パラレルデータのビットの指定を変更することで、シリアライザが出力するシリアルデータの本数および周波数を制御してよい。
例えば、図3Aに示した例では、シリアルデータS1に対応する変換部144−1が、全てのバッファ142のデータを、各動作タイミング(t1、t2、・・・、t32)で順番に1つずつ出力することで、シリアルデータS1を出力する。他の変換部144は、対応するシリアルデータ(S2、S3、・・・、S32)が指定されていないので、データを出力しない。これにより、シリアライザ36は、パラレルデータに対して32倍の周波数を有するシリアルデータを1本出力する。
それぞれの変換部144は、対応するシリアルデータが指定されているか否かを、テーブルにおいて同一の動作タイミングで指定されるビット数により判定してもよい。例えば、テーブルにおいて同一の動作タイミングで指定されるビット数がk個の場合、変換部144−1から変換部144−kまでが、シリアルデータを出力すべく動作してよい。
また、図3Bに示した例では、変換部144−1が、奇数番目のバッファ142のデータを、1つおきの動作タイミング(t1、t3、・・・、t31)で順番に出力することで、シリアルデータS1を出力する。また、変換部144−2が、偶数番目のバッファ142のデータを、1つおきの動作タイミングで順番に出力することで、シリアルデータS2を出力する。他の変換部144は、動作しなくともよい。これにより、シリアライザ36は、パラレルデータに対して16倍の周波数を有するシリアルデータを2本出力する。
また、図3Cに示した例では、変換部144−1から変換部144−32が、それぞれ対応する1つのバッファ142のデータを、1つの動作タイミングt1で出力する。これにより、シリアライザ36は、パラレルデータに対して1倍の周波数を有するシリアルデータを32本出力する。なお、シリアライザ36の構成は、図4の構成に限定されない。シリアライザ36は、上述した機能を実現する多様な構成を有してよい。
なお、各試験モジュール122は、送信側シーケンサ124および受信側シーケンサ126が共通であってもよい。また、送信側シーケンサ124および受信側シーケンサ126の一部が共通であってもよい。例えば、シーケンサが、上位のシーケンサおよび下位のシーケンサに分かれる場合に、上位のシーケンサが共通であってもよい。
このような場合、それぞれの試験モジュール122におけるシリアライザ36は、いずれかのシーケンサからパラレルデータを受け取る。変換制御部128は、同一のシーケンサからパラレルデータを受け取る複数のシリアライザ36に対して、同一のテーブルを設定する。
図5は、試験モジュール122の他の構成例を示す図である。本例では、所定の試験機能が予め割り当てられたパケット単位で、被試験デバイス200とデータを受け渡す試験モジュール122について説明する。本例の試験モジュール122は、実行処理部18および通信処理部16を有する。
実行処理部18は、試験プログラム記憶部132と、プログラム供給部134と、フロー制御部136とを有する。また、それぞれの通信処理部16は、送信側ブロック12と、受信側ブロック14と、変換制御部128とを有する。送信側ブロック12は、図2に関連して説明したシリアライザ36を含み、受信側ブロック14は、図2に関連して説明したデシリアライザ82を含む。また、変換制御部128は、図2に関連して説明した変換制御部128と同一であってよい。
試験プログラム記憶部132は、試験制御部110から与えられる試験プログラムを記憶する。プログラム供給部134は、試験プログラム記憶部132に記憶された試験プログラムから、対応する通信処理部16により通信される一連のパケットをそれぞれ含む複数のパケットリストを生成して、送信側ブロック12および受信側ブロック14に設けられたパケットリスト記憶部60(図6および図7参照)に格納する。
パケットリストは、所定の試験機能を実行するために生成されるべき複数のパケットの識別情報を、実行されるべき順番で示すリストであってよい。例えばパケットリストは、セットアップパケット、送信データパケット、ACKパケット等を順番に指定するリストであってよい。プログラム供給部134は、試験プログラムにより実行されるべき各試験機能に対応するパケットリストを生成して、パケットリスト記憶部60に記憶してよい。また、プログラム供給部134は、パケットリスト記憶部60に記憶したパケットリストを実行させる順番を記述した制御プログラムを生成して、フロー制御部136に供給する。
フロー制御部136は、制御プログラムに応じて、対応する通信処理部16に対して、複数のパケットリストのそれぞれを実行する順序を指定する。より具体的には、フロー制御部136は、プログラム供給部134から供給された制御プログラムを実行して、対応する通信処理部16に対して、パケットリスト記憶部60に格納された複数のパケットリストのうち次に実行すべきパケットリストを特定する。
フロー制御部136は、一例として、次に実行すべきパケットリストのアドレスを通信処理部16へ送信する。また、フロー制御部136は、制御プログラムに、条件分岐、無条件分岐またはサブルーチン呼び出し等の演算式が含まれる場合、試験モジュール122が被試験デバイス200から受信した受信パケットの内容等に応じて、次に実行すべきパケットリストを特定する。送信側ブロック12および受信側ブロック14は、フロー制御部136により順次指定されるパケットリストに含まれる一連のパケットを、対応する被試験デバイス200との間で順次通信して、対応する被試験デバイス200を試験する。
送信側ブロック12は、例えば、アドレスを指定してデータを読み出すべく被試験デバイス200を動作させるリードパケット、アドレスを指定して所定のデータを書き込むべく被試験デバイス200を動作させるライトパケット等を、被試験デバイス200に供給する。また、送信側ブロック12は、並列に送信するパケット数と、パケットの信号周波数とを、図2から図4に関連して説明したように、変換制御部128からの制御に応じて変更する。
被試験デバイス200は、試験モジュール122から受け取った各パケットに応じて動作して、動作結果を受信側ブロック14に送信する。受信側ブロック14は、被試験デバイス200から受け取った受信パケットに基づいて、被試験デバイス200の動作の良否を判定する。例えば受信側ブロック14は、送信側ブロック12が送信した送信パケットに含まれるパターンデータに応じた期待値パターンを生成して、受信パケットと比較してよい。
図6は、送信側ブロック12の構成例を示す図である。送信側ブロック12は、パケットリスト処理部22、パケット命令列記憶部24、パケットデータ列記憶部26、下位シーケンサ28、データ処理部32、データ変換部34、パケットリスト記憶部60、および、シリアライザ36を有する。
パケットリスト処理部22は、パケットリスト記憶部60に記憶された複数のパケットリストのうちフロー制御部136により指定されたパケットリストを実行して、被試験デバイス200と通信する各パケットを順次指定する。パケットリスト処理部22は、一例として、フロー制御部136から受信したアドレスからパケットリストを実行して、被試験デバイス200に送信するパケットを順次指定する。
パケットリスト処理部22は、一例として、指定したパケットを発生するための命令列が記憶されたパケット命令列記憶部24上のアドレスを指定する。更に、パケットリスト処理部22は、一例として、被試験デバイス200との間で通信するパケットについて、パケットデータ列記憶部26内における当該パケットに含まれるデータ列のアドレス(例えばデータ列の先頭アドレス)を指定する。
このようにパケットリスト処理部22は、パケットを発生させるための命令列のアドレスと、当該パケットに含まれるデータ列のアドレスを個別に指定する。なお、この場合において、パケットリスト中において、2以上のパケットに対して共通する命令列またはデータ列が指定されている場合に、パケットリスト処理部22は、当該2以上のパケットについて同一の命令列のアドレスまたは同一のデータ列のアドレスを指定してもよい。
パケット命令列記憶部24は、複数種類のパケットのそれぞれを発生するための命令列を、パケットの種類毎に記憶する。パケット命令列記憶部24は、一例として、ライトパケットを発生するための命令列、リードパケットを発生するための命令列等を記憶する。
パケットデータ列記憶部26は、複数種類のパケットのそれぞれに含まれるデータ列を、パケットの種類毎に記憶する。パケットデータ列記憶部26は、一例として、ライトパケットに含まれるデータ列、リードパケットに含まれるデータ列、および、アイドルパケットに含まれるデータ列等を含んでよい。
パケットデータ列記憶部26は、一例として、共通データ記憶部40と、共通データポインタ42と、第1の個別データ記憶部44−1と、第2の個別データ記憶部44−2と、第1の個別データポインタ46−1と、第2の個別データポインタ46−2とを含んでよい。共通データ記憶部40は、複数種類のパケットのそれぞれに含まれるデータ列中における、パケットの種類毎に共通の共通データを記憶する。共通データ記憶部40は、一例として、パケットの種類毎に、パケットの始まりを示すスタートコード、パケットの終わりを示すエンドコード、および、当該パケットの種別を識別するためのコマンドコード等を記憶する。
共通データポインタ42は、パケットリスト処理部22により指定されたパケットに含まれる共通データが格納されたブロックの先頭アドレスを、パケットリスト処理部22から取得する。更に、共通データポインタ42は、当該ブロック内におけるオフセット位置を、下位シーケンサ28から取得する。そして、共通データポインタ42は、先頭アドレスおよびオフセット位置に基づき定まるアドレス(例えば先頭アドレスにオフセット位置を加算したアドレス)を共通データ記憶部40に与えて、当該アドレスに格納された共通データをデータ処理部32へ供給させる。
第1及び第2の個別データ記憶部44−1、44−2は、複数種類のパケットのそれぞれに含まれるデータ列中における、パケット毎に変更する個別データを記憶する。第1及び第2の個別データ記憶部44−1、44−2は、一例として、各パケットに含まれる、被試験デバイス200に対して送信する実体データまたは被試験デバイス200から受信する実体データを記憶してよい。
第1の個別データ記憶部44−1は、実行されるパケットリストに関わらず予め定められた個別データを記憶する。第2の個別データ記憶部44−2は、実行されるパケットリスト毎に変更される個別データを記憶する。第2の個別データ記憶部44−2は、一例として、試験に先立ってまたは試験中において適宜に、実行処理部18内のフロー制御部136から個別データの転送を受ける。
第1及び第2の個別データポインタ46−1、46−2は、パケットリスト処理部22により指定されたパケットに含まれる個別データが格納されたブロックの先頭アドレスを、パケットリスト処理部22から受け取る。更に、第1及び第2の個別データポインタ46−1、46−2は、当該ブロック内におけるオフセット位置を、下位シーケンサ28から取得する。
そして、第1及び第2の個別データポインタ46−1、46−2は、先頭アドレスおよびオフセット位置に基づき定まるアドレス(例えば先頭アドレスにオフセット位置を加算したアドレス)を第1及び第2の個別データ記憶部44−1、44−2に与える。そして、第1及び第2の個別データポインタ46−1、46−2は、第1及び第2の個別データ記憶部44−1、44−2の当該アドレスに格納された個別データをデータ処理部32へ供給させる。
下位シーケンサ28は、パケットリスト処理部22により指定されたパケットの命令列、即ち、パケットリスト処理部22によりアドレスが指定された命令列をパケット命令列記憶部24から読み出して、読み出した命令列に含まれる各命令を順次に実行する。更に、下位シーケンサ28は、パケットリスト処理部22により指定されたパケットのデータ列、即ち、パケットリスト処理部22によりアドレスが指定されたデータ列を、命令列の実行に従って順次にパケットデータ列記憶部26から出力させて、被試験デバイス200との間の試験に用いる試験データ列を生成する。
下位シーケンサ28は、一例として、パケットリスト処理部22により指定されたパケットに含まれるデータ列が格納されたブロック中における、実行した命令に対応するデータの位置を表わすオフセット位置を、共通データポインタ42、個別データポインタ46−1および個別データポインタ46−2に供給する。この場合において、下位シーケンサ28は、最初の命令において初期値を発生して、実行する命令が遷移する毎にインクリメントされるカウント値を、オフセット位置として発生してもよい。
また、下位シーケンサ28は、命令の実行毎に、読み出した個別データおよび共通データに対して指定した処理(演算またはデータ変換)を施すことを指示する制御データをデータ処理部32およびデータ変換部34に与える。これにより、下位シーケンサ28は、パケットリスト処理部22により指定されたパケット中における、指定されたデータ部分を、読み出したデータに対して指定した処理を施したデータとすることができる。
また、下位シーケンサ28は、命令の実行毎に、共通データ、個別データ(実行されるパケットリストに関わらず予め定められた個別データまたは実行されるパケットリスト毎に変更される個別データ)、および、データ処理部32が処理を施したデータのいずれを出力するかを、データ処理部32に対して指定する。即ち、下位シーケンサ28は、命令の実行毎に、共通データ記憶部40、第1の個別データ記憶部44−1、第2の個別データ記憶部44−2、または、データ処理部32内の指定した処理を施したデータが格納されたレジスタのいずれからデータを読み出して出力するかを、データ処理部32に対して指定する。
これにより、下位シーケンサ28は、パケットリスト処理部22により指定されたパケット中における、パケット毎に変更すべきデータ部分を個別データ記憶部44から読み出した個別データから生成することができる。更に、下位シーケンサ28は、パケットリスト処理部22により指定されたパケット中における、パケットの種類毎に共通するデータ部分を共通データ記憶部40から読み出した共通データから生成することができる。また、更に、下位シーケンサ28は、パケットリスト処理部22により指定されたパケット中における指定されたデータ部分に対して、指定した処理を施すことができる。
また、下位シーケンサ28は、パケットリスト処理部22により指定されたパケットの命令列の実行が完了したことに応じて、終了通知をパケットリスト処理部22に与えてよい。これにより、パケットリスト処理部22は、下位シーケンサ28による命令列の実行の進行に応じて、順次にパケットを指定することができる。
また、下位シーケンサ28は、受信側ブロック14が有する受信側の下位シーケンサ28と通信する。これにより、送信側ブロック12が有する送信側の下位シーケンサ28は、受信側ブロック14が有する受信側の下位シーケンサ28とハンドシェイクを実行して、受信側の下位シーケンサ28と同期して命令列を実行することができる。
送信側の下位シーケンサ28は、一例として、予め指定されたパケットの試験データ列を被試験デバイス200に送信したことを受信側の下位シーケンサ28に通知する。これにより、送信側の下位シーケンサ28は、受信側の下位シーケンサ28に、送信側の下位シーケンサ28からの通知を受けるまでの間、受信したデータ列の良否判定を禁止させることができる。
また、送信側の下位シーケンサ28は、一例として、受信側の下位シーケンサ28から、生成した試験データ列と一致するデータ列を受信したことの通知を受けて、予め指定されたパケットの試験データ列を生成する。これにより、送信側の下位シーケンサ28は、所定のパケットを被試験デバイス200から受信した後に、予め指定されたパケットを被試験デバイス200に送信することができる。
データ処理部32は、パケットデータ列記憶部26からパケットリスト処理部22により指定されたパケットのデータ列を読み出して、被試験デバイス200の試験に用いる試験データ列を生成する。データ処理部32は、一例として、共通データ記憶部40、第1の個別データ記憶部44−1および第2の個別データ記憶部44−2からのデータを入力して、入力したデータに対して下位シーケンサ28により指定された処理をして試験データ列の各データとして出力する。
データ変換部34は、下位シーケンサ28から指定されたタイミングにおいて、データ処理部32から出力した試験データ列をデータ変換したパラレルデータを出力する。データ変換部34は、一例として、試験データ列に対して予め設定されたテーブル等により8b−10b変換等を行う。更に、データ変換部34は、一例として、試験データ列に対してスクランブル処理を行ってもよい。そして、データ変換部34は、変換したパラレルデータ列を出力する。
シリアライザ36は、データ変換部34から出力されたNビットのパラレルデータを、M個のシリアルデータに変換して、ドライバ76に出力する。シリアライザ36は、図2から図4に関連して説明したシリアライザ36と同一であってよい。
このような構成により、パケットシーケンスを表わすパケットリストと、パケット内の命令列とが、別個のシーケンサにより実行される。これにより、プログラムの記述を簡単にすることができる。更に、共通の種類のパケットを発生するための命令列およびデータを共用化することができるので、格納する情報量を少なくすることができる。
更に、下位シーケンサ28が実行する命令列のアドレスおよび下位シーケンサ28が読み出すデータ列のアドレスを、パケットリスト処理部22から個別に指定する。これにより、同一の命令列によって、異なるデータ列を発生することができる。従って、同一の命令列を複数個格納しなくてよいので、格納する情報量を少なくすることができる。
また、シリアライザ36および変換制御部128により、出力するシリアルデータの周波数および本数を多様に変更する。このため、パケットのデータ列を生成する比較的に複雑な構造を、シリアルデータの複数の周波数に対して共通に用いることができる。
図7は、受信側ブロック14の構成例を示す図である。受信側ブロック14は、図6に示される送信側ブロック12と略同一の構成および機能を有する。受信側ブロック14が有する部材のうち、送信側ブロック12が有する部材と略同一の構成及び機能を部材については、同一の符号を付けて相違点を除き説明を省略する。
受信側ブロック14は、パケットリスト処理部22と、パケット命令列記憶部24と、パケットデータ列記憶部26と、下位シーケンサ28と、データ処理部32と、データ変換部34と、パケットリスト記憶部60と、デシリアライザ82と、判定部84とを含む。デシリアライザ82は、M個のコンパレータ86から受信パケットのデータ列を受信して、Nビットのパラレルデータに変換する。デシリアライザ82は、図2に関連して説明したデシリアライザ82と同一であってよい。
受信側ブロック14内のデータ変換部34は、下位シーケンサ28から指定されたタイミングにおいて、デシリアライザ82により受信されたデータ列をデータ変換する。受信側ブロック14内のデータ変換部34は、一例として、受信したデータ列に対して予め設定されたテーブル等により8b−10b変換等を行う。更に、受信側ブロック14内のデータ変換部34は、一例として、受信したデータ列に対してデスクランブル処理を行ってもよい。そして、受信側ブロック14内のデータ変換部34は、変換したデータ列を出力する。
そして、受信側ブロック14内のデータ変換部34は、変換したデータ列を判定部84へ供給する。更に、受信側ブロック14内のデータ変換部34は、変換したデータ列をパケットデータ列記憶部26内の第2の個別データ記憶部44−2の指定されたアドレスに格納させてもよい。
受信側ブロック14内のパケットリスト処理部22は、一例として、フロー制御部136から受信したアドレスからパケットリストを実行する。そして、受信側ブロック14内のパケットリスト処理部22は、被試験デバイス200から受信されると期待されるパケットを順次指定する。
受信側ブロック14内の下位シーケンサ28は、被試験デバイス200から出力が期待されるパケットのデータ列を、試験データ列としてパケットデータ列記憶部26から出力させる。また、受信側ブロック14内の下位シーケンサ28は、デシリアライザ82に対して、被試験デバイス200から出力された信号のデータ値を取り込むストローブタイミングを指定する。受信側ブロック14内のデータ処理部32は、生成した試験データ列を判定部84に供給する。
判定部84は、データ処理部32から試験データ列を受け取るとともに、データ変換部34から受信したデータ列を受け取る。判定部84は、受信したデータ列を試験データ列と比較した結果に基づいて、被試験デバイス200との間における通信の良否を判定する。判定部84は、一例として、デシリアライザ82が受信したデータ列と試験データ列とが一致するか否かを比較する論理比較部と、比較結果を記憶するフェイルメモリとを含む。また、判定部84は、一例として、デシリアライザ82が受信したデータ列が指定されたデータ列と一致したことを下位シーケンサ28に通知してもよい。
また、受信側ブロック14内の下位シーケンサ28は、図6に示される送信側ブロック12が有する送信側の下位シーケンサ28と通信する。これにより、受信側ブロック14が有する受信側の下位シーケンサ28は、送信側ブロック12が有する送信側の下位シーケンサ28とハンドシェイクを行って、送信側の下位シーケンサ28と同期して命令列を実行することができる。
受信側の下位シーケンサ28は、一例として、当該受信側の下位シーケンサ28が生成した試験データ列と一致するデータ列を受信したことを送信側の下位シーケンサ28に通知する。これにより、送信側の下位シーケンサ28は、受信側の下位シーケンサ28から、生成した試験データ列と一致するデータ列を受信したことの通知を受けて、予め指定されたパケットの試験データ列を生成することができる。
また、受信側の下位シーケンサ28は、一例として、送信側の下位シーケンサ28から、予め指定されたパケットの試験データ列を被試験デバイス200に送信したことの通知を受けるまでの間、判定部84によるデータ列の良否判定を禁止する。これにより、受信側の下位シーケンサ28は、所定のパケットを被試験デバイス200へ送信した後に、当該所定のパケットに応じた応答が被試験デバイス200から出力されたか否かを判定することができる。
図8は、図5に関連して説明した試験モジュール122の処理フローを示す。まず、パケットリスト処理部22は、パケットリストを実行して、被試験デバイス200との間で通信する各パケットを順次指定する(S801、S806)。
下位シーケンサ28は、パケットリスト処理部22によるパケットの指定を受けると、ステップS802からステップS805の処理を繰り返して実行する。下位シーケンサ28は、パケットの指定を受けると、当該パケットを発生するための命令列を、パケット命令列記憶部24から呼び出して、先頭の命令から順次に実行する。下位シーケンサ28は、各命令の実行毎に、ステップS803及びステップS804の処理を実行する(S802、S805)。
ステップS803において、下位シーケンサ28は、当該命令に対応するデータを出力する。また、ステップS804において、下位シーケンサ28は、当該命令に対応する、演算またはデータ変換を実行させる。下位シーケンサ28は、ステップS803およびステップS804を並行して実行する。
下位シーケンサ28は、最後の命令を実行すると、処理をパケットリスト処理部22に戻して、パケットリスト処理部22から次のパケットの指定を受ける(S805)。そして、パケットリスト処理部22は、パケットシーケンスにおける最後のパケットまでの処理が完了すると、当該フローを終了する(S806)。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、請求の範囲の記載から明らかである。
請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を、後の処理で用いるのでない限り、任意の順序で実現しうることに留意する。請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。