(57)【特許請求の範囲】
【請求項１】
各メモリセルがそれぞれの目標状態にプログラム可能であるメモリセルのアレイを有する不揮発性メモリにおいて、前記メモリセルのグループを並列にプログラムする方法であって、
（ａ）プログラム中に前記グループの各メモリセルにプログラムインデックスを提供するステップであって、メモリセルの前記プログラムインデックスは前記メモリセルをプログラムするのに使用される最後のプログラミング電圧レベルを示す、前記プログラムインデックスを提供するステップと、
（ｂ）プログラミング電圧をプログラミングパスの一連の増加する電圧パルスとして前記メモリセルのグループに印加するステップと、
（ｃ）前記メモリセルのプログラムインデックスに従って前記プログラミングパスの間にメモリセルのプログラミングを可能にするかあるいはプログラミングを禁止するステップと、
（ｄ）前記グループのメモリセルをそのそれぞれの目標状態に対してベリファイするステップと、
（ｅ）次のプログラミングパスで使用される最後のプログラミング電圧レベルを反映するための所定の増加によってベリファイされていないメモリセルの前記プログラムインデックスを更新し、かつ次のプログラミングパスでベリファイされていない前記メモリセルをさらにプログラミングできるようにするステップと、
（ｆ）前記グループのメモリセルがそのそれぞれの目標しきい値電圧レベルに対してベリファイされるまで（ｂ）〜（ｅ）を繰り返すステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記プログラミング電圧を一連の増加する電圧パルスとして印加するステップが、前記プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される方法。
【請求項３】
請求項１記載の方法において、
前記プログラムインデックスによって示される最後のプログラミング電圧レベルが、前記メモリセルをプログラムするのに使用される最後の電圧パルスを特定するパルス数によって表される方法。
【請求項４】
請求項１記載の方法において、
最初のプログラミングパスの第１の段階の間に、チェックポイントとして指定された第１のメモリ状態に達するまで、各プログラミング電圧パルスの後にベリファイステップが続き、
最初のプログラミングパスの第２の段階の間に、チェックポイントに関して各メモリセルのそれぞれの目標状態の所定の関数によって推定されたレベルにプログラミング電圧が達している場合には、各メモリセルをチェックポイントからそのそれぞれの目標状態にベリファイステップなしでプログラムし、
前記メモリセルのプログラムインデックスが、最初のプログラミングパスで前記メモリセルをプログラムするのに使用される最後のプログラミング電圧レベルによって得られる方法。
【請求項５】
請求項４記載の方法において、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、前記セルの目標状態から所定の不足分の範囲内に前記メモリセルをプログラムすると推定されるプログラミング電圧レベルに最初に設定される方法。
【請求項６】
請求項５記載の方法において、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、所定の関数によって最初に設定され、
前記所定の関数が、計算されたプログラミング電圧値を前記メモリセルの目標状態の関数として生成する方法。
【請求項７】
請求項６記載の方法において、
前記所定の関数は、実質的に線形関数である方法。
【請求項８】
請求項６記載の方法において、
前記所定の関数は線形であり、推定された傾きおよびチェックポイントによって定義される方法。
【請求項９】
請求項８記載の方法において、
指定されたしきい値電圧レベルで所定の関数のチェックポイントを指定するステップと、
前記メモリセルが指定されたしきい値電圧レベルでプログラムベリファイされるまで、前記メモリセルを交互にプログラムおよびベリファイすることによって対応するチェックポイントプログラミング電圧値を決定するステップと、
前記チェックポイントに従って所定の関数を較正するステップと、
をさらに含む方法。
【請求項１０】
請求項１記載の方法において、
前記メモリセルにプログラムされるプログラムデータを記憶する一連のデータラッチを提供するステップと、
前記一連のデータラッチに加えて、前記メモリセルがプログラムベリファイされているか否かを示す状態を記憶するラッチを提供するステップと、
をさらに含む方法。
【請求項１１】
請求項１記載の方法において、
各増加する電圧パルスが、前記メモリセルを１つのメモリ状態から隣接するメモリ状態へ実質的にプログラムする電圧レベルを有する方法。
【請求項１２】
請求項１記載の方法において、
各メモリセルが、電界効果トランジスタのフローティングゲートである電荷蓄積素子を有する方法。
【請求項１３】
請求項１記載の方法において、
各メモリセルが、電界効果トランジスタの誘電層である電荷蓄積素子を有する方法。
【請求項１４】
請求項１記載の方法において、
前記不揮発性メモリが、ＮＡＮＤ構造を有するメモリセルを有する方法。
【請求項１５】
請求項１記載の方法において、
前記不揮発性メモリは、フラッシュＥＥＰＲＯＭである方法。
【請求項１６】
請求項１記載の方法において、
前記不揮発性メモリが、メモリカードに具現化される方法。
【請求項１７】
請求項１記載の方法において、
プログラム中の前記メモリセルが、それぞれ２ビット以上のデータを記憶する方法。
【請求項１８】
不揮発性メモリであって、
各メモリセルがそれぞれの目標状態にプログラム可能であるメモリセルのアレイと、
メモリセルのグループを並列に読み出すとともにプログラムする読み出し／書き込み回路と、
プログラム中の前記グループの各メモリセルのプログラムインデックスであって、前記メモリセルをプログラムするのに使用される最後のプログラミング電圧レベルを示すメモリセルのプログラムインデックスと、を備え、
プログラミングを実施する前記読み出し／書き込み回路が、
（ａ）プログラミング電圧をプログラミングパスの一連の増加する電圧パルスとして前記メモリセルのグループに印加することと、
（ｂ）前記メモリセルのプログラムインデックスに従って前記プログラミングパスの間にメモリセルのプログラミングを可能にするかあるいはプログラミングを禁止することができることと、
（ｃ）前記グループのメモリセルをそのそれぞれの目標状態に対してベリファイすることと、
（ｄ）次のプログラミングパスで使用される最後のプログラミング電圧レベルを反映するための所定の増加によってベリファイされていないメモリセルの前記プログラムインデックスを更新し、かつ次のプログラミングパスでベリファイされていない前記メモリセルをさらにプログラミングできるようにすることと、
（ｅ）前記グループのメモリセルがそのそれぞれの目標しきい値電圧レベルに対してベリファイされるまで（ａ）〜（ｄ）を繰り返すことと、
を含む不揮発性メモリ。
【請求項１９】
請求項１８記載の不揮発性メモリにおいて、
プログラミング電圧を一連の増加する電圧パルスとして印加する前記読み出し／書き込み回路が、前記プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップを実施しない不揮発性メモリ。
【請求項２０】
請求項１８記載の不揮発性メモリにおいて、
前記プログラムインデックスによって示される最後のプログラミング電圧レベルが、前記メモリセルをプログラムするのに使用される最後の電圧パルスを特定するパルス数によって表される不揮発性メモリ。
【請求項２１】
請求項１８記載の不揮発性メモリにおいて、
最初のプログラミングパスの第１の段階の間に、前記読み出し／書き込み回路が、チェックポイントとして指定された第１のメモリ状態に達するまで、各プログラミング電圧パルスの後に続くベリファイステップを実施し、
最初のプログラミングパスの第２の段階の間に、チェックポイントに関して各メモリセルのそれぞれの目標状態の所定の関数によって推定されたレベルにプログラミング電圧が達している場合には、前記読み出し／書き込み回路が、各メモリセルをチェックポイントからそのそれぞれの目標状態にベリファイステップなしでプログラムし、
前記メモリセルのプログラムインデックスが、最初のプログラミングパスで前記メモリセルをプログラムするのに使用される最後のプログラミング電圧レベルによって得られる不揮発性メモリ。
【請求項２２】
請求項２１記載の不揮発性メモリにおいて、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、前記メモリセルの目標状態から所定の不足分の範囲内に前記メモリセルをプログラムすると推定されるプログラミング電圧レベルに最初に設定される不揮発性メモリ。
【請求項２３】
請求項２２記載の不揮発性メモリにおいて、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、所定の関数によって最初に設定され、
前記所定の関数が、計算されたプログラミング電圧値を前記メモリセルの目標状態の関数として生成する不揮発性メモリ。
【請求項２４】
請求項２３記載の不揮発性メモリにおいて、
前記所定の関数は、実質的に線形関数である不揮発性メモリ。
【請求項２５】
請求項２３記載の不揮発性メモリにおいて、
前記所定の関数は線形であり、推定された傾きおよびチェックポイントによって定義される不揮発性メモリ。
【請求項２６】
請求項２５記載の不揮発性メモリにおいて、
前記所定の関数を較正する前記読み出し／書き込み回路が、
指定されたしきい値電圧レベルで前記所定の関数のチェックポイントを指定することと、
前記メモリセルが指定されたしきい値電圧レベルでプログラムベリファイされるまで、前記メモリセルを交互にプログラムおよびベリファイすることによって対応するチェックポイントプログラミング電圧値を決定することと、
前記チェックポイントに従って前記所定の関数を較正することと、
を含む不揮発性メモリ。
【請求項２７】
請求項１８記載の不揮発性メモリにおいて、
前記メモリセルにプログラムされるプログラムデータを記憶する一連のデータラッチと、
前記一連のデータラッチに加えて、前記メモリセルがプログラムベリファイされているか否かを示す状態を記憶するラッチと、
をさらに備える不揮発性メモリ。
【請求項２８】
請求項１８記載の不揮発性メモリにおいて、
各増加する電圧パルスが、前記メモリセルを１つのメモリ状態から隣接するメモリ状態へ実質的にプログラムする電圧レベルを有する不揮発性メモリ。
【請求項２９】
請求項１８記載の不揮発性メモリにおいて、
各メモリセルが、電界効果トランジスタのフローティングゲートである電荷蓄積素子を有する不揮発性メモリ。
【請求項３０】
請求項１８記載の不揮発性メモリにおいて、
各メモリセルが、電界効果トランジスタの誘電層である電荷蓄積素子を有する不揮発性メモリ。
【請求項３１】
請求項１８記載の不揮発性メモリにおいて、
前記不揮発性メモリが、ＮＡＮＤ構造を有するメモリセルを有する不揮発性メモリ。
【請求項３２】
請求項１８記載の不揮発性メモリにおいて、
前記不揮発性メモリは、フラッシュＥＥＰＲＯＭである不揮発性メモリ。
【請求項３３】
請求項１８記載の不揮発性メモリにおいて、
前記不揮発性メモリが、メモリカードに具現化される不揮発性メモリ。
【請求項３４】
請求項１８記載の不揮発性メモリにおいて、
プログラム中の前記メモリセルが、それぞれ２ビット以上のデータを記憶する不揮発性メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）およびフラッシュＥＥＰＲＯＭなどの不揮発性半導体メモリに関し、特に、プログラムベリファイ動作の回数を最小限にしたメモリおよびプログラミング動作に関する。
【背景技術】
【０００２】
近年、様々な携帯型およびハンドヘルド型装置、とりわけ情報機器および家庭用電化製品において、特に、小形のフォームファクタカードとしてパッケージ化されたＥＥＰＲＯＭおよびフラッシュＥＥＰＲＯＭの形態をとる電荷の不揮発性記憶が可能なソリッドステートメモリが好んで用いられる記憶装置となっている。同じくソリッドステートメモリであるＲＡＭ（ランダムアクセスメモリ）とは異なり、フラッシュメモリは不揮発性であり、電源を切った後でもその記憶データを保持している。コストが上昇するにもかかわらず、フラッシュメモリは、大容量記憶用途でますます使用されつつある。ハードドライブやフロッピーディスクなどの回転式磁気媒体に基づく従来の大容量記憶装置は、携帯型およびハンドヘルド型の環境には適していない。その理由は、ハードドライブは大型になりがちで機械的不良を起こしやすく、長い待ち時間および大電力要件を有するためである。このような望ましくない属性により、ディスクに基づく記憶装置は大部分の携帯型および移動式用途において実用的でなくなっている。一方、フラッシュメモリは内蔵型でも取り外し可能なカードの形態をとるものでも、小型、低消費電力、高速および高信頼性というその特徴によって携帯型およびハンドヘルド型の環境に理想的に適している。
【０００３】
ＥＥＰＲＯＭおよび電気的にプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）は、消去するとともにそのメモリセル内に新しいデータを書き込むかまたは「プログラムする」ことができる不揮発性メモリである。両方とも半導体基板内のソース領域とドレイン領域との間のチャネル領域上に位置する電界効果トランジスタ構造のフローティング（接続されていない）導電ゲートを使用している。次に、フローティングゲート上にはコントロールゲートが設けられる。トランジスタのしきい値電圧特性は、フローティングゲート上に保持される電荷量によって制御される。すなわち、フローティングゲート上の所与の電荷レベルに対して対応する電圧（しきい値）が存在し、トランジスタが「オン」に転換されてそのソース領域とドレイン領域との間で導通が可能になる前にこの対応する電圧をコントロールゲートに印加する必要がある。
【０００４】
フローティングゲートは、様々な範囲の電荷を保持することができるので、しきい値電圧ウィンドウ内の任意のしきい値電圧レベルにプログラムすることができる。しきい値電圧ウィンドウの大きさは、デバイスの最小および最大しきい値レベルであり、フローティングゲート上にプログラムすることができる電荷の範囲に対応するレベルによって画定されている。しきい値ウィンドウは、一般に、メモリデバイスの特性、動作条件および動作履歴に依存している。原則として、ウィンドウ内のそれぞれ特異的で分解可能なしきい値電圧レベルの範囲を用いて、セルの明確なメモリ状態を指定することもできる。しきい値電圧ウィンドウが２つの個別領域に区分されている場合には、各メモリセルは、１ビットのデータを記憶することができることになる。同様に、しきい値電圧ウィンドウが３つ以上の個別領域に区分されている場合には、各メモリセルは、２ビット以上のデータを記憶することができることになる。
【０００５】
通常の２状態ＥＥＰＲＯＭセルでは、導通ウィンドウを２つの領域に区分するように、少なくとも１つの電流ブレークポイントレベルが設定される。セルが所定の固定電圧を印加することによって読み出される場合、セルのソース／ドレイン電流は、ブレークポイントレベル（または基準電流ＩＲＥＦ）と比較することによってメモリ状態が決定される。読み出された電流がブレークポイントレベルの電流よりも高い場合には、セルは一方の論理状態（例えば、「０」状態）にあると判断される。一方、電流がブレークポイントレベルの電流よりも低い場合には、セルは他方の論理状態（例えば、「１」状態）にあると判断される。したがって、このような２状態セルは、１ビットのデジタル情報を記憶している。外部からプログラム可能であってもよい基準電流源をメモリシステムの一部として設けることでブレークポイントレベル電流を発生させることが多い。
【０００６】
メモリ容量を増やすために、フラッシュＥＥＰＲＯＭデバイスは、半導体技術の状態が進歩するに従いますます高密度で製造されるようになっている。記憶容量を増やす別の方法は、各メモリセルに３状態以上を記憶させることである。
多状態またはマルチレベルＥＥＰＲＯＭメモリセルの場合、導通ウィンドウは２つ以上のブレークポイントによって３つ以上の領域に区分され、各セルが２ビット以上のデータを記憶することができるようになっている。したがって、所与のＥＥＰＲＯＭアレイが記憶することができる情報は、各セルが記憶することができる状態の数とともに増加する。多状態またはマルチレベルメモリセルを有するＥＥＰＲＯＭまたはフラッシュＥＥＰＲＯＭは、米国特許第５，１７２，３３８号（特許文献１）に記載されている。
メモリセルとして働くトランジスタは、一般に、２つのメカニズムのうちの１つによって「プログラムされた」状態にプログラムされる。「ホットエレクトロン注入」では、ドレインに印加される高い電圧によって、基板のチャネル領域にわたって電子が加速される。同時に、コントロールゲートに印加される高い電圧によって、ホットエレクトロンは薄いゲート誘電体を介してフローティングゲート上に引き込まれる。「トンネル注入」では、基板に対して高い電圧がコントロールゲートに印加される。このようにして、基板から介在するフローティングゲートに電子が引き込まれる。
【０００７】
メモリデバイスは、多くのメカニズムによって消去され得る。ＥＰＲＯＭの場合、紫外線照射によりフローティングゲートから電荷を取り除くことによってメモリは一括消去可能である。ＥＥＰＲＯＭの場合、コントロールゲートに対して高い電圧を基板に印加することでフローティングゲート内の電子を誘導して薄い酸化物を介して基板のチャネル領域にトンネルさせるようにすること（すなわち、ファウラー−ノルドハイムトンネル現象）によって、メモリセルが電気的に消去可能である。一般に、ＥＥＰＲＯＭは、１バイト毎に消去可能である。フラッシュＥＥＰＲＯＭの場合、メモリは一度に全てのブロックあるいは一度に１つ以上のブロックを電気的に消去可能であり、ブロックは、５１２バイト以上のメモリから構成されてもよい。
メモリデバイスは、一般に、カード上に搭載されることもある１つ以上のメモリチップを含む。各メモリチップは、デコーダならびに消去、書き込みおよび読み出し回路などの周辺回路によってサポートされるメモリセルのアレイを含む。さらに高度なメモリデバイスは、インテリジェントでかつ高水準のメモリ動作およびインターフェイスを実行する外部メモリコントローラで動作する。
【０００８】
今日使用されている不揮発性ソリッドステートメモリデバイスで商業的に成功しているものが多い。このようなメモリデバイスは、フラッシュＥＥＰＲＯＭである場合もあれば他の種類の不揮発性メモリセルを使用している場合もある。フラッシュメモリならびにこれらを製造するシステムおよび方法の例は、米国特許第５，０７０，０３２号（特許文献２）、第５，０９５，３４４号（特許文献３）、第５，３１５，５４１号（特許文献４）、第５，３４３，０６３号（特許文献５）および第５，６６１，０５３号（特許文献６）、第５，３１３，４２１号（特許文献７）ならびに第６，２２２，７６２号（特許文献８）に与えられている。特に、ＮＡＮＤストリング構造を有するフラッシュメモリデバイスは、米国特許第５，５７０，３１５号（特許文献９）、第５，９０３，４９５号（特許文献１０）、第６，０４６，９３５号（特許文献１１）に記載されている。さらに、不揮発性メモリデバイスは、電荷を蓄積する誘電層を有するメモリセルからも製造される。前に説明した導電性フローティングゲート素子の代わりに、誘電層が使用される。このような誘電体記憶素子を使用するメモリデバイスは、Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp.543-545 （非特許文献１）に記載されている。ＯＮＯ誘電層は、ソース拡散とドレイン拡散との間のチャネルにわたって延在する。一方のデータビットに対する電荷はドレインに隣接する誘電層に局在し、他方のデータビットに対する電荷はソースに隣接する誘電層に局在する。例えば、米国特許第５，７６８，１９２号（特許文献１２）および第６，０１１，７２５号（特許文献１３）には、２つの二酸化シリコン層の間に挟まれたトラッピング誘電体を有する不揮発性メモリセルが開示されている。誘電体内の空間的に分離される電荷記憶領域のバイナリ状態を別々に読み出すことによって、多状態データ記憶が実施される。
【０００９】
読み出しおよびプログラミング性能を改善するために、アレイ内の複数の電荷蓄積素子またはメモリトランジスタは、並列に読み出されたりプログラムされたりする。したがって、メモリ素子の「ページ」は、同時に読み出されたりプログラムされたりする。既存のメモリアーキテクチャでは、１つの行は、一般に、インターリーブされた幾つかのページを含むか、１つのページを構成する場合もある。１つのページのすべてのメモリ素子は、同時に読み出されたりプログラムされたりすることになる。
一連の交互に実施されるプログラム／ベリファイサイクルを使用している従来のプログラミング技術は、相対的に大きなＶPGM の変化に応答してセルのしきい値電圧が最初に急速に増大するというプログラミングプロセスにおける不確実性に対処することである。しかし、フローティングゲートにプログラムされる電荷がシールドとして働いて電子をフローティングゲート内にさらにトンネルさせる有効電界を減少させるにつれて、この増大は衰えていき最終的に止まる。このプロセスは極めて非線形に見えるので、試行錯誤しながら進められる。
【００１０】
プログラム／ベリファイプログラミング技術の欠点は、ベリファイサイクルは時間がかかる上に性能に影響を与えることである。この問題は、複数のビットを記憶可能なメモリセルの実施によって深刻化する。本質的に、ベリファイは、メモリセルの可能な複数の状態のそれぞれに対して実施される必要がある。１６の可能なメモリ状態を有するメモリの場合、各ベリファイサイクルが最大１６検知動作まで担うこともあることを意味する。したがって、マルチレベルメモリセル（ＭＬＣ）の識別可能な状態レベルの数が増加するに伴い、プログラム／ベリファイ方式のベリファイサイクルはますます時間がかかるようになる。
【００１１】
２００６年９月１２日にLoc Tuらによって出願された「METHOD FOR NON-VOLATILE MEMORY WITH LINEAR ESTIMATION OF INITIAL PROGRAMMING VOLTAGE」という米国特許出願第１１／５３１，２２７号（特許文献１４）には、線形予測によって最初のプログラミング電圧を推定する方法が開示されている。不揮発性メモリの良好なプログラミング性能を達成するために、最初のプログラミング電圧ＶPGM0およびステップサイズを工場で最適に選択する必要がある。メモリセルの各ページをテストすることによってこれは実現される。選択されたページに接続されるワード線は、パルス間にベリファイを有する一連の階段波形の電圧パルスによって、そのページが指定されたパターンとベリファイされるまで連続的にプログラムされる。ページがプログラムベリファイされた時点のプログラミング電圧を使用して、ページの開始プログラミング電圧の初期値までこれを線形的に縮小することによって推定することになる。この推定は、最初のパスからの推定を第２のパスで使用することによってさらに正確になる。したがって、従来の交互のプログラミングおよびベリファイを使用して、ページをうまくプログラムするための最終プログラミング電圧を設定する。次いで、最終プログラミング電圧を線形的に縮小してページの推定される最初のプログラミング電圧に至る。この種のスケーリングはページレベルでは粗いスケールに基づき、この分野のメモリに対する従来のセル単位のプログラミングおよびベリファイの欠点に対処するものではない。
【００１２】
特に、従来のプログラミングには、すべてのパルス間でベリファイ動作が必要である。メモリが多くのメモリ状態に区分されている場合、ベリファイ動作は、すべてのパルス間で多くの状態をチェックする必要がある。ベリファイ動作の数は、状態区分の数の２乗で増加する。したがって、セル当たり３ビット以上のデータを保持するメモリの場合、ベリファイ動作の数は極端に大きくなる。
従来の方法は、プログラム分解能を改善するためにプログラムパルスステップサイズをより細かくすることである。しかし、このことはプログラムするのに必要なパルスの数を比例的に増加させる効果があり、これによってプログラミング時間が増大する。さらに、従来の方法では、プログラミングパルスの増加は、インターリーブするベリファイの数と組み合わされることになる。
したがって、大容量で高性能な不揮発性メモリが一般的に必要である。特に、前述した欠点が最小限に抑えられた改善されたプログラミング性能を有する大容量不揮発性メモリを有する必要がある。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】米国特許第５，１７２，３３８号
【特許文献２】米国特許第５，０７０，０３２号
【特許文献３】米国特許第５，０９５，３４４号
【特許文献４】米国特許第５，３１５，５４１号
【特許文献５】米国特許第５，３４３，０６３号
【特許文献６】米国特許第５，６６１，０５３号
【特許文献７】米国特許第５，３１３，４２１号
【特許文献８】米国特許第６，２２２，７６２号
【特許文献９】米国特許第５，５７０，３１５号
【特許文献１０】米国特許第５，９０３，４９５号
【特許文献１１】米国特許第６，０４６，９３５号
【特許文献１２】米国特許第５，７６８，１９２号
【特許文献１３】米国特許第６，０１１，７２５号
【特許文献１４】米国特許出願第１１／５３１，２２７号
【特許文献１５】米国特許第５，５９５，９２４号
【特許文献１６】米国公開特許出願第２００６／０１４０００７号
【特許文献１７】米国特許出願第１１／７３３，６９４号
【特許文献１８】米国特許出願第１１／７３３，７０６号
【非特許文献】
【００１４】
【非特許文献１】Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp.543-545
【発明の概要】
【００１５】
インデックスプログラミング
本発明の１つの一般的な態様によれば、メモリセルのグループに対して並列に動作するマルチパスインデックスプログラミング方法は、後のプログラミングパスにおいて、プログラムインデックスに応じてセルのプログラミングを実施したりあるいはプログラミングを禁止したりすることができるように、セルが受け取った最後のプログラミング電圧レベルなどの情報を提供するために、各セルについてプログラムインデックスを維持するステップを含む。
各プログラミングパスにおいて、階段パルストレインの形態をとる一連の増加するパルスとしてプログラミング電圧をメモリセルのグループに印加して、パルスカウントが増加するに伴ってメモリセルが増加するプログラミング電圧を受けるようにするのが好ましい。好適な実施形態では、それぞれ別々のプログラミング電圧レベルは、パルスカウントまたはパルス数として表現するのが便利である。同様に、プログラムインデックスもパルス数によって表現される。
メモリセルのグループのプログラミングパスでは、そのグループのセルのプログラムインデックスを使用して、それぞれの増加するパルスに応じてプログラミングを許可するか禁止するかを制御する。
【００１６】
第１の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から得られる。プログラムインデックスは、プログラムパスの間にプログラムが禁止される前にセルに印加される最後のプログラミング電圧レベルまたはパルス数を記憶する。各セルのプログラムインデックスは、従来のインターリーブプログラム／ベリファイ方法でプログラミングおよびベリファイステップをインターリーブすることによって設定される。グループ内のセルのプログラミングは、セルがプログラムベリファイされて最後のパルス数がそのプログラムインデックスとして記録されると禁止される。この実施例がさらに多くのベリファイステップを担うこともあるが、どのセルも過剰にプログラムする可能性は低い。その結果、各セルについて設定されたプログラムインデックスを後のプログラミングパスでうまく利用してベリファイステップを省くことができる。
【００１７】
第２の実施例では、セルのプログラムインデックスは、そのセルの推定最大プログラミング電圧レベルに最初に設定され、その目標状態に接近しても超えないようにプログラムする。階段パルストレインがグループの各セルに印加されると、そのプログラムインデックスによって示される推定最大プログラミング電圧レベルに達した時点でセルはそれ以上プログラムされるのを禁止される。階段パルストレインのその後のパルスは、禁止されたセルに影響を及ぼさないことになる。プログラミングパスの最後で、グループ内の各セルは、それぞれの目標状態付近にプログラムされることになり、各プログラムインデックスは、各セルが受け取った最後のプログラミング電圧レベルを反映することになる。
【００１８】
第３の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から推定される。特に、メモリセルは、それぞれパルスの後にベリファイが続く一連のプログラミングパルスによって、消去状態から所与のしきい値電圧レベルにプログラムされる。所与のしきい値電圧レベルはチェックポイントとして働き、所与の目標しきい値電圧レベルのプログラムインデックスまたはプログラミング電圧レベルが得られる予測関数を較正する。プログラムインデックスは、１つ以上のチェックポイントによって較正される予測方法によって得られる。
【００１９】
１つの実施形態では、所与の目標しきい値電圧レベルのプログラミング電圧レベルを比例的に生成する線形関数によって所定の関数が近似される。線形関数は、メモリアレイのセルの集団に適用可能な所定の平均値によって与えられる傾きを有する。線形関数は、所与のメモリセルの線形関数上にチェックポイントを予め定めることによって所与のメモリについて一意的に決定される。チェックポイントは、メモリセルを指定されたしきい値電圧レベルにプログラムする実際のプログラミング電圧に基づいている。チェックポイントは、メモリセルの最も低いプログラム状態の１つに対応するのが好ましい。メモリセルは、例えば、従来のプログラム／ベリファイプログラミング技術を使用することによって、まずチェックポイントにプログラムされる。このようにして、メモリセルを指定されたメモリ状態にプログラムするのに必要な実際のプログラミング電圧のチェックポイント値が決定される。したがって、所定の関数は、メモリセルを目標しきい値電圧レベルにプログラムするプログラミング電圧値を決定するのに使用される前にチェックポイントしきい値電圧レベルで評価されたときに、較正されてチェックポイントプログラミング電圧値を生成する。
【００２０】
予測プログラミング技術は、目標状態へのプログラミングがベリファイ動作を必要としない点で有利である。ベリファイ動作は、メモリの可能な状態すべてではなくチェックポイント状態をベリファイする必要があるだけである。
プログラミング精度を向上させ、多状態メモリの各メモリ状態の分布を絞り込むために、追加のプログラミングパスが実施される。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルス間においてベリファイステップを必要としないでセルのグループをプログラムすることができることである。このことは、プログラミング動作の性能を大幅に改善することになる。
【００２１】
本発明の別の一般的な態様によれば、メモリセルのグループに対して並列で動作するマルチパスインデックスプログラミング方法は、最初のプログラミングパスと、各セルのプログラムインデックスの構築とを含む。最初のプログラミングパスの後にベリファイステップおよび追加のプログラミングパスが続き、最初のパスによるいかなる不足もトリミング(trim)する。インデックスプログラミングを使用することによって、大幅に削減された数のベリファイ動作でマルチパスプログラミングが実施される。
次のプログラミングパスの間に、ベリファイ後のセルはそれ以上プログラムされるのを禁止される。ベリファイ前のセルは、そのパスを越えて最後のプログラミングパスで１つのパルスによってプログラムすることができる。ベリファイステップおよびプログラミングパスは、グループ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで繰り返される。このように、ベリファイステップを実施する前にパルストレインの全行程を印加することによって、メモリセルのページをそのそれぞれの目標状態に並列に正しくプログラムすることが可能である。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルスの間にベリファイステップを必要としないでセルのグループをプログラムすることができることである。インデックスプログラミングは、プログラミング動作の性能を大幅に向上させることになる。
【図面の簡単な説明】
【００２２】
【図１】本発明が実施され得る不揮発性メモリチップの機能ブロックを示す概略図である。
【図２】不揮発性メモリセルを示す概略図である。
【図３】フローティングゲートが一度に選択的に蓄積してもよい４つの異なる電荷Ｑ１〜Ｑ４についてのソース−ドレイン電流ＩD とコントロールゲート電圧ＶCGとの間の関係を示す図である。
【図４】メモリセルのＮＯＲアレイの例を示す図である。
【図５Ａ】ＮＡＮＤストリングに編成されるメモリセルのストリングを示す概略図である。
【図５Ｂ】図５Ａに示されるようなＮＡＮＤストリング５０から構成されるメモリセルのＮＡＮＤアレイ２００の例を示す図である。
【図６】メモリセルのアレイにわたってｐ個のセンスモジュールのバンクを含む、図１に示される読み出し／書き込み回路２７０Ａおよび２７０Ｂを示す図である。
【図７】図６に示されるセンスモジュールの好ましい編成を示す概略図である。
【図８】図７に示される読み出し／書き込みスタックをさらに詳細に示す図である。
【図９】（０）〜（２）は４状態メモリセルの集団をプログラムする例を示す図である。
【図１０】（０）〜（２）は８状態メモリセルの集団をプログラムする例を示す図である。
【図１１】４状態メモリセルを目標メモリ状態にプログラムするための従来の方法を示す図である。
【図１２】従来の交互プログラム／ベリファイアルゴリズムを使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。
【図１３】インデックスプログラミング方法の一般的な方式を示す流れ図である。
【図１４Ａ】第１の実施例によるメモリセルのプログラムインデックスを提供することを示す流れ図である。
【図１４Ｂ】メモリセルのプログラムインデックスを得ることの第２の実施例を示す流れ図である。
【図１４Ｃ】１つ以上のチェックポイントによって較正される予測関数を使用してメモリセルのプログラムインデックスを得ることの第３の実施例を示す流れ図である。
【図１４Ｄ】１つの実施形態によるメモリセルのプログラムインデックスを得ることの第３の実施例を示す流れ図である。
【図１４Ｅ】別の実施形態によるメモリセルのプログラムインデックスを得ることの第３の実施例を示す流れ図である。
【図１５】メモリセルを目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧を供給するために使用される所定の関数の好適な実施形態を示す図である。
【図１６】消去状態の上の第１のプログラム状態に対応するチェックポイントの好ましい指定を示す図である。
【図１７】最初のプログラミングパスで使用され各セルのプログラムインデックスを構築する予測プログラミングを示す図である。
【図１８Ａ】各追加のパルスがメモリセルを次のメモリ状態にプログラムするようなステップサイズを有するプログラミング電圧を設定することを示す流れ図である。
【図１８Ｂ】最初のプログラミングパスを受けるメモリセルのしきい値電圧を示す概略図である。
【図１９】メモリセルのプログラムインデックスを設定することの好適な実施例を示す流れ図である。
【図２０】（Ａ）は図１８Ｂに示される「通常」セルの図１９のラッチ動作を示し、（Ｂ）は図１８Ｂに示される「遅い」セルの図１９のラッチ動作を示し、（Ｃ）は図１８Ｂに示される「非常に遅い」セルの図１９のラッチ動作を示す図である。
【図２１】インデックスプログラミング方法の好適な実施形態を示す流れ図である。
【図２２】最初のパスの後でプログラム結果をトリミングするための、図２１のステップ８２０に示される追加のベリファイおよびプログラミングパスを示す図である。
【図２３】ベリファイ状態フラグを記憶するラッチを示す概略図である。
【図２４Ａ】ベリファイ状態フラグの使用によってベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図２４Ｂ】メモリセルのプログラムインデックスをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図２４Ｃ】パルスカウントをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図２５】インデックスプログラミング技術を使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。
【図２６】図２１に示されるインデックスプログラミングパスへの相関マルチパスプログラミングの適用を示す図である。
【図２７】マルチパスプログラミングを使用することによるメモリ状態のしきい値電圧分布の絞り込みを示す図である。
【図２８Ａ】メモリ状態の様々な区分化のために従来のマルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。
【図２８Ｂ】メモリ状態の様々な区分化のために相関マルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。
【図２９】パス間で相関プログラミングレベルを使用するマルチパスプログラミング方法を示す流れ図である。
【発明を実施するための形態】
【００２３】
メモリシステム
図１〜図１０は、本発明の様々な態様が実施され得る例示的なメモリシステムを示す。
図１１および図１２は、従来のプログラミング技術を示す。
図１３〜図２９は、本発明の様々な態様および実施形態を示す。
【００２４】
図１は、本発明が実施され得る不揮発性メモリチップの機能ブロックを概略的に示す。メモリチップ１００は、メモリセルの二次元アレイ２００と、制御回路２１０と、デコーダ、読み出し／書き込み回路およびマルチプレクサなどの周辺回路とを含む。
メモリアレイ２００は、行デコーダ２３０（２３０Ａと２３０Ｂとに分割）を介してワード線によって、および列デコーダ２６０（２６０Ａと２６０Ｂとに分割）を介してビット線によってアドレス指定可能である（図４および図５も参照）。読み出し／書き込み回路２７０（２７０Ａと２７０Ｂとに分割）は、メモリセルのページを並列に読み出すかまたはプログラムできるようにする。データＩ／Ｏバス２３１は、読み出し／書き込み回路２７０に接続されている。
好適な実施形態では、ページは、同一ワード線を共有するメモリセルの隣接する行から構成される。別の実施形態では、メモリセルの行が複数のページに区分されるが、読み出し／書き込み回路２７０を個々のページに多重化するためにブロックマルチプレクサ２５０（２５０Ａと２５０Ｂとに分割）が設けられる。例えば、メモリセルの奇数列および偶数列によってそれぞれ形成される２つのページが読み出し／書き込み回路に多重化される。
【００２５】
図１は、様々な周辺回路によるメモリアレイ２００へのアクセスがアレイの両側で対称的に実施され、それぞれの側のアクセス線および回路の密度を半分に減らすようにしている好適な配置を示す。したがって、行デコーダは行デコーダ２３０Ａと２３０Ｂとに分割され、列デコーダは列デコーダ２６０Ａと２６０Ｂとに分割されている。メモリセルの行が複数のページに区分されている実施形態では、ページマルチプレクサ２５０は、ページマルチプレクサ２５０Ａと２５０Ｂとに分割されている。同様に、読み出し／書き込み回路２７０は、アレイ２００の下部からビット線に接続する読み出し／書き込み回路２７０Ａと、アレイ２００の上部からビット線に接続する読み出し／書き込み回路２７０Ｂとに分割されている。このようにして、読み出し／書き込みモジュールの密度、したがってセンスモジュール３８０の密度は、本質的に２分の１に削減される。
【００２６】
制御回路１１０は、読み出し／書き込み回路２７０と協働してメモリアレイ２００でメモリ動作を実施するオンチップコントローラである。制御回路１１０は、一般に、状態マシン１１２と、オンチップアドレスデコーダおよび出力制御モジュール（明確に図示せず）などの他の回路とを含む。状態マシン１１２は、メモリ動作のチップレベル制御を提供する。制御回路は、外部メモリコントローラを介してホストと通信している。
メモリアレイ２００は、一般に、行および列に配置されるメモリセルの２次元アレイとして編成され、ワード線およびビット線によってアドレス指定可能である。ＮＯＲ型またはＮＡＮＤ型アーキテクチャに従ってアレイを形成することができる。
【００２７】
図２は、不揮発性メモリセルを概略的に示す。メモリセル１０は、フローティングゲートまたは誘電層などの電荷蓄積ユニット２０を有する電界効果トランジスタによって実施することができる。メモリセル１０は、ソース１４、ドレイン１６およびコントロールゲート３０も含む。
今日使用されている不揮発性ソリッドステートメモリデバイスで商業的に成功しているものが多い。このようなメモリデバイスは、異なる種類のメモリセルを使用してもよく、それぞれの種類は１つ以上の電荷蓄積素子を有している。
一般的な不揮発性メモリセルは、ＥＥＰＲＯＭおよびフラッシュＥＥＰＲＯＭを含む。ＥＥＰＲＯＭセルおよびそれを製造する方法の例は、米国特許第５，５９５，９２４号（特許文献１５）に与えられている。フラッシュＥＥＰＲＯＭセル、メモリシステムにおけるその使用およびそれを製造する方法の例は、米国特許第５，０７０，０３２号（特許文献２）、第５，０９５，３４４号（特許文献３）、第５，３１５，５４１号（特許文献４）、第５，３４３，０６３号（特許文献５）、第５，６６１，０５３号（特許文献６）、第５，３１３，４２１号（特許文献７）および第６，２２２，７６２号（特許文献８）に与えられている。特に、ＮＡＮＤセル構造を有するメモリデバイスの例は、米国特許第５，５７０，３１５号（特許文献９）、第５，９０３，４９５号（特許文献１０）、第６，０４６，９３５号（特許文献１１）に記載されている。さらに、誘電体記憶素子を利用するメモリデバイスの例は、Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp.543-545 、ならびに米国特許第５，７６８，１９２号（特許文献１２）および第６，０１１，７２５号（特許文献１３）に記載されている。
【００２８】
実際には、セルのメモリ状態は、通常、基準電圧がコントロールゲートに印加されている場合にセルのソース電極とドレイン電極との間の伝導電流を検知することによって読み出される。したがって、セルのフローティングゲートの所与の各電荷について、固定基準コントロールゲート電圧に対して対応する伝導電流を検出することもできる。同様に、フローティングゲート上にプログラム可能な電荷の範囲は、対応するしきい値電圧ウィンドウまたは対応する伝導電流ウィンドウを定義する。
あるいは、区分された電流ウィンドウの中で伝導電流を検出する代わりに、テスト中に所与のメモリ状態に対するしきい値電圧をコントロールゲートで設定し、伝導電流がしきい値電流より小さいか大きいかを検出することも可能である。１つの実施例では、しきい値電流に対する伝導電流の検出は、伝導電流がビット線の容量を介して放電する速度を評価することによって達成される。
【００２９】
図３は、フローティングゲートが一度に選択的に蓄積してもよい４つの異なる電荷Ｑ１〜Ｑ４についてのソース−ドレイン電流ＩD とコントロールゲート電圧ＶCGとの間の関係を示す。４つの実線のＩD 対ＶCG曲線は、メモリセルのフローティングゲート上にプログラム可能な４つの可能な電荷レベルを表し、それぞれ４つの可能なメモリ状態に対応する。例として、セルの集団のしきい値電圧ウィンドウは、０．５Ｖ〜３．５Ｖの範囲であってもよい。７つの可能なメモリ状態「０」、「１」、「２」、「３」、「４」、「５」、「６」はそれぞれ１つの消去状態および６つのプログラム状態を表し、しきい値ウィンドウをそれぞれ０．５Ｖの間隔で５つの領域に区分することによって画定すればよい。例えば、２μＡの基準電流ＩＲＥＦを図に示すように使用する場合、Ｑ１でプログラムされたセルは、メモリ状態「１」と見なされてもよい。これはその曲線がＶＣＧ＝０．５Ｖおよび１．０Ｖによって画定されるしきい値ウィンドウの領域でＩREF と交わるためである。同様に、Ｑ４はメモリ状態「５」にある。
【００３０】
前の説明から分かるように、メモリセルが多くの状態を記憶するように作製されるほど、そのしきい値ウィンドウは細かく分割される。例えば、メモリデバイスは、−１．５Ｖ〜５Ｖの範囲のしきい値ウィンドウを有するメモリセルを有してもよい。これは６．５Ｖの最大幅を供給する。メモリセルが１６状態を記憶することになっている場合、各状態は、しきい値ウィンドウ内で２００ｍＶから３００ｍＶを占めてもよい。これには必要な分解能を達成可能にするために、プログラミングおよび読み出し動作でより高い精度が必要となる。
【００３１】
図４は、メモリセルのＮＯＲアレイの例を示す。メモリアレイ２００では、メモリセルの各行は、そのソース１４およびドレイン１６によってデイジーチェーン方式で接続されている。このような設計は、仮想接地設計と称されることがある。行におけるセル１０は、ワード線４２のようなワード線に接続されるコントロールゲート３０を有する。列におけるセルは、ビット線３４および３６のような選択されたビット線にそれぞれ接続されるソースおよびドレインを有する。
【００３２】
図５Ａは、ＮＡＮＤストリングに編成されるメモリセルのストリングを概略的に示す。ＮＡＮＤストリング５０は、そのソースおよびドレインによってデイジーチェーン接続される一連のメモリトランジスタＭ１、Ｍ２・・・Ｍｎ（例えば、ｎ＝４、８、１６あるいはそれ以上）から構成される。１対の選択トランジスタＳ１、Ｓ２は、それぞれＮＡＮＤストリングのソース端子５４およびドレイン端子５６を介してメモリトランジスタチェーンの外部への接続を制御する。メモリアレイでは、ソース選択トランジスタＳ１がオンに転換すると、ソース端子がソース線に接続される（図５Ｂ参照）。同様に、ドレイン選択トランジスタＳ２がオンに転換すると、ＮＡＮＤストリングのドレイン端子がメモリアレイのビット線に接続される。チェーン内の各メモリトランジスタ１０はメモリセルとして機能し、所定の電荷量を蓄積して意図されるメモリ状態を表すようにするための電荷蓄積素子２０を有する。各メモリトランジスタのコントロールゲート３０は、読み出しおよび書き込み動作の制御を可能にする。図５Ｂに示されるように、ＮＡＮＤストリングの行の対応するメモリトランジスタのコントロールゲート３０は、同一ワード線にすべて接続されている。同様に、選択トランジスタＳ１、Ｓ２のそれぞれのコントロールゲート３２は、それぞれそのソース端子５４およびドレイン端子５６を介するＮＡＮＤストリングへのアクセスを制御することができる。同様に、ＮＡＮＤストリングの行の対応する選択トランジスタのコントロールゲート３２は、同一選択線にすべて接続されている。
【００３３】
ＮＡＮＤストリング内のアドレス指定されたメモリトランジスタ１０が、プログラム中に読み出されたりベリファイされたりする場合には、そのコントロールゲート３０に適切な電圧が供給される。同時に、ＮＡＮＤストリング５０のアドレス指定されていない残りのメモリトランジスタは、そのコントロールゲートに充分な電圧を印加することによって完全にオンに転換される。このようにして、ＮＡＮＤストリングの個々のメモリトランジスタのソースからそのソース端子５４まで、同じく個々のメモリトランジスタのドレインについてはセルのドレイン端子５６まで伝導経路が効果的に形成される。このようなＮＡＮＤストリング構造を有するメモリデバイスは、米国特許第５，５７０，３１５号（特許文献９）、第５，９０３，４９５号（特許文献１０）、第６，０４６，９３５号（特許文献１１）に記載されている。
【００３４】
図５Ｂは、図５Ａに示されるようなＮＡＮＤストリング５０から構成されるメモリセルのＮＡＮＤアレイ２００の例を示す。ＮＡＮＤストリングの各列に沿って、ビット線３６などのビット線は、各ＮＡＮＤストリングのドレイン端子５６に接続される。ＮＡＮＤストリングの各バンクに沿って、ソース線３４などのソース線は、各ＮＡＮＤストリングのソース端子５４に接続される。さらに、ＮＡＮＤストリングのバンク内のメモリセルの行に沿ったコントロールゲートは、ワード線４２などのワード線に接続される。ＮＡＮＤストリングのバンク内の選択トランジスタの行に沿ったコントロールゲートは、選択線４４などの選択線に接続される。ＮＡＮＤストリングのバンク内のメモリセルの行全体は、ＮＡＮＤストリングのバンクのワード線および選択線にかかる適切な電圧によってアドレス指定することができる。ＮＡＮＤストリング内のメモリトランジスタが読み出される場合、ストリング内の残りのメモリトランジスタは、その関連するワード線を介して確実にオンに転換され、ストリングを通って流れる電流は、本質的に、読み出されるセルに蓄積される電荷のレベルに依存するようになっている。
【００３５】
検知回路および技術
図６は、メモリセルのアレイにわたってｐ個のセンスモジュールのバンクを含む、図１に示される読み出し／書き込み回路２７０Ａおよび２７０Ｂを示す。並列に動作するｐ個のセンスモジュール４８０のバンク全体によって、行に沿ったｐ個のセル１０のブロック（またはページ）を並列に読み出したりプログラムしたりすることが可能になる。本質的に、センスモジュール１はセル１の電流Ｉ1 を検知し、センスモジュール２はセル２の電流Ｉ2 を検知し・・・センスモジュールｐはセルｐの電流Ｉp を検知することになるなど、以下同様である。ソース線３４から集約ノードＣＬＳＲＣに、さらにそこから接地に流れるそのページのすべてのセル電流ｉTOT は、ｐ個のセルのすべての電流の総和となる。従来のメモリアーキテクチャでは、共通ワード線を有するメモリセルの行は２つ以上のページを形成し、ページ内のメモリセルは並列に読み出しおよびプログラムされる。２つのページを有する行の場合、一方のページは偶数ビット線によってアクセスされ、他方のページは奇数ビット線によってアクセスされる。検知回路のページは、偶数ビット線か奇数ビット線かに一度に接続される。その場合、読み出し／書き込み回路２７０Ａおよび２７０Ｂを個々のページにそれぞれ多重化するように、ページマルチプレクサ２５０Ａおよび２５０Ｂが設けられる。
【００３６】
現在製造されている５６ｎｍ技術に基づくチップではｐ＞６４，０００であり、４３ｎｍ３２Ｇｂｉｔ×４のチップではｐ＞１５０，０００である。好適な実施形態では、ブロックはセルの一連の行全体である。これはいわゆる「全ビット線」アーキテクチャであり、ページは隣接するビット線にそれぞれ接続される隣接するメモリセルの行から構成されている。別の実施形態では、ブロックは、行の中のセルのサブセットである。例えば、セルのサブセットは、行全体の２分の１または行全体の４分の１であってもよい。セルのサブセットは、一連の隣接するセルまたは１つおきのセルあるいは所定数おきのセルであってもよい。各センスモジュールは、ビット線を介してメモリセルに接続され、メモリセルの伝導電流を検知する検知増幅器を含む。一般に、読み出し／書き込み回路がメモリアレイの両側に分配されている場合、ｐ個のセンスモジュールのバンクは、２セットの読み出し／書き込み回路２７０Ａと２７０Ｂとの間に分配されることになる。
【００３７】
図７は、図６に示されるセンスモジュールの好ましい編成を概略的に示す。ｐ個のセンスモジュールを含む読み出し／書き込み回路２７０Ａおよび２７０Ｂは、読み出し／書き込みスタック４００のバンクに分けられる。
【００３８】
図８は、図７に示される読み出し／書き込みスタックをさらに詳細に示す。各読み出し／書き込みスタック４００は、ｋ本のビット線のグループ上で並列に動作する。１つのページがｐ＝ｒ＊ｋ本のビット線を有する場合、ｒ個の読み出し／書き込みスタック４００−１・・・４００−ｒが存在することになる。本質的に、このアーキテクチャは、スペースを節約するためにｋ個のセンスモジュールの各スタックが共通プロセッサ５００によって操作されるようになっている。共通プロセッサ５００は、センスモジュール４８０およびデータラッチ４３０に配置されるラッチに記憶される更新データをラッチの電流値および状態マシン１１２からの制御に基づいて計算する。共通プロセッサの詳細な説明は、その全体が本願明細書において参照により援用されている、２００６年６月２９日付の米国公開特許出願第２００６／０１４０００７号（特許文献１６）に開示されている。
【００３９】
並列に動作する区分された読み出し／書き込みスタック４００のバンク全体は、行に沿ったｐ個のセルのブロック（またはページ）を並列に読み出したりプログラムしたりできるようにする。したがって、セルの行全体についてｐ個の読み出し／書き込みモジュールが存在することになる。各スタックはｋ個のメモリセルを操作しているので、バンク内の読み出し／書き込みスタックの総数は、ｒ＝ｐ／ｋで与えられる。例えば、ｒがバンク内のスタック数である場合、ｐ＝ｒ＊ｋである。１つの例示的なメモリアレイは、ｐ＝１５０，０００、ｋ＝８を有してもよく、したがってｒ＝１８，７５０である。
【００４０】
４００−１などの各読み出し／書き込みスタックは、本質的に、ｋ個のメモリセルのセグメントを並列に操作するセンスモジュール４８０−１〜４８０−ｋのスタックを含む。ページコントローラ４１０は、配線４１１を介して読み出し／書き込み回路３７０に制御およびタイミング信号を提供する。ページコントローラは、配線３１１を介してメモリコントローラ３１０にそれ自体依存している。各読み出し／書き込みスタック４００間の通信は、相互接続スタックバス４３１によって達成され、ページコントローラ４１０によって制御される。制御線４１１は、ページコントローラ４１０から読み出し／書き込みスタック４００−１の部品に制御およびクロック信号を提供する。
【００４１】
好適な配置では、スタックバスは、共通プロセッサ５００とセンスモジュールのスタック４８０との間の通信のためのＳＡバス４２２と、プロセッサとデータラッチのスタック４３０との間の通信のためのＤバス４２３とに区分されている。
データラッチのスタック４３０は、そのスタックに関連する各メモリセルについて１つのデータラッチ４３０−１〜４３０−ｋから構成されている。Ｉ／Ｏモジュール４４０は、データラッチがＩ／Ｏバス２３１を介して外部とデータを交換することができるようにする。
さらに、共通プロセッサは、エラー状態などのメモリ動作の状態を示す状態信号を出力する出力５０７も含む。状態信号を使用して、ワイヤードＯＲ構成でフラグバス５０９に接続されるｎ形トランジスタ５５０のゲートを駆動する。フラグバスは、コントローラ３１０によってプリチャージされるのが好ましく、状態信号が読み出し／書き込みスタックのいずれかでアサートされるとプルダウンされることになる。
【００４２】
多状態メモリ区分化の例
メモリセルがそれぞれ複数ビットのデータを記憶する不揮発性メモリを、図３に関連してこれまで説明した。特定の例は、電界効果トランジスタのアレイから形成されるメモリであって、各電界効果トランジスタはそのチャネル領域とそのコントロールゲートとの間に電荷蓄積層を有する。電荷蓄積層またはユニットは、各電界効果トランジスタのしきい値電圧の範囲のもとになる電荷の範囲を蓄積することができる。可能なしきい値電圧の範囲は、しきい値ウィンドウの範囲にわたる。しきい値ウィンドウが複数の小領域またはゾーンのしきい値電圧に区分される場合、それぞれの分解可能なゾーンを使用してメモリセルの異なるメモリ状態を表す。１つ以上のバイナリビットによって複数のメモリ状態を符号化することができる。例えば、４つのゾーンに区分されるメモリセルは、２ビットのデータとして符号化することができる４つの状態をサポートすることができる。同様に、８つのゾーンに区分されるメモリセルは、３ビットのデータとして符号化することができる８つのメモリ状態をサポートすることができるなど、以下同様である。
【００４３】
図９（０）〜（２）は、４状態メモリセルの集団をプログラムする例を示す。図９（０）は、それぞれメモリ状態「０」、「１」、「２」および「３」を表すしきい値電圧の４つの特異的な分布にプログラム可能なメモリセルの集団を示す。図９（１）は、消去されたメモリの「消去」しきい値電圧の最初の分布を示す。図９（２）は、メモリセルの多くがプログラムされた後のメモリの例を示す。本質的に、セルは、最初に「消去」しきい値電圧を有し、プログラミングによってさらに高い値となってＤＶ1 、ＤＶ2 およびＤＶ3 によって画定される３つのゾーンのうちの１つに変化することになる。このようにして、各メモリセルは、３つのプログラム状態「１」、「２」および「３」のうちの１つにプログラムするか、あるいは「消去」状態でプログラムされないままにすることができる。メモリがさらにプログラムされるにつれて、図９（１）に示される「消去」状態の最初の分布は狭くなっていき、消去状態は「０」状態によって表される。
【００４４】
下位ビットおよび上位ビットを有する２ビット符号を使用して、４つの各メモリ状態を表すことができる。例えば、「０」、「１」、「２」および「３」状態は、それぞれ「１１」、「０１」、「００」および「１０」によって表される。２ビットデータは、「フルシーケンス」モードで検知することによってメモリから読み出されてもよい。このモードでは、３つのサブパスでそれぞれ読み出し境界しきい値ＤＶ1 、ＤＶ2 およびＤＶ3 に対して検知することによって２ビットがまとめて検知される。
【００４５】
図１０（０）〜（２）は、８状態メモリセルの集団をプログラムする例を示す。図１０（１）は、それぞれメモリ状態「０」〜「７」を表すしきい値電圧の８つの特異的な分布にプログラム可能なメモリセルの集団を示す。図１０（１）は、消去されたメモリの「消去」しきい値電圧の最初の分布を示す。図１０（２）は、メモリセルの多くがプログラムされた後のメモリの例を示す。本質的に、セルは、最初に「消去」しきい値電圧を有し、プログラミングによってさらに高い値となってＤＶ1 〜ＤＶ7 によって画定される７つのゾーンのうちの１つに変化することになる。このようにして、各メモリセルは、７つのプログラム状態「１」〜「７」のうちの１つにプログラムするか、あるいは「消去」状態でプログラムされないままにすることができる。メモリがさらにプログラムされるにつれて、図１０（１）に示される「消去」状態の最初の分布は狭くなっていき、消去状態は「０」状態によって表される。
【００４６】
下位ビット、中位ビット、および上位ビットを有する３ビット符号を使用して、８つの各メモリ状態を表すことができる。例えば、「０」、「１」、「２」、「３」、「４」、「５」、「６」および「７」状態は、それぞれ「１１１」、「０１１」、「００１」、「１０１」、「１００」、「０００」、「０１０」、および「１１０」によって表される。３ビットデータは、「フルシーケンス」モードで検知することによってメモリから読み出されてもよい。このモードでは、７つのサブパスでそれぞれ読み出し境界しきい値ＤＶ1 〜ＤＶ7 に対して検知することによって３ビットがまとめて検知される。
【００４７】
ページまたはワード線プログラミングおよびベリファイ
ページをプログラムする１つの方法は、フルシーケンスプログラミングである。ページのすべてのセルは、最初消去状態にある。したがって、ページのすべてのセルは消去状態からその目標状態へと並列にプログラムされる。目標状態として「１」状態を有するこれらのメモリセルは、一度「１」状態にプログラムされるとそれ以上プログラムされるのを禁止されることになるが、目標状態「２」あるいはそれ以上を有する他のメモリセルは、さらにプログラムされることになる。最終的に、目標状態として「２」を有するメモリセルについてもそれ以上プログラムされるのをロックされることになる。同様に、進行するプログラミングパルスによって、目標状態「３」〜「７」を有するセルが実現されてロックされる。
【００４８】
図１１は、４状態メモリセルを目標メモリ状態にプログラムするための従来の方法を示す。プログラミング回路は、一般に、一連のプログラミングパルスを選択されたワード線に印加する。このようにして、コントロールゲートがワード線に接続されるメモリセルのページをまとめてプログラムすることができる。使用されるプログラミングパルストレインは、メモリセルの電荷蓄積ユニット内にプログラムされる蓄積する電子に対抗するために、増加する周期または振幅を有してもよい。プログラム中、プログラミング電圧ＶPGM がページのワード線に印加される。プログラミング電圧ＶPGM は、初期電圧レベルＶPGM0から開始される階段波形の形態をとる一連のプログラミング電圧パルスである。プログラム中のページの各セルは、この一連のプログラミング電圧パルスを受け、各パルスではセルの電荷蓄積素子に増加する電荷を加えようとする。プログラミングパルスの間で、セルは読み直されてそのしきい値電圧を決定する。この読み直しプロセスは、１つ以上の検知動作を含んでもよい。そのしきい値電圧がベリファイされて目標状態に対応するしきい値電圧ゾーン内にあった場合には、そのセルに対してプログラミングが停止する。ページのメモリセルがその目標状態にプログラムされるとそのセルはプログラムが禁止されるが、他のセルはページのセルがすべてプログラムベリファイされるまでプログラムされ続ける。
【００４９】
一連の交互に実施されるプログラム／ベリファイサイクルを使用している従来のプログラミング技術は、相対的に大きなＶPGM の変化に応答してセルのしきい値電圧が最初に急速に増加するというプログラミングプロセスにおける不確実性に対処することである。しかし、フローティングゲートにプログラムされる電荷がシールドとして働いて電子をフローティングゲート内にさらにトンネルさせる有効電界を減少させるにつれて、この増加は衰えて行き最終的に止まる。
プログラム／ベリファイプログラミング技術の欠点は、ベリファイサイクルは時間がかかる上に性能に影響を与えることである。この問題は、複数のビットを記憶可能なメモリセルの実施例によって深刻化する。本質的に、ベリファイは、メモリセルの可能な複数の状態のそれぞれに対して実施される必要がある。１６の可能なメモリ状態を有するメモリの場合、これは各ベリファイステップが少なくとも１６検知動作まで担うことになることを意味する。他の一部の方式では、これが数倍にもなり得る。したがって、メモリがますます多くの状態数に区分化されると、プログラム／ベリファイ方式のベリファイサイクルはますます時間がかかるようになる。
【００５０】
図１２は、従来の交互のプログラム／ベリファイアルゴリズムを使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。例えば、Ｎビットメモリでは、区分化は、ＮS ＝２N 状態になる。プログラムパルスの数は、少なくとも状態の数ＮS と同じである。一部のアルゴリズムでは、ｋ個のプログラミングパスが必要なこともあり、ここでｋは１〜４であってもよい。多状態メモリの場合、各ベリファイ動作は各メモリ状態に１つの２N −１を乗じる。したがって、ベリファイの推定数は、状態の数の２乗である２2Nに比例する。表から分かるように、３ビットセルの場合、公称ベリファイサイクル数はすでに非常に多く、これは他の方式で必要な追加の検知を含んでいない。４ビットセルの場合、ベリファイサイクル数は許容できないほどとなる。
したがって、ベリファイサイクル数の少ない改善されたプログラミング性能を有するメモリデバイスが必要である。
【００５１】
インデックスプログラミング技術
本発明の１つの一般的な態様によれば、メモリセルのグループに対して並列に動作するマルチパスインデックスプログラミング方法は、後のプログラミングパスにおいて、プログラムインデックスに応じてセルのプログラミングを実施したりあるいはプログラミングを禁止したりすることができるように、セルが受け取った最後のプログラミング電圧レベルなどの情報を提供するために、各セルについてプログラムインデックスを維持するステップを含む。
各プログラミングパスにおいて、階段パルストレインの形態をとる一連の増加するパルスとしてプログラミング電圧をメモリセルのグループに印加して、パルスカウントが増加するに伴ってメモリセルが増加するプログラミング電圧を受けるようにするのが好ましい。好適な実施形態では、それぞれ別々のプログラミング電圧レベルは、パルスカウントまたはパルス数として表現するのが便利である。同様に、プログラムインデックスもパルス数によって表現される。
メモリセルのグループのプログラミングパスでは、そのグループのセルのプログラムインデックスを使用して、増加するそれぞれのパルスに応じてプログラミングを許可するか禁止するかを制御する。
【００５２】
図１３は、インデックスプログラミング方法の一般的な方式を示す流れ図である。
ステップ７００：並列にプログラムされるメモリセルのグループを提供する。各メモリセルは個別の目標しきい値電圧レベルにプログラム可能である。
ステップ７１０は、ステップ７２０、ステップ７３０およびステップ７３２をさらに含むインデックスプログラミングである。
ステップ７２０：プログラム中にグループの各メモリセルのプログラムインデックスを提供する。メモリセルのプログラムインデックスは、メモリセルをプログラムするのに最後に使用されたプログラミング電圧レベル、または次のプログラミングでメモリセルが受け取ることを許される最大プログラミング電圧レベルを示す。プログラムインデックスは、読み出し／書き込み回路と協働する追加のラッチ回路によって実施されるのが好ましい。
ステップ７３０：プログラミングパスで一連の増加する電圧パルスとして増加するプログラミング電圧をメモリセルのグループに印加する。
ステップ７４０：メモリセルのプログラムインデックスに応じて、増加するプログラミング電圧レベルに基づいてプログラミングパスの間にプログラムされるメモリセルのプログラミングを禁止あるいは許可する。
プログラミング電圧が増加してプログラミング電圧がセルのプログラムインデックスによって示されるレベルに到達したら、並列にプログラムされているグループの各メモリセルを過剰にプログラムしないようすることが分かる。このようにして、従来のプログラミング方法とは異なり、それぞれすべてのプログラミングパルス間でベリファイステップを有する必要がない。
【００５３】
第１の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から得られる。プログラムインデックスは、プログラムパスの間にプログラムが禁止される前にセルに印加される最後のプログラミング電圧レベルまたはパルス数を記憶する。各セルのプログラムインデックスは、従来のインターリーブプログラム／ベリファイ方法でプログラミングおよびベリファイステップをインターリーブすることによって設定される。グループ内のセルのプログラミングは、セルがプログラムベリファイされて最後のパルス数がそのプログラムインデックスとして記録されたら禁止される。この実施例がさらに多くのベリファイステップを担うこともあるが、どのセルも過剰にプログラムする可能性は低い。その結果、各セルについて設定されたプログラムインデックスを後のプログラミングパスでうまく利用してベリファイステップを省くことができる。
メモリセルのプログラムインデックスを提供することの第１の実施例では、メモリセルが目標のしきい値電圧レベルとプログラムベリファイされるまで、メモリセルは各パルスの後にベリファイが続く一連のプログラミングパルスによってプログラムされる。メモリセルがプログラムベリファイされると、メモリセルのプログラムインデックスは最後のプログラミング電圧と同じになるように設定される。
【００５４】
図１４Ａは、第１の実施例によるメモリセルのプログラムインデックスを提供することを示す流れ図である。したがって、図１３に示されるステップ７２０に対応するステップ７２０’は、ステップ７２１とステップ７２２とをさらに含む。
ステップ７２１：目標しきい値電圧レベルがプログラムベリファイされるまでメモリセルを交互にプログラムおよびベリファイする。
ステップ７２２：メモリセルが目標しきい値電圧レベルとプログラムベリファイされるプログラミング電圧レベルと同じ値にプログラムインデックスを設定する。
第１の実施例は、メモリセルが各プログラミングパルスの後にベリファイされる従来のプログラミング技術によってプログラムインデックスを得ることであると分かる。この方法はその目標に近いセルの最も正確なプログラミングを提供するが、ベリファイ動作がかなり多くなるという犠牲を払うことになる。
【００５５】
第２の実施例では、セルのプログラムインデックスは、最初にセルの推定最大プログラミング電圧レベルに設定され、目標状態から所定の不足分の範囲内にあるような目標状態に近いがそれを超えない状態にプログラムする。階段パルストレインがグループの各セルに印加され、セルのプログラムインデックスによって示される予測最大プログラミング電圧レベルに達すると、セルはそれ以上プログラムされるのを禁止される。階段パルストレインのその後のパルスは、禁止されたセルに影響を及ぼさないことになる。プログラミングパスの最後で、グループの各セルはそれぞれの目標状態付近にプログラムされ、各プログラムインデックスは、各セルが受け取った最後のプログラミング電圧レベルを反映することになる。
【００５６】
図１４Ｂは、メモリセルのプログラムインデックスを得ることの第２の実施例を示す流れ図である。したがって、図１３に示されるステップ７２０に対応するステップ７２０’’は以下を含む。
ステップ７２０’’：セルの目標状態に近いがそれを超えないようにセルをプログラムすると推定されるプログラミング電圧レベルまたは等価なパルス数にメモリセルのプログラムインデックスを設定する。
第３の実施形態では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から推定される。特に、メモリセルは、それぞれパルスの後にベリファイが続く一連のプログラミングパルスによって、消去状態から所与のしきい値電圧レベルにプログラムされ、所与のしきい値電圧レベルはチェックポイントとして働き、所与の目標しきい値電圧レベルのプログラムインデックスまたはプログラミング電圧レベルが得られる予測関数を較正する。
【００５７】
図１４Ｃは、１つ以上のチェックポイントによって較正される予測関数を使用してメモリセルのプログラムインデックスを得ることの第３の実施例を示す流れ図である。したがって、図１３に示されるステップ７２０に対応するステップ７２０’’’は以下を含む。
ステップ７２０’’’：１つ以上のチェックポイントによって較正される予測関数によってメモリセルのプログラムインデックスを設定する。
予測技術によってセルのプログラムインデックスを得ることの第３の実施例を、図１４Ｄ〜図２１に関連してさらに詳細に説明する。
【００５８】
図１４Ｄは、１つの実施形態によるメモリセルのプログラムインデックスを得ることの第３の実施例を示す流れ図である。したがって、図１３に示されるステップ７２０に対応するステップ７２０’’’は、ステップ７２３〜ステップ７２７をさらに含む。
ステップ７２３：メモリセルを目標しきい値電圧レベルにプログラムすると予測されるプログラミング電圧レベルを生成するメモリセルの所定の予測関数を提供する。
ステップ７２４：対応するチェックポイントプログラミング電圧レベルによってプログラム可能な指定のチェックポイントしきい値電圧レベルで、メモリセルの所定の関数のチェックポイントを指定する。
ステップ７２５：チェックポイントしきい値電圧レベルがプログラムベリファイされるまでメモリセルを交互にプログラムおよびベリファイすることによって、対応するチェックポイントプログラミング電圧値を決定する。
ステップ７２６：チェックポイントしきい値電圧レベルで評価される場合に、所定の関数を較正して決定された対応するチェックポイントプログラミング電圧レベルを生成する。
ステップ７２７：メモリセルの目標しきい値電圧レベルで所定の関数を評価することによってプログラムインデックスを推定する。
メモリセルのプログラムインデックスを提供することの第２の実施形態は、複数のチェックポイントを使用してプログラムインデックスの精度を向上させる。
【００５９】
図１４Ｅは、別の実施形態によるメモリセルのプログラムインデックスを得ることの第３の実施例を示す流れ図である。
したがって、図１３に示されるステップ７２０に対応するステップ７２０’’’は、ステップ７２８をさらに含む。
ステップ７２８：より多くのチェックポイントを使用してさらに精度の高いプログラミングを得ること以外は、図１４Ｄのステップ７２３〜７２７と同様である。
【００６０】
チェックポイントからの予測プログラミング
図１５、図１６および図１７は、図１４Ａのステップ７２０’’’に示される予測プログラミングをさらに詳細に説明する。
メモリセルがしきい値電圧レベルの範囲のうちの１つに個別にプログラム可能であるメモリセルのアレイを有する不揮発性メモリでは、所与のメモリセルを所与の目標しきい値電圧レベルにプログラムするためにどんなプログラミング電圧レベルを印加する必要があるかを予測する所定の関数が提供される。このようにして、ベリファイ動作を実施する必要がなくなることによってプログラミング動作の性能が大幅に向上する。
【００６１】
１つの実施形態では、所与の目標しきい値電圧レベルのプログラミング電圧レベルを比例的に生成する線形関数によって所定の関数が近似される。線形関数は、メモリアレイのセルの集団に適用可能な所定の平均値によって与えられる傾きを有する。線形関数は、所与のメモリセルの線形関数上にチェックポイントを予め定めることによって所与のメモリについて一意的に決定される。チェックポイントは、メモリセルを指定されたしきい値電圧レベルにプログラムする実際のプログラミング電圧に基づいている。チェックポイントは、メモリセルの最も低いプログラム状態の１つに対応するのが好ましい。メモリセルは、例えば、従来のプログラム／ベリファイプログラミング技術を使用することによって、まずチェックポイントにプログラムされる。このようにして、メモリセルを指定されたメモリ状態にプログラムするのに必要な実際のプログラミング電圧のチェックポイント値が決定される。したがって、所定の関数は、メモリセルを目標しきい値電圧レベルにプログラムするプログラミング電圧値を決定するのに使用される前にチェックポイントしきい値電圧レベルで評価されたときに、較正されてチェックポイントプログラミング電圧値を生成する。
予測プログラミング技術は、目標状態へのプログラミングがベリファイ動作を必要としない点で有利である。ベリファイ動作は、メモリの可能な状態すべてではなくチェックポイント状態をベリファイする必要があるだけである。
【００６２】
図１５は、メモリセルを目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧を供給するために使用される所定の関数の好適な実施形態を示す。所定の関数は線形関数によって近似され、この線形関数では、目標しきい値レベルＶT がプログラミング電圧ＶPGM の関数として以下の関係によって与えられる。
ＶT （ＶPGM ）＝＜Ｓｌｏｐｅ＞ＶPGM ＋ＶT （０）          数式（１）
（ここで、＜Ｓｌｏｐｅ＞＝ΔＶT ／ΔＶPGM ）
逆に、
ＶPGM （ＶT ）＝１／＜Ｓｌｏｐｅ＞［ＶT −ＶT （０）］      数式（２）
【００６３】
好適な実施形態では、平均の＜Ｓｌｏｐｅ＞は、類似する製造バッチ（製造ロット）からの工場サンプルでテストすることによって予め決定することができる。例えば、テストすることによって約０．１の標準偏差で平均が０．９の＜Ｓｌｏｐｅ＞が生成されてもよい。ＶT （０）はセルに依存し、各セルの予測プログラミングの前に各メモリセルからのチェックポイントによって予め決定される。＜Ｓｌｏｐｅ＞およびＶT （０）が分かると、メモリセルの所定の関数が定義され、数式（２）を使用して目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧レベルを得ることができる。
一般に、所定の関数は、線形関数によって近似される必要はない。所定の関数がしきい値電圧レベルの広範囲を正確にカバーするようになっている場合には、所定の関数は、工場で製造バッチをテストすることによって決定し、任意の適切な関数によってモデル化することができる。
【００６４】
各メモリセルの予測関数のチェックポイント較正
数式（１）または（２）のＶT （０）はセルに依存し、消去状態のしきい値電圧レベルよりもわずかに高いチェックポイントしきい値電圧を指定し、パルス間で所与のセルをチェックポイントに対して交互に実際にプログラムおよびベリファイすることによって予め決定される。このようにして、所与のセルをチェックポイントしきい値電圧にプログラムするのに必要な実際のプログラミング電圧が分かる。次に、この実際の座標を使用して数式（２）のＶT （０）の値を求める。
図１４Ａ、ステップ７２２、ステップ７２３およびステップ７２４は、所定の関数のチェックポイントを使用してメモリセルの所定の関数を較正する一般的な原理を示す。
【００６５】
図１６は、消去状態の上の第１のプログラム状態に対応するチェックポイントの好ましい指定を示す。次の項の説明で分かるように、各パルスがセルを次のメモリ状態にプログラムすることができるステップサイズをプログラミングパルストレインが有する場合、チェックポイントは較正された基本状態として働くことになる。当然ながら、セルのプログラムデータがセルに消去状態のままであることを求める場合、チェックポイントは必要ないことになる。
ステップ７２４’：第１のプログラムされたメモリ状態のしきい値電圧レベルをメモリセルの所定の関数のチェックポイントとして指定する。
【００６６】
したがって、メモリセルのチェックポイント（０）は、消去状態に関連すると見なされるしきい値電圧レベルよりもわずかに高いしきい値電圧レベル（チェックポイントしきい値電圧レベル）にあるように指定される。最初のプログラミングパスの第１の段階で、一連の増加するプログラミング電圧パルスが印加されて、チェックポイントしきい値電圧レベルに向けてメモリセルをプログラムする。チェックポイントしきい値電圧レベルがプログラムベリファイされるまで、プログラミングモードは、交互にプログラムおよびベリファイを行う従来のモードにすることができる。チェックポイント（０）の座標［ＶPGM 、ＶT ］チェックポイント(0) のセットが分かると、数式（２）の形態をとる所定の関数（図１５参照）をＶT （０）について解き、完全に指定することができる。
【００６７】
数式（２）の形態をとる所定の関数が指定された後、続いて第２段階で所定の関数を使用する予測モードでメモリセルをプログラムして、目標しきい値電圧レベルまたは目標メモリ状態の推定プログラミング電圧レベルを供給することができる。
１つ以上のチェックポイントによって較正される予測プログラミングは、本願明細書において参照により援用されている、本願と同じ発明者によって２００７年４月１０日に出願された同時係属中の「PREDICTIVE PROGRAMMING IN NON-VOLATILE MEMORY 」という米国特許出願第１１／７３３，６９４号（特許文献１７）、および本願と同じ発明者によって２００７年４月１０日に出願された同時係属中の「NON-VOLATILE MEMORY WITH PREDICTIVE PROGRAMMING 」という米国特許出願第１１／７３３，７０６号（特許文献１８）にも開示されている。
【００６８】
図１７は、最初のプログラミングパスで使用され各セルのプログラムインデックスを構築する予測プログラミングを示す。最初のプログラミングパスは２つの段階にある。示される例では、第１の段階はメモリセルをプログラムし、第３の実施例（図１４Ｃ参照）の予測プログラミング方法を使用してプログラムインデックスを維持する。予測プログラミングは、所与のセルを所与の目標状態にプログラムするのに必要な推定プログラミング電圧を供給する各セルの所定の関数を使用する。
【００６９】
最初のプログラミングパスの第１の段階は、各セルのプログラミング特性に従って各セルの所定の関数を較正することである。指定されるしきい値電圧またはチェックポイントに対して各セルを交互にプログラム／ベリファイすることによってこれは達成される。チェックポイントは、消去状態のしきい値電圧近くのしきい値電圧にあることが好ましいので、一般に、交互にプログラムおよびベリファイをすることは相対的にあまりパルスを含まない。パルス間の各ベリファイステップは、チェックポイントの１つの境界値を検知するだけである。
【００７０】
第２の段階では、各セルは、次のメモリ状態から周知の位置にあるチェックポイントからプログラムされ続けることになる。したがって、所定の関数は、従来の追跡および誤差方法でパルス間においてベリファイする必要なしに、所与の目標状態にセルをプログラムすると見込まれるプログラミング電圧を予測することができることになる。各セルのプログラムインデックスは、最初のプログラミングパスでセルをプログラムするのに使用される最後のプログラミング電圧レベルまたはパルス数となる。
【００７１】
所定のステップサイズを有するパルストレインとしてのプログラミング電圧
好適な実施形態では、プログラミング電圧ステップサイズは、追加の各パルスがメモリセルを次のメモリ状態にプログラムすることになるように調整される。１６の可能なメモリ状態を有するメモリセルの例の場合、パルスサイズは３００ｍＶであってもよい。このようにして、一方の追加パルスがメモリを状態（１）にプログラムし、他方の追加パルスがメモリを状態（２）にプログラムすることになるなど、以下同様である。したがって、所与のメモリ状態にプログラムすることは、状態（０）からの状態の数をカウントすることと、同じ数のパルスを供給することとに短縮することができる。例えば、状態（０）でフラグが一度設定されてもよく、その後、目標状態が状態（０）から離れている状態の数と同じパルスの数によってプログラムすることができる。
他のプログラミングパルスサイズも可能である。例えば、１６の可能なメモリ状態を有するメモリセルの場合、パルスサイズは１５０ｍＶであってもよい。その場合、１つのメモリ状態から次の隣接するメモリ状態までプログラムするのに２パルスかかることになる。これによって、プログラミングにおいてより細かい分解能が提供されることになり、目標しきい値からのマージンが使用される一部の実施例で役立つ。
【００７２】
図１８Ａは、各追加のパルスがメモリセルを次のメモリ状態にプログラムするようなステップサイズを有するプログラミング電圧を設定することを示す流れ図である。図１３に示されるステップ７１０は、以下をさらに含む。
ステップ７１２：振幅が増加するパルストレインの形態で時間とともに増加する振幅を有するプログラミング電圧を供給する。
ステップ７１４：メモリセルが１つのプログラムされたメモリ状態から次のプログラムされたメモリ状態まで連続するパルスによってプログラムされるようにパルス間の振幅増加を調整する。
【００７３】
図１８Ｂは、最初のプログラミングパスを受けるメモリセルのしきい値電圧を概略的に示す。メモリセルは、低いしきい値電圧レベルのうちのいずれか１つでもよい消去状態から開始する。最初のプログラミング段階の間に、一連のプログラム／ベリファイサイクル（例えば、ｘ個のプログラムパルスとｎ＊ｘ個のベリファイステップとの合計）によって、メモリセルが消去状態から状態（０）にプログラムされることになる。一般に、各メモリセルのｘは、互いに独立している。個々のセルをどれ程完全に消去したかおよび他の要因のために、個々のセルは指定されたチェックポイントに到達するためのプログラミングパルスの数によって異なる場合もある。例えば、しきい値電圧が低い「遅い」セルは、高いしきい値電圧を有する「通常」セルよりも状態（０）に到達するのに多くのパルスをかけることになる。完全に消去される「非常に遅い」セルはしきい値電圧がさらに低くなり、状態（０）にするのにさらに多くのプログラミングパルスをかけることになる。メモリセルが状態（０）になると、予測プログラミングモードが始まり、追加の各パルスはメモリセルを次のメモリ状態にプログラムすることになる。
【００７４】
図１９は、メモリセルのプログラムインデックスを設定することの好適な実施例を示す流れ図を示す。プログラムインデックスは、図８に示されるメモリセルに関連するデータラッチ４３０のうちの１つに維持される。図１３に示されるステップ７２０は、以下をさらに含む。
ステップ７５２：メモリセルのプログラムインデックスを記憶するラッチを提供する。
ステップ７５４：チェックポイント状態から目標状態にメモリセルをプログラムすると見込まれるパルスの数の形態で最初に目標状態をラッチに記憶する。例えば、目標状態が状態（５）である場合、状態（５）がラッチに記憶されることになる（バイナリ値０１０１）。
ステップ７５６：メモリセルを消去状態からチェックポイント状態にプログラムするのに必要なパルスの数をラッチに累積することによってメモリセルのプログラムインデックスを計算する。プログラムインデックスは、メモリセルを目標状態にプログラムすることが見込まれるパルスの数を示す。例えば、メモリセルを消去状態からチェックポイントにプログラムする際にメモリセルにパルスが印加される毎に、ラッチ内のプログラムインデックスは１だけ増加される。
【００７５】
図２０（Ａ）、（Ｂ）および（Ｃ）は、それぞれ図１８Ｂに示される「通常」セル、「遅い」セルおよび「非常に遅い」セルについて図１９のラッチ動作を示す。
図２０（Ａ）は、図１８Ｂに示される例示的な「通常」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「通常」メモリセルは、消去された集団のしきい値電圧の範囲の中央付近にあるしきい値電圧まで消去される。メモリセルは、目標状態ラッチのデータによって示される状態（３）にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「３」に設定される。メモリセルを消去状態からチェックポイント状態（０）にするためのすべてのプログラミングパルスで、データラッチ内の値は１だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、１パルス後にこれが発生し、ラッチ内のプログラムインデックスが「４」に増加される。これは、このセルが４つのパルスで状態（３）にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態（３）にプログラムするために、合計が４パルスとなる追加の３つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムすることを禁止されるが、ページ内の他のセルはプログラムされ続けることもできる。これは「Ｐ」から「Ｉ」に進んで行くプログラム／禁止状況によって示される。
【００７６】
図２０（Ｂ）は、図１８Ｂに示される例示的な「遅い」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「遅い」メモリセルは、消去された集団のしきい値電圧の範囲の中央よりも低い位置にあるしきい値電圧まで消去された。メモリセルは、同様に、目標状態ラッチのデータによって示される状態（３）にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「３」に設定される。メモリセルを消去状態からチェックポイント状態（０）にするためのすべてのプログラミングパルスで、データラッチ内の値は１だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、２パルス後にこれが発生し、ラッチ内のプログラムインデックスが「５」に増加される。これは、このセルが５つのパルスで状態（３）にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態（３）にプログラムするために、合計が５パルスとなる追加の３つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムすることを禁止されるが、ページ内の他のセルはプログラムされ続けることもできる。これは「Ｐ」から「Ｉ」に進んで行くプログラム／禁止状況によって示される。
【００７７】
図２０（Ｃ）は、図１８Ｂに示される例示的な「非常に遅い」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「非常に遅い」メモリセルは、消去された集団のしきい値電圧の範囲の低いほうの末端部にあるしきい値電圧まで消去される。メモリセルは、同様に、目標状態ラッチのデータによって示される状態（３）にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「３」に設定される。メモリセルを消去状態からチェックポイント状態（０）にするためのすべてのプログラミングパルスで、データラッチ内の値は１だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、４パルス後にこれが発生し、ラッチ内のプログラムインデックスが「７」に増加される。これは、このセルが７つのパルスで状態（３）にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態（３）にプログラムするために、合計が７パルスとなる追加の３つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムされることを禁止されるが、ページ内の他のセルはプログラムされ続けてもよい。
【００７８】
プログラム精度を向上させるとともにしきい値分布を絞り込むためのインデックスプログラミングを有する後続のプログラミングパス
本発明の別の一般的な態様によれば、メモリセルのグループに対して並列で動作するマルチパスインデックスプログラミング方法は、最初のプログラミングパスと、各セルのプログラムインデックスの構築とを含む。最初のプログラミングパスの後にベリファイステップおよび追加のプログラミングステップが続き、最初のパスによるいかなる不足もトリミングする。インデックスプログラミングを使用することによって、大幅に削減された数のベリファイ動作でマルチパスプログラミングが実施される。
【００７９】
最初のプログラミングパスは、各セルのプログラムインデックスを構築しながら、セルのそれぞれの目標状態に近い不足分の範囲内にグループの各セルをプログラムもするのが好ましい。次に、１つ以上のその後のプログラミングパスにおいて、各セルはその不足分からその目標状態にさらにプログラムされる。パス内の各パルスの間ではないもののそれぞれの後続のプログラミングパスの前に、ベリファイステップによって完了されるのが好ましい。セルがまだベリファイされていない場合には、次のプログラミングパスで追加のプログラミングが可能になる。プログラミングパスの最後でセルのプログラムインデックスは、セルが受け取った最後のプログラミング電圧レベルを示す。ベリファイステップによってセルがその目標状態とベリファイされていないことが分かった場合、セルをその目標状態に向けてプログラムするために、プログラムインデックスは所定の量だけ増加されて、次のプログラミングパスで許容される予測最大プログラミング電圧を供給することになる。好適な実施形態では、プログラムインデックスはパルス数によって表現され、１つだけ増加される。次のプログラミングパスでは、メモリセルは、次にその更新されたプログラムインデックスに基づいて次のパルスを受けることになる。
【００８０】
次のプログラミングパスの間に、ベリファイ後のセルはそれ以上プログラムされるのを禁止される。ベリファイ前のセルは、そのパスを越えて最後のプログラミングパスで１つのパルスによってプログラムすることができる。ベリファイステップおよびプログラミングパスは、グループ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで繰り返される。このように、ベリファイステップを実施する前にパルストレインの全行程を印加することによって、メモリセルのページをそのそれぞれの目標状態に並列に正しくプログラムすることが可能である。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルスの間にベリファイステップを必要としないでセルのグループをプログラムすることができることである。インデックスプログラミングは、プログラミング動作の性能を大幅に向上させることになる。
【００８１】
図２１は、インデックスプログラミング方法の好適な実施形態を示す流れ図である。この方法は、各セルのプログラムインデックスを設定する最初のプログラミングパスのステップ８１０と、その後に、セルをそのそれぞれの目標状態にプログラムするためにベリファイおよびインデックスプログラムを行う追加のパスのステップ８２０とを含む。
ステップ８００：並列にプログラムされるメモリセルのグループを提供する。各メモリセルは、一連の増加するプログラミング電圧パルスによってそれぞれの目標状態にプログラム可能である。
ステップ８１０：最初のプログラミングパスの間にグループの各セルのプログラムインデックスを構築する。プログラムインデックスは、各セルによって経験された最後のプログラミング電圧レベルをパルス数によって記憶している。
ステップ８２０は、プログラミングパスの後でベリファイし、次のプログラミングパスのプログラムインデックスを更新することである。ステップ８２０は、ステップ８２２、ステップ８２４、ステップ８２６およびステップ８２８をさらに含む。
ステップ８３０：グループ内のメモリセルをベリファイする。
ステップ８４０：グループ内の各メモリセルはそのそれぞれの目標状態とベリファイされるか？  ベリファイされる場合はステップ８７０に進み、そうでない場合はステップ８５０に進む。
ステップ８５０：ベリファイ前の各メモリセルのプログラムインデックスを１だけ増加させる。
ステップ８６０：ベリファイ前の各メモリセルを各プログラムインデックスによって選択されたプログラミングパルスでプログラムする。好適な実施形態では、選択されたプログラミングパルスは、プログラムインデックスによって示されるものと同じパルス数を有する。別のプログラミングパスについてステップ８３０に進む。
ステップ８７０：グループ内のすべてのメモリセルがベリファイされ、そのそれぞれの目標状態にプログラムされる。
図１３および図２１に示されるインデックスプログラミング方法は、メモリアレイ２００のメモリ動作を制御する制御回路１１０の状態マシン１１２（図１参照）で実施されるのが好ましい。
【００８２】
図２２は、最初のパスの後でプログラム結果をトリミングするための、図２１のステップ８２０に示される追加のベリファイおよびプログラミングパスを示す。最初のプログラミングパスの目標状態への第１の試みの後で、各メモリセルはベリファイによってチェックされる。最初のプログラミングパスは目標状態を達成しないことが多い。たとえセルがその目標状態とのベリファイに失敗しても、第２のプログラミングパスで増加プログラミングをすることができる。ページ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで、ベリファイおよびプログラムプロセスは繰り返される。このようにして、以前のパスのプログラム結果をトリミングすることによって、セルはその目標状態に正確に収束していくことができる。一般に、１つまたは２つのトリミングパスが必要である。
【００８３】
図２３は、ベリファイ状態フラグを記憶するラッチを概略的に示す。好適な実施形態では、図８に示されるデータラッチ４３０の一部であるラッチ４３２を使用して、ベリファイ状態ビットを記憶する。例えば、セルがベリファイされると、ラッチ４３２のベリファイ状態ビットは「０」に設定される。このフラグによって、制御ロジックはこのセルにさらにプログラム／ベリファイ動作を行うことを禁止する。一方、セルがベリファイに失敗した場合は、このフラグによって制御ロジックは次のプログラミングパスでセルに追加のプログラミングを許可することになる。ベリファイ状態フラグの従来の実施例は、目標変更を通してのプログラム禁止を示すことである。その場合、セルがベリファイすると、目標データがセルにプログラムされてもう必要なくなる。したがって、目標データを示すデータラッチのデータ値は、「目標符号」から「消去符号」にリセットされ、セルがベリファイされた状態を指定する。本発明では、その後のプログラミングパスで目標データが必要なため、これがデータラッチに保持される。その代わりに、ベリファイ状態がベリファイ状態フラグに記憶される。
【００８４】
図２４Ａは、ベリファイ状態フラグの使用によってベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。以下のステップ８４２およびステップ８４４は、図２１のステップ８４０を実施する間に実施される。
ステップ８４２：ベリファイ結果に従ってラッチ内のベリファイ状態フラグを設定する。
ステップ８４４：メモリセルがベリファイされていないことを示すベリファイ状態フラグに応答してステップ８５０に進み、そうでない場合は図２１のステップ８７０に進む。
第２の好適な実施形態では、ベリファイ前のメモリセルは、メモリセルのプログラムインデックスを所定の数だけ高くオフセットさせることによってプログラミングをさらにトリミングすることが可能になる。ほとんどの場合、オフセットの所定の数は１である。このようにして、次のプログラミングパスで、メモリセルは、追加の所定のパルス数によってプログラムされることになる。
【００８５】
図２４Ｂは、メモリセルのプログラムインデックスをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。図２１のステップ８５０はステップ８５０’で置き換えられる。
ステップ８５０’：メモリセルがベリファイされていない場合、所定の数だけメモリセルのプログラムインデックスを増加して、その後のプログラミングパスでメモリセルが追加の所定のパルス数を受けることができるようにする。
第３の好適な実施形態では、ベリファイ前のメモリセルは、次のプログラミングパルスでパルスカウントを所定の数だけ低くオフセットさせることによってプログラミングをさらにトリミングすることが可能になる。このようにして、メモリセルは、追加の所定のパルス数によってプログラムされることになる。
【００８６】
図２４Ｃは、パルスカウントをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。図２１のステップ８５０はステップ８５２で置き換えられる。
ステップ８５２：メモリセルがベリファイされていない場合、所定の数だけプログラミングパルスカウントを減少させて、その後のプログラミングパスでメモリセルが追加の所定のパルス数を受けることができるようにする。
【００８７】
図２５は、インデックスプログラミング技術を使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。例えば、Ｎビットメモリでは、区分化は、ＮS ＝２N 状態になる。プログラムパルスの数は、少なくとも状態の数ＮS と同じである。１．１）チェックポイントとのプログラムベリファイ、１．２）チェックポイントから目標状態への予測プログラミング、および２）１つ以上のトリミングパスについてのパルスおよびベリファイの数に対して推定値が与えられる。図１２の最後の列は、ベリファイの総数の推定値を示す。本質的に、推定値はメモリ状態の数に比例することが分かる。この属性は、ベリファイの総数が状態の数の２乗に比例する図１２に示される従来の方法を使用することからの属性と比較することができる。例えば、３ビットメモリセルの場合、ベリファイの総数は、従来の５６と比較して約１８であると推定される。ベリファイの総数が２４０と比較して３４となる４ビットメモリの場合、この削減は一層劇的である。
【００８８】
相関マルチパスプログラミング
図１３に示されるインデックスプログラミング方法には、複数のプログラミングパスが必要である。インデックス作成および予測プログラミングのための最初のパスの後には、プログラムされたしきい値を目標状態付近にトリミングするために１つまたは２つのインデックスプログラミングパスが続く可能性が非常に高い。各プログラミングパスのパルスの数は、メモリ状態の数に少なくとも等しい。これは、各パルスが２つの状態間の距離に等しい量だけセルのしきい値電圧を増加させる粗い粒度を与えることになる。その結果、各メモリ状態のしきい値分布（例えば、図１０を参照）は広がることになる。
【００８９】
現在のアルゴリズムでは、より絞り込まれた各メモリ状態のしきい値電圧分布を得るために、各パスで一層細かいステップサイズを使用することが可能である。例えば、第１のトリミングで、パルスステップサイズを予測プログラミングで使用されるステップサイズと比較して２倍細かくすることができる。同様に、第２のトリミングで、パルスステップサイズを第１のトリミングで使用されるステップサイズと比較して２倍細かくすることができるなど、以下同様である。しかし、ステップサイズが半分に削減される度に、パルスの数、したがってプログラミング時間は２倍になることになる。
【００９０】
本発明の別の態様によれば、メモリセルのグループは、複数のプログラミングパスで並列にプログラムされ、複数のパスではプログラミング電圧の相関が取られている。各プログラミングパスは、共通のステップサイズを有する階段パルストレインの形態をとるプログラミング電圧を使用し、連続するそれぞれのパスは、その前のパスの階段パルストレインから所定のオフセットレベルだけオフセットしている階段パルストレインを有する。所定のオフセットレベルは、共通ステップサイズよりも小さく、前のパスの所定のオフセットレベル以下であってもよい。
【００９１】
１つの好適な実施形態では、所定のオフセットは、前のパスの所定のオフセットの半分である。例えば、２番目のパスの階段パルストレインは、最初のパスからステップサイズの半分だけオフセットし、３番目のパスの階段パルストレインは、２番目のパスから４分の１ステップサイズだけオフセットしている。このようにして、それぞれのパスでさらに細かいステップサイズを有するプログラミング階段パルストレインを使用する複数のパスを用いる従来の方法よりも少ないプログラミングパルスを使用して、複数のパスにわたり同じプログラム分解能を達成することができる。
【００９２】
図２６は、図２１に示されるインデックスプログラミングパスへの相関マルチパスプログラミングの適用を示す。その関連で、図２６は、図１７および図２２に示されるような最初のプログラミングパスに続くトリミングプログラミングパス２）および３）についても示す。３つのパスで使用される階段パルストレインはすべて同一ステップサイズを有する。最初のプログラミングパス１）で使用される階段パルストレインは、ＶPGM0の最初のプログラミング電圧を有する。一方、第２のプログラミングパス２）で使用される階段パルストレインは、ＶPGM1の最初のプログラミング電圧を有し、ＶPGM1はＶPGM1＝ＶPGM0＋ΔＶPGM1となるようにＶPGM0と相関が取られている。好適な実施形態では、ΔＶPGM1＝１／２ステップサイズである。
【００９３】
同様に、第３のプログラミングパス３）で使用される階段パルストレインは、ＶPGM2の最初のプログラミング電圧を有し、ＶPGM2はＶPGM2＝ＶPGM0＋ΔＶPGM2＝ＶPGM1＋ΔＶPGM12 となるようにＶPGM1およびＶPGM0と相関が取られている。好適な実施形態では、ΔＶPGM2＝３／４ステップサイズ、またはΔＶPGM12 ＝１／４ステップサイズである。
したがって、相関マルチパスプログラミングは、各プログラミングパスで同じ階段パルストレインを使用する。ただし、階段パルス全体のＤＣレベルが各パスについて所定の量だけ高くシフトされている点は除く。好適な実施形態では、第２のパスは、その前のパスに対して１／２ステップサイズだけシフトされ、第３のパスは１／４ステップサイズだけシフトされている。これらの３つの相関プログラミング電圧波形を使用するプログラミングは、各パスがその前のステップサイズの１／２ステップサイズの階段波形を使用する３つの従来の単一パスプログラミングと同じ分解能が得られる。
【００９４】
図２７は、マルチパスプログラミングを使用することによるメモリ状態のしきい値電圧分布の絞り込みを示す。それぞれの分布の下部端はすべてのパスについて絞られる。
【００９５】
図２８Ａは、メモリ状態の様々な区分化のために従来のマルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。Ｐがプログラミングパス数のとき、パルスの数は（２0 ＋２1 ＋・・・＋２P-1 ）×２N となることが分かる。例えば、３パスプログラミングの場合、３ビットセルには５６パルスが必要なことになり、４ビットセルには１１２パルスが必要なことになる。
【００９６】
図２８Ｂは、メモリ状態の様々な区分化のために相関マルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。パルスの数はちょうどＰ×２N であることが分かる。例えば、３パスプログラミングの場合、３ビットセルには２４パルスが必要なことになり、４ビットセルには４８パルスが必要なことになる。これは図２８Ａに示される従来のマルチパスプログラミングで必要となるパルス数より大幅に少ない。
【００９７】
図２９は、パス間で相関プログラミングレベルを使用するマルチパスプログラミング方法を示す流れ図である。
ステップ９６０：所定のステップサイズを有する階段パルストレインの形態で限られた期間経時的に増加するプログラミング電圧を供給する。
ステップ９７０：所定の数の複数のプログラミングパスでメモリセルのグループをプログラムする。各連続するプログラミングパスは、メモリセルのグループをプログラムするために印加される階段パルストレインを有し、各連続するプログラミングパスは、その前のプログラミングパスの階段パルストレインから所定のオフセットレベルだけオフセットしている階段パルストレインを有する。
ステップ９８０：グループに対するプログラミングが完了する。
【００９８】
マルチパスインデックスプログラミング技術によってベリファイ動作の数を大幅に削減することができる。同様に、マルチパス相関プログラミング技術によって、必要なプログラミングパルスの数を大幅に削減することができる。２つの技術をまとめて高性能マルチパスインデックスおよび相関プログラミングに統合することができる。セル当たり３ビット以上のデータを記憶するように構成されるメモリの場合、この恩恵はなおさら大きい。
【００９９】
本願明細書で言及されるすべての特許、特許出願、論文、書籍、仕様書、他の刊行物、文書および事柄は、あらゆる目的でその全体が本願明細書において参照により援用されている。援用されている刊行物、文書またはこの文書の事柄および文章のいずれかの間で用語の定義または使用が矛盾または衝突する場合には、本願明細書中の用語の定義または使用が優先するものとする。
本発明の様々な態様を特定の実施形態を参照しながら説明してきたが、当然のことながら、本発明は、添付の特許請求の範囲の全範囲内においてその権利が保護される権利を有する。
【図１】
0005529858.tif 000002
【図２】
0005529858.tif 000003
【図３】
0005529858.tif 000004
【図４】
0005529858.tif 000005
【図５Ａ】
0005529858.tif 000006
【図５Ｂ】
0005529858.tif 000007
【図６】
0005529858.tif 000008
【図７】
0005529858.tif 000009
【図８】
0005529858.tif 000010
【図９】
0005529858.tif 000011
【図１０】
0005529858.tif 000012
【図１１】
0005529858.tif 000013
【図１２】
0005529858.tif 000014
【図１３】
0005529858.tif 000015
【図１４Ａ】
0005529858.tif 000016
【図１４Ｂ】
0005529858.tif 000017
【図１４Ｃ】
0005529858.tif 000018
【図１４Ｄ】
0005529858.tif 000019
【図１４Ｅ】
0005529858.tif 000020
【図１５】
0005529858.tif 000021
【図１６】
0005529858.tif 000022
【図１７】
0005529858.tif 000023
【図１８Ａ】
0005529858.tif 000024
【図１８Ｂ】
0005529858.tif 000025
【図１９】
0005529858.tif 000026
【図２０】
0005529858.tif 000027
【図２１】
0005529858.tif 000028
【図２２】
0005529858.tif 000029
【図２３】
0005529858.tif 000030
【図２４Ａ】
0005529858.tif 000031
【図２４Ｂ】
0005529858.tif 000032
【図２４Ｃ】
0005529858.tif 000033
【図２５】
0005529858.tif 000034
【図２６】
0005529858.tif 000035
【図２７】
0005529858.tif 000036
【図２８Ａ】
0005529858.tif 000037
【図２８Ｂ】
0005529858.tif 000038
【図２９】
0005529858.tif 000039