(57)【要約】【課題】フラッシュメモリの個々のブロックごとにメモリセルの特性の劣化状態を検出でき、フラッシュメモリの動作条件を個々のブロックの劣化状態に応じて設定することができる、不揮発性半導体記憶装置を提供する。【解決手段】フラッシュメモリ２０内のブロックに対してプログラムを行う際に、プログラム開始からブロック内のプログラムすべきメモリセルのうちのＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムベリファイをパスするまでの第１時間（Ｎ％のメモリセルのベリファイパス時間）を計測し、この第１時間が所定の判定基準値を下回った場合は、当該ブロックのブロックアドレスを記憶し、次に当該ブロックにアクセスする際には、フラッシュメモリ２０の動作条件を所定の動作条件に変更する。【選択図】図１
2013125574.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリ内のブロックに対してプログラムを行う際に、前記ブロック内のプログラムすべきメモリセルのうちの所定の割り合いのメモリセルのプログラムが完了するまでの第１時間を計測する機能と、
前記第１時間と所定の判定基準値である第２時間とを比較する機能と、
前記ブロックにおいて前記第１時間が前記第２時間を下回った場合は、当該ブロックに次回からアクセスする際には、前記フラッシュメモリの動作条件を所定の動作条件に変更してアクセスする機能と、
を備えることを特徴とする不揮発性半導体記憶装置。
【請求項２】
メモリセルがアレイ状に配列されたメモリ領域を有するフラッシュメモリと前記フラッシュメモリの動作を制御する制御部とを有し、
前記フラッシュメモリは、
プログラム対象となるブロック内のプログラムすべきメモリセルのうちの予め設定したＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムベリファイをパスしたときに、このＮ％のメモリセルがプログラムベリファイをパスしたことを示すＮ％パス情報を外部に出力する機能と、
外部からの要求に応じて当該フラッシュメモリにおける動作条件を変更する機能と、
を備え、
前記制御部は、
前記フラッシュメモリから出力されるＮ％パス情報をモニタすることにより、前記プログラム対象となるブロックにおけるプログラムの開始から前記Ｎ％のメモリセルがプログラムベリファイをパスするまでに要した第１時間を計測する機能と、
前記第１時間と前記第２時間とを比較する機能と、
前記プログラム対象となるブロックにおいて前記第１時間が前記第２時間を下回った場合に、当該ブロックのブロックアドレスを記憶するとともに、次回より当該ブロックにアクセスする際には、前記フラッシュメモリの動作条件を前記所定の動作条件に変更するように前記フラッシュメモリに要求する機能と、
を備えることを特徴とする請求項１に記載の不揮発性半導体記憶装置。
【請求項３】
前記制御部は、
前記フラッシュメモリ内の前記ブロックに対してプログラムを行う際に前記第１時間が前記第２時間を下回る毎に、前記ブロックに次にアクセスする際、前記フラッシュメモリに対して異なる動作条件を設定する、
ことを特徴とする請求項２に記載の不揮発性半導体記憶装置。
【請求項４】
プログラム対象となるブロックにおけるプログラム開始から前記Ｎ％パス情報が出力されるまでの第１時間を計測するとともに、この第１時間と前記第２時間とを比較するＮ％パス時間判定部と、
プログラム対象となるブロックにおいて前記第１時間が前記第２時間を下回った場合に、当該ブロックのブロックアドレスと、当該ブロックにおいて前記第１時間が前記第２時間を下回った回数である補正回数と、を対応付けて記憶するブロックアドレス記憶部と、
前記補正回数と、この補正回数に応じて前記フラッシュメモリに対して適用されるべき動作条件と、を対応付け保持する条件テーブルと、
を備え、
前記制御部は、
前記フラッシュメモリ内のブロックに対してアクセスを開始する前に、前記ブロックアドレス記憶部と前記条件テーブルとを参照し、
当該ブロックのブロックアドレスが前記ブロックアドレス記憶部に記憶されている場合は、当該ブロックの補正回数に応じた動作条件を前記条件テーブルから抽出し、この抽出した動作条件を前記フラッシュメモリに対して設定した後に、当該ブロックに対してアクセスを開始する
ことを特徴とする請求項３に記載の不揮発性半導体記憶装置。
【請求項５】
前記アクセスする際に変更する動作条件は、ブロックに対してプログラム、プログラムベリファイ、リード、イレースのいずれか、または全部の処理を行う際の動作条件である
ことを特徴とする請求項１から請求項４のいずれか一項に記載の不揮発性半導体記憶装置。
【請求項６】
前記ブロックに対してプログラムを行なう際に、所定の同一データを書き込むための書き込み専用領域を前記ブロック内に設け、
前記第１時間を判定する機能として、前記ブロックへのプログラム開始から前記書き込み専用領域内のメモリセルのうちの所定の割合のメモリセルのプログラムが完了するまでの時間を前記第１時間として判定する、
ことを特徴とする請求項１から請求項５いずれか一項に記載の不揮発性半導体記憶装置。
【請求項７】
前記書き込み専用領域に書き込まれるデータは、フラッシュメモリのメモリセルのフローティングゲートに電荷を注入して書き込まれるデータである
ことを特徴とする請求項６に記載の不揮発性半導体記憶装置。
【請求項８】
フラッシュメモリ内のプログラム対象となるブロックに対してプログラムを行う際に、前記ブロック内のプログラムすべきメモリセルのうちの所定の割り合いのメモリセルのプログラムが完了するまでの第１時間を計測する手順と、
前記第１時間と所定の判定基準値である第２時間とを比較する手順と、
前記第１時間が前記第２時間を下回った場合に、次回から当該ブロックにアクセスする際には、前記フラッシュメモリの動作条件を所定の動作条件に変更する手順と、
を含むことを特徴とする不揮発性半導体記憶装置における動作条件制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを備える不揮発性半導体記憶装置、および不揮発性半導体記憶装置における動作条件制御方法に関する。
【背景技術】
【０００２】
関連する不揮発性半導体記憶装置がある（特許文献１を参照）。この特許文献１に記載の不揮発性半導体記憶装置は、書き込みと消去動作の回数に応じた最適な消去が行え、消去回数の増加に伴って消去時間が長くなるのを抑制できる不揮発性半導体記憶装置を提供すること目的とする。
この特許文献１に記載の不揮発性半導体記憶装置においては、過去に行った消去動作の回数を消去回数記憶部に記憶し、この消去回数にしたがって読み出し時間設定回路で読み出し時間を制御することにより、この消去回数に基づいて読み出し時間を設定できるようにしている。
【０００３】
また、関連する不揮発性半導体記憶装置がある（特許文献２を参照）。この特許文献２に記載の不揮発性半導体記憶装置は、サブブロック毎のデータ消去回数を管理する機能を内蔵する不揮発性半導体記憶装置を提供することを目的とする。この不揮発性半導体記憶装置では、セルアレイの各サブブロックがそのサブブロックのデータ消去毎に更新されるデータ消去回数を記憶し、セルアレイの所定のブロックが記憶するデータ消去回数の許容最大値を参照して、各サブブロックごとにデータ消去回数を制限する。
【０００４】
また、関連する記憶媒体上のデータ管理のための方法がある（特許文献３を参照）。この特許文献３に記載のデータ管理のための方法では、第１のブロックが消去されるべき場合、第１のブロックの消耗レベルが消去を行うのに許容可能であるか判定される。許容可能であれば、第１のブロック上のデータは消去される。そうでなければ、第１のブロックよりも低い消耗レベルを有する第２のブロックが選択され、第２のブロックのデータが第１のブロックへコピーされる。各ブロックは消去された回数を監視する関連するカウンタを有する。過去において殆ど消去されていないブロックは未来において消去される可能性が低いため、第１のブロックはあまり頻繁に消去されず、従って寿命が延ばされる。第２のブロックは新しいデータを記憶するために使用されることができ、より頻繁に使用される。
【０００５】
また、関連する端末装置がある（特許文献４を参照）。この特許文献４に記載の端末装置は、ＮＡＮＤ型フラッシュメモリ上の特定の領域に書換えが集中するのを防ぎ、ＮＡＮＤ型フラッシュメモリ全体に書換え頻度を分散させることができ、また書換えが発生した際には、ブロックの書換え回数を極力減少させ、製品のデータ書換えに関する処理速度を向上できる端末装置を提供することを目的とする。
【０００６】
また、関連する不揮発性半導体記憶装置がある（特許文献５を参照）。この特許文献５に記載の不揮発性半導体記憶装置は、多値記憶の不揮発性半導体記憶装置において、不要なベリファイを削減し、トータルの書き込み時間の短縮を図ることを目的とする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３９４６８４９号明細書
【特許文献２】特開２００５−１２２８００号公報
【特許文献３】特表２００３−５３２２２２号公報
【特許文献４】特開２００２−３２２５６号公報
【特許文献５】特開２０００−１６３９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＮＡＮＤ型フラッシュメモリは、プログラムおよび消去動作等のサイクリング（Ｃｙｃｌｉｎｇ）を重ねるとメモリセルの酸化膜が劣化し、酸化膜中にチャージトラップが発生し、プログラムしたセルの閾値Ｖｔの分布が広がる傾向がある。例えば、図１０は、ＳＬＣ（Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）の閾値Ｖｔの分布を示す図であり、図１０（Ａ）は、サイクリング前における閾値Ｖｔの分布を示し、図１０（Ｂ）は、サイクリング後における閾値Ｖｔの分布を示している。この図において、Ｖｐｇｍｖは、プログラムベリファイ時のワード線に印加される電圧を示し、Ｖｒｅａｄは、リード時の非選択ワード線の電圧を示す。この図に示すように、サイクリングを繰り返すことにより、サイクリング後の閾値Ｖｔの分布範囲が、サイクリング前と比較して広がることが分かる。
【０００９】
このプログラムしたセルの閾値Ｖｔの分布が広がると、次のような問題が起こる可能性がある。例えば、ＮＡＮＤ型フラッシュメモリがＳＬＣの場合に、オーバプログラミング（Ｏｖｅｒ  Ｐｒｏｇｒａｍｍｉｎｇ）によるカラムリード（Ｃｏｌｕｍｎ  Ｒｅａｄ）不良が発生する可能性があり、ＭＬＣ（Ｍｕｌｔｉｐｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）の場合は、複数の閾値Ｖｔの各々が隣接ステート（Ｓｔａｔｅ）と重なることによるリード不良が発生することがある。これらはＮＡＮＤ型フラッシュメモリの信頼性の面で重大な問題となる。
【００１０】
従来、このような問題を回避するため、例えば、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ：エラー検出訂正）機能の拡充、各ブロックのサイクリング回数（プログラム及び消去動作等の実施回数）を可能な限り平均化するためのシステムによる対処（Ｗａｒｅ  Ｌｅｖｅｌｉｎｇ）、または、ＮＡＮＤ型フラッシュメモリ全体の平均サイクリング回数を管理し、この平均サイクリング回数に応じてＮＡＮＤ型フラッシュメモリの動作条件を変更する方法が行われている。
【００１１】
しかしながら、ＥＣＣを拡充する場合は、ＥＣＣの情報を記憶するためのメモリ領域が必要となり、ＮＡＮＤ型フラッシュメモリのチップ面積の増加を招く。また、データの読み書きにおいてＥＣＣを算出する処理が必要となるため、システム側にも負担がかかる。また、各ブロックのサイクリング回数を平均化する場合は、システム側に多数のレジスタ（サイクリング回数をブロックごとに保持するレジスタ）が必要になり、これもまた負担となる。また、サイクリング回数によりＮＡＮＤ型フラッシュメモリの動作条件を変更する場合は、ＮＡＮＤ型フラッシュメモリ全体のサイクリング回数により動作条件が管理されるため、サイクリング回数が実際には少ないブロックに対しても新たな動作条件が適用されることになり、ＮＡＮＤ型フラッシュメモリのパフォーマンスの低下につながるという欠点がある。
【００１２】
本発明は、斯かる実情に鑑みなされたものであり、本発明の目的は、フラッシュメモリの個々のブロックごとにメモリセルの特性の劣化状態により、フラッシュメモリの動作条件を個々のブロックの劣化状態に応じて設定することができる、不揮発性半導体記憶装置、および不揮発性半導体記憶装置における動作条件制御方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明は、上記課題を解決するためになされたものであり、本発明の不揮発性半導体記憶装置は、フラッシュメモリ内のブロックに対してプログラムを行う際に、前記ブロック内のプログラムすべきメモリセルのうちの所定の割り合いのメモリセルのプログラムが完了するまでの第１時間を計測する機能と、前記第１時間と所定の判定基準値である第２時間とを比較する機能と、前記ブロックにおいて前記第１時間が前記第２時間を下回った場合は、当該ブロックに次回からアクセスする際には、前記フラッシュメモリの動作条件を所定の動作条件に変更してアクセスする機能と、を備えることを特徴とする。
【発明の効果】
【００１４】
本発明の不揮発性半導体記憶装置においては、フラッシュメモリ内のブロックに対してプログラムを行う際に、ブロック内のプログラムされるべきメモリセルのうちの所定の割り合いのメモリセルのプログラムが完了する時間を判定（計測）し、この時間が判定基準値を下回った場合は、次にそのブロックにアクセスする際に、フラッシュメモリの動作条件を所定の動作条件に変更する。
これにより、本発明の不揮発性半導体記憶装置においては、フラッシュメモリの個々のブロックごとにメモリセルの特性の劣化状態を検出でき、フラッシュメモリの動作条件を個々のブロックの劣化状態に応じて設定することができる。このため、フラッシュメモリの信頼性の向上を図ることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係わる不揮発性半導体記憶装置の構成を示すブロック図である。
【図２】ＮＡＮＤ型フラッシュメモリの構成を示す図である。
【図３】メモリセルアレイの構成を示す図である。
【図４】サイクリング回数に対するプログラム時間ｔＰＲＯＧとＮ％パス時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙとイレース時間ｔＥＲＳの変化特性を示す図である。
【図５】フラッシュメモリにおける動作条件の変更とＮ％パス時ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの変化特性を示す図である。
【図６】条件テーブルの例を示す図である。
【図７】本実施形態の不揮発性半導体記憶装置における動作の流れを示すフローチャートである。
【図８】本発明の第２の実施形態に係わる不揮発性半導体記憶装置１Ａの構成を示すブロック図である。
【図９】ＮＡＮＤ型フラッシュメモリ２０Ａの構成を示す図である。
【図１０】ＳＬＣの閾値Ｖｔの分布を示す図である。
【発明を実施するための形態】
【００１６】
［第１の実施形態］
以下、本発明の実施の形態を添付図面を参照して説明する。
［概要］
本実施形態の不揮発性半導体記憶装置においては、サイクリング回数ではなく、個々のブロック（メモリセルアレイに対してアクセス（例えば、プログラム等）する際の単位となるブロック）のプログラム時間をモニタし、プログラム時間が判定基準値を下回ったときのブロックアドレスを記憶し、そのブロックに次にアクセスする際に、ＮＡＮＤ型フラッシュメモリの動作条件を変更する。
【００１７】
すなわち、ＮＡＮＤ型フラッシュメモリは、サイクリングを重ねることでメモリセルの酸化膜が劣化することにより、チャージトラップが発生し、このチャージトラップに電子が捕獲されることで、メモリセルのプログラム時間は早くなっていく（プログラムしやすくなる）。しかし、ＮＡＮＤ型フラッシュメモリでは複数ビットのセルを同時にプログラムするため、その中には必ずプログラム速度が遅い（時間が長い）ビット（ｓｌｏｗ  ｐｒｏｇｒａｍ  ｂｉｔ）が存在する。このためプログラム時間の変化は、プログラム速度の遅いビットによって判定されるため、個々のビットの傾向を知ることができない。
【００１８】
そこで、速度が遅い（プログラム時間が長い）ビットにより全体のプログラム時間の変化がわからなくなるのを防ぐため、ＮＡＮＤ型フラッシュメモリには、プログラムフェイルビット数をカウントし、プログラムビット総数に対してＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムされたときに外部にフラグを出力する機能を設ける。また、ＮＡＮＤ型フラッシュメモリに、外部からの要求に応じて動作条件を変更することができる機能を設ける。
【００１９】
そして、ＮＡＮＤ型フラッシュメモリを使用する不揮発性半導体記憶装置は、フラッシュメモリのＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムベリファイをパスしたときに出力されるフラグＦ＿Ｍａｊｏｒｉｔｙ（Ｎ％パス情報）をモニタし、Ｎ％パス時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ（プログラム開始からフラグＦ＿Ｍａｊｏｒｉｔｙが出力されるまでの時間）を判定（計測）する。このとき、不揮発性半導体記憶装置は、Ｎ％パス時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ（単に「時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ」とも呼ぶ）の判定基準値（例えば、１５０μｓ）と時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙとを比較し、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数に応じて、次にＮＡＮＤ型フラッシュメモリに適用されるべき動作条件を変更して設定する。
【００２０】
そして、不揮発性半導体記憶装置では、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数に応じて、次回よりそのブロックアドレスにアクセスするときには新しい動作条件を適用するようにＮＡＮＤ型フラッシュメモリに要求する。上記動作条件とは、例えばプログラム／プログラムベリファイ／リード／イレース（Ｐｒｏｇａｒａｍ／Ｐｒｏｇａｒｍ  Ｖｅｒｉｆｙ／Ｒｅａｄ／Ｅｒａｓｅ）の際の動作条件である。
【００２１】
［不揮発性半導体記憶装置の構成］
図１は、本発明の第１の実施形態に係わる不揮発性半導体記憶装置の構成を示す図である。図１に示す不揮発性半導体記憶装置１は、ＮＡＮＤ型フラッシュメモリ（本明明細書では、単に「フラッシュメモリ」とも呼ぶ）２０を有する不揮発性半導体記憶装置であり、本発明に直接関係する部分のみを示したものである。この図１に示すように、本実施形態の不揮発性半導体記憶装置１は、メモリセルがアレイ状に配列されたＮＡＮＤ型フラッシュメモリ２０と、このフラッシュメモリ２０を制御するコントローラ１０と、を有して構成される。また、ＮＡＮＤ型フラッシュメモリ２０は、メモリセルがアレイ状に配列されたメモリセルアレイ２１を有している。
【００２２】
コントローラ１０は、ＮＡＮＤ型フラッシュメモリ２０内のブロック（フラッシュメモリ２０内のメモリセルアレイ２１へアクセスする際の単位となるブロック）に対して、プログラムの実行指令等のコマンドを発行するとともに、フラッシュメモリ２０における動作条件を設定するためのコマンド（動作条件変更設定コマンドＣＭＤ）を発行する。ＮＡＮＤ型フラッシュメモリ２０は、コントローラ１０から入力したコマンドＣＭＤに含まれる動作条件の変更設定情報に従い、例えば、プログラム電圧や、リード電圧等の動作条件を設定する。また、ＮＡＮＤ型フラッシュメモリ２０は、後述するフラグＦ＿Ｍａｊｏｒｉｔｙ（Ｎ％パス情報）の信号をコントローラ１０に出力する。
【００２３】
コントローラ１０は、フラッシュメモリ２０から入力したフラグＦ＿Ｍａｊｏｒｉｔｙを基に、Ｎ％パス時間判定部（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ判定部）１３により、プログラム対象となるブロックにおけるプログラム開始からフラグＦ＿Ｍａｊｏｒｉｔｙが出力されるまでの時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを計測する、また、Ｎ％パス時間判定部１３は、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが所定の判定基準値（例えば、１５０μｓ）を下回ったか否かを判定する。
【００２４】
ブロックアドレス記憶部１２は、Ｎ％パス時間判定部１３により、プログラム対象となるブロックにおける時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが所定の判定基準値（例えば、１５０μｓ）を下回った判定された場合に、当該ブロックのアドレスと、当該ブロックおいて時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数（補正回数）を記憶する。
【００２５】
上記構成の不揮発性半導体記憶装置１において、ＮＡＮＤ型フラッシュメモリ２０内のブロックにアクセスする場合、コントローラ１０は、最初に、ブロックアドレス記憶部１２と、条件テーブル１１とを参照する。なお、条件テーブル１１には、後述するように、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの判定基準値と、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数（補正回数）と、この下回った回数に対応して次回からの動作でそのブロックに適用されるべきフラッシュメモリ２０の動作条件と、が対応付けられて記憶されている（図６を参照）。
そして、コントローラ１０は、アクセスしようとするブロックのブロックアドレスがブロックアドレス記憶部１２に記憶されている場合は、その回数（補正回数）およびそれに対応する動作条件を条件テーブル１１から読み出す。コントローラ１０は、この条件テーブル１１から読み出した動作条件をＮＡＮＤ型フラッシュメモリ２０に対して設定し、その後に、所望の動作（リード／プログラム／イレース）を行う。
【００２６】
ＮＡＮＤ型フラッシュメモリ２０は、コントローラ１０から要求された動作条件変更設定指令（動作条件変更設定コマンドＣＭＤ）に応じて動作条件を変更できる機能を備える。動作条件の変更例としては、例えば、フラッシュメモリ２０は、プログラムストレス（Ｐｒｏｇｒａｍ  ｓｔｒｅｓｓ）の開始電圧（Ｖｉｐｇｍ）を変更する（下げる）。また、例えば、フラッシュメモリ２０は、メモリセルのゲート電圧を一定電圧Ｖｓｔｅｐ上昇させながらプログラムミングを行う増加型パルスプログラム（Ｉｎｃｒｅｍｅｎｔａｌ  Ｓｔｅｐ  Ｐｕｌｓｅ−Ｐｒｏｇｒａｍ：ＩＳＰＰ）サイクルにおける電圧ステップ幅（Ｖｓｔｅｐ）を変更する（小さくする）。これにより、フラッシュメモリ２０において、プログラム速度を抑え、過書き込み（オーバプログラミング）を防止する。
【００２７】
或いは、フラッシュメモリ２０は、リード時の非選択ワード線の電圧（Ｖｒｅａｄ）を変更する（高くする）。これにより、フラッシュメモリ２０は、メモリセルに対して多少過書き込みが発生しても、メモリセルからデータを読み出す際に、データを正常に読み出せるようにマージン（余裕度）を持つことができる。或いは、フラッシュメモリ２０は、プログラムベリファイ時の選択ワード線の電圧（Ｖｓｅｌ）を変更する（高くする）。メモリセルはサイクリングを重ねるとプログラムしやすくなるが同時に電荷保持特性も劣化するので、これに対して、フラッシュメモリ２０は、プログラムベリファイ時の選択ワード線の電圧（Ｖｓｅｌ）を変更（高くする）することにより、データを正常に読み出せるようにマージンを持つことができる。
【００２８】
図２は、ＮＡＮＤ型フラッシュメモリ２０の構成を示す図であり、本発明に関係する部分を示したものである。この図２に示すように、ＮＡＮＤ型フラッシュメモリ２０は、メモリセルアレイ２１と、ページバッファデコーダ２２Ａを備えるページバッファ２２と、ロウデコーダ２３とを有する。また、ＮＡＮＤ型フラッシュメモリ２０は、このＮＡＮＤ型フラッシュメモリ２０の全体の動作を統括して制御するメモリ制御回路３１と、動作条件変更設定部３２と、出力データバッファ３３と、入力データバッファ３４と、プログラムビットカウンタ３５と、プログラムビット比計算部３６と、フェイルビットカウンタ３７と、動作電圧コントローラ３８と、を有している。
【００２９】
上記構成のＮＡＮＤ型フラッシュメモリ２０において、メモリセルアレイ２１は、図３に示すブロックを複数ブロック備えている。各ブロックは、図３に示すように、Ｎ＋１本のビット線ＢＬ０〜ＢＬＮ（ビット線ＢＬで総称）と、ｎ＋１本のワード線ＷＬ０〜ＷＬｎ（ワード線ＷＬで総称）と、共通ソース線ＣＳＬと、各ビット線ＢＬと共通ソース線ＣＳＬとの間にそれぞれ接続されたＮ＋１個のメモリストリングＳＴ０〜ＳＴＮ（メモリストリングＳＴで総称）と、を備える。各メモリストリングＳＴは、互いに直列接続されたｎ＋１個のフローティングゲート構造の電気的書き換え可能な不揮発性のメモリセルＭＣ０〜ＭＣｎを備え、ドレイン側のメモリセルＭＣｎは選択ゲートトランジスタＳＳ１を介して対応するビット線ＢＬに接続され、ソース側のメモリセルＭＣ０は選択ゲートトランジスタＧＳ１を介して共通ソース線ＣＳＬに接続される。また、同一行のメモリセルの制御ゲートは、共通のワード線ＷＬに接続されている。
【００３０】
図３に示すブロックにおいて、メモリセルの消去は、例えば、半導体基板に高電圧を印加し、ワード線ＷＬ０〜ＷＬｎに０Ｖを印加することにより行われる。これにより、例えばポリシリコンなどからなる電荷蓄積層であるフローティングゲートより電子を引き抜いて、メモリセルＭＣの閾値電圧を消去閾値電圧ＶｔＬ（例えば、−１Ｖ）に設定する。一方、書き込み（プログラム）においては、例えば、ソース及びドレインに０Ｖを与え、制御ゲート（選択したワード線ＷＬ）に高電圧を印加することにより、フローティングゲートに電子を注入し、閾値電圧を上昇させて書込閾値電圧ＶｔＨに設定する。そして、メモリセルＭＣ０〜ＭＣｎの閾値電圧が閾値電圧ＶｔＬの場合、当該メモリセルのデータ値を“１”とし、閾値電圧が閾値電圧ＶｔＨの場合、当該メモリセルのデータ値を“０”とする。
【００３１】
また、メモリセルからデータを読み出すときには、全てのビット線ＢＬを所定の電圧でプリチャージした後に、閾値ＶｔＬとＶｔＨ間の読み出し電圧を、読み出し対象のメモリセルＭＣに共通に接続されたワード線ＷＬを介して、選択メモリセルの各制御ゲートに印加する。また、高電圧を、上記選択メモリセル以外のメモリセルＭＣおよび選択トランジスタＳＳ１，ＧＳ１の各制御ゲートに印加して、上記選択メモリセル以外のメモリセルＭＣならびに選択ゲートトランジスタＳＳ１，ＧＳ１を導通させる。従って、選択メモリセルのデータ値が“１”のときには、当該選択メモリセルにセル電流が流れる一方、選択メモリセルのデータ値が“０”のときには、当該選択メモリセルにセル電流が流れないので、セル電流が流れるか否かに基づいて、各選択メモリセルに書き込まれているデータを読み出すことができる。
【００３２】
また、図２に示すＮＡＮＤ型フラッシュメモリ２０において、動作条件変更設定部３２は、コントローラ１０から入力したコマンド（動作条件変更設定コマンド）ＣＭＤが指示する動作条件に従い、ＮＡＮＤ型フラッシュメモリ２０における動作条件を設定する。また、出力データバッファ３３は、メモリセルアレイ２１から読み出したデータの外部出力用のバッファ回路であり、外部装置との接続線となるデータ入出線（Ｉ／Ｏｓ）にデータを出力する。入力データバッファ３４は、同じくデータ入出線（Ｉ／Ｏｓ）に接続され、外部装置からのデータの入力、アドレス信号の入力、及び動作制御のコマンド等の入力に使用されるバッファ回路である。プログラムビットカウンタ３５は、プログラム対象となるブロックにおけるプログラムすべきメモリセルのビット数（書き込むべきビット総数）を検出し、このプログラムビット数の情報をプログラムビット比計算部３６に出力する。
【００３３】
フェイルビットカウンタ３７は、ベリファイ読み出し時において、フェイルセルと判定されたメモリセルのビット数（「フェイルセル数」とも呼ぶ）をカウントし、このフェイルセル数の情報をプログラムビット比計算部３６に出力する。
プログラムビット比計算部３６は、プログラムビットカウンタ３５から入力したプログラムビット数Ｐｂの情報と、フェイルビットカウンタ３７から入力したフェイルセル数Ｆｂの情報と、を基に、以下の式によりプログラムビット比（％）を算出する。なお、パスビット比は、プログラムするブロックおいて、プログラムに成功（プログラムベリファイをパス）したメモリセルの割合を示す数値である。また、プログラムビット比（％）をＮ％レシオと呼ぶことがある。
【００３４】
プログラムビット比（Ｎ％レシオ）＝（Ｐｂ−Ｆｂ）×１００／Ｐｂ
【００３５】
そして、プログラムビット比計算部３６は、プログラムビット比（プログラムベリファイをパスしたメモリセルの割合）が、所定の割合（例えば、７０％）を超えたときにフラグＦ＿Ｍａｊｏｒｉｔｙをコントローラ１０に向けて出力する。
【００３６】
動作電圧コントローラ３８は、データ書き換え（プログラム）、消去（イレース）、読み出し（リード）等の動作時に用いる昇圧された高電圧や中間電圧を発生する。この動作電圧コントローラ３８で生成された電圧信号は、信号Ｖｒｅａｄ、Ｖｐｇｍ、Ｖｅｒｓ等としてロウデコーダ２３とページバッファ２２に出力される。この動作電圧コントローラ３８における電圧信号の発生動作は、メモリセルＭＣからのデータの読み出し（リード）、書き換え（プログラム）及び消去（イレース）動作等に応じて、メモリ制御回路３１および動作条件変更設定部３２から出力される制御指令に基づいて行われる。
【００３７】
［本実施形態の不揮発性半導体記憶装置１の動作説明］
上述したように、ＮＡＮＤ型フラッシュメモリ２０は、サイクリングを重ねることでメモリセルの酸化膜にチャージトラップが発生し、メモリセルのプログラム時間は早くなっていく（プログラムしやすくなる）。しかし、ＮＡＮＤ型フラッシュメモリ２０では複数ビットのセルを同時にプログラムするため、その中には必ずプログラム速度が遅い（時間が長い）ビットが存在し、合計したプログラム時間（ｔＰＲＯＧ）としては現れにくい。
【００３８】
そこで、速度が遅い（時間が長い）ビットにより大方のセル（Ｍａｊｏｒｉｔｙ）のプログラム時間がわからなくなるのを防ぐため、プログラム対象となるブロックにおいてプログラムフェイルビット数をカウントし、プログラムビット総数に対してＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムされたときに外部にフラグＦ＿Ｍａｊｏｒｉｔｙを出力する機能を設ける。また、ＮＡＮＤ型フラッシュメモリ２０に、外部からの要求に応じて動作条件を変更することのできる機能を設ける。
【００３９】
そして、不揮発性半導体記憶装置１は、プログラム対象となるブロックのＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムベリファイをパスしたときに出力されるグラグＦ＿Ｍａｊｏｒｉｔｙをモニタして時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ＿Ｍａｊｏｒｉｔｙ（プログラム開始からフラグＦ＿Ｍａｊｏｒｉｔｙが出力されるまでの時間）を判定する。
【００４０】
そして、不揮発性半導体記憶装置１は、プログラム対象となるブロックにおけるＮ％パス時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値（例えば、１５０μｓ）を下回ったとき、そのブロックアドレスと、当該ブロックおいて時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数（補正回数）とをブロックアドレス記憶部１２に記憶する。そして、次回よりそのブロックアドレスにアクセスするときには、補正回数を基に条件テーブル１１を参照し、新しい動作条件を適用することをＮＡＮＤ型フラッシュメモリ２０に要求する。
【００４１】
図４は、サイクリング回数に対するプログラム時間ｔＰＲＯＧとＮ％パス時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙとイレース時間ｔＥＲＳの変化特性を示す図である。この図４では、横軸にサイクリング回数（ｌｏｇスケール）を示し、縦軸に時間を示している。なお、縦軸に示す時間は、ｔＰＲＯＧとｔＰＲＯＧ＿ＭａｊｏｒｉｔｙとｔＥＲＳのそれぞれの特性曲線に応じたＡ．Ｕ.（任意単位）である。
【００４２】
この図４に示すように、サイクリング回数０からＮ１の間では、プログラム時間ｔＰＲＯＧと時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙとイレース時間ｔＥＲＳのそれぞれが、ほぼ一定で推移する。そして、サイクリング回数Ｎ１以降、フラッシュメモリ２０では、サイクリングを重ねることでメモリセルの酸化膜にチャージトラップが発生し、メモリセルのプログラム時間ｔＰＲＯＧは短くなっていく（プログラムしやすくなる）。また、逆にイレース時間ｔＥＲＳは長くなっていく。また、プログラム開始からフラグＦ＿Ｍａｊｏｒｉｔｙが出力される時間（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ）も短くなって行く。
【００４３】
そして、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが短くなり、判定基準値（時間Ｒｔｉｍｅ）を下回ったとき（サイクリング回数Ｎ２のとき）に、コントローラ１０は、フラッシュメモリ２０にコマンドＣＭＤを発行し、フラッシュメモリ２０における動作条件（動作条件の詳細な内容については後述する）を変更する。そして、フラッシュメモリ２０の動作条件を変更することにより、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙは、一旦、元の時間（サイクリング回数Ｎ１以下のｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの時間）まで復帰する。
【００４４】
図５は、フラッシュメモリにおける動作条件の変更とｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの変化を示す図である。この図５では、図４と同様に、横軸にサイクリング回数（ｌｏｇスケール）、縦軸に時間（Ａ．Ｕ．）を示している。
この図５に示すように、サイクリング回数０からＮ１の間では、プログラム時間ｔＰＲＯＧとＮ％パス時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙとイレース時間ｔＥＲＳのそれぞれが、ほぼ一定で推移する。そして、サイクリング回数Ｎ１以降、フラッシュメモリ２０は、サイクリングを重ねることでメモリセルの酸化膜にチャージトラップが発生し、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙは短くなっていく。また、逆にイレース時間ｔＥＲＳは長くなっていく。
【００４５】
そして、サイクリング回数Ｎ２において、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが短くなり、判定基準値（時間Ｒｔｉｍｅ）を下回ったときに、コントローラ１０は、フラッシュメモリ２０にコマンドＣＭＤを発行し、フラッシュメモリ２０における動作条件を変更する。そして、フラッシュメモリ２０における動作条件を変更することにより、ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの時間は、一旦、元の時間（サイクリング回数Ｎ１以下のｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの時間）まで復帰する。サイクリング回数Ｎ２において、動作条件を変更することにより、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが元に復帰するが、その後、さらにサイクリング回数を重ねることにより、フラグＦ＿Ｍａｊｏｒｉｔｙが出力される時間（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ）が次第に短くなっていく。
【００４６】
そして、サイクリング回数Ｎ３において、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが短くなり、判定基準値（時間Ｒｔｉｍｅ）を下回ったときに、コントローラ１０は、フラッシュメモリ２０にコマンドＣＭＤを発行し、フラッシュメモリ２０における動作条件を変更する。そして、フラッシュメモリ２０における動作条件を変更することにより、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ間は、再び、元の時間に復帰する。このように、コントローラ１０は、ＮＡＮＤ型フラッシュメモリ２０から出力されるフラグＦ＿Ｍａｊｏｒｉｔｙの信号をモニタして時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを判定（計測）し、このｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが所定の判定基準値を下回るごとに、ＮＡＮＤ型フラッシュメモリ２０における動作条件を変更する。
【００４７】
上記フラッシュメモリ２０おける動作条件を変更するために、コントローラ１０内の条件テーブル１１には、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの判定基準値と、ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを下回った回数と、この下回った回数に対応して次回からの動作でそのブロックに適用されるべき動作条件と、が対応付けられて記憶されている。
【００４８】
図６は、条件テーブルの一例を示す図である。この図６に示す表においては、上から順番に、補正回数（何回目の補正であるかを示す数）と、この補正回数に対応するＮＡＮＤ型フラッシュメモリ２０の動作条件（リード時、プログラム時、ベリファイプログラム時、およびイレース時における動作条件）とを示している。なお、この表において、リード時の電圧Ｖｒｅａｄは、リード時の非選択ワード線の初期電圧を示し、プログラム時の電圧Ｖｉｐｇｍは、プログラム時の初期電圧を示している。また、プログラムベリファイ時の電圧Ｖｐａｓｓは、プログラムベリファイ時の非選択ワード線の初期電圧を示し、電圧Ｖｓｅｌは、選択ワード線の初期電圧を示している。また、イレース時の電圧Ｖｅｒｓは、メモリセルのイレース時の消去電圧（初期電圧）を示している。また、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの判定基準時間（Ｒｔｉｍｅ）として、１５０μs（μｓｅｃ）が設定されている。
【００４９】
この図６に示すように、Ｎ％パス時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ（より正確には、プログラム開始からフラグＦ＿Ｍａｊｏｒｉｔｙが出力されるまでの時間）が判定基準時間１５０μｓよりも最初に短くなった時（図５に示すサイクリング回数Ｎ２のとき）に、１回目の動作条件の補正が行われる。この補正１回目では、リード時の非選択ワード線の電圧Ｖｒｅａｄを初期電圧Ｖｒｅａｄから０．１Ｖ増加させてＶｒｅａｄ１とする（Ｖｒｅａｄ１＝Ｖｒｅａｄ＋０．１Ｖ）。これは、フラッシュメモリの酸化膜が劣化することにより、プログラム速度が速くなり（プログラム電圧が低下し）、メモリセルがオーバプログラミング（閾値Ｖｔが上昇）されている可能性があるため、非選択ワード線の電圧Ｖｒｅａｄを上昇させて対応するものである。
【００５０】
また、この補正１回目では、プログラム時の初期電圧Ｖｉｐｇｍを初期電圧Ｖｉｐｇｍから１．０Ｖ減少させてＶｉｐｇｍ１（Ｖｉｐｇｍ１＝Ｖｉｐｇｍ−１．０Ｖ）とする。これは、フラッシュメモリの酸化膜が劣化することにより、プログラム速度が速くなり、メモリセルがオーバプログラミングされることを防ぐために、プログラム電圧Ｖｉｐｇｍを低下させて対応するものである。
【００５１】
また、補正１回目では、増加型パルスプログラム（ＩＳＰＰ）サイクルにおけるステップ電圧Ｖｓｔｅｐ１を、初期電圧Ｖｓｔｅｐのままとする（Ｖｓｔｅｐ１＝Ｖｓｔｅｐ）。なお、増加型パルスプログラム（ＩＳＰＰ）は、メモリセルのゲートに印加する電圧をステップ状に増加させて書き込みを行う方式であり、ＮＡＮＤ型フラッシュメモリ２０において、プログラム電圧をループ毎に一定値ずつ増加させて、所望のメモリセルへのデータの書き込みを行うものである。
【００５２】
また、補正１回目では、プログラムベリァイ時の非選択ワード線の電圧Ｖｐａｓｓを、初期電圧Ｖｐａｓｓから０．１Ｖ増加させてＶｐａｓｓ１（Ｖｐａｓｓ１＝Ｖｐａｓｓ＋０．１Ｖ）とする。これは、フラッシュメモリの酸化膜が劣化することにより、閾値Ｖｔが低下することがあるため、逆に、ベリファイ時における非選択ワード線の電圧Ｖｐａｓｓを上昇させて対応するものである。また、プログラムベリァイ時の電圧Ｖｓｅｌを、初期電圧Ｖｓｅｌから０．１Ｖ増加させてＶｓｅｌ１（Ｖｓｅｌ１＝Ｖｓｅｌ＋０．１Ｖ）とし、イレース時の電圧Ｖｅｒｓ１は初期電圧Ｖｅｒｓのままとする（Ｖｅｒｓ１＝Ｖｅｒｓ）。なお、この例では、イレース時の電圧Ｖｅｒｓ１を初期電圧Ｖｅｒｓのままにしているが、メモリセルがオーバプログラミングされている可能性を考慮して増加させるようにしてもよい。
【００５３】
次に、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが基準時間１５０μｓよりも２回目に短くなった時（図５に示すサイクリング回数Ｎ３のとき）に、２回目の動作条件の補正が行われる。この補正２回目では、リード時の非選択ワード線の電圧Ｖｒｅａｄを、初期電圧Ｖｒｅａｄから０．２Ｖ増加させてＶｒｅａｄ２とする（Ｖｒｅａｄ２＝Ｖｒｅａｄ＋０．２Ｖ）。また、プログラム電圧Ｖｉｐｇｍを、初期電圧Ｖｉｐｇｍから−１．５Ｖ減少させてＶｉｐｇｍ２（Ｖｉｐｇｍ２＝Ｖｉｐｇｍ−１．５Ｖ）とする。また、ＩＳＰＰサイクルにおけるステップ電圧Ｖｓｔｅｐを、初期電圧Ｖｓｔｅｐから０．１Ｖ減少させてＶｓｔｅｐ２（Ｖｓｔｅｐ２＝Ｖｓｔｅｐ−０．１Ｖ）とする。
【００５４】
また、補正２回目では、プログラムベリァイ時の非選択ワード線の電圧Ｖｐａｓｓを、初期電圧Ｖｐａｓｓから０．２Ｖ増加させてＶｐａｓｓ２（Ｖｐａｓｓ２＝Ｖｐａｓｓ＋０．２Ｖ）とする。また、プログラムベリァイ時の電圧Ｖｓｅｌを、初期電圧Ｖｓｅｌから０．１Ｖ増加させてＶｓｅｌ２（Ｖｓｅｌ２＝Ｖｓｅｌ＋０．１Ｖ）とする。なお、イレース時の電圧Ｖｅｒｓ２は初期電圧Ｖｅｒｓのままとする（Ｖｅｒｓ２＝Ｖｅｒｓ）。
【００５５】
同様にして、コントローラ１０では、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回ったことを検出するごとに、３回目、４回目、・・・・、と順番に補正を繰り返す。
【００５６】
上述のように、本実施形態のＮＡＮＤ型フラッシュメモリ２０を使用する不揮発性半導体記憶装置１は、フラッシュメモリ２０からフラグＦ＿Ｍａｊｏｒｉｔｙが出力される時間（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ）をモニタし、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った場合、コントローラ１０では、そのブロックアドレスと、当該ブロックにおいてｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数（補正回数）とをブロックアドレス記憶部１２に記憶する（初回目ならば１、２回目ならば２、３回目ならば３、・・・・）。
【００５７】
そして、コントローラ１０は、ブロックアドレス記憶部１２にブロックアドレスが記憶されているブロックにアクセスしようとする場合は、ブロックアドレス記憶部１２に記憶されている当該ブロックの補正回数を基に条件テーブル１１を参照し、この補正回数に対応する動作条件を読み出し、その読み出した動作条件をまずＮＡＮＤ型フラッシュメモリ２０に対して設定し、その後に、所望の動作（リード／プログラム／イレース）を行う。
【００５８】
なお、図６に示す条件テーブルにおける設定値は、例えば、実験データにより決定することができる。また、図６に示す条件テーブルは、一例を示すものであって、不揮発性半導体記憶装置の種類や構成に応じて、その設定条件は、変更される得るものである。
また、あるブロックにおける補正回数が増大（特性劣化が進行）した場合は、当該ブロックを使用しないようにすることができる。これにより、フラッシュメモリ２０の寿命を延ばすとともに、フラッシュメモリ２０における信頼性の向上を図ることができる。
【００５９】
また、図７は、上述した不揮発性半導体記憶装置１における概略の動作の流れをフローチャートで示したものである。図７（Ａ）は、フラッシュメモリ２０におけるプログラム動作時の処理の流れを示し、図７（Ｂ）は、プログラム動作時におけるコントローラ１０の処理の流れを示している。
【００６０】
最初に、図７（Ａ）に示すフローチャートを参照して、フラッシュメモリ２０における動作の流れについて説明する。
最初に、フラッシュメモリ２０においては、動作条件が初期状態に設定されているものとする（ステップＳ１０１）。そして、フラッシュメモリ２０は、コントローラ１０から、メモリセルアレイ２１内のあるブロックへのプログラム実行指令を受信した場合に（ステップＳ１０２）、このプログラム実行指令とともに動作条件変更設定コマンドＣＭＤを受信したか否かを判定する（ステップＳ１０３）。
フラッシュメモリ２０は、ステップＳ１０３において動作条件変更設定コマンドＣＭＤを受信しなかったと判定した場合（ステップＳ１０３：Ｎｏ）は、ステップＳ１０５に移行し、メモリセルアレイ２１に対する動作条件を変更することなく、プログラム対象となるブロックに対してプログラムを実行する（ステップＳ１０５）。
【００６１】
一方、フラッシュメモリ２０は、ステップＳ１０３において動作条件変更設定コマンドＣＭＤを受信したと判定した場合（ステップＳ１０３：Ｙｅｓ）に、動作条件変更設定コマンドＣＭＤに含まれる動作条件のデータを基に、動作条件変更設定部３２によりメモリセルアレイ２１に対する動作条件を変更する（ステップＳ１０４）。その後、メモリセルアレイ２１は、ステップＳ１０５に移行し、メモリセルアレイ２１に対する動作条件を変更した状態において、当該ブロックに対してプログラムを実行する（ステップＳ１０５）。
【００６２】
続いて、フラッシュメモリ２０では、ＩＳＰＰの各サイクルのプログラムベリファイの際に、フェイルビットカウンタ３７およびプログラムビット比計算部３６によりＮ％レシオ（プログラムビット比）を演算（算出）し（ステップＳ１０６）、このＮ％レシオが所定の比率（Ｒｎ％：例えば、７０％）を超えたか否かを判定する（ステップＳ１０７）。フラッシュメモリ２０は、Ｎ％レシオが所定の比率（Ｒｎ％）を超えていないステップＳ１０７で判定された場合（ステップＳ１０７：Ｎｏ）に、ステップＳ１０９に移行し、対象となるブロックへのプログラムが完了したか否かを判定する（ステップＳ１０９）。
【００６３】
一方、フラッシュメモリ２０は、ステップＳ１０７においてＮ％レシオが所定の比率（Ｒｎ％）を超えたと判定された場合（ステップＳ１０７：Ｙｅｓ）に、すでにフラグＦ＿Ｍａｊｏｒｉｔｙをコントローラ１０に送信済みか否かを判定する（ステップＳ１０８）。そして、フラッシュメモリ２０は、ステップＳ１０８においてフラグＦ＿Ｍａｊｏｒｉｔｙを送信済みと判定された場合（ステップＳ１０８：Ｙｅｓ）に、ステップＳ１１０に移行して、プログラムが完了したか否かを判定する。また、フラッシュメモリ２０は、ステップＳ１０８においてフラグＦ＿Ｍａｊｏｒｉｔｙを送信済みでないと判定された場合（ステップＳ１０８：Ｎｏ）に、コントローラ１０に対して、フラグＦ＿Ｍａｊｏｒｉｔｙを送信し（ステップＳ１０９）、その後、ステップＳ１１０に移行する。
【００６４】
ステップＳ１１０ではプログラム対象となるブロックへのプログラムが完了したか否かが判定され、フラッシュメモリ２０は、ステップＳ１１０においてブロックへのプログラムが完了したと判定された場合（ステップＳ１１０：Ｙｅｓ）に、ステップＳ１１１に移行してプログラム動作を終了する。一方、フラッシュメモリ２０は、ステップＳ１１０においてブロックへのプログラムが完了していないと判定された場合（ステップＳ１１０：Ｎｏ）に、ステップＳ１０５に移行しプログラム動作を継続する。
【００６５】
次に、図７（Ｂ）を参照して、プログラム動作時におけるコントローラ１０の処理の流れについて説明する。
図７（Ｂ）に示すフローチャートを参照して、フラッシュメモリ２０内のプログラム対象となるブロックへのプログラムが開始されると（ステップＳ２０１）、コントローラ１０では、条件テーブル１１と、ブロックアドレス記憶部１２とを参照し（ステップＳ２０２）、当該ブロックに対するフラッシュメモリ２０の動作条件を変更するか否かを判定する（ステップＳ２０３）。このステップＳ２０３の判定において、コントローラ１０は、プログラム対象となるブロックのブロックアドレスがブロックアドレス記憶部１２に記憶されている場合に、このブロックに対してフラッシュメモリ２０の動作条件を変更すると判定するとともに、このブロックにおける補正回数を読み出し、この補正回数に応じた動作条件を条件テーブル１１から抽出する。
【００６６】
そして、コントローラ１０は、ステップＳ２０３においてフラッシュメモリ２０の動作条件を変更すると判定された場合（ステップＳ２０３：Ｙｅｓ）に、フラッシュメモリ２０に対して、プログラム実行指令を送信するとともに（ステップＳ２０４）、動作条件変更設定コマンドＣＭＤを送信する（ステップＳ２０５）。
一方、コントローラ１０は、ステップＳ２０３においてフラッシュメモリ２０の動作条件を変更しないとステップＳ２０３で判定された場合（ステップＳ２０３：Ｎｏ）に、フラッシュメモリ２０に対して、プログラム実行指令のみを送信する（ステップＳ２０６）。
【００６７】
そして、フラッシュメモリ２０においてプログラム動作が開始されると、コントローラ１０は、フラッシュメモリ２０から出力されるフラグＦ＿Ｍａｊｏｒｉｔｙをモニタし（ステップＳ２０７）、フラッシュメモリ２０からフラグＦ＿Ｍａｊｏｒｉｔｙを受信したか否かを判定する（ステップＳ２０８）。コントローラ１０は、このフラグＦ＿Ｍａｊｏｒｉｔｙのモニタを、フラッシュメモリ２０におけるプログラム実行の期間中、継続して実行する。
【００６８】
コントローラ１０は、ステップＳ２０８においてフラッシュメモリ２０からフラグＦ＿Ｍａｊｏｒｉｔｙを受信したと判定された場合（ステップＳ２０８：Ｙｅｓ）に、ステップＳ２０９に移行する。そして、コントローラ１０は、プログラムを開始してからフラグＦ＿Ｍａｊｏｒｉｔｙを受信するまでの時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを判定（算出）する（ステップＳ２０９）。その後、ステップＳ２１０に移行し、コントローラ１０は、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが所定の判定基準時間Ｒｔｉｍｅより短いか否かを判定する（ステップＳ２１０）。
【００６９】
コントローラ１０は、ステップＳ２１０において時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが、所定の判定基準時間Ｒｔｉｍｅよりも長いと判定された場合（ステップＳ２１０：Ｎｏ）に、ステップＳ２１４に移行して処理を終了する。
【００７０】
一方、コントローラ１０は、ステップＳ２１０において、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが所定の判定基準時間Ｒｔｉｍｅよりも短いと判定された場合（ステップＳ２１０：Ｙｅｓ）に、当該ブロックのブロックアドレスをブロックアドレス記憶部１２に記憶するとともに（ステップＳ２１１）、当該ブロックアドレスに対応する補正回数をインクリメント（補正回数＝補正回数＋１）してブロックアドレス記憶部１２に記憶する（ステップＳ２１２）。これにより、コントローラ１０は、当該ブロックに対して、補正回数に応じたフラッシュメモリ２０の動作条件を設定し（ステップＳ２１３）、その後、ステップＳ２１４に移行して処理を終了する。
【００７１】
以上、説明したように、コントローラ１０は、Ｎ％（Ｎ＝１〜１００の任意の数）のプログラムすべきセルがログラムベリファイをパスしたときに出力されるフラグＦ＿Ｍａｊｏｒｉｔｙをモニタして時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを判定する。また、コントローラ１０は、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの判定基準値と、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数（補正回数）に応じてフラッシュメモリ２０に適用されるべき動作条件を条件テーブル１１に保持する。
【００７２】
そして、不揮発性半導体記憶装置１では、プログラム対象となるブロックにおいて、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った場合は、このブロックのブロックアドレスを、このブロックにおいて判定基準値を下回った回数（補正回数）とともにブロックアドレス記憶部１２に記憶しておき、このブロックに次にアクセスする際には、条件テーブル１１を参照し、補正回数に応じた新しい動作条件を適用するようにフラッシュメモリ２０に要求する。
【００７３】
このように、上記不揮発性半導体記憶装置１においては、ＮＡＮＤ型フラッシュメモリ２０上での個々のブロックのサイクリング回数を記憶しておく必要がないのでレジスタ領域が少なくてすむ。また、個々のブロックごとに特性の劣化状態の管理可能なので、平均のサイクリング回数を利用してＮＡＮＤ型フラッシュメモリ２０の動作条件を変更する場合に比べて、ＮＡＮＤ型フラッシュメモリの全体の特性劣化を招くことがなく、ＮＡＮＤ型フラッシュメモリ２０の信頼性の向上を図ることができる。
【００７４】
［第２の実施形態］
第２の実施形態では、不揮発性半導体記憶装置に、プログラム時間をモニタするために、各ブロックごとにオール“０”（全てのデータがゼロ）の書き込み専用領域を設ける。そして、ＮＡＮＤ型フラッシュメモリを使用する不揮発性半導体記憶装置は、プログラム対象となるブロックの書き込み専用領域のＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムベリファイをパスしたときに出力されるグラグＦ＿Ｍａｊｏｒｉｔｙ（Ｎ％パス情報）をモニタし、Ｎ％パス時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ＿Ｍａｊｏｒｉｔｙ（書き込み専用領域におけるプログラム開始からフラグＦ＿Ｍａｊｏｒｉｔｙが出力されるまでの時間）を判定（計測）する。また、不揮発性半導体記憶装置は、Ｎ％パス時時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ（単に「時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ」とも呼ぶ）の判定基準値と、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回ったときに、次にＮＡＮＤ型フラッシュメモリに適用されるべき動作条件を保持する。
【００７５】
［不揮発性半導体記憶装置の構成］
図８は、第２の実施形態に係わる不揮発性半導体記憶装置１Ａの構成を示す図である。
なお、図８において、図１と同一の部分については同一の符号を付し、その説明を省略する。不揮発性半導体記憶装置１Ａは、メモリセルがアレイ状に配列されたＮＡＮＤ型フラッシュメモリ２０Ａと、このＮＡＮＤ型フラッシュメモリ２０Ａを制御するコントローラ１０と、を有して構成される。このＮＡＮＤ型フラッシュメモリ２０Ａは、後述するように複数のメモリセルがアレイ状に配列されたメモリセルアレイ２１と、オール“０”の書き込み専用領域２１Ａを有している。
【００７６】
図９は、ＮＡＮＤ型フラッシュメモリ２０Ａの構成を示す図であり、本発明に関係する部分を示したものである。なお、図９において、図２と同一の部分については同一の符号を付し、その説明を省略する。ＮＡＮＤ型フラッシュメモリ２０Ａは、メモリセルアレイ２１と、このメモリセルアレイ２１内の書き込み専用領域２１Ａと、ページバッファデコーダ２２Ａを備えるページバッファ２２と、ロウデコーダ２３とを有する。また、ＮＡＮＤ型フラッシュメモリ２０は、このＮＡＮＤ型フラッシュメモリ２０の全体の動作を統括して制御するメモリ制御回路３１と、動作条件変更設定部３２と、出力データバッファ３３と、入力データバッファ３４と、プログラムビット比計算部３６Ａと、フェイルビットカウンタ３７Ａと、動作電圧コントローラ３８と、を有している。
【００７７】
メモリセルアレイ２１上には、書き込み専用領域２１Ａが設けられている。この書き込み専用領域２１Ａは、図上では、一箇所に集合した状態で示されているが、実際にはプログラム単位（例えば、データの書き込み単位）となる各ブロック内に、オール“０”のデータの書き込み専用領域として設けられるものである。この書き込み専用領域２１Ａにデータの書き込みおよび消去を行うことにより、各ブロックにおける特性劣化をモニタするものである。なお、この書き込み専用領域２１Ａにオール“０”のデータの書き込みを行うことにより、各ブロックにおける特性劣化を最悪条件により判定することができる。
【００７８】
フェイルビットカウンタ３７Ａは、ベリファイ読み出し時において、書き込み専用領域２１Ａにおいてフェイルセルと判定されたメモリセルのビット数（「フェイルセル数」とも呼ぶ）をカウントし、このフェイルセル数Ｆｂの情報をプログラムビット比計算部３６Ａに出力する。
プログラムビット比計算部３６Ａは、書き込み専用領域２１Ａにおいてオール“０”を書き込んだビット数Ｐｂ（予め設定されたビット数）の情報と、フェイルビットカウンタ３７Ａから入力したフェイルセル数Ｆｂと、を基に、プログラムビット比（％）を算出する。
そして、プログラムビット比計算部３６Ａは、プログラムビット比（プログラムベリファイをパスしたメモリセルの割合）が、所定の割合（例えば、７０％）を超えたときにフラフＦ＿Ｍａｊｏｒｉｔｙのコントローラ１０に向けて出力する。
【００７９】
ＮＡＮＤ型フラッシュメモリ２０Ａは、サイクリングを重ねることでメモリセルの酸化膜にチャージトラップが発生し、メモリセルのプログラム時間は早くなっていく（プログラムしやすくなる）。しかし、ＮＡＮＤ型フラッシュメモリ２０Ａでは複数ビットのセルを同時にプログラムするため、その中には必ずプログラム速度が遅い（時間が長い）ビットが存在し、合計したプログラム時間（ｔＰＲＯＧ）としては現れにくい。
【００８０】
そこで、速度が遅い（プログラム時間が長い）ビットにより大方のプログラム時間の変化がわからなくなるのを防ぐため、ＮＡＮＤ型フラッシュメモリ２０Ａに、オール“０”の書き込み専用領域２１Ａを設けている。ＮＡＮＤ型フラッシュメモリ２０Ａは、この書き込み専用領域２１Ａにおけるプログラムフェイルビット数をカウントし、書き込み専用領域２１ＡのＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムベリファイをパスしたときにフラグＦ＿Ｍａｊｏｒｉｔｙを外部に出力する機能を設ける。また、ＮＡＮＤ型フラッシュメモリ２０Ａに、外部からの要求に応じて動作条件を変更することのできる機能を設ける。
【００８１】
そして、不揮発性半導体記憶装置１Ａは、図４〜図６を用いて説明した不揮発性半導体記憶装置１と同様に、プログラム対象となる書き込み専用領域２１Ａにおける時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙをモニタし、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った場合、そのブロックアドレスと、当該ブロックにおいて時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数（補正回数）と、ブロックアドレス記憶部１２に記憶する（初回目ならば１、２回目ならば２、３回目ならば３、・・・・）。
【００８２】
そして、コントローラ１０は、ブロックアドレス記憶部１２にブロックアドレスが記憶されているブロックにアクセスしようとする場合は、ブロックアドレス記憶部１２に記憶されている当該ブロックの補正回数を基に条件テーブル１１を参照し、この補正回数に対応する動作条件を読み出し、その読み出した動作条件をまずＮＡＮＤ型フラッシュメモリ２０Ａに対して設定し、その後に、所望の動作（リード／プログラム／イレース）を行う。
【００８３】
なお、図７（Ａ）において示したフラッシュメモリ２０におけるプログラム動作時の処理流れは、フラッシュメモリ２０Ａにおけるプログラム動作時の処理流れにも当てはまる。ただし、ステップＳ１０６における演算処理は、フラッシュメモリ２０Ａでは、フェイルビットカウンタ３７Ａおよびプログラムビット比計算部３６Ａが行なう。
【００８４】
コントローラ１０は、書き込み専用領域２１Ａ内のＮ％（Ｎ＝１〜１００の任意の数）のプログラムすべきセルがログラムベリファイをパスしたときに出力されるフラグＦ＿Ｍａｊｏｒｉｔｙをモニタして時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを判定する。また、コントローラ１０は、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙの判定基準値と、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った回数（補正回数）に応じてフラッシュメモリ２０Ａに適用されるべき動作条件を条件テーブル１１に保持する。
【００８５】
そして、不揮発性半導体記憶装置１Ａでは、プログラム対象となるブロックにおいて、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回った場合は、このブロックのブロックアドレスを、このブロックにおいて判定基準値を下回った回数（補正回数）とともにブロックアドレス記憶部１２に記憶しておき、このブロックに次にアクセスする際には、条件テーブル１１を参照し、補正回数に応じた新しい動作条件を適用するようにフラッシュメモリ２０Ａに要求する。
【００８６】
このように、上記不揮発性半導体記憶装置１Ａにおいては、ＮＡＮＤ型フラッシュメモリ２０Ａ上での個々のブロックのサイクリング回数を記憶しておく必要がないのでレジスタ領域が少なくてすむ。また、個々のブロックごとに特性の劣化状態の管理可能なので、平均のサイクリング回数を利用してＮＡＮＤ型フラッシュメモリ２０Ａの動作条件を変更する場合に比べて、ＮＡＮＤ型フラッシュメモリの全体の特性劣化を招くことがなく、ＮＡＮＤ型フラッシュメモリ２０Ａの信頼性の向上を図ることができる。
【００８７】
なおここで、本発明と上記実施形態の対応について補足して説明しておく。上記実施形態において、本発明における不揮発性半導体記憶装置は、図１に示す不揮発性半導体記憶装置１が対応し、本発明におけるフラッシュメモリは、ＮＡＮＤ型フラッシュメモリ（（本明細書では、単に「フラッシュメモリ」とも呼ぶ）２０が対応する。また、本発明における制御部は、図１に示すコントローラ１０が対応し、本発明における条件テーブルは、条件テーブル１１が対応する。また、本発明におけるブロックアドレス記憶部は、ブロックアドレス記憶部１２が対応し、本発明におけるＮ％パス時間判定部は、Ｎ％パス時間（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ）判定部１３が対応する。また、本発明におけるＮ％パス情報は、フラッシュメモリ２０から出力されるフラグＦ＿Ｍａｊｏｒｉｔｙが対応し、本発明における第１時間は、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが対応し、本発明における第２時間は、判定基準値が対応する。
【００８８】
（１）そして、上記実施形態において、不揮発性半導体記憶装置１は、フラッシュメモリ２０内のブロックに対してプログラムを行う際に、このブロック内のプログラムすべきメモリセルのうちの所定の割り合いのメモリセルのプログラムが完了するまでの第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを計測する機能と、第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙと所定の判定基準値である第２時間とを比較する機能と、上記ブロックにおいて第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが第２時間を下回った場合は、当該ブロックに次回からアクセスする際には、フラッシュメモリ２０の動作条件を所定の動作条件に変更してアクセスする機能と、を備える。
【００８９】
このような構成の不揮発性半導体記憶装置１では、プログラム対象となるブロックにおいてプログラムされるべきメモリセルのＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムベリファイをパスする第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを判定（計測）し、この時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが判定基準値を下回ったときに、当該ブロックのブロックアドレスを記憶しておき、次にそのブロックにアクセスする際には、そのブロックに対してのみフラッシュメモリ２０の動作条件を変更する。
これにより、フラッシュメモリ内の個々のブロックごとにメモリセルの特性の劣化状態を検出でき、フラッシュメモリの動作条件を個々のブロックの劣化状態に応じて設定することができる。また、メモリセルが劣化していないブロックに対しては通常の動作条件を設定できる。さらには、劣化の程度が大きい（劣化が進んだ）ブロックを使用しないようにすることもできる。このため、フラッシュメモリの全体の特性劣化を招くことがなく、フラッシュメモリの寿命を延ばすとともに、フラッシュメモリの信頼性の向上を図ることができる。
【００９０】
（２）また、上記実施形態において、不揮発性半導体記憶装置１は、メモリセルがアレイ状に配列されたメモリ領域を有するフラッシュメモリ２０とフラッシュメモリ２０の動作を制御する制御部（コントローラ１０）とを有し、フラッシュメモリ２０は、プログラム対象となるブロック内のプログラムすべきメモリセルのうちの予め設定したＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムベリファイをパスしたときに、このＮ％のメモリセルがプログラムベリファイをパスしたことを示すＮ％パス情報（フラグＦ＿Ｍａｊｏｒｉｔｙ）を外部（コントローラ１０）に出力する機能と、外部（コントローラ１０）からの要求に応じて当該フラッシュメモリ２０における動作条件を変更する機能と、を備え、制御部（コントローラ１０）は、フラッシュメモリ２０から出力されるＮ％パス情報（フラグＦ＿Ｍａｊｏｒｉｔｙ）をモニタすることにより、プログラム対象となるブロックにおけるプログラムの開始からＮ％のメモリセルがプログラムベリファイをパスするまでに要した第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを判定する機能と、第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙと第２時間とを比較する機能と、プログラム対象となるブロックにおいて第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが第２時間を下回った場合に、当該ブロックのブロックアドレスを記憶するとともに、次回より当該ブロックにアクセスする際には、フラッシュメモリ２０の動作条件を所定の動作条件に変更するようにフラッシュメモリ２０に要求する機能と、を備える。
【００９１】
このような構成の不揮発性半導体記憶装置１では、フラッシュメモリ２０は、プログラム対象となるブロック内のメモリセルの総数に対してＮ％（Ｎ＝１〜１００の任意の数）のメモリセルがプログラムされたときに外部（コントローラ１０）にＮ％パス情報（フラグＦ＿Ｍａｊｏｒｉｔｙ）を出力する。また、フラッシュメモリ２０は、外部（コントローラ１０）からの要求に応じて動作条件を変更することができる。
制御部（コントローラ１０）では、フラッシュメモリ２０から出力されるＮ％パス情報（フラグＦ＿Ｍａｊｏｒｉｔｙ）をモニタして、第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ（プログラム開始からフラグＦ＿Ｍａｊｏｒｉｔｙが出力されるまでの時間）を判定する。そして、制御部（コントローラ１０）は、時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが第２時間（判定基準値）を下回ったとき、そのブロックアドレス及びそのブロックに次回から適用すべき動作条件を記憶し、次回よりそのブロックアドレスにアクセスするときには新しい動作条件を適用するようにフラッシュメモリ２０に要求する。上記動作条件とは、例えばプログラム／プログラムベリファイ／リード／イレース（Ｐｒｏｇａｒａｍ／Ｐｒｏｇａｒｍ  Ｖｅｒｉｆｙ／Ｒｅａｄ／Ｅｒａｓｅ）の際の動作条件である。
これにより、フラッシュメモリにおける個々のブロックのサイクリング回数を記憶することなく、個々のブロックごとにメモリセルの特性の劣化を検出し、フラッシュメモリの動作条件を個々のブロックの劣化状態に応じて設定することができる。このため、フラッシュメモリの寿命を延ばすとともに、フラッシュメモリの信頼性の向上を図ることができる。
【００９２】
（３）また、上記実施形態において、制御部（コントローラ１０）は、フラッシュメモリ２０内の１つのブロックに対してプログラムを行う際に第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが第２時間（判定基準値）を下回る毎に、当該ブロックに次にアクセスする際、フラッシュメモリ２０に対して異なる動作条件を設定する。
【００９３】
このような構成の不揮発性半導体記憶装置１では、ある１のブロックに対してフラッシュメモリ２０の動作条件を第１動作条件に変更した後に、当該１のブロックにおいて再び第１時間（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ）が第２時間（判定基準値）を下回るようになった場合は、当該１のブロックに対するフラッシュメモリ２０の動作条件を次の第２動作条件に変更する。以降、当該１のブロックにおいて第１時間（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ）が第２時間を下回るごとに、この下回った回数に応じて予め設定（記憶）された動作条件をフラッシュメモリ２０に対して設定する。
これにより、あるブロックにおいて、メモリセルの特性劣化が進行する場合には、このブロックに対して、メモリセルの特性劣化の状態に応じた動作条件を設定することができる。このため、フラッシュメモリの信頼性の向上を図ることができる。
【００９４】
（４）また、上記実施形態において、不揮発性半導体記憶装置１は、プログラム対象となるブロックにおけるプログラム開始からＮ％パス情報（フラグＦ＿Ｍａｊｏｒｉｔｙ）が出力されるまでの第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを判定するとともに、この第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙと第２時間とを比較するＮ％パス時間判定部１３と、プログラム対象となるブロックにおいて第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが第２時間を下回った場合に、当該ブロックのブロックアドレスと、当該ブロックにおいて第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙが第２時間を下回った回数である補正回数と、を対応付けて記憶するブロックアドレス記憶部１２と、補正回数と、この補正回数に応じてフラッシュメモリ２０に対して適用されるべき動作条件と、を対応付け保持する条件テーブル１１と、を備え、制御部（コントローラ１０）は、フラッシュメモリ２０内のブロックに対してアクセスを開始する前に、ブロックアドレス記憶部１２と条件テーブル１１とを参照し、当該ブロックのブロックアドレスがブロックアドレス記憶部１２に記憶されている場合は、当該ブロックの補正回数に応じた動作条件を条件テーブル１１から抽出し、この抽出した動作条件をフラッシュメモリ２０に対して設定した後に、当該ブロックに対してアクセスを開始する。
【００９５】
このような構成の不揮発性半導体記憶装置１では、Ｎ％パス時間判定部１３により、プログラム対象となるブロックにおけるプログラム開始からＮ％パス情報（フラグＦ＿Ｍａｊｏｒｉｔｙ）が出力されるまでの第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙを判定するとともに、該第１時間ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙと第２時間（判定基準値）とを比較する。また、第１時間（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ）が第２時間を下回ったブロックについては、当該ブロックのブロックアドレスを、当該ブロックにおいて第１時間（ｔＰＲＯＧ＿Ｍａｊｏｒｉｔｙ）が第２時間を下回った回数（補正回数）とともにブロックアドレス記憶部１２に記憶する。また補正回数と、この補正回数に応じてフラッシュメモリ２０に対して適用されるべき動作条件と、を対応付けて条件テーブル１１に保持する。
そして、制御部（コントローラ１０）は、フラッシュメモリ２０内のブロックにアクセスを開始する前に、ブロックアドレス記憶部１２と条件テーブル１１とを参照し、当該ブロックのブロックアドレスがブロックアドレス記憶部１２に記憶されている場合は、当該ブロックの補正回数に応じた動作条件を条件テーブル１１から抽出し、この抽出した動作条件をフラッシュメモリ２０に対して設定した後に、当該ブロックに対してアクセスを開始する。
これにより、あるブロックにおいてメモリセルの特性が劣化した場合は、このブロックのブロックアドレスを保持（記憶）するとともに、このブロック内のメモリセルの特性劣化に応じた動作条件をフラッシュメモリ２０に対して設定することができる。
【００９６】
（５）また、上記実施形態において、アクセスする際に変更する動作条件は、フラッシュメモリ２０のブロックに対してプログラム、プログラムベリファイ、リード、イレースのいずれか、または全部の処理を行う際の動作条件である
これにより、あるブロックにおいて、メモリセルの特性が劣化した場合には、このメモリセルの劣化状態に応じて、プログラム時、プログラムベリファイ時、リード時、およびイレース時の動作条件（例えば、プログラム電圧、リード電圧、ベリファイ電圧等の電圧条件）等を適切に設定することができる。
【００９７】
（６）また、本発明における書き込み専用領域は、書き込み専用領域２１Ａが対応する。不揮発性半導体記憶装置１Ａでは、ブロックに対してプログラムを行なう際に、所定の同一データを書き込むための書き込み専用領域２１Ａをブロック内に設け、第１時間を判定する機能として、ブロックへのプログラム開始から書き込み専用領域２１Ａ内のメモリセルのうちの所定の割合のメモリセルのプログラムが完了するまでの時間を第１時間として判定する。
【００９８】
（７）また、上記実施形態において、書き込み専用領域２１Ａに書き込まれるデータは、フラッシュメモリのメモリセルのフローティングゲートに電荷を注入して書き込まれるデータである。
これにより、あるブロックにおけるメモリセルの劣化を判定する場合に、書き込み専用領域２１Ａ内のメモリセルに最もストレス（負担）を与えるデータを書き込むことができる。このため、ブロック内のメモリセルの劣化状態を最悪条件で評価することができる。
【００９９】
以上、本発明の実施の形態について説明したが、本発明の不揮発性半導体記憶装置は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【０１００】
例えば、上述した実施形態では、フラッシュメモリがＮＡＮＤ型フラッシュメモリの例を示したが、フラッシュメモリは、ＮＯＲ型のフラッシュメモリであってもよい。
また、本発明は、上述した不揮発性半導体記憶装置に限らず、フラッシュメモリを内蔵する種々のシステムに効果的に適用できるものである。
【符号の説明】
【０１０１】
１，１Ａ…不揮発性半導体記憶装置、１０…コントローラ、１１…条件テーブル、１２…ブロックアドレス記憶部、１３…Ｎ％パス時間判定部、２０，２０Ａ…フラッシュメモリ、２１…メモリセルアレイ、２１Ａ…書き込み専用領域、２２…ページバッファ、２２Ａ…ページバッファデコーダ、２３…ロウデコーダ、３１…メモリ制御回路、３２…動作条件変更設定部、３３…出力データバッファ、３４…入力データバッファ、３５…プログラムビットカウンタ、３６，３６Ａ…プログラムビット比計算部、３７，３７Ａ…フェイルビットカウンタ、３８…動作電圧コントローラ
【図１】
2013125574.tif 000003
【図２】
2013125574.tif 000004
【図３】
2013125574.tif 000005
【図４】
2013125574.tif 000006
【図５】
2013125574.tif 000007
【図６】
2013125574.tif 000008
【図７】
2013125574.tif 000009
【図８】
2013125574.tif 000010
【図９】
2013125574.tif 000011
【図１０】
2013125574.tif 000012