JP2009503764A - 不揮発性メモリを自己調整式の最大プログラムループでプログラムする方法 - Google Patents

不揮発性メモリを自己調整式の最大プログラムループでプログラムする方法 Download PDF

Info

Publication number
JP2009503764A
JP2009503764A JP2008525029A JP2008525029A JP2009503764A JP 2009503764 A JP2009503764 A JP 2009503764A JP 2008525029 A JP2008525029 A JP 2008525029A JP 2008525029 A JP2008525029 A JP 2008525029A JP 2009503764 A JP2009503764 A JP 2009503764A
Authority
JP
Japan
Prior art keywords
volatile storage
voltage pulses
programming
verification level
storage element
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.)
Granted
Application number
JP2008525029A
Other languages
English (en)
Other versions
JP4754631B2 (ja
Inventor
ワン、ジュン
ジェフリー ダブリュー. ルッツェ
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.)
SanDisk Corp
Original Assignee
SanDisk 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
Priority claimed from US11/194,439 external-priority patent/US7230854B2/en
Priority claimed from US11/194,827 external-priority patent/US7023737B1/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of JP2009503764A publication Critical patent/JP2009503764A/ja
Application granted granted Critical
Publication of JP4754631B2 publication Critical patent/JP4754631B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/12Programming voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • 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/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50004Marginal testing, e.g. race, voltage or current testing of threshold voltage
    • 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/0409Online test

Abstract

不揮発性メモリデバイスのメモリ素子をプログラムするためのプログラミング電圧パルスの最大許容数を調整して、時間の経過につれて発生するメモリ素子の変動に対処する。1つ以上のメモリ素子がある検証レベルに到達するまでプログラミングパルスが印加され、その後は、所定の最大数の追加パルスが他のメモリ素子に印加されて、これらの素子も対応する目標閾値電圧レベルに到達される。この技法によって、メモリが繰り返し使用されるに連れ、時間経過とともに変動する可能性のある最大許容数のプログラミングパルスが適用される。

Description

本発明は、不揮発性メモリのプログラミングに関する。
半導体メモリは、さまざまな電子装置内で、ますます多く使用されるようになっている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピューティングデバイス、非モバイルコンピューティングデバイス、およびその他のデバイスの中で使用されている。電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)およびフラッシュメモリは、特に普及している不揮発性半導体メモリである。フラッシュメモリもまたEEPROMの一種であるが、全メモリアレイまたはメモリの一部の内容は、従来のフル機能を備えたEEPROMとは異なり、一度に消去できる。
従来のEEPROMとフラッシュメモリは共に、半導体基板中のチャネル領域の上方に位置するとともにチャネル領域から絶縁されている浮遊ゲートを利用している。この浮遊ゲートは、ソース領域とドレイン領域の間に位置している。制御ゲートが、浮遊ゲートの上方に設けられているとともに浮遊ゲートから絶縁されている。トランジスタの閾値電圧は、浮遊ゲートに保持されている電荷の量によって制御される。すなわち、ソースとドレイン間を導通させてトランジスタをオンさせるために制御ゲートに印加しなければならない電圧の最小値は、浮遊ゲート上の電荷のレベルによって制御される。
EEPROMデバイスまたはNANDフラッシュメモリデバイスなどのフラッシュメモリデバイスをプログラムするとき、一般的には、制御ゲートにプログラム電圧を印加して、ビット線を接地する。すると、例えば、記憶素子のようなセルまたはメモリ素子のチャネルから浮遊ゲートに電子が注入される。電子が浮遊ゲート中に蓄積されると、浮遊ゲートは負に帯電して、メモリセルの閾値電圧が引き上げられ、これによって、メモリセルはプログラムされた状態になる。プログラミングに関するさらなる情報は、双方ともそれらの全体を参照してここに組み込む「Source Side Self Boosting Technique For Non−Volatile Memory」という名称の米国特許第6,859,397号および2003年7月29日に出願された「Detecting Over Programmed Memory」という名称の米国特許出願公開第2005/0024939号に見受けられる。
EEPROMデバイスおよびフラッシュメモリデバイスのなかには、2つの範囲の電荷を記憶させるために使う浮遊ゲートを有しているものがある。したがって、メモリ素子は、2つの状態(消去された状態とプログラムされた状態)のどちらかとしてプログラム/消去することが可能である。このようなフラッシュメモリは、バイナリフラッシュメモリデバイスと呼ばれることもある。その理由は、各メモリ素子が1ビットのデータを記憶するからである。
マルチステート(マルチレベルとも呼ばれる)フラッシュメモリデバイスは、複数の異なる許容/有効プログラム閾値電圧範囲を特定することによって実現される。これらの異なる閾値電圧範囲はそのそれぞれが、メモリデバイスの中に符号化されたデータビットの集合の所定の値に対応している。例えば、素子が4つの異なる閾電圧範囲に対応する4つの異なる電荷帯のうちの1つの状態にあるときに、各メモリ素子が2ビットのデータを記憶できる。
一般的に、プログラムが動作している間に制御ゲートに印加されるプログラム電圧は、一連のパルスとして印加される。一実施形態では、これらパルスの大きさは、連続するパルスごとに所定のステップサイズだけ(たとえば、0.2〜0.4V)だけ増加する。図1に、フラッシュメモリ素子の制御ゲート(または、場合によってはステアリングゲート)に印加することが可能なプログラム電圧信号Vpgmを示す。このプログラム電圧信号Vpgmは、時間とともに大きさが増加する一連のパルスを含んでいる。プログラムパルス間の期間に、検証動作が実行される。すなわち、並列にプログラムされている素子グループ中の各素子のプログラミングレベルを、連続するプログラミングパルス間で読み取って、このレベルによって、素子がプログラムすべき検証レベル以上であるか否かを判定する。マルチステートフラッシュメモリ素子を含むアレイの場合、これらメモリ素子は、各々の状態に対する検証ステップを実行して、素子が自身のデータに関連する検証レベルに到達したかどうかを判定可能とする。たとえば、データを4つの状態で記憶することが可能なマルチステートメモリ素子は、3つの比較ポイントに対して検証動作を実行する必要がある。
所定数のパルス(通常は固定値である)の印加後に素子が所望のプログラムレベルに到達しない場合に、エラー状態が宣言される。初期値、電圧ステップサイズ(適用可能な場合のみ)、最大パルス数を含むプログラム電圧Vpgm(エラー状態を宣言するに先立って印加する電圧)の大きさを選択するには、さまざまな要因に基づく検討が必要となる。特に、初期値やステップサイズが大きすぎる場合、一部のメモリ素子がオーバープログラムとなり、その結果、閾値電圧が不正確なものとなる。一方、初期値やステップサイズが小さすぎると、その結果としてプログラム時間が長くなる。一般的には、不揮発性メモリのユーザは、メモリが迅速にプログラムされることを希望する。さらに、メモリ素子が異なれば、所望の状態にプログラムするために必要なパルスの数も異なる。低速なメモリ素子であれば必要なパルスも多くなり、高速なメモリ素子であれば必要なパルスは少なくなる。容認可能なダイスソート歩留まりが得られるように十分なマージンやクッションを持たせるためには、一般に、比較的多くのVpgmパルスを印加することが許容される。たとえば、90nmのデバイスでは、マルチステートメモリ素子のデバイス中のほとんどの上位ページは、18パルス以下でプログラムすることが可能であるが、パルスの最大許容数は例えば24に設定されており、6パルスをマージンとしている。しかしながら、メモリ素子のうちの正常な1ページが、数個の低速な素子を有していたり、または1つの不良の列を有していたりする場合、パルス数が最大値に達するまでページ全体でプログラミングが継続される。
その結果、低速の素子または不良の列と同じワードライン上の素子の動作が阻害されかねない。さらに、このシナリオは、あまり使用されていないフレッシュなデバイスよりも、多くのプログラミングサイクルが実行された繰り返し使用後のデバイスにとってはさらに厳しいものとなる。これは、繰り返し使用されたデバイスは、電荷の捕獲によって、フレッシュなデバイスより高速になっているためである。特に、不揮発性メモリデバイスでは、多くのプログラミングサイクルが実行されるに連れて、浮遊ゲートとチャネル領域間の絶縁体または誘電体中に電荷が捕獲されるようになる。このような電荷の捕獲によって閾値電圧のレベルが上がり、これによって、メモリ素子はより迅速にプログラムされるようになる。これによって、素子中の電荷を消去することがより困難となる。プログラム信号の値を高く設定しすぎると、フレッシュなデバイスがオーバープログラミングされないが、そのデバイスが繰り返し使用されるに連れて、オーバープログラミングを経験するようになる。したがって、新しいデバイスでは、デバイスが古くなってもオーバープログラミングを避けられるように、プログラム電圧が十分に低く設定される。プログラム電圧の値をこのように低く設定すると、フレッシュなデバイスがデータをプログラムする速度が低下する。
このため、繰り返し使用されたデバイス中の正常な素子に対して、非常に多くのプログラムパルスが印加されることになる。繰り返し使用されたデバイスはフレッシュなデバイスより不良の列を多く有しているため、この問題は深刻なものとなる。すでに述べたように、エラー状態の宣言前に印加されるVpgmパルスの数を減少させることは可能ではあるが、そうすると歩留まりが低下する。たとえば、プログラムパルスの最大数を24から22に減少させると、ダイスソート歩留まりは約5%低下する。この値は一般的には容認不可能と考えられている。
本発明は、エラー素子(すなわち、最大許容パルス数以内で所望の電圧レベルに達しない素子)の発生率を増加させることなく、不揮発性メモリ中の素子に印加されるプログラム電圧パルスの数を調節する方法を提供することによって、上記の問題や他の問題を解決する。これを達成するために、許容電圧パルスの数を繰り返し使用されたメモリデバイスとフレッシュなメモリデバイスとで変更して、許容電圧パルスの数を調整する。
一実施形態では、不揮発性記憶装置をプログラムする方法は、連続する電圧パルスを用いて少なくとも第1の不揮発性記憶素子を第1検証レベルに到達するようにプログラムするステップと、前記少なくとも第1の不揮発性記憶素子がいつ第1の検証レベルに到達したかを検出するステップを有している。本方法は、その検出に応答して、少なくとも第2の不揮発性記憶素子を第2検証レベルに到達するようにプログラムするときの追加電圧パルスの最大許容数を決定するステップをさらに有している。第1と第2の検証レベルは同じであっても互いに異なっていてもよいし、中間検証レベルであっても最終検証レベルであってもよい。
他の実施形態においては、不揮発性記憶装置をプログラムする方法は、不揮発性記憶素子の第1の部分集合が第1の検証レベルに到達するまで不揮発性記憶素子の集合に対して1つ以上の初期プログラムサイクルを実行するステップと、不揮発性記憶素子の第1の部分集合が第1の検証レベルに到達すると、それに続いて不揮発性記憶素子の集合に対して1つ以上の追加プログラムサイクルを実行するステップを有している。ここで、前記1つ以上の追加プログラムサイクルの数は、追加プログラムサイクルの所定の最大数を超えることはない。
他の実施形態では、不揮発性記憶装置をプログラムする方法は、不揮発性記憶素子の集合中の少なくとも第1の不揮発性記憶素子が、電圧パルスが印加された後にいつ第1の検証レベルに到達したかを検出するステップと、前記検出に応答して、最大許容数の電圧パルスを少なくとも第2の不揮発性記憶素子に印加することによって、少なくとも第2の不揮発性記憶素子を第2の検証レベルに到達させるステップを有している。
本発明の実施に適した不揮発性メモリシステムの一例では、NANDフラッシュメモリ構造を使用する。NANDフラッシュメモリ構造では、2つの選択ゲートの間に複数のトランジスタが直列に配置されている。直列のトランジスタと選択ゲートは、NANDストリングと呼ばれる。図2は、1つのNANDストリングを示す上面図である。図3は、その等価回路である。図2および図3に示すNANDストリングは、直列の4つのトランジスタ100、102、104、106を備え、第1の選択ゲート120と第2の選択ゲート122との間に挟まれている。選択ゲート120は、NANDストリングをビット線コンタクト126に接続する。選択ゲート122は、NANDストリングをソース線コンタクト128に接続する。選択ゲート120は、制御ゲート120CGに適切な電圧を印加することによって制御される。選択ゲート122は、制御ゲート122CGに適切な電圧を印加することによって制御される。トランジスタ100、102、104、106のそれぞれは、制御ゲートと浮遊ゲートを有する。トランジスタ100は、制御ゲート100CGと浮遊ゲート100FGを有する。トランジスタ102は、制御ゲート102CGと浮遊ゲート102FGを有する。トランジスタ104は、制御ゲート104CGと浮遊ゲート104FGを有する。トランジスタ106は、制御ゲート106CGと浮遊ゲート106FGを有する。制御ゲート100CG、102CG、104CG、106CG、は、ワード線WL3、WL2、WL1、WL0にそれぞれ接続されている。1つの実施形態では、セルランジスタ100、102、104、106のそれぞれがメモリセルあるいはメモリ素子となる。他の実施形態では、メモリ素子が複数のトランジスタを含んでいてもよく、図2および図3に示した構成と異なっていてもよい。選択ゲート120は、選択線SGDに接続され、選択ゲート122は、選択線SGSに接続される。
図4は、上記のNANDストリングの断面図を示す。NANDストリングのトランジスタはp−ウェル領域140内に形成されている。各トランジスタは、制御ゲート(100CG、102CG、104CG、および106CG)と浮遊ゲート(100FG、102FG、104FG、および106FG)からなるスタックゲート構造を備えている。浮遊ゲートは、酸化膜または他の誘電体膜上のp−ウェルの表面上に形成されている。制御ゲートは、浮遊ゲート上に位置しており、制御ゲートと浮遊ゲートは、ポリシリコン間誘電体層によって分離されている。メモリ素子(100、102、104、106)の制御ゲートは、ワード線を形成している。N+拡散層130、132、134、136、138は隣接する素子間で共有されており、これにより素子は相互に直列に接続されてNANDストリングを形成している。これらのN+拡散層は、各素子のソースおよびドレインを形成している。例えば、N+拡散層130は、トランジスタ122のドレイン、および、トランジスタ106のソースとして働く。N+拡散層132は、トランジスタ106のドレイン、および、トランジスタ104のソースとして働く。N+拡散層134は、トランジスタ104のドレイン、および、トランジスタ102のソースとして働く。N+拡散層136は、トランジスタ102のドレイン、および、トランジスタ100のソースとして働く。N+拡散層138は、トランジスタ100のドレイン、および、トランジスタ120のソースとして働く。N+拡散層126は、NANDストリングのビット線につながっており、N+拡散層128は、複数のNANDストリングの共通ソース線につながっている。
図2〜図4では、NANDストリング内に4つのメモリ素子を示しているが、4つのトランジスタを使用する構成は、一例であることに留意されたい。ここに記載される技術によって使用されるNANDストリングは、4つ未満のメモリ素子を有していてもよく、又は、4つを超えるメモリ素子を有していてもよい。例えば、一部のNANDストリングは、8、16、32、64あるいはそれ以上の数のメモリ素子等を含むことができる。本明細書における説明は、NANDストリング内のメモリ素子がいかなる数でも有効である。
各メモリ素子は、アナログ又はデジタル形式で表されたデータを記憶することが可能である。1ビットのデジタルデータを記憶する場合、メモリ素子の可能な閾値電圧の範囲は、論理データ「1」および「0」が割り当てられる2つの範囲に分割される。NAND型フラッシュメモリの一例では、メモリ素子の消去された後の閾値電圧は負となり、論理「1」と定義される。プログラム後の閾値電圧は正となり、論理「0」と定義される。閾値電圧が負の状態で制御ゲートに0Vを印加することによって読み出しが試みられた場合、メモリ素子はオンになり、論理1が記憶されていることを示す。閾値電圧が正の状態で制御ゲートに0Vを印加することによって読み出しが試みられた場合、メモリ素子はオンにならず、これは論理「0」が記憶されていることを示す。
また、メモリ素子は、複数の状態を記憶することも可能であり、それにより例えば複数ビットのデジタルデータを記憶することも可能である。複数の状態のデータを記憶する場合、可能な閾値電圧の範囲は、記憶する状態の数に分割される。例えば、4つの状態の情報が使用される場合、4つの閾値電圧範囲が存在し、それぞれにデータ値「11」、「10」、「01」、「00」が割り当てられる。NAND型メモリの一例では、消去動作の後の閾値電圧は負となり、「11」と定義される。正の閾値電圧は、「10」、「01」、「00」の状態のために使用される。一部の実施例では(上に例示したようなもの)、これらのデータ値(たとえば論理状態)を、グレイコード割り当て方法を用いて閾値範囲に割り当て、これで、浮遊ゲートの閾値電圧が間違ってその隣接する物理状態にずれても、1つの論理ビットのみしか影響されないようにしている。メモリ素子にプログラムされたデータとこの素子の閾値電圧範囲との間の具体的な関係は、メモリ素子に対して採用されるデータ符号化スキームによって異なる。たとえば、その双方の全体を参照してここに組み込む、2003年6月13日に出願された「Tracking Cells For A Memory System」という名称の米国特許第6,222,762号および米国特許出願第10/461,244号と、2004年12月16日に公開された米国公開特許出願第2004/0255090号には、マルチステート式フラッシュメモリ素子のさまざまなデータ符号化スキームが記載されている。
NAND型フラッシュメモリおよびそれらの動作に関連する例は、次の米国特許/特許出願で提供されており、それぞれの全体が参照により本明細書に援用される。米国特許第5,386,422号明細書、第5,570,315号明細書、米国特許第5,774,397号明細書、米国特許第6,046,935号明細書、米国特許第6,456,528号明細書、および米国出願第6,522,580号明細書である。NAND型フラッシュメモリに加え、その他のタイプの不揮発性フラッシュメモリも本発明とともに使用されてもよい。
フラッシュEEPROMシステムで役に立つ別のタイプのメモリ素子は、導電性の浮遊ゲートの代わりに非導電性の誘電性材料を利用して、電荷を不揮発式に蓄積している。このような素子が、1987年3月に発行されたIEEEのエレクトロン・デバイス・レターの第EDL−8巻の第3号の、チャンらによる「A True Single−Transistor Oxide−Nitride−Oxide EEPROM Device」という記事の93〜95ページに記載されている。シリコン酸化物、シリコン窒化物、シリコン酸化物(“ONO”)で形成された三層誘電体を、メモリ素子のチャネル上で、導電性の制御ゲートと半導体基板の表面とで挟んでいる。この素子は、素子のチャネルから窒素中に電子を注入し、この窒素中でこれらの電子が限られた領域中に捕獲されて蓄積されることによってプログラムされる。すると、この蓄積された電荷のため、この素子のチャネルのある部分の閾値電圧が変化するが、この変化は検出可能である。この素子は、ホットホールを窒素中に注入することによって消去される。また、1991年4月に発行されたソリッドステート回路に関するIEEEジャーナルの第26巻の第4号のノザキらによる「A 1−Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application」の497〜501ページを読めば、ドーピングされた多結晶シリコンゲートがメモリ素子チャネルのある部分上を伸張して、互いに分離された選択トランジスタを形成している分離ゲート構造の類似の素子が記述されている。前述の2つの記事の全体を参照してここに組み込む。参照して個々に組み込む、1998年のIEEEプレスのウイリアム・D・ブラウン(William D. Brown)とジョー・E・ブルーワ(Joe E. Brewer)によって編集された「Nonvolatile Semiconductor Memory Technology」の1.2章に言及されているプログラミング技法もまた、誘電性電荷捕獲デバイスに応用可能であるとこの章に記述されている。このパラグラフに記述されているメモリ素子もまた、本発明で用いることが可能である。したがって、本書に記載する技術もまた、互いに異なったメモリ素子の誘電体領域間でのカップリングに当てはまる。
各々の素子に2ビットを記憶する別の方式が、2000年11月に発行されたIEEEのエレクトロン・デバイス・レターの第21巻の第11号のエイタン(Eitan)らによる「NROM:A Novel Localized Trapping, 2−Bit Nonvolatile Memory Cell」の543〜545ページに記載されている。ONO誘電体層が、ソース拡散層とドレイン拡散層間のチャネル上を伸張している。一方のデータビットに対する電荷がドレインに隣り合った誘電体層中で局所化され、他方のデータビット用の電荷がソースに隣り合った誘電体層中で局所化される。マルチステートデータ記憶装置は、誘電体内部の空間的に分離された電荷蓄積領域のバイナリ状態を別々に読み取ることによって記憶される。このパラグラフに記述するメモリ素子もまた、本発明で用いることが可能である。
図5は、本発明を実施するために使用できるフラッシュメモリシステムの一実施形態のブロック図である。このシステムでは、メモリ素子アレイ202は、列制御回路204と、行制御回路206と、C−ソース制御回路210と、p−ウェル制御回路208によって制御される。列制御回路204は、メモリ素子内に記憶されたデータを読み出すために、プログラム動作中のメモリ素子の状態を判定するために、および、ビット線の電位レベルを制御してプログラミングを促進又はプログラミングを抑止するために、メモリ素子アレイ202のビット線に接続されている。行制御回路206は、ワード線のうちのいずれかを選択するために、読み出し電圧を印加するために、プログラム電圧を印加するために、および、消去電圧を印加するために、ワード線に接続されている。例えば、EPROMおよびフラッシュメモリ回路で使用するプログラム電圧レベルは、メモリ回路で一般に使用される電圧より高い。これらは回路に供給される電圧より高いことが多い。これらの高い電圧は、行制御回路206(あるいは別の場所)内の電荷ポンプによって生成される。行制御回路206は、一例において、本質的に容量性ワード線に電荷を投入し、電圧を高くする。電荷ポンプは入力を電圧Vinで受け取り、入力された電圧を電圧増幅の過程において徐々に上昇させ、より高い電圧Voutを出力する。出力された電圧は負荷、例えばEPROMメモリ回路ワード線に供給する。いくつかの実施例においては、負荷から電荷ポンプへフィードバック信号が送られる。従来技術のポンプは、負荷が所定の電圧に達したことを示す信号に応答して停止する。また、負荷が所定の電圧に達すると、過電荷を防ぐために分路が使用される。しかし、これはより多くの電力を消費し、低電圧印加の際には望ましくない。電荷ポンプに関する詳細な情報は、その全体が参照として本発明に組み込まれる米国特許第6,734,718号に記載されている。
C−ソース制御回路210は、メモリ素子に接続された共通ソース線(図6に「C−ソース」として示す)を制御する。P−ウェル制御回路208は、p−ウェル電圧を制御する。
メモリ素子内に記憶されたデータは、列制御回路204によって読み出され、データ入力/出力バッファ212を経由して、外部入力/出力線に出力される。メモリ素子内に記憶されるプログラムデータは、外部入力/出力線を経由してデータ入力/出力バッファ212に入力され、列制御回路204に転送される。外部入力/出力線は、コントローラ218に接続される。
フラッシュメモリデバイスを制御するためのコマンドデータは、コントローラ218に入力される。コマンドデータは、どのような動作が要求されているのかをフラッシュメモリに通知する。入力コマンドは、列制御回路204と、行制御回路206と、C−ソース制御回路210と、p−ウェル制御回路208と、データ入力/出力バッファ212とを制御する状態マシン216に転送される。状態マシン216は、さらに、レディ(READY)/ビジー(BUSY)や、パス(PASS)/フェイル(FAIL)などの、フラッシュメモリのステータスデータを出力してもよい。いくつかの実施例において、状態マシン216は、後述するフローチャートに描かれる工程を含むプログラミングプロセスの管理を担う。
コントローラ218は、パーソナルコンピュータ、デジタルカメラ、パーソナルデジタルアシスタントなどのホストシステムに接続されているか、あるいは、接続可能である。コントローラ218は、ホストからコマンドをおよびデータを受信するために、および、ホストにデータおよびステータス情報を提供するために、ホストと通信を行う。コントローラ218は、ホストからのコマンドを、状態マシン216と通信するコマンド回路214が解読して実行可能なコマンド信号に変換する。通常、コントローラ218は、メモリアレイに書き込まれるか、あるいは、メモリアレイから読み出されるユーザデータのためのバッファメモリを有している。いくつかの実施例においては、プログラミングプロセスはこのコントローラによって管理できる。
一例のメモリシステムは、コントローラ218を含む1つの集積回路と、1つ以上の集積回路チップ(それぞれがメモリアレイと、関連する制御、入力/出力、および状態マシン回路とを含む)を備えている。メモリアレイとシステムのコントローラ回路は、1つ以上の集積回路チップ上に一緒に統合される傾向にある。メモリシステムは、ホストシステムの一部として組み込まれていてもよく、又は、ホストシステムに着脱可能に挿入されるメモリカード(又はその他のパッケージ)内に含まれていてもよい。そのような着脱可能なカードは、メモリシステム全体(例えば、コントローラを含む)を含んでいてもよく、又は、メモリアレイおよび関連する周辺回路のみを含んでいてもよい(コントローラはホスト内に組み込まれる)。このように、コントローラ(または制御機能)は、ホスト内に組み込まれることも、又は着脱可能なメモリシステム内に含まれることも可能である。
いくつか実施形態では、図5のコンポーネントのいくつかは、組み合わせることが可能である。さまざまな設計で、図5のコンポーネントのうちで、メモリ素子アレイ202以外の1つ以上のコンポーネントが、制御回路と考えることが可能である。たとえば、1つ以上の制御回路は、コマンド回路、状態マシン、行制御回路、列制御回路、ウェル制御回路、ソース制御回路およびデータ入/出力回路のうちのどれか1つまたはこれらを組み合わせたものを含んでいる。
図6を参照して、メモリ素子アレイ202の構造の例を説明する。一例として、1,024個のブロックに区分けされているNAND型フラッシュEEPROMを説明する。消去動作においては、各ブロックに記憶されたデータは同時に消去される。1つの形態では、ブロックは、同時に消去される素子の最小単位である。本実施形態において、各ブロックには8,512列あり、偶数および奇数列に分割される。ビット線も偶数のビット線(BLe)と奇数のビット線(BLo)に分割される。図6は、直列に接続され、NANDストリングを形成する4つのメモリ素子を示す。4つの素子は各NANDストリングに含まれるように図示されているが、使用する素子の数は4つ以上でも4つ以下でもよい。NANDストリングの一方の端子は、選択トランジスタSGDを介して対応するビット線に接続され、他方の端子は、第二の選択トランジスタSGSを介してC−ソース線に接続されている。
読み出しおよびプログラミング動作の一実施形態の間は、4,256のメモリ素子が同時に選択される。選択されるメモリ素子は、同じワード線と、同じ種類のビット線(例えば、偶数ビット線又は奇数ビット線)とを有する。したがって、論理ページを形成する532バイトのデータを、同時に読み出し又はプログラムすることが可能である。したがって、1つのブロックは、少なくとも8つの論理ページを記憶することが可能である(4本のワード線、それぞれが奇数および偶数ページを有する)。マルチステートメモリ素子の場合、各メモリ素子が2ビットのデータを記憶し、これら2ビットがそれぞれ異なったページに記憶される場合、1つのブロックは16の論理ページを記憶する。他のサイズのブロックおよびページも、本発明とともに使用されてもよい。さらに、図5および図6に示す構造以外の構造を、本発明を実施するために使用することもできる。例えば、1つの形態においては、ビット線は、全てのビット線がプログラムされかつ同時に(あるいは非同時に)読み取られるように奇数と偶数の線に分割されない。
メモリ素子の消去は、p−ウェルを消去電圧(例えば、20ボルト)まで引き上げるとともに、選択されたブロックのワード線を接地することによって行われる。ソースおよびビット線はフローティングとする。消去は、メモリアレイ全体、独立したブロック、又はメモリデバイスの一部である別の単位の素子に対して実行することができる。1つの実施形態においては、浮遊ゲートから電子がp−ウェル領域に移動し、閾値電圧は負になる。
読み出しおよび検証動作では、トランジスタをパスゲートとして動作させるために、選択ゲート(SGDおよびSGS)と、選択されないワード線(例えば、WL1が選択されるワード線の場合には、WL0、WL2、およびWL3)が、読み出しパス電圧(例えば、4.5ボルト)まで引き上げられる。選択されたワード線WL1は、各読み出しおよび検証動作について指定されたレベルの電圧に接続され、関連するメモリ素子の閾値電圧が指定されたレベルの電圧より上なのか下なのかが判定される。例えば、2レベル型のメモリ素子の読み出し動作では、選択されたワード線WL1を接地してもよく、それによって閾値電圧が0Vよりも高いのか否かが検出される。2レベル型のメモリ素子の検証動作では、選択されたワード線WL1を例えば0.8Vに接続し、それによって閾値電圧が少なくとも0.8Vに到達しているのか否かが検証される。ソースおよびp−ウェルは0ボルトである。選択されたビット線は、偶数のビット線(BLe)と考えられるが、例えば0.7Vのレベルにプリチャージされる。閾値電圧が、ワード線上の読み出し又は検証レベルよりも高い場合には、該当する素子に関連するビット線(BLe)の電位レベルは、非導電性のメモリ素子であるために、ハイレベルに維持される。他方、閾値電圧が、読み出し又は検証レベルよりも低い場合には、関連するビット線(BLe)の電位レベルは、導電性のメモリ素子がビット線を放電するため、例えば0.5V未満のローレベルに低下する。これによって、メモリ素子の状態が、ビット線に接続された電圧比較器センス増幅器により検出される。
上記の消去、読み出し、および検証動作は、当業界で知られた技術に従って実行される。したがって、説明した詳細の多くについては、当業者によって変更されることが可能である。当業界で知られた他の消去、読み出しおよび検証技術を使用することもできる。
上述したように、各々のブロックを多くのページに分割することが可能である。一実施形態では、1ページがプログラミングの単位である。いくつかの実施例では、個々のページをセグメントに分割されてもよい。セグメントは、基本的なプログラミング動作として一度に書き込まれる最小数の素子を有している。一般的に、1ページ以上のデータが1行のメモリ素子に記憶される。1ページに1つ以上のセクターを記憶することが可能である。セクターには、ユーザデータとオーバヘッドデータが含まれる。オーバヘッドデータは、セクターのうちのユーザデータから計算されたエラー訂正符号(ECC)を含んでいる。コントローラの一部が、データがアレイ中にプログラムされている間にECCを計算し、また、データがアレイから読み出されている間にこのECCを用いてチェックする。代替例では、ECCおよび/または他のオーバヘッドデータを、自身が属するユーザデータとは異なったページ、さらには異なったブロックに記憶する。他の形態では、メモリデバイスの他の部分(たとえば状態マシン)がECCを計算可能である。
ユーザデータを含むセクターは、一般に、磁気ディスクドライブ中のセクターのサイズに対応して512バイトである。オーバヘッドデータは、一般的には追加の16〜20バイトである。多くのページがブロックを形成しているが、その数値は、たとえば、8ページから32ページ、64ページ、さらにこれ以上の数値の間のいずれかの数値である。
図7に、それぞれのメモリ素子が2ビットのデータを記憶している場合のメモリ素子アレイの閾値電圧分布を示す。Eは、消去されたメモリ素子に対する第1の閾値電圧分布を示している。A、B、Cは、プログラムされたメモリ素子に対する3つの閾値電圧分布を示している。1つの設計では、分布E中の閾値電圧は負であり、分布A、B、C中の閾値電圧は正である。
図7の異なる閾値電圧範囲はそのそれぞれが、データビットの集合の所定の値に対応している。メモリ素子にプログラムされたデータとこの素子の閾値電圧レベルとの間の具体的な関係は、素子に対して採用されるデータ符号化スキームによって異なる。1つの例では、“11”を閾値電圧範囲E(状態E)に割り当て、“10”を閾値電圧範囲A(状態A)に割り当て、“00”を閾値電圧範囲B(状態B)に割り当て、“01”を閾値電圧範囲C(状態C)に割り当てている。しかしながら、他のスキームを用いている実施形態もある。
図7はまた、メモリ素子からデータを読み出すための3つの基準電圧Vra、Vrb、Vrcを示している。任意のメモリ素子の閾値電圧がVra、VrbおよびVrcより大きいか小さいかをテストすることによって、システムはメモリ素子がどの状態にあるかを判定することが可能である。図7はまた、3つの検証基準電圧Vva、Vvb、Vvcを示している。メモリ素子を状態A、B、Cにプログラムする際には、本システムは、これらのメモリ素子の閾値電圧がVva、Vvb、Vvc以上であるかどうかテストする。
一実施形態では、フルシーケンスプログラミングとして知られているが、メモリ素子を、消去状態Eからプログラム済み状態A、B、C(曲線矢印で示されている)のうちのどれにでも直接的にプログラムすることが可能である。たとえば、プログラムされるメモリ素子の母集団を最初に消去し、これで、この母集団中のすべてのメモリ素子が消去状態Eとなるようにする。一部のメモリ素子が状態Eから状態Aにプログラムされている間に、他のメモリ素子を状態Eから状態Bにプログラムしたり、および/または、状態Eから状態Cにプログラムしたりする。
図8に、互いに異なった2つのページ、すなわち、下位ページと上位ページ分のデータを記憶するマルチステートメモリ素子をプログラムする2パス式技法の例を示す。4つの状態、すなわち、状態E(11)、状態A(10)、状態B(00)および状態C(01)が示されている。状態Eの場合、両ページとも“1”を記憶している。状態Aの場合、下位ページは“0”を記憶し、上位ページは“1”を記憶している。状態Bの場合、両ページとも“0”を記憶している。状態Cの場合、下位ページは“1”を記憶し、上位ページは“0”を記憶している。ここで、特定のビットパターンがそれぞれの状態に割り当てられているが、別のビットパターンを割り当ててもよい。第1のプログラミングパスでは、素子の閾値電圧レベルが、下位の論理ページにプログラムされるビットにしたがって設定される。このビットが論理“1”であれば、この閾値電圧は変更されないが、これは、前に消去されている結果として適切な状態にあるからである。しかしながら、このプログラムされるビットが論理“0”であれば、この素子の閾値電圧は、矢印230で示すように状態Aにまで引き上げられる。これで、第1のプログラミングパスが完結する。
第2のプログラミングパスでは、素子の閾値電圧レベルが、上位の論理ページにプログラムされるビットにしたがって設定される。この上位論理ページビットが論理“1”を記憶するのであれば、なんらプログラミングされない。これは、素子が、下位ページビットのプログラミングに基づいて決まる状態EまたはAの内の一方の状態にあるからである(状態EとAの双方が“1”という上位ページビットを有している)。上位ページビットが論理“0”となるのであれば、閾値電圧はシフトする。第1のパスの結果、素子が消去状態Eのままであれば、第2のフェーズで、素子は、閾値電圧が矢印234で示すように状態C内に移るようにプログラムされる。素子が、第1のプログラミングパスの結果として状態Aにプログラムされている場合、メモリ素子は、矢印232で示すように閾値電圧が状態B内に移るように、第2のパスでさらにプログラムされる。第2のパスの結果、下位ページのデータを変更することなく、上位ページの論理“0”を記憶するように指定された状態に素子をプログラムすることになる。
一実施形態では、ページ全体を満たすのに十分なデータが書き込まれた場合に、フルシーケンス書き込みを実行するようにシステムをセットアップすることが可能である。ページ全体を満たすのに十分なデータが書き込まれない場合、プログラミングプロセスは、受信したデータによる下位ページのプログラミングをプログラムすることが可能である。さらにその後にデータが受信されると、本システムは、上位ページをプログラムする。別の実施形態では、このシステムは、下位ページをプログラムするモードで書き込みを始め、次に、ワード線のメモリ素子の全部(またはほとんど)を満たすに十分なデータがその後に受信されればフルシーケンスプログラミングモードに変換することが可能である。このような実施形態のより詳細が、その全体を参照してここに組み込む、発明者サージー・アナトリビッチ・ゴロベッツ(Sergy Anatolievich Gorobets)とヤン・リー(Yan Li)による、2004年12月14日に出願された「Pipelined Programming of Non−Volatile Memories Using Early Data」という名称の米国特許出願第11/013,125号に開示されている。
図9A〜9Cに、浮遊ゲート間のカップリングを軽減する不揮発性メモリをプログラムする別のプロセスを開示する。このプロセスは、前のページの隣り合ったメモリ素子に書き込んだ後に、特定のページに対する特定のメモリ素子に書き込み動作を実行する。一実施例では、不揮発性メモリ素子はそのそれぞれが、4つのデータ状態を用いて2ビットのデータを記憶する。たとえば、状態Eが消去された状態で、状態A、BおよびCがプログラムされた状態と仮定する。状態Eはデータ11を、状態Aはデータ01を、状態Bはデータ10を、状態Cはデータ00を記憶している。隣り合った状態Aと状態Bの間で双方のビットが変化するので、これはノングレイコーディングの例である。データをデータの物理状態に符号化する他の方法も用いることが可能である。それぞれのメモリ素子が2ページ分のデータを記憶している。参照目的で、これらのページのデータを上位ページと下位ページと呼ぶが、別のラベルを付けることも可能である。図9A〜Cのプロセスに対する状態Aを参照すると、上位ページはビット0を記憶し、下位ページはビット1を記憶する。状態Bを参照すると、上位ページはビット1を記憶し、下位ページはビット0を記憶する。状態Cを参照すると、双方のページはビットデータ0を記憶する。図9A〜Cのプログラミングプロセスは、2つのステップのプロセスである。第1のステップでは、下位ページをプログラムする。この下位ページがデータ1の状態にとどまることになっている場合、メモリ素子の状態は状態Eのままである。このデータが0にプログラムされることになっている場合、メモリ素子が状態B’にプログラムされるように、メモリ素子の閾値電圧VTHを引き上げる。図9Aに、状態Eから状態B’にメモリ素子をプログラムする様子を示す。図9Aに示す状態B’は中間状態B’である。したがって、検証ポイントを、Vvbより低いVvb’として示す。
1つの形態では、あるメモリ素子が状態Eから状態B’にプログラムされると、隣り合ったワードライン上のその隣接したメモリ素子がその下位ページに関してプログラムされる。その隣接したメモリ素子をプログラムした後で、浮遊ゲート間のカップリング作用によって、状態Bである検討中のメモリ素子の見かけ上の閾値電圧が引き上げられる。これによって、状態B’の閾値電圧分布の幅を図9Bの閾値電圧分布250として示す分布にまで広げる作用がある。この閾値電圧分布の見かけ上の拡大は、上位ページをプログラムするときに修正される。
図9Cは、上位ページをプログラムするプロセスを示している。メモリ素子が消去された状態Eにあって上位ページが1のままとどまるのであれば、このメモリ素子は状態Eのままである。メモリ素子が状態Eにあってその上位ページデータを0にプログラムすることになっているのであれば、このメモリ素子の閾値電圧を引き上げて、メモリ素子が状態Aとなるようにする。メモリ素子が中間閾値電圧分布250を示す状態B’にあって、上位ページデータが1にとどまることになっている場合、このメモリ素子は最終状態Bにプログラムされる。メモリ素子が中間閾値電圧分布250を示す状態B’にあって、上位ページデータがデータ0になることになっている場合、このメモリ素子の閾値電圧を引き上げて、メモリ素子が状態Cとなるようにする。図9A〜9Cに示すプロセスによって浮遊ゲート間のカップリング作用が低減されるが、これは、隣接したメモリ素子の上位ページをプログラムした場合にしか、所与のメモリ素子の見かけ上の閾値電圧が影響されないからである。別の状態のコーディングの例として、上位ページデータが1の時に閾値電圧分布250から状態Cへ移動する、および、上位ページデータが0の時には状態Bへ移動することが挙げられる。図9A〜9Cに4つのデータ状態と2ページ分のデータに関する例を示すが、ここで教示する概念は、状態が4つより多いまたは少なく、あるいは、2ページではない他の実施例にも適用可能である。様々なプログラミング方法および浮遊ゲート間のカップリングについては、2005年4月5日に出願された米国特許第11/099,133号の「Compensating For Coupling During Read Operations Of Non−Volatile Memory」に記載されている。
図10に、不揮発性メモリのプログラミング中の実行例を記述する表を示す。データは、フレッシュデバイス(未使用デバイス)と、すでに10,000のプログラミングサイクルを実行したデバイスに対して提供される。一実施形態では、プログラミングサイクルには、プログラムする動作と消去する動作(または消去してからプログラムする動作)が含まれる。他の実施形態では、プログラミングサイクルが、消去動作なしのプログラミング動作を含む場合もある。表は、上述した図8に係る方法に従って下位ページと上位ページにデータをプログラムするために用いられるプログラミングパルス(Vpgm)の数を示している。また、上述した図7に係る方法に従ってフルシーケンスプログラミングを実行するためのデータもある。どちらの場合も、初期パルスの大きさは16.0ボルト、ステップサイズは0.3ボルトである。図10に示すように、フレッシュデバイスの場合の平均プログラミング時間は800マイクロ秒であり、使用済みデバイスのそれは650マイクロ秒である。フレッシュデバイスは、繰り返し使用されているデバイスより約3発多いプログラミングパルスを必要とした。くわえて、フレッシュデバイスは、ソフトプログラミングプロセス(以下に説明する)ではより多くのプログラムパルスを必要とした。
ダイソート歩留まりの低下のリスクを増すことなく、繰り返し使用されたデバイス中の正常なセルまたは素子に対して過剰なプログラムパルスを印加することを回避するために、メモリ素子のエラーが宣言される前に、メモリ素子に印加されるプログラミングパルスの最大許容数を適切に調整することが提案されている。この方法によれば、デバイスが繰り返し使用されるのに連れて、プログラミングパルスの最大許容数を徐々に調整することが可能となる。
図11は、メモリ素子のエラーが宣言される前にそのメモリ素子に印加されるプログラミングパルスの最大許容数を適切に調整しながら不揮発性記憶装置をプログラムするプロセスを説明するフローチャートである。このプロセスは、データをプログラムする要求の受信(ステップ400)に応答して開始することができる。ステップ402では、システムは、メモリのうちのプログラムすべき適切な部分を選択する。この動作には、書き込み先のブロックおよび/またはページおよび/またはセクターを選択する動作が含まれる。オプションとして、プログラミングサイクル数のカウント値であるサイクルカウント値をインクリメントすることが可能である。このサイクルカウント値は、フラッシュメモリアレイ、状態マシン、コントローラまたはこれ以外のロケーションに記憶することが可能である。1つの方式では、サイクルカウント値は、状態マシンと関連付けされているレジスタに記憶される。ステップ404では、上記の選択されたメモリ部分をオプションとして事前プログラムするが、これは、メモリの劣化に備えるためである。選択されたセクターまたはページ内の全てのメモリ素子が同じ閾値電圧範囲にプログラムされる。次に、ステップ406で、プログラムする予定のメモリ素子がすべて消去される。たとえば、ステップ406の動作に、すべてのメモリ素子を状態Eに移動させる動作を含むことが可能である(図7〜9を参照)。この消去プロセスの間に、一部のメモリ素子の閾値電圧が分布Eより低い値まで低下することがある(図7〜9を参照)。ステップ408では、システムは、図1に示すようなプログラム電圧パルスをメモリ素子に印加して、その閾値電圧が閾値電圧分布E以内に入るように増加させる等のソフトプログラミングプロセスを実行する。
オプションとして、システムは、初期プログラムパルスの大きさを示すフラグにアクセスしてもよい。たとえば、図10を参照すると、Vpgmの初期値は16.0Vとなっている。Vpgmのこの初期値は、電荷ポンプを正しくプログラムすることによって設定することが可能である。ステップ410では、印加される電圧パルスの合計のカウント値、すなわち、プログラムカウント値PCが、ゼロに初期設定されてパス毎にカウントアップされる。ステップ412では、固定パルス限界値(FPL)を超えたかどうかを判定するチェックが行われる。FPLに関しては図1も参照のこと。たとえば、24パルス等のFPLが用いられる。印加パルス数に対するこの限界値は、オプションとして、適応パルス限界値(APL:以下に説明する)に加えて維持されるが、このAPLの方が通常は低い。ステップ414では、プログラムパルスVpgmが適切なワードラインに印加される。ステップ416では、このワードライン上のメモリ素子を検証して、これらのメモリ素子のうちの何れかが対応する目標閾値電圧レベルに到達したかどうかをチェックする。すなわち、1つ以上のメモリ素子を含むメモリ素子の部分集合が合格と検証されたかどうか判定する。検証レベルは、たとえば、不揮発性記憶素子がプログラムされる最終電圧レベルであったり、この最終電圧レベルに到達する前の中間電圧レベルであったりする。さらに、この検証レベルは、すべてのメモリ素子に対して同じである必要はない。詳細は図12を参照のこと。
メモリ素子のいずれもが合格と検証されなかった場合、ステップ418でVpgmが増加され、固定パルス限界値を超えない限り、次のプログラムパルスが印加されて追加のパス、すなわち、プログラミングループがステップ410で開始される。このプロセスは、メモリ素子のうちの少なくとも1つが合格と検証されるまで繰り返される。ここで、Vpgmの値を固定されたまたは変化するステップサイズ(たとえば0.3V)だけインクリメントさせてもよいが、大きさが等しいパルスを用いる場合にはインクリメントする必要はない。ステップ416で1以上の最初のメモリ素子が指定の閾値電圧レベルを満足させることが検証されたら、ステップ424で追加電圧パルスのカウントが開始される。残りのメモリ素子を検証レベルに到達させるために、指定された数“A”だけ追加パルスを印加すれば、これで、素子に印加されるパルスの総数を適切に設定することが可能となる。1つの実施形態では、“A”は、ページまたは他のグループの不揮発性記憶素子の自然閾値電圧分布を、階段状の電圧パルスのステップサイズで除算したものに等しくすることが可能である。他の実施形態では、追加パルスの数を、デバイスの特徴や他の手段で決定することができる。
さらに、最初のメモリ素子が検証レベルに到達するまでに必要なパルス数をカウントする必要はないが、これは、最初のメモリ素子の合格の検証が検出されれば、印加された追加パルスの数をカウントすることが可能となるからである。たとえば、8パルスの印加後に最初のメモリ素子が検証レベルに到達してもよく、その場合、許容追加パルス数“A”は6パルスでもよい。したがって、印加される可能性のあるパルスの総数である適応パルス限界値(APL)は、この例では14に制限されるが、これは24パルスというFPLより少ない値である。この場合、カウンタは、6までカウントアップするだけで、APLを適用することが可能となる。この方式によって、デザインが合理的なものとなり、処理オーバヘッドが最小化される。したがって、最初のメモリ素子が合格と検証された後で別個のカウンタをスタートさせることによってAPLが適用され、残りのメモリ素子に対して、これらの素子が所望の検証レベルに到達可能とするために、最大許容数の追加パルス(“A”)がいつ印加されたかを判定する。別の方式では、最初のメモリ素子が合格と検証された時点におけるパルスカウント値(PC1)を記録しておいてこれを、追加パルスの最大許容数(“A”)と合計して、APL=PC1+Aという式によって適応パルス限界値(APL)を得ることが可能である。このとき、パルスの総数を追跡する1つのカウンタを用いて、いつこのAPLの値に達したかを判定することが可能である。これらの値の関係のさらなる詳細については、図13および14と以下の関連の説明を参照のこと。
ステップ426では、適応パルス限界値(APL)を超えたかどうかチェックして判定する。この限界値を超えている場合、この例では、6個の追加パルスのすべてが既に印加されたが、すべての素子が合格と検証されていないことになる。この場合、このプログラミングプロセスは失敗であり、フェイル状態がステップ420で設定される。くわえて、フェイルした特定のメモリ素子に対してステップ422でエラーが宣言される。ステップ426で適応限界値を超えていない場合には、ステップ428ですべてのメモリ素子が目標閾値電圧レベルに達したと検証されたかどうかがチェックされる。すべての素子が到達したものと検証された場合には、プログラミングプロセスが適切に完了したことになり、ステップ430で“ステータス=パス”と示される。ステップ428ですべての素子が到達したと検証されない場合は、Vpgmを増加させて、追加のループがステップ410で開始される。したがって、上記のプロセスが、APLを超えたか、すべての素子が到達したものと検証されるか、FPLを超えたか、これらのうちいずれかが最初に発生するまで繰り返される。ここで、目標閾値電圧に達したメモリ素子は、実行中のプログラミングサイクルの残りの部分のプログラミングから除外されることに留意されたい。図11の全体のプロセスは、追加のブロック、ページまたはセクターのデータなどの追加のデータをプログラムする次の要求を受信したときに、繰り返すことが可能である。
図11のプロセスは、いくつかの方式で変更することが可能である。たとえば、データがプログラムされている、たとえば、ブロックやセグメントなどのプログラムされるメモリ部分が違えば、それぞれのメモリ部分に対して別個の固定された適応パルス限界値を維持するようにしてもよい。一般に、劣化速度が異なるさまざまなメモリ部分に対して、それぞれ別個の値を維持するようにしてもよい。
さらに、すべてのメモリ素子の所定の部分(例えば10%など)のように、いくつかのメモリ素子がいつ到達したと検証されたかを判定するようにステップ416を修正することが可能である。この場合、パルスカウント値の平均値や中間値などの統計的な基準値を、APLを得るための追加パルスの限界値“A”と合計されるPC1の値として用いることが可能である。このような値は、1つの最高速の素子を表す値ではなく、メモリデバイス中の複数の最高速のプログラミング素子を表す値である。複数のパルスカウント値を記録して処理する適切な制御回路が必要とされるため、複雑性が幾分か増すことになる。次に、同じプログラミングサイクルおよび/または1つ以上の後続のプログラミングサイクル中で、残りの素子に対してAPLが適用される。また、検証されたすべての素子のパルスカウント値を判定して値PCを導き出すことが可能であるが、この場合は、結果として得られるAPLを1つ以上の後続のプログラミングサイクルで適用することが可能である。くわえて、複数のプログラミングサイクルにわたって取得したPC1の移動平均値または中間値を用いて、1つ以上の後続のプログラミングサイクルで適用可能なAPLを導き出すことが可能である。用いられる基準値が、さらに、より新しい値PC1に対してより高い重みが付けられるように重み付けしてもよい。
さらに、APLを計算するそれぞれのタイミングにおいて、APLの変化の最大値に関するルールが課せられる。たとえば、APLを計算するそれぞれのタイミングにおいて、APLが1パルスカウントより大きい値では変化しないというルールが課せられる。APLの変動を平滑化することによって、性能に影響する唐突な変化を回避することが可能である。加えて、変則的な結果となることを回避するために、APLを下方向などの1方向だけで調整するというルールを課してもよい。
さらに、図11はAPLがプログラミングサイクル毎に計算されることを示しているが、新しいAPLを特定のプログラミングサイクルでのみ計算し、次に再度計算されるまで、この値を繰り越して後続のサイクルで適用することが可能である。特に、最初の素子を検証するのに必要なプログラミングパルスの数であるPC1と、これに対応するAPLとは、数百個または数千個のプログラミングサイクルが経過すると、時間の経過につれて徐々に減少傾向となると予測される。したがって、n個のプログラミングサイクルが経過するごとに(ここで、たとえば、n=50または100)、APLを計算すれば十分である。または、500個、1000個、1250個、1500個などのプログラミングサイクルの経過後など指定数のプログラミングサイクル経過後にAPLを計算してもよい。さらに、インクリメント値は固定値でも変動値でもよい。たとえば、実験的データまたは理論的データを用いて、メモリ素子をプログラムするために必要なプログラミングパルスの数の減少の分析結果を、プログラミングサイクル数を基準とした平均値で得るようにしてもよい。これにしたがって、APLを計算するタイミングが選択可能となり、このため、必要とされるプログラミングパルスの数がより急速に変化するものと予測される場合には、APLはより頻繁に計算される。
さまざまなメモリ素子のさまざまなプログラミング性能の特徴に対処するために用いられる最大追加パルス数“A”に関して言うと、この値は、“A”個の追加パルスが印加された後でも未検証のままである素子の数が過度な数値とならないように十分大きくすべきである。同時に、この値は、プログラミング時間全体とメモリ中で用いられるパルスの総数が過度なものとならないように十分小さくすべきである。1つの方式では、パルスが約6個という値を用いることが可能である。さらに、“A”は固定値でも変動値でもよい。たとえば、“A”は、1つ以上のメモリ素子をプログラムするのに必要なパルスの数であるPC1などのパラメータの関数として変動することが可能である。この場合、PC1が大きければ”A”には大きい値を用い、PC1が小さければ”A”には小さい値を用いる。さまざまな範囲のPC1をさまざまな値の“A”と関連付けたテーブルを実現するようにしてもよい。たとえば、PC1=1〜10に対して“A”=5;PC1=11〜15に対して“A”=6;PC1=16〜20に対して“A”=7;PC1=21〜24に対して“A”=8とする。または、“A”を、分数や、たとえば50%などのパーセンテージなど、PC1の1部として計算して、小数点を丸めて整数とするようにしてもよい。小数点を切り上げて整数としてもよい。たとえば、PC1=15に対して“A”=8とする。
別の方式では、“A”を、メモリが経験したプログラミングサイクルの数(N)によって決定したりするなど、メモリ素子の使用状況に基づいて設定することが可能である。たとえば、N=1〜1,000に対して“A”=8;N=1,001〜5,000に対して“A”=7;N=5,001〜10,000に対して“A”=6とする。“A”は、PC1とプログラミングサイクル数の双方に基づいて設定することも可能である。何れにしても、時間の経過と共にPC1および/またはプログラミングサイクル数が減少するに連れて、”A”が減少する。ここで、上述したように、保存される別のAPL値に対応して上位ページや下位ページからのデータを記憶するメモリ素子などのように、異なるメモリの部分に対して、個別の“A”値を保存するようにしてもよい。FPL、APLおよび“A”の値もまた、たとえば、フルシーケンスプログラミングに対するページモードプログラミング等のように、用いられるプログラミングのタイプに基づいて設定することも可能である。
図12は、時間に対する閾値電圧(VTH)と時間に対するビットライン電圧(VBL)を示すグラフである。図11(ステップ416)に関連して上述したように、プログラミングプロセスでは、メモリ素子が対応する目標閾値電圧レベルに達したかどうか検証される。ここで、検証レベルは、例えば、不揮発性記憶素子がプログラムされた最終電圧レベルや、この最終電圧レベルに到達する前の中間電圧レベルであったりする。
図12のプロセスは、粗/密プログラミングプロセスを表している。プログラム電圧Vpgmを、プログラムするメモリ素子の制御ゲートに印加する。プログラムパルス間で、検証動作を実行する。1つの実施形態では、第1の値である中間検証レベルVver1と第2の値である最終検証レベルVver2が定義される。上述したように、メモリ素子やメモリ素子のグループが異なれば、これら検証レベルも異なることがある。さらに、同じメモリ素子やメモリ素子のグループに対して2つより多い検証レベルを有することも可能である。プログラム中のメモリ素子の閾値電圧VTHがVver1未満であれば、ビットライン電圧が低レベル(たとえば0V)にとどまっているその素子に対して粗モードでのプログラミングが継続される。たとえば、タイミングt3において、VTHがVver1に達しているがVver2未満である場合には、中間ビットライン電圧(たとえば1V)を印加する。中間ビットライン電圧を印加した結果、チャネル電圧が大きくなり(たとえば1V)、このメモリ素子のプログラミングの速度が落ち、これにより、密プログラミングモードに移行する。これは、その後のプログラムパルス印加毎のVTHのシフト量が減少するからである。ビットラインは、たとえばタイミングt5でVTHが最終の目標検証レベルVver2に到達するまでは、多くのパルス間にわたって中間ビットライン電圧にとどまる。その後は、ビットライン電圧が上昇して、Vinhibitにまで(たとえば、Vddまで)、上がる等して、さらなるプログラミングが禁止される。
この方式によれば、1つの検証レベルを用いる場合と比較して、プログラム後の閾値電圧分布を狭くすることが可能となる。これは、閾値電圧が目標値に近づくと(たとえば、閾値電圧がVver1より大きくVver2未満である場合)、閾値電圧のパルス毎のシフト量が減少するからである。しかしながら、中間ビットラインバイアスにより、メモリ素子のプログラミング速度が落ち、これにより、プログラミング時間全体が増加する可能性がある。プログラミングプロセスを終了させるためには、複数個のパルス(たとえば、一般的には2〜3個のパルス)を追加する必要がある。
図13はフレッシュなメモリデバイスに印加されるプログラミングパルスを示し、図14は繰り返し使用されたメモリデバイスに印加されるプログラミングパルスを示している。上述したように、不揮発性メモリデバイスが多くのプログラミングサイクルを経過するに連れて、浮遊ゲートとチャネル領域間の絶縁体中に電荷が捕獲されるようになる。このように電荷が捕獲されるため、閾値電圧が高レベルとなり、これによって、メモリ素子がより高速でプログラム可能となり、素子が所望の電圧レベルに到達するために必要とされる電圧パルスの数が減少する。図13を図14と比較すると、繰り返し使用されたメモリの場合、最初の素子が検証されるまでにメモリに印加されるVpgmパルスの数(PC1)が少なくなることが分かる。さらに、図示する例では、追加のプログラミングパルスの最大許容数“A”は、フレッシュなメモリデバイスでも繰り返し使用されたメモリデバイスでも同じである。したがって、適応パルス限界値(APL)もまた、繰り返し使用されたデバイスの場合には減少する。
本発明に関する前述の詳細な説明は、例証と説明のために提示されたものである。発明の全てを網羅するものではなく、また、本発明を開示する形態そのものに限ることを意図するものではない。上記の教示に照らし合わせて、多くの修正例や変更例が可能である。説明した実施形態は、本発明とその実際の応用例の原理がもっともよく説明され、これによって、他の当業者が、想定される特定の用途に適しているさまざまな実施形態で、また、さまざまな修正をもって、本発明を利用することが可能となるように選ばれたものである。本発明の範囲は添付の特許請求の範囲によって定義されることを意図するものである。
図1は、フラッシュメモリデバイスの1つ以上の制御ゲートに印加されるプログラム電圧の一例を示す図である。 図2は、NANDストリングの上面図である。 図3は、図2のNANDストリングの等価回路図である。 図4は、図2のNANDストリングの断面図である。 図5は、不揮発性メモリシステムのブロック図である。 図6は、不揮発性メモリアレイのブロック図である。 図7は、消去状態からプログラム状態に直接にプログラムするマルチステートデバイスにおける閾値電圧分布の集合の一例を示す図である。 図8は、消去状態からプログラム状態にツーパスでプログラムするマルチステートデバイスにおける閾値電圧分布の集合の一例を示す図である。 図9Aは、さまざまな閾値電圧分布を示し、また、不揮発性メモリをプログラムするプロセスを説明する図である。 図9Bは、さまざまな閾値電圧分布を示し、また、不揮発性メモリをプログラムするプロセスを説明する図である。 図9Cは、さまざまな閾値電圧分布を示し、また、不揮発性メモリをプログラムするプロセスを説明する図である。 図10は、プログラミング性能を示すチャートである。 図11は、メモリ素子がエラーであると宣言される前にメモリ素子に印加されるプログラミングパルスの最大許容数を適切に調整しながら不揮発性記憶装置をプログラムするプロセスを説明するフローチャートである。 図12は、時間に対する閾値電圧(VTH)と時間に対するビットライン電圧(VBL)を示すグラフである。 図13は、フレッシュなメモリデバイスに印加されるプログラミングパルスを示す図である。 図14は、繰り返し使用されたメモリデバイスに印加されるプログラミングパルスを示す図である。

Claims (28)

  1. 不揮発性記憶装置をプログラムする方法であって、
    連続する電圧パルスを用いて、少なくとも第1の不揮発性記憶素子を第1検証レベルに到達するようにプログラムするステップと、
    前記少なくとも第1の不揮発性記憶素子が、いつ第1検証レベルに到達したかを検出するステップと、
    その検出に応答して、少なくとも第2の不揮発性記憶素子を第2検証レベルに到達するようにプログラムするときの追加電圧パルスの最大許容数を決定するステップ、
    を有していることを特徴とする方法。
  2. (a)前記少なくとも第1の不揮発性記憶素子を第1検証レベルに到達させるのに必要な電圧パルスの数と、(b)追加電圧パルスの最大許容数、との和に基づいて追加電圧パルスの最大許容数を決定することを特徴とする請求項1に記載の方法。
  3. 前記少なくとも第1の不揮発性記憶素子を第1検証レベルに到達させるのに必要な電圧パルスの数に基づいて、追加電圧パルスの最大許容数を変更可能であることを特徴とする請求項1に記載の方法。
  4. 追加電圧パルスの最大許容数が固定されていることを特徴とする請求項1に記載の方法。
  5. 追加電圧パルスの最大許容数が変更可能であることを特徴とする請求項1に記載の方法。
  6. 時間の経過にしたがって前記少なくとも第1の不揮発性記憶素子の使用状況を追跡するステップをさらに有し、
    その使用状況に基づいて、追加電圧パルスの最大許容数を変更可能であることを特徴とする請求項1に記載の方法。
  7. 前記使用状況を追跡するステップが、プログラミングサイクルのカウント値を維持するステップを有していることを特徴とする請求項6に記載の方法。
  8. 前記少なくとも第1の不揮発性記憶素子が、前記連続する電圧パルスによって第1検証レベルにプログラムされる複数の不揮発性記憶素子を有しており、
    前記複数の不揮発性記憶素子の各々を第1検証レベルに到達させるのに必要な電圧パルスの数を特定するステップと、
    前記複数の不揮発性記憶素子の各々を第1検証レベルに到達させるのに必要な電圧パルスの数に基づいて、前記少なくとも第2の不揮発性記憶素子を第2検証レベルに到達するようにプログラムするときの追加電圧パルスの最大許容数を決定するステップ、
    をさらに有していることを特徴とする請求項1に記載の方法。
  9. 少なくとも第2の不揮発性記憶素子を第2検証レベルに到達するようにプログラムするときの追加電圧パルスの最大許容数を、前記複数の不揮発性記憶素子の各々を第1検証レベルに到達させるのに必要な電圧パルスの数から導き出される統計的基準値に基づいて決定することを特徴とする請求項8に記載の方法。
  10. 前記少なくとも第1の不揮発性記憶素子と前記少なくとも第2の不揮発性記憶素子を共通のプログラミングサイクルでプログラムすることを特徴とする請求項1に記載の方法。
  11. 前記少なくとも第2の不揮発性記憶素子を、前記少なくとも第1の不揮発性記憶素子をプログラムするプログラミングサイクルの後のプログラミングサイクルでプログラムすることを特徴とする請求項1に記載の方法。
  12. 追加電圧パルスの最大許容数が、前記少なくとも第1の不揮発性記憶素子の閾値電圧分布を電圧パルスのステップサイズで除算した値に基づくことを特徴とする請求項1に記載の方法。
  13. 前記少なくとも第1の不揮発性記憶素子と前記少なくとも第2の不揮発性記憶素子が、共通のブロックと共通のセグメントのうちの少なくとも一方で提供されることを特徴とする請求項1に記載の方法。
  14. 前記少なくとも第1の不揮発性記憶素子と前記少なくとも第2の不揮発性記憶素子が、共通のページからのデータでプログラムされることを特徴とする請求項1に記載の方法。
  15. 第1検証レベルと第2検証レベルのうちの少なくとも一方が、最終電圧レベル前の中間電圧レベルであることを特徴とする請求項1に記載の方法。
  16. 第1検証レベルと第2検証レベルのうちの少なくとも一方が、最終電圧レベルであることを特徴とする請求項1に記載の方法。
  17. 不揮発性記憶システムであって、
    少なくとも第1の不揮発性記憶素子および少なくとも第2の不揮発性記憶素子と、
    前記少なくとも第1の不揮発性記憶素子および前記少なくとも第2の不揮発性記憶素子と通信する1つ以上の管理回路を備えており、
    その1つ以上の管理回路が、
    データをプログラムする要求を受信し、
    その要求に応答して、連続する電圧パルスを用いて、前記少なくとも第1の不揮発性記憶素子を第1検証レベルに到達するようにプログラムし、
    前記少なくとも第1の不揮発性記憶素子が、いつ第1検証レベルに到達したかを検出し、
    その検出に応答して、前記少なくとも第2の不揮発性記憶素子を第2検証レベルに到達するようにプログラムするときの追加電圧パルスの最大許容数を決定する、
    ことを特徴とする不揮発性記憶システム。
  18. 前記1つ以上の管理回路が、(a)前記少なくとも第1の不揮発性記憶素子を第1検証レベルに到達させるのに必要な電圧パルスの数と、(b)追加電圧パルスの最大許容数、との和に基づいて追加電圧パルスの最大許容数を決定することを特徴とする請求項17に記載の不揮発性記憶システム。
  19. 前記少なくとも第1の不揮発性記憶素子を第1検証レベルに到達させるのに必要な電圧パルスの数に基づいて、追加電圧パルスの最大許容数を変更可能であることを特徴とする請求項17に記載の不揮発性記憶システム。
  20. 追加電圧パルスの最大許容数が固定されていることを特徴とする請求項17に記載の不揮発性記憶システム。
  21. 追加電圧パルスの最大許容数が変更可能であることを特徴とする請求項17に記載の不揮発性記憶システム。
  22. 前記1つ以上の管理回路が、
    前記要求に応答して、連続する電圧パルスを用いて複数の不揮発性記憶素子を第1検証レベルに到達するようにプログラムし、
    前記複数の不揮発性記憶素子の各々を第1検証レベルに到達させるのに必要な電圧パルスの数を特定し、
    前記複数の不揮発性記憶素子の各々を第1検証レベルに到達させるのに必要な電圧パルスの数に基づいて、前記少なくとも第2の不揮発性記憶素子を第2検証レベルに到達するようにプログラミングするときの追加電圧パルスの最大許容数を決定する、
    ことを特徴とする請求項17に記載の不揮発性記憶システム。
  23. 前記少なくとも第1の不揮発性記憶素子と前記少なくとも第2の不揮発性記憶素子を共通のプログラミングサイクルでプログラムすることを特徴とする請求項17に記載の不揮発性記憶システム。
  24. 前記少なくとも第2の不揮発性記憶素子が、前記少なくとも第1の不揮発性記憶素子をプログラムするプログラミングサイクルの後のプログラミングサイクルでプログラムすることを特徴とする請求項17に記載の不揮発性記憶システム。
  25. 前記少なくとも第1の不揮発性記憶素子と前記少なくとも第2の不揮発性記憶素子が、共通のブロックと共通のセグメントのうちの少なくとも一方で提供されることを特徴とする請求項17に記載の不揮発性記憶システム。
  26. 前記少なくとも第1の不揮発性記憶素子と前記少なくとも第2の不揮発性記憶素子が、共通のページからのデータでプログラムされることを特徴とする請求項17に記載の不揮発性記憶システム。
  27. 第1検証レベルと第2検証レベルのうちの少なくとも一方が、最終電圧レベル前の中間電圧レベルであることを特徴とする請求項17に記載の不揮発性記憶システム。
  28. 第1検証レベルと第2検証レベルのうちの少なくとも一方が、最終電圧レベルであることを特徴とする請求項17に記載の不揮発性記憶システム。
JP2008525029A 2005-08-01 2006-07-26 不揮発性メモリを自己調整式の最大プログラムループでプログラムする方法 Expired - Fee Related JP4754631B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/194,827 2005-08-01
US11/194,439 US7230854B2 (en) 2005-08-01 2005-08-01 Method for programming non-volatile memory with self-adjusting maximum program loop
US11/194,439 2005-08-01
US11/194,827 US7023737B1 (en) 2005-08-01 2005-08-01 System for programming non-volatile memory with self-adjusting maximum program loop
PCT/US2006/029047 WO2007016167A1 (en) 2005-08-01 2006-07-26 Programming non-volatile memory with self-adjusting maximum program loop

Publications (2)

Publication Number Publication Date
JP2009503764A true JP2009503764A (ja) 2009-01-29
JP4754631B2 JP4754631B2 (ja) 2011-08-24

Family

ID=37189404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008525029A Expired - Fee Related JP4754631B2 (ja) 2005-08-01 2006-07-26 不揮発性メモリを自己調整式の最大プログラムループでプログラムする方法

Country Status (6)

Country Link
EP (1) EP1911033B1 (ja)
JP (1) JP4754631B2 (ja)
KR (1) KR101012129B1 (ja)
AT (1) ATE521972T1 (ja)
TW (1) TWI313461B (ja)
WO (1) WO2007016167A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011524062A (ja) * 2008-06-12 2011-08-25 サンディスク コーポレイション インデックスプログラミングおよび削減されたベリファイを有する不揮発性メモリおよび方法

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7894269B2 (en) 2006-07-20 2011-02-22 Sandisk Corporation Nonvolatile memory and method for compensating during programming for perturbing charges of neighboring cells
US7652929B2 (en) * 2007-09-17 2010-01-26 Sandisk Corporation Non-volatile memory and method for biasing adjacent word line for verify during programming
US8416609B2 (en) 2010-02-15 2013-04-09 Micron Technology, Inc. Cross-point memory cells, non-volatile memory arrays, methods of reading a memory cell, methods of programming a memory cell, methods of writing to and reading from a memory cell, and computer systems
US8514630B2 (en) 2010-07-09 2013-08-20 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays: current based approach
US8379454B2 (en) * 2011-05-05 2013-02-19 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US8750042B2 (en) 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US8730722B2 (en) 2012-03-02 2014-05-20 Sandisk Technologies Inc. Saving of data in cases of word-line to word-line short in memory arrays
US8842477B2 (en) * 2012-06-01 2014-09-23 Spansion Llc Method, apparatus, and manufacture for flash memory adaptive algorithm
CN103631529A (zh) * 2012-08-21 2014-03-12 群联电子股份有限公司 数据写入方法、存储器控制器与存储器存储装置
US9082510B2 (en) * 2012-09-14 2015-07-14 Freescale Semiconductor, Inc. Non-volatile memory (NVM) with adaptive write operations
KR102118979B1 (ko) 2013-09-13 2020-06-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US9165683B2 (en) 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
US9484086B2 (en) 2014-07-10 2016-11-01 Sandisk Technologies Llc Determination of word line to local source line shorts
US9460809B2 (en) 2014-07-10 2016-10-04 Sandisk Technologies Llc AC stress mode to screen out word line to word line shorts
US9514835B2 (en) 2014-07-10 2016-12-06 Sandisk Technologies Llc Determination of word line to word line shorts between adjacent blocks
US9443612B2 (en) 2014-07-10 2016-09-13 Sandisk Technologies Llc Determination of bit line to low voltage signal shorts
US9202593B1 (en) 2014-09-02 2015-12-01 Sandisk Technologies Inc. Techniques for detecting broken word lines in non-volatile memories
US9240249B1 (en) 2014-09-02 2016-01-19 Sandisk Technologies Inc. AC stress methods to screen out bit line defects
US9449694B2 (en) 2014-09-04 2016-09-20 Sandisk Technologies Llc Non-volatile memory with multi-word line select for defect detection operations
US9659666B2 (en) 2015-08-31 2017-05-23 Sandisk Technologies Llc Dynamic memory recovery at the sub-block level

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628899A (ja) * 1992-03-27 1994-02-04 Toshiba Corp 不揮発性半導体記憶装置
JPH07182899A (ja) * 1993-12-22 1995-07-21 Nec Corp 半導体記憶装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000843A (en) * 1992-07-03 1999-12-14 Nippon Steel Corporation Electrically alterable nonvolatile semiconductor memory
JP4129170B2 (ja) * 2002-12-05 2008-08-06 シャープ株式会社 半導体記憶装置及びメモリセルの記憶データ補正方法
US7073103B2 (en) * 2002-12-05 2006-07-04 Sandisk Corporation Smart verify for multi-state memories
US7177199B2 (en) * 2003-10-20 2007-02-13 Sandisk Corporation Behavior based programming of non-volatile memory
US6888758B1 (en) * 2004-01-21 2005-05-03 Sandisk Corporation Programming non-volatile memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628899A (ja) * 1992-03-27 1994-02-04 Toshiba Corp 不揮発性半導体記憶装置
JPH07182899A (ja) * 1993-12-22 1995-07-21 Nec Corp 半導体記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011524062A (ja) * 2008-06-12 2011-08-25 サンディスク コーポレイション インデックスプログラミングおよび削減されたベリファイを有する不揮発性メモリおよび方法

Also Published As

Publication number Publication date
EP1911033B1 (en) 2011-08-24
JP4754631B2 (ja) 2011-08-24
KR101012129B1 (ko) 2011-02-07
EP1911033A1 (en) 2008-04-16
TW200805375A (en) 2008-01-16
TWI313461B (en) 2009-08-11
KR20080058330A (ko) 2008-06-25
ATE521972T1 (de) 2011-09-15
WO2007016167A1 (en) 2007-02-08

Similar Documents

Publication Publication Date Title
JP4754631B2 (ja) 不揮発性メモリを自己調整式の最大プログラムループでプログラムする方法
JP4931915B2 (ja) 不揮発性メモリを繰返すに連れてプログラム電圧のシフトを開始する方法
KR101600551B1 (ko) 고해상도의 가변 초기 프로그램 펄스를 이용한 비휘발성 메모리의 프로그램
JP5250117B2 (ja) メモリのための適応消去及びソフトプログラミング
US7023737B1 (en) System for programming non-volatile memory with self-adjusting maximum program loop
US20070025157A1 (en) Method for programming non-volatile memory with self-adjusting maximum program loop
JP4994447B2 (ja) 閾値電圧の分布が緊密化するように不揮発性メモリを非リアルタイムで再プログラミングする方法
KR101314306B1 (ko) 스마트 검증을 이용한 다중 상태 비휘발성 메모리프로그래밍 방법
EP1678722A1 (en) Programming method based on the behavior of non-volatile memory cells
JP4938020B2 (ja) タイミング情報による逆結合効果
EP1971984B1 (en) Continued verification in non-volatile memory write operations
JP4726958B2 (ja) プログラム外乱を低減させたnandタイプの不揮発性メモリをプログラムするラスト―ファーストモードと方法
JP4723000B2 (ja) ビット線結合を生じる不揮発性メモリを制御してプログラムする方法
EP2256748B1 (en) Reducing read disturb for non-volatile storage
JP4820879B2 (ja) 非選択ワード線を効果的に制御して不揮発性メモリを読み出す方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110517

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110525

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140603

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140603

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees