以下、本発明の実施の形態について、図面を参照して説明する。
本実施形態において、NAND型フラッシュメモリと、ロウ方向に並んだ複数のセル全て、または半数のセルが、それぞれ複数のビット線を通り、それぞれ複数の書き込み、及び読み出し用のラッチ回路に繋がりロウ方向に並んだ全てのセルまたは半数のセルを一括して書き込むため、全てのラッチのデータが書き込み完了であるかのチェック回路がある。リード時に、フラグ用のラッチのみを検知するようにデータをセットしこのチェック回路を介してフラグセルの状態を区別する。
(第1の実施形態)
図2は、不揮発性半導体記憶装置の概略構成を示すものであり、例えば4値(2ビット)を記憶するNANDフラッシュメモリの構成を示している。
メモリセルアレイ1は複数のビット線と複数のワード線と共通ソース線を含み、例えばEEPROMセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ1には、ビット線を制御するためのビット制御回路2とワード線制御回路6が接続されている。
ビット線制御回路2は、後述するように複数のデータ記憶回路及びフラグ用データ記憶回路を含んでいる。このビット線制御回路2は、ビット線を介してメモリセルアレイ1中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ1中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ1中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路2には、カラムデコーダ3、データ入出力バッファ4が接続されている。ビット線制御回路2内のデータ記憶回路はカラムデコーダ3によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ4を介してデータ入出力端子5から外部へ出力される。
また、外部からデータ入出力端子5に入力された書き込みデータは、データ入出力バッファ4を介して、カラムデコーダ3によって選択されたデータ記憶回路に入力される。
ワード線制御回路6は、メモリセルアレイ1に接続されている。このワード線制御回路6は、メモリセルアレイ1中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
メモリセルアレイ1、ビット線制御回路2、カラムデコーダ3、データ入出力バッファ4、及びワード線制御回路6は、制御信号及び制御電圧発生回路7に接続され、この制御信号及び制御電圧発生回路7によって制御される。制御信号及び制御電圧発生回路7は、制御信号入力端子8に接続され、外部から制御信号入力端子8を介して入力される制御信号によって、データの書き込み、読み出し、消去などに必要な信号及び電圧を発生する。
前記ビット線制御回路2、カラムデコーダ3、ワード線制御回路6、制御信号及び制御電圧発生回路7は書き込み回路、及び読み出し回路を構成している。
図3は、図2に示すメモリセルアレイ1及びビット線制御回路2の構成を示している。メモリセルアレイ1には複数のNANDセルが配置されている。1つのNANDセルは、直列接続された例えば32個のEEPROMからなるメモリセルMCと、選択ゲートS1、S2とにより構成されている。第1の選択ゲートS1はビット線BL0e〜BLne、BLF1e、BLF2e、BL0o〜BLno、BLF1o、BLF2oに接続され、第2の選択ゲートS2はソース線SRCに接続されている。各ロウに配置されたメモリセルの制御ゲートはワード線WL0、WL1、WL2〜WL31に共通接続されている。また、第1の選択ゲートS1はセレクト線SGDに共通接続され、第2の選択ゲートS2はセレクト線SGSに共通接続されている。
メモリセルアレイ1は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のNANDセルにより構成され、このブロック単位でデータが消去される。また、消去動作は、データ記憶回路10、フラグ用データ記憶回路10a、10bに接続されている2本のビット線について同時に行なわれる。
ビット線制御回路2は複数のデータ記憶回路10及びフラグ用データ記憶回路10a、10bを有している。各データ記憶回路10及びフラグ用データ記憶回路10a、10bには、一対のビット線(BL0e、BL0o)、(BL1e、BL1o)…(BLne、BLno)、(BLF1e、BLF1o)、(BLF2e、BLF2o)が接続されている。
また、ビット線の1つ置きに配置され、1つのワード線に接続された複数のメモリセル(破線で囲まれた範囲のメモリセル)は、1セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。1セクタには例えば2ページ分のデータが記憶される。また、各ワード線には、フラグを記憶するためのフラグセルFC1、及びFC2が接続されている。この実施形態の場合、1セクタは2つのフラグセルFC1、及びFC2を含んでいる。
尚、このフラグセルFC1、及びFC2は、1セクタにそれぞれ2つと限定されるものではなく、1セクタに3つ以上のフラグセルを接続してもよい。この場合、後述するように、複数のフラグセルに記憶されたデータの多数決により、フラグセルに記憶されたデータを決定すればよい。
リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路10に接続されている2本のビット線(BL0e,BL0o,BL1e,BL10…BLne,BLno…BLF1e,BLF1o,BLF2e,BLF2o)のうち外部より指定されたアドレス信号に応じて1本のビット線が選択される。さらに、外部アドレスに応じて、1本のワード線が選択され、1セクタ(2ページ分)が選択される。この2ページの切り替えはアドレスによって行われる。
図4(a)(b)はメモリセル及び選択トランジスタの断面図を示している。図4(a)はメモリセルを示している。基板41にはメモリセルのソース、ドレインとしてのn型拡散層42が形成されている。基板41の上にはゲート絶縁膜43を介して浮遊ゲート(FG)44が形成され、この浮遊ゲート44の上には絶縁膜45を介して制御ゲート(CG)46が形成されている。図4(b)は選択ゲートを示している。基板41にはソース、ドレインとしてのn型拡散層47が形成されている。基板41の上にはゲート絶縁膜48を介して制御ゲート49が形成されている。
図5は、メモリセルアレイの1つのNANDセルの断面を示している。この例において、1つのNANDセルは、図4(a)に示す構成のメモリセルMCが32個直列接続されて構成されている。NANDセルのドレイン側、ソース側には、図4(b)に示す構成の第1の選択ゲートS1及び第2の選択ゲートS2が設けられている。
図6は、図3に示すデータ記憶回路10の一例を示す回路図である。フラグ用データ記憶回路10a、10bもデータ記憶回路10と同様の構成とされている。
このデータ記憶回路10は、プライマリデータキャッシュ(PDC)、セコンダリデータキャッシュ(SDC)、ダイナミックデータキャッシュ(DDC)、ダイナミックデータキャッシュQ(DDCQ)、テンポラリデータキャッシュ(TDC)を有している。SDC、PDC、DDCは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、多値データを記憶する際に内部データの操作に使用される。TDCは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、多値データを記憶する際に内部データの操作に使用される。DDCQは、後述するデータの書き込み時において、特定のベリファイレベルより若干低いベリファイレベルに達したかどうかを示すデータを記憶する。
SDCは、ラッチ回路を構成するクロックドインバータ回路61a、61b、及びトランジスタ61c、61dにより構成されている。トランジスタ61cはクロックドインバータ回路61aの入力端と、クロックドインバータ回路61bの入力端の間に接続されている。このトランジスタ61cのゲートには信号EQ2が供給されている。トランジスタ61dはクロックドインバータ回路61bの入力端と接地間に接続されている。このトランジスタ61dのゲートには信号PRSTが供給されている。SDCのノードN2aは、カラム選択トランジスタ61eを介して入出力データ線IOに接続され、ノードN2bは、カラム選択トランジスタ61fを介して入出力データ線IOnに接続される。これらトランジスタ61e、61fのゲートにはカラム選択信号CSLiが供給されている。SDCのノードN2aは、トランジスタ61g、61hを介してPDCのノードN1aに接続されている。トランジスタ61gのゲートには信号BLC2が供給され、トランジスタ61hのゲートには信号BLC1が供給されている。
PDCは、クロックドインバータ回路61i、61j及びトランジスタ61kにより構成されている。トランジスタ61kは、クロックドインバータ回路61iの入力端とクロックドインバータ回路61jの入力端の相互間に接続されている。このトランジスタ61kのゲートには信号EQ1が供給されている。PDCのノードN1bはトランジスタ61lのゲートに接続されている。このトランジスタ61lの電流通路の一端はトランジスタ61mを介して接地されている。このトランジスタ61mのゲートには信号CHK1が供給されている。また、トランジスタ61lの電流通路の他端はトランスファーゲートを構成するトランジスタ61n、61oの電流通路の一端に接続されている。このトランジスタ61nのゲートには信号CHK2nが供給されている。また、トランジスタ61oのゲートは前記トランジスタ61gと61hの接続ノードに接続されている。トランジスタ61n、61oの電流通路の他端には、信号線COMiが接続されている。この信号線COMiは全データ記憶回路10に共通の信号線であり、全データ記憶回路10のベリファイが完了したかどうかを示す信号線である。すなわち、後述するように、ベリファイが完了すると、PDCのノードN1bがローレベルとなる。この状態において、信号CHK1、CHK2nをハイレベルとすると、ベリファイが完了している場合、信号線COMiのレベルがハイレベルとなる。
さらに、前記TDCは、例えばMOSキャパシタ61pにより構成されている。このキャパシタ61pは、前記トランジスタ61g、61hの接続ノードN3と接地間に接続されている。また、接続ノードN3には、トランジスタ61qを介してDDCが接続されている。トランジスタ61qのゲートには、信号REGが供給されている。
DDCは、トランジスタ61r、61sにより構成されている。トランジスタ61rの電流通路の一端には信号VREGが供給され、他端は前記トランジスタ61qの電流通路に接続されている。このトランジスタ61rのゲートはトランジスタ61sを介して前記PDCのノードN1aに接続されている。このトランジスタ61sのゲートには信号DTGが供給されている。
DDCQは、トランジスタ61Qr、61Qsにより構成されている。トランジスタ61Qrの電流通路の一端には信号VREGが供給され、他端は前記トランジスタ61Qqを介して接続ノードN3に接続されている。トランジスタ61Qqのゲートには、信号REGQが供給されている。トランジスタ61Qrのゲートはトランジスタ61Qsを介して前記PDCのノードN1aに接続されている。このトランジスタ61Qsのゲートには信号DTGQが供給されている。
さらに、前記接続ノードN3にはトランジスタ61t、61uの電流通路の一端が接続されている。トランジスタ61uの電流通路の他端には信号VPREが供給され、ゲートにはBLPREが供給されている。前記トランジスタ61tのゲートには信号BLCLAMPが供給されている。このトランジスタ61tの電流通路の他端はトランジスタ61vを介してビット線BLoの一端に接続され、トランジスタ61wを介してビット線BLeの一端に接続されている。ビット線BLoの他端はトランジスタ61xの電流通路の一端に接続されている。このトランジスタ61xのゲートには信号BIASoが供給されている。ビット線BLeの他端はトランジスタ61yの電流通路の一端に接続されている。このトランジスタ61yのゲートには信号BIASeが供給されている。これらトランジスタ61x、61yの電流通路の他端には、信号BLCRLが供給されている。トランジスタ61x、61yは、信号BIASo、BIASeに応じてトランジスタ61v、61wと相補的にオンとされ、非選択のビット線に信号BLCRLの電位を供給する。
上記各信号及び電圧は、図2に示す制御信号及び制御電圧発生回路7により生成され、この制御信号及び制御電圧発生回路7の制御に基づき、以下の動作が制御される。
本メモリは、多値メモリであり、1セルに2ビットのデータを記憶することができる。この2ビットの切り替えはアドレス(第1ページ、第2ページ)によって行なわれる。
図7は、NANDセルに対する書き込み順序を示している。ブロック内において、ソース線に近いメモリセルからページごとに書き込み動作が行なわれる。図7は、説明の便宜上、ワード線を4本としている。
第1番目の書き込みは、メモリセル1の第1ページに1ビットのデータが書きこまれる。
第2番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の第1ページに1ビットのデータが書きこまれる。
第3番目の書き込みは、メモリセル1とビット方向に隣接したメモリセル3の第1ページに1ビットのデータが書きこまれる。
第4番目の書き込みは、メモリセル1と対角に隣接したメモリセル4の第1ページに1ビットのデータが書きこまれる。
第5番目の書き込みは、メモリセル1の第2ページに1ビットのデータが書きこまれる。
第6番目の書き込みは、メモリセル1とワード方向に隣接したメモリセル2の第2ページに1ビットのデータが書きこまれる。
第7番目の書き込みは、メモリセル3とビット方向に隣接したメモリセル5の第1ページに1ビットのデータが書きこまれる。
第8番目の書き込みは、メモリセル3と対角に隣接したメモリセル6の第1ページに1ビットのデータが書きこまれる。
第9番目の書き込みは、メモリセル3の第2ページに1ビットのデータが書きこまれる。
第10番目の書き込みは、メモリセル3とワード方向に隣接したメモリセル4の第2ページに1ビットのデータが書きこまれる。
第11番目の書き込みは、メモリセル5とビット方向に隣接したメモリセル7の第1ページに1ビットのデータが書きこまれる。
第12番目の書き込みは、メモリセル5と対角に隣接したメモリセル8の第1ページに1ビットのデータが書きこまれる。
第13番目の書き込みは、メモリセル5の第2ページに1ビットのデータが書きこまれる。
第14番目の書き込みは、メモリセル5とワード方向に隣接したメモリセル6の第2ページに1ビットのデータが書きこまれる。
第15番目の書き込みは、メモリセル7の第2ページに1ビットのデータが書きこまれる。
第16番目の書き込みは、メモリセル7とワード方向に隣接したメモリセル8の第2ページに1ビットのデータが書きこまれる。
(動作説明)
図8(a)〜(d)は、メモリセルのデータとメモリセルの閾値電圧の関係を示している。消去動作を行なうとメモリセルのデータは“0”となる。図8(a)に示すように、第1ページの書き込みを行なうと、メモリセルのデータはデータ“0”とデータ“2”になる。図8(b)に示すように、第2ページの書き込み前に隣接セルに実際のデータの閾値電圧以下のデータが書き込まれる。すると、このセルに書き込まれたデータにより、データ“2”の閾値電圧の分布が大きくなる。
次いで、図8(c)に示すように、第2ページの書き込みが行なわれ、メモリセルは本来の閾値電圧を有するデータ”0”〜”3”となる。本実施形態において、メモリセルのデータは閾値電圧の低い方から高い方へと定義されている。
フラグセルは、第1ページの書き込みにおいて、書き込まれず、図8(c)(d)に示すように、第2ページの書き込み動作において書き込まれる。
本実施例では、メモリセルのデータは閾値電圧の低いほうから高い方へと、定義されている。
図6乃至図10を参照して、プログラム動作について説明する。尚、本実施形態において、プログラム動作は本質ではなく、プログラム動作は種々変形可能である。
(プログラム及びプログラムベリファイ)
(第1ページプログラム)
図9は、第1ページプログラムのフローチャートを示している。プログラム動作は、先ずアドレスを指定し、図3に示す2ページ(1セクタ)が選択する。本メモリは、この2ページのうち、第1ページ、第2ページの順でしか、プログラム動作できない。したがって、先ず、アドレスにより第1ページを選択する。
このアドレス入力中に図6に示すトランジスタ61dを信号PRSTによってオンさせることにより、全てのSDCのN2aのノードを接地電位Vssにリセットする。(ST11)
次に、書き込みデータを、外部より入力し全てのデータ記憶回路10内のSDCに記憶する(ST12)。このとき、データを書き込む場合、外部よりデータ“0”が入力されるが、SDCのノードN2aは、例えば電源電位Vddとなる。書き込み非選択の場合は、外部よりデータ“1”が入力され、SDCのノードN2aはVssとなる。この後、書き込みコマンドが入力されると、全てのデータ記憶回路10内のSDCのデータがPDCに転送される(ST13)。すなわち、信号BLC1,BLC2が所定の電圧、例えばVdd+Vth(Vdd:例えば3V又は1.8V、しかし、この電圧に限定されるものではない、Vth:NチャネルMOSトランジスタの閾値電圧)とされ、トランジスタ61h、61gがオンとされる。すると、ノードN2aのデータがトランジスタ61g、61hを介してPDCに転送される。このため、外部よりデータ“1”(書き込みを行なわない)が入力された場合、PDCのノードN1aは、ローレベルとなり、データ“0”(書き込みを行なう)が入力された場合、PDCのノードN1aは、ハイレベルとなる。以後、PDCのデータはノードN1aの電位、SDCのデータはノードN2aの電位とする。
(データ反転動作)(ST14)
この後、信号VPRE=Vdd、信号BLPRE=Vdd+Vthとし、ノードN3を一旦Vddにプリチャージする。この後、信号DTG=Vdd+Vthとして、PDCのデータをDDCに転送する。次に、信号REG=Vdd、信号VREG=Vssとする。DDCがハイレベルを記憶している場合、トランジスタ61rがオンするため、ノードN3はローレベルとなる。また、DDCがローレベルを記憶している場合、トランジスタ61rはオフしているため、ノードN3はハイレベルのままとなる。この後、一旦信号SEN1,LAT1をオフとし、信号EQ1をVddとし、ノードN1aとN1bを同電位とする。この後、信号BLC1=Vdd+Vthとし、TDCのデータ(ノードN3の電位)をPDCに移す。この結果、元々PDCにデータ“1”がラッチされていた場合、データ“0”となり、データ“0”がラッチされていた場合、データ“1”となる。
書き込みコマンドが入力されると、制御信号及び制御電圧生成回路7において、プログラム電圧Vpgm、及び中間電位Vpassを発生する図示せぬ昇圧回路が動作する。これらの電位は直ぐには立ち上がらないため、この待ち時間の間に、上記データ反転動作を行う。このため、書き込みスピードは遅くならない。
このように、入力データを反転して入力する理由は、次の通りである。メモリセル内に書かれている1ページのデータをページバッファに読み出し、外部に出力せず他の1ページに書き込む、所謂ページコピーを行う場合、先ず、読み出しを行う。しかし、書き込みを行ったデータ(データ“0”)は、SDCが“1”となり、書き込みを行わなかったデータ(データ“1”)は、SDCが“0”となる。このように、反転データとして入力したデータにより、書き込みを行う場合、SDCが“1”、書き込みを行わない場合、SDCが“0”となるため一致する。このように、SDCにおいて、次に書き込むデータを一致させておくと、読み出したデータの一部のみデータを外部より入力し、書き換えることが容易にできる。したがって、ページコピーをしない場合でも常に、外部より入力されたデータの論理をページバッファ内で反転するようにする。
通常のプログラムコマンドを入力することにより、上記データ反転動作が行なわれる。この後、PDCのデータをDDCQにも転送しておく。
ところで、第1ページのプログラムにおいて、フラグセルにはデータが書き込まれない。このため、フラグ用データ記憶回路10a、10b内のPDCはデータ“1”となる。
(プログラム動作)(ST15)
図6示す信号BLC1、BLCLAMP、BLSo又はBLSeの電位をVdd+Vthとする。すると、トランジスタ61h、61t、61v又は61wがオンとなり、PDCに保持されたデータがビット線に供給される。PDCにデータ“1”(書き込みを行なわない)が記憶されている時、ビット線がVddになり、データ“0”(書き込みを行なう)時、ビット線がVss(接地電位)になる。また、選択されたワード線に接続され、非選択ページのセル(ビット線が非選択であるセル)は書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線にもデータ“1”と同じようにVddを供給する。ここで、選択されているブロックのセレクト線SG1にVddを供給し、選択ワード線に電位Vpgm(20V)、非選択ワード線に電位Vpass(10V)を印加する。すると、ビット線がVssとなっている場合、セルのチャネルがVss、ワード線がVpgmとなるため、書き込みが行なわれる。一方、ビット線がVddになっている場合、セルのチャネルがVssではなく、カップリングによりチャネルがブートされる。このため、ゲートとチャネル間の電位差がVpgm/2程度と小さくなり、書き込みが行われない。
多値メモリは、閾値電圧の分布を狭めるため、本来のベリファイレベル“v’”と、これより低いベリファイレベル“v*’”が設定されている。以後“*”は本来の値より低い電位を表す。ベリファイレベル“v*’”を超え、ベリファイレベル“v’”以下のセルは、ビット線に中間電位(VddとVssの中間の例えば1V)が供給され、書き込みスピードを遅くする方法が用いられる。ここで、信号VREGをVdd、信号REGQを中間電位+Vth(例えば1V+Vth)にすると、ビット線がVssの場合で、DDCQがハイレベルの場合、ビット線が中間電位になり、DDCQがローレベルの場合、ビット線はVssのままとなり、ビット線がVddの場合、Vddのままになる。
書き込みデータ(PDCのデータ)が“0”の時、図8(a)に示すように、メモリセルのデータを“2”にする。書き込みデータが“1”の時、メモリセルのデータは“0”のままである。
(第1ページベリファイ)(S16)
第1ページ書き込みは、図8(a)に示すように、ベリファイレベル“v’”まで書き込みを行う。したがって、ベリファイ動作の第1ステップでは、図8(a)に示すように、本来のベリファイ時のワード線の電位“v’”より低い電位“v*’”を用いてベリファイし、この後、第2ステップにおいて、ワード線の電位を“v’”とする。
先ず、選択されているブロック内の非選択ワード線に読み出し時の電位Vreadを与え、セレクト線SGDをハイレベルにする。図6に示すデータ記憶回路10の信号BLPREに、例えばVdd+Vth、信号BLCLAMPに所定の電圧、例えば1V+Vthを供給し、信号VPREをVddとし、ビット線を1Vにプリチャージする。
次に、セルのソース側のセレクト線SGSをハイレベルにする。閾値電圧が電位“v*’”より高いセルはオフする。このため、ビット線はハイレベルのままである。また、閾値電圧が電位“v*’”より低いセルはオンする。このため、ビット線はVssとなる。
次に、信号BLPREに所定の電圧、例えばVdd+Vthを供給し、信号VPREをVddとすることにより、TDCの接続ノードN3をVddにプリチャージする。この後、信号BLCLAMPを所定の電圧、例えば0.9V+Vthとしてトランジスタ61tをオンさせる。TDCのノードN3は、ビット線がローレベルの場合、ローレベルとなり、ビット線がハイレベルの場合、ハイレベルとなる。
ここで、書き込みを行なう場合、図6のDDCQにローレベルが記憶され、書き込みを行なわない場合、DDCQにハイレベルが記憶されている。このため、信号VREGをVddとし、信号REGQをハイレベルにすると、書き込みを行なわない場合のみTDCのノードN3が強制的にハイレベルとなる。この動作の後、PDCのデータをDDCQに移し、TDCの電位をPDCに転送する。PDCにハイレベル信号がラッチされる場合は、セルに書き込みを行なわない場合と、セルにデータ“2”を書き込んでおり、セルの閾値電圧がベリファイ電位“v*’”に達した場合だけである。また、PDCにローレベル信号がラッチされる場合は、セルの閾値電圧が“v*’”に達しない場合である。
次に、ワード線の電圧を“v*’”から“v’”に上げると、閾値電圧が“v’”より低いセルはオンし、ビット線はVssとなる。
次に、信号BLPREに所定の電圧、例えばVdd+Vthを供給し、信号VPREをVddとすることにより、TDCの接続ノードN3をVddにプリチャージする。この後、信号BLCLAMPを所定の電圧、例えば0.9V+Vthとしてトランジスタ61tをオンさせる。TDCのノードN3は、ビット線がローレベルの場合、ローレベルとなり、ビット線がハイレベルの場合、ハイレベルとなる。
ここで、書き込みを行なう場合、図6のDDCQにローレベルが記憶され、書き込みを行なわない場合、DDCQにハイレベルが記憶されている。このため、信号VREGをVddとし、信号REGQをハイレベルにすると、書き込みを行なわない場合のみTDCのノードN3が強制的にハイレベルとなる。この動作の後、PDCのデータをDDCQに移し、TDCの電位をPDCに転送する。PDCにハイレベル信号がラッチされる場合は、セルに書き込みを行なわない場合と、セルにデータ“2”を書き込んでおり、セルの閾値電圧がベリファイ電位“v’”に達した場合だけである。また、PDCにローレベル信号がラッチされる場合は、セルの閾値電圧が“v’”に達しない場合である。
この結果、DDCQがハイレベルとなるのは、セルの閾値電圧が“v*’”を超えている場合と、書き込み非選択の場合であり、DDCQがローレベルとなるのは、書き込みを行っている場合で、セルの閾値電圧が“v*’”以下の場合である。PDCがハイレベルとなるのは、セルの閾値電圧が“v’”を超えている場合と、書き込み非選択の場合であり、PDCがローレベルとなるのは、書き込みを行っている場合で、セルの閾値電圧が“v’”以下の場合である。
PDCがローレベルの場合、再び書き込み動作を行ない全てのデータ記憶回路10のデータがハイレベルになるまで、このプログラム動作とベリファイ動作を繰り返す(S18−S15)が、PDCがローレベルでDDCQがハイレベルのセル、すなわち閾値電圧が“v*’”以上“v’”以下の場合の書き込みは、ビット線に中間電位を入れて書き込みスピードを抑える。
上記プログラム動作は、ステップS14においてクリアされたプログラム回数カウンタPCの値が、最大プログラム回数より少ない範囲において実行される。
(一括検知)
全てのPDCのノードN1aがハイレベルとなったかどうかは、次のようにして調べる。図6の信号線COMは全てのデータ記憶回路10に共通に接続されている。先ず、この信号線COMをVddにプリチャージする。この後、信号CHK2nをハイレベルとした後、信号CHK1をハイレベルとする。全てのPDCのノードN1aがハイレベルである場合、信号線COMは、Vddのままとなる。しかし、1つでもノードN1aがローレベルのPDCがあると、信号線COMはローレベルとなる。
(隣接セルプログラム)
図7に示すように、メモリセル1の第1ページに1ビットのデータの書き込んだ後、メモリセル1とワード方向に隣接したメモリセル2の第1ページの書き込み、メモリセル1とビット方向に隣接したメモリセル3の第1ページの書き込み、メモリセル1と対角に隣接したメモリセル4の第1ページの書き込みが順次行なわれる。これらの書き込み動作が行なわれると、書き込みデータによっては、浮遊ゲート間容量によって、メモリセル1の閾値電圧が上昇する。このため、メモリセル1のデータ“0”とデータ“2”の閾値電圧分布は、図8(b)に示すように、電位が高いほうに広がる。
この後、図7に示す第5番目の書き込みにおいて、メモリセル1の第2ページに1ビットのデータが書き込まれる。
(第2ページプログラム)
図10は、第2ページプログラムの一例を示すフローチャートである。第2ページプログラムも、先ずアドレスに応じて、図3に示す2ページが選択される。これと同時にページバッファとしてのSDCがリセットされる。(S21)
次に、書き込みデータを外部より入力し全てのデータ記憶回路内のSDCに記憶する(S22)。外部よりデータ“1”(書き込みを行なわない)が入力されると、データ記憶回路10のSDCのノードN2aは、ローレベルになり、外部よりデータ“0”(書き込みを行なう)が入力されるとハイレベルとなる。
(内部データリード)(S23)
先ず、セルへデータを書き込む前に、メモリセルの第1ページのデータが“0”であるか、“2”であるかを判断する必要がある。このため、メモリセルのデータを読み出す内部リード動作を行なう。内部データリードは、リード動作と全く同じである。通常メモリセルのデータが“0”であるか“2”であるかの判断において、選択ワード線には、リード時の電位“b”を与える。しかし、第1ページのプログラム動作において、データ“2”は、通常より低い“v’”までしか書き込んでいない。このため、メモリセルの閾値電圧は電位“b”より低い場合もある。したがって、内部データリードでは、ワード線に“a”の電位を供給して読み出し動作をする。
内部データリード後、第1ページの書き込みにおいて、データが書き込まれなかった場合、PDCのデータはローレベル(“0”)、書き込まれた場合、ハイレベル(“1”)となる。
(データキャッシュの設定 1回目)(S24)
この後、データキャッシュを操作することにより、書き込み後のメモリセルのデータに対応して、SDC,DDC,TDCのデータを次のように設定する。
書き込み後のメモリセルのデータが“0”の場合、
SDC=1,DDC=1,DDCQ=1,PDC=1、
書き込み後のメモリセルのデータが“1”の場合、
SDC=1,DDC=0,DDCQ=0,PDC=0、
書き込み後のメモリセルのデータが“2”の場合、
SDC=0,DDC=1,DDCQ=0,PDC=0、
書き込み後のメモリセルのデータが“3”の場合、
SDC=0,DDC=0,DDCQ=0,PDC=0。
データキャッシュの操作は、本実施形態の本質ではないため、具体的な説明を省略する。
このデータキャッシュの設定1の途中、又は、内部リードの途中において、フラグセルのデータもロードされる。さらに、プログラム回数カウンタPCがクリアされる。
第1フラグセルFC1は、メモリセルのデータ“1”となり、第2フラグセルFC2は、メモリセルのデータ“2”と書き込まれる。このため、各メモリセル及びフラグセルに接続されるデータキャッシュも、書き込み後のメモリセルのデータに対応するようにセットされる。
(第1ステップ)(S25)
次いで、メモリセルにデータが書き込まれる。先ず、信号BLC1をVsg(Vdd+Vth、例えば2.5V+Vth)とすると、PDCがデータ“0”の場合、ビット線がVssとなり、データ“1”の場合、ビット線はVddになる。次に、信号BLC1をVssとした後、信号VREGをVdd、信号REGQを中間電位+Vth(1V+Vth)とすると、ビット線がVssであった場合、中間電位(1V)となる。
ここで、選択ワード線をVpgm、非選択ワード線をVpassとすると、ビット線がVddの場合、書き込みが行なわれない。また、ビット線がVssの場合、書き込みが起こり、ビット線が中間電位(1V)の場合、少しだけ書き込まれる。
(第2ステップベリファイレベル“a”でのベリファイ)(S26,S27)
上記プログラム後、ワード線にベリファイ電圧“a*’”、“a’”を順次設定して書き込みベリファイが行なわれる。ベリファイ手順は第1ページと同様であるが、データ“2”,“3”を書き込んでいるセルもこのベリファイをパスしてしまう。したがって、信号VPREをハイレベル、信号VREGをハイレベルとして、TDCをVddに充電する替わりに、SDCをハイレベルとして、データ“1”に書き込んでいるメモリセルのみTDCをVddに充電する。この操作により、メモリセルのデータ“2”,“3”への書き込みセルは、このベリファイでパスしなくなる。
(第2ステップベリファイレベル“b”でのベリファイ)(S28、S29)
この後、ワード線にベリファイ電圧“b*’”、“b’”を順次設定して書き込みベリファイが行なわれる。ベリファイ手順は第1ページと同様であるが、データ“3”へ書き込んでいるメモリセルもこのベリファイでパスしてしまう。したがって、信号VPREをハイレベル、信号VREGをハイレベルとして、TDCをVddに充電する替わりに、信号REGをハイレベルとし、データ“2”に書き込んでいるメモリセルのみ、TDCをVddに充電する。この操作により、データ“3”へ書き込んでいるメモリセルは、このベリファイでパスしなくなる。
(第2ステップベリファイレベル“c”でのベリファイ)(S30,S31)
この後、ワード線にベリファイ電圧“c*’”、“c’”が順次設定され、書き込みベリファイが行なわれる。ベリファイ手順は第1ページと同様である。
第2ページ書き込み第2ステップ後のデータキャッシュの内容は次のようになる。
書き込み後のメモリセルのデータが“0”の場合、
SDC=1,DDC=1,DDCQ=0/1,PDC=1、
書き込み後のメモリセルのデータが“1”の場合、
SDC=1,DDC=0,DDCQ=0/1,PDC=1、
書き込み後のメモリセルのデータが“2”の場合、
SDC=0,DDC=1,DDCQ=0/1,PDC=1、
書き込み後のメモリセルのデータが“3”の場合、
SDC=0,DDC=0,DDCQ=0/1,PDC=1。
このようにして、全てのPDCのデータが“1”になるまで、プログラムとベリファイ動作が繰り返される。上記ベリファイの途中において、データ“1”への書きこみは、早く終了する。このため、データ“1”へ書き込むセルが無くなるとプログラムベリファイ(a*’,a’)のベリファイは行なわない。また、データ“2”へ書き込むセルが無くなるとプログラムベリファイ(b*’,b’)のベリファイは行なわない。
第1ページの書き込みでは、PDCとDDCQのみを使用し、SDCとDDCは使用していない。第2ページの書き込みでは、データ“1”への書き込みが早く終了する。このため、データ“1”への書き込みが終了した後、PDCとDDCQとDDCのみを使用し、SDCは使用しない。データ“2”への書き込みが終了した後、PDCとDDCQのみ使用し、SDCとDDCは使用していない。したがって、書き込みに使用しないSDC、又はSDCとDDCがある場合、チップ外部をレディ状態として、SDC又はSDCとDDCに次の書き込みデータを入力することも可能である。このように、使用していないSDC又はSDCとDDCをキャッシュとして用いることにより、プログラムすることが可能である。
すなわち、図11(a)に示すように、例えばチップ外部の図示せぬホストからキャッシュを使用するプログラムコマンド15h(hは16進を示す)が発行された後、SDC又はSDCとDDCが使用可能となった場合、チップ外部はレディ状態としてリード起動コマンド30hを受付可能とする。この後、リード起動コマンドが入力された場合、一旦書き込み(プログラム)を中断してリード動作を行い、リード動作の結果を、SDC又はSDCとDDCに保持する。次いで、このリード動作の結果を外部に出力している間に、前の書き込みを続けること(プログラム再開)も可能である。
つまり、図6において、SDCが使用可能となった場合、チップ外部をレディ状態としてリード起動コマンド30hを受付可能とする。この後、リード起動コマンドが入力された場合で、SDCとDDCが使用可能となった場合、一旦書き込み(プログラム)を中断し、PDCのデータをDDCに移す。この後、リード動作を行い、読み出されたデータをPDCに保持する。この後、PDCのデータをSDCに移す。このSDCに保持されたデータを外部に出力している間に、DDCに待避させたデータをPDCに戻し、前の書き込みを続ける。
さらに、図11(b)は、リード動作後、一部のみデータを変更して、プログラムを行うページコピーする場合を示している。この場合、リード動作後、SDCをリセットせずにアドレス入力行なうコマンド85h、及びプログラムコマンド15hを受け、一部のみデータを変更して、プログラムを行う。尚、80hは、ページコピーではない場合のアドレスデータ入力コマンドである。
(リード)
従来のキャッシュリードは、先ず、アドレス入力コマンド00hとアドレスを入力した後、リード起動コマンドである30hを入力することにより、ビジー状態となる。この状態において、セルから読み出されたデータはPDCに保持される。この後、PDCのデータはSDCに転送され、レディ状態になると、SDCのデータが出力可能となる。
次に、キャッシュリードコマンド31hが入力されると、PDCのデータはSDCに転送される。この後、レディ状態になるとSDCのデータが出力可能となる。キャッシュリードコマンド31hは、次に読み出すアドレスを任意に指定することも、内部で自動的に次のページにインクリメントすることも、前のページにディクリメンとすることもでき、SDCのデータを出力している間に、次の読み出しページのデータをセルからPDCに読み出す。この動作を繰り返すことにより、データを高速に読み出すことができる。
しかし、第1ページのキャッシュリードにおいて、コマンド31hに応じて、フラグセルのデータにより読み直しをする場合、コマンド31hが発行された後、ビジー状態において、次の動作が行なわれる。すなわち、先ず、PDCからSDCへデータが転送され、フラグセルのデータがチェックされ、チェック結果に応じてメモリセルからデータが読み出されてPDCに保持され、PDCからSDCへデータが転送される。このため、ビジー状態が長くなるという問題がある。この理由は、図6に示すように、PDCのデータはSDCに転送した後でなければ、データ記憶回路の外に出力することができないからである。
また、第2ページのキャッシュリードにおいても、コマンド31hが発行された後、フラグセルのデータのチェック結果に応じて、SDCのデータを“1”にセットする場合、コマンド31hが発行された後、ビジー状態が長く続くという問題がある。
そこで、第1の実施形態は、キャッシュコマンド発行後のビジー状態を短縮可能とする。
図12(a)(b)は、第1の実施形態に係るリード時のフローチャートを示し、図13は、リード時にタイミング図を示している。
(第1ページリード)
図12(a)、図13は、第1ページリードのダイアグラムを示している。先ず、アドレスを指定し、図3に示す2ページを選択する。図8(a)(b)(c)に示すように、第2ページの書き込み前と後で、閾値電圧の分布が変わっている。したがって、第2フラグセルのデータが“0”か“1”であるかを判別するため、先ず、ワード線の電位を“b”として読み出し動作を行なう。この読み出し動作中に全てのデータ記憶回路のSDCのノードN2aをデータ“0”にセットした後、フラグセルのSDCのみIO、IOnを介して、データ“1”にセットし、SDCのデータをPDCとDDCにコピーしておく(S41)。セルから読み出されたデータは、PDCに読み出される。フラグセルにデータが書き込まれている場合、フラグセル用のPDCはハイレベル、フラグセルにデータが書き込まれていない場合、フラグセル用のPDCはローレベルとなる。
次に、全てのデータ記憶回路のTDCをVssに設定した後、信号VREGをハイレベル,信号REGをハイレベルとすると、フラグセル用のデータ記憶回路のTDCのみがハイレベルとなり、その他のデータ記憶回路のTDCは、ローレベルとなる。
次に、図6に示す信号線COMiをVddにプリチャージする。この後、信号CHK2nをローレベルとした後、信号CHK1をハイレベルとする。信号線COMiがハイレベルとなるのは、フラグセル用のPDCがローレベルの時、つまり、フラグセルにデータが書き込まれていないときのみである。
一方、信号線COMiがローレベルとなるのは、フラグセル用のPDCがハイレベルの時、つまりフラグセルにデータが書き込まれているときである。フラグセル用のデータ記憶回路以外のTDCは、ローレベルとなっているため、TDCのデータは信号線COMiに反映されない。このようにして、SDCにフラグセルのデータを移さずに、フラグセルにデータが書き込まれているかどうかを判断する。信号線COMiの充電、及び信号線COMiのレベルの判別は、制御信号及び制御電圧発生回路7により行なわれる。
第2フラグセルから読み出されたデータが“0”(メモリセルのデータが“2”)の場合、第2ページの書き込みは行われている。このため、セルの閾値電圧の分布は、図8(c)となっている。このようなセルのデータを判断するには、ワード線の電位を“b”としてリード動作をすればよい。しかし、ワード線電位“b”で読み出し動作をした結果は、既にPDCに読み出されている。したがって、PDCのデータをSDCに転送することにより、外部へ出力することが可能となる(S44,S45)。
一方、フラグセルから読み出されたデータが“1”(メモリセルのデータが“0”)の場合、第2ページの書き込みが行われていない。すなわち、セルの閾値電圧の分布は、図8(a)又は(b)に示すようになっている。これらのメモリのデータを判断するには、ワード線の電位を“a”でリード動作をしなくてはならない。したがって、制御信号及び制御電圧発生回路7は、ワード線の電位を“a”として読み出し動作を行なう(S43)。この後、PDCに読み出されたデータはSDCに転送され(S44)、外部に出力される(S45)。
(第2ページリード)
図12(b)、図13は、第2ページリードのダイアグラムを示している。先ず、アドレスを指定し、図3に示す2ページを選択する。すなわち、図13に示すように、アドレス入力コマンド“00h”、アドレスAddを順次入力した後、リード起動コマンド“30h”が入力される。
図8(a)(b)(c)に示すように、第2ページの書き込み前と後で、閾値電圧の分布が変わっている。第2ページの書き込み後は、図8(c)に示すような分布になっている。
先ず、ワード線の電位を“c”として読み出し動作を行ない(S51)。この後、ワード線電位を“a”として読み出し動作を行なう。セルの閾値電圧がワード線電位“a”より低いか、ワード線電位“c”より高い場合、データは“1”となり、セルの閾値電圧がワード線電位“a”より高くワード線電位“c”より低い場合、データは“0”となる。この読み出し動作中に全てのデータ記憶回路のSDCのノードN2aを“0”にセットした後、フラグセルのSDCのみ入出力データ線IO、IOnを介して、データ“1”にセットし、SDCのデータをPDCとDDCにコピーする(S52)。
セルから読み出されたデータは、PDCに保持される。フラグセルに書き込まれている場合、フラグセル用のPDCはハイレベル、フラグセルに書き込まれていない場合、フラグセル用のPDCはローレベルとなる。次に、全てのデータ記憶回路のTDCをVssに設定した後、信号VREGをハイレベル、信号REGをハイレベルとする。すると、フラグセル用のデータ記憶回路のTDCのみがハイレベル、その他のデータ記憶回路のTDCは、ローレベルとなる。
次に、図6の信号線COMiをVddにプリチャージする。この後、信号CHK2nをローレベルとした後、信号CHK1をハイレベルとする。信号線COMiがハイレベルとなるのは、フラグセル用のPDCがローレベルの時、つまり、フラグセルにデータが書き込まれていないときのみである。
一方、信号線COMiがローレベルとなるのは、フラグセル用のPDCがハイレベルの時、つまり、フラグセルにデータが書き込まれているときである。フラグセル用のデータ記憶回路以外のTDCは、ローレベルとなっているため、TDCのデータは信号線COMiに反映されない。このようにして、SDCにフラグセルのデータを転送することなく、フラグセルにデータが書き込まれているかどうかを判断することができる。
第2ページ書き込み前において、第2ページのデータは“1”が出力されるべきである。しかし、図8(a)又は図8(b)に示す閾値電圧分布になっている。このため、第2ページの書き込み後と同じ読み出し動作をすると出力データが“0”となることもある。したがって、第1フラグセルのデータが“0”か“1”であるかを判別する(S53)。この結果、第1フラグセルのデータが“1”で、第2ページの書き込みが行なわれていない場合、PDCのN1aを“0”に固定セットする(S54)。この後、PDCに読み出されたデータはSDCに転送され(S55)、外部に出力される(S56)。また、第1フラグセルのデータが“0”である場合、PDCに読み出されたデータがSDCに転送され(S55)、外部に出力される(S56)。
(キャシュリード)
図1(a)(b)(c)は、キャシュリードのタイミング図を示し、図14(a)(b)は、キャシュリードのフローチャートを示している。図14(a)(b)において、図12(a)(b)と同一部分には同一符号を付している。
キャッシュリードは、先ず、上記リード動作から開始される。すなわち、図13に示すように、アドレス入力コマンド“00h”、アドレスAddを入力した後、リード起動コマンドである“30h”が入力される。これにより、半導体記憶装置はビジー状態となる。この状態において、上記リード動作と同様にメモリセルからデータが読み出される。メモリセルから読み出されたデータはPDCに保持される。この後、PDCのデータはSDCに転送される。この状態において、レディ状態となりSDCのデータが出力可能となる。
次に、図1(a)に示すように、キャッシュリードコマンド“31h”が入力されると、PDCのデータはSDCに転送され、レディ状態になりデータ出力可能となる。キャッシュリードコマンドは、アドレスも入力することができるため、次に読み出すアドレスを指定する。すると、SDCのデータを外部に出力している間に、次のページのデータがセルから読み出され、PDCに保持されるとともに、フラグセルのデータが判断される。
すなわち、図1(b)、図14(a)に示す第1ページ読み出し動作の場合、キャッシュリードコマンド“31h”が入力されると、PDCのデータはSDCに転送され(S44)、データ出力可能となる(S45)。SDCのデータを外部に出力している間に、次のページのデータがセルから読み出され、PDCに保持されるとともに、第2フラグセルのデータが判断される(S41,S42)。第2フラグセルのデータが“1”の場合、ワード線の電位を“a”として読み直し動作を行なう(S43)。この状態において、再度キャッシュリードコマンドが入力されると、PDCのデータがSDCに転送され、上記と同様の動作が繰り返される。
図1(c)、図14(b)に示す第2ページ読み出し動作の場合も、第1ページ読み出し動作と同様に、キャッシュリードコマンドに応じてPDCのデータがSDCに転送され(S55)、データ出力可能となる(S56)。SDCのデータを外部に出力している間に、第2ページのデータの読み出し、第1フラグセルの判別、出力データを“1”に固定する操作が実行される(S51〜S54)。
このように、SDCから外部にデータを出力している間に、次のページのデータの読み出し、及びフラグチェックを繰り返すことにより、高速なキャッシュリード動作を実行することができる。
すなわち、従来において、第1ページのキャッシュリードにおいて、フラグセルのデータによりメモリセルのデータを読み直しする場合、キャッシュリードコマンドを発行後、ビジー状態が長くなる問題があった。しかし、図1(b)に示すように、第1の実施形態の場合、データの読み直しは、SDCから外部にデータを出力している間に実行されるため、ビジー状態に影響を与えない。さらに、図1(c)に示すように、第2ページの読み出しにおいて、出力データを“1”に固定する操作も、SDCから外部にデータを出力している間に実行されるため、ビジー状態に影響を与えない。
図1(a)(b)(c)に示すキャシュリードにおいて、図13に示すビット線放電中に行なっていた、フラグセルのSDCのみを“1”に設定し、その他のSDCを“0”に設定する操作はしていない。この理由は、キャシュリードの前には、必ず1回リード動作が行なわれ、SDCにデータが読み込まれているためである。しかし、図1(a)(b)(c)に示すように、データ出力の時間は、リードやフラグセルのデータの判別より長い。また、DDCはDRAMのように揮発性のキャッシュであるため、データ出力中にDDCのデータが消えてしまう可能性がある。このため、DDCを絶えずリフレッシュする必要がある。
図15(a)(b)(c)は、第1の実施形態に係るキャッシュリードの変形例を示すものである。図15(a)(b)(c)において、レディ状態(データ出力)中に行なうリード動作の前、すなわち、毎回のビジー状態において、フラグセルのSDCのみを“1”に設定し、その他のSDCを“0”に設定する。このデータをPDCを介してDDCに設定する。つまり、先ず、フラグセルのSDCのみを“1”に設定し、その他のSDCを“0”に設定する操作を行なう(*1)。この後、PDCのデータをDDCに転送すると同時に、SDCのデータをPDCに転送する。さらに、DDCのデータをSDCに転送すると同時に、PDCのデータをDDCに転送する(*2)。
この変形例によれば、キャッシュリード時のビジー状態時間は、図1(a)(b)(c)に比べて若干延びるが、DDCを常時リフレッシュする必要がない。したがって、ビジー状態を若干長くすることにより、DDCのデータを確実に保持できる。
(イレーズ)
消去動作は、先ず、アドレスを指定し、図3に示す破線で示すブロックを選択する。消去動作を行なうと、メモリセルのデータは“0”となり、第1ページ、第2ページ、の何れでリードを行なってもデータ“1”が出力される。
上記第1の実施形態によれば、第1、第2フラグセルのデータを、信号線COMiを介して検出し、SDCから外部にデータを出力している間に、第1、第2フラグセルのデータを判別している。したがって、従来のように、PDCのデータをSDCに移した後、検出する必要がないため、高速な読み出し動作が可能である。
しかも、キャッシュリードにおいて、2回目のリード動作以降は、SDCからデータを出力している間に、メモリセルからデータを読み出してPDCに保持し、第1、第2フラグセルのデータを判別し、さらに、この間に、データの読み直し、又は出力データを固定する操作が行なわれる。したがって、ビジー状態の期間は、PDCからSDCへのデータ転送のみが行なわれるため、キャッシュリード動作を高速化することが可能である。
尚、第1の実施形態において、第1フラグセル、第2フラグセルは、それぞれ1つとしたが、これに限定されるものではない。第1フラグセル、第2フラグセルをそれぞれ1つとした場合、第1、第2のフラグセルに記憶されたデータが劣化した場合、第1、第2ページのデータを確実に読み出すことが困難となる。そこで、第1フラグセル、第2フラグセルをそれぞれ複数のセルにより構成し、複数の第1フラグセルのデータ、複数の第2フラグセルのデータの多数決をそれぞれ取る。このような構成とした場合、第1、第2フラグセルのデータの幾つかが劣化した場合においても、第1ページ、第2ページのデータを確実に読み出すことが可能である。
また、第1の実施形態は、信号線COMiを一旦プリチャージし、この信号線COMiが放電するかしないかにより、第1、第2のフラグセルの状態を判別していた。しかし、信号線COMiのノードに例えば演算増幅器(OPamp)を接続し、この演算増幅器により、複数のPDCにおいてオンしているトランジスタの数をモニタすることにより、複数個のフラグセルの多数決を取ることも可能である。
また、第1の実施形態において、第2ページの書き込みにおいて、第1フラグセルをメモリセルのデータ“0”から“1”へ書き込み、第2フラグセルをメモリセルのデータ“0”から“2”へ書き込んだ。しかし、これに限らず、図8(c)に示すように、第2フラグセルの閾値電圧が、メモリセルの閾値電圧“c”より低い場合、第1フラグセルを省略することも可能である。
さらに、第1の実施形態において、第2ページの書き込みにおいて、第1フラグセルをメモリセルのデータ“0”から“1”へ、第2フラグセルをメモリセルのデータ“0”から“2”へ書き込んだ。しかし、本体セルは、メモリセルのデータ“0”から“1”とメモリセルのデータ“2”から“3”の書き込みしかなく、第2フラグセルの書き込みが高速化の妨げとなる場合がある。この場合、第2フラグセルは使用せず、第1フラグセルのみ使用することも可能である。
(第2の実施形態)
図16は、第2の実施形態を示すものである。ビット線に不良が発生した場合、不良ビット線はスペアビット線に置き換えられる。ビット線の置き換えは、例えばバイト単位に行なわれる。この変形例は、ビット線がスペアビット線に置き換えられた場合においても、書き込み完了を検出可能としている。
図16において、ベリファイ検出回路61は、1バイト又は1ワード、例えば8又は16個のデータ記憶回路10に対して1個接続される。すなわち、1バイト又は1ワード分のデータ記憶回路10にそれぞれ信号線COM0〜COMiが接続され、これら信号線COM0〜COMiにベリファイ検出回路61が接続されている。ベリファイ検出回路61は、PチャネルMOSトランジスタ61a、61b、61c、NチャネルMOSトランジスタ61d、61e、61f、キャパシタ61h、61iにより構成されている。
8又は16個のデータ記憶回路10の信号線COMは、トランジスタ61aのゲートに接続されている。このトランジスタ61aのゲートと電源Vddが供給されるノードとの間にトランジスタ61cが接続されている。このトランジスタ61cのゲートには、信号COMHnが供給されている。このトランジスタは、信号COMHnに応じて信号線COMを充電する。さらに、トランジスタ61aのゲートと接地間にキャパシタ61hが接続されている。トランジスタ61aの電流通路の一端は電源Vddが供給されるノードに接続され、トランジスタ61aの電流通路の他端は、トランジスタ61b、61dを介して接地されている。トランジスタ61bのゲートには、信号RDDが供給され、トランジスタ61dのゲートには信号COLDRSTが供給されている。信号RDDは、通常はローレベルとされ、例えばこのフラグ検出回路61に接続された8個又は16個のデータ記憶回路10に接続されたビット線の不良により、8個又は16個のデータ記憶回路10を含みビット線がスペアビット線に置き換えられた場合、及び使用しないスペアをハイレベルとする。このため、この信号RDDがハイレベルの場合、このフラグ検出回路61は、動作が停止される。
トランジスタ61b、61dの接続ノードはトランジスタ61eのゲート接続されている。トランジスタ61eのゲートと接地間には、キャパシタ61iが接続されている。トランジスタ61eの電流通路の一端は、全てのデータ記憶回路10に共通の信号線LSENに接続され、電流通路の他端は、トランジスタ61fを介して接地されている。トランジスタ61fのゲートには信号SDENが供給されている。信号COLDRSTはリセット信号であり、信号SDENは、ベリファイ検出回路61を活性化させるイネーブル信号である。
上記構成において、先ず、信号COLDRSTがハイレベルとされ、トランジスタ61dがオンとされて接続ノードNCOMが接地電位にリセットされる。信号COLDRSTがローレベルとなると、信号SDENがハイレベルとされ、トランジスタ61fがオンとされる。また、信号線LSENはハイレベルに充電されている。
この後、フラグセルのデータが読み出された状態において、8個又は16個のデータ記憶回路10のうち、1つの信号線COMでもローレベルの場合、トランジスタ61aはオンする。ビット線がスペアビット線に置き換えられていない場合、信号RDDがローレベルとされている。このため、トランジスタ61bはオンしており、トランジスタ61aがオンすると、トランジスタ61eがオンする。したがって、信号線LSENの電荷は、トランジスタ61e、61fを介して放電され、ローレベルとなる。
一方、全ての信号線COMがハイレベルとなっている場合、トランジスタ61aは、オフ状態のままであり、信号線LSENはハイレベルを保持する。このため、書き込み完了を検出することができる。
上記第2の実施形態によれば、信号線COMの1バイト又は1ワード毎にベリファイ検出回路61を設け、これらベリファイ検出回路61の出力端に共通に信号線LSENを接続し、ベリファイ検出回路61により、信号線COMのレベルを検出し、信号線LSENのレベルを制御している。さらに、ベリファイ検出回路61は、信号RDDにより、対応するビット線がスペアビット線に置き換えられた場合、非動作状態に設定される。したがって、ビット線がスペアビット線に置き換えられた場合においても、書き込み完了を確実に検出することができる。
尚、前述したように、フラグセルを複数個設けた場合において、図6に示す信号CHK1をバイト又はワード内の0〜7、又は0〜15毎に別の信号とし、1つずつ選択することにより、複数のフラグセルの1つずつを選択する。この状態において、例えばハイレベルとなっているフラグセルの数を数えることにより、フラグセルのデータを多数決で判断することができる。
その他、本発明の要旨を変えない範囲において、種々変形実施可能なことは勿論である。