(57)【要約】【課題】ベリファイリードにおけるデータ判定を正確に行う。【解決手段】ページバッファP/Bは、フリップフロップ接続される第１及び第２インバータMP3,MP4,MN11,MN12からなるラッチ回路LATCHと、ラッチ回路LATCHの第１ノードN1と書き込み回路の間に接続される第１トランジスタMN7と、ラッチ回路LATCHの第２ノードN2と接地点の間に接続され、ベリファイリードによりメモリセルから読み出されたデータがゲートに入力される第２トランジスタMN5とを有する。第１インバータMP3,MN11の入力ノードは、第１ノードN1に接続され、第１インバータMP3,MN11の出力ノードは、第２ノードN2に接続され、第１インバータMP3,MN11と電源端子Vddの間には、データをページバッファP/Bに入力するときにオフ状態となる第３トランジスタMP1が接続される。【選択図】図１５
2007115407.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルと、前記メモリセルとデータの授受を行うビット線と、前記ビット線に接続され、データをラッチするページバッファとを具備し、
前記ページバッファは、フリップフロップ接続される第１及び第２インバータからなるラッチ回路と、前記ラッチ回路の第１ノードと書き込み回路の間に接続され、データロード時にデータを入力するための第１トランジスタと、前記ラッチ回路の第２ノードと接地点の間に接続され、ベリファイリードにより前記メモリセルから読み出されたデータがゲートに入力される第２トランジスタとを有し、
前記第１インバータの入力ノードは、前記第１ノードに接続され、前記第１インバータの出力ノードは、前記第２ノードに接続され、前記第１インバータと電源端子の間には、前記データを前記ページバッファに入力するときにオフ状態となる第３トランジスタが接続され、
前記第２インバータの入力ノードは、前記第２ノードに接続され、前記第２インバータの出力ノードは、前記第１ノードに接続され、前記第２インバータと前記電源端子の間には、常にオン状態の第４トランジスタが接続される
ことを特徴とする不揮発性半導体メモリ。
【請求項２】
前記ページバッファは、カラムゲートを経由して、センスアンプを含む読み出し回路に接続されることを特徴とする請求項１記載の不揮発性半導体メモリ。
【請求項３】
前記第２ノードと接地点の間に接続される第５トランジスタを具備し、前記第５トランジスタは、前記ラッチ回路の状態をリセットする機能を有することを特徴とする請求項１記載の不揮発性半導体メモリ。
【請求項４】
前記ラッチ回路の状態に基づいて前記メモリセルに対するプログラムが完了したか否かを検出する一括検知回路と、前記一括検知回路と接地点の間に接続され、前記第２ノードのレベルに応じてオン又はオフ状態となる第５トランジスタを具備することを特徴とする請求項１記載の不揮発性半導体メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カラム（ビット線）ごとにページバッファを有すると共に、データリードのためのセンスアンプを有する不揮発性半導体メモリに関する。
【背景技術】
【０００２】
高速ランダムアクセスが可能な不揮発性半導体メモリとしては、ＥＥＰＲＯＭや、ＮＯＲセル型フラッシュメモリなどが知られている。近年では、これらと並んで、高速ランダムアクセスを特徴とするメモリとして、ＮＡＮＤセル型フラッシュメモリをベースにした新しいタイプのメモリが考案されている。そのうちの一つに、いわゆる“３Ｔｒ−ＮＡＮＤ”と呼ばれるメモリがある。
【０００３】
３Ｔｒ−ＮＡＮＤは、メモリ又はメモリ混載ＡＳＩＣとして、非接触型ＩＣカードなどの低消費電力の携帯機器に搭載することを目的に開発されたものであり、１つのセルユニットが、３つのトランジスタ、即ち、１つのメモリセルとこれを挟み込む２つのセレクトトランジスタから構成されている。
【０００４】
そして、３Ｔｒ−ＮＡＮＤは、ＥＥＰＲＯＭ又はフラッシュメモリに比べて、以下に示す特徴を持っている。  
（１）１６ビット（＝１ワード）単位の高速データリードが可能  
（２）データイレーズが３２ワード単位と小さい  
（３）データリードが低消費電力で行える  
（４）メモリセルの大きさが比較的小さい
具体的には、例えば、３Ｔｒ−ＮＡＮＤは、ＥＥＰＲＯＭに比べて、メモリセルのサイズが小さく、チップサイズの縮小や、製造コストの削減などを達成できる。また、３Ｔｒ−ＮＡＮＤは、ＮＯＲセル型フラッシュメモリに比べて、消費電力が小さく、かつ、消去単位が小さい（例えば、特許文献１，２を参照）。
【０００５】
３Ｔｒ−ＮＡＮＤは、ＮＡＮＤセル型フラッシュメモリをベースに開発されたものであるため、プログラムデータやリードデータを一時記憶するためのページバッファを有している。ページバッファは、例えば、１つ又は複数のカラム（ビット線）に対して１つ設けられる。
【０００６】
また、３Ｔｒ−ＮＡＮＤでは、大きなメモリ容量を主目的とするＮＡＮＤセル型フラッシュメモリとは異なり、データリードを高速に行うことが重要となるため、データリードのためのセンスアンプを有している。
【０００７】
センスアンプは、例えば、ＮＯＲセル型フラッシュメモリに使用されるセンスアンプと同じ構成を有している。例えば、センスアンプは、レファレンスセルに流れる電流と、選択されたメモリセルに流れる電流とを比較して、メモリセルのデータ（“１”又は“０”）を判定する（例えば、特許文献２を参照）。
【０００８】
また、センスアンプのサイズは、比較的大きいため、通常、メモリチップ内には、カラム数よりも少ない数のセンスアンプが設けられる。そして、データリード時においては、カラムデコーダにより選択されたカラムのみが、カラムゲートを介してセンスアンプに電気的に接続される。
【０００９】
ところで、３Ｔｒ−ＮＡＮＤでは、ＮＡＮＤセル型フラッシュメモリと同様に、データの書き換え（変更）は、  i.  ページバッファに対するプログラムデータのロード、 ii.  選択されたメモリセルに対するデータイレーズ（“１”状態にすること）、iii.  選択されたメモリセルに対するデータプログラム（“０”−プログラミング又は“１”−プログラミング）、により達成される。
【００１０】
また、データプログラムにおいては、選択されたメモリセルに対して所定のデータがきちんとプログラムされたか否かを検証するプログラムベリファイが行われる。プログラムベリファイは、選択されたメモリセル（プログラムの対象となるメモリセル）からデータを読み出し、そのデータの値を判定するベリファイリードと、ベリファイリードにより読み出されたデータがプログラムデータに一致するか否かを検知する検知（detection）動作とから構成される。
【００１１】
ここで、ＮＡＮＤセル型フラッシュメモリのベリファイリードでは、ページバッファ（ラッチ回路）により、選択されたメモリセルのデータが検出（センシング）され、かつ、そのデータ値が判定される。従って、３Ｔｒ−ＮＡＮＤのベリファイリードおいても、ＮＡＮＤセル型フラッシュメモリと同様に、ページバッファにより、選択されたメモリセルのデータを検出し、かつ、そのデータ値を判定することができる。
【００１２】
しかし、上述したように、３Ｔｒ−ＮＡＮＤでは、通常のデータリードにおけるリードデータの検出及びそのデータ値の判定は、高速データリードを実現するために、センスアンプにより行われる。従って、ベリファイリードにおけるデータ値の判定をページバッファで行うと、通常のデータリードとベリファイリードで、データ値を判定する回路が異なることになる。
【００１３】
この場合、当然に、センスアンプとページバッファでは、“１”／“０”の判定レベルが異なるため、３Ｔｒ−ＮＡＮＤにおいて、ベリファイリードにおけるデータ値の判定をページバッファにより行うと、正確な判定が行えなくなる。結果として、例えば、プログラムが不十分であるにもかかわらず、プログラム十分と誤判定してしまうおそれがある。
【００１４】
なお、ページバッファとセンスアンプを有する不揮発性半導体メモリとしては、上述したような３Ｔｒ−ＮＡＮＤの他、例えば、非特許文献１に開示された不揮発性半導体メモリがある。
【００１５】
しかし、この文献に開示された不揮発性半導体メモリでも、通常のデータリードにおけるリードデータの検出及びそのデータ値の判定は、センスアンプにより行われ、ベリファイリードにおけるリードデータの検出及びそのデータ値の判定は、ページバッファで行われている。このため、ベリファイリードにおけるデータ値の判定を正確に行うことができない。
【特許文献１】特開２０００−１４９５８１号公報
【特許文献２】特開２００１−１８４８８１号公報
【非特許文献１】Ｓｈｉｎ−ｉｃｈｉ  Ｋｏｂａｙａｓｈｉ  ｅｔ  ａｌ．“Ａ  ３．３Ｖ−Ｏｎｌｙ  １６Ｍｂ  ＤＩＮＯＲ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ”ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ  Ｃｏｎｆｅｒｅｎｃｅ，ＳＥＳＳＩＯＮ７／ＦＬＡＳＨ  ＭＥＭＯＲＹ／ＰＡＰＥＲ  ＴＡ  ７．２，ｐｐ．１２２−１２３，Ｆｅｂ．１６，１９９５
【発明の開示】
【発明が解決しようとする課題】
【００１６】
本発明では、ページバッファとセンスアンプを有する不揮発性半導体メモリにおいて、ベリファイリードにおけるデータ（メモリセルの状態）の判定を正確に行う技術を提案する。
【課題を解決するための手段】
【００１７】
本発明の例に係る不揮発性半導体メモリは、メモリセルと、前記メモリセルとデータの授受を行うビット線と、前記ビット線に接続され、データをラッチするページバッファとを備える。前記ページバッファは、フリップフロップ接続される第１及び第２インバータからなるラッチ回路と、前記ラッチ回路の第１ノードと書き込み回路の間に接続され、データロード時にデータを入力するための第１トランジスタと、前記ラッチ回路の第２ノードと接地点の間に接続され、ベリファイリードにより前記メモリセルから読み出されたデータがゲートに入力される第２トランジスタとを有する。前記第１インバータの入力ノードは、前記第１ノードに接続され、前記第１インバータの出力ノードは、前記第２ノードに接続され、前記第１インバータと電源端子の間には、前記データを前記ページバッファに入力するときにオフ状態となる第３トランジスタが接続される。前記第２インバータの入力ノードは、前記第２ノードに接続され、前記第２インバータの出力ノードは、前記第１ノードに接続され、前記第２インバータと前記電源端子の間には、常にオン状態の第４トランジスタが接続される。
【発明の効果】
【００１８】
本発明の例によれば、ページバッファとセンスアンプを有する不揮発性半導体メモリにおいて、ベリファイリードにおけるデータ（メモリセルの状態）の判定を正確に行うことができる。
【発明を実施するための最良の形態】
【００１９】
１．  以下、図面を参照しながら、本発明の不揮発性半導体メモリについて詳細に説明する。
【００２０】
まず、以下の説明をわかり易くするため、メモリセルのデータに関して、次のように定義しておく。即ち、閾値電圧が正のメモリセルを“０”−データを記憶するメモリセル（“０”−プログラミングセル）とし、閾値電圧が負のメモリセルを“１”−データを記憶するメモリセル（“１”−プログラミングセル又は消去セル）とする。
【００２１】
また、本発明は、データを一時記憶するためのページバッファと、データリード時にメモリセルのデータ値を判定するセンスアンプとを有する不揮発性半導体メモリに適用される。但し、以下では、説明を簡単にするため、３Ｔｒ−ＮＡＮＤに本発明を適用した場合について説明する。
【００２２】
２．  ３Ｔｒ−ＮＡＮＤ  
まず、３Ｔｒ−ＮＡＮＤについて説明する。
【００２３】
２．−１．  全体図  
図１は、本発明が適用される３Ｔｒ−ＮＡＮＤの主要部を示すブロック図である。  
本例では、３２キロバイトのメモリ容量を有する３Ｔｒ−ＮＡＮＤについて説明する。
【００２４】
メモリセルアレイ１１は、アレイ状に配置された複数のセルユニットから構成される。セルユニットは、１つのメモリセルとその両端に１つずつ接続される２つのセレクトゲートトランジスタとから構成される。セルユニットの詳細については、後述する。
【００２５】
メモリセルアレイ１１は、データを記憶する領域（データ領域）と、エラー訂正のためのパリティビットを記憶する領域（パリティビット領域）とから構成される。メモリセルアレイ１１上には、ロウ方向に延びる５１２本のワード線ＷＬと、カラム方向に延びる７０４本のビット線ＢＬがそれぞれ配置される。７０４本のビット線ＢＬのうち、５１２本のビット線ＢＬは、データ領域に配置され、１９２本のビット線ＢＬは、パリティビット領域に配置される。
【００２６】
メモリセルアレイ１１のデータ領域において、５１２本のワード線ＷＬと５１２本のビット線ＢＬの交点には、３２キロバイト（３２，７６８バイト）のメモリセルが配置される。本例では、１本のワード線ＷＬには、データ領域内の５１２個のメモリセルが接続されるため、１ページは、６４バイト（５１２ビット）となる。また、３Ｔｒ−ＮＡＮＤでは、１つのセルユニット内には、１個のメモリセルのみが配置されるため、１ブロックも、６４バイト（＝３２ワード。１ワードは、１６ビット。）となる。
【００２７】
なお、データの書き換え（変更）は、例えば、ページ単位又はバイト単位で行うことができる。また、データイレーズは、ブロック単位（３２ワード）で行うことができる。
【００２８】
メモリセルアレイ１１のロウ方向の端部には、ワード線／セレクトゲート線デコーダ（又はワード線／セレクトゲート線ドライバ）１２が配置される。ロウ方向に延びる５１２本のワード線ＷＬは、ワード線／セレクトゲート線デコーダ１２内のワード線デコーダに接続される。
【００２９】
一方、メモリセルアレイ１１のデータ領域内の５１２本のビット線ＢＬは、１６のグループに分けられ、各グループは、３２本のビット線ＢＬから構成される。同様に、メモリセルアレイ１１のパリティビット領域内の１９２本のビット線ＢＬは、６のグループに分けられ、各グループは、３２本のビット線ＢＬから構成される。
【００３０】
メモリセルアレイ１１のカラム方向の端部には、７０４個のページバッファ１３が配置される。７０４個のページバッファ１３は、メモリセルアレイ１１上に配置される７０４本のビット線ＢＬに対応している。各ページバッファ１３は、例えば、１つのラッチ回路を含んでいる。
【００３１】
メモリセルアレイ１１のデータ領域内の１６のグループ及びパリティビット領域内の６のグループに対応して、２２（＝１６＋６）個のセンスアンプ１５が設けられている。そして、カラムデコーダ１６及びカラムゲート１４により、各グループ内の３２本のビット線ＢＬのうちの１本が選択される。
【００３２】
つまり、データリードは、１ページ（＝３２ワード）よりも少ない１６ビット（＝１ワード）単位で行われる。本例では、データリード時に、メモリセルアレイ１１のデータ領域から１６ビットのデータを読み出すと共に、１ビットの誤り訂正（ Single Error Correct ）と２ビットの誤り検出（ Double Error Detect ）を行うために、メモリセルアレイ１１のパリティビット領域から６ビットのデータを読み出す。
【００３３】
メモリセルアレイ１１から読み出された２２（＝１６＋６）ビットのデータは、センスアンプ１５を経由して、エラー訂正回路１８に入力される。エラー訂正回路１８は、２２ビットのリードデータに基づいて、このリードデータに誤りが含まれているか否かを検出し、かつ、誤りが存在する場合には、その誤りを訂正した後に、１６ビットのリードデータをＩ／Ｏバッファ１９に出力する。
【００３４】
そして、１６ビットのリードデータは、１６本のデータ入出力端子Ｉ／Ｏ・０，Ｉ／Ｏ・１，・・・Ｉ／Ｏ・１５から出力される。
【００３５】
ところで、１４ビットのアドレス信号は、アドレス入力端子Ａ０，Ａ１，・・・Ａ１３及びアドレスバッファ２０を経由して、ワード線／セレクトゲート線デコーダ１２及びカラムデコーダ１６に入力される。具体的には、アドレス信号の下位５ビットＡ０，Ａ１，・・・Ａ４がカラムデコーダ１６に入力され、アドレス信号の上位９ビットＡ５，Ａ６，・・・Ａ１３がワード線／セレクトゲート線デコーダ１２のワード線デコーダ（ロウデコーダ）に入力される。
【００３６】
制御回路２１は、チップイネーブル信号／ＣＥ、アウトプットイネーブル信号／ＯＥ及びライトイネーブル信号／ＷＥに基づいて、メモリの動作を制御する。例えば、制御回路２１は、データリード時にセンスアンプ１５が動作状態となるように、センスアンプ１５を制御する。
【００３７】
パリティビットジェネレータ２２は、データ入出力端子Ｉ／Ｏ・０，Ｉ／Ｏ・１，・・・Ｉ／Ｏ・１５から入力された１６ビットのプログラムデータに、１ビットの誤り訂正と２ビットの誤り検出を行うための６ビットのデータ（パリティビット）を付加する。そして、これら２２（１６＋６）ビットのデータは、ページバッファ（ラッチ回路）１３に一時記憶された後、選択されたメモリセルにプログラムされる。
【００３８】
２．−２．  メモリセルアレイ  
図２は、メモリセルアレイの一例を示している。図３は、メモリセルアレイを構成するセルユニットを示している。  
３Ｔｒ−ＮＡＮＤにおいては、メモリセルアレイ１１内のセルユニットは、それぞれ３つのトランジスタ、即ち、１つのメモリセルＭ２と、これを挟み込む２つのセレクトトランジスタＭ１，Ｍ３とから構成される。
【００３９】
メモリセルＭ２は、例えば、フローティングゲート電極とコントロールゲート電極を有するスタックゲート構造を有する。セレクトトランジスタＭ１，Ｍ３は、例えば、スタックゲート構造に類似した構造を有するが、下層のゲートを実際のゲート電極として用いることにより、通常のＭＯＳトランジスタとして機能する。
【００４０】
セルユニットの一端は、ビット線ＢＬ１，…，ＢＬｊ，…，ＢＬｍに接続され、その他端は、セルソース線ＳＬに接続される。ビット線ＢＬ１，…，ＢＬｊ，…，ＢＬｍは、ページバッファ１３及びカラムゲート１４を経由して、センスアンプ１５に接続される。
【００４１】
ページバッファ１３は、ビット線ＢＬ１，…，ＢＬｊ，…，ＢＬｍに対応して設けられ、ラッチ回路（ページラッチ）ＬＡＴＣＨを有している。ラッチ回路ＬＡＴＣＨは、例えば、プログラム動作において、プログラムデータを一時記憶する機能を有する。
【００４２】
また、ページバッファ１３は、ベリファイ動作において、プログラム又はイレーズが正確に行われたか否かを検知するための共通ノードを有し、この共通ノードからは、一括検知信号ＰＢＦＬＧが出力される。一括検知信号ＰＢＦＬＧは、一括検知回路（後に詳述する。）に入力される。そして、一括検知回路は、プログラム又はイレーズが正確に行われたか否かを検知する。
【００４３】
リセットトランジスタＴｒ１，…，Ｔｒｊ，…，Ｔｒｍも、ビット線ＢＬ１，…，ＢＬｊ，…，ＢＬｍに対応して設けられている。リセットトランジスタＴｒ１，…，Ｔｒｊ，…，Ｔｒｍは、各動作モードにおいて、制御信号ＢＬＲＳＴに基づいて、ビット線ＢＬ１，…，ＢＬｊ，…，ＢＬｍの電位をリセット（接地電位）する機能を有する。
【００４４】
セルソース線ＳＬは、シャント線ＳＨを経由して、セルソース線−接地トランジスタに接続される。セルソース線−接地トランジスタは、セルソース線ＳＬを接地電位にする機能を有する。
【００４５】
シャント線ＳＨは、メモリセルアレイ１１内に複数本配置され、かつ、ビット線ＢＬ１，…，ＢＬｊ，…，ＢＬｍと同様にカラム方向に延びている。シャント線ＳＨは、例えば、１つのセンスアンプに対応するメモリセルアレイ１１の１つのビット線グループがｋ（例えば、３２）本のビット線から構成される場合には、ｋ本のビット線ごとに１本の割合で配置されるのが好ましい（ｍとｋは、同じでも又は異なっていてもよい）。
【００４６】
データリード時において、ソース線側の全てのセレクトゲート線ＳＧＳ１，…，ＳＧＳｉ，…，ＳＧＳｐは、ソース線側のセレクトトランジスタがオン状態になるような電位（例えば、約３．５Ｖ）に設定される。また、ビット線側のセレクトゲート線ＳＧＤ１，…，ＳＧＤｉ，…，ＳＧＤｐのうち、選択されたメモリセルを含むセルユニットに接続されるセレクトゲート線も、セレクトトランジスタがオン状態になるような電位（例えば、約３．５Ｖ）に設定される。
【００４７】
また、例えば、ビット線側のセレクトゲート線ＳＧＤ１，…，ＳＧＤｉ，…，ＳＧＤｐのうち、選択されたメモリセルを含むセルユニットに接続されないセレクトゲート線は、セレクトトランジスタがオフ状態になるような電位（接地電位）に設定される。
【００４８】
また、３Ｔｒ−ＮＡＮＤの場合、データリード時において、全てのワード線Ｗ１，…，Ｗｉ，…，Ｗｐは、接地電位に設定される（“０”−プログラミング状態のメモリセルが正の閾値電圧を有し、“１”−プログラミング状態のメモリセルが負の閾値電圧を有している場合に限る）。
【００４９】
２．−３．  セルユニットの構造  
図４は、３Ｔｒ−ＮＡＮＤの１つのセルユニットを示す平面図である。図５は、図４のＶ−Ｖ線に沿う断面図である。  
３Ｔｒ−ＮＡＮＤのセルユニットの構造は、ＮＡＮＤセル型フラッシュメモリのセルユニットの構造と同じ又は非常に類似している。しかし、３Ｔｒ−ＮＡＮＤのセルユニットは、ＮＡＮＤセル型フラッシュメモリのセルユニット床とは異なり、２つのセレクトゲートトランジスタと間には、１つのメモリセルのみが配置される。
【００５０】
具体的構造について説明する。  
Ｐ型シリコン基板（Ｐ−ｓｕｂ）１の表面領域には、Ｎ型ウェル領域（Ｎ−ｗｅｌｌ）２が形成され、Ｎ型ウェル領域２内には、Ｐ型ウェル領域（Ｐ−ｗｅｌｌ）３が形成される。
【００５１】
Ｐ型ウェル領域３内には、Ｎ型拡散層４，４Ｄ，４Ｓが形成される。２つのＮ型拡散層４の間のチャネル上には、メモリセルのフローティングゲート電極ＦＧ及びコントロールゲート電極（ワード線）ＣＧが形成される。また、２つのＮ型拡散層４，４Ｓの間のチャネル上には、ソース側セレクトゲートトランジスタのゲート電極（セレクトゲート線）ＳＧＳが形成される。また、２つのＮ型拡散層４，４Ｄの間のチャネル上には、ドレイン側セレクトゲートトランジスタのゲート電極（セレクトゲート線）ＳＧＤが形成される。
【００５２】
セルユニットのドレイン拡散層４Ｄ上には、ビット線コンタクト部ＢＬＣが形成される。ビット線コンタクト部ＢＬＣは、例えば、コンタクトホール内に埋め込まれた不純物を含むポリシリコンプラグから構成される。ビット線コンタクト部ＢＬＣ上には、カラム方向に延びるビット線ＢＬが形成される。
【００５３】
メモリセルのフローティングゲート電極ＦＧ内に電子が注入され、メモリセルトランジスタの閾値が正になった状態が“０”状態、また、メモリセルのフローティングゲート電極ＦＧ内に電子が排出され、メモリセルトランジスタの閾値が負になった状態が“１”状態である。
【００５４】
メモリセルの閾値を負にする動作は、イレーズ動作と呼ばれ、また、メモリセルの閾値を、負から正に変化させ、又は負の状態に維持する動作は、プログラム動作と呼ばれる。プログラム動作のうち、メモリセルの閾値を負から正に変化させる動作は、“０”−プログラミングと呼ばれ、メモリセルの閾値を負の状態に維持する動作は、“１”−プログラミングと呼ばれる。
【００５５】
通常、プログラム動作において、“０”−プログラミングの対象となるメモリセルは、書き込みセルと呼ばれ、“１”−プログラミングの対象となるメモリセルは、書き込み禁止セル（ write-inhibit cell ）と呼ばれる。
【００５６】
データ書き込み、即ち、“０”−プログラミングは、例えば、メモリセルのコントロールゲート電極ＣＧの電位を、１６Ｖに設定し、そのチャネル電位を、０Ｖに設定し、フローティングゲート電極ＦＧとチャネルの間に大きな電位差を発生させ、Ｆ−Ｎ（ Fowler-Nordheim ）トンネリング電流をフローティングゲート電極ＦＧからチャネルに流すことにより行われる。
【００５７】
データイレーズは、例えば、メモリセルのコントロールゲート電極ＣＧの電位を、０Ｖに設定し、そのチャネル電位（Ｐ型ウェル領域３の電位）を、２０Ｖに設定し、フローティングゲート電極ＦＧとチャネルの間に大きな電位差を発生させ、Ｆ−Ｎ（ Fowler-Nordheim ）トンネリング電流をチャネルからフローティングゲート電極ＦＧに流すことにより行われる。
【００５８】
このようなＦ−Ｎトンネリング電流を用いた書き込み（write）／消去（erase）動作は、ホットエレクトロンを用いた書き込み動作に比べて、消費電力が小さいため、この動作を利用した不揮発性半導体メモリは、低消費電力が要求されるシステムに使用することに適している。
【００５９】
２．−４．  データ書き換え（変更）  
３Ｔｒ−ＮＡＮＤにおけるデータの書き換え（ページ単位）は、以下の手順で行われる。
【００６０】
i.  データロード  
データ書き換えの対象となるページのアドレス（ロウアドレス）が指定された後、１ページ分のプログラムデータ（書き換えデータ）がページバッファ（ラッチ回路）にラッチされる。
【００６１】
ii.  データイレーズ  
データ書き換えの対象となるページのメモリセル（選択されたメモリセル）のデータが消去される。その結果、データ書き換えの対象となるページのメモリセルのデータは、全て、“１”−データとなる。
【００６２】
iii.  データプログラム  
ページバッファのプログラムデータがビット線を経由して選択されたメモリセルのチャネルに供給される。一方、選択されたメモリセルのコントロールゲート電極ＣＧには、プログラム電位Ｖｐｇｍが供給される。
【００６３】
表１は、リード（ read ）、プログラム（ program ）、イレーズ（ erase ）の各モードにおけるメモリセルのバイアス状態（ cell bias condition ）を示している。
【表１】
2007115407.tif 000003
【００６４】
データリード時には、全てのワード線ＷＬの電位が０Ｖに設定され、全てのセルユニット内のソース側セレクトゲート線ＳＧＳの電位がＶｓｇ（例えば、約３．５Ｖ）に設定される。ソース線ＳＬ及びＰ型ウェル領域（Ｐ−ｗｅｌｌ）の電位は、共に、０Ｖに設定される。そして、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位がＶｓｇに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位が０Ｖに設定される。
【００６５】
セレクトゲートトランジスタは、ゲート電位がＶｓｇのときオン状態、０Ｖのときオフ状態となるため、選択されたメモリセルを含むセルユニットのみがビット線ＢＬに電気的に接続される。
【００６６】
“０”−プログラミングセルの閾値は、０Ｖを超え（具体的には、プログラムベリファイリード時のリード電位Ｖｐｖ以上）、“１”−プログラミングセルの閾値は、０Ｖを下回る（具体的には、イレーズベリファイリード時のリード電位Ｖｅｖ以下）である。
【００６７】
このため、選択されたメモリセルが“０”状態のときは、ビット線ＢＬの電位は、プリチャージ電位を維持する。即ち、ビット線ＢＬにデータＤＡＴＡ（＝“０”）が読み出される。一方、選択されたメモリセルが“１”状態のときは、ビット線ＢＬの電位は、プリチャージ電位から接地電位に向かって低下する。即ち、ビット線ＢＬにデータＤＡＴＡ（＝“１”）が読み出される。
【００６８】
データプログラム時には、ビット線ＢＬの電位は、プログラムデータ（ページバッファ内にラッチされたデータ）ＤＡＴＡの値に応じて、例えば、０Ｖ又は２Ｖとなる。即ち、プログラムデータが“０”のときは、ビット線（選択されたビット線）ＢＬの電位は、０Ｖとなり、プログラムデータが“１”のときは、ビット線（非選択のビット線）ＢＬの電位は、２Ｖとなる。
【００６９】
また、選択されたワード線ＷＬの電位は、プログラム電位Ｖｐｇｍに設定され、非選択のワード線ＷＬは、フローティング状態に設定される。全てのセルユニット内のソース側セレクトゲート線ＳＧＳの電位は、０Ｖに設定される。また、ソース線ＳＬの電位は、２Ｖに設定され、Ｐ型ウェル領域（Ｐ−ｗｅｌｌ）の電位は、０Ｖに設定される。
【００７０】
そして、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位が２Ｖに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位が０Ｖに設定される。
【００７１】
この時、選択されたメモリセルが“０”−プログラミングの対象となるセルである場合には、ビット線ＢＬの電位が０Ｖに維持され、かつ、この電位は、ドレイン側セレクトゲートトランジスタを経由してメモリセルのチャネルに与えられている。従って、選択されたメモリセルのコントロールゲート電極（ワード線ＷＬ）の電位は、Ｖｐｇｍとなり、チャネルの電位は、０Ｖとなるため、トンネル酸化膜（ゲート酸化膜）にはＦ−Ｎトンネリング電流が流れ、電子がフローティングゲート電極ＦＧ内に注入される。
【００７２】
一方、選択されたメモリセルが“１”−プログラミングの対象となるセルである場合には、ビット線ＢＬの電位が２Ｖに維持され、かつ、メモリセルのチャネル電位（初期電位）Ｖｉｎｉは、（２−Ｖｔｈ）となり、ドレイン側セレクトゲートトランジスタは、カットオフする。但し、Ｖｔｈは、ドレイン側セレクトゲートトランジスタの閾値電圧である。
【００７３】
従って、選択されたメモリセルのコントロールゲート電極（ワード線ＷＬ）の電位がプログラム電位Ｖｐｇｍとなると、フローティング状態のチャネルの電位は、容量カップリングにより、上昇する。つまり、選択されたメモリセルのフローティングゲート電極ＦＧとチャネルの間には高い電位差が生じないため、トンネル酸化膜（ゲート酸化膜）にはＦ−Ｎトンネリング電流が流れない。
【００７４】
ここで、容量結合比（又はブート比）をαとすると、選択されたメモリセルのコントロールゲート電極（ワード線ＷＬ）の電位がＶｐｇｍになった時点で、選択されたメモリセルのチャネル電位は、α×Ｖｐｇｍとなる。よって、選択されたメモリセルのコントロールゲート電極とチャネルの間の電位差は、（１−α）×Ｖｐｇｍとなる。
【００７５】
また、αは、約０．６である。このため、“１”−プログラミングの対象となるメモリセルのコントロールゲート電極とチャネルの間の電位差は、“０”−プログラミングの対象となるメモリセルのそれに比べ、約４０％低くなる。つまり、“１”−プログラミングの対象となるメモリセルに対しては、“０”−プログラミングが禁止される（消去状態を維持する）。
【００７６】
データイレーズ時には、選択されたワード線ＷＬの電位が０Ｖに設定され、非選択のワード線ＷＬは、フローティング状態に設定される。また、全てのビット線ＢＬ、全てのセルユニット内のソース側セレクトゲート線ＳＧＳ及びドレイン側セレクトゲート線ＳＧＤ、並びに、ソース線ＳＬは、フローティング状態に設定される。
【００７７】
そして、Ｐ型ウェル領域（Ｐ−ｗｅｌｌ）に、消去電位として、例えば、約２２Ｖが与えられると、選択されたせブロック内のメモリセル（選択されたワード線に繋がるメモリセル）に対しては、フローティングゲート電極とＰ型ウェル領域（Ｐ−ｗｅｌｌ）の間に高い電位差が生じ、トンネル酸化膜（ゲート酸化膜）にはＦ−Ｎトンネリング電流が流れ、電子がフローティングゲート電極からＰ型ウェル領域（Ｐ−ｗｅｌｌ）に排出される。
【００７８】
また、非選択のブロック内のメモリセル（非選択のワード線に繋がるメモリセル）に対しては、フローティングゲート電極とＰ型ウェル領域（Ｐ−ｗｅｌｌ）の間に高い電位差が生じることがないため、トンネル酸化膜（ゲート酸化膜）にはＦ−Ｎトンネリング電流が流れない。即ち、メモリセルの状態が変化することはない。
【００７９】
２．−５．  ベリファイ  
プログラム動作を行った後には、メモリセルに対してきちんとプログラムが行われたか否かを検知し、プログラムが不十分である場合には、再書き込み（ re-write ）を行い、メモリセルに対して正確なデータをプログラムすることが重要である。このような一連の動作を、プログラムベリファイと呼ぶ。
【００８０】
同様に、イレーズ動作を行った後にも、メモリセルに対してきちんとイレーズが行われたか否かを検知し、イレーズが不十分である場合には、再消去（ re-erase ）を行い、メモリセルに対して、正確にデータイレーズを行うことが重要である。このような一連の動作をイレーズベリファイと呼ぶ。
【００８１】
但し、３Ｔｒ−ＮＡＮＤやＮＡＮＤセル型フラッシュメモリでは、ＮＯＲセル型フラッシュメモリとは異なり、オーバーイレーズが問題とならないため、イレーズベリファイは、省略してもよい（後に、詳述する。）。
【００８２】
従って、上述したデータ書き換え動作においては、プログラム動作後には、プログラムベリファイが行われる。
【００８３】
ベリファイには、いくつかの手法が存在するが、そのうちの一つにビット毎ベリファイと呼ばれる手法がある。
【００８４】
ビット毎ベリファイは、プログラムベリファイに適用されるものであり、その特徴は、メモリセル（ビット）毎にベリファイを行い、プログラムが完了したメモリセルに対しては再書き込みを行わず、プログラムが不十分なメモリセルに対してのみ再書き込みを行う点にある。
【００８５】
ビット毎ベリファイは、例えば、プロセスばらつきなどにより容量結合比αが減少し、“１”−プログラミングの対象となるメモリセルに対してプログラムエラー（“０”−プログラミング）が発生する可能性がある場合に、このプログラムエラーを防止し、かつ、“０”−プログラミングの対象となるメモリセルに対して過剰な書き込み（トンネル酸化膜に対する過剰なストレス）を防止するのに有効である。
【００８６】
ビット毎ベリファイは、ＮＡＮＤ型フラッシュメモリやＮＯＲ型フラッシュメモリなどにおいて既に使用されているベリファイ手法であるが、以下に、ビット毎ベリファイの概略について説明する。
【００８７】
まず、ビット毎ベリファイを実現するためのページバッファについて説明する。
【００８８】
図６は、１つのカラム（ビット線）に対応する１つのページバッファを示している。図６のページバッファは、図２のページバッファに相当する。
【００８９】
ラッチ回路ＬＡＴＣＨのノードＮ１とビット線ＢＬの間には、ＮチャネルＭＯＳトランジスタＴＮ１が接続される。ラッチ回路ＬＡＴＣＨのノードＮ２と接地点Ｖｓｓの間には、ＮチャネルＭＯＳトランジスタＴＮ４，ＴＮ６が直列に接続されている。トランジスタＴＮ１のゲートには、制御信号ＳＷ１が入力され、トランジスタＴＮ４のゲートには、制御信号ＳＷ４が入力される。
【００９０】
一括検知のための共通ノードＰＢＦＬＧと接地点Ｖｓｓの間には、ＮチャネルＭＯＳトランジスタＴＮ５，ＴＮ７が直列に接続される。トランジスタＴＮ５のゲートには、制御信号ＳＷ５が入力され、トランジスタＴＮ７のゲートは、ラッチ回路ＬＡＴＣＨのノードＮ２に接続される。
【００９１】
ＮチャネルＭＯＳトランジスタＴＮ２は、ビット線ＢＬとトランジスタＴＮ６のゲートの間に接続され、ＮチャネルＭＯＳトランジスタＴＮ３は、電源端子ＶｄｄとトランジスタＴＮ６のゲートの間に接続される。トランジスタＴＮ２のゲートには、制御信号ＳＷ２が入力され、トランジスタＴＮ３のゲートには、制御信号ＳＷ３が入力される。
【００９２】
なお、電源端子Ｖｄｄには、外部電源電位に基づいてチップ内部で生成された内部電源電位が印加される。
【００９３】
３Ｔｒ−ＮＡＮＤでは、ページバッファは、例えば、データプログラム時に、プログラムデータを一時記憶するために用いられる。また、ＮＡＮＤ型フラッシュメモリの場合には、センスアンプ（図１及び図２の“１５”）が存在しないため、ページバッファは、データプログラム時に、プログラムデータを一時記憶し、かつ、データリード時に、リードデータをセンスかつ増幅するために用いられる。
【００９４】
また、ベリファイに関しては、通常、ベリファイリードによりメモリセルから読み出されたデータの検出（又はデータ値の判定）及び全てのメモリセルに対してプログラムが正確に行われたか否かを検知する一括検知は、上述のページバッファにより行われる。
【００９５】
図７は、ビット毎ベリファイの流れを示すフローチャートを示している。図８は、ベリファイリード時及びベリファイ（一括検知）時における図６のページバッファの動作を示す波形図である。図９は、ページバッファにおけるラッチデータの変化の様子を示している。
【００９６】
図７のフローチャートに示されるように、ビット毎ベリファイは、プログラム、ベリファイリード、ベリファイ（一括検知）という一連の動作（シーケンス）の繰り返しから構成される。そして、このシーケンスは、原則として、最終的にベリファイ（一括検知）をパスするまで、繰り返される。
【００９７】
また、プログラム電位Ｖｐｇｍは、通常、初期電位Ｖｐｇｍ（０）、例えば、約１３Ｖから、プログラム回数に応じて、順次、ステップアップさせる。１回のステップアップ量ｄＶは、例えば、１Ｖに設定される。この点については、後に、詳述することにする。
【００９８】
以下、図６乃至図９を参照しつつ、プログラム時及びビット毎ベリファイ時におけるページバッファの動作について説明する。  
i.  プログラム時  
まず、プログラムデータがチップ外部からページバッファへ転送され、ページバッファのラッチ回路ＬＡＴＣＨにプログラムデータ（書き換えデータ）がラッチされる（データロード）。
【００９９】
例えば、プログラムデータが“１”の場合には、ラッチ回路ＬＡＴＣＨのノードＮ１は、“１”状態（“Ｈ”レベル）となり、ノードＮ２は、“０”状態（“Ｌ”レベル）となる。また、プログラムデータが“０”の場合には、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態（“Ｌ”レベル）となり、ノードＮ２は、“１”状態（“Ｈ”レベル）となる。
【０１００】
この後、例えば、プログラムの対象となる１ページ分のメモリセル（１ブロック内のメモリセル）に対してイレーズ動作が実行され、これら１ページ分のメモリセルの全てを消去状態、即ち、“１”状態にする。
【０１０１】
次に、制御信号ＳＷ１を“Ｈ”レベルに設定し、トランジスタＴＮ１をオン状態にすることにより、ラッチ回路ＬＡＴＣＨにラッチされたデータをビット線ＢＬに転送する。即ち、プログラムデータが“１”の場合には、ラッチ回路ＬＡＴＣＨのノードＮ１は、“１”状態であるため、ビット線ＢＬには、例えば、２Ｖが転送される。また、プログラムデータが“０”の場合には、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態であるため、ビット線ＢＬには、例えば、０Ｖが転送される。
【０１０２】
ii.  プログラムベリファイ（ビット毎ベリファイ）時  
プログラム動作を行った後、まず、制御信号ＳＷ２，ＳＷ３を“Ｈ”レベルに設定し、ビット線ＢＬを電源電位Ｖｄｄ（“Ｈ”レベル、即ち、“１”状態）にプリチャージする。
【０１０３】
この後、通常のデータリードと同様にして、プログラムベリファイリードを実行する。即ち、全てのセルユニット内のソース側セレクトゲート線ＳＧＳの電位がＶｓｇ（例えば、約３．５Ｖ）に設定され、ソース線ＳＬ及びＰ型ウェル領域（Ｐ−ｗｅｌｌ）の電位は、共に、０Ｖに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位がＶｓｇに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位が０Ｖに設定される。
【０１０４】
プログラムベリファイリードが通常のデータリードと異なる点は、ワード線ＷＬに与えるリード電位にある。即ち、通常のデータリードでは、ワード線ＷＬの電位（通常のリード電位）が０Ｖに設定されるのに対し、プログラムベリファイリードでは、通常のリード電位と“０”状態のメモリセルの閾値のマージンを十分に確保するために、ワード線ＷＬの電位が正の電位Ｖｐｖ（例えば、０．５Ｖ程度）に設定される。
【０１０５】
従って、メモリセルの閾値がＶｐｖを超えるときは、ビット線ＢＬの電位は、プリチャージ電位を維持する（“０”−プログラミング十分）。一方、メモリセルの閾値がＶｐｖを下回るときは、ビット線ＢＬの電位は、プリチャージ電位から接地電位に向かって次第に低下する（“０”−プログラミング不十分、又は、“１”−プログラミング）。
【０１０６】
このビット線ＢＬの電位変化は、図６のページバッファにより検出される。即ち、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位をＶｓｇに維持しままで、制御信号ＳＷ２を“Ｌ”レベルに設定し、この状態を一定期間維持する。
【０１０７】
その結果、メモリセルの閾値がＶｐｖを超えるとき（“０”−プログラミング十分のとき）は、ビット線ＢＬの電位は、プリチャージ電位（“１”状態）を維持し、メモリセルの閾値がＶｐｖを下回るとき（“０”−プログラミング不十分、又は、“１”−プログラミングのとき）は、ビット線ＢＬの電位は、接地電位（“０”状態）となる。
【０１０８】
この後、制御信号ＳＷ３が“Ｌ”になり、制御信号ＳＷ２，ＳＷ４が“Ｈ”レベルになると、メモリセルのデータ（ビット線ＢＬに読み出されたデータ）がページバッファに入力される。
【０１０９】
即ち、メモリセルに対する“０”−プログラミングが十分であり、ビット線ＢＬの電位が“１”状態（“Ｈ”レベル）のときは、トランジスタＴＮ６がオン状態となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、接地点Ｖｓｓに短絡され、接地電位（“０”状態）となる。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態から“１”状態に変化する。
【０１１０】
また、メモリセルに対する“０”−プログラミングが不十分であり、ビット線ＢＬの電位が“０”状態（“Ｌ”レベル）のときは、トランジスタＴＮ６がオフ状態となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、接地点Ｖｓｓに短絡されることはなく、現状を維持する。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”−プログラミングのときは“０”のままであり、“１”−プログラミングのときは“１”状態のままである。
【０１１１】
このようなベリファイリード結果に応じて、ラッチデータ（ノードＮ１の値）が変化する様子は、図９に示す通りである。
【０１１２】
即ち、ページバッファのラッチ回路ＬＡＴＣＨのノードＮ１の値が“１”（“Ｈ”レベル）のとき（“１”−プログラミングのとき）は、ベリファイリードの前後においてラッチ回路（ページラッチ）ＬＡＴＣＨのデータは、変化することはない。つまり、常に、プログラム禁止状態を維持する。
【０１１３】
これに対し、ページバッファのラッチ回路ＬＡＴＣＨのノードＮ１の値が“０”（“Ｌ”レベル）のとき（“０”−プログラミングのとき）は、ベリファイリード結果に応じて、ラッチ回路（ページラッチ）ＬＡＴＣＨのデータは、変化したり、又は、変化しなかったりする。
【０１１４】
つまり、“０”−プログラミングの場合において、“０”−プログラミングが十分（ベリファイリード結果、即ち、セルデータが“０”）と判断されたら、ラッチ回路ＬＡＴＣＨのノードＮ１を“０”状態から“１”状態に変化させ、それ以降は、“０”−プログラミングが行われないようにしている。
【０１１５】
これにより、メモリセルに対する過剰な書き込みを防止し、トンネル酸化膜に過剰なストレスが生じることを防止する（３Ｔｒ−ＮＡＮＤでは、ＮＡＮＤセル型フラッシュメモリにおいて問題となる、いわゆるオーバープログラムが問題とならないが、トンネル酸化膜のストレス緩和の面から過剰な書き込みを防止する意義がある）。
【０１１６】
また、“０”−プログラミングの場合において、“０”−プログラミングが不十分（ベリファイリード結果、即ち、セルデータが“１”）と判断されたら、ラッチ回路ＬＡＴＣＨのノードＮ１を“０”状態のままとし、それ以降も、続けて“０”−プログラミング（再書き込み）が行われるようにしている。
【０１１７】
上述のように、ベリファイリードが終了し、その結果がページバッファに入力され、ラッチ回路ＬＡＴＣＨのノードＮ１，Ｎ２の値が確定した後に、一括検知（ベリファイ）が行われる。
【０１１８】
一括検知は、まず、全てのページバッファに共通の共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルに充電される。この後、制御信号ＳＷ５が“Ｈ”レベルとなり、トランジスタＴＮ５がオン状態になる。その結果、ラッチ回路ＬＡＴＣＨのノードＮ１が“０”状態、ノードＮ２が“１”状態のときは、トランジスタＴＮ７がオン状態となり、ラッチ回路ＬＡＴＣＨのノードＮ１が“１”状態、ノードＮ２が“０”状態のときは、トランジスタＴＮ７がオフ状態となる。
【０１１９】
つまり、共通ノードは、全てのページバッファに接続されているため、共通ノードの電位ＰＢＦＬＧは、全てのページバッファ内のラッチ回路ＬＡＴＣＨのノードＮ２が“０”レベルの場合に、“Ｈ”レベルを維持する。共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルであるということは、全ての“０”−プログラミングセルに対して、“０”−プログラミングが十分となったことを意味する。
【０１２０】
従って、この場合には、この後、プログラム動作を終了する。
【０１２１】
一方、少なくとも１つのページバッファ内のラッチ回路ＬＡＴＣＨのノードＮ２が“１”レベルの場合には、共通ノードの電位ＰＢＦＬＧは、“Ｈ”レベルから“Ｌ”レベルに変化する。共通ノードの電位ＰＢＦＬＧが“Ｌ”レベルであるということは、少なくとも１つの“０”−プログラミングセルに関して、“０”−プログラミングが不十分であることを意味する。
【０１２２】
従って、この場合には、プログラム電位Ｖｐｇｍをステップアップした後に、再び、プログラム動作を実行する。
【０１２３】
以上、ビット毎ベリファイについて説明したが、このビット毎ベリファイを３Ｔｒ−ＮＡＮＤに適用した場合には、上述したように、“１”−プログラミングセルに対するプログラムエラー（“０”−プログラミング）を防止すると共に、“０”−プログラミングセルのトンネル酸化膜に生じるストレスを緩和する、という効果を奏する。
【０１２４】
即ち、容量結合比αは、プロセスばらつきなどの影響により、メモリセル毎に、若干、異なった値を持つようになる。このため、“０”−プログラミングのためのプログラム電位Ｖｐｇｍの最適値（プログラム特性）も、メモリセル毎に異なるようになる。
【０１２５】
ビット毎ベリファイは、メモリセル毎に、最適化されたプログラム電位Ｖｐｇｍを用いて、“０”−プログラミングを行うことができ、かつ、“０”−プログラミングが十分になった後は、プログラム禁止状態にするため、過剰な書き込みによりメモリセルに生じるストレスもなくすことができる。
【０１２６】
また、ビット毎ベリファイを用いない場合には、最もプログラムを行い難いセル（プログラム特性が悪いセル）に対しても、十分に、プログラムを行うようにするために、このような最もプログラムを行い難いセルに対しても十分にプログラムを行えるような高いプログラム電位Ｖｐｇｍを設定する必要がある。
【０１２７】
これに対し、ビット毎ベリファイを用いた場合には、メモリセル毎に、最適化されたプログラム電位Ｖｐｇｍを用いるため、非常に高いプログラム電位Ｖｐｇｍのみでプログラムを行う必要がない。従って、“１”−プログラミングセルに対するプログラムエラー（“０”−プログラミング）の発生も、抑制することができる。
【０１２８】
２．−６．  その他  
プログラムデータを一時記憶するためのページバッファと、リードデータをセンスかつ増幅するためのセンスアンプとを有する不揮発性半導体メモリ、例えば、上述したような３Ｔｒ−ＮＡＮＤにおいては、ベリファイ（イレーズ／プログラムベリファイ）時に、ベリファイリードによりメモリセルから読み出されたリードデータは、ページバッファにより検出（センシング）され、そのデータ値が判定される。
【０１２９】
しかし、ページバッファとセンスアンプを有する不揮発性半導体メモリ、例えば、３Ｔｒ−ＮＡＮＤでは、通常のデータリードにおけるリードデータの検出及びそのデータ値の判定は、当然に、センスアンプにより行われる。従って、ベリファイリードにおけるリードデータの検出及びそのデータ値の判定をページバッファで行うと、通常のデータリードとベリファイリードで、データ値を判定する回路が異なることになる。
【０１３０】
この場合、当然に、センスアンプとページバッファでは、“１”／“０”の判定レベルが異なるため、ベリファイリードにおけるリードデータの検出及びそのデータ値の判定をページバッファにより行うと、正確なベリファイが行えなくなる。結果として、例えば、イレーズ／プログラムが不十分であるにもかかわらず、イレーズ／プログラム十分と誤判定してしまうおそれがある。
【０１３１】
３．  本発明の３Ｔｒ−ＮＡＮＤ  
本発明は、上述のようなページバッファ（ページラッチ）とセンスアンプを有する不揮発性半導体メモリ、例えば、３Ｔｒ−ＮＡＮＤを前提とし、ベリファイリード（プログラムベリファイリード）におけるリードデータ、即ち、メモリセルの状態（プログラム十分／不十分）の判定を正確に行うものである。
【０１３２】
なお、以下の説明では、その説明を分かり易くするため、上述したような３Ｔｒ−ＮＡＮＤを前提とし、かつ、３Ｔｒ−ＮＡＮＤにおいてデータ書き換え（変更）を行う場合のプログラム動作後のプログラムベリファイについて説明することにする。また、プログラムベリファイは、いわゆるビット毎ベリファイ手法を採用するものとする。
【０１３３】
３．−１．  概要  
まず、本発明の概要について説明する。
【０１３４】
図１０は、本発明が適用される３Ｔｒ−ＮＡＮＤの主要部を示している。  
同図は、図１のブロック図に対応しているため、同図に示すブロックのうち、図１と同じブロックには、同じ符号を付してある。
【０１３５】
ビット線（カラム）ＢＬ０，・・・ＢＬ７０３は、例えば、７０４本存在し、そのうちの５１２本のビット線ＢＬ０，・・・ＢＬ５１１は、データ領域に配置され、残りの１９２本のビット線ＢＬ５１２，・・・ＢＬ７０３は、パリティビット領域に配置される。
【０１３６】
センスアンプＳ／Ａ０，・・・Ｓ／Ａ・２１は、例えば、２２個存在し、そのうちの１６個のセンスアンプＳ／Ａ・０，・・・Ｓ／Ａ・１５は、データ領域のメモリセルに対応して配置され、残りの６個のセンスアンプＳ／Ａ・１６，・・・Ｓ／Ａ・２１は、パリティビット領域のメモリセルに対応して配置される。また、１つのセンスアンプＳ／Ａ・ｋ（ｋ＝１，・・・２１）には、カラムゲートを経由して、３２本のビット線が接続される。
【０１３７】
ページバッファＰ／Ｂは、１本のビット線ＢＬｊ（ｊ＝０，・・・７０３）に対して１つ設けられている。
【０１３８】
カラムデコーダ１６は、５ビットのカラムアドレス信号Ａ０，・・・Ａ４に基づいて、１つのセンスアンプＳ／Ａ・ｋに対応する３２本のビット線（カラム）のうちの１本を選択する。そして、選択された１本のビット線は、カラムゲートを経由して、１個のセンスアンプＳ／Ａ・ｋに電気的に接続される。
【０１３９】
図１０の回路においては、１回のデータロード動作により、１６ビット（１ワード）のプログラムデータ及び６ビットのパリティビットが、センスアンプ１５を経由して、同時に選択される２２本のビット線（カラム）に接続されるページバッファＰ／Ｂに入力される。３２回のデータロード動作により、全てのページバッファＰ／Ｂにプログラムデータが入力される。この後、プログラム動作が行われる。
【０１４０】
また、通常のデータリード時には、カラムアドレス信号Ａ０，・・・Ａ４により同時に選択される２２本のビット線（カラム）から２２個のセンスアンプＳ／Ａ・０，・・・Ｓ／Ａ・２１にリードデータが入力される。１６個のセンスアンプＳ／Ａ・０，・・・Ｓ／Ａ・１５からは、１６ビット（１ワード）のデータが出力され、６個のセンスアンプＳ／Ａ・１６，・・・Ｓ／Ａ・２１からは、６ビットのパリティビットが出力される。
【０１４１】
本発明では、プログラムベリファイリード時において、通常のデータリードと同様に、２２（＝１６＋６）ビットのリードデータを、カラムアドレス信号Ａ０，・・・Ａ４により同時に選択される２２本のビット線（カラム）から２２個のセンスアンプＳ／Ａ・０，・・・Ｓ／Ａ・２１に入力し、センスアンプＳ／Ａ・０，・・・Ｓ／Ａ・２１においてリードデータの検出（センシング）及びそのデータ値の判定を行う。
【０１４２】
つまり、ＮＡＮＤ型フラッシュメモリなどのページバッファ（ページラッチ）を有する不揮発性半導体メモリでは、ページバッファにより、ベリファイリードデータの検出及びそのデータ値の判定を行っているが、本発明に関わる３Ｔｒ−ＮＡＮＤでは、ページバッファＰ／Ｂを有しているにもかかわらず、ベリファイリードデータは、通常データリードと同様に、センスアンプＳ／Ａ・０，・・・Ｓ／Ａ・２１により検出し、かつ、そのデータ値を判定する。
【０１４３】
また、本発明では、センスアンプＳ／Ａ・０，・・・Ｓ／Ａ・２１により検出したデータ（ベリファイリード結果）を、カラムアドレス信号Ａ０，・・・Ａ４により同時に選択される２２本のビット線（ベリファイリード時に選択された２２本のビット線と同じビット線）に接続されるページバッファＰ／Ｂに入力し、ベリファイリード結果に応じて、ページバッファＰ／Ｂ内のラッチデータ（プログラムデータ）の変更／維持を行う。
【０１４４】
このベリファイリード後に、センスアンプＳ／Ａ・０，・・・Ｓ／Ａ・２１により検出したデータ（ベリファイリード結果）を、ページバッファＰ／Ｂに入力する動作は、本発明に特有なものであり、この動作を、以後、“ベリファイ・データ・イン”と称することにする。
【０１４５】
通常、センスアンプＳ／Ａ・０，・・・Ｓ／Ａ・２１の数は、ビット線ＢＬ０，・・・ＢＬ７０３の数よりも少なく設定されている。本例でも、３２本のビット線に対して、１個のセンスアンプＳ／Ａ・ｋが設けられている。
【０１４６】
従って、１ページ分（１ブロック分）のデータ書き換えを行う場合には、プログラム動作後、ベリファイデータリード及びベリファイデータインは、複数回行われる。例えば、本例のように、１ページ（１ブロック）が３２ワードから構成される場合には、１回のベリファイリードにより１ワード（１６ビット）＋６ビットのデータが読み出されるため、プログラム動作後、ベリファイデータリード及びベリファイデータインは、３２回行われる。
【０１４７】
ベリファイデータインに関しては、センスアンプＳ／Ａ・０，・・・Ｓ／Ａ・２１から選択されたビット線（カラム）に接続されるページバッファＰ／Ｂのみにデータを転送する必要があり、この時、非選択のビット線（カラム）に接続されるページバッファＰ／Ｂ内のラッチデータには影響を与えないようにすることが重要である。これについては、後述する実施の形態で詳細に説明する。
【０１４８】
３．−２．  第１実施の形態  
以下、本発明の第１実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
【０１４９】
３．−２．−１．  全体図  
図１１は、本発明の３Ｔｒ−ＮＡＮＤの主要部を示している。  
同図は、図１のブロック図に対応しているため、同図に示すブロックのうち、図１と同じブロックには、同じ符号を付してある。また、同図は、図１０の１つのセンスアンプＳ／Ａ・０と、これに接続される３２本のビット線（１つのビット線グループ）ＢＬ０，・・・ＢＬ３１に対応する部分を詳細に示すものであり、図１０の他のセンスアンプＳ／Ａ１，・・・Ｓ／Ａ２１と、これに接続される３２本のビット線も、当然に、図１１に示すような回路構成を有している。
【０１５０】
１つのセンスアンプＳ／Ａ・０に対応する３２本のビット線（ビット線グループ）ＢＬ０，・・・ＢＬ３１は、４本のビット線ＢＬｊ，ＢＬｊ＋１，ＢＬｊ＋２，ＢＬｊ＋３を含む８個のビット線サブグループから構成される。
【０１５１】
カラムデコーダ１６Ａは、３ビットのカラムアドレス信号Ａ２，Ａ３，Ａ４に基づいて、８個のビット線サブグループのうちから１個のビット線サブグループを選択する。具体的には、カラムアドレス信号Ａ２，Ａ３，Ａ４のデコード結果、即ち、カラムデコーダ１６Ａから出力されるカラムセレクト信号ｂ０，・・・ｂ７により、カラムゲートを構成するＮチャネルＭＯＳトランジスタをオン／オフさせ、１個のビット線サブグループを選択する。
【０１５２】
また、カラムデコーダ１６Ｂは、２ビットのカラムアドレス信号Ａ０，Ａ１に基づき、各ビット線サブグループ内の４本のビット線ＢＬｊ，ＢＬｊ＋１，ＢＬｊ＋２，ＢＬｊ＋３のうちから１本のビット線を選択する。例えば、カラムアドレス信号Ａ０，Ａ１のデコード結果、即ち、カラムデコーダ１６Ｂから出力されるカラムセレクト信号ｃ０，・・・ｃ３により、カラムゲートを構成するＮチャネルＭＯＳトランジスタをオン／オフさせ、１本のビット線を選択する。
【０１５３】
つまり、５ビットのカラムアドレス信号Ａ０，・・・Ａ４によって、１本のビット線が、読み出し／書き込み回路（センスアンプＳ／Ａ・０）に電気的に接続されることになる。
【０１５４】
なお、各ビット線ＢＬ０，・・・ＢＬ３１とカラムゲートの間には、ビット線ＢＬ０，・・・ＢＬ３１とカラムゲートを電気的に接続／切断するためのビット線クランプ用ＮチャネルＭＯＳトランジスタＭＮ９が接続される。トランジスタＭＮ９のオン／オフは、制御信号Ｙｔｒａｎｓｆにより制御される。
【０１５５】
また、各ビット線ＢＬ０，・・・ＢＬ３１と接地点の間には、ビット線リセット用ＮチャネルＭＯＳトランジスタＭＮ８が接続される。トランジスタＭＮ８は、ビット線リセット信号ＢＬＲＳＴに基づいて、各ビット線ＢＬ０，・・・ＢＬ３１の電位を接地電位Ｖｓｓにする機能を有する。
【０１５６】
また、各ビット線ＢＬ０，・・・ＢＬ３１とページバッファＰ／Ｂの間には、ページバッファＰ／Ｂ内のラッチ回路にデータを入力し、又はページバッファＰ／Ｂ内のラッチ回路からデータを出力するためのトランスファゲートとしてのＮチャネルＭＯＳトランジスタＭＮ７が接続される。トランジスタＭＮ７は、制御信号ＰＢＴＲにより制御される。
【０１５７】
トランジスタＭＮ７は、主として、プログラムデータをチップ外部からページバッファＰ／Ｂに入力し、また、プログラムデータをページバッファＰ／Ｂからビット線ＢＬｊに出力するときに、オン状態となるものであり、本発明に関わるプログラムベリファイ時には、常に、オフ状態となっている。
【０１５８】
ＮチャネルＭＯＳトランジスタＭＮ２，ＭＮ３，ＭＮ４は、ページバッファＰ／Ｂと接地点の間に直列に接続される。トランジスタＭＮ４のゲートは、ビット線ＢＬｊに接続される。トランジスタＭＮ４は、ベリファイデータインのときに、センスアンプＳ／Ａ・０からページバッファＰ／Ｂにリードデータ（ベリファイ結果）を入力するためのものである。
【０１５９】
トランジスタＭＮ２，ＭＮ３は、ベリファイデータインのときに、選択されたビット線ＢＬｊのみを電気的にページバッファＰ／Ｂに接続する役割を果たす。つまり、１つのセンスアンプＳ／Ａ・０に対応する３２本のビット線ＢＬ０，・・・ＢＬ３１に関しては、カラムアドレス信号Ａ０，・・・Ａ４により選択された１本のビット線ＢＬｊのみが、ページバッファＰ／Ｂに電気的に接続されることになる。
【０１６０】
なお、ベリファイデータイン以外のモードのときは、制御信号ＢＬＳＥＮＥＮが常に“Ｌ”レベルとなるため、カラムデコーダ１６から出力されるカラムセレクト信号ｂ０，・・・ｂ７，ｃ０，・・・ｃ３の値にかかわらず、アンド回路ＡＮＤの出力信号ｂ０’，・・・ｂ７’，ｃ０’，・・・ｃ３’は、全て、“Ｌ”レベルになる。
【０１６１】
ベリファイデータインのときのみ、制御信号ＢＬＳＥＮＥＮが“Ｈ”レベルになるため、アンド回路ＡＮＤの出力信号ｂ０’，・・・ｂ７’，ｃ０’，・・・ｃ３’に基づいて、１本のビット線ＢＬｊのみがページバッファＰ／Ｂに電気的に接続される。
【０１６２】
３２本のビット線ＢＬ０，・・・ＢＬ３１は、カラムゲートを経由して、読み出し／書き込み回路に接続される。読み出し／書き込み回路は、１個のセンスアンプＳ／Ａ・０を含んでいる。
【０１６３】
センスアンプＳ／Ａ・０とカラムゲートの間には、ＮチャネルＭＯＳトランジスタＭＮ１０が接続される。トランジスタＭＮ１０のオン／オフは、制御信号（センスアンプイネーブル信号）ＳＡＥＮにより制御される。制御信号ＳＡＥＮは、ベリファイリード時に“Ｈ”レベルとなるものであり、この時、同時に、センスアンプＳ／Ａ・０も、活性化される（動作状態になる）。
【０１６４】
センスアンプＳ／Ａ・０の出力ノードは、インバータＩ１を経由して、ラッチ回路ＬＡＴＣＨ１のノードｎ２に接続される。インバータＩ１は、制御信号ＳＡＥＮが“Ｈ”レベルのときに、動作状態となる。ラッチ回路ＬＡＴＣＨ１は、制御信号ＳＡＥＮが“Ｈ”レベルのときに、インバータＩ１の出力データをセンスし、かつ、制御信号ＳＡＥＮが“Ｌ”レベルになり、制御信号ＳＡＥＮｎ（ＳＡＥＮの反転信号）が“Ｈ”レベルになると、インバータＩ１の出力データをラッチする。
【０１６５】
ラッチ回路ＬＡＴＣＨ１のノードｎ１は、インバータＩ４，Ｉ５を経由して、カラムゲートに接続される。インバータＩ５は、制御信号ＤＮ２が“Ｈ”レベルのときに、動作状態となる。ベリファイデータインのとき、制御信号ＤＮ２は、“Ｈ”レベルとなるため、ラッチ回路ＬＡＴＣＨ１にラッチされたデータ（ベリファイリード結果）は、カラムゲートを経由して、選択されたビット線ＢＬｊに接続されるページバッファＰ／Ｂに入力される。
【０１６６】
なお、ラッチ回路ＬＡＴＣＨ１のノードｎ２は、インバータＩ２，Ｉ３を経由して、ノードｎ３に接続される。ノードｎ３は、データバスＤＡＴＡＢＵＳに接続される。インバータＩ３は、制御信号ＳＡＯＵＴが“Ｈ”レベルのときに、動作状態となる。通常のデータリード時には、制御信号ＳＡＯＵＴが“Ｈ”レベルとなるため、リードデータがデータバスＤＡＴＡＢＵＳに出力される。
【０１６７】
本発明に関わるベリファイリード時には、制御信号ＳＡＯＵＴは、常に、“Ｌ”レベルである。
【０１６８】
また、ノードｎ３とカラムゲートの間には、インバータＩ６，Ｉ７が接続される。インバータＩ７は、制御信号ＤＮ１が“Ｈ”レベルのときに、動作状態となる。プログラムモードにおけるデータロード時、制御信号ＤＮ１は、“Ｈ”レベルになる。従って、プログラムデータは、インバータＩ６，Ｉ７及びカラムゲートを経由して、選択されたビット線ＢＬｊに接続されるページバッファＰ／Ｂに入力される。
【０１６９】
図１２は、図１１のインバータＩ５，Ｉ７を示している。  
制御信号ＤＮｉ（ｉ＝１，２）が“Ｈ”のときに、入力信号ＩＮに対応した出力信号ＯＵＴが得られることがわかる。
【０１７０】
なお、インバータＩ１，Ｉ３及びラッチ回路ＬＡＴＣＨ１内のラッチ用インバータについても、図１２に示すような回路構成とすることができる。即ち、図１２の制御信号ＤＮｉを、それぞれ制御信号ＳＡＥＮ，ＳＡＥＮｎ，ＳＡＯＵＴに変えれば、インバータＩ１，Ｉ３、ラッチ回路ＬＡＴＣＨ１内のラッチ用インバータをそれぞれ得ることができる。
【０１７１】
図１３は、図１１の制御信号ＰＢＴＲを生成する回路を示している。図１４は、図１３のレベルシフタＨＶＳＷの具体例を示している。
【０１７２】
制御信号ＰＢＴＲは、チップ外部から入力されたプログラムデータをページバッファＰ／Ｂ内に転送する場合や、ページバッファＰ／Ｂ内のラッチデータ（プログラムデータ）をビット線ＢＬｊに転送する場合に、“Ｈ”レベル（例えば、約３．５Ｖ）になる。
【０１７３】
制御信号ＰＢＴＲを“Ｈ”レベルにするときは、ページバッファＰ／Ｂ内のラッチデータがいわゆるチャージシェアにより破壊される現象を防止する必要がある。この現象を防止するためには、図１３に示すような回路を用いて、制御信号ＰＢＴＲの電位を、緩やかに、“Ｌ”レベルから“Ｈ”レベルに変化させればよい（詳細については、後述する。）。
【０１７４】
３．−２．−２．  ページバッファ  
図１１に示す複数個（例えば、７０４個）のページバッファ（ページラッチ）Ｐ／Ｂは、互いに同じ構成を有しているため、以下の説明では、ビット線ＢＬ０に接続されるページバッファＰ／Ｂについて説明する。
【０１７５】
図１５は、１つのカラム（ビット線ＢＬ０）に対応する１つのページバッファＰ／Ｂを示している。  
ラッチ回路ＬＡＴＣＨは、電源端子Ｖｄｄと接地端子Ｖｓｓの間に直列に接続されるＭＯＳトランジスタＭＰ１，ＭＰ３，ＭＮ１１と、電源端子Ｖｄｄと接地端子Ｖｓｓの間に直列に接続されるＭＯＳトランジスタＭＰ２，ＭＰ４，ＭＮ１２とから構成される。
【０１７６】
ＰチャネルＭＯＳトランジスタＭＰ３のゲート及びＮチャネルＭＯＳトランジスタＭＮ１１のゲートは、ノードＮ１に接続され、ＰチャネルＭＯＳトランジスタＭＰ４のゲート及びＮチャネルＭＯＳトランジスタＭＮ１２のゲートは、ノードＮ２に接続される。ＰチャネルＭＯＳトランジスタＭＰ１のゲートには、制御信号ＰＢＳＷが入力され、ＰチャネルＭＯＳトランジスタＭＰ２のゲートには、接地電位が入力される。
【０１７７】
ラッチ回路ＬＡＴＣＨのノードＮ１とビット線ＢＬの間には、ＮチャネルＭＯＳトランジスタＭＮ７が接続される。ラッチ回路ＬＡＴＣＨのノードＮ２と接地端子Ｖｓｓの間には、ＮチャネルＭＯＳトランジスタＭＮ２，ＭＮ３，ＭＮ４が直列に接続されている。トランジスタＭＮ２のゲートには、制御信号ＢＬＳＥＮＡｉが入力され、トランジスタＭＮ３のゲートには、制御信号ＢＬＳＥＮＢｊが入力される。
【０１７８】
制御信号ＢＬＳＥＮＡｉ，ＢＬＳＥＮＢｊは、このページバッファＰ／Ｂに接続されるビット線ＢＬ０が選択され、かつ、制御信号ＢＬＳＥＮＥＮが“Ｈ”レベルになってベリファイデータインが行われるときに、“Ｈ”レベルとなるものである。
【０１７９】
一括検知のための共通ノードＰＢＦＬＧと接地端子Ｖｓｓの間には、ＮチャネルＭＯＳトランジスタＭＮ５，ＭＮ６が直列に接続される。トランジスタＭＮ６のゲートには、制御信号ＰＢＶＦＹが入力され、トランジスタＭＮ５のゲートは、ラッチ回路ＬＡＴＣＨのノードＮ２に接続される。制御信号ＰＢＶＦＹは、プログラム十分／不十分の一括検知を行うときに、“Ｈ”レベルとなる。
【０１８０】
ＮチャネルＭＯＳトランジスタＭＮ１は、ラッチ回路ＬＡＴＣＨのノードＮ２と接地端子Ｖｓｓの間に接続される。トランジスタＭＮ１のゲートには、制御信号ＰＢＲＳＴが入力される。制御信号ＰＢＲＳＴは、プログラムモードにおけるデータロード時に、予め、ラッチ回路ＬＡＴＣＨの状態を初期状態（リセット状態）に設定しておくためのものである。
【０１８１】
なお、データ書き換え（変更）時には、プログラムデータがラッチ回路ＬＡＴＣＨにラッチされる。例えば、プログラムデータが“０”のときは、ノードＮ１が“０”状態（“Ｌ”レベル）となり、ノードＮ２が“１”状態（“Ｈ”レベル）となる。また、プログラムデータが“１”のときは、ノードＮ１が“１”状態となり、ノードＮ２が“０”状態となる。
【０１８２】
初期状態（ベリファイリードを一度も行っていない場合）においては、プログラムデータに応じて、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨにラッチされるデータ（ラッチデータ）が決定される。そして、ベリファイリード及びベリファイデータインが行われると、ベリファイリード結果に応じて、ラッチデータの値が変化又は維持される。
【０１８３】
例えば、ラッチデータが“１”のとき（ノードＮ１の値が“１”のとき）は、常に、ラッチデータの値は、変わらない。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、常に、“１”状態、ノードＮ２は、常に、“０”状態になる。
【０１８４】
ラッチデータが“０”のとき（ノードＮ１の値が“０”のとき）は、“０”−プログラミングが十分（ベリファイリード結果がＯＫ）であれば、ラッチデータの値は、“０”から“１”に変化する。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“１”状態、ノードＮ２は、“０”状態になる。また、“０”−プログラミングが不十分（ベリファイリード結果がＮＧ）であれば、ラッチデータの値は、“０”状態を維持する。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態、ノードＮ２は、“１”状態になる（図９参照）。
【０１８５】
３．−２．−３．  データ書き換え動作  
次に、図１に示すブロック構成を有し、かつ、図１１乃至図１５に示す回路構成を有する３Ｔｒ−ＮＡＮＤを例にして、本発明に関わるデータ書き換え（変更）動作を詳細に説明する。  
データ書き換え動作は、上述の項目２．−４．で説明したように、データロードステップ、データイレーズステップ、データプログラムステップの３段階から構成される。
【０１８６】
以下、図１６のタイミングチャートを参照しながら、データロード、データイレーズ、データプログラムの各動作について説明する。
【０１８７】
i.  データロード  
図１に示すような３２キロバイトのメモリ容量を有する３Ｔｒ−ＮＡＮＤでは、例えば、ワード線（ロウ）の数は、５１２本であり、ビット線の数（データ領域及びパリティビット領域のカラムの合計数）は、７０４本となる。また、ビット線は、上述したように、３２本のビット線から構成される２２のビット線グループに分けられる。
【０１８８】
従って、アドレス信号は、各ビット線グループ内の３２本のビット線の１つを選択するための５ビットのカラムアドレス信号Ａ０，・・・Ａ４と、５１２本のワード線のうちの１本を選択するための９ビットのロウアドレス信号Ａ５，・・・Ａ１３から構成される。
【０１８９】
データ書き換え時におけるデータロードでは、まず、ロウアドレス信号Ａ５，・・・Ａ１３が入力され、データ書き換えの対象となる１ページ分のメモリセル、即ち、１本のワード線（ロウ）が選択される。
【０１９０】
データロードでは、データ書き換えの対象（１ページ分のメモリセル）を指定するために、チップの外部から内部にロウアドレス信号Ａ５，・・・Ａ１３が入力されるが、カラムアドレス信号Ａ０，・・・Ａ４は、例えば、チップ内部のアドレスカウンタにより自動生成される。
【０１９１】
具体的には、図１６に示すように、カラムアドレス信号Ａ０，・・・Ａ４の値Ｃｏｌ．Ａｄｄ．は、ライトイネーブル信号ＷＥｎが“Ｈ”レベルから“Ｌ”レベルに立ち下がる度に、１、２，３、・・・３２という具合に、１から３２（３２本のビット線に対応）まで、順次、インクリメントされる。
【０１９２】
なお、カラムアドレス信号Ａ０，・・・Ａ４の値Ｃｏｌ．Ａｄｄ．と、これにより選択されるビット線との対応は、表２に示す通りである。  
【表２】
2007115407.tif 000004
【０１９３】
プログラムデータ（書き換えデータ）は、１回のデータロードにより、チップの外部から内部へ１６ビット分（１ワード分）入力される。実際には、チップ内部においてこの１６ビットのデータに６ビットのパリティビットが付加されるため、１回のデータロードでは、２２ビット分のデータがページバッファＰ／Ｂに入力される。
【０１９４】
なお、１ページは、３２ワードであるため、ページバッファＰ／Ｂに対するデータロードは、連続して３２回行われる。ここで、１６ビット分のプログラムデータは、ライトイネーブル信号ＷＥｎが“Ｌ”レベルから“Ｈ”レベルに立ち上がる度に、チップ内部へ入力される。
【０１９５】
プログラムデータ（書き換えデータ）をページバッファ内のラッチ回路にラッチする動作は、具体的には、以下のようにして行われる（例えば、図１６のＣｏｌ．Ａｄｄ．＝１の場合を参照）。
【０１９６】
まず、制御信号ＢＬＲＳＴ，Ｙｔｒａｎｓｆが“Ｈ”レベルでとなり、７０４本の全てのビット線が“Ｌ”レベルにリセットされる。この後、制御信号ＢＬＲＳＴ，Ｙｔｒａｎｓｆは、“Ｈ”レベルから“Ｌ”レベルに変化する。
【０１９７】
また、第１回目のデータロード（Ｃｏｌ．Ａｄｄ．＝１）においては、ライトイネーブル信号ＷＥｎが“Ｈ”レベルから“Ｌ”レベルに立ち下がると、制御信号ＰＢＳＷ，ＰＢＲＳＴがそれぞれ“Ｌ”レベルから“Ｈ”レベルに変化する。その結果、全てのページバッファ（７０４個）Ｐ／Ｂがリセットされる。
【０１９８】
例えば、図１５に示すように、制御信号ＰＢＳＷ，ＰＢＲＳＴがそれぞれ“Ｈ”レベルになると、トランジスタＭＮ１がオン状態、トランジスタＭＰ１がオフ状態になるため、ページバッファ（ページラッチ）Ｐ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ１は、“１”状態（“Ｈ”レベル）になり、ノードＮ２は、“０”状態（“Ｌ”レベル）になる。この後、制御信号ＰＢＳＷ，ＰＢＲＳＴは、共に、“Ｌ”レベルになる
なお、第２回目のデータロード（Ｃｏｌ．Ａｄｄ．＝２）以降においては、ページバッファＰ／Ｂのリセットは、行われない。
【０１９９】
ページバッファＰ／Ｂをリセットする場合及び後述するベリファイデータインの場合には、制御信号ＰＢＳＷを“Ｈ”レベルに設定し、図１５のラッチ回路ＬＡＴＣＨ内のトランジスタＭＰ１をオフ状態にする。
【０２００】
その理由は、ＮチャネルＭＯＳトランジスタＭＮ１，ＭＮ２，ＭＮ３，ＭＮ４のチャネル幅は、ＰチャネルＭＯＳトランジスタＭＰ１のチャネル幅よりも小さいため、仮に、トランジスタＭＰ１がオン状態であると、ラッチデータを反転させる（例えば、ノードＮ２を“Ｈ”から“Ｌ”にする）ことができなくなる。ラッチデータを反転させるためには、トランジスタＭＮ１，ＭＮ２，ＭＮ３，ＭＮ４に流れるオン電流を、トランジスタＭＰ１に流れるオン電流よりも大きくしなければならない。
【０２０１】
これは、ＮチャネルＭＯＳトランジスタＭＮ１，ＭＮ２，ＭＮ３，ＭＮ４のチャネル幅（駆動力）を、ＰチャネルＭＯＳトランジスタＭＰ１のチャネル幅（駆動力）よりも大きくすることを意味する。しかし、トランジスタＭＮ１，ＭＮ２，ＭＮ３，ＭＮ４のチャネル幅をそれぞれ大きくすると、ページバッファＰ／Ｂ及びその付属物のレイアウト面積が大きくなり、例えば、ページバッファＰ／Ｂを２本ビット線間に配置することが難しくなる。
【０２０２】
従って、ページバッファＰ／Ｂのリセット時に、制御信号ＰＢＳＷを“Ｈ”レベルに設定し、図１５のラッチ回路ＬＡＴＣＨ内のトランジスタＭＰ１をオフ状態にすることは、小さいチャネル幅のトランジスタＭＮ１，ＭＮ２，ＭＮ３，ＭＮ４でも、ラッチデータの反転を可能にする、つまり、ページバッファＰ／Ｂのレイアウト面積を縮小できるという効果を持つことを意味する。
【０２０３】
一方、制御信号ＤＩＮ１が“Ｈ”レベルになると、図１１に示すように、プログラムデータ（書き換えデータ）は、データバスＤＡＴＡＢＵＳから、読み出し／書き込み回路及びカラムゲートを経由して、例えば、カラムアドレス信号Ａ０，・・・Ａ４（Ｃｏｌ．Ａｄｄ．＝１）により選択されたカラムのページバッファＰ／Ｂの入口付近に転送される。
【０２０４】
この後、制御信号ＰＢＴＲが“Ｈ”レベルになると、図１１及び図１５に示すように、プログラムデータがページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨに入力される。
【０２０５】
なお、プログラムデータが“１”のときは、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ１は、“１”状態（“Ｈ”レベル）であるため、ラッチ回路ＬＡＴＣＨの状態は、変わらない。プログラムデータが“０”のときは、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態（“Ｌ”レベル）となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、“１”状態（“Ｈ”レベル）になる。
【０２０６】
制御信号ＰＢＴＲは、図１１及び図１５に示すように、全てのカラムのトランジスタＭＮ７に共通になっている。従って、データロード中においては、制御信号Ｙｔｒａｎｓｆを“Ｌ”レベルに設定し、トランジスタＭＮ９をオフ状態にし、全てのカラムのページバッファＰ／Ｂの入力ノードを、ビット線から電気的に切り離す。
【０２０７】
これにより、第２回目以降のデータロードにおいて、既に、前のデータロードでページバッファＰ／Ｂ内に入力されたラッチデータ（ノードＮ１の値）が、制御信号ＰＢＴＲが“Ｈ”となったときに、いわゆるチャージシェア（非選択カラムにおけるページバッファＰ／ＢのノードＮ１のチャージシェア）により破壊されることを防止する。
【０２０８】
また、データロード中においては、制御信号Ｙｔｒａｎｓｆを“Ｌ”レベルに設定しておくと、選択されたカラムにおけるページバッファＰ／Ｂの入力ノードは、ビット線から切り離されているため、図１１の読み出し／書き込み回路内のインバータＩ７により、大きな容量を有するビット線を充電する必要がなくなる。つまり、インバータＩ７は、小さな容量を有するページバッファＰ／Ｂの入力ノードのみを充電すればよく、低消費電力化やデータロードの高速化に貢献できる。
【０２０９】
なお、以上の動作が３２回（Ｃｏｌ．Ａｄｄ＝１，２，３，・・・３２）繰り返されると（ページバッファＰ／Ｂのリセットについては、最初の１回のみ行われる）、データロードが完了する。
【０２１０】
ii.  データイレーズ  
図１６のタイミングチャートに示すように、全てのページバッファＰ／Ｂに対するデータロードが完了した後、データ書き換えの対象となる選択された１ページ分のメモリセルのデータがイレーズされる。
【０２１１】
イレーズ動作中においては、全てのメモリセル及びセレクトゲートトランジスタに共通のＰ型ウェル領域に、イレーズのためのイレーズ電位Ｖｅｅ（例えば、約２０Ｖ）が与えられ、選択された１ページ分のメモリセルのコントロールゲート電極（ワード線）は、０Ｖに設定される。
【０２１２】
この時、全てのビット線、全てのソース側／ドレイン側セレクトゲート線、ソース線及び非選択のワード線は、フローティング状態に設定されている。
【０２１３】
従って、イレーズ動作中においては、容量カップリングにより、全てのビット線の電位は、イレーズ電位Ｖｅｅ近傍まで上昇する。しかし、イレーズ動作中においては、制御信号Ｙｔｒａｎｓｆが“Ｌ”レベルに設定されているため、ページバッファＰ／Ｂとビット線は、互いに電気的に切断されている。つまり、ビット線の高電位は、ページバッファＰ／Ｂに伝達されることがない。
【０２１４】
なお、選択された１ページ分のメモリセルのイレーズ動作後の状態は、図１７に示すようになる。
【０２１５】
ところで、イレーズ動作が終了した後に、きちんとイレーズが行われたか否かを検証するイレーズベリファイを行ってもよい。この場合、イレーズベリファイリードにおいては、リード電位をＶｅｖ（負電位）に設定し、本発明に関わるベリファイリード、ベリファイデータイン及び一括検知（ベリファイ）を行う。イレーズベリファイのための回路については、省略する。
【０２１６】
但し、データイレーズでは、選択された１ページ分の全てのメモリセルのデータが“１”状態にされる。また、ＮＯＲセル型フラッシュメモリでは、非選択セルをオフ状態にする必要性から、いわゆるオーバーイレーズを回避することが重要であるのに対し、本発明に関わる３Ｔｒ−ＭＡＮＤでは、２つのセレクトゲートトランジスタの間に１つのメモリセルのみが接続されるため、オーバーイレーズが問題とならない。
【０２１７】
従って、イレーズ電位Ｖｅｅを高めに設定して、一度のイレーズ動作により、全てのメモリセルのデータが完全にイレーズされるようにし、イレーズベリファイを省略してもよい。
【０２１８】
なお、後述するが、３Ｔｒ−ＮＡＮＤでは、ＮＡＮＤセル型フラッシュメモリと異なり、オーバープログラムも問題とならない。しかし、プログラム動作に関しては、“０”−プログラミングと“１”−プログラミングがあり、かつ、“１”−プログラミングセルのプログラムエラーや、“０”−プログラミングセルのトンネル酸化膜のストレス緩和などから、プログラムベリファイ（ビット毎ベリファイ）が必ず必要となる。
【０２１９】
iii.  データプログラム  
図１６のタイミングチャートに示すように、イレーズ動作が終了した後、まず、制御信号Ｙｔｒａｎｓｆが“Ｈ”レベル（例えば、ＶｓｇＨＨＨ＝約６Ｖ）に設定される。これにより、図１１及び図１５に示すトランジスタＭＮ９がオン状態となり、ビット線とページバッファＰ／Ｂが互いに電気的に接続される。
【０２２０】
この後、制御信号ＰＢＴＲが“Ｈ”レベル（例えば、約３．５Ｖ）に設定されると、図１１及び図１５に示すトランジスタＭＮ７がオン状態となる。その結果、各ページバッファＰ／Ｂ内のラッチデータ（ノードＮ１の値）が、トランジスタＭＮ７，ＭＮ９を経由して、ビット線に転送される。
【０２２１】
例えば、プログラムデータが“０”のときは、ノードＮ１の値は、“０”状態（“Ｌ”レベル）であるため、接地電位（データ“０”）がページバッファＰ／Ｂからビット線に転送される。また、プログラムデータが“１”のときは、ノードＮ１の値は、“１”状態（“Ｈ”レベル）であるため、内部電源電位Ｖｄｄ、例えば、２Ｖ程度の電位（データ“１”）がページバッファＰ／Ｂからビット線に転送される。
【０２２２】
ここで、制御信号Ｙｔｒａｎｓｆ，ＰＢＴＲの電位（６Ｖ，３．５Ｖ）は、昇圧回路により生成する。
【０２２３】
ページバッファＰ／Ｂ内のラッチデータがビット線に転送されるとき、そのラッチデータが、いわゆるチャージシェアにより破壊されることを防止するため、図１６のタイミングチャートに示すように、制御信号ＰＢＴＲは、緩やかに、“Ｌ”レベルから“Ｈ”レベルに上昇させる。
【０２２４】
上述したように、図１３及び図１４に示す回路を用いれば、制御信号ＰＢＴＲを、緩やかに、“Ｌ”レベルから“Ｈ”レベルに上昇させることができる。
【０２２５】
図１３及び図１４に示す回路に関して、データロード時に、制御信号ＰＢＴＲを“Ｈ”レベルに設定するときは、制御信号ＰＢＴＲＱを“Ｈ”レベルに設定し、ＰチャネルＭＯＳトランジスタＰ１から出力ノードに、制御信号ＰＢＴＲを供給する。このときの制御信号ＰＢＴＲの立ち上りは、図１６に示すように、速くなる。
【０２２６】
プログラム時に、制御信号ＰＢＴＲを“Ｈ”レベルに設定するときは、制御信号ＰＢＴＲＳを“Ｈ”レベルに設定し、ＰチャネルＭＯＳトランジスタＰ２から出力ノードに、制御信号ＰＢＴＲを供給する。このときの制御信号ＰＢＴＲの立ち上りは、図１６に示すように、遅くなる。その理由は、デプレッション型のＮチャネルＭＯＳトランジスタＡ，Ｂが、出力電流を一定に保つ役割を果たすからである。
【０２２７】
ページバッファＰ／Ｂ内のラッチデータ（プログラムデータ）がビット線に転送された後、選択されたワード線にプログラム電位Ｖｐｇｍが供給され、データプログラムが開始される。
【０２２８】
プログラム電位Ｖｐｇｍは、ＮＡＮＤセル型フラッシュメモリと同様に、プログラム回数が増えるに従い、初期値Ｖｐｇｍ（１）から、順次、所定のステップアップ量ｄＶ（例えば、１Ｖ）だけ、ステップアップさせる。
【０２２９】
例えば、図１９に示すように、第１回目のプログラム動作では、プログラム電位Ｖｐｇｍ（１）を１３Ｖに設定し、この後、ベリファイでプログラム不十分（Ｆａｉｌ）の場合には、第２回目のプログラム動作のプログラム電位Ｖｐｇｍ（２）として、Ｖｐｇｍ（１）＋１Ｖを使用する。つまり、プログラム回数が増える度に、プログラム電位Ｖｐｇｍが１Ｖ上昇する。
【０２３０】
なお、１ページ分の全てのメモリセルに対するプログラムが完了すると、これらメモリセルの閾値は、その状態（“０”又は“１”）に応じて、図１８に示すようになる。
【０２３１】
以上、データ書き換え動作におけるデータロード、データイレーズ、データプログラムについて説明した。
【０２３２】
ここで、３Ｔｒ−ＮＡＮＤでは、１回のプログラム動作を行った後に、プログラムベリファイが行われる。以下では、本発明に関わるプログラムベリファイ動作について詳細に説明する。
【０２３３】
３．−２．−４．  プログラムベリファイ  
１回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。
【０２３４】
プログラムベリファイは、図１９のフローチャートに示すように、ベリファイリードステップ、ベリファイデータインステップ、一括検知（ベリファイ）ステップとから構成される。
【０２３５】
また、ベリファイリードとベリファイデータインは、３２回（Ｃｏｌ．Ａｄｄ．＝１，２，・・・３２）連続して行われ、１回のベリファイリードとベリファイデータインでは、カラムアドレス信号Ａ０，・・・Ａ４により、同時に、１６ビット（１ワード）のメモリセルが選択される。
【０２３６】
図１９は、ビット毎ベリファイの流れを示すフローチャートを示し、図２０は、ベリファイリード時、ベリファイデータイン時及びベリファイ（一括検知）時における３Ｔｒ−ＮＡＮＤの動作を示す波形図である。
【０２３７】
以下、図１１、図１５、図１９及び図２０を参照しつつ、本発明に関わるビット毎ベリファイ時における動作について説明する。
【０２３８】
i.  ベリファイリード  
プログラムベリファイリードは、選択されたワード線に与えるリード電位Ｖｐｖを、正電位（例えば、０．５Ｖ程度）に設定する点を除けば、通常のデータリード（リード電位は、０Ｖ）と同様に行われる。
【０２３９】
但し、当然に、通常のデータリードでは、図１１の読み出し／書き込み回路内のセンスアンプでリードデータの検出（センシング）及びそのデータ値の判定を行った後に、リードデータをデータバスＤＡＴＡＢＵＳに出力するが、プログラムベリファイリードでは、図１１の読み出し／書き込み回路内のセンスアンプでリードデータの検出（センシング）及びそのデータ値の判定を行った後、図１１の読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１にリードデータ（ベリファイ結果）をラッチするだけである。
【０２４０】
プログラムベリファイリードのリード電位Ｖｐｖを正電位に設定するのは、通常のデータリードにおけるリード電位（０Ｖ）と“０”状態のメモリセルの閾値とのマージンを十分に確保するためである。
【０２４１】
具体的な動作について説明する。  
まず、制御信号ＢＬＲＳＴ，ＳＡＥＮが“Ｈ”レベルになるため、全てのビット線が接地電位Ｖｓｓにリセットされ、また、図１１の読み出し／書き込み回路内のトランジスタＭＮ１０がオン状態、センスアンプＳ／Ａ・０が動作状態になる。
【０２４２】
この後、ビット線ＢＬが電源電位Ｖｄｄ（“Ｈ”レベル、即ち、“１”状態）にプリチャージされる（図１１では、プリチャージ回路は省略してある）。
【０２４３】
そして、全てのセルユニット内のソース側セレクトゲート線ＳＧＳの電位がＶｓｇ（例えば、約３．５Ｖ）に設定され、ソース線ＳＬ及びＰ型ウェル領域（Ｐ−ｗｅｌｌ）の電位は、共に、０Ｖに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位がＶｓｇに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位が０Ｖに設定される。
【０２４４】
また、全てのワード線の電位がリード電位Ｖｐｖに設定される。
【０２４５】
その結果、選択された１ページ分のメモリセルのデータは、ビット線に読み出される。また、制御信号Ｙｔｒａｎｓｆは、予め、“Ｈ”レベル（例えば、ＶｓｇＨＨＨ）に設定されているため、選択された１ページ分のメモリセルのリードデータは、図１１のトランジスタＭＮ９を経由して、ページバッファＰ／Ｂの入力部まで転送される。
【０２４６】
ここで、プログラムベリファイリードでは、制御信号ＢＬＳＥＮＥＮが“Ｌ”レベルとなっているため、カラムアドレス信号Ａ０，・・・Ａ４の値（Ｃｏｌ．Ａｄｄ．）にかかわらず、常に、図１１及び図１５に示すトランジスタＭＮ２，ＭＮ３は、オフ状態である。また、制御信号ＰＢＴＲも常に“Ｌ”レベルであり、図１１及び図１５に示すトランジスタＭＮ７もオフ状態である。
【０２４７】
従って、プログラムベリファイリードでは、選択された１ページ分のメモリセルのリードデータは、ページバッファＰ／Ｂの入力部まで転送されるが、ページバッファＰ／Ｂに入力されることがない。
【０２４８】
なお、メモリセルの閾値がＶｐｖを超えるときは、ビット線ＢＬの電位は、プリチャージ電位を維持する（“０”−プログラミング十分）。一方、メモリセルの閾値がＶｐｖを下回るときは、ビット線ＢＬの電位は、プリチャージ電位から接地電位に向かって次第に低下する（“０”−プログラミング不十分、又は、“１”−プログラミング）。
【０２４９】
このビット線ＢＬの電位変化は、図１１のセンスアンプＳ／Ａ・０により検出（センシング）される。但し、例えば、図１１に示すように、３２本のビット線ＢＬ０，・・・ＢＬ１５からなる１つのビット線グループでは、１本のビット線のみがセンスアンプＳ／Ａ・０に電気的に接続される。
【０２５０】
また、制御信号ＳＥＡＮが“Ｈ”レベルであるため、センスアンプＳ／Ａ・０で検出されたリードデータは、インバータＩ１を経由して、ラッチ回路ＬＡＴＣＨ１に検出される。
【０２５１】
ここで、通常のデータリードとは異なり、プログラムベリファイリードでは、制御信号ＳＡＯＵＴが“Ｌ”レベルに設定されているため、リードデータ（ベリファイリード結果）は、データバスＤＡＴＡＢＵＳに出力されることがない。リードデータをデータバスＤＡＴＡＢＵＳに出力しない理由は、大きな容量を有するデータバスＤＡＴＡＢＵＳにリードデータを出力すると、無駄な電力を消費することになるからである。
【０２５２】
この後、制御信号ＳＡＥＮが“Ｌ”レベルになり、制御信号ＳＡＥＮｎ（制御信号ＳＡＥＮの反転信号）が“Ｈ”レベルになると、リードデータは、図１１に示す読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１にラッチされる。
【０２５３】
ii.  ベリファイデータイン  
ベリファイリードが終了すると、続けて、ベリファイデータインが行われる。
【０２５４】
まず、制御信号ＤＩＮ２が“Ｈ”レベルとなるため、図１１に示すインバータＩ５が動作状態となり、ラッチ回路ＬＡＴＣＨ１内のリードデータ（ベリファイリード結果）が、カラムアドレス信号Ａ０，・・・Ａ４により選択されているビット線に転送される。
【０２５５】
当然に、プログラムベリファイリード時に選択されるビット線（センスアンプに電気的に接続されるビット線）と、ベリファイデータイン時に選択されるビット線は、同じである。
【０２５６】
この後、制御信号ＢＬＳＥＮＥＮが“Ｈ”レベルになると、図１１に示すアンド回路ＡＮＤが活性化され、選択されたビット線（カラム）に対応するＮチャネルＭＯＳトランジスタＭＮ２，ＭＮ３のみがオン状態になる。その結果、読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１からビット線に転送されたリードデータ（ベリファイリード結果）は、ＮチャネルＭＯＳトランジスタＭＮ４を経由して、ページバッファＰ／Ｂに入力される。
【０２５７】
ここで、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのデータ（ノードＮ２の値）は、ベリファイリード結果に応じて変化する。
【０２５８】
例えば、選択されたメモリセルが、“０”−プログラミングの対象となるセルであり、かつ、“０”−プログラミングが十分である場合には、リードデータ、即ち、トランジスタＭＮ４のゲート電位は、“１”状態（“Ｈ”レベル）となる。従って、トランジスタＭＮ４がオン状態となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、接地点Ｖｓｓに短絡され、接地電位（“０”状態）となる。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態から“１”状態に変化することになる。
【０２５９】
また、選択されたメモリセルが、“０”−プログラミングの対象となるセルであり、かつ、“０”−プログラミングが不十分である場合には、リードデータ、即ち、トランジスタＭＮ４のゲート電位は、“０”状態（“Ｌ”レベル）となる。従って、トランジスタＭＮ４は、オフ状態となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、接地点Ｖｓｓに短絡されることなく、“１”状態を保つ。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態を維持する。
【０２６０】
また、選択されたメモリセルが、“１”−プログラミングの対象となるセルである場合には、プログラムは行われないため、リードデータ、即ち、トランジスタＭＮ４のゲート電位は、“０”状態（“Ｌ”レベル）となる。従って、トランジスタＭＮ４は、オフ状態となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、“０”状態を保つ。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“１”状態を維持する。
【０２６１】
従って、“０”−プログラミングの対象となるメモリセルの全てがプログラミング十分となった場合には、全てのページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ１が“１”状態（“Ｈ”レベル）になり、ノードＮ２が“０”状態（“Ｌ”レベル）になる。
【０２６２】
このようなベリファイリード結果に応じて、ラッチデータ（ノードＮ１の値）が変化する様子は、図９に示す通りである。
【０２６３】
即ち、“０”−プログラミングの場合において、“０”−プログラミングが不十分（ベリファイリード結果、即ち、セルデータが“１”）と判断されたら、ラッチ回路ＬＡＴＣＨのノードＮ１を“０”状態のままとし、それ以降も、続けて“０”−プログラミング（再書き込み）が行われるようにする。
【０２６４】
なお、ベリファイデータイン時には、制御信号ＰＢＳＷが“Ｈ”レベルに設定される。これは、図１５に示すように、トランジスタＭＰ１をオフ状態にして、“０”−プログラミング十分のときに、ノードＮ２の値を“１”状態（“Ｈ”レベル）から“０”状態（“Ｌ”レベル）にするためである。
【０２６５】
iii.  一括検知（ベリファイ）  
上述の  i.ベリファイリード及び ii.ベリファイデータインが３２回（Ｃｏｌ．Ａｄｄ．＝１，２，・・・３２）だけ繰り返された後、選択された１ページ分の全てのメモリセルに対してプログラムが完全に行われたか否かを検証する一括検知動作が行われる。
【０２６６】
一括検知動作は、まず、全てのページバッファＰ／Ｂに共通の共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルに充電される。
【０２６７】
この後、制御信号ＰＢＶＦＹが“Ｈ”レベルとなり、トランジスタＭＮ６がオン状態になる。その結果、ラッチ回路ＬＡＴＣＨのノードＮ１が“０”状態、ノードＮ２が“１”状態のときは、トランジスタＭＮ５がオン状態となり、ラッチ回路ＬＡＴＣＨのノードＮ１が“１”状態、ノードＮ２が“０”状態のときは、トランジスタＭＮ５がオフ状態となる。
【０２６８】
つまり、共通ノードは、全てのページバッファに接続されているため、共通ノードの電位ＰＢＦＬＧは、全てのページバッファ内のラッチ回路ＬＡＴＣＨのノードＮ２が“０”レベルの場合に、“Ｈ”レベルを維持する。共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルであるということは、全ての“０”−プログラミングセルに対して、“０”−プログラミングが十分となったことを意味する。
【０２６９】
従って、この場合には、この後、プログラム動作を終了する。
【０２７０】
一方、少なくとも１つのページバッファ内のラッチ回路ＬＡＴＣＨのノードＮ２が“１”レベルの場合には、共通ノードの電位ＰＢＦＬＧは、“Ｈ”レベルから“Ｌ”レベルに変化する。共通ノードの電位ＰＢＦＬＧが“Ｌ”レベルであるということは、少なくとも１つの“０”−プログラミングセルに関して、“０”−プログラミングが不十分であることを意味する。
【０２７１】
従って、この場合には、プログラム電位Ｖｐｇｍをステップアップした後に、再び、プログラム動作を実行する。
【０２７２】
３．−２．−５．  まとめ  
以上、プログラムベリファイ動作について説明したが、本発明によれば、第一に、プログラムベリファイリード時に、センスアンプにより、リードデータ（ベリファイリード結果）の検出及びそのデータ値の判定を行い、かつ、ベリファイリード結果をページバッファ（ページラッチ）Ｐ／Ｂに入力し、ページバッファＰ／Ｂ内のラッチデータの値を決定している。
【０２７３】
従って、通常のデータリードとベリファイリードでは、共に、リードデータを検出し、かつ、その値を判定する回路は、センスアンプである。つまり、本発明によれば、ベリファイリードにおけるリードデータの判定を正確に行うことができる。
【０２７４】
また、ビット毎ベリファイ手法を採用しているため、“０”−プログラミングセルに対する過剰な書き込みを防止し、トンネル酸化膜に過剰なストレスが生じることを防止できる。なお、３Ｔｒ−ＮＡＮＤでは、ＮＡＮＤセル型フラッシュメモリにおいて問題となるオーバープログラムが問題とならないが、トンネル酸化膜のストレス緩和の面から過剰な書き込みを防止する意義がある。
【０２７５】
また、メモリセル毎に、最適化されたプログラム電位Ｖｐｇｍを用いることができるため、非常に高いプログラム電位のみを用いる場合に比べて、“１”−プログラミングセルに対するプログラムエラー（“０”−プログラミング）を防止できる。これは、ビット毎ベリファイ手法と共に、プログラム電位のステップアップ手法を採用したことによる効果である。
【０２７６】
３．−３．  第２実施の形態  
以下、本発明の第２実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
【０２７７】
上述の第１実施の形態（図１１）では、ベリファイリード結果を、読み出し／書き込み回路から選択されたカラムのページバッファＰ／Ｂに転送する際に、選択されたカラムにおけるトランジスタＭＮ２，ＭＮ３をオン状態にし、非選択のカラムにおけるトランジスタＭＮ２，ＭＮ３をオフ状態にしている。
【０２７８】
そして、これらトランジスタＭＮ２，ＭＮ３のオン／オフ制御は、ベリファイリードモードとベリファイデータインモードを区別するための制御信号ＢＬＳＥＮＥＮと、カラムデコーダ１６の出力信号ｂ０，・・・ｂ７，ｃ０，・・・ｃ３とのアンドロジックＡＮＤの結果ｂ０’，・・・ｂ７’，ｃ０’，・・・ｃ３’により行っていた。
【０２７９】
しかし、この場合、図１１に示すように、ページバッファＰ／Ｂ上に、制御信号ｂ０’，・・・ｂ７’，ｃ０’，・・・ｃ３’をトランジスタＭＮ２，ＭＮ３のゲートに伝えるための１２本の信号線が必要となる。このため、これら１２本の信号線やトランジスタＭＮ２，ＭＮ３の設計に負担がかかると共に、ページバッファＰ／Ｂ及びその近傍のレイアウト面積が増大していた。
【０２８０】
そこで、第２実施の形態では、これら信号線の数やトランジスタの数を減らすことができ、かつ、簡単な回路構成により、本発明に関わるベリファイリード及びベリファイデータインを実行することができる３Ｔｒ−ＮＡＮＤについて説明する。
【０２８１】
３．−３．−１．  全体図  
図２１は、本発明の第２実施の形態に関わる３Ｔｒ−ＮＡＮＤの主要部を示している。図２２は、図２１のページバッファＰ／Ｂを詳細に示している。
【０２８２】
図２１は、図１のブロック図に対応しているため、図２１に示すブロックのうち、図１と同じブロックには、同じ符号を付してある。また、図２１は、図１０の１つのセンスアンプＳ／Ａ・０と、これに接続される３２本のビット線（１つのビット線グループ）ＢＬ０，・・・ＢＬ３１に対応する部分を詳細に示すものであり、図１０の他のセンスアンプＳ／Ａ１，・・・Ｓ／Ａ２１と、これに接続される３２本のビット線も、当然に、図２１に示すような回路構成を有している。
【０２８３】
本例の回路が上述の第１実施の形態に関わる回路（図１１）と異なる点は、ページバッファＰ／Ｂとビット線との接続部のみであり、その他の部分については、上述の第１実施の形態に関わる回路と同じである。
【０２８４】
従って、以下の説明では、上述の第１の実施の形態に関わる回路に対して、本例の回路の特徴的な部分のみを説明し、その他の部分、即ち、上述の第１実施の形態に関わる回路と同じ部分については、その説明を省略する。
【０２８５】
図２２に示すように、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ２は、ＮチャネルＭＯＳトランジスタＭＮ２１，ＭＮ４を経由して接地点に接続される。トランジスタＭＮ２１のゲートには、制御信号ＢＬＳＥＮＥＮが入力される。制御信号ＢＬＳＥＮＥＮは、ベリファイリード時には、“Ｌ”レベルとなり、ベリファイデータイン時には、“Ｈ”レベルとなる。
【０２８６】
本例の回路では、上述の第１実施の形態に関わる回路（図１１）に比べて、ページバッファＰ／Ｂ近傍の回路構成が非常に簡単になっている。つまり、ページバッファＰ／Ｂ上には、制御信号ＢＬＳＥＮＥＮをトランジスタＭＮ２１のゲートに伝える１本の信号線のみが配置され、図１１の回路（１２本の信号線が必要）に比べて、大幅に、信号線の数を減らすことができる。
【０２８７】
また、同時に、本例の回路では、ページバッファＰ／Ｂ近傍におけるトランジスタ数も大幅に削減できる。
【０２８８】
従って、ページバッファＰ／Ｂ近傍における回路のレイアウト面積を小さくでき、かつ、非常に簡単な回路構成により、本発明に関わるベリファイリード及びベリファイデータインを実行することができる
但し、本例では、ベリファイデータイン時に、全てのカラムのページバッファＰ／Ｂがビット線に電気的に接続される。このため、非選択のカラムにおいて、ページバッファＰ／Ｂ内のラッチデータが変動しないような動作タイミング上の工夫が必要である。
【０２８９】
それについては、以下のプログラムベリファイ動作の説明において詳細に説明することにする。
【０２９０】
３．−３．−２．  プログラムベリファイ  
例えば、データ書き換え時におけるプログラムベリファイについて説明する。なお、データ書き換え動作については、上述の第１実施の形態において、既に、詳細に説明したので、その説明は省略する（項目３．−２．−３の“データ書き換え動作”を参照）。
【０２９１】
１回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。
【０２９２】
プログラムベリファイは、上述の第１実施の形態と同様に、図１９のフローチャートに示すように、ベリファイリードステップ、ベリファイデータインステップ、一括検知（ベリファイ）ステップとから構成される。
【０２９３】
また、ベリファイリードとベリファイデータインは、３２回（Ｃｏｌ．Ａｄｄ．＝１，２，・・・３２）連続して行われ、１回のベリファイリードとベリファイデータインでは、カラムアドレス信号Ａ０，・・・Ａ４により、同時に、１６ビット（１ワード）のメモリセルが選択される。
【０２９４】
図２３は、ベリファイリード時、ベリファイデータイン時及びベリファイ（一括検知）時における３Ｔｒ−ＮＡＮＤの動作を示す波形図である。
【０２９５】
以下、図１９、図２１、図２２及び図２３を参照しつつ、本発明に関わるビット毎ベリファイ時における動作について説明する。
【０２９６】
i.  ベリファイリード  
プログラムベリファイリードは、選択されたワード線に与えるリード電位Ｖｐｖを、正電位（例えば、０．５Ｖ程度）に設定する点を除けば、通常のデータリード（リード電位は、０Ｖ）と同様に行われる。
【０２９７】
但し、当然に、通常のデータリードでは、図２１の読み出し／書き込み回路内のセンスアンプでリードデータの検出（センシング）及びそのデータ値の判定を行った後に、リードデータをデータバスＤＡＴＡＢＵＳに出力するが、プログラムベリファイリードでは、図２１の読み出し／書き込み回路内のセンスアンプでリードデータの検出（センシング）及びそのデータ値の判定を行った後、図２１の読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１にリードデータ（ベリファイ結果）をラッチするだけである。
【０２９８】
プログラムベリファイリードのリード電位Ｖｐｖを正電位に設定するのは、通常のデータリードにおけるリード電位（０Ｖ）と“０”状態のメモリセルの閾値とのマージンを十分に確保するためである。
【０２９９】
具体的な動作について説明する。  
まず、制御信号ＢＬＲＳＴ，ＳＡＥＮが“Ｈ”レベルになるため、全てのビット線が接地電位Ｖｓｓにリセットされ、また、図２１の読み出し／書き込み回路内のトランジスタＭＮ１０がオン状態、センスアンプＳ／Ａ・０が動作状態になる。
【０３００】
この後、ビット線ＢＬが電源電位Ｖｄｄ（“Ｈ”レベル、即ち、“１”状態）にプリチャージされる（図２１では、プリチャージ回路は省略してある）。
【０３０１】
そして、全てのセルユニット内のソース側セレクトゲート線ＳＧＳの電位がＶｓｇ（例えば、約３．５Ｖ）に設定され、ソース線ＳＬ及びＰ型ウェル領域（Ｐ−ｗｅｌｌ）の電位は、共に、０Ｖに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位がＶｓｇに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位が０Ｖに設定される。
【０３０２】
また、全てのワード線の電位がリード電位Ｖｐｖに設定される。
【０３０３】
その結果、選択された１ページ分のメモリセルのデータは、ビット線に読み出される。また、制御信号Ｙｔｒａｎｓｆは、予め、“Ｈ”レベル（例えば、ＶｓｇＨＨＨ）に設定されているため、選択された１ページ分のメモリセルのリードデータは、図２１のトランジスタＭＮ９を経由して、ページバッファＰ／Ｂの入力部まで転送される。
【０３０４】
ここで、プログラムベリファイリードでは、制御信号ＢＬＳＥＮＥＮが“Ｌ”レベルとなっているため、常に、図２１及び図２２に示すトランジスタＭＮ２１は、オフ状態である。また、制御信号ＰＢＴＲも常に“Ｌ”レベルであり、図２１及び図２２に示すトランジスタＭＮ７もオフ状態である。
【０３０５】
従って、プログラムベリファイリードでは、選択された１ページ分のメモリセルのリードデータは、ページバッファＰ／Ｂの入力部まで転送されるが、ページバッファＰ／Ｂに入力されることがない。
【０３０６】
なお、メモリセルの閾値がＶｐｖを超えるときは、ビット線ＢＬの電位は、プリチャージ電位を維持する（“０”−プログラミング十分）。一方、メモリセルの閾値がＶｐｖを下回るときは、ビット線ＢＬの電位は、プリチャージ電位から接地電位に向かって次第に低下する（“０”−プログラミング不十分、又は、“１”−プログラミング）。
【０３０７】
このビット線ＢＬの電位変化は、図２１のセンスアンプＳ／Ａ・０により検出（センシング）される。但し、例えば、図２１に示すように、３２本のビット線ＢＬ０，・・・ＢＬ１５からなる１つのビット線グループでは、１本のビット線のみがセンスアンプＳ／Ａ・０に電気的に接続される。
【０３０８】
また、制御信号ＳＥＡＮが“Ｈ”レベルであるため、センスアンプＳ／Ａ・０で検出されたリードデータは、インバータＩ１を経由して、ラッチ回路ＬＡＴＣＨ１に検出される。
【０３０９】
ここで、通常のデータリードとは異なり、プログラムベリファイリードでは、制御信号ＳＡＯＵＴが“Ｌ”レベルに設定されているため、リードデータ（ベリファイリード結果）は、データバスＤＡＴＡＢＵＳに出力されることがない。リードデータをデータバスＤＡＴＡＢＵＳに出力しない理由は、大きな容量を有するデータバスＤＡＴＡＢＵＳにリードデータを出力すると、無駄な電力を消費することになるからである。
【０３１０】
この後、制御信号ＳＡＥＮが“Ｌ”レベルになり、制御信号ＳＡＥＮｎ（制御信号ＳＡＥＮの反転信号）が“Ｈ”レベルになると、リードデータは、図２１に示す読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１にラッチされる。
【０３１１】
ii.  ベリファイデータイン  
ベリファイリードが終了すると、続けて、ベリファイデータインが行われる。
【０３１２】
まず、制御信号Ｙｔｒａｎｓｆが“Ｈ”レベルから“Ｌ”レベルに低下するため、図２１に示すトランジスタＭＮ９がオフ状態となる。つまり、全てのページバッファＰ／Ｂの入力ノードとビット線とが互いに電気的に切断される。
【０３１３】
その理由は、大きな容量を有するビット線をページバッファＰ／Ｂから切り離すことにより、リードデータ（ベリファイリード結果）を、読み出し／書き込み回路のラッチ回路ＬＡＴＣＨ１から選択されたカラムのページバッファＰ／Ｂに転送する際に、非選択のカラムのページバッファＰ／Ｂの入力ノードの電位変動が防止できるからである。
【０３１４】
つまり、例えば、ベリファイリード結果が“０”−プログラミング十分であると、読み出し／書き込み回路から選択されたカラムのページバッファＰ／Ｂに、“１”（“Ｈ”レベル）のデータが転送される。この時、非選択カラムでは、ページバッファＰ／Ｂ内のラッチデータを変動させないために、ページバッファＰ／Ｂの入力ノードは、“０”状態（“Ｌ”レベル）に維持しておく必要がある。
【０３１５】
しかし、選択されたカラムのページバッファＰ／Ｂの入力ノードと非選択のカラムのページバッファＰ／Ｂの入力ノードの間の容量が大きいと、非選択カラムのページバッファＰ／Ｂの入力ノードが、容量カップリングにより、“０”状態から“１”状態（“０”−プログラミング十分）に変動し、非選択のカラムにおけるページバッファＰ／Ｂのラッチデータが変動する可能性がある。
【０３１６】
このような理由から、予め、全てのページバッファＰ／Ｂの入力ノードとビット線とが互いに電気的に切断される。
【０３１７】
また、本実施の形態では、全てのページバッファＰ／Ｂの入力ノードがビット線から電気的に切り離された後、制御信号ＢＬＲＳＴが“Ｈ”レベルとなり、全てのページバッファＰ／Ｂの入力ノードが“Ｌ”レベルにリセットされる。
【０３１８】
ベリファイデータイン時にページバッファＰ／Ｂの入力ノードを“Ｌ”レベルに設定する理由は、ベリファイデータイン時には、制御信号ＢＬＳＥＮＥＮが“Ｈ”レベルとなり、全てのカラムのトランジスタＭＮ２１がオン状態になるためである。つまり、非選択のカラムでは、図２１に示すトランジスタＭＮ４を常にオフ状態にして、非選択のカラムのページバッファＰ／Ｂのラッチデータが変動しないようにする必要があるからである。
【０３１９】
この後、制御信号ＤＩＮ２が“Ｈ”レベルとなるため、図２１に示すインバータＩ５が動作状態となり、ラッチ回路ＬＡＴＣＨ１内のリードデータ（ベリファイリード結果）が、カラムアドレス信号Ａ０，・・・Ａ４により選択されているビット線に転送される。
【０３２０】
当然に、プログラムベリファイリード時に選択されるビット線（センスアンプに電気的に接続されるビット線）と、ベリファイデータイン時に選択されるビット線は、同じである。
【０３２１】
この後、制御信号ＢＬＳＥＮＥＮが“Ｈ”レベルになると、図２１に示す全てのＮチャネルＭＯＳトランジスタＭＮ２１がオン状態になる。その結果、読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１から選択されたビット線に転送されたリードデータ（ベリファイリード結果）は、ＮチャネルＭＯＳトランジスタＭＮ４を経由して、ページバッファＰ／Ｂに入力される。
【０３２２】
この時、非選択のカラム（ビット線）では、上述したように、ページバッファＰ／Ｂの入力ノードが“Ｌ”レベルにリセットされ、かつ、選択されたカラムのページバッファの入力ノードと非選択のカラムのページバッファＰ／Ｂの入力ノードの間の容量は小さくなっているため、非選択カラムのページバッファＰ／Ｂのラッチデータが変動することはない。
【０３２３】
なお、ベリファイリード結果に応じて、ラッチデータ（ノードＮ１の値）が変化する様子は、図９に示す通りである。
【０３２４】
ベリファイデータイン時には、制御信号ＰＢＳＷが“Ｈ”レベルに設定される。これは、図２２に示すように、トランジスタＭＰ１をオフ状態にして、“０”−プログラミング十分のときに、ノードＮ２の値を“１”状態（“Ｈ”レベル）から“０”状態（“Ｌ”レベル）にするためである。
【０３２５】
iii.  一括検知（ベリファイ）  
上述の  i.ベリファイリード及び ii.ベリファイデータインが３２回（Ｃｏｌ．Ａｄｄ．＝１，２，・・・３２）だけ繰り返された後、選択された１ページ分の全てのメモリセルに対してプログラムが完全に行われたか否かを検証する一括検知動作が行われる。
【０３２６】
一括検知動作は、まず、全てのページバッファＰ／Ｂに共通の共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルに充電される。
【０３２７】
この後、制御信号ＰＢＶＦＹが“Ｈ”レベルとなり、トランジスタＭＮ６がオン状態になる。その結果、ラッチ回路ＬＡＴＣＨのノードＮ１が“０”状態、ノードＮ２が“１”状態のときは、トランジスタＭＮ５がオン状態となり、ラッチ回路ＬＡＴＣＨのノードＮ１が“１”状態、ノードＮ２が“０”状態のときは、トランジスタＭＮ５がオフ状態となる。
【０３２８】
つまり、共通ノードは、全てのページバッファに接続されているため、共通ノードの電位ＰＢＦＬＧは、全てのページバッファ内のラッチ回路ＬＡＴＣＨのノードＮ２が“０”レベルの場合に、“Ｈ”レベルを維持する。共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルであるということは、全ての“０”−プログラミングセルに対して、“０”−プログラミングが十分となったことを意味する。
【０３２９】
従って、この場合には、この後、プログラム動作を終了する。
【０３３０】
一方、少なくとも１つのページバッファ内のラッチ回路ＬＡＴＣＨのノードＮ２が“１”レベルの場合には、共通ノードの電位ＰＢＦＬＧは、“Ｈ”レベルから“Ｌ”レベルに変化する。共通ノードの電位ＰＢＦＬＧが“Ｌ”レベルであるということは、少なくとも１つの“０”−プログラミングセルに関して、“０”−プログラミングが不十分であることを意味する。
【０３３１】
従って、この場合には、プログラム電位Ｖｐｇｍをステップアップした後に、再び、プログラム動作を実行する。
【０３３２】
３．−３．−３．  まとめ  
第２実施の形態に関わる回路では、信号線の数やトランジスタの数が大幅に削減されるため、ページバッファＰ／Ｂのレイアウト面積が小さくなり、かつ、その設計が容易になる、という効果を奏することができる。
【０３３３】
また、本発明に関わるベリファイリード及びベリファイデータインを行う場合には、非選択カラムにおけるラッチデータの変動防止などの観点から、動作タイミングを上述のように工夫する必要がある。この動作タイミングでは、制御信号Ｙｔｒａｎｓｆのレベルを、繰り返し、“Ｈ”から“Ｌ”、又は、“Ｌ”から“Ｈ”に変動させる必要がある。
【０３３４】
しかし、制御信号Ｙｔｒａｎｓｆが入力されるトランジスタＭＮ９のゲートは、ビット線との間に大きな容量を有している。従って、制御信号Ｙｔｒａｎｓｆのレベルを、度々、変動させるということは、大きな電力を消費することを意味する。
【０３３５】
以上より、本発明を実際の製品に適用するに当たっては、その製品の用途などを考慮の上、第１実施の形態を採用するか、又は、第２実施の形態を採用するかを決定すればよい。
【０３３６】
３．−４．  第３実施の形態  
以下、本発明の第３実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
【０３３７】
上述の第１実施の形態（図１１）では、１回のプログラム動作が終了した後、ベリファイリード及びベリファイデータインが、３２回繰り返し行われ、さらに、この後、一括検知（ベリファイ）が行われていた。
【０３３８】
ベリファイリード及びベリファイデータインが複数回（例えば、３２回）繰り返される理由は、ベリファイ時に、リードデータ（ベリファイリード結果）を検出及び判定するセンスアンプの数がビット線の数よりも少ないためである。上述の第１実施の形態に関わる３Ｔｒ−ＮＡＮＤでは、データ領域に関しては、５１２本のビット線に対して、１６個（１ワード分）のセンスアンプが配置されるため、結果として、１ページ分（５１２ビット＝３２ワード）の全てのメモリセルについてベリファイを行う場合には、図１９に示すように、ベリファイリード及びベリファイデータインを３２回繰り返す必要がある。
【０３３９】
しかし、この場合、一括検知（ベリファイ）は、１ページ分の全てのメモリセルに対して行われるため、例えば、３２のカラムアドレス（Ｃｏｌ．Ａｄｄ．＝１，２，・・・３２）のうち、１個以上の所定のカラムアドレスに対応する１６個のメモリセルについては、一括検知がパス（“０”−プログラミング十分）であっても、常に、３２のカラムアドレスについて１回ずつ、合計、３２回のベリファイリード及びベリファイデータインを、１ページ分の全てのメモリセルの一括検知がパスするまで、行わなければならなかった。
【０３４０】
このため、上述の第１実施の形態に関わるベリファイ手法では、ベリファイに要する時間が非常に長くなる場合がある。
【０３４１】
そこで、第３実施の形態では、１ページ分の全てのメモリセルに対する一括検知を行うと共に、カラムアドレス毎に、ベリファイリード及びベリファイデータインを行った後に、そのカラムアドレスに対応する１６個のメモリセルに対して一括検知を行い（これを、“カラムアドレス毎一括検知”と称する。）、カラムアドレス毎一括検知がパスしたカラムアドレスのメモリセルに対しては、この後、ベリファイリード及びベリファイデータインを行わない新規なベリファイ手法を提案する。
【０３４２】
このベリファイ手法によれば、カラムアドレス毎一括検知がパスしたカラムアドレスのメモリセルに対しては、ベリファイリード及びベリファイデータインを省略できるため、ベリファイ時間の短縮に貢献できる。
【０３４３】
なお、このベリファイ手法は、“０”−プログラミング不十分のメモリセルの数が少ない場合に効果的であり、逆に、“０”−プログラミング不十分のメモリセルの数が多い場合には、結局、ほとんど全てのカラムアドレスに対応するメモリセルについて、ベリファイリード及びベリファイデータインを行わなければならず、効果的でない。
【０３４４】
つまり、“０”−プログラミング不十分のメモリセルの数が多い場合には、カラムアドレス毎一括検知のステップの増加分の影響が大きくなり、逆に、ベリファイ時間が増大する。これを解決する手法については、後述する。
【０３４５】
３．−４．−１．  全体図  
図２４は、本発明の第３実施の形態に関わる３Ｔｒ−ＮＡＮＤの主要部を示している。図２５は、図２４のページバッファＰ／Ｂを詳細に示している。
【０３４６】
図２４は、図１のブロック図に対応しているため、図２４に示すブロックのうち、図１と同じブロックには、同じ符号を付してある。また、図２４は、図１０の１つのセンスアンプＳ／Ａ・０と、これに接続される３２本のビット線（１つのビット線グループ）ＢＬ０，・・・ＢＬ３１に対応する部分を詳細に示すものであり、図１０の他のセンスアンプＳ／Ａ１，・・・Ｓ／Ａ２１と、これに接続される３２本のビット線も、当然に、図２４に示すような回路構成を有している。
【０３４７】
本例の回路が上述の第１実施の形態に関わる回路（図１１）と異なる点は、ベリファイリード時及びベリファイデータイン時にページバッファＰ／Ｂとビット線の電気的接続／切断を制御すると共に、一括検知時に一括検知を制御する部分のみであり、その他の部分については、上述の第１実施の形態に関わる回路と同じである。
【０３４８】
従って、以下の説明では、上述の第１の実施の形態に関わる回路に対して、本例の回路の特徴的な部分のみを説明し、その他の部分、即ち、上述の第１実施の形態に関わる回路と同じ部分については、その説明を省略する。
【０３４９】
図２５に示すように、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ２は、ＮチャネルＭＯＳトランジスタＭＮ２，ＭＮ３，ＭＮ４を経由して接地点に接続されている。また、一括検知のための共通ノードと接地点の間には、ＮチャネルＭＯＳトランジスタＭＮ５，ＭＮ２’，ＭＮ３’が直列に接続されている。そして、トランジスタＭＮ２，ＭＮ２’のゲートには、制御信号ＢＬＳＥＮＡｉが入力され、トランジスタＭＮ３，ＭＮ３’のゲートには、制御信号ＢＬＳＥＮＢｊが入力される。
【０３５０】
制御信号ＢＬＳＥＮＡｉ，ＢＬＳＥＮＢｊは、ロジック回路ＬＯＧＩＣにより生成される。ロジック回路ＬＯＧＩＣは、図１１に示す第１実施の形態に関わるアンド回路ＡＮＤを変形したものである。制御信号ＢＬＳＥＮＡｉ，ＢＬＳＥＮＢｊは、制御信号ＢＬＳＥＮＥＮ，ＶＥＲＩＦＹｎ及びカラムセレクト信号ｂ０，・・・ｂ７，ｃ０，・・・ｃ３により生成される。
【０３５１】
なお、図２４の信号ｂ０’，・・・ｂ７’，ｃ０’，・・・ｃ３’の一部が図２５の制御信号ＢＬＳＥＮＡｉ，ＢＬＳＥＮＢｊに相当している。
【０３５２】
３．−４．−２．  プログラムベリファイ  
以下、データ書き換え時におけるプログラムベリファイについて説明する。なお、データ書き換え動作については、上述の第１実施の形態において、既に、詳細に説明したので、その説明は省略する（項目３．−２．−３の“データ書き換え動作”を参照）。
【０３５３】
図２６に示すように、データロード及びイレーズが行われた後、プログラムステップが行われる。１回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。プログラムベリファイは、カラムアドレス毎一括検知ステップ、ベリファイリードステップ、ベリファイデータインステップ、一括検知ステップとから構成される。
【０３５４】
１ページ分の全てのメモリセルに対する一括検知を行う理由は、１つのカラムアドレスの１６＋６個のメモリセルに対するカラムアドレス毎一括検知を、その１６＋６個のメモリセルに対するベリファイリード及びベリファイデータインの前に行っているためである。
【０３５５】
つまり、カラムアドレス毎一括検知がパス（“０”−プログラミング十分）の場合には、そのカラムアドレスのメモリセルに対しては、ベリファイリード及びベリファイデータインを行う必要がない。しかし、カラムアドレス毎一括検知がフェイル（“０”−プログラミング不十分）の場合には、プログラムステップの結果を判定するために、そのカラムアドレスのメモリセルに対して、ベリファイリード及びベリファイデータインを行う必要がある。
【０３５６】
従って、カラムアドレス毎一括検知がフェイルの場合には、そのカラムアドレスのメモリセルに対するベリファイリード及びベリファイデータインが行われた後に、そのベリファイリード結果を検証する一括検知が必要になる。
【０３５７】
図２７は、ベリファイリード時、ベリファイデータイン時及びベリファイ（一括検知）時における３Ｔｒ−ＮＡＮＤの動作を示す波形図である。
【０３５８】
以下、図２４、図２５、図２６及び図２７を参照しつつ、本発明に関わるビット毎ベリファイ時における動作について説明する。
【０３５９】
i.  カラムアドレス毎一括検知  
まず、カラムアドレス毎一括検知では、制御信号ＶＥＲＩＦＹｎ，ＢＬＳＥＮＥＮが“Ｈ”レベルに設定される。制御信号ＶＥＲＩＦＹｎ，ＢＬＳＥＮＥＮが“Ｈ”レベルであるため、図２４及び図２５のロジック回路ＬＯＧＩＣ回路が活性化される。具体的には、ロジック回路ＬＯＧＩＣの後段のＮＡＮＤ回路がインバータとして機能するため、カラムセレクト信号ｂ０，・・・ｂ７，ｃ０，・・・ｃ３に基づいて、１つのカラムにおける制御信号ＢＬＳＥＮＡｉ，ＢＬＳＥＮＢｊのみが“Ｈ”レベルになる。
【０３６０】
従って、カラムアドレス信号により選択された（１６＋６）のカラムにおいては、図２５に示すトランジスタＭＮ２’，ＭＮ３’がオン状態となり、その他の非選択のカラムにおいては、図２５に示すトランジスタＭＮ２’，ＭＮ３’がオフ状態となる。
【０３６１】
つまり、選択されたカラムのメモリセル、即ち、１つのカラムアドレスに対応する１６＋６個のメモリセルに対してのみ、カラムアドレス毎一括検知が可能な状態となり、非選択のカラムのメモリセル、即ち、その他のカラムアドレスに対応するメモリセルに対しては、カラムアドレス毎一括検知が不可能な状態となる。
【０３６２】
一方、全てのカラムのページバッファＰ／Ｂに共通の一括検知のための共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルにプリチャージされる。
【０３６３】
この後、制御信号ＰＢＶＦＹが“Ｈ”になると、選択されたカラムのページバッファＰ／Ｂ内のラッチデータに応じて、共通ノードの電位ＰＢＦＬＧの電位が変化する。非選択のカラムのページバッファＰ／Ｂでは、トランジスタＭＮ２’，ＭＮ３’がオフ状態であるため、共通ノードの電位ＰＢＦＬＧに影響を与えることがない。
【０３６４】
例えば、選択されたカラム内の全てのページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ２が“０”レベルの場合には、共通ノードの電位ＰＢＦＬＧは、“Ｈ”レベルを維持する。共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルであるということは、選択されたカラム内の全ての“０”−プログラミングセルに対して、“０”−プログラミングが十分となったことを意味する。
【０３６５】
従って、この場合には、このカラムアドレスに対応するメモリセルのベリファイリード及びベリファイデータインは省略され、次のカラムアドレスに対応するメモリセルについてカラムアドレス毎一括検知が行われる。
【０３６６】
また、選択されたカラム内の少なくとも１つのページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ２が“１”レベルの場合には、共通ノードの電位ＰＢＦＬＧは、“Ｈ”レベルから“Ｌ”レベルに変化する。共通ノードの電位ＰＢＦＬＧが“Ｌ”レベルであるということは、選択されたカラム内の少なくとも１つの“０”−プログラミングセルに関して、“０”−プログラミングが不十分であることを意味する。
【０３６７】
従って、この場合には、このカラムアドレスに対応するメモリセルのベリファイリード及びベリファイデータインを行った後に、次のカラムアドレスに対応するメモリセルについてカラムアドレス毎一括検知を行う。
【０３６８】
ii.  ベリファイリード  
プログラムベリファイリードは、選択されたワード線に与えるリード電位Ｖｐｖを、正電位（例えば、０．５Ｖ程度）に設定する点を除けば、通常のデータリード（リード電位は、０Ｖ）と同様に行われる。
【０３６９】
但し、当然に、通常のデータリードでは、図２４の読み出し／書き込み回路内のセンスアンプでリードデータの検出（センシング）及びそのデータ値の判定を行った後に、リードデータをデータバスＤＡＴＡＢＵＳに出力するが、プログラムベリファイリードでは、図２４の読み出し／書き込み回路内のセンスアンプでリードデータの検出（センシング）及びそのデータ値の判定を行った後、図２４の読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１にリードデータ（ベリファイ結果）をラッチするだけである。
【０３７０】
プログラムベリファイリードのリード電位Ｖｐｖを正電位に設定するのは、通常のデータリードにおけるリード電位（０Ｖ）と“０”状態のメモリセルの閾値とのマージンを十分に確保するためである。
【０３７１】
具体的な動作について説明する。  
まず、制御信号ＢＬＲＳＴ，ＳＡＥＮが“Ｈ”レベルになるため、全てのビット線が接地電位Ｖｓｓにリセットされ、また、図２４の読み出し／書き込み回路内のトランジスタＭＮ１０がオン状態、センスアンプＳ／Ａ・０が動作状態になる。
【０３７２】
この後、ビット線ＢＬが電源電位Ｖｄｄ（“Ｈ”レベル、即ち、“１”状態）にプリチャージされる（図２４では、プリチャージ回路は省略してある）。
【０３７３】
そして、全てのセルユニット内のソース側セレクトゲート線ＳＧＳの電位がＶｓｇ（例えば、約３．５Ｖ）に設定され、ソース線ＳＬ及びＰ型ウェル領域（Ｐ−ｗｅｌｌ）の電位は、共に、０Ｖに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位がＶｓｇに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位が０Ｖに設定される。
【０３７４】
また、全てのワード線の電位がリード電位Ｖｐｖに設定される。
【０３７５】
その結果、選択された１ページ分のメモリセルのデータは、ビット線に読み出される。また、制御信号Ｙｔｒａｎｓｆは、予め、“Ｈ”レベル（例えば、ＶｓｇＨＨＨ）に設定されているため、選択された１ページ分のメモリセルのリードデータは、図２４のトランジスタＭＮ９を経由して、ページバッファＰ／Ｂの入力部まで転送される。
【０３７６】
ここで、プログラムベリファイリードでは、制御信号ＢＬＳＥＮＥＮが“Ｌ”レベル、制御信号ＶＥＲＩＦＹｎが“Ｈ”レベルとなっているため、図２４に示す全ての制御信号ｂ０’，・・・ｂ７’，ｃ０’，・・・ｃ３’は、“Ｌ”レベルになる。つまり、全てのカラムにおいて、制御信号ＢＬＳＥＮＡｉ，ＢＬＳＥＮＢｊは、“Ｌ”レベルであり、常に、図２４及び図２５に示すトランジスタＭＮ２，ＭＮ３は、オフ状態である。また、制御信号ＰＢＴＲも常に“Ｌ”レベルであり、トランジスタＭＮ７もオフ状態である。
【０３７７】
従って、プログラムベリファイリードでは、選択された１ページ分のメモリセルのリードデータは、ページバッファＰ／Ｂの入力部まで転送されるが、ページバッファＰ／Ｂに入力されることがない。
【０３７８】
なお、メモリセルの閾値がＶｐｖを超えるときは、ビット線ＢＬの電位は、プリチャージ電位を維持する（“０”−プログラミング十分）。一方、メモリセルの閾値がＶｐｖを下回るときは、ビット線ＢＬの電位は、プリチャージ電位から接地電位に向かって次第に低下する（“０”−プログラミング不十分、又は、“１”−プログラミング）。
【０３７９】
このビット線ＢＬの電位変化は、図２４のセンスアンプＳ／Ａ・０により検出（センシング）される。但し、例えば、図２４に示すように、３２本のビット線ＢＬ０，・・・ＢＬ１５からなる１つのビット線グループでは、１本のビット線のみがセンスアンプＳ／Ａ・０に電気的に接続される。
【０３８０】
また、制御信号ＳＥＡＮが“Ｈ”レベルであるため、センスアンプＳ／Ａ・０で検出されたリードデータは、インバータＩ１を経由して、ラッチ回路ＬＡＴＣＨ１に検出される。
【０３８１】
ここで、通常のデータリードとは異なり、プログラムベリファイリードでは、制御信号ＳＡＯＵＴが“Ｌ”レベルに設定されているため、リードデータ（ベリファイリード結果）は、データバスＤＡＴＡＢＵＳに出力されることがない。リードデータをデータバスＤＡＴＡＢＵＳに出力しない理由は、大きな容量を有するデータバスＤＡＴＡＢＵＳにリードデータを出力すると、無駄な電力を消費することになるからである。
【０３８２】
この後、制御信号ＳＡＥＮが“Ｌ”レベルになり、制御信号ＳＡＥＮｎ（制御信号ＳＡＥＮの反転信号）が“Ｈ”レベルになると、リードデータは、図２４に示す読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１にラッチされる。
【０３８３】
iii.  ベリファイデータイン  
ベリファイリードが終了すると、続けて、ベリファイデータインが行われる。
【０３８４】
まず、制御信号ＤＩＮ２が“Ｈ”レベルとなるため、図２４に示すインバータＩ５が動作状態となり、ラッチ回路ＬＡＴＣＨ１内のリードデータ（ベリファイリード結果）が、カラムアドレス信号Ａ０，・・・Ａ４により選択されているビット線に転送される。
【０３８５】
当然に、プログラムベリファイリード時に選択されるビット線（センスアンプに電気的に接続されるビット線）と、ベリファイデータイン時に選択されるビット線は、同じである。
【０３８６】
この後、制御信号ＢＬＳＥＮＥＮが“Ｈ”レベルになると、図２４に示すロジック回路ＬＯＧＩＣが活性化され、選択されたビット線（カラム）に対応するＮチャネルＭＯＳトランジスタＭＮ２，ＭＮ３のみがオン状態になる。その結果、読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１からビット線に転送されたリードデータ（ベリファイリード結果）は、ＮチャネルＭＯＳトランジスタＭＮ４を経由して、ページバッファＰ／Ｂに入力される。
【０３８７】
ここで、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのデータ（ノードＮ２の値）は、ベリファイリード結果に応じて変化する。
【０３８８】
例えば、選択されたメモリセルが、“０”−プログラミングの対象となるセルであり、かつ、“０”−プログラミングが十分である場合には、リードデータ、即ち、トランジスタＭＮ４のゲート電位は、“１”状態（“Ｈ”レベル）となる。従って、トランジスタＭＮ４がオン状態となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、接地点Ｖｓｓに短絡され、接地電位（“０”状態）となる。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態から“１”状態に変化することになる。
【０３８９】
また、選択されたメモリセルが、“０”−プログラミングの対象となるセルであり、かつ、“０”−プログラミングが不十分である場合には、リードデータ、即ち、トランジスタＭＮ４のゲート電位は、“０”状態（“Ｌ”レベル）となる。従って、トランジスタＭＮ４は、オフ状態となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、接地点Ｖｓｓに短絡されることなく、“１”状態を保つ。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“０”状態を維持する。
【０３９０】
また、選択されたメモリセルが、“１”−プログラミングの対象となるセルである場合には、プログラムは行われないため、リードデータ、即ち、トランジスタＭＮ４のゲート電位は、“０”状態（“Ｌ”レベル）となる。従って、トランジスタＭＮ４は、オフ状態となるため、ラッチ回路ＬＡＴＣＨのノードＮ２は、“０”状態を保つ。つまり、ラッチ回路ＬＡＴＣＨのノードＮ１は、“１”状態を維持する。
【０３９１】
従って、“０”−プログラミングの対象となるメモリセルの全てがプログラミング十分となった場合には、全てのページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ１が“１”状態（“Ｈ”レベル）になり、ノードＮ２が“０”状態（“Ｌ”レベル）になる。
【０３９２】
このようなベリファイリード結果に応じて、ラッチデータ（ノードＮ１の値）が変化する様子は、図９に示す通りである。
【０３９３】
即ち、“０”−プログラミングの場合において、“０”−プログラミングが不十分（ベリファイリード結果、即ち、セルデータが“１”）と判断されたら、ラッチ回路ＬＡＴＣＨのノードＮ１を“０”状態のままとし、それ以降も、続けて“０”−プログラミング（再書き込み）が行われるようにする。
【０３９４】
なお、ベリファイデータイン時には、制御信号ＰＢＳＷが“Ｈ”レベルに設定される。これは、図２５に示すように、トランジスタＭＰ１をオフ状態にして、“０”−プログラミング十分のときに、ノードＮ２の値を“１”状態（“Ｈ”レベル）から“０”状態（“Ｌ”レベル）にするためである。
【０３９５】
iv.  一括検知（ベリファイ）  
上述の  i.カラムアドレス毎一括検知、 ii.ベリファイリード及びiii.ベリファイデータインが３２回（Ｃｏｌ．Ａｄｄ．＝１，２，・・・３２）だけ繰り返された後（ ii.及びiii.については、  i.の結果がパスのときは、省略される。）、選択された１ページ分の全てのメモリセルに対してプログラムが完全に行われたか否かを検証する一括検知動作が行われる。
【０３９６】
一括検知動作では、まず、全てのページバッファＰ／Ｂに共通の共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルに充電される。また、制御信号ＢＬＲＳＴが“Ｈ”レベルになり、全てのページバッファＰ／Ｂの入力ノードが“Ｌ”にリセットされる。
【０３９７】
この後、制御信号ＶＥＲＩＦＹｎが“Ｌ”レベルになると、図２４に示すロジック回路ＬＯＧＩＣの全ての出力信号はｂ０’，・・・ｂ７’，ｃ０’，・・・ｃ３’は、“Ｈ”レベルになる。つまり、全てのカラムにおいて、制御信号ＢＬＳＥＮＡｉ，ＢＬＳＥＮＢｊが“Ｈ”レベルとなり、ＭＯＳトランジスタＭＮ２’，ＭＮ３’がオン状態になる。
【０３９８】
これにより、１ページ分の全てのメモリセルに対する一括検知の準備が整うことになる。
【０３９９】
従って、制御信号ＰＢＶＦＹが“Ｈ”レベルとなり、トランジスタＭＮ６がオン状態になると、一括検知が行われる。
【０４００】
具体的には、ラッチ回路ＬＡＴＣＨのノードＮ１が“０”状態、ノードＮ２が“１”状態のときは、トランジスタＭＮ５がオン状態となり、ラッチ回路ＬＡＴＣＨのノードＮ１が“１”状態、ノードＮ２が“０”状態のときは、トランジスタＭＮ５がオフ状態となる。
【０４０１】
つまり、共通ノードは、全てのページバッファＰ／Ｂに接続されているため、共通ノードの電位ＰＢＦＬＧは、全てのページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ２が“０”レベルの場合に、“Ｈ”レベルを維持する。共通ノードの電位ＰＢＦＬＧが“Ｈ”レベルであるということは、全ての“０”−プログラミングセルに対して、“０”−プログラミングが十分となったことを意味する。
【０４０２】
従って、この場合には、この後、プログラム動作を終了する。
【０４０３】
一方、少なくとも１つのページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ２が“１”レベルの場合には、共通ノードの電位ＰＢＦＬＧは、“Ｈ”レベルから“Ｌ”レベルに変化する。共通ノードの電位ＰＢＦＬＧが“Ｌ”レベルであるということは、少なくとも１つの“０”−プログラミングセルに関して、“０”−プログラミングが不十分であることを意味する。
【０４０４】
従って、この場合には、プログラム電位Ｖｐｇｍをステップアップした後に、再び、プログラム動作を実行する。
【０４０５】
３．−４．−３．  まとめ  
第３実施の形態に関わる回路では、カラムアドレス毎に、ベリファイリードを行う前に、そのカラムアドレスのメモリセルのみを対象とするカラムアドレス毎一括検知を行っている。
【０４０６】
このカラムアドレス毎一括検知をパスしたら、このカラムアドレスのメモリセルについては、既にプログラムが十分に完了しているため、ベリファイリード及びベリファイデータインを行わず、次のカラムアドレスのメモリセルのみを対象とするカラムアドレス毎一括検知にステップを進める。
【０４０７】
これにより、既にプログラムが完了しているカラムアドレスのメモリセルについては、ベリファイリード及びベリファイデータインを省略することができるため、ベリファイ時間の短縮に貢献できる。
【０４０８】
また、カラムアドレス毎一括検知がフェイルの場合には、このカラムアドレスのメモリセルのうちの少なくとも１つがプログラム不十分であることを意味しているため、ベリファイリード及びベリファイデータインを行った後、次のカラムアドレスのメモリセルのみを対象とするカラムアドレス毎一括検知にステップを進める。
【０４０９】
そして、ステップの最後に、通常の一括検知を行い、この一括検知をパスしたら、プログラム動作を終了し、この一括検知の結果がフェイルの場合には、プログラム電位Ｖｐｇｍをステップアップして、再度、プログラム動作を行う。
【０４１０】
このような動作は、図２４及び図２５に示すように、トランジスタＭＮ２’，ＭＮ３’及びロジック回路ＬＯＧＩＣを新規に追加することにより達成することができる。
【０４１１】
本実施の形態に関わるベリファイ手法は、プログラム不十分のメモリセルが少ない場合に効果的である。即ち、プログラム不十分のメモリセルが少なければ、ベリファイリード及びベリファイデータインが省略されるカラムアドレスも多くなるからである。
【０４１２】
従って、本実施の形態に関わるベリファイ手法は、プログラム不十分のメモリセルが多い場合には不向きである。これは、プログラム不十分のメモリセルが多いと、ベリファイリード及びベリファイデータインが省略されるカラムアドレスが存在しないか又は非常に少なくなり、結果として、カラムアドレス毎一括検知を追加することにより要する時間が多くなるためである。
【０４１３】
但し、この問題は、以下の手法を採用することにより回避できる。
【０４１４】
プログラム電位Ｖｐｇｍをステップアップさせるプログラム手法では、通常、プログラム動作の回数が少なく、プログラム電位Ｖｐｇｍが低い場合には、ほとんどのメモリセルがプログラム不十分になっているのに対し、プログラム動作の回数が多くなり、プログラム電位Ｖｐｇｍが高くなると、ほとんどのメモリセルがプログラム十分になっている。
【０４１５】
このような場合には、本実施の形態のベリファイ手法を、プログラム回数が少ない段階から適用するのは、カラムアドレス毎一括検知の時間が余分にかかり、妥当でない。また、第１実施の形態のベリファイ手法を、プログラム回数が多くなった後にも適用することは、既にプログラム十分なセルのみを含むカラムアドレスについても、ベリファイリード及びベリファイデータインを行わなければならず、妥当でない。
【０４１６】
この点に着目し、例えば、プログラム回数に応じて、ベリファイ手法の切り替えを行えば、上述の問題を回避することができる。  
例えば、プログラム回数が所定値未満（数回未満）のときは、第１実施の形態に関わるベリファイ手法を採用し、プログラム回数が所定値以上になった場合には、本実施の形態に関わるベリファイ手法を採用するようにする。
【０４１７】
このようにすれば、カラムアドレス毎一括検知がフェイルする可能性が高いプログラム回数が少ない段階では、カラムアドレス毎一括検知が行われないため、その分だけ、ベリファイ時間を短縮できる。また、カラムアドレス毎一括検知がパスする可能性が高いプログラム回数が多い段階では、カラムアドレス毎一括検知が行われ、その結果、ベリファイリード及びベリファイデータインが省略される場合があるので、ベリファイ時間をさらに短縮できる。
【０４１８】
３．−５．  第４実施の形態  
以下、本発明の第４実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
【０４１９】
上述の第１及び第２実施の形態（図１９）では、１回のプログラム動作が終了した後、ベリファイリード及びベリファイデータインが、３２回繰り返し行われ、さらに、この後、一括検知（ベリファイ）が行われていた。
【０４２０】
また、上述の第３実施の形態（図２６）では、１回のプログラム動作が終了した後、カラムアドレス毎一括検知が行われ、このカラムアドレス毎一括検知をパスしたカラムアドレスのメモリセルについては、ベリファイリード及びベリファイデータインが省略され、このカラムアドレス毎一括検知がフェイルのカラムアドレスのメモリセルについてのみ、ベリファイリード及びベリファイデータインが行われ、さらに、ステップの最後に、１ページ分のメモリセルに対する通常の一括検知が行われていた。
【０４２１】
第３実施の形態に関わるベリファイ手法は、第１実施の形態に関わるベリファイ手法から余分なベリファイリード及びベリファイデータインを省くことを目的に提案されたものである。
【０４２２】
本実施の形態に関わるベリファイ手法も、第３実施の形態と同様に、第１実施の形態に関わるベリファイ手法から余分なベリファイリード及びベリファイデータインを省くことを目的に提案したものである。
【０４２３】
本実施の形態では、新規に、ワード単位一括検知ステップを設けているが、このワード単位一括検知ステップは、第３実施の形態におけるカラムアドレス毎一括検知ステップと同じと考えてよい。従って、本実施の形態に関わるベリファイ手法は、第３実施の形態において説明した回路（図２４及び図２５）をそのまま用いて実現することができる。
【０４２４】
３．−５．−１．  全体図  
本実施の形態に関わるベリファイ手法は、例えば、上述の第３実施の形態において説明した回路（図２４及び図２５）をそのまま用いて実現することができる。従って、本実施の形態に関わる３Ｔｒ−ＮＡＮＤの全体図は、図２４及び図２５に示すようになる。
【０４２５】
３．−５．−２  プログラムベリファイ  
１回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。
【０４２６】
プログラムベリファイは、図２８のフローチャートに示すように、ベリファイリードステップ、ベリファイデータインステップ、ワード単位一括検知（ベリファイ）ステップとから構成される。
【０４２７】
本実施の形態におけるプログラムベリファイの特徴は、カラムアドレスＣｏｌ．Ａｄｄ．毎に、ベリファイリード、ベリファイデータイン及びワード単位一括検知を行うと共に、そのカラムアドレスＣｏｌ．Ａｄｄ．のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスＣｏｌ．Ａｄｄ．に進むことなく、繰り返し、同じカラムアドレスＣｏｌ．Ａｄｄ．に対して、ベリファイリード、ベリファイデータイン及びワード単位一括検知を行う点にある。
【０４２８】
以下、図２８及び図２９を参照しつつ、本実施の形態におけるプログラムベリファイについて具体的に説明する。なお、図２９は、本実施の形態に関わるプログラムベリファイのシーケンスの概念図である。
【０４２９】
まず、カラムアドレスＣｏｌ．Ａｄｄ＝１に設定され、このカラムアドレスのメモリセル（カラム）が選択される。１つのカラムアドレスにより選択されるメモリセル（カラム）の数は、１６＋６個である（１６個は、データ領域のメモリセル、６個は、パリティビット領域のメモリセルである）。
【０４３０】
この後、カラムアドレスＣｏｌ．Ａｄｄ＝１のメモリセルに対して、ベリファイリード及びベリファイデータインが行われる。ベリファイリード及びベリファイデータインの具体的な動作については、上述の第３実施の形態で説明したベリファイリード及びベリファイデータインと同じであるため、その説明については、省略する（必要ならば、項目３．−４．−２．“プログラムベリファイ”の ii.ベリファイリード及びiii.ベリファイデータインを参照）。
【０４３１】
また、続けて、ワード単位一括検知が行われる。ワード単位一括検知の具体的な動作については、上述の第３実施の形態で説明したカラムアドレス毎一括検知と同じであるため、その説明については、省略する（必要ならば、項目３．−４．−２．“プログラムベリファイ”の  i.カラムアドレス毎一括検知を参照）。
【０４３２】
ワード単位一括検知は、カラムアドレスＣｏｌ．Ａｄｄ＝１のメモリセルについてのみ行われるものであり、他のカラムアドレスＣｏｌ．Ａｄｄ．＝２，３，・・・３２）のメモリセル（具体的には、非選択カラムのページバッファＰ／Ｂのラッチデータ）に影響を受けることがない。
【０４３３】
ワード単位一括検知の結果がフェイルの場合には、プログラム電位（例えば、１３Ｖ）Ｖｐｇｍ−ｉｎｉを、ｄＶ（例えば、１Ｖ）だけステップアップさせ、このステップアップされたプログラム電位Ｖｐｇｍ−ｉｎｉ＋ｄＶを用いて、再度、プログラム動作を実行する。この後、再び、カラムアドレスＣｏｌ．Ａｄｄ．＝１のメモリセルに対するベリファイリード、ベリファイデータイン及びワード単位一括検知が行われる。
【０４３４】
一方、ワード単位一括検知の結果がパスの場合には、カラムアドレスＣｏｌ．Ａｄｄ．を１つインクリメントし、次のカラムアドレスＣｏｌ．Ａｄｄ．＝２のメモリセルに対するベリファイリード、ベリファイデータイン及びワード単位一括検知が行われる。
【０４３５】
ここで、重要な点は、ベリファイリード、ベリファイデータイン及びワード単位一括検知は、１つのカラムアドレスＣｏｌ．Ａｄｄ．のメモリセルに対してのみ行われるが、プログラム動作については、１ページ分の全てのメモリセルに対して行われているということである。従って、カラムアドレスＣｏｌ．Ａｄｄ．がインクリメントされても、それに関係なく、プログラム電位Ｖｐｇｍは、プログラム回数のみに応じて、順次、ステップアップされる。
【０４３６】
以上の動作を、全てのカラムアドレスＣｏｌ．Ａｄｄ．について行う。つまり、本例では、最終カラムアドレスＣｏｌ．Ａｄｄ．＝３２のメモリセルに対するワード単位一括検知がパスしたときに、プログラム動作が終了する。
【０４３７】
３．−５．−３．  まとめ  
上述の第４実施の形態に関わるベリファイ手法によれば、カラムアドレスＣｏｌ．Ａｄｄ．毎に、ベリファイリード、ベリファイデータイン及びワード単位一括検知が行われると共に、そのカラムアドレスＣｏｌ．Ａｄｄ．のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスＣｏｌ．Ａｄｄ．に進むことなく、繰り返し、同じカラムアドレスＣｏｌ．Ａｄｄ．に対して、ベリファイリード、ベリファイデータイン及びワード単位一括検知が行われる。
【０４３８】
従って、ワード単位一括検知がパスしたカラムアドレスＣｏｌ．Ａｄｄ．については、その後、ベリファイリード及びベリファイデータインが行われることがない。このため、本実施の形態に関わるベリファイ手法では、最小限のベリファイリード及びベリファイデータインのみが行われるため、ベリファイ時間の短縮に貢献できる。
【０４３９】
例えば、本実施の形態に関わるベリファイ手法におけるベリファイ時間（ベリファイリードの回数）と、上述の第１及び第２実施の形態に関わるベリファイ手法におけるベリファイ時間（ベリファイリードの回数）を比較すると、以下のようになる。但し、１ページは、Ｎワードから構成され、１つのカラムアドレスに対応するメモリセル（１ワード分）のプログラムが完了するまでに、Ｍ回のプログラム動作が行われるものとする。
【０４４０】
即ち、上述の第１及び第２実施の形態に関わるベリファイ手法では、ベリファイリード及びベリファイデータインは、Ｎ×Ｍ回行われることになるが、本実施の形態に関わるベリファイ手法では、ベリファイリード及びベリファイデータインは、Ｎ＋Ｍ−１回行われることになる。
【０４４１】
具体的には、図２９の例で説明すると、カラムアドレスＣｏｌ．Ａｄｄ．が４つ（１，２，３，４）である場合には、上述の第１及び第２実施の形態では、カラムアドレスＣｏｌ．Ａｄｄ．＝１，・・・４及びプログラム電位Ｖｐｇｍ（１），・・・Ｖｐｇｍ（４）により構成される桝目が全て四角（１つの四角が１回のベリファイリード及びベリファイデータインに相当）で満たされることになり、合計、１６回のベリファイリード及びベリファイデータインが行われる。
【０４４２】
これに対し、本実施の形態では、カラムアドレスＣｏｌ．Ａｄｄ．＝１からカラムアドレスＣｏｌ．Ａｄｄ．＝４までの四角の数は、７個（＝４＋４−１）であり、７回のベリファイリード及びベリファイデータインのみで、ベリファイ動作が完了することが分かる。
【０４４３】
本実施の形態に関わるベリファイ手法では、１つのカラムアドレスＣｏｌ．Ａｄｄ．のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスＣｏｌ．Ａｄｄ．について、ベリファイリード及びベリファイデータインが行われることがない。
【０４４４】
従って、例えば、カラムアドレスＣｏｌ．Ａｄｄ＝１について、ベリファイリード及びベリファイデータインを行っているときに、既に、他のカラムアドレス、例えば、カラムアドレスＣｏｌ．Ａｄｄ．＝４については、全てのメモリセルのプログラムが完了していることも考えられる。
【０４４５】
つまり、カラムアドレスＣｏｌ．Ａｄｄ．＝４については、カラムアドレスＣｏｌ．Ａｄｄ．＝３におけるワード単位一括検知がパスした後でなければ、ベリファイリード及びベリファイデータインが行われないため、カラムアドレスＣｏｌ．Ａｄｄ．＝４については、既に、全てのメモリセルのプログラムが完了していても、ページバッファＰ／Ｂのラッチデータは、プログラム不十分を示している場合がある。
【０４４６】
このため、本実施の形態に関わるベリファイ手法では、例えば、最終のカラムアドレスＣｏｌ．Ａｄｄ．＝Ｎ（例えば、Ｎ＝４）のメモリセルについては、低いプログラム電位Ｖｐｇｍでプログラムが可能であっても、高いプログラム電位Ｖｐｇｍにまるまで、プログラム禁止状態にされない場合がある。
【０４４７】
例えば、図２９の例においても、カラムアドレスＣｏｌ．Ａｄｄ．＝４では、仮に、低いプログラム電位Ｖｐｇｍ（１）＝Ｖｐｇｍ−ｉｎｉでプログラムが可能であっても、高いプログラム電位Ｖｐｇｍ（４）＝Ｖｐｇｍ−ｉｎｉ＋３ｄＶにまるまで、プログラム禁止状態にされない。
【０４４８】
従って、本実施の形態に関わるベリファイ手法では、プログラム動作により、非常に高い閾値を持つメモリセルが発生することになる。
【０４４９】
しかし、上述したように、３Ｔｒ−ＮＡＮＤでは、その動作の特徴から、オーバープログラムは、全く問題とならないため、メモリセルの閾値が非常に高くなること自体は、メモリの動作に支障となることはない。
【０４５０】
但し、上述したように、オーバープログラムにより、そのメモリセルについては、トンネル酸化膜にストレスが過剰に生じるため、もし、トンネル酸化膜のストレスが問題となるような場合には、第３実施の形態に関わるベリファイ手法を採用することが得策である。
【０４５１】
３．−６．  第５実施の形態  
以下、本発明の第５実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
【０４５２】
上述の第３及び第４実施の形態に関わるベリファイ手法（図２６及び図２８）は、上述の第１及び第２実施の形態に関わるベリファイ手法（図１９）に比べて、ベリファイリード及びベリファイデータインの回数を減らすことができ、その結果、ベリファイ時間の短縮に貢献できる。
【０４５３】
しかし、第３及び第４実施の形態に関わるベリファイ手法は、カラムアドレス毎（又はワード単位）で一括検知（ベリファイ）が行われるため、一括検知の回数のみをとってみれば、その回数は、第１及び第２実施の形態に関わるベリファイ手法よりも多くなる。
【０４５４】
従って、カラムアドレス毎一括検知（又はワード単位一括検知）及び通常のページ単位一括検知に要する時間を短縮すれば、さらに、ベリファイ時間の短縮に貢献できることになる。
【０４５５】
以下に説明する第５実施の形態では、これら一括検知（ベリファイ）に要する時間を短縮することができる一括検知手法について説明する。  
なお、第５実施の形態に関わる一括検知手法は、当然に、上述した第１乃至第４実施の形態に関わる不揮発性半導体メモリのいずれに対しても適用することができる。
【０４５６】
３．−６．−１．  一括検知回路  
図３０は、本発明に関わる不揮発性半導体メモリに適用できる一括検知回路の例を示している。
【０４５７】
Ｐ／Ｂは、１ページ分のメモリセル（又は全カラム）に対応する１ページ分のページバッファである。例えば、図１及び図１０に示すようなブロックを有する３Ｔｒ−ＮＡＮＤの場合には、ページバッファＰ／Ｂは、７０４個（データ領域及びパリティビット領域を含む）となる。
【０４５８】
各ページバッファＰ／ＢのラッチノードＮ２（例えば、図１５、図２２又は図２５におけるラッチ回路ＬＡＴＣＨのノードＮ２に相当）は、トランジスタＭＮ５のゲートに接続される。トランジスタＭＮ５のソースは、トランジスタＭＮ６を経由して接地点に接続され、トランジスタＭＮ５のドレインは、一括検知のための共通ノードＸに接続される。
【０４５９】
ここまでは、図１５、図２２及び図２５のページバッファＰ／Ｂの説明と同じである。
【０４６０】
本実施の形態に関わる一括検知回路は、共通ノードＸがＮチャネルＭＯＳトランジスタＭＮ３１を経由して、検出ノードＹに接続されている。トランジスタＭＮ３１のゲートには、制御信号ＦＧＣＬＭＰが入力される。
【０４６１】
また、共通ノードＸと接地点の間には、ＮチャネルＭＯＳトランジスタＭＮ３２が接続される。トランジスタＭＮ３２のゲートには、制御信号ＦＧＲＳＴが入力される。トランジスタＭＮ３２は、共通ノードＸの電位をリセットする機能（ＦＢＦＬＧを“Ｌ”にする機能）を有する。
【０４６２】
また、検出ノードＹと内部電源端子の間には、ＰチャネルＭＯＳトランジスタＭＰ３１が接続される。トランジスタＭＰ３１のゲートには、制御信号ＦＧＰＲＥｎが入力される。トランジスタＭＰ３１は、一括検知を行う前に、共通ノードＸの電位ＦＢＦＬＧを“Ｈ”レベルにプリチャージする機能を有する。
【０４６３】
検出ノードＹは、インバータＩＮＶ．１に接続される。インバータＩＮＶ．１は、制御信号ＰＶＶＦＹが“Ｈ”レベルになったときに動作状態となり、共通ノードＸの電位変化（実際には、検出ノードＹの電位変化）を検出する。
【０４６４】
この一括検知回路の特徴は、共通ノードＸに生じる容量ＣＦがノードＣＳに生じる容量よりも十分に大きい点にある。即ち、一括検知に要する時間を短縮するためには、一括検知時に、共通ノードＸの電位ＰＢＦＬＧの変化を瞬時に検出することが必要になる。
【０４６５】
しかし、共通ノードＸは、全てのカラムのページバッファに接続されているため、共通ノードＸの容量は、非常に大きくなっている。このため、一括検知時における共通ノードＸの電位変化は緩やかなものとなり、例えば、トランジスタＭＮ３１が存在しないと仮定すると、インバータＩＮＶ．１がこの電位変化を検出する時間は、非常に長くなる。
【０４６６】
本実施の形態に関わる一括検知回路では、トランジスタＭＮ３１を設け、共通ノードＸの容量ＣＦよりも検出ノードＹの容量を十分に小さくしている。その結果、共通ノードＸの電位変化が緩やかでっても（又は小さくても）、電荷保存の法則から、検出ノードＹの電位変化は、急速（又は大きく）なる。
【０４６７】
従って、インバータＩＮＶ．１は、制御信号ＰＶＶＦＹが“Ｈ”レベルになった後、直ちに、共通ノードＸの電位変化（実際には、検出ノードＹの電位変化）を検出することができ、一括検知のための時間、さらには、ベリファイ時間を短縮することができる。
【０４６８】
３．−６．−２．  一括検知動作  
図３１は、図３０の一括検知回路を用いた場合における一括検知動作のタイミングチャートを示している。
【０４６９】
以下、図３０及び図３１を参照しつつ、本実施の形態に関わる一括検知動作について説明する。  
まず、制御信号ＦＧＲＳＴを“Ｈ”レベルに設定し、トランジスタＭＮ３２をオン状態にする。また、制御信号ＦＧＣＬＭＰは、２Ｖ程度に設定される。その結果、共通ノードＸの電位ＰＢＦＬＧ及び検出ノードＹの電位ＦＧＳＥＮが“Ｌ”レベル（接地電位Ｖｓｓ）にリセットされる。
【０４７０】
次に、制御信号ＦＧＰＲＥｎが“Ｌ”レベルとなると、検出ノードＹ及び共通ノードＸのプリチャージが行われる。ここで、プリチャージのためのトランジスタＭＰ３１は、検出ノードＹに接続され、また、ノードＸ，ＹをクランプするためのトランジスタＭＮ３１のゲートには、２Ｖ程度の電位（制御信号ＦＧＣＬＭＰ）が入力されている。
【０４７１】
このため、検出ノードＹは、内部電源電位Ｖｄｄ程度の電位に充電され（ＦＧＳＥＮ＝約２Ｖ）、共通ノードＸは、いわゆるトランジスタＭＮ３１の閾値落ちを考慮すると、１Ｖ程度の電位に充電される（ＰＢＦＬＧ＝約１Ｖ）。
【０４７２】
この後、制御信号ＦＧＣＬＭＰの電位を約０．１Ｖ下げ、１．９Ｖ程度に設定する。また、制御信号ＦＧＰＲＥｎを“Ｈ”レベルに設定すると共に、制御信号ＰＢＶＦＹを“Ｈ”レベルに設定すると、インバータＩＮＶ．１が動作状態になる。その結果、インバータＩＮＶ．１により、共通ノードＸの電位変化が検出される。
【０４７３】
即ち、全てのページバッファＰ／ＢのノードＮ２の電位が“Ｌ”レベルであれば（“０”−プログラミング十分又は“１”プログラミングの場合）、共通ノードＸの電位ＰＢＦＬＧは、プリチャージレベル（“Ｈ”レベル）を維持する。従って、インバータＩＮＶ．１の出力信号は、“Ｌ”レベル（一括検知パス）となる。
【０４７４】
一方、少なくとも１つのページバッファＰ／ＢのノードＮ２の電位が“Ｈ”レベルであれば（“０”−プログラミング不十分の場合）、共通ノードＸの電位ＰＢＦＬＧは、プリチャージレベル（“Ｈ”レベル）から次第に“Ｌ”レベルに向かって緩やかに低下する。また、この共通ノードＸの電位ＰＢＦＬＧの低下速度は、ノードＮ２が“Ｈ”レベルのページバッファＰ／Ｂ数が少なければ、さらに、遅くなる。
【０４７５】
しかし、本実施の形態に関わる一括検知回路では、検出ノードＹの容量ＣＳが共通ノードＸの容量ＣＦよりも十分に小さくなっている。このため、例えば、共通ノードＸの電位ＰＢＦＬＧが（０．１＋ΔＶＦ）だけ低下すると、電荷保存の法則により、検出ノードＹの電位ＦＧＳＥＮは、ΔＶＳ（＝ΔＶＦ×ＣＦ／ＣＳ）だけ低下する。
【０４７６】
このΔＶＳは、０．１＋ΔＶＦよりも十分に大きい値である。
【０４７７】
つまり、図３１に示すように、共通ノードＸの電位ＰＢＦＬＧの変化が小さくても、検出ノードＹの電位ＦＧＳＥＮの変化は、非常に大きなものとなる。結果として、共通ノードＸの電位変化が緩やかであっても、検出ノードＹの電位変化をインバータＩＮＶ．１により高速に検出することができる。
【０４７８】
従って、インバータＩＮＶ．１の出力信号は、高速に、“Ｈ”レベル（一括検知フェイル）となる。
【０４７９】
３．−６．−３．  まとめ  
以上、本発明の第５実施の形態に関わる一括検知回路によれば、一括検知に要する時間を大幅に短縮することができるため、ベリファイ時間の短縮に貢献できる。
【０４８０】
３．−７．  第６実施の形態  
以下、本発明の第６実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
【０４８１】
上述の第４実施の形態（図２８及び図２９）では、カラムアドレスＣｏｌ．Ａｄｄ．毎に、ベリファイリード、ベリファイデータイン及びワード単位一括検知を行うと共に、そのカラムアドレスＣｏｌ．Ａｄｄ．のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスＣｏｌ．Ａｄｄ．に進むことなく、繰り返し、同じカラムアドレスＣｏｌ．Ａｄｄ．に対して、ベリファイリード、ベリファイデータイン及びワード単位一括検知を行っている。
【０４８２】
そして、一度、ワード単位一括検知をパスしたカラムアドレスＣｏｌ．Ａｄｄ．のメモリセルに対しては、その後、ベリファイリード、ベリファイデータイン及び一括検知は、行われない。また、最終カラムアドレスのメモリセルについては、オーバープログラムが発生する可能性が高く、また、３Ｔｒ−ＮＡＮＤでは、オーバープログラムが発生しても、動作上、何ら問題が生じない。
【０４８３】
従って、第４実施の形態に関わるベリファイ手法の場合、特に、ページバッファＰ／Ｂ内のラッチデータ（プログラムデータ）を、ベリファイリード結果に応じて、変化させる必要はないのである。
【０４８４】
つまり、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨには、常に、チップ外部から入力されたプログラムデータをラッチしておき、ワード単位一括検知は、例えば、読み出し／書き込み回路内に設けられた一括検知回路を用い、ベリファイリードにより読み出されたリードデータとページバッファＰ／Ｂ内のラッチデータとに基づいて、行うことができる。
【０４８５】
この場合、読み出し／書き込み回路（センスアンプ）からページバッファＰ／Ｂにベリファイリード結果を転送するベリファイデータインステップは、不要となるため、このベリファイデータインのシーケンス分だけ、ベリファイ時間を短縮することができる。また、ページバッファＰ／Ｂ内に、ベリファイリード結果に応じてラッチデータを変化させるための回路や、一括検知のための回路などを配置する必要がなくなるため、ページバッファＰ／Ｂの簡略化及びレイアウト面積の縮小を達成することができる。
【０４８６】
但し、上述の第４実施の形態においても説明したが、オーバープログラムは、３Ｔｒ−ＮＡＮＤの動作上、全く問題とならないが、トンネル酸化膜に過剰なストレスが生じるため、信頼性上、問題となる場合がある。特に、第４実施の形態では、最終カラムアドレス又はそれに近いカラムアドレスのメモリセルにオーバープログラムが発生する可能性があるが、本実施の形態の場合には、カラムアドレスに関係なく、全ての“０”−プログラミングセルに対して、オーバープログラムが発生する可能性がある。
【０４８７】
従って、例えば、３Ｔｒ−ＮＡＮＤにおいて、第４実施の形態に関わるベリファイ手法を採用するか、又は、本実施の形態に関わるベリファイ手法を採用するかは、製品の用途、仕様などに応じて決定すればよい。
【０４８８】
３．−７．−１．  全体図  
図３２は、本発明の第６実施の形態に関わる３Ｔｒ−ＮＡＮＤの主要部を示している。図３３は、図３２のページバッファＰ／Ｂを詳細に示している。
【０４８９】
図３２は、図１のブロック図に対応しているため、図３２に示すブロックのうち、図１と同じブロックには、同じ符号を付してある。また、図３２は、図１０の１つのセンスアンプＳ／Ａ・０と、これに接続される３２本のビット線（１つのビット線グループ）ＢＬ０，・・・ＢＬ３１に対応する部分を詳細に示すものであり、図１０の他のセンスアンプＳ／Ａ１，・・・Ｓ／Ａ２１と、これに接続される３２本のビット線も、当然に、図３２に示すような回路構成を有している。
【０４９０】
なお、本例の回路は、上述の第２実施の形態に関わる回路（図２１）と比べると、ページバッファＰ／Ｂ及び読み出し／書き込み回路が相違しており、その他の部分については、上述の第２実施の形態に関わる回路と同じである。
【０４９１】
従って、以下の説明では、上述の第２の実施の形態に関わる回路に対して、本例の回路の特徴的な部分のみを説明し、その他の部分、即ち、上述の第２実施の形態に関わる回路と同じ部分については、その説明を省略する。
【０４９２】
まず、図３３に示すように、ページバッファＰ／Ｂ内のラッチ回路ＬＡＴＣＨのノードＮ２は、ＮチャネルＭＯＳトランジスタＭＮ１を経由して接地点に接続される。トランジスタＭＮ１のゲートには、制御信号ＰＢＲＳＴが入力される。制御信号ＰＢＲＳＴは、ページバッファＰ／Ｂのリセット時に“Ｈ”レベルとなる信号である。
【０４９３】
本例の回路は、例えば、上述の第１乃至第３実施の形態に関わる回路（図１５、図２２及び図２５）に比べて、ページバッファＰ／Ｂ及びその近傍の回路構成が非常に簡単になっている。つまり、本例の回路では、ページバッファＰ／Ｂは、ラッチ回路ＬＡＴＣＨ及びトランジスタＭＮ１のみを有し、ベリファイリード結果に応じてラッチデータを変化させるための回路や、一括検知のための回路などは、配置されていない。
【０４９４】
従って、本実施の形態に関わるベリファイ手法によれば、ページバッファＰ／Ｂ及びその近傍における回路のレイアウト面積を小さくでき、かつ、非常に簡単な回路構成により、本発明に関わるベリファイ動作を実行できる
次に、図３４に示すように、３２本のビット線ＢＬ０，・・・ＢＬ３１は、カラムゲートを経由して、読み出し／書き込み回路に接続される。１つの読み出し／書き込み回路は、１つのセンスアンプＳ／Ａを含んでいる。
【０４９５】
センスアンプＳ／Ａとカラムゲートの間には、ＮチャネルＭＯＳトランジスタＭＮ１０が接続される。トランジスタＭＮ１０のオン／オフは、制御信号（センスアンプイネーブル信号）ＳＡＥＮにより制御される。制御信号ＳＡＥＮは、ベリファイリード時に“Ｈ”レベルとなるものであり、この時、同時に、センスアンプＳ／Ａも、活性化される（動作状態になる）。
【０４９６】
センスアンプＳ／Ａの出力ノードは、インバータＩ１’を経由して、ラッチ回路ＬＡＴＣＨ１のノードｎ２に接続される。インバータＩ１’は、制御信号ＲＤが“Ｈ”レベルのときに、動作状態となる。ラッチ回路ＬＡＴＣＨ１は、制御信号ＲＤが“Ｈ”レベルのときに、インバータＩ１’の出力データをセンスし、かつ、制御信号ＲＤが“Ｌ”レベルになり、制御信号ＲＤｎ（ＲＤの反転信号）が“Ｈ”レベルになると、インバータＩ１’の出力データをラッチする。
【０４９７】
また、センスアンプＳ／Ａの出力ノードは、インバータＩ１’’を経由して、ラッチ回路ＬＡＴＣＨ２のノードｎ４に接続される。インバータＩ１’’は、制御信号ＰＢＲＤが“Ｈ”レベルのときに、動作状態となる。ラッチ回路ＬＡＴＣＨ２は、制御信号ＰＢＲＤが“Ｈ”レベルのときに、インバータＩ１’’の出力データをセンスし、かつ、制御信号ＰＢＲＤが“Ｌ”レベルになり、制御信号ＰＢＲＤｎ（ＰＢＲＤの反転信号）が“Ｈ”レベルになると、インバータＩ１’’の出力データをラッチする。
【０４９８】
１つの読み出し／書き込み回路内の２つのラッチ回路ＬＡＴＣＨ１，ＬＡＴＣＨ２のノードｎ１，ｎ３は、エクスクルーシブオア回路Ｅｘ−ＯＲに入力される。このエクスクルーシブオア回路Ｅｘ−ＯＲにより、ベリファイリードデータがラッチデータ（プログラムデータ）に一致するか否かが判定され、その結果がノア回路ＮＯＲ１に入力される。
【０４９９】
ノア回路ＮＯＲ１は、全ての読み出し／書き込み回路に対して１つだけ設けられ、かつ、カラムアドレスにより選択された２２個のメモリセルについて、ベリファイリードデータとラッチデータ（プログラムデータ）が互いに一致するか否かを判定する（一括検知を行う）。
【０５００】
例えば、カラムアドレスにより選択された２２個のメモリセルの全てについて、ベリファイリードデータとラッチデータ（プログラムデータ）が互いに一致する場合には、ノア回路ＮＯＲ１の出力信号は、“Ｈ”レベル（一括検知パス）となる。また、カラムアドレスにより選択された２２個のメモリセルのうち少なくとも１つのメモリセルについて、ベリファイリードデータとラッチデータ（プログラムデータ）が互いに一致しない場合には、ノア回路ＮＯＲ１の出力信号は、“Ｌ”レベル（一括検知フェイル）となる。
【０５０１】
また、ラッチ回路ＬＡＴＣＨ１のノードｎ１は、は、インバータＩ２，Ｉ３を経由して、ノードｎ３に接続される。ノードｎ３は、データバスＤＡＴＡＢＵＳに接続される。インバータＩ３は、制御信号ＳＡＯＵＴが“Ｈ”レベルのときに、動作状態となる。通常のデータリード時には、制御信号ＳＡＯＵＴが“Ｈ”レベルとなるため、リードデータがデータバスＤＡＴＡＢＵＳに出力される。
【０５０２】
本発明に関わるベリファイリード時には、制御信号ＳＡＯＵＴは、常に、“Ｌ”レベルである。
【０５０３】
また、ノードｎ３とカラムゲートの間には、インバータＩ６，Ｉ７が接続される。インバータＩ７は、制御信号ＤＮ１が“Ｈ”レベルのときに、動作状態となる。プログラムモードにおけるデータロード時、制御信号ＤＮ１は、“Ｈ”レベルになる。従って、プログラムデータは、インバータＩ６，Ｉ７及びカラムゲートを経由して、選択されたビット線に接続されるページバッファＰ／Ｂに入力される。
【０５０４】
３．−７．−２．  プログラムベリファイ  
以下、データ書き換え時におけるプログラムベリファイについて説明する。なお、データ書き換え動作については、上述の第１実施の形態において、既に、詳細に説明したので、その説明は省略する（項目３．−２．−３の“データ書き換え動作”を参照）。
【０５０５】
１回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。
【０５０６】
プログラムベリファイは、図３４のフローチャートに示すように、ベリファイリードステップ、ページバッファリードステップ、ワード単位一括検知（ベリファイ）ステップとから構成される。即ち、本例のプログラムベリファイでは、ベリファイデータインステップが存在しない反面、新規に、ベリファイ時にページバッファＰ／Ｂ内のプログラムデータを読み出すページバッファリードステップが設けられている。
【０５０７】
また、カラムアドレスＣｏｌ．Ａｄｄ．毎に、ベリファイリード、ページバッファリード及びワード単位一括検知が行われると共に、そのカラムアドレスＣｏｌ．Ａｄｄ．のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスＣｏｌ．Ａｄｄ．に進むことなく、繰り返し、同じカラムアドレスＣｏｌ．Ａｄｄ．に対して、ベリファイリード、ページバッファリード及びワード単位一括検知が行われる。
【０５０８】
従って、ワード単位一括検知がパスしたカラムアドレスＣｏｌ．Ａｄｄ．については、その後、ベリファイリード及びページバッファリードが行われることがない。このため、本実施の形態に関わるベリファイ手法では、ベリファイデータインが不要であると共に、最小限のベリファイリード及びページバッファリードのみが行われるため、ベリファイ時間の短縮に貢献できる。
【０５０９】
図３５は、ベリファイリード時及びページバッファリード時における３Ｔｒ−ＮＡＮＤの動作を示す波形図である。
【０５１０】
以下、図３２、図３３、図３４及び図３５を参照しつつ、本発明に関わるベリファイ動作について説明する。
【０５１１】
i.  ベリファイリード  
プログラムベリファイリードは、選択されたワード線に与えるリード電位Ｖｐｖを、正電位（例えば、０．５Ｖ程度）に設定する点を除けば、通常のデータリード（リード電位は、０Ｖ）と同様に行われる。
【０５１２】
但し、通常のデータリードでは、図３２の読み出し／書き込み回路内のセンスアンプでリードデータの検出（センシング）及びそのデータ値の判定を行った後に、リードデータをデータバスＤＡＴＡＢＵＳに出力するが、プログラムベリファイリードでは、図３２の読み出し／書き込み回路内のセンスアンプでリードデータの検出（センシング）及びそのデータ値の判定を行った後、図３２の読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１にリードデータ（ベリファイリード結果）をラッチするだけである。
【０５１３】
まず、制御信号ＢＬＲＳＴ，ＳＡＥＮ，ＲＤが“Ｈ”レベルになるため、全てのビット線が接地電位Ｖｓｓにリセットされ、また、図３２の読み出し／書き込み回路内のトランジスタＭＮ１０がオン状態、センスアンプＳ／Ａ及びインバータＩ１’が動作状態になる。
【０５１４】
この後、ビット線ＢＬが電源電位Ｖｄｄ（“Ｈ”レベル、即ち、“１”状態）にプリチャージされる（図３２では、プリチャージ回路は省略してある）。
【０５１５】
そして、全てのセルユニット内のソース側セレクトゲート線ＳＧＳの電位がＶｓｇ（例えば、約３．５Ｖ）に設定され、ソース線ＳＬ及びＰ型ウェル領域（Ｐ−ｗｅｌｌ）の電位は、共に、０Ｖに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位がＶｓｇに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線ＳＧＤの電位が０Ｖに設定される。
【０５１６】
また、全てのワード線の電位がリード電位Ｖｐｖに設定される。
【０５１７】
その結果、選択された１ページ分のメモリセルのデータは、ビット線に読み出される。また、制御信号Ｙｔｒａｎｓｆは、予め、“Ｈ”レベル（例えば、ＶｓｇＨＨＨ）に設定されているため、選択された１ページ分のメモリセルのリードデータは、図３２のトランジスタＭＮ９を経由して、ページバッファＰ／Ｂの入力部まで転送される。
【０５１８】
ここで、本例では、制御信号ＰＢＴＲが常に“Ｌ”レベルであり、図３２及び図３３に示すトランジスタＭＮ７もオフ状態である。このため、プログラムベリファイリードでは、選択された１ページ分のメモリセルのリードデータは、ページバッファＰ／Ｂに入力されることがない。
【０５１９】
なお、メモリセルの閾値がＶｐｖを超えるときは、ビット線ＢＬの電位は、プリチャージ電位を維持する（“０”−プログラミング十分）。一方、メモリセルの閾値がＶｐｖを下回るときは、ビット線ＢＬの電位は、プリチャージ電位から接地電位に向かって次第に低下する（“０”−プログラミング不十分、又は、“１”−プログラミング）。
【０５２０】
このビット線ＢＬの電位変化は、図３２のセンスアンプＳ／Ａにより検出（センシング）される。但し、例えば、図３２に示すように、３２本のビット線ＢＬ０，・・・ＢＬ１５からなる１つのビット線グループでは、１本のビット線のみがセンスアンプＳ／Ａに電気的に接続される。
【０５２１】
また、制御信号ＳＥＡＮ，ＲＤが“Ｈ”レベルであるため、センスアンプＳ／Ａで検出されたリードデータは、インバータＩ１’を経由して、ラッチ回路ＬＡＴＣＨ１に検出される。
【０５２２】
ここで、通常のデータリードとは異なり、プログラムベリファイリードでは、制御信号ＳＡＯＵＴが“Ｌ”レベルに設定されているため、リードデータ（ベリファイリード結果）は、データバスＤＡＴＡＢＵＳに出力されない。
【０５２３】
この後、制御信号ＳＡＥＮ，ＲＤが“Ｌ”レベルになり、制御信号ＲＤｎ（制御信号ＲＤの反転信号）が“Ｈ”レベルになると、リードデータは、図３２に示す読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ１にラッチされる。
【０５２４】
ii.  ページバッファリード  
ベリファイリードが終了すると、続けて、ページバッファリードが行われる。
【０５２５】
まず、制御信号Ｙｔｒａｎｓｆが“Ｈ”レベルから“Ｌ”レベルに低下するため、図３２に示すトランジスタＭＮ９がカットオフ状態となる。つまり、全てのページバッファＰ／Ｂの入力ノードとビット線とが互いに電気的に切断される。
【０５２６】
その理由は、大きな容量を有するビット線をページバッファＰ／Ｂから切り離すことにより、ページバッファＰ／Ｂ内のラッチデータ（プログラムデータ）を読み出し／書き込み回路に正確に転送するためである。
【０５２７】
また、制御信号ＳＡＥＮ，ＰＢＲＤが“Ｈ”レベルになるため、図３２の読み出し／書き込み回路内のトランジスタＭＮ１０がオン状態、センスアンプＳ／Ａ及びインバータＩ１’’が動作状態になる。
【０５２８】
この後、制御信号ＰＢＴＲが“Ｈ”レベルになると、カラムアドレス信号により選択されたカラムにおいては、図３３に示すラッチ回路ＬＡＴＣＨのノードＮ１がトランジスタＭＮ７を経由して、図３２に示す読み出し／書き込み回路に電気的に接続される。その結果、選択されたカラムのページバッファＰ／Ｂ内のラッチデータ（プログラムデータ）は、読み出し／書き込み回路に転送される。
【０５２９】
なお、ベリファイリード時に選択されるカラムとページバッファリード時に選択されるカラムは、当然に、同じである。
【０５３０】
ページバッファＰ／Ｂのラッチデータは、図３２のセンスアンプＳ／Ａにより検出（センシング）される。また、制御信号ＳＥＡＮ，ＰＢＲＤが“Ｈ”レベルであるため、センスアンプＳ／Ａで検出されたリードデータは、インバータＩ１’’を経由して、ラッチ回路ＬＡＴＣＨ２に検出される。
【０５３１】
この後、制御信号ＳＡＥＮ，ＰＢＲＤが“Ｌ”レベルになり、制御信号ＰＢＲＤｎ（制御信号ＲＤの反転信号）が“Ｈ”レベルになると、リードデータは、図３２に示す読み出し／書き込み回路内のラッチ回路ＬＡＴＣＨ２にラッチされる。
【０５３２】
iii.  ワード単位一括検知（ベリファイ）  
上述の  i.ベリファイリード及び ii.ページバッファリードが行われた後、続けて、ワード単位一括検知が行われる。ワード単位一括検知動作は、ベリファイリード及びページバッファリードが終了した後、読み出し／書き込み回路内において自動的に行われる。
【０５３３】
ワード単位一括検知は、２つのステップから構成される。
【０５３４】
第１ステップは、センスアンプ毎に、２つのラッチ回路ＬＡＴＣＨ１，ＬＡＴＣＨ２にラッチされたデータ値を比較する。
【０５３５】
具体的には、ベリファイリードデータとページバッファＰ／Ｂ内のラッチデータが同じ場合には、ラッチ回路ＬＡＴＣＨ１のノードｎ１の値とラッチ回路ＬＡＴＣＨ２のノードｎ３の値も、互いに同じになる（ｎ１＝ｎ３＝“０”又はｎ１＝ｎ３＝“１”）。この場合は、メモリセルのプログラム（“０”−プログラミング又は“１”−プログラミング）が正確に完了したことを意味し、エクスクルーシブオア回路Ｅｘ−ＯＲの出力信号は、“０”となる。
【０５３６】
一方、ベリファイリードデータとページバッファＰ／Ｂ内のラッチデータが互いに異なる場合には、ラッチ回路ＬＡＴＣＨ１のノードｎ１の値とラッチ回路ＬＡＴＣＨ２のノードｎ３の値も、互いに異なることになる（ｎ１≠ｎ３）。この場合は、メモリセルのプログラム（“０”−プログラミング又は“１”−プログラミング）が不十分であることを意味し、エクスクルーシブオア回路Ｅｘ−ＯＲの出力信号は、“１”となる。
【０５３７】
第２ステップは、各読み出し／書き込み回路で判断された検知結果をそれぞれノア回路ＮＯＲ１に入力し、選択されたカラムにおける一括検知結果を得る。
【０５３８】
具体的には、全ての読み出し／書き込み回路について、エクスクルーシブオア回路Ｅｘ−ＯＲの出力信号がノア回路ＮＯＲ１に入力される。従って、全ての読み出し／書き込み回路において、エクスクルーシブオア回路Ｅｘ−ＯＲの出力信号が“０”のとき、即ち、選択されたカラムの全てのメモリセルに対してプログラムが十分に完了しているときのみ、ノア回路ＮＯＲ１の出力信号は、“１”（“Ｈ”レベル）となる。つまり、ノア回路ＮＯＲ１の出力信号が“Ｈ”レベルのときは、一括検知パスであり、次のカラムアドレスに進んで、プログラム動作が行われるか、又は、そのカラムアドレスが最終である場合には、プログラム動作を終了する。
【０５３９】
また、少なくとも１つの読み出し／書き込み回路について、エクスクルーシブオア回路Ｅｘ−ＯＲの出力信号が“１”のとき、即ち、選択されたカラムの少なくとも１つのメモリセルに対してプログラムが不十分であるときは、ノア回路ＮＯＲ１の出力信号は、“０”（“Ｌ”レベル）となる。ノア回路ＮＯＲ１の出力信号が“Ｌ”レベルのときは、一括検知がフェイルであり、再び、現在のカラムアドレスについて、プログラム動作が継続して行われる。
【０５４０】
なお、プログラム動作の回数が進むにつれてプログラム電位Ｖｐｇｍをステップアップさせることは、言うまでもない。
【０５４１】
３．−７．−３．  まとめ  
第６実施の形態に関わるベリファイ手法（図３４）は、第４実施の形態に関わるベリファイ手法（図２８）を前提とし、ベリファイデータインをなくす目的から、一括検知を読み出し／書き込み回路で行い、かつ、ベリファイリードに続けてページバッファリードを行うようにしている。
【０５４２】
従って、読み出し／書き込み回路（センスアンプ）からページバッファＰ／Ｂにベリファイリード結果を転送するベリファイデータインステップは、不要となるため、このベリファイデータインのシーケンス分だけ、ベリファイ時間を短縮することができる。また、ページバッファＰ／Ｂ内に、ベリファイリード結果に応じてラッチデータを変化させるための回路や、一括検知のための回路などを配置する必要がなくなるため、ページバッファＰ／Ｂの簡略化及びレイアウト面積の縮小を達成することができる。
【０５４３】
但し、第６実施の形態に関わるベリファイ手法の場合、ページバッファＰ／Ｂ内のラッチデータ（プログラムデータ）は、ベリファイリード結果に応じて、変化することがない。即ち、常に、ラッチデータは、チップ外部からページバッファＰ／Ｂにプログラムデータを書き込んだときと同じであり、例えば、“０”−プログラミングセルについては、仮に、“０”−プログラミングが十分に完了している場合であっても、最終カラムアドレスについて一括検知がパスするまで、“０”−プログラミングが継続して行われる。
【０５４４】
従って、第６実施の形態に関わるベリファイ手法では、オーバープログラムが容易に発生する。しかし、オーバープログラムは、３Ｔｒ−ＮＡＮＤの動作上、全く問題とならない。
【０５４５】
一方、オーバープログラムが発生すると、トンネル酸化膜に過剰なストレスが生じ、かつ、メモリセルのトンネル酸化膜を通過する電荷量も増えるため、結果として、トンネル酸化膜の劣化が早まり、信頼性上、問題となる場合がある。従って、例えば、３Ｔｒ−ＮＡＮＤにおいて、第６実施の形態に関わるベリファイ手法を採用するか、又は、他の実施の形態に関わるベリファイ手法を採用するかは、レイアウト面積、ベリファイ時間、メモリセルのトンネル酸化膜の劣化の度合いのいずれを重視して製品を作るかなどを考慮して決定する。
【０５４６】
４．  その他  
本発明の説明においては、３Ｔｒ−ＮＡＮＤを前提としたが、本発明は、ページバッファと共にセンスアンプを有する不揮発性半導体メモリに適用可能である。また、本発明は、メモリセルに２値データ（“１”，“０”）が記憶される２値メモリを例にして説明したが、メモリセルに３値以上の多値データ（“０”，“１”，・・・）が記憶される多値メモリにも適用可能である。
【０５４７】
５．  むすび  
以上、説明したように、本発明の不揮発性半導体メモリによれば、第一に、ページバッファとセンスアンプを有する不揮発性半導体メモリにおいて、ベリファイリードにおけるリードデータの検出及びそのデータ値の判定を、通常データリードのためのセンスアンプを用いて行っているため、ベリファイリードにおけるデータ（例えば、プログラム動作時のメモリセルの状態）の判定を正確に行うことができる（基本的効果）。
【０５４８】
また、第二に、基本的効果を前提としつつ、動作タイミングの工夫によりページバッファ部のレイアウトを容易にしたり（第２実施の形態）、また、ベリファイシーケンスの工夫によりベリファイ時間を短縮したり（第３及び第４実施の形態）、また、一括検知に要する時間を短縮したり（第５実施の形態）、また、一括検知を、ページバッファではなく、読み出し／書き込み回路で行うことにより、ベリファイデータインを不要にしたりすることができる。
【図面の簡単な説明】
【０５４９】
【図１】本発明に関わる３Ｔｒ−ＮＡＮＤの主要部を示すブロック図。
【図２】３Ｔｒ−ＮＡＮＤのメモリセルアレイの一例を示す図。
【図３】３Ｔｒ−ＮＡＮＤのメモリセルユニットを示す図。
【図４】３Ｔｒ−ＮＡＮＤのデバイス構造を示す平面図。
【図５】図４のＶ−Ｖ線に沿う断面図。
【図６】３Ｔｒ−ＮＡＮＤのページバッファの一例を示す回路図。
【図７】データ書き換えシーケンスを示す図。
【図８】ベリファイリード時及びベリファイ時の信号波形を示す図。
【図９】ラッチデータの変化の様子を示す図。
【図１０】本発明に関わる３Ｔｒ−ＮＡＮＤの概略を示す図。
【図１１】本発明の第１実施の形態に関わる３Ｔｒ−ＮＡＮＤの主要部を示す図。
【図１２】図１１のインバータＩ５，Ｉ７の一例を示す図。
【図１３】図１１の制御信号ＰＢＴＲを生成する回路を示す図。
【図１４】図１３のＨＶＳＷの一例を示す図。
【図１５】図１１のページバッファＰ／Ｂの詳細を示す図。
【図１６】図１１の３Ｔｒ−ＮＡＮＤのデータロード時、イレーズ時及びプログラム時の信号波形を示す図。
【図１７】イレーズ後のメモリセルの状態を示す図。
【図１８】プログラム後のメモリセルの状態を示す図。
【図１９】図１１の３Ｔｒ−ＮＡＮＤのベリファイシーケンスを示す図。
【図２０】図１１の３Ｔｒ−ＮＡＮＤのベリファイ時の信号波形示す図。
【図２１】本発明の第２実施の形態に関わる３Ｔｒ−ＮＡＮＤの主要部を示す図。
【図２２】図２１のページバッファＰ／Ｂの詳細を示す図。
【図２３】図２１の３Ｔｒ−ＮＡＮＤのベリファイ時の信号波形示す図。
【図２４】本発明の第３実施の形態に関わる３Ｔｒ−ＮＡＮＤの主要部を示す図。
【図２５】図２４のページバッファＰ／Ｂの詳細を示す図。
【図２６】図２４の３Ｔｒ−ＮＡＮＤのベリファイシーケンスを示す図。
【図２７】図２４の３Ｔｒ−ＮＡＮＤのベリファイ時の信号波形示す図。
【図２８】本発明の第４実施の形態に関わるベリファイシーケンスを示す図。
【図２９】図２８のベリファイシーケンスの概念を示す図。
【図３０】本発明の第５実施の形態に関わる一括検知回路を示す図。
【図３１】図３０の一括検知回路に使用される信号波形を示す図。
【図３２】本発明の第６実施の形態に関わる３Ｔｒ−ＮＡＮＤの主要部を示す図。
【図３３】図３２のページバッファＰ／Ｂの詳細を示す図。
【図３４】図３２の３Ｔｒ−ＮＡＮＤのベリファイシーケンスを示す図。
【図３５】図３２の３Ｔｒ−ＮＡＮＤのベリファイ時の信号波形示す図。
【符号の説明】
【０５５０】
１：Ｐ型シリコン基板、  ２：Ｎ型ウェル領域、  ３：Ｐ型ウェル領域、  １１：メモリセルアレイ、  １２：ワード線／セレクトゲート線デコーダ、  １３：ページバッファ、  １４：カラムゲート、  １５：センスアンプ、  １６，１６Ａ，１６Ｂ：カラムデコーダ、  １８：エラー訂正回路、  １９：Ｉ／Ｏバッファ、  ２０：アドレスバッファ、  ２１：制御回路、  ２２：パリティビットジェネレータ、  ＷＬ：ワード線、  ＳＧＳ，ＳＧＤ：セレクトゲート線、  ＢＬＣ：ビット線コンタクト部、  ＭＣ１〜ＭＣ９，Ｍ２：メモリセル、  Ｍ１，Ｍ３：セレクトゲートトランジスタ、  ＴＮ１〜ＴＮ７，ＭＮ１〜ＭＮ１０  ：ＮチャネルＭＯＳトランジスタ、  ＭＰ１〜ＭＰ４：ＰチャネルＭＯＳトランジスタ、  Ｉ１〜Ｉ７：インバータ、  Ｐ／Ｂ：ページバッファ、  ＬＡＴＣＨ：ラッチ回路、  ＡＮＤ：アンド回路、  ＬＯＧＩＣ：ロジック回路、  Ｅｘ−ＯＲ：エクスクルーシブオア回路、  ＮＯＲ１：ノア回路。
【図１】
2007115407.tif 000005
【図２】
2007115407.tif 000006
【図３】
2007115407.tif 000007
【図４】
2007115407.tif 000008
【図５】
2007115407.tif 000009
【図６】
2007115407.tif 000010
【図７】
2007115407.tif 000011
【図８】
2007115407.tif 000012
【図９】
2007115407.tif 000013
【図１０】
2007115407.tif 000014
【図１１】
2007115407.tif 000015
【図１２】
2007115407.tif 000016
【図１３】
2007115407.tif 000017
【図１４】
2007115407.tif 000018
【図１５】
2007115407.tif 000019
【図１６】
2007115407.tif 000020
【図１７】
2007115407.tif 000021
【図１８】
2007115407.tif 000022
【図１９】
2007115407.tif 000023
【図２０】
2007115407.tif 000024
【図２１】
2007115407.tif 000025
【図２２】
2007115407.tif 000026
【図２３】
2007115407.tif 000027
【図２４】
2007115407.tif 000028
【図２５】
2007115407.tif 000029
【図２６】
2007115407.tif 000030
【図２７】
2007115407.tif 000031
【図２８】
2007115407.tif 000032
【図２９】
2007115407.tif 000033
【図３０】
2007115407.tif 000034
【図３１】
2007115407.tif 000035
【図３２】
2007115407.tif 000036
【図３３】
2007115407.tif 000037
【図３４】
2007115407.tif 000038
【図３５】
2007115407.tif 000039