(57)【特許請求の範囲】
【請求項１】
複数のワード線と、
複数のビット線と、
前記ワード線と前記ビット線との交点に対応して設けられた複数のメモリセルと、
前記複数のワード線のうち選択ワード線に電圧を印加するワード線ドライバと、
前記メモリセルのデータを検出するセンスアンプ回路と、
前記ワード線ドライバおよび前記センスアンプ回路を制御するコントローラとを備え、
前記選択ワード線に接続された選択メモリセルにデータを書き込む書込みシーケンスは、前記ワード線ドライバにより前記選択ワード線へ書込み電圧を印加する書込み動作と前記センスアンプ回路により前記選択メモリセルのデータを検出するベリファイ動作とを有する複数の書込みループを含み、
前記コントローラは、第１書込みシーケンスにおいて、前記選択ワード線に接続された選択メモリセルの閾値電圧が第１レベルに達した後、前記ベリファイ動作を実行せずに、該選択メモリセルに書き込む書込みデータに応じた所定回数だけ前記書込み動作を実行し、次に、第２書込みシーケンスにおいて、前記書込みデータの閾値電圧レベルのそれぞれに対応したベリファイレベルを用いて前記ベリファイ動作を行う、半導体記憶装置。
【請求項２】
前記所定回数は、前記書込みデータの閾値電圧レベルのそれぞれに基づいて設定されており、
該閾値電圧レベルと該閾値電圧レベルのそれぞれに対応する前記所定回数との対応関係を格納する第１記憶部をさらに備えた、請求項１に記載の半導体記憶装置。
【請求項３】
前記選択メモリセルのそれぞれに対応する前記所定回数を格納する第２記憶部をさらに備えた、請求項１または請求項２に記載の半導体記憶装置。
【請求項４】
前記第１レベルは、前記書込みデータの閾値電圧レベルのうち最低レベルから１段階以上高い閾値電圧レベルである、請求項１から請求項３のいずれか一項に記載の半導体記憶装置。
【請求項５】
前記所定回数は、前記書込みデータの閾値電圧レベルのうち、前記第１レベルよりも高い閾値電圧レベルの数に等しい、請求項１から請求項４のいずれか一項に記載の半導体記憶装置。
【請求項６】
前記コントローラは、前記第１書込みシーケンスにおいて、前記選択ワード線に接続された選択メモリセルの閾値電圧が第１レベルに達した後、前記書込みデータの複数の閾値電圧レベルに対して等しい回数だけ前記書込み動作を実行する、請求項１に記載の半導体記憶装置。
【請求項７】
前記第１書込みシーケンスにおいて、前記選択メモリセルの閾値電圧が第１レベルに達し、あるいは、前記選択メモリセルが書込み禁止状態となった場合、前記コントローラは、前記書込みループのベリファイ動作の実行を省略する、請求項１から請求項６のいずれか一項に記載の半導体記憶装置。
【請求項８】
前記書込みデータが前記第１レベルと前記第１レベルより高い第２レベルとの間にある場合、前記コントローラは、前記第１書込みシーケンスにおいて、前記選択メモリセルの閾値電圧が前記第１レベルに達するまで前記ベリファイ動作を実行することによって該第１レベルのデータを検出し、前記選択メモリセルの閾値電圧が前記第１レベルに達した後、前記ベリファイ動作を実行せずに、前記書込みデータに応じた所定回数だけ前記書込み動作を実行し、
前記書込みデータが前記第２レベル以上である場合、前記コントローラは、前記第１書込みシーケンスにおいて、前記選択メモリセルの閾値電圧が前記第２レベルに達するまで前記ベリファイ動作を実行することによって該第２レベルのデータを検出し、前記選択メモリセルの閾値電圧が前記第２レベルに達した後、前記ベリファイ動作を実行せずに、前記書込みデータに応じた所定回数だけ前記書込み動作を実行する、請求項１に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明による実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型ＥＥＰＲＯＭ(Electrically Erasable Programmable Read-Only Memory) 等の不揮発性メモリでは、その微細化に伴い、セル間干渉効果（近接干渉効果）が増大している。セル間干渉効果が増大すると、メモリセルの閾値電圧が隣接メモリセルの書き込みによって変化する場合があり、それにより、メモリセルの閾値分布が広がってしまう。
【０００３】
一方、ＭＬＣ（Multi Level Cell）のような多値化されたメモリセルが開発されている。ＭＬＣでは、各値の閾値範囲が比較的狭いため、メモリセルの閾値分布は、できるだけ狭いことが好ましい。しかし、セル間干渉効果によってメモリセルの閾値分布が広がると、メモリセルの閾値分布をＭＬＣの閾値範囲内に入れることが困難になる。また、セル間干渉効果を考慮して、メモリセルの閾値分布を狭くしようとすると、書込み時間が長期化してしまう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１３−５３２８８１号公報（米国特許第８３１０８７０号公報）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
書込み時間を長期化することなく、メモリセルの閾値分布を狭くすることができる半導体記憶装置を提供する。
【課題を解決するための手段】
【０００６】
本実施形態による半導体記憶装置は、複数のワード線と、複数のビット線と、ワード線と前記ビット線との交点に対応して設けられた複数のメモリセルとを備える。ワード線ドライバは、複数のワード線のうち選択ワード線に電圧を印加する。センスアンプ回路は、メモリセルのデータを検出する。コントローラは、ワード線ドライバおよびセンスアンプを制御する。選択ワード線に接続された選択メモリセルにデータを書き込む書込みシーケンスは、ワード線ドライバにより選択ワード線へ書込み電圧を印加する書込み動作とセンスアンプ回路により選択メモリセルのデータを検出するベリファイ動作とを有する複数の書込みループを含む。コントローラは、第１書込みシーケンスにおいて、選択ワード線に接続された選択メモリセルの閾値電圧が第１レベルに達した後、ベリファイ動作を実行せずに、該選択メモリセルに書き込む書込みデータに応じた所定回数だけ書込み動作を実行し、次に、第２書込みシーケンスにおいて、書込みデータの閾値電圧レベルのそれぞれに対応したベリファイレベルを用いてベリファイ動作を行う。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態の不揮発性半導体記憶装置（以下、単にメモリともいう）の構成の一例を示す図。
【図２】ＮＡＮＤセルユニット１１の構成の一例を示す概略的な断面図。
【図３】メモリセルアレイ１のブロックおよびページ等の概念を示す図。
【図４】或る書込み対象ページに３ビットデータを書き込む書込みシーケンスの各段階を閾値分布で示したグラフ。
【図５】第１の実施形態によるフォギー書込みにおけるワード線電圧ＶＷＬを示すグラフ。
【図６】フォギー書込みにおける書込みループ回数と選択メモリセルＭＣｓの閾値電圧との関係を示すグラフ。
【図７】第１の実施形態によるフォギー書込みシーケンスの一例を示すフロー図。
【図８】ファイン書込みにおけるワード線電圧ＶＷＬを示すグラフ。
【図９】データ書込み時間を示す概念図。
【図１０】第１の実施形態の変形例１によるフォギー書込みにおけるワード線電圧ＶＷＬを示すグラフ。
【図１１】第１の実施形態の変形例２によるフォギー書込みにおけるワード線電圧ＶＷＬを示すグラフ。
【発明を実施するための形態】
【０００８】
以下、図面を参照して本発明に係る実施形態を説明する。本実施形態は、本発明を限定するものではない。
【０００９】
（第１実施形態）
図１は、第１実施形態の不揮発性半導体記憶装置（以下、単にメモリともいう）の構成の一例を示す図である。本実施形態によるメモリは、例えば、ＮＡＮＤ型ＥＥＰＲＯＭである。
【００１０】
本実施形態によるメモリは、メモリセルアレイ１と、センスアンプ回路２と、ロウデコーダ３と、入出力（Ｉ／Ｏ）バッファ４と、コントローラ５と、電圧発生回路６と、ＲＯＭヒューズ７と、データ記憶回路８とを備えている。
【００１１】
メモリセルアレイ１は、同一のウェル上に形成された複数のメモリブロックＢＬＫ０〜ＢＬＫｉ（ｉは２以上の整数）を有している。また、各メモリブロックＢＬＫは、図１に示すように、Ｙ方向に延びる複数本のＮＡＮＤセルユニット１１をＸ方向に並べて構成されている。さらに、各ＮＡＮＤセルユニット１１は、直列に接続された複数のメモリセルＭＣ０〜ＭＣ６３と、これらの両端に接続された選択トランジスタＳ１、Ｓ２とを含んでいる。メモリセルＭＣは、ワード線ＷＬとビット線ＢＬとの交点に対応して設けられている。
【００１２】
図１には、メモリブロックＢＬＫ０用のワード線ＷＬ０〜ＷＬ６３および選択ゲート線ＳＧＳ、ＳＧＤが示されている。ワード線ＷＬ０〜ＷＬ６３は、それぞれメモリセルＭＣ０〜ＭＣ６３の制御ゲートに接続されており、いずれもＸ方向に延びている。また、選択ゲート線ＳＧＳ、ＳＧＤは、それぞれ選択トランジスタＳ１、Ｓ２のゲートに接続されており、いずれもＸ方向に延びている。また、ワード線ＷＬ０〜ＷＬ６３と選択ゲート線ＳＧＳ、ＳＧＤは、Ｘ方向に隣接する複数のＮＡＮＤセルユニット１１に共有されている。
【００１３】
また、メモリブロックＢＬＫ０内の各選択トランジスタＳ１のソースは、同一のソース線ＳＬに接続されている。また、メモリブロックＢＬＫ０内の各選択トランジスタＳ２のドレインは、対応するビット線ＢＬ０〜ＢＬｊ（ｊは２以上の整数）に接続されている。図１に示すように、ソース線ＳＬは、Ｘ方向に延びており、ビット線ＢＬ０〜ＢＬｊは、Ｙ方向に延びている。
【００１４】
センスアンプ回路２は、センスアンプＳＡと、ビット線コントローラＢＬＣとを備えている。センスアンプＳＡは、メモリセルＭＣからビット線ＢＬ０〜ＢＬｊを通じてデータを読み出す回路である。センスアンプＳＡは、メモリセルＭＣのデータに応じた電圧と基準電圧とを比較することによって、該データの論理を検出する。ビット線コントローラＢＬＣは、コントローラ５から受け取ったアドレスに応じて、複数のビット線ＢＬのうち単数または複数のビット線ＢＬを選択的に駆動する。ビット線コントローラＢＬＣは、選択ビット線ＢＬの電圧を制御することにより、書込み制御、ベリファイリード、読み出し動作を行う。
【００１５】
例えば、センスアンプ回路２は、ベリファイリードおよび読出し動作において、選択ワード線ＷＬと選択ビット線ＢＬとに接続された選択メモリセルＭＣに格納されたデータを検出する。センスアンプ回路２はデータラッチ回路（図示せず）をさらに備え、センスアンプＳＡにおいて検出されたデータを一時的に保持可能である。
【００１６】
ロウデコーダ（ワード線ドライバ）３は、ワード線および選択ゲート線のいずれかを選択してそのワード線または選択ゲート線に電圧を印加する回路である。
【００１７】
Ｉ／Ｏバッファ４は、センスアンプ回路２と外部入出力端子との間でのデータの受け渡しや、コントローラ５からコマンドデータやアドレスデータの受け取りを行う回路である。
【００１８】
コントローラ５は、メモリセルアレイ１に対する種々の制御を行う制御部である。コントローラ５は、例えば、外部に設けられたホストまたはメモリコントローラ（ＭＨ）から書き込みイネーブル信号ＷＥｎ、読み出しイネーブル信号ＲＥｎ、アドレスラッチイネーブル信号ＡＬＥ、コマンドラッチイネーブル信号ＣＬＥなどの外部制御信号を受け取る。それにより、コントローラ５は、ロウデコーダ（ワード線ドライバ）３やセンスアンプ回路２を制御し、書込み動作、読出し動作、消去動作等を実行する。
【００１９】
電圧発生回路６は、複数の昇圧回路２１と、パルス発生回路２２とを有している。電圧発生回路６は、コントローラ５からの制御信号に基づいて、駆動する昇圧回路２１の個数を切り替える。また、電圧発生回路６は、パルス発生回路２２を制御することで、パルス電圧のパルス幅やパルス高さを調整する。
【００２０】
ＲＯＭヒューズ７は、書き込み時や消去時のパルス電圧のパルス幅やパルス高さの設定値を格納しておくための記憶部である。例えば、ＲＯＭヒューズ７は、書込み動作においてワード線に印加される書込み電圧（プログラム電圧）Ｖｐｇｍや書込み電圧の上昇幅（ステップアップ幅）ΔＶｐｇｍ、後述するノーベリファイループの実行回数等を格納している。
【００２１】
データ記憶回路８は、メモリセルアレイ１の制御に用いられる種々のデータを保存しておくための書き換え可能な不揮発性記憶回路である。
【００２２】
図２は、ＮＡＮＤセルユニット１１の構成の一例を示す概略的な断面図である。ＮＡＮＤセルユニット１１は、直列に接続された複数のメモリセルＭＣと、その両端に接続された２つの選択トランジスタＳ１、Ｓ２とを含む。ソース側の選択トランジスタＳ１はソース線ＳＬに、ドレイン側の選択トランジスタＳ２はビット線ＢＬにそれぞれ接続されている。
【００２３】
メモリセルＭＣ０〜ＭＣ６３と、選択トランジスタＳ１、Ｓ２は、半導体基板１０１内のウェル１０２上に形成されており、ウェル１０２内の拡散層１０３により直列に接続されている。これらのトランジスタは、層間絶縁膜１２１により覆われている。
【００２４】
メモリセルＭＣは、それぞれ電荷蓄積層（例えば、フローティングゲート）１１２およびコントロールゲート１１３を備える。電荷蓄積層１１２は、半導体基板１０１上にゲート絶縁膜１１１を介して設けられている。コントロールゲート１１４は、電荷蓄積層１１２上にゲート間絶縁膜１１３を介して形成されている。また、選択トランジスタＳ１、Ｓ２の各々は、半導体基板１０１上にゲート絶縁膜１１５を介して形成されたゲート電極１１６を有している。なお、電荷蓄積層１１２は、電荷蓄積機能を有する絶縁膜（例えばシリコン窒化膜）としてもよい。
【００２５】
コントロールゲート１１３は、ワード線ＷＬ０〜ＷＬ６３のいずれかに接続されている。ＮＡＮＤセルユニット１１の一端のメモリセルＭＣ０は、選択トランジスタＳ１を介してソース線ＳＬに接続されている。ＮＡＮＤセルユニット１１の他端のメモリセルＭＣ６３は、選択トランジスタＳ２を介してビット線ＢＬに接続されている。尚、ワード線ＷＬ、ビット線ＢＬ、メモリセルＭＣの数は、特に限定されない。また、メモリセルＭＣは、ＳＬＣ（Single-Level Cell）、ＭＬＣ(Multi-Level Cell)、ＴＬＣ（Triple-Level Cell）またはＱＬＣ (Quadruple-Level Cell)以上のいずれでもよい。
【００２６】
図３は、メモリセルアレイ１のブロックおよびページ等の概念を示す図である。メモリセルアレイ１は、メモリブロック（以下、ブロックともいう）ＢＬＯＣＫ０〜ＢＬＯＣＫｍに分割されている。この例では、ブロックＢＬＯＣＫ０〜ＢＬＯＣＫｍは、それぞれデータ消去の最小単位である。各ブロックＢＬＯＣＫ０〜ＢＬＯＣＫｍは、複数のページで構成されている。ページは、データ読出しまたはデータ書込みの単位である。各ページは、ワード線ＷＬに対応しており、或るアドレスで特定される複数のメモリセルＭＣのデータによって構成されている。
【００２７】
ＮＡＮＤ型ＥＥＰＲＯＭは、例えば、５１２バイトから８Ｋバイトのページ単位で、書込み動作および読出し動作を行う。すなわち、ビット線コントローラＢＬＣは、ページ内の５１２バイトから８Ｋバイトに対応するビット線ＢＬの制御を同時に行うことができる。センスアンプＳＡは、ビット線ＢＬを介してメモリセルＭＣのデータを検出する。
【００２８】
次に、本実施形態によるメモリのデータ書込み動作を説明する。データ書込み動作（書込みシーケンス）は、書込み動作とベリファイリード動作とを含む書込みループを繰り返すことにより実行される。書込み動作は、選択ワード線へ書込み電圧を印加し、選択メモリセルの閾値電圧を上昇させてデータを書き込む動作である。ベリファイリード動作は、選択メモリセルの閾値電圧がベリファイレベルに達したか否か、即ち、選択メモリセルに所望のデータが書き込まれたか否かを検証する動作である。ベリファイリード動作は、選択メモリセルからデータを読み出す動作（リード動作）と、その読み出しデータのレベル（選択メモリセルの閾値電圧）を検証する動作（ベリファイ動作）とを含む。
【００２９】
書込みシーケンス内において、書込みループを繰り返すごとに、ワード線ドライバ３は、選択ワード線の電圧をΔＶｐｇｍずつ上昇（ステップアップ）させる。これにより、選択ワード線に接続された選択メモリセルの閾値電圧は、書込ループを実行するごとに、ほぼΔＶｐｇｍずつ上昇する。
【００３０】
選択メモリセルの閾値電圧が徐々に上昇すると、ベリファイリード動作において、選択メモリセルの閾値電圧は、ベリファイレベル（基準電圧）に次第に接近し、いずれベリファイレベルに到達する。このとき、その選択メモリセルＭＣはベリファイをパス（合格）したことになる。ベリファイをパスすると、その選択メモリセルＭＣへの書込みは終了し、その選択メモリセルに対応するビット線は非選択状態（書込禁止状態）となる。例えば、ビット線コントローラＢＬＣは、ベリファイをパスした選択メモリセルＭＣに対応するビット線の電圧を上昇させて固定し、選択ワード線に書込み電圧が印加されても、電圧差がその選択メモリセルに印加されないようにする。これにより、その後の書込みループにおいて、ベリファイをパスした選択メモリセルＭＣには、データがそれ以上書き込まれない。従って、選択メモリセルの閾値電圧は、ベリファイレベル（基準電圧）以上で、かつ、その近傍に分布することになる。
【００３１】
尚、選択状態とは、選択ワード線に書込み電圧が印加されたときに、電圧が選択メモリセルのチャネルとワード線との間に印加されるようにビット線の電圧を低下させた状態である。非選択状態とは、選択ワード線に書込み電圧が印加されても、その選択メモリセルのチャネルとワード線との間の電圧が減圧されるようにビット線の電圧を固定した状態である。
【００３２】
書込みシーケンスの制御は、コントローラ５、センスアンプ２およびロウデコーダ（ワード線ドライバ）３により行われる。また、書込みシーケンスは、ワード線ＷＬ０、ＷＬ１、・・・ＷＬ６２、ＷＬ６３の順に行う。
【００３３】
以下、本実施形態による書込みシーケンスをさらに詳細に説明する。
【００３４】
図４（Ａ）〜図４（Ｃ）は、或る書込み対象ページに３ビットデータを書き込む書込みシーケンスの各段階を閾値分布で示したグラフである。これらのグラフの縦軸は、選択メモリセルＭＣｓの数を示し、横軸は選択メモリセルＭＣｓの閾値電圧を示す。尚、縦軸は、対数表示されている。
【００３５】
本実施形態によるメモリは、フォギー−ファイン方式で３ビットデータをメモリセルＭＣへ書き込む。フォギー−ファイン方式は、フォギー書込みによって各レベルのデータを大まかに書き込んだ後、ファイン書込みによって各レベルのデータを精度良く書き込む方式である。さらに、フォギー書込みの前に、一旦、下位レベルを書き込むＬＭ（Lower Middle）書込みを行う場合もある。本実施形態において、フォギー−ファイン方式は、フォギー書込みおよびファイン書込みを含み、それぞれの段階において、上記書込みシーケンスが実行される。尚、ＬＭ書込みを行う場合、ＬＭ書込みが実行された後に、フォギー書込みおよびファイン書込みが実行される。
【００３６】
図４（Ａ）は、初期状態（消去状態）における選択メモリセルＭＣｓの閾値分布を示す。ブロック消去によってブロックＢＬＯＣＫ内の全てのメモリセルＭＣは、消去状態（Ｅｒレベルともいう）になっている。従って、ブロックＢＬＯＣＫ内のメモリセルＭＣの閾値電圧は、論理データの中で最も低いＥｒレベルとなっている。尚、レベルとは、閾値電圧のレベルを示し、以下、Ｅｒ＜Ａ＜Ｂ＜Ｃ＜Ｄ＜Ｅ＜Ｆ＜Ｇである。
【００３７】
（フォギー書込み）
次に、下位ページ、中位ページ、上位ページが同時に書き込まれる。下位ページ、中位ページ、上位ページの書込みは、図４（Ｂ）に示すフォギー書込みの段階、および、図４（Ｃ）に示すファイン書込みの段階を含む。フォギー書込みは、各データを大まかに書き込む段階である。フォギー書込みによって、図４（Ｂ）に示すように、Ｅｒレベルにある選択メモリセルＭＣｓには、Ｅｒ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇレベルのいずれかのレベルのデータが或る程度書き込まれるが、閾値分布がファイン書込みのそれよりも広く大まかに書き込まれる。
【００３８】
ここで、本実施形態によるフォギー書込みでは、書込みループにおいて、ベリファイリード動作は、Ａ〜Ｇレベルを書き込む全ての選択メモリセルＭＣｓの閾値電圧がＥｒレベルよりも１段階高いＡレベル（第１レベル）になるまで実行されるが、Ａレベル以外のＢ〜Ｇレベルのベリファイリード動作は実行されない。この場合、或る選択メモリセルＭＣｓの閾値電圧がＡレベルに達した後、その選択メモリセルＭＣｓには、その選択メモリセルＭＣｓへの書込みレベルに依らず、ベリファイリード動作を実行する必要が無くなる。従って、コントローラ５は、Ａレベルのベリファイレベルに達した選択メモリセルＭＣｓについて、それ以降の書込みループにおいて書込み動作を書込みデータに応じて実行するものの、ベリファイリード動作の対象としない。ベリファイリード動作において、センスアンプ回路２は、Ａレベルのベリファイレベルに達したかどうかを検出するが、他のレベルのベリファイレベルに達したかどうかについては検出しない。この場合、Ａレベルに達した選択メモリセルＭＣｓへのそれ以降の書込み動作は、書込みデータのレベルに応じた所定回数の書込みループにおいてのみ継続して実行される。この所定回数については、後述する。一方、Ａレベルに達していない選択メモリセルＭＣｓについては、書込みループの書込み動作およびベリファイリード動作の両方が実行される。このように、コントローラ５は、フォギー書込みにおいて、Ａ〜Ｇレベルの選択メモリセルＭＣｓに対して共通にＡレベルのベリファイリード動作を実行するものの、それ以外のＢ〜Ｇレベルのベリファイリード動作を実行しない。また、コントローラ５は、Ａ〜Ｇレベルを書き込む予定の選択メモリセルＭＣｓに対して、Ａレベルのベリファイレベルに達するまでベリファイリード動作を実行するが、Ａレベルに達した選択メモリセルＭＣｓについてはベリファイリード動作の対象から外す。尚、一部の選択メモリセルＭＣｓがＡレベルに達しても、Ａレベルに達していない他の選択メモリセルＭＣｓのために、書込み動作およびベリファイリード動作自体は全ての書込みループにおいて両方とも実行される。
【００３９】
図５は、第１の実施形態によるフォギー書込みにおけるワード線電圧ＶＷＬを示すグラフである。縦軸は、ワード線電圧ＶＷＬを示し、横軸は、時間を示す。図５に示すように、コントローラ５は、書込み電圧Ｖｐｇｍで選択メモリセルＭＣｓに書込みを実行した後、Ａレベルのベリファイリード動作を実行し、Ｂ〜Ｇレベルのベリファイリード動作を実行しない。
【００４０】
また、コントローラ５は、Ａレベルに達した選択メモリセルＭＣｓについて、ベリファイ動作の対象から外す。Ａレベルに達した後の書込みループにおける選択メモリセルＭＣｓへの書込み動作は、書込みデータ（Ａ〜Ｇ）に応じた所定回数の書込みループだけ継続して実行される。その後、コントローラ５は、ファイン書込みの開始までその選択メモリセルＭＣｓを非選択状態にする。
【００４１】
書込みループを繰り返し実行すると、選択メモリセルＭＣｓの閾値電圧は、選択ワード線ＷＬｓの電圧のステップアップに伴って、ほぼそのステップアップ幅ΔＶｐｇｍずつ上昇する。従って、選択メモリセルＭＣｓの閾値電圧を正確に検出することはできないが、書込み動作の実行回数によって、選択メモリセルＭＣｓの閾値電圧は、或る程度推測可能である。
【００４２】
例えば、ステップアップ幅ΔＶｐｇｍが、書込みデータの隣接するレベル間の閾値電圧差にほぼ等しいものとする。即ち、ステップアップ幅ΔＶｐｇｍは、ＡレベルとＢレベルとの間の閾値電圧差、ＢレベルとＣレベルとの間の閾値電圧差、ＣレベルとＤレベルとの間の閾値電圧差、ＤレベルとＥレベルとの間の閾値電圧差、ＥレベルとＦレベルとの間の閾値電圧差、ＦレベルとＧレベルとの間の閾値電圧差にほぼ等しいものとのする。この場合、選択メモリセルＭＣｓの閾値電圧は、書込み動作の実行ごとに１レベルずつ上昇していく。従って、Ａレベルに達した選択メモリセルＭＣｓに実行される追加の書込み動作（以下、追加書込みともいう）の回数は、選択メモリセルＭＣｓに書き込むデータの閾値電圧レベル（Ａ〜Ｇレベル）に対応した回数となる。本実施形態では、追加書込み回数は、書込みデータの閾値電圧レベル以下で、かつ、Ａレベルよりも高い閾値電圧レベルの数（Ａレベルより高くかつ書込みデータの閾値電圧レベル以下のレベル数）に等しい。例えば、選択メモリセルＭＣｓにＡレベル（第１レベル）のデータを書き込む場合、追加書込み回数は、０である。選択メモリセルＭＣｓにＢレベルのデータを書き込む場合、Ｂレベル以下で、かつ、Ａレベルよりも高い閾値電圧レベルは１つ（Ｂレベル）である。従って、この場合、追加書込み回数は、１である。選択メモリセルＭＣｓにＣレベル（第３レベル）のデータを書き込む場合、Ｃレベル以下で、かつ、Ａレベルよりも高い閾値電圧レベルは２つ（Ｂ、Ｃレベル）である。従って、この場合、追加書込み回数は、２である。選択メモリセルＭＣｓにＤレベル（第４レベル）のデータを書き込む場合、Ｄレベル以下で、かつ、Ａレベルよりも高い閾値電圧レベルは３つ（Ｂ、Ｃ、Ｄレベル）である。従って、この場合、追加書込み回数は、３である。選択メモリセルＭＣｓにＥレベル（第５レベル）のデータを書き込む場合、Ｅレベル以下で、かつ、Ａレベルよりも高い閾値電圧レベルは４つ（Ｂ、Ｃ、Ｄ、Ｅレベル）である。従って、この場合、追加書込み回数は、４である。選択メモリセルＭＣｓにＦレベル（第６レベル）のデータを書き込む場合、Ｆレベル以下で、かつ、Ａレベルよりも高い閾値電圧レベルは５つ（Ｂ、Ｃ、Ｄ、Ｅ、Ｆレベル）である。従って、この場合、追加書込み回数は、５である。選択メモリセルＭＣｓにＧレベル（第７レベル）のデータを書き込む場合、Ｇレベル以下で、かつ、Ａレベルよりも高い閾値電圧レベルは６つ（Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇレベル）である。従って、この場合、追加書込み回数は、６である。このように、Ａレベルに達した後、その選択メモリセルＭＣｓに実行される追加書込み動作の回数（追加書込み回数）は、書込みデータの閾値電圧レベルのそれぞれに対応して設定されており、書込みデータの閾値電圧レベルのうち、Ａレベルよりも高い閾値電圧レベルの数に等しい。
【００４３】
閾値電圧レベル（Ａ〜Ｇレベル）とそのそれぞれに対応する追加書込み回数との対応関係は、第１記憶部としてのＲＯＭヒューズ７に格納すればよい。例えば、Ａ〜Ｇレベルに対する追加書込み回数として０〜６をそれぞれＲＯＭヒューズ７に格納する。
【００４４】
また、選択ワード線ＷＬｓに接続された複数の選択メモリセルＭＣｓのそれぞれに対する追加書込み回数は、第２記憶部としてデータ記憶回路８に格納すればよい。例えば、コントローラ５は、或るページ内の選択メモリセルＭＣ０〜ＭＣｎのそれぞれについて、書込みデータに応じた追加書込み回数を決定する。このとき、コントローラ５は、ＲＯＭヒューズ７に格納された閾値電圧レベルと追加書込み回数との対応関係を参照して、選択メモリセルＭＣｓのそれぞれへの書込みデータに応じた追加書込み回数を決定する。選択メモリセルＭＣ０〜ＭＣｎのそれぞれについて決定された追加書込み回数は、データ記憶回路８に格納される。
【００４５】
コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＡレベルに達した後、該選択メモリセルＭＣｓに設定された追加書込み回数に従って書込み動作を実行する。このとき、コントローラ５は、選択ワード線ＷＬｓの書込み電圧をステップアップしながら書込み動作を繰り返すが、Ａレベルに達した選択メモリセルＭＣｓについてはベリファイリード動作を実行しない。これにより、選択メモリセルＭＣｓの閾値電圧は、追加書込み回数に応じた閾値レベルへ達する。
【００４６】
例えば、図６は、フォギー書込みにおける書込みループ回数と選択メモリセルＭＣｓの閾値電圧との関係を示すグラフである。横軸は、書込みループ回数または書込み電圧Ｖｐｇｍを示し、縦軸は、選択メモリセルＭＣｓの閾値電圧を示す。横軸のＬｏｏｐ１〜Ｌｏｏｐ９は、書込みループを示す。縦軸のＡ〜Ｆは、書込みデータの閾値電圧レベルを示す。
【００４７】
ラインＬ１は、Ｆレベルのデータを書き込むときの選択メモリセルＭＣｓの閾値電圧の変化を示す。ラインＬ２は、Ｂレベルのデータを書き込むときの選択メモリセルＭＣｓの閾値電圧の変化を示す。ラインＬ３は、Ａレベルのデータを書き込むときの選択メモリセルＭＣｓの閾値電圧の変化を示す。ラインＬ４は、Ｃレベルのデータを書き込むときの選択メモリセルＭＣｓの閾値電圧の変化を示す。ラインＬ５は、Ｄレベルのデータを書き込むときの選択メモリセルＭＣｓの閾値電圧の変化を示す。ラインＬ６は、Ｅレベルのデータを書き込むときの選択メモリセルＭＣｓの閾値電圧の変化を示す。
【００４８】
ラインＬ１に示す選択メモリセルＭＣｓの閾値電圧は、Ｌｏｏｐ１において、Ａレベルに達している。この場合、Ｌｏｏｐ１までは通常の書込みループ（書込み動作およびベリファイリード動作の両方）が実行され、ベリファイリード動作の対象となる。その後、Ｌｏｏｐ１において、Ａレベルに達すると、その選択メモリセルＭＣｓには追加書込みが５回（Ｌｏｏｐ２〜Ｌｏｏｐ６）実行される。このとき、ラインＬ１に示す選択メモリセルＭＣｓは、ベリファイリード動作の対象とならない。選択メモリセルＭＣｓの閾値電圧は、追加書込みが実行されるごとに、ほぼ１レベルずつ上昇する。これにより、Ｌｏｏｐ２〜Ｌｏｏｐ６が実行されると、ラインＬ１に示す選択メモリセルＭＣｓの閾値電圧は、Ｆレベル付近に達すると推測される。
【００４９】
ラインＬ２に示す選択メモリセルＭＣｓの閾値電圧は、Ｌｏｏｐ２において、Ａレベルに達している。この場合、Ｌｏｏｐ２までは通常の書込みループが実行され、その後、Ａレベルに達すると、その選択メモリセルＭＣｓには追加書込みが１回（Ｌｏｏｐ３）実行される。Ｌｏｏｐ３が実行されると、ラインＬ２に示す選択メモリセルＭＣｓの閾値電圧は、Ｂレベル付近に達すると推測される。
【００５０】
ラインＬ３に示す選択メモリセルＭＣｓの閾値電圧は、Ｌｏｏｐ２において、Ａレベルに達している。この場合、Ｌｏｏｐ２までは通常の書込みループが実行され、その後、Ｌｏｏｐ２において、Ａレベルに達すると、その選択メモリセルＭＣｓには追加書込みは実行されていない。これにより、ラインＬ３に示す選択メモリセルＭＣｓの閾値電圧は、Ａレベルになる。
【００５１】
ラインＬ４に示す選択メモリセルＭＣｓの閾値電圧は、Ｌｏｏｐ３において、Ａレベルに達している。この場合、Ｌｏｏｐ３までは通常の書込みループが実行され、その後、Ａレベルに達すると、その選択メモリセルＭＣｓには追加書込みが２回（Ｌｏｏｐ４、Ｌｏｏｐ５）実行される。Ｌｏｏｐ４、Ｌｏｏｐ５が実行されると、ラインＬ４に示す選択メモリセルＭＣｓの閾値電圧は、Ｃレベル付近に達すると推測される。
【００５２】
ラインＬ５に示す選択メモリセルＭＣｓの閾値電圧は、Ｌｏｏｐ４において、Ａレベルに達している。この場合、Ｌｏｏｐ４までは通常の書込みループが実行され、その後、Ａレベルに達すると、その選択メモリセルＭＣｓには追加書込みが３回（Ｌｏｏｐ５〜Ｌｏｏｐ７）実行される。Ｌｏｏｐ５〜Ｌｏｏｐ７が実行されると、ラインＬ５に示す選択メモリセルＭＣｓの閾値電圧は、Ｄレベル付近に達すると推測される。
【００５３】
ラインＬ６に示す選択メモリセルＭＣｓの閾値電圧は、Ｌｏｏｐ５において、Ａレベルに達している。この場合、Ｌｏｏｐ５までは通常の書込みループが実行され、その後、Ａレベルに達すると、その選択メモリセルＭＣｓには追加書込みが４回（Ｌｏｏｐ６〜Ｌｏｏ９）実行される。Ｌｏｏｐ６〜Ｌｏｏｐ９が実行されると、ラインＬ６に示す選択メモリセルＭＣｓの閾値電圧は、Ｅレベル付近に達すると推測される。尚、図示しないが、追加書込みの実行回数が６である場合、選択メモリセルＭＣｓの閾値電圧は、Ｇレベル付近になると推測される。また、選択メモリセルＭＣｓをＥｒレベルに維持する場合、コントローラ５は、その選択メモリセルＭＣｓに対して書込みループの両方を実行しない。
【００５４】
このように、選択メモリセルＭＣｓの閾値電圧がＡレベルに達した後、追加書込みが所定回数（０〜６）だけ実行されると、選択メモリセルＭＣｓの閾値電圧は、Ａ〜Ｇレベルのいずれかになると推測される。これにより、フォギー書込みが完了する。
【００５５】
尚、選択メモリセルＭＣｓに対して同じＶｐｇｍで書き込んだ後の閾値電圧は、図４（Ａ）と同様に広く分布している。このため、Ａレベルに達するまでに必要な書込みループ回数は、選択メモリセルＭＣｓの閾値電圧に依って異なり、その推測は困難である。しかし、閾値電圧がＡレベルに達した後、書込みデータの閾値電圧レベルに達するまでに必要な書込みループ回数（追加書込みの回数）は、ステップアップ幅ΔＶｐｇｍから比較的容易に推測可能である。
【００５６】
フォギー書込み後、Ａ〜Ｇレベルの選択メモリセルＭＣｓの閾値電圧は、それぞれ、ファイン書込みにおけるＡ〜Ｇレベルに対応する閾値電圧を超えることなく、かつ、それよりも広い分布を有する。このように、フォギー書込みにおいて選択メモリセルＭＣｓには、図４（Ｂ）に示すように、Ａ〜Ｇレベルのデータが大まかに書き込まれる。
【００５７】
図７は、第１の実施形態によるフォギー書込みシーケンスの一例を示すフロー図である。図７は、或る選択ワード線ＷＬｓに接続された選択メモリセルＭＣｓｉ（ｉ＝０〜ｎ）への書き込みを示す。
【００５８】
まず、選択メモリセルＭＣｓｉおよび隣接メモリセルＭＣに書き込まれるデータがＩ／Ｏバッファ４に格納される（Ｓ１００）。
【００５９】
次に、ビット線コントローラＢＬＣが選択ビット線ＢＬに低レベル電圧（例えば、ソース電圧）を印加し、それ以外の非選択ビット線ＢＬを高レベル電圧に固定する（Ｓ１０２）。これにより、非選択ビット線ＢＬを書込み禁止（inhibit）状態にする。尚、Ｅｒレベルを書き込む選択メモリセルＭＣｓに接続された選択ビット線ＢＬも高レベル電圧に固定して、書込み禁止状態にする。
【００６０】
次に、ワード線ドライバＷＤＲＶが選択ワード線ＷＬｓに書込み電圧Ｖｐｇｍを印加する（Ｓ１０４）。これにより、選択ビット線および選択ワード線ＷＬｓに接続された選択メモリセルＭＣｓｉに書込みが実行される。
【００６１】
次に、選択メモリセルＭＣｓｉをｉの順番にベリファイするために、選択メモリセルＭＣｓｉのｉを初期値０に設定する（Ｓ１０６）。
【００６２】
次に、ベリファイの要否について判定する（Ｓ１０８）。コントローラ５は、書込み禁止状態となっている選択メモリセルＭＣｓｉのベリファイ処理をスキップし、ｉをｉ＋１へインクリメントする（Ｓ１０８のＹＥＳ）。書込み禁止状態となっている選択メモリセルＭＣｓｉは、非選択状態のままとし、次の選択メモリセルＭＣｓｉ＋１の処理へ移行する（Ｓ１２４のＮＯ）。
【００６３】
選択メモリセルＭＣｓｉが書込み許可状態となっている場合（Ｓ１０８のＮＯ）、コントローラ５は、追加書込みの実行中であるか否かを判定する（Ｓ１１０）。追加書込みの実行中であるか否かは、データ記憶回路８にフラグを格納しておき、コントローラ５がそのフラグを参照することによって判定すればよい。フラグは、各選択メモリセルＭＣｓに対応する１ビットデータでよい。
【００６４】
（閾値電圧がＡレベル未満）
追加書込みの実行中でない場合（Ｓ１１０のＮＯ）、選択メモリセルＭＣｓｉは通常の書込みループで処理されている。従って、コントローラ５は、選択メモリセルＭＣｓｉにベリファイリード動作を実行し（Ｓ１１１）、選択メモリセルＭＣｓｉの閾値電圧がＡレベルに達したか否かを判定する（Ｓ１１２）。
【００６５】
選択メモリセルＭＣｓｉの閾値電圧がＡレベルに達していない場合（Ｓ１１０のＮＯ）、コントローラ５は、選択メモリセルＭＣｓｉを選択状態に維持したまま、かつ、追加書込みのフラグを立ち上げずに、ｉをｉ＋１へインクリメントする（Ｓ１１４）。この場合、選択メモリセルＭＣｓｉの閾値電圧は、Ａレベルよりも低い状態である。従って、コントローラ５は、選択メモリセルＭＣｓｉを選択状態のままとし、かつ、追加書込みに移行させずに、選択メモリセルＭＣｓｉ＋１の処理へ移行する（Ｓ１２４のＮＯ）。
【００６６】
ｉの順番にステップＳ１０８〜Ｓ１２４を実行し、ｉがｎを超えると（Ｓ１２４のＹＥＳ）、コントローラ５は、書込み許可の（選択状態の）選択メモリセルＭＣｓの個数が所定数Ｎ１以下かどうかを判定する（Ｓ１２６）。書込み許可となっている選択メモリセルＭＣｓの個数が所定数Ｎ１より多い場合（Ｓ１２６のＮＯ）、書込みが完了していない選択メモリセルＭＣｓｉが多いことを意味する。従って、コントローラ５は、選択ワード線ＷＬｓの書込み電圧をＶｐｇｍからＶｐｇｍ＋ΔＶｐｇｍへステップアップさせて（Ｓ１２８）、次の書込みループ（Ｓ１０２〜Ｓ１２４）を実行する。このとき、コントローラ５は、書込みが終了したビット線ＢＬを書込み禁止状態（例えば、高レベル電圧）に固定し（Ｓ１０２）、その選択メモリセルＭＣｓにはそれ以降の書込みループにおいてデータを書き込まない。一方、コントローラ５は、書込みがまだ完了していないビット線ＢＬを書込許可状態（例えば、低レベル電圧）のままとし、それ以降の書込みループにおいてその選択メモリセルＭＣｓにデータを書き込む。
【００６７】
このように、コントローラ５は、書込みデータのレベルに達していない選択メモリセルＭＣｓｉ（０〜ｎ）を書込許可状態のままとし、選択ワード線ＷＬｓの書込み電圧をステップアップさせながら、書込みループを実行する（Ｓ１０２〜Ｓ１２６）。また、コントローラ５は、ｉをインクリメントしながら、Ａレベルを超えていない選択メモリセルＭＣｓｉ（０〜ｎ）について、ベリファイリード動作を実行する（ステップＳ１０８〜Ｓ１２４）。
【００６８】
尚、書込みシーケンスが開始された当初において、選択メモリセルＭＣｓは、Ｅｒレベルにあるので、ほとんどの選択メモリセルＭＣｓｉの閾値電圧は、まだＡレベルにも書込みデータのレベルにも達していない。従って、当初、選択メモリセルＭＣｓｉは、通常の書込みループで処理される。尚、上記例では、ｉ＝０〜ｎについて、順次ベリファイを実行するとしたが、実際には、ビット線ごとにセンスアンプが設けられているので、ｉ＝０〜ｎについて、ほぼ同時に並行にベリファイリードは実行される。また、ビット線ごとにセンスアンプが設けられてい無い場合であっても、並列回路を用いることによって、複数のｉについてベリファイリード動作を同時に実行してもよい。
【００６９】
（追加書込みの設定：閾値電圧がＡレベル以上）
通常の書込みループが繰り返されて、選択メモリセルＭＣｓｉの閾値電圧がＡレベルに達すると（Ｓ１１２のＹＥＳ）、コントローラ５は、その選択メモリセルＭＣｓｉを追加書込みへ移行させる（Ｓ１１６）。このとき、コントローラ５は、データ記憶回路８に格納された追加書込みのフラグを立てて（論理を反転させて）、その選択メモリセルＭＣｓｉが追加書込みの実行中であることを示す。それとともに、コントローラ５は、書込みレベルに対応したカウント数ｋ（ｉ）を設定する。カウント数ｋ（ｉ）は、書込みデータに対応した選択メモリセルＭＣｓｉの追加書込みの実行回数（所定回数）である。例えば、カウント数ｋ（ｉ）は、上述の通り、Ａ〜Ｇレベルのそれぞれに対応する０〜６のいずれかの数値となる。カウント数ｋ（ｉ）は、Ａレベルに達した選択メモリセルＭＣｓｉのそれぞれに（各ビットに対して）与えられ、データ記憶回路８に格納される。
【００７０】
次に、コントローラ５は、選択メモリセルＭＣｓｉを選択状態（書込み許可状態）に維持したままとし、ｉをｉ＋１へインクリメントする（Ｓ１１４）。これにより、コントローラ５は、選択メモリセルＭＣｓｉを選択状態のままとし、選択メモリセルＭＣｓｉ＋１の処理へ移行する（Ｓ１２４のＮＯ）。
【００７１】
全てのｉについてステップＳ１０８〜Ｓ１２４を実行後（Ｓ１２４のＹＥＳ）、上述したステップＳ１２６、Ｓ１２８を介してステップＳ１０２へ戻る。
【００７２】
このように、全てのｉに対して、Ａレベルを超えた選択メモリセルＭＣｓｉ（０〜ｎ）について、追加書込みの実行回数ｋが設定される（ステップＳ１１６）。
【００７３】
（追加書込みの実行：閾値電圧がＡレベル以上）
ステップＳ１１０において、追加書込みのフラグが立ち上がっており、追加書込みの実行中である場合（Ｓ１１０のＹＥＳ）、コントローラ５は、その選択メモリセルＭＣｓｉについて、ベリファイリード動作を実行せずに、カウント数ｋ（ｉ）をカウントダウンする（Ｓ１１８）。従って、追加書込み状態に設定された後、書込み動作（Ｓ１０２、Ｓ１０４）を実行するごとに、カウント数ｋ（ｉ）が１ずつデクリメントされる。
【００７４】
カウント数ｋ（ｉ）が０になっていない場合（Ｓ１２０）、コントローラ５は、選択メモリセルＭＣｓｉを選択状態に維持したままとし、ｉをｉ＋１へインクリメントする（Ｓ１１４）。コントローラ５は、選択メモリセルＭＣｓｉを選択状態のままとし、選択メモリセルＭＣｓｉ＋１の処理へ移行する（Ｓ１２４のＮＯ）。
【００７５】
ｉがｎを超えた場合（Ｓ１２４のＹＥＳ）、上述したステップＳ１２６、Ｓ１２８を介してステップＳ１０２へ戻る。
【００７６】
追加書込み（Ｓ１０２〜Ｓ１１０、Ｓ１１８、Ｓ１２０、Ｓ１１４、Ｓ１２４〜Ｓ１２８）が所定のカウント数ｋ（ｉ）の回数だけ実行されると、カウント数ｋ（ｉ）は０になる（Ｓ１２０のＹＥＳ）。この場合、コントローラ５は、その選択メモリセルＭＣｓｉを書込み禁止に設定し、ｉをｉ＋１へインクリメントする（Ｓ１１２、Ｓ１１４）。書込み禁止の選択メモリセルＭＣｓｉに接続されたビット線ＢＬは、高レベル電圧に固定される。
【００７７】
このように、ｉをインクリメントしながら、追加書込み状態に設定された選択メモリセルＭＣｓｉ（０〜ｎ）について、追加書込みがカウント数ｋだけ実行される。
【００７８】
以上のように、選択メモリセルＭＣｓｉは、その閾値電圧がＡレベルに達するまで通常の書込みループで書き込まれ、閾値電圧がＡレベルに達すると、追加書込み状態となりベリファイリード動作の対象から外れる。そして、選択メモリセルＭＣｓｉは、書込みデータに応じた所定のカウント数ｋ（ｉ）だけ追加書込み動作で書き込まれる。これにより、本実施形態によるフォギー書込みが終了する。
【００７９】
尚、ページ内の選択メモリセルＭＣｓｉ（０〜ｎ）の閾値電圧は、それぞれ異なる。従って、ステップＳ１０８〜Ｓ１２４の或る１回の処理において、選択メモリセルＭＣｓｉ（０〜ｎ）が全て同じ処理を受けるとは限らず、それぞれ異なる処理（書込み禁止、通常の書込みループ、追加書込みの設定、または、追加書込みの書込みループ）を受ける場合がある。
【００８０】
（ファイン書込み）
ファイン書込みは、フォギー書込み後に実行され、フォギー書込みよりも狭い閾値範囲内に各データを精度良く書き込む段階である。フォギー書込みによって大まかに書き込まれた選択メモリセルＭＣｓの閾値電圧は、図４（Ｃ）に示すように、ファイン書込みによって所望の閾値範囲内に書き込まれる。
【００８１】
ファイン書込みにおいて、改めて、書込みループが繰り返し実行される。書込み対象である選択メモリセルＭＣｓがＡ〜Ｇレベルに対応するベリファイリードをパス（合格）したときにファイン書込みは終了する。ベリファイレベルは、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇの順に大きくなるように設定される。即ち、ファイン書込みでは、書込みデータの各閾値電圧レベル（Ａ〜Ｇ）のそれぞれに対応したベリファイレベルが用いられる。Ａ〜Ｇレベルのベリファイレベルは、通常の読み出し動作に用いられる基準電圧にほぼ等しい。これにより、選択メモリセルＭＣｓの閾値電圧は、それぞれ、ファイン書込みにおいて、選択メモリセルＭＣｓは、Ａ〜Ｇレベルに対応する所望の閾値分布に書き込まれる。ファイン書込みにおいても、Ｅｒレベルの選択メモリセルＭＣｓは、そのままの状態を維持し、書き込みは実行されない。これにより、Ｅｒ〜Ｇレベルの３ビットデータが選択メモリセルＭＣｓに書き込まれる。
【００８２】
図８は、ファイン書込みにおけるワード線電圧ＶＷＬを示すグラフである。縦軸は、ワード線電圧ＶＷＬを示し、横軸は、時間を示す。図８に示すように、コントローラ５は、書込み電圧Ｖｐｇｍで選択メモリセルＭＣｓに書込みを実行した後、ベリファイリード動作においてＡ〜Ｇレベルのそれぞれについてベリファイを実行する。
【００８３】
次の書込みループでは、書込み電圧Ｖｐｇｍをステップアップ幅ΔＶｐｇｍだけ上昇させる。書込みデータのレベルに達した選択メモリセルＭＣｓは、それ以降の書込みループにおいて書込みが実行されないように非選択状態（書込み禁止状態）となる。即ち、ベリファイをパスした選択メモリセルＭＣｓに対応するビット線ＢＬは、高レベル電圧に固定される。
【００８４】
このような書込みループを繰り返すことによって、図４（Ｃ）に示す閾値分布が得られる。
【００８５】
本実施形態によるメモリは、フォギー書込みにおいて、ｉ番目の選択メモリセルＭＣｓｉの閾値電圧がＡレベル（第１レベル）に達した後、該選択メモリセルＭＣｓｉに書き込む書込みデータに応じたカウント数ｋ（ｉ）（所定回数）だけ追加書込みを実行する。これにより、書込みループにおいて、Ａレベル以外のＢ〜Ｇレベルのそれぞれのベリファイリード動作が不要となり、各書込みループ時間が短縮される。例えば、単純には比較はできないが、図５の書込みループ時間Ｔｌｏｏｐ１と図８のＴｌｏｏｐ２とを参照すれば、本実施形態によるフォギー書込み期間Ｔｌｏｏｐ１が非常に短いことは理解できる。これにより、フォギー書込みの期間が大幅に短縮され、書込み全体の期間を短縮することができる。
【００８６】
あるいは、フォギー書込みが短縮される分、ファイン書込みに時間を掛けることもできる。例えば、図９（Ａ）および図９（Ｂ）は、データ書込み時間を示す概念図である。
【００８７】
図９（Ａ）は、フォギー書込みにおいて、Ａ〜Ｇレベルのベリファイリード動作を実行している。従って、フォギー書込み時間Ｔｆｏｇｇｙ１が比較的長い。図９（Ｂ）は、フォギー書込みにおいて、上述した本実施形態によるフォギー書込みを実行する。従って、フォギー書込み時間Ｔｆｏｇｇｙ２がフォギー書込み時間Ｔｆｏｇｇｙ１よりも非常に短い。フォギー書込み時間Ｔｆｏｇｇｙ２が短縮された分、ファイン書込み時間Ｔｆｉｎｅ２を長くすることができる。図９（Ａ）および図９（Ｂ）を比較すると、書込み全体の時間Ｔｔｏｔａｌは同じであるものの、ファイン書込み時間Ｔｆｉｎｅ２は、ファイン書込みＴｆｉｎｅ１よりもかなり長い。このように、ファイン書込み時間Ｔｆｉｎｅ２に時間を掛けることにより、書込み後の閾値分布を非常に狭く（鋭く）することができる。例えば、ステップアップ幅ΔＶｐｇｍを小さくして、選択メモリセルＭＣｓの閾値電圧を小刻みに上昇させれば、ファイン書込み時間Ｔｆｉｎｅ２は長くなるが、Ａ〜Ｇレベルのそれぞれの閾値分布を非常に狭くすることができる。このように、本実施形態によるメモリは、書込み時間を長期化することなく、メモリセルの閾値分布を狭くすることができる。
【００８８】
尚、上記実施形態において、Ａレベルを第１レベルとして、選択メモリセルＭＣｓの閾値電圧がＡレベルを超えた後に、追加書込みを実行している。しかし、第１レベルは、Ａレベル以外のＢ〜Ｇレベルであってもよい。
【００８９】
また、本実施形態は、ＱＰＷ（Quick Pass Write）方式を採用してもよい。ＱＰＷ方式では、選択メモリセルの閾値電圧がベリファイ・ロウレベルを超えたときに、次の書込みループにおいて、当該選択メモリセルに対応するビット線の電圧をΔＶｃｈ（ΔＶｃｈは、例えば、０〜２×ΔＶｐｇｍ）だけ上昇させる。これにより、ビット線コントローラＢＬＣは、ベリファイ・ロウレベルを超えた選択メモリセルに印加される書込み電圧の上昇を緩和させ、その後の書込みループにおいて、選択メモリセルＭＣｓの閾値電圧を小刻みに上昇させる。その後、その閾値電圧がベリファイ・ハイレベルを超えたときに、選択メモリセルＭＣｓへの書き込みシーケンスを終了する。このようなＱＰＷをファイン書込みに採用してもよい。
【００９０】
また、本実施形態では、追加書込みを用いた書込みは、フォギー書込みにおいて用いられている。しかし、追加書込みを用いた書込みを、ファイン書込みに用いてもよい。この場合、閾値分布が或る程度広がるものの、書込み速度が短縮され得る。
【００９１】
（変形例１）
図１０は、第１の実施形態の変形例１によるフォギー書込みにおけるワード線電圧ＶＷＬを示すグラフである。変形例１では、書込みループを繰り返し実行し、ほぼ全ての選択メモリセルＭＣｓｉがＡレベル以上のレベルに達し、あるいは、書込み禁止状態になった場合に、コントローラ５は、その後、Ａレベルのベリファイリード動作を省略する。即ち、ほぼ全ての選択メモリセルＭＣｓｉが追加書込み状態（図７のＳ１１０のＹＥＳ）、または、書込み禁止状態（Ｓ１０８のＹＥＳ）のいずれかになった場合、コントローラ５は、その後の各書込みループにおいて、書込み動作を実行するが、ベリファイリード動作を省略する（ノーベリファイループ）。
【００９２】
尚、変形例１では、コントローラ５は、Ａレベルに達していない選択メモリセルＭＣｓの個数が所定値以下（例えば、選択メモリセルＭＣｓの総数の０．１％以下）になったときに、コントローラ５は、ノーベリファイループを実行すればよい。
【００９３】
変形例１によれば、ほぼ全ての選択メモリセルＭＣｓｉの閾値電圧がＡレベルに達しあるいは選択メモリセルＭＣｓｉ書込み禁止状態となった場合に、コントローラ５は、ノーベリファイループにおいて余分なベリファイリード動作を省略する。これにより、変形例１によるメモリは、書込みループ時間をさらに短縮することができる。例えば、ノーマルベリファイループの書込みループの時間Ｔｌｏｏｐ３は、ベリファイリード動作を有する書込みループの時間Ｔｌｏｏｐ１よりも短い。これにより、フォギー書込みの期間が短縮され、書込み全体の期間をさらに短縮することができる。
【００９４】
（変形例２）
図１１は、第１の実施形態の変形例２によるフォギー書込みにおけるワード線電圧ＶＷＬを示すグラフである。変形例２では、コントローラ５は、書込み電圧Ｖｐｇｍで選択メモリセルＭＣｓに書込みを実行した後、ＡレベルおよびＤレベルのベリファイリード動作を実行し、Ｂ、Ｃ、Ｅ、Ｆ、Ｇレベルのベリファイリード動作を実行しない。
【００９５】
変形例２では、選択メモリセルＭＣｓにＢまたはＣレベルのデータを書き込む場合、コントローラ５は、Ａレベルに達してから追加書込みを実行する。選択メモリセルＭＣｓにＥ、ＦまたはＧレベルのデータを書き込む場合、コントローラ５は、Ｄレベルに達してから追加書込みを実行する。
【００９６】
選択メモリセルＭＣｓにＡまたはＤレベルのデータを書き込む場合、追加書込みは、実行しなくてよい。選択メモリセルＭＣｓにＢレベルのデータを書き込む場合、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＡレベルに達してから追加書込みを１回実行すればよい。選択メモリセルＭＣｓにＣレベルのデータを書き込む場合、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＡレベルに達してから追加書込みを２回実行すればよい。選択メモリセルＭＣｓにＥレベルのデータを書き込む場合、選択メモリセルＭＣｓの閾値電圧がＤレベルに達してから追加書込みを１回実行すればよい。選択メモリセルＭＣｓにＦレベルのデータを書き込む場合、選択メモリセルＭＣｓの閾値電圧がＤレベルに達してから追加書込みを２回実行すればよい。選択メモリセルＭＣｓにＧレベルのデータを書き込む場合、選択メモリセルＭＣｓの閾値電圧がＤレベルに達してから追加書込みを３回実行すればよい。
【００９７】
このように、変形例２では、コントローラ５は、複数のＡおよびＤレベルについてベリファイリード動作を実行し、他のＢ、Ｃ、Ｅ、Ｆ、Ｇレベルのベリファイリード動作を実行しない。ＡレベルとＤレベルとの間のＢ、Ｃレベルのデータを書込む際には、コントローラ５は、選択メモリセルＭＣｓｉの閾値電圧がＡレベル（第１レベル）に達した後、該選択メモリセルＭＣｓｉに書き込む書込みデータに応じたカウント数ｋ（ｉ）（所定回数）だけ追加書込みを実行する。Ａ、Ｂ、Ｃレベルのデータを書き込む場合、カウント数ｋ（ｉ）はそれぞれ０、１、２となる。
【００９８】
Ｄレベル以上のＥ、Ｆ、Ｇレベルのデータを書込む際には、コントローラ５は、選択メモリセルＭＣｓｉの閾値電圧がＤレベル（第２レベル）に達した後、該選択メモリセルＭＣｓｉに書き込む書込みデータに応じたカウント数ｋ（ｉ）だけ追加書込みを実行する。Ｄ、Ｅ、Ｆ、Ｇレベルのデータを書き込む場合、カウント数ｋ（ｉ）はそれぞれ０、１、２、３となる。
【００９９】
このように、ベリファイリード動作において一部のレベルのベリファイを省略し、他の複数のレベルのベリファイを実行してもよい。ただし、ベリファイを行うレベル数が多いほど、書込みループ時間は長くなる。例えば、変形例２の書込みループ時間Ｔｌｏｏｐ４は、図５の書込みループ時間Ｔｌｏｏｐ１よりも長くなる。
【０１００】
一方、変形例２では、複数のレベルでベリファイを行うので、フォギー書込み終了後、各レベルの閾値分布を狭くすることができる。例えば、上記第１の実施形態では、Ｇレベルのデータを書き込む際には、選択メモリセルＭＣｓは、Ａレベルに達した後、追加書込みが６回実行される。この６回の追加書込みの間、選択メモリセルＭＣｓは、ベリファイリードされない。一方、変形例２では、Ｇレベルのデータを書き込む際には、選択メモリセルＭＣｓは、Ｄレベルに達した後、追加書込みが３回実行されるだけである。従って、選択メモリセルＭＣｓの閾値電圧のばらつき（分布）は、第１の実施形態よりも変形例２において小さくなる。
【０１０１】
変形例１および変形例２は、組み合わせてもよい。
【０１０２】
また、追加書込み回数は、書込みデータの複数の隣接レベルに対して等しくても（共通であっても）よい。例えば、ＢおよびＣレベルのデータを書き込む選択メモリセルＭＣｓについては、追加書込み回数を１回とする。この場合、選択メモリセルＭＣｓの閾値電圧がＡレベルのベリファイレベルに達した後、１回の追加書込みを実行する。ＤおよびＥレベルのデータを書き込む選択メモリセルＭＣｓについては、追加書込み回数を２回とする。この場合、選択メモリセルＭＣｓの閾値電圧がＡレベルのベリファイレベルに達した後、２回の追加書込みを実行する。ＦおよびＧレベルのデータを書き込む選択メモリセルＭＣｓについては、追加書込み回数を３回とする。この場合、選択メモリセルＭＣｓの閾値電圧がＡレベルのベリファイレベルに達した後、３回の追加書込みを実行する。この場合、ΔＶｐｇｍは、隣接するベリファイレベル間の電圧差の約２倍にすればよい。
【０１０３】
上記実施形態では、メモリセルＭＣはＴＬＣであったが、メモリセルＭＣは、ＭＬＣ、あるいは、ＱＬＣ以上であってもよい。以下、ＱＬＣに上記実施形態または変形例を適用した例を簡単に説明する。
【０１０４】
（ＱＬＣ）
第１の実施形態をＱＬＣに採用する場合、書込みデータ４ビットデータとなるので、書込みレベルは、Ｅｒレベルのほか、Ａ〜Ｏレベル（第１〜第１５レベル）となる。この場合、第１の実施形態と同様に、コントローラ５は、書込みシーケンスにおいて、選択メモリセルＭＣｓの閾値電圧がＡレベルに達した後、書込みデータ（Ａ〜Ｏレベル）に応じた追加書込み回数（０〜１５回）だけ書込み動作を実行すればよい。この場合、追加書込み回数は、Ａレベルより高くかつ選択メモリセルＭＣｓへの書込みデータの閾値電圧レベル（Ｂ〜Ｏレベル）以下のレベル数に等しい。尚、選択メモリセルＭＣｓの閾値電圧は、Ａ〜Ｏレベルのアルファベット順に従って上昇する。
【０１０５】
しかし、ＱＬＣは、書込みレベル数が多いので、追加書込み回数は、複数の閾値電圧レベルに対して共通に設定されてもよい。例えば、Ｂ〜Ｅレベルのデータを書き込む選択メモリセルＭＣｓについては、追加書込み回数を１回とし、Ｆ〜Ｉレベルのデータを書き込む選択メモリセルＭＣｓについては、追加書込み回数を２回とし、Ｊ〜Ｌレベルのデータを書き込む選択メモリセルＭＣｓについては、追加書込み回数を３回とし、Ｍ〜Ｏレベルのデータを書き込む選択メモリセルＭＣｓについては、追加書込み回数を４回とする。このように、フォギー書込みにおける追加書込み回数は設定されてもよい。これにより、書込みレベル数が多い場合であっても、書込みデータを選択メモリセルＭＣｓに短時間に効率良くフォギー書込みすることができる。勿論、書込みレベルと追加書込み回数との関係は任意に設定可能である。
【０１０６】
また、変形例２をＱＬＣに適用してもよい。この場合、コントローラ５は、複数レベルについてベリファイリード動作を実行するが、その他のレベルについてはベリファイリード動作を実行しない。以下、ベリファイリードを実行するレベルをベリファイレベルともいう。この場合、コントローラ５は、選択メモリセルＭＣｓの閾値電圧が書込みデータのレベル以下でかつ書込みデータに最も近いベリファイレベルに達した後、書込みデータに応じた回数だけ書込み動作を実行する。例えば、Ａ、Ｅ、Ｉ、Ｍレベルをベリファイレベルとする。この場合、Ｂレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＡレベルに達した後、追加書込みを１回実行する。Ｃレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＡレベルに達した後、追加書込みを２回実行する。Ｄレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＡレベルに達した後、追加書込みを３回実行する。Ｆレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＥレベルに達した後、追加書込みを１回実行する。Ｇレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＥレベルに達した後、追加書込みを２回実行する。Ｈレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＥレベルに達した後、追加書込みを３回実行する。Ｊレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＩレベルに達した後、追加書込みを１回実行する。Ｋレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＩレベルに達した後、追加書込みを２回実行する。Ｌレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＩレベルに達した後、追加書込みを３回実行する。Ｎレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＭレベルに達した後、追加書込みを１回実行する。Ｏレベルのデータを書き込む選択メモリセルＭＣｓについて、コントローラ５は、選択メモリセルＭＣｓの閾値電圧がＭレベルに達した後、追加書込みを２回実行する。尚、ベリファイレベルとしてのＡ、Ｅ、Ｉ、Ｍレベルのデータを書き込む選択メモリセルＭＣｓについては、追加書込みは不要となる。このように、上記変形例２は、ＱＬＣに適用することもできる。これにより、書込みレベル数が多い場合であっても、書込みデータを選択メモリセルＭＣｓに短時間に効率良くフォギー書込みすることができる。勿論、変形例１もＱＬＣに適用することもできる。
【０１０７】
また、上記第１の実施形態および変形例１、２は、メモリセルアレイが平面状に配列された２次元構造メモリだけでなく、メモリセルアレイが立体的に配列された３次元構造（積層型）メモリにも適用可能である。
【０１０８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１０９】
１・・・メモリセルアレイ、２・・・センスアンプ回路、３・・・ロウデコーダ、４・・・Ｉ／Ｏバッファ、５・・・コントローラ、６・・・電圧発生回路、７・・・ＲＯＭヒューズ、８・・・データ記憶回路、ＳＡ・・・センスアンプ、ＢＬＣ・・・ビット線コントローラ、ＲｏｗＤＥＣ・・・ロウデコーダ、ＷＤＲＶ・・・ワード線ドライバ
【図１】
0006539608.tif 000002
【図２】
0006539608.tif 000003
【図３】
0006539608.tif 000004
【図４】
0006539608.tif 000005
【図５】
0006539608.tif 000006
【図６】
0006539608.tif 000007
【図７】
0006539608.tif 000008
【図８】
0006539608.tif 000009
【図９】
0006539608.tif 000010
【図１０】
0006539608.tif 000011
【図１１】
0006539608.tif 000012