(57)【特許請求の範囲】
【請求項１】
ロウ及びカラムに沿って配列され、複数のしきい値にそれぞれ対応する２値以上のデータを記憶する複数のメモリセルを含むメモリセルアレイと、
前記メモリセルアレイのロウを制御するロウ制御回路と、
前記メモリセルアレイのカラムを制御するカラム制御回路と、
前記カラム制御回路内に設けられ、外部データ及びベリファイの結果を一時的に保持するラッチ回路と、
前記カラム制御回路内に設けられ、書き込み対象のメモリセルの個数及び前記ベリファイをパスしたメモリセルの個数を検知するビットスキャン回路と、
前記カラム制御回路内に設けられ、前記ビットスキャン回路の検知結果に基づいて演算処理を実行する演算ユニットと、
選択ワード線に接続されたメモリセルに前記外部データを書き込むように、前記ロウ及びカラム制御回路の動作を制御し、下位データの書き込み中に上位データの書き込みのための書き込み電圧を計算する第１モードと、設定情報に基づいて書き込み電圧が設定される第２モードとによって、前記外部データの書き込みを制御する制御回路と、
を具備し、
前記下位データの書き込みを開始する前に、前記ビットスキャン回路は、前記書き込み対象のメモリセルの個数を検知し、前記演算ユニットは、前記書き込み対象のメモリセルの個数と所定の判定値とを比較し、この比較結果に基づいて、前記第１モードで書き込みを実行するか前記第２モードで書き込みを実行するかを判定する、ことを特徴とする不揮発性半導体メモリ。
【請求項２】
前記書き込み対象のメモリセルの個数が前記所定の判定値以上である場合、前記第１モードが選択され、
前記書き込み対象のメモリセルの個数が前記所定の判定値より小さい場合、前記第２モードが選択されることを特徴とする請求項１に記載の不揮発性半導体メモリ。
【請求項３】
前記ビットスキャン回路は、前記書き込み対象のメモリセルのうち所定の個数のメモリセルをスキャンすることを特徴とする請求項１又は２に記載の不揮発性半導体メモリ。
【請求項４】
前記ベリファイをパスしたメモリセルの個数が前記判定値以上となった場合、前記制御回路は、前記第２モードで前記下位データの書き込みを実行することを特徴とする請求項１乃至３のうちいずれか１項に記載の不揮発性半導体メモリ。
【請求項５】
前記スキャン結果において前記ベリファイをパスしたメモリセルの個数が前記判定値以上であった場合、前記ベリファイの前に前記選択ワード線に印加された書き込み電圧が記憶されることを特徴とする請求項１乃至４のうちいずれか１項に記載の不揮発性半導体メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリに関する。
【背景技術】
【０００２】
近年、フラッシュメモリは、ＨＤＤ、ＣＤ／ＤＶＤなどとともに、主要なストレージデバイスとして、普及している。フラッシュメモリは、メモリセルが記憶するデータの多値化によって、大容量化が推進されている。
【０００３】
フラッシュメモリの多値化に伴って、データに対応するメモリセルのしきい値の間隔がより細かく制御される。このため、１回の動作シーケンスにおける書き込み回数（書き込み電圧の印加回数）が増加し、書き込み時間が増大する傾向がある。
【０００４】
それゆえ、フラッシュメモリには、信頼性を保ちながら、書き込み時間の増大を抑制するための様々な技術が、提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−６７２９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データ書き込み時の時間の増大を抑制する技術を提案する。
【課題を解決するための手段】
【０００７】
本実施形態の不揮発性半導体メモリは、ロウ及びカラムに沿って配列され、複数のしきい値にそれぞれ対応する２値以上のデータを記憶する複数のメモリセルを含むメモリセルアレイと、前記メモリセルアレイのロウを制御するロウ制御回路と、前記メモリセルアレイのカラムを制御するカラム制御回路と、前記カラム制御回路内に設けられ、外部データ及びベリファイの結果を一時的に保持するラッチ回路と、前記カラム制御回路内に設けられ、書き込み対象のメモリセルの個数及び前記ベリファイをパスしたメモリセルの個数を検知するビットスキャン回路と、前記カラム制御回路内に設けられ、前記ビットスキャン回路の検知結果に基づいて演算処理を実行する演算ユニットと、選択ワード線に接続されたメモリセルに前記外部データを書き込むように、前記ロウ及びカラム制御回路の動作を制御し、下位データの書き込み中に上位データの書き込みのための書き込み電圧を計算する第１モードと、設定情報に基づいて書き込み電圧が設定される第２モードとによって、前記外部データの書き込みを制御する制御回路と、を具備し、前記下位データの書き込みを開始する前に、前記ビットスキャン回路は、前記書き込み対象のメモリセルの個数を検知し、前記演算ユニットは、前記書き込み対象のメモリセルの個数と所定の判定値とを比較し、この比較結果に基づいて、前記第１モードで書き込みを実行するか前記第２モードで書き込みを実行するかを判定する。
【図面の簡単な説明】
【０００８】
【図１】不揮発性半導体メモリの回路構成の一例を示すブロック図。
【図２】メモリセルアレイの内部構成を示す等価回路図。
【図３】記憶するデータとメモリセルのしきい値電圧との対応関係の一例を示す図。
【図４】センスアンプ回路の内部構成を説明するための図。
【図５】本実施形態の不揮発性半導体メモリの書き込み動作を説明するための図。
【図６】本実施形態の不揮発性半導体メモリの書き込み動作を説明するための図。
【図７】本実施形態の不揮発性半導体メモリの書き込み動作を説明するための図。
【図８】本実施形態の不揮発性半導体メモリの動作例を示すフローチャート。
【図９】本実施形態の不揮発性半導体メモリの動作を説明するための模式図。
【発明を実施するための形態】
【０００９】
［実施形態］  
以下、図１乃至図９を参照しながら、本実施形態に係る不揮発性半導体メモリについて詳細に説明する。以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複する説明は必要に応じて行う。
【００１０】
（１）  構成  
図１乃至図７を用いて、本実施形態の不揮発性半導体メモリの構成及び機能について、説明する。
【００１１】
図１は、本実施形態の不揮発性半導体メモリの構成の主要部を示すブロック図である。以下では、不揮発性半導体メモリとして、フラッシュメモリを例示して説明する。
【００１２】
メモリセルアレイ１は、複数のメモリセルを有している。複数のメモリセルによって、複数のメモリセルユニットＭＵが形成される。
【００１３】
図２を用いて、図１のメモリセルアレイ１の内部構成について説明する。  
図１に示されるフラッシュメモリが、例えば、ＮＡＮＤ型フラッシュメモリである場合、メモリセルアレイ１は、複数のブロックＢＬＫを有する。このブロックＢＬＫとは、消去の最小単位を示している。
【００１４】
図２は、１つのブロックＢＬＫの回路構成を示す等価回路図である。１つのブロックＢＬＫは、ｘ方向（第１の方向）に並んだ複数のメモリセルユニットＭＵから構成される。１つのブロックＢＬＫ内に、例えば、ｑ個のメモリセルユニットＭＵが設けられている。
【００１５】
１つのメモリセルユニットＭＵは、複数（例えば、ｐ個）のメモリセルＭＣ１〜ＭＣｐから形成されるメモリセルストリングと、メモリセルストリングの一端に接続された第１の選択トランジスタＳＴＳ（以下、ソース側選択トランジスタとよぶ）と、メモリセルストリングの他端に接続された第２の選択トランジスタＳＴＤ（以下、ドレイン側選択トランジスタとよぶ）とを含んでいる。メモリセルストリングにおいて、メモリセルＭＣ１〜ＭＣｐの電流経路が、ｙ方向（第２の方向）に沿って直列接続されている。
【００１６】
メモリセルユニットＭＵの一端（ソース側）、より具体的には、ソース側選択トランジスタＳＴＳの電流経路の一端には、ソース線ＳＬが接続される。また、メモリセルユニットＭＵの他端（ドレイン側）、すなわち、ドレイン側選択トランジスタＳＴＤの電流経路の一端にはビット線ＢＬが接続されている。
【００１７】
尚、１つのメモリセルユニットＭＵを構成するメモリセルの個数は、２個以上であればよく、例えば、１６個、３２個あるいは６４個以上でもよい。以下では、メモリセルＭＣ１〜ＭＣｐを区別しない場合には、メモリセルＭＣと表記する。
【００１８】
メモリセルＭＣは、電荷蓄積層（例えば、浮遊ゲート電極、又は、トラップ準位を含む絶縁膜）を有するスタックゲート構造の電界効果トランジスタである。ｙ方向に隣接する２つのメモリセルはソース／ドレインが接続されている。これによって、メモリセルＭＣの電流経路が直列接続され、メモリセルストリングが形成される。
【００１９】
ソース側選択トランジスタＳＴＳのドレインは、メモリセルＭＣ１のソースに接続される。ソース側選択トランジスタＳＴＳのソース／ドレインの他方は、ソース線ＳＬに接続される。ドレイン側選択トランジスタのソースは、メモリセルＭＣｐのドレインに接続されている。ドレイン側選択トランジスタＳＴＤのドレインは、ビット線ＢＬ１〜ＢＬｑに接続されている。ビット線ＢＬ１〜ＢＬｑの本数は、ブロックＢＬＫ内のメモリセルユニットＭＵの個数と同じである。
【００２０】
ワード線ＷＬ１〜ＷＬｐはｘ方向に延在し、各ワード線ＷＬ１〜ＷＬｐはｘ方向に沿って配列された複数のメモリセルＭＣのゲートに共通に接続される。１つのメモリセルユニットＭＵにおいて、ワード線の本数は、１つのメモリセルストリングを構成するメモリセルの個数（ｐ個）と、同じになる。
【００２１】
ドレイン側セレクトゲート線ＳＧＤＬはｘ方向に延び、ｘ方向に沿って配列された複数のドレイン側選択トランジスタＳＴＤのゲートに共通に接続される。ソース側セレクトゲート線ＳＧＳＬはｘ方向に延び、ｘ方向に沿って配列された複数のソース側選択トランジスタＳＴＳのゲートに共通に接続される。
【００２２】
以下では、各ビット線ＢＬ１〜ＢＬｑを区別しない場合には、ビット線ＢＬと表記し、各ワード線ＷＬ１〜ＷＬｐを区別しない場合には、ワード線ＷＬと表記する。
【００２３】
図３は、メモリセルに書き込まれるデータとメモリセルのしきい値電圧との対応関係の一例を示している。
【００２４】
図３は、メモリセルＭＣのしきい値電圧を示すグラフであり、縦軸にしきい値電圧（しきい値レベル、しきい値電位ともよぶ）Ｖｔｈを示し、横軸にメモリセルの存在確率を示している。
【００２５】
図３に示されるように、例えば、４値のフラッシュメモリにおいて、各々のメモリセルＭＣは４値のデータを保持できる。より具体的には、メモリセルＭＣは、しきい値電圧Ｖｔｈの低い順に“Ｅ”（“Ｅｒ”）レベル、“Ａ”レベル、“Ｂ”レベル、及び“Ｃ”レベルの４種（２ビット）のデータを保持できる。“Ｅ”、“Ａ”、“Ｂ”、及び“Ｃ”レベルは、２進数表示でそれぞれ“１１”、“０１”、“００”、及び“１０”データに、それぞれ対応づけられる。この２ビットのデータの各ビットを、図３に示されるように、上位（upper）ビット（または上位データ）及び下位（lower）ビット（または下位データ）とよぶ。尚、“Ｅ”〜“Ｃ”レベルと“００”〜“１１”データとの関係は、図３の場合に限られるものでは無く、適宜選択できる。
【００２６】
“Ｅ”（Erase）レベルは消去レベルであり、そのしきい値電圧ＶｔｈＥはＶｔｈＥ＜ＡＲである。“Ａ”レベルのしきい値電圧ＶｔｈＡは、ＡＲ＜ＶｔｈＡ＜ＢＲである。“Ｂ”レベルのしきい値電圧ＶｔｈＢは、ＢＲ＜ＶｔｈＢ＜ＣＲである。“Ｃ”レベルのしきい値電圧ＶｔｈＣは、ＣＲ＜ＶｔｈＣ＜ＶＲＥＡＤである。
【００２７】
本実施形態において、“Ｃ”レベルのデータを記憶しているメモリセルのことを、“Ｃ”レベルセルとよぶ。“Ｂ”レベルのデータを記憶しているメモリセルのことを、“Ｂ”レベルセルとよぶ。“Ａ”レベルのデータを記憶しているメモリセルのことを、“Ａ”レベルセルとよぶ。また、“Ｅ”レベル（消去状態）のメモリセルのことを、“Ｅ”レベルセルとよぶ。
【００２８】
上記の電位ＶＲＥＡＤ，ＣＲ，ＢＲ，ＡＲは、読み出しコマンドの基づくデータの読み出し、又は、ベリファイのためのデータの読み出しに用いられる電位である。本実施形態において、電位（読み出しレベル）ＣＲを読み出しレベルに用いて行うデータの読み出し、すなわち、しきい値が“Ｃ”レベルなのか、“Ｂ”レベル以下なのかの判定を、“Ｃ”読み出しとよぶ。また、電位ＢＲを用いて行うデータの読み出し、すなわち、しきい値が“Ｂ”レベル以上なのか、“Ａ”レベル以下なのかの判定を、“Ｂ”読み出しとよぶ。さらに、電位ＡＲを用いて行うデータの読み出し、すなわち、しきい値が“Ａ”レベル以上なのか、“Ｅ”レベルなのかの判定を、“Ａ”読み出しとよぶ。
【００２９】
電位ＶＲＥＡＤは、データの読み出し時において、読み出し対象のワード線以外の非選択ワード線に印加される非選択電位である。電位ＶＲＥＡＤは、メモリセルがオンする大きさに設定される。
【００３０】
データ書き込み時に書き込み電圧（プログラム電圧又は書き込みパルスともよばれる）が印加された後に、所定の判定基準を用いたベリファイ（書き込みベリファイともよばれる）が実行される。  
例えば、各しきい値の分布に対して、その低電位側のレベルが、ベリファイのための判定基準となる電位レベルとして用いられる。ただし、低電位側のレベルに加えて、しきい値の高電位側のレベルに対して、ベリファイのための判定基準が設定されてもよい。
【００３１】
“Ｃ”レベルのしきい値分布において、ベリファイの判定基準として、その分布の低電位端のレベルに対して、判定レベル“ＣＶ”（＞ＣＲ）が設定される。また、“Ｃ”レベルの分布の高電位端のレベルに対して、判定レベル“ＣＶＨ”（＜ＶＲＥＡＤ）が判定基準としてさらに設定されてよい。“Ｂ”レベルのしきい値分布において、ベリファイの判定基準として、その分布の低電位端のレベルに対して、判定レベル“ＢＶ”（ＢＶＨ＞ＢＶ＞ＢＲ）が設定される。“Ｂ”レベルの分布の高電位端のレベルに対して、判定レベル“ＢＶＨ”（＜ＣＲ）が判定基準としてさらに設定されてもよい。“Ａ”レベルのしきい値分布において、ベリファイの判定基準として、その分布の低電位端のレベルに対して、判定レベル“ＡＶ”（ＡＶＨ＞ＡＶ＞ＡＲ）が設定される。“Ａ”レベルのしきい値分布において、その分布の高電位端のレベルに対して、判定レベル“ＡＶＨ”（＜ＢＲ）が判定基準としてさらに設定されてもよい。また、“Ｅ”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベル“ＥＶＨ”（＜ＡＲ）が設定されている。
【００３２】
判定レベルＣＶＨ，ＢＶＨ，ＡＶＨを、“ＣＶＨ”レベル、“ＢＶＨ”レベル、“ＡＶＨ”レベルとそれぞれよぶ。また、判定レベルＣＶ，ＢＶ，ＡＶを、“ＣＶ”レベル、“ＢＶ”レベル、“ＡＶ”レベルとそれぞれよぶ。
【００３３】
所定の判定レベルによるベリファイをパスしたメモリセルのしきい値は、書き込むべきデータに対応した所定のしきい値の範囲内にシフトされている。
【００３４】
データは、同一のワード線ＷＬに接続されたメモリセルＭＣに対して、一括して書き込まれ、また読み出される。この際、データは下位ビット毎、または上位ビット毎に書き込まれ、また読み出される。したがって、メモリセルＭＣが２ビットデータを保持している場合には、１本のワード線ＷＬあたり、２つのページが割り当てられていることになる。以下、下位ビットについて一括して書き込みまたは読み出されるページを下位ページとよび、上位ビットについて一括して書き込みまたは読み出されるページを上位ページとよぶ。
【００３５】
ロウ制御回路２は、メモリセルアレイ１のロウを制御する。ロウ制御回路２は、メモリセルアレイ１内に設けられたワード線及びセレクトゲート線に接続されている。ロウ制御回路２は、ロウデコーダ及びドライバを有し、アドレスバッファ（図示せず）から転送されたロウアドレス信号に基づいて、ブロック及びページ（ワード線）を選択し、ワード線及びセレクトゲート線の動作（電位）を制御する。
【００３６】
カラム制御回路２は、メモリセルアレイ１のカラムを制御する。カラム制御回路２は、カラムデコーダ３１、センスアンプ回路３２、ビットスキャン回路３３及び演算ユニット３４を含んでいる。
【００３７】
カラムデコーダ３１は、アドレスバッファから転送されたカラムアドレス信号に基づいて、メモリセルアレイ１のカラムを選択し、センスアンプ回路３２を駆動させる。
【００３８】
センスアンプ回路３２は、メモリセルアレイ１内に設けられたビット線に接続されている。センスアンプ回路３２は、ビット線の電位変動を検知及び増幅し、メモリセルが記憶するデータを判別する。
【００３９】
図４を用いて、センスアンプ回路３２の内部構成について、説明する。図４は、センスアンプ回路３２の内部構成の一例を模式的に示している。
【００４０】
センスアンプ回路３２は、複数のカラムユニットＣＵを含んでいる。各カラムユニットＣＵは、各ビット線ＢＬにそれぞれ対応するように、設けられている。なお、２つのカラムユニットで１つのセンスアンプ回路３２を共有していても良い。
【００４１】
各カラムユニットＣＵは、１つのセンスユニット３２１及び１つのラッチ回路３２５を含んでいる。センスユニット３２１及びラッチ回路３２５は、メモリセルアレイ１のカラムに対応するように、１つのカラムに対して１つずつ設けられている。つまり、１つのセンスユニット３２１と１つのラッチ回路３２５が、１つのビット線ＢＬ及びそのビット線ＢＬに接続されたメモリセルユニットＭＵに対応している。
【００４２】
１つのセンスユニット３２１は、１本のビット線ＢＬに接続される。１つのラッチ回路３２５は、センスユニット３２１を経由して、ビット線ＢＬに接続される。
【００４３】
センスユニット３２１は、データの書き込み時、カラムデコーダ３１及び制御回路８の制御によって、ビット線ＢＬの充電及び放電する。センスユニット３２１は、データの読み出し時、ビット線ＢＬの電位変動を検知し、データを判別する。
【００４４】
ラッチ回路３２５は、メモリセルに書き込むデータ、メモリセルから読み出されたデータ及びメモリセルに対する動作を示す設定情報（以下、フラグとよぶ）などを、一時的に保持する。また、ラッチ回路３２５によって、センスユニット３２１からの信号又は外部からの信号が、増幅される。
【００４５】
ラッチ回路３２５は、複数のラッチ９０を有する。本実施形態において、データを保持するラッチ９０のことを、データラッチ９０とよび、フラグを保持するラッチ９０のことを、フラグラッチ９０とよぶ。
【００４６】
ラッチ回路３２５内のデータラッチ９０は、データの書き込み時において、そのラッチ回路３２５に対応しているメモリセルユニットＭＵに書き込むべきデータ（外部からのデータ）を保持する。また、ラッチ回路３２５内のデータラッチ９０は、データの読み出し時において、その回路３２５に対応しているメモリセルユニットＭＵから読み出されたデータ（メモリセルからのデータ）を保持する。１つのデータラッチ９０は、１ビットのデータを保持する。
【００４７】
例えば、ベリファイ時、ベリファイ結果に基づいて、所定のデータの書き込みが完了したメモリセル（ベリファイパスしたメモリセル）に対応するカラムユニットＣＵのラッチ回路３２５に、書き込み完了を示す情報が保持される。これによって、書き込みが完了したメモリセルに対してデータの書き込みが継続されるのを、抑制される。
【００４８】
ラッチ回路３２５内のフラグラッチ９０が保持するフラグは、例えば、入力されたデータが２値（１ビット）のデータであるか多値（２ビット以上）のデータであるかを示す情報、或いは、どのような書き込みモードでデータを書き込むべきかを示す情報である。
【００４９】
例えば、１つのメモリセルが４値（２ビット）のデータを記憶する場合、ラッチ回路３２５は、２つのデータラッチ９０を有する。ラッチ回路２０内に設けられた２つのデータラッチのうち、一方のデータラッチ９０は、２ビットのうち上位の１ビットを保持し、他下位データラッチ９０は、２ビットのうち下位の１ビットを保持する。ラッチ回路３２５は、１つ以上のフラグラッチ９０を有する。また、ラッチ回路３２５は、ベリファイ結果を保持するラッチ９０を有する。但し、ベリファイ結果（ベリファイ情報ともよばれる）は、フラグラッチなどに書き込まれてもよい。
【００５０】
尚、４値のデータの場合には、少なくとも２つのデータラッチと少なくとも１つのフラグラッチが、ラッチ回路３２５内に設けられているが、データのビット数が増加すると、データラッチの個数は、増大する。例えば、メモリセルＭＣが８値（３ビット）のデータを記憶する場合、ラッチ回路３２５は３つのデータラッチを有する。つまり、ラッチ回路３２５は、最上位の１ビットを保持するデータラッチと、最下位の１ビットを保持するデータラッチと、最上位と最下位との間の１ビットを保持するデータラッチとを有する。これと同様に、データが１６値（４ビット）の場合、ラッチ回路３２５内のデータラッチの個数は４個となり、データが３２値（１６ビット）の場合、ラッチ回路３２５内のデータラッチの個数は５個となる。フラグラッチの個数は、メモリの仕様に応じて、１個でもよいし、２個以上でもよい。
【００５１】
ビットスキャン回路３３は、フラッシュメモリの書き込みシーケンスにおいて、ラッチ回路３２５のデータ保持状態をスキャン（検知）する。  
ビットスキャン回路３３は、例えば、ラッチ回路３２５が保持するベリファイ結果に基づいて、ベリファイをパスしたメモリセル数をカウントする。ビットスキャン回路３３は、例えば、カウンタである。なお、ビットスキャン回路３３は、データの書き込みが完了したメモリセルを数えるだけでなく、データの書き込みが完了していないメモリセル、つまり、ベリファイがフェイルのメモリセルの個数も数えることができる。
【００５２】
また、本実施形態のフラッシュメモリのビットスキャン回路３３は、ラッチ回路３２５のデータラッチのデータ保持状態（“１”又は“０”状態）を数える。
【００５３】
以下では、ビットスキャン回路３２がベリファイパス（またはベリファイフェイル）の個数をあるデータ保持状態のデータラッチの個数を数える動作のことを、「ビットスキャン」とよぶ。
【００５４】
演算ユニット３４は、ラッチ回路３２５が保持する情報（例えば、ベリファイ結果）及びビットスキャン回路３３のビットスキャンの結果に対して演算処理を施す。制御回路８は、演算ユニット３４の演算結果に基づいて、印加電圧の調整、書き込み動作又は読み出し動作の適否を判断する。演算ユニット３４の演算結果は、制御回路８に直接転送される場合もあるし、カラムユニットＣＵ内のラッチ回路３２５内に保持される場合もある。
【００５５】
また、ビットスキャン回路３３及び演算ユニット３４は、例えば、ラッチ回路３２５が保持する外部からのデータ（書き込むべきデータ）を参照する。そして、ビットスキャン回路３３は外部からのデータに応じて書き込み対象となるメモリセルの個数、換言すると、その書き込むべきデータに対してベリファイ及びビットスキャンを実行するメモリセルの個数を、数える。以下では、書き込み対象のメモリセルのことを、書き込み対象セルとよび、書き込み対象セルの個数のことを、書き込み対象セル数（第１の個数）Ｎｔとよぶ。また、書き込みが完了した（ベリファイをパスした）メモリセルのことを、書き込み完了セルとよび、書き込み完了セルの個数のことを、書き込み完了セル数（第２の個数）Ｎａとよぶ。また、書き込みが完了していない（ベリファイをフェイルした）メモリセルセルのことを書き込み未完了セルとよび、書き込み未完了セルの個数のことを、書き込み未完了セル数（第３の個数）Ｎｆとよぶ。
【００５６】
ソース線制御回路４は、メモリセルユニットに接続されたソース線の電位を制御する。ウェル制御回路５は、メモリセルアレイ１内のウェル領域の電位を制御する。
【００５７】
電位生成回路６は、データの書き込み（プログラム）時、データの読み出し時及び消去時に、各ワード線ＷＬに印加される書き込み電圧、中間電位及び非選択電位を生成する。また、電位生成回路６は、例えば、セレクトゲート線に印加する電位も生成する。電位生成回路６によって生成された電位は、ロウ制御回路２に入力され、選択ワード線及び非選択ワード線、セレクトゲート線にそれぞれ印加される。
【００５８】
データ入出力バッファ７は、データの入出力のインターフェイスとなる。データ入出力バッファ７は、データ入出力端子１０Ｂを介して入力された外部からのデータを、一時的に保持する。データ入出力バッファ７は、メモリセルアレイ１から出力されたデータを一時的に保持し、所定のタイミングで、保持しているデータをデータ入出力端子１０Ｂへ出力する。
【００５９】
制御回路８は、フラッシュメモリ全体の動作を管理する。制御回路８は、コマンドインターフェイス８１及びステートマシン８２を含んでいる。
【００６０】
制御回路８は、制御信号入力端子１０Ａから入力された制御信号を受信する。この制御信号は、例えば、メモリコントローラやホスト装置などのメモリチップとは別のチップから出力される。
【００６１】
コマンドインターフェイス８１は、データ入出力バッファ７に入力されるデータがコマンドデータ（コマンド信号）であるか否かを判断する。データ入出力バッファ７に入力されるデータがコマンドデータを含む場合、コマンドインターフェイス８１は、コマンドデータをステートマシン８２に転送する。
【００６２】
ステートマシン８２は、コマンドデータに基づいて、フラッシュメモリの動作モードを決定し、かつ、その動作モードに応じて、フラッシュメモリ内の各回路の動作を制御する。
【００６３】
また、制御回路８は、設定情報記憶ユニット８３を含んでいる。設定情報記憶ユニット８３は、フラッシュメモリを駆動するための設定情報（設定テーブル）を保持する。設定情報記憶ユニット８３は、書き込み電圧の初期値、書き込み電圧の加算値（ステップ値ともよばれる）、ベリファイ時及びビットスキャン時に用いられる判定値（Criteria）を記憶している。例えば、これらの設定に対して、フラッシュメモリの動作、メモリの内部処理或いは動作結果に応じて変更可能なように、複数の値がそれぞれ設定されている。
【００６４】
尚、制御回路８が、ビットスキャン回路３３及び演算ユニット３４と実質的に同じ機能を有していてもよい。また、制御回路８が外部からのデータを参照することによって、制御回路８が、書き込み対象セル数を、ビットスキャン回路３３及び演算ユニット３４に通知してもよい。
【００６５】
ここで、図５乃至図７を用いて、本実施形態のフラッシュメモリのデータの書き込み時の各動作及び機能について、より具体的に説明する。  
＜多値データの書き込み＞  
図５を用いて、本実施形態のフラッシュメモリの多値データの書き込みについて説明する。図５は、本実施形態のフラッシュメモリにおける書き込み動作を説明するための模式図である。
【００６６】
上述のように、多値型のフラッシュメモリは、１つのメモリセルが２ビット以上のデータを記憶する。以下では、１つのメモリセルが、２ビットのデータ（上位／下位データ）を記憶する場合について説明する。
【００６７】
図５に示されるように、多値型のフラッシュメモリのデータ書き込み時、下位データ（下位ページ）の書き込みが実行され、下位データの書き込みが完了した後、上位データ（上位ページ）の書き込みが下位データの書き込みに連続して実行される。本実施形態において、１回の書き込みシーケンスにおける下位データの書き込み期間を第１ステージとよび、上位データの書き込み期間を第２ステージとよぶ。ここで、書き込みシーケンスとは、メモリセルのしきい値が、所定のしきい値（データに対応するしきい値）にシフトするまでの書き込み動作を意味する。
【００６８】
図５に示されるように、第１及び第２ステージのそれぞれにおいて、選択されたメモリセル（選択セル、書き込み対象セル）に対する所定のデータの書き込みが完了するまで、１回又は複数回にわたって、書き込み電圧が選択ワード線に印加される。
【００６９】
尚、選択ワード線に接続されたメモリセルのうち、データの書き込みが不要なメモリセル（非選択セル、“１”データセル又は“１１”データセルともよばれる）のしきい値がシフトするのを抑制するために、そのメモリセルが接続されているビット線（非選択ビット線）に、所定の電位が印加される。
【００７０】
各ステージにおいて、所定のデータが書き込まれるまで、すなわち、メモリセルのしきい値が書き込むべきデータに対応する範囲内に収まるまで、各ステージの開始時に印加される１回目の書き込み電圧を初期値とし、前回印加された書き込み電圧に対してステップ値が順次加算される。これによって、各ステージにおいて、選択セルに対するデータの書き込みが継続される。尚、１回目の書き込み電圧で、メモリセルのしきい値が、所定のしきい値にシフトした場合、そのメモリセルに対するデータの書き込みは終了する。
【００７１】
書き込み電圧の初期値及びステップ値は、例えば、動作状況に応じて、ビットスキャンの結果によって算出された値が用いられたり、制御回路８の設定情報記憶ユニット８３が保持している値が用いられたりする。
【００７２】
尚、本実施形態のフラッシュメモリは、外部からのデータ及びコマンドに応じて、１つのメモリセルが１ビットのデータを記憶する場合があるのは、もちろんである。
【００７３】
＜ベリファイ＞  
図６を用いて、本実施形態のフラッシュメモリにおけるベリファイについて説明する。
【００７４】
第１及び第２のステージにおいて、Ｍ回目の書き込み電圧の印加と（Ｍ＋１）回目の書き込み電圧の印加との間に、例えば、書き込むべきデータに応じて、図３に示される“ＣＶ”〜“ＡＶ”レベルなどの判定レベル（ベリファイレベル）を用いたベリファイが実行される。なお、“Ｍ”は１以上の整数である。
【００７５】
例えば、データに対応するしきい値の低電位側の判定レベル（“ＡＶ”〜“ＣＶ”レベル）が用いられる場合、データの書き込みにおいて、各メモリセルに対するデータの書き込みが完了したか否かは、メモリセル（書き込み対象セル）のしきい値が、書き込むべきデータに対応する所定のベリファイレベル以上であるか否かによって判定される。
【００７６】
図６において、データの書き込み前の状態Ｚ１において、書き込み対象セル数のうち、書き込みが完了したメモリセルは０個である。
【００７７】
そして、選択ワード線に対して書き込み電圧が印加されると、メモリセルのしきい値がシフトし、状態Ｚ２のように、ベリファイレベル以上のしきい値を有するメモリセルが発生する。
【００７８】
ベリファイレベルＶｔのしきい値のメモリセルは、データの書き込みが完了したメモリセルであり、これらのメモリセルは、ベリファイパスとなる。一方、ベリファイレベルＶｔより小さいしきい値電圧のメモリセルは、データの書き込みが未完了のメモリセルであり、これらのメモリセルは、ベリファイフェイルとなる。このように、メモリセルごとに特性のばらつきがあるため、選択ワード線に接続された書き込み対象セルに同じ大きさの書き込み電圧が印加されても、１つの選択ワード線（ページ）において、ベリファイパスのメモリセルとベリファイフェイルのメモリセルとが存在する。
【００７９】
ベリファイパス及びフェイルを示すベリファイ結果（ベリファイ情報）は、例えば、書き込み対象セルに対応するラッチ回路３２５内に、保持される。
【００８０】
書き込み電圧を徐々に大きくしていき、書き込み対象のメモリセルに対して所定のデータの書き込みが完了すると、状態Ｚ３に示されるように、ほぼ全ての書き込み対象セルのしきい値電圧は、ベリファイレベル以上になる。
【００８１】
尚、メモリセルのしきい値が２つのベリファイレベル（例えば、“ＡＶ”レベルと“ＡＶＨ”レベルとの間）に存在するか否かによって、ベリファイパスかベリファイフェイルかがを判定されてもよい。
【００８２】
＜ビットスキャン＞  
図７を用いて、本実施形態のフラッシュメモリにおけるビットスキャンについて、説明する。ここでは、図５及び図７も適宜用いて、ビットスキャンについて説明する。
【００８３】
図７は、ビットスキャンＢＳの動作タイミングを説明するためのタイミングチャートである。
【００８４】
ビットスキャン回路３３によるベリファイ結果のビットスキャンＢＳは、データの書き込みの準備中、例えば、Ｍ回目のベリファイと（Ｍ＋１）回目の書き込み電圧の印加との間の期間に実行される。
【００８５】
図７に示されるように、書き込み電圧が選択ワード線に印加される前に、非選択ビット線が所定の電位に充電される。
【００８６】
ここで、非選択ビット線とは、データの書き込みが完了したメモリセルが接続されたビット線、又は、データの書き込みが不要なメモリセルが接続されたビット線のことである。非選択ビット線に対する充電によって、しきい値をシフトさせなくともよいメモリセルのチャネル電位が上昇し、そのメモリセルに対するトンネル絶縁膜を介した電子のトンネリングが抑制される。
【００８７】
ビットスキャンＢＳは、選択ワード線に書き込み電圧が印加される前に、実行される。同様に、後述する演算ユニット３４によるメモリセル数Ｎａと所定の判定値Ｎｂ１との比較も選択ワード線に書き込み電圧が印加される前に実行される。これは、次の書き込み電圧に、その結果を反映させるためである。なお、Ｍ回目のベリファイと（Ｍ＋１）回目の書き込み電圧の印加との間の期間の間であれば、ビットスキャンＢＳ及び演算ユニット３４による判定は、フラッシュメモリの仕様に適した動作タイミングで実行されてもよい。
【００８８】
ビットスキャンＢＳは、ラッチ回路３２５が保持しているベリファイ結果（パス／フェイル情報）を、ビットスキャン回路３３がスキャン（検知）することによって、実行される。
【００８９】
例えば、図６の状態Ｚ２において、ビットスキャン回路３３は、ラッチ回路３２５のデータ保持状態に基づいて、書き込みが完了したメモリセル数がＮａ個であるとスキャンする。また、書き込み対象セル数が“Ｎｔ”で示される場合、ビットスキャン回路３３は、書き込み中のメモリセル（書き込み未完了セル）の個数は、（Ｎｔ−Ｎａ＝Ｎｆ）個と判別できる。
【００９０】
このビットスキャンＢＳによって、ビットスキャン回路３３は、（Ｍ＋１）回目の書き込み電圧の印加の前に、前回（Ｍ回目）の書き込み電圧の印加による書き込み結果を確認する。例えば、Ｍ回目のベリファイ結果、または、ビットスキャンＢＳの結果に基づいて、演算ユニット３４は演算処理を行う。また、その演算結果に基づいて、制御回路８は、（Ｍ＋１）回目の書き込み電圧に適した値を設定情報の中から選択する、或いは、適した値を算出する。
【００９１】
このように、前回（Ｍ回目）の書き込み結果（ベリファイパス／フェイル）に基づいて、次回（Ｍ＋１回目）の書き込みに適した書き込み電圧を生成することによって、書き込みの時間を短縮し、所定のサイクル内にデータの書き込みが完了するように、フラッシュメモリの動作を制御できる。
【００９２】
また、本実施形態において、下位データの書き込み（第１ステージ）において、１回目の書き込み電圧の印加の前に、書き込み対象セルの個数をカウントするためのビットスキャンＢＳＳが、実行される。
【００９３】
以下では、１回の書き込み電圧の印加（データ書き込み）とその書き込み電圧の印加後のベリファイ及びベリファイに対するビットスキャンとから形成される動作サイクルを、書き込みループとよぶ。また、書き込みループの回数のことを、書き込みループ数とよぶ。
【００９４】
尚、ＥＣＣ（Error Checking and Correcting）による誤り訂正の許容ビット数を考慮して、全ての書き込み対象セルが所定のベリファイレベル以上にならなくとも、ＥＣＣにより書き込みの不良を救済できるのであれば、たとえメモリセルのしきい値がデータに対応する値でなくとも、ページ又はブロックに対するデータの書き込みを終了してもよい。この判断は、ビットスキャンＢＳによる書き込み未完了セル数Ｎｆを用いて判断することができる。
【００９５】
＜書き込みモード＞  
本実施形態のフラッシュメモリは、書き込み動作に適用される複数の書き込みモードを有する。
【００９６】
本実施形態のフラッシュメモリは、書き込みモードの１つとして、下位データの書き込み時に、上位データの書き込みに用いるための書き込み電圧の初期値Ｖｐｇｍ１を求めるモードを有する。
【００９７】
この書き込みモードにおいて、ベリファイ時において書き込み完了（即ち、ベリファイパス）と判定されたメモリセル数Ｎａと所定の判定値（第１の判定値）Ｎｂ１とが、演算ユニット３４又は制御回路８によって比較される。
【００９８】
書き込み完了セルの個数Ｎａは、上述のように、ビットスキャン回路３３によってカウントされる。判定値Ｎｂ１は、所定のしきい値（データ）のベリファイレベルに対して設定された値であって、例えば、設定情報の１つとして、設定情報記憶ユニット８３に保持されている。
【００９９】
書き込み完了セル数Ｎａが判定値Ｎｂ１を越えたときの書き込み電圧の電圧値が、上位データの書き込み電圧の初期値として、演算ユニット３４又は制御回路８によって判定される。その初期値は、例えば、演算ユニット３４又は制御回路８に記憶される。
【０１００】
本実施形態において、上位データの書き込み電圧の初期値に適した電圧値Ｖｐｇｍ１を算出しながら、下位データの書き込みを行う書き込みモードのことを、初期値計算モードとよぶ。
【０１０１】
初期値計算モードによって、上位データの書き込みに適した初期値Ｖｐｇｍ１が算出された場合、下位データの書き込み後、得られた初期値Ｖｐｇｍ１に基づいた書き込み電圧を用いて、上位データの書き込みが実行される。例えば、図５に示されるように、第２ステージにおいて、初期値Ｖｐｇｍ１に補正値（ステップ値）ｄＶｐｇｍＸが加算された書き込み電圧（Ｖｐｇｍ１＋ｄＶｐｇｍＸ）が、上位データの書き込みの１回目の書き込み電圧として用いられる。また、この補正値は、正の値だけでなく、負の値も適宜用いることができる。それゆえ、前回の書き込み電圧よりも低い電圧を、次回の書き込み電圧として、選択ワード線に印加することもできる。
【０１０２】
本実施形態において、第２ステージの書き込み電圧の初期値に初期値計算モードで得られた値Ｖｐｇｍ１が用いられる書き込みモードのことを、最適値モードとよぶ。最適値モードにおいても、書き込み対象セルにデータの書き込みが完了するまで、書き込みループが実行される。
【０１０３】
このように、初期値計算モード及び最適値モードによって、上位データの書き込みに適した書き込み電圧を求めることによって、ワード線ごとに適した書き込み電圧を用いて、データの書き込みを実行できる。この結果として、フラッシュメモリの書き込み時間を短縮できる。
【０１０４】
第１ステージにおいて、書き込み完了セル数Ｎａが所定の判定値（第２の判定値）Ｎｂ２以上になった場合、或いは、第２ステージのための初期値が得られた場合（Ｎａ≧Ｎｂ１）、それ以降のデータの書き込みは、初期値の算出を行わずに外部データの書き込みのみが行われる。
【０１０５】
例えば、所定の書き込みループ回数においてメモリセル数Ｎａが判定値Ｎｂを超えない場合、制御回路８は、初期値計算モードを終了し、初期値Ｖｐｇｍ１の算出を行わずに第１ステージにおける外部データの書き込みを行う。初期値計算モードにおいて、適した初期値Ｖｐｇｍ１を算出できなかった場合、上位データの書き込みは、設定情報として保持されている書き込み電圧の初期値を用いて、実行される場合もある。  
また、初期値計算モードを実行せずに、設定情報として保持されている書き込み電圧を用いて、下位データの書き込みが実行される場合もある。
【０１０６】
本実施形態において、これらの初期値の算出を行わない書き込みモード、或いは、算出された初期値を用いない書き込みモードのことを、通常モード或いは通常書き込みとよぶ。通常モードにおける書き込み電圧の初期値及びそのステップ値は、設定情報として設定情報記憶ユニット８３内に保持されている。
【０１０７】
尚、本実施形態において、初期値を判定するための値Ｎｂ１と通常モードに移行するための判定値Ｎｂ２は、同じ値とし、判定値Ｎｂ１，Ｎｂ２を単に“Ｎｂ”と示す。但し、フラッシュメモリの仕様に応じて、２つの判定値Ｎｂ１，Ｎｂ２は異なる値であってもよい。
【０１０８】
例えば、図５に示されるように、初期値計算モードのベリファイレベルは、通常モードのベリファイレベルとは異なるレベルを用いて実行される。  
例えば、初期値計算モードのベリファイレベルは、通常モードのベリファイレベルより低いレベル（電位）に設定される。通常モードにおける第１ステージのベリファイレベルが、“Ｖｔ１”で示される場合、初期値計算モードのベリファイレベルは、“Ｖｔ１−ｄＶｔ”で示される。すなわち、“Ｖｔ１−ｄＶｔ”のベリファイレベルにおける書き込み完了セル数Ｎａが判定値Ｎｂ以上となった時に、第２ステージ（上位データの書き込み）のための書き込み電圧の初期値Ｖｐｇｍ１が決定する。このベリファイの補正値ｄＶｔは、書き込むべきデータに応じてあらかじめ設定された値であり、例えば、設定情報記憶ユニット８３に保持されている。なお、初期値計算モードのベリファイレベルと通常モードにおけるベリファイレベルは同じであってもよい。
【０１０９】
また、初期値計算モードによってデータ書き込みが開始される場合における１回目の書き込み電圧の大きさは、通常モードによってデータの書き込みが開始される場合における１回目の書き込み電圧の大きさより小さい。
【０１１０】
各動作モードで用いられるステップ値（補正値又は加算値）は、一定値でもよいし、ビットスキャンＢＳの結果に応じて変化する値でもよい。
【０１１１】
例えば、初期値計算モードで用いられるステップ値ｄＶｐｇｍ１の大きさは、通常モードで用いられるステップ値ｄＶｐｇｍＡの大きさと異なる。例えば、ステップ電圧ｄＶｐｇｍ１は、ステップ値ｄＶｐｇｍＡより小さい。その結果、精度良く第２ステージ（上位データの書き込み）のための書き込み電圧の初期値Ｖｐｇｍ１を決定できる。さらには、通常モードのデータの書き込みを高速化できる。
【０１１２】
本実施形態において、下位データの書き込みを、初期値計算モードで開始するか、又は、通常モードで開始するかは、ビットスキャン回路３３及び演算ユニット３４によって、判定される。
【０１１３】
例えば、図５に示されるように、第１ステージ（下位データの書き込み）における１回目の書き込み電圧を印加する前に、ビットスキャン回路３３が、ビットスキャンＢＳＳによってラッチ回路３２５のデータ保持状態をスキャンする。このビットスキャンＢＳＳにおいて、書き込み対象セル数Ｎｔがカウントされる。そして演算ユニット３４が、書き込み対象セル数Ｎｔと判定値Ｎｂとを比較する。ここで、書き込み対象セル数Ｎｔは判定値Ｎｂよりも大きい判定値Ｎｂ＋αと比較してもよい。これは、例えば、判定値Ｎｂが書き込み完了セル数Ｎａの８０％と定義されていた場合などに有効である。
【０１１４】
下位データの書き込みは、書き込み対象セルにおいて、メモリセルのしきい値を“１”データ保持状態（消去状態）から“０”データ保持状態にシフトさせる動作である。それゆえ、下位データラッチ９０が“０”データに対応する状態になっているか否かを判別することで、書き込み対象セル数Ｎｔをスキャンできる。即ち、“０”データ書き込みに対応するデータラッチ９０の個数が、ビットスキャン回路３３によってカウントされる。
【０１１５】
例えば、書き込み対象セル数Ｎｔが、判定値Ｎｂ以上である場合、初期値計算モードで、下位データの書き込みが開始される。この際、初期値計算モードを示すフラグが、演算ユニット３４（又は制御回路８）からフラグラッチに転送される。  
一方、書き込み対象セル数Ｎｔが判定値Ｎｂより小さい場合、初期値計算モードを実行せずに、下位データの書き込みが通常モードによって開始される。この場合、通常モードを示すフラグが、演算ユニット３４（又は制御回路８）からフラグラッチに転送される。
【０１１６】
尚、制御回路８が、ビットスキャン回路３３及び演算ユニット３４と同様の機能を有してもよい。
【０１１７】
以上のように、本実施形態のフラッシュメモリは、そのデータ書き込みに用いられる動作モードとして、あらかじめ設定された書き込み電圧を用いた動作モード（第１の書き込みモード、通常モード）と、下位データの書き込みサイクル中に上位データの書き込みに用いる書き込み電圧を算出する動作モード（第２の書き込みモード、初期値計算モード）とを含んでいる。
【０１１８】
本実施形態において、下位データの書き込み時（第１ステージ）において、選択ワード線に１回目の書き込み電圧を印加する前に、例えば、演算ユニット３４（又は制御回路８）が、書き込み対象のメモリセルの個数Ｎｔと所定の判定値Ｎｂとを比較する。書き込み対象セル数Ｎｔは、ビットスキャン回路３３又は制御回路８が、外部からのデータ又はデータラッチ（下位データラッチ）のデータ保持状態を参照することによって、数えられる。
【０１１９】
そして、書き込み対象セル数Ｎｔが判定値Ｎｂより小さい場合、制御回路８は、通常モードで下位データの書き込みを開始させる。一方、書き込み対象セル数Ｎｔが判定数Ｎｂ以上である場合、制御回路８は、初期値計算モードで下位データの書き込みを開始させる。
【０１２０】
従来のフラッシュメモリにおいて、書き込み対象セル数Ｎｔが判定値Ｎｂより小さい場合、第２ステージにおける書き込み電圧の初期値が決定しない動作不良、及び、これに起因する第１ステージの動作が終了しない動作不良が発生する可能性があった。また、所定の書き込みループ数において初期値が決定しない場合に、初期値の算出を強制的に停止させたとしても、第１ステージの書き込み時間が長くなり、書き込みシーケンス全体の時間が長くなる可能性があった。
【０１２１】
本実施形態のフラッシュメモリは、下位データの書き込みの開始時において、書き込み対象セル数Ｎｔと判定値Ｎｂとを比較し、書き込み対象セル数Ｎｔが判定値Ｎｂより小さい場合、上位データの書き込みに用いる書き込み電圧の初期値を算出せずに、設定情報に基づく書き込み電圧を用いて、下位データ及び上位データの書き込み（通常モード）を行う。
【０１２２】
これによって、本実施形態のフラッシュメモリは、初期値計算モードにおいて上位データの書き込みのための書き込み電圧が決まらない動作不良や、書き込み動作が終了しない動作不良を抑制できる。そして、本実施形態のフラッシュメモリは、書き込みシーケンスの動作サイクル（動作時間）が長くなるのを抑制できる。
【０１２３】
また、ビットスキャン回路３３は、１ページに含まれる全メモリセル数（又は全書き込み対象セル）の一部から抽出された所定の個数のメモリセルに対して、ビットスキャンを行ってもよい。この場合、例えば、１ページに含まれる全メモリセルから一部のメモリセルを抽出し、抽出されたメモリセルを用いて初期値計算モードを行う。この抽出された所定の個数のメモリセルに対する初期値計算モードから計算された値が、１ページに含まれる全メモリセルの初期値Ｖｐｇｍ１の代表値とされる。例えば、データのランダマイズ処理がされている場合などでは、１ページに含まれる全メモリセルに書き込まれる“０”データの個数と“１”データの個数はほぼ均一に配置されている。そのため、１ページに含まれる全メモリセルから一部を抽出して書き込み完了セル数Ｎａと判定値Ｎｂとを比較することにより、１ページ全体としての初期値Ｖｐｇｍ１を算出することができる。１ページに含まれる全メモリセルから一部のメモリセルを抽出する処理のことを、マスク処理とよぶ。
【０１２４】
ここで、ビットスキャンはベリファイパス（またはベリファイフェイル）したメモリセルの個数を数える動作であるため、数える対象のメモリセルが増えるとビットスキャンの時間が長くなる。そこで、ベリファイを行ったメモリセルから一部を抽出してビットスキャンを行うことにより、短時間で初期値Ｖｐｇｍ１を算出することができる。その結果、フラッシュメモリの書き込み動作の高速化を図ることができる。
【０１２５】
尚、本実施形態のフラッシュメモリについて４値のフラッシュメモリを例示したが、下位データの書き込み時に、その下位データより上位データの書き込みに用いる書き込み電圧の初期値を算出する動作モードを有する多値型のフラッシュメモリであれば、８値（３ビット）、１６値（４ビット）などのデータを１つのメモリセルが保持するフラッシュメモリであってもよいのは、もちろんである。本実施形態のフラッシュメモリの書き込みモードは、ＱＰＷ（Quick Pass Write）モードやＬＭ（Lower Middle）モードなど、周知の書き込みモードが適宜組み合わされてもよい。
【０１２６】
以上のように、本実施形態のフラッシュメモリによれば、データ書き込み時の時間の増大を抑制できる。
【０１２７】
（２）  動作  
図８及び図９を参照して、本実施形態の不揮発性半導体メモリ（例えば、フラッシュメモリ）の動作について、説明する。ここでは、本実施形態のメモリの動作を説明するために、図１乃至図７も適宜用いる。尚、４値のフラッシュメモリの書き込み動作を例示するが、８値（３ビット）又は１６値（４ビット）などのフラッシュメモリでもよいのはもちろんである。
【０１２８】
図８は、本実施形態のフラッシュメモリの書き込み動作を示すフローチャートである。図９は、本実施形態のフラッシュメモリの書き込み動作を説明するための模式図である。
【０１２９】
外部からデータの書き込みが要求されたとき、書き込みコマンドが、制御信号入力端子１０Ａを介して、外部から制御回路８へ入力される。書き込みコマンドの入力とともに、外部からのデータが、データ入出力端子１０Ｂを介して、データ入出力バッファ７へ入力される。
【０１３０】
データ入出力バッファ７に入力されたデータがコマンドデータである場合、制御回路８内のコマンドインターフェイス８１は、コマンドデータをステートマシン８２に転送する。
【０１３１】
また、データの書き込み対象を示すアドレスがアドレスバッファ（図示せず）に入力され、メモリセルアレイ１内のロウ及びカラムが、ロウ制御回路２及びカラムデコーダ３１によって、それぞれ活性化される。
【０１３２】
外部からの書き込むべきデータが、データ入出力バッファ７からカラム制御回路３内のセンスアンプ回路３２に転送される。転送されたデータは、カラムアドレスに対応するラッチ回路３２５に、それぞれ保持される。ここで、転送されたデータのうち、上位データはラッチ回路３２５内の上位データラッチに保持され、下位データはラッチ回路３２５内の下位データラッチに保持される。
【０１３３】
データの書き込み前に、選択されたブロックに対して、消去動作が実行される。これによって、選択ブロック内の全てのメモリセルは、“１”（又は“１１”）データ保持状態となる。尚、メモリセルの過消去状態を解消するために、ソフトプログラミングが、消去動作の後に実行されてもよい。ソフトプログラミングによってワード線ＷＬに印加される電位は、データの書き込みに用いられる書き込み電圧より小さい。また、例えば、消去動作後に、消去ベリファイが実行される。
【０１３４】
消去動作後、本実施形態のフラッシュメモリにおいて、メモリセルに対する外部データの書き込みが開始される。  
第１ステージとして、下位データの書き込みが開始される。下位データの書き込み（第１ステージ）のための準備が、設定情報に基づいて、制御回路８によって実行される。
【０１３５】
図８に示されるように、書き込み対象セル数Ｎｔ及び所定の判定値Ｎｂ（Ｎｂ１）が比較される（ステップＳＴ０）。
【０１３６】
書き込み対象セル数Ｎｔは、第１ステージの１回目の書き込み電圧が印加される前に、ビットスキャン回路３３によるビットスキャンＢＳＳによって求められる。図７に示されるように、動作モードを決定するためのビットスキャンＢＳＳは、下位データの書き込み電圧印加前、例えば、下位データの書き込みにおける非選択ビット線ＢＬの充電期間中に、実行される。
【０１３７】
例えば、下位データの書き込みは、消去状態（“１”（“１１”）データ保持状態）のメモリセルのしきい値を、“０”（“００”）データに対応するしきい値にシフトさせる動作である。そのため、ビットスキャン回路３３が“０”データに対応するデータ保持状態の下位データラッチの個数をカウントすることによって、書き込み対象セル数Ｎｔがスキャンされる。
【０１３８】
尚、ビット線の充電の有無を検知することで、書き込み対象セル数Ｎｔをカウントしてもよいし、書き込むべきデータが含む“０”の下位データの個数から、書き込み対象セル数Ｎｔを直接カウントしてもよい。  
また、全てのメモリセル（データラッチ）に対してビットスキャンＢＳＳを実行せずに、例えば、マスク処理によって、所定の個数のメモリセルが含む書き込み対象セル数がカウントされてもよい。
【０１３９】
スキャンされた書き込み対象セル数Ｎｔは演算ユニット３４へ転送され、これとともに、判定値（Criteria）Ｎｂが制御回路８から演算ユニット３４へ転送される。演算ユニット３４は、書き込み対象セル数Ｎｔと判定値Ｎｂとを比較する。そして、演算ユニット３４は、その比較結果を、例えば、制御回路８へ通知する。
【０１４０】
書き込み対象セル数Ｎｔが判定値Ｎｂより小さい場合、制御回路８又は演算ユニット３４は、通常モードを用いた下位データ（第１ステージ）の書き込みが開始されるように、フラッシュメモリ全体の動作を制御する（ステップＳＴ１）。  
一方、書き込み対象セル数Ｎｔが判定値Ｎｂ以上である場合、制御回路８又は演算ユニット３４は、初期値計算モードで下位データの書き込みが開始されるように、フラッシュメモリ全体の動作を制御する（ステップＳＴ１０）。
【０１４１】
例えば、通常モードを示すフラグ又は初期値計算モードを示すフラグが、制御回路８から出力され、ラッチ回路３２５内のフラグラッチに格納される。
【０１４２】
尚、制御回路８が、ビットスキャン回路３３及び演算ユニット３４と実質的に同じ機能を有してもよい。
【０１４３】
図８及び図９に示されるように、通常モードによる下位データの書き込み（第１ステージ）が開始される場合（ステップＳＴ１の場合）、設定情報に基づく書き込み電圧Ｖｐｇｍ＿ＬＰ１が、下位データの書き込みにおける１回目の書き込み電圧として、非選択ビット線ＢＬの充電後に選択ワード線（ワード線ＷＬ１）に印加される（ステップＳＴ２）。
【０１４４】
書き込み電圧Ｖｐｇｍ＿ＬＰ１が印加された後、内部的なデータ読み出しにより、センスユニット３２１によってビット線の電位がセンスされ、ベリファイレベルＶｔ１を判定レベルとしたベリファイ（書き込みベリファイ）が実行される（ステップＳＴ３）。ベリファイ結果は、例えば、ラッチ回路３２５に保持され、そのベリファイパスしたメモリセル（書き込み完了セル）の個数Ｎａが、ビットスキャン回路３３によるビットスキャンＢＳによって、カウントされる。ビットスキャンＢＳは、図７に示されるように、次の書き込み電圧の印加前までに行われる。なお、ここでのビットスキャンＢＳは書き込み未完了セル数Ｎｆを数える。
【０１４５】
全ての書き込み対象セルのデータ書き込みが完了しない又はＥＣＣによる許容ビット数よりも未完了セル数Ｎｆが大きい場合、１回目（Ｍ回目）の書き込み電圧に対してステップ値（加算値）ｄＶｐｇｍＡが加算され、２回目（（Ｍ＋１）回目）の書き込み電圧が設定される（ステップＳＴ４）。ステップ値ｄＶｐｇｍＡの大きさは、Ｍ回目の書き込み電圧の印加に対するビットスキャンＢＳの結果を、演算ユニット３４が演算処理することによって、（Ｍ＋１）回目の書き込み電圧を設定するごとに適宜調整されてもよい。尚、ベリファイ後において、全てのメモリセルをビットスキャンＢＳせずに、マスク処理により規定された個数のメモリセルをスキャンしてもよい。
【０１４６】
全てのメモリセルのデータ書き込みが完了する又は未完了セル数Ｎｆが許容ビット数以下になるまで、上記の書き込みループが実行される。
【０１４７】
第１ステージにおいて全ての又は所定の個数の書き込み対象セルがベリファイパスした場合、通常モードを用いた上位データの書き込み（第２ステージ）が開始される（ステップＳＴ５）。
【０１４８】
図９に示されるように、通常モードによる上位データの書き込みが開始される場合、設定情報に基づく書き込み電圧Ｖｐｇｍ＿ＵＰ１が、上位データの書き込みにおける１回目の書き込み電圧として、選択ワード線に印加される（ステップＳＴ６）。  
そして、第１ステージと同様に、第２ステージにおいても、ベリファイ及びビットスキャン（ステップＳＴ７）、ステップ値ｄＶｐｇｍＢの加算（ステップＳＴ８）が実行される。
【０１４９】
第２ステージにおいて、ベリファイレベルＶｔ２が、ベリファイの判定基準として用いられる。ベリファイレベルＶｔ２の値（電位）は、判定レベルによって変化する。補正値ｄＶｐｇｍＢの値は、補正値ｄＶｐｇｍＡの値と異なってもよいし、同じであってもよい。
【０１５０】
そして、第２ステージにおいて全ての書き込み対象セルのデータ書き込みが完了する又は所定の個数よりも未完了セル数Ｎｆが小さくなった場合、外部からのデータの書き込みが終了する。
【０１５１】
尚、第１及び第２ステージにおいて、所定の書き込みループ数内で所定の個数のメモリセルがベリファイパスしなかった場合、入力されたアドレスと異なるブロック又はページが選択され、下位データ及び上位データの書き込みが再度実行される。
【０１５２】
ステップＳＴ０における書き込み対象セル数Ｎｔと判定値Ｎｂとの比較に基づいて、初期値計算モードが用いられる場合（ステップＳＴ１０）、以下の動作が実行される。  
図８及び図９に示されるように、初期値計算モードによる下位データの書き込み（第１ステージ）が開始される場合、書き込み電圧Ｖｐｇｍ０が、下位データの書き込みにおける１回目の書き込み電圧として、選択ワード線に印加される（ステップＳＴ１１）。
【０１５３】
書き込み電圧Ｖｐｇｍ０が印加された後、ベリファイが実行される（ステップＳＴ１２）。初期値計算モードにおいて、ベリファイレベル（Ｖｔ１−ｄＶｔ１）が用いられる。初期値計算モードにおけるベリファイレベル（Ｖｔ１−ｄＶｔ１）は、通常モードのベリファイレベルＶｔ１より小さい。  
そして、ビットスキャン回路３３によって、ベリファイレベル（Ｖｔ１−ｄＶｔ１）におけるベリファイ結果に対するビットスキャンＢＳが実行される。ビットスキャンＢＳによって、書き込み完了セル数Ｎａがカウントされる。
【０１５４】
書き込み完了セル数Ｎａ及び判定値Ｎｂが、演算ユニット３４によって比較される。この比較によって、上位データの書き込み（最適値モード）に用いられる書き込み電圧の初期値が決定したか否か判定される（ステップＳＴ１３）。
【０１５５】
書き込み完了セル数Ｎａが判定値Ｎｂより小さい場合、上位データの書き込み電圧の初期値は決定されず、ステップ値ｄＶｐｇｍ１が前回（Ｍ回目）の書き込み電圧に加算される（ステップＳＴ１４）。
【０１５６】
そして、（Ｍ＋１）回目の書き込み電圧の印加（ステップＳＴ１１）、ベリファイ及びビットスキャン（ステップＳＴ１２）、書き込み完了セル数Ｎａと判定値との比較（ステップＳＴ１３）が、書き込み完了セル数Ｎａが判定値Ｎｂ以上となるまで、繰り返される。
【０１５７】
所定のベリファイレベル（ここでは、Ｖｔ１−ｄＶｔ１）において書き込み完了セル数Ｎａが判定値Ｎｂ以上となった場合、その判定結果に対応するベリファイ及びビットスキャン前に用いられたＭ回目の書き込み電圧Ｖｐｇｍ１が、上位データの書き込み電圧の初期値Ｖｐｇｍ１として、演算ユニット３４又は制御回路８に記憶される。書き込み電圧Ｖｐｇｍ１は、例えば、ステップ値ｄＶｐｇｍ１が一定値である場合、“Ｖｐｇｍ０＋（Ｍ−１）×ｄＶｐｇｍ１”（Ｍ≧１）で示される。
【０１５８】
図９に示されるように、書き込み完了セル数Ｎａが判定値Ｎｂ１以上となった後、すなわち、第２ステージの書き込み電圧の初期値Ｖｐｇｍ１が決定した後、初期値計算モードが終了し、通常モードによる下位データの書き込みが実行される（ステップＳＴ１６）。
【０１５９】
尚、初期値を決定するための判定値Ｎｂ１と通常モードへ移行するのを判定するための判定値Ｎｂ２とに対して、互いに異なる判定値を設定してもよい。判定値Ｎｂ１と判定値Ｎｂ２とが異なる値に設定されている場合、初期値が決定された後において、書き込み完了セル数Ｎａが判定値Ｎｂ２以上となるまで、初期値計算モードでデータの書き込みが継続される。
【０１６０】
第１ステージ内の初期値計算モードに続く通常モードのデータ書き込みにおいて、演算ユニット３４による演算又は設定情報に基づいて、所定のステップ値ｄＶｐｇｍＡが前回の書き込み電圧が加算され、その書き込み電圧が選択ワード線に印加される（ステップＳＴ１７）。
【０１６１】
そして、ベリファイレベルＶｔ１を用いたベリファイ及びそのベリファイの結果（パス／フェイル）に対するビットスキャンＢＳが実行される（ステップＳＴ１９）。所定の個数の書き込み完了セルがベリファイパスしていなかった場合、通常モードにおける書き込み電圧の印加（ステップＳＴ１７）、ベリファイ／ビットスキャン（ステップＳＴ１８）、及びステップ電圧の加算（ステップＳＴ１９）から形成される書き込みループが実行される。すなわち、全てのメモリセルのデータ書き込みが完了する又は未完了セル数Ｎｆが許容ビット数以下になるまで、上記の書き込みループが実行される。
【０１６２】
初期値計算モードを含む第１ステージ（下位データの書き込み）が終了した後、第２ステージ（上位データの書き込み）が実行される。
【０１６３】
上記のように、書き込み対象セル数Ｎｔが判定値Ｎｂ以上であり、かつ、初期値計算モードによって、第２ステージにおける書き込み電圧の初期値Ｖｐｇｍ１が得られた場合、第２ステージのデータ書き込みは、最適値モードを用いた書き込みによって、実行される（ステップＳＴ２０）。
【０１６４】
図９に示されるように、最適値モードにおける１回目の書き込み電圧は、初期値計算モードによって得られた初期値Ｖｐｇｍ１にステップ値（補正値）ｄＶｐｇｍＸを加算した電圧値（Ｖｐｇｍ１＋ｄＶｐｇｍＸ）に、制御回路８によって設定される。そして、最適値モードを用いたデータ書き込みにおいて、１回目の書き込み電圧（Ｖｐｇｍ１＋ｄＶｐｇｍＸ）が、選択ワード線（例えば、ワード線ＷＬ１）に印加される（ステップＳＴ２１）。尚、ステップ値ｄＶｐｇｍＸを加算せずに、初期値Ｖｐｇｍ１を１回目の書き込み電圧として用いて、上位データの書き込みを開始してもよい。
【０１６５】
この後、書き込み電圧の印加に対するベリファイ及びビットスキャンＢＳが実行される（ステップＳＴ２２）。最適値モードにおいて、通常モードによる第２ステージの書き込みと同様に、ベリファイの判定レベルとして、ベリファイレベルＶｔ２が用いられる。
【０１６６】
全ての又は許容値を満たす個数のメモリセルがベリファイパスしなかった場合、ステップ値ｄＶｐｇｍ２が、前回の書き込み電圧に加算される（ステップＳＴ２３）。ステップ値ｄＶｐｇｍ２は、ステップ値ｄＶｐｇｍＸと同じ大きさでもよいし、設定情報に基づく一定値であってもよいし、ビットスキャンＢＳの結果に基づいて調整される可変値でもよい。
【０１６７】
全ての書き込み対象セルのデータ書き込みが完了する又は所定の個数よりも未完了セル数Ｎｆが小さくなった場合、外部からのデータの書き込みが終了する。
【０１６８】
図８乃至図９に示されるフラッシュメモリの書き込み動作が、ブロック内の各ワード線に対して、順次実行される。
【０１６９】
尚、上述の各ステージのデータ書き込みにおいて、所定の回数の書き込みループでデータの書き込みが完了しない場合、外部から入力されたアドレスとは異なるアドレスに、下位及び上位のデータ書き込みが、図８及び図９に示される順序で実行されてもよい。  
また、初期値計算モードにおいて、所定の書き込みループ数で書き込み完了セル数Ｎａが判定値Ｎｂ以上にならなかった場合、初期値計算モードを強制的に終了して、通常モードで下位データの書き込みを実行してもよい。この場合、上位データの書き込みは、通常モードを用いて実行される。また、初期値計算モードにおいて下位データの書き込みが完了した場合、通常モードに移行せずに、上位データの書き込み（第２ステージ）が開始されてもよい。
【０１７０】
以上のように、本実施形態のフラッシュメモリの書き込み動作において、下位データのデータ書き込み時（第１ステージ）に、選択ワード線に１回目の書き込み電圧を印加する前に、例えば、書き込み対象のメモリセルの個数Ｎｔと所定の判定値Ｎｂとが比較される。
【０１７１】
そして、書き込み対象セル数Ｎｔが判定値Ｎｂより小さい場合、設定情報に基づく通常モードで下位データ及び上位データの書き込みが実行される。一方、書き込み対象セル数Ｎｔが判定数Ｎｂ以上である場合、初期値計算モードで上位データの書き込み電圧の初期値を計算しながら、下位データの書き込みが実行される。
【０１７２】
これによって、本実施形態のフラッシュメモリの書き込み動作において、書き込み対象セル数Ｎｔが判定値Ｎｂより小さい場合に、上位データの書き込みのための書き込み電圧が決まらない動作不良、或いは、書き込み動作が終了しない動作不良が、発生するのを抑制できる。また、本実施形態のフラッシュメモリの書き込み動作において、書き込みシーケンスの動作期間が長くなるのを抑制できる。
【０１７３】
以上のように、本実施形態のフラッシュメモリの動作によれば、データ書き込み時の時間の増大を抑制できる。
【０１７４】
［その他］  
本実施形態において、不揮発性半導体メモリとして、フラッシュメモリを例示したが、本実施形態は、ＭＲＡＭ（Magnetoresistive RAM）、ＲｅＲＡＭ（Resistive RAM）及びＰＣＲＡＭ（Phase Change RAM）のようなメモリにも適用できる。
【０１７５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１７６】
１：メモリセルアレイ、２：ロウ制御回路、３：カラム制御回路、８：制御回路、３１：カラムデコーダ、３２：センスアンプ回路、３３：ビットスキャン回路、３４：演算ユニット。
【図１】
0005330425.tif 000002
【図２】
0005330425.tif 000003
【図３】
0005330425.tif 000004
【図４】
0005330425.tif 000005
【図５】
0005330425.tif 000006
【図６】
0005330425.tif 000007
【図７】
0005330425.tif 000008
【図８】
0005330425.tif 000009
【図９】
0005330425.tif 000010