以下、本発明の実施の形態について図面を参照して説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態に係る半導体記憶装置を示す構成図である。先ず、図1を用いて、概略的に説明する。
メモリセルアレイ1は、図示せぬ複数のビット線と複数のワード線と共通リース線を含み、電気的にデータの書き換えた可能なメモリセルがマトリクス状に配置されている。また、各メモリセルアレイ1の内部は、後述するように、複数のブロック及び複数の冗長ブロックに分割されている。各メモリセルアレイ1のカラム方向一端には、データ記憶部2がそれぞれ配置され、ロウ方向両側には、ブロック選択部6がそれぞれ配置されている。
前記データ記憶部2は、後述するように、複数のデータ記憶回路を含んでいる。各データ記憶回路は、次の機能を有している。(1)ビット線を介してメモリセルアレイ1中のメモリセルからデータを読み出す。(2)ビット線を介してメモリセルアレイ1中のメモリセルの状態を検出する。(3)ビット線を介してメモリセルアレイ1中のメモリセルに書き込み制御電圧を印加し、メモリセルに書き込みを行なう。
各データ記憶部2には、カラムデコーダ3、入力バッファ7、出力バッファ4が接続されている。入力バッファ7及び出力バッファ4はI/O端子5に接続されている。
前記各カラムデコーダ3は、データ記憶部2の中のデータ記憶回路を選択する。カラムデコーダ3によって選択されたデータ記憶回路により読み出されたメモリセルのデータは、出力バッファ4を介してI/O端子5から外部へ出力される。また、外部からI/O端子5に入力された書き込みデータは、入力バッファ7を介して、カラムデコーダ3によって選択されたデータ記憶回路に供給される。
制御部15は、外部から供給される信号ALE、CLE、CE、WE、RE、WPに応じて、前記出力バッファ4、入力バッファ7、ECCコード発生回路8、制御回路13、コマンドレジスタ16、カラムアドレスレジスタ17、ロウアドレスレジスタ18を制御する。また、制御部15は、後述するROMブロック20の書き込みを禁止する書き込み禁止回路15a、及びROMブロック20の消去を禁止する消去禁止回路15bを有している。さらに、制御部15は、後述するように、半導体記憶装置の設定モードを切り替えるヒューズを有している。
ECCコード発生回路8は、制御部15の指示に応じてECC(エラー訂正コード)を発生し、入力バッファ7に供給する。
前記コマンドレジスタ16は、前記入力バッファ7から供給されるコマンドを制御回路13に供給する。この制御回路13は、コマンドに応じて各部を制御する。この制御回路13には、制御電圧発生回路14が接続されている。この制御電圧発生回路14は、例えばチャージポンプ回路等により構成され、データの書
き込み、読み出し、消去に必要な電圧を発生する。
前記カラムアドレスレジスタ17は入力バッファ7から供給されるアドレスをカラムRD(リダンダンシ)デコーダ及びカラムプリデコーダ10に供給する。
このカラムRDデコーダ及びカラムプリデコーダ10は、カラムの冗長アドレスをデコードするとともに、カラムアドレスをプリデコードする。このカラムRDデコーダ及びカラムプリデコーダ10の出力信号は、前記各カラムデコーダ3に供給される。
前記ロウアドレスレジスタ18は前記入力バッファ7から供給されるアドレスを前記CG(制御ゲート)駆動回路9及び前記アレイブロックラッチ回路19に供給する。
CG駆動回路9は、ロウアドレスレジスタ18から供給されるロウアドレスに応じて、前記制御電圧発生回路14により発生されたワード線の電位を選択し、ブロック選択部6に供給する。
前記ブロック選択部6には、ブロックデコーダ12が接続され、このブロックデコーダ12には、ブロックRD(リダンダンシ)デコーダ11及びROMブロック指定回路20が接続されている。前記ブロックRDデコーダ11には、アレイブロックラッチ回路19が接続されている。このアレイブロックラッチ回路19にはロウアドレスレジスタ18が接続されている。
前記ブロック選択部6は、アレイブロックラッチ回路19、ブロックRDデコーダ11及びブロックデコーダ12の出力信号に応じてメモリセルアレイ1内のブロックを選択する。さらに、ブロック選択部6は、データの読み出し、書き込み、及び消去時に、ロウアドレスに応じて、後述する転送ゲートを選択し、CG駆動回路9から供給される電圧を、メモリセルアレイ1中のワード線に供給する。
前記ROMブロック指定回路20は、メモリセルアレイの冗長ブロックをROMブロックとして指定するための回路である。すなわち、本発明において、ROMブロックは、メモリセルアレイ内の任意の冗長ブロックROMブロックに指定することが可能とされている。また、ROMブロックには、製造工程中にセキュリティのための認識コード等を書き込むため、一括書き込み、一括消去などのテストの時に、このROMブロックが選択されないように構成されている。
図2は、図1に示すメモリセルアレイ1及びデータ記憶部2の構成を示している。データ記憶部2は複数のデータ記憶回路311、311〜31n/2を有している。各データ記憶回路310、311〜31n/2は前記入力バッファ4、出力バッファ7に接続されている。これら310、311〜31n/2は前記カラムデコーダ3から供給されるカラム選択信号CSL0、CSL1〜CSLn/2により制御される。
各データ記憶回路310、311〜31n/2には一対のビット線が接続される。すなわち、データ記憶回路310にはビット線BL0、BL1が接続され、データ記憶回路311にはビット線BL2、BL3が接続され、データ記憶回路31n/2にはビット線BLn、BLn+1が接続されている。
メモリセルアレイ1には複数のNANDセルが配置されている。1つのNANDセルは直列接続された例えば16個のEEPROMからなるメモリセルM0、〜M15と、このメモリセルM15に接続された第1の選択ゲートS1と、メモリセルM0に接続された第2の選択ゲートS2とにより構成されている。第1の選択ゲートS1はビット線BL0に接続され、第2の選択ゲートS2はソース線CELSRCに接続されている。各行に配置されたメモリセルM0〜M15の制御ゲートはワード線WL0〜WL15に共通接続されている。また、第1の選択ゲートS1はセレクト線SGD1に共通接続され、第2の選択ゲートS2はセレクト線SGD2に共通接続されている。
リード動作、プログラムベリファイ動作及びプログラム動作時は、データ記憶回路に接続されている2本のビット線(BLi、BLi+1)のうち外部より指定されたアドレスにより1本のビット線が選択される。さらに、外部アドレスにより、1本のワード線が選択され、2値の場合1ページ、4値の場合、図2の点線で示す2ページ分のセルが選択される。
イレーズ動作は、図2に点線で示すブロック単位に実行される。すわわち、このブロック単位でデータが消去される。1ブロックは、複数個のNANDセルにより構成されている。また、データ記憶回路に接続されている2本のビット線(BLi、BLi+1)について同時に行なわれる。
イレーズベリファイ動作は、1回の動作により、データ記憶回路に接続されている2本のビット線(BLi、BLi+1)のうち1本のビット線(BLi)についてベリファイリード動作を行なう。この後、他方のビット線(BLi+1)についてベリファイリード動作を行なう。
図3(a)(b)は、メモリセル及び選択トランジスタの断面図を示している。図3(a)は、メモリセルを示している。基板41にはメモリセルのソース、ドレインとしてのn型拡散層42が形成されている。基板41の上にはゲート絶縁膜43を介して浮遊ゲート44が形成され、この浮遊ゲート44の上には絶縁膜45を介して制御ゲート46が形成されている。
図3(b)は、選択トランジスタを示している。基板41にはソース、ドレインとしてのn型拡散層47が形成されている。基板41の上にはゲート絶縁膜48を介して制御ゲート49が形成されている。
図4は、メモリセルアレイにおける1つのNANDセルの断面を示している。この例において、1つのNANDセルは、図3(a)に示す構成の16個のメモリセルM0〜M15が直列接続されて構成されている。NANDセルのドレイン側、ソース側には、図3(b)に示す構成の第1の選択ゲートS1及び第2の選択ゲートS2が設けられている。
図5は、図2に示すデータ記憶回路310の回路構成を示している。データ記憶回路は全て同一構成であるため、データ記憶回路310についてのみ説明する。
ビット線BLiにはNチャネルトランジスタ61aの電流通路の一端が接続されている。このトランジスタ61aのゲートには信号BLTRが供給されている。このトランジスタ61aの電流通路の他端はトランジスタ61bの電流通路の一端、およびトランジスタ61cの電流通路の一端に接続されている。前記トランジスタ61bの電流通路の他端は端子62aに接続されている。この端子62aには電圧VBLAが供給されている。また、前記トランジスタ61bのゲートには信号PREAが供給されている。前記トランジスタ61cのゲートには信号BLSAが供給されている。
また、ビット線BLi+1にはNチャネルトランジスタ61dの電流通路の一端が接続されている。このトランジスタ61dのゲートには前記信号BLTRが供給されている。このトランジスタ61dの電流通路の他端はトランジスタ61eの電流通路の一端、およびトランジスタ61fの電流通路の一端に接続されている。前記トランジスタ61eの電流通路の他端は端子62bに接続されている。この端子62bには電圧VBLBが供給されている。また、前記トランジスタ61eのゲートには信号PREBが供給されている。前記トランジスタ61fのゲートには信号BLSBが供給されている。トランジスタ61b、61eは信号PREA、PREBに応じて非選択のビット線を電位VBLA、VBLBにプリチャージする。前記トランジスタ61c、61fは信号BLSA、BLSBに応じてビット線を選択する。
前記トランジスタ61c、61fの電流通路の他端はトランジスタ61gを介して端子62cに接続されるとともに、ノードNEに接続されている。前記トランジスタ61gのゲートには信号BIASが供給され、端子62cには電圧VCCが供給されている。このトランジスタ61gはデータ読み出し時に、信号BIASに応じてビット線をプリチャージする。
前記ノードNEにはトランジスタ61hの電流通路の一端が接続されている。このトランジスタ61hのゲートには信号BLC1が供給されている。このトランジスタ61hの電流通路の他端には、PチャネルMOSトランジスタ61mを介して端子62dが接続されている。この端子62dには電圧VCCが供給されている。前記トランジスタ61mのゲートには信号PRSTB1が供給されている。
前記トランジスタ61hの電流通路の他端には、第1のラッチ回路LAT(A)が接続されている。この第1のラッチ回路LAT(A)は2つのクロックドインバータ回路61i、61jにより構成されている。クロックドインバータ回路61iは信号SEN1、SEN1B(Bは反転信号を示す)により制御され、クロックドインバータ回路61jは信号LAT1、LAT1Bにより制御される。この第1のラッチ回路LAT(A)は、書き込みデータをラッチする。
前記クロックド・インバータ回路61jの出力ノードNB、及びクロックド・インバータ回路61iの入力端の接続ノードNCにはNチャネルMOSトランジスタ61oの電流通路の一端が接続されている。このトランジスタ61oの電流通路の他端IOは前記入力バッファ7、出力バッファ4に接続される。
前記クロックド・インバータ回路61iの出力ノードNA、及びクロックド・インバータ回路61jの入力端の接続ノードにはNチャネルMOSトランジスタ61nの電流通路の一端が接続されている。このトランジスタ61nの電流通路の他端IOBは前記入力バッファ7、出力バッファ4に接続される。これらトランジスタ61o、61nのゲートにはカラムデコーダ3からカラム選択信号CSLが供給されている。
また、前記ノードNEにはトランジスタ61k、61lが直列接続されている。トランジスタ61kのゲートは前記第1のラッチ回路LAT(A)のノードNCに接続され、トランジスタ61lのゲートには信号VRFY1が供給されている。さらに、トランジスタ61lの電流通路には信号VREGが供給されている。これらトランジスタ61k、61lは第1のラッチ回路LAT(A)にラッチされたデータに応じてビット線の電位を設定する。
一方、前記ノードNEにはトランジスタ61qの電流通路の一端が接続されている。このトランジスタ61qのゲートには信号BLC2が供給されている。このトランジスタ61qの電流通路の他端には、PチャネルMOSトランジスタ61pを介して端子62eが接続されている。この端子62eには電圧VCCが供給されている。前記トランジスタ61pのゲートには信号PRSTB2が供給されている。
前記トランジスタ61qの電流通路の他端には第2のラッチ回路LAT(B)が接続されている。この第2のラッチ回路LAT(B)は2つのクロックドインバータ回路61r、61sにより構成されている。クロックドインバータ回路61rは信号SEN2、SEN2Bにより制御され、クロックドインバータ回路61sは信号LAT2、LAT2Bにより制御される。この第2のラッチ回路LAT(B)は、メモリセルから読み出されたデータをラッチする。
また、前記ノードNEにはトランジスタ61t、61uが直列接続されている。トランジスタ61tのゲートは前記第2のラッチ回路LAT(B)のノードNDに接続され、トランジスタ61uのゲートには信号VRFY2が供給されている。さらに、トランジスタ61uの電流通路には信号VREGが供給されている。これらトランジスタ61t、61uは第2のラッチ回路LAT(B)にラッチされたデータに応じてビット線の電位を設定する。
上記構成において、動作について説明する。
(コマンド入力)
コマンドは、図1に示す制御部15に供給される信号CLEをハイレベルとし、信号WEの立ち上り、及び立ち下り時に、I/O端子5に供給されるデータがコマンドとしてコマンドレジスタ16に供給される。
(アドレス入力)
アドレスは、図1に示す制御部15の信号ALEをハイレベルとし、信号WEの立ち上り、及び立ち下り時にI/O端子5に供給されるデータがアドレスとして取り込まれる。
図6(a)(b)(c)(d)は、各モードにおいて読み込まれるアドレスとI/O端子の関係を示している。本発明の半導体記憶装置は、メモリセルアレイを例えば4つのモードに切り替え設定可能とされている。これら4つのモードの切り替えは制御部15に設けられた図示せぬ例えばヒューズを切断することにより設定される。
図6(a)は、1G(ギガ)ビットで、1つのセルに2ビットを記憶する4値のデータ記憶であり、ブロックサイズが32KBのモードを示している。図6(b)は、512M(メガ)ビットで、1つのセルに1ビットを記憶する2値のデータ記憶であり、ブロックサイズが16KBのモードを示している。図6(c)は、1Gビットで、4値のデータを記憶し、ブロックサイズが128KBのモードを示している。図6(d)は、512Mビットで、2値のデータを記憶し、ブロックサイズが64KBのモードを示している。
各動作モードにおいて、リード、プログラムは4サイクルにより、カラムアドレスやブロックアドレス等を取りこむ。しかし、イレーズは、カラムアドレスを取りこむ必要が無いため、第1サイクル目は省略され、第2サイクルから4サイクルの3サイクルでアドレスを入力する。
図6(a)(c)に示す4値の場合1ページと2ページを切り替える必要がある。この切り替えは第2サイクルのMLAddを用いて行われる。2値の場合は、1つのセルに1ビットしか記憶しないため、この切り替えは必要ない。
図6(a)に示すカラムアドレスA8、A8Eは、コマンドにより切り替えて入力される。
(データ入力)
書き込みデータを入力する場合、図1に示す制御部15の信号ALE、及び信号CLEを共にローレベルとし、信号WEの立ち上り、及び立ち下り時にI/O端子5に供給されたデータをデータとして取り込む。このデータは、カラムデコーダ3により選択されているデータ記憶回路に供給される。信号WEを連続してトグルすることによりカラムアドレスはインクリメントされ、次のアドレスのデータが順次取り込まれる。
(データ出力)
メモリセルから読み出されたデータを外部へ出力する場合、図1に示す制御部15の信号ALE、及び信号CLEを共にローレベルとし、信号REの立ち上り、及び立ち下り時に、カラムデコーダ3により選択されているデータ記憶回路のデータがI/O端子5から出力される。信号REを繰り返しトグルすることによりアドレスがインクリメントされ、次のアドレスのデータが順次出力される。
(プリデコーダ及びカラムRDデコーダ)
図7(a)(b)は、プリデコーダ及びカラムRDデコーダ10の動作を示している。
図1に示すカラムアドレスレジスタ17は、外部より指定されたアドレスA0〜A8、A8Eをラッチすると共に、信号WE、及び信号REに同期してアドレスをインクリメントさせる。ECCを使用する時、ECCコードを記憶するため、カラムアドレスの528カラムに対して、さらに21カラムを追加する必要がある。すなわち、例えば2ビット訂正をする場合、1ページ(528ビット)あたり、余分に訂正符号の21ビットのセルが必要である。しかし、21カラムのうち4カラムはカラムリダンダンシと共通になっているため、17カラム分カラムアドレスが増えている。
カラムプリデコーダ及びカラムRDデコーダ10は、図7(a)に示すように、カラムアドレスA0〜A8、A8Eをデコードし、カラムプリデコード信号CA0〜7、CB0〜7、CC0〜8を出力する。このようにして、528+17カラムを選択する。
また、図7(b)に示すように、カラムリダンダンシを選択する時、カラムプリデコード信号を停止し、カラムリダンダンシを選択する信号CSS0〜7を出力する。本例では、ECCが未使用の時、カラムリダンダンシが1つのアレイに対して8本となる。また、ECCを使用する時は、カラムリダンダンシが1つのアレイに対して4本となり、17カラムは信号CA0〜7、CB0〜8により選択されるが、4カラムは信号CSS0〜3により選択される。
カラムプリデコーダ及びカラムRDデコーダ10から出力された信号CA0〜7、CB0〜7、CC0〜8は、カラムでコーダ3により528カラムのうち1つが選択される。信号CSS0〜7はデコードされず1つのカラムを直接選択する。
尚、図1に示すロウアドレスレジスタ18は、外部より指定されたアドレスA9〜A26をラッチする。
図8(a)(b)(c)は、図1に示すCG駆動回路9を示している。
リード及びプログラム時は、まず、図8(a)(b)に示す回路により、選択CG電圧Vcgsel(リードの時はVcgrv、プログラム時はVpgmh)と非選択CG電圧Vcgusel(リードの時はVread、プログラム時はVpass)が生成される。
図8(a)は、選択された制御ゲート線の電位を発生する回路であり、ブースト回路81a、81b、トランジスタ81c、81dにより構成されている。トランジスタ81cの電流通路の一端には、制御電圧発生回路14から供給されるプログラム電圧Vpgmhが供給されている。このトランジスタ81cのゲートには、ブースト回路81aが接続されている。ブースト回路81aにはプログラム電圧Vpgmh、及び信号VPGMENが供給されており、ブースト回路81aは信号VPGMENに応じて電圧Vpgmh+Vthを発生する。このため、トランジスタ81cは電圧Vpgmhを出力できる。
トランジスタ81dの電流通路の一端には、制御電圧発生回路14から供給される電圧Vcgrvが供給されている。このトランジスタ81dのゲートには、ブースト回路81bが接続されている。ブースト回路81bには電圧Vcgrv、及び信号VCGRENが供給されており、ブースト回路81bは信号VCGRENに応じて電圧Vcgrv+Vthを発生する。このため、トランジスタ81dは電圧Vcgrvを出力できる。これらトランジスタ81c、81dの電流通路の他端は共通接続され、この接続ノードから電圧Vpgmh、又は電圧Vcgrvからなる選択CG電圧Vcgselが出力される。
図8(b)は、非選択とされた制御ゲート線の電位を発生する回路であり、ブースト回路82a、82b、トランジスタ82c、82dにより構成されている。トランジスタ82cの電流通路の一端には、制御電圧発生回路14から供給される電圧Vpassが供給されている。このトランジスタ82cのゲートには、ブースト回路82aが接続されている。このブースト回路82aには電圧Vpass、及び信号VPASSENBが供給されており、ブースト回路82aは信号VPASSENBに応じて電圧Vpass+Vthを発生する。このため、トランジスタ82cは電圧Vpassを出力できる。
トランジスタ82dの電流通路の一端には、制御電圧発生回路14から供給される電圧Vreadhが供給されている。このトランジスタ82dのゲートには、ブースト回路82bが接続されている。このブースト回路82bには電圧Vreadh、及び信号VREADENが供給されており、ブースト回路82bは信号VREADENに応じて電圧Vreadh+Vthを発生する。このため、トランジスタ82dは電圧Vreadhを出力できる。これらトランジスタ82dの電流通路の他端は共通接続され、この接続ノードから電圧Vpass、又はVreadhからなる非選択CG電圧Vcguselが出力される。
図8(c)は、選択CG電圧Vcgsel、及び非選択CG電圧Vcgselを制御ゲートに供給するCG供給回路を示している。このCG供給回路は、制御ゲートに対応して16個設けられている。アドレスA11〜A14に基づきこのうち1個が選択状態とされ、残りの15個が非選択状態とされる。
すなわち、CG供給回路はデコード回路83a、インバータ回路83b、ブースト回路83c、83d、トランジスタ83e、83f、83gにより構成されている。デコード回路83aの入力端にはアドレスA11〜A14が供給され、このアドレスに応じてCG供給回路が選択された場合、ブースト回路83cによりトランジスタ83eがオンとされ、制御ゲート電圧VCGiとして、前記選択CG電圧Vcgselが出力される。また、CG供給回路が非選択の場合、ブースト回路83dによりトランジスタ83fがオンとされ、制御ゲート電圧VCGiとして、前記非選択CG電圧Vcgselが出力される。
また、イレーズの場合、信号ERASEENがハイレベルとされ、トランジスタ83gがオンとされる。このため、全ての制御ゲート電圧VCG0〜VCG15は接地電位とされる。
図8(d)は、アドレスA11〜A14と制御ゲート電圧VCGiの関係を示しており、アドレスA11〜A14に基づき、1つの制御ゲート電圧VCGiが出力されることを示している。
このように、図8(a)(b)に示す回路と図8(c)に示す回路との2段階で制御ゲート電圧VCGiを切り替えることにより、各CG供給回路からリード、プログラム、及びイレーズに必要な全ての電位を出力することができ、回路構成を小型化することができる。
図9(a)(b)は図1に示すアレイブロック回路19を示している。アレイブロック回路19は、メモリセルアレイ毎にブロックアドレス(A17〜26)をラッチする。
図9(a)に示すように、4つのメモリセルアレイは、アドレスA15、A16により選択される。選択されたメモリセルアレイのラッチ信号PBLATPB0〜3がハイレベルになる。
図9(b)は、アレイブロック回路19に設けられ、A17〜26の各ブロックアドレスに対応して配置されたラッチ回路を示している。このラッチ回路は、インバータ回路91a、ナンド回路91b、フリップフロップ回路を構成するナンド回路91c、91dにより構成されている。このラッチ回路は、ラッチ信号PBLATPB0〜3がハイレベルとなると、ブロックアドレスA17〜26をラッチする。
図10は、図1に示すブロックRDデコード回路11の動作を示している。このブロックRDデコード回路11は、アレイブロックラッチ回路19から供給されるブロックアドレスA17〜26が、ヒューズにより設定されたブロックリダンダンシのアドレスAPB17〜APB26と一致すると、複数存在するブロックリダンダンシから1つを選択するために、アドレスATPB17〜ATPB26とリダンダンシ領域を選択する信号ATPBDを出力する。
すなわち、図10は、ブロックアドレスA17〜26がブロックリダンダンシのアドレスAPB17〜APB26と一致した場合を示している。この場合、ブロックRDデコード回路11は、例えばATPB18に位置するブロックリダンダンシを選択するように、ブロックアドレスATPB18とリダンダンシ領域を選択する信号ATPBRDをハイレベルとしている。
図11は、図1に示すブロックデコーダ12の動作を示している。ブロックデコーダ12は、ブロックRDデコード回路11から供給されるブロックアドレスATPB17〜26、ATPBRDをデコードし、図11に示すようにロウデコード信号AROWA〜AROWEとRDECPBLRを出力する。ロウデコード信号AROWA〜AROWEはメモリセルアレイ1内のブロックを選択するための信号であり、RDECPBLRはメモリセルアレイ1の両側(左右)に配置されたブロック選択部6のうちから一方を選択する信号である。
さらに、ブロックデコーダ12は、ROMブロック指定回路20が選択された場合、ROMブロック指定回路20から供給されるブロックアドレスを上記と同様にデコードし、ROMブロックを選択するためのロウデコード信号AROWA〜AROWEは生成する。
図12は、図1に示すブロック選択部6に設けられたブロック選択回路6aの回路構成を示している。このブロック選択回路6aは各ブロックに対して1つ設けられている。また、図12に示すヒューズ状態検出回路6bは、各メモリセルアレイ1に対して1つずつ配置されている。
ブロック選択回路6aにおいて、端子100には電源電圧VDDが供給されている。この端子100と信号ROWCOMが供給されるノードの相互間にはPチャネルMOSトランジスタ101、NチャネルMOSトランジスタ102〜108が直列接続されている。前記トランジスタ101のゲートには、メモリセルアレイ1に対して左右一方のブロック選択部6を選択するための前記信号RDECPBLRが供給されている。また、トランジスタ102〜106のゲートには、前記ロウデコード信号AROWA〜AROWEが供給され、トランジスタ107のゲートには信号RDECPBLRDが供給されている。信号RDECPBLは、図13に示すように、信号RDECPBLRDより若干遅れて変化する。
さらに、トランジスタ108のゲートには、ROMブロックをアクセスするためのコマンド信号CD_ROMBAが供給されている。このトランジスタ108には、ヒューズ109が並列接続されている。このヒューズ109は、このブロック選択回路6aに対応するブロックが不良ブロックである場合、切断される。
さらに、前記トランジスタ101には、PチャネルMOSトランジスタ117、118の直列回路が並列接続されている。前記トランジスタ117のゲートは接地されている。また、前記トランジスタ101、102、118の接続ノードにはインバータ回路119の入力端が接続されている。このインバータ回路119の出力端は、前記トランジスタ118のゲートに接続されるとともに、レベルシフタ120の一方入力端に接続されている。
このレベルシフタ120の他方入力端には、信号VRDECが供給されている。この信号VRDECは、データのプログラム、リード、イレーズに応じてレベルシフタ120を制御する信号である。このレベルシフタ120は、ブロック選択回路6aが選択状態の場合、信号VRDECに従って、転送ゲートTGを駆動する信号を生成する。
前記転送ゲートTGは、メモリセルのワード線に接続される転送ゲートTG0〜TG15と、第1、第2の選択ゲートS1、S2のゲートに接続される転送ゲートTGS1、TGS2とにより構成されている。転送ゲートTG0〜TG15の電流通路の一端には、制御ゲート線CG0〜CG15がそれぞれ接続され、電流通路の他端には、ワード線WL0〜WL15がそれぞれ接続されている。制御ゲート線CG0〜CG15には前記CG駆動回路9から制御ゲート電圧VCGがそれぞれ供給される。
また、転送ゲートTGS1、TGS2の電流通路の一端には、選択ゲート線SGD、SGSがそれぞれ接続され、電流通路の他端には、セレクト線SGD1、SGD2がそれぞれ接続されている。セレクト線SGD1、SGD2には、例えば前記制御電圧発生回路14から所定の電圧がそれぞれ供給される。
前記セレクト線SGD1にはNチャネルMOSトランジスタ121、122が直列接続されている。トランジスタ121の電流通路の一端には信号SGDSPBLRが供給され、ゲートには信号RDECADin+1nが供給されている。さらに、トランジスタ122のゲートには、インバータ回路123を介して前記インバータ回路119の出力信号RDECADnが供給されている。
さらに、前記セレクト線SGD2にはNチャネルMOSトランジスタ124の電流通路の一端が接続されている。このトランジスタ124の電流通路の他端には、前記信号SGDSPBLRが供給され、ゲートには前記信号RDECADnが供給されている。
また、ヒューズ状態検出回路6bにおいて、前記信号ROWCOMが供給されるノードは、NチャンネルMOSトランジスタ110を介して接地されるとともに、NチャンネルMOSトランジスタ111のゲートに接続されている。前記トランジスタ110のゲートには、信号ROWCOMVSSが供給されている。前記トランジスタの電流通路の一端は、インバータ回路112の入力端、及びインバータ回路113の出力端に接続され他端は、接地されている。前記インバータ回路112の出力端、及びインバータ回路113の入力端は、インバータ回路114の入力端に接続され、このインバータ回路114の出力端から前記ヒューズが切断されているか否かを示す信号FUSECUTが出力される。この信号FUSECUTは、制御部15に供給される。このインバータ回路114の入力端はNチャネルMOSトランジスタ115を介して接地されている。このトランジスタ115のゲートには、インバータ回路116を介して信号BUSYが供給されている。
上記構成において、ブロック選択回路6aの動作について説明する。
信号RDECPBLR、信号RDECPBLRD、CMD_ROMBA、ROWCOMは、通常接地電位VSSである。このため、インバータ回路119の出力信号RDECADはローレベルとされている。
一方、リード動作、プログラム動作、イレーズ動作が開始されると、選択されたメモリセルアレイの右側又は左側の一方に対応する信号RDECPBLRがハイレベルになる。この状態において、アドレスが一致すると、ロウデコード信号AROWA〜AROWEが全てハイレベルとなる。このため、インバータ回路119の出力信号RDECADがハイレベルとなり、レベルシフタ120が活性化される。このレベルシフタ120は、プログラム時にプログラム電圧Vpgm+Vth(Vthは転送ゲートの閾値電圧)を出力し、リード時にリード電圧Vread+Vthを出力し、イレーズ時に電源電圧VDDを出力する。このような電圧を生成することにより、転送ゲートはCG駆動回路9からの電圧をそのまま転送できる。
一方、アドレスが不一致の場合、ロウデコード信号AROWA〜AROWEのいずれかがローレベルとなり、ブロック選択回路6aは非選択状態になる。このため、レベルシフタ120の出力電圧は接地電圧VSSになる。したがって、リード時、プログラム時において、ワード線WL0〜15はフローティングとなる。セレクト線SGD1、SGD2はSGDSPBLRが接地電位VSSとなり、さらに、トランジスタ121、122、123がオンすることにより、接地電位VSSとなる。
イレーズ時、ワード線WL0〜15はフローティング状態とされ、電圧SGDSPBLRは電源電圧VDDに設定される。このため、セレクト線SGD1、SGD2の電位は、VDD−Vthになる。しかし、基板が消去電圧VERAに設定されるため、カップリングによりワード線WL0〜15、及びセレクト線SGD1、SGD2はともに消去電圧VERAに近い電位となる。
図12に示すヒューズ109は、前述したように、不良ブロックの場合、切断される。一括選択ライトなどのテスト時、ロウデコード信号AROWA〜Eは、全部ハイレベルとされる。しかし、ヒューズ109が切られているため、インバータ回路119の出力信号RDECADはローレベルとなり、不良ブロックは選択されない。
また、パーシャルグッド品の不良ブロックをアクセスした場合も、ヒューズ109が切断されている場合、この不良ブロックは非選択となる。このため、この状態で、リード動作を行なうとセルがオフしていることになり、2値の時は、自動的に“0”データとなる。また、4値の第2ページの時は、“0”データとなるのに対して、第1ページの時はデータ“1”となる。このため、信号RDECPBLRをハイレベルにする前に、信号ROWCOMVSSを一旦ローレベルにし、ROWCOMをフローティングにする。
図13は、図12に示すヒューズ109の状態を検出ための動作シーケンスを示している。
先ず、信号BUSY及び信号RDECPBLRDをハイレベルにした状態において、信号ROWCOMVSSをローレベルとする。この状態において、アドレスが一致し、ロウデコード信号AROWA〜AROWEが全てハイレベルであり、且つヒューズ109が切られていないブロックの場合、信号ROWCOMが供給されるノードの電圧が電源電圧VDDになる。このため、トランジスタ111がオンし、インバータ回路112、113からなるラッチ回路の出力端はハイレベルを保持する。したがって、インバータ回路114の出力信号FUSECUTはローレベルとなる。
一方、ヒューズ109が切られているブロックの場合、信号ROWCOMが供給されるノードはフローティング(電位はVSS)のままである。このため、トランジスタ111はオフし、インバータ回路112、113からなるラッチ回路の出力端はローレベルを保持する。したがって、インバータ回路114の出力信号FUSECUTはハイレベルとなる。
この後、信号ROWCOMVSS、信号RDECPBLRDがハイレベルとされる。インバータ回路112、113からなるラッチ回路は、ラッチ状態を保持している。このため、ヒューズ109が切断されていると、どのブロックも選択されないようになる。
このように、図12に示す回路の場合、ヒューズ109が切断されているかどうかが分かる。このため、ヒューズ109が切断されている時は、一回の読み出し動作後、2回目の読み出し動作を行なわないと、出力はデータ“0”となる。
また、複数のセルに同じデータを書き込むイレーズ動作時、消去十分であるとイレーズベリファイにおいて、データ記憶回路の値は、データ“1”になり、不十分であるとデータ“0”となる。しかし、ヒューズ109が切られている場合、どのブロックも選択されずデータ“0”となってしまう。このため、イレーズベリファイが繰り返され、最大のループ回数まで動いてしまう。本発明は、これを防止するため、信号FUSECUTがハイレベルの場合は、このアレイのイレーズを行なわないようにしている。
図14は、メモリセルアレイの物理マッピングを示している。アドレスにより選択される物理位置を示す。
各メモリセルアレイ1はブロックblk0〜blk1023、及び冗長ブロックとしてのブロックリダンダンシblkRD0〜9を有している。ブロックリダンダンシblkRD0〜blkRD9のうち任意のブロックリダンダンシをROMブロックにすることができる。例えばブロックリダンダンシblkRD1をROMブロックにする場合、ROMブロックをアクセスするためのコマンド信号CD_ROMBAが入力されると、図1に示すブロックRDデコーダ11からは信号が出ず、ROMブロック指定回路20から、ブロックリダンダンシを選択する信号A17〜A26,及び信号ARDが出力され、ブロックリダンダンシの1番目が選択されるようにロウデコード信号AROWA〜AROWEが出力される。
ROMブロックのヒューズ109は、通常は切断する。なぜなら、ROMブロックにはダイソートテスト時にデータを書き込み、この後の、一括プログラム、及び一括イレーズの時は選択されないようにするためである。
しかし、ROMブロックをアクセスする場合、図12において、コマンド信号CMD_ROMBAがハイレベルとされると、トランジスタ108がオンとなるため、ヒューズ109が切断されていても選択状態になる。
図15(a)は、図1に示す制御部15に設けられたROMブロックの書き込み禁止回路15aを示し、図15(b)はROMブロック20の消去禁止回路15bを示している。
図15(a)において、書き込み禁止回路15aは、PチャネルMOSトランジスタ151a、151b、NチャネルMOSトランジスタ151c、ヒューズ151d、インバータ回路151e、151f、151h、ノア回路151gとにより構成されている。前記トランジスタ151a、151bの電流通路の一端には電源電圧VDDが供給され、電流通路の他端は共通接続されている。これらトランジスタの接続ノードと接地間には前記トランジスタ151cと前記ヒューズ151dが接続されている。トランジスタ151a、及びトランジスタ151cのゲートには信号LOWVDDnが供給されている。さらに、前記接続ノードは前記インバータ回路151eを介してノア回路151gの一方入力端に接続されている。このノア回路151gの他方入力端にはインバータ回路151fを介してコマンド信号CMD_ROMBAが供給されている。このノア回路151gの出力端はインバータ回路151hの入力端に接続され、このインバータ回路151hの出力端から信号PROENABLが出力される。
図15(b)に示す消去禁止回路15bは、書き込み禁止回路15aと同様の構成である。すなわち、トランジスタ152a、152bの電流通路の一端には電源電圧VDDが供給され、電流通路の他端は共通接続されている。これらトランジスタの接続ノードと接地間にはトランジスタ152cとヒューズ152dが接続されている。トランジスタ152a、及びトランジスタ152cのゲートには信号LOWVDDnが供給されている。さらに、前記接続ノードはインバータ回路152eを介してノア回路152gの一方入力端に接続されている。このノア回路152gの他方入力端にはインバータ回路152fを介してコマンド信号CMD_ROMBAが供給されている。このノア回路152gの出力端はインバータ回路152hの入力端に接続され、このインバータ回路152hの出力端から信号ERAENABLが出力される。
前記信号LOWVDDnは、パワーオン時一旦ローレベルになるが、この後ハイレベルとされる。ヒューズ151d、152dの切断前において、出力信号PROENABL、出力信号ERAENABLは常にハイレベルである。このため、プログラム、イレーズとも可能である。しかし、ヒューズ151d、152dを切断した後に、ROMブロックをアクセスするコマンド信号CMD_ROMBAがハイレベルになると、出力信号PROENABL、ERAENABLは共にローレベルとなり、ROMブロックは書き込み、消去ができなくなる。ヒューズ151d、又は152dの切断は任意に設定できる。
(4値の場合の動作)
本発明の半導体記憶装置において、4値の場合の動作について説明する。
図16、図17(a)に示すように、メモリセルのデータとメモリセルの閾値を定義する。ここで、メモリセルのデータが状態“0”〜“3”は、メモリセルの閾値の低いほうから高いほうへと定義されている。消去を行なうとメモリセルのデータは状態“0”となる。書き込み動作に応じて、メモリセルの閾値電圧は高い方に移動する。
図16は、本発明の書き込み方法を示している。メモリセルにデータを書き込む場合、先ず、第1ページのデータがメモリセルに書き込まれ、次に、第2ページのデータがメモリセルに書き込まれる。ここで、第1ページあるいは第2ページのデータを構成する書き込みデータが“1”である場合、書き込み動作によりメモリセルの閾値電圧は変化せずメモリセルのデータは変化しない。すなわち、データの書き込みが行われない。また、第1ページあるいは第2ページのデータを構成する書き込みデータが“0”である場合、書き込み動作によりメモリセルの閾値電圧が変化され、これに伴いメモリセルのデータも変化される。すなわち、データの書き込みが行われる。
先ず、消去状態のメモリセルのデータは状態“0”とされている。最初に第1ページのデータがメモリセルに書き込まれる。書き込みデータが“1”の場合、書き込みが行われないメモリセルのデータは状態“0”のままである。書き込みデータが“0”場合、書き込みが行なわれるメモリセルのデータは状態“1”になる。
次に、第2ページのデータがメモリセルに書き込まれる。この時、第1ページの書き込み動作により、データが状態“1”のメモリセルに対して、書き込みデータ“0”が供給された場合、メモリセルのデータは状態“2”とされる。また、第1ページの書き込み動作により、データが状態“0”のメモリセルに対して、書き込みデータ“0”が供給された場合、メモリセルのデータは状態“3”となる。
さらに、第1ページの書き込み動作により、データが状態“1”のメモリセルに対して、外部から書き込みデータ“1”が供給された場合、メモリセルのデータは状態“1”のままとされる。また、第1ページの書き込み動作により、データが状態“0”のメモリセルに対して、外部から書き込みデータ“1”が供給された場合、メモリセルのデータは状態“0”のままとされる。
図16、図17(a)に示すように、本発明は、メモリセルのデータが状態“2”の場合、第1ページ及び第2ページのデータが“0”、“0”に設定され、メモリセルのデータが状態“3”の場合、第1ページ及び第2ページのデータが“1”、“0”に設定される。メモリセルのデータを読み出す場合、先ず、第2ページのデータが読み出され、次に、第1ページのデータが読み出される。
第2ページのデータを読み出す場合、メモリセルのデータが状態“0”又は状態“1”であると読み出されるデータは“1”となる。メモリセルのデータが状態“2”又は状態“3”であると読み出されるデータは“0”となる。このため、第2ページのデータの読み出しは、メモリセルのデータが状態“1”以下か、状態“2”以上かの1回の動作のみで判断できる。
一方、第1ページのデータを読み出す時、メモリセルのデータが状態“0”又は状態“3”であると読み出されるデータは“1”となる。また、メモリセルのデータが状態“1”又は状態“2”であると読み出されるデータは“0”となる。したがって、第1ページのデータは、メモリセルのデータが状態“0”か状態“1”以上かの判断と、メモリセルのデータが状態“2”以下か状態“3”かの判断で読み出すことができる。すなわち、第1ページのデータは、合計2回の動作で読み出すことができる。
消去動作を行なうとメモリセルのデータは状態“0”になり、アドレスに第1、第2ページの何れを指定しても読み出されるデータは“1”となる。
また、2ビット(第1ページ、第2頁ページ)の切り替えはアドレスA9によって行なう。例えばアドレスA9をローレベルとすると第1ページが指定され、アドレスA9をハイレベルとすると第2ページが指定される。
多値メモリの場合、書き込みデータに応じてメモリセルの閾値電圧を正確に制御する必要がある。このため、メモリセルにデータを書き込む場合、メモリセルの制御ゲートに印加する電圧を徐々に増加してデータが書き込まれる。このような書き込み方法はステップアップ書き込み方法と呼ばれている。
図18は、メモリセルに対するステップアップ書き込み方法の書き込み特性を示している。縦軸にセルの閾値電圧を示し、横軸に書き込み電圧(プログラム電圧)を示している。
消去後のセルの閾値電圧(メモリセルのデータが状態“0”)は、例えば−3.5Vとされている。上述したように、本発明の場合、メモリセルのデータを状態“0”から状態“3”にする場合、セルの制御ゲートに初期プログラム電圧として16Vを印加する。この後、0.2Vづつ書き込み電圧を上げて書き込みを行なうと、図中の“0”→“3”に沿って閾値電圧が上昇する。一方、メモリセルのデータを状態“0”から状態“1”にする場合、初期書き込み電圧を14Vとして書き込みを始める。なぜなら、データが状態“1”の閾値電圧は0.2Vである。このため、初期書き込み電圧を16Vとして書き込みを開始すると、3ステップ目と4ステップ目の間でデータが状態“1”の閾値電圧となり、オバープログラムとなる可能性がある。これを回避するため、初期書き込み電圧を14Vとする。
第1ページの書き込みにおいて、メモリセルのデータは状態“0”から状態“1”に移動するため、13回の書き込み回数でメモリセルデータを状態“1”の閾値に達している。第2ページの書き込みにおいて、メモリセルのデータを状態“0”→“3”と“1”→“2”にするが、“0”→“3”にするのは“0”→“1”より高い位置まで書き込むため、初期書き込み電圧を16Vに上げることができる。
したがって、図17(b)に示すように、書き込み回数はメモリセルのデータが状態“0”から状態“3”が11回、メモリセルのデータが状態“1”から状態“2”が6回であるため、11回の書き込み回数でプログラムが可能である。従って、第1ページの後に第2ページを書き込むと、24回の書き込み回数となる。
一方、後述するように、第1ページと第2ページを同時に書き込む場合は、メモリセルのデータを状態“0”→“1”、“0”→“2”、“0”→“3”にするため、初期書き込み電圧を14Vから始める。
したがって、図17(c)に示すように、書き込み回数はメモリセルのデータが状態“0”から状態“1”が13回、メモリセルのデータが状態“0”から状態“2”が17回、メモリセルのデータが状態“0”から状態“3”が20回であるため、20回の書き込み回数でプログラムが可能である。したがって、第1ページと第2ページを同時に書く場合は、高速に書き込むことができる。
また、この第1ページと第2ページは、同一ブロック内のページであるため、連続した2ページを高速に書き込むことができる。
(オートプログラム)
プログラム動作は、図19に示すように、まずデータ入力コマンドである“80h”(hは16進数を示す)を入力し、全てのデータ記憶回路310〜31n/2の第1のラッチ回路LAT(A)にデータ“1”(書き込みを行なわない)がセットされる。この後、信号ALE、及び信号WEのトグルに応じてアドレス、及びデータを入力する。したがって、カラムアドレスで指定されたデータ記憶回路にシリアルにデータが供給される。
外部より入力されたデータが、書きこみを行なわないことを示すデータ“1”であると、図5に示すデータ記憶回路のノードNCがハイレベルになり、外部より入力されたデータが、書き込みを行なうことを示すデータ“0”であると、ノードNCがローレベルになる。以後、第1のラッチ回路LAT(A)のデータはノードNCの電位とする。
この後、図19に示すように、オートプログラムの実行コマンドである“10h”を入力し、オートプログラムが開始する。ECCコード使用時は、“10h”コマンドの入力後、ECCコード発生回路8により自動的にECCコードを作り、このコードをデータ記憶回路に供給し、この後、オートプログラム動作が開始される。
図20に示すように、倍速プログラム動作は、データ入力コマンド“80h”、アドレス、及びデータを入力した後、ダミーBusy信号を出力するため、コマンド“11h”を入力する。このダミープログラムは1.5μsの短い間、Busy信号を出力する。ECCコードの使用時は、このコマンド“11h”後にECCコードを発生し、このコードをデータ記憶回路に供給する。このため、Busy信号の時間は1.5μsより長い時間となる。
上記コマンド“80h”、アドレス、データ、及びコマンド“11h”の入力をアレイアドレス(A15、A16)を変えて4回行なう。但し、最終のみコマンド“11h”の代わりにコマンド“10h”を入力し、オートプログラムを実行させる。また、2回目以降のコマンド“80h”において、第1のラッチ回路LAT(A)はリセットしない。
ブロックアドレス(A17〜A26)は、毎回任意のアドレスが入力される。しかし、図1に示すロウアドレスレジスタ18は、次のアドレスが入力されると、前のアドレスが消えるため、アドレス入力毎に図1に示すアレイブロックラッチ回路19でアレイ毎にブロックアドレスをラッチする。
オートプログラムコマンド“10h”の入力後、プログラム動作が行われるが、本メモリは多値メモリであり、1つのメモリセルに2ビットのデータを記憶する。この2ビットを前述したように、アドレスA9に割り当てている。すなわち、アドレスA9がローレベルの時、第1ページが指定され、アドレスA9がハイレベルの時、第2ページが指定される。第1、第2ページの書き込みシーケンスは、図21、図22に示すようになる。また、本メモリは、先ず第1ページのデータを書き込み、この後、第2ページのデータを書き込む。まず、図21、図22を用いて、第1、第2ページのプログラムについて概略的に説明する。
図21に示す第1ページのプログラムにおいて、各データ記憶回路310〜31n/2にセットされたデータがメモリセルにプログラムされ(ST1)、この後、書き込みが十分かどうかベリファイリードされる(ST2)。すなわち、メモリセルのデータが読み出され、データ記憶回路の第1のラッチ回路LAT(A)にラッチされる。この後、不良ブロックをブロックリダンダンシに置き換える前のテスト工程においては、第1のラッチ回路LAT(A)にラッチされたローレベルデータの数、すなわち、ベリファイフェイルの数を計数し、この計数値が規定値(本例では、カラムリダンダンシが4個のときは4、カラムリダンダンシが8個の時は8)以上の場合、再度プログラムベリファイを繰り返し、規定値以下の場合、プログラム動作を終了する(ST4)。また、テスト以外の場合、各第1のラッチ回路LAT(A)にラッチされたデータが“1”であるかどうか判別され、オール“1”でなければ、上記動作が繰り返され、オール“1”である場合、第1ページのプログラムが終了される(ST5)。
一方、図22に示す第2ページのプログラムにおいては、各データ記憶回路310〜31n/2の第1のラッチ回路LAT(A)にデータをセットした後、先ず、第1ページのプログラムにおいて書き込まれたデータをデータ記憶回路の第2のラッチ回路LAT(B)に読み出す内部データロードが実行される(ST11)。この後、第1ページと同様にプログラムされる(ST12)。次に、ベリファイリード1で、メモリセルのデータが状態“2”になっているかどうかベリファイされ(ST13)、ベリファイリード2で、メモリセルのデータが状態“3”になっているかどうかがベリファイされる(ST14)。以下、第1ページのプログラムと同様の動作が行われる(ST15〜ST17)。
尚、パーシャルグッド品の不良ブロックは、テスト後にヒューズ109が切断されている。したがって、この不良ブロックをアクセスした場合、この不良ブロックは選択されない。このため、ベリファイOKとなり終了する。
次に、第1、第2ページのプログラムについて詳細に説明する。なお、この説明において、図21に示すステップST3、ST4、及び図22に示すステップST15、ST16は省略する。
(第1ページオートプラグラム)
図23は、第1ページプログラム時における各部の動作シーケンスを示している。図5、図23に示すように、データ記憶回路におけるトランジスタ61hのゲートに供給される信号BLC1をVCC+Vthとし、信号BLSAをVpass、BLTRをVCCとすると、第1のラッチ回路LAT(A)にデータ“1”(書き込みを行なわない)が記憶されている時、ビット線BLの電位はVCCになる。また、データ“0”(書き込みを行なう)が記憶されている時、ビット線の電位は接地電位VSSになる。また、選択されたワード線に接続され、非選択ページの(ビット線が非選択である)セルは書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線の電位は、データ“1”が供給されるビット線と同様に電位VCCとされる。
ここで、図1に示すCG駆動回路9によりセレクト線SG1をVCC、セレクト線SG2をVSS、選択CG線にVPGM(20V)、非選択ワード線にVpass(10V)を印加する。すると、ブロック選択回路6で選択されているブロック(倍速時は、各アレイ毎に1づつ存在する。)のセレクト線SG1がVCC、選択ワード線がVPGM(20V)、非選択ワード線がVPASS(10V)になる。ビット線がVSSになっている場合、セルのチャネルがVSS、ワード線がVPGMとなるので書き込みが行なわれる。一方、ビット線がVCCになっている場合、セルのチャネルがVSSでなくVPGMが上昇されることにより、カップリングでVPGM/2となる。このため、このセルはプログラムされない。
このようにして、データ“0”が書き込まれるメモリセルのデータは、図16、図17(a)に示すように、状態“1”になる。また、データ“1”の書き込まれるメモリセルのデータは、状態“0”のままである。
(第1ページプログラムベリファイ)
次に、プログラムベリファイリードが実行される(図21、ST2)。
図24はプログラムベリファイリードの動作を示し、図25はプログラムベリファイリード時における各部のシーケンスを示している。
第1ページプログラムベリファイリードは、図16に示すように、選択されているワード線にリードの時の電位bより少し高い電位b′を供給する。以後“′”はベリファイ電位を示し、リード時のワード線電位より若干高い値とする。
次に、図25に示すように、選択されているブロック内の非選択ワード線及びセレクト線SG1に電圧Vreadが供給される。さらに、図5に示すデータ記憶回路のトランジスタ61gのゲートに供給される信号BIASがハイレベル(1.6V)とされ、ビット線がプリチャージされる。
この後、メモリセルのソース側のセレクト線SG2をハイレベル(Vread)にする。メモリセルの閾値電圧が電位b′より高い時、メモリセルはオフするため、ビット線はハイレベルのままである。また、メモリセルの閾値電圧が電位b′に達していない場合、メモリセルはオンするためビット線の電位はローレベル(VSS)となる。
ここで、書き込みを行なう場合、図5に示す第1のラッチ回路LAT(A)のノードNAにローレベル(データ“0”)がラッチされる。また、書き込みを行なわない場合、ノードNAにハイレベル(データ“1”)がラッチされる。このため、トランジスタ61lの電流通路に供給される信号VREGをVCCとし、ゲートに供給される信号VRFY1をハイレベルにすると、書き込みを行なわない場合のみビット線がフローティング状態からハイレベルに固定される。この動作の後、ビット線の電位が第1のラッチ回路LAT(A)に読み込まれる。第1のラッチ回路LAT(A)にハイレベルがラッチされるのは、メモリセルの電位が閾値電圧に達した場合と、書き込みを行なわない場合である。また、第1のラッチ回路LAT(A)にローレベルがラッチされる場合は、メモリセルの電位が閾値電圧に達しない場合だけである。
したがって、第1のラッチ回路LAT(A)がローレベルの場合、再び書き込み動作を行ない全てのデータ記憶回路のデータがハイレベルになるまで上記プログラム動作とベリファイリード動作を繰り返す(図21、ST1〜ST5)。
(第2ページプログラム)
第2ページプログラムも第1ページプログラムと同様に、外部より第2ページのデータが入力される。これらデータは各データ記憶回路310〜31n/2の第1のラッチ回路LAT(A)に記憶される。
第2ページプログラムの動作において、第1ページプログラムの動作と大きく異なるのは内部データロードである(ST11)。第2ページプログラムの動作は第1ページプログラムの動作結果に応じて異なる。
すなわち、図16、図17(a)に示すように、第1ページのメモリセルのデータが状態“0”になっている(書き込み動作を行なわなかった)場合で、第2ページのデータが“0”(書き込みを行なう)の時、メモリセルのデータを状態“3”に設定する。第2ページのデータが“1”(書き込みを行なわない)の時、メモリセルのデータを状態“0”のままとする。メモリセルのデータが状態“1”になっている(第1ページに書き込み動作を行なった)場合で、第2ページのデータが“0”(書き込みを行なう)の時、メモリセルのデータを状態“2”に設定する。第2ページのデータが“1”(書き込みを行なわない)の時、メモリセルのデータは状態“1”のままにする。
このように、第2ページプログラムの動作は第1ページプログラムの動作結果に応じて異なる。このため、第2ページのデータをセルに書き込む前に、メモリセルのデータが状態“0”か状態“1”かを調べ、記憶しておく必要がある。そこで、メモリセルのデータを読み出し、図5に示すデータ記憶回路の第2のラッチ回路LAT(B)にロードする内部データロードが行われる(ST11)。この内部データロードは、ワード線に図16に示す電位aを供給し、リード動作を行う。このリード結果をデータ記憶回路の第2のラッチ回路LAT(B)に記憶する。
図26(a)は内部データロード時の動作を示し、図27は、内部データロード時における各部のシーケンスを示している。図26(a)、図27を参照して、内部データロードの動作について説明する。
内部データロードにおいて、まず、図5に示すデータ記憶回路の第1のラッチ回路(A)のデータを非選択側のビット線に記憶させる。次に、ワード線に電位aを印加してリード動作を行なう。この結果を第1のラッチ回路(A)に記憶する。メモリセルのデータが“0”の場合、第1のラッチ回路(A)にはデータ“0”がラッチされ、メモリセルのデータが“1”の場合、第1のラッチ回路(A)にはデータが“1”が記憶される。
次に、第2のラッチ回路(B)のデータを“1”にした後、信号BLC2に中間電位1Vを印加し、信号VREGを電圧VSS、信号VRFY1をハイレベルにする。すると、第1のラッチ回路(A)がデータ“1”、つまりメモリセルのデータが“1”の場合、第2のラッチ回路(B)のデータは“0”になる。第1のラッチ回路(A)のデータが“0”、つまり、メモリセルのデータが状態“1”の場合、第2のラッチ回路(B)のデータは“1”のままである。この後、非選択側のビット線に記憶されている、データを第1のラッチ回路(A)に戻す。
次に、第1ページプログラムと同様に、各部に所定の電圧を印加する。この状態において、第1のラッチ回路LAT(A)に記憶されている第2ページのデータに応じて、選択されている全てのセルについて書き込みを行なう(図22、ST12)。
(第2ページベリファイ)
第2ページベリファイは、第1のベリファイリード(ST13)と第2のベリファイリード(ST14)の2つを有している。第1のベリファイリード(ST13)はメモリセルのデータが状態“2”であるかどうかベリファイする。第2のベリファイリード(ST14)はメモリセルのデータが状態“3”であるかどうかベリファイする。
{第2ページ第1のベリファイリード}
図26(b)は第2ページ第1のベリファイリードの動作を示し、図28は、第2ページ第1のベリファイリード時における各部のシーケンスを示している。
このベリファイは、図16に示すように、ワード線に電位b′を印加してリード動作を行う。この結果、メモリセルの閾値電圧がb′に達しているとビット線はハイレベル、閾値電圧がb′に達していないとローレベルになる。しかし、この時、メモリセルのデータを状態“3”にするセルもオフする。このため、ベリファイOKとなってしまう。そこで、第1ページの書き込み動作時に書き込まれず、データが状態“0”のメモリセルに接続されたビット線の電位をローレベルとする。
すなわち、第1ページの書き込み動作時に書き込まれず、メモリセルのデータが状態“0”の場合、前記内部データロードにより、第2のラッチ回路LAT(B)のノードNDは、ハイレベルとされている。この状態において、図5に示すトランジスタ61uの電流通路に供給される信号VREGを、図28に示すように、接地電圧VSS、ゲートに供給される信号VRFY2をハイレベルとする。すると、第2のラッチ回路LAT(B)のノードNDがハイレベルになっている場合、トランジスタ61tがオンしてビット線が強制的にローレベルとされる。
次に、第1ページベリファイ動作と同様に、信号VREGを電源電圧VCCとし、トランジスタ61lのゲートに供給される信号VRFY1をハイレベルにする。すると、第1のラッチ回路LAT(A)のノードNAにハイレベルがラッチされている(書き込みを行なわない場合)時、トランジスタ61kがオンする。このため、ビット線がハイレベルになる。この動作の後、ビット線の電位が第1のラッチ回路LAT(A)に読み込まれる。
上記動作により、第1のラッチ回路LAT(A)にハイレベルがラッチされるのは、図26(b)に示すように、メモリセルのデータを状態“2”にするため書き込みを行なっているセルが閾値電圧に達した場合と、書き込みを行なわない場合である。また、第1のラッチ回路LAT(A)にローレベルがラッチされる場合は、メモリセルのデータを状態“2”にするため書き込みを行なっているセルが閾値電圧に達しない場合と、書き込みを行なっているメモリセルのデータが状態“3”の場合である。
{第2ページ第2のベリファイリード}
図26(c)は上記第2ページ第2のベリファイリード動作を示し、図25はその際の各部のシーケンスを示している。
このベリファイは第1ページベリファイ動作と全く同じである。なぜなら、図16に示す電位c′より高いセルはデータ“3”にするセル以外存在しないためである。第1ページベリファイでは、メモリセルのデータが状態“1”になったかどうかをベリファイするためワード線に電位a′を印加した。しかし、この場合は、メモリセルのデータが状態“3”になったかどうかをベリファイするため、ワード線に電位c′を印加する。
この結果、第1のラッチ回路LAT(A)にハイレベルがラッチされるのは、図26(c)に示すように、セルが閾値電圧に達した場合と、書き込みを行なわない(初めから第1のラッチ回路LAT(A)にハイレベルがラッチされている)場合である。また、第1のラッチ回路LAT(A)にローレベルがラッチされるのは、セルが閾値電圧に達しない場合、つまりメモリセルのデータを状態“3”とするために書き込んでいるが、未だ状態“3”に達しないNGの場合と、メモリセルのデータを状態“2”に書き込んでいる場合である。
したがって、第2ページベリファイは、メモリセルのデータが状態“2”に書き込まれる場合の第1のベリファイリードと、状態“3”に書き込まれる場合の第2のベリファイリードの2回の動作を行なう。さらに、第1のラッチ回路LAT(A)がローレベルの場合は再び書き込み動作を行なう。このようにして、全てのデータ記憶回路のデータがハイレベルになるまでこのプログラム動作とベリファイ動作が繰り返される(図22、ST12〜ST17)。
しかし、メモリセルのデータが状態“3”である場合、閾値電圧が高い所にある。このため、このメモリセルはなかなか書き込まれない。このため、繰り返し行なうプログラムベリファイ動作のうち、初めの数回はメモリセルのデータが状態“3”になったかどうかのベリファイ動作を省略することができる。また、数回繰り返し動作を行なうと閾値電圧の低い状態“2”のデータが書き込まれるメモリセルは、書き込みが終了しているはずである。このため、プログラムベリファイ動作を数回繰り返した後、メモリセルのデータが状態“2”のベリファイは省略することが可能である。
(リード動作)
図29はリード動作のシーケンスを示している。
リード動作は、図29に示すように、先ず、リードコマンド“00h”を入力後、アドレスを入力することにより開始される。リード動作において、アドレスで指定されたページの全セルのデータが、データ記憶回路310〜31n/2にそれぞれ読み出される。この後、信号BUSYが解除されレディー状態になると、信号REのトグルに応じて、カラムアドレスで指定された順に、データ記憶回路からデータが出力される。
図30は、倍速リード動作のシーケンスを示している。この倍速リードは、一度のリード動作において、4つのメモリセルアレイ内のページのセルを全て、各データ記憶回路に読み出す。この後、信号BUSYが解除されレディー状態になると、信号REのトグルに応じて、カラムアドレスで指定された順に、データ記憶回路からデータが出力される。1つのメモリセルアレイの最終カラムアドレスになると、短い信号BUSY(1.5μs)が出力される。この後、信号BUSYが解除されレディー状態になると、信号REのトグルに応じて次のメモリセルアレイのデータが出力される。このような動作が繰り返され、一度の読み出しで、4ページ分のデータが順次出力される。但し、この4ページは連続していない4ページであるため、図6(c)(d)に示すように、アドレスを割り付ける必要がある。
また、この実施形態のメモリは、多値メモリであり、1つのセルに2ビットのデータが記憶されている。この2ビットのデータは、アドレスA9により指定される。すなわち、上述したように、アドレスA9がハイレベルの場合、第2ページが指定され、アドレスA9がローレベルの場合、第1ページが指定される。
図31は、リード動作を概略的に示すフローチャートである。
リード動作は、リードコマンド“00h”を入力後、アドレスを入力することにより開始される(ST21)。アドレスA9がハイレベルの場合、第2ページのデータがリードされる(ST25)。この第2ページリードでは、図16、図17(a)に示すように、メモリセルのデータが“2”以下であるかどうかが判別される。
次に、アドレスA9がローレベルの場合、第1ページのデータがリードされる。第1ページのリード動作は、2つのリード動作を有している。第1のリード動作(第1ページリード1)(ST22)は、図16、図17(a)に示すように、メモリセルのデータが“2”以下か、“3”であるかを判別する。第2のリード動作(第1ページリード2)(ST24)は、図16、図17(a)に示すように、メモリセルのデータが“1”か、“2”以上であるかを判別する。
尚、パーシャルグット品の不良ブロックに対応するブロック選択回路のヒューズ109は切断されている。このため、2値、及び4値の第2ページのリード動作において、不良ブロックをアクセスした場合、この不良ブロックは選択されず、電流が流れない。このため、自動的にデータ“0”が出力される。しかし、4値のメモリにおいて第1ページのリード動作の場合、第1、第2のリード動作(第1ページリード1、2)によりデータ“1”が出力される。しかし、図12に示すインバータ回路114から出力される信号FUSECUTにより、ヒューズ109が切断されているかどうか分かる。このため、ヒューズが切断されている場合、第1のリード動作(第1ページリード1)のみを行ない、第2のリード動作(第1ページリード2)を行なわないようにし、データ“0”を出力するようにしている(ST23)。
次に、図32乃至図35を参照して、リード動作について詳細に説明する。
(第2ページリード)
第2ページリードは、図16に示すように、選択されているワード線にリードの時の電位cが印加される。
次に、図34に示すように、選択されているブロック内の非選択ワード線及びセレクト線SG1にVread(4.5V)を印加する。さらに、図5に示すデータ記憶回路のトランジスタ61gのゲートにハイレベルのBIASを印加し、ビット線をプリチャージする。この後、セルのソース側のセレクト線SG2をハイレベルとする。セルの閾値電圧が電位cより高い時、セルはオフするため、ビット線はハイレベルのままである。また、セルの閾値電圧が電位cに達していない場合、セルはオンするため、ビット線は接地電位VSSとなる。図17(a)に示すように、メモリセルのデータとメモリセルの閾値電圧を定義している。このため、メモリセルのデータが状態“0”又は状態“1”であるとビット線の電位はローレベルになり、状態“2”又は状態“3”であるとビット線の電位はハイレベルになる。
次に、これらビット線の電位が第1のラッチ回路LAT(A)に読み込まれる。図5に示す第1のラッチ回路LAT(A)のノードNAは、図32に示すように、メモリセルのデータが状態“0”又は状態“1”であるとローレベルになり、状態“2”又は状態“3”であるとハイレベルになる。また、ノードNBは、ノードNAと逆のレベルとなる。カラム選択線CSLがハイレベルとされると、トランジスタ61o、61nがオンとなり、ノードNB、NAの電位が出力バッファ4に出力される。
(第1ページリード)
次に、第1ページのデータがリードされる。第1ページリードで出力されたデータが“1”の場合、図17(a)に示すように、メモリセルのデータが状態“0”又は状態“3”である。
したがって、最初にメモリセルのデータが状態“2”以下か、状態“3”であるかを判断する。次にメモリセルのデータが状態“0”か、状態“1”以上であるかを判断しなければならない。
{第1のリード動作}
第1のリード動作では、メモリセルのデータが状態“2”以下か、状態“3”であるかを判断する。図33(a)は第1ページ第1のリード動作を示し、図23の左半分はその際のシーケンスを示している。図35におけるシーケンスは図34と同様である。
先ず、メモリセルのデータが状態“2”以下か、状態“3”であるかを調べるため、ワード線に電位cを印加してメモリセルのデータをリードする。この結果、第1のラッチ回路LAT(A)にハイレベルがラッチされるのは、図33(a)に示すように、メモリセルのデータが状態“3”の場合だけである。また、第1のラッチ回路LAT(A)にローレベルがラッチされる場合は、メモリセルのデータが状態“0”、状態“1”、状態“2”のいずれかの場合である。
{第2のリード動作}
次に、第2のリード動作では、メモリセルのデータが状態“0”か、状態“1”以上であるかを判断する。図33(b)は第1ページ第2のリード動作を示し、図35の右半分はその際のシーケンスを示している。
メモリセルのデータが状態“0”か、状態“1”以上であるかを調べるため、ワード線に電位aを印加してメモリセルのデータをリードする。この結果、第1のラッチ回路LAT(A)にローレベルがラッチされるのは、メモリセルのデータが状態“0”の場合だけである。また、第1のラッチ回路LAT(A)にハイレベルがラッチされる場合は、メモリセルのデータが状態“1”、状態“2”、状態“3”のいずれかの場合である。
ここで、図5に示す信号VREGを接地電位VSSとし、トランジスタ61lのゲートに供給される信号VRFY1をハイレベルにする。第1のラッチ回路LAT(A)にハイレベルがラッチされている場合、すなわち、第1ページ第1のリード動作において、メモリセルのデータが状態“3”のとき、ビット線が強制的にローレベルとされる。この結果、メモリセルのデータが状態“0”又は状態“3”の場合、ビット線の電位はローレベルになる。また、メモリセルのデータが状態“1”又は状態“2”の場合、ビット線の電位がハイレベルになる。
次に、これらのビット線の電位を第1のラッチ回路LAT(A)に読み込むと、図33(b)に示すように、メモリセルのデータが状態“0”、状態“3”であると、第1のラッチ回路LAT(A)のノードNAはローレベルになる。また、状態“1”、状態“2”であるとノードNAはハイレベルになる。また、ノードNBは、ノードNAと逆のレベルとなる。カラム選択線CSLがハイレベルとされると、トランジスタ61o、61nがオンとなり、ノードNB、NAの電位が出力バッファ4に出力される。
(オートイレーズ)
図36は、イレーズ動作を示している。イレーズ動作は、ブロック単位でイレーズする。このため、先ず、ブロックを選択するブロック選択コマンド“60h”を入力し、この後、ブロックアドレスを入力する。この後、オートイレーズの実行コマンド“DOh”を入力すると、オートイレーズが開始する。
図37は、倍速イレーズ動作を示している。倍速イレーズ動作は、ブロック選択コマンド“60h”、ブロックアドレスをアレイアドレス(A15、A16)を換えて3回入力する。この後、ブロック選択コマンド“60h”、アドレス、オートイレーズの実行コマンド“DOh”を入力することにより、倍速イレーズ動作が開始される。
ブロックアドレス(A17〜A26)は、毎回任意のアドレスが入力されるが、図1に示すロウアドレスレジスタ18は、次のアドレスが入力されると、前のアドレスが消えるため、アドレス入力毎に図1に示すアレイブロックラッチ回路19でブロックアドレスをメモリセルアレイ毎にラッチする。
図38はオートイレーズのフローチャートを示している。先ず、選択されているブロックのイレーズ動作を行なう(ST31)。この後、データ記憶回路に接続されている2本のビット線(BLi、BL+1)のうち1本のビット線(BLi)についてイレーズベリファイリード動作を行ない、十分に消去されていない場合、再度イレーズが行われる(ST32〜ST35、ST31)。メモリセルが十分に消去されている場合、他方のビット線(BLi)についてイレーズベリファイリード動作を行なわれる(ST36)。この結果、十分に消去されていない場合、再度イレーズが行われる(ST36〜ST39、ST31)。メモリセルが十分に消去されている場合、終了する。
不良ブロックをブロックリダンダンシに置き換える前のテスト工程においては、各イレーズベリファイ動作ST33、ST36の後、第1のラッチ回路LAT(A)にラッチされたローレベルデータの数、すなわち、ベリファイフェイルの数が計数され、この計数値が規定値(本例では、カラムリダンダンシが4個のときは4、カラムリダンダンシが8個の時は8)以上の場合、再度イレーズを繰り返される(ST34、ST38)。
尚、パーシャルグッド品の不良ブロックは、テスト後にヒューズ109が切断されている。したがって、この不良ブロックをアクセスした場合、この不良ブロックは選択されない。このため、第1のラッチ回路LAT(A)はデータがローレベルとなり、イレーズベリファイがOKにならない。しかし、図12に示すインバータ回路114から出力される信号FUSECUTにより、ヒューズ109が切断されているかどうか分かる。したがって、信号FUSECUTに応じてヒューズ109が切断されている場合は、ベリファイはOKとする。
(イレーズ)
図39はイレーズ動作のシーケンスを示している。イレーズ動作を行なうと、メモリセルのデータは状態“0”となり、第1ページ、第2ページ、何れでリードを行なってもデータ“1”が出力される。
(イレーズベリファイ)
図40はイレーズベリファイ動作のシーケンスを示している。1回のイレーズベリファイ動作は、データ記憶回路に接続されている2本のビット線(BLi、BL+1)のうち1本のビット線(BLi)についてイレーズベリファイリード動作を行なう。このため、ブロック内の全てのワード線WLを選択状態のVSSにする。セルのソース線SRCをVDD、セレクト線SG1をVreadにした後、セルのソース側のセレクト線SG2をVreadにする。セルのドレイン側、つまりビット線には、16個のセルのうち一番浅いセルの−Vthの電位が出力される。
ここで、第1のラッチ回路LAT(A)をハイレベルにし、信号BLC1を1.6Vにすると、Vthが−0.6V以下(消去十分)であると第1のラッチ回路LAT(A)はハイレベルのままである。しかし、Vthが−0.6V以上(消去不十分)であると、第1のラッチ回路LAT(A)はデータがローレベルとなる。したがって、全ての第1のラッチ回路LAT(A)のデータがハイレベルになると、イレーズベリファイOKとなる。
(ステップアップシフトテスト)
図41は、図1に示す制御電圧発生回路14内に設けられた電圧設定回路を示している。制御電圧発生回路14は前述したように、昇圧回路を有しており、この昇圧回路により、プログラム電圧Vpgm、イレーズ電圧Vera、及び電圧Vpass等が発生される。プログラム電圧Vpgmは、前述したように、数段階に分けて昇圧される。
ところで、メモリセルの特性はプロセスの変動等により変化し、昇圧回路が発生する上記各電圧もプロセスの変動等により変化する。このため、チップの特性に応じてプログラム電圧Vpgm、イレーズ電圧Vera、及び電圧Vpassを設定する必要がある。したがって、リダンダンシ置き換え前のテスト時、オートプログラム、及びオートイレーズを行ない、これにより、プログラム開始電圧の設定及びイレーズ開始電圧の設定が行われている。
図41に示す電圧設定回路は、チップの特性に応じて最適なプログラム電圧Vpgm、電圧Vpass、及びイレーズ電圧Veraを設定可能としている。
すなわち、この電圧設定回路は、初期データ記憶用ヒューズ161、カウンタ162により構成されている。前記初期データ記憶用ヒューズ161は電圧Vpgm、電圧Vpass、及び電圧Veraを制御するための初期データがヒューズを用いて設定されている。これらヒューズは、リダンダンシ置き換え前のテスト時、オートプログラム、及びオートイレーズを行ない、この結果により、プログラムされる。前記初期データは、電圧Vpgm、電圧Vpass、及び電圧Veraを発生する際、カウンタ162にプリセットされる。カウンタ162は、例えばプリセットカウンタにより構成されている。このカウンタ162には、信号CT1、CT2が供給されている。このカウンタ162の出力信号は、例えば昇圧回路のリミッタに接続され、このリミッタのリミット値を変化させる。
前記信号CT1は、例えば1回のプログラム又はイレーズ動作が終了し、ベリファイがNGの場合に供給される。カウンタ162は、この信号CT1によりインクリメントされる。このため、カウンタ162の出力信号に応じて、昇圧回路から1ステップ高い電圧を出力するようにリミッタを制御する。
また、前記信号CT2は、本実施形態における特徴を示すものであり、テストモード時、初期データ記憶用ヒューズ161からデータが読み出されたプログラム開始電圧及びイレーズ開始電圧を数ステップ分インクリメントさせる。
従来、トリミング後の加速試験は、一律に少し高いプログラム開始電圧及びイレーズ開始電圧を加えていた。しかし、信号CT2を用いることにより、加速試験のため±数ステップさせる機能を持たせることができる。したがって、個々のチップに適した電圧を加えることができる。
また、電圧Vpass、Vpgmを初期データ記憶用ヒューズ161で設定したデータよりも低い電圧にするプログラム非選択での加速試験などでは、カウンタ162をマイナス方向にインクリメントさせなくてはならない。しかし、このマイナス方向にインクリメントできるカウンタは複雑である。このため、信号CT2を用いて、カウンタを1周−数ステップ分インクリメントさせることにより、初期データ記憶用ヒューズ161で設定したデータよりも低い電圧に設定する。このような構成とすることにより、複雑なカウンタを用いることなく容易に所要の値を設定することができる。
上記第1の実施形態によれば、メモリセルアレイ1は、複数のブロックblk0〜blk1023、複数のブロックリダンダンシblkRD0〜blkRD9を有している。各ブロックblk0〜blk1023及び各ブロックリダンダンシblkRD0〜blkRD9には、ブロック選択回路6aが設けられている。各ブロック選択回路6aはヒューズ109を有し、このヒューズ109を切断することにより、任意のブロックリダンダンシblkRD0〜blkRD9をセキュリティのための情報を記憶するROMブロックに設定できる。したがって、確実にセキュリティ情報をROMブロックに設定できる。
しかも、制御部15に設けられたROMブロックの書き込み禁止回路15a、消去禁止回路15bのヒューズ151c、152cを所要に応じて切断することにより、ROMブロックを適宜、書き込み禁止、消去禁止とすることができる。
また、不良ブロックに対応するブロック選択回路6aのヒューズ109を切断することにより、不良ブロックを確実に非選択とすることができる。したがって、プログラム(倍速オートプログラム)、及びイレーズ(倍速オートイレーズ)時にベリファイが最大の回数まで繰り返されることを防止できる。
さらに、上記実施形態は、ECCを使用する場合と、使用しない場合を例えば制御部15に設けられたヒューズにより設定することができる。しかも、ECCをしない場合、ECC用の21ビットをリダンダンシに使用できるようにすることができるため、不良の救済効率を向上できる。
また、リダンダンシ置き換え前のテスト工程において、オートプログラム、及びオートイレーズを行なうと、カラム不良がある場合、この不良カラムのためベリファイがNGとなってしまう。しかし、上記実施形態によれば、カラムリダンダンシの数が規定値以下の場合ベリファイ結果を無視している。このため、リダンダンシ置き換え前のテスト時、オートプログラム、及びオートイレーズを行なうことができ、これにより、プログラム開始電圧の設定及びイレーズ開始電圧の設定をすることが可能になる。
さらに、カウンタ162に信号CT2を供給し、この信号CT2により、初期データ記憶用ヒューズ161で固定したプログラム開始電圧及びイレーズ開始電圧を、加速試験のため±数ステップさせる機能を持たせている。したがって、従来のように、トリミング後の加速試験において、一律に少し高いプログラム開始電圧及びイレーズ開始電圧を加える場合に比べて、個々のチップに適した電圧を加えることができる利点を有している。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。第1の実施形態は、1ページの書き込み動作時に、1ビットのデータを書き込んでいる。これに対して、第2の実施形態では、1ページの書き込み動作時に1ビット、2ページ同時書き込み動作時は2ビットを連続して書き込み可能とし、連続ページを同時に書き込む場合、高速な書き込みを可能としている。
第1の実施形態における、第1ページ、第2ページを別々にプログラムする場合、第1ページのプログラムは1つの閾値を書き込み、第2ページのプログラムは2つの閾値を書き込んでいた。これに対して、第1ページ、第2ページ同時プログラムは、3つの閾値を書き込む。
図42は、第2の実施形態に適用されるデータ記憶回路の構成を示している。ここでは、説明を簡単にするため、データ記憶回路はラッチ回路を3つ有している。(尚、ラッチ回路2つで一度に3つの閾値を書き込むことも可能である。)
図42において、図5と同一部分には同一符号を付し、異なる部分についてのみ説明する。図42に示すデータ記憶回路は、第3のラッチ回路LAT(C)をさらに有している。第3のラッチ回路LAT(C)において、前記ノードNEにはトランジスタ62fの電流通路の一端が接続されている。このトランジスタ62fのゲートには信号BLC3が供給されている。このトランジスタ62fの電流通路の他端には、PチャネルMOSトランジスタ62jを介して端子62iが接続されている。この端子62iには電圧VCCが供給されている。前記トランジスタ62jのゲートには信号PRSTB3が供給されている。
前記トランジスタ62fの電流通路の他端には第3のラッチ回路LAT(C)が接続されている。この第3のラッチ回路LAT(C)は2つのクロックドインバータ回路62k、62lにより構成されている。クロックドインバータ回路62kは信号SEN3、SEN3Bにより制御され、クロックドインバータ回路62lは信号LAT3、LAT3Bにより制御される。この第3のラッチ回路LAT(C)は、メモリセルから読み出されたデータをラッチする。
また、前記ノードNEにはトランジスタ62q、62hが直列接続されている。トランジスタ62qのゲートは前記第3のラッチ回路LAT(C)のノードNFに接続され、トランジスタ62hのゲートには信号VRFY3が供給されている。さらに、トランジスタ62hの電流通路には信号VREGが供給されている。これらトランジスタ62q、62hは第3のラッチ回路LAT(C)にラッチされたデータに応じてビット線の電位を設定する。
上記構成において、動作について説明する。
(第1ページ、第2ページ同時プログラム)
図43は、第1ページ、第2ページ同時プログラムの動作シーケンスを示し、図44、図45は各部の動作を示している。図46はフローチャートを示している。
第1ページ、第2ページ同時プログラム時も、図19と同様に、先ず、データ入力コマンド“80h”に続いて、アドレス、データを入力する。外部より入力されたデータが、書き込みを行なわないことを示すデータ“1”である場合、図42の第1のラッチ回路LAT(A)のノードNCはハイレベルになる。また、外部より入力されたデータが、書き込みを行なうことを示すデータ“0”である場合、ノードNCはローレベルになる。
次に、図44に示すように、第1のラッチ回路LAT(A)にラッチされたデータを、第2のラッチ回路LAT(B)に移動する。このため、前記倍速プログラムと同様に、コマンド“12h”を入力する。このコマンドも1.5μsと短い。この時、第1のラッチ回路LAT(A)の内容を第2のラッチ回路LAT(B)に転送する。この後、再度、コマンド“80h”、アドレス、データを入力する。ここでのアドレスは、先に入力したアドレスの隣のページアドレス(A9のみ異なる)である。このデータは第1のラッチ回路LAT(A)にラッチされる。この後、オートプログラム実行コマンド“10h”を入力すると、オートプログラムが開始される。
メモリセルのデータが状態“1”になったかのベリファイでは、状態“2”と“3”を書き込むメモリセルもOKとなってしまう。このため、これらを強制的にNGにする。このため、状態“2”、“3”を書き込むメモリセルに対応する第2のラッチ回路(B)をデータ“1”とする。メモリセルのデータが状態“2”になったかのベリファイでは、状態“3”を書き込むメモリセルもOKとなってしまう。このため、これらを強制的にNGとするように、状態“3”に書き込むメモリセルに対して第3のラッチ回路(C)をデータ“1”とする。
すなわち、先ず、第1のラッチ回路(A)、第2のラッチ回路(B)にラッチされているデータの一方又は両方が書き込みを示すデータ“0”の時、第1のラッチ回路(A)を書き込み状態とする。
これらの操作を行うため、図45(a)に示すように、第2のラッチ回路LAT(B)、第3のラッチ回路LAT(C)のデータを入れ替える。この結果、状態“3”への書き込みは第2のラッチ回路LAT(B)がハイレベル、状態“2”、“3”への書き込みは第3のラッチ回路LAT(C)がハイレベルとなる(ST41)。
この後、プログラム動作を行なう。このプログラム動作は、図23に示すシーケンスが用いられ、第1ページ、第2ページ別々に行なうプログラムの場合と全く同じである(ST42)。
図45(b)(c)(d)はベリファイ動作を示している。
図45(b)に示すメモリセルのデータが状態“1”になったかどうかを判別するベリファイでは、状態“2”と“3”を書き込むメモリセルもOKとなってしまう。しかし、前の操作により、状態“2”と“3”を書き込む場合、第3のラッチ回路LAT(C)がハイレベルとなっている。このため、強制的にビット線をローレベルにしてNGとする(ST43)。
また、図45(c)に示すメモリセルのデータが“2”になったかどうかを判別するベリファイでは、状態“3”を書き込むメモリセルもOKとなってしまう。しかし、前の操作により、状態“3”を書き込む場合、第2のラッチ回路LAT(B)がハイレベルとなっている。このため、強制的にビット線をローレベルにしてNGにする(ST44)。
さらに、図45(d)に示すメモリセルのデータが“3”になったかどうかを判別するベリファイにおいて、OKになるのは状態“3”を書き込み場合のみである(ST45)。
したがって、第1のラッチ回路LAT(A)がローレベルの場合は再び書き込み動作を行なわず、全てのデータ記憶回路の第1のラッチ回路LAT(A)のデータがハイレベルになるまでこのプログラム動作とベリファイ動作を繰り返す(ST48)。
尚、不良ブロックをブロックリダンダンシに置き換える前のテスト工程においては、第1のラッチ回路LAT(A)にラッチされたローレベルデータの数、すなわち、ベリファイフェイルの数を計数し、この計数値が規定値(本例では、カラムリダンダンシが4個のときは4、カラムリダンダンシが8個の時は8)以上の場合、再度プログラムベリファイを繰り返し、規定値以下の場合プログラム動作を終了する(ST46、ST47)。
(第1ページ、第2ページ倍速同時プログラム)
図47は、第1ページ、第2ページ同時プログラムで、かつ倍速プログラムの動作を示している。この場合も上記と同様に、先ず、コマンド“80h”、アドレス、データを入力する。このデータは第1のラッチ回路LAT(A)にラッチされる。次いで、コマンド“12h”を入力し、信号BUSYを出力する。この後、第1のラッチ回路LAT(A)のデータを第2のラッチ回路LAT(B)に転送する。さらに、コマンド“80h”、アドレス(先に入力したアドレスの隣のページアドレス)、データ、コマンド“11h”を入力し、信号BUSYを出力する。この動作をアレイアドレス(A15、A16)を変えて4回行なう。但し、一番最後はコマンド“11h”の代わりにオートプログラム実行“10h”を入力し、実際のプログラムを開始させる。
上記第2の実施形態によれば、第1、第2ページを同時にプログラムしている。このため、プログラム時間を短縮することができる。
さらに、倍速プログラムを行うことにより、一層プログラム時間を短縮することができる。
なお、第1、第2の実施形態において、ブロック選択回路6aはヒューズ109を有し、書き込み禁止回路15a、及び消去禁止回路15bはヒューズ151d、152dを有しているが、ヒューズに限定されるものではなく、例えばEEPOMセル等の不揮発性メモリを使用することも可能である。その他のヒューズに関しても同様である。
その他、本発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。