本実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
図1は、本実施の形態に従うテスト装置の構成を説明する概略図である。
図1を参照して、本実施の形態に従うテスト装置10は、テスタ端末2により必要な所定のテストパターンの入力が可能なように設けられている。
そして、テスタ端末2によるテスト装置10の設定の後、テスト装置10は被試験デバイス100に対して所定のテストパターンに基づくテストを実行する。
テスト装置10は、BUSインターフェース基板12と、コントロール基板14と、各ピン毎に制御するためのピンエレクトロニクス基板20とを含む。
ここで、コントロール基板14は1枚であり、ピンエレクトロニクス基板20は、複数枚(基板数N)設けられている。
コントロール基板14は、ピンエレクトロニクス基板20を一括して制御する。
BUSインターフェース基板12は、テスタ端末2と接続されて、テスタ端末2から所定のテストパターンの入力を受ける。
具体的には、テスタ端末2からBUSインターフェース基板12を介してインストラクションメモリ18に対して所定のテストパターンのプログラムを実行するためのインストラクションコードが格納される。また、各ピン毎に対応して設けられる各ピンエレクトロニクス基板20のピンコントロールメモリ22に対して所定のテストパターンのデータであるピンデータが格納される。
コントロール基板14は、基準クロックを生成するとともに、基準クロックを分配する基準クロック分配回路16と、プログラム制御回路30と、インストラクションメモリ18とを含む。本例においては、コントロール基板14およびピンエレクトロニクス基板20の各回路は、基準クロックに同期して動作する。
インストラクションメモリ18およびピンコントロールメモリ22は、テスタ端末2からBUSインターフェース基板12を介して所定のテストパターンとしてダウンロードされたプログラムカウンタ(PC)値に対応付けられたインストラクションコードおよびピンデータを格納する。
プログラム制御回路30は、インストラクションメモリ18からインストラクションコードを読み出して、読み出されたインストラクションコードに基づく制御信号をピンエレクトロニクス基板20に出力する。
本例におけるコントロール基板14は、プログラムカウンタ(PC)値をピンエレクトロニクス基板20に出力せず、インストラクションコード等に基づく制御信号を出力する。
各ピンエレクトロニクス基板20は、ピンコントロールメモリ制御回路50と、ピンコントロールメモリ22とを含む。
各ピンエレクトロニクス基板20のピンコントロールメモリ制御回路50は、ピンコントロールメモリ22にアクセスしてピンデータを読み出して被試験デバイス100に出力する。
ピンエレクトロニクス基板の枚数に従って被試験デバイス100の多数個のピンの同時測定が可能となる。
図2は、本実施の形態に従うテスト動作を説明するフロー図である。
図2を参照して、まず、テストパターンをロードする(ステップS2)。具体的には、所定のテストパターンをベクターの進行制御(プログラム)を規定するインストラクションコードと、ピンデータで構成されるピンコードとに分け、BUSインターフェース基板12経由で、それぞれプログラムカウンタ値に対応付けられてインストラクションメモリ18とピンコントロールメモリ22とに書込む。各ピンコントロールメモリ22には、ピンコードの一部(各ピン毎のデータ群)が格納される。
そして、次に、テストパターンをスタートする(ステップS4)。具体的には、所定のテストパターンの先頭値(初期値)をプログラム制御回路30のプログラムカウンタにセットし、BUSインターフェース基板12経由でPCスタート信号をプログラム制御回路30に出力する。
そして、被試験デバイスのテストを実行する(ステップS6)。具体的には、本例においては、所定のテストパターンに従うインストラクションコードがインストラクションメモリ18から読みだされて、4ビットの制御信号がピンエレクトロニクス基板20に出力される。そして、ピンコントロールメモリ制御回路50において、4ビットの制御信号に従ってPC値が調整されて、PC値に従うデータをピンデータとして被試験デバイスに出力してテストする。
そして、所定のテストパターンに従うテスト完了後、テスト動作を終了する。
図3は、本実施の形態に従う所定のテストパターンの一例を説明する図である。
図3を参照して、ここでは、インストラクションコードと、ピンコードとが対応付けられて記載されたテストパターンが示されている。
一例として、プログラムカウンタ(PC)値「0」〜「8」に従って動作するインストラクションコードが示されさている。当該インストラクションコードは、PC値に対応付けられてインストラクションメモリ18に格納される。
また、ピンコードは、ピン毎に分解されてピンデータ群としてピンコントロールメモリ22にそれぞれ格納される。
一例として、プログラムカウンタ(PC)値「0」〜「8」に従って出力されるピンデータ群「010101010」が点線枠で示されている。
また、括弧書きで各インストラクションコードが指示する内容が示されている。
図4は、本実施の形態に従うインストラクションコードについて説明する図である。
図4を参照して、ここでは、本例におけるインストラクションコードは、16進数標記のコードとして記述されている。
ここでは、「NOP(次処理に進む)」、「REP 2(繰り返し処理)」、「STOP(停止処理)」、「C1J −1(ジャンプ処理)」等のコード対応表が示されている。
当該コードを用いて図3で記述されている各インストラクションコードについて説明する。
なお、ここでは、引数も含めてコード化されている場合が示されている。一例として、インストラクションコードの上位値は命令コードを示し、下位値は引数値を示すものとする。
インストラクションコード「C2L 3」、「C1L 3」は、後述するループレジスタ(C1レジスタおよびC2レジスタ)に「3」をそれぞれ設定することを指示する命令コードである。
また、インストラクションコード「JST1」および「JST2」は、ラベルとして登録することを指示する命令コードである。当該ラベルは、後述するジャンプ処理の飛び先アドレスを指定するものとなる。
また、インストラクションコード「C1J −1」は、1つ前のPC値にジャンプすることを指示する命令コードである。
また、インストラクションコード「C2J −5」は、5つ前のPC値にジャンプすることを指示する命令コードである。
また、インストラクションコード「NOP」は、何の処理もせず次に進むことを指示する命令コードである。
また、インストラクションコード「REP 2」は、リピート処理することを指示する命令コードである。
また、インストラクションコード「STOP」は、処理を停止することを指示する命令コードである。
なお、図3の所定のテストパターンは、2重ループのジャンプ処理を含むものとなっている。
図5は、本実施の形態に従うプログラム制御回路30の機能を説明する概略ブロック図である。
図5を参照して、プログラム制御回路30は、プログラムカウンタ32と、コード解析回路34と、セレクタ36と、プログラムカウンタ(ジャンプ用)38と、インストラクションメモリ(ジャンプ用)40と、出力制御回路42とを含む。コード解析回路34は、ループレジスタ35を含み、本例においては、C1レジスタおよびC2レジスタを有する。当該C1レジスタおよびC2レジスタは、ジャンプ処理のループ回数(繰り返し)を規定するものである。
なお、これらの回路は、図示しないが基準クロック分配回路16により分配された基準クロックに同期して動作する。
まず、プログラムカウンタ32に初期値が設定され、PCスタート信号の入力に従いプログラムカウンタ32が動作する。そして、基準クロックに同期してプログラムカウンタ(PC)値をカウントアップする。そして、インストラクションメモリ18にプログラムカウンタ値が与えられて、プログラムカウンタ(PC)値に対応するインストラクションコードが読みだされる。
また、読みだされたインストラクションコードは、セレクタ36に出力されるとともに、インストラクションメモリ(ジャンプ用)40にプログラムカウンタ(PC)値に対応付けられて格納される。
また、プログラムカウンタ32は、PCスタート信号の入力に従い出力制御回路42に対してピンコントロールメモリ制御回路50に対してPCスタート信号を出力するように指示する。
セレクタ36は、ジャンプ処理中以外の場合には、インストラクションメモリ18から読みだされたインストラクションコードをコード解析回路34に出力する。一方、ジャンプ処理中の場合には、インストラクションメモリ(ジャンプ用)40から読みだされたインストラクションコードをコード解析回路34に出力する。
コード解析回路34は、入力されたインストラクションコードを解析して、命令コードに応じた動作処理を実行する。
具体的には、コード解析回路34のコード解析に従ってジャンプ命令の場合には、出力制御回路42にジャンプ処理に関する指示をするとともに、プログラムカウンタ(ジャンプ用)38を動作させる。そして、プログラムカウンタ(ジャンプ用)38は、ジャンプ処理中のプログラムカウンタ(PC)値を基準クロックに同期して出力する。そして、これに応答してインストラクションメモリ(ジャンプ用)40からインストラクションコードが読みだされ、セレクタ36を介してコード解析回路34に入力される。
また、コード解析回路34は、ループレジスタ35に規定された回数、ジャンプ処理を繰り返す。
出力制御回路42は、コード解析回路34からの指示あるいはプログラムカウンタ32からの指示に従いピンエレクトロニクス基板20に対して制御信号を出力する。
具体的には、ピンエレクトロニクス基板20のピンコントロールメモリ制御回路50に対してPCスタート信号を出力する。また、リピート処理の場合にはリピート信号を出力する。また、ジャンプ処理に関連する2ビットのループモード信号を出力する。後述するが、2ビットのループモード信号は、ピンエレクトロニクス基板20においてラベル信号、ジャンプ開始信号、ジャンプ終了信号として用いられる。
なお、本例においては、一例としてインストラクションメモリ(ジャンプ用)にPC値に対応付けられて格納されたインストラクションコードが示されている。
図6は、本実施の形態に従いピンコントロールメモリ制御回路50の機能を説明する概略ブロック図である。
図6を参照して、ピンコントロールメモリ制御回路50は、プログラムカウンタ52と、信号生成回路54と、プログラムカウンタ切替調整回路55と、ラベルPC値スタック56と、ジャンプPC値スタック58とを含む。さらに、ピンコントロールメモリ制御回路50は、プログラムカウンタ(ジャンプ用)60と、ピンコントロールメモリ(ジャンプ用)62と、セレクタ64と、セレクタ制御回路66とを含む。
プログラムカウンタ52は、初期値が設定され、PCスタート信号の入力に従いプログラムカウンタ52が動作する。そして、基準クロック分配回路16により分配された基準クロックに同期してプログラムカウンタ(PC)値をカウントアップする。そして、ピンコントロールメモリ22にプログラムカウンタ(PC)値が与えられて、プログラムカウンタ(PC)値に対応するピンデータが読みだされる。
また、読みだされたピンデータは、セレクタ64を介して被試験デバイス100に出力されるとともに、ピンコントロールメモリ(ジャンプ用)62にプログラムカウンタ値に対応付けられて格納される。
セレクタ64は、ジャンプ処理中以外の場合には、ピンコントロールメモリ22から読みだされたピンデータを外部(被試験デバイス100)に出力する。一方、ジャンプ処理中の場合には、ピンコントロールメモリ(ジャンプ用)62から読みだされたピンデータを外部(被試験デバイス100)に出力する。
セレクタ制御回路66は、セレクタ64を制御する回路であり、ジャンプ開始信号Bに従ってピンコントロールメモリ(ジャンプ用)62側に信号経路を切り替えて、ピンデータを外部に出力し、ジャンプ開始信号Cに従ってピンコントロールメモリ22側に信号経路を切り替える。なお、ジャンプ開始信号Bに従ってピンコントロールメモリ(ジャンプ用)62側に切り替えた後、さらにジャンプ開始信号Bが入力される場合には、ジャンプ終了信号Cが2回入力された場合にピンコントロールメモリ22側に信号経路を切り替える。すなわち、入力されたジャンプ開始信号Bとジャンプ終了信号Cとが同じ回数の際にリセットして初期状態すなわち、ピンコントロールメモリ22側に信号経路を切り替える。
プログラムカウンタ切替調整回路55は、ジャンプ処理に基づいて使用するプログラムカウンタ52とプログラムカウンタ(ジャンプ用)60の切り替え等を制御する。
プログラムカウンタ(ジャンプ用)60は、ジャンプ処理中のプログラムカウンタ(PC)値を基準クロックに同期して出力する。これに応答して、ピンコントロールメモリ(ジャンプ用)62からピンデータが読みだされてセレクタ64を介して外部に出力される。
ラベルPC値スタック56は、先入れ後出しのスタック(first in last out)で構成され、ラベル信号Aに従ってプログラムカウンタ(PC)値を格納(PUSH)し、ジャンプ終了信号Cに従ってプログラムカウンタ(PC)値を出す(POP)。読み出しの場合には、直近にスタックされたプログラムカウンタ(PC)値が読みだされる。当該ラベルPC値スタック56は、ジャンプ先の飛び先アドレスとなるプログラムカウンタ(PC)値を格納する。
ジャンプPC値スタック58は、先入れ後出しのスタック(first in last out)で構成され、ジャンプ開始信号Bに従ってプログラムカウンタ(PC)値を格納(PUSH)し、ジャンプ終了信号Cに従ってプログラムカウンタ(PC)値を出す(POP)。読み出しの場合には、直近にスタックされたプログラムカウンタ(PC)値が読みだされる。当該ジャンプPC値スタック58は、ジャンプ処理するプログラムカウンタ(PC)値を格納する。スタックされたプログラムカウンタ(PC)値は、プログラムカウンタ(ジャンプ用)60のプログラムカウンタ(PC)値と比較される。そして、一致した場合にラベルPC値スタック56に格納されたジャンプ先の飛び先アドレスとなるプログラムカウンタ(PC)値を読み出すために用いられる。
なお、本例においては、一例としてピンコントロールメモリ(ジャンプ用)にPC値に対応付けられて格納されたピンデータが示されている。
図7は、本実施の形態に従う信号生成回路54に入力されるループモード信号を説明する図である。
図7を参照して、ここでは、ループモード信号と信号生成回路54から出力される信号の対応関係の一例が示されている。
具体的には、信号生成回路54は、ループモード信号「01」の入力を受けて、ラベル信号Aを出力する。
信号生成回路54は、ループモード信号「10」の入力を受けて、ジャンプ開始信号Bを出力する。
信号生成回路54は、ループモード信号「11」の入力を受けて、ジャンプ終了信号Cを出力する。
ピンコントロールメモリ制御回路50において、ループモード信号に基づく上記信号に応じてプログラムカウンタ(PC)値の調整が行われる。
図8は、本実施の形態に従うテストパターンの流れの概略を説明するシーケンス図である。
図8を参照して、ここでは、コントロール基板14側の処理が示されている。
PCスタート信号の入力に従いプログラムカウンタ32のPC値が出力される。本例においては、初期値は0とする。PC値「0」に従いインストラクションコード「C2L 3」が読みだされる。当該コードに従いコード解析回路34は、ループレジスタ35のC2レジスタに「3」を設定する。また、インストラクションメモリ(ジャンプ用)40にPC値に対応付けられてインストラクションコードが格納される。
そして、基準クロックに同期してプログラムカウンタ32のPC値がインクリメントされる。PC値「1」に従いインストラクションコード「JST2」が読みだされる。当該コードに従いコード解析回路34は、出力制御回路42に指示してラベル処理を指示するループモード信号「01」を出力する。また、インストラクションメモリ(ジャンプ用)40にPC値に対応付けられてインストラクションコードが格納される。
次に、基準クロックに同期してプログラムカウンタ32のPC値がインクリメントされる。PC値「2」に従いインストラクションコード「C1L 3」が読みだされる。当該コードに従いコード解析回路34は、ループレジスタ35のC1レジスタに「3」を設定する。また、インストラクションメモリ(ジャンプ用)40にPC値に対応付けられてインストラクションコードが格納される。
次に、基準クロックに同期してプログラムカウンタ32のPC値がインクリメントされる。PC値「3」に従いインストラクションコード「JST1」が読みだされる。当該コードに従いコード解析回路34は、出力制御回路42に指示してラベル処理を指示するループモード信号「01」を出力する。また、インストラクションメモリ(ジャンプ用)40にPC値に対応付けられてインストラクションコードが格納される。
次に、基準クロックに同期してプログラムカウンタ32のPC値がインクリメントされる。PC値「4」に従いインストラクションコード「C1J ―1」が読みだされる。当該コードに従いループレジスタ35のC1レジスタの値を「3」から「2」にデクリメントする。C1レジスタの値は「0」でないためコード解析回路34は、ジャンプ処理を実行する。具体的には、プログラムカウンタ32に指示してプログラムカウンタ32のカウントアップ動作を停止させる。また、コード解析回路34は、プログラムカウンタ(ジャンプ用)38に現在のPC値−1の「3」を設定する。また、出力制御回路42に指示してジャンプ開始を指示するループモード信号「10」を出力する。これにより第1のジャンプ処理が実行される。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値が出力される。PC値「3」に従いインストラクションメモリ(ジャンプ用)40からインストラクションコード「JST1」が読みだされる。本例においてコード解析回路34は、ジャンプ先のPC値に対応するインストラクションコードに従う処理を実行しない。すなわち、コード解析回路34は、出力制御回路42に指示してラベル処理を指示するループモード信号「01」は出力しない。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「4」に従いインストラクションコード「C1J −1」が読みだされる。当該コードに従いC1レジスタの値を「2」から「1」にデクリメントする。C1レジスタの値は「0」でないためコード解析回路34は、ジャンプ処理を実行する。コード解析回路34は、プログラムカウンタ(ジャンプ用)38に現在のPC値−1の「3」を設定する。一方、本例において、コード解析回路34は、ジャンプ処理中の同じジャンプ命令に対応するインストラクションコードに従う処理を実行しない。すなわち、コード解析回路34は、出力制御回路42に指示してジャンプ開始を指示するループモード信号「10」は出力しない。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値が出力される。PC値「3」に従いインストラクションコード「JST1」が読みだされる。本例においてコード解析回路34は、ジャンプ先のPC値に対応するインストラクションコードに従う処理を実行しない。すなわち、コード解析回路34は、出力制御回路42に指示してラベル処理を指示するループモード信号「01」は出力しない。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「4」に従いインストラクションコード「C1J −1」が読みだされる。当該コードに従いC1レジスタの値を「1」から「0」にデクリメントする。C1レジスタの値が「0」であるためジャンプ処理を終了する。具体的には、プログラムカウンタ32に指示してプログラムカウンタ32の動作を再開するとともに、プログラムカウンタ(ジャンプ用)38の動作を停止させる。また、コード解析回路34は、C1レジスタの値が「0」であるため出力制御回路42に指示してジャンプ終了を指示するループモード信号「11」を出力する。これにより第1のジャンプ処理が終了する。
次に、基準クロックに同期してプログラムカウンタ32のPC値がインクリメントされる。PC値「5」に従いインストラクションコード「NOP」が読みだされる。当該コードは何も処理をせず、次の処理に進む。
次に、基準クロックに同期してプログラムカウンタ32のPC値がインクリメントされる。PC値「6」に従いインストラクションコード「C2J −5」が読みだされる。当該コードに従いC2レジスタの値を「3」から「2」にデクリメントする。C2レジスタの値は「0」でないためコード解析回路34は、ジャンプ処理を実行する。具体的には、プログラムカウンタ32に指示してプログラムカウンタ32の動作を停止させる。また、コード解析回路34は、プログラムカウンタ(ジャンプ用)38に現在のPC値−5の「1」を設定する。また、出力制御回路42に指示してジャンプ開始を指示するループモード信号「10」を出力する。これにより第2のジャンプ処理が実行される。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値が出力される。PC値「1」に従いインストラクションコード「JST2」が読みだされる。本例において、コード解析回路34は、ジャンプ先のPC値に対応するインストラクションコードに従う処理を実行しない。すなわち、コード解析回路34は、出力制御回路42に指示してラベル処理を指示するループモード信号「01」は出力しない。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「2」に従いインストラクションコード「C1L 3」が読みだされる。当該コードに従いコード解析回路34は、C1レジスタに「3」を設定する。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「3」に従いインストラクションコード「JST1」が読みだされる。当該コードに従いコード解析回路34は、出力制御回路42に指示してラベル処理を指示するループモード信号「01」を出力する。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「4」に従いインストラクションコード「C1J ―1」が読みだされる。当該コードに従いループレジスタ35のC1レジスタの値を「3」から「2」にデクリメントする。C1レジスタの値が「0」でないためコード解析回路34は、ジャンプ処理を実行する。コード解析回路34は、プログラムカウンタ(ジャンプ用)38に現在のPC値−1の「3」を設定する。また、出力制御回路42に指示してジャンプ開始を指示するループモード信号「10」を出力する。これにより第1のジャンプ処理が実行される。以降、C1レジスタが「0」となるまで上記で説明した第1のジャンプ処理が繰り返される。
そして、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「4」に従いインストラクションコード「C1J −1」が読みだされる。当該コードに従いコード解析回路34は、C1レジスタの値をデクリメントし、「0」となった場合にジャンプ処理を終了する。具体的には、コード解析回路34は、出力制御回路42に指示してジャンプ終了を指示するループモード信号「11」を出力する。これにより第1のジャンプ処理が終了する。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「5」に従いインストラクションコード「NOP」が読みだされる。当該コードは何も処理をせず、次の処理に進む。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「6」に従いインストラクションコード「C2J −5」が読みだされる。当該コードに従いC2レジスタの値を「2」から「1」にデクリメントする。C2レジスタの値は「0」でないためコード解析回路34は、ジャンプ処理を実行する。コード解析回路34は、プログラムカウンタ(ジャンプ用)38に現在のPC値−5の「1」を設定する。上述したように、コード解析回路34は、ジャンプ処理中の同じジャンプ命令に対応するインストラクションコードに従う処理を実行しない。すなわち、コード解析回路34は、出力制御回路42に指示してジャンプ開始を指示するループモード信号「10」は出力しない。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値が出力される。PC値「1」に従いインストラクションコード「JST2」が読みだされる。本例において、コード解析回路34は、ジャンプ先のPC値に対応するインストラクションコードに従う処理を実行しない。すなわち、コード解析回路34は、出力制御回路42に指示してラベル処理を指示するループモード信号「01」は出力しない。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値が出力される。PC値「2」に従いインストラクションコード「C1L 3」が読みだされる。当該コードに従いコード解析回路34は、C1レジスタに「3」を設定する。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「3」に従いインストラクションコード「JST1」が読みだされる。当該コードに従いコード解析回路34は、出力制御回路42に指示してラベル処理を指示するループモード信号「01」を出力する。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「4」に従いインストラクションコード「C1J ―1」が読みだされる。当該コードに従いループレジスタ35のC1レジスタの値を「3」から「2」にデクリメントする。C1レジスタの値が「0」でないためコード解析回路34は、ジャンプ処理を実行する。コード解析回路34は、プログラムカウンタ(ジャンプ用)38に現在のPC値−1の「3」を設定する。また、出力制御回路42に指示してジャンプ開始を指示するループモード信号「10」を出力する。これにより第1のジャンプ処理が実行される。以降、C1レジスタが「0」となるまで上記で説明した第1のジャンプ処理が繰り返される。
そして、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「4」に従いインストラクションコード「C1J −1」が読みだされる。当該コードに従いコード解析回路34は、C1レジスタの値をデクリメントし、「0」となった場合にジャンプ処理を終了する。具体的には、コード解析回路34は、出力制御回路42に指示してジャンプ終了を指示するループモード信号「11」を出力する。これにより第1のジャンプ処理が終了する。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「5」に従いインストラクションコード「NOP」が読みだされる。当該コードは何も処理をせず、次の処理に進む。
次に、基準クロックに同期してプログラムカウンタ(ジャンプ用)38のPC値がインクリメントされる。PC値「6」に従いインストラクションコード「C2J −5」が読みだされる。当該コードに従いC2レジスタの値を「1」から「0」にデクリメントする。C2レジスタの値が「0」であるためコード解析回路34は、ジャンプ処理を終了する。具体的には、コード解析回路34は、出力制御回路42に指示してジャンプ終了を指示するループモード信号「11」を出力する。これにより第2のジャンプ処理が終了する。
次に、基準クロックに同期してプログラムカウンタ32のPC値がインクリメントされる。PC値「7」に従いインストラクションコード「REP 2」が読みだされる。当該コードに従いコード解析回路34は、プログラムカウンタ32に指示して、同じPC値を出力するように指示する。また、コード解析回路34は、出力制御回路42に指示してリピート処理を実行するようにリピート信号を出力する。
次に、基準クロックに同期してプログラムカウンタ32のPC値「7」が出力される。
次に、基準クロックに同期してプログラムカウンタ32のPC値がインクリメントされる。PC値が「8」に従いインストラクションコード「STOP」が読みだされる。当該コードに従いテスト動作を終了する。
図9は、本実施の形態に従うインストラクションメモリ(ジャンプ用)40の内部状態を説明する図である。
図9(A)を参照して、プログラムカウンタ32のPC値に従ってインストラクションコードが格納される場合が示されている。
そして、PC値「4」に従い第1のジャンプ処理が実行される。その際、インストラクションメモリ18にアクセスするのではなく、インストラクションメモリ(ジャンプ用)40にアクセスしてインストラクションコードが読みだされる。C1レジスタの値が0になるまでジャンプ処理が繰り返される。
図9(B)を参照して、プログラムカウンタ32のPC値に従ってさらにインストラクションコードが格納される場合が示されている。
そして、PC値「6」に従い第2のジャンプ処理が実行される。その際、インストラクションメモリ18にアクセスするのではなく、インストラクションメモリ(ジャンプ用)40にアクセスしてインストラクションコードが読みだされる。C2レジスタの値が0になるまでジャンプ処理が繰り返される。なお、この場合、第2のジャンプ処理には、第1のジャンプ処理も含まれており、2重ループとなっている。
図9(C)を参照して、プログラムカウンタ32のPC値に従ってさらにインストラクションコードが格納される場合が示されている。
そして、PC値「8」に従いテスト動作が停止される。
本例においては、ジャンプ処理においては、プログラム制御回路30内に設けられたインストラクションメモリ(ジャンプ用)40にアクセスしてジャンプ処理に従うインストラクションコードを読み出すためインストラクションメモリ18にアクセスするよりも高速に処理することが可能である。
図10は、本実施の形態に従う基準クロックに応じて出力されるPC値の値の変化を説明する図である。
図10を参照して、時刻t0において、基準クロック(CLK)に同期してプログラムカウンタ32のPC値が「0」となる。次に、時刻t1において、PC値が「1」となる。そして、これに応答してPC値「1」に対応するインストラクションコードに基づいてラベル信号Aを生成するためのループモード信号「01」が出力される。また、時刻t2において、PC値が「2」となる。また、時刻t3において、PC値が「3」となる。これに応答してPC値「3」に対応するインストラクションコードに基づいてラベル信号Aを生成するためのループモード信号「01」が出力される。時刻t4において、PC値が「4」となる。これに応答してPC値「4」に対応するインストラクションコードに基づいてジャンプ開始信号Bを生成するためのループモード信号「10」が出力される。これにより第1のジャンプ処理が開始される。
時刻t5において、プログラムカウンタ(ジャンプ用)38が動作してPC値「3」を出力する。図10においては、プログラムカウンタ(ジャンプ用)38のPC値はPCjとして示されている。そして、第1のジャンプ処理が上記したように繰り返される。
時刻t8において、PC値「4」に対応するインストラクションコードに基づいてC1レジスタの値が更新されて「0」となる。これに応答してジャンプ終了信号Cを生成するためのループモード信号「11」が出力される。すなわち、第1のジャンプ処理が終了する。
時刻t9において、基準クロックに同期してプログラムカウンタ32のPC値が「5」となる。
時刻t10において、PC値「6」に対応するインストラクションコードに基づいてジャンプ開始信号Bを生成するためのループモード信号「10」が出力される。これにより第2のジャンプ処理が開始される。
時刻t11において、プログラムカウンタ(ジャンプ用)38が動作してPC値「1」を出力する。
時刻t13において、PC値「3」に対応するインストラクションコードに基づいてラベル信号Aを生成するためのループモード信号「01」が出力される。
時刻t14において、PC値が「4」となる。これに応答してPC値「4」に対応するインストラクションコードに基づいてジャンプ開始信号Bを生成するためのループモード信号「10」が出力される。これにより第1のジャンプ処理が開始される。
時刻t15において、プログラムカウンタ(ジャンプ用)38が動作してPC値「3」を出力する。そして、第1のジャンプ処理が上記したように繰り返される。
時刻t18において、PC値「4」に対応するインストラクションコードに基づいてC1レジスタの値が更新されて「0」となる。これに応答してジャンプ終了信号Cを生成するためのループモード信号「11」が出力される。すなわち、第1のジャンプ処理が終了する。なお、第2のジャンプ処理は継続中である。
時刻t23において、PC値が「3」となる。これに応答してPC値「3」に対応するインストラクションコードに基づいてラベル信号Aを生成するためのループモード信号「01」が出力される。時刻t24において、PC値が「4」となる。これに応答してPC値「4」に対応するインストラクションコードに基づいてジャンプ開始信号Bを生成するためのループモード信号「10」が出力される。これにより第1のジャンプ処理が開始される。
時刻t25において、PC値「3」を出力する。そして、第1のジャンプ処理が上記したように繰り返される。
時刻t28において、PC値「4」に対応するインストラクションコードに基づいてC1レジスタの値が更新されて「0」となる。これに応答してジャンプ終了信号Cを生成するためのループモード信号「11」が出力される。すなわち、第1のジャンプ処理が終了する。なお、第2のジャンプ処理は継続中である。
時刻t30において、PC値「6」に対応するインストラクションコードに基づいてC2レジスタの値が更新されて「0」となる。これに応答してジャンプ終了信号Cを生成するためのループモード信号「11」が出力される。すなわち、第2のジャンプ処理が終了する。
時刻t31において、基準クロックに同期してプログラムカウンタ32のPC値が「7」となる。また、PC値「7」に対応するインストラクションコードに基づいてリピート信号が出力される。
時刻t32において、基準クロックに同期してプログラムカウンタ32のPC値が「7」となる。
時刻t33において、基準クロックに同期してプログラムカウンタ32のPC値が「8」となる。
そして、処理が終了される。
図11は、本実施の形態に従うピンエレクトロニクス基板20側のプログラムカウンタ値に従うピンデータについて説明する図(その1)である。
図11を参照して、まず、コントロール基板14側(単にコントロール側とも称する)のPC値が「0」の場合、ピンエレクトロニクス基板20側(単にピン側とも称する)のPC値も「0」が出力される。これに応答してピンコントロールメモリ22からPC値「0」に応答してピンデータ「0」が出力される。コントロール基板14側もピンエレクトロニクス基板20側も基準クロックに同期してPC値を出力する。
次に、コントロール側のPC値が「1」の場合、ピン側のPC値も「1」が出力される。これに応答してピンコントロールメモリ22からPC値「1」に応答してピンデータ「1」が出力される。また、インストラクションコードに基づいてコントロール側からラベル指示に対応するループモード信号「01」が出力される。これに応答してラベル信号Aが生成され、ラベルPC値スタック56にPC値「1」が格納される(PUSH)。
次に、コントロール側のPC値が「2」の場合、ピン側のPC値も「2」が出力される。これに応答してピンコントロールメモリ22からPC値「2」に応答してピンデータ「0」が出力される。
次に、コントロール側のPC値が「3」の場合、ピン側のPC値も「3」が出力される。これに応答してピンコントロールメモリ22からPC値「3」に応答してピンデータ「1」が出力される。また、コントロール側からラベル処理を指示するループモード信号「01」が出力される。これに応答してラベル信号Aが生成され、ラベルPC値スタック56にPC値「3」がさらに格納される(PUSH)。
次に、コントロール側のPC値が「4」の場合、ピン側のPC値も「4」が出力される。これに応答してピンコントロールメモリ22からPC値「4」に応答してピンデータ「0」が出力される。また、コントロール側からジャンプ開始を指示するループモード信号「10」が出力される。これに応答してジャンプ開始信号Bが生成され、ジャンプPC値スタック58にPC値「4」が格納される(PUSH)。そして、コントロール側およびピン側ともにジャンプ用のプログラムカウンタに切り替えられる。ピン側において、プログラムカウンタ切替調整回路55は、ジャンプ開始信号Bに従ってプログラムカウンタ52をプログラムカウンタ(ジャンプ用)60に切り替えるとともに、ラベルPC値スタック56に格納されているPC値(「3」)をプログラムカウンタ(ジャンプ用)60に設定する。また、ジャンプ開始信号Bに従ってセレクタ制御回路66は、セレクタ64の出力をピンコントロールメモリ(ジャンプ用)62に切り替える。
次に、コントロール側のPC値が「3」の場合、ピン側のPC値も「3」が出力される(プログラムカウンタ(ジャンプ用)60に「3」が設定されているため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「3」に応答してピンデータ「1」が出力される。
次に、コントロール側のPC値が「4」の場合、ピン側のPC値も「4」が出力される(プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「4」に応答してピンデータ「0」が出力される。また、プログラムカウンタ切替調整回路55は、ジャンプPC値スタック58に格納されているPC値(「4」)を読み出し、プログラムカウンタ(ジャンプ用)60のPC値と比較する。比較結果に基づいて一致しているためプログラムカウンタ切替調整回路55は、ラベルPC値スタック56に格納されているPC値(「3」)をプログラムカウンタ(ジャンプ用)60に設定する。
次に、コントロール側のPC値が「3」の場合、ピン側のPC値も「3」が出力される(プログラムカウンタ(ジャンプ用)60に「3」が設定されているため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「3」に応答してピンデータ「1」が出力される。
次に、コントロール側のPC値が「4」の場合、ピン側のPC値も「4」が出力される(プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「4」に応答してピンデータ「0」が出力される。また、コントロール側からジャンプ終了を指示するループモード信号「11」が出力される。これに応答してジャンプ終了信号Cが生成され、ラベルPC値スタック56からPC値「3」が削除される(POP)。また、ジャンプPC値スタック58からPC値「4」が削除される(POP)。プログラムカウンタ切替調整回路55は、ジャンプPC値スタック58に何も格納されていないことを確認して、プログラムカウンタ(ジャンプ用)60をプログラムカウンタ52に切り替える。また、ジャンプ終了信号Cに従ってセレクタ制御回路66は、セレクタ64の出力をピンコントロールメモリ22に切り替える(ジャンプ開始信号Bとジャンプ終了信号Cの入力回数はともに1回である)。
次に、コントロール側のPC値が「5」の場合、ピン側のPC値も「5」が出力される(プログラムカウンタ52のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ22からPC値「5」に応答してピンデータ「1」が出力される。
図12は、本実施の形態に従うピンエレクトロニクス基板20側のプログラムカウンタ値に従うピンデータについて説明する図(その2)である。
図12を参照して、次に、コントロール側のPC値が「6」の場合、ピン側のPC値も「6」が出力される。これに応答してピンコントロールメモリ22からPC値「6」に応答してピンデータ「0」が出力される。また、コントロール側からジャンプ開始を指示するループモード信号「10」が出力される。これに応答してジャンプ開始信号Bが生成され、ジャンプPC値スタック58にPC値「6」が格納される(PUSH)。そして、コントロール側およびピン側ともにジャンプ用のプログラムカウンタに切り替えられる。ピン側において、プログラムカウンタ切替調整回路55は、ジャンプ開始信号Bに従ってプログラムカウンタ52をプログラムカウンタ(ジャンプ用)60に切り替えるとともに、ラベルPC値スタック56に格納されているPC値(「1」)をプログラムカウンタ(ジャンプ用)60に設定する。また、ジャンプ開始信号Bに従ってセレクタ制御回路66は、セレクタ64の出力をピンコントロールメモリ(ジャンプ用)62に切り替える。
次に、コントロール側のPC値が「1」の場合、ピン側のPC値も「1」が出力される(プログラムカウンタ(ジャンプ用)60に「1」が設定されているため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「1」に応答してピンデータ「1」が出力される。なお、ここで、上記したようにジャンプの飛び先アドレスのインストラクションコードがラベルの場合には、ラベル信号は生成されない。
次に、コントロール側のPC値が「2」の場合、ピン側のPC値も「2」が出力される(プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「2」に応答してピンデータ「0」が出力される。
次に、コントロール側のPC値が「3」の場合、ピン側のPC値も「3」が出力される(プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「3」に応答してピンデータ「1」が出力される。また、コントロール側からラベル指示に対応するループモード信号「01」が出力される。これに応答してラベル信号Aが生成され、ラベルPC値スタック56にPC値「3」がさらに格納される。
次に、コントロール側のPC値が「4」の場合、ピン側のPC値も「4」が出力される(プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「4」に応答してピンデータ「0」が出力される。また、コントロール側からジャンプ開始を指示するループモード信号「10」が出力される。これに応答してジャンプ開始信号Bが生成され、ジャンプPC値スタック58にPC値「4」が格納される(PUSH)。プログラムカウンタ切替調整回路55は、ジャンプ開始信号Bに応答してラベルPC値スタック56に格納されているPC値(「3」)をプログラムカウンタ(ジャンプ用)60に設定する。
次に、コントロール側のPC値が「3」の場合、ピン側のPC値も「3」が出力される(プログラムカウンタ(ジャンプ用)60に「3」が設定されているため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「3」に応答してピンデータ「1」が出力される。
次に、コントロール側のPC値が「4」の場合、ピン側のPC値も「4」が出力される(プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「4」に応答してピンデータ「0」が出力される。また、プログラムカウンタ切替調整回路55は、ジャンプPC値スタック58に格納されているPC値(「4」)を読み出し、プログラムカウンタ(ジャンプ用)60のPC値と比較する。比較結果に基づいて一致しているためプログラムカウンタ切替調整回路55は、ラベルPC値スタック56に格納されているPC値(「3」)をプログラムカウンタ(ジャンプ用)60に設定する。
次に、コントロール側のPC値が「3」の場合、ピン側のPC値も「3」が出力される(プログラムカウンタ(ジャンプ用)60に「3」が設定されているため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「3」に応答してピンデータ「1」が出力される。
次に、コントロール側のPC値が「4」の場合、ピン側のPC値も「4」が出力される(プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「4」に応答してピンデータ「0」が出力される。また、コントロール側からジャンプ終了を指示するループモード信号「11」が出力される。これに応答してジャンプ終了信号Cが生成され、ラベルPC値スタック56からPC値「3」が削除される(POP)。また、ジャンプ終了信号Cに従ってジャンプPC値スタック58からPC値「4」が削除される(POP)。そして、プログラムカウンタ切替調整回路55は、ジャンプPC値スタック58にPC値「6」が格納されているため、プログラムカウンタ(ジャンプ用)60をプログラムカウンタ52に切り替えずに継続する。ここで、セレクタ制御回路66は、ジャンプ開始信号Bが2回入力されているためジャンプ終了信号Cが2回入力された場合にリセットして切り替える。この場合、ジャンプ終了信号Cは1回入力されているだけなので切り替えず、ピンコントロールメモリ(ジャンプ用)62からのピンデータを出力する。
次に、コントロール側のPC値が「5」の場合、ピン側のPC値も「5」が出力される(プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「5」に応答してピンデータ「1」が出力される。
次に、コントロール側のPC値が「6」の場合、ピン側のPC値も「6」が出力される。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「6」に応答してピンデータ「0」が出力される。また、プログラムカウンタ切替調整回路55は、ジャンプPC値スタック58に格納されているPC値(「6」)を読み出し、プログラムカウンタ(ジャンプ用)60のPC値と比較する。比較結果に基づいて一致しているためプログラムカウンタ切替調整回路55は、ラベルPC値スタック56に格納されているPC値(「1」)をプログラムカウンタ(ジャンプ用)60に設定する。
そして、再び、コントロール側のPC値が「1」、ピン側のPC値も「1」が出力される(プログラムカウンタ(ジャンプ用)60に「1」が設定されているため)。以降の処理は、上記と同様の処理が繰り返される。
そして、再び、コントロール側のPC値が「6」の場合、ピン側のPC値も「6」が出力される。これに応答してピンコントロールメモリ(ジャンプ用)62からPC値「6」に応答してピンデータ「0」が出力される。また、コントロール側からジャンプ終了を指示するループモード信号「11」が出力される。これに応答してジャンプ終了信号Cが生成され、ラベルPC値スタック56からPC値「1」が削除される(POP)。また、ジャンプ終了信号Cに従ってジャンプPC値スタック58からPC値「6」が削除される(POP)。そして、プログラムカウンタ切替調整回路55は、ジャンプPC値スタック58に何も格納されていないことを確認し、プログラムカウンタ(ジャンプ用)60をプログラムカウンタ52に切り替える。ここで、セレクタ制御回路66は、ジャンプ開始信号Bが2回入力され、そして、ジャンプ終了信号Cが2回入力されたためリセットして切り替える。すなわち、ピンコントロールメモリ22からのピンデータを出力する。
次に、コントロール側のPC値が「7」の場合、ピン側のPC値も「7」が出力される(プログラムカウンタ52のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ22からPC値「7」に応答してピンデータ「1」が出力される。また、コントロール側からリピート信号がピン側に出力される。そして、リピート信号がプログラムカウンタ52に入力される。
次に、コントロール側のPC値が「7」の場合、リピート信号に従ってピン側のPC値も「7」が出力される。これに応答してピンコントロールメモリ22からPC値「7」に応答してピンデータ「1」が出力される。
次に、コントロール側のPC値が「8」の場合、ピン側のPC値も「8」が出力される(プログラムカウンタ52のPC値がインクリメントされるため)。これに応答してピンコントロールメモリ22からPC値「8」に応答してピンデータ「0」が出力される。
なお、本例においては、1つのピンエレクトロニクス基板のピンデータについて説明したが、他のピンエレクトロニクス基板についても同様の処理が実行される。
当該処理により、コントロール側のPC値に同期してピン側のPC値に対応するピンデータを出力することが可能である。
具体的には、プログラム制御回路30から出力されるジャンプ処理を制御するためのループモード信号(2ビット)を用いてピン側のPC値を調整(プログラムカウンタの設定)することにより実現している。すなわち、上記処理は、プログラム制御回路30からピンコントロールメモリ制御回路50に対するPCスタート信号、リピート信号、ループモード信号(2ビット)の4ビットの信号で実行されている。
したがって、一例としてピンエレクトロニクス基板が16枚の場合、16×4=64本の配線本数で所定のテストパターンに基づくテストを実行することが可能である。それゆえ、従来構成と比較して配線本数を大幅に削減しつつ多数個同時測定が可能となる。
図13は、本実施の形態に従うピンコントロールメモリ(ジャンプ用)62の内部状態を説明する図である。
図13(A)を参照して、プログラムカウンタ52のPC値に従ってピンデータが格納される場合が示されている。
そして、PC値「4」に従いジャンプ動作が実行される。その際、ピンコントロールメモリ22にアクセスするのではなく、ピンコントロールメモリ(ジャンプ用)62にアクセスしてピンデータが読みだされる。ジャンプ終了信号Cが入力されるまでジャンプ動作が実行される。
図13(B)を参照して、プログラムカウンタ32のPC値に従ってさらにピンデータが格納される場合が示されている。
そして、PC値「6」に従いジャンプ動作が実行される。その際、ピンコントロールメモリ22にアクセスするのではなく、ピンコントロールメモリ(ジャンプ用)62にアクセスしてピンデータが読みだされる。ジャンプ終了信号Cが2回入力されるまでジャンプ動作が実行される。
図13(C)を参照して、プログラムカウンタ32のPC値に従ってさらにピンデータが格納される場合が示されている。
そして、PC値「8」に従いテスト動作が停止される。
本例においては、ジャンプ動作時においては、ピンコントロールメモリ制御回路50内に設けられたピンコントロールメモリ(ジャンプ用)62にアクセスしてジャンプ動作に従うピンデータを読み出すためピンコントロールメモリ22よりも高速に処理可能である。
次に、上記処理を実行するためのコード解析回路34における制御フローについて説明する。
図14は、本実施の形態に従うコード解析回路34における処理について説明するフロー図である。
図14を参照して、コード解析回路34は、インストラクションコードの入力が有るかどうかを判断する(ステップS8)。当該インストラクションコードは、基準クロックに従いインストラクションメモリ18から読み出されたものである。
ステップS8において、コード解析回路34は、インストラクションコードの入力が有ると判断した場合(ステップS8においてYES)には、次に入力されたインストラクションコードがレジスタ値設定命令(「C1L」あるいは「C2L」)かどうかを判断する(ステップS10)。
ステップS10において、レジスタ値設定命令であると判断した場合(ステップS10においてYES)には、レジスタ値を設定する(ステップS12)。具体的には、レジスタ値設定命令に従ってループレジスタ35のC1レジスタあるいはC2レジスタを設定する。
そして、ステップS8に戻る。
一方、ステップS10において、レジスタ値設定命令で無いと判断した場合(ステップS10においてNO)には、ジャンプ命令(「C1J」あるいは「C2J」)かどうかを判断する(ステップS16)。
ステップS16において、ジャンプ命令であると判断した場合(ステップS16においてYES)には、プログラムカウンタ32の停止を指示する(ステップS18)。
そして、次に、ジャンプ制御を実行する(ステップS20)。ジャンプ制御の詳細については後述する。
ジャンプ制御の終了後、プログラムカウンタ32の再開を指示する(ステップS21)。そして、ステップS8に戻る。
ステップS16において、ジャンプ命令で無いと判断した場合(ステップS16においてNO)には、ラベル命令(「JST1」あるいは「JST2」)かどうかを判断する(ステップS22)。
ステップS22において、ラベル命令であると判断した場合(ステップS22においてYES)には、出力制御回路42にラベル指示を出力する(ステップS24)。出力制御回路42は、当該指示に従いループモード信号「01」をピンコントロールメモリ制御回路50に出力する。
ステップS22において、ラベル命令で無いと判断した場合(ステップS22においてNO)には、リピート命令かどうかを判断する(ステップS26)。出力制御回路42は、当該指示に従いリピート信号をピンコントロールメモリ制御回路50に出力する。
ステップS26において、リピート命令であると判断した場合(ステップS26においてYES)には、出力制御回路42にリピート指示を出力する(ステップS28)。ステップS26において、リピート命令で無いと判断した場合(ステップS26においてNO)には、ステップS28をスキップしてステップS8に戻る。
図15は、本実施の形態に従うコード解析回路34におけるジャンプ制御の処理について説明するフロー図である。
図15を参照して、まず、コード解析回路34は、ジャンプ開始を指示する(ステップS30)。出力制御回路42は、当該指示に従いループモード信号「10」をピンコントロールメモリ制御回路50に出力する。
次に、コード解析回路34は、ループレジスタを更新する(ステップS31)。具体的には、ループレジスタ(C1レジスタあるいはC2レジスタ)に設定されている値をデクリメントする。
次に、コード解析回路34は、ループレジスタの値が0かどうかを判断する(ステップS32)。
ステップS32において、コード解析回路34は、ループレジスタの値が0であると判断した場合(ステップS32においてYES)には、ジャンプ終了を指示する(ステップS43)。出力制御回路42は、当該指示に従いループモード信号「11」をピンコントロールメモリ制御回路50に出力する。
そして、処理を終了する(リターン)。すなわち、図14のステップS21に進む。
一方、ステップS32において、コード解析回路34は、ループレジスタの値が0で無いと判断した場合(ステップS32においてNO)には、プログラムカウンタ(ジャンプ用)38の出力を設定する(ステップS34)。具体的には、プログラムカウンタ(ジャンプ用)38にジャンプ先のPC値を設定する。
そして、次に、コード解析回路34は、インストラクションコードの入力が有るかどうかを判断する(ステップS38)。当該インストラクションコードは、基準クロックに従いインストラクションメモリ(ジャンプ用)40から読み出されたものである。
ステップS38において、コード解析回路34は、インストラクションコードの入力が有ると判断した場合(ステップS38においてYES)には、次にレジスタ値設定命令(「C1L」あるいは「C2L」)かどうかを判断する(ステップS40)。
ステップS40において、コード解析回路34は、レジスタ値設定命令であると判断した場合(ステップS40においてYES)には、レジスタ値を設定する(ステップS42)。具体的には、レジスタ値設定命令に従ってループレジスタ35のC1レジスタあるいはC2レジスタを設定する。
そして、ステップS38に戻る。
一方、ステップS40において、コード解析回路34は、レジスタ値設定命令で無いと判断した場合(ステップS40においてNO)には、ジャンプ命令(「C1J」あるいは「C2J」)かどうかを判断する(ステップS44)。
ステップS44において、コード解析回路34は、ジャンプ命令であると判断した場合(ステップS44においてYES)には、他のジャンプ命令(例えば「C2J」に従うジャンプ処理中に「C1J」のジャンプ命令が有る場合)であるかどうかを判断する(ステップS46)。
ステップS46において、コード解析回路34は、他のジャンプ命令でないと判断した場合(ステップS46においてNO)には、ステップS31に戻り、ジャンプ処理を繰り返す。
一方、コード解析回路34は、他のジャンプ命令であると判断した場合(例えば「C2J」に従うジャンプ処理中に「C1J」のジャンプ命令が有る場合)(ステップS46においてYES)には、他のジャンプ制御を実行する(ステップS48)。
具体的には、他のジャンプ制御に関して、図15のフローが最初から実行される。そして、他のジャンプ制御(ステップS48)が終了した後、ステップS38に戻り、元のジャンプ制御が再開される。
ステップS44において、コード解析回路34は、ジャンプ命令で無いと判断した場合(ステップS44においてNO)には、ラベル命令(「JST1」あるいは「JST2」)かどうかを判断する(ステップS50)。
ステップS50において、コード解析回路34は、ラベル命令であると判断した場合(ステップS50においてYES)には、ラベル命令は、ジャンプ先かどうかを判断する(ステップS52)。すなわち、ジャンプ先のアドレスであるPC値のインストラクションコードがラベル命令かどうかを判断する。
ステップS52において、コード解析回路34は、ジャンプ先であると判断した場合(ステップS52においてYES)には、ラベル命令に対する処理を実行することなくステップS38に戻る。
一方、ステップS52において、コード解析回路34は、ジャンプ先で無いと判断した場合(ステップS52においてNO)には、ラベル指示を出力する(ステップS54)。出力制御回路42は、当該指示に従いループモード信号「01」をピンコントロールメモリ制御回路50に出力する。
ステップS50において、コード解析回路34は、ラベル命令で無いと判断した場合(ステップS50においてNO)には、リピート命令(「REP」)かどうかを判断する(ステップS56)。
ステップS56において、コード解析回路34は、リピート命令であると判断した場合(ステップS56においてYES)には、リピート指示を出力する(ステップS60)。出力制御回路42は、当該指示に従いリピート信号をピンコントロールメモリ制御回路50に出力する。
ステップS56において、コード解析回路34は、リピート命令で無いと判断した場合(ステップS56においてNO)には、ステップS60をスキップしてステップS38に戻る。
図16は、本実施の形態に従うプログラムカウンタ切替調整回路55における処理について説明するフロー図である。
図16を参照して、プログラムカウンタ切替調整回路55は、ジャンプ開始指示が有るかどうかを判断する(ステップS70)。具体的には、ジャンプ開始信号Bの入力が有るかどうかを判断する。
ステップS70において、プログラムカウンタ切替調整回路55は、ジャンプ開始指示が有ると判断した場合(ステップS70においてYES)には、プログラムカウンタ52の停止を指示する(ステップS72)。
次に、ラベルPC値スタック値を設定する(ステップS74)。具体的には、プログラムカウンタ切替調整回路55は、プログラムカウンタ(ジャンプ用)60にラベルPC値スタック56に格納されている値を設定する。
当該処理によりジャンプするPC値をプログラムカウンタ(ジャンプ用)60に設定して指定したPC値にジャンプすることが可能となる。
そして、ステップS70に戻る。
ステップS70において、プログラムカウンタ切替調整回路55は、ジャンプ開始指示が無いと判断した場合(ステップS70においてNO)には、ジャンプ終了指示が有るかどうかを判断する(ステップS76)。具体的には、ジャンプ終了信号Cの入力が有るかどうかを判断する。
ステップS76において、プログラムカウンタ切替調整回路55は、ジャンプ終了指示が有ると判断した場合(ステップS76においてYES)には、ジャンプPC値スタック値が有るかどうかを判断する(ステップS78)。
ステップS78において、プログラムカウンタ切替調整回路55は、ジャンプPC値スタック値が有ると判断した場合(ステップS78においてYES)には、ステップS80をスキップして、ステップS70に戻る。
また、ステップS78において、プログラムカウンタ切替調整回路55は、ジャンプPC値スタック値が無いと判断した場合(ステップS78においてNO)には、プログラムカウンタ52の再開を指示する(ステップS80)。
当該処理によりジャンプが終了した場合にプログラムカウンタ52を再開するとともに、ジャンプ処理が2重ループ等の場合には、ステップS80をスキップすることによりジャンプ処理を継続することが可能である。
そして、ステップS70に戻る。
ステップS76において、プログラムカウンタ切替調整回路55は、ジャンプ終了指示が無いと判断した場合(ステップS76においてNO)には、プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされたかどうかを判断する(ステップS82)。
ステップS82において、プログラムカウンタ切替調整回路55は、プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされていないと判断した場合(ステップS82においてNO)には、ステップS70に戻る。
一方、ステップS82において、プログラムカウンタ切替調整回路55は、プログラムカウンタ(ジャンプ用)60のPC値がインクリメントされたと判断した場合(ステップS82においてYES)には、プログラムカウンタ(ジャンプ用)値と、ジャンプPC値スタック値とを比較する(ステップS84)。プログラムカウンタ切替調整回路55は、ジャンプPC値スタック58に格納されている値とプログラムカウンタ(ジャンプ用)60に格納されている値とを比較する。
そして、プログラムカウンタ切替調整回路55は、比較結果が一致するかどうかを判断する(ステップS86)。
ステップS86において、比較結果が一致すると判断した場合(ステップS86においてYES)には、ラベルPC値スタック値を設定する(ステップS88)。具体的には、プログラムカウンタ切替調整回路55は、プログラムカウンタ(ジャンプ用)60にラベルPC値スタック56に格納されている値を設定する。
そして、ステップS70に戻る。
一方、ステップS86において、プログラムカウンタ切替調整回路55は、一致しないと判断した場合(ステップS86においてNO)には、ステップS88をスキップしてステップS70に戻る。
当該処理により、ジャンプ終了信号が入力されるまでは、ラベルPC値スタック56に格納されている値と、ジャンプPC値スタック58に格納されている値とに基づいてジャンプ処理の一連のシーケンスを継続することが可能である。
(変形例)
図17は、本実施の形態の変形例に従うプログラムカウンタ32#およびピンコントロールメモリ制御回路50#の構成を説明する図である。
図17を参照して、プログラムカウンタ32#は、プログラムカウンタ32#と比較して、セレクタ36、プログラムカウンタ(ジャンプ用)38およびインストラクションメモリ(ジャンプ用)40を設けない構成としたものである。そして、プログラムカウンタ32をプログラムカウンタ32#として、コード解析回路34をコード解析回路34#に置換した点が異なる。
本実施の形態の変形例に従うコード解析回路34#は、プログラムカウンタを切り替えずに、プログラムカウンタ32#にジャンプ先のPC値の設定をする。その他の処理については上記した処理と同様であるのでその詳細な説明は繰り返さない。
ピンコントロールメモリ制御回路50#は、ピンコントロールメモリ制御回路50と比較して、プログラムカウンタ(ジャンプ用)60およびピンコントロールメモリ(ジャンプ用)62を設けない構成としたものである。また、信号生成回路54およびプログラムカウンタ切替調整回路55の代わりにカウンタ制御回路70を設けた点が異なる。また、セレクタ64およびセレクタ制御回路66の代わりに信号出力回路72を設けた点が異なる。
具体的には、カウンタ制御回路70は、信号生成回路54と同様にループモード信号を受けて、ラベル信号A、ジャンプ開始信号B、ジャンプ終了信号Cを出力する。また、カウンタ制御回路70は、プログラムカウンタ切替調整回路55と同様の機能を有し、プログラムカウンタを切り替えずに、プログラムカウンタ52#にジャンプ先のPC値の調整(設定)をする。そして、当該PC値の値がピンコントロールメモリ22から読みだされて、信号出力回路72は、ピンコントロールメモリ22から出力されたピンデータを外部に出力する。その他の処理については上記した処理と同様であるのでその詳細な説明は繰り返さない。
当該構成により、上記の実施の形態よりもさらに簡易な構成で所定のテストパターンに基づくテストを実行することが可能であり、配線本数を大幅に削減しつつ多数個同時測定が可能となる。
なお、上記の図3の所定のテストパターンは、2重ループのジャンプ処理を含むものについて説明したが、特にこれに限られずN重ループ(N:3以上)のジャンプ処理を含むものについても同様に適用可能である。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は、実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。