(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022040515
(43)【公開日】2022-03-11
(54)【発明の名称】フラッシュメモリおよびプログラミング方法
(51)【国際特許分類】
G11C 16/10 20060101AFI20220304BHJP
G11C 16/04 20060101ALI20220304BHJP
G11C 16/34 20060101ALI20220304BHJP
【FI】
G11C16/10 140
G11C16/04 170
G11C16/34 166
【審査請求】有
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2020145274
(22)【出願日】2020-08-31
(71)【出願人】
【識別番号】511062254
【氏名又は名称】ウィンボンド エレクトロニクス コーポレーション
(74)【代理人】
【識別番号】100098497
【弁理士】
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】矢野 勝
(72)【発明者】
【氏名】竹下 利章
【テーマコード(参考)】
5B225
【Fターム(参考)】
5B225BA02
5B225CA27
5B225DB02
5B225DB08
5B225DB22
5B225DB30
5B225DB32
5B225DD08
5B225EA05
5B225FA01
5B225FA02
(57)【要約】
【課題】 改善されたISPPによりメモリセルのプログラムを行う半導体記憶装置を提供する。
【解決手段】 本発明のNAND型フラッシュメモリのプログラム方法は、メモリセルアレイのページを選択し、選択したページにISPPによるプログラムパルスを印加するステップを含む。ISPPにより印加されるプログラムパルスは、少なくとも最初のプログラムパルスによってプログラムベリファイが不合格となる犠牲的なプログラムパルスと、他のプログラムパルスのいずれの増加分よりも大きい増加分を持つ最後のプログラムパルスとを含む。
【選択図】
図5
【特許請求の範囲】
【請求項1】
NAND型メモリセルアレイと、
前記メモリセルアレイの選択されたページをプログラムするため、ISPPによるプログラムパルスを印加するプログラム手段とを有し、
前記プログラム手段により印加されるプログラムパルスは、少なくとも最初のプログラムパルスによってプログラムベリファイが不合格となるような犠牲的なプログラムパルスを含む、半導体記憶装置。
【請求項2】
前記犠牲的なプログラムパルスは、複数のプログラムパルスを含む、請求項1に記載の半導体記憶装置。
【請求項3】
前記犠牲的なプログラムパルスは、プログラム/消去のサイクルが一定数に到達したメモリセルが最初のプログラムパルスでプログラムベリファイ合格するときのプログラムパルスよりも低い電圧である、請求項1または2に記載の半導体記憶装置。
【請求項4】
前記犠牲的なプログラムパルスが複数のプログラムパルスであるとき、前記犠牲的なプログラムパルス間の第1のステップ電圧は、他のプログラムパルス間の第2のステップ電圧よりも小さい、請求項1ないし3いずれか1つに記載の半導体記憶装置。
【請求項5】
前記プログラム手段により印加される最後のプログラムパルスとその前のプログラムパルスとの間の第3のステップ電圧は、前記第1および第2のステップ電圧よりも大きい、請求項4に記載の半導体記憶装置。
【請求項6】
前記プログラム手段は、プログラムの回数または消去の回数をカウントするカウント手段を含み、前記プログラム手段は、前記カウント手段によりカウントされた回数に基づき前記犠牲的なプログラムパルスの少なくとも初期電圧を変更する、請求項1に記載の半導体記憶装置。
【請求項7】
前記プログラム手段は、前記犠牲的なプログラムパルスによって選択ページの一定数以上のメモリセルが合格したか否かを判定し、合格した場合には、次のプログラム動作時に印加する犠牲的なプログラムパルスの少なくとも初期電圧を下げる、請求項1に記載の半導体記憶装置。
【請求項8】
NAND型フラッシュメモリのプログラム方法であって、
メモリセルアレイの選択されたページをプログラムするため、ISPPによるプログラムパルスを印加するステップを含み、
印加されるプログラムパルスは、少なくとも最初のプログラムパルスによってプログラムベリファイが不合格となる犠牲的なプログラムパルスを含む、プログラム方法。
【請求項9】
前記犠牲的なプログラムパルスは、複数のプログラムパルスである、請求項8に記載のプログラム方法。
【請求項10】
前記犠牲的なプログラムパルスは、プログラム/消去のサイクルが一定数に到達したメモリセルが最初のプログラムパルスでプログラムベリファイ合格するときのプログラムパルスよりも低い電圧である、請求項8または9に記載のプログラム方法。
【請求項11】
前記犠牲的なプログラムパルスが複数のプログラムパルスであるとき、前記犠牲的なプログラムパルス間の第1のステップ電圧は、他のプログラムパルス間の第2のステップ電圧よりも小さい、請求項8ないし10いずれか1つに記載のプログラム方法。
【請求項12】
印加される最後のプログラムパルスとその前のプログラムパルスとの間の第3のステップ電圧は、前記第1および第2のステップ電圧よりも大きい、請求項11に記載のプログラム方法。
【請求項13】
プログラム方法はさらに、プログラムの回数または消去の回数をカウントするステップを含み、前記プログラムパルスを印加するステップは、前記カウントされた回数に基づき前記犠牲的なプログラムパルスの少なくとも初期電圧を変更する、請求項8に記載のプログラム方法。
【請求項14】
プログラム方法はさらに、前記犠牲的なプログラムパルスによって選択ページの一定数以上のメモリセルが合格したか否かを判定するステップを含み、合格したと判定された場合には、前記プログラムパルスを印加するステップは、次のプログラム動作時に印加する犠牲的なプログラムパルスの少なくとも初期電圧を下げる、請求項8に記載のプログラム方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NAND型フラッシュメモリに関し、特に、プログラム方法に関する。
【背景技術】
【0002】
NAND型フラッシュメモリにおいて、プログラムは、フローティングゲートに電子を蓄積させ、メモリセルのしきい値電圧を正方向にシフトさせ、消去は、フローティングゲートから電子を放出させ、メモリセルのしきい値電圧を負方向にシフトさせる。このようなプログラムおよび消去は、メモリセルのしきい値が「0」、「1」の分布幅内に入るように制御されなければならない。また、メモリセルに多ビットを記憶させる場合には、さらにしきい値が「00」、「01」、「10」、「11」の分布幅に入るように制御しなければならない。
【0003】
メモリセルのしきい値分布を制御するため、メモリセルのプログラムは、ISPP(Incremental Step Pulse Program)方式を用いている。ISPPは、
図1に示すように、選択ページにプログラムパルスVpgm0を印加し、このプログラムベリファイで不合格と判定されたメモリセルに、プログラムパルスVpgm0よりも1ステップ電圧だけ高いプログラムパルスVpgm1を印加し、このプログラムベリファイで不合格と判定されたメモリセルに、プログラムパルスVpgm1よりも1ステップ電圧だけ高いプログラムパルスVpgm2を印加する。プログラムパルスを漸次増加させ、ステップ電圧に応じたメモリセルのしきい値を変化させることで、しきい値分布幅の狭帯化を図っている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
フラッシュメモリでは、プログラム/消去のサイクル数が増加すると、Gm(トランスコンダクタンス)の劣化が顕著になり、メモリセルに電流が流れ難くなる。言い換えれば、プログラム/消去のサイクル数が増加するにつれ、メモリセルのしきい値が上昇する。メモリセルをプログラムすることは、メモリセルのしきい値を上昇させることであり、サイクル数の増加によってメモリセルのプログラムが容易になる、つまりメモリセルのプログラム速度が速くなる、あるいはプログラムする能力が加速することを意味する。
【0006】
図2は、プログラム/消去のサイクル特性を示すグラフであり、縦軸は、メモリセルのしきい値、横軸は、プログラム/消去のサイクル数である。上の折れ線は、プログラム状態のメモリセルのしきい値、下の折れ線は、消去状態のメモリセルのしきい値である。ここには、世代の異なる4つの製品についてのサイクル特性が示されている。プログラム/消去のサイクル特性は、例えば、一定電圧を有するプログラムパルスと一定電圧を有する消去パルスとを繰り返し印加することによって得られる。同図に示すように、サイクル回数が1K付近までは、プログラム状態または消去状態のメモリセルのしきい値はほとんど変化しないが、1Kを越えるあたりから、徐々にしきい値が正の方向にシフトしていることがわかる。これは、プログラム/消去のサイクル数が増加するにつれ、ゲート酸化膜に電子がトラップされたり、電子のトンネリングによりゲート酸化膜そのものが劣化することが原因の一つと推測されている。
【0007】
サイクル数が100K近傍になると、プログラム状態のメモリセルのしきい値は、フレッシュなときのしきい値よりも大幅に上昇し、プログラム速度あるいはプログラム能力が加速される。もし、プログラムベリファイ電圧が同一ならば、サイクル数が100Kのメモリセルは、より低いプログラム電圧でプログラムベリファイが合格されることになる。
【0008】
図3に、従来のISPPによるプログラムパルスの一例を示す。ここでのプログラムパルスは、均一なステップ電圧(ΔV=0.6V)であり、初期電圧が14.0Vである。ステップ電圧は、メモリセルのしきい値のシフト量を規定し、ステップ電圧を均一にすることで、メモリセルのしきい値のシフト量を制御し、しきい値分布の狭帯化を図っている。例えば、サイクル数が1K未満またはフレッシュなメモリセルは、プログラム電圧が15.2Vでプログラムベリファイが合格するが、サイクル数が100K近傍のメモリセルは、プログラム電圧が14.0Vでプログラムベリファイが合格する。
【0009】
ISPPによるプログラムは、理想的には、メモリセルのしきい値変化がプログラムパルスの複数回の印加によって制御されることであるが、上記のように、サイクル数の増加によりプログラム速度が加速されたメモリセルは、1回のプログラムパルスでベリファイが合格してしまう。これは、プログラム速度が速いメモリセルにとってプログラム電圧が大きすぎ、しきい値のシフト量が大きくなりすぎ、ISPPにより制御されていないことを意味する。換言すれば、このようなメモリセルのしきい値は、しきい値分布から外れ易くなる。また、プログラム速度が速いメモリセルは、大きなプログラムストレスを受けるため、劣化がさらに進み、プログラム速度がさらに加速されてしまう。その結果、エンデュランス特性(データの書き換え可能な回数)を低下させてしまうことにもなる。
【0010】
本発明は、このような従来の課題を解決し、改善されたISPPによりプログラムを行う半導体記憶装置を提供することを目的とする。
さらに本発明は、プログラム状態のメモリセルのしきい値分布の狭帯化を図ることができる半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る半導体記憶装置は、NAND型メモリセルアレイと、前記メモリセルアレイの選択されたページをプログラムするため、ISPPによるプログラムパルスを印加するプログラム手段とを有し、前記プログラム手段により印加されるプログラムパルスは、少なくとも最初のプログラムパルスによってプログラムベリファイが不合格となる犠牲的なプログラムパルスを含む。
【0012】
ある実施態様では、前記犠牲的なプログラムパルスは、複数のプログラムパルスである。ある実施態様では、前記犠牲的なプログラムパルスは、プログラム/消去のサイクルが一定数に到達したメモリセルが最初のプログラムパルスでプログラムベリファイ合格するときのプログラムパルスよりも低い電圧である。ある実施態様では、前記犠牲的なプログラムパルスが複数のプログラムパルスであるとき、前記犠牲的なプログラムパルス間の第1のステップ電圧は、他のプログラムパルス間の第2のステップ電圧よりも小さい。ある実施態様では、前記プログラム手段により印加される最後のプログラムパルスとその前のプログラムパルスとの間の第3のステップ電圧は、前記第1および第2のステップ電圧よりも大きい。ある実施態様では、前記プログラム手段は、プログラムの回数または消去の回数をカウントするカウント手段を含み、前記プログラム手段は、前記カウント手段によりカウントされた回数に基づき前記犠牲的なプログラムパルスの少なくとも初期電圧を変更する。ある実施態様では、前記プログラム手段は、前記犠牲的なプログラムパルスによって選択ページの一定数以上のメモリセルが合格したか否かを判定し、合格した場合には、次のプログラム動作時に印加する犠牲的なプログラムパルスの少なくとも初期電圧を下げる。
【0013】
本発明に係るNAND型フラッシュメモリのプログラム方法は、メモリセルアレイの選択されたページをプログラムするため、ISPPによるプログラムパルスを印加するステップを含み、印加されるプログラムパルスは、少なくとも最初のプログラムパルスによってプログラムベリファイが不合格となる犠牲的なプログラムパルスを含む。
【0014】
ある実施態様では、前記犠牲的なプログラムパルスは、複数のプログラムパルスである。ある実施態様では、前記犠牲的なプログラムパルスは、プログラム/消去のサイクルが一定数に到達したメモリセルが最初のプログラムパルスでプログラムベリファイ合格するときのプログラムパルスよりも低い電圧である。ある実施態様では、前記犠牲的なプログラムパルスが複数のプログラムパルスであるとき、前記犠牲的なプログラムパルス間の第1のステップ電圧は、他のプログラムパルス間の第2のステップ電圧よりも小さい。ある実施態様では、印加される最後のプログラムパルスとその前のプログラムパルスとの間の第3のステップ電圧は、前記第1および第2のステップ電圧よりも大きい。ある実施態様では、プログラム方法はさらに、プログラムの回数または消去の回数をカウントするステップを含み、前記プログラムパルスを印加するステップは、前記カウントされた回数に基づき前記犠牲的なプログラムパルスの少なくとも初期電圧を変更する。ある実施態様では、プログラム方法はさらに、前記犠牲的なプログラムパルスによって選択ページの一定数以上のメモリセルが合格したか否かを判定するステップを含み、合格したと判定された場合には、前記プログラムパルスを印加するステップは、次のプログラム動作時に印加する犠牲的なプログラムパルスの少なくとも初期電圧を下げる。
【発明の効果】
【0015】
本発明によれば、少なくとも最初のプログラムパルスによってプログラムベリファイが不合格となるような犠牲的なプログラムパルスを印加するようにしたので、プログラム/消去のサイクル数の増加によりプログラム速度が速いメモリセルであっても、しきい値のシフト量を一定以下に制御し、これにより、プログラム状態のメモリセルのしきい値の狭帯化を図ることができる。また、プログラム速度の速いメモリセルの劣化を抑制し、メモリセルのエンデュランス特性を改善することができる。
【図面の簡単な説明】
【0016】
【
図1】従来のフラッシュメモリのISPPによるプログラムを説明する図である。
【
図2】プログラム/消去サイクルとしきい値変化の関係を示すグラフである。
【
図3】従来のISPPによるプログラムパルス電圧の具体例を示す図である。
【
図4】本発明の実施例に係るNAND型フラッシュメモリの構成を示すブロック図である。
【
図5】本発明の実施例に係るISPPによるプログラムパルス電圧の例示である。
【
図6】本発明の実施例に係るプログラム動作のシーケンスを説明するフローチャートである。
【
図7】本発明の第2の実施例に係るNAND型フラッシュメモリの構成を示すブロック図である。
【
図8】本発明の第2の実施例のプログラム方法を説明するフローチャートである。
【発明を実施するための形態】
【0017】
次に、本発明に係る半導体記憶装置は、例えば、NAND型フラッシュメモリやそのようなNAND型フラッシュメモリを含む半導体デバイスである。
【実施例0018】
次に、本発明の実施例について図面を参照して詳細に説明する。
図4は、本発明の実施例に係るNAND型フラッシュメモリの構成を示すブロック図である。同図に示すように、本実施例のフラッシュメモリ100は、複数のメモリセルが形成されたメモリセルアレイ110と、外部入出力端子I/Oに接続された入出力バッファ120と、入出力バッファ120からアドレスデータを受け取るアドレスレジスタ130と、入出力バッファ120からコマンドデータ等を受け取り、各部を制御するコントローラ140と、アドレスレジスタ130から行アドレス情報Axを受け取り、行アドレス情報Axのデコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路150と、ワード線選択回路150によって選択されたページの読出しデータを保持したり、選択されたページにプログラムすべきプログラムデータを保持するページバッファ/センス回路160と、アドレスレジスタ130から列アドレス情報Ayを受け取り、列アドレス情報Ayのデコード結果に基づきページバッファ/センス回路160内の列等を選択する列選択回路170と、読出し、プログラムおよび消去等のために必要な種々の電圧(プログラム電圧Vpgm、読出し電圧Vread、消去電圧Vers、パス電圧Vpassなど)を生成する内部電圧発生回路180とを含んで構成される。
【0019】
メモリアレイ110は、m個のブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有し、1つのブロックには、複数のNANDストリングが形成される。1つのNANDストリングは、直列に接続された複数のメモリセルと、ビット線側選択トランジスタと、ソース線側選択トランジスタとを含む。NANDストリングは、基板表面に形成される2次元構造であってもよいし、基板表面から垂直方向に形成される3次元構造であってもよい。また、メモリセルは、2値データを記憶するものであっても良いし、多値データを記憶するものであってもよい。
【0020】
コントローラ140は、ROM/RAMを含むマイクロコントローラあるいはステートマシンによって構成される。ある実施態様では、コントローラ140は、ROMに格納されたプログラムを実行することで、読出し動作、プログラム動作、消去動作等を制御する。
【0021】
読出し動作では、ビット線に正の電圧を印加し、選択ワード線に例えば0Vを印加し、非選択ワード線にパス電圧を印加し、ビット線側選択トランジスタおよびソース線側選択トランジスタをオンし、共通ソース線に0Vを印加する。
【0022】
プログラム動作では、選択ワード線に高電圧のプログラム電圧Vpgmを印加し、非選択のワード線に中間電位を印加し、ビット線側選択トランジスタをオンさせ、ソース線側選択トランジスタをオフさせ、「0」または「1」のデータに応じた電圧をビット線に供給する。プログラム動作では、プログラムパルスを印加した後、プログラムベリファイで不合格となったメモリセルには、前回よりも高いステップ電圧のプログラムパルスを印加する、いわゆるISPP方式を用いる。
【0023】
消去動作では、ブロックを選択し、選択したブロック内の選択されたワード線に0Vを印加し、Pウエルに高電圧を印加し、ブロック単位でデータを消去する。
【0024】
次に、本実施例のプログラム動作について説明する。本実施例によるISPPは、均一なステップ電圧によりプログラム電圧を線形に増加させるのではなく、プログラム/消去のサイクル数によるしきい値の増加量あるいはプログラム能力の加速を考慮し、プログラムパルスの初期電圧およびステップ電圧を改善したプログラムパルスを印加する。
【0025】
メモリセルの中には、製造上のバラツキ等の要因により、相対的にプログラム速度が速いメモリセル(しきい値のシフト量が大きいメモリセル)、プログラム速度が遅いメモリセル(しきい値のシフト量が小さいメモリセル)が存在する。従来のISPPは、プログラム/消去のサイクル数が少ないかフレッシュな状態を基準にプログラムパルスの初期電圧値およびステップ電圧を設定し、プログラム速度が速いメモリセルやプログラム速度が遅いメモリセルであっても、ISPPによるしきい値制御ができるように、プログラム電圧を段階的に線形に増加させている。しかしながら、プログラム/消去のサイクル数が増加すると、プログラム速度が速いメモリセルは、さらにプログラム速度が加速され、その結果、1回のプログラムパルスでベリファイが合格してしまう。これは、ISPPによるしきい値制御から逸脱するものであり、大きなしきい値分布を生成することになる。
【0026】
本実施例は、上記のようなプログラム速度が速いメモリセルのISPPによるしきい値制御を可能にするため、1つまたは複数の犠牲的なプログラムパルスをメモリセルに印加する。犠牲的なプログラムパルスは、プログラム速度が速いメモリセルのしきい値を僅かにシフトさせるような初期電圧およびステップ電圧を有する。言い換えれば、プログラム速度が速いメモリセルが少なくとも1回のプログラムパルスの印加でベリファイが合格しないような初期電圧およびステップ電圧である。他方、そのような犠牲的なプログラムパルスを含めることで、最終的にプログラムパルスが到達する電圧レベルが小さくなり過ぎると、本来であればベリファイで合格すべきプログラム速度が遅いメモリセルが不合格になるおそれがある。このため、少なくとも最後に印加するプログラムパルスのステップ電圧を大きくし、プログラム速度が遅いメモリセルがベリファイで不合格になるのを抑制する。
【0027】
図5は、本実施例によるISPPのプログラムパルスの一例を示している。ここでは、6回のプログラムパルスでベリファイが合格することを前提している。同図において、P_FASTは、プログラム速度が速いメモリセルにとってベリファイが合格しないような初期電圧およびステップ電圧を含む犠牲的なプログラムパルスである。P_SLOWは、プログラム速度が遅いメモリセルにとってベリファイが合格するようなステップ電圧を有するプログラムパルスである。P_NORMALは、プログラム速度が標準的なメモリセルにとってベリファイが合格するようなステップ電圧を有するプログラムパルスである。
【0028】
従来の
図3に示すISPPでは、プログラム/消去のサイクル数が100K近傍に到達したとき、プログラム速度が速いメモリセルは、例えば、最初の14.0Vでベリファイが合格する。これに対処するため、
図5に示すISPPでは、プログラムパルスP_FASTの初期電圧を13.0V、ステップ電圧を0.5Vに設定する。この初期電圧およびステップ電圧は、
図3に示すプログラムパルスの初期電圧およびステップ電圧よりも小さい。その結果、プログラム速度が速いメモリセルは、最初のプログラムパルスでベリファイが合格せず、おそらく3つ目の14.0Vのプログラムパルスを印加したときにベリファイが合格するはずである。
【0029】
プログラム速度が標準的なメモリセルは、プログラムパルスP_FASTよりも高いプログラム電圧およびステップ電圧を有するプログラムパルスP_NORMALが印加されたときにベリファイが合格するはずである。
【0030】
プログラムパルスP_SLOWのステップ電圧は2.0Vであり、最後に大きなプログラム電圧が印加されるように設定される。その結果、プログラム速度が遅いメモリセルは、プログラムパルスP_SLOWを印加されたときにベリファイが合格するはずである。プログラムパルスP_SLOWは、プログラムパルスP_NORMALよりもステップ電圧が2Vも大きく、かつ、プログラム電圧(18V)も
図3に示すプログラム電圧(17V)よりも大きい。このようなプログラムパルスP_SLOWを印加することで、プログラム速度が遅いメモリセルには大きなプログラムストレスが印加され、プログラムが加速される。
【0031】
このように本実施例のISPPによるプログラムパルスは、初期電圧およびステップ電圧が低く緩やかに増加するプログラムパルスP_FASTから始まり、次に、ステップ電圧を幾分大きくしたプログラムパルスP_NORMALとなり、最後に、ステップ電圧を非常に大きくしたプログラムパルスP_SLOWとなる。本実施例のプログラムパルスの初期電圧やステップ電圧の設定は、実際にデバイスのサイクルテストを実施し、そのサイクルテストの結果から得られたプログラム/消去のサイクル数としきい値との関係(例えば、
図2に示すグラフ)に基づき決定することができる。
【0032】
また、NAND型フラッシュメモリは、通常、動作電圧や動作タイミング等のパラメータを設定するための設定情報をフューズメモリに格納している。パワーオン動作時、フューズメモリから読み出した設定情報がコンフィギュレーションレジスタ等にロードされ、コントローラ140は、コンフィギュレーションレジスタにセットされた設定情報に基づきISPPの初期電圧やステップ電圧を設定する。フューズメモリは、例えば、メモリセルアレイ110のユーザーによって使用されない領域に設けられる。
【0033】
図6は、本実施例のプログラム動作を示すフローチャートである。コントローラ140は、外部からプログラムコマンド、アドレスおよびプログラムすべきデータを入出力バッファ120を介して受け取ると(S100)、プログラムシーケンスを開始する。選択ページのワード線には、ワード線選択回路150によりプログラムパルスが印加され、ビット線には、ページバッファ/センス回路160によりプログラムすべきデータに応じた電圧が設定され、選択ページにプログラムパルスが印加される(S110)。次に、選択ページにプログラムパルスが印加されると、プログラムベリファイが行われる(S120)。選択ページの全てのメモリセルのプログラムが合格した場合には(S130)、プログラムが終了される。
【0034】
一方、プログラムが不合格のメモリセルがある場合には(S130)、プログラムパルスの印加回数がNMAXに到達したか否かが判定される(S140)。ここで、NMAXとは、プログラムに許容される最大時間またはプログラムに許容される最大のプログラムパルスの印加回数を意味する。通常、プログラムディスターブの観点から、同一ページに連続してプログラムすることが許される回数(NOP(Number of Program))には制限がある。
【0035】
プログラムパルスの印加回数がNMAXに到達した場合には、プログラム失敗のステータスが外部のホスト装置に通知されるとともに、当該ブロックがバッドブロックとして管理される。NMAXに到達していなければ、ISPPに従いプログラムパルスがインクリメントされ、すなわち前回のプログラムパルスよりもΔVだけ大きなステップ電圧を有するプログラムパルスが内部電圧発生回路180によって生成され(S150)、このプログラムパルスが選択ページに印加される(S110)。既にベリファイが合格しているメモリセルのビット線にはプログラム禁止電圧が印加される。
【0036】
次に、本発明の第2の実施例について説明する。上記実施例では、プログラム/消去のサイクル数の増加によるしきい値のシフト量あるいはプログラム速度の加速を考慮してISPPのプログラムパルスを予め設定するようにしたが、第2の実施例は、プログラム/消去のサイクル数に応じて動的にISPPのプログラムパルスを変更する。
【0037】
第2の実施例では、フラッシュメモリ100Aは、
図7に示すように、プログラム/消去のサイクル数をカウントするカウンタ190を備える。コントローラ140は、プログラム動作および消去動作を実施するたびに、カウンタ190を1つインクリメントする。あるいは、カウンタ190がプログラム用のカウンタと消去用のカウンタとを備えている場合には、コントローラ140は、プログラム動作を行うときにプログラム用のカウンタを1つインクリメントし、消去動作を行うときに消去用のカウンタを1つインクリメントする。そして、コントローラ140は、カウンタ190のカウント値が予め決められた数に到達したとき、プログラム/消去のサイクル数に応じたISPPのプログラムパルスに設定を変更する。
【0038】
図8は、本実施例のプログラム動作示すフローチャートである。プログラム/消去のサイクル数がカウンタ190によってカウントされ(S200)、コントローラ140は、カウント値が一定数に到達したことを検出すると(S210)、コンフィギュレーションレジスタにセットされている設定情報を書換え(S220)、プログラムパルスの初期電圧、ステップ電圧の変更を行う(S230)。例えば、プログラム/消去のサイクル数が一定数未満のとき、ISPPによるプログラムパルスは、
図3に示すようにステップ電圧が均一であり、初期電圧が14.0V、最終の電圧が17.0Vに設定される。プログラム/サイクル数が一定数に到達すると、ISPPによるプログラムパルスは、
図5に示すように、プログラム速度が速いメモリセルがベリファイで合格しないような初期電圧およびステップ電圧を有するプログラムパルスP_FAST、プログラム速度が標準的なメモリセルがベリファイで合格するようなプログラムパルスP_NORMAL、プログラム速度が遅いメモリセルがベリファイで合格するような大きなステップ電圧を有するプログラムパルスP_SLOWに変更される。
【0039】
上記した第2の実施例では、ISPPによるプログラムパルスの設定を動的に2段階で変更する例を示したが、これに限らず、プログラム/消去のサイクル数を多段階(例えば、3段階や4段階)でモニターし、多段階のサイクル数にそれぞれ到達したときにプログラムパルスの設定を変更するようにしてもよい。さらにプログラム/消去のサイクル数をブロック単位でカウントするようにし、ブロック単位でISPPによるプログラムパルスの設定を変更するようにしてもよい。ブロック間でサイクル数にバラツキがある場合には、ブロック毎にISPPによるプログラムパルスの設定を変更することは有効である。
【0040】
次に、本発明の第3の実施例について説明する。第3の実施例は、第1の実施例や第2の実施例で設定されたISPPによるP_FASTの初期電圧を最適化することに関する。第3の実施例では、プログラムベリファイにおいて、プログラムパルスP_FASTの範囲である犠牲的なプログラムパルスによって選択ページの全てのデータが合格したか否かを判定し、全てのデータ(メモリセル)が合格した場合には、レジスタにフラグをセットする。犠牲的なプログラムパルスによって全てのデータが合格するということは、プログラムパルスP_FASTの初期電圧が高すぎ、犠牲的なプログラムパルスが機能していないことを意味する。
【0041】
プログラム動作の開始時、コントローラ140は、レジスタにフラグがセットされているか否かを判定し、フラグがセットされている場合には、プログラムパルスP_FASTの初期電圧を一定電圧だけ下げる(例えば、
図5の例で言えば、初期電圧を13.0Vから12.0Vに1Vだけ下げる)。これにより、選択ページの全てのデータが犠牲的なプログラムパルスによって合格しないようにする。他方、レジスタにフラグがセットされていない場合には、予め設定されたプログラムパルスP_FASTが印加される。
【0042】
このように本実施例によれば、犠牲的なプログラムパルスの印加によって選択ページの全てのデータが合格する場合には、プログラムパルスP_FASTの初期電圧を下げることでプログラムパルスP_FASTの最適化を図ることができる。なお、上記の例では、プログラムパルスP_FASTによって全てのデータが合格したときにフラグをセットしたが、これ以外にも、例えば、プログラムパルスP_FASTの最初に印加するプログラムパルスによって選択ページの中の一定数以上(例えば、過半数以上)のデータが合格した場合には(最終的に全てのデータがベリファイ合格したとき)、フラグをセットするようにしてもよい。また、上記の例では、プログラムパルスP_FASTの初期電圧を下げるようにしたが、プログラムパルスP_FASTの中の複数のプログラムパルスの電圧を下げるようにしてもよい。
【0043】
上記実施例では、プログラムパルスが最大で6回印加する例を示したが、これは一例であり、これよりも多い数または少ない数のプログラムパルスの印加であってもよい。また、
図3や
図5に示すプログラムパルスの電圧やステップ電圧は単なる例示であることに留意すべきである。
【0044】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。
前記犠牲的なプログラムパルスは、プログラム/消去のサイクルが一定数に到達したメモリセルが最初のプログラムパルスでプログラムベリファイ合格するときのプログラムパルスよりも低い電圧である、請求項1または3に記載の半導体記憶装置。
前記犠牲的なプログラムパルスが複数のプログラムパルスであるとき、前記犠牲的なプログラムパルス間の第1のステップ電圧は、他のプログラムパルス間の第2のステップ電圧よりも小さい、請求項1ないし4いずれか1つに記載の半導体記憶装置。
前記プログラム手段により印加される最後のプログラムパルスとその前のプログラムパルスとの間の第3のステップ電圧は、前記第1および第2のステップ電圧よりも大きい、請求項5に記載の半導体記憶装置。
前記プログラム手段は、プログラムの回数または消去の回数をカウントするカウント手段を含み、前記プログラム手段は、前記カウント手段によりカウントされた回数に基づき前記犠牲的なプログラムパルスの少なくとも初期電圧を変更する、請求項1に記載の半導体記憶装置。
前記犠牲的なプログラムパルスは、プログラム/消去のサイクルが一定数に到達したメモリセルが最初のプログラムパルスでプログラムベリファイ合格するときのプログラムパルスよりも低い電圧である、請求項8または10に記載のプログラム方法。
前記犠牲的なプログラムパルスが複数のプログラムパルスであるとき、前記犠牲的なプログラムパルス間の第1のステップ電圧は、他のプログラムパルス間の第2のステップ電圧よりも小さい、請求項8ないし11いずれか1つに記載のプログラム方法。
プログラム方法はさらに、プログラムの回数または消去の回数をカウントするステップを含み、前記プログラムパルスを印加するステップは、前記カウントされた回数に基づき前記犠牲的なプログラムパルスの少なくとも初期電圧を変更する、請求項8に記載のプログラム方法。