(57)【要約】【課題】処理能力を向上できる。【解決手段】実施形態に係る半導体記憶装置は、メモリセルＭＴと、メモリセルＭＴに接続されたビット線ＢＬと、ビット線ＢＬに接続され、第１ラッチ回路ＳＤＬを含むセンスアンプＳＡＵとを備える。書き込み動作は、プログラムとベリファイとを繰り返すプログラムループを含む。プログラムは、第１ラッチ回路ＳＤＬのデータに基づいてビット線ＢＬの充放電を行う第１動作を含む。ベリファイは、ベリファイ結果に基づいて第１ラッチ回路ＳＤＬのデータを更新する第２動作を含む。第１動作と第２動作とが並列に実行される。【選択図】図６
2018041522.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルと、
前記メモリセルに接続されたビット線と、
前記ビット線に接続され、第１ラッチ回路を含むセンスアンプと
を備え、
書き込み動作は、プログラムとベリファイとを繰り返すプログラムループを含み、
前記プログラムは、前記第１ラッチ回路のデータに基づいて前記ビット線の充放電を行う第１動作を含み、
前記ベリファイは、ベリファイ結果に基づいて前記第１ラッチ回路のデータを更新する第２動作を含み、
前記第１動作と前記第２動作とが並列に実行される
半導体記憶装置。
【請求項２】
前記プログラムは、第１プログラムと第２プログラムとを含み、
前記ベリファイは、前記第１プログラム後に実行される第１ベリファイを含み、
前記第１ベリファイにおける前記ビット線の放電及び前記第２プログラムにおける前記第１動作と、前記第１ベリファイにおける前記第２動作とが並列に実行される
請求項１記載の半導体記憶装置。
【請求項３】
前記第１動作を開始する際に前記第２動作が完了していない場合、前記ビット線に接地電圧よりも高い第１電圧が印加される
請求項１記載の半導体記憶装置。
【請求項４】
前記第１動作を開始する際に前記第２動作が完了していない場合、前記ビット線に接地電圧が印加される
請求項１記載の半導体記憶装置。
【請求項５】
前記ベリファイ終了の際に前記ビット線の放電が行われずに前記第１動作が実行される
請求項１記載の半導体記憶装置。
【請求項６】
前記第２動作が実行された場合、前記センスアンプは、前記第２動作により前記第１ラッチ回路に転送されたデータに基づいて前記第１動作をおこなう
請求項１乃至５のいずれか一項記載の半導体記憶装置。
【請求項７】
前記センスアンプは、
第２ラッチ回路と、
前記第１ラッチ回路と前記第２ラッチ回路とを接続する第１配線と
を更に備え、
前記第１ラッチ回路は、前記第１配線に接続されたスイッチ素子を含み、
前記第２動作は、前記第１配線を介して前記第２ラッチ回路から前記第１ラッチ回路にデータを転送する動作を含み、
前記第１動作を実行している間に、前記スイッチ素子がオン状態とされる
請求項１乃至６のいずれか一項記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
半導体記憶装置として、ＮＡＮＤ型フラッシュメモリが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７-２６６１４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
処理能力を向上できる半導体記憶装置を提供する。
【課題を解決するための手段】
【０００５】
実施形態に係る半導体記憶装置は、メモリセルと、メモリセルに接続されたビット線と、ビット線に接続され、第１ラッチ回路を含むセンスアンプとを備える。書き込み動作は、プログラムとベリファイとを繰り返すプログラムループを含む。プログラムは、第１ラッチ回路のデータに基づいてビット線の充放電を行う第１動作を含む。ベリファイは、ベリファイ結果に基づいて第１ラッチ回路のデータを更新する第２動作を含む。第１動作と第２動作とが並列に実行される。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係る半導体記憶装置のブロック図である。
【図２】図２は、第１実施形態に係る半導体記憶装置の備えるセンスアンプとデータラッチのブロック図である。
【図３】図３は、第１実施形態に係る半導体記憶装置の備えるセンスアンプユニットの回路図である。
【図４】図４は、第１実施形態に係る半導体記憶装置の書き込み動作を示すフローチャートである。
【図５】図５は、第１実施形態に係る半導体記憶装置の書き込み動作を示すフローチャートである。
【図６】図６は、第１実施形態に係る半導体記憶装置の書き込み動作における各配線の電位を示すタイミングチャートである。
【図７】図７は、図６における信号ＳＴＬとノードＬＡＴ＿Ｓの電位をラッチ回路ＳＤＬ＜ｘ＞毎に示した図である。
【図８】図８は、第１実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データの一例を示す図である。
【図９】図９は、第１実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データの一例を示す図である。
【図１０】図１０は、第１実施形態に係る半導体記憶装置の書き込み動作におけるビット線の電位の一例を示すタイミングチャートである。
【図１１】図１１は、第２実施形態に係る半導体記憶装置の書き込み動作を示すフローチャートである。
【図１２】図１２は、第２実施形態に係る半導体記憶装置の書き込み動作を示すフローチャートである。
【図１３】図１３は、第２実施形態に係る半導体記憶装置の書き込み動作における各配線の電位を示すタイミングチャートである。
【図１４】図１４は、第２実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データの一例を示す図である。
【図１５】図１５は、第２実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データの一例を示す図である。
【図１６】図１６は、第２実施形態に係る半導体記憶装置の書き込み動作におけるビット線の電位の一例を示すタイミングチャートである。
【図１７】図１７は、第３実施形態に係る半導体記憶装置の書き込み動作における各配線の電位を示すタイミングチャートである。
【図１８】図１８は、第４実施形態に係る半導体記憶装置の備えるセンスアンプユニットの回路図である。
【図１９】図１９は、第４実施形態に係る半導体記憶装置の書き込み動作を示すフローチャートである。
【図２０】図２０は、第４実施形態に係る半導体記憶装置の書き込み動作を示すフローチャートである。
【図２１】図２１は、第４実施形態に係る半導体記憶装置の書き込み動作における各配線の電位を示すタイミングチャートである。
【図２２】図２２は、第４実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データの一例を示す図である。
【図２３】図２３は、第４実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データの一例を示す図である。
【図２４】図２４は、第４実施形態に係る半導体記憶装置の書き込み動作におけるラッチ回路の保持データの一例を示す図である。
【図２５】図２５は、第４実施形態に係る半導体記憶装置の書き込み動作におけるビット線の電位の一例を示すタイミングチャートである。
【発明を実施するための形態】
【０００７】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００８】
１．第１実施形態
第１実施形態に係る不揮発性半導体記憶装置について説明する。以下では半導体記憶装置として、メモリセルトランジスタが半導体基板上に二次元に配置された平面型ＮＡＮＤ型フラッシュメモリを例に挙げて説明する。
【０００９】
１．１  構成について
１．１．１  半導体記憶装置の全体構成について
まず、半導体記憶装置の全体構成について、図１を用いて説明する。図示するようにＮＡＮＤ型フラッシュメモリ１は、大まかにはコア部１０及び周辺回路２０を含む。
【００１０】
コア部１０は、メモリセルアレイ１１、ロウデコーダ１２、センスアンプ１３、データラッチ１４、及びソース線ドライバ１５を含む。
【００１１】
メモリセルアレイ１１は、複数の不揮発性メモリセルトランジスタの集合である複数のブロックＢＬＫ（ＢＬＫ０、ＢＬＫ１、…）を備えている。同一ブロックＢＬＫ内のデータは例えば一括して消去される。
【００１２】
ブロックＢＬＫの各々は、複数のＮＡＮＤストリング１６を含み、ＮＡＮＤストリング１６の各々は、直列接続された複数のメモリセルトランジスタＭＴを含む。メモリセルトランジスタＭＴは、半導体基板上に二次元に配列されている。なお、１つのブロックＢＬＫに含まれるＮＡＮＤストリング１６の数は任意である。
【００１３】
ＮＡＮＤストリング１６の各々は、例えば８個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ７）と、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。メモリセルトランジスタＭＴは、制御ゲートと電荷蓄積層とを含む積層ゲートを備え、データを不揮発に保持する。なお、メモリセルトランジスタＭＴは、電荷蓄積層に絶縁膜を用いたＭＯＮＯＳ型であっても良いし、電荷蓄積層に導電膜を用いたＦＧ型であっても良い。更に、メモリセルトランジスタＭＴの個数は８個に限られず、１６個や３２個、６４個、１２８個等であってもよく、その数は限定されるものではない。
【００１４】
本実施形態では、メモリセルトランジスタＭＴは、１ビットのデータ、すなわち“１”データおよび“０”データのいずれかを保持可能である。また本実施形態では、電荷蓄積層に電荷がほとんど注入されていない状態を、メモリセルトランジスタＭＴが“１”データを保持している状態と定義する。他方で、電荷蓄積層に電荷が注入されている状態を、メモリセルトランジスタＭＴが“０”データを保持している状態と定義する。よって、“１”データを保持するメモリセルトランジスタＭＴの閾値電圧は、“０”データを保持するメモリセルトランジスタＭＴの閾値電圧より低い。なお、各データと閾値レベルとの関係は上記に限定されるものでは無く、適宜変更可能である。更にメモリセルトランジスタＭＴは２ビット以上のデータを保持しても良い。
【００１５】
１つのＮＡＮＤストリング１６内にあるメモリセルトランジスタＭＴ０〜ＭＴ１５は、その電流経路が直列に接続される。この直列接続の一端側のメモリセルトランジスタＭＴ１５のドレインは、選択トランジスタＳＴ１のソースに接続され、他端側のメモリセルトランジスタＭＴ０のソースは、選択トランジスタＳＴ２のドレインに接続されている。
【００１６】
同一のブロックＢＬＫ内にある選択トランジスタＳＴ１のゲートは、同一の選択ゲート線ＳＧＤに共通に接続される。図１の例では、ブロックＢＬＫ０にある選択トランジスタＳＴ１のゲートは、選択ゲート線ＳＧＤに共通に接続され、ブロックＢＬＫ１にある図示せぬ選択トランジスタＳＴ１のゲートは、選択ゲート線ＳＧＤ１に共通に接続される。同様に、同一のブロックＢＬＫ内にある選択トランジスタＳＴ２のゲートは、同一の選択ゲート線ＳＧＳに共通に接続される。
【００１７】
また、同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ１５の制御ゲートは、それぞれ異なるワード線ＷＬ０〜ＷＬ１５に共通に接続される。
【００１８】
また、メモリセルアレイ１１内でマトリクス状に配置されたＮＡＮＤストリング１６のうち、同一行にあるＮＡＮＤストリング１６の選択トランジスタＳＴ１のドレインは、それぞれ異なるビット線ＢＬ（ＢＬ０〜ＢＬ（Ｎ−１）、（Ｎ−１）は１以上の自然数）に接続され、同一列にあるＮＡＮＤストリング１６の選択トランジスタＳＴ１のドレインは、ビット線ＢＬ０〜ＢＬ（Ｎ−１）のいずれかに共通接続される。すなわちビット線ＢＬは、各ブロックＢＬＫに含まれる１つのＮＡＮＤストリング１６を共通に接続する。また、各ブロックＢＬＫ内に含まれる選択トランジスタＳＴ２のソースは、ソース線ＳＬに共通に接続されている。すなわちソース線ＳＬは、メモリセルアレイ１１内にあるＮＡＮＤストリング１６を共通に接続する。
【００１９】
データの書き込み及び読み出しは、いずれかのブロックＢＬＫにおけるいずれかのワード線ＷＬに接続されたメモリセルトランジスタＭＴに対して、一括して行われる。この単位を「ページ」と呼ぶ。
【００２０】
ロウデコーダ１２は、例えばデータの書き込み、及び読み出しの際、ブロックアドレスやページアドレスをデコードして、対象となるページに対応するワード線ＷＬを選択する。そしてロウデコーダ１２は、選択ワード線ＷＬ、非選択ワード線ＷＬ、選択ゲート線ＳＧＤ、及びＳＧＳに適切な電圧を印加する。
【００２１】
センスアンプ１３は、例えばビット線ＢＬｉ（ｉ＝０〜（Ｎ−１）、Ｎ−１は１以上の整数）に対応するセンスアンプユニットＳＡＵｉ（ｉ＝０〜（Ｎ−１））を含む。センスアンプユニットＳＡＵｉは、データの読み出し時には、メモリセルトランジスタＭＴからビット線ＢＬｉに読み出されたデータをセンスし、データの書き込み時には、ビット線ＢＬｉを介して書き込みデータをメモリセルトランジスタＭＴに転送する。以下、ビット線ＢＬｉ及びセンスアンプユニットＳＡＵｉを特に限定しない場合は、単にビット線ＢＬ及びセンスアンプユニットＳＡＵと記載する。また、センスアンプユニットＳＡＵは、データを保持するためのラッチ回路を備えている。センスアンプユニットＳＡＵの詳細については後述する。
【００２２】
データラッチ１４は、データの読み出し時には、センスアンプ１３でセンスされたデータを一時的に保持し、これを図示せぬ入出力回路を介して外部コントローラまたはホスト機器に転送する。またデータの書き込み時には、入出力回路を介して外部コントローラまたはホスト機器から入力された書き込みデータを一時的に保持し、これをセンスアンプ１３に転送する。
【００２３】
ソース線ドライバ１５は、書き込み、読み出し、及び消去の際、ソース線ＳＬに必要な電圧を印加する。
【００２４】
周辺回路２０は、制御回路２１及び電圧発生回路２２を含む。
【００２５】
制御回路２１は、ＮＡＮＤ型フラッシュメモリ１全体の動作を制御する。
【００２６】
電圧発生回路２２は、データの書き込み、読み出し、及び消去に必要な電圧を発生させ、この発生した電圧をロウデコーダ１２、センスアンプ１３、及びソース線ドライバ１５に印加する。ロウデコーダ１２、センスアンプ１３、及びソース線ドライバ１５は、電圧発生回路２２より供給された電圧をメモリセルトランジスタＭＴに印加する。
【００２７】
なお、本例ではメモリセルトランジスタＭＴが半導体基板上に二次元に配置されている場合を例に説明するが、半導体基板上方に三次元に積層される場合であっても良い。
【００２８】
三次元積層型ＮＡＮＤ型フラッシュメモリにおけるメモリセルアレイ１１の構成については、例えば、“三次元積層不揮発性半導体メモリ(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)”という２００９年３月２３日に出願された米国特許出願１２／５３２，０３０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００２９】
更に、データの消去範囲は、１つのブロックＢＬＫに限定されず、複数のブロックＢＬＫが一括して消去されても良く、１つのブロックＢＬＫ内の一部の領域が一括して消去されても良い。
【００３０】
データの消去については、例えば、“不揮発性半導体記憶装置(NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE)”という２０１０年１月２７日に出願された米国特許出願１２／６９４，６９０号に記載されている。また、“不揮発性半導体記憶装置(NONVOLATILE SEMICONDUCTOR MEMORY DEVICE)”という２０１１年９月１８日に出願された米国特許出願１３／２３５，３８９号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００３１】
１．１．２  センスアンプとデータラッチの構成について  
次に、センスアンプ１３とデータラッチ１４の構成について、図２を用いて説明する。
【００３２】
図示するようにセンスアンプ１３は、センスアンプユニットＳＡＵ（ＳＡＵ０〜ＳＡＵ（Ｎ−１））を含む。また、データラッチ１４は、ラッチ回路ＸＤＬ（ＸＤＬ０〜ＸＤＬ（Ｎ−１）を含む。
【００３３】
センスアンプユニットＳＡＵは、例えばビット線ＢＬ毎に設けられる。例えば、８個のセンスアンプユニットＳＡＵが、１つのバスＤＢＵＳに共通に接続されている。なお、１つのバスＤＢＵＳに接続されるセンスアンプユニットＳＡＵの個数は任意である。
【００３４】
ラッチ回路ＸＤＬは、センスアンプユニットＳＡＵ毎に設けられ、対応するビット線ＢＬに関連するデータを一時的に保持する。より具体的には、外部コントローラまたはホスト機器から受信したデータは、データ線ＩＯを介してラッチ回路ＸＤＬに格納され、その後、バスＤＢＵＳを介して対応するセンスアンプユニットＳＡＵに転送される。逆もまた同じである。
【００３５】
８個のセンスアンプユニットＳＡＵと、それぞれに対応する８個のラッチ回路ＸＤＬが１つのバスＤＢＵＳに共通に接続され、８個のラッチ回路ＸＤＬは、８本のデータ線ＩＯ＜ｘ＞（ｘは、０〜７の任意の整数。ＩＯ＜０＞〜ＩＯ＜７＞）のいずれかに接続される。より具体的には、８個のセンスアンプユニットＳＡＵ０〜ＳＡＵ７と、それぞれ対応する８個のラッチ回路ＸＤＬ０〜ＸＤＬ７とが、１つのバスＤＢＵＳに共通に接続されている。そして、ラッチ回路ＸＤＬ０〜ＸＤＬ７は、それぞれデータ線ＩＯ＜０＞〜ＩＯ＜７＞に接続される。なお、データ線ＩＯの本数は任意である。
【００３６】
以下では、データ線ＩＯ＜０＞に共通に接続される複数のラッチ回路ＸＤＬ（ＸＤＬ０、ＸＤＬ８、…、ＸＤＬ（Ｎ−８））の群をＸＤＬ＜０＞と表記し、ラッチ回路ＸＤＬ＜０＞に対応する複数のセンスアンプユニットＳＡＵ（ＳＡＵ０、ＳＡＵ８、…ＳＡＵ（Ｎ−８）の群をＳＡＵ＜０＞と表記する。同様に、データ線ＩＯ＜１＞〜ＩＯ＜７＞にそれぞれ共通に接続されるラッチ回路ＸＤＬの群をＸＤＬ＜１＞〜ＸＤＬ＜７＞と表記し、対応するセンスアンプユニットＳＡＵの群をＳＡＵ＜１＞〜ＳＡＵ＜７＞と表記する。
【００３７】
１．１．３  センスアンプユニットの構成について
次にセンスアンプユニットＳＡＵの構成について、図３を用いて説明する。なお、本実施形態では、ビット線ＢＬを流れる電流をセンスする電流センス方式のセンスアンプユニットＳＡＵを例に説明するが、電圧センス方式のセンスアンプユニットＳＡＵを用いても良い。
【００３８】
図３に示すように、センスアンプユニットＳＡＵは、センスアンプ部ＳＡ、ラッチ回路ＳＤＬ及びＡＤＬ、ＬＢＵＳプリチャージ回路３０、及びＢＵＳスイッチ回路３２を含む。
【００３９】
センスアンプ部ＳＡは、ビット線ＢＬに読み出されたデータをセンスし、またプログラムデータに応じてビット線ＢＬに電圧を印加する。センスアンプ部ＳＡは、高耐圧ｎチャネルＭＯＳトランジスタ４０、低耐圧ｎチャネルＭＯＳトランジスタ４１〜５０、低耐圧ｐチャネルＭＯＳトランジスタ５１、及びキャパシタ素子５２を備えている。
【００４０】
ビット線ＢＬは、ゲートに信号ＢＬＳが入力されるトランジスタ４０、ノードＢＬＩ、及びゲートに信号ＢＬＣが入力されるトランジスタ４１を介して、ノードＳＣＯＭに接続される。
【００４１】
ノードＳＣＯＭは、ゲートに信号ＢＬＸが入力されるトランジスタ４２を介して、ノードＳＳＲＣに接続され、ゲートに信号ＸＸＬが入力されるトランジスタ４４を介してノードＳＥＮに接続される。
【００４２】
ノードＳＳＲＣは、トランジスタ４３を介して、例えば接地電圧ＶＳＳが印加されるノードＳＲＣＧＮＤに接続され、トランジスタ５１を介して、電源電圧ＶＤＤＳＡを印加される。トランジスタ４３及び５１のゲートは、ノードＩＮＶ＿Ｓにそれぞれ接続される。
【００４３】
ノードＳＥＮは、ゲートに信号ＨＬＬが入力されるトランジスタ４５を介して電圧ＶＳＥＮＰを印加される。ノードＳＥＮは、キャパシタ素子５２を介してクロックＣＬＫが入力されるノードに接続される。ノードＳＥＮは、ゲートに信号ＬＳＬが入力されるトランジスタ５０及びゲートがバスＬＢＵＳに接続されたトランジスタ４９を介して、電圧ＶＬＳＡを印加される。例えば電圧ＶＬＳＡは、接地電圧ＶＳＳであっても良い。ノードＳＥＮは、ゲートに信号ＢＬＱが入力されるトランジスタ４６を介して、バスＬＢＵＳと接続される。更にノードＳＥＮは、トランジスタ４７のゲートに接続される。
【００４４】
バスＬＢＵＳは、ゲートには信号ＳＴＢが入力されるトランジスタ４８及びトランジスタ４７を介して、クロックＣＬＫが入力されるノードに接続される。
【００４５】
次に、ラッチ回路ＳＤＬ及びＡＤＬについて説明する。ラッチ回路ＳＤＬ及びＡＤＬは、データを一時的に保持する。センスアンプ部ＳＡは、ラッチ回路ＳＤＬの保持データに応じて、ビット線ＢＬを制御する。なお、ラッチ回路の個数は任意に設定可能である。
【００４６】
ラッチ回路ＳＤＬは、低耐圧ｎチャネルＭＯＳトランジスタ６０〜６３及び低耐圧のｐチャネルＭＯＳトランジスタ６４〜６７を備えている。
【００４７】
バスＬＢＵＳは、ゲートに信号ＳＴＬが入力されるトランジスタ６０を介して、ノードＬＡＴ＿Ｓに接続され、ゲートに信号ＳＴＩが入力されるトランジスタ６１を介して、ノードＩＮＶ＿Ｓに接続される。
【００４８】
ノードＬＡＴ＿Ｓは、トランジスタ６２を介して接地され、トランジスタ６４及びゲートに信号ＳＬＬが入力されるトランジスタ６６を介して電源電圧ＶＤＤＳＡを印加される。またノードＬＡＴ＿Ｓはトランジスタ６３及び６５のゲートに接続される。
【００４９】
ノードＩＮＶ＿Ｓは、トランジスタ６３を介して接地され、トランジスタ６５及びゲートに信号ＳＬＩが入力されるトランジスタ６７を介して電源電圧ＶＤＤＳＡを印加される。またノードＩＮＶ＿Ｓはトランジスタ６２及び６４のゲートに接続される。
【００５０】
ラッチ回路ＳＤＬでは、トランジスタ６２、６４で第１インバータが構成され、トランジスタ６３、６５で第２インバータが構成されている。ラッチ回路ＳＤＬは、データをノードＬＡＴ＿Ｓで保持し、その反転データをノードＩＮＶ＿Ｓで保持する。
【００５１】
ラッチ回路ＡＤＬは、ラッチ回路ＳＤＬと同様の構成を有しているので、説明は省略するが、各トランジスタの参照番号及び信号名は、図３の通りラッチ回路ＳＤＬのものとは区別して以下説明する。ラッチ回路ＡＤＬのトランジスタ７０〜７７、並びに信号ＡＴＬ、ＡＴＩ、ＡＬＬ、及びＡＬＩは、それぞれラッチ回路ＳＤＬのトランジスタ６０〜６７、並びに信号ＳＴＬ、ＳＴＩ、ＳＬＬ、及びＳＬＩに相当する。
【００５２】
ＬＢＵＳプリチャージ回路３０は、バスＬＢＵＳをプリチャージする。ＬＢＵＳプリチャージ回路３０は、例えば低耐圧ｎチャネルＭＯＳトランジスタ３１を含む。トランジスタ３１は、ゲートに信号ＬＰＣが入力され、電圧ＶＨＬＢをバスＬＢＵＳに転送する。
【００５３】
ＢＵＳスイッチ回路３２は、バスＬＢＵＳとバスＤＢＵＳとを接続する。ＢＵＳスイッチ回路３２は、例えば低耐圧ｎチャネルＭＯＳトランジスタ３３を含む。トランジスタ３３は、ゲートに信号ＤＳＷが入力され、バスＬＢＵＳとバスＤＢＵＳとを接続する。
【００５４】
なお、上記構成のセンスアンプユニットＳＡＵにおける各種信号は、例えば制御回路２１によって与えられる。
【００５５】
１．２  書き込み動作について  
次に、データの書き込み動作について簡単に説明する。書き込み動作は、大まかにはプログラムとベリファイとを含む。
【００５６】
プログラムは、電子を電荷蓄積層に注入することによりメモリセルトランジスタＭＴの閾値電圧を上昇させる（または注入を禁止することで閾値電圧をほとんど上昇させない）動作のことである。以下では、閾値電圧を上昇させる動作を「“０”プログラム」または「“０”書き込み」と呼ぶ。“０”プログラムにより、対象となるメモリセルトランジスタＭＴには“０”データが与えられる。また、“０”プログラム対象とされたビット線ＢＬをビット線ＢＬ（“０”）と表記する。他方で、閾値電圧をほとんど上昇させない動作を「“１”プログラム」、「“１”書き込み」、または「書き込み禁止（inhibit）」と呼ぶ。“１”プログラムにより、対象となるメモリセルトランジスタＭＴには“１”データが与えられる。“１”プログラム対象とされたビット線ＢＬをビット線ＢＬ（“１”）と表記する。
【００５７】
ベリファイは、プログラムの後、データを読み出し（以下、「ストローブ」と呼ぶ）、メモリセルトランジスタＭＴの閾値電圧がターゲットレベル（ベリファイレベル）に達したか否かを判定する動作である。メモリセルトランジスタＭＴの閾値電圧がベリファイレベルに達している場合を、「ベリファイをパスした」と呼び、ターゲットレベルまで達していない場合を、「ベリファイをフェイルした」と呼ぶ。ターゲットレベルまで達した（ベリファイをパスした）メモリセルトランジスタＭＴは、その後、書き込み禁止とされる。
【００５８】
以下、ベリファイにおいて、読み出したデータに基づいて、次のプログラムのためにラッチ回路ＳＤＬのデータを更新する動作、すなわち次のプログラムデータをラッチ回路ＳＤＬに格納する動作をスキャン（Scan）と呼ぶ。ベリファイをフェイルした場合、スキャンによりラッチ回路ＳＤＬに“０”データが格納され、次にプログラムでは“０”プログラムが実行される。また、ベリファイをパスした場合、スキャンによりラッチ回路ＳＤＬに“１”データが格納され、次にプログラムでは“１”プログラムが実行される。なお、スキャンは、ベリファイ結果に基づいてラッチ回路ＳＤＬを更新する動作に限定されない。スキャンには、センスアンプユニットＳＡＵがビット線ＢＬに電圧を充電している際に、センスアンプユニットＳＡＵにて行われる各種演算処理動作が含まれる。
【００５９】
以下、本実施形態では、スキャンによるラッチ回路ＳＤＬのデータ更新、すなわちラッチ回路ＳＤＬへの次のプログラムデータの格納を、データ線ＩＯ＜ｘ＞に対応するセンスアンプユニットＳＡＵ＜ｘ＞毎に実行する場合について、説明する。より具体的には、ＳＡＵ＜０＞、ＳＡＵ＜１＞、…、ＳＡＵ＜７＞の順序で、対応するラッチ回路ＳＤＬのデータ更新を行う。なお、スキャンによるラッチ回路ＳＤＬのデータ更新の順番は任意に設定可能である。例えば、センスアンプユニットＳＡＵ０、ＳＡＵ１、…、ＳＡＵ（Ｎ−１）の順に、すなわちセンスアンプユニットＳＡＵ毎にラッチ回路ＳＤＬのデータを更新しても良く、全てのセンスアンプユニットＳＡＵのラッチ回路ＳＤＬのデータを一括して更新しても良い。
【００６０】
以下、プログラムとベリファイの組み合わせをプログラムループと呼ぶ。プログラムループを繰り返すことで、メモリセルトランジスタＭＴの閾値電圧がターゲットレベルまで上昇される。
【００６１】
１．２．１  書き込み動作の全体の流れについて  
まず、書き込み動作の全体の流れについて、図４及び図５を用いて説明する。図４及び図５は、書き込み動作の流れを示すフローチャートである。
【００６２】
図示するように、まず、制御回路２１は、例えば外部コントローラから受信したプログラムデータを、ラッチ回路ＸＤＬに格納する（ステップＳ１０）。
【００６３】
次に、制御回路２１は、ラッチ回路ＸＤＬが保持するプログラムデータの反転データを、ラッチ回路ＡＤＬに格納する（ステップＳ１１）。更に制御回路２１は、ラッチ回路ＡＤＬが保持するデータの反転データ、すなわちプログラムデータを、ラッチ回路ＳＤＬに格納する（ステップＳ１２）。
【００６４】
次に、センスアンプ１３は、プログラムのため、ラッチ回路ＳＤＬのデータに応じて、各ビット線ＢＬの充電（以下、「ＢＬプリチャージ」と呼ぶ）を開始する（ステップＳ１３）。より具体的には、ラッチ回路ＳＤＬが“１”データを保持している場合、ノードＩＮＶ＿Ｓは“Ｌ”レベルとなる。よって、対応するセンスアンプユニットＳＡＵのトランジスタ５１がオン状態となる。従って、電圧ＶＤＤＳＡをトランジスタ４１でクランプした電圧ＶＢＬ１が、ビット線ＢＬ（“１”）に印加される。電圧ＶＢＬ１は、“１”プログラムのためのＢＬプリチャージ電圧である。また、ラッチ回路ＳＤＬが“０”データを保持している場合、ノードＩＮＶ＿Ｓは“Ｈ”レベルとなり、対応するセンスアンプユニットＳＡＵのトランジスタ４３がオン状態となる。従って、ビット線ＢＬ（“０”）は接地され、接地電圧ＶＳＳが印加される。すなわち、ラッチ回路ＳＤＬのデータに応じて、ビット線ＢＬは充放電される。
【００６５】
次に、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＰＧＭを印加し、対象となるメモリセルトランジスタＭＴにデータを書き込む（ステップＳ１４）。より具体的には、ロウデコーダ１２は、選択ブロックＢＬＫにおいて、いずれかのワード線ＷＬを選択し、選択ワード線ＷＬに電圧ＶＰＧＭを印加し、その他の非選択ワード線ＷＬに電圧ＶＰＡＳＳを印加する。電圧ＶＰＧＭは、電子を電荷蓄積層に注入するための高電圧である。電圧ＶＰＡＳＳは、メモリセルトランジスタＭＴの閾値電圧によらず、メモリセルトランジスタＭＴをオン状態にする電圧である。電圧ＶＰＧＭと電圧ＶＰＡＳＳとは、ＶＰＧＭ＞ＶＰＡＳＳの関係にある。これにより、対象となるメモリセルトランジスタＭＴに“１”または“０”データが書き込まれる。
【００６６】
次に、制御回路２１は、ベリファイを開始し、ビット線ＢＬを充電する（ステップＳ１５）。より具体的には、各センスアンプユニットＳＡＵのラッチ回路ＳＤＬには、例えば“１”データが格納される。すなわち、ノードＩＮＶ＿Ｓは“Ｌ”レベルとなる。従って、電圧ＶＤＤＳＡをトランジスタ４１でクランプした電圧ＶＢＬ２が、ビット線ＢＬに印加される。電圧ＶＢＬ２は、ベリファイ用のＢＬプリチャージ電圧である。
【００６７】
以下の説明では、ベリファイにおいて、全てのビット線ＢＬに電圧ＶＢＬ２を印加する場合について説明するが、一部のビット線ＢＬに電圧ＶＢＬ２を印加しても良い。例えば、ベリファイ対象となるラッチ回路ＳＤＬに“１”データを格納してビット線ＢＬに電圧ＶＢＬ２を印加し、非対象のラッチ回路ＳＤＬに“０”データを格納してビット線ＢＬに電圧ＶＳＳを印加しても良い。例えば、メモリセルトランジスタが４値（２ビット）のデータを保持可能な場合、対象となる書き込みレベルに対応するビット線ＢＬに電圧ＶＢＬ２を印加し、他の書き込みレベルに対応するビット線ＢＬに電圧ＶＳＳを印加しても良い。
【００６８】
次に、制御回路２１は、各センスアンプユニットＳＡＵにおいて、データのストローブを行い、ラッチ回路ＡＤＬを更新する（ステップＳ１６）。より具体的には、“１”プログラムに対応するラッチ回路ＡＤＬでは、“０”データが維持される。“０”プログラムにおいて、ベリファイをパスしたメモリセルトランジスタＭＴに対応するラッチ回路ＡＤＬでは、“１”データが“０”データに更新される。“０”プログラムにおいて、ベリファイをフェイルしたメモリセルトランジスタＭＴに対応するラッチ回路ＡＤＬでは、“１”データが維持される。このとき、ラッチ回路ＡＤＬに格納されたデータの反転データが次回のプログラムデータとなる。
【００６９】
次に、制御回路２１は、ビット線ＢＬを開始する（ステップＳ１７）。より具体的には、制御回路２１は、ベリファイでビット線ＢＬに充電された電圧ＶＢＬ２を放電する。例えば、制御回路２１は、信号ＢＬＳを“Ｌ”レベルにしてトランジスタ４０をオフ状態にする。これにより、センスアンプユニットＳＡＵとビット線ＢＬは電気的に遮断され、ビット線ＢＬの電圧ＶＢＬ２はソース線ＳＬ側に放電される。
【００７０】
次に、制御回路２１は、一旦全てのビット線ＢＬを充電するために、全てのラッチ回路ＳＤＬに“１”データを格納する（ステップＳ１８）。より具体的には、ビット線ＢＬの放電を開始した後、すなわちセンスアンプユニットＳＡＵとビット線ＢＬが電気的に遮断された後、ＢＬプリチャージが開始される前に、制御回路２１は全てのラッチ回路ＳＤＬに“１”データを格納する。なお、本実施形態では、ベリファイ開始時に全てのラッチ回路ＳＤＬに“１”データが格納されているため、本ステップは省略されても良い。
【００７１】
次に、センスアンプ１３は、プログラムのため、ラッチ回路ＳＤＬのデータに応じて、ＢＬプリチャージを開始する（ステップＳ１９）。より具体的には、センスアンプ１３は、ラッチ回路ＳＤＬの“１”データに応じてビット線ＢＬに電圧ＶＢＬ１の充電を開始する。
【００７２】
次に、制御回路２１は、スキャンを開始する。スキャン動作において、制御回路２１はｘ＝０〜７のそれぞれ場合に、対応するセンスアンプユニットＳＡＵ＜ｘ＞のラッチ回路ＡＤＬの反転データ（次回のプログラムデータ）を、ラッチ回路ＳＤＬに転送する（ステップＳ２０）。以下では、センスアンプユニットＳＡＵ＜ｘ＞のラッチ回路ＳＤＬ及びＡＤＬを、ＳＤＬ＜ｘ＞及びＡＤＬ＜ｘ＞と表記する。また、センスアンプユニットＳＡＵ＜ｘ＞に対応するスキャンをスキャン＜ｘ＞と表記する。すなわち、スキャン＜ｘ＞に応じて、ラッチ回路ＳＤＬ＜ｘ＞は更新される。
【００７３】
なお、スキャンは、ビット線ＢＬの充放電中に実行される。スキャンは、例えばベリファイ終了時のビット線ＢＬの放電中に開始されても良く、次のプログラムのためのＢＬプリチャージ開始後に開始されても良い。以下では、説明を簡略化するため、ＢＬプリチャージ開始後にスキャンが実行される場合について説明する。
【００７４】
ＢＬプリチャージ中に、スキャン＜ｘ＞が実行された場合、センスアンプユニットＳＡＵ＜ｘ＞では、更新されたラッチ回路ＳＤＬ＜ｘ＞のデータ、すなわち次回のプログラムデータに基づいてＢＬプリチャージが実行される。例えば、ラッチ回路ＳＤＬ＜ｘ＞がスキャン後も“１”データを保持している場合、対応するビット線ＢＬには引き続き電圧ＶＢＬ１が印加される。他方で、ラッチ回路ＳＤＬ＜ｘ＞のデータが“０”データに更新された場合、対応するビット線ＢＬには電圧ＶＳＳが印加される。
【００７５】
制御回路２１は、ｘ＝７ではない場合、すなわち、スキャン＜７＞まで達していない場合（ステップＳ２１＿Ｎｏ）、ｘをｘ＋１にカウントアップして（ステップＳ２２）、ステップＳ２０〜Ｓ２１の動作を繰り返す。すなわち、スキャン＜０＞〜＜７＞を順次実行する。そして、制御回路２１は、ｘ＝７まで達した場合（ステップＳ２０＿Ｙｅｓ）、スキャンを終了する。
【００７６】
次に、制御回路２１は、ベリファイ判定を行う（ステップＳ２３）。より具体的には、ベリファイのフェイルビット数が、予め設定された規定数未満の場合、ベリファイをパスしたと判定し（ステップＳ２３＿Ｙｅｓ）、書き込み動作を完了させる。
【００７７】
他方で、フェイルビット数が、規定数以上の場合、ベリファイをフェイルしたと判定する（ステップＳ２３＿Ｎｏ）。そして、制御回路２１は、プログラムループ回数が予め設定された規定回数に達している場合（ステップＳ２４＿Ｙｅｓ）、書き込み動作を終了し、例えば外部コントローラに書き込み動作が正常に終了しなかった旨を通知する。また、プログラムループ回数が規定回数に達していない場合（ステップＳ２４＿Ｎｏ）、制御回路２１は、ステップＳ１４に戻り、再度プログラムを実行する。
【００７８】
１．２．２  書き込み動作における各配線の電圧について
次に、プログラムにおける各配線の電圧について、図６及び図７を用いて説明する。図６は、１回目のプログラム、１回目のベリファイ、及び２回目のプログラムにおける各配線の電圧変化を示している。図７は、図６における信号ＳＴＬ及びノードＬＡＴ＿Ｓの電圧をラッチ回路ＳＤＬ＜ｘ＞毎に示している。図６及び図７の例は、２回目のプログラムのＢＬプリチャージが開始された後に、１回目のベリファイのスキャンが開始される場合を示している。
【００７９】
図示するように、時刻ｔ０〜ｔ６の間に１回目のプログラムが実行され、時刻ｔ６〜ｔ１１の間に１回目のベリファイが実行され、時刻ｔ９〜ｔ１６の間に２回目のプログラムが実行される。また、１回目のベリファイのスキャンは、時刻ｔ９〜ｔ１１の間に実行される。
【００８０】
まず、１回目のプログラムについて説明する。時刻ｔ０において、制御回路２１は、例えばラッチ回路ＳＤＬの信号ＳＴＬを予め設定された期間“Ｈ”レベルにしてトランジスタ６０をオン状態にし、ラッチ回路ＡＤＬの反転データ（１回目のプログラムデータ）をラッチ回路ＳＤＬに格納する。より具体的には、制御回路２１は、ラッチ回路ＡＤＬの信号ＡＴＩを“Ｈ”レベルにしてトランジスタ７１をオン状態にし、バスＬＢＵＳにラッチ回路ＡＤＬの反転データを転送する。次に、制御回路２１は、ラッチ回路ＳＤＬの信号ＳＬＬを“Ｈ”レベルにしてトランジスタ６６をオフ状態にした後、信号ＳＴＬを“Ｈ”レベルにして、バスＬＢＵＳのデータをラッチ回路ＳＤＬに取り込む。なお、制御回路２１は、ラッチ回路ＡＤＬの信号ＡＴＬを“Ｈ”レベルにしてラッチ回路ＡＤＬのデータをバスＬＢＵＳに転送した後、ラッチ回路ＳＤＬの信号ＳＬＩ及び信号ＳＴＩを“Ｈ”レベルにして、バスＬＢＵＳの反転データを取り込んでも良い。
【００８１】
“１”データが格納されたラッチ回路ＳＤＬでは、ノードＬＡＴ＿Ｓが“Ｈ”レベルとされ、ノードＩＮＶ＿Ｓが“Ｌ”レベルとされる。よって、センスアンプユニットＳＡＵのトランジスタ５１がオン状態となり、センスアンプユニットＳＡＵのノードＳＳＲＣには電圧ＶＤＤＳＡが印加される。他方で、“０”データが格納されたラッチ回路ＳＤＬでは、ノードＬＡＴ＿Ｓが“Ｌ”レベルとされ、ノードＩＮＶ＿Ｓが“Ｈ”レベルとされる。よって、センスアンプユニットＳＡＵのトランジスタ４３がオフ状態となり、ノードＳＳＲＣには電圧ＶＳＳが印加される。
【００８２】
時刻ｔ１において、制御回路２１は、信号ＢＬＣを“Ｈ”レベルにして、トランジスタ４１のゲートに電圧“ＶＢＬ１＋Ｖｔ４１”（Ｖｔ４１；トランジスタ４１の閾値電圧）を印加する。電圧ＶＢＬ１と電圧ＶＤＤＳＡとは、ＶＤＤＳＡ＞ＶＢＬ１の関係にある。また、制御回路２１は、図示せぬ信号ＢＬＳ及び信号ＢＬＸを“Ｈ”レベルにして、トランジスタ４０及びトランジスタ４２をオン状態にする。この結果、センスアンプ１３は、ビット線ＢＬ（“１”）に、トランジスタ４１によってクランプされた電圧ＶＢＬ１を印加し、ビット線ＢＬ（“０”）に、電圧ＶＳＳを印加する。すなわちＢＬプリチャージが実行される。
【００８３】
ソース線ドライバ１５は、制御回路２１の制御により、ソース線ＳＬに電圧ＶＳＲＣ１（＞ＶＳＳ）を印加する。ロウデコーダ１２は、制御回路２１の制御により、選択ブロックＢＬＫの選択ゲート線ＳＧＤに電圧ＶＳＧＤ１を印加し、選択ゲート線ＳＧＳに電圧ＶＳＳを印加する。電圧ＶＳＧＤ１は、ビット線ＢＬ（“１”）及びＢＬ（“０”）に対応する選択トランジスタＳＴ１をオン状態にする電圧である。選択トランジスタＳＴ１及びＳＴ２の閾値電圧をＶｔｈｓｇとすると、電圧ＶＳＧＤ１と電圧ＶＢＬ１とは、“ＶＳＧＤ１−Ｖｔｈｓｇ”≧ＶＢＬ１の関係にある。また、選択トランジスタＳＴ２は、ソース線ＳＬに電圧ＶＳＲＣ１が印加され、ゲートにＶＳＳが印加されているため、カットオフ状態となる。この結果、選択ブロックＢＬＫにおいて、ビット線ＢＬ（“１”）に接続されたＮＡＮＤストリング１６のチャネル電位はＶＢＬ１に上昇し、ビット線（“０”）に接続されたＮＡＮＤストリング１６のチャネル電位はＶＳＳとなる。
【００８４】
時刻ｔ２において、ロウデコーダ１２は、選択ゲート線ＳＧＤに電圧ＶＳＧＤ２を印加する。電圧ＶＳＧＤ２は、ビット線ＢＬ（“１”）に対応する選択トランジスタＳＴ１をカットオフ状態にするための電圧である。電圧ＶＳＧＤ２及び電圧ＶＢＬ１は、“ＶＳＧＤ２−Ｖｔｈｓｇ”＜ＶＢＬ１の関係にある。これにより、ビット線ＢＬ（“１”）に対応するＮＡＮＤストリング１６のチャネルはフローティング状態となり、ビット線（“０”）に接続されたＮＡＮＤストリング１６のチャネル電位は引き続きＶＳＳを維持する。
【００８５】
時刻ｔ３において、ロウデコーダ１２は、選択ブロックＢＬＫのワード線ＷＬに電圧ＶＰＡＳＳを印加する。
【００８６】
時刻ｔ４において、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＰＧＭを印加する。これにより、対象となるメモリセルトランジスタＭＴにデータが書き込まれる。
【００８７】
より具体的には、ビット線ＢＬ（“０”）に対応するＮＡＮＤストリング１６では、選択トランジスタＳＴ１がオン状態となっている。そのため、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴのチャネル電位はＶＳＳとなる。すなわち、制御ゲートとチャネルとの間の電位差が大きくなり、その結果、電子が電荷蓄積層に注入されて、メモリセルトランジスタＭＴの閾値が上昇させられる。
【００８８】
ビット線ＢＬ（“１”）に対応するＮＡＮＤストリング１６では、選択トランジスタＳＴ１がカットオフ状態となっている。そのため、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴのチャネルは、電気的にフローティングとなる。よって、チャネル電位は、ワード線ＷＬ等との容量カップリングにより、例えば電圧ＶＰＧＭ近くまで上昇させられる。すなわち、制御ゲートとチャネルとの間の電位差が小さくなり、その結果、電子は電荷蓄積層にほとんど注入されず、メモリセルトランジスタＭＴの閾値はほぼ維持される（閾値分布レベルがより高い分布に遷移するほどには閾値は変動しない）。
【００８９】
時刻ｔ５において、リカバリ処理が行われ、制御回路２１は、１回目のプログラムを終了する。
【００９０】
次に、１回目のベリファイについて説明する。時刻ｔ６において、制御回路２１は、信号ＳＴＬを予め設定された期間“Ｈ”レベルにして、ラッチ回路ＳＤＬに“１”データを格納する。より具体的には、制御回路２１は、ＬＢＵＳプリチャージ回路３０において、信号ＬＰＣを“Ｈ”レベルにしてトランジスタ３１をオン状態にし、バスＬＢＵＳに“Ｈ”レベルの電圧ＶＨＬＢを印加する。この状態で、制御回路２１は、信号ＳＬＬを“Ｈ”レベルにしてトランジスタ６６をオフ状態にした後、信号ＳＴＬを“Ｈ”レベルにしてトランジスタ６０をオン状態にして、ノードＬＡＴ＿Ｓを“Ｈ”レベルにする。その後、制御回路は、信号ＬＰＣ、ＳＴＬ、及びＳＬＬを“Ｌ”レベルにする。これにより、ラッチ回路ＳＤＬは“１”データを保持する。
【００９１】
時刻ｔ７において、制御回路２１は、信号ＢＬＣを“Ｈ”レベルにして、トランジスタ４１のゲートに電圧“ＶＢＬ２＋Ｖｔｈ”を印加する。電圧ＶＢＬ２と電圧ＶＤＤＳＡとは、ＶＤＤＳＡ＞ＶＢＬ２の関係にある。また、制御回路２１は、図示せぬ信号ＢＬＳ及び信号ＢＬＸを“Ｈ”レベルにして、トランジスタ４０及びトランジスタ４２をオン状態にする。よって、センスアンプ１３は、ビット線ＢＬに、トランジスタ４１によってクランプされた電圧ＶＢＬ２を印加する。
【００９２】
ソース線ドライバ１５は、ソース線ＳＬに電圧ＶＳＲＣ２（＞ＶＳＳ）を印加する。ロウデコーダ１２は、選択ブロックＢＬＫの選択ゲート線ＳＧＤに電圧ＶＳＧＤ３を印加し、選択ゲート線ＳＧＳに電圧ＶＳＧＳ１を印加する。電圧ＶＳＧＤ３及び電圧ＶＳＧＳ１は、ベリファイにおいて、選択トランジスタＳＴ１及びＳＴ２をそれぞれオン状態にする電圧である。電圧ＶＳＧＤ３と電圧ＶＢＬ２とは、“ＶＳＧＤ３−Ｖｔｈｓｇ”≧ＶＢＬ２の関係にある。電圧ＶＳＧＳ１と電圧ＶＳＲＣ２とは、“ＶＳＧＳ１−Ｖｔｈｓｇ”≧ＶＳＲＣ２の関係にある。
【００９３】
ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＣＧＲＶを印加し、非選択ワード線ＷＬに電圧ＶＲＥＡＤを印加する。電圧ＶＣＧＲＶは、読み出しデータ（ベリファイレベル）に応じて設定される電圧である。電圧ＶＲＥＡＤは、メモリセルトランジスタＭＴの閾値電圧に関わらず、メモリセルトランジスタＭＴをオン状態にする電圧である。電圧ＶＣＧＲＶと電圧ＶＲＥＡＤとは、ＶＣＧＲＶ＜ＶＲＥＡＤの関係にある。
【００９４】
時刻ｔ７〜ｔ８の間、まず、制御回路２１は、図示せぬ信号ＨＬＬを“Ｈ”レベルにしてトランジスタ４５をオン状態にし、ノードＳＥＮに電圧ＶＳＥＮＰを充電する。信号ＨＬＬを“Ｌ”レベルにした後、制御回路２１は、図示せぬ信号ＸＸＬを“Ｈ”レベルにしてトランジスタ４４をオン状態にする。これにより、ベリファイ対象となるメモリセルトランジスタＭＴの状態に応じて、ノードＳＥＮの電圧が変動する。より具体的には、ベリファイ対象となるメモリセルトランジスタＭＴの閾値電圧がベリファイレベル以上の場合、メモリセルトランジスタＭＴはオフ状態（以下、「オフセル」と呼ぶ）となる。よって、対応するビット線ＢＬからソース線ＳＬに電流はほとんど流れない。すなわち、ノードＳＥＮの電位はほとんど維持される。他方で、ベリファイ対象となるメモリセルトランジスタＭＴの閾値電圧がベリファイレベル未満の場合、メモリセルトランジスタＭＴはオン状態（以下、「オンセル」と呼ぶ）となる。よって、対応するビット線ＢＬからソース線ＳＬに電流が流れる。すなわち、ノードＳＥＮの電圧は低下する。
【００９５】
時刻ｔ８において、制御回路２１は、信号ＳＴＢを予め設定された期間“Ｈ”レベルにしてトランジスタ４８をオン状態にし、データをストローブする。ノードＳＥＮの電圧が、トランジスタ４７の閾値電圧よりも低い場合（オンセルの場合）、トランジスタ４７はオフ状態となる。この場合、ラッチ回路ＡＤＬは、データを維持する。また、ノードＳＥＮの電圧が、トランジスタ４７の閾値電圧以上の場合（オフセルの場合）、トランジスタ４７はオン状態となる。この場合、ラッチ回路ＡＤＬは、“０”データを保持する。より具体的には、例えば制御回路２１は、トランジスタ４８をオンにした状態で、信号ＡＬＬを“Ｈ”レベルにしてトランジスタ７６をオフ状態にし、信号ＡＴＬを“Ｈ”レベルにしてトランジスタ７０をオン状態にする。すると、トランジスタ４７がオフ状態の場合（オンセルの場合）、ノードＬＡＴ＿Ａのデータは維持される。他方でトランジスタ４７がオン状態の場合（オフセルの場合）、ノードＬＡＴ＿Ａは“Ｌ”レベルとなる。すなわちラッチ回路ＡＤＬのデータは、“０”データに更新される。１回目のプログラムで“０”プログラムを実行したセンスアンプユニットＳＡＵでは、ラッチ回路ＡＤＬに“１”データが格納されている。よって、“０”プログラムにおいて、メモリセルトランジスタＭＴの閾値電圧がベリファイレベル未満（オンセル）の場合、ラッチ回路ＡＤＬは“１”データを保持し、メモリセルトランジスタＭＴの閾値電圧がベリファイレベル以上（オフセル）の場合、ラッチ回路ＡＤＬは、“０”データを保持する。
【００９６】
時刻ｔ９において、制御回路２１は、信号ＢＬＣ（及び信号ＢＬＳ）を“Ｌ”レベルにして、ビット線ＢＬとセンスアンプ１３とを電気的に遮断する。また、ソース線ドライバ１５は、ソース線ＳＬに電圧ＶＳＳを印加する。ロウデコーダ１２は、ワード線ＷＬ、選択ゲート線ＳＧＤ及びＳＧＳに電圧ＶＳＳを印加する。
【００９７】
この結果、時刻ｔ９〜ｔ１０の間、ビット線ＢＬは放電され、ビット線ＢＬの電圧は、電圧ＶＳＳまで低下する。ワード線ＷＬは、ビット線ＢＬよりも充電容量が大きいため、時刻ｔ９〜時刻ｔ１１間、放電されて電圧ＶＳＳまで低下する。
【００９８】
時刻ｔ１０において、制御回路２１は、２回目のプログラムのためにＢＬプリチャージを開始する。具体的には、時刻ｔ１と同様に、制御回路２１は、信号ＢＬＣを“Ｈ”レベルにして、トランジスタ４１のゲートに電圧“ＶＢＬ１＋Ｖｔｈ”を印加する。全てのラッチ回路ＳＤＬには“１”データが格納されているため、センスアンプ１３は、全ビット線ＢＬに電圧ＶＢＬ１を印加する。また、ソース線ドライバ１５は、ソース線ＳＬに電圧ＶＳＲＣ１を印加する。ロウデコーダ１２は、選択ブロックＢＬＫの選択ゲート線ＳＧＤに電圧ＶＳＧＤ１を印加し、選択ゲート線ＳＧＳに電圧ＶＳＳを印加する。
【００９９】
時刻ｔ１０〜ｔ１１の間、制御回路２１は、スキャン＜０＞〜スキャン＜７＞を順次、実行する。そして、スキャンに応じて、ラッチ回路ＳＤＬ＜０＞〜ＳＤＬ＜７＞の保持データを順次更新する。図７に示すように、より具体的には、制御回路２１は、まずラッチ回路ＳＤＬ＜０＞の信号ＳＴＬ（あるいは信号ＳＴＩ）を予め設定された期間“Ｈ”レベルにして、ラッチ回路ＡＤＬ＜０＞の反転データ、すなわち次のプログラムデータをラッチ回路ＳＤＬ＜０＞に取り込む。同様に、制御回路２１は、ラッチ回路ＡＤＬ＜１＞〜ＡＤＬ＜７＞の反転データを、ラッチ回路ＳＤＬ＜１＞〜ＳＤＬ＜７＞に順次取り込む。
【０１００】
例えば、ラッチ回路ＳＤＬの保持するデータが“１”データから“０”データに更新された場合、ノードＬＡＴ＿Ｓが“Ｈ”レベルから“Ｌ”レベルになる。すなわち、ノードＩＮＶ＿Ｓが“Ｌ”レベルから“Ｈ”レベルになる。このため、センスアンプユニットＳＡＵは、対応するビット線ＢＬに印加する電圧を電圧ＶＢＬ１から電圧ＶＳＳに変更する。他方で、ラッチ回路ＳＤＬの保持するデータが“１”データの場合、センスアンプユニットＳＡＵは、引き続き対応するビット線ＢＬに電圧ＶＢＬ１を印加する。なお、スキャンは、時刻ｔ９〜ｔ１０の間、すなわちビット線ＢＬの放電中に開始されても良い。
【０１０１】
時刻ｔ１１において、スキャンが終了し、制御回路２１が２回目のプログラムを実行すると判断した場合、ロウデコーダ１２は、時刻ｔ２と同様に、選択ゲート線ＳＧＤに電圧ＶＳＧＤ２を印加する。他方で、制御回路２１が書き込み動作を終了すると判断した場合は、リカバリ処理が実行される。
【０１０２】
時刻ｔ１３〜ｔ１６における各配線の電圧は、時刻ｔ３〜ｔ６と同様である。
【０１０３】
なお、時刻ｔ１〜ｔ１６の各時刻間の時間間隔は任意である。
【０１０４】
１．２．３  スキャンの具体例について
次に、スキャンにおけるラッチ回路ＳＤＬ及びＡＤＬの保持データ、並びにビット線ＢＬ電圧の具体例について説明する。
【０１０５】
１．２．３．１  ラッチ回路が保持するデータの具体例について  
データの書き込み動作においてラッチ回路ＳＤＬ及びＡＤＬが保持するデータの具体例について、図８及び図９を用いて説明する。図８及び図９は、１回目のプログラム及びベリファイにおいてラッチ回路ＳＤＬ及びＡＤＬが保持するデータを示している。なお、図８及び図９の例は、ビット線ＢＬｉ（ｉ＝０、１、２、３、７、８、９、（Ｎ−１））に対応するラッチ回路ＳＤＬｉ及びＡＤＬｉを示している。また、データ線ＩＯは、ビット線ＢＬｉに対応するセンスアンプユニットＳＡＵｉがラッチ回路ＸＤＬｉを介して接続されるデータ線ＩＯの番号を示している。また、図８及び図９の例は、データが更新されるラッチ回路を斜線部で示している。
【０１０６】
まず、図８のテーブル（Ａ）に示すように、制御回路２１は、ラッチ回路ＡＤＬに、ラッチ回路ＸＤＬの反転データを格納し、ラッチ回路ＳＤＬに、ラッチ回路ＡＤＬの反転データ（プログラムデータ）を格納する。テーブル（Ａ）の例では、ラッチ回路ＳＤＬ１、ＳＤＬ７、ＳＤＬ（Ｎ−１）に“１”データが格納され、ラッチ回路ＳＤＬ１、ＳＤＬ２、ＳＤＬ３、ＳＤＬ８、及びＳＤＬ９に“０”データが格納される。制御回路２１は、ラッチ回路ＳＤＬのデータに応じて１回目のプログラムを実行する。すなわち“１”データに対応するセンスアンプユニットＳＡＵでは、“１”プログラムが実行され、“０”データに対応するセンスアンプユニットＳＡＵでは、“０”プログラムが実行される。
【０１０７】
次に、テーブル（Ｂ）に示すように、制御回路２１は、全てのラッチ回路ＳＤＬに“１”データを格納し、１回目のベリファイを開始する。
【０１０８】
次に、テーブル（Ｃ）に示すように、ストローブの結果、ラッチ回路ＡＤＬのデータが更新される。具体的には、“０”プログラムのオフセル（ベリファイをパスしたメモリセルトランジスタＭＴ）に対応するラッチ回路ＡＤＬでは、“１”データが“０”データに更新される。他方で、他のラッチ回路は、保持しているデータを維持する。テーブル（Ｃ）の例では、ラッチ回路ＳＤＬ２及びＳＤＬ９において、“１”データが“０”データに更新されている。その後、制御回路２１は、ビット線ＢＬの充放電と、スキャンを開始する。
【０１０９】
図９のテーブル（Ｄ＿０）に示すように、まず制御回路２１は、スキャン＜０＞を実行する。すなわち、制御回路２１は、ラッチ回路ＳＤＬ＜０＞に、ラッチ回路ＡＤＬ＜０＞の反転データを格納する。そして、センスアンプユニットＳＡＵ＜０＞は、更新されたラッチ回路ＳＤＬ＜０＞の保持データに基づいて、ビット線ＢＬに電圧を印加する。テーブル（Ｄ＿０）の例では、スキャン＜０＞により、ラッチ回路ＳＤＬ０には“１”データが格納され、ラッチ回路ＳＤＬ８には“０”データが格納されている。
【０１１０】
次に、テーブル（Ｄ＿１）に示すように、制御回路２１は、スキャン＜１＞を実行する。テーブル（Ｄ＿１）の例では、スキャン＜１＞により、ラッチ回路ＳＤＬ１には“０”データが格納され、ラッチ回路ＳＤＬ９では“１”データが格納されている。
【０１１１】
次に、テーブル（Ｄ＿２）に示すように、制御回路２１は、スキャン＜２＞を実行する。テーブル（Ｄ＿２）の例では、スキャン＜２＞により、ラッチ回路ＳＤＬ２には“１”が格納されている。
【０１１２】
次に、テーブル（Ｄ＿３）に示すように、制御回路２１は、スキャン＜３＞を実行する。テーブル（Ｄ＿３）の例では、スキャン＜３＞により、ラッチ回路ＳＤＬ３には“０”データが格納されている。
【０１１３】
制御回路２１は、同様に図示せぬスキャン＜４＞〜スキャン＜６＞を実行する。その後、テーブル（Ｄ＿７）に示すように、制御回路２１は、スキャン＜７＞を実行する。テーブル（Ｄ＿７）の例では、スキャン＜７＞により、ラッチ回路ＳＤＬ７及びラッチ回路ＳＤＬ（Ｎ−１）には“１”データが格納されている。これによりスキャンが終了し、ビット線ＢＬ１、ＢＬ３、及びＢＬ８には電圧ＶＢＬ１が印加され、ビット線ＢＬ０、ＢＬ２、ＢＬ７、ＢＬ９、及びＢＬ（Ｎ−１）には、電圧ＶＳＳが印加される。
【０１１４】
スキャン終了後、制御回路２１が２回目のプログラムを必要と判断した場合、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＰＧＭを印加する。
【０１１５】
１．２．３．２  スキャンによるビット線の電圧変動の具体例について  
次に、スキャンによるビット線ＢＬの電圧変動の具体例について、図１０を用いて説明する。図１０は、図９におけるＢＬプリチャージ中の各ビット線ＢＬの電圧を示している。
【０１１６】
図１０に示すように、時刻ｔ１において、センスアンプ１３は、ＢＬプリチャージを開始する。すなわち、各ビット線ＢＬに、電圧ＶＢＬ１が印加される。
【０１１７】
時刻ｔ２＿０において、制御回路２１は、スキャン＜０＞を行う。その結果、ラッチ回路ＳＤＬ０は、“１”データを維持し、ラッチ回路ＳＤＬ８は、“１”データから“０”データに更新される。よって、センスアンプユニットＳＡＵ０は、引き続きビット線ＢＬ０に電圧ＶＢＬ１を印加し、センスアンプユニットＳＡＵ８は、ビット線ＢＬ８に電圧ＶＳＳを印加する。
【０１１８】
時刻ｔ２＿１において、制御回路２１は、スキャン＜１＞を行う。その結果、ラッチ回路ＳＤＬ１は、“１”データから“０”データに更新され、ラッチ回路ＳＤＬ９は、“１”データを維持する。よって、センスアンプユニットＳＡＵ１は、ビット線ＢＬ１に電圧ＶＳＳを印加し、センスアンプユニットＳＡＵ９は、引き続きビット線ＢＬ９に電圧ＶＢＬ１を印加する。
【０１１９】
時刻ｔ２＿２において、制御回路２１は、スキャン＜２＞を行う。その結果、ラッチ回路ＳＤＬ２は、“１”データを維持する。よって、センスアンプユニットＳＡＵ２は、引き続きビット線ＢＬ２に電圧ＶＢＬ１を印加する。
【０１２０】
時刻ｔ２＿３において、制御回路２１は、スキャン＜３＞を行う。その結果、ラッチ回路ＳＤＬ３は、“１”データから“０”データに更新される。よって、センスアンプユニットＳＡＵ３は、ビット線ＢＬ３に電圧ＶＳＳを印加する。
【０１２１】
制御回路２１は、同様にスキャン＜４＞〜スキャン＜６＞を実行する。その後、時刻ｔ２＿７において、制御回路２１は、スキャン＜７＞を行う。その結果、ラッチ回路ＳＤＬ７及びＳＤＬ（Ｎ−１）は、“１”データを維持する。よって、センスアンプユニットＳＡＵ７及びＳＡＵ（Ｎ−１）は、引き続きビット線ＢＬ７及びビット線ＢＬ（Ｎ−１）に電圧ＶＢＬ１を印加する。
【０１２２】
従って、ビット線ＢＬ０、ＢＬ２、ＢＬ７、ＢＬ９、及びＢＬ（Ｎ−１）には電圧ＶＢＬ１が印加され、ビット線ＢＬ１、ＢＬ３、及びＢＬ８には電圧ＶＳＳが印加される。
【０１２３】
時刻ｔ３において、ＢＬプリチャージが完了する。
【０１２４】
１．３  本実施形態に係る効果について
本実施形態に係る構成であれば、半導体記憶装置の処理能力を向上できる。以下、本効果につき、説明する。
【０１２５】
書き込み動作において、ベリファイ後のプログラム、すなわち２回目以降のプログラムでは、ベリファイのスキャンが終了し、対象となる全てのセンスアンプユニットＳＡＵのラッチ回路ＳＤＬに次のプログラムデータが格納されてから、次のプログラムが開始される。すなわち、スキャン終了後に、次のプログラムのＢＬプリチャージが開始される場合が多い。
【０１２６】
これに対し、本実施形態に係る構成では、スキャンと並行して、次のプログラムのためのＢＬプリチャージを行う。そして、スキャンに応じて、ラッチ回路ＳＤＬのデータを順次に更新し、すなわち次のプログラムデータをラッチ回路ＳＤＬに順次に格納し、対応するビット線ＢＬに印加する電圧値を更新する。これにより、スキャンの終了を待つことなく、ＢＬプリチャージを開始できる。従って、ベリファイ後のプログラムにおいて、処理時間を短縮することができる。よって、半導体記憶装置の処理能力を向上することができる。
【０１２７】
更に、本実施形態に係る構成では、ＢＬプリチャージの時間を短くすることができる。以下、本効果につき説明する。
【０１２８】
例えばビット線ＢＬ毎に印加する電圧が異なる場合、より具体的には、ビット線ＢＬに電圧ＶＳＳが印加された状態から、ビット線ＢＬ（“０”）には電圧ＶＳＳを印加し、ビット線ＢＬ（“１”）にはプリチャージ電圧ＶＢＬ１を印加する場合、ビット線ＢＬ（“０”）とビット線ＢＬ（“１”）との間の寄生容量の影響により、ビット線ＢＬの充電容量が大きくなり、充電時間が長くなる。またビット線ＢＬ充電時のピーク電流が大きくなる。
【０１２９】
これに対し、本実施形態に係る構成では、ＢＬプリチャージを開始する際、全てのビット線ＢＬに同じ電圧（電圧ＶＢＬ１）を印加することができる。これにより寄生容量の影響を低減できるため、寄生容量分の充電が不要となり、充電時間を短くすることができる。よって、半導体記憶装置の処理能力を向上することができる。
【０１３０】
更に、ビット線ＢＬに電圧ＶＢＬ１を印加する際、充電容量が低減されるため、充電時のピーク電流の増加を抑制できる。よって、半導体記憶装置の消費電力を削減できる。
【０１３１】
２．第２実施形態  
次に、第２実施形態について説明する。第２実施形態は、第１実施形態と異なり、各ラッチ回路ＳＤＬが“０”データを保持した状態で、センスアンプ１３は、ＢＬプリチャージを開始する。以下、第１実施形態と異なる点についてのみ、説明する。
【０１３２】
２．１  書き込み動作の全体の流れについて  
まず、書き込み動作の全体の流れについて、図１１及び図１２を用いて説明する。
【０１３３】
図示するように、本実施形態において、ステップＳ１０〜Ｓ１７及びステップＳ２０〜Ｓ２４における動作は、第１実施形態の図４及び図５と同じである。
【０１３４】
本実施形態では、スキャン開始前にビット線ＢＬに電圧ＶＢＬ１が印加されないようにするため、ＢＬ放電開始（ステップＳ１７）後、制御回路２１は、全てのラッチ回路ＳＤＬに“０”データを格納する（ステップＳ１８’）。より具体的には、ビット線ＢＬの放電を開始した後、すなわちセンスアンプユニットＳＡＵとビット線ＢＬが電気的に遮断された後、プログラムのＢＬプリチャージが開始される前に、制御回路２１は全てのラッチ回路ＳＤＬに“０”データを格納する。
【０１３５】
次に、センスアンプ１３は、プログラムのため、ラッチ回路ＳＤＬのデータに応じて、ＢＬプリチャージを開始する（ステップＳ１９）。より具体的には、センスアンプ１３は、ラッチ回路ＳＤＬの“０”データに応じてビット線ＢＬに電圧ＶＳＳを印加する。
【０１３６】
２．２  書き込み動作における各配線の電圧について
次に、プログラムにおける各配線の電圧について、図１３を用いて説明する。図１３は、第１実施形態の図６と同様に、１回目のプログラム、１回目のベリファイ、及び２回目のプログラムにおける各配線の電圧変化を示している。また、図１３の例は、ＢＬプリチャージ開始後に、スキャンが開始される場合を示している。以下、第１実施形態の図６と異なる点についてのみ説明する。
【０１３７】
図示するように、時刻ｔ０〜ｔ９における各配線の電圧は、第１実施形態の図６と同じである。
【０１３８】
時刻ｔ９において、制御回路２１は、信号ＳＴＩを予め設定された期間“Ｈ”レベルにして、ラッチ回路ＳＤＬに“０”データを格納する。より具体的には、制御回路２１は、ＬＢＵＳプリチャージ回路３０において、信号ＬＰＣを“Ｈ”レベルにしてトランジスタ３１をオン状態にし、バスＬＢＵＳに“Ｈ”レベルの電圧ＶＨＬＢを印加する。この状態で、制御回路２１は、信号ＳＬＩを“Ｈ”レベルにしてトランジスタ６７をオフ状態にした後、信号ＳＴＩを“Ｈ”レベルにしてトランジスタ６１をオン状態にし、ノードＩＮＶ＿Ｓを“Ｈ”レベルにする。その後、制御回路２１は、信号ＬＰＣ、ＳＴＩ、及びＳＬＩを“Ｌ”レベルにする。これにより、ラッチ回路ＳＤＬは“０”データを保持する。
【０１３９】
時刻ｔ１０において、制御回路２１は、次にプログラムのためにＢＬプリチャージを開始する。本実施形態では、全てのラッチ回路ＳＤＬに“０”データが格納されているため、センスアンプ１３は、全ビット線ＢＬに電圧ＶＳＳを印加する。
【０１４０】
時刻ｔ１０〜ｔ１１の間、制御回路２１は、図７の説明と同様に、スキャン＜０＞〜スキャン＜７＞を順次、実行する。そして、スキャンに応じて、ラッチ回路ＳＤＬ＜０＞〜ＳＤＬ＜７＞の保持データを順次更新する。そして、ラッチ回路ＳＤＬの保持するデータが“０”データから“１”データに更新された場合、ノードＩＮＶ＿Ｓが“Ｈ”レベルから“Ｌ”レベルになる。このため、センスアンプユニットＳＡＵは、対応するビット線ＢＬに印加する電圧を電圧ＶＳＳから電圧ＶＢＬ１に変更する。
【０１４１】
時刻ｔ１１〜ｔ１６における各配線の電圧は、図６と同じである。
【０１４２】
２．３．１  スキャンの具体例について
次に、スキャンにおけるラッチ回路ＳＤＬ及びＡＤＬの保持データ、並びにビット線ＢＬ電圧の具体例について説明する。
【０１４３】
２．３．１  ラッチ回路が保持するデータの具体例について  
データの書き込み動作においてラッチ回路ＳＤＬ及びＡＤＬが保持するデータの具体例について、図１４及び図１５を用いて説明する。図１４及び図１５は、第１実施形態の図８及び図９と同様に、１回目のプログラム及びベリファイにおいてラッチ回路ＳＤＬ及びＡＤＬが保持するデータを示している。以下、図８及び図９と異なる点についてのみ説明する。
【０１４４】
図１４のテーブル（Ａ）及びテーブル（Ｂ）に示すように、ラッチ回路ＳＤＬ及びＡＤＬの保持データは、図８のテーブル（Ａ）及び（Ｂ）と同じである。
【０１４５】
テーブル（Ｃ）に示すように、ストローブの結果、ラッチ回路ＡＤＬのデータが更新される。テーブル（Ｃ）の例では、ラッチ回路ＳＤＬ１、ＳＤＬ２及びＳＤＬ８において、“１”データが“０”データに更新されている。また、制御回路２１は、全てのラッチ回路ＳＤＬに“０”データを格納する。その後、制御回路２１は、ビット線ＢＬの充放電と、スキャンを開始する。
【０１４６】
図１５のテーブル（Ｄ＿０）に示すように、まず制御回路２１は、スキャン＜０＞を実行する。テーブル（Ｄ＿０）の例では、スキャン＜０＞により、ラッチ回路ＳＤＬ０及びＳＤＬ８には“１”データが格納されている。
【０１４７】
次に、テーブル（Ｄ＿１）に示すように、制御回路２１は、スキャン＜１＞を実行する。テーブル（Ｄ＿１）の例では、スキャン＜１＞により、ラッチ回路ＳＤＬ１には“１”データが格納され、ラッチ回路ＳＤＬ９では“０”データが格納されている。
【０１４８】
次に、テーブル（Ｄ＿２）に示すように、制御回路２１は、スキャン＜２＞を実行する。テーブル（Ｄ＿２）の例では、スキャン＜２＞により、ラッチ回路ＳＤＬ２には“１”が格納されている。
【０１４９】
次に、テーブル（Ｄ＿３）に示すように、制御回路２１は、スキャン＜３＞を実行する。テーブル（Ｄ＿３）の例では、スキャン＜３＞により、ラッチ回路ＳＤＬ３には“０”データが格納されている。
【０１５０】
制御回路２１は、同様に図示せぬスキャン＜４＞〜スキャン＜６＞を実行する。その後、テーブル（Ｄ＿７）に示すように、制御回路２１は、スキャン＜７＞を実行する。テーブル（Ｄ＿７）の例では、スキャン＜７＞により、ラッチ回路ＳＤＬ７及びラッチ回路ＳＤＬ（Ｎ−１）には“１”データが格納されている。これによりスキャンが終了し、ビット線ＢＬ３、及びＢＬ９には電圧ＶＢＬ１が印加され、ビット線ＢＬ０〜ＢＬ２、ＢＬ７、ＢＬ８、及びＢＬ（Ｎ−１）には、電圧ＶＳＳが印加される。
【０１５１】
スキャン終了後、制御回路２１が２回目のプログラムを必要と判断した場合、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＰＧＭを印加する。
【０１５２】
２．３．２  スキャンによるビット線の電圧変動の具体例について  
次に、スキャンによるビット線ＢＬの電圧変動の具体例について、図１６を用いて説明する。図１６は、図１５におけるＢＬプリチャージ中の各ビット線ＢＬの電圧を示している。
【０１５３】
図１６に示すように、時刻ｔ１において、センスアンプ１３は、ＢＬプリチャージを開始する。すなわち、各ビット線ＢＬに、電圧ＶＳＳが印加される。
【０１５４】
時刻ｔ２＿０において、制御回路２１は、スキャン＜０＞を行う。その結果、ラッチ回路ＳＤＬ０及びＳＤＬ８は、“０”データから“１”データに更新される。よって、センスアンプユニットＳＡＵ０及びＳＡＵ８は、ビット線ＢＬ０及びＢＬ８に電圧ＶＢＬ１を印加する。
【０１５５】
時刻ｔ２＿１において、制御回路２１は、スキャン＜１＞を行う。その結果、ラッチ回路ＳＤＬ１は、“０”データから“１”データに更新され、ラッチ回路ＳＤＬ９は、“０”データを維持する。よって、センスアンプユニットＳＡＵ１は、ビット線ＢＬ１に電圧ＶＢＬ１を印加し、センスアンプユニットＳＡＵ９は、引き続きビット線ＢＬ９に電圧ＶＳＳを印加する。
【０１５６】
時刻ｔ２＿２において、制御回路２１は、スキャン＜２＞を行う。その結果、ラッチ回路ＳＤＬ２は、“０”データから“１”データに更新される。よって、センスアンプユニットＳＡＵ２は、ビット線ＢＬ２に電圧ＶＢＬ１を印加する。
【０１５７】
時刻ｔ２＿３において、制御回路２１は、スキャン＜３＞を行う。その結果、ラッチ回路ＳＤＬ３は、“０”データを維持する。よって、センスアンプユニットＳＡＵ３は、引き続きビット線ＢＬ３に電圧ＶＳＳを印加する。
【０１５８】
制御回路２１は、同様にスキャン＜４＞〜スキャン＜６＞を実行する。その後、時刻ｔ２＿７において、制御回路２１は、スキャン＜７＞を行う。その結果、ラッチ回路ＳＤＬ７及びＳＤＬ（Ｎ−１）は、“０”データから“１”データに更新される。よって、センスアンプユニットＳＡＵ７及びＳＡＵ（Ｎ−１）は、ビット線ＢＬ７及びビット線ＢＬ（Ｎ−１）に電圧ＶＢＬ１を印加する。
【０１５９】
従って、ビット線ＢＬ０〜ＢＬ２、ＢＬ７、ＢＬ８、及びＢＬ（Ｎ−１）には電圧ＶＢＬ１が印加され、ビット線ＢＬ３及びＢＬ９には電圧ＶＳＳが印加される。
【０１６０】
時刻ｔ３において、ＢＬプリチャージが完了する。
【０１６１】
２．４  本実施形態に係る効果について
本実施形態に係る構成であれば、第１実施形態と同様の効果を得ることができる。
【０１６２】
更に本実施形態に係る構成では、スキャンによりラッチ回路ＳＤＬのデータが“０”データから“１”データに更新されてからビット線ＢＬにプリチャージ電圧ＶＢＬ１が印加される。このため、ビット線ＢＬへの電圧ＶＢＬ１の充電開始のタイミングが、スキャンにより異なる。よって、ＢＬプリチャージ時のピーク電流を低減することができる。
【０１６３】
３．第３実施形態
次に、第３実施形態について説明する。第３実施形態は、第１実施形態において、ビット線ＢＬの放電を行わずに、２回目のプログラムのＢＬプリチャージを開始するものである。以下、第１実施形態と異なる点についてのみ説明する。
【０１６４】
３．１  書き込み動作における各配線の電圧について
プログラムにおける各配線の電圧について、図１７を用いて説明する。図１７は、第１実施形態の図６と同様に、１回目のプログラム、１回目のベリファイ、及び２回目のプログラムにおける各配線の電圧変化を示している。また、図１７の例は、ＢＬプリチャージ開始前に、スキャンが開始される場合を示している。以下、第１実施形態の図６と異なる点についてのみ説明する。
【０１６５】
図示するように、時刻ｔ０〜ｔ９における各配線の電圧は、第１実施形態の図６と同じである。
【０１６６】
時刻ｔ９において、ビット線ＢＬは放電されずに、電圧ＶＢＬ２を維持している。例えば、書き込み対象となるＮＡＮＤストリング１６において、選択トランジスタＳＴ２をオフ状態にしてから、選択トランジスタＳＴ１及び、センスアンプユニットＳＡＵの信号ＢＬＳが入力されるトランジスタ４０をオフ状態にする。これによりＮＡＮＤストリング１６のチャネル及びビット線ＢＬはフローティング状態となり、電圧ＶＢＬ２を維持する。
【０１６７】
時刻ｔ９〜ｔ１０の間に、制御回路２１は、スキャンを開始し、時刻ｔ１０において、ＢＬプリチャージを開始する。より具体的には、例えば時刻ｔ９〜ｔ１０間に、制御回路２１は、スキャン＜０＞を実行し、ラッチ回路ＳＤＬ＜０＞のデータを更新する。このとき、ラッチ回路ＳＤＬ＜１＞〜ＳＤＬ＜７＞には“１”データが格納されている。この状態で、制御回路２１は、ＢＬプリチャージを開始する。よって、ＢＬプリチャージ開始時には、ラッチ回路ＳＤＬ＜０＞に対応するビット線ＢＬにはラッチ回路ＳＤＬ＜０＞のデータに応じて電圧ＶＳＳあるいは電圧ＶＢＬ１が印加され、ラッチ回路ＳＤＬ＜１＞〜ＳＤＬ＜７＞に対応するビット線ＢＬには電圧ＶＢＬ１が印加される。そして時刻ｔ１０〜ｔ１１の間にスキャン＜１＞〜スキャン＜７＞が実行される。
【０１６８】
時刻ｔ１１〜ｔ１６における各配線の電圧は、図６と同じである。
【０１６９】
３．２  本実施形態に係る効果について
本実施形態に係る構成であれば、第１実施形態と同様の効果を得ることができる。
【０１７０】
更に、本実施形態に係る構成では、ビット線ＢＬの放電を行わずにＢＬプリチャージを開始できる。このため、ビット線ＢＬの放電時間を省略できるため、処理時間を短縮することができる。よって、半導体記憶装置の処理能力を向上することができる。
【０１７１】
更に、ＢＬプリチャージにおいて、ビット線ＢＬに電圧ＶＢＬ１を印加する場合、電圧ＶＢＬ２（＞ＶＳＳ）から昇圧を開始すれば良いため、ビット線ＢＬの充電時間を短縮できる。更には、ＢＬプリチャージ時のピーク電流を低減することができる。
【０１７２】
なお、本実施形態は、第２実施形態と同様に、プログラムのためのＢＬプリチャージ開始前に全てのラッチ回路ＳＤＬに“０”データを格納しても良い。
【０１７３】
４．第４実施形態
次に、第４実施形態について説明する。第４実施形態は、“０”プログラムにおいて、２つのプログラム条件を適用する場合について説明する。以下、第１乃至第３実施形態と異なる点についてのみ説明する。
【０１７４】
４．１  センスアンプユニットの構成について
まず、センスアンプユニットＳＡＵの構成について、図１８を用いて説明する。
【０１７５】
図１８に示すように、本実施形態におけるセンスアンプユニットＳＡＵは、３つのラッチ回路ＳＤＬ、ＡＤＬ、ＢＤＬを含む。センスアンプ部ＳＡ、ＬＢＵＳプリチャージ回路３０、ＢＵＳスイッチ回路３２、並びにラッチ回路ＳＤＬ及びＡＤＬの回路構成は、図３と同じである。ラッチ回路ＢＤＬは、ラッチ回路ＳＤＬ及びＡＤＬと同様の回路構成を有する。よって説明は省略するが、各トランジスタの参照番号及び信号名は、図１８に示すラッチ回路ＳＤＬ及びＡＤＬのものとは区別して以下説明する。ラッチ回路ＢＤＬのトランジスタ８０〜８７は、それぞれラッチ回路ＳＤＬのトランジスタ６０〜６７に相当する。
【０１７６】
４．２  書き込み動作について  
次に、データの書き込み動作について説明する。本実施形態では、“０”プログラムにおいて、目標とするベリファイレベルとメモリセルトランジスタＭＴの閾値電圧との差に応じて、閾値電圧の変動量が比較的大きい第１プログラム条件、あるいは第１プログラム条件よりも閾値電圧の変動量が小さい第２プログラム条件のいずれかが適用される。例えば、メモリセルトランジスタＭＴの閾値電圧がベリファイレベルより十分に低く、１回のプログラムでは目標とするベリファイレベルに達しない場合、閾値電圧の変動量が比較的大きい第１プログラム条件が適用される。また、メモリセルトランジスタＭＴの閾値電圧が目標とするベリファイレベルに比較的近く、第１プログラム条件を適用すると閾値電圧がベリファイレベルを大きく超えてしまう場合、第２プログラム条件が適用される。
【０１７７】
より具体的には、第１プログラム条件と第２プログラム条件とは、ビット線ＢＬの電圧が異なる。例えば、第１プログラム条件に対応するビット線ＢＬに電圧ＶＳＳが印加される。そして、第２プログラム条件に対応するビット線ＢＬに印加される電圧をＶＱＰＷとする。すると、電圧ＶＳＳ、電圧ＶＱＰＷ、及び電圧ＶＢＬ１は、ＶＢＬ１＞ＶＱＰＷ＞ＶＳＳの関係にある。
【０１７８】
以下、“０”プログラムにおいて、第１プログラム条件を適用するビット線をＢＬ（“０”）、第２プログラム条件を適用するビット線をＢＬ（“ＱＰＷ”）と表記する。
【０１７９】
また、本実施形態では、プログラムの後、ターゲットレベルが異なる第１及び第２ベリファイを実行する。第１ベリファイでは、ターゲットレベルとしてベリファイレベルよりも低い第１ベリファイ電圧（以下、「電圧ＶＬ」とする）が設定され、第２ベリファイでは、例えばベリファイレベルと同じ第２ベリファイ電圧（以下、「電圧ＶＨ」とする）が設定される。第１ベリファイをフェイルした場合（閾値電圧＜ＶＬ）、次のプログラムにおいては、第１プログラム条件が適用される。第１ベリファイをパスし、第２ベリファイをフェイルした場合（ＶＬ≦閾値電圧＜ＶＨ）、次のプログラムにおいては、第２プログラム条件が適用される。第２ベリファイをパスした場合（ＶＨ≦閾値電圧）、その後のプログラムにおいては、書き込み禁止とされる。
【０１８０】
４．３  書き込み動作の全体の流れについて  
まず、書き込み動作の全体の流れについて、図１９及び図２０を用いて説明する。図１９及び図２０は、書き込み動作の流れを示すフローチャートである。
【０１８１】
図示するように、まず、制御回路２１は、例えば外部コントローラから受信したプログラムデータを、ラッチ回路ＸＤＬに格納する（ステップＳ１０）。
【０１８２】
次に、制御回路２１は、ラッチ回路ＸＤＬが保持するプログラムデータの反転データを、ラッチ回路ＡＤＬ及びＢＤＬに格納する（ステップＳ１１’）。更に制御回路２１は、ラッチ回路ＡＤＬ（あるいはラッチ回路ＢＤＬ）が保持するデータの反転データ、すなわちプログラムデータを、ラッチ回路ＳＤＬに格納する（ステップＳ１２）。
【０１８３】
次に、センスアンプ１３は、プログラムのため、ラッチ回路ＳＤＬのデータに応じて、ＢＬプリチャージを開始する（ステップＳ１３）。１回目のプログラムでは、第２プログラム条件は適用されないため、“０”データ、すなわち“０”プログラムに対応してビット線ＢＬ（“０”）に電圧ＶＳＳが印加され、“１”データ、すなわち“１”プログラムに対応してビット線ＢＬ（“１”）に電圧ＶＢＬが印加される（ステップＳ１１）
次に、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＰＧＭを印加し、対象となるメモリセルトランジスタＭＴにデータを書き込む（ステップＳ１４）。
【０１８４】
次に、制御回路２１は、第１ベリファイを開始し、ビット線ＢＬを充電する（ステップＳ３０）。この際、各センスアンプユニットＳＡＵのラッチ回路ＳＤＬには、例えば“１”データが格納される。
【０１８５】
次に、制御回路２１は、第１ストローブを行い、ラッチ回路ＢＤＬを更新する（ステップＳ３１）。より具体的には、“１”プログラムに対応するラッチ回路ＢＤＬでは、“０”データが維持される。“０”プログラムにおいて、閾値電圧が電圧ＶＴ以上のメモリセルトランジスタＭＴ、すなわち第１ベリファイをパスしたメモリセルトランジスタＭＴに対応するラッチ回路ＢＤＬでは、“１”データが“０”データに更新される。“０”プログラムにおいて、閾値電圧が電圧ＶＬ未満のメモリセルトランジスタＭＴ、すなわち第１ベリファイをフェイルしたメモリセルトランジスタＭＴに対応するラッチ回路ＢＤＬでは、“１”データが維持される。
【０１８６】
次に、制御回路２１は、第２ベリファイを開始し、ビット線ＢＬを充電する（ステップＳ３２）。
【０１８７】
次に、制御回路２１は、第２ストローブを行い、ラッチ回路ＡＤＬを更新する（ステップＳ３３）。より具体的には、“１”プログラムに対応するラッチ回路ＡＤＬでは、“０”データが維持される。“０”プログラムにおいて、閾値電圧が電圧ＶＨ以上のメモリセルトランジスタＭＴ、すなわち第２ベリファイをパスしたメモリセルトランジスタＭＴに対応するラッチ回路ＡＤＬでは、“１”データが“０”データに更新される。“０”プログラムにおいて、閾値電圧が電圧ＶＨ未満のメモリセルトランジスタＭＴ、すなわち第２ベリファイをフェイルしたメモリセルトランジスタＭＴに対応するラッチ回路ＡＤＬでは、“１”データが維持される。
【０１８８】
次に、制御回路２１は、ビット線ＢＬの放電を開始する（ステップＳ１７）。
【０１８９】
次に、制御回路２１は、第２実施形態と同様に、スキャン開始前にビット線ＢＬに電圧ＶＢＬ１が印加されないようにするために、全てのラッチ回路ＳＤＬに“０”データを格納する（ステップＳ１８’）。
【０１９０】
次に、センスアンプ１３は、プログラムのため、ラッチ回路ＳＤＬのデータに応じて、ＢＬプリチャージを開始する（ステップＳ１９）。より具体的には、センスアンプ１３は、ラッチ回路ＳＤＬの“０”データに応じてビット線ＢＬに電圧ＶＳＳを印加する。
【０１９１】
次に、制御回路２１は、スキャンを開始する。スキャン＜ｘ＞では、ラッチ回路ＡＤＬ＜ｘ＞のデータをラッチ回路ＳＤＬ＜ｘ＞に転送する（ステップＳ２０）。
【０１９２】
制御回路２１は、第１及び第２実施形態と同様に、ステップＳ２０〜２２において、ｘ＝７に達するまでスキャンを繰り返す。
【０１９３】
スキャンが終了（ステップＳ２１＿Ｙｅｓ）すると、制御回路２１は、第２ベリファイの結果からベリファイ判定を行う（ステップＳ２３’）。第２ベリファイをパスした場合（ステップＳ２３’＿Ｙｅｓ）、制御回路２１は、書き込み動作を完了させる。
【０１９４】
他方で、第２ベリファイをフェイルした場合（ステップＳ２３’＿Ｎｏ）、制御回路２１はプログラムループ回数を確認する（ステップＳ２４）。そして、制御回路２１は、プログラムループ回数が予め設定された規定回数に達している場合（ステップＳ２４＿Ｙｅｓ）、書き込み動作を終了し、例えば外部コントローラに書き込み動作が正常に終了しなかった旨を通知する。また、プログラムループ回数が規定回数に達していない場合（ステップＳ２４＿Ｎｏ）、制御回路２１は、次のプログラムを実行する。
【０１９５】
まず、制御回路２１は、ラッチ回路ＳＤＬにラッチ回路ＢＤＬの反転データを転送する（ステップＳ３４）。
【０１９６】
次に、制御回路２１は、ラッチ回路ＳＤＬのデータに応じて、ビット線ＢＬ（“ＱＰＷ”）に電圧ＶＱＰＷを印加し、ビット線ＢＬ（“０”）に電圧ＶＳＳを印加する。その後、ステップＳ１４に戻り、選択ワード線ＷＬに電圧ＶＰＧＭを印加する。
【０１９７】
４．４  書き込み動作における各配線の電圧について
次に、プログラムにおける各配線の電圧について、図２１を用いて説明する。図２１は、第１実施形態の図６、第２実施形態の図１３、及び第３実施形態の１６と同様に、１回目のプログラム、１回目のベリファイ、及び２回目のプログラムにおける各配線の電圧変化を示している。また、図２１の例は、ＢＬプリチャージ開始後に、スキャンが開始される場合を示している。更に、本実施形態においては、第１及び第２ベリファイにおける読み出し電圧ＶＣＧＲＶがそれぞれ異なる場合について説明する。例えばロウデコーダ１２は、第１ベリファイにおいて選択ワード線ＷＬに電圧ＶＣＧＲＶ１（＝ＶＬ）を印加し、第２ベリファイにおいて、選択ワード線ＷＬに電圧ＶＣＧＲＶ２（＝ＶＨ）を印加する。なお、第１ベリファイと第２ベリファイにおける電圧ＶＣＧＲＶは、同じ電圧であっても良い。この場合、第１ベリファイにおけるセンス期間すなわち、信号ＸＸＬを“Ｈ”レベルにしてビット線ＢＬをセンスする期間が、第１ベリファイと第２ベリファイとで異なっていても良い。以下、第１乃至第３実施形態と異なる点についてのみ説明する。
【０１９８】
図示するように、時刻ｔ０〜ｔ６の間に１回目のプログラムが実行され、時刻ｔ６〜ｔ１３の間に１回目のベリファイが実行され、時刻ｔ１１〜ｔ１９の間に２回目のプログラムが実行される。
【０１９９】
時刻ｔ０〜ｔ７における各配線の電圧は、図６、図１３、及び図１７と同じである。
【０２００】
時刻ｔ７において、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＬに対応した電圧ＶＣＧＲＶ１を印加する。
【０２０１】
時刻ｔ８において、制御回路２１は、信号ＳＴＢを“Ｈ”レベルにしてトランジスタ４８をオン状態にし、第１ベリファイのデータをストローブする。このとき制御回路２１は、例えばラッチ回路ＢＤＬのデータを更新する。より具体的には、例えば制御回路２１は、トランジスタ４８をオンにした状態で、信号ＢＬＬを“Ｈ”レベルにしてトランジスタ８６をオフ状態にし、信号ＢＴＬを“Ｈ”レベルにしてトランジスタ８０をオン状態にする。すると、トランジスタ４７がオフ状態の場合（オンセルの場合）、ノードＬＡＴ＿Ｂのデータは維持される。他方でトランジスタ４７がオン状態の場合（オフセルの場合）、ノードＬＡＴ＿Ｂは“Ｌ”レベルとなる。すなわちラッチ回路ＢＤＬのデータは、“０”データに更新される。１回目のプログラムで“０”プログラムを実行したセンスアンプユニットＳＡＵでは、ラッチ回路ＢＤＬに“１”データが格納されている。よって、“０”プログラムにおいて、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＬ未満（オンセル）の場合、ラッチ回路ＢＤＬは“１”データを保持し、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＬ以上（オフセル）の場合、ラッチ回路ＡＢＬは、“０”データを保持する。
【０２０２】
時刻ｔ９において、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＨに対応した電圧ＶＣＧＲＶ２（＞ＶＣＧＲＶ１）を印加する。
【０２０３】
時刻ｔ１０において、制御回路２１は、信号ＳＴＢを“Ｈ”レベルにしてトランジスタ４８をオン状態にし、第２ベリファイのデータをストローブする。このとき制御回路２１は、例えばラッチ回路ＡＤＬのデータを更新する。
【０２０４】
時刻ｔ１１〜１４において、第２実施形態の図１３の時刻ｔ９〜ｔ１２と同様に、ビット線ＢＬの充放電とスキャンを実行する。スキャンの結果、第１プログラム条件に対応するビット線ＢＬ（“１”）には、電圧ＶＢＬ１が印加され、第２プログラム条件に対応するビット線ＢＬ（“ＱＰＷ”）及び“１”プログラムに対応するビット線ＢＬ（“１”）には、電圧ＶＳＳが印加される。
【０２０５】
時刻ｔ１４において、ロウデコーダ１２は、選択ゲート線ＳＧＤに電圧ＶＳＧＤ２を印加する。また、制御回路２１は、信号ＢＬＣの“Ｈ”レベルの電圧を“ＶＱＰＷ＋Ｖｔｈ”とする。ＶＳＧＤ２とＶＰＱＷとは、“ＶＳＧＤ２−Ｖｔｈｓｇ”＞ＶＱＰＷの関係にある。この結果、選択トランジスタＳＴ１及びセンスアンプユニットＳＡＵのトランジスタ４１はカットオフ状態となり、ビット線ＢＬ（“１”）はフローティング状態とされる。
【０２０６】
時刻ｔ１５において、制御回路２１は、ラッチ回路ＢＤＬの反転データをラッチ回路ＳＤＬに転送する。この結果、第１プログラム条件に対応するラッチ回路ＳＤＬでは、“０”データが維持され、第２プログラム条件に対応するラッチ回路ＳＤＬでは、“１”データが“０”データに更新される。“１”プログラムに対応するラッチ回路ＳＤＬには、“１”データが格納される。この結果、ビット線ＢＬ（“ＱＰＷ”）には電圧ＶＱＰＷが印加され、ビット線ＢＬ（“０”）には電圧ＶＳＳが印加される。なお、ビット線ＢＬ（“１”）はフローティング状態を維持される。
【０２０７】
時刻ｔ１６において、ロウデコーダ１２は、選択ブロックＢＬＫのワード線ＷＬに電圧ＶＰＡＳＳを印加する。
【０２０８】
時刻ｔ１７において、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＰＧＭを印加する。これにより、対象となるメモリセルトランジスタＭＴにデータが書き込まれる。このとき、ビット線ＢＬ（“ＱＰＷ”）に対応するＮＡＮＤストリング１６では、選択トランジスタＳＴ１がオン状態となる。そして、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴのチャネル電位はＶＱＰＷ（＞ＶＳＳ）となる。よって、制御ゲートとチャネルとの間の電位差は、チャネル電位がＶＳＳの場合よりも小さくなる。その結果、電荷蓄積層に注入される電子量は、ビット線ＢＬ（“０”）に対応するメモリセルトランジスタＭＴよりも少なくなり、メモリセルトランジスタＭＴの閾値電圧の変動量も少なくなる。
【０２０９】
時刻ｔ１８〜１９の間、制御回路２１はリカバリ処理を行い、第２プログラムを終了する。
【０２１０】
４．５  スキャンの具体例について
次に、スキャンにおけるラッチ回路ＳＤＬ、ＡＤＬ、及びＢＤＬの保持データ、並びに及びビット線ＢＬ電圧の具体例について説明する。
【０２１１】
４．５．１  ラッチ回路が保持するデータの具体例について  
データの書き込み動作においてラッチ回路ＳＤＬ、ＡＤＬ、及びＢＤＬが保持するデータの具体例について、図２２乃至図２４を用いて説明する。図２２乃至図２４は、１回目のプログラム及びベリファイにおいてラッチ回路ＡＤＬ、ＢＤＬ、及びＳＤＬが保持するデータを示している。以下、第１及び第２実施形態と異なる点についてのみ説明する。
【０２１２】
まず、図２２のテーブル（Ａ）に示すように、制御回路２１は、ラッチ回路ＡＤＬ及びＢＤＬに、ラッチ回路ＸＤＬの反転データを格納し、ラッチ回路ＳＤＬに、ラッチ回路ＡＤＬ（あるいはラッチ回路ＢＤＬ）の反転データ（プログラムデータ）を格納する。テーブル（Ａ）の例では、ラッチ回路ＳＤＬ１、ＳＤＬ７、ＳＤＬ（Ｎ−１）に“１”データが格納され、ラッチ回路ＳＤＬ１、ＳＤＬ２、ＳＤＬ３、ＳＤＬ８、及びＳＤＬ９に“０”データが格納される。その後、制御回路２１は、ラッチ回路ＳＤＬのデータに応じて１回目のプログラムを実行する。
【０２１３】
次に、テーブル（Ｂ）に示すように、制御回路２１は、全てのラッチ回路ＳＤＬに“１”データを格納し、第１ベリファイを開始する。
【０２１４】
次に、テーブル（Ｃ）に示すように、第１ベリファイのストローブの結果、ラッチ回路ＢＤＬのデータが更新される。具体的には、“０”プログラムのオフセル（第１ベリファイをパスしたメモリセルトランジスタＭＴ）に対応するラッチ回路ＢＤＬでは、“１”データが“０”データに更新される。他方で、他のラッチ回路は、保持しているデータを維持する。テーブル（Ｃ）の例では、ラッチ回路ＳＤＬ１、ＳＤＬ２、及びＳＤＬ８において、“１”データが“０”データに更新されている。その後、制御回路２１は、第２ベリファイを開始する。
【０２１５】
次に、テーブル（Ｄ）に示すように、第２ベリファイのストローブの結果、ラッチ回路ＡＤＬのデータが更新される。具体的には、“０”プログラムのオフセル（第２ベリファイをパスしたメモリセルトランジスタＭＴ）に対応するラッチ回路ＡＤＬでは、“１”データが“０”データに更新される。他方で、他のラッチ回路は、保持しているデータを維持する。テーブル（Ｄ）の例では、ラッチ回路ＳＤＬ１において、“１”データが“０”データに更新されている。その後、ビット線ＢＬの充放電が開始され、全てのラッチ回路ＳＤＬに一旦“０”データが格納される。その後、制御回路２１は、スキャンを開始する。
【０２１６】
図２３のテーブル（Ｅ＿０）に示すように、まず制御回路２１は、スキャン＜０＞を実行する。すなわち、制御回路２１は、ラッチ回路ＳＤＬ＜０＞に、ラッチ回路ＡＤＬ＜０＞の反転データを格納する。そして、センスアンプユニットＳＡＵ＜０＞は、更新されたラッチ回路ＳＤＬ＜０＞の保持データに基づいて、ビット線ＢＬに電圧を印加する。テーブル（Ｅ＿０）の例では、スキャン＜０＞により、ラッチ回路ＳＤＬ０には“１”データが格納され、ラッチ回路ＳＤＬ８には“０”データが格納されている。
【０２１７】
次に、テーブル（Ｅ＿１）に示すように、制御回路２１は、スキャン＜１＞を実行する。テーブル（Ｅ＿１）の例では、スキャン＜１＞により、ラッチ回路ＳＤＬ１には“１”データが格納され、ラッチ回路ＳＤＬ９では“０”データが格納されている。
【０２１８】
次に、テーブル（Ｅ＿２）に示すように、制御回路２１は、スキャン＜２＞を実行する。テーブル（Ｅ＿２）の例では、スキャン＜２＞により、ラッチ回路ＳＤＬ２には“０”が格納されている。
【０２１９】
次に、テーブル（Ｅ＿３）に示すように、制御回路２１は、スキャン＜３＞を実行する。テーブル（Ｅ＿３）の例では、スキャン＜３＞により、ラッチ回路ＳＤＬ３には“０”データが格納されている。
【０２２０】
制御回路２１は、同様に図示せぬスキャン＜４＞〜スキャン＜６＞を実行する。その後、テーブル（Ｅ＿７）に示すように、制御回路２１は、スキャン＜７＞を実行する。テーブル（Ｅ＿７）の例では、スキャン＜７＞により、ラッチ回路ＳＤＬ７及びラッチ回路ＳＤＬ（Ｎ−１）には“１”データが格納されている。これによりスキャンが終了し、ビット線ＢＬ２、ＢＬ３、ＢＬ８、及びＢＬ９には電圧ＶＢＬ１が印加され、ビット線ＢＬ０、ＢＬ１、ＢＬ７、及びＢＬ（Ｎ−１）には、電圧ＶＳＳが印加される。
【０２２１】
スキャン終了後、制御回路２１が２回目のプログラムを必要と判断した場合、図２４のテーブル（Ｇ）に示すように、制御回路２１は、ラッチ回路ＳＤＬにラッチ回路ＢＤＬの反転データを転送する。テーブル（Ｇ）の例では、ラッチ回路ＳＤＬ１〜ＳＤＬ３、ＳＤＬ７、ＳＤＬ８、ＳＤＬ（Ｎ−１）には“１”データが格納され、ラッチ回路ＳＤＬ３及びＳＤＬ９には“０”データが格納される。この結果、ビット線ＢＬ３及びＢＬ８には電圧ＶＱＰＷが印加され、ビット線ＢＬ３及びＢＬ９には電圧ＶＳＳが印加される。その後、ロウデコーダ１２は、選択ワード線ＷＬに電圧ＶＰＧＭを印加して２回目のプログラムが実行される。
【０２２２】
４．５．２  スキャンによるビット線の電圧変動の具体例について  
次に、スキャンによるビット線ＢＬの電圧変動の具体例について、図２５を用いて説明する。図２５は、図２２乃至図２４におけるＢＬプリチャージ中の各ビット線ＢＬの電圧を示している。
【０２２３】
図２５に示すように、時刻ｔ１において、センスアンプ１３は、ＢＬプリチャージを開始する。すなわち、各ビット線ＢＬに、電圧ＶＳＳが印加される。
【０２２４】
時刻ｔ２＿０において、制御回路２１は、スキャン＜０＞を行う。その結果、ラッチ回路ＳＤＬ０は、“０”データから”１”データに更新され、ラッチ回路ＳＤＬ８は、“０”データを維持する。よって、センスアンプユニットＳＡＵ０は、ビット線ＢＬ０に電圧ＶＢＬ１を印加し、センスアンプユニットＳＡＵ８は、引き続きビット線ＢＬ８に電圧ＶＳＳを印加する。
【０２２５】
時刻ｔ２＿１において、制御回路２１は、スキャン＜１＞を行う。その結果、ラッチ回路ＳＤＬ１は、“０”データから“１”データに更新され、ラッチ回路ＳＤＬ９は、“０”データを維持する。よって、センスアンプユニットＳＡＵ１は、ビット線ＢＬ１に電圧ＶＢＬ１を印加し、センスアンプユニットＳＡＵ９は、引き続きビット線ＢＬ９に電圧ＶＳＳを印加する。
【０２２６】
時刻ｔ２＿２において、制御回路２１は、スキャン＜２＞を行う。その結果、ラッチ回路ＳＤＬ２は、“０”データを維持する。よって、センスアンプユニットＳＡＵ２は、引き続きビット線ＢＬ２に電圧ＶＳＳを印加する。
【０２２７】
時刻ｔ２＿３において、制御回路２１は、スキャン＜３＞を行う。その結果、ラッチ回路ＳＤＬ３は、“０”データを維持する。よって、センスアンプユニットＳＡＵ３は、引き続きビット線ＢＬ３に電圧ＶＳＳを印加する。
【０２２８】
制御回路２１は、同様にスキャン＜４＞〜スキャン＜６＞を実行する。その後、時刻ｔ２＿７において、制御回路２１は、スキャン＜７＞を行う。その結果、ラッチ回路ＳＤＬ７及びＳＤＬ（Ｎ−１）は、“０”データから”１”データに更新される。よって、センスアンプユニットＳＡＵ７及びＳＡＵ（Ｎ−１）は、ビット線ＢＬ７及びビット線ＢＬ（Ｎ−１）に電圧ＶＢＬ１を印加する。
【０２２９】
従って、ビット線ＢＬ０、ＢＬ２、ＢＬ７、ＢＬ９、及びＢＬ（Ｎ−１）には電圧ＶＢＬ１が印加され、ビット線ＢＬ１、ＢＬ３、及びＢＬ８には電圧ＶＳＳが印加される。
【０２３０】
時刻ｔ３において、ＢＬ（“ＱＰＷ”）に電圧ＶＱＰＷの充電が開始される。具体的には、ラッチ回路ＳＤＬ３及びＳＤＬ８は、“０”データから”１”データに更新される。その結果、センスアンプユニットＳＡＵ３及びＳＡＵ８は、ビット線ＢＬ３及びＢＬ８に電圧ＶＱＰＷを印加する。
【０２３１】
時刻ｔ４において、ＢＬプリチャージが終了する。例えばロウデコーダ１２は、選択ストリングユニットＳＵの選択及び非選択ワード線ＷＬに電圧ＶＰＡＳＳを印加する。
【０２３２】
４．６  本実施形態に係る効果について
本実施形態に係る構成であれば、第１乃至第３実施形態と同様の効果を得ることができる。
【０２３３】
なお、本実施形態は、第１実施形態と同様に、プログラムのためのＢＬプリチャージ前に全てのラッチ回路ＳＤＬに”１”データを格納しても良く、第３実施形態と同様に、ビット線ＢＬの放電を行わなくても良い。
【０２３４】
５．変形例等  
上記実施形態に係る半導体記憶装置は、メモリセル(MT@図1)と、メモリセルに接続されたビット線(BL@図1)と、ビット線に接続され、第１ラッチ回路(SDL@図3)を含むセンスアンプ(SAU@図3)とを備える。書き込み動作は、プログラムとベリファイとを繰り返すプログラムループを含む。プログラムは、第１ラッチ回路のデータに基づいてビット線の充放電(BLプリチャージ)を行う第１動作を含む。ベリファイは、ベリファイ結果に基づいて第１ラッチ回路のデータを更新する第２動作を含む。第１動作と第２動作とが並列に実行される。
【０２３５】
上記実施形態を適用することにより、処理能力を向上できる半導体記憶装置を提供できる。なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。
【０２３６】
例えば、上記実施形態において、電圧センス方式のセンスアンプを用いても良い。
【０２３７】
更に、上記実施形態において、ラッチ回路ＡＤＬあるいはラッチ回路ＢＤＬにプログラムデータの反転データを格納する場合について説明したが、プログラムデータをそのまま格納しても良い。この場合、スキャンにおいて、ラッチ回路ＡＤＬのデータが、ラッチ回路ＳＤＬに転送される。
【０２３８】
更に、上記実施形態において、スキャンには、プログラムのＢＬプリチャージ中にセンスアンプユニットＳＡＵにて行われる各種演算処理が含まれていても良い。例えば、センスアンプユニットＳＡＵがラッチ回路ＳＤＬ、ＡＤＬ、及びＢＤＬを含む場合、ラッチ回路ＡＤＬ及びＢＤＬのデータを用いた演算処理がスキャンに含まれても良い。
【０２３９】
より具体的には、例えばメモリセルトランジスタＭＴが複数ビットのデータを保持可能であり、センスアンプユニットが複数ビットのデータを格納するための複数のラッチ回路を含んでいる場合、これらの複数のラッチ回路のデータを用いた演算処理がスキャンに含まれても良い。また、例えば第４実施形態において３つ以上のプログラム条件を適用する場合、メモリセルトランジスタＭＴに応じて電圧ＶＰＧＭの印加時間が異なる場合、あるいはメモリセルトランジスタＭＴに応じて電圧ＶＱＰＷの電圧が異なる場合における演算処理がスキャンに含まれていても良い。
【０２４０】
更に、上記実施形態は、三次元積層型ＮＡＮＤ型フラッシュメモリにも適用できる。更には、ＮＡＮＤ型フラッシュメモリに限定されず、データを保持可能な記憶素子を用いた半導体記憶装置においても適用できる。
【０２４１】
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【０２４２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことが出来る。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【０２４３】
なお、本発明に関する各実施形態において、以下の通りであっても良い。例えばメモリセルトランジスタＭＴが２ビット（４値）のデータを保持可能であり、４値のいずれかを保持している際の閾値レベルを低い方からＥレベル（消去レベル）、Ａレベル、Ｂレベル、及びＣレベルとしたとき、
（１）読み出し動作では、Ａレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば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の制御電極が形成されている。ここで仕事関数調整用の材料はＴａＯなどの金属酸化膜、ＴａＮなどの金属窒化膜である。制御電極にはＷなどを用いることができる。
【０２５６】
また、メモリセル間にはエアギャップを形成することができる。
【符号の説明】
【０２５７】
１…ＮＡＮＤ型フラッシュメモリ、１０…コア部、１１…メモリセルアレイ、１２…ロウデコーダ、１３…センスアンプ、１４…データラッチ、１５…ソース線ドライバ、１６…ＮＡＮＤストリング、２０…周辺回路、２１…制御回路、２２…電圧発生回路、３０…ＬＢＵＳプリチャージ回路、３１、３３、４０〜４５、４７〜５１、６０〜６７、７０〜７７、８０〜８７…トランジスタ、３２…ＢＵＳスイッチ回路、５２…キャパシタ素子。
【図１】
2018041522.tif 000003
【図２】
2018041522.tif 000004
【図３】
2018041522.tif 000005
【図４】
2018041522.tif 000006
【図５】
2018041522.tif 000007
【図６】
2018041522.tif 000008
【図７】
2018041522.tif 000009
【図８】
2018041522.tif 000010
【図９】
2018041522.tif 000011
【図１０】
2018041522.tif 000012
【図１１】
2018041522.tif 000013
【図１２】
2018041522.tif 000014
【図１３】
2018041522.tif 000015
【図１４】
2018041522.tif 000016
【図１５】
2018041522.tif 000017
【図１６】
2018041522.tif 000018
【図１７】
2018041522.tif 000019
【図１８】
2018041522.tif 000020
【図１９】
2018041522.tif 000021
【図２０】
2018041522.tif 000022
【図２１】
2018041522.tif 000023
【図２２】
2018041522.tif 000024
【図２３】
2018041522.tif 000025
【図２４】
2018041522.tif 000026
【図２５】
2018041522.tif 000027