(57)【特許請求の範囲】
【請求項１】
検査パターンを格納する不揮発性メモリ（１３０）を有するワークステーション（１２８）に接続され、一連のベクトルを含む検査パターンを実行するために用いられる形式の自動検査機器（２１０）であって、
前記検査パターンを格納する順次アクセス・メモリ（１１８）と、
ランダム・アクセス・メモリ（１２０）と、
前記ワークステーションに接続されたデータ入力ポートと、
複数のピン（１１４）、前記順次アクセス・メモリ、および前記ランダム・アクセス・メモリに結合され、前記順次アクセス・メモリ内に格納されている前記検査パターンを実行し、検査信号を発生する検査制御回路（１１６）と、
前記データ入力ポート、前記順次アクセス・メモリ、および前記ランダム・アクセス・メモリに結合されたロード制御回路（１２６）と、
を備え、
前記ランダム・アクセス・メモリは、ベクトルのロードの間、複数のベクトルを格納するキャッシュ・メモリとして使用し、検査実行の間、不連続ベクトルを実行するために使用するように適応可能であり、
前記ロード制御回路が、前記データ入力ポートからメッセージを受け取り、該受け取ったメッセージに応答し前記キャッシュ・メモリからベクトルを検索し、前記データ入力ポートから変更メッセージを受け取り、前記検索したベクトルと前記受け取った変更メッセージの組み合わせから新たなベクトルを生成し、前記新たなベクトルを前記順次アクセス・メモリに格納する、制御ロジック（２５０）を含む、
自動検査機器。
【請求項２】
請求項１記載の自動検査機器において、前記制御ロジックが、
（ａ）前記順次アクセス・メモリに接続されたデータ出力を有するラッチ（１２２）であって、複数の位置および複数のイネーブル入力を有し、各イネーブル入力が、前記複数の位置の１つにデータの格納を可能とするラッチと、
（ｂ）複数の出力を有し、各々前記ラッチの前記イネーブル入力に結合された、デコーダ（１２４）と、
を備える自動検査機器。
【請求項３】
請求項２記載の自動検査機器において、各ベクトルが、前記ピンのグループにおける各ピン毎に１つのフィールド（３１２，３１４，３１６）を含み、前記ラッチ内の前記複数の位置の位置数が、前記グループ内のピンの数に等しい、自動検査機器。
【請求項４】
請求項１記載の自動検査機器において、前記制御ロジックが、付加的に、前記新たなベクトルを前記キャッシュ・メモリに格納する手段を含む、自動検査機器。
【請求項５】
請求項１記載の自動検査機器において、前記制御ロジックが、前記新たなベクトルを前記キャッシュ・メモリに選択的に格納する、自動検査機器。
【請求項６】
請求項５記載の自動検査機器において、前記新たなベクトルが、前記データ入力ポートに供給されるデータ値に応答して、選択的に格納される、自動検査機器。
【発明の詳細な説明】
本発明は、一般的に、自動検査（試験）機器に関し、更に特定すれば、内部メモリに迅速に検査パターンをロードする自動検査機器に関するものである。
自動検査機器は、半導体製造業界では広く用いられている。「テスタ」と呼ばれる自動検査機器が、製造プロセスの種々の段階において、半導体構成部品（要素）を検査するために用いられている。異なる段階（ステージ）において、または異なる構成要素に対して、異なる検査を行うことも有り得る。
テスタはプログラム可能であるので、これらは必要とされる種々の検査を行うことができる。検査（テスト）「パターン」は、一連の「ベクトル」で構成される。各ベクトルは、被検査半導体デバイス（「ＤＵＴ(：device under test)」）のリードに印加すべき信号を特定する。また、ベクトルは、ＤＵＴのリードから予測される信号を特定する。検査パターンは、テスタのメモリに格納され、各サイクル毎に１ベクトルずつ読み出される。データ値は、ＤＵＴに印加され、応答がベクトル内の予測応答と比較される。
いずれのサイクルでも、ＤＵＴの各リードに供給されるデータまたはこれから読み出されるデータは変化する可能性がある。したがって、テスタは、ＤＵＴの各リード毎に信号を独立して発生し測定しなければならない。このために、テスタは、多数の「チャネル」即ち「ピン・エレクトロニクス」を有する。ピン・エレクトロニクスの各コピーのことは、通常単に「ピン」と呼ばれている。このコピーをＤＵＴのリードの１本に接続する。ベクトル内に含まれている情報に基づいて、各ピンはリードに信号を送り、あるいは、リードにおいて信号を測定し、それを予測値と比較する。
検査パターンを指定するために必要なデータ量は、非常に多い。各ベクトルは、各ピン毎に制御情報を含む。当該ピンは駆動すべきかまたはデータを受け取るべきかについて伝達し、どのデータ値を駆動すべきかまたは読み取るべきかを記述するためには、多数のビットが必要となる。典型的なテスタは、数百本のピンを内蔵する場合があるが、数千本のピンを有するテスタも稀ではない。各検査パターンは、１０００万サイクルの実行を必要とする場合もある。全体として、数十億ビットのデータが、検査パターンをコード化するために通常用いられる。
テープやディスクのような大容量記憶装置が、かかるデータを格納するために広く用いられている。しかしながら、大容量記憶装置のアクセス時間が長すぎるために、これらはテスタ内で用いることはできない。テスタは、各サイクル毎にデータのベクトル全てを供給しなければならないが、１サイクルは数ナノ秒程度の短さの可能性もある。したがって、テスタは、大量の揮発性メモリを含む。検査パターンは、大容量記憶装置に格納され、次いで使用の前にテスタ内のメモリにロードされる。
典型的には、テスタはワークステーションに接続されている。ワークステーションは大容量記憶装置を含む。検査を行う前に、ワークステーションは大容量記憶装置からテスタに検査パターンを転送する。多くの場合、大容量記憶装置内のデータは、圧縮されたフォーマットで格納されている。ワークステーションは、情報をテスタに送る前に伸長（圧縮解除）する。テスタ内部では、ロード制御回路が検査パターンをメモリにロードする。
数十億ビットものデータをメモリにロードするプロセスは、非常に時間がかかる可能性がある。１５分ないし２０分に及ぶロード時間も稀ではない。ロード時間中テスタは使用できないので、長いロード時間は望ましくない。製造プロセスにおいて機器が使用できないときはいつでも、潜在的に製造処理のスループットが低下することになり、非常に望ましくない。
ロード・プロセスの高速化を図るために、種々の技法が用いられている。通常、ロード・プロセスの速度は、データをワークステーションからテスタに転送可能なレートによって制限される。ベクトルをロードするレートを高め得る方法の１つは、ワークステーションとテスタとの間の接続のデータ・レートを高めることである。例えば、従来の撚り線対バスに代えて、光ファイバ・リンクを用いることができる。場合によっては、リンクのデータ・レートを高めるだけでは、ロード速度を高めることにはならない。大容量記憶装置からデータを検索する際、またはデータを処理する際のいずれかにおいて、ワークステーション内にボトルネックがある場合、ワークステーションの速度も高めて、ロード時間に影響を及ぼすようにしなければならない。
高速化を図る別の方法は、部分的に圧縮されたデータをテスタに送ることによって、リンクを通して伝達（伝送）される情報量を減少させることである。一般的に、テスタはワークステーション程精巧なデータ処理能力を有していないので、テスタでは完全な圧縮解除は行われない。むしろ、大容量記憶装置上の圧縮データを、部分的にワークステーションによって圧縮解除する。その結果、データは大容量記憶装置上に格納されているときよりもビット数が多くなるが、テスタ上の不揮発性メモリを埋め尽くす程のビットにはならない。
図１は、デルタ・コード化と呼ばれる方法を用い、未だ圧縮状態にあるが部分的に圧縮解除されたデータを受け取るための装置を有するテスタを示す。テスタ１１０は、ＤＵＴ１１２に接続されている状態が示されている。多数のピン１１４が示されている。テスタ１１０の動作は、検査制御回路１１６によって制御される。ＬＶＭメモリ１１８に格納されている検査パターンが、検査制御回路１１６によって読み出され、検査制御回路１１６は適切な制御信号を各ピン１１４に送る。また、検査制御回路１１６は、検査の結果をワークステーション１２８にレポートする（伝える）。
ワークステーション１２８は、テスタ１１０に接続されている。ワークステーション１２８は、オペレータ・インターフェースを備え、検査パターンのテスタ１１０へのローディングを制御する。ワークステーション１２８には、大容量記憶装置１３０が連動し、検査パターンを格納する。
検査パターンをロードする際、ワークステーション１２８は、検査パターンを大容量記憶装置１３０から読み出す。ワークステーション１２８は、部分的に情報を圧縮解除し、それをそのデルタ・コード化形態にしておく。次に、ワークステーション１２８は、ＬＶＭ１１８に格納する各ベクトルについてのデータを送る。しかしながら、各ベクトル毎にワークステーション１２８からテスタ１１０に送られるデータは、ピンに関して直前のベクトルと異なる情報のみを含む。
ロード時間を短縮するために、ピンを集団（グループ）に編成し、１度に１グループの制御情報を伝送する。理想的には、同じ制御情報をしばしば必要とするピンを含むグループを選択し、制御情報は多数のピンに供給するが、データはワークステーション１２８とテスタ１１０との間のリンクを１回だけ伝達すれば済むようにすることであろう。グループの中には１本のピンのみを含むものもある。各ピン毎にかかるグループが１つある。これらのグループは、いずれのピンでもアクセス可能とし、いずれの値のパターンでも指定することを可能にする。
また、ベクトル毎に異なるピンまたはピンのグループもいくつかあるので、あるベクトルと次のベクトルとの間の相違を完全に指定するためには、多数のデータ値をテスタ１１０に送らなければならない場合もあり得る。ロード・プロセスでは、ＬＶＭメモリ１１８に格納する１つのベクトルに対するデータは、ＣＤＬラッチ１２２において組み立てられる。一旦１つのベクトルに対するデータがＣＤＬラッチ１２２内で組み立てられたなら、ＬＶＭメモリ１１８の次の位置に転送される。
ＣＤＬラッチ１２２は、各ピン毎に１つの位置を含む。種々のメッセージがワークステーション１２８から送られ、どのデータをこれらの位置の各々に書き込むべきかを指示する。メッセージは、ピン・インデックスを含み、どのピンが当該メッセージ内のデータを受け取るのかを示す。
一旦ベクトルがＬＶＭ１１８に書き込まれても、そのベクトルの値は未だＣＤＬラッチ１２２に収容されている。次のベクトルを指定するメッセージは、ＣＤＬラッチ１２２内のどの位置を変更するのかを指定し、更にこれらの位置に対する新しい値を指定する。一旦これらの位置を変更したなら、ＣＤＬラッチ１２２は、次のベクトルの値を収容する。
ロード制御回路１２６は、ワークステーション１２８からメッセージを受け取る。ロード制御回路１２６は、メッセージのデータ部分をＣＤＬ１２２のデータ入力に供給する。メッセージのピン・インデックス部分は、ピン・インデックス・キー即ち「ＰＩＫ（pin index key）」１２４に供給される。ＰＩＫ１２４は、デコーダとして用いられるメモリである。このメモリには、どのピンが各ピングループに割り当てられたかを示す情報がロードされる。ＰＩＫ１２４は、ＣＤＬ１２２内の各位置毎に制御ラインを出力し、当該位置をイネーブルしデータを格納する。このように、ＣＤＬ１２２は、メッセージ内のピン・インデックスに関連するグループに属する各ピンにデータを格納する。
メッセージのデータ部分は、単一のデータ値を含むこともある。その場合、このデータ値は、当該グループ内の各ピン毎に、ＣＤＬ１２２に供給される。１つのグループ内の全てのピンに対して同じデータを有するメッセージのことを、「グループ同一」メッセージ(group same message)と呼ぶ。このメッセージ内のシグナリング・ビット(signaling bit)は、それがグループ同一メッセージであることを示し、どのピングループがデータ値を受け取るべきかを指定する。
別の形態のコード化も提案されている。メッセージのデータ部分は、グループ内の各ピン毎に、１つの値を含む場合がある。かかるメッセージを「グループ相違」メッセージ(group different message)と呼ぶ。このメッセージ内のシグナリング・ビットは、それがグループ相違メッセージであることを示し、どのピングループがメッセージ内のデータ値の１つを受け取るべきかを指定する。
また、混合手法を用いることも可能である。メッセージは、あるグループ内のピン全てに共通な制御ビットおよび異なる制御ビットをいくつか含む場合もある。ロード制御回路１２６が、グループ内の各ピン毎に適切な制御値を構築し、これらの値をＣＤＬ１２２に送る。かかるメッセージを「グループ数値」メッセージ(group numeric message)と呼び、当該メッセージ内のシグナリング・ビットによって示される。
１つのベクトルをＬＶＭ１１８に書き込むには、通常、一連のメッセージを必要とする。ワークステーション１２８は、ＣＤＬ１２２が全てのピンに必要なデータを格納するまで、メッセージを送る。その時点で、ワークステーション１２８は、データ転送が完了したことを示す別のメッセージを送る。すると、ロード制御回路１２６は、ＣＤＬラッチ１２２内の情報をＬＶＭメモリ１１８に転送する。次いで、パターン内のベクトル全てがＬＶＭメモリ１１８に転送され終わるまで、プロセスは繰り返される。
１つのベクトルをＬＶＭメモリ１１８に書き込むために必要な一連のメッセージは、大容量記憶装置１３０内に格納されているベクトル・ファイルの「コンパイル（compiling）」として知られるプロセスの一部として予め決められている。
また、テスタ１１０は、別個のメモリ、即ち、ＳＶＭメモリ１２０も含む。ＳＶＭメモリ１２０は、ベクトルの融通性のある実行を行う費用効率的な方法をもたらす。テスタは大量の高速メモリを必要とするので、全てのベクトル・メモリをランダム・アクセス・メモリとすると非常に費用がかかる。逆に、メモリの殆どを代表するＬＶＭメモリ１１８は、順次アクセス・メモリである。順次アクセス・メモリとは、当該メモリ内のアドレスが順次アドレスされる場合には、それらがランダムな順序でアクセスされる場合よりもアクセス時間が短くなるメモリである。
ＳＶＭメモリ１２０はランダム・アクセス・メモリである。しかしながら、これは、ＬＶＭメモリ１１８よりもはるかに小さい。ＬＶＭメモリ１１８は、通常、約１６Ｍのベクトルを格納する。ＳＶＭメモリ１２０は、通常、約１Ｋのベクトルを格納する。したがって、ＳＶＭメモリの高コストは、テスタの全体的なコストには重大な影響を与えることはない。
順次実行可能な検査パターンの部分は、ＬＶＭメモリ１１８に格納される。分岐、ジャンプおよびサブルーチンのような、不連続的な実行を必要とする検査パターンの部分は、ＳＶＭメモリ１２０に格納される。検査パターンの不連続部分を実行するときはいつでも、検査制御回路１１６は、ＬＶＭ１１８からのベクトルの検索を中止し、ＳＶＭ１２０からベクトルを検索し始める。検査パターンの不連続部分を実行し終えたとき、検査制御回路１１６は再度ＬＶＭ１１８からベクトルを検索し始める。
ＳＶＭメモリ１２０へのロードは、ロード制御回路１２６を通じて行われない。むしろ、ＳＶＭ１２０に格納されるベクトルは、ＬＶＭ１１８に格納される。検査シーケンスの実行前、または実行中であっても、ベクトルはＬＶＭ１１８からＳＶＭ１２０に転送される。
ベクトルをテスタ１１０にロードする代替技術も用いられている。例えば、検査パターンによっては、「ピン・スライス(pin slice)」によってデータを伝送することによって、ワークステーションとテスタとの間で送られる情報の全量を減少させることが可能である。この技術は、ヨーロッパ特許出願第０  ４７４  ２７５号に開示されており、この特許出願は、ピン・スライス・アーキテクチャを有する検査システムを開示している。ベクトルがピンの全てに対して１つの値であるのに対し、ピン・スライスは１つのピンに対する一連の値である。
しかしながら、ロード技術には無関係に、可能な限り全ロード時間を短縮することができれば、非常に望ましいであろう。
発明の概要
前述の背景を念頭におき、本発明の目的は、検査パターンをテスタのメモリにロードするために要する時間を短縮することである。
また、テスタ内に大掛かりなハードウエアの追加を必要とすることなく、ロード時間の短縮を図ることも、目的である。
前述の目的およびその他の目的は、ベクトル・キャッシュを保持するロード制御回路を有するテスタにおいて達成される。メモリにロードする新たなベクトル毎に、キャッシュ内のベクトルの１つを開始点として選択する。選択したベクトルと所望のベクトルとの差分をロード制御回路に伝達し、ロード制御回路が新たなベクトルを構築する。このベクトルを、テスタのメモリにロードする。
一実施形態では、新たな各ベクトルをキャッシュにロードする。代替実施形態では、所定の新たなベクトルのみをキャッシュにロードする。
好適な実施形態では、テスタ内に既に備えられているメモリを用いて、ベクトル・キャッシュを実施し、検査の実行中、検査ベクトルのランダム・アクセスを可能とする。
【図面の簡単な説明】
本発明は、以下の更に詳細な説明および添付図面を参照することにより、一層深く理解することができよう。図面において、
図１は、ベクトル・ロード回路を示す、従来技術の検査システムの簡略構成図である。
図２は、改良されたベクトル・ロード回路を示す、本発明による検査システムの簡略構成図である。
図３は、ワークステーションと図２のテスタとの間でベクトル伝達する際に用いられるメッセージ・ストリームを示す図である。
図４は、本発明と共に用いられる検査パターンのコンパイル・プロセスを示すフロー・チャートである。
図５は、コンパイル・プロセスの代替実施形態を示すフロー・チャートである。
好適な実施形態の説明
図２は、本発明にしたがって改良されたロード回路２２６を組み込んだテスタ（検査装置）２１０を示す。テスタ２１０は、従来技術のテスタ１１０に類似するものである。これは、ワークステーション１２８に接続され、大容量記憶装置１３０から検査パターンを検索する。検査パターンは、ＬＶＭメモリ１１８にロードされる。
このテスタは、多数のチャネルのためのピン回路１１４を有する。典型的なチャネル数は、２５６ないし１，０２４個である。検査制御回路１１６は、ＬＶＭメモリ１１８およびＳＶＭメモリ１２０からベクトルを検索し、これらベクトル内の情報にしたがって、適切な信号をピン回路１１４に発生する。
テスタ２１０が従来技術のテスタ１１０と相違するのは、ロード制御回路２２６を改良して、ロードの間ＳＶＭメモリ１２０をベクトル・キャッシュとして使用するようにした点にある。ベクトル・キャッシュは、以前にＬＶＭメモリ１１８にロードされたいくつかのベクトルを格納（記憶）する。新たなベクトルをＬＶＭメモリ１１８に転送する場合、キャッシュ内のベクトルの１つをＣＤＬラッチ１２２にロードする。キャッシュ内で最も類似度の高いベクトルが、ＣＤＬラッチ１２２にロードするために選択される。
キャッシュ内のベクトルのどれをＣＤＬラッチ１２２に転送すべきかを指定（命令）するには、ワークステーション１２８からロード制御回路２２６に命令を送る必要がある。しかしながら、ワークステーション１２８が伝達（伝送）する必要がある情報の総量は、実際には、ベクトル・キャッシュの使用により減少することがわかった。この節約が得られるのは、平均的に、キャッシュ内のベクトルの１つは、ＣＤＬラッチ１２２内の従来のベクトルよりも、ＬＶＭメモリ１１８に書き込む必要があるワードに似ているからである。デルタ・コード化を用いてベクトルを指定するので、相違が少なく、伝達すべき情報も少なくて済む。
ベクトル・キャッシュ内に格納されるベクトル数は、新たなベクトルを指定するために伝達しなければならない情報量に影響を与える。キャッシュが大きい程、検査パターンをロードしている間に伝達する情報は少なくて済む。１６ベクトル程度のキャッシュでも、ロード時間を格段に短縮可能であることがわかった。キャッシュが大きい程、より好ましいロード時間が得られる。
しかしながら、キャッシュのサイズは、検査パターンをコンパイルするのに要する時間量にも影響を与える。キャッシュを用いる場合、パターンがコンパイル（compilation）されているのであれば、キャッシュ内のベクトルのどれをＣＤＬラッチ１２２にロードすべきかについて判定を行う必要がある。この判定では、ロードすべき各ベクトルと、当該ベクトルをロードする時点にキャッシュ内にある各ベクトルとを比較する必要がある。１，０２４個よりも多いベクトルのベクトル・キャッシュは、非常に長いコンパイルを招くことを発見した。更に、キャッシュが大きい程、各ベクトルをロードする際に、キャッシュ内のどのベクトルを用いるべきかを指定するために、ワークステーション１２８はより多くのビット数の情報を送ることが必要となる。通常、ワークステーション１２８とロード制御回路２２６との間のデータ・リンクは、固定長ワードを扱うデータ・バスである。キャッシュ内のベクトルを指定するために必要なビット数が、１ワード内に収まり得る以上に増大した場合、過剰なワードに関してベクトルを記述することが必要となる。したがって、キャッシュを余りに大きくし過ぎると、実際には転送レートが低下する可能性もある。
好ましくは、キャッシュは１６ないし１，０２４個のベクトルを保持する。好適な実施形態では、キャッシュは１，０２４個のベクトルを保持する。
図２に示す好適な実施形態では、キャッシュは、ＳＶＭメモリ１２０を用いて実現される。従来技術におけると同様、ＳＶＭメモリ１２０は、１，０２４箇所の位置を有するランダム・アクセス・メモリである。したがって、キャッシュはＳＶＭメモリ１２０内に収まり、追加のメモリをテスタ２１０に付加する必要はない。キャッシュは、このように、わずかな制御機能をロード制御回路２２６に追加することによって、簡単に提供することができる。
即ち、テスタ２１０は、ＳＶＭメモリ１２０の出力からＣＤＬラッチ１２２のデータ入力までのデータ経路を含む。このように、キャッシュ内に格納されているベクトルは、ＣＤＬラッチ１２２にロードすることができる。また、ＳＶＭメモリ１２０へのアドレス入力は、キャッシュ・リード／ライト制御回路２５０および検査制御回路１１６によって発生することができる。キャッシュを実施するためにＳＶＭメモリ１２０を用いているとき、ベクトルをロードする間、アドレスはキャッシュ・リード／ライト制御回路２５０から来る。検査の間、ＳＶＭ１２０へのアドレス入力は、検査制御回路１１６から入来する。
加えて、ＣＤＬラッチ１２２の出力は、ＬＶＭメモリ１１８のデータ入力に加えて、ＳＶＭメモリ１２０のデータ入力にも経路決定（ルート付）されなければならない。この接続によって、ベクトルをキャッシュに格納することが可能となる。
本質的に、本発明の好適な実施形態は、異なる時点ではＳＶＭメモリ１２０を異なる方法で利用する。検査の実行に先立つベクトルのロードの間、これをキャッシュとして用いる。検査実行の間、不連続ベクトルを実行するために用いる。異なる時点において異なる機能のためにメモリを使用することを可能にするためには、種々の回路技法を用いることができる。例えば、データ入力および出力がバスに接続されている場合、メモリからのデータを使う必要がある種々の回路に、バスを設置することができる。これらの構成要素は、適切な時点においてのみバスからデータを読み取るように制御される。また、ＳＶＭメモリ１２０が異なる時点において異なるソースからアドレス入力を得ることを可能にするためにも、バス構造が使用可能である。代替案として、ＳＶＭメモリ１２０へのアドレス入力にマルチプレクサを用い、アドレスが正しいソースから供給されることを確実にすることも可能である。
テスタ２１０の動作は、図３を参照することにより、一層よく理解できよう。図３は、１つのベクトルをＬＶＭメモリ１１８にロードするためのメッセージ・ストリームを示す。メッセージ３１０は、コード・フィールド（field）３５０Ａから始まる。コード・フィールド３５０Ａ内の値は、メッセージ３１０が、ベクトルをロードするプロセスにおける最初のメッセージであること、およびＳＶＭからのベクトルをＣＤＬラッチ１２２にロードすべきことを示す。ロード制御回路２２６は、このメッセージをデコードし、適切な制御信号を発止し、ＳＶＭメモリ１２０からＣＤＬラッチ１２２への転送を行わせる。
メッセージ３１０内のアドレス・フィールド３５２は、ＣＤＬラッチ１２２に転送すべき、ＳＶＭメモリ１２０内のベクトルのアドレスを与える。キャッシュ・リード／ライト制御回路２５０は、このアドレスをＳＶＭメモリ１２０に供給する。
オプションとして、メッセージ３１０は、ＳＶＭライト・アドレスフィールド３５４を含む。ライト・アドレス・フィールド３５４は、直前のベクトルを格納すべきＳＶＭメモリ１２０内のアドレスを指定する。ロード制御回路２２６がメッセージ３１０を受け取った場合、ＣＤＬラッチ１２２は、以前にＬＶＭメモリ１１８にロードされたベクトルを含んでいる。この値は、アドレス・フィールド３５４によって与えられるＳＶＭ内のアドレスに転送される。
好適な実施形態では、ライト・アドレスを指定しない。代わりに、直前のベクトルを、ＳＶＭメモリ１２０内の次のアドレスに格納する。ＳＶＭメモリ１２０内の最後のアドレスに到達した場合、次に用いるアドレスは最初のアドレスとなり、その位置に以前に格納されていたベクトルに上書きする（書き直す）。ＳＶＭメモリ１２０内の次のライト・アドレスは、したがって、キャッシュ・リード／ライト制御回路２５０によって計算することができる。
しかしながら、全てのベクトルをキャッシュに格納する必要はない。例えば、キャッシュが１，０２４個のベクトルを格納している場合、ある特定のベクトルが用いられる前に別の１，０２４個のベクトルがキャッシュに書き込まれるとすると、そのベクトルは、再度用いられる前にキャッシュ内において書き直されることになる。したがって、このベクトルは、キャッシュ内に置いておく必要はない。ライト・アドレス・フィールド３５４は、ベクトルをキャッシュ内に格納する必要があるか否かを指示するためのみに用いることも可能でる。好適な実施形態では、ライト・アドレス・フィールド３５４は、単一ビットである。ビットがセットされた場合、キャッシュ・リード／ライト制御回路２５０は、ＳＶＭメモリ１２０のために、次のアドレスを順次供給する。
好適な実施形態では、メッセージ３１０は、アドレス・ラインおよびデータ・ライン双方を有するデータ・バス（図示せず）上を伝達する。テスタ１００の種々のメモリおよびレジスタ位置が、このバス上のアドレスに割り当てられる。尚、図３は、値をＳＶＭ１２０から転送するコードを示す別個のフィールド３５０Ａを示すが、ＳＶＭからの転送は実際には、バスのアドレス・ライン上の値によって示すことができる。
また、フィールド３５２は、ＳＶＭ１２０内の絶対アドレスを含む必要はない。好適な実施形態では、アドレスフィールド３５３内の値は、オフセットまたは相対アドレスである。前述のように、ベクトルは、ＳＶＭメモリ１２０内の連続位置に書き込まれる。どれが次の位置であるかを追跡するために、キャッシュ・リード／ライト制御回路２５０は、ライト・ポインタを維持する。フィールド３５２内のＳＶＭリード・アドレスは、実際には、このポインタからのオフセットとして指定される。
次に、メッセージ３１２を送る。メッセージ３１２は、従来技術におけると同様、デルタ・コード化メッセージである。これはコードフィールド３５０Ｂを含み、その中に収容される値は、当該メッセージがＣＤＬラッチ１２２に格納されているベクトルに対して行うべき変更を表すことを示す。ＰＩＫフィールド３５８Ａは、どのピングループを変更すべきかを示す。データ・フィールド３５６Ａは、これらのピンを変更すべき値を示す。このメッセージは、従来技術のメッセージ・フォーマットのいずれでもよい。
メッセージ３１４も同様である。これは、他のピン・グループに対する値を与える。このようにして、ＣＤＬラッチ１２２内のベクトルに必要な変更を伝えるまで、デルタ・コード化メッセージをいくつでも伝達する。
最後のデルタ・コード化メッセージ３１６は、コード・フィールド３５０Ｄを含み、メッセージがベクトルに対する最後の変更を含むことを通知する値を有する。メッセージ３１６を受け取ったとき、ロード制御回路は制御信号を発生し、ＣＤＬラッチ１２２内のベクトルを、ＬＶＭメモリ１１８内の次の位置に書き込む。こうして、１つのベクトルの転送が完了する。
好適な実施形態では、コード・フィールド３５０Ｂ，３５０Ｃおよび３５０Ｄは、実際には、ＰＩＫフィールド３５８Ａ，３５８Ｂおよび３５８Ｃとは別個ではない。むしろ、ＰＩＫフィールド３５８Ａ，３５８Ｂおよび３５８Ｃ内のある値を用いて、データ転送を行うことを示す。前述のように、これらのメッセージは、アドレス・ラインおよびデータ・ライン双方を有するバス上を伝達する。アドレス・ラインは、当該メッセージがＣＤＬラッチ１２２に影響を及ぼそうとするものであることを指定する。また、ＰＩＫフィールド３５８Ｃ内の値は、実際には、ピン・グループではなく、ＣＤＬ１２２からＬＶＭ１１８への転送を示すので、データ・フィールド３５６Ｃは用いられない。
ロード制御回路２２６は、好適な実施形態では、前述の機能を実行するように予めプログラムされている、１つ以上の特定用途集積回路（ＡＳＩＣＳ：application specific integrated circuits）を用いて実施される。かかるＡＳＩＣＳは、ステート・マシン（state machine）を実装し、ロード処理の状態を追跡（監視）すると共に、ワークステーション１２８が送るメッセージに基づいて適切な制御信号を発生する。ＡＳＩＣＳを用いたステート・マシン・コントローラの実施は、当技術分野では公知である。
好適な実施形態では、ＣＤＬラッチ１２２からＳＶＭ１２０へのライト、およびＳＶＭ１２０からのリードは、同じクロック・サイクルにて発生する。これらの動作は、「交換（swap）」として実施される。しかしながら、リード動作およびライト動作のタイミングは、本発明には重要ではない。
前述のようにロード・プロセスを行うためには、ワークステーション１２８が、各ベクトルをＬＶＭメモリ１１８にロードする時点において、どの情報をキャッシュに格納するのかを決定する必要がある。好適な実施形態では、この情報は、検査パターンのコンパイルの一部として、予め決定される。検査パターンのコンパイルは、ワークステーション１２８、または他の同様のコンピュータのいずれかで実行する。図４は、どのようにして各ベクトルをコード化するのかを決定するコンパイル・プロセスの部分のフロー・チャートを示す。
ステップ４１０において、各ベクトルがロードされる毎に、キャッシュ内の値をエミュレートする値を保持するテーブルを、メモリに設定する。最初のベクトルをロードするときにはキャッシュは値を含んでいないので、空となるように初期化される。このテーブルのライト・ポインタが、テーブルの最初の位置に設定される。ライト・ポインタは、キャッシュ・リード／ライト制御回路２５０（図２）内のライト・ポインタをエミュレートする。
ステップ４１２において、ベクトル全体に対するコードを発生する。ステップ４１２は最初に検査パターン内の最初のベクトルを処理するので、開始時点と同様、用いるべき以前のベクトルはない。したがって、３５８Ａおよび３５８ＢのようなＰＩＫフィールドによって、３１２および３１４のような一連のメッセージを発生し、全てのピンを１回含むのに充分なグループを指定する。このステップは、従来技術のコンパイル・プロセスと同一である。
ステップ４１４において、コードを発生し終えたばかりのベクトルを、検査パターン内のある数Ｎのフューチャ・ベクトル（future vector）と比較し、当該ベクトルが、これらのベクトルが処理されるときにキャッシュ内にあるベクトルよりも、これらのベクトルのいずれかに類似しているか否かについて調べる。
処理を簡略化するために、数Ｎは、好適な実施形態では、キャッシュが保持可能なベクトル数と同一とする。さらに処理を簡略化するために、全てのフューチャ・ベクトルをキャッシュ内に格納すると仮定する。したがって、現ベクトルの後の次のベクトルは、キャッシュをエミュレートするテーブル内のＮ個のベクトル全てと比較される。次のベクトルは、テーブル内の最初のＮ−１個のベクトルのみと比較される。次のベクトルは、テーブル内の最初のＮ−２個のベクトルのみと比較される。その次のベクトルは、テーブル内の最初のＮ−３個のベクトルのみと比較される等となる。
２番目のベクトルが既にＣＤＬラッチ１２２（図２）内にある場合に、最初のベクトルを指定するために送る必要がある、デルタ・コード化メッセージの数を判定することによって、２つのベクトルを比較する。メッセージが少ない程、類似性が高いことを示唆する。
ステップ４１６において、ステップ４１４において行った比較の結果に基づいて判断を行う。現ベクトルが、テーブル内のベクトルよりも、パターン内の次のＮ個のベクトルのいずれか１つに近い場合、これをキャッシュに追加する。こうして、処理はステップ４２０および４２２に移行する。一方、既にキャッシュ内にあるベクトルが、現ベクトルよりも次のＮ個のベクトルに近い場合、現ベクトルがキャッシュに追加されても、これは決して使用されない。その場合、実行はステップ４２４に直接移行する。
前述のように、ステップ４２０は、現ベクトルがキャッシュに追加される場合に実行される。ステップ４２０は、ベクトルがキャッシュに追加されることを記録する。この記録に、ステップ４２４においてアクセスする。
ステップ４２２において、テーブルおよびポインタを更新し、ベクトルがキャッシュに追加されることを反映する。テーブルの更新は、キャッシュを更新するのと同じように行う。即ち、ポインタによって示されるテーブル位置に、ベクトルを格納する。次いで、ポインタを増分する。テーブルのその位置に既に値がある場合、これを書き直しする。ポインタがテーブルの終点まで達した場合、これをテーブルにおける最初の位置にリセットする。
テーブルが更新されてもされなくても、実行はステップ４２４に移行する。このステップは、パターン内の次のベクトルの処理開始を表す。そのベクトルと、その時点においてテーブル内にあるベクトル全てとを比較する。テーブル内で最も近いベクトルを選択する。テーブルはキャッシュをエミュレートするので、選択されたベクトルのテーブル内のアドレスは、最も近いベクトルのキャッシュ内のアドレスと同一である。
最も近いベクトルのアドレスを、メッセージ３１０（図３）のキャッシュ・リード・アドレスとして用いる。これは、ステップ４２６において発生される。また、メッセージ３１０は、ＣＤＬラッチ１２２（図２）内の直前のベクトルをキャッシュに転送すべきか否かを示すフィールド３５４も含む。ステップ４２０において格納された情報が、直前のベクトルをキャッシュに格納すべきことを示す場合、フィールド３５４を満たす。
一旦最も近いベクトルがテーブル内で識別された場合、ステップ４２８において適切なデルタ・コード化メッセージを発生する。デルタ・コード化メッセージは、従来技術におけると同様に発生する。しかしながら、直前のベクトルに基づく代わりに、ステップ４２４で選択したベクトルを基準とする。
一旦デルタ・コード化メッセージを発生したなら、実行はステップ４３０に移行する。ステップ４３０において、メッセージ３１６（図３）のような転送コマンドを発生する。
実行はステップ４３２に移行する。ステップ４３２において、検査パターン内の全ベクトルを処理し終えたか否かについて、チェックを行う。それ以上ベクトルがない場合、処理を完了する。他にベクトルが残っている場合、実行はステップ４１４に移行し、現ベクトルとなる、検査パターン内の次のベクトルを用いて、処理を繰り返す。
このように、図３に示すメッセージ全てを、パターン内の各ベクトル毎に発生する。これらのメッセージは、データ記憶装置１３０（図２）に格納される。発生したメッセージは直接格納することができ、あるいは従来技術におけるように、データ圧縮技法を用いて格納することも可能である。
図５は、図４のプロセスよりも所要時間が短い、代替コンパイル・プロセスを示す。ステップ５１２において、キャッシュ・ポインタおよびキャッシュ・テーブルを、ステップ４１０について上述したように初期化する。ステップ５１０において、SAVE-CDLフラグをクリアすることによって、これも初期化する。処理対象のパターン・ファイルから最初のベクトルを現ベクトルとして選択するというような他の初期化ステップも実行する。
ステップ５１２において、現ベクトルを、キャッシュ内のある数のベクトルと比較する。図５に見られるように、ステップ５１２はループ内にある。このループは、検査パターン内の各ベクトル毎に繰り返えされる。最初にループを通るとき、現ベクトルが最初のベクトルとなる。
ステップ５１２において、同じデータ値を有する２つのベクトル内のピン数を単純に計数することによって、ベクトルを比較する。現ベクトルと同じデータ値を有するピンが最も多いベクトルが、最も近いものとなる。同じデータ値を最も多く有するベクトルを選択することは、必ずしも、最も少ない数のデルタ・コード化メッセージを得る結果とはならない。何故なら、デルタ・コード化メッセージは、同一であるピン・グループの数に基づいて発生されるからである。しかしながら、このようにして最も近いベクトルを選択すると、多くの場合、最も少ないデルタ・符号化メッセージが得られ、コンパイル時間がかなり短縮される。場合によっては、ロード時間が完全に最小化されなくても、コンパイル時間を短縮することが望ましいこともある。
ステップ５１２において、現ベクトルを、キャッシュ内の各ベクトルと比較してもよい。あるいは、キャッシュ内のある数、例えば、６４個のベクトルとのみ比較を行っても良い。
次に、実行はステップ５１４に移行する。ステップ５１４は、SAVE-CDLフラグがセットされているか否かをチェックする判断ブロックである。このフラグは、ＣＤＬ内のベクトルが、キャッシュ内に既にある１つと同じであるか否かを記憶（remember）しておくために用いられる。最初のパスでは、ＣＤＬにはベクトルがなく、SAVE-CDLフラグは未だそのクリアされた状態にある。したがって、最初のパスおよび、以降のパスでSAVE-CDLフラグがクリアされている場合には、実行はステップ５２２に移行する。
ステップ５２２は別の判断ブロックである。ステップ５２２では、最も近いベクトルが、直前のベクトルと同一か否かについてチェックを行う。同一である場合、ＣＤＬ１２２にロードするコマンドを発生する必要は全くない。ステップ５２２を実行するのは、SAVE-CDLフラグがセットされていない場合のみであるので、キャッシュ内のＣＤＬの内容をセーブするコマンドを発生する必要もない。したがって、実行は直接ステップ５２６に移行する。この場合、メッセージ３１０は発生されない。
ステップ５２２において、最も近いベクトルが直前のベクトルとは異なると判定された場合、最も近いベクトルをキャッシュからＣＤＬ１２２にロードするコマンドを発生する必要がある。実行はステップ５２４に進み、フィールド３５２においてステップ５１２で識別した最も近いベクトルのアドレスを用いて、メッセージ３１０を発生する。ステップ５２４を実行するのは、SAVE-CDLフラグがクリアされている場合のみであるので、ＣＬＤ１２２の内容はセーブされず、そのメッセージのフィールド３５４は、その旨の指示を行う。
SAVE-CDLフラグがセットされている場合、相補的な命令の集合（組）を発生する。この場合、実行はステップ５１６に移行する。このステップは、最も近いベクトルが直前のベクトルと同一か否かについて判定を行う判断ブロックである。同一である場合、実行はステップ５１８に移行する。この状況では、ＣＤＬ１２２の内容をキャッシュにセーブする必要があるが、新しい値をＣＤＬにロードする必要はない。したがって、ステップ５１８は、フィールド３５２においてNULLアドレスを指定するメッセージ３１０を発生し、キャッシュからＣＤＬにロードするベクトルがないことを示す。しかしながら、フィールド３５４をセットし、ＣＤＬ内の現在値がキャッシュ内の次のアドレスに置かれることを示す。
最も近いベクトルが直前のベクトルと同一でなく、しかもSAVE-CDLフラグがセットされている場合、ＣＤＬ内の値をセーブし、新しい値をロードする必要がある。したがって、実行はステップ５２０に移行する。ステップ５２０は、最も近いベクトルのキャッシュ内のアドレスをフィールド３５２に含むメッセージ３１０を発生する。フィールド３５４もセットされ、キャッシュの内容が、キャッシュ内の次のライト位置に格納されていることを示す。
コンパイル・プロセスの間にコマンドを発生し、実際のロード処理の間にテスタ２１０に送ることが認められよう。ワークステーション１２８内のキャッシュ・ポインタおよびキャッシュ・テーブルを更新し、発生したコマンドに応答する際に、テスタ２１０内の対応するハードウエアをエミュレートする。テスタ２１０内のハードウエアに基づいて、コマンドを送りリード・ポインタまたはライト・ポインタの状態を変更する必要がある場合、これらのコマンドも、コンパイル・プロセスの一部として発生することができる。
ステップ５１４，５１６および５２２の結果としてどの経路を取るかには無関係に、実行はステップ５２６に移行する。実行がステップ５２６に達した場合、適切なコマンドが既に発生され、値がＣＤＬ１２２にロードされている。ステップ５２６は、この値が現ベクトルに正確に一致するか否かについて判定を行う。
ＣＤＬ１２２内の値が、現ベクトルに正確に一致しない場合、実行はステップ５３０に移行する。ステップ５３０において、SAVE-CDLフラグをセットし、現ベクトルをキャッシュにセーブすべきことを示す。次に、実行はステップ５３２に移行する。
ステップ５３２において、メッセージ３５６Ａ，３５６Ｂ，３５６Ｃ等を発生し、必要なデルタ・コード・コマンドを指定する。従来技術におけると同様、これらのコマンドは、ＣＤＬの内容を現ベクトルに変換する。次に、実行はステップ５３４に移行し、その値をＣＤＬ１２２からＬＶＭに転送するコマンド３１６を発生する。
ステップ５２６において、ＣＤＬ１２２の値が現ベクトルと正確に一致すると判定された場合、デルタ・コード・コマンドは発生しない。更に、現ベクトルをキャッシュにセーブする必要もない。何故なら、これはキャッシュ内に既にあるベクトルと同じであるからである。次に、実行はステップ５２８に移行し、SAVE-CDLフラグをクリアする。デルタ・コード化コマンドを発生する必要はなく、実行はステップ５３４に移行し、メッセージ３１６を発生する。
次に、実行はステップ５１２にループ・バックし、次のベクトルを用いて処理を繰り返す。全てのベクトルを処理し終えるまで、ベクトルを１つずつ処理していく。
出力ファイルにおけるように、コンパイル・プロセスにおいて生成したメッセージ・ストリームをキャプチャ（capture）する。メッセージ・ストリームは部分的に圧縮されたデータを表し、ロード処理の間にテスタ２１０に送られる。必要であれば、この部分的に圧縮されたデータは、データ記憶装置１３０に格納する前に、更に圧縮することも可能である。
以上一実施形態について説明してきたが、多数の代替実施形態や変形も可能である。例えば、図３は、ＣＤＬラッチ１２２に格納されている直前のベクトルを、キャッシュからＣＤＬラッチ１２２にベクトルを転送するのと同時に、キャッシュに転送することを示す。種々の代替案も可能である。ベクトルは、それがＬＶＭメモリ１１８に転送されるときに、同時にキャッシュに転送してもよい。
他の変形として、必ずしもテスタ内のＳＶＭメモリを用いてキャッシュを実施しなくてもよい。かかるメモリの使用は、高価なメモリの追加を必要としないので非常に望ましいが、テスタ内の他のメモリを用いることも可能であり、あるいは、その目的のために他のメモリをテスタに追加することも可能である。
更に別の変形として、好適な実施形態では、キャッシュは先入れ先出し型キャッシュであることを述べた。また、キャッシュ・ライト・アドレスは、キャッシュ内に格納すべき各ベクトル毎に指定可能であることも述べた。この構成によって、各ベクトルがキャッシュ内に留まる時間長を、制御することが可能となる。多くのフューチャ・ベクトルによって用いられるベクトルは書き直しされず、したがって長時間キャッシュ内には留まる。第３の可能性は、ＳＶＭメモリ１２０の一部を先入れ先出しキャッシュ専用とし、ＳＶＭメモリ１２０の他の部分を、ベクトルが書き直しされるまで格納するキャッシュ専用とすることである。このようにすると、多くのフューチャ・ベクトルによって用いられるベクトルがあれば、それを保持するが、使用頻度が少ないベクトルは、しばらくの後、キャッシュからクリアすることができる。
また、メッセージ内の種々の領域は、ワークステーション１２８からテスタ１１０にメッセージを伝達する１つの方法を示すために図示したものであることも認められよう。多くの方法のいずれで同じ情報を符号化することも可能である。
更に、ワークステーション１２８は、好適な実施形態では、サン・マイクロシステムズ・コンピュータ社(Sun Microsystems Computer Corporation)が販売するワークステーションであることを注記しておく。同様に強力なコンピュータであればいずれでも、ワークステーションとして使用可能である。ワークステーションは、スタンド・アローン・コンピュータである必要はない。ネットワーク・コンピュータを用いることも可能である。
【図１】
0004311763.tif 000002
【図２】
0004311763.tif 000003
【図３】
0004311763.tif 000004
【図４】
0004311763.tif 000005
【図５】
0004311763.tif 000006