半導体集積回路装置
【課題】一つのブロック全体のプログラムループ回数を簡単に知ることができる不揮発性半導体記憶装置を有した半導体集積回路装置を提供すること
【解決手段】ページバッファに記憶された書き込みデータに応じて、データが書き込まれる複数のメモリセルと、複数のメモリセルへのデータ書き込みに要したプログラムループ回数を累積記憶するプログラムループ累積カウンタ33と、を具備し、プログラムループ累積カウンタ33に累積記憶されたプログラムループ回数を出力することを特徴とする。
【解決手段】ページバッファに記憶された書き込みデータに応じて、データが書き込まれる複数のメモリセルと、複数のメモリセルへのデータ書き込みに要したプログラムループ回数を累積記憶するプログラムループ累積カウンタ33と、を具備し、プログラムループ累積カウンタ33に累積記憶されたプログラムループ回数を出力することを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路装置に関し、特に、データの書き換えが可能な不揮発性半導体記憶装置を備えた半導体集積回路装置に関する。
【背景技術】
【0002】
電気的に書き換えが可能な不揮発性半導体記憶装置、例えば、フラッシュメモリでは、データを、ページ単位で書き込む。例えば、この書き込みの際、プログラムとベリファイとを繰り返す。本明細書では、この繰り返しの回数をプログラムループ回数と呼ぶ。プログラムループ回数は無限ではなく、ある制限された回数がある。制限された回数に達する前に、書き込みが充分になされたと判定された場合には、書き込みステータスを“パス”として、そのページに対する書き込みを終了する。反対に、書き込みが充分でないまま、制限された回数に達すると、書き込みステータスを“フェイル”として、そのページに対する書き込みを終了する。
【0003】
フラッシュメモリ、例えば、NAND型フラッシュメモリでは、何本かのページ、例えば、32本のページをひとつにまとめ、ブロックと呼ばれる単位を構成する。ブロックは、データ消去の最小単位である。このため、書き込みはページ単位で実行されるものの、このブロック中に含まれる全てのページに対して書き込みが終わるまで、書き込みは続けられる。例えば、一つのブロックに、32本のページがあった場合には、32本全てのページに対する書き込みが終わるまで、書き込みは続けられる。
【0004】
もしも、書き込み速度を求めたいならば、一つのブロック全体のプログラムループ回数を測定すれば良い。このためには、1本のページの書き込みが終了する度に、プログラムループ回数を測定する。そして、これを、一つのブロック全体の書き込みが終了するまで続け、最後に全てのプログラムループ回数を足し合わせれば良い。
【0005】
しかし、1本のページの書き込みが終了する度に、プログラムループ回数を測定する方式は、甚だ時間を要することになる。
【特許文献1】特開平5−314780号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
この発明は、一つのブロック全体のプログラムループ回数を簡単に知ることができる不揮発性半導体記憶装置を有した半導体集積回路装置を提供する。
【課題を解決するための手段】
【0007】
この発明の一態様に係る半導体集積回路装置は、書き込みデータを記憶するページバッファと、前記ページバッファに記憶された書き込みデータに応じて、データが書き込まれる複数のメモリセルと、前記複数のメモリセルへのデータ書き込みに要したプログラムループ回数を累積記憶するプログラムループ累積カウンタと、を具備し、前記プログラムループ累積カウンタに累積記憶されたプログラムループ回数を出力する。
【発明の効果】
【0008】
この発明によれば、一つのブロック全体のプログラムループ回数を簡単に知ることができる不揮発性半導体記憶装置を有した半導体集積回路装置を提供できる。
【発明を実施するための最良の形態】
【0009】
以下、この発明の実施形態のいくつかを、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【0010】
(第1実施形態)
図1は、この発明の第1実施形態に係る半導体集積回路装置の一例を示すブロック図である。第1実施形態は、半導体集積回路装置の一例とし、NAND型フラッシュメモリを示すが、この発明はNAND型フラッシュメモリ以外のメモリにも適用することができる。
【0011】
メモリセルアレイ1には、不揮発性半導体メモリセルがマトリクス状に配置される。不揮発性半導体メモリセルの一例は、フラッシュメモリセルである。
【0012】
カラム制御回路2は、メモリセルアレイ1のビット線を制御し、メモリセルのデータ消去、メモリセルへのデータ書き込み、及びメモリセルからのデータ読み出しを行う。カラム制御回路2は、メモリセルアレイ1に隣接して設けられる。
【0013】
ロウ制御回路3は、メモリセルアレイ1のワード線を選択し、消去、書き込み、及び読み出しに必要な電位を印加する。
【0014】
ソース線制御回路4は、メモリセルアレイ1のソース線を制御する。
【0015】
Pウェル制御回路5は、メモリセルアレイ1が形成されるP型セルウェルの電位を制御する。
【0016】
データ入出力バッファ6は、カラム制御回路2にIO線対IO、IOnを介して電気的に接続され、外部のホスト(図示せず)に外部IO線を介して電気的に接続される。データ入出力バッファ6には、例えば、入出力バッファ回路が配置される。データ入出力バッファ6は、書き込みデータの受け取り、読み出しデータの出力、及びアドレスデータやコマンドデータの受け取りを行う。データ入出力バッファ6は、受け取った書き込みデータをIO線対IO、IOnを介してカラム制御回路2に送り、また、カラム制御回路2から読み出したデータをIO線対IO、IOnを介して受け取る。さらに、メモリセルアレイ1のアドレスを選択するために外部から入力されたアドレスデータを、カラム制御回路2やロウ制御回路3に、ステートマシン8を介して送る。また、外部ホストからのコマンドデータを、コマンドインターフェイス7に送る。
【0017】
コマンドインターフェイス7は、外部制御信号線を介して外部ホストからの制御信号を受け、データ入出力バッファ6に入力されたデータが書き込みデータなのか、あるいはコマンドデータなのか、あるいはアドレスデータなのかを判断し、コマンドデータであれば、コマンドデータとしてステートマシン8に転送する。
【0018】
ステートマシン8は、フラッシュメモリ全体の管理を行う。外部ホストからのコマンドデータを受け、読み出し、書き込み、消去、及びデータの入出力管理を行う。
【0019】
図2は、図1に示すメモリセルアレイ1の一例を示す図である。
【0020】
図2に示すように、メモリセルアレイ1は複数のブロック、例えば、1024個のブロックBLOCK0〜BLOCK1023に分割される。ブロックは、例えば、消去の最小単位である。各ブロックBLOCKiは複数のNAND型メモリユニット、例えば、8512個のNAND型メモリユニットを含む。この例では、各NAND型メモリユニットは2つの選択トランジスタSTD、STSと、これらの間に、直列に接続された複数のメモリセルM(本例では4つ)を含む。NAND型メモリユニットの一端は選択ゲート線SGDに繋がる選択トランジスタSTDを介してビット線BLに接続され、その他端は選択ゲート線SGSに繋がる選択ゲートSTSを介して共通ソース線C-sourceに接続される。各メモリセルMはワード線WLに繋がる。0から数えて偶数番目のビット線BLeと、奇数番目のビット線BLoとは、互いに独立してデータの書き込みと読み出しとが行われる。1本のワード線WLに繋がる8512個のメモリセルのうち、例えば、ビット線BLeに接続される4256個のメモリセルに対して同時にデータの書き込みと読み出しとが行われる。各メモリセルMが記憶する1ビットのデータが4256個のメモリセル分集まって、ページという単位を構成する。ページは、例えば、読み出しの最小単位である。1つのメモリセルMで2ビットのデータを記憶する場合、4256個のメモリセルは2ページ分のデータを記憶する。同様に、ビット線BLoに接続される4256個のメモリセルで別の2ページが構成され、ページ内のメモリセルに対して同時にデータの書き込みと読み出しとが行われる。
【0021】
図3は、チップレイアウトの一例を示す平面図である。
【0022】
図3に示すように、半導体チップ100には、メモリセルアレイ領域102、ロウデコーダ領域104、ページバッファ領域106、周辺回路領域108、チャージポンプ回路領域110、及びパッド領域112が設けられる。
【0023】
本例では、メモリセルアレイ領域102は二箇所有り、それぞれにメモリセルアレイ1がレイアウトされる。
【0024】
ロウデコーダ領域104は、メモリセルアレイ領域100の、ロウ方向に沿った両端に配置され、それぞれにロウ制御回路3がレイアウトされる。
【0025】
ページバッファ領域106、周辺回路領域108、チャージポンプ回路領域110、及びパッド領域112は、メモリセルアレイ領域100の、カラム方向に沿った一端に順次配置される。
【0026】
ページバッファ領域106には、カラム制御回路、例えば、ページバッファがレイアウトされる。ページバッファはデータ回路の一種であり、メモリセルアレイ1へ書き込む、例えば、1ページ分の書き込みデータを一時的に記憶したり、メモリセルアレイ1から読み出した、例えば、1ページ分の読み出しデータを一時的に記憶したりする。
【0027】
周辺回路領域108には、カラム系制御回路2、データ入出力バッファ6、コマンドインターフェイス7、及びステートマシン8がレイアウトされる。
【0028】
チャージポンプ回路110には、チャージポンプ回路がレイアウトされる。チャージポンプ回路は昇圧回路の一種であり、書き込み、消去に必要とされる電源電位、例えば、外部電源電位よりも高い電位や、チップ内部で使用されるチップ内電源電位を発生させる。
【0029】
本例では、パッド領域112は一箇所有り、チップの一つの辺に沿って配置される。パッド領域112には、パッドがレイアウトされる。パッドは、半導体チップ100と、外部との接続点である。パッドは、例えば、データ入出力バッファ6、及びコマンドインターフェイス7に接続される。
【0030】
次に、第1実施形態に係る半導体集積回路装置の動作の一例を説明する。
【0031】
本例においては、書き込み動作以外の動作については、従来知られている動作と同じで良い。従って、本明細書においては、書き込み動作のみを説明する。
【0032】
まず、書き込み動作の流れを簡単に説明する。
【0033】
図4は書き込みデータの流れを概略的に示すブロック図、図5は書き込み動作を概略的に示す動作波形図である。
【0034】
図4に示すように、例えば、外部から入力されたデータDINは、ページバッファ(Page Buffer)21に、データ入出力バッファ6の、入力バッファ(Input Buffer)23を介して順次取り込まれる。データDINがページバッファ21に全て取りこまれると、図5に示すプログラム信号progがアクティブとなり、書き込み動作の開始をコア25に命令する。書き込み動作においては、ワード線WLをプログラム電圧Vprogまで昇圧し、メモリセルへデータを書き込む。書き込み後、図5に示すベリファイ信号verifyがアクティブとなり、ベリファイ動作に入る。ベリファイの結果、書き込みがパス(pass)であるならば書き込み動作は終了し、反対に、フェイル(fail)であるならば、プログラム電圧Vprogを、ステップアップ電圧ΔVprogの分、ステップアップして、再度書き込み動作を開始する。この“プログラム→ベリファイ”の繰り返し回数がプログラムループ回数である。プログラムループ回数は、カウンタによってカウントされる。
【0035】
図6は、この発明の第1実施形態に係る半導体集積回路装置が有するカウンタの一例を示すブロック図である。
【0036】
本例に係る装置は、図6に示すように、プログラムループ回数をカウントするカウンタとして、プログラムループカウンタ31(以下ループカウンタと略す)と、プログラムループ累積カウンタ33(以下累積カウンタと略す)と、を有する。ループカウンタ31は、プログラムループ回数を、例えば、ワード線1本毎、例えば、ページ毎にカウントする。累積カウンタ33は、プログラムループ回数を、例えば、ワード線複数本、本例ではブロック全体に及んで累積カウントする。
【0037】
図7は、ループカウンタ31、及び累積カウンタ33への入力信号の波形例を示す信号波形図である。
【0038】
ループカウンタ31は、リセット信号PLCRSTが入力されるとリセットされ、セット信号PLCSETが入力されるとセットされてカウントを開始する。カウントの仕方は、例えば、信号PROG/VERIFYの立ち上がりをカウントすれば良い。
【0039】
同様に、累積カウンタ33は、リセット信号PLCRST2が入力されるとリセットされ、セット信号PLCSET2が入力されるとセットされてカウントを開始する。カウントの仕方は、ループカウンタ31と同じで良く、例えば、信号PROG/VERIFYの立ち上がりをカウントすれば良い。
【0040】
ループカウンタ31、及び累積カウンタ33は、メモリセルへの書き込みの前、本例ではワード線WL0に接続されるメモリセルへの書き込み開始前にリセットされ、そして、セットされる。ループカウンタ31はワード線WL0に接続されるメモリセルへの書き込みが終了するとリセットされる。そして、次のメモリセルへの書き込みの前、本例ではワード線WL1に接続されるメモリセルへの書き込み開始前にセットされる。このように、ループカウンタ31は、ワード線毎のデータ書き込みが終了する毎にリセットされ、そしてセットされる。
【0041】
対して、累積カウンタ33は、ワード線毎のデータ書き込みが終了してもリセットされない。このため、累積カウンタ33は、ワード線毎のデータ書き込みに要したプログラムループ回数を、累積してカウントすることができる。
【0042】
さらに、本例では、最後のワード線WL15に接続されるメモリセルへのデータ書き込みが終了した後、累積カウンタ33に対して、すぐにリセット信号が入力されない。これにより、累積したプログラムループ回数を一時的に保持することができる。つまり、累積カウンタ33は、複数のメモリセルへのデータ書き込み、本例では、ワード線WL0〜ワード線WL15の全てのプログラムに要したプログラムループ回数を累積記憶する。累積カウンタ33に累積記憶されたプログラムループ回数は、累積カウンタ33から出力される(PLC2OUT)。出力PLC2OUTは、データ入出力バッファ6のデータ出力バッファを介して、例えば、半導体集積回路装置の外部へと出力される。累積記憶されたプログラムループ回数が出力された後、もしくは次の書き込み動作が始まる時、累積カウンタ33はリセットされる。
【0043】
また、図6に示すように、本例の累積カウンタ33には、イネーブル信号PLC2ENBが入力される。累積カウンタ33は、イネーブル信号PLC2ENBが入力されたときのみ、動作させることが可能である。累積カウンタ33を動作させたくないときには、イネーブル信号PLC2ENBを非活性とすれば良い。例えば、累積カウンタ33を動作させたくないときは、通常の使用中であり、反対に、累積カウンタ33を動作させたいときは、例えば、工場内におけるテストモード中である。従って、半導体集積回路装置が、テストモードであるときに、イネーブル信号PLC2ENBを活性化するようにしても良い。
【0044】
次に、ループカウンタ31、及び累積カウンタ33の回路例を説明する。
【0045】
本例のループカウンタ31は、例えば、m+1ビットの出力PLCOUT<0:m>を持つ2進カウンタである。同様に、本例の累積カウンタ33は、例えば、n+1ビットの出力PLC2OUT<0:n>を持つ2進カウンタである。累積カウンタ33の出力ビット数は、ループカウンタ31の出力ビット数よりも多い。このため、累積カウンタ33には、ループカウンタ31に比較して、例えば、フリップフロップ回路が多く必要となる。
【0046】
図8Aにループカウンタ31の一回路例を示し、図8Bに累積カウンタ33の一回路例を示す。例えば、累積カウンタ33のフリップフロップ回路FFをn+1個、ループウンタ31のフリップフロップ回路FFをm+1個としたとき、“n”と“m”との関係は、n>>mである。このように、累積カウンタ33は、ループカウンタ31よりも多くのフリップフロップ回路FFを必要とする。しかしながら、フリップフロップ回路FFの増加分は、NAND型フラッシュメモリチップの全ての回路に比較すると僅かである。よって、累積カウンタ33はチップ面積を無用に増加させたり、回路レイアウトを圧迫したりはしない。
【0047】
次に、書き込み動作の一例を説明する。
【0048】
図9は、書き込み動作の一例を示す流れ図である。
【0049】
図9に示すように、最初に、データを、書き込みを行うブロックから消去する(ST.1)。
【0050】
次いで、ループカウンタ、及び累積カウンタをリセットする(ST.2、ST.3)。なお、累積カウンタは、通常動作においては非活性とし、テスト動作においてのみ活性化するようにしても良い。この場合には、累積カウンタはテスト動作のときのみリセットされる。次いで、書き込みを行い、書き込んだデータをベリファイする(ST.5、ST.6)。
【0051】
ベリファイがOKならば、次に書き込むワード線が有るか否かを判断する(ST.7)。次に書き込むワード線が無いならば、ステータスをパスとし(ST.8)、書き込み動作を終了する。次に書き込むワード線があれば、書き込み動作を次の書き込むワード線に移し(ST.9)、書き込み電位Vprogを基準電位として(ST.10)、ST.2に戻り、ループカウンタをリセットする。以下、上述の動作と同様にして、書き込みを行い、書き込んだデータをベリファイする(ST.5、ST.6)。
【0052】
ベリファイがNGならば、累積カウンタの値が規定値に達しているか否かを判断する(ST.11)。規定値に達していれば、ステータスをフェイルとし(ST.12)、書き込み動作を終了する。規定値に達していなければ、次にループカウンタの値が規定値に達しているか否かを判断する。規定値に達していれば、ステータスをフェイルとし(ST.14)、書き込み動作を終了する。規定値に達していなければ、ループカウンタの値、及び累積カウンタの値をそれぞれカウントアップする。次いで、書き込み電位Vprogの値を、ΔVprog分ステップアップし(ST17)、ST.4に戻り、書き込みを行う。以下は、上述の動作を繰り返す。
【0053】
本動作例においては、累積カウンタの値を、書き込み動作を行う前にリセットし、書き込み動作中にはリセットしない。従って、書き込み動作中、データ書き込みに要したプログラムループ回数を累積記憶することができる。なお、累積カウンタのリセットは、本動作例のように、書き込み動作を行う前にリセットしても良いし、書き込み動作を行った後にリセットしても良い。累積カウンタのリセットは、データ書き込みに要したプログラムループ回数を累積記憶できれば、何時リセットしても構わない。
【0054】
第1実施形態によれば、累積カウンタを有することで、書き込み動作時、ページが変わっても、プログラムループ回数を累積記憶することができる。このため、例えば、ブロック全体の書き込みに要したプログラムループ回数は、ブロック全体の書き込みが終了した後に、累積カウンタに累積記憶されたプログラムループ回数を調べることで、簡単に知ることができる。累積カウンタに累積記憶されたプログラムループ回数は、例えば、テスト時に出力され、例えば、書き込み速度を、ブロック毎に知りたい場合のデータとして利用される。
【0055】
従来は、一つのブロック全体の書き込みに要したプログラムループ回数を知るためには、一つのページの書き込みが終了する毎、かつ、ループカウンタがリセットされる前に書き込み動作を止め、ループカウンタに保持されたプログラムループ回数を調べていた。このような操作をブロック全体のページに対して行う必要があるため、膨大な処理時間と、煩雑な作業を要していた。例えば、一つのブロックが16ページであった場合には、書き込み動作を、16回停止させなければならない。さらに、一つのブロックが32ページであった場合には、書き込み動作の停止は32回に達する。
【0056】
この点、第1実施形態は、一つのページの書き込みが終了する毎に書き込み動作を止める必要がなく、例えば、一つのブロックの書き込みが終了したときに、書き込み動作を止め、累積カウンタに累積記憶されたプログラムループ回数を調べれば良い。しかも、第1実施形態は、一つのブロックが16ページであっても、32ページであっても、それ以上であっても、書き込み動作の停止は1回で済む。
【0057】
このように、第1実施形態によれば、一つのブロック全体の書き込みに要したプログラムループ回数を簡単に知ることができるばかりでなく、その処理時間を短縮でき、かつ、その操作が簡略化される、という利点を得ることができる。
【0058】
さらに、第1実施形態は、一つのブロック中のページ数に関わらず、書き込み動作の停止は1回で良い。従って、今後、さらに進展する記憶容量の増大、例えば、一つのブロック中に集積されるページ数の増大にも有利である。
【0059】
(第2実施形態)
第2実施形態が第1実施形態と異なるところは、半導体集積回路チップ自身で、チップの妥当性、例えば、チップがパスかフェイルかを判断することにある。
【0060】
図10は、この発明の第2実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【0061】
図10に示すように、第2実施形態は、累積カウンタ33の出力をデコードするデコーダ41を有する。デコーダ41は、累積カウンタ33の出力、例えば、累積記憶したプログラムループ回数を示す出力PLC2OUTと、1ブロック中のページ数とから平均ループ回数を算出し、出力する。
【0062】
さらに、第2実施形態は、ステータス出力バッファ42を有する。ステータス出力バッファ42は、平均ループ回数が想定平均ループ回数よりも多いか少ないかを判断し、これをステータスとして出力する。例えば、平均ループ回数が想定平均ループ回数よりも多いときは、ステータスを“フェイル”、反対に少ないときは“パス”とする。また、ステータスとしては、“フェイル”、及び“パス”に限らず、書き込み速度に応じて表示するようにしても良い。例えば、“書き込み速度が速いクラス”、及び“書き込み速度が遅いクラス”である。
【0063】
次に、第2実施形態の具体的な構成の一例を説明する。
【0064】
具体的な構成の一例は、例えば、外部からステータスコマンドを入力すると、一つのブロック全体の書き込みに要したプログラムループ回数が想定平均ループ回数以下であるか否かが、“パス”もしくは“フェイル”のステータスとして出力されるものである。
【0065】
図11は、この発明の第2実施形態に係る半導体集積回路装置の具体的な構成の一例を示すブロック図である。
【0066】
図11に示すように、ステータスコマンドを、データ入出力バッファ6に入力する。入力されたステータスコマンドは、ステートマシン8に入力される。ステートマシン8は、入力されたステータスコマンドが“ブロック平均プログラムループの読み出し”である、と判断すると、例えば、図9に示した書き込み動作を開始する。
【0067】
例えば、ステートマシン8は、まず、イネーブル信号PLC2ENBを出力し、累積カウンタ33を活性化させる。次いで、ステートマシン8は、リセット信号PLCRST、及びPLCRST2を出力し、ループカウンタ31、及び累積カウンタ33をリセットする。次いで、ステートマシン8は、セット信号PLCSET、及びPLCSET2を出力し、ループカウンタ31、及び累積カウンタ33をセットする。次いで、ステートマシン8は、コア25に対して、プログラム・ベリファイ信号PROG/VERIFY信号を出力する。これに従って、コア25は書き込み動作、及びベリファイ動作を繰り返す。信号PROG/VERIFY信号は、ループカウンタ31、及び累積カウンタ33にも入力される。ループカウンタ31は、第1実施形態と同様に、プログラムループ回数を1ページ毎にカウントする。累積カウンタ33も第1実施形態と同様であり、プログラムループ回数を1ブロック分カウントする。
【0068】
1ブロック分のデータ書き込みが終了すると、累積カウンタ33は、出力PLC2OUTを出力する。出力PLC2OUTは、累積ループカウントデコーダ41に入力される。デコーダ41は、出力PLC2OUTと1ブロック中のページ数とから平均ループ回数を算出する。デコーダ41は、算出された平均ループ回数を、出力PLCAOUTとして出力する。出力PLCAOUTは、ステータス出力バッファ42に入力される。ステータス出力バッファ42は、平均ループ回数が想定平均ループ回数よりも多いか少ないかを判断する。ステータス出力バッファ42は、平均ループ回数が想定平均ループ回数よりも多いか少ないかを判断する。例えば、図6を参照して説明したように、ステータス出力バッファ42は、ステータス出力Status Outを出力する。ステータス出力バッファ42は、平均ループ回数が想定平均ループ回数よりも多いときは、ステータス出力Status Outを“フェイル”、又は“書き込み速度が遅いクラス”とし、反対に少ないときはステータス出力Status Outを“パス”、又は“書き込み速度が速いクラス”とする。
【0069】
ステータス出力Status Outは、データ入出力バッファ6に入力される。データ入出力バッファ6は、上記ステータスを、例えば、チップの外部へと出力する。
【0070】
図12に、上述のステータスコマンドの入力からステータスの出力までの入出力波形の一例を示す。
【0071】
図12に示すように、チップのI/Oピンに、ステータスコマンドを入力すると、レディ/ビジーピンがハイレベルからロウレベルに遷移し、チップがビジー状態になったことが外部に通知される。ビジー状態の間、チップ内では、上述の書き込み動作が行なわれている。レディ/ビジーピンがロウレベルからハイレベルに遷移し、チップがレディ状態に復帰すると、続いてステータスがI/Oピンに出力される。
【0072】
第2実施形態によれば、半導体集積回路チップの中で、例えば、1つのブロックの1つのページの書き込みに要する平均プログラムループ回数を算出する。そして、算出した平均プログラムループ回数に基づいて、このチップが“パス”、“フェイル”、“書き込み速度が速いクラス”、及び“書き込み速度が遅いクラス”のいずれであるのかを、このチップ自身で判断する。
【0073】
従って、第2実施形態によれば、第1実施形態に比較して、その操作を、より簡単化することができる。
【0074】
次に、ステータスコマンドの入力からステータスの出力までの入出力波形の他例を説明する。
【0075】
例えば、図9に示したように、“ステータス=フェイル”を出力するケースは、累積カウンタのカウント値が規定値に達したとき(もしくは超えたとき)、及びループカウンタのカウント値が規定値に達したとき(もしくは超えたとき)がある。これらのケースにおけるステータスを、第2実施形態に反映させるようにしても良い。
【0076】
図13は、上述のステータスコマンドの入力からステータスの出力までの入出力波形の一例を示す。
【0077】
図13に示すように、図12に示す入出力波形と異なるところは、ステータスがI/Oピンに出力される前に、書き込み自体が“パス”であったのか“フェイル”であったのかのステータスを出力することにある。
【0078】
“フェイル”がI/Oピンに出力された場合には、累積カウンタのカウント値が規定値に達したとき(もしくは超えたとき)、又はループカウンタのカウント値が規定値に達したとき(もしくは超えたとき)である。これは、ブロックへの書き込み自体ができなかった、つまり、ブロックはバッドブロックである、ことを示す。
【0079】
対して、“パス”がI/Oピンに出力された場合には、平均プログラムループ回数に関わらず、ブロックへの書き込み自体はできた、ことを示す。つまり、ブロックはグッドブロックである。
【0080】
従って、グッドブロックの場合のみ、つまり、“パス”がI/Oピンに出力された場合のみ、続いて、“ブロック平均プログラムループの読み出し”に対するステータスをI/Oピンに出力するようにしても良い。このときに、続いて出力されるステータスは、上記一例と同様に、“パス”、“フェイル”、“書き込み速度が速いクラス”、及び“書き込み速度が遅いクラス”のいずれかで良い。
【0081】
例えば、“パス”の後、続いて、“パス”又は“書き込み速度が速いクラス”が出力された場合には、このチップは、ブロックへの書き込みが成功し、かつ、平均プログラムループ数以下(又は未満)であることが判る。もちろん、書き込んだブロックはグッドブロックであることも判る。
【0082】
また、“パス”の後、続いて、“フェイル”又は“書き込み速度が遅いクラス”が出力された場合には、このチップは、ブロックへの書き込みが成功し、かつ、平均プログラムループ数を超えた(又は以上)であることが判る。もちろん、書き込んだブロックはグッドブロックであることも判る。
【0083】
このように他例によれば、ステータスコマンドの入力によって、ブロック自体がグッドブロックであるかバッドブロックであるかも判るので、第2実施形態を、チップのテスト工程、例えば、スクリーニング工程に利用することも可能である。
【0084】
また、ステータスを、書き込み速度が速いか遅いかで表示する場合には、2段階表示ではなく、3段階、4段階、…といった多段階表示としても良い。例えば、平均プログラムループ回数に応じて、書き込み速度が“高速であるクラス”、“中速であるクラス”、“低速であるクラス”と分類する。
【0085】
このように、チップを、書き込み速度に応じて分類すれば、ICカード、例えば、メモリカードにおいて、どのクラスのメモリチップを搭載するかによって、メモリカードを、書き込み速度に応じてクラス分けすることが可能となる。例えば、“超高速品”、“高速品”、及び“標準品”といったクラス分けである。
【0086】
メモリカードを書き込み速度に応じてクラス分けすると、ユーザーは、好みに応じて、“超高速品”、“高速品”、及び“標準品”のいずれかを選択することができる。これは、ユーザーにとって便利である。
【0087】
このように、一つのブロック全体のプログラムループ回数を簡単に知ることができるメモリを備えた第1、第2実施形態は、ICカード、例えば、メモリカードへの使用に好適である。
【0088】
以上、この発明をいくつかの実施形態により説明したが、この発明は各実施形態に限定されるものではなく、その実施にあたっては発明の要旨を逸脱しない範囲で種々に変形することが可能である。
【0089】
また、各実施形態は単独で実施することが可能であるが、適宜組み合わせて実施することも可能である。
【0090】
また、各実施形態は種々の段階の発明を含んでおり、各実施形態において開示した複数の構成要件の適宜な組み合わせにより、種々の段階の発明を抽出することが可能である。
【0091】
また、実施形態は、この発明をNAND型フラッシュメモリに適用した例に基づき説明したが、この発明はNAND型フラッシュメモリに限られるものではなく、AND型、NOR型等、NAND型以外のフラッシュメモリにも適用することができる。さらに、これらフラッシュメモリを内蔵した半導体集積回路装置、例えば、プロセッサ、システムLSI等もまた、この発明の範疇である。
【図面の簡単な説明】
【0092】
【図1】図1はこの発明の第1実施形態に係る半導体集積回路装置の一例を示すブロック図
【図2】図2は図1に示すメモリセルアレイの一例を示す図
【図3】図3はチップレイアウトの一例を示す平面図
【図4】図4は書き込みデータの流れを概略的に示すブロック図
【図5】図5は書き込み動作を概略的に示す動作波形図
【図6】図6はこの発明の第1実施形態に係る半導体集積回路装置が有するカウンタの一例を示すブロック図
【図7】図7はループカウンタ、及び累積カウンタへの入力信号の波形例を示す信号波形図
【図8】図8Aはループカウンタの一例を示す回路図、図8Bは累積カウンタの一例を示す回路図
【図9】図9は書き込み動作の一例を示す図
【図10】図10はこの発明の第2実施形態に係る半導体集積回路装置の一例を示すブロック図
【図11】図11は、この発明の第2実施形態に係る半導体集積回路装置の具体的な構成の一例を示すブロック図
【図12】図12はステータスコマンド入力からステータスの出力までの入出力波形の一例を示す入出力波形図
【図13】図13はステータスコマンド入力からステータスの出力までの入出力波形の他例を示す入出力波形図
【符号の説明】
【0093】
21…ページバッファ、31…ループカウンタ、33…累積カウンタ、M…メモリセル、WL…ワード線
【技術分野】
【0001】
本発明は、半導体集積回路装置に関し、特に、データの書き換えが可能な不揮発性半導体記憶装置を備えた半導体集積回路装置に関する。
【背景技術】
【0002】
電気的に書き換えが可能な不揮発性半導体記憶装置、例えば、フラッシュメモリでは、データを、ページ単位で書き込む。例えば、この書き込みの際、プログラムとベリファイとを繰り返す。本明細書では、この繰り返しの回数をプログラムループ回数と呼ぶ。プログラムループ回数は無限ではなく、ある制限された回数がある。制限された回数に達する前に、書き込みが充分になされたと判定された場合には、書き込みステータスを“パス”として、そのページに対する書き込みを終了する。反対に、書き込みが充分でないまま、制限された回数に達すると、書き込みステータスを“フェイル”として、そのページに対する書き込みを終了する。
【0003】
フラッシュメモリ、例えば、NAND型フラッシュメモリでは、何本かのページ、例えば、32本のページをひとつにまとめ、ブロックと呼ばれる単位を構成する。ブロックは、データ消去の最小単位である。このため、書き込みはページ単位で実行されるものの、このブロック中に含まれる全てのページに対して書き込みが終わるまで、書き込みは続けられる。例えば、一つのブロックに、32本のページがあった場合には、32本全てのページに対する書き込みが終わるまで、書き込みは続けられる。
【0004】
もしも、書き込み速度を求めたいならば、一つのブロック全体のプログラムループ回数を測定すれば良い。このためには、1本のページの書き込みが終了する度に、プログラムループ回数を測定する。そして、これを、一つのブロック全体の書き込みが終了するまで続け、最後に全てのプログラムループ回数を足し合わせれば良い。
【0005】
しかし、1本のページの書き込みが終了する度に、プログラムループ回数を測定する方式は、甚だ時間を要することになる。
【特許文献1】特開平5−314780号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
この発明は、一つのブロック全体のプログラムループ回数を簡単に知ることができる不揮発性半導体記憶装置を有した半導体集積回路装置を提供する。
【課題を解決するための手段】
【0007】
この発明の一態様に係る半導体集積回路装置は、書き込みデータを記憶するページバッファと、前記ページバッファに記憶された書き込みデータに応じて、データが書き込まれる複数のメモリセルと、前記複数のメモリセルへのデータ書き込みに要したプログラムループ回数を累積記憶するプログラムループ累積カウンタと、を具備し、前記プログラムループ累積カウンタに累積記憶されたプログラムループ回数を出力する。
【発明の効果】
【0008】
この発明によれば、一つのブロック全体のプログラムループ回数を簡単に知ることができる不揮発性半導体記憶装置を有した半導体集積回路装置を提供できる。
【発明を実施するための最良の形態】
【0009】
以下、この発明の実施形態のいくつかを、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【0010】
(第1実施形態)
図1は、この発明の第1実施形態に係る半導体集積回路装置の一例を示すブロック図である。第1実施形態は、半導体集積回路装置の一例とし、NAND型フラッシュメモリを示すが、この発明はNAND型フラッシュメモリ以外のメモリにも適用することができる。
【0011】
メモリセルアレイ1には、不揮発性半導体メモリセルがマトリクス状に配置される。不揮発性半導体メモリセルの一例は、フラッシュメモリセルである。
【0012】
カラム制御回路2は、メモリセルアレイ1のビット線を制御し、メモリセルのデータ消去、メモリセルへのデータ書き込み、及びメモリセルからのデータ読み出しを行う。カラム制御回路2は、メモリセルアレイ1に隣接して設けられる。
【0013】
ロウ制御回路3は、メモリセルアレイ1のワード線を選択し、消去、書き込み、及び読み出しに必要な電位を印加する。
【0014】
ソース線制御回路4は、メモリセルアレイ1のソース線を制御する。
【0015】
Pウェル制御回路5は、メモリセルアレイ1が形成されるP型セルウェルの電位を制御する。
【0016】
データ入出力バッファ6は、カラム制御回路2にIO線対IO、IOnを介して電気的に接続され、外部のホスト(図示せず)に外部IO線を介して電気的に接続される。データ入出力バッファ6には、例えば、入出力バッファ回路が配置される。データ入出力バッファ6は、書き込みデータの受け取り、読み出しデータの出力、及びアドレスデータやコマンドデータの受け取りを行う。データ入出力バッファ6は、受け取った書き込みデータをIO線対IO、IOnを介してカラム制御回路2に送り、また、カラム制御回路2から読み出したデータをIO線対IO、IOnを介して受け取る。さらに、メモリセルアレイ1のアドレスを選択するために外部から入力されたアドレスデータを、カラム制御回路2やロウ制御回路3に、ステートマシン8を介して送る。また、外部ホストからのコマンドデータを、コマンドインターフェイス7に送る。
【0017】
コマンドインターフェイス7は、外部制御信号線を介して外部ホストからの制御信号を受け、データ入出力バッファ6に入力されたデータが書き込みデータなのか、あるいはコマンドデータなのか、あるいはアドレスデータなのかを判断し、コマンドデータであれば、コマンドデータとしてステートマシン8に転送する。
【0018】
ステートマシン8は、フラッシュメモリ全体の管理を行う。外部ホストからのコマンドデータを受け、読み出し、書き込み、消去、及びデータの入出力管理を行う。
【0019】
図2は、図1に示すメモリセルアレイ1の一例を示す図である。
【0020】
図2に示すように、メモリセルアレイ1は複数のブロック、例えば、1024個のブロックBLOCK0〜BLOCK1023に分割される。ブロックは、例えば、消去の最小単位である。各ブロックBLOCKiは複数のNAND型メモリユニット、例えば、8512個のNAND型メモリユニットを含む。この例では、各NAND型メモリユニットは2つの選択トランジスタSTD、STSと、これらの間に、直列に接続された複数のメモリセルM(本例では4つ)を含む。NAND型メモリユニットの一端は選択ゲート線SGDに繋がる選択トランジスタSTDを介してビット線BLに接続され、その他端は選択ゲート線SGSに繋がる選択ゲートSTSを介して共通ソース線C-sourceに接続される。各メモリセルMはワード線WLに繋がる。0から数えて偶数番目のビット線BLeと、奇数番目のビット線BLoとは、互いに独立してデータの書き込みと読み出しとが行われる。1本のワード線WLに繋がる8512個のメモリセルのうち、例えば、ビット線BLeに接続される4256個のメモリセルに対して同時にデータの書き込みと読み出しとが行われる。各メモリセルMが記憶する1ビットのデータが4256個のメモリセル分集まって、ページという単位を構成する。ページは、例えば、読み出しの最小単位である。1つのメモリセルMで2ビットのデータを記憶する場合、4256個のメモリセルは2ページ分のデータを記憶する。同様に、ビット線BLoに接続される4256個のメモリセルで別の2ページが構成され、ページ内のメモリセルに対して同時にデータの書き込みと読み出しとが行われる。
【0021】
図3は、チップレイアウトの一例を示す平面図である。
【0022】
図3に示すように、半導体チップ100には、メモリセルアレイ領域102、ロウデコーダ領域104、ページバッファ領域106、周辺回路領域108、チャージポンプ回路領域110、及びパッド領域112が設けられる。
【0023】
本例では、メモリセルアレイ領域102は二箇所有り、それぞれにメモリセルアレイ1がレイアウトされる。
【0024】
ロウデコーダ領域104は、メモリセルアレイ領域100の、ロウ方向に沿った両端に配置され、それぞれにロウ制御回路3がレイアウトされる。
【0025】
ページバッファ領域106、周辺回路領域108、チャージポンプ回路領域110、及びパッド領域112は、メモリセルアレイ領域100の、カラム方向に沿った一端に順次配置される。
【0026】
ページバッファ領域106には、カラム制御回路、例えば、ページバッファがレイアウトされる。ページバッファはデータ回路の一種であり、メモリセルアレイ1へ書き込む、例えば、1ページ分の書き込みデータを一時的に記憶したり、メモリセルアレイ1から読み出した、例えば、1ページ分の読み出しデータを一時的に記憶したりする。
【0027】
周辺回路領域108には、カラム系制御回路2、データ入出力バッファ6、コマンドインターフェイス7、及びステートマシン8がレイアウトされる。
【0028】
チャージポンプ回路110には、チャージポンプ回路がレイアウトされる。チャージポンプ回路は昇圧回路の一種であり、書き込み、消去に必要とされる電源電位、例えば、外部電源電位よりも高い電位や、チップ内部で使用されるチップ内電源電位を発生させる。
【0029】
本例では、パッド領域112は一箇所有り、チップの一つの辺に沿って配置される。パッド領域112には、パッドがレイアウトされる。パッドは、半導体チップ100と、外部との接続点である。パッドは、例えば、データ入出力バッファ6、及びコマンドインターフェイス7に接続される。
【0030】
次に、第1実施形態に係る半導体集積回路装置の動作の一例を説明する。
【0031】
本例においては、書き込み動作以外の動作については、従来知られている動作と同じで良い。従って、本明細書においては、書き込み動作のみを説明する。
【0032】
まず、書き込み動作の流れを簡単に説明する。
【0033】
図4は書き込みデータの流れを概略的に示すブロック図、図5は書き込み動作を概略的に示す動作波形図である。
【0034】
図4に示すように、例えば、外部から入力されたデータDINは、ページバッファ(Page Buffer)21に、データ入出力バッファ6の、入力バッファ(Input Buffer)23を介して順次取り込まれる。データDINがページバッファ21に全て取りこまれると、図5に示すプログラム信号progがアクティブとなり、書き込み動作の開始をコア25に命令する。書き込み動作においては、ワード線WLをプログラム電圧Vprogまで昇圧し、メモリセルへデータを書き込む。書き込み後、図5に示すベリファイ信号verifyがアクティブとなり、ベリファイ動作に入る。ベリファイの結果、書き込みがパス(pass)であるならば書き込み動作は終了し、反対に、フェイル(fail)であるならば、プログラム電圧Vprogを、ステップアップ電圧ΔVprogの分、ステップアップして、再度書き込み動作を開始する。この“プログラム→ベリファイ”の繰り返し回数がプログラムループ回数である。プログラムループ回数は、カウンタによってカウントされる。
【0035】
図6は、この発明の第1実施形態に係る半導体集積回路装置が有するカウンタの一例を示すブロック図である。
【0036】
本例に係る装置は、図6に示すように、プログラムループ回数をカウントするカウンタとして、プログラムループカウンタ31(以下ループカウンタと略す)と、プログラムループ累積カウンタ33(以下累積カウンタと略す)と、を有する。ループカウンタ31は、プログラムループ回数を、例えば、ワード線1本毎、例えば、ページ毎にカウントする。累積カウンタ33は、プログラムループ回数を、例えば、ワード線複数本、本例ではブロック全体に及んで累積カウントする。
【0037】
図7は、ループカウンタ31、及び累積カウンタ33への入力信号の波形例を示す信号波形図である。
【0038】
ループカウンタ31は、リセット信号PLCRSTが入力されるとリセットされ、セット信号PLCSETが入力されるとセットされてカウントを開始する。カウントの仕方は、例えば、信号PROG/VERIFYの立ち上がりをカウントすれば良い。
【0039】
同様に、累積カウンタ33は、リセット信号PLCRST2が入力されるとリセットされ、セット信号PLCSET2が入力されるとセットされてカウントを開始する。カウントの仕方は、ループカウンタ31と同じで良く、例えば、信号PROG/VERIFYの立ち上がりをカウントすれば良い。
【0040】
ループカウンタ31、及び累積カウンタ33は、メモリセルへの書き込みの前、本例ではワード線WL0に接続されるメモリセルへの書き込み開始前にリセットされ、そして、セットされる。ループカウンタ31はワード線WL0に接続されるメモリセルへの書き込みが終了するとリセットされる。そして、次のメモリセルへの書き込みの前、本例ではワード線WL1に接続されるメモリセルへの書き込み開始前にセットされる。このように、ループカウンタ31は、ワード線毎のデータ書き込みが終了する毎にリセットされ、そしてセットされる。
【0041】
対して、累積カウンタ33は、ワード線毎のデータ書き込みが終了してもリセットされない。このため、累積カウンタ33は、ワード線毎のデータ書き込みに要したプログラムループ回数を、累積してカウントすることができる。
【0042】
さらに、本例では、最後のワード線WL15に接続されるメモリセルへのデータ書き込みが終了した後、累積カウンタ33に対して、すぐにリセット信号が入力されない。これにより、累積したプログラムループ回数を一時的に保持することができる。つまり、累積カウンタ33は、複数のメモリセルへのデータ書き込み、本例では、ワード線WL0〜ワード線WL15の全てのプログラムに要したプログラムループ回数を累積記憶する。累積カウンタ33に累積記憶されたプログラムループ回数は、累積カウンタ33から出力される(PLC2OUT)。出力PLC2OUTは、データ入出力バッファ6のデータ出力バッファを介して、例えば、半導体集積回路装置の外部へと出力される。累積記憶されたプログラムループ回数が出力された後、もしくは次の書き込み動作が始まる時、累積カウンタ33はリセットされる。
【0043】
また、図6に示すように、本例の累積カウンタ33には、イネーブル信号PLC2ENBが入力される。累積カウンタ33は、イネーブル信号PLC2ENBが入力されたときのみ、動作させることが可能である。累積カウンタ33を動作させたくないときには、イネーブル信号PLC2ENBを非活性とすれば良い。例えば、累積カウンタ33を動作させたくないときは、通常の使用中であり、反対に、累積カウンタ33を動作させたいときは、例えば、工場内におけるテストモード中である。従って、半導体集積回路装置が、テストモードであるときに、イネーブル信号PLC2ENBを活性化するようにしても良い。
【0044】
次に、ループカウンタ31、及び累積カウンタ33の回路例を説明する。
【0045】
本例のループカウンタ31は、例えば、m+1ビットの出力PLCOUT<0:m>を持つ2進カウンタである。同様に、本例の累積カウンタ33は、例えば、n+1ビットの出力PLC2OUT<0:n>を持つ2進カウンタである。累積カウンタ33の出力ビット数は、ループカウンタ31の出力ビット数よりも多い。このため、累積カウンタ33には、ループカウンタ31に比較して、例えば、フリップフロップ回路が多く必要となる。
【0046】
図8Aにループカウンタ31の一回路例を示し、図8Bに累積カウンタ33の一回路例を示す。例えば、累積カウンタ33のフリップフロップ回路FFをn+1個、ループウンタ31のフリップフロップ回路FFをm+1個としたとき、“n”と“m”との関係は、n>>mである。このように、累積カウンタ33は、ループカウンタ31よりも多くのフリップフロップ回路FFを必要とする。しかしながら、フリップフロップ回路FFの増加分は、NAND型フラッシュメモリチップの全ての回路に比較すると僅かである。よって、累積カウンタ33はチップ面積を無用に増加させたり、回路レイアウトを圧迫したりはしない。
【0047】
次に、書き込み動作の一例を説明する。
【0048】
図9は、書き込み動作の一例を示す流れ図である。
【0049】
図9に示すように、最初に、データを、書き込みを行うブロックから消去する(ST.1)。
【0050】
次いで、ループカウンタ、及び累積カウンタをリセットする(ST.2、ST.3)。なお、累積カウンタは、通常動作においては非活性とし、テスト動作においてのみ活性化するようにしても良い。この場合には、累積カウンタはテスト動作のときのみリセットされる。次いで、書き込みを行い、書き込んだデータをベリファイする(ST.5、ST.6)。
【0051】
ベリファイがOKならば、次に書き込むワード線が有るか否かを判断する(ST.7)。次に書き込むワード線が無いならば、ステータスをパスとし(ST.8)、書き込み動作を終了する。次に書き込むワード線があれば、書き込み動作を次の書き込むワード線に移し(ST.9)、書き込み電位Vprogを基準電位として(ST.10)、ST.2に戻り、ループカウンタをリセットする。以下、上述の動作と同様にして、書き込みを行い、書き込んだデータをベリファイする(ST.5、ST.6)。
【0052】
ベリファイがNGならば、累積カウンタの値が規定値に達しているか否かを判断する(ST.11)。規定値に達していれば、ステータスをフェイルとし(ST.12)、書き込み動作を終了する。規定値に達していなければ、次にループカウンタの値が規定値に達しているか否かを判断する。規定値に達していれば、ステータスをフェイルとし(ST.14)、書き込み動作を終了する。規定値に達していなければ、ループカウンタの値、及び累積カウンタの値をそれぞれカウントアップする。次いで、書き込み電位Vprogの値を、ΔVprog分ステップアップし(ST17)、ST.4に戻り、書き込みを行う。以下は、上述の動作を繰り返す。
【0053】
本動作例においては、累積カウンタの値を、書き込み動作を行う前にリセットし、書き込み動作中にはリセットしない。従って、書き込み動作中、データ書き込みに要したプログラムループ回数を累積記憶することができる。なお、累積カウンタのリセットは、本動作例のように、書き込み動作を行う前にリセットしても良いし、書き込み動作を行った後にリセットしても良い。累積カウンタのリセットは、データ書き込みに要したプログラムループ回数を累積記憶できれば、何時リセットしても構わない。
【0054】
第1実施形態によれば、累積カウンタを有することで、書き込み動作時、ページが変わっても、プログラムループ回数を累積記憶することができる。このため、例えば、ブロック全体の書き込みに要したプログラムループ回数は、ブロック全体の書き込みが終了した後に、累積カウンタに累積記憶されたプログラムループ回数を調べることで、簡単に知ることができる。累積カウンタに累積記憶されたプログラムループ回数は、例えば、テスト時に出力され、例えば、書き込み速度を、ブロック毎に知りたい場合のデータとして利用される。
【0055】
従来は、一つのブロック全体の書き込みに要したプログラムループ回数を知るためには、一つのページの書き込みが終了する毎、かつ、ループカウンタがリセットされる前に書き込み動作を止め、ループカウンタに保持されたプログラムループ回数を調べていた。このような操作をブロック全体のページに対して行う必要があるため、膨大な処理時間と、煩雑な作業を要していた。例えば、一つのブロックが16ページであった場合には、書き込み動作を、16回停止させなければならない。さらに、一つのブロックが32ページであった場合には、書き込み動作の停止は32回に達する。
【0056】
この点、第1実施形態は、一つのページの書き込みが終了する毎に書き込み動作を止める必要がなく、例えば、一つのブロックの書き込みが終了したときに、書き込み動作を止め、累積カウンタに累積記憶されたプログラムループ回数を調べれば良い。しかも、第1実施形態は、一つのブロックが16ページであっても、32ページであっても、それ以上であっても、書き込み動作の停止は1回で済む。
【0057】
このように、第1実施形態によれば、一つのブロック全体の書き込みに要したプログラムループ回数を簡単に知ることができるばかりでなく、その処理時間を短縮でき、かつ、その操作が簡略化される、という利点を得ることができる。
【0058】
さらに、第1実施形態は、一つのブロック中のページ数に関わらず、書き込み動作の停止は1回で良い。従って、今後、さらに進展する記憶容量の増大、例えば、一つのブロック中に集積されるページ数の増大にも有利である。
【0059】
(第2実施形態)
第2実施形態が第1実施形態と異なるところは、半導体集積回路チップ自身で、チップの妥当性、例えば、チップがパスかフェイルかを判断することにある。
【0060】
図10は、この発明の第2実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【0061】
図10に示すように、第2実施形態は、累積カウンタ33の出力をデコードするデコーダ41を有する。デコーダ41は、累積カウンタ33の出力、例えば、累積記憶したプログラムループ回数を示す出力PLC2OUTと、1ブロック中のページ数とから平均ループ回数を算出し、出力する。
【0062】
さらに、第2実施形態は、ステータス出力バッファ42を有する。ステータス出力バッファ42は、平均ループ回数が想定平均ループ回数よりも多いか少ないかを判断し、これをステータスとして出力する。例えば、平均ループ回数が想定平均ループ回数よりも多いときは、ステータスを“フェイル”、反対に少ないときは“パス”とする。また、ステータスとしては、“フェイル”、及び“パス”に限らず、書き込み速度に応じて表示するようにしても良い。例えば、“書き込み速度が速いクラス”、及び“書き込み速度が遅いクラス”である。
【0063】
次に、第2実施形態の具体的な構成の一例を説明する。
【0064】
具体的な構成の一例は、例えば、外部からステータスコマンドを入力すると、一つのブロック全体の書き込みに要したプログラムループ回数が想定平均ループ回数以下であるか否かが、“パス”もしくは“フェイル”のステータスとして出力されるものである。
【0065】
図11は、この発明の第2実施形態に係る半導体集積回路装置の具体的な構成の一例を示すブロック図である。
【0066】
図11に示すように、ステータスコマンドを、データ入出力バッファ6に入力する。入力されたステータスコマンドは、ステートマシン8に入力される。ステートマシン8は、入力されたステータスコマンドが“ブロック平均プログラムループの読み出し”である、と判断すると、例えば、図9に示した書き込み動作を開始する。
【0067】
例えば、ステートマシン8は、まず、イネーブル信号PLC2ENBを出力し、累積カウンタ33を活性化させる。次いで、ステートマシン8は、リセット信号PLCRST、及びPLCRST2を出力し、ループカウンタ31、及び累積カウンタ33をリセットする。次いで、ステートマシン8は、セット信号PLCSET、及びPLCSET2を出力し、ループカウンタ31、及び累積カウンタ33をセットする。次いで、ステートマシン8は、コア25に対して、プログラム・ベリファイ信号PROG/VERIFY信号を出力する。これに従って、コア25は書き込み動作、及びベリファイ動作を繰り返す。信号PROG/VERIFY信号は、ループカウンタ31、及び累積カウンタ33にも入力される。ループカウンタ31は、第1実施形態と同様に、プログラムループ回数を1ページ毎にカウントする。累積カウンタ33も第1実施形態と同様であり、プログラムループ回数を1ブロック分カウントする。
【0068】
1ブロック分のデータ書き込みが終了すると、累積カウンタ33は、出力PLC2OUTを出力する。出力PLC2OUTは、累積ループカウントデコーダ41に入力される。デコーダ41は、出力PLC2OUTと1ブロック中のページ数とから平均ループ回数を算出する。デコーダ41は、算出された平均ループ回数を、出力PLCAOUTとして出力する。出力PLCAOUTは、ステータス出力バッファ42に入力される。ステータス出力バッファ42は、平均ループ回数が想定平均ループ回数よりも多いか少ないかを判断する。ステータス出力バッファ42は、平均ループ回数が想定平均ループ回数よりも多いか少ないかを判断する。例えば、図6を参照して説明したように、ステータス出力バッファ42は、ステータス出力Status Outを出力する。ステータス出力バッファ42は、平均ループ回数が想定平均ループ回数よりも多いときは、ステータス出力Status Outを“フェイル”、又は“書き込み速度が遅いクラス”とし、反対に少ないときはステータス出力Status Outを“パス”、又は“書き込み速度が速いクラス”とする。
【0069】
ステータス出力Status Outは、データ入出力バッファ6に入力される。データ入出力バッファ6は、上記ステータスを、例えば、チップの外部へと出力する。
【0070】
図12に、上述のステータスコマンドの入力からステータスの出力までの入出力波形の一例を示す。
【0071】
図12に示すように、チップのI/Oピンに、ステータスコマンドを入力すると、レディ/ビジーピンがハイレベルからロウレベルに遷移し、チップがビジー状態になったことが外部に通知される。ビジー状態の間、チップ内では、上述の書き込み動作が行なわれている。レディ/ビジーピンがロウレベルからハイレベルに遷移し、チップがレディ状態に復帰すると、続いてステータスがI/Oピンに出力される。
【0072】
第2実施形態によれば、半導体集積回路チップの中で、例えば、1つのブロックの1つのページの書き込みに要する平均プログラムループ回数を算出する。そして、算出した平均プログラムループ回数に基づいて、このチップが“パス”、“フェイル”、“書き込み速度が速いクラス”、及び“書き込み速度が遅いクラス”のいずれであるのかを、このチップ自身で判断する。
【0073】
従って、第2実施形態によれば、第1実施形態に比較して、その操作を、より簡単化することができる。
【0074】
次に、ステータスコマンドの入力からステータスの出力までの入出力波形の他例を説明する。
【0075】
例えば、図9に示したように、“ステータス=フェイル”を出力するケースは、累積カウンタのカウント値が規定値に達したとき(もしくは超えたとき)、及びループカウンタのカウント値が規定値に達したとき(もしくは超えたとき)がある。これらのケースにおけるステータスを、第2実施形態に反映させるようにしても良い。
【0076】
図13は、上述のステータスコマンドの入力からステータスの出力までの入出力波形の一例を示す。
【0077】
図13に示すように、図12に示す入出力波形と異なるところは、ステータスがI/Oピンに出力される前に、書き込み自体が“パス”であったのか“フェイル”であったのかのステータスを出力することにある。
【0078】
“フェイル”がI/Oピンに出力された場合には、累積カウンタのカウント値が規定値に達したとき(もしくは超えたとき)、又はループカウンタのカウント値が規定値に達したとき(もしくは超えたとき)である。これは、ブロックへの書き込み自体ができなかった、つまり、ブロックはバッドブロックである、ことを示す。
【0079】
対して、“パス”がI/Oピンに出力された場合には、平均プログラムループ回数に関わらず、ブロックへの書き込み自体はできた、ことを示す。つまり、ブロックはグッドブロックである。
【0080】
従って、グッドブロックの場合のみ、つまり、“パス”がI/Oピンに出力された場合のみ、続いて、“ブロック平均プログラムループの読み出し”に対するステータスをI/Oピンに出力するようにしても良い。このときに、続いて出力されるステータスは、上記一例と同様に、“パス”、“フェイル”、“書き込み速度が速いクラス”、及び“書き込み速度が遅いクラス”のいずれかで良い。
【0081】
例えば、“パス”の後、続いて、“パス”又は“書き込み速度が速いクラス”が出力された場合には、このチップは、ブロックへの書き込みが成功し、かつ、平均プログラムループ数以下(又は未満)であることが判る。もちろん、書き込んだブロックはグッドブロックであることも判る。
【0082】
また、“パス”の後、続いて、“フェイル”又は“書き込み速度が遅いクラス”が出力された場合には、このチップは、ブロックへの書き込みが成功し、かつ、平均プログラムループ数を超えた(又は以上)であることが判る。もちろん、書き込んだブロックはグッドブロックであることも判る。
【0083】
このように他例によれば、ステータスコマンドの入力によって、ブロック自体がグッドブロックであるかバッドブロックであるかも判るので、第2実施形態を、チップのテスト工程、例えば、スクリーニング工程に利用することも可能である。
【0084】
また、ステータスを、書き込み速度が速いか遅いかで表示する場合には、2段階表示ではなく、3段階、4段階、…といった多段階表示としても良い。例えば、平均プログラムループ回数に応じて、書き込み速度が“高速であるクラス”、“中速であるクラス”、“低速であるクラス”と分類する。
【0085】
このように、チップを、書き込み速度に応じて分類すれば、ICカード、例えば、メモリカードにおいて、どのクラスのメモリチップを搭載するかによって、メモリカードを、書き込み速度に応じてクラス分けすることが可能となる。例えば、“超高速品”、“高速品”、及び“標準品”といったクラス分けである。
【0086】
メモリカードを書き込み速度に応じてクラス分けすると、ユーザーは、好みに応じて、“超高速品”、“高速品”、及び“標準品”のいずれかを選択することができる。これは、ユーザーにとって便利である。
【0087】
このように、一つのブロック全体のプログラムループ回数を簡単に知ることができるメモリを備えた第1、第2実施形態は、ICカード、例えば、メモリカードへの使用に好適である。
【0088】
以上、この発明をいくつかの実施形態により説明したが、この発明は各実施形態に限定されるものではなく、その実施にあたっては発明の要旨を逸脱しない範囲で種々に変形することが可能である。
【0089】
また、各実施形態は単独で実施することが可能であるが、適宜組み合わせて実施することも可能である。
【0090】
また、各実施形態は種々の段階の発明を含んでおり、各実施形態において開示した複数の構成要件の適宜な組み合わせにより、種々の段階の発明を抽出することが可能である。
【0091】
また、実施形態は、この発明をNAND型フラッシュメモリに適用した例に基づき説明したが、この発明はNAND型フラッシュメモリに限られるものではなく、AND型、NOR型等、NAND型以外のフラッシュメモリにも適用することができる。さらに、これらフラッシュメモリを内蔵した半導体集積回路装置、例えば、プロセッサ、システムLSI等もまた、この発明の範疇である。
【図面の簡単な説明】
【0092】
【図1】図1はこの発明の第1実施形態に係る半導体集積回路装置の一例を示すブロック図
【図2】図2は図1に示すメモリセルアレイの一例を示す図
【図3】図3はチップレイアウトの一例を示す平面図
【図4】図4は書き込みデータの流れを概略的に示すブロック図
【図5】図5は書き込み動作を概略的に示す動作波形図
【図6】図6はこの発明の第1実施形態に係る半導体集積回路装置が有するカウンタの一例を示すブロック図
【図7】図7はループカウンタ、及び累積カウンタへの入力信号の波形例を示す信号波形図
【図8】図8Aはループカウンタの一例を示す回路図、図8Bは累積カウンタの一例を示す回路図
【図9】図9は書き込み動作の一例を示す図
【図10】図10はこの発明の第2実施形態に係る半導体集積回路装置の一例を示すブロック図
【図11】図11は、この発明の第2実施形態に係る半導体集積回路装置の具体的な構成の一例を示すブロック図
【図12】図12はステータスコマンド入力からステータスの出力までの入出力波形の一例を示す入出力波形図
【図13】図13はステータスコマンド入力からステータスの出力までの入出力波形の他例を示す入出力波形図
【符号の説明】
【0093】
21…ページバッファ、31…ループカウンタ、33…累積カウンタ、M…メモリセル、WL…ワード線
【特許請求の範囲】
【請求項1】
書き込みデータを記憶するページバッファと、
前記ページバッファに記憶された書き込みデータに応じて、データが書き込まれる複数のメモリセルと、
前記複数のメモリセルへのデータ書き込みに要したプログラムループ回数を累積記憶するプログラムループ累積カウンタと、を具備し、
前記プログラムループ累積カウンタに累積記憶されたプログラムループ回数を出力することを特徴とする半導体集積回路装置。
【請求項2】
前記複数のメモリセルは異なるワード線に接続され、これらワード線が複数集まってブロックを構成し、
前記プログラム累積カウンタは、前記ブロック全体のプログラムループ回数を累積記憶することを特徴とする請求項1に記載の半導体集積回路装置。
【請求項3】
前記ワード線毎のプログラムループ回数をカウントするプログラムループカウンタを、さらに備え、
前記プログラムループカウンタは、ワード線毎のデータ書き込みが終了するとリセットされ、
前記プログラムループ累積カウンタは、前記ワード線毎のデータ書き込みが終了してもリセットされないことを特徴とする請求項2に記載の半導体集積回路装置。
【請求項4】
前記プログラムループ累積カウンタに累積記憶されたプログラムループ回数は、テスト時に出力することを特徴とする請求項1に記載の半導体集積回路装置。
【請求項5】
前記プログラムループ累積カウンタに累積記憶されたプログラムループ回数に基づいて、プログラムループ回数が規定回数以上であればフェイルを示すステータス、又は書き込み速度が遅いクラスを示すステータスを出力することを特徴とする請求項1に記載の半導体集積回路装置。
【請求項1】
書き込みデータを記憶するページバッファと、
前記ページバッファに記憶された書き込みデータに応じて、データが書き込まれる複数のメモリセルと、
前記複数のメモリセルへのデータ書き込みに要したプログラムループ回数を累積記憶するプログラムループ累積カウンタと、を具備し、
前記プログラムループ累積カウンタに累積記憶されたプログラムループ回数を出力することを特徴とする半導体集積回路装置。
【請求項2】
前記複数のメモリセルは異なるワード線に接続され、これらワード線が複数集まってブロックを構成し、
前記プログラム累積カウンタは、前記ブロック全体のプログラムループ回数を累積記憶することを特徴とする請求項1に記載の半導体集積回路装置。
【請求項3】
前記ワード線毎のプログラムループ回数をカウントするプログラムループカウンタを、さらに備え、
前記プログラムループカウンタは、ワード線毎のデータ書き込みが終了するとリセットされ、
前記プログラムループ累積カウンタは、前記ワード線毎のデータ書き込みが終了してもリセットされないことを特徴とする請求項2に記載の半導体集積回路装置。
【請求項4】
前記プログラムループ累積カウンタに累積記憶されたプログラムループ回数は、テスト時に出力することを特徴とする請求項1に記載の半導体集積回路装置。
【請求項5】
前記プログラムループ累積カウンタに累積記憶されたプログラムループ回数に基づいて、プログラムループ回数が規定回数以上であればフェイルを示すステータス、又は書き込み速度が遅いクラスを示すステータスを出力することを特徴とする請求項1に記載の半導体集積回路装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2007−4892(P2007−4892A)
【公開日】平成19年1月11日(2007.1.11)
【国際特許分類】
【出願番号】特願2005−183483(P2005−183483)
【出願日】平成17年6月23日(2005.6.23)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成19年1月11日(2007.1.11)
【国際特許分類】
【出願日】平成17年6月23日(2005.6.23)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]