(57)【特許請求の範囲】
【請求項１】
ワード線に接続されるメモリセルから構成されるページを複数有するメモリセルアレイと、
ページを示すページアドレスを生成するページアドレス生成回路と、
前記ページアドレスが示すページを構成する前記メモリセルが接続されているワード線に複数のデータ書込用電圧を印加する書込電圧印加回路と、
前記メモリセルに書き込まれたデータの検証に成功するまで前記データ書込用電圧を前記ワード線に印加する繰り返し回数をカウントする第１のカウンタと、
前記第１のカウンタによりカウントされた回数が第１の値を越える場合、前記第１のカウンタの値を積算する積算回路と、
前記第１のカウンタによりカウントされた回数が前記第１の値を越える場合、カウントアップを行う第２のカウンタと、
前記積算回路による積算と前記第２のカウンタのカウントアップとの後に前記第１のカウンタをクリアして次のページアドレスを生成する次ページアドレス生成回路と、
前記第２のカウンタの値と前記積算回路に積算された値に基づいて、前記複数のデータ書込用電圧の一の値を動作パラメータとして設定する書込電圧値設定回路と、
を有することを特徴とする不揮発性半導体記憶装置。
【請求項２】
前記メモリセルに書き込まれたデータの検証に失敗した後にデータ書込用電圧を前記ワード線に印加する場合、前記ワード線に前回に印加されたデータ書込用電圧よりもステップアップしたデータ書込用電圧を印加することを特徴とする請求項１に記載の不揮発性半導体記憶装置。
【請求項３】
前記書込電圧値設定回路は、
ページあたりの前記繰り返し回数の平均値を算出するための除算回路と、
前記算出された平均値に該当する回数目から所定の回数前の回数目に印加される前記データ書込用電圧の値を動作パラメータとして設定する設定回路と、
を有することを特徴とする請求項１に記載の不揮発性半導体記憶装置。
【請求項４】
ワード線に接続されるメモリセルから構成されるページを示すページアドレスを生成し、
前記ページアドレスで示されるページの前記メモリセルが接続されているワード線に複数のデータ書込用電圧を印加し、
前記メモリセルに書き込まれたデータの検証に成功するまで前記データ書込用電圧を前記ワード線に印加する繰り返し回数を第１のカウンタにカウントし、
前記繰り返し回数が第１の値を越える場合、前記第１のカウンタの値の積算と第２のカウンタの値のカウントアップとを行い、
前記第１のカウンタをクリアして次のページアドレスを生成し、
前記第２のカウンタの値と前記積算の値に基づいて、前記複数のデータ書込用電圧の一の値を動作パラメータとして設定することを特徴とする不揮発性半導体記憶装置の動作方法。
【請求項５】
ページを、共通ソース線に隣接するワード線に接続されたメモリセルから構成される第１のページ群、共通ソース線から最も離れたワード線に接続されたメモリセルから構成される第２のページ群、前記第１のページ群及び前記第２のページ群以外のページの第３のページ群に分割し、
前記ページアドレスの生成においては、前記第１のページ群に属するページのページアドレスを生成した後に前記第３のページ群に属するページのページアドレスを生成してその後に前記第２のページ群に属するページのページアドレスを生成し、
前記第１のページ群に属するページを構成するメモリセルが接続されているワード線に印可するべき前記複数のデータ書込用電圧の一の値を求め、
前記第３のページ群に属するページを構成するメモリセルが接続されているワード線に印加するべき前記複数のデータ書込用電圧の一の値を求め、
前記第１のページ群に属するページを構成するメモリセルが接続されているワード線に印可するべき前記複数のデータ書込用電圧の一の値を動作パラメータとして設定し、
前記第２のページ群に属するページを構成するメモリセルが接続されているワード線に印加するべき前記複数のデータ書込用電圧の一の値を求め、
前記第３のページ群に属するページを構成するメモリセルが接続されているワード線に印加するべき前記複数のデータ書込用電圧の一の値を動作パラメータとして設定し、
前記第２のページ群に属するページを構成するメモリセルが接続されているワード線に印加するべき前記複数のデータ書込用電圧の一の値を動作パラメータとして設定することを特徴とする請求項４に記載の不揮発性半導体記憶装置の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き換え可能な不揮発性メモリセルを用いて構成される不揮発性半導体記憶装置に関する。
【背景技術】
【０００２】
不揮発性メモリセル（以下、「メモリセル」という。）として、フローティングゲートや電荷蓄積層などを有するメモリセルトランジスタなどが知られている。これらのメモリセルでは、フローティングゲートや電荷蓄積層などに保持される電荷量に応じてメモリセルの閾値が変化する現象を利用して、データの記憶がされる。したがって、メモリセルの閾値の制御が重要となる。
【０００３】
メモリセルの閾値の制御を行う方法として、メモリセルの閾値のベリファイを行いつつメモリセルに印加する電圧をステップアップしてデータの書き込みを行う方法が知られている（例えば、特許文献１参照）。また、ブロック単位でそのブロックに属するメモリセルに記憶されているデータを消去する時にもそのブロックに属する全てのメモリセルの閾値がデータ消去の状態になるまで閾値のベリファイを行いながら、ウェル層に印加する電圧をステップアップすることが行われている。
【０００４】
【特許文献１】特開平７−１６９２８４号公報
【非特許文献１】G.J. Hemink et al., Symposium on VLSI Technology, 1995, pp.129-130
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明では、印加する電圧をステップアップしながらメモリセルの閾値を制御する不揮発性半導体記憶装置において、印加する電圧の初期電圧（初期印加電圧）の調整を行う回路を備えたことを特徴とする不揮発性半導体記憶装置を提供する。
【課題を解決するための手段】
【０００６】
このために、ワード線に接続されるメモリセルから構成されるページを複数有するメモリセルアレイと、ページを示すページアドレスを生成するページアドレス生成回路と、生成されたページアドレスが示すページを構成する前記メモリセルが接続されているワード線に複数のデータ書込用電圧を印加する書込電圧印加回路と、前記メモリセルに書き込まれたデータの検証に成功するまでデータ書込用電圧を前記ワード線に印加する繰り返し回数をカウントする第１のカウンタと、その第１のカウンタによりカウントされた回数が第１の値を越える場合、その第１のカウンタの値を積算する積算回路と、その第１のカウンタによりカウントされた回数がその第１の値を越える場合、カウントアップを行う第２のカウンタと、積算回路による積算と第２のカウンタのカウントアップとの後に第１のカウンタをクリアして次のページアドレスを生成する次ページアドレス生成回路と、第２のカウンタの値と前記積算回路に積算された値に基づいて、データ書込用電圧の値を動作パラメータとして設定する書込電圧値設定回路とを有することを特徴とする不揮発性半導体記憶装置を提供する。
【０００７】
また、ワード線に接続されるメモリセルから構成されるページを示すページアドレスを生成し、生成されたページアドレスが示すページを構成するメモリセルを接続しているワード線に複数のデータ書込用電圧を印加し、データ書込用電圧が印加されたメモリセルに書き込まれたデータの検証に成功するまでデータ書込用電圧を前記ワード線に印加する繰り返し回数を第１のカウンタにカウントし、カウントされた繰り返し回数が第１の値を越える場合、第１のカウンタの値を積算回路に積算し、カウントされた繰り返し回数が第１の値を越える場合、第２のカウンタの値のカウントアップを行い、積算回路による積算と第２のカウンタのカウントアップとの後に第１のカウンタの値をクリアして次のページアドレスを生成し、第２のカウンタの値とその積算の値に基づいて、メモリセルに印加するべきデータ書込用電圧の値を動作パラメータとして設定することを特徴とする不揮発性半導体記憶装置の動作方法を提供する。
【発明の効果】
【０００８】
印加する電圧をステップアップしながらメモリセルの閾値を制御する不揮発性半導体記憶装置に、初期印加電圧の調整を行う回路を備えることにより、それぞれの不揮発性半導体記憶装置の特性に応じた初期印加電圧の設定を行うことができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明を実施するための最良の形態について実施形態として詳細に説明する。ただし、本発明は多くの異なる態様で実施することが可能であり、以下に示す実施形態の記載内容に限定して解釈されるものではない。また、同様の構成については同じ符号を付し、改めて説明しない場合がある。
【００１０】
（実施形態１）
図１は、本発明の一実施形態における不揮発性半導体記憶装置の機能ブロック図として、ＮＡＮＤ型フラッシュメモリを用いるメモリチップ１の機能ブロック図を一例として示す。図２は、メモリセルがメモリセルトランジスタである場合におけるメモリセルアレイ２１のメモリセルの配列（ＮＡＮＤセルユニット）の等価回路図である。メモリセルアレイ２１は、複数のＮＡＮＤセルユニットを配列して構成される。各ＮＡＮＤセルユニットは、複数の書き換え可能な不揮発性メモリセルと、その両端に、ソース線ＳＬとビット線ＢＬ０〜ＢＬｎに接続するための二つの選択ゲートトランジスタとを有する。
【００１１】
メモリセルの制御ゲートは、ビット線ＢＬ０〜ＢＬｎと直交して配置されるワード線ＷＬ０〜ＷＬｍに接続されている。また、選択ゲートトランジスタの制御ゲートは、これらのワード線と並行して配置される選択ゲート線ＳＧＤ、ＳＧＳに接続されている。
【００１２】
ワード線を共有するＮＡＮＤセルユニットの集合は、データ消去の単位となるブロックを構成する。例えば、図２では、ビット線の方向の上下に二つのブロックが示されており、上のブロックがｌ番目のブロックとして「ブロックｌ」と名付けられている。
【００１３】
また、同一のワード線で接続されているメモリセルの集まりは、書き込み、読み出しの単位としてページと呼ばれる。図２では、ブロックｌのＷＬ２に接続されているメモリセルの集まりが「ページｌ_２」と名付けられている。
【００１４】
なお、メモリセルアレイ２１の一部は、ＲＯＭヒューズエリアとして使用され、出荷時などに各種パラメータの値が書き込まれ、通常の使用時には読取り専用として用いられる領域が含まれていてもよい。そして、初期印加電圧を表すＶｐｇｍ＿ｉｎｉｔなどのパラメータは、このＲＯＭヒューズエリアに格納されていてもよい。
【００１５】
図１に戻って説明を行うと、ロウデコーダ１９は、メモリセルアレイ２１のワード線の選択とワード線の駆動とを行う回路を含む。
【００１６】
カラムデコーダ２４は、ビット線の選択を行う。センスアンプ回路２２は、メモリセルアレイ２１のビット線に接続され、入出力データを一時的に保持するデータレジスタ２３と接続されている。
【００１７】
データの読み出し時には、センスアンプ回路２２に読み出されたデータが、Ｉ／Ｏコントロール回路１２を介して、外部入出力端子Ｉ／Ｏ１〜Ｉ／Ｏ８に出力される。
【００１８】
データの書き込み時には、外部のホスト装置から外部入出力端子Ｉ／Ｏ１〜Ｉ／Ｏ８に供給される書き込みデータがＩ／Ｏコントロール回路１２、データレジスタ２３を介してセンスアンプ回路２２にロードされる。
【００１９】
外部入出力端子Ｉ／Ｏ１〜Ｉ／Ｏ８からＩ／Ｏコントロール回路１２を介して供給されるコマンドは、コマンドレジスタ１６を介して、制御回路１７でデコードされる。チップイネーブル信号/ＣＥ、書き込みイネーブル信号/ＷＥ、読み出しイネーブル信号/ＲＥ、アドレスラッチイネーブル信号/ＡＬＥ、コマンドラッチイネーブル信号/ＣＬＥ等の外部制御信号は、外部からロジックコントロール回路１３を介してＩ／Ｏコントロール回路１２や制御回路１７に供給される。制御回路１７は、動作モードに応じて供給される外部制御信号及びコマンドに基づいて、データの書き込み、消去及びデータの読み出しのシーケンスの制御を行う。
【００２０】
ステータスレジスタ１４は、チップ１内部の種々の状態を外部に知らせるためのレジスタである。例えば、ステータスレジスタ１４には、チップ１がレディ／ビジー状態のいずれにあるかを示すデータを保持するレディ／ビジーレジスタ、書き込みのパス／フェイルを示すデータを保持する書き込みステータスレジスタなどがある。
【００２１】
電圧発生回路１８は、メモリセルアレイ２１やロウデコーダが動作モードに応じて必要とする書き込み電圧Ｖｐｇｍ、ベリファイ電圧Ｖｖｅｒｉｆｙ、書き込みパス電圧Ｖｐａｓｓ、読み出し電圧Ｖｒｅａｄ等の種々の電圧を発生する。
【００２２】
図３は、"１"と"０"という２値のデータがメモリセルに書き込まれる場合において、閾値に対するメモリセルの数の分布の好ましい一例を示す。２値のデータがメモリセルに書き込まれる場合には、理論的には、フローティングゲートなどに電荷が存在するかしないかによる閾値の違いを検出することで書き込まれたデータを検出することができる。しかし、実際には、個々のメモリセルの特性に応じて閾値のばらつきが発生する。そのため、データの書き込み時には、このばらつきの発生を制御し、図３に示されるように、"１"が書き込まれたメモリセルの一群と"０"が書き込まれたメモリセルの一群とが分離できるようにする必要がある。また、２より大なるＮ個のデータを一つのメモリセルに書込む場合も同様であり、Ｎ個のデータそれぞれの値が書込まれたメモリセルがその閾値により区別できるようになっている必要がる。そのために、以下に説明するように書き込みを行う際にはワード線に印加する電圧が制御される。
【００２３】
図４は、メモリセルへの書き込みを行う際の電圧の制御の一例を説明するタイミングチャートである。この制御の一例においては、メモリセルのデータ消去が行われると、メモリセルには"１"が書き込まれた状態となることが想定されている。タイミングｔ０より、書き込みが行われるメモリセルの属するページの存在するブロックを選択する選択ゲート線ＳＧＤの電圧を昇圧し、例えば、Ｖｄｄとする。次いで、ｔ１より、"０"が書き込まれるメモリセルが接続されているビット線の電圧を０Ｖに維持する。また、"１"が書き込まれるメモリセルが接続されているビット線に正の電圧、例えば３Ｖ、の印加を開始し、"０"が書き込まれないようにする。時刻ｔ２より、書き込みが行われないページのワード線である非選択ワード線にメモリセルトランジスタをＯＮ状態にするに留まるＶｐａｓｓを印加し、書き込みが行われるページのワード線である選択ワード線に書き込みパス電圧Ｖｐａｓｓよりも高電圧である書き込み電圧であるＶｐｇｍを印加する。
【００２４】
以上の制御により、非選択ワード線に接続されるメモリセルはビット線に印加された電圧を伝達するに留まる。また、選択ワード線に接続されたメモリセルのうち、"１"が書き込まれるメモリセルのセルチャネルの電圧は、選択ワード線に追従して変化し、電荷がフローティングゲートなどに注入されない。一方、"０"が書き込まれるメモリセルのセルチャネルの電圧は０Ｖに保たれ、セルチャネルと選択ワード線との電位差により電荷がフローティングゲートなどに注入されることになる。
【００２５】
ただし、注入される電荷量はメモリセルの特性により異なり、同じ電圧が印加あれても"０"が書き込まれるメモリセルの閾値は同じになるとは限らない。そこで、書き込み電圧の印加が終わるとメモリセルの閾値のベリファイを行い、閾値が"０"を表す電圧に到達していない不適切な閾値のメモリセルが接続されるビット線のみを０Ｖとし、選択ワード線にステップアップした書き込み電圧の印加を行い、閾値が"０"を表す電圧に到達するように制御を行う。
【００２６】
図５は、この制御のために選択ワード線に印加される電圧の変化の一例を示す。一回目の電圧の印加時には、メモリセルアレイ２１のＲＯＭヒューズエリアなどに設定されているパラメータであるＶｐｇｍ＿ｉｎｉｔで表される書き込み電圧の最初の値である初期印加電圧を選択ワード線に印加する。そして、Ｖｐｇｍ＿ｉｎｉｔに印加が終わると、ページの全てのメモリセルが適切な閾値となったかどうかのベリファイを行うために、選択ワード線にＶｖｅｒｉｆｙを印加し、また、非選択ワード線にはＶｐａｓｓを印加して、センスアンプ回路２２により検出が行われる。
【００２７】
もし、ページに閾値が不適切なメモリセルが存在すれば、二回目の書き込み電圧の印加時には、一回目に印加された書き込み電圧にΔＶｐｇｍを加えた電圧を印加する。このΔＶｐｇｍはＲＯＭヒューズエリアなどに設定されたパラメータである。そして、再度ベリファイを行う。もし、閾値が不適切なメモリセルが依然として存在すれば、さらにΔＶｐｇｍを加えた電圧を書き込み電圧として選択ワード線に印加する。なお、閾値が適切になったメモリセルが接続されるビット線には例えば３Ｖなどの正の電圧を印加し、選択トランジスタがＯＦＦ状態となって、そのメモリセルにさらにデータの書き込みがされないようにする。
【００２８】
図６は、この制御の処理を説明するフローチャートの一例を示す。ステップＳ６０１の処理として、印加回数のカウントなどのための変数Ｎ（このような変数は制御回路内に配置されたレジスタなどにより実現される）に０を代入し、ステップＳ６０２として、印加する電圧を表す変数ＶｐｇｍにパラメータＶｐｇｍ＿ｉｎｉｔの値を代入する。
【００２９】
ステップＳ６０３として、選択ワード線に変数Ｖｐｇｍの値に応じた書き込み電圧を印加する。そしてステップＳ６０４として、選択ワード線にＶｖｅｒｉｒｙの電圧を印加してベリファイを行う。なお、ステップＳ６０３においては、書き込みを行うべきメモリセルが接続されたビット線には０Ｖを印加し、その他のビット線には正の電圧、例えば、３Ｖを印加する。
【００３０】
ステップＳ６０５において、ベリファイが成功したかどうか、すなわちページのメモリセルの全てのメモリセルの閾値が適切になったかどうか、を判断する。もし、ベリファイが成功していれば、ステップＳ６０６へ処理を移行させて、書き込み終了を外部のホスト装置へ通知する。もしベリファイが成功していなければ、ステップＳ６０７へ処理を移行させ、変数Ｖｐｇｍの値をΔＶｐｇｍ大きくする。そして、ステップＳ６０８として変数Ｎの値を１大きくし、ステップＳ６０９において、Ｎの値が所定の値Ｎｍａｘを越えているかどうかを判断する。もし、越えていればステップＳ６１０へ処理を移行させ、書き込み失敗を通知する。越えていなければ、ステップＳ６０３へ処理を戻す。
【００３１】
以上のように、メモリセルへのデータ書き込みの処理がされる。Ｖｐｇｍ＿ｉｎｉｔにより表される初期印加電圧の値が小さいと、ステップＳ６０３からステップＳ６０９により形成されるループの実行回数（以下、「ループ回数」ともいう）が増加し、書き込みに時間を要することになり、また、初期印加電圧の値が大きすぎると、閾値が大きくなりすぎる虞がある。したがって、Ｖｐｇｍ＿ｉｎｉｔの値を適切に設定してＲＯＭヒューズエリアなどに格納しておく必要がある。
【００３２】
また、あるブロックの全てのメモリセルに記憶されているデータを消去する場合には、ビット線、ワード線に印加する電圧を０Ｖに設定し、そのブロックの選択ゲートトランジスタのみがＯＮとなるようにＳＧＤの印加を行い、ＲＯＭヒューズエリアに設定されている所定の高電圧をウェルに印加する。そして、書き込み時と同様に、そのブロックの全てのメモリセルに記憶されているデータが消去されたかどうかを、メモリセルの閾値をベリファイする。もし、データの消去されていないメモリセルが存在すれば、次にウェルに印加する電位を所定の値だけステップアップすることを繰り返す。したがって、同様に、データ消去のための所定の高電位の値を適切に設定しておく必要がある。このようにデータ消去時に最初にウェルに印加される電圧も初期印加電圧と呼ぶことにする。
【００３３】
図７は、本発明の一実施形態の概要を説明する。例えば、ループ回数として４が適切であるとし、実際にメモリセルへの書き込み、あるいはデータの消去を行ったところ、６回目の電圧印加の後にベリファイが成功したとする。そこで、初期印加電圧の値に２＊ΔＶｐｇｍを加えた電圧を表す値にＶｐｇｍ＿ｉｎｉｔの値を設定する。これにより、次にデータの書き込みとベリファイを繰り返すと４回の繰り返しの後にベリファイが成功することになる。ただし、メモリセルアレイ２１には複数のページが存在するので、本発明の一実施形態では複数のページについての書き込み、あるいは消去の回数の平均を求めて、Ｖｐｇｍ＿ｉｎｉｔなどの値の設定を行う。
【００３４】
例えば、複数のページについて書き込み電圧の印加の回数の平均を求め、その平均から望ましい印加回数を引いた回数の時にワード線に印加される電圧の値を表すようにＶｐｇｍ＿ｉｎｉｔの値を設定する。同様に、複数のブロックについて消去の電圧の印加の回数の平均を求め、その平均から望ましい印加回数を引いた回数の時にウェルに印加される電圧の値を表すように消去の初期印加電圧のパラメータの値を設定する。
【００３５】
このように、書き込み又は消去の電圧の印加の回数の平均を求め、データ書き込みやデータ消去の際の初期印加電圧を表すパラメータの値を設定することを、以下では「トリミング」という。
【００３６】
図８は、本発明の一実施形態に係る不揮発性メモリ装置１の制御回路１７の構成を示す機能ブロック図である。図８においては、制御回路１７のうち、データ書き込みのＶｐｇｍ＿ｉｎｉｔのトリミングに関する部分の機能ブロック図が示されている。
【００３７】
制御回路１７は、トリミング回路８０１と、パラメータレジスタ８０２と、フェイル回数カウンタ８０３と、Ｖｐｇｍレベル制御回路８０４と、ベリファイ回路８０５とを有する。
【００３８】
トリミング回路８０１は、第一比較回路８０６と、スイッチ８０７と、積算回路８０８と、スイッチ８０９と、パス回数カウンタ８１０と、除算回路８１１と、Ｖｐｇｍ＿ｉｎｉｔ設定回路８１２と、次ページアドレス生成回路８１３とを有する。
【００３９】
パラメータレジスタ８０２は、Ｖｐｇｍ＿ｉｎｉｔなどのパラメータの値を動作パラメータの値として保持する領域である。動作パラメータとは、メモリチップ１が動作する際に参照されるパラメータである。図８では、便宜的に制御回路の内部に設けられているように示されているが、実際にはメモリセルアレイのＲＯＭヒューズエリアの一部であってもよい。
【００４０】
フェイル回数カウンタ８０３は、選択ワード線に書き込み電圧を印加した後にベリファイを行った結果、ベリファイに成功しなかった回数、すなわちベリファイに失敗した回数（以後、「フェイル回数」という。）を保持する回路である。フェイル回数カウンタ８０３は、後に説明するベリファイ回路８０５からベリファイ失敗の信号が出力されると、保持している値を１だけカウントアップし、ベリファイ成功の信号が出力されると、保持している値を０にクリアする。なお、０にクリアするかわりに１にクリアすると、ベリファイに成功するまでに書き込み電圧が印加された回数がフェイル回数カウンタ８０３によりカウントされる。
【００４１】
Ｖｐｇｍレベル制御回路８０４は、選択ワード線に印加する書き込み電圧の値を決定し、その値の電圧を電圧発生回路１８に発生させる。Ｖｐｇｍレベル制御回路８０４は、まず、パラメータレジスタ８０２に保持されているＶｐｇｍ＿ｉｎｉｔの値に応じた書き込み電圧を発生させ、その後、ベリファイ回路８０５からベリファイ失敗の信号が出力されると、フェイル回数カウンタ８０３でカウントアップされたフェイル回数を取得し、ΔＶｐｇｍを乗じてＶｐｇｍ＿ｉｎｉｔの表す電圧の値に加えた書き込み電圧を発生させるとことをページごとに行う。
【００４２】
ベリファイ回路８０５は、選択ワード線にＶｖｅｒｉｆｙの電圧を印加して、書き込み対象のページの全てのメモリセルの閾値が適切になっているかどうかのベリファイを行う回路である。ベリファイ回路８０５は、ベリファイに失敗すると、ベリファイ失敗の信号を出力し、ベリファイに成功するとベリファイ成功の信号を出力する。また、ベリファイ回数が所定の回数（例えば、図６で示したＮｍａｘ）を越えると、書き込み失敗の信号を出力する。
【００４３】
第一比較回路８０６は、フェイル回数カウンタ８０３の出力するフェイル回数とＬｍｉｎの値とを比較する。ここにＬｍｉｎは所定の定数である。例えば、パラメータレジスタ８０２に記憶されている。あるいは、Ｖｐｇｍ＿ｉｎｉｔの設定を開始するコマンドであるトリミングコマンドとともに外部のホスト装置から出力されたパラメータである。比較を行った結果、フェイル回数がＬｍｉｎより大きくなると、スイッチ８０７とスイッチ８０９に出力され、フェイル回数の信号とベリファイ成功の信号とがそれぞれ積算回路８０８とパス回数カウンタ８１０とに転送されることになる。
【００４４】
積算回路８０８は、フェイル回数カウンタ８０３から転送されるフェイル回数を積算する。すなわち、内部で記憶している積算値と転送されたフェイル回数との和を求め、新たな積算値として記憶する。また、積算回路８０８は、後に説明する除算回路８１１へ積算値を出力する。
【００４５】
パス回数カウンタ８１０は、ベリファイ回路８０５からベリファイ成功の信号が転送された回数（以後、「パス回数」という。）をカウントする。また、パス回数カウンタ８１０は、カウントの結果を除算回路８１１へ出力する。
【００４６】
除算回路８１１とＶｐｇｍ＿ｉｎｉｔ設定回路８１２とは、積算回路８０８による積算の値とパス回数カウンタ８１０にカウントされた値とに基づいて選択ワード線に印加する書き込み電圧の値をパラメータレジスタに設定する回路である。具体的な設定の例としては、除算回路８１１にて、選択ワード線あたりの書き込み電圧を印加した平均値を、パス回数カウンタ８１０にカウントされた値と積算回路８０８による積算の値とを用いて算出する。そして、その平均値から所定の回数（例えば図７に示した場合は４）を減じ、得られる値の回数目にワード線に印加される電圧の値を表すパラメータ値をパラメータレジスタ８０２に設定する。
【００４７】
具体的な例としては、除算回路８１１は、積算回路８０８から出力される積算値をパス回数カウンタ８１０から出力されるカウントの結果を割り算する。この結果、１ページあたりのフェイル回数の平均値が得られる。また除算回路８１１は、割り算の結果をＶｐｇｍ＿ｉｎｉｔ設定回路８１２へ出力する。
【００４８】
また、具体的な例としては、Ｖｐｇｍ＿ｉｎｉｔ設定回路８１２は、除算回路８１１から出力される割り算の結果を用いて、パラメータレジスタ８０２に保持されているＶｐｇｍ＿ｉｎｉｔの値を設定し、トリミングの最終処理を行う回路である。図７に示したように、例えば、除算回路８１１から出力される割り算から所定の値を減算して得られる値にΔＶｐｇｍを乗じ、現在のＶｐｇｍ＿ｉｎｉｔの値を加算した値を新たなＶｐｇｍ＿ｉｎｉｔの値としてパラメータレジスタに設定する。
【００４９】
次ページアドレス生成回路８１３は、ベリファイ回路８０５からベリファイ成功又は書き込み失敗を表す信号が出力されると、トリミングのために次に書き込みを行うページのアドレスを生成する。ページのアドレスは、例えば、ブロックの番号あるいはブロックアドレスとそのブロックでのワード線の番号とから構成される。ページのアドレスの生成は、図示されない乱数生成器などにより発生させた乱数を用いて行ったり、ＲＯＭヒューズエリアに格納されている所定の範囲内のアドレスを順次生成することで実現されたりしてもよい。乱数を用いる場合には、例えば、生成された乱数をメモリチップ１のブロック数により割り算を行い、その余りをページのアドレスとする。
【００５０】
また、ページアドレスは、外部からＩ／Ｏコントロール回路から入力されるようになっていてもよい。すなわち、トリミングのために次に書き込みを行うページのアドレスを生成する必要が生じると、次ページアドレス生成回路８１３が動作し、メモリチップ１がレディ状態などとなったことが外部のホスト装置に伝達され、この伝達に応じてＩ／Ｏ１〜１６により入力されるデータが次のページアドレスとして読み込まれるようになっていてもよい。
【００５１】
図９は、本発明の一実施形態における不揮発性半導体記憶装置における初期印加電圧を表す値を設定する処理のフローチャートの一例を示す。ステップＳ９０１の処理として、ページアドレスを初期設定する。すなわち、一番目に書き込み電圧を印加するワード線に接続されたメモリセルから構成されるページのアドレスをセットする。このページのアドレスは、パラメータレジスタに設定されていたり、チップ１に接続されているテスト装置などから供給されたりする。そして、ステップＳ９０２として、パス回数カウンタ８１０に保持されている値の０クリアを行う。
【００５２】
そして、一つのページにおけるフェイル回数をカウントするために、ステップＳ９０３の処理として、フェイル回数カウンタ８０３に保持されている値の０クリアを行う。ステップＳ９０４として、Ｖｐｇｍレベル制御回路８０４を動作させて、フェイル回数カウンタ８０３に保持されているフェイル回数に応じた書き込み電圧を選択ワード線に印加する。各ページについて最初にステップＳ９０４の処理が行われると、Ｖｐｇｍ＿ｉｎｉｔの値に応じた書き込み電圧が印加される。
【００５３】
書き込み電圧の印加が終わると、ステップＳ９０５の処理として、ベリファイ回路８０５を動作させて、ベリファイを行う。そして、ベリファイに成功していれば、ステップＳ９０６へ処理を移行させ、ベリファイに失敗していれば、ステップＳ９０９へ処理を移行させる。
【００５４】
ステップＳ９０５においてベリファイに成功している場合には、ステップＳ９０６の処理として、第一比較回路８０６により、フェイル回数カウンタ８０３に保持されている値と、Ｌｍｉｎの比較を行い、Ｌｍｉｎの方が小さい場合に、ステップＳ９０７とステップＳ９０８の処理を行う。Ｌｍｉｎの方が小さくない場合には、ステップＳ９０７とステップＳ９０８をスキップする。
【００５５】
ステップＳ９０７の処理として、パス回数カウンタ８１０に保持されている値をカウントアップし、ステップＳ９０８の処理として、積算回路８０８にフェイル回数カウンタ８０３に保持されている値を積算させる。
【００５６】
一方、ステップＳ９０５においてベリファイに失敗している場合には、ステップＳ９０９の処理として、フェイル回数カウンタ８０３に保持されている値をカウントアップし、次に、ステップＳ９１０として、Ｌｍａｘとフェイル回数カウンタ８０３に保持されている値を比較して、Ｌｍａｘの方が大きければ、書き込み電圧をステップアップして選択ワード線に印加するために、ステップＳ９０４へ戻る。Ｌｍａｘの方が大きくなければ、書き込みが失敗したことになるので、次のページに対する書き込みとベリファイを行うために、ステップＳ９１２へ処理を移行させる。
【００５７】
ステップＳ９０５においてベリファイに成功し、ステップＳ９０６〜Ｓ９０８の処理が行われた後には、ステップＳ９１１の処理として、Ｖｐｇｍ＿ｉｎｉｔを設定するために書き込みとベリファイを行うべきページの全てに対して処理が終わっているかどうかを判断し、もしそうであれば、フェイル回数の平均を求め、新しいＶｐｇｍ＿ｉｎｉｔの設定を行うために、ステップＳ９１３へ処理を移行させる。書き込みとベリファイを行うべきページは、例えば、上述のテスト装置からそのアドレスが供給されていたりする。書き込みとベリファイを行うべきページの全てに対して処理が終わっていなければ、次のページに対する書き込みとベリファイを行うためにステップＳ９１２へ処理を移行させる。
【００５８】
ステップＳ９１２では、次に書き込みとベリファイを行うページのアドレスを生成するために、次ページアドレス生成回路８１３を動作させる。もし、次のページアドレスが生成できなければ、ステップＳ９１３へ処理を移行させる。次に書き込みとベリファイを行うページのアドレスは、上述のテスト装置により決定されるようになっていてもよい。また、次に書き込みとベリファイを行うページが生成できなければ、ステップＳ９１３へ処理を移行するようになっていてもよい。
【００５９】
ステップＳ９１３の処理として、除算回路８１１を動作させて、積算回路８０８に保持されている値をパス回路カウンタに保持されている値で除算を行いその結果を出力し、ステップＳ９１４の処理として、Ｖｐｇｍ＿ｉｎｉｔ設定回路８１２を動作させ、除算回路８１１が出力する値に基づいて新しいＶｐｇｍ＿ｉｎｉｔの設定を行い、書き込みについての初期印加電圧のトリミングを終了する。
【００６０】
上記では、書き込みの初期印加電圧のトリミングについて説明したが、データ消去の初期印加電圧のトリミングも同様に行える。すなわち、上記の説明では、フェイル回数カウンタ８０３はページごとにフェイル回数をカウントしたが、これをブロックごとにフェイル回数をカウントする。そして、Ｖｐｇｍレベル制御回路８０４は、ウェルに印加する電圧を制御する。ベリファイ回路８０５は、ブロックの全てのメモリセルの閾値がデータ消去の閾値の範囲になっているかどうかをベリファイする。次ページアドレス生成回路８１３は、次のブロックのアドレスを生成する。これにより、除算回路８１１により、ブロックごとのフェイル回数の平均値を求めることができる。
【００６１】
本発明に係る一実施形態においては、不揮発性半導体記憶装置が初期印加電圧を表すパラメータ値を設定する回路を有するので、個々の不揮発性半導体記憶装置の製造時のばらつきなどにより発生する特性に応じた初期印加電圧のトリミングが行える。
【００６２】
また、フェイル回数がＬｍｉｎ以下になる場合や、Ｌｍａｘを越えるページのフェイル回数は、フェイル回数の平均の算出に用いられず、初期電圧の設定に影響を与えない。このため、バッドブロックのページでのフェイル回数は無視されるので、従来行われていたバッドブロックの検出を行う必要がなくなり、初期電圧の設定の作業に要する時間をバッドブロックの検出に要する時間だけ短縮することができる。
【００６３】
特にバッドブロックの検出を行う必要がないことは、個々のメモリチップにより異なるバッドブロックのアドレスを考慮する必要がないことを意味する。すなわち、複数のメモリチップを一台のトリミングを行う装置（例えばテスト装置）に接続し、複数のメモリチップにトリミングのために書き込みを行うページアドレスや消去を行うブロックのアドレスを同時に与えてトリミングを行うことができる。
【００６４】
（実施形態１の別の形態１）
なお、上述した本発明の一実施形態の別の形態として、図９に示したフローチャートの処理を行った後に、もう一度、フェイル回数の平均値を求め、フェイル回数の平均値が所定の範囲に属しているかどうかを判断するようにしてもよい。
【００６５】
すなわち、図１０のフローチャートに示すように、ステップＳ１００１の処理として、全ブロックのメモリセルの記憶されているデータの消去の処理を行う。そして、ステップＳ１００２の処理として、図９のフローチャートに示された処理を行い、初期印加電圧のトリミングを行う。そして、ステップＳ１００３の処理として、再度、全ブロックのメモリセルの記憶されているデータの消去の処理を行う。その後、ステップＳ１００４の処理として、図９のフローチャートのうち、Ｓ９１４以外の処理を行い、フェイル回数の平均値を求める。
【００６６】
データ消去のトリミングの場合には、ステップＳ１００１、ステップＳ１１０３の処理を行う必要はない。
【００６７】
なお、ステップＳ１００２とステップＳ１００４において、書き込み電圧が印加されベリファイが行われるページ、ブロックは同じである必要はない。例えば、ステップＳ１００４でのページやブロックの数がステップＳ１００２でのページやブロックの数よりも多くなっていてもよい。また、逆に、少なくなっていてもよい。
【００６８】
そして、ステップＳ１００５の処理として、ステップＳ１００４にて求められたフェイル回数の平均値が所定の値Ｍ（例えば、トリミングコマンドのパラメータ）よりも小さいかどうかなど、所定の範囲に属しているかどうかを判断し、もし、そうであれば、ステップＳ１００６へ処理を移行し、初期印加電圧のトリミングを終了し、そうでなければ、ステップＳ１００７へ処理を移行し、不揮発性半導体記憶装置を不良品とみなしてもよい。あるいは、ステップＳ１００４にて求められたフェイル回数の平均値に応じて、不揮発性半導体記憶装置の性能を判定し、価格などを決定してもよい。
【００６９】
（実施形態１の別の形態２）
上述した本発明の一実施形態の別の形態として、フェイル回数カウンタ８０３に保持されている値そのものを積算回路８１１により積算するのではなく、フェイル回数カウンタ８０３に保持されている値から所定の値を減算した値を積算回路８１１により積算するように制御回路１７を構成してもよい。
【００７０】
図１１は、そのような構成における制御回路１７の機能ブロック図を示す。図８との違いは、フェイル回数カウンタ８０３から出力されるフェイル回数を、減算回路１１０２により、所定の定数だけ減じて積算回路８０８に出力する点である。ここでいう所定の定数は、例えば、除算回路８１１により計算されると予測されるフェイル回数の平均値である。フェイル回数から所定の定数が減じられて積算されるので、除算回路８１１は、除算を行った後に、その所定の定数を加算する。
【００７１】
図１１では、減算回路１１０２は、フェイル回数カウンタ８０３とスイッチ８０７との間に配置されているが、スイッチ８０７と積算回路８０８との間に配置されていてもよい。
【００７２】
フェイル回数から所定の定数が減じられて積算されるので、その所定の回数が、除算回路８１１により計算されると予測されるフェイル回数の平均値と同じであるか、近い値であると、積算回路８０８には０に近い数値が積算されることになる。このため、積算回路８０８を構成するレジスタなどのビット数を少なくすることができ、回路規模を小さくすることができる。また、除算回路８１１の回路規模を小さくすることができる。
【００７３】
（実施形態１の別の形態３）
上述した本発明の一実施形態の別の形態として、除算回路８１１をシフト演算回路で実現する形態がある。図１２は、図８に示す機能ブロック図の除算回路８１１をシフト回路で実現している。また、第二比較回路１２０２をさらに配置して、パス回数カウンタ１２０２が第二比較回路１２０２にもカウントの結果を出力するようになっている。
【００７４】
第二比較回路１２０２は、パス回数カウンタ１２０２が出力するカウントの結果が２のべき乗になっているかどうかを比較する。また、第二比較回路１２０２は、パス回数カウンタ１２０２が出力するカウントの結果の２の対数をシフト回路８１１に出力するようになっていてもよい。この場合、２の対数は、浮動小数点数、固定小数点数などとして表現される必要はなく、２の対数の整数部分であってもよい。また、単純にパス回路カウンタ１２０２に保持されている値を２進数表示した場合の桁数から１を引いた数であってもよい。
【００７５】
図１３は、この形態でのＶｐｇｍ＿ｉｎｉｔの設定の処理の流れを説明するフローチャートの一例を示す。図９のフローチャートと比較すると、図９におけるステップＳ９０６の処理が、図１３においては、ステップＳ１３０１処理として、フェイル回数がＬｍｉｎより大であり、かつ、パス回数カウンタ８１０に保持されている値が２のべき乗２ｎ未満であるかどうかを判断するようになっている。これにより、バッドブロックではないと推測されるページについてパス回数のカウントアップとフェイル回数の積算を行うことができる。また、ステップＳ１３０２で判断するパス回数が２のべき乗２ｎを超えることを防ぐことができる。また、ステップＳ９１１の処理において、Ｖｐｇｍ＿ｉｎｉｔを設定するために書き込みとベリファイを行うべきページの全てに対して処理が終わっていると判断されると、ステップＳ１３０２として、パス回数カウンタ８１０に保持されている値が２のべき乗に等しいかどうかを判断している。もしそうであれば、除算をシフト演算で行うことが可能となるので、ステップＳ９１３，Ｓ９１４を行うようになっている。また、パス回数カウンタ８１０に保持されている値が２のべき乗２ｎに等しくなければ、ステップＳ１３０３として、トリミング失敗の通知を行う処理を行うようになっている。
【００７６】
なお、図１３のフローチャートにおいては、ステップＳ９１１、Ｓ１３０２及びＳ１３０３との処理を融合し、パス回数カウンタ８１０の値が２のべき乗２ｎになっていることを調べ、所定の値以上（例えば、２５６以上）の２のべき乗になっていれば、ステップＳ９１３へ処理を移行するようにしてもよい。さらに、まだ書き込みとベリファイが行われていないページの数をパス回数カウンタ８１０に加えても所定の値以上の２のべき乗を越えないならば、トリミング失敗の通知を行うようになっていてもよい。
【００７７】
なお、以上において説明したトリミング回路の機能ブロック図においては、フェイル回数カウンタ８０３、第一比較回路８０６、積算回路８０８、パス回数カウンタ８１０、除算回路８１１など、計算の機能を備える複数の回路が配置されている。しかし、本発明の一実施形態は、このような計算の機能を備える複数の回路を配置する点は必須ではない。例えば、一つの演算回路で実現することもできる。
【００７８】
図１４は、一つの演算回路で第一比較回路８０６、積算回路８０８、パス回数カウンタ８１０、除算回路８１１などと同等の機能を実現するトリミング演算回路の概念図である。トリミング演算回路１４００は、フェイル回数レジスタ１４０１と、パス回路レジスタ１４０２と、積算レジスタ１４０３と、アーギュメントレジスタ１４０４と、マルチプレクサ１４０５と、演算器１４０６と、演算結果レジスタ１４０７とを有し、また、パラメータレジスタ８０２がマルチプレクサ１４０５と演算結果レジスタ１４０７に接続されている。
【００７９】
フェイル回数レジスタ１４０１は、フェイル回数を保持するために用いられるレジスタである。フェイル回数レジスタ１４０１は、フェイル回数カウンタ８０３の機能のうち、カウントアップの機能を除いた機能を有する。
【００８０】
パス回数レジスタ１４０２は、パス回数を保持するために用いられるレジスタである。パス回数レジスタ１４０２は、パス回数カウンタ８１０の機能うち、カウントアップの機能を除いた機能を有する。
【００８１】
積算レジスタ１４０３は、フェイル回数の積算値を保持するために用いられるレジスタである。積算レジスタ１４０３は、積算回路８０８の機能うち、積算の演算の機能を除いた機能を有する。
【００８２】
アーギュメントレジスタ１４０４は、トリミングを行うコマンドとともに入力された数値（コマンドの引数など）を保持するレジスタである。例えば、Ｌｍｉｎ、Ｌｍａｘの値を保持する。
【００８３】
マルチプレクサ１４０５は、パラメータレジスタ８０２、フェイル回数レジスタ１４０１、パス回路レジスタ１４０２、積算レジスタ１４０３、アーギュメントレジスタ１４０４に保持された値のうちの一を選択し、演算器１４０６へ出力する。
【００８４】
演算器１４０６は、マルチプレクサ１４０５から出力される値と演算結果レジスタ１４０７から出力される値とを用いて演算を行い、演算結果レジスタ１４０７に出力する。演算器１４０６が行う演算には、定数０を生成すること、演算器１４０６に入力されるいずれかの値をそのまま出力すること、演算器１４０６に入力されるいずれかの値に１を加える演算、演算器１４０６に入力される２つの値の和、差、商を求める演算、比較演算がある。
【００８５】
フェイル回数レジスタ１４０１、パス回数レジスタ１４０２、積算レジスタ１４０３のいずれかを０クリアするには、演算器１４０６で０を生成し、それを演算結果レジスタ１４０７に記憶し、演算結果レジスタ１４０７に記憶された値を、フェイル回数レジスタ１４０１、パス回数レジスタ１４０２、積算レジスタ１４０３のいずれか取り込ませる。
【００８６】
また、フェイル回数レジスタ１４０１、パス回数レジスタ１４０２に保持された値をカウントアップするには、マルチプレクサ１４０５によりフェイル回数レジスタ１４０１、パス回数レジスタ１４０２の値のいずれかを選択して、演算器１４０６に１を加える演算を行わせて演算結果レジスタ１４０７に記憶し、演算結果レジスタ１４０７に記憶された値を、フェイル回数レジスタ１４０１、パス回数レジスタ１４０に取り込ませる。
【００８７】
フェイル回数の積算を行うには、マルチプレクサ１４０５により積算レジスタ１４０３を選択して、積算レジスタ１４０３に記憶されている値を、演算器１４０６を通して演算結果レジスタ１４０７に取り込ませて記憶させ、次に、マルチプレクサ１４０５によりフェイル回数レジスタ１４０１を選択し、演算器１４０６により演算結果レジスタ１４０７に記憶されている値とフェイル回数レジスタ１４０１の値との和を求めて演算結果レジスタ１４０７に記憶させる。そして、演算結果レジスタ１４０７に記憶されている値を積算レジスタ１４０３に記憶させる。
【００８８】
同様にして、新しいＶｐｇｍ＿ｉｎｉｔの値などの初期印加電圧を表す値が演算され演算結果レジスタ１４０７に記憶された場合には、その値をパラメータレジスタ８０２に記憶させる。
【００８９】
フェイル回数レジスタ１４０１と、パス回路レジスタ１４０２と、積算レジスタ１４０３と、アーギュメントレジスタ１４０４と、マルチプレクサ１４０５と、演算器１４０６と、演算結果レジスタ１４０７と、パラメータレジスタ８０２との動作のタイミングは、図示されていない有限状態オートマトンあるいはシーケンサにより信号が図９に例示されるフローチャートの処理が実行されるように生成されてフェイル回路レジスタ１４０１などに出力される。
【００９０】
（実施形態２）
本発明の実施形態２として、ワード線の位置に応じてＶｐｇｍ＿ｉｎｉｔのトリミングを行う構成について説明する。一般に、選択ゲートトランジスタに隣接するなどして選択トランジスタと近い位置に配置されているメモリセルは、Ｇａｔｅ  Ｉｎｄｕｃｅｄ  Ｄｒａｉｎ  Ｌｅａｋａｇｅ（ＧＩＤＬ）効果などにより、そうでないメモリセルと異なる閾値を有する傾向にある。そのため、選択ゲートトランジスタと近い位置に配置されているメモリセルとそうでないメモリセルとで、Ｖｐｇｍ＿ｉｎｉｔの値のトリミングを分けて行うのが好ましい。本実施形態においては、このように選択ゲートトランジスタとの近さに応じて、すなわちワード線の位置に応じて、Ｖｐｇｍ＿ｉｎｉｔのトリミングを行う場合について説明する。
【００９１】
図１５は、本発明の実施形態２に係る処理の流れを説明するフローチャートを例示する。このフローチャートでは、一つのブロックにつきワード線がＷＬ０からＷＬ３１までの３２本あるとし、選択トランジスタに隣接しているメモリセルを接続するＷＬ０とＷＬ３１、そして隣接していないメモリセルを接続するＷＬ１〜ＷＬ３０についての３つのＶｐｇｍ＿ｉｎｉｔを個別に設定する処理を示している。
【００９２】
本実施形態では、図８、図１１、図１２に例示したトリミング回路のＶｐｇｍ＿ｉｎｉｔ設定回路８１２は、パラメータレジスタ８０２に設定するべきＶｐｇｍ＿ｉｎｉｔの値を一時的に記憶するためのレジスタとしてＲ０、Ｒ１の２つを有しているとする。
【００９３】
ステップＳ１５０１の処理として、図９のフローチャートの処理のうちＳ９１４以外の処理を各ブロックのＷＬ０について行い、フェイル回数の平均値を求め、結果をレジスタＲ０に記憶する。この時点では、Ｒ０に記憶された結果に基づいてＶｐｇｍ＿ｉｎｉｔのトリミングをした結果をパラメータレジスタに設定しない。なぜならば、ＷＬ０のＶｐｇｍ＿ｉｎｉｔの値は、ＷＬ１〜ＷＬ３０のＶｐｇｍ＿ｉｎｉｔの値からの差として記憶されるなどして、ＷＬ１〜ＷＬ３０のＶｐｇｍ＿ｉｎｉｔがトリミングされないと正しく算出できない場合があるからである。
【００９４】
例えば、ＷＬ０、ＷＬ１〜ＷＬ３０、ＷＬ３１の初期印加電圧を表すパラメータをそれぞれ、Ｖｐｇｍ＿ｉｎｉｔ０、Ｖｐｇｍ＿ｉｎｉｔ０１＿３０、Ｖｐｇｍ＿ｉｎｉｔ３１とすると、
Ｖｐｇｍ＿ｉｎｉｔ０＝Ｖｐｇｍ＿ｉｎｉｔ０１＿３０＋ＷＬ０Ｖｐｇｍ
Ｖｐｇｍ＿ｉｎｉｔ３１＝Ｖｐｇｍ＿ｉｎｉｔ０１＿３０＋ＷＬ３１Ｖｐｇｍ
としてパラメータ間に依存している場合には、ＷＬ１〜ＷＬ３０のＶｐｇｍ＿ｉｎｉｔがトリミングされないと、ＷＬ０のＶｐｇｍ＿ｉｎｉｔのトリミングが正しくできない。
【００９５】
次に、ステップＳ１５０２の処理として、図９のフローチャートの処理のうちＳ９１４以外の処理を各ブロックのＷＬ１〜ＷＬ３０について行い、フェイル回数の平均値を求め、その結果をレジスタＲ１に記憶する。
【００９６】
ステップＳ１５０３の処理として、Ｒ０とＲ１とに記憶された値からＷＬ０のＶｐｇｍ＿ｉｎｉｔのトリミングを行う。例えば、Ｒ０が５、Ｒ１が６であり、望ましい印加回数が４であれば、ＷＬ０については、現在のＶｐｇｍ＿ｉｎｉｔに比べて初期印加電圧をΔＶｐｇｍ大きく設定し、ＷＬ１〜ＷＬ３０については、２＊ΔＶｐｇｍ大きく設定することになる。ＷＬ０の初期印加電圧をＷＬ１〜ＷＬ３０の印加電圧との差分を示すパラメータＷＬ０Ｖｐｇｍの値として、−１をパラメータレジスタ８０２に設定する。
【００９７】
この時点では、まだ、ＷＬ１〜ＷＬ３０のＶｐｇｍ＿ｉｎｉｔはパラメータレジスタ８０２に設定しない。ＷＬ３１についてのフェイル回数の平均値を求める必要があるからである。
【００９８】
ステップＳ１５０４の処理として、図９のフローチャートの処理のうちＳ９１４以外の処理を各ブロックのＷＬ３１について行い、フェイル回数の平均値を求める。その結果は、Ｒ０に保持する。
【００９９】
そして、ステップＳ１５０５の処理として、Ｒ１に保持された結果を用いてＷＬ１〜ＷＬ３１のＶｐｇｍ＿ｉｎｉｔのトリミングを行う。上述の例では、２に相当する値をパラメータレジスタ８０２に設定する。
【０１００】
次に、ステップＳ１５０６の処理として、Ｒ０に保持された結果を用いてＷＬ３１のＶｐｇｍ＿ｉｎｉｔのトリミングを行う。
【０１０１】
図１５にＷＬ０、ＷＬ１〜ＷＬ３０、ＷＬ３１のそれぞれのＶｐｇｍ＿ｉｎｉｔの設定の場合についての処理を例示している。もし、ＷＬ０、ＷＬ１，ＷＬ２〜ＷＬ２９、ＷＬ３０、ＷＬ３１のそれぞれのＶｐｇｍ＿ｉｎｉｔの設定を行う場合には、Ｖｐｇｍ＿ｉｎｉｔ設定回路８１２に、Ｒ０、Ｒ１、Ｒ２の３つのレジスタを用意する。そして、ＷＬ０についてのフェイル回数の平均値をＲ０に、ＷＬ１についてのフェイル回数の平均値をＲ１に、ＷＬ２〜ＷＬ２９についてのフェイル回数の平均値をＲ２に記憶する。
【０１０２】
そして、Ｒ０、Ｒ１、Ｒ２に記憶された値を用いることで、ＷＬ０、ＷＬ１についてのＶｐｇｍ＿ｉｎｉｔのトリミングを行う。次に、ＷＬ３０についてのフェイル回数の平均値をＲ０に記憶し、ＷＬ３１についてのフェイル回数の平均値をＲ１に記憶する。
【０１０３】
次に、Ｒ２に記憶された値を用いてＷＬ２〜ＷＬ２９のＶｐｇｍ＿ｉｎｉｔのトリミングを行い、Ｒ０、Ｒ１にそれぞれ記憶された値を用いてＷＬ３０、ＷＬ３１のＶｐｇｍ＿ｉｎｉｔのトリミングを行う。
【０１０４】
以上のように処理を行うことにより、ＷＬ０、ＷＬ１〜ＷＬ３０、ＷＬ３１の区分けの数の３より少ないレジスタの数により、ワード線の位置に応じたＶｐｇｍ＿ｉｎｉｔのトリミングを行うことができる。
【０１０５】
（その他の実施形態）
また、同一のウェルに配置された複数のメモリセルから構成されるブロックを複数有するメモリセルアレイと、ブロックを指し示すページアドレスを生成するブロックアドレス生成回路と、生成されたブロックアドレスで指し示されるブロックのウェルに消去用の電圧を印加する消去電圧印加回路と、消去書込用の電圧が印加されたウェルの配置されたメモリセルに書き込まれたデータの検証に失敗した場合に再び消去用の電圧を前記ウェルに印加する繰り返し回数をカウントする第１のカウンタと、その第１のカウンタによりカウントされた回数が第１の値を越える場合、その第１のカウンタの値を積算する積算回路と、その第１のカウンタによりカウントされた回数がその第１の値を越える場合、カウントアップを行う第２のカウンタと、積算回路による積算と第２のカウンタのカウントアップとの後に第１のカウンタをクリアして次のブロックアドレスを生成する次ブロックアドレス生成回路と、第２のカウンタの値と前記積算回路に積算された値に基づいて、ウェルに印加する消去用の電圧の値を動作パラメータとして設定する消去電圧値設定回路とを有することを特徴とする不揮発性半導体記憶装置を提供することもできる。このような不揮発性半導体装置により、データ消去に要する時間を短縮することができる。
【図面の簡単な説明】
【０１０６】
【図１】本発明の一実施形態に係る不揮発性半導体記憶装置の機能ブロック図である。
【図２】本発明の一実施形態に係るＮＡＮＤセルユニットの等価回路図である。
【図３】本発明の一実施形態に係る閾値に対するメモリセルの数の分布の好ましい一例図である。
【図４】本発明の一実施形態に係るメモリセルへの書き込みを行う際の電圧の制御のタイミングチャートである。
【図５】本発明の一実施形態に係る選択ワード線に印加される電圧の変化の一例図である。
【図６】本発明の一実施形態に係る書き込みとベリファイの制御のフローチャートである。
【図７】本発明の一実施形態に係る書き込み初期電圧Ｖｐｇｍ＿ｉｎｉｔのトリミングを説明する図である。
【図８】本発明の一実施形態に係る不揮発性メモリ装置の制御回路の構成図である。
【図９】本発明の一実施形態に係る書き込み初期電圧Ｖｐｇｍ＿ｉｎｉｔのトリミングのフローチャートである。
【図１０】本発明の一実施形態に係る書き込み初期電圧Ｖｐｇｍ＿ｉｎｉｔのトリミングのフローチャートである。
【図１１】本発明の一実施形態に係る不揮発性メモリ装置の制御回路の構成図である。
【図１２】本発明の一実施形態に係る不揮発性メモリ装置の制御回路の構成図である。
【図１３】本発明の一実施形態に係る書き込み初期電圧Ｖｐｇｍ＿ｉｎｉｔのトリミングのフローチャートである。
【図１４】本発明の一実施形態に係る不揮発性メモリ装置の制御回路の構成図である。
【図１５】本発明の一実施形態に係る書き込み初期電圧Ｖｐｇｍ＿ｉｎｉｔのトリミングのフローチャートである。
【符号の説明】
【０１０７】
１７…制御回路、８０１…トリミング回路、８０２…パラメータレジスタ、８０３…フェイル回数カウンタ、８０４…Ｖｐｇｍレベル制御回路、８０５…ベリファイ回路、８０６…第一比較回路、８０７…スイッチ、８０８…積算回路、８０９…スイッチ、８１０…パス回数カウンタ、８１１…除算回路、８１２…Ｖｐｇｍ＿ｉｎｉｔ設定回路
【図１】
0005032290.tif 000002
【図２】
0005032290.tif 000003
【図３】
0005032290.tif 000004
【図４】
0005032290.tif 000005
【図５】
0005032290.tif 000006
【図６】
0005032290.tif 000007
【図７】
0005032290.tif 000008
【図８】
0005032290.tif 000009
【図９】
0005032290.tif 000010
【図１０】
0005032290.tif 000011
【図１１】
0005032290.tif 000012
【図１２】
0005032290.tif 000013
【図１３】
0005032290.tif 000014
【図１４】
0005032290.tif 000015
【図１５】
0005032290.tif 000016