JP2009259398A - プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置 - Google Patents

プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置 Download PDF

Info

Publication number
JP2009259398A
JP2009259398A JP2009185404A JP2009185404A JP2009259398A JP 2009259398 A JP2009259398 A JP 2009259398A JP 2009185404 A JP2009185404 A JP 2009185404A JP 2009185404 A JP2009185404 A JP 2009185404A JP 2009259398 A JP2009259398 A JP 2009259398A
Authority
JP
Japan
Prior art keywords
address
memory
algorithm
test
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009185404A
Other languages
English (en)
Inventor
Nilanjan Mukherjee
ムカルジー,ニランジャン
Xiaogang Du
ドゥ,シャオガン
Wu-Tung Cheng
チェン,ウー−タン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mentor Graphics Corp
Original Assignee
Mentor Graphics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mentor Graphics Corp filed Critical Mentor Graphics Corp
Publication of JP2009259398A publication Critical patent/JP2009259398A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3187Built-in tests
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31724Test controller, e.g. BIST state machine
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318516Test of programmable logic devices [PLDs]
    • G01R31/318519Test of field programmable gate arrays [FPGA]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/1201Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details comprising I/O circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • G11C29/16Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/20Address generation devices; Devices for accessing memories, e.g. details of addressing circuits using counters or linear-feedback shift registers [LFSR]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0401Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals in embedded memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0405Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals comprising complete test loop
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • G11C2029/3602Pattern generator
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • G11C2029/5604Display of error information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

【課題】ビルト・イン・セルフ・テスト・コントローラと、関連するテストされるメモリに適用されるアルゴリズムの選択及び変更を可能にするプログラマブルな方法を提供する。
【解決手段】プログラマブル・メモリ・ビルト・イン・セルフ・テスト(MBIST)の方法、装置、及びシステムを開示する。開示された技術の例示的実施形態は、例えば、製造時テストにおいて、集積回路上に配置された1つ又は複数のメモリをテストするために用いられることが可能である。
【選択図】図4

Description

本出願は、2004年11月18日に出願された米国特許仮出願第60/629395号、並びに2005年11月4日に出願された米国特許仮出願第60/733493号の利益を主張するものである。これらの仮出願の全開示が、以下の出願の開示の一部と見なされ、参照により本明細書に組み込まれている。
本明細書において開示された技術は、チップ上のシステムに埋め込まれたメモリのようなメモリのビルト・イン・セルフ・テスト(MBIST)に関する。より具体的には、本技術の一態様は、ビルト・イン・セルフ・テスト・コントローラと、それに関連する、テストされるメモリに適用されるアルゴリズムの選択及び変更を可能にするプログラマブルな方法とに関する。本コントローラは、チップ製造現場又は他の遠隔場所において製造されたチップのテストを実施するために、チップ製造現場におけるプログラミングが可能であるよう、フィールド・プログラマブルであることが望ましい。
製造されるメモリの密度は、急激に上昇しており、そのペースはランダム・ロジックに比べて速い。更に、チップにおける埋め込みメモリの割合が増えており、システム・オン・チップの主要な部分を占めている。チップ上のメモリが占める加工寸法はより小さくなり、その面積は増えていることから、欠陥を潜在的に有する可能性のあるクリティカルなチップ領域が膨大になっている。ダイレクトメモリアクセス(DMA)をテストに用いる従来の方法は、シリコン面積、ルーティングの複雑さ、及びテスト実施時間の点でコストがかかる。BIST(ビルト・イン・セルフ・テスト)は、魅力的な選択肢になりつつあり、故障検出率の高さなどの利点がある。従来は、メモリのタイプと、それらに適用されるべきテストが指定されて、メモリをグループ分けし、それぞれ特定のコントローラに割り当ててきた。例えば、200個程度のメモリを有するSOC(システム・オン・チップ)の場合は、通常は、25〜30個のコントローラに対してグループ分けされて割り当てられ、各コントローラは、4〜10個のメモリのテストの管理を担当する。これらのコントローラは、製造テスト時に、あらかじめ指定されたシーケンスで、厳密な、事前準備されたアルゴリズムを実行することが可能であるように設計される。そのようなコントローラは非プログラマブル(即ち、ハードワイヤード)なので、アルゴリズム及びそれらが対象とする故障モデルは、固定されていて、チップが製造された後は変更不可能である。
本開示が対象とするのは、本開示の任意の場所で開示される新規且つ非自明な態様のうちの1つ又は複数を、それぞれ単独並びにそれらの様々な結合及び小結合の形で有する、新規且つ無類の方法、プログラムされたコンピュータ、及びプログラマブル媒体(例えば、電子ファイル又はディスク)と、BIST回路とである。本明細書において特許請求される発明が、特許請求の文言で記載された内容以外に、固有の特徴を有すること、又は何らかの固有の利点を提供することは必須ではない。
現在のシステム・オン・チップ(SOC)の設計は、ますますメモリが支配的になるため、SOCの設計の歩留まりは、埋め込みメモリの歩留まりに大きく依存する。メモリ内の欠陥を検出するために、多くの故障モデル及びテスト・アルゴリズムが開発されている。メモリの信頼性を高めるために、更に多くの故障モデル及びテスト・アルゴリズムが開発されつつある。チップが製造された後に、埋め込みメモリの信頼性を保証するための新
しいアルゴリズムが開発される場合がある。そのような、後から開発されたアルゴリズムを用いて製造済みチップをテストしようとすると、プログラマブルMBISTコントローラがない場合には、チップが製造された後にそのような新しいアルゴリズムをロード及び適用しなければならない。フィールド・プログラマブル・メモリBISTは、現場におけるテスト・アルゴリズムの変更を非常に柔軟に行えるようにする。
本明細書に記載のプログラマブル・メモリBISTコントローラの特定の実施形態は、線形アルゴリズムをサポートするだけでなく、他の幾つかの非線形アルゴリズムもサポートする。この設計は、面積オーバヘッドと故障検出率との間の望ましいトレードオフが達成されるようにサポートされるアルゴリズムの選択を可能にする。
本明細書において開示される様々な例示的実施形態は、多数の新規且つ非自明な特徴及び方法を示す。特定の例示的実施形態は、以下の態様のうちの1つ又は複数を有する。
一部の例示的実施形態によれば、1つ又は複数の入れ子ループを有するメモリ・テスト・アルゴリズムをサポートするために、プログラマブルMBIST回路が提供される。
特定の実施形態の望ましい一態様は、ステップ内と同様にステップ内の入れ子ループ間でも、メモリの定格動作速度又は動作可能動作速度でのメモリのテストを達成可能にすることである。特定の実施形態では、プログラマブルMBIST回路は、入れ子ループに対応しているかどうかに関係なく、動作可能動作速度でのメモリのテストを、アルゴリズムのステップ内と同様にアルゴリズムのステップ間でも想定している。入れ子になっていない例示的実施形態では、1つのステップが1つ又は複数のループを有することが可能である。これを動作可能動作速度のメモリ・テストにおいて可能にするために、特定の例示的実施形態に従ってループ境界を処理する備えが用意される。
特定の例示的MBIST回路の実施形態の望ましいアーキテクチャでは、命令メモリが、(例えば、ATEからの)命令群をスキャン・インされる単一レジスタを有し、命令群がレジスタから先入れ先出しバッファにパラレルにロードされ、先入れ先出しバッファには、バッファが空になった後に実行される命令群が連続的にロードされる。
特定の例示的MBIST回路の実施形態の望ましいアーキテクチャでは、現在のアルゴリズム・ステップにある故障に対応する診断データが記録及びスキャンされることが可能であり、故障診断データがスキャン・アウトされた後に、現在のアルゴリズム・ステップにおいてMBIST回路がリスタートされる。この目的のための一アーキテクチャでは、単一レジスタが用いられることが可能である。
(発明の概要)
特定の実施形態によれば、MBISTコントローラは、(例えば、MBIST回路テストの実行時に)メモリ・テストをスケジュールするようにプログラム可能である。例えば、テストのために、単一のプログラマブルMBIST回路に、複数のメモリを割り当てたり、組み合わせたりすることが可能である。命令は、MBIST回路の動作時に、次のメモリ回路テスト操作のうちの1つ又は複数が実行されるように、テスト・アルゴリズムを実行するようMBIST回路をプログラムする。(a)MBIST回路によってテストされる複数のメモリに対し、任意の1つ又は複数のテスト・アルゴリズムを、順次連続的に適用する。(b)MIST回路によってテストされる複数のメモリに対し、任意の1つ又は複数のテスト・アルゴリズムを、順次インタリーブ的に適用する。並びに(c)テストのためにMBIST回路に割り当てられた複数のメモリから、1つ又は複数のメモリを選択する。
例示的実施形態によれば、MBIST回路の動作時に、次の操作のうちの任意の1つ又は複数を実行するようにMBIST回路をプログラムする命令(例えば、構成命令)も、提供されることが可能である。(a)テストのために、少なくとも1つのメモリからなるメモリ・バンクを選択する。(b)テストのために、少なくとも1つのメモリからなるページを選択する。(c)テストのために、少なくとも1つのメモリからなるポートを選択する。(d)テストされるメモリのメモリ・アドレス範囲の一部を選択する。(e)診断モニタリングが実行されるべきかどうかを選択する。並びに(f)1つ又は複数の特定のアルゴリズムに対して診断モニタリングが実行されるべきかどうかを選択する。特定の例示的実施形態には、他の代替プログラマブル操作(例えば、データ及びバックグラウンドのプログラマブルな選択や、メモリ・セルのプログラマブルなアドレス指定)を提供する命令も実装される。そのような目的又はその一部のために、構成ワードが用いられることが可能である。
特定の例示的実施形態のより具体的な態様によれば、集積回路が、少なくとも1つのメモリを備え、このメモリをテストすべく、このメモリの少なくとも1つのメモリ・テスト・アルゴリズムのためのテスト・データを適用するために、このメモリは、セルと、集積回路の製造後に命令をプログラムすることによってプログラム可能なメモリ・ビルト・イン・セルフ・テスト(MBIST)回路とを備え、この少なくとも1つのメモリ・テスト・アルゴリズムは、MBIST回路をプログラムすることによって決定される。そのような実施形態のMBIST回路は、プログラミング命令を受け取ることに適合された命令メモリと、プログラミング命令を受け取り、デコードすることに適合された命令デコーダと、デコードされたプログラミング命令に応答して、少なくとも1つのテスト・アルゴリズムを実行するためにテスト・データを適用されるべき、メモリのセルのアドレス指定を決定するアドレス・ジェネレータであって、デコードされたプログラミング命令に応答して、少なくとも1つの入れ子ループを有する少なくとも1つのメモリ・テスト・アルゴリズムが実行されるようにメモリのセルをアドレス指定するアドレス・ジェネレータと、デコードされたプログラミング命令に従って、メモリの、アドレス指定されたセルにテスト・データを適用することと、適用されたテスト・データに対する、アドレス指定されたセルからの期待応答の出力を提供することとに適合されたデータ・ジェネレータであって、メモリは、適用されたテスト・データに応答して、アドレス指定されたセルから出力されたテスト結果を提示する、データ・ジェネレータと、適用されたテスト・データに対する、メモリの1つ又は複数のセルからの期待応答と、適用されたテスト・データに対する、そのような1つ又は複数のセルについての対応するテスト結果とを比較するよう動作可能な出力アナライザとを備える。
特定の実施形態のより具体的な態様によれば、集積回路が、セルのアレイを備える、少なくとも1つのメモリを備え、各セルが、行アドレスと列アドレスとを備え、集積回路が更に、その少なくとも1つのメモリと結合された、少なくとも1つのメモリ・ビルト・イン・セルフ・テスト(MBIST)回路を備える。そのような実施形態におけるMBIST回路は、プログラミング命令をデコードするように適合されたデコーダを備え、プログラミング命令は、構成命令ワードとアルゴリズム命令ワードとを含み、デコーダは、アルゴリズム命令ワードと構成命令ワードとを区別することと、アルゴリズム命令ワードと構成命令ワードとを別々にデコードすることとに適合され、構成命令ワードは、少なくとも1つのテスト・アルゴリズムを指定するアルゴリズム指定部分を含み、テスト・アルゴリズムは、テスト・アルゴリズムに従ってメモリをテストするために適用されるべきテスト・ステップを含み、アルゴリズム命令ワードは、テスト・ステップ中に実行されるべきメモリ操作を指定するメモリ・アクセス操作部分を含む。
特定の更なる実施形態のより具体的な態様によれば、集積回路が、テストされるべき少なくとも1つのメモリと、メモリ・ビルト・イン・テスト(MBIST)回路とを備え、
MBIST回路は、自動テスト装置(ATE)から受け取った命令に応答して、少なくとも1つのテスト・アルゴリズムを、少なくとも1つのメモリに適用するように構成される。そのような実施形態では、MBIST回路は、ATEから命令を受け取るように適合された命令メモリと、前記命令をデコードし、構成命令とアルゴリズム命令とを分離するよう動作可能な命令デコーダと、デコードされた命令に応答して、デコードされた命令から決定されたアドレス指定スキームに従って、テストされるメモリのセルをアドレス指定するアドレス・ジェネレータであって、アドレス指定スキームは、アドレス指定されたセルにテスト・データが適用されると、少なくとも1つのメモリをテストするために前記少なくとも1つのテスト・アルゴリズムが実行されるように、メモリのセルをアドレス指定する、アドレス・ジェネレータと、デコードされた命令から決定されたように、前記少なくとも1つのテスト・アルゴリズムがメモリに対して実行されるように、アドレス指定されたメモリ・セルにテスト・データを適用するデータ・ジェネレータであって、メモリは、データ・ジェネレータからデータを受け取った、少なくとも選択されたセルからのテスト応答出力を提示する、データ・ジェネレータと、テスト結果を提供すべく、期待応答データと、選択されたセルから出力された実際のテスト応答とを比較するよう動作可能な出力応答アナライザと、テスト結果によって故障が示された場合に診断データを記録する診断モニタを更に備える集積回路とを備える。
プログラマブルMBIST回路の例示的実施形態のプログラミングに関連する方法の実施形態も、本明細書において開示されている。
特定の実施形態の更なる態様によれば、ユーザが、合成されたプログラマブルMBIST回路をカスタマイズ(即ち、インクリメンタル又はモジュール的に仕様を指定)することによって、合成されたMBIST回路が、ユーザの望むアルゴリズムを実行できるようにすることを、可能にする柔軟性が提供される。例えば、ユーザは、集積回路の1つ又は複数のメモリをテストするために、MBIST回路によって実行されることをユーザが望む1つ又は複数のメモリ・テスト・アルゴリズムを適用するために必要な入れ子ループの数を、指定することが可能である。合成されたMBIST回路は、ユーザによって指定された数の入れ子ループを有するメモリ・テスト・アルゴリズムを実行することが可能であるように構成される。別の例として、ユーザは、集積回路の1つ又は複数のメモリをテストするために、複数のカテゴリのアルゴリズムの中から、MBIST回路によって実行されることをユーザが望む少なくとも1つのカテゴリのメモリ・テスト・アルゴリズムを指定することが可能である。合成されたMBIST回路は、ユーザによって指定された少なくとも1つのカテゴリのアルゴリズムの中からメモリ・テスト・アルゴリズムを実行することが可能であるように構成される。更に別の例として、ユーザは、実行されることをユーザが望むメモリ・テスト・アルゴリズムをMBIST回路が実行するために必要なアドレス・ジェネレータの数を指定することが可能である。合成されたMBIST回路は、実行されることをユーザが望むメモリ・テスト・アルゴリズムを実行するために、ユーザによって指定された数のアドレス・ジェネレータを有するように構成される。
特定の例示的実施形態から得られる柔軟性の別の例として、集積回路の少なくとも1つのメモリに対してメモリ・テスト・アルゴリズムを実行するために、実行時にプログラムされることが可能なプログラマブルMBISTコントローラが提供される。プログラマブルMBISTコントローラをプログラムする命令は、ATEから(或いは、あまり好ましくないがROM又はRAMから)供給されることが可能である。プログラマブルMBISTコントローラは、(例えば、有限状態機械内でエンコードされた命令を用いる)ハード・エンコードされたMBIST回路のように、1つ又は複数のテスト・アルゴリズムを用いて集積回路をテストする他のMBIST回路とともに構成されることが可能である。例えば、ハード・エンコードされたアルゴリズムは、集積回路のメモリの製造時テストに用いられることが可能である。プログラマブルMBIST回路の方は、その後、例えば、返品された製品の中にある欠陥回路のトラブルシューティングを行う場合に、以前には確認
されていなかった欠陥の原因を探すことを支援するために、追加メモリ・テスト・アルゴリズムを集積回路に適用すべく、実行時にプログラムされることが可能である。
更に、例示的実施形態によるプログラマブルMBISTコントローラは、製造された集積回路に含まれていたMBIST回路のアーキテクチャによってサポートされる、新しく開発されたテスト・アルゴリズムを適用するために、あとからプログラムされることが可能である。
例示的実施形態の別の態様によれば、固有の構成を有する、残りのMBIST回路要素は、集積回路を収容するチップに存続している。残りのMBIST回路要素とは、プログラマブルMBIST回路の、メモリ・テストに用いられてきた回路要素、又は今後のメモリ・テストに用いられることが可能な回路要素、又はその両方を意味する。従って、集積回路は、残りのMBIST回路要素のうちの1つ又は複数と、他の残りの要素とともに、メモリ・ビルト・イン・セルフ・テスト(MBIST)回路を、集積回路を収容するチップに含むことが可能であり、その残りのMBIST回路要素とは、(a)少なくとも1つのインター反復アドレス・ジェネレータ及び少なくとも1つのイントラ反復アドレス・ジェネレータと、(b)MBISTテストに用いられる場合に、アルゴリズム・ステップ内でのマルチレベル入れ子ループの実行を可能にする、少なくとも1つのステップ・コントローラと、(c)MBISTテストに用いられる場合に、命令を命令レジスタから先入れ先出し(FIFO)バッファにパラレルにロードすることを可能にする、FIFOバッファに結合されたレジスタを備える命令メモリと、(d)MBISTテストに用いられる場合に、故障が検出されたステップに対応する現在のアルゴリズム・ステップからテストをリスタートすることを可能にする、診断モニタとである。
他の機能については、以下で説明される例示的実施形態から明らかになるであろう。
2入力NANDゲートの概略図である。 2本のアドレス線に対するアドレス・デコーダの部分を示す図である。 図3は、例示的アルゴリズム命令ワードの定義である。 図3Aは、代替の例示的アルゴリズム命令ワードの定義である。 例示的プログラマブルMBISTコントローラのハードウェア設計の概略ブロック図である。 例示的命令デコーダの概略ブロック図である。 例示的ベース・アドレス・ジェネレータの概略ブロック図である。 例示的ローカル・アドレス・ジェネレータの概略ブロック図である。 例示的ステップ・コントローラの概略ブロック図である。 例示的なテスト・ステップ用バッファを示す図である。 例示的なテスト・ステップ用バッファを示す図である。 アドレス・ジェネレータの例示的形態の概略ブロック図である。 例示的アドレス関係の概略図である。 例示的インター反復アドレス・ジェネレータの概略ブロック図である。 例示的イントラ反復アドレス・ジェネレータの概略ブロック図である。 テスト・ステップ例を示す図である。 例示的命令バッファ及び制御バッファのブロック図である。 例示的バッファ・アドレス制御のブロック図である。 例示的アドレス構成デコーダのブロック図である。 例示的初期設定構成を示す図である。 例示的構成バッファを示す図である。 ATEから命令メモリにロードされることが可能な命令の数を決定する例示的アプローチを示す図である。 ATEから命令メモリにロードされることが可能な命令の数を決定する例示的アプローチを示す図である。 ATEとプログラマブルMBISTコントローラとの間の例示的インターフェースの概略ブロック図である。 図23のATEとプログラマブルMBISTコントローラとの間のインターフェースのための例示的ハンド・シェイク・プロトコルを示す図である。 ATEとプログラマブルMBISTコントローラとの間の、代替の例示的インターフェースの概略ブロック図である。 図25のATEとプログラマブルMBISTコントローラとの間のインターフェースのための例示的ハンド・シェイク・プロトコルを示す図である。 MBISTクロック・ドメイン有限状態機械(FSM)のための、例示的FSMの状態図である。 診断クロック・ドメイン有限状態機械(FSM)のための、例示的FSMの状態図である。 診断データのシフト・アウトに用いられる例示的回路の概略図である。 診断モニタの一実施形態の例示的信号波形を示す図である。 ATEとプログラマブルMBISTコントローラとの間の例示的診断インターフェースの概略ブロック図である。 リスタートを有する例示的診断インターフェースの選択された波形を示す図である。 ATEとMBISTコントローラとの間のインターフェースの例示的代替形態の概略ブロック図である。 保持テストの例示的な一時停止信号及び再開信号の波形を示す図である。 March専用MBISTコントローラの一形態のための例示的な命令バッファ及びアドレス構成バッファを示す図である。 プログラマブルMBISTコントローラの一形態のための例示的な最高レベル・インターフェースを示す図である。 プログラマブルMBISTコントローラの一実施形態のための例示的な内部インターフェースを示す図である。 例示的アドレス・ジェネレータのデータ・パスを示す図である。 例示的アドレス・ジェネレータのデータ・パスを示す図である。
1.0 概要
プログラマブルMBISTは、メモリのテストに用いられる、ビルトイン・カスタム・プロセッサを有するコントローラをチップ上に備える。プログラマブル・コントローラが、特定のクラスのアルゴリズムとその変形形態とを適用する機能を提供し、適用されるべきアルゴリズムを変更することを可能にする。プログラマブルMBISTコントローラの(全ての実施形態ではない)特定の望ましい実施形態の主たる利点は、以下のように要約されることが可能である。
・実行時にテスト・アルゴリズムを修正することを可能にする。これは、単にテスト・プログラムを修正することによって行われることが可能である。
・技術の急激な変化により、製造工程において発現しうるあらゆるタイプの欠陥を予測することは困難な場合が多い。製造工程の立ち上げ時期には、適用されたテストをすり抜ける欠陥を特定し、それらの欠陥をターゲットとするように既存のアルゴリズムを修正したり、新しいアルゴリズムを導入したりし、それらを捕捉するためにテスト・プログラムを実行時に変更することが可能である。
・多くの場合、チップとその修正版は、異なる技術で製造されるのに十分な長さの設計寿命を有する。チップが最初に設計されたときの特定の技術に対して有効であることが実証されていた特定のテスト群が、チップがより新しい技術に移行したときには不十分になる場合がある。そのような状況下では、その新しい技術に関連する欠陥を検出するために、追加のアルゴリズムが適用されることが必要になる場合がある。新しいアルゴリズムは、プログラマブル・メモリBISTコントローラ内でエンコードされ、テスト中のメモリに適用されることが可能である。
・プログラマブル・コントローラは更に、ある設計の異なる修正版、或いは異なる設計にまたがって再利用されることが可能である。これにより、BISTコントローラの検証時
間が短縮される。
プログラマブルMBISTコントローラは、設計全体にわたり、メモリの全てのグループに対して、カスタム・プロセッサ又はコントローラが複数回複製されなければならないので、追加オーバヘッドを利用する。現在の設計において何百ものメモリ(或いはそれ以上のメモリ)が埋め込まれる可能性を考えると、通常は多数のコントローラが必要であり、従って、これら全てのコントローラの分の面積オーバヘッドが大量になりやすい。しかしながら、プログラマブルMBISTコントローラによってテストされるべきメモリを選択的に選択することによって、必要な柔軟性を有しながら面積オーバヘッドを最適化することが可能である。
本明細書では、まず、サポートされることが可能な(例えば、プログラミングによりコントローラがサポートすることが可能な)選択された例示的アルゴリズムの概要を提示する。あらかじめ選択されたアルゴリズムとプログラマブルなアルゴリズムとの組合せもサポートされることが可能である。これらのアルゴリズムの幾つかは、Mentor Graphics CorporationからリリースされているMBISTArchitect(登録商標)製品によって既にサポートされている。例示的な命令セット及びハードウェア・アーキテクチャについても記載する。
本出願及び本特許請求項で使用される単数形「a」と、「an」と、「the」とは、文脈において特に断らない限り、複数形を含む。更に、単語「includes」(含む)は「comprises」(含む)を意味する。更に、単語「coupled」(結合された)は、電気的又は電磁的に接続又はリンクされていることを意味し、結合されているアイテム間に中間的な要素が存在することを排除しない。
この後のセクション2では、プログラマブルMBISTコントローラの望ましい特徴について概略的に説明し、これは、サポートされるアルゴリズムの例示的セットを列挙することを含む。セクション3では、アーキテクチャの例示的な第1の実施形態について説明し、ここでは、例示的命令セットの細部を明らかにするとともに、様々な例示的ハードウェア・ブロックについても説明する。セクション4では、セクション3で説明された命令セットを用いる例示的アルゴリズムの擬似コードの例を幾つか示す。セクション5では、プログラマブルMBISTコントローラの代替実施形態について説明する。セクション6及び7では、選択された実施形態によってサポートされる特定アルゴリズムの例示的擬似コードについて説明する。セクション8では、更に別の実施形態を開示する。セクション9では、ATEとの例示的相互作用及び診断例について説明する。セクション10では、例示的プログラマブルMBISTコントローラの作成について説明する。セクション11では、March専用MBISTコントローラの実施形態を開示する。
2.0 概略説明
フィールド・プログラマブルMBISTコントローラの選択された実施形態のアーキテクチャは、実行時にテスト・プログラムを指定できることに加えて、以下の条件を満たすように構成されることが望ましい。
1.MBISTArchitect(登録商標)製品によって現在サポートされている全てのアルゴリズムをサポートする。
2.より高い品質要件を満たすために、幾つかの先進的アルゴリズム(その例については後述する)をサポートする。
3.様々なデータ・バックグラウンドと、アドレス順序付けと、他の、記載されたアルゴリズムの実行に必要なアドレス指定スキームとに対応する。
4.少なくとも特定の望ましいアルゴリズムにおいて、そのアルゴリズムが実動作速度で(at−speed)(例えば、テストされるメモリの設計動作速度において)適用可能であるように、速度要件を満たす。
5.扱いやすい面積オーバヘッドを有する。
6.新しいクラスのアルゴリズムをサポートするための、将来の拡張が容易である。
次のセクションでは、望ましい形態のフィールド・プログラマブルMBISTコントローラがサポートするアルゴリズムの幾つかの例示的グループについて説明する。他のアルゴリズムもサポートされることが可能である。更に、アルゴリズムのより小さなサブセットをサポートするよう選択することが可能である。
2.1 アルゴリズムのサポート
プログラマブルMBISTコントローラによってサポートされることが望ましい様々なアルゴリズムを、このセクションに列挙されるカテゴリにおおまかに分類することが可能である。これらのアルゴリズムの目標は、機能的故障の低減であり、これは、故障モデルが、メモリの機能性に基づくだけではなく、それらの電気的或いは幾何学的レベルの特性も考慮することを意味する。具体的には、これらのアルゴリズムは、単一のセルが関与する故障(縮退故障及び遷移故障)、又はペアのセルが関与する故障(結合故障)を対象とする。本開示のフィールド・プログラマブルBISTコントローラは、望ましくは、そのようなアルゴリズムをサポートするだけでなく、メモリのテスト品質を向上させることを目標とする、追加クラスのアルゴリズムもサポートすることが望ましい。
2.1.1 Marchベース・アルゴリズム
Marchテストは、March要素の有限シーケンスからなる。March要素は、全てのメモリ・アドレスを任意の順序でトラバースすることによってメモリ内の全てのセルに適用される操作の有限シーケンスである。メモリ・セルにアクセスする順序は、全てのMarch要素に対して同一であってよく、幾つかのMarch要素については、反転された逆の順序であってもよい。変形形態として、March要素においては、操作は、アドレスが現在のセルから一定の距離にあるメモリ・セルにアクセスすることが可能である。
一部の形態におけるプログラマブル・コントローラは、以下の標準的なアルゴリズムと、現在の業界で用いられているか、今後開発される、他のMarchアルゴリズムとをサポートすることが望ましい。
・March C+(March 2とも呼ばれる)
・March C
・March C−(March 1とも呼ばれる)
・March 3
・Column March
・ユニーク・データ
・行ストライプ/列ストライプ
上記のアルゴリズム・セットは、主として、メモリ内の以下のタイプの故障、即ち、縮退故障(stuck−at faults)(SAF)、遷移故障(transition faults)(TF)、結合故障(coupling faults)(CF)、逆結合故障(inversion coupling faults)(CFin)、冪等結合故障(idempotent coupling faults)(CFid)、開放固着故障(stuck−open faults)(SOF)、及び特定アドレス・デコーダ故障(certain address decoder faults)(AD)を対象とする。Marchアルゴリズムの趣旨はシンプルである。即ち、全てのメモリ・セルは状態0及び状態1になることが可能でなければならないので、TF及びCFを検出するために、全てのセルに立ち上がり遷移と立ち下がり遷移とを行わせるというものである。
Marchアルゴリズム・クラスでは、アドレス指定は、かなり直接的である。即ち、コントローラは、メモリの全てのアドレスを昇順又は降順に通る行進(march)を行
う。通常、アドレスをインクリメント又はデクリメントする刻み幅は1であるが、他の刻み幅を用いることも可能である。個々のテスト・ステップでは、同一アドレス・ロケーションにおいて様々な操作が実行される。通常、これは、単一のアドレス・ジェネレータだけを用いて達成可能である。上述のテストを適用する際には、様々なデータ・バックグラウンドを用いることが可能である。
上に列挙した標準的なMarchアルゴリズムを望ましくサポートすることに加えて、ユーザは、単一メモリ・アクセス操作(単一の読み出しアクティビティ又は書き込みアクティビティ)、又はこれらの読み出し及び書き込み操作を用いて形成されることが可能な、より複雑な操作シーケンスを用いて、独自クラスのMarchアルゴリズムを望ましく定義することが可能である。ユーザ定義アルゴリズム(User Defined Algorithms)(UDA)は、カスタム・アルゴリズムを定義することに関して、ある程度の柔軟性を有するが、周知のUDAアプローチは、かなりシンプルなアドレス指定スキームに従うMarchアルゴリズムのみに制限されている。
Marchアルゴリズムの変形形態は、一般に、以下のことに基づく。
・ステップ内の操作(「r」又は「w」を意味する)は、ユーザによって、それぞれの工程に適した任意のシーケンスに変更されることが可能である。
・あるアルゴリズムに対応する操作の総数は、ユーザが選択するものに応じて変わることも可能である。
・1つの変形形態は、アドレス「n」にアクセスするステップにある。即ち、操作の1つが、アドレス「n−1」又は「n+1」にアクセスすることが可能である。これらの変形形態は、本明細書で開示される例示的フィールド・プログラマブルBISTコントローラの特定の実施形態によってサポートされることが望ましい。
2.1.2 他の例示的テスト
これらのクラスのテストは、リフレッシュ/センス増幅器のリカバリ失敗のような非機能的故障の検出に役立つ。これらは、Marchアルゴリズムより複雑であり、テスト適用時間は長くかかるが、より良好な故障検出率を実現する。以下では、本明細書で開示されるフィールド・プログラマブルMBISTコントローラを用いて(例えば、プログラミングにより)選択的に実装されることが可能であることが望ましい、幾つかの例示的な従来型テスト・アルゴリズムについて説明する。
2.1.2.1 Checkerboard(チェッカーボード)アルゴリズム
Checkerboardアルゴリズムは、一意アドレス・アルゴリズムのクラスであり、Marchアルゴリズムの変形形態である行ストライプ・アルゴリズム及び列ストライプ・アルゴリズムである。これら全てのアルゴリズムにおいて、アドレス指定スキームは、Marchクラスのアルゴリズムと同じであるが、書き込まれるデータがアドレス依存である。本開示のフィールド・プログラマブルBISTコントローラは、そのようなCheckerboardアルゴリズムを全てサポートすることが望ましい。
例示的なCheckerboardアルゴリズムでは、メモリ・セルは、チェッカーボード・パターンを形成する2つのグループc_1及びc_2に分けられる。これら2つのグループには、常に反対の値が書き込まれる。チェッカーボード・パターンは、アドレス・デコーダが正常に動作しているという前提の下で、隣接する2つのセルの間の短絡を検出する。1を有する各セルは、0を有するセルに囲まれ、0を有する各セルは、1を有するセルに囲まれるので、チェッカーボード・テストは更に、セル間の漏れ電流を最大化することが可能であり、それによって、高い漏れ電流をもたらす欠陥を検出することが可能である。このアルゴリズムの複雑度は、O(n)である(nはメモリ内のワード数)。例示的なCheckerboardアルゴリズムは、次のように記述されることが可能である。
c_1の全てのセルに1を書き込み(W1)、c_2の全てのセルに0を書き込む(W0
)。
全てのワードを読み出す。
c_1の全てのセルに0を書き込み(W0)、c_2の全てのセルに1を書き込む(W1)。
全てのワードを読み出す。
2.1.2.2 Galloping(ギャロップ)/Walking(ウォーキング)アルゴリズム
GALPAT (GALlopping PATtern)及びWalking 1/0の例示的アルゴリズムは、性質が非常によく似ている。これらのケースの何れにおいても、メモリは、ベース・セルと残りのセル(ローカルにアドレス指定されたセルとも呼ばれる)との2つのカテゴリに分けられる。ベース・セルを除くメモリ全体が0(又は1)で埋められ、ベース・セルは反対の値(例えば、1(又は0))を有する。テスト時には、ベース・セルがメモリ内をウォーキングする。ベース・セル内の値が変更されると、他の全てのメモリ・セルが読み出されて、それらがベース・セルへの書き込み操作の影響を受けていないかどうかが検証され、その、ベース・セル以外のセルの読み出し操作の後にベース・セルが読み出される。GALPATアルゴリズムとWalking 0/1アルゴリズムとの違いは、ベース・セルが読み出される方法にある。Walking 0/1の場合は、各ステップの後に、全てのセルが読み出され、ベース・セルはその最後に読み出される。一方、GALPATアルゴリズムでは、ベース・セル以外の全てのセルが読み出されている間に、各セルが読み出された後にベース・セルも読み出される。これらのアルゴリズムの変形形態として、ローカル・セルが、ベース・セルと同じ行又は同じ列にあるセルだけであることが可能なケースや、ギャロップ/ウォーキング・ステップに別途読み出し又は書き込み操作を追加することが可能なケース(例えば、ギャロップ・ステップ(W0,(R1,R0),W1)が(W0,R0,(R1,R0),W1)に修正されることも可能であるケース)がある。
Galloping/Walking 0及び1アルゴリズムは、2つのループを有し、第1のループは、メモリの全てのアドレスを通る行進を行うベース・ループである。第2のループは、所与のベース・アドレスに固有の順序でアドレス空間をループ・スルーする内側ループ(ローカル・ループとも呼ばれる)である。これらは、Marchアルゴリズムより複雑なアルゴリズムであり、テスト適用時間もより長く必要である。
これらのアルゴリズムは、全てのAF、全てのSAF、全てのTF、並びに一部の結合故障を検出する。更に、AF及びCFは、正確に見つけられることが可能である。これは、結合セルの書き込みが行われた直後に(別の書き込み操作が行われる前に)結合セルの読み出しが行われるからである。同じことが、アドレス・デコーダ故障の場合にも当てはまる。GALPATアルゴリズム及びWalking 0/1アルゴリズムの両方の複雑度は、O(n)である。
例示的なGALPATアルゴリズム及びWalking 0/1アルゴリズムは、以下のように記述される。
GALPATアルゴリズム
Figure 2009259398
Walking 0/1アルゴリズム
Figure 2009259398
既に述べたように、前述の例示的なGALPAT及びWalking 0/1の間の唯一の違いは、メモリの各読み出し操作の後にベース・セルがアクセスされる方法にある。これにより、アルゴリズムの複雑度が低減されるばかりでなく、テスト適用時間も短縮される。
2.1.2.3 Sliding diagonal(斜めスライド)
GALPATアルゴリズム及びWalking 0/1アルゴリズムの複雑度が非常に高いので、Sliding diagonalは、それらに対する、より短い代替である
。このケースの例では、斜め線上にあるセル(以下、斜めセル)が、単一のベース・セルの代わりに、パラレルにアクセスされる。斜めセルがアドレス指定されるため、行デコーダ及び列デコーダの両方が同時にテストされる。例示的アルゴリズムは、メモリ全体に、全て1又は全て0を書き込むことから始まる。バックグラウンドが0であれば斜め線に1が書き込まれ、バックグラウンドが1であれば斜め線に0が書き込まれる。メモリ全体が連続して読み出され、その後に、斜め線が右にシフトされる。このプロセスは、全てのセルが斜め線の一部になるまで繰り返される。Sliding diagonalアルゴリズムは、全てのSAF及びTFを検出する。更に、このアルゴリズムは、ほとんどのAFと、一部のCFとを検出する。全てのCFが検出されるわけではないのは、全ての斜めセルが連続して書き込まれる結果、一部の結合故障が別の一部の結合故障によってマスクされるためである。
例示的なSliding diagonalアルゴリズムは、次のように表される。
Figure 2009259398
Sliding diagonalアルゴリズムの複雑度は、O(n.n1/2)のオーダーである(nはメモリ内のワード数)。しかしながら、テストの例示的形態を正しく適用するためには、それぞれ及び全てのメモリ・ワードの正確なロケーションが既知でなければならない。
2.1.2.4 Butterfly(バタフライ)
Butterflyは、テストの適用の複雑度を低減する、GALPATテストの変形形態である。GALPATアルゴリズムと同様に、メモリは、例えば、1を有するベース・セルを除き、バックグラウンド0で埋められる。テスト適用時には、ベース・セルがメモリ内を実際にウォーキングする。読み出し時には、ベース・セルに直接隣接する(即ち、ベース・セルからの距離が1である)(東、西、北、及び南側の)4個のセルだけが読み出される。実装に応じて、距離が2、4、8、及び16である他の近接セルがその次に読み出されることが可能である。より一般的には、このアルゴリズムのローカル・セルは、ベース・セルから4つの方向(東、西、南、及び北)に距離2を有する。即ち、ローカル・セルのアドレスは、(ベース行/列アドレス±2)である(ただし、nは0からN−1であり、Nは行アドレス又は列アドレスのビット数である)。ここで、メモリは正方形であると仮定する。必要に応じて別途読み出し又は書き込み操作を追加することが可能である。
Butterflyアルゴリズムは、全てのセルに0及び1の両方が書き込まれることから、全てのSAFを検出し、一部のアドレス・デコーダ故障も同様に検出される。例示的なButterflyアルゴリズムは、次のように記述されることが可能である。
Figure 2009259398
Butterflyアルゴリズムの複雑度は、O(n.log(n))で表されることが可能である(nは、テストされるべきメモリ・ワードの数)。
Butterfly及び斜めスライドは、2レベルのルーピングを有し、実動作速度テスト用に2つのアドレス・ジェネレータを必要とする場合がある。
2レベルのルーピングを有し、第2のアドレスが第1のアドレスとの間に何らかの算術的又は論理的関係を有することが可能であるように2つ以上のアドレス・ジェネレータを必要とする、アルゴリズムの変形形態は、更に、本明細書で開示されるフィールド・プログラマブルBISTコントローラの特定の実施形態のアーキテクチャによってサポートされることが望ましい。これらのアドレスは、インデックス・レジスタにおいて指定される任意のインクリメントを用いることも可能である。
2.1.3 その他のメモリ・テスト・アルゴリズム
以下の例示的テストは、これまでに説明したアルゴリズムでは検出されない故障の一部をカバーする。以下のアルゴリズムが対象とする故障は、アドレス・デコーダにおいて、メモリ・セルにおいて、書き込みイネーブル信号において、或いはその他の箇所において発現する。これらの故障を対象として、様々なアルゴリズムと、その更新されたバージョンとが提案されている。以下のサブセクションでは、そのような故障を対象とする幾つかのアルゴリズムについて説明する。
2.1.3.1 アドレス・デコーダPMOS開放故障
これらの故障は、通常は、CMOS技術を用いて作られたアドレス・デコーダにおいて発生し、主に、接触不良によるものか、製造工程に原因がある。CMOS技術では、開放欠陥のサブセットだけが縮退挙動を引き起こし、Marchテストにより検出されることが可能である。しかしながら、他のそのような欠陥は、デコーダの組合せ回路を順序回路のように動作させるため、従来のMarchテストでは検出できない。これらの故障は、回路の遅延動作を変化させることもあり、従って、全ての故障を検出するためには、テス
トを最高速度で行わなければならない。
このクラスのアルゴリズムは、概して、メモリ・アレイ内の故障を対象とせず、主に、アドレス・デコーダのPMOS部分の開放固着故障のための2つのパターン・テストを生成するために用いられる。このケースでは、アルゴリズムは、2レベルの入れ子ルーピングを有する。しかしながら、ローカル・アドレスは、固有の方法でベース・アドレスに関連付けられる。ローカル・アドレスは、ベース・アドレスと2との排他的論理和によって生成されることが可能である(ただし、nは0からN−1であり、Nはアドレスのビット数である)。
図1は、2入力NANDゲート10の典型的実装を示し、ゲート10は、2つのプルアップ・トランジスタ12、14、即ち、p1及びp2(PMOS)と、2つのプルダウン・トランジスタ16、18、即ち、n1及びn2(NMOS)とからなる。
上述のNANDゲートの機能性は、簡単には、次のように説明されることが可能である。入力が両方とも1(a=b=1)であれば、NANDゲートの出力zは0であり、入力の何れか一方が0に設定されると、出力はVddに変わる。NMOSトランジスタに開放固着欠陥がある場合、それはメモリ・セル内の縮退故障として発現し、その欠陥はMarchテストによって検出されるはずである。しかしながら、PMOSトランジスタに作用する残りの故障は、NANDゲートに順序動作を行わせ、それらの検出にはペアのパターンが必要である。そのような、PMOSトランジスタ内の開放固着欠陥を検出することが望ましい。PMOSトランジスタの一方(p2)に開放固着故障があるとすると、NANDゲートの動作は、次の表1に示すように変化する。
Figure 2009259398
2入力アドレス線を有する例示的アドレス・デコーダの回路図を図2に示す。
Figure 2009259398
図2のアドレス・デコーダ30は、何れか1つのメモリ・ロケーションに書き込みが行
われるように、入力アドレス値に応じて、そのセレクタ線の何れか1つを選択することになっている。第1のセレクタ線(WL)を制御するNANDゲート32に開放PMOSトランジスタがあると仮定する。このケースでの故障アドレス・デコーダの動作が、上の表2に示されている。アドレス線(a,b)の値が「00」であれば、第1のメモリ・ロケーションにデータが書き込まれる。しかしながら、アドレスが「01」に変更されると、データは第1及び第2の両方のメモリ・ロケーションに書き込まれる。故障がない環境であれば、アドレス・ビットが「01」のときには、セレクタ線WLだけが選択されているはずである。しかしながら、第1のNANDゲートの開放固着故障のために、セレクタ線WLは、古い値を保持し、選択された状態になる。言い換えると、アドレス「00」の内容と異なる、増感された値がアドレス「01」に書き込まれた場合に、アドレス・ロケーション「00」を後から読み出すことにより、故障が検出されることが可能である。
以下の例示的アルゴリズムは、アドレス・デコーダ線におけるほとんどのPMOS開放欠陥を検出することが可能である。
Figure 2009259398
このアルゴリズムの複雑度は、以下のように決定されることが可能である。内側ループが(N−1)回実行され(N=logn、nはメモリ・ワードの数)、このループは、1つの読み出し操作と1つの書き込み操作とを有する。外側ループは、各メモリ・ワードに対して一度にn回実行される。従って、このアルゴリズムの全体的な複雑度は、O(n.logn)のオーダーである。
5つのグループのアルゴリズム(March、Galloping/Walking、Butterfly、Sliding Diagonal、及びPMOS開放故障) は任意のデータ・バックグラウンドを使用できることに注意されたい。
2.1.3.2 ビット/バイト書き込みイネーブル故障
以下の故障モデルは、特定のメモリに対して複数の書き込みイネーブル信号があるときに発現する。従来のアルゴリズムが適用された場合、コントローラは、そのアルゴリズムの適用中に、全ての書き込みイネーブル信号がアサートされていると見なす。従って、特定の書き込みイネーブル信号が、アサートされた値で縮退していると、それらの故障が検出されないまま残る。同様に、書き込みイネーブル信号のペアの間の結合故障は、そのようなアルゴリズムでは検出されないまま残る。以下の例示的テストは、アドレス・デコーダ又は実際のメモリ・セルのテストとは独立である、書き込みイネーブル信号の故障を対象とするように設計されることが望ましい。
これらの書き込みイネーブル・マスク・テストは、メモリ・ワードの異なるビットに関連付けられた全ての書き込みイネーブル信号のテストを可能にすることが望ましいアルゴリズムのクラスである。これらのアルゴリズムは、望ましくはメモリ・アレイのテストに用いられず、書き込みマスク・イネーブル信号の間に縮退故障又は結合故障がないかどうかを調べるために書き込みマスク・イネーブル信号をテストすることが望ましい。
これらのアルゴリズムは、書き込みイネーブル・マスク信号だけでなく任意のメモリ制御信号をテストするように拡張されることが可能である。以下で説明される例示的アーキテクチャは、そのような拡張を可能にする。
1つのそのような例示的アルゴリズムの基本動作は、書き込みイネーブル信号の選択的アサートを仮定し、メモリ・セルが、対応する書き込みイネーブル信号がアサートされているか(又はデアサートされているか)どうかに応じて、異なる値を有するかどうかを評価する。特定のメモリ・ロケーションに対して書き込み操作を実行しているときは、書き込みイネーブル信号のサブセットだけがアサートされていることが望ましい。同じメモリ・ロケーションからデータを読み出しているときは、アルゴリズムは、イネーブル・ビットに対応するビットが更新されていて、残りのビットが更新されていないことを確認する。更に、このアルゴリズムは、アドレス・デコーダ及びメモリ・セルの検証の後の、本当の最後に適用されるのが普通であり、従って、その後に何らかのエラーが発生しても、その原因を書き込みイネーブル信号の故障であるとすることが可能である。
ビット書き込みイネーブル信号を前提とすると、以下で説明されるアルゴリズムの個々の実装は、個々の書き込みイネーブル信号における全ての縮退故障、並びに書き込みイネーブル信号のペアの間の全ての結合故障を対象とする。この例の書き込みイネーブル信号は、アクティブ・ローであることが前提であることに注意されたい。
WEN=0x00、0x00を最低及び最高メモリ・アドレス・ロケーションに書き込むWEN=0x55、0xFFを最低及び最高メモリ・アドレス・ロケーションに書き込む最低及び最高メモリ・アドレス・ロケーションから0xAAを読み出す
WEN=0x00、0x00を最低及び最高メモリ・アドレス・ロケーションに書き込むWEN=0xAA、0xFFを最低及び最高メモリ・アドレス・ロケーションに書き込む最低及び最高メモリ・アドレス・ロケーションから0x55を読み出す
上記のアルゴリズムは、12個のベクトルだけの適用を必要とする。書き込みイネーブル信号のテストがどの程度必要かに応じて、アルゴリズムの複雑度を変えることが可能である。しかしながら、アルゴリズムは、常に、単一メモリ・ワードに対応する書き込みイネーブル信号の数の線形関数であることが望ましい。
2.1.3.3 マルチポート・テスト
一部の実施形態の例示的アーキテクチャは、マルチポート・テストに関連するアルゴリズムをサポートすることが望ましい。例えば、ポート相互作用アルゴリズムがサポートされることが可能である。更に、そのアーキテクチャは、様々なポートを介するメモリの読み出し及び書き込みが同時に可能かどうかをチェックする「ポート隔離」テストをサポートすることも望ましい。1つ又は2つのアドレス・ジェネレータを必要とするアドレス指定スキームが必要な、これらのアルゴリズムの変形形態がサポートされることが可能である。
2.1.3.4 チェックサム
一部の実施形態の例示的アーキテクチャは更に、メモリ・ロケーションを読み出すことにより、ビットのチェックサムを行うことが可能であることが望ましい。これは、メモリに書き込まれるデータの予測が困難になるケースにおいて有用である。例えば、メモリへの書き込みを基本モードで行うことが必要であって、BISTコントローラがそのメモリの内容を読み出してチェックサムを生成することが必要である場合、これは、この例示的
アーキテクチャによってサポートされる。
2.1.3.5 入れ子ループ
以下に開示される代替アーキテクチャは、個々のアルゴリズム・ステップにおいて任意の数の入れ子ループをテストするように設計される。3個以上の入れ子ループを有するアルゴリズムがある場合、代替アーキテクチャは、例えば、複数のアドレス・ジェネレータを合成したり、既存のジェネレータを流用して、別のループで用いられる別のスキームをアドレス指定したりすることが可能である。
3.0 プログラマブルMBISTコントローラの例示的な第1の実施形態
プログラマブル・コントローラの例示的実施形態のアーキテクチャは、2つの主要部分、即ち、命令セットとハードウェア設計とを含むことが望ましい。命令セットは、プログラマブル・コントローラが、前のセクションで説明された全てのアルゴリズムと、将来選択される可能性がある他のアルゴリズムとを実行することが可能であるように、設計されることが望ましい。一部の実施形態では、コントローラは、アルゴリズムのより小さなセット、又は1つだけのアルゴリズム・タイプをサポートするようにプログラマブルであってよい。更に、アーキテクチャは、少なくとも特定のクラスのアルゴリズムについて、カスタマイズされたアルゴリズムをサポートする柔軟性を備えることが望ましい。一部のクラスのアルゴリズムについては、柔軟性はあっても、プログラマブル・コントローラのハードウェア・オーバヘッドが、従来のハードワイヤードMBISTコントローラに比べて過剰にならないように、アルゴリズムの選択可能性が制限又は限定されてもよい。
セクション2で挙げられた全てのアルゴリズムをプログラマブルMBISTコントローラがサポートするための、様々な例示的アドレス指定スキーム及び様々なメモリ・ロケーションに書き込まれるデータについて、次に説明する。
1.アドレス指定スキーム:異なるアルゴリズムのアドレス空間は、2つのカテゴリ、即ち、ベース・アドレスとローカル・アドレスとに分けられることが可能であることが望ましい。ベース・アドレスは、個々のテストの適用時にリファレンスとして用いられ、例えば、プライマリ・アドレス・レジスタにロードされるアドレスを意味する。例えば、March又はCheckerboardパターンの場合には、何らかの操作(又は操作の組合せ)の対象のアドレスが1つだけ存在し、そのようなアドレスがベース・アドレスと呼ばれる。GALPAT又はWalking 1/0アルゴリズムの場合は、メモリ・セルが2つのグループ、即ち、ベース・セルと残りのセルとに分けられることが望ましい。ベース・メモリ・セルのアドレスは、ベース・アドレスによって参照され、ローカル・アドレスは、特定のベース・アドレスに対して、アルゴリズム・テストの適用時に対象となる全ての残りのセルを示す。ローカル・アドレスは、アルゴリズムに応じて、全ての残りのメモリ・セルをループ・スルーするか、残りのセルのサブセットだけをループ・スルーする。ベース・アドレスとローカル・アドレスとが変化する際に従うべき様式、及び特定の一例におけるそれら2つの間の関係について、以下に示す。
・プログラマブルMBISTコントローラの望ましい形態は、ベース・アドレスだけをインクリメント/デクリメントして、アクセスの順序を昇順又は降順で指定することが可能である(March及びCheckerboard)。
・プログラマブルMBISTコントローラの望ましい形態は、ベース・アドレスについて、「行を先に/列を先に」方式でアドレス指定を実行することが可能である。これは、Col_March1(Marchテスト・アルゴリズムのタイプ)又は「行を先に/列を先に」アルゴリズムのために望ましくは必要なアドレス指定スキームを示す。Sliding Diagonalアルゴリズムの場合、ベース・アドレスは、セル・アレイ内の斜め線に沿って特定のパターンが書き込まれ、その後、メモリ全体が読み出されるように、設定されることが望ましい。
・現時点では、ほとんどのMarchアルゴリズムにおいて、(rwr)のようなステップが存在すれば必ず、そのステップは、同じベース・アドレス(B)において操作が行
われることを示す。しかしながら、プログラマブル・コントローラの望ましい形態は、ベース・アドレスの近隣のアドレスにおける読み出し又は書き込み操作をサポートする。例えば、(rB+1)又は(rB−1)は、それぞれ、ベース・アドレスをインクリメント又はデクリメントした後に得られたメモリ・アドレスから第2の読み出し操作が行われることを示す。
・ユーザ又は一形態におけるコントローラは、テストが適用されるべき範囲の最大アドレスと最小アドレスとを設定できることが望ましい。これにより、テスト適用時のメモリ・アドレスの範囲を柔軟に選択することが可能になる。
・望ましい形態のプログラマブルMBISTコントローラは、ベース・アドレスの値に対して相対的にローカル・アドレスを設定することが可能である。これは、ベース・アドレス、又はベース・アドレスを除く残り全てのアドレス(GALPAT及びWalking
0/1)と等しいことが可能である。
・一形態におけるプログラマブルMBISTコントローラは更に、ベース・アドレスから必要な全ての方向に特定のオフセット(1、2、4、・・・)でローカル・アドレスを設定できることが望ましい。これは、Butterflyアルゴリズムに対応する。
・一形態におけるプログラマブルMBISTコントローラは更に、ベース・アドレスに対してハミング距離が1である特定のオフセットでローカル・アドレスを設定できることが望ましい(これは、アドレス・デコーダのPMOS開放故障の検出に対応する)。
・一形態におけるプログラマブルMBISTコントローラは更に、「行を先に」、「列を先に」、「行のみ」、及び「列のみ」の方式の何れかにローカル・アドレス方向を変更できることが望ましい。例示的なデフォルトのアプローチは、ローカル・アドレスを「行を先に」方式に変更することである。
2.読み出し/書き込み:プログラマブルMBISTコントローラの一形態は、命令が読み出し命令か書き込み命令かを区別できることが望ましい。
3.データ/データ反転:データが特定のメモリ・アドレスに書き込まれる前に、データが反転されるべきであるとして書き込まれるかどうかを、プログラマブルMBISTコントローラに通知することが望ましい。これは、メモリの初期設定時にデータ・バックグラウンドかデータ・バックグラウンドの反転かを選択する際にも役立つ。
4.アルゴリズム内の異なるループのサポート。一般に、ほとんどのMarchアルゴリズム及びCheckerboardアルゴリズムは、2つのループを有する。即ち、それらは、データ・バックグラウンドを指定するループと、全てのメモリ・ロケーションを通るループとである。これに対し、アドレス・デコーダPMOS開放やGALPAT/Walking 0/1のような、一部のより複雑なアルゴリズムは、3つのループを有する。追加ループは、全てのリファレンス・ベース・アドレスに対してローカル・アドレスがどのように変更されるかの指定を可能にする。データ・バックグラウンドを意味する第1のループは、アンロールされることが可能である。しかしながら、プログラマブルMBISTコントローラは、ベース・アドレス及びローカル・アドレスをループ・スルーする操作をサポートすることが望ましい。
5.一部のアルゴリズムは、より高レベルのルーピングによる、より複雑なルーピング動作を必要とする。MBISTコントローラの望ましい一形態は、例えば、並行レベルのルーピングまでの、汎用ルーピング機能をサポートする。この例における各レベルのルーピングは、アドレス・レジスタを利用する。
各アドレス・ルーピング・アクティビティは、一形態では、ループのアドレス・レジスタが以下の方法で修正されることを可能にする。
a.「列を先に」又は「行を先に」方式でのインクリメント又はデクリメント。
b.単一列又は単一行に沿ってのインクリメント又はデクリメント。
c.最初の斜め線に沿ってのインクリメント又はデクリメント。
上記の絶対アドレス操作の代替として、幾つかの相対アドレス生成スキームが用いられることが可能である。これらは、例えば、アドレス・レジスタを用いて、中間の(walking 1)値を保持することが可能である。この値は、その後、外包入れ子レベル又はレベル0のアドレス・レジスタに適用される。この形式のアドレス計算は、一実施形態では、外側入れ子レベル(レベル0)に対してサポートされない。以下の相対的な変更子がサポートされることが望ましい。
a.XOR。walking 1と、選択されたアドレス・レジスタとの排他的論理和から、選択されたアドレス・レジスタからハミング距離1だけ離れている全てのアドレスを含むアドレス・シーケンスが生成される。
b.オフセット。walking 1は、選択されたアドレス・レジスタからのオフセットとして用いられることが可能である。
6.メモリ・アクセス・アドレス計算。ループは、1つ又は複数のメモリ・アクセス操作を含むことが可能である。これらの操作は、テストされているメモリに対する個別の読み出しアクセス又は書き込みアクセスを実行することが可能である。各アクセスは、その操作にどのレベルのループのアドレス・レジスタが用いられるべきかを指定できることが望ましい。一例では、外側ループ(入れ子レベル0)内の操作は、アドレス・レジスタ0を用いることだけが可能である。しかしながら、それらは、内側ループにおいては(例えば、入れ子レベル3では)、この例では、レベル0、1、2、又は3のアドレス・レジスタを用いることが可能である。
各メモリ・アクセス操作は、使用するアドレス・レジスタを指定できることが望ましいこととともに、一形態では、使用される前のアドレス・レジスタ値に対して行われるべき修正の限られたセットを指定することも可能である。このアプローチの例として、以下の修正がある。
a.未修正アドレス。
b.アドレスの反転
c.アドレス+インデックス・オフセット
d.アドレス−インデックス・オフセット
7.メモリ・アドレス範囲。ループは、望ましくはメモリ・アドレス範囲全体に対して動作可能であるか、先頭アドレス値及び最終アドレス値を指定することなどによって、アドレス空間のある範囲に限定されることが可能である。メモリ・テスト・アセンブリ・プロセスは、望ましくは、テスト・アルゴリズムを評価し、指定されたアドレス範囲の妥当性を検証する。例えば、開始アドレス及びアドレス操作定義に対して最終アドレスに到達することが可能であることを確認する評価である。
8.メモリ・アクセス・操作タイプ。選択されたメモリ・アドレスでの従来型の読み出し操作及び書き込み操作においては、プログラマブルMBISTコントローラは、一形態では、比較なしの読み出し操作を実行することが可能である。例えば、比較なしの読み出し操作では、MISR(多入力シフト・レジスタ)圧縮が選択されていない限り、メモリから読み出した値を無視することが可能である。この場合、値はMISRによって取り込まれる。また、メモリから読み出された値で内部データ・レジスタを更新することも可能である。
9.データ反転。各メモリ・アクセス操作は、一形態では、書き込まれるか読み出されるデータがベース・データ値の反転形式か非反転形式かを指定できることが望ましい。
用途がより限定されたプログラマブルMBISTコントローラは、前述の機能の全てを備えていなくてもよい。即ち、そのような機能の1つ又は複数のサブセットが、必要に応
じてプログラマブルMBISTコントローラに含まれることが可能である。
3.1 命令の設計
様々な命令の機能性が、2つのカテゴリ又は命令タイプ、即ち、アルゴリズム命令と構成命令とにグループ分けされることが望ましい。アルゴリズム命令は、望ましくは、アドレス空間において実行されることが必要な操作を指定することに直接関連する命令である。アルゴリズム命令は、テスト・アルゴリズム・ステップの実行時に実行されるべきメモリ・アクセス操作に対応する。一形態では、アルゴリズム命令は、使用されるべきアドレス・レジスタ及び変更子と、データ・パターン変更子と、メモリ・アクセス操作とを選択する。一方、構成命令は、望ましくは、テスト・アルゴリズムの実行時に各種操作の制御を指定する命令である。プログラマブルMBISTコントローラの選択された第1の実施形態における構成命令は、望ましくは、後続の命令群のデコード方法と、アルゴリズムに必要なスキームに対応してアドレスがどのように変化するか、と、異なる操作間でデータがどのように変更されるか、とを、コントローラが知るために適用されるアルゴリズムを指定する。構成命令は更に、命令デコーダが、命令をどのようにロードされ、適切な制御信号をどのように生成するかを設定する。構成命令は、一形態では、実行されようとするテスト・アルゴリズム・ステップ全体にわたってプログラマブルMBISTコントローラ及び他のアクティビティの構成を修正するために、デコードされ、実行される。命令を2つの別々のセットに区別することは、命令をデコードすることと、特に有利な実施形態において命令を実動作速度でフェッチ及びデコードできるようにすることとに関連するタイミング問題に柔軟に対処することを可能にする。命令をこれら2つのカテゴリに分離することは、望ましい形態のプログラマブルMBISTコントローラが、構成命令を遭遇時に処理することと、アルゴリズム命令を、アルゴリズム・ステップ全体が完了するまでバッファリングすることとを可能にする。テスト・アルゴリズム・ステップ全体が遭遇されると、例示的プログラマブルMBISTコントローラがメモリ・アクセス操作及びループの実行を開始する。一例では、構成命令は、プログラマブルMBISTコントローラのループ入れ子メカニズムと相互に作用して、そのメカニズムに、ループに入らせること、又はループを終了させることが可能である。
提案された例示的アルゴリズム命令アーキテクチャの命令ワード・サイズは、変更可能であるが、9ビットであることが望ましい(図3、3Aの例を参照)。提案された例示的構成命令ワード・アーキテクチャの命令ワード・サイズも、変更可能であるが、9ビットであることが望ましい(表3及び4の例を参照)。特定の例では、反転を用いることが可能であるが、全ての構成命令のビット0が0に設定され、全てのアルゴリズム命令のビット0が1に設定される。
3.1.1 アルゴリズム命令
例えば、ビット[0]は、命令がアルゴリズム命令か構成命令かを指定するものとする。更に、ビット[0]が「1」であれば、命令がアルゴリズム命令であるとする。図3の例では、例示的アルゴリズム命令ワードの定義は、次のとおりである。
・ビット[0] − 2つのタイプの命令(アルゴリズム命令か構成命令か)を区別する。この例では、アルゴリズム命令に対応する「1」である。
・ビット[1] − 特定のメモリ・ロケーションに対して実行されるのが読み出し操作か書き込み操作かを指定する。読み出し操作又は書き込み操作は、メモリ・ワード全体に対して適用されることが望ましい。具体例として、このビットの値「0」は、読み出し操作を示し、このビットの値「1」は、書き込み操作を示す。
・ビット[2] − この例では、メモリ・ロケーションから読み出されるか、メモリ・ロケーションに書き込まれるデータが、データ・バックグラウンドかデータ・バックグラウンドの反転かを示す。この例では、このビットの値「0」は、データ・バックグラウンドに対応するデータが選択されていることを示し、値「1」は、データ・バックグラウンドの反転が選択されていることを示す。
・ビット[4:3] − これら2つのビットは、この例では、データの書き込み又は読
み出しに用いられるアドレス指定スキームを示す。後述するように、この例では、関係するアドレスが2つあり、それらは、ベース・アドレス及びローカル・アドレスである。ほとんどのMarchアルゴリズムでは、ベース・アドレスだけが必要である。しかしながら、GALPAT、Walking 0/1、Butterfly、Sliding diagonal、アドレス・デコーダPMOS開放アルゴリズムなどの前述のアルゴリズムの幾つかにおいては、ローカル・アドレスも必要である。コントローラは、これらのビットの値に応じて、操作の対象がベース・アドレスかローカル・アドレスかを知る。サポートされることが可能な例示的アドレス指定スキームを以下に示す。
a)「11」 − Means(base_addr−1)を表す。言い換えると、ベース・アドレスの前のアドレス・ロケーションにおいて読み出し/書き込み操作が行われる。これは、(R,W,RB−1)のような特定のMarchアルゴリズム・ステップをサポートするために必要であることが多い。
b)「10」 − (base_addr+1)を意味する。上記ケースと同様に、ベース・アドレスの次のアドレス・ロケーションにおいて読み出し/書き込み操作が行われる。これは、(R,W,RB+1)のような特定のMarchアルゴリズム・ステップをサポートするために必要である。
c)「01」 − local_addrを意味する。言い換えると、対応する読み出し/書き込み操作が、ローカル・アドレスにおいて行われる。
d)「00」 − base_addrを意味する。言い換えると、対応する読み出し/書き込み操作が、ベース・アドレスにおいて行われる。
・ビット[8:5] − これら4ビットは、この例では、ループ境界を指定することに役立つ。前述のように、これまでに説明したアルゴリズムの幾つかは、2タイプのループ構造、即ち、ベース・ループ及びローカル・ループのサポートを必要とする。ベース・ループは、プライマリ・ループを意味し、この例では、全てのアルゴリズムにとってのリファレンス・ループでもある。これに対し、ローカル・ループは、特定のベース・アドレスに対するローカル・アドレス指定スキームをループ・スルーすることを可能にする。例えば、Marchアルゴリズムの場合は、ベース・ループが唯一のループであり、ローカル・ループは存在しない。これに対し、GALPATの場合は、全てのベース・アドレスに対し、ローカル・アドレスが、ベース・アドレス・ロケーションを除くアドレス空間全体をループ・スルーする。この例では4ビットが必要なので、ワン・ホット・エンコーディングが用いられることが望ましい。例示的な個々のビット割り当ては、次のとおりである。
ビット[5] − ローカル・ループの開始(BLL)。
ビット[6] − ローカル・ループの終了(ELL)。
ビット[7] − ベース・ループの開始(BBL)。
ビット[8] − ベース・ループの終了(EBL)。
上記のビット割り当てを仮定すると、前述のアルゴリズムに必要な各種組合せは、次のようになる。
a)「0000」 − どのループ境界でもない中間操作(IOP)を示す。
b)「0100」 − ベース・ループの開始(BBL)を示す。
c)「1000」 − ベース・ループの終了(EBL)を示す。
d)「0001」 − ローカル・ループの開始(BLL)を示す。
e)「0010」 − ローカル・ループの終了(ELL)を示す。
f)「1100」 − ベース・ループの開始及び終了(BBL−EBL)を示す。命令内のこのタイプのループ構造は、単一操作ステップを示す。
g)「0011」 − ローカル・ループの開始及び終了(BLL−ELL)を示す。これも、ローカル・ループ内の単一操作ステップを示す。
h)「1010」 − ベース・ループ及びローカル・ループの両方の終了(ELL−EBL)を示す。
i)「1011」 − ローカル・ループの開始及び終了、並びにベース・ループの終了(BLL−ELL−EBL)を示す。
図3Aの代替例では、例示的アルゴリズム命令ワードの定義は、次のとおりである。
ビット[0]は、1であり、これをアルゴリズム命令として指定する。
ビット[2]及び[1]は、この命令が実行される対象である各アドレスにおいて実行されるメモリ・アクセス操作のタイプを選択する。この例でのオプションは、読み出し、値を比較しない読み出し、書き込み、又はNOP(操作なし)である。
ビット[3]は、現在構成されているデータ・パターン又はその反転が、命令のメモリ・アクセス操作に用いられるかどうかを決定する。
ビット[4]及び[5]は、アドレスが、テストされているメモリに適用される前に、どのように修正されるかを制御する。この例では、アドレスは、そのまま用いられるか、反転されるか、インデックス・オフセットを与えられることが可能である。インデックス・レジスタの値は、例えば、構成命令「制御/ロード/インデックス」を用いてロードされることが可能である。
ビット[6]及び[7]は、この命令によって用いられるべきアドレス・レジスタを選択する。この例では、アドレス・レジスタが、テスト・アルゴリズム・ステップ内のループ入れ子レベルに対応するため、現在アクティブでない現在のループ深さを超えるアドレス・レジスタを選択すると、定義されていない挙動が起こる。
この例では、現在のビット[8]は常に0であり、このビットを用いることによる、この例示的アルゴリズム命令ワードの拡張に使用できる状態で残されている。
他のアルゴリズム命令ワードの例については、後述する。
3.1.2 構成命令
これらの第1の実施形態では、アルゴリズムのクラスと、アドレス指定スキームと、用いられるべきデータ・バックグラウンドと、特定のプログラム制御定義とを示すために、例示的な構成命令が用いられている。構成命令の例を表3及び4に示す。代替例について以下に示す。
この特定の例では、構成命令に対応して、ビット[0]が「0」であるとする。構成命令は、この例では、各フィールドが前のフィールドにおける定義に応じて再使用されることが可能であるように、階層的に設計されることが望ましい。構成命令は、テスト・ステップの操作が終わるたびに変える必要がないので、より急速に発生するアルゴリズム命令と比較して、通常はデコードとデコードとの間により多くの空き時間があるため、これらの命令をデコードするのに十分な時間がある。一例示的構成命令は、MSB(最上位ビット)から、次のようにエンコードされる。
・ビット[8] − 現在使用されていない。今後の拡張のために組み込まれることが可能。
・ビット[7:6] − これらのビットは、アルゴリズム選択、プログラム制御、アドレス構成、データ構成、又は他の問題のような、様々なタイプの構成命令を選択するために用いられることが望ましい。
・ビット[5:4] − これら2つのビットは、様々な構成命令を更にサブカテゴリに分けるために用いられることが望ましい。例えば、アドレス構成命令は、ベース・アドレス方向と、ベース・アドレスのローディング(テストが適用されることが可能な最大及び最小アドレス値をロードする機能)と、ベース・アドレスを基準とするローカル・アドレス方向と、ローカル・アドレスのオフセット・ビットとを指定する、4つのカテゴリに更に分けられることが可能である。
・ビット[3:1] − これら3つのビットは、構成命令の各サブカテゴリの機能を更
に定義することが望ましい。例えば、ベース・アドレス方向は、7つのグループ、即ち、インクリメントと、デクリメントと、斜めと、行のみと、列のみと、行アドレス指定と、列アドレス指定とに分類されることが可能である。
・ビット[0] − これは、命令が構成管理に関連する場合には、「0」に設定される。
例示的な構成命令の詳細と、各命令に関連付けられたオペコードとを、以下の表3及び表4に示す。各フィールドは、命令のタイプに応じて異なる意味を有することに注意されたい。例えば、ビット[7:5]が「000」の場合、表3の例では、次の4ビット[4:1]は、プログラマブルMBISTコントローラがサポートするアルゴリズムの各種クラスを定義するために用いられることが可能である。
Figure 2009259398
構成ワードの別の具体例を、以下の表4に示す。
Figure 2009259398
Figure 2009259398
以下では、表4の構成の詳細を説明する。この例のアプローチは、1つの好適な実施形態に過ぎないので、これらの詳細は修正可能である。
1.制御/プログラム/NOP。この命令は、何も行わず、プログラマブルMBISTコントローラは変更されないままである。
2.制御/プログラム/一時停止。現在のアルゴリズムを一時停止し、外部で生成された再開信号がアサートされるのを待つ。この命令は、例えば、ATEの制御下でアルゴリズム実行を一時停止させる保持テストを実行するために用いられることが可能である。
3.制御/プログラム/停止。アルゴリズムの最後の命令。これが遭遇されると、プログラマブルMBISTコントローラは、アルゴリズム全体が認識及び実行されたことを知る。1つのアプローチでは、プログラマブルMBISTコントローラは、その後、非アクティブ状態になるが、保留中の診断出力があれば収集され続けることが可能であることが望ましい。
4.制御/プログラム/予約済み。予約されている命令ワード。
5.制御/プログラム/故障フラグをリセット。プログラマブルMBISTコントローラに、故障フラグの状態をリセットさせる。診断が非アクティブの場合、この例の故障フ
ラグは、最初の故障の直後にアクティブ状態に固着するか、故障があるたびにアクティブになり、その後、テストの最後にアサートされて、故障が遭遇されたことを示す。この命令は、故障状態に関連付けられた記憶の下位ビットをリセットする。比較器テストが実行された場合は、故障フラグがアサートされ、その後、故障状態がリセットされる。
6.制御/プログラム/状態をリセット。データ・バックグラウンド、アドレス、アドレス境界、アドレス・インデックス、診断イネーブル・レジスタ、及びリスタート・イネーブル・レジスタを含む各種レジスタをリセットする。この命令の後に「NOP」命令が、望ましくは挿入されなければならないことに注意されたい。これは、「リセット状態」の後に続く命令は実行されないためである。この命令は、例えば、テスト・プログラム内の2つのテスト・アルゴリズムの間に状態をリセットするために用いられることが可能である。
7.制御/プログラム/マスクをリセット。マスクを設定しない。
8.制御/プログラム/アルゴリズム開始。アルゴリズムの開始点を指定する。この命令は、テストされているメモリのアドレス境界をリセットする。
9.制御/ループ。この命令は、前のメモリ・アクセス操作が実行された後に、現在のアドレス・シーケンスが完了していない場合に、「ループ・オフセット」フィールドを用いて、コントローラがジャンプすべき先の操作を指定する。この命令は、アルゴリズム・ステップ内のループの終点を形成する。例示的なアルゴリズム・ルーピングについては、図3Aとの関連で既に説明されている。
プログラマブルMBISTコントローラは、生成時には、選択されたメモリ制御信号がマスクされることを可能にするように構成されることが可能である。これらの、制御信号をマスクするアクティビティは、例えば、最大で7つのセットに編成されることが可能である。デフォルトの動作は、この例では、どのセットもアクティブにならない。以下の命令は、マスキング・セットのうちの1つがアクティブ化されることを可能にする。この例では、あるマスキング・セットがアクティブ化されると、メモリ・アクセス操作時にコントローラが行う必要がある可能性がある、どの制御信号のアサートにもかかわらず、そのセットにある全ての制御信号がマスクされ、非アクティブのままになる。制御信号のマスキングは、書き込みイネーブル・マスキングとは独立に動作することが望ましい。書き込みイネーブル信号がマスキング・セット内に配置された場合は、データ/書き込み/マスク状態に関係なく、マスキング・セットがアクティブ化されたときに書き込みイネーブル信号がマスクされる。
10.制御/マスク/セット0。プログラマブルMBISTコントローラに、セット0に関連付けられた制御信号をマスクさせる。
11.制御/マスク/セット1。上記の制御/マスク/セット0と同様に、プログラマブルMBISTコントローラに、セット1に関連付けられた制御信号をマスクさせる。
12.制御/マスク/セット2。上記の制御/マスク/セット0と同様に、プログラマブルMBISTコントローラに、セット2に関連付けられた制御信号をマスクさせる。
13.制御/マスク/セット3。上記の制御/マスク/セット0と同様に、プログラマブルMBISTコントローラに、セット3に関連付けられた制御信号をマスクさせる。
14.制御/マスク/セット4。上記の制御/マスク/セット0と同様に、プログラマブルMBISTコントローラに、セット4に関連付けられた制御信号をマスクさせる。
15.制御/マスク/セット5。上記の制御/マスク/セット0と同様に、プログラマブルMBISTコントローラに、セット5に関連付けられた制御信号をマスクさせる。
16.制御/マスク/セット6。上記の制御/マスク/セット0と同様に、プログラマブルMBISTコントローラに、セット6に関連付けられた制御信号をマスクさせる。
17.制御/マスク/なし。前の7個の構成命令の何れかを用いて構成された、制御信号のマスキングを全て除去する。プログラマブルMBISTコントローラを、どの制御信号セットもマスクされていないデフォルト状態(即ち、全てがプログラマブルMBISTコントローラによってアクティブに制御されている状態)に戻す。
18.制御/ロード/開始アドレス。この例では、命令メモリにおいて、開始アドレス・レジスタに書き込まれる最大27ビットのデータを形成するために読み込まれる3ワードが後に続く、複数ワードのコマンド。これらの3ワードは、ビッグ・エンディアン順序で並べられることが望ましいので、この命令の直後のワードはアドレスの最上位ワードであり、その後に中間ワードが続き、最後に最下位ワードが続く。プログラマブルMBISTコントローラによって実行される正規のアドレス・ループは、このアドレス値から開始される。実行される実際のアドレス・ループは、ループの開始前にアドレスの修正を引き起こす場合がある。
19.制御/ロード/終了アドレス。この例では、制御/ロード/開始アドレスと同様に、3ワードのデータが後に続く、複数ワードのコマンドである。このコマンド及び付随するデータ・ワードは、プログラマブルMBISTコントローラの終了アドレス値レジスタに書き込まれるデータを指定する。プログラマブルMBISTコントローラによって実行される全ての正規のアドレス・ループは、この例では、このアドレス値に達した後に終了する。実行される実際のアドレス・ループは、このアドレスの用いられ方を修正する場合がある。
20.制御/ロード/インデックス。プログラマブルMBISTコントローラのオフセット・インデックス・レジスタに値をロードする、制御/ロード/開始アドレスと同様の、複数ワードのコマンドである。この値は、その後、選択されたアドレスをアルゴリズム命令内でオフセットするために用いられることが可能である。
21.制御/ロード/メモリ。プログラマブルMBISTコントローラのメモリ番号選択レジスタへのロードを行う、複数ワードのコマンドである。この例では、このワードは、プログラマブルMBISTコントローラが、生成時に、複数のメモリと並行アルゴリズム・アクセスとではなく、複数のメモリを順次アルゴリズム・アクセスによってサポートするように構成されている場合のみ、使用可能である。
22.制御/ロード/ポート。プログラマブルMBISTコントローラのポート番号選択レジスタへのロードを行う、複数ワードのコマンドである。この例では、このワードは、プログラマブルMBISTコントローラが、生成時に、複数のメモリをサポートするように構成されている場合のみ、使用可能である。
23.制御/ロード/ブロック。プログラマブルMBISTコントローラのブロック番号選択レジスタへのロードを行う、複数ワードのコマンドである。この例では、このワードは、プログラマブルMBISTコントローラが、生成時に、ブロック選択をサポートするように構成されている場合のみ、使用可能である。
24.制御/ロード/ページ。プログラマブルMBISTコントローラのページ番号選択レジスタへのロードを行う、複数ワードのコマンドである。この例では、このワードは、プログラマブルMBISTコントローラが、生成時に、ページ選択をサポートするように構成されている場合のみ、使用可能である。
25.制御/ロード/スライス。プログラマブルMBISTコントローラのスライス選択レジスタへのロードを行う、複数ワードのコマンドである。この例では、このワードは、プログラマブルMBISTコントローラが、生成時に、スライス選択をサポートするように構成されている場合のみ、使用可能である。
26.データ/バックグラウンド。現在のデータ値を、例示的プログラマブルMBISTコントローラに収容された、最大16個の、ハード・エンコードされたデータ・バックグラウンド値のうちの1つに設定する。これらのバックグラウンド値は、この例では、プログラマブルMBISTコントローラの生成プロセス時に指定される。
27.データ/パターン/塗りつぶし。現在のデータ値を、全てが1の塗りつぶしパターンであるように設定する。
28.データ/パターン/チェッカーボード。現在のデータ値を、チェッカーボードであるように設定する。これは、アドレス値とメモリ・モデル・トポロジ情報とを用いた、トポロジ・ドリブンのチェッカーボードである。
29.データ/パターン/行ストライプ。現在のデータ値を、行全体にわたるストライプであるように設定する。
30.データ/パターン/列ストライプ。現在のデータ値を、列全体にわたるストライプであるように設定する。
31.データ/パターン/一意。現在のデータ値を、メモリ内の一定範囲で繰り返しがない、一意アドレスのデータであるように設定する。
32.データ/書き込みマスク/書き込みマスクを選択。プログラマブルMBISTコントローラからメモリに送られた書き込みイネーブル信号をマスクするために用いられるべく、ハード・コードされた書き込みイネーブル・マスク値の1つを選択する、複数ワードのコマンド。これらのマスク値は、プログラマブルMBISTコントローラの生成時に指定されることが望ましい。書き込みイネーブル・マスキングは、この例では、制御/マスク構成命令によってアクティブ化される制御信号マスク・セットとは独立に動作する。
33.データ/書き込みマスク/書き込みマスクを設定。ユーザが任意の書き込みマスクを指定することを可能にする、複数ワードのコマンド。
テスト・アルゴリズム・ステップ内では、アドレス/ループ構成命令の1つによってループが暗に示される。このループの実際の動作は、先行する、どのアドレス/関係命令によっても修正されることが可能である。アドレス・ループの詳細については、図3Aの上述の説明を参照されたい。この例における、以下のアドレス/ループ命令は、ループ・アドレスと他の任意のプライマリ・アドレスとの間に何も関係がないデフォルト・ケース(アドレス/関係/なし)だけが対象であり、他の何らかの関係を指定することによって、アドレス・ループ動作が修正される。これについては後で詳述する。
34.アドレス/ループ/行。ループ・アドレス・レジスタが、開始アドレス・レジスタ値で初期設定される。ループの各ステップは、まず、アドレスを行方向に動かして変更し、各行の最後まで到達したら、列方向に1ポジション移動して、行頭に戻る。終了アドレス・レジスタ値に達したら、ループが終了する。
35.アドレス/ループ/列。ループ・アドレス・レジスタが、開始アドレス・レジスタ値で初期設定される。ループの各ステップは、まず、アドレスを列方向に動かして変更し、各列の最後まで到達したら、行方向に1ポジション移動して、列頭に戻る。アドレス・レジスタが終了アドレス・レジスタ値に達したら、ループが終了する。
36.アドレス/ループ/行のみ。ループ・アドレス・レジスタが、開始アドレス・レジスタ値で初期設定される。ループの各ステップは、アドレスを行方向にのみ動かして変更し、列値は静止したままである。前述の列のみのアドレス指定と同様に、行が終了アドレス・レジスタの行値に達したら、ループが終了する。
37.アドレス/ループ/列のみ。ループ・アドレス・レジスタが、開始アドレス・レジスタ値で初期設定される。ループの各ステップは、アドレスを列方向にのみ動かして変更し、行値は静止したままである。この例では、列が終了アドレス・レジスタの列値に達したら、ループが終了する。
38.アドレス/ループ/斜め。この例では、ループ・アドレス・レジスタが、開始アドレス・レジスタ値で初期設定される。ループの各ステップは、アドレスを最初の斜め方向にのみ動かして変更する。行及び列の両方が、同じ方向に一緒に動く。アドレスが終了アドレス・レジスタのアドレス値に達すると、ループが終了する。このループ・タイプの場合は、開始アドレスからの斜めインクリメントのシーケンスによって終了アドレスに達することが必ず可能であるよう、注意しなければならない。終了アドレスに達しない場合、ループは終了しない。
この後の4つの構成命令は、この例においてアドレス・ループがどのように実行されるかを変更する。このテスト・アルゴリズム・ステップの命令ストリームにおいて、これらのアドレス/関係命令は、その次のアドレス/ループ命令の動作を修正する。この例では、関係が指定された場合、それは、例示的命令のビット3(最も外側のループ・アドレス・レジスタか、直接の外包ループ・アドレス・レジスタか)によって指定される、現在のループ・アドレス・レジスタとプライマリ・レジスタとの間の関係である。
39.アドレス/関係/なし。このアドレス・ループがどの外包ループとも関係を有しないという、デフォルトのアドレス・ループ動作を復元する。
40.アドレス/関係/オフセット。ループ・アドレス・レジスタのアクティブ部分は、実際のアドレスを形成するために、選択されたプライマリ・アドレス・レジスタのその部分からのオフセットとして用いられる。方向がインクリメントであれば、そのオフセットが加算され、そうでない場合は減算される。ループは、ループ・アドレス・レジスタのアクティブ部分をインクリメントするのではなく、LSB(最下位ビット)からMSB(最上位ビット)まで1を移動させる。
41.アドレス/関係/XOR。ループ・アドレス・レジスタのアクティブ部分は、実際のアドレスを形成するために、選択されたプライマリ・アドレス・レジスタとの排他的論理和をとられる。ループは、ループ・アドレス・レジスタのアクティブ部分をインクリメントするのではなく、LSBからMSBまで1を移動させる。
42.アドレス/関係/同じなら反転。ループは正規の動作を行うが、ループ・アドレス・レジスタの値がプライマリ・アドレス・レジスタの値と同じ場合には、書き込み又は読み出しされるデータが反転される。
43.アドレス/関係/斜めなら反転。ループは正規の動作を行うが、ループ・アドレス・レジスタがプライマリ・アドレスに対して斜めにある場合には、書き込み又は読み出しされるデータが反転される(主としてSliding diagonalアルゴリズムに用いられる)。
44.その他/診断/イネーブル。プログラマブルMBISTコントローラ内で診断ア
クティビティをイネーブルにする。この命令がいったん遭遇されると、読み出し操作が比較ミスに遭遇したときに、プログラマブルMBISTコントローラが、診断故障情報のスキャン・アウトを開始する。
45.その他/診断/ディスエーブル。MBISTコントローラの診断モードがディスエーブルになる。保留中の診断データがあれば、それがプログラマブルMBISTコントローラによって出力され続けることが可能であることが望ましい。
46.その他/診断/リスタート。複数の故障によって診断モニタがプログラマブルMBISTコントローラを一時停止させた場合に、現在のテスト・アルゴリズム・ステップのこの時点から、プログラマブルMBISTコントローラにリスタートを実行させる。アルゴリズムが実動作速度で実行されている場合は、診断モニタによってトリガされた一時停止により、実行パイプラインのフラッシュが起こるため、テスト・アルゴリズムが次の幾つかのメモリ・アクセス操作を無視する事態が起こる可能性がある。これにより、故障が見逃されるおそれがある。リスタート動作は、アルゴリズムをリスタートさせ、最大で故障の直前の時点まで戻す。
47.その他/診断/リスタートしない。診断中のリスタート動作をディスエーブルにする。
48.その他/インタリーブ/イネーブル。インタリーブされたアルゴリズム・ステップの実行のサポートをイネーブルにする(順次的な、インタリーブされたメモリ・テストの場合)。
49.その他/インタリーブ/ディスエーブル。インタリーブされたアルゴリズム・ステップの実行のサポートをディスエーブルにする(順次的な、連続的なメモリ・テストの場合)。
50.その他/ポート・テスト/イネーブル。ポート・テストをイネーブルにする。
51.その他/ポート・テスト/ディスエーブル。ポート・テストをディスエーブルにする。
52.その他/次/メモリ。プログラマブルMBISTコントローラのメモリ番号選択レジスタを、次のメモリの値に進める。
53.その他/次/ポート。プログラマブルMBISTコントローラのポート番号選択レジスタを、次のポートの値に進める。
54.その他/次/ブロック。プログラマブルMBISTコントローラのブロック番号選択レジスタを、次のブロックの値に進める。
55.その他/次/ページ。プログラマブルMBISTコントローラのページ番号選択レジスタを、次のページの値に進める。
56.その他/次/スライス。プログラマブルMBISTコントローラのスライス番号選択レジスタを、次のスライスの値に進める。
これらの構成命令は、性質として、即時の命令であることが望ましい。これらは、命令メモリから読み出された時点で評価される。これに対し、アルゴリズム命令は、完全なアルゴリズム・ステップが遭遇されるまでバッファリングされることが望ましい。従って、実動作速度で評価されることが望ましいアルゴリズム命令と異なり、構成命令は、実動作速度で評価されることが可能である必要がない。代表的な使用パターンは、アルゴリズム命令のシーケンスが実行される環境をセット・アップするために、アルゴリズム・ステップが幾つかの構成命令を必要とする場合である。
プログラマブルMBISTコントローラの基本形態の具体例は、次のクラスのアルゴリズム、即ち、March(Checkerboardアルゴリズムを含む)、アドレス・デコーダPMOS開放、書き込みイネーブル、Walking、Galloping、Sliding diagonal、及びButterflyをサポートするように構成されることが可能である。更に、ポート相互作用、一意アドレス指定、その他のような、何らかのマルチポート・メモリ用アルゴリズムもサポートされることが可能である。
ローカル・アドレス構成命令については、プログラマブルMBISTコントローラは、一例では、ベース・アドレスに対してオフセットするスキームを少なくとも2つサポートすることが望ましい。望ましい形態の第1のスキームは、次の式に従ってローカル・アドレスを生成する。
local_address=base_address XOR (1<<i)、ただし、0≦i<n(アドレス・バス・サイズ)
第2のスキームでは、ローカル・アドレスが、ベース・アドレスを2ずつインクリメント又はデクリメントすることによって生成されることが望ましい。第1のスキームは、アドレス・デコーダ開放故障を検出するアルゴリズムをサポートする。第2のスキームは、Butterflyアルゴリズムをサポートする。
同様に、データ構成命令は、一例では、データ・バックグラウンドを更新するスキームを2つ含むことが望ましい。第1のスキームは、可能な(logw+1)個のバックグラウンドから次のバックグラウンドを選択する(wはメモリ・ワード・サイズ)。第2のスキームの一部として、データ・バックグラウンドは、1ビットだけシフトとされ、2w−1から始まる。
前述の命令(図3及び表3のアルゴリズム命令及び構成命令)は更に、それらの長さに関して、即ち、単一ワード命令と複数ワード命令とに分類されることが可能である。この例では、最大アドレス及び最小アドレスをロードすることに対応して、2つの複数ワード命令(「最大アドレスをロード」及び「最小アドレスをロード」)だけがあることが望ましい。このアプローチは、ユーザがアルゴリズムを適用する範囲を指定することを可能にする。どの時点においても、最大アドレス又は最小アドレスの一方だけを指定することが可能である。ロード命令ワードは、常にアドレス・ロケーションが後に続くことが望ましく、従って、このケースでは、他の何らかのアルゴリズム又は構成命令と混同されることがない。
前述の例示的プログラマブルMBISTコントローラ・アーキテクチャは、拡張可能であるが、アルゴリズム・ステップ当たり最大4レベルの入れ子ループと、全部で8つのメモリ・アクセス操作とが、これらのアルゴリズム・ステップ・ループにおいて適用されることを可能にする。シンプルなMarchアルゴリズムは、アドレス空間と最大3つのメモリ操作RWRとに対して単一ループのみを用いる。より複雑なアルゴリズムは、ループ入れ子と、ステップ操作のフル・セットとを利用することが可能である。
例えば、次のシンプルなmarch2アルゴリズムを考える。
Figure 2009259398
これは、以下の命令シーケンスを用いて表されることが可能である。
Figure 2009259398
3.2.1 入れ子ループ
前述の例は、単一ループのみを示している。次に、入れ子ループを必要とするアルゴリズムを考える。例えば、GALPATアルゴリズムである。
Figure 2009259398
このアルゴリズムでは、メモリが初期設定された後、ベース・セルがメモリ上を動かされ、各ベース・セル・アドレスにおいて反転パターンが書き込まれ、その後、メモリ全体が再度読み出されて、(反転パターンが期待される)ベース・セル・アドレス以外の全てのアドレスにおいてそのパターンが探される。メモリ全体の妥当性が確認された後、そのパターンがベース・アドレスに再書き込みされ、アルゴリズムがベース・セル・アドレスを動かす。従って、この例示的テスト・アルゴリズムは、2レベルのループを用いるだけでなく、内側ループと外側ループとが同じ値の場合にはデータ・パターンが反転される、内側ループと外側ループとの間の関係も用いる。このアルゴリズムは、以下の、外側ループが明示的に展開される命令シーケンスを用いて表されることが可能である。
Figure 2009259398
この例では、内側ループにおいて、ループ・アドレスとプライマリ・アドレスとが同じ場合に反転データが使用されるようにするために、アドレス構成命令が用いられているのがわかる。また、そのループは、全てのアドレスが使用されるまで、メモリ・アクセス操作1を繰り返す。
3.2.2 より複雑なループ関係
次に、アドレス・デコーダのPMOS開放を検出するアルゴリズムのような、より複雑なアルゴリズムを考える。これは、この例では2レベルのループを用い、内側ループと外側ループとの間の複雑な関係を用いて、ハミング距離1の範囲にある全てのアドレスにアクセスする。
Figure 2009259398
このアルゴリズムは、外側ループの内側でローカル・ループを使用することを示す。内側ループは、外側ループ・アドレス・レジスタの値を用い、外側ループ内のアドレスからハミング距離1にあるアドレスに対してループする。ループ制御構成コマンドは、内側ループの最後のアドレスに達するまで、各ループ・アドレスにおける書き込み及び読み出しの操作を、ループに実行させる。外側ループは、列インクリメント順序で全てのアドレスをトラバースする。
4.第1の実施形態の例示的ハードウェア設計
例示的プログラマブル・メモリBISTコントローラの第1の実施形態の基本的なハードウェアを、図4に示す。この実施形態は、前述の図3の形式のアルゴリズム命令ワードと、前述の表3の形式の構成ワードとの使用に、特に適用可能である。この基本実施形態では省略されている他のブロックもあり、それらは、追加機能(診断、ROM BIST用MISR、ビルトイン自己修復解析、その他)を包含する場合には含まれることが可能であることを理解されたい。本質的には、これらの省略されたブロックの機能性は不変のままであって、コントローラを本明細書に記載のプログラマブルMBISTコントローラに変更しても影響はない。プログラマブルMBISTコントローラ・ジェネレータの基本アーキテクチャは拡張されるので、これらの他のブロック及び機能の幾つかが追加されることが可能である。
これらの第1の実施形態による例示的プログラマブル・メモリBISTコントローラ100の全体アーキテクチャを、図4に示す。テストされるメモリ(memory under test、MUT)は、図4では、101で示されている。以下のサブセクションでは、この例示的コントローラの各ブロックについて説明する。各構成要素は離散的である必要はなく、必要に応じて他の構成要素と結合されることが可能であることを理解されたい。また、他のハードウェア実装を用いることも可能である。
4.1 命令メモリ
プログラマブルMBISTコントローラ100の一例示的形態では、9ビットの命令ワードを記憶するためにレジスタが用いられる。これらの命令は、アルゴリズム・ステップ、並びにデータ及びアドレスの各種構成を記述するために用いられる。更に、これらの命令は、制御信号の指定も行う。アルゴリズムの命令の数によっては、アルゴリズム全体がチップに格納されてから実行されることが可能である。別のシナリオでは、アルゴリズムに対応する命令群が、ATE(自動テスト装置)(Automatic Test Equipment)に待機することが可能である。そのようなケースでは、最初の命令群(例えば、第1のペアの命令)が実行されているときに、次の命令群(例えば、第2のペアの命令)がATEからチップにアップロードされることが可能である。これは、チップの必要メモリが少なくてよいこととともに、アルゴリズムが、望ましくは、メモリの動作速度で実行されることを可能にする。命令メモリ102は、ユーザの要求に応じて、チップとATEとの間に分散されることが可能である。この例のMBISTコントローラ・ハードウェアの残りの部分は、テストされるメモリ(例えば、MUT 101)回路を含む集積回路チップに含まれる。命令をチップにロードするために、JTAGコントローラが利用可能である。
4.2 命令デコーダ
プログラマブル・コントローラ100は、メモリの動作速度で実行可能であることが望ましい。非常に高い速度での実行が可能であるアーキテクチャを推進するために、命令デコーダ108の望ましい一形態は、3つのサブデコーダ、即ち、プリデコーダ110と、アルゴリズム命令デコーダ112と、構成命令デコーダ114と(図5)を含むか、これらで構成される。
・例示的プリデコーダ110は、命令がアルゴリズム命令か構成命令かを判別する。これは、この例では、命令ワードのLSB(最下位ビット)に基づく。更に、プリデコーダは、望ましくは、命令メモリにある命令群のループ境界をデコードすることにより、ベース・ループの単一アルゴリズム・ステップを、入れ子ローカル・ループ122に関連する全ての操作とともに、ベース・ループ・バッファ120にロードすることを支援する。
・アルゴリズム命令デコーダは、命令が、テストされるメモリに対して実際に実行される必要がある操作に関連するとして分類された場合(例えば、アルゴリズム命令として分類された場合)のみ、アクティブ化される。
・構成命令デコーダは、命令が、後続のアルゴリズム・ステップに関する構成を定義することに関連付けられているとして分類された場合(例えば、構成構築として分類された場合)のみ、アクティブ化される。
例示的アルゴリズム及び構成命令の詳細は、既に説明されている。アルゴリズム命令は、アルゴリズム・ステップごとに変更されるが、構成命令は、アルゴリズム・ステップが終わるごとに変更されてもされなくてもよいことに注意されたい。言い換えると、構成命令のデコードは、場合によっては、時間に対してさほどクリティカルでなくてもよく、複数のクロック・サイクルにわたってデコードされてもよい。デコーダを、独立したサブモジュールに分割することは、アルゴリズム命令のデコードと構成命令のデコードとを並行して行うことを可能にする。図5は、命令デコーダの例示的形態のブロックレベルのモジュールを示す。
図5の実施形態では、ステップ・コントローラ130(図4)は、命令デコーダにマージされることが可能である。図5に示されるように(この構成に限定されないが)、ベース・ループ命令及びローカル・ループ命令のペアを記憶するために、2つのバッファ・ペア(buf0及びbuf1)が導入されている。この例では、各バッファは、ベース・ループ・バッファ120とローカル・ループ・バッファ122とを有する。テスト・パターンのテスト・ステップは、2つのバッファ・ペアに交互にロードされることが望ましい。ベース・ループは、この例では、全てのベース・アドレスに対して実行される操作のシー
ケンスを示し、ローカル・ループは、全てのローカル・アドレスに対して実行される操作のシーケンスである。例えば、ほとんどのMarchアルゴリズムは、ローカル・ループを必要としない。これに対し、(w,(r,r),w)で表されるGALPATステップの場合は、ベース・ループ内の書き込み操作のペアの間に、2つの読み出し操作を有するローカル・ループがある。前述のセクション2で挙げられたアルゴリズムの場合(前述のセクション2.1.3.5における一部のケースを除く)、ローカル・ループは、常にベース・ループ内の入れ子であることが望ましい。ローカル・アドレスは、それらのアルゴリズムに記述された特定のスキームに従って、各ベース・アドレスについて導出される。
バッファ120、122のサイズは、様々であってよいが、面積オーバヘッドを最小にするために4ビットと仮定される。アルゴリズムのステップを実行する場合、MBISTコントローラは、読み出し操作を行うか書き込み操作を行うか、と、特定のメモリ・ロケーションにデータを書き込むか、データの反転を書き込むか、と、読み出し操作又は書き込み操作を実行する場所(即ち、ベース・アドレス・ロケーション、ローカル・アドレス・ロケーション、或いは、前又は次のベース・アドレス・ロケーションであるロケーション(例えば、base+1又はbase−1))を指定するアドレス指定スキームと、を知る必要がある。前述のように、上記の必要情報は、アルゴリズム命令のわずか4ビットにエンコードされることが可能である。ループ境界を示す残りの4ビットは、どのセットの命令がベース・ループ・バッファ又はローカル・ループ・バッファにロードされなければならないかに関する情報を提供するために、プリデコーダ110によってデコードされることが望ましい。1つのステップにおける操作の数は、かなり限られていて、一般に、ベース・ループ・バッファ120用の8ワードと、ローカル・ループ・バッファ122用の4ワードとは、プログラマブル・コントローラの例示的な基本形態によってサポートされるアルゴリズムを実行するのに十分である。ワード・サイズを4ビットとすると、全部で96個のレジスタが必要である。更に、バッファの数及びバッファ・サイズはかなり小さいので、これらの命令のデコード時間は、命令メモリから命令を読み出す時間に比べて非常に短い。
ある操作から別の操作への迅速な切り替えを可能にするために、図5の例では、2つのバッファ・ペアのセットが用いられることが望ましい。これにより、1つのステップは、前のステップが終了した後、ただちに実行されることが可能である。一方のバッファ・ペアにある命令が実行されているときに、次のアルゴリズム命令が、他方のバッファ・ペアにロードされることが可能である。ベース・ループ操作及びローカル・ループ操作の両方を有するアルゴリズムの、操作の例示的なシーケンスは、次のとおりである。
・各ベース・アドレスに対して、ベース・ループ命令が、ベース・ループ・バッファから読み出され、実行される。
・入れ子ローカル・ループがある場合、ローカル・ループ操作は、ローカル・ループ・バッファに待機する。ただちに、制御がローカル・バッファにシフトされ、ローカル・ループ操作が実行される。
・ローカル・ループ操作が完了した後、制御がベース・ループ・プログラム・カウンタに戻される。ベース・ループに後続の操作がある場合は、それが実行される。後続の操作がない場合は、ベース・ループに関する次のステップが待機しているbuf1に、制御が切り替えられる。その後、マルチプレクサ136がbuf1を選択し、buf1に対応する操作がデコードされ、実行される。
・2つの後続のベース・ループ・ステップのために一方のバッファと他方のバッファとを切り替えることによって、同じプロセスが繰り返される。操作が一方のバッファ・ペアから実行されているときに、他方のバッファ・ペアは、次のベース・ステップを、入れ子ローカル・ループ・ステップとともに、命令メモリからロードされることが可能である。
命令デコーダの上述の設計は更に、メイン命令メモリ用プログラム・カウンタ(PC)
150(図4)を非常にシンプルにする。これは、プログラム・カウンタが、逆方向にジャンプする必要がなく、常に順方向に進んでいるからである。しかしながら、プログラム・カウンタは、別のデータ・バックグラウンドが使用されたときには逆方向にジャンプしてもよい。前述の例示的設計は、診断を考慮していないこと、並びに、実動作速度診断のための「リスタート」操作のような操作をサポートするように強化されることが可能であることに注意されたい。各バッファ(buf0及びbuf1)は、専用のバッファ・プログラム・カウンタを有することが望ましい。バッファ・プログラム・カウンタは、望ましくは、バッファの先頭から開始し、次のロケーションまで進み、ループの最後の命令が実行されたら最初のロケーションに戻る。命令群がローカル・ループ・バッファにもロードされた場合は、待ちポインタを用いて、ローカル・ループ・バッファ内の命令の完了後に実行が再開される場所を示すために、ベース・ループ操作のロケーションを記憶することが可能である。
プログラム・カウンタ(PC)は、この例では、次の状況下で1ずつインクリメントされる。即ち、命令群がバッファにロードされている状況か、バッファ内の命令が実際には実行されていない間に、構成命令がデコードされている状況か、バッファにあるアルゴリズム命令が並行して実行されている間に、アドレス更新スキームを示すフィールドがデコードされている状況である。現時点の、この例示的設計においては、PCが別のロケーションにジャンプしなければならない状況は、複数のデータ・バックグラウンドを用いてアルゴリズムが実行されなければならない場合だけである。プログラム・カウンタは、データ・バックグラウンドを更新する命令が遭遇された場合に、データ・バックグラウンドの反復の開始点に戻ることが望ましい。データ・バックグラウンドの反復の開始点のPCの値を記憶するために、専用のレジスタを設けてもよい。このアプローチは、同じアルゴリズムを複数のデータ・バックグラウンドで実行しようとする場合の命令メモリ・サイズを減らすために有利である。
4.2.1 アドレス方向のデコード
ベース・アドレスが変化する方向は、構成命令内にエンコードされていることが望ましい。メモリがアドレス指定されるスキームは、望ましくは、1つのステップにおいては全ての操作について同じままであり、ステップ間にのみ変更される。従って、後続ステップのアドレス指定スキームは、現在のステップがまだ実行中である間に、プリデコーダによって決定されることが可能である。このことは、アドレス指定スキームをデコードする時間をより長くとることを可能にし、このアプローチでは、クリティカルなタイミング・パスの一部にならない。状態機械を用いて、各種ステップ間でのアドレス指定スキームの変更を制御することが可能である。
4.2.2 最終アドレスの計算
アルゴリズム命令デコーダ112は、マルチプレクサ136を介して、2つのバッファを切り替える。この切り替えは、この例では、ベース・ループ操作及びローカル・ループ操作の両方についての最終アドレスの計算に依存する。一般的には、最終アドレスは、最大メモリ・アドレスであるが、テストされるメモリについて任意のアドレス範囲をユーザが指定できることが望ましいので、ユーザ指定であってもよい。コントローラが実動作速度で実行されている間は、(大きな面積オーバヘッドをこうむることなく)1クロック・サイクル以内に、現在のアドレスと、意図された最大アドレスとを比較して決定を下すことは、ほとんど不可能である。BIST動作のスロー・ダウンを避けるために、アルゴリズム命令デコーダと、最終アドレスを示す信号を発生させるロジックとの間に、2つ(以上)のパイプライン段が挿入されることが望ましい。本質的に、最終アドレスかどうかを判別する処理は、最終アドレスに対する操作の実行の前に、2つのサイクルを開始する。このことは、最終アドレスが実際に必要になる前に比較器動作(最終アドレス検出動作)を完了させるのに十分な時間を与える。
2つのパイプライン段を仮定すると、入れ子ループがないMarchアルゴリズムの場
合には、最終アドレスに達したかどうかを示す信号は、最終アドレスにおいてアルゴリズム・ステップが実行される前の1クロック・サイクルの間、アサートされたままである。これは、アドレスがインクリメントされている場合でも、デクリメントされている場合でも起こる。しかしながら、入れ子ローカル・ループを有する、より複雑なアルゴリズムでは、最終アドレスを示す信号が同様に計算されることが不可能な場合もある。これは、ベース・アドレス・ステップの中に、何百ものクロック・サイクルを要するローカル・アドレス操作が多数含まれる可能性があるためである。そのような場合、ベース・アドレスは早めに計算されるが、最終ベース・アドレスに関係する信号が実際にアサートされるのは、最終ローカル・アドレスに対してである。しかしながら、何れの場合においても、最終ベース・アドレス及び最終ローカル・アドレスを示す信号のアサートは、複数のクロック・サイクルにわたって行われることが可能であり、それによって、コントローラに対するあらゆるタイミング制約を少なくすることが可能である。
4.3 アドレス・ジェネレータ
アドレス・ジェネレータ155(図4)の例示的な一形態は、2つの部分、即ち、(ベース・アドレス・ジェネレータとも呼ばれる)ベース・ループ160(図6)用アドレス・ジェネレータと、(ローカル・アドレス・ジェネレータとも呼ばれる)ローカル・ループ200(図7)用アドレス・ジェネレータとを含むことが望ましい。最終アドレス・インジケータ(図6の最終ベース・アドレス・インジケータ180と図7の最終ローカル・アドレス・インジケータ182)も含まれることが可能である。この例では、ベース・アドレス及びローカル・アドレスの両方が、2つの部分、即ち、行アドレスと列アドレスとに分けられていることが望ましい。このアプローチは、行アドレスと列アドレスとを独立に操作することを可能にする。
ベース・アドレス・ジェネレータ(例えば、図6の160を参照)は、ベース行アドレス及びベース列アドレスの発生を制御することが望ましい。ベース行アドレスは、この例では、アドレス指定スキームが設定されたとき、又は最終アドレスに達したときに、(ブロック162で)その初期値に設定される。図示された形態のベース行アドレス・レジスタ(ブロック170)は、アドレス方向又はアドレス指定スキームが変更されたときに、ベース・ループの最後で変更されるのが普通である。従って、ベース行アドレスは、例えば、アドレス指定スキームが行アドレス指定(例えば、高速xアドレス指定)、行のみアドレス指定、斜めアドレス指定などである場合、或いは、列アドレス・レジスタが、キャリーが発生して行アドレスのインクリメントが必要になるように変更された場合に、1ずつインクリメントされるか、デクリメントされる(ブロック164を参照)。ベース列アドレス(ブロック172を参照)は、この例では、初期値から始まり(ブロック166)、アドレス指定スキームが列アドレス指定(例えば、高速yアドレス指定)、列のみアドレス指定、斜めアドレス指定などである場合、或いは、行アドレス・レジスタが、キャリーが発生して列アドレスのインクリメントが必要になるように変更された場合に、1ずつインクリメントされるか、デクリメントされる(ブロック168を参照)。図6は、例示的なベース・アドレス・ジェネレータのブロック図である。マルチプレクサ165が、ブロック162、164をブロック170に結合し、マルチプレクサ169が、ブロック166、168をブロック172に結合する。
ローカル・アドレス・ジェネレータ200(図7)は、ベース・アドレス・ジェネレータ160によってサポートされているアドレス指定スキームに加えて、複雑なアドレス指定スキームをサポートすることが望ましい。ローカル・アドレス・ジェネレータは更に、ベース・アドレスを基準とするアドレス生成スキームをサポートすることが望ましい。図示された形態のローカル・アドレス・ジェネレータは更に、2つの部分、即ち、ローカル行アドレス210と、ローカル・ベース又は列アドレス220とに細分されることが望ましい。例示的なローカル・アドレス・ジェネレータの様々なアドレス指定スキームを以下に示す。
・ベース・アドレスと等しいローカル・アドレスを設定する(ブロック221、223)。
・ベース・アドレスと2との排他的論理和をとることによってアドレスを生成する(nはアドレスのビット数)(ブロック229、231)。
・2にベース・アドレスを加算するか、2からベース・アドレスを減算することによってローカル・アドレスを生成する(ブロック233、235)。
値2は、1に初期設定されたローカル・アドレス・レジスタを左シフトする(ブロック225、227)ことによって生成されることが可能である。アドレス・ジェネレータは更に、最大アドレスにいつ達したかを示す機能を含むことが可能である。最大アドレスは、例えば、メモリのサイズに固有であってもよく、ユーザによって指定されてもよい。最終ベース・アドレス信号インジケータは、最終ベース・アドレスに達したことを示すために、例えば、次の条件下でアサートされることが可能である。
代替として、必ずしも先頭からではなく、特定のローカル行アドレス及びローカル列アドレスから開始するために、ブロック211、213の開始ローカル行及び開始ローカル列が用いられる。これらは、例えば、それぞれブロック215、217でインクリメントされることが可能である。
・最終ベース行アドレスに達している。行のみアドレス指定スキーム及び斜めアドレス指定スキームの場合。
・最終ベース列アドレスに達している。列のみアドレス指定の場合。
・最終行アドレス及び最終列アドレスの両方に達している。行アドレス指定又は列アドレス指定の場合。
図7は、例示的なローカル・アドレス・ジェネレータのブロック図である。
ローカル・アドレスの場合、最終アドレス信号インジケータは、例えば、ローカル・アドレスがベース・アドレス指定スキームに依存しない場合のみ、上述の場合と同じ状況下でアサートされることが可能である。これに対し、ローカル・アドレス指定スキームがベース・アドレスに依存する場合は、コントローラによってテストされる全てのメモリが同じサイズであれば、MSB(最上位ビット)を用いて、最終ローカル・アドレスを示すことが可能である。同じサイズでない場合は、別個の比較スキームを用いて、最終アドレスに達しているかどうかを判別することが可能である。最終アドレス・インジケータ(最終ローカル・インジケータ)182は、この例では、最終ベース・アドレス信号と最終ローカル・アドレス信号とを生成することが可能である。最終ベース・アドレス信号は、次の条件のうちの1つが満たされた場合にアサートされることが望ましい。(1)行のみアドレス指定又は斜めアドレス指定の場合に、最終ベース行アドレスに達している。(2)列のみアドレス指定の場合に、最終ベース列アドレスに達している。又は(3)行アドレス指定又は列アドレス指定の場合に、最終ベース行アドレス及び最終ベース列アドレスの両方に達している。最終ローカル・アドレス信号については、ローカル・アドレスがベース・アドレスと独立に生成されるのであれば、条件は、最終ベース・アドレス信号の場合と同じである。しかしながら、ローカル・アドレスが、ベース・アドレスと2との排他的論理和、或いはベース・アドレスと2との加算又は減算によって生成されるのであれば、最上位ビット(MSB)が最終ローカル・アドレスを示す。
4.4 データ・ジェネレータ
図示された形態のデータ・ジェネレータ300(図4)は、2つの主要機能を有する。第1のタスクは、現在のクロック・サイクルの間に特定のメモリ・ロケーションに書き込まれるべき正しいデータを生成することである。第2のタスクは、読み出し操作時にそのメモリ・ロケーションから読み出されたデータと比較されるべき適正な期待データを生成することに関連付けられる。読み出し及び書き込みの操作がパイプライン化されることが望ましい例では、適正な期待データを生成することがより複雑になる。プログラマブルM
BISTコントローラは、生成された期待データと、実際にあらかじめ(例えば、数クロック・サイクル前に)メモリに書き込まれたデータとが突き合わせされる(対応する)ことを保証することが望ましい。
データ・ジェネレータはまた、様々な更新スキームに従って、データ・バックグラウンドを更新することが望ましい。一意データ、チェッカーボード、行ストライプ、及び列ストライプのデータ・バックグラウンドの場合、データ・バックグラウンドは、アドレスの関数である。一意データ・バックグラウンドは、アドレスをデータ・バックグラウンドとして使用する。インタリーブ・メモリ及びマルチプレクスされたワード指向メモリの場合、チェッカーボード、行ストライプ、及び列ストライプのデータ・バックグラウンドは、以下の式で表されることが可能である。
Figure 2009259398
ここで、row[0]及びcolumn[0]は、行アドレス及び列アドレスのLSBであり、Dは、命令によって指定される0又は1であり、EXNORは、排他的NORの演算である。
プログラマブル・コントローラの望ましい第1の実施形態によってサポートされる、様々なタイプの例示的なデータ生成スキームを以下に挙げる。全てのケースにおいて、データ・バックグラウンド及びデータ・バックグラウンドの反転の両方がサポートされることが望ましい。
1.Marchアルゴリズムの場合は、塗りつぶしの「0」及び「1」のデータ・バックグラウンドのほかに、ユーザが、全部で(logw+1)個の異なるバックグラウンドの中から、使用可能な任意のバックグラウンドを指定することが可能である(wはデータ・ワードの幅)。
2.Checkerboardアルゴリズムの場合は、データ・バックグラウンド「01...01」及びその反転が使用される。更に、メモリ・ロケーションに書き込まれるデータは、そのアドレスに依存する。
3.行ストライプ及び列ストライプ・アルゴリズムの場合は、メモリの偶数アドレス及び奇数アドレスに基づいてデータが生成される。行ストライプ・アルゴリズムでは、例えば、1回の実行で、偶数行に「11...11」が書き込まれ、奇数行に「00..00」が書き込まれる。第2の実行では、データ・バックグラウンドが反転される。同様に、列ストライプ・アルゴリズムでは、交互の列がそれぞれ全て1及び全て0を有するようにデータが書き込まれる。
4.一意データ・アルゴリズムの場合は、対応するメモリ・アドレスが、全てのメモリ・ロケーションの一意データとして用いられることが可能である。
データ・バックグラウンドは、例えば、2つのスキームに基づいて更新されることが可能であることが望ましい。第1に、ユーザは、(logw+1)個のありうるデータ・バックグラウンドから、使用可能な任意のデータを選択することが可能である。第2に、セクション2で挙げられたアルゴリズムの幾つかについては、データ・バックグラウンドが、2w−1に設定されている現在のバックグラウンドを1ビットだけシフトすることに
よって変更されることが可能である(wはデータ・ワードの幅)。プログラマブル・コントローラは、両方のスキームを、アルゴリズムに基づいてサポートすることが望ましい。
制御信号、アドレス、及びデータが、異なるクロック・サイクルにおいて生成されている場合に、レイテンシ調節器400(図4)を用いて、それらを同期された状態にすることが可能である。調節器400は更に、データのレイテンシを調節して、メモリ入力データとメモリ出力データとを同期させることが望ましい。
4.5 制御ジェネレータ
制御ジェネレータ500(図4)は、この例に示された一形態では、アルゴリズムの実行を管理する、必要な全ての制御信号を生成する役割を有する。この機能は、命令自体の中にワン・ホット・エンコードされていることが望ましいので、制御ジェネレータの構成は、シンプル且つ直接的である。図示された例の制御信号は、命令デコーダから直接到来し、プログラマブルMBISTコントローラ内の各ブロックにルーティングされる。
4.6 出力応答アナライザ
図示された一形態の出力応答アナライザ450は、メモリから読み出されたデータと、プログラマブルMBISTコントローラから生成された期待データとを比較する。このアナライザは、2つの値を比較する比較器を備えることが可能である。メモリの幅が非常に大きい場合は、比較器のロジックの深さが大きくなり、従って、実動作速度のBIST操作を望ましくは可能にするためにパイプライン段が挿入されることが可能である。代替として、出力応答アナライザは、メモリ応答を圧縮する圧縮器であってよい。圧縮器のアプローチは、特にROMのテストに適用可能である。出力アナライザは、テストされたメモリがテストにパスしたか失敗したか、或いは、メモリ内の特定のセルがテストにパスしたか失敗したかを示す出力452のような、任意の好適な出力を提供することが可能である。代替として、この後に説明されるように、結果が、診断モニタ900に渡され、解析されて、出力902で診断データが生成されることが可能である。
5.0.ハードウェア設計の例示的な代替形態
この実施形態の基本的なハードウェアは、図4にも示されている。しかしながら、この実施形態は、代替設計のステップ・コントローラのような、代替構成要素形態を利用する。この代替実施形態のハードウェア設計は、図3Aに示された形態のアルゴリズム命令ワードに特に適用可能である。
5.1 命令メモリ
命令メモリ102は、別の形態では、プログラマブルMBISTコントローラと、MBISTコントローラによって実行される命令シーケンスのソースとの間に、FIFOバッファを形成する。これは、一般に、約8個の9ビット・ワードのレジスタ・ファイルから形成されることが可能である。このブロックの中の制御ロジックは、命令メモリが満杯でない場合に、外部ソースが、更なる命令群を命令メモリにスキャン・ロードすることを可能にする。従って、MBISTコントローラが命令群の処理を開始して、それらが命令メモリから除去されれば、更なる命令群が命令メモリにロードされることが可能である。
外部テスト命令ソースは、MBISTコントローラのクロック・ドメインより何倍も低速なクロック・ドメインを使用することが可能である。例えば、IEEE 1149.1
TAP TCK又は外部ATEクロックが、命令のロードに用いられることが可能である。命令メモリ・ブロックは、そのような例における2つのクロック・ドメインの間に同期ロジックを含むことが望ましい。ほとんどのBISTアルゴリズム・ステップは、ある範囲のアドレスにわたって動作し、多数の高速クロック・ドメイン・サイクルを費やすので、BISTコントローラが現在のセットを実行しているときに、並行して次の命令シーケンスをメモリにロードするのには十分な余裕がある。
命令メモリのサイズは、増減が可能である。サイズが変更されると、MBISTコントローラと命令ソースとの間のリンケージの量も変化する。アルゴリズムが命令メモリ内に
完全にはめ込まれている場合は、ワード数が少ないので、低速の外部ソースが新たな命令群を使用可能にするのをMBISTコントローラが待つ時間が長くなる可能性がある。命令メモリのワード数の8という値が、性能とレジスタ・サイズとの間の良好な妥協点になると考えられている。
5.2 命令デコーダ
命令デコーダ108(図4)の代替形態は、次の2つの部分から構成される。
・命令がアルゴリズム命令か構成命令かを決定する部分。
・構成命令をデコードする部分。
第1の決定は、単純に命令ワードのビット0を検査することによって行われることが可能である。ビット0がセットされていれば、命令は構成命令である。これは、既にセクション4.2で述べたようなプリデコーダを用いて行われることが可能である。
構成命令のデコードは、この例では、具体的な構成命令を決定するために構成命令ワードの最上位ビットを検査することによって行われる。ほとんどの構成命令に対して、プログラマブルMBISTコントローラの状態は即座に更新される。アドレス構成命令は、この例では、以下で説明されるように、別の処理をされることが望ましい。例えば、アドレス構成命令は、部分的にデコードされてステップ・コントローラに渡されることが可能であり、ステップ・コントローラでは、現時点で実行の準備ができている、テスト・アルゴリズム・ステップの命令ループのために、他の情報とともにバッファリングされる。ステップ・コントローラについては、次のセクションで詳述する。
5.3 ステップ・コントローラ
ステップ・コントローラ130は、様々であってよいが、一具体例では、1ステップのプリデコードされたアルゴリズム命令群と、そのステップにおけるループのためのアドレス構成と、テスト・ステップの実行の制御とを記憶することが可能である。
図8に示されたステップ・コントローラは、4つのサブブロック、即ち、命令バッファ及びバッファ制御500と、アドレス構成バッファ502と、アルゴリズム命令デコーダ504と、アドレス構成デコーダ506とを備える。例示的ステップ・コントローラの図を図8に示し、これについて、以下のサブセクションで説明する。
5.3.1 命令バッファ及びバッファ制御
プログラマブルMBISTコントローラに関連付けられたメモリに対して多数のメモリ・テスト・アルゴリズムを実行するメモリ・テスト・プログラムを考えることができる。それらのテスト・アルゴリズムは、プログラマブルMBISTコントローラが、生成時(例えば、フィールド・プログラミング時)に、並行メモリ・テストのために構成されている場合には、全てのメモリに同時に適用されることが可能である。代替として、それらのアルゴリズムは、プログラマブルMBISTコントローラが、生成時に、順次メモリ・テストのために構成されている場合には、各メモリに順番に適用されることが可能である。後者の場合は、プログラマブルMBISTコントローラにより、異なるアルゴリズムが各メモリに適用されることが可能である。これにより、メモリの個々の要件と、任意のダイ位置に固有の変形形態とに対してカスタマイズされる厳密なテストが可能になる。
各メモリ・テスト・アルゴリズムは、一連のメモリ・アクセス操作からなる。これらは、選択されたメモリ・アドレスにわたる幾つかのループにグループ分けされる。これらのループは、シンプルなMarchライクなアルゴリズムの一連のアドレスを通る単一パスのようにシンプルであってもよく、全体的により複雑なもの(例えば、GALPATアルゴリズムや開放PMOSアドレス・デコーダ・テストに必要なルーピング)であってもよい。この実施形態のプログラマブルMBISTコントローラは、拡張可能であるが、最も外側のループの中で最大8個のメモリ・アクセス操作をサポートする。これらの命令は、幾つかの内側ループに編成されることが可能である。これらは、拡張可能であるが、この
例では、最大で4レベルのループがいつでも同時にアクティブであることが可能である。メモリ・アクセス操作の数と、ループ入れ子の深さとは、プログラマブルMBISTコントローラの生成時に、構成可能であるように拡張されることが可能である。
前述のように、ループは、最初の「アドレス/ループ」構成命令及び終了させる「制御/ループ」構成命令の内側に含まれる一連のメモリ・アクセス操作によって定義されることが可能である。この、ループ構成命令のペアの内側にある全てのメモリ・アクセス操作が、ループの本体の中にあることが望ましい。
ループ入れ子は、ループの本体の中でループ構成命令の更なるペアが遭遇された場合に発生する。この入れ子ループに含まれるメモリ・アクセス操作は、より高い入れ子レベルにあると見なされる。
例えば、単純なループは、次のようになる。
Figure 2009259398
「アドレス/ループ」構成命令及び対応する「制御/ループ」構成命令は、この例では、書き込まれるべき情報をアドレス構成バッファに入れる。メモリ・アクセス操作は、命令バッファに入れられる。
以降のサブセクションでは、次の入れ子ループの実行について考える。
Figure 2009259398
これは、以下のテスト・アルゴリズム命令を用いて書かれることが可能である(この例のテストでは、アルゴリズム・ステップは、命令バッファ及びアドレス構成バッファの内部動作のデモをする伝達手段として動作する以外には、有用なことをしない)。
Figure 2009259398
このテスト・アルゴリズム・ステップには、6つの操作(OP0、OP1、・・・、OP5)がある。このアルゴリズム・ステップは、この例では、全部で5つのループからなる。5つの操作の全てが、第1のループを形成する。操作OP1、OP2、及びOP3が、第2のループを形成する。操作OP1が、第3のループを形成する。操作OP2及びOP3が、第4のループを形成する。操作OP4及びOP5が、第5のループを形成する。
第1のループが、他の全てのループを入れ子にする。第2のループが、第3及び第4のループを入れ子にする。3レベルの入れ子ループが同時発生する。第3及び第4のループは、第2のループと第1のループとの内側で入れ子になっている。
5.3.1.1 命令のロード
メモリ・テスト・ステップ命令の実行は、ループに基づく。第1の完全なループが遭遇されると、ただちに、そのループ内のメモリ・アクセス操作の実行と、そのループ自体とがトリガされる。このようにして、ループの実行が実動作速度で行われるが、ループ間では、更なる命令群が命令バッファから転送され、デコードされるために、遅延がある可能性がある。
アドレス/ループ構成命令がデコードされると、デコードされた情報が、アドレス構成バッファ502(図8)に入れられる。この情報は、この例では、アドレスが、ループ全体に対してどのように操作及び生成されるかを決定する。そのループのための第1のメモリ・アクセス操作は、命令バッファ500に入れられ、ループが実行可能になるためにはアドレス構成バッファ内の情報に従ってアドレス・レジスタがセット・アップされることが必要であるとしてマーキングされる。後続のメモリ・アクセス操作が、命令バッファに追加される。制御/ループ構成命令が遭遇されると、命令バッファ内の最後の命令が、(ループ内の最初の命令に戻る)ループ反復ジャンプ・アドレスとともに、ループを終了させるとしてマーキングされる。
この例では、テスト・アルゴリズム・ステップのメモリ・アクセス操作OP1は、第2
及び第3のループの両方における最初の操作である。このため、操作OPIの実行の前に両方のループが初期設定されることが必要である。この情報は、命令バッファ内に、操作と並んで格納される。
OPレベル・バッファ510(図9)は、操作が中に含まれるループの最高レベルを格納する。命令バッファ514は、アルゴリズムのメモリ・アクセス操作そのものを格納する。初期設定インデックス・バッファ520は、対応する操作で始まるループの番号を格納する。初期設定が不要であることを示す場合は、全て1である値(このケースでは十進数の7)が用いられる。最終初期設定バッファ522は、対応するループが、初期設定されるべき最後のループかどうかの情報を格納する。
この例では、操作OP0は、第1のループ(ループ・レベル0)にあり、初期設定される必要がある。操作OP1は、第2及び第3のループ(ループ・レベル1及び2)の先頭であり、ループ・レベル1及びループ・レベル2の両方が初期設定される必要がある。操作OP3については、初期設定は不要である。
ジャンプ・アドレス・インデックス・バッファ540(図10)内の値は、操作が1つ又は複数のループの最後かどうかを示す。ここでも、全て1である値(このケースでは十進数の7)が、このメモリ・アクセス操作の後にジャンプが不要であることを示す。他の値は、ジャンプ・アドレス・バッファからジャンプ情報をフェッチするためのアドレスを示す。ジャンプ・アドレス・バッファ542は、現在のループの次の反復時のジャンプ先となるインデックスを命令バッファに格納する。最終ループ・バッファ544内の対応する値は、ループが、その操作のために実行されるべき最後のループかどうかを示す。
この例では、操作OP0は、ループの最後ではない。しかしながら、操作OP1は、ループの最後であり、そのループの次の反復は、操作OP1(命令バッファの要素1)から始まり、最終ループ・バッファは、操作OP1が1つのループだけの最後の操作であることを示す。
操作OP3についての情報は、もう少し複雑である。この操作は、ループの最後であり、次の反復は、命令バッファの要素2(操作OP2)から始まる。最終ループ・バッファは、この操作が別のループも終了させ、現在のアドレス反復が完了したときにテーブル内の次のエントリが使用されることを示す。これにより、命令バッファの要素1(操作OP1)にある操作にジャンプすることによって、外包ループの次の反復が実行される。これは、OP3の後に実行されたループ反復を終了させる。
5.3.1.2 ループに入る
命令バッファから操作が読み出されると、現在の操作から始まる1つ又は複数のループについて、初期設定が必要かどうかがチェックされる。ループに入ることとそのループの最初の操作を実行することとの前に実行される必要がある、デコードされたアドレス構成命令群が、その最初の操作に関連付けられる。操作は複数のループの開始操作であることが可能なので、操作に関して初期設定されることが必要なループが複数あってもよい。前述のテスト・アルゴリズム・ステップの例では、メモリ・アクセス操作OP1は、第2及び第3のループの両方における開始操作である。従って、これらのループは、初期設定される。このことはまた、ループの各入れ子レベルに対して少なくとも1つのアドレス・レジスタを設けることが望ましいことを示している。
必要な全ての入れ子ループが、それぞれ、適切に初期設定されたアドレス・レジスタを有するようにするために、以下の例示的手順が用いられる。
・最初に、全てのレジスタが、初期設定されていないとしてマーキングされる。
・初期設定インデックス・バッファが、初期設定される必要がある開始ループ番号を示す

・初期設定されていない各アドレス・レジスタが、アドレス構成バッファにある情報を用いて初期設定される。
・ループが反復される。
・ループが完了すると、アドレス・レジスタは、初期設定されていないとしてマーキングされる。
1つの操作が複数のアドレス・ループの開始操作になることが可能なので、ループ初期設定の処理をスロー・ダウンさせないように、ループが初期設定されているかどうかを素早く判別する方法を備えることが望ましい。前述の例では、操作OP1は、第2及び第3のループ(入れ子ループ・レベル1及び2)の両方の開始操作である。第2のループの実行時に、第2又は第3のループが初期設定されているかどうかを判別するために余分なサイクルを費やさないことが望ましい。実行レベル・レジスタを用いて、現在実行されているループ・レベルを示すことが可能である。実行レベルが、OPレベル・バッファに収容されている、操作のOPレベル値と同じであれば、ループの初期設定は不要であり、このことは既知である。これに対し、実行レベルがOPレベルより低い場合、この例では、ループが実行される前に、初期設定されていないループ・アドレス・レジスタに対して初期設定が実行される。この初期設定が完了すると、この例では、実行レベルがループのOPレベルに調節される。
前述の例の場合は、操作OP1が最初に読み出されると、実行レベルは0であり、これに対して、操作OP1のOPレベルはレベル2である。従って、ループの初期設定が必要である。第2及び第3のループ(入れ子ループ・レベル1及び2)が初期設定されると、実行レベルが2に設定される。この場合、第3のループは、実行レベルがループの完了前の操作OP1のOPレベル・バッファと等しいので、初期設定なしで連続的に実行されることが可能である。
ループ内のメモリ・アクセス操作が実行されているときに、その操作に関して、ジャンプ・アドレス・インデックス・バッファ542(図10)が読み出される。この値は、この操作がループ内の最後の操作であるかどうか、並びに、最後の操作であれば、ループの次の反復のためにどのような操作が続くべきかを決定するために用いられる。ループ内の最後の操作により、アドレス・レジスタが、次のアドレス値に更新される。
5.3.1.3 ループから出る
ループが終了すると、この例では、実行レベルが1だけ戻り、ループのアドレス・レジスタが、初期設定されていないとしてマーキングされる。同じ操作に対して複数のループを終了させることが可能なので、この例では、プログラマブルMBISTコントローラが、ジャンプ・アドレス・バッファ及び最終ループ・バッファの中の値を通って、設定されている最終ループ・バッファ値に遭遇するまで、各ループを次の反復に進めようとするか、そのループを終了させようとする。
5.3.2 アドレス構成バッファ
アドレス構成バッファ502(図8)は、テスト・アルゴリズム・ステップに必要な全てのループについて、アドレス・ループに関係する、部分的にデコードされた情報を追跡する。構成命令バッファと同様に、アドレス構成バッファ内の情報は、テスト・アルゴリズム・ステップ内のアドレス・ループ構成命令群が遭遇されたときに構築される。アドレス構成バッファ502の全内容は、一実施形態では、最も外側のアドレス・ループの最後が処理された後にのみ、使用可能である。
このブロック502の一例示的形態には、次の2つの別個のバッファがある。
1.アドレス・バッファ。これは、各アドレス・ループに対応する、部分的にデコードされたアドレス・スキームを収容する。
2.関係バッファ。これは、各アドレス・ループに対応する、部分的にデコードされたアドレス関係値を収容する。
これらの値のフィル・デコードは、様々であってよいが、望ましくは、対応するループが初期設定されているときか、ループ反復が行われて、アドレス・レジスタ値が次の値に進められているときのみ、行われる。
5.3.3 アルゴリズム命令デコーダ
アルゴリズム命令デコーダ504は、図8による一実施形態では、現在実行されている、命令バッファ500からのメモリ・アクセス操作命令を完全にデコードする。このデコード情報は、制御ジェネレータによって実行されているメモリ・アクセス操作に対応するメモリ制御信号アクティベーションの生成をトリガするために用いられる。
5.3.4 アドレス構成デコーダ
アドレス構成デコーダ506は、図8による一実施形態では、アドレス構成バッファ502に格納されているアドレス構成命令を完全にデコードする。この情報は、アドレス・ジェネレータによって使用される。
5.4 アドレス・ジェネレータ
図11に示された、例示的形態のアドレス・ジェネレータ600は、(この例では3に等しい、入れ子ループの最大数に対応する)3レベルの602、604、606を有し、更に、次の2つの主要機能を有する。
1.インター反復アドレス生成。アドレス反復ループによって使用される現在及び次のアドレス値の生成(ブロック610)。これは、この例では、ループのアドレス構成命令群によって決定される。これを制御するために、アドレス構成バッファ502(図8)にある、部分的にデコードされたアドレス/ループ構成命令値及びアドレス/関係構成命令値の両方が用いられる。
2.イントラ反復アドレス生成。アドレス反復ループ(ブロック620)内の各メモリ・アクセス操作に関して、メモリに適用される実際のアドレスの生成(ブロック630)。メモリ・アクセス操作のアドレス・レベル・フィールド及びアドレス操作フィールドは、この例では、操作に用いられるメモリ・アドレスを構築するために用いられる。このアドレスは、オプションで、ビット極性を与えられることも可能である。
実際のメモリ・アドレスは、メモリ・アクセス操作について指定されるアドレス・レベル、並びにアドレス・ループについて指定される関係に応じて、図12に示されるような、他のアドレス・ループのアドレス・レジスタ値に依存することが可能である。この図12の図によって例示されるような一具体例では、ループ・レベル0のアドレス・レジスタ値が、ループ・レベル0の全ての操作によって直接使用されることが可能であり、他の全てのループ・レベルのメモリ・アクセス操作によって使用されるアドレス値に寄与することが可能である。ループ・レベル1のアドレス値は、ループ・レベル1又はループ・レベル2のメモリ・アクセス操作によってのみ使用されることが可能である。
ループ又はアルゴリズム・ステップの全範囲にわたる操作のためのアドレス生成ハードウェア700(図11のインター反復ブロック610)の実施形態の詳細図を、図13に示す。以下のように、ハードウェア動作を高速化するために用いられる、オプションではあるが望ましい幾つかの方法があることに注意されたい。(1)実行中のループのアドレスを別のアドレス・レジスタにコピーし、それが更新されたアドレスを元のアドレス・レジスタに書き戻すことが可能である。(2)キャリーを事前計算してハードウェアを高速化することが可能である。(3)基準アドレスを登録することが可能である。(4)アドレス生成を制御する制御信号を登録することが可能である。
イントラ反復アドレス生成の機能は、図3Aのアルゴリズム命令のビット[4:3]によって決定される。これは、現在のアドレス、現在のアドレス±1インデックス、又は現
在のアドレスの反転であることが可能である。一例では、テスト・プログラムにおいて、アドレス・インデックスがロードされる。インデックスのデフォルト値は、例えば、「1」に設定される。例示的イントラ反復アドレス・ジェネレータ750(図11のブロック620)の高レベル図を、図14に示す。レベルnは、アルゴリズム命令で指定されることが可能である。
5.5 データ・ジェネレータ
データ・ジェネレータ300(図4)は、一実施形態では、次の機能を実行する。
・現在のクロック・サイクルにおいて現在のメモリ・ロケーションに書き込まれるべきデータ値を生成する。
・現在のメモリ・ロケーションから読み出されたデータが使用可能になったときに比較されるべき適正な期待データを生成する。
読み出し及び書き込みの操作はパイプライン化されることが可能なので、適正な期待データを生成することは、より複雑になる。MBISTコントローラは、生成された期待データと、1クロック・サイクル以上(例えば、数クロック・サイクル)早くメモリに実際に書き込まれたデータとが突き合わせされることを保証する。これは、一例では、メモリ読み出し値が使用可能になったときに、比較に備えて待機している比較器パイプラインにデータ・パターン番号及び反転状態を送り出すことにより、行われる。比較器は、これらの値をデコードして、実際の期待値を決定する。
サポートされている、様々なタイプのデータ生成スキームを、以下に列挙する。全てのケースにおいて、データ・バックグラウンド及びデータ・バックグラウンドの反転の両方がサポートされる。プログラマブルMBISTコントローラは、他のデータ生成スキームもサポートするように拡張されることが可能である。
1.Marchアルゴリズムの場合は、塗りつぶしの「0」及び「1」のデータ・バックグラウンドのほかに、ユーザは、全部で(logw+1)個の異なるバックグラウンドの中から、使用可能な任意のバックグラウンドを指定することが可能である(wはデータ・ワードの幅)。
例えば、データ・サイズが8ビットであるメモリは、以下の4個のエンコードされたデータ・バックグラウンドを有することが可能である(更に、それらのデータ・バックグラウンドの反転も使用可能になる)。
0 00000000
1 01010101
2 00110011
3 00001111
2.Checkerboardアルゴリズムの場合は、トポロジカル・データ・バックグラウンド「01...01」及びその反転が必要とされる。実際のデータ値は、アドレスに依存する。
3.行ストライプ及び列ストライプ・アルゴリズムの場合は、メモリの偶数アドレス及び奇数アドレスに基づいてデータが生成される。行ストライプ・アルゴリズムでは、例えば、1回の実行で、偶数行に「11...11」が書き込まれ、奇数行に「00..00」が書き込まれる。第2の実行では、データ・バックグラウンドが反転される。同様に、列ストライプ・アルゴリズムでは、交互の列がそれぞれ全て1及び全て0を有するようにデータが書き込まれる。
4.一意データ・アルゴリズムの場合は、対応するメモリ・アドレスが、全てのメモリ・ロケーションの一意データとして用いられる。
5.6 制御ジェネレータ
制御ジェネレータ500(図4)の役割は、この実施形態では、現在のメモリ・アクセス操作に必要な全ての制御信号を生成することである。これは、最高速度の同期メモリの場合には、部分的にデコードされたメモリ・アクセス操作の命令値によって直接駆動される、シンプルなメモリ制御信号アサーションである。非同期メモリのような、他の場合は、状態カウンタを用いて、カウンタ状態に基づいて制御信号をアクティベーションすることが可能である。
制御信号のマスキングも、このブロックの中で実行されることが可能である。
5.7 出力応答アナライザ
出力応答アナライザ450は、この実施形態では、メモリから読み出されたデータと、コントローラから生成された期待データとを比較する。望ましい一形態では、出力アナライザは、その2つの値を比較する比較器を備える。メモリの幅が非常に大きい場合は、比較器のロジックの深さが大きくなり、従って、実動作速度のMBIST操作を保証するためにパイプライン段が挿入されることが可能である。
比較パスにおけるデータ幅を減らすために、データ・スライスを用いることも可能である。これが行われた場合は、適用範囲が完全になるように、各スライスに対して同じアルゴリズム・セットが繰り返されることが望ましい。一アプローチでは、データ・スライス・アルゴリズムの実行時に、全ての書き込み操作が、メモリ・データ・ワードの全幅に対して動作し、出力応答解析だけがスライスされる。
6.0 選択されたアルゴリズムの例示的擬似コード
図3及び表3において前述されたような、提案されたプログラマブルMBISTコントローラの命令について、プログラマブルMBISTコントローラが(例えば、フィールド・プログラミングにより)サポートできる、幾つかの例示的アルゴリズムの擬似コードを、以下に示す。
Figure 2009259398
Figure 2009259398
Figure 2009259398
Figure 2009259398
7.0 選択されたアルゴリズムの追加の例示的擬似コード
図3A及び表4において前述されたような、提案されたプログラマブルMBISTコントローラの命令についての、プログラマブルMBISTコントローラが(例えば、フィールド・プログラミングにより)サポートできる、例示的アルゴリズムの擬似コードは、自明であろう。例えば、march1、march2、march3、col_march1、unique、checkerboard、Rom1、Rom2、galloping、アドレス・デコーダPMOS開放、及び既に説明されたものを含む他のアルゴリズムは、このアーキテクチャを用いて実装されることが可能である。サポートされることが可能な、チェッカーボード・タイプのアルゴリズムの一具体例は、保持CBアルゴリズムであって、これは、以下に示すような擬似コードで表される。
Figure 2009259398
8.0 プログラマブルMBISTコントローラの代替実施形態
以下の代替実施形態では、図3、表3、及びセクション4に関連して前述された基本又は第1の実施形態[以下、「基本実施形態」と呼ぶ]と比較して、より柔軟なアドレス・スキームと、より多くのレベルのループとが可能になる。更に、ループ制御が、基本実施形態より柔軟になる。柔軟性は、図3A、表4、及びセクション5に関連して前述された実施形態によっても示されている。
前述の基本実施形態では、2レベルの入れ子ループ(ベース・ループ及びローカル・ループ)が可能であり、ベース・ループにはローカル・ループが1つだけ含まれることが可能である。このアプローチは、Marchアルゴリズム、Galloping/Walkingアルゴリズム、アドレス・デコーダPMOS開放故障用テストなど、多くのアルゴリズムに対応する。ButterflyアルゴリズムやSliding diagonalアルゴリズムのような、マルチローカル・ループを有するアルゴリズムの場合は、マルチローカル・ループを実装するためにマルチ・サイクル命令が用いられる。例えば、Butterfly読み出しやSliding Diagonal読み出しのような命令は全て、複雑な読み出し操作を実行するために用いられることが可能である。
この代替設計の実施形態では、それらのマルチ・サイクル命令は、柔軟性を高めることと、全てのアルゴリズムがシンプルな読み出し操作及び書き込み操作で構成されることを可能にすることとのために、除去されることが望ましい。この代替アプローチによれば、3レベル以上のループを有し、入れ子になっている全てのループが異なるアドレス・スキームを有することが可能であるアルゴリズムを、プログラマブルMBISTコントローラがサポートすることが可能になる。以下では、異なるループにあるアドレスを参照することを可能にする、望ましいアプローチを開示する。
これまでと同様に、命令は、2つのタイプ、即ち、構成命令とアルゴリズム命令とに分けられることが望ましい。構成命令は、テストがどのように実行されるかを定義し、アルゴリズム命令は、操作がどのように実行されるかを定義する。これらの代替実施形態と、既に説明された基本実施形態との違いは、主に、ループ操作にある。そこで、以下の説明は、ループ操作に焦点を当てる。また、以下では、これらの実施形態において異なる、他の選択された構成要素についても、簡単な比較を行う。
複雑なマルチループ・フィールド・プログラマブルMBISTコントローラをサポートする命令の例示的な定義を、以下の表5及び6に示す。より具体的には、表5は、例示的アルゴリズム命令ワードの更に別の代替形態を示し、表6は、例示的構成命令の別の代替形態を示す。
Figure 2009259398
Figure 2009259398
表5及び6から明らかなように、これらの代替実施形態の例示的構成命令セット及びアルゴリズム命令セットは、基本実施形態並びに図3A及び表4の実施形態に関連して前述された命令構成と非常によく似ている。
これらの代替実施形態と、既に説明された基本実施形態との間の、構成命令セットの主な違いは、アドレス構成にある。表5及び6の代替実施形態では、ベース・ループ及びローカル・ループを構成する代わりに、テスト・ステップ内の全てのループが構成されることが望ましい。アドレス構成には2つのタイプがある。アドレス方向とアドレス関係とである。アドレス方向命令は、この例では、アドレス変更の順序を指定し、アドレス関係命令は、この例では、異なるレベルのアドレス間の関係を指定する。表4の例には、どのような2レベルのアドレスが関係を有するかを示す、LEVELという1ビットがあり、「0」は、レベル0アドレスを示し、「1」は、現在のループを直接入れ子にするループのアドレスを示す。
この例では、更に3つの追加命令、即ち、ループ制御と、最終ループ定義と、ループ初期設定とがある。3つとも、マルチワード命令である。
例示的ループ制御命令は、ジャンプ・アドレスと各ループのレベルとを指定する構成をロードする。ループ制御命令に続くワードは、一具体例では、次の形式を有する。
Figure 2009259398
この例では、最上位の3ビットは、操作番号を指定し、次の3ビットは、現在の操作のジャンプ・アドレスを指定し、次の2ビットは、最終操作が現在の操作であるループのレベルを示し、最終ビット(「最終ワード」)は、そのワードが、その構成命令の最後の構成ワードかどうかを示す。
最終ループ定義命令は、この例では、2ワード命令である。最終ループ定義構成命令に続くワードは、ループが、操作に関連付けられた最終ループかどうかを指定する(1つのループにつき1ビット)。
ループ初期設定命令は、この例では、初期設定が必要なループを指定する。ループ初期設定命令に続くワードは、一具体例では、次の形式を有する。
Figure 2009259398
この例では、最上位の2ビットは、使用されず、次の3ビットは、操作番号を指定し、次の3ビットは、現在の操作で始まる、初期設定を必要とするループを指定し、最終ビット(「最終ワード」)は、そのワードがループ初期設定命令の最終ワードであることを示す。
これら表5及び6の代替実施形態の例示的アルゴリズム命令では、ビット8及びビット7が、ループがある最大ループ・レベルを指定し、これは構成変更に用いられ、ビット6及びビット5が、命令内の操作が実行される対象のアドレスのレベルを指定し、ビット4及び3が、操作が実行される対象の実際のアドレスを指定し、これは、ビット6及びビット5で指定されるレベルのアドレスであるか、そのアドレス±インデックスであることが可能であり、最下位の3ビットは、既に説明されたアルゴリズム命令と同じ意味を有する。
これらの、表5及び6のアルゴリズム命令及び構成命令の代替形態は、例として与えられ、変形可能である。
8.0.1 ループ操作
命令バッファは、望ましくは埋め込まれ、テスト・ステップをホールドすることが可能である。テスト・ステップは、複数のループを収容することが可能である。従って、ループの境界と、ループの始めと終わりとを定義するアプローチが提供される。ループの適正な初期設定及び実行も達成される。
設計概念については、以下のような具体例を参照すると、理解できる。
次のように書くことができるテスト・ステップ(図15)が与えられるとする。
(OP0,((OP1),(OP2,OP3)),(OP4,OP5))
これは、セクション5.3.1で前述されたものと同じ例であるが、このアプローチでは、以下に説明するように、(ループ)の番号の付け方が異なる。
このステップには、6つの操作(OP0、OP1・・・OP5)がある。この例では、ブラケットの各ペアがループを形成する。この場合のテスト・ステップは、5つのループからなる。ループ0及びループ1は、ループ2内の入れ子であり、ループ2及びループ3は更に、ループ4内の入れ子である。明らかに、この例のステップには3つのレベルがある。ループ0及びループ1は、レベル2にあり、ループ2及びループ3は、レベル1にあり、ループ4は、レベル0にある。
この例では、テスト・ステップの構成は、構成バッファにロードされ、アルゴリズム命令は、命令バッファ800(図16)にロードされる。テスト・ステップが実行される場合、構成バッファ810内の構成は、ループがどのように反復されるか、並びに、ループのどのアドレス・スキームが使用されるべきかを定義する。
この例では、各ループについて、次の構成がある。(1)開始操作及び終了操作、(2)ループのレベル、(3)ループのアドレス・スキームである。
8.1 ループに入る
命令バッファ800から読み出し操作が読み出されると、現在の操作から始まる1つ又は複数のループについて、初期設定が必要かどうかを調べる第1のチェックが実行される。ループに入る前に実行される必要がある構成は、この第1の操作に関連付けられる。操作は複数のループの開始操作であることが可能なので、操作に関して実行されるべきループ構成が複数あってもよい。例えば、図15のOP1は、ループ0及びループ2の両方の開始操作である。従って、ループ0及びループ2の両方の構成が実行されなければならない。これはまた、このアプローチにおいて、各レベルに少なくとも1つのアドレス・レジスタがあることが望ましい理由でもある。
初期設定を実行するかどうかを決定する例示的メカニズムは、次のとおりである。即ち、全てのレベルのアドレスが、初期設定を要するとしてマーキングされる。次に、現在の操作に関連付けられた構成を用いて、対応するレベルの初期設定されていないアドレスが初期設定され、それらのアドレスが、初期設定されたとしてマーキングされる。その後、それらのアドレスについてループが完了したら、それらのアドレスが、初期設定されていないとしてマーキングされる。
1つの操作が複数のループの開始操作になることが可能なので、ループのテスト(望ましくは、実動作速度のテスト)をスロー・ダウンさせないために、ループが初期設定されているかどうかを素早く判別することが望ましい。例えば、この例のOP1は、ループ0及びループ2の両方の開始動作である。ループ0の実行時に、複数のループ(ループ0及びループ2)が初期設定されているかどうかの判別に特別にテスト・サイクルを費やすことは望ましくないであろう。1つの操作で始まる全てのループが初期設定されているかどうかを調べるための1つのアプローチは、並列ハードウェアを使用することである。テスト・ステップがバッファにロードされるまでは、1つの操作から始まるループの数は不明なので、このアプローチは、操作ごとに多くのロジックを必要とする可能性があり、かなりの量のハードウェア要件につながる可能性がある。より望ましいアプローチは、いわゆる実行レベル・レジスタを用いて、実行されているアドレスのレベルを示すことである。実行レベルが、現在の操作に関連付けられた最高レベル(OPレベルと呼ばれることが可能である)と同じであれば、ループの初期設定は不要であることになる。これに対し、実行レベルがOPレベルより低い場合は、ループが実行される前に、ループの初期設定が必要であることになる。
実行レベルは、初期設定が完了した後に、その操作に関連付けられたOPレベルに設定されることが望ましい。実行レベルは、ループ実行が完了した後に1だけ低くなる。実行
レベルを減らすための初期設定は、ループ実行の前に行われる。
上述の例では、OP1が最初に読み出されたときには、実行レベルは0であり、OP1に関連付けられた最高レベルはレベル2である。従って、初期設定が必要である。ループ0及びループ2が初期設定された後、実行レベルが2に設定され、これによって、ループ0が初期設定なしで連続的に実行されることが可能になる。これは、ループが完了するまで、実行レベルが常にOP1のOPレベルと等しいからである。
ループが実行されているときは、読み出された各命令に対し、ジャンプが必要かどうかのチェックが行われることが望ましい。構成バッファは、ジャンプ操作のジャンプ先である命令バッファ・アドレスを格納する。ループがその最終アドレスにまだ達していない場合、ジャンプ・アドレスは、命令バッファ内の命令をフェッチするための次のアドレスとして動作する。
8.2 ループから出る
この例では、ループから出ることは、構成を変更することも伴う。図15の例では、ループ1の完了後に、処理がループ2に戻る。この場合は、ループ2のためのアドレスが更新されなければならないので、構成は、ループ2について設定される。
8.3 バッファ・アドレス制御
各ループの最終操作に対しては、関連付けられたジャンプ・アドレスが与えられる。ジャンプ・アドレスは、現在のループが完了していない場合にジャンプすべき先のアドレスを指定する。この具体例では更に、ループが、その最終操作が現在の操作である最終ループかどうかを示すフラグが、各ループにアタッチされる。
図17は、上述の例の図を示す。
8.4 アドレス・スキーム構成
1つのテスト・ステップは、複数のループを有することが可能であり、各ループは、異なるアドレス・スキームを有することが可能である。従って、この例の各ループは、その構成をプログラマブルMBISTコントローラに格納することが望ましい。望ましいアドレス・スキームは、この例では、2つの部分、即ち、アドレス方向とアドレス関係とからなる。アドレス方向は、アドレスがどのように変更されるか(例えば、列アドレス指定、行アドレス指定、その他)を指定する。アドレス関係は、アドレスが別のアドレスとどのように関連付けられるかを指定する(例えば、特定レベルのアドレスは、より低いレベルの別のアドレスの関数であることが可能である(図12を参照))。例えば、ループ0(レベル2)内のアドレスは、ループ4(レベル0)内のアドレスの関数であることが可能である。しかしながら、この例では、ループのアドレスは、より高いレベルのループを入れ子にしない、より低いレベルのループの中のアドレスの関数にならないことが望ましい。例えば、ループ1内のアドレスは、ループ3内のアドレスの関数にならない。この場合、アドレスがレベルL−1のループにあれば、アドレスの関係の最大数は、L−1である。多くの現実的又は実用的なアルゴリズムでは、このループ関係は、より一層簡略化される。例えば、場合によっては、レベル0のループと、現在のループを直接の入れ子にするループとにのみ、アドレスが関連付けられることがある。このような場合は、ループ関係が2つだけであり、命令設計は簡略化される。
アドレス・スキームの総数が16であり、ステップ内のループの総数が8である場合、全てのアドレス命令を記録するのに必要なレジスタの数は、128である。オーバヘッド要件を減らすために、アドレス構成命令は、プリデコードされる必要はない。このプリデコードは、48個のレジスタを使用するであろう。この場合、アドレス構成命令は、必要な場合(例えば、ループに入り、ループから出る場合(図18を参照)のみデコードされる。
8.5 構成変更制御
8.5.1 初期設定
ループに入る場合は、一般に初期設定が必要である。図19は、ループの開始操作に初期設定構成インデックスをアタッチすることを伴うアプローチを示す。例えば、OP2に達した場合である。
8.5.2 ループから出る
ステップ内のループは、それぞれの最終操作によって順序付けられることが望ましく、構成は、同じ順序で構成バッファに格納されることが望ましい(例えば、図20の構成バッファ880を参照)。このアプローチでは、ループから出たときに、次の構成が、必ず、構成バッファ内の次の構成である。例えば、ループ0が完了すると、処理は、自動的にループ2に移動する。
8.6 追加サイクル
上述の説明から明らかであるように、これらの、後の方の代替実施形態の図示されたアプローチでは、ループに入るときとループから出るときとに、追加のテスト・サイクルが必要である。つまり、ループが別のループを入れ子にしない場合は、最高速度のテストが実現されるが、ループが別のループを入れ子にする場合には、これらの、後の方の代替実施形態のループ間で、最高速度より若干遅い速度のテストが実現される。
8.7 アドレス・ジェネレータ
どのレベルのアドレスも、より高いレベルのループで用いられる可能性があるので、ループの各レベルに対して、少なくとも1つのアドレス・レジスタが用いられることが望ましい。(例えば、図18の850のように)各レベルに対して1つのアドレス・レジスタが用いられることが望ましいが、減算や加算のような演算のためのアドレス・ロジックは、異なるレベルのアドレス・レジスタ間で共用されることが可能である。レベルの数が増えるにつれ、ロジックの共用は、速度低下をもたらす。そのため、各レベルに対して少なくとも1つのアドレス・ジェネレータを有することが、非常に望ましい場合がある。
8.8 他の部分
命令デコーダ、制御信号ジェネレータ、データ・ジェネレータ、レイテンシ調節器、及び出力応答アナライザのメカニズムは、既に説明された基本実施形態と同様であってよく、従って、本明細書のこの部分では、詳細には説明しない。
9.0 ATEとの相互作用
一例示的実施形態によれば、命令は、複数のブロックに分けられることが望ましい。各ブロックは、1つのタイプの命令(構成命令又はアルゴリズム命令)だけを含むことが望ましい。
構成命令のブロックは、アルゴリズム命令が間にない、連続する構成命令のシーケンスを含むことが望ましい。アルゴリズム命令のブロックは、(アルゴリズムの最初のブロックでない場合は)構成ブロックに進むことが望ましく、別のブロックは、(アルゴリズムの最後のブロックでない場合は)構成ブロックに続くことが望ましい。
アルゴリズム命令のブロックは、通常、1つのテスト・ステップを含む。しかしながら、例えば、現在のステップに続くステップが操作を1つしか有しない場合、そのステップは、ブロックを形成するために現在のステップと結合されることが可能である。
命令は、命令メモリが満杯でない限り、まず命令メモリにロードされることが望ましい。
命令メモリ内の命令は、その後、デコードされ、分類されてから、構成デコーダによってデコードされるか、命令バッファにロードされる。1つのブロックが処理されると、ロード要求がATEに送られることが望ましい。ATEは、まだロードされていない命令が残っていれば、追加データを命令メモリにロードする。
その一方で、命令バッファに命令があれば、テスト・ステップが実行されることが望ま
しい。結果として、命令をロードする時間は、実質的に隠される。ATEの命令ロードによる干渉を避けるために、ATEによってロードが実行されているときは、命令メモリから読み出された命令が、NOPに設定される。
望ましい形態のフィールド・プログラマブルMBISTコントローラのロード要求は、ブロック・ベースであること(例えば、1つのブロックが処理された後に、MBISTコントローラによってロード要求が発行されること)が望ましいことに注意されたい。ATEから命令メモリへのロードでは、ブロック全体を命令メモリにロードする必要はない。
ATEが命令メモリにロードできる命令の数は、例えば、プログラマブルMBISTコントローラによって処理されたばかりの命令の数によって決定されることが可能である。この数を決定することには、次のような、2つの例示的バージョンがある。
(1)これらの数は、ATEにロードされるファイル(block_bound)に格納される。このバージョンでは、命令メモリ全体がシフト・レジスタ890を含み、命令はメモリにシフト・インされる(図21)。或いは、
(2)この数は、ブロックが読み出されたときに、プログラム・カウンタ(PC)から直接進めされる。その後、プログラマブルMBISTコントローラは、命令メモリが再度満杯になるまで、ATEからのロードを要求する。このバージョンでは、9ビットのシフト・レジスタが1つしかない。1つの命令がまずシフト・レジスタにシフト・インされ、その後、その命令は、命令メモリ内にクロッキングされる(図22の896を参照)。
以下の状況の場合を除き、命令のロード時間は、テスト・ステップ内に隠される(テスト・ステップに必要な時間より短いか等しい時間で実施される)。
(1)命令が最初に命令メモリにロードされる場合。
(2)シンプルな方向構成命令以外の構成ブロックが、2つのアルゴリズム・ブロックの間に位置する場合。
(3)ブロックをロードする時間が長すぎて、1つのテスト・ステップを終了するのに必要な時間より長い時間がロードに必要な場合。
第3のカテゴリを生み出す状況の一例は、次のとおりである。
BISTクロック周期がPbであり、ATEクロック周期がPaであり、アドレス範囲がRであり、命令のワード・サイズが9ビットであるとする。この状況が最も起こりやすいのは、実行されるステップが操作を1つしか含まない場合である。命令メモリにロードされることが可能な命令の数をNとすれば、Nは次式を満たさなければならない。
N*9*Pa<Pb*R
例えば、N<(Pb/Pa)*R/9
この例は、異なる2つのクロックの間の同期時間を考慮していない。比Pb/Paは、常に1以下である。この比が小さいほど、テストに必要な時間を超えるロードに必要な追加時間を用いずに命令メモリにロードされることが可能な命令の数が少なくなる。即ち、ATEとBISTとの間の速度の隔たりが大きすぎる場合は、命令のロードの完了を可能にするために、テストを一時停止しなければならない可能性がある。
プログラマブルMBISTコントローラ用外部インターフェースを用いて、MBISTコントローラの、ATEとのハンド・シェイク・プロトコルを決定することが可能である。具体的には、相互作用スキームの複雑さは、MBISTコントローラ内の命令メモリのサイズに依存する。このセクションでは、命令メモリのサイズに制限があると仮定して、アルゴリズムの一部が任意の時点でメモリ内に常駐することと、MBISTコントローラが、命令バッファにロードされた命令のサブセットを用いて操作を開始することとを可能にする汎用インターフェースについて説明する。
この実施形態では、BISTセッションを開始するために、ATEからMBISTコントローラに「mbist_start(MBIST_開始)」信号が配信される。同様に、この例では、MBISTコントローラに対して「stop(停止)」信号をアサートして、アルゴリズムの終わりを通知するために、命令セット内の「停止」命令が利用される。更に、この具体例では、MBISTコントローラは、以下の3つの状況において、ATEと相互作用を行う。
1.ATEが、命令を命令メモリにロードする必要がある。
2.MBISTコントローラがATEに診断データを送っている。
3.保持テストが進行中であり、MBISTコントローラが再開信号を待っている。
9.1 テスト・アルゴリズムのロード
9.1.1 自走メモリ・ロード・クロック
この実施形態でのATEの役割は、MBISTコントローラの命令メモリに命令をロードすることである。命令メモリは、任意のサイズであってよく、所与のアルゴリズムの面積オーバヘッドとテスト適用時間との間で最適になるように選択されることが可能である。この例では、命令を命令メモリにロードするために、ATEによって用いられることが可能な信号が3つあり、それらは、load_clock(ロード・クロック)、load_enable(ロード・イネーブル)、及びload_data(ロード・データ)である(図23)。load_clock信号は、MBISTコントローラ内の診断クロックによって共用されることが可能であり、load_data信号は、この例では、実際の命令データをコントローラに与える、単一ビットのシリアル入力である。load_request(ロード要求)信号は、MBISTコントローラによって使用され、ATEが命令のロードを開始できるようになったことを、ATEに通知する。
この例では、命令メモリのサイズがアプリオリに知られているので、ATEは、最初に命令メモリを満杯にする。MBISTコントローラは、命令メモリ内の命令のデコードを開始し、アルゴリズム命令を内部命令バッファにロードする。この手順は、ループ境界が遭遇されるまで、或いは、命令メモリ内の全ての命令のフェッチが完了するまで、続行される。この例では、MBISTコントローラは、以下の2つの状況において、load_request信号をアサートすることによって、追加命令をATEに要求する。
a)「ループ・オフセット」命令の後に非ループ・オフセット命令が見つかった。
b)命令メモリ内の全ての命令のフェッチが完了している。
この例のロード手順の波形を、図24に示す。block_read_done(ブロック読み出し完了)がアサートされ、load_clockによって同期されると、load_request信号がアサートされる。load_enableは、命令をロードするために、ATEによってアサートされる。MBISTコントローラは、ATEからのロードを検知すると、block_read_done信号をデアサートする。命令メモリが満杯になると、load_request信号がデアサートされ、ATEが、load_enableも同様にデアサートする。この波形例では、load_requestとload_enableとが同時にアサートされているが、ATEがload_request信号を検出するのに時間がかかるため、load_enableは、ずっと後にアサートされてもよい。
9.1.2 オン・デマンドのメモリ・ロード・クロック
この例では、命令を命令メモリにロードするために、ATEによって用いられる信号が2つあり、それらは、load_clock及びload_dataである(図25)。load_data信号及びload_request信号は、例えば、前述と同様であってよい。
load_request信号は、この例では、命令メモリが空の場合のみアサートされる。ATEが命令メモリを満杯にし始めるのは、load_request信号がアク
ティブなときだけである。ATEが命令をロードしているのをコントローラが検知すると、load_request信号がデアサートされる。
ATEは、この例では、実際の命令データをコントローラに送る前に、同期シーケンス「01」を送り、これによって、MBISTコントローラが、命令データがシフト・インされることを確認できる。
ATEは、MBISTコントローラに送られるload_clockのクロック・サイクル数を制御することが望ましく、これは、少なくとも、命令メモリ内のビット数に3を加えたものでなければならず、そのうち、2サイクルは、同期シーケンス用であり、1サイクルは、命令ワード全体が一時シフト・レジスタにシフト・インされた後にデータを一時シフト・レジスタから命令メモリに動かすために用いられる。MBISTコントローラは、この例では、より多くのクロック・サイクルが送られても、それらが同期シーケンス(「01」)でない限り、正常に動作する。
図25のインターフェースのためのプロトコルの場合の波形を、図26に示す。
9.2 診断モニタ
一実施形態では、必須ではないが、診断データを取り込み、故障データをATEにシフト・アウトするために、診断モニタが用いられることが望ましい。一形態では、診断モニタは、一方がBISTクロック・ドメインで動作し、もう一方が診断クロック・ドメインで動作する、2つの有限状態機械(FSM)を備えることが望ましく、それらだけで構成されることが更に望ましい。以下では、この2つのFSMについて説明する(図27及び28を参照)。
9.2.1.cont_state(BISTクロック・ドメインFSM)
CONT_IDLE(制御_アイドル)状態のcont_state(制御状態) FSMによって故障が見つかると、このFSMは、CONT_SCAN(制御_スキャン)状態に移り、diag_state(診断状態) FSMに向けてstart_diag(診断開始)信号を発行する。診断データがシフト・アウトされると、同期しているdiag_done(診断完了)信号がdiag_state FSMから送られる。この信号により、cont_state FSMは、CONT_SCAN状態からCONT_SYN(制御_同期)状態に動く。同期した信号diag_doneがローになり、リスタート信号(int_restart)がアサートされると、CONT_SYN状態がCONT_IDLE状態に戻る。これは、start_diagがローになり、diag_state FSMによってイベントが確認されているが、同時に、第2の故障が検出されたことを示す。しかしながら、CONT_SYN状態においてリスタート信号がアサートされない場合、cont_stateは、CONT_REC(制御_記録)状態に入る。この場合、状態機械は、リカバリ・サイクルが指定の数になるまで待機する。このFSMがCONT_REC状態にあるときに故障が検出された場合、FSMは、再度CONT_SCANに入って、CONT_REC状態において検出された最初の故障をシフト・アウトするか、CONT_IDLE状態に戻る。
リカバリ・サイクルは、プログラマブルMBISTコントローラの生成時に、ユーザによって制御されることが可能である。これらのサイクルは、ATEにとって、fail_flag(故障フラグ)が適正にサンプリングされることが可能であるよう十分に長くなければならない。
MBISTコントローラFSMがCONT_SCAN状態又はCONT_SYN状態にあって、新たな故障がMBISTコントローラによって検出された場合、或いは、MBISTコントローラFSMがCONT_REC状態にあって、複数の故障が検出された場合には、リスタート信号がアサートされる。これは、リスタート手順を導き、それによって
、セクション9.2.2で後述されるセーフ・ポイントからアルゴリズムの実行が開始される。
9.2.2.diag_state(診断クロック・ドメインFSM)
DIAG_IDLE(診断_アイドル)状態にあるFSMによって、同期したstart_diagが確認されると、diag_state(診断_状態) FSMは、DIAG_SHIFT(診断_シフト)状態に移り、この状態において、診断データがATEにシフト・アウトされる。全てのデータがシフト・アウトされると、diag_state
FSMは、DIAG_SYN(診断_同期)状態にシフトし、この状態において、このFSMは、start_diag信号がローになるのを待つ。同時に、diag_done信号がcont_state FSMに送られる。診断FSMは、同期したstart_diagがローになるのを確認すると、DIAG_IDLE状態に移り、新しいstart_diag信号を待つ。
これらの例示的な2つのFSMの状態遷移図を、図27及び28に示す。
内部診断−データ・シフト・クロックは、この例では、図29を参照することによってわかるように、診断データの取り込み及びシフト・アウトの両方を行うために、MBISTクロック及び診断クロックから生成されることが望ましいことに注意されたい。
図29に示すように、この例では、2つの信号enable_diagclk(診断クロック・イネーブル)及びenable_bistclk(BISTクロック・イネーブル)が、診断レジスタに入力されるクロックを選択するために生成される。図29の、オプションの2つのANDゲートは、2つのクロックが切り替えられる際に起こりうるグリッチを避けるために用いられる。これらのANDゲートがオプションであるのは、起こりうるグリッチがロジック動作の正しさに影響を及ぼさないためである。診断クロック信号は、同期したstart_diag信号が診断クロック・ドメインFSMによって確認されたときにイネーブルになり、diag_done信号がアサートされたときにディスエーブルになる。MBISTクロックは、start_diag信号がアサートされたときにディスエーブルになり、同期したdiag_done信号がハイからローになったときにイネーブルになる。
診断モニタの幾つかの信号を、図30に示す。
図30に斜体で示された信号は、診断クロック・ドメインにある。図30の他の信号(非斜体)は、BISTクロック・ドメインにある。
9.3 診断データのスキャン・アウト
9.3.1 テスト・プログラムの先頭からのリスタート
一例示的実施形態では、ATEとMBISTコントローラとの間の診断インターフェースの一部として、4つの信号が用いられ、それらは、ATEからの自走diag_clockと、diag_dout信号と、restart(リスタート)信号と、コントローラからのfail_flag信号とである(図31を参照)。図31のFP−MBISTは、フィールド・プログラマブルMBISTを意味する。
データの不一致が見つかると、start_diag信号がハイになり、fail_flag信号がアサートされる。fail_flagは、この例では、start_diagが0に戻ったときにデアサートされる。
この例では、診断データは、ATEにシリアルにスキャン・アウトされる。いったん同期され、診断クロック・ドメインFSMによってstart_diag信号が確認されると、パディング・ビット又は同期ビットの「1」が最初にATEに送られる。この実施形態では、実際の診断データは、同期ビットに追従する。診断が終了すると、この例では、ATEに送出される診断データは、常に「0」になる。これは、クロックが常に動作して
いるためである。
最初の故障のスキャン・アウトの途中で新たな故障が検出された場合は、診断モニタ900からMBISTコントローラに「restart(INT)」信号が送られる。MBISTコントローラは、現在の状態をリスタート・ポイントとして保存し、restart(EXT)信号をATEに送る。restart(EXT)信号は、ロード・クロック(低速クロック)の完全な1サイクルに対してアサートされる。このスキームは、テスト・プログラムの先頭からの信号リロード命令にATEが応答できることが前提である。現在の診断データ902が、いったんATEに完全にシフト・アウトされると、MBISTコントローラは、この例では、テスト・プログラムの実行を再度開始する。MBISTコントローラは、既にATEにシフト・アウトされている故障を全てスキップしてから、最後にシフト・アウトされたエラーに達する。
この実施形態の場合の例示的波形を、図32に示す。
9.3.2 テスト・ステップの先頭からのリスタート(デフォルト動作)
この実施形態の例では、ATEとMBISTコントローラとの間の診断目的に用いられる信号が3つあり、それらは、ATEからMBISTコントローラへのdiag_clockと、MBISTコントローラからATEへのdiag_dout信号及びfail_flagとである(図33を参照)。
この実施形態では、診断データは、diag_doutピンからATEにシリアルにスキャン・アウトされる。start_diag信号の同期したバージョンが診断クロックFSMにおいていったん確認されると、(前のケースと同様の)パディング・ビット「1」が、最初にATEに送られる。このビットの後に、実際の診断データが、ATEにシリアルに送られる。診断が終了すると、この例では、ATEに送出される診断データは、新たな診断データが用意されるまで、常に「0」になる。あまり望ましくないが、ATEからのデータのパラレル配信も可能である。
最初の故障データのスキャン・アウトの途中で新たな故障が検出された場合は、診断モニタからMBISTコントローラに「restart」(INT)信号が送られる。MBISTコントローラは、現在の状態をリスタート・ポイントとして保存する。現在の診断データが、いったんATEに完全にシフト・アウトされると、MBISTコントローラは、現在のテスト・ステップの先頭からのリスタート操作を実行する。
このアプローチでは、リスタート手順は、通常、2つのステップ、即ち、メモリの再初期設定と、現在のテスト・ステップの先頭からのリスタートとを含む。再初期設定ステップは、現在のテスト・ステップが実行される前に、メモリ内の値を回復する。例えば、テスト・ステップ(r0,w1,r1)で連続した2つの故障が検出された場合は、メモリを「0」に再初期設定してからテスト・ステップを再度実行することが可能である。再初期設定ステップは、この例では、現在のテスト・ステップと同じデータ・パターン及びアドレス指定スキームを用いて、テストされるメモリの全体を初期設定する。しかしながら、現在のテスト・ステップに書き込み操作が含まれない場合は、初期設定ステップをスキップすることが望ましい。例えば、テスト・ステップが(r0)であって、リスタートが必要な場合は、テスト・ステップが再実行されるが、再初期設定ステップはスキップされる。この実施形態では、MBISTコントローラは、テスト・ステップに書き込み操作が含まれるかどうかを自動的に検知する。
診断クロックは、自走クロックであっても、ATEからコントローラにオン・デマンドで送られるクロックであってもよい。後者の場合、この例では、ATEは、fail_flag信号がアサートされたときに、diag_clockをコントローラに送る。AT
Eは、fail_flagがいったんデアサートされると、diag_clockをディスエーブルにする。
図32は、このアプローチの場合の例示的波形を示している。この例では、リスタート操作をサポートしても、ATEに対するインターフェースは変わらない。
9.3.3 診断データのフォーマット
診断データの例示的フォーマットは、次のように表すことができる。
Figure 2009259398
このフォーマット例では、PCは、故障を検出するテスト・ステップの最初の命令の命令番号に対応する。変数「buf_count」は、テスト・ステップ内の操作番号を表す。アドレス[0:NUM_LEVEL−1]の値は、アドレス0、アドレス1、・・・、アドレスNUM_LEVEL−1に対応し、NUM_LEVELは、アドレスのレベルの数を意味する。fail_mapデータは、期待データと、メモリ出力からの実際のデータとのXORに対応する。全てのレベルのアドレスが使用されているわけではない場合は、使用されていないアドレスが0に設定される。報告されたアドレスは、イントラ反復アドレス計算の前のアドレスに対応することに注意されたい。
例えば、次のテスト・プログラムを考える。
Figure 2009259398
データのビット数を8、アドレスのビット数を4とし、2レベルのアドレスが実装されているとする。更に、この例では、命令バッファ内の可能な命令の数は8(従って、buf_countは3ビット)であり、テスト・プログラム内でサポートされる命令の最大数は256(従って、PCは8ビット)である。
命令8がアドレス12で故障を検出した場合、fail_mapは、8’b00000010であり、PCは、5に等しく(命令5が、故障を検出するテスト・ステップの最初の命令であるため)、buf_countは、2に等しく(テスト・ステップの操作2が故障を検出したため)、アドレス0は、12に等しく(そのアドレスで故障が検出された
ため)、アドレス1は、0に等しい(テスト・ステップが1つのレベルだけを有し、アドレス1が使用されないため)。
従って、スキャン・アウトされるデータは、次のとおりである。
[1, 00000111, 1100, 0000, 00000010]
このアプローチでは、ATEは、実際の診断データの前にパディング・ビット「1」を受け取る。
後述するように(セクション10を参照)、March専用バージョンのMBISTコントローラの場合は、アドレス・レジスタが1つだけ使用され、シフト・アウトされることが望ましい。このMarch専用バージョンのMBISTコントローラでは、シフト・アウトされたデータは、次のとおりである。
[1, 00000111, 1100, 00000010]
9.3.4 診断クロック及びメモリ・ロード・クロックの共用
命令メモリのロード・クロック及び診断クロックは、同じ入力ピン「shift_clk(シフト・クロック)」を共用することが可能である。これらのクロックが自走でない場合、「shift_clk」は、要求に応じて(load_requestがあった場合、fail_flagがアサートされた場合、又はその両方)コントローラに送られることが可能である。
9.3.5 保持テスト・インターフェース
保持テストの場合、一例では、MBISTコントローラとATEとの間で伝達される2つの信号を伴うハンド・シェイク・メカニズムが使用されることが可能である。PAUSE(一時停止)命令は、この例では、保持テストのために用いられる。内部的には、命令がデコードされるとただちに、保持テストの開始を通知するpause(一時停止)信号が、MBISTコントローラとATEとに発行される。MBISTコントローラは、応答として、「ホールド」状態に移り、ATEは、この例では、MBISTセッションを再開するためにはresume(再開)信号がMBISTコントローラに送られる必要があることを認識する。resume信号がATEによってアサートされると、MBISTセッションの再開が、MBISTコントローラに通知される。
例示的なpauseインターフェース信号及びresumeインターフェース信号の波形を、図34に示す。pause信号は、resume信号がアサートされたことがコントローラによって確認されると、デアサートされる。resume信号は、pause信号がデアサートされると、デアサートされる。この例では、resume信号が次のpauseの前にデアサートされさえすれば、pauseがデアサートされる時刻とresumeがデアサートされる時刻との間に厳密なタイミング関係は不要である。
10.0 コントローラの生成
新しいプログラマブルMBISTコントローラは、好適なEDAツールによって生成(プログラム)されることが可能である。そのようなツールの一例が、MBIST Architectである。プログラマブルMBISTコントローラは、そのようなツールの既存メモリMBIST挿入フローにおいて直接使用されることが望ましい。
プログラマブルMBISTコントローラが生成されると、基本テスト・ベンチとテスト・ベクトルのセットとが生成されることが可能である。これらは、MBISTコントローラの正常な機能性を示すために実行されることが可能である。テスト・ベンチ及びテスト・ベクトルは、MBISTコントローラに関連付けられたメモリに対して特定のメモリ・テスト・アルゴリズムを実行させないように、設計されることが可能である。
MBISTコントローラHDLを完全に書くこと、並びに他の従来型ファイルと同様に、MBISTコントローラの新しいビューが、このEDAツールによって生成されること
が可能である。この新しいツールは、MBISTコントローラの、生成時の構成状態の永続的なバージョンを収容することが可能である。
MBISTコントローラの永続的な状態がロードされることが可能であり、メモリ・テスト・プログラムは、テキスト表現から、MBISTコントローラへの適用が可能なテスト・ベンチ及びテスト・ベクトル・セットに変換されることが可能である。この処理の間、メモリ・テスト・プログラムのセマンティック・エラーがチェックされることが可能である。
11.March専用コントローラ
本明細書で開示される技術は、前述のような、より完全にプログラマブルなMBISTコントローラではなく、指定された1つ又は複数のアルゴリズムをサポートするMBISTコントローラを提供するように適合されることが、容易に可能である。一例として、例えばエンド・ユーザの要望に応じて、信号タイプのアルゴリズムをサポートするように、アーキテクチャを修正及び簡略化することが可能である。このアプローチの有利な例を、March専用コントローラに関して、以下で説明する。March専用コントローラは、Marchタイプのアルゴリズムだけをサポートする。このタイプの専用コントローラは、既に説明されたフィールド・プログラマブルMBISTコントローラのアーキテクチャの、Marchアルゴリズムの過度に単純化された性質による簡略化を考慮している。11.1 命令セット
アルゴリズム命令の場合、この例では、ビット[7:6]は使用されない。3つのイントラループ・アドレス操作方法(アドレス、アドレス+インデックス、及びアドレス−インデックス)が使用される。この例では、データは、データ・バックグラウンドであってもデータ・バックグラウンドの反転であってもよい。メモリ操作は、読み出し操作であっても、比較なしの読み出し操作であっても、書き込み操作であってもよい。
例示的アルゴリズム命令を、表9に示す。
Figure 2009259398
構成命令の場合、この例では、アドレス指定スキームは、行アドレス指定と列アドレス指定の2つしかない。Marchアルゴリズムにはアドレス指定のレベルが1つしかないので、アドレス関係はない。このMBISTコントローラの例示的構成命令を、表10に示す(Marchアルゴリズムのサポートだけのために実装される命令は、太字で強調されている)。Marchアルゴリズムのテスト・ステップは、ステップ内の全ての操作が完了した後、必ず最初の操作にジャンプして戻るので、命令「ループ・オフセット」は、常にオフセット「0」を有することに注意されたい。
命令の詳細な説明については、前述の図3A及び表4の説明を参照されたい。
Figure 2009259398
Figure 2009259398
11.2 ハードウェア設計
アーキテクチャの最高レベル図は、図4と同じであってよい。
そのロジック・ブロックは、以下のように説明される。
11.2.1 命令メモリ
March専用MBISTコントローラの一形態では、命令メモリは、プログラマブルMBISTコントローラと、MBISTコントローラによって実行される命令シーケンスのソースとの間のバッファである。命令メモリは、(例えば、8ビット・ワードの)レジスタ・ファイルから形成される。命令メモリのサイズは、増減が可能である。
11.2.2 命令デコーダ
例示的March専用MBISTコントローラの命令デコーダには、次の2つの論理機能がある。
・命令がアルゴリズム命令か構成命令かを決定する。
・構成命令をデコードする。
第1の決定は、先述のように、単純に命令ワードのビット0を検査することによって行われることが可能である。ビット0が「0」に設定されていれば、命令は構成命令であり、そうでなければ、アルゴリズム命令である。
全ての構成命令のデコードは、この例では、命令ワードの最上位ビットを検査して具体的な構成命令を特定することによって行われることが可能である。ほとんどの構成命令に対して、MBISTコントローラの状態は即座に更新される。アドレス構成命令は、別の方法で処理されることが望ましい。そのような命令は、部分的にデコードされ、その後、ステップ・コントローラに渡されて、更にデコードされることが可能である。
11.2.3 ステップ・コントローラ
このMarch専用MBISTコントローラの例のステップ・コントローラは、一形態では、1ステップ分のプリデコードされたアルゴリズム命令と、ステップのためのアドレス構成とを記憶し、テスト・ステップの実行を制御する。ステップ・コントローラは、4
つのサブブロック、即ち、命令バッファ及びバッファ制御と、アドレス構成バッファと、アドレス構成デコーダと、アルゴリズム命令デコーダとを備えるか、これらで構成される。ステップ・コントローラの例示的形態の詳細図は、既に図8で示されている。
命令バッファ及びバッファ制御ブロック500は、この例では、テスト・ステップの実行のための命令バッファ及び制御ロジックを含む。アドレス構成バッファ502は、行アドレス指定又は列アドレス指定のアドレス構成を格納する。アドレス構成デコーダ506は、アドレス構成バッファから読み出された構成をデコードし、アルゴリズム命令デコーダ504は、命令バッファから読み出されたアルゴリズム命令をデコードする。
命令バッファのワード・サイズは、この例では5であり、テスト・ステップのアルゴリズム命令のビット[5:1]を格納する。命令バッファ内のワード数は、様々であってよい。例示的なデフォルトの数は、8である。アドレス構成バッファは、例えば、4ビット・レジスタであることが可能である。
例示的命令バッファ910とアドレス構成バッファ912とを、図35に示す。
11.2.4 アドレス・ジェネレータ
March専用データ・ジェネレータの一形態は、2つの部分、即ち、この例ではインター反復アドレス生成部分と、イントラ反復アドレス生成部分とを備えるか、これらで構成される。インター反復アドレス生成部分は、構成命令によって定義されるアドレス指定スキーム(行アドレス指定又は列アドレス指定)に従って、アドレスを更新する。イントラ反復アドレス生成部分は、ビット[5:4]と、インター反復アドレス生成部分によって生成されるアドレスとに基づいて、アドレスを生成する。イントラ反復アドレスは、インター反復アドレスであってもよく、インター反復アドレス±インデックスであってもよい(インデックスは、このバージョンでは、例えば1に設定されることが可能である)。11.3 データ・ジェネレータ
このMarch専用MBISTコントローラの好適なデータ・ジェネレータは、現在のメモリ操作の現在のメモリ・ロケーションに書き込まれるか、そこから読み出されるデータ値を生成する。
この例でサポートされる、例示的データ生成スキームのタイプを、以下に列挙する。全てのケースにおいて、データ・バックグラウンド及びデータ・バックグラウンドの反転の両方がサポートされる。構成命令を用いることによって、異なるデータが設定されることが可能である。
Marchアルゴリズムの場合は、塗りつぶしの「0」及び「1」のデータ・バックグラウンドのほかに、ユーザが、全部で(logw+1)個の異なるバックグラウンドの中から、使用可能な任意のバックグラウンドを指定することが可能である(wはデータ・ワードの幅)。
例えば、データ・サイズが8ビットであるメモリは、以下の4個のエンコードされたデータ・バックグラウンドを有する(更に、それらのデータ・バックグラウンドの反転も使用可能になる)。
0 00000000
1 01010101
2 00110011
3 00001111
比較として、Checkerboardアルゴリズムの場合は、トポロジカル・データ・バックグラウンド「01...01」及びその反転が必要とされる。実際のデータ値は、アドレスに依存する。行ストライプ及び列ストライプ・アルゴリズムの場合は、メモリ
の偶数アドレス及び奇数アドレスに基づいてデータが生成されることが可能である。行ストライプ・アルゴリズムでは、例えば、1回の実行で、偶数行に「11...11」が書き込まれ、奇数行に「00.00」が書き込まれる。第2の実行では、データ・バックグラウンドが反転される。同様に、列ストライプ・アルゴリズムでは、交互の列がそれぞれ全て1及び全て0を有するようにデータが書き込まれることが可能である。一意データ・アルゴリズムの場合は、対応するメモリ・アドレスが、全てのメモリ・ロケーションの一意データとして用いられる。
11.4 制御ジェネレータ
このMarch専用の例の制御ジェネレータの役割は、現在のメモリ・アクセス操作に必要な全ての制御信号を生成することである。これは、最高速度の同期メモリの場合には、命令メモリに格納されたアルゴリズム命令によって直接駆動される、シンプルなメモリ制御信号アサーションであることが可能である。非同期メモリのような、他の場合は、一例では、状態カウンタと、カウンタ状態に基づく制御信号のアクティベーションとが用いられることが可能である。
11.5 出力応答アナライザ
出力応答アナライザは、メモリから読み出されたデータと、MBISTコントローラから生成された期待データとを比較する。このアナライザは、一形態では、2つの値を比較する比較器を備えるか、それで構成されることが可能である。メモリの幅が非常に大きい場合は、比較器のロジックの深さが大きくなり、従って、実動作速度のBIST操作を保証するためにパイプライン段が挿入されることが可能である。
出力応答アナライザは更に、リスタートが必要な場合には、リスタート・ポイントを記憶することが可能である。リスタート・ポイントは、第1の故障の情報がATEにシフト・アウトされる前に第2の故障が検出されたときの、コントローラの状態である。この情報は、テスト・ステップの操作番号と、メモリ・アドレスとを含むことが可能である。一アプローチでは、アナライザは、コントローラがリスタートを実行していて、リスタート・ポイントに達していない場合には、メモリ出力を比較しない。
11.6 診断モニタ
好適な診断モニタの例については、先述のセクション9.2を参照されたい。セクション9.1.2のアプローチは、テスト・プログラムのロードと、診断データのスキャン・アウトの両方のために実装されることが可能である。
12.0 プログラマブルMBISTコントローラの内部の例示的なブロック図及びインターフェース
本明細書のこのセクションでは、モジュール間の例示的インターフェースについて説明する。それらのモジュールは、図4の機能ブロック図から多少変更されている。
図36は、例示的な最高レベルのインターフェース1000を示す。この例では、破線で示されたボックスはオプションである。接続モジュール1010は、この例では、テストされるメモリ(MUT)がBIST対応である場合のオプションである。図36のモジュールFP−MBISTの例については、既に詳細に説明されている。この例示的インターフェースの他のオプション・モジュールについては、後述する。
接続モジュール1010は、FP−MBIST(プログラマブルMBISTコントローラ)からテストされるメモリ(MUT)への入力インターフェースである。モジュール1010は、システム入力及びテスト入力を選択することによってMUTへの入力を生成するMUXを備える。接続モジュールは、MUTがBIST対応である場合(例えば、MUTが埋め込みMUXを有する場合)には、省略されるのが一般的である。バイパス・ロジック・モジュール1020は、メモリ入力が、特定のロジック(例えば、XORツリー及び/又はラッチ)を通ってMUTをバイパスすることを可能にするように設計される。出力MUXモジュール1030は、メモリ出力と、バイパス・ロジックからの信号とを選択
する。
入力及び/又は出力パイプライン・モジュール1040、1050は、例えば、メモリ入力及び/又はメモリ出力に挿入されたパイプライン・レジスタである。
自動テスト・パターン生成のための幾つかの制御ロジックが、メモリ制御信号入力に更に追加されることが可能である。
例示的プログラマブルMBISTコントローラ内のモジュール及び内部インターフェースを、図37に示す。幾つかの信号は、簡潔さのために、ベクトルの形にまとめられている。他の信号は、簡潔さのために省略されている。
図37を参照すると、mbist_start信号がBISTテストを開始し、この信号は、全てのモジュールに伝達される。
命令メモリ・モジュール102(図4及び37)(InstrMem)は、ATEからの命令ロードを制御し、命令のブロックを格納する。モジュール102は、load_request信号をATEに送って、命令のロードをATEに要求する。load_dataがATEから入力される。これは、この例では、命令で構成されるシリアル・データ・ストリームであることが可能である。ロードには、shift_clk信号が用いられる。
プログラム・カウンタ・ジェネレータ150(PCGen)が、InstrMem 102に対してPCを生成する。PCGenモジュール150は更に、read_instruction(命令読み出し)信号、instruction_available(使用可能命令)信号、及びblock_read_done信号を送って、命令メモリ102からの命令読み出しを制御する。モジュール150は、run step(ステップを実行)信号又はreset step(ステップをリセット)信号を生成して、テスト・ステップを開始したり、新たなテスト・ステップのためにレジスタをリセットしたりする。
命令デコーダ108(InstrDec)は、InstrMem 102から読み出された命令をデコードし、これらの命令には、データ・ジェネレータ(DataGEN)300に供給されるdata patterns(データ・パターン)/Mask(マスク)信号と、ステップ・コントローラ130のためのステップ制御ロード信号(load instruction(命令をロード)、load config(構成をロード)、load offset(オフセットをロード))と、アドレス・ジェネレータ(AddrGen)155のためのアドレス生成ロード信号(load index(インデックスをロード)、load start/end(開始/終了をロード))と、診断モニタ(Diag)900のためのdiag_enable(診断イネーブル)/restart_enable(リスタート・イネーブル)とが含まれる。モジュール108は更に、保持テストの開始とBISTの終了とを通知する命令からpause/stop信号を生成する。ATEから入力されたresume信号は、pauseをデアサートする。
ステップ・コントローラ130は、テスト・ステップの実行を制御する。モジュール130は、current loop/step_done(現在のループ/ステップ完了)信号をPCGen 150に送り、初期設定信号(initialize)をAddrGen 155に送って、AddrGen内部のアドレス・レジスタを初期設定し、アドレス生成のためにアドレス指定スキームをAddrGenに送り、信号update(更新)をAddrGenに送って、アドレス更新が必要であることを伝え、データ生成のために信号Inv(反転)(データ極性)信号をDataGENに送る。
データ・ジェネレータ300(DataGEN)は、InstrDecからの情報(data patterns/Mask)、ステップ・コントローラからの情報(Inv)、及びAddrGenからのアドレスに従って、データ及び書き込みマスク信号を生成する。
レイテンシ調節器400(LatencyADJ)は、生成された信号(Data(データ)、valid(有効)、R/W(読み出し/書き込み)、Addr(アドレス))の間のレイテンシを、異なるモジュールから調節する。モジュール400は、MUTへのテスト入力(例えば、TData(テスト・データ)、TAddr(テスト・アドレス)、TCEN、及びTWEN(テスト書き込みイネーブル))を生成する。
アドレス・ジェネレータ155(AddrGen)は、MUTへのアドレスを生成する。モジュール155は、行われたループが完了しているかどうかをチェックし、完了していれば、loop_doneをアサートする。このモジュールは更に、アドレスが範囲外かどうかを、信号ignore(無視)を用いて示す。
出力応答アナライザ450(ORA)は、期待データとメモリ出力とを比較し、内部故障信号(failure)を生成して、MUTがテストにパスしたか失敗したかを示す。アナライザ450は、入力情報(address、pc、buf_count)からモニタ信号を生成する。モジュール458は更に、リスタート・ポイントを記憶し、リスタートがリスタート・ポイントに達しているかどうかを示す。
診断モニタ(Diag)900は、ORA 450からのモニタ信号を取り込み、診断データをシリアルにシフト・アウトする(diag_data)。モジュール900は、ATEへの故障フラグ信号(fail_flag)を生成する。モジュール900は更に、ORA 450への内部リスタート信号を生成する。出力diag_idleは、Diag 900がデータを全くシフトしていないかどうかを示す。
上述の各構成要素は、図37に示されている信号より多い信号又は少ない信号と相互作用を行うために変更されたり、配置変更されたり、結合されたり、設計されたりすることが可能である。
図36及び37の各インターフェースは、必要に応じて(例えば、MBISTコントローラのアーキテクチャの変更に対応するために)修正されることが可能である。
13.0 選択された機能の概要
フィールド・プログラマブル・メモリBISTコントローラの図示された基本実施形態及び代替実施形態の例示的機能は、おおまかには、以下のカテゴリに分類される。
13.1.メモリBISTアルゴリズムは、2つのタイプに分類されることが可能である。第1のタイプは、メモリ・アドレス空間に対して線形複雑度を有するタイプであり、第2のタイプは、メモリ・アドレス空間に対して非線形複雑度を有するタイプである。第1の(基本)実施形態は、文字どおりに、広い範囲の線形アルゴリズム(標準的なMarchテスト、Checkerboardテスト、一意データ・テスト、ビット/バイト書き込みイネーブル・テスト、その他)をサポートする。更に、第1の実施形態は、Galloping 0/1、Walking 0/1、アドレス・デコーダPMOS開放故障、Butterfly、Sliding Diagonalなどや、それらの可能な変形形態のような、非線形アルゴリズムもサポートする。より複雑な入れ子ループを有するアルゴリズムに対応する代替実施形態は、基本実施形態によってサポートされるアルゴリズムに加えて、より広いカテゴリのアルゴリズムをサポートすることが可能である。代替実施形態は、全ての周知のアルゴリズムをサポートすると考えられている。
13.2.かなり大きなアルゴリズムのセットをサポートするようプログラマブルであることに加えて、基本実施形態の機能の1つは、サポートされるアルゴリズムの、動作速度(即ち、最高速度)での実行をサポートすることである。言い換えると、提案されたアーキテクチャは、ユーザが、フィールド・プログラマブルBISTコントローラを、メモリの定格動作速度で動作させることを可能にする。これは、BISTが読み出し/書き込み操作を1クロック・サイクルで実行できるように、メモリ読み出し及びメモリ書き込みの操作をパイプライン化することを含むことが望ましい。一部の代替実施形態は、ループを全く含まないループを有するアルゴリズムの最高速度での実行を可能にする。他の実施形態は、より複雑な相互作用ループを有するアルゴリズムの、実動作速度又は最高速度での実行を拡張する。基本実施形態及び代替実施形態は、必要に応じて、全体的又は部分的に結合されることが望ましい。
13.3.基本実施形態の設計は、本質的に、適正なモジュール方式であることが可能である。モジュール性は、アルゴリズムの様々なグループによって必要とされる機能性に基づく。従って、ユーザは、コントローラがサポートすることがユーザにとって望ましいアルゴリズム・グループを選択することが可能であり、それに応じてアーキテクチャが合成される。このことは、プログラマブルなハードウェアの複雑度を選択して、プログラマビリティとハードウェア・オーバヘッドとの間のよりよい最適化を達成する、柔軟性を与える。ループ内ループに対応する代替実施形態の設計は、アルゴリズム・グループに基づかない。その代わりに、そのような代替実施形態は、アドレス・スキームに基づく。異なるアドレス・スキームを選択することは、異なるアルゴリズムを可能にする。このことは、ユーザが、幾つかのループ/操作をサポートするアドレス・スキームを選択して、プログラミングの柔軟性とハードウェアとの間のトレードオフを実現することが可能であるという柔軟性を与える。
13.4.基本実施形態及び代替実施形態の両方が、2つのセット、即ち、アルゴリズム命令と構成命令とからなる命令セットを使用することが望ましい。アルゴリズム命令は、アルゴリズム・ステップに関係する操作を直接制御する命令であるように選択されることが望ましい。特定のアドレスにおける全ての操作の間のあらゆるサイクルにおいて変更が発生する可能性があることから、アルゴリズム命令は、実動作速度でデコードされることが望ましい。構成命令は、データ・バックグラウンド、アドレス指定スキーム、及び他の制御信号を制御する命令であって、あらゆるアルゴリズム・ステップにおいて変更されうる(変更されないことが多い)命令であるように、選択されることが望ましい。提案されたアルゴリズムに対応する命令セットは、非常に汎用性があり、望ましくは、サポートされるメモリBISTアルゴリズムのフレームワーク内で汎用アルゴリズム・ステップを定義することを可能にする。上記の考え方は、基本実施形態及び代替実施形態の両方に当てはまる。
13.5.基本実施形態の命令デコーダは、変形可能であるが、図示された一形態では、3つの命令デコーダで構成されることが望ましい。第1の命令デコーダは、命令がアルゴリズム命令か構成命令かを最初にデコードするプリデコーダであることが望ましい。第2の命令デコーダは、アルゴリズム命令をデコードすることが望ましい。通常、この第2のデコーダは、少なくとも実動作速度(メモリの動作速度)で動作しなければならない。第3の命令デコーダは、構成命令をデコードすることが望ましい。構成命令は、より複雑であってよく、デコードに複数サイクルの時間がかかってもよい。ループ内ループ・アルゴリズムを複数サポートする代替実施形態は、第4の追加デコーダ、即ち、各ループについてアドレス構成をデコードするループ構成デコーダを備えることが可能であるか、代替アーキテクチャを用いることが可能であることが望ましい。他のデコーダ・アーキテクチャについても具体的に説明する。
13.6.実動作速度BISTの場合、アルゴリズム命令は、実動作速度(少なくとも、テストされるメモリの定格動作速度)でデコードされなければならない。基本実施形態では、同じことを達成するために、少なくとも2組の命令バッファを用いて命令がロードされる。これらの実施形態では、アルゴリズム内の主ループは、ベース・ループと呼ばれる。BIST操作は、第1のベース・ループ命令を、ベース・ループ・バッファとも呼ばれる第1のバッファにロードすることにより始まる。第1のバッファにある命令が実行されている間に、アルゴリズムの第2のベース・ループ内の全ての命令が、第2のバッファにロードされる。ベース・ループ・バッファのサイズは、ベース・ループ内の命令の数に応じて様々であってよい。代替実施形態は、変形可能ではあるが、アルゴリズム命令バッファを1つだけ備えることが可能である。
13.7.基本実施形態では、アルゴリズム内の全てのベース・ループ操作について、ベース・ループ操作の中に1つ又は複数のローカル・ループ操作があることが可能である。これらのローカル・ループは、順次実行(順々に実行されること)が必要であってもよく、入れ子構造を有してもよい。複数のローカル・ループを有するアルゴリズムを実動作速度で実行することを可能にするために、全てのベース・バッファに対して、1つ又は複数のローカル・ループ・バッファが使用されることが望ましい。ベース・ループの全ての操作をベース・ループ・バッファにロードする際に、ローカル・ループ・バッファに対応する命令が、ローカル・ループ・バッファにロードされる。これらのバッファに対するアドレス指定スキームを制御するために、複数の小さなプログラム・カウンタが使用されることが望ましい。これらの実施形態は、ベース・ループ・バッファ及びローカル・ループ・バッファの数を増やすために、容易に拡張されることが可能である。ローカル・ループ・バッファのサイズは、様々であってよい。代替実施形態は、十分なハードウェアが与えられていれば、任意の数のループをサポートする。
13.8.基本実施形態では、アルゴリズム内に複数のループがある場合、命令セットの一形態は、JUMP命令を有する。しかしながら、命令がコンパイルされた後は、命令メモリ内のジャンプ先を示す絶対アドレスが、記憶されていることが望ましい。これにより、BIST時に次にアドレスを計算する時間が最少化されて、JUMP命令のデコードに通常伴う追加遅延がなくなる。代替実施形態では、ループがロードされる方法を指定するために、構成命令が内部バッファにロードされることが望ましい。
13.9.基本実施形態の1つの具体的な例示的実装では、2つのアドレス・ジェネレータが使用される。一方のアドレス・ジェネレータは、ベース・ループ用であり、他方は、ローカル・ループ用である。しかしながら、このアプローチは、制限的ではない。基本実施形態は、ユーザから要求された場合などには、3つ以上のアドレス・ジェネレータを有することが可能である。更に、プログラマブルMBISTコントローラがアルゴリズムにおいて柔軟なアドレス・インクリメントをサポートできるように、全てのアドレス・ジェネレータに対応するインデックス・レジスタが統合されることが可能である。これは、ユーザが、アレイの様々なセクションをジャンプしてまわり、そのアドレス空間内でアルゴリズムを適用することを望む場合に有用である。アドレス・ジェネレータは、本明細書で言及されているような、開示されたアルゴリズムをサポートすることに特化された、特定タイプのアドレスを生成することが可能である。これらのアドレス・ジェネレータは、専用の実装である。しかしながら、このアーキテクチャは、柔軟なアドレス・ジェネレータ(例えば、論理演算だけでなく算術演算もサポートするアドレス・ジェネレータ)を可能にする。特定の代替実施形態では、複数のアドレス・ジェネレータの使用も可能であるが、望ましい一形態では、操作ロジックが共用されるアドレス・ジェネレータが1つだけ使用される。
13.10.基本実施形態及び代替実施形態では、データ・ジェネレータが、任意のタイプのMarchアルゴリズム並びに他のより複雑なアルゴリズムに好適なデータを生成することが望ましい。しかしながら、データ・ジェネレータはまた、非常に柔軟なアーキテクチャを有し、ユーザにとって望ましい、(算術演算及び論理演算を伴う)任意のタイプのデータ・バックグラウンドを生成することが可能である。更に、データ・ジェネレータの数は、1つに制限されず、例えばユーザの要求に応じて、例えば、任意の数に増やすことが可能である。また、MBISTコントローラを、1つ又は複数のアルゴリズム・タイプ(例えば、March専用アルゴリズム)の専用にして、プログラマブルでないことと引き換えに、全体アーキテクチャを簡略化することが可能である。
13.11.基本実施形態及び代替実施形態では、アドレス指定スキームは、幾つかのフィールド(例えば、ブロック、ページ、行、及び列)に細分されることが可能であることが望ましい。この場合、メモリのアドレスは、幾つかの構成要素(例えば、メモリ・ブロック番号、メモリ・ページ、Xアドレス、Yアドレス)に細分されることが可能であることが望ましい。ユーザは、これらのパラメータのうちの幾つかを実行時に選択する柔軟性を与えられることが望ましい。
13.12.望ましい一アプローチにおいて、基本実施形態及び代替実施形態では、命令メモリは、アルゴリズム全体を一度に記憶する必要がない。言い換えると、コントローラとテスト装置(ATE)との間のハンド・シェイク・スキームを用いて、命令メモリがATEからの新しい命令で埋められると同時に、他の幾つかの命令がプログラマブルMBISTコントローラによって実行されることが、可能であるようにできる。結果として、命令メモリのサイズは、MBISTコントローラの全体面積オーバヘッドを減らすように最適化されることが可能である。
13.13.基本実施形態では、ローカル・アドレスは、ベース・アドレスの関数であることが可能である。ベース・アドレスとローカル・アドレスとの間の関係は、存在することもしないこともある。代替実施形態では、1つのアドレスが別の、より高レベルのアドレスの関数であることが可能であるように、異なるレベルのアドレス同士が関連付けられることが望ましい。従って、例えば、現在のアドレスは、レベル0アドレスの関数であることや、すぐ上のレベルのアドレスの関数であることが可能である。十分なハードウェアが与えられていれば、現在のアドレスは、他の任意のレベルのアドレスの関数であることが可能である。代替実施形態では、アドレス・スキームは、特定のアルゴリズムに、直接には関連付けられていないことが望ましい。代替実施形態では、テスト・アルゴリズムを実装する場合、命令内でテスト・アルゴリズムを明示的に指定することは、可能ではあるが、必要ではない。その代わりに、特定の代替実施形態では、適切なアドレス・スキームの設定に基づいて、異なるテスト・アルゴリズムが生成されることが可能であることが望ましい。また、代替実施形態では、各ループが異なるアドレス・スキームを有することが可能であるように、ループごとに異なる構成がサポートされることが可能であることが望ましい。
13.14.フィールド・プログラマブルMBISTコントローラ及びテスト・システムの実施形態の1つの目標は、フィールド・プログラミングの高い柔軟性と低面積オーバヘッドとを有する最高速度GHzメモリBISTを提供することである。この高い柔軟性は、データ・バックグラウンド及びアドレス・スキームをプログラムできることだけでなく、線形及び非線形の両方のテスト・アルゴリズムをプログラムできることも意味することが望ましい。
13.15.例示的フィールド・プログラマブル・メモリBIST(FP−MBIST)の設計は、2つの部分、即ち、命令設計とハードウェア設計とからなる。命令には2つ
のタイプがあり、それらは、構成命令及びアルゴリズム命令である。ハードウェアは、命令メモリと、命令デコーダと、プログラム・カウンタ・ジェネレータと、制御信号ジェネレータと、アドレス・ジェネレータと、データ・ジェネレータと、レイテンシ調節器と、出力応答アナライザとを備えるか、これらで構成されることが可能である。
13.16.本明細書には、以下の定義が適用される。
ループ:テストされるメモリの、あらかじめ定義された全てのアドレスに対して、繰り返し実行される、一連の操作である。ループを表すために、「()」が用いられる。例えば、March要素は、ループを表す(RWR)として書かれることが可能である。
ベース・ループ:他のどのループにも埋め込まれないループ
ローカル・ループ:ベース・ループに埋め込まれたループ
ベース・セル:ベース・ループの反復のたびに更新されるアドレスを有するメモリ・セルローカル・セル:ローカル・ループの反復のたびに更新されるアドレスを有するメモリ・セル
テスト・ステップ:ローカル・ループを含んでも含まなくてもよいベース・ループ
14.0 その他の例
以下、2つの例を示す。
Gallopingアルゴリズムは、次のように書かれることが可能である。
U(W0),U(W1,(R0,R1),W0),U(W1),U(W0,(R1,R0),W1)
この例示的アルゴリズムには、4つのテスト・ステップがある。「U」は、アドレスが大きくなる方向を意味する。(WO)は、ベース・セルに「0」が書き込まれるベース・ループを表す。添え字「b」は、ベース・セルを意味する。(W1,(R0,R1),W0)は、ローカル・ループ(R0,R1)が入れ子になったベース・ループを意味する。R0は、ローカル・セルに「0」を書き込むことを表し、添え字「l」は、ローカル・セルを意味する。ローカル・ループがベース・セルに対して操作を実行できるのは明らかであるが、ベース・ループ操作(ローカル・ループ内にない操作)は、ローカル・セルに対して実行されることができない。
March 2アルゴリズムは、次のように書かれることが可能である。
U(WO),U(R0W1R1),U(R1W0R0),D(R0W1R1),D(R1W0R0),D(R0)
Marchアルゴリズムには入れ子ループがないので、全てのメモリ・セルがベース・セルである。この例では、添え字「b」が省略されている。以下の説明では、便宜上、アドレス方向の「U」又は「D」、及びデータ・バックグラウンドの「0」又は「1」が省略されている場合がある。
一実施形態では、命令のワード・サイズが9ビットである。この実施形態での最下位ビット(LSB)は、命令の2つのタイプ(構成命令又はアルゴリズム命令)を区別するために用いられる。LSB=1は、アルゴリズム命令を意味し、LSB=0は、構成命令を意味する。
基本実施形態の別の例示的アルゴリズム命令の各ビットの意味を、次の表11に示し、更に以下で説明する。
Figure 2009259398
ビット[8:5]は、操作が、テスト・ステップの最初にあるか最後にあるかを指定する。テスト・ステップは、ベース・ループ又はローカル・ループの開始点及び終了点を定義するために用いられる。
アルゴリズム命令のビット[4:1]は、メモリ・セル又はメモリ・ワードに対して実行される操作を指定する。
ビット[4:3]は、アクセスされるべきメモリ・セル/ワードを表す。メモリ・セル/ワードは、ベース・ループ内のベース・セル/ワード、ローカル・ループ内のローカル・セル/ワード、又はベース・セル/ワードに近接するセル/ワードであることが可能である。
ビット[2]は、メモリ・セル/ワードに書き込まれるべきデータ又はデータの反転、或いはメモリ・セル/ワードから読み出されるべきデータ又はデータの反転を表す。
ビット[1]は、メモリ・セル/ワードに対して実行される操作を指定する。ビット指向メモリは、ワード指向メモリの、ワード・サイズが1である特殊なケースなので、以下の説明は、ワード指向メモリに基づいて行う。
Sliding diagonalテスト及びButterflyテストの場合のアドレス生成は、少々異なる。Sliding diagonalテストの場合は、ベース・アドレス・レジスタ及びローカル・アドレス・レジスタのほかに、斜めアドレス・レジスタと呼ばれることがある追加アドレス・レジスタが用いられる。斜めアドレスは、ベース・アドレスから始まる行アドレス及び列アドレスの両方を加減する。
Sliding diagonalアルゴリズムには、専用の、2つの例示的な特殊アルゴリズム命令がある。アルゴリズム命令のビット[4:3]が「01」に等しい場合は、「sliding read/write all(全てをスライド読み出し/書き込み)」操作が実行される。[4:3]=「11」の場合は、「sliding read/write diagonal(斜めをスライド読み出し/書き込み)」操作が実行される。これらの命令は、両方ともマルチ・サイクル操作である。「sliding read/write all」操作は、メモリ内の全てのセルの読み出し/書き込みを行い、「sliding read/write diagonal」操作は、メモリ内の斜めのセルの読み出し/書き込みを行う。
Butterflyテストの場合も、「butterfly read/write(バタフライ読み出し/書き込み)」という、例示的な特殊命令がある。アルゴリズム命令のビット[4:3]が「01」に等しい場合は、「butterfly read/write(バタフライ読み出し/書き込み)」操作が実行される。これも、マルチ・サイクル命令である。この操作は、ベース・セルから4つの方向にあるセルの読み出し又は書き
込みを行う。上記の3つのマルチ・サイクル命令は、実際に第2のループ操作を実行するが、これらは、第1の実施形態では、便宜上、ベース・ループ・バッファにロードされることが望ましい。
第1の実施形態の場合の構成命令は、例えば、使用されるべきテスト・アルゴリズムと、アドレスの変更方法と、使用及び変更されるべきデータ・バックグラウンドと、更に幾つかのプログラム制御命令とを定義する。構成命令は、各命令フィールドが並行してデコードされることが可能であるように、階層的に設計されることが望ましい。一例のビット[7:6]は、構成命令のカテゴリ(アルゴリズムの選択操作、制御操作、特殊操作、アドレスの構成、又はデータの構成)を指定する。各カテゴリは、更にサブカテゴリに細分されることが可能である。例えば、アドレス構成命令は、4つのサブカテゴリ(ベース方向の構成、ベース・アドレスのロード、ローカル方向の構成、及びローカル・オフセット)に分けられることが可能である。ビット[5:4]は、この例では、この4つのサブカテゴリを区別するために用いられる。次の3ビット[3:1]は更に、各命令の機能を定義する。ビット[8]は、この例では使用されず、将来の拡張用である。
(基本実施形態のための)例示的構成命令の別の実施形態を、次の表12に示す。
Figure 2009259398
命令は、更に2つのタイプ(単一ワード命令及びマルチワード命令)に分類されることが可能である。この例では、マルチワード命令が2つあり、それらは、テストされるメモリのアドレスの境界を指定する「最大アドレスをロード」及び「最小アドレスをロード」である。この例では、最大アドレス及び最小アドレスの何れか一方だけを指定することが可能である。ロード命令ワードの後にアドレスが続く。この例のアドレスは、構成命令又はアルゴリズム命令と混同されてはならない。
Marchアルゴリズムの場合、March方向は、2つのMarch要素(ステップ)の間で変更される。方向構成命令によって2つのステップの間に余分なサイクルが追加されないようにするために、方向構成命令もプリデコードされることが望ましい。2つのステップの間の方向命令は、前のステップの実行時にデコードされることが可能なので、このデコードは、複数のサイクルで行われることが可能であり、従って、これによってシステムの速度がスロー・ダウンしない。方向の変更を制御するために、状態機械を用いることが可能である。
最終アドレス、最終ベース・アドレス、及び最終ローカル・アドレスのインジケータは、2つのバッファ・ペアに格納されているステップをピンポンする(交互に切り替える)ために用いられることが可能である。アドレス生成及び最終アドレス信号生成はクリティカル・パスにあるので、実動作速度の操作を可能にするために、パイプラインが用いられることが望ましい。例えば、アルゴリズム命令デコーダと最終アドレス信号生成との間に、2つのパイプライン段が挿入されることが可能である。この場合は、2つのバッファを素早くピンポンするために、最終アドレスが、実際の最終アドレスより2サイクル早く示されなければならない。
Marchアルゴリズム、即ち、入れ子ループがないアルゴリズムの場合、最終アドレス信号は、最終アドレス+k(March方向が減少の場合)又は最終アドレス−k(March方向が増加の場合)に達したときに、(k+l)*(n−1)サイクル遅い時刻に、1サイクルだけアサートされることが可能である。この例では、kは、アルゴリズム命令デコーダと最終アドレス・インジケータとの間の段数であり(ここでは、kは2)、nは、実行中のステップの操作数である。
入れ子ループを有するアルゴリズム(GallopingアルゴリズムやWalkingアルゴリズムなど)の場合、最終ローカル・アドレス信号は、上記と同じ方法で生成されることが可能である。しかしながら、最終ベース・アドレス信号は、同じ方法では生成できず、これは、ベース・ループ内の操作間に、多くのサイクルのローカル・ループが挿入されるためである。その代わり、最終ベース・アドレス信号は、最終ローカル・アドレスに基づいてアサートされることが可能である。例えば、最終ベース・アドレス信号は、実際の最終ベース・アドレスに達したときに最終ローカル・アドレス信号をmサイクル遅延させることによって生成されることが可能である(mは、現在のベース・ループの中のローカル・ループに続く操作の数である)。
(k+1)*(n−1)及びmは、両方とも、ステップごとにハードウェアを用いて計算されることが可能である。この計算は、複数のサイクルで行われてもよい。
一例示的プログラマブルMBISTコントローラの設計には、Marchアルゴリズム、Galloping/Walkingアルゴリズム、Butterflyテスト、Sliding diagonalテスト、及びアドレスPMOS開放故障のテストの全てが含まれる。しかしながら、例えばハードウェアの制限やテスト時間の制限などにより、これらのテストの全てが、いつも使用されたり、使用されることを許可されたりするわけではない。そのため、様々なタイプのアルゴリズムからアルゴリズムが選択されて含まれるようにプログラムされることが可能なプログラマブル・コントローラを提供することが望ましい。プログラマブルMBISTコントローラの実施形態の一基本形態に組み込まれることが可能な、これらの例示的テスト・アルゴリズムは、5つのグループ(March、Galloping/Walking、Butterfly、Sliding diagonal、及びアドレスPMOS開放故障用テスト)に分けることができる。Marchアルゴリズムは、基本的であり、例えば、プログラマブルMBISTの基本形態に必ず含まれることが可能である。他のグループについては、一部又は全てがプログラマブルMBISTに含まれてもよく、全く含まれなくてもよい。従って、この例によれば、(例えば、フィールドにおいて)どのアルゴリズム及びアルゴリズムの組合せがコントローラに組み込まれるかに応じて、最大16個の異なるバージョンの基本プログラマブルMBISTが可能である。
選択されたグループのアルゴリズムは、面積オーバヘッドを減らすために、可能な限り、ロジックを共用しなければならない。それらのグループのデータ・パスは、2つの部分、即ち、他のグループと共用されることが可能なデータ・パスと、そうでないデータ・パ
スとに分けられることが可能である。この例では、Marchアルゴリズム用のロジックは、全てのグループによって共用される。
命令の設計は、命令デコーダの変更が最小限になるように、実質的には前述のままであってよい。しかしながら、命令デコーダは、使用されない特定のテスト・アルゴリズムに関する一部の命令をデコードしないことによって、簡略化されることが可能である。
2つのバッファ・ペアは、この例では、命令メモリと組み合わせられることが可能である。2つのベース・ループ・バッファは、この例では、全てのアルゴリズムによって使用されることが可能であり、ローカル・ループ・バッファは、この例では、Galloping/Walkingアルゴリズム及びアドレスPMOS開放故障用テストによってのみ使用される。
同様に、ローカル・ループ・バッファPC(LPC)は、この例では、Galloping/Walkingアルゴリズム及びアドレスPMOS開放故障用テストによってのみ必要とされる。それらは、他のグループのためには含まれる必要がない。
制御信号ジェネレータ及びレイテンシ調節器は、同一であってよく、全てのグループに対して用いられることが可能である。データ・ジェネレータは、Sliding diagonalテストの場合を除き、全てのグループについて同一であることが望ましい。Sliding diagonalテストの場合は、斜めメモリ・セルに対してデータ・バックグラウンドが反転されることが望ましい。出力応答アナライザは、Galloping/Slidingアルゴリズムを除く全てのグループに対して同じである。Galloping/Walkingアルゴリズムの場合は、ベース・アドレスがローカル・アドレスと等しいときには、メモリ出力が評価される必要がない。
これらのグループは、制御信号ジェネレータ、レイテンシ調節器、データ・ジェネレータ、及び出力応答アナライザのほとんど全てのロジックを共用するが、わずかな違いがある。
これらのグループ間の主な違いは、アドレス・ジェネレータにある。ローカル・アドレスは、この例では、非線形アルゴリズムによってのみ使用される。ローカル・アドレス・ジェネレータでは、ローカル・オフセットは、この例では、Butterflyテスト及びアドレス開放テストで使用されるだけである。更に、Butterfly専用のローカル・アドレス・ロジックと、アドレス開放テスト専用のローカル・アドレス・ロジックとがある。Sliding diagonalアドレスは、Sliding diagonalアルゴリズム・テストでのみ使用される。そのような構成要素は、対応するアルゴリズム・グループが含まれる場合のみ追加される。
診断のために、診断データがATEにスキャン・アウトされることが可能である。ATEは、故障を検出するために用いられるテスト・ステップ及びテスト操作を識別できなければならない。そのためには、ATEは、テストに失敗するメモリ・アドレスを知る必要がある。ATEは更に、期待メモリ出力と実際のメモリ出力との比較結果が必要である。
前の診断データがまだ完全にはスキャン・アウトされていないうちに第2の故障が検出されると、問題が発生する可能性がある。この問題に対処する例示的方法を3つ示す。(1)前の診断データを保持し、新たに検出された故障を無視する。(2)BISTコントローラを一時停止及び再開する。(3)第2の故障があった時点でテスト・アルゴリズムをリスタートする。第1の方法は、幾つかの故障を報告し損なう可能性があり、第2の方
法は、幾つかの、時間に関連した故障を検出し損なう可能性がある。第3の方法の利点は、テスト品質を損なわないことである。
しかしながら、第3のアプローチは、前の故障を完了する前に第2の故障を検出すると、テスト・アルゴリズムをリスタートさせるので、他の2つの方法と比較して診断時間が長くなる可能性がある。リスタート・ポイントは、アルゴリズムの先頭でなくてもよい。しかしながら、リスタート・ポイントは、故障の初期設定ポイントでなければならない。従って、アルゴリズムのリスタート・ポイントを指定することに特化された命令が、含まれることが可能である。
これらの診断アプローチも、用いられることが可能である。
診断のための例示的拡張命令を、次の表13に列挙する。
Figure 2009259398
幾つかの例示的実施形態を参照しながら本発明の原理を図示及び説明してきたが、これらの実施形態及び概念は、本発明の範囲内にありながら、配置及び細部を変更されることが可能であることは、当業者にとっては自明であろう。そのような全ての変更を特許請求するものとする。

Claims (69)

  1. 少なくとも1つのメモリを備える集積回路であって、前記メモリをテストすべく、前記メモリの少なくとも1つのメモリ・テスト・アルゴリズムのためのテスト・データを適用するために、前記メモリは、セルと、前記集積回路の製造後に命令をプログラムすることによってプログラム可能なメモリ・ビルト・イン・セルフ・テスト(MBIST)回路とを備え、前記少なくとも1つのメモリ・テスト・アルゴリズムは、前記MBIST回路をプログラムすることによって決定され、前記MBIST回路は、
    プログラミング命令を受け取ることに適合された命令メモリと、
    プログラミング命令を受け取り、デコードすることに適合された命令デコーダと、
    前記デコードされたプログラミング命令に応答して、前記少なくとも1つのテスト・アルゴリズムを実行するためにテスト・データを適用されるべき、前記メモリのセルのアドレス指定を決定するアドレス・ジェネレータであって、前記デコードされたプログラミング命令に応答して、少なくとも1つの入れ子ループを有する少なくとも1つのメモリ・テスト・アルゴリズムが実行されるように前記メモリのセルをアドレス指定するアドレス・ジェネレータと、
    前記デコードされたプログラミング命令に従って、前記メモリの、前記アドレス指定されたセルにテスト・データを適用することと、前記適用されたテスト・データに対する、前記アドレス指定されたセルからの期待応答の出力を提供することとに適合されたデータ・ジェネレータであって、前記メモリは、前記適用されたテスト・データに応答して、前記アドレス指定されたセルから出力されたテスト結果を提示する、データ・ジェネレータと、
    前記適用されたテスト・データに対する、前記メモリの1つ又は複数のセルからの期待応答と、前記適用されたテスト・データに対する、そのような1つ又は複数のセルについての対応するテスト結果とを比較するよう動作可能な出力アナライザと、を備える、集積回路。
  2. 請求項1に記載の集積回路であって、前記アルゴリズムは、複数のステップを含み、ステップ内に少なくとも2つの入れ子ループがあり、前記ステップ内で前記入れ子ループに対して実行されるメモリ操作は、前記メモリの動作可能動作速度で実行される、集積回路。
  3. 請求項1に記載の集積回路であって、前記プログラミング命令は、アルゴリズム命令ワードと構成命令ワードとを含み、前記構成命令ワードは、前記メモリのセルのベース・アドレスを変更する形式に関する命令を含む、集積回路。
  4. 請求項1に記載の集積回路であって、前記プログラミング命令は、アルゴリズム命令ワードと構成命令ワードとを含み、前記アルゴリズムは、複数のステップからなり、現在のアルゴリズム・ステップ内の全ての操作に対してアドレス指定スキームが同じままであることによって、前記デコーダは、前記現在のアルゴリズム・ステップの操作が実行されている間に、次のアルゴリズム・ステップのための前記アドレス・スキームを構成命令ワードから決定するよう動作可能である、集積回路。
  5. 請求項1に記載の集積回路であって、前記メモリは、アレイの形に配列されたセルを備え、各セルは、前記アレイ内のセルの行及び列に対応するアドレスを有し、前記アドレス・ジェネレータは、ベース・アドレス・ジェネレータ部分を含み、前記ベース・アドレス・ジェネレータ部分は、セルのベース行アドレス及びベース列アドレスを並行して決定するよう動作可能であり、且つ、最終ベース・アドレスを示すよう動作可能であり、前記アドレス・ジェネレータは、更に、ローカル・アドレス・ジェネレータ部分を含み、前記ローカル・アドレス・ジェネレータ部分は、セルのローカル行アドレス及びローカル列アド
    レスを並行して決定するよう動作可能であり、且つ、最終ローカル・アドレスを示すよう動作可能である、集積回路。
  6. 請求項5に記載の集積回路であって、前記ローカル・アドレス・ジェネレータ部分は、第1の行及び第1の列のアドレス以外の、前記メモリ内の選択された行及び選択された列にあるセルから開始するよう、選択的に動作可能である、集積回路。
  7. 請求項5に記載の集積回路であって、前記ローカル・アドレス・ジェネレータ部分は、前記メモリの基準セル・ロケーションから開始するよう、選択的に動作可能である、集積回路。
  8. 請求項1に記載の集積回路であって、前記デコーダは、少なくとも1つの命令バッファを備え、前記少なくとも1つの命令バッファは、アルゴリズム命令デコーダ部分と、少なくとも1つのアドレス構成バッファ及びアドレス構成デコーダとに結合された部分を受け取る、集積回路。
  9. 請求項1に記載の集積回路であって、前記プログラミング命令は、アルゴリズム命令ワードと構成命令ワードとを含み、1つ又は複数の構成命令ワードが、前記構成ワードのサブセットであるアドレス構成命令部分を含み、前記命令デコーダは、アルゴリズム命令ワード及びアドレス構成命令部分をバッファリング及びデコードするよう動作可能なステップ・コントローラ部分を含み、前記デコーダは、更に、前記構成ワードの、アドレス構成命令部分以外の部分をデコードするよう動作可能な構成ワード・デコーダ部分を含む、集積回路。
  10. 請求項9に記載の集積回路であって、前記ステップ・コントローラは、OPレベル・バッファ部分と、命令バッファ部分と、初期設定インデックス・バッファ部分と、最終初期設定バッファ部分と、ジャンプ・アドレス・インデックス・バッファ部分と、最終ループ・バッファ部分とを含む、集積回路。
  11. 請求項1に記載の集積回路であって、前記アドレス・ジェネレータは、デコードされたプログラミング命令に応答して、少なくとも複数の入れ子ループを有する少なくとも1つのテスト・アルゴリズムを実行するテスト・データが前記メモリに適用されるように、セルのアドレスを指定する、集積回路。
  12. 請求項1に記載の集積回路であって、前記アドレス・ジェネレータは、デコードされたプログラミング命令に応答して、Galloping、Walking 0/1、及びアドレス・デコーダPMOS開放故障の各テスト・アルゴリズムからなるグループのテスト・アルゴリズムのうちの1つ又は複数を実行するテスト・データが前記メモリに適用されるように、セルのアドレスを指定する、集積回路。
  13. 請求項12に記載の集積回路であって、前記アドレス・ジェネレータは、デコードされたプログラミング命令に応答して、March1、March2、March3、列March、一意、Checkerboard、Sliding diagonal、Butterfly、ポート相互作用、ポート隔離、書き込みイネーブル故障検出、メモリ制御信号テスト、ROM1、及びROM2の各アルゴリズムからなるグループの追加テスト・アルゴリズムのうちの任意の1つ又は複数を実行するテスト・データが前記メモリに適用されるように、セルのアドレスを指定する、集積回路。
  14. 請求項1に記載の集積回路であって、前記アドレス・ジェネレータは、入れ子ループのアルゴリズム・ステップに関連付けられた操作の間にデータが適用されるべき、各セルの
    実アドレスを生成するよう動作可能な、イントラ反復アドレス・ジェネレータと、前記入れ子ループに関連付けられた操作の実行の後に到達されるべきループに対応する、次のループ・アドレス値を生成するよう動作可能な、インター反復アドレス・ジェネレータとを備える、集積回路。
  15. 請求項14に記載の集積回路であって、前記メモリは、各セルが行アドレス及び列アドレスを有するセルのアレイを備え、前記イントラ反復アドレス・ジェネレータは、各セルの行アドレスと、各セルの列アドレスとを、並行して決定し、前記インター反復アドレス・ジェネレータは、前記次のループ・アドレス値の行アドレスと、前記次のループ・アドレス値の列アドレスとを、並行して決定する、集積回路。
  16. セルのアレイを備える少なくとも1つのメモリを備える集積回路であって、各セルは、行アドレス及び列アドレスを有し、前記集積回路は、更に、前記少なくとも1つのメモリに結合された、少なくとも1つのメモリ・ビルト・イン・セルフ・テスト(MBIST)回路を備え、前記MBIST回路は、
    プログラミング命令をデコードするように適合されたデコーダを備え、前記プログラミング命令は、構成命令ワードとアルゴリズム命令ワードとを含み、前記デコーダは、アルゴリズム命令ワードと構成命令ワードとを区別することと、前記アルゴリズム命令ワードと前記構成命令ワードとを別々にデコードすることとに適合され、前記構成命令ワードは、少なくとも1つのテスト・アルゴリズムを指定するアルゴリズム指定部分を含み、前記テスト・アルゴリズムは、前記テスト・アルゴリズムに従って前記メモリをテストするために適用されるべきテスト・ステップを含み、前記アルゴリズム命令ワードは、テスト・ステップ中に実行されるべきメモリ操作を指定するメモリ・アクセス操作部分を含む、集積回路。
  17. 請求項16に記載の集積回路であって、前記MBIST回路は、前記デコーダと、
    前記デコーダと結合され、前記プログラミング命令を受け取るように適合された命令メモリと、
    前記デコーダに結合され、前記プログラミング命令に応答し、テスト・アルゴリズムの実行時にテスト・データを適用されるべき、前記メモリのセルのアドレス指定を決定するように構成された、アドレス・ジェネレータと、
    前記デコードされたプログラミング命令に従って、前記アドレス指定されたセルに前記テスト・データを適用することと、前記適用されたテスト・データに対する、前記アドレス指定されたセルからの期待応答の出力を提供することとに適合されたデータ・ジェネレータであって、前記メモリは、前記適用されたテスト・データに応答して、前記アドレス指定されたセルから出力されたテスト結果を提示する、データ・ジェネレータと、
    適用されたテスト・データに対する、セルからの、少なくとも選択された期待応答と、前記対応するセルから出力されたテスト結果とを比較して、前記少なくとも1つのメモリに関するテスト結果を提供するよう動作可能な出力アナライザと、を備える、集積回路。
  18. 請求項17に記載の集積回路であって、前記第1及び第2のバッファ部分のそれぞれは、ベース・ループ・バッファ部分及びローカル・ループ・バッファ部分を含む、集積回路。
  19. 請求項18に記載の集積回路であって、前記ベース・ループ・バッファ部分は、ベース・ループの間に、メモリの少なくとも選択されたベース・アドレスに対して実行されるベース・アドレス操作のシーケンスを記憶し、前記ローカル・バッファは、ローカル・ループの間に、前記ベース・アドレス以外の、少なくとも選択されたローカル・アドレスに対して実行されるローカル・アドレス操作のシーケンスを記憶し、前記MBIST回路は、ローカル・アドレス操作の前記シーケンスが開始されたベース・アドレスを記憶し、前記
    ローカル・アドレス操作の完了後にその次のベース・アドレス操作から操作を再開するよう動作可能である、集積回路。
  20. 請求項16に記載の集積回路であって、前記構成命令は、メモリ回路テスト操作である
    (a)前記MBIST回路によってテストされる複数のメモリに対し、任意の1つ又は複数のテスト・アルゴリズムを、順次連続的に適用することと、
    (b)前記MBIST回路によってテストされる複数のメモリに対し、任意の1つ又は複数のテスト・アルゴリズムを、順次インタリーブ的に適用することと、
    (c)テストのために前記MBIST回路に割り当てられた複数のメモリから、1つ又は複数のメモリを選択することと、のうちの1つ又は複数が実行されるようにテスト・アルゴリズムを実行するために、前記MBIST回路の実行時に前記MBIST回路をプログラムする命令を含む、集積回路。
  21. 請求項16に記載の集積回路であって、前記構成命令は、
    (a)テストのために、少なくとも1つのメモリからなるメモリ・バンクを選択する操作と、
    (b)テストのために、少なくとも1つのメモリからなるページを選択する操作と、
    (c)テストのために、少なくとも1つのメモリからなるポートを選択する操作と、
    (d)テストされるメモリのメモリ・アドレス範囲の一部を選択する操作と、
    (e)診断モニタリングが実行されるべきかどうかを選択する操作と、
    (f)1つ又は複数の特定のアルゴリズムに対して診断モニタリングが実行されるべきかどうかを選択する操作と、のうちの任意の1つ又は複数を実行するために、前記MBIST回路の実行時に前記MBIST回路をプログラムする命令を含む、集積回路。
  22. 請求項16に記載の集積回路であって、前記構成命令は、テスト時にデータ・ワードの指定された部分を使用するために、前記MBIST回路の実行時に前記MBIST回路をプログラムする命令を含む、集積回路。
  23. 請求項16に記載の集積回路であって、前記デコーダは、アルゴリズム命令をデコードするアルゴリズム・デコーダ部分と、構成命令をデコードする構成デコーダ部分とを含む、集積回路。
  24. 請求項23に記載の集積回路であって、前記アルゴリズム・デコーダ部分及び構成デコーダ部分は、並行して動作して、アルゴリズム命令のデコードと、構成命令のデコードとを、それぞれが並行して行う、集積回路。
  25. 請求項24に記載の集積回路であって、前記アルゴリズム・デコーダ部分は、アルゴリズム命令を第1の速度でデコードするよう動作可能であり、前記構成デコーダ部分は、前記構成命令の少なくとも一部を第2の速度でデコードするよう動作可能であり、前記第2の速度は、前記第1の速度より遅い、集積回路。
  26. 請求項25に記載の集積回路であって、前記第1の速度は、少なくとも、前記メモリの動作可能動作速度である、集積回路。
  27. 請求項24に記載の集積回路であって、前記アルゴリズム・デコーダ部分は、少なくとも第1及び第2のバッファ部分を含み、前記第1及び第2のバッファ部分は、前記第1のバッファ部分が、以前に受け取ったアルゴリズム命令ワードをアルゴリズム・デコーダに供給している間に、前記第2のバッファ部分がアルゴリズム命令ワードを受け取り、前記第2のバッファ部分が、以前に受け取ったアルゴリズム命令ワードをアルゴリズム・デコーダに供給している間に、前記第1のバッファ部分がアルゴリズム命令ワードを受け取る
    ように、並行して動作する、集積回路。
  28. 請求項27に記載の集積回路であって、前記第1及び第2のバッファ部分のそれぞれは、ベース・ループ・バッファ部分及びローカル・ループ・バッファ部分を含む、集積回路。
  29. 請求項28に記載の集積回路であって、前記ベース・ループ・バッファ部分は、ベース・ループの間に、メモリの少なくとも選択されたベース・アドレスに対して実行されるベース・アドレス操作のシーケンスを記憶し、前記ローカル・バッファは、ローカル・ループの間に、前記ベース・アドレス以外の、少なくとも選択されたローカル・アドレスに対して実行されるローカル・アドレス操作のシーケンスを記憶し、前記MBIST回路は、ローカル・アドレス操作の前記シーケンスが開始されたベース・アドレスを記憶し、前記ローカル・アドレス操作の完了後にその次のベース・アドレス操作から操作を再開するよう動作可能である、集積回路。
  30. 請求項29に記載の集積回路であって、前記構成命令ワードは、前記ベース・アドレスを変更する形式に関する命令を含む、集積回路。
  31. 請求項30に記載の集積回路であって、ステップ内の全ての操作に対して前記アドレス指定スキームが同じままであることによって、前記デコーダは、現在のアルゴリズム・ステップの操作が実行されている間に、次のアルゴリズム・ステップのための前記アドレス・スキームを構成ワードから決定するよう動作可能である、集積回路。
  32. 請求項17に記載の集積回路であって、前記メモリは、アレイの形に配列されたセルを備え、各セルは、前記アレイ内のセルの行及び列に対応するアドレスを有し、前記アドレス・ジェネレータは、ベース・アドレス・ジェネレータ部分を含み、前記ベース・アドレス・ジェネレータ部分は、セルのベース行アドレス及びベース列アドレスを並行して決定するよう動作可能であり、且つ、最終ベース・アドレスを示すよう動作可能であり、前記アドレス・ジェネレータは、更に、ローカル・アドレス・ジェネレータ部分を含み、前記ローカル・アドレス・ジェネレータ部分は、セルのローカル行アドレス及びローカル列アドレスを並行して決定するよう動作可能であり、且つ、最終ローカル・アドレスを示すよう動作可能である、集積回路。
  33. 請求項32に記載の集積回路であって、前記ローカル・アドレス・ジェネレータ部分は、第1の行及び第1の列のアドレス以外の、前記メモリ内の選択された行及び選択された列にあるセルから開始するよう、選択的に動作可能である、集積回路。
  34. 請求項32に記載の集積回路であって、前記ローカル・アドレス・ジェネレータ部分は、前記メモリの基準セル・ロケーションから開始するよう、選択的に動作可能である、集積回路。
  35. 請求項16に記載の集積回路であって、前記デコーダは、少なくとも1つの命令バッファを備え、前記少なくとも1つの命令バッファは、アルゴリズム命令デコーダ部分と、少なくとも1つのアドレス構成バッファ及びアドレス構成デコーダとに結合された部分を受け取る、集積回路。
  36. テストされるべき少なくとも1つのメモリと、メモリ・ビルト・イン・テスト(MBIST)回路とを備える集積回路であって、前記MBIST回路は、自動テスト装置(ATE)から受け取った命令に応答して、少なくとも1つのテスト・アルゴリズムを、前記少なくとも1つのメモリに適用するように構成され、前記MBIST回路は、
    前記ATEから命令を受け取るように適合された命令メモリと、
    前記命令をデコードし、構成命令とアルゴリズム命令とを分離するよう動作可能な命令デコーダと、
    前記デコードされた命令に応答して、前記デコードされた命令から決定されたアドレス指定スキームに従って、前記テストされるメモリのセルをアドレス指定するアドレス・ジェネレータであって、前記アドレス指定スキームは、前記アドレス指定されたセルにテスト・データが適用されると、前記少なくとも1つのメモリをテストするために前記少なくとも1つのテスト・アルゴリズムが実行されるように、前記メモリのセルをアドレス指定する、アドレス・ジェネレータと、
    前記デコードされた命令から決定されたように、前記少なくとも1つのテスト・アルゴリズムが前記メモリに対して実行されるように、アドレス指定されたメモリ・セルにテスト・データを適用するデータ・ジェネレータであって、前記メモリは、前記データ・ジェネレータからデータを受け取った、少なくとも選択されたセルからのテスト応答出力を提示する、データ・ジェネレータと、
    テスト結果を提供すべく、期待応答データと、前記選択されたセルから出力された実際のテスト応答とを比較するよう動作可能な出力応答アナライザと、
    前記テスト結果によって故障が示された場合に診断データを記録する診断モニタと、を備える集積回路。
  37. 請求項36に記載の集積回路であって、前記命令メモリは、前記ATEから命令を受け取るように適合されたシフト・レジスタを備え、前記シフト・レジスタは、受け取った命令を、先入れ先出し(FIFO)バッファが満杯になるまで、FIFOバッファにパラレルにロードし、満杯になったら、受け取った命令のロードを一時停止し、前記FIFOバッファからの命令は、命令バッファに転送され、前記FIFOバッファが空になった後に、前記ATEが、前記シフト・レジスタに命令を供給するよう合図され、前記FIFOバッファが、満杯になるまで、前記シフト・レジスタによってリロードされ、この操作は、MBISTテストの間、繰り返される、集積回路。
  38. 請求項36に記載の集積回路であって、前記命令メモリから命令を受け取るように、前記命令メモリに結合された命令バッファを備える集積回路であって、現在のテスト・アルゴリズムの実行中に故障が検出された場合に、前記診断モニタが、前記故障に関する診断データを記録し、前記MBIST回路が、前記現在のステップの実行を一時停止し、前記診断データが、前記ATEにスキャン・アウトされ、前記診断データがスキャン・アウトされた後に、前記MBIST回路が、(a)前記命令バッファにある前記現在のアルゴリズム・ステップを、前記現在のアルゴリズム・ステップの先頭から再実行し、(b)前記メモリを、前記現在のステップの現在の状態が開始される前に存在した状態に再初期設定する、集積回路。
  39. 請求項36に記載の集積回路であって、前記診断モニタは、故障が検出された時点で診断データをロードされる単一レジスタを備え、前記診断データは、前記ATEにスキャン・アウトされる、集積回路。
  40. 請求項36に記載の集積回路であって、前記テスト・アルゴリズムのテスト・ステップ内のメモリ操作の間に、前記メモリの動作の少なくとも定格動作速度又は動作可能動作速度で、テストされる前記メモリにデータが適用され、前記診断モニタは、前記メモリの少なくとも定格動作速度又は動作可能動作速度でメモリ操作が実行されているときに、診断データを記録するよう動作可能である、集積回路。
  41. 請求項36に記載の集積回路であって、前記診断モニタは、BISTクロック・ドメインで動作する第1の有限状態機械と、診断クロック・ドメインで動作する第2の有限状態
    機械と、を備える、集積回路。
  42. 集積回路に含まれる少なくとも1つのメモリをテストする方法であって、
    前記集積回路のメモリ・テスト部分の命令メモリに配信される構成命令及びアルゴリズム命令をデコードするステップと、
    前記メモリに適用されるべきテスト・ステップを含む少なくとも1つのテスト・アルゴリズムを、前記デコードされた命令から決定するステップと、
    前記少なくとも1つのテスト・アルゴリズムに従って、前記メモリ内の少なくとも選択されたセルをテストするために、テスト・データを適用されるべき前記セルをアドレス指定するステップと、と含み、前記選択されたセルをアドレス指定する操作は、テスト・ステップ内の、少なくとも特定のメモリ・アクセス操作の間に、前記メモリの動作可能動作速度でセルがアドレス指定されるように達成され、
    前記アドレス指定されたセルにテスト・データを適用するステップと、
    テスト・データが適用された、少なくとも選択されたセルから読み出された出力結果を解析して、前記テスト結果が、前記適用されたテスト・データに対する応答としての、前記選択されたセルからの期待テスト結果と一致するかどうかを判定するステップと、を含む方法。
  43. 請求項42に記載の方法であって、前記アドレス指定操作は、前記テスト・アルゴリズムのうちの1つの、少なくとも1つの外側ループの中に入れ子にされた、前記テスト・アルゴリズムのうちの1つの、少なくとも1つの内側ループのセルをアドレス指定するステップを含み、前記アドレス指定動作は、入れ子ループ・アルゴリズムを含む少なくとも1つのテスト・アルゴリズムが実装されるように、前記内側ループのセルと前記外側ループのセルとの間の遷移をアドレス指定するステップを含む、方法。
  44. 請求項43に記載の方法であって、前記アドレス指定操作は、複数の入れ子ループのセルをアドレス指定するステップを含み、前記アドレス指定動作は、複数の入れ子ループを含む少なくとも1つのテスト・アルゴリズムが実装されるように、異なるループのセル間の遷移をアドレス指定するステップを含む、方法。
  45. 請求項44に記載の方法であって、前記アドレス指定操作は、少なくともループ内のメモリ・アクセス操作の間に、前記メモリの前記動作可能動作速度でセルをアドレス指定するステップを含む、方法。
  46. 請求項45に記載の方法であって、動作可能動作速度テストによって明らかになった、選択されたエラーに関して、診断データを記録する操作を含む、方法。
  47. 請求項42に記載の方法であって、複数のテスト・アルゴリズムを実装するために、構成命令及びアルゴリズム命令を前記集積回路に配信する操作を含む、方法。
  48. 請求項42に記載の方法であって、前記デコード操作は、アルゴリズム命令をデコードするステップと、構成命令をデコードするステップを、並行して行うことを含む、方法。
  49. 請求項48に記載の方法であって、前記デコード操作に加えて、少なくとも1つの第2のバッファが後続のテスト・ステップのメモリ操作を受け取っている間に、少なくとも1つの第1のバッファに格納された1つのテスト・ステップのメモリ操作を実行し、前記第1のバッファが次の後続のテスト・ステップのメモリ操作を受け取っている間に、前記第2のバッファに格納された前記後続のテスト・ステップの操作を実行する操作を含む、方法。
  50. 請求項49に記載の方法であって、前記少なくとも1つの第1のバッファは、テスト・ステップに従って全てのベース・アドレスに対して実行される操作のシーケンスを格納する、少なくとも1つの第1のベース・ループ・バッファを備え、前記少なくとも1つの第2のバッファは、テスト・アルゴリズム・ステップに従って全てのベース・アドレスに対して実行される操作のシーケンスを格納する、少なくとも1つの第2のベース・ループ・バッファを備え、前記少なくとも1つの第1のバッファは、更に、前記第1のベース・ループ・バッファの操作に関連付けられたベース・アドレスと異なるローカル・アドレスに対して実行される操作のシーケンスを格納する第1のローカル・ループ・バッファを備え、前記少なくとも1つの第2のバッファは、更に、前記第2のベース・ループ・バッファの操作に関連付けられたベース・アドレスと異なるローカル・アドレスに対して実行される操作のシーケンスを格納する第2のローカル・ループ・バッファを備える、方法。
  51. 請求項50に記載の方法であって、前記ローカル・アドレスは、前記ベース・アドレスに関連付けられた操作に関する、前記ベース・アドレス以外の、前記メモリ・セルの全てのアドレスを含む、方法。
  52. 請求項50に記載の方法であって、前記ローカル・アドレスは、前記ベース・アドレスに関連付けられた操作に関する、前記ベース・アドレス以外の、前記メモリ・セルのアドレスの、全てより少ないサブセットを含む、方法。
  53. 請求項50に記載の方法であって、前記ベース・ループ・バッファ内の現在のベース・アドレスに関連付けられたローカル・アドレス・バッファに格納された動作のシーケンスが実行された後に、前記現在のベース・アドレスから、前記ベース・ループ・バッファ内の次のベース・アドレスに達する操作を含む、方法。
  54. 請求項50に記載の方法であって、前記メモリ内の少なくとも選択されたセルをアドレス指定する操作は、前記選択されたセルのそれぞれについて、行アドレス及び列アドレスを、並行して決定するステップを含む、方法。
  55. 請求項50に記載の方法であって、前記アドレス指定操作は、選択されたセルのグループの第1のセルから、前記選択されたセルのグループの最後のセルまでのアドレスを指定するステップを含む、方法。
  56. 請求項50に記載の方法であって、前記アドレス指定操作は、基準セルから始まる、前記メモリの全てのセルをアドレス指定するステップを含む、方法。
  57. 請求項56に記載の方法であって、前記基準セルは、前記メモリのセルのアレイの第1の行アドレス及び第1の列アドレスにある、方法。
  58. 装置であって、
    構成命令ワード及びアルゴリズム命令ワードを受け取る手段と、
    構成命令ワード及びアルゴリズム命令ワードをデコードする手段と、
    前記デコードされたプログラミング命令に応答して、メモリ・セルに対する少なくとも1つのテスト・アルゴリズムの実行を達成するために、前記メモリ・セルをアドレス指定する手段と、
    前記デコードされたプログラミング命令に従って、前記アドレス指定されたセルにデータを適用し、前記適用されたデータに対する、アドレス・セルからの期待応答の出力を提供する手段と、
    前記メモリのセルからの少なくとも選択された期待応答と、適用されたデータに対する応答としての、アドレス・セルからのテスト・データ出力とを解析して、前記メモリにつ
    いてのテスト結果を提供する手段と、
    前記テスト結果から診断データを収集する手段とを、備える装置。
  59. MBIST回路を提供する方法であって、
    ユーザが、集積回路の1つ又は複数のメモリをテストするために、MBIST回路によって実行されることをユーザが望む1つ又は複数のメモリ・テスト・アルゴリズムを適用するために必要な入れ子ループの数を、指定することと、
    前記ユーザによって指定された数の入れ子ループを有するメモリ・テスト・アルゴリズムを実行することが可能であるように構成されたMBIST回路を合成するステップとを、含む方法。
  60. 請求項59に記載の方法であって、前記ユーザによって指定された入れ子ループが少なくとも2レベルある、方法。
  61. MBIST回路を提供する方法であって、
    ユーザが、複数のカテゴリのメモリ・テスト・アルゴリズムの中から、少なくとも1つのカテゴリのアルゴリズムを指定することと、
    前記ユーザによって指定された前記少なくとも1つのカテゴリのアルゴリズムからなるメモリ・テスト・アルゴリズムを実行することが可能であるように構成されたMBIST回路を合成するステップとを、含む方法。
  62. 請求項61に記載の方法であって、前記ユーザ指定された少なくとも1つのカテゴリのアルゴリズムは、複数の入れ子ループを含む少なくとも1つのアルゴリズムを含む、方法。
  63. MBISTコントローラを提供する方法であって、
    実行されることをユーザが望むメモリ・テスト・アルゴリズムをMBIST回路が実行するために必要なアドレス・ジェネレータの数を、ユーザが指定することと、
    実行されることを前記ユーザが望む前記メモリ・テスト・アルゴリズムを実行するために、前記ユーザによって指定された数のアドレス・ジェネレータを有するように構成されたMBIST回路を合成するステップと、含む方法。
  64. 集積回路であって、
    前記集積回路の少なくとも1つのメモリに、1つ又は複数のメモリ・テスト・アルゴリズムを適用することに用いられるMBIST回路を備え、前記MBIST回路は、
    少なくとも1つの入れ子ループを含むメモリ・テスト・アルゴリズムを実行するために、ATEからの命令によってプログラムされることが可能な、第1のプログラマブルMBIST回路部分を含む、集積回路。
  65. 請求項64に記載の集積回路であって、前記MBIST回路は、前記第1のプログラマブルMBIST回路部分に加えて、有限状態機械のハード・コードされた命令によって決定される少なくとも1つのメモリ・テスト・アルゴリズムを実行する前記ハード・コードされた命令を含む、集積回路。
  66. 請求項64に記載の集積回路であって、前記第1のプログラマブルMBIST回路部分は、複数のループを含むアルゴリズム・ステップ内で、前記アルゴリズム・ステップを含むアルゴリズムによってテストされるメモリの動作可能動作速度でメモリ操作を実行するために、ATEからの命令によってプログラムされることが可能である、集積回路。
  67. 少なくとも1つのメモリを備える集積回路であって、前記メモリをテストすべく、前記
    メモリの少なくとも1つのメモリ・テスト・アルゴリズムのためのテスト・データを適用するために、前記メモリは、セルと、前記集積回路の製造後に命令をプログラムすることによってプログラム可能なメモリ・ビルト・イン・セルフ・テスト(MBIST)回路とを備え、前記少なくとも1つのメモリ・テスト・アルゴリズムは、前記MBIST回路をプログラムすることによって決定され、前記MBIST回路は、
    プログラミング命令を受け取ることに適合された命令メモリと、
    プログラミング命令を受け取り、デコードすることに適合された命令デコーダと、
    前記デコードされたプログラミング命令に応答して、前記少なくとも1つのテスト・アルゴリズムを実行するためにテスト・データを適用されるべき、前記メモリのセルのアドレス指定を決定するアドレス・ジェネレータであって、前記デコードされたプログラミング命令に応答して、少なくとも1つの入れ子ループを有する少なくとも1つのメモリ・テスト・アルゴリズムが実行されるように前記メモリのセルをアドレス指定するアドレス・ジェネレータと、
    前記デコードされたプログラミング命令に従って、前記メモリの、前記アドレス指定されたセルにテスト・データを適用することと、前記適用されたテスト・データに対する、前記アドレス指定されたセルからの期待応答の出力を提供することとに適合されたデータ・ジェネレータであって、前記メモリは、前記適用されたテスト・データに応答して、前記アドレス指定されたセルから出力されたテスト結果を提示する、データ・ジェネレータと、
    前記適用されたテスト・データに対する、前記メモリの1つ又は複数のセルからの期待応答と、前記適用されたテスト・データに対する、そのような1つ又は複数のセルについての対応するテスト結果とを比較するよう動作可能な出力アナライザと、を備え、
    前記プログラミング命令は、アルゴリズム命令ワード及び構成命令ワードを含み、前記アルゴリズムは、複数のステップからなり、アルゴリズム・ステップの現在のループ内の全ての操作に対してアドレス指定スキームが同じままである、集積回路。
  68. メモリ・ビルト・イン・セルフ・テスト(MBIST)回路を備える集積回路であって、前記MBIST回路は、MBIST回路要素である、
    (a)少なくとも1つのインター反復アドレス・ジェネレータ及び少なくとも1つのイントラ反復アドレス・ジェネレータと、
    (b)MBISTテストに用いられる場合に、アルゴリズム・ステップ内でのマルチレベル入れ子ループの実行を可能にする、少なくとも1つのステップ・コントローラと、
    (c)MBISTテストに用いられる場合に、命令を前記命令レジスタから先入れ先出し(FIFO)バッファにパラレルにロードすることを可能にする、前記FIFOバッファに結合されたレジスタを備える命令メモリと、
    (d)MBISTテストに用いられる場合に、故障が検出されたステップに対応する現在のアルゴリズム・ステップからテストをリスタートすることを可能にする、診断モニタと、のうちの1つ又は複数を、前記集積回路を収容するチップに含む、集積回路。
  69. 請求項1に記載の集積回路であって、前記プログラミング命令は、アルゴリズム命令ワード及び構成命令ワードを含み、前記アルゴリズムは、複数のステップからなり、アルゴリズム・ステップの現在のアルゴリズム・ループ内の全ての操作に対してアドレス指定スキームが同じままであり、前記アドレス指定スキームは、アルゴリズム・ステップのループ間で調整可能である、集積回路。
JP2009185404A 2004-11-18 2009-08-10 プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置 Pending JP2009259398A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62939504P 2004-11-18 2004-11-18
US73349305P 2005-11-04 2005-11-04

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007543319A Division JP4494474B2 (ja) 2004-11-18 2005-11-18 プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置

Publications (1)

Publication Number Publication Date
JP2009259398A true JP2009259398A (ja) 2009-11-05

Family

ID=36407815

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007543319A Active JP4494474B2 (ja) 2004-11-18 2005-11-18 プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置
JP2009185404A Pending JP2009259398A (ja) 2004-11-18 2009-08-10 プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2007543319A Active JP4494474B2 (ja) 2004-11-18 2005-11-18 プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置

Country Status (4)

Country Link
US (3) US7428680B2 (ja)
EP (1) EP1825479A4 (ja)
JP (2) JP4494474B2 (ja)
WO (1) WO2006055862A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017502386A (ja) * 2013-12-26 2017-01-19 インテル・コーポレーション 集積回路の欠陥検出および修復

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7533309B2 (en) * 2004-02-26 2009-05-12 Nilanjan Mukherjee Testing memories using algorithm selection
US7558948B2 (en) * 2004-09-20 2009-07-07 International Business Machines Corporation Method for providing zero overhead looping using carry chain masking
US7447965B2 (en) * 2005-05-03 2008-11-04 Agere Systems Inc. Offset test pattern apparatus and method
US7272756B2 (en) * 2005-05-03 2007-09-18 Agere Systems Inc. Exploitive test pattern apparatus and method
US20070033471A1 (en) * 2005-06-09 2007-02-08 Raguram Damodaran Hardware Configuration of pBIST
EP1899877A4 (en) * 2005-06-27 2011-12-28 Arithmosys Inc METHOD FOR SPECIFICATION OF STATE-OF-THE-ART TRANSACTION-ORIENTED SYSTEMS AND FLEXIBLE PICTURE DEVICES TO A STRUCTURALLY CONFIGURABLE IN-STORAGE PROCESSING SEMICONDUCTOR COMPONENT
DE102006004168A1 (de) * 2005-08-04 2007-02-08 Robert Bosch Gmbh Überprüfung eines Adressdecoders
US7945823B2 (en) * 2006-03-02 2011-05-17 Netlogic Microsystems, Inc. Programmable address space built-in self test (BIST) device and method for fault detection
US20080016421A1 (en) * 2006-07-13 2008-01-17 International Business Machines Corporation Method and apparatus for providing programmable control of built-in self test
US20080195901A1 (en) * 2007-02-12 2008-08-14 Marvell Semiconductor Israel Ltd. Op-code based built-in-self-test
US7840865B2 (en) * 2007-03-23 2010-11-23 Mentor Graphics Corporation Built-in self-test of integrated circuits using selectable weighting of test patterns
JP4407722B2 (ja) * 2007-05-23 2010-02-03 ソニー株式会社 表示装置
US7805644B2 (en) * 2007-12-29 2010-09-28 Texas Instruments Incorporated Multiple pBIST controllers
JP4799580B2 (ja) * 2008-03-31 2011-10-26 株式会社東芝 半導体集積回路
US7882406B2 (en) * 2008-05-09 2011-02-01 Lsi Corporation Built in test controller with a downloadable testing program
US8156391B2 (en) * 2008-05-27 2012-04-10 Lsi Corporation Data controlling in the MBIST chain architecture
US8046643B2 (en) * 2008-06-09 2011-10-25 Lsi Corporation Transport subsystem for an MBIST chain architecture
US8170857B2 (en) * 2008-11-26 2012-05-01 International Business Machines Corporation In-situ design method and system for improved memory yield
US7906983B2 (en) * 2008-12-08 2011-03-15 Intuitive Research And Technology Programmable logic device having an embedded test logic with secure access control
US7908530B2 (en) * 2009-03-16 2011-03-15 Faraday Technology Corp. Memory module and on-line build-in self-test method thereof for enhancing memory system reliability
US20100257415A1 (en) * 2009-04-01 2010-10-07 Faraday Technology Corp. Instruction-based programmable memory built-in self test circuit and address generator thereof
US8065572B2 (en) * 2009-06-30 2011-11-22 Oracle America, Inc. At-speed scan testing of memory arrays
US8489943B2 (en) * 2009-12-15 2013-07-16 Stmicroelectronics International N.V. Protocol sequence generator
NL2004407C2 (en) * 2010-03-16 2011-09-20 Tu Delft Generic march element based memory built-in self test.
US8433976B1 (en) * 2010-04-27 2013-04-30 Altera Corporation Row column interleavers and deinterleavers with efficient memory usage
JP2012027734A (ja) * 2010-07-23 2012-02-09 Panasonic Corp メモリコントローラおよびメモリアクセスシステム
US8468408B2 (en) 2010-09-16 2013-06-18 Advanced Micro Devices, Inc. Memory built-in self test (MBIST) circuitry configured to facilitate production of pre-stressed integrated circuits and methods
US8423846B2 (en) * 2010-09-16 2013-04-16 Advanced Micro Devices, Inc. Integrated circuit with memory built-in self test (MBIST) circuitry having enhanced features and methods
US8392772B2 (en) * 2010-09-16 2013-03-05 Texas Instruments Incorporated On-chip memory testing
US8239818B1 (en) 2011-04-05 2012-08-07 International Business Machines Corporation Data structure for describing MBIST architecture
CN102737725A (zh) * 2011-04-13 2012-10-17 复旦大学 自动优化存储器性能的可编程内建自测系统和方法
US20130019130A1 (en) * 2011-07-15 2013-01-17 Synopsys Inc. Testing electronic memories based on fault and test algorithm periodicity
CN103021467B (zh) * 2011-09-27 2016-09-07 意法半导体研发(深圳)有限公司 故障诊断电路
US9910086B2 (en) 2012-01-17 2018-03-06 Allen Czamara Test IP-based A.T.E. instrument architecture
US8872322B2 (en) 2012-10-22 2014-10-28 International Business Machines Corporation Stacked chip module with integrated circuit chips having integratable built-in self-maintenance blocks
US8853847B2 (en) 2012-10-22 2014-10-07 International Business Machines Corporation Stacked chip module with integrated circuit chips having integratable and reconfigurable built-in self-maintenance blocks
US9194912B2 (en) 2012-11-29 2015-11-24 International Business Machines Corporation Circuits for self-reconfiguration or intrinsic functional changes of chips before vs. after stacking
US9436567B2 (en) * 2012-12-18 2016-09-06 Advanced Micro Devices, Inc. Memory bit MBIST architecture for parallel master and slave execution
US9773570B2 (en) 2013-03-06 2017-09-26 International Business Machines Corporation Built-in-self-test (BIST) test time reduction
US9251915B2 (en) * 2013-11-11 2016-02-02 Advantest Corporation Seamless fail analysis with memory efficient storage of fail lists
KR20150064452A (ko) * 2013-12-03 2015-06-11 에스케이하이닉스 주식회사 내장형 셀프 테스트 회로 및 이를 포함한 반도체 장치
US9564245B2 (en) * 2013-12-26 2017-02-07 Intel Corporation Integrated circuit defect detection and repair
US9316689B2 (en) 2014-04-18 2016-04-19 Breker Verification Systems Scheduling of scenario models for execution within different computer threads and scheduling of memory regions for use with the scenario models
US20160003900A1 (en) * 2014-07-04 2016-01-07 Texas Instruments Incorporated Self-test methods and systems for digital circuits
US9514842B2 (en) * 2014-09-24 2016-12-06 Apple Inc. Memory testing system
US9836373B2 (en) * 2014-11-26 2017-12-05 Texas Instruments Incorporated On-chip field testing methods and apparatus
US9946620B2 (en) 2015-02-03 2018-04-17 Invecas, Inc. Memory built-in self test system
US10153055B2 (en) * 2015-03-26 2018-12-11 International Business Machines Corporation Arbitration for memory diagnostics
US11119893B2 (en) * 2015-09-22 2021-09-14 Advanced Micro Devices, Inc. Computing system with wireless debug code output
CN106409343B (zh) * 2016-08-31 2019-10-25 上海华力微电子有限公司 适用于各类周期性测试算法的存储器内建自测试电路
US10318433B2 (en) * 2016-12-20 2019-06-11 Texas Instruments Incorporated Streaming engine with multi dimensional circular addressing selectable at each dimension
CN110082672B (zh) * 2018-01-25 2020-09-11 大唐移动通信设备有限公司 一种芯片内逻辑模型的测试方法及装置
US10408876B2 (en) * 2018-01-29 2019-09-10 Oracle International Corporation Memory circuit march testing
US10593419B1 (en) * 2018-02-12 2020-03-17 Cadence Design Systems, Inc. Failing read count diagnostics for memory built-in self-test
US10685730B1 (en) 2018-03-20 2020-06-16 Seagate Technology Llc Circuit including efficient clocking for testing memory interface
US10665319B1 (en) * 2018-09-20 2020-05-26 Amazon Technologies, Inc. Memory device testing
US10818374B2 (en) 2018-10-29 2020-10-27 Texas Instruments Incorporated Testing read-only memory using memory built-in self-test controller
US10910081B2 (en) * 2018-12-17 2021-02-02 Micron Technology, Inc. Management of test resources to perform reliability testing of memory components
US11101015B2 (en) 2018-12-17 2021-08-24 Micron Technology, Inc. Multi-dimensional usage space testing of memory components
CN111833959B (zh) * 2020-07-20 2022-08-02 北京百度网讯科技有限公司 存储器的测试的方法、装置、电子设备和计算机可读存储介质
CN112363875B (zh) * 2020-10-21 2023-04-07 海光信息技术股份有限公司 一种系统缺陷检测方法、设备、电子设备和存储介质
CN112951314B (zh) * 2021-02-01 2023-05-05 上海航天计算机技术研究所 一种基于tsc695处理器的可加载型通用ram自测试方法
US11847035B2 (en) * 2021-08-23 2023-12-19 International Business Machines Corporation Functional test of processor code modification operations
TWI777889B (zh) * 2022-01-10 2022-09-11 芯測科技股份有限公司 用於產生記憶體自我測試演算法電路之方法
US12051476B2 (en) 2022-05-11 2024-07-30 Nxp Usa, Inc. Testing disruptive memories

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS621031A (ja) * 1985-03-25 1987-01-07 Hitachi Ltd デ−タ処理装置
JPS63263535A (ja) * 1987-04-22 1988-10-31 Hitachi Ltd デ−タ処理システム
JPH04343132A (ja) * 1991-05-20 1992-11-30 Advantest Corp 中央演算処理装置
JPH0943317A (ja) * 1995-07-26 1997-02-14 Advantest Corp 高速パターン発生方法及びこの方法を用いた高速パターン発生器
JP2673602B2 (ja) * 1990-07-13 1997-11-05 ソニー・テクトロニクス株式会社 制御装置
WO1998047152A1 (fr) * 1997-04-16 1998-10-22 Hitachi, Ltd. Circuit integre a semi-conducteur et procede pour tester la memoire
JP2860655B2 (ja) * 1988-08-31 1999-02-24 日本テキサス・インスツルメンツ株式会社 並列命令実行型プロセッサ
JPH1173774A (ja) * 1997-06-26 1999-03-16 Fujitsu Ltd 半導体記憶装置
JP2968288B2 (ja) * 1989-11-07 1999-10-25 株式会社リコー 中央演算処理装置
JP2001148199A (ja) * 1999-11-19 2001-05-29 Mitsubishi Electric Corp 自己テスト回路内蔵半導体記憶装置
JP2002140900A (ja) * 2000-07-26 2002-05-17 Internatl Business Mach Corp <Ibm> マイクロコードと有限状態機械セルフテストを組み合わせるプログラマブル・メモリビルトイン・セルフテスト
JP2003029966A (ja) * 2001-07-17 2003-01-31 Hitachi Ltd データ処理装置
JP2004030783A (ja) * 2002-06-26 2004-01-29 Sony Corp パターン発生回路及び半導体装置並びに半導体装置の試験方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5173906A (en) 1990-08-31 1992-12-22 Dreibelbis Jeffrey H Built-in self test for integrated circuits
US5253349A (en) * 1991-01-30 1993-10-12 International Business Machines Corporation Decreasing processing time for type 1 dyadic instructions
US5469443A (en) 1993-10-01 1995-11-21 Hal Computer Systems, Inc. Method and apparatus for testing random access memory
US6070252A (en) * 1994-09-30 2000-05-30 Intel Corporation Method and apparatus for interactive built-in-self-testing with user-programmable test patterns
US5661732A (en) * 1995-05-31 1997-08-26 International Business Machines Corporation Programmable ABIST microprocessor for testing arrays with two logical views
US20020071325A1 (en) * 1996-04-30 2002-06-13 Hii Kuong Hua Built-in self-test arrangement for integrated circuit memory devices
US6347256B1 (en) * 1998-11-02 2002-02-12 Printcafe System, Inc. Manufacturing process modeling techniques
KR100308621B1 (ko) 1998-11-19 2001-12-17 윤종용 반도체 메모리 장치를 위한 프로그램 가능한 내장 자기 테스트 시스템
US6415403B1 (en) * 1999-01-29 2002-07-02 Global Unichip Corporation Programmable built in self test for embedded DRAM
US6567942B1 (en) * 1999-11-08 2003-05-20 International Business Machines Corporation Method and apparatus to reduce the size of programmable array built-in self-test engines
US6553527B1 (en) * 1999-11-08 2003-04-22 International Business Machines Corporation Programmable array built-in self test method and controller with programmable expect generator
US6671837B1 (en) 2000-06-06 2003-12-30 Intel Corporation Device and method to test on-chip memory in a production environment
US6874111B1 (en) * 2000-07-26 2005-03-29 International Business Machines Corporation System initialization of microcode-based memory built-in self-test
US6769081B1 (en) * 2000-08-30 2004-07-27 Sun Microsystems, Inc. Reconfigurable built-in self-test engine for testing a reconfigurable memory
US7168005B2 (en) * 2000-09-14 2007-01-23 Cadence Design Systems, Inc. Programable multi-port memory BIST with compact microcode
US6671843B1 (en) * 2000-11-13 2003-12-30 Omar Kebichi Method for providing user definable algorithms in memory BIST
US6760872B2 (en) * 2001-03-19 2004-07-06 Cypress Semiconductor Corp. Configurable and memory architecture independent memory built-in self test
CA2345605A1 (en) 2001-04-30 2002-10-30 Robert A. Abbott Method of testing embedded memory array and embedded memory controller for use therewith
US6347056B1 (en) * 2001-05-16 2002-02-12 Motorola, Inc. Recording of result information in a built-in self-test circuit and method therefor
US6950974B1 (en) 2001-09-07 2005-09-27 Synopsys Inc. Efficient compression and application of deterministic patterns in a logic BIST architecture
EP1343173A1 (en) * 2002-03-04 2003-09-10 iRoC Technologies Prgrammable test for memories
EP1387255B1 (en) 2002-07-31 2020-04-08 Texas Instruments Incorporated Test and skip processor instruction having at least one register operand
DE60216268D1 (de) 2002-08-08 2007-01-04 St Microelectronics Srl Eingebaute Selbsttestschaltung für integrierte Schaltungen
JP4205396B2 (ja) * 2002-10-30 2009-01-07 エルピーダメモリ株式会社 半導体集積回路装置
US7020820B2 (en) * 2002-12-20 2006-03-28 Sun Microsystems, Inc. Instruction-based built-in self-test (BIST) of external memory
US7062694B2 (en) * 2003-02-07 2006-06-13 Sun Microsystems, Inc. Concurrently programmable dynamic memory built-in self-test (BIST)
US6959256B2 (en) * 2003-05-16 2005-10-25 Analog Devices, Inc. Universally accessible fully programmable memory built-in self-test (MBIST) system and method
US7444564B2 (en) * 2003-11-19 2008-10-28 International Business Machines Corporation Automatic bit fail mapping for embedded memories with clock multipliers
US7325178B2 (en) * 2003-12-05 2008-01-29 Texas Instruments Incorporated Programmable built in self test of memory
US7533309B2 (en) 2004-02-26 2009-05-12 Nilanjan Mukherjee Testing memories using algorithm selection
US7206979B1 (en) 2004-06-28 2007-04-17 Sun Microsystems, Inc. Method and apparatus for at-speed diagnostics of embedded memories
US7181659B2 (en) 2005-02-10 2007-02-20 International Business Machines Corporation Memory built-in self test engine apparatus and method with trigger on failure and multiple patterns per load capability

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS621031A (ja) * 1985-03-25 1987-01-07 Hitachi Ltd デ−タ処理装置
JPS63263535A (ja) * 1987-04-22 1988-10-31 Hitachi Ltd デ−タ処理システム
JP2860655B2 (ja) * 1988-08-31 1999-02-24 日本テキサス・インスツルメンツ株式会社 並列命令実行型プロセッサ
JP2968288B2 (ja) * 1989-11-07 1999-10-25 株式会社リコー 中央演算処理装置
JP2673602B2 (ja) * 1990-07-13 1997-11-05 ソニー・テクトロニクス株式会社 制御装置
JPH04343132A (ja) * 1991-05-20 1992-11-30 Advantest Corp 中央演算処理装置
JPH0943317A (ja) * 1995-07-26 1997-02-14 Advantest Corp 高速パターン発生方法及びこの方法を用いた高速パターン発生器
WO1998047152A1 (fr) * 1997-04-16 1998-10-22 Hitachi, Ltd. Circuit integre a semi-conducteur et procede pour tester la memoire
JPH1173774A (ja) * 1997-06-26 1999-03-16 Fujitsu Ltd 半導体記憶装置
JP3723340B2 (ja) * 1997-06-26 2005-12-07 富士通株式会社 半導体記憶装置
JP2001148199A (ja) * 1999-11-19 2001-05-29 Mitsubishi Electric Corp 自己テスト回路内蔵半導体記憶装置
JP2002140900A (ja) * 2000-07-26 2002-05-17 Internatl Business Mach Corp <Ibm> マイクロコードと有限状態機械セルフテストを組み合わせるプログラマブル・メモリビルトイン・セルフテスト
JP2003029966A (ja) * 2001-07-17 2003-01-31 Hitachi Ltd データ処理装置
JP2004030783A (ja) * 2002-06-26 2004-01-29 Sony Corp パターン発生回路及び半導体装置並びに半導体装置の試験方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017502386A (ja) * 2013-12-26 2017-01-19 インテル・コーポレーション 集積回路の欠陥検出および修復
US9922725B2 (en) 2013-12-26 2018-03-20 Intel Corporation Integrated circuit defect detection and repair

Also Published As

Publication number Publication date
WO2006055862A3 (en) 2006-09-14
US20060146622A1 (en) 2006-07-06
US7434131B2 (en) 2008-10-07
US20060156133A1 (en) 2006-07-13
JP4494474B2 (ja) 2010-06-30
EP1825479A4 (en) 2008-04-16
US20060156134A1 (en) 2006-07-13
EP1825479A2 (en) 2007-08-29
JP2008521159A (ja) 2008-06-19
WO2006055862A2 (en) 2006-05-26
US7428680B2 (en) 2008-09-23
US7426668B2 (en) 2008-09-16

Similar Documents

Publication Publication Date Title
JP4494474B2 (ja) プログラマブル・メモリ・ビルト・イン・セルフ・テスト(mbist)の方法及び装置
KR970004074B1 (ko) 메모리 장치 및 이를 포함한 집적 회로
Du et al. Full-speed field-programmable memory BIST architecture
US20020059543A1 (en) Full-speed bist controller for testing embedded synchronous memories
US7533309B2 (en) Testing memories using algorithm selection
JP4809568B2 (ja) メモリ自己テストの方法と装置
JP5336692B2 (ja) 内部アットスピード論理bistを用いた論理ブロックの自動故障試験
US6553527B1 (en) Programmable array built-in self test method and controller with programmable expect generator
Boutobza et al. Programmable memory BIST
JP3640350B2 (ja) マイクロコードと有限状態機械セルフテストを組み合わせるプログラマブル・メモリビルトイン・セルフテスト
EP1411435A2 (en) Command set for a software programmable verification tool having built-in selftest (bist) for testing and debugging an embedded device under test (dut)
CN110415751B (zh) 一种可参数化配置的存储器内建自测试电路
JP2001297598A (ja) 半導体集積回路装置、及び半導体集積回路装置の自己テスト方法
Wang et al. A built-in self-test and self-diagnosis scheme for heterogeneous SRAM clusters
Du et al. A field programmable memory BIST architecture supporting algorithms with multiple nested loops
Cheng Comprehensive study on designing memory BIST: algorithms, implementations and trade-offs
Zarrineh et al. Self test architecture for testing complex memory structures
Shen et al. A high speed BIST architecture for DDR-SDRAM testing
Nourmandi-Pour A programmable IEEE 1500-compliant wrapper for testing of word-oriented memory cores
EP1411433A2 (en) A software programmable verification tool having multiple built-in self-test (bist) modules for testing and debugging multiple devices under test (dut)
Du et al. Full-speed field programmable memory BIST supporting multi-level looping
JP3628545B2 (ja) メモリー素子用内蔵自己テスト回路
KR20060018542A (ko) 메모리 자체 테스트 회로 생성기
JP2002243801A (ja) 半導体集積回路
EP1338014A1 (en) AT-SPEED BUILT-IN SELF TESTING OF MULTI-PORT COMPACT sRAMs

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090907

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100524

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101015