(57)【要約】  本明細書によれば、デバイスは、デバイス内に内蔵されたセルフテストロジック回路と、デバイス内にやはり内蔵された自己修復ロジック回路とを含む内部欠陥検出および修復回路を備える。一実施形態において、内蔵型セルフテストロジック回路は、メモリ内の複数の欠陥メモリセルを自動的に識別するように構成され得る。１または複数の欠陥メモリセルを識別すると、内蔵型自己修復ロジック回路は、メモリ内で欠陥セルをスペアセルと交換することにより、欠陥メモリセルを自動的に修復するように構成され得る。一実施形態において、複数のデータパターンが、メモリアドレスおよび周期的アドレスオフセットの関数として生成される。他の複数の態様が、本明細書において説明される。
2017502386.tif 000002
【特許請求の範囲】
【請求項１】
複数のスペアメモリセルを含んだ複数のメモリセルを有するメモリと共に用いるメモリコントローラであって、
前記メモリコントローラ内に内蔵された内部セルフテストロジック回路と、
前記メモリコントローラ内に内蔵され、レポジトリに格納された複数のメモリ位置のリストを読み取り、複数のスペアメモリセルのメモリ位置を、少なくとも１つの欠陥メモリセルを含むメモリ位置と交換することにより、前記リストにおける前記複数のメモリ位置を修復する、修復ロジック回路を有する内部自己修復ロジック回路とを備え、
前記内部セルフテストロジック回路は、
複数のテストパターンを生成して、生成済みの前記複数のテストパターンを用いて前記メモリ内の複数のメモリセルをテストするテストパターンジェネレータと、
前記レポジトリと、
前記複数のメモリセルをテストする前記複数のテストパターンに応答して複数の欠陥メモリセルを検出し、前記メモリコントローラ内の前記レポジトリに、複数のメモリ位置の前記リストを格納し、前記リストの各メモリ位置は、少なくとも１つの欠陥メモリセルを含む１セットのメモリセルを含む検波回路とを有する、メモリコントローラ。
【請求項２】
半導体ダイを更に備え、
前記内部セルフテストロジック回路および前記内部自己修復ロジック回路は、前記メモリコントローラの前記半導体ダイ上に配置される、請求項１に記載のメモリコントローラ。
【請求項３】
前記テストパターンジェネレータは、少なくとも１つのアドレスジェネレータを含む複数のジェネレータと、前記複数のジェネレータに、アドレスジェネレータに対する複数のアドレス命令のシーケンスの複数のアドレス命令のシーケンシャルなループを含む複数の入れ子のループ命令を適用するループシーケンサ回路とを有し、
前記シーケンスの各アドレス命令は、アドレスジェネレータにより実行されると、アドレスジェネレータに、複数のメモリセルアドレスのパターンを生成させ、
前記テストパターンジェネレータは、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて複数のメモリコマンドを実行する、請求項１または２に記載のメモリコントローラ。
【請求項４】
前記複数のジェネレータは、少なくとも１つのデータジェネレータを有し、
前記ループシーケンサ回路は、データジェネレータに、複数のデータ命令のシーケンスにおける複数のデータ命令のシーケンシャルなループを適用し、
前記シーケンスの各データ命令は、データジェネレータにより実行されると、データジェネレータにテストパターンに対するテストデータを生成させ、
複数のデータ命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行するときに、前記テストパターンジェネレータは、複数のデータ命令の前記ループのシーケンスにおいて実行されるデータ命令により生成されたテストデータのパターンを、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む、請求項３に記載のメモリコントローラ。
【請求項５】
前記複数のジェネレータは、少なくとも１つのアルゴリズムジェネレータを含み、
前記ループシーケンサ回路は、アルゴリズムジェネレータに、複数のアルゴリズム命令のシーケンスにおける複数のアルゴリズム命令のシーケンシャルなループを適用し、
前記シーケンスの各アルゴリズム命令は、アルゴリズムジェネレータにより実行されると、アルゴリズムジェネレータに、複数のデータ命令の前記ループのシーケンスにおいて実行されるデータ命令により生成された前記テストデータを入力する、アルゴリズムの出力としてテストデータパターンを生成させ、
複数のアルゴリズム命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行するときに、前記テストパターンジェネレータは、複数のアルゴリズム命令の前記ループのシーケンスにおいて実行されるアルゴリズム命令に従ってデータテストパターンを、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む、請求項４に記載のメモリコントローラ。
【請求項６】
前記複数のジェネレータは、少なくとも１つのコマンドジェネレータを含み、
前記ループシーケンサ回路は、コマンドジェネレータに、複数のコマンド命令のシーケンスにおける複数のコマンド命令のシーケンシャルなループを適用し、
前記シーケンスの各コマンド命令は、コマンドジェネレータにより実行されると、コマンドジェネレータに複数のメモリコマンドのパターンを生成させ、
複数のコマンド命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行するときに、前記テストパターンジェネレータは、複数のコマンド命令の前記ループのシーケンスにおいて実行されるコマンド命令により生成された複数のコマンドのパターンを実行し、
複数のコマンドの前記パターンは、複数のアルゴリズム命令の前記ループのシーケンスにおいて実行されるアルゴリズム命令に応答して、アルゴリズムジェネレータの前記出力により生成されたデータテストパターンを書き込み、
これにより、複数のデータ命令の前記ループのシーケンスにおいて実行されるデータ命令により生成された前記テストデータを、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに入力する、請求項５に記載のメモリコントローラ。
【請求項７】
前記複数のジェネレータは、少なくとも１つのアドレスオフセットジェネレータを含み、
前記ループシーケンサ回路は、アドレスオフセットジェネレータに、複数のメモリアドレスオフセット命令のシーケンスにおける複数のメモリアドレスオフセット命令のシーケンシャルなループを適用し、
前記シーケンスの各メモリアドレスオフセット命令は、アドレスオフセットジェネレータにより実行されると、アドレスオフセットジェネレータに複数のメモリアドレスオフセットのパターンを生成させ、
複数のメモリアドレスオフセット命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行するときに、前記テストパターンジェネレータは、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成され、複数のメモリアドレスオフセット命令の前記シーケンシャルなループのシーケンスにおいて実行されるメモリアドレスオフセット命令により生成された複数のメモリアドレスオフセットの前記パターンによりオフセットされた、複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおける複数のコマンド命令の前記ループのシーケンスにおいて実行される複数のコマンド命令により生成された複数のコマンドのパターンを実行する、請求項６に記載のメモリコントローラ。
【請求項８】
前記複数のメモリセルは、複数のメモリ領域に配置され、
前記検波回路は、少なくとも１つの欠陥メモリセルを有する前記メモリ位置の数が特定のメモリ領域の最大値を超えるか否かを判断し、前記最大値を超える場合に、少なくとも１つの欠陥メモリセルを有するメモリ位置の前記数が前記特定のメモリ領域の前記最大値を超えることを示すフラグをセットする、請求項１に記載のメモリコントローラ。
【請求項９】
前記複数のメモリセルは、複数のメモリセルの複数のメモリ領域に配置され、
各メモリ領域は、複数のメモリセルの複数の行および列に配置された複数のメモリセルのアレイを含み、
メモリ領域の各メモリ位置は、複数のメモリセルの行であり、
前記検波回路は、複数のメモリセルの特定のメモリ領域における複数のメモリセルの特定の行が、前記レポジトリの前記リストへのエントリとして既に格納されているか否かを判断して、複数のメモリセルの前記特定のメモリ領域における複数のメモリセルの前記特定の行が前記レポジトリの前記リストにエントリとして既に格納されている場合に、前記レポジトリに、前記複数のメモリ位置の前記リストのエントリとして、複数のメモリセルの前記特定のメモリ領域の前記特定の行を格納することをバイパスする、請求項１に記載のメモリコントローラ。
【請求項１０】
前記複数のメモリセルは、複数のメモリセルの複数のメモリ領域に配置され、
各メモリ領域は、複数のメモリセルの複数の行および複数の列に配置された複数のメモリセルのアレイを含み、
メモリ領域の各メモリ位置は、複数のメモリセルの行であり、
前記検波回路は、特定のメモリ領域の少なくとも１つの行が、前記特定のメモリ領域の複数のメモリセルの前記少なくとも１つの行に少なくとも１つの欠陥メモリセルを有するか否かを示す、各メモリ領域に対するフラグをセットする、請求項１、８または９のいずれか１項に記載のメモリコントローラ。
【請求項１１】
コンピュータアーキテクチャデバイスであって、
複数のスペアメモリセルを含む前記コンピュータアーキテクチャデバイス内の複数のメモリセルと、
前記コンピュータアーキテクチャデバイス内に内蔵された内部セルフテストロジック回路と、
前記コンピュータアーキテクチャデバイス内に内蔵され、レポジトリに格納された複数のメモリ位置のリストを読み取り、複数のスペアメモリセルのメモリ位置を、少なくとも１つの欠陥メモリセルを含むメモリ位置と交換することにより、前記リストにおける前記複数のメモリ位置を修復する、修復ロジック回路を有する内部自己修復ロジック回路とを備え、
前記内部セルフテストロジック回路は、
複数のテストパターンを生成して、生成済みの前記複数のテストパターンを用いて前記コンピュータアーキテクチャデバイス内の複数のメモリセルをテストするテストパターンジェネレータと、
前記レポジトリと、
前記複数のメモリセルをテストする前記複数のテストパターンに応答して複数の欠陥メモリセルを検出し、前記コンピュータアーキテクチャデバイス内の前記レポジトリに、複数のメモリ位置の前記リストを格納し、前記リストの各メモリ位置は、少なくとも１つの欠陥メモリセルを含む１セットのメモリセルを含む検波回路とを有する、コンピュータアーキテクチャデバイス。
【請求項１２】
前記コンピュータアーキテクチャデバイスは、前記コンピュータアーキテクチャデバイスの前記複数のメモリセルを制御するべく、前記コンピュータアーキテクチャデバイス内の半導体ダイ上に配置されたメモリコントローラを更に備え、
前記内部セルフテストロジック回路および前記内部自己修復ロジック回路は、前記メモリコントローラの前記ダイ上に配置される、請求項１１に記載のコンピュータアーキテクチャデバイス。
【請求項１３】
前記テストパターンジェネレータは、少なくとも１つのアドレスジェネレータを含む複数のジェネレータと、複数のジェネレータに、アドレスジェネレータに対する複数のアドレス命令のシーケンスの複数のアドレス命令のシーケンシャルなループを含む複数の入れ子のループ命令を適用するループシーケンサ回路とを有し、
前記シーケンスの各アドレス命令は、アドレスジェネレータにより実行されると、アドレスジェネレータに、複数のメモリセルアドレスのパターンを生成させ、
前記テストパターンジェネレータは、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて複数のメモリコマンドを実行する、請求項１１または１２に記載のコンピュータアーキテクチャデバイス。
【請求項１４】
前記複数のジェネレータは、少なくとも１つのデータジェネレータを含み、
前記ループシーケンサ回路は、データジェネレータに、複数のデータ命令のシーケンスにおける複数のデータ命令のシーケンシャルなループを適用し、
前記シーケンスの各データ命令は、データジェネレータにより実行されると、データジェネレータにテストパターンに対するテストデータを生成させ、
複数のデータ命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行するときに、前記テストパターンジェネレータは、複数のデータ命令の前記ループのシーケンスにおいて実行されるデータ命令により生成されたテストデータのパターンを、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む、請求項１３に記載のコンピュータアーキテクチャデバイス。
【請求項１５】
前記複数のジェネレータは、少なくとも１つのアルゴリズムジェネレータを含み、
前記ループシーケンサ回路は、アルゴリズムジェネレータに、複数のアルゴリズム命令のシーケンスにおける複数のアルゴリズム命令のシーケンシャルなループを適用し、
前記シーケンスの各アルゴリズム命令は、アルゴリズムジェネレータにより実行されると、アルゴリズムジェネレータに、複数のデータ命令の前記ループのシーケンスにおいて実行されるデータ命令により生成された前記テストデータを入力する、アルゴリズムの出力として、テストデータパターンを生成させ、
複数のアルゴリズム命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行するときに、前記テストパターンジェネレータは、複数のアルゴリズム命令の前記ループのシーケンスにおいて実行されるアルゴリズム命令に従ってデータテストパターンを、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む、請求項１４に記載のコンピュータアーキテクチャデバイス。
【請求項１６】
メモリをテストおよび修復する方法であって、
デバイス内に内蔵された内部セルフテストロジック回路を用いる段階と、
前記デバイス内の複数のメモリセルをテストする複数のテストパターンを生成する段階と、
前記デバイス内の前記複数のメモリセルに前記複数のテストパターンを適用する段階と、
適用される前記複数のテストパターンに応答して複数の欠陥メモリセルを検出する段階と、
前記デバイス内のレポジトリに複数のメモリ位置のリストを格納する段階と、
前記デバイス内に内蔵された内部自己修復ロジック回路を用いる段階と、
前記レポジトリに格納された複数のメモリ位置の前記リストを読み取る段階と、
前記複数のメモリ位置を修復する段階とを備え、
前記リストの各メモリ位置は、少なくとも１つの欠陥メモリセルを含む１セットのメモリセルを含み、
修復する前記段階は、１セットのメモリセルを含むスペアメモリ位置を、少なくとも１つの欠陥メモリセルを含むメモリ位置と交換する段階を有する、方法。
【請求項１７】
前記デバイスは、前記デバイスの前記複数のメモリセルを制御する、前記デバイス内の半導体ダイ上に配置されたメモリコントローラを更に備え、
前記内部セルフテストロジック回路および前記内部自己修復ロジック回路は、前記メモリコントローラの前記ダイ上に配置される、請求項１６に記載の方法。
【請求項１８】
前記複数のテストパターンを適用する前記段階は、複数のアドレス命令のシーケンスにおける複数のアドレス命令のシーケンシャルなループを実行する段階を有し、
前記シーケンスの各アドレス命令は、実行されると、複数のメモリセルアドレスのパターンを生成し、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて複数のメモリコマンドを実行する、請求項１６または１７に記載の方法。
【請求項１９】
テストパターンを生成する前記段階は、複数のデータ命令のシーケンスにおける複数のデータ命令のシーケンシャルなループを実行する段階を有し、
前記シーケンスの各データ命令は、実行されると、テストパターンに対するテストデータを生成し、
複数のデータ命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行する前記段階は、複数のデータ命令の前記ループのシーケンスにおいて実行されるデータ命令により生成されたテストデータを、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成される複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む段階を有する、請求項１８に記載の方法。
【請求項２０】
複数のテストパターンを生成する前記段階は、複数のアルゴリズム命令のシーケンスにおける複数のアルゴリズム命令のシーケンシャルなループを実行する段階を有し、
前記シーケンスの各アルゴリズム命令は、実行されると、複数のデータ命令の前記ループのシーケンスにおいて実行されるデータ命令により生成された前記テストデータを入力するアルゴリズムの出力として、テストデータパターンを生成し、
複数のアルゴリズム命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行する前記段階は、複数のアルゴリズム命令の前記ループのシーケンスにおいて実行されるアルゴリズム命令に従ってデータテストパターンを、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成される複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む段階を有する、請求項１９に記載の方法。
【請求項２１】
複数のテストパターンを生成する前記段階は、複数のコマンド命令のシーケンスにおいて複数のコマンド命令のシーケンシャルなループを実行する段階を有し、
前記シーケンスの各コマンド命令は、実行されると、複数のメモリコマンドのパターンを生成し、
複数のコマンド命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行する前記段階は、複数のコマンド命令の前記ループのシーケンスにおいて実行されるコマンド命令により生成された複数のコマンドのパターンを実行する段階を含み、
複数のコマンドの前記パターンは、複数のアルゴリズム命令の前記ループのシーケンスにおいて実行されるアルゴリズム命令のアルゴリズムの前記出力により生成されたデータテストパターンを書き込み、
これにより、複数のデータ命令の前記ループのシーケンスにおいて実行されるデータ命令により生成された前記テストデータを、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに入力する、請求項２０に記載の方法。
【請求項２２】
複数のテストパターンを生成する前記段階は、複数のメモリアドレスオフセット命令のシーケンスにおける複数のメモリアドレスオフセット命令のシーケンシャルなループを実行する段階を有し、
前記シーケンスの各メモリアドレスオフセット命令は、実行されると、複数のメモリアドレスオフセットのパターンを生成し、
複数のメモリアドレスオフセット命令の前記シーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、
複数のメモリセルにおいて複数のメモリコマンドを実行する前記段階は、複数のアドレス命令の前記ループのシーケンスにおいて実行されるアドレス命令により生成され、複数のメモリアドレスオフセット命令の前記ループのシーケンスにおいて実行されるメモリアドレスオフセット命令により生成された複数のメモリアドレスオフセットの前記パターンによりオフセットされた、複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおける複数のコマンド命令の前記ループのシーケンスにおいて実行されるコマンド命令により生成された複数のコマンドのパターンを実行する段階を有する、請求項２１に記載の方法。
【請求項２３】
前記複数のメモリセルは、複数のメモリ領域に配置され、
前記方法は、少なくとも１つの欠陥メモリセルを有するメモリ位置の前記数が特定のメモリ領域の最大値を超えるか否かを判断する段階と、
前記最大値を超える場合に、少なくとも１つの欠陥メモリセルを有するメモリ位置の前記数が前記特定のメモリ領域の前記最大値を超えることを示すフラグをセットする段階とを更に備える、請求項１６に記載の方法。
【請求項２４】
前記複数のメモリセルは、複数のメモリセルの複数のメモリ領域に配置され、
各メモリ領域は、複数のメモリセルの複数の行および複数の列に配置された複数のメモリセルのアレイを含み、
メモリ領域の各メモリ位置は、複数のメモリセルの行であり、
前記方法は、複数のメモリセルの特定のメモリ領域における複数のメモリセルの特定の行が、前記レポジトリの前記リストへのエントリとして既に格納されているか否かを判断する段階と、
複数のメモリセルの前記特定のメモリ領域における複数のメモリセルの前記特定の行が前記レポジトリの前記リストにエントリとして既に格納されている場合に、前記レポジトリに、複数のメモリ位置の前記リストのエントリとして、複数のメモリセルの前記特定のメモリ領域の前記特定の行を格納する段階をバイパスする段階とを更に備える、請求項１６に記載の方法。
【請求項２５】
前記複数のメモリセルは、複数のメモリセルの複数のメモリ領域に配置され、
各メモリ領域は、複数のメモリセルの複数の行および複数の列に配置された複数のメモリセルのアレイを含み、
メモリ領域の各メモリ位置は、複数のメモリセルの行であり、
前記方法は、特定のメモリ領域の少なくとも１つの行が、前記特定のメモリ領域の複数のメモリセルの前記少なくとも１つの行に少なくとも１つの欠陥メモリセルを有するか否かを示す、各メモリ領域にに対するフラグをセットする段階を更に備える、請求項１６、および２３または２４のいずれか１項に記載の方法。
【請求項２６】
複数のスペアメモリセルを含んだ複数のメモリセルを有するメモリと共に用いるメモリコントローラであって、
前記メモリコントローラ内に内蔵された内部セルフテストロジック回路を備え、
前記内部セルフテストロジック回路は、複数のテストパターンを生成して、生成済みの前記複数のテストパターンを用いて、前記メモリ内の複数のメモリセルをテストするテストパターンジェネレータを有し、
前記テストパターンジェネレータは、アドレス命令に応答して複数のメモリセルアドレスのパターンを生成し、複数のメモリセルのメモリ領域をトラバースする少なくとも１つのアドレスジェネレータを含む複数のジェネレータと、データ命令に応答して、前記アドレスジェネレータにより生成される複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込まれるテストデータのパターンに対するデータのパターンを生成する少なくとも１つのデータジェネレータとを含み、
データの生成済みの前記パターンは、データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける複数のメモリセルアドレスの前記パターンの選択可能な関数である、メモリコントローラ。
【請求項２７】
前記データジェネレータは、データの生成済みの前記パターンが書き込まれる、前記複数のメモリセルの複数のメモリセルアドレスの前記パターンにおける行アドレスおよび列アドレスのうちの１つの関数として選択可能なストライプパターンでデータを反転する、請求項２６に記載のメモリコントローラ。
【請求項２８】
前記データジェネレータは、データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける複数のメモリセルアドレスの前記パターンの行アドレスおよび列アドレスの各々の最低次の行アドレスビットおよび最低次の列アドレスビットの排他的ＯＲ関数の機能として選択可能なチェッカボードパターンでデータを反転させる、請求項２６に記載のメモリコントローラ。
【請求項２９】
前記データジェネレータは、データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスに全て論理的である、データの選択可能なパターンを生成する、請求項２６に記載のメモリコントローラ。
【請求項３０】
前記データジェネレータは、データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てメモリセルアドレスに対するデータの前記パターンを選択的に反転させる、請求項２６に記載のメモリコントローラ。
【請求項３１】
前記データジェネレータは、データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスに対するビット位置だけ、データの生成済みの前記パターンを選択的に回転させる、請求項２６〜３０のいずれか１項に記載のメモリコントローラ。
【請求項３２】
前記データジェネレータは、データの生成済みのパターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスについて、選択可能な回数、１ビット位置だけデータの生成済みの前記パターンの前記回転を選択的に反復する、請求項３１に記載のメモリコントローラ。
【請求項３３】
前記複数のジェネレータは、周期の関数として複数のメモリアドレスオフセットの周期的パターンを生成する少なくとも１つのアドレスオフセットジェネレータを含み、
前記データジェネレータは、選択可能な周期的データ反転パターンで、データの前記パターンを選択的に反転させる、選択可能な周期的データ反転関数を提供する、請求項２６に記載のメモリコントローラ。
【請求項３４】
前記データジェネレータは、前記アドレスオフセットジェネレータにより生成された複数のメモリアドレスオフセットの前記周期的パターンの関数としてのストライプパターンで、データの前記パターンを選択的に反転し、
前記ストライプパターンは、列ストライプ、行ストライプおよび斜めストライプのうちの１つである、請求項３３に記載のメモリコントローラ。
【請求項３５】
複数のメモリアドレスオフセットの前記周期的パターンにおける周期は、アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルの行の数および列の数のうちの１つの関数である、請求項３４に記載のメモリコントローラ。
【請求項３６】
複数のメモリアドレスオフセットの前記周期的パターンにおける前記周期は、最初の周期、および前記最初の周期に対する調整の関数である、請求項３３に記載のメモリコントローラ。
【請求項３７】
最初の周期は、アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルのトラバーサルの方向の関数である、請求項３５に記載のメモリコントローラ。
【請求項３８】
前記最初の周期は、アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルの行の数および列の数のうちの１つにセットされる、請求項３６に記載のメモリコントローラ。
【請求項３９】
複数のステージにチェーン化された複数のデータジェネレータを備え、
各データジェネレータは、複数のメモリアドレスの関数としてデータのパターンを生成する、請求項３３に記載のメモリコントローラ。
【請求項４０】
複数のマッピング値を格納する複数のレジスタと、
前記複数のレジスタに格納された前記複数のマッピング値の関数として複数の物理アドレスに複数の論理的アドレスをマッピングする、論理的・物理的アドレスマッピングロジックとを備える、請求項３９に記載のメモリコントローラ。
【請求項４１】
コンピューティングデバイスであって、
複数のスペアメモリセルを含む前記コンピューティングデバイス内に複数のメモリセルを有するメモリと、
前記コンピューティングデバイス内に内蔵され、複数のテストパターンを生成し、生成済みの前記複数のテストパターンを用いて複数の欠陥メモリセルの前記メモリ内の複数のメモリセルをテストするテストパターンジェネレータを有する内部セルフテストロジック回路と、
前記コンピューティングデバイス内に内蔵された内部自己修復ロジック回路とを備え、
前記テストパターンジェネレータは、アドレス命令に応答して、複数のメモリセルのメモリ領域をトラバースする複数のメモリセルアドレスのパターンを生成する少なくとも１つのアドレスジェネレータを含む複数のジェネレータと、データ命令に応答して、前記アドレスジェネレータにより生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込まれる、テストデータのパターンに対するデータのパターンを生成する少なくとも１つのデータジェネレータとを含み、
データの生成済みの前記パターンは、データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける複数のメモリセルアドレスの前記パターンの選択可能な関数であり、
前記内部自己修復ロジック回路は、前記内部セルフテストロジック回路に応答して、スペアメモリセルのメモリ位置を、少なくとも１つの欠陥メモリセルを有するメモリ位置と交換することにより欠陥メモリ位置を修復する、修復ロジック回路を有する、コンピューティングデバイス。
【請求項４２】
前記データジェネレータは、１）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける複数のメモリセルアドレスの前記パターンの行アドレスおよび列アドレスのうちの１つの関数として選択可能なストライプパターンでデータを反転することと、２）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける複数のメモリセルアドレスの前記パターンの前記行アドレスおよび前記列アドレスの各々の最低次の行アドレスビットおよび最低次の列アドレスビットの排他的ＯＲ関数の機能として選択可能なチェッカボードパターンでデータを反転することとのうちの少なくとも１つを行う、請求項４１に記載のコンピューティングデバイス。
【請求項４３】
前記データジェネレータは、１）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスに対して全て論理的なデータの選択可能なパターンを生成することと、２）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスに対するデータの前記パターンを選択的に反転させることと、３）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける全てのメモリセルアドレスに対するビット位置だけ、データの生成済みの前記パターンを選択的に回転させることと、４）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスに対する選択可能な回数、１ビット位置だけデータの生成済みパターンの前記回転を選択的に反復することとのうちの少なくとも１つを行う、請求項４１に記載のコンピューティングデバイス。
【請求項４４】
前記複数のジェネレータは、周期の関数として複数のメモリアドレスオフセットの周期的パターンを生成する、少なくとも１つのアドレスオフセットジェネレータを含み、
前記データジェネレータは、選択可能な周期的データ反転関数を提供して、選択可能な周期的データ反転パターンで、データの前記パターンを選択的に反転させ、
前記データジェネレータは、前記アドレスオフセットジェネレータにより生成された複数のメモリアドレスオフセットの前記周期的パターンの関数としてのストライプパターンで、データの前記パターンを選択的に反転させ、
前記ストライプパターンは、列ストライプ、行ストライプおよび斜めストライプのうちの１つであり、
複数のメモリアドレスオフセットの前記周期的パターンの周期は、１）アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルの行の数、２）アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルの列の数、ならびに３）最初の周期、および前記最初の周期に対する調整のうちの少なくとも１つの関数であり、
前記最初の周期は、アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルのトラバーサルの方向の関数であり、
前記最初の周期は、アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルの行の数および列の数のうちの１つにセットされる、請求項４１〜４３のいずれか１項に記載のコンピューティングデバイス。
【請求項４５】
複数のステージにチェーン化された複数のデータジェネレータを備え、
各データジェネレータは、複数のメモリアドレスの関数としてデータのパターンを生成し、
複数のレジスタは、複数のマッピング値を格納し、
論理的・物理的アドレスマッピングロジックは、前記複数のレジスタに格納された前記複数のマッピング値の関数として複数の物理アドレスに、複数の論理的アドレスをマッピングする、請求項４４に記載のコンピューティングデバイス。
【請求項４６】
複数のメモリセルと共に用いる方法であって、
デバイス内に内蔵された内部セルフテストロジック回路を用いる段階と、
複数のテストパターンを生成する段階と、
生成済みの前記複数のテストパターンを用いて複数の欠陥メモリセルに対してメモリ内の複数のメモリセルをテストする段階と、
前記デバイス内に内蔵された内部自己修復ロジック回路を用いて、前記内部セルフテストロジック回路に応答して、スペアメモリセルのメモリ位置を、少なくとも１つの欠陥メモリセルを有するメモリ位置と交換することにより欠陥メモリ位置を修復する段階とを備え、
テストパターンを生成する前記段階は、アドレス命令に応答して、複数のメモリセルのメモリ領域をトラバースするメモリセルアドレスのパターンを生成する段階と、データ命令に応答して、複数のメモリセルアドレスの生成済みの前記パターンによりアドレス指定された複数のメモリセルに書き込まれるテストデータのパターンに対するデータのパターンを生成する段階とを有し、
データのパターンを生成する前記段階は、データのパターンを選択する段階と、データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける複数のメモリセルアドレスの生成済みの前記パターンの選択可能な関数としてデータの選択された前記パターンを生成する段階とを有する、方法。
【請求項４７】
複数のメモリセルアドレスの生成済みの前記パターンの選択可能な関数としてデータの選択された前記パターンを生成する前記段階は、１）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける複数のメモリセルアドレスの前記パターンの行アドレスおよび列アドレスのうちの１つの関数として選択可能なストライプパターンで、データを反転する段階と、２）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける複数のメモリセルアドレスの前記パターンの前記行アドレスおよび前記列アドレスの各々の最低次の行アドレスビットおよび最低次の列アドレスビットの排他的ＯＲ関数の機能として選択可能なチェッカボードパターンでデータを反転する段階のうちの少なくとも１つを有する、請求項４６に記載の方法。
【請求項４８】
データのパターンを生成する前記段階は、１）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスに対して全て論理的なデータの選択可能なパターンを生成する段階と、２）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスに対するデータの前記パターンを選択的に反転させる段階と、３）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルにおける全てのメモリセルアドレスに対するビット位置だけ、データの生成済みの前記パターンを選択的に回転させる段階と、４）データの生成済みの前記パターンが書き込まれる前記複数のメモリセルの全てのメモリセルアドレスに対する選択可能な回数、１ビット位置だけデータの生成済みパターンを回転させる前記段階を選択的に反復する段階とのうちの少なくとも１つを有する、請求項４６に記載の方法。
【請求項４９】
複数のメモリセルアドレスのパターンを生成する前記段階は、周期の関数として複数のメモリアドレスオフセットの周期的パターンを生成する段階を有し、
複数のメモリセルアドレスの生成済みの前記パターンの選択可能な関数としてデータの選択された前記パターンを生成する前記段階は、選択可能な周期的データ反転パターンで、データの前記パターンを選択的に反転させる選択可能な周期的データ反転関数を提供する段階を有し、
複数のメモリセルアドレスの生成済みの前記パターンの選択可能な関数としてデータの選択された前記パターンを生成する前記段階は、複数のメモリアドレスオフセットの生成済みの前記周期的パターンの関数としてのストライプパターンで、データの前記パターンを選択的に反転させる段階を有し、
前記ストライプパターンは、列ストライプ、行ストライプおよび斜めストライプのうちの１つであり、
複数のメモリアドレスオフセットの前記周期的パターンの周期は、１）アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルの行の数、２）アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルの列の数、ならびに３）最初の周期、および前記最初の周期に対する調整のうちの１つの関数であり、
前記最初の周期は、アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルのトラバーサルの方向の関数であり、
前記最初の周期は、アドレス命令により生成された複数のメモリセルアドレスの前記パターンによりアドレス指定された前記複数のメモリセルの行の数および列の数のうちの１つにセットされる、請求項４６〜４８のいずれか１項に記載の方法。
【請求項５０】
複数のメモリセルアドレスの生成済みの前記パターンの選択可能な関数としてデータの選択された前記パターンを生成する前記段階は、複数のチェーン化ステージにおけるデータの選択済みの複数のパターンを生成する段階と、
前記複数のチェーン化ステージのうちの１つにおいて、複数のレジスタに格納された複数のマッピング値の関数として物理アドレスに複数の論理的アドレスをマッピングする段階とを有し、
各ステージのデータの各パターンは、複数のメモリアドレスの関数である、請求項４９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概ね内蔵型セルフテスト機能付きメモリを有するデバイスに関する。
【背景技術】
【０００２】
通常、ランダムアクセスメモリ（ＲＡＭ）等の集積回路デバイスは、製造中にデバイス検証テストを受ける。通常、そのような検証テストは、メモリアレイにおける静的および動的欠陥の双方を検出するように設計されている。静的な欠陥としては例えば、集積回路デバイスにおける開回路および短絡回路の欠陥が挙げられる。動的欠陥としては、タイミングに微妙な欠陥を生じさせる弱いプルアップまたはプルダウントランジスタ等の欠陥が挙げられる。メモリにおいて識別された欠陥は、デバイスにコマンドを発して欠陥メモリセルを、当該目的のためにデバイス上に配置されたスペアメモリセルと交換することにより修復され得る。通常、そのような交換は、メモリアレイ内でヒューズを開閉することにより実現される。
【図面の簡単な説明】
【０００３】
【図１】本明細書の一態様によるセルフテストおよび修復を使用するコンピュータアーキテクチャデバイスの一実施形態の概略図である。
【図２】図１のコンピュータアーキテクチャデバイスのオンボードにおける自動化セルフテストおよび修復ロジックの一実施形態のより詳細概略図である。
【図３ａ】図２におけるセルフテストロジックのプログラマブルストレステストパターンジェネレータの一実施形態のより詳細な概略図である。
【図３ｂ】図２におけるセルフテストロジックのプログラマブルストレステストパターンジェネレータの一実施形態による入れ子命令の概略図である。
【図３ｃ】プログラマブルストレステストパターンジェネレータに提供されたストレステスト命令のシーケンスに応答して、図２のセルフテストロジックのプログラマブルストレステストパターンジェネレータにより生成され得るストレステストパターンの一例の概略図である。
【図３ｄ】プログラマブルストレステストパターンジェネレータに提供されたストレステスト命令のシーケンスに応答して、図２のセルフテストロジックのプログラマブルストレステストパターンジェネレータにより生成され得るストレステストパターンの別の例の概略図である。
【図３ｅ】プログラマブルストレステストパターンジェネレータに提供されたストレステスト命令のシーケンスに応答して、図２のセルフテストロジックのプログラマブルストレステストパターンジェネレータにより生成され得るストレステストパターンのなおも別の例の概略図である。
【図３ｆ】図２におけるセルフテストロジックのプログラマブルストレステストパターンジェネレータのパターンジェネレータの一実施形態のより詳細な概略図である。
【図４】入れ子のループの状態で配置されたストレステスト命令のシーケンスに応答してストレステストパターンを生成する、図２のセルフテストロジックのプログラマブルストレステストパターンジェネレータの本明細書における一態様による複数のオペレーションの一実施形態を図示する。
【図５】修復リストレポジトリに欠陥メモリセルを格納するメモリ位置のアドレスを検出および記録する、図２の欠陥検出器ロジック回路の本明細書における一態様による複数のオペレーションの一実施形態を図示する。
【図６】本明細書の一態様による修復リストレポジトリの一実施形態の概略図である。
【図７】図２における自己修復ロジックの一実施形態の概略図である。
【図８ａ】図１のセルフテストロジックにおける構成可能なパイプラインアドレスジェネレータの複数の構成の例の概略図である。
【図８ｂ】図１のセルフテストロジックにおける構成可能なパイプラインアドレスジェネレータの複数の構成の例の概略図である。
【図８ｃ】図１のセルフテストロジックにおける構成可能なパイプラインアドレスジェネレータの複数の構成の例の概略図である。
【図８ｄ】図１のセルフテストロジックにおける構成可能なパイプラインアドレスジェネレータの複数の構成の例の概略図である。
【図８ｅ】図１のセルフテストロジックにおける構成可能なパイプラインアドレスジェネレータの複数の構成の例の概略図である。
【図８ｆ】図１のセルフテストロジックにおける構成可能なパイプラインアドレスジェネレータの複数の構成の例の概略図である。
【図８ｇ】図１のセルフテストロジックにおける構成可能なパイプラインアドレスジェネレータの複数の構成の例の概略図である。
【図８ｈ】図１のセルフテストロジックにおける構成可能なパイプラインアドレスジェネレータの複数の構成の一例の概略図である。
【図９ａ】図１におけるセルフテストロジックの構成可能なパイプラインアドレスジェネレータの様々な構成の複数のオペレーションの一例である。
【図９ｂ】図１におけるセルフテストロジックの構成可能なパイプラインアドレスジェネレータの様々な構成の複数のオペレーションの例である。
【図９ｃ】図１におけるセルフテストロジックの構成可能なパイプラインアドレスジェネレータの様々な構成の複数のオペレーションの一例である。
【図１０】図１におけるセルフテストロジックの構成可能なパイプラインアドレスジェネレータの複数のパイプステージの複数のオペレーションの一例である。
【図１１】図１におけるセルフテストロジックの構成可能なパイプラインアドレスジェネレータの複数のパイプステージのオペレーションのクロックサイクルインターバルの概略図である。
【図１２】可変リフレッシュ信号ジェネレータとして構成された、図１におけるセルフテストロジックのアルゴリズムジェネレータの一例の概略図である。
【図１３】図１におけるセルフテストロジックのアルゴリズムジェネレータの別の例の概略図である。
【図１４】図１３におけるアルゴリズムジェネレータのオペレーションのブール関数ベースのモードの複数の例を図示する表である。
【図１５】図１３におけるアルゴリズムジェネレータのマルチモードパターンシーケンサの一例を示す。
【図１６】図１３におけるアルゴリズムジェネレータのマルチモードパターンシーケンサにおける１つのモードで生成され得るクロック信号の一例を示す。
【図１７】図１３におけるアルゴリズムジェネレータのマルチモードパターンシーケンサの有限状態マシンに基づいたリニアフィードバックシフトレジスタのビットの複数の例を示す概略図である。
【図１８ａ】図１におけるセルフテストロジックのデータジェネレータの複数の動作の一例である。
【図１８ｂ】図１におけるセルフテストロジックのデータジェネレータの一例の概略図である。
【図１９ａ】図１８ｂのデータジェネレータによるテスト中のメモリ領域に生成され得るデータ反転パターンの一例である。
【図１９ｂ】図１８ｂのデータジェネレータによるテスト中のメモリ領域に生成され得るデータ反転パターンの一例である。
【図１９ｃ】図１８ｂのデータジェネレータによるテスト中のメモリ領域に生成され得るデータ反転パターンの一例である。
【図１９ｄ】図１８ｂのデータジェネレータによるテスト中のメモリ領域に生成され得るデータ反転パターンの一例である。
【図１９ｅ】図１８ｂのデータジェネレータによるテスト中のメモリ領域に生成され得るデータ反転パターンの一例である。
【図１９ｆ】図１８ｂのデータジェネレータによるテスト中のメモリ領域に生成され得るデータ反転パターンの一例である。
【図１９ｇ】図１８ｂのデータジェネレータによるテスト中のメモリ領域に生成され得るデータ反転パターンの一例である。
【図２０ａ】図１におけるセルフテストロジックのアドレスオフセットジェネレータの複数のオペレーションの一例である。
【図２０ｂ】図１におけるセルフテストロジックのアドレスオフセットジェネレータの一例の概略図である。
【図２１】図２０ｂにおけるアドレスオフセットジェネレータに対するアドレスオフセット命令の複数のパラメータの表の一例である。
【図２２】図１におけるセルフテストロジックのチェーン化反転関数ステージの一例の概略図である。
【図２３】図１におけるセルフテストロジックのデータレーン回転関数の一例を図示する概略図である。
【発明を実施するための形態】
【０００４】
通常、特化した集積回路デバイステスタが製造検証テストを実行するべく使用いられる。通常、そのようなテスト装置は、テストソフトウェアを実行するコンピュータを用いて人間のオペレータまたは自動化システムにより制御される。メモリデバイスをテストするべく、様々なメモリアドレスのテストパターン、メモリコマンドおよびテストデータがコンピュータメモリから読み取られ、またはそうでなければ生成され、デバイスのテスタによりテスト中のデバイスに適用され得る。通常、テスト中のデバイスは、半導体ウェハ上にあり、あるいはウェハから切断されたダイ上にある場合がある。
【０００５】
適用されるテストパターンに応答してデバイスから読み取られたテストデータは、外部テスタ用ソフトウェアにより期待結果と比較され、欠陥を識別する。
【０００６】
このように識別された複数のメモリデバイスにおける欠陥は、いくつかの例において、メモリの欠陥を含むデバイスにコマンドを発することにより修復され得る。例えば、いくつかのメモリ回路において、欠陥メモリセルを含むメモリセルの行は、メモリセルのスペア行と交換され得る。
【０００７】
いくつかの集積回路デバイスは、内蔵型セルフテスト（ＢＩＳＴ）回路を有する。例えば、集積回路メモリアレイは、メモリアレイに標準的スタティックランダムアクセスメモリ（ＳＲＡＭ）の１３Ｎマーチテストアルゴリズムを実行する回路を含み得る。通常、状態マシンは、回路と共に１３Ｎマーチテストアルゴリズムを生成してサンプルデータを出力し、結果の署名を生成するように用いられる。次に、メモリアレイ内に欠陥が存在するか否かを判断するべく、署名は期待値と比較される。
【０００８】
残念ながら、これらの既知のＢＩＳＴルーチンは多くの場合、固定されたテストシーケンスをメモリアレイに適用することに限定されてきた。そのようなメモリアレイを製造する処理が発達してきたので、製造テストのエンジニアは通常、メモリアレイにおいて静的および動的欠陥の双方を検出する向上した戦略を展開するようになっている。
【０００９】
更に、欠陥を検出するそのような向上した戦略は通常、デバイスが高価な集積回路デバイステスタに配置される間に行われるテストに適用されてきた。従って、エンジニアは多くの場合、高価なテスタを用いることなく、または集積回路デバイスを再設計することなく向上したテスト戦略の利点を実現することができなかった。メモリ技術、具体的には通常は複数のダイナミックランダムアクセスメモリデバイス（ＤＲＡＭ）と共に用いるＧＨｚ範囲の速度で起動する狭い高速バスの分野における発展により、メモリモジュールまたはメモリコンポーネントをそのような高い動作周波数でテストすることができる高速テスタを得ることは、非常に高価である。
【００１０】
従って、高価な高速ハードウェアテスタを追加で用いることにより、これらのメモリモジュールおよびメモリコンポーネントの全体としての製造コストが増大することになる。
【００１１】
図１は、本明細書の一態様による欠陥検出および修復を使用するコンピュータアーキテクチャデバイス１００の一実施形態を図示する。コンピュータアーキテクチャデバイス１００は、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、電話デバイス、ネットワークアプライアンス、仮想化デバイス、ストレージコントローラ、ポータブルもしくはモバイルデバイス（例えば、ラップトップ、ネットブック、タブレットコンピュータ、携帯情報端末（ＰＤＡ）、ポータブルメディアプレーヤ、ポータブルゲームデバイス、デジタルカメラ、携帯電話、スマートフォン、フィーチャフォン等）、またはコンポーネント（例えば、システムオンチップ、プロセッサ、ブリッジ、メモリコントローラ、メモリ等）など当技術分野において既知の任意のコンピューティングデバイスを備え得る。アーキテクチャデバイス１００は、プロセッサ１０２（例えばマイクロプロセッサ）、メモリ１０４（例えば、揮発性または不揮発性メモリデバイス）、およびメモリ１０４との間で入出力動作を制御するメモリコントローラ１０６を備え得る。
【００１２】
以下により詳細に説明されるように、メモリコントローラ１０６は、デバイス１００内に内蔵されたセルフテストロジック回路１１０を有する内部欠陥検出および修復回路１０８と、やはりデバイス１００内に内蔵された自己修復ロジック回路１１４とを備える。内蔵型セルフテストロジック回路１１０は、メモリ１０４内の複数の欠陥メモリセルを自動的に識別するように構成され得る。１または複数の欠陥メモリセルを識別すると、内蔵型自己修復ロジック回路１１４は、メモリ１０４内で欠陥セルをスペアセルと交換することにより、欠陥メモリセルを自動的に修復するように構成され得る。メモリダイは、セルフテストロジック回路１１０および自己修復ロジック回路１１４を有するロジックダイと同一のパッケージに含まれ得る。あるいは、メモリダイは、ロジックダイのパッケージ外部に、ロジックダイの上部に、ロジックダイに隣接して、またはデュアルインラインメモリモジュール（ＤＩＭＭ）等のモジュールにおけるプラグ上にあり得る。
【００１３】
本明細書において用いられるように、「自動化された」という用語は、デバイスのストレステストが開始されると、デバイスのテストおよび修復オペレーションが、いずれのユーザも介在することなく、少なくとも１つのメモリ位置の修復により進行する、完全な自動化を含む。また、「自動化された」という用語は、デバイスのストレステストが開始されると、デバイスのテストおよび修復オペレーションがユーザの介在が限定された状態で、少なくとも１つのメモリ位置の修復により進行する、実質的な自動化を含む。しかし、ほとんどのテストおよび修復オペレーションは、いずれのユーザも介在することなく進行する。いくつかの実施形態において、テストおよび修復オペレーションのうち少なくとも５０％、少なくとも７５％または少なくとも９５％は、ユーザが介在することなく進行する。
【００１４】
図示された実施形態において、メモリコントローラ１０６は、デバイス１００内の半導体ダイ上に配置され、回路１０８の内部セルフテストロジック回路１１０および内部自己修復ロジック回路１１４は、メモリコントローラ１０６の同一のダイ上に配置されている。従って、内部セルフテストロジック回路１１０および内部自己修復ロジック回路１１４は、メモリコントローラ１０６に内蔵されているものとして図示されているが、内部セルフテストロジック回路１１０および内部自己修復ロジック回路１１４は、コンピュータアーキテクチャデバイス１００の他の回路に内蔵されてもよいことを理解されたい。
【００１５】
以下により詳細に説明されるように、内部セルフテストロジック回路１１０は、メモリ１０４をテストするための広範なテストパターンを生成することができる。
【００１６】
更に、いくつかの実施形態において、内部セルフテストロジック回路１１０により生成された複数のテストパターンは、条件が保証するのであれば容易に修正され得る。一実施形態において、データの生成済みパターンは、データの生成済みパターンが書き込まれるメモリセルのメモリセルアドレスのパターンの関数となるように選択され得る。以下により詳細に説明されるように、様々なデータパターンは例えば、選択されたメモリアドレスベースの関数に応じて反転データ、ストライプパターンもしくはチェッカボードパターン、または他のパターンを含む複数のメモリアドレスの関数として容易に生成され得る。
【００１７】
別の実施形態において、データの生成済みパターンの複数のビット位置は選択的に回転され得、データの生成済みパターンは、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスについて、選択可能な回数だけ選択的に反復され得る。なおも別の実施形態において、データの生成済みパターンは、データの生成済みパターンが書き込まれるメモリセルにおける複数のメモリアドレスのメモリアドレスオフセットの周期的パターンの関数となるように選択され得る。アドレスオフセットジェネレータは、メモリアドレスオフセット命令（オフセットアドレス命令とも称される）に応答して、周期の関数として複数のメモリアドレスオフセットの周期的パターンを生成し得る。以下に説明されるように、アドレスオフセットジェネレータは、メモリセルの斜めのパターンのデータを反転する周期的アドレスオフセットを、例えばテスト中のメモリ領域の行の数または列の数の関数として生成するように構成され得る。
【００１８】
内部欠陥検出および修復回路１０８がメモリセルと同一のダイ上に位置する場合、欠陥検出および修復回路はアクティブ化されて、製造処理中にウェハまたはダイレベルのメモリの欠陥をテストおよび修復し得るが、これは半導体コンポーネントが組み込まれてパッケージ化された後でもよい。欠陥検出および修復回路がロジックデバイス等の別個のダイ上に位置する場合、欠陥検出および修復回路は、メモリが欠陥検出および修復回路を含むデバイスに接続された後にメモリデバイスまたは複数のメモリデバイスをテストするべく用いられ得る。更に、いくつかの実施形態において、デバイス１００が筐体内にパッケージ化されて消費者に販売された後にメモリ障害が生じた場合、内部欠陥検出および修復回路１０８は、アクティブ化されてメモリの障害をテストおよび修復し得ることを理解されたい。従って、内部欠陥検出および修復回路１０８は、プロセッサ１０２とメモリ１０４との間の通常のメモリトランザクションをインタラプトしてメモリテストおよび修復オペレーションを行い得る。
【００１９】
コンピュータアーキテクチャデバイス１００は、ストレージ１１６（例えば、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、フラッシュメモリ等の不揮発性ストレージ）を更に含み得る。ストレージ１１６は、内部ストレージデバイス、または取り付け済みもしくはネットワークアクセス可能なストレージを備え得る。ストレージ１１６内の複数のプログラムは、メモリ１０４にロードされて、当技術分野において既知の態様でプロセッサ１０２により実行される。コンピュータアーキテクチャデバイス１００は、イーサネット（登録商標）、ファイバチャネル調停ループ等のネットワークとの通信を可能にするネットワークコントローラまたはアダプタ１１８を更に備える。更に、特定の実施形態においてアーキテクチャは、情報を表示モニタ上にレンダリングするビデオコントローラ１２０を含み、ビデオコントローラ１２０は、ビデオカード上に実施され、またはマザーボードもしくは他の基板上に搭載された複数の集積回路コンポーネント上に統合され得る。入力デバイス１２２は、ユーザ入力をプロセッサ１０２に提供するべく用いられ、キーボード、マウス、ペンスタイラス、マイク、タッチ感応表示スクリーン、入力ピン、ソケット、または当技術分野において既知のその他のアクティブ化もしくは入力メカニズムを含み得る。出力デバイス１２４は、プロセッサ１０２、または表示モニタ、プリンタ、ストレージ、出力ピン、ソケット等の他のコンポーネントから送信された情報をレンダリングすることができる。ネットワークアダプタ１１８は、周辺構成要素相互接続（ＰＣＩ）カード、ＰＣＩエクスプレス、もしくはいくつかの他のＩ／Ｏカード等のネットワークカード上、またはマザーボードもしくは他の基板上に搭載された集積回路コンポーネント上に実施され得る。
【００２０】
内部欠陥検出および修復回路１０８は、テストおよび修復入出力情報がデバイス１００の欠陥検出および修復回路１０８と複数の他のコンポーネントとの間で送信され、そして適切な場合には、入力デバイス１２２および出力デバイス１２４を介してコンピュータアーキテクチャデバイス１００の外部の複数のデバイスに送信され得るポータル１２６を含む。ポータル１２６の一例は、オンチップ通信ネットワークまたはファブリック側の帯域である。一実施形態において、ポータル１２６は、テストアクセスポート（ＴＡＰ）システムにより外部でアクセスされ得る。他の複数の通信ポータルは、具体的な用途に応じて使用され得る。
【００２１】
デバイス１００の複数のコンポーネントのうち１または複数は、具体的な用途に応じて省略されてもよい。例えば、ネットワークルータは、例えばビデオコントローラ１２０を欠く場合がある。また、コンピュータアーキテクチャデバイス１００の複数のコンポーネントのうち任意の１または複数は、本明細書において説明されるオンダイの欠陥検出および修復回路を有する１または複数の集積回路を含み得る。
【００２２】
図２は、本明細書による内部欠陥検出および修復回路１０８のより詳細な例を示す。欠陥検出および修復回路１０８は、テストパターンを生成し、テストデータをメモリデバイスに書き込み、データのコピーを欠陥検出器回路２２０に送信し、テストデータを再び読み取るべく一連の読み取りコマンドを送信するためのテストパターンジェネレータ２１０を含む。メモリデバイスからの読み取りデータは、欠陥検出器回路２２０にルーティングされ、テストパターンジェネレータ２１０からの期待データは、メモリ１０４のメモリセルをテストする複数のテストパターンに応答して、メモリデバイスからの実際のデータと比較され、メモリ１０４における欠陥メモリセルを検出する。
【００２３】
欠陥検出器回路２２０は、修復リストレポジトリとして構成され、またデバイス１０８内に配置されたメモリ２２４内に格納され、これは、メモリ１０４の複数のメモリ位置のリストであり、リストの各メモリ位置は、メモリ１０４に少なくとも１つの欠陥メモリセルを含む１セットのメモリセルを有する。自己修復ロジック回路１１４は、修復リストレポジトリ２２４に格納された複数のメモリ位置のリストを読み取ってリストの複数のメモリ位置を修復するように適合されたロジック回路を含む。図示された実施形態において、リストの複数のメモリ位置は、メモリ１０４のスペアメモリセル２３０のメモリ位置を、少なくとも１つの欠陥メモリセルを有するメモリ位置と交換することにより修復され得る。
【００２４】
一実施形態において、修復リストレポジトリは、様々なフラグ２３４のレジスタまたは複数の他のメモリ位置も含み得る。例えば、フラグがセットされ、少なくとも１つの欠陥メモリセルを有するメモリ位置の数がメモリ１０４の特定のメモリ領域に対する最大値を超えることを示し得る。別のフラグは、各メモリ領域に対してセットされ、特定のメモリ領域の少なくとも１つの行が特定のメモリ領域内に少なくとも１つの欠陥メモリセルを有するか否かを示し得る。他のフラグ２３４は、具体的な用途に応じて修復リストレポジトリ２２４内に格納され得る。
【００２５】
図３ａ、図３ｂ、図３ｆ、図４は、本明細書の一実施形態による、図２におけるテストパターンジェネレータ２１０のより詳細な例を示す。図３ａ、図３ｂ、図４に図示されるロジックは、一実施形態において、ハードウェアの有限状態マシンがメモリコントローラ１０６のダイにオンボードの状態で実装され得る。同様に、この有限状態マシンは、デバイス１００のメモリコントローラ１０４および他の内部ダイと同一のダイ上にハードウェアロジックゲート、またはソフトウェアもしくはファームウェアプログラマブルプロセッサ、またはこれらの組み合わせを用いて実装され得る。
【００２６】
テストパターンジェネレータ２１０は、少なくとも１つのアドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎを含むプログラマブルアドレスパターンジェネレータ３０６、およびプログラマブルアドレスジェネレータ３０６のジェネレータ３１０ａ，３１０ｂ...３１０ｎのうち適切な１または複数に適用されるように適合されたループシーケンサ回路３２０（図３ｆ）、アドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎに対するアドレス命令１，アドレス命令２...アドレス命令ｎのアドレス命令のシーケンス３２４（図３ａ）におけるアドレス命令のシーケンシャルなループ３２２を含む複数の入れ子のループ命令（図３ｂ）を含む複数のジェネレータを含む。各アドレスジェネレータ３１０ａ，３１０ｂ...３１ｎは、１または複数の有限状態マシンを含み得る。アドレス命令１，アドレス命令２...アドレス命令ｎといったシーケンス３２４の各アドレス命令は、適切なアドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎにより実行されると、当該アドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎに特定のアドレス命令、アドレス命令１，アドレス命令２...アドレス命令ｎの関数としてメモリセルアドレスのパターン、およびそれが適用される特定のアドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎを生成させる。テストパターンジェネレータ２１０（図２）は、複数のアドレス命令ループ３２２（図３ｂ）のシーケンスにおいて実行されるアドレス命令１，アドレス命令２...アドレス命令ｎのアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定されたメモリセルにおいて、メモリコマンドを実行するように適合される。命令ループシーケンサ３２０のカウンタ３２３のあるカウンタは、アドレス命令１，アドレス命令２...アドレス命令ｎのアドレス命令のシーケンス３２４（図３ａ）に対するポインタを生成し、これにより漸次、用いられるべき現在のアドレス命令を生成する。複数のアドレス命令のパラメータは、テストされるメモリ領域の大きさを識別するパラメータ、テストされるメモリ領域の開始アドレス、および特定のアドレス命令がシーケンスの最後のアドレス命令であることを示すパラメータを含み得る。複数のアドレス命令のパラメータの更なる例が以下に提供される。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。
【００２７】
例えば、図３ｂは、アドレス命令ループ３２２内で入れ子にされたデータ命令ループ３３０、データ命令ループ３３０内で入れ子にされたアルゴリズム命令ループ３３２、アルゴリズム命令ループ３３２内で入れ子にされたコマンド命令ループ３３４、およびコマンド命令ループ３３４内で入れ子にされた１セットのオフセット命令３３７の選択可能なオフセット命令ループ３３６ａ、３３６ｂを含む複数の入れ子の命令ループ３２８を示す。いくつかの実施形態において、入れ子の命令ループの数およびタイプは、図示されるものとは異なる場合があり、入れ子の順序も具体的な用途に応じて変更される得ることを理解されたい。
【００２８】
図３ｃは、例えば、メモリ１０４におけるメモリセル３４０のメモリ領域３３８に対するアドレス命令１，アドレス命令２...アドレス命令ｎのアドレス命令のうちの１つ、例えばアドレス命令１等に応答して、アドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎのうちの１つ、アドレスジェネレータ３１０ａ等により生成され得るアドレスパターンの一例を示す。メモリ領域３３８は、複数の列および行に配置された４×４のアレイのメモリセル３４０により表される。典型的なメモリ領域は実質的により大きく、従ってキロバイト、メガバイト、ギガバイト、テラバイトまたはそれ以上に達するメモリセルを有し得る。メモリ領域の一例は多くの場合、「バンク」と称される。各メモリセル３４０は、具体的な用途に応じて１ビット、１バイト、ビットのワードまたはより長い文字列を格納し得る。
【００２９】
本例において、生成されたアドレスパターンは、アドレスパターンの生成済みアドレスがメモリセル３４０における特定の列の次の隣接メモリセルへと「ウォーク」する「ウォーキング」パターンである。従って、アドレスパターンは、順序付けられたペアの列アドレスおよび行アドレスとして表され得る特定のメモリセルアドレスにおいて開始し得、そのような列・行アドレス（０，０）が図３ｃに図示されている。この特定のアドレスパターンの次のアドレスは、メモリセルアドレスの行アドレス部分を、図３ｃに図示される列・行アドレス（０，１）にインクリメントすることにより生成され得る。列における複数の残余のメモリセルの残余のアドレスは、このようにしてシーケンシャルに生成される。
【００３０】
列の端に達すると、行アドレス部分は、元の行アドレスにリセットされ得、列アドレスは、図３ｃに図示される列・行アドレス（１，０）にインクリメントされ得る。領域３３８におけるメモリの残余のメモリセルの残余のアドレスは、このようにしてシーケンシャルに生成される。最後の列の端に達するときのアドレスパターンの最終列・行アドレス（３，３）が、図３ｃに図示されている。
【００３１】
生成されるアドレスパターンは、アドレス命令を変更することにより、またはアドレス命令が適用されるアドレスジェネレータを変更することにより、あるいはその双方により容易に変更され得る。従って、図３ｃに図示される例において、セルウォーキングの方向は、適切なアドレス命令をアドレスジェネレータに提供することにより、図３ｃに示されるものの逆となり得る。複数の他のアドレスパターンは例えば、１列だけ上にウォークし、次にもう１列だけ下にウォークし得る。複数の他のアドレスパターンは、１列上または下にウォークすることに代えて、異なる行に変更するまえにある行の反対側にウォークし得る。メモリをストレステストするのに好適な、メモリをトラバースする複数の他のアドレスパターンは、適切なアドレス命令の選択およびアドレスジェネレータの設計により容易に実装され得る。従って、アドレス命令の複数のパラメータは、アドレス生成方向を定義するパラメータを含み得る。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。複数のアドレスジェネレータに複数のアドレス命令を提供することにより、メモリに対する好適なストレステストの実装を容易にすることを理解されたい。
【００３２】
図示された実施形態において、アドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎに適用されるアドレス命令１，アドレス命令２...アドレス命令ｎのアドレス命令のシーケンス３２４（図３ａ）は例えば、４つのアドレス命令のシーケンスを含み得る。複数のアドレス命令のシーケンスにおけるアドレス命令の数は、具体的な用途に応じて異なり得ることを理解されたい。
【００３３】
テストパターンジェネレータ２１０は、少なくとも１つのデータジェネレータ３４４ａ，３４４ｂ...３４４ｎ（図３ｆ）を含むプログラマブルデータパターンジェネレータ３４２を更に含む。ループシーケンサ回路３２０は、データジェネレータ３４４ａ，３４４ｂ...３４４ｎ、データ命令１，データ命令２...データ命令ｎのデータ命令のシーケンス３４６のデータ命令（図３ａ）のシーケンシャルなループ３３０（図３ｂ）を含む複数の入れ子のループ命令のうち適切なものに適用されるように適合されている。命令ループシーケンサ３２０のカウンタ３２３のあるカウンタは、データ命令のシーケンス３４６（図３ａ）に対するポインタを生成し、これにより漸次、用いられるべき現在のアドレス命令を生成する。複数のデータ命令のパラメータは、特定のデータ命令がシーケンスの最後のアドレス命令であることを示すパラメータを含み得る。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。各データジェネレータ３４４ａ，３４４ｂ...３４４ｎは、１または複数の有限状態マシンを含み得る。シーケンス３４６のデータ命令１，データ命令２...データ命令ｎといった各データ命令は、データジェネレータ３４４ａ，３４４ｂ...３４４ｎのうちの適切な１つにより実行されると、当該データジェネレータ３４４ａ，３４４ｂ...３４４ｎに、データ命令１，データ命令２...データ命令ｎの特定のデータ命令の関数としてデータパターン、およびそれが適用される特定のデータジェネレータ３４４ａ，３４４ｂ...３４４ｎを生成させる。テストパターンジェネレータ２１０（図２）は、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された、複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて、データ命令１，データ命令２...データ命令ｎといったデータ命令のループ３３０（図３ｂ）のシーケンス３４６において実行されるデータ命令により生成されたテストデータのパターンを書き込むべく、メモリセルにおいて複数のメモリコマンドを実行するように適合される。従って、図３ｃの例において、例えばプログラマブルデータパターンジェネレータ３４２のデータジェネレータ３４４ａのようなデータジェネレータは、例えばデータ命令１等の複数のデータ命令のうちの１つに応答して、例えば複数のデータビット全て等の文字列を生成し得る。生成済みデータパターンの生成済みデータビットは、例えばアドレスジェネレータ３１０ａが例えばアドレス命令１のようなアドレス命令のうちの１つに応答して、メモリ１０４のメモリセル３４０におけるメモリ領域３３８について図示されたウォーキングアドレスパターンを生成するときに、テストパターンジェネレータ２１０により例えば、各メモリセル３４０に書き込まれる。プログラマブルデータパターンジェネレータ３４２により生成され得る複数のデータパターンの他の例としては、具体的な用途に応じて、０の文字列、１と０の交互チェッカボードパターン等が挙げられる。従って、プログラマブルデータパターンジェネレータ３４２により出力されるデータは、メモリ１０４をトラバースするメモリアドレスにおいて複数のコマンドが実行されるときに、例えばメモリ１０４をストレステストするべく、書き込みデータとして用いられ得る。更に、プログラマブルデータパターンジェネレータ３４２により出力されるデータは、期待テスト結果データとしても用いられ、メモリ１０４にストレステストが行われるときに得られた実際のテストデータと比較し得る。なおも更に、生成済みデータパターンは、メモリ１０４の制御信号入力を制御する制御信号としても用いられ得る。従って、データ命令のパラメータとしては、データを反転するか否かを示し、ソリッド、列ストライプ、行ストライプ、チェッカーボード等、様々なデータバックグラウンドを示すパラメータが挙げられ得る。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。
【００３４】
図示された実施形態において、データ命令１，データ命令２...データ命令ｎといったデータ命令のシーケンス３４６（図３ａ）は、適切なデータジェネレータ３４４ａ，３４４ｂ...３４４ｎに適用され、例えば４つのデータ命令のシーケンスを含み得る。複数のデータ命令のシーケンスにおけるデータ命令の数は、具体的な用途に応じて異なり得ることを理解されたい。
【００３５】
テストパターンジェネレータ２１０は、プログラマブルアルゴリズムパターンジェネレータ３５０を更に含み、プログラマブルアルゴリズムパターンジェネレータ３５０は、少なくとも１つのアルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎ（図３ｆ）を含む。ループシーケンサ回路３２０は、アルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎのうちの適切なものに、アルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといったアルゴリズム命令のシーケンス３５６（図３ａ）におけるアルゴリズム命令のシーケンシャルなループ３３２（図３ｂ）を含む複数の入れ子のループ命令を適用するように適合される。命令ループシーケンサ３２０における複数のカウンタ３２３のうちの１つのカウンタは、複数のアルゴリズム命令のシーケンス３５６（図３ａ）に対するポインタを生成し、これにより漸次、用いられるべき現在のアルゴリズム命令を生成する。複数のアルゴリズム命令のパラメータは、特定のアルゴリズム命令がシーケンスの最後のアルゴリズム命令であることを示すパラメータを含み得る。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。各アルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎは、１または複数の有限状態マシンを含み得る。シーケンス３５６のアルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといった各アルゴリズム命令は、アルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎのうちの適切な１つにより実行されると、当該アルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎに、アルゴリズムの出力としてテストデータパターンを生成させる。
【００３６】
一実施形態において、プログラマブルアルゴリズムテストジェネレータ３５０は、プログラマブルデータパターンジェネレータ３４２により生成されたデータパターンを入力して、シーケンス３５６のアルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといった選択済みのアルゴリズム命令を実行する選択済みのアルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎのアルゴリズムにより、入力済みデータパターンを修正済みデータパターンに修正する。複数の他の実施形態において、プログラマブルアルゴリズムテストジェネレータ３５０は、プログラマブルデータパターンジェネレータ３４２により生成されたデータパターンを入力することなく、アルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといった特定のアルゴリズム命令の関数としてのデータパターン、およびそれが適用される特定のアルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎを生成する。
【００３７】
テストパターンジェネレータ２１０（図２）は、アルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといったアルゴリズム命令のループ３３２のシーケンス３５６において実行されるアルゴリズム命令に従ってデータテストパターンを、アドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定されたメモリセルに、書き込むべく、メモリセルにおいてメモリコマンドを実行するように適合される。従って、プログラマブルアルゴリズムテストジェネレータ３５０により出力されるデータは、メモリ１０４をトラバースするメモリアドレスにおいて複数のコマンドが実行されるときに、例えばメモリ１０４をストレステストするべく、書き込みデータとして用いられ得る。なおも更に、プログラマブルアルゴリズムテストジェネレータ３５０により出力されたデータは、メモリ１０４にストレステストが行われたときに得られた実際のテストデータと比較する、期待テスト結果データとしても用いられ得る。更に、生成済みデータパターンは、メモリ１０４の制御信号入力を制御する制御信号としても用いられ得る。
【００３８】
例えばシーケンス３５６のアルゴリズム命令１のような、アルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎの選択済みのアルゴリズム命令を実行する、例えばアルゴリズムジェネレータ３５４ａのような選択済みのアルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎにより生成され得るアルゴリズムの一例は、例えばメモリ１０４の相互接続をテストするのに用いられ得るランダムパターンアルゴリズムに基づいたシフトレジスタである。例えばアルゴリズム命令１のような選択済みのアルゴリズム命令を実行する、例えばアルゴリズムジェネレータ３５４ａのようなアルゴリズムジェネレータにより生成されたこれらのランダムパターンは、相互接続上にホワイトノイズを生成して、欠陥をテストする相互接続にストレスを与えるものと考えられている。上記のように、ランダムパターンは、プログラマブルアルゴリズムパターンジェネレータ３５０のアルゴリズムジェネレータを用いて、プログラマブルデータパターンジェネレータ３４２のジェネレータにより生成されたテストデータパターンを修正することにより生成され得る。あるいは、ランダムパターンは、プログラマブルデータパターンジェネレータ３４２のジェネレータにより生成されたテストデータパターンを修正することなく、プログラマブルアルゴリズムパターンジェネレータ３５０のアルゴリズムジェネレータにより生成され得る。
【００３９】
例えばシーケンス３５６のアルゴリズム命令２のような、アルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎの選択済みのアルゴリズム命令を実行する、例えばアルゴリズムジェネレータ３５４ｂのような選択済みのアルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎにより生成され得るアルゴリズムの別の例は、隣接インタラクションベースのアドレスウォーキングアルゴリズムである。このアルゴリズムは、主に、例えば本質的には容量性であるダイナミックランダムアクセスメモリのメモリセルをテストするのに用いられ得る。隣接インタラクションベースのアドレスウォーキングアルゴリズムによれば、メモリ内の全ての隣接セルが切り替えられると、相互結合効果により、テスト中のセルは誤ったデジタル値にフリップし得る。
【００４０】
図３ｄは、メモリ１０４の複数のメモリセル３４０のメモリ領域３５８に対して、例えばシーケンス３５６のアルゴリズム命令２を実行する、例えばアルゴリズムジェネレータ３５４ｂにより生成され得る隣接インタラクションベースのアドレスウォーキングアルゴリズムの一例を示す。メモリ領域３５８は、列および行で配置された７×１２のメモリセル３４０のアレイにより表される。
【００４１】
このアルゴリズムにおいて、「ベース」と指定されたメモリセル３４０ａのアドレスは、「ベースアドレス」としてのアドレスジェネレータにより生成され、メモリセル３４０ａは、離れた２つのセル内の複数の隣接セルによりストレスを与えられている。従って、テストパターンジェネレータ２１０（図２）は、例えばシーケンス３５６のアルゴリズム命令２を実行する、例えばアルゴリズムジェネレータ３５４ｂにより生成され得る隣接インタラクションベースのアドレスウォーキングアルゴリズムによれば、第１の隣接メモリセル３４０ｂにおいて書き込み（Ｗｒ１）および読み取り（Ｒｄ１）の第１のセットのメモリコマンドを実行し、第２の隣接メモリセル３４０ｂにおいて書き込み（Ｗｒ２）および読み取り（Ｒｄ２）の第２のセットのメモリコマンドを実行するなどして、第８の隣接メモリセル３４０ｄにおいて書き込み（Ｗｒ８）および読み取り（Ｒｄ８）の第８のセットのメモリコマンドで終了するように適合される。
【００４２】
アルゴリズム命令のパラメータとしては、例えば、複数のコマンドのシーケンスのうちの開始コマンド、当該複数のコマンドのシーケンスの開始アドレスの方向、データが反転されるべきか否か、開始から待機状態が満たされるまで新しいアルゴリズム命令を禁止する１または複数の待機周期、コマンド命令のシーケンスのような命令のシーケンスに対する命令カウンタ等のカウンタをリセットするか否かを示すパラメータが更に挙げられ得る。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。
【００４３】
シーケンス３５６のアルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといったアルゴリズム命令は、アルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎのうちの適切な１つにより実行されると、具体的な用途に応じてメモリ１０４をストレステストする他の複数のアルゴリズムを実装し得ることを理解されたい。図示された実施形態において、適切なアルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎに適用されるアルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといったアルゴリズム命令のシーケンス３５６（図３ａ）は、例えば８つのアルゴリズム命令のシーケンスを含み得る。複数のアルゴリズム命令のシーケンスにおけるアルゴリズム命令の数は、具体的な用途に応じて異なり得ることを理解されたい。
【００４４】
テストパターンジェネレータ２１０は、プログラマブルコマンドパターンジェネレータ３６０を更に含み、プログラマブルコマンドパターンジェネレータ３６０は、少なくとも１つのコマンドジェネレータ３６４ａ，３６４ｂ...３６４ｎ（図３ｆ）を含む。ループシーケンサ回路３２０は、コマンド命令１，コマンド命令２...コマンド命令ｎといったコマンド命令のシーケンス３６６（図３ａ）における複数のコマンド命令のシーケンシャルなループ３３４（図３ｂ）を含む複数の入れ子のループ命令を、コマンドジェネレータ３６４ａ，３６４ｂ...３６４ｎのうちの適切なものに適用するように適合される。命令ループシーケンサ３２０における複数のカウンタ３２３のうちの１つのカウンタは、複数のコマンド命令のシーケンス３６６（図３ａ）に対するポインタを生成し、これにより漸次、用いられるべき現在のコマンド命令を生成する。複数のコマンド命令のパラメータは、特定のコマンド命令がシーケンスの最後のコマンド命令であることを示すパラメータを含み得る。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。各コマンドジェネレータ３６４ａ，３６４ｂ...３６４ｎは、１または複数の有限状態マシンを含み得る。シーケンス３６６のコマンド命令１，コマンド命令２...コマンド命令ｎといった各コマンド命令は、コマンドジェネレータ３６４ａ，３６４ｂ...３６４ｎのうちの適切な１つにより実行されると、当該コマンドジェネレータ３６４ａ，３６４ｂ...３６４ｎに、特定の選択済みのコマンドジェネレータおよび特定の選択済みのコマンド命令の関数として複数のコマンドのパターンを生成させる。
【００４５】
テストパターンジェネレータ２１０（図２）は、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成されたメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて、コマンド命令１，コマンド命令２...コマンド命令ｎとったコマンド命令ループ３３４のシーケンス３６６において実行されるコマンド命令に従って、複数のメモリセルにおいてメモリコマンドのパターンを実行するように適合される。書き込みコマンドのデータは、上述のプログラマブルデータパターンジェネレータ３４２およびプログラマブルアルゴリズムジェネレータ３５０のうちの１つまたは双方により提供される。メモリ１０４に書き込まれるべきデータを提供することに加えて、生成済みデータパターンは、メモリ１０４の複数の制御信号入力を制御する、プログラマブルコマンドパターンジェネレータ３６０の制御信号コマンドとしても用いられ得る。
【００４６】
図示された実施形態において、適切なコマンドジェネレータ３６４ａ，３６４ｂ...３６４ｎに適用されるコマンド命令１，コマンド命令２...コマンド命令ｎといったコマンド命令のシーケンス３６６（図３ａ）は、例えば２４のコマンド命令のシーケンスを含み得る。複数のコマンド命令のシーケンスにおけるコマンド命令の数は、具体的な用途に応じて異なり得ることを理解されたい。
【００４７】
一実施形態において、コマンド命令１，コマンド命令２...コマンド命令ｎの各コマンド命令は、コマンドジェネレータ３６４ａ，３６４ｂ...３６４ｎの適切なコマンドジェネレータに、例えばメモリ書き込みまたはメモリ読み取りコマンド等の１つのコマンドを生成するように命令し得る。複数の他の実施形態において、コマンド命令１，コマンド命令２...コマンド命令ｎの各コマンド命令は、コマンドジェネレータ３６４ａ，３６４ｂ...３６４ｎの適切なコマンドジェネレータに、複数のコマンドのシーケンスを生成するように命令し得る。
【００４８】
例えば、図３ｃに図示されるストレステストパターンにおいて、プログラマブルアドレスパターンジェネレータ３０６が示されるようなメモリ領域３３８を通ってウォークするアドレスのパターンを生成すると、１つのコマンド、本例においては書き込みコマンドがメモリ領域３３８の各メモリセルに実行される。図３ｅは、コマンドのシーケンスを使用する複数の部分のストレステストを図示する。図３ｅにおけるストレステストの第１部において、図３ｃに図示されるストレステストパターンの態様と同様に、プログラマブルアドレスパターンジェネレータ３０６が示されるようなメモリ領域３３８を通ってウォークするアドレスのパターンを生成して、メモリ領域３３８を初期化すると、１つのコマンド、本例においては書き込みコマンドがメモリ領域３３８の各メモリセルに実行される。メモリ領域３３８がストレステストの第１部で書き込みコマンドにより各メモリセルに対して初期化されると、プログラマブルアドレスパターンジェネレータ３０６が第１部で生成された複数のアドレスの同一のパターンを再び生成し、示されるように、これがメモリ領域３３８を通って再びウォークするのが２度目である場合に、コマンドのシーケンス、本例においてはクイック読み取りコマンド（Ｒ）、そしてその後に書き込み反転（Ｗｂａｒ）コマンドが同一のメモリ領域３３８の各メモリセルに実行される。ストレステストの第２部の後、プログラマブルアドレスパターンジェネレータ３０６が第１部および第２部で生成された複数のアドレスの同一のパターンを再び生成し、示されるように、これが再びメモリ領域３３８を通ってウォークするのが３度目である場合に、別のシーケンスのコマンド、本例においてはクイックリード反転（Ｒｂａｒ）コマンド、そしてその後に書き込み（Ｗ）コマンドが同一のメモリ領域３３８の各メモリセルに実行される。
【００４９】
一実施形態において、各コマンド命令は、コマンドジェネレータの共通の有限状態マシンに適用され得る。複数の他の実施形態において、複数のコマンド命令は様々なコマンドパターンジェネレータの異なる有限状態マシンに適用され得ることを理解されたい。
【００５０】
一実施形態において、各コマンド命令は、実行する１つのコマンドを定義する。コマンドのシーケンスは、複数のコマンド命令のシーケンスにより提供され得、それらの各々は、シーケンスにおける特定のメモリアドレスに適用され得る。次に、複数のコマンドのシーケンスは、異なるアドレスのシーケンスを通して、ストレステストの途中のある時点の１つのアドレス位置に対して適用され得る。複数の他の実施形態において、コマンド命令は、シーケンスにおける２つ以上のコマンドを定義し得ることを理解されたい。
【００５１】
従って、一実施形態において、コマンド命令の複数のパラメータとしては、読み取りまたは書き込みコマンドを示し、コマンドのデータが反転されるか否かを示し、代替のデータ源および反復される書き込みオペレーションを指定する「ハンマー」関数を識別するパラメータが挙げられ得る。複数の他のパラメータが具体的な用途に応じて使用され得ることを理解されたい。
【００５２】
テストパターンジェネレータ２１０は、プログラマブルアドレスオフセットパターンジェネレータ３７０を更に含み、プログラマブルアドレスオフセットパターンジェネレータ３７０は、オフセットジェネレータ３７４ａ，３７４ｂ...３７４ｎ（図３ｆ）の少なくとも１つのオフセットジェネレータを含む。各オフセットジェネレータ３７４ａ，３７４ｂ...３７４ｎは、アドレスオフセットのパターンを生成して、プログラマブルアドレスパターンジェネレータ３０６により生成されたベースアドレスをオフセットするように適合される。ループシーケンサ回路３２０は、オフセットジェネレータ３７４ａ，３７４ｂ...３７４ｎのうちの適切なものに、オフセット命令１，オフセット命令２...オフセット命令ｎといったオフセット命令のシーケンス３７６（図３ａ）における複数のオフセット命令の選択済みのシーケンシャルなループ３３６ａ、３３６ｂ（図３ｂ）を含む複数の入れ子のループ命令を適用するように適合される。命令ループシーケンサ３２０における複数のカウンタ３２３のうちの１つのカウンタは、複数のオフセット命令のシーケンス３７６（図３ａ）に対するポインタを生成し、これにより漸次、用いられるべき現在のオフセット命令を生成する。複数のオフセット命令のパラメータは、特定のオフセット命令がシーケンスの最後のオフセット命令であることを示すパラメータを含み得る。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。各オフセットジェネレータ３７４ａ，３７４ｂ...３７４ｎは、１または複数の有限状態マシンを含み得る。シーケンス３７６のオフセット命令１，オフセット命令２...オフセット命令ｎといった各オフセット命令は、オフセットジェネレータ３７４ａ，３７４ｂ...３７４ｎの適切な１つにより実行されると、当該オフセットジェネレータ３７４ａ，３７４ｂ...３７４ｎに、特定の選択済みオフセットジェネレータおよび特定の選択済みのオフセット命令の関数として複数のアドレスオフセットのパターンを生成させる。
【００５３】
メモリセルにおいてメモリコマンドを実行するときに、テストパターンジェネレータ２１０（図２）は、複数のアドレス命令ループ３２２のシーケンス３２４において実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて、複数のコマンド命令のループ３３４のシーケンス３６６で実行されるコマンド命令により生成され、複数のメモリアドレスオフセット命令のループ３３６ａ、３３６ｂのシーケンス３７６において実行されるオフセット命令１，オフセット命令２...オフセット命令ｎといったメモリアドレスオフセット命令により生成された複数のメモリアドレスオフセットのパターンによりオフセットされた、複数のコマンドのパターンを実行するように適合される。このように、プログラマブルアドレスパターンジェネレータ３０６により生成されたアドレスパターンのベースアドレスは、プログラマブルオフセットパターンジェネレータ３７０により生成されたオフセットパターンの１または複数のアドレスオフセットによりオフセットされ得る。書き込みコマンドのデータは、上述のプログラマブルデータパターンジェネレータ３４２およびプログラマブルアルゴリズムジェネレータ３５０のうちの１つまたは双方により提供される。
【００５４】
図示された実施形態において、オフセット命令１，オフセット命令２...オフセット命令ｎといったオフセット命令のシーケンス３７６（図３ａ）は、適切なオフセットジェネレータ３７４ａ，３７４ｂ...３７４ｎに適用され、例えば２つのオフセット命令のシーケンスを含み得る。複数のオフセット命令のシーケンスにおけるオフセット命令の数は、具体的な用途に応じて異なり得ることを理解されたい。
【００５５】
一実施形態において、例えばループ３３６ａのような複数のオフセット命令の１つのループは、現在のベースアドレスに対するアドレス範囲において可能な様々なオフセットオペレーションを生成する複数のオフセットアドレス命令ループであってもよい。複数のオフセットアドレスコマンドは、例えば、６つのオフセットアドレスコマンドのシーケンスのようなオフセットアドレスコマンドのシーケンスが、各ループ３３６ａにおいてシーケンシャルに実行されることを可能にする。このループのオフセットアドレス命令は、例えばベースアドレスの北、南、東または西といったオフセットの方向を示し、ストライプが含まれているか否かを示し、特定のオフセットアドレス命令がシーケンスの最後のオフセットアドレス命令であることを示す複数のパラメータを含み得る。一実施形態において、ストライプ関数は、オフセットアドレスのインクリメント中に行から列、または列から行への通常の搬送を無効にする。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。
【００５６】
一実施形態において、例えばループ３３６ｂのようなオフセット命令の１つのループは、ループ３３６ｂにおいてシーケンシャルに実行され得る複数のオフセットコマンド命令ループであってもよい。このループのオフセットアドレス命令は、読み取りまたは書き込みコマンドを示し、オフセットコマンドのデータが反転されるか否かを示し、ベースアドレスまたはオフセットアドレスを用いるか否かを示し、代替のデータ源および反復される書き込みオペレーションを指定する「ハンマー」関数を識別し、特定のオフセットコマンド命令がシーケンスの最後のオフセットコマンド命令であることを識別するパラメータを含み得る。複数の他のパラメータが具体的な用途に応じて使用され得ることを理解されたい。
【００５７】
一実施形態において、複数のコマンド命令のうちシーケンス３６６のコマンド命令に関連して、上記のオフセット命令は、シーケンス３６６におけるコマンド命令のオフセットコマンド交換パラメータをセットすることにより、現在のコマンド命令に交換され得る。更に、交換されるべきオフセットコマンドのオフセットループ３３６ａ、３３６ｂは、シーケンス３６６のコマンド命令のパラメータを識別するオフセットループにより示され得る。上述のように、図３ｄは、隣接インタラクションベースのアドレスウォーキングアルゴリズムのストレステストの一例を示す。このストレステストにおいて、「ベース」と指定されたメモリセル３４０ａは、離れた２つのセル内の複数の隣接セルによりストレスを与えられる。メモリセル３４０ａのアドレスであるベースアドレスは、プログラマブルアドレスジェネレータ３０６により生成される。ベースセル３４０ａに隣接する複数のアドレスは、プログラマブルアドレスオフセットパターンジェネレータ３７０により生成された複数のアドレスオフセットを用いてベースセル３４０ａのベースアドレスを修正することにより、生成され得る。例えば、隣接セル３４０ｂのアドレスは、「１」の列オフセットをベースセル３４０のアドレスに追加することにより生成され得る。隣接セル３４０ｃのアドレスは、「２」の列オフセットをベースセル３４０ａのアドレスに追加することにより生成されてもよく、または「１」の列オフセットを隣接セル３４０ｂの生成済みアドレスに追加することにより生成されてもよい。同様に、隣接セル３４０ｄのアドレスは、「２」の行オフセットをベースセル３４０ａのアドレスから減じることにより生成され得る。アドレスオフセットは、例えばオフセット命令１を実行する、例えばオフセットジェネレータ３７４ａにより生成され得る。
【００５８】
従って、テストパターンジェネレータ２１０（図２）は、プログラマブルアドレスジェネレータ３０６により生成され、プログラマブルアドレスオフセットジェネレータ３７０により生成されたアドレスオフセットパターンによりオフセットされ得るアドレスにおける隣接インタラクションベースのアドレスウォーキングアルゴリズムによれば、第１の隣接メモリセル３４０ｂ等において書き込み（Ｗｒ１）および読み取り（Ｒｄ１）の第１のセットのメモリコマンドを実行し、第２の隣接メモリセル３４０ｂにおいて書き込み（Ｗｒ２）および読み取り（Ｒｄ２）の第２のセットのメモリコマンドを実行するなどして、第８の隣接メモリセル３４０ｄにおいて書き込み（Ｗｒ８）および読み取り（Ｒｄ８）の第８のセットのメモリコマンドで終了するように適合される。
【００５９】
図４は、図３ｂに図示される入れ子のループ構造を実装する、図１におけるセルフテストロジック１１０の複数のオペレーションの一例を図示する。複数の命令シーケンスが第１のオペレーションであってもよく、アドレス命令選択が初期化され（ブロック４１０）、例えばアドレス命令１のような第１のアドレス命令を選択する。アドレス命令選択が初期化されて、具体的な用途に応じて複数のアドレス命令におけるシーケンス３２４の別のアドレス命令を選択し得ることを理解されたい。同様に、データ命令選択が初期化され（ブロック４１２）、データ命令１のような第１のデータ命令を選択する。例えば、アルゴリズム命令選択が初期化されて（ブロック４１４）、例えばアルゴリズム命令１のような第１のアルゴリズム命令を選択する。コマンド命令選択が初期化されて（ブロック４１６）、例えばコマンド命令１のような第１のコマンド命令を選択する。オフセットされる場合（ブロック４１７）、オフセット命令選択が初期化されて（ブロック４１８）、例えばオフセット命令１のような第１のオフセット命令を選択する。具体的な用途に応じて複数の命令のそれぞれのシーケンス３４６、３５６、３６６および３７６における別の命令を選択するべく、データ、アルゴリズム、コマンドおよびオフセット命令選択は初期化され得ることを理解されたい。プログラマブルパターンジェネレータ３０６、３４２、３５０、３６０および３７０に対して最初の命令が選択されると、命令は、プログラマブルパターンジェネレータ３０６、３４２、３５０、３６０および３７０の適切なジェネレータに適用および実行されて（ブロック４２０）、選択済みのアドレス、データ、アルゴリズム、コマンドおよびオフセットパターンを生成し、メモリ１０４の適切なストレステストを生成し得る。
【００６０】
例えば、上述の図３ｃは、１つのコマンド、本例では書き込みコマンドを使用するストレステストを図示し、ストレステストは、本例のコマンド命令１に応答してプログラマブルコマンドパターンジェネレータ３６０により生成される。本例において、プログラマブルアドレスパターンジェネレータ３０６がアドレス命令１に応答して、示されるメモリ領域３３８を通ってウォークするアドレスのパターンを生成し、メモリ領域３３８を初期化すると、書き込みコマンドは、メモリ領域３３８の各メモリセルに対して実行される。同一ビット（もしくは複数のビットセルの場合には複数のビット）がメモリ領域３３８の各メモリセルに書き込まれ得、または複数のビットは、本例のデータ命令１に応答してプログラマブルデータパターンジェネレータ３４２により生成されたデータパターンにより定義されるように、セル毎に異なる場合がある。
【００６１】
一実施形態において、図３ｃのストレステストは、アドレスオフセットを使用せず、従ってプログラマブルオフセットパターンジェネレータ３７０は、オフセット命令１に応答して未修正のプログラマブルアドレスパターンジェネレータ３０６により生成されたアドレスを渡してもよい。別の実施形態において、ウォーキングパターンは、複数の列および行オフセットを、プログラマブルアドレスパターンジェネレータ３０６により生成されたベースアドレスにシーケンシャルに適用することにより生成され得る。同様に、特定のストレステストに応じて、プログラマブルアルゴリズムパターンジェネレータ３５０はアルゴリズム命令１に応答して、特定のアルゴリズムにより修正されないプログラマブルパターンジェネレータ３４２により生成された書き込みデータを渡し得る。
【００６２】
プログラマブルパターンジェネレータ命令の最初のセットの実行に応答して、特定のメモリ領域または複数の領域にストレステストが適用されると、メモリ欠陥検出器２２０（図２）は、ストレステストの結果を複数の期待値と比較して（図４のブロック４２２）、テストされたメモリ領域または複数の領域における欠陥（もしあれば）を識別して、障害のある複数のアドレスの修復リストレポジトリ２２４（図２）に適切な欠陥位置データを格納する。
【００６３】
上述のように、セルフテストロジック１１０（図１）は、コマンド命令ループ３３４内で入れ子にされたオフセット命令の入れ子のループ３３６ａ、３３６ｂ（図３ｂ）を実行する。オフセット命令シーケンス３７６（図３ａ）の複数のオフセット命令の全てが選択されたか否かについて判断される（ブロック４２４）。選択されなかった場合、例えばオフセット命令のシーケンス３７６におけるオフセット命令２等、次のオフセット命令が、プログラマブルオフセットパターンジェネレータ３７０に対して選択される（ブロック４２６）。オフセット命令のループ３３６ａ、３３６ｂは、コマンドループ３３４内で入れ子にされているので、コマンド命令、ならびにアルゴリズム、データおよびアドレス命令は、この時点で依然として変わらない。従って、プログラマブルパターンジェネレータ３０６、３４２、３５０および３６０に対して選択された最初の命令と共に選択されたオフセット命令は、プログラマブルパターンジェネレータ３０６、３４２、３５０、３６０および３７０の適切なジェネレータに適用および実行されて（ブロック４２０）、選択済みのアドレス、データ、アルゴリズム、コマンドおよびオフセットパターンを生成し、メモリ１０４の適切なストレステストを生成し得る。
【００６４】
オフセット命令シーケンス３７６（図３ａ）における複数のオフセット命令の全てが選択（および実行）されたと判断されると（ブロック４２４）、コマンド命令シーケンス３６６（図３ａ）における複数のコマンド命令の全てが選択されたか否かについて判断される（ブロック４３０）。選択されなかった場合、例えばコマンド命令のシーケンス３６６におけるコマンド命令２等、次のコマンド命令が、プログラマブルコマンドパターンジェネレータ３６０に対して選択される（ブロック４３２）。コマンド命令ループ３３４は、アルゴリズム命令ループ３３２内で入れ子にされているので、アルゴリズム命令、ならびにデータおよびアドレス命令は、この時点で依然として変わらない。しかし、オフセット命令選択は、オフセット命令シーケンス３７６（図３ａ）における第１の命令に再初期化される（ブロック４１８）。従って、プログラマブルパターンジェネレータ３０６、３４２、３５０および３７０に対して選択された最初の命令と共に選択された選択済みのコマンド命令は、プログラマブルパターンジェネレータ３０６、３４２、３５０、３６０および３７０の適切なジェネレータに適用および実行されて（ブロック４２０）、選択済みのアドレス、データ、アルゴリズム、コマンドおよびオフセットパターンを生成し、メモリ１０４の適切なストレステストを生成し得る。
【００６５】
上述のように、図３ｅは、複数のコマンドのシーケンスを使用する複数の部分のストレステストを図示する。複数のコマンドは、プログラマブルコマンドジェネレータ３６０により生成され得る。図３ｅにおけるストレステストの第１部において、プログラマブルアドレスパターンジェネレータ３０６が、例えばアドレス命令１のような最初のアドレス命令に応答して、示されるメモリ領域３３８を通ってウォークするアドレスのパターンを生成してメモリ領域３３８を初期化すると、１つのコマンド、本例では書き込みコマンドが、例えばコマンド命令１のような最初のコマンド命令に応答して、メモリ領域３３８の各メモリセルに対して実行される。メモリ領域３３８がストレステストの第１部で書き込みコマンドにより各メモリセルに対して初期化されると、プログラマブルアドレスパターンジェネレータ３０６が第１部で生成された複数のアドレスの同一のパターンを再び生成し、第２部について示されるように、これがメモリ領域３３８を通って再びウォークするのが２度目である場合に、コマンドのシーケンス、本例においてはクイック読み取りコマンド（Ｒ）、そしてその後に書き込み反転（Ｗｂａｒ）コマンドが、同一のメモリ領域３３８の各メモリセルに実行される。
【００６６】
一実施形態において、プログラマブルアドレスパターンジェネレータ３０６が、例えばアドレス命令１等、未変更の最初のアドレス命令に応答して、ストレステストの第２部においてメモリ領域３３８を通って再びウォークする複数のアドレスの同一のパターン生成する場合に、第２部における第２のコマンドのシーケンス（クイック読み取りコマンド（Ｒ）、その次に書き込み反転（Ｗｂａｒ）コマンドが続く）は、例えばコマンド命令２のような第２の選択済みのコマンド命令に応答して生成され得る。別の実施形態において、各コマンドは、１つのコマンド命令に応答して生成され得る。
【００６７】
ストレステストの第２部の後、プログラマブルアドレスパターンジェネレータ３０６が第１部および第２部で生成された複数のアドレスの同一のパターンを再び生成し、第３部に示されるように、これが再びメモリ領域３３８を通ってウォークするのが３度目である場合に、別のシーケンスのコマンド、本例においてはクイックリード反転（Ｒｂａｒ）コマンド、そしてその後に書き込み（Ｗ）コマンドが同一のメモリ領域３３８の各メモリセルに実行される。また、一実施形態において、第３部の複数のコマンドのシーケンスは、第３の選択済みのコマンド命令に応答して生成され得る。別の実施形態において、第３部の複数のコマンドのシーケンスは、やはりストレステストの第１部および第２部の複数のコマンドを生成した１つのコマンド命令に応答して生成され得る。
【００６８】
図３ｄは、上述の隣接インタラクションベースのアドレスウォーキングアルゴリズムのストレステストの一例を示す。隣接インタラクションベースのアドレスウォーキングアルゴリズムのストレステストを生成するべく、１または複数のオフセット命令は、複数のオフセット命令のシーケンス３７６で使用され、示されるベースセルの複数の隣接セルにアドレス指定するべく、適切なオフセットアドレスを生成し得る。更に、１または複数のコマンド命令は、示される各隣接セルに適切なコマンドのシーケンスを生成するべく、複数のコマンド命令のシーケンス３６６において使用され得る。
【００６９】
コマンド命令シーケンス３６６（図３ａ）における複数のコマンド命令の全てが選択（および実行）されたと判断されると（図４のブロック４３０）、アルゴリズム命令シーケンス３５６（図３ａ）における複数のアルゴリズム命令の全てが選択されたか否かについて判断される（ブロック４３４）。選択されなかった場合、例えばアルゴリズム命令のシーケンス３５６におけるアルゴリズム命令２等、次のアルゴリズム命令が、プログラマブルアルゴリズムパターンジェネレータ３５０に対して選択される（ブロック４３６）。アルゴリズム命令ループ３３２は、データ命令ループ３３０内で入れ子にされているので、データ命令およびアドレス命令は、この時点で依然として変わらない。しかし、コマンド命令選択（ブロック４１６）およびオフセット命令選択（ブロック４１８）は、各命令シーケンス３６６、３７６（図３ａ）における第１の命令に再初期化される。従って、プログラマブルパターンジェネレータ３０６、３４２、３５０、３６０および３７０に対して選択された最初の命令と共に次の選択済みのアルゴリズム命令は、プログラマブルパターンジェネレータ３０６、３４２、３５０、３６０および３７０の適切なジェネレータに適用および実行されて（ブロック４２０）、選択済みのアドレス、データ、アルゴリズム、コマンドおよびオフセットパターンを生成し、メモリ１０４の適切なストレステストを生成し得る。
【００７０】
アルゴリズム命令シーケンス３５６（図３ａ）における複数のアルゴリズム命令の全てが選択（および実行）されたと判断されると（ブロック４３４）、データ命令シーケンス３４６（図３ａ）の複数のデータ命令の全てが選択されたか否かについて判断される（ブロック４３８）。選択されなかった場合、例えば複数のデータ命令のシーケンス３４６におけるデータ命令２等、次のデータ命令が、プログラマブルデータパターンジェネレータ３４２に対して選択される（ブロック４４０）。データ命令ループ３３０は、アドレス命令ループ３２２内で入れ子にされているので、アドレス命令は、この時点で依然として変わらない。しかし、アルゴリズム命令選択（ブロック４１４）、コマンド選択（ブロック４１６）、およびオフセット命令選択（ブロック４１８）は、各命令シーケンス３５６、３６６、３７６（図３ａ）における第１の命令に再初期化される。従って、プログラマブルパターンジェネレータ３０６、３５０、３６０および３７０に対して選択された最初の命令と共に選択されたデータ命令は、プログラマブルパターンジェネレータ３０６、３４２、３５０、３６０および３７０の適切なジェネレータに適用および実行されて（ブロック４２０）、選択済みのアドレス、データ、アルゴリズム、コマンドおよびオフセットパターンを生成し、メモリ１０４の適切なストレステストを生成し得る。
【００７１】
データ命令シーケンス３４６（図３ａ）における複数のデータ命令の全てが選択（および実行）されたと判断されると（ブロック４３８）、アドレス命令シーケンス３２４（図３ａ）における複数のアドレス命令の全てが選択されたか否かについて判断される（ブロック４４２）。選択されなかった場合、例えば複数のアドレス命令のシーケンス３２４におけるアドレス命令２等、次のアドレス命令が、プログラマブルアドレスパターンジェネレータ３０６に対して選択される（ブロック４４４）。データ命令選択（ブロック４１２）、アルゴリズム命令選択（ブロック４１４）、コマンド命令選択（ブロック４１６）およびオフセット命令選択（ブロック４１８）は、各命令シーケンス３４６、３５６、３６６、３７６（図３ａ）における第１の命令に再初期化される。従って、プログラマブルパターンジェネレータ３４２、３５０、３６０および３７０に対して選択された最初の命令と共に選択されたアドレス命令は、プログラマブルパターンジェネレータ３０６、３４２、３５０、３６０および３７０の適切なジェネレータに適用および実行されて（ブロック４２０）、選択済みのアドレス、データ、アルゴリズム、コマンドおよびオフセットパターンを生成し、メモリ１０４の適切なストレステストを生成し得る。アドレス命令シーケンス３２４（図３ａ）における複数のアドレス命令の全てが選択されると（ブロック４４２）、新しい命令がシーケンス３２４、３４６、３５６、３６６、３７６にロードおよび実行されて、図４に図示されるテストパターン生成および実行を反復しない限り、テストパターン生成が実行される（ブロック４５０）。
【００７２】
図５は、図２の欠陥検出器回路２２０の欠陥検出および複数の記録動作の一例を図示する。図５に図示されるロジックは、一実施形態において、ハードウェアの有限状態マシンがメモリコントローラ１０６のダイにオンボードの状態で実装され得る。同様に、この有限状態マシンは、デバイス１００のメモリコントローラ１０４および他の内部ダイと同一のダイ上にハードウェアロジックゲート、またはソフトウェアもしくはファームウェアプログラマブルプロセッサ、またはこれらの組み合わせを用いて実装され得る。
【００７３】
欠陥検出器回路２２０は、テストパターンジェネレータ２１０により生成されたストレステストパターンを用いて、テストパターンジェネレータ２１０により適用されたストレステストに応答してメモリセルの障害を検出する（ブロック５１０）。上記のように、ストレステストは、読み取りコマンド、書き込みコマンドもしくはその双方、または制御信号もしくはその双方を含むメモリコマンドを含み得、これらのメモリコマンドはメモリ１０４またはその領域に適用される。データは、メモリ１０４から読み取られて複数の期待結果と比較される。
【００７４】
実際の結果および期待結果を比較することにより、メモリセル内の欠陥を示すことができる。その場合に、欠陥の最大数に既に達したか否かについて判断される（ブロック５１２）。一実施形態において、複数のメモリセルが複数のメモリ領域に配置されてもよく、固定された数のスペア行のメモリセルが欠陥セルを含む複数のメモリセルの各行と交換するのに利用可能であってもよい。従って、例えばメモリセルのバンクには、セルの当該特定のバンクで欠陥セルを有する行を交換するのに、最大でセルの２つのスペア行が利用可能であり得る。特定の領域で利用可能な複数のセルのスペア行の数は、具体的な用途に応じて異なり得ることを理解されたい。従って、本明細書において複数のメモリセルの行およびバンクに関して、ストレステストおよび修復が説明されているが、ストレステストおよび修復は、ランクベースもしくはチップベース、または任意のメモリ領域もしくはその一部等、他の複数のレベルで編成され得ることを理解されたい。
【００７５】
いくつかの実施形態において、スペア行の数は、メモリの特定のバンクでは、欠陥を含む複数の行の行アドレスを格納する修復リストレポジトリ位置の数を超える場合がある。従って、欠陥の最大数は、メモリ１０４の特定のバンクにおいてどちらが少ないかは別として、利用可能なスペア行の数または利用可能な修復リストレポジトリ位置の数に等しくなる。
【００７６】
いくつかの実施形態において、修復を必要とする複数のアドレスまたは行を格納する比較的多くの位置を有する修復リストレポジトリ２２４を実装することは、費用効果が良くない場合があることを理解されたい。しかし、修復可能な要素の数が修復リストレポジトリ位置の数を超える場合、テストおよび修復処理が反復され、本明細書において２パス、３パスまたはｎパステストと称される各イタレーションで更なる障害の行を見つけ得る。このように、比較的限定された数のレポジトリ位置を使用しつつ、多くの欠陥を有するメモリデバイスをテストおよび修復することは可能であり得る。
【００７７】
メモリ１０４の各バンクに利用可能なスペア行の数（または修復リストレポジトリの位置）は、テストの開始前にポータル１２６を介して、例えば構成レジスタ２３２（図２）をセットするユーザによりセットされ得る。複数の他の実施形態において、メモリ１０４の各バンクに利用可能なスペア行の数（または修復リストレポジトリの位置）は、デバイス１００の製造時に固定値としてセットされ得る。
【００７８】
従って、例えば少なくとも１つの欠陥メモリセルを有する行のようなメモリ位置の数が、例えばメモリセルのバンクのような特定のメモリ領域の最大値を超えるか否かについて判断され得る。一実施形態において、そのような判断は、セットされると、障害最大値に達したことを示すフラグ（例えば、図２の複数のフラグ２３４のうちのあるフラグ）を確認することにより行われ得る。従って、欠陥メモリセルを検出すると（ブロック５１０）、領域に対する障害最大値フラグの状態を確認することにより、欠陥が発見された当該領域で欠陥の最大数に既に達したか否かが判断され得る（ブロック５１２）。最大値に既に達し、更なる欠陥が最大値を超えた場合、検出および記録処理は、当該特定の欠陥について終了する（ブロック５１４）。
【００７９】
このように、障害最大値フラグは、追加の修復が特定のバンクについて可能であるか否かを示すオーバーフローインジケータを提供する。一実施形態において、更なる欠陥がバンク内に存在するか否かを判断するように、障害最大値フラグがセットされた後に、当該バンクのストレステストは継続し得る。しかし、追加のスペア行（または追加の修復リストレポジトリの位置）がそのような更なる欠陥の接続交換における使用に利用可能ではない。適切であれば、障害最大値フラグは、ポータル１２６を介するフラグ２３４の構成レジスタに対する書き込みオペレーションにより、または明示的なリセットオペレーションによりリセットされ得る。
【００８０】
欠陥の最大数を超えない場合、欠陥メモリセルの行が新しいか否か、すなわち、欠陥メモリセルが例えば、メモリセルの行など、１セットのメモリ位置における第１の既知の障害メモリセルであるか否かについて判断される（ブロック５１８）。上述のように、図示された実施形態において、メモリは、スペアセルの行全体を用いて欠陥セルを含む複数のメモリセルの行を交換することにより修復され得る。従って、行が新しくなくて一意でない場合、すなわち、行が既に交換用に指定された場合、欠陥は当該行で発見された第１の欠陥ではなく、検出および記録処理は、当該特定の欠陥について終了する（ブロック５１４）。
【００８１】
以下に説明されるように、欠陥メモリセルを含む行またはメモリ位置の他のセットは、障害のある複数のメモリアドレスの修復リストレポジトリ２２４（図２）等、修復リストレポジトリとして構成されたメモリにおいて、交換用に指定され得る。そのような実施形態において、複数のメモリセルの特定のメモリ領域における欠陥メモリセルを含む、複数のメモリセルの行が修復リストレポジトリ２２４のリストにエントリとして既に格納されたか否かを判断することにより、欠陥メモリセルが、例えば複数のメモリセルの行における第１の既知の障害メモリセルであるか否かについて判断され得る（ブロック５１８）。その場合、欠陥メモリセルは、当該行における第１の既知の障害セルではないと判断され、複数のメモリ位置のリストにおけるエントリとして、欠陥メモリセルを含む当該行の指定を修復リストレポジトリに格納する段階は、バイパスされ得る（ブロック５１４）。なぜなら複数のメモリセルの特定のメモリ領域におけるメモリセルの特定の行は、修復リストレポジトリのリストにおけるエントリとして既に格納されたからである。
【００８２】
欠陥メモリセルが例えば、メモリセルの行のようなセットのメモリ位置における第１の既知の障害メモリセルであると判断される場合（ブロック５１８）、例えば少なくとも１つの欠陥メモリセルを有する行等のメモリ位置の数が、例えばメモリセルにおけるバンク等、特定のメモリ領域の最大値に達したか否かについて判断され得る（ブロック５２０）。最大値に達した場合、前述の障害最大値フラグがセットされ得（ブロック５２４）、検出および記録処理は、当該特定の欠陥について終了する（ブロック５１４）。一実施形態において、障害最大値は、特定のメモリ領域で、欠陥のある行の交換に利用可能なスペア行の供給がいつ止まったかを示すようにセットされ得る。
【００８３】
障害最大値に達せず、特定のメモリ領域における欠陥のある行の交換として用いるのに、追加のスペア行が利用可能であることを示す場合、検出された他の行に先行する障害が存在したか否かについて判断される（ブロック５３０）。存在した場合、障害カウントを表すカウンタがインクリメントされる（ブロック５３２）。この障害カウントは、次の判断において障害最大値と比較されて、障害検出の数が障害最大値に達したか否かを判断する（ブロック５２０）。
【００８４】
欠陥メモリセルを含む行の行アドレスは、複数の障害アドレスの修復リストレポジトリ２２４（図２）における適切な位置に格納され得る（ブロック５３４）。複数のメモリセルにおける行のアドレスを示すフラグセットは、当該行の修復用の修復リストレポジトリ５３４に格納されている（ブロック５４０）。このフラグは、先行する障害が当該メモリ領域について検出されたか否かについての次の判断において確認され得る（ブロック５３０）。一実施形態において、フラグは各メモリ領域についてセットされ、特定のメモリ領域の少なくとも１つの行が少なくとも１つの欠陥メモリセルを有するか否かを示し得る。
【００８５】
図６は、障害のあるメモリアドレスの修復リストレポジトリ２２４の一例を示す。本例において、修復リストレポジトリ２２４の構造は、複数のレポジトリ位置の複数の行および列のアレイとして構成されており、メモリ１０４の各バンク，バンク０，バンク１...バンクｎは、レポジトリ位置の割り当てられた行を有する。修復リストレポジトリ２２４のアレイは、複数のメモリセルの特定のバンクの行を交換するのに割り当てられるべく利用可能な各スペアメモリ行に、複数の位置の列であるフェール０，フェール１...フェールｎを有する。従って、特定のメモリが、各バンクに例えば８つのバンクと、例えばメモリセルの４つのスペア行を有する場合に、修復リストレポジトリ２２４は、レポジトリ位置の８つの行と、各バンクのレポジトリ位置の１つの行と、レポジトリ位置の４つの列と、当該特定のバンクに利用可能なメモリセルの各スペア行に対するレポジトリ位置の１つの列を有するであろう。
【００８６】
従って、バンク０のような特定のバンクにおける第１の欠陥のある行を検出すると（図５のブロック５１０）、欠陥メモリセルを含むバンク０におけるメモリセル行の行アドレスは、修復リストレポジトリの位置に配置されてもよく、バンク０、フェール０およびフラグは、修復リストレポジトリ２２４のバンク０のフラグ位置にセットされて（ブロック５４０）、メモリセルにおける行のアドレスがバンク０の当該メモリセル行の修復用の修復リストレポジトリ５３４に格納されたことを示し得る。バンク０の次の新しい一意な欠陥メモリセルの行を検出すると（図５のブロック５１０）、障害カウントがインクリメントされて（ブロック５３２）、バンク０のレポジトリ位置を指す。フェール１、バンク０のレポジトリ位置の行における次の位置、および欠陥メモリセルを含むバンク０の当該次の新しい一意な行のメモリセルの行アドレスは、バンク０、フェール１の修復リストレポジトリの位置に配置され得る。更に、フラグは、修復リストレポジトリ２２４のバンク０のフラグ位置にセットされて（ブロック５４０）、メモリセルにおける行の別のアドレスがバンク０の当該メモリセル行の修復用の修復リストレポジトリ５３４に格納されたことを示し得る。
【００８７】
その次に、欠陥を含むバンク０の複数のメモリセルの新しい一意な行を各々検出すると、障害カウントがインクリメントされて（ブロック５３２）、バンク０の位置の行における次のレポジトリ位置を指す。欠陥メモリセルを含むバンク０の次の当該一意なメモリセル行のメモリセルの行アドレスは、当該障害カウントに対応する修復リストレポジトリの位置に配置され得る。更に、フラグは、修復リストレポジトリ２２４のバンク０のフラグ位置にセットされて（ブロック５４０）、メモリセルにおけるメモリセル行の別のアドレスがバンク０の当該行の修復用の修復リストレポジトリ５３４に格納されたことを示し得る。
【００８８】
バンク０のストレステストは、当該バンクの全てがプログラミングされた複数のストレステストの各々を用いてストレステストされるまで継続する。バンク０のストレステストが進捗するときに、欠陥を含む検出済みの新しい一意な行の数がバンク０用のスペア行の数を超えると、障害最大値に達し（ブロック５２０）、障害最大値フラグは、修復リストレポジトリ２２４におけるバンク０のフラグ位置にセットされ得る（ブロック５２４）。その時点で、追加のメモリセルの行アドレスは、修復リストレポジトリに記録されない（ブロック５１４）。追加のスペア行がバンク０に留まらないからである。しかし、一実施形態においてバンク０のストレステストは、更なる欠陥がバンク０に存在するか否かを識別するべく、障害最大値に達した後であっても継続してよい。複数の他の実施形態において、特定のバンクのストレステストは、障害最大値に達すると終了し得る。
【００８９】
ストレステストを終了してバンク０の修復リストレポジトリ２２４に欠陥を記録すると、障害カウンタにより示される障害カウントは、メモリ１０４の次のバンクのテストを開始する前に自動的に、あるいは障害カウンタをリセットするユーザまたは外部ソフトウェアによりリセットされ得る。一実施形態において、障害カウンタは、フラグ２３４におけるレジスタとして維持され、ポータル１２６を介してアクセスされて適切に読み取られ、またはリセットされ得る。また、いくつかの実施形態において、別個の障害カウンタが、メモリ１０４の各バンクまたは他のメモリ領域に対して維持され得る。メモリ１０４のストレステストは継続し、残余のバンクをストレステストする。
【００９０】
バンク１，バンク２...バンクｎにおいては、複数の欠陥を含む新しい一意の複数のメモリセル行のメモリセルの行アドレスが、バンク０について上記されたものと同様に修復リストレポジトリ２２４に記録される。更に上記のように、フラグは、ストレステストが各バンクについて進むと、各バンクに対してセットされ得る。
【００９１】
欠陥を含む複数のメモリセルの行における少なくとも１つのメモリセルの行アドレスは、修復リストレポジトリ２２４に記録されており、自己修復ロジック１１４（図１）は、複数のメモリセルのスペア行により、ユーザまたは外部ソフトウェアを介在することなく、欠陥を含む複数のセルの行を交換することにより欠陥メモリ１０４の修復を自動的に開始し得る。一実施形態において、自己修復ロジック１１４は、いずれかが欠陥メモリセルを含む場合にメモリ１０４が進行中のメモリのストレステストとパラレルに修復され、追加の複数の行を識別し得るように、セルフテストロジック１００とパラレルに動作し得る。
【００９２】
従って、一実施形態において、修復ロジックは、全てのストレステストが完了し、全ての欠陥メモリセルの行がレポジトリ２２４に記録されると、アクティブ化され得る。別の実施形態において、修復ロジックは、例えばバンク等、特定のメモリ領域に対して全てのストレステストが完了し、当該バンクについて、全ての欠陥メモリセルの行がレポジトリ２２４に記録されると、アクティブ化され得る。従って、複数のストレステストは、１つのバンクにおける任意のメモリの欠陥を識別するべく再開されてもよいが、修復リストレポジトリ２２４に既に記録された欠陥メモリセルの行は、別のバンクについて修復される。なおも別の実施形態において、修復ロジックは、複数の欠陥メモリセルの行が修復リストレポジトリに記録されるとすぐに、例えばバンク等、特定のメモリ領域についてストレステストが完了するのを待つことなく、メモリセル行を修復するべくアクティブ化され得る。
【００９３】
少なくとも１つの欠陥セルおよび関連するフラグを有する複数の行のアドレスを含む修復レポジトリの内容がハードウェアまたはソフトウェアにより読み取られて、後に修復に用いるべく保存され得ることを理解されたい。上記のように、修復は、障害が検出されたとき、または全てのストレステストが完了した後で行われ得る。更に、修復は、同じテスト段階におけるより後の時間、または将来におけるいくつかの他のテスト段階に対しても保留され得る。修復データが揮発性レジスタに格納されると、レポジトリ２２４から電力を除去する前に、ネットワークまたはストレージデバイスを介するなどしてオンダイまたはオフダイでデータをいくつかの他の永久記憶装置にコピーすることが必要とされることがある。このように修復データを格納することにより保留修復を容易にすることができるのみならず、品質管理のプロセス追跡または他の目的に使用され得るような障害レートの恒久的な記録として機能し得る。
【００９４】
図７は、本明細書の一実施形態による、図１の自己修復ロジック１１４のより詳細な例を図示する。本例において、図７に図示されたロジックは、一実施形態において、ハードウェアの有限状態マシンがメモリコントローラ１０６のダイにオンボードの状態で実装される修復エンジンである。同様に、この有限状態マシンは、デバイス１００のメモリコントローラ１０６および他の内部ダイと同一のダイ上にハードウェアロジックゲート、またはソフトウェアもしくはファームウェアプログラマブルプロセッサ、またはこれらの組み合わせを用いて実装され得る。
【００９５】
以下により詳細に説明されるように、修復ロジック１１４は、セルフテストロジック１１０により収集された複数の障害アドレスのリストによりサイクルし、修復リストレポジトリ２２４に記録される。その行アドレスがレポジトリ２２４のレポジトリ位置に記録される各障害メモリセル行については、修復ロジック１１４は、適切な複数のコマンドをメモリ１０４に発行して、障害を起こし、または障害を起こした行をスペア行と交換し、スペア行が構築されてメモリ１０４になる。
【００９６】
第１の状態７１０において、修復ロジック１１４の状態マシンは、アイドル状態であり、欠陥メモリセルの行の行アドレスが修復リストレポジトリ２２４に記録されるのを待っている。欠陥メモリセルの行の少なくとも１つの行アドレスが修復リストレポジトリ２２４に記録されると、状態マシンは、事前充電コマンドを自動的に発行し（状態７１４）、修復リストレポジトリ２２４において識別された欠陥メモリセルの行を含むメモリ領域または複数の領域を事前充電する。  事前充電が完了するのを許可する待機状態７２０に続いて、状態マシンは、メモリ１０４の修復モードを自動的にイネーブルし（状態７２４）、修復リストレポジトリ２２４に記録された位置により識別されるメモリセル行の修復を開始し（状態７３０）、当該メモリセル行の修復に対する十分な時間が完了するのを許可する待機状態７３４に入る。
【００９７】
一実施形態において、修復ロジック１１４の状態マシンは、待機状態７３４の好適なタイマ回路を含む。例えば、プログラマブル遅延／カウンタは、完了する修復に十分な時間（例えば２００ミリ秒など）を可能にするべく提供され得る。いくつかの実施形態において、カウンタは、入力クロック周波数に応じて最大２０ビットを有し得る。カウンタ回路の大きさを低減するべく、いくつかの実施形態において、およそ２〜５ミリ秒の出力タイミング粒度の固定カウンタ／ディバイダと、プログラミング可能な６〜８ビットのカウンタとを含む２つのステージカウンタを有することが適切であり得る。具体的な用途に応じて他のタイマの設計が使用され得ることを理解されたい。
【００９８】
一実施形態において、修復ロジック１１４の状態マシンは、ＪＥＤＥＣ（ＪＥＤＥＣ半導体技術協会、以前は電子機器技術評議会として知られた）のプロトコルに準拠する適切な複数のポストパッケージリペア（ＰＰＲ）コマンドを発行し得る。複数のコマンドに応答して、複数のヒューズが適宜開かれるか、または閉じられ、欠陥メモリセルの行をメモリアレイから除去し、回路におけるスペアメモリセル行をアレイに追加して欠陥のある行とスペアメモリセル行を交換する。具体的な用途に応じて、他の修復コマンドおよびプロトコルが使用され得ることを理解されたい。
【００９９】
待機状態７３４が終了すると、別の事前充電コマンド（状態７４０）が発行され、その後に別の待機状態７４４が続き、事前充電が完了するのを許可する。状態マシンの状態７３０〜７４４のサイクルは、修復リストレポジトリ２２４において識別された全ての欠陥メモリセルの行が関連するバンクのスペアメモリセルと交換されるまで、修復リストレポジトリ２２４において記録された追加の各行アドレスに対して自動的反復される。
【０１００】
修復リストレポジトリ２２４において識別された全ての欠陥メモリセルの行が関連するバンクのスペアメモリセルと交換されると、修復ロジック１１４の状態マシンは、修復モードを終了し（状態７５０）、この終了が完了するのを待ち（状態７５４）、修復オペレーションは完了する。フラグ２３４のフラグビットは、全ての修復が行われたことを示すようにセットされ得る。このフラグビットは、内部で、あるいは外部テスト機器またはソフトウェアによりポーリングされ、いつ修復が完了したかを判断し得る。
【０１０１】
一実施形態において、複数の好適な命令シーケンスは、ポータル１２６を介して適切な構成レジスタ２３２（図２）またはセルフテストロジック１１０（図１）の他のメモリにロードされ得る。そのようなロード動作は、コンピュータアーキテクチャデバイス１００のオンボードのロジックにより自動的に実行され得る。複数の他の実施形態において、コンピュータアーキテクチャデバイス１００の外部の複数のデバイスまたはソフトウェアは、複数の好適な命令シーケンスをセルフテストロジック１１０にロードするべく使用いられ得る。このように、複数の命令シーケンスは、適宜変更されてストレステストパターンの変更を容易にし得る。複数のなおも他の実施形態において、複数の好適な命令シーケンスは、セルフテストロジック１１０のロジックに固定され得る。複数の命令シーケンスが固定されていても、または変更可能であっても、本明細書に説明される命令シーケンスの入れ子のループ構造は、多種多様なストレステストを行うセルフテストロジック１１０を容易に適合することを促進し得ることを理解されたい。
【０１０２】
一実施形態において、複数のハードウェア構成レジスタ２３２、複数のフラグ２３４のレジスタおよび修復リストレポジトリ２２４は、システムの周辺構成要素相互接続（ＰＣＩ）もしくはＰＣＩエクスプレス構成空間において、またはテストアクセスポート（ＴＡＰ）コントローラからアクセス可能である。構成空間レジスタは、メモリ位置にマッピングされ得る。デバイスドライバおよび診断ソフトウェアは、構成空間へのアクセスを有し得、オペレーティングシステムは、デバイス構成空間にアクセスすることを可能にするアプリケーションプログラミングインターフェース（ＡＰＩ）を用い得る。オペレーティングシステムが規定されたアクセス方法またはメモリマッピング構成空間の要求に対するＡＰＩを有しないこれらの実施形態において、ドライバまたは診断ソフトウェアは、アクセスルールの基礎であるオペレーティングシステムと互換性を有する態様で構成空間にアクセスする。複数の他の実施形態において、ハードウェア構成レジスタは、ハードウェア構成レジスタにアクセスする目的に適合されたいくつかの他のインターフェースまたは既存のインターフェースを介してアクセスされ得る。
【０１０３】
図示された実施形態において、障害カウンタを含む複数のフラグ２３４は、単一のＴＡＰオペレーションと同様に少ないオペレーションで読み取られるチャネルに対する全ての状態ビットを許可することを容易にするべく、単一のレジスタまたは隣接するレジスタを用いて実装され得る。従って、一実施形態において、４つのバンクに対するレジスタ、自己修復ロジック回路１１４の４つの行修復エンジンが例えばフラグビットの２０ビットを占めることがあり、またビットの数は、自己修復ロジック回路１１４の有限状態マシンの遅延レジスタを実装する。
【０１０４】
上述のように、内部欠陥検出および修復回路１０８は、プロセッサ１０２とメモリ１０４との間の通常のメモリトランザクションをインタラプトしてメモリテストおよび修復オペレーションを行い得る。例えば、欠陥検出および修復回路１０８は、コンピュータアーキテクチャデバイス１００の（基本入出力システム（ＢＩＯＳ）ブート処理を実行するブート処理の一部として起動され得る。
【０１０５】
図８ａ〜８ｇは、図３ｆのアドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎのアドレスジェネレータ８００の一例を示す。本例において、アドレスジェネレータ８００は、例えば複数のパイプラインステージｎ００およびｎ０１を有する構成可能なパイプラインアドレスジェネレータである。以下により詳細に説明されるように、アドレスジェネレータ８００は、メモリ１０４をストレステストする複数のアドレスを迅速に生成することができると考えられる。例えば、障害を検出する電荷結合の隣接相互作用を励起するには、セルフテストロジック１１０（図１）からの過剰な遅延のない連続したのメモリトランザクションを生成することが好ましい。パイプラインアドレスジェネレータ８００は、２つのパイプステージｎ００、ｎ０１を有するものとして図示されているが、パイプラインアドレスジェネレータは、具体的な用途に応じてより多いか、またはより少ないパイプステージを有し得ることを理解されたい。
【０１０６】
また本例において、パイプラインアドレスジェネレータ８００は、図８ａ〜８ｇに各々図示された複数の構成８０４ａ，８０４ｂ...８０４ｇへと構成可能である。特定の構成は、例えば命令ループ３２２（図３ｂ）におけるシーケンス３２４（図３ａ）の、例えばアドレス命令１，２...ｎのアドレス命令により選択され得る。図示された実施形態において、各構成８０４ａ，８０４ｂ...８０４ｇは、メモリ１０４の階層構造における特定のアドレス順序で複数のアドレスを生成する。上述のように、複数のメモリセルにおける複数の行および列のメモリ領域は、バンクと称されることがある。メモリ１０４は、複数の集積回路メモリチップを有し得、複数の集積回路メモリチップのグループは多くの場合、ランクと称される。本実施形態において、メモリ１０４の各ランクはランクアドレスを有し、１または複数のダイ上にメモリセルの複数のバンクを備える。しかし、いくつかの実施形態においてメモリ１０４は、ランクを欠く階層構造を有し得、または同一のダイ上に１または複数のランクを有し得る。
【０１０７】
同様に、複数のバンクのランクにおける各バンクはバンクアドレスを有し、アレイに配置された複数のメモリセルの複数の行および列のメモリ領域を備える。従って、メモリ１０４における各メモリセルのフルアドレスは、ランクアドレス、バンクアドレス、行アドレスおよび列アドレスを含む。しかし、いくつかの実施形態において、フルアドレスは、例えばランクアドレスを欠く場合があることを理解されたい。
【０１０８】
パイプラインアドレスジェネレータ８００は、ジェネレータ８００に対して選択された構成に応じて異なるアドレス順序でメモリセルのフルアドレスを生成するように構成され得る。従って、パイプラインアドレスジェネレータ８００は、特定のアドレス順序の行、列、バンクおよびランクのアドレスを生成する。フルアドレスの一部が生成されるアドレス順序を変更することにより、メモリ１０４を通して生成されるアドレスの経路も対応して変更される。従って、アドレス命令のパラメータは、アドレス順序を含み得る。具体的な用途に応じて、複数の他のパラメータが含まれ、または使用され得ることを理解されたい。
【０１０９】
一例において、図８ａに図示されるパイプラインアドレスジェネレータ８００の構成８０４ａは、ランク、バンク、行および列の第１のアドレス順序でシーケンシャルに複数のメモリアドレスを生成し、第１のアドレス順序が図９ａにより示されるランク、バンク、行および列により、複数のアドレスがシーケンシャルに生成される順序を規定する。構成８０４ａにおいて、パイプラインアドレスジェネレータ８００は、第１のパイプステージｎ００における最低次のアドレス順序のスロットであるアドレス順序０の列アドレスジェネレータ８１０ａと、第２のパイプステージｎ０１における次の最低次のアドレス順序のスロットであるアドレス順序１の行アドレスジェネレータ８１０ａとを有する。従って、ランク、バンク、行および列のアドレス（ブロック９１２〜９１８、図９ａ）を初期化して第１のフルアドレスを出力した後（ブロック９２０）、パイプラインアドレスジェネレータ８００は、第２のパイプステージｎ０１の行アドレスジェネレータ８１０ａにより生成された行アドレスが行ループ９２７において変更される前に、第１のパイプステージｎ００の列アドレスジェネレータ８１０ａを用いて次の列アドレスを生成し（ブロック９２４）、行ループ９２７で入れ子にされた列ループ９２６において、特定のランクの特定のバンクにおける特定の行の複数のメモリセルの列全体の生成済みフルアドレスをトラバースするべく、列アドレスをインクリメントする。列ループ９２６において、複数の列のトラバーサルが完了すると（ブロック９２８）、パイプラインアドレスジェネレータ８００は、行ループ９２７において、第２のパイプステージｎ０１の行アドレスジェネレータ８２０ａにより生成される次の行アドレスを生成するべく（ブロック９３０）行アドレスをインクリメントし、第２のパイプステージｎ０１の行アドレスジェネレータ８１０ａにより生成された行アドレスが行ループ９２７において再び変更される（ブロック９３０）前に、列アドレスをリセットして（ブロック９１８）、特定のランクにおける特定のバンクの次の行の複数のメモリセルにおける列全体で生成済みフルアドレスを再びトラバースする。
【０１１０】
このように、パイプラインアドレスジェネレータ８００は、メモリセルのフルアドレスを生成して、列、行のアドレス順序で複数のメモリセルの特定のバンクにおける列および行全体で生成済みフルアドレスをトラバースする。構成８０４ａにおいて、パイプラインアドレスジェネレータ８００は、第２のパイプステージｎ０１における２番目〜最高次のアドレス順序のスロットであるアドレス順序２のバンクアドレスジェネレータ８２４ａと、第２のパイプステージｎ０１における最高次のアドレス順序のスロットであるアドレス順序２のランクアドレスジェネレータ８２８ａとを有する。従って、列ループ９２６は、行ループ９２７において入れ子にされ、行ループ９２７は同様に、バンクループ９３１において入れ子にされる。バンクループ９３１は同様に、ランクループ９３３において入れ子にされる。
【０１１１】
従って、複数の行（および列）のトラバーサルがあるバンクの入れ子にされた列および行のループにおいて完了すると（ブロック９３２）、パイプラインアドレスジェネレータ８００はバンクループ９３１において、第２のパイプステージｎ０１のバンクアドレスジェネレータ８２４ａにより生成される次のバンクアドレスを生成するべく（ブロック９３４）バンクアドレスをインクリメントし、入れ子の列ループ９２６および行ループ９２７において上記されたように、第２のパイプステージｎ０１のランクアドレスジェネレータ８２８ａにより生成される（ブロック９３８）ランクアドレスが変更される前に、行アドレスをリセットし（ブロック９１６）、列アドレスをリセットして（ブロック９１８）、特定のランクの複数のメモリセルにおける次のバンク全体で生成済みフルアドレスをトラバースする。特定のランクの全てのバンクのトラバーサルが完了すると（ブロック９３６）、パイプラインアドレスジェネレータ８００はランクループ９３３において、第２のパイプステージｎ０１のランクアドレスジェネレータ８２８ａにより生成された次のランクアドレスを生成するべく（ブロック９３８）ランクアドレスをインクリメントし、入れ子の列ループ９２６、行ループ９２７およびバンクループ９３１において上記されたように、第２のパイプステージｎ０１のランクアドレスジェネレータ８２８ａにより生成される（ブロック９３８）ランクアドレスが再び変更される前に、バンクアドレスをリセットし（ブロック９１４）、行アドレスをリセットし（ブロック９１６）、列アドレスをリセットして（ブロック９１８）、次のランクの複数のメモリセルにおけるバンクの各々の全体で再び生成済みフルアドレスをトラバースする。選択済みのメモリ領域の全てのランクのトラバーサルが完了すると（ブロック９４０）、選択済みのメモリ領域のトラバーサルは完了している（ブロック９４４）。このように、パイプラインアドレスジェネレータ８００は、図８ａにおける構成８０４ａのランク、バンク、行およびセルのアドレス順序で、選択済みのメモリ領域の複数のメモリセルの各ランクにおける各バンクの列および行全体で複数の生成済みフルアドレスをトラバースするべく、メモリセルのフルアドレスを生成する。
【０１１２】
別の例において、構成８０４ａの構成は、図８ｇおよび図９ｂに示されるように、例えばランク、バンクの列および行における異なるアドレス順序で複数のメモリアドレスをシーケンシャルに生成するべく、図８ａに図示されたものから修正され得る。この修正された構成８０４ｇにおいて、パイプラインアドレスジェネレータ８００は、第１のパイプステージｎ００における最低次のアドレス順序のスロットであるアドレス順序０の行アドレスジェネレータ８２０ｇと、第２のパイプステージｎ０１における次の最低次のアドレス順序のスロットであるアドレス順序１の列アドレスジェネレータ８１０ｇとを有する。ランクアドレスジェネレータ８２８ｇおよびバンクアドレスジェネレータ８２４ｇの位置は、変更されない。従って図９ｂにおいて、行ループ９２７は列ループ９２６において入れ子にされ、列ループ９２６はバンクループ９３１において入れ子にされ、バンクループ９３１は同様に、ランクループ９３３において入れ子にされる。
【０１１３】
図９ｂに示されるように、この修正された構成のパイプラインアドレスジェネレータ８００は、第２のパイプステージｎ０１の列アドレスジェネレータ８１０ｇにより生成された（ブロック９２４）列アドレスが変更される前に、特定のランクの特定のバンクにおける特定の列の複数のメモリセルの行全体で生成済みフルアドレスをトラバースするべく、第１のパイプステージｎ００の行アドレスジェネレータ８２０ｇにより生成された（ブロック９３０）行アドレスをインクリメントする。
【０１１４】
別の例において、構成８０４ａの構成は、図８ｂおよび図９ｃに示されるように、例えばランク、行、列およびバンクにおける異なるアドレス順序で複数のメモリアドレスをシーケンシャルに生成するべく、図８ａに図示されたものから修正され得る。この修正された構成８０４ｂにおいて、パイプラインアドレスジェネレータ８００は、第１のパイプステージｎ００における最低次のアドレス順序のスロットであるアドレス順序０のバンクアドレスジェネレータ８２４ｂ、第１のパイプステージｎ００における次の最低次のアドレス順序のスロットであるアドレス順序１の列アドレスジェネレータ８１０ｂ、第２のパイプステージｎ０１における２番目に最高次のアドレス順序のスロットであるアドレス順序１の行アドレスジェネレータ８２０ｂ、および第２のパイプステージｎ０１における最高次のアドレス順序のスロットであるアドレス順序２のランクアドレスジェネレータ８２８ｂを有する。従って、バンクループ９３１は、列ループ９２６で入れ子にされ、列ループ９２６は行ループ９２７において入れ子にされ、行ループ９２７は同様に、図９ｃのランクループ９３３において入れ子にされる。
【０１１５】
この修正された構成のパイプラインアドレスジェネレータ８００は、パイプラインアドレスジェネレータ８００により生成される列、行およびランクのアドレスが変更される前に、バンクループ９３１において、第１のパイプステージｎ００のバンクアドレスジェネレータ８２４ｂにより生成される次のバンクアドレスを生成し（ブロック９３４）、バンクループ９３１において、特定のランクにおける複数のメモリセルのバンク全体で１バンク当たりの１つのメモリセルの特定の列アドレスおよび行アドレスにおける生成済みフルアドレスをトラバースするべく、特定のフルアドレスのバンクアドレスをインクリメントする。生成済みフルアドレスが特定のランクのメモリセルのバンク全体でトラバースされると、列アドレス（次のより高次のアドレス順）は、第１のパイプステージｎ００の列アドレスジェネレータ８１０ｂを用いて次の列アドレスを生成するべく（ブロック９２４）、列ループ９２６においてインクリメントされる。複数のバンクにおけるインクリメントされた列アドレス（および未変更の行およびランクのアドレス）のメモリセルがトラバースされるまで、バンクアドレスはリセットされ（ブロック９１４）、バンクループ９３１のバンクトラバーサル処理は反復されて、特定のランクにおけるバンクループ９３１における複数のメモリセルのバンク、つまり１つのバンク当たりの１つのメモリセル全体でインクリメントされた列アドレス（および未変更の行およびランクのアドレス）を用いてそのフルアドレスをトラバースする。
【０１１６】
列ループ９２６において列のトラバーサルが完了するように（ブロック９２８）、生成済みフルアドレスが各列についてインクリメントされ、各バンクおよび列について、特定のランクの複数のメモリセルにおけるバンク全体、つまり１つのバンク当たり１つのメモリセル全体でトラバースされると（ブロック９４０）、バンク（ブロック９１４）および列（ブロック９１８）のアドレスはリセットされ、行アドレス（次のより高次のアドレス順）は、第２のパイプステージｎ０１の行アドレスジェネレータ８２０ｂを用いて次の行アドレスを生成するべく（ブロック９３０）、行ループ９２７においてインクリメントされる。上記のようにバンクループ９３１における複数のバンクを１回に１列ずつ、トラバースするように列ループ９２６に入れ子にされたバンクループ９３１のバンクの列の順序付けられたトラバーサル処理は、インクリメントされた行に対して反復されて、バンクループ９３１の複数のバンク全体で１回に１列ずつ、行ループ９２７においてインクリメントされた行アドレス（および未変更のランクアドレス）を用いてフルアドレスをトラバースし、特定のランクの複数のバンクがバンクループ９３１においてトラバースされる度に、列ループ９２６において列アドレスをインクリメントする。
【０１１７】
従って、入れ子のバンク、つまりランクの列および行のループにおいて、行（および列ならびにバンク）のトラバーサルが完了すると（ブロック９３２）、パイプラインアドレスジェネレータ８００は、第２のパイプステージｎ０１のランクアドレスジェネレータ８２８ｂにより生成される次のランクアドレスを生成するべく（ブロック９３８）、ランクループ９３３においてランクアドレスをインクリメントし、第２のパイプステージｎ０１のランクアドレスジェネレータ８２８ａにより生成されたランクアドレスが再び変更される（ブロック９３８）前に、入れ子のバンクループ９３１、列ループ９２６、および行ループ９２７において上記されたように、次のランクにおける複数のメモリセルのバンクの各々の全体で生成済みフルアドレスを再びトラバースするべく、行アドレス（ブロック９１６）、列アドレス（ブロック９１８）、およびバンクアドレス（ブロック９１４）をリセットする。選択済みのメモリ領域の全てのランクのトラバーサルが完了すると（ブロック９４０）、選択済みのメモリ領域のトラバーサルは完了している（ブロック９４４）。このように、パイプラインアドレスジェネレータ８００は、図８ｂおよび図９ｃにおける構成８０４ｂのバンク、列、行およびランクの低次のものから高次のものへのアドレス順序で、選択済みのメモリ領域の複数のメモリセルの各ランクにおける各バンクの列および行全体で複数の生成済みフルアドレスをトラバースするべく、メモリセルのフルアドレスを生成する。
【０１１８】
図８ｃ〜図８ｆは、示されるような異なるアドレス順序にシーケンシャルにメモリアドレスを生成する、図３ａのアドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎの他の構成８０４ｃ〜８０４ｆの複数の例を示す。示されるように、これらの他の構成において、パイプラインアドレスジェネレータ８００は、パイプステージｎ００、ｎ０ａおよびアドレス順序スロットであるアドレス順序３〜０に配置されたランクアドレスジェネレータ８２８ｃ〜ｆ、バンクアドレスジェネレータ８２４ｃ〜ｆ、行アドレスジェネレータ８２０ｃ〜ｆおよび列アドレスジェネレータ８１０ｃ〜ｆを有する。例えば、図８ａ、図８ｂおよび図８ｅの構成において、ランクアドレスがデバイスシーケンスの次のランクアドレスにインクリメントされる前に、複数のバンクアドレスは、デバイスのシーケンスの次のバンクアドレスにシーケンシャルにインクリメントされる。
【０１１９】
逆に、図８ｃ、図８ｄおよび図８ｆの構成において、バンクアドレスがシーケンスにおけるデバイスの次のバンクアドレスにインクリメントされる前に、複数のランクアドレスは、シーケンスにおけるデバイスの次のランクアドレスにシーケンシャルにインクリメントされる。具体的な用途に応じて複数の他の構成および他のアドレス順序が使用され得ることを理解されたい。
【０１２０】
アドレスを生成してメモリ１０４をトラバースする場合に、選択済みのトラバーサルパターンの選択済みのトラバーサル方向（例えば、北、南、東、西（図３ｃ）に応じて、例えば行アドレス、列アドレス、バンクアドレスおよびランクアドレス等の複数のアドレス部分が正または負の量によりインクリメントされ得ることを理解されたい。選択された特定のウォーキングパターンに応じて、複数のアドレス部分がセル、バンクまたはランクユニット等、２つ以上の適用可能なユニットにより（正または負で）インクリメントされ、複数のセル、バンクまたはランクをスキップし得ることを更に理解されたい。更に、インクリメント量は、いくつかのトラバーサルパターンにおいて固定されているのではなく、変わる場合がある。トラバーサルパターンを規定する複数のパラメータを含むトラバーサルパターンは、例えば、選択されたアドレスジェネレータに適用されるアドレス命令、例えば命令ループ３２２（図３ｂ）におけるシーケンス３２４（図３ａ）のアドレス命令１，２...ｎにより選択され得る。
【０１２１】
図８ｈは、図３ａのアドレスジェネレータ３７４ａ，３７４ｂ...３７４ｎのオフセットアドレスジェネレータ３７４ａ，３７４ｂ...３７４ｎの一例を示す。本例において、オフセットアドレスジェネレータは、図３ｄのアドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎについてすでに説明されたアドレスジェネレータ８００の構成８０４ｈである。図８ｈに図示されるパイプラインアドレスジェネレータ８００の構成８０４ｈは、図９ａに図示される隣接トラバーサルパターンにおけるベースからオフセットされる複数のメモリアドレスをシーケンシャルに生成する。構成８０４ａにおいて、パイプラインアドレスジェネレータ８００は、第１のパイプステージｎ００の最低次のアドレス順序のスロットであるアドレス順序０の列アドレスジェネレータ８１０ａと、第２のパイプステージｎ０１の次の最低次のアドレス順序のスロットであるアドレス順序１の行アドレスジェネレータ８１０ａとを有する。ランクおよびバンクのアドレスは、ベースアドレスにより提供され、従って各ベースアドレスについて依然として変わらない。
【０１２２】
図３ｄに図示された隣接トラバーサルパターンにおいて、４つのオフセットされたフルアドレスは、ベースアドレスの行アドレスにおいてベースアドレスの列アドレスを、まずある方向にインクリメントし、次いで反対方向にすることにより生成される。同様に、更なる４つのオフセットされたフルアドレスは、ベースアドレスの列アドレスにおいてベースアドレスの行アドレスを、まずある方向に、次いで反対方向にインクリメントすることにより生成される。迅速な列または行のアドレス生成を容易にするべく、行アドレスおよび列アドレスジェネレータの位置は、適宜、図８ｈに図示される構成の逆になるように再構成され得る。
【０１２３】
本明細書の別の態様によれば、パイプラインアドレスジェネレータ８００は各々、構成８０４ａ〜ｇの搬送カウントジェネレータ８１４ａ〜ｇ等の搬送カウントジェネレータを有する。図示された実施形態において、パイプラインアドレスジェネレータ８００の対応する複数のアドレスジェネレータにより生成されたアドレスのうちの１または複数は、生成された複数のアドレスのアドレス搬送用のルックアヘッド機能を実行する搬送カウントジェネレータ８１４ａ〜ｇの出力の関数である。
【０１２４】
例えば、図８ａの構成におけるアドレス順序では、最後の行アドレスを生成した後、バンクアドレスは、選択されたウォーキングパターンのシーケンスにおける次のバンクのバンクアドレスにインクリメントする。しかし、行または列アドレス等のアドレスが例えば３２ビットまたは６４ビットを有する大きなカウンタを有するアドレスジェネレータにより生成される複数の実施形態において、そのようなジェネレータによるアドレス搬送の生成にそれに対応する大量の時間がかかり得ることを理解されたい。
【０１２５】
図１０および図１１は、本明細書の別の態様を対象とする。図示された実施形態において、パイプラインアドレスジェネレータは、図１０の複数の動作において説明され、図１１のクロック信号９１０により概略的に表されるクロック信号に応答して、最初のスタートアップ期間後のクロック信号毎にランク、バンク、列および行のアドレスを含むフルアドレスを生成する。パイプステージｎ００の搬送カウントジェネレータ８１４ａは、生成されるアドレスのアドレス搬送のルックアヘッド機能を実行するので、パイプステージｎ００における搬送カウントジェネレータ８１４ａの出力は、最初のスタートアップ期間後のクロック１、クロック２...クロックｎといった各クロック信号における最初の部分（図１１においてクロックインターバルＡ１により概略的に表される）において有効となり得る。クロックサイクルの前または比較的初期に出力された有効アドレス搬送を提供するべく、アドレス搬送の関数であるバンクアドレス等の１または複数のアドレスも、インターバルＡ１と同一であるか、異なるか、または重複し得る各クロック（図１１においてクロックインターバルＡ２により概略的に表される）のインターバルにおける次のクロックサイクルで有効となり得る。結果として、次のフルアドレスの出力は、最初のスタートアップ期間後のインターバルＡ２に続く各クロック信号の一部（図１１のクロックインターバルＢ１により概略的に表される）において有効である。従って、スタートアップ初期化期間１１１４の後に、パイプラインアドレスジェネレータ８００は、各クロックサイクル、クロック１、クロック２等の各インターバルＢ１におけるシーケンスでフルアドレスを生成し得る。
【０１２６】
図１０は、例えば図８ａ〜図８ｈのアドレスジェネレータ８００等の構成可能アドレスジェネレータの複数のパイプステージの動作を図示する。第１のオペレーションにおいて、アドレスジェネレータは、例えばフルアドレスの図８ｂにおけるアドレス順序のランク、行、列およびバンクのアドレスなど、特定のアドレス順序に対して構成される（ブロック１０１０）。そのような構成は、例えばアドレス命令により提供され得る。図１０の例において、アドレスジェネレータは、図８ａとして構成されている。
【０１２７】
更に、ジェネレータは、選択済みのメモリ領域に対して構成されている（ブロック１０１４）。複数のそのような構成パラメータは、例えばアドレス命令により提供され得、ランク、バンク、列、行等の数についてトラバースされるメモリ領域の大きさを規定し、例えば開始アドレスを含み得る。スタートアップ期間１１１４（図１１）等のスタートアップ期間（ブロック１０１８）の後に、第１のフルアドレスは、例えばクロックであるクロック１のインターバルＢ１（図１１）等のクロックサイクルインターバルで出力され得る。
【０１２８】
スタートアップ期間の後に、例えばクロックサイクル中にパイプステージｎ００等のパイプステージは、インクリメントし（ブロック１０２６）、構成８０４ａの構成におけるアドレス順序で列アドレスを出力し（図８ａ）、組み合わされた列および行は、搬送カウンタジェネレータ８１４ｂのカウントを実行する。次のクロックサイクル中に、例えばパイプステージｎ０１等のパイプステージは、行アドレス、バンクアドレスおよびランクアドレスを更新および出力する（ブロック１０３４）。パイプステージｎ０１により生成される行アドレス、バンクアドレスおよびランクアドレスは、前のクロックサイクルにおいてパイプステージｎ００により生成された列および行の組み合わせ搬送カウントの関数である。行アドレス、バンクアドレスおよびランクアドレスは、パイプステージｎ０１により１つのフルアドレスに対して生成されるが、パイプステージｎ００は、同一のクロックサイクルで、列および行の組み合わさ搬送カウント、ならびに次のフルアドレスに対する列アドレスを生成する。従って、フルアドレスを生成するには、２クロックサイクルが掛る。しかし、パイプステージｎ００およびｎ０１は、パラレルに動作するので、フルアドレスは、各クロックサイクルにおいて出力される。一実施形態において、第１のパイプラインステージにおけるアドレス搬送カウントジェネレータの出力は、最初のスタートアップ期間後に各クロック信号において有効であり、次のフルアドレスは、最初のスタートアップ期間後に各クロック信号の次の部分において有効である。
【０１２９】
例えば、選択済みのメモリ領域の最後フルアドレスが生成および出力されなかった場合（ブロック１０３６）、クロック３等、次のクロックサイクルに対してブロック１０２６〜１０３６の動作が反復される。このように、フルアドレスは、スタートアップ期間の後に各クロックサイクルに対して生成および出力される。選択済みのメモリ領域における全てのアドレスが生成されると（ブロック１０３６）、処理はストレステストの当該部分について終了する（ブロック１０４０）。
【０１３０】
図１２は、本明細書の一態様による、ジェネレータ３５４ａ〜ｎのプログラマブルアルゴリズムパターンジェネレータの一例を示す。図１１のプログラマブルアルゴリズムパターンジェネレータは、可変リフレッシュ信号ジェネレータ１２１０は、アルゴリズム命令ループ３３２（図３ｂ）におけるシーケンス３５６のアルゴリズム命令１，２，...ｎ（図３ａ）のうちの１つのようなアルゴリズム命令に応答して、メモリ１０４のメモリセルに対するリフレッシュ信号を生成する。リフレッシュ信号は、可変リフレッシュレートを有する。
【０１３１】
図示された実施形態において、メモリ１０４は、複数のビットが電荷としてノードキャパシタンスに格納されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。ＤＲＡＭにおいて、ビットセルは通常、時間が経過すると電荷を失う。メモリに格納されたデータを失うのを阻止するべく、ＤＲＡＭのメモリコントローラは、許可されるリフレッシュ時間内に全ての行にリフレッシュ信号を周期的に発して、各セル内の電荷を復元する（および格納されたデータを保持する）。
【０１３２】
複数のメモリセルがリフレッシュされることがあまり多くない場合、データは失われることがある。複数のメモリセルがあまりに頻繁にリフレッシュされる場合、エネルギーは浪費され、ポータブルデバイスにおいて早すぎるバッテリ消耗をもたらし得る。従って、可変リフレッシュ信号ジェネレータ１２１０は、メモリ仕様の予期されるリフレッシュレート内外の双方の様々なリフレッシュレートでリフレッシュ信号を生成し、複数の欠陥セルをテストして、メモリが仕様未満のレートでリフレッシュされるが、なおも格納済みのデータを保持し得るか否かを判断するようにプログラミングされ得る。
【０１３３】
一実施形態において、可変リフレッシュ信号ジェネレータ１２１０は、複数のリフレッシュレートの下がり方向のシーケンスにおける各レートで複数のメモリセルをリフレッシュするべく、リフレッシュレートの下がり方向のシーケンスで複数のリフレッシュ信号を生成するようにプログラミングされ得る。下がり方向のシーケンスにおける各リフレッシュレートは、複数のリフレッシュレートの下がり方向のシーケンスにおけるリフレッシュレートの前のレートからの大きさだけ低減されてもよい。このように、複数のメモリセルは、メモリの欠陥またはデータ喪失が検出されるまで、下がり方向の複数のリフレッシュレートでリフレッシュされ得る。
【０１３４】
一実施形態において、リフレッシュレートは、テストが進行中に、複数のリフレッシュ信号の周波数を変更することにより変更され得る。別の実施形態において、複数のリフレッシュ信号のリフレッシュパルスのデューティサイクルは、テストの進行中に変更され得る。複数のリフレッシュ信号は、具体的な用途に応じて他の点において異なるようにプログラミングされ得ることを理解されたい。別の態様において、リフレッシュレートの変更は、リフレッシュレートが変更されると、様々なメモリコマンドパターンのメモリコマンドが様々なメモリアドレストラバーサルパターンによりアドレス指定された複数のメモリセルに発行される様々な他のストレステストと組み合わされ得る。
【０１３５】
一実施形態において、可変リフレッシュ信号ジェネレータ１２１０は、アルゴリズム命令ループ３３２（図３ｂ）のシーケンス３５６におけるアルゴリズム命令１，２，...ｎ（図３ａ）のうちの１つ等のアルゴリズム命令により、例えばプログラミングされたレートでリフレッシュ信号を提供するようにプログラミングまたは構成され得る。
【０１３６】
様々なリフレッシュレートでリフレッシュ信号を生成するべく可変リフレッシュ信号ジェネレータ１２１０により入力および修正されるデータは、プログラマブルデータパターンジェネレータ３４２により提供され得る。複数の他の実施形態において、入力信号は、可変リフレッシュ信号ジェネレータ１２１０により自己生成され得る。一実施形態において、ジェネレータ１２１０の出力は、コマンド命令のパラメータにより選択され得る代替のデータ源である。
【０１３７】
図１３は、テストパターンジェネレータ２１０におけるプログラマブルアルゴリズムパターンジェネレータ３５０のアルゴリズムジェネレータ３５４ａ，３５４ｂ...３５４ｎ（図３ａ）のアルゴリズムジェネレータ１３１０の別の例を示す。本実施形態のアルゴリズムジェネレータ１３１０は、パターンシーケンサ１３１４ａ、１３１４ｂ、１３１４ｃを含み、これらの各々は、１または複数のマルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎのセレクタ入力部１３１８に結合された出力部Ｓ０、Ｓ１、Ｓ２を各々有する。各マルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎは例えば、レジスタまたはキャッシュ１３２４等のメモリに結合された入力部を有し、例えば、プログラマブルデータパターンジェネレータ３４２（図３ａ）により生成されてキャッシュ１３２４に格納され得るパターンミキサデータを格納する。各マルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎは、パターンシーケンサ１２１４ａ、１３１４ｂ、１３１４ｃの選択信号Ｓ０、Ｓ１、Ｓ２に各々応答して、マルチプレクサ入力部を選択してパターンミキサデータのビットをマルチプレクサ出力部に出力するように適合される。各マルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎにより出力されるデータは、複数のコマンドがメモリ１０４をトラバースするアドレスにおいて実行されるときに、メモリ１０４をストレステストする制御信号として用いられ得る。また、各マルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎにより出力されるデータは、複数のコマンドがメモリ１０４をトラバースするアドレスにおいて実行されるときに、メモリ１０４をストレステストする書き込みデータとして用いられ得る。なおも更に、各マルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎにより出力されるデータは、メモリ１０４がストレステストされるときに得られた実際のテストデータと比較する期待テスト結果データとして用いられ得る。一実施形態において、ジェネレータ１３１０の出力は、コマンド命令のパラメータにより選択され得る代替のデータ源である。同様に、一実施形態において、パターンシーケンサ１３１４ａ、１３１４ｂ、１３１４ｃの出力は、コマンド命令のパラメータにより選択され得る代替のデータ源である。
【０１３８】
図示された実施形態において、パターンシーケンサ１２１４ａ、１３１４ｂ、１３１４ｃは各々、マルチプレクサの選択信号Ｓ０、Ｓ１、Ｓ２の様々なパターンを出力するようにプログラミング可能である。一実施形態において、パターンシーケンサ１２１４ａ、１３１４ｂ、１３１４ｃは、アルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといったアルゴリズム命令のシーケンス３５６（図３ａ）における複数のアルゴリズム命令のシーケンシャルなループ３３２（図３ｂ）によりプログラミングされ得る。シーケンス３５６のアルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといった各アルゴリズム命令は、パターンシーケンサ１２１４ａ、１３１４ｂ、１３１４ｃのうちの適切な１つにより実行されると、当該パターンシーケンサ１２１４ａ、１３１４ｂ、１３１４ｃに特定のアルゴリズム命令の関数としてマルチプレクサの選択信号パターンを生成させる。
【０１３９】
アルゴリズムジェネレータ１３１０の別の態様において、生成されてキャッシュ１３２４に格納されたパターンミキサデータは、依然として静的であり得、特定のストレステスト中に変化しない。図１４は、キャッシュ１３２４に格納され、特定のマルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎの入力部に提供され得る様々なパターンミキサコードに基づく、オペレーションの様々なブール関数ベースのモードの例を図示する表である。図１４に示されるように、各マルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎにより出力されるデータは、マルチプレクサの選択信号Ｓ０、Ｓ１、Ｓ２のブール関数とみなされ得る。マルチプレクサの選択信号Ｓ０、Ｓ１、Ｓ２の特定のブール関数は、特定のパターンミキサコードをキャッシュ１３２４に格納して、そのパターンミキサコードを特定のマルチプレクサ１３２２ａ，１３２２ｂ，...１３２２ｎの入力部に提供することにより選択され得る。
【０１４０】
例えば、パターンミキサコード００（１６進数）がキャッシュ１３２４に格納され、例えばマルチプレクサ１３２２ａの複数の入力部に提供された場合、マルチプレクサ１３２２ａのデータ出力は、一定の０バイト値である。同様に、パターンミキサコードＦＦ（１６進数）がキャッシュ１３２４に格納され、例えばマルチプレクサ１３２２ａの複数の入力部に提供された場合、マルチプレクサ１３２２ａのデータ出力は、一定の０バイト値である。パターンミキサコードＡＡ（１６進数）がキャッシュ１３２４に格納されて、例えばマルチプレクサ１３２２ａの複数の入力部に提供された場合、マルチプレクサ１３２２ａのデータ出力は、マルチプレクサの選択信号Ｓ０と同一である。（他のマルチプレクサの選択信号Ｓ１、Ｓ２は、パターンミキサコードＡＡに「ドントケア（ｄｏｎ'ｔ  ｃａｒｅ）」である）。同様に、パターンミキサコードＣＣ またはＦ０（１６進数）がキャッシュ１３２４に格納されて、例えばマルチプレクサ１３２２ａの複数の入力部に提供された場合、マルチプレクサ１３２２ａのデータ出力は、マルチプレクサの選択信号Ｓ１、Ｓ２と各々同一である。
【０１４１】
パターンミキサコード０３（１６進数）がキャッシュ１３２４に格納されて、例えばマルチプレクサ１３２２ａの複数の入力部に提供された場合、マルチプレクサ１３２２ａのデータ出力は、マルチプレクサの選択信号Ｓ０およびＳ１の各々の逆関数のブールＡＮＤ関数と同一である。（他のマルチプレクサ選択信号Ｓ２は、パターンミキサコード０３に「ドントケア」である）。パターンミキサコード８０（１６進数）がキャッシュ１３２４に格納されて、例えばマルチプレクサ１３２２ａの複数の入力部に提供された場合、マルチプレクサ１３２２ａのデータ出力は、マルチプレクサの選択信号Ｓ０、Ｓ１およびＳ２のブールＡＮＤ関数と同一である。パターンミキサコードＣ０（１６進数）がキャッシュ１３２４に格納されて、例えばマルチプレクサ１３２２ａの複数の入力部に提供された場合、マルチプレクサ１３２２ａのデータ出力は、マルチプレクサの選択信号Ｓ０およびＳ１のブールＡＮＤ関数と同一である。（他のマルチプレクサ選択信号Ｓ２は、パターンミキサコードＣ０に「ドントケア」である）。パターンミキサコードＥＥ（１６進数）がキャッシュ１３２４に格納されて、例えばマルチプレクサ１３２２ａの複数の入力部に提供された場合、マルチプレクサ１３２２ａのデータ出力は、マルチプレクサの選択信号Ｓ０およびＳ１のブールＯＲ関数と同一である。（他のマルチプレクサ選択信号Ｓ２は、パターンミキサコードＥＥに「ドントケア」である）。具体的な用途に応じて、他の複数のパターンミキサコードを用いる他のブール関数が選択され得ることを理解されたい。
【０１４２】
一実施形態において、パターンミキサコードは、テストの最初にプログラミングされ、比較的静的であり得る。すなわち、テストがテストサイクルを経るときにはプログラミングされない。逆に、多重選択入力部１３１８に接続されたマルチプレクサの選択信号Ｓ０、Ｓ１、Ｓ２の複数のパターンストリームは、比較的動的であり得る。すなわち、例えばクロックサイクル毎に変化し得る。比較すると、従来の多重化スキームにおいて、動的入力ストリームは通常、マルチプレクサ入力部に入り、マルチプレクサの選択ラインにおける比較的静的な選択信号を用いて、複数の動的ストリームのうちの１つが選択されると考えられる。
【０１４３】
アルゴリズムジェネレータ１３１０の別の態様において、各パターンシーケンサ１３１４ａ、１３１４ｂ、１３１４ｃは、動作のモードがマルチプレクサの選択信号Ｓ０、Ｓ１、Ｓ２の選択済みのパターンを出力するように選択され得る、マルチモードパターンシーケンサである。図１５は、マルチモードパターンシーケンサとしてのパターンシーケンサ１３１４ａの一例を示す。他のパターンシーケンサ１３１４ｂ、１３１４ｃが、同様に構築され得る。例えば、各シーケンスにおいて複数のモードの動作のうちの１つを選択する機能は、多くのデバイス上で多くのテストに用いられるメモリを対象とするアウトバウンドパターンに対して同一のシーケンスを許可すると共に、オンザフライに生成されるインバウンドテスト結果と比較して期待結果の複数のパターンも許可することを可能にする。従って、メモリ領域をストレステストする複数のテストパターンは、それらのテストパターンに対する期待結果のパターンが例えば、同時または重複して生成されるときにリアルタイムで生成され得る。
【０１４４】
パターンシーケンサ１３１４ａは、シフトレジスタ１５１０が、本例においてマルチプレクサの選択信号Ｓ０であるパターンシーケンサ出力に、出力マルチプレクサ１５１３を介してシフトレジスタの出力１５１２におけるシフトレジスタ１５１０に格納された固定パターンをシフトする、第１の固定パターンモードを含む。パターンは、入力マルチプレクサ１５１５を介してシフトレジスタ１５１０にシフトされ得る。パターンシーケンサ１３１４ａは、クロック信号ジェネレータ１５１４が、出力マルチプレクサ１５１３ｍを介してパターンシーケンサ出力、すなわち、マルチプレクサの選択信号Ｓ０に出力部１５１６におけるクロック信号を出力する、クロック信号パターンモードを更に含む。図示された実施形態において、クロック信号は、クロック周期内のクロックパルスの長さがプログラミング可能なプログラマブル周期およびプログラマブルデューティーサイクルを有する。
【０１４５】
図１６は、クロックａ、クロックｂ等、そのようなクロック信号の一例を示す。クロック信号ジェネレータ１５１４（図１５）における組み合わせロジックの第１のカウンタは、クロック周期内でクロック信号のクロックパルスの開始１６１６における遅延１６１４の時間を合わせる。組み合わせロジックの第２のカウンタ１５２４は、クロックパルスの持続時間１６１８の時間を合わせ、第３のカウンタ１５２８は、次のクロック信号のクロックｂが開始するまで、クロックパルス１６１６の後におけるクロック信号の残余の周期の持続時間１６２２の時間を合わせる。このように、比較的長いクロック信号が容易に生成され得る。いくつかの実施形態において、クロック信号モードのスイープモードでは、テストの進行中に周波数またはデューティサイクルが変更され得る。
【０１４６】
パターンシーケンサ１３１４ａは、リニアフィードバック多項式パターンをパターンシーケンサ出力Ｓ０に出力するリニアフィードバックモードを更に含む。パターンシーケンサ１３１４ａは、マルチモードパターンシーケンサ１３１４ａにおける有限状態マシン１５３８の次の状態を決定する、有限状態マシン１５３８のリニアフィードバック多項式ロジック１５３２を有する。シフトレジスタ１５１０の出力１５１２は、リニアフィードバック多項式ロジック１５３２の複数の入力部および入力マルチプレクサ１５１５の入力部にフィードバックされる。
【０１４７】
図１７に最もよく見られるように、リニアフィードバック多項式ロジック１５３２の各ビットは、シフトレジスタ１５１０（図１５）におけるビットレジスタ１７１４の出力部に結合された入力部と、シフトレジスタ１５１０における入力部に結合された出力部とを有する、１または複数のマルチプレクサ１７１０を含む。リニアフィードバック多項式ロジック１５３２における各ビットのマルチプレクサ１７１０の別の入力部は、排他的ＯＲゲート１７２０により表される多項式組み合わせロジックに結合されている。有限状態マシン１５３８のリニアフィードバック多項式ロジック１５３２は、マルチモードパターンシーケンサ１３１４ａにおける有限状態マシン１５３８の次の状態を決定する。有限状態マシン１５３８の状態は、シフトレジスタ１５１０のビットレジスタに格納されたビットにより表される。このように、リニアフィードバックモードにおけるリニアフィードバック多項式の有限状態マシン１５３８は、固定パターンモードにおけるシフトレジスタ１５１０のビットレジスタ１７１４を共有する。従って、本例において、リニアフィードバックモードはリニアフィードバックシフトレジスタ（ＬＦＳＲ）ベースのモードとも称される場合があり、シフトレジスタ１５１０は、入力マルチプレクサ１５１５を介して提供された最初のシードを保持し、ロジック１５３２の複数のＬＦＳＲフィードバック多項式は、状態マシン１５３８の次の状態を決定する。一実施形態において、ロジック１５３２は、例えば８ビット〜３２ビットのような大きさの異なり得る最適化された複数のＬＦＳＲ多項式をサポートする。
【０１４８】
上述のように、例えばアルゴリズム命令１のような選択済みのアルゴリズム命令を実行する、例えばアルゴリズムジェネレータ３５４ａのようなアルゴリズムジェネレータにより生成されたこれらのランダムパターンは、相互接続上にホワイトノイズを生成して、欠陥をテストする相互接続にストレスを与えるべく用いられ得る。従って、例えばパターンシーケンサ１３１４ａのような１つのパターンシーケンサがクロック信号モードで操作されて、マルチプレクサの選択ラインＳ１に低周波数のクロック信号を生成するようにプログラミングされ、パターンシーケンサ１３１４ｂのような別のパターンシーケンサがＬＦＳＲベースのモードで動作して、マルチプレクサの選択ラインＳ２にランダムに現れるビットパターンを生成するようにプログラミングされた場合、パターンミキサコードＣ０（１６進数）により提供されたＳ１  ＡＮＤ  Ｓ２のブール関数は、ノイズのバーストを提供し、この後に静かな期間が続き、このサイクルが反復する。
【０１４９】
一実施形態において、シードデータが提供され得、動作モードは、アルゴリズム命令１，アルゴリズム命令２...アルゴリズム命令ｎといったアルゴリズム命令のシーケンス３５６（図３ａ）における１または複数のアルゴリズム命令を適用することにより、シフトレジスタ１５１０の固定パターンモード、クロックジェネレータ１５１４のプログラマブルクロック信号モード、およびリニアフィードバック多項式モードを含む利用可能な複数の動作モードから選択され得る。複数の他の実施形態において、複数のモードがテスタ回路の他の部分により選択され得る。
【０１５０】
図１８ａは、プログラマブルデータパターンジェネレータ３４２（図３ｆ）のデータジェネレータ３４４ａ（図１８ｂ）等のデータジェネレータの複数の動作の一例を示し、出力部１８０４におけるデータ出力の生成済みパターンは、データの生成済みパターンが書き込まれる複数のメモリセルにおけるメモリセルアドレスのパターンの選択可能な関数である。データの生成済みパターンは、テストデータをメモリデバイスに書き込むのに用いられてもよい。更に、データの生成済みパターンのコピーは、データの生成済みパターンが正しく格納され、テスト中のメモリ領域により取得されたか否かを検証する、欠陥検出器回路２２０に送信され得る。
【０１５１】
例えば、「データバックグラウンド」関数は、データジェネレータ３４４ａにより実行されるデータ命令のパラメータにより選択され得る、選択可能な関数である。従って、図１８ｂの実施形態において、データジェネレータ３４４ａは、関数が選択され得る複数のデータ命令のパラメータを受信する入力部１８１０を有する。第１のオペレーションにおいて、メモリアドレスベースのバックグラウンド関数は、入力部１８１０において選択される（図１８ａのブロック１８１２）。データおよび反転済みデータのパターンは、選択されたメモリアドレスベースのバックグラウンド関数に応じて生成され（ブロック１８１４）、出力部１８０４において出力される。
【０１５２】
１つのそのようなデータバックグラウンド関数の例は、同一の値（例えば、論理「１」等）が書き込まれ、次にメモリ１０４の複数のメモリセル３４０（図３ｃ）におけるメモリ領域１９１０について、図１９ａに図示されるテスト中の特定の領域における各アドレスから再び読み取られる、「ソリッド」関数である。メモリ領域１９１０は、複数の列および行に配置された５×５のアレイのメモリセル３４０により表される。上述のように、典型的なメモリ領域は実質的により大きく、従ってキロバイト、メガバイト、ギガバイト、テラバイトまたはそれ以上に達するメモリセルを有し得る。メモリ領域の一例は多くの場合、「バンク」と称される。各メモリセル３４０は、具体的な用途に応じて１ビット、１バイト、ビットのワードまたはより長い文字列を格納し得る。
【０１５３】
データジェネレータ３４４ａにより実行されるデータ命令の適切なパラメータにより選択され得る別のデータバックグラウンド関数は、「交互列ストライプ」関数である。生成されるデータは、書き込まれ、次にメモリ１０４における複数のメモリセル３４０（図３ｃ）のメモリ領域１９１０について、図１９ｂに図示されるテスト中の特定の領域における複数の偶数列の各アドレスから再び読み取られ、生成されるデータは、反転され、次いでメモリ１０４における複数のメモリセル３４０（図３ｃ）のメモリ領域１９１０について、図１９ｂに図示されるテスト中の特定の領域の複数の奇数列の各アドレスに書き込まれ、次にこれから再び読み取られる。複数の他の実施形態において、反転済みデータは奇数列に代えて、偶数列に書き込まれ得ることを理解されたい。
【０１５４】
従って、図１８ｂにおける実施形態のデータジェネレータ３４４ａは、テスト中のメモリ領域に書き込まれる前に、データが書き込まれる複数のメモリセルのアドレスの関数として、生成済みデータを選択的に反転し得る、データインバータ１８２０を含む。従って、図１８ｂの実施形態において、データジェネレータ３４４ａは、テストパターンジェネレータ２１０（図２）における１または複数のアドレスジェネレータにより生成されるアドレスを受信する入力部１８３０を有する。本例において、データインバータ１８２０は、テストされる領域における複数のメモリセルの列アドレスの関数として生成済みデータを選択的に反転する。より具体的には、データは、奇数列アドレスについて反転され、偶数列アドレスについては依然として未反転である。例えば一実施形態において、データは、列アドレスの最も重要でない（または最低次）のビットが奇数（論理「１」）である場合に反転され得（反転済みデータ）、列アドレスの最も重要でないビットが偶数（論理「０」）である場合には依然として未反転（データ）であり得る。他の実施形態において、データは、偶数列アドレスについて反転され得、奇数列アドレスについては依然として未反転であり得ることを理解されたい。選択的に反転され、または選択的に依然として未反転のデータは、データジェネレータ３４４ａにより内部で生成されてもよく、またはテストパターンジェネレータ２１０の別のデータジェネレータ３４４ｂ...３４４ｎにより生成されて、データジェネレータ３４４ａの入力部１８４０において入力されてもよい。
【０１５５】
データジェネレータ３４４ａにより実行されるデータ命令の適切なパラメータにより選択され得る別のデータバックグラウンド関数は、「交互行ストライプ」関数である。生成されるデータは、メモリ１０４における複数のメモリセル３４０（図３ｃ）のメモリ領域１９１０について、図１９ｃに図示されるテスト中の特定の領域における複数の偶数行の各アドレスに書き込まれ、次にこれから再び読み取られ、生成されるデータは、反転され、次いでメモリ１０４における複数のメモリセル３４０（図３ｃ）のメモリ領域１９１０について、図１９ｃに図示されるテスト中の特定の領域の複数の奇数行の各アドレスに書き込まれ、次にこれから再び読み取られる。複数の他の実施形態において、反転済みデータは、奇数行に代えて、偶数行に書き込まれ得ることを理解されたい。
【０１５６】
本例において、データインバータ１８２０は、テストされる領域における複数のメモリセルの行アドレスの関数として生成済みデータを選択的に反転する。より具体的には、データは、奇数行アドレスについて反転され、偶数行アドレスについては依然として未反転である。例えば一実施形態において、データは、行アドレスの最も重要でない（または最低次）のビットが奇数（論理「１」）である場合に反転され得（反転済みデータ）、行アドレスの最も重要でないビットが偶数（論理「０」）である場合には依然として未反転（データ）であり得る。複数の他の実施形態において、データは、偶数行アドレスについて反転されるが、偶数列アドレスについては依然として未反転であり得ることを理解されたい。データジェネレータ３４４ａにより実行されるデータ命令の適切なパラメータにより選択され得るなおも別のデータバックグラウンド関数は、交互の行および列のセルまたは「チェッカーボード」関数である。生成されるデータは、メモリ１０４における複数のメモリセル３４０（図３ｃ）のメモリ領域１９１０について、図１９ｄに図示されるテスト中の特定の領域における複数の偶数行の各偶数セルアドレスに書き込まれ、次にこれから再び読み取られ、生成されるデータは、反転され、次いでメモリ１０４における複数のメモリセル３４０（図３ｃ）のメモリ領域１９１０について、図１９ｄに図示されるテスト中の特定の領域の複数の偶数行の各奇数セルアドレスに書き込まれ、次にこれから再び読み取られる。
【０１５７】
同様に、「チェッカーボード」関数において、生成されるデータは、メモリ１０４の複数のメモリセル３４０（図３ｃ）におけるメモリ領域１９１０について、図１９ｄに図示されるテスト中に特定の領域の奇数行における各奇数セルアドレスに書き込まれ、次にこれから再び読み取まれ、生成されるデータは、反転され、メモリ１０４における複数のメモリセル３４０（図３ｃ）のメモリ領域１９１０について、図１９ｄに図示されるテスト中に特定の領域の奇数行における各偶数セルアドレスに書き込まれ、次にこれから読み取られる。図示された実施形態において、各メモリセル３４０における列アドレスの最も重要でない（または最低次）ビットおよび行アドレスの最も重要でないビットは、排他的ＯＲ関数に入力されて、当該特定アドレスの間で書き込み／読み取りをするべく生成されたデータが反転されたか（反転済みデータ）、または依然として未反転（データ）かを判断する。他のチェッカーボードの複数のデータバックグラウンド関数において、反転済みデータは、偶数行の奇数セルアドレスに代えて、偶数行の偶数セルアドレスに書き込まれてもよく、反転済みデータは、奇数行の偶数セルアドレスに代えて、奇数行の奇数セルアドレスに書き込まれてもよいことを理解されたい。
【０１５８】
本例において、データインバータ１８２０は、テストされる領域における複数のメモリセルの行アドレスおよび列アドレスの双方の関数として生成済みデータを選択的に反転する。より具体的には、データは、行アドレスおよび列アドレスにおける最も重要でないビットの排他的ＯＲ関数として反転される（または反転されない）。複数の他の実施形態において、データは、具体的な用途に応じて行アドレスおよび列アドレスの他の論理関数を含む、他の複数の関数のうちの１つの関数として反転され得る（または反転されない）ことを理解されたい。
【０１５９】
図示された実施形態において、データバックグラウンド関数は、データ命令の適切なパラメータを用いて選択され得る。従って、ソリッドデータバックグラウンド関数、交互列ストライプバックグラウンド関数、交互行ストライプバックグラウンド関数、またはチェッカーボードバックグラウンド関数は、例えば００、０１、１０または１１のパラメータコードを各々用いて選択され得る。具体的な用途に応じて、特定のデータバックグラウンド関数を選択するべく、他の複数のデータバックグラウンド関数が選択されてもよく、他の複数の命令パラメータコードが使用されてもよいことを理解されたい。
【０１６０】
データの生成済みパターンに選択可能な関数の別の例は、テスト中の領域における全てのメモリセルについて生成される全てのデータをグローバルに反転するグローバル反転関数である。テストデータのそのようなグローバル反転は、例えばデータ命令の適切なパラメータを用いて選択され得る。
【０１６１】
データの生成済みパターンに選択可能な関数の別の例は、データが複数のメモリアドレスオフセットの周期的パターンの関数として反転される、選択可能な周期的データ反転関数である。従って、図１８ｂの実施形態において、データジェネレータ３４４ａは、複数の適切なオフセットアドレス命令に応答して、テストパターンジェネレータ２１０（図２）における１または複数のアドレスオフセットジェネレータにより生成されるアドレスオフセットを受信する入力部１８５０を有する。以下に説明されるように、複数のメモリアドレスオフセットの選択可能な周期的パターンは、選択可能な周期的メモリアドレスオフセット関数により生成され得る。一実施形態において、選択可能な周期的メモリアドレスオフセット関数は、アドレスオフセットジェネレータにより実行されて、複数のメモリアドレスオフセットの選択済みの周期的パターンを生成する、適切なオフセットアドレス命令を用いて選択され得る。
【０１６２】
選択可能な周期的データ反転関数を使用して、テスト中のメモリ領域に書き込まれるデータは、メモリ領域がトラバースされるときに、アドレスオフセット命令に応答して当該領域における選択されたセットのセル上で反転され得る。同様に、メモリ領域が２度目にトラバースされてメモリ領域からデータを読み取り、先行するデータの書き込みオペレーションを検証する場合、別のアドレスオフセット命令は、データ書き込みオペレーションの周期的データ反転を担うべく用いられ得る。
【０１６３】
アドレスオフセットジェネレータにより実行される適切なアドレスオフセット命令により選択され得る選択可能な周期的データ反転関数、およびデータジェネレータ３４４ａにより実行される適切なデータ命令の一例は、生成されるデータが反転され、次に例えば、本例において４×４のメモリセル領域であるメモリ領域１９２０の図１９ｅにおける列Ｃｏｌ１等の単一列に書き込まれる「単一列ストライプ」関数である。テスト中のメモリ領域１９２０の残余の複数の列については、生成されるデータは、図１９ｅの列であるＣｏｌ０、Ｃｏｌ２〜Ｃｏｌ３について示されるように反転されることなく書き込まれる。テスト中のメモリ領域１９２０は、明確にする目的で図１９ｅにおける複数のメモリセルの４×４のアレイとして図示されているが、テスト中のメモリ領域は通常、具体的な用途に応じて数十、数百、数千、数百万等のメモリセルを有し得ることを理解されたい。
【０１６４】
図１９ｅに図示された４×４のセルのメモリ領域１９２０をトラバースする場合に、トラバーサルのベースセルは例えば、Ｒｏｗ０、Ｃｏｌ１の行アドレスおよび列アドレスにあるセルとみなされ得る。本例において、Ｒｏｗ０、Ｃｏｌ１のベースセルに書き込まれるデータは、図１９ｅに示されるように反転される。メモリ領域１９２０は、例えば、行に沿って左から右へとトラバースされ得る。行に沿ったこの左から右へのトラバーサルは、図１９ｅにおいて「北」方向として示されている。
【０１６５】
Ｒｏｗ０、Ｃｏｌ１の行アドレスおよび列アドレスにおけるベースセルに書き込まれたデータが反転される場合、単一列ストライプデータ反転パターンを北にトラバースするとき次の３つのデータセル（Ｒｏｗ０、Ｃｏｌ２；Ｒｏｗ０、Ｃｏｌ３；Ｒｏｗ１、Ｃｏｌ０の各々）に書き込まれたデータは、反転されない。北方向へのトラバーサルを継続して、Ｒｏｗ１、Ｃｏｌ１の行アドレスおよび列アドレスにおける次のセルに書き込まれたデータが反転され、北方向にトラバースするときに次の３つのデータセル（Ｒｏｗ１、Ｃｏｌ２；Ｒｏｗ１、Ｃｏｌ３；Ｒｏｗ２、Ｃｏｌ０の各々）に書き込まれたデータは、反転されない。この処理は、データがテスト中にメモリ領域の全てのメモリセルに書き込まれるまで反復され、北方向にトラバースするときに４×４のメモリ領域のセルに書き込まれたデータは、４番目のセル毎に反転されて、４つのセルの周期を有する単一列ストライプデータ反転パターンを生成する。
【０１６６】
テスト中にメモリ領域における複数のメモリセルの正方形アレイの行の数または列の数は、変数Ｎにより表され得る。従って、テスト中のメモリ領域における複数のメモリセルのＮ×Ｎのアレイの単一列ストライプデータ反転パターンでは、周期的データ反転関数の周期は、北方向のトラバーサルについてはＮに等しい。Ｍ（行）×Ｎ（列）の矩形のアレイについては、周期的データ反転関数の周期は、北方向のトラバーサルについてはＮに等しく、これはアレイ内の列の数である。
【０１６７】
メモリ領域１９２０は、北方向に代えて、単一列ストライプデータ反転パターンの南方向にトラバースされ得る。南方向のトラバーサルで４×４のメモリ領域の複数のセルに書き込まれたデータが４番目のセル毎に再び反転されて、４つのセルの周期を有する単一列ストライプデータ反転パターンを生成することが分かる。従って、この１つのストライプパターンにおける周期的データ反転関数の周期は同一である。すなわち、アレイの列の数であるＮは、北方向または南方向にあっても、単一列ストライプデータ反転パターンを生成する。次の検証テストにおいて、北方向または南方向のトラバーサルでＭ（行）×Ｎ（列）のメモリ領域から再度読み取られたデータをテストするべく生成されたデータは、Ｎのセルの周期を有する単一列ストライプデータ反転パターンを生成するべくＮ番目のセル毎に反転される。
【０１６８】
データジェネレータ３４４ａにより実行される適切なアドレスオフセット命令により選択され得る、周期的データ反転関数の別の例は、「行ストライプ」関数である。生成されるデータは反転され、次いで例えば、本例において４×４のメモリセル領域であるメモリ領域１９２０の図１９ｆにおける行Ｒｏｗ１等の１つの行に書き込まれる。テスト中のメモリ領域１９２０の残余の複数の行については、生成されるデータは、図１９ｅのＲｏｗ０、Ｒｏｗ２〜Ｒｏｗ３の行に示されるように反転されることなく書き込まれる。テスト中のメモリ領域１９２０は、明確にする目的で図１９ｅにおける複数のメモリセルの４×４のアレイとして図示されているが、テスト中のメモリ領域は通常、具体的な用途に応じて数十、数百、数千、数百万等のメモリセルを有し得ることを理解されたい。
【０１６９】
図１９ｅに図示される４×４のセルのメモリ領域１９２０をトラバースするときに、トラバーサルのベースセルは、例えばＲｏｗ１、Ｃｏｌ０の行アドレスおよび列アドレスにおけるセルとみなされ得る。本例において、Ｒｏｗ１、Ｃｏｌ０におけるベースセルに書き込まれたデータは、図１９ｆに示されるように反転される。メモリ領域１９２０は、例えば、列に沿って上方から下方へとトラバースされ得る。列に沿ったこの上方から下方へのトラバーサルは、図１９ｆにおいて「東」方向として示されている。
【０１７０】
Ｒｏｗ１、Ｃｏｌ０の行アドレスおよび列アドレスにおけるベースセルに書き込まれたデータが反転されると、単一行ストライプデータ反転パターンにおける東にのトラバーサルにおいて、次の３つのデータセル（Ｒｏｗ２、Ｃｏｌ０；Ｒｏｗ３、Ｃｏｌ０；Ｒｏｗ０、Ｃｏｌ１の各々）に書き込まれたデータは、反転されない。東方向のトラバーサルを継続して、Ｒｏｗ１、Ｃｏｌ１の行アドレスおよび列アドレスにおける次のセルに書き込まれたデータは反転され、東方向のトラバーサルにおいて次の３つのデータセル（Ｒｏｗ２、Ｃｏｌ１；Ｒｏｗ３、Ｃｏｌ１；Ｒｏｗ０、Ｃｏｌ２の各々）に書き込まれたデータは、反転されない。この処理は、データがテスト中のメモリ領域の全てのメモリセルに書き込まれるまで反復される。東方向のトラバーサルにおいて４×４のメモリ領域の複数のセルに書き込まれたデータは、４番目のセル毎に反転され、４つのセルの周期を有する単一行ストライプデータ反転パターンを生成する。周期は、やはり正方形アレイの大きさであるＮに等しい。従って、テスト中のメモリ領域における複数のメモリセルのＮ×Ｎの正方形アレイの単一行ストライプデータ反転パターンでは、周期的データ反転関数の周期は、東方向のトラバーサルについてはＮに等しい。Ｎ（行）×Ｍ（列）の矩形のアレイについては、周期的データ反転関数の周期は、北方向のトラバーサルについてはＮに等しく、これはアレイ内の行の数である。
【０１７１】
メモリ領域１９２０は、東方向に代えて、単一行ストライプデータ反転パターンで西（下方から上方）方向にトラバースされ得る。西方向のトラバーサルで４×４のメモリ領域の複数のセルに書き込まれたデータが４番目のセル毎に再び反転されて、４つのセルの周期を有する単一行ストライプデータ反転パターンを生成することが分かる。従って、この単一行ストライプパターンにおける周期的データ反転関数の周期は同一である。すなわち、アレイの行の数であるＮは、東方向または西方向であっても単一行ストライプデータ反転パターンを生成する。次の検証テストにおいて、東方向または西方向のトラバーサルにおいてＮ（行）×Ｍ（列）のメモリ領域から再度読み取られたデータをテストするべく生成されるデータは、Ｎ番目のセル毎に反転されて、Ｎのセルの周期を有する単一行ストライプデータ反転パターンを生成する。
【０１７２】
データが複数のメモリアドレスオフセットの周期的パターンの関数として反転されるデータの生成済みパターンに選択可能な周期的データ反転関数の別の例は、図１９ｇに図示される「斜めストライプ」データ反転関数である。「斜めストライプ」データ反転関数において、生成されるデータは反転されて、例えば図１９ｅのメモリ領域１９２０に類似する、テスト中のメモリ領域１９２０（図１９ｇ）の斜めストライプに書き込まれる。斜めストライプ内に存在しない、テスト中のメモリ領域における残余の複数のセルについては、生成されるデータは、反転されることなく書き込まれる。
【０１７３】
図１９ｇに図示される４×４のセルのメモリ領域１９２０をトラバースするときに、トラバーサルのベースセルは、例えばＲｏｗ０、Ｃｏｌ０の行アドレスおよび列アドレスにおけるセルとみなされ得る。本例において、Ｒｏｗ０、Ｃｏｌ０におけるベースセルに書き込まれたデータは、図１９ｇに示されるように反転される。メモリ領域１９２０は、例えば、行に沿って左から右へとトラバースされ得る。行に沿ったこの左から右へのトラバーサルは、図１９ｅにおいて「北」方向として示されている。
【０１７４】
Ｒｏｗ０、Ｃｏｌ０の行アドレスおよび列アドレスにおけるベースセルに書き込まれたデータが反転される場合、単一斜めストライプデータ反転パターンを北にトラバースするときに次の４つのデータセル（Ｒｏｗ０、Ｃｏｌ１；Ｒｏｗ０、Ｃｏｌ２；Ｒｏｗ０、Ｃｏｌ３；Ｒｏｗ１、Ｃｏｌ０の各々）に書き込まれたデータは、反転されず、この後に、Ｒｏｗ１、Ｃｏｌ１の行アドレスおよび列アドレスにおける次の（第５番目の）セルに書き込まれたデータの反転が続く。北方向のトラバーサルにおいて次の４つのデータセル（Ｒｏｗ１、Ｃｏｌ２；Ｒｏｗ１、Ｃｏｌ３；Ｒｏｗ２、Ｃｏｌ０；Ｒｏｗ２、Ｃｏｌ１の各々）に書き込まれたデータは反転されず、Ｒｏｗ２、Ｃｏｌ２の行アドレスおよび列アドレスにおける次の（第５番目の）セルに書き込まれたデータが反転される。この処理は、データがテスト中のメモリ領域における全てのメモリセルに書き込まれるまで反復される。このように、北方向のトラバーサルにおいて４×４のメモリ領域における複数のセルに書き込まれたデータは、５番目のセル毎に反転されて、５つのセルの周期を有する単一斜めストライプデータ反転パターンを生成する。従って、テスト中のメモリ領域における複数のメモリセルのＮ×Ｎのアレイの単一斜めストライプデータ反転パターンでは、周期的データ反転関数の周期は、北方向のトラバーサルについてはＮ＋１に等しい。Ｍ（行）×Ｎ（列）の矩形のアレイについては、周期的データ反転関数の周期は、北方向のトラバーサルについてはＮ＋１に等しく、Ｎは、北方向のトラバーサルのアレイ内の列の数に等しい。
【０１７５】
また、メモリ領域１９２０は、行に沿った北（左から右への）方向に代えて、列に沿った東（下方）方向にトラバースされ、単一斜めストライプデータ反転パターンを生成し得る。東方向のトラバーサルで４×４のメモリ領域の複数のセルに書き込まれたデータが５番目のセル毎に再び反転されて、５つのセルの周期を有する単一斜めストライプデータ反転パターンを生成することが分かる。従って、この単一斜めストライプパターンの周期的データ反転関数の周期は、北方向または東方向であっても同一であり、単一斜めストライプデータ反転パターンを生成する。次の検証テストにおいて、北または東の方向のトラバーサルにおいて４×４のメモリ領域から再度読み取られたデータをテストするべく生成されたデータは、５番目のセル毎に反転されて、５つのセルの周期を有する単一斜めストライプデータ反転パターンを生成する。従って、テスト中のメモリ領域における複数のメモリセルのＮ×Ｎのアレイの単一斜めストライプデータ反転パターンでは、周期的データ反転関数の周期は、東方向のトラバーサルについてはＮ＋１に等しい。Ｎ（行）×Ｍ（列）の矩形のアレイについては、周期的データ反転関数の周期は、北方向のトラバーサルについてはＮ＋１に等しく、Ｎは、東方向のトラバーサルにおけるアレイ内の行の数に等しい。
【０１７６】
これらの例において検討された５つのセルの周期のような複数のセルの各周期において、データが反転される特定のセルは、周期の第１のセルであってもよく、周期の最後のセルであってもよく、または周期の中間セルであってもよい。複数の他の実施形態において、複数の中間セルを含む周期の２つ以上のセルのデータは、反転されて斜めストライプデータ反転パターンを生成し得ることを理解されたい。
【０１７７】
また、メモリ領域１９２０は、列に沿った西（上方）方向にトラバースされ、単一斜めストライプデータ反転パターンを生成し得る。図１９ｇに図示される４×４のセルのメモリ領域１９２０をトラバースするときに、トラバーサルのベースセルは、やはり、例えばＲｏｗ０、Ｃｏｌ０の行アドレスおよび列アドレスにおけるセルとみなされ得る。本例において、Ｒｏｗ０、Ｃｏｌ０におけるベースセルに書き込まれたデータは、図１９ｇに示されるように反転される。メモリ領域１９２０は、例えば列に沿った下方から上方へと西方向にトラバースされ得る。列に沿ったこの下方から上方へのトラバーサルは、図１９ｇにおいて「西」方向として示されている。
【０１７８】
Ｒｏｗ０、Ｃｏｌ０の行アドレスおよび列アドレスにおけるベースセルに書き込まれたデータが反転される場合に、単一斜めストライプデータ反転パターンについて西にトラバースするときに次の２つのデータセル（Ｒｏｗ３、Ｃｏｌ１；Ｒｏｗ２、Ｃｏｌ１の各々）に書き込まれたデータは、反転されず、その後にＲｏｗ１、Ｃｏｌ１の行アドレスおよび列アドレスにおける次の（第３の）セルに書き込まれたデータの反転が続く。西方向のトラバーサルにおいて次の２つのデータセル（Ｒｏｗ０、Ｃｏｌ１；Ｒｏｗ３、Ｃｏｌ２の各々）に書き込まれたデータは、反転されず、Ｒｏｗ２、Ｃｏｌ２の行アドレスおよび列アドレスにおける次の（第３の）セルに書き込まれたデータが、反転される。この処理は、データがテスト中のメモリ領域における全てのメモリセルに書き込まれるまで反復される。このように、西方向のトラバーサルにおいて４×４のメモリ領域における複数のセルに書き込まれたデータは、３番目のセル毎に反転されて、３つのセルの周期を有する単一斜めストライプデータ反転パターンを生成する。従って、テスト中のメモリ領域における複数のメモリセルのＮ×Ｎのアレイの単一斜めストライプデータ反転パターンでは、周期的データ反転関数の周期は、西方向のトラバーサルについてはＮ−１に等しい。Ｎ（行）×Ｍ（列）の矩形のアレイについては、周期的データ反転関数の周期は、北方向のトラバーサルについてはＮ−１に等しく、Ｎは、西方向のトラバーサルのアレイ内の行の数に等しい。
【０１７９】
また、メモリ領域１９２０は、列に沿った西（下方から上方への）方向に代えて、行に沿った南（右から左への）方向にトラバースされ、単一斜めストライプデータ反転パターンを生成し得る。南方向のトラバーサルにおいて４×４のメモリ領域における複数のセルに書き込まれたデータは、３番目のセル毎に再び反転されて、３つのセルの周期を有する単一斜めストライプデータ反転パターンを生成することが分かる。従って、この単一斜めストライプパターンの周期的データ反転関数の周期は、南方向または西方向であっても同一であり、単一斜めストライプデータ反転パターンを生成する。次の検証テストにおいて、北または東の方向のトラバーサルにおいて４×４のメモリ領域から再度読み取られたデータをテストするべく生成されたデータは、３番目のセル毎に反転されて、３つのセルの周期を有する単一斜めストライプデータ反転パターンを生成する。従って、テスト中のメモリ領域における複数のメモリセルのＮ×Ｎのアレイの単一斜めストライプデータ反転パターンでは、周期的データ反転関数の周期は、南方向のトラバーサルについてはＮ−１に等しい。Ｍ（行）×Ｎ（列）の矩形のアレイについては、周期的データ反転関数の周期は、北方向のトラバーサルについてはＮ−１に等しく、Ｎは、南方向のトラバーサルのアレイ内の列の数に等しい。
【０１８０】
これらの例において検討された３つのセルの周期のような複数のセルの各周期において、データが反転される特定のセルは、周期の第１のセルであってもよく、周期の最後のセルであってもよく、または周期の中間セルであってもよい。複数の他の実施形態において、複数の中間セルを含む周期の２つ以上のセルのデータは、反転されて斜めストライプデータ反転パターンを生成し得ることを理解されたい。
【０１８１】
図２０ａは、プログラマブルアドレスオフセットパターンジェネレータ３７０（図３ｆ）のオフセットアドレスジェネレータ３７４ａ（図２０ｂ）等のアドレスオフセットジェネレータの複数の動作の一例を示し、プログラマブルアドレスオフセットパターンジェネレータ３７０は、出力部２００４においてアドレスオフセット出力の周期的パターンを生成する、選択可能な周期的メモリアドレスオフセット関数を提供する。アドレスオフセットの周期的パターンは、オフセットアドレスジェネレータ３７４ａの周期調整回路２００８により調整され得る選択可能な周期の関数である。従って、図２０ｂの実施形態において、オフセットアドレスジェネレータ３７４ａは、オフセットアドレス命令の複数のパラメータを受信する入力部２０１０を有し、オフセットアドレス命令により周期は、選択および調整され得る。このように、周期的メモリアドレスオフセット関数が選択され得る。オフセットアドレスジェネレータ３７４ａによりオフセットされる複数のメモリアドレスは、オフセットアドレスジェネレータ３７４ａにより内部で生成されてもよく、またはテストパターンジェネレータ２１０のアドレスジェネレータ３１０ａ，３１０ｂ...３１０ｎ（図３ｆ）により生成されて、オフセットアドレスジェネレータ３７４ａの入力部２０１２において入力されてもよい。
【０１８２】
第１のオペレーションにおいて、複数の周期的メモリアドレスオフセットを生成する周期が選択される（図２０ａのブロック２０２０）。図示された実施形態において、複数の周期的メモリアドレスオフセットを生成する周期は、オフセットアドレスジェネレータ３７４ａの入力部２０１０において入力され得る、オフセットアドレス命令のパラメータとして指定され得る。上記のように、Ｎ×Ｎのアレイの例において、複数の周期的メモリアドレスオフセットを生成する周期は、オフセットアドレス命令のパラメータであるＮとして最初に指定され得る。Ｍ（行）×Ｎ（列）のアレイの例において、複数の周期的メモリアドレスオフセットを生成する周期は、オフセットアドレス命令のパラメータであり、北または南のトラバーサルに対するアレイの列の数であるＮとして最初に指定されてもよい。Ｎ（行）×Ｍ（列）のアレイの例において、複数の周期的メモリアドレスオフセットを生成する周期は、オフセットアドレス命令のパラメータである、東または西のトラバーサルに対するアレイの行の数であるＮとして最初に指定され得る。オフセットアドレス命令が周期的データ反転関数を可能にするパラメータ等、複数の他のパラメータを有し得ることを理解されたい。
【０１８３】
別の動作において、複数の周期的メモリアドレスオフセットを生成する指定周期の調整が選択される（図２０ａのブロック２０２４）。図示された実施形態において、複数の周期的メモリアドレスオフセットを生成する周期を調整する調整は、オフセットアドレスジェネレータ３７４ａの入力部２０１０において入力され得る、オフセットアドレス命令のパラメータとして指定され得る。図２１の表は、様々な周期的データ反転関数の周期的メモリアドレスオフセットのパターンを生成する指定周期に対する様々な調整を選択するように用いられ得る、複数のパラメータコードの例を示す。従って、メモリセルのアレイについては、複数の周期的メモリアドレスオフセットを生成する指定された最初の周期Ｎに対する調整は、例えば図２１に示された００のようなパラメータコードを用いて、０と指定され得る。同様に、複数の周期的メモリアドレスオフセットを生成する指定周期Ｎに対する調整は、例えば０１または１０のようなパラメータコードを用いて、＋１と指定され得る。また、複数の周期的メモリアドレスオフセットを生成する指定周期Ｎに対する調整は、例えば１１のようなパラメータコードを用いて、−１と指定され得る。具体的な用途に応じて複数の他のパラメータコードを用いて、周期的データ反転関数の周期に対して他の調整が行われ得ることを理解されたい。
【０１８４】
上記のように、テスト中のメモリ領域に対する単一列ストライプデータ反転パターン（例えば図１９ｅ）については、周期的データ反転関数の周期は、最初は、北（または南）方向のトラバーサルのメモリ領域の列の数であるＮに等しい。従って、図２１の単一列ストライプデータ反転パターンの表に示されるように、周期に対する調整は、適切なオフセットアドレス命令パラメータコードを用いてゼロ（０）に指定され得、従って調整済み周期は依然としてＮである。データ反転は、このオフセットアドレス命令パラメータに応答して、周期の複数のセルへのＮ番目のアクセスにおいて行われ得る。
【０１８５】
同様に、テスト中のメモリ領域に対する単一行ストライプデータ反転パターン（例えば図１９ｆ）については、周期的データ反転関数の周期は、最初は西（または東）方向のトラバーサルのために、メモリ領域の列の数であるＮに等しくなるように指定され得る。従って、単一行ストライプデータ反転パターンについては、周期に対する調整は、適切なオフセットアドレス命令パラメータコードを用いて指定され、再びゼロ（０）になり得る。データ反転は、例えばこのオフセットアドレス命令パラメータに応答して、周期の複数のセルへのＮ番目のアクセスにおいて行われ得る。
【０１８６】
従って、Ｎ番目のアクセスにおける反転を用いて周期的データ反転関数の周期をゼロにする調整は、例えば００のようなパラメータコードを図２１に示されるオフセットアドレス命令のパラメータとして提供し、行または列のストライプ周期的データ反転関数を提供することにより選択され得る。反転は、具体的な用途に応じて各周期のセルへの他のアクセスにおいて行われるように選択され得ることを理解されたい。
【０１８７】
また、上記のように、テスト中のメモリ領域に対する単一斜めストライプデータ反転パターン（例えば図１９ｇ）については、周期的データ反転関数の最初の周期は、北（または東）方向のトラバーサルにおいてＮ＋１に等しくなるように調整される。従って、北方向または東方向にトラバースされる単一斜めストライプデータ反転パターンについては、周期に対する調整は、例えば０１または１０のオフセットアドレス命令パラメータコードを用いて、プラス１（＋１）に指定され得る。０１というパラメータコードは、周期のセルに対するＮ番目のアクセスにおいて反転が生じるように指定するべく用いられる。逆に、１０というパラメータコードは、反転が周期のセルに対する１番目のアクセスにおいて行われるように指定するべく用いられ得る。複数の他のパラメータコードが周期に対する適切な調整および反転のための適切なアクセスを選択して、特定の周期的データ反転関数を実現するべく使用され得ることを理解されたい。
【０１８８】
同様に、テスト中のメモリ領域に対する単一斜めストライプデータ反転パターン（例えば図１９ｇ）については、周期的データ反転関数の最初の周期は、西（または南）方向のトラバーサルにおいてＮ−１に等しくなるように調整され得る。従って、西（または南）方向にトラバースされる単一斜めストライプデータ反転パターンについては、周期に対する調整は、１１というオフセットアドレス命令パラメータコードを用いてマイナス１（−１）に指定され得る。また、１１というパラメータコードは、周期のセルに対するＮ番目のアクセスにおいて反転が生じるように指定するべく用いられる。複数の他のパラメータコードが周期に対する適切な調整および反転のための適切なアクセスを選択して、特定の周期的データ反転関数を実現するべく使用され得ることを理解されたい。
【０１８９】
オフセットメモリアドレスのパターンは、選択されたオフセットアドレス命令に従ってデータを反転するべく、生成され得る（図２０ａのブロック２０２６）。上述のように、データジェネレータ３４４ａの出力部１８４０におけるデータ出力のパターンは、データの生成済みパターンが書き込まれるべき複数のメモリセルのメモリセルアドレスにおけるパターンの選択可能な関数を生成する。上述のそのような選択可能な１つの関数は、データが複数のメモリアドレスオフセットの選択可能な周期的パターンの関数として選択的に反転される、選択可能な周期的データ反転関数である。図１８ｂの実施形態において、データジェネレータ３４４ａの入力部１８５０は、複数の適切なオフセットアドレス命令に応答して、テストパターンジェネレータ２１０（図２）のアドレスオフセットジェネレータ３７４ａにより生成される複数のアドレスオフセットの周期的パターンを受信する。
【０１９０】
従って、上述のように、単一列ストライプ関数、単一行ストライプ関数、および単一斜めストライプ関数等の周期的データ反転関数は、テストパターンジェネレータ２１０におけるアドレスオフセットジェネレータ３７４ａにより生成される複数のアドレスオフセットの周期的パターンの最初の周期を規定する適切なパラメータを有するオフセットアドレス命令と、周期および周期内のセルアクセス調整とを用いて、選択され得る。具体的な用途に応じて、複数の他の周期的データ反転関数およびアドレスオフセットの他の周期的パターンが選択され得ることを理解されたい。
【０１９１】
図示された実施形態において、周期的データ反転関数に関連して、テスト中のメモリ領域をトラバースするときに、複数の行アドレスおよび列アドレスに対するインクリメントは、例えばプラス１（＋１）のインクリメントに限定され得る。複数の他の実施形態において、メモリ領域をトラバースする行または列のインクリメントの大きさは、具体的な用途に応じて異なり得ることを理解されたい。
【０１９２】
本明細書の別の態様において、本明細書において説明される周期的データ反転関数は反復され、周期的データ反転関数が実行される度にベースセルのアドレスをインクリメントし得る。一実施形態において、複数のアドレスオフセットの周期的パターンを反復する回数は、テスト中のメモリ領域内におけるセルの数にセットされ得る。
【０１９３】
本明細書のなおも別の態様において、本明細書に説明される複数の反転関数は、互いにチェーン化されて図２２に図示されるステージ２１１０〜２１３０においてデータ反転し得る。１つのステージにおけるデータ反転関数の出力は、チェーンの次のステージにおけるデータ反転関数により入力される。
【０１９４】
関数（Ｘ，ｉｎｖ）、関数（Ｙ，ｉｎｖ）、関数（Ｚ，ｉｎｖ）といった反転関数は、様々な反転関数を表し、それらの各々は、例えば本明細書において説明される周期的データ反転関数、またはデータバックグラウンド関数のような別の反転関数であってもよい。従って、単一斜めストライプパターン反転関数のような反転関数を含む１つの反転関数ステージの出力は、例えばグローバル反転関数を含む次のステージに入力され得る。複数の反転関数の他の組み合わせは、具体的な用途に応じて複数のステージにおいて互いにチェーン化され得る。図２２は、互いにチェーン化された３つのそのような反転関数を図示するが、チェーン化反転関数の数は、具体的な用途に応じて異なり得ることを理解されたい。
【０１９５】
また、本明細書の別の態様において、ステージ２１４０におけるユーザまたはベンダにより規定された関数は、本明細書に説明されるパターン生成関数を用いてチェーン化され得る。ユーザまたはベンダにより規定された関数は、論理的・物理的メモリアドレスマッピングロジック２１５０を含み、複数のメモリアドレスの論理的・物理マッピングを提供し得る。論理的・物理的メモリアドレスマッピングロジック２１５０のマッピングに対するマッピング値は、ユーザまたはベンダにより規定された関数ステージ２１４０の複数のレジスタ２１６０を用いて、ユーザまたはベンダにより規定され得る。
【０１９６】
論理的メモリ空間において連続した複数のメモリアドレスは、メモリの物理ブロックにおける実際の物理レイアウトにおいて、物理的に連続しない場合があることを理解されたい。従って、行アドレスは例えば、奇数および／または偶数データビットが反転されるべきか否かを判断するキーとして用いられてもよい。集積回路デバイスを変更することなく、設計が集積回路デバイスに実装された後、このデータ生成機能は、プログラマブルロジックアレイに類似するレジスタ空間を通してユーザにより規定された関数を提供して、アドレスビットの関数としての反転をプログラミングする柔軟性をベンダに与える。更に、このユーザにより規定された関数により、設計者は特定のベンダの物理アドレスマッピングを予め予測することから解放され、ベンダは、本明細書に説明されるテスタを用いてメモリ回路をテストするときに、物理レイアウトを開示する必要がなくなる。
【０１９７】
データの生成済みパターンに選択可能な関数の別の例は、テスト中のメモリ領域に対して生成されるデータのレーンを回転させる、データレーン回転関数である。例えば、６４ビットのデータバスを有するメモリは、６４ビットのデータバスに対応する６４のデータレーンを有するものと想定され得る。図２３は、ビット０〜ビット４の５つのビットを有し、右から左に、最も重要でないビット（ＬＳＢ）から最も重要なビット（ＭＳＢ）へと並べられたデータレーンであるレーン０の一例を示す。レーン０のような各レーンのビットの数は、具体的な用途に応じて異なり得ることを理解されたい。例えば、ビットの数は、生成されるデータパターンの大きさおよびテスト中のメモリ領域の大きさに応じて、実質的により大きくなり得る。
【０１９８】
生成されるデータパターンの各レーンにおけるデータは、４つの回転を図示する図２３に示された最も重要でないビット位置から最も重要なビットへの方向で、そのような各回転につき１データビット位置だけ回転され得る。各回転において、最も重要なビット位置のビットは、再度最も重要でないビット位置へと回転する。データレーン回転関数は、例えばデータ命令のパラメータの形で可能にされ得る。同様に、回転の回数は、データ命令のパラメータの形で指定され得る。同様に、各回転のデータパターンは、テストされるメモリ領域に適用され、そのような各テストの結果をテストするのに用いられ得る。
【０１９９】
［例］
以下の複数の例は、更なる実施形態に関する。
【０２００】
例１は、複数のスペアメモリセルを含んだ複数のメモリセルを有するメモリと共に用いるメモリコントローラであって、
メモリコントローラ内に内蔵された内部セルフテストロジック回路と、
メモリコントローラ内に内蔵され、レポジトリに格納された複数のメモリ位置のリストを読み取り、複数のスペアメモリセルのメモリ位置を、少なくとも１つの欠陥メモリセルを含むメモリ位置と交換することにより、リストにおける複数のメモリ位置を修復するように適合され、修復ロジック回路を有する内部自己修復ロジック回路とを備え、
内部セルフテストロジック回路は、
複数のテストパターンを生成して、複数の生成済みテストパターンを用いてメモリ内の複数のメモリセルをテストするテストパターンジェネレータと、
レポジトリと、
複数のメモリセルをテストする複数のテストパターンに応答して複数の欠陥メモリセルを検出し、メモリコントローラ内のレポジトリに、複数のメモリ位置のリストを格納するように適合され、リストの各メモリ位置は、少なくとも１つの欠陥メモリセルを含む１ セットのメモリセルを含む検波回路とを有する。
【０２０１】
例２において、例１〜２０（本例を除く）の主題は、半導体ダイを任意選択で備え得、内部セルフテストロジック回路および内部自己修復ロジック回路は、メモリコントローラの半導体ダイ上に配置される。
【０２０２】
例３において、例１〜２０（本例を除く）の主題は、テストパターンジェネレータが、少なくとも１つのアドレスジェネレータを含む複数のジェネレータと、複数のジェネレータに、アドレスジェネレータに対する複数のアドレス命令のシーケンスの複数のアドレス命令のシーケンシャルなループを含む複数の入れ子のループ命令を適用するに適合されたループシーケンサ回路とを有し、シーケンスの各アドレス命令は、アドレスジェネレータにより実行されると、アドレスジェネレータに、複数のメモリセルアドレスのパターンを生成させ、テストパターンジェネレータは、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて複数のメモリコマンドを実行するように適合されることを任意選択で含み得る。
【０２０３】
例４において、例１〜２０（本例を除く）の主題は、複数のジェネレータは、少なくとも１つのデータジェネレータを有し、ループシーケンサ回路は、データジェネレータに、複数のデータ命令のシーケンスにおける複数のデータ命令のシーケンシャルなループを適用するように適合され、シーケンスの各データ命令は、データジェネレータにより実行されると、データジェネレータにテストデータのパターンに対するデータのパターンを生成させ、複数のデータ命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行するときに、テストパターンジェネレータは、複数のデータ命令のループのシーケンスにおいて実行されるデータ命令により生成されたテストデータのパターンを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込むように適合されることを任意選択で含み得る。
【０２０４】
例５において、例１〜２０（本例を除く）の主題は、少なくとも１つのアルゴリズムジェネレータを含む複数のジェネレータを任意選択で備え得、ループシーケンサ回路は、アルゴリズムジェネレータに、複数のアルゴリズム命令のシーケンスにおける複数のアルゴリズム命令のシーケンシャルなループを適用するように適合され、シーケンスの各アルゴリズム命令は、アルゴリズムジェネレータにより実行されると、アルゴリズムジェネレータに、テストデータのパターンに対するデータのパターンを生成させ、複数のアルゴリズム命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、テストパターンジェネレータは、複数のメモリセルにおいて複数のメモリコマンドを実行するときに、複数のアルゴリズム命令のループのシーケンスにおいて実行されるアルゴリズム命令に従ってテストデータのパターンを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに、書き込むように適合される。
【０２０５】
例６において、例１〜２０（本例を除く）の主題は、複数のジェネレータは、少なくとも１つのコマンドジェネレータを任意選択で含み得、ループシーケンサ回路は、コマンドジェネレータに、複数のコマンド命令のシーケンスにおける複数のコマンド命令のシーケンシャルなループを適用するように適合され、シーケンスの各コマンド命令は、コマンドジェネレータにより実行されると、コマンドジェネレータに複数のメモリコマンドのパターンを生成させ、複数のコマンド命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行するときに、テストパターンジェネレータは、複数のコマンド命令ループのシーケンスにおいて実行されるコマンド命令により生成された複数のコマンドのパターンを実行するように適合され、複数のコマンドの当該パターンは、複数のアルゴリズム命令のループのシーケンスにおいて実行されるアルゴリズム命令に応答し、複数のデータ命令のループのシーケンスにおいて実行されるデータ命令に応答して、テストパターンジェネレータの出力により生成されたテストデータのパターンを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む。
【０２０６】
例７において、例１〜２０（本例を除く）の主題は、複数のジェネレータが、少なくとも１つのアドレスオフセットジェネレータを任意選択で含み得、ループシーケンサ回路は、アドレスオフセットジェネレータに、複数のメモリアドレスオフセット命令のシーケンスにおける複数のメモリアドレスオフセット命令のシーケンシャルなループを適用するように適合され、シーケンスの各メモリアドレスオフセット命令は、アドレスオフセットジェネレータにより実行されると、アドレスオフセットジェネレータに複数のメモリアドレスオフセットのパターンを生成させ、複数のメモリアドレスオフセット命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、テストパターンジェネレータは、複数のメモリセルにおいて複数のメモリコマンドを実行するときに、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成され、複数のメモリアドレスオフセット命令のループのシーケンスにおいて実行されるメモリアドレスオフセット命令により生成された複数のメモリアドレスオフセットのパターンによりオフセットされた、複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおける複数のコマンド命令ループのシーケンスにおいて実行される複数のコマンド命令により生成された複数のコマンドのパターンを実行するように適合される。
【０２０７】
例８において、例１〜２０（本例を除く）の主題は、複数のメモリセルが、複数のメモリ領域に配置され、検波回路は、少なくとも１つの欠陥メモリセルを有するメモリ位置の数が特定のメモリ領域の最大値を超えるか否かを判断するように適合され、最大値を超える場合に、少なくとも１つの欠陥メモリセルを有するメモリ位置の数が特定のメモリ領域の最大値を超えることを示すフラグをセットすることを任意選択で含み得る。
【０２０８】
例９において、例１〜２０（本例を除く）の主題は、複数のメモリセルが、複数のメモリセルの複数のメモリ領域に配置され、各メモリ領域は、複数のメモリセルの複数の行および列に配置された複数のメモリセルのアレイを含み、メモリ領域の各メモリ位置は、複数のメモリセルの行であり、検波回路は、複数のメモリセルの特定のメモリ領域における複数のメモリセルの特定の行が、レポジトリのリストへのエントリとして既に格納されているか否かを判断するように適合され、複数のメモリセルの特定のメモリ領域における複数のメモリセルの特定の行がレポジトリのリストにエントリとして既に格納されている場合に、レポジトリに、複数のメモリ位置のリストのエントリとして、複数のメモリセルの特定のメモリ領域の特定の行を格納することをバイパスすることを任意選択で含み得る。
【０２０９】
例１０において、例１〜２０（本例を除く）の主題は、複数のメモリセルが、複数のメモリセルの複数のメモリ領域に配置され、各メモリ領域は、複数のメモリセルの複数の行および列に配置された複数のメモリセルのアレイを含み、メモリ領域の各メモリ位置は、複数のメモリセルの行であり、検波回路は、特定のメモリ領域の少なくとも１つの行が、特定のメモリ領域の複数のメモリセルの少なくとも１つの行に少なくとも１つの欠陥メモリセルを有するか否かを示す、各メモリ領域に対するフラグをセットするように適合されることを任意選択で含み得る。
【０２１０】
例１１において、例１〜２０（本例を除く）の主題は、複数のメモリセルが、複数のメモリセルのメモリ領域に配置され、各メモリ領域は、複数の行および列に配置された複数のメモリセルのアレイを含み、各メモリセルは、行アドレスおよび列アドレスを含み、少なくとも１つのアドレスジェネレータは、複数のパイプラインステージを有する第１の構成可能なパイプラインアドレスジェネレータであり、第１のパイプラインステージにアドレス搬送カウントジェネレータを有し、行アドレスジェネレータおよび列アドレスジェネレータのうちの１つを第２のパイプラインステージに有し、これにより、第１のパイプラインステージのアドレス搬送カウントジェネレータの出力の関数として、行アドレスおよび列アドレスの各々のうちの１つを生成することを任意選択で含み得る。
【０２１１】
例１２において、例１〜２０（本例を除く）の主題は、複数のメモリ領域がメモリ領域の複数のバンクに配置され、各バンクは、バンクアドレスを有し、複数のバンクは、バンクの複数のランクに配置され、各ランクは、ランクアドレスを有し、第１の構成可能なパイプラインアドレスジェネレータは、第１および第２のパイプラインステージのうちの１つにバンクアドレスジェネレータを含み、第１および第２のパイプラインステージのうち少なくとも１つにランクアドレスジェネレータを含む、第１の構成を有することを任意選択で含み得る。
【０２１２】
例１３において、例１〜２０（本例を除く）の主題は、構成可能なパイプラインアドレスジェネレータの第１の構成において、行、列、バンクおよびランクのアドレスジェネレータが第１の構成可能なパイプラインアドレスジェネレータに配置され、複数のアドレスが行、列、バンクおよびランクによりシーケンシャルに生成される順序を規定する第１のアドレス順序で行、列、バンクおよびランクのアドレスを各々、シーケンシャルに生成し、第１の構成可能なパイプラインアドレスジェネレータは、第２の配置で構成可能であり、構成可能なパイプラインアドレスジェネレータの第１の構成において、行、列、バンクおよびランクのアドレスジェネレータは、第１の構成可能なパイプラインアドレスジェネレータに配置されて、行、列、バンクおよびランクのアドレスを各々、複数のアドレスが行、列、バンクおよびランクにより第１のアドレス順序と異なるアドレス順序でシーケンシャルに生成される第２のアドレス順序で、シーケンシャルに生成することを任意選択で含み得る。
【０２１３】
例１４において、例１〜２０（本例を除く）の主題は、ランクアドレスがシーケンスにおける次のランクアドレスにインクリメントされる前に、第１のアドレス順序で、構成可能なパイプラインアドレスジェネレータが、複数のバンクアドレスを、シーケンスにおける次のバンクアドレスにシーケンシャルにインクリメントするように適合され、第２のアドレス順序において、バンクアドレスがシーケンスにおける次のバンクアドレスにインクリメントされる前に、構成可能なパイプラインアドレスジェネレータは、複数のランクアドレスを、シーケンスにおける次のランクアドレスにシーケンシャルにインクリメントするように適合されることを任意選択で含み得る。
【０２１４】
例１５において、例１〜２０（本例を除く）の主題は、第１のアドレス順序で、列アドレスがシーケンスにおける次の列アドレスにインクリメントされる前に、構成可能なパイプラインアドレスジェネレータは、シーケンスにおける次の行アドレスに複数の行アドレスをシーケンシャルにインクリメントするように適合され、第２のアドレス順序で、行アドレスがシーケンスにおける次の行アドレスにインクリメントされる前に、構成可能なパイプラインアドレスジェネレータは、シーケンスにおける次の列アドレスに複数の列アドレスをシーケンシャルにインクリメントするように適合されることを任意選択で含み得る。
【０２１５】
例１６において、例１〜２０（本例を除く）の主題は、パイプラインアドレスジェネレータが、クロック信号に応答して、最初のスタートアップ期間後に、クロック信号毎にランク、バンク、列および行のアドレスを含む次のフルアドレスを生成するように適合され、第１のパイプラインステージにおける搬送カウントジェネレータの複数のアドレスの出力が、最初のスタートアップ期間後の各クロック信号において有効であり、次のフルアドレスは、最初のスタートアップ期間後の各クロック信号において有効であることを任意選択で含み得る。
【０２１６】
例１７において、例１〜２０（本例を除く）の主題は、少なくとも１つのアルゴリズムジェネレータが可変リフレッシュレートを有する、複数のメモリセルに対するリフレッシュ信号を生成するように適合されたリフレッシュ信号ジェネレータを含むことを任意選択で含み得る。
【０２１７】
例１８において、例１〜２０（本例を除く）の主題は、リフレッシュ信号ジェネレータが、複数のリフレッシュレートの下がり方向のシーケンスの各レートで、複数のメモリセルをリフレッシュする複数のリフレッシュレートの下がり方向のシーケンスにおいて複数のリフレッシュ信号を生成するように適合され、下がり方向のシーケンスにおける各リフレッシュレートは、リフレッシュレートの下がり方向のシーケンスにおける先行するリフレッシュレートのレートからの大きさだけ低減されることを任意選択で含み得る。
【０２１８】
例１９において、例１〜２０（本例を除く）の主題は、少なくとも１つのアルゴリズムジェネレータが、各々、出力部と、複数の入力部および出力部を含むマルチプレクサと、少なくとも１つのパターンシーケンサの出力部に結合された少なくとも１つのセレクタ入力部を有する、少なくとも１つのパターンシーケンサを備え、マルチプレクサは、マルチプレクサ入力部を選択して、少なくとも１つのマルチプレクサ・セレクタ入力部に結合された少なくとも１つのパターンシーケンサに応答して、マルチプレクサ出力部に出力するように適合されることを任意選択で含み得る。
【０２１９】
例２０において、例１〜２０（本例を除く）の主題は、少なくとも１つのパターンシーケンサが、複数のビットレジスタと、シフトレジスタの複数のビットレジスタに結合されたリニアフィードバック多項式ロジックを含む有限状態マシンと、複数のカウンタ、およびシフトレジスタが固定パターンをパターンシーケンサ出力部にシフトするように適合された固定パターンモードと、パターンシーケンサがパターンシーケンサ出力にクロック信号を出力するように適合されたクロック信号パターンモードと、パターンシーケンサがパターンシーケンサ出力部にリニアフィードバック多項式パターンを出力するように適合される、リニアフィードバックモードとを含む、複数のモードの動作を含む組み合わせロジックとを有するシフトレジスタを備えるマルチモードパターンシーケンサであり、クロック信号は、クロック周期内のクロックパルスの長さがプログラミング可能であるプログラマブルデューティーサイクルを含み、組み合わせロジックの第１のカウンタは、クロック周期内のクロック信号のクロックパルスの開始における遅延の時間を合わせるように適合され、組み合わせロジックの第２のカウンタは、クロックパルスの持続時間に時間を合わせるように適合され、第３のカウンタは、次のクロック信号を開始するまで、クロックパルス後のクロック信号の残余の周期の持続時間に時間を合わせるように適合され、リニアフィードバック多項式ロジックは、マルチモードパターンシーケンサにおける有限状態マシンの次の状態を決定するように適合されることを任意選択で含み得る。
【０２２０】
例２１は、コンピュータアーキテクチャデバイスを対象とし、
複数のスペアメモリセルを含むコンピュータアーキテクチャデバイス内の複数のメモリセルと、
コンピュータアーキテクチャデバイス内に内蔵された内部セルフテストロジック回路と、
コンピュータアーキテクチャデバイス内に内蔵され、レポジトリに格納された複数のメモリ位置のリストを読み取り、複数のスペアメモリセルのメモリ位置を、少なくとも１つの欠陥メモリセルを含むメモリ位置と交換することにより、リストにおける複数のメモリ位置を修復するように適合された、修復ロジック回路を有する内部自己修復ロジック回路とを備え、
内部セルフテストロジック回路は、
複数のテストパターンを生成して、複数の生成済みテストパターンを用いてコンピュータアーキテクチャデバイス内の複数のメモリセルをテストするテストパターンジェネレータと、
レポジトリと、
複数のメモリセルをテストする複数のテストパターンに応答して複数の欠陥メモリセルを検出し、コンピュータアーキテクチャデバイス内のレポジトリに、複数のメモリ位置のリストを格納するように適合され、リストの各メモリ位置は、少なくとも１つの欠陥メモリセルを含む１セットのメモリセルを含む検波回路とを有する。
【０２２１】
例２２において、例２１〜４０（本例を除く）の主題は、デバイスが、デバイスの複数のメモリセルを制御する、デバイス内の半導体ダイ上に配置されたメモリコントローラを更に備え、内部セルフテストロジック回路および内部自己修復ロジック回路は、メモリコントローラのダイ上に配置されることを任意選択で含み得る。
【０２２２】
例２３において、例２１〜４０（本例を除く）の主題は、テストパターンジェネレータが、少なくとも１つのアドレスジェネレータを含む複数のジェネレータと、複数のジェネレータに、アドレスジェネレータに対する複数のアドレス命令のシーケンスの複数のアドレス命令のシーケンシャルなループを含む複数の入れ子のループ命令を適用するに適合されたループシーケンサ回路とを有し、シーケンスの各アドレス命令は、アドレスジェネレータにより実行されると、アドレスジェネレータに、複数のメモリセルアドレスのパターンを生成させ、テストパターンジェネレータは、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて複数のメモリコマンドを実行するように適合されることを任意選択で含み得る。
【０２２３】
例２４において、例２１〜４０（本例を除く）の主題は、複数のジェネレータが、少なくとも１つのデータジェネレータを有し、ループシーケンサ回路は、データジェネレータに、複数のデータ命令のシーケンスにおける複数のデータ命令のシーケンシャルなループを適用するように適合され、シーケンスの各データ命令は、データジェネレータにより実行されると、データジェネレータにテストデータのパターンに対するデータのパターンを生成させ、複数のデータ命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行するときに、テストパターンジェネレータは、複数のデータ命令のループのシーケンスにおいて実行されるデータ命令により生成されたテストデータのパターンを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込むように適合されることを任意選択で含み得る。
【０２２４】
例２５において、例２１〜４０（本例を除く）の主題は、少なくとも１つのアルゴリズムジェネレータを含む複数のジェネレータを任意選択で備え得、ループシーケンサ回路は、アルゴリズムジェネレータに、複数のアルゴリズム命令のシーケンスにおける複数のアルゴリズム命令のシーケンシャルなループを適用するように適合され、シーケンスの各アルゴリズム命令は、アルゴリズムジェネレータにより実行されると、アルゴリズムジェネレータに、テストデータのパターンに対するデータのパターンを生成させ、複数のアルゴリズム命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、テストパターンジェネレータは、複数のメモリセルにおいて複数のメモリコマンドを実行するときに、複数のアルゴリズム命令のループのシーケンスにおいて実行されるアルゴリズム命令に従ってテストデータのパターンを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに、書き込むように適合される。
【０２２５】
例２６において、例２１〜４０（本例を除く）の主題は、複数のジェネレータが、少なくとも１つのコマンドジェネレータを任意選択で含み得、ループシーケンサ回路は、コマンドジェネレータに、複数のコマンド命令のシーケンスにおける複数のコマンド命令のシーケンシャルなループを適用するように適合され、シーケンスの各コマンド命令は、コマンドジェネレータにより実行されると、コマンドジェネレータに複数のメモリコマンドのパターンを生成させ、複数のコマンド命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行するときに、テストパターンジェネレータは、複数のコマンド命令ループのシーケンスにおいて実行されるコマンド命令により生成された複数のコマンドのパターンを実行するように適合され、複数のコマンドの当該パターンは、複数のアルゴリズム命令のループのシーケンスにおいて実行されるアルゴリズム命令に応答し、複数のデータ命令のループのシーケンスにおいて実行されるデータ命令に応答して、テストパターンジェネレータの出力により生成されたテストデータのパターンを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む。
【０２２６】
例２７において、例２１〜４０（本例を除く）の主題は、複数のジェネレータが、少なくとも１つのアドレスオフセットジェネレータを任意選択で含み得、ループシーケンサ回路は、アドレスオフセットジェネレータに、複数のメモリアドレスオフセット命令のシーケンスにおける複数のメモリアドレスオフセット命令のシーケンシャルなループを適用するように適合され、シーケンスの各メモリアドレスオフセット命令は、アドレスオフセットジェネレータにより実行されると、アドレスオフセットジェネレータに複数のメモリアドレスオフセットのパターンを生成させ、複数のメモリアドレスオフセット命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行するときに、テストパターンジェネレータは、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成され、複数のメモリアドレスオフセット命令のループのシーケンスにおいて実行されるメモリアドレスオフセット命令により生成された複数のメモリアドレスオフセットのパターンによりオフセットされた、複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおける複数のコマンド命令ループのシーケンスにおいて実行される複数のコマンド命令により生成された複数のコマンドのパターンを実行するように適合される。
【０２２７】
例２８において、例２１〜４０（本例を除く）の主題は、複数のメモリセルが、複数のメモリ領域に配置され、検波回路は、少なくとも１つの欠陥メモリセルを有するメモリ位置の数が特定のメモリ領域の最大値を超えるか否かを判断するように適合され、最大値を超える場合に、少なくとも１つの欠陥メモリセルを有するメモリ位置の数が特定のメモリ領域の最大値を超えることを示すフラグをセットすることを任意選択で含み得る。
【０２２８】
例２９において、例２１〜４０（本例を除く）の主題は、複数のメモリセルが、複数のメモリセルの複数のメモリ領域に配置され、各メモリ領域は、複数のメモリセルの複数の行および列に配置された複数のメモリセルのアレイを含み、メモリ領域の各メモリ位置は、複数のメモリセルの行であり、検波回路は、複数のメモリセルの特定のメモリ領域における複数のメモリセルの特定の行が、レポジトリのリストへのエントリとして既に格納されているか否かを判断して、複数のメモリセルの特定のメモリ領域における複数のメモリセルの特定の行がレポジトリのリストにエントリとして既に格納されている場合に、レポジトリに、複数のメモリ位置のリストのエントリとして、複数のメモリセルの特定のメモリ領域の特定の行を格納することをバイパスするように適合されることを任意選択で含み得る。
【０２２９】
例３０において、例２１〜４０（本例を除く）の主題は、複数のメモリセルが、複数のメモリセルの複数のメモリ領域に配置され、
各メモリ領域は、複数のメモリセルの複数の行および列に配置された複数のメモリセルのアレイを含み、
メモリ領域の各メモリ位置は、複数のメモリセルの行であり、
検波回路は、特定のメモリ領域の少なくとも１つの行が、特定のメモリ領域の複数のメモリセルの少なくとも１つの行に少なくとも１つの欠陥メモリセルを有するか否かを示す、各メモリ領域に対するフラグをセットするように適合されることを任意選択で含み得る。
【０２３０】
例３１において、例２１〜４０（本例を除く）の主題は、複数のメモリセルが、複数のメモリセルのメモリ領域に配置され、各メモリ領域は、複数の行および列に配置された複数のメモリセルのアレイを含み、各メモリセルは、行アドレスおよび列アドレスを含み、少なくとも１つのアドレスジェネレータは、複数のパイプラインステージを有する第１の構成可能なパイプラインアドレスジェネレータであり、第１のパイプラインステージにアドレス搬送カウントジェネレータを有し、行アドレスジェネレータおよび列アドレスジェネレータのうちの１つを第２のパイプラインステージに有し、これにより、第１のパイプラインステージのアドレス搬送カウントジェネレータの出力の関数として、行アドレスおよび列アドレスの各々のうちの１つを生成することを任意選択で含み得る。
【０２３１】
例３２において、例２１〜４０（本例を除く）の主題は、複数のメモリ領域がメモリ領域の複数のバンクに配置され、各バンクは、バンクアドレスを有し、複数のバンクは、バンクの複数のランクに配置され、各ランクは、ランクアドレスを有し、第１の構成可能なパイプラインアドレスジェネレータは、第１および第２のパイプラインステージのうちの１つにバンクアドレスジェネレータを含み、第１および第２のパイプラインステージのうち少なくとも１つにランクアドレスジェネレータを含む、第１の構成を有することを任意選択で含み得る。
【０２３２】
例３３において、例２１〜４０（本例を除く）の主題は、構成可能なパイプラインアドレスジェネレータの第１の構成において、行、列、バンクおよびランクのアドレスジェネレータが第１の構成可能なパイプラインアドレスジェネレータに配置され、複数のアドレスが行、列、バンクおよびランクによりシーケンシャルに生成される順序を規定する第１のアドレス順序で行、列、バンクおよびランクのアドレスを各々、シーケンシャルに生成し、第１の構成可能なパイプラインアドレスジェネレータは、第２の配置で構成可能であり、構成可能なパイプラインアドレスジェネレータの第１の構成において、行、列、バンクおよびランクのアドレスジェネレータは、第１の構成可能なパイプラインアドレスジェネレータに配置されて、行、列、バンクおよびランクのアドレスを各々、複数のアドレスが行、列、バンクおよびランクにより第１のアドレス順序と異なるアドレス順序でシーケンシャルに生成される第２のアドレス順序で、シーケンシャルに生成することを任意選択で含み得る。
【０２３３】
例３４において、例２１〜４０（本例を除く）の主題は、ランクアドレスがシーケンスにおける次のランクアドレスにインクリメントされる前に、第１のアドレス順序で、構成可能なパイプラインアドレスジェネレータが、複数のバンクアドレスを、シーケンスにおける次のバンクアドレスにシーケンシャルにインクリメントするように適合され、第２のアドレス順序において、バンクアドレスがシーケンスにおける次のバンクアドレスにインクリメントされる前に、構成可能なパイプラインアドレスジェネレータは、複数のランクアドレスを、シーケンスにおける次のランクアドレスにシーケンシャルにインクリメントするように適合されることを任意選択で含み得る。
【０２３４】
例３５において、例２１〜４０（本例を除く）の主題は、第１のアドレス順序で、列アドレスがシーケンスにおける次の列アドレスにインクリメントされる前に、構成可能なパイプラインアドレスジェネレータが、シーケンスにおける次の行アドレスに複数の行アドレスをシーケンシャルにインクリメントするように適合され、第２のアドレス順序で、行アドレスがシーケンスにおける次の行アドレスにインクリメントされる前に、構成可能なパイプラインアドレスジェネレータは、シーケンスにおける次の列アドレスに複数の列アドレスをシーケンシャルにインクリメントするように適合されることを任意選択で含み得る。
【０２３５】
例３６において、例２１〜４０（本例を除く）の主題は、パイプラインアドレスジェネレータが、クロック信号に応答して、最初のスタートアップ期間後に、クロック信号毎にランク、バンク、列および行のアドレスを含む次のフルアドレスを生成するように適合され、第１のパイプラインステージにおける搬送カウントジェネレータの複数のアドレスの出力が、最初のスタートアップ期間後の各クロック信号において有効であり、次のフルアドレスは、最初のスタートアップ期間後の各クロック信号において有効であることを任意選択で含み得る。
【０２３６】
例３７において、例２１〜４０（本例を除く）の主題は、少なくとも１つのアルゴリズムジェネレータが可変リフレッシュレートを有する、複数のメモリセルに対するリフレッシュ信号を生成するように適合されたリフレッシュ信号ジェネレータを含むことを任意選択で含み得る。
【０２３７】
例３８において、例２１〜４０（本例を除く）の主題は、リフレッシュ信号ジェネレータが、複数のリフレッシュレートの下がり方向のシーケンスの各レートで、複数のメモリセルをリフレッシュする複数のリフレッシュレートの下がり方向のシーケンスにおいて複数のリフレッシュ信号を生成するように適合され、下がり方向のシーケンスにおける各リフレッシュレートは、リフレッシュレートの下がり方向のシーケンスにおける先行するリフレッシュレートのレートからの大きさだけ低減されることを任意選択で含み得る。
【０２３８】
例３９において、例２１〜４０（本例を除く）の主題は、少なくとも１つのアルゴリズムジェネレータが、各々、出力部と、複数の入力部および出力部を含むマルチプレクサと、少なくとも１つのパターンシーケンサの出力部に結合された少なくとも１つのセレクタ入力部を有する、少なくとも１つのパターンシーケンサを備え、マルチプレクサは、マルチプレクサ入力部を選択して、少なくとも１つのマルチプレクサ・セレクタ入力部に結合された少なくとも１つのパターンシーケンサに応答して、マルチプレクサ出力部に出力するように適合されることを任意選択で含み得る。
【０２３９】
例４０において、例２１〜４０（本例を除く）の主題は、少なくとも１つのパターンシーケンサが、複数のビットレジスタと、シフトレジスタの複数のビットレジスタに結合されたリニアフィードバック多項式ロジックを含む有限状態マシンと、複数のカウンタ、およびシフトレジスタが固定パターンをパターンシーケンサ出力部にシフトするように適合された固定パターンモードと、パターンシーケンサがパターンシーケンサ出力にクロック信号を出力するように適合されたクロック信号パターンモードと、パターンシーケンサがパターンシーケンサ出力部にリニアフィードバック多項式パターンを出力するように適合される、リニアフィードバックモードとを含む、複数のモードの動作を含む組み合わせロジックとを有するシフトレジスタを備えるマルチモードパターンシーケンサであり、クロック信号は、クロック周期内のクロックパルスの長さがプログラミング可能であるプログラマブルデューティーサイクルを含み、組み合わせロジックの第１のカウンタは、クロック周期内のクロック信号のクロックパルスの開始における遅延の時間を合わせるように適合され、組み合わせロジックの第２のカウンタは、クロックパルスの持続時間に時間を合わせるように適合され、第３のカウンタは、次のクロック信号を開始するまで、クロックパルス後のクロック信号の残余の周期の持続時間に時間を合わせるように適合され、リニアフィードバック多項式ロジックは、マルチモードパターンシーケンサにおける有限状態マシンの次の状態を決定するように適合されることを任意選択で含み得る。
【０２４０】
例４１は、メモリをテストおよび修復する方法を対象とし、
デバイス内に内蔵された内部セルフテストロジック回路を用いる段階と、
デバイス内の複数のメモリセルをテストする複数のテストパターンを生成する段階と、
デバイス内の複数のメモリセルに複数のテストパターンを適用する段階と、
適用される複数のテストパターンに応答して複数の欠陥メモリセルを検出する段階と、
デバイス内のレポジトリに複数のメモリ位置のリストを格納する段階と、
デバイス内に内蔵された内部自己修復ロジック回路を用いる段階と、
レポジトリに格納された複数のメモリ位置のリストを読み取る段階と、
複数のメモリ位置を修復する段階とを備え、
リストの各メモリ位置は、少なくとも１つの欠陥メモリセルを含む１セットのメモリセルを含み、
修復する段階は、１セットのメモリセルを含むスペアメモリ位置を、少なくとも１つの欠陥メモリセルを含むメモリ位置と交換する段階を有する。
【０２４１】
例４２において、例４１〜６０（本例を除く）の主題は、デバイスが、デバイスの複数のメモリセルを制御する、デバイス内の半導体ダイ上に配置されたメモリコントローラを更に備え、内部セルフテストロジック回路および内部自己修復ロジック回路は、メモリコントローラのダイ上に配置されることを任意選択で含み得る。
【０２４２】
例４３において、例４１〜６０（本例を除く）の主題は、複数のテストパターンを適用する段階が、複数のアドレス命令のシーケンスにおける複数のアドレス命令のシーケンシャルなループを実行する段階を有し、シーケンスの各アドレス命令は、実行されると、複数のメモリセルアドレスのパターンを生成し、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおいて複数のメモリコマンドを実行することを任意選択で含み得る。
【０２４３】
例４４において、例４１〜６０（本例を除く）の主題は、テストパターンを生成する段階が、複数のデータ命令のシーケンスにおける複数のデータ命令のシーケンシャルなループを実行する段階を有し、シーケンスの各データ命令は、実行されると、テストデータのパターンに対するデータのパターンを生成し、複数のデータ命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行する段階は、複数のデータ命令のループのシーケンスにおいて実行されるデータ命令により生成されたテストデータを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成される複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む段階を有することを任意選択で含み得る。
【０２４４】
例４５において、例４１〜６０（本例を除く）の主題は、複数のテストパターンを生成する段階が、複数のアルゴリズム命令のシーケンスにおける複数のアルゴリズム命令のシーケンシャルなループを実行する段階を有し、シーケンスの各アルゴリズム命令は、実行されると、テストデータのパターンに対するデータのパターンを生成し、複数のアルゴリズム命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行する段階は、複数のアルゴリズム命令のループのシーケンスにおいて実行されるアルゴリズム命令に従ってテストデータのパターンを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成される複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込む段階を有することを任意選択で含み得る。
【０２４５】
例４６において、例４１〜６０（本例を除く）の主題は、複数のテストパターンを生成する段階が、複数のコマンド命令のシーケンスにおいて複数のコマンド命令のシーケンシャルなループを実行する段階を有し、シーケンスの各コマンド命令は、実行されると、複数のメモリコマンドのパターンを生成し、複数のコマンド命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行する段階は、複数のコマンド命令ループのシーケンスにおいて実行されるコマンド命令により生成された複数のコマンドのパターンを実行する段階を含み、複数のコマンドの当該パターンは、複数のデータ命令のループのシーケンスにおいて実行されるデータ命令により生成されたテストデータに応答して、複数のアルゴリズム命令のループのシーケンスにおいて実行されるアルゴリズム命令のアルゴリズムの出力により生成されたテストデータに対するパターンを、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込むことを任意選択で含み得る。
【０２４６】
例４７において、例４１〜６０（本例を除く）の主題は、複数にテストパターンを生成する段階が、複数のメモリアドレスオフセット命令のシーケンスにおける複数のメモリアドレスオフセット命令のシーケンシャルなループを実行する段階を有し、シーケンスの各メモリアドレスオフセット命令は、実行されると、複数のメモリアドレスオフセットのパターンを生成し、複数のメモリアドレスオフセット命令のシーケンシャルなループは、複数の命令の別のループ内で入れ子にされ、複数のメモリセルにおいて複数のメモリコマンドを実行する段階は、複数のアドレス命令ループのシーケンスにおいて実行されるアドレス命令により生成され、複数のメモリアドレスオフセット命令のループのシーケンスにおいて実行されるメモリアドレスオフセット命令により生成された複数のメモリアドレスオフセットのパターンによりオフセットされた、複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルにおける複数のコマンド命令ループのシーケンスにおいて実行されるコマンド命令により生成された複数のコマンドのパターンを実行する段階を有することを任意選択で含み得る。
【０２４７】
例４８において、例４１〜６０（本例を除く）の主題は、複数のメモリセルが、複数のメモリ領域に配置され、方法は、少なくとも１つの欠陥メモリセルを有するメモリ位置の数が特定のメモリ領域の最大値を超えるか否かを判断する段階と、最大値を超える場合に、少なくとも１つの欠陥メモリセルを有するメモリ位置の数が特定のメモリ領域の最大値を超えることを示すフラグをセットする段階とを更に備えることを任意選択で含み得る。
【０２４８】
例４９において、例４１〜６０（本例を除く）の主題は、複数のメモリセルが、複数のメモリセルの複数のメモリ領域に配置され、各メモリ領域は、複数のメモリセルの複数の行および列に配置された複数のメモリセルのアレイを含み、メモリ領域の各メモリ位置は、複数のメモリセルの行であり、方法は、複数のメモリセルの特定のメモリ領域における複数のメモリセルの特定の行が、レポジトリのリストへのエントリとして既に格納されているか否かを判断する段階と、複数のメモリセルの特定のメモリ領域における複数のメモリセルの特定の行がレポジトリのリストにエントリとして既に格納されている場合に、レポジトリに、複数のメモリ位置のリストのエントリとして、複数のメモリセルの特定のメモリ領域の特定の行を格納する段階をバイパスする段階とを更に備えることを任意選択で含み得る。
【０２４９】
例５０において、例４１〜６０（本例を除く）の主題は、複数のメモリセルが、複数のメモリセルの複数のメモリ領域に配置され、各メモリ領域は、複数のメモリセルの複数の行および列に配置された複数のメモリセルのアレイを含み、メモリ領域の各メモリ位置は、複数のメモリセルの行であり、方法は、特定のメモリ領域の少なくとも１つの行が、特定のメモリ領域の複数のメモリセルの少なくとも１つの行に少なくとも１つの欠陥メモリセルを有するか否かを示す、各メモリ領域に対するフラグをセットする段階を更に備えることを任意選択で含み得る。
【０２５０】
例５１において、例４１〜６０（本例を除く）の主題は、複数のメモリセルが、メモリセルのメモリ領域に配置され、各メモリ領域は、複数の行および列に配置された複数のメモリセルのアレイを備え、各メモリセルは、行アドレスおよび列アドレスを有し、複数のメモリセルアドレスのパターンを生成する段階は、複数のパイプラインステージを有する第１の構成可能なパイプラインアドレスジェネレータにおいて、第１のパイプラインステージにおけるアドレス搬送カウントを生成する段階と、第２のパイプラインステージにおいて、第１のパイプラインステージにおいて生成されたアドレス搬送カウントの関数として、行アドレスおよび列アドレスのうちの１つを生成する段階とを有することを任意選択で含み得る。
【０２５１】
例５２において、例４１〜６０（本例を除く）の主題は、複数のメモリ領域が複数のメモリ領域の複数のバンクに配置され、各バンクは、バンクアドレスを有し、複数のバンクは、バンクの複数のランクに配置され、各ランクは、ランクアドレスを有し、方法は、第１の構成可能なパイプラインアドレスジェネレータの第１の構成の第１および第２のパイプラインステージのうちの１つにおいて、バンクアドレスを生成する段階と、第１の構成可能なパイプラインアドレスジェネレータの第１の構成の第１および第２のパイプラインステージのうちの１つにおいて、ランクアドレスを生成する段階とを更に備えることを任意選択で含み得る。
【０２５２】
例５３において、例４１〜６０（本例を除く）の主題は、第１の構成可能なパイプラインアドレスジェネレータにおいて、複数のアドレスが行、列、バンクおよびランクによりシーケンシャルに生成される順序を規定する第１のアドレス順序で、行、列、バンク、およびランクのアドレスをシーケンシャルに生成する段階と、第２のパイプラインアドレスジェネレータにおいて、複数のアドレスが行、列、バンクおよびランクによりシーケンシャルに生成される、第１のアドレス順序と異なるアドレス順序である、第２のアドレス順序で行、列、バンクおよびランクのアドレスをシーケンシャルに生成する段階とを任意選択で含み得る。
【０２５３】
例５４において、例４１〜６０（本例を除く）の主題は、第１のアドレス順序で行、列、バンクおよびランクのアドレスをシーケンシャルに生成する段階が、ランクアドレスがシーケンスにおけるデバイスの次のランクアドレスにインクリメントされる前に、複数のバンクアドレスを、デバイスのシーケンスにおける次のバンクアドレスにシーケンシャルにインクリメントする段階を有し、第２のアドレス順序で行、列、バンクおよびランクのアドレスをシーケンシャルに生成する段階は、バンクアドレスがシーケンスのデバイスにおける次のバンクアドレスにインクリメントされる前に、複数のランクアドレスを、デバイスのシーケンスにおける次のランクアドレスにシーケンシャルにインクリメントする段階を有することを任意選択で含み得る。
【０２５４】
例５５において、例４１〜６０（本例を除く）の主題は、第１のアドレス順序で行、列、バンクおよびランクのアドレスをシーケンシャルに生成する段階が、列アドレスがシーケンスにおけるデバイスの次の列アドレスにインクリメントされる前に、複数の行アドレスを、デバイスのシーケンスにおける次の行アドレスにシーケンシャルにインクリメントする段階を有し、第２のアドレス順序で行、列、バンクおよびランクのアドレスをシーケンシャルに生成する段階は、行アドレスがシーケンスにおけるデバイスの次の行アドレスにインクリメントされる前に、複数の列アドレスを、シーケンスにおけるデバイスの次の列アドレスにシーケンシャルにインクリメントする段階を有することを任意選択で含み得る。
【０２５５】
例５６において、例４１〜６０（本例を除く）の主題は、行、列、バンクおよびランクのアドレスを生成する段階が、パイプラインアドレスジェネレータをクロック信号を用いてクロッキングする段階と、最初のスタートアップ期間後、クロック信号毎にランク、バンク、列および行のアドレスを含む次のフルアドレスを生成する段階と、最初のスタートアップ期間後に、各クロック信号において有効なアドレス搬送カウント出力を生成する段階と、最初のスタートアップ期間後に、各クロック信号の次の部分において有効な次のフルアドレスを生成する段階とを有することを任意選択で含み得る。
【０２５６】
例５７において、例４１〜６０（本例を除く）の主題は、アルゴリズムの出力としてテストデータパターンを生成する段階が、可変リフレッシュレートを有するリフレッシュ信号を生成する段階と、当該可変リフレッシュレートでメモリセルをリフレッシュする段階とを有することを任意選択で含み得る。
【０２５７】
例５８において、例４１〜６０（本例を除く）の主題は、可変リフレッシュレートを有するリフレッシュ信号を生成する段階が、複数のリフレッシュレートの下がり方向のシーケンスにおけるリフレッシュ信号を生成する段階を有し、下がり方向のシーケンスの各リフレッシュレートは、複数のリフレッシュレートの下がり方向のシーケンスの先行するリフレッシュレートのレートからの大きさだけ低減され、可変リフレッシュレートで複数のメモリセルをリフレッシュする段階は、複数のリフレッシュレートの下がり方向のシーケンスの各レートで複数のメモリセルをリフレッシュする段階を有することを任意選択で含み得る。
【０２５８】
例５９において、例４１〜６０（本例を除く）の主題は、アルゴリズムの出力としてテストデータパターンを生成する段階が、複数のマルチプレクサ出力選択信号のパターン化シーケンスを生成する段階と、複数のマルチプレクサ出力選択信号のパターン化シーケンスに応答してマルチプレクサの複数の入力部を選択する段階と、マルチプレクサ入力部の選択に応答してマルチプレクサからテストパターンを出力する段階とを任意選択で含み得る。
【０２５９】
例６０において、例４１〜６０（本例を除く）の主題は、複数のマルチプレクサ出力選択信号のパターン化シーケンスを生成する段階が、
複数のビットレジスタを含むシフトレジスタを有するマルチモードパターンシーケンサのモードを選択する段階と、
選択済みモードでマルチモードパターンシーケンサを動作させる段階とを有し、
有限状態マシンは、シフトレジスタの複数のビットレジスタに結合されたリニアフィードバック多項式ロジックと、複数のカウンタを含む組み合わせロジックと、固定パターンモード、クロック信号パターンモード、およびリニアフィードバックモードを含む複数のモードの動作とを含み、
固定パターンモードでマルチモードパターンシーケンサを動作させる段階は、固定パターンをパターンシーケンサ出力部にシフトさせるシフトレジスタを含み、
クロック信号パターンモードでマルチモードパターンシーケンサを動作させる段階は、パターンシーケンサ出力部でクロック信号を生成する段階を有し、クロック信号は、クロック周期内のクロックパルスの長さがプログラミング可能なプログラマブルデューティーサイクルを有し、クロック信号を生成する段階は、組み合わせロジックの第１のカウンタを用いてクロック周期内のクロック信号のクロックパルスの開始が遅延する時間を合わせる段階と、組み合わせロジックの第２のカウンタを用いてクロックパルスの持続時間の時間を合わせる段階と、組み合わせロジックの第３のカウンタを用いて次のクロック信号タイミングが開始するまで、クロックパルス後のクロック信号の残余の周期の持続時間の時間を合わせる段階とを有し、
リニアフィードバックモードでマルチモードパターンシーケンサを動作させる段階は、パターンシーケンサ出力部でリニアフィードバック多項式パターンを生成する段階を有し、
リニアフィードバック多項式パターンを生成する段階は、マルチモードパターンシーケンサの有限状態マシンの次の状態を決定するリニアフィードバック多項式ロジックを含むことを任意選択で含み得る。
【０２６０】
例６１は、複数のスペアメモリセルを含んだ複数のメモリセルを有するメモリと共に用いるメモリコントローラであって、
メモリコントローラ内に内蔵された内部セルフテストロジック回路を備え、
セルフテストロジック回路は、複数のテストパターンを生成して、複数の生成済みテストパターンを用いて、メモリ内の複数のメモリセルをテストするテストパターンジェネレータを有し、
テストパターンジェネレータは、アドレス命令に応答して複数のメモリセルアドレスのパターンを生成し、複数のメモリセルのメモリ領域をトラバースするように構成された少なくとも１つのアドレスジェネレータを含む複数のジェネレータと、データ命令に応答して、アドレスジェネレータにより生成される複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルに書き込まれるテストデータのパターンに対するデータのパターンを生成するように構成された少なくとも１つのデータジェネレータとを含み、
データの生成済みパターンは、データの生成済みパターンが書き込まれる複数のメモリセルにおける複数のメモリセルアドレスのパターンの選択可能な関数である。
【０２６１】
例６２において、例６１〜７５（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる、複数のメモリセルの複数のメモリセルアドレスのパターンにおける行アドレスおよび列アドレスのうちの１つの関数として選択可能なストライプパターンでデータを反転するように構成されることを任意選択で含み得る。
【０２６２】
例６３において、例６１〜７５（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルにおける複数のメモリセルアドレスのパターンの行アドレスおよび列アドレスの各々の最低次の行アドレスビットおよび最低次の列アドレスビットの排他的ＯＲ関数の機能として選択可能なチェッカボードパターンでデータを反転させるように構成されることを任意選択で含み得る。
【０２６３】
例６４において、例６１〜７５（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスに全て論理的である、データの選択可能なパターンを生成するように構成されることを任意選択で含み得る。
【０２６４】
例６５において、例６１〜７５（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルの全てメモリセルアドレスに対するデータのパターンを選択的に反転させるように構成されることを任意選択で含み得る。
【０２６５】
例６６において、例６１〜７５（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスに対するビット位置だけ、データの生成済みパターンを選択的に回転させるように構成されることを任意選択で含み得る。
【０２６６】
例６７において、例６１〜７５（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスについて、選択可能な回数、１ビット位置だけデータの生成済みパターンの回転を選択的に反復するように構成されることを任意選択で含み得る。
【０２６７】
例６８において、例６１〜７５（本例を除く）の主題は、複数のジェネレータが、周期の関数として複数のメモリアドレスオフセットの周期的パターンを生成するように構成された少なくとも１つのアドレスオフセットジェネレータを含み、データジェネレータは、選択可能な周期的データ反転パターンで、データのパターンを選択的に反転させる、選択可能な周期的データ反転関数を提供するように構成されることを任意選択で含み得る。
【０２６８】
例６９において、例６１〜７５（本例を除く）の主題は、データジェネレータが、アドレスオフセットジェネレータにより生成された複数のメモリアドレスオフセットの周期的パターンの関数としてのストライプパターンで、データのパターンを選択的に反転するように構成され、ストライプパターンは、列ストライプ、行ストライプおよび斜めストライプのうちの１つであることを任意選択で含み得る。
【０２６９】
例７０において、例６１〜７５（本例を除く）の主題は、複数のメモリアドレスオフセットの周期的パターンにおける周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定されたメモリセルの行の数および列の数のうちの１つの関数であることを任意選択で含み得る。
【０２７０】
例７１において、例６１〜７５（本例を除く）の主題は、複数のメモリアドレスオフセットの周期的パターンにおける周期が、最初の周期、および最初の周期に対する調整の関数であることを任意選択で含み得る。
【０２７１】
例７２において、例６１〜７５（本例を除く）の主題は、最初の周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルのトラバーサルの方向の関数であることを任意選択で含み得る。  例７３において、例６１〜７５（本例を除く）の主題は、最初の周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルの行の数および列の数のうちの１つにセットされることを任意選択で含み得る。
【０２７２】
例７４において、例６１〜７５（本例を除く）の主題は、複数のステージにチェーン化された複数のデータジェネレータを任意選択で備え得、各データジェネレータは、複数のメモリアドレスの関数としてデータのパターンを生成するように構成されることを任意選択で含み得る。
【０２７３】
例７５において、例６１〜７５（本例を除く）の主題は、複数のマッピング値を格納するように適合された複数のレジスタと、複数のレジスタに格納された複数のマッピング値の関数として複数の物理アドレスに複数の論理的アドレスをマッピングするように構成された論理的・物理的アドレスマッピングロジックとを任意選択で備え得る。
【０２７４】
例７６は、複数のスペアメモリセルを含むコンピューティングデバイス内に複数のメモリセルを有するメモリと、
デバイス内に内蔵され、複数のテストパターンを生成し、複数の生成済みテストパターンを用いて複数の欠陥メモリセルのメモリ内の複数のメモリセルをテストするテストパターンジェネレータを有する内部セルフテストロジック回路と、
デバイス内に内蔵された内部自己修復ロジック回路とを備え、
テストパターンジェネレータは、アドレス命令に応答して、複数のメモリセルのメモリ領域をトラバースする複数のメモリセルアドレスのパターンを生成するように構成された少なくとも１つのアドレスジェネレータを含む複数のジェネレータと、データ命令に応答して、アドレスジェネレータにより生成された複数のメモリセルアドレスのパターンによりアドレス指定されたメモリセルに書き込まれる、テストデータのパターンに対するデータのパターンを生成するように構成された少なくとも１つのデータジェネレータとを含み、
データの生成済みパターンは、データの生成済みパターンが書き込まれる複数のメモリセルにおける複数のメモリセルアドレスのパターンの選択可能な関数であり、内部自己修復ロジック回路は、内部セルフテストロジック回路に応答して、スペアメモリセルのメモリ位置を、少なくとも１つの欠陥メモリセルを有するメモリ位置と交換することにより欠陥メモリ位置を修復するように構成された修復ロジック回路を有する、コンピューティングデバイスである。
【０２７５】
例７７において、例７６〜９０（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる、複数のメモリセルの複数のメモリセルアドレスのパターンにおける行アドレスおよび列アドレスのうちの１つの関数として選択可能なストライプパターンでデータを反転するように構成されることを任意選択で含み得る。
【０２７６】
例７８において、例７６〜９０（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルにおける複数のメモリセルアドレスのパターンの行アドレスおよび列アドレスの各々の最低次の行アドレスビットおよび最低次の列アドレスビットの排他的ＯＲ関数の機能として選択可能なチェッカボードパターンでデータを反転させるように構成されることを任意選択で含み得る。
【０２７７】
例７９において、例７６〜９０（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスに全て論理的である、データの選択可能なパターンを生成するように構成されることを任意選択で含み得る。
【０２７８】
例８０において、例７６〜９０（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルの全てメモリセルアドレスに対するデータのパターンを選択的に反転させるように構成されることを任意選択で含み得る。
【０２７９】
例８１において、例７６〜９０（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスに対するビット位置だけ、データの生成済みパターンを選択的に回転させるように構成されることを任意選択で含み得る。
【０２８０】
例８２において、例７６〜９０（本例を除く）の主題は、データジェネレータが、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスについて、選択可能な回数、１ビット位置だけデータの生成済みパターンの回転を選択的に反復するように構成されることを任意選択で含み得る。
【０２８１】
例８３において、例７６〜９０（本例を除く）の主題は、複数のジェネレータが、周期の関数として複数のメモリアドレスオフセットの周期的パターンを生成するように構成された少なくとも１つのアドレスオフセットジェネレータを含み、データジェネレータは、選択可能な周期的データ反転パターンで、データのパターンを選択的に反転させる、選択可能な周期的データ反転関数を提供するように構成されることを任意選択で含み得る。
【０２８２】
例８４において、例７６〜９０（本例を除く）の主題は、データジェネレータが、アドレスオフセットジェネレータにより生成された複数のメモリアドレスオフセットの周期的パターンの関数としてのストライプパターンで、データのパターンを選択的に反転するように構成され、ストライプパターンは、列ストライプ、行ストライプおよび斜めストライプのうちの１つであることを任意選択で含み得る。
【０２８３】
例８５において、例７６〜９０（本例を除く）の主題は、複数のメモリアドレスオフセットの周期的パターンにおける周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルの行の数および列の数のうちの１つの関数であることを任意選択で含み得る。
【０２８４】
例８６において、例７６〜９０（本例を除く）の主題は、複数のメモリアドレスオフセットの周期的パターンにおける周期が、最初の周期、および最初の周期に対する調整の関数であることを任意選択で含み得る。
【０２８５】
例８７において、例７６〜９０（本例を除く）の主題は、最初の周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルのトラバーサルの方向の関数であることを任意選択で含み得る。
【０２８６】
例８８において、例７６〜９０（本例を除く）の主題は、最初の周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルの行の数および列の数のうちの１つにセットされることを任意選択で含み得る。
【０２８７】
例８９において、例７６〜９０（本例を除く）の主題は、複数のステージにチェーン化された複数のデータジェネレータを任意選択で備え得、各データジェネレータは、複数のメモリアドレスの関数としてデータのパターンを生成するように構成されることを任意選択で含み得る。
【０２８８】
例９０において、例７６〜９０（本例を除く）の主題は、複数のマッピング値を格納するように適合された複数のレジスタと、複数のレジスタに格納された複数のマッピング値の関数として複数の物理アドレスに複数の論理的アドレスをマッピングするように構成された論理的・物理的アドレスマッピングロジックとを任意選択で備え得る。
【０２８９】
例９１は、複数のメモリセルと共に用いる方法であって、
デバイス内に内蔵された内部セルフテストロジック回路を用いる段階と、
複数のテストパターンを生成する段階と、
複数の生成済みテストパターンを用いて複数の欠陥メモリセルに対してメモリ内の複数のメモリセルをテストする段階と、
デバイス内に内蔵された内部自己修復ロジック回路を用いて、内部セルフテストロジック回路に応答して、スペアメモリセルのメモリ位置を、少なくとも１つの欠陥メモリセルを有するメモリ位置と交換することにより欠陥メモリ位置を修復する段階とを備え、
テストパターンを生成する段階は、アドレス命令に応答して、複数のメモリセルのメモリ領域をトラバースするメモリセルアドレスのパターンを生成する段階と、データ命令に応答して、複数のメモリセルアドレスの生成済みパターンによりアドレス指定された複数のメモリセルに書き込まれるテストデータのパターンに対するデータのパターンを生成する段階とを有し、
データのパターンを生成する段階は、データのパターンを選択する段階と、データの生成済みパターンが書き込まれる複数のメモリセルにおける複数のメモリセルアドレスの生成済みパターンの選択可能な関数としてデータの選択されたパターンを生成する段階とを有する。
【０２９０】
例９２において、例９１〜１０５（本例を除く）の主題は、複数のメモリセルアドレスの生成済みパターンの選択可能な関数として、データの選択されたパターンを生成する段階が、データの生成済みパターンが書き込まれる、複数のメモリセルのメモリセルアドレスのパターンにおける行アドレスおよび列アドレスのうちの１つの関数として選択可能なストライプパターンにおけるデータを反転する段階を有することを任意選択で含み得る。
【０２９１】
例９３において、例９１〜１０５（本例を除く）の主題は、複数のメモリセルアドレスの生成済みパターンの選択可能な関数としてデータの選択されたパターンを生成する段階が、データの生成済みパターンが書き込まれる複数のメモリセルにおける複数のメモリセルアドレスのパターンの行アドレスおよび列アドレスの各々の最低次の行アドレスビットおよび最低次の列アドレスビットの排他的ＯＲ関数の機能として選択可能なチェッカボードパターンでデータを反転させる段階を有することを任意選択で含み得る。
【０２９２】
例９４において、例９１〜１０５（本例を除く）の主題は、データのパターンを生成する段階が、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスに全て論理的である、データの選択可能なパターンを生成する段階を有することを任意選択で含み得る。
【０２９３】
例９５において、例９１〜１０５（本例を除く）の主題は、データのパターンを生成する段階が、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスに対するデータのパターンを選択的に反転させる段階を有することを任意選択で含み得る。
【０２９４】
例９６において、例９１〜１０５（本例を除く）の主題は、データのパターンを生成する段階が、データの生成済みパターンが書き込まれる複数のメモリセルにおける全てのメモリセルアドレスに対するビット位置だけ、データの生成済みパターンを選択的に回転させる段階有することを任意選択で含み得る。
【０２９５】
例９７において、例９１〜１０５（本例を除く）の主題は、データの生成済みパターンを回転させる段階が、データの生成済みパターンが書き込まれる複数のメモリセルの全てのメモリセルアドレスに対する選択可能な回数、１ビット位置だけデータの生成済みパターンを回転させる段階を選択的に反復する段階を有することを任意選択で含み得る。
【０２９６】
例９８において、例９１〜１０５（本例を除く）の主題は、複数のメモリセルアドレスのパターンを生成する段階が、周期の関数として複数のメモリアドレスオフセットの周期的パターンを生成する段階を有し、複数のメモリセルアドレスの生成済みパターンの選択可能な関数としてデータの選択されたパターンを生成する段階は、選択可能な周期的データ反転パターンで、データのパターンを選択的に反転させる選択可能な周期的データ反転関数を提供する段階を有することを任意選択で含み得る。
【０２９７】
例９９において、例９１〜１０５（本例を除く）の主題は、複数のメモリセルアドレスの生成済みパターンの選択可能な関数としてデータの選択されたパターンを生成する段階は、複数のメモリアドレスオフセットの生成済み周期的パターンの関数としてのストライプパターンで、データのパターンを選択的に反転させる段階を有し、ストライプパターンは、列ストライプ、行ストライプおよび斜めストライプのうちの１つであることを任意選択で含み得る。
【０２９８】
例１００において、例９１〜１０５（本例を除く）の主題は、複数のメモリアドレスオフセットの周期的パターンにおける周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルの行の数および列の数のうちの１つの関数であることを任意選択で含み得る。
【０２９９】
例１０１において、例９１〜１０５（本例を除く）の主題は、複数のメモリアドレスオフセットの周期的パターンにおける周期が、最初の周期、および最初の周期に対する調整の関数であることを任意選択で含み得る。
【０３００】
例１０２において、例９１〜１０５（本例を除く）の主題は、最初の周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルのトラバーサルの方向の関数であることを任意選択で含み得る。
【０３０１】
例１０３において、例９１〜１０５（本例を除く）の主題は、最初の周期が、アドレス命令により生成された複数のメモリセルアドレスのパターンによりアドレス指定された複数のメモリセルの行の数および列の数のうちの１つにセットされることを任意選択で含み得る。
【０３０２】
例１０４において、例９１〜１０５（本例を除く）の主題は、複数のメモリセルアドレスの生成済みパターンの選択可能な関数としてデータの選択されたパターンを生成する段階が、複数のステージにおけるデータの選択済みの複数のパターンを生成する段階を有し、各ステージのデータの各パターンは、複数のメモリアドレスの関数であることを任意選択で含み得る。
【０３０３】
例１０５において、例９１〜１０５（本例を除く）の主題は、複数のレジスタに格納された複数のマッピング値の関数として物理アドレスに複数の論理的アドレスをマッピングする段階を有することを任意選択で含み得る。
【０３０４】
例１０６は、上記のいずれかの例に説明される方法を実行する手段を備えた装置を対象とする。
【０３０５】
説明される動作は、ソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを製造する標準規格のプログラミングおよび／またはエンジニアリング技術を用いて、方法、装置またはコンピュータプログラム製品として実装され得る。説明される動作は、「コンピュータ可読ストレージ媒体」に保持されるコンピュータプログラムコードとして実装されてもよく、プロセッサがコンピュータストレージ可読媒体からコードを読み取り、実行し得る。コンピュータ可読ストレージ媒体は、電子回路、ストレージ材料、無機材料、有機材料、生物材料、ケーシング、筐体、コーティング、およびハードウェアのうちの少なくとも１つを含む。コンピュータ可読ストレージ媒体としては、磁気ストレージ媒体（例えば、ハードディスクドライブ、フロッピー（登録商標）ディスク、テープ等）、光ストレージ（ＣＤ−ＲＯＭ、ＤＶＤ、光ディスク等）、揮発性および不揮発性メモリデバイス（例えば、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュメモリ、ファームウェア、プログラマブルロジック等）、ソリッドステートデバイス（ＳＳＤ）等が挙げられ得るが、これらに限定されない。説明される動作を実装するコードは、ハードウェアデバイス（例えば、集積回路チップ、プログラマブルゲートアレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）等）に実装されるハードウェアロジックに更に実装され得る。更に、説明される複数の動作を実装するコードは、複数の「送信信号」において実装され得、複数の送信信号は、空間中、または例えば光ファイバ、銅線等の送信媒体中を伝播し得る。コードまたはロジックがエンコードされる複数の送信信号は、無線信号、衛星送信、無線波、赤外線信号、Ｂｌｕｅｔｏｏｔｈ（登録商標）等を更に含み得る。コンピュータ可読ストレージ媒体に埋め込まれたプログラムコードは、送信局またはコンピュータから受信局またはコンピュータへと送信信号として送信され得る。コンピュータ可読ストレージ媒体は、送信信号のみから構成されない。当業者は、本明細書の範囲を逸脱することなく、本構成に対して多くの修正が行われ得、製造物品が当技術分野において既知の好適な情報担持媒体を備え得ることを理解するであろう。勿論、当業者は、本明細書の範囲を逸脱することなく、本構成に対して多くの修正が行われ得、製造物品が当技術分野において既知の有形情報担持媒体を備え得ることを理解するであろう。
【０３０６】
特定の用途において、本明細書によるデバイスは、モニタまたはコンピュータシステムに結合された他のディスプレイ上に表示する情報をレンダリングするビデオコントローラ、デスクトップ、ワークステーション、サーバ、メインフレーム、ラップトップ、ハンドヘルド型コンピュータ等を含むコンピュータシステムなどのデバイスドライバおよびネットワークコントローラを含むコンピュータシステムにおいて実施され得る。
【０３０７】
あるいは、デバイスの実施形態は、例えば、スイッチ、ルータ等のビデオコントローラを含まないか、または例えば、ネットワークコントローラを含まないコンピューティングデバイスにおいて実施され得る。
【０３０８】
図面において図示されたロジックは、特定の順序で生じる特定の出来事を示し得る。代替的な実施形態において、特定の動作は、異なる順序で実行され、修正され、または除外されてもよい。更に、動作が上記のロジックに追加されて、説明された実施形態になおも適合し得る。更に、本明細書において説明される動作は、シーケンシャルに行われてもよく、または特定の動作がパラレルに処理されてもよい。更に、動作は、単一の処理ユニットまたは分散された処理ユニットにより実行されてもよい。
【０３０９】
様々な実施形態の前述の説明は、図示および説明の目的で提示されている。包括的であり、または開示される精緻な形態を限定することは意図されない。多くの修正形態および変形形態が上記の教示に照らして可能である。
【図１】
2017502386.tif 000003
【図２】
2017502386.tif 000004
【図３ａ】
2017502386.tif 000005
【図３ｂ】
2017502386.tif 000006
【図３ｃ】
2017502386.tif 000007
【図３ｄ】
2017502386.tif 000008
【図３ｅ】
2017502386.tif 000009
【図３ｆ】
2017502386.tif 000010
【図４】
2017502386.tif 000011
【図５】
2017502386.tif 000012
【図６】
2017502386.tif 000013
【図７】
2017502386.tif 000014
【図８ａ】
2017502386.tif 000015
【図８ｂ】
2017502386.tif 000016
【図８ｃ】
2017502386.tif 000017
【図８ｄ】
2017502386.tif 000018
【図８ｅ】
2017502386.tif 000019
【図８ｆ】
2017502386.tif 000020
【図８ｇ】
2017502386.tif 000021
【図８ｈ】
2017502386.tif 000022
【図９ａ】
2017502386.tif 000023
【図９ｂ】
2017502386.tif 000024
【図９ｃ】
2017502386.tif 000025
【図１０】
2017502386.tif 000026
【図１１】
2017502386.tif 000027
【図１２】
2017502386.tif 000028
【図１３】
2017502386.tif 000029
【図１４】
2017502386.tif 000030
【図１５】
2017502386.tif 000031
【図１６】
2017502386.tif 000032
【図１７】
2017502386.tif 000033
【図１８ａ】
2017502386.tif 000034
【図１８ｂ】
2017502386.tif 000035
【図１９ａ】
2017502386.tif 000036
【図１９ｂ】
2017502386.tif 000037
【図１９ｃ】
2017502386.tif 000038
【図１９ｄ】
2017502386.tif 000039
【図１９ｅ】
2017502386.tif 000040
【図１９ｆ】
2017502386.tif 000041
【図１９ｇ】
2017502386.tif 000042
【図２０ａ】
2017502386.tif 000043
【図２０ｂ】
2017502386.tif 000044
【図２１】
2017502386.tif 000045
【図２２】
2017502386.tif 000046
【図２３】
2017502386.tif 000047
【国際調査報告】
2017502386.tif 000048
2017502386.tif 000049