200・・・試験装置、300・・・被試験デバイス、110・・・システム制御装置、130、130a、130b、130c・・・サイト制御装置、140・・・切替部、100・・・試験モジュール、10・・・チャネル制御部、50・・・チャネル回路、12・・・インターフェイス部、14・・・パターンリストメモリ、16・・・結果メモリ、20・・・パターン発生制御部、40・・・メインメモリ、30・・・レート発生部、70・・・パターン発生部、80・・・ベクタ発生部、90・・・パターンキャッシュメモリ、52・・・波形成形部、54・・・ドライバ、56・・・タイミング発生部、58・・・コンパレータ、60・・・タイミング比較部、62・・・判定部、64・・・キャプチャメモリ、310・・・区間レジスタ、312・・・一次キャッシュ、314・・・メモリ制御部、316・・・命令キャッシュ、318・・・命令実行部、330・・・展開部、400・・・電子デバイス、410・・・被試験回路、420・・・試験回路、430・・・入出力ピン、440・・・BISTピン
以下、発明の実施の形態を通じて本発明の一つの側面を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではなく、又実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、一つの実施形態に係る試験装置200の構成の一例を示す図である。試験装置200は、半導体回路等の被試験デバイス300を試験する装置であって、システム制御装置110、複数のサイト制御装置130、切替部140、及び複数の試験モジュール100を備える。
システム制御装置110は、試験装置200が被試験デバイス300の試験に用いる試験制御プログラム、試験プログラムデータ、及び試験パターンデータ等を外部のネットワーク等を介して受信して格納する。複数のサイト制御装置130は、通信ネットワークを介してシステム制御装置110と接続される。
サイト制御装置130a〜cは、いずれかの被試験デバイス300の試験を制御する。例えば複数のサイト制御装置130は、複数の被試験デバイス300と一対一に対応して設けられ、それぞれのサイト制御装置130は、対応する被試験デバイス300の試験を制御する。
図1においては、サイト制御装置130aは被試験デバイス300aの試験を制御して、サイト制御装置130bは被試験デバイス300bの試験を制御する。これに代えて、複数のサイト制御装置130は、それぞれ複数の被試験デバイス300の試験を制御してもよい。
より具体的には、サイト制御装置130は、システム制御装置110から試験制御プログラムを取得し実行する。次に、サイト制御装置130は、試験制御プログラムに基づいて、対応する被試験デバイス300の試験に用いる試験プログラムデータ(例えば、後述するシーケンスデータ)及び試験パターンデータ(例えば、後述するパターンデータ)をシステム制御装置110から取得する。尚、以下では試験プログラムデータ及び試験パターンデータを、試験データ列と総称する。試験データ列は、試験プログラムデータ及び試験パターンデータの少なくとも一方を含むデータであってよい。
またサイト制御装置130は、切替部140を介して当該被試験デバイス300の試験に用いる1又は複数の試験モジュール100等のモジュールに格納する。次に、サイト制御装置130は、試験プログラムデータ及び試験パターンデータに基づく試験の開始を切替部140を介して試験モジュール100に指示する。そして、サイト制御装置130は、試験が終了したことを示す割込み等を例えば試験モジュール100から受信して、試験結果に基づいて次の試験を試験モジュール100に行なわせる。
切替部140は、複数のサイト制御装置130のそれぞれを、当該サイト制御装置130が制御する1又は複数の試験モジュール100に接続して、これらの間の通信を中継する。ここで、予め定められた一のサイト制御装置130は、試験装置200の使用者、試験制御プログラム等の指示に基づいて、複数のサイト制御装置130のそれぞれを、当該サイト制御装置130が被試験デバイス300の試験に用いる1以上の試験モジュール100に接続させるべく切替部140を設定してよい。
例えば、図1においては、サイト制御装置130aは、複数の試験モジュール100aに接続するように設定され、これらを用いて被試験デバイス300aの試験を行なう。ここで、他のサイト制御装置130が試験モジュール100を用いて被試験デバイス300を試験するための構成及び動作は、サイト制御装置130aが被試験デバイス300aを試験するための構成及び動作と同一であってよい。以下では、サイト制御装置130aが被試験デバイス300aを試験するための構成及び動作を中心に説明する。
試験モジュール100aは、サイト制御装置130aの指示に基づいて、被試験デバイス300aの試験に用いる試験信号を生成すべきタイミング信号を生成する。また、いずれかの試験モジュール100aは、他の試験モジュール100aにおける試験結果を受信して、試験結果の良否に対応したシーケンスを複数の試験モジュール100aに実行させてよい。
複数の試験モジュール100aは、被試験デバイス300aが有する複数の端子の一部ずつにそれぞれ接続され、サイト制御装置130aにより格納されたシーケンスデータ及びパターンデータに基づいて被試験デバイス300aの試験を行なう。被試験デバイス300aの試験において、試験モジュール100aは、後述するパターンリストにより指定されたシーケンスデータ及びパターンデータに基づいて、パターンデータから試験信号を生成して、当該試験モジュール100aに接続された被試験デバイス300aの端子に試験信号を供給する。
次に、試験モジュール100aは、被試験デバイス300aが試験信号に基づいて動作した結果出力する出力信号を取得して、期待値と比較する。ここで複数の試験モジュール100aは、シーケンスデータ及びパターンデータに基づいて、試験信号のサイクル周期を動的に変化させるべく、異なるサイクル周期に基づいて試験信号を生成してよい。
また、試験モジュール100aは、試験プログラムデータの処理が完了した場合、試験プログラムデータの実行中に異常が生じた場合等において、サイト制御装置130aに対して割込みを発生する。この割込みは、切替部140を介して当該試験モジュール100aに対応するサイト制御装置130aに通知され、サイト制御装置130aが有するプロセッサにより割込み処理が行われる。
以上において、試験装置200は、オープンアーキテクチャにより実現され、オープンアーキテクチャ規格を満たす各種のモジュールを使用することができる。そして、試験装置200は、試験モジュール100等のモジュールを、切替部140が有する任意の接続スロットに挿入して使用することができる。
この際、試験装置200の使用者等は、例えばサイト制御装置130aを介して切替部140の接続形態を変更して、被試験デバイス300の試験に用いる複数のモジュールを、当該被試験デバイス300の試験を制御するサイト制御装置130に接続させることができる。これにより、試験装置200の使用者は、複数の被試験デバイス300のそれぞれの端子数、端子の配置、端子の種類、又は試験の種類等に応じて適切なモジュールを選択して、試験装置200に実装することができる。
また、試験装置200又は試験モジュール100は、試験対象となる被試験回路と共に同一の電子デバイスに設けられた試験回路であってもよい。当該試験回路は、電子デバイスのBIST回路等として実現され、被試験回路を試験することにより電子デバイスの診断等を行う。これにより、当該試験回路は、被試験回路となる回路が、電子デバイスが本来目的とする通常動作を行うことができるかどうかをチェックすることができる。
また、試験装置200又は試験モジュール100は、試験対象となる被試験回路と同一のボード又は同一の装置内に設けられた試験回路であってもよい。このような試験回路も、上述したように被試験回路が本来目的とする通常動作を行うことができるかどうかをチェックすることができる。
図2は、試験モジュール100の構成の一例を示す図である。試験モジュール100は、チャネル制御部10及び複数のチャネル回路50を有する。本例では、一つのチャネル回路50の機能及び構成を説明するが、他のチャネル回路50も同一の機能及び構成を有してよい。
それぞれのチャネル回路50は、被試験デバイス300の対応する入出力ピンに接続され、当該入出力ピンに試験信号を供給してよい。また、それぞれのチャネル回路50は、当該入出力ピンからの出力信号を測定してよい。尚、被試験デバイス300の入出力ピンは、入力ピン又は出力ピンのいずれかであってもよい。
チャネル制御部10は、それぞれのチャネル回路50を制御する。例えばチャネル制御部10は、それぞれのチャネル回路50を制御して試験信号を生成させる。また、チャネル制御部10は、それぞれのチャネル回路50を制御して、被試験デバイス300の出力信号を測定させる。
また、チャネル制御部10は、いずれかのチャネル回路50における測定結果に基づいて、他のチャネル回路50を制御してもよい。例えば、いずれかのチャネル回路50における測定結果が所定の条件を満たすまで、他の少なくとも一つのチャネル回路50に所定の動作を繰り返し行わせ、測定結果が所定の条件を満たした場合に、当該他のチャネル回路50に、次に行うべき動作を行わせてよい。
チャネル制御部10は、インターフェイス部12、パターンリストメモリ14、結果メモリ16、パターン発生制御部20、メインメモリ40、レート発生部30、及びパターン発生部70を有する。インターフェイス部12は、サイト制御装置130と、試験モジュール100との間でデータを受け渡す。
メインメモリ40は、複数種類のシーケンスデータと、シーケンスデータに対応するパターンデータとを格納する。メインメモリ40は、サイト制御装置130から与えられるシーケンスデータ及びパターンデータを、被試験デバイス300の試験前に予め格納してよい。またメインメモリ40は、シーケンスデータ及びパターンデータを圧縮して格納してもよい。
例えばサイト制御装置130は、シーケンスデータ、パターンデータ、及びこれらのデータをメインメモリ40の指定アドレスに格納すべき命令を、インターフェイス部12に入力してよい。パターン発生制御部20は、インターフェイス部12が受け取った命令に応じて、これらのデータをメインメモリ40に格納する。
シーケンスデータは、例えば順次実行すべき命令群を示すデータであってよい。ここで、シーケンスデータにおける一つの命令が、試験データに対応してよく、複数の命令が試験データに対応してもよい。
パターンデータは、例えば論理値パターンを示すデータであり、複数の命令と一対一に対応付けて格納されてよい。例えばシーケンスデータは、それぞれのパターンデータを、所定の順序で出力させることにより、試験パターンを生成させる命令群であってよい。ここで、パターンデータにおいて、一つの命令に対するデータが試験データに対応してよく、複数の命令に対するデータが試験データに対応してもよい。
このとき、シーケンスデータは、それぞれのパターンデータを複数回用いて、試験パターンを生成してよい。例えばシーケンスデータは、ループ命令、ジャンプ命令等を含んでよい。チャネル制御部10が、このようなシーケンスデータを実行することにより、対応するパターンデータを展開して、シーケンスデータ及びパターンデータに応じた試験信号を生成することができる。メインメモリ40が格納するシーケンスデータ及びパターンデータの一例は、図3において後述する。
パターンリストメモリ14は、メインメモリ40が格納したシーケンスデータを実行すべき順序を示すパターンリストを格納する。例えばパターンリストメモリ14は、実行すべきシーケンスデータの、メインメモリ40におけるアドレスを順次指定するパターンリストを格納してよい。パターンリストメモリ14は、メインメモリ40と同様に、サイト制御装置130から与えられるパターンリストを、被試験デバイス300の試験前に予め格納してよい。パターンリストは、上述した試験制御プログラムの一例であってよく、試験制御プログラムの一部であってもよい。
パターン発生制御部20は、被試験デバイス300の試験を開始する場合に、パターンリストメモリ14からパターンリストを読み出す。例えばサイト制御装置130から試験を開始する旨の命令を受けた場合に、パターン発生制御部20は、パターンリストメモリ14からパターンリストを読み出してよい。
パターン発生制御部20は、メインメモリ40が格納したシーケンスデータ及び対応するパターンデータを、パターンリストに基づく順序で読み出す。パターン発生制御部20は、読み出したシーケンスデータを、パターン発生部70のベクタ発生部80に送信する。また、パターン発生制御部20は、読み出したパターンデータを、パターン発生部70のパターンキャッシュメモリ90に送信する。
パターン発生制御部20は、後段の回路のキャッシュメモリ、FIFO等に、所定の空き領域が生じた場合に、次のシーケンスデータ及びパターンデータを読み出して送信してよい。この場合、パターン発生制御部20は、シーケンスデータ及びパターンデータを格納すべき全てのキャッシュメモリ、FIFO等に、所定の空き領域が生じたことを条件として、次のシーケンスデータ及びパターンデータを読み出して、これらのキャッシュメモリ、FIFO等に送信してよい。
パターン発生部70は、パターン発生制御部20から順次受け取るシーケンスデータ及びパターンデータに基づいて、試験パターンを順次生成する。本例のパターン発生部70は、ベクタ発生部80及びパターンキャッシュメモリ90を有する。
上述したように、ベクタ発生部80は、パターン発生制御部20からシーケンスデータを受け取る。ベクタ発生部80は、受け取ったシーケンスデータを所定のキャッシュエントリ(以下、エントリと称する)に格納するシーケンスキャッシュメモリを有してよい。パターンキャッシュメモリ90は、パターン発生制御部20からパターンデータを受け取り、所定のエントリに格納する。エントリとは、例えば一つ又は複数のアドレスで指定される記憶領域であってよい。
ベクタ発生部80は、シーケンスキャッシュメモリに格納したシーケンスデータを順次実行して、パターンキャッシュメモリ90のアドレスを順次指定する。例えばシーケンスデータの各命令には、当該命令に応じて指定すべきパターンデータのアドレスが対応付けられていてよい。そして、ベクタ発生部80は、シーケンスデータに含まれるループ命令、ジャンプ命令等に応じてパターンキャッシュメモリ90のアドレスを順次指定する。
パターンキャッシュメモリ90は、順次指定されるアドレスのパターンデータを出力する。このような構成により、シーケンスデータ及びパターンデータに応じた論理パターンを有する試験パターンを生成することができる。また、シーケンスキャッシュメモリ及びパターンキャッシュメモリ90は、シーケンスデータの実行が終了した場合に、当該シーケンスデータ及び対応するパターンデータの記憶領域を開放してよい。シーケンスデータは、命令群の末尾に、シーケンスデータの終了を示す終了命令を有してよい。
それぞれのチャネル回路50は、パターン発生部が出力する試験パターンに基づいて試験信号を成形して、被試験デバイス300に入力する。また被試験デバイス300の出力信号を測定する。チャネル回路50は、波形成形部52、ドライバ54、タイミング発生部56、コンパレータ58、タイミング比較部60、判定部62、及びキャプチャメモリ64を有する。
波形成形部52は、パターン発生部70が生成した試験パターンに基づいて、試験信号を成形する。例えば波形成形部52は、当該試験パターンに応じた論理パターンを有する試験信号を生成してよい。また、波形成形部52は、与えられるタイミング信号に応じて、試験信号を生成してよい。例えば波形成形部52は、与えられるタイミング信号に応じて論理値が遷移する試験信号を生成してよい。
ドライバ54は、波形成形部52が生成した試験信号を、被試験デバイス300に入力する。ドライバ54は、波形成形部52が生成した試験信号がH論理を示すときに所定のHレベルの電圧を出力して、試験信号がL論理を示すときに所定のLレベルの電圧を出力することにより、試験信号の電圧レベルを、被試験デバイス300に入力すべき信号レベルに変換してよい。
コンパレータ58は、被試験デバイス300の出力信号を受け取り、出力信号の電圧レベルと、予め設定される参照レベルとを比較することにより、出力信号を2値の論理信号に変換してよい。例えばコンパレータ58は、出力信号の電圧レベルが参照レベルより大きい場合にH論理を出力して、出力信号の電圧レベルが参照レベル以下である場合にL論理を出力してよい。
タイミング比較部60は、与えられるストローブ信号に応じて、コンパレータ58が出力する信号の論理値を取得する。これにより、出力信号の論理パターンを検出することができる。
タイミング発生部56は、予め与えられるタイミングセットの設定値に応じて、上述したタイミング信号及びストローブ信号を生成する。例えばタイミング発生部56は、レート発生部30からタイミングセットに応じた周期で与えられるレート信号を、与えられるタイミングセットに応じた遅延量で遅延させたタイミング信号及びストローブ信号を生成してよい。
タイミングセットは、例えば一つのシーケンスデータを実行する毎に、レート発生部30及びタイミング発生部56に与えられてよい。例えばメインメモリ40は、当該シーケンスデータに対応するパターンデータの一部に、タイミングセットのデータを含んでよい。パターン発生部70は、それぞれのシーケンスデータを実行する毎に、当該シーケンスデータに対応するタイミングセットを、レート発生部30及びタイミング発生部56に設定してよい。
判定部62は、タイミング比較部60が検出した論理パターンと、期待値パターンとを比較する。これにより、被試験デバイス300の良否を判定することができる。期待値パターンは、パターン発生部70が生成してよい。例えば期待値パターンは、パターン発生部70が生成する試験パターンに含まれる、被試験デバイス300に入力される試験信号の論理パターンと同一であってよい。
キャプチャメモリ64は、判定部62における判定結果を格納する。例えばキャプチャメモリ64は、判定部62におけるパス(一致)及びフェイル(不一致)の判定結果を、試験パターン毎に格納してよい。また、キャプチャメモリ64は、判定部62におけるフェイルの判定結果を選択して格納してもよい。
また、チャネル制御部10の結果メモリ16は、それぞれのチャネル回路50の判定部62における判定結果を格納する。結果メモリ16は、それぞれの判定部62におけるパス(一致)及びフェイル(不一致)の判定結果を、試験パターン毎にそれぞれのチャネルに対応付けて格納してよい。また、結果メモリ16は、それぞれの判定部62におけるフェイルの判定結果を選択して格納してもよい。
上述したように、キャプチャメモリ64は、試験パターン毎のフェイル情報を、チャネル回路50毎に格納してよい。これに対し、結果メモリ16は、パターンリストメモリ14に格納されたシーケンスデータ毎のフェイル情報を、例えば被試験デバイス300毎に格納してよい。
図3は、パターンリストメモリ14が格納するパターンリスト、メインメモリ40が格納するシーケンスデータ、及びパターンデータの一例を説明する図である。上述したように、メインメモリ40は、複数のシーケンスデータ(シーケンスデータ1、シーケンスデータ2、・・・)と、それぞれ対応するパターンデータを格納する。
上述したように、シーケンスデータは複数の命令を含む。パターン発生部70は、それぞれの命令を実行した場合に、当該命令に対応するパターンデータを出力してよい。例えばシーケンスデータは、対応するパターンデータを出力して次の命令に移行するNOP命令、対応するパターンデータを出力して、更に所定のアドレスの命令にジャンプするJMP命令、対応するパターンデータを出力して、更に指定されたアドレス範囲の命令を所定の回数繰り返すLOOP命令等を含んでよい。
このような命令群を実行することにより、それぞれのパターンデータをシーケンスデータに応じた順序で出力して、所定の試験パターンを生成する。例えば、シーケンスデータ2を実行した場合、パターン発生部70は、パターンデータAを出力した後、パターンデータBからパターンデータCまでを、LOOP命令で指定される回数繰り返して出力する。
また、メインメモリ40は、複数のチャネル回路50に共通して、シーケンスデータを格納してよい。また、メインメモリ40は、それぞれのチャネル回路50に対してパターンデータを格納してよい。例えばシーケンスデータのそれぞれの命令に対して、複数のチャネル回路50に対応するパターンデータを格納してよい。図3の例では、メインメモリ40は、各チャネル回路50に対応するパターンデータを、それぞれのアドレスの異なるビット位置に格納する。
パターンリストメモリ14は、実行すべきシーケンスデータの順序を格納する。図3に示した例では、パターンリストメモリ14は、シーケンスデータ2、シーケンスデータ1、・・・を順に指定するパターンリストを格納する。
また、図2に示した例では、シーケンスデータ及びパターンデータを格納するメインメモリ40をチャネル制御部10に設けている。これに対し他の例では、シーケンスデータを格納するメインメモリ40をチャネル制御部10に設け、それぞれのチャネル回路50のパターンデータを格納するメモリを、それぞれのチャネル回路50に設けてもよい。
この場合、それぞれのチャネル回路50にパターンキャッシュメモリ90を設けてよい。そして、ベクタ発生部80が順次指定するアドレスを、それぞれのチャネル回路50に設けたパターンキャッシュメモリ90に分配してよい。
図4は、本実施形態に係るパターン発生部70の構成の一例を、メインメモリ40およびパターン発生制御部20とともに示す図である。ベクタ発生部80は、区間レジスタ310と、一次キャッシュ312と、メモリ制御部314と、命令キャッシュ316と、命令実行部318とを含む。
メインメモリ40は、上述したように、被試験デバイス300を試験するための試験シーケンスを定める試験命令列(シーケンスデータ)を記憶する。さらに、メインメモリ40は、シーケンスデータに含まれる各命令に対応付けられた試験パターンを含む試験パターン列(パターンデータ)を記憶する。
ベクタ発生部80に含まれる一次キャッシュ312は、シーケンスデータを記憶する。一次キャッシュ312は、本実施形態に係るパターンメモリの一例である。パターンキャッシュメモリ90は、パターンデータを記憶する。
パターン発生制御部20は、本実施形態に係る転送部の一例である。パターン発生制御部20は、メインメモリ40に記憶された複数のシーケンスデータをパターンリストの記述に従って読み出して、一次キャッシュ312に書き込む。パターン発生制御部20は、メインメモリ40に記憶された複数のパターンデータをパターンリストの記述に従って読み出して、パターンキャッシュメモリ90に書き込む。すなわち、パターン発生制御部20は、第1のシーケンスデータに含まれる先頭の命令から終了命令までのメインメモリ40から一次キャッシュ312への転送を完了すると、第1のシーケンスデータの次に実行すべき第2のシーケンスデータの先頭の命令から転送を開始する。同様に、パターン発生制御部20は、第1のシーケンスデータに対応する第1のパターンデータの先頭の試験パターンから最後の試験パターンまでのメインメモリ40からパターンキャッシュメモリ90への転送を完了すると、第2のシーケンスデータに対応する第2のパターンデータの先頭の試験パターンから転送を開始する。
更に、パターン発生制御部20は、1つのシーケンスデータ内の連続した命令列又は複数のシーケンスデータにまたがる連続した命令列を繰返して実行する場合、当該命令列を指定する繰返し区間を、例えばパターンリスト等から読み出して、区間レジスタ310に書き込む。
区間レジスタ310は、シーケンスデータ中における、繰返し実行するべき少なくとも1つの命令を示す繰返し区間が指定されたことに応じて、繰返し区間を格納する。区間レジスタ310は、一例として、パターンリスト中において指定された繰返し区間が、パターン発生制御部20により書き込まれてよい。
メモリ制御部314は、一次キャッシュ312からシーケンスデータを読み出して、命令キャッシュ316に書き込む。更に、メモリ制御部314は、区間レジスタ310に繰返し区間が格納されている場合、繰返し区間における末尾の命令を、分岐命令または終了命令に置き換える。
命令キャッシュ316は、一次キャッシュ312から読み出されたシーケンスデータをキャッシングする。命令キャッシュ316によりキャッシングされているシーケンスデータに含まれる各命令は、パターンキャッシュメモリ90により記憶されているパターンデータに含まれる試験パターンに対応付けられている。
命令実行部318は、命令キャッシュ316に記憶されたシーケンスデータに含まれる命令を順次に読み出して実行する。シーケンスデータに含まれる各命令には、当該シーケンスデータ中における、当該命令の位置を示すオフセットが割り付けられている。
命令実行部318は、オフセットに従って命令を順次に読み出して実行することにより、当該シーケンスデータにより定められた試験シーケンスを実行する。すなわち、命令実行部318は、シーケンスデータの先頭のオフセットの命令から実行を開始し、オフセットに従った順序で命令を実行する。より具体的には、命令実行部318は、命令を実行し、実行した当該命令に応じて定められる次に実行すべき命令のオフセットを特定し、特定したオフセットの命令を命令キャッシュ316から読み出し、読み出した命令を実行する、といった処理を繰り返す。
命令実行部318は、命令を実行した場合、当該命令に割り付けられたオフセットを、当該命令に対応した試験パターンを指定するベクタアドレスに変換する。命令実行部318は、当該ベクタアドレスをパターンキャッシュメモリ90に与え、パターンキャッシュメモリ90から実行した命令に対応する試験パターンを出力させる。パターンキャッシュメモリ90は、試験パターンをチャネル回路50に供給する。そして、チャネル回路50は、供給された試験パターンに応じた試験信号を生成し、被試験デバイス300に供給する。パターンキャッシュメモリ90は、一例として、試験パターンを波形成形部52、タイミング発生部56および判定部62に供給する。
また、シーケンスデータに含まれる各命令には、対応する当該試験パターンを出力するためのタイミングの組を指定するタイミングセット情報(TS)が対応付けられている。命令実行部318は、命令を実行した場合、当該命令に対応付けられたタイミングセット情報を、パターンキャッシュメモリ90から出力する試験パターンに対応させて、当該パターンキャッシュメモリ90からレート発生部30およびタイミング発生部56に出力させる。
命令実行部318は、複数のシーケンスデータを命令キャッシュ316に書き込まれた順序(すなわち、パターンリストの記述に従った順序)で実行する。すなわち、命令実行部318は、第1のシーケンスデータに含まれる先頭の命令から終了命令までの実行を完了すると、第1のシーケンスデータの次に実行すべき第2のシーケンスデータの先頭の命令から実行を開始する。更に、命令実行部318は、区間レジスタ310に繰返し区間が格納されている場合において、シーケンスデータにおける繰返し区間内の命令列を繰返し実行する。
図5は、一次キャッシュ312に格納されるシーケンスデータ(試験命令列)の一例を示す図である。シーケンスデータには、一例として、NOP命令、ジャンプ命令(JMP命令)、待機命令(IDXI命令)、終了命令(EXIT命令)等が含まれてよい。命令実行部318は、NOP命令を実行した場合、当該NOP命令の次のオフセットが割り付けられた命令を次に実行すべき命令として特定する。
分岐命令の一例である前方向分岐命令(JMP命令)は、指定された条件に一致しない場合(又は一致する場合)、当該JMP命令より前の実行済みの命令を、次に実行すべき命令として特定する。これにより、命令実行部318は、処理を再び実行済みの命令に戻し、当該実行済み命令から当該JMP命令までの処理を繰り返すことができる。
更に、JMP命令は、指定された条件に一致した場合(又は一致しない場合)、当該JMP命令の次のオフセットが割り付けられた命令を、次に実行すべき命令として特定する。これにより、命令実行部318は、ループ処理を抜けて、処理を次の命令に進めることができる。なお、本実施形態において、命令実行部318は、JMP命令の実行において、当該JMP命令から前の所定の範囲の命令まで戻ることができ、当該所定の範囲を超えて前に戻ることができない。例えば、命令実行部318は、JMP命令の実行において、当該JMP命令から前の512ワードの範囲の命令まで戻ることができ、513ワードより前の命令には戻ることができない。また、本実施形態においては、命令実行部318は、JMP命令の実行において、当該JMP命令より後の他のJMP命令の戻り先となる命令を超えて、前に処理を戻すことはできない。
待機命令(IDXI命令)は、対応するパターンデータを指定した回数分繰り返し出力させる命令である。命令実行部318は、IDXI命令を実行した場合、当該IDXI命令を実行してから指定されたサイクルをカウントするまでの間においては次の命令に処理を移さない。そして、命令実行部318は、IDXI命令を実行した場合、指定されたサイクルが経過した後に、当該IDXI命令の次のオフセットが割り付けられた命令を、次に実行すべき命令として特定する。
終了命令(EXIT命令)は、シーケンスデータの実行を終了させる命令である。命令実行部318は、EXIT命令を実行した場合、次に実行すべき命令を特定せず、当該シーケンスデータの実行を終了する。そして、命令実行部318は、EXIT命令を実行すると、次に実行すべき他のシーケンスデータへ処理を移す。
図6は、繰返し区間の一例を示す図である。図7は、図6に示された繰返し区間が指定されている場合における命令の実行順序を示す図である。
区間レジスタ310は、繰返し区間として、繰返し実行すべき命令列の先頭の命令、および、繰返し実行すべき命令列の末尾の命令を特定する情報を格納する。区間レジスタ310は、一例として、繰返し実行すべき命令列の先頭の命令のオフセット(STA)、当該先頭の命令を含むシーケンスデータを示すID(開始シーケンスID)、繰返し実行すべき命令列の末尾の命令のオフセット(SPA)、当該末尾の命令を含むシーケンスデータを示すID(終了シーケンスID)を格納してよい。区間レジスタ310は、SPAおよび終了シーケンスIDに代えて、繰返し実行すべき命令列の長さを格納してもよい。また、区間レジスタ310は、終了シーケンスIDに代えて、繰返し実行すべき命令列を含むシーケンスデータ数を格納してもよい。
例えば、図6に示すように、第1〜第5のシーケンスデータがメインメモリ40に記憶されている場合において、STAが"A"、開始シーケンスIDが第2のシーケンスデータを表すシーケンス#2、SPAが"B"、終了シーケンスIDが第4のシーケンスデータを表すシーケンス#4である場合、パターン発生制御部20および命令実行部318は、図7に示すような順序で命令を、転送および実行する。
すなわち、パターン発生制御部20は、まず、第1〜第3のシーケンスデータの先頭から末尾のオフセットまでの命令をメインメモリ40から一次キャッシュ312に順次に転送する。これとともに、パターン発生制御部20は、第1〜第3のシーケンスデータに対応する第1〜第3のパターンデータの先頭から末尾のオフセットまでの試験パターンをメインメモリ40からパターンキャッシュメモリ90に順次に転送する。そして、命令実行部318は、第1〜第3のシーケンスデータの先頭から末尾のオフセットまで順次に命令を実行する。
次に、パターン発生制御部20は、第4のシーケンスデータの先頭のオフセットから第B番目のオフセットまで命令をメインメモリ40から一次キャッシュ312に順次に転送する。これとともに、パターン発生制御部20は、第4のシーケンスデータに対応する第4のパターンデータの先頭から第B番目のオフセットまでの試験パターンをメインメモリ40からパターンキャッシュメモリ90に順次に転送する。そそして、命令実行部318は、第4のシーケンスデータの先頭のオフセットから第B番目のオフセットまで順次に命令を実行する。
第4のシーケンスデータの第B番目のオフセットの命令は、繰返し区間の末尾の命令であることから、続いて、パターン発生制御部20は、第2のシーケンスデータの第A番目のオフセットの命令に戻り、当該命令から再度転送を開始する。これとともに、パターン発生制御部20は、第2のパターンデータの先頭から第A番目のオフセットの試験パターンに戻り、当該試験パターンから再度転送を開始する。そして、命令実行部318は、繰返し区間の先頭の命令である第2のシーケンスデータの第A番目のオフセットの命令に処理を戻す。
次に、パターン発生制御部20は、第2のシーケンスデータの第A番目のオフセットの命令から第4のシーケンスデータの第B番目のオフセットの命令までの命令列を、指定された回数分繰返して、メインメモリ40から一次キャッシュ312に転送する。これとともに、パターン発生制御部20は、第2のパターンデータの第A番目のオフセットの試験パターンから第4のパターンデータの第B番目のオフセットの試験パターンまでの試験パターン列を、指定された回数分繰返して、メインメモリ40からパターンキャッシュメモリ90に順次に転送する。命令実行部318は、第2のシーケンスデータの第A番目のオフセットの命令から第4のシーケンスデータの第B番目のオフセットの命令までの命令列を、指定された回数分繰返して実行する。そして、命令実行部318は、指定された回数目の実行においてループ処理を抜け、第4のシーケンスデータの末尾のオフセットまで命令を実行する。
次に、パターン発生制御部20は、第5のシーケンスデータの先頭から末尾のオフセットまでの命令をメインメモリ40から一次キャッシュ312に順次に転送する。これとともに、パターン発生制御部20は、第5のシーケンスデータに対応する第5のパターンデータの先頭から末尾のオフセットまでの試験パターンをメインメモリ40からパターンキャッシュメモリ90に順次に転送する。そして、命令実行部318は、第5のシーケンスデータの先頭から末尾のオフセットまで順次に命令を実行する。以上のようにパターン発生制御部20および命令実行部318は、区間レジスタ310に繰返し区間が格納されている場合、当該繰返し区間において指定された連続した命令列および試験パターン列を、指定された回数分転送および実行する。
図8は、1つのシーケンスデータ内の連続した命令列を繰返し実行する場合における、メモリ制御部314の処理の第1例を示す図である。第1例において、メモリ制御部314は、区間レジスタ310に繰返し区間が格納されている場合、一次キャッシュ312から読み出した繰返し区間の末尾の命令を、繰返し区間の先頭の命令に分岐する分岐命令に変換して命令キャッシュ316に書き込む。メモリ制御部314は、一例として、終了シーケンスIDにより示されたシーケンスデータにおけるSPAに対応する命令を、JMP命令に変換してよい。この場合において、メモリ制御部314は、JMP命令の次に実行すべき命令として、開始シーケンスIDにより示されたシーケンスデータにおけるSTAに対応する命令を指定する。これにより、命令実行部318によれば、指定された繰返し区間の命令列を繰返し実行することができる。
更に、繰返し区間とともに繰返し回数が指定されている場合、メモリ制御部314は、一例として、繰返し区間の末尾の命令を、繰返し回数が分岐条件として指定された分岐命令に変換してよい。すなわち、メモリ制御部314は、当該命令が指定回数分実行されていないことを条件として前方向の位置する実行済みの命令に処理を移動させ、当該命令が指定回数分実行されたことを条件として、繰返し処理を終了して後方向に位置する命令に処理を移動させる分岐命令を、命令キャッシュ316に書き込んでもよい。これにより、命令実行部318によれば、指定された繰返し区間の命令列を、指定された回数分実行することができる。
更に、メモリ制御部314は、一例として、繰返し区間の命令長が予め定められた基準命令長以下であることを条件として、一次キャッシュ312から読み出した繰返し区間の末尾の命令を、繰返し区間の先頭の命令に分岐する分岐命令に変換してよい。ここで、予め定められた基準命令長は、一例として、分岐命令と、当該分岐命令により前方向に分岐することによって再び実行されうる命令までの間の最大のワード数であってよい。例えば、予め定められた基準命令長は、JMP命令によって戻ることが可能な最大のワード数(例えば、512ワード)であってよい。これにより、メモリ制御部314によれば、所定ワード以上離れている命令を分岐命令の次に実行される命令として指定することができない、という制限が設けられている場合であっても、制限に反した分岐命令を命令キャッシュ316に書き込むことを回避することができる。
更に、メモリ制御部314は、一例として、繰返し実行すべき命令列の全てが1つのシーケンスデータに含まれることを条件として、繰返し区間の末尾の命令を、繰返し区間の先頭の命令に分岐する分岐命令に変換してよい。メモリ制御部314は、一例として、区間レジスタ310が格納する開始シーケンスIDおよび終了シーケンスIDが同じ値となることを条件として、末尾命令を分岐命令に変換してよい。これにより、メモリ制御部314によれば、異なるシーケンスデータの命令を分岐命令の次に実行される命令として指定することができない、という制限が設けられている場合であっても、制限に反した分岐命令を命令キャッシュ316に書き込むことを回避することができる。
更に、メモリ制御部314は、命令実行部318が命令キャッシュ316からシーケンスデータを順次読み出して実行するのと並行して、当該シーケンスデータにおける後に実行するべき部分を一次キャッシュ312から順次読み出して、命令キャッシュ316中における、現在実行中の命令から前方分岐によっても到達できない実行済みの命令を格納している領域に上書きしてもよい。これにより、メモリ制御部314によれば、繰返し区間の命令列を命令キャッシュ316内から消去することなく、繰返し区間の実行を終えた後に実行されるべき命令列を命令キャッシュ316に書き込むことができる。この結果、メモリ制御部314によれば、繰返し区間の命令列を命令キャッシュ316に複数回書き込まなくてよいので、転送負担を軽減することができる。
図9は、1つのシーケンスデータ内の連続した命令列を繰返し実行する場合における、メモリ制御部314の処理の第2例を示す図である。第2例において、メモリ制御部314は、区間レジスタ310に繰返し区間が格納されている場合、一次キャッシュ312から読み出した繰返し区間の末尾の命令を、シーケンスデータの実行を終わらせる終了命令に変換して命令キャッシュ316に書き込む。更に、命令実行部318は、命令キャッシュ316に格納された終了命令を実行したことに応じてシーケンスデータの実行を一旦終了し、繰返し区間の先頭の命令から順にシーケンスデータの実行を再度開始する。
メモリ制御部314は、一例として、終了シーケンスIDにより示されたシーケンスデータにおけるSPAに対応する命令を、EXIT命令に変換してよい。更に、命令実行部318は、終了シーケンスIDにより示されたシーケンスデータにおけるEXIT命令を実行したことに応じて、当該シーケンスデータの実行を一旦終了する。そして、命令実行部318は、当該シーケンスデータにおけるSTAに対応する命令から順に命令の実行を再度開始する。これにより、命令実行部318によれば、指定された繰返し区間の命令列を繰返し実行することができる。更に、命令実行部318によれば、所定ワード以上離れている命令を分岐命令の次に実行される命令として指定することができない、という制限が設けられている場合であっても、当該制限に反することなく、指定された繰返し区間の命令列を繰返し実行することができる。
また、パターン発生制御部20は、一例として、命令実行部318が繰返し区間の命令列を実行するのと並行して、次回以降の繰り返しにおいて実行されるべき繰返し区間の命令列をメインメモリ40から読み出して一次キャッシュ312に書き込んでよい。これにより、パターン発生制御部20によれば、命令実行部318に対して、1回分の繰返し区間の命令列の実行を終えた後に、次の回の繰返し区間の命令列を続けて実行させることができる。
更に、繰返し区間とともに繰返し回数が指定されている場合、パターン発生制御部20は、一例として、繰返し区間の命令列を、指定された回数分一次キャッシュ312に連続して書き込んでよい。これにより、パターン発生制御部20によれば、命令実行部318に対して、指定された繰返し区間の命令列を、指定された回数分実行させることができる。
また、メモリ制御部314は、一例として、繰返し区間の命令長が予め定められた基準命令長より長いことを条件として、繰返し区間の末尾の命令を終了命令に変換してよい。これにより、メモリ制御部314によれば、繰返し区間の命令長が予め定められた基準命令長以下である場合に、繰返し区間の末尾の命令を分岐命令とすることができる。この結果、メモリ制御部314によれば、繰返し区間の命令長が予め定められた基準命令長以下である場合、繰返し区間の命令列を複数回命令キャッシュ316に書き込まなくてよいので、転送負担を軽減することができる。
なお、命令実行部318は、パターンデータの先頭からのオフセットにより表されたベクタアドレスをパターンキャッシュメモリ90に出力してよい。ここで、区間レジスタ310に繰返し区間が格納されていると、命令実行部318は、シーケンスデータの途中の命令から実行を開始するので、実行している命令との対応関係がずれたベクタアドレスを発生してしまう。従って、区間レジスタ310に繰返し区間が格納されている場合であって、繰返し期間の先頭のシーケンスデータについての命令を実行する場合においては、命令実行部318は、SPAにより指定された命令のオフセットを加算したベクタアドレスを、パターンキャッシュメモリ90に供給してよい。これにより、命令実行部318は、実行している命令と対応した試験パターンを指定するベクタアドレスを出力することができる。
図10は、複数のシーケンスデータにまたがった連続した命令列を繰返し実行する場合における、メモリ制御部314の処理の一例を示す図である。上述したように、一次キャッシュ312は、順次実行されるべき複数のシーケンスデータを記憶してよい。また、区間レジスタ310は、複数のシーケンスデータ中にまたがる連続した命令列を指定する繰返し区間を格納してよい。
ここで、2以上のシーケンスデータ中にまたがる連続した命令列を指定する繰返し区間が区間レジスタ310に格納されている場合、メモリ制御部314は、一次キャッシュ312から読み出した繰返し区間の末尾の命令を、当該命令を含むシーケンスデータの実行を終わらせる終了命令に変換して命令キャッシュ316に書き込む。更に、命令実行部318は、命令キャッシュ316に格納された、繰返し区間の末尾となる終了命令を実行したことに応じて当該終了命令を含むシーケンスデータの実行を終了し、繰返し区間の先頭に位置するシーケンスデータにおける繰返し区間の先頭の命令から順に再度実行する。
メモリ制御部314は、一例として、終了シーケンスIDにより示されたシーケンスデータにおけるSPAに対応する命令を、EXIT命令に変換してよい。更に、命令実行部318は、終了シーケンスIDにより示されたシーケンスデータにおけるEXIT命令を実行したことに応じて、当該終了シーケンスIDにより示されたシーケンスデータの実行を一旦終了する。次に、命令実行部318は、開始シーケンスIDにより示されたシーケンスデータにおけるSTAに対応する命令から順に命令の実行を再度開始する。これにより、命令実行部318によれば、複数のシーケンスデータにまたがり指定された繰返し区間の命令列を繰返し実行することができる。
また、パターン発生制御部20は、一例として、命令実行部318が繰返し区間の命令列を実行するのと並行して、当該繰返し区間における未だ転送されていない命令列、および、次回以降の繰り返しにおいて実行されるべき繰返し区間の命令列をメインメモリ40から読み出して一次キャッシュ312に書き込んでよい。また、繰返し区間とともに繰返し回数が指定されている場合、パターン発生制御部20は、一例として、繰返し区間に含まれる複数のシーケンスデータを、指定された回数分一次キャッシュ312に連続して書き込んでよい。これにより、パターン発生制御部20によれば、命令実行部318に対して、指定された繰返し区間の命令列を、指定された回数分実行させることができる。
図11は、本実施形態の変形例に係るパターン発生部70の構成を、パターン発生制御部20およびメインメモリ40とともに示す図である。図12は、圧縮されていないシーケンスデータ、NOP命令を削除した圧縮形式のシーケンスデータおよび圧縮形式のシーケンスデータを展開したシーケンスデータの一例を示す図である。
本変形例は、図1〜図10において説明した本実施形態と略同一の構成および機能を採る。本変形例に係る各部材において、図1〜図10に示した部材と略同一の構成および機能を採る部材については、図11中に同一の符号を付け、以下相違点を除き説明を省略する。なお、図12における展開後のシーケンスデータの各命令には、展開後の命令であることを示すEを、各命令名の前に付加している。
本変形例に係るメインメモリ40および一次キャッシュ312は、NOP命令を削除した圧縮形式により、シーケンスデータに含まれる圧縮対象でない各命令を記憶する。例えば、メインメモリ40および一次キャッシュ312は、図12に示すように、圧縮されていない命令列からNOP命令を削除したシーケンスデータ、すなわち、IDXI命令、JMP命令、EXIT命令等のNOP以外の命令を含むシーケンスデータを記憶する。これにより、試験モジュール100によれば、メインメモリ40および一次キャッシュ312の容量を小さくすることができる。
更に、メインメモリ40および一次キャッシュ312は、圧縮対象でない各命令に対応して、各命令に対応する試験パターンのオフセットを記憶する。すなわち、メインメモリ40および一次キャッシュ312は、圧縮対象でない各命令(NOP命令以外の各命令)に対応して、各命令が圧縮されていない状態において割り付けられていたオフセットを記憶する。
ベクタ発生部80は、更に、展開部330を含む。展開部330は、メモリ制御部314が一次キャッシュ312から読み出したシーケンスデータを命令キャッシュ316に書き込む場合において、削除されたNOP命令を再生する。より具体的には、展開部330は、一次キャッシュ312から読み出したシーケンスデータにおける第1の命令のオフセットと、一次キャッシュ312中において第1の命令の次に記憶された第2の命令のオフセットとが連続しない場合において、第1の命令の次のオフセットから第2の命令の前のオフセットまでの各オフセットに対応してNOP命令を再生する。
例えば、図12に示すように、4番目以前のオフセットの命令が全てNOP命令であり、更に、5番目のオフセットのIDXI命令と、9番目のオフセットのJMP命令との間の命令が全てNOP命令であったとする。すなわち、メインメモリ40および一次キャッシュ312に格納されるシーケンスデータは、5番目のオフセットのIDXI命令と、9番目のオフセットのJMP命令とを含み、1〜4番目、6番目〜8番目のNOP命令が削除されている。
この場合、展開部330は、1〜4番目のオフセットのNOP命令、および、5番目〜9番目のNOP命令を再生する。これにより、展開部330によれば、圧縮されたシーケンスデータを、命令実行部318により実行ができる形式に変換して命令キャッシュ316に書き込むことができる。
図13は、繰返し区間の先頭の命令がNOP命令であった場合における、パターン発生制御部20による転送処理および展開部330による展開処理を示す図である。ここで、パターン発生制御部20は、2回目以降の繰返しにおいて、繰返し区間の先頭の命令に対応するオフセットが、第1の命令に対応するオフセットと第2の命令に対応するオフセットとの間の値であったことに応じて、第2の命令以降の命令をメインメモリ40から一次キャッシュ312に転送する。さらに、展開部330は、2回目以降の繰返しにおいて、繰返し区間の先頭の命令に対応するオフセットが、第1の命令に対応するオフセットと第2の命令に対応するオフセットとの間の値であったことに応じて、先頭の命令のオフセットから第2の命令の前のオフセットまでの各オフセットに対応してNOP命令を再生する。
例えば、図13に示すように、5番目のオフセットのIDXI命令と、9番目のオフセットのJMP命令との間の命令が全てNOP命令であり、7番目のオフセットのNOP命令が繰返し区間の先頭の命令であったとする。すなわち、メインメモリ40に格納されたシーケンスデータは、5番目のオフセットのIDXI命令と、9番目のオフセットのJMP命令とを含み、6番目〜8番目のNOP命令が削除されている。
この場合、パターン発生制御部20は、2回目以降の繰返しにおいて、9番目のオフセットのJMP命令以降の命令を、メインメモリ40から一次キャッシュ312に転送する。そして、展開部330は、2回目以降の繰返しにおいて、5番目のオフセットのIDXI命令以前のNOP命令については再生しなくてよい。更に、展開部330は、7番目および8番目のNOP命令について再生して、6番目のNOP命令については再生しなくてよい。これにより、展開部330は、NOP命令が削除されている場合において、実行されるNOP命令を再生することができる。
図14は、一つの実施形態に係る電子デバイス400の構成の一例を示す図である。電子デバイス400は、被試験回路410、試験回路420、入出力ピン430、及びBISTピン440を有する。被試験回路410は、電子デバイス400の実装時に動作する回路であってよい。被試験回路410は、電子デバイス400の実装時に入出力ピン430から与えられる信号に応じて動作する。
例えば電子デバイス400がメモリデバイスである場合、被試験回路410は、電子デバイス400のメモリセルを含む回路であってよい。例えば被試験回路410は、メモリセル及びメモリセルを制御する制御回路であってよい。制御回路は、メモリセルへのデータの書き込み、メモリセルからのデータの読み出しを制御する回路であってよい。
試験回路420は、被試験回路410と同一の半導体チップに設けられ、被試験回路410を試験する。試験回路420は、図1から図13に関連して説明した試験モジュール100と同一の構成を有してよい。また試験回路420は、試験モジュール100の一部の構成を有してもよい。また試験回路420は、試験モジュール100の一部の機能を行う回路であってよい。例えば試験回路420は、結果メモリ16を有さなくてよい。また試験回路420のレート発生部30及びタイミング発生部56は、固定されたタイミングセットの設定値により動作してよい。
また試験回路420は、外部の試験装置からBISTピン440を介して被試験回路410のセルフテストを行う旨の信号が与えられた場合に、被試験回路410を試験してよい。BISTピン440は、電子デバイス400の実装時には用いられないピンであることが好ましい。また試験回路420は、被試験回路410の試験結果を、BISTピン440から外部の試験装置に出力してよい。
外部の試験装置は、図1に関連して説明したサイト制御装置130と同様の動作を行ってよい。つまり、試験回路420を、図1から図13に関連して説明した試験モジュール100と同様に機能させるべく、試験制御プログラム、試験プログラム、試験データ等を試験回路420に供給してよい。
以上、本発明の一つの側面を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることができる。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、請求の範囲の記載から明らかである。