(58)【調査した分野】(Int.Cl.,DB名)
上記制御回路は、上記各消去処理に対して、1本のみのワード線上のデータを用いてプログラム速度を検出することを特徴とする請求項1記載の不揮発性半導体記憶装置。
前記1本のみのワード線上のデータを用いてプログラム速度を検出する場合、このプログラム速度を検出するワード線のメモリセルストリング内の位置を上記消去処理毎にシフトさせて、所定の消去処理回数で1サイクルとすることを特徴とする請求項2記載の不揮発性半導体記憶装置。
前記プログラム速度の検出チェックは、上記消去処理毎に消去回数をカウントしてその情報をフラグビットとしてプログラム速度データと同様に格納し、前記消去回数が所定の回数になったときにプログラム速度チェックを行いそのデータを更新することを特徴とする請求項2又は3記載の不揮発性半導体記憶装置。
上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上のメモリセルに格納することを特徴とする請求項1〜4のうちのいずれか1つに記載の不揮発性半導体記憶装置。
上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのワード線上の付加的なメモリセルに格納することを特徴とする請求項1〜4のうちのいずれか1つに記載の不揮発性半導体記憶装置。
前記決定したプログラム開始電圧を格納するために、各ワード線に対して、プログラム速度の検出を行うワード線数Nに対応する少なくともNバイトのメモリ領域を準備し、上記各消去処理に対応するプログラム速度の検出において用いたワード線上のメモリセルに上記決定したプログラム開始電圧を格納することを特徴とする請求項6記載の不揮発性半導体記憶装置。
上記制御回路は、上記プログラム速度を検出するワード線として複数のワード線の配置方向の中央部のワード線を選択して上記プログラム速度を検出して、上記中央部のワード線の両隣にそれぞれ位置する複数本のワード線のプログラム速度として用いることを特徴とする請求項7記載の不揮発性半導体記憶装置。
上記制御回路は、上記プログラム速度を検出するワード線を上記中央部のワード線として用いて上記プログラム速度を検出し、その検出データに対応するプログラム開始電圧データを当該ワード線の両隣にそれぞれ位置する複数本のワード線のうちの1本に書き込むときに、メモリセルのデータを消去する消去処理毎に、ワード線を1本ずつシフトさせながら選択することを特徴とする請求項8記載の不揮発性半導体記憶装置。
上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上又はワード線上のメモリセルに格納するときに、当該プログラム開始電圧のデータの1ビットに対して3ビットのビットセルを用いて多数決論理で書き込むことを特徴とする請求項1〜9のうちのいずれか1つに記載の不揮発性半導体記憶装置。
上記制御回路は、上記格納されたプログラム開始電圧を1回の読み出しサイクルで読み出して、上記読み出したプログラム開始電圧を用いて所定のデータを書き込むことを特徴とする請求項1〜10のうちのいずれか1つに記載の不揮発性半導体記憶装置。
上記制御回路は、上記格納されたプログラム開始電圧を1回の読み出しサイクルで読み出して、上記読み出したすべてのプログラム開始電圧をレジスタに記憶して、所定のデータを書き込むプログラム処理が該当ブロック内であれば、そのレジスタから該当ワード線のプログラム開始電圧を読み出して所定のデータを書き込むことを特徴とする請求項1〜11のうちのいずれか1つに記載の不揮発性半導体記憶装置。
【発明の開示】
【発明が解決しようとする課題】
【0007】
ここで、NAND型フラッシュEEPROMをプログラムして所定のしきい値電圧分布を得るためには、プログラム開始電圧Vstartは以下に示すように、重要なパラメータである。
図5に示すように、プログラム開始電圧Vstartはしきい値電圧分布の幅を決定し、ここで、しきい値電圧分布を狭くするためには、より低いプログラム開始電圧Vstartを用いることが好ましいが、プログラム時間が長くなる。一方、より高いプログラム開始電圧Vstartを用いると、プログラム時間は短くなるが、しきい値電圧分布が広くなるという問題点があった。また、プログラム及び消去のサイクルの後、もしプログラム開始電圧Vstartが同一であれば、しきい値電圧分布の幅は広くなり、プログラム速度はメモリセルアレイのブロックにおけるワード線に依存してばらつくという問題点があった。従って、プログラム開始電圧Vstartの最適化は重要な課題である。
【0008】
従来技術では、一般的に、1つのチップに対して同一のプログラム開始電圧Vstartを用いている。出願人の製造過程でも、1つのチップに対してブロック毎又はワード線毎のプログラム速度のバラツキを考慮に入れていないのが実情である(例えば、特許文献6参照。)。また、上述のように、プログラム速度が高速であるときは、各該当ブロックに対してしきい値電圧分布が広くなる。従って、データ書き換えに伴う酸化膜自身の劣化の耐久性が悪化し、高速な多回数の書き換え特性を得ることが難しいという問題点があった。
【0009】
図6は
図4のISPP(Increment Step Pulse Program)法を用いてNAND型フラッシュEEPROMをプログラムするときに同一のプログラム開始電圧Vstartを用いてプログラムしたときのしきい値電圧Vth分布を示す図である。
図11は従来技術で用いるプログラム開始電圧Vstartを示す表である。
図11のごとく、各ブロックで同一のプログラム開始電圧Vstartを用いてプログラムした場合、
図6から明らかなように、しきい値電圧分布がばらつくという問題点があった。
【0010】
この問題点を解決するために、例えば特許文献7においてプログラム開始電圧を変化する方法が開示されている。特許文献7において開示された不揮発性メモリ装置のプログラム方法は、各セルのプログラム速度に応じてプログラム開始電圧を異なって設定する不揮発性メモリ装置のプログラム方法を提供することを目的としており、第1頁に対してプログラム動作を行う段階と、前記第1頁に対するプログラム動作が完了するまでプログラムパルス印加回数をカウントする段階と、前記カウントされたプログラムパルス印加回数としきい値を比較してプログラム開始電圧を再設定する段階と、第2頁に対して前記再設定されたプログラム開始電圧に応じてプログラム動作を行う段階とを含む構成としたことを特徴としている。
【0011】
上記の特許文献7のプログラム方法では、第1頁においては最適なプログラム開始電圧を用いることができず、ページ間の書き込みバラツキは補正されず、また、プログラムパルスの計数のみでは、しきい値電圧分布のバラツキがなくなるようにプログラム開始電圧を最適化することは難しいという問題点があった。
【0012】
本発明の目的は以上の問題点を解決し、プログラム後のしきい値電圧分布のバラツキを最小化し、高速で多回数の書き換え特性を得ることができる不揮発性半導体記憶装置とその書き込み方法を提供することにある。
【課題を解決するための手段】
【0013】
第1の発明に係る不揮発性半導体記憶装置は、
不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置において、
上記制御回路は、書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込むことを特徴とする。
【0014】
上記不揮発性半導体記憶装置において、上記制御回路は、上記書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイのワード線上のメモリセルに格納されたデータを用いて上記プログラム速度を検出することを特徴とする。
【0015】
もしくは、上記制御回路は、上記書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイのダミーワード線上の所定のメモリセルを用いて上記プログラム速度を検出することを特徴とする。
【0016】
もしくは、上記制御回路は、上記書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイのワード線上の所定のメモリセルを用いて上記プログラム速度を検出することを特徴とする。
【0017】
また、上記不揮発性半導体記憶装置において、上記制御回路は、上記各消去処理に対して、1本のみのワード線上のデータを用いてプログラム速度を検出することを特徴とする。
【0018】
ここで、前記1本のみのワード線上のデータを用いてプログラム速度を検出する場合、このプログラム速度を検出するワード線のメモリセルストリング内の位置を上記消去処理毎にシフトさせて、所定の消去処理回数で1サイクルとすることを特徴とする。
【0019】
さらに、上記不揮発性半導体記憶装置において、前記プログラム速度の検出チェックは、上記消去処理毎に消去回数をカウントしてその情報をフラグビットとしてプログラム速度データと同様に格納し、前記消去回数が所定の回数になったときにプログラム速度チェックを行いそのデータを更新することを特徴とする。
【0020】
またさらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上のメモリセルに格納することを特徴とする。
【0021】
またさらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上のメモリセルに格納することを特徴とする。
【0022】
またさらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのワード線上の付加的なメモリセルに格納し、当該メモリセルからプログラム開始電圧を読み出すときに、上記決定したプログラム開始電圧を格納するために、各ワード線に対して、プログラム速度の検出を行うワード線数Nに対応するNバイトのメモリ領域を準備し、上記各消去処理に対応するプログラム速度の検出において用いたワード線上のメモリセルに上記決定したプログラム開始電圧を格納することを特徴とする。
【0023】
ここで、前記決定したプログラム開始電圧を格納するために、各ワード線に対して、プログラム速度の検出を行うワード線数Nに対応する少なくともNバイトのメモリ領域を準備し、上記各消去処理に対応するプログラム速度の検出において用いたワード線上のメモリセルに上記決定したプログラム開始電圧を格納することを特徴とする。
【0024】
ここで、前記プログラム速度を検出するワード線がストリングの両隣等の少なくとも1本以上のワード線のデータも兼ねる場合は、前記速度の検出を行ったワード線上に格納するのではなく、それが代表したワード線上の(N+1)バイトのメモリ領域を使用して、消去処理毎にシフトさせることを特徴とする。
【0025】
上記不揮発性半導体記憶装置において、上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上あるいはワード線上のメモリセルに格納するにあたり、当該プログラム開始電圧のデータにECC(Error Correcting Code)のビットを付加して書き込み、前記ECCのビットを付加して書き込むときに、データ1ビットに対して3ビット以上のビットセルを用いて書き込むことを特徴とする。
【0026】
また、上記不揮発性半導体記憶装置において、上記制御回路は、上記格納されたプログラム開始電圧を1回の読み出しサイクルで読み出して、上記読み出したプログラム開始電圧を用いて所定のデータを書き込むことを特徴とする。
【0027】
さらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記格納されたプログラム開始電圧を1回の読み出しサイクルで読み出して、上記読み出したすべてのプログラム開始電圧をレジスタに記憶して、所定のデータを書き込むプログラム処理が該当ブロック内であれば、そのレジスタから該当ワード線のプログラム開始電圧を読み出して所定のデータを書き込むことを特徴とする。
【0028】
第2の発明に係る不揮発性半導体記憶装置の書き込み方法は、不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置の書き込み方法において、
上記制御回路は、書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込むことを特徴とする。
【発明の効果】
【0029】
従って、本発明に係る不揮発性半導体記憶装置とその書き込み方法によれば、書き込むメモリセルのデータを消去する消去処理の前又は後において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込む。従って、プログラム後のしきい値電圧分布のバラツキを最小化し、高速及び多回数の書き換え特性を得ることができる。
【図面の簡単な説明】
【0030】
【
図1】本発明の一実施形態に係るNAND型フラッシュEEPROMの全体構成を示すブロック図である。
【
図2】
図1のメモリセルアレイ10とその周辺回路の構成を示す回路図である。
【
図3】
図2のページバッファ(2本のビットライン分)の詳細構成を示す回路図である。
【
図4】従来技術に係るISPP(Increment Step Pulse Program)法を用いてNAND型フラッシュEEPROMをプログラムするときの書き込み方法を示すタイミングチャートである。
【
図5】
図4のISPP(Increment Step Pulse Program)法を用いてNAND型フラッシュEEPROMをプログラムするときにプログラム開始電圧Vstartを変化させたときのしきい値電圧Vth分布を示す図である。
【
図6】
図4のISPP(Increment Step Pulse Program)法を用いてNAND型フラッシュEEPROMをプログラムするときに同一のプログラム開始電圧Vstartを用いてプログラムしたときのしきい値電圧Vth分布を示す図である。
【
図7】一般的なNAND型フラッシュEEPROMにおけるページとブロックの概念を示す3次元概念図である。
【
図8】本発明の実施形態に係る、プログラム開始電圧Vstartを各ブロック又はワード線毎に最適化する書き込み方法を用いたときの作用効果を示すしきい値電圧Vth分布図である。
【
図9】
図8の書き込み方法で用いるプログラム速度チェック処理の作用効果を示すしきい値電圧Vth分布図である。
【
図10】
図9のプログラム速度チェック処理のためのワード線の選択方法を示す図である。
【
図11】従来技術で用いるプログラム開始電圧Vstartを示す表である。
【
図12】本発明の実施形態で用いるプログラム開始電圧Vstartを示す表である。
【
図13】本発明の第1の実施形態に係るプログラム処理を示すフローチャートである。
【
図14】
図13のサブルーチンであるプログラム処理(S4)を示すフローチャートである。
【
図15】第1の実施形態のプログラム処理に先立って実行される消去処理を示すフローチャートを示す。
【
図16】
図15のサブルーチンであるプログラム速度チェック処理(S21)を示すフローチャートである。
【
図17】第1の実施形態のプログラム処理に先立って実行される消去処理(実施例2)を示すフローチャートを示す。
【
図18】
図17のサブルーチンであるプログラム速度チェック処理(S42)を示すフローチャートである。
【
図19】本発明の第2の実施形態に係る消去処理を示すフローチャートである。
【
図20】本発明の変形例に係る処理であって、上記プログラム処理において、通常のワード線上の付加的なメモリセルを用いてプログラム開始電圧及びフラグデータを格納するためのプログラム開始電圧及びフラグデータ格納処理(S23,S43,S65)を示すフローチャートである。
【
図21】本発明の変形例に係る処理(S61)であって、上記プログラム処理において、通常のワード線上の付加的なメモリセルからプログラム開始電圧及びフラグデータを読み出すためのプログラム開始電圧及びフラグデータ読み出しを示すフローチャートである。
【発明を実施するための形態】
【0031】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【0032】
図1は本発明の一実施形態に係るNAND型フラッシュEEPROMの全体構成を示すブロック図である。また、
図2は
図1のメモリセルアレイ10とその周辺回路の構成を示す回路図である。さらに、
図3は
図2のページバッファ(2本のビットライン分)の詳細構成を示す回路図である。まず、本実施形態に係るNAND型フラッシュEEPROMの構成について以下に説明する。
【0033】
図1において、本実施形態に係るNAND型フラッシュEEPROMは、メモリセルアレイ10と、その動作を制御する制御回路11と、ロウデコーダ12と、高電圧発生回路13と、データ書き換え及び読み出し回路14と、カラムデコーダ15と、コマンドレジスタ17と、アドレスレジスタ18と、動作ロジックコントローラ19と、データ入出力バッファ50と、データ入出力端子51とを備えて構成される。
【0034】
メモリセルアレイ10は、
図2に示すように、例えば18個のスタックト・ゲート構造の電気的書き換え可能な不揮発性メモリセルMC0〜MC15,MCD0,MCD1を直列接続してNANDセルユニットNU(NU0,NU1, …)が構成される。各NANDセルユニットNUは、ドレイン側が選択ゲートトランジスタSG1を介してビット線BLに接続され、ソース側が選択ゲートトランジスタSG2を介して共通ソース線CELSRCに接続される。ロウ方向に並ぶメモリセルMCの制御ゲートは共通にワード線WLに接続され、選択ゲートトランジスタSG1,SG2のゲート電極はワード線WLと平行して配設される選択ゲート線SGD,SGSに接続される。ここで、選択ゲート線SGSとワード線WL0との間に、各ワード線と平行してダミーワード線DWL0が形成され、選択ゲート線SGDとワード線WL15との間に、各ワード線と平行してダミーワード線DWL1が形成される。1本の各ワード線WLにより選択されるメモリセルの範囲が書き込み及び読み出しの単位となる1ページである。1ページ又はその整数倍の範囲の複数のNANDセルユニットNUの範囲がデータ消去の単位である1ブロックとなる。書き換え及び読み出し回路14は、ページ単位のデータ書き込み及び読み出しを行うために、ビット線毎に設けられたセンスアンプ回路(SA)及びラッチ回路(DL)を含み、以下、ページバッファという。
【0035】
図2のメモリセルアレイ10は、簡略化した構成を有し、複数のビット線でページバッファを共有してもよい。この場合は、データ書き込み又は読み出し動作時にページバッファに選択的に接続されるビット線数が1ページの単位となる。また、
図2は、1個の入出力端子52との間でデータの入出力が行われるセルアレイの範囲を示している。メモリセルアレイ10のワード線WL及びビット線BLの選択を行うために、それぞれロウデコーダ12及びカラムデコーダ15が設けられている。制御回路11は、データ書き込み、消去及び読み出しのシーケンス制御を行う。制御回路11により制御される高電圧発生回路13は、データ書き換え、消去、読み出しに用いられる昇圧された高電圧や中間電圧を発生する。
【0036】
入出力バッファ50は、データの入出力及びアドレス信号の入力に用いられる。すなわち、入出力バッファ50及びデータ線52を介して、入出力端子51とページバッファ14の間でデータの転送が行われる。入出力端子52から入力されるアドレス信号は、アドレスレジスタ18に保持され、ロウデコーダ12及びカラムデコーダ15に送られてデコードされる。入出力端子52からは動作制御のコマンドも入力される。入力されたコマンドはデコードされてコマンドレジスタ17に保持され、これにより制御回路11が制御される。チップイネーブル信号CEB、コマンドラッチイネーブルCLE、アドレスラッチイネーブル信号ALE、書き込みイネーブル信号WEB、読み出しイネーブル信号REB等の外部制御信号は動作ロジックコントロール回路19に取り込まれ、動作モードに応じて内部制御信号が発生される。内部制御信号は、入出力バッファ50でのデータラッチ、転送等の制御に用いられ、さらに制御回路11に送られて、動作制御が行われる。
【0037】
ページバッファ14は、2個のラッチ回路14a,14bを備え、多値動作の機能とキャッシュの機能を切り換えて実行できるように構成されている。すなわち、1つのメモリセルに1ビットの2値データを記憶する場合に、キャッシュ機能を備え、1つのメモリセルに2ビットの4値データを記憶する場合には、キャッシュ機能とするか、又はアドレスによって制限されるがキャッシュ機能を有効とすることができる。そのような機能を実現するための具体的なページバッファ14A(2本のビットライン分)の詳細構成を
図3に示す。
【0038】
図3において、ページバッファ14Aは、2個のインバータ61,62にてなるラッチL1と、2個のインバータ63,64にてなるラッチL2と、ベリファイ用キャパシタ70と、プリチャージ用トランジスタ71と、ベリファイ用トランジスタ72乃至75と、ベリファイ・パスフェイル判定トランジスタ76,77と、カラムゲートトランジスタ81,82と、転送スイッチトランジスタ83乃至85,88,89と、ビットライン選択トランジスタ86,87と、ラッチイコライズトランジスタ90と、リセットトランジスタ91とを備えて構成される。
【0039】
図3において、2本のビット線BLe,BLoがページバッファ14Aに選択的に接続されるようになっている。この場合、ビット線選択信号BLSE又はBLSOによって、ビットライン選択トランジスタ86又は87を導通させ、ビット線BLe又はビット線BLoの一方を選択的にページバッファ14Aに接続する。なお、一方のビット線が選択されている間、非選択状態である他方のビット線は、固定の接地電位や電源電圧電位にすることによって、隣接ビット線間のノイズを削減することが好ましい。
【0040】
図3のページバッファ14Aは、第1のラッチL1と、第2のラッチL2とを有する。ページバッファ14Aは所定の動作制御によって、主に読み出し、書き込み及び消去動作に寄与する。また、第2のラッチL2は、2値動作においては、キャッシュ機能を実現する二次的なラッチ回路であり、キャッシュ機能を使用しない場合には当該ページバッファ14Aの動作に補助的に寄与して多値動作を実現する。
【0041】
ラッチL1は、クロックト・インバータ61,62を逆並列接続して構成されている。メモリセルアレイ10のビット線BLは、転送スイッチトランジスタ85を介してセンスノードN4に接続され、センスノードN4はさらに転送スイッチトランジスタ83を介してラッチL1のデータ保持ノードN1に接続されている。センスノードN4には、プリチャージ用トランジスタ71が設けられている。ノードN1は、転送スイッチトランジスタ74,75を介してノードN1のデータを一時記憶するための一時記憶ノードN3に接続されている。さらに、ノードN4には、ビット線に対して電圧V1をプリチャージするためのプリチャージ用トランジスタ71も接続されている。ノードN4にはレベル保持のためのキャパシタ70が接続されている。キャパシタ70の他端は接地される。
【0042】
第2のラッチL2は、第1のラッチL1と同様に、クロックト・インバータ63,64を逆並列接続して構成されている。ラッチL2の2つのデータノードN5,N6は、カラム選択信号CSLにより制御されるカラムゲートトランジスタ81,82を介して、データ入出力バッファ50に接続されるデータ線52に接続される。ノードN5は、転送スイッチトランジスタ84を介して、ノードN4に接続される。
【0043】
図2は、メモリセルアレイ10と、ページバッファ14と、データ入出力バッファ50の接続関係を示す。NAND型フラッシュEEPROMの読み出し、書き込みの処理単位は、あるロウアドレスでの同時に選択される1ページ分の容量(例えば512バイト)となっている。8個のデータ入出力端子52があるため、1つのデータ入出力端子52に対しては、512ビットとなっており、
図2ではその512ビット分の構成を示している。
【0044】
データをメモリセルに書き込む場合には、データ信号線52から書き込みデータを第2のラッチL2に取り込む。書き込み動作を開始するには、書き込みデータが第1のラッチL1になければならないので、続いて、ラッチL2に保持したデータをラッチ回路L1に転送する。また、読み出し動作においては、データ入出力端子51にデータを出力するには、読み出したデータがラッチL2になければならないので、ラッチL1で読み出したデータをラッチL2に転送する必要がある。従って、転送スイッチトランジスタ83,84を導通状態にしてラッチL1とラッチL2の間でデータを転送できるように構成されている。このとき、転送先のラッチ回路を非活性状態にしてからデータを転送し、その後転送先のラッチ回路を活性状態に戻してデータを保持することなる。
【0045】
なお、
図1乃至
図3において、メモリセルアレイ10へのデータの書き込み、消去の基本動作は例えば特許文献4〜5において開示されており周知技術であり、詳細説明を省略する。
【0046】
本実施形態では、NAND型フラッシュEEPROMにおいて、プログラム後のしきい値電圧分布のバラツキを最小化し、高速で多回数の書き換え特性を得ることができる改良されたISPP法を用いた書き込み方法を提案する。ここで、本実施形態に係る書き込み方法は、各ブロック毎又は各ワード線毎に、プログラム開始電圧Vstartを変化する機能を有し、プログラム速度をチェックした後、当該プログラム速度の検出結果に基づいてプログラム開始電圧を決定して格納し、その情報を読み出して所定のデータの書き込むことを行うことを特徴としている。
【0047】
図7は一般的なNAND型フラッシュEEPROM(SLC2Gビット)におけるページとブロックの概念を示す3次元概念図である。
図7から明らかなように、1ページは2064バイト×8ビットから構成され、64ページで1ブロックを構成し、全体で128Kページを有する。書き込みと読み出しはページバッファ14を用いて1ぺージ毎に実行され、消去は1つのブロック毎に実行される。
【0048】
図11は従来技術で用いるプログラム開始電圧Vstartを示す表であり、
図12は本発明の実施形態で用いるプログラム開始電圧Vstartを示す表である。従来技術では、各ブロックでプログラム開始電圧Vstartは同一であるが、本実施形態では、
図12に示すように、各ブロック毎に最適なプログラム開始電圧Vstartを決定して用いる。なお、
図12において、プログラム開始電圧Vstart(・)の括弧内のデータは所定の基準プログラム開始電圧Vstart(0)からのオフセットデータをいう。例えば、1単位のオフセット電圧を0.3Vとすると、Vstart(+2)=Vstart(0)+2×0.3Vとなる。
【0049】
図8は本発明の実施形態に係る、プログラム開始電圧Vstartを各ブロック毎又は各ワード線毎に最適化する書き込み方法を用いたときの作用効果を示すしきい値電圧Vth分布図である。本実施形態によれば、各ブロック毎又は各ワード線毎にプログラム開始電圧Vstartが最適化され、各ブロック毎又は各ワード線毎にしきい値電圧分布のゆらぎが、
図8に示すように最小化され、従来例に比較して、データ書き換えに伴う酸化膜自身の劣化の耐久性が向上し、高速及び多回数な書き換え特性を得ることができるという特有の効果を有する。
【0050】
図9は
図8の書き込み方法で用いるプログラム速度チェック処理の作用効果を示すしきい値電圧Vth分布図である。プログラム速度チェックは以下のようにして行われる。
図9に示すように、テストのために、各ブロック毎又は各ワード線毎に特定ビット(テストビット)のメモリセルに対してプログラムストレスを印加し、いくつかの電圧レベル(
図9では、4つの電圧レベルであり、ΔVstep毎にオフセットする。)を用いてベリファイ読み出しを行って当該特定ビットのしきい値電圧分布を検出し、当該テストのための特定ビットの中で最速ビットの最大しきい値電圧に基づいて、当該ブロック又は当該ワード線のためのプログラム開始電圧Vstartを決定する。例えば、プログラム開始電圧Vstart(0)=15〜16Vであり、MLC(Multi Level Cell)ではVstep=0.3V及びΔVstep=0.1Vであり、SLC(Single Level Cell)ではVstep=1.1V及びΔVstep=0.2〜0.5Vである。
【0051】
上記決定されたプログラム開始電圧Vstart(・)のデータについては、各ブロックのダミーのワード線上の特定ビットのメモリセルに、対応するオフセット値を格納することが好ましい。例えば、プログラム開始電圧Vstart(−2)にはビット(110)を対応させ、プログラム開始電圧Vstart(−1)にはビット(101)を対応させ、プログラム開始電圧Vstart(0)にはビット(100)を対応させ、プログラム開始電圧Vstart(+1)にはビット(011)を対応させ、プログラム開始電圧Vstart(+2)にはビット(010)を対応させ、該特定ビットに格納する。ここで、プログラム開始電圧は重要な値なのでエラーは許されないので、例えば上記3ビットの各1ビットに3ビット以上のビットセルを用いて書き込み、多数決ルールを用いて読み出すようにしてもよい。また、例えば電圧(Vstart+n×Vstep)を用いて1発の書き込みパルスでのプログラム処理によりデータを書き込んでプログラムし、ダミーのワード線上のプログラム開始電圧Vstart(・)のデータを多数決ルールの決定方法を用いて読み出してプログラムするように構成してもよい。この場合においては、各ワード線に設定されたプログラム開始電圧Vstart(・)のデータを当該ブロックのダミーワード線上のメモリセルにともに格納される。もし、通常の書き込み用ワード線上の特定ビットのメモリセルに上記決定されたプログラム開始電圧Vstart(・)のデータを格納してもよいが、当該目的のための付加的なメモリセルを必要とする。
【0052】
図13は本発明の第1の実施形態に係るプログラム処理を示すフローチャートである。
図13において、まず、ステップS1において、プログラムデータをロードし、ステップS2において、プログラムパルスを印加する前に、書き込みに選択されたブロックの特定ビットのデータを読み出す。このデータには該ブロック又は該ブロックの各ワード線毎のVstartが格納されている。具体的には、まず、上述したしたように、ダミーワード線に格納した場合はダミーワード線を選択して読み出し、あるいは通常のワード線に付加メモリセルを設けて格納した場合は、所定の読出用ワード線電圧Vspをすべてのワード線に印加した後、1回で読み出し処理を行う。次に、該選択されたワード線に対応する特定のビットのデータに基づいて、プログラム開始電圧及びフラグデータを一時レジスタ(バッファメモリ)にセットする。次いで、ステップS3において、プログラムデータをバッファメモリ14aにセットする。さらに、ステップS4において、特定ビットに基づいて設定されたプログラム開始電圧を用いてISPP法を用いてプログラム処理を実行する。本実施形態に係る書き込み方法に対する1つの大きな必要条件は、プログラムのスループットを維持するためのプログラム時間を増大させないことであり、この理由のために、プログラム速度チェック処理は消去動作において実行される。
【0053】
図13のステップS2において、基本的には、メモリセルの特定ビットからデータを読み出すことでプログラム開始電圧Vstart(・)を決定するが、ワード線WL3〜WL28の連続したプログラムなどの場合においては、ワード線WL3のプログラムのときのみ、メモリセルの特定ビットからデータを読み出し、残りのワード線WL4〜WL28のときは一時レジスタからプログラム開始電圧Vstart(・)を読み出すことで余分なプログラム時間を削減してもよい。
【0054】
図14は
図13のサブルーチンであるプログラム処理(S4)を示すフローチャートである。
図14において、ステップS11において上記設定されたプログラム開始電圧Vstart(・)をプログラム電圧Vpgm(n)に設定し、ステップS12においてプログラム電圧Vpgm(n)を有するプログラムパルスを印加し、ステップS13においてプログラムされたか否かについてベリファイし、ステップS14においてすべてのメモリセルについてパスしたか否かについて判断し、YESのときは元のメインルーチンに戻る一方、NOのときはステップS15に進む。ステップS15では、プログラム電圧Vpgm(n)を増分Vstepだけインクリメントしてプログラム電圧Vpgm(n)を設定してステップS12に戻る。
【0055】
図15は第1の実施形態のプログラム処理に先立って実行される消去処理を示すフローチャートであるが、この消去処理中にてプログラム開始電圧設定処理(実施例1)が実行される。
図15において、ステップS21においてプログラム速度チェック処理(
図16)を実行し、ステップS22において消去パルスを用いてデータを消去する。次いで、ステップS23において、上記プログラム速度チェックで得られて一時レジスタにセットされたプログラム開始電圧及びフラグデータをメモリセルの所定の特定ビットに格納する。具体的には、一時レジスタに格納されたプログラム開始電圧及びフラグデータをページバッファ14にセットした後、対応するワード線(又はダミーワード線)を選択して、例えば通常のSLCプログラム処理を実行することでプログラムを行う。
【0056】
図16は
図15のサブルーチンであるプログラム速度チェック処理(S21)を示すフローチャートである。
図16において、まず、ステップS31において、メモリセルの特定ビットに対してデータをバッファメモリ14にセットする。具体的には、特定のワード線からデータを読み出して、1のデータであればチェックビットとし、0のデータであればマスクビットとする。次いで、ステップS32において、プログラムパルスを用いてプログラム処理を行う。さらに、ステップS33において、上記特定ビットにおいて最大のしきい値電圧Vthを取得してそのときのプログラム開始電圧のオフセットデータを一時レジスタに格納して元のメインルーチンに戻る。ここで、上記特定ビットにおいて最大のしきい値電圧Vthを取得するためには、データビットが例えばすべて1のデータとなるまでベリファイ電圧を所定のステップ電圧で上昇させながら、ベリファイ読み出しを行う。
【0057】
図16のステップS31ではチェックビットを得るのにユーザのデータの1を用いているが、ユーザのデータは常に1のビットをチェックに充分な数を含むとは限らない。そこで、このようにユーザデータを使用する場合は、
図13に示したプログラム処理のステップS1において0のデータ数をカウントして、もし0のデータ数がページサイズの半分より大きかったら、反転フラグビットをセットして、S3においてデータを反転する。この処理により、常に1のデータ数をページサイズの半分以上とすることができる。なお、読出し時には、当然、データ中の反転フラグが立っていたら、反転して出力する。
【0058】
図17は第1の実施形態のプログラム処理に先立って実行される別の形態の消去処理を示すフローチャートである。この中でプログラム開始電圧設定処理(実施例2)が実行される。
図17において、まず、ステップS41において、消去パルスを用いてデータを消去し、ステップS42において、ソフトプログラム処理を用いてプログラム速度チェック処理を実行する。そして、ステップS43上記プログラム速度チェックで得られて一時レジスタにセットされたプログラム開始電圧及びフラグデータをメモリセルの所定の特定ビットに格納する。
【0059】
図18は
図17のサブルーチンであるプログラム速度チェック処理(S42)を示すフローチャートである。
図18において、まず、ステップS51においてダミーワード線上の特定ビットに対してデータをバッファメモリ14にセットする。次いで、ステップS52において、ダミーワード線上の特定ビットに対してプログラムパルスを用いてプログラム処理を行う。そして、ステップS53において、上記特定ビットにおいて、すべて1のデータとなるかをベリファイ電圧を変化させてベリファイ読み出しを行うことにより、最大のしきい値電圧Vthを取得してそのときのプログラム開始電圧のオフセットデータを一時レジスタに格納し、元のメインルーチンに戻る。
【0060】
図19は本発明の第2の実施形態に係る消去処理を示すフローチャートである。
図19において、まず、ステップS61において、メモリセルの特定ビットから古いプログラム開始電圧及びフラグデータを読み出す。ここで、フラグはプログラム速度チェックのためのワード線を表す。次いで、ステップS62において、プログラム速度チェック処理を実行し、ステップS63において、消去パルスを用いてデータを消去する。そして、ステップS64において上記プログラム速度チェックで設定されたプログラム開始電圧を基準としたソフトプログラム開始電圧又は他の所定の方式で決められたソフトプログラム開始電圧を用いてソフトプログラム処理を実行する。さらに、ステップS65において、上記セットされたプログラム開始電圧及びフラグデータを特定ビットに格納するここで、修正されたフラグはプログラム速度チェックのための次のチェック用ワード線を表す。
【0061】
図19のプログラム速度チェック処理では、プログラム速度チェック処理のための余分な時間を削減するために、各消去処理毎に、特定の1本のワード線に対してプログラム速度チェック処理が行われる。従って、あるワード線のプログラム速度チェックの1つのサイクルは1つのストリングにおけるセル数に等しくなる。具体的には、ワード線上のユーザデータを読み出して、1のビット(又は11のビット)を得て当該データをプログラムビットとしてセットする。そして、プログラムパルスを印加して、ベリファイ電圧を変化しながらベリファイ読み出しを行って最大のしきい値電圧Vthを検出し、それを予測値と比較することでそれに対応するプログラム開始電圧Vstart(・)を決定することができる。
【0062】
図10は上述のプログラム速度チェック処理のための変形例に係るワード線の選択方法を示す図である。プログラム速度チェック処理は、すべての、あるいはいくつかの特定のワード線に対して順番に各消去毎にシフトさせながら実行される。ここで、まず第1に、プログラム開始電圧Vstartのデータ格納場所の確保及び準備のために、各ワード線に対して(N+1)バイトを用意する。ここで、Nはプログラム速度チェックを行うワード線の本数である。Vstart(・)のオフセット値を1バイトで格納する。
図19の消去処理のステップS65では、プログラム速度チェックが行われたワード線の該(N+1)バイトに対して、ベリファイ電圧Vread=PVを用いて通常のSLCプログラムを用いて、プログラム開始電圧データ及びフラグデータが格納される。この格納処理のフローは
図20で説明される。そして、このようにして書き込まれたプログラム開始電圧データ及びフラグデータを読み出すステップS61では、すべてのワード線に対して読出用ワード線電圧Vsp(
図10では1V)を印加し、前回格納したワード線からプログラム開始電圧Vstartのデータ及び、今回測定すべきワード線の番号が格納されたフラグデータを読み出す。データが書いてあるのは1本のワード線上の該(N+1)バイトのみなので、1回の読み出し動作でデータが読み出せる。
【0063】
次いで、例えばECC(Error Correcting Code)などを用いて当該データをデコードし、デコードされたデータを一時レジスタに格納する。この読出し処理のフローは
図21で説明される。さらに、プログラム速度チェック処理のためのワード線として、上記フラグデータのワード線にセットする。ワード線の選択方法の一例としては、すべてのワード線を速度チェックする方法もあるが、端部を除いたワード線については通常は良くそろっているので、例えばWL0,1,2,16,29,30,31(ストリングの両エッジ及び中央部)を選択すればよい。WL16については、WL3〜28をカバーするとしてもよい。これらのワード線の選択は、ワード線に依存したプログラム特性によって決定されるからである。ここで、ワード線数については、例えば、プログラム開始電圧データを通常のワード上の付加的なメモリセルに格納する場合において、余分なビット数を増大させ、これにより、チップサイズを相対的に増大させる。なお、プログラム開始電圧データの読み出しにおいては、1つの読み出しサイクルでベリファイ電圧VpassR=Vread=Vspを用いて読み出し及びベリファイが行われ、フラグはプログラム速度チェックのための次のチェック用ワード線を表す。
【0064】
図20は本発明の変形例に係る処理(S65)であって、上記消去処理において、通常のワード線上の付加的なメモリセルを用いてプログラム開始電圧及びフラグデータを格納するためのプログラム開始電圧及びフラグデータ格納処理(S23,S43,S65)を示すフローチャートである。
図20において、まず、ステップS71において、メモリセルの特定ビットに対して、プログラム開始電圧及びフラグデータを一時レジスタからページバッファ14にセットし、ステップS72において、上記セットされたデータを選択されたワード線にプログラムすることでプログラム開始電圧及びフラグデータをメモリセルの特定ビットに格納する。
図10に示したように、選択ワード線以外のワード線のセルはすべて消去状態なので、書き込んだ後のしきい値電圧Vthはリードパス電圧(VpassR)よりも高くなっても問題ないので、通常のプログラムよりも書き込みのパルス数を少なくしてプログラム時間を短くすることが可能となる。具体的には、通常のSLC書き込みには3〜4発のパルスを使い書き込み時間として200μs程度がかかるが、これを1〜2発にして100μs程度と半減できる。
【0065】
図21は本発明の変形例に係る処理(S61)であって、上記プログラム処理において、通常のワード線上の付加的なメモリセルからプログラム開始電圧及びフラグデータを読み出すためのプログラム開始電圧及びフラグデータ読み出しを示すフローチャートである。
図21において、ステップS81において、すべてのワード線に対して、読出用ワード線電圧Vspをセットする。次いで、ステップS82において、メモリセルの特定のビットのデータを読み出し、ステップS83において、特定ビットのデータからの、プログラム開始電圧及びフラグデータを一時レジスタにセットする。フラグデータを読み出す前においてはどのワード線にプログラム開始電圧データとフラグデータが書いてあるかわからないので、通常であればワード線を1本ずつ読み出す必要があるが、
図10に示すように、1本のワード線の特定ビット以外のメモリセルは消去状態なので、S81のようにすべてのワード線に読出し電圧Vsp(
図10では1V)を印加する方法で1回(20μs程度)で読み出せる。なお、これらのデータを格納するワード線は例えばWL16に固定してもよいが、毎回シフトした方がワード線毎の書き換え回数を減少することができるので信頼性をより向上させることができる。
【0066】
以上説明したように、本実施形態によれば、各ブロック毎又は各ワード線毎にプログラム速度チェックを行って最適なプログラム開始電圧を決定して、プログラム開始電圧を変化させてデータの書き込みを行うので、プログラム後のしきい値電圧分布のバラツキを最小化し、高速の書き換え特性を得ることができる。
【0067】
以上説明した中で、「各ブロック毎又は各ワード線毎」にプログラム開始電圧を設定するとしているが、理想的にはすべてのブロックのすべてのワード線について速度チェック&開始電圧設定するのが望ましいが、上述したように、メモリセルのストリングの中ほどのワード線の書き込み速度はほとんど同じであり、それはブロックについても言えるので、プログラム速度チェックはそれぞれ必要な部分のブロックとワード線について行い、チェックは行わないブロックとワード線についてはそれらのうちの対応する値を使用することでも良い。これにより、プログラム速度チェックに伴う消去処理時間の増大が軽減される。
【0068】
また、プログラム速度チェックを行うワード線について、
図18ではダミーワード線を使用したが、この場合は各ワード線のプログラム開始電圧は初期特性あるいは標準的特性をもとに計算した値が使用されることになり、バラツキは完全には補正されないが、ブロック間のバラツキは補正される。この他、主に説明したワード線のユーザデータ領域を使用する方法と、チェック用の付加ビットをメモリセルアレイに付け加える方法がある。
【0069】
さらに、プログラム速度チェックは書き込み後の最大のしきい値電圧Vthで決めるとする方法の他、異常に書き込みの速いビットのデータを拾うのをさけるために、2番目に高いしきい値電圧Vthを採用するというような方法も良い。回路的にも2〜3ビットは特に問題ない。
【0070】
さらに、プログラム速度チェックに使うビットについては、通常ワード線を使用する場合にはユーザデータを使用する方法を提示したが、本発明はこれに限らず、ダミーワード線の特定ビットを使う場合はすべて書き込みはされていないのですべて使用できる。上述した(N+1)バイト×多数決ビットのような構成であれば、プログラム速度チェック対象のワード線のビットはすべて消去状態であるので、これもそのまま使用できる。このように必ずしもユーザデータを使用しなくてもよい。
【0071】
さらに、プログラム開始電圧データを格納するメモリセルは、実施例のとおり、ダミーワード線あるいは通常ワード線の付加ビットがあるが、ダミーワード線については、付加ビットなしの通常ビット領域、付加ビット領域に加え、選択ゲート線SGD側のダミーワード線を使うか、選択ゲート線SGS側のダミーワード線を使うかの選択が取りえる。従って、選択ゲート線SGS側は格納用、選択ゲート線SGD側はプログラム速度チェック用と分けることもよい。
【0072】
さらに、上記においてプログラム速度チェックを行うワード線は1本として、毎消去処理時に1本ずつシフトする方法を説明し、ワード線0,1,2,16,29,30,31についてプログラム速度チェックを行う実施例を説明したが、本発明はこれに限らず、すべてのワード線について速度チェックをすれば速度チェックの周期の1サイクルは32回になるが、上記のように7本のワード線のみ速度チェックを行う場合は、そのまま1サイクルを7回とするほかに、ワード線3〜15,17〜28はカウントのみ行い(フラグビットのみ更新)、1サイクルを32回とする方法もあり、データ格納を行うワード線も3〜28にシフトしつつ行う方法と合わせ、メモリセルの書き換え回数に伴う信頼性劣化を抑える好ましい方法といえる。また、
図18のようにプログラム速度チェックをダミーワード線で行う場合も同様に消去処理回数をカウントしフラグビットとして格納することにより、速度チェックの1サイクルを32回とか所定の好適な数に設定することができる。
【0073】
以上の実施形態においては、NAND型フラッシュEEPROMについて説明しているが、本発明はこれに限らず、NOR型フラッシュEEPROMなどのフローティングゲートにデータを書き込むことが可能な不揮発性半導体記憶装置に広く適用できる。