以下、図面を参照しながら実施形態に係る不揮発性半導体記憶装置について説明する。
[第1の実施形態]
<全体構成>
先ず、第1の実施形態に係る不揮発性半導体記憶装置の全体構成について説明する。
図1は、本実施形態に係る不揮発性半導体記憶装置のブロック図である。
このNAND型フラッシュメモリは、NANDチップ10、このNANDチップ10を制御するコントローラ11及びROMヒューズ12を備える。
NANDチップ10を構成するメモリセルアレイ1は、後述するように、複数の電荷蓄積層型のメモリセルをマトリクス状に配置して構成される。
メモリセルアレイ1の周辺には、ロウデコーダ/ワード線ドライバ2a、カラムデコーダ2b、ページバッファ3、並びに、プログラム電圧発生回路8a及び通過電圧発生回路8bからなる電圧発生回路8が配置されている。これら、ロウデコーダ/ワード線ドライバ2a、カラムデコーダ2b、ページバッファ3及び電圧発生回路8はデータ書き込み部を構成するものであり、メモリセルアレイ1に対してページ単位でデータの書き込み、或いは読み出しを行う。
ロウデコーダ/ワード線ドライバ2aは、メモリセルアレイ1のワード線及び選択ゲート線を駆動する。ページバッファ3は、1ページ分のセンスアンプ回路とデータ保持回路を備えている。ページバッファ3の1ページ分の読み出しデータは、カラムデコーダ2bにより順次カラム選択されて、I/Oバッファ9を介して外部I/O端子に出力される。I/O端子から供給される書き込みデータは、カラムデコーダ2bにより選択されてページバッファ3にロードされる。ページバッファ3には、1ページ分の書き込みデータがロードされる。ロウアドレス信号及びカラムアドレス信号はI/Oバッファ9を介して入力され、それぞれ、ロウデコーダ2a及びカラムデコーダ2bに転送される。ロウアドレスレジスタ5aは、消去動作では、消去ブロックアドレスを保持し、書き込み動作や読み出し動作ではページアドレスを保持する。カラムアドレスレジスタ5bには、書き込み動作開始前の書き込みデータロードのための先頭カラムアドレスや、読み出し動作のための先頭カラムアドレスが入力される。書き込みイネーブル/WEや読み出しイネーブル/REなどが入力されるまで、カラムアドレスレジスタ5bは入力されたカラムアドレスを保持する。
ロジック制御回路6は、チップイネーブル信号/CE、コマンドイネーブル信号CLE、アドレスラッチイネーブル信号ALE、書き込みイネーブル信号/WE、読み出しイネーブル信号/RE等の制御信号に基づいて、コマンドやアドレスの入力、データの入出力を制御する。読み出し動作や書き込み動作はコマンドで実行される。コマンドを受けて、シーケンス制御回路7は、読み出し動作や、書き込み或いは消去のシーケンス制御を行う。電圧発生回路8は、制御回路7により制御されて、種々の動作に必要な電圧を発生する。
コントローラ11は、ROMヒューズ12に記憶された制御に必要な各種情報を用い、NANDチップ10の現在の書込状態に適した条件でデータの書き込み及び読み出しの制御を実行する。なお、後述する書き込み動作の一部は、NANDチップ10側で行うようにしても良い。
<メモリセルアレイ>
次に、本実施形態に係る不揮発性半導体記憶装置のメモリセルアレイ1について説明する。
図2は、メモリセルアレイ1の回路図である。図2の場合、n個(nは、自然数)の直列接続されたメモリセルMC0〜MCn−1とその両端に接続された選択ゲートトランジスタSG1、SG2により、NANDストリング4が構成されている。選択ゲートトランジスタSG1のソースは、共通ソース線CELSRCに接続され、選択ゲートトランジスタSG2のドレインはビット線BL(BL0〜BLm−1)に接続される。メモリセルMC0〜MCn−1の制御ゲートはそれぞれワード線WL(WL0〜WLn−1)に接続され、選択ゲートトランジスタSG1、SG2のゲートは、選択ゲート線SL1、SL2に接続される。
1つのワード線WLに沿う複数のメモリセルMCの範囲が、一括したデータの読み出し及び書き込みの単位となるページとなる。また、ワード線WL方向に並ぶ複数のNANDストリング4の範囲が、データの一括消去の単位となるブロックBLKを構成する。図2では、ビット線BL方向にビット線BLを共有する複数のブロックBLK0〜BLKl−1を配列して、セルアレイ1が構成されている。ワード線WL及び選択ゲート線SL0、SL1は、ロウデコーダ2aにより駆動される。各ビット線BLは、ページバッファ3のセンスアンプ回路S/Aに接続されている。
ここで、このようなNAND型フラッシュメモリのアクセス単位である「ページ」について説明する。以下の説明において、「ページ」とは、異なる2つの意味を有するので注意を要する。
第1は、1つのワード線に沿う一括したデータアクセス単位としての「ページ」である。そして、第2は、1つのメモリセルに複数ビットを記憶する場合の記憶データの階層を示す「ページ」であり、この場合、「L(Lower)ページ」、「U(Upper)ページ」などと呼ぶ。
<データ書き込み>
先ず、本実施形態のデータ書き込みについて説明する前に、以下で用いる用語について説明しておく。
始めに、データ書き込み時に実行される一連の処理を「書き込みシーケンス」と呼ぶ。この書き込みシーケンスは、実際にメモリセルの閾値電圧を遷移させる「プログラム動作」と、メモリセルの閾値電圧を確認する「ベリファイ動作」からなる「書き込みループ」によって実行される。各プログラム動作では、選択ワード線WLに対してメモリセルMCの閾値電圧の遷移に必要なプログラム電圧Vpgmが印加され、非選択ワード線WLに対してメモリセルMCが導通する程度の通過電圧Vpassが印加される。
次に、本実施形態の書き込みシーケンスについて説明する。
図3は、2ビット/セルのメモリセルを用いた場合の書き込みシーケンス時のメモリセル群の閾値電圧分布の遷移の様子を示す図である。
始めに、データ消去を実行する(ステップS101)。これは、ブロック全体に対して一括に実行される。その結果、ブロック内の全てのメモリセルの閾値電圧Vthは、最も低いERレベルになる。
続いて、Lページ書き込みを実行する(ステップS102)。これは、書き込みデータの下位ビットに基づいて実行される。下位ビットが“1”の場合、メモリセルの閾値電圧VthはERレベルに維持される。下位ビットが“0”の場合、メモリセルの閾値電圧VthはERレベルからAレベルとBレベルとの中間レベルであり電圧Vlmよりも高いLMレベルに遷移する。
最後に、Uページ書き込みを実行する(ステップS103)。これは、書き込みデータの上位ビットに基づいて実行される。もし、メモリセルの閾値電圧VthがERレベルならば、上位データが“1”の場合、メモリセルの閾値電圧VthはERレベルのまま維持する。逆に、上位ビットが“0”の場合、メモリセルの閾値電圧Vthは電圧Va(Va<Vlm)よりも高いAレベルに遷移する。一方、メモリセルの閾値電圧VthがLMレベルならば、上位ビットが“0”の場合、メモリセルの閾値電圧Vthは電圧Vb(Va<Vb)よりも高いBレベルに遷移する。逆に、上位ビットが“1”の場合、メモリセルの閾値電圧Vthは電圧Vc(Vb<Vc)よりも高いCレベルまで遷移する。
以上のように、メモリセルに対する2ビットデータの書き込みは、Lページ書き込みとUページ書き込みの2段階によって実現される。
各ページの書き込みは、例えば、次のような書き込みループの繰り返しによって実現される。
書き込みループは、メモリセルMCの閾値電圧Vthを遷移させるプログラム動作と、メモリセルMCの閾値電圧Vthがベリファイ電圧以上であることを確認するベリファイ動作からなる。
書き込みシーケンスのプログラム動作は、メモリセルアレイ1を図4に示すようなバイアス状態にすることで実現される。なお、図4に示す例は、ワード線WL1に接続されたメモリセルMC1にデータを書き込む場合を示している。
つまり、プログラム動作では、選択メモリセルMC1の制御ゲート(ワード線WL1)にメモリセルMCの閾値電圧Vthの遷移に必要なプログラム電圧Vpgm(例えば、20V程度)を印加し、それ以外のメモリセルMC0、MC2、・・・、MCn−1の制御ゲートには、それぞれ通過電圧Vpass(例えば、10V程度)を印加する。この通過電圧Vpassは、メモリセルMCの閾値電圧VthによらずメモリセルMC0、MC2、・・・、MCn−1がオンする程度の電圧且つプログラムされない程度の電圧となる。また、ソース線CELSRC側の選択ゲート線SL1には、接地電圧Vss(例えば、0V)を印加し、ビット線BL側の選択ゲート線SL2には、電源電圧Vccを印加する。ビット線BLには0Vを印加する。ソース線CELSRCには電源電圧Vccを印加する。また、セルウエルには、ウエル電圧Vwell(例えば、0V)を印加する。
これによって、メモリセルMC1のゲート絶縁膜に高電圧が加わり、セルウエルから電荷蓄積層に電子がトンネリングし、電荷蓄積層に電荷が蓄えられる。その結果、メモリセルMC1の閾値電圧Vthは正電圧側にシフトする。
ここで、従来の不揮発性半導体記憶装置の書き込みシーケンスでは、プログラム電圧Vpgmについては、書き込みループ毎にステップアップさせ、通過電圧Vpassについては、一定に維持させて書き込みループを繰り返していた。
しかし、この場合、書き込みシーケンスが進むにつれ、プログラム電圧Vpgmと通過電圧Vpassとの差が広がってしまう。この場合、選択ワード線WLと非選択ビット線BLに接続された非選択メモリセルMCにおいて、制御ゲートとチャネルとの電位差が大きくなっていき、誤書き込みが発生してしまう恐れがあった。
そこで、上記問題を解決するものとして、次のような書き込みシーケンスが考えられる。
図27は、第1の実施形態に対する比較例に係る不揮発性半導体記憶装置の書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassとの関係を示す図である。
この書き込みシーケンスの場合、書き込みループ毎にプログラム電圧Vpgmだけでなく、通過電圧Vpassも一定幅でステップアップさせる。この場合、上記問題は解決されるものの、非選択ワード線WL及び選択ビット線BLに接続された非選択メモリセルMCに制御ゲートに大きな電圧(通過電圧Vpass)が印加されることになるため、閾値電圧Vthが変動してしまう。
特に変動しやすい低レベルの閾値電圧分布、例えばAレベルの閾値電圧分布は、図29の矢印a1で示すように、広がってしまう点が問題となる。
そこで、この問題を解決するものとして、図28に示す書き込みシーケンスが考えられる。この書き込みシーケンスの場合、図28の矢印a1で示すように、書き込みシーケンスの初期における通過電圧Vpassを低めに設定した上で、書き込みループ毎に、通過電圧Vpassを一定幅でステップアップさせる。これによって、低レベルの閾値電圧分布が変動しまうという問題は解決できる。
しかし、この場合、通過電圧Vpassの初期値が低い分、多くの書き込みループを要することになり、書き込みシーケンスの処理時間が長期化する点が問題となる。
そこで、第1の実施形態に係る不揮発性半導体記憶装置では、次のような書き込みシーケンスを採用する。
図5は、本実施形態に係る不揮発性半導体記憶装置の書き込みシーケンスの原理を説明する図である。
本実施形態では、図5に示すように、書き込みシーケンスのうち初期の段階の書き込みループ、つまり、低レベルの閾値電圧Vthのプログラムの期間P1においては、書き込みループ毎の通過電圧Vpassのステップアップ幅を小さめにしておき、高レベルの閾値電圧のプログラムの期間P2においては、書き込みループ毎の通過電圧Vpassのステップアップ幅をプログラムの期間P1よりも大きくする。図5の場合、期間P2の終わりにおいて、通過電圧Vpassが最大の通過電圧Vpsmaxに達している。ここで、最大の通過電圧Vpsmaxは、これ以上通過電圧Vpassが大きくなると、非選択ワード線WLとチャネルとの電位差が大きくなり非選択メモリセルMCに誤書き込みが発生する確率が高くなる通過電圧Vpassである。そのため、仮に、これ以上、通過電圧Vpassをステップアップさせると、非選択ワード線WL及び選択ビット線BLに接続された非選択メモリセルMCの閾値電圧Vthが変動してしまう。そのため、期間P2よりも後の書き込みループでは、通過電圧Vpassは、ステップアップしないようにしている。
これによって、図27に示す比較例に比べて、期間P1では、実効的なプログラム電圧Vpgmの増加を抑えることができる。また、低レベルの閾値電圧Vthの変動を防止することができ、低レベルの閾値電圧Vthが広がることを抑制できる。また、図28に示す比較例に比べて、期間P2では、実効的なプログラム電圧Vpgmがより高くなることになるため、選択メモリセルMCの閾値電圧Vthが所望の閾値電圧Vthに遷移し易くなり、書き込みシーケンスの処理時間を短縮することができる。
次に図5に示す書き込みシーケンスの制御方法について説明する。
図6は、通過電圧Vpassのステップアップ幅ΔVpassを書き込みループ回数で制御する場合の書き込みシーケンスのフローチャートである。フローチャートの動作は、例えば、シーケンス制御回路7が制御する。
始めに、ステップS201で、書き込みループ数nlを1で初期化する。また、通過電圧Vpassを初期通過電圧Vpass0で初期化する(初期通過電圧Vpass0は、例えば5V)。
続いて、ステップS202で、書き込みループ数が、nl<Rnl1(Rnl1は、例えば10)かを判定する。n<Rnl1であれば(S202のYes)、ステップS203において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、n≧Rnl1であれば(S202のNo)、ステップS207に処理を移す。ここで、書き込みループ数はNANDチップ10内に配置されたラッチに記憶することができる。
続いて、ステップS204で、ベリファイ動作を実行する。仮に、このステップS204で全てのメモリセルがパスした場合(S204のPass)、動作を終了する。一方、一部のメモリセルがパスしなかった場合(S204のFail)、ステップS205で、書き込みループ数nlをインクリメントする。
続いて、ステップS206で、通過電圧VpassにΔVpassを加える。ここで、ΔVpassは電圧Vc1である。このとき、プログラム電圧VpgmもΔVpgmだけステップアップさせる。その後、ステップS202に処理を戻す。
ステップS207では、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。
続いて、ステップS208で、ベリファイ動作を実行する。仮に、このステップS208で全てのメモリセルがパスした場合(S208のPass)、動作を終了する。一方、一部のメモリセルがパスしなかった場合(S208のFail)、ステップS209で、書き込みループ数nlをインクリメントする。
続いて、ステップS210で、通過電圧VpassにΔVpassを加える。ここで、ΔVpassは電圧Vc2(>電圧Vc1)である。このとき、プログラム電圧VpgmもΔVpgmステップアップさせる。
続いて、ステップS211で、書き込みループ数nlが、例えばnl<Rnl2(Rnl2は、例えば15)かを判定する。nl<Rnl2であれば(S211のYes)、再度ステップS207において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、n≧Rnl2であれば(S211のNo)、ステップS212に処理を移す。なお、Rnl1<Rnl2である。
ステップS212では、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。ここでの通過電圧Vpassは、最大の通過電圧Vpsmaxとなる。すなわち、以降のプログラム動作では通過電圧Vpassをステップアップさせない。
続いて、ステップS213で、ベリファイ動作を実行する。このベリファイ動作でプログラムが完了(全てのメモリセルがパス)したかを判定し、完了している場合(S213のPass)書き込みシーケンスを終了し、完了していない場合(S213のFail)、ステップS214で書き込みループ数nlが最大ループ回数(図中の“loop max”)に達したかどうか判断する。このステップS214において、書き込みループ数nlが最大ループ回数に達している場合は、書き込み失敗として書き込みシーケンスを終了する。一方、書き込みループ回数に達していない場合は、S212に処理を戻す。この際、プログラム電圧VpgmはΔVpgmだけステップアップさせるが、通過電圧Vpassはステップアップさせない。
図7は、通過電圧Vpassのステップアップ幅ΔVpassをプログラム電圧Vpgmで制御する場合の書き込みシーケンスのフローチャートである。フローチャートの動作は、例えば、シーケンス制御回路7が制御する。
始めに、ステップS301で、プログラム電圧Vpgmを、所定の電圧Vpgm0(Vpgm0は、例えば13V)で初期化する。また、通過電圧Vpassを初期通過電圧Vpass0で初期化する(初期通過電圧Vpass0は、例えば5V)。
続いて、ステップS302で、プログラム電圧Vpgmが、Vpgm<Rvpg1(Rvpg1は、例えば15V)かを判定する。Vpgm<Rvpg1であれば(S302のYes)、ステップS303に処理を移し、Vpgm≧Rvpg1であれば(S302のNo)、ステップS307に処理を移す。
続くステップS303及びS304は、図6のステップS203及びS204と同様であるため説明を省略する。
続いて、ステップS305で、プログラム電圧Vpgmを所定の電圧ΔVpgmだけステップアップさせる。その後、図6のステップS206と同様のステップS306を処理し、ステップS302に処理を戻す。
ステップS307及びS308は、図6のステップS207及びS208と同様であるため説明を省略する。
続いて、ステップS309で、プログラム電圧Vpgmを電圧ΔVpgmだけステップアップさせる。その後、図6のステップS210と同様のステップS310を処理する。
続いて、ステップS311で、プログラム電圧Vpgmが、Vpgm<Rvpg2(Rvpg2は、例えば17V)かを判定する。Vpgm<Rvpg2であれば(S311のYes)、再度ステップS307において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、Vpgm≧Rvpg2であれば(ステップS311のNo)、ステップS312に処理を移す。なお、Rvpg1<Rvpg2である。
ステップS312〜S314は、図6のステップS212〜S214と同様であるため説明を省略する。
図8は、通過電圧Vpassのステップアップ幅ΔVpassを通過電圧Vpassで制御する場合の書き込みシーケンスのフローチャートである。フローチャートの動作は、例えば、シーケンス制御回路7が制御する。
始めに、ステップS401で、通過電圧Vpassを、初期通過電圧Vpasss0(初期通過電圧Vpass0は、例えば5V)で初期化する。
続いて、ステップS402で、通過電圧Vpassが、Vpass<Rvpa1(Rvpa1は、例えば7V)かを判定する。Vpass<Rvpa1であれば(S402のYes)、ステップS403に処理を移し、Vpass≧Rvpa1であれば(S402のNo)、ステップS406に処理を移す。
続くステップS403、S404及びS405は、図6のステップS203、S204及びS206と同様であるため説明を省略する。
ステップS406、S407及びS408は、図6のステップS207、S208及びS210と同様であるため説明を省略する。
続いて、ステップS409で、通過電圧Vpassが、Vpass<Rvpa2(Rvpa2は、例えば9V)かを判定する。Vpass<Rvpa2であれば(S409のYes)、再度ステップS406において、プログラム電圧Vpgm、通過電圧Vpassでプログラムを実行する。一方、Vpass≧Rvpa2であれば(S409のNo)、ステップS410に処理を移す。なお、Rvpa1<Rvpa2である。
ステップS410〜S412は、図6のステップS212〜S214と同様であるため説明を省略する。
次に、本実施形態に係る書き込みシーケンスを2ビット/セルのメモリセルを用いた不揮発性半導体記憶装置に適用した場合について説明する。例えば、図3のUページ書き込みの場合を想定している。
図9は、2ビット/セルのメモリセルMCに対する書き込みシーケンス時における書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassの関係を示す図である。また、図10は、図9の場合における通過電圧Vpassの様子を示す図である。
始めの1〜L回目(Lは、例えば5)の書き込みループは、Aレベルのプログラム期間となる。ここでは、通過電圧Vpassのステップアップ幅ΔVpassを0Vとする。
続くL+1〜M回目(Mは、例えば10)の書き込みループは、Bレベルのプログラム期間となる。ここでは、通過電圧Vpassのステップアップ幅ΔVpassを一定の電圧Vc1とする。
続くM+1回目以降の書き込みループは、Cレベルのプログラム期間となる。ここでは、通過電圧Vpassのステップアップ幅ΔVpassを電圧Vc1より大きい一定の電圧Vc2とする。なお、図9及び図10の場合、N回目(Nは、例えば15)の書き込みループにおいて、通過電圧Vpassが、最大の通過電圧Vpsmax)に達してしまう。そのため、仮に、N+1回目以降の書き込みループでも通過電圧Vpassを電圧Vc2ずつステップアップしていくと、通過電圧Vpassが印加される非選択メモリセルMCの閾値電圧Vthもプログラム電圧Vpgmを印加したときと同様、変動することになる。そのため、N+1回目以降の書き込みループでは、通過電圧Vpassをステップアップしないようにする。
以上のように、本実施形態の書き込みシーケンスでは、ステップアップ幅ΔVpassを、Aレベルのプログラムが終了するL回目の書き込みループの後、Bレベルのプログラムが終了するM回目の書き込みループの後の2回、ステップアップ幅ΔVpassが大きくなるように切り替えている。
つまり、n回目の書き込みループで用いる通過電圧Vpassとn+1回目の書き込みループで用いる通過電圧Vpassの差(ステップアップ幅)をΔVnと表現すると、データ書き込み部は、ΔV(L−1)<ΔVL、ΔVL≦ΔV(M−1)且つΔV(M−1)<ΔVMとなるように通過電圧Vpassを用いて書き込みループを実行していると言い換えることができる。
このように、図9及び図10に示す実施形態の場合、Aレベルのプログラム期間では、低い通過電圧Vpassを用いることで、Aレベルの閾値電圧分布が広がるのを抑制できると共に、BレベルやCレベルなど閾値電圧Vthが遷移し難いプログラム期間では、そのレベルに応じて通過電圧Vpassをステップアップさせていくこと、メモリセルMCの閾値電圧Vthを遷移し易くすることができる。
次に図9及び図10に示す書き込みシーケンスの制御方法について説明する。フローチャートの動作は、例えば、シーケンス制御回路7が制御する。
図11は、通過電圧Vpassのステップアップ幅ΔVpassを書き込みループ回数nlで制御する場合の書き込みシーケンスのフローチャートである。ここで、書き込みループ数はNANDチップ10内に配置されたラッチに記憶することができる。
始めに、ステップS501で、書き込みループ数nlを1で初期化する。また、通過電圧Vpassを初期通過電圧Vpass0で初期化する(初期通過電圧Vpass0は、例えば5V)。
続いて、ステップS502で、書き込みループ数nlが、例えばnl<L(例えばLは5)かを判定する。nl<Lであれば(S502のYes)、ステップS503において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、nl≧Lであれば(S502のNo)、ステップS507に処理を移す。
続いて、ステップS504で、ベリファイ動作を実行する。仮に、このステップS504で全てのメモリセルがパスした場合(S504のPass)、動作を終了する。一方、一部のメモリセルがパスしなかった場合(S504のFail)、ステップS505で、書き込みループ数nlをインクリメントする。
続いて、ステップS506で、通過電圧VpassにΔVpassを加える。但し、ここでは、ΔVpassは0Vであり、実質的に何も処理を行わない。つまり、書き込みループ数がnl<Lである間は、通過電圧Vpassはステップアップされない。その後、ステップS502に処理を戻す。
ステップS507では、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。
続いて、ステップS508で、ベリファイ動作を実行する。仮に、このステップS508で全てのメモリセルがパスした場合(S508のPass)、動作を終了する。一方、一部のメモリセルがパスしなかった場合(S508のFail)ステップS509で、書き込みループ数nlをインクリメントする。
続いて、ステップS510で、通過電圧VpassにΔVpassを加える。ここで、ΔVpassは電圧Vc1である。このとき、プログラム電圧VpgmもΔVpgmだけステップアップさせる。
続いて、ステップS511で、書き込みループ数nlが、例えばnl<M(例えばMは10)かを判定する。nl<Mであれば(S511のYes)、再度ステップS507において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、nl≧Mであれば(S511のNo)、ステップS512に処理を移す。
ステップS512では、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。
続いて、ステップS513で、ベリファイ動作を実行する。仮に、このステップS513で全てのメモリセルがパスした場合(S513のPass)、動作を終了する。一方、一部のメモリセルがパスしなかった場合(S513のFail)、ステップ514で、書き込みループ数nlをインクリメントする。
続いて、ステップS515で、通過電圧VpassにΔVpassを加える。ここで、ΔVpassは電圧Vc2(>電圧Vc1)である。このとき、プログラム電圧VpgmもΔVpgmだけステップアップさせる。
続いて、ステップS516で、書き込みループ数nlが、例えばnl<N(例えばNは15)かを判定する。nl<Nであれば(S516のYes)、再度ステップS512において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、nl≧Nであれば(S516のNo)、ステップS517に処理を移す。
ステップS517では、最大の通過電圧Vpsmaxを用いてプログラム動作を実行する。
続いて、ステップS518で、ベリファイ動作を実行する。このベリファイ動作でプログラムが完了(全てのメモリセルがパス)したかを判定し、完了している場合(S518のPass)、書き込みシーケンスを終了し、完了していない場合(S518のFail)、S519で書き込みループ数nlが最大ループ回数(図中の“loop max”)に達したかどうか判断する。このステップS519において、書き込みループ数nlが最大ループ回数に達している場合は、書き込み失敗として書き込みシーケンスを終了する。一方、書き込みループ回数に達していない場合は、ステップS517に処理を戻す。この際、プログラム電圧VpgmはΔVpgmだけステップアップさせるが、通過電圧Vpassはステップアップさせない。
図11に示す書き込みシーケンスは、通過電圧Vpassのステップアップ幅ΔVpassを書き込みループ回数で制御する場合であったが、図7及び図8と同様、プログラム電圧Vpagm或いは通過電圧Vpassで制御することもできる。
また、本実施形態の書き込みシーケンスを用いた場合、低レベルの閾値電圧分布の広がりを抑制できることは前述の通りであるが、その他にも次のような効果を得ることもできる。
図12及び図13は、図9のグラフに対してAレベル〜Cレベルのプログラム期間を重ね合わせた図である。図12は、書き込み/消去サイクル数が少ないメモリセルMC(以下、「フレッシュセル」と呼ぶ)の場合であり、図13は、書き込み/消去サイクル数が多いメモリセルMC(以下、「サイクルドセル」と呼ぶ)の場合である。
フレッシュセルに対する書き込みシーケンスの場合、図12に示すように、AレベルのプログラムはL回目(Lは、例えば5)の書き込みループ、BレベルのプログラムはM回目(Lは、例えば10)の書き込みループ、CレベルのプログラムはX回目(Xは、例えば15)の書き込みループで完了するとする。
これに対し、サイクルドセルの場合、図13に示すように、AレベルのプログラムはL回目の書き込みループよりも早いL´回目の書き込みループ、BレベルのプログラムはM回目の書き込みループよりも早いM´回目の書き込みループ、CレベルのプログラムはX回目の書き込みループよりも早いX´回目の書き込みループで完了する。これは、一般的に、サイクルドセルの方が、フレッシュセルよりも閾値電圧が上昇し易い(以下「プログラムし易い」と称する場合がある)ためである。
つまり、図12及び図13に示す場合、フレッシュセルにとってのAレベルのプログラム期間(1〜L回目の書き込みループ)は、サイクルドセルにとってのAレベル及びBレベルのプログラム期間となる。但し、ここでのBレベルのプログラムとは、サイクルドセルの中でも、プログラムがし易いメモリセルMCが対象となることに注意されたい。同様に、フレッシュセルにとってのBレベルのプログラム期間(L+1〜M回目の書き込みループ)は、サイクルドセルにとってのBレベル及びCレベルのプログラム期間となる。但し、ここでのCレベルのプログラムとは、サイクルドセルの中でも、プログラムがし易いメモリセルMCが対象となることに注意されたい。また、フレッシュセルに取ってのCレベルのプログラム期間(M以降の書き込みループ)は、サイクルドセルにとってのCレベルのプログラム期間である。但し、ここでのCレベルのプログラムとは、サイクルドセルの中でも、プログラムがし難いメモリセルMCが対象となることに注意されたい。
以上のように、図9〜図11に示す書き込みシーケンスの場合、サイクルドセルに関しては、Bレベルのプログラムがし易いメモリセルMCは、通過電圧Vpassを低く抑えたステップアップしないL回目までの書き込みループでプログラムされ、また、Cレベルのプログラムがし易いメモリセルMCは、通過電圧Vpassのステップアップ幅ΔVpassが電圧Vc1と低いM回目までの書き込みループでプログラムされることになる。その結果、サイクルドセルに対するBレベル及びCレベルの過プログラムを防ぐことができ、図14の点線で示すように、Bレベル及びCレベルの閾値電圧分布の上裾が広がるのを抑制することができる。
以上、本実施形態によれば、前述の書き込みシーケンスを用いることで、書き込みシーケンスの処理時間を増大させることなく低レベルの閾値電圧分布の広がりを抑制することができる。また、サイクルドセルに対するデータ書き込みに関しても、高レベルの閾値電圧分布の広がりを抑制することができる。
[第2の実施形態]
以下で説明する第2〜第4の実施形態は、第1の実施形態の変形例となるものである。
第2の実施形態では、書き込みループ毎に通過電圧Vpassを指数関数的にステップアップさせる書き込みシーケンスについて説明する。
図15は、本実施形態に係る書き込みシーケンス時における書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassの関係を示す図である。また、図16及び図17は、本実施形態に係る書き込みシーケンスを用いた場合であって、N=6とした場合の通過電圧Vpassの様子を示す図である。
本実施形態の場合、図15に示すように、通過電圧Vpassが、最大の通過電圧Vpsmaxに達するN回目の書き込みループまではステップアップ幅ΔVpass自体を等間隔でステップアップさせながら書き込みループを繰り返し実行する。
具体的には、図16に示す場合、通過電圧Vpassが、最大の通過電圧Vpsmaxに達する6回目の書き込みループまで、通過電圧Vpassのステップアップ幅ΔVpass自体を0.1Vずつ増やしながら、書き込みループを繰り返し実行する。
つまり、n回目の書き込みループで用いる通過電圧Vpassに対するn+1回目の書き込みループで用いる通過電圧Vpassの差(ステップアップ幅)をΔVnと表現すると、データ書き込み部は、ΔV1=0.1V、ΔV2=0.2V、・・・、ΔV5=0.5Vとなるような通過電圧Vpassを用いて書き込みループを実行していると言い換えることができる。これを一般的な形で表わすと、ΔVn=ΔV(n−1)+0.1となる。
また、図17は、本実施形態に係る書き込みシーケンスの他の例である。
図17に示す場合、1回目の書き込みループから2回目の書き込みループにかけての通過電圧Vpassのステップアップ幅ΔVpassは、0.1Vであるが、それ以降は、通過電圧Vpassがプログラム電圧Vpgmの下限に達する6回目の書き込みループまで、通過電圧Vpassのステップアップ幅ΔVpass自体を0.2Vずつ増やしながら、書き込みループを繰り返し実行する。
図16及び図17のステップアップ幅ΔVpass制御は、論理回路による演算により行うことができる。また、NANDチップ10内のROMヒューズなどにステップアップ幅ΔVpassの変動値を記憶することにより行うこともできる。
メモリセルMCのプログラムのし易さはメモリセル毎にバラツキがあり、各レベルのプログラム期間も明確に分けられないような場合がある。
この点、本実施形態によれば、プログラムする閾値電圧に関係なくプログラムし易いメモリセルMCに対しては低い通過電圧Vpassを用いたプログラム動作を実行し、プログラムし難いメモリセルMCに対しては高い通過電圧Vpassを用いたプログラム動作を実行することになるため、第1の実施形態と比べ、メモリセルのプログラム特性により最適なプログラム動作を実行することができる。
[第3の実施形態]
第3の実施形態では、早い段階の書き込みループでは、通過電圧Vpassを一定の幅でステップアップさせ、その後の書き込みループでは、通過電圧Vpassを指数関数的にステップアップさせる書き込みシーケンスについて説明する。
図18は、本実施形態に係る書き込みシーケンス時における書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassの関係を示す図である。また、図19は、本実施形態に係る書き込みシーケンスを用いた場合であって、L=2、N=6とした場合の通過電圧Vpassの関係を示す図である。
本実施形態の場合、図18に示すように、1〜L回目の書き込みループまでは、通過電圧Vpassを一定の幅Vc1でステップアップさせ、L+1回目の書き込みループから通過電圧VpassがN回目の書き込みループまではステップアップ幅ΔVpass自体をステップアップさせながら書き込みループを繰り返し実行する。
具体的には、図19に示す場合、例えば、1及び2回目の書き込みループでは、通過電圧Vpassを0.1Vずつステップアップし、3回目の書き込みループから通過電圧Vpassが6回目の書き込みループまでは、通過電圧Vpassのステップアップ幅ΔVpass自体を0.1Vずつ増やしながら、書き込みループを繰り返し実行する。
つまり、n回目の書き込みループで用いる通過電圧Vpassに対するn+1回目の書き込みループで用いる通過電圧Vpassの差(ステップアップ幅)をΔVnと表現すると、データ書き込み部は、ΔV1=0.1V、ΔV2=0.1V、ΔV3=0.2V、ΔV4=0.3V、ΔV5=0.5Vとなるような通過電圧Vpassを用いて書き込みループを実行していると言える。
本実施形態の場合、低レベルの閾値電圧のプログラム期間では、通過電圧Vpassのステップアップを抑えつつプログラム動作を実行するので、第1の実施形態と同様、低レベルの閾値電圧分布の広がりを抑えることができると共に、その後の書き込みループでは、第2の実施形態と同様、メモリセルのプログラム特性に応じた適切な通過電圧Vpassを用いたプログラム動作を実行することができる。
[第4の実施形態]
第4の実施形態は、図3の書き込みとは異なり、書き込みシーケンスにおいて、A〜Cレベルに書き込まれるメモリセルに対して同時に書き込みが行われ、各レベルに達したメモリセルから順に書き込み禁止状態(ロックアウト動作)となる。この書き込み禁止状態は、ビット線の電圧を変更(例えば、0Vから2.5Vに変更)することにより行うことができる。
図20は、本実施形態に係る書き込みシーケンス時における書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassの関係を示す図である。また、図21は、本実施形態に係る書き込みシーケンスを用いた場合の通過電圧Vpassの関係を示す図である。ここで、Aレベルのプログラム期間はAレベルに書き込まれるメモリセルのベリファイがパスするまでの期間であり、Bレベルのプログラム期間はBレベルに書き込まれるメモリセルのベリファイがパスするまでの期間であり、Cレベルのプログラム期間はCレベルに書き込まれるメモリセルのベリファイがパスするまでの期間である。
本実施形態の場合、図20に示すように、Aレベルのプログラム期間である1〜L回目の書き込みループでは、通過電圧Vpassをステップアップさせずにプログラム動作を実行し、Bレベルのプログラム期間であるL+1〜M回目の書き込みループでは、通過電圧Vpassを所定の電圧Vc1でステップアップさせつつプログラム動作を実行する。その後、Cレベルのプログラム期間であるM+1〜N回目の書き込みループでは、通過電圧Vpassを指数関数的にステップアップさせつつプログラム動作を実行する。
具体的には、図21に示す場合、Aレベルのプログラム期間である1〜4回目の書き込みループでは、通過電圧Vpassをステップアップさせずにプログラム動作を実行し、Bレベルのプログラム期間である5及び6回目の書き込みループでは、通過電圧Vpassを0.1Vだけステップアップさせつつプログラム動作を実行する。その後、Cレベルのプログラム期間である7〜9回目の書き込みループでは、通過電圧Vpassを、閾値電圧Vpassのステップアップ幅ΔVpass自体を0.1Vずつステップアップさせつつプログラム動作を実行する。
つまり、n回目の書き込みループで用いる通過電圧Vpassに対するn+1回目の書き込みループで用いる通過電圧Vpassの差(ステップアップ幅)をΔVnと表現すると、データ書き込み部は、ΔV1〜ΔV3=0V、ΔV4,ΔV5=0.1V、ΔV6=0.2V、ΔV7=0.3V、ΔV8=0.4Vとなるような通過電圧Vpassを用いて書き込みループを実行している。
本実施形態の場合、Aレベル及びBレベルのプログラム期間では、第1の実施形態と同様、プログラムする閾値電圧に適したプログラム動作を実行することができ、Cレベルのプログラム期間では、第2の実施形態と同様、メモリセルのプログラム特性に適したプログラム動作を実行することができる。
図22は、通過電圧Vpassのステップアップ幅ΔVpassをベリファイ動作時のプログラム対象となるメモリセルMCのうちベリファイパスしたメモリセル数の割合(以下、「ベリファイパス率」と呼ぶ)で制御する場合の書き込みシーケンスのフローチャートである。なお、図22のフローチャートは、2ビット/セルのメモリセルMCに対する書き込みシーケンスを示している。ここで、ベリファイパス率は、ECCで救済できるビットはパスしたものと見なしてベリファイパス率を計算しても良い。
始めに、ステップS601で、Aレベルのベリファイパス率raが、ra<Rra(Rraは、例えば100%)かを判定する。ra<Rraであれば、ステップS602に処理を移し、ra≧Rraであれば、ステップS605に処理を移す。なお、ベリファイパス率は100%には限られず、Aレベルに書き込まれるメモリセルの70%がパスした時点を、Aレベルのプログラム期間と定義することもできる。以下、Bレベル、Cレベルのベリファイパス率に関しても同様である。
続くステップS602及びS603は、図6のステップS203及びS204と同様であるため説明を省略する。なお、ステップS603において、Aレベルのベリファイをパスしたメモリセルは以降のプログラム動作において書き込み禁止状態となる。
続いて、ステップS604で、ステップS603におけるベリファイ結果に基づいてAレベルのベリファイパス率raを更新する。その後、ステップS601に処理を戻す。
ステップS605で、Bレベルのベリファイパス率rbが、rb<Rrb(Rrbは、例えば100%)かを判定する。rb<Rrbであれば、ステップS606に処理を移す。一方、rb≧Rrbであれば、ステップS609に処理を移す。
続くステップS606及びS607は、図6のステップS207及びS208と同様であるため説明を省略する。
続いて、ステップS608で、ステップS607におけるベリファイ結果に基づいてBレベルのベリファイパス率rbを更新する。その後、ステップS605に処理を戻す。
ステップS609で、通過電圧Vpassが最大の通過電圧Vpsmaxに達しているかを判定する。通過電圧Vpassが最大の通過電圧Vpsmaxに達している場合、ステップS511に処理を移し、通過電圧Vpassが最大の通過電圧Vpsmaxに達していない場合、ステップS610に処理を移す。
続くステップS610、S611、S612及びS613は、図6のステップS207、S210、S211及びS214と同様であるため説明を省略する。
最後に、ステップS614で、Cレベルのベリファイパス率rcが、rc<Rrc(Rrcは、例えば100%)かを判定する。rc<Rrcであれば、書き込みシーケンスを完了する。一方、rc≧Rrcであれば、ステップS615で書き込みループ数nlが最大ループ回数(図中の“loop max”)に達したかどうか判断した上で、ステップS609に処理を戻す。
このように、A〜Cレベルまで一括に書き込む方式に対応することもできる。その結果、プログラム動作を高速化することができる。
[第5の実施形態]
第5の実施形態は、第1の実施形態の変形例である。
第1の実施形態では、書き込み/消去サイクル数に関係なく、書き込みループ数、プログラム電圧Vpgm、通過電圧Vpass或いはベリファイパス率によって通過電圧Vpassのステップアップ幅ΔVpassを切り替えていた。しかし、第1の実施形態でも述べたように、一般的に、メモリセルは書き込み/消去サイクル数が増えるにつれてプログラムし易くなる傾向にある。
そこで、本実施形態では、書き込み/消去サイクル数に応じて、通過電圧Vpassのステップアップ幅ΔVpassを切り替える判定条件を変える書き込みシーケンスについて説明する。
図23は、通過電圧Vpassのステップアップ幅ΔVpassを書き込みループに応じて切り替える書き込みシーケンスのフローチャートの一部であり、図6に示すフローチャートの開始(Start)及びステップS201間に追加される処理である。
図23の場合、始めに、ステップS251において、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きいかを判定し、書き込み/消去回数がサイクル数Rnc以下の場合、ステップS252に処理を移し、図6のステップS202で用いる基準書き込みループ数Rnl1を所定のループ数Cnl1で初期化し、図6のステップS206で用いる基準書き込みループ数Rnl2を所定のループ数Cnl2で初期化する。一方、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きい場合、ステップS253に処理を移し、基準書き込みループ数Rnl1をループ数Cnl1より大きいループ数Cnl1´で初期化し、基準書き込みループ数Rnl2をループ数Cnl2より大きいループ数Cnl2´で初期化する。
なお、この書き込み/消去サイクル数は、NANDチップ10内のROMヒューズに記憶されていても良い。この場合は、シーケンス制御回路7がROMヒューズに記憶された書き込み/消去サイクル数を読み出し、ステップS252の処理を行う。また、この書き込み/消去サイクル数は、ROMヒューズ12に記憶されていても良い。この場合はコントローラ11が書き込みコマンドをNANDチップ10への送付に前後して、書き込み/消去サイクル数の情報をNANDチップ10へ送付しても良い。
このように、書き込み/消去サイクル数の増加に伴い、通過電圧Vpassのステップアップを遅らせるようにすることで、プログラム速度が速くなったメモリセルへのアシストを弱くすることができる。これによって、書き込みシーケンス後の閾値電圧分布の広がりを抑制することができる。
図24は、通過電圧Vpassのステップアップ幅ΔVpassをプログラム電圧Vpgmに応じて切り替える書き込みシーケンスのフローチャートの一部であり、図7に示すフローチャートの開始(Start)及びステップS301間に追加される処理である。
図24の場合、始めに、ステップS351において、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きいかを判定し、書き込み/消去回数がサイクル数Rnc以下の場合、ステップS352に処理を移し、図7のステップS302で用いる基準プログラム電圧Rvpg1を所定の電圧Cvpg1で初期化し、図7のステップS306で用いる基準プログラム電圧Rvpg2を所定の電圧Cvpg2で初期化する。一方、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きい場合、ステップS353に処理を移し、基準プログラム電圧Vpgm1を電圧Rvpg1より大きい所定の電圧Vpg1´で初期化し、基準プログラム電圧Rvpg2を電圧Vpg2より大きい所定の電圧Vpg2´で初期化する。
図25は、通過電圧Vpassのステップアップ幅ΔVpassを通過電圧Vpassに応じて切り替える書き込みシーケンスのフローチャートの一部であり、図8に示すフローチャートの開始(Start)及びステップS401間に追加される処理である。
図25の場合、始めに、ステップS451において、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きいかを判定し、書き込み/消去サイクル数がサイクル数Rnc以下の場合、ステップS452に処理を移し、図8のステップS402で用いる基準通過電圧Rvpa1を所定の電圧Cvpa1で初期化し、図8のステップS406で用いる基準通過電圧Rvpa2を所定の電圧Cvpa2で初期化する。一方、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きい場合、ステップS453に処理を移し、基準通過電圧Vpga1を電圧Rvpa1より大きい所定の電圧Cvpa1´で初期化し、基準通過電圧Rvpa2を電圧Cvpa2より大きい所定の電圧Cvpa2´で初期化する。
図26は、通過電圧Vpassのステップアップ幅ΔVpassのベリファイパス率に応じて切り替える書き込みシーケンスにおいて、書き込み/消去サイクルと図9に示すフローチャートのステップS501、S505及びS515の判定条件との関係を示す具体例である。
例えば、書き込み/消去サイクル数Rncが1000回未満の場合、ステップS501の判定条件をAレベルのベリファイパス率が100%か、ステップS505の判定条件をBレベルのベリファイパス率が100%か、ステップS515の判定条件をCレベルのベリファイパス率が100%かで設定する。
書き込み/消去サイクル数Rncが1万回未満の場合、ステップS501の判定条件をBレベルのベリファイパス率が50%か、ステップS505の判定条件をBレベルのベリファイパス率が50%か、ステップS515の判定条件をCレベルのベリファイパス率が100%かで設定する。
また、書き込み/消去サイクル数Rncが1万回以上の場合、ステップS501の判定条件をBレベルのベリファイパス率が75%か、ステップS505の判定条件をBレベルのベリファイパス率が75%か、ステップS515の判定条件をCレベルのベリファイパス率が100%かで設定する。
以上、図23〜図25のいずれも、図22と同様、書き込み/消去サイクル数の増加に伴い、通過電圧Vpassのステップアップを遅らせるようにすることで、プログラム速度が速くなったメモリセルへのアシストを弱くすることができる。これによって、書き込みシーケンス後の閾値電圧分布の広がりを抑制することができる。
以上、本実施形態によれば、第1の実施形態と同様の効果を得られるばかりでなく、書き込み/消去サイクル数の増加によってプログラム特性が変化した場合であっても、適切な通過電圧Vpassのステップアップが可能となり閾値電圧分布の広がりを抑制することができる。
[その他]
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。