(57)【要約】【課題】検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することを目的とする。【解決手段】ユーザモードにおいて書き込みが可能であり冗長セルアレイ領域１０６の冗長情報を記憶する冗長情報記憶領域１０８を設けたことにより、ユーザモードでの書き換えが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、冗長情報記憶領域１０８に新たな冗長情報の書き込みを行うことができる。このことにより、検査時に使用されなかった冗長セルアレイ領域１０６を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。【選択図】　　　図１
2004039179.tif 000002
【特許請求の範囲】
【請求項１】
通常セルアレイ領域と冗長セルアレイ領域を備え、通常セルアレイ領域に検査不良が生じた場合に書き込み不可能な第１の冗長情報記憶領域に格納された第１の冗長情報に対応して検査不良である通常セルアレイ領域と冗長セルアレイ領域を冗長置換する不揮発性半導体記憶装置であって、
書き込み可能な第２の冗長情報記憶領域
を有し、通常動作中に通常セルアレイ領域に不良が生じた場合、前記第２の冗長情報記憶領域に第２の冗長情報を格納し、前記第２の冗長情報に対応して検査不良である通常セルアレイ領域と冗長セルアレイ領域を冗長置換することを特徴とする不揮発性半導体記憶装置。
【請求項２】
前記不揮発性半導体記憶装置に内蔵され、前記通常セルアレイ領域と前記冗長セルアレイ領域のデータの書き換えを行う書き換え装置であって、
書き込みおよび消去の回数を測定して記憶する回数カウンターと、
データの書き込み、消去および読み出しにおけるフェイル情報を記憶するフェイル情報記憶領域を有し、前記フェイル情報に対応して前記通常セルアレイ領域と前記冗長セルアレイ領域のデータの書き換えを行う書き換え装置
を内蔵することを特徴とする請求項１記載の不揮発性半導体記憶装置。
【請求項３】
不揮発性半導体記憶装置の書き込みを行うに際し、
任意のブロックに対し最大書き込み回数まで書き込みを行い書き込みベリファイを行う工程と、
前記書き込みベリファイのフェイル情報を記憶する工程と、
全てのブロックに対して前記書き込み、前記書き込みベリファイおよび前記フェイル情報の記憶を行った後でフェイルブロックの有無を判定する工程と、
フェイルブロックがないと処理を終了し、フェイルブロックがある場合には冗長情報を読み出して冗長置換の可否を判定する工程と、
冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、
全てのブロックのデータを消去する工程と、
全てのブロックにデータを書き込む工程と
を有することを特徴とする不揮発性半導体記憶装置の冗長置換方法。
【請求項４】
不揮発性半導体記憶装置の書き込みを行うに際し、
任意のブロックに対し最大書き込み回数まで書き込みを行い書き込みベリファイを行う工程と、
前記書き込みベリファイがフェイルすると冗長情報を読み出して冗長置換の可否を判定する工程と、
冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、
フェイルしたブロックから最後のブロックまで再びデータを書き込む工程と
を有することを特徴とする不揮発性半導体記憶装置の冗長置換方法。
【請求項５】
不揮発性半導体記憶装置の消去を行うに際し、
任意のブロックに対し最大消去回数まで消去を行い消去ベリファイを行う工程と、
前記消去ベリファイのフェイル情報を記憶する工程と、
全てのブロックに対して前記消去、前記消去ベリファイおよび前記フェイル情報の記憶を行った後でフェイルブロックの有無を判定する工程と、
フェイルブロックがないと処理を終了し、フェイルブロックがある場合には冗長情報を読み出して冗長置換の可否を判定する工程と、
冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、
全てのブロックのデータを書き込む工程と、
全てのブロックにデータを消去する工程と
を有することを特徴とする不揮発性半導体記憶装置の冗長置換方法。
【請求項６】
不揮発性半導体記憶装置の消去を行うに際し、
任意のブロックに対し最大消去回数まで消去を行い消去ベリファイを行う工程と、
前記消去ベリファイがフェイルすると冗長情報を読み出して冗長置換の可否を判定する工程と、
冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、
フェイルしたブロックから最後のブロックまで再びデータを消去する工程と
を有することを特徴とする不揮発性半導体記憶装置の冗長置換方法。
【請求項７】
不揮発性半導体記憶装置の書き込みおよび消去後の読み出しを行うに際し、
任意のアドレスに対し読み出しを行い期待値データとの一致の確認を行う工程と、
不一致であった場合にフェイル情報を記憶する工程と、
全てのアドレスに対して前記確認および前記フェイル情報の記憶を行った後でフェイルアドレスの有無を判定する工程と、
フェイルアドレスがないと処理を終了し、フェイルアドレスがある場合には冗長情報を読み出して冗長置換の可否を判定する工程と、
冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、
全てのアドレスのデータを消去して期待値データの書き込みを行う工程と、
全てのアドレスのデータを読み出す工程と
を有することを特徴とする不揮発性半導体記憶装置の冗長置換方法。
【請求項８】
不揮発性半導体記憶装置の書き込みおよび消去後の読み出しを行うに際し、
任意のアドレスに対し読み出しを行い期待値データとの一致の確認を行う工程と、
不一致であった場合に冗長情報を読み出して冗長置換の可否を判定する工程と、
冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、
フェイルしたアドレスから最後のアドレスまで再びデータを読み出す工程と
を有することを特徴とする不揮発性半導体記憶装置の冗長置換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性半導体記憶装置に関し、電気的にデータの書き換えが可能な不揮発性半導体記憶装置における冗長置換に関するものである。
【０００２】
【従来の技術】
不揮発性半導体記憶装置（以下フラッシュＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ　Ｅｒａｓｅａｂｌｅ　ａｎｄ　Ｐｒｏｇｒａｍｍａｂｌｅ　Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）と称す）は、電源を切ってもメモリセルのデータが消えず、また一括消去可能なフラッシュＥＥＰＲＯＭは、ディジタルカメラなどの大容量メモリや携帯電話の番号格納などに使用され市場も拡大している。
【０００３】
以下、図８，図９，図１０，図１１，図１２を用いて従来のフラッシュＥＥＰＲＯＭの構成と動作について説明する。
図１２は代表的なフラッシュＥＥＰＲＯＭに使われているメモリセルの断面構造図である。また、図８は従来のフラッシュＥＥＰＲＯＭの構成を示すブロック図，図９は従来のフラッシュＥＥＰＲＯＭの書き換え装置の書き込み方法を示すフローチャート図，図１０は従来のフラッシュＥＥＰＲＯＭの書き換え装置の消去方法を示すフローチャート図，図１１は従来のフラッシュＥＥＰＲＯＭの書き換え装置の読み出し方法を示すフローチャート図である。
【０００４】
図１２において、１２０７はＰ型の半導体基板、１２０５はドレイン領域、１２０６はソース領域、１２０４はトンネル酸化膜、１２０３は浮遊ゲート、１２０２は絶縁膜、１２０１は制御ゲートである。
【０００５】
データの書き込みは、制御ゲート１２０１に約１０Ｖ、ドレイン領域１２０５に５Ｖ、ソース領域１２０６に０Ｖをそれぞれ印加する。これにより、ソース領域１２０６からドレイン領域１２０５に向かう電子の一部がドレイン領域１２０５近傍の高電界によってホットとなり、浮遊ゲート１２０３に注入される。
【０００６】
一方、データの消去は、制御ゲート１２０１に０Ｖを印加し、ドレイン領域１２０５をフローティングとし、ソース領域１２０６に１２Ｖを印加する。これにより、薄いトンネル酸化膜１２０４を介して、浮遊ゲート１２０３とソース領域１２０６との間に比較的高い電界が印加される。ファウラー・ノルトハイムのトンネル効果により浮遊ゲート１２０３中の電子がソース領域１２０６に放出される。
【０００７】
また、データの読み出しは、制御ゲート１２０１に５Ｖ、ドレイン領域１２０５に１Ｖ、ソース領域１２０６に０Ｖをそれぞれ印加する。これにより、浮遊ゲート１２０３中の電子の有無により、データ”０”または”１”が得られる。
【０００８】
以下、従来のフラッシュＥＥＰＲＯＭの構成について説明する。
図８において、メモリ部分は、制御回路８０１，レジスタ８０２，Ｘデコーダ制御回路８０３，Ｘデコーダ８０４，通常セルアレイ領域８０５，冗長セルアレイ領域８０６，冗長情報記憶領域８０７，昇圧回路８０８，カラムラッチ回路８０９，Ｙデコーダ８１０，Ｙゲートトランジスタ８１１，センスアンプ回路８１２，入出力回路８１３により構成される。また、書き換え装置は、制御回路８１４，回数カウンタ８１５，入出力回路８１６により構成される。
【０００９】
８０５は通常セルアレイ領域であり、図１２におけるような構成をした浮遊ゲート１２０３と制御ゲート１２０１からなるメモリセルが配列されている。通常セルアレイ領域８０５はｍ行、ｎ列のマトリックス状に配置され、通常セルアレイ領域８０５の列線ＢＬにトランジスタ（ブロック分割トランジスタ）を介することで、ｋ個のブロックに分割される。また、ソースはブロックごとに共通に接続され、制御ゲートは行ごとに、ドレインは列ごとに接続される。
【００１０】
８０６は冗長セルアレイ領域であり、通常セルアレイ領域８０５に不良があったときの予備回路である。通常セルアレイ領域８０５と同様の構成で、通常セルアレイ領域８０５と同様に接続される。冗長セルアレイ領域８０６の列線ＢＬは、通常セルアレイ領域８０５の列線ＢＬにトランジスタを介して接続される。
【００１１】
８０７は冗長情報記憶領域であり、ユーザモードでの書き込みは不可能で、主に検査時の冗長情報、トリミングデータを格納するための不揮発性記憶素子である。通常セルアレイ領域８０５と同様の構成で、通常セルアレイ領域８０５と同様に接続される。冗長情報記憶領域８０７の列線ＢＬは、冗長セルアレイ領域８０６の列線ＢＬにトランジスタを介して接続される。
【００１２】
８０８は昇圧回路であり、通常セルアレイ領域８０５、冗長セルアレイ領域８０６、冗長情報記憶領域８０７に接続され、書き込みまたは消去に必要な高電圧を供給する。昇圧回路８０８は、Ｘデコーダー８０４、カラムラッチ回路８０９、Ｙゲートトランジスタ８１１に接続され、それぞれの回路動作に必要な電圧が供給される。
【００１３】
８０９はカラムラッチ回路であり、書き込み動作において、制御回路８０１からの信号により、通常セルアレイ領域８０５に書き込みを行うデータをラッチする。書き込みが完了するとラッチが反転し、通常セルアレイ領域８０５の列線ＢＬには電圧が印加されなくなる。これにより、通常セルアレイ領域８０５の行線ＷＬごとに書き込みを行うことができる。
【００１４】
８１０はＹデコーダーであり、制御回路８０１からの信号により、通常セルアレイ領域８０５のカラムをデコードするために、Ｙゲートトランジスタ８１１のゲートを選択する。
【００１５】
８１１はＹゲートトランジスタであり、通常セルアレイ領域８０５の列線ＢＬはＹゲートトランジスタを介してセンスアンプ回路８１２に接続される。
８１２はセンスアンプ回路であり、Ｙゲートトランジスタ８１１を介した通常セルアレイ領域８０５からの電流を増幅し、データ”０”／”１”の判定をする。判定結果はレジスタ８０２、入出力回路８１３へ出力される。
【００１６】
８１３は入出力回路であり、入力データＤｉｎを制御回路８０１へ入力し、出力データＤｏｕｔを書き換え装置へ出力する。
８０２はレジスタであり、センスアンプ回路８１２から出力されたデータを格納する記憶素子である。レジスタ８０２のデータは、制御回路８０１、Ｘデコーダー制御回路８０３へ出力される。
【００１７】
８０１は制御回路であり、レジスタ８０２から出力されたデータにより、昇圧回路８０８、カラムラッチ回路８０９、Ｙデコーダー８１０の制御を行う。レジスタ８０２のデータの設定を行う。
【００１８】
８０３はＸデコーダー制御回路であり、レジスタ８０２から出力されたデータにより、Ｘデコーダー８０４を制御する。
８０４はＸデコーダーであり、通常セルアレイ領域８０５のロウをデコードする。
【００１９】
８１６は書き換え装置の入出力回路であり、メモリからの出力データＤｏｕｔを回数カウンター８１５へ入力し、メモリへの入力データＤｉｎをメモリへ出力する。
【００２０】
８１５は書き換え装置の回数カウンターであり、書き込みおよび消去の回数記憶用の素子である。入出力回路８１６から出力されたデータを格納し、制御回路８１４へ出力する。
【００２１】
８１４は書き換え装置の制御回路であり、回数カウンター８１５から出力されたデータにより、メモリ制御用の信号を入出力回路８１６へ出力する。
以下、従来のフラッシュＥＥＰＲＯＭの書き込み方法について説明する。
【００２２】
図９において、書き込み動作をスタートすると（９０１）、まず、レジスタへデータを転送する前にレジスタの初期化を行う（９０２）。
次に、ユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送する（９０３）。
【００２３】
次に、ブロックナンバーｋに”０”を代入して、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である（９０４）。
【００２４】
次に、プログラムデータをカラムラッチ回路に入力する（９０５）。
次に、書き込み回数が上限を超えているかいないかの判定を行い、書き込み回数が上限を超えていたときは書き込み動作が不良となったことを示して９０７（Ｆａｉｌ）に進み、書き込み回数が上限を超えていないときは９０８（書き込みベリファイ）に進む（９０６）。
【００２５】
書き込み回数が上限を超えていないときは、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、到達していなければ（ベリファイフェイル）９０９（通常セル領域の書き込み）に進み、到達していれば（ベリファイパス）９１０（ブロックｋ＝ＭＡＸ？）に進む（９０８）。
【００２６】
ベリファイがフェイルした場合は、メモリセルのＶｔが書き込みレベルに到達していないので再度書き込み動作を行う。書き込み動作後は再び９０６（書き込み回数＝ＭＡＸ？）のステップに戻る（９０９）。
【００２７】
ベリファイがパスした場合は、ブロックナンバーｋが上限を超えているかいないかの判定を行い、ブロックナンバーｋが上限を超えていないときは、次のブロックの書き込み動作を行うために９１１（ｋ＝ｋ＋１）に進み、ブロックナンバーｋが上限のときは、すべてのブロックの書き込み動作が終了したため９１２（Ｅｎｄ）に進み処理を終了する（９１０）。
【００２８】
ブロックナンバーｋが上限を超えていないときは、ブロックナンバーｋを１増加し、ブロックナンバーｋを１増加させた後は９０５に戻る（９１１）。
以下、従来のフラッシュＥＥＰＲＯＭの消去方法について説明する。
【００２９】
図１０において、消去動作をスタートすると（１００１）、まず、レジスタへデータを転送する前にレジスタの初期化を行う（１００２）。
次に、検査時のトリミングデータ、ユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送する（１００３）。
【００３０】
次に、ブロックナンバーｋに”０”を代入して、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である（１００４）。
【００３１】
次に、消去回数が上限を超えているかいないかの判定を行い、消去回数が上限のときは消去動作が不良となったことを示して１００６（Ｆａｉｌ）に進んで処理を終了し、消去回数が上限を超えていないときは１００７（消去ベリファイ）のステップに進む（１００５）。
【００３２】
消去回数が上限を超えていないときは、メモリセルのＶｔが消去レベルまで到達したかどうかをセンスアンプ回路で判定し、到達していなければ（ベリファイフェイル）１００８（通常セル領域の消去）に進み、到達していれば（ベリファイパス）１００９（ブロックｋ＝ＭＡＸ？）に進む（１００７）。
【００３３】
ベリファイがフェイルした場合は、メモリセルのＶｔが消去レベルに到達していないので再度消去動作を行う。消去動作後は再び１００５（消去回数＝ＭＡＸ？）に戻る（１００８）。
【００３４】
ベリファイがパスした場合は、ブロックナンバーｋが上限を超えているかいないかの判定を行い、ブロックナンバーｋが上限を超えていないときは、次のブロックの消去動作を行うために１０１０（ｋ＝ｋ＋１）に進み、ブロックナンバーｋが上限を超えていたときは、すべてのブロックの消去動作が終了したため１０１１（Ｅｎｄ）に進み処理を終了する（１００９）。
【００３５】
ブロックナンバーｋが上限を超えていないときは、ブロックナンバーｋを１増加し、ブロックナンバーｋを１増加させた後は１００５（消去回数＝ＭＡＸ？）に戻る（１０１０）。
【００３６】
以下、従来のフラッシュＥＥＰＲＯＭの読み出し方法について説明する。
図１１において、読み出し動作をスタートすると、まず、期待値データの読み出しを行う（１１０２）。
【００３７】
次に、レジスタへデータを転送する前にレジスタの初期化を行う（１１０３）。
次に、検査時のトリミングデータ、ユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送する（１１０４）。
【００３８】
次に、アドレスナンバーＡに”０”を代入し、アドレスナンバーＡの初期化を行う。アドレスナンバーＡは書き換え装置のプログラム上の変数である（１１０５）。
【００３９】
次に、メモリセルのデータの”０”／”１”をセンスアンプ回路で判定して通常セル領域の読み出しを行う（１１０６）。
次に、読み出しにより得られたデータが期待値と一致するかどうかの判定を行い、読み出したデータが期待値と一致しないときは読み出し動作が不良となったことを示して１１０８（Ｆａｉｌ）に進んで処理を終了し、読み出したデータが期待値と一致したときは１１０９（アドレスＡ＝ＭＡＸ？）に進む（１１０７）。
【００４０】
読み出したデータが期待値と一致したときは、アドレスナンバーＡが上限を超えているかいないかの判定を行い、アドレスナンバーＡが上限を超えていないときは次のアドレスの読み出しを行うため１１１０（Ａ＝Ａ＋１）に進み、アドレスナンバーＡが上限のときはすべてのアドレスの読み出し動作が終了したため１１１１（Ｅｎｄ）に進み正常に読み出し動作が終了したことを示す（１１０９）。
【００４１】
アドレスナンバーＡが上限を超えていないときは、アドレスナンバーＡを１増加し、アドレスナンバーＡを１増加させた後は１１０６（通常セルの読み出し）に戻る（Ｓ１１１０）。
【００４２】
【発明が解決しようとする課題】
従来の半導体記憶装置の冗長置換方法は、はじめに、冗長情報記憶領域の検査を行い、トリミングデータなどの書き込みを行う。その後、通常セルアレイ領域と冗長セルアレイ領域の検査を行う。このとき、通常セルアレイ領域に不良があり、かつ冗長セルアレイ領域が良品のときのみ冗長置換を行っている。よって、通常セルアレイ領域に不良がなかった場合、仮に冗長セルアレイ領域が良品であっても、冗長セルアレイ領域は使用されることはない。この冗長置換はプローブ検査で行っており、救済の対象は初期故障である。そのため、偶発故障や磨耗故障は救済することはできないという問題点があった。
【００４３】
本発明の不揮発性半導体記憶装置および不揮発性半導体記憶装置の冗長置換方法は、上記従来技術の問題点を解決するために、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することを目的とする。
【００４４】
【課題を解決するための手段】
本発明の請求項１記載の不揮発性半導体記憶装置は、通常セルアレイ領域と冗長セルアレイ領域を備え、通常セルアレイ領域に検査不良が生じた場合に書き込み不可能な第１の冗長情報記憶領域に格納された第１の冗長情報に対応して検査不良である通常セルアレイ領域と冗長セルアレイ領域を冗長置換する不揮発性半導体記憶装置であって、書き込み可能な第２の冗長情報記憶領域を有し、通常動作中に通常セルアレイ領域に不良が生じた場合、前記第２の冗長情報記憶領域に第２の冗長情報を格納し、前記第２の冗長情報に対応して検査不良である通常セルアレイ領域と冗長セルアレイ領域を冗長置換することを特徴とする。
【００４５】
請求項２記載の不揮発性半導体記憶装置は、請求項１記載の不揮発性半導体記憶装置において、前記不揮発性半導体記憶装置に内蔵され、前記通常セルアレイ領域と前記冗長セルアレイ領域のデータの書き換えを行う書き換え装置であって、書き込みおよび消去の回数を測定して記憶する回数カウンターと、データの書き込み、消去および読み出しにおけるフェイル情報を記憶するフェイル情報記憶領域を有し、前記フェイル情報に対応して前記通常セルアレイ領域と前記冗長セルアレイ領域のデータの書き換えを行う書き換え装置を内蔵することを特徴とする。
【００４６】
請求項３記載の不揮発性半導体記憶装置の冗長置換方法は、不揮発性半導体記憶装置の書き込みを行うに際し、任意のブロックに対し最大書き込み回数まで書き込みを行い書き込みベリファイを行う工程と、前記書き込みベリファイのフェイル情報を記憶する工程と、全てのブロックに対して前記書き込み、前記書き込みベリファイおよび前記フェイル情報の記憶を行った後でフェイルブロックの有無を判定する工程と、フェイルブロックがないと処理を終了し、フェイルブロックがある場合には冗長情報を読み出して冗長置換の可否を判定する工程と、冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、全てのブロックのデータを消去する工程と、全てのブロックにデータを書き込む工程とを有することを特徴とする。
【００４７】
請求項４記載の不揮発性半導体記憶装置の冗長置換方法は、不揮発性半導体記憶装置の書き込みを行うに際し、任意のブロックに対し最大書き込み回数まで書き込みを行い書き込みベリファイを行う工程と、前記書き込みベリファイがフェイルすると冗長情報を読み出して冗長置換の可否を判定する工程と、冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、フェイルしたブロックから最後のブロックまで再びデータを書き込む工程とを有することを特徴とする。
【００４８】
請求項５記載の不揮発性半導体記憶装置の冗長置換方法は、不揮発性半導体記憶装置の消去を行うに際し、任意のブロックに対し最大消去回数まで消去を行い消去ベリファイを行う工程と、前記消去ベリファイのフェイル情報を記憶する工程と、全てのブロックに対して前記消去、前記消去ベリファイおよび前記フェイル情報の記憶を行った後でフェイルブロックの有無を判定する工程と、フェイルブロックがないと処理を終了し、フェイルブロックがある場合には冗長情報を読み出して冗長置換の可否を判定する工程と、冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、全てのブロックのデータを書き込む工程と、全てのブロックにデータを消去する工程とを有することを特徴とする。
【００４９】
請求項６記載の不揮発性半導体記憶装置の冗長置換方法は、不揮発性半導体記憶装置の消去を行うに際し、任意のブロックに対し最大消去回数まで消去を行い消去ベリファイを行う工程と、前記消去ベリファイがフェイルすると冗長情報を読み出して冗長置換の可否を判定する工程と、冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、フェイルしたブロックから最後のブロックまで再びデータを消去する工程とを有することを特徴とする。
【００５０】
請求項７記載の不揮発性半導体記憶装置の冗長置換方法は、不揮発性半導体記憶装置の書き込みおよび消去後の読み出しを行うに際し、任意のアドレスに対し読み出しを行い期待値データとの一致の確認を行う工程と、不一致であった場合にフェイル情報を記憶する工程と、全てのアドレスに対して前記確認および前記フェイル情報の記憶を行った後でフェイルアドレスの有無を判定する工程と、フェイルアドレスがないと処理を終了し、フェイルアドレスがある場合には冗長情報を読み出して冗長置換の可否を判定する工程と、冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、全てのアドレスのデータを消去して期待値データの書き込みを行う工程と、全てのアドレスのデータを読み出す工程とを有することを特徴とする。
【００５１】
請求項８記載の不揮発性半導体記憶装置の冗長置換方法は、不揮発性半導体記憶装置の書き込みおよび消去後の読み出しを行うに際し、任意のアドレスに対し読み出しを行い期待値データとの一致の確認を行う工程と、不一致であった場合に冗長情報を読み出して冗長置換の可否を判定する工程と、冗長置換が不可能な時は動作不良とし、冗長置換が可能な時は冗長情報を書き換える工程と、フェイルしたアドレスから最後のアドレスまで再びデータを読み出す工程とを有することを特徴とする。
【００５２】
以上により、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【００５３】
【発明の実施の形態】
以下、本発明の実施の形態を図を用いて説明する。
図１は本発明のフラッシュＥＥＰＲＯＭの構成を示すブロック図である。
【００５４】
図１において、メモリ部分は、制御回路１０１，レジスタ１０２，Ｘデコーダ制御回路１０３，Ｘデコーダ１０４，通常セルアレイ領域１０５，冗長セルアレイ領域１０６，ユーザー書き込み不可能な冗長情報記憶領域１０７，ユーザー書き込み可能な冗長情報記憶領域１０８，昇圧回路１０９，カラムラッチ回路１１０，Ｙデコーダ１１１，Ｙゲートトランジスタ１１２，センスアンプ回路１１３，入出力回路１１４，追加制御回路１１５，追加レジスタ１１６，追加Ｘデコーダ制御回路１１７により構成される。このフラッシュＥＥＰＲＯＭは、冗長情報記憶領域１０８と、追加制御回路１１５と、追加レジスタ１１６と、追加Ｘデコーダー制御回路１１７とを採用している。その他の回路は図８のメモリのものと同様である。
【００５５】
１０５は通常セルアレイ領域であり、それぞれ図１２の構成をした浮遊ゲートと制御ゲートからなるメモリセルが配列されている。通常セルアレイ領域１０５はｍ行、ｎ列のマトリックス状に配置される。通常セルアレイ領域１０５の列線ＢＬにトランジスタ（ブロック分割トランジスタ）を介することで、ｋ個のブロックに分割される。通常セルアレイ領域１０５のソースはブロックごとに共通に接続される。通常セルアレイ領域１０５の制御ゲートは行ごとに接続される。通常セルアレイ領域１０５のドレインは列ごとに接続される。
【００５６】
１０６は冗長セルアレイ領域であり、通常セルアレイ領域１０５に不良があったときの予備回路である。通常セルアレイ領域１０５と同様の構成で、通常セルアレイ領域１０５と同様に接続される。冗長セルアレイ領域１０６の列線ＢＬは、通常セルアレイ領域１０５の列線ＢＬにトランジスタを介して接続される。
【００５７】
１０７はユーザモードでの書き込みの不可能な冗長情報記憶領域であり、検査時の冗長情報、トリミングデータ、冗長置換後にさらに冗長置換が可能かどうかの情報を格納するための不揮発性記憶素子である。通常セルアレイ領域１０５と同様の構成で、通常セルアレイ領域１０５と同様に接続される。冗長情報記憶領域１０７の列線ＢＬは、冗長セルアレイ領域１０６の列線ＢＬにトランジスタを介して接続される。
【００５８】
１０８はユーザモードでの書き込み可能な冗長情報記憶領域であり、ユーザモードでの書き換え時の冗長情報を格納するための不揮発性記憶素子である。通常セルアレイ領域１０５と同様の構成で、通常セルアレイ領域１０５と同様に接続される。冗長情報記憶領域１０８の列線ＢＬは、冗長情報記憶領域１０７の列線ＢＬにトランジスタを介して接続される。
【００５９】
１０９は昇圧回路であり、通常セルアレイ領域１０５、冗長セルアレイ領域１０６、冗長情報記憶領域１０７、冗長情報記憶領域１０８に接続され、書き込みまたは消去に必要な高電圧を供給する。昇圧回路１０９は、Ｘデコーダー１０４、カラムラッチ回路１１０、Ｙゲートトランジスタ１１２に接続され、それぞれの回路動作に必要な電圧が供給される。
【００６０】
１１０はカラムラッチ回路であり、書き込み動作において、制御回路１０１からの信号により、通常セルアレイ領域１０５に書き込みを行うデータをラッチする。書き込みが完了するとラッチが反転し、通常セルアレイ領域１０５の列線ＢＬには電圧が印加されなくなる。これにより、通常セルアレイ領域１０５の行線ＷＬごとに書き込みを行うことができる。
【００６１】
１１１はＹデコーダーであり、制御回路１０１からの信号により、通常セルアレイ領域１０５のカラムをデコードするために、Ｙゲートトランジスタ１１２のゲートを選択する。
【００６２】
１１２はＹゲートトランジスタであり、通常セルアレイ領域１０５の列線ＢＬはＹゲートトランジスタを介してセンスアンプ回路１１３に接続される。
１１３はセンスアンプ回路であり、Ｙゲートトランジスタ１１２を介した通常セルアレイ領域１０５からの電流を増幅し、データ”０”／”１”の判定をする。判定結果はレジスタ１０２、追加レジスタ１１６、入出力回路１１４へ出力される。
【００６３】
１１４は入出力回路であり、入力データＤｉｎを制御回路１０１へ入力し、出力データＤｏｕｔを外部端子へ出力する。
１０２はレジスタであり、センスアンプ回路１１３から出力されたデータを格納する記憶素子である。レジスタ１０２のデータは、制御回路１０１、Ｘデコーダー制御回路１０３へ出力される。
【００６４】
１１６は追加レジスタであり、センスアンプ回路１１３から出力されたデータを格納する記憶素子である。追加レジスタ１１６のデータは、追加制御回路１１５、追加Ｘデコーダー制御回路１１７へ出力される。
【００６５】
１０１は制御回路であり、レジスタ１０２から出力されたデータにより、昇圧回路１０９、カラムラッチ回路１１０、Ｙデコーダー１１１の制御を行うと共に、レジスタ１０２のデータの設定を行う。
【００６６】
１１５は追加制御回路であり、追加レジスタ１１６から出力されたデータにより、昇圧回路１０９、カラムラッチ回路１１０、Ｙデコーダー１１１の制御を行うと共に、追加レジスタ１１６のデータの設定を行う。
【００６７】
１０３はＸデコーダー制御回路であり、レジスタ１０２から出力されたデータにより、Ｘデコーダー１０４を制御する。
１１７は追加Ｘデコーダー制御回路であり、追加レジスタ１１６から出力されたデータにより、Ｘデコーダー１０４を制御する。
【００６８】
１０４はＸデコーダーであり、通常セルアレイ領域１０５のロウをデコードする。
以上のような構成において、次にその動作を説明する。
【００６９】
電源投入後に、冗長情報記憶領域１０７のデータはレジスタ１０２に格納される。冗長情報記憶領域１０７のデータは、検査時の冗長情報、トリミングデータ、冗長置換後にさらに冗長置換が可能かどうかの情報である。
【００７０】
電源投入後に、冗長情報記憶領域１０８のデータは追加レジスタ１１６に格納される。冗長情報記憶領域１０８のデータは、ユーザモードでの書き換え時の冗長情報である。
【００７１】
Ｘデコーダー制御回路１０３は、制御回路１０１から出力されたアドレス信号とレジスタ１０２のデータに対して、Ｘデコーダー１０４を制御し、通常セルアレイ領域１０５、冗長セルアレイ領域１０６、冗長情報記憶領域１０７のワード線ＷＬを選択する。
【００７２】
追加Ｘデコーダー制御回路１１７は、追加制御回路１１５から出力されたアドレス信号と追加レジスタ１１６のデータに対して、Ｘデコーダー１０４を制御し、冗長情報記憶領域１０８のワード線ＷＬを選択する。
【００７３】
Ｙデコーダー１１１は通常セルアレイ領域１０５、冗長セルアレイ領域１０６、冗長情報記憶領域１０７、冗長情報記憶領域１０８のビット線ＢＬの接続されるＹゲートトランジスタ１１２のゲートを選択する。
【００７４】
昇圧回路１０９は、通常セルアレイ領域１０５、冗長セルアレイ領域１０６、冗長情報記憶領域１０７、冗長情報記憶領域１０８に接続され、書き込みまたは消去に必要な高電圧を供給する。昇圧回路１０９は、Ｘデコーダー１０４、カラムラッチ回路１１０、Ｙゲートトランジスタ１１２に接続され、それぞれの回路動作に必要な電圧を供給する。
【００７５】
これにより、選択されたアドレスごとに、所定の電圧をワード線ＷＬとビット線ＢＬに印加する。
ベリファイ時において、通常セルアレイ領域１０５、冗長セルアレイ領域１０６、冗長情報記憶領域１０７の選択したアドレスに対して、所定の電圧をワード線ＷＬとビット線ＢＬに印加したとき、ビット線ＢＬに流れる電流は、Ｙゲートトランジスタ１１２を介してセンスアンプ回路１１３に入力される。センスアンプ回路１１３は入力された電流を増幅し、データ”０”／”１”の判定を行い、レジスタ１０２に出力する。
【００７６】
ベリファイ時において、冗長情報記憶領域１０８の選択したアドレスに対して、所定の電圧をワード線ＷＬとビット線ＢＬに印加したとき、ビット線ＢＬに流れる電流は、Ｙゲートトランジスタ１１２を介してセンスアンプ回路１１３に入力される。センスアンプ回路１１３は入力された電流を増幅し、データ”０”／”１”の判定を行い、追加レジスタ１１６に出力する。
【００７７】
本発明において、従来の構成と異なるのは、ユーザモードにおいて書き込みが可能であり冗長セルアレイ領域の冗長情報を記憶する冗長情報記憶領域を設けたことである。ユーザモードでの書き換えが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行う。これにより、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【００７８】
また、ユーザモードでの書き込み不可能領域とユーザモードでの書き込み可能領域を分離し、検査時の情報をユーザモードでの書き込み不可能領域に格納することで、機密情報を保護することができる。
【００７９】
図１の書き換え装置は、制御回路１１８，回数カウンタ１１９，フェイル情報記憶領域１２０，入出力回路１２１により構成され、本発明のフラッシュＥＥＰＲＯＭの書き換え装置の実施の形態の構成である。このフラッシュＥＥＰＲＯＭの書き換え装置は、フェイル情報記憶領域１２０を採用している。その他の回路は図８の書き換え装置（制御回路８１４〜入出力回路８１６）のものと同様である。
【００８０】
図１のフラッシュＥＥＰＲＯＭの書き換え装置において、１２１は書き換え装置の入出力回路であり、メモリからの出力データＤｏｕｔを回数カウンター１１９と、フェイル情報記憶領域１２０へ入力し、メモリへの入力データＤｉｎをメモリへ出力する。
【００８１】
１１９は書き換え装置の回数カウンターであり、書き込みおよび消去の回数記憶用の素子である。出力されたデータを入出力回路１２１から入力し、回数カウンター１１９のデータは制御回路１１８へ出力される。
【００８２】
１２０はフェイル情報記憶領域であり、書き込み、消去および読み出しにおけるフェイル情報を格納し、フェイル情報記憶領域１２０のデータは制御回路１１８へ出力される。
【００８３】
１１８は書き換え装置の制御回路であり、回数カウンター１１９から出力されたデータにより、メモリ制御用の信号を入出力回路１２１へ出力する。
以上のような構成の書き換え装置について、次にその動作を説明する。
【００８４】
ユーザモードでの書き込み、消去および読み出しの動作信号は、書き換え装置の制御回路１１８から、書き換え装置の入出力回路１２１を通してメモリの入出力回路１１４へ入力され、制御回路１０１へ入力される。制御回路１０１は入力された信号に対して、接続された回路に動作信号を出力する。
【００８５】
書き込みおよび消去の回数は、メモリの入出力回路１１４から出力され、書き換え装置の入出力回路１２１へ入力され、書き換え装置の回数カウンター１１９に格納される。
【００８６】
書き込み、消去および読み出しにおけるフェイル情報は、メモリの入出力回路１１４から出力され、書き換え装置の入出力回路１２１へ入力され、書き換え装置のフェイル情報記憶領域１２０に格納される。
【００８７】
書き換え装置の回数カウンター１１９と書き換え装置のフェイル情報記憶領域１２０のデータは、書き換え装置の制御回路１１８に入力される。書き換え装置の制御回路１１８は、入力されたデータに対して、次の動作信号を書き換え装置の入出力回路１２１へ出力する。
【００８８】
本発明において、従来の構成と異なるのは、書き換え装置にフェイル情報記憶領域を設けたことである。書き換え装置のフェイル情報記憶領域は、ユーザモードでの書き込み、消去および読み出し時のパス／フェイル情報だけでなく、フェイルアドレスやフェイルブロックの情報を格納することができる。このことにより、書き換え装置は、フェイル情報記憶領域に格納されたデータによって、次の動作信号をメモリへ出力することができる。
図２は、本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第１の書き込み方法を示すフローチャート図である。
【００８９】
図２において、２０１は書き込み動作のスタートステップである。
２０２はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
【００９０】
２０３はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【００９１】
２０４はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【００９２】
２０５はブロックナンバーｋに”０”を代入するステップであり、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である。
【００９３】
２０６はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
２０７は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは、２０８（フェイルブロックの記憶）のステップに進み、書き込み回数が上限を超えていないときは、２０９（書き込みベリファイ）のステップに進む。
【００９４】
２０８はフェイルブロックｋを記憶するステップであり、書き込み動作が不良となったブロックの情報を、書き換え装置のフェイル情報記憶領域に格納し、２１１（ブロックｋ＝ＭＡＸ？）のステップに進む。
【００９５】
２０９は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは２１０（通常セル領域の書き込み）のステップに進み、ベリファイがパスしたときは２１１（ブロックｋ＝ＭＡＸ？）のステップに進む。
【００９６】
２１０は通常セル領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は２０７（書き込み回数＝ＭＡＸ？）のステップに進む。
【００９７】
２１１はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは、次のブロックの書き込み動作を行うために２１２（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときは、すべてのブロックの書き込み動作が終了したため２１３（フェイルブロックなし？）のステップに進む。
【００９８】
２１２はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は２０６（プログラムデータラッチ）のステップに戻る。２１３はフェイルブロックがあるかどうかの判定を行うステップであり、書き換え装置のフェイル情報記憶領域の読み出しを行う。フェイルブロックがないときは、２１４（Ｅｎｄ）のステップに進み、正常に書き込み動作が終了したことを示す。フェイルブロックがあるときは、２１５（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップに進む。
【００９９】
２１５はユーザモードでの書き込み不可能領域の冗長情報の読み出しを行うステップであり、検査時の冗長置換後にさらに冗長置換が可能かどうかの情報の読み出しを行う。
【０１００】
２１６はユーザモードでの書き込み可能領域の冗長情報の読み出しを行うステップであり、ユーザモードでの書き換え時の冗長情報の読み出しを行う。
２１７は冗長置換が可能かどうかの判定を行うステップであり、２１５（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップと２１６（ユーザモードでの書き込み可能な冗長情報の読み出し）のステップで読み出しを行ったデータにより、さらに冗長置換が可能かどうかの判定を行う。冗長置換が不可能のときは、２１８（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。冗長置換が可能のときは、２１９（レジスタのクリア）に進む。
【０１０１】
２１９はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
２２０はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１０２】
２２１はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
２２２は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは２２３（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは２２４（書き込みベリファイ）のステップに進む。
【０１０３】
２２４は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは２２５（ユーザモードでの書き込み可能な冗長情報記憶領域の書き込み）のステップに進み、ベリファイがパスしたときは２２６（レジスタのクリア）のステップに進む。
【０１０４】
２２５はユーザモードでの書き込み可能な冗長情報記憶領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は２２２（書き込み回数＝ＭＡＸ？）のステップに戻る。
【０１０５】
２２６はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
２２７はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１０６】
２２８はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１０７】
２２９はブロックナンバーｋに”０”を代入するステップであり、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である。
【０１０８】
２３０は消去回数が上限を超えているかいないかの判定を行うステップであり、消去回数が上限を超えていたときは２３１（Ｆａｉｌ）のステップに進み、消去動作が不良となったことを示す。消去回数が上限を超えていないときは、２３２（消去ベリファイ）のステップに進む。
【０１０９】
２３２は消去ベリファイのステップであり、メモリセルのＶｔが消去レベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは２３３（通常セル領域の消去）のステップに進み、ベリファイがパスしたときは２３４（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０１１０】
２３３は通常セル領域の消去を行うステップであり、メモリセルのＶｔが消去レベルに到達していないため、再度消去動作を行う。消去動作後は２３０（消去回数＝ＭＡＸ？）のステップに戻る。
【０１１１】
２３４はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは次のブロックの消去動作を行うために２３５（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときはすべてのブロックの消去動作が終了し、再度はじめのブロックから書き込みを行うため、２０２（レジスタのクリア）のステップに戻る。
【０１１２】
２３５はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は２３０（消去回数＝ＭＡＸ？）のステップに戻る。
本発明において、従来の書き込み方法と異なるのは、ユーザモードでの書き換えが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行い、すべてのデータの消去を行った後、再度すべてのデータの書き込みを行うことである。これにより、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【０１１３】
また、書き換え装置のフェイル情報記憶領域に、フェイル情報を格納できるため、冗長置換が可能かどうかの判定を、すべてのブロックの書き込みが終了した後に行うことができる。
【０１１４】
図３は、本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第２の書き込み方法を示すフローチャート図である。
図３において、３０１は書き込み動作のスタートステップである。
【０１１５】
３０２はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
３０３はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１１６】
３０４はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１１７】
３０５はブロックナンバーｋに”０”を代入するステップであり、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である。
【０１１８】
３０６はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
３０７は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは３１３（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップに進み、書き込み回数が上限を超えていないときは３０８（書き込みベリファイ）のステップに進む。
【０１１９】
３０８は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは３０９（通常セル領域の書き込み）のステップに進み、ベリファイがパスしたときは３１０（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０１２０】
３０９は通常セル領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は３０７（書き込み回数＝ＭＡＸ？）のステップに戻る。
【０１２１】
３１０はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは、次のブロックの書き込み動作を行うために３１１（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときは、すべてのブロックの書き込み動作が終了したため３１２（Ｅｎｄ）のステップに進み、正常に書き込み動作が終了したことを示す。
【０１２２】
３１１はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は３０６（プログラムデータラッチ）のステップに戻る。
３１３はユーザモードでの書き込み不可能領域の冗長情報の読み出しを行うステップであり、検査時の冗長置換後にさらに冗長置換が可能かどうかの情報の読み出しを行う。
【０１２３】
３１４はユーザモードでの書き込み可能領域の冗長情報の読み出しを行うステップであり、ユーザモードでの書き換え時の冗長情報の読み出しを行う。
３１５は冗長置換が可能かどうかの判定を行うステップであり、３１３（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップと３１４（ユーザモードでの書き込み可能な冗長情報の読み出し）のステップで読み出しを行ったデータにより、さらに冗長置換が可能かどうかの判定を行う。冗長置換が不可能のときは、３１６（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。冗長置換が可能のときは、３１７（レジスタのクリア）に進む。
【０１２４】
３１７はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
３１８はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１２５】
３１９はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
３２０は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは３２１（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは３２２（書き込みベリファイ）のステップに進む。
【０１２６】
３２２は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは３２３（ユーザモードでの書き込み可能な冗長情報記憶領域の書き込み）のステップに進み、ベリファイがパスしたときは３２４（レジスタのクリア）のステップに進む。
【０１２７】
３２３はユーザモードでの書き込み可能な冗長情報記憶領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は３２０（書き込み回数＝ＭＡＸ？）のステップに戻る。
【０１２８】
３２４はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
３２５はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１２９】
３２６はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１３０】
３２７はブロックナンバーｋにフェイルブロックナンバーｈを代入するステップであり、ブロックナンバーｋは書き換え装置のプログラム上の変数である。フェイルしたブロックナンバーから書き込み動作を再開するため、３０６（プログラムデータラッチ）に戻る。
【０１３１】
本発明において、従来の書き込み方法と異なるのは、ユーザモードでの書き換えが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行い、再度フェイルブロックナンバーからデータの書き込みを行うことである。これにより、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【０１３２】
また、冗長置換が可能かどうかの判定に、すべてのブロックの書き込みの終了という条件がなく、書き込み動作がフェイルとなったブロックで書き込み動作を中断し、冗長置換を行うため、処理時間を短縮することができる。
【０１３３】
図４は、本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第１の消去方法を示すフローチャート図である。
図４において、４０１は消去動作のスタートステップである。
【０１３４】
４０２はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
４０３はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１３５】
４０４はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１３６】
４０５はブロックナンバーｋに”０”を代入するステップであり、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である。
【０１３７】
４０６は消去回数が上限を超えているかいないかの判定を行うステップであり、消去回数が上限を超えていたときは４０７（フェイルブロックｋの記憶）のステップに進み、消去回数が上限を超えていないときは４０８（消去ベリファイ）のステップに進む。
【０１３８】
４０７はフェイルブロックｋを記憶するステップであり、消去動作が不良となったブロックの情報を、書き換え装置のフェイル情報記憶領域に格納し、４１０（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０１３９】
４０８は消去ベリファイのステップであり、メモリセルのＶｔが消去レベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは４０９（通常セル領域の消去）のステップに進み、ベリファイがパスしたときは４１０（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０１４０】
４０９は通常セル領域の消去を行うステップであり、メモリセルのＶｔが消去レベルに到達していないため、再度消去動作を行う。消去動作後は４０６（消去回数＝ＭＡＸ？）のステップに戻る。
【０１４１】
４１０はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは次のブロックの消去動作を行うために４１１（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときはすべてのブロックの消去動作が終了したため４１２（フェイルブロックなし？）のステップに進む。
【０１４２】
４１１はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は４０６（消去ブロック＝ＭＡＸ？）のステップに戻る。４１２はフェイルブロックがあるかどうかの判定を行うステップであり、書き換え装置のフェイル情報記憶領域の読み出しを行う。フェイルブロックがないときは４１３（Ｅｎｄ）のステップに進み、正常に消去動作が終了したことを示す。フェイルブロックがあるときは４１４（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップに進む。
【０１４３】
４１４はユーザモードでの書き込み不可能領域の冗長情報の読み出しを行うステップであり、検査時の冗長置換後にさらに冗長置換が可能かどうかの情報の読み出しを行う。
【０１４４】
４１５はユーザモードでの書き込み可能領域の冗長情報の読み出しを行うステップであり、ユーザモードでの書き換え時の冗長情報の読み出しを行う。
４１６は冗長置換が可能かどうかの判定を行うステップであり、４１４（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップと４１５（ユーザモードでの書き込み可能な冗長情報の読み出し）のステップで読み出しを行ったデータにより、さらに冗長置換が可能かどうかの判定を行う。冗長置換が不可能のときは、４１７（Ｆａｉｌ）のステップに進み、消去動作が不良となったことを示す。冗長置換が可能のときは、４１８（レジスタのクリア）に進む。
【０１４５】
４１８はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
４１９はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１４６】
４２０はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
４２１は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは４２２（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは４２３（書き込みベリファイ）のステップに進む。
【０１４７】
４２３は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは４２４（ユーザモードでの書き込み可能な冗長情報記憶領域の書き込み）のステップに進み、ベリファイがパスしたときは４２５（レジスタのクリア）のステップに進む。
【０１４８】
４２４はユーザモードでの書き込み可能な冗長情報記憶領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は４２１（書き込み回数＝ＭＡＸ？）のステップに戻る。
【０１４９】
４２５はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
４２６はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１５０】
４２７はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１５１】
４２８はブロックナンバーｋに”０”を代入するステップであり、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である。
【０１５２】
４２９はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
４３０は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは４３１（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは４３２（書き込みベリファイ）のステップに進む。
【０１５３】
４３２は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは４３３（通常セル領域の書き込み）のステップに進み、ベリファイがパスしたときは４３４（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０１５４】
４３３は通常セル領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は４３０（書き込み回数＝ＭＡＸ？）のステップに戻る。
【０１５５】
４３４はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは次のブロックの書き込み動作を行うために４３５（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときはすべてのブロックの書き込み動作が終了し、再度はじめのブロックから消去を行うため、４０２（レジスタのクリア）のステップに戻る。
【０１５６】
４３５はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は４２９（プログラムデータラッチ）のステップに戻る。
本発明において、従来の消去方法と異なるのは、ユーザモードでの書き換えが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行い、すべてのデータの書き込みを行った後、再度すべてのデータの消去を行うことである。これにより、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【０１５７】
また、書き換え装置のフェイル情報記憶領域に、フェイル情報を格納できるため、冗長置換が可能かどうかの判定を、すべてのブロックの消去が終了した後に行うことができる。
【０１５８】
図５は、本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第２の消去方法を示すフローチャート図である。
図５において、５０１は消去動作のスタートステップである。
【０１５９】
５０２はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
５０３はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１６０】
５０４はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１６１】
５０５はブロックナンバーｋに”０”を代入するステップであり、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である。
【０１６２】
５０６は消去回数が上限を超えているかいないかの判定を行うステップであり、消去回数が上限を超えていたときは５１２（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップに進み、消去回数が上限を超えていないときは５０７（消去ベリファイ）のステップに進む。
【０１６３】
５０７は消去ベリファイのステップであり、メモリセルのＶｔが消去レベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは５０８（通常セル領域の消去）のステップに進み、ベリファイがパスしたときは５０９（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０１６４】
５０８は通常セル領域の消去を行うステップであり、メモリセルのＶｔが消去レベルに到達していないため、再度消去動作を行う。消去動作後は５０６（消去回数＝ＭＡＸ？）のステップに戻る。
【０１６５】
５０９はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは次のブロックの消去動作を行うために５１０（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときはすべてのブロックの消去動作が終了したため５１１（Ｅｎｄ）のステップに進み、正常に消去動作が終了したことを示す。
【０１６６】
５１０はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は５０６（消去回数＝ＭＡＸ？）のステップに戻る。
５１２はユーザモードでの書き込み不可能領域の冗長情報の読み出しを行うステップであり、検査時の冗長置換後にさらに冗長置換が可能かどうかの情報の読み出しを行う。
【０１６７】
５１３はユーザモードでの書き込み可能領域の冗長情報の読み出しを行うステップであり、ユーザモードでの書き換え時の冗長情報の読み出しを行う。
５１４は冗長置換が可能かどうかの判定を行うステップであり、５１２（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップと５１３（ユーザモードでの書き込み可能な冗長情報の読み出し）のステップで読み出しを行ったデータにより、さらに冗長置換が可能かどうかの判定を行う。冗長置換が不可能のときは５１５（Ｆａｉｌ）のステップに進み、消去動作が不良となったことを示す。冗長置換が可能のときは、５１６（レジスタのクリア）に進む。
【０１６８】
５１６はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
５１７はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１６９】
５１８はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
５１９は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは５２０（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは５２１（書き込みベリファイ）のステップに進む。
【０１７０】
５２１は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは５２２（ユーザモードでの書き込み可能な冗長情報記憶領域の書き込み）のステップに進み、ベリファイがパスしたときは５２３（レジスタのクリア）のステップに進む。
【０１７１】
５２２はユーザモードでの書き込み可能な冗長情報記憶領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は５１９（書き込み回数＝ＭＡＸ？）のステップに進む。
【０１７２】
５２３はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
５２４はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１７３】
５２５はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１７４】
５２６はブロックナンバーｋにフェイルブロックナンバーｈを代入するステップであり、ブロックナンバーｋは書き換え装置のプログラム上の変数である。フェイルしたブロックナンバーから消去動作を再開するため、５０６（消去回数＝ＭＡＸ？）に戻る。
【０１７５】
本発明において、従来の消去方法と異なるのは、ユーザモードでの書き換えが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行い、再度フェイルブロックナンバーからデータの消去を行うことである。これにより、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【０１７６】
また、冗長置換が可能かどうかの判定に、すべてのブロックの消去の終了という条件がなく、消去動作がフェイルとなったブロックで消去動作を中断し、冗長置換を行うため、処理時間を短縮することができる。
【０１７７】
図６は、本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第１の読み出し方法を示すフローチャート図である。
図６において、６０１は読み出しのスタートステップである。
【０１７８】
６０２は期待値データの読み出しを行うステップである。
６０３はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
【０１７９】
６０４はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１８０】
６０５はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１８１】
６０６はアドレスナンバーＡに”０”を代入するステップであり、アドレスナンバーＡの初期化を行う。アドレスナンバーＡは書き換え装置のプログラム上の変数である。
【０１８２】
６０７は通常セル領域の読み出しを行うステップであり、メモリセルのデータの”０”／”１”をセンスアンプ回路で判定する。
６０８は読み出しにより得られたデータが、期待値と一致するかどうかの判定を行うステップであり、読み出したデータが期待値と一致しないときは６０９（フェイルアドレスを記憶）のステップに進み、読み出したデータが期待値と一致したときは６１０（アドレスＡ＝ＭＡＸ？）のステップに進む。
【０１８３】
６０９はフェイルアドレスＡを記憶するステップであり、読み出し動作が不良となったアドレスの情報を、書き換え装置のフェイル情報記憶領域に格納し、６１０（アドレスＡ＝ＭＡＸ？）のステップに進む。
【０１８４】
６１０はアドレスナンバーＡが上限を超えているかいないかの判定を行うステップであり、アドレスナンバーＡが上限を超えていないときは次のアドレスの読み出しを行うため６１１（Ａ＝Ａ＋１）のステップに進み、アドレスナンバーＡが上限を超えていたときはすべてのアドレスの読み出し動作が終了したため６１２（フェイルアドレスなし？）のステップに進む。
【０１８５】
６１１はアドレスナンバーＡを１増加させるステップであり、アドレスナンバーＡを１増加させた後は６０７（通常セルの読み出し）のステップに戻る。
６１２はフェイルアドレスがあるかどうかの判定を行うステップであり、書き換え装置のフェイル情報記憶領域の読み出しを行う。フェイルアドレスがないときは６１３（Ｅｎｄ）のステップに進み、正常に読み出し動作が終了したことを示す。フェイルブロックがあるときは６１４（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップに進む。
【０１８６】
６１４はユーザモードでの書き込み不可能領域の冗長情報の読み出しを行うステップであり、検査時の冗長置換後にさらに冗長置換が可能かどうかの情報の読み出しを行う。
【０１８７】
６１５はユーザモードでの書き込み可能領域の冗長情報の読み出しを行うステップであり、ユーザモードでの書き換え時の冗長情報の読み出しを行う。
６１６は冗長置換が可能かどうかの判定を行うステップであり、６１４（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップと６１５（ユーザモードでの書き込み可能な冗長情報の読み出し）のステップで読み出しを行ったデータにより、さらに冗長置換が可能かどうかの判定を行う。冗長置換が不可能のときは６１７（Ｆａｉｌ）のステップに進み、読み出し動作が不良となったことを示す。冗長置換が可能のときは６１８（レジスタのクリア）に進む。
【０１８８】
６１８はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
６１９はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１８９】
６２０はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
６２１は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは６２２（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは６２３（書き込みベリファイ）のステップに進む。
【０１９０】
６２３は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは６２４（ユーザモードでの書き込み可能な冗長情報記憶領域の書き込み）のステップに進み、ベリファイがパスしたときは６２５（レジスタのクリア）のステップに進む。
【０１９１】
６２４はユーザモードでの書き込み可能な冗長情報記憶領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は６２１（書き込み回数＝ＭＡＸ？）のステップに戻る。
【０１９２】
６２５はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
６２６はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０１９３】
６２７はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０１９４】
６２８はブロックナンバーｋに”０”を代入するステップであり、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である。
【０１９５】
６２９は消去回数が上限を超えているかいないかの判定を行うステップであり、消去回数が上限を超えていたときは６３０（Ｆａｉｌ）のステップに進み、消去動作が不良となったことを示す。消去回数が上限を超えていないときは、６３１（消去ベリファイ）のステップに進む。
【０１９６】
６３１は消去ベリファイのステップであり、メモリセルのＶｔが消去レベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは６３２（通常セル領域の消去）のステップに進み、ベリファイがパスしたときは、６３３（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０１９７】
６３２は通常セル領域の消去を行うステップであり、メモリセルのＶｔが消去レベルに到達していないため、再度消去動作を行う。消去動作後６２９（消去回数＝ＭＡＸ？）のステップに戻る。
【０１９８】
６３３はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは次のブロックの消去動作を行うために６３４（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときはすべてのブロックの消去動作が終了し、はじめのブロックから書き込みを行うため、６３５（レジスタのクリア）のステップに進む。
【０１９９】
６３４はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は６２９（消去回数＝ＭＡＸ？）のステップに進む。
６３５はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
【０２００】
６３６はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０２０１】
６３７はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０２０２】
６３８はブロックナンバーｋに”０”を代入するステップであり、ブロックナンバーｋの初期化を行う。ブロックナンバーｋは書き換え装置のプログラム上の変数である。
【０２０３】
６３９はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
６４０は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは６４１（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは６４２（書き込みベリファイ）のステップに進む。
【０２０４】
６４２は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは６４３（通常セル領域の書き込み）のステップに進み、ベリファイがパスしたときは６４４（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０２０５】
６４３は通常セル領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は６４０（書き込み回数＝ＭＡＸ？）のステップに戻る。
【０２０６】
６４４はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは次のブロックの書き込み動作を行うために６４５（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときはすべてのブロックの書き込み動作が終了し、再度はじめのブロックから読み出しを行うため、６０２（レジスタのクリア）のステップに戻る。
【０２０７】
６４５はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は６３９（プログラムデータラッチ）のステップに戻る。本発明において、従来の読み出し方法と異なるのは、ユーザモードでの書き換え後の読み出しが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行った後、すべてのデータの消去を行い、すべてのデータの書き込みを行った後、再度すべてのデータの読み出しを行うことである。これにより、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【０２０８】
また、書き換え装置のフェイル情報記憶領域に、フェイル情報を格納できるため、冗長置換が可能かどうかの判定を、すべてのブロックの読み出しが終了した後に行うことができる。
【０２０９】
図７は、本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第２の読み出し方法を示すフローチャート図である。
図７において、７０１は読み出しのスタートステップである。
【０２１０】
７０２は期待値データの読み出しを行うステップである。
７０３はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
【０２１１】
７０４はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０２１２】
７０５はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０２１３】
７０６はアドレスナンバーＡに”０”を代入するステップであり、アドレスナンバーＡの初期化を行う。アドレスナンバーＡは書き換え装置のプログラム上の変数である。
【０２１４】
７０７は通常セル領域の読み出しを行うステップであり、メモリセルのデータの”０”／”１”をセンスアンプ回路で判定する。
７０８は読み出しにより得られたデータが、期待値と一致するかどうかの判定を行うステップであり、読み出したデータが期待値と一致しないときは７１１（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップに進み、読み出したデータが期待値と一致したときは７０９（アドレスＡ＝ＭＡＸ？）のステップに進む。
【０２１５】
７０９はアドレスナンバーＡが上限を超えているかいないかの判定を行うステップであり、アドレスナンバーＡが上限を超えていないときは次のアドレスの読み出しを行うため７１０（Ａ＝Ａ＋１）のステップに進み、アドレスナンバーＡが上限を超えていたときはすべてのアドレスの読み出し動作が終了したため７１１（Ｅｎｄ）のステップに進み、正常に読み出し動作が終了したことを示す。
【０２１６】
７１０はアドレスナンバーＡを１増加させるステップであり、アドレスナンバーＡを１増加させた後は７０７（通常セルの読み出し）のステップに戻る。
７１２はユーザモードでの書き込み不可能領域の冗長情報の読み出しを行うステップであり、検査時の冗長置換後にさらに冗長置換が可能かどうかの情報の読み出しを行う。
【０２１７】
７１３はユーザモードでの書き込み可能領域の冗長情報の読み出しを行うステップであり、ユーザモードでの書き換え時の冗長情報の読み出しを行う。
７１４は冗長置換が可能かどうかの判定を行うステップであり、７１２（ユーザモードでの書き込み不可能な冗長情報の読み出し）のステップと７１３（ユーザモードでの書き込み可能な冗長情報の読み出し）のステップで読み出しを行ったデータにより、さらに冗長置換が可能かどうかの判定を行う。冗長置換が不可能のときは、７１５（Ｆａｉｌ）のステップに進み、読み出し動作が不良となったことを示す。冗長置換が可能のときは、７１６（レジスタのクリア）に進む。
【０２１８】
７１６はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
７１７はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０２１９】
７１８はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
７１９は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは７２０（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは７２１（書き込みベリファイ）のステップに進む。
【０２２０】
７２１は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは、７２２（ユーザモードでの書き込み可能な冗長情報記憶領域の書き込み）のステップに進み、ベリファイがパスしたときは、７２３（レジスタのクリア）のステップに進む。
【０２２１】
７２２はユーザモードでの書き込み可能な冗長情報記憶領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は７１９（書き込み回数＝ＭＡＸ？）のステップに進む。
【０２２２】
７２３はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
７２４はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０２２３】
７２５はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０２２４】
７２６はブロックナンバーｋにフェイルブロックナンバーｈを代入するステップであり、ブロックナンバーｋは書き換え装置のプログラム上の変数である。ブロックナンバーｋにフェイルブロックナンバーｈを代入後、フェイルしたブロックナンバー以降のブロックの消去活動を行うために７２７（消去ベリファイ＝ＭＡＸ？）に進む。
【０２２５】
７２７は消去回数が上限を超えているかいないかの判定を行うステップであり、消去回数が上限を超えていたときは７２８（Ｆａｉｌ）のステップに進み、消去動作が不良となったことを示す。消去回数が上限を超えていないときは７２９（消去ベリファイ）のステップに進む。
【０２２６】
７２９は消去ベリファイのステップであり、メモリセルのＶｔが消去レベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは７３０（通常セル領域の消去）のステップに進み、ベリファイがパスしたときは７３１（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０２２７】
７３０は通常セル領域の消去を行うステップであり、メモリセルのＶｔが消去レベルに到達していないため、再度消去動作を行う。消去動作後７２７（消去回数＝ＭＡＸ？）のステップに戻る。
【０２２８】
７３１はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは次のブロックの消去動作を行うために７３２（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときはすべてのブロックの消去動作が終了し、はじめのブロックから書き込みを行うため、７３３（レジスタのクリア）のステップに進む。
【０２２９】
７３２はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は７２７（消去回数＝ＭＡＸ？）のステップに戻る。
７３３はレジスタのクリアを行うステップであり、レジスタへデータを転送する前にレジスタの初期化を行う。
【０２３０】
７３４はユーザモードでの書き込み不可能領域の冗長情報をレジスタへ転送するステップであり、検査時のトリミングデータ、冗長情報をレジスタへ転送する。
【０２３１】
７３５はユーザモードでの書き込み可能領域の冗長情報をレジスタへ転送するステップであり、ユーザモードでの書き換え時の冗長情報をレジスタへ転送する。
【０２３２】
７３６はブロックナンバーｋにフェイルブロックナンバーｈを代入するステップであり、ブロックナンバーｋは書き換え装置のプログラム上の変数である。ブロックナンバーｋにフェイルブロックナンバーｈを代入後、フェイルしたブロックナンバー以降のブロックの書き込み動作を行うために７３７（プログラムデータラッチ）に進む。
【０２３３】
７３７はプログラムデータラッチを行うステップであり、プログラムデータをカラムラッチ回路に入力する。
７３８は書き込み回数が上限を超えているかいないかの判定を行うステップであり、書き込み回数が上限を超えていたときは７３９（Ｆａｉｌ）のステップに進み、書き込み動作が不良となったことを示す。書き込み回数が上限を超えていないときは７４０（書き込みベリファイ）のステップに進む。
【０２３４】
７４０は書き込みベリファイのステップであり、メモリセルのＶｔが書き込みレベルまで到達したかどうかをセンスアンプ回路で判定し、ベリファイがフェイルしたときは７４１（通常セル領域の書き込み）のステップに進み、ベリファイがパスしたときは７４２（ブロックｋ＝ＭＡＸ？）のステップに進む。
【０２３５】
７４１は通常セル領域の書き込みを行うステップであり、メモリセルのＶｔが書き込みレベルに到達していないため、再度書き込み動作を行う。書き込み動作後は７３８（書き込み回数＝ＭＡＸ？）のステップに戻る。
【０２３６】
７４２はブロックナンバーｋが上限を超えているかいないかの判定を行うステップであり、ブロックナンバーｋが上限を超えていないときは次のブロックの書き込み動作を行うために７４３（ｋ＝ｋ＋１）のステップに進み、ブロックナンバーｋが上限を超えていたときはすべてのブロックの書き込み動作が終了し、再度はじめのブロックから読み出しを行うため、７０２（レジスタのクリア）のステップに戻る。
【０２３７】
７４３はブロックナンバーｋを１増加させるステップであり、ブロックナンバーｋを１増加させた後は７３７（プログラムデータラッチ）のステップに戻る。
本発明において、従来の読み出し方法と異なるのは、ユーザモードでの書き換え後の読み出しが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行った後、すべてのデータの消去を行い、すべてのデータの書き込みを行った後、再度すべてのデータの読み出しを行うことである。これにより、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【０２３８】
また、冗長置換が可能かどうかの判定に、すべてのアドレスの読み出しの終了という条件がなく、読み出し動作がフェイルとなったアドレスで読み出し動作を中断し、冗長置換を行うため、処理時間を短縮することができる。
【０２３９】
本発明では書き換え装置を不揮発性半導体記憶装置に内蔵した構成として説明したが、書き換え装置とメモリ部をそれぞれ独立した構成とすることもできる。
【０２４０】
【発明の効果】
以上述べたように、本発明の不揮発性半導体記憶装置によれば、ユーザモードにおいて書き込みが可能であり冗長セルアレイ領域の冗長情報を記憶する冗長情報記憶領域を設けたことにより、ユーザモードでの書き換えが不良となったとき、検査時の冗長置換後にさらに冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行うことができる。このことにより、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【０２４１】
さらに、本発明の不揮発性半導体記憶装置の冗長置換方法によると、データの書き込み、消去および読み出しの不良時に、全てのブロックの処理終了後、冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行うことができるので、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【０２４２】
また、本発明の不揮発性半導体記憶装置の冗長置換方法によると、データの書き込み、消去および読み出しの不良時に、フェイルする毎にそのブロックについて、冗長置換が可能かどうかの冗長情報の読み出しを行い、冗長置換可能であれば、ユーザモードでの書き込み可能な冗長情報記憶領域に新たな冗長情報の書き込みを行うことができるので、検査時に使用されなかった冗長セルアレイ領域を有効に活用でき、検査において発生する初期故障だけでなく、ユーザにおいて発生する偶発故障や磨耗故障の一部を救済することができる。
【図面の簡単な説明】
【図１】本発明のフラッシュＥＥＰＲＯＭの構成を示すブロック図
【図２】本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第１の書き込み方法を示すフローチャート図
【図３】本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第２の書き込み方法を示すフローチャート図
【図４】本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第１の消去方法を示すフローチャート図
【図５】本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第２の消去方法を示すフローチャート図
【図６】本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第１の読み出し方法を示すフローチャート図
【図７】本発明におけるフラッシュＥＥＰＲＯＭの書き換え装置の第２の読み出し方法を示すフローチャート図
【図８】従来のフラッシュＥＥＰＲＯＭの構成を示すブロック図
【図９】従来のフラッシュＥＥＰＲＯＭの書き換え装置の書き込み方法を示すフローチャート図
【図１０】従来のフラッシュＥＥＰＲＯＭの書き換え装置の消去方法を示すフローチャート図
【図１１】従来のフラッシュＥＥＰＲＯＭの書き換え装置の読み出し方法を示すフローチャート図
【図１２】代表的なフラッシュＥＥＰＲＯＭに使われているメモリセルの断面構造図
【符号の説明】
１０１　　　制御回路
１０２　　　レジスタ
１０３　　　Ｘデコーダ制御回路
１０４　　　Ｘデコーダ
１０５　　　通常セルアレイ領域
１０６　　　冗長セルアレイ領域
１０７　　　冗長情報記憶領域
１０８　　　冗長情報記憶領域
１０９　　　昇圧回路
１１０　　　カラムラッチ回路
１１１　　　Ｙデコーダ
１１２　　　Ｙゲートトランジスタ
１１３　　　センスアンプ回路
１１４　　　入出力回路
１１５　　　追加制御回路
１１６　　　追加レジスタ
１１７　　　追加Ｘデコーダ制御回路
１１８　　　制御回路
１１９　　　回数カウンタ
１２０　　　フェイル情報記憶領域
１２１　　　入出力回路
８０１　　　制御回路
８０２　　　レジスタ
８０３　　　Ｘデコーダ制御回路
８０４　　　Ｘデコーダ
８０５　　　通常セルアレイ領域
８０６　　　冗長セルアレイ領域
８０７　　　冗長情報記憶領域
８０８　　　昇圧回路
８０９　　　カラムラッチ回路
８１０　　　Ｙデコーダ
８１１　　　Ｙゲートトランジスタ
８１２　　　センスアンプ回路
８１３　　　入出力回路
８１４　　　制御回路
８１５　　　回数カウンタ
８１６　　　入出力回路
１２０１　　　制御ゲート
１２０２　　　絶縁膜
１２０３　　　浮遊ゲート
１２０４　　　トンネル酸化膜
１２０５　　　ドレイン領域
１２０６　　　ソース領域
１２０７　　　Ｐ型の半導体基板
【図１】
2004039179.tif 000003
【図２】
2004039179.tif 000004
【図３】
2004039179.tif 000005
【図４】
2004039179.tif 000006
【図５】
2004039179.tif 000007
【図６】
2004039179.tif 000008
【図７】
2004039179.tif 000009
【図８】
2004039179.tif 000010
【図９】
2004039179.tif 000011
【図１０】
2004039179.tif 000012
【図１１】
2004039179.tif 000013
【図１２】
2004039179.tif 000014