(57)【要約】【課題】誤り訂正符号（ＥＣＣ）を有する不揮発性メモリ（ＮＶＭ）システムのプログラミングを提供する。【解決手段】不揮発性半導体メモリデバイスをプログラミングする方法は、プログラム動作中にプログラム検証に合格しなかったビットセルの数を求める工程を含む。ビットセルは、ビットセルのアレイのビットセルのサブセットに含まれる。方法は、そのビットセルのサブセットに関して誤り訂正符号（ＥＣＣ）訂正が以前に実行されているか否かを判定する工程をさらに含む。所定数のプログラムパルス後のプログラム検証に合格しなかったビットセルの数が閾値数を下回り、かつＥＣＣ訂正がそのビットセルのサブセットに関して実行されていない場合にプログラム動作は成功とみなされる。【選択図】図１
2014096196.tif 000002
【特許請求の範囲】
【請求項１】
半導体メモリ記憶デバイスにおいて、
複数の不揮発性メモリ（ＮＶＭ）ビットセルからなるＮＶＭビットセルのアレイであって、該ＮＶＭビットセルのアレイは１つ以上のブロックに分割されている、ＮＶＭビットセルのアレイと、
前記ＮＶＭビットセルのアレイに結合されているメモリコントローラと、
前記アレイおよび前記メモリコントローラに結合されている誤り訂正符号（ＥＣＣ）ユニットとを備え、
前記メモリコントローラは、
前記１つ以上のブロックのうちの１つのブロックのサブセットのプログラム動作中、
第１のプログラム検証動作によって、前記複数のＮＶＭビットセルのうちの１つのＮＶＭビットセルのみが正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出され、かつ、
第２のプログラム検証動作によって、前記１つのＮＶＭビットセルが緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出されたとき、該プログラム動作を成功であるとみなすように構成されており、前記緩和プログラム検証電圧レベルは前記正常プログラム検証電圧レベルよりも低く、かつ、正常読出電圧レベルよりも高い、半導体メモリ記憶デバイス。
【請求項２】
プログラムされている前記サブセットに対し前記ＥＣＣユニットによって訂正が以前に実行されていない場合、前記プログラム動作は成功であるとみなされる、請求項１に記載の半導体メモリ記憶デバイス。
【請求項３】
前記プログラム動作は複数のプログラムパルスを含み、前記プログラム動作中、各プログラムパルスまたはプログラムパルスのグループの後に前記第１のプログラム検証動作および前記第２のプログラム検証動作が実行される、請求項１に記載の半導体メモリ記憶デバイス。
【請求項４】
前記メモリコントローラによって所定数のプログラムパルスが実行された後、前記第１のプログラム検証動作に合格しなかったＮＶＭビットセルの数のカウントが実行される、請求項１に記載の半導体メモリ記憶デバイス。
【請求項５】
第１のプログラム検証動作によって、前記複数のＮＶＭビットセルのうちの１つのＮＶＭビットセルのみが正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出されたとき、前記第２のプログラム検証動作が実行される、請求項１に記載の半導体メモリ記憶デバイス。
【請求項６】
前記所定数のプログラムパルスは２〜１０個のプログラムパルスである、請求項４に記載の半導体メモリ記憶デバイス。
【請求項７】
前記緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかった前記１つのＮＶＭビットセルを含む前記１つのブロックに対し前記ＥＣＣユニットによって訂正が以前に実行されていない場合、前記プログラム動作は成功とみなされる、請求項１に記載の半導体メモリ記憶デバイス。
【請求項８】
前記メモリコントローラは、前記１つのブロックに対する前記プログラム動作中、最大数のプログラムパルスに到達した場合、前記第１のプログラム検証動作によって、前記１つのＮＶＭビットセルのみが前記正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出され、前記第２のプログラム検証動作によって、前記複数のＮＶＭビットセルの全てが前記緩和プログラム検証電圧レベルにおいて成功裏にプログラムされたことが検出されたとき、前記プログラム動作は成功であるとみなすように構成されている、請求項１に記載の半導体メモリ記憶デバイス。
【請求項９】
前記正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかった前記１つのＮＶＭビットセルを含む前記サブセットに対し前記ＥＣＣユニットによって訂正が以前に実行されていない場合、前記メモリコントローラによって前記プログラム動作は成功であるとみなされる、請求項８に記載の半導体メモリ記憶デバイス。
【請求項１０】
前記正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかった前記１つのＮＶＭビットセルを含む前記１つのブロックに対し前記ＥＣＣユニットによって訂正が以前に実行されている場合、前記プログラム動作は成功していないとみなされる、請求項８に記載の半導体メモリ記憶デバイス。
【請求項１１】
不揮発性メモリに記憶されている１つ以上のＥＣＣインジケータを含むＥＣＣレコードをさらに備え、前記ＥＣＣインジケータのうちの１つは前記サブセットに対し割り当てられており、該サブセットに対してＥＣＣ訂正が実行されたか否かを示す、請求項１に記載の半導体メモリ記憶デバイス。
【請求項１２】
半導体メモリデバイスをプログラミングする方法であって、
複数の不揮発性ビットセルからなる不揮発性ビットセルのアレイのサブセットに対してプログラム動作を実行する工程と、
最大数のプログラムパルスに到達した際、前記プログラム動作中、第１のプログラム検証動作によって、前記複数の不揮発性ビットセルのうちの１つの不揮発性ビットセルのみが正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出され、第２のプログラム検証動作によって、前記複数の不揮発性ビットセルの全てが緩和プログラム検証電圧において成功裏にプログラムされたことが検出された場合、前記プログラム動作を成功として指定する工程とを備え、緩和プログラム検証電圧レベルは前記正常プログラム検証電圧レベルよりも低い、方法。
【請求項１３】
前記プログラム動作中、
前記第１のプログラム検証動作によって、前記複数の不揮発性ビットセルのうちの１つの不揮発性ビットセルのみが前記正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出され、かつ
前記第２のプログラム検証動作によって、前記複数の不揮発性ビットセルのうちの１つの不揮発性ビットセルが前記緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出されたとき、前記プログラム動作を成功として指定する工程をさらに備える、請求項１２に記載の方法。
【請求項１４】
プログラムされている不揮発性ビットセルの前記サブセットに対して誤り訂正符号（ＥＣＣ）訂正が以前に実行されていない場合、前記プログラム動作を成功として指定する工程をさらに備える、請求項１２に記載の方法。
【請求項１５】
前記緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかった前記１つの不揮発性ビットセルを含む前記サブセットに対しＥＣＣユニットによって訂正が以前に実行されていない場合、前記プログラム動作は成功であるとみなされる、請求項１２に記載の方法。
【請求項１６】
前記プログラム動作中、各プログラムパルスまたはプログラムパルスのグループの後に前記第１のプログラム検証動作および前記第２のプログラム検証動作が実行される、請求項１３に記載の方法。
【請求項１７】
前記正常プログラム検証電圧レベルおよび前記緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかったビットセルを含む前記不揮発性ビットセルの前記サブセットに対して誤り訂正符号（ＥＣＣ）訂正が以前に実行されていない場合に前記プログラム動作を成功として指定する工程をさらに備える、請求項１３に記載の方法。
【請求項１８】
前記緩和プログラム検証電圧レベルおよび前記緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかった前記１つの不揮発性ビットセルを含む前記サブセットに対して誤り訂正符号（ＥＣＣ）ユニットが以前に訂正を実行していない場合に前記プログラム動作を成功として指定する工程をさらに備える、請求項１３に記載の方法。
【請求項１９】
不揮発性半導体メモリデバイスをプログラミングする方法であって、
プログラム動作中にプログラム検証に合格しなかったビットセルの数を求める工程であって、前記ビットセルは複数のビットセルからなるビットセルのアレイにおけるビットセルのサブセットに含まれる、前記工程と、
前記ビットセルのサブセットに関して誤り訂正符号（ＥＣＣ）訂正が以前に実行されているか否かを判定する工程と、
所定数のプログラムパルスの後のプログラム検証に合格しなかったビットセルの数が閾値数を下回り、かつ前記ＥＣＣ訂正が前記ビットセルのサブセットに関して実行されていない場合、前記プログラム動作を成功とみなす工程とを含む、方法。
【請求項２０】
前記ビットセルの前記サブセットに対する消去動作中、
第１のプログラム検証動作によって、正常プログラム検証電圧レベルにおける消去検証に所定数のビットセルが合格しなかったことが検出され、かつ
第２のプログラム検証動作によって、緩和プログラム検証電圧レベルにおける消去検証に所定数のビットセルが合格しなかったことが検出されたとき、
前記消去動作を成功として指定する工程をさらに備える、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して不揮発性メモリ（ＮＶＭ）に関し、より具体的には、誤り訂正符号（ＥＣＣ）を有するＮＶＭシステムに関する。
【背景技術】
【０００２】
不揮発性メモリ（ＮＶＭ）は概して、プログラムおよび消去に特別な動作を必要とし、これらの動作を実行することができる回数には限界がある。一般的なメモリタイプであるフラッシュでは、メモリはブロック単位で消去されるのに対して、セグメント単位でプログラムされる。２つ以上のセグメントが同時にプログラムされる場合があるが、プログラムされている部分は１ブロック全体に満たない。それにもかかわらず、依然として、圧倒的多数の他のビットよりも著しく多いプログラミングパルスを必要としたビットが存在する可能性がある。プログラムするのに時間がかかるこれらのビットは、スロー・トゥ・プログラム・ビット（ｓｌｏｗ  ｔｏ  ｐｒｏｇｒａｍ  ｂｉｔ）と称される場合がある。別の問題は、時間が経過し、おそらく数万サイクルにわたると、いくつかのメモリセルはプログラムに対して脆弱になるか、または時間がかかるようになる場合がある。これらの潜在的に脆弱なメモリセルは、それらが実際にプログラムに対して脆弱になるか、または時間がかかるようになるまでは検出が非常に困難である。従って、デバイスが製品内に配置されたしばらく後にそれらが発生することはまれでなく、それによって製品故障が引き起こされるおそれがある。製品故障はいかなる状況下においても回避することが非常に望ましいが、特に集積回路の故障を回避することが望ましい。これは一般的に、製品のユーザが修理することができるものではなく、製品の原価と比較した修理の費用を考慮してもなお修理を行う価値があると仮定すると、製品は返却されなければならず、特別な訓練を受け高価な設備を有する者が修理を行わなければならない。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第６９６７８７３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従って、ＮＶＭシステムが上記に提示されている問題のうちの１つ以上を改善することが必要とされている。
【課題を解決するための手段】
【０００５】
一態様では、プログラム動作を最適化するために不揮発性メモリ（ＮＶＭ）とともに誤り訂正符号（ＥＣＣ）が使用される。特にかなり長いプログラム／消去サイクルに使用した後、プログラム動作はプログラムするのに時間がかかるたった１つのビットによって妨げられる場合がある。このたった１つのビットがプログラムされるのに途方もない時間がかかるとき、プログラムに成功する可能性は決してないことが予測可能な場合がある。そのような場合、後続する読出動作中、ＥＣＣに依拠してこのスロー・トゥ・プログラム・ビットを訂正することができる。他方、このたった１つのビットが相対的にプログラムに成功する可能性が高い場合、プログラム処理はプログラムに成功することになるという高い確度をもって継続することができる。これは、図面および以下の明細書の記載を参照することによってより良好に理解される。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に応じたＮＶＭシステムの図。
【図２】図１のＮＶＭシステムの理解に有用な図。
【図３】図１のＮＶＭシステムの理解に有用な図。
【図４】図１のＮＶＭシステムの理解に有用なフローチャート。
【発明を実施するための形態】
【０００７】
本発明は例として示されており、添付の図面によって限定されない。図面において、同様の参照符号は類似の要素を示す。図面内の要素は簡潔かつ明瞭にするために示されており、必ずしも原寸に比例して描かれてはいない。
【０００８】
図１には、ＮＶＭアレイ１２、誤り訂正符号（ＥＣＣ）ユニット１４、ＥＣＣレコード１６、およびメモリコントローラ１８を有する不揮発性メモリ（ＮＶＭ）システム１０が示されている。ＮＶＭアレイ１２は、ブロック０として図示されているブロック２０、ブロック１として図示されているブロック２２、ブロック２として図示されているブロック２４、およびブロック３として図示されているブロック２６を含む複数のブロックを含む。メモリコントローラ１８はＮＶＭアレイ１２およびＥＣＣレコード１６に結合されている。ＥＣＣユニット１４はＮＶＭアレイ１２およびＥＣＣレコード１６に結合されている。ブロック２０，２２，２４，２６は各々、複数のＥＣＣセグメントとして配列されている複数のメモリセルを有する。ブロック２０は、各々がデータビットおよびＥＣＣビットを有する複数のＥＣＣセグメント２５を有する例示的なブロックである。例示的なデータビット２７および例示的なＥＣＣビット２８が単一のＥＣＣセグメントを形成する。ＥＣＣセグメントはブロックに含まれる単位すなわちサブセットであり、その単位において、ＥＣＣセグメントのデータについて誤り訂正または検出が行われる。たとえば、一般的なＥＣＣ手法は、ＥＣＣセグメントの単一ビット誤りを訂正し、ダブルビット誤りを検出することが可能である。ブロック２０，２２，２４，２６のうちの所与のブロックについて、メモリセルのすべてが同時に消去されるが、プログラムはＥＣＣセグメント単位で行われ、これは同時に２セグメントで行われることもあるが、１ブロック全体よりは小さい。ＥＣＣビット２８はデータビット２７に対応し、データビット２７に関する情報を記憶し、このように、データビットセットについて、その対応するデータビットに関する情報を記憶する対応するＥＣＣビットセットが存在する。フラッシュメモリであるＮＶＭでは、消去動作はブロック毎に行われ、プログラムはセグメント毎に行われることが一般的である。
【０００９】
メモリコントローラ１８は、ブロック消去動作、読出、およびセグメントプログラミングの制御のように、ＮＶＭアレイ１２の動作を制御する。ＥＣＣユニット１４は、ＮＶＭアレイ１２の出力を受信し、誤りを訂正し、訂正された出力を提供する。ＥＣＣユニット１４はまた、ＮＶＭアレイ１２で訂正が必要とされているロケーションに関する情報およびこれらの訂正に関する情報をＥＣＣレコード１６に提供する。ＥＣＣレコード１６は不揮発性メモリに記憶されることが好適であり、ＮＶＭアレイ１２内の確保されている部分にあってもよい。一般的にプログラミング動作中、ユーザはプログラムされるべきデータビット２７を指定するだけでよく、対応するＥＣＣビット２８はＥＣＣユニット１４によって計算され、その後データビットとともにプログラムされることになる。メモリコントローラ１８はＥＣＣ１６に記憶されている情報にアクセスすることができる。
【００１０】
図２には、ブロック２０，２２，２４，２６のうちの１つのプログラム動作の前のビットのゲート電圧分布３２、およびプログラム動作の一部分の後のビットの分布３０が示されている。分布３２は、プログラムされるべきＥＣＣセグメントの初期状態を示しており、セグメントのビットのすべてが消去状態にある。分布は密であることが望ましい。プログラム動作は、プログラムされているブロックのＥＣＣセグメントのビットの閾値電圧を十分に高い閾値電圧まで上昇させる複数のプログラムパルスとして実行され、それによって、それらが指定された電流を伝導するゲート電圧Ｖｇが正常プログラム検証Ｖｇｐと呼ばれる正常プログラム検証レベルを上回る。そのため、第１の工程は、第１のグループの連続したプログラムパルスを、２つのＥＣＣセグメントであってもよいブロックの一部分に印加することである。第１の工程の後、セグメント内のビットセルは、適切にプログラムされており、それによって指定された電流を伝導するためのゲート電圧Ｖｇが正常プログラム検証Ｖｇｐを上回っていることを検証するためにテストされる。このビットセルのテストはプログラム検証と呼ばれる場合がある。より多くのプログラミングが必要とされる場合、パルスを印加する後続の工程が実行される。後続の工程は同じ期間にわたる同じ電圧における同じ数のパルスを有してもよい。他方、後続のプログラム工程は、パルスの数、期間、および電圧に関して同じであってもよいし、異なっていてもよい。正常プログラム検証Ｖｇｐのゲート電圧が印加される場合、分布３０のすべてのビットの閾値電圧は伝導されている指定された電流しか生じないので、分布３０はプログラムされていると考えられる。従って、分布３０のビットは、正常プログラム検証電圧Ｖｇｐを上回っているものとして参照され得る。ＮＶＭシステム１０の正常読出動作中にビットセルに印加されるゲート電圧Ｖｇは、消去検証電圧Ｖｇｅとプログラム検証電圧Ｖｇｐとの間であり、ビットのプログラム状態と消去状態との間で区別するとともに、データ保持のために十分な余裕を保証する読出を実行するための最適条件に基づいて選択される。すなわち、消去ビットは、正常読出動作中にゲート電圧Ｖｇが読出電圧として印加されるときに電流が所定の電流をいくらか余裕をもって上回るべきである状態にあり、プログラムビットは、正常読出動作についてゲート電圧Ｖｇが読出電圧として印加されるときに所定の電流をいくらか余裕をもって下回る電流を提供する。
【００１１】
図２に示されているように、プログラム動作における第１の工程から上昇した電圧Ｖｇｐを上回っておらず、従って検証ゲート電圧Ｖｇとして正常プログラム検証電圧Ｖｇｐを印加することに基づくテストについて十分にプログラムされていないビット３４も存在する。５００ミリボルトであってもよい所定の差だけプログラム検証電圧Ｖｇｐよりも低いＶｇｒの低減された電圧であるゲート電圧が印加されることによって、別のプログラム検証が実行される。緩和されたプログラム検証電圧Ｖｇｒは正常読出ゲート電圧よりも高いものであるべきである。緩和プログラム検証は、低くなった電圧Ｖｇｒがゲート電圧Ｖｇとして印加されるために、閾値電圧がより低いビットが指定電流を伝導することができるという点で、正常プログラム検証よりも容易なテストである。低くなった電圧Ｖｇｒを検証ゲート電圧Ｖｇとして使用することは、緩和プログラム検証と呼ばれる場合がある。図２に示されているように、ビット３４は緩和プログラム検証に合格する。
【００１２】
図３には、分布３６が図２の分布３２と同じである消去分布３２から開始しているプログラム動作の後のＥＣＣセグメントの分布に対応するが、正常プログラム電圧Ｖｇｐに基づく正常プログラム検証に合格していないだけでなく、緩和プログラム電圧Ｖｇｒに基づく緩和プログラム検証に合格していないビット３８が存在するという結果になっている場合について図示されている。そのため、図２と図３との間の差は、図３における正常プログラム検証に合格していない単一ビット３８が緩和プログラム検証にも合格していないことである。従って、この場合、第１のプログラム工程後に緩和検証に合格していない単一ビットであるビット３８は、図２におけるビット３４を十分にプログラムするのに必要とされることになるよりもよりさらなるプログラミングを必要とすると予測される可能性がある。それゆえ、図３におけるビット３８について、そうでなければプログラム動作を著しく減速するおそれがあるため、追加のプログラムパルスを印加するのではなく、ＥＣＣに依拠して正常読出動作中にこれを訂正することが有益である。一方で図２におけるビット３４については、正常プログラム検証に合格する可能性が高い。従って、図２の場合では、ビット３４が正常プログラム検証レベルを上回って動くことができるか否かを確かめるために追加のプログラムパルスを印加し、最大プログラムパルスカウントに達した場合にのみそのようなビットについてＥＣＣに依拠することが有益である。
【００１３】
図４には、図２および図３の単一ビットのスロー・トゥ・プログラム状況に対処する方法を示すフローチャート５０が示されている。フローチャート５０は、工程５２，５４，５６，５８，６０，６２，６４，６６，６８，７０，７２，７４，７８，８０，８２，８４，８６，８８，８９を備える。工程５２において、アドレスおよびプログラムパルスカウントを初期化することを含むプログラム動作が開始する。パルスカウントは通常では０に初期化されることになり、アドレスはプログラムされるべき最初のＥＣＣセグメントに初期化されることになる。このシステムでは、一対のＥＣＣセグメントが同時にプログラムされることができるが、これら２つのＥＣＣセグメントは、それらが各々データビットセットおよび対応するＥＣＣビットセットを有するという点において別個に処理される。従って、データビット２７およびＥＣＣビット２８のプログラミングは他のＥＣＣセグメントに対する典型例であり、従って、この例では、データビット２７およびＥＣＣビット２８は選択されるセグメントと考えられる。工程５４は、Ｖｇｐである正常プログラム検証レベルにおいて現在のセグメントのプログラム検証を実行することである。工程５６において、答えが、検証に合格、すなわち、肯定である場合、処理は工程７８において別のＥＣＣセグメントをプログラムすべきであるか否かを判定することによって継続する。工程７８において否である場合、処理は工程８２におけるプログラム完了をもって終了する。工程７８において肯定である場合、処理はプログラミングが次のＥＣＣセグメントに進行することによって、工程８０により継続する。工程５６において、答えが、検証に合格しなかった、すなわち、否定である場合、工程５８においてプログラミングパルスが印加され、パルスカウントがインクリメントされる。事実上、工程７８が次の工程である場合、そのセグメントのプログラミングは成功と考えられる。
【００１４】
その後、工程６０においてプログラム検証が実行され、正常検証レベルＶｇｐにおいて検証が行われる。この工程は、正常検証に関する不合格ビットの数（Ａ）を識別する。工程６２において、不合格ビットの数が０である場合、これは現在のＥＣＣセグメントがプログラムに成功したことを意味するが、処理はそれ以上プログラムすべきＥＣＣセグメントがない場合の工程７８、およびその後の工程８２、ならびにさらにプログラムすべきＥＣＣセグメントがある場合の工程７８、およびその後の工程８０によって継続する。工程６０における正常プログラム検証から少なくとも１つの不合格ビットがある場合、処理は工程６４に継続し、緩和プログラム検証の実行を開始する前に、所定数のパルスに達したか否かが判定される。そうでない場合、処理は工程５８に継続し、別のプログラムパルスが印加される。所定数のパルスに達している場合、次の工程は工程６６である。工程６６が、工程６０における正常プログラム検証からただ１つの不合格ビットがあり、すなわちＡ＝１であると判定する場合、次の工程は工程８４であり、ここで、プログラム検証レベルが低減されたレベルＶｇｒに緩和され、その緩和プログラム検証レベルにおいてプログラム検証が実行される。工程６６において判定されるものとして正常プログラム検証から２つ以上の不合格ビットがある場合、工程６８において、最大パルスカウントに達したか否かが判定される。所定のパルスカウントは最大パルスカウントよりも小さい。最大パルスカウントに達していない場合、処理は工程５８において別のプログラミングパルスを印加することによって継続する。最大パルスカウントに達した場合、プログラミングは工程７２において失敗している。
【００１５】
工程６６において肯定であり、現在のセグメントに正常検証レベルＶｇｐに不合格となった１ビットがあるために処理が工程８４によって継続する場合について、検証レベルはレベルＶｇｒに低減される。緩和プログラム検証からの不合格ビットの数（Ｂ）を得ることによって、緩和検証レベルＶｇｒにおいてそのビットが依然として不合格であるか否かについて判定が行われる。そうである場合、工程８６においてＢ＝１が真であり、これは、正常プログラム検証および緩和プログラム検証の両方を下回る単一ビットがあることを意味する。この状況の一例が、図３におけるビット３８である。処理は、工程８８において、ＥＣＣレコード１６をチェックすることによってこのセグメントに対してＥＣＣ訂正が行われているか否かが判定されることによって継続する。そうでない場合、セグメントは合格とみなされ、これはＥＣＣに依拠して正常読出動作中に単一の不合格ビットを補正することができるために可能であることだが、処理は工程７８、およびその後の工程８０または工程８２のいずれかによって継続する。工程８８における判定が、現在のＥＣＣセグメントにおいてＥＣＣ訂正が行われているというものである場合、次の工程は、工程８９における最大パルスカウントに達しているか否かの判定である。そうでない場合、処理は工程５８において別のプログラミングパルスを印加することによって継続する。ＥＣＣ回路がすでに使用されて別の単一ビット問題が訂正されており、それによって、もはや現在のＥＣＣセグメント上で単一のスロー・トゥ・プログラム不合格ビットを訂正するためにＥＣＣに依拠しなくてもよいため、このようになる。従って、単一の不合格ビットを正常プログラム検証レベルを上回って動かすためにプログラムパルスを印加し続けることが必要である。工程８６においてＢ＝０である場合、処理は工程８９において最大パルスカウントされたか否かの判定によって継続する。そうでない場合、工程５８において別のプログラミングパルスが印加される。工程８９において最大パルスに達している場合において、工程６２においてＡ＝１であり、かつ工程８６においてＢ＝０である場合、これは正常プログラム検証を下回るが緩和プログラム検証を上回る単一ビット、たとえば、図２におけるビット３４があることを意味するが、工程７４において現在のセグメントに対してＥＣＣ訂正が行われているか否かがさらに判定される。そうである場合、工程７２においてプログラミングは失敗している。現在のＥＣＣセグメントに対してＥＣＣ訂正が行われていない場合、そのセグメントは合格であり、その後工程７８から工程８０または８２のいずれかへと続く。
【００１６】
実際の訂正についてはセグメントレベルであるが、利用可能なＥＣＣ訂正がセグメントレベルにおいてではなくブロックレベルにおいて利用されてもよい。たとえば、ブロック内で行われたＥＣＣ訂正の総数が重要であり得る場合があってもよい。従って、単純にＥＣＣ訂正が行われていないと判定する代わりに、ブロック全体において行われたＥＣＣ訂正の総数を判定することも有益な場合がある。
【００１７】
従って、メモリブロックは、単一の不合格ビットの最も可能性のある状況を知ることを利用し、利用可能なＥＣＣを利用するプログラム動作全体を経験している。これはセグメントレベルにおいて特に当てはまる。たとえば、セグメントは６４ビットのデータを有し、対応するＥＣＣは８ビットであってもよい。別様にＥＣＣが必要とされることにならず、かつプログラム中に単一のスロービットがある場合、ＥＣＣに依拠してこの状況に対処することができる。単一のスロービットが合格する可能性が高い場合、プログラミングは最終的に合格することになるという予測をもって継続してもよい。単一のスロービットが合格する可能性がかなり低い場合、プログラム処理の継続に成功する可能性は低く、そのため、非常に高い確度でＥＣＣに依拠して誤りを訂正することができる場合、後続のプログラム工程は実行される必要がない。
【００１８】
別の手法は、プログラム検証中にＥＣＣチェックを実行せず、正常プログラム検証レベルにおいて１ビットのみが不合格であり、かつ緩和プログラム検証レベルにおいて１ビットのみが不合格である場合、または正常プログラム検証レベルにおいて１ビットのみが不合格であるがプログラムパルスカウントの数が最大プログラムパルスカウント限界に達している場合にプログラム動作は成功したとみなすことである。ＥＣＣは、不合格ビットを訂正するために依然として正常読出動作の間に実行されることになる。プログラムに失敗し、そうでなければそのセグメントのためのＥＣＣビットが必要でないただ１つのビットが存在する、任意のセグメントに関する任意のプログラミング動作に関して訂正が可能な場合がある。
【００１９】
ここまでで、複数の不揮発性メモリ（ＮＶＭ）ビットセルからなるＮＶＭビットセルのアレイを含み、当該ＮＶＭビットセルのアレイは１つ以上のブロックに分割されている、半導体メモリ記憶デバイスが提供されたことを理解されたい。半導体メモリ記憶デバイスは、ＮＶＭビットセルのアレイに結合されているメモリコントローラをさらに含む。半導体メモリ記憶デバイスは、アレイおよびメモリコントローラに結合されている誤り訂正符号（ＥＣＣ）ユニットをさらに含む。メモリコントローラは、１つ以上のブロックのうちの１つのブロックのサブセットのプログラム動作中に、第１のプログラム検証動作によって、複数のＮＶＭビットセルのうちの１つのＮＶＭビットセルのみが正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出され、かつ、第２のプログラム検証動作によって、前記１つのＮＶＭビットセルが緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出されたとき、プログラム動作を成功であるとみなすように構成されており、緩和プログラム検証電圧レベルは正常プログラム検証電圧レベルよりも低く、かつ、正常読出電圧レベルよりも高い。半導体メモリ記憶デバイスは、プログラムされているサブセットに対しＥＣＣユニットによって訂正が以前に実行されていない場合、プログラム動作は成功であるとみなされることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、プログラムパルスを含むプログラム動作中、各プログラムパルスまたはプログラムパルスのグループの後に第１のプログラム検証動作および第２のプログラム検証動作が実行されることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、メモリコントローラによって所定数のプログラムパルスが実行された後、第１のプログラム検証動作に合格しなかったＮＶＭビットセルの数のカウントが実行されることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、所定数のプログラムパルスが２〜１０個のプログラムパルスであることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、第１のプログラム検証動作によって、前記複数のＮＶＭセルのうちの１つのＮＶＭセルのみが正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出されたとき、第２のプログラム検証動作が実行されることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかった１つのＮＶＭビットセルを含む１つのブロックに対し前記ＥＣＣユニットによって訂正が以前に実行されていない場合、プログラム動作は成功とみなされることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、メモリコントローラが、１つのブロックに対するプログラム動作中、最大数のプログラムパルスに到達した場合、第１のプログラム検証動作によって、前記１つのＮＶＭビットセルのみが正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出され、第２のプログラム検証動作によって、複数のＮＶＭビットセルの全てが緩和プログラム検証電圧レベルにおいて成功裏にプログラムされたことが検出されたとき、プログラム動作は成功であるとみなすように構成されていることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかった１つのＮＶＭビットセルを含むサブセットに対しＥＣＣユニットによって訂正が以前に実行されていない場合、メモリコントローラによってプログラム動作は成功であるとみなされることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかった１つのＮＶＭビットセルを含む１つのブロックに対しＥＣＣユニットによって訂正が以前に実行されている場合、プログラム動作は成功していないとみなされることをさらに特徴としてもよい。半導体メモリ記憶デバイスは、不揮発性メモリに記憶されている１つ以上のＥＣＣインジケータを含むＥＣＣレコードをさらに含んでもよく、ＥＣＣインジケータのうちの１つはサブセットに対し割り当てられており、そのサブセットに対してＥＣＣ訂正が実行されたか否かを示す。
【００２０】
半導体メモリデバイスをプログラミングする方法も開示される。方法は、複数の不揮発性ビットセルからなる不揮発性ビットセルのアレイのサブセットに対してプログラム動作を実行する工程と、最大数のプログラムパルスに到達した際、プログラム動作中、第１のプログラム検証動作によって、複数の不揮発性ビットセルのうちの１つの不揮発性ビットセルのみが正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出され、第２のプログラム検証動作によって、複数のＮＶＭビットセルの全てが緩和プログラム検証電圧において成功裏にプログラムされたことが検出された場合、プログラム動作を成功として指定する工程とを備え、緩和プログラム検証電圧レベルは正常プログラム検証電圧レベルよりも低い。方法は、プログラム動作中、第１のプログラム検証動作によって、複数の不揮発性ビットセルのうちの１つの不揮発性ビットセルのみが正常プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出され、かつ第２のプログラム検証動作によって、前記複数の不揮発性ビットセルのうちの１つの不揮発性ビットセルが緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかったことが検出されたとき、プログラム動作を成功として指定する工程をさらに備えてもよい。方法は、プログラムされている不揮発性ビットセルのサブセットに対して誤り訂正符号（ＥＣＣ）訂正が以前に実行されていない場合、プログラム動作を成功として指定する工程をさらに備えてもよい。方法は、緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかった１つの不揮発性ビットセルを含むサブセットに対しＥＣＣユニットによって訂正が以前に実行されていない場合、プログラム動作は成功であるとみなされ、プログラム動作中、各プログラムパルスまたはプログラムパルスのグループの後に第１のプログラム検証動作および第２のプログラム検証動作が実行されることをさらに特徴としてもよい。方法は、正常プログラム検証電圧レベルおよび緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかったビットセルを含む不揮発性ビットセルのサブセットに対して誤り訂正符号（ＥＣＣ）訂正が以前に実行されていない場合にプログラム動作を成功として指定する工程をさらに備えてもよい。方法は、緩和プログラム検証電圧レベルおよび緩和プログラム検証電圧レベルにおけるプログラム検証に合格しなかった１つの不揮発性ビットセルを含むサブセットに対して誤り訂正符号（ＥＣＣ）ユニットが以前に訂正を実行していない場合、プログラム動作を成功として指定する工程をさらに備えてもよい。
【００２１】
不揮発性半導体メモリデバイスをプログラミングする方法も開示される。方法は、プログラム動作中にプログラム検証に合格しなかったビットセルの数を求める工程を備え、ビットセルは複数のビットセルからなるビットセルのアレイにおけるビットセルのサブセットに含まれる。方法は、そのビットセルのサブセットに関して誤り訂正符号（ＥＣＣ）訂正が以前に実行されているか否かを判定する工程をさらに備える。方法は、所定数のプログラムパルスの後のプログラム検証に合格しなかったビットセルの数が閾値数を下回り、かつＥＣＣ訂正がそのビットセルのサブセットに関して実行されていない場合、プログラム動作を成功とみなす工程をさらに備える。方法は、ビットセルのサブセットに対するプログラム動作中、第１のプログラム検証動作によって、正常プログラム検証電圧レベルにおけるプログラム検証に所定数のビットセルが合格しなかったことが検出され、かつ第２のプログラム検証動作によって、緩和プログラム検証電圧レベルにおけるプログラム検証に別の所定数のビットセルが合格しなかったことが検出されたとき、プログラム動作を成功として指定する工程をさらに備えてもよい。
【００２２】
本明細書において、具体的な実施形態を参照して本発明を説明したが、添付の特許請求の範囲に明記されているような本発明の範囲から逸脱することなくさまざまな改変および変更を為すことができる。たとえば、同時にプログラムされるセグメントの数は変化してもよい。従って、本明細書および図面は限定的な意味ではなく例示とみなされるべきであり、すべてのこのような改変が本発明の範囲内に含まれることが意図されている。本明細書において具体的な実施形態に関して記載されているいかなる利益、利点、または問題に対する解決策も、任意のまたはすべての請求項の重要な、必要とされる、または基本的な特徴または要素として解釈されるようには意図されていない。
【００２３】
本明細書において使用される場合、「結合されている」という用語は、直接結合または機械的結合に限定されるようには意図されていない。
さらに、本明細書において使用される場合、「１つ（“ａ”ｏｒ“ａｎ”）」という用語は、１つまたは２つ以上として定義される。さらに、特許請求の範囲における「少なくとも１つの」および「１つ以上の」のような前置きの語句の使用は、不定冠詞「１つの（“ａ”ｏｒ“ａｎ”）」による別の請求項要素の導入が、このように導入された請求項要素を含む任意の特定の請求項を、たとえ同じ請求項が前置きの語句「１つ以上の」または「少なくとも１つの」および「１つの（“ａ”ｏｒ“ａｎ”）」のような不定冠詞を含む場合であっても、１つだけのこのような要素を含む発明に限定することを暗示するように解釈されるべきではない。同じことが、定冠詞の使用についても当てはまる。
【００２４】
別途記載されない限り、「第１の」および「第２の」のような用語は、そのような用語が説明する要素間で適宜区別するように使用される。従って、これらの用語は必ずしも、このような要素の時間的なまたは他の優先順位付けを示すようには意図されていない。
【図１】
2014096196.tif 000003
【図２】
2014096196.tif 000004
【図３】
2014096196.tif 000005
【図４】
2014096196.tif 000006