1. 以下、図面を参照しながら、本発明の不揮発性半導体メモリについて詳細に説明する。
まず、以下の説明をわかり易くするため、メモリセルのデータに関して、次のように定義しておく。即ち、閾値電圧が正のメモリセルを“0”−データを記憶するメモリセル(“0”−プログラミングセル)とし、閾値電圧が負のメモリセルを“1”−データを記憶するメモリセル(“1”−プログラミングセル又は消去セル)とする。
また、本発明は、データを一時記憶するためのページバッファと、データリード時にメモリセルのデータ値を判定するセンスアンプとを有する不揮発性半導体メモリに適用される。但し、以下では、説明を簡単にするため、3Tr−NANDに本発明を適用した場合について説明する。
2. 3Tr−NAND
まず、3Tr−NANDについて説明する。
2.−1. 全体図
図1は、本発明が適用される3Tr−NANDの主要部を示すブロック図である。
本例では、32キロバイトのメモリ容量を有する3Tr−NANDについて説明する。
メモリセルアレイ11は、アレイ状に配置された複数のセルユニットから構成される。セルユニットは、1つのメモリセルとその両端に1つずつ接続される2つのセレクトゲートトランジスタとから構成される。セルユニットの詳細については、後述する。
メモリセルアレイ11は、データを記憶する領域(データ領域)と、エラー訂正のためのパリティビットを記憶する領域(パリティビット領域)とから構成される。メモリセルアレイ11上には、ロウ方向に延びる512本のワード線WLと、カラム方向に延びる704本のビット線BLがそれぞれ配置される。704本のビット線BLのうち、512本のビット線BLは、データ領域に配置され、192本のビット線BLは、パリティビット領域に配置される。
メモリセルアレイ11のデータ領域において、512本のワード線WLと512本のビット線BLの交点には、32キロバイト(32,768バイト)のメモリセルが配置される。本例では、1本のワード線WLには、データ領域内の512個のメモリセルが接続されるため、1ページは、64バイト(512ビット)となる。また、3Tr−NANDでは、1つのセルユニット内には、1個のメモリセルのみが配置されるため、1ブロックも、64バイト(=32ワード。1ワードは、16ビット。)となる。
なお、データの書き換え(変更)は、例えば、ページ単位又はバイト単位で行うことができる。また、データイレーズは、ブロック単位(32ワード)で行うことができる。
メモリセルアレイ11のロウ方向の端部には、ワード線/セレクトゲート線デコーダ(又はワード線/セレクトゲート線ドライバ)12が配置される。ロウ方向に延びる512本のワード線WLは、ワード線/セレクトゲート線デコーダ12内のワード線デコーダに接続される。
一方、メモリセルアレイ11のデータ領域内の512本のビット線BLは、16のグループに分けられ、各グループは、32本のビット線BLから構成される。同様に、メモリセルアレイ11のパリティビット領域内の192本のビット線BLは、6のグループに分けられ、各グループは、32本のビット線BLから構成される。
メモリセルアレイ11のカラム方向の端部には、704個のページバッファ13が配置される。704個のページバッファ13は、メモリセルアレイ11上に配置される704本のビット線BLに対応している。各ページバッファ13は、例えば、1つのラッチ回路を含んでいる。
メモリセルアレイ11のデータ領域内の16のグループ及びパリティビット領域内の6のグループに対応して、22(=16+6)個のセンスアンプ15が設けられている。そして、カラムデコーダ16及びカラムゲート14により、各グループ内の32本のビット線BLのうちの1本が選択される。
つまり、データリードは、1ページ(=32ワード)よりも少ない16ビット(=1ワード)単位で行われる。本例では、データリード時に、メモリセルアレイ11のデータ領域から16ビットのデータを読み出すと共に、1ビットの誤り訂正( Single Error Correct )と2ビットの誤り検出( Double Error Detect )を行うために、メモリセルアレイ11のパリティビット領域から6ビットのデータを読み出す。
メモリセルアレイ11から読み出された22(=16+6)ビットのデータは、センスアンプ15を経由して、エラー訂正回路18に入力される。エラー訂正回路18は、22ビットのリードデータに基づいて、このリードデータに誤りが含まれているか否かを検出し、かつ、誤りが存在する場合には、その誤りを訂正した後に、16ビットのリードデータをI/Oバッファ19に出力する。
そして、16ビットのリードデータは、16本のデータ入出力端子I/O・0,I/O・1,・・・I/O・15から出力される。
ところで、14ビットのアドレス信号は、アドレス入力端子A0,A1,・・・A13及びアドレスバッファ20を経由して、ワード線/セレクトゲート線デコーダ12及びカラムデコーダ16に入力される。具体的には、アドレス信号の下位5ビットA0,A1,・・・A4がカラムデコーダ16に入力され、アドレス信号の上位9ビットA5,A6,・・・A13がワード線/セレクトゲート線デコーダ12のワード線デコーダ(ロウデコーダ)に入力される。
制御回路21は、チップイネーブル信号/CE、アウトプットイネーブル信号/OE及びライトイネーブル信号/WEに基づいて、メモリの動作を制御する。例えば、制御回路21は、データリード時にセンスアンプ15が動作状態となるように、センスアンプ15を制御する。
パリティビットジェネレータ22は、データ入出力端子I/O・0,I/O・1,・・・I/O・15から入力された16ビットのプログラムデータに、1ビットの誤り訂正と2ビットの誤り検出を行うための6ビットのデータ(パリティビット)を付加する。そして、これら22(16+6)ビットのデータは、ページバッファ(ラッチ回路)13に一時記憶された後、選択されたメモリセルにプログラムされる。
2.−2. メモリセルアレイ
図2は、メモリセルアレイの一例を示している。図3は、メモリセルアレイを構成するセルユニットを示している。
3Tr−NANDにおいては、メモリセルアレイ11内のセルユニットは、それぞれ3つのトランジスタ、即ち、1つのメモリセルM2と、これを挟み込む2つのセレクトトランジスタM1,M3とから構成される。
メモリセルM2は、例えば、フローティングゲート電極とコントロールゲート電極を有するスタックゲート構造を有する。セレクトトランジスタM1,M3は、例えば、スタックゲート構造に類似した構造を有するが、下層のゲートを実際のゲート電極として用いることにより、通常のMOSトランジスタとして機能する。
セルユニットの一端は、ビット線BL1,…,BLj,…,BLmに接続され、その他端は、セルソース線SLに接続される。ビット線BL1,…,BLj,…,BLmは、ページバッファ13及びカラムゲート14を経由して、センスアンプ15に接続される。
ページバッファ13は、ビット線BL1,…,BLj,…,BLmに対応して設けられ、ラッチ回路(ページラッチ)LATCHを有している。ラッチ回路LATCHは、例えば、プログラム動作において、プログラムデータを一時記憶する機能を有する。
また、ページバッファ13は、ベリファイ動作において、プログラム又はイレーズが正確に行われたか否かを検知するための共通ノードを有し、この共通ノードからは、一括検知信号PBFLGが出力される。一括検知信号PBFLGは、一括検知回路(後に詳述する。)に入力される。そして、一括検知回路は、プログラム又はイレーズが正確に行われたか否かを検知する。
リセットトランジスタTr1,…,Trj,…,Trmも、ビット線BL1,…,BLj,…,BLmに対応して設けられている。リセットトランジスタTr1,…,Trj,…,Trmは、各動作モードにおいて、制御信号BLRSTに基づいて、ビット線BL1,…,BLj,…,BLmの電位をリセット(接地電位)する機能を有する。
セルソース線SLは、シャント線SHを経由して、セルソース線−接地トランジスタに接続される。セルソース線−接地トランジスタは、セルソース線SLを接地電位にする機能を有する。
シャント線SHは、メモリセルアレイ11内に複数本配置され、かつ、ビット線BL1,…,BLj,…,BLmと同様にカラム方向に延びている。シャント線SHは、例えば、1つのセンスアンプに対応するメモリセルアレイ11の1つのビット線グループがk(例えば、32)本のビット線から構成される場合には、k本のビット線ごとに1本の割合で配置されるのが好ましい(mとkは、同じでも又は異なっていてもよい)。
データリード時において、ソース線側の全てのセレクトゲート線SGS1,…,SGSi,…,SGSpは、ソース線側のセレクトトランジスタがオン状態になるような電位(例えば、約3.5V)に設定される。また、ビット線側のセレクトゲート線SGD1,…,SGDi,…,SGDpのうち、選択されたメモリセルを含むセルユニットに接続されるセレクトゲート線も、セレクトトランジスタがオン状態になるような電位(例えば、約3.5V)に設定される。
また、例えば、ビット線側のセレクトゲート線SGD1,…,SGDi,…,SGDpのうち、選択されたメモリセルを含むセルユニットに接続されないセレクトゲート線は、セレクトトランジスタがオフ状態になるような電位(接地電位)に設定される。
また、3Tr−NANDの場合、データリード時において、全てのワード線W1,…,Wi,…,Wpは、接地電位に設定される(“0”−プログラミング状態のメモリセルが正の閾値電圧を有し、“1”−プログラミング状態のメモリセルが負の閾値電圧を有している場合に限る)。
2.−3. セルユニットの構造
図4は、3Tr−NANDの1つのセルユニットを示す平面図である。図5は、図4のV−V線に沿う断面図である。
3Tr−NANDのセルユニットの構造は、NANDセル型フラッシュメモリのセルユニットの構造と同じ又は非常に類似している。しかし、3Tr−NANDのセルユニットは、NANDセル型フラッシュメモリのセルユニット床とは異なり、2つのセレクトゲートトランジスタと間には、1つのメモリセルのみが配置される。
具体的構造について説明する。
P型シリコン基板(P−sub)1の表面領域には、N型ウェル領域(N−well)2が形成され、N型ウェル領域2内には、P型ウェル領域(P−well)3が形成される。
P型ウェル領域3内には、N型拡散層4,4D,4Sが形成される。2つのN型拡散層4の間のチャネル上には、メモリセルのフローティングゲート電極FG及びコントロールゲート電極(ワード線)CGが形成される。また、2つのN型拡散層4,4Sの間のチャネル上には、ソース側セレクトゲートトランジスタのゲート電極(セレクトゲート線)SGSが形成される。また、2つのN型拡散層4,4Dの間のチャネル上には、ドレイン側セレクトゲートトランジスタのゲート電極(セレクトゲート線)SGDが形成される。
セルユニットのドレイン拡散層4D上には、ビット線コンタクト部BLCが形成される。ビット線コンタクト部BLCは、例えば、コンタクトホール内に埋め込まれた不純物を含むポリシリコンプラグから構成される。ビット線コンタクト部BLC上には、カラム方向に延びるビット線BLが形成される。
メモリセルのフローティングゲート電極FG内に電子が注入され、メモリセルトランジスタの閾値が正になった状態が“0”状態、また、メモリセルのフローティングゲート電極FG内に電子が排出され、メモリセルトランジスタの閾値が負になった状態が“1”状態である。
メモリセルの閾値を負にする動作は、イレーズ動作と呼ばれ、また、メモリセルの閾値を、負から正に変化させ、又は負の状態に維持する動作は、プログラム動作と呼ばれる。プログラム動作のうち、メモリセルの閾値を負から正に変化させる動作は、“0”−プログラミングと呼ばれ、メモリセルの閾値を負の状態に維持する動作は、“1”−プログラミングと呼ばれる。
通常、プログラム動作において、“0”−プログラミングの対象となるメモリセルは、書き込みセルと呼ばれ、“1”−プログラミングの対象となるメモリセルは、書き込み禁止セル( write-inhibit cell )と呼ばれる。
データ書き込み、即ち、“0”−プログラミングは、例えば、メモリセルのコントロールゲート電極CGの電位を、16Vに設定し、そのチャネル電位を、0Vに設定し、フローティングゲート電極FGとチャネルの間に大きな電位差を発生させ、F−N( Fowler-Nordheim )トンネリング電流をフローティングゲート電極FGからチャネルに流すことにより行われる。
データイレーズは、例えば、メモリセルのコントロールゲート電極CGの電位を、0Vに設定し、そのチャネル電位(P型ウェル領域3の電位)を、20Vに設定し、フローティングゲート電極FGとチャネルの間に大きな電位差を発生させ、F−N( Fowler-Nordheim )トンネリング電流をチャネルからフローティングゲート電極FGに流すことにより行われる。
このようなF−Nトンネリング電流を用いた書き込み(write)/消去(erase)動作は、ホットエレクトロンを用いた書き込み動作に比べて、消費電力が小さいため、この動作を利用した不揮発性半導体メモリは、低消費電力が要求されるシステムに使用することに適している。
2.−4. データ書き換え(変更)
3Tr−NANDにおけるデータの書き換え(ページ単位)は、以下の手順で行われる。
i. データロード
データ書き換えの対象となるページのアドレス(ロウアドレス)が指定された後、1ページ分のプログラムデータ(書き換えデータ)がページバッファ(ラッチ回路)にラッチされる。
ii. データイレーズ
データ書き換えの対象となるページのメモリセル(選択されたメモリセル)のデータが消去される。その結果、データ書き換えの対象となるページのメモリセルのデータは、全て、“1”−データとなる。
iii. データプログラム
ページバッファのプログラムデータがビット線を経由して選択されたメモリセルのチャネルに供給される。一方、選択されたメモリセルのコントロールゲート電極CGには、プログラム電位Vpgmが供給される。
表1は、リード( read )、プログラム( program )、イレーズ( erase )の各モードにおけるメモリセルのバイアス状態( cell bias condition )を示している。
データリード時には、全てのワード線WLの電位が0Vに設定され、全てのセルユニット内のソース側セレクトゲート線SGSの電位がVsg(例えば、約3.5V)に設定される。ソース線SL及びP型ウェル領域(P−well)の電位は、共に、0Vに設定される。そして、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位がVsgに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位が0Vに設定される。
セレクトゲートトランジスタは、ゲート電位がVsgのときオン状態、0Vのときオフ状態となるため、選択されたメモリセルを含むセルユニットのみがビット線BLに電気的に接続される。
“0”−プログラミングセルの閾値は、0Vを超え(具体的には、プログラムベリファイリード時のリード電位Vpv以上)、“1”−プログラミングセルの閾値は、0Vを下回る(具体的には、イレーズベリファイリード時のリード電位Vev以下)である。
このため、選択されたメモリセルが“0”状態のときは、ビット線BLの電位は、プリチャージ電位を維持する。即ち、ビット線BLにデータDATA(=“0”)が読み出される。一方、選択されたメモリセルが“1”状態のときは、ビット線BLの電位は、プリチャージ電位から接地電位に向かって低下する。即ち、ビット線BLにデータDATA(=“1”)が読み出される。
データプログラム時には、ビット線BLの電位は、プログラムデータ(ページバッファ内にラッチされたデータ)DATAの値に応じて、例えば、0V又は2Vとなる。即ち、プログラムデータが“0”のときは、ビット線(選択されたビット線)BLの電位は、0Vとなり、プログラムデータが“1”のときは、ビット線(非選択のビット線)BLの電位は、2Vとなる。
また、選択されたワード線WLの電位は、プログラム電位Vpgmに設定され、非選択のワード線WLは、フローティング状態に設定される。全てのセルユニット内のソース側セレクトゲート線SGSの電位は、0Vに設定される。また、ソース線SLの電位は、2Vに設定され、P型ウェル領域(P−well)の電位は、0Vに設定される。
そして、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位が2Vに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位が0Vに設定される。
この時、選択されたメモリセルが“0”−プログラミングの対象となるセルである場合には、ビット線BLの電位が0Vに維持され、かつ、この電位は、ドレイン側セレクトゲートトランジスタを経由してメモリセルのチャネルに与えられている。従って、選択されたメモリセルのコントロールゲート電極(ワード線WL)の電位は、Vpgmとなり、チャネルの電位は、0Vとなるため、トンネル酸化膜(ゲート酸化膜)にはF−Nトンネリング電流が流れ、電子がフローティングゲート電極FG内に注入される。
一方、選択されたメモリセルが“1”−プログラミングの対象となるセルである場合には、ビット線BLの電位が2Vに維持され、かつ、メモリセルのチャネル電位(初期電位)Viniは、(2−Vth)となり、ドレイン側セレクトゲートトランジスタは、カットオフする。但し、Vthは、ドレイン側セレクトゲートトランジスタの閾値電圧である。
従って、選択されたメモリセルのコントロールゲート電極(ワード線WL)の電位がプログラム電位Vpgmとなると、フローティング状態のチャネルの電位は、容量カップリングにより、上昇する。つまり、選択されたメモリセルのフローティングゲート電極FGとチャネルの間には高い電位差が生じないため、トンネル酸化膜(ゲート酸化膜)にはF−Nトンネリング電流が流れない。
ここで、容量結合比(又はブート比)をαとすると、選択されたメモリセルのコントロールゲート電極(ワード線WL)の電位がVpgmになった時点で、選択されたメモリセルのチャネル電位は、α×Vpgmとなる。よって、選択されたメモリセルのコントロールゲート電極とチャネルの間の電位差は、(1−α)×Vpgmとなる。
また、αは、約0.6である。このため、“1”−プログラミングの対象となるメモリセルのコントロールゲート電極とチャネルの間の電位差は、“0”−プログラミングの対象となるメモリセルのそれに比べ、約40%低くなる。つまり、“1”−プログラミングの対象となるメモリセルに対しては、“0”−プログラミングが禁止される(消去状態を維持する)。
データイレーズ時には、選択されたワード線WLの電位が0Vに設定され、非選択のワード線WLは、フローティング状態に設定される。また、全てのビット線BL、全てのセルユニット内のソース側セレクトゲート線SGS及びドレイン側セレクトゲート線SGD、並びに、ソース線SLは、フローティング状態に設定される。
そして、P型ウェル領域(P−well)に、消去電位として、例えば、約22Vが与えられると、選択されたせブロック内のメモリセル(選択されたワード線に繋がるメモリセル)に対しては、フローティングゲート電極とP型ウェル領域(P−well)の間に高い電位差が生じ、トンネル酸化膜(ゲート酸化膜)にはF−Nトンネリング電流が流れ、電子がフローティングゲート電極からP型ウェル領域(P−well)に排出される。
また、非選択のブロック内のメモリセル(非選択のワード線に繋がるメモリセル)に対しては、フローティングゲート電極とP型ウェル領域(P−well)の間に高い電位差が生じることがないため、トンネル酸化膜(ゲート酸化膜)にはF−Nトンネリング電流が流れない。即ち、メモリセルの状態が変化することはない。
2.−5. ベリファイ
プログラム動作を行った後には、メモリセルに対してきちんとプログラムが行われたか否かを検知し、プログラムが不十分である場合には、再書き込み( re-write )を行い、メモリセルに対して正確なデータをプログラムすることが重要である。このような一連の動作を、プログラムベリファイと呼ぶ。
同様に、イレーズ動作を行った後にも、メモリセルに対してきちんとイレーズが行われたか否かを検知し、イレーズが不十分である場合には、再消去( re-erase )を行い、メモリセルに対して、正確にデータイレーズを行うことが重要である。このような一連の動作をイレーズベリファイと呼ぶ。
但し、3Tr−NANDやNANDセル型フラッシュメモリでは、NORセル型フラッシュメモリとは異なり、オーバーイレーズが問題とならないため、イレーズベリファイは、省略してもよい(後に、詳述する。)。
従って、上述したデータ書き換え動作においては、プログラム動作後には、プログラムベリファイが行われる。
ベリファイには、いくつかの手法が存在するが、そのうちの一つにビット毎ベリファイと呼ばれる手法がある。
ビット毎ベリファイは、プログラムベリファイに適用されるものであり、その特徴は、メモリセル(ビット)毎にベリファイを行い、プログラムが完了したメモリセルに対しては再書き込みを行わず、プログラムが不十分なメモリセルに対してのみ再書き込みを行う点にある。
ビット毎ベリファイは、例えば、プロセスばらつきなどにより容量結合比αが減少し、“1”−プログラミングの対象となるメモリセルに対してプログラムエラー(“0”−プログラミング)が発生する可能性がある場合に、このプログラムエラーを防止し、かつ、“0”−プログラミングの対象となるメモリセルに対して過剰な書き込み(トンネル酸化膜に対する過剰なストレス)を防止するのに有効である。
ビット毎ベリファイは、NAND型フラッシュメモリやNOR型フラッシュメモリなどにおいて既に使用されているベリファイ手法であるが、以下に、ビット毎ベリファイの概略について説明する。
まず、ビット毎ベリファイを実現するためのページバッファについて説明する。
図6は、1つのカラム(ビット線)に対応する1つのページバッファを示している。図6のページバッファは、図2のページバッファに相当する。
ラッチ回路LATCHのノードN1とビット線BLの間には、NチャネルMOSトランジスタTN1が接続される。ラッチ回路LATCHのノードN2と接地点Vssの間には、NチャネルMOSトランジスタTN4,TN6が直列に接続されている。トランジスタTN1のゲートには、制御信号SW1が入力され、トランジスタTN4のゲートには、制御信号SW4が入力される。
一括検知のための共通ノードPBFLGと接地点Vssの間には、NチャネルMOSトランジスタTN5,TN7が直列に接続される。トランジスタTN5のゲートには、制御信号SW5が入力され、トランジスタTN7のゲートは、ラッチ回路LATCHのノードN2に接続される。
NチャネルMOSトランジスタTN2は、ビット線BLとトランジスタTN6のゲートの間に接続され、NチャネルMOSトランジスタTN3は、電源端子VddとトランジスタTN6のゲートの間に接続される。トランジスタTN2のゲートには、制御信号SW2が入力され、トランジスタTN3のゲートには、制御信号SW3が入力される。
なお、電源端子Vddには、外部電源電位に基づいてチップ内部で生成された内部電源電位が印加される。
3Tr−NANDでは、ページバッファは、例えば、データプログラム時に、プログラムデータを一時記憶するために用いられる。また、NAND型フラッシュメモリの場合には、センスアンプ(図1及び図2の“15”)が存在しないため、ページバッファは、データプログラム時に、プログラムデータを一時記憶し、かつ、データリード時に、リードデータをセンスかつ増幅するために用いられる。
また、ベリファイに関しては、通常、ベリファイリードによりメモリセルから読み出されたデータの検出(又はデータ値の判定)及び全てのメモリセルに対してプログラムが正確に行われたか否かを検知する一括検知は、上述のページバッファにより行われる。
図7は、ビット毎ベリファイの流れを示すフローチャートを示している。図8は、ベリファイリード時及びベリファイ(一括検知)時における図6のページバッファの動作を示す波形図である。図9は、ページバッファにおけるラッチデータの変化の様子を示している。
図7のフローチャートに示されるように、ビット毎ベリファイは、プログラム、ベリファイリード、ベリファイ(一括検知)という一連の動作(シーケンス)の繰り返しから構成される。そして、このシーケンスは、原則として、最終的にベリファイ(一括検知)をパスするまで、繰り返される。
また、プログラム電位Vpgmは、通常、初期電位Vpgm(0)、例えば、約13Vから、プログラム回数に応じて、順次、ステップアップさせる。1回のステップアップ量dVは、例えば、1Vに設定される。この点については、後に、詳述することにする。
以下、図6乃至図9を参照しつつ、プログラム時及びビット毎ベリファイ時におけるページバッファの動作について説明する。
i. プログラム時
まず、プログラムデータがチップ外部からページバッファへ転送され、ページバッファのラッチ回路LATCHにプログラムデータ(書き換えデータ)がラッチされる(データロード)。
例えば、プログラムデータが“1”の場合には、ラッチ回路LATCHのノードN1は、“1”状態(“H”レベル)となり、ノードN2は、“0”状態(“L”レベル)となる。また、プログラムデータが“0”の場合には、ラッチ回路LATCHのノードN1は、“0”状態(“L”レベル)となり、ノードN2は、“1”状態(“H”レベル)となる。
この後、例えば、プログラムの対象となる1ページ分のメモリセル(1ブロック内のメモリセル)に対してイレーズ動作が実行され、これら1ページ分のメモリセルの全てを消去状態、即ち、“1”状態にする。
次に、制御信号SW1を“H”レベルに設定し、トランジスタTN1をオン状態にすることにより、ラッチ回路LATCHにラッチされたデータをビット線BLに転送する。即ち、プログラムデータが“1”の場合には、ラッチ回路LATCHのノードN1は、“1”状態であるため、ビット線BLには、例えば、2Vが転送される。また、プログラムデータが“0”の場合には、ラッチ回路LATCHのノードN1は、“0”状態であるため、ビット線BLには、例えば、0Vが転送される。
ii. プログラムベリファイ(ビット毎ベリファイ)時
プログラム動作を行った後、まず、制御信号SW2,SW3を“H”レベルに設定し、ビット線BLを電源電位Vdd(“H”レベル、即ち、“1”状態)にプリチャージする。
この後、通常のデータリードと同様にして、プログラムベリファイリードを実行する。即ち、全てのセルユニット内のソース側セレクトゲート線SGSの電位がVsg(例えば、約3.5V)に設定され、ソース線SL及びP型ウェル領域(P−well)の電位は、共に、0Vに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位がVsgに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位が0Vに設定される。
プログラムベリファイリードが通常のデータリードと異なる点は、ワード線WLに与えるリード電位にある。即ち、通常のデータリードでは、ワード線WLの電位(通常のリード電位)が0Vに設定されるのに対し、プログラムベリファイリードでは、通常のリード電位と“0”状態のメモリセルの閾値のマージンを十分に確保するために、ワード線WLの電位が正の電位Vpv(例えば、0.5V程度)に設定される。
従って、メモリセルの閾値がVpvを超えるときは、ビット線BLの電位は、プリチャージ電位を維持する(“0”−プログラミング十分)。一方、メモリセルの閾値がVpvを下回るときは、ビット線BLの電位は、プリチャージ電位から接地電位に向かって次第に低下する(“0”−プログラミング不十分、又は、“1”−プログラミング)。
このビット線BLの電位変化は、図6のページバッファにより検出される。即ち、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位をVsgに維持しままで、制御信号SW2を“L”レベルに設定し、この状態を一定期間維持する。
その結果、メモリセルの閾値がVpvを超えるとき(“0”−プログラミング十分のとき)は、ビット線BLの電位は、プリチャージ電位(“1”状態)を維持し、メモリセルの閾値がVpvを下回るとき(“0”−プログラミング不十分、又は、“1”−プログラミングのとき)は、ビット線BLの電位は、接地電位(“0”状態)となる。
この後、制御信号SW3が“L”になり、制御信号SW2,SW4が“H”レベルになると、メモリセルのデータ(ビット線BLに読み出されたデータ)がページバッファに入力される。
即ち、メモリセルに対する“0”−プログラミングが十分であり、ビット線BLの電位が“1”状態(“H”レベル)のときは、トランジスタTN6がオン状態となるため、ラッチ回路LATCHのノードN2は、接地点Vssに短絡され、接地電位(“0”状態)となる。つまり、ラッチ回路LATCHのノードN1は、“0”状態から“1”状態に変化する。
また、メモリセルに対する“0”−プログラミングが不十分であり、ビット線BLの電位が“0”状態(“L”レベル)のときは、トランジスタTN6がオフ状態となるため、ラッチ回路LATCHのノードN2は、接地点Vssに短絡されることはなく、現状を維持する。つまり、ラッチ回路LATCHのノードN1は、“0”−プログラミングのときは“0”のままであり、“1”−プログラミングのときは“1”状態のままである。
このようなベリファイリード結果に応じて、ラッチデータ(ノードN1の値)が変化する様子は、図9に示す通りである。
即ち、ページバッファのラッチ回路LATCHのノードN1の値が“1”(“H”レベル)のとき(“1”−プログラミングのとき)は、ベリファイリードの前後においてラッチ回路(ページラッチ)LATCHのデータは、変化することはない。つまり、常に、プログラム禁止状態を維持する。
これに対し、ページバッファのラッチ回路LATCHのノードN1の値が“0”(“L”レベル)のとき(“0”−プログラミングのとき)は、ベリファイリード結果に応じて、ラッチ回路(ページラッチ)LATCHのデータは、変化したり、又は、変化しなかったりする。
つまり、“0”−プログラミングの場合において、“0”−プログラミングが十分(ベリファイリード結果、即ち、セルデータが“0”)と判断されたら、ラッチ回路LATCHのノードN1を“0”状態から“1”状態に変化させ、それ以降は、“0”−プログラミングが行われないようにしている。
これにより、メモリセルに対する過剰な書き込みを防止し、トンネル酸化膜に過剰なストレスが生じることを防止する(3Tr−NANDでは、NANDセル型フラッシュメモリにおいて問題となる、いわゆるオーバープログラムが問題とならないが、トンネル酸化膜のストレス緩和の面から過剰な書き込みを防止する意義がある)。
また、“0”−プログラミングの場合において、“0”−プログラミングが不十分(ベリファイリード結果、即ち、セルデータが“1”)と判断されたら、ラッチ回路LATCHのノードN1を“0”状態のままとし、それ以降も、続けて“0”−プログラミング(再書き込み)が行われるようにしている。
上述のように、ベリファイリードが終了し、その結果がページバッファに入力され、ラッチ回路LATCHのノードN1,N2の値が確定した後に、一括検知(ベリファイ)が行われる。
一括検知は、まず、全てのページバッファに共通の共通ノードの電位PBFLGが“H”レベルに充電される。この後、制御信号SW5が“H”レベルとなり、トランジスタTN5がオン状態になる。その結果、ラッチ回路LATCHのノードN1が“0”状態、ノードN2が“1”状態のときは、トランジスタTN7がオン状態となり、ラッチ回路LATCHのノードN1が“1”状態、ノードN2が“0”状態のときは、トランジスタTN7がオフ状態となる。
つまり、共通ノードは、全てのページバッファに接続されているため、共通ノードの電位PBFLGは、全てのページバッファ内のラッチ回路LATCHのノードN2が“0”レベルの場合に、“H”レベルを維持する。共通ノードの電位PBFLGが“H”レベルであるということは、全ての“0”−プログラミングセルに対して、“0”−プログラミングが十分となったことを意味する。
従って、この場合には、この後、プログラム動作を終了する。
一方、少なくとも1つのページバッファ内のラッチ回路LATCHのノードN2が“1”レベルの場合には、共通ノードの電位PBFLGは、“H”レベルから“L”レベルに変化する。共通ノードの電位PBFLGが“L”レベルであるということは、少なくとも1つの“0”−プログラミングセルに関して、“0”−プログラミングが不十分であることを意味する。
従って、この場合には、プログラム電位Vpgmをステップアップした後に、再び、プログラム動作を実行する。
以上、ビット毎ベリファイについて説明したが、このビット毎ベリファイを3Tr−NANDに適用した場合には、上述したように、“1”−プログラミングセルに対するプログラムエラー(“0”−プログラミング)を防止すると共に、“0”−プログラミングセルのトンネル酸化膜に生じるストレスを緩和する、という効果を奏する。
即ち、容量結合比αは、プロセスばらつきなどの影響により、メモリセル毎に、若干、異なった値を持つようになる。このため、“0”−プログラミングのためのプログラム電位Vpgmの最適値(プログラム特性)も、メモリセル毎に異なるようになる。
ビット毎ベリファイは、メモリセル毎に、最適化されたプログラム電位Vpgmを用いて、“0”−プログラミングを行うことができ、かつ、“0”−プログラミングが十分になった後は、プログラム禁止状態にするため、過剰な書き込みによりメモリセルに生じるストレスもなくすことができる。
また、ビット毎ベリファイを用いない場合には、最もプログラムを行い難いセル(プログラム特性が悪いセル)に対しても、十分に、プログラムを行うようにするために、このような最もプログラムを行い難いセルに対しても十分にプログラムを行えるような高いプログラム電位Vpgmを設定する必要がある。
これに対し、ビット毎ベリファイを用いた場合には、メモリセル毎に、最適化されたプログラム電位Vpgmを用いるため、非常に高いプログラム電位Vpgmのみでプログラムを行う必要がない。従って、“1”−プログラミングセルに対するプログラムエラー(“0”−プログラミング)の発生も、抑制することができる。
2.−6. その他
プログラムデータを一時記憶するためのページバッファと、リードデータをセンスかつ増幅するためのセンスアンプとを有する不揮発性半導体メモリ、例えば、上述したような3Tr−NANDにおいては、ベリファイ(イレーズ/プログラムベリファイ)時に、ベリファイリードによりメモリセルから読み出されたリードデータは、ページバッファにより検出(センシング)され、そのデータ値が判定される。
しかし、ページバッファとセンスアンプを有する不揮発性半導体メモリ、例えば、3Tr−NANDでは、通常のデータリードにおけるリードデータの検出及びそのデータ値の判定は、当然に、センスアンプにより行われる。従って、ベリファイリードにおけるリードデータの検出及びそのデータ値の判定をページバッファで行うと、通常のデータリードとベリファイリードで、データ値を判定する回路が異なることになる。
この場合、当然に、センスアンプとページバッファでは、“1”/“0”の判定レベルが異なるため、ベリファイリードにおけるリードデータの検出及びそのデータ値の判定をページバッファにより行うと、正確なベリファイが行えなくなる。結果として、例えば、イレーズ/プログラムが不十分であるにもかかわらず、イレーズ/プログラム十分と誤判定してしまうおそれがある。
3. 本発明の3Tr−NAND
本発明は、上述のようなページバッファ(ページラッチ)とセンスアンプを有する不揮発性半導体メモリ、例えば、3Tr−NANDを前提とし、ベリファイリード(プログラムベリファイリード)におけるリードデータ、即ち、メモリセルの状態(プログラム十分/不十分)の判定を正確に行うものである。
なお、以下の説明では、その説明を分かり易くするため、上述したような3Tr−NANDを前提とし、かつ、3Tr−NANDにおいてデータ書き換え(変更)を行う場合のプログラム動作後のプログラムベリファイについて説明することにする。また、プログラムベリファイは、いわゆるビット毎ベリファイ手法を採用するものとする。
3.−1. 概要
まず、本発明の概要について説明する。
図10は、本発明が適用される3Tr−NANDの主要部を示している。
同図は、図1のブロック図に対応しているため、同図に示すブロックのうち、図1と同じブロックには、同じ符号を付してある。
ビット線(カラム)BL0,・・・BL703は、例えば、704本存在し、そのうちの512本のビット線BL0,・・・BL511は、データ領域に配置され、残りの192本のビット線BL512,・・・BL703は、パリティビット領域に配置される。
センスアンプS/A0,・・・S/A・21は、例えば、22個存在し、そのうちの16個のセンスアンプS/A・0,・・・S/A・15は、データ領域のメモリセルに対応して配置され、残りの6個のセンスアンプS/A・16,・・・S/A・21は、パリティビット領域のメモリセルに対応して配置される。また、1つのセンスアンプS/A・k(k=1,・・・21)には、カラムゲートを経由して、32本のビット線が接続される。
ページバッファP/Bは、1本のビット線BLj(j=0,・・・703)に対して1つ設けられている。
カラムデコーダ16は、5ビットのカラムアドレス信号A0,・・・A4に基づいて、1つのセンスアンプS/A・kに対応する32本のビット線(カラム)のうちの1本を選択する。そして、選択された1本のビット線は、カラムゲートを経由して、1個のセンスアンプS/A・kに電気的に接続される。
図10の回路においては、1回のデータロード動作により、16ビット(1ワード)のプログラムデータ及び6ビットのパリティビットが、センスアンプ15を経由して、同時に選択される22本のビット線(カラム)に接続されるページバッファP/Bに入力される。32回のデータロード動作により、全てのページバッファP/Bにプログラムデータが入力される。この後、プログラム動作が行われる。
また、通常のデータリード時には、カラムアドレス信号A0,・・・A4により同時に選択される22本のビット線(カラム)から22個のセンスアンプS/A・0,・・・S/A・21にリードデータが入力される。16個のセンスアンプS/A・0,・・・S/A・15からは、16ビット(1ワード)のデータが出力され、6個のセンスアンプS/A・16,・・・S/A・21からは、6ビットのパリティビットが出力される。
本発明では、プログラムベリファイリード時において、通常のデータリードと同様に、22(=16+6)ビットのリードデータを、カラムアドレス信号A0,・・・A4により同時に選択される22本のビット線(カラム)から22個のセンスアンプS/A・0,・・・S/A・21に入力し、センスアンプS/A・0,・・・S/A・21においてリードデータの検出(センシング)及びそのデータ値の判定を行う。
つまり、NAND型フラッシュメモリなどのページバッファ(ページラッチ)を有する不揮発性半導体メモリでは、ページバッファにより、ベリファイリードデータの検出及びそのデータ値の判定を行っているが、本発明に関わる3Tr−NANDでは、ページバッファP/Bを有しているにもかかわらず、ベリファイリードデータは、通常データリードと同様に、センスアンプS/A・0,・・・S/A・21により検出し、かつ、そのデータ値を判定する。
また、本発明では、センスアンプS/A・0,・・・S/A・21により検出したデータ(ベリファイリード結果)を、カラムアドレス信号A0,・・・A4により同時に選択される22本のビット線(ベリファイリード時に選択された22本のビット線と同じビット線)に接続されるページバッファP/Bに入力し、ベリファイリード結果に応じて、ページバッファP/B内のラッチデータ(プログラムデータ)の変更/維持を行う。
このベリファイリード後に、センスアンプS/A・0,・・・S/A・21により検出したデータ(ベリファイリード結果)を、ページバッファP/Bに入力する動作は、本発明に特有なものであり、この動作を、以後、“ベリファイ・データ・イン”と称することにする。
通常、センスアンプS/A・0,・・・S/A・21の数は、ビット線BL0,・・・BL703の数よりも少なく設定されている。本例でも、32本のビット線に対して、1個のセンスアンプS/A・kが設けられている。
従って、1ページ分(1ブロック分)のデータ書き換えを行う場合には、プログラム動作後、ベリファイデータリード及びベリファイデータインは、複数回行われる。例えば、本例のように、1ページ(1ブロック)が32ワードから構成される場合には、1回のベリファイリードにより1ワード(16ビット)+6ビットのデータが読み出されるため、プログラム動作後、ベリファイデータリード及びベリファイデータインは、32回行われる。
ベリファイデータインに関しては、センスアンプS/A・0,・・・S/A・21から選択されたビット線(カラム)に接続されるページバッファP/Bのみにデータを転送する必要があり、この時、非選択のビット線(カラム)に接続されるページバッファP/B内のラッチデータには影響を与えないようにすることが重要である。これについては、後述する実施の形態で詳細に説明する。
3.−2. 第1実施の形態
以下、本発明の第1実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
3.−2.−1. 全体図
図11は、本発明の3Tr−NANDの主要部を示している。
同図は、図1のブロック図に対応しているため、同図に示すブロックのうち、図1と同じブロックには、同じ符号を付してある。また、同図は、図10の1つのセンスアンプS/A・0と、これに接続される32本のビット線(1つのビット線グループ)BL0,・・・BL31に対応する部分を詳細に示すものであり、図10の他のセンスアンプS/A1,・・・S/A21と、これに接続される32本のビット線も、当然に、図11に示すような回路構成を有している。
1つのセンスアンプS/A・0に対応する32本のビット線(ビット線グループ)BL0,・・・BL31は、4本のビット線BLj,BLj+1,BLj+2,BLj+3を含む8個のビット線サブグループから構成される。
カラムデコーダ16Aは、3ビットのカラムアドレス信号A2,A3,A4に基づいて、8個のビット線サブグループのうちから1個のビット線サブグループを選択する。具体的には、カラムアドレス信号A2,A3,A4のデコード結果、即ち、カラムデコーダ16Aから出力されるカラムセレクト信号b0,・・・b7により、カラムゲートを構成するNチャネルMOSトランジスタをオン/オフさせ、1個のビット線サブグループを選択する。
また、カラムデコーダ16Bは、2ビットのカラムアドレス信号A0,A1に基づき、各ビット線サブグループ内の4本のビット線BLj,BLj+1,BLj+2,BLj+3のうちから1本のビット線を選択する。例えば、カラムアドレス信号A0,A1のデコード結果、即ち、カラムデコーダ16Bから出力されるカラムセレクト信号c0,・・・c3により、カラムゲートを構成するNチャネルMOSトランジスタをオン/オフさせ、1本のビット線を選択する。
つまり、5ビットのカラムアドレス信号A0,・・・A4によって、1本のビット線が、読み出し/書き込み回路(センスアンプS/A・0)に電気的に接続されることになる。
なお、各ビット線BL0,・・・BL31とカラムゲートの間には、ビット線BL0,・・・BL31とカラムゲートを電気的に接続/切断するためのビット線クランプ用NチャネルMOSトランジスタMN9が接続される。トランジスタMN9のオン/オフは、制御信号Ytransfにより制御される。
また、各ビット線BL0,・・・BL31と接地点の間には、ビット線リセット用NチャネルMOSトランジスタMN8が接続される。トランジスタMN8は、ビット線リセット信号BLRSTに基づいて、各ビット線BL0,・・・BL31の電位を接地電位Vssにする機能を有する。
また、各ビット線BL0,・・・BL31とページバッファP/Bの間には、ページバッファP/B内のラッチ回路にデータを入力し、又はページバッファP/B内のラッチ回路からデータを出力するためのトランスファゲートとしてのNチャネルMOSトランジスタMN7が接続される。トランジスタMN7は、制御信号PBTRにより制御される。
トランジスタMN7は、主として、プログラムデータをチップ外部からページバッファP/Bに入力し、また、プログラムデータをページバッファP/Bからビット線BLjに出力するときに、オン状態となるものであり、本発明に関わるプログラムベリファイ時には、常に、オフ状態となっている。
NチャネルMOSトランジスタMN2,MN3,MN4は、ページバッファP/Bと接地点の間に直列に接続される。トランジスタMN4のゲートは、ビット線BLjに接続される。トランジスタMN4は、ベリファイデータインのときに、センスアンプS/A・0からページバッファP/Bにリードデータ(ベリファイ結果)を入力するためのものである。
トランジスタMN2,MN3は、ベリファイデータインのときに、選択されたビット線BLjのみを電気的にページバッファP/Bに接続する役割を果たす。つまり、1つのセンスアンプS/A・0に対応する32本のビット線BL0,・・・BL31に関しては、カラムアドレス信号A0,・・・A4により選択された1本のビット線BLjのみが、ページバッファP/Bに電気的に接続されることになる。
なお、ベリファイデータイン以外のモードのときは、制御信号BLSENENが常に“L”レベルとなるため、カラムデコーダ16から出力されるカラムセレクト信号b0,・・・b7,c0,・・・c3の値にかかわらず、アンド回路ANDの出力信号b0’,・・・b7’,c0’,・・・c3’は、全て、“L”レベルになる。
ベリファイデータインのときのみ、制御信号BLSENENが“H”レベルになるため、アンド回路ANDの出力信号b0’,・・・b7’,c0’,・・・c3’に基づいて、1本のビット線BLjのみがページバッファP/Bに電気的に接続される。
32本のビット線BL0,・・・BL31は、カラムゲートを経由して、読み出し/書き込み回路に接続される。読み出し/書き込み回路は、1個のセンスアンプS/A・0を含んでいる。
センスアンプS/A・0とカラムゲートの間には、NチャネルMOSトランジスタMN10が接続される。トランジスタMN10のオン/オフは、制御信号(センスアンプイネーブル信号)SAENにより制御される。制御信号SAENは、ベリファイリード時に“H”レベルとなるものであり、この時、同時に、センスアンプS/A・0も、活性化される(動作状態になる)。
センスアンプS/A・0の出力ノードは、インバータI1を経由して、ラッチ回路LATCH1のノードn2に接続される。インバータI1は、制御信号SAENが“H”レベルのときに、動作状態となる。ラッチ回路LATCH1は、制御信号SAENが“H”レベルのときに、インバータI1の出力データをセンスし、かつ、制御信号SAENが“L”レベルになり、制御信号SAENn(SAENの反転信号)が“H”レベルになると、インバータI1の出力データをラッチする。
ラッチ回路LATCH1のノードn1は、インバータI4,I5を経由して、カラムゲートに接続される。インバータI5は、制御信号DN2が“H”レベルのときに、動作状態となる。ベリファイデータインのとき、制御信号DN2は、“H”レベルとなるため、ラッチ回路LATCH1にラッチされたデータ(ベリファイリード結果)は、カラムゲートを経由して、選択されたビット線BLjに接続されるページバッファP/Bに入力される。
なお、ラッチ回路LATCH1のノードn2は、インバータI2,I3を経由して、ノードn3に接続される。ノードn3は、データバスDATABUSに接続される。インバータI3は、制御信号SAOUTが“H”レベルのときに、動作状態となる。通常のデータリード時には、制御信号SAOUTが“H”レベルとなるため、リードデータがデータバスDATABUSに出力される。
本発明に関わるベリファイリード時には、制御信号SAOUTは、常に、“L”レベルである。
また、ノードn3とカラムゲートの間には、インバータI6,I7が接続される。インバータI7は、制御信号DN1が“H”レベルのときに、動作状態となる。プログラムモードにおけるデータロード時、制御信号DN1は、“H”レベルになる。従って、プログラムデータは、インバータI6,I7及びカラムゲートを経由して、選択されたビット線BLjに接続されるページバッファP/Bに入力される。
図12は、図11のインバータI5,I7を示している。
制御信号DNi(i=1,2)が“H”のときに、入力信号INに対応した出力信号OUTが得られることがわかる。
なお、インバータI1,I3及びラッチ回路LATCH1内のラッチ用インバータについても、図12に示すような回路構成とすることができる。即ち、図12の制御信号DNiを、それぞれ制御信号SAEN,SAENn,SAOUTに変えれば、インバータI1,I3、ラッチ回路LATCH1内のラッチ用インバータをそれぞれ得ることができる。
図13は、図11の制御信号PBTRを生成する回路を示している。図14は、図13のレベルシフタHVSWの具体例を示している。
制御信号PBTRは、チップ外部から入力されたプログラムデータをページバッファP/B内に転送する場合や、ページバッファP/B内のラッチデータ(プログラムデータ)をビット線BLjに転送する場合に、“H”レベル(例えば、約3.5V)になる。
制御信号PBTRを“H”レベルにするときは、ページバッファP/B内のラッチデータがいわゆるチャージシェアにより破壊される現象を防止する必要がある。この現象を防止するためには、図13に示すような回路を用いて、制御信号PBTRの電位を、緩やかに、“L”レベルから“H”レベルに変化させればよい(詳細については、後述する。)。
3.−2.−2. ページバッファ
図11に示す複数個(例えば、704個)のページバッファ(ページラッチ)P/Bは、互いに同じ構成を有しているため、以下の説明では、ビット線BL0に接続されるページバッファP/Bについて説明する。
図15は、1つのカラム(ビット線BL0)に対応する1つのページバッファP/Bを示している。
ラッチ回路LATCHは、電源端子Vddと接地端子Vssの間に直列に接続されるMOSトランジスタMP1,MP3,MN11と、電源端子Vddと接地端子Vssの間に直列に接続されるMOSトランジスタMP2,MP4,MN12とから構成される。
PチャネルMOSトランジスタMP3のゲート及びNチャネルMOSトランジスタMN11のゲートは、ノードN1に接続され、PチャネルMOSトランジスタMP4のゲート及びNチャネルMOSトランジスタMN12のゲートは、ノードN2に接続される。PチャネルMOSトランジスタMP1のゲートには、制御信号PBSWが入力され、PチャネルMOSトランジスタMP2のゲートには、接地電位が入力される。
ラッチ回路LATCHのノードN1とビット線BLの間には、NチャネルMOSトランジスタMN7が接続される。ラッチ回路LATCHのノードN2と接地端子Vssの間には、NチャネルMOSトランジスタMN2,MN3,MN4が直列に接続されている。トランジスタMN2のゲートには、制御信号BLSENAiが入力され、トランジスタMN3のゲートには、制御信号BLSENBjが入力される。
制御信号BLSENAi,BLSENBjは、このページバッファP/Bに接続されるビット線BL0が選択され、かつ、制御信号BLSENENが“H”レベルになってベリファイデータインが行われるときに、“H”レベルとなるものである。
一括検知のための共通ノードPBFLGと接地端子Vssの間には、NチャネルMOSトランジスタMN5,MN6が直列に接続される。トランジスタMN6のゲートには、制御信号PBVFYが入力され、トランジスタMN5のゲートは、ラッチ回路LATCHのノードN2に接続される。制御信号PBVFYは、プログラム十分/不十分の一括検知を行うときに、“H”レベルとなる。
NチャネルMOSトランジスタMN1は、ラッチ回路LATCHのノードN2と接地端子Vssの間に接続される。トランジスタMN1のゲートには、制御信号PBRSTが入力される。制御信号PBRSTは、プログラムモードにおけるデータロード時に、予め、ラッチ回路LATCHの状態を初期状態(リセット状態)に設定しておくためのものである。
なお、データ書き換え(変更)時には、プログラムデータがラッチ回路LATCHにラッチされる。例えば、プログラムデータが“0”のときは、ノードN1が“0”状態(“L”レベル)となり、ノードN2が“1”状態(“H”レベル)となる。また、プログラムデータが“1”のときは、ノードN1が“1”状態となり、ノードN2が“0”状態となる。
初期状態(ベリファイリードを一度も行っていない場合)においては、プログラムデータに応じて、ページバッファP/B内のラッチ回路LATCHにラッチされるデータ(ラッチデータ)が決定される。そして、ベリファイリード及びベリファイデータインが行われると、ベリファイリード結果に応じて、ラッチデータの値が変化又は維持される。
例えば、ラッチデータが“1”のとき(ノードN1の値が“1”のとき)は、常に、ラッチデータの値は、変わらない。つまり、ラッチ回路LATCHのノードN1は、常に、“1”状態、ノードN2は、常に、“0”状態になる。
ラッチデータが“0”のとき(ノードN1の値が“0”のとき)は、“0”−プログラミングが十分(ベリファイリード結果がOK)であれば、ラッチデータの値は、“0”から“1”に変化する。つまり、ラッチ回路LATCHのノードN1は、“1”状態、ノードN2は、“0”状態になる。また、“0”−プログラミングが不十分(ベリファイリード結果がNG)であれば、ラッチデータの値は、“0”状態を維持する。つまり、ラッチ回路LATCHのノードN1は、“0”状態、ノードN2は、“1”状態になる(図9参照)。
3.−2.−3. データ書き換え動作
次に、図1に示すブロック構成を有し、かつ、図11乃至図15に示す回路構成を有する3Tr−NANDを例にして、本発明に関わるデータ書き換え(変更)動作を詳細に説明する。
データ書き換え動作は、上述の項目2.−4.で説明したように、データロードステップ、データイレーズステップ、データプログラムステップの3段階から構成される。
以下、図16のタイミングチャートを参照しながら、データロード、データイレーズ、データプログラムの各動作について説明する。
i. データロード
図1に示すような32キロバイトのメモリ容量を有する3Tr−NANDでは、例えば、ワード線(ロウ)の数は、512本であり、ビット線の数(データ領域及びパリティビット領域のカラムの合計数)は、704本となる。また、ビット線は、上述したように、32本のビット線から構成される22のビット線グループに分けられる。
従って、アドレス信号は、各ビット線グループ内の32本のビット線の1つを選択するための5ビットのカラムアドレス信号A0,・・・A4と、512本のワード線のうちの1本を選択するための9ビットのロウアドレス信号A5,・・・A13から構成される。
データ書き換え時におけるデータロードでは、まず、ロウアドレス信号A5,・・・A13が入力され、データ書き換えの対象となる1ページ分のメモリセル、即ち、1本のワード線(ロウ)が選択される。
データロードでは、データ書き換えの対象(1ページ分のメモリセル)を指定するために、チップの外部から内部にロウアドレス信号A5,・・・A13が入力されるが、カラムアドレス信号A0,・・・A4は、例えば、チップ内部のアドレスカウンタにより自動生成される。
具体的には、図16に示すように、カラムアドレス信号A0,・・・A4の値Col.Add.は、ライトイネーブル信号WEnが“H”レベルから“L”レベルに立ち下がる度に、1、2,3、・・・32という具合に、1から32(32本のビット線に対応)まで、順次、インクリメントされる。
なお、カラムアドレス信号A0,・・・A4の値Col.Add.と、これにより選択されるビット線との対応は、表2に示す通りである。
プログラムデータ(書き換えデータ)は、1回のデータロードにより、チップの外部から内部へ16ビット分(1ワード分)入力される。実際には、チップ内部においてこの16ビットのデータに6ビットのパリティビットが付加されるため、1回のデータロードでは、22ビット分のデータがページバッファP/Bに入力される。
なお、1ページは、32ワードであるため、ページバッファP/Bに対するデータロードは、連続して32回行われる。ここで、16ビット分のプログラムデータは、ライトイネーブル信号WEnが“L”レベルから“H”レベルに立ち上がる度に、チップ内部へ入力される。
プログラムデータ(書き換えデータ)をページバッファ内のラッチ回路にラッチする動作は、具体的には、以下のようにして行われる(例えば、図16のCol.Add.=1の場合を参照)。
まず、制御信号BLRST,Ytransfが“H”レベルでとなり、704本の全てのビット線が“L”レベルにリセットされる。この後、制御信号BLRST,Ytransfは、“H”レベルから“L”レベルに変化する。
また、第1回目のデータロード(Col.Add.=1)においては、ライトイネーブル信号WEnが“H”レベルから“L”レベルに立ち下がると、制御信号PBSW,PBRSTがそれぞれ“L”レベルから“H”レベルに変化する。その結果、全てのページバッファ(704個)P/Bがリセットされる。
例えば、図15に示すように、制御信号PBSW,PBRSTがそれぞれ“H”レベルになると、トランジスタMN1がオン状態、トランジスタMP1がオフ状態になるため、ページバッファ(ページラッチ)P/B内のラッチ回路LATCHのノードN1は、“1”状態(“H”レベル)になり、ノードN2は、“0”状態(“L”レベル)になる。この後、制御信号PBSW,PBRSTは、共に、“L”レベルになる
なお、第2回目のデータロード(Col.Add.=2)以降においては、ページバッファP/Bのリセットは、行われない。
ページバッファP/Bをリセットする場合及び後述するベリファイデータインの場合には、制御信号PBSWを“H”レベルに設定し、図15のラッチ回路LATCH内のトランジスタMP1をオフ状態にする。
その理由は、NチャネルMOSトランジスタMN1,MN2,MN3,MN4のチャネル幅は、PチャネルMOSトランジスタMP1のチャネル幅よりも小さいため、仮に、トランジスタMP1がオン状態であると、ラッチデータを反転させる(例えば、ノードN2を“H”から“L”にする)ことができなくなる。ラッチデータを反転させるためには、トランジスタMN1,MN2,MN3,MN4に流れるオン電流を、トランジスタMP1に流れるオン電流よりも大きくしなければならない。
これは、NチャネルMOSトランジスタMN1,MN2,MN3,MN4のチャネル幅(駆動力)を、PチャネルMOSトランジスタMP1のチャネル幅(駆動力)よりも大きくすることを意味する。しかし、トランジスタMN1,MN2,MN3,MN4のチャネル幅をそれぞれ大きくすると、ページバッファP/B及びその付属物のレイアウト面積が大きくなり、例えば、ページバッファP/Bを2本ビット線間に配置することが難しくなる。
従って、ページバッファP/Bのリセット時に、制御信号PBSWを“H”レベルに設定し、図15のラッチ回路LATCH内のトランジスタMP1をオフ状態にすることは、小さいチャネル幅のトランジスタMN1,MN2,MN3,MN4でも、ラッチデータの反転を可能にする、つまり、ページバッファP/Bのレイアウト面積を縮小できるという効果を持つことを意味する。
一方、制御信号DIN1が“H”レベルになると、図11に示すように、プログラムデータ(書き換えデータ)は、データバスDATABUSから、読み出し/書き込み回路及びカラムゲートを経由して、例えば、カラムアドレス信号A0,・・・A4(Col.Add.=1)により選択されたカラムのページバッファP/Bの入口付近に転送される。
この後、制御信号PBTRが“H”レベルになると、図11及び図15に示すように、プログラムデータがページバッファP/B内のラッチ回路LATCHに入力される。
なお、プログラムデータが“1”のときは、ページバッファP/B内のラッチ回路LATCHのノードN1は、“1”状態(“H”レベル)であるため、ラッチ回路LATCHの状態は、変わらない。プログラムデータが“0”のときは、ページバッファP/B内のラッチ回路LATCHのノードN1は、“0”状態(“L”レベル)となるため、ラッチ回路LATCHのノードN2は、“1”状態(“H”レベル)になる。
制御信号PBTRは、図11及び図15に示すように、全てのカラムのトランジスタMN7に共通になっている。従って、データロード中においては、制御信号Ytransfを“L”レベルに設定し、トランジスタMN9をオフ状態にし、全てのカラムのページバッファP/Bの入力ノードを、ビット線から電気的に切り離す。
これにより、第2回目以降のデータロードにおいて、既に、前のデータロードでページバッファP/B内に入力されたラッチデータ(ノードN1の値)が、制御信号PBTRが“H”となったときに、いわゆるチャージシェア(非選択カラムにおけるページバッファP/BのノードN1のチャージシェア)により破壊されることを防止する。
また、データロード中においては、制御信号Ytransfを“L”レベルに設定しておくと、選択されたカラムにおけるページバッファP/Bの入力ノードは、ビット線から切り離されているため、図11の読み出し/書き込み回路内のインバータI7により、大きな容量を有するビット線を充電する必要がなくなる。つまり、インバータI7は、小さな容量を有するページバッファP/Bの入力ノードのみを充電すればよく、低消費電力化やデータロードの高速化に貢献できる。
なお、以上の動作が32回(Col.Add=1,2,3,・・・32)繰り返されると(ページバッファP/Bのリセットについては、最初の1回のみ行われる)、データロードが完了する。
ii. データイレーズ
図16のタイミングチャートに示すように、全てのページバッファP/Bに対するデータロードが完了した後、データ書き換えの対象となる選択された1ページ分のメモリセルのデータがイレーズされる。
イレーズ動作中においては、全てのメモリセル及びセレクトゲートトランジスタに共通のP型ウェル領域に、イレーズのためのイレーズ電位Vee(例えば、約20V)が与えられ、選択された1ページ分のメモリセルのコントロールゲート電極(ワード線)は、0Vに設定される。
この時、全てのビット線、全てのソース側/ドレイン側セレクトゲート線、ソース線及び非選択のワード線は、フローティング状態に設定されている。
従って、イレーズ動作中においては、容量カップリングにより、全てのビット線の電位は、イレーズ電位Vee近傍まで上昇する。しかし、イレーズ動作中においては、制御信号Ytransfが“L”レベルに設定されているため、ページバッファP/Bとビット線は、互いに電気的に切断されている。つまり、ビット線の高電位は、ページバッファP/Bに伝達されることがない。
なお、選択された1ページ分のメモリセルのイレーズ動作後の状態は、図17に示すようになる。
ところで、イレーズ動作が終了した後に、きちんとイレーズが行われたか否かを検証するイレーズベリファイを行ってもよい。この場合、イレーズベリファイリードにおいては、リード電位をVev(負電位)に設定し、本発明に関わるベリファイリード、ベリファイデータイン及び一括検知(ベリファイ)を行う。イレーズベリファイのための回路については、省略する。
但し、データイレーズでは、選択された1ページ分の全てのメモリセルのデータが“1”状態にされる。また、NORセル型フラッシュメモリでは、非選択セルをオフ状態にする必要性から、いわゆるオーバーイレーズを回避することが重要であるのに対し、本発明に関わる3Tr−MANDでは、2つのセレクトゲートトランジスタの間に1つのメモリセルのみが接続されるため、オーバーイレーズが問題とならない。
従って、イレーズ電位Veeを高めに設定して、一度のイレーズ動作により、全てのメモリセルのデータが完全にイレーズされるようにし、イレーズベリファイを省略してもよい。
なお、後述するが、3Tr−NANDでは、NANDセル型フラッシュメモリと異なり、オーバープログラムも問題とならない。しかし、プログラム動作に関しては、“0”−プログラミングと“1”−プログラミングがあり、かつ、“1”−プログラミングセルのプログラムエラーや、“0”−プログラミングセルのトンネル酸化膜のストレス緩和などから、プログラムベリファイ(ビット毎ベリファイ)が必ず必要となる。
iii. データプログラム
図16のタイミングチャートに示すように、イレーズ動作が終了した後、まず、制御信号Ytransfが“H”レベル(例えば、VsgHHH=約6V)に設定される。これにより、図11及び図15に示すトランジスタMN9がオン状態となり、ビット線とページバッファP/Bが互いに電気的に接続される。
この後、制御信号PBTRが“H”レベル(例えば、約3.5V)に設定されると、図11及び図15に示すトランジスタMN7がオン状態となる。その結果、各ページバッファP/B内のラッチデータ(ノードN1の値)が、トランジスタMN7,MN9を経由して、ビット線に転送される。
例えば、プログラムデータが“0”のときは、ノードN1の値は、“0”状態(“L”レベル)であるため、接地電位(データ“0”)がページバッファP/Bからビット線に転送される。また、プログラムデータが“1”のときは、ノードN1の値は、“1”状態(“H”レベル)であるため、内部電源電位Vdd、例えば、2V程度の電位(データ“1”)がページバッファP/Bからビット線に転送される。
ここで、制御信号Ytransf,PBTRの電位(6V,3.5V)は、昇圧回路により生成する。
ページバッファP/B内のラッチデータがビット線に転送されるとき、そのラッチデータが、いわゆるチャージシェアにより破壊されることを防止するため、図16のタイミングチャートに示すように、制御信号PBTRは、緩やかに、“L”レベルから“H”レベルに上昇させる。
上述したように、図13及び図14に示す回路を用いれば、制御信号PBTRを、緩やかに、“L”レベルから“H”レベルに上昇させることができる。
図13及び図14に示す回路に関して、データロード時に、制御信号PBTRを“H”レベルに設定するときは、制御信号PBTRQを“H”レベルに設定し、PチャネルMOSトランジスタP1から出力ノードに、制御信号PBTRを供給する。このときの制御信号PBTRの立ち上りは、図16に示すように、速くなる。
プログラム時に、制御信号PBTRを“H”レベルに設定するときは、制御信号PBTRSを“H”レベルに設定し、PチャネルMOSトランジスタP2から出力ノードに、制御信号PBTRを供給する。このときの制御信号PBTRの立ち上りは、図16に示すように、遅くなる。その理由は、デプレッション型のNチャネルMOSトランジスタA,Bが、出力電流を一定に保つ役割を果たすからである。
ページバッファP/B内のラッチデータ(プログラムデータ)がビット線に転送された後、選択されたワード線にプログラム電位Vpgmが供給され、データプログラムが開始される。
プログラム電位Vpgmは、NANDセル型フラッシュメモリと同様に、プログラム回数が増えるに従い、初期値Vpgm(1)から、順次、所定のステップアップ量dV(例えば、1V)だけ、ステップアップさせる。
例えば、図19に示すように、第1回目のプログラム動作では、プログラム電位Vpgm(1)を13Vに設定し、この後、ベリファイでプログラム不十分(Fail)の場合には、第2回目のプログラム動作のプログラム電位Vpgm(2)として、Vpgm(1)+1Vを使用する。つまり、プログラム回数が増える度に、プログラム電位Vpgmが1V上昇する。
なお、1ページ分の全てのメモリセルに対するプログラムが完了すると、これらメモリセルの閾値は、その状態(“0”又は“1”)に応じて、図18に示すようになる。
以上、データ書き換え動作におけるデータロード、データイレーズ、データプログラムについて説明した。
ここで、3Tr−NANDでは、1回のプログラム動作を行った後に、プログラムベリファイが行われる。以下では、本発明に関わるプログラムベリファイ動作について詳細に説明する。
3.−2.−4. プログラムベリファイ
1回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。
プログラムベリファイは、図19のフローチャートに示すように、ベリファイリードステップ、ベリファイデータインステップ、一括検知(ベリファイ)ステップとから構成される。
また、ベリファイリードとベリファイデータインは、32回(Col.Add.=1,2,・・・32)連続して行われ、1回のベリファイリードとベリファイデータインでは、カラムアドレス信号A0,・・・A4により、同時に、16ビット(1ワード)のメモリセルが選択される。
図19は、ビット毎ベリファイの流れを示すフローチャートを示し、図20は、ベリファイリード時、ベリファイデータイン時及びベリファイ(一括検知)時における3Tr−NANDの動作を示す波形図である。
以下、図11、図15、図19及び図20を参照しつつ、本発明に関わるビット毎ベリファイ時における動作について説明する。
i. ベリファイリード
プログラムベリファイリードは、選択されたワード線に与えるリード電位Vpvを、正電位(例えば、0.5V程度)に設定する点を除けば、通常のデータリード(リード電位は、0V)と同様に行われる。
但し、当然に、通常のデータリードでは、図11の読み出し/書き込み回路内のセンスアンプでリードデータの検出(センシング)及びそのデータ値の判定を行った後に、リードデータをデータバスDATABUSに出力するが、プログラムベリファイリードでは、図11の読み出し/書き込み回路内のセンスアンプでリードデータの検出(センシング)及びそのデータ値の判定を行った後、図11の読み出し/書き込み回路内のラッチ回路LATCH1にリードデータ(ベリファイ結果)をラッチするだけである。
プログラムベリファイリードのリード電位Vpvを正電位に設定するのは、通常のデータリードにおけるリード電位(0V)と“0”状態のメモリセルの閾値とのマージンを十分に確保するためである。
具体的な動作について説明する。
まず、制御信号BLRST,SAENが“H”レベルになるため、全てのビット線が接地電位Vssにリセットされ、また、図11の読み出し/書き込み回路内のトランジスタMN10がオン状態、センスアンプS/A・0が動作状態になる。
この後、ビット線BLが電源電位Vdd(“H”レベル、即ち、“1”状態)にプリチャージされる(図11では、プリチャージ回路は省略してある)。
そして、全てのセルユニット内のソース側セレクトゲート線SGSの電位がVsg(例えば、約3.5V)に設定され、ソース線SL及びP型ウェル領域(P−well)の電位は、共に、0Vに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位がVsgに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位が0Vに設定される。
また、全てのワード線の電位がリード電位Vpvに設定される。
その結果、選択された1ページ分のメモリセルのデータは、ビット線に読み出される。また、制御信号Ytransfは、予め、“H”レベル(例えば、VsgHHH)に設定されているため、選択された1ページ分のメモリセルのリードデータは、図11のトランジスタMN9を経由して、ページバッファP/Bの入力部まで転送される。
ここで、プログラムベリファイリードでは、制御信号BLSENENが“L”レベルとなっているため、カラムアドレス信号A0,・・・A4の値(Col.Add.)にかかわらず、常に、図11及び図15に示すトランジスタMN2,MN3は、オフ状態である。また、制御信号PBTRも常に“L”レベルであり、図11及び図15に示すトランジスタMN7もオフ状態である。
従って、プログラムベリファイリードでは、選択された1ページ分のメモリセルのリードデータは、ページバッファP/Bの入力部まで転送されるが、ページバッファP/Bに入力されることがない。
なお、メモリセルの閾値がVpvを超えるときは、ビット線BLの電位は、プリチャージ電位を維持する(“0”−プログラミング十分)。一方、メモリセルの閾値がVpvを下回るときは、ビット線BLの電位は、プリチャージ電位から接地電位に向かって次第に低下する(“0”−プログラミング不十分、又は、“1”−プログラミング)。
このビット線BLの電位変化は、図11のセンスアンプS/A・0により検出(センシング)される。但し、例えば、図11に示すように、32本のビット線BL0,・・・BL15からなる1つのビット線グループでは、1本のビット線のみがセンスアンプS/A・0に電気的に接続される。
また、制御信号SEANが“H”レベルであるため、センスアンプS/A・0で検出されたリードデータは、インバータI1を経由して、ラッチ回路LATCH1に検出される。
ここで、通常のデータリードとは異なり、プログラムベリファイリードでは、制御信号SAOUTが“L”レベルに設定されているため、リードデータ(ベリファイリード結果)は、データバスDATABUSに出力されることがない。リードデータをデータバスDATABUSに出力しない理由は、大きな容量を有するデータバスDATABUSにリードデータを出力すると、無駄な電力を消費することになるからである。
この後、制御信号SAENが“L”レベルになり、制御信号SAENn(制御信号SAENの反転信号)が“H”レベルになると、リードデータは、図11に示す読み出し/書き込み回路内のラッチ回路LATCH1にラッチされる。
ii. ベリファイデータイン
ベリファイリードが終了すると、続けて、ベリファイデータインが行われる。
まず、制御信号DIN2が“H”レベルとなるため、図11に示すインバータI5が動作状態となり、ラッチ回路LATCH1内のリードデータ(ベリファイリード結果)が、カラムアドレス信号A0,・・・A4により選択されているビット線に転送される。
当然に、プログラムベリファイリード時に選択されるビット線(センスアンプに電気的に接続されるビット線)と、ベリファイデータイン時に選択されるビット線は、同じである。
この後、制御信号BLSENENが“H”レベルになると、図11に示すアンド回路ANDが活性化され、選択されたビット線(カラム)に対応するNチャネルMOSトランジスタMN2,MN3のみがオン状態になる。その結果、読み出し/書き込み回路内のラッチ回路LATCH1からビット線に転送されたリードデータ(ベリファイリード結果)は、NチャネルMOSトランジスタMN4を経由して、ページバッファP/Bに入力される。
ここで、ページバッファP/B内のラッチ回路LATCHのデータ(ノードN2の値)は、ベリファイリード結果に応じて変化する。
例えば、選択されたメモリセルが、“0”−プログラミングの対象となるセルであり、かつ、“0”−プログラミングが十分である場合には、リードデータ、即ち、トランジスタMN4のゲート電位は、“1”状態(“H”レベル)となる。従って、トランジスタMN4がオン状態となるため、ラッチ回路LATCHのノードN2は、接地点Vssに短絡され、接地電位(“0”状態)となる。つまり、ラッチ回路LATCHのノードN1は、“0”状態から“1”状態に変化することになる。
また、選択されたメモリセルが、“0”−プログラミングの対象となるセルであり、かつ、“0”−プログラミングが不十分である場合には、リードデータ、即ち、トランジスタMN4のゲート電位は、“0”状態(“L”レベル)となる。従って、トランジスタMN4は、オフ状態となるため、ラッチ回路LATCHのノードN2は、接地点Vssに短絡されることなく、“1”状態を保つ。つまり、ラッチ回路LATCHのノードN1は、“0”状態を維持する。
また、選択されたメモリセルが、“1”−プログラミングの対象となるセルである場合には、プログラムは行われないため、リードデータ、即ち、トランジスタMN4のゲート電位は、“0”状態(“L”レベル)となる。従って、トランジスタMN4は、オフ状態となるため、ラッチ回路LATCHのノードN2は、“0”状態を保つ。つまり、ラッチ回路LATCHのノードN1は、“1”状態を維持する。
従って、“0”−プログラミングの対象となるメモリセルの全てがプログラミング十分となった場合には、全てのページバッファP/B内のラッチ回路LATCHのノードN1が“1”状態(“H”レベル)になり、ノードN2が“0”状態(“L”レベル)になる。
このようなベリファイリード結果に応じて、ラッチデータ(ノードN1の値)が変化する様子は、図9に示す通りである。
即ち、“0”−プログラミングの場合において、“0”−プログラミングが不十分(ベリファイリード結果、即ち、セルデータが“1”)と判断されたら、ラッチ回路LATCHのノードN1を“0”状態のままとし、それ以降も、続けて“0”−プログラミング(再書き込み)が行われるようにする。
なお、ベリファイデータイン時には、制御信号PBSWが“H”レベルに設定される。これは、図15に示すように、トランジスタMP1をオフ状態にして、“0”−プログラミング十分のときに、ノードN2の値を“1”状態(“H”レベル)から“0”状態(“L”レベル)にするためである。
iii. 一括検知(ベリファイ)
上述の i.ベリファイリード及び ii.ベリファイデータインが32回(Col.Add.=1,2,・・・32)だけ繰り返された後、選択された1ページ分の全てのメモリセルに対してプログラムが完全に行われたか否かを検証する一括検知動作が行われる。
一括検知動作は、まず、全てのページバッファP/Bに共通の共通ノードの電位PBFLGが“H”レベルに充電される。
この後、制御信号PBVFYが“H”レベルとなり、トランジスタMN6がオン状態になる。その結果、ラッチ回路LATCHのノードN1が“0”状態、ノードN2が“1”状態のときは、トランジスタMN5がオン状態となり、ラッチ回路LATCHのノードN1が“1”状態、ノードN2が“0”状態のときは、トランジスタMN5がオフ状態となる。
つまり、共通ノードは、全てのページバッファに接続されているため、共通ノードの電位PBFLGは、全てのページバッファ内のラッチ回路LATCHのノードN2が“0”レベルの場合に、“H”レベルを維持する。共通ノードの電位PBFLGが“H”レベルであるということは、全ての“0”−プログラミングセルに対して、“0”−プログラミングが十分となったことを意味する。
従って、この場合には、この後、プログラム動作を終了する。
一方、少なくとも1つのページバッファ内のラッチ回路LATCHのノードN2が“1”レベルの場合には、共通ノードの電位PBFLGは、“H”レベルから“L”レベルに変化する。共通ノードの電位PBFLGが“L”レベルであるということは、少なくとも1つの“0”−プログラミングセルに関して、“0”−プログラミングが不十分であることを意味する。
従って、この場合には、プログラム電位Vpgmをステップアップした後に、再び、プログラム動作を実行する。
3.−2.−5. まとめ
以上、プログラムベリファイ動作について説明したが、本発明によれば、第一に、プログラムベリファイリード時に、センスアンプにより、リードデータ(ベリファイリード結果)の検出及びそのデータ値の判定を行い、かつ、ベリファイリード結果をページバッファ(ページラッチ)P/Bに入力し、ページバッファP/B内のラッチデータの値を決定している。
従って、通常のデータリードとベリファイリードでは、共に、リードデータを検出し、かつ、その値を判定する回路は、センスアンプである。つまり、本発明によれば、ベリファイリードにおけるリードデータの判定を正確に行うことができる。
また、ビット毎ベリファイ手法を採用しているため、“0”−プログラミングセルに対する過剰な書き込みを防止し、トンネル酸化膜に過剰なストレスが生じることを防止できる。なお、3Tr−NANDでは、NANDセル型フラッシュメモリにおいて問題となるオーバープログラムが問題とならないが、トンネル酸化膜のストレス緩和の面から過剰な書き込みを防止する意義がある。
また、メモリセル毎に、最適化されたプログラム電位Vpgmを用いることができるため、非常に高いプログラム電位のみを用いる場合に比べて、“1”−プログラミングセルに対するプログラムエラー(“0”−プログラミング)を防止できる。これは、ビット毎ベリファイ手法と共に、プログラム電位のステップアップ手法を採用したことによる効果である。
3.−3. 第2実施の形態
以下、本発明の第2実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
上述の第1実施の形態(図11)では、ベリファイリード結果を、読み出し/書き込み回路から選択されたカラムのページバッファP/Bに転送する際に、選択されたカラムにおけるトランジスタMN2,MN3をオン状態にし、非選択のカラムにおけるトランジスタMN2,MN3をオフ状態にしている。
そして、これらトランジスタMN2,MN3のオン/オフ制御は、ベリファイリードモードとベリファイデータインモードを区別するための制御信号BLSENENと、カラムデコーダ16の出力信号b0,・・・b7,c0,・・・c3とのアンドロジックANDの結果b0’,・・・b7’,c0’,・・・c3’により行っていた。
しかし、この場合、図11に示すように、ページバッファP/B上に、制御信号b0’,・・・b7’,c0’,・・・c3’をトランジスタMN2,MN3のゲートに伝えるための12本の信号線が必要となる。このため、これら12本の信号線やトランジスタMN2,MN3の設計に負担がかかると共に、ページバッファP/B及びその近傍のレイアウト面積が増大していた。
そこで、第2実施の形態では、これら信号線の数やトランジスタの数を減らすことができ、かつ、簡単な回路構成により、本発明に関わるベリファイリード及びベリファイデータインを実行することができる3Tr−NANDについて説明する。
3.−3.−1. 全体図
図21は、本発明の第2実施の形態に関わる3Tr−NANDの主要部を示している。図22は、図21のページバッファP/Bを詳細に示している。
図21は、図1のブロック図に対応しているため、図21に示すブロックのうち、図1と同じブロックには、同じ符号を付してある。また、図21は、図10の1つのセンスアンプS/A・0と、これに接続される32本のビット線(1つのビット線グループ)BL0,・・・BL31に対応する部分を詳細に示すものであり、図10の他のセンスアンプS/A1,・・・S/A21と、これに接続される32本のビット線も、当然に、図21に示すような回路構成を有している。
本例の回路が上述の第1実施の形態に関わる回路(図11)と異なる点は、ページバッファP/Bとビット線との接続部のみであり、その他の部分については、上述の第1実施の形態に関わる回路と同じである。
従って、以下の説明では、上述の第1の実施の形態に関わる回路に対して、本例の回路の特徴的な部分のみを説明し、その他の部分、即ち、上述の第1実施の形態に関わる回路と同じ部分については、その説明を省略する。
図22に示すように、ページバッファP/B内のラッチ回路LATCHのノードN2は、NチャネルMOSトランジスタMN21,MN4を経由して接地点に接続される。トランジスタMN21のゲートには、制御信号BLSENENが入力される。制御信号BLSENENは、ベリファイリード時には、“L”レベルとなり、ベリファイデータイン時には、“H”レベルとなる。
本例の回路では、上述の第1実施の形態に関わる回路(図11)に比べて、ページバッファP/B近傍の回路構成が非常に簡単になっている。つまり、ページバッファP/B上には、制御信号BLSENENをトランジスタMN21のゲートに伝える1本の信号線のみが配置され、図11の回路(12本の信号線が必要)に比べて、大幅に、信号線の数を減らすことができる。
また、同時に、本例の回路では、ページバッファP/B近傍におけるトランジスタ数も大幅に削減できる。
従って、ページバッファP/B近傍における回路のレイアウト面積を小さくでき、かつ、非常に簡単な回路構成により、本発明に関わるベリファイリード及びベリファイデータインを実行することができる
但し、本例では、ベリファイデータイン時に、全てのカラムのページバッファP/Bがビット線に電気的に接続される。このため、非選択のカラムにおいて、ページバッファP/B内のラッチデータが変動しないような動作タイミング上の工夫が必要である。
それについては、以下のプログラムベリファイ動作の説明において詳細に説明することにする。
3.−3.−2. プログラムベリファイ
例えば、データ書き換え時におけるプログラムベリファイについて説明する。なお、データ書き換え動作については、上述の第1実施の形態において、既に、詳細に説明したので、その説明は省略する(項目3.−2.−3の“データ書き換え動作”を参照)。
1回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。
プログラムベリファイは、上述の第1実施の形態と同様に、図19のフローチャートに示すように、ベリファイリードステップ、ベリファイデータインステップ、一括検知(ベリファイ)ステップとから構成される。
また、ベリファイリードとベリファイデータインは、32回(Col.Add.=1,2,・・・32)連続して行われ、1回のベリファイリードとベリファイデータインでは、カラムアドレス信号A0,・・・A4により、同時に、16ビット(1ワード)のメモリセルが選択される。
図23は、ベリファイリード時、ベリファイデータイン時及びベリファイ(一括検知)時における3Tr−NANDの動作を示す波形図である。
以下、図19、図21、図22及び図23を参照しつつ、本発明に関わるビット毎ベリファイ時における動作について説明する。
i. ベリファイリード
プログラムベリファイリードは、選択されたワード線に与えるリード電位Vpvを、正電位(例えば、0.5V程度)に設定する点を除けば、通常のデータリード(リード電位は、0V)と同様に行われる。
但し、当然に、通常のデータリードでは、図21の読み出し/書き込み回路内のセンスアンプでリードデータの検出(センシング)及びそのデータ値の判定を行った後に、リードデータをデータバスDATABUSに出力するが、プログラムベリファイリードでは、図21の読み出し/書き込み回路内のセンスアンプでリードデータの検出(センシング)及びそのデータ値の判定を行った後、図21の読み出し/書き込み回路内のラッチ回路LATCH1にリードデータ(ベリファイ結果)をラッチするだけである。
プログラムベリファイリードのリード電位Vpvを正電位に設定するのは、通常のデータリードにおけるリード電位(0V)と“0”状態のメモリセルの閾値とのマージンを十分に確保するためである。
具体的な動作について説明する。
まず、制御信号BLRST,SAENが“H”レベルになるため、全てのビット線が接地電位Vssにリセットされ、また、図21の読み出し/書き込み回路内のトランジスタMN10がオン状態、センスアンプS/A・0が動作状態になる。
この後、ビット線BLが電源電位Vdd(“H”レベル、即ち、“1”状態)にプリチャージされる(図21では、プリチャージ回路は省略してある)。
そして、全てのセルユニット内のソース側セレクトゲート線SGSの電位がVsg(例えば、約3.5V)に設定され、ソース線SL及びP型ウェル領域(P−well)の電位は、共に、0Vに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位がVsgに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位が0Vに設定される。
また、全てのワード線の電位がリード電位Vpvに設定される。
その結果、選択された1ページ分のメモリセルのデータは、ビット線に読み出される。また、制御信号Ytransfは、予め、“H”レベル(例えば、VsgHHH)に設定されているため、選択された1ページ分のメモリセルのリードデータは、図21のトランジスタMN9を経由して、ページバッファP/Bの入力部まで転送される。
ここで、プログラムベリファイリードでは、制御信号BLSENENが“L”レベルとなっているため、常に、図21及び図22に示すトランジスタMN21は、オフ状態である。また、制御信号PBTRも常に“L”レベルであり、図21及び図22に示すトランジスタMN7もオフ状態である。
従って、プログラムベリファイリードでは、選択された1ページ分のメモリセルのリードデータは、ページバッファP/Bの入力部まで転送されるが、ページバッファP/Bに入力されることがない。
なお、メモリセルの閾値がVpvを超えるときは、ビット線BLの電位は、プリチャージ電位を維持する(“0”−プログラミング十分)。一方、メモリセルの閾値がVpvを下回るときは、ビット線BLの電位は、プリチャージ電位から接地電位に向かって次第に低下する(“0”−プログラミング不十分、又は、“1”−プログラミング)。
このビット線BLの電位変化は、図21のセンスアンプS/A・0により検出(センシング)される。但し、例えば、図21に示すように、32本のビット線BL0,・・・BL15からなる1つのビット線グループでは、1本のビット線のみがセンスアンプS/A・0に電気的に接続される。
また、制御信号SEANが“H”レベルであるため、センスアンプS/A・0で検出されたリードデータは、インバータI1を経由して、ラッチ回路LATCH1に検出される。
ここで、通常のデータリードとは異なり、プログラムベリファイリードでは、制御信号SAOUTが“L”レベルに設定されているため、リードデータ(ベリファイリード結果)は、データバスDATABUSに出力されることがない。リードデータをデータバスDATABUSに出力しない理由は、大きな容量を有するデータバスDATABUSにリードデータを出力すると、無駄な電力を消費することになるからである。
この後、制御信号SAENが“L”レベルになり、制御信号SAENn(制御信号SAENの反転信号)が“H”レベルになると、リードデータは、図21に示す読み出し/書き込み回路内のラッチ回路LATCH1にラッチされる。
ii. ベリファイデータイン
ベリファイリードが終了すると、続けて、ベリファイデータインが行われる。
まず、制御信号Ytransfが“H”レベルから“L”レベルに低下するため、図21に示すトランジスタMN9がオフ状態となる。つまり、全てのページバッファP/Bの入力ノードとビット線とが互いに電気的に切断される。
その理由は、大きな容量を有するビット線をページバッファP/Bから切り離すことにより、リードデータ(ベリファイリード結果)を、読み出し/書き込み回路のラッチ回路LATCH1から選択されたカラムのページバッファP/Bに転送する際に、非選択のカラムのページバッファP/Bの入力ノードの電位変動が防止できるからである。
つまり、例えば、ベリファイリード結果が“0”−プログラミング十分であると、読み出し/書き込み回路から選択されたカラムのページバッファP/Bに、“1”(“H”レベル)のデータが転送される。この時、非選択カラムでは、ページバッファP/B内のラッチデータを変動させないために、ページバッファP/Bの入力ノードは、“0”状態(“L”レベル)に維持しておく必要がある。
しかし、選択されたカラムのページバッファP/Bの入力ノードと非選択のカラムのページバッファP/Bの入力ノードの間の容量が大きいと、非選択カラムのページバッファP/Bの入力ノードが、容量カップリングにより、“0”状態から“1”状態(“0”−プログラミング十分)に変動し、非選択のカラムにおけるページバッファP/Bのラッチデータが変動する可能性がある。
このような理由から、予め、全てのページバッファP/Bの入力ノードとビット線とが互いに電気的に切断される。
また、本実施の形態では、全てのページバッファP/Bの入力ノードがビット線から電気的に切り離された後、制御信号BLRSTが“H”レベルとなり、全てのページバッファP/Bの入力ノードが“L”レベルにリセットされる。
ベリファイデータイン時にページバッファP/Bの入力ノードを“L”レベルに設定する理由は、ベリファイデータイン時には、制御信号BLSENENが“H”レベルとなり、全てのカラムのトランジスタMN21がオン状態になるためである。つまり、非選択のカラムでは、図21に示すトランジスタMN4を常にオフ状態にして、非選択のカラムのページバッファP/Bのラッチデータが変動しないようにする必要があるからである。
この後、制御信号DIN2が“H”レベルとなるため、図21に示すインバータI5が動作状態となり、ラッチ回路LATCH1内のリードデータ(ベリファイリード結果)が、カラムアドレス信号A0,・・・A4により選択されているビット線に転送される。
当然に、プログラムベリファイリード時に選択されるビット線(センスアンプに電気的に接続されるビット線)と、ベリファイデータイン時に選択されるビット線は、同じである。
この後、制御信号BLSENENが“H”レベルになると、図21に示す全てのNチャネルMOSトランジスタMN21がオン状態になる。その結果、読み出し/書き込み回路内のラッチ回路LATCH1から選択されたビット線に転送されたリードデータ(ベリファイリード結果)は、NチャネルMOSトランジスタMN4を経由して、ページバッファP/Bに入力される。
この時、非選択のカラム(ビット線)では、上述したように、ページバッファP/Bの入力ノードが“L”レベルにリセットされ、かつ、選択されたカラムのページバッファの入力ノードと非選択のカラムのページバッファP/Bの入力ノードの間の容量は小さくなっているため、非選択カラムのページバッファP/Bのラッチデータが変動することはない。
なお、ベリファイリード結果に応じて、ラッチデータ(ノードN1の値)が変化する様子は、図9に示す通りである。
ベリファイデータイン時には、制御信号PBSWが“H”レベルに設定される。これは、図22に示すように、トランジスタMP1をオフ状態にして、“0”−プログラミング十分のときに、ノードN2の値を“1”状態(“H”レベル)から“0”状態(“L”レベル)にするためである。
iii. 一括検知(ベリファイ)
上述の i.ベリファイリード及び ii.ベリファイデータインが32回(Col.Add.=1,2,・・・32)だけ繰り返された後、選択された1ページ分の全てのメモリセルに対してプログラムが完全に行われたか否かを検証する一括検知動作が行われる。
一括検知動作は、まず、全てのページバッファP/Bに共通の共通ノードの電位PBFLGが“H”レベルに充電される。
この後、制御信号PBVFYが“H”レベルとなり、トランジスタMN6がオン状態になる。その結果、ラッチ回路LATCHのノードN1が“0”状態、ノードN2が“1”状態のときは、トランジスタMN5がオン状態となり、ラッチ回路LATCHのノードN1が“1”状態、ノードN2が“0”状態のときは、トランジスタMN5がオフ状態となる。
つまり、共通ノードは、全てのページバッファに接続されているため、共通ノードの電位PBFLGは、全てのページバッファ内のラッチ回路LATCHのノードN2が“0”レベルの場合に、“H”レベルを維持する。共通ノードの電位PBFLGが“H”レベルであるということは、全ての“0”−プログラミングセルに対して、“0”−プログラミングが十分となったことを意味する。
従って、この場合には、この後、プログラム動作を終了する。
一方、少なくとも1つのページバッファ内のラッチ回路LATCHのノードN2が“1”レベルの場合には、共通ノードの電位PBFLGは、“H”レベルから“L”レベルに変化する。共通ノードの電位PBFLGが“L”レベルであるということは、少なくとも1つの“0”−プログラミングセルに関して、“0”−プログラミングが不十分であることを意味する。
従って、この場合には、プログラム電位Vpgmをステップアップした後に、再び、プログラム動作を実行する。
3.−3.−3. まとめ
第2実施の形態に関わる回路では、信号線の数やトランジスタの数が大幅に削減されるため、ページバッファP/Bのレイアウト面積が小さくなり、かつ、その設計が容易になる、という効果を奏することができる。
また、本発明に関わるベリファイリード及びベリファイデータインを行う場合には、非選択カラムにおけるラッチデータの変動防止などの観点から、動作タイミングを上述のように工夫する必要がある。この動作タイミングでは、制御信号Ytransfのレベルを、繰り返し、“H”から“L”、又は、“L”から“H”に変動させる必要がある。
しかし、制御信号Ytransfが入力されるトランジスタMN9のゲートは、ビット線との間に大きな容量を有している。従って、制御信号Ytransfのレベルを、度々、変動させるということは、大きな電力を消費することを意味する。
以上より、本発明を実際の製品に適用するに当たっては、その製品の用途などを考慮の上、第1実施の形態を採用するか、又は、第2実施の形態を採用するかを決定すればよい。
3.−4. 第3実施の形態
以下、本発明の第3実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
上述の第1実施の形態(図11)では、1回のプログラム動作が終了した後、ベリファイリード及びベリファイデータインが、32回繰り返し行われ、さらに、この後、一括検知(ベリファイ)が行われていた。
ベリファイリード及びベリファイデータインが複数回(例えば、32回)繰り返される理由は、ベリファイ時に、リードデータ(ベリファイリード結果)を検出及び判定するセンスアンプの数がビット線の数よりも少ないためである。上述の第1実施の形態に関わる3Tr−NANDでは、データ領域に関しては、512本のビット線に対して、16個(1ワード分)のセンスアンプが配置されるため、結果として、1ページ分(512ビット=32ワード)の全てのメモリセルについてベリファイを行う場合には、図19に示すように、ベリファイリード及びベリファイデータインを32回繰り返す必要がある。
しかし、この場合、一括検知(ベリファイ)は、1ページ分の全てのメモリセルに対して行われるため、例えば、32のカラムアドレス(Col.Add.=1,2,・・・32)のうち、1個以上の所定のカラムアドレスに対応する16個のメモリセルについては、一括検知がパス(“0”−プログラミング十分)であっても、常に、32のカラムアドレスについて1回ずつ、合計、32回のベリファイリード及びベリファイデータインを、1ページ分の全てのメモリセルの一括検知がパスするまで、行わなければならなかった。
このため、上述の第1実施の形態に関わるベリファイ手法では、ベリファイに要する時間が非常に長くなる場合がある。
そこで、第3実施の形態では、1ページ分の全てのメモリセルに対する一括検知を行うと共に、カラムアドレス毎に、ベリファイリード及びベリファイデータインを行った後に、そのカラムアドレスに対応する16個のメモリセルに対して一括検知を行い(これを、“カラムアドレス毎一括検知”と称する。)、カラムアドレス毎一括検知がパスしたカラムアドレスのメモリセルに対しては、この後、ベリファイリード及びベリファイデータインを行わない新規なベリファイ手法を提案する。
このベリファイ手法によれば、カラムアドレス毎一括検知がパスしたカラムアドレスのメモリセルに対しては、ベリファイリード及びベリファイデータインを省略できるため、ベリファイ時間の短縮に貢献できる。
なお、このベリファイ手法は、“0”−プログラミング不十分のメモリセルの数が少ない場合に効果的であり、逆に、“0”−プログラミング不十分のメモリセルの数が多い場合には、結局、ほとんど全てのカラムアドレスに対応するメモリセルについて、ベリファイリード及びベリファイデータインを行わなければならず、効果的でない。
つまり、“0”−プログラミング不十分のメモリセルの数が多い場合には、カラムアドレス毎一括検知のステップの増加分の影響が大きくなり、逆に、ベリファイ時間が増大する。これを解決する手法については、後述する。
3.−4.−1. 全体図
図24は、本発明の第3実施の形態に関わる3Tr−NANDの主要部を示している。図25は、図24のページバッファP/Bを詳細に示している。
図24は、図1のブロック図に対応しているため、図24に示すブロックのうち、図1と同じブロックには、同じ符号を付してある。また、図24は、図10の1つのセンスアンプS/A・0と、これに接続される32本のビット線(1つのビット線グループ)BL0,・・・BL31に対応する部分を詳細に示すものであり、図10の他のセンスアンプS/A1,・・・S/A21と、これに接続される32本のビット線も、当然に、図24に示すような回路構成を有している。
本例の回路が上述の第1実施の形態に関わる回路(図11)と異なる点は、ベリファイリード時及びベリファイデータイン時にページバッファP/Bとビット線の電気的接続/切断を制御すると共に、一括検知時に一括検知を制御する部分のみであり、その他の部分については、上述の第1実施の形態に関わる回路と同じである。
従って、以下の説明では、上述の第1の実施の形態に関わる回路に対して、本例の回路の特徴的な部分のみを説明し、その他の部分、即ち、上述の第1実施の形態に関わる回路と同じ部分については、その説明を省略する。
図25に示すように、ページバッファP/B内のラッチ回路LATCHのノードN2は、NチャネルMOSトランジスタMN2,MN3,MN4を経由して接地点に接続されている。また、一括検知のための共通ノードと接地点の間には、NチャネルMOSトランジスタMN5,MN2’,MN3’が直列に接続されている。そして、トランジスタMN2,MN2’のゲートには、制御信号BLSENAiが入力され、トランジスタMN3,MN3’のゲートには、制御信号BLSENBjが入力される。
制御信号BLSENAi,BLSENBjは、ロジック回路LOGICにより生成される。ロジック回路LOGICは、図11に示す第1実施の形態に関わるアンド回路ANDを変形したものである。制御信号BLSENAi,BLSENBjは、制御信号BLSENEN,VERIFYn及びカラムセレクト信号b0,・・・b7,c0,・・・c3により生成される。
なお、図24の信号b0’,・・・b7’,c0’,・・・c3’の一部が図25の制御信号BLSENAi,BLSENBjに相当している。
3.−4.−2. プログラムベリファイ
以下、データ書き換え時におけるプログラムベリファイについて説明する。なお、データ書き換え動作については、上述の第1実施の形態において、既に、詳細に説明したので、その説明は省略する(項目3.−2.−3の“データ書き換え動作”を参照)。
図26に示すように、データロード及びイレーズが行われた後、プログラムステップが行われる。1回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。プログラムベリファイは、カラムアドレス毎一括検知ステップ、ベリファイリードステップ、ベリファイデータインステップ、一括検知ステップとから構成される。
1ページ分の全てのメモリセルに対する一括検知を行う理由は、1つのカラムアドレスの16+6個のメモリセルに対するカラムアドレス毎一括検知を、その16+6個のメモリセルに対するベリファイリード及びベリファイデータインの前に行っているためである。
つまり、カラムアドレス毎一括検知がパス(“0”−プログラミング十分)の場合には、そのカラムアドレスのメモリセルに対しては、ベリファイリード及びベリファイデータインを行う必要がない。しかし、カラムアドレス毎一括検知がフェイル(“0”−プログラミング不十分)の場合には、プログラムステップの結果を判定するために、そのカラムアドレスのメモリセルに対して、ベリファイリード及びベリファイデータインを行う必要がある。
従って、カラムアドレス毎一括検知がフェイルの場合には、そのカラムアドレスのメモリセルに対するベリファイリード及びベリファイデータインが行われた後に、そのベリファイリード結果を検証する一括検知が必要になる。
図27は、ベリファイリード時、ベリファイデータイン時及びベリファイ(一括検知)時における3Tr−NANDの動作を示す波形図である。
以下、図24、図25、図26及び図27を参照しつつ、本発明に関わるビット毎ベリファイ時における動作について説明する。
i. カラムアドレス毎一括検知
まず、カラムアドレス毎一括検知では、制御信号VERIFYn,BLSENENが“H”レベルに設定される。制御信号VERIFYn,BLSENENが“H”レベルであるため、図24及び図25のロジック回路LOGIC回路が活性化される。具体的には、ロジック回路LOGICの後段のNAND回路がインバータとして機能するため、カラムセレクト信号b0,・・・b7,c0,・・・c3に基づいて、1つのカラムにおける制御信号BLSENAi,BLSENBjのみが“H”レベルになる。
従って、カラムアドレス信号により選択された(16+6)のカラムにおいては、図25に示すトランジスタMN2’,MN3’がオン状態となり、その他の非選択のカラムにおいては、図25に示すトランジスタMN2’,MN3’がオフ状態となる。
つまり、選択されたカラムのメモリセル、即ち、1つのカラムアドレスに対応する16+6個のメモリセルに対してのみ、カラムアドレス毎一括検知が可能な状態となり、非選択のカラムのメモリセル、即ち、その他のカラムアドレスに対応するメモリセルに対しては、カラムアドレス毎一括検知が不可能な状態となる。
一方、全てのカラムのページバッファP/Bに共通の一括検知のための共通ノードの電位PBFLGが“H”レベルにプリチャージされる。
この後、制御信号PBVFYが“H”になると、選択されたカラムのページバッファP/B内のラッチデータに応じて、共通ノードの電位PBFLGの電位が変化する。非選択のカラムのページバッファP/Bでは、トランジスタMN2’,MN3’がオフ状態であるため、共通ノードの電位PBFLGに影響を与えることがない。
例えば、選択されたカラム内の全てのページバッファP/B内のラッチ回路LATCHのノードN2が“0”レベルの場合には、共通ノードの電位PBFLGは、“H”レベルを維持する。共通ノードの電位PBFLGが“H”レベルであるということは、選択されたカラム内の全ての“0”−プログラミングセルに対して、“0”−プログラミングが十分となったことを意味する。
従って、この場合には、このカラムアドレスに対応するメモリセルのベリファイリード及びベリファイデータインは省略され、次のカラムアドレスに対応するメモリセルについてカラムアドレス毎一括検知が行われる。
また、選択されたカラム内の少なくとも1つのページバッファP/B内のラッチ回路LATCHのノードN2が“1”レベルの場合には、共通ノードの電位PBFLGは、“H”レベルから“L”レベルに変化する。共通ノードの電位PBFLGが“L”レベルであるということは、選択されたカラム内の少なくとも1つの“0”−プログラミングセルに関して、“0”−プログラミングが不十分であることを意味する。
従って、この場合には、このカラムアドレスに対応するメモリセルのベリファイリード及びベリファイデータインを行った後に、次のカラムアドレスに対応するメモリセルについてカラムアドレス毎一括検知を行う。
ii. ベリファイリード
プログラムベリファイリードは、選択されたワード線に与えるリード電位Vpvを、正電位(例えば、0.5V程度)に設定する点を除けば、通常のデータリード(リード電位は、0V)と同様に行われる。
但し、当然に、通常のデータリードでは、図24の読み出し/書き込み回路内のセンスアンプでリードデータの検出(センシング)及びそのデータ値の判定を行った後に、リードデータをデータバスDATABUSに出力するが、プログラムベリファイリードでは、図24の読み出し/書き込み回路内のセンスアンプでリードデータの検出(センシング)及びそのデータ値の判定を行った後、図24の読み出し/書き込み回路内のラッチ回路LATCH1にリードデータ(ベリファイ結果)をラッチするだけである。
プログラムベリファイリードのリード電位Vpvを正電位に設定するのは、通常のデータリードにおけるリード電位(0V)と“0”状態のメモリセルの閾値とのマージンを十分に確保するためである。
具体的な動作について説明する。
まず、制御信号BLRST,SAENが“H”レベルになるため、全てのビット線が接地電位Vssにリセットされ、また、図24の読み出し/書き込み回路内のトランジスタMN10がオン状態、センスアンプS/A・0が動作状態になる。
この後、ビット線BLが電源電位Vdd(“H”レベル、即ち、“1”状態)にプリチャージされる(図24では、プリチャージ回路は省略してある)。
そして、全てのセルユニット内のソース側セレクトゲート線SGSの電位がVsg(例えば、約3.5V)に設定され、ソース線SL及びP型ウェル領域(P−well)の電位は、共に、0Vに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位がVsgに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位が0Vに設定される。
また、全てのワード線の電位がリード電位Vpvに設定される。
その結果、選択された1ページ分のメモリセルのデータは、ビット線に読み出される。また、制御信号Ytransfは、予め、“H”レベル(例えば、VsgHHH)に設定されているため、選択された1ページ分のメモリセルのリードデータは、図24のトランジスタMN9を経由して、ページバッファP/Bの入力部まで転送される。
ここで、プログラムベリファイリードでは、制御信号BLSENENが“L”レベル、制御信号VERIFYnが“H”レベルとなっているため、図24に示す全ての制御信号b0’,・・・b7’,c0’,・・・c3’は、“L”レベルになる。つまり、全てのカラムにおいて、制御信号BLSENAi,BLSENBjは、“L”レベルであり、常に、図24及び図25に示すトランジスタMN2,MN3は、オフ状態である。また、制御信号PBTRも常に“L”レベルであり、トランジスタMN7もオフ状態である。
従って、プログラムベリファイリードでは、選択された1ページ分のメモリセルのリードデータは、ページバッファP/Bの入力部まで転送されるが、ページバッファP/Bに入力されることがない。
なお、メモリセルの閾値がVpvを超えるときは、ビット線BLの電位は、プリチャージ電位を維持する(“0”−プログラミング十分)。一方、メモリセルの閾値がVpvを下回るときは、ビット線BLの電位は、プリチャージ電位から接地電位に向かって次第に低下する(“0”−プログラミング不十分、又は、“1”−プログラミング)。
このビット線BLの電位変化は、図24のセンスアンプS/A・0により検出(センシング)される。但し、例えば、図24に示すように、32本のビット線BL0,・・・BL15からなる1つのビット線グループでは、1本のビット線のみがセンスアンプS/A・0に電気的に接続される。
また、制御信号SEANが“H”レベルであるため、センスアンプS/A・0で検出されたリードデータは、インバータI1を経由して、ラッチ回路LATCH1に検出される。
ここで、通常のデータリードとは異なり、プログラムベリファイリードでは、制御信号SAOUTが“L”レベルに設定されているため、リードデータ(ベリファイリード結果)は、データバスDATABUSに出力されることがない。リードデータをデータバスDATABUSに出力しない理由は、大きな容量を有するデータバスDATABUSにリードデータを出力すると、無駄な電力を消費することになるからである。
この後、制御信号SAENが“L”レベルになり、制御信号SAENn(制御信号SAENの反転信号)が“H”レベルになると、リードデータは、図24に示す読み出し/書き込み回路内のラッチ回路LATCH1にラッチされる。
iii. ベリファイデータイン
ベリファイリードが終了すると、続けて、ベリファイデータインが行われる。
まず、制御信号DIN2が“H”レベルとなるため、図24に示すインバータI5が動作状態となり、ラッチ回路LATCH1内のリードデータ(ベリファイリード結果)が、カラムアドレス信号A0,・・・A4により選択されているビット線に転送される。
当然に、プログラムベリファイリード時に選択されるビット線(センスアンプに電気的に接続されるビット線)と、ベリファイデータイン時に選択されるビット線は、同じである。
この後、制御信号BLSENENが“H”レベルになると、図24に示すロジック回路LOGICが活性化され、選択されたビット線(カラム)に対応するNチャネルMOSトランジスタMN2,MN3のみがオン状態になる。その結果、読み出し/書き込み回路内のラッチ回路LATCH1からビット線に転送されたリードデータ(ベリファイリード結果)は、NチャネルMOSトランジスタMN4を経由して、ページバッファP/Bに入力される。
ここで、ページバッファP/B内のラッチ回路LATCHのデータ(ノードN2の値)は、ベリファイリード結果に応じて変化する。
例えば、選択されたメモリセルが、“0”−プログラミングの対象となるセルであり、かつ、“0”−プログラミングが十分である場合には、リードデータ、即ち、トランジスタMN4のゲート電位は、“1”状態(“H”レベル)となる。従って、トランジスタMN4がオン状態となるため、ラッチ回路LATCHのノードN2は、接地点Vssに短絡され、接地電位(“0”状態)となる。つまり、ラッチ回路LATCHのノードN1は、“0”状態から“1”状態に変化することになる。
また、選択されたメモリセルが、“0”−プログラミングの対象となるセルであり、かつ、“0”−プログラミングが不十分である場合には、リードデータ、即ち、トランジスタMN4のゲート電位は、“0”状態(“L”レベル)となる。従って、トランジスタMN4は、オフ状態となるため、ラッチ回路LATCHのノードN2は、接地点Vssに短絡されることなく、“1”状態を保つ。つまり、ラッチ回路LATCHのノードN1は、“0”状態を維持する。
また、選択されたメモリセルが、“1”−プログラミングの対象となるセルである場合には、プログラムは行われないため、リードデータ、即ち、トランジスタMN4のゲート電位は、“0”状態(“L”レベル)となる。従って、トランジスタMN4は、オフ状態となるため、ラッチ回路LATCHのノードN2は、“0”状態を保つ。つまり、ラッチ回路LATCHのノードN1は、“1”状態を維持する。
従って、“0”−プログラミングの対象となるメモリセルの全てがプログラミング十分となった場合には、全てのページバッファP/B内のラッチ回路LATCHのノードN1が“1”状態(“H”レベル)になり、ノードN2が“0”状態(“L”レベル)になる。
このようなベリファイリード結果に応じて、ラッチデータ(ノードN1の値)が変化する様子は、図9に示す通りである。
即ち、“0”−プログラミングの場合において、“0”−プログラミングが不十分(ベリファイリード結果、即ち、セルデータが“1”)と判断されたら、ラッチ回路LATCHのノードN1を“0”状態のままとし、それ以降も、続けて“0”−プログラミング(再書き込み)が行われるようにする。
なお、ベリファイデータイン時には、制御信号PBSWが“H”レベルに設定される。これは、図25に示すように、トランジスタMP1をオフ状態にして、“0”−プログラミング十分のときに、ノードN2の値を“1”状態(“H”レベル)から“0”状態(“L”レベル)にするためである。
iv. 一括検知(ベリファイ)
上述の i.カラムアドレス毎一括検知、 ii.ベリファイリード及びiii.ベリファイデータインが32回(Col.Add.=1,2,・・・32)だけ繰り返された後( ii.及びiii.については、 i.の結果がパスのときは、省略される。)、選択された1ページ分の全てのメモリセルに対してプログラムが完全に行われたか否かを検証する一括検知動作が行われる。
一括検知動作では、まず、全てのページバッファP/Bに共通の共通ノードの電位PBFLGが“H”レベルに充電される。また、制御信号BLRSTが“H”レベルになり、全てのページバッファP/Bの入力ノードが“L”にリセットされる。
この後、制御信号VERIFYnが“L”レベルになると、図24に示すロジック回路LOGICの全ての出力信号はb0’,・・・b7’,c0’,・・・c3’は、“H”レベルになる。つまり、全てのカラムにおいて、制御信号BLSENAi,BLSENBjが“H”レベルとなり、MOSトランジスタMN2’,MN3’がオン状態になる。
これにより、1ページ分の全てのメモリセルに対する一括検知の準備が整うことになる。
従って、制御信号PBVFYが“H”レベルとなり、トランジスタMN6がオン状態になると、一括検知が行われる。
具体的には、ラッチ回路LATCHのノードN1が“0”状態、ノードN2が“1”状態のときは、トランジスタMN5がオン状態となり、ラッチ回路LATCHのノードN1が“1”状態、ノードN2が“0”状態のときは、トランジスタMN5がオフ状態となる。
つまり、共通ノードは、全てのページバッファP/Bに接続されているため、共通ノードの電位PBFLGは、全てのページバッファP/B内のラッチ回路LATCHのノードN2が“0”レベルの場合に、“H”レベルを維持する。共通ノードの電位PBFLGが“H”レベルであるということは、全ての“0”−プログラミングセルに対して、“0”−プログラミングが十分となったことを意味する。
従って、この場合には、この後、プログラム動作を終了する。
一方、少なくとも1つのページバッファP/B内のラッチ回路LATCHのノードN2が“1”レベルの場合には、共通ノードの電位PBFLGは、“H”レベルから“L”レベルに変化する。共通ノードの電位PBFLGが“L”レベルであるということは、少なくとも1つの“0”−プログラミングセルに関して、“0”−プログラミングが不十分であることを意味する。
従って、この場合には、プログラム電位Vpgmをステップアップした後に、再び、プログラム動作を実行する。
3.−4.−3. まとめ
第3実施の形態に関わる回路では、カラムアドレス毎に、ベリファイリードを行う前に、そのカラムアドレスのメモリセルのみを対象とするカラムアドレス毎一括検知を行っている。
このカラムアドレス毎一括検知をパスしたら、このカラムアドレスのメモリセルについては、既にプログラムが十分に完了しているため、ベリファイリード及びベリファイデータインを行わず、次のカラムアドレスのメモリセルのみを対象とするカラムアドレス毎一括検知にステップを進める。
これにより、既にプログラムが完了しているカラムアドレスのメモリセルについては、ベリファイリード及びベリファイデータインを省略することができるため、ベリファイ時間の短縮に貢献できる。
また、カラムアドレス毎一括検知がフェイルの場合には、このカラムアドレスのメモリセルのうちの少なくとも1つがプログラム不十分であることを意味しているため、ベリファイリード及びベリファイデータインを行った後、次のカラムアドレスのメモリセルのみを対象とするカラムアドレス毎一括検知にステップを進める。
そして、ステップの最後に、通常の一括検知を行い、この一括検知をパスしたら、プログラム動作を終了し、この一括検知の結果がフェイルの場合には、プログラム電位Vpgmをステップアップして、再度、プログラム動作を行う。
このような動作は、図24及び図25に示すように、トランジスタMN2’,MN3’及びロジック回路LOGICを新規に追加することにより達成することができる。
本実施の形態に関わるベリファイ手法は、プログラム不十分のメモリセルが少ない場合に効果的である。即ち、プログラム不十分のメモリセルが少なければ、ベリファイリード及びベリファイデータインが省略されるカラムアドレスも多くなるからである。
従って、本実施の形態に関わるベリファイ手法は、プログラム不十分のメモリセルが多い場合には不向きである。これは、プログラム不十分のメモリセルが多いと、ベリファイリード及びベリファイデータインが省略されるカラムアドレスが存在しないか又は非常に少なくなり、結果として、カラムアドレス毎一括検知を追加することにより要する時間が多くなるためである。
但し、この問題は、以下の手法を採用することにより回避できる。
プログラム電位Vpgmをステップアップさせるプログラム手法では、通常、プログラム動作の回数が少なく、プログラム電位Vpgmが低い場合には、ほとんどのメモリセルがプログラム不十分になっているのに対し、プログラム動作の回数が多くなり、プログラム電位Vpgmが高くなると、ほとんどのメモリセルがプログラム十分になっている。
このような場合には、本実施の形態のベリファイ手法を、プログラム回数が少ない段階から適用するのは、カラムアドレス毎一括検知の時間が余分にかかり、妥当でない。また、第1実施の形態のベリファイ手法を、プログラム回数が多くなった後にも適用することは、既にプログラム十分なセルのみを含むカラムアドレスについても、ベリファイリード及びベリファイデータインを行わなければならず、妥当でない。
この点に着目し、例えば、プログラム回数に応じて、ベリファイ手法の切り替えを行えば、上述の問題を回避することができる。
例えば、プログラム回数が所定値未満(数回未満)のときは、第1実施の形態に関わるベリファイ手法を採用し、プログラム回数が所定値以上になった場合には、本実施の形態に関わるベリファイ手法を採用するようにする。
このようにすれば、カラムアドレス毎一括検知がフェイルする可能性が高いプログラム回数が少ない段階では、カラムアドレス毎一括検知が行われないため、その分だけ、ベリファイ時間を短縮できる。また、カラムアドレス毎一括検知がパスする可能性が高いプログラム回数が多い段階では、カラムアドレス毎一括検知が行われ、その結果、ベリファイリード及びベリファイデータインが省略される場合があるので、ベリファイ時間をさらに短縮できる。
3.−5. 第4実施の形態
以下、本発明の第4実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
上述の第1及び第2実施の形態(図19)では、1回のプログラム動作が終了した後、ベリファイリード及びベリファイデータインが、32回繰り返し行われ、さらに、この後、一括検知(ベリファイ)が行われていた。
また、上述の第3実施の形態(図26)では、1回のプログラム動作が終了した後、カラムアドレス毎一括検知が行われ、このカラムアドレス毎一括検知をパスしたカラムアドレスのメモリセルについては、ベリファイリード及びベリファイデータインが省略され、このカラムアドレス毎一括検知がフェイルのカラムアドレスのメモリセルについてのみ、ベリファイリード及びベリファイデータインが行われ、さらに、ステップの最後に、1ページ分のメモリセルに対する通常の一括検知が行われていた。
第3実施の形態に関わるベリファイ手法は、第1実施の形態に関わるベリファイ手法から余分なベリファイリード及びベリファイデータインを省くことを目的に提案されたものである。
本実施の形態に関わるベリファイ手法も、第3実施の形態と同様に、第1実施の形態に関わるベリファイ手法から余分なベリファイリード及びベリファイデータインを省くことを目的に提案したものである。
本実施の形態では、新規に、ワード単位一括検知ステップを設けているが、このワード単位一括検知ステップは、第3実施の形態におけるカラムアドレス毎一括検知ステップと同じと考えてよい。従って、本実施の形態に関わるベリファイ手法は、第3実施の形態において説明した回路(図24及び図25)をそのまま用いて実現することができる。
3.−5.−1. 全体図
本実施の形態に関わるベリファイ手法は、例えば、上述の第3実施の形態において説明した回路(図24及び図25)をそのまま用いて実現することができる。従って、本実施の形態に関わる3Tr−NANDの全体図は、図24及び図25に示すようになる。
3.−5.−2 プログラムベリファイ
1回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。
プログラムベリファイは、図28のフローチャートに示すように、ベリファイリードステップ、ベリファイデータインステップ、ワード単位一括検知(ベリファイ)ステップとから構成される。
本実施の形態におけるプログラムベリファイの特徴は、カラムアドレスCol.Add.毎に、ベリファイリード、ベリファイデータイン及びワード単位一括検知を行うと共に、そのカラムアドレスCol.Add.のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスCol.Add.に進むことなく、繰り返し、同じカラムアドレスCol.Add.に対して、ベリファイリード、ベリファイデータイン及びワード単位一括検知を行う点にある。
以下、図28及び図29を参照しつつ、本実施の形態におけるプログラムベリファイについて具体的に説明する。なお、図29は、本実施の形態に関わるプログラムベリファイのシーケンスの概念図である。
まず、カラムアドレスCol.Add=1に設定され、このカラムアドレスのメモリセル(カラム)が選択される。1つのカラムアドレスにより選択されるメモリセル(カラム)の数は、16+6個である(16個は、データ領域のメモリセル、6個は、パリティビット領域のメモリセルである)。
この後、カラムアドレスCol.Add=1のメモリセルに対して、ベリファイリード及びベリファイデータインが行われる。ベリファイリード及びベリファイデータインの具体的な動作については、上述の第3実施の形態で説明したベリファイリード及びベリファイデータインと同じであるため、その説明については、省略する(必要ならば、項目3.−4.−2.“プログラムベリファイ”の ii.ベリファイリード及びiii.ベリファイデータインを参照)。
また、続けて、ワード単位一括検知が行われる。ワード単位一括検知の具体的な動作については、上述の第3実施の形態で説明したカラムアドレス毎一括検知と同じであるため、その説明については、省略する(必要ならば、項目3.−4.−2.“プログラムベリファイ”の i.カラムアドレス毎一括検知を参照)。
ワード単位一括検知は、カラムアドレスCol.Add=1のメモリセルについてのみ行われるものであり、他のカラムアドレスCol.Add.=2,3,・・・32)のメモリセル(具体的には、非選択カラムのページバッファP/Bのラッチデータ)に影響を受けることがない。
ワード単位一括検知の結果がフェイルの場合には、プログラム電位(例えば、13V)Vpgm−iniを、dV(例えば、1V)だけステップアップさせ、このステップアップされたプログラム電位Vpgm−ini+dVを用いて、再度、プログラム動作を実行する。この後、再び、カラムアドレスCol.Add.=1のメモリセルに対するベリファイリード、ベリファイデータイン及びワード単位一括検知が行われる。
一方、ワード単位一括検知の結果がパスの場合には、カラムアドレスCol.Add.を1つインクリメントし、次のカラムアドレスCol.Add.=2のメモリセルに対するベリファイリード、ベリファイデータイン及びワード単位一括検知が行われる。
ここで、重要な点は、ベリファイリード、ベリファイデータイン及びワード単位一括検知は、1つのカラムアドレスCol.Add.のメモリセルに対してのみ行われるが、プログラム動作については、1ページ分の全てのメモリセルに対して行われているということである。従って、カラムアドレスCol.Add.がインクリメントされても、それに関係なく、プログラム電位Vpgmは、プログラム回数のみに応じて、順次、ステップアップされる。
以上の動作を、全てのカラムアドレスCol.Add.について行う。つまり、本例では、最終カラムアドレスCol.Add.=32のメモリセルに対するワード単位一括検知がパスしたときに、プログラム動作が終了する。
3.−5.−3. まとめ
上述の第4実施の形態に関わるベリファイ手法によれば、カラムアドレスCol.Add.毎に、ベリファイリード、ベリファイデータイン及びワード単位一括検知が行われると共に、そのカラムアドレスCol.Add.のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスCol.Add.に進むことなく、繰り返し、同じカラムアドレスCol.Add.に対して、ベリファイリード、ベリファイデータイン及びワード単位一括検知が行われる。
従って、ワード単位一括検知がパスしたカラムアドレスCol.Add.については、その後、ベリファイリード及びベリファイデータインが行われることがない。このため、本実施の形態に関わるベリファイ手法では、最小限のベリファイリード及びベリファイデータインのみが行われるため、ベリファイ時間の短縮に貢献できる。
例えば、本実施の形態に関わるベリファイ手法におけるベリファイ時間(ベリファイリードの回数)と、上述の第1及び第2実施の形態に関わるベリファイ手法におけるベリファイ時間(ベリファイリードの回数)を比較すると、以下のようになる。但し、1ページは、Nワードから構成され、1つのカラムアドレスに対応するメモリセル(1ワード分)のプログラムが完了するまでに、M回のプログラム動作が行われるものとする。
即ち、上述の第1及び第2実施の形態に関わるベリファイ手法では、ベリファイリード及びベリファイデータインは、N×M回行われることになるが、本実施の形態に関わるベリファイ手法では、ベリファイリード及びベリファイデータインは、N+M−1回行われることになる。
具体的には、図29の例で説明すると、カラムアドレスCol.Add.が4つ(1,2,3,4)である場合には、上述の第1及び第2実施の形態では、カラムアドレスCol.Add.=1,・・・4及びプログラム電位Vpgm(1),・・・Vpgm(4)により構成される桝目が全て四角(1つの四角が1回のベリファイリード及びベリファイデータインに相当)で満たされることになり、合計、16回のベリファイリード及びベリファイデータインが行われる。
これに対し、本実施の形態では、カラムアドレスCol.Add.=1からカラムアドレスCol.Add.=4までの四角の数は、7個(=4+4−1)であり、7回のベリファイリード及びベリファイデータインのみで、ベリファイ動作が完了することが分かる。
本実施の形態に関わるベリファイ手法では、1つのカラムアドレスCol.Add.のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスCol.Add.について、ベリファイリード及びベリファイデータインが行われることがない。
従って、例えば、カラムアドレスCol.Add=1について、ベリファイリード及びベリファイデータインを行っているときに、既に、他のカラムアドレス、例えば、カラムアドレスCol.Add.=4については、全てのメモリセルのプログラムが完了していることも考えられる。
つまり、カラムアドレスCol.Add.=4については、カラムアドレスCol.Add.=3におけるワード単位一括検知がパスした後でなければ、ベリファイリード及びベリファイデータインが行われないため、カラムアドレスCol.Add.=4については、既に、全てのメモリセルのプログラムが完了していても、ページバッファP/Bのラッチデータは、プログラム不十分を示している場合がある。
このため、本実施の形態に関わるベリファイ手法では、例えば、最終のカラムアドレスCol.Add.=N(例えば、N=4)のメモリセルについては、低いプログラム電位Vpgmでプログラムが可能であっても、高いプログラム電位Vpgmにまるまで、プログラム禁止状態にされない場合がある。
例えば、図29の例においても、カラムアドレスCol.Add.=4では、仮に、低いプログラム電位Vpgm(1)=Vpgm−iniでプログラムが可能であっても、高いプログラム電位Vpgm(4)=Vpgm−ini+3dVにまるまで、プログラム禁止状態にされない。
従って、本実施の形態に関わるベリファイ手法では、プログラム動作により、非常に高い閾値を持つメモリセルが発生することになる。
しかし、上述したように、3Tr−NANDでは、その動作の特徴から、オーバープログラムは、全く問題とならないため、メモリセルの閾値が非常に高くなること自体は、メモリの動作に支障となることはない。
但し、上述したように、オーバープログラムにより、そのメモリセルについては、トンネル酸化膜にストレスが過剰に生じるため、もし、トンネル酸化膜のストレスが問題となるような場合には、第3実施の形態に関わるベリファイ手法を採用することが得策である。
3.−6. 第5実施の形態
以下、本発明の第5実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
上述の第3及び第4実施の形態に関わるベリファイ手法(図26及び図28)は、上述の第1及び第2実施の形態に関わるベリファイ手法(図19)に比べて、ベリファイリード及びベリファイデータインの回数を減らすことができ、その結果、ベリファイ時間の短縮に貢献できる。
しかし、第3及び第4実施の形態に関わるベリファイ手法は、カラムアドレス毎(又はワード単位)で一括検知(ベリファイ)が行われるため、一括検知の回数のみをとってみれば、その回数は、第1及び第2実施の形態に関わるベリファイ手法よりも多くなる。
従って、カラムアドレス毎一括検知(又はワード単位一括検知)及び通常のページ単位一括検知に要する時間を短縮すれば、さらに、ベリファイ時間の短縮に貢献できることになる。
以下に説明する第5実施の形態では、これら一括検知(ベリファイ)に要する時間を短縮することができる一括検知手法について説明する。
なお、第5実施の形態に関わる一括検知手法は、当然に、上述した第1乃至第4実施の形態に関わる不揮発性半導体メモリのいずれに対しても適用することができる。
3.−6.−1. 一括検知回路
図30は、本発明に関わる不揮発性半導体メモリに適用できる一括検知回路の例を示している。
P/Bは、1ページ分のメモリセル(又は全カラム)に対応する1ページ分のページバッファである。例えば、図1及び図10に示すようなブロックを有する3Tr−NANDの場合には、ページバッファP/Bは、704個(データ領域及びパリティビット領域を含む)となる。
各ページバッファP/BのラッチノードN2(例えば、図15、図22又は図25におけるラッチ回路LATCHのノードN2に相当)は、トランジスタMN5のゲートに接続される。トランジスタMN5のソースは、トランジスタMN6を経由して接地点に接続され、トランジスタMN5のドレインは、一括検知のための共通ノードXに接続される。
ここまでは、図15、図22及び図25のページバッファP/Bの説明と同じである。
本実施の形態に関わる一括検知回路は、共通ノードXがNチャネルMOSトランジスタMN31を経由して、検出ノードYに接続されている。トランジスタMN31のゲートには、制御信号FGCLMPが入力される。
また、共通ノードXと接地点の間には、NチャネルMOSトランジスタMN32が接続される。トランジスタMN32のゲートには、制御信号FGRSTが入力される。トランジスタMN32は、共通ノードXの電位をリセットする機能(FBFLGを“L”にする機能)を有する。
また、検出ノードYと内部電源端子の間には、PチャネルMOSトランジスタMP31が接続される。トランジスタMP31のゲートには、制御信号FGPREnが入力される。トランジスタMP31は、一括検知を行う前に、共通ノードXの電位FBFLGを“H”レベルにプリチャージする機能を有する。
検出ノードYは、インバータINV.1に接続される。インバータINV.1は、制御信号PVVFYが“H”レベルになったときに動作状態となり、共通ノードXの電位変化(実際には、検出ノードYの電位変化)を検出する。
この一括検知回路の特徴は、共通ノードXに生じる容量CFがノードCSに生じる容量よりも十分に大きい点にある。即ち、一括検知に要する時間を短縮するためには、一括検知時に、共通ノードXの電位PBFLGの変化を瞬時に検出することが必要になる。
しかし、共通ノードXは、全てのカラムのページバッファに接続されているため、共通ノードXの容量は、非常に大きくなっている。このため、一括検知時における共通ノードXの電位変化は緩やかなものとなり、例えば、トランジスタMN31が存在しないと仮定すると、インバータINV.1がこの電位変化を検出する時間は、非常に長くなる。
本実施の形態に関わる一括検知回路では、トランジスタMN31を設け、共通ノードXの容量CFよりも検出ノードYの容量を十分に小さくしている。その結果、共通ノードXの電位変化が緩やかでっても(又は小さくても)、電荷保存の法則から、検出ノードYの電位変化は、急速(又は大きく)なる。
従って、インバータINV.1は、制御信号PVVFYが“H”レベルになった後、直ちに、共通ノードXの電位変化(実際には、検出ノードYの電位変化)を検出することができ、一括検知のための時間、さらには、ベリファイ時間を短縮することができる。
3.−6.−2. 一括検知動作
図31は、図30の一括検知回路を用いた場合における一括検知動作のタイミングチャートを示している。
以下、図30及び図31を参照しつつ、本実施の形態に関わる一括検知動作について説明する。
まず、制御信号FGRSTを“H”レベルに設定し、トランジスタMN32をオン状態にする。また、制御信号FGCLMPは、2V程度に設定される。その結果、共通ノードXの電位PBFLG及び検出ノードYの電位FGSENが“L”レベル(接地電位Vss)にリセットされる。
次に、制御信号FGPREnが“L”レベルとなると、検出ノードY及び共通ノードXのプリチャージが行われる。ここで、プリチャージのためのトランジスタMP31は、検出ノードYに接続され、また、ノードX,YをクランプするためのトランジスタMN31のゲートには、2V程度の電位(制御信号FGCLMP)が入力されている。
このため、検出ノードYは、内部電源電位Vdd程度の電位に充電され(FGSEN=約2V)、共通ノードXは、いわゆるトランジスタMN31の閾値落ちを考慮すると、1V程度の電位に充電される(PBFLG=約1V)。
この後、制御信号FGCLMPの電位を約0.1V下げ、1.9V程度に設定する。また、制御信号FGPREnを“H”レベルに設定すると共に、制御信号PBVFYを“H”レベルに設定すると、インバータINV.1が動作状態になる。その結果、インバータINV.1により、共通ノードXの電位変化が検出される。
即ち、全てのページバッファP/BのノードN2の電位が“L”レベルであれば(“0”−プログラミング十分又は“1”プログラミングの場合)、共通ノードXの電位PBFLGは、プリチャージレベル(“H”レベル)を維持する。従って、インバータINV.1の出力信号は、“L”レベル(一括検知パス)となる。
一方、少なくとも1つのページバッファP/BのノードN2の電位が“H”レベルであれば(“0”−プログラミング不十分の場合)、共通ノードXの電位PBFLGは、プリチャージレベル(“H”レベル)から次第に“L”レベルに向かって緩やかに低下する。また、この共通ノードXの電位PBFLGの低下速度は、ノードN2が“H”レベルのページバッファP/B数が少なければ、さらに、遅くなる。
しかし、本実施の形態に関わる一括検知回路では、検出ノードYの容量CSが共通ノードXの容量CFよりも十分に小さくなっている。このため、例えば、共通ノードXの電位PBFLGが(0.1+ΔVF)だけ低下すると、電荷保存の法則により、検出ノードYの電位FGSENは、ΔVS(=ΔVF×CF/CS)だけ低下する。
このΔVSは、0.1+ΔVFよりも十分に大きい値である。
つまり、図31に示すように、共通ノードXの電位PBFLGの変化が小さくても、検出ノードYの電位FGSENの変化は、非常に大きなものとなる。結果として、共通ノードXの電位変化が緩やかであっても、検出ノードYの電位変化をインバータINV.1により高速に検出することができる。
従って、インバータINV.1の出力信号は、高速に、“H”レベル(一括検知フェイル)となる。
3.−6.−3. まとめ
以上、本発明の第5実施の形態に関わる一括検知回路によれば、一括検知に要する時間を大幅に短縮することができるため、ベリファイ時間の短縮に貢献できる。
3.−7. 第6実施の形態
以下、本発明の第6実施の形態に関わる不揮発性半導体メモリについて詳細に説明する。
上述の第4実施の形態(図28及び図29)では、カラムアドレスCol.Add.毎に、ベリファイリード、ベリファイデータイン及びワード単位一括検知を行うと共に、そのカラムアドレスCol.Add.のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスCol.Add.に進むことなく、繰り返し、同じカラムアドレスCol.Add.に対して、ベリファイリード、ベリファイデータイン及びワード単位一括検知を行っている。
そして、一度、ワード単位一括検知をパスしたカラムアドレスCol.Add.のメモリセルに対しては、その後、ベリファイリード、ベリファイデータイン及び一括検知は、行われない。また、最終カラムアドレスのメモリセルについては、オーバープログラムが発生する可能性が高く、また、3Tr−NANDでは、オーバープログラムが発生しても、動作上、何ら問題が生じない。
従って、第4実施の形態に関わるベリファイ手法の場合、特に、ページバッファP/B内のラッチデータ(プログラムデータ)を、ベリファイリード結果に応じて、変化させる必要はないのである。
つまり、ページバッファP/B内のラッチ回路LATCHには、常に、チップ外部から入力されたプログラムデータをラッチしておき、ワード単位一括検知は、例えば、読み出し/書き込み回路内に設けられた一括検知回路を用い、ベリファイリードにより読み出されたリードデータとページバッファP/B内のラッチデータとに基づいて、行うことができる。
この場合、読み出し/書き込み回路(センスアンプ)からページバッファP/Bにベリファイリード結果を転送するベリファイデータインステップは、不要となるため、このベリファイデータインのシーケンス分だけ、ベリファイ時間を短縮することができる。また、ページバッファP/B内に、ベリファイリード結果に応じてラッチデータを変化させるための回路や、一括検知のための回路などを配置する必要がなくなるため、ページバッファP/Bの簡略化及びレイアウト面積の縮小を達成することができる。
但し、上述の第4実施の形態においても説明したが、オーバープログラムは、3Tr−NANDの動作上、全く問題とならないが、トンネル酸化膜に過剰なストレスが生じるため、信頼性上、問題となる場合がある。特に、第4実施の形態では、最終カラムアドレス又はそれに近いカラムアドレスのメモリセルにオーバープログラムが発生する可能性があるが、本実施の形態の場合には、カラムアドレスに関係なく、全ての“0”−プログラミングセルに対して、オーバープログラムが発生する可能性がある。
従って、例えば、3Tr−NANDにおいて、第4実施の形態に関わるベリファイ手法を採用するか、又は、本実施の形態に関わるベリファイ手法を採用するかは、製品の用途、仕様などに応じて決定すればよい。
3.−7.−1. 全体図
図32は、本発明の第6実施の形態に関わる3Tr−NANDの主要部を示している。図33は、図32のページバッファP/Bを詳細に示している。
図32は、図1のブロック図に対応しているため、図32に示すブロックのうち、図1と同じブロックには、同じ符号を付してある。また、図32は、図10の1つのセンスアンプS/A・0と、これに接続される32本のビット線(1つのビット線グループ)BL0,・・・BL31に対応する部分を詳細に示すものであり、図10の他のセンスアンプS/A1,・・・S/A21と、これに接続される32本のビット線も、当然に、図32に示すような回路構成を有している。
なお、本例の回路は、上述の第2実施の形態に関わる回路(図21)と比べると、ページバッファP/B及び読み出し/書き込み回路が相違しており、その他の部分については、上述の第2実施の形態に関わる回路と同じである。
従って、以下の説明では、上述の第2の実施の形態に関わる回路に対して、本例の回路の特徴的な部分のみを説明し、その他の部分、即ち、上述の第2実施の形態に関わる回路と同じ部分については、その説明を省略する。
まず、図33に示すように、ページバッファP/B内のラッチ回路LATCHのノードN2は、NチャネルMOSトランジスタMN1を経由して接地点に接続される。トランジスタMN1のゲートには、制御信号PBRSTが入力される。制御信号PBRSTは、ページバッファP/Bのリセット時に“H”レベルとなる信号である。
本例の回路は、例えば、上述の第1乃至第3実施の形態に関わる回路(図15、図22及び図25)に比べて、ページバッファP/B及びその近傍の回路構成が非常に簡単になっている。つまり、本例の回路では、ページバッファP/Bは、ラッチ回路LATCH及びトランジスタMN1のみを有し、ベリファイリード結果に応じてラッチデータを変化させるための回路や、一括検知のための回路などは、配置されていない。
従って、本実施の形態に関わるベリファイ手法によれば、ページバッファP/B及びその近傍における回路のレイアウト面積を小さくでき、かつ、非常に簡単な回路構成により、本発明に関わるベリファイ動作を実行できる
次に、図34に示すように、32本のビット線BL0,・・・BL31は、カラムゲートを経由して、読み出し/書き込み回路に接続される。1つの読み出し/書き込み回路は、1つのセンスアンプS/Aを含んでいる。
センスアンプS/Aとカラムゲートの間には、NチャネルMOSトランジスタMN10が接続される。トランジスタMN10のオン/オフは、制御信号(センスアンプイネーブル信号)SAENにより制御される。制御信号SAENは、ベリファイリード時に“H”レベルとなるものであり、この時、同時に、センスアンプS/Aも、活性化される(動作状態になる)。
センスアンプS/Aの出力ノードは、インバータI1’を経由して、ラッチ回路LATCH1のノードn2に接続される。インバータI1’は、制御信号RDが“H”レベルのときに、動作状態となる。ラッチ回路LATCH1は、制御信号RDが“H”レベルのときに、インバータI1’の出力データをセンスし、かつ、制御信号RDが“L”レベルになり、制御信号RDn(RDの反転信号)が“H”レベルになると、インバータI1’の出力データをラッチする。
また、センスアンプS/Aの出力ノードは、インバータI1’’を経由して、ラッチ回路LATCH2のノードn4に接続される。インバータI1’’は、制御信号PBRDが“H”レベルのときに、動作状態となる。ラッチ回路LATCH2は、制御信号PBRDが“H”レベルのときに、インバータI1’’の出力データをセンスし、かつ、制御信号PBRDが“L”レベルになり、制御信号PBRDn(PBRDの反転信号)が“H”レベルになると、インバータI1’’の出力データをラッチする。
1つの読み出し/書き込み回路内の2つのラッチ回路LATCH1,LATCH2のノードn1,n3は、エクスクルーシブオア回路Ex−ORに入力される。このエクスクルーシブオア回路Ex−ORにより、ベリファイリードデータがラッチデータ(プログラムデータ)に一致するか否かが判定され、その結果がノア回路NOR1に入力される。
ノア回路NOR1は、全ての読み出し/書き込み回路に対して1つだけ設けられ、かつ、カラムアドレスにより選択された22個のメモリセルについて、ベリファイリードデータとラッチデータ(プログラムデータ)が互いに一致するか否かを判定する(一括検知を行う)。
例えば、カラムアドレスにより選択された22個のメモリセルの全てについて、ベリファイリードデータとラッチデータ(プログラムデータ)が互いに一致する場合には、ノア回路NOR1の出力信号は、“H”レベル(一括検知パス)となる。また、カラムアドレスにより選択された22個のメモリセルのうち少なくとも1つのメモリセルについて、ベリファイリードデータとラッチデータ(プログラムデータ)が互いに一致しない場合には、ノア回路NOR1の出力信号は、“L”レベル(一括検知フェイル)となる。
また、ラッチ回路LATCH1のノードn1は、は、インバータI2,I3を経由して、ノードn3に接続される。ノードn3は、データバスDATABUSに接続される。インバータI3は、制御信号SAOUTが“H”レベルのときに、動作状態となる。通常のデータリード時には、制御信号SAOUTが“H”レベルとなるため、リードデータがデータバスDATABUSに出力される。
本発明に関わるベリファイリード時には、制御信号SAOUTは、常に、“L”レベルである。
また、ノードn3とカラムゲートの間には、インバータI6,I7が接続される。インバータI7は、制御信号DN1が“H”レベルのときに、動作状態となる。プログラムモードにおけるデータロード時、制御信号DN1は、“H”レベルになる。従って、プログラムデータは、インバータI6,I7及びカラムゲートを経由して、選択されたビット線に接続されるページバッファP/Bに入力される。
3.−7.−2. プログラムベリファイ
以下、データ書き換え時におけるプログラムベリファイについて説明する。なお、データ書き換え動作については、上述の第1実施の形態において、既に、詳細に説明したので、その説明は省略する(項目3.−2.−3の“データ書き換え動作”を参照)。
1回のプログラム動作が終了したら、この後、続けて、プログラムベリファイが行われる。
プログラムベリファイは、図34のフローチャートに示すように、ベリファイリードステップ、ページバッファリードステップ、ワード単位一括検知(ベリファイ)ステップとから構成される。即ち、本例のプログラムベリファイでは、ベリファイデータインステップが存在しない反面、新規に、ベリファイ時にページバッファP/B内のプログラムデータを読み出すページバッファリードステップが設けられている。
また、カラムアドレスCol.Add.毎に、ベリファイリード、ページバッファリード及びワード単位一括検知が行われると共に、そのカラムアドレスCol.Add.のメモリセルに対してワード単位一括検知がパスするまで、次のカラムアドレスCol.Add.に進むことなく、繰り返し、同じカラムアドレスCol.Add.に対して、ベリファイリード、ページバッファリード及びワード単位一括検知が行われる。
従って、ワード単位一括検知がパスしたカラムアドレスCol.Add.については、その後、ベリファイリード及びページバッファリードが行われることがない。このため、本実施の形態に関わるベリファイ手法では、ベリファイデータインが不要であると共に、最小限のベリファイリード及びページバッファリードのみが行われるため、ベリファイ時間の短縮に貢献できる。
図35は、ベリファイリード時及びページバッファリード時における3Tr−NANDの動作を示す波形図である。
以下、図32、図33、図34及び図35を参照しつつ、本発明に関わるベリファイ動作について説明する。
i. ベリファイリード
プログラムベリファイリードは、選択されたワード線に与えるリード電位Vpvを、正電位(例えば、0.5V程度)に設定する点を除けば、通常のデータリード(リード電位は、0V)と同様に行われる。
但し、通常のデータリードでは、図32の読み出し/書き込み回路内のセンスアンプでリードデータの検出(センシング)及びそのデータ値の判定を行った後に、リードデータをデータバスDATABUSに出力するが、プログラムベリファイリードでは、図32の読み出し/書き込み回路内のセンスアンプでリードデータの検出(センシング)及びそのデータ値の判定を行った後、図32の読み出し/書き込み回路内のラッチ回路LATCH1にリードデータ(ベリファイリード結果)をラッチするだけである。
まず、制御信号BLRST,SAEN,RDが“H”レベルになるため、全てのビット線が接地電位Vssにリセットされ、また、図32の読み出し/書き込み回路内のトランジスタMN10がオン状態、センスアンプS/A及びインバータI1’が動作状態になる。
この後、ビット線BLが電源電位Vdd(“H”レベル、即ち、“1”状態)にプリチャージされる(図32では、プリチャージ回路は省略してある)。
そして、全てのセルユニット内のソース側セレクトゲート線SGSの電位がVsg(例えば、約3.5V)に設定され、ソース線SL及びP型ウェル領域(P−well)の電位は、共に、0Vに設定される。また、選択されたメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位がVsgに設定され、非選択のメモリセルを含むセルユニット内のドレイン側セレクトゲート線SGDの電位が0Vに設定される。
また、全てのワード線の電位がリード電位Vpvに設定される。
その結果、選択された1ページ分のメモリセルのデータは、ビット線に読み出される。また、制御信号Ytransfは、予め、“H”レベル(例えば、VsgHHH)に設定されているため、選択された1ページ分のメモリセルのリードデータは、図32のトランジスタMN9を経由して、ページバッファP/Bの入力部まで転送される。
ここで、本例では、制御信号PBTRが常に“L”レベルであり、図32及び図33に示すトランジスタMN7もオフ状態である。このため、プログラムベリファイリードでは、選択された1ページ分のメモリセルのリードデータは、ページバッファP/Bに入力されることがない。
なお、メモリセルの閾値がVpvを超えるときは、ビット線BLの電位は、プリチャージ電位を維持する(“0”−プログラミング十分)。一方、メモリセルの閾値がVpvを下回るときは、ビット線BLの電位は、プリチャージ電位から接地電位に向かって次第に低下する(“0”−プログラミング不十分、又は、“1”−プログラミング)。
このビット線BLの電位変化は、図32のセンスアンプS/Aにより検出(センシング)される。但し、例えば、図32に示すように、32本のビット線BL0,・・・BL15からなる1つのビット線グループでは、1本のビット線のみがセンスアンプS/Aに電気的に接続される。
また、制御信号SEAN,RDが“H”レベルであるため、センスアンプS/Aで検出されたリードデータは、インバータI1’を経由して、ラッチ回路LATCH1に検出される。
ここで、通常のデータリードとは異なり、プログラムベリファイリードでは、制御信号SAOUTが“L”レベルに設定されているため、リードデータ(ベリファイリード結果)は、データバスDATABUSに出力されない。
この後、制御信号SAEN,RDが“L”レベルになり、制御信号RDn(制御信号RDの反転信号)が“H”レベルになると、リードデータは、図32に示す読み出し/書き込み回路内のラッチ回路LATCH1にラッチされる。
ii. ページバッファリード
ベリファイリードが終了すると、続けて、ページバッファリードが行われる。
まず、制御信号Ytransfが“H”レベルから“L”レベルに低下するため、図32に示すトランジスタMN9がカットオフ状態となる。つまり、全てのページバッファP/Bの入力ノードとビット線とが互いに電気的に切断される。
その理由は、大きな容量を有するビット線をページバッファP/Bから切り離すことにより、ページバッファP/B内のラッチデータ(プログラムデータ)を読み出し/書き込み回路に正確に転送するためである。
また、制御信号SAEN,PBRDが“H”レベルになるため、図32の読み出し/書き込み回路内のトランジスタMN10がオン状態、センスアンプS/A及びインバータI1’’が動作状態になる。
この後、制御信号PBTRが“H”レベルになると、カラムアドレス信号により選択されたカラムにおいては、図33に示すラッチ回路LATCHのノードN1がトランジスタMN7を経由して、図32に示す読み出し/書き込み回路に電気的に接続される。その結果、選択されたカラムのページバッファP/B内のラッチデータ(プログラムデータ)は、読み出し/書き込み回路に転送される。
なお、ベリファイリード時に選択されるカラムとページバッファリード時に選択されるカラムは、当然に、同じである。
ページバッファP/Bのラッチデータは、図32のセンスアンプS/Aにより検出(センシング)される。また、制御信号SEAN,PBRDが“H”レベルであるため、センスアンプS/Aで検出されたリードデータは、インバータI1’’を経由して、ラッチ回路LATCH2に検出される。
この後、制御信号SAEN,PBRDが“L”レベルになり、制御信号PBRDn(制御信号RDの反転信号)が“H”レベルになると、リードデータは、図32に示す読み出し/書き込み回路内のラッチ回路LATCH2にラッチされる。
iii. ワード単位一括検知(ベリファイ)
上述の i.ベリファイリード及び ii.ページバッファリードが行われた後、続けて、ワード単位一括検知が行われる。ワード単位一括検知動作は、ベリファイリード及びページバッファリードが終了した後、読み出し/書き込み回路内において自動的に行われる。
ワード単位一括検知は、2つのステップから構成される。
第1ステップは、センスアンプ毎に、2つのラッチ回路LATCH1,LATCH2にラッチされたデータ値を比較する。
具体的には、ベリファイリードデータとページバッファP/B内のラッチデータが同じ場合には、ラッチ回路LATCH1のノードn1の値とラッチ回路LATCH2のノードn3の値も、互いに同じになる(n1=n3=“0”又はn1=n3=“1”)。この場合は、メモリセルのプログラム(“0”−プログラミング又は“1”−プログラミング)が正確に完了したことを意味し、エクスクルーシブオア回路Ex−ORの出力信号は、“0”となる。
一方、ベリファイリードデータとページバッファP/B内のラッチデータが互いに異なる場合には、ラッチ回路LATCH1のノードn1の値とラッチ回路LATCH2のノードn3の値も、互いに異なることになる(n1≠n3)。この場合は、メモリセルのプログラム(“0”−プログラミング又は“1”−プログラミング)が不十分であることを意味し、エクスクルーシブオア回路Ex−ORの出力信号は、“1”となる。
第2ステップは、各読み出し/書き込み回路で判断された検知結果をそれぞれノア回路NOR1に入力し、選択されたカラムにおける一括検知結果を得る。
具体的には、全ての読み出し/書き込み回路について、エクスクルーシブオア回路Ex−ORの出力信号がノア回路NOR1に入力される。従って、全ての読み出し/書き込み回路において、エクスクルーシブオア回路Ex−ORの出力信号が“0”のとき、即ち、選択されたカラムの全てのメモリセルに対してプログラムが十分に完了しているときのみ、ノア回路NOR1の出力信号は、“1”(“H”レベル)となる。つまり、ノア回路NOR1の出力信号が“H”レベルのときは、一括検知パスであり、次のカラムアドレスに進んで、プログラム動作が行われるか、又は、そのカラムアドレスが最終である場合には、プログラム動作を終了する。
また、少なくとも1つの読み出し/書き込み回路について、エクスクルーシブオア回路Ex−ORの出力信号が“1”のとき、即ち、選択されたカラムの少なくとも1つのメモリセルに対してプログラムが不十分であるときは、ノア回路NOR1の出力信号は、“0”(“L”レベル)となる。ノア回路NOR1の出力信号が“L”レベルのときは、一括検知がフェイルであり、再び、現在のカラムアドレスについて、プログラム動作が継続して行われる。
なお、プログラム動作の回数が進むにつれてプログラム電位Vpgmをステップアップさせることは、言うまでもない。
3.−7.−3. まとめ
第6実施の形態に関わるベリファイ手法(図34)は、第4実施の形態に関わるベリファイ手法(図28)を前提とし、ベリファイデータインをなくす目的から、一括検知を読み出し/書き込み回路で行い、かつ、ベリファイリードに続けてページバッファリードを行うようにしている。
従って、読み出し/書き込み回路(センスアンプ)からページバッファP/Bにベリファイリード結果を転送するベリファイデータインステップは、不要となるため、このベリファイデータインのシーケンス分だけ、ベリファイ時間を短縮することができる。また、ページバッファP/B内に、ベリファイリード結果に応じてラッチデータを変化させるための回路や、一括検知のための回路などを配置する必要がなくなるため、ページバッファP/Bの簡略化及びレイアウト面積の縮小を達成することができる。
但し、第6実施の形態に関わるベリファイ手法の場合、ページバッファP/B内のラッチデータ(プログラムデータ)は、ベリファイリード結果に応じて、変化することがない。即ち、常に、ラッチデータは、チップ外部からページバッファP/Bにプログラムデータを書き込んだときと同じであり、例えば、“0”−プログラミングセルについては、仮に、“0”−プログラミングが十分に完了している場合であっても、最終カラムアドレスについて一括検知がパスするまで、“0”−プログラミングが継続して行われる。
従って、第6実施の形態に関わるベリファイ手法では、オーバープログラムが容易に発生する。しかし、オーバープログラムは、3Tr−NANDの動作上、全く問題とならない。
一方、オーバープログラムが発生すると、トンネル酸化膜に過剰なストレスが生じ、かつ、メモリセルのトンネル酸化膜を通過する電荷量も増えるため、結果として、トンネル酸化膜の劣化が早まり、信頼性上、問題となる場合がある。従って、例えば、3Tr−NANDにおいて、第6実施の形態に関わるベリファイ手法を採用するか、又は、他の実施の形態に関わるベリファイ手法を採用するかは、レイアウト面積、ベリファイ時間、メモリセルのトンネル酸化膜の劣化の度合いのいずれを重視して製品を作るかなどを考慮して決定する。
4. その他
本発明の説明においては、3Tr−NANDを前提としたが、本発明は、ページバッファと共にセンスアンプを有する不揮発性半導体メモリに適用可能である。また、本発明は、メモリセルに2値データ(“1”,“0”)が記憶される2値メモリを例にして説明したが、メモリセルに3値以上の多値データ(“0”,“1”,・・・)が記憶される多値メモリにも適用可能である。
5. むすび
以上、説明したように、本発明の不揮発性半導体メモリによれば、第一に、ページバッファとセンスアンプを有する不揮発性半導体メモリにおいて、ベリファイリードにおけるリードデータの検出及びそのデータ値の判定を、通常データリードのためのセンスアンプを用いて行っているため、ベリファイリードにおけるデータ(例えば、プログラム動作時のメモリセルの状態)の判定を正確に行うことができる(基本的効果)。
また、第二に、基本的効果を前提としつつ、動作タイミングの工夫によりページバッファ部のレイアウトを容易にしたり(第2実施の形態)、また、ベリファイシーケンスの工夫によりベリファイ時間を短縮したり(第3及び第4実施の形態)、また、一括検知に要する時間を短縮したり(第5実施の形態)、また、一括検知を、ページバッファではなく、読み出し/書き込み回路で行うことにより、ベリファイデータインを不要にしたりすることができる。
1:P型シリコン基板、 2:N型ウェル領域、 3:P型ウェル領域、 11:メモリセルアレイ、 12:ワード線/セレクトゲート線デコーダ、 13:ページバッファ、 14:カラムゲート、 15:センスアンプ、 16,16A,16B:カラムデコーダ、 18:エラー訂正回路、 19:I/Oバッファ、 20:アドレスバッファ、 21:制御回路、 22:パリティビットジェネレータ、 WL:ワード線、 SGS,SGD:セレクトゲート線、 BLC:ビット線コンタクト部、 MC1〜MC9,M2:メモリセル、 M1,M3:セレクトゲートトランジスタ、 TN1〜TN7,MN1〜MN10 :NチャネルMOSトランジスタ、 MP1〜MP4:PチャネルMOSトランジスタ、 I1〜I7:インバータ、 P/B:ページバッファ、 LATCH:ラッチ回路、 AND:アンド回路、 LOGIC:ロジック回路、 Ex−OR:エクスクルーシブオア回路、 NOR1:ノア回路。