【実施例】
【0017】
本発明の実施例に係るフラッシュメモリの典型的な構成を
図3に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。本実施例のフラッシュメモリ100は、複数のメモリセルが行列状に配列されたメモリアレイ110と、外部入出力端子I/Oに接続され入出力データを保持する入出力バッファ120と、メモリアレイ110にプログラムするデータやそこから読み出されたデータの誤り検出・訂正を行うECC回路130と、入出力バッファ120からのアドレスデータを受け取るアドレスレジスタ140と、入出力バッファ120からのコマンドデータや外部からの制御信号を受け取り、各部を制御する制御部150と、アドレスレジスタ140から行アドレス情報Axを受け取り、行アドレス情報Axをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路160と、ワード線選択回路160によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ/センス回路170と、アドレスレジスタ140から列アドレス情報Ayを受け取り、列アドレス情報Ayをデコードし、当該デコード結果に基づきページバッファ/センス回路170内のデータの選択等を行う列選択回路180と、データの読出し、プログラムおよび消去等のために必要な種々の電圧(書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど)を生成する内部電圧発生回路190とを含んで構成される。
【0018】
メモリアレイ110は、列方向に配置されたm個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。ブロックBLK(0)に近接して、ページバッファ/センス回路170が配置される。1つのメモリブロックには、例えば、
図4に示すように、複数のメモリセルを直列に接続したNANDストリングユニットNUが複数形成され、1つのメモリブロック内にn+1個のストリングユニットNUが行方向に配列されている。セルユニットNUは、直列に接続された複数のメモリセルMCi(i=0、1、・・・、31)と、一方の端部であるメモリセルMC31のドレイン側に接続された選択トランジスタTDと、他方の端部であるメモリセルMC0のソース側に接続された選択トランジスタTSとを含み、選択トランジスタTDのドレインは、対応する1つのビット線GBLに接続され、選択トランジスタTSのソースは、共通のソース線SLに接続される。
【0019】
メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタTD、TSのゲートは、ワード線WLと並行する選択ゲート線SGD、SGSに接続される。ワード線選択回路160は、行アドレスAxまたは変換されたアドレスに基づきブロックを選択するとき、ブロックの選択ゲート信号SGS、SGDを介して選択トランジスタTD、TSを選択的に駆動する。
図4は、典型的なセルユニットの構成を示しているが、セルユニットは、NANDストリング内に1つまたは複数のダミーセルを包含するものであってもよい。
【0020】
メモリセルは、典型的に、Pウエル内に形成されたN型の拡散領域であるソース/ドレインと、ソース/ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート(電荷蓄積層)と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むMOS構造を有する。フローティングゲートに電荷が蓄積されていないとき、つまりデータ「1」が書込まれているとき、しきい値は負状態にあり、メモリセルは、ノーマリオンである。フローティングゲートに電子が蓄積されたとき、つまりデータ「0」が書込まれているとき、しきい値は正にシフトし、メモリセルは、ノーマリオフである。但し、メモリセルは、1ビット(2値データ)を記憶するSLCタイプでもよいし、多ビットを記憶するMLCタイプであってもよい。
【0021】
図5は、フラッシュメモリの各動作時に印加されるバイアス電圧の一例を示したテーブルである。読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧(例えば0V)を印加し、非選択ワード線にパス電圧Vpass(例えば4.5V)を印加し、選択ゲート線SGD、SGSに正の電圧(例えば4.5V)を印加し、ビット線側選択トランジスタTD、ソース線側選択トランジスタTSをオンし、共通ソース線に0Vを印加する。プログラム(書込み)動作では、選択されたワード線に高電圧のプログラム電圧Vpgm(15〜20V)を印加し、非選択のワード線に中間電位(例えば10V)を印加し、ビット線側選択トランジスタTDをオンさせ、ソース線側選択トランジスタTSをオフさせ、「0」または「1」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に0Vを印加し、Pウエルに高電圧(例えば20V)を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【0022】
プログラム動作時に入出力バッファ120を介して入力データ(プログラムすべきデータ)Diがページバッファ/センス回路170にロードされると、ECC回路130は、ページバッファ/センス回路170から転送された入力データDiを演算し、プログラムデータの誤り検出訂正に必要な誤り訂正符号またはパリティビットを生成する。ECCの演算は、例えば、ハミングコードやリード・ソロモンなどの公知の手法によって行われ、入力されたkビットまたはkバイトの入力データDiをp=k+qに変換する。「q」は、入力データDiの誤り検出訂正に必要な誤り訂正符号またはパリティビットである。1つの好ましい例では、ECC回路130は、誤り訂正符号をページバッファ/センス回路170のスペア領域にセットする。こうして、ページバッファ/センス回路170にセットされた入力データDiと誤り訂正符号がメモリアレイ110の選択ページにプログラムされる。
【0023】
読出し動作時、メモリアレイ110の選択ページから読み出されたデータがページバッファ/センス回路170に保持されると、ECC回路130は、ページバッファ/センス回路170から転送された誤り訂正符号に基づき読出しデータの誤りの検出を行い、誤りが検出された場合には訂正したデータをページバッファ/センス回路170にセットする。そして、ページバッファ/センス回路170に保持されたデータが入出力バッファ120を介して出力される。
【0024】
図6に、ECC処理の一例を示す。制御部150は、入出力バッファ120を介してプログラムコマンドを受け取ると、プログラムのためのシーケンスを開始する。フラッシュメモリ100が×8の外部入出力端子を有するとき、外部入出力端子P0〜P7から各I/Oバッファ120−1〜120−7を介してページバッファ/センス回路170に入力データDiがロードされる。ページバッファ/センス回路170は、例えば、セクタ0〜セクタ7の8つのセクタに分割されたレギュラー領域300と、スペア0、スペア1、スペア2、スペア3の4つのセクタに分割されたスペア領域310とを有する。
【0025】
レギュラー領域300の1つのセクタは、例えば、256バイトから構成され、この場合、レギュラー領域300の8つのセクタは、全体で約2Kバイトのプログラムデータを保持することができる。スペア領域310の1つのセクタは、例えば16バイトから構成され、この場合、4つのセクタ(スペア0〜スペア3)は全体で64バイトのデータを保持することができる。スペア領域310の1つのセクタは、例えば、不良メモリセルを含むバッドブロックを識別する情報を記憶する領域311、ユーザーデータに関する情報を記憶する領域312、レギュラー領域300の2つセクタについての誤り訂正符号(パリティビット)を記憶する領域313、314、スペア領域310がECC演算されたときの誤り訂正符号(パリティビット)を記憶する領域315を有する。スペア領域310のスペア0の領域313、314は、レギュラー領域300のセクタ0、セクタ1の誤り訂正符号(パリティビット)をそれぞれ記憶し、スペア領域310のスペア1の領域313、314は、レギュラー領域300のセクタ2、セクタ3の誤り訂正符号(パリティビット)を記憶する。同様に、スペア領域310のスペア2は、レギュラー領域300のセクタ4、セクタ5のパリティビットを記憶し、スペア領域310のスペア3は、レギュラー領域300のセクタ6、セクタ7のパリティビットを記憶する。
【0026】
レギュラー領域300の1つのセクタには、入出力バッファ120−0〜120−7が割り当てられ、つまり、1つの外部入出力端子には256ビットが割り当てられる(256bit×8=1セクタ)。列選択回路180は、プログラム動作時に受け取った列アドレス情報Ayをデコードし、当該デコード結果に基づき、外部入出力端子P−0〜P7に入力されたデータがロードされるセクタを選択する。
図6は、外部入出力端子P−0〜P−7で受け取られたデータが列アドレス情報Ayに従いセクタ0にロードされる例を示している。
【0027】
ここに示す例では、ECC回路130が誤り訂正符号を書込むための書込み回路を含む。好ましくは、ECC回路130は、レギュラー領域300の1つのセクタと等しいバイト数のデータについてECC演算を行うことができる。レギュラー領域300の1つのセクタが256バイトであれば、ECC回路は、256バイトのデータについてECC演算を行い、例えば、1ビットの誤りを訂正する誤り訂正符号を生成する。この場合、全体の8セクタでは、最大で8ビットの誤りを訂正することができる。
【0028】
ECC回路130は、生成された誤り訂正符号をスペア領域310の対応するセクタの領域313または314に書込む。
図6に示す例では、プログラムデータがレギュラー領域300のセクタ0にロードされるので、誤り訂正符号は、スペア0のセクタ0のパリティを記憶する領域313に書込まれる。
【0029】
図7に、スペア領域310のデータのECC処理を例示する。レギュラー領域300の各セクタについてECC処理が終了すると、次に、スペア領域310の各セクタについてECC処理が行われる。スペア領域310の1つセクタ内に含まれるどのデータのECC処理を行うかは任意であるが、本例では、領域312ないし領域314のデータについてECC処理を行うものとする。それ故、スペア0の領域312ないし領域314のデータがECC回路130に転送され、ECC処理によって生成された誤り訂正符号が、ECC回路130によってスペア0の領域315に書込まれる。同様の処理が、他のスペア1ないしスペア3についても行われる。ECC処理が終了すると、メモリアレイ110の選択ページへのプログラムが開始される。
【0030】
本実施例のようにECC回路がオンチップ搭載されたフラッシュメモリ、あるいは外部のコントローラ等に搭載されたECC機能を利用するフラッシュメモリでは、プログラムベリファイにおいて一部の不合格ビット(「0」プログラムが不合格のメモリセル)があったとしても、これをECCで救済することが可能である。例えば、ECCによってNccビットの誤り検出・訂正が可能であれば、理論上、最大でNccビットの不合格ビットを救済することができる。このような不合格ビットを合格と判定する疑似合格の判定スキームを用いる場合には、プログラムベリファイにおいて、不合格ビット数Nが疑似合格するか否かが判定される。疑似合格の判定において許容可能なビット数をNpとしたとき、N≦Npであれば、疑似合格と判定される(なお、Np≦Nccの関係にある)。疑似合格の判定が成されると、プログラム動作を終了し、選択ページには、「0」不良の不合格ビットがそのまま記憶される。選択ページの読出しを行う場合には、選択ページに含まれる不合格ビットが誤りとして検出され、このデータが訂正される。疑似合格の判定スキームを利用することで、プログラム失敗やバッドブロックを減らし、歩留まりを向上させ、さらにプログラムパルスの印加回数を抑制することで、プログラムディスターブを減らすことができる。
【0031】
次に、本実施例の疑似合格を判定する判定回路について説明する。
図8は、疑似合格を判定する判定回路とページバッファ/センス回路との接続関係を示す図である。1つの好ましい態様では、ECC処理がセクタ単位で行われるとき、1つの判定回路200は、1つのセクタに用意される。例えば、
図6に示すように、1つのページが8つのセクタに分割され、1つのセクタが256バイトから構成されるとき、1つの判定回路は、1つのセクタ、すなわち256×8個のページバッファ/センス回路170_1、170_2、170_3〜170_256×8に接続される。このため、1つのページには8つの判定回路が用意される。
【0032】
図8に示すように、判定回路200は、ノードN1、N2、N3を介して配線PB_UP、PB_MG、PB_DISに接続され、これらの配線PB_UP、PB_MG、PB_DISは、256×8個のページバッファ/センス回路170_1〜170_256×8が並列となるように共通に接続される。ECC回路130が256バイトのデータについてECC演算を行うとき、例えば最大で4ビットの誤りを救済することが可能であるならば、判定回路200は、最大で4ビットの不合格ビット(データ「0」のプログラム不良)を疑似合格と判定することが許容される。
【0033】
他の好ましい態様では、ECC処理がセクタ単位でなく、ページ単位で行われるものであるとき、1つのページに1つの判定回路が用意されるようにしてもよい。この場合、1つの判定回路は、ECC回路によって救済可能な誤りビットの最大値を許容可能な不合格ビットとして疑似合格するか否か判定することができる。
【0034】
次に、判定回路の詳細について説明する。
図9に、1つの判定回路とこれに接続される1つのページバッファ/センス回路170の構成を示す。ページバッファ/センス回路170は、典型的に、電圧供給部V1からの電圧をビット線にプリチャージするためのトランジスタBLPRE、ビット線をクランプするためのトランジスタBLCLAMP、センスノードSNSとラッチノードSLR間の電荷転送を可能にするためのトランジスタBLCD、ラッチノードSLRの電位を電圧供給部V2に接続されたトランジスタVGに転送するためのトランジスタDTG、電圧供給部V2をセンスノードSNSに結合するためのトランジスタREGを含む。トランジスタDTGは、例えば、プログラムベリファイ等においてセンスノードSNSをLレベルからHレベルに反転させる必要があるときに動作され、あるいはこれ以外にもセンスノードSNSをHレベルからLレベルに反転させる場合に動作される。ページバッファ/センス回路170はさらに、一対のインバータをクロスカップリングしたラッチ回路を含み、ラッチ回路は、ノードSLR/SLSを等価するためのトランジスタEQ_ENと、ノードSLR/SLSをデータラインへ結合するためのトランジスタCSLと、ノードSLSに結合されたトランジスタQ1と、トランジスタQ1に直列に接続されたトランジスタQ2とを含む。
【0035】
ページバッファ/センス回路170はさらに、プログラムベリファイの合否の結果を出力するための回路を含む。当該回路は、配線PB_UPと配線PB_DISとの間に直列に接続された2つのNMOSトランジスタQ1、Q2を含む。トランジスタQ1のゲートには、ラッチノードSLSが供給され、トランジスタQ2のゲートには、配線PB_MGが接続される。配線PB_UPは、判定回路200のノードN1に接続され、配線PB_MGは、ノードN2に接続され、配線PB_DISは、ノードN3に接続される。トランジスタQ2は、後述するようにトランジスタQ5、Q8と同じサイズWのトランジスタから構成され、トランジスタQ2は、トランジスタQ1が導通するとき、基準電流Irefを流す。プログラムベリファイが合格であるとき、ラッチノードSLSがLレベルとなり、トランジスタQ1がオフとなり、配線PB_UPから配線PB_DISには電流が流れないため、配線PB_UPの電圧は変動しない。プログラムベリファイが不合格であるとき、ラッチノードSLSがHレベルとなり、トランジスタQ1がオンし、このときトランジスタQ2が基準電流Irefを流すため、配線PB_UPの電圧は基準電流Irefによって降下する。
【0036】
判定回路200は、電圧供給源に接続されたPMOSトランジスタQ3、Q4、可変抵抗R1、R2、比較器CMP、NMOSトランジスタQ5、Q6、Q7、Q8を含む。PMOSトランジスタQ3、Q4は、電流源として機能し、可変抵抗R1、R2は、それぞれ可変抵抗R1、R2から出力される電圧が等しくなるように調整される。つまり初期設定として、配線PB_UPの電圧と基準電圧Vrefとが等しくなるように抵抗R1、R2が調整される。可変抵抗R1の出力、すなわち配線PB_UPの電圧が比較器CMPの一方の入力端子(+)に接続され、可変抵抗R2の出力、すなわち基準電圧Vrefが比較器CMPの他方の入力端子(−)に接続される。比較器CMPは、2つの入力電圧を比較し、HレベルまたはLレベルの電圧を出力する。Hレベルは、疑似合格を表し、Lレベルは、不合格を表す。
【0037】
トランジスタQ5は、定電流源に接続され、基準電流Irefを流す。トランジスタQ5のゲートは、ノードN2、すなわち配線PB_MGに接続される。トランジスタQ6は、可変抵抗R2に直列に接続され、そのゲートはノードN2に接続される。トランジスタQ6とGNDとの間にトランジスタQ7が直列に接続され、トランジスタQ7のゲートには、JUDGEON信号が供給される。プログラムベリファイが行われるときJUDGEON信号がHレベルに駆動され、トランジスタQ7が導通状態になる。トランジスタQ6とトランジスタQ7との接続ノードは、ノードN3、すなわち配線PB_DISに接続される。ここで、トランジスタQ6のサイズ(W/2)は、トランジスタQ5、Q2のサイズ(W)の半分であり、それ故、トランジスタQ6は、トランジスタQ7がオンしたとき、1/2のIrefを流す。
【0038】
トランジスタQ8は、判定回路200によって疑似合格であるか否かを判定する不合格ビット数Nに応じて設けられる。判定回路200によって疑似合格か否かを判定する不合格ビット数が0ビットの場合には、トランジスタQ8は事実上不要であるか、あるいは設けられていたとしても、トランジスタQ8の動作はディスエーブルされる(N=0)。1ビットの不合格ビットが疑似合格するか否かを判定するならば、トランジスタQ8は1つ必要であり(N=1)、2ビットの不合格ビットが疑似合格するか否かを判定するならば、並列接続されたトランジスタQ8は2つ必要である(N=2)。判定回路200によって疑似合格か否かを判定することができる不合格ビット数の最大値は、ECC回路170によって救済されるビット数の最大値である。
【0039】
図9には、1つのトランジスタQ8が例示されるが、トランジスタQ8は、上記したように疑似合格か否かを判定する不合格ビットの数Nに応じて設けられる。トランジスタQ8は、基準電圧Vrefと配線PB_DISとの間に接続され、そのゲートは配線PB_MGに接続される。トランジスタQ8のサイズ(W)は、トランジスタQ5、Q2と同じサイズ(W)であり、トランジスタQ8は、トランジスタQ7が導通するとき、基準電流Irefを流す。
【0040】
トランジスタQ8は、疑似合格か否かを判定する不合格ビットの数(N)に応じて用意されるが、Nの数に応じてトランジスタQ8を接続し、それらのトランジスタQ8が全て動作するようにしてもよいし、あるいは接続された複数のトランジスタQ8の中から動作されるトランジスタQ8の数を任意に選択するようにしてもよい。
図10(B)は、接続されたトランジスタQ8の中から動作されるトランジスタQ8の数を選択する方法の一例を示している。基準電圧Vrefと配線PB_DISとの間に、トランジスタQ8_1とトランジスタQ10が直列に接続され、さらにこれらトランジスタと並列にトランジスタQ8_2とトランジスタQ11が直列に接続される。トランジスタQ10、Q11のゲートには、イネーブル信号EN_1、EN_2が供給され、イネーブル信号EN_1、EN_2をHレベルに駆動したとき、トランジスタQ8_1、Q8_2が基準電流Irefを流すように動作される。イネーブル信号EN_1またはEN_2の一方をLレベルにすることで1つのトランジスタQ8が基準電流Irefを流すように動作され、イネーブル信号EN_1、EN_2の双方をLレベルにすることで2つのトランジスタQ8_1、Q8_2が非動作にされる。イネーブル信号EN_1、EN_2は、例えば制御部150からの制御信号に応答して駆動される。ここでは、トランジスタQ10、Q11をスイッチングさせることでトランジスタQ8_1、Q8_2の選択を可能にしているが、トランジスタQ10、Q11を、例えばヒューズに代えることより恒久的に選択されるトランジスタQ8を固定することも可能である。
【0041】
次に、判定回路200の動作について説明する。
図10(A)は、判定回路が0ビット、1ビット、または2ビットの不合格ビットの疑似合格を判定するときの各部の電流値および電流値の差分を表したテーブルである。
【0042】
(1)0ビットの不合格ビットを判定する場合:
先ず、0ビットの不合格ビットの判定について説明する。これは、全ビットのプログラムが成功したか否かを判定することであり、この場合には、トランジスタQ8が全く不要であるか、あるいはトランジスタQ8がディスエーブルである(N=0)。プログラムベリファイは、選択ワード線にベリファイ電圧を印加する以外は、通常の読出し動作と同様であり、全ビットのプログラムが成功した場合には、選択メモリセルが非導通であり、全ビット線の電位は放電されず、プリチャージされた電位である。このため、ラッチノードSLSはLレベルであり、トランジスタQ1はオフであり、配線PB_Uの電圧は変動しない。また、ベリファイ時、JUDGEON信号がHレベルに駆動され、トランジスタQ7がオンし、配線PB_DISがGNDレベルとなる。このとき、トランジスタQ6は、1/2Irefの電流を流すため、基準電圧Vrefは、1/2Irefの電圧降下に応じた値となる。その結果、配線PB_UPの電圧が基準電圧Vrefよりも1/2Irefの分だけ高くなるため、比較器CMPは、Hレベルの信号、すなわち合格を出力する。
【0043】
一方、1ビットの不合格ビットがあるとき、1つのページバッファ/センス回路170のラッチノードSLSがHレベルとなり、トランジスタQ1がオンし、トランジスタQ2がIrefの電流を流す。このため、配線PB_UPの電圧は、Irefの分だけ降下した値になる。その結果、配線PB_UPの電圧は、基準電圧Vrefよりも1/2Irefの分だけ小さくなるため、比較器CMPは、Lレベルの信号、すなわち不合格を出力する。
【0044】
(2)1ビットの不合格ビットを判定する場合:
1ビットの不合格ビットを判定する場合(N=1)、1つのトランジスタQ8が動作可能な状態に置かれる。例えば、
図10(B)であれば、EN-1がHレベル、EN-2がLレベルに駆動される。上記したように、全ビットのプログラムが成功した場合には、トランジスタQ1がオフであり、配線PB_UPの電圧は変動せず、1ビットの不合格ビットがある場合には、1つのページバッファ/センス回路のトランジスタQ1がオンし、配線PB_UPの電圧は、Irefの分だけ降下する。JUDGEON信号がHレベルに駆動され、トランジスタQ7がオンし、配線PB_DISがGNDレベルになると、トランジスタQ6が1/2Irefの電流を流し、さらに、トランジスタQ8がIrefの電流を流す。このため、基準電圧Vrefは、1/2Iref+Irefの分だけ降下した値となる。その結果、配線PB_UPの電圧が基準電圧Vrefよりも高くなり、比較器CMPは、Hレベルを出力する。
【0045】
一方、2ビットの不合格ビットがある場合には、2つのページバッファ/センス回路のトランジスタQ1がオンし、配線PB_UPの電圧は、2×Irefの分だけ降下する。このため、配線PB_UPの電圧は、基準電圧Vrefよりも小さくなり、比較器CMPは、Lレベルを出力する。
【0046】
(3)2ビットの不合格ビットを判定する場合:
2ビットの不合格ビットを判定する場合(N=2)、2つのトランジスタQ8が動作可能な状態に置かれる。例えば、
図10(B)であれば、EN_1がHレベル、EN_2がHレベルに駆動される。上記したように、2ビットの不合格ビットがある場合には、2つのページバッファ/センス回路のトランジスタQ1がオンし、配線PB_UPの電圧は、2×Irefの分だけ降下する。JUDGEON信号がHレベルに駆動され、トランジスタQ7がオンし、配線PB_DISがGNDレベルになると、トランジスタQ6が1/2Irefの電流を流し、さらに、2つのトランジスタQ8が2×Irefの電流を流す。このため、基準電圧Vrefは、1/2Iref+2×Irefの分だけ降下した値となる。その結果、配線PB_UPの電圧が基準電圧Vrefよりも高くなり、比較器CMPは、Hレベルを出力する。
【0047】
一方、3ビットの不合格がある場合には、3つのページバッファ/センス回路のトランジスタQ1がオンし、配線PB_UPの電圧は、3×Irefの分だけ降下する。このため、配線PB_UPの電圧は、基準電圧Vrefよりも小さくなり、比較器CMPは、Lレベルを出力する。
【0048】
このように、判定回路は、不合格ビット数に応じた基準電流により生成される電圧と、不合格ビット数に応じた基準電流+1/2基準電流により生成された基準電圧とを比較することにより不合格ビットの疑似合格の判定を行うことができる。
【0049】
疑似合格の判定スキームに用いられる判定回路200は、選択ブロックのNANDストリングの不良数Nsを検出する検出回路としても使用することができる。NANDストリングの不良数Nsは、例えば、選択ブロックの消去動作時において検出されたり、あるいは、選択ブロックの選択ページへのプログラム動作時において検出される。例えば、従来の選択ブロックの消去は、選択ブロックの全てのNANDストリングが合格されることを前提とする。すなわち、選択ブロック内の全ワード線に消去ベリファイ電圧を印加し、共通ソース線からNANDストリングにVccを供給することでリバース読出しを行い、全ビット線のセンスノードがVccまたはHレベルであれば、消去ベリファイは合格であり、ビット線の1つでもが0VまたはLレベルであれば、消去ベリファイは不合格である。
【0050】
一方、本実施例作では、判定回路200により選択ブロック内のNANDストリングの不良数Nsを検出し、不良数Nsが一定値以下であれば、当該ブロックを、バッドブロックとして使用不可にするのではなく、そのままプログラム可能なブロックとして使用を可能にする。
【0051】
図11に、本実施例の消去動作のフローを示す。ステップS10〜S50までのフローは、
図1に示すフローと同様である。消去パルスの印加回数が、消去に許される最大の消去パルス印加回数であるNMAXに到達したか否かが判定され(S40)、到達した場合には、さらにNANDストリングの不良数Nsが一定値以下か否かが判定される(S60)。一定値は、ECC回路130によって救済可能なビット数Nccまたは疑似合格と判定できる最大ビット数Npに基づき決定され、例えば、一定値≦Np≦Nccの関係である。ストリングの不良数Nsが一定値以下である場合には、消去動作を終了し、すなわち、このブロックは、その後も継続的に使用される。一方、ストリング不良数Nsが一定値を超える場合には、消去失敗のステータスが外部のコントローラに通知されるとともに、当該ブロックが使用不可であるバッドブロックとして管理される(S70)。
【0052】
次に、NANDストリングの不良数Nsの検出方法について説明する。NANDストリングの不良数の検出は、
図9に示すページバッファ/センス回路170とこれに接続された判定回路200により行われる。判定回路200には、例えば、
図10(B)に示すように2つのトランジスタQ8が接続され、これに直列に選択用のトランジスタQ10、Q11が接続されているものとする。
【0053】
(1)0ビットのストリング不良の検出:
制御部150によりイネーブル信号EN_1、EN_2がLレベルに駆動され、トランジスタQ8_1、Q8_2が動作不能な状態におかれる。ここで、選択ブロックのリバース読出しが行われる。全てのNANDストリングの消去が成功であれば(全てのメモリセルのしきい値分布が「0」)、全てのページバッファ/センス回路170のセンスノードSNSはHレベルであり、トランジスタQ1がオフし、比較器CMPは、Hレベルを出力する。この出力は、選択ブロックの消去においてストリング不良数Nsがゼロであることを示す。一方、1ビットのNANDストリングの消去が不良であれば(メモリセルのしきい値分布が「1」でない)、1つのページバッファ/センス回路170のセンスノードSNSがLレベルであり、トランジスタQ1がオンし、配線PB_UPの電圧が基準電圧Vrefよりも1/2Iref分だけ低くなり、比較器CMPは、Lレベルを出力する。この出力は、選択ブロックの消去においてストリング不良数Nsが1ビットであることを示す。
(2)1ビットのストリング不良の検出:
制御部150によりイネーブル信号EN_1またはEN_2の一方がHレベルに駆動され、トランジスタQ8_1またはQ8_2の一方が動作可能な状態におかれる。リバース読出しで、1ビットのNANDストリングの不良があるとき、比較器CMPは、Hレベルを出力し、2ビットのストリング不良があるとき、比較器CMPは、Lレベルを出力する。
(3)2ビットのストリング不良の検出:
制御部150によりイネーブル信号EN_1およびEN_2の双方がHレベルに駆動され、トランジスタQ8_1およびQ8_2の双方が動作可能な状態におかれる。リバース読出しで、2ビットのNANDストリングの不良があるとき、比較器CMPは、Hレベルを出力し、3ビットのストリング不良があるとき、比較器CMPは、Lレベルを出力する。
【0054】
次に、本実施例のプログラム動作について説明する。本実施例のプログラム動作は、プログラムを行う前に、NANDストリングの不良数Nsを検出し、検出された不良数Nsに基づき疑似合格の判定をする不合格ビット数Nを決定する。選択ブロックを消去した際に、消去不良のNANDストリングは、データ「0」のメモリセルを含むことになる。このような選択ブロックを使用してプログラムを行う場合、入力データDiが「0」または「1」にかかわらず、プログラムベリファイでは、NANDストリング不良のビット線が合格と判定されてしまい、入力データDiが正しくプログラムされたか否かを保証することができない。このため、NANDストリングの不良が含まれる場合には、その不良数Nsの数だけ、疑似合格と判定する不合格ビット数を減らさなければならない。
【0055】
図12、
図13は、本実施例のプログラム動作を説明するフローチャートである。制御部150は、入出力バッファ120を介してプログラムコマンド、アドレス、データDiを受け取ると、プログラムのためのシーケンスを開始する。入力データDiがページバッファ/センス回路170にロードされ、次いで、ECC回路130により入力データDiのECC処理が行われる(S100)。
【0056】
ECC処理が終了すると、プログラムを行う前に、選択ブロックのNANDストリングの不良数Nsの検出が行われる。先ず、
図9に示すページバッファ/センス回路170によりセクタ単位でリバース読出しが行われる(S110)。
図14は、NANDストリングに不良がある場合と、無い場合のそれぞれにおいてデータ「0」、「1」が入力されるときの各ノードの論理値を表した表である。
【0057】
プログラムすべきデータDiがラッチ回路にロードされたとき、ラッチノードSLRは、入力データに応じた論理レベルである。次に、トランジスタDTGが一定期間オンされ、ラッチノードSLRの電荷がノードVGに転送され、そこに保持される。言い換えれば、ノードVGは、リバース読出しの間、プログラムすべきデータを一時的に保持する。次に、リバース読出しが行われる(S110)。リバース読出しは、選択ブロックに接続された共通ソース線からNANDストリングに対して、例えばVcc電圧を供給する。NANDストリングに不良がなければ、それを構成するメモリセルのしきい値は「1」であり、NANDストリングが導通し、センスノードSNSがHレベルになる。一方、NANDストリングに不良があれば、それを構成する少なくとも1つのメモリセルのしきい値は「1」ではないため、NANDストリングが非導通となり、センスノードSNSがLレベルになる。次に、トランジスタBLCDが一定期間オンし、センスノードSNSの電荷がラッチノードSLRに転送される(S112)。ラッチノードSLRがHレベルであるとき、ラッチノードSLSがLレベルとなり、トランジスタQ1がオフし、反対に、ラッチノードSLRがLレベルであるとき、ラッチノードSLSがHレベルとなり、トランジスタQ1がオンする。
【0058】
ここで、判定回路200が、例えば、最大で2ビットの不合格ビットの疑似合格を判定するとしたとき、上記したように、判定回路200には、
図10(B)に示すように2つのトランジスタQ8_1、Q8_2が接続される。制御部150は、イネーブル信号EN_1、EN_2により2つのトランジスタQ8_1、Q8_2を動作可能状態にし、NANDストリングの不良数Nsが2ビットか否かを判定する(S114)。比較器CMPの出力がLレベルであれば、ストリングの不良数Nsは3ビットであり、この場合、制御部150は、疑似合格の不合格ビット数を0ビット(N=0)に設定する(S122)。すなわち、イネーブル信号EN_1、EN_2の双方をLレベルの駆動し、トランジスタQ8_1、Q8_2を動作不能状態にする(S122)。従って、プログラムベリファイでは、選択ページの全ビットが合格したか否かが判定される。
【0059】
比較器CMPの出力がHレベルであれば、ストリングの不良数Nsは2ビット以下であり、この場合には、次にストリングの不良数Nsが1ビットか否かが判定される(S130)。制御部150は、トランジスタQ8_1、Q8_2のいずれか一方を動作可能状態にし、1ビットか否かを判定する。比較器CMPの出力がLレベルであれば(S132)、ストリングの不良数Nsは2ビットであり、この場合にも、制御部150は、疑似合格の不合格ビット数を0ビット(N=0)に設定する(S134)。
【0060】
比較器CMPの出力がHレベルであれば、ストリングの不良数Nsは1ビット以下であり、この場合には、次にストシングの不良数Nsが0ビットか否かが判定される(S140)。制御部150は、トランジスタQ8_1、Q8_2の双方を動作不能状態にし、0ビットか否かを判定する。比較器CMPの出力がLレベルであれば(S142)、ストリングの不良数Nsは1ビットであり、この場合、制御部150は、疑似合格の不合格ビット数を1ビット(N=1)に設定する(S144)。すなわち、トランジスタQ8_1、Q8_2のいずれか一方が動作可能状態となるようにイネーブル信号EN_1、EN_2の一方をHレベルにセットする。
【0061】
比較器CMPの出力がHレベルであれば、ストリングの不良数Nsは0ビットであり、この場合、制御部150は、疑似合格の不合格ビット数を2ビット(N=2)に設定する(S146)。すなわち、トランジスタQ8_1、Q8_2の双方が動作可能状態となるようにイネーブル信号EN_1、EN_2の双方がHレベルにセットされる。
【0062】
NANDストリングの不良数Nsに応じた疑似合格の不合格ビット数Nのセットが終了すると、次に、ノードVGに保持されたデータがラッチノードSLRに復元される。先ず、電圧供給部V1をGNDにし、かつトランジスタBLPREを一定期間オンすることでセンスノードSNSをGNDにした後(S150)、電圧供給部V2を0VからVddにし、トランジスタREGを一定期間オンにする。ノードVGにHレベルのとき、電圧供給部V2がVddに遷移するとブートストラップによりノードVGの電位がさらに昇圧され、トランジスタが強くオンされ、センスノードSNSがHレベルに充電される。一方、ノードVGがLレベルである場合には、トランジスタVGがオンしないので、センスノードSNSは、Lレベルのままである。次に、センスノードSNSの電荷がラッチノードSLRに転送され、入力データが復元され(S154)、その後、プログラム動作が開始される。
【0063】
入力データの復元が終了すると、次に、入力データに従いプログラムが開始される。
図13に示すように、ワード線選択回路160により選択ブロックのワード線が選択され、センス回路は、入力データに応じた電圧をビット線に印加し、選択ページにプログラムパルスが印加される(S200)。次に、プログラムベリファイが行われる(S210)。ベリファイの結果、選択ページの全ビットが合格であれば、プログラムが終了される(S220)。一方、全ビットが合格していない場合には、制御部150は、プログラムパルスの印加回数が最適回数Nopに到達したか否かを判定する(S230)。ここで、最適回数Nopとは、プログラムにおいて許されるプログラムパルスの最大の印加回数NMAXよりも小さい値であり、好ましくは、メモリセルをプログラム不合格と判定する場合に最小限印加されるべきプログラムパルスの回数である。例えば、プログラムに許容される最大時間が700μsであり、1回のプログラムパルスの印加に要する時間が50μsとした場合、NMAX=700μs、またはNMAX=14回である。最適回数Nopは、典型的なメモリセルがプログラム合格されるときのプログラムパルスの印加回数に基づき決定することができる。例えば、統計的な手法によりプログラム合格されるメモリセルに印加されたプログラムパルスの平均回数Navが算出されたとき、最適回数Nopは、Nop=Navに設定することができる。この最適回数Nopは、例えば、外部のコントローラから受信したコマンド等によって設定することが可能であり、設定された値は、制御部150のレジスタ等に保持される。
【0064】
制御部150は、プログラムパルスの印加回数が最適回数Nopに到達していない場合には(S230)、ISPPに従い、前回よりもΔVだけ大きなプログラムパルスを選択ページに印加する(S240)。一方、プログラムパルスの印加回数が最適回数Nopに到達した場合には(S230)、制御部150は、選択ページが疑似合格であるか否かを判定するステップを行う(S250)。疑似合格とされる不合格ビット数Nは、上記したように、ECCによって救済できる最大のビット数Ncc以下であり、ベリファイ時の不合格ビット数、すなわち選択ページに実際に生じている不合格ビット数が疑似合格の不合格ビット数N以下であれば、疑似合格と判定される(S250)。疑似合格と判定されるとプログラム動作が終了し、選択ページには、「0」不良の不合格ビットがそのまま記憶されたことになる。
【0065】
一方、疑似合格していないと判定されたとき(S250)、制御部150は、プログラムパルスの印加回数がNMAXに到達したか否かを判定し(S260)、到達していなければ、ISPPに従いさらにプログラムパルスが選択ページに印加される(S240、S200)。プログラムパルスの印加回数がNMAXに到達した場合には、プログラム失敗のステータスを外部のコントローラに通知し、当該選択ページを含むブロックがバッドブロックとして管理される。この場合、スペア領域の領域311にバッドブロックである識別情報が記憶される。
【0066】
ここで、選択ブロックにNANDストリングの不良数Nsが2ビットあるとき、上記したように疑似合格により判定される不合格ビット数は0ビットであるため、
図13のフローにおいて、事実上、疑似合格の判定(S250)は行われないことになる。NANDストリングの不良は、しきい値が「1」でないメモリセルを含み、リバース読出しでは不合格となるが、プログラムベリファイでは合格となる。すなわち、プログラムすべきデータの如何にかかわらず、不良のNANDストリングのプログラムベリファイ結果は「0」であり、これは合格となってしまう。このため、選択ブロック内にNANDストリングの不良が含まれと、プログラムベリファイは、NANDストリングの不良数Nsに応じた誤りを潜在的に含み得る(不良のNANDストリングへのプログラムすべきデータが「1」であるとき)ことになり、プログラムデータと、選択ページから読出したデータとの間には、ストリング不良数Nsに応じた不一致(誤り)が発生する可能性がある。この誤りは、ECC回路130によって救済されなければならず、その分だけ、判定回路120の疑似合格で判定される不合格ビット数への割り当てが減らされることになる。
【0067】
このように本実施例によれば、選択ブロックのNANDストリングの不良数を検出するようにしたので、NANDストリングの不良数NsがECC回路によって救済できるビット数以下であれば、従来は、バッドブロックにカウントされていたブロックを使用することが可能になり、メモリアレイの利用効率ないし製造歩留まりを改善することができる。
【0068】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。