(57)【要約】【課題】予測可能性が低い乱数を発生できる乱数発生回路を提供する。【解決手段】本発明の乱数発生回路は、不揮発性メモリに搭載される乱数発生回路であって、複数の不揮発性メモリセルを所定の動作条件の基で同一のデータに変更する処理を行い、その後にベリファイ動作を実行してイレースセルとプログラムセルの分布の情報を生成し、該生成した分布の情報に基づいて乱数を発生させる。【選択図】図３
2014021529.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに搭載される乱数発生回路であって、複数の不揮発性メモリセルを所定の動作条件の基で同一のデータに変更する処理を行い、その後にベリファイ動作を実行してイレースセルとプログラムセルの分布の情報を生成し、該生成した分布の情報に基づいて乱数を発生させることを特徴とする乱数発生回路。
【請求項２】
前記所定の動作条件の基で、前記複数の不揮発性メモリセルに対してプログラム動作又はイレース動作を行い、その後にベリファイ動作を実行してイレースセルとプログラムセルの分布の情報を生成し、該生成した分布の情報に基づいて乱数を発生させることを特徴とする請求項１に記載の乱数発生回路。
【請求項３】
前記動作条件は、前記プログラム動作又はイレース動作の後のベリファイ動作においてベリファイパスしたメモリセルの割合が所定の割合になるように設定され、
前記ベリファイパスしたメモリセルの割合が前記所定の割合になる場合に、前記複数の不揮発性メモリセルについてのベリファイパスしたメモリセルとベリファイフェイルしたメモリセルとの分布の情報を検出し、該分布の情報に基づいて乱数を生成する
ことを特徴とする請求項２に記載の乱数発生回路。
【請求項４】
前記動作条件を、予め設定した初期条件であって前記ベリファイ動作においてベリファイパスしたメモリセルが前記所定の割合以下となる第１動作条件から、ベリファイパスしたメモリセルが前記所定の割合以上となる第２動作条件に向けて次第に移行させ、
前記ベリファイ動作において前記ベリファイパスしたメモリセルの割合が前記所定の割合を超えたと判定された場合に、前記ベリファイパスしたメモリセルとベリファイフェイルしたメモリセルとの分布の情報を検出する
ことを特徴とする請求項３に記載の乱数発生回路。
【請求項５】
前記複数の不揮発性メモリセルは、１ページ分の不揮発性メモリセルであって、
それぞれのメモリセルに対応して１つのページバッファが設けられ、
前記１ページ分の不揮発性メモリセルについての前記ベリファイ動作により、ベリファイパスするメモリセルが前記所定の割合を超えた判定された場合に、前記ページバッファに読み出されたデータを乱数として保持する
ことを特徴とする請求項４に記載の乱数発生回路。
【請求項６】
前記ページバッファは、
前記ページバッファに読み出された前記不揮発性メモリセルのデータを保持する第１ラッチ回路と、
前記第１ラッチ回路のデータを退避して保持するための第２ラッチ回路と、
を備え、
前記ベリファイ動作においてベリファイパスするメモリセルが前記所定の割合を超えたと判定された場合に、該ベリファイ動作を終了し、
前記ベリファイ動作の終了後に、前記第１ラッチ回路から前記第２ラッチ回路へデータを退避し、
前記データの退避後に前記不揮発性メモリセルをイレースし、
前記不揮発性メモリセルのイレース後に、前記第２ラッチに退避したデータを前記第１ラッチ回路に戻し、
前記第１ラッチ回路に戻されたデータを前記不揮発性メモリセルに書き戻す
ことを特徴とする請求項５に記載の乱数発生回路。
【請求項７】
請求項１から６のいずれか１項に記載の乱数発生回路を備える不揮発性半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数発生回路に関し、特に、不揮発性半導体装置に搭載される乱数発生回路、及びこの乱数発生回路を備える不揮発性半導体装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリにおいては、記憶するデータの暗号化のために乱数発生回路が使用されることがある。この乱数発生回路にはいくつかの種類があるが、その一例として、線形帰還シフトレジスタ（ｌｉｎｅａｒ  ｆｅｅｄｂａｃｋ  ｓｈｉｆｔ  ｒｅｇｉｓｔｅｒ；ＬＦＳＲ）を用いた乱数発生回路などがある。図９は、ＬＦＳＲを用いた擬似乱数発生回路の例を示す図である。従来の乱数発生回路としては、図９に示すようなタップシーケンスのＬＦＳＲを用いた擬似乱数発生回路がある。
【０００３】
なお、乱数発生回路に関連する半導体装置がある（特許文献１を参照）。この特許文献１に記載の半導体装置は、テスト時に、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）回路とＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ  Ｓｅｌｆ−Ｔｅｓｔ）回路とが活性化された状態で、ＥＣＣ回路によるエラー訂正が必ず行われるように構成されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−７８４３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の半導体装置には、ＬＦＳＲを搭載した擬似乱数発生回路が搭載されているが、発生結果の予測がつきやすいので、セキュリティ用途で使用できない。
しかしながら、ＬＦＳＲのような、擬似乱数発生回路で生成される乱数は、一見、乱数のように見えるが、実際には特定のアルゴリズムにより実現されており、生成される乱数の予測が可能である。また、一定の周期で同じ乱数が発生するため、固有ＩＤなどのセキュリティの用途には使用できないという問題がある。
【０００６】
本発明は、斯かる実情に鑑みなされたものであり、その目的は、ＬＦＳＲを用いた擬似乱数発生回路に比較して予測可能性が低い乱数を発生させることができる、乱数発生回路、及び不揮発性半導体装置を提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、上記課題を解決するためになされたものであり、本発明の乱数発生回路は、不揮発性メモリに搭載される乱数発生回路であって、複数の不揮発性メモリセルを所定の動作条件の基で同一のデータに変更する処理を行い、その後にベリファイ動作を実行してイレースセルとプログラムセルの分布の情報を生成し、該生成した分布の情報に基づいて乱数を発生させることを特徴とする。
このような構成の乱数発生回路では、複数の不揮発性メモリセルを所定の動作条件の基で一括して同一のデータに変更する処理を行い、ベリファイ動作によりイレースセルと判定される不揮発性メモリセルと、ベリファイ動作によりプログラムセルと判定される不揮発性メモリセルとを発生させる。そして、このベリファイ動作により、イレースセルとプログラムセルとの分布の状態を検出し、この分布の情報に基づいて乱数を生成する。
これにより、本発明の乱数発生回路は、不揮発性メモリセルの特性のばらつきを利用して、予測可能性が低い乱数を発生することができる。
【０００８】
また、本発明の不揮発性半導体装置は、上記の乱数発生回路を備えることを特徴とする。これにより、本発明の不揮発性半導体装置は、不揮発性メモリセルの特性のばらつきを利用して、ＬＦＳＲを用いた擬似乱数発生回路に比較して予測可能性が低い乱数を発生することができる。
【発明の効果】
【０００９】
本発明によれば、不揮発性メモリセルの特性のばらつきを利用して、ＬＦＳＲを用いた擬似乱数発生回路に比較して予測可能性が低い乱数を発生させることができる。
【図面の簡単な説明】
【００１０】
【図１】この発明の一実施形態による不揮発性半導体装置１の構成を示すブロック図である。
【図２】ＮＡＮＤ型フラシュメモリによるメモリセルアレイ１０の構成例を示す図である。
【図３】本実施形態の不揮発性半導体装置１における乱数発生動作について説明するための図である。
【図４】ページバッファ１４Ａの構成例を示す図である。
【図５】Ｓ−ラッチ２１のデータをＣ−ラッチ２２へ退避する動作を説明するためのタイミングチャートである。
【図６】Ｃ−ラッチ２２に退避したデータをＳ−ラッチ２１へ戻す際の動作を説明するためのタイミングチャートである。
【図７】本実施形態の不揮発性半導体装置１における第１の応用例を示すフローチャートである。
【図８】本実施形態の不揮発性半導体装置１における第２の応用例を示すフローチャートである。
【図９】ＬＦＳＲを用いた擬似乱数発生回路の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、本発明の実施の形態について説明する。
（不揮発性半導体装置１の全体構成の説明）
図１は、この発明の一実施形態による不揮発性半導体装置１の構成を示すブロック図である。この図１に示す不揮発性半導体装置１は、ＮＡＮＤ型フラッシュメモリで構成される半導体記憶装置の例である。図１に示す不揮発性半導体装置１は、後述するように、乱数発生回路１７Ａを備える点に特徴がある。
【００１２】
図１に示すように、本実施形態に係る不揮発性半導体装置１は、メモリセルアレイ１０と、制御回路１１と、ロウデコーダ（Ｘデコーダ）１２と、ページバッファコントロール１３と、ページバッファ群１４と、パスビット数カウンタ１５と、ライトステートマシーン１６と、乱数生成部１７と、Ｉ／Ｏバッファ（入出力バッファ回路）１８と、入出力端子となるＩ／Ｏパッド（入出力端子）１９と、を有して構成される。
なお、図１に示す不揮発性半導体装置１において、乱数発生回路１７Ａ（点線で囲まれる部分）は、乱数の発生に関係する主要な構成として、ページバッファコントロール１３、ページバッファ群１４、パスビット数カウンタ１５、及びライトステートマシーン１６における乱数発生に関係する部分と、乱数生成部１７とを代表して示したものである。
【００１３】
メモリセルアレイ１０は、複数のスタックゲート構造のトランジスタ、すなわち電気的書き換え可能な不揮発性メモリセル（以下、単に「メモリセル」とも呼ぶ）をカラム方向（列方向）に直列接続して、ビット線毎に設けられたＮＡＮＤセルストリングを、行方向（ビット線の配列方向）に複数個配置したブロックから構成される。このブロックは、ビット線の配線方向に複数個配置される。また、このブロックは、メモリセルのデータの消去単位で設けられている。各ブロックにおいては、同一行に配置された不揮発性メモリセル各々のゲートには、ビット線に直交したワード線が接続される。
【００１４】
図２は、ＮＡＮＤ型フラシュメモリによるメモリセルアレイ１０の構成例を示す図である。より具体的には、メモリセルアレイ１０は、図２に示すように、Ｎ＋１本のビット線ＢＬ０〜ＢＬＮ（ビット線ＢＬで総称）と、ｎ＋１本のワード線ＷＬ０〜ＷＬｎ（ワード線ＷＬで総称）と、共通ソース線ＣＳＬと、各ビット線ＢＬと共通ソース線ＣＳＬとの間にそれぞれ接続されたＮ＋１個のメモリストリングＳＴ０〜ＳＴＮ（メモリストリングＳＴで総称）と、を備える。各メモリストリングＳＴは、互いに直列接続されたｎ＋１個のフローティングゲート構造の電気的書き換え可能な不揮発性メモリセルＭＣ０〜ＭＣｎを備え、ドレイン側のメモリセルＭＣｎは選択トランジスタＳＳ１を介して対応するビット線ＢＬに接続され、ソース側のメモリセルＭＣ０は選択トランジスタＧＳ１を介して共通ソース線ＣＳＬに接続される。また、同一行のメモリセルの制御ゲートは、共通のワード線ＷＬに接続されている。
【００１５】
図２に示すメモリセルアレイにおいて、メモリセルのイレース（消去）は、例えば、Ｎチャネル型のメモリセルＭＣ０〜ＭＣｎが形成されるＰ型ウェル領域に高電圧を印加し、ワード線ＷＬ０〜ＷＬｎに０Ｖを印加することにより行われる。これにより、例えばポリシリコンなどからなる電荷蓄積層であるフローティングゲートより電子を引き抜いて、メモリセルＭＣの閾値電圧を消去閾値電圧ＶｔＬ（例えば、−１Ｖ）に設定する。一方、書き込み（プログラム）においては、例えば、メモリセルのソース、及びドレインに０Ｖを与え、制御ゲート（選択したワード線ＷＬ）に高電圧を印加することにより、半導体基板よりフローティングゲートに電子を注入し、閾値電圧を上昇させて書込閾値電圧ＶｔＨに設定する。そして、例えば、メモリセルＭＣ０〜ＭＣｎの閾値電圧を閾値電圧ＶｔＬのままに保持することにより当該メモリセルのデータ値を「１」とし、閾値電圧を閾値電圧ＶｔＨに設定することにより当該メモリセルのデータ値を「０」とする。
【００１６】
また、メモリセルからデータを読み出すときには、全てのビット線ＢＬを所定の電圧でプリチャージした後に、閾値ＶｔＬとＶｔＨ間の読み出し電圧を、読み出し対象のメモリセルＭＣに共通に接続されたワード線ＷＬを介して、選択メモリセルの各制御ゲートに印加する。また、高電圧を、上記選択メモリセル以外のメモリセルＭＣおよび選択トランジスタＳＳ１，ＧＳ１の各制御ゲートに印加して、上記選択メモリセル以外のメモリセルＭＣならびに選択トランジスタＳＳ１，ＧＳ１を導通させる。従って、選択メモリセルのデータ値が「１」のときには、当該選択メモリセルにセル電流が流れる一方、選択メモリセルのデータ値が「０」のときには、当該選択メモリセルにセル電流が流れないので、セル電流が流れるか否かに基づいて、各選択メモリセルに書き込まれているデータを読み出すことができる。
なお、以下では、１つのワード線により選択されるメモリセルを「ページ」と称する。
【００１７】
図１に戻り、制御回路１１は、ロウデコーダ（Ｘデコーダ）１２、ページバッファコントロール１３、ページバッファ群１４、パスビット数カウンタ１５、ライトステートマシーン１６、及び乱数生成部１７等の動作を統括して制御する制御部であり、メモリセルアレイ１０からのデータの読み出しと、メモリセルアレイ１０へのデータの書き込み及び消去と、ベリファイ動作と、乱数発生動作とを行う際に、不揮発性半導体装置１の全体の動作を制御する。
【００１８】
ロウデコーダ１２は、Ｉ／Ｏバッファ１８から制御回路１１を通してアドレス信号を入力し、入力したアドレス信号をデコードし、データの読み出しと、書き込み及び消去と、ベリファイの対象となるメモリセルに接続されるワード線ＷＬを選択する機能を有する。また、ロウデコーダ１２は、ライトステートマシーン１６から制御信号ＸＤＥＣＣＮＴを入力し、データの読み出し、書き込み及び消去に応じた電圧をワード線ＷＬに印加する機能を備える。
【００１９】
ページバッファ群１４は、ページ単位のデータのプログラム及び読み出しを行うため、ページ単位のビット線毎に設けられたページバッファ１４Ａの複数から構成されている。このページバッファ群１４におけるページバッファ１４Ａの各々は、ビット線に接続され、接続されたビット線の電位を増幅して判定するセンスアンプ回路として用いるラッチ回路を有する。このページバッファ群１４内のページバッファ１４Ａにより、メモリセルアレイ１０からデータを読み出すと共に、メモリセルアレイ１０へのデータの書込制御を行う。
【００２０】
また、ページバッファコントロール１３は、入力されたアドレス信号に基づき、指定されたページバッファ１４Ａを選択するカラムデコーダの機能を有する。ここでは、ページバッファ群１４の全てのページバッファ１４Ａを選択する、すなわち１ページ分のデータが図に示す出力データバスＤＯＵＴＢＵＳ［ｎ：０］に読み出される。また、各ページバッファ１４Ａは、ページバッファコントロール１３から制御指令及びプリチャージ電圧の信号を入力し、メモリセルアレイ１０のビット線ＢＬにプリチャージ電圧を印加するプリチャージ回路を備える。
【００２１】
また、ページバッファ１４Ａは、メモリセルから読み出したデータを、出力データバス（ＤＯＵＴＢＵＳ）を通して、Ｉ／Ｏバッファ１８に出力する。また、ページバッファ１４Ａは、Ｉ／Ｏバッファ１８からメモリセルへの書き込みデータを入力し、メモリセルへのデータ書き込みを行う。なお、メモリセルからのデータの読み出し、メモリセルへのデータの書き込み及び消去は、ページバッファ１４Ａや、ロウデコーダ１２や、ページバッファコントロール１３等により行われる。
【００２２】
ページバッファコントロール１３は、ページバッファ群１４内のページバッファ１４Ａの動作を制御するための回路である。このページバッファコントロール１３は、メモリセルアレイ１０内のメモリセルに対するデータのプログラム、読み出し、消去などの動作、及びベリファイの動作の制御を行う。特に、ページバッファコントロール１３は、不揮発性メモリセルからのデータ読み出し（データ読み出し動作）、不揮発性メモリセルへのデータ書き込み動作（プログラム動作及びプログラムベリファイ動作）、不揮発性メモリセルのデータ消去動作（イレース動作及びその後のイレースベリファイ動作）において、ページバッファを制御するための制御信号をページバッファ１４Ａに対して出力する。また、ページバッファコントロール１３は、ライトステートマシーン１６から、メモリセルへのデータの読み出し、書き込み、及び消去に必要な制御信号ＰＢＣＮＴが入力され、この制御信号に基づいてページバッファに必要な制御信号をページバッファ１４Ａに出力する。
【００２３】
パスビット数カウンタ１５は、ページバッファコントロール１３及びページバッファ１４Ａにより行われるベリファイ動作の結果を基に、全体のベリファイビット数の内、何ビットがベリファイパスしたかを判定する。すなわち、パスビット数カウンタ１５は、ベリファイ読み出し時において、ベリファイパスと判定されたメモリセルのビット数（「パスセル数」とも呼ぶ）をカウントする。パスビット数カウンタ１５は、パスセル数の情報を信号ＰＢＮとして、ライトステートマシーン１６に出力する。
【００２４】
ライトステートマシーン１６は、パスビット数カウンタ１５のカウント結果（パスセル数の情報）を基に、メモリセルアレイ１０内の不揮発性メモリセルに対するデータのプログラム、消去及び読み出し動作を、ページバッファコントロール１３を介して制御する。ライトステートマシーン１６は、制御信号ＸＤＥＣＣＮＴをロウデコーダ１２に出力し、また制御信号ＰＢＣＮＴをページバッファコントロール１３に出力する。なお、図１には図示しない高電圧発生回路は、不揮発性メモリセルに対するデータのプログラム、消去及び読み出し時に使用する各種電圧を発生するが、ライトステートマシン１６は、この高電圧発生回路の昇圧動作等の制御を実行する。
【００２５】
乱数発生回路１７Ａは、乱数の発生に関係する主要な部分として、ページバッファコントロール１３、ページバッファ群１４、パスビット数カウンタ１５、及びライトステートマシーン１６における乱数発生に関係する部分と、乱数生成部１７とを代表して示したものである。
【００２６】
この乱数発生回路１７Ａは、後述するように、不揮発性メモリセルの特性の差異を利用して乱数を発生させる。乱数発生回路１７Ａは、メモリセルのプログラム動作やイレース動作時の後のベリファイ動作時においてベリファイパスするメモリセルの割合が１／２（５０％）になるように、メモリセルに印加する電圧を制御することにより、不揮発性メモリセルの特性の差異（例えば、書込み速度や消去速度の差異）を利用して乱数を発生させる。
ここで、書き込み速度とは、例えば、増加型パルスプログラム（Ｉｎｃｒｅｍｅｎｔａｌ  Ｓｔｅｐ  Ｐｕｌｓｅ−Ｐｒｏｇｒａｍ：ＩＳＰＰ）サイクル等において、メモリセルの消去状態から最終の書込状態に至るまでの処理の速度である。同様に、消去速度とは、書き込み状態から最終の消去状態に至るまでの消去処理の速度である。
【００２７】
なお、図１に示す乱数発生回路１７Ａは、１ページ分の不揮発性メモリセル及びページバッファ１４Ａを使用して、１ページ分のビット長に相当する乱数を生成する例であるが、２ページ分の不揮発性メモリセル及びページバッファ１４Ａを使用して、２ページ分のビット長に相当する乱数を生成するようにしてもよく、また、３ページ分以上のビット長の乱数を発生させるようにしてもよい。さらに、１ページ分のビット長に相当する乱数から、所望のビット長（例えば、１２８バイト）の乱数を１又は２以上抽出するようにしてもよい。すなわち、乱数発生回路１７Ａは、複数の乱数を１組のセットとして発生するようにしてもよい。
【００２８】
乱数生成部１７は、乱数発生回路１７Ａにより生成された乱数をページバッファ１４Ａから読み込んで保持し、乱数Ｒａｎｄとして出力する。
【００２９】
Ｉ／Ｏバッファ１８は、データの入出力、アドレス信号の入力、及び動作制御コマンド等の入力に使用されるバッファ回路であり、このＩ／Ｏバッファ１８は、外部回路との接続端子となるＩ／Ｏパッド１９に接続される。この入出力バッファ２３は、外部から供給されるアドレスをページバッファ群１４及びロウデコーダ１２へ出力し、外部から供給されるコマンドを示すコマンドデータをページバッファコントロール１３及び制御回路１１へ出力する。また、Ｉ／Ｏバッファ１８は、外部から入力されるデータをページバッファ群１４のページバッファ１４Ａの各々へ出力、あるいはページバッファ１４Ａを介し、メモリセルアレイ１０から読み出されたデータを外部に出力する。
【００３０】
（乱数発生動作についての説明）
図３は、本実施形態の不揮発性半導体装置１における乱数発生動作について説明するための図である。
【００３１】
図３（Ａ）は、通常のプログラム／イレース（書込／消去）時のメモリセルの閾値Ｖｔの分布を示す図であり、ＳＬＣ（Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）の閾値Ｖｔの分布を示す図である。また、図３（Ｂ）は、メモリセルのプログラム動作により乱数を発生させる場合の閾値Ｖｔの分布の例を示す図であり、図３（Ｃ）は、メモリセルのイレース動作により乱数を発生させる場合の閾値Ｖｔの分布の例を示す図である。
この図３（Ａ）、図３（Ｂ）及び図３（Ｃ）のそれぞれにおいて、横軸は閾値Ｖｔの電圧レベルを示し、縦軸はメモリセル数を示している。また、ＰＶは、プログラム後のベリファイ動作時に使用されるプログラム基準電圧を示し、ＥＶは、イレース後のベリファイ動作時に使用されるイレース基準電圧を示している。
【００３２】
図３（Ａ）に示すように、メモリセルは、通常は、閾値Ｖｔがイレース基準電圧ＥＶ以以下になるようにイレース（消去）が行われ、データ「１」の状態になる。また、メモリセルは、通常は、閾値Ｖｔがプログラム基準電圧ＰＶ以上になるようにプログラム（書込み）が行われ、データ「０」の状態になる。
【００３３】
（プログラム動作による乱数発生）
最初に、図３（Ｂ）を参照して、プログラム動作により乱数を発生させる場合の動作について説明する。この場合、不揮発性半導体装置１は、最初に、乱数発生を行わせる対象となる複数のメモリセル（例えば、１ページ分のメモリセル）の全部をイレース状態にする。すなわち、複数のメモリセルの閾値Ｖｔの分布が符号Ａで示す分布曲線（実線Ａで示す曲線）になるようにする。
【００３４】
次に、不揮発性半導体装置１は、メモリセルの全部がイレースされた状態から、メモリセルの一括プログラム（書込み）動作を開始する。この場合、不揮発性半導体装置１は、ライトステートマシーン１６とページバッファコントロール１３とにより、プログラム電圧（例えば、ワード線ＷＬに印加する書き込み電圧）を一定電圧ずつ上昇させながら次第に変化させていく。
【００３５】
例えば、不揮発性半導体装置１は、プログラム電圧を初期電圧（通常のプログラム電圧より十分低いプログラム電圧）に設定した後に、１回目のプログラム動作を行う。不揮発性半導体装置１は、この１回目のプログラム動作の結果をプログラム基準電圧ＰＶによりベリファイし、パスビット数カウンタ１５によりベリファイパスしたメモリセルの数（パスビット数）を判定する。
この１回目のプログラム動作を行うことにより、図３（Ｂ）に示すように、符号（ｎ＝１）で示す閾値分布曲線（点線で示す曲線）に相当するパス・フェイルビット数が得られる。この１回目のプログラム動作では、プログラム電圧が低いため、閾値電圧Ｖｔがプログラム基準電圧ＰＶを超えるメモリセル（プログラムセル）は発生しない。
【００３６】
続いて、不揮発性半導体装置１は、プログラム電圧を初期電圧より一定電圧だけ上昇させ、この上昇させたプログラム電圧により、２回目のプログラム動作を行い、この２回目のプログラム動作の結果をプログラム基準電圧ＰＶによりベリファイする。この２回目のプログラム動作を行うことにより、符号（ｎ＝２）で示す閾値分布曲線（点線で示す曲線）に相当するパス・フェイルビット数が得られる。すなわち、１回目のプログラム時の閾値分布曲線（ｎ＝１）に比べて、２回目のプログラム時の閾値分布曲線（ｎ＝２）は全体として＋側の方向に移動する。
【００３７】
以降、不揮発性半導体装置１は、プログラム電圧を一定電圧ずつ上昇させながら、メモリセルのプログラム動作と、ベリファイ動作と、パスビット数の判定動作とを繰り返す。これにより、閾値分布曲線は、＋側の方向に次第に移動する。
そして、Ｍ回目（ｎ＝Ｍ）のプログラム動作により、プログラムベリファイ時のパスビット数が全体のメモリセルのビット数の予め設定された所定の割合を超えた時に、プログラム動作及びベリファイ動作を停止する。所定の割合とは、例えば、１／２、或いは１／２の近傍の値に設定される。このＭ回目（ｎ＝Ｍ）のプログラム動作により、符号（ｎ＝Ｍ）で示す閾値分布曲線（実線で示す曲線）に相当するパス・フェイルビット数が得られる。
【００３８】
このＭ回目のプログラムベリファイ動作後において、ページバッファ１４Ａ内のラッチ回路（図４のＳ−ラッチ２１を参照）に格納されているパスセル・フェイルセルの情報は、１／２がパスセルを示し、１／２がフェイルセルを示していることになる。ここで、メモリセルのプログラム（書き込み）速度は、製造時の特性のばらつきや、物理的なゆらぎなどにより決定され、製造者やユーザが容易に想像することは不可能である。このため、Ｍ回目（ｎ＝Ｍ）のプログラム動作により、ページバッファ１４Ａに格納されているデータは、ＬＦＳＲで生成する乱数などとは異なり、予測可能性が極めて低い乱数となる。
【００３９】
（イレース動作による乱数発生）
上述した図３（Ｂ）に示す例では、メモリセルへのプログラム動作を行い、プログラム速度（書込速度）のばらつきを利用して乱数を発生させたが、メモリセルのイレース動作を行い、イレース速度（消去速度）のばらつきを利用して乱数を発生させることもできる。このイレース動作により乱数を発生させる場合は、メモリセルのトランジスタのウェルに印加する電圧を初期電圧から次第に増加させ、イレースベリファイのパスビット数が全体のビット数の１／２になった時にイレース動作を停止し、この時に、ページバッファ１４Ａに格納されているデータを乱数とする。
【００４０】
以下、図３（Ｃ）を参照して、イレース動作により乱数を発生させる場合の動作について説明する。この場合、不揮発性半導体装置１は、最初に、乱数発生を行わせる対象となるメモリセル（例えば、１ページ分のメモリセル）の全部をプログラム状態にする。すなわち、複数のメモリセルの閾値Ｖｔの分布が符号Ｂで示す分布曲線（実線Ｂで示す曲線）になるようにする。
【００４１】
次に、不揮発性半導体装置１は、メモリセルの全部がプログラムされた状態から、メモリセルのイレース（消去）動作を開始する。この場合、不揮発性半導体装置１は、ライトステートマシーン１６及びページバッファコントロール１３により、イレース電圧（例えば、ソースに印加する消去電圧）を一定電圧ずつ上昇させながら次第に変化させていく。
【００４２】
例えば、不揮発性半導体装置１は、イレース電圧（消去電圧）を初期電圧（通常のイレース電圧より十分低いイレース電圧）に設定した後に、１回目のイレース（消去）動作を行う。不揮発性半導体装置１は、この１回目のイレース動作の結果をイレース基準電圧ＥＶによりベリファイし、パスビット数カウンタ１５によりパスビット数を判定する。
この１回目のイレース動作を行うことにより、図３（Ｃ）に示すように、符号（ｎ＝１）で示す閾値分布曲線（点線で示す曲線）に相当するパス・フェイルビット数が得られる。この１回目の書込みでは、イレース電圧が低いため、閾値電圧Ｖｔがイレース基準電圧ＥＶ以下になるメモリセル（イレースセル）は発生しない。
【００４３】
続いて、不揮発性半導体装置１は、イレース電圧を初期電圧より一定電圧だけ上昇させ、この上昇させたイレース電圧により、２回目のイレース動作を行い、この２回目のイレース動作の結果をイレース基準電圧ＥＶによりベリファイする。この２回目のイレース動作を行うことにより、符号（ｎ＝２）で示す閾値分布曲線（点線で示す曲線）に相当するパス・フェイルビット数が得られる。すなわち、１回目のイレース時の閾値分布曲線（ｎ＝１）に比べて、２回目のイレース時の閾値分布曲線（ｎ＝２）は、全体として−側の方向に移動する。
【００４４】
以降、不揮発性半導体装置１は、イレース電圧を一定電圧ずつ上昇させながら、メモリセルのイレース動作と、ベリファイ動作と、パスビット数の判定動作とを繰り返す。これにより、閾値分布曲線は−側の方向に次第に移動する。
そして、Ｍ回目（ｎ＝Ｍ）のイレース動作により、ベリファイ動作時のパスビット数が全体のメモリセルのビット数の１／２になった時に、イレース動作及びベリファイ動作を停止する。このＭ回目（ｎ＝Ｍ）のプログラム動作により、符号（ｎ＝Ｍ）で示す閾値分布曲線（実線で示す曲線）に相当するパス・フェイルビット数が得られる。
【００４５】
このＭ回目のイレースベリファイ動作後において、ページバッファ１４Ａ内のラッチ回路（図４のＳ−ラッチ２１を参照）に格納されているパスセル・フェイルセルの情報は、１／２がパスセルを示し、１／２がフェイルセルを示していることになる。ここで、メモリセルのイレース（消去）速度は、製造時の特性のばらつきや、物理的なゆらぎなどにより決定され、製造者やユーザが容易に想像することは不可能である。このため、Ｍ回目（ｎ＝Ｍ）のイレース動作により、ページバッファ１４Ａに格納されているデータは、ＬＦＳＲで生成する乱数などとは異なり、予測可能性が極めて低い乱数となる。
【００４６】
ところで、上記乱数発生動作により、乱数を発生させてページバッファ１４Ａに格納することができるが、乱数の発生に使用したメモリセルは、その閾値分布が、例えば、図３（Ｂ）の符号（ｎ＝Ｍ）に示すような分布曲線になり、図３（Ａ）に示すような正規の閾値分布曲線とは異なる。このため、メモリセルの１／２がパスした直後の状態で、再度メモリセルのデータの読み出しを行なっても、読み出しに必要なマージンが得られないため、同一のデータが読み出されるとは限らないことになる。従って、メモリセルの閾値分布を、図３（Ａ）に示すような正規の閾値分布になるように書き換える必要がある。このため、本実施形態の不揮発性半導体装置１では、ページバッファ１４Ａは、次に説明する構成を備えている。
【００４７】
［ページバッファの回路構成］
図４は、ページバッファ１４Ａの構成例を示す図である。図４では、１本のビット線（ＢＬｉ）に対応するページバッファ１４Ａの一例を示している。この図４に示すページバッファ１４Ａは、ＳＬＣのページバッファ回路として用いられる回路である。
【００４８】
ページバッファ１４Ａは、データ書き込み時のビット線ＢＬｉへの電位供給を制御するとともに、読み出し時のセンスデータをラッチするＳ−ラッチ２１（図上で左側のラッチ回路）と、キャッシュプログラム時に、キャッシュデータを格納するＣ−ラッチ２２（図上で右側のラッチ回路）とで構成される。また、他に、Ｓ−ラッチ２１とＣ−ラッチ２２との間でデータを転送するためのトランジスタ、メモリセルへのデータ書き込み時にＳ−ラッチ２１からビット線への電圧供給を行うトランジスタ、メモリセルからの読み出し時に、ビット線ＢＬｉの電圧を基にセンス動作を行い、Ｓ−ラッチ２１へデータを格納するためのトランジスタ、外部からＣ−ラッチ２２へデータを入出力するためのトランジスタなどで構成される。
【００４９】
より具体的には、この図４に示すページバッファ１４Ａは、トランジスタ３１〜５０と、Ｓ−ラッチ２１と、Ｃ−ラッチ２２と有して構成されている。
ここで、トランジスタ３１、トランジスタ３２、及びトランジスタ４３は、Ｐチャネル型ＭＯＳ（Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）トランジスタであり、それ以外のトランジスタは、Ｎチャネル型ＭＯＳトランジスタである。
【００５０】
また、Ｓ−ラッチ２１は、インバータ回路ＩＶＳ１、及びインバータ回路ＩＶＳ２から構成される。ここで、インバータ回路ＩＶＳ１は、出力端子が接続点（ノード）ＮＳ２においてインバータ回路ＩＶＳ２の入力端子に接続され、入力端子が接続点ＮＳ１においてインバータ回路ＩＶＳ２の出力端子に接続される。また、Ｃ−ラッチ２２は、インバータ回路ＩＶＣ１、及びインバータ回路ＩＶＣ２から構成される。ここで、インバータ回路ＩＶＣ１は、出力端子が接続点ＮＣ２においてインバータ回路ＩＶＣ２の入力端子に接続され、入力端子が接続点ＮＣ１においてインバータ回路ＩＶＣ２の出力端子に接続される。
【００５１】
トランジスタ３１は、ソースが電源配線に接続され、ゲートが接続点ＮＳ１に接続され、ドレインがトランジスタ３２のソースに接続される。
トランジスタ３２は、ソースがトランジスタ３１のドレインに接続され、ゲートが制御信号ＢＬＰＣの配線に接続され、ドレインがトランジスタ３３のドレイン、及び接続点ＳＯに接続される。
トランジスタ３３は、ドレインが接続点ＳＯに接続され、ゲートが制御信号ＳＯＧＮＤの配線に接続され、ソースがトランジスタ３４のドレインに接続される。
トランジスタ３４は、ドレインがトランジスタ３３のソースに接続され、ゲートが接続点ＮＳ１に接続され、ソースが接地される。
【００５２】
トランジスタ３５は、ドレインが接続点ＮＳ１に接続され、ゲートが制御信号ＳＥＴＳの配線に接続され、ソースが接続点ＸＳ１に接続される。
トランジスタ３７は、ドレインが接続点ＮＳ２に接続され、ゲートが制御信号ＲＳＴＳの配線に接続され、ソースが接続点ＸＳ１及びトランジスタ３８のドレインに接続される。
【００５３】
トランジスタ３８は、ドレインが接続点ＸＳ１及びトランジスタ３７のソースに接続され、ソースが接地される。
トランジスタ３９は、ドレインが接続点ＳＯに接続され、ゲートが制御信号ＴＲＡＮＳの配線に接続され、ソースがトランジスタ４０のドレインに接続される。
トランジスタ４０は、ドレインがトランジスタ３９のソースに接続され、ゲートが接続点ＮＳ２に接続され、ソースが接地される。
トランジスタ４１は、ドレインがビット線ＢＬｉに接続され、ゲートが制御信号ＢＬＳＬＴの配線に接続され、ソースが接続点ＳＯに接続される。トランジスタ４２は、ドレインがビット線ＢＬｉに接続され、ゲートが制御信号ＰＤＩＳの配線に接続され、ソースが接地される。
【００５４】
トランジスタ４３は、ソースが電源配線に接続され、ゲートが制御信号ＬＯＡＤの配線に接続され、ドレインが接続点ＳＯに接続される。
トランジスタ４４は、ドレインが接続点ＮＣ１に接続されゲートが制御信号ＳＥＴＣの配線に接続され、ソースが接続点ＸＣ１及びトランジスタ４５のドレインに接続される。
トランジスタ４５は、ドレインが接続点ＸＣ１及びトランジスタ４４のソースに接続され、ゲートが制御信号ＤＩＥＮの配線に接続され、ソースがデータ入力端子ＤＩＮに接続される。
トランジスタ４６は、ドレインが接続点ＮＣ２に接続され、ゲートが制御信号ＲＳＴＣの配線に接続され、ソースが接続点ＸＣ１及びトランジスタ４７のドレインに接続される。
トランジスタ４７は、ドレインが接続点ＸＣ１及びトランジスタ４６のソースに接続され、ゲートが接続点ＳＯに接続され、ソースが接地される。
【００５５】
トランジスタ４８は、ドレインが接続点ＳＯに接続され、ゲートが制御信号ＴＲＡＮＣの配線に接続され、ソースがトランジスタ４９のドレインに接続される。トランジスタ４９は、ドレインがトランジスタ４８のソース及びトランジスタ５０のドレインに接続され、ゲートが接続点ＮＣ２に接続される。
トランジスタ５０は、ドレインがトランジスタ４８のソース及びトランジスタ４９のドレインに接続され、ゲートが制御信号ＤＯＥＮの配線に接続され、ソースが出力信号線の端子ＤＯＵＴに接続される。
【００５６】
上記構成のページバッファ１４Ａは、Ｓ−ラッチ２１側の回路と、このＳ−ラッチ２１側の回路と類似するＣ−ラッチ２２側の回路との２つの回路を主要な要素として構成されている。以下では、ページバッファ１４Ａについて、メモリセルに対するデータ読み出し動作、プログラム動作、及びイレース動作等の各々の動作における通常の動作については、その説明を省略し、本発明に直接関係するＳ−ラッチ２１に保持されたデータのＣ−ラッチ２２へ退避する動作、及びＣ−ラッチ２２に退避したデータをＳ−ラッチ２１に戻す動作についてのみ説明する。
【００５７】
本実施形態の不揮発性半導体装置１においては、乱数発生回路１７Ａにより生成された乱数のデータは、図４に示すページバッファ１４Ａ内のＳ−ラッチ２１に保持される。ページバッファ１４Ａは、このＳ−ラッチ２１に保持したデータを、一旦、Ｃ−ラッチ２２に退避した後に、乱数発生に用いたメモリセルをイレースする。このメモリセルをイレースした後に、ページバッファ１４Ａは、Ｃ−ラッチ２２に退避したデータをＳ−ラッチ２１に戻し、このＳ−ラッチ２１に戻したデータを再びメモリセルに書き込む。これにより、メモリセルに乱数のデータが確実に保持される。
【００５８】
以下、図５及び図６を参照して、Ｓ−ラッチ２１からＣ−ラッチ２２へのデータの退避動作と、Ｃ−ラッチ２２からＳ−ラッチ２１へのデータの戻し動作について説明する。
【００５９】
図５は、Ｓ−ラッチ２１のデータをＣ−ラッチ２２へ退避する動作を説明するためのタイミングチャートである。この図５は、横方向に時間の経過を示し、縦方向に、制御信号ＬＯＡＤと、制御信号ＴＲＡＮＳと、接続点ＳＯのノード電位と、制御信号ＲＳＴＣと、制御信号ＳＥＴＣと、接続点ＮＣ１のノード電位と、接続点ＮＣ２のノード電位とを、並べて示したものである。また、それぞれの信号のレベルを、１（「Ｈ」レベル）または０（「Ｌ」レベル）で示したものである。
また、期間Ｔ１は、接続点ＳＯのプリチャージ期間を示し、期間Ｔ２は、Ｃ−ラッチ２２のリセット期間を示し、期間Ｔ３は、Ｓ−ラッチから接続点ＳＯへのデータ転送期間を示し、期間Ｔ４は、接続点ＳＯからＣ−ラッチへのデータ転送期間を示している。
【００６０】
図５を参照して、最初に、期間Ｔ１において、トランジスタ４３のゲートに印加される制御信号ＬＯＡＤが「Ｌ」レベルになることにより、トランジスタ４３がオンになり、接続点ＳＯが「Ｈ」レベルにプリチャージされる。
その後、期間Ｔ２に至り、Ｃ−ラッチ２２側のトランジスタ４６のゲートに印加される制御信号ＲＳＴＣが「Ｈ」レベルになることにより、接続点ＮＣ１が「Ｈ」レベルにセットされ、接続点ＮＣ２が「Ｌ」レベルにセットされる。
【００６１】
その後、期間Ｔ３に至り、トランジスタ３９のゲートに印加される制御信号ＴＲＡＮＳが「Ｈ」レベルになることにより、接続点ＳＯのノード電位が、接続点ＮＳ２のノード電位に応じて、「Ｈ」レベル（実線で示す波形）又は「Ｌ」レベル（点線で示す波形）に変化する。
より具体的には、接続点ＳＯは、接続点ＮＳ１のノード電位が「Ｈ」であり接続点ＮＳ２のノード電位が「Ｌ」レベルの場合（ＮＳ１／ＮＳ２＝１／０の場合）に、「Ｈ」レベルになる。また、接続点ＳＯは、接続点ＮＳ１のノード電位が「Ｌ」であり接続点ＮＳ２のノード電位が「Ｈ」レベルの場合（ＮＳ１／ＮＳ２＝０／１の場合）に、「Ｌ」レベルになる。
【００６２】
続いて、期間Ｔ４に至り、トランジスタ４４のゲートに印加される制御信号ＳＥＴＣが「Ｈ」レベルになり、トランジスタ４６のゲートに印加される制御信号ＲＳＴＣが「Ｌ」レベルであることにより、接続点ＳＯのノード電位（「Ｈ」レベル又は「Ｌ」レベル）に応じた電位が、Ｃ−ラッチ２２に設定される。
例えば、期間Ｔ４において、接続点ＳＯのノード電位が「Ｈ」レベルである場合は、実線で示すように、Ｃ−ラッチ２２の接続点ＮＣ１が「Ｌ」レベルとなり、接続点ＮＣ２が「Ｈ」レベルとなる。一方、期間Ｔ４において、接続点ＳＯのノード電位が「Ｌ」レベルである場合は、点線で示すように、Ｃ−ラッチ２２の接続点ＮＣ１が「Ｈ」レベルとなり、接続点ＮＣ２が「Ｌ」レベルとなる。
【００６３】
このように、接続点ＳＯのノード電位は、Ｓ−ラッチ２１の接続点ＮＳ２のノード電位により「Ｈ」レベル又は「Ｌ」レベルに変化し、また、接続点ＳＯのノード電位（「Ｈ」レベル又は「Ｌ」レベル）に応じて、Ｃ−ラッチ２２の接続点ＮＣ２のノード電位が変化する。これにより、Ｓ−ラッチ２１に保持されたデータを、Ｃ−ラッチ２２に退避することができる。
【００６４】
また、図６は、Ｃ−ラッチ２２に退避したデータをＳ−ラッチ２１へ戻す際の動作を説明するためのタイミングチャートである。この図６において、期間Ｔ１は、接続点ＳＯのプリチャージ期間を示し、期間Ｔ２は、Ｓ−ラッチ２１のリセット期間を示し、期間Ｔ３は、Ｃ−ラッチから接続点ＳＯへのデータ転送期間を示し、期間Ｔ４は、接続点ＳＯからＳ−ラッチへのデータ転送期間を示している。
【００６５】
図６を参照して、最初に、期間Ｔ１において、トランジスタ４３のゲートに印加される制御信号ＬＯＡＤが「Ｌ」レベルになることにより、トランジスタ４３がオンになり、接続点ＳＯが「Ｈ」レベルにプリチャージされる。
その後、期間Ｔ２に至り、Ｓ−ラッチ２１側のトランジスタ３７のゲートに印加される制御信号ＲＳＴＳが「Ｈ」レベルになることにより、接続点ＮＳ１が「Ｈ」レベルにセットされ、接続点ＮＳ２が「Ｌ」レベルにセットされる。
【００６６】
その後、期間Ｔ３に至り、トランジスタ４８のゲートに印加される制御信号ＴＲＡＮＣが「Ｈ」レベルになることにより、接続点ＳＯのノード電位が、接続点ＮＣ２のノード電位に応じて、「Ｈ」レベル（実線で示す波形）又は「Ｌ」レベル（点線で示す波形）に変化する。より具体的には、接続点ＳＯは、接続点ＮＣ２のノード電位が「Ｈ」レベルの場合に「Ｌ」レベルになり、接続点ＮＣ２のノード電位が「Ｌ」レベルの場合に「Ｈ」レベルなる。
【００６７】
続いて、期間Ｔ４に至り、トランジスタ３５ゲートに印加される制御信号ＳＥＴＳが「Ｈ」レベルになり、トランジスタ３７のゲートに印加される制御信号ＲＳＴＳが「Ｌ」レベルであることにより、接続点ＳＯのノード電位（「Ｈ」レベル又は「Ｌ」レベル）に応じた電位が、Ｓ−ラッチ２１に設定される。
【００６８】
例えば、期間Ｔ４において、接続点ＳＯのノード電位が「Ｈ」レベルである場合は、実線で示すように、Ｓ−ラッチ２１の接続点ＮＳ１が「Ｌ」レベルとなり、接続点ＮＳ２が「Ｈ」レベルとなる。
一方、期間Ｔ４において、接続点ＳＯのノード電位が「Ｌ」レベルである場合は、点線で示すように、Ｓ−ラッチ２１の接続点ＮＳ１が「Ｈ」レベルとなり、接続点ＮＳ２が「Ｌ」レベルとなる。
【００６９】
このように、接続点ＳＯのノード電位は、Ｃ−ラッチ２２の接続点ＮＣ２のノード電位により「Ｈ」レベル又は「Ｌ」レベルに変化し、また、接続点ＳＯのノード電位（「Ｈ」レベル又は「Ｌ」レベル）に応じて、Ｓ−ラッチ２１の接続点ＮＳ２のノード電位が変化する。これにより、Ｃ−ラッチ２２に退避したデータを、Ｓ−ラッチ２１側に戻すことができる。
【００７０】
［第１の応用例］
次に、図４に示すページバッファ１４Ａの構成を用いた、本実施形態の不揮発性半導体装置１における第１の応用例について説明する。図７は、本実施形態の不揮発性半導体装置１における第１の応用例を示すフローチャートである。この第１の応用例では、メモリセルのパス・フェイル情報（乱数のデータ）を、Ｓ−ラッチ２１からＣ−ラッチ２２に転送した後、一旦、イレース動作により、メモリセルを消去状態にした後、Ｃ−ラッチ２２のデータをＳ−ラッチ２１に再度転送し、その後、Ｓ−ラッチ２１のデータをメモリセルに書き込む。
これにより、メモリセルに書き込んだ乱数のデータについて、メモリセルの閾値の分布は、図３（Ａ）で示した通常の分布と同等となる。
【００７１】
すなわち、ベリファイ動作においてメモリセルの所定の割合、例えば５０％がパスし、ページバッファ１４Ａ（より具体的にはＳ−ラッチ２１）内に乱数を生成した直後の状態において、再度、メモリセルのデータの読み出しを行っても、読み出しに必要なマージンが得られないため、同一のデータが読み出されるとは限らない。そこで、本応用例を用いることにより、発生させた乱数を確実にメモリセルに記憶させ、十分なマージンを持って乱数を読み出すことができる。
【００７２】
図７は、上述した第１の応用例における処理の流れをフローチャートで示したものである。以下、図７のフローチャートを参照して、第１の応用例における処理の流れについて説明する。
最初に、乱数発生回路１７Ａは、ページバッファコントロール１３により、乱数発生を行うために使用するメモリセル（例えば、１ページ分のメモリセル）の全部をイレース状態（オール「１」）にする（ステップＳ１００）。
【００７３】
その後、乱数発生回路１７Ａは、ライトステートマシーン１６及びページバッファコントロール１３により、制御ゲート（選択したワード線ＷＬ）に印加する書き込み（プログラム）電圧を初期電圧に設定し、１ページ分のメモリセルへのプログラム動作（オール「０」の書込み動作）を開始する（ステップＳ１０１）。続いて、乱数発生回路１７Ａは、ページバッファコントロール１３及びページバッファ１４Ａにより、メモリセルへ書き込んだデータを読み出し、プログラム結果を照合するベリファイ動作を行う（ステップＳ１０２）。
このステップＳ１０２の処理に続いて、乱数発生回路１７Ａは、パスビット数カウンタ１５により、プログラムが完了したメモリセルの数（パスビット数）を計数し、パスビット数の割合が全ビット数の５０％以上であるか否かを判定する（ステップＳ１０３）。
【００７４】
そして、ステップＳ１０３の処理において、パスビット数が５０％以上でないと判定された場合に（ステップＳ１０３：Ｎｏ）、乱数発生回路１７Ａは、ライトステートマシーン１６及びページバッファコントロール１３により、プログラム電圧を所定電圧分だけ増加させて、ステップＳ１０１の処理に戻り、再度、メモリセルへの書込み動作（プログラム動作）を開始する。
【００７５】
一方、ステップＳ１０３の処理において、パスビット数が５０％以上であると判定された場合に（ステップＳ１０３：Ｙｅｓ）、乱数発生回路１７Ａは、メモリセルのプログラム動作を停止し、ステップＳ１０４の処理に移行する。このステップＳ１０４の処理により、乱数発生回路１７Ａは、ページバッファ１４Ａにおいて、Ｓ−ラッチ２１に保持されたデータをＣ−ラッチ２２に転送（退避）する（ステップＳ１０４）。
なお、ステップＳ１０４の処理により、Ｓ−ラッチ２１に保持されたデータをＣ−ラッチ２２に転送（退避）するのは、次のステップＳ１０５及びＳ１０６のメモリセルのイレース（消去）動作において、Ｓ−ラッチ２１が使用され保持したデータが失われるためである。
【００７６】
ステップＳ１０４においてメモリセルのイレース動作（消去動作）が開始された後、乱数発生回路１７Ａは、メモリセルの消去動作とベリファイ動作とを繰り返し（ステップＳ１０５及びＳ１０６）、このイレース動作（消去動作）を、メモリセルの全ビットパス、すなわち全ビットのイレースが完了するまで繰り返す（ステップＳ１０７）。
【００７７】
そして、ステップＳ１０７の処理において、メモリセルの全ビットパスと判定された場合に（ステップＳ１０７：Ｙｅｓ）、乱数発生回路１７Ａは、ステップＳ１０８の処理に移行し、ページバッファ１４Ａにおいて、Ｃ−ラッチ２２に退避したデータをＳ−ラッチ２１に転送する（ステップＳ１０８）。
このステップＳ１０８の処理の終了後にステップＳ１０９の処理に移行し、乱数発生回路１７Ａは、ページバッファコントロール１３及びページバッファ１４Ａにより、Ｓ−ラッチ２１に保持されたデータのメモリセルへの書込み動作とベリファイ動作とを、全ビットのベリファイがパスするまで行う（ステップＳ１０９，Ｓ１１０，Ｓ１１１）。
【００７８】
そして、乱数発生回路１７Ａは、Ｓ−ラッチ２１に保持されたデータのメモリセルへの書込みが完了した場合に（ステップＳ１１１：Ｙｅｓ）、メモリセルへの乱数データの格納処理を完了して終了する。
このように、第１の応用例では、メモリセルのプログラム動作により乱数を発生させることができるとともに、発生させた乱数のデータをそのまま確実にメモリセルに記憶できる。また、乱数発生回路１７Ａは、十分なマージンを持ってメモリセルから乱数を読み出して、出力することができる。
【００７９】
［第２の応用例］
上記の第１の応用例は、メモリセルのプログラム時の特性のばらつきを利用した応用例であるが、消去時のばらつきを利用した応用例とすることもできる。
図８は、本実施形態の不揮発性半導体装置１における第２の応用例を示すフローチャートである。この図８に示すフローチャートの基本的な動作は、図７に示すフローチャートと同じである。この図８に示すフローチャートは、図７に示すフローチャートと比較して、図７に示すステップＳ１００の処理を図８に示すステップＳ１００Ａの処理に置き換え、図７に示すステップＳ１０１の処理を図８に示すステップＳ１０１Ａの処理に置き換えた点だけが異なる。他の処理については同様であり、同じ処理内容のステップには同じ符号を付している。
【００８０】
図８に示すように、第２の応用例では、ステップＳ１００Ａにおいて、乱数発生回路１７Ａは、ページバッファコントロール１３により、乱数発生を行うために使用するメモリセル（例えば、１ページ分のメモリセル）の全部をプログラム状態（オール「０」）にする（ステップＳ１００Ａ）。
【００８１】
その後、乱数発生回路１７Ａは、ライトステートマシーン１６及びページバッファコントロール１３により、メモリセルに印加するイレース電圧を初期電圧に設定し、メモリセルのイレース動作（消去動作）を開始する（ステップＳ１０１Ａ）。
ステップＳ１０１Ａの処理の後、乱数発生回路１７Ａは、ページバッファコントロール１３及びページバッファ１４Ａにより、メモリセルのデータを読み出し、イレース動作の結果を判定するベリファイ動作を行う（ステップＳ１０２）。
続いて、乱数発生回路１７Ａは、パスビット数カウンタ１５により、イレースが完了したメモリセルの数（パスビット数）を計数し、パスビット数の割合が全ビット数の５０％であるか否かを判定する（ステップＳ１０３）。
【００８２】
そして、ステップＳ１０３の処理において、パスビット数が５０％以上でないと判定された場合は（ステップＳ１０３：Ｎｏ）、乱数発生回路１７Ａは、ライトステートマシーン１６及びページバッファコントロール１３により、イレース電圧を所定電圧分だけ増加させて、ステップＳ１０１の処理に戻り、再度、イレース動作（消去動作）を開始する。
一方、ステップＳ１０３の処理において、パスビット数が５０％以上であると判定された場合は（ステップＳ１０３：Ｙｅｓ）、乱数発生回路１７Ａは、メモリセルのイレース動作（消去動作）を停止する。そして、乱数発生回路１７Ａは、ページバッファ１４Ａにおいて、Ｓ−ラッチ２１に保持されたデータをＣ−ラッチ２２に転送（退避）する（ステップＳ１０４）。
その後の処理は、図７の場合と同じであり、重複する説明は省略する。
【００８３】
このように、第２の応用例では、メモリセルのイレース動作により乱数を発生させることができるとともに、発生させた乱数を確実にメモリセルに記憶できる。また、十分なマージンを持ってメモリセルから乱数を読み出して、出力することができる。
【００８４】
以上、説明したように、本実施形態の不揮発性半導体装置１では、乱数発生回路１７Ａにより、メモリセルの特性のばらつきを利用して予測可能性が極めて低い乱数を発生することが可能となる。このため、不揮発性半導体装置１では、この乱数を暗号演算などに利用することにより、セキュリティレベルを向上させることができる。さらに、不揮発性半導体装置１では、生成した乱数を、メモリセルアレイ１０にそのまま格納することができる。このため、本実施形態の不揮発性半導体装置１では、複雑な回路を用意することなく、予測可能性が極めて低い乱数を簡単に生成することができる。
【００８５】
なお、上記実施形態では、プログラム動作又はイレース動作後のベリファイ動作において、１／２（５０％）の不揮発性メモリセルがベリファイパスする場合の、パスセルとフェイルセルとの分布の状態に基づいて乱数を生成しているが、パスセルの割合は、必ずしも１／２（５０％）である必要はなく、例えば、４０％や、６０％や、７０％など、任意の割合にすることができる。
【００８６】
以上、本発明の実施の形態について説明したが、ここで、本発明と上述した実施形態との対応関係について補足して説明しておく。すなわち、上記実施形態において、本発明における不揮発性半導体装置は、不揮発性半導体装置１が対応し、また、本発明における乱数発生回路は、図１に示す不揮発性半導体装置１において、乱数発生回路１７Ａが対応する。
この乱数発生回路１７Ａは、乱数の発生に関係する主要な部分として、ページバッファコントロール１３、ページバッファ群１４、パスビット数カウンタ１５、及びライトステートマシーン１６における乱数発生に関係する部分と、乱数生成部１７とを代表して示したものである。また、本発明における不揮発性メモリセルは、メモリセルアレイ１０中の不揮発性メモリセルが対応し、本発明におけるページバッファは、ページバッファ１４Ａが対応する。また、本発明における第１ラッチ回路は、図４に示すＳ−ラッチ２１が対応し、本発明における第２ラッチ回路は、Ｃ−ラッチ２２が対応する。
【００８７】
そして、上記実施形態において、本発明の乱数発生回路１７Ａは、不揮発性メモリに搭載される乱数発生回路１７Ａであって、複数の不揮発性メモリセルを所定の動作条件の基で同一のデータに変更する処理を行い、その後にベリファイ動作を実行してイレースセルとプログラムセルの分布の情報を生成し、該生成した分布の情報に基づいて乱数を発生させる。
このような構成の乱数発生回路１７Ａでは、複数の不揮発性メモリセルを所定の動作条件の基で一括して同一のデータに変更する処理を行い、ベリファイ動作によりイレースセルと判定される不揮発性メモリセルと、ベリファイ動作によりプログラムセルと判定される不揮発性メモリセルとを発生させる。そして、このベリファイ動作により、イレースセルとプログラムセルとの分布の状態を検出し、この分布の情報に基づいて乱数を生成する。
これにより、本発明の乱数発生回路１７Ａは、不揮発性メモリセルの製造時の特性のばらつきを利用して、予測可能性が低い乱数を発生することができる。
【００８８】
また、上記実施形態において、本発明の乱数発生回路１７Ａは、上記所定の動作条件の基で、複数の不揮発性メモリセルに対してプログラム動作又はイレース動作を行い、その後にベリファイ動作を実行してイレースセルとプログラムセルの分布の情報を生成し、該生成した分布の情報に基づいて乱数を発生させる。
このような構成の乱数発生回路１７Ａでは、複数の不揮発性メモリセルにおけるプログラム（書き込み）又はイレース（消去）特性のばらつきを利用して乱数を生成する。例えば、プログラム時の動作条件（例えば、ワード線の電圧等）を、イレースセルとプログラムセルのばらつきが大きくなるように設定する。そして、ベリファイ動作により、イレースセルとプログラムセルとの分布の状態を検出し、この分布の情報に基づいて乱数を生成する。
これにより、本発明の乱数発生回路１７Ａは、不揮発性メモリセルの製造時の特性のばらつきを利用して、予測可能性が低い乱数を発生することができる。
【００８９】
また、上記実施形態において、乱数発生回路１７Ａでは、上記動作条件が、プログラム動作又はイレース動作の後のベリファイ動作においてベリファイパスしたメモリセルの割合が所定の割合（例えば、５０％）になるように設定され、ベリファイパスしたメモリセルの割合が所定の割合（例えば、５０％）になる場合に、複数の不揮発性メモリセルについてのベリファイパスしたメモリセルとベリファイフェイルしたメモリセルとの分布の情報を検出し、該分布の情報に基づいて乱数を生成する。
このような構成の乱数発生回路１７Ａでは、プログラム又はイレース時の動作条件を、ベリファイ動作においてベリファイパスしたメモリセルの割合が所定の割合（例えば、５０％）になるように設定する。
これにより、本発明の乱数発生回路は、不揮発性メモリセルの製造時の特性のばらつきを利用して乱数を発生することができるとともに、データ「１」とデータ「０」とが所定の割合（例えば、５０％）で含まれる乱数を発生することができる。
【００９０】
また、上記実施形態において、乱数発生回路１７Ａは、上記動作条件を、予め設定した初期条件であってベリファイ動作においてベリファイパスしたメモリセルが所定の割合（例えば、５０％）以下となる第１動作条件（例えば、全ての不揮発性メモリセルがベリファイフェイルする動作条件）から、ベリファイパスしたメモリセルが所定の割合（例えば、５０％）以上となる第２動作条件（例えば、全ての不揮発性メモリセルがベリファイパスする動作条件）に向けて次第に移行させ、ベリファイ動作においてベリファイパスしたメモリセルの割合が所定の割合（例えば、５０％）を超えたと判定された場合に、ベリファイパスしたメモリセルとベリファイフェイルしたメモリセルとの分布の情報を検出する。
このような構成の乱数発生回路１７Ａでは、プログラム又はイレース時の動作条件を、所定の割合（例えば、５０％）以下の不揮発性メモリセルのみがベリファイパスする第１動作条件から、所定の割合以上の不揮発性メモリセルがベリファイパスする第２動作条件に向けて次第に変更する。そして、ベリファイパスするメモリセルの割合が所定の割合に到達した場合に、ベリファイパスしたメモリセルとベリファイフェイルしたメモリセルとの分布の情報を検出する。
これにより、乱数発生回路１７Ａは、プログラム又はイレース時の動作条件を次第に変更させながら、ベリファイパスするメモリセルの割合が所定の割合（例えば、５０％）になるようにして、乱数を生成することができる。このため、乱数発生回路１７Ａは、乱数発生のための特別な回路を用意することなく、簡易な方法により乱数を発生させることができる。
【００９１】
また、上記実施形態において、本発明の乱数発生回路１７Ａは、複数の不揮発性メモリセルは、１ページ分の不揮発性メモリセルであって、それぞれのメモリセルに対応して１つのページバッファが設けられ、１ページ分の不揮発性メモリセルについてのベリファイ動作により、ベリファイパスするメモリセルが所定の割合を超えた判定された場合に、ページバッファに読み出されたデータを乱数として保持する。
このような構成の乱数発生回路１７Ａでは、乱数を発生させるために使用する複数の不揮発性メモリセルとして、１ページ分の不揮発性メモリセルを使用する。
これにより、乱数発生回路１７Ａは、１ページのビット長に相当する乱数を生成することができる。
【００９２】
また、上記実施形態において、乱数発生回路１７Ａは、ページバッファ１４Ａが、ページバッファ１４Ａに読み出された不揮発性メモリセルのデータを保持する第１ラッチ回路（Ｓ−ラッチ２１）と、第１ラッチ回路のデータを退避して保持するための第２ラッチ回路（Ｃ−ラッチ２２）と、を備え、ベリファイ動作においてベリファイパスするメモリセルが所定の割合を超えたと判定された場合に、該ベリファイ動作を終了し、ベリファイ動作の終了後に、第１ラッチ回路（Ｓ−ラッチ２１）から第２ラッチ回路（Ｃ−ラッチ２２）へデータを退避し、データの退避後に不揮発性メモリセルをイレースし、不揮発性メモリセルのイレース後に、第２ラッチ（Ｃ−ラッチ２２）に退避したデータを第１ラッチ回路（Ｓ−ラッチ２１）に戻し、第１ラッチ回路（Ｓ−ラッチ２１）に戻されたデータを不揮発性メモリセルに書き戻す。
このような構成の乱数発生回路１７Ａでは、生成した乱数を不揮発性メモリセルに再度書き込んで保持する。
これにより、乱数発生回路１７Ａでは、生成した乱数を、メモリセルアレイ１０にそのまま格納することができるとともに、生成した乱数を確実に保持することができる。
【００９３】
以上、本発明の実施の形態について説明したが、本発明の乱数発生回路及び不揮発性半導体装置は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
例えば、上述した実施形態では、不揮発性メモリセルがＳＬＣである不揮発性半導体装置の例について説明したが、本発明の乱数発生回路は、不揮発性メモリセルがＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）である不揮発性半導体装置においても実現可能である。
【符号の説明】
【００９４】
１…不揮発性半導体装置、１０…メモリセルアレイ、１１…制御回路、１２…ロウデコーダ、１３…ページバッファコントロール、１４…ページバッファ群、１４Ａ…ページバッファ、１５…パスビット数カウンタ、１６…ライトステートマシーン、１７…乱数生成部、１７Ａ…乱数発生回路、１８…Ｉ／Ｏバッファ、１９…Ｉ／Ｏパッド
【図１】
2014021529.tif 000003
【図２】
2014021529.tif 000004
【図３】
2014021529.tif 000005
【図４】
2014021529.tif 000006
【図５】
2014021529.tif 000007
【図６】
2014021529.tif 000008
【図７】
2014021529.tif 000009
【図８】
2014021529.tif 000010
【図９】
2014021529.tif 000011