(57)【特許請求の範囲】
【請求項１】
被試験デバイス（ＤＵＴ）の試験に関連するパラメータ値を保存するための方法であって、
（ａ）第１の段数を有する刺激パイプラインを通じて前記ＤＵＴへと送信すべき刺激信号値を発生させるテストプログラムをプログラム実行環境において実行するステップと、
（ｂ）前記送信された刺激信号値で前記ＤＵＴを動作させることにより得られた応答信号値を、前記ＤＵＴから前記プログラム実行環境へと、第２の段数を有する応答パイプラインを介して送るステップと、
（ｃ）前記テストプログラムの実行サイクル毎に前記刺激パイプライン又は応答パイプラインの一方における選択位置から履歴ＦＩＦＯへと、回復されるべきパラメータ値を記憶するステップと、
（ｄ）選択されたエラー条件に応答して、前記ＤＵＴを含む前記応答パイプライン内においてエラー信号を生成するステップと、
（ｅ）前記ステップ（ｃ）における記憶処理と、前記ステップ（ｄ）におけるエラー信号の関連インスタンスの生成との間を隔てるパイプライン段数に対応するように、前記履歴ＦＩＦＯの深さを調整するステップと、
（ｆ）前記ステップ（ｄ）にて生成されたエラー信号に応答して、前記ステップ（ｅ）にて調整された深さに記憶された前記パラメータ値を前記履歴ＦＩＦＯ中で保存するステップと、
を含む方法。
【請求項２】
（ｇ）前記ステップ（ｆ）の後に、前記履歴ＦＩＦＯ中に保存されている前記パラメータ値を取得するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記ステップ（ａ）が、バッファメモリアドレスの生成を含み、更に前記ステップ（ｃ）、（ｆ）及び（ｇ）における前記パラメータが、バッファメモリアドレスであることを特徴とする、請求項２に記載の方法。
【請求項４】
前記ステップ（ｃ）、（ｆ）及び（ｇ）における前記パラメータが、エラーとなった応答信号値であることを特徴とする、請求項２に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
（関連出願の参照）
本開示は、「Ｅｒｒｏｒ  Ｃａｔｃｈ  ＲＡＭ  ｆｏｒ  Ｍｅｍｏｒｙ  Ｔｅｓｔｅｒ  Ｈａｓ  ＳＤＲＡＭ  Ｍｅｍｏｒｙ  Ｓｅｔｓ  Ｃｏｎｆｉｇｕｒａｂｌｅ  ｆｏｒ  Ｓｉｚｅ  ａｎｄ  Ｓｐｅｅｄ」と題する米国特許出願第０９／６６５，８９２号（２０００年９月２０日の出願であり、参照により本明細書に組み込まれる）に記載された情報に関連したものである。本願が対象とする主題は、半導体メモリを試験するための比較的大型で複雑なシステムの動作の一部に関わるものである。記載したメモリテスタはそれ自体の中に、試験を実施可能とする全体的な枠組みの一構成要素として、拡張メモリサブシステムを含む。このメモリサブシステムの特定の機能が本願の対象とするところであり、それらは開示した新規な主題の一部に関して好ましい基盤として作用する。製品の経済面からの理由、そしてテスタ中により多くのメモリ容量を設けたいという要求から、ランダムアドレス指定方式においても高速ではあるが高価なＳＲＡＭに代え、安価なメモリ（ランダムアクセスにおいては処理速度が遅いＤＲＡＭ）を使用し得る方法が開発された。この結果、様々な他のメモリサブシステム構成と組み合わせた場合にメモリグループ内での多重化やメモリバンク間でのインターリーブ処理と同時にこれらを可変長語として実現することも含む極めて複雑なものとなってしまった。一方で、本開示に求める特定の要件は、ＳＲＡＭのみを使用したシステムにおいてその複雑性を大幅に緩和して実現することが出来る。しかしながら、その経済面での犠牲は著しく、その完成品は技術者の興味対象にこそなれ商業的には立ち行き得ない程高価になってしまう可能性が高い。本開示は、完全にＳＲＡＭのみでシステムを構成することも勿論可能ではあるが、必ずしもそうすることを前提にしないという、中間的なスタンスを取るものである。その成り行き上、ＤＲＡＭ技術を含むこととなったが、本願の基本原理を簡潔に説明するために、ＤＲＡＭ技術の内部処理に関する複雑な詳細説明の多くを差し控えた。本開示内容に簡単に目を通しただけでも、多くの関心事（様々なインターリーブ方式やアドレス指定方式及びこれらがどのように異なる処理モードと関係するのか等）が省略されていることに気づくかも知れない。しかしながら、本明細書に開示することを意図した技術及び要件は、一部の場合においては記載を省略した事項から若干の影響を受けるものもあるが、基本的にこれらとは関連性が薄いことがわかってもらえるものと思われる。従って、対象とする主な問題の周囲にある要素の中には、一部詳細説明を省いたものもある。上述した特許出願に開示された内容は、ＤＲＡＭ技術に関する詳細を補足するものである。本明細書の開示内容によりメモリのサブシステムに関して更なる問題が提起されていると感じた場合、上記出願の開示内容を見れば答えを見つけることが出来るかと思われる。上記出願を参照により本明細書に組み込むことにより、その存在を明らかにした理由はそこにある。
【０００２】
これを踏まえた上で、これら２つの開示の教示内容を組み合わせようと望んでもそれは出来ない。上記出願では、対象となるメモリの全体がエラー捕捉ＲＡＭ（ＥＣＲ）と呼ばれ、これが複数のメモリセットに分割されるという考え方に基づいている。上記出願においては、他の同様の機能も予想はされるものの、ＥＣＲがほぼ唯一の対象メモリ機能であるため、この考え方は容易に適合する。しかしながら、本願を準備する過程で熟慮した結果、対象メモリ全体を説明する上で、「内部テストメモリ」という語を使用した方が都合が良いことがわかった。これは、４個の別個のそして独立したメモリセットであり、その内部において適当な構成で様々な機能メモリ機構（ＥＣＲを含む）を定義することが出来るというものである。従って、上記出願においては、ＥＣＲ中にメモリセットが含まれているかのように開示されているが、本願においては逆となっている。しかしながら、いずれの記載においても、全体的に見れば同じシステムに見られる主題が説明されているのである。それらの相違点は用語の用法の違いに負うところが大きく、２つの出願の記載内容の間に矛盾があるかのように見えても、記載されているメモリサブシステム処理における、より下位レベルの詳細では、そのような矛盾は解消される。上記出願について触れたのは、これに記載された詳細を提供するためである。
【０００３】
本願の主題は更に、米国特許出願第０９／７０２，６３１号（２０００年９月３１日出願）の「ＭＥＭＯＲＹ  ＴＥＳＴＥＲ  ＷＩＴＨ  ＥＮＨＡＮＣＥＤ  ＰＯＳＴ  ＤＥＣＯＤＥ」にも関連している。本願においては、この出願の主題の中核部分を構成するＰＤ＿ＥＲＲＯＲ（９０）と呼ばれる信号をかなりの部分で利用した。そして本願においても、この信号が何を意味し、どのように生成されるのかについて、概略ではあるが充分な説明を提供しているが、この点に関する完全な詳細は、より複雑なものある。本願の説明から混乱や、矛盾に見える点が生じないように、かつ、簡潔に記載するためにこの「ＭＥＭＯＲＹ  ＴＥＳＴＥＲ  ＷＩＴＨ  ＥＮＨＡＮＣＥＤ  ＰＯＳＴ  ＤＥＣＯＤＥ」を参照により本明細書に組み込むことにする。
【０００４】
本願の主題は、更に２０００年１０月２日に出願された米国特許出願第０９／６７７，２０２号「ＭＥＭＯＲＹ  ＴＥＳＴＥＲ  ＴＥＳＴＳ  ＭＵＬＴＩＰＬＥ  ＤＵＴ’Ｓ  ＰＥＲ  ＴＥＳＴ  ＳＩＴＥ」にも関連している。この出願に開示されたものの中から、ＥＦＲＲ（１１３）、ＰＥＲＲ（１１４）及びＰＤ＿ＥＲＲＯＲ（１１５）と呼ばれる信号の集合を借りている。これらの信号の存在は、本願の１つの特徴の主題の中心であるが、これらの起点及び本来の用法については先の出願に記載されている。本願においてもこれらの信号が何を意味し、どのように生成されるかについて概略ではあるが充分な説明を提供しているが、先に触れた場合と同様、その完全な詳細はより複雑なものである。従って、上記出願「ＭＥＭＯＲＹ  ＴＥＳＴＥＲ  ＴＥＳＴＳ  ＭＵＬＴＩＰＬＥ  ＤＵＴ’Ｓ  ＰＥＲ  ＴＥＳＴ  ＳＩＴＥ」も参照により本明細書に組み込むことにする。
【０００５】
【従来の技術】
電子装置やその機能の日常生活における浸透は極めて著しい。人々の多くは多岐にわたる雑多な目的で家庭用パーソナルコンピュータ等と共に複数の生産的ツールを所有している。多くの個人向けの生産的電子装置は何らかの形態で不揮発性メモリを含んでいる。携帯電話は電源を切ってもユーザーがプログラムした電話番号や設定を保持出来るように不揮発性メモリを用いている。ＰＣＭＣＩＡカードの場合、コンピュータのスロットから取り外された状態でも情報を維持することが出来るように不揮発性メモリを使う。他の多くの一般的な電子装置も同様に、電源が供給されないアセンブリ内の不揮発性メモリの長期保存能力を利用しているのである。
【０００６】
電子装置メーカーに不揮発性メモリを販売する不揮発性メモリの製造者は、自社で製造したメモリが適正な動作を行うかを、テスタを用いて確認しなければならない。不揮発性メモリは大量に一貫して低コストで製造、販売されるため、個々の製品の試験に要する時間は可能な限り短くすることが非常に重要である。不揮発性メモリの購入者は、購入したメモリ素子をより高額なアセンブリに組み込む際、コストを節約するために最小限度の試験のみ、或いは無試験で済むように望むことから、メモリ製造者は高い出荷歩留まりを要求される。従ってメモリの試験手順は、不適合品の大部分、望ましくは全ての不適合品を１回の試験工程において識別し得るように、充分に高い効率を提供するものでなくてはならないのである。
【０００７】
不揮発性メモリの大型化、高密度化及び複雑化が進むに伴い、テスタはこれらの寸法及び複雑性への対応を、試験時間を大幅に増大させることなく行うことを要求される。メモリテスタは連続的に稼動させる場合も多く、その試験時間は最終部品のコストにおいて大きい部分を占めるものと考えられている。また、テスタはメモリ素子の進化及び改良に伴ってメモリ素子に加えられたこれらの変化に容易に適合出来なければならない。不揮発性メモリ試験において特徴的な他の問題は、メモリのセルへの書き込みが何度も繰り返されると、その製品の全体的な寿命性能が劣化する可能性があるという点である。不揮発性メモリの製造者は、特別な試験モードをメモリ素子中に組み込むことにより試験に関わる多くの問題に対処している。これらの試験モードはメモリの購入者によって使用されるものではなく、製造者がアクセスすることでメモリの全て、又は大部分を可能な限り短時間で効率良く試験することが出来るものである。不揮発性メモリの中には試験工程中に修復可能なものもある。従ってテスタは、修復の必要性、修復箇所、必要な修復の種類を識別するものでなくてはならず、また更に適切な修復を実施出来なければならない。このような修復工程には、メモリ中の特定の不適合部分を検出、分離することが出来るテスタが必要である。修復機能と共にこの特別な試験モードの利点を有効に活用するためには、素子から期待される応答に基づいた条件分岐を支援するテストプログラムを実行することが出来るテスタの使用が有益である。
【０００８】
メモリを試験するプロセスは、概念的観点から見るとアルゴリズム的プロセスである。例えば、一般的な試験にはメモリセルに０又は１を書き込みながらメモリアドレスを順次増分又は減分して行くものが含まれる。１メモリサイクル中に書き込まれる、又は読み出される１及び０の集合を、一般的に「ベクトル」と呼び、ベクトルのシーケンスを「パターン」と呼ぶ。試験はチェッカーボード、ウォーキング（walking）１、およびバタフライパターンのようなパターンをメモリ空間に書き込むことを含むのが一般的である。試験開発者はアルゴリズム的構造の助けを借りることにより、より容易かつ効率的にテストパターンを作成するためのプログラムを生成することが出来る。アルゴリズム的に一貫したテストパターンはデバッグが容易であり、期待通りに動かないパターン部分を分離するための論理的方法の使用を容易にする。プログラムループ中で繰り返す命令及びコマンドを使用してアルゴリズム的に作成されたテストパターンは、使用するテスタのメモリ空間が小さい。従って、メモリテスタはアルゴリズム的テストパターン作成能力を持つものが望ましい。
【０００９】
信号エッジの正確な配置及び検出もまた、不揮発性メモリのテスタの効率に関連して考慮されるものである。指定マージンにおいては不適合でありつつも中心においてはほぼ適合した部品を捕捉するには、不揮発性メモリテスタは各信号エッジを他の信号エッジに対して時間的に正確に配置出来なければならない。更に、どの時点において信号エッジが受信されたかを正確に測定する能力も重要である。従って不揮発性メモリテスタは充分な柔軟性と、刺激及び被試験デバイス（ＤＵＴ）であるメモリからの応答のタイミングと配置に対する充分な制御性を持っていなければならないのである。
【００１０】
メモリテスタは、ＤＵＴに印加（刺激）する送信ベクトルを生成し、期待される返信（応答）としてのベクトルを受信するものであると言われている。これらのベクトルを生成するアルゴリズム的論理素子は、一般的にこれらの生成をベクトル中の特定のビットがどのようにＤＵＴ中の特定の信号パッドへ、または、特定の信号パッドから送られるかを考慮することなく行うことが出来る。これはメモリテスタが信号を端子へ、または、端子からルーティングするためのマッピング機構を含むためである。
【００１１】
メモリテスタは試験処理を容易にするために用いられる内部テストメモリを有する。この内部テストメモリは、リアルタイム生成しない場合の送信ベクトルの事前記憶や受信ベクトルの記憶、そして試験中に得たＤＵＴ挙動に係わるエラー表示情報及びその他の情報の記憶を含む幾つかの用途に用いられる。（ＳＲＡＭを用いたメモリテスタ内部のハウスキーピング処理も「内部メモリ」と呼ばれるメモリの処理範囲に入るものと思われるが、これらはテスタの内部処理専用のものであってアルゴリズムレベルではわかりにくい傾向にあり、内部制御レジスタに相当するものである。このようなメモリは、本明細書において「内部制御メモリ」と呼び、ＤＵＴへの刺激及びＤＵＴからの応答に直接的に係わるビットパターンの記憶に用いるメモリを指す語である「内部テストメモリ」からは除外する。）当然のことながら、この内部テストメモリは実施される試験と少なくとも同じ速度で動作することが出来なければならない。ごく一般的な方式は、内部テストメモリ（又はその一部）を、ＤＵＴに印加されるアドレスと同じ（又はそれから派生したもの）アドレスで指定するものである。この場合に内部テストメモリ中のアドレス指定された場所に記憶される情報は、試験が実施される間にＤＵＴの同じアドレスにおいて生じた挙動を何らかの形で表すものである。テストプログラム中のアルゴリズム的配慮により連続する送信ベクトルに関わるアドレスのシーケンスが任意である場合もある。従って内部メモリは、高速性及びランダムアドレス指定能力という２つの性質を持っていなければならない。高速かつ制御も容易で、完全なランダムアドレス指定が可能であるメモリとしてすぐに思い浮かべられるのはＳＲＡＭである。実際、従来のメモリテスタもＳＲＡＭを内部テストメモリとして採用している。
【００１２】
残念ながら、ＳＲＡＭはかなり高価なものであり、それにより、メモリテスタが使用出来る内部テストメモリの容量が制限されている。この結果、メモリテスタの機能性にはメモリ不足による限界がある。ＤＲＡＭはこれよりも大幅に安価ではあるものの、高速処理においてはランダムアドレス指定が出来ない。
【００１３】
メモリテスタの内部メモリとしてＳＲＡＭに代えてＤＲＡＭを使用することが出来る。以下の概要説明でも簡単に触れるが、内部テストメモリとして使用するためにＤＲＡＭの処理速度をいかに上げることが出来るかという問題は、使用するＤＲＡＭの速度を上げるかわりにその容量を大きくすることにより解消することが出来る。これには、ＤＲＡＭの同種の複数のバンクをグループとして取り扱う。１グループ中の異なるメモリバンクへの信号をインターリーブする処理と、このようなバンクグループ間で多重化する処理とを組み合わせることにより、各バンクにおけるメモリトラフィックをそのバンクが処理し得る速度にまで落とすのである。（読者の便宜をはかるためにこの技術の概要を簡単に説明する。この技術の構造的側面及びこれに関連する用語が、以下に開示する発明的主題を説明する上で有用であるためである。）
【００１４】
各々が４つのバンクから成る３つのグループ間において３路（three-way）多重化し、これに１グループへの信号トラフィックに対する柔軟な４倍インターリービング方式を組み合わせることにより、要するメモリバスは３本のみでありながら処理速度を１２倍近く向上させることが出来る。マルチプレクサへの次のグループの選択を行うためのラウンドロビン方式は単純であり、各グループに対するインターリーブ機構が最後に割り当てられたタスクを完了するために必要な時間が各機構に確実に与えられるようになっている。１グループにおける全てのインターリーブアクセスは、これも単純なラウンドロビン選択方式で選択される次のバンク（そのグループ中の）に実施される。この構成においては、１２バンクの各々が使用可能アドレス空間全体を表すものであり、いずれの書き込みサイクルも、これら１２バンクのいずれか１つをアクセスすることになる。これは、いずれの対象アドレス或いは対象アドレス集合も１２バンク全体に広がって位置しているためにそのＤＵＴの試験中に生じた不具合を知るためには試験終了時に１２バンク全てを調べなければならないことを意味している。従って特定のチャネルは１２ビットで表される（各バンクから１ビットで、そのバンクに関する、ワード中のそのビットの位置はチャネルにより決定する）。
【００１５】
しかしながら、不具合情報を得るために１２バンクの全てを個々に（手動で）照会しなければならないとなれば厄介である。従ってあるアドレスにおける読み出しサイクル中に１２バンク全ての結果を自動的に「合成」（合併）して統合化された結果を得るユティリティ機構が設けられている。これにより、統合化されたデータを後に最高速度で読み出すことが可能となる。一実施例においては、ランダムアドレス指定されたメモリトランザクションについての最高速度が１００ＭＨｚである。
【００１６】
３３ＭＨｚでも充分であるとされる場合、ランダムアクセスは多重化をしなくてもインターリーブ処理のみで対応することが可能であり、このような場合、統合化機構及びメモリアドレス指定方式は適宜調整される。アドレス指定方式は変化し、メモリの深さを１００ＭＨｚランダム動作の場合の３倍にすることが出来る追加グループ選択ビットを含むことになる。これらの２つの処理モードを、それぞれＲ１００及びＲ３３と呼ぶ。更に単一のバンクに対する１００ＭＨｚ処理を行うＬ１００モードも存在するが、これはＤＲＡＭに送られる良好なアドレス（行アドレスの変化が絶対最小）に拠るものである。
【００１７】
内部テストメモリ構造の最上位レベルには、４つのメモリセットがあり、メモリセットの各々は独自の独立したアドレス空間を持ち、要求されたメモリトランザクションを実行している。２つは上述したＤＲＡＭであり、残り２つはＳＲＡＭである。各メモリセットは専用のコントローラを持ち、これに向けてメモリトランザクションが送られて来る。表面上の処理能力に関しては、４つのメモリセットは全て基本的に同じに見える。これらの違いは、メモリ空間のサイズと、これが内部的にどのように実現されているかだけである。ＳＲＡＭメモリセットはもともと充分な高速性を持っているため、多重化及びインターリーブ処理は採用していない。これらは独立したものではあるが、同じ種類（ＳＲＡＭ又はＤＲＡＭ）のメモリセットを「積み重ねる」、即ち、１つのより大きなアドレス空間として取り扱うことが出来る。これはメモリセット自体ではなく、その上位の制御レベルにおいて、アドレスをアルゴリズム的に生成すること、そして実際にメモリトランザクションを送るべきメモリセットを決定することにより実施される。これは、Ｒ１００及びＲ３３モード間においてメモリセット及びそれらのコントローラがグループを統合してアドレス空間を３倍にするといった自動的な処理ではない。各メモリセットのコントローラは、他のメモリセットや他のコントローラの存在自体さえ認識していないのである。
【００１８】
よって、テスタの内部テストメモリは２つが「内部」ＳＲＡＭ、他の２つが「外部」ＤＲＡＭである４つのメモリセットに区分化されている。誤解の無いように触れておくが、これらのメモリは全て物理的にはメモリテスタ内部にある。「内部」及び「外部」という語は、集積レベルに関するものである。ＳＲＡＭはテスタの機能回路に関わるＶＬＳＩ（超大規模集積回路）上に集積されている部品であり、ＤＲＡＭは別個にパッケージングされ、ＶＬＳＩに隣接して実装されている部品である。ＳＲＡＭの容量はかなり小さい（例えば１メモリセットあたり１メガビット程度）が、ＤＲＡＭの容量はかなり大きく、選択可能（例えば１メモリセットあたり１２８〜１０２４メガビット）である。ＳＲＡＭメモリセットは常に存在し、例えばＲＯＭであるＤＵＴに期待される内容を記憶する等、それらに好適な目的に使用することが出来る。ＤＲＡＭメモリセットは実際には随意選択であり、一般に修復を行うための後の解析用に記録を作成しておくために使用されるが、用途は他にもある。テスタはどちらのメモリをどの用途に利用するかについて、ＳＲＡＭとＤＲＡＭメモリセットとの間で強制的に区別するようなことはしない。用途の判別は主にそのサイズにより決まる。ＳＲＡＭメモリセットは小さいが、ＤＲＡＭメモリセットは潜在的に大きい。各種メモリセットをどのように利用するかについて決定するのは、テストプログラムを作成する技術者である。
【００１９】
ここまで説明して来たメモリテスタはかなりの段数のパイプラインを含んでいる。パイプライン構成を持つということは、各々が両方の入力環境を許容し、それに対応する出力を共通の速度で出すことが出来る、複数の機構（パイプラインの段）から構成される基本的に直列の経路にわたり、全体的なタスク又は機能が広がっていることを意味する。従って、例えばＤＵＴへと「下に向かう」パイプラインの先頭には、マイクロコントローラシーケンサが存在し、これがテストプログラム実行処理のアルゴリズム的にプログラム可能な起点となっている。これは「生の」、即ち「アルゴリズムレベル」のアドレスを提供するものであり、このアドレスが恐らくは何らかの処理を経た後、最終的にはＤＵＴへと印加されることになるものである。これらのアドレスは（時にデータも）、複数のＡＬＵを通過し、そして（アドレスのみ）アドレスマッパを通り、内部テストメモリ及び（又は）データＭＵＸへと供給され、そこからアドレスビット選択回路、送信ベクトルマッパ／シリアライザおよび受信ベクトル比較データ回路、ベクトルＦＩＦＯ４５を通り、最終的にはタイミング／フォーマッティングおよび比較回路へと至り、ここからピンエレクトロニクスを介して送信ベクトルがＤＵＴへと印加されることになる。パイプラインの全ての段が同じ遅延量を持っているわけではない。パイプラインを通ってＤＵＴへと至る処理の中でもより複雑なものは、その処理に関係する段でより長い時間を費やさなければならないものもある。しかしながら、様々なあらゆる段と同様に、これらの遅延値も固定であり、パイプラインの先端から末端までの全体的速度に影響をあたえるものではない。また、ここには更に受信ベクトルをテストプログラムを実行する環境へと「上に向けて」送信するもう１つの（そして異なる）パイプライン経路が存在すると言える。
【００２０】
メモリテスタが、テストプログラムの特定の区分に対し、同じテストプログラムの他の区分とは異なる特定の方法で設定された場合、このような設定の変化によりパイプラインの通過段が増えたり減ったり、或いはその時に使用されるパイプライン段の長さが変化したりすることになるが、このような変化は全てテストプログラムのその区分の全体的なパイプライン遅延値に影響を与えるものである。しかしながら、このような合計遅延値は既知であり、これらが対応するテストプログラム区分の継続時間を変えるものでもない。
【００２１】
先にも述べたように、メモリテスタで実行するテストプログラムの開発及び保全においては、アルゴリズム的処理能力が使用出来ることが望ましい。マイクロコントローラシーケンサは、ループ中にネストするループ、試験結果に応じた分岐を緊密に含むテストプログラムを支援するものである。しかしながら、パイプライン構造の利用は、本願において対象とする特定の機能、特にＤＵＴの挙動により生じたエラーを理解し、処理するための方法を複雑化するものでもある。
【００２２】
まず、「この機能不全／期待値外の結果が生じたのは、プログラムのこの箇所である」と特定することを望む基本的な必要が生じた場合を考える。ここでの前提として、テストプログラム／ＤＵＴサイクル速度が充分に遅く、マイクロコントローラシーケンサからピンエレクトロニクス、そしてピンエレクトロニクスからマイクロコントローラシーケンサまでの両パイプライン経路の遅延がプログラムを低速実行することにより吸収し得るものであるとする。この場合、パイプラインが存在することすら認識する必要はない（ＤＵＴも相当に処理速度の遅いものであるといえる）。このような状況（実際には有り得ないが）において、テストプログラムの現在の状態及びＤＵＴにおける動作は、単に何らかの時間的相互関係を持って（同期して）生じるだけではなく、「順次調和的」状態、即ち、原因とその効果が、テストプログラム用の命令フェッチによって分離されることがない状態にある。このような楽観的な状況下でＤＵＴが不良を生じた場合、プログラムの次のステップで応答を評価し、そのエラーが発生したのはその前のステップであったと判断することが出来る。次に何を実施するかはプログラマが何をしたいかによる。プログラマは、「プログラムのこの箇所で不良が発生した」という事実を知ること（プログラムポインタやループインデックス等により表示される）以外にも、単純に後の研究又は解析用に印加アドレスや関連の刺激情報等の基本的な情報を収集しておきたいと望む場合もある。また、このようなことが起きることを事前に予測し、それに対処することを目的とした他の区分をテストプログラムにあらかじめ作っておき、プログラムがある箇所に分岐するようにしておくことも考えられる。この仮定例においては、その「順次調和性」により原因（テストプログラム中の刺激）及びその効果（ＤＵＴからの応答結果）がテストプログラム用の命令フェッチにより分離されることが絶対にないことが保証されているため、これらの望ましい対策を講じることが可能なのである。
【００２３】
【発明が解決しようとする課題】
しかしながら、試験を実施するＤＵＴの処理速度はこのように遅いものではなく、メモリテスタを操作する者はＤＵＴ試験をこれらの実際の動作速度で実施したいと望むものである。更に、先の刺激がエラーを生じたかどうかをテストプログラムがすぐに調べるとは限らない。極めて高速なハードウエアを構築して順次調和性を維持すること以外にパイプラインによる遅延を見えないようにしておく手立ては実際上、無いのである。しかしながら、基本的な疑問である「プログラムのどこで不良が生じたのか」に対する答えを出すためにはエラー時に分岐することが出来るメカニズムが必要となるため、もっと困難なことである。いずれにせよ、パイプラインの先頭にあるテストプログラムは、対象となる刺激を供給した箇所よりも遥か先に進んでいるはずである。その時点では既にそのような刺激を複数発生した後である可能性も、更に条件分岐をした後である可能性も考えられる。最終的にエラーフラグが設定され、後にプログラムによって試験される場合であっても、どの事象がどれに関連したものであるのか、そしてその時点におけるアドレス等はどれだったのかをどのように確認すれば良いのであろうか。アドレス等はその時点とは異なっている可能性が高い。これらのことをその時点に立ち戻って調べることは非常に面倒なことである。テストプログラム中の事象が、これらがＤＵＴにもたらす効果よりも先に進んでいるという事実に、どのように対処することができるのであろう。この問題を解消出来ない限り、メモリテスタはかなり大きな欠点を持つことになる。どうすれば良いか。
【００２４】
【課題を解決するための手段】
問題は、関連エラーがＤＵＴ内で後の時点に生じた場合に、メモリテスタのテストプログラム中の適正な位置へと分岐を戻し、アルゴリズム的制御のその時点の状態を回復することである。アドレス及びデータ刺激をプログラム実行環境からＤＵＴへと送信するための送信ベクトルパイプラインにおける遅延により、そして更にＤＵＴからテストプログラム実行環境へと応答を送信するための受信ベクトルパイプラインにおける遅延により、プログラムは刺激を発した時点から任意量分先に進行していることになる。この任意量分の先進により、エラーに結びつく実際の状況を判定することが困難となっている。エラー信号に基づく分岐はテストプログラムを再起動させることは出来るが、しかしこれは単なるテンプレートでしかない場合が多く、テストプログラムの実行に伴って動的に変化するテストアルゴリズム制御情報を更に必要とするものである。これを解決するために、様々な履歴（history）ＦＩＦＯがメモリテスタ中に設けられ、送信ベクトル及び受信ベクトルパイプライン遅延の合計をその履歴ＦＩＦＯの位置に応じて考慮するためにその深さが調整される。エラーフラグが生成された場合、所望のプログラム状態及びアルゴリズム的制御情報が適正な履歴ＦＩＦＯの最下部に提示されるようにすれば、これらを所望の処理に供することが出来る。この技術は、テストプログラムがＡＬＵを使用して独自のＤＵＴ刺激を生成する場合（完全自己充足型）だけではなく、テストプログラム／ＡＬＵが実施すべきＤＵＴ試験の本質に係わる中心的内容を含む中間バッファメモリをアクセスする場合においても適用することが出来る。前者の場合にはＡＬＵ履歴ＦＩＦＯが設けられ、後者の場合にはバッファメモリ履歴ＦＩＦＯが設けられる。「履歴ＦＩＦＯ」という語は、総称的なものであり、特定のＦＩＦＯの分類名である。「履歴ＦＩＦＯ」と名づけられたＦＩＦＯは無い。特定数のこの分類があるだけである。
【００２５】
更に、プログラマは、テストプログラムが異なる試験用に構成する異なるメモリテスタ設定に対して用意される様々なパイプラインの深さを調べるために労力を費やしたいとは、恐らくは思わないだろう。従って、設定がなされるに伴ってその履歴を追跡し、様々な履歴ＦＩＦＯの深さを必要に応じて調節する機構が設けられる。更に、テストプログラムレベルにおいて、後に関連エラーがあったかどうかの確認が実施されることになる刺激が送信されつつあることを表示する何らかの「開始」機構が必要である。履歴ＦＩＦＯが埋められるべき所望の使用深度を、その「開始」指示を起点として測るためである。
【００２６】
刺激が発信された後、相当の期間にわたりその刺激に対応するエラーがあったかどうかをテストプログラムが調べない場合もあり得る。履歴ＦＩＦＯがエラー発生後もしばらくの間にわたって新たな刺激を格納し続けることを許した場合、所望の対応付けは失われてしまう。従って、エラー発生時に履歴ＦＩＦＯの内容をフリーズするための機構が設けられている。
【００２７】
実際のＤＵＴ試験の間に、ＥＣＲ（エラー捕捉ＲＡＭ）へとデータを格納し、後にＤＵＴを実際には動作させずに更なるテストプログラムを実行して調べることはよくある。様々なパイプライン遅延は、ＥＣＲ中に記録された特定のエラー表示に関連するＤＵＴへの印加アドレスを判別することを困難にする。このためにこれまで提供されて来た従来のユティリティ処理は非常に遅い。履歴ＦＩＦＯ機構はＥＣＲ検査に適用することが出来、ＥＣＲ履歴ＦＩＦＯがあれば、時間を犠牲にすることなくその答えを得ることが出来る。
【００２８】
最後に、履歴ＦＩＦＯを実現するためのオーバーヘッドを大きくすることにより、テストプログラム中の分岐命令が早過ぎる時点（テストプログラム中にある原因によりそのエラーフラグ値が判定されるまでに要するパイプライン遅延よりも早い段階）ではエラーフラグに応答しないようにすることが出来る。
【００２９】
【発明の実施の形態】
まず、図１を参照するが、ここには本発明の原理に基づいて構築された不揮発性メモリテストシステムの概略ブロック図１が描かれている。特に図示のシステムは、一度に最高３６個の個別のＤＵＴを各々最高６４のテストポイントにおいて同時に試験することが出来るものであり、６４箇所よりも多いテストポイントを持つＤＵＴを試験するために試験リソース集合の構成要素を結合することが出来るように再設定機能を備えている。これらのテストポイントは、未だ分割・パッケージングされていない集積回路ウエハの一部分上の位置であっても、或いはパッケージングされた部品の端子であっても良い。「テストポイント」という語は、信号を印加すること（例えば電源供給、クロック、データ入力）が出来る、又は信号を測定すること（例えばデータ出力）が出来る電気的部位を指す。本願においては、当該産業分野における習慣に従い、テストポイントを「チャネル」と呼ぶものとする。先に述べた、「結合させる試験リソースの集合」という語は、最高３６個までのテストサイトを指し、各テストサイトはテストサイトコントローラ４、（６４チャネル）ＤＵＴテスタ６、そしてＤＵＴ１４への実際の電気接続を成す（６４チャネル）ピンエレクトロニクスの集合９を含む。あるＤＵＴの試験において６４本以下のチャネルを要するのであれば、このＤＵＴの試験には単一のテストサイトで充分であり、この場合を、例えば「テストサイト＃１（図１に図示）が『単一サイトテストステーション』を形成する、或いは『単一サイトテストステーション』として動作する」と表現する。一方、上述した再設定が何らかの形で行われる場合、２つ（以上）のテストサイトが「結合」して１２８チャネルを有する、より大型の同等のテストサイトとして動作する。従ってこの場合を、ここでも図１を例にあげると、例えば「テストサイト＃３５及び＃３６が『２サイトテストステーション』を形成する」と表現する。
【００３０】
次に逆の場合を簡単に考察してみるが、留意すべきは１つのテストサイト全体で１つのＤＵＴを試験しなければならない、或いは１つのテストサイトが１つのＤＵＴしか試験できないということではない点である。ウエハが２個、３個又は４個のダイ（恐らくは隣接しているものであるが、必ずしもそうでなくとも良い）を含み、その試験チャネル条件の和が６４本以下であると仮定する。すると、これらのＤＵＴ（１５ａ−ｄ）を単一のテストサイト（例えば図１のテストサイト＃２）で試験することが出来る。これが可能なのは、後述する特定のハードウエアの説明で補足するが、各テストサイトが汎用プログラマビリティを持つためである。そのテストサイトが実行するテストプログラムを、そのテストサイトのリソースの一部が一つのＤＵＴの試験に使用されることになるように、そして他の部分が他の１つのＤＵＴの試験に使用されることになるように書くことが出来る。要するに、先に述べた最初の２つのＤＵＴの論理結合である第三のＤＵＴがあると仮定して、この第三のＤＵＴを単一のテストサイトで試験することが出来れば、その「構成要素であるＤＵＴ」をそのまま同様に試験することが出来るはずであるということである。勿論、大きな違いは、第三のＤＵＴに対する統合的な回答が出るのではなく、２つの「構成要素ＤＵＴ」のうち、どちらが合格したか不合格となったかの記録が取られる。即ち、第三のＤＵＴのどの部分が不合格となったかが問題となるのである。更に、不良ＤＵＴへの駆動信号を除外する又は制限する問題や、いずれのＤＵＴが不具合を示しているかに基づいてテストプログラムを分岐させると同時にテストプログラムの過剰なマルチスレッド化を防ぐ問題を含む他の問題も存在する。この単一テストサイトでのマルチＤＵＴテストステーション機能は特定の側面においてはかなり単純であり、他の側面においては複雑である。このマルチＤＵＴ試験を２つ以上のテストサイトを結合する概念と混同してはならない。
【００３１】
このテストサイト再設定の概念を抜けば、テストサイトとテストステーションの間には何等の相違も無いことになり、いずれか一方の語を使用すれば良いことになる。しかしながら明らかなように、この概念によればテストステーションの数は必ずしもテストサイトの数と同じとはならない。過去においても、単純なマルチＤＵＴ試験では、１つのテストサイトを分割してより多数のテストステーションを作成すること（ＤＵＴが１つのテストサイトを使い切るほど複雑ではない場合等）で双方の数が違う場合があった。しかしながら、ここでの数の違いは、複数のテストサイトが１つに結合してマルチサイトテストステーション（ＤＵＴが単一のテストサイトで試験するには複雑過ぎる場合）を形成することにもよる。
【００３２】
説明を先へ進めると、テストシステムコントローラ２は、システムバス３を介して最高３６個のテストサイトコントローラ（＃１〜＃３６）４ａ〜４ｚ（符号後部のａ〜ｚは１〜２６文字迄であり、３６個に対応しないが、数字符号の後に付ける接尾記号としては、まぎらわしい数字を使用するより好ましいと考えた）に接続している。テストシステムコントローラ２は、不揮発性メモリの試験タスクに関わる好適なテストシステム制御プログラムを実行するコンピュータ（例えばＮＴを起動するＰＣ）である。テストシステム制御プログラムは、所望の試験を行うための仕事の階層（及び複雑性）において最高レベルにある抽象概念を表すものである。テストシステムコントローラは異なるテストサイトでどのプログラムが起動しているかを決定すると同時に必要に応じてテストプローブ及びＤＵＴを動かすロボットシステム（図示せず）を監督するものである。テストシステムコントローラ２は、「テストサイトの一部が単一サイトテストステーションとして動作するように、他の一部がマルチＤＵＴテストステーションとして動作するように、そして他のテストサイトが結合してマルチサイトテストステーションを形成するようにプログラムされる」という概念を支持する形で機能することが出来る。このような状況においては、異なる部品が試験されていることは明らかであるが、最も好ましくは、異なる部品に異なる試験が用いられることである。同様に、全ての単一サイトテストステーションが部品の同じ様式を試験しなければならないという条件は無く、マルチサイトテストステーションにもそのような条件は無い。従って、テストシステムコントローラ２は、必要とされるテストサイト結合を実施するコマンドを発し、その後、使用される様々なテストステーションに適正なテストプログラムを実行させるようにプログラムされているのである。テストシステムコントローラ２は更に、試験により得られた結果に関する情報も受信するため、不良品を破棄するための適正な行動を取ることが出来、そして例えば工場設備設定における製造工程制御等に利用出来る様々な解析結果のログを管理することが出来る。
【００３３】
テストシステム自体は相応に大型の複雑なシステムである。一般的にロボットサブシステムを含み、これによりウエハをステージ上に搭載し、続いてピンエレクトロニクス９と接続するプローブ下の試験位置に試験対象である１つ以上の未来のダイ（この時点ではウエハはダイシングされていない）を配置するようになっている。テストシステムはまた、好適なキャリア上に搭載されたパッケージ済み部品の試験にも使用することが出来る。以下に説明するように、１テストステーションの形成にいくつのテストサイトが用いられているか、或いは１テストサイトにいくつのテストステーションが形成されるかにかかわらず、使用されるテストステーションの各々には少なくとも１つの対応するテストサイトコントローラ（後に説明する）が存在する。テストサイトコントローラは、例えば３６〜６４ＭＢのプログラム及びデータメモリの組み合わせを含み、ＶＯＳ（ＶｅｒｓａＴｅｓｔ  Ｏ／Ｓ；これはアジレント社のＶ１３００又はＶ３３００等の不揮発性メモリを試験するための初期の製品にも使用されている）と呼ばれる自社開発ＯＳを起動するインテル社のｉ９６０プロセッサ等の埋め込み型装置である。ここではしばらくの間、単一サイトテストステーションについてのみ考える。具体的な事例として、テストサイト＃１がテストステーション＃１としてＷＨＩＺＣＯ部品番号００１３を試験するように動作しているものとする。試験方式には１００種類程度の異なるタイプの試験（電圧レベル、パルス幅、エッジ位置、遅延を変化させ監視すること、及び大量の選択パターン情報の単純な記憶と取得）の実施が含まれ、各タイプの試験ではＤＵＴに対して何百万回ものメモリサイクルが含まれる。最上位レベルにおいて、テストシステムのオペレータがテストシステムコントローラ２に対してテストステーション＃１を使ってＷＨＩＺＣＯ００１３の試験を開始するように命令する。テストシステムコントローラ２は、その処理の過程でテストサイトコントローラ＃１（４ａ）［埋め込み（コンピュータ）システム］に対して関連のテストプログラム（例えばＴＥＳＴ＿ＷＨＩＺ＿１３）を起動するように指示する。このプログラムがテストサイトコントローラ＃１の環境中に既にある場合、単純にこのプログラムが実行される。なかった場合、プログラムはテストシステムコントローラ２から供給されることになる。
【００３４】
ここで基本的には、プログラムＴＥＳＴ＿ＷＨＩＺ＿１３は完全に独立したものであっても良い。しかしその場合、ほぼ間違いなくそのプログラムは大きく、テストサイトコントローラ４ａの埋め込み型システムのプロセッサがこれを充分に高速で起動し、試験結果を所望の速度で生成すること、或いはＤＵＴメモリサイクル毎に均一な速度で生成することでさえ難しくなる。従って、書き込むべき、或いは読み出し処理で期待されるアドレス及び関連データのシーケンスを生成する下位レベルのサブルーチンタイプの動作は、必要に応じてＤＵＴテスタ６中にあるプログラム可能なアルゴリズム的機構により実行されるが、これはテストサイトコントローラ４中の埋め込みシステムが実行するプログラムと同期して動作するものである。この処理を、低レベルサブルーチン様の動作とＤＵＴメモリサイクルを起動するタスクとをＤＵＴ１４のハードウエア環境により近い機構（ＤＵＴテスタ）にエクスポートすることであると考える。すると、一般的に言って、テストシステムコントローラ２がテストサイトコントローラにテストプログラムを供給する度に、テストサイトコントローラに対するプログラミングにより記述される、又は要求される、全体的な動作の実行に要する適正な低レベル実行ルーチン（恐らくは試験するメモリに特定的である）が対応するＤＵＴテスタに供給されることにもなる。低レベル実行ルーチンは「パターン」と呼ばれ、高レベルのプログラミング言語における機能や変数に名前があるのと同様に、これらにも一般名称が付けられている。
【００３５】
各テストサイトコントローラ＃ｎ（４）はサイトテストバス＃ｎ（５）により対応するＤＵＴテスタ＃ｎ（６）に結合している。テストサイトコントローラは、サイトテストバス５を使用してＤＵＴテスタの動作を制御し、そしてそこから試験結果を得る。ＤＵＴテスタ６は試験方式に関わる様々なＤＵＴメモリサイクルを高速で生成することが出来、また、読み出しメモリサイクルの結果が期待通りのものであったかどうかを判定する。基本的に、これは対応する有用な読み出し及び書き込みＤＵＴメモリサイクルのシーケンスを起動することによりテストサイトコントローラから送られるコマンド又は処理コード（「名前の付けられたパターン」）に応答するものである（例えば対応するパターンを実行する等）。概念的にＤＵＴテスタ６はＤＵＴに印加されるべき刺激情報を出力し、また、そこから返される応答情報を受信する。この刺激／応答情報７ａはＤＵＴテスタ６ａとピンエレクトロニクス＃１のアセンブリ９ａとの間で交わされる。ピンエレクトロニクスアセンブリ９ａは最高６４本までのプローブをＤＵＴ１４に接続することが出来るように支援する。
【００３６】
上述した刺激情報は、ＤＵＴテスタ中に使用されているいずれかの論理素子系列の電圧レベルに基づいて表現された、並列ビットパターンシーケンス（例えば「送信ベクトル」及び期待される「受信ベクトル」のシーケンス）でしかない。刺激／応答中のビット位置とダイ上のプローブとの間には設定可能なマッピングが存在し、このマッピングはＤＵＴテスタ６が把握している。個々のビットはそれらのタイミング及びエッジ配置において適正なものであるが、マッピングに加え、これらをＤＵＴに印加する前に電圧レベルシフトが必要な場合もある。同様に、刺激に続いてＤＵＴから出力される応答も、ＤＵＴテスタに送り返せるような状態にする前にバッファリング及び（逆）レベルシフトが必要な場合もある。これらのレベルシフトタスクはピンエレクトロニクス９ａの範疇にある。ＷＨＩＺＣＯ‐００１３の試験に要したピンエレクトロニクスの設定は、ＡＣＭＥ社の部品や、そして恐らくはＷＨＩＺ社のものであっても他の部品に転用出来る可能性は低い。従って言うまでも無くピンエレクトロニクスアセンブリ構成もまた設定可能でなければならず、このような設定能力の提供はＰＥ設定線８ａの機能である。
【００３７】
以上、１つのＤＵＴを試験するために１テストサイトがどのように構築されるかの構造的概要を述べた。次に、多数のテストサイトを動作させる場合に生じる問題について触れる。前提としてまず複数のテストサイトを有するテストシステムを構築するための推奨される実施例を説明する。これからここに記載する情報は多くの意味において顧客嗜好の市場調査結果及び費用利益分析結果に基づく選択の問題である。従ってこれらの事項のいずれか１つを構築するには、明確な選択をしなければならず、一度この選択を行うと、システム全体を通じて特定の結果が明らかとなる。ここではテストシステムのハードウエア特性のより広範囲な概要を少なくとも一般的な形で記載することが有用であると思われる。これらの特性は条件次第で変化するものではあるが、それでもそれらを知っておくことは本発明を説明する場合に提示する様々な例を理解する上での一助となる。
【００３８】
まず始めに、４個の比較的大型のカードケージを想定する。各カードケージは、電源及び水冷機構（クリーンルーム環境下においてファンは汚染源となる可能性があり、水冷は完全に実装されたシステムからの数十ｋＷもの放熱を除去する場合、空冷方式よりも安価である）の他に、マザーボード、前面及び後面を有する。各カードケージには最高９個のアセンブリを挿入することが出来る。各アセンブリはテストサイトコントローラ、ＤＵＴテスタ及びピンエレクトロニクスを含む。テストサイトコントローラがどのように結合するかについての一般的な概略を説明するが、これには幾つかのバスを使ってデイジーチェーン接続を作ることが含まれる。
【００３９】
本題から若干それるが、最初にこの「デイジーチェーン接続」について簡単に触れる。システム構成要素Ａ、Ｂ、Ｃ及びＤがあるものとする。これらがこの順番でデイジーチェーン接続により連結したと想定する。すると、そこにはＡを出てＢに達する情報又は制御経路があり、ＢはＢを出てＣに達するトラフィックを選択的に送出することが出来、ＣはＤに達するトラフィックを選択的に送出することが出来る。同様の構成が他方向のトラフィックにも存在し得る。デイジーチェーン接続は優先順位機構を作るために良く採用されているもので、ここでは様々なテストサイトコントローラ間にマスタ・スレーブ関係を作るために用いる。デイジーチェーン方式による通信構成を示す記号の後には「ＢＵＳ」ではなく、「ＤＳＹ」を付した。従って、例えば「コマンド／データ  ＢＵＳ」ではなく、「コマンド／データ  ＤＳＹ」としている。次に、情報が「Ｂに入り、選択的に送出される」という概念は、そのトラフィックが送出される前に、別の導体セット上に複製されることを示唆している場合もある。そうすることも出来るが、性能上の理由から、これはどちらかと言えばアドレス可能なエンティティを有する通常のバスである。プログラム可能なアドレスマッピング構成及び下流のテストサイトコントローラの一部分を「スリープ」状態にする能力により、１つのバスを論理的には複数のデイジーチェーンであるかのように見せる（機能させる）ことが出来る。最後に、デイジーチェーンはコマンド及び制御情報の経路として高い性能を持つものであることは言うまでもなく、もし、そうでなかったらマスタ・スレーブの組み合わせ（マルチサイトテストステーション）が１テストサイトと同じ速度で処理を行うことは望めない。デイジーチェーン性能を損なわないために各種ＤＳＹはそれぞれのカードケージの外に出ないようにする。これを実施するために、どの（従って幾つの）テストサイトを結合するかについて幾つかの制限が設けられる。基本的には制限を設ける根本的な必要も、技術的実用性の決定的な欠如があるわけでもない（即ち実施可能である）。これは単純に、既に９個のテストサイトがカードケージにあるのだから、ＤＳＹを延長することは多大なコストを払ってわずかな追加利益を得ることにしかならないとの考えからである。
【００４０】
図１の説明に戻り、テストサイトコントローラ４ａ〜４ｚを考察するが、これらはそれぞれに９個ずつ、合計４個のカードケージ中に分散収容されている。これらを４ａ〜４ｆ、４ｇ〜４ｍ、４ｎ〜４ｔ、４ｕ〜４ｚとする（先にも述べたように、アルファベットは本来２６文字しかないが、もう１０文字がその中のどこかに存在するものと想定する）。ＣＭＤ／ＤＡＴ  ＤＳＹ１７ａ（コマンド／データデイジーチェーン）は１つのカードケージ中にあるテストサイトコントローラ４ａ〜４ｆを相互接続し、別のＣＭＤ／ＤＡＴ  ＤＳＹ１７ｂは他のカードケージ中にあるテストサイトコントローラ４ｇ〜４ｍを相互接続する。残りのカードケージにおいてもテストサイトコントローラ４ｎ〜４ｔ及び４ｕ〜４ｚに同様の構成がそれぞれ存在する。先にも述べたように「ＤＳＹがカードケージを出ない」と言った場合、そのＤＳＹを実際に構成するバスの最終端がそのカードケージを出ずに、他のカードケージにおける次の区分の頭になっている、ということである。かわりに、テストシステムコントローラ２からのシステムバス３が全てのテストサイトコントローラに達しており、テストサイトコントローラの各々が対応する「カードケージを出ないＤＳＹ区分」の頭においてマスタとして動作することが出来るのである。
【００４１】
ここまで説明して来たＣＭＤ／ＤＡＴ  ＤＳＹ１７ａ〜１７ｄはそれぞれのテストサイトコントローラ４ａ〜４ｚの間に存在する。ＳＹＮＣ／ＥＲＲ  ＤＳＹ１８ａ〜１８ｄ及びＤＵＴテスタ６ａ〜６ｚも同様の構成である。ＳＹＮＣ／ＥＲＲ  ＤＳＹ１８によって運ばれる同期・エラー情報により、ＤＵＴテスタは調和して機能することが出来る。これら２種類のデイジーチェーン（１７及び１８）は若干異なる種類の情報を送信するものではあるが、しかし各々は１つ以上のテストサイトを結合してテストステーションを構成するための同じ全体機構の一部として存在している。
【００４２】
次に図２の説明に進むが、図１のＤＵＴテスタ６の概略を示す拡大ブロック図が描かれている。これは最高で３６個設けられるものであるが、ここではそのうちの１つを説明する。図２を一目見れば明らかなように、概略ブロック図にしては相当な数の構成要素が描かれている。ＤＵＴテスタ６に含まれるもので、このブロック図に描かれた要素の中には、機能的に非常に複雑であり、市販品として容易に入手できないものもある。ここで２つの点について明記しておく。第一に、図２の主要目的は、不揮発性メモリテストシステム１全体の重要な動作環境の基本特性を説明することである。図３以降の図に関連して詳細に説明する本発明は、図２に基づいて以下に説明する機構の延長線上にあるものか、或いはその存在根拠を図２に見出すことが出来る新たな機構である。いずれにしても、この説明を書いている段階では読者がこれらの機構のどれに直面することになるかは明確にはわからない。現時点での目標は、様々な実施例の多数の異なる詳細説明の開始点として簡潔でありながら充分な情報を提供することにより機構の各々を簡明かつ適正に説明することである（異なる発明の各々について全てを開示する冗長な明細説明を避けるため）。第二に、拡大又は拡張した実施例の中には、図２に示した一般的な規則には準じてはいるものの、この単純な事例とは整合しない情報を含むものもある。しかしこれは誤りや決定的な矛盾ではなく、全体像を完全な縮小版で表すように物事を簡略化して示すことが時に困難、或いは不可能な場合があるからである。この状況は道路地図と似ている。例えばコロラド州の標準サイズの地図では、州間高速自動車道Ｉ‐７０に乗って東へ向かえば、デンバーでＩ‐２５に入って北へ向かうことが出来ることがわかる。これは左折のように見える。実際、昔は左折であったが、現在は違う。このインターを詳しく記した地図を見ると、一連の部分的進路変更と割り込み車線が示されている。しかしながら標準サイズの道路地図が間違っていると言う者はいない。このレベルの抽象性においては正しいからである。同様に、図２は相当詳しく描かれているようではあるが、実際は中程度の抽象性で描かれた簡略図であり、一見「左折」に見える部分でも、実際は単純な「左折」とは言えない場合もある。
【００４３】
図１に示したように、ＤＵＴテスタ６への主な入力は、このＤＵＴテスタ６に結合するテストサイトコントローラ４を起点としたテストサイトバス５である。テストサイトバス５は、テストサイトバス上のトラフィックをリングバス８５又はＶＴバス８９のトラフィックに転換するマルチバスコントローラ８８に結合している。また、リングバスのトラフィックをＶＴバストラフィックに転換することも、逆にＶＴバスのトラフィックをリングバスのトラフィックに転換することも出来る。図２に示したほぼ全ての要素は大規模集積回路の一部である。後に説明するタイミング／フォーマッティング＆比較回路５２は、８個のこのようなＩＣから成るものであるが、わかり易くするために１つのまとまりとして図示している。各種の外部ＤＲＡＭ（このうちの幾つかは内部テストメモリ８７の一部でもある；図２参照）を除き、図２に示した他の要素は、ＡＰＧ（自動パターン発生器）と呼ばれるもう１つの大規模ＩＣに属している。リングバス８５は、ＤＵＴテスタ６のＡＰＧ部分に属する主な要素の設定や動作モードの設定等を行うための汎用の機構間通信経路である。更にＡＰＧ中の各種要素間には、様々な広帯域・高速経路が専用に設けられている。ＶＴバス８９は、このＤＵＴテスタ内部でＩＣ間を結ぶためのバスである。
【００４４】
リングバス８５は、テストサイトコントローラがＤＵＴテスタ６のＡＰＧ部分と通信を行うための機構である。リングバス８５はマイクロコントローラシーケンサ１９に結合しており、マイクロコントローラシーケンサは特殊用途マイクロプロセッサとリンクしている場合もある。次アドレス計算器１０２により生成されたアドレスを用い、マイクロコントローラシーケンサ１９の内部プログラムＳＲＡＭ（ＰＧＭ  ＳＲＡＭ）２０又は外部ＤＲＡＭ２１にあるプログラムメモリ中に記憶されたプログラムから命令がフェッチされる。これら２つのメモリは、プログラムカウンタ（又は命令フェッチアドレス）として機能する、本質的、論理的に共通のアドレス６３によりアドレス指定されているかのように見え、また、いずれも実行すべきプログラムの供給源と成り得るが、留意すべきは：（１）どの期間においてもいずれか一方のメモリが命令フェッチメモリサイクルを実行し；（２）実際、これらは電気的に異なる信号によってアドレス指定されている；という点である。ＳＲＡＭは高速であり、真のランダムアクセスが可能であるが、マイクロシーケンスコントローラ１９（大規模ＡＰＧ集積回路の一部）中の貴重な空間を使用するため、そのサイズは限られている。外部ＤＲＡＭはかなりの容量まで柔軟に設定することが出来るが、直線的実行により分岐無しで連続領域をアクセスしない限り高速動作出来ない。ＳＲＡＭ２０におけるプログラミングはアルゴリズム性の高いものが多いが、外部ＤＲＡＭ２１は初期化ルーチンやランダムデータ、即ち不規則データのような、アルゴリズム処理では容易に生成出来ないものに適している。
【００４５】
次アドレス計算器１０２は、無条件又は条件ジャンプ命令、或いはプログラム制御フラグ２５、その他のフラグ５５及びマルチＤＵＴ試験処理用の他の特定の信号１０３及び１０４（わかり易くするために別々に図示したＤＦＥ０：３、及びＤＰＥ０：３）で条件付けられる条件サブルーチン命令に呼応して、実行中のテストプログラムに分岐を生じさせることが出来る。
【００４６】
マイクロコントローラシーケンサ１９がフェッチし、実行する命令語は２０８ビットと、かなり長い。これは１３個の１６ビットフィールドから構成される。これらのフィールドはマイクロコントローラシーケンサ１９の外部機構のためにフェッチした命令情報を表すことが多い。このようなフィールドは、それらに対応付けられた機構専用のものである。１セットのＡＬＵ命令２２が８個の１６ビットＡＬＵ２４の集合に印加され、その他はＤＵＴテスタ内に分散する他の様々な機構に配信される。後者の状況は、各種制御値および命令４２と表示した線で表した。
【００４７】
８個の１６ビットＡＬＵ２４は、それぞれ関連する１６ビット結果レジスタ（各ＡＬＵは他のレジスタも幾つか含んでいる）の周囲に構築された算術命令の周知のレパートリーを有する。結果レジスタの内３つと、それらに関連するＡＬＵは、Ｘ、Ｙ及びＺのアドレス構成要素２７を生成するためのものであり、アドレス構成要素は様々に組み合わせられてＤＵＴに供給される完全なアドレスとなる。８個のＡＬＵ／レジスタのうち、更に２つ（ＤＨおよびＤＬ）は、３２ビットデータパターン２８をアルゴリズム的に作成するのを助けるものであり、３２ビットデータパターン２８は最上位部（ＤＨ）と最下位部（ＤＬ）との間で分割される。最後の３つのＡＬＵ／レジスタ（Ａ、Ｂ、Ｃ）はカウンタとして使用され、様々なプログラム制御フラグ２５の生成に寄与する。これらのプログラム制御フラグは、プログラムで指定された繰り返し回数又は他の数的条件が完了した時点で実施されるプログラム制御及び分岐を補助するものである。これらのプログラム制御フラグ２５はマイクロコントローラシーケンサ１９に返送され、ここでマイクロプログラムされた実行機構を熟知する者には周知の方法で命令フェッチアドレスの値（次アドレス計算器１０２が生成する）に作用を及ぼすことになる。更に各種の「その他のフラグ」５５も存在し、これらもプログラム分岐を生じるために用いることが出来る。これらはフェッチした命令語に含まれる他のフィールドによって制御されるＤＵＴテスタ６中の他の機構のそれぞれを起点としている。このようなフラグの具体例として、ＰＤ＿ＥＲＲ９０を別途に明示的に示した。これはポストデコード機構６０からＰＧＭ ＳＲＡＭに供給されるもので、ポストデコード機構６０がエラーを見つけたことを表示すものである。他の更なるフラグとしては、ＶＥＣ＿ＦＩＦＯ＿ＦＵＬＬ２６があげられる。より簡略化した他の図においては、これもその他のフラグ５５に包含されている。これをここで個別に示したのは、マイクロコントローラシーケンサ１９処理の一側面の説明を助けるためである。
【００４８】
ＶＥＣ＿ＦＩＦＯ＿ＦＵＬＬの機能は、マイクロコントローラシーケンサ１９によるプログラムの更なる実行を（一時的に）停止させることである。マイクロコントローラシーケンサ１９がフェッチした命令と、ＤＵＴに印加すべきテストベクトルを最終的に送出する機構との間には多段のパイプラインが存在する。更に、ＤＵＴへの印加に向けて送信される過程でベクトルが付加されるデータの塊りは、最終的なベクトル印加速度、或いは各ベクトルの持続時間に関する情報をその一部に含んでいる。従って、ＤＵＴへのベクトル印加速度は一定である必要は無く、具体的には、あるベクトル群の印加時間がその生成にかかった時間よりも長くても良い。マイクロコントローラシーケンサは、単純にプログラムをその最高速度で実行する。しかしながら、「ベクトル消費」速度が「ベクトル生成」速度と平均で等しくなければ、パイプラインにはほぼ無限大の柔軟性を持たせなくてはならなくなることは明白である。以下に説明するアドレスマッパ２９の出力にはベクトルＦＩＦＯ４５があり、これがパイプライン中の柔軟な容量として機能する。信号ＶＥＣ＿ＦＩＦＯ＿ＦＵＬＬは、パイプラインの先頭における新たなベクトルの生成が一時的に中断されるように作用することでパイプライン中の限界段数を超過しないようにするものである。
【００４９】
更に説明を続けると、（３×１６＝４８ビットの）Ｘ、Ｙ及びＺアドレス構成要素２７がアドレスマッパ２９に印加される。アドレスマッパ２９の出力は、ほぼ任意に事前選択された構成で順序付けられた４８ビットアドレス空間中のアドレス値へと並べ替えられたものである。この理解を助けるために本題から離れるが、このアドレスマッパ２９を４８ビットアドレス空間が完全に埋まったメモリとし、各アドレスには４８ビット値が保持されていると想定する（このようなメモリを現在実現しようとすれば大型冷蔵庫大となるであろうが、このことは一時的に無視して考える）。このようなメモリがあればどのようなアドレスが与えられても、他の任意に選択された、後に置き換えアドレスとして使用できる４８ビット値にマッピングすることが出来るルックアップテーブルが実現する。このようなアドレスマッピングが望まれる理由は、Ｘ、Ｙ及びＺアドレス構成要素が一般的に、特定のＤＵＴ内部構造のコンテキストにおいて１つの大型リニアデコーダでは実現されにくい有用な意味を持つためである。行、列、層、ブロック或いはページといった概念はテストエンジニアにとっては非常に便利なものであり、物理的に近い位置で生じた不具合は、これらのＸ、Ｙ及びＺアドレスにおいてもこれに対応する近接性を持っている。試験結果におけるこのようなパターンは、何が悪いのかを評価し、これを欠陥部分による処理が予備部分による処理へと分岐されるように設計レベル、又は製造レベルで再プログラミングする等して修復する上で非常に貴重なものである。このような考え方からは、２つの問題が生じる。第一の問題は、４８ビットをペアリング（paring）してＤＵＴに印加すべき実際のビット数（例えば３２又は１６）へと減じる点である。このペアリングがどのように行われるかを簡単に説明すれば、これはＸから何個かのビットを得、Ｙから何個かのビットを得、そしてＺから残りのビットを得るということである。しかし全部ではない。そして、特定のアドレスは、回路の他の部分の左右（又は左右及び上下）鏡像である回路中に位置する可能性があるため、これが第二の問題となる。この場合、連続アドレス値が回路中の物理順序で並んでいる限り、ビットの意味が変化することになる。このチップレイアウト特性は何回も生じ得るもので、ある１群のビット（例えばＹ）が何を意味するかは、それに付随する他のビット群（例えばＺ）の値に依存する場合がある。アドレスマッパ２９はＸ、Ｙ及びＺの生アドレスを「再パッケージング」することでこの種の状況を反映させることを可能としたもので、このような内部構造構成を有するメモリを試験する人々の便宜をはかるものである。実際にこれがどのように行われるかを説明する。アドレスマッパ２９は、相互接続された相当数のマルチプレクサから構成される。これは、先に一時的仮定例として説明の便宜上触れた、完全に埋められたメモリ復号化方式における完璧な任意ルックアップテーブル機能を実現することは出来ない。しかしながら、特に４８ビットから実際に必要な数へとペアリングにより減ずることが出来る他の機構があるため、Ｘ、Ｙ及びＺアドレス構成要素のサブフィールドを必要に応じて並べ替えることが出来る。アドレスマッパ���９は３個の１６ビット（アドレス）ルックアップテーブルを更に有し、これらによって限定された任意マッピングを局所範囲において実施することが出来るのである。
【００５０】
アドレスマッパ２９のマッピング後アドレス出力３０は、様々なバッファメモリ及び（又は）ＴａｇＲＡＭ３１Ａ、３１Ｂ、そしてエラー捕捉ＲＡＭ１、２（３２Ａ、３２Ｂ）にアドレスとして印加される。これらのメモリは、異なる機能を持ってはいるが、集合的に内部テストメモリ８７を構成する４つのメモリセット内において、選択可能なパーティションとして実現することが出来る。マッピング後アドレス出力３０は更に１入力としてアドレスビット選択回路３７（その多重化機能は後述する）にも印加される。内部テストメモリは、異なる機能用途に使用するための、ＲＡＭをベースとした様々なメモリ構造を含むように設定することが出来る。その設定は、異なるメモリセットの特定部分をそれらの対応用途に使用することを宣言することにより行われる。図２に示されるのは、そのような構成の一例である。この構成は試験の進展に伴い再構成することが出来、メモリセットの使用に関わる処理は非常に動的な性質を持つものと考えられる。内部テストメモリ中に存在するもの（例えばエラー捕捉ＲＡＭ３２Ａ、３２Ｂ）の中には恒久的なハードウエアとしての固定要素は一切無い。不変的に存在するのは４つのメモリセットだけである。しかしながら、いずれの時点においても、（もし実際に定義されるとすれば）どのメモリセットのどの部分がエラー捕捉ＲＡＭであるかに関しては、現在確立されている設定に依存するのである。
【００５１】
バッファメモリ３１Ａ及び３１Ｂについて説明する。これらの機能は、ＤＵＴに印加することが可能なデータパターン３３及びアドレス３４を保持することである。これらは実際には対応するバッファメモリの別個の出力であるが、バッファメモリは「デュアルポートメモリ」ではなく、２つの異なるメモリセットの部分から構成されたものであることが望ましい。そうした場合、記憶されたデータ３３が一方のメモリセット中に保持され、記憶されたアドレス３４が他方のメモリセット中に保持されていることが望ましい。また、バッファメモリに書き込みを行うための明確な機構を図示していないが、これを行うための方法の１つとしては、実行中のプログラムの命令でテストサイトコントローラ４が起動するアドレス指定されたバスの処理により実施する方法がある。「リングバス８５」と呼ばれる「床下」の「ユティリティサービス」バスがあり、これが図２に示した要素のほぼ全てに通じている（図が非常に見にくくなるため、これが各箇所に接続している状態は図示していない）。メモリセットに情報を書き込むための他のより高速な方法は、図３に関する説明で触れる。
【００５２】
エラー補足ＲＡＭ３２Ａ及び３２Ｂはバッファメモリに印加されたものと同じアドレスで指定される。これらのエラー捕捉ＲＡＭは、エラーに関する情報を記憶及び取得するもので、その処理は後に説明するポストデコード回路と連係して実施される。バッファメモリ３１Ａ、３１Ｂからの経路３３、３４と同様に、エラー補足ＲＡＭ１（３２Ａ）からの経路６２Ａ〜６２Ｄもまた、リングバス（図示せず）により配信された設定情報に基づき、エラー捕捉ＲＡＭとして設定されたメモリセット部分から出力される多重化出力であることが望ましい。
【００５３】
留意すべきは、データマルチプレクサ３５はその入力として、ＡＬＵ集合２４中のレジスタＤＨ及びＤＬからのデータ２８と共にバッファメモリ３１Ａから出力される記憶データ３３も受けるという点である。データマルチプレクサ３５はこれらの入力（２８、３３）のうち、どちらをその出力３８として提供するかをＰＧＭ ＳＲＡＭ２０に記憶された値３６に基づいて選択する。その出力３８は、次に説明するように変更されることが無い限り、２つのベクトル構成要素のいずれか一方として（もう一方の構成要素はアドレスビット選択回路３７の出力３９）送信ベクトルマッパ／シリアライザ／受信ベクトル比較データ回路４０に印加される。
【００５４】
回路４０は３つのベクトル機能を実行することが出来るもので、その機能とは、ベクトル構成要素（３８、３９）を組み合わせることによりＤＵＴに印加（伝送）し得るベクトル全体を順序付けられた論理表現において作成すること、送信ベクトルの論理表現の順序ビットと、ＤＵＴに信号（ベクトル中のそのビット）を届けるために接触するピンエレクトロニクスの実際の物理チャネル番号（例えばプローブ先端を特定する番号）との間に動的な任意の対応付け（マッピング）を実施すること、そしてそれを受けるＤＵＴに対し、別個に、順序通りに（シリアル化して）印加されるように全体の論理ベクトルを分割する際にコンパイラと連係して作用することである。これらの機能のうち、どれが実行されるかは、ＳＲＡＭ４１からの制御信号により決定するが、このＳＲＡＭもまた、マイクロコントローラシーケンサ１９によりフェッチされた２０８ビット命令中の１フィールドに基づいてアドレス指定されるものである。
【００５５】
回路４０には、ＤＵＴディスエーブル論理部９０が含まれている。この目的は、一部は静的であり、一部は試験結果に応じて変化する、全てがプログラム的に定義された様々な条件に呼応し、４個のＤＵＴのうち、どの１つ（又は複数）をディスエーブルとするかを表示することである。これらの表示は、４つの信号４４ｂ（ＤＤ０：３）（ＤＵＴ０へのディスエーブル信号、ＤＵＴ１へのディスエーブル信号・・・等）により送信される。これは単一テストサイトにおけるマルチＤＵＴ試験を支援するものである。回路４０の出力は最高６４ビットまでのベクトル４４ａであり、これがＤＵＴディスエーブル信号４４ｂと共にベクトルＦＩＦＯ４５に印加される。ＦＩＦＯ４５は、完全に埋まると信号ＶＥＣ＿ＦＩＦＯ＿ＦＵＬＬ２６を生成するが、この信号の意味及び目的は先に説明した。後に説明する期間発生器４９からの信号ＶＥＣ＿ＦＩＦＯ＿ＵＮＬＯＡＤ４７を受け、ベクトルＦＩＦＯ４５の最上部にあるベクトルがそこから取り出される。取り出されたベクトル４６は、対応するピンエレクトロニクス９を介してＤＵＴへと接続するタイミング／フォーマッティングおよび比較回路５２に印加される。即ち、（多数存在するテストサイトの１つにおける）各ピンエレクトロニクス９が、送信・受信ベクトル７及びピンエレクトロニクス設定情報８を、それぞれに対応するタイミング／フォーマッティングおよび比較回路５２から受信するのである。
【００５６】
タイミング／フォーマッティングおよび比較回路５２は、設定情報及び制御情報を受けるためにＶＴバス８９に結合している。タイミング／フォーマッティングおよび比較回路５２は単一の要素として取り扱ってはいるが、これらが本来は８個のＩＣであることは先にも説明した。
【００５７】
タイミング／フォーマッティングおよび比較回路５２は、マイクロコントローラシーケンサ１９のプログラムＳＲＡＭ２０と同じ命令アドレス（丸で囲まれたＡ）によりアドレス指定される内部ＳＲＡＭ５４を有する（外部ＤＲＡＭ５３を内部ＳＲＡＭ５４の代わりに使用しても良いが、これは図示していない増分カウンタによりアドレス指定される）。内部ＳＲＡＭ５４（又は外部ＤＲＡＭ５３）は、ドライブサイクル及び比較サイクルの生成を助けるものであり、これらのサイクルは関連したフォーマットを持っている。ドライブサイクルは、ＲＡＭ５４又は５３により供給される事前に選択されたフォーマットを用いて送信ベクトルをＤＵＴに印加するものである。比較サイクルはＤＵＴから供給されるベクトルを受信し、これをＲＡＭから供給された事前選択フォーマットに基づいて調べ、それが先に得られた比較データと一致するかを決定するものである。ドライブサイクル及び比較サイクルはいずれもその持続時間に関して設定することが出来、更に負荷を印加するかどうか、何時印加するのか、何時データをラッチ又はストローブするのか、信号がリターン・トゥ・ゼロ（Return-To-Zero）信号であるかどうか、送る信号を補完情報で囲むのかどうか等（これらのオプションが上述した各種フォーマットである）についても適正な範囲で設定可能である。
【００５８】
タイミング／フォーマッティングおよび比較回路５２により生成される比較結果は、論理値の誤り（機能エラー）及び（又は）許容範囲を外れた電気特性（パラメータエラー）によりそのチャネルが不具合を呈したかどうかについて、チャネル毎の情報を含んでいる。更に、マルチＤＵＴ試験が実施された場合、どのチャネルがどのＤＵＴに通じているかは既知である。これにより、４つの機能エラー信号ＤＦＥ０：３（ＤＵＴ＃機能エラー）１０３及び４つのパラメータエラー信号ＤＰＥ０：３（ＤＵＴ＃パラメータエラー）１０４の生成が可能である。
【００５９】
タイミング／フォーマッティングおよび比較回路５２により実施される比較処理においては、回路４０の論理的反転であると言える機能を持つ受信ベクトル逆マッパ／デシリアライザ５７に印加される６４ビット値５６が更に生成される（回路５７の処理はＳＲＡＭ５８により制御されているが、これは回路４０のＳＲＡＭ４１による制御に対応する）。そして回路５７の出力５９はポストデコード回路６０に、そして更にエラー捕捉ＲＡＭ１（３２Ａ）に印加される。ここではあまり詳細にわたって説明しないが、ポストデコード回路６０は入力されるエラー情報５９と以前にエラー捕捉ＲＡＭ１（３２A）中に記憶されたエラー情報の両方をプログラム基準に基づいて検分し、凝縮した、より容易に解釈出来るエラー情報を生成することが出来る。生成されたエラー情報は経路６１を介して他方のエラー捕捉ＲＡＭ２（３２Ｂ）に戻し、記憶しておくことが出来る。一例として、特定のアドレス範囲でエラーが生じた回数の計数値を作成すること等があげられるが、このような情報はいつ代替回路を起動することによりオンチップ修復を試みるかを決定する上で有用である。
【００６０】
次に期間発生器４９及びこれに対応するタイミングＳＲＡＭ５１について説明する。これらは８ビット信号Ｔ＿ＳＥＬ４３に応答して、マイクロコントローラシーケンサ１９によりフェッチされた２０８ビット命令の各々に関連するタイミング／フォーマッティングおよび比較回路５２の処理の継続時間を決定するものである。Ｔ＿ＳＥＬ４３は、フェッチされた命令中の異なるフィールドによってそれぞれに表される各種制御値および命令４２の一部である。この信号は、８ビット値として２５６の異なる「事柄」を表す、即ち符号化することが出来る。この場合の「事柄」とは、タイミングＳＲＡＭ５１に記憶され、Ｔ＿ＳＥＬによりアドレス指定される２８ビット値である。アドレス指定された２８ビット値２３の各々は１９．５ピコ秒の分解能で所望の継続時間を指定するものである。アクセスされた２８ビット継続時間値２３のシーケンスは期間ＦＩＦＯ５０中に記憶され、ここからそのシーケンスの個々の要素が取得され、その後、ベクトルＦＩＦＯ４５が記憶するそれらに意図した対応ベクトルの取得に同期して印加されるようになっている。
【００６１】
ＦＩＦＯ５０の最も古いエントリ中にある粗タイミング値フィールドは５ナノ秒の分解能で継続時間情報を含んでおり、この情報から、次の送信ベクトルをベクトルＦＩＦＯ４５からタイミング／フォーマッティングおよび比較回路５２に送る信号ＶＥＣ＿ＦＩＦＯ＿ＵＮＬＯＡＤ４７が生成される。随伴信号ＴＩＭＩＮＧ  ＲＥＭＡＩＮＤＥＲ４８もまた、回路５２に印加される。この時点で１９．５ピコ秒という最終分解能に達するのである。
【００６２】
上述はメモリテスタの総合的性質を紹介したものである。これを開始点とし、以下おいてはスコープモード及びその関連事項を説明する。
【００６３】
ここで図３を参照するが、これは図２のブロック図（６）の一部を拡大したもので概略ブロック図（６４）であり、ＡＬＵ履歴ＦＩＦＯ６９及びそれに関連する制御回路を含んでいる。まず始めに次アドレス計算器１０２について触れるが、その役割は、ハードウエアが実行する実際の２０８ビット命令語を格納するプログラムＳＲＡＭへと印加するアドレスシーケンス６３を生成することである。即ち、次アドレス計算器１０２は次にフェッチされる命令語のアドレスを表示するプログラムポインタの管理機構なのである。新たに有効なアドレスがある場合は必ず信号ＰＧＭ＿ＳＴＥＰ８３が発信される。
【００６４】
実行中の機械語が分岐を許容し、かつ、対応するフラグ５５及びプログラム制御変数２５等が存在した場合、次アドレス計算器１０２はシーケンスから外れたアドレス６３で応答することにより、テストプログラム中に分岐を発生させる。この機能に関連する信号の中に、ＰＤ＿ＥＲＲＯＲ（ポストデコードエラー）９０と呼ばれる信号がある。これは図２のポストデコード回路６０を起点とする信号であり、その内容は参照により組み込まれた特許出願「ＭＥＭＯＲＹ  ＴＥＳＴＥＲ  ＷＩＴＨ  ＥＮＨＡＮＣＥＤ  ＰＯＳＴ  ＤＥＣＯＤＥ」に詳細にわたって記載されている。ごく簡単に説明すると、この信号は、ポストデコード回路６０内部で設定出来る何らかのエラー検出基準が満たされた事実を、ポストデコード処理が検出したことを意味するものである。ここでの関心事は、ＰＤ＿ＥＲＲＯＲ９０の発生と関連付けられるテストプログラム位置及び関連状態情報がどれであるか、という点である。即ち、知らなければならないのは、ＡＬＵレジスタＸ、Ｙ及びＺの内容（アドレス）と、そして恐らくはＤＨ及びＤＬレジスタの内容（これらが組み合わせられて３２ビットデータを構成する）であり、また更にはＡ、Ｂ及びＣレジスタの内容（これらはループインデックスとして、或いは他のテストプログラムフロー制御に用いられる）も、恐らく知る必要がある。そして、これらのレジスタの内容を回復することが出来るようにＡＬＵ履歴ＦＩＦＯ６９が存在するのである。一部の実施例においては、ＡＬＵ履歴ＦＩＦＯ６９中に単にアドレスレジスタを設ければ充分な場合もあれば、他の実施例においては、ここで触れない更なるレジスタを設けることが有用である場合もある。
【００６５】
その概念はこうである。テストプログラムは、周期的にＰＤ＿ＥＲＲＯＲ信号の有無を調べ、それが存在した場合、恐らくはその事実をプログラム中の特定の位置へとジャンプする必要性へと関連付けることが出来るものである。しかしながら、そのジャンプの行き先は、何かを実行するための単なるテンプレートでしかない場合が多く、意図した通りのジャンプを実行するには、各種レジスタの内容（履歴ＦＩＦＯに保存されている）が回復されなければならない。しかしながら、ジャンプの行き先が、後にそのＰＤ＿ＥＲＲＯＲを生じる原因となった命令を指示するプログラムポインタの真の値ではない場合さえ考えられる。これらの理由に関連して、次アドレス計算器１０２のプログラムポインタ値がＡＬＵ履歴ＦＩＦＯに保存される項目には入っていない点に留意されたい。マイクロプロセッサにおけるコンテキスト切換えとは異なり、ここでは行く必要があるテストプログラム位置を設定するために通常のプログラムジャンプに依存している。ＡＬＵ履歴ＦＩＦＯは、プログラムの制御下で、或いは自動的に、ＤＵＴアドレス、ＤＵＴデータ、そして恐らくはプログラムループ制御インデックスのコンテキストを回復するものである。このように、ＡＬＵ履歴ＦＩＦＯ事象の結果は、これが作用を及ぼすプログラムそのものにより柔軟に制御することが出来る。
【００６６】
説明を続けるが、プログラムＳＲＡＭ２０からフェッチされる２０８ビット命令語６５の中には、ＡＬＵ処理（テストプログラムのアルゴリズム的制御）にかかわるＡＬＵ命令（２２、６６）を記述するｎビット部分がある。また、ＢＥＧＩＮ＿ＨＩＳＴと呼ばれる1ビット部分６８も含まれ、その意味と使用については簡潔に下記に述べる。そして２０８ビットから上記を除いた残りの部分６７のビットは、必要に応じた様々な箇所へと送られるものである。
【００６７】
ＡＬＵ命令（２２、６６）は、ＡＬＵ命令回路の集合７０へと印加されるが、この回路７０はＡＬＵレジスタの集合（７１〜７８）へと適正に接続されている。これらのＡＬＵレジスタは図２のレジスタと同一のものであり、図３においては、Ａ＿ＡＬＵレジスタ７１、Ｂ＿ＡＬＵレジスタ７２、Ｃ＿ＡＬＵレジスタ７３、ＤＨ＿ＡＬＵレジスタ７４、ＤＬ＿ＡＬＵレジスタ７５、Ｘ＿ＡＬＵレジスタ７６、Ｙ＿ＡＬＵレジスタ７７、Ｚ＿ＡＬＵレジスタ７８として表示されている。図３においては、図を見易くするためにこれらの各種レジスタの接続の全容を図示してはいないが、実際には図２に示した接続がそれらの後に続いていることは言うまでもない。しかしながら、この図においてはレジスタはＡＬＵ履歴ＦＩＦＯ６９の一部に接触して描かれている。実際、ＡＬＵ履歴ＦＩＦＯ６９は８つの列、フィールド又は区分を持っており、それら各々への入力は、上記にあげた８つのＡＬＵレジスタの各々である。これらは調和して動作するため、各ＦＩＦＯ区分の各々の深さは全て等しい。その深さは、各々が約４０である２つのパイプラインの長さの和として得られる８５程度が望ましい。その低部に引かれた太線１０５は、８つのＦＩＦＯ区分の出力が全て集められ、リングバス８５を介してシステムの他の箇所へと提供出来る（ＵＮＬＯＡＤ処理において）ことを意味している。
【００６８】
ＡＬＵ履歴ＦＩＦＯ６９は４つの制御信号を持つ。これらの１つはＲＥＳＥＴ信号７９であり、その作用は（内部）ＦＩＦＯロードポインタ及び（内部）ＦＩＦＯアンロードポインタを開始値に設定し、そして恐らくは全ての内容を消去することである。また、ＬＯＡＤ信号８１は、８つの結合するレジスタ７１〜７８の内容をそれぞれに対応するＦＩＦＯ区分へとロードし、ＦＩＦＯロードポインタを増分させる信号である。更にＵＮＬＯＡＤ信号１０７は、一番先にロードされた値をＦＩＦＯから抜き出し、アンロードポインタの値を増分させる信号である。この抜き出し先はリングバス８５であり、そこから中間地点、又は最終的な宛先へと送信される。リングバスへと直接アンロードするかわりに、値を専用の保持レジスタ（図示せず）中へと格納しても良く、その場合は必要に応じて格納された内容をここからリングバスへと送る、或いは専用経路を介してＡＬＵレジスタへと迅速に戻すことが出来る。このような構成により、プログラム制御下においてこれらのＡＬＵレジスタの値の検分（必要であれば）及び回復が可能となる。アンロード処理においては、リングバス幅よりも多数のビットが取り扱われることになる。この状況は、最初に接続する専用保持レジスタ（例えば高速なもの）へとアンロードを行い、その後に保持レジスタの内容をリングバスへとスタガ方式で送信することで対処することが出来る。アンロード処理がデータ廃棄に限られている場合、これに対するスタガ処理は省くことが出来る。
【００６９】
もう１つのＦＩＦＯ制御信号は、ＦＵＬＬ８０である。これは、ＦＩＦＯ中にアンロードされる場所が無く、更なるロード処理が行われた場合、情報が失われる結果となる（新たなデータによる古いデータのオーバーライト）ことを意味するものである。このような状況は履歴ＦＩＦＯの存在理由に反するものであり、望ましくない。パイプラインに一致する十分な深さのＦＩＦＯを作ったのは、これを防ぐためである。従って、ＦＵＬＬ８０が真の場合は絶対にＬＯＡＤ８１が生成されないように、信号ＦＵＬＬは反転された後、ＬＯＡＤ信号のソースとなった信号（ＰＧＭ＿ＳＴＥＰ８３）とＡＮＤ演算される。このＡＮＤ演算はＡＮＤゲート８２が実施する。
【００７０】
ＡＬＵ履歴ＦＩＦＯの処理を説明する前にもう１つ予備説明を行う。先にも触れたように、パイプラインの深さは常に固定されているわけではなく、特定の必要によって生じたメモリテスタの処理設定に応じて変化するものであり、このような変化はテストプログラムの連続する部分で生じる可能性もある。テストプログラムのロード及び実行に係わる管理ソフトウエアが提供するハウスキーピング機能は、テストプログラムの各区分について、パイプラインの実効深度を認識しておく役割を果たしている（これがわかるのは、このソフトウエアが、テストプログラムが必要とする設定変更を行うために使用されるユティリティ集合のホームでもあるためである）。この値はその管理ソフトウエアにより、最初の時点及びこれに変化が生じた時点でパイプライン深度レジスタ８４ａへと格納される。この値は、信号ＢＥＧＩＮ＿ＨＩＳＴ６８の発生により（この信号はＦＩＦＯ６９もリセットする）、このレジスタからダウンカウンタ１００ａへとコピーされる。
【００７１】
ＢＥＧＩＮ＿ＨＩＳＴ６８は基本的にはテストプログラム中に埋め込まれたフラグであり、２０８ビット命令語中の１ビットフィールドとして表されている。ＢＥＧＩＮ＿ＨＩＳＴ６８は、これが属する命令語、又はその次の命令語が、後に検分されるエラーフラグ（ＰＤ＿ＥＲＲＯＲ９０）が真であった場合にＡＬＵ履歴ＦＩＦＯ６９が後に指し示すべきプログラム中の位置であることを意味する。また、これを別の側面から解釈すると、「以前の履歴が破棄され、新たに開始する準備が整っている」ことを表している。従ってテストプログラムのこの位置でＢＥＧＩＮ＿ＨＩＳＴ６８が発生し、ＦＩＦＯ６９がリセットされ、レジスタ８４ａからダウンカウンタ１００ａへと実効パイプライン深度がロードされることになる（もう１つのダウンカウンタ１００ｂもパイプライン深度レジスタ＃２からロードされるが、これについては後述する）。
【００７２】
ここで、プログラムＳＲＡＭ２０からの更なる命令がフェッチされ、実行されるに従って、対応する信号ＰＧＭ＿ＳＴＥＰ８３が生じる。そしてこれらの信号ＰＧＭ＿ＳＴＥＰに対応してＦＩＦＯへのＬＯＡＤ８１のインスタンス（この時点でＦＩＦＯには未だ充分な空きがある）及びダウンカウンタ１００ａの減分インスタンス（ＰＧＭ＿ＳＴＥＰ８３はダウンカウンタ１００ａ及び１００ｂのＣＯＵＮＴ端子へと送られる）が発生する。ダウンカウンタ１００ａのカウントは最終的にゼロとなるが、この状態はダウンカウンタ１００ａに接続するＣＯＵＮＴ＃１＝Ｚｅｒｏ回路１０１ａからの出力により表示される。この状態は、実効パイプライン深度に到達したこと、そして以降はＦＩＦＯ６９中のエントリ数を増やすことを止め、ＦＩＦＯの使用深度を一定に維持すべきことを意味する。このように、ＰＤ＿ＥＲＲＯＲが出現した場合、ＦＩＦＯの「ＦＯ」端にあるものが所要のデータとなるのである。
【００７３】
ＰＤ＿ＥＲＲＯＲ９０のインスタンスが発生していない間は、ＦＩＦＯにおいて新たな値のロードが生じる毎に一回づつのアンロード処理を行っても安全である（履歴ＦＩＦＯ６９のＦＯ端が異なる値集合で埋められることになる）。この状況は、ＢＥＧＩＮ＿ＨＩＳＴ信号が早い時点で生じた、或いはそれがＰＤ＿ＥＲＲＯＲが未だに生じていないことを意味する（実際、全く生じない場合もある）。ロード／アンロード処理は、ＦＩＦＯがいずれの時点においても一杯にならないようにするものである。ここでＵＮＬＯＡＤ１０７がどのように生成されるのかについて説明する必要がある。
【００７４】
１ビットの履歴モードラッチ１０５が存在し、これをリングバス８５を介して設定することが出来る。それは、ここで説明している全ての履歴ＦＩＦＯ制御を有効化しようとすることを意味する。ＡＬＵ履歴モードラッチ１０５には、これもＢＥＧＩＮ＿ＨＩＳＴ８３によりリセットされるセット／リセットラッチ９８が接続している。ＡＬＵ履歴モードラッチ１０５が設定されている間は、信号ＰＤ＿ＥＲＲＯＲ９０が生じた場合に必ずこのラッチ９８が設定される。これはＡＮＤゲート８６により実施される。
【００７５】
話を元に戻すが、ＦＩＦＯ６９がアンロードされる度に新たな命令のフェッチ（ＰＧＭ＿ＳＴＥＰ８３）が発生し、Ｃｏｕｎｔ＃１＝Ｚｅｒｏ回路１０１ａが現時点でＦＩＦＯ６９がパイプラインの実効深度に及んでいること（カウントがゼロ）、そしてＰＤ＿ＥＲＲＯＲのインスタンスが未だ発生していないことを示す。ＰＤ＿ＥＲＲＯＲのインスタンスが全く発生しないことも考えられるが、ここではいずれそれが発生することを前提に説明する。ここでラッチ９８のＱ出力が設定され（信号ＦＲＥＥＺＥ＿ＨＩＳＴ９９）、その反転がＡＮＤゲート１０６の入力に生じた場合、更なるＵＮＬＯＡＤ信号１０７は生成されなくなる。この時点でレジスタ７１〜７８への値となるべき対象を捕捉したことになる。これらは次のアンロード処理の実施により取得されることになる（恐らくは何らかのソフトウエアが実行し得た時点で取得されることになる；図示はしていないが、そのソフトウエアが所望の値を取得するためにリングバス等へのアンロードを強制することも出来る）。ここで更にＬＯＡＤ処理をディスエーブルすることが推奨されていないことに疑問を持つ向きもあるだろう。そうすることは可能ではあるが、信号ＦＵＬＬ８０がＬＯＡＤの生成を止めている（ＡＮＤゲート８２により実施される）限りは、どちらでも良いのである。
【００７６】
更に、ＰＤ＿ＥＲＲＯＲがＣｏｕｎｔ＃１＝Ｚｅｒｏ以前に発生した場合にどうなるか、という疑問も生じるかも知れない。これは重要な疑問である。そしてその答えは、「そのような事態が起きるはずが無い、起きてはならない」である。万が一起きてしまったとしたら履歴モードラッチ１０５の設定及び、ＰＤ＿ＥＲＲＯＲ９０を生成（またはリセット）するためのポストデコード回路６０の設定において、ＢＥＧＩＮ＿ＨＩＳＴインスタンス（テストプログラム中に起点がある）の用法を誤っている場合が考えられる。この状況は、括弧式のネスティングや重複を不可能にするシステム中の不整合括弧を探すコンパイラに通じるものがある（結局のところ、履歴ＦＩＦＯは１セットしかないのである）。
【００７７】
ここに、先に存在していたプログラム位置とエラーフラグの状態との対応付けを行うためのＡＬＵ履歴ＦＩＦＯ機構が提供されたが、これに本来の意図とは異なる更なる目的を付け加えたい。それは、この素晴らしい機構の目的を、ＰＤ＿ＥＲＲＯＲ発生時におけるＡＬＵ条件の回復だけに限定することはないのではないか、という考えに基づく。ＡＬＵ履歴ＦＩＦＯはパイプラインに一致する遅延を含んでいる。そのことを利用して、対応する命令がフェッチ及び実行された後のパイプライン遅延を経た時点であるエラー発生時（又は後）におけるエラー信号又はフラグの値を正確に試験する方法はないのか。何を意図しているかは既に明らかであろう。このコンテキストにおいて「正確に」と述べたのは、対象とする命令の数サイクル前に起きた何かに起因するエラー信号又はフラグ、即ち早過ぎる時点で生じたエラー信号又はフラグには反応しないという意味である。これは可能である。
【００７８】
ここで対象としているエラー信号又はフラグは、ＦＥＲＲ１１３（機能エラーがあったことを意味する）、ＰＥＲＲ１１４（パラメータエラーがあったことを意味する）及び（ここでもまた）ＰＤ＿ＥＲＲＯＲ９０である。最初の２つの信号がどのように生成されるかについては、組み込まれた「ＭＥＭＯＲＹ  ＴＥＳＴＥＲ  ＴＥＳＴＳ  ＭＵＬＴＩＰＬＥ  ＤＵＴ’Ｓ  ＰＥＲ  ＴＥＳＴ  ＳＩＴＥ」に記載されている。この出願の図５を見ると、ＤＵＴ毎の機能エラー及びパラメータエラー信号がどのように生成されているかがわかる。更に同図６を見ると、各ＤＵＴ関連要素の信号から可能な、様々な組み合わせを示すことが出来るＹＤＦＥ（ＹｅｓＤＵＴ機能エラー）及びＹＤＰＥ（ＹｅｓＤＵＴパラメータエラー）を生成するために、システムがどのように設定することが出来るかが示されている。本願の目的上、ここに示されるＹＤＦＥは本願におけるＦＥＲＲと同じものであり、ＹＤＰＥはＰＥＲＲと同じものである。
【００７９】
ＦＥＲＲ及びＰＥＲＲは、その出現までのパイプライン遅延が同じである場合が多いが、ＰＤ＿ＥＲＲＯＲのパイプライン遅延は異なったものとなる可能性が高い。いずれにしても、パイプライン深度レジスタ＃２（８４ｂ）はＦＥＲＲ及びＰＥＲＲに対して適正な値へと事前に設定され、パイプライン深度レジスタ＃１（８４ａ）はＰＤ＿ＥＲＲＯＲに対して適正な値へと事前に設定される。
【００８０】
テストプログラム中のいずれかの段階において、いずれ上述した信号の１つを発生させることになるかも知れない刺激が印加される。テストプログラムの同じ段階でＢＥＧＩＮ＿ＨＩＳＴ６８が発生する。これによりダウンカウンタ１００ｂへとパイプライン深度がロードされ、プログラムが更なる段階へと進行するに従って（ＰＧＭ＿ＳＴＥＰ８３の連続インスタンス）このカウンタがダウンカウントされて行く。最終的にはＣＯＵＮＴ＃２＝ＺＥＲＯ１１５が真となり（後述する）、これにより２つのＭＵＸ１１０及び１１１による選択が決定する。ＭＵＸ１０９は信号ＣＯＵＮＴ＃１＝ＺＥＲＯ１０８により制御される。
【００８１】
ＦＥＲＲ１１３及びそのＭＵＸ１１１を一例として説明する。他方の対の処理も同じ方法で行われる。ＣＯＵＮＴ＃２＝ＺＥＲＯが偽である限り、ＭＵＸ１１１はその出力として、テストシステムによりエラーの不在状態と関連付けられた電気的値である信号＜ＮＯ＿ＥＲＲＯＲ＞１１６（次アドレス計算器へと送られ、そこでの分岐に用いられる３ビット集合１１２のうちの１ビット）を選択する。ビット集合１１２はクオリファイヤ（qualifier）信号を構成することができる。しかし、パイプライン遅延が経過すると、実際のＦＥＲＲ１１３が何であるのかが問われる。これが行われるのは、ＣＯＵＮＴ＃２＝ＺＥＲＯが真となり、ＭＵＸ１１１が次アドレス計算器１０２へと送るべき値として今度はＦＥＲＲを選択するためである。
【００８２】
ＰＥＲＲでの分岐もＦＥＲＲの場合と同様に起きるものであるが、ここではＭＵＸ１１０が使用される。ＰＤ＿ＥＲＲＯＲ９０での分岐様式も他の２つの場合と同様であるが、唯一の相違点は、これがＡＬＵ履歴ＦＩＦＯ（パイプライン深度レジスタ＃１（８４ａ））での遅延を含むが、共用されているダウンカウンタ＃１（１００ａ）が送出する信号ＣＯＵＮＴ＃１＝ＺＥＲＯ１０８により制御される独自のＭＵＸ１０９を持っているという点である。
【００８３】
間違いの無いように触れておくが、テストプログラムはこの利点を正しく利用出来る方法で書かれていなければならない（例えば固定ではあるが充分な遅延のループ等）。しかしながら、少なくとも正しい対応付けは保証される。何らかの障害要因の発生及びこれによる信号設定の変化が起きないように保証されている限り、パイプライン遅延経過後のかなり遅い時点であっても試験を実施することが可能なのである。
【００８４】
他にも有用な履歴ＦＩＦＯが存在する。これらは図４の概略ブロック図（１１７）に示した。これらは概ねＡＬＵ履歴ＦＩＦＯ６９と同様の機能を提供するものであるが、これらはメモリテスタ構造の異なる箇所に配置されており、ＡＬＵ履歴ＦＩＦＯに記憶されるものとは異なる問題の回答を記憶するものであるという点において異なっている。最新の比較エラーデータを記録するためのＦＩＦＯは、これに必要とされる深さが１レベルのみであり、従って実際はＦＩＦＯというより単なるレジスタである。また、バッファメモリの履歴を回復するための２区分ＦＩＦＯもある。これはＥＣＲ履歴を回復するためのもう１つの２区分ＦＩＦＯと共通に制御されている。
【００８５】
以下、図４を参照しながら説明をするが、まず、図左側の部分から説明する。ポストデコード回路６０の一部が図示されているが、これは、図２にも示したように受信ベクトル逆マッパ／デシリアライザ回路５７から３２ビット比較データ５９を受けるものである。この図では、これらの３２ビットが信号ＤＡＴＡ＿ＶＡＬＩＤ１１８に伴われて伝送されていることも示されている。
【００８６】
ポストデコード回路から出力されているのは、ＥＣＲ２（図２の３２Ｂ）へと送られるべき３２ビットの（処理済）エラーデータ及び信号ＤＥＬＡＹＥＤ＿ＤＡＴＡ＿ＶＡＬＩＤ１２８（これらをまとめて符号６１で示した）である。更に、ポストデコード回路はＰＤ＿ＥＲＲＯＲ９０の起点でもあるが、この信号が図３においてＦＲＥＥＺＥ＿ＨＩＳＴ９９を生成するためにＢＥＧＩＮ＿ＨＩＳＴ８３と共にどのように使用されていたかを念頭に置いておきたい。
【００８７】
ＰＤ＿ＥＲＲＯＲを生じるエラーデータ６１の捕捉タスクは比較的単純なものである。通常、ＦＲＥＥＺＥ＿ＨＩＳＴ９９は偽であり、その反転がＡＮＤゲート１２９の入力にある場合、ＤＥＬＹＥＤ＿ＤＡＴＡ＿ＶＡＬＩＤ１２８は最新エラーデータレジスタ１３２のＬＯＡＤ制御入力に送られる信号１３１を生成することが出来る。このレジスタへのデータ入力はＥＣＲ２へと送られている３２ビットエラーデータと全く同じものであり、従って、このようなデータが送られる度にここにも捕捉される。ＰＤ＿ＥＲＲＯＲはＦＲＥＥＺＥ＿ＨＩＳＴ９９を発生させ、ＦＲＥＥＺＥ＿ＨＩＳＴ９９は信号１３１及びレジスタ１３２への更なるロードを止める。最新エラーデータレジスタ１３２はリングバス８５へと接続しているため、その内容を調べることが出来る。
【００８８】
ここでバッファメモリの取り扱いに関わる履歴ＦＩＦＯについて説明する。先にも説明したように、バッファメモリ３１Ａ及び３１Ｂは、予測されるＲＯＭ内容の記憶や、印加アドレスシーケンスの他のシーケンスへの変換等を含む様々な目的に使用することが出来る。いずれの場合においても、ロードされたバッファメモリは、ＡＬＵが生成するＸ、Ｙ及びＺアドレス２７で駆動するアドレスマッパ２９によりアドレス指定される。バッファメモリ履歴ＦＩＦＯは２つ存在し（１２４及び１２５）、各々がメモリバッファの各々に対応している。これらの役割は、ＰＤ＿ＥＲＲＯＲ９０の生成に関係する正確なパイプライン遅延を経たバッファメモリ内容を提供することである。これらの２つのＦＩＦＯとは、バッファメモリ３１Ａに結合するバッファメモリ＃１履歴ＦＩＦＯ１２４及びバッファメモリ３１Ｂに結合するバッファメモリ＃２履歴ＦＩＦＯ１２５である。これらの２つのバッファメモリ履歴ＦＩＦＯは同じ深さ（例えば４）を有し、同様に制御され、そしていずれもリングバスへと接続している（直接的に、又は中間レジスタを介して：先に説明したＡＬＵ履歴ＦＩＦＯのリングバスへの接続と同様）。これらは、より大きい履歴ＦＩＦＯ機構１２３の一部であり、この機構にはバッファメモリ履歴ＦＩＦＯを説明した後に触れるＥＣＲ履歴ＦＩＦＯ１２６及び１２７も含まれている。
【００８９】
説明を先に進める前に幾つかの予備説明を付け加える。図には４つのＦＩＦＯ１３３〜１３６が示されているが、これらの出力は図２の６２Ａ〜６２Ｄである。図２からもわかるように、これらの出力はポストデコード回路６０へと送られるものである。しかしここで更に留意しておかなければならない点は、バッファメモリＦＩＦＯ１３３及び１３４への入力が、記憶データ３３及び記憶アドレス３４として更にＡＬＵ−ＤＵＴ（送信ベクトル）パイプラインの一部を構成する回路３５及び３７へも送られているという点である（図２参照）。バッファメモリ用のＦＩＦＯ１３３及び１３４はかなり深く、例えば約３０である。実際に使用する深さは設定可能であるが、その設定法は本願においてはあまり重要ではない。しかしそれらの意義については知っておくことが必要である。実際、バッファメモリ履歴ＦＩＦＯが存在しない場合でもこれらのＦＩＦＯは存在する。その理由はバッファメモリの使用方式にある。これらは、さもなければＡＬＵから来るはずの情報の代替ソースとして作用するものであり、これらの内容（３３、３４）の１コピーはＡＬＵ−ＤＵＴパイプラインで下に向けて送られる。しかし、もう１つのコピーはポストデコード回路へと送ることが出来る。このもう１つのコピーが早過ぎる段階（例えばＤＵＴからの比較データ５９が上に戻されるよりも著しく早い時点）で回路に届いてしまうと支障が出るため、これらのＦＩＦＯ１３３及び１３４は同時に届いたデータが実際に対応したものとなるように、必要な分の遅延を提供しているのである。これらの深さを約３０としたのはそのためである。
【００９０】
ここでバッファメモリ履歴ＦＩＦＯ１２４及び１２５の説明に戻る。その処理の特徴の多くはＡＬＵ履歴ＦＩＦＯ６９と同様である。これらは信号ＢＥＧＩＮ＿ＨＩＳＴ６８によりリセットされ、ＦＩＦＯへと入力されるべき新たな値が存在することを表すが、ＦＵＬＬ（信号１２１）状態ではない場合はＡＮＤ演算（ＡＮＤゲート１１９）されている信号（ＤＡＴＡ＿ＶＡＬＩＤ１１８）によりロード（ＦＩＦＯ１３３及び１３４の出力を介して）される。これらは遅延させたＤＡＴＡ＿ＶＡＬＩＤ（ＤＥＬＡＹＥＤ＿ＤＡＴＡ＿ＶＡＬＩＤ１２８）の処理段階でアンロードされる。２種類のＤＡＴＡ＿ＶＡＬＩＤ間の遅延時間は、基本的にポストデコード回路がエラーが生じたかどうかを判定するまでに要する時間である。エラーが無い場合、ＦＩＦＯをアンロードすることになるが、それが確実となるまでは待たなければならない。
【００９１】
ＦＩＦＯの特徴の違いは、ＦＩＦＯデータの破棄を生じることになる事象（ＰＤ＿ＥＲＲＯＲ９０の発生）が、基本的にＦＩＦＯを通過するデータと同時性（パイプライン遅延により分離されていない状態）を持っているという点である。従って、ここではパイプライン深度レジスタやダウンカウンタ等の助けを必要としない。単に履歴モードラッチ１０５で修飾されたＰＤ＿ＥＲＲＯＲであるＦＲＥＥＺＥ＿ＨＩＳＴ９９が発生した時点でアンロードを停止するだけで充分なのである。従ってＵＮＬＯＡＤ１２２は、ＤＥＬＡＹＥＤ＿ＤＡＴＡ＿ＶＡＬＩＤ１２８及びＦＲＥＥＺＥ＿ＨＩＳＴ９９の反転インスタンスを入力として受けるＡＮＤゲート１３０により生成される。
【００９２】
ＥＣＲ履歴ＦＩＦＯ１２６及び１２７の処理は、制御信号に関する限り、同じである。ＥＣＲがどのように使用されているかがわかっていれば、ここに説明した構成がなぜ有用であるのかは明らかである。図２において、ポストデコード回路６０の周囲にバイパス５９があるが、これはＤＵＴ動作中に実施した試験からの実際のデータを直接ＥＣＲへと送るものである。ＥＣＲ中に記憶されたデータは後から読み出して様々な解析を行うためにポストデコード機構へと印加することが出来る。ここで知りたい事は、「ポストデコード機構へと印加されたデータのどれがＰＤ＿ＥＲＲＯＲを生じたものなのか」である。その答えを提供出来るのがＥＣＲ履歴ＦＩＦＯである。これは局所的な処理であり、長いパイプラインの他の部分は関わっていないため、ＦＩＦＯ１３５及び１３６はこの処理に関しては浅いものであっても良い。
【図面の簡単な説明】
【図１】本発明に基づいて構築された、大幅な再設定が可能で、アルゴリズムにより駆動する不揮発性メモリテスタの概略ブロック図である。
【図２】図１のＤＵＴテスタ６を拡大して示した概略ブロック図である。
【図３】図２の部分拡大図であり、ＡＬＵ履歴ＦＩＦＯ及びこれに関連する制御回路の性質を説明する図である。
【図４】図２の概略ブロック図であり、最新エラーデータレジスタ、バッファメモリ履歴ＦＩＦＯ及びＥＣＲ履歴ＦＩＦＯ及びこれらに関連する制御回路の性質を説明する図である。
【符号の説明】
１４：被試験デバイス（ＤＵＴ）
３２B：エラー捕捉ＲＡＭ
６０：ポストデコード回路
９１〜９８、１２４〜１２７：履歴ＦＩＦＯ
【図１】
0004194799.tif 000002
【図２】
0004194799.tif 000003
【図３】
0004194799.tif 000004
【図４】
0004194799.tif 000005