(57)【特許請求の範囲】
【請求項１】
少なくとも４つの閾値電圧のいずれかに設定可能な第１メモリセルと、
前記第１メモリセルに接続された第１ビット線と、
前記第１メモリセルのゲートに接続されたワード線と、
前記第１ビット線に接続された第１センスアンプと
を具備し、
前記第１メモリセルにデータを書き込むプログラム動作の後に、前記第１メモリセルの閾値電圧を確認するベリファイ動作が行われ、
前記ワード線に第１電圧が印加される第１ベリファイ動作において、前記第１センスアンプは、前記第１ビット線に充電電圧を印加し、
前記ワード線に前記第１電圧よりも高い第２電圧が印加される第２ベリファイ動作において、前記第１センスアンプは、前記第１ビット線に前記充電電圧を印加せず、
前記ワード線に前記第２電圧よりも高い第３電圧が印加される第３ベリファイ動作において、前記第１センスアンプは、前記第１ビット線に前記充電電圧を印加する
ことを特徴とする半導体記憶装置。
【請求項２】
少なくとも前記４つの閾値電圧のいずれかに設定可能な第２メモリセルと、
前記第２メモリセルに接続された第２ビット線と、
前記第２ビット線に接続された第２センスアンプと
を更に具備し、
前記第１ベリファイ動作において、前記第２センスアンプは、前記第２ビット線に前記充電電圧を印加せず、
前記第２ベリファイ動作において、前記第２センスアンプは、前記第２ビット線に前記充電電圧を印加し、
前記第３ベリファイ動作において、前記第２センスアンプは、前記第２ビット線に前記充電電圧を印加しない
ことを特徴とする請求項１記載の半導体記憶装置。
【請求項３】
前記第１ベリファイ動作は、第１データのプログラム動作に対応し、
前記第２ベリファイ動作は、前記第１データと異なる第２データのプログラム動作に対応し、
前記第３ベリファイ動作は、前記第１及び第２データと異なる第３データのプログラム動作に対応し、
前記第１メモリセルに前記データを書き込む前記プログラム動作において、前記第１メモリセルに前記第１及び第３データの１つが書き込まれる
ことを特徴とする請求項１記載の半導体記憶装置。
【請求項４】
前記第１ベリファイ動作は、第１データのプログラム動作に対応し、
前記第２ベリファイ動作は、前記第１データと異なる第２データのプログラム動作に対応し、
前記第３ベリファイ動作は、前記第１及び第２データと異なる第３データのプログラム動作に対応し、
前記第１メモリセルに前記データを書き込む前記プログラム動作において、前記第１メモリセルに前記第１及び第３データの１つが書き込まれ、前記第２メモリセルに前記第２データが書き込まれる
ことを特徴とする請求項２記載の半導体記憶装置。
【請求項５】
少なくとも４つの閾値電圧のいずれかに設定可能な第１及び第２メモリセルと、
前記第１及び第２メモリセルにそれぞれ接続された第１及び第２ビット線と、
前記第１及び第２メモリセルのゲートに共通に接続されたワード線と、
前記第１ビット線に接続された第１センスアンプと、
前記第２ビット線に接続された第２センスアンプと、
を具備し、
前記第１及び第２メモリセルにデータを書き込むプログラム動作の後に、前記第１及び第２メモリセルの閾値電圧を確認するベリファイ動作が行われ、
前記第１メモリセルに第１データを書き込み、前記第２メモリセルに前記第１データと異なる第２データを書き込む場合、
前記第１データに対応する第１ベリファイ動作において、前記ワード線に第１電圧が印加され、前記第１及び第２センスアンプは、前記第１及び第２ビット線に充電電圧を印加し、
前記第２データに対応する第２ベリファイ動作において、前記ワード線に前記第１電圧よりも高い第２電圧が印加され、前記第１及び第２センスアンプは、前記第１及び第２ビット線に前記充電電圧を印加し、
前記第１及び第２データと異なる第３データに対応する第３ベリファイ動作において、前記ワード線に前記第２電圧よりも高い第３電圧が印加され、前記第１及び第２センスアンプは、前記第１及び第２ビット線に前記充電電圧を印加しない
ことを特徴とする半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
半導体記憶装置として、ＮＡＮＤ型フラッシュメモリが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７-２６６１４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
処理能力を向上できる半導体記憶装置を提供する。
【課題を解決するための手段】
【０００５】
実施形態に係る半導体記憶装置は、少なくとも４つの閾値電圧のいずれかに設定可能な第１メモリセルと、第１メモリセルに接続された第１ビット線と、第１メモリセルのゲートに接続されたワード線と、第１ビット線に接続された第１センスアンプとを含む。第１メモリセルにデータを書き込むプログラム動作の後に、第１メモリセルの閾値電圧を確認するベリファイ動作が行われる。ワード線に第１電圧が印加される第１ベリファイ動作において、第１センスアンプは、第１ビット線に充電電圧を印加する。ワード線に第１電圧よりも高い第２電圧が印加される第２ベリファイ動作において、第１センスアンプは、第１ビット線に充電電圧を印加しない。ワード線に第２電圧よりも高い第３電圧が印加される第３ベリファイ動作において、第１センスアンプは、第１ビット線に充電電圧を印加する。
【０００６】
上記実施形態を適用することにより、処理能力を向上できる半導体記憶装置を提供できる。なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１実施形態に係る半導体記憶装置のブロック図である。
【図２】図２は、第１実施形態に係る半導体記憶装置の備えるメモリセルアレイの回路図である。
【図３】図３は、第１実施形態に係る半導体記憶装置の備えるメモリセルアレイの断面図である。
【図４】図４は、第１実施形態に係る半導体記憶装置の備えるセンスアンプのブロック図である。
【図５】図５は、第１実施形態に係る半導体記憶装置の備えるセンスアンプユニットの回路図である。
【図６】図６は、第１一実施形態に係る半導体記憶装置の備えるメモリセルトランジスタの閾値分布図である。
【図７】図７は、第１実施形態に係る半導体記憶装置の備えるセンスアンプユニットにおけるＡＮＤ演算のフロー図である。
【図８】図８は、第１実施形態に係る半導体記憶装置の備えるセンスアンプユニットにおけるＯＲ演算のフロー図である。
【図９】図９は、第１実施形態に係る半導体記憶装置の書き込み動作を示すフローチャートである。
【図１０】図１０は、第１実施形態に係る半導体記憶装置の書き込み動作における各配線の電位を示すタイミングチャートである。
【図１１】図１１は、第１実施形態に係る半導体記憶装置のベリファイ動作におけるラッチ回路が保持するデータを示す図である。
【図１２】図１２は、第１実施形態に係る半導体記憶装置のベリファイ動作時の各配線の電位を示すタイミングチャートである。
【図１３】図１３は、一実施形態に係る半導体記憶装置の書き込み動作における、ループ回数とベリファイ動作との関係を示すダイアグラムである。
【図１４】図１４は、第１実施形態に係る半導体記憶装置の書き込み動作における、ループ回数とビット線電圧との関係を示すダイアグラムである。
【図１５】図１５は、第１実施形態に係る半導体記憶装置の書き込み動作における選択ワード線、ビット線、信号ＳＴＢの電圧を示すタイミングチャートである。
【図１６】図１６は、第１実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データを示す図である。
【図１７】図１７は、第１実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データを示す図である。
【図１８】図１８は、第１実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データを示す図である。
【図１９】図１９は、第２実施形態に係る半導体記憶装置のベリファイ動作におけるラッチ回路が保持するデータを示す図である。
【図２０】図２０は、第１実施形態に係る半導体記憶装置の書き込み動作における選択ワード線、ビット線、信号ＳＴＢの電圧を示すタイミングチャートである。
【発明を実施するための形態】
【０００８】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００９】
１．第１実施形態
第１実施形態に係る半導体記憶装置について説明する。以下では、半導体記憶装置として、メモリセルトランジスタが半導体基板上に三次元に積層された三次元積層型ＮＡＮＤ型フラッシュメモリを例に挙げて説明する。
【００１０】
１．１  構成について
１．１．１  半導体記憶装置の全体構成について
まず、本実施形態に係る半導体記憶装置の全体構成について、図１を用いて説明する。図１は、本実施形態に係るＮＡＮＤ型フラッシュメモリのブロック図である。
【００１１】
図示するようにＮＡＮＤ型フラッシュメモリ１は、メモリセルアレイ２、ロウデコーダ３、センスアンプ４、及び制御回路５を備えている。
【００１２】
メモリセルアレイ２は、ロウ及びカラムに対応付けられた不揮発性のメモリセルトランジスタを含む複数のブロックＢＬＫ（ＢＬＫ０、ＢＬＫ１、ＢＬＫ２、…）を備えている。各々のブロックＢＬＫは、例えば４つのストリングユニットＳＵ（ＳＵ０〜ＳＵ３）を含む。そして各々のストリングユニットＳＵは、複数のＮＡＮＤストリング６を含む。メモリセルアレイ２内のブロック数及びブロック内のストリングユニット数は任意である。メモリセルアレイ２の詳細については後述する。
【００１３】
ロウデコーダ３は、ロウアドレスをデコードし、このデコード結果に基づき、ブロックＢＬＫのいずれかを選択し、更にいずれかのストリングユニットＳＵを選択する。そして、必要な電圧をブロックＢＬＫに出力する。ロウアドレスは、例えばＮＡＮＤ型フラッシュメモリ１を制御するコントローラから与えられる。
【００１４】
センスアンプ４は、データの読み出し動作時には、メモリセルアレイ２から読み出されたデータをセンスする。そして、読み出しデータをコントローラに出力する。データの書き込み動作時には、外部コントローラから受信した書き込みデータをメモリセルアレイ２に転送する。
【００１５】
制御回路５は、ＮＡＮＤ型フラッシュメモリ１全体の動作を制御する。
【００１６】
１．１．２  ブロックＢＬＫの構成について  
次に、上記ブロックＢＬＫの構成について図２を用いて説明する。前述の通り、ブロックＢＬＫは例えば４つのストリングユニットＳＵを含み、各々のストリングユニットＳＵは複数のＮＡＮＤストリング６を含む。
【００１７】
図示するように、ＮＡＮＤストリング６の各々は、例えば８個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ７）及び選択トランジスタＳＴ１、ＳＴ２を含んでいる。メモリセルトランジスタＭＴは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そしてメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に直列接続されている。
【００１８】
ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ０〜ＳＧＤ３に接続される。これに対してストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ２のゲートは、例えばセレクトゲート線ＳＧＳに共通接続される。もちろん、ストリングユニット毎に異なるセレクトゲート線ＳＧＳ０〜ＳＧＳ３に接続されても良い。また、同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートは、それぞれワード線ＷＬ０〜ＷＬ７に共通接続される。
【００１９】
また、ストリングユニットＳＵ内にある各ＮＡＮＤストリング６の選択トランジスタＳＴ１のドレインは、それぞれ異なるビット線ＢＬ（ＢＬ０〜ＢＬ（Ｌ−１）、但しＬは２以上の自然数）に接続される。また、ビット線ＢＬは、複数のブロックＢＬＫ間で各ストリングユニットＳＵ内にある１つのＮＡＮＤストリング６を共通に接続する。更に、複数の選択トランジスタＳＴ２のソースは、ソース線ＳＬに共通に接続されている。
【００２０】
つまりストリングユニットＳＵは、異なるビット線ＢＬに接続され、且つ同一のセレクトゲート線ＳＧＤに接続されたＮＡＮＤストリング６の集合体である。またブロックＢＬＫは、ワード線ＷＬを共通にする複数のストリングユニットＳＵの集合体である。そしてメモリセルアレイ２は、ビット線ＢＬを共通にする複数のブロックＢＬＫの集合体である。
【００２１】
図３は、ブロックＢＬＫの一部領域の断面図である。図示するように、ｐ型ウェル領域１０上に、複数のＮＡＮＤストリング６が形成されている。すなわち、ウェル領域１０上には、セレクトゲート線ＳＧＳとして機能する例えば４層の配線層１１、ワード線ＷＬ０〜ＷＬ７として機能する８層の配線層１２、及びセレクトゲート線ＳＧＤとして機能する例えば４層の配線層１３が、順次積層されている。積層された配線層間には、図示せぬ絶縁膜が形成されている。
【００２２】
そして、これらの配線層１３、１２、１１を貫通してウェル領域１０に達するピラー状の導電体１４が形成されている。導電体１４の側面には、ゲート絶縁膜１５、電荷蓄積層（絶縁膜または導電膜）１６、及びブロック絶縁膜１７が順次形成され、これらによってメモリセルトランジスタＭＴ、並びに選択トランジスタＳＴ１及びＳＴ２が形成されている。導電体１４は、ＮＡＮＤストリング６の電流経路として機能し、各トランジスタのチャネルが形成される領域となる。そして導電体１４の上端は、ビット線ＢＬとして機能する金属配線層１８に接続される。
【００２３】
ウェル領域１０の表面領域内には、ｎ＋型不純物拡散層１９が形成されている。拡散層１９上にはコンタクトプラグ２０が形成され、コンタクトプラグ２０は、ソース線ＳＬとして機能する金属配線層２１に接続される。更に、ウェル領域１０の表面領域内には、ｐ＋型不純物拡散層２２が形成されている。拡散層２２上にはコンタクトプラグ２３が形成され、コンタクトプラグ２３は、ウェル配線ＣＰＷＥＬＬとして機能する金属配線層２４に接続される。ウェル配線ＣＰＷＥＬＬは、ウェル領域１０を介して導電体１４に電位を印加するための配線である。
【００２４】
以上の構成が、図３を記載した紙面の奥行き方向に複数配列されており、奥行き方向に並ぶ複数のＮＡＮＤストリング６の集合によってストリングユニットＳＵが形成される。
【００２５】
なお、データの消去は、ブロックＢＬＫ単位、またはブロックＢＬＫよりも小さい単位で行うことができる。消去方法に関しては、例えば“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE”という２０１１年９月１８日に出願された米国特許出願１３／２３５，３８９号に記載されている。また、“NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE”という２０１０年１月２７日に出願された米国特許出願１２／６９４，６９０号に記載されている。更に、“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE AND DATA ERASE METHOD THEREOF”という２０１２年５月３０日に出願された米国特許出願１３／４８３，６１０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００２６】
更に、メモリセルアレイ２の構成についてはその他の構成であっても良い。すなわちメモリセルアレイ２の構成については、例えば、“三次元積層不揮発性半導体メモリ(THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY)”という２００９年３月１９日に出願された米国特許出願１２／４０７，４０３号に記載されている。また、“三次元積層不揮発性半導体メモリ(THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY)”という２００９年３月１８日に出願された米国特許出願１２／４０６，５２４号、“不揮発性半導体記憶装置及びその製造方法(NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME)”という２０１０年３月２５日に出願された米国特許出願１２／６７９，９９１号“半導体メモリ及びその製造方法(SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME)”という２００９年３月２３日に出願された米国特許出願１２／５３２，０３０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００２７】
１．１．３  センスアンプの構成について  
次に、センスアンプ４の構成について、図４を用いて説明する。
【００２８】
図示するようにセンスアンプ４は、複数のセンスアンプユニットＳＡＵと複数のラッチ回路ＸＤＬとを含む。
【００２９】
センスアンプユニットＳＡＵは、例えばビット線ＢＬ毎に設けられ、対応するビット線ＢＬに読み出されたデータをセンスし、また対応するビット線ＢＬに書き込みデータを転送する。例えば、１６個のセンスアンプユニットＳＡＵが、１つのバスＤＢＵＳに共通に接続されている。なお、１つのバスＤＢＵＳに接続されるセンスアンプユニットＳＡＵの個数は任意である。以下の説明において、１つのバスＤＢＵＳに共通に接続された１６個のセンスアンプユニットＳＡＵを区別する際には、それぞれＳＡＵ＜０＞〜ＳＡＵ＜１５＞と表記する。
【００３０】
ラッチ回路ＸＤＬは、センスアンプユニットＳＡＵ毎に設けられ、対応するビット線ＢＬに関連するデータを一時的に保持する。センスアンプユニットＳＡＵ＜０＞〜ＳＡＵ＜１５＞にそれぞれ対応する１６個のラッチ回路ＸＤＬ＜１５：０＞が、１つのバスＤＢＵＳに、共通に接続されている。また、各ラッチ回路ＸＤＬは、データ線ＩＯに接続される。ラッチ回路ＸＤＬは、バスＤＢＵＳ及びデータ線ＩＯを介してセンスアンプユニットＳＡＵと外部との間のデータの送受信に使用される。すなわち、例えば外部コントローラ等から受信したデータは、まずデータ線ＩＯを介してラッチ回路ＸＤＬに保持され、その後、バスＤＢＵＳを介してセンスアンプユニットに転送される。逆もまた同じである。
【００３１】
１．１．４  センスアンプユニットの構成について
次にセンスアンプユニットＳＡＵの構成について、図５を用いて説明する。なお、本実施形態では、ビット線ＢＬを流れる電流をセンスする電流センス方式のセンスアンプユニットＳＡＵを例に説明するが、電圧センス方式のセンスアンプユニットＳＡＵを用いても良い。
【００３２】
図５に示すように、センスアンプユニットＳＡＵは、センスアンプ部ＳＡ、４個のラッチ回路（ＳＤＬ、ＡＤＬ、ＢＤＬ、及びＣＤＬ）、プリチャージ回路３０、及びバススイッチ３２を含む。
【００３３】
センスアンプ部ＳＡは、ビット線ＢＬに読み出されたデータをセンスし、またプログラムデータに応じてビット線ＢＬに電圧を印加する。すなわちセンスアンプ部ＳＡは、ビット線ＢＬを直接的に制御するモジュールである。更に、ラッチ回路ＳＤＬ、ＡＤＬ、ＢＤＬ、及びＣＤＬ内のデータを用いたＡＮＤ演算あるいはＯＲ演算を行うモジュールである。
【００３４】
次にセンスアンプ部ＳＡの回路の詳細について説明する。以下の説明において、トランジスタのソースまたはドレインの一方を「電流経路の一端」と呼び、ソースまたはドレインの他方を「電流経路の他端」と呼ぶ。
【００３５】
図示するようにセンスアンプ部ＳＡは、高耐圧ｎチャネルＭＯＳトランジスタ４０、低耐圧ｎチャネルＭＯＳトランジスタ４１〜５０、低耐圧ｐチャネルＭＯＳトランジスタ５１、及びキャパシタ素子５２を備えている。
【００３６】
トランジスタ４０は、ゲートに信号ＢＬＳが入力され、電流経路の一端が、対応するビット線ＢＬに接続され、電流経路の他端がノードＢＬＩに接続される。
【００３７】
トランジスタ４１は、ゲートに信号ＢＬＣが入力され、電流経路の一端がノードＢＬＩに接続され、電流経路の他端がノードＳＣＯＭに接続される。トランジスタ４１は、対応するビット線ＢＬを、信号ＢＬＣに応じた電位にクランプするためのものである。
【００３８】
トランジスタ４２は、ゲートに信号ＢＬＸが入力され、電流経路の一端がノードＳＣＯＭに接続され、電流経路の他端がノードＳＳＲＣに接続される。
【００３９】
トランジスタ４３は、ゲートがノードＬＡＴ＿Ｓに接続され、電流経路の一端がノードＳＳＲＣに接続され、電流経路の他端がノードＳＲＣＧＮＤに接続される。ノードＳＲＣＧＮＤは、例えば接地電圧ＶＳＳが印加される。
【００４０】
トランジスタ５１は、ゲートがノードＬＡＴ＿Ｓに接続され、電流経路の一端に電源電圧ＶＤＤＳＡが印加され、電流経路の他端が、ノードＳＳＲＣに接続される。
【００４１】
トランジスタ４４は、ゲートに信号ＸＸＬが入力され、電流経路の一端がノードＳＣＯＭに接続され、電流経路の他端がノードＳＥＮに接続される。
【００４２】
トランジスタ４５は、ゲートに信号ＨＬＬが入力され、電流経路の一端に電圧ＶＳＥＮＰが印加され、電流経路の他端がノードＳＥＮに接続される。
【００４３】
キャパシタ素子５２は、一方の電極がノードＳＥＮに接続され、他方の電極にクロックＣＬＫが入力される。
【００４４】
トランジスタ４７は、ゲートがノードＳＥＮに接続され、電流経路の一端が、トランジスタ４８の電流経路の一端に接続され、電流経路の他端にクロックＣＬＫが入力される。
【００４５】
トランジスタ４８は、ゲートに信号ＳＴＢが入力され、電流経路の他端がバスＬＢＵＳに接続される。
【００４６】
トランジスタ４６は、ゲートに信号ＢＬＱが入力され、電流経路の一端がノードＳＥＮに接続され、電流経路の他端がバスＬＢＵＳに接続される。
【００４７】
トランジスタ４９は、ゲートがバスＬＢＵＳに接続され、電流経路の一端がトランジスタ５０の電流経路の一端に接続され、電流経路の他端に電圧ＶＬＳＡが印加される。電圧ＶＬＳＡは、例えば接地電圧ＶＳＳであっても良い。
【００４８】
トランジスタ５０は、ゲートに信号ＬＳＬが入力され、電流経路の他端がノードＳＥＮに接続される。
【００４９】
ラッチ回路ＳＤＬ、ＡＤＬ、ＢＤＬ、及びＣＤＬは、データを一時的に保持する。データの書き込み動作において、センスアンプ部ＳＡは、ラッチ回路ＳＤＬの保持データに応じて、ビット線ＢＬを制御する。その他のラッチ回路ＡＤＬ、ＢＤＬ及びＣＤＬは、例えば、個々のメモリセルトランジスタが２ビット以上のデータを保持する多値動作用に使用される。なお、ラッチ回路の個数は任意に設定可能であり、例えばメモリセルトランジスタが保持可能なデータ量（ビット数）に応じて設定される。
【００５０】
ラッチ回路ＳＤＬは、低耐圧ｎチャネルＭＯＳトランジスタ６０〜６３及び低耐圧のｐチャネルＭＯＳトランジスタ６４〜６７を備えている。
【００５１】
トランジスタ６０は、ゲートに信号ＳＴＬが入力され、電流経路の一端がバスＬＢＵＳに接続され、電流経路の他端がノードＬＡＴ＿Ｓに接続される。
【００５２】
トランジスタ６１は、ゲートに信号ＳＴＩが入力され、電流経路の一端がバスＬＢＵＳに接続され、電流経路の他端がノードＩＮＶ＿Ｓに接続される。
【００５３】
トランジスタ６２は、ゲートがノードＩＮＶ＿Ｓに接続され、電流経路の一端が接地され、電流経路の他端がノードＬＡＴ＿Ｓに接続される。
【００５４】
トランジスタ６３は、ゲートがノードＬＡＴ＿Ｓに接続され、電流経路の一端が接地され、電流経路の他端がノードＩＮＶ＿Ｓに接続される。
【００５５】
トランジスタ６４は、ゲートがノードＩＮＶ＿Ｓに接続され、電流経路の一端がノードＬＡＴ＿Ｓに接続される。
【００５６】
トランジスタ６５は、ゲートがノードＬＡＴ＿Ｓに接続され、電流経路の一端がノードＩＮＶ＿Ｓに接続される。
【００５７】
トランジスタ６６は、ゲートに信号ＳＬＬが入力され、電流経路の一端がトランジスタ６４の電流経路の他端に接続され、電流経路の他端に電源電圧ＶＤＤＳＡが印加される。
【００５８】
トランジスタ６７は、ゲートに信号ＳＬＩが入力され、電流経路の一端がトランジスタ６５の電流経路の他端に接続され、電流経路の他端に電源電圧ＶＤＤＳＡが印加される。
【００５９】
ラッチ回路ＳＤＬでは、トランジスタ６２、６４で第１インバータが構成され、トランジスタ６３、６５で第２インバータが構成されている。そして、第１インバータの出力及び第２インバータの入力（ノードＬＡＴ＿Ｓ）が、データ転送用のトランジスタ６０を介してバスＬＢＵＳに接続され、第１インバータの入力及び第２インバータの出力（ノードＩＮＶ＿Ｓ）が、データ転送用のトランジスタ６１を介してバスＬＢＵＳに接続される。ラッチ回路ＳＤＬは、データをノードＬＡＴ＿Ｓで保持し、その反転データをノードＩＮＶ＿Ｓで保持する。
【００６０】
ラッチ回路ＡＤＬ、ＢＤＬ、及びＣＤＬは、ラッチ回路ＳＤＬと同様の構成を有しているので、説明は省略するが、各トランジスタの参照番号及び信号名は、図５の通りラッチ回路ＳＤＬのものとは区別して以下説明する。そして各センスアンプユニットＳＡＵにおいて、センスアンプ部ＳＡ、並びに４個のラッチ回路ＳＤＬ、ＡＤＬ、ＢＤＬ、及びＣＤＬは、互いにデータを送受信可能なようにバスＬＢＵＳによって接続されている。
【００６１】
プリチャージ回路３０は、バスＬＢＵＳをプリチャージする。プリチャージ回路３０は、例えば低耐圧ｎチャネルＭＯＳトランジスタ３１を含む。トランジスタ３１は、ゲートに信号ＬＰＣが入力され、電流経路の一端がバスＬＢＵＳに接続され、電流経路の他端に電圧ＶＨＬＢが印加される。そしてプリチャージ回路３０は、バスＬＢＵＳに電圧ＶＨＬＢを転送することで、バスＬＢＵＳをプリチャージする。
【００６２】
バススイッチ３２は、バスＬＢＵＳとバスＤＢＵＳとを接続する。すなわち、バススイッチ３２は、センスアンプ部ＳＡとラッチ回路ＸＤＬとを接続する。バススイッチ３２は、例えば低耐圧ｎチャネルＭＯＳトランジスタ３３を含む。トランジスタ３３は、ゲートに信号ＤＳＷが入力され、電流経路の一端がバスＬＢＵＳに接続され、電流経路の他端がバスＤＢＵＳに接続される。
【００６３】
なお、上記構成のセンスアンプユニットＳＡＵにおける各種信号は、例えば制御回路５によって与えられる。
【００６４】
１．２  メモリセルトランジスタの閾値分布について  
次に、本実施形態に係るメモリセルトランジスタＭＴの取り得る閾値分布について、図６を用いて説明する。以下、本実施形態では、メモリセルトランジスタＭＴが８値のデータを保持可能な場合について説明するが、保持可能なデータは８値に限定されてない。本実施形態においては、メモリセルトランジスタＭＴが４値以上のデータ（２ビット以上のデータ）を保持可能であれば良い。
【００６５】
図示するように、各々のメモリセルトランジスタＭＴの閾値電圧は、離散的な例えば８個の分布のいずれかに含まれる値を取る。この８個の分布を閾値の低い順にそれぞれ、“Ｅｒ”レベル、“Ａ”レベル、“Ｂ”レベル、“Ｃ”レベル、“Ｄ”レベル、“Ｅ”レベル、“Ｆ”レベル、及び“Ｇ”レベルと呼ぶことにする。
【００６６】
図６の（ｂ）に示すように、“Ｅｒ”レベルは、例えばデータの消去状態に相当する。そして“Ｅｒ”レベルに含まれる閾値電圧は電圧ＶfyＡよりも小さく、正または負の値を有する。
【００６７】
“Ａ”〜“Ｇ”レベルは、電荷蓄積層に電荷が注入されてデータが書き込まれた状態に相当し、各分布に含まれる閾値電圧は例えば正の値を有する。“Ａ”レベルに含まれる閾値電圧は、電圧ＶfyＡ以上であり、且つ電圧ＶfyＢ未満である（但し、ＶfyＢ＞ＶfyＡ）。“Ｂ”レベルに含まれる閾電圧値は、電圧ＶfyＢ以上であり、且つ電圧ＶfyＣ未満である（但し、ＶfyＣ＞ＶfyＢ）。“Ｃ”レベルに含まれる閾値電圧は、電圧ＶfyＣ以上であり、且つ電圧ＶfyＤ未満である（但し、ＶfyＤ＞ＶfyＣ）。“Ｄ”レベルに含まれる閾値電圧は、電圧ＶfyＤ以上であり、且つ電圧ＶfyＥ未満である（但し、ＶfyＥ＞ＶfyＤ）。“Ｅ”レベルに含まれる閾値電圧は、電圧ＶfyＥ以上であり、且つ電圧ＶfyＦ未満である（但し、ＶfyＦ＞ＶfyＥ）。“Ｆ”レベルに含まれる閾値電圧は、電圧ＶfyＦ以上であり、且つ電圧ＶfyＧ未満である（但し、ＶfyＧ＞ＶfyＦ）。そして、“Ｇ”レベルに含まれる閾値電圧は、電圧ＶfyＧ以上であり、且つ電圧ＶＲＥＡＤ及びＶＰＡＳＳ未満である（但し、ＶＲＥＡＤ＞ＶfyＧ）。なお、ＶＲＥＡＤ及びＶＰＡＳＳは、それぞれデータの読み出し動作時及び書き込み動作時に非選択ワード線ＷＬに印加される電圧である。
【００６８】
以上のように、各メモリセルトランジスタＭＴは、８個の閾値分布のいずれかを有することで、８種類の状態を取ることが出来る。これらの状態を、２進数表記で“０００”〜“１１１”に割り当てることで、各メモリセルトランジスタＭＴは３ビットのデータを保持できる。この３ビットデータの各ビットをそれぞれ、上位ビット、中位ビット、及び下位ビットと呼ぶことがある。
【００６９】
図６の（ａ）に示すように、本実施形態では、“Ｅｒ”〜“Ｇ”レベルに対するデータの割り当てを、“Ｅｒ”レベルのデータは“１１１”とし、“Ａ”レベルのデータは“０１１”とし、“Ｂ”レベルのデータは“１０１”とし、“Ｃ”レベルのデータは“００１”とし、“Ｄ”レベルのデータは“０００”とし、“Ｅ”レベルのデータは“１００”とし、“Ｆ”レベルのデータは“０１０”とし、“Ｇ”レベルのデータは“１１０”とする。なお、各レベルに対するデータの割り当ては、任意に設定可能である。
【００７０】
また、詳細は後述するが、データは、いずれかのワード線ＷＬに接続された複数のメモリセルトランジスタＭＴ（例えば全ビット線に接続されたＬ個のメモリセルトランジスタＭＴ）に対して一括して書き込まれる。この単位をページと呼ぶ。そして、一括して書き込まれる上位ビットの集合を上位ページ（upper page）、中位ビットの集合を中位ページ（middle page）、下位ビットの集合を下位ページ（lower page）と呼ぶことがある。
【００７１】
なお、図６では８個のレベルが離散的に分布する場合を例に説明したが、これは例えばデータの書き込み直後の理想的な状態である。従って、現実的には隣接するレベルが重なることが起こり得る。例えばデータの書き込み後、ディスターブ等により“Ｅｒ”レベルの上端と“Ａ”レベルの下端とが重なる場合がある。このような場合には、例えばＥＣＣ技術等を用いてデータが訂正される。
【００７２】
１．３  センスアンプ部を用いた演算動作について
次にセンスアンプ部ＳＡを用いたＡＮＤ演算及びＯＲ演算について説明する。
【００７３】
１．３．１  ＡＮＤ演算動作について
まず、ＡＮＤ演算について説明する。以下では、ＡＮＤ演算の例として、ラッチ回路ＢＤＬの保持するデータとＣＤＬの保持するデータとのＡＮＤ演算を行い、その結果をラッチ回路ＳＤＬに保持する場合について説明する。図７は、ＡＮＤ演算の各処理に対して、ラッチ回路ＢＤＬ、ＣＤＬ、及びＳＤＬと、ノードＳＥＮと、バスＬＢＵＳとが保持するデータを示している。図７のテーブル（ａ）は、ラッチ回路ＢＤＬ及びＣＤＬが“１”データを保持する場合の演算過程を示している。テーブル（ｂ）は、ラッチ回路ＢＤＬが“１”データを保持し、ラッチ回路ＣＤＬが“０”データを保持する場合の演算過程を示している。テーブル（ｃ）は、ラッチ回路ＢＤＬが“０”データを保持し、ラッチ回路ＣＤＬが“１”データを保持する場合の演算過程を示している。テーブル（ｄ）は、ラッチ回路ＢＤＬ及びＣＤＬが“０”データを保持する場合の演算過程を示している。また、図７において、“１”なる表記は、“Ｈ”レベルの信号（電圧）を示し、“０”なる表記は“Ｌ”レベルの信号（電圧）を示す。また、図７のテーブルにおいて、斜線で示している欄は、各ステップにおける演算結果を示している。
【００７４】
まず、制御回路５は、信号ＬＰＣ及びＢＬＱを“Ｈ”レベルにして、トランジスタ３１及び４６をオン状態にする（ステップ０）。これによりバスＬＢＵＳ及びノードＳＥＮが“Ｈ”レベル（“１”データ）にプリチャージされる。制御回路５は、プリチャージ後、信号ＬＰＣ及びＢＬＱを“Ｌ”レベルにする。
【００７５】
次に、制御回路５は、信号ＢＴＬを“Ｈ”レベルにし、トランジスタ８０をオン状態にする（ステップ１）。これより、ノードＬＡＴ＿Ｂが“１”データ（ラッチ回路ＢＤＬが“１”データ）を保持する場合、バスＬＢＵＳは“１”データを保持する（図７（ａ）及び（ｂ））。ノードＬＡＴ＿Ｂが“０”データ（ラッチ回路ＢＤＬが“０”データ）を保持する場合、バスＬＢＵＳは“０”データを保持する（図７（ｃ）及び（ｄ））。
次に、制御回路５は、信号ＬＳＬを“Ｈ”レベルにし、トランジスタ５０をオン状態にする（ステップ２）。するとバスＬＢＵＳが“１”データを保持する場合、トランジスタ４９がオン状態となるため、ノードＳＥＮは“０”データを保持する（図７（ａ）及び（ｂ））。バスＬＢＵＳが“０”データを保持する場合、トランジスタ４９がオフ状態となり、ノードＳＥＮは“１”データを保持する（図７（ｃ）及び（ｄ））。すなわち、ラッチ回路ＢＤＬが“１”データを保持する場合、ノードＳＥＮは“０”データを保持し、ラッチ回路ＢＤＬが“０”データを保持する場合、ノードＳＥＮは“１”データを保持する。
【００７６】
次に、制御回路５は、バスＬＢＵＳをプリチャージした後、信号ＣＴＬを“Ｈ”レベルにし、トランジスタ９０をオン状態にする（ステップ３）。これより、ノードＬＡＴ＿Ｃが“１”データ（ラッチ回路ＣＤＬが“１”データ）を保持する場合、バスＬＢＵＳは“１”データを保持する（図７（ａ）及び（ｃ））。ノードＬＡＴ＿Ｃが“０”データ（ラッチ回路ＣＤＬが“０”データ）を保持する場合、バスＬＢＵＳは“０”データを保持する（図７（ｂ）及び（ｄ））。
【００７７】
次に、制御回路５は、信号ＣＬＬを“Ｈ”レベルにし、トランジスタ９６をオフ状態にする（ステップ４）。すなわち制御回路５は、ノードＬＡＴ＿Ｃへの電圧供給を停止させる。
【００７８】
次に、制御回路５は、信号ＳＴＢを“Ｈ”レベルにし、トランジスタ４８をオン状態にする（ステップ５）。するとノードＳＥＮが“１”データを保持する場合（図７（ｃ）及び（ｄ））、トランジスタ４７がオン状態となるため、バスＬＢＵＳは“０”データを保持する。ノードＳＥＮが“０”データを保持する場合（図７（ａ）及び（ｂ））、トランジスタ４７がオフ状態となり、バスＬＢＵＳは“０”あるいは“１”データの状態を維持する。従って、バスＬＢＵＳは、ノードＳＥＮが“０”を保持し、及びバスＬＢＵＳが“１”データを保持する場合（ラッチ回路ＢＤＬ及びＣＤＬがともに“１”データを保持する場合（図７（ａ）））、“１”データを保持し、それ以外の場合（図７（ｂ）〜（ｄ））は、“０”データを保持する。すなわち、バスＬＢＵＳは、ラッチ回路ＢＤＬ及びＣＤＬのデータのＡＮＤ演算の結果を保持する。
【００７９】
次に、制御回路５は、信号ＳＬＬ及びＳＴＬを“Ｈ”レベルにしてトランジスタ６６をオフ状態にし、トランジスタ６０をオン状態にして、バスＬＢＵＳのデータをラッチ回路ＳＤＬに格納する（ステップ６）。
【００８０】
１．３．２  ＯＲ演算動作について
次に、ＯＲ演算について、図８を用いて説明する。以下では、ＡＮＤ演算と異なる点についてのみ説明する。
【００８１】
まず、制御回路５は、ＡＮＤ演算の場合と同様に、バスＬＢＵＳ及びノードＳＥＮを“Ｈ”レベル（“１”データ）にプリチャージする（ステップ０）。
【００８２】
次に、制御回路５は、信号ＢＴＩを“Ｈ”レベルにし、トランジスタ８１をオン状態にする（ステップ１）。これより、ノードＩＮＶ＿Ｂが“０”データを保持する場合、バスＬＢＵＳは“０”データを保持する。ノードＩＮＶ＿Ｂが“１”データを保持する場合、バスＬＢＵＳは“１”データを保持する。すなわち、ラッチ回路ＢＤＬのデータが“１”の場合（図８（ａ）及び（ｂ））、バスＬＢＵＳは“０”データを保持し、ラッチ回路ＢＤＬのデータが“０”の場合（図８（ｃ）及び（ｄ））、バスＬＢＵＳは“１”データを保持する。
【００８３】
次に、制御回路５は、ＡＮＤ演算の場合と同様に、信号ＬＳＬを“Ｈ”レベルにしてトランジスタ５０をオン状態にする（ステップ２）。ＯＲ演算では、ラッチ回路ＢＤＬのデータが“１”の場合（図８（ａ）及び（ｂ））、ノードＳＥＮは“１”データを保持する。ラッチ回路ＢＤＬのデータが“０”の場合（図８（ｃ）及び（ｄ））、ノードＳＥＮは“０”データを保持する。
【００８４】
次に、制御回路５は、バスＬＢＵＳをプリチャージした後、信号ＣＴＩを“Ｈ”レベルにし、トランジスタ９１をオン状態にする（ステップ３）。これより、ノードＩＮＶ＿Ｃが“０”データを保持する場合、バスＬＢＵＳは“０”データを保持し、ノードＩＮＶ＿Ｃが“１”データを保持する場合、バスＬＢＵＳは“１”データを保持する。すなわち、ラッチ回路ＣＤＬのデータが“１”の場合（図８（ａ）及び（ｃ））、バスＬＢＵＳは“０”データを保持し、ラッチ回路ＣＤＬのデータが“０”の場合（図８（ｂ）及び（ｄ））、バスＬＢＵＳは“１”データを保持する。
【００８５】
次に、制御回路５は、信号ＣＬＩを“Ｈ”レベルにし、トランジスタ９７をオフ状態にする（ステップ４）。すなわち制御回路５は、ノードＩＮＶ＿Ｃへの電圧供給を停止させる。
【００８６】
次に、制御回路５は、ＡＮＤ演算の場合と同様に、信号ＳＴＢを“Ｈ”レベルにし、トランジスタ４８をオン状態にする（ステップ５）。ノードＳＥＮが“１”データを保持する場合（図８（ａ）及び（ｂ））、トランジスタ４７がオン状態となるため、バスＬＢＵＳは“０”データを保持する。ノードＳＥＮが“０”データを保持する場合（図８（ｃ）及び（ｄ））、トランジスタ４７がオフ状態となり、バスＬＢＵＳは“０”あるいは“１”データの状態を維持する。よって、バスＬＢＵＳは、ノードＳＥＮが“１”データを保持し、バスＬＢＵＳが“０”データを保持する場合、すなわちラッチ回路ＢＤＬ及びＣＤＬがともに“０”データを保持する場合（図８（ｄ））、“１”データを保持し、それ以外の場合（図８（ａ）〜（ｃ））は、“０”データを保持する。すなわち、バスＬＢＵＳは、ラッチ回路ＢＤＬ及びＣＤＬのデータのＯＲ演算の反転データを保持する。
【００８７】
次に、制御回路５は、信号ＳＬＩ及びＳＴＩを“Ｈ”レベルにしてトランジスタ６７をオフ状態にし、トランジスタ６１をオン状態にして、バスＬＢＵＳの反転データをラッチ回路ＳＤＬに格納する（ステップ６）。
【００８８】
１．４  書き込み動作について  
次に、本実施形態に係るデータの書き込み動作について簡単に説明する。書き込み動作は、大まかにはプログラム動作とベリファイ動作とを含む。
【００８９】
プログラム動作は、電子を電荷蓄積層に注入することにより閾値電圧を上昇させる（または注入を禁止することで閾値電圧を維持させる）動作のことである。以下では、閾値電圧を上昇させる動作を「“０”プログラム」または「“０”書き込み」と呼び、“０”プログラム対象とされたビット線ＢＬには“０”データが与えられる。他方で、閾値電圧を維持させる動作を「“１”プログラム」、「“１”書き込み」、または「書き込み禁止」と呼び、“１”プログラム対象とされたビット線ＢＬには“１”データが与えられる。
【００９０】
ベリファイ動作は、プログラム動作の後、データを読み出すことで、メモリセルトランジスタＭＴの閾値電圧がターゲットレベルまで達したか否かを判定する動作である。ターゲットレベルまで達したメモリセルトランジスタＭＴは、その後、書き込み禁止とされる。
【００９１】
以上のプログラム動作とベリファイ動作の組み合わせを繰り返すことで、メモリセルトランジスタＭＴの閾値電圧がターゲットレベルまで上昇される。
１．４．１  書き込み動作の全体の流れについて
まず、書き込み動作の全体の流れについて、図９を用いて説明する。図９は、書き込み動作の流れを示すフローチャートである。
【００９２】
図示するように、まず外部コントローラから受信したデータは、ラッチ回路ＸＤＬ、ＢＤＬ、及びＣＤＬに格納される（ステップＳ１０）。より具体的には、例えばメモリセルトランジスタＭＴに書き込む３ビットのデータに対し、ラッチ回路ＸＤＬが下位ビットのデータを保持し、ラッチ回路ＢＤＬが中位ビットのデータを保持し、ラッチ回路ＣＤＬが上位ビットのデータを保持する。
【００９３】
次に、制御回路５は、センスアンプユニットＳＡＵにおいて、ラッチ回路ＸＤＬ、ＢＤＬ、及びＣＤＬのデータのＡＮＤ演算を行い、その結果をラッチ回路ＡＤＬに格納する（ステップＳ１１）。例えば、“Ｅｒ”レベルに対応するラッチ回路ＡＤＬには“１”データが格納され、“Ａ”〜“Ｇ”レベルに対応するラッチ回路ＡＤＬには、“０”データが格納される。
【００９４】
次に、制御回路５は、ラッチ回路ＡＤＬの反転データをラッチ回路ＳＤＬに格納する（ステップＳ１２）。例えば、“Ｅｒ”レベルに対応するラッチ回路ＳＤＬには“０”データが格納され、“Ａ”〜“Ｇ”レベルに対応するラッチ回路ＳＤＬには、“１”データが格納される。プログラム動作では、このときのラッチ回路ＳＤＬのデータに応じて、“０”プログラムあるいは“１”プログラムが選択される。
【００９５】
次に、制御回路は、プログラム動作を実行する（ステップＳ１３）。より具体的には、例えばラッチ回路ＳＤＬに“０”データが格納される場合（“Ｅｒ”レベル）、対応するメモリセルトランジスタＭＴには“１”プログラムが実行され、ラッチ回路ＳＤＬに“１”データが格納されている場合（“Ａ”〜“Ｇ”レベル）、“０”プログラムが実行される。
【００９６】
次に、制御回路５は、ベリファイ動作の対象となる書き込みレベルに応じた演算式（詳細は後述する）を用いて、ラッチ回路ＢＤＬ及びＣＤＬのデータ(中位ビット及び上位ビットのデータ)の演算を行い、その結果をラッチ回路ＳＤＬに格納する（ステップＳ１４）。ベリファイ動作では、このときのラッチ回路ＳＤＬのデータに応じて、ビット線ＢＬにプリチャージ電圧を印加するか否かが選択される。ベリファイ動作におけるプリチャージ電圧とは、メモリセルトランジスタＭＴのデータを読み出す際に、ビット線ＢＬに印加される電圧で、例えば接地電圧ＶＳＳよりも高い電圧である。
【００９７】
次に、ベリファイ動作を実行する（ステップＳ１５）。より具体的には、例えばラッチ回路ＳＤＬに“０”データが格納されている場合、対応するビット線ＢＬにはプリチャージ電圧が印加され、ラッチ回路ＳＤＬに“１”データが格納されている場合、対応するビット線ＢＬには、例えば電圧ＶＳＳが印加され、プリチャージ電圧が印加されない。
【００９８】
ベリファイ動作の結果は、ラッチ回路ＳＤＬに格納される。例えば、ベリファイ動作をパスした場合、ラッチ回路ＳＤＬに“０”データが格納され、ベリファイ動作をフェイルした場合、ラッチ回路ＳＤＬに“１”データが格納される。また、ベリファイ対象ではないセンスアンプユニットＳＡＵのラッチ回路ＳＤＬにも“１”データが格納される。
【００９９】
次に、制御回路５は、ラッチ回路ＳＤＬの反転データとラッチ回路ＡＤＬのデータとのＯＲ演算を行い、その結果をラッチ回路ＡＤＬに格納する(ステップＳ１６)。これにより、ラッチ回路ＡＤＬのデータは更新される。より具体的には、例えば、“Ａ”レベルについてのベリファイ動作を実行した場合、“Ａ”レベルに対応するラッチ回路ＡＤＬでは、ベリファイ動作をパスした場合、“０”データが“１”データに更新され、ベリファイ動作をフェイルした場合、“０”データを維持する。また、“Ａ”レベルに対応していないラッチ回路ＡＤＬでは、保持するデータが維持される。
【０１００】
別の書き込みレベルのベリファイ動作を続けて実行する場合（ステップＳ１７＿Ｙｅｓ）、制御回路５は、ステップＳ１４に戻り、ベリファイ動作の対象となる書き込みレベルに応じた演算を実行する。
【０１０１】
別の書き込みレベルのベリファイ動作を続けて実行しない場合（ステップＳ１７＿Ｎｏ）、制御回路５は、書き込み動作を終了するか、再度ステップＳ１３に戻り、プログラムを実行するか判断する。
【０１０２】
具体的には、実行されたベリファイ動作が最上位の書き込みレベル（例えば“Ｇ”レベル）に対応する場合（ステップＳ１８＿Ｙｅｓ）、ベリファイ動作をパスしていれば（ステップＳ１９＿Ｙｅｓ）、書き込み動作は終了となる。
【０１０３】
最上位の書き込みレベルについてのベリファイ動作ではない場合（ステップＳ１８＿Ｎｏ）、あるいは最上位の書き込みレベルについてのベリファイ動作であってもベリファイ動作をフェイルした場合（ステップＳ１９＿Ｎｏ）、制御回路５は、プログラムの回数が予め設定された回数に達したが否かを判定する（ステップＳ２０）。
【０１０４】
そして、プログラムの回数が予め設定された回数に達している場合（ステップＳ２０＿Ｙｅｓ）、制御回路５は、書き込み動作を終了させる。
【０１０５】
プログラムの回数が予め設定された回数に達していない場合（ステップＳ２０＿Ｎｏ）、制御回路５は、ステップＳ１２に戻り、ラッチ回路ＡＤＬの反転データをラッチ回路ＳＤＬに格納した後、プログラム動作を実行する（ステップＳ１３）。
【０１０６】
１．４．２  プログラム動作における各配線の電圧について
次に、プログラム動作における各配線の電圧について、図１０を用いて説明する。
【０１０７】
図１０は、プログラム動作における各配線の電位変化を示している。図示するように、まずセンスアンプ４が各ビット線ＢＬにプログラムデータを転送する。“０”データが与えられたビット線ＢＬには“Ｌ”レベルとして接地電圧ＶＳＳ（例えば０Ｖ）が印加される。“１”データが与えられたビット線ＢＬには“Ｈ”レベルとして、例えば２．５Ｖが印加される。
【０１０８】
また、ロウデコーダ３は、いずれかのブロックＢＬＫを選択し、更にいずれかのストリングユニットＳＵを選択する。そして、選択されたストリングユニットＳＵにおけるセレクトゲート線ＳＧＤに例えば５Ｖを印加して、選択トランジスタＳＴ１をオン状態とさせる。他方で、セレクトゲート線ＳＧＳに電圧ＶＳＳを印加することで、選択トランジスタＳＴ２をオフ状態とさせる。
【０１０９】
更にロウデコーダ３は、選択ブロックＢＬＫにおける非選択ストリングユニットＳＵ及び非選択ブロックＢＬＫにおける非選択ストリングユニットＳＵのセレクトゲート線ＳＧＤ及びＳＧＳに電圧ＶＳＳを印加して、選択トランジスタＳＴ１及びＳＴ２をオフ状態とさせる。
【０１１０】
またソース線ＳＬは、例えば１Ｖ（セレクトゲート線ＳＧＳの電位よりも高い電位）とされる。
【０１１１】
その後、ロウデコーダ３は、選択ブロックＢＬＫにおける選択ストリングユニットＳＵにおけるセレクトゲート線ＳＧＤの電位を、例えば２．５Ｖとする。この電位は、“０”データ（例えば０Ｖ）が与えられたビット線ＢＬに対応する選択トランジスタＳＴ１はオンさせるが、“１”データ（例えば２．５Ｖ）が与えられたビット線ＢＬに対応する選択トランジスタＳＴ１はカットオフさせる電圧である。
【０１１２】
そしてロウデコーダ３は、選択ブロックＢＬＫにおいていずれかのワード線ＷＬを選択し、選択ワード線に電圧ＶＰＧＭを印加し、その他の非選択ワード線ＷＬに電圧ＶＰＡＳＳを印加する。電圧ＶＰＧＭは、トンネル現象により電子を電荷蓄積層に注入するための高電圧であり、ＶＰＧＭ＞ＶＰＡＳＳである。
【０１１３】
“０”書き込み対象のビット線ＢＬに対応するＮＡＮＤストリングでは、選択トランジスタＳＴ１がオン状態となる。そのため、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴのチャネル電位Ｖchは０Ｖとなる。すなわち、制御ゲートとチャネルとの間の電位差が大きくなり、その結果、電子が電荷蓄積層に注入されて、メモリセルトランジスタＭＴの閾値電圧が上昇される。
【０１１４】
“１”書き込み対象のビット線ＢＬに対応するＮＡＮＤストリングでは、選択トランジスタＳＴ１がカットオフ状態となる。そのため、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴのチャネルは電気的にフローティングとなり、ワード線ＷＬ等との容量カップリングによりチャネル電位Ｖchは電圧ＶＰＧＭ近くまで上昇される。すなわち、制御ゲートとチャネルとの間の電位差が小さくなり、その結果、電子は電荷蓄積層に注入されず、メモリセルトランジスタＭＴの閾値電圧は維持される（閾値分布レベルがより高い分布に遷移するほどには閾値電圧は変動しない）。
【０１１５】
１．４．３  ベリファイ動作について
次に本実施形態におけるベリファイ動作について説明する。本実施形態では、ベリファイ動作時に、ラッチ回路ＳＤＬのデータに応じて、プリチャージ電圧を印加するビット線ＢＬが選択される（以下、「選択プリチャージ」と呼ぶ)。より具体的には、例えばセンスアンプユニットＳＡＵは、ラッチ回路ＳＤＬに“０”データ（“Ｌ”データ）が保持されている場合に、対応するビット線ＢＬにプリチャージ電圧を印加する。他方でセンスアンプユニットＳＡＵは、ラッチ回路ＳＤＬに“１”データ（“Ｈ”データ）が保持されている場合、対応するビット線ＢＬに例えば接地電圧ＶＳＳを印加し、プリチャージ電圧を印加しない。以下、プリチャージ電圧を印加するビット線をＢＬ（“pre-charge”）と表記し、プリチャージ電圧を印加しないビット線をＢＬ（“lockout”）と表記する。
【０１１６】
１．４．３．１  ベリファイ動作におけるラッチ回路ＳＤＬの保持データについて
次に、ベリファイ動作時におけるラッチ回路ＳＤＬの保持データについて、図１１を用いて説明する。
【０１１７】
図示するように、本実施形態では、メモリセルトランジスタＭＴに書き込む３ビットのデータに対し、ラッチ回路ＸＤＬが下位ビットのデータを保持し、ラッチ回路ＢＤＬが中位ビットのデータを保持し、ラッチ回路ＣＤＬが上位ビットのデータを保持する。
【０１１８】
ラッチ回路ＡＤＬは、ベリファイのパス（例えば“１”データとする）／フェイル（例えば“０”データとする）情報を保持する。図１１の例は、初期状態（１回目のプログラム動作時）におけるラッチ回路ＡＤＬのデータを示している。より具体的には、初期状態においては、“Ｅｒ”レベルに対応するラッチ回路ＡＤＬは、“１”データを保持し、“Ａ”〜“Ｇ”レベルに対応するラッチ回路ＡＤＬは、“０”データを保持する。
【０１１９】
そして、ラッチ回路ＡＤＬは、ベリファイ結果に応じて保持するデータを更新していく。例えば“Ａ”レベルについてのベリファイ動作を行い、ベリファイをパスした場合、“Ａ”レベルに対応するラッチ回路ＡＤＬのデータは、“０”から“１”に更新される。他方でベリファイをフェイルした場合、ラッチ回路ＡＤＬのデータは、“０”状態を保持する。
【０１２０】
ベリファイ動作の際、ラッチ回路ＳＤＬには、ラッチ回路ＢＤＬのデータとラッチ回路ＣＤＬのデータとの演算結果が格納される。従って、本実施形態の場合、“Ａ”レベルと“Ｆ”レベル、“Ｂ”レベルと“Ｅ”レベル、“Ｃ” レベルと“Ｄ”レベル、及び“Ｅｒ” レベルと“Ｇ”レベルは、それぞれラッチ回路ＢＤＬ及びＣＤＬに格納されているデータが同じであるため、演算結果が同じになる。よって、ベリファイ動作においては、ベリファイ動作の対象となるレベルのビット線ＢＬと、ベリファイ動作の対象となるレベルと中位ビット及び上位ビットのデータが同じレベルのビット線ＢＬとにプリチャージ電圧が印加される。例えば“Ａ”レベルについてのベリファイ動作で“Ａ”レベルと“Ｆ”レベルに対応するビット線ＢＬにプリチャージ電圧が印加され、“Ｆ”レベルについてのベリファイ動作でも“Ａ”レベルと“Ｆ”レベルに対応するビット線ＢＬにプリチャージ電圧が印加される。
【０１２１】
より具体的には、“Ａ”レベルあるいは“Ｆ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、論理演算式；ＳＤＬ＝／（ＢＤＬ×（／ＣＤＬ））となるデータが格納される。“／”は、データの反転を意味し、“×”はＡＮＤ演算を意味する。従って、“Ａ”レベルあるいは“Ｆ”レベルについてのベリファイ動作においては、“Ｅｒ”、“Ｂ”〜“Ｅ”、及び“Ｇ”レベルに対応するラッチ回路ＳＤＬには“１”データが格納され、“Ａ”及び“Ｆ”レベルに対応するラッチ回路ＳＤＬには“０”データが格納される。
【０１２２】
同様に、“Ｂ”レベルあるいは“Ｅ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、論理演算式；ＳＤＬ＝／（（／ＢＤＬ）×ＣＤＬ）となるデータが格納される。従って、“Ｂ”レベルあるいは“Ｅ”レベルについてのベリファイ動作においては、“Ｅｒ”、“Ａ”、“Ｃ”、“Ｄ”、“Ｆ”及び“Ｇ”レベルに対応するラッチ回路ＳＤＬには“１”データが格納され、“Ｂ”及び“Ｅ”レベルに対応するラッチ回路ＳＤＬには“０”データが格納される。
【０１２３】
“Ｃ”レベルあるいは“Ｄ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、論理演算式；ＳＤＬ＝／（（／ＢＤＬ）×（／ＣＤＬ））となるデータが格納される。従って、“Ｃ”レベルあるいは“Ｄ”レベルについてのベリファイ動作においては、“Ｅｒ”〜“Ｂ”、及び“Ｅ”〜“Ｇ”レベルに対応するラッチ回路ＳＤＬには“１”データが格納され、“Ｃ”及び“Ｄ”レベルに対応するラッチ回路ＳＤＬには“０”データが格納される。
【０１２４】
“Ｇ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、論理演算式は、ＳＤＬ＝／（ＢＤＬ×ＣＤＬ）となるデータが格納される。従って、“Ｇ”レベルについてのベリファイ動作においては、“Ａ”〜“Ｆ”レベルに対応するラッチ回路ＳＤＬには“１”データが格納され、“Ｅｒ”及び“Ｇ”レベルに対応するラッチ回路ＳＤＬには“０”データが格納される。
【０１２５】
１．４．３．２  ベリファイ動作における各配線の電圧について
次に、ベリファイ動作における各配線の電圧について、図１２を用いて説明する。図１２は、ベリファイ動作におけるメモリセルアレイ２及びセンスアンプユニットＳＡＵにおける各配線の電圧を示すタイミングチャートである。
【０１２６】
時刻ｔ１において、ロウデコーダ３は、プログラム対象のメモリセルトランジスタＭＴに対応するセレクトゲート線ＳＧＤ及びＳＧＳに電圧ＶＳＧを印加し、選択トランジスタＳＴ１及びＳＴ２をオン状態にする。ロウデコーダ１１２は、選択ワード線ＷＬに電圧ＶＣＧＲＶを、非選択ワード線ＷＬにＶＲＥＡＤを印加する。電圧ＶＣＧＲＶは、読み出しデータ（ベリファイ動作の場合、ベリファイレベル）に応じて設定される電圧である。電圧ＶＲＥＡＤは、メモリセルトランジスタＭＴの閾値電圧に関わらず、メモリセルトランジスタＭＴをオン状態にする電圧であり、ＶＲＥＡＤ＞ＶＣＧＲＶである。
【０１２７】
制御回路５は、センスアンプユニットＳＡＵにおいて、信号ＢＬＳを“Ｈ”レベルにする。すなわちトランジスタ４０のゲートに電圧ＶＢＬＳ（例えば７Ｖ）を印加し、トランジスタ４０をオン状態にして、センスアンプユニットＳＡＵと対応するビット線ＢＬとを接続する。
【０１２８】
時刻ｔ２において、制御回路５は、センスアンプユニットＳＡＵにおいて、信号ＢＬＣ及び信号ＢＬＸを“Ｈ”レベルにする。すなわちトランジスタ４１のゲートに電圧ＶＢＬＣ（例えば０．５Ｖ＋Ｖｔｎ）を印加し、トランジスタ４１をオン状態にする。電圧Ｖｔｎは、センスアンプユニットＳＡＵ内の低耐圧ｎチャネルＭＯＳトランジスタの閾値電圧である。同様に、トランジスタ４２に電圧ＶＢＬＸ（例えば０．７５Ｖ＋Ｖｔｎ）を印加し、トランジスタ４２をオン状態にする。電圧ＶＢＬＸと電圧ＶＢＬＣの関係は、ＶＢＬＸ≧ＶＢＬＣとなる。
【０１２９】
このとき、ラッチ回路ＳＤＬに“０”データすなわち“Ｌ”データが保持されている場合、トランジスタ５１がオン状態となり、トランジスタ４２には、電圧ＶＤＤＳＡが印加される。よってビット線ＢＬ（“pre-charge”）には、トランジスタ４１によりクランプされたプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。そして、ベリファイ対象のメモリセルトランジスタＭＴの閾値電圧Ｖtcに応じて、セル電流Ｉcellがビット線ＢＬ側からソース線ＳＬ側に流れる。より具体的には、閾値電圧Ｖtcが電圧ＶＣＧＲＶより低く、メモリセルトランジスタＭＴがオン状態にある場合、すなわち、プログラムが完了していない場合、対応するセンスアンプユニットＳＡＵではセル電流Ｉcellが流れる。これに対し、閾値電圧Ｖtcが電圧ＶＣＧＲＶより高く、メモリセルトランジスタＭＴがオフ状態にある場合、すなわち、プログラムが完了している場合、メモリセルトランジスタＭＴはオフ状態となり、対応するセンスアンプユニットＳＡＵではセル電流Ｉcellが流れない。
【０１３０】
他方で、ラッチ回路ＳＤＬに“１”データすなわち“Ｈ”データが保持されている場合、トランジスタ４３がオン状態となり、トランジスタ４２には、ノードＳＲＣＧＮＤを介して例えば電圧ＶＳＳが印加される。よってビット線ＢＬ（“lockout”）には、例えば電圧ＶＳＳが印加される。
【０１３１】
時刻ｔ３において、制御回路５は、信号ＨＬＬを“Ｈ”レベルにする。より具体的には、トランジスタ４５のゲートに電圧ＶＨＬＬ（例えば４Ｖ）を印加し、トランジスタ４５をオン状態にする。これによりノードＳＥＮに電圧ＶＳＥＮＰ（例えば２．５Ｖ）が印加される。
【０１３２】
そして、ノードＳＥＮの充電完了後、制御回路５は、信号ＨＬＬを“Ｌ”レベルにし、トランジスタ４５をオフ状態にする。
【０１３３】
時刻ｔ４において、制御回路５は、信号ＬＰＣを“Ｈ”レベルにしプリチャージ回路３０のトランジスタ３１をオン状態にする。これにより、バスＬＢＵＳに電圧ＶＨＬＢ（例えば２．５Ｖ）が印加される。そして、バスＬＢＵＳの充電完了後、制御回路５は、信号ＬＰＣを“Ｌ”レベルにし、トランジスタ３１をオフ状態にする。
【０１３４】
時刻ｔ５において、制御回路５は、ラッチ回路ＳＤＬにおいて、信号ＳＴＬを“Ｈ”レベルにしてトランジスタ６０をオン状態にする。これにより、ラッチ回路ＳＤＬが“１”データ（“Ｈ”データ）を保持しているセンスアンプユニットＳＡＵ、すなわちプリチャージ電圧ＶＰＣＨを印加していないセンスアンプユニットＳＡＵのバスＬＢＵＳは“Ｈ”レベルになる。例えば、“Ａ”レベルについてのベリファイ動作において、“Ｅｒ”、“Ｂ”〜“Ｅ”、“Ｇ”レベルに対応するセンスアンプユニットＳＡＵのバスＬＢＵＳは“Ｈ”レベルになる。
【０１３５】
制御回路５は、バススイッチ３２の信号ＤＳＷを“Ｈ”レベルにし、トランジスタ３３をオン状態にする。そして、ベリファイレベルに応じて、バスＬＢＵＳと、ラッチ回路ＸＤＬのデータを保持するノード（例えばノードＬＡＴ＿Ｘ）あるいは反転データを保持するノード（例えばノードＩＮＶ＿Ｘ）のいずれかとを接続する。
【０１３６】
これにより、ベリファイ対象ではないがプリチャージ電圧ＶＰＣＨを印加しているセンスアンプユニットＳＡＵのバスＬＢＵＳを“Ｈ”レベルにする。具体的には、例えば“Ａ”レベルのベリファイ動作において、“Ａ”レベルに対応するラッチ回路ＸＤＬは“１”データを保持し、“Ｆ”レベルに対応するラッチ回路ＸＤＬは“０”データを保持している。そこでバスＬＢＵＳとラッチ回路ＸＤＬの反転データを保持するノード（例えばノードＩＮＶ＿Ｘ）とを接続することにより、“Ａ”レベルに対応するセンスアンプユニットＳＡＵのバスＬＢＵＳは“Ｌ”レベルとなり、“Ｆ”レベルに対応するセンスアンプユニットＳＡＵのバスＬＢＵＳは“Ｈ”レベルとなる。
【０１３７】
また例えば、“Ｆ”レベルのベリファイ動作においては、バスＬＢＵＳとラッチ回路ＸＤＬのデータを保持するノード（例えばノードＬＡＴ＿Ｘ）とを接続することにより、“Ａ”レベルに対応するセンスアンプユニットＳＡＵのバスＬＢＵＳは“Ｈ”レベルとなり、“Ｆ”レベルに対応するセンスアンプユニットＳＡＵのバスＬＢＵＳは“Ｌ”レベルとなる。従って、ベリファイ対象のセンスアンプユニットＳＡＵ（図１２の参照符号（Ａ１））のバスＬＢＵＳは“Ｌ”レベルになり、ベリファイ動作の対象でないセンスアンプユニットＳＡＵ（図１２の参照符号（Ａ２））のバスＬＢＵＳは“Ｈ”レベルになる。
【０１３８】
時刻ｔ６において、制御回路５は、信号ＬＳＬを“Ｈ”レベルにしてトランジスタ５０をオン状態にする。バスＬＢＵＳが“Ｌ”レベルの場合、トランジスタ４９はオフ状態となる。よって、ベリファイ動作の対象となるセンスアンプユニットＳＡＵのノードＳＥＮは、“Ｈ”レベル、すなわち電圧ＶＳＥＮＰ（２．５Ｖ）を維持する（Ａ１）。他方で、バスＬＢＵＳが“Ｈ”レベルの場合、トランジスタ４９はオン状態となる。よって、ベリファイ動作の対象でないセンスアンプユニットＳＡＵのノードＳＥＮは“Ｌ”レベルになる（Ａ２）。
【０１３９】
時刻ｔ７において、制御回路５は、信号ＸＸＬを“Ｈ”レベルにする。すなわち、制御回路５は、トランジスタ４４のゲートに電圧ＶＸＸＬ（例えば１．０Ｖ＋Ｖｔｎ）を印加し、トランジスタ４４をオン状態とする。この結果、ベリファイ動作の対象となるセンスアンプユニットＳＡＵにおいては、トランジスタ４４によってクランプされた電圧（例えば１Ｖ）がノードＳＥＮからノードＳＣＯＭに印加される。また、ベリファイ動作の対象でないセンスアンプユニットＳＡＵにおいては、ノードＳＥＮが“Ｌ”レベルのため、電圧は印加されない。
【０１４０】
このとき、ベリファイ動作の対象となるセンスアンプユニットＳＡＵ、すなわちビット線ＢＬ（“pre-charge”）に対応するセンスアンプユニットＳＡＵでは、ベリファイ動作の対象となるメモリセルトランジスタＭＴがオン状態にある場合、センスアンプユニットＳＡＵからビット線ＢＬ（“pre-charge”）にセル電流Ｉcellが流れている。このため、ノードＳＥＮの電圧は、大きく低下する。他方で、ベリファイ動作の対象となるメモリセルトランジスタＭＴがオフ状態にある場合、センスアンプユニットＳＡＵからビット線ＢＬ（“pre-charge”）にセル電流Ｉcellはほとんど流れてない。このため、ノードＳＥＮの電圧は、ほとんど低下しない。
【０１４１】
時刻ｔ８において、制御回路５は、信号ＸＸＬを“Ｌ”レベルにし、トランジスタ４４をオフ状態にする。
【０１４２】
時刻ｔ９において、制御回路５は、信号ＬＰＣを“Ｈ”レベルにし、トランジスタ３１をオン状態にする。これにより、バスＬＢＵＳに電圧ＶＨＬＢ（例えば２．５Ｖ）が印加される。そして、バスＬＢＵＳの充電完了後、制御回路５は、信号ＬＰＣを“Ｌ”レベルにし、トランジスタ３１をオフ状態にする。
【０１４３】
時刻ｔ１０において、制御回路５は、信号ＳＴＢを“Ｈ”レベルにし、トランジスタ４８をオン状態にする。
【０１４４】
ベリファイ動作の対象となるセンスアンプユニットＳＡＵにおいては、ノードＳＥＮの電圧が、センス判定閾値、すなわちトランジスタ４７の閾値電圧よりも低い場合、トランジスタ４７はオフ状態となる。よって、バスＬＢＵＳの電圧は、ほとんど低下しない。この結果、バスＬＢＵＳは、“１”データ（“Ｈ”データ）を保持する。他方で、ノードＳＥＮの電圧が、センス判定閾値よりも高い場合、トランジスタ４７はオン状態となる。よって、バスＬＢＵＳの電圧は、大きく低下する。この結果、バスＬＢＵＳは、“０”データ（“Ｌ”データ）を保持する。また、ベリファイ動作の対象ではないセンスアンプユニットＳＡＵにおいては、ノードＳＥＮが“Ｌ”レベルのため、トランジスタ４７はオフ状態となる。よって、バスＬＢＵＳは、“１”データを保持する。
【０１４５】
すなわち、対応するメモリセルトランジスタＭＴがベリファイ動作の対象である場合、ベリファイ動作をパスしたバスＬＢＵＳは、“０”データを保持し、ベリファイ動作をフェイルしたバスＬＢＵＳは、“１”データを保持する。また、対応するメモリセルトランジスタＭＴがベリファイ動作の対象ではない場合、バスＬＢＵＳは、“１”データを保持する。
【０１４６】
時刻ｔ１１において、制御回路５は、信号ＳＴＢを“Ｌ”レベルにし、トランジスタ４７をオフ状態にする。また、制御回路５は、ラッチ回路ＳＤＬにバスＬＢＵＳのデータを格納する。例えば制御回路５は、ラッチ回路ＳＤＬにおいて、信号ＳＬＬを“Ｈ”レベルにしてトランジスタ６６をオフ状態にし、信号ＳＴＬを“Ｈ”レベルにしてトランジスタ６０をオン状態にすることにより、バスＬＢＵＳが保持するデータを、ノードＬＡＴ＿Ｓに取り込む。これにより、ベリファイ動作の対象となるセンスアンプユニットＳＡＵのラッチ回路ＳＤＬには、ベリファイ動作をパスした場合、“０”データが格納され、ベリファイ動作をフェイルした場合、“１”データが格納される。ベリファイ動作の対象ではないセンスアンプユニットＳＡＵのラッチ回路ＳＤＬには、“１”データが格納される。
【０１４７】
時刻ｔ１２〜ｔ１３において、リカバリ動作が行われ、ベリファイ動作を終了する。
【０１４８】
ベリファイ動作終了後、制御回路５は、ラッチ回路ＳＤＬに格納されたデータの反転データとラッチ回路ＡＤＬのデータとのＯＲ演算を行い、その結果をラッチ回路ＡＤＬに格納する。これにより、ラッチ回路ＡＤＬのデータが更新される。
【０１４９】
なお、上記ベリファイ動作は、データの読み出し動作にも適用できる。
【０１５０】
１．４．４  書き込み動作の具体例について  
本実施形態の書き込み動作につき、より具体的に説明する。図１３及び図１４では、プログラム動作とベリファイ動作との組み合わせが１９回繰り返されることによって、データが書き込まれる場合を例に示している。以下、この繰り返し動作を「ループ」と呼ぶ。
【０１５１】
図１３には、各ループにおいて行われるベリファイ動作のターゲットレベルが示されている。図示するように、１回目及び２回目のループでは、ベリファイは“Ａ”レベルのみを対象にして行われる。つまり、ベリファイ動作時に選択ワード線ＷＬには電圧ＶfyＡが印加され、電圧ＶfyＢ〜ＶfyＧは印加されない。引き続き３回目及び４回目のループでは、ベリファイ動作は“Ａ”レベルと“Ｂ”レベルとを対象にして行われる。つまり、ベリファイ動作時に選択ワード線ＷＬには電圧ＶfyＡ及びＶfyＢが順次印加され、電圧ＶfyＣ〜ＶfyＧは印加されない。
【０１５２】
５回目及び６回目のループでは、ベリファイ動作は“Ａ”レベル、“Ｂ”レベル、及び“Ｃ”レベルを対象にして行われる。つまり、ベリファイ動作時に選択ワード線ＷＬには電圧ＶfyＡ、ＶfyＢ、及びＶfyＣが順次印加され、電圧ＶfyＤ〜ＶfyＧは印加されない。そして、“Ａ”レベルを対象としたベリファイ動作は、６回目のループで完了する。これは、例えば６回のループ回数で“Ａ”レベルへのプログラムはほぼ完了するということが統計的に求められるからである。
【０１５３】
また、７回目及び８回目のループでは、ベリファイ動作は“Ｂ”レベル、“Ｃ”レベル、及び“Ｄ”レベルを対象にして行われる。つまり、ベリファイ動作時に選択ワード線ＷＬには電圧ＶfyＢ、ＶfyＣ、及びＶfyＤが順次印加される。そして、“Ｂ”レベルを対象としたベリファイ動作は、８回目の書き込み動作で完了する。
【０１５４】
更に、９回目及び１０回目のループでは、ベリファイ動作は“Ｃ”レベル、“Ｄ”レベル、及び“Ｅ”レベルを対象にして行われる。つまり、ベリファイ動作時に選択ワード線ＷＬには電圧ＶfyＣ、ＶfyＤ、及びＶfyＥが順次印加される。そして、“Ｃ”レベルを対象としたベリファイ動作は、１０回目のループで完了する。
【０１５５】
以降、同様にして“Ｇ”レベルの書き込みまで行われ、ループは最大で１９回、繰り返される。
【０１５６】
すなわち、“Ａ”レベルについてのベリファイ動作は、１回目から６回目のループで行われる。“Ｂ”レベルについてのベリファイ動作は、３回目から８回目のループで行われる。“Ｃ”レベルについてのベリファイ動作は、５回目から１０回目のループで行われる。“Ｄ”レベルについてのベリファイ動作は、７回目から１２回目のループで行われる。“Ｅ”レベルについてのベリファイ動作は、９回目から１４回目のループで行われる。“Ｆ”レベルについてのベリファイ動作は、１１回目から１６回目のループで行われる。“Ｇ”レベルについてのベリファイ動作は、１４回目から１９回目のループで行われる。
【０１５７】
図１４は、図１３に対応し、各ループにおいて行われるプログラム動作における書き込みのターゲットレベルに応じたビット線ＢＬの状態を示している。図１４において、“１”なる表記は、対応するビット線ＢＬに“１”データが与えられる（“１”プログラム）ことを意味し、“０”なる表記は、“０”データが与えられる（“０”プログラム）ことを意味している。
【０１５８】
図示するように、メモリセルトランジスタＭＴの閾値電圧を“Ｅｒ”レベルに維持しておくべき場合には、全ループにわたってビット線ＢＬに“１”データが与えられる。すなわち、書き込み動作の期間、常に選択トランジスタＳＴ１がカットオフ状態とされる。
【０１５９】
閾値電圧のターゲットレベルが“Ａ”レベルの場合、つまり、閾値電圧を“Ｅｒ”レベル内の値から“Ａ”レベル内の値へ上昇させるべきメモリセルトランジスタＭＴに対しては、１回目から６回目のループにおいて“０”プログラム動作が行われる。これは、“Ａ”レベルに対するベリファイ動作が行われるループに対応している。ベリファイにパスするまではビット線ＢＬには“０”データが与えられ、パスした後は“１”データが与えられる。また、プログラム動作が完了した７回目以降のループにおいても、ビット線ＢＬには“１”データが与えられ、書き込み禁止とされる。
【０１６０】
ターゲットレベルが“Ｂ”レベルの場合、つまり、閾値電圧を“Ｅｒ”レベル内の値から“Ｂ”レベル内の値へ上昇させるべきメモリセルトランジスタＭＴに対しては、１回目から８回目のループにおいて“０”プログラム動作が行われ得る。
【０１６１】
同様にして、“Ｃ”〜“Ｇ”レベルまでのプログラム動作が行われる。
【０１６２】
以上の動作における各配線の電位の様子を図１５に示す。図１５は、１回目〜３回目、７回目、及び１１回目のループにおける、選択ワード線ＷＬの電位、“Ｅｒ”〜“Ｇ”レベルのデータを書き込むビット線ＢＬ（以下、ビット線ＢＬ（“Ｅｒ”）〜ＢＬ（“Ｇ”）と表記する）の電位、及びセンスアンプユニットＳＡＵにおける信号ＳＴＢの電位の時間変化を示している。
【０１６３】
図示するように、１回目のループでは、ビット線ＢＬ（“Ａ”）〜ＢＬ（“Ｇ”）に対して“０”プログラムが行われる。すなわち選択ワード線ＷＬには電圧ＶＰＧＭが印加され、ビット線ＢＬ（“Ｅｒ”）には例えば２．５Ｖが印加され、ビット線ＢＬ（“Ａ”）〜ＢＬ（“Ｇ”）には、例えば電圧ＶＳＳが印加される。そして、“Ａ”レベルについてのベリファイ動作が行われる。すなわち選択ワード線ＷＬには、ベリファイ電圧ＶfyＡが印加される。このときビット線ＢＬ（“Ａ”）及びＢＬ（“Ｆ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。
【０１６４】
２回目のループでは、１回目の“Ａ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ａ”）及びビット線ＢＬ（“Ｂ”）〜ＢＬ（“Ｇ”）に対して“０”プログラムが行われる。このとき選択ワード線ＷＬに印加される電圧ＶＰＧＭはステップアップされる。そして、１回目と同様に“Ａ”レベルについてのベリファイ動作が実行される。
【０１６５】
３回目のループでは、２回目と同様に、“Ａ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ａ”）及びビット線ＢＬ（“Ｂ”）〜ＢＬ（“Ｇ”）に対して“０”プログラムが行われる。このとき選択ワード線ＷＬに印加される電圧ＶＰＧＭはステップアップされる。そして、１及び２回目と同様に、まず“Ａ”レベルについてのベリファイ動作が実行される。次に、“Ｂ”レベルについてのベリファイ動作が実行される。“Ｂ”レベルについてのベリファイ動作では、選択ワード線ＷＬには、ベリファイ電圧ＶfyＢが印加される。このときビット線ＢＬ（“Ｂ”）及びＢＬ（“Ｅ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。
【０１６６】
同様の処理が繰り返され、７回目のループでは、ベリファイにフェイルしたビット線ＢＬ（“Ｂ”）及びＢＬ（“Ｃ”）、並びにビット線ＢＬ（“Ｄ”）〜ＢＬ（“Ｇ”）に対して“０”プログラムが行われる。このとき選択ワード線ＷＬに印加される電圧ＶＰＧＭは、図示せぬ６回目のプログラム動作からステップアップされる。そして、（“Ｂ”）〜（“Ｄ”）レベルについてのベリファイ動作が行われる。“Ｂ”レベルについてのベリファイ動作では、選択ワード線ＷＬには、ベリファイ電圧ＶfyＢが印加される。このときビット線ＢＬ（“Ｂ”）及びＢＬ（“Ｅ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。“Ｃ”レベルについてのベリファイ動作では、選択ワード線ＷＬには、ベリファイ電圧ＶfyＣが印加される。このときビット線ＢＬ（“Ｃ”）及びＢＬ（“Ｄ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。“Ｄ”レベルについてのベリファイ動作では、選択ワード線ＷＬには、ベリファイ電圧ＶfyＤが印加される。このときビット線ＢＬ（“Ｃ”）及びＢＬ（“Ｄ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。
【０１６７】
また、１１回目のループでは、ベリファイにフェイルしたビット線ＢＬ（“Ｄ”）及びＢＬ（“Ｅ”）、並びにビット線ＢＬ（“Ｆ”）及びＢＬ（“Ｇ”）に対して“０”プログラムが行われる。このとき選択ワード線ＷＬに印加される電圧ＶＰＧＭは、図示せぬ１０回目のプログラム動作からステップアップされる。そして、（“Ｄ”）〜（“Ｆ”）レベルについてのベリファイ動作が行われる。“Ｄ”レベルについてのベリファイ動作では、選択ワード線ＷＬには、ベリファイ電圧ＶfyＤが印加される。このときビット線ＢＬ（“Ｃ”）及びＢＬ（“Ｄ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。“Ｅ”レベルについてのベリファイ動作では、選択ワード線ＷＬには、ベリファイ電圧ＶfyＥが印加される。このときビット線ＢＬ（“Ｂ”）及びＢＬ（“Ｅ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。“Ｆ”レベルについてのベリファイ動作では、選択ワード線ＷＬには、ベリファイ電圧ＶfyＦが印加される。このときビット線ＢＬ（“Ａ”）及びＢＬ（“Ｆ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。
【０１６８】
上記より、例えばビット線ＢＬ（“Ａ”）に着目すると、ビット線ＢＬ（“Ａ”）は、“Ａ”レベルについてのベリファイ動作が行われる１回目〜６回目のループ及び、“Ｆ”レベルについてのベリファイ動作が行われる１１〜１６回目のループにおいて、プリチャージ電圧ＶＰＣＨが印加され、７〜１０回目及び１７〜１９回目のループにおいてはプリチャージ電圧ＶＰＣＨが印加されない。
【０１６９】
１．４．５  ラッチ回路が保持するデータの具体例について  
次に、データの書き込み動作においてラッチ回路ＸＤＬ、ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＳＤＬが保持するデータの具体例について、特に１回目のループに着目して、図１６乃至図１８を用いて説明する。図１６乃至図１８はラッチ回路ＸＤＬ、ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＳＤＬが保持するデータを示す図である。
【０１７０】
まず、図１６のテーブル（ａ）に示すように、ラッチ回路ＸＤＬは、外部コントローラからデータ線ＩＯを介してプログラムデータ（３ビットデータ）を転送される。ラッチ回路ＸＤＬは、プログラムデータの中位ビットを、バスＬＢＵＳを介してラッチ回路ＢＤＬに転送し、上位ビットをラッチ回路ＣＤＬに転送し、下位ビットをそのまま保持する。そして、センスアンプユニットＳＡＵは、センスアンプ部ＳＡにおいて、ラッチ回路ＸＤＬ、ＢＤＬ、及びＣＤＬのデータのＡＮＤ演算を行い、その結果をラッチ回路ＡＤＬに格納する（ＡＤＬ＝ＸＤＬ×ＢＤＬ×ＣＤＬ）。なお、ラッチ回路ＡＤＬのデータは、外部コントローラから与えられても良い。
【０１７１】
次にテーブル（ｂ）に示すように、センスアンプユニットＳＡＵは、ラッチ回路ＡＤＬの反転データをラッチ回路ＳＤＬに格納する（ＳＤＬ＝／ＡＤＬ）。
【０１７２】
この結果、“Ｅｒ”レベルのデータに対応するラッチ回路ＳＤＬには“０”データが格納される。また、“Ａ”〜“Ｇ”レベルのデータに対応するラッチ回路ＳＤＬには“１”データが格納される。
【０１７３】
そして、ラッチ回路ＳＤＬのデータに応じて１回目のプログラムが実行される。すなわち“Ｅｒ”レベルのデータに対応するセンスアンプユニットＳＡＵでは、“１”プログラムが実行され、“Ａ”〜“Ｇ”レベルのデータに対応するセンスアンプユニットＳＡＵでは、“０”プログラムが実行される。
【０１７４】
次に、図１７のテーブル（ｃ）に示すように、“Ａ”レベルについてのベリファイ動作を実行するための準備が行われる。より具体的には、“Ａ”レベルについてのベリファイ動作の場合、制御回路５は、ラッチ回路ＢＤＬのデータと、ラッチ回路ＣＤＬの反転データのＡＮＤ演算を、センスアンプ部ＳＡを用いて行い、その結果の反転データをラッチ回路ＳＤＬに格納する（ＳＤＬ＝／（ＢＤＬ×（／ＣＤＬ））。
【０１７５】
この結果、“Ａ”レベル及び“Ｆ”レベルのデータに対応するラッチ回路ＳＤＬには“０”データが格納され、他のレベルのデータに対応するラッチ回路ＳＤＬには“１”データが格納される。
【０１７６】
そして、ラッチ回路ＳＤＬのデータを基に“Ａ”レベルについてのベリファイ動作が行われる。すなわち“Ａ”レベルと“Ｆ”レベルのデータに対応するセンスアンプユニットＳＡＵに接続されたビット線ＢＬ（“pre-charge”）には、プリチャージ電圧ＶＰＣＨが印加され、他のレベルのデータに対応するセンスアンプユニットＳＡＵに接続されたビット線ＢＬ（“lockout”）には、プリチャージ電圧ＶＰＣＨが印加されない。
【０１７７】
次に、テーブル（ｄ）に示すように、“Ａ”レベルについてのベリファイ動作の結果が、ラッチ回路ＳＤＬに格納される（ＳＤＬ＝ＬＢＵＳ＝／ＳＥＮ）。
【０１７８】
この結果、“Ａ”レベルのデータに対応するラッチ回路ＳＤＬには、ベリファイ動作をパスした場合には“０”データが格納され、ベリファイ動作をフェイルした場合には、“１”データが格納される。そして、他のレベルのデータに対応するラッチ回路ＳＤＬには“１”データが格納される。
【０１７９】
次に、図１８のテーブル（ｅ）に示すように、センスアンプユニットＳＡＵは、センスアンプ部ＳＡにおいて、ラッチ回路ＡＤＬのデータとＳＤＬの反転データとのＯＲ演算を行い、その結果をラッチ回路ＡＤＬに格納する（ＡＤＬ＝ＡＤＬ＋（／ＳＤＬ）；“＋”はＯＲ演算を意味する）。
【０１８０】
この結果、“Ａ”レベルのデータに対応するラッチ回路ＡＤＬには、“Ａ”レベルについてのベリファイ動作をパスした場合には、“１”データが格納され、ベリファイ動作をフェイルした場合には、“０”データが格納される。
【０１８１】
次に、テーブル（ｆ）に示すように、２回目のプログラム動作を実行するための準備が行われる。センスアンプユニットＳＡＵは、ラッチ回路ＡＤＬの反転データをラッチ回路ＳＤＬに格納する。
【０１８２】
この結果、“Ｅｒ”レベルのデータに対応するラッチ回路ＳＤＬには“０”データが格納される。“Ａ”レベルのデータに対応するラッチ回路ＳＤＬには、“Ａ”レベルについてのベリファイ動作をパスした場合には、“０”データが格納され、“Ａ”レベルについてのベリファイ動作をフェイルした場合には、“１”データが格納される。他のレベルのデータに対応するラッチ回路ＳＤＬには、“１”データが格納される。
【０１８３】
そして、ラッチ回路ＳＤＬのデータに応じて２回目のプログラムが実行される。すなわち“Ｅｒ”レベルのデータに対応するセンスアンプユニットＳＡＵでは、“１”プログラムが実行される。“Ａ”レベルのデータに対応するセンスアンプユニットＳＡＵでは、“Ａ”レベルについてのベリファイ動作をパスした場合に“１”プログラムが実行され、“Ａ”レベルについてのベリファイ動作をフェイルした場合に、“０”プログラムが実行される。“Ｂ”〜“Ｇ”レベルのデータに対応するセンスアンプユニットＳＡＵでは、“０”プログラムが実行される。
【０１８４】
次に、１回目のループと同様にして、“Ａ”レベルについてのベリファイ動作が行われる。
【０１８５】
以下、同様にして、３回目のループ以降の書き込み動作が行われる。例えば、３回目のループにおいては、“Ａ”レベルと“Ｂ”レベルについてのベリファイ動作が行われる。この場合には、まず“Ａ”レベルについてベリファイ動作を行い、その結果を用いてラッチ回路ＡＤＬのデータを更新する。次に“Ｂ”レベルについてのベリファイ動作を行い、その結果を用いて更にラッチ回路ＡＤＬのデータの更新を行う。すなわち、ベリファイ動作毎に、ラッチ回路ＡＤＬのデータを更新すれば良い。
【０１８６】
１．５  本実施形態に係る効果について
本実施形態に係る構成であると、処理能力を向上できる。本効果につき、以下説明する。
【０１８７】
例えば４値（２ビット）以上のデータを保持可能なメモリセルトランジスタＭＴにおいては、ベリファイ動作時に、ベリファイ動作の対象となる書き込みレベルに対応したメモリセルトランジスタＭＴに接続されたビット線ＢＬにのみプリチャージ電圧を印加して、ベリファイ動作を行う方法（選択プリチャージ）がある。この場合、センスアンプユニットＳＡＵでは、書き込みデータに基づいて、ビット線ＢＬへのプリチャージ電圧の有無が制御される。
【０１８８】
また、センスアンプユニットＳＡＵにおいては、内蔵するラッチ回路の個数を低減するため、書き込みデータの一部（例えば１ビット分のデータ）を、センスアンプユニットＳＡＵと外部コントローラとのデータの送受信に用いられるラッチ回路ＸＤＬに保持させる場合がある。但し、複数のセンスアンプユニットＳＡＵと複数のラッチ回路ＸＤＬとが１つのバスＤＢＵＳを介して共通に接続されている場合、センスアンプユニットＳＡＵとラッチ回路ＸＤＬとの間の信号の送受信はシリアルに行われる。このため、センスアンプユニットＳＡＵとラッチ回路ＸＤＬとの間のデータの送受信は、センスアンプユニットＳＡＵ内におけるセンスアンプ部ＳＡとラッチ回路との信号の送受信よりも遅くなる場合が多い。
【０１８９】
よって、ベリファイ動作を選択プリチャージで行う場合、ラッチ回路ＸＤＬが書き込みデータの一部を保持していると、センスアンプユニットＳＡＵは、プリチャージ電圧の印加の有無を決定するために、ベリファイ動作毎にラッチ回路ＸＤＬにアクセスする必要がある。より具体的には、センスアンプユニットＳＡＵは、センスアンプユニットＳＡＵ内部のラッチ回路のデータとラッチ回路ＸＤＬのデータとの演算を行う。そして、その結果に応じてプリチャージ電圧の印加の有無が制御される。このため、プリチャージ電圧の印加を開始するまでの処理時間が長くなり、ベリファイ動作の処理速度が遅くなる。
【０１９０】
これに対し、本実施形態に係る構成では、４値（２ビット）以上のデータを保持可能なメモリセルトランジスタＭＴへのデータの書き込み動作において、ラッチ回路ＸＤＬが書き込みデータの一部を保持する。そして、選択プリチャージによるベリファイ動作を行う場合、センスアンプユニットＳＡＵは、センスアンプユニットＳＡＵ内部のラッチ回路に保持されているデータに応じてプリチャージ電圧の印加の有無を決定する。よって、ラッチ回路ＸＤＬへのアクセスを省略できるため、ベリファイ動作の処理速度を向上させることができる。よって、半導体記憶装置の処理能力を向上できる。
【０１９１】
更に、本実施形態に係る構成では、センスアンプユニットＳＡＵ内部のラッチ回路が保持する書き込みデータの一部を用いて演算を行う。例えば３ビット（８値）のデータ書き込みにおいて、センスアンプユニットＳＡＵ内部のラッチ回路が２ビット分のデータを保持している場合、センスアンプユニットＳＡＵは２ビットのデータ演算を行う。従って、書き込むデータのビット数に対して、演算処理をおこなうビット数を低減できるため、処理速度を向上させることができる。よって、半導体記憶装置の処理能力を向上できる。
【０１９２】
更に、本実施形態に係る構成では、書き込むデータのビット数よりも、センスアンプユニットＳＡＵに含まれる書き込みデータ保持用のラッチ回路の個数を少なくすることができる。よって、回路を簡素化し、チップ面積の増加を抑制することができる。
【０１９３】
２．第２実施形態
次に、第２実施形態について説明する。第１実施形態と異なる点は、ベリファイ動作において、ラッチ回路ＡＤＬ、ＢＤＬ、及びＣＤＬの保持データの演算結果からプリチャージ電圧を印加するビット線ＢＬを決定する点である。以下、第１実施形態と異なる点についてのみ説明する。
【０１９４】
２．１  ベリファイ動作におけるラッチ回路ＳＤＬの保持データについて
まず、ベリファイ動作時にラッチ回路ＳＤＬが保持しているデータについて、図１９を用いて説明する。
【０１９５】
図示するように、ラッチ回路ＳＤＬには、ラッチ回路ＡＤＬ、ＢＤＬ、及びＣＤＬの保持データの演算結果が格納される。すなわち、ラッチ回路ＢＬＤに格納されている中位ビットのデータ、ラッチ回路ＣＤＬに格納されている上位ビットのデータ、及びラッチ回路ＡＤＬに格納されているプログラムデータの反転データに応じた結果がラッチ回路ＳＤＬに格納される。
【０１９６】
より具体的には、“Ａ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、論理演算式；ＳＤＬ＝／（（／ＡＤＬ）×ＢＤＬ×（／ＣＤＬ））となるデータが格納される。最初の“Ａ”レベルについてのベリファイ動作では、“Ａ”レベルに対応する全てのラッチ回路ＡＤＬに“０”データが格納されている。従って“Ａ”レベルに対応する全てのラッチ回路ＳＤＬに“０”データが格納される。そして２回目以降の“Ａ”レベルについてのベリファイ動作では、前回のベリファイ動作をフェイルしたセンスアンプユニットＳＡＵのラッチ回路ＡＤＬに“０”データが格納され、ベリファイ動作をパスしたセンスアンプユニットＳＡＵのラッチ回路ＡＤＬに“１”データが格納されている。従って、前回のベリファイ動作をフェイルしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“０”データが格納され、ベリファイ動作をパスしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“１”データが格納される。また、“Ａ”レベルについてのベリファイ動作では、“Ｅｒ”、“Ｂ”〜“Ｅ”、及び“Ｇ”レベルに対応するラッチ回路ＳＤＬに“１”データが格納され、“Ｆ”レベルに対応するラッチ回路ＳＤＬに“０”データが格納される。
【０１９７】
“Ｂ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、論理演算式；ＳＤＬ＝／（（／ＡＤＬ）×（／ＢＤＬ）×ＣＤＬ）となるデータが格納される。従って、最初の“Ｂ”レベルについてのベリファイ動作では、“Ｂ”レベルに対応する全てのラッチ回路ＳＤＬに“０”データが格納される。そして２回目以降の“Ｂ”レベルについてのベリファイ動作では、前回のベリファイ動作をフェイルしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“０”データが格納され、ベリファイ動作をパスしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“１”データが格納される。また、“Ｂ”レベルについてのベリファイ動作では、“Ｅｒ”、“Ａ”、“Ｃ”、“Ｄ”、“Ｆ”及び“Ｇ”レベルに対応するラッチ回路ＳＤＬには“１”データが格納され、“Ｅ”レベルに対応するラッチ回路ＳＤＬには“０”データが格納される。
【０１９８】
“Ｃ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、論理演算式；ＳＤＬ＝／（（／ＡＤＬ）×（／ＢＤＬ）×（／ＣＤＬ））となるデータが格納される。従って、最初の“Ｃ”レベルについてのベリファイ動作では、“Ｃ”レベルに対応する全てのラッチ回路ＳＤＬに“０”データが格納される。そして２回目以降の“Ｃ”レベルについてのベリファイ動作では、前回のベリファイ動作をフェイルしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“０”データが格納され、ベリファイ動作をパスしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“１”データが格納される。また、“Ｃ”レベルについてのベリファイ動作では、“Ｅｒ”〜“Ｂ”、及び“Ｅ”〜“Ｇ”レベルに対応するラッチ回路ＳＤＬには“１”データが格納され、“Ｄ”レベルに対応するラッチ回路ＳＤＬには“０”データが格納される。
【０１９９】
“Ｄ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、“Ｃ”レベルと同じ論理演算式；ＳＤＬ＝／（（／ＡＤＬ）×（／ＢＤＬ）×（／ＣＤＬ））となるデータが格納される。従って、最初の“Ｄ”レベルについてのベリファイ動作では、“Ｄ”レベルに対応する全てのラッチ回路ＳＤＬに“０”データが格納される。そして２回目以降の“Ｄ”レベルについてのベリファイ動作では、前回のベリファイ動作をフェイルしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“０”データが格納され、ベリファイ動作をパスしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“１”データが格納される。また、“Ｄ”レベルについてのベリファイ動作では、“Ｅｒ”〜“Ｃ”、及び“Ｅ”〜“Ｇ”レベルに対応するラッチ回路ＳＤＬには“１”データが格納される。より具体的には、“Ｃ”レベル及び“Ｄ”レベルは、ラッチ回路ＢＤＬ及びＣＤＬに同じ値のデータが格納されているが、“Ｄ”レベルについてのベリファイ動作では、“Ｃ”レベルに対応するラッチ回路ＡＤＬに“１”データが格納されている。このため、“Ｃ”レベルに対応するラッチ回路ＳＤＬには、“１”データが格納される。
【０２００】
“Ｅ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、“Ｂ”レベルと同じ論理演算式；ＳＤＬ＝／（（／ＡＤＬ）×（／ＢＤＬ）×ＣＤＬ）となるデータが格納される。従って、最初の“Ｅ”レベルについてのベリファイ動作では、“Ｅ”レベルに対応する全てのラッチ回路ＳＤＬに“０”データが格納される。そして２回目以降の“Ｅ”レベルについてのベリファイ動作では、前回のベリファイ動作をフェイルしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“０”データが格納され、ベリファイ動作をパスしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“１”データが格納される。また、“Ｅ”レベルについてのベリファイ動作では、“Ｅｒ”〜“Ｄ”、“Ｆ”及び“Ｇ”レベルに対応するラッチ回路ＳＤＬには“１”データが格納される。
【０２０１】
“Ｆ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、“Ａ”レベルと同じ論理演算式；ＳＤＬ＝／（（／ＡＤＬ）×ＢＤＬ×（／ＣＤＬ））となるデータが格納される。従って、最初の“Ｆ”レベルについてのベリファイ動作では、“Ｆ”レベルに対応する全てのラッチ回路ＳＤＬに“０”データが格納される。そして２回目以降の“Ｆ”レベルについてのベリファイ動作では、前回のベリファイ動作をフェイルしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“０”データが格納され、ベリファイ動作をパスしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“１”データが格納される。また、“Ｆ”レベルについてのベリファイ動作では、“Ｅｒ”〜“Ｅ”、及び“Ｇ”レベルに対応するラッチ回路ＳＤＬに“１”データが格納される。
【０２０２】
“Ｇ”レベルについてのベリファイ動作においては、ラッチ回路ＳＤＬに、論理演算式；ＳＤＬ＝／（（／ＡＤＬ）×ＢＤＬ×ＣＤＬ）となるデータが格納される。従って、最初の“Ｇ”レベルについてのベリファイ動作では、“Ｇ”レベルに対応する全てのラッチ回路ＳＤＬに“０”データが格納される。そして２回目以降の“Ｇ”レベルについてのベリファイ動作では、前回のベリファイ動作をフェイルしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“０”データが格納され、ベリファイ動作をパスしたセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに“１”データが格納される。また、“Ｇ”レベルについてのベリファイ動作では、“Ｅｒ”〜“Ｆ”レベルに対応するラッチ回路ＳＤＬに“１”データが格納される。
【０２０３】
２．２  書き込み動作の具体例について  
本実施形態の書き込み動作につき、より具体的に説明する。本実施形態におけるプログラム動作とベリファイ動作との組み合わせは、第１実施形態の図１３及び図１４と同じである。
【０２０４】
図２０は、本実施形態における各配線の電位の様子を示す。図２０は、１回目〜３回目、７回目、及び１１回目のループにおける、選択ワード線ＷＬの電位、ビット線ＢＬ（“Ｅｒ”）〜ＢＬ（“Ｇ”）の電位、及びセンスアンプユニットＳＡＵにおける信号ＳＴＢの電位の時間変化を示している。
【０２０５】
図示するように、１回目のループにおけるプログラム動作及びベリファイ動作は、第１実施形態の図１５と同じである。
【０２０６】
２回目のループでは、１回目の“Ａ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ａ”）及びビット線ＢＬ（“Ｂ”）〜ＢＬ（“Ｇ”）に対して“０”プログラム動作が行われる。次に、“Ａ”レベルについてのベリファイ動作が実行される。このとき、１回目のループの“Ａ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ａ”）、及びビット線ＢＬ（“Ｆ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。
【０２０７】
３回目のループでは、２回目のループと同様に、“Ａ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ａ”）及びビット線ＢＬ（“Ｂ”）〜ＢＬ（“Ｇ”）に対して“０”プログラムが行われる。次に、２回目のループと同様に、まず“Ａ”レベルについてのベリファイ動作が実行される。このとき、２回目のループの“Ａ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ａ”）、及びビット線ＢＬ（“Ｆ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。次に、“Ｂ”レベルについてのベリファイ動作が実行される。このときビット線ＢＬ（“Ｂ”）及びＢＬ（“Ｅ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。
【０２０８】
同様の処理が繰り返され、７回目のループでは、ベリファイにフェイルしたビット線ＢＬ（“Ｂ”）及びＢＬ（“Ｃ”）、並びにビット線ＢＬ（“Ｄ”）〜ＢＬ（“Ｇ”）に対して“０”プログラムが行われる。次に、（“Ｂ”）〜（“Ｄ”）レベルについてのベリファイ動作が順次行われる。“Ｂ”レベルについてのベリファイ動作では、６回目のループの“Ｂ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ｂ”）、及びビット線ＢＬ（“Ｅ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。“Ｃ”レベルについてのベリファイ動作では、６回目のループの“Ｃ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ｃ”）及びＢＬ（“Ｄ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。“Ｄ”レベルについてのベリファイ動作では、ビット線ＢＬ（“Ｄ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。
【０２０９】
また、１１回目のループでは、ベリファイにフェイルしたビット線ＢＬ（“Ｄ”）及びＢＬ（“Ｅ”）、並びにビット線ＢＬ（“Ｆ”）及びＢＬ（“Ｇ”）に対して“０”プログラムが行われる。次に、（“Ｄ”）〜（“Ｆ”）レベルについてのベリファイ動作が行われる。“Ｄ”レベルについてのベリファイ動作では、１０回目のループの“Ｄ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ｄ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。“Ｅ”レベルについてのベリファイ動作では、１０回目のループの“Ｅ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ｅ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。“Ｆ”レベルについてのベリファイ動作では、ビット線ＢＬ（“Ｆ”）にプリチャージ電圧ＶＰＣＨ（例えば０．５Ｖ）が印加される。
【０２１０】
上記より、例えばビット線ＢＬ（“Ａ”）及びＢＬ（“Ｆ”）に着目すると、ビット線ＢＬ（“Ａ”）は、“Ａ”レベルについてのベリファイ動作が行われる１回目〜６回目のループにおいて、プリチャージ電圧ＶＰＣＨが印加される。但し、２回目〜６回目のループにおいては、前回の“Ａ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ａ”）にプリチャージ電圧ＶＰＣＨが印加される。
【０２１１】
ビット線（“Ｆ”）は、“Ａ”レベルについてのベリファイ動作が行われる１回目〜６回目のループ及び、“Ｆ”レベルについてのベリファイ動作が行われる１１〜１６回目のループにおいて、プリチャージ電圧ＶＰＣＨが印加される。但し、１２回目〜１６回目のループにおいては、前回の“Ｆ”レベルについてのベリファイ動作をフェイルしたビット線ＢＬ（“Ｆ”）にプリチャージ電圧ＶＰＣＨが印加される。
【０２１２】
２．３  本実施形態に係る効果について  本実施形態に係る構成では、第１実施形態と同様の効果を得ることができる。
【０２１３】
更に本実施形態に係る構成では、ベリファイ動作をパスしたビット線ＢＬについては、次回以降のベリファイ動作において、ビット線ＢＬにプリチャージ電圧が印加されない。従って、半導体記憶装置の消費電力を低減することができる。
【０２１４】
３．変形例等  
上記実施形態に係る半導体記憶装置は、少なくとも４つの閾値電圧のいずれかに設定可能な第１メモリセル(MT@図2)と、第１メモリセルに接続された第１ビット線(BL(“A”)@図15)と、第１メモリセルのゲートに接続されたワード線(選択WL@図15)と、第１ビット線に接続された第１センスアンプ(SAU@図5)とを含む。第１メモリセルにデータを書き込むプログラム動作の後に、第１メモリセルの閾値電圧を確認するベリファイ動作が行われる。ワード線に第１電圧(VfyA@図15)が印加される第１ベリファイ動作(ループ1回目@図15)において、第１センスアンプは、第１ビット線に充電電圧(VPCH@図15)を印加する。ワード線に第１電圧よりも高い第２電圧(VfyB@図15)が印加される第２ベリファイ動作(ループ3回目の”B”ベリファイ@図15)において、第１センスアンプは、第１ビット線に充電電圧を印加しない。ワード線に第２電圧よりも高い第３電圧(VfyF@図15)が印加される第３ベリファイ動作(ループ11回目の”F”ベリファイ@図15)において、第１センスアンプは、第１ビット線に充電電圧を印加する。
【０２１５】
上記実施形態を適用することにより、処理能力を向上できる半導体記憶装置を提供できる。なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。
【０２１６】
例えば、上記実施形態において、電圧センス方式のセンスアンプを用いても良い。
【０２１７】
更に、上記実施形態において、センスアンプ部ＳＡを用いたＡＮＤ演算及びＯＲ演算を記載したが、演算時のトランジスタの制御については、上記に限定されない。例えば、図７のステップ１及びステップ３におけるラッチ回路ＢＤＬ及びＣＤＬからバスＬＢＵＳへのデータの取り込みを同時に行っても良い。
【０２１８】
更に、上記実施形態と異なる三次元積層型ＮＡＮＤ型フラッシュメモリ、あるいは平面型ＮＡＮＤ型フラッシュメモリにも適用できる。更には、ＮＡＮＤ型フラッシュメモリに限定されず、４値（２ビット）以上のデータを保持可能な記憶素子を用いた半導体記憶装置においても適用できる。
【０２１９】
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【０２２０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことが出来る。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【０２２１】
なお、本発明に関する各実施形態において、以下の通りであっても良い。例えばメモリセルトランジスタＭＴが２ビット（４値）のデータを保持可能であり、４値のいずれかを保持している際の閾値レベルを低い方からＥレベル（消去レベル）、Ａレベル、Ｂレベル、及びＣレベルとしたとき、
（１）読み出し動作では、Ａレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば0V〜0.55Vの間である。これに限定されることなく、0.1V〜0.24V、0.21V〜0.31V、0.31V〜0.4V、0.4V〜0.5V、及び0.5V〜0.55Vのいずれかの間にしても良い。
【０２２２】
Ｂレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば1.5V〜2.3Vの間である。これに限定されることなく、1.65V〜1.8V、1.8V〜1.95V、1.95V〜2.1V、及び2.1V〜2.3Vのいずれかの間にしても良い。
【０２２３】
Ｃレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば3.0V〜4.0Vの間である。これに限定されることなく、3.0V〜3.2V、3.2V〜3.4V、3.4V〜3.5V、3.5V〜3.6V、及び3.6V〜4.0Vのいずれかの間にしても良い。
【０２２４】
読み出し動作の時間（tR）としては、例えば25μs〜38μs、38μs〜70μs、または70μs〜80μsの間にしても良い。
【０２２５】
（２）書き込み動作は、上述した通りプログラム動作とベリファイ動作を含む。書き込み動作では、プログラム動作時に選択されたワード線に最初に印加される電圧は、例えば13.7V〜14.3Vの間である。これに限定されることなく、例えば13.7V〜14.0V及び14.0V〜14.6Vのいずれかの間としても良い。
【０２２６】
奇数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧と、偶数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧を変えても良い。
【０２２７】
プログラム動作をISPP方式(Incremental Step Pulse Program)としたとき、ステップアップの電圧として、例えば0.5V程度が挙げられる。
【０２２８】
非選択のワード線に印加される電圧としては、例えば6.0V〜7.3Vの間としてもよい。この場合に限定されることなく、例えば7.3V〜8.4Vの間としてもよく、6.0V以下としても良い。
【０２２９】
非選択のワード線が奇数番目のワード線であるか、偶数番目のワード線であるかで、印加するパス電圧を変えても良い。
【０２３０】
書き込み動作の時間（tProg）としては、例えば1700μs〜1800μs、1800μs〜1900μs、または1900μs〜2000μsの間にしても良い。
【０２３１】
（３）消去動作では、半導体基板上部に形成され、且つ、上記メモリセルが上方に配置されたウェルに最初に印加する電圧は、例えば12V〜13.6Vの間である。この場合に限定されることなく、例えば13.6V〜14.8V、14.8V〜19.0V、19.0〜19.8V、または19.8V〜21Vの間であっても良い。
【０２３２】
消去動作の時間（tErase）としては、例えば3000μs〜4000μs、4000μs〜5000μs、または4000μs〜9000μsの間にしても良い。
【０２３３】
（４）メモリセルの構造は、半導体基板（シリコン基板）上に膜厚が4〜10nmのトンネル絶縁膜を介して配置された電荷蓄積層を有している。この電荷蓄積層は膜厚が2〜3nmのＳｉＮ、またはＳｉＯＮなどの絶縁膜と膜厚が3〜8nmのポリシリコンとの積層構造にすることができる。また、ポリシリコンにはＲｕなどの金属が添加されていても良い。電荷蓄積層の上には絶縁膜を有している。この絶縁膜は、例えば、膜厚が3〜10nmの下層Ｈｉｇｈ−ｋ膜と膜厚が3〜10nmの上層Ｈｉｇｈ−ｋ膜に挟まれた膜厚が4〜10nmのシリコン酸化膜を有している。Ｈｉｇｈ−ｋ膜はＨｆＯなどが挙げられる。また、シリコン酸化膜の膜厚はＨｉｇｈ−ｋ膜の膜厚よりも厚くすることができる。絶縁膜上には膜厚が3〜10nmの仕事関数調整用の材料を介して膜厚が30nm〜70nmの制御電極が形成されている。ここで仕事関数調整用の材料はＴａＯなどの金属酸化膜、ＴａＮなどの金属窒化膜である。制御電極にはＷなどを用いることができる。
【０２３４】
また、メモリセル間にはエアギャップを形成することができる。
【符号の説明】
【０２３５】
１…ＮＡＮＤ型フラッシュメモリ、２…メモリセルアレイ、３…ロウデコーダ、４…センスアンプ、５…制御回路、１０…半導体基板、１１〜１４…導電層、１５〜１７…絶縁膜、１８、２１、２４…金属配線層、１９、２２…不純物拡散層、２０、２３…コンタクトプラグ、３０…プリチャージ回路、３１、３３、４０〜５１、６０〜６７、７０〜７７、８０〜８７、９０〜９７…トランジスタ、３２…バススイッチ、５２…キャパシタ素子。
【図１】
0006490018.tif 000002
【図２】
0006490018.tif 000003
【図３】
0006490018.tif 000004
【図４】
0006490018.tif 000005
【図５】
0006490018.tif 000006
【図６】
0006490018.tif 000007
【図７】
0006490018.tif 000008
【図８】
0006490018.tif 000009
【図９】
0006490018.tif 000010
【図１０】
0006490018.tif 000011
【図１１】
0006490018.tif 000012
【図１２】
0006490018.tif 000013
【図１３】
0006490018.tif 000014
【図１４】
0006490018.tif 000015
【図１５】
0006490018.tif 000016
【図１６】
0006490018.tif 000017
【図１７】
0006490018.tif 000018
【図１８】
0006490018.tif 000019
【図１９】
0006490018.tif 000020
【図２０】
0006490018.tif 000021