(57)【要約】データワード（２）シーケンスの所定のビット位置に関連する反復ビット値パターンを、プログラムループ情報から決定することができる。なお、データワード（２）は一ビット順に２つ以上のビットを含み、ビット順中の１つの位置を記述するビット位置は、ビット位置におけるビットの表す値を示し、プログラムループ情報は、データワード（２）シーケンスの更新されたデータワードを決定するためのプログラム表現を含む。所定のビット位置を使用して、所定のビット位置に関連するシーケンス長値（８）を決定する。所定のビット位置に関連する更新されたビット値を得るために、シーケンス長値（８）の示すループ反復数に対してプログラム表現を評価する（６）。ループ反復数の更新されたビット値を使用して、反復ビット値パターンを決定する。【選択図】図１
2011524039.tif 000002
【特許請求の範囲】
【請求項１】
データワード（２）シーケンスの所定のビット位置に関連する反復ビット値パターンを決定する方法であって、前記データワード（２）が一ビット順に２つ以上のビットを含み、前記ビット順中の１つの位置を記述するビット位置が、プログラムループ情報に基づいて前記ビット位置におけるビットの表す値を示し、前記プログラムループ情報（２０２）が、前記データワードシーケンスの更新されたデータワードを決定するためのプログラム表現を含み、前記方法が、
前記所定のビット位置を使用して、前記所定のビット位置に関連するシーケンス長値（８）を決定することと、
前記所定のビット位置に関連する更新されたビット値を得るために、前記シーケンス長値の示すループ反復数に対してプログラム表現を評価すること（６）と、
前記ループ反復数の前記更新されたビット値を使用して、前記反復ビット値パターンを決定すること（１０）と、を含むこと、
を特徴とする方法。
【請求項２】
前記シーケンス長値（８）が、前記データワード（２）によって表すことができ、さらに前記ビット位置におけるビットの表す値より小さい異なる値の数を示すこと、
を特徴とする請求項１に記載の方法。
【請求項３】
前記データワード（２）が数値のバイナリ表現であり、ビット位置ｎにおけるビットのビット値ｘが数値ｘ*２ｎを表すこと、を特徴とする請求項１または２に記載の方法。
【請求項４】
前記シーケンス長値ｌ（８）を以下の式、
（数４）
１＝２ｎ＋１
によって記述できるように決定すること、
を特徴とする請求項３に記載の方法。
【請求項５】
各ループ反復の前記更新されたビット値を連結して、前記反復ビット値パターンを決定すること（１０）、を特徴とする請求項１から４のいずれかに記載の方法。
【請求項６】
前記シーケンス長値の示すループ反復数に対する前記プログラムループ情報に含まれる第２のプログラム表現を評価して、前記所定のビット位置に関連する第２の更新されたビット値を得ることと、
前記第２の更新されたビット値をさらに使用して、前記反復ビット値パターンを決定することと、をさらに含むこと、
を特徴とする先行する請求項のいずれかに記載の方法。
【請求項７】
同一のループ反復において生成された第１の更新されたビットと第２の更新されたビットの対を連結することによって、前記反復ビット値パターンを導出すること、
を特徴とする請求項６に記載の方法。
【請求項８】
前記プログラム表現を評価することが、
前記データワード（２）シーケンスの更新されたデータワードを導出することと、
前記所定の位置に位置する前記データワード（２）の前記ビットのビット値を得ることと、を含むこと、
を特徴とする先行する請求項のいずれかに記載の方法。
【請求項９】
前記プログラムループ情報（２０２）から導出した前記シーケンス長値（８）と反復情報を使用して前記反復ビット値パターンに関連する反復値を導出することをさらに含み、前記反復情報が、前記データワードシーケンスを生成するために実行されるループ反復数を示すこと、
を特徴とする先行する請求項のいずれかに記載の方法。
【請求項１０】
前記反復情報の示す前記ループ反復数を前記シーケンス長値（８）で除算することにより、前記反復値を導出すること、を特徴とする請求項９に記載の方法。
【請求項１１】
前記データワード（２）シーケンスの前記所定のビット位置に関連する前記ビット値パターンの反復表現を生成することをさらに含み、前記データワードシーケンスの前記所定のビット位置の前記ビット値パターンを生成するよう前記反復ビット値パターンを反復する回数を前記反復表現が示すように、前記反復表現が前記反復値及び前記反復ビット値パターンを使用すること、
を特徴とする請求項９または１０に記載の方法。
【請求項１２】
前記反復値の示す反復数をネスト化した反復文に変換することにより、前記反復表現を反復言語表現に変換することをさらに含み、各反復文が関与する表現の単一の反復を示すこと、
を特徴とする請求項９から１１に記載の方法。
【請求項１３】
メモリにアクセスするために前記データワードを使用すること、を特徴とする先行する請求項のいずれかに記載の方法。
【請求項１４】
前記データワードが、アクセスするデータ要素のロウアドレス又はカラムアドレスに関連すること、を特徴とする請求項１３に記載の方法。
【請求項１５】
データワードシーケンスの所定のビット位置に関連する反復ビット値パターンを決定するよう構成したビット値パターン分析手段（２００）であって、前記データワードが一ビット順に２つ以上のビットを含み、前記ビット順中の１つの位置を記述する前記ビット位置が、プログラムループ情報（２０２）に基づいて前記ビット位置におけるビットの表す値を示し、前記プログラムループ情報が、前記データワードシーケンスの更新されたデータワードを決定するためのプログラム表現を含み、前記ビット値パターン分析手段が、
前記所定のビット位置を用いて、前記所定のビット位置に関連するシーケンス長値（２１０）を決定するよう構成したシーケンス評価手段（２０４）と、
前記シーケンス長値（２１０）の示すループ反復数に対するプログラム表現を評価して、前記所定のビット位置に関連する更新されたビット値を得るよう構成した表現評価手段（２０６）と、
前記ループ反復数の前記更新されたビット値を用いて、前記反復ビット値パターンを決定するよう構成したビット値パターン生成手段（２０８）と、を含むこと、
を特徴とするビット値パターン分析手段。
【請求項１６】
コンピュータで実行すると、請求項１から１４に記載の方法のいずれかを実行するよう構成したコンピュータプログラム。
【請求項１７】
データワードシーケンスを受け取るよう構成した２つ以上のデータ端末（２４ａ、２４ｂ）を有するデバイス（２２）をテストするテストシステム（２０）であって、前記データワードが一ビット順に２つ以上のビットを含み、前記ビット順中の１つの位置を記述するビット位置が、前記ビット位置におけるビットの表す値を示し、前記テストシステム（２０）が、前記デバイス（２２）の第１データ端末及び第２データ端末（２４ａ、２４ｂ）に連結するよう構成した第１データピン及び第２データピン（２６ａ、２６ｂ）を含み、前記テストシステムが、
プログラムループ情報に基づいて、所定のデータピンに関連する反復ビット値パターンを決定するよう構成したビット値パターン分析手段（３０）を含み、前記プログラムループ情報が前記データワードシーケンスの更新されたデータワードを決定するためのプログラム表現を含み、前記ビット値パターン分析手段（３０）が、
前記所定のデータピンに関連する前記所定のビット位置を用いて、前記所定のデータピンに関連するシーケンス長値を決定するよう構成したシーケンス評価手段（２０４）と、
前記シーケンス長値の示すループ反復数に対するプログラム表現を評価して、前記所定のデータピンに関連する更新されたビット値を得るよう構成した表現評価手段（２０６）と、
前記ループ反復数の前記更新されたビット値を用いて、前記所定のデータピンに対する前記反復ビット値パターンを決定するビット値パターン生成手段（２０８）と、を含むこと、
を特徴とするテストシステム。
【請求項１８】
メモリデバイスをテストするよう適応させたこと、を特徴とする請求項１７に記載のテストシステム。
【請求項１９】
メモリデバイスのアドレス端末に連結するよう前記所定のデータピンを構成したこと、を特徴とする請求項１８に記載にテストシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、反復ビット値パターンを決定する方法及び装置に関し、詳細には、データワードシーケンス中の所定の位置のビットに対する反復ビット値パターンを決定する概念に関する。なお反復ビット値パターンは、データワードにおいて実行されるプログラム表現又は演算によって生成され、プログラム表現又は演算は、データワードの複数のビットの内容を変更又は更新する。
【背景技術】
【０００２】
データワードに作用する演算又は高レベルプログラミング言語によって生じる特定ビットのデータワードに対する反復ビット値パターンを導出することは、幅広い分野の用途で必要となり得る。例えばＣ又はＣ++のような高レベルプログラミング言語の表現の結果を効率的に格納するのに、これが必要となる場合がある。例えばプログラムループを評価する場合に、８ビットのデータワードの第２ビットは一定である場合もあれば、反復パターンで変わる場合もある。ビットは０から１まで反復的にその値を変え得る。格納の効率に関しては、データワードのビット毎にループの評価結果のビットシーケンスを別々に格納する際に、例えば例示的に第２ビットに対しては、ビットシーケンス“０１”が所定の回数反復されることを示すアルゴリズムで、完全な結果を格納することが適切であり得る。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Klaus-Dieter Hilliges及びJens Sundermann著“A True Test Processor Per-Pin Algorithmic Pattern Generator”，１９９６
【発明の概要】
【発明が解決しようとする課題】
【０００４】
代替的用途として、例えばメモリデバイスのような電気デバイスのテストがある。現在利用可能な電気装置又はメモリは高速であるため、デバイスの最大処理能力でテストを行なうべく、デバイスの個々のデータ端末を残りのデータ端末とは別に処理することが必要であり得る。例えばこれは、多数のデータ端末を含む最先端のメモリデバイスをテストする場合に当てはまる。各データ端末がメモリテスト装置又はテストシステムの個々のテストピンに接続する場合、各テストピンにはそれ自体のプログラムロジックがあり、それぞれ個別のテストピンにおいて生じるビットパターンを導出する必要がある。テストプログラムがますます複雑になる中、所定のテスト又はデータピンに関連する反復ビット値パターンを決定し、プログラムの過程において必要な反復数を示すアルゴリズム的記述によって、反復ビット値パターンを一度格納するだけでよいとなれば、これは非常に望ましいことである。
【０００５】
例えば、ＩＥＥＥの出版物である非特許文献１に記載のような、反復ビット値パターンを決定するための従来の方法は、プログラムの生成するビットストリームにおける反復性を検索するために、まずプログラムの表現全てを評価することを提唱する。しかし、これには反復する可能性のあるビットシーケンスを抽出する前に完全なプログラムを算定することが必要であり、時間と資源を非常に消費する。
【０００６】
さらに、この方法には反復する可能性のあるビット値パターンの長さに関する制約がない。そのため、プログラムを完全に処理することによって生成するビットストリームにおいて反復ビット値パターンを検索することにも、任意のビットパターン長を考慮する必要があるため、極めて時間がかかる。
【０００７】
さらにこれらの方法は評価するビットストリームを特殊なデータ構造内で体系化すること、例えばそれらデータ構造において特定の対称演算を実行することによって反復ビット値パターンを決定することを試行する。例えば前記の文献もこの方法に依るものである。しかし、対称演算の適用には多くの資源が必要となるため、実時間処理は他の従来の試みと同様に不適である。
【０００８】
そのため、より一層効率的に反復ビット値パターンを決定する方法及び装置を提供することが必要である。
【課題を解決するための手段】
【０００９】
本発明のいくつかの実施形態によれば、プログラム内のプログラム表現を評価する前に所定のビット位置に関連するシーケンス長値を算出するという点で、データワード内の所定のビット位置に対する反復ビット値パターンを非常に効率的に決定することができる。シーケンス長値は、対象とするビット位置において生じるビット値パターンの最大反復長に関する情報を有する。
【００１０】
一部の実施形態によれば、シーケンス長値はそれぞれのビット位置において生じ得る反復ビット値パターンの最大長であるということにおいて、上限ということになる。更なる実施形態によれば、シーケンス長値は上限であるだけでなく、生じる反復ビット値パターンを正確に予測するものである。
【００１１】
少なくとも、シーケンス長値の示す上限が分かれば、反復ビット値パターンを決定するプログラム表現については、シーケンス長値の示す回数を評価するだけでよい。即ち、反復ビット値パターンを決定することにおいて、一定の回数の評価を行なうだけでよい。このことにより、反復ビット値パターンの決定に要する処理力を大幅に削減することになる。
【００１２】
換言すれば、所定のビット位置に関連する更新ビット値を得るためにシーケンス長値の示すループ反復数に対してのみ、ビット値を変更するプログラム表現を評価することによって、反復ビット値パターンを生成することができる。
【００１３】
更なる実施形態によれば、対称とする特定のビット位置を有するデータワードを、一ループ反復内で数回アクセスし、変更する。それらの実施形態では、シーケンス長値が示す数だけループ反復内の各表現を評価して、反復ビット値パターンを決定する。これは各反復中に決定した更新ビット値の連結を含み得る。
【００１４】
反復ビットパターンを決定すれば、分析したループ情報から得られるビット値パターン又は表現を効率的に格納又は伝送することができる。例えば、プログラム言語（高レベルプログラム言語）を、反復ビット値パターンと特定の反復ビット値パターンの反復数を示す付加的命令を含む、より低レベルの記述（反復言語表現又は反復表現）に変換することができる。
【００１５】
本発明のいくつかの実施形態によれば、テストシステムの特定のテスト若しくはデータピンに適用される反復ビット値パターンを、高レベルのプログラム表現に基づいて決定し、これを多数のデータピンに並列に影響させる。メモリデバイス、チップ、又はモジュールへのアクセススケジュールは、高レベルのプログラム言語を用いて定義することが多い。メモリデバイスを制御するのに必要なビットシーケンス又はビット値パターンは、反復ビット値パターンと各反復ビット値パターンの反復数を示す関連情報に関して記述され得る。
【図面の簡単な説明】
【００１６】
【図１】反復ビット値パターンを決定する方法のフローチャートである。
【図２】デバイスをテストするテストシステムを示す図である。
【図３】高レベルプログラム図式を示す図である。
【図４】高レベルプログラム言語から反復ビット値パターンを決定する方式を示すブロック図である。
【図５】ビット値パターンを反復言語で示す構文要素を視角化したものを示す図である。
【図６】プログラムループ内のプログラム表現によって生成された反復ビット値パターンの一例を示す図である。
【図７】反復ビット値パターン分析手段の一実施形態を示す図である。
【発明を実施するための形態】
【００１７】
以下、添付図面を参照して本発明のいくつかの実施形態をより詳細に記載する。
【００１８】
以下、本発明の実施形態を記載するが、該実施形態では、テストシステムの複数のテストピンに接続したメモリチップ、モジュール、又はデバイスをテストするための高レベルメモリテスト言語を分析するデータワード又はデータワードシーケンス内の所定のビット位置に対する反復ビット値パターンを決定する。メモリデバイスの各データ端末は、１つの特定のテストピン（データピン）に接続すると想定する。ここでは種々の可能な用途のうちの１つ、即ちメモリデバイスのテストに焦点を当てて本発明の概念を記載する。しかしすでに上述したように、本発明の更なる実施形態を使用して、例えばＣ、Ｃ++、フォートラン、モジュラ２、パール、フィトン、ベーシック、ビジュアルベーシック、 ジャバ、ジャバスクリプト、又はその他の高レベルプログラミング言語等のその他の標準的プログラミング言語の生成する反復ビット値パターンを導出若しくは決定することができる。
【００１９】
図１は、データワードシーケンスの所定のビット位置に関連する反復ビット値パターンを決定する方法を示すブロック図であり、該データワードは一ビット順中に２つ以上のビットを含み、ビット順内の１つの位置を示すビット位置は、プログラムループ情報に基づいたビット位置におけるビットの示す値を示し、プログラムループ情報は、データワードシーケンスの更新したデータワードを決定するためのプログラム表現を含む。
【００２０】
すなわち、プログラム表現は例示的なデータワード２に作用してデータワードシーケンスを生成する。この特定の例では、データワードは０から３までのビット位置ｎにおいてビットを４つのみ含む。この特定の例では、標準的なバイナリ表現を選択している。しかし、更なる実施形態では本発明の概念と共にその他の基数を使用してもよい。
【００２１】
例えばビット位置ｎ＝０という所定のビット位置に関連する反復ビット値パターンは、以下のように決定し得る。
【００２２】
例えば、データワード２に影響する表現をどの程度の回数評価するかに関する情報を含むループ情報に基づいて、所定のビット位置（この特定の例ではｎ＝０）に関連するシーケンス長値８を決定する。これは決定ステップ４で行なう。
【００２３】
評価ステップ６では、シーケンス長値８の示すループ反復数に対してプログラム表現を評価する。
【００２４】
以下でより詳細に説明するように、表現が特定の条件を満たす場合、単一の表現により反復ビット値パターンを形成するビット数は、ビット位置ｎにおけるビットに対して最大で２n+1となる。即ち、プログラム表現がデータワード又はビット位置ｎ＝０におけるビットを変更する１つの命令文のみを含む場合には、プログラム表現を二度のみ評価するが、それぞれの評価において所定のビット位置に関連する更新ビット値が決定される。
【００２５】
構成ステップ１０では、ループ反復数の更新ビット値を使用して、反復ビット値パターンを決定する。
【００２６】
シーケンス長値が２である上記例を要約すれば、ループ内の表現を評価するのは二度のみである。即ち、例えばループが１００の反復を有する場合には、ループを１００回評価するという時間のかかる評価を、表現を二度のみ評価するということに減少できる。なぜなら、これが所定のビット位置（ｎ＝０）におけるループ内の単一表現によって生じることのできる反復ビット値パターンの最大長であるためである。従って、完全なループから得られるビットパターンを、ループの表現の第１評価及び第２評価で得たビット値を２５回反復させて記述することができる。反復ビット値パターンの決定における算定の複雑さを減少させ、対象とするビット位置に対して出力される反復ビットパターンを記述若しくは格納する効率を高めることに対して非常に可能性があることを、既にこの単純な例が示している。
【００２７】
図２は、例えば被試験デバイス２２等のデバイスをテストするテストシステム２０の一例を示す。デバイスは例えばデータ端末２４ａ及び２４ｂのような２つ以上のデータ端末を有する。テストシステムは、例えばデータピン２６ａ及び２６ｂのような複数のデータピンを有しており、これらは被試験デバイス２２の２つ以上のデータ端末に連結するよう構成されている。このため、データピンはデータピンを含むテストシステム２０の一部で特定のインタフェースボード２８内にある。柔軟性を高めるために、本発明のテストシステムの更なる実施形態は、互換性のあるインタフェースボード２８を含むことで、異なる被試験デバイスに接続することができる。
【００２８】
被試験デバイス２２のデータ端末２４ａ及び２４ｂは、一ビット順中に２つ以上のビットを含むデータワードを受け取る構成となっており、一ビット順中のビット位置は、ビット位置におけるビットの表す値を示す。即ち、例えばアドレスデータワードのビット０を受け取るようデータピン２４ａを構成し、それぞれのアドレスのビット１を受け取るようデータピン２４ｂを構成し得る。
【００２９】
データピン２６ａ及び２６ｂに対する反復ビット値パターンを決定するために、テストシステム２０は、所定のビット若しくは所定のビット位置に対する反復ビット値パターンを決定するよう適応したビット値パターン分析手段３０をさらに含む。
【００３０】
テストシステム２０を使用してメモリチップ又はメモリデバイスをテストすることができるが、ここで実行するテストアルゴリズム及びテストプログラムは、メモリテスト言語（ＭＴＬ）で開発したものであり、任意のｎビットデバイストランザクション／コマンド／パケット／フレームを支持する全種類の従来の複雑なメモリパターンを定義することに対し、多大な柔軟性と簡便性を提供する。よってメモリテスト言語は、被試験デバイス２２、即ちメモリデバイスの複数のデータ端末に適用するようテストパターンを定義する高レベルのアルゴリズムパターン記述言語であると特徴付けることができる。
【００３１】
例えば、テストプロセッサのパーピンアルゴリズムパターン生成アーキテクチャが、メモリコア並びにメモリインタフェーステストにおいて高速のメモリデバイスをテストすることに対する柔軟性、拡縮可能性、及び精度を提供することから、ベリジー（Verigy）社のテスト装置V93000 HSMシリーズを使用してメモリデバイスをテストすることができる。
【００３２】
さらにV93000 HSMシリーズは、各データピン（テストピン）に対するビットシーケンスを定義するよう使用される低レベルテストプロセッサ言語を提供するが、各データピン（テストピン）はデータを他のテストピンと交換しないよう、ただし当然ながら他のピンと同期するよう操作される。従来の共用資源アーキテクチャと比較したパーピンアーキテクチャの利点の例を挙げる。
−  クロック、アドレス、及びデータ信号に対するＩ、Ｏ、又はＩ／Ｏピンとして使用する際に、任意のチャネルリソース（テストピン２６ａ又は２６ｂ）としてアドレス幅又はデータ幅に制限がないこと。
−  ＡＰＧ多重化を行なう必要なく、即ち共通データバス上で複数のビットに影響する命令を分配する必要なく、テストを行なう速度。
−  任意のNビットプロトコルを支持する任意のメモリアクセスモードに対して使用できること。
【００３３】
各ピンに対するビット演算を特定するために、V93000 HSMシリーズは、以下でより詳述するように、限られた数の言語要素のみを有する反復言語を提供する。
【００３４】
ＭＴＬ言語及びパーピンアーキテクチャの多大な柔軟性により、図３で示すように、ＭＴＬセットアップは異なるセットアップ構成要素を含む。
【００３５】
最も重要なものはＭＴＬプログラムファイル５０自体であり、これはメモリデバイス又はモジュール上で実行される演算を定義するプログラム表現を含んでいる。メモリパターン記述、メモリデバイス関連情報、並びに波形及びピン変換テーブル等のその他のセットアップ関連情報を含む更なるセットアップ要素は、高レベル並列表現及び演算をテストシステムのデータピンに関連する個々のビットのビットパターンにマッピングするために必要である。
【００３６】
主要なファイルは、ＡＰＧパターンファイル５２、デバイスアーキテクチャファイル５４、デバイスアクセス定義を含むデバイスアクセスファイル５６、さらには前述のＭＴＬプログラムファイル５０自体であり、このＭＴＬプログラムファイル５０は、ルーチンコール、ループ、変数、演算、並びにデバイスアクセスコールを使用するアルゴリズムパターン記述を含む。更なるセットアップ関連ファイル５８内には補助的な情報がさらに含まれ得る。
【００３７】
メモリテスト言語ＭＴＬは、他の高レベルプログラム言語でも使用される表現に類似した構文要素及び構造を含む。
【００３８】
詳細には、メモリパターンを定義するすべてのＭＴＬプログラムは、ルーチンを呼び出すメイン( )を有していなければならない。一般にＭＴＬルーチンには戻り値がない。メイン( )ルーチンは、デバイス中心視点を用いるアルゴリズムピン並列メモリパターンを記述する。テストプロセッサパーピンＡＰＧアーキテクチャはユーザに対して透過的である。ユーザはループ、サブルーチン又はデバイスアクセスコールと非常に柔軟な表現エンジンの組み合わせを使用して、従来の又は複雑なメモリパターンを定義することができる。ループカウンタは通常メモリアドレスを指定するが、これを算術演算子及びビット演算子と組み合わせて用いることで、幅広いアドレスステップシーケンス及びデータシーケンスを定義することができる。
【００３９】
さらにＭＴＬがサブルーチンを定義することで、組分け関連データ、デバイスアクセスコール、又はメモリパターン記述を再利用可能なパーツ又は機能（サブルーチン）に組織化する、その他のサブルーチンコールに対するメカニズムが提供される。以下のプログラムの例は、メインループといくつかのサブルーチンを含んでおり、例えばループ文及びサブルーチンコール等の前掲の構文要素の一部を使用している。
main()
{
WriteBackground(data);
}
// Write Background subroutine − fast row stepping
WriteBackground(data)
{
for (bank = bankStart; bank < bankStop; bank++)
{
for (row = rowStart; row < rowStop; row++) {
Activate(row, bank);
Idle(tRCD);
// WRITE burst with write preamble
Write_Preamb();
for (col = colStart; col < colStop; col += BurstLength)
{
Write(row, col, bank, data);
}
Idle(tWR);
Precharge(bank);
Idle(tRP);
}
}
// Activate subroutine
Activate(row, bank);
{
// Device Access Calls
CLK();  CTRL(1,1);  ACT(row, bank);   DBUS_IDLE();
}
# ACT - Bank Activate
:apgAccess:
{
:name:  ACT
:interface: {  row bank  }
:table:
{
:format:
{ :pin:               :states:     :data:                   }
{  CKE                {  0   1  }    1                        }
{  ""                 {  0   1  }    1                        }
{  CSn                {  0   1  }    0                        }
{  ""                 {  0   1  }    1                        }
{  RASn               {  0   1  }    0                        }
{  ""                 {  0   1  }    1                        }
{  CASn               {  0   1  }    1                        }
{  ""                 {  0   1  }    1                        }
{  WEn                {  0   1  }    1                        }
{  ""                 {  0   1  }    1                        }
{  Bank.ACT.Bank    {  0   1  }    zaddr(bank)            }
{  ""                 {  0   1  }    zaddr(ALL_ONES_BANK) }
{  Address.ACT.Row  {  0   1  }    xaddr(row)        }
{  ""                  {  0   1  }    xaddr(ALL_ONES_ADDR) }
} 
}
【００４０】
反復ビット値パターン決定のための１つの特定の基礎をなすＭＴＬ言語は多数の構文要素を含み、２つ以上のビットを有するデータワードにおいてビット演算又は表現の作成を行って、所定順の２つ以上のビットの形成するデータエンティティに作用する。利用可能な構文要素の一部を以下に簡単に紹介する。
【００４１】
ＭＴＬは、ループ変数又は非ループ変数において実行し得る非常に多様な算術演算子及びビット演算子を提供する。ＭＴＬは、ＡＰＧパターンファイル若しくはデバイスアーキテクチャファイルで定義されるグローバル定数変数(Global constant variable)、ローカル静的変数(local static variable)、及びＭＴＬプログラムファイルで定義されるループ変数（loop variable）という３つの異なるタイプの変数の間で異なる。ローカル静的変数は２つのカテゴリーに入る：誘導変数（induction variable）とループ不変変数（loop-invariant variable）である。誘導変数はすべてのループ反復において一定量増加又は減少する、又は別の誘導変数の一次関数である。あらゆるタイプの変数と共に使用できるすべての演算子を以下の表に示す。
【００４２】
【表１】
2011524039.tif 000003
【００４３】
ローカル静的変数と共に使用できる演算子を以下の表に示す。これらの演算子をループ内のローカル静的変数で使用すると、前記変数は誘導変数となる。
【００４４】
【表２】
2011524039.tif 000004
【００４５】
前掲の構文要素を使用する一例のコードを以下に示す：
main()
{
static_variable = 2;
induction_variable = 0;
for (x = xStart; x < xStop; x++)
{
// Induction Variables get increased in each loop-iteration（各ループ反復において誘導変数を増分する）
induction_variable += 2;
// Expression can contain different types of variables（表現は異なるタイプの変数を含むことができる）
access_call(induction_variable + (x << 3));
access_call(static_variable * x + induction_variable + CONSTANT_VARIABLE);
}
}
【００４６】
なお、前述の例では、forループ内のいずれかのアクセスコールにより、試験対象のメモリアレイの特定のカラム又はロウにアクセスすることができる。この状態でアクセスしたアドレスがループ変数及び／又は誘導変数に依存する場合には、被試験デバイスの関連するカラムアドレス端末又はロウアドレス端末におけるビットが変更される。即ち、アクセスコール命令によってアクセス又は変更されたデータワードのビットを変えることができる。
【００４７】
さらにビットの変更は、ループ条件を満たす限り何度も生じる。本発明の概念を実施すれば、シーケンス長値を決定することによって、上記文の作成する反復ビット値パターンを導出することができるが、このシーケンス長値は、反復アクセスコールによってアクセスされるアドレスを格納するデータワードの選択されたビットに対する反復ビット値パターンのシーケンス長を示す。シーケンス長値が分かれば、反復ビット値パターンの示す回数だけループ内の表現を評価することにより、反復ビット値パターンを導出することができる。即ち、ビット値により得られるパターンは、ループ条件の示す回数だけループを処理する場合と同じである。ループを繰り返す回数は、ループ情報中に含まれる反復情報（例えばfor文に続く文中に含まれる情報）によって求められる。
【００４８】
例えば、位置ｎ＝０におけるビットの反復ビット値パターンのみを対象とする場合には、forループ中の表現を評価するだけでよい。
【００４９】
換言すれば、本発明の概念の特に魅力的な１つの用途は、ＭＴＬ等の高レベルプログラム言語中のループ文により生じる反復ビット値パターンを決定することである。
【００５０】
ＭＴＬは、for文を用いて通常のループを定義する方法を提供する：
for (init-statement; end-condition; increment) {statements }
【００５１】
forループのインクリメントは、任意の正又は負の数であってよく、別のループ変数又は誘導変数に依存してはならない。
【００５２】
多数のネスト化したforループを用いてメモリデバイス内のすべてのメモリセルにアクセスする更なる一例を以下に示す。
main()
{
for (bank = bankStart; bank < bankStop; bank++)
{
for (col = colStart; col < colStop; col += BurstLength)
{
for (row = rowStart; row < rowStop; row++)
{
Activate(row, bank);
Idle(tRCD);
Read(row, col, bank, data);
// Read to Write latency:
Idle(CL + tCCD + 2 - CWL -5); 
// WRITE burst with inverted data
Write_Preamb();
Write(row, col, bank, 〜data);
Idle(tWR);
Precharge(bank);
Idle(tRP);
}
}
}
}
【００５３】
典型的なメモリテスト状況では、例えば被試験デバイスのアドレスラインに関連する又は接続したピンのような単一のピンは、高レベルの反復性を示す。即ちそれらのピンは多くの場合、何度も反復される特定の反復ビット値パターンを含むビット値パターンを示す。上述のように、かかる反復ビット値パターンを決定する際の１つの課題は、ループ変数若しくは誘導変数（例えばアドレスに対するループカウンタ）を含む、関連するデータワード（ベクトル）がビット表現又はプログラム表現に依存する際に、反復性、即ち反復ビット値パターンの長さを決定することである。
【００５４】
例えばテストシステム２０を使用した上記のテストという設定では、例えば図４で示すようにデータワードシーケンスの所定のビット位置に関連する反復ビット値パターンを決定する方法を実行するＭＴＬ変換を用いることができる。ＭＴＬ変換手段１００は、反復ビット値パターンを決定する方法を実行してＭＴＬプログラムコード１０４を反復言語表現１０６に変換するコア変換手段１０２を含み、前記反復言語表現１０６は、反復ビット値パターンと、例えば特定のピン若しくは特定のビット位置において反復ビット値パターンが反復される回数を示す関連情報を含む。
【００５５】
ＭＴＬコア変換手段は、事前に多項式に基づいて、即ち全てのループ反復を実行することなく、反復ビットシーケンス長を算出する方法を提供する。反復ビットシーケンス長（シーケンス長値）は、ピン又はビット位置に対する反復ビットシーケンス（反復ビット値パターン）を作成するのに必要な最大数の評価を示すが、ここではループinit文、ループ条件、及びループインクリメントを考慮する。導出した反復ビットシーケンス（反復ビット値パターン）を、任意にバイナリループ分割ツリー（ＬＳＴ）に変換し得る。ループ分割ツリーは、反復言語の限られた数の構文要素を視覚化して、反復言語中のメモリテスト言語評価の結果を視覚化する。これにより、テストシステムのデータピンに関連したテストプロセッサの反復言語に対してforループが如何にマッピングされるかに関する変換規則が定義される。
【００５６】
各個別のピン又はテストピンに対する反復言語中のプログラムの表現が作成されると、テストプロセッサオブジェクトコード１１０がさらに作成され、各テストピンに関連するテストプロセッサに順にロードされる。これにより、テストプロセッサが操作を実行するのに必要な情報が提供される。ただし代替的実施形態では、テストプロセッサは直接反復言語表現を実行するよう動作することもできる。
【００５７】
図５はforループをネスト化した反復文に如何に変換できるかに関する規則を定義する、ループ分割ツリーの要素を視覚化したものを示す。ループ分割ツリーは３つの主な要素、即ち反復ノード１２０、分割ノード１２２、並びに終了ノード１２４ａ及び１２４ｂを含む。反復ノードは子を１つ有するが、これは先に定義した３つの要素のいずかであり得、空であってはならない。反復ノード１２２はツリーの後続ノードすべての反復を表す、即ちすべての後続ノードは二度実行される。分割ノードは子を２つ有し、それらを左の子１２６ａ、右の子１２６ｂとする。両方の子は、左の子ノード１２６ａで始まるノードシーケンスを定義する。それらのレベルは同数でなければならず、またそれらは３つのノードのいずれかであり得るが、この場合もまた空であってはならない。終了ノード１２４ａと１２４ｂは子を有さない葉ノードである。バイナリ表記での終了ノードの値は「０」又は「１」であり得る。
【００５８】
構文要素の示す反復の最大数は２であるが、それぞれのループが２より多い反復を有する際には、ループ分割ツリーの示すループのすべての反復を満たすために、更なる反復ノードが追加される。
【００５９】
要約すると、前述のメモリテストという設定で使用するＭＴＬ変換手段１００は、高レベルのピン並列記述をパーピンＡＰＧプログラムに変換しながら、以下のステップを実行し得る：
・データピン毎に、アルゴリズムメモリパターン記述をこのピンに関連するすべてのデバイスアクセスコールに減少する。
・変数の決定と、すべての定数式の評価。ループ外で定義されるデバイスアクセス定義の定数式は、このデバイスアクセスのビットを表すベクトルに直接変換することができる。
・定数式がループ内のピンに割り当てられる場合には、ＭＴＬ変換手段は定義したピンに対応するビットを反復言語に直接マッピングする。ピンに割り当てた式がループ変数若しくは誘導変数に依存する場合には、ピンのベクトルデータに関与する表現の特定ビットの反復性を決定しなければならない。表現の結果をデータ又はアドレススクランブルマクロに引数として渡す場合には、定義できるビット単位のブーリアン型スクランブル表現を考慮しなければならない。全ループ範囲をカバーする特定ビットを示す反復シーケンスを作成した後、ＭＴＬ変換手段はこのシーケンスをバイナリループ分割ツリー（ＬＳＴ）に変換する。
・ＬＳＴと最小のビットシーケンスに基づいてすべてのforループを反復言語に変換する。
・反復言語プログラムをベクトルメモリにロードされるオブジェクトコードに変換する。
【００６０】
性能とパーピンベクトルメモリ消費に関してＭＴＬ変換手段を最適化することができる。このアプローチは生成テストプログラムに使用するコンプレックスコア及びインタフェーステストパターンだけでなく、デバイス特性化に使用されるメモリパターンにも適用できる。
【００６１】
関連するプログラムループをシーケンス長値の示す回数だけ評価することによって反復ビット値パターンを決定する方法は、編集時間とベクトルメモリ消費を増加させることなく現在の高速メモリデバイスアーキテクチャをテストするのに必要な柔軟性を提供する。各個別のピンに関連するテストプロセッサにおいてテストプログラムを実行し始める前に、許容できない程の時間待機する必要もなくテストを実行することができる。この目的を達成するために、ＭＴＬ変換手段のコア変換アルゴリズムは現行ピンに対するループinit文、終了条件、及びループを含む表現から反復シーケンス長を計算し、変換手段はＭＴＬプログラムファイル若しくはデバイスアクセス定義において特定できる多項式を評価することによって、反復ビットシーケンスを作成する。
【００６２】
ループが複数のアクセスを含む場合には、各アクセスに対する個々のＬＳＴを結合させて、そのループに対して可能な限り最小の反復ビットシーケンスをループに表現させる。ネスト化したforループは、最も外側のループから最も内側のループへと処理される。
【００６３】
先に定義したように、反復ビットシーケンス長はピンの示す特定ビットに依存する。反復ビットシーケンス長を計算する一般方程式は、以下を満たす多項式関数に対して２(n+1)となる。
（数１）
f(x) = anxn + an-1xn-1 + … + a2x2 + a1x + a0
ここでnは特定のビットを示す。
【００６４】
標準的なバイナリ表現に依るビット順に４つのビットを有するデータワードに基づいた以下の例では、反復ビット値パターンを決定する方法の応用について詳述する。データワードの示すメモリアドレスｘへのアクセスコールを含む以下のループ文に対して評価を行う：
for (x=0; x < 128; x+=7)
{
access_call(x);
}
【００６５】
ループ変数‘ｘ’はパラメータとしてデバイスアクセスに渡される。ｘのビット‘０’に対する反復シーケンス長は２(0+1)と計算して２となる。ここでＭＴＬ変換手段は、ループの最初の２つの反復を評価し、ビット‘０’の結果のみを見ることによって、反復ビットシーケンスを構築する。この例では、得られる反復ビットシーケンスはビット‘０’に対して“０１”となる。図６は、ループに対する評価が完了した結果を示し、例えばそれぞれの反復ビット値パターンが４つのビットそれぞれに対して視覚化されている。上で説明したが、シーケンス長値（反復シーケンス長）が示すように、ビット数０は２のシーケンス長を有する。即ち、ビット数０に対する反復ビット値パターンを決定するために、forループを評価するのは二度のみであるが、導出した反復ビット値パターンの反復数は、ループ状態を評価するアルゴリズムによって計算することができる。
【００６６】
残りのビット位置に関連する反復ビット値パターンも図６に示す。要約すると、これら反復ビット値パターンは以下の通りである：
x[0]: n x (“01”)
x[1]: n x (“0110”)
x[2]: n x (“01111000”)
x[3]: n x (“0010101011010101”)
【００６７】
現在利用できるV93000 HSMシリーズテスト装置を使用したメモリテストに本発明の概念を適用することを要約すると、現行及び将来の高速メモリデバイスを高速でテストするのに必要な性能及び精度を達成するには、ＡＰＧパーピンアーキテクチャが必要である。V93000 HSMシリーズの一部としてのメモリテスト言語は、従来のメモリテストパターンのみならず、高速メモリをテストする際に必要となる新しいメモリテストパターンを定義するのに必要な柔軟性を提供する。同時に、言語及びＭＴＬ変換手段は広範囲の用途への活用を可能とする任意のｎビットのデバイスアクセスモードをサポートする。ＭＴＬ言語とＭＴＬ変換手段は今日及び将来の不揮発性メモリデバイスの最も進んだメモリテスト要件にも対応できることが分かった。
【００６８】
先に紹介したＭＴＬ記述に基づいて反復ビット値パターンを得る方法について、いくつかの更なる例を以下に示す。これはループ情報を有する、即ち対応するプログラム表現のそれぞれの評価を行なう構文要素を含む高レベルプログラム記述の一例である。
【００６９】
一般に、プログラムコードは単ループ文を複数有すると共に、ネスト化したループ文、すなわち他のループ文中に生じるループ文を含む。この後示す例はより複雑であり、詳細にはネスト化したループ文を含んでいる。
【００７０】
forループはシンタックスツリーの根からツリーの葉へと再帰的に処理される。反復ビット値パターンを決定する方法を実行する変換手段は、ユーザによる定義又はforループ変換の結果のいずれかでforループがネスト化されている場合に、最も外側のforループを変換することから始めて、その後内側のforループを処理する。分割ツリー（ＬＳＴ）認識が選択された場合には、ＬＳＴが変換規則を定義する。しかし、中間表現としてＬＳＴを構築することなく変換を行なってもよい。ＬＳＴは基礎となるアルゴリズムをより理解するために視覚化したものである。反復及び分割ノードは後述する変換に対して重要であるが、ＬＳＴの葉は、得られるビット反復パターンに寄与することなく分割ツリーの端部を示すだけである。
【００７１】
以下の例ではまずネスト化したforループを処理する概念を簡単に紹介し、その後の例では、ＭＴＬプログラムを完全に処理して、反復ビット値パターンと関連する反復文のみを含むビット値パターンの表現とする。
【００７２】
処理する一例として挙げる以下のプログラムを検討する：
for (x=50;x>0;x-=9){ // defines abs((start-stop)/(step)) +1
// iterations => ((50-0)/-9) +1 = 6
for (y=0;y<64;y+=3){
(x+y)[0];   // sequence for ‘x’ up to the next power-of 2
boundary:
// 2x(2x(EL, ER))
0;  // ‘x’ is NOT used here - ignore
(x*x)[0];   // sequence for ‘x’ up to the next power-of 2
boundary: 
// 2x(2x(EL, ER)) −no other loop variable
// involved, so a bit-value of just ‘0’ or ‘1’ // is sufficient because no further processing
// is necessary here.
(〜y)[0];   // ‘x’ is NOT used here - ignore
}
}
【００７３】
既に定義したように、反復ビット値パターンを決定する方法を実行する変換アルゴリズムは、ループ変数として“ｘ”を含む外側のループ、即ち‘for (x=50;x>0;x-=9) { … }’から処理を始める。以下では、簡明にするためにビット数“０”の反復ビット値パターンを決定する。より高次のビットに対しても反復ビット値パターンを容易に決定することができるが、これについては以下の記述から明らかになるであろう。ビット数０に対するシーケンス長値を計算する際には２(n+1)という式を計算して、シーケンス長値２が得られる。即ち、ビット数０は単式によって生じるそれぞれの反復ビット値パターンの最大長２を有する。これは先に定義した要件、即ち：
（数２）
f(x) = anxn + an-1xn-1 + … + a2x2 + a1x + a0
が真である限り真である。例えば、２進法、８進法、１０進法、１６進法、そして更なる数表現に対してそのようになる。外側のループのループ情報、即ちループ開始、ループステップ、及びループインクリメントを分析することから明らかになるように、forループは６つの反復を有する。即ち、単文によってビット位置０におけるビットのビット値に６つの変更を生じることができる。中間的なＬＳＴ表現でループの結果を変換する簡単な方法は、forループを次の式で置き換えることである：
（数３）
‘2x(2x((EndLeft,EndRight)))’
【００７４】
シーケンス長値が２である、即ち反復ビット値パターン長が２ビット長のみであることが分かれば、反復演算子をその後使用することによって示されるように、終了ノード（Nleft及びNright）はそれぞれの反復ビット値パターンを含み、これが８回反復される。しかし、ループが有する反復は６つだけであるため、ビット値パターン長は６ということになる。これをＬＳＴ表現の限定された構文要素で直接記述することはできない。そのため表現を修正する必要があり、これについては以下に詳述する。
【００７５】
ＬＳＴ表現に関していえば、外側のforループは、ＬＳＴを使用して回帰的に反復ループに変換される。（‘２ｘ’で定義される）各反復ノードは、“次の命令を２回繰り返す”というフォームの反復命令を生成する。各分割ノードは、ループ本体に含まれる全ての表現を単に複製する左ノードと右ノードを作成する。各終了ノードは、対応する反復、カウント方向（減少と増加）、及び親ノードに対する位置（例えば、親が分割ノードである場合には左又は右）のループ変数値を考慮する表現を生成する。次いで、変換手段は使用されている全ての表現において、ループ変数を結果値に置き換える。
【００７６】
シーケンス長値の決定から、反復ビット値パターンが２を上限とする長さを有することが分かる。即ち、ループ中の表現を二度評価するだけでよい。外側ループから内側ループへと更に処理することに関して、単純に内側ループ文を単式とし、これを二度のみ評価する。従って最初の変換ステップの後、プログラムは以下のように読み取る：
repeat 2 {
for (y=0;y<64;y+=3){
(50+y)[0];
0;
0;
(〜y)[0];
}
for (y=0;y<64;y+=3){
(41+y)[0];
0;
1;
(〜y)[0];
}
}
for (y=0;y<64;y+=3){
(14+y)[0];
0;
0;
(〜y)[0];
}
for (y=0;y<64;y+=3){
(5+y)[0];
0;
1;
(〜y)[0];
}
【００７７】
最初の‘repeat 2’文を考慮すると、外側のforループから内側のforループまでの処理が明白になる。ループ変数ｘを有する外側のループに関しては、シーケンス長値が示すように、二度の評価を行なうのみでよい。任意の他の“標準”表現としてfor文を処理するため、内側ループのfor文は二度評価するだけである。
【００７８】
ただし、外側ループ変数ｘの適切な値を使用して評価を行う必要があることは当然である。即ち、内側forループ文は二度評価するが、この場合最初の評価はｘの第１の値（ｘ＝５０）を使用し、第２の評価はｘの第２の値（ｘ＝４１）を使用する。ネスト化した‘repeat 2’文は２のべき乗の反復数のみ直接アクセス可能であるため、最初の‘repeat 2’文を除いてもう２回内側forループを評価して、元々のＭＴＬプログラムの外側forループの６つの評価を完全に記述する必要がある。このため、‘repeat 2’文に対して更に２度の評価を追加して、ループ変数ｘの正しい値を再度考慮する、すなわち最初の評価はｘ＝１４を使用し、第２の評価はｘ＝５を使用する。
【００７９】
ネスト化したforループ文をどのように処理するかについては前述の例から明白である。更なる例は、ネスト化したforループを含むＭＴＬプログラムを含むものであり、forループは最後の最後まで処理される、即ち反復ビット値パターンと反復ビット値パターンを反復すべき回数を示す関連反復文のみを含む表現となるまで処理される。
main()
{
for(x=0; x<50; x+=1)
{
access(x);
}
}
Corresponding Syntax Tree（対応するシンタックスツリー）:
for (x=0; x<50; x+=1)
{
x[0]  // bit ‘0’
// repeat “01” 25 times
// repeat 25 {01}
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) （ビット‘０’に対応するループ分割ツリー（ＬＳＴ））:
2x(2x(2x(2x(2x((EndLeft,EndRight)))))) = 32 x (Endleft, Endright)
Corresponding Repeat-Loop（対応する反復ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
01
【００８０】
アドレスｘにおいてメモリアレイをアクセスする単純な前述の例から、ビット位置“０”におけるビットを対象とした場合に、シーケンス長値が２に等しいことは分かっている。反復ビット値パターンを得るために、対応するforループの評価は二度行なうのみでよい。即ち、第１の２つのループ反復に対してビット位置０におけるデータワードのビット値ｘを評価すると、ビットシーケンスは“０１”ということになる。さらに、ループ反復数は５０となるが、これは“for”文のループ情報によって導出可能である。従って、ＭＴＬプログラムのforループの生成するビット位置“０”におけるビット値パターンを完全に記述するために、反復ビット値パターンを２５回繰り返す必要がある。
【００８１】
しかし、ＬＳＴ視覚化に関しては５つの連続した“repeat 2”文が必要であり、これは実際には３２回の反復に対応する。得られる反復言語表現では、“repeat 2”文が４つのみネスト化されているという点でこれを考慮する必要があるが、上述のように、４つのネスト化した“repeat 2”文に残りの反復を追加する。
【００８２】
以下の例は外側ループとして先に説明したforループを使用するが、３つのステップサイズを有する第１の例のループを内側ループとして使用して、ネスト化したforループの完全な処理を示す。ここでもビット数０を対象とする。この例は次の通りである：
main()
{
for(x=0; x < 50; x++)
{
for(y=0; y < 64; y+=3)
{
access(x + y);
}
}
}
Corresponding Syntax Tree（対応するシンタックスツリー）:
for (x=0;x<50;x+=1){
for (y=0;y<64;y+=3){
(x+y)[0]
}
}
【００８３】
前述のように、外側ループは２５回に渡って内側ループの２つの評価を反復して行なう必要があるが、これを以下の表現で示す：
repeat 25 {
for (y=0; y<64; y+=3)
{access (0+y)[0];}
for (y=0; y<64; y+=3)
{access (1+y)[0]}
}
【００８４】
同じように考慮して、内側forループ（２２の反復を有する）は二度評価するだけでよいが、それぞれの評価は外側ループ変数ｘの正しい値に基づいて行なう。これにより、ＭＴＬプログラムから得られるビット位置０におけるビットシーケンスの表現は以下のようになる：
repeat 25 {
repeat 11 
{01}
repeat 11 
{10}
}
【００８５】
上記の例から、データワードシーケンス（アクセス文の使用するデータワード）の所定のビット位置に関連する反復ビット値パターンを、データワードの完全なシーケンスを導出しなくても如何にして決定できるかは明白である。なお、データワードは一ビット順中に２つ以上のビットを含み、ビット位置はビット順中の１つの位置を記述すると共に、ビット位置におけるビットの表す値を示す。
【００８６】
さらにＬＳＴ表現に対する構文要素の制約を考慮すると、ＬＳＴ表現は次のように得ることができる：
Corresponding Loop Split-up Tree for bit ‘0’ (LST) − 1st loop（ビット‘０’に対応するループ分割ツリー（ＬＳＴ） − 第１ループ）:
2x(2x(2x(2x(2x((EndLeft,EndRight))))))
Convert first outer for-loop to Repeat-Loop − 1st loop（第１の外側forループを反復ループに変換 - 第１ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
for (y=0;y<64;y+=3){
(0+y)[0]; 
}
for (y=0;y<64;y+=3){
(1+y)[0]; 
}
}
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
for (y=0;y<64;y+=3){
(32+y)[0];
}
for (y=0;y<64;y+=3){
(33+y)[0];
}
}
}
}
for (y=0;y<64;y+=3){
(48+y)[0];
}
for (y=0;y<64;y+=3){
(49+y)[0]c;
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) − 2nd loop（ビット‘０’に対応するループ分割ツリー（ＬＳＴ） - 第２ループ）:
2x(2x(2x(2x((EndLeft,EndRight)))))
Convert next inner for-loop to Repeat-Loop − 2nd loop（次の内側forループを反復ループに変換 - 第２ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
for (y=0;y<64;y+=3){
(1+y)[0]; 
}
}
}
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
for (y=0;y<64;y+=3){
(32+y)[0];
}
for (y=0;y<64;y+=3){
(33+y)[0];
}
}
}
}
for (y=0;y<64;y+=3){
(48+y)[0];
}
for (y=0;y<64;y+=3){
(49+y)[0]c;
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) − 3rd loop（ビット‘０’に対応するループ分割ツリー（ＬＳＴ） - 第３ループ）:
2x(2x(2x(2x((EndLeft,EndRight)))))
Convert next inner for-loop to Repeat-Loop − 3rd loop（次の内側forループを反復ループに変換 - 第３ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
}
}
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
for (y=0;y<64;y+=3){
(32+y)[0];
}
for (y=0;y<64;y+=3){
(33+y)[0];
}
}
}
}
for (y=0;y<64;y+=3){
(48+y)[0];
}
for (y=0;y<64;y+=3){
(49+y)[0]c;
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) −4th loop（ビット‘０’に対応するループ分割ツリー（ＬＳＴ） - 第４ループ）:
2x(2x(2x(2x((EndLeft,EndRight)))))
Convert next inner for-loop to Repeat-Loop − 4th loop（次の内側forループを反復ループに変換 - 第４ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
}
}
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
for (y=0;y<64;y+=3){
(33+y)[0];
}
}
}
}
for (y=0;y<64;y+=3){
(48+y)[0];
}
for (y=0;y<64;y+=3){
(49+y)[0]c;
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) − 5th loop（ビット‘０’に対応するループ分割ツリー（ＬＳＴ）- 第５ループ）:
2x(2x(2x(2x((EndLeft,EndRight)))))
Convert next inner for-loop to Repeat-Loop − 5th loop（次の内側forループを反復ループに変換 - 第５ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
}
}
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
}
}
}
for (y=0;y<64;y+=3){
(48+y)[0];
}
for (y=0;y<64;y+=3){
(49+y)[0]c;
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) − 6th loop（ビット‘０’に対応するループ分割ツリー（ＬＳＴ） - 第６ループ）:
2x(2x(2x(2x((EndLeft,EndRight)))))
Convert next inner for-loop to Repeat-Loop − 6th loop（次の内側forループを反復ループに変換 - 第６ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
}
}
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
for (y=0;y<64;y+=3){
(49+y)[0]c;
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) − 7th loop（ビット‘０’に対応するループ分割ツリー（ＬＳＴ） - 第７ループ）:
2x(2x(2x(2x((EndLeft,EndRight)))))
Convert next inner for-loop to Repeat-Loop − 7th loop（次の内側forループを反復ループに変換 - 第７ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
}
}
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
}
}
}
repeat 2 {
repeat 2 {
repeat 2 {
01
}
}
}
repeat 2 {
01
}
01
repeat 2 {
repeat 2 {
repeat 2 {
10
}
}
}
repeat 2 {
10
}
10
1st Optimization after converting all for-loops to Repeat-Loops（全てのforループを反復ループに変換した後の第１の最適化）:
repeat 24 {
repeat 10 {
01
}
01
repeat 10 {
10
}
10
}
repeat 10 {
01
}
01
repeat 10 {
10
}
10
【００８７】
なお各構文の第１の最適化により、一文中の偶数の反復を考慮する、わずかに改良した構文要素のセットに基づいて、構文をかなり短縮することができる。
【００８８】
さらに以下の例は、内側ループ中のそれぞれのデータワードを変更する多数の文を含む。処理は上記で述べた原則から容易に得られるため、以下の文についての更なる説明は省略する。
main()
{
for(x=50; x > 0; x-=9)
{
for(y=0; y < 64; y+=3)
{
access(x + y);
access(0);
access(x * x);
access(〜y);
}
}
}
Corresponding Syntax Tree（対応するシンタックスツリー）:
for (x=50;x>0;x-=9){
for (y=0;y<64;y+=3){
(x+y)[0];
0;
(x*x)[0];
(〜y)[0];
}
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) （ビット‘０’に対応するループ分割ツリー（ＬＳＴ））:
2x(2x((EndLeft,EndRight)))
Corresponding Repeat-Loop（対応する反復ループ）:
repeat 2 {
for (y=0;y<64;y+=3){
(50+y)[0];
0;
0;
(〜y)[0];
}
for (y=0;y<64;y+=3){
(41+y)[0];
0;
1;
(〜y)[0];
}
}
for (y=0;y<64;y+=3){
(14+y)[0];
0;
0;
(〜y)[0];
}
for (y=0;y<64;y+=3){
(5+y)[0];
0;
1;
(〜y)[0];
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST)（ビット‘０’に対応するループ分割ツリー（ＬＳＴ））:
2x(2x(2x(2x((EndLeft,EndRight)))))
Corresponding Repeat-Loop（対応する反復ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
00011000
}
}
}
repeat 2 {
00011000
}
00011000
for (y=0;y<64;y+=3){
(41+y)[0];
0;
1;
(〜y)[0];
}
}
for (y=0;y<64;y+=3){
(14+y)[0];
0;
0;
(〜y)[0];
}
for (y=0;y<64;y+=3){
(5+y)[0];
0;
1;
(〜y)[0];
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST)（ビット‘０’に対応するループ分割ツリー（ＬＳＴ））:
2x(2x(2x(2x((EndLeft,EndRight)))))
Corresponding Repeat-Loop（対応する反復ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
00011000
}
}
}
repeat 2 {
00011000
}
00011000
repeat 2 {
repeat 2 {
repeat 2 {
10110010
}
}
}
repeat 2 {
10110010
}
10110010
}
for (y=0;y<64;y+=3){
(14+y)[0];
0;
0;
(〜y)[0];
}
for (y=0;y<64;y+=3){
(5+y)[0];
0;
1;
(〜y)[0];
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST)（ビット‘０’に対応するループ分割ツリー（ＬＳＴ））:
2x(2x(2x(2x((EndLeft,EndRight)))))
Corresponding Repeat-Loop（対応する反復ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
00011000
}
}
}
repeat 2 {
00011000
}
00011000
repeat 2 {
repeat 2 {
repeat 2 {
10110010
}
}
}
repeat 2 {
10110010
}
10110010
}
repeat 2 {
repeat 2 {
repeat 2 {
00011000
}
}
}
repeat 2 {
00011000
}
00011000
for (y=0;y<64;y+=3){
(5+y)[0];
0;
1;
(〜y)[0];
}
Corresponding Loop Split-up Tree for bit ‘0’ (LST) （ビット‘０’に対応するループ分割ツリー（ＬＳＴ））:
2x(2x(2x(2x((EndLeft,EndRight)))))
Corresponding Repeat-Loop（対応する反復ループ）:
repeat 2 {
repeat 2 {
repeat 2 {
repeat 2 {
00011000
}
}
}
repeat 2 {
00011000
}
00011000
repeat 2 {
repeat 2 {
repeat 2 {
10110010
}
}
}
repeat 2 {
10110010
}
10110010
}
repeat 2 {
repeat 2 {
repeat 2 {
00011000
}
}
}
repeat 2 {
00011000
}
00011000
repeat 2 {
repeat 2 {
repeat 2 {
10110010
}
}
}
repeat 2 {
10110010
}
10110010
1st Optimization after converting all for-loops to Repeat-Loops（全てのforループを反復ループに変換した後の第１の最適化）:
repeat 2 {
repeat 10 {
00011000
}
00011000
repeat 10 {
10110010
}
10110010
}
repeat 10 {
00011000
}
00011000
repeat 10 {
10110010
}
10110010
【００８９】
前述の例は純粋なソフトウェアで実行するものとして説明したが、当然ながら、図７で示すように、ハードウェアにおいても本発明の概念を実行できる。
【００９０】
図７は、一連のデータワードの所定のビット位置に関連する反復ビット値パターンを決定するよう構成したビット値パターン分析手段２００を示す。なおデータワードは一ビット順に２つ以上のビットを含み、ビット位置は、プログラムループ情報２０２に基づいたビット位置におけるビットの示す値を示し、プログラムループ情報２０２は、データワードシーケンスの更新したデータワードを決定するためのプログラム表現を含む。ビット値パターン分析手段２００はシーケンス評価手段２０４と、表現評価手段２０６と、ビット値パターン生成手段２０８とを含む。
【００９１】
シーケンス評価手段２０４は所定のビット位置を使用して、所定のビット位置に関連するシーケンス長値２１０を決定する構成である。
【００９２】
表現評価手段は、所定のビット位置に対応する更新ビット値を得るために、シーケンス長値２１０の示すループ反復数に対してプログラム表現２１２を評価する構成である。
【００９３】
ビット値パターン生成手段２０８は、ループ反復数の更新したビット値を使用して、反復ビット値パターンを決定する構成であるが、この決定された反復ビット値パターンは、例えばビット値パターン分析手段の任意の出力２２０において出力される。
【００９４】
前述の実施形態では、データワード中の数値に作用する高レベルプログラム言語表現に対して本発明の概念を適用し、データワード中のビットに対する反復ビット値パターンを決定することについて述べている。しかし、本発明の概念はかかる用途に限定されない。さらに本発明の概念を使用して、他の表現によって変更されたビット位置に対する反復ビット値パターンを決定することもできる。例えば、テキスト処理システムの語又は文によって生じる反復ビット値パターンも導出できる。
【００９５】
このため、先に示した数式に対する必要条件以外の条件を満たすことで、最大限の反復ビットシーケンス長を示すシーケンス長値を決定することもできる。反復シーケンス長値を導出する方法に関する法則を特定の実施形態に適応させる必要があるが、これは本出願の教示を理解できる当業者には容易である。
【００９６】
さらに、ループ文又は別の文中の表現を、反復ビットシーケンス（反復ビット値パターン）を使用して記述し得るか否かに関して、一般的に経験則から決定することもできる。反復ビットシーケンスの導出ができない場合には、適切な変換手段により各ループ反復に対して表現を評価することで、ループ反復中の最も複雑な表現を評価することもできる。このように、アドレスステップシーケンス及びデータシーケンスに対して多大な柔軟性を提供することができるが、これは従来の共有リソースアーキテクチャでは実行するのが極めて複雑である。
【００９７】
前述の例では、実行すべきループ反復数は説明を単純にするためにシーケンス長値の倍数とした。この制約を満たさないループにも本発明の概念を適用できることは言うまでもないことである。重ねて述べるが、本発明の概念を有利に使用できるのはメモリのテストのみではない。さらに、例えばプログラムコードをデバッグしながらビートシーケンスを決定すること、更なる高レベルプログラム言語、例えばＣ、Ｃ＋＋言語等の言語で生成したビットシーケンスを決定すること等、その他のデジタルデータ処理もしくは診断用途に本発明の概念を適用することができる。
【００９８】
本発明の方法の特定の実施要件に依って、本発明の方法はハードウェア又はソフトウェアに実装することができる。詳細には電子的に読み取り可能な制御信号を格納し、プログラム可能なコンピュータシステムと協働して本発明の方法を実行するディスク、ＤＶＤ、又はＣＤ等のデジタル記憶媒体を使用して、本発明の方法を実装することができる。一般に、本発明は機械可読キャリアにプログラムコードを格納したコンピュータプログラム製品であるが、プログラムコードは、コンピュータプログラム製品がコンピュータ上で実行する際に本発明の方法を実行するよう作用する。換言すれば本発明の方法は、コンピュータで実行されると本発明の方法の少なくとも１つを実行するプログラムコードを有するコンピュータプログラムである。
【００９９】
以上、特定の実施形態を詳細に示して説明してきたが、本発明の主旨及び範囲を逸脱することなく形態及び詳細を多様に変更できることは、当業者であれば理解できよう。また、様々な実施形態に適用することによって、本明細書で示すと共に特許請求の範囲に含まれる広範な概念を逸脱することなく、種々の変更を行なうことができることを理解されたい。
【符号の説明】
【０１００】
２  データワード
４、８  シーケンス長値
６  プログラム表現の評価
１０  反復ビット値パターンの決定
２０  テストシステム
２２  被試験デバイス
２４ａ、２４ｂ  データ端末
２６ａ、２６ｂ  データピン（テストピン）
３０、２００  ビット値パターン分析手段
２０２  プログラムループ情報
２０４  シーケンス評価手段
２０６  表現評価手段
２０８  ビット値パターン生成手段
【図１】
2011524039.tif 000005
【図２】
2011524039.tif 000006
【図３】
2011524039.tif 000007
【図４】
2011524039.tif 000008
【図５】
2011524039.tif 000009
【図６】
2011524039.tif 000010
【図７】
2011524039.tif 000011
【手続補正書】
【提出日】平成22年6月14日(2010.6.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データワード（２）シーケンスの所定のビット位置に関連する反復ビット値パターンを決定する方法であって、前記データワード（２）が一ビット順に２つ以上のビットを含み、前記ビット順中の１つの位置を記述するビット位置が、プログラムループ情報に基づいて前記ビット位置におけるビットの表す値を示し、前記プログラムループ情報（２０２）が、前記データワードシーケンスの更新されたデータワードを決定するためのプログラム表現と、前記プログラムループ情報から導出される反復情報であって、前記データワードシーケンスを生成するために実行されるループ反復数を示す反復情報とを含み、前記方法が、
前記所定のビット位置を使用して、全てのループ反復を実行することなく多項式に基づいて前記所定のビット位置に関連するシーケンス長値（８）を決定することと、
前記シーケンス長値決定後、前記所定のビット位置に関連する更新されたビット値を得るために、前記シーケンス長値の示す前記ループ反復数に対してのみプログラム表現を評価すること（６）と、
前記ループ反復数の前記更新されたビット値を使用して、前記反復ビット値パターンを決定すること（１０）と、を含むこと、
を特徴とする方法。
【請求項２】
前記シーケンス長値（８）が、前記データワード（２）によって表すことができ、さらに前記ビット位置におけるビットの表す値より小さい異なる値の数を示すこと、
を特徴とする請求項１に記載の方法。
【請求項３】
前記データワード（２）が数値のバイナリ表現であり、ビット位置ｎにおけるビットのビット値ｘが数値ｘ*２ｎを表すこと、を特徴とする請求項１または２に記載の方法。
【請求項４】
前記シーケンス長値ｌ（８）を以下の式、
（数４）
１＝２ｎ＋１
によって記述できるように決定すること、
を特徴とする請求項３に記載の方法。
【請求項５】
各ループ反復の前記更新されたビット値を連結して、前記反復ビット値パターンを決定すること（１０）、を特徴とする請求項１から４のいずれかに記載の方法。
【請求項６】
前記シーケンス長値の示すループ反復数に対する前記プログラムループ情報に含まれる第２のプログラム表現を評価して、前記所定のビット位置に関連する第２の更新されたビット値を得ることと、
前記第２の更新されたビット値をさらに使用して、前記反復ビット値パターンを決定することと、をさらに含むこと、
を特徴とする先行する請求項のいずれかに記載の方法。
【請求項７】
同一のループ反復において生成された第１の更新されたビットと第２の更新されたビットの対を連結することによって、前記反復ビット値パターンを導出すること、
を特徴とする請求項６に記載の方法。
【請求項８】
前記プログラム表現を評価することが、
前記データワード（２）シーケンスの更新されたデータワードを導出することと、
前記所定の位置に位置する前記データワード（２）の前記ビットのビット値を得ることと、を含むこと、
を特徴とする先行する請求項のいずれかに記載の方法。
【請求項９】
前記シーケンス長値（８）と前記反復情報を使用して前記反復ビット値パターンに関連する反復値を導出することをさらに含むこと、
を特徴とする先行する請求項のいずれかに記載の方法。
【請求項１０】
前記反復情報の示す前記ループ反復数を前記シーケンス長値（８）で除算することにより、前記反復値を導出すること、を特徴とする請求項９に記載の方法。
【請求項１１】
前記データワード（２）シーケンスの前記所定のビット位置に関連する前記ビット値パターンの反復表現を生成することをさらに含み、前記データワードシーケンスの前記所定のビット位置の前記ビット値パターンを生成するよう前記反復ビット値パターンを反復する回数を前記反復表現が示すように、前記反復表現が前記反復値及び前記反復ビット値パターンを使用すること、
を特徴とする請求項９または１０に記載の方法。
【請求項１２】
前記反復値の示す反復数をネスト化した反復文に変換することにより、前記反復表現を反復言語表現に変換することをさらに含み、各反復文が関与する表現の単一の反復を示すこと、
を特徴とする請求項９から１１に記載の方法。
【請求項１３】
メモリにアクセスするために前記データワードを使用すること、を特徴とする先行する請求項のいずれかに記載の方法。
【請求項１４】
前記データワードが、アクセスするデータ要素のロウアドレス又はカラムアドレスに関連すること、を特徴とする請求項１３に記載の方法。
【請求項１５】
前記シーケンス長値が、前記反復情報によって示される前記ループ反復数よりも小さいこと、を特徴とする先行する請求項のいずれかに記載の方法。
【請求項１６】
データワードシーケンスの所定のビット位置に関連する反復ビット値パターンを決定するよう構成したビット値パターン分析手段（２００）であって、前記データワードが一ビット順に２つ以上のビットを含み、前記ビット順中の１つの位置を記述する前記ビット位置が、プログラムループ情報（２０２）に基づいて前記ビット位置におけるビットの表す値を示し、前記プログラムループ情報が、前記データワードシーケンスの更新されたデータワードを決定するためのプログラム表現と、前記プログラムループ情報から導出される反復情報であって、前記データワードシーケンスを生成するために実行されるループ反復数を示す反復情報とを含み、前記ビット値パターン分析手段が、
前記所定のビット位置を用いて、全てのループ反復を実行することなく多項式に基づいて前記所定のビット位置に関連するシーケンス長値（２１０）を決定するよう構成したシーケンス評価手段（２０４）と、
前記決定された前記シーケンス長値（２１０）の示す前記ループ反復数に対してのみプログラム表現を評価して、前記所定のビット位置に関連する更新されたビット値を得るよう構成した表現評価手段（２０６）と、
前記ループ反復数の前記更新されたビット値を用いて、前記反復ビット値パターンを決定するよう構成したビット値パターン生成手段（２０８）と、を含むこと、
を特徴とするビット値パターン分析手段。
【請求項１７】
コンピュータで実行すると、請求項１から１５に記載の方法のいずれかを実行するよう構成したコンピュータプログラム。
【請求項１８】
データワードシーケンスを受け取るよう構成した２つ以上のデータ端末（２４ａ、２４ｂ）を有するデバイス（２２）をテストするテストシステム（２０）であって、前記データワードが一ビット順に２つ以上のビットを含み、前記ビット順中の１つの位置を記述するビット位置が、前記ビット位置におけるビットの表す値を示し、前記テストシステム（２０）が、前記デバイス（２２）の第１データ端末及び第２データ端末（２４ａ、２４ｂ）に連結するよう構成した第１データピン及び第２データピン（２６ａ、２６ｂ）を含み、前記テストシステムが、
プログラムループ情報に基づいて、所定のデータピンに関連する反復ビット値パターンを決定するよう構成したビット値パターン分析手段（３０）を含み、前記プログラムループ情報が前記データワードシーケンスの更新されたデータワードを決定するためのプログラム表現と、前記プログラムループ情報から導出される反復情報であって、前記データワードシーケンスを生成するために実行されるループ反復数を示す反復情報とを含み、前記ビット値パターン分析手段（３０）が、
前記所定のデータピンに関連する前記所定のビット位置を用いて、全てのループ反復を実行することなく多項式に基づいて前記所定のデータピンに関連するシーケンス長値を決定するよう構成したシーケンス評価手段（２０４）と、
前記決定された前記シーケンス長値の示す前記ループ反復数に対してのみプログラム表現を評価して、前記所定のデータピンに関連する更新されたビット値を得るよう構成した表現評価手段（２０６）と、
前記ループ反復数の前記更新されたビット値を用いて、前記所定のデータピンに対する前記反復ビット値パターンを決定するビット値パターン生成手段（２０８）と、を含むこと、
を特徴とするテストシステム。
【請求項１９】
メモリデバイスをテストするよう適応させたこと、を特徴とする請求項１８に記載のテストシステム。
【請求項２０】
メモリデバイスのアドレス端末に連結するよう前記所定のデータピンを構成したこと、を特徴とする請求項１９に記載にテストシステム。
【国際調査報告】
2011524039.tif 000012
2011524039.tif 000013
2011524039.tif 000014