(57)【特許請求の範囲】
【請求項１】
複数のビット線、前記ビット線に交差する複数のワード線及びソース線、並びに、制御ゲートに前記ワード線が接続された直列接続された複数のメモリセルを含み、両端がそれぞれ前記ビット線及びソース線に接続された複数のＮＡＮＤセルユニットを有するメモリセルアレイと、
前記複数のワード線のうち選択した一の前記ワード線にプログラムに必要なプログラム電圧を印加するプログラム動作及び前記選択ワード線にベリファイに必要なベリファイ電圧を印加するベリファイ動作からなる書き込みループを、ステップ幅として第１のステップ幅を用いる第１のページ書き込み、並びに、前記ステップ幅として第２のステップ幅を用いる第２のページ書き込みによって実行するデータ書き込み部と、
前記第１のページ書き込みにおいて、前記ページに属するメモリセルのエンデュランスを判定するエンデュランス判定部と
を備え、
前記データ書き込み部は、前記第２のページ書き込みにおいて、前記エンデュランスに応じた前記第２のステップ幅のプログラム電圧を前記選択ワード線に供給する
ことを特徴とする不揮発性半導体記憶装置。
【請求項２】
データ書き込み部は、
所定の前記書き込みループである第１の書き込みループを含む複数の前記書き込みループを実行すると共に、前記第１の書き込みループ後に所望の記憶状態に達したメモリセル数を数える前記第１のページ書き込みを実行し、
その後、前記所望の記憶状態に達したメモリセル数が、所定のメモリセル数に到達したプログラム電圧に応じて、前記プログラム電圧の初期電圧を設定した上で、複数の前記書き込みループからなる前記第２のページ書き込みを実行する
ことを特徴とする請求項１記載の不揮発性半導体記憶装置。
【請求項３】
前記エンデュランス判定部は、前記データ書き込み部が設定した前記第２の書き込みステップにおけるプログラム電圧の初期電圧と、予め定めた基準電圧とを比較して前記エンデュランスを判定する
ことを特徴とする請求項２記載の不揮発性半導体記憶装置。
【請求項４】
前記基準電圧は、前記ページによって異なる
ことを特徴とする請求項３記載の不揮発性半導体記憶装置。
【請求項５】
前記メモリセルアレイ及び前記データ書き込み部は、ＮＡＮＤチップに含まれ、
前記エンデュランス判定部は、コントローラに含まれる
ことを特徴とする請求項１〜４のいずれか１項記載の不揮発性半導体記憶装置。
【請求項６】
前記データ書き込み部は、前記第２のページ書き込みの際、ベリファイスキップ期間が経過するまで前記書き込みループにおける所定の前記データに関する前記ベリファイ動作をスキップする機能を持ち、
前記ベリファイスキップ期間は、前記エンデュランス判定部によって判定されたエンデュランスに基づいて導出される
ことを特徴とする請求項１〜５のいずれか１項記載の不揮発性半導体記憶装置。
【請求項７】
前記データ書き込み部は、前記第２のページ書き込みの際の前記書き込みループのプログラム動作において、プログラム禁止期間の経過前には、所定の前記データをプログラムすべき前記メモリセルに接続された前記ビット線に対してプログラムを禁止するプログラム禁止電圧を印加し、前記プログラム禁止期間の経過後には、前記所定のデータをプログラムすべき前記メモリセルに接続された前記ビット線に対してプログラムを許可するプログラム許可電圧を印加する機能を持ち、
前記プログラム禁止期間は、前記エンデュランス判定部によって判定されたエンデュランスに基づいて導出される
ことを特徴とする請求項１〜６のいずれか１項記載の不揮発性半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、不揮発性半導体記憶装置に関する。
【背景技術】
【０００２】
電気的書き換えが可能でかつ、高集積化が可能な不揮発性半導体記憶装置として、ＮＡＮＤ型フラッシュメモリが知られている。ＮＡＮＤ型フラッシュメモリでは、複数のメモリセルを隣接するもの同士でソース／ドレイン拡散層を共有する形で直列接続して、ＮＡＮＤストリングを構成する。ＮＡＮＤストリングの両端はそれぞれ、選択ゲートトランジスタを介してビット線及びソース線に接続される。この様なＮＡＮＤストリングの構成により、ＮＯＲ型フラッシュメモリに比べて単位セル面積が小さく且つ大容量記憶が可能になる。
【０００３】
ＮＡＮＤ型フラッシュメモリのメモリセルは、半導体基板にトンネル絶縁膜を介して形成された電荷蓄積層（浮遊ゲート）とその上にゲート間絶縁膜を介して積層された制御ゲートとを有し、浮遊ゲートの電荷蓄積状態によりデータを不揮発に記憶する。例えば、浮遊ゲートに電子を注入した閾値電圧の高い状態をデータ“０”、浮遊ゲートの電子を放出させた閾値電圧の低い状態をデータ“１”として、２値データの記憶を行う。書き込まれる閾値電圧分布をさらに細分化して、４値、８値等の多値記憶を行うこともできる。  
【０００４】
このようなＮＡＮＤ型フラッシュメモリへのデータ書き込みは、通常、メモリセルの制御ゲートに対して、電荷蓄積に必要なプログラム電圧をステップアップさせながら繰り返し供給し、メモリセルの閾値電圧を所望の閾値電圧になるように徐々に遷移させることで実現する。この場合、プログラム電圧のステップ幅が大きいと、データ書き込み処理を迅速に行うことができる反面、閾値電圧分布が広くなってしまい信頼性を損なう恐れがある。逆に、プログラム電圧のステップ幅が小さいと、閾値電圧分布を狭くできるため信頼性が向上する反面、データ書き込み処理が遅くなってしまう恐れがある。したがって、メモリセルのプログラム速度に応じた適切なステップ幅を設定する必要がある。これらは、電荷蓄積層がＭＯＮＯＳ膜などの絶縁膜で構成されるチャージトラップ型の不揮発性メモリに関しても同様である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２５７７８１号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
実施形態は、適切なステップ幅のプログラム電圧を用いてデータを書き込む不揮発性半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態に係る不揮発性半導体記憶装置は、複数のビット線、前記ビット線に交差する複数のワード線及びソース線、並びに、制御ゲートに前記ワード線が接続された直列接続された複数のメモリセルを含み、両端がそれぞれ前記ビット線及びソース線に接続された複数のＮＡＮＤストリングを有するメモリセルアレイと、前記複数のワード線のうち選択した一の前記ワード線にプログラムに必要なプログラム電圧を印加するプログラム動作及び前記選択ワード線にベリファイに必要なベリファイ電圧を印加するベリファイ動作からなる書き込みループを、前記選択ワード線で選択される複数のメモリセルからなるページ単位で、データが書き込まれるまで前記プログラム電圧を所定のステップ幅で変化させながら繰り返し実行するデータ書き込み部と、前記ページに属するメモリセルのエンデュランスを判定するエンデュランス判定部とを備え、前記データ書き込み部は、前記エンデュランスに応じたステップ幅のプログラム電圧を前記選択ワード線に供給することを特徴とする。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る不揮発性半導体記憶装置のブロック図である。
【図２】本実施形態に係る不揮発性半導体記憶装置のメモリセルアレイの回路図である。
【図３】本実施形態に係る不揮発性半導体記憶装置において、１セル当たり２ビットを記憶する場合のデータ書き込み時のメモリセルの閾値電圧分布の変化を示す図である。
【図４】不揮発半導体記憶装置の選択ワード線に供給されるプログラム電圧及びベリファイ電圧の波形図である。
【図５】図４に示すプログラム電圧を選択ワード線に供給した場合の書き込みループ回数と閾値電圧分布の発生状況との関係を示す図である。
【図６】本実施形態に係る不揮発性半導体記憶装置の初期電圧調整機能によるプログラム電圧の初期電圧の調整フローを示す図である。
【図７】図６に示す初期電圧調整機能を用いた不揮発性半導体記憶装置において、選択ワード線に供給されるプログラム電圧のイメージを示す図である。
【図８】不揮発性半導体記憶装置のメモリセルの閾値電圧分布を示す図である。
【図９】本実施形態に係る不揮発性半導体記憶装置のステップ幅調整機能によるステップ幅の導出フローの例を示す図である。
【図１０】本実施形態に係る不揮発性半導体記憶装置の選択ワード線に供給されるプログラム電圧のイメージを示す図である。
【図１１】本実施形態に係る不揮発性半導体記憶装置のステップ幅調整機能によるステップ幅の導出フローの別の例を示す図である。
【図１２】ベリファイスキップ機能を用いた場合において、選択ワード線に供給されるプログラム電圧及びベリファイ電圧の波形図である。
【図１３】ベリファイスキップ機能のベリファイスキップすべき期間の変化を説明する図である。
【図１４】第２の実施形態に係る不揮発性半導体記憶装置のベリファイスキップ機能によるベリファイスキップ期間の導出フローの例を示す図である。
【図１５】本実施形態に係る不揮発性半導体記憶装置のベリファイスキップ機能によるベリファイスキップ期間の導出フローの別の例を示す図である。
【図１６】第３の実施形態に係る不揮発性半導体記憶装置のメモリセルアレイの回路図である。
【図１７Ａ】不揮発性半導体記憶装置のデータ書き込み時のビット線の様子を示す図である。
【図１７Ｂ】不揮発性半導体記憶装置のデータ書き込み時のビット線の様子を示す図である。
【図１８】本実施形態に係る不揮発性半導体記憶装置の消費電流削減機能によるプログラム禁止期間の導出フローの例を示す図である。
【図１９】本実施形態に係る不揮発性半導体記憶装置の消費電流削減機能によるプログラム禁止期間の導出フローの別の例を示す図である。
【図２０】第４の実施形態に係る不揮発性半導体記憶装置のＮＡＮＤストリングの回路図である。
【図２１】本実施形態に係る不揮発性半導体記憶装置の初期電圧調整機能に用いる基準電圧の割り付け例を示す図である。
【図２２】本実施形態に係る不揮発性半導体記憶装置のメモリセルアレイの配置例を示す図である。
【図２３】本実施形態に係る不揮発性半導体記憶装置の初期値調整機能に用いる基準電圧の割り付け例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら実施形態に係る不揮発性半導体記憶装置について説明する。
【００１０】
［第１の実施形態］
＜全体構成＞
先ず、第１の実施形態に係る不揮発性半導体記憶装置の全体構成について説明する。
【００１１】
図１は、本実施形態に係る不揮発性半導体記憶装置のブロック図である。
このＮＡＮＤ型フラッシュメモリは、ＮＡＮＤチップ１０、このＮＡＮＤチップ１０を制御するコントローラ１１及び後述するステップ調整機能で用いる情報を記憶するＲＯＭヒューズ１２を備えて構成されている。
【００１２】
ＮＡＮＤチップ１０を構成するメモリセルアレイ１は、後述するように、複数の浮遊ゲート型メモリセルＭＣをマトリクス配列して構成される。ロウデコーダ／ワード線ドライバ２ａ、カラムデコーダ２ｂ、ページバッファ３及び電圧発生回路８は、メモリセルアレイ１に対してページ単位でデータの書き込み及び読み出しを行うデータ書き込み部を構成する。ロウデコーダ／ワード線ドライバ２ａは、メモリセルアレイ１のワード線及び選択ゲート線を駆動する。ページバッファ３は、１ページ分のセンスアンプ回路とデータ保持回路を備えて、メモリセルアレイ１のページ単位のデータ読み出し及び書き込みを行う。
【００１３】
ページバッファ３の１ページ分の読み出しデータは、カラムデコーダ２ｂにより順次カラム選択されて、Ｉ／Ｏバッファ９を介して外部Ｉ／Ｏ端子に出力される。Ｉ／Ｏ端子から供給される書き込みデータは、カラムデコーダ２ｂにより選択されてページバッファ３にロードされる。ページバッファ３には１ページ分の書き込みデータがロードされる。ロウ及びカラムアドレス信号はＩ／Ｏバッファ９を介して入力され、それぞれ、ロウデコーダ２ａ及びカラムデコーダ２ｂに転送される。ロウアドレスレジスタ５ａは、消去動作では、消去ブロックアドレスを保持し、書き込みや読み出し動作ではページアドレスを保持する。カラムアドレスレジスタ５ｂには、書き込み動作開始前の書き込みデータロードのための先頭カラムアドレスや、読み出し動作のための先頭カラムアドレスが入力される。書き込みイネーブル／ＷＥや読み出しイネーブル／ＲＥが、所定の条件でトグルされるまで、カラムアドレスレジスタ５ｂは入力されたカラムアドレスを保持する。
【００１４】
ロジック制御回路６は、チップイネーブル信号／ＣＥ、コマンドイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、書き込みイネーブル信号／ＷＥ、読み出しイネーブル信号／ＲＥ等の制御信号に基づいて、コマンドやアドレスの入力、データの入出力を制御する。読み出し動作や書き込み動作はコマンドで実行される。コマンドを受けて、シーケンス制御回路７は、読み出し動作や、書き込み或いは消去のシーケンス制御を行う。電圧発生回路８は、制御回路７により制御されて、種々の動作に必要な所定の電圧を発生する。
【００１５】
コントローラ１１は、ＮＡＮＤチップ１０の現在の書込状態に適した条件でデータの書き込み及び読み出しの制御を実行する。なお、後述する読み出し制御の一部をＮＡＮＤチップ１０側で行うようにしても良いことは言うまでもない。
【００１６】
＜メモリセルアレイ＞
次に、本実施形態に係る不揮発性半導体記憶装置のメモリセルアレイ１について説明する。
【００１７】
図２は、メモリセルアレイ１の回路図である。図２の場合、６４個の直列接続されたメモリセルＭＣ０〜ＭＣ６３とその両端に接続された選択ゲートトランジスタＳ１、Ｓ２により、ＮＡＮＤストリング４が構成されている。選択ゲートトランジスタＳ１のソースは、共通ソース線ＣＥＬＳＲＣに接続され、選択ゲートトランジスタＳ２のドレインはビット線ＢＬ（ＢＬ０〜ＢＬｎ−１）に接続される。メモリセルＭＣ０〜ＭＣ６３の制御ゲートはそれぞれワード線ＷＬ（ＷＬ０〜ＷＬ６３）に接続され、選択ゲートトランジスタＳ１、Ｓ２のゲートは、選択ゲート線ＳＧＳ、ＳＧＤに接続される。
【００１８】
１つのワード線ＷＬに沿う複数のメモリセルＭＣの範囲が、一括したデータ読み出し及びデータ書き込みの単位となるページになる。また、ワード線ＷＬ方向に並ぶ複数のＮＡＮＤストリング４の範囲が、データ一括消去の単位となるセルブロックＢＬＫを構成する。図２では、ビット線ＢＬ方向にビット線ＢＬを共有する複数のセルブロックＢＬＫ０〜ＢＬＫｍ−１を配列して、セルアレイ１が構成されている。ワード線ＷＬ及び選択ゲート線ＳＧＳ、ＳＧＤは、ロウデコーダ２ａにより駆動される。各ビット線ＢＬは、ページバッファ３のセンスアンプ回路Ｓ／Ａに接続されている。
【００１９】
ここで、このようなＮＡＮＤ型フラッシュメモリのアクセス単位である「ページ」について説明する。以下の説明において、「ページ」とは、異なる２つの意味を有するので注意を要する。
【００２０】
第１は、１つのワード線に沿う一括したデータアクセス単位としての「ページ」であり、この場合、ワード線につながる全メモリセルを一括アクセスする場合（ＡＢＬ方式）と、１つおきにアクセスする場合（Ｅ／Ｏ方式）がある。Ｅ／Ｏ方式の場合、同一のワード線につながる複数のメモリセルが「偶数ページ」と「奇数ページ」とに分かれる。図２では、一例としてＡＢＬ方式の場合を示している。
【００２１】
第２は、１つのメモリセルに複数ビットを記憶する場合の記憶データの階層を示す「ページ」で、この場合、Ｌ（Ｌｏｗｅｒ）ページ、Ｍ（Ｍｉｄｄｌｅ）ページ、Ｕ（Ｕｐｐｅｒ）ページ等と呼ぶ。
【００２２】
＜データ書き込み＞
次に、本実施形態に係る不揮発性半導体記憶装置のデータ書き込みについて説明する。
【００２３】
図３は、１セル当たり２ビットを記憶する場合のデータ書き込み時のメモリセルの閾値電圧分布の変化を示す図である。
【００２４】
始めに、ステップＳ１０１において、セルブロック全体に対して一括にデータ消去を実行する。これによって、セルブロック内の全てのメモリセルＭＣの閾値電圧は、最も低いＥＲレベルになる。
【００２５】
続いて、ステップＳ１０２において、第１の書き込みステップであるＬページ書き込みを書き込みデータの下位ビットに基づいて実行する。下位ビットが“１”の場合、メモリセルの閾値電圧はＥＲレベルに維持される。下位ビットが“０”の場合、メモリセルの閾値電圧はＥＲレベルからＡレベルとＢレベルとの中間レベルであるＬＭレベルに遷移する。
【００２６】
最後に、ステップＳ１０３において、第２の書き込みステップであるＵページ書き込みを書き込みデータの上位ビットに基づいて実行する。もし、メモリセルＭＣの閾値電圧がＥＲレベルならば、上位データが“１”の場合、メモリセルの閾値電圧はＥＲレベルのままである。逆に、上位データが“０”の場合、メモリセルの閾値電圧はＡレベルに遷移する。一方、メモリセルの閾値電圧がＬＭレベルならば、上位データが“０”の場合、メモリセルの閾値電圧はＢレベルに遷移する。逆に、上位データが“１”の場合、メモリセルの閾値電圧はＣレベルまで遷移する。
【００２７】
以上のように、メモリセルに対する２ビットデータの書き込みは、２つの書き込みステップによって実現される。
【００２８】
次に、データ書き込み時に選択ワード線に供給するプログラム電圧及びベリファイ電圧について説明する。
【００２９】
図４は、データ書き込み時に選択ワード線ＷＬに供給されるプログラム電圧Ｖｐｇｍと、Ａ、Ｂ、及びＣレベルのベリファイに必要なベリファイ電圧Ｖａ、Ｖｂ、及びＶｃの波形図である。また、図５は、図４に示すプログラム電圧Ｖｐｇｍを供給した場合に遷移し得る閾値電圧を示している。
【００３０】
以下の説明において、閾値電圧をＥＲレベルに遷移させるメモリセルを「メモリセルＭＣ（ＥＲ）」と表現する。Ａ、Ｂ、Ｃレベルに遷移させるメモリセルについても同様である。
【００３１】
なお、ここでは、Ｌページ書き込みは完了しているものとし、Ｕページ書き込みから説明する。したがって、既に、メモリセルＭＣ（ＥＲ）、ＭＣ（Ａ）の閾値電圧はＥＲレベル、メモリセルＭＣ（Ｂ）、ＭＣ（Ｃ）の閾値電圧はＬＭレベルにそれぞれ遷移している。
【００３２】
１回の書き込みループは、一例として、１回のプログラム動作と１回のベリファイ動作からなる場合で説明する。
【００３３】
プログラム動作では、図４に示すように、選択ワード線に対して１つのパルス状のプログラム電圧Ｖｐｇｍが供給される。このプログラム電圧Ｖｐｇｍは、書き込みループが繰り返されるたびに、ステップアップされる。例えば、図４及び図５に示す場合、１＜Ｎｂ＜Ｎｃ＜Ｎａ´＜Ｎｂ´＜Ｎとすると、１〜Ｎａ´回目の書き込みループで供給されるプログラム電圧Ｖｐｇｍ（１）〜Ｖｐｇｍ（Ｎａ´）は、メモリセルの閾値電圧をＡレベルに遷移させ得るプログラム電圧値をもつ。Ｎｂ〜Ｎｂ´回目の書き込みループで供給されるプログラム電圧Ｖｐｇｍ（Ｎｂ）〜Ｖｐｇｍ（Ｎｂ´）は、メモリセルの閾値電圧をＢレベルに遷移させ得るプログラム電圧値をもつ。また、Ｎｃ〜Ｎ回目の書き込みループで供給されるプログラム電圧Ｎｃ〜Ｎは、メモリセルの閾値電圧をＣレベルに遷移させ得るプログラム電圧値をもつ。このようなプログラム電圧Ｖｐｇｍを供給した場合、メモリセルＭＣ（Ａ）では、１〜Ｎａ´回目の書き込みループの間に閾値電圧がＥＲレベルからＡレベルに遷移する。メモリセルＭＣ（Ｂ）では、Ｎｂ〜Ｎｂ´回目の書き込みループの間に閾値電圧がＬＭレベルからＢレベルに遷移する。また、メモリセルＭＣ（Ｃ）では、Ｎｃ〜Ｎ回目の書き込みループの間に閾値電圧がＬＭレベルからＣレベルに遷移する。その結果、Ｎ回の書き込みループによってページを構成する全てのメモリセルＭＣにデータが書き込まれる。
【００３４】
ベリファイ動作では、図４に示すように、選択ワード線に対して３つのベリファイ電圧Ｖａ、Ｖｂ、Ｖｃが順次供給される。これによって、メモリセルＭＣ（Ａ）、ＭＣ（Ｂ）、ＭＣ（Ｃ）の閾値電圧が、それぞれＡレベル、Ｂレベル、Ｃレベルに遷移したかがベリファイされる。その結果、ベリファイパスしたメモリセルについては、次以降の書き込みループにおいてプログラム動作を禁止する。
【００３５】
＜プログラム電圧の初期電圧の調整＞
図４及び図５の場合、Ｎ回の書き込みループでデータ書き込みが完了したが、プログラム速度は、ブロック毎、ワード線毎、ページ毎、及びメモリセル毎によって異なる。さらに、通常、同じページ、メモリセルであっても、書き込み／消去サイクルを重ねて行く毎に、プログラム速度が変化する。つまり、書き込み／消去サイクル数によって、プログラム電圧の初期電圧を適切にする必要がある。
【００３６】
そこで本実施形態では、各ページの書き込み特性に応じて、プログラム電圧の初期電圧を調整する（以下、この機能を「初期電圧調整機能」と呼ぶ）。
【００３７】
この初期電圧調整機能は、Ｌページ書き込みの所定の書き込みループにおいて、所定の閾値電圧に到達したメモリセル数をカウントし、所定のメモリセル数に到達したプログラム電圧が高い場合、Ｕページ書き込みのプログラム電圧の初期電圧を高めに調整し、所定のメモリセル数に到達したプログラム電圧が低い場合、Ｕページ書き込みのプログラム電圧の初期電圧を低めに調整する機能である。
【００３８】
この初期電圧調整機能によるデータ書き込み処理のフローを図６に示す。図６では、所定のメモリセル数に到達したプログラム電圧が高い場合、Ｕページ書き込みのプログラム電圧の初期電圧を高めに調整する場合を一例として示す。すなわち、Ｕページ書き込みで供給されるプログラム電圧の初期電圧Ｖｐｇｍ０（Ａ）は、最もプログラム速度が速いメモリセルにとって適切な初期電圧Ｖｐｇｍ０に初期化されているものとする。
【００３９】
始めに、Ｌページ書き込みのステップＳ１２１において、書き込みループを実行する。
【００４０】
続いて、ステップＳ１２２において、所定の閾値電圧Ｖｔｈａに到達したメモリセル数Ｎｍｃをカウントする。以上のステップＳ１２１、Ｓ１２２を、メモリセル数Ｎｍｃが予め定めたメモリセル数Ｎｍｃａに到達するまでプログラム電圧Ｖｐｇｍをステップアップしながら繰り返す（Ｓ１２３）。
【００４１】
続いて、ステップＳ１２４において、閾値電圧Ｖｔｈａに到達したメモリセル数ＮｍｃがＮｍｃａ以上になった時点におけるプログラム電圧Ｖｐｇｍと所定の基準値Ｘ１、Ｘ２（Ｘ１＞Ｘ２）とを比較する。ここで、Ｘ１≦Ｖｐｇｍであった場合、このページのプログラム速度は遅いと判定する。この場合、Ｕページ書き込みで供給するプログラム電圧の初期電圧をＶｐｇｍ０（Ａ）＝Ｖｐｇｍ０＋ｋＡ０×ΔＶｐｇｍ０に調整する（ステップＳ１２５）。ここで、ΔＶｐｇｍ０は初期電圧Ｖｐｇｍ０（Ａ）の刻み幅、ｋＡ０は自然数を示す。また、Ｘ２≦Ｖｐｇｍ＜Ｘ１であった場合、このページのプログラム速度はやや速いと判定する。この場合、初期電圧をＶｐｇｍ０（Ａ）＝Ｖｐｇｍ０＋ｋＡ１×ΔＶｐｇｍ０に調整する（ステップＳ１２６）。ここで、ｋＡ１は、ｋＡ０よりも小さい自然数である。そして、Ｖｐｇｍ＜Ｘ２であった場合、このページのプログラム速度は速いと判定する。この場合、初期電圧Ｖｐｇｍ０（Ａ）を調整する必要はない（ステップＳ１２７）。なお、ステップＳ１２２〜Ｓ１２７は、データ書き込み部によって処理される。
【００４２】
続いて、ステップＳ１２８、Ｓ１２９において、Ｌページ書き込みの残りの書き込みループを実行する。これによって、ページを構成するメモリセルＭＣの閾値電圧は、ＥＲレベル又はＬＭレベルに遷移する。
【００４３】
最後に、ステップＳ１３０において、ステップＳ１２４〜Ｓ１２７で設定された初期電圧Ｖｐｇｍ０（Ａ）を用いて、Ｕページ書き込みを行う。なお、セル間干渉抑制のため、ステップＳ１２９とステップＳ１３０の間には、別のページの書き込み動作が実行される。
【００４４】
これによって、書き込み／消去サイクルの繰り返しによって変化する書き込み特性に対応する適切な初期電圧のプログラム電圧を用いてデータを書き込みすることができる。
【００４５】
＜プログラム電圧のステップ幅の調整＞
しかし、初期電圧調整機能だけでは、以下のような問題がある。
【００４６】
図７は、初期電圧調整機能によって、プログラム電圧の初期電圧を調整した場合のプログラム電圧のイメージである。この図７は、すでに実行された書き込み／消去サイクル数が少なくエンデュランスに余裕があるメモリセル（以下、「フレッシュセル」と呼ぶ）へのデータ書き込み時のプログラム電圧と、すでに実行された書き込み／消去サイクル数が多くエンデュランスに余裕がないメモリセル（以下、「サイクルドセル」と呼ぶ）へのデータ書き込み時のプログラム電圧とを比較している。
【００４７】
フレッシュセルの場合、サイクルドセルと比較すると、書き込み特性が遅いため、初期電圧調整機能によってプログラム電圧の初期電圧は高めに調整される。その後、プログラム電圧は所定のステップ幅ΔＶｐｇｍでステップアップされながら書き込みループが繰り返される。フレッシュセルは書き込み特性が遅いため、比較的多いループ回数によってデータ書き込みが完了する。
【００４８】
一方、サイクルドセルの場合、書き込み特性が速くなるため、初期電圧調整機能によってフレッシュセルの場合に比べて初期電圧は低めに調整される。その後、プログラム電圧はフレッシュセルの場合と同じステップ幅ΔＶｐｇｍでステップアップされながら書き込みループが繰り返される。サイクルドセルは、フレッシュセルに比べて、書き込み特性が速いため、フレッシュセルの場合に比べて、少ないループ回数でデータ書き込みが完了する。
【００４９】
図８は、図７に示すように、メモリセルの書き込み特性に関わらず一定のステップ幅でデータ書き込みした場合の閾値電圧分布を示す図である。
【００５０】
フレッシュセルの場合、書き込み特性が遅いため、プログラム電圧のステップ幅が多少大きくても、ある程度精密なプログラムが可能である。そのため、図８上図に示すように、メモリセルの閾値電圧分布を比較的狭くすることができる。
【００５１】
一方、サイクルドセルの場合、書き込み特性が速いため、プログラム電圧のステップ幅を十分に小さくしないと精密なプログラムができない。そのため、図８下図に示すように、フレッシュセルに比べて、メモリセルの閾値電圧分布が広がってしまう。その結果、データ読み出し／書き込みの信頼性が損なわれてしまう点が問題となる。
【００５２】
この問題を回避するためには、プログラム電圧のステップ幅をサイクルドセルに適切な値に設定しておくと良い。こうすることで、サイクルドセルの場合は勿論のこと、フレッシュセルの場合であっても信頼性を損なうことはない。しかし、この場合、フレッシュセルに対して小さいステップ幅のプログラム電圧でプログラムすることになり、より多くの書き込みループが必要となる。その結果、データ書き込みに要する処理時間が増大してしまう。
【００５３】
そこで、本実施形態では、上述した初期電圧調整機能の他に、メモリセルのエンデュランスに応じてプログラム電圧のステップ幅を調整するステップ幅調整機能を備える。
【００５４】
このステップ幅調整機能は、初期電圧調整機能で得られるプログラム電圧の初期電圧と、ＲＯＭヒューズ１２等に記憶されている基準電圧とを比較し、両者の差に応じてプログラム電圧のステップ幅を調整するものである。なお、ステップ調整機能は、主にエンデュランス判定部で処理される。このエンデュランス判定部は、コントローラ１１であっても良いし、ＮＡＮＤチップ１０内に設けても良い。また、エンデュランス判定方法としては、初期電圧調整機能で得られるプログラム電圧と基準電圧とを比較する以外に、各ブロックへの書き込み/消去回数および基準回数をコントローラ１１ないしＮＡＮＤチップ１０内で記憶し、両者の回数を比較することで行っても同様の効果が得られる。本実施例では、前者のエンデュランス判定方法である、初期電圧調整機能で得られるプログラム電圧と基準電圧を比較する方法を一例として示す。
【００５５】
図９は、ステップ幅調整機能によるステップ幅の導出フローの例である。なお、プログラム電圧のステップ幅はΔＶｐｇｍ＝Ｍ×ΔＶ（例えば、Ｍ＝１〜７の整数、ΔＶ＝０．１Ｖ、０．１２５Ｖ、０．１５Ｖ、０．１７５Ｖ等である）で与えられるものとする。
【００５６】
始めに、ステップＳ１５１において、初期電圧調整機能で導出した調整後の初期電圧Ｖｐｇｍ０（Ａ）と、予め定めた基準電圧Ｖｐｇｍ０（Ｒ）との差分Δ１を算出する。
【００５７】
続いて、ステップＳ１５２において、差分Δ１と所定の基準値Ｘ１とを比較する。ここで、Δ１＜Ｘ１の場合、メモリセルのプログラム速度は遅いと考えられることから、メモリセルはエンデュランスに十分余裕があるフレッシュセルであると判定する。この場合、ステップ幅をΔＶｐｇｍ＝Ｍ０×ΔＶ０にする（ステップＳ１５３）。ここで、Ｍ０、ΔＶ０は、それぞれ上記Ｍ、ΔＶが取り得るいずれかの値である。なお、ステップ幅をΔＶｐｇｍ＝Ｍ０×ΔＶ０で初期化しておくことで、ステップＳ１５３の処理は省略できる。
【００５８】
一方、Δ１≧Ｘ１の場合、処理はステップＳ１５４に遷移する。
ステップＳ１５４において、差分Δ１と基準値Ｘ１よりも大きい所定の基準値Ｘ２とを比較する。ここで、Δ１＜Ｘ２、つまりＸ１≦Δ１＜Ｘ２の場合、メモリセルのプログラム速度はやや速くなっていると考えられることから、メモリセルのエンデュランスはやや損なわれていると判定する。この場合、ステップ幅をＭ０×ΔＶ０よりも小さいΔＶｐｇｍ＝Ｍ１×ΔＶ１にする（ステップＳ１５５）。ここで、Ｍ０、ΔＶ０は、それぞれ上記Ｍ、ΔＶが取り得るいずれかの値である。
【００５９】
一方、Δ１≧Ｘ２の場合、メモリセルのプログラム速度は速くなっていると考えられることから、メモリセルはエンデュランスに余裕がないサイクルドセルであると判定する。この場合、ステップ幅をＭ１×ΔＶ１よりも小さいΔＶｐｇｍ＝Ｍ２×ΔＶ２にする（ステップＳ１５６）。ここで、Ｍ０、ΔＶ０は、それぞれ上記Ｍ、ΔＶが取り得るいずれかの値である。
【００６０】
図１０は、ステップ幅調整機能を用いた場合のプログラム電圧のイメージである。比較例として、図７と同様、ステップ幅調整機能を用いない場合のイメージについても表わしている。
【００６１】
図１０に示す通り、ステップ幅調整機能を用いた場合、サイクルドセルの場合のステップ幅ΔＶｐｇｍは、フレッシュセルの場合のステップ幅ΔＶｐｇｍ＝Ｍ０×ΔＶ０よりも小さいＭ２×ΔＶ２に調整される。したがって、プログラム速度が速いサイクルドセルの場合であっても、ステップ幅ΔＶｐｇｍを調整しない場合に比べ、精密なプログラムができる。その結果、サイクルドセルの閾値電圧分布の広がりを抑制することができ、データ書き込みの信頼性を向上させることができる。なお、ステップ幅ΔＶｐｇｍはより小さくすることが望ましいが、その分、データ書き込みに要する書き込みループ回数が増大してしまう。そのため、図１０に示すように、書き込みループ回数が、フレッシュセルのデータ書き込みに要する書き込みループ回数を超えない範囲においてステップ幅ΔＶｐｇｍを小さくすることが好ましい。この場合、データ書き込みに要する処理時間の増大をある程度抑制することができる。
【００６２】
図１１は、ステップ幅調整機能によるステップ幅の導出フローの別の例である。このフローは、ステップＳ１５１が新たなステップＳ１５１´に変更されている点を除き、図９に示す例と同じである。
【００６３】
図９に示す初期電圧調整機能による調整後のプログラム電圧の初期電圧Ｖｐｇｍ０（Ａ）と基準電圧Ｖｐｇｍ０（Ｒ）とは、書き込みループ回数を用いてそれぞれ以下のように表わすことができる。つまり、初期電圧調整機能による調整前のプログラム電圧の初期電圧をＶｐｇｍ０、プログラム電圧の刻み幅をΔＶｐｇｍ０とすると、調整後の初期電圧は、Ｖｐｇｍ０（Ａ）＝Ｖｐｇｍ０＋（ｋＡ−１）×ΔＶｐｇｍ０となる。同様に、基準電圧は、Ｖｐｇｍ０（Ｒ）＝Ｖｐｇｍ０＋（ｋＲ−１）×ΔＶｐｇｍ０となる。ここで、ｋＡ及びｋＲは自然数である。以上の等式から分かるように、調整後の初期電圧Ｖｐｇｍ０（Ａ）及び基準電圧Ｖｐｇｍ０（Ｒ）は、それぞれ等差数列で算出されることが分かる。
【００６４】
そこで、図１１に示す導出フローでは、ステップＳ１５１´において、差分をΔ１＝ｋＲ−ｋＡで算出する。このように、差分Δ１を書き込みループ回数差に相当する、プログラム電圧の刻み幅の個数で算出することで、図９に示す導出フローよりも、簡単な論理回路で実現することができる。
【００６５】
以上、本実施形態によれば、フレッシュセルの場合の処理時間を超えない程度で、サイクルドセルの閾値電圧分布の広がりを抑制した信頼性の高いデータ書き込みが可能になる。
【００６６】
なお、本実施形態に係る不揮発性半導体記憶装置に対し、後述する第２の実施形態と同様のベリファイスキップ機能、第３の実施形態と同様の消費電流削減機能の両方又は一方の機能を追加することもできる。
【００６７】
［第２の実施形態］
第２の実施形態に係る不揮発性半導体記憶装置は、第１の実施形態と同様の初期電圧調整機能の他、余計なベリファイ動作をスキップするベリファイスキップ機能を備えている。
【００６８】
図１２は、本実施形態に係る不揮発性半導体記憶装置の選択ワード線に供給するプログラム電圧及びベリファイ電圧の様子である。なお、プログラム電圧Ｖｐｇｍ（１）〜Ｖｐｇｍ（Ｎ）については図４と同様である。また、これらプログラム電圧Ｖｐｇｍ（１）〜Ｖｐｇｍ（Ｎ）の供給によって遷移し得るメモリセルの閾値電圧については図５と同様である。
【００６９】
図５に示す通り、プログラム電圧Ｖｐｇｍ（１）〜Ｖｐｇｍ（Ｎｂ−１）は、メモリセルの閾値電圧をＢ、Ｃレベルに遷移させるには不十分な電圧である。したがって、１〜Ｎｂ−１回目の書き込みループでは、Ｂ、Ｃレベルに対するベリファイは無駄になる。そこで、本実施形態では、図１２に示すように、１〜Ｎｂ−１回目の書き込みループでは、Ａレベルに対するベリファイのみ実行する。同様に、Ｎｂ〜Ｎｃ−１回目の書き込みループでは、メモリセルの閾値電圧がＣレベルに遷移し得ないため、Ａ、Ｂレベルに対するベリファイのみ実行する。
【００７０】
このように余計なベリファイを省略させることで、データ書き込みの処理時間を短縮させることができる。
【００７１】
しかし、一律に特定の書き込みループでベリファイをスキップさせた場合、以下のような問題が生じる。
【００７２】
上述のように、通常、メモリセルはエンデュランスによって書き込み特性が異なり、フレッシュセルの場合、書き込み速度が遅く、サイクルドセルの場合、書き込み速度が速い。そのため、ベリファイスキップすべき書き込みループは、フレッシュセルとサイクルドセルとで図１３のように異なる。
【００７３】
つまり、フレッシュセルの場合、図１３上図に示すように、１〜Ｎｂ−１回目の書き込みループでは、メモリセルの閾値電圧は、Ｂ、Ｃレベルに遷移し得ないため、その間はＡレベルに対するベリファイのみ実行すれば良い。同様に、１〜Ｎｃ１−１回目の書き込みループでは、メモリセルの閾値電圧は、Ｃレベルに遷移し得ないため、その間はＡ、Ｂレベルに対するベリファイのみを実行すれば良い。
【００７４】
一方、サイクルドセルの場合、図１３下図に示すように、１〜Ｎｂ２−１（Ｎｂ２＜Ｎｂ１）回目の書き込みループでは、メモリセルの閾値電圧はＢ、Ｃレベルに遷移し得ないため、その間はＡレベルに対するベリファイのみ実行すれば良い。同様に、１〜Ｎｃ２−１（Ｎｃ２＜Ｎｃ１）回目の書き込みループでは、メモリセルの閾値電圧はＣレベルに遷移し得ないため、その間はＢ、Ｃレベルに対するベリファイのみ実行すれば良い。つまり、フレッシュセルの場合と比較して、Ｂ、Ｃレベルのベリファイスキップ期間は、それぞれＮｂ１−Ｎｂ２回分、Ｎｃ１−Ｎｃ２回分だけ短くする必要がある。
【００７５】
この場合、ベリファイスキップ期間を、サイクルドセルに適切な設定にしておくと良い。これによって、サイクルドセルの場合は勿論のこと、フレッシュセルの場合であっても必要なベリファイが実行されることになる。しかし、フレッシュセルに対して短いベリファイスキップ期間を設定した場合、それだけ余分なベリファイが実行されることになり、十分な効果を得ることができなくなる。
【００７６】
そこで、本実施形態では、メモリセルのエンデュランスに応じてベリファイスキップ期間を調整するベリファイスキップ機能を備える。
【００７７】
このベリファイスキップ機能は、初期電圧調整機能で得られるプログラム電圧の初期電圧と、ＲＯＭヒューズ１２等に記憶されている基準電圧とを比較し、両者の差に応じてベリファイスキップ期間を調整できる。なお、ベリファイスキップ機能は、主にエンデュランス判定部で処理される。このエンデュランス判定部は、コントローラ１１であっても良いし、ＮＡＮＤチップ１０内に設けても良い。また、エンデュランス判定方法としては、初期電圧調整機能で得られるプログラム電圧と基準電圧とを比較する以外に、各ブロックへの書き込み/消去回数および基準回数をコントローラ１１ないしＮＡＮＤチップ１０内で記憶し、両者の回数を比較することで行っても同様の効果が得られる。本実施例では、前者のエンデュランス判定方法である、初期電圧調整機能で得られるプログラム電圧と基準電圧を比較する方法を一例として示す。
【００７８】
図１４は、ベリファイスキップ機能によるベリファイスキップ期間の導出フローの例である。なお、Ａレベルのベリファイスキップ期間ＶＳＬ（Ａ）、Ｂレベルのベリファイスキップ期間ＶＳＬ（Ｂ）、及びＣレベルのベリファイスキップ期間ＶＳＬ（Ｃ）は、予めサイクルドセルの場合に適切なベリファイスキップ期間に初期化されているものとする。
【００７９】
始めに、ステップＳ２０１において、図９のステップＳ１５１と同様に差分Δ１を算出する。
【００８０】
続いて、ステップＳ２０２において、差分Δ１と所定の基準値Ｘ１とを比較する。ここで、Δ１＜Ｘ１の場合、メモリセルはエンデュランスに十分余裕があるフレッシュセルであると判定する。この場合、Ａレベルに対するベリファイスキップ期間ＶＳＬ（Ａ）にＡ０（Ａ０は自然数）を加算する。同様に、Ｂレベルに対するベリファイスキップ期間ＶＳＬ（Ｂ）にＢ０（Ｂ０は自然数）を加算し、Ｃレベルに対するベリファイスキップ期間ＶＳＬ（Ｃ）にＣ０（Ｃ０は自然数）を加算する（ステップＳ２０３）。
【００８１】
一方、Δ１≧Ｘ１の場合、処理はステップＳ２０４に遷移する。
ステップＳ２０４において、差分Δ１と基準値Ｘ１よりも大きい所定の基準値Ｘ２とを比較する。ここで、Δ１＜Ｘ２、つまりＸ１≦Δ１＜Ｘ２の場合、メモリセルのエンデュランスはやや損なわれていると判定する。この場合、Ａレベルに対するベリファイスキップ期間ＶＳＬ（Ａ）にＡ１（Ａ１はＡ０より大きい自然数）を加算する。同様に、Ｂレベルに対するベリファイスキップ期間ＶＳＬ（Ｂ）にＢ１（Ｂ１はＢ０より大きい自然数）を加算し、Ｃレベルに対するベリファイスキップ期間ＶＳＬ（Ｃ）にＣ１（Ｃ１はＣ０よりも大きい自然数）を加算する（ステップＳ２０５）。
【００８２】
一方、Δ１≧Ｘ２の場合、メモリセルはエンデュランスに余裕がないサイクルドセルであると判定する。この場合、Ａレベルに対するベリファイスキップ期間ＶＳＬ（Ａ）、Ｂレベルに対するベリファイスキップ期間ＶＳＬ（Ｂ）、Ｃレベルに対するベリファイスキップ期間ＶＳＬ（Ｃ）は既にサイクルドセルに適切な値となっているため調整しない（ステップＳ２０６）。
【００８３】
以上、図１４に示すベリファイスキップ期間の導出によって、図１３に示すような、メモリセルのエンデュランスに応じた適切なベリファイスキップを実現することができる。
【００８４】
図１５は、ベリファイスキップ機能によるベリファイスキップ期間の導出フローの別の例である。
【００８５】
このフローでは、始めに、ステップＳ２０１´において、図１１に示すステップＳ１５１´と同様、差分をΔ１＝ｋＲ−ｋＡで算出している。このように、差分Δ１を書き込みループ回数差に相当する、プログラム電圧の刻み幅の個数で算出するため、図１４に示す導出フローよりも、簡単な論理回路で実現することができる。
【００８６】
その他のステップについては、図１４に示すフローと同様であるため省略する。
【００８７】
以上、本実施形態によれば、余計なベリファイをスキップしない場合に比べて、データ書き込みの処理時間を短縮できるばかりでなく、メモリセルの書き込み特性に応じた適切なベリファイスキップ期間を導出するため、ベリファイスキップ期間が一定である場合よりも、よりデータ書き込み時間の短縮を図ることができる。
【００８８】
なお、本実施形態に係る不揮発性半導体記憶装置に対し、第１の実施形態と同様のステップ幅調整機能、後述する第３の実施形態と同様の消費電流削減機能の両方又は一方の機能を追加することもできる。
【００８９】
［第３の実施形態］
第３の実施形態に係る不揮発性半導体記憶装置は、第１の実施形態と同様の初期電圧調整機能の他、データ書き込み時の余計な消費電流を削減する消費電流削減機能を備えている。
【００９０】
先ず、消費電流削減機能を説明する前に、その前提となる本不揮発性半導体記憶装置のメモリセルアレイ１とその周辺の具体的構成について図１６を用いて説明する。
【００９１】
本実施形態の場合、図１６に示すように、偶数番目のビット線ＢＬｅ（ｅは偶数）及びセンスアンプ回路Ｓ／Ａ間に設けられたビット線選択トランジスタＢＬＴｅと、奇数番目のビット線ＢＬｏ（ｏは奇数）及びセンスアンプ回路Ｓ／Ａ間に設けられたビット線選択トランジスタＢＬＴｏを備えている。
【００９２】
次に、本不揮発性半導体記憶装置のデータ書き込み方式について説明する。
不揮発性半導体記憶装置のデータ書き込みは、２つの方式に大別することができる。１つは、１本の選択ワード線に沿った全てのメモリセルに対し同時にデータ書き込みを実行するＡＢＬ方式である。
【００９３】
もう１つの方式は、図１７Ａに示すように、１本の選択ワード線に沿ったメモリセルＭＣのうち、奇数番目のメモリセル、又は偶数番目のメモリセルのいずれか一方のみを書き込み対象として同時にデータ書き込みを実行し、その間、他方はデータ書き込みを禁止するＥ／Ｏ方式である。例えば、奇数番目のメモリセルを選択メモリセルにする場合には、奇数番目のビット線ＢＬｏには、書き込みデータに応じた電圧（Ｖｓｓ、又はＶｄｄ）を供給する一方、偶数番目のビット線ＢＬｅには、全て電源電圧Ｖｄｄを供給し、データ書き込みを禁止する。逆に、偶数番目のメモリセルを選択メモリセルにする場合には、偶数番目のビット線ＢＬｅには、書き込みデータに応じた電圧（Ｖｓｓ又はＶｄｄ）を供給する一方、奇数番目のビット線ＢＬｏには、全て電源電圧Ｖｄｄを供給し、書き込みを禁止する。
【００９４】
このＥ／Ｏ方式の場合、選択メモリセルが位置するチャネルに隣接するチャネルには、常に電圧Ｖｄｄ程度の電圧が与えられる。したがって、ＡＢＬ方式に比べ、隣接チャネルとの容量結合の影響により、選択メモリセルへのプログラミング条件のばらつきを抑制することができる。
【００９５】
しかし、Ｅ／Ｏ方式においても、選択ビット線ＢＬ（例えば、奇数番目のビット線ＢＬｏ）において、プログラムのための電圧Ｖｓｓが供給されるビット線ＢＬの数が多くなると、隣接ビット線ＢＬ間の電位差が大きい箇所が多くなるため、非選択ビット線ＢＬ（例えば、偶数番目のビット線ＢＬｅ）を電圧Ｖｄｄに充電する際に大きな消費電流を必要とし、消費電力が増大するという問題が生じる（図１７Ｂ参照）。したがって、消費電力の抑制のためには、選択ビット線ＢＬにおいても、できるだけ電圧Ｖｄｄを供給することが望ましい。ＡＢＬ方式の場合でも、書き込みデータがランダムである場合は、隣接するセルの書き込みデータが異なっている確率が高いため、隣接ビット線ＢＬ間の電位差が大きい箇所が多くなりやすくなる。したがって、消費電力の抑制のためには、選択ビット線ＢＬにおいても、できるだけ電圧Ｖｄｄを供給することが望ましい。
【００９６】
ここで、図４及び図５に示すプログラム電圧及びベリファイ電圧によってデータ書き込みを行う場合について考える。この場合、図５に示す通り、プログラム電圧Ｖｐｇｍ（１）〜Ｖｐｇｍ（Ｎｂ−１）は、メモリセルの閾値電圧をＢ、Ｃレベルに遷移させるには不十分な電圧である。したがって、１〜Ｎｂ−１回目の書き込みループでは、メモリセルＭＣ（Ａ）に接続された選択ビット線ＢＬに対しプログラム許可電圧Ｖｓｓを供給する一方、メモリセルＭＣ（Ｂ）、ＭＣ（Ｃ）に接続された選択ビット線ＢＬに対しプログラム禁止電圧Ｖｄｄを供給しプログラムを禁止する。同様に、Ｎｂ〜Ｎｃ−１回目の書き込みループでは、メモリセルの閾値電圧がＣレベルに遷移し得ないため、メモリセルＭＣ（Ｃ）に接続された選択ビット線ＢＬに対しプログラム禁止電圧Ｖｄｄを供給しプログラムを禁止する。
【００９７】
ここで、プログラムを禁止すべき期間は、概略、ベリファイをスキップすべき期間と同程度である。したがって、一律に特定の書き込みループでプログラムを禁止した場合、第２の実施形態で説明した問題と同様の問題が生じる。つまり、メモリセルのエンデュランスによって、プログラムを禁止すべき期間が異なるため、プログラム禁止期間をサイクルドセルに適切な設定にしていた場合、フレッシュセルに対するデータ書き込み時の消費電流の削減効率が低下してしまう。
【００９８】
そこで、本実施形態では、メモリセルのエンデュランスに応じてプログラム禁止期間を調整する消費電流削減機能を備える。
【００９９】
この消費電流削減機能は、初期電圧調整機能で得られるプログラム電圧の初期電圧と、ＲＯＭヒューズ１２等に記憶されている基準電圧とを比較し、両者の差に応じてプログラム禁止期間を調整できる。なお、プログラム禁止期間調整機能は、主にエンデュランス判定部で処理される。このエンデュランス判定部は、コントローラ１１であっても良いし、ＮＡＮＤチップ１０内に設けても良い。また、エンデュランス判定方法としては、初期電圧調整機能で得られるプログラム電圧と基準電圧とを比較する以外に、各ブロックへの書き込み/消去回数および基準回数をコントローラ１１ないしＮＡＮＤチップ１０内で記憶し、両者の回数を比較することで行っても同様の効果が得られる。本実施例では、前者のエンデュランス判定方法である、初期電圧調整機能で得られるプログラム電圧と基準電圧を比較する方法を一例として示す。
【０１００】
図１８は、消費電流削減機能によるプログラム禁止期間の導出フローの例である。なお、Ａレベルに遷移させるメモリセルＭＣ（Ａ）に対するプログラム禁止期間ＰＩＬ（Ａ）、Ｂレベルに遷移させるメモリセルＭＣ（Ｂ）に対するプログラム禁止期間ＰＩＬ（Ｂ）、及びＣレベルに遷移させるメモリセルＭＣ（Ｃ）に対するプログラム禁止期間ＰＩＬ（Ｃ）は、予めサイクルドセルの場合に適切なプログラム禁止期間に初期化されているものとする。
【０１０１】
始めに、ステップＳ３０１において、図９のステップＳ１５１と同様に差分Δ１を算出する。
【０１０２】
続いて、ステップＳ３０２において、差分Δ１と所定の基準値Ｘ１とを比較する。ここで、Δ１＜Ｘ１の場合、メモリセルはエンデュランスに十分余裕があるフレッシュセルであると判定する。この場合、メモリセルＭＣ（Ａ）に対するプログラム期間ＰＩＬ（Ａ）にＡ０（Ａ０は自然数）を加算する。同様に、メモリセルＭＣ（Ｂ）に対するプログラム禁止期間ＰＩＬ（Ｂ）にＢ０（Ｂ０は自然数）を加算し、メモリセルＭＣ（Ｃ）に対するプログラム禁止期間ＰＩＬ（Ｃ）にＣ０（Ｃ０は自然数）を加算する（ステップＳ３０３）。
【０１０３】
一方、Δ１≧Ｘ１の場合、処理はステップＳ３０４に遷移する。
ステップＳ３０４において、差分Δ１と基準値Ｘ１よりも大きい所定の基準値Ｘ２とを比較する。ここで、Δ１＜Ｘ２、つまりＸ１≦Δ１＜Ｘ２の場合、メモリセルのエンデュランスはやや損なわれていると判定する。この場合、メモリセルＭＣ（Ａ）に対するプログラム禁止期間ＰＩＬ（Ａ）にＡ１（Ａ１はＡ０より大きい自然数）を加算する。同様に、メモリセルＭＣ（Ｂ）に対するプログラム禁止期間ＰＩＬ（Ｂ）にＢ１（Ｂ１はＢ０より大きい自然数）を加算し、メモリセルＭＣ（Ｃ）に対するプログラム禁止期間ＰＩＬ（Ｃ）にＣ１（Ｃ１はＣ０よりも大きい自然数）を加算する（ステップＳ３０５）。
【０１０４】
一方、Δ１≧Ｘ２の場合、メモリセルはエンデュランスに余裕がないサイクルドセルであると判定する。この場合、メモリセルＭＣ（Ａ）に対するプログラム禁止期間ＰＩＬ（Ａ）、メモリセルＭＣ（Ｂ）に対するプログラム禁止期間ＰＩＬ（Ｂ）、メモリセルＭＣ（Ｃ）に対するプログラム禁止期間ＰＩＬ（Ｃ）は既にサイクルドセルに適切な値となっているため調整しない（ステップＳ３０６）。
【０１０５】
以上、図１８に示すプログラム禁止期間の導出によって、メモリセルのエンデュランスに応じた効果的な消費電流の削減を実現することができる。
【０１０６】
図１９は、消費電流削減機能によるプログラム禁止期間の導出フローの別の例である。
【０１０７】
このフローでは、始めに、ステップＳ３０１´において、図１１に示すステップＳ１５１´と同様、差分をΔ１＝ｋＲ−ｋＡで算出している。このように、書き込みループ回数差に相当する、差分Δ１をプログラム電圧の刻み幅の個数で算出するため、図１８に示す導出フローよりも、簡単な論理回路で実現することができる。
その他のステップについては、図１８に示すフローと同様であるため省略する。
【０１０８】
以上、本実施形態によれば、選択ビット線に対し常にプログラム許可電圧Ｖｓｓを供給するＥ／Ｏ方式の不揮発性半導体記憶装置よりもデータ書き込み時の消費電流を削減することができるばかりでなく、プログラム禁止期間をメモリセルの書き込み特性に応じて適切に調整するため、プログラム禁止期間が一定である場合よりも、より消費電流の削減効率を向上させることができる。
【０１０９】
なお、本実施形態に係る不揮発性半導体記憶装置に対し、第１の実施形態と同様のステップ幅調整機能、第２の実施形態と同様のベリファイスキップ機能の両方又は一方の機能を追加することもできる。特に、ベリファイスキップ機能を追加する場合、図１８及び図１９に示したフローのよって導出されたプログラム禁止期間ＰＩＬ（Ａ）、ＰＩＬ（Ｂ）、ＰＩＬ（Ｃ）と、図１４及び図１５に示したフローによって導出されたベリファイスキップ期間ＶＳＬ（Ａ）、ＶＳＬ（Ｂ）、ＶＳＬ（Ｃ）とを共通にすることもできる。
【０１１０】
［第４の実施形態］
第１の実施形態では、基準電圧Ｖｐｇｍ０（Ｒ）が１つであった。しかし、メモリセルやページの書き込み特性は、メモリセルアレイ１における位置によって異なってくる。
【０１１１】
例えば、図２のメモリセルアレイ１の場合、ＮＡＮＤストリング４の両端に近いワード線ＷＬ０やＷＬ６３は、他のワード線ＷＬ１〜ＷＬ６２とは異なる書き込み特性を有する場合がある。更には、共通ソース線ＣＥＬＳＲＣに近いワード線ＷＬ０と、センスアンプ回路Ｓ／Ａに近いワード線ＷＬ６３でも書き込み特性は異なる。また、ワード線ＷＬ１〜ＷＬ６２についても奇数番目、偶数番目のいずれのワード線ＷＬであるかによっても書き込み特性にばらつきが生じ得る。
【０１１２】
これは、図２０に示すＮＡＮＤストリング４´であっても例外ではない。このＮＡＮＤストリング４´は、メモリセルＭＣ０及び選択ゲートトランジスタＳ１間にダミーワード線ＷＬＤＳで制御されるダミーセルＤＣ１と、メモリセルＭＣ６３及び選択ゲートトランジスタＳ２間にダミーワード線ＷＬＤＤで制御されるダミーセルＤＣ２とを設けたものである。このように構成することで、両端のメモリセルＭＣ０、ＭＣ６３と、その他のメモリセルＭＣ１〜ＭＣ６２との書き込み特性等のばらつきは軽減されるが、それでも完全に取り除くことはできない。
【０１１３】
そこで、第４の実施形態では、第１の実施形態と同様の初期電圧設定機能及びステップ幅調整機能を備えた上で、更に、ステップ幅調整機能で用いる基準電圧Ｖｐｇｍ０（Ｒ）を複数有する不揮発性半導体記憶装置について説明する。
【０１１４】
図２１は、ワード線ＷＬの位置によって複数の基準電圧Ｖｐｇｍ０（Ｒ）を設けた例である。
【０１１５】
この例では、ワード線ＷＬ０〜２ｋ−１（ｋは自然数であり、図２、図２０の場合ｋ＝３２となる）を、共通ソース線ＣＥＬＳＲＣに最も近いワード線ＷＬ０、奇数番目のワード線ＷＬ２ｍ−１（ｍ＝１〜ｋ−１）、偶数番目のワード線ＷＬ２ｍ、センスアンプ回路Ｓ／Ａに最も近いワード線ＷＬ２ｋ−１の４つのグループに分けている。そして、データ書き込みをするページを選択するワード線ＷＬが、ワード線ＷＬ０、ＷＬ２ｍ−１、ＷＬ２ｍ、ＷＬ２ｋ−１かによって、それぞれ異なる基準電圧Ｖｐｇｍ０（Ｒ，０）、Ｖｐｇｍ０（Ｒ，２ｍ−１）、Ｖｐｇｍ０（Ｒ，２ｍ）、Ｖｐｇｍ０（Ｒ，２ｋ−１）を用いるようにする。これら基準電圧Ｖｐｇｍ０（Ｒ）をワード線ＷＬの書き込み特性に合わせて適切に設定しておくことで、第１の実施形態の場合に比べ、より精密なプログラムが可能となり、データ書き込みの信頼性を向上させることができる。
【０１１６】
図２２及び図２３は、本実施形態の別の例である。
この例では、メモリセルアレイを、ビット線方向に上部ブロック（Ｔｏｐ）、中間ブロック（Ｍｉｄｄｌｅ）、下部ブロック（Ｂｏｔｔｏｍ）の３つのブロックに大別し、更に、各ブロックを、図２０及び図２１の例と同様に、ワード線ＷＬの位置によって４つのグループに分けた上で、ブロック毎に各エリアに適切な基準電圧Ｖｐｇｍ０（Ｒ，ｇ，ｂ）（ｇはワード線ＷＬの位置で決まる０、２ｍ−１、２ｍ、２ｋ−１のいずれかであり、ｂはブロックで決まるＴ（上部ブロック）、Ｍ（中間ブロック）、Ｂ（下部ブロック）のいずれかである）を設定しておく。
【０１１７】
この例では、ブロックによって異なる書き込み特性を考慮し、ブロック毎に個別に４つの基準電圧が設定できるため、図２１の例に比べ、より精密なプログラムが可能となり、データ書き込みの信頼性を向上させることができる。
【０１１８】
なお、上記の例は、第１の実施形態のみならず、第２及び第３の実施形態であっても同様に適用することができる。この場合、ベリファイスキップ機能及び消費電流削減機能の効果を更に向上させることができる。
【０１１９】
［その他］
以上、発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加等が可能である。
【０１２０】
上記第１〜第４の実施形態の説明では、１セル当たり２ビットを記憶するメモリセルに対し、２つの書き込みステップでデータ書き込みをする不揮発性半導体記憶装置を例に説明したが、上記実施形態はいずれも、１セル当たりの記憶ビット数に関わらず、複数の書き込みステップでデータ書き込みをする不揮発性半導体記憶装置であれば適用することができる。
【０１２１】
また、上記実施形態では、プログラム速度の違いに着目してメモリセルのエンデュランスを判定していたが、書き込み／消去サイクル数によってメモリセルのエンデュランスを判定することもできる。この場合、書き込み／消去サイクル数をカウントするためのカウンタを別に設ければ良い。
【符号の説明】
【０１２２】
１・・・メモリセルアレイ、２ａ・・・ロウデコーダ／ワード線ドライバ、２ｂ・・・カラムデコーダ、３・・・ページバッファ、４、４´・・・ＮＡＮＤストリング、５ａ・・・ロウアドレスレジスタ、５ｂ・・・カラムアドレスレジスタ、６・・・ロジック制御回路、７・・・シーケンス制御回路、８・・・電圧発生回路、９・・・Ｉ／Ｏバッファ、１１・・・コントローラ、１２・・・ＲＯＭヒューズ。
【図１８】
0005566797.tif 000002
【図１９】
0005566797.tif 000003
【図１】
0005566797.tif 000004
【図２】
0005566797.tif 000005
【図３】
0005566797.tif 000006
【図４】
0005566797.tif 000007
【図５】
0005566797.tif 000008
【図６】
0005566797.tif 000009
【図７】
0005566797.tif 000010
【図８】
0005566797.tif 000011
【図９】
0005566797.tif 000012
【図１０】
0005566797.tif 000013
【図１１】
0005566797.tif 000014
【図１２】
0005566797.tif 000015
【図１３】
0005566797.tif 000016
【図１４】
0005566797.tif 000017
【図１５】
0005566797.tif 000018
【図１６】
0005566797.tif 000019
【図１７Ａ】
0005566797.tif 000020
【図１７Ｂ】
0005566797.tif 000021
【図２０】
0005566797.tif 000022
【図２１】
0005566797.tif 000023
【図２２】
0005566797.tif 000024
【図２３】
0005566797.tif 000025