以下において、本発明の実施の形態について図面を参照して詳しく説明する。なお、図中同一符号は同一または相当部分を示す。
[実施の形態1]
図1は、本発明の不揮発性半導体記憶装置1の構成を示したブロック図である。
図1を参照して、不揮発性半導体記憶装置1は、外部から与えられるデータ信号DIN、アドレス信号ADRおよびコマンド信号CMDを受け内部ブロックに分配するコマンドユーザインターフェイス部2と、コマンドユーザインターフェイス部2からの指示に応じて内部クロックICLKを発生する内部クロック発生部4と、コマンドユーザインターフェイス部2からコマンド信号CMDを受け、内部クロック発生部4から内部クロック信号ICLKを受けて、不揮発性半導体記憶装置1の全体制御を行なうCPU(中央演算ユニット)6と、CPU6との間でデータをやり取りするリードオンリーメモリ(ROM)8とを含む。
不揮発性半導体記憶装置1は、さらに、電源回路12と、CPU6の指示に従って電源回路12を制御する電源制御回路10と、電源回路12において発生される高電圧や、負電圧を電源制御回路10を経由して与えられるアドレス信号ADRに応じて分配するデコーダ14とを含む。
不揮発性半導体記憶装置1は、さらに、ページバッファ18と、ベリファイ回路16と、メモリセルアレイ20とを含む。
ベリファイ回路16は、消去時には、メモリセルアレイに消去パルスを印加した後に、メモリセルアレイのデータを読出し、消去が完了しているか否かを確認する。また、ベリファイ回路16は、書込時には、外部から与えられるデータ信号DINとメモリセルアレイの保持データの読出結果とを比較して、プログラムパルスを印加する必要があるか否かを判断する。
ページバッファ18は、緩衝記憶部であり、一時的にデータを保持する。ページバッファ18には、書込時にベリファイ回路16を経由して最初に書込データがセットされ、その後続いてベリファイ回路16によって比較された結果が書込まれる。
メモリセルアレイ20は、複数のメモリブロックを含む。ROM8に記録されたソフトウェアの命令により、CPU6が、電源制御回路10に制御信号を送り電源回路12を制御する。具体的には、電源制御回路10は、電源回路12内にある図示しないチャージャポンプ回路に対して目標電圧値を設定し、チャージャポンプ回路は、その目標電圧値に応じた電圧を発生させる。ここで発生した電圧を、最終的にメモリセルアレイ中のメモリブロックに一括して印加することで、FN(Fowler-Nordheim)トンネル現象を起こさせる。このような電圧印加を消去パルスの印加ということにする。
図2は、本発明の不揮発性半導体記憶装置1のブロック消去の制御を説明するためのフローチャートである。
図2を参照して、所定の消去コマンドが入力されブロック消去動作が開始されると、まずステップS1において変数の読込が行なわれる。
図3は、図2のステップS1で読込まれる変数について説明するための図である。
図3を参照して、変数Xはパルス印加回数であり、たとえば13回のように設定される。変数ΔV1は、消去パルスの電圧の増分値を示し、たとえば0.1,0.1,0.2…(V)のような配列が設定される。変数ΔV1は、配列ではなくて0.1(V)固定でもよい。変数ΔV2は、消去パルスの電圧の増分値を示し、たとえば0.2,0.3,0.5…(V)のような配列が設定される。変数ΔV2は、配列ではなくて0.2(V)固定でもよい。
変数Aはパルス幅を示し、たとえば2(ms)のような値が設定される。変数Bはパルス幅を示し、たとえば3(ms)のような値が設定される。変数Kは、パルス連続印加回数を示し、たとえば2(回)のような値が設定される。変数Δtはパルス幅の増分値を示し、たとえば1,1,1…(ms)のような配列が設定される。このように各種パラメータを変数にして読込むようにしておけば、メモリトランジスタの特性が異なる場合等でも変数を変更するだけで対応することが可能となる。
再び図2を参照して、ステップS1の変数の読込が終了すると、続いて、ステップS2に進む。ステップS2では、パルス印加回数やパルス電圧の初期化が行なわれる。そしてステップS3に進む。ステップS3では、消去ベリファイが行なわれる。消去ベリファイでは、図1のベリファイ回路16がメモリセルアレイ20からデータを読出すことにより、消去が完了しているか否かが判断される。そして、ステップS3において消去ベリファイがフェイルとなると、ステップS4に進み、後に詳しく説明する消去パルスの印加が行なわれる。そしてステップS3に再び戻り、消去ベリファイが行なわれる。
ステップS3において、消去ベリファイがパスすると、ブロック消去動作が終了する。
図4は、図2における消去パルス印加を行なうステップS4の動作を詳細に説明するためのフローチャートである。
図4を参照して、ステップS4の消去パルス印加動作がスタートすると、まずステップS11においてパルス印加回数nがXより小さいか否かが判断される。Xは、図3の変数の説明の例では、たとえば13回であった。ステップS11において、パルス印加回数nが変数Xよりも小さい場合には、ステップS12に進み、パルス幅固定(A)で、パルス電圧Vでパルス印加が行なわれる。そしてステップS13に進み、パルス電圧Vを1ステップ増加するように設定される。
図5は、消去パルスの印加が繰返される経過を説明するための波形図である。
変数Xが13である場合には、パルス印加回数nが12回までは、パルス幅が固定のA(たとえば2ms)に設定され、かつ1回ごとにパルス電圧が増加される。たとえばこのパルス電圧の増加は、図2に示されるように変数ΔV1として保持されている配列によって定められる。また配列でなくても、増分を固定値にしておいてもよい。
再び図4を参照して、ステップS13が終了すると、ステップS20に進み、パルス印加回数nが1増加される。そして図2に示されるようにパルス印加が終了すると、再びステップS3の消去ベリファイが行なわれる。このようにパルス印加回数がXを超えるまでは、ステップS11、S12、S13、S20の順でパルス印加が繰返される。これは図5において前半パルスとして記載されている部分に相当する。
ステップS11においてパルス印加回数nがXよりも小さくない場合には、ステップS14に進み、パルス電圧Vが最大電圧Vmaxとなっているか否かが判断される。パルス電圧Vがまだ最大電圧Vmaxに到達していない場合には、ステップS15に進み、パルス幅固定(B)でパルス電圧Vでパルス印加がなされ、ステップS16に進み、パルス電圧Vが1ステップ増加される。ステップS16が終了すると、ステップS20に進みパルス印加回数nのインクリメントがなされる。
ステップS15、S16を通過する処理経路は、図5における後半パルスの印加に相当する。後半パルスの印加では、たとえば図3に示されるように、パルス幅を示す変数Bが3msに設定されるときには、3msのパルス幅でパルス電圧が最大電圧に到達するまでパルスが印加されていく。
再び図4を参照して、ステップS14において、パルス電圧Vが最大電圧Vmaxに到達した場合には、ステップS17に進む。ステップS17では、現在のパルス幅でK回印加したか否かが判断される。図5の波形はKが2である場合の例である。まだK回印加していない場合には、ステップS18に進み現在のパルス幅でもう一度パルス電圧Vmaxを印加する。ステップS18が終了すると、ステップS20に進みパルス印加回数nがインクリメントされる。
一方ステップS17において、現在のパルス幅でK回印加したと判断された場合には、ステップS19に進み、パルス幅を1ステップ分増加させる。そしてパルス電圧Vmaxを印加する。ステップS19が終了すると、ステップS20に進みパルス印加回数nがインクリメントされる。
図5に示すように、ステップS18、S19を通過する経路は、最大電圧到達後まずパルス幅3msで2回パルスが印加され、次に最大電圧においてパルス幅4msで2回パルスが印加され、また、続いて最大電圧において、パルス幅5msで2回パルスが印加されるパルス印加動作に相当する。このように、最大電圧Vmaxを超えるまではパルス印加電圧を増加させない。これは、図1における電源回路から、デコーダを介してメモリセルアレイ20に電圧を印加する経路の、トランジスタの耐圧を超えないようにするためである。
図6は、パルス幅一定のままパルス印加を行なった場合の、メモリセルのしきい値電圧の変化を示す図である。
図7は、図5に示すような波形を印加した場合のしきい値電圧の変化を示す図である。
図6、図7を参照して、パルス幅を固定にして印加をし続ける場合には、図6に示すように、最大電圧に印加パルスの電圧値が到達した後には、しきい値電圧の変化はパルス印加回数に対してリニアではなくなってしまう。一方、図5に示すように、最大電圧到達後は、1回当たりのパルス幅を徐々に長くしていくようにすれば、最大電圧にパルス電圧が到達した後にも、しきい値電圧の変化を図6の場合よりもリニアに近づけることができる。したがって、ブロック消去時間を短縮することができ、高速に消去可能で、効率よく動作可能な不揮発性半導体記憶装置を提供することができる。
[実施の形態2]
図8は、過消去状態を解消するオーバーイレースリカバリ(OER)動作を説明するための図である。
図8を参照して、プログラム状態にありしきい値が高くなっているメモリブロック中のメモリセルに一括して消去パルスを印加すると、しきい値電圧が小さくなる方にメモリセルのしきい値電圧の分布が移動する。メモリブロック中のすべてのメモリセルが、しきい値電圧Vth以下にそのしきい値が変化するまで消去パルスを一括して印加すると、消去時のしきい値電圧の下限であるしきい値電圧Vth1よりも、しきい値電圧が小さくなってしまうメモリセルが存在してしまう。このようなメモリセルを過消去ビットと呼ぶと、この過消去ビットをメモリセルのビットごとに、チャネルホットエレクトロン(CHE)を発生させて、しきい値電圧Vth1よりもしきい値電圧が大きくなるように、所定のしきい値電圧の分布内に戻すための動作がある。この動作をオーバーイレースリカバリ(以下OER)と呼ぶ。
図9は、OER時の電圧印加状態を説明するための図である。
図9を参照して、メモリセルトランジスタのソース電位Vsは0Vに設定される。基板電位Vsubは負電位、たとえば−1.2Vに設定される。ドレイン電位は正電位、たとえば+4.8Vに設定される。
この状態で制御電極(コントロールゲートとも称する)の電位Vcgをたとえば2V程度に設定すると、しきい値電圧が小さいメモリセルトランジスタについては、多くのドレイン電流Idが流れ、一方しきい値電圧が比較的高いトランジスタにおいては、ドレイン電流Idはほとんど流れない。複数のメモリセルトランジスタに対してこのような電圧印加を同時に行なうと、しきい値電圧が低いメモリセルトランジスタに対して選択的にしきい値電圧の変化が生ずることになる。このようにドレイン電流を流して、チャネルホットエレクトロンを発生させしきい値電圧を上昇させることは、ビットごとに精度よく制御ができるという利点がある。しかし、ドレイン電流が大きいため、ブロック一括にこのようなチャネルホットエレクトロンによる書込を施すことはできない。
一方、消去パルスを印加する場合には、FNトンネル電流を基板から浮遊ゲート(フローティングゲートとも称する)に向けて流し、しきい値電圧を変化させる。このFNトンネル電流の電流値はさほど大きくないため、メモリブロックに対して一括して消去や書込を行なうことができるが、さほど精度よく書込むことはできない。精度よく書込を行なうためにブロックよりも小さな単位で電流を印加しようとすると、印加単位ごとにメモリセルを形成するウェルを分離する必要があるので、メモリセルアレイのレイアウト面積が大きくなってしまい現実的ではない。
図10は、実施の形態2のOER動作においてパルスの印加を説明するための図である。
図10を参照して、通常、OER動作では、パルスをビットごとに印加してその都度ベリファイ動作を行ない、しきい値電圧が所定の電圧よりも高くなったか否かを確認して、さらにパルスを印加するか否かを決めていた。しかし、先に説明したように、制御電極の電位Vcgを超えてまでしきい値電圧がシフトすることはない。これはドレイン電流がしきい値電圧の上昇により流れなくなってしまうので、チャネルホットエレクトロンが発生しなくなるからである。したがって、時間の短縮のために、パルスの印加ごとのベリファイ動作は行なわない。
図10に示すように、ターゲット時間に達するまでパルスを印加し続け、そしてターゲット時間に達するとパルスの印加を停止させるのがよい。1回目のパルス印加により、P1に示されるようにしきい値電圧は上昇する。2回目のパルス印加時P2においては、パルス印加時P1ほどはしきい値電圧の変化はない。そしてターゲット時間に相当する回数印加時のPmaxにおいては、しきい値電圧の変化はほとんど起こらなくなる。
そして、さらに実施の形態2においては、消去時間の短縮のため、OER動作においては、複数のビットに対して同時にパルスを印加する。ドレイン電流をブロック一括で流すことは、電流供給能力の都合上困難であるが、数ビット程度であればドレイン電流を流すことが可能だからである。
図11は、実施の形態2における複数ビット選択の構成を説明するためのブロック図である。
図11を参照して、CPU6は、複数ビットを選択するための制御信号MM1〜MM3をデコーダ14に対して出力する。デコーダ14はアドレス信号A0〜A22と制御信号MM1〜MM3とを受けて、ワード線WL、セレクトゲート線SGおよびメインビット線MBLを選択し、メモリセルアレイ20の中でOERを行なうメモリセルを指定する。
図12は、メモリセルアレイ20中のメモリブロックを概略的に示した回路図である。
図12を参照して、メインビット線MBL、1本当たりの構成について説明する。
メモリセルアレイ20は、選択用のトランジスタ22,24,26,28を含む。選択用のトランジスタ22,24,26,28は、セレクトゲート線SG0〜SG3に応じてそれぞれビット線BL0〜BL3を選択する。
メモリセルアレイ20は、さらに、ソース線SLに各々のソースが接続され、ビット線BL0に各々のドレインが接続され、ワード線WL0,WL1,WL2,WL3に、それぞれのゲートが接続されるメモリトランジスタ30,31,32,33を含む。メモリトランジスタは、コントロールゲートと基板との間にフローティングゲートを挟んだ2層ゲートMOSトランジスタである。
メモリセルアレイ20は、さらに、ソース線SLに各々のソースが接続され、ビット線BL0に各々のドレインが接続され、ワード線WL252,WL253,WL254,WL255に、それぞれのゲートが接続されるメモリトランジスタ36,37,38,39を含む。
メモリセルアレイ20は、さらに、ソース線SLに各々のソースが接続され、ビット線BL1に各々のドレインが接続され、ワード線WL0,WL1,WL2,WL3に、それぞれのゲートが接続されるメモリトランジスタ40,41,42,43を含む。
メモリセルアレイ20は、さらに、ソース線SLに各々のソースが接続され、ビット線BL1に各々のドレインが接続され、ワード線WL252,WL253,WL254,WL255に、それぞれのゲートが接続されるメモリトランジスタ46,47,48,49を含む。
メモリセルアレイ20は、さらに、ソース線SLに各々のソースが接続され、ビット線BL2に各々のドレインが接続され、ワード線WL0,WL1,WL2,WL3に、それぞれのゲートが接続されるメモリトランジスタ50,51,52,53を含む。
メモリセルアレイ20は、さらに、ソース線SLに各々のソースが接続され、ビット線BL2に各々のドレインが接続され、ワード線WL252,WL253,WL254,WL255に、それぞれのゲートが接続されるメモリトランジスタ56,57,58,59を含む。
メモリセルアレイ20は、さらに、ソース線SLに各々のソースが接続され、ビット線BL3に各々のドレインが接続され、ワード線WL0,WL1,WL2,WL3に、それぞれのゲートが接続されるメモリトランジスタ60,61,62,63を含む。
メモリセルアレイ20は、さらに、ソース線SLに各々のソースが接続され、ビット線BL3に各々のドレインが接続され、ワード線WL252,WL253,WL254,WL255に、それぞれのゲートが接続されるメモリトランジスタ66,67,68,69を含む。
図13は、図11におけるデコーダ14の構成を示した回路図である。
図13を参照して、デコーダ14は、アドレス信号A5,A7に応じてセレクトゲート線SG0〜SG3を活性化するビット線デコード回路82と、アドレス信号A6,A8に応じてワード線WL0〜WL3を選択するワード線デコード回路84とを含む。
ビット線デコード回路82は、図示しないプリデコード回路でプリデコードされた信号を制御信号MM1でマスクして、セレクトゲート線SG0〜SG3を一括して活性化することができるゲート回路86を含む。
ゲート回路86は、プリデコード信号/A5・/A7と制御信号MM1とを受けて、セレクトゲート線SG0を活性化するOR回路90と、プリデコード信号A5・/A7と制御信号MM1とを受けて、セレクトゲート線SG1を活性化するOR回路91と、プリデコード信号/A5・A7と制御信号MM1とを受けて、セレクトゲート線SG2を活性化するOR回路92と、プリデコード信号A5・A7と制御信号MM1とを受けて、セレクトゲート線SG3を活性化するOR回路93とを含む。
ワード線デコード回路84は、グローバルワード線GWL0が選択されたときに、選択信号SL0〜SL3に応じてワード線WL0〜WL3をそれぞれ選択するワード線ドライバ98と、アドレス信号A6,A8および制御信号MM2,MM3に応じて選択信号SL0〜SL3を出力するゲート回路96とを含む。
ゲート回路96は、アドレス信号/A6と制御信号MM2とを受けるOR回路100と、アドレス信号A6と制御信号MM2とを受けるOR回路101と、アドレス信号/A6と制御信号MM2とを受けるOR回路102と、アドレス信号A6と制御信号MM2とを受けるOR回路103とを含む。
ゲート回路96は、さらに、アドレス信号/A8と制御信号MM3とを受けるOR回路110と、アドレス信号/A8と制御信号MM3とを受けるOR回路111と、アドレス信号A8と制御信号MM3とを受けるOR回路112と、アドレス信号A8と制御信号MM3とを受けるOR回路113とを含む。
ゲート回路96は、さらに、OR回路100の出力と110の出力とを受けて選択信号SL0を出力するAND回路120と、OR回路101の出力と111の出力とを受けて選択信号SL1を出力するAND回路121と、OR回路102の出力と112の出力とを受けて選択信号SL2を出力するAND回路122と、OR回路103の出力と113の出力とを受けて選択信号SL3を出力するAND回路123とを含む。
図12、図13からわかるように、制御信号MM1が活性化されるとセレクトゲート線SG0〜SG3が一括して活性化されることにより、4本のビット線が同時に選択され、これに書込データが伝達される。
また、制御信号MM2がHレベルで、かつ、制御信号MM3がLレベルの場合には、アドレス信号A6にかかわらずアドレス信号A8がHレベルの場合にはワード線WL2,WL3が同時に選択される。また、アドレス信号/A8がHレベルの場合にはワード線WL0,WL1が同時に選択される。
制御信号MM2,MM3がともにHレベルに選択されると、選択信号SL0〜SL3はHレベルにすべて活性化され、グローバルワード線GWL0が選択されたときには、ワード線WL0〜WL3が一括して選択される。このように、制御信号MM1〜MM3を制御することにより、OER時に選択するメモリセルの数を変えることができる。メモリセルの電流特性と電源回路からの電源電流供給能力とのバランスにより、一度に選択できるセルの数が変わる。これに対応するため、マルチ選択するメモリトランジスタの数をCPUからの命令により自由に変更可能にしている。
また、選択数の設定は、制御信号MM1〜MM3を変化させることにより、出力が16ビットの場合つまりデータ出力端子が16の場合には次のように変化させることができる。
まず、制御信号MM1〜MM3がすべてLレベルの場合には、1ワード、すなわち1つの出力端子当たり1つのメモリトランジスタに対してOER動作が行なわれる。これは通常のOERと同じであり、時間はかかるが、電源回路の電流供給能力に余裕があるので、確実にしきい値電圧をシフトさせることができる。
次に、制御信号MM1をHレベルに設定し、制御信号MM2,MM3はLレベルに設定した場合には、4ワードマルチ選択が可能となる。この場合には、OER動作におけるアドレスインクリメントとして、アドレス信号ビットA<14:8>,A<6>,A<4:0>を順次インクリメントする必要がある。
制御信号MM1,MM2をHレベルに設定し、制御信号MM3をLレベルに設定した場合には、8ワードのマルチ選択が可能となる。この場合には、アドレスのインクリメントはアドレス信号ビットA<14:8>,A<4:0>を順次インクリメントする。
制御信号MM1〜MM3をすべてHレベルに設定すると、16ワードのマルチ選択が可能となる。この場合には、アドレス信号ビットA<14:9>,A<4:0>を順次インクリメントする。これらすべてのアドレスインクリメント方法は、ROM8に格納されているソフトウェアのコードがCPU6に読込まれることによって制御される。
図14は、実施の形態2のブロック消去の制御を説明するためのフローチャートである。
図14を参照して、ブロック消去が開始されると、まずステップS30において消去ベリファイが行なわれる。消去ベリファイがフェイルの場合は、図8のしきい値電圧Vth2よりもしきい値電圧が小さくなるまで、ステップS31において消去パルスの印加がメモリブロック全体に対して一括して行なわれる。この場合の消去パルスの印加は、FNトンネル電流によるしきい値電圧の変化を引起す。
ステップS30において消去ベリファイがパスすると、ステップS32に進み初期設定動作が行なわれる。この初期設定動作では、OERパルスの印加回数の最大数MAXの設定や、制御信号MM1〜MM3の設定などが行なわれる。
そして、ステップS33に進みOERパルスの印加回数nがターゲット時間に対応する回数MAXに一致するか否かが判断される。まだ回数がMAXに至っていない場合にはステップS34に進み、図10におけるP1に示すように、オーバーイレースリカバリ書込パルスの印加がなされてしきい値電圧が上昇する。そして、ステップS35に進みOERパルス印加回数nインクリメントがなされ、ステップS33に戻る。
このようにステップS33〜ステップS35が、図10のターゲット時間に相当するまで繰返される。印加回数がMAXに達し、過消去となったビットのしきい値電圧がしきい値電圧の下限値付近に変化したと想定されると、ステップS36に進み過消去ベリファイが行なわれる。メモリセルトランジスタの特性にばらつきがあるため、過消去ベリファイがフェイルする場合もあり、このときにはもう一度ステップS32に戻り、所定回数のOER書込パルスの印加がなされる。
一方、ステップS36で過消去ベリファイがパスすると、ステップS37に進みOER処理を行なったビットのアドレスが最終であるか否かが判断される。まだアドレスが最終でない場合にはステップS38に進み、アドレスのインクリメントがなされる。このとき、制御信号MM1〜MM3の設定によってインクリメントするビットが異なる。アドレスのインクリメントがなされると、ステップS32に進み再びOERパルスの印加がなされる。
ステップS37においてアドレスが最終であった場合には、ステップS39に進み消去ベリファイが行なわれる。消去ベリファイがパスすると終了し、フェイルするとフェイルエンドとなる。
なお、ステップS30とステップS32の間に、過消去ビットのしきい値電圧をブロック一括で少し大きくするソフトフラッシュプログラム動作を行なってもよい。
通常のOER動作では、まずすべてのアドレスに対して過消去となっているか否かベリファイを行なって、必要なビットにのみOERパルスを印加する。したがって、すべてのアドレスに対してベリファイを行なうので、この分時間を多く要してしまう。さらに、ベリファイでフェイルしたビットに対してOERパルスをかけるので、フェイルビットの数が増加するにつれ1ビットずつのパルス印加時間が増加し、ブロック消去全体として時間が長くなってしまい、最悪なケースでは消去タイムオーバーでチップがフェイルになる場合もある。
それに対して実施の形態2で説明したOER動作では、複数ビットを選択して過消去リカバリパルスを印加できる。これにより、図14のステップS30の消去ベリファイがパスした後には過消去ベリファイなしで、すべてのメモリセルを対象として一度に複数個ずつ選択してOERパルスを印加することで、ブロック消去時間を短縮することができる。
さらに、一度に選択できるメモリセルの数を、制御信号MM1〜MM3で変更することができ、かつ、ターゲット時間も初期設定で変数MAXを変えることで変更することができるので、特性が異なるフラッシュメモリに対しても、変数を変更することのみで対応することができる。
とくに、制御信号MM1=Hとし、SG0〜SG3を全部選択した場合を基本とすると、それ以上選択数を増やす場合には、メインビット線を複数選択してメモリカラムをさらに多重に選択する方法と、ワード線を複数選択してメモリロウを多重に選択する方法とが考えられる。しかし、メインビット線を複数選択する方法では、メモリセルに流す電流の和が大きくなりすぎるという問題がある。したがって、さらに選択数を増やす場合はメモリカラムを追加で選択するのではなく、制御信号MM2,MM3によってワード線を多重に選択している。
つまり、追加のマルチ選択をビット線側で行なわずワード線側で行なっているのは、セレクトゲート22〜28のサイズによってもともと電流が絞られているためセレクトゲート22〜28での電圧降下を考えると、ビット線をさらにマルチ選択するよりもワード線をマルチ選択することで全体の電流を減らしたほうが得策となるからである。
[実施の形態3]
実施の形態3は、チャネルホットエレクトロン書込方法によってフローティングゲートへ電子を蓄積し、メモリトランジスタのしきい値を制御することにより情報を記憶する不揮発性半導体記憶装置において、電圧の印加方法の変更により制御の安定化を図るものである。
不揮発性半導体記憶装置におけるしきい値電圧制御動作の1つに、チャネルホットエレクトロン注入方法がある。
図15は、チャネルホットエレクトロンの注入について説明するための図である。
図15を参照して、メモリトランジスタのソースを0Vに設定し、ドレインに電圧Vdを印加し、制御電極に電位Vcgを印加すると、ドレインからソースに向けてドレイン電流が流れる。そしてその際の電子の一部がフローティングゲートに注入される。これがチャネルホットエレクトロン注入である。この場合、フローティングゲート側へ移動させるための電子を、チャネル領域のドレイン側近傍に十分に生成させるように、ドレインとソースとの間に十分な電位差を与える必要がある。
図16は、メモリトランジスタの縮小に伴い、セレクトトランジスタも縮小されることを説明するための図である。
図16を参照して、微細化によるメモリトランジスタサイズの縮小に伴い、メモリトランジスタのドレインに電圧を供給する側のトランジスタ、すなわちセレクトトランジスタのサイズも縮小される。セレクトトランジスタのサイズが縮小されると、メモリトランジスタのドレインへの電圧供給能力が低下する。すなわち電流が流れると、抵抗値が大きいため電圧降下が大きくなってしまう。したがって、メモリトランジスタの縮小を行なう前の状態で行なっていた制御方法と同様な方法で、ソースドレイン間に電流を流すと、メモリトランジスタのドレイン電圧が降下してしまうという不具合が生じる。
図17は、メモリトランジスタとセレクトトランジスタの断面を示した模式図である。
図17を参照して、サイズ縮小により、セレクトトランジスタの抵抗が増大すると、セレクトトランジスタの抵抗値による電圧降下も大きくなる。セレクトトランジスタに与えるドレイン電圧STrVdに対して、メモリトランジスタに印加されるドレイン電圧MTrVdが低下してしまい、メモリトランジスタにドレイン電流が流れなくなってしまう。この場合、チャネルホットエレクトロン注入を行なうのに十分な電子を生成できず、しきい値電圧の制御が困難となる。
言い換えると、セレクトトランジスタの構造が変わると、特にチャネル幅が狭まるとオン抵抗が増大し、電圧供給能力が低下してしまう。この場合にはドレイン電流Idが一定レベルを超えると、十分な電圧MTrVdを供給できなくなる。
しきい値電圧の制御時間を長くし、メモリトランジスタのソース・ドレイン間に流れる電流を抑え、少しずつしきい値を変動させる手段もある。しかし、この制御時間については製品の仕様によってある所定の時間以内に定められているので、むやみに延ばすことはできない。したがってドレイン電圧の低下が起こらないように、メモリトランジスタのソース・ドレイン間に流れるドレイン電流を抑えながら、これまでの製品と同じ制御時間内で制御動作が完了するように、制御方法を変更する必要がある。
図18は、実施の形態3において不揮発性半導体記憶装置のコントロールゲート電位Vcgを制御する構成を説明するためのブロック図である。
図18を参照して、コマンドユーザインターフェイス部2は、制御電極に与える電位Vcgを設定するための設定値CNUMBERを発生するカウンタ140を含む。CPU6は、カウンタ140に対してリセット信号RESET、イネーブル信号C−ENABLEおよび初期値をロードするロード信号LOADおよびロードするための初期値を示す信号DSETを送出する。電源制御回路10は、カウンタ140からカウント値CNUMBERを受け、カウント値CNUMBERとCPU6からの制御信号CSIGとに基づき電源回路12に対して制御を行なう。
電源回路12は、コントロールゲート用の電位Vcgを発生する電源回路142と、ソース電圧Vs、ドレイン電圧Vdおよび基板電圧Vsubを出力する電源回路144とを含む。電源回路142は、ディテクタ146とチャージポンプ148とを含む。ディテクタ146は、内部回路150によって電源制御回路10から送られてくる数値VNUMBERをデジタル値からアナログ電圧に変換し、比較回路152によってチャージポンプ148が出力する電位Vcgと比較し、チャージポンプを制御するイネーブル信号ENABLEを発生する。
電源回路144は、電源制御回路10から指示されるタイミングに基づき電位Vd,VsおよびVsubの活性化/非活性化の制御を行なう。
図19は、書込パルスを印加の検討例を説明するためのフローチャートである。
図20は、図19に示したフローチャートに従って電圧を印加した場合の波形を示した動作波形図である。
図19、図20を参照して、書込パルスがスタートすると、まずステップS41においてVcg用カウンタ140がリセットされカウント値CNUMBERは0にリセットされる。そしてステップS42において電位Vsub,VdおよびVsの電圧印加が開始される。その結果、図20の時刻0μs〜1μs付近では、選択トランジスタのドレイン電圧STrVdおよびメモリトランジスタのドレイン電圧MTrVdは、ともに4.8Vとなっている。
続いてステップS43に進みVcg用カウンタのカウントが開始される。CPU6がイネーブル信号C−ENABLEをLレベルからHレベルに活性化することにより、カウンタ140が図示しないクロック信号に基づきカウント値CNUMBERを順次インクリメントする。そしてステップS44に進みカウンタ140のカウント値が目標値であるか否かが判断され目標値になっていなければステップS45に進みカウント値の増加がさらに続けられる。そしてステップS44においてカウント値が目標値に到達した場合にはステップS46に進みVcg用カウンタ140はカウントを停止する。これにより図20において時刻1μs付近から3μsの手前付近に示されるように電位Vcgは次第に増加してそして9V付近になると上昇を停止する。
そして図20の時刻4.75μs付近において、ステップS47における電圧印加停止がCPUから指示される。この検討例においては、図20のドレイン電流Idのピーク電流値は109μAであった。ドレイン電流Idがピークのときに、セレクトトランジスタのドレインの電位STrVdから電圧降下したメモリトランジスタのドレインの電位MTrVdの値が最も低くなってしまう。
図21は、実施の形態3の不揮発性半導体記憶装置において用いられる書込パルスの制御フローを示したフローチャートである。
図22は、図21に示したフローチャートを用いた場合の動作を説明するための動作波形図である。
図21、図22を参照して、まず書込パルスの印加動作がスタートすると、ステップS51においてVcg用カウンタ140がリセットされ、続いてステップS52において電位Vsub,VdおよびVsの印加が開始される。これにより図22の時刻0μsから1μsの間は電位Vcgは0Vであり、電位STrVdおよびMTrVdはともに4.8Vに設定される。
続いて、ステップS53においてVcg用カウンタ140に初期値がセットされる。すると時刻1μsにおいてコントロールゲート電位Vcgは引上げられ、これによりドレイン電流Idは所定の最大電流Idmaxを超えない程度まで流れる。なお、コントロールゲート電位Vcgが同じであっても、定性的には低温であるほどまたメモリトランジスタの初期のしきい値電圧が低いほど制御動作開始時のドレイン電流Idの値は大きくなる。図22で説明した場合には、これらの特性を踏まえ、図20の場合には0Vだった制御動作開始時のコントロール制御電位Vcgの初期値を4.5Vとした。
ステップS53において初期値がセットされた後には、ステップS54に進み、Vcg用カウンタのカウントが開始される。カウント開始は、CPU6によりイネーブル信号C−ENABLEが活性化されることにより行なわれる。その際に、CPU6は、カウンタの1クロック当りの増分値を示す制御信号DVを変更し、図20で示した場合より電位Vcgの傾きが変更される。
図20の場合では、メモリトランジスタのしきい値電圧の挙動に対して、印加している電位Vcgの傾きが急峻である。この場合には、まだしきい値電圧が低い状態であるのにもかかわらず高い電位Vcgがコントロールゲートに印加されるので、ドレイン電流Idがより多く流れてしまう。これに対し図22で示した場合には、電位Vcgの変化の傾きを、メモリトランジスタのしきい値電圧の挙動に合せるように緩めている。しきい値電圧の挙動(傾き)に電位Vcgの傾きを近づけておくことで、急激なドレイン電流Idの増加を抑制しつつ、制御動作開始時、制御動作中盤、制御動作終盤でほぼ同等にチャネルホットエレクトロンをフローティングゲートに注入することができる。
カウンタのカウントが開始された後には、ステップS55でカウンタのカウント値が目標値になっているか否かが判断され、目標値になっていない場合にはステップS56においてカウント値が増加される。そしてステップS55においてカウント値が目標値に到達した時には、ステップS57に進みカウンタのカウントが停止される。そしてステップS58においてVcg,Vsub,VdおよびVsの各電位の印加が停止される。
同じしきい値電圧制御方法(ここではホットエレクトロン注入)の下でも、その制御対象であるメモリトランジスタが複数になれば、ばらつきの範囲でしきい値電圧の変化に差が生ずる。同じ電圧を同じ時間印加した後であっても、複数のメモリトランジスタがあれば、その数に相当して各要素にばらつきが生ずる。この要素は、たとえばフローティングゲート内への電子の蓄積、フローティングゲート電位、メモリトランジスタのしきい値などである。
たとえば、フローティングゲート内への電子の蓄積が比較的少ないメモリトランジスタ(しきい値電圧が低い)に対して、他のメモリトランジスタと同様の電位Vcgを印加すると、ドレイン電流が必要以上に流れてしまう。したがって、チャネルホットエレクトロンを発生する効率が下がり、他のメモリトランジスタと比べるとしきい値は効率よく上昇しない。
図23は、図20に示した波形を与えた場合のしきい値電圧の変化のばらつきを説明するための図である。
図24は、図22に示した波形を与えた場合のしきい値電圧の変化のばらつきを説明するための図である。
図23、図24では、各々500K個のメモリトランジスタのしきい値電圧の変化が示されている。
図23の場合と図24の場合とでは、各メモリトランジスタ間の同じ制御時間(図の横軸)におけるしきい値電圧の差(図の縦軸)に違いが見られる。電位Vcgの上昇を緩やかにすれば、フローティングゲート内への電子の蓄積が十分でない時点でVcgの絶対値が必要以上に高すぎることはなくなり、ドレイン電流が流れすぎる現象を比較的抑えられる。
図23の場合では、標準的な変化を示すメモリトランジスタのしきい値電圧が6Vに達したときに(時刻6.4μs付近)、最も変化の遅いメモリトランジスタのしきい値は約4Vであった。両者の差が約2Vであった。
これに対し、図24に示した場合には、コントロールゲート電位Vcgの変化を緩やかにしたおかげで、この差を約1.5Vまで狭めることができている(時刻7.8μs付近)。
つまり、図23で示された数値約2.0Vに対して、図24で示された数値は約1.5Vになっており、ばらつきが抑えられるという効果がある。
このように、実施の形態3では、ランプ波形を印加できるので、書込の効率を上げることができる。つまり、コントロールゲート電位Vcgの傾きを緩やかにすることにより、しきい値電圧の変化のばらつきを抑える効果が得られ、より安定したしきい値電圧制御動作ができる。
さらに、実施の形態3では、まず基板およびドレインおよびソースに電圧を設定してその後に後からコントロールゲートに電圧を印加する。これにより、チャネル領域のドレイン側に予め電子を生成しておくことができ効率よくホットエレクトロン注入が行なえるという効果がある。
以上説明したように、実施の形態3においては、複数のメモリトランジスタ間に起こるしきい値変化のばらつきを抑えることにより、安定した書込時間の製品スペックを達成するのに有効である。また、多重レベルのプログラミングにおいてしきい値の分布幅を狭帯化させることは必須であり、これを達成するために用いても効果がある。
[実施の形態4]
実施の形態4では、ロックビットをプログラムする方法について説明する。
図25は、ロックビット説明をするための図である。
ロックビットは、メモリアレイ内に存在し、各メモリブロックに対して内部オペレーションを行なってもよいかどうかを判定するためのビットである。図25においては、ノーマル領域にはワード線WL0〜WLnとビット線BL0,BL1,…の各交点にノーマルのメモリトランジスタが配置されている。ノーマル領域では、1つのメモリトランジスタで1ビットの情報を記憶する。これに対してロックビットは、ノーマル領域に隣接するスペア領域のロックビット線LBLとワード線WL1,WL0の交点2つに配置されるメモリトランジスタを用いて、1ビットが保持される。このようにロックビットは2つのメモリトランジスタを用いて1ビットを記憶しているので、そのプログラムは2つのメモリトランジスタに対して同時にプログラムを行なう必要がある。
図26は、ロックビットを保持する2つのメモリトランジスタの断面図である。
図26を参照して、ロックビット線LBLとワード線WL0,WL1の2つの交点に2つのメモリトランジスタが存在し、ロックビットを保持する。ロックビットをプログラムするには、たとえば、ソースを0Vに設定し、基板を−1.2Vに設定し、ロックビット線LBLの電位を4.8Vに設定し、ワード線WL0およびWL1の電位を3〜9Vに設定する。これにより、2つのメモリトランジスタに同時にチャネルホットエレクトロンが発生ししきい値電圧が変化する。
しかしながら、2セル同時にプログラムすると、ノーマル領域に配置される通常のメモリトランジスタのプログラムをする場合に比べてロックビット線からソースに流れるドレイン電流が2倍流れることになる。したがって、実施の形態3で図22で説明したような台形波プログラムでは、ドレイン電流が流れすぎ電源回路に内蔵されたチャージポンプの能力が不足して安定した動作が行なえないおそれがある。
したがって、実施の形態4では、ロックビットのプログラムコマンドが入力された場合には、CPU6がロックビットであることを判定し、台形波の電位上昇スピードを半分にする。
図27は、実施の形態4におけるロックビットをプログラムする動作を説明するためのフローチャートである。
図27を参照して、コマンドが入力され書込動作がスタートすると、まずステップS61において指定されたビットがロックビットか否かが判断される。
ステップS61において指定されたビットが通常のビットである場合には、まずステップS62において書込ベリファイが実行される。そしてステップS63に進み書込パルスの印加回数が1回目であるかそれ以降であるかが判断される。1回目であった場合にはステップS64に進み実施の形態3で説明したような台形波1が印加される。
一方ステップS63において印加回数が2回目移行であった場合には、ステップS65において電圧Vの方形波が印加される。ステップS64またはステップS65が終了すると、図18のカウンタ140がインクリメントされることにより電圧の設定値が増加しそしてステップS67において印加回数nがインクリメントされる。
図28は、図27においてステップS63〜S67が繰返し印加される様子を説明する動作波形図である。
図28に示すように、1回目のパルスは実施の形態3で説明したような台形波パルスが印加され、2回目、3回目、4回目、5回目と方形波パルスが電圧値が増加しつつ繰返し印加される。
再び図27を参照して、ステップS61においてロックビットであると判断された場合には、ステップS68に進み、まず書込ベリファイが実行される。そして書込ベリファイがフェイルである場合にはステップS69に進み台形波2が印加される。
図29は、ステップS69で台形波2が印加される様子を説明するための波形図である。
図29では、CPU6がロックビットであることを判定すると、図18におけるカウンタ140に対して1クロック当りのカウント増加値を示す増分値DVを変化させることにより、台形波の電圧上昇スピードを図28に示したノーマル印加パルスに比べて半分にしている。すなわち、図28において傾きG1に対して図29の傾きG2は半分の値となる。そして1パルス当りの印加時間はT1からT2に増加される。このようにステップS68において書込ベリファイパスとなるまで繰返し同じ台形波が印加される。
これは、1回目の台形波でロックビットのしきい値電圧がプログラム領域まで行かなかった場合に2回目以降の印加をノーマルの場合と同様に方形波で行なうとしきい値電圧がシフトしないことが想定されるからである。なぜなら、ドレイン電流が多く流れすぎることにより十分な電圧がメモリトランジスタのドレインに印加されなくなってしまうからである。
このために、実施の形態4では、2回目以降のロックビットパルスにも同じ台形波を使用することで、しきい値電圧のシフトを確実に起こさせるようにしている。実施の形態4では、ロックビットか否かによって書込パルスの印加方法を変更することで複数のメモリトランジスタを使用するロックビットに対して効率よく書込を行なうことができる。
[実施の形態5]
実施の形態5では、ACC(アクセラレート)モードプログラムについて説明する。ACCモードとは、不揮発性半導体記憶装置のメモリセルアレイのデータが消去完了されているという前提で高速に書込むモードである。ACCモードは、たとえば、不揮発性半導体記憶装置を購入したメーカーが、大量のデバイスに書込装置で量産用のプログラムを次々と書込む際などに用いられる。
図30は、ACCモードに関連する構成を説明するためのブロック図である。
図30を参照して、メモリセルアレイ20にデータを書込む際には、まず書込データSD[15:0]がベリファイ回路16をそのままスルーしてページバッファ18に書込まれる。
その後、ページバッファ18の出力PD[15:0]とメモリセルアレイ20からの読出されたデータRD[15:0]とがベリファイ回路16において比較される。ベリファイ回路16は、ベリファイがパスするとCPU6に対して書込完了を示す信号CD_ALLを出力する。ベリファイ回路16はベリファイがフェイルであれば、書込パルスを印加する必要のあるビットには“0”を、書込パルスを印加する必要の無いビットに対しては“1”を設定し信号CD[15:0]を出力する。この結果に応じてメモリセルアレイ20には書込パルスが印加される。この値は同時にページバッファ18に保持され次回のベリファイ回路16での比較の期待値PD[15:0]となる。
このように通常の書込動作では、最初にベリファイ動作を行なっているため書込時間が長い。しかし、メモリセルアレイ20のデータが消去された状態であることがわかっていれば初回のベリファイ動作は省略することができる。ただし、この場合には、外部から入力されそのままページバッファに保持されている書込データを、直接メモリセルアレイに伝える必要がある。このためには初回に、ベリファイ回路16が出力する信号CD[15:0]に信号PD[15:0]を反映させる必要がある。
このため、ベリファイ回路16は、CPU6から出力される各種の制御信号VCS1,VCS2,EN1,EN2,RESET,SACCに応じて動作モードごとに異なる動作を行なう。
図31は、図30のベリファイ回路16のプログラムに関する構成を示す回路図である。
図31を参照して、ベリファイ回路16は、ページバッファからのデータPD[15:0]をイネーブル信号EN1に応じて取込み、出力がリセット信号RESETに応じて“0”にリセットされるラッチ回路162と、メモリセルアレイから読出されたデータRD[15:0]を、ACCモード時に活性化される信号SACCによって“1”に固定するためのOR回路164と、OR回路164の出力をイネーブル信号EN2に応じて取込み、リセット信号RESETに応じて出力が“0”にリセットされるラッチ回路166とを含む。
ベリファイ回路16は、さらに、信号VCS1,VCS2に応じてラッチ回路162の出力およびラッチ回路166の出力を処理するゲート回路168を含む。
ゲート回路168は、ラッチ回路166の出力と制御信号VCS1とを受けるNAND回路170と、ラッチ回路162の出力、制御信号VCS2およびVCS1を受けるNAND回路172と、ラッチ回路166の出力と制御信号VCS1とを受けるOR回路174と、ラッチ回路162の出力と制御信号VCS1,VCS2とを受けるゲート176とを含む。ゲート176は、ラッチ回路162の出力および制御信号VCS2がHレベルでかつ、制御信号VCS1がLレベルの場合にのみLレベルを出力し、他の場合にはHレベルを出力する。
ベリファイ回路16は、さらに、NAND回路170の出力とNAND回路172の出力とOR回路174の出力とゲート176の出力とを受けてデータWD[15:0]を出力する4入力のNAND回路178と、データWD[15:0]と外部から書込コマンドとともに入力される書込データSD[15:0]のいずれか一方を、コマンドユーザインターフェイス部2からの制御信号SETUPに応じて選択し信号CD[15:0]を出力するセレクタ179と、セレクタ179が出力する16ビットの信号CD[15:0]のすべての論理積を演算して信号CD_ALLを出力するAND回路180とを含む。
コマンドユーザインターフェイス部2は、書込コマンドが入力されると、一旦、制御信号SETUPを活性化し、書込データSD[15:0]をCD[15:0]として出力させ、これをページバッファ18に保持させる。その後、コマンドユーザインターフェイス部2は、制御信号SETUPを非活性化し、以後ページバッファ18には比較結果を反映したデータWD[15:0]がCD[15:0]として書込まれる。
ベリファイ回路16は、OEV、PV、VLC、EV、Flash to PBなどの各モードで兼用して用いられる回路である。このため、制御信号VCS1,VCS2で動作の切り替えを行なっている。
OEV(Over Erase Verify)モードは、過消去ベリファイを行なうモードである。PV(Program Verify)モードは、書込ベリファイを行なうモードである。VLC(Vth Lower Check)モードは、過消去ビット書込後の下裾ベリファイを行なうモードである。EV(Erase Verify)モードは、消去ベリファイを行なうモードである。Flash to PBモードは、メモリセルの内容をベリファイ経路を利用してページバッファに書込むため、ベリファイ回路16に比較無しで動作を行なわせるモードである。
制御信号VCS1,VCS2を変更することにより、各モードに対応する動作が行なわれる。OEVモードでは信号VCS1,VCS2はともにLレベルに設定される。PVモードおよびVLCモードでは、信号VCS1はLレベルに設定され、信号VCS2はHレベルに設定される。EVモードおよびFlash to PBモードでは、信号VCS1はHレベルに設定され、信号VCS2はLレベルに設定される。
実施の形態5で説明するACCモード時には、PVモードでの制御となる。この場合には、NAND回路170,172の出力はともにHレベルに固定され、OR回路174およびゲート176の組合せ論理によってベリファイの判定がなされる。
先に説明したように、ACCモードでは初回のベリファイを行なわないようにして時間を短縮する。このためにOR回路164が設けられている。通常のプログラムでは、ラッチ回路162は、初回ベリファイ時に外部から入れた期待値、すなわちプログラムすべき書込値を出力し、この出力がゲート176を経由してNAND回路178に伝達される。一方で、メモリセルから読出されたデータRD[15:0]がラッチ回路166の出力を経由してOR回路174を経由してNAND回路178に伝達される。
ACCモードで初回にベリファイ動作を行なわない場合には、メモリセルアレイからメモリセルのデータRD[15:0]が入力されないので、ラッチ回路166はリセットされた状態にあり“0”を保持している。このためOR回路174が出力する16ビットはすべて“0”となるので、NAND回路178が出力する信号WD[15:0]の16ビットはすべて“1”となり、CD[15:0]のビットもすべて“1”となる。
信号CD[15:0]のビットが“0”である場合にはメモリセルに書込パルスが印加される。一方、このビットが“1”であればプログラムが完了していると見なされこれ以上パルスは印加されなくなる。このため、ACCモード時には、信号SACCをHレベルに活性化する。これによりOR回路174の出力をHレベルとすることで、初回のベリファイをしなくてもラッチ回路162の出力に応じたパルス印加が必ずできるようにしている。
図32は、実施の形態5の書込動作を説明するためのフローチャートである。
図30、図32を参照して、書込動作が開始されると、まずステップS71においてCPU6が動作モードがACCモードか否かを判断する。ACCモードでない場合には、ステップS72に進みノーマル書込が実行される。
一方、モードがACCモードである場合には、ステップS73でACC書込が実行される。
図33は、図32におけるノーマル書込を実行するステップS72をより詳細に説明したフローチャートである。
図30、図33を参照して、ノーマル書込がスタートすると、まずステップS81においてCPU6はベリファイ回路16に対して信号SACCをLレベルに設定する。そしてステップS82において、書込ベリファイが行なわれる。書込ベリファイがパスである場合にはステップS90に進む。一方、書込ベリファイがフェイルである場合には初回パルス印加動作が行なわれる。
初回パルス印加動作は、ステップS83、S84で行なわれる。
図34は、初回パルス印加の波形を説明するための波形図である。
図33、図34を参照して、まずステップS83においてパルス電圧が所定値となるまで電圧が上昇していく。電圧が目標値に到達すると、続いてステップS84においてサスペンド/アボート判定が行なわれる。サスペンドとは、たとえば15μs以内に外部から割込処理の要求があった場合には書込動作を停止することをいう。またアボート処理とは、たとえば書込時間が所定値よりも長くなってしまった場合に強制的に書込を終了させるような処理をいう。
ステップS83,S84で初回パルスの印加が終了すると、次にステップS86に進み書込ベリファイが行なわれる。書込ベリファイがフェイルであれば2回目のパルス印加が行なわれる。
2回目以降のパルス印加としては、まずステップS87でプログラム電圧の印加がスタートされ、そしてそれに続きステップS88においてサスペンド/アボート判定が行なわれる。ステップS88においてサスペンドまたはアボート判定がなされた場合には、ステップS89に進みサスペンド/アボート処理がなされる。一方、ステップS88でサスペンド/アボート判定されなかった場合には、再びステップS86に進み書込ベリファイが行なわれる。
ステップS86で書込ベリファイがパスした場合には続いてステップS90に進む。
ステップS90では書込アドレスの下位4ビットのインクリメントが行なわれ、続いてステップS91においてサスペンド/アボート判定が行なわれる。ステップS91でサスペンドまたはアボートであると判定された場合には、ステップS92に進みサスペンド/アボート処理が行なわれる。一方、ステップS91でサスペンドおよびアボートと判定されなかった場合にはステップS93に進み、4ビットのアドレスをインクリメントした結果、桁上げすなわちキャリーが生じたか否かが判断される。キャリーが“1”である場合にはステップS94に進み、アドレスの上位4ビットがインクリメントされる。一方、ステップS93でキャリーが“1”でなかった場合には、次のアドレスに対する書込を行なうために再びステップS81に戻る。
ステップS94でアドレス上位4ビットのインクリメントがされた後にはステップS95に進み、インクリメントした結果キャリーが発生した否かが判断される。キャリーが発生した場合、すなわちキャリーが“1”であれば書込終了となる。キャリーが発生しなかった場合には次のアドレスに対して書込を行なうために再びステップS81に戻る。
図35は、図32におけるステップS73のACC書込の詳細な動作を説明するためのフローチャートである。
図30、図35を参照して、ACC書込においては、初回の書込ベリファイが行なわれずに初回のパルス印加がなされる点と、サスペンド処理の判定が行なわれない点が図33に示したノーマル書込の場合と大きく異なっている。
ノーマル書込においては、外部からの割込要求に備えて、内部動作中であっても動作を一時中断させるためのポイントがプログラム上に用意されている。割込要求があった場合に確実に処理するために、外部からの割込要求を受け付ける間隔の規格値、たとえば15μsに対してマージンを持たせ、10μs程度毎にROMに格納されているソフトウェアへ割込み処理ルーチンを埋込んである。
図33の処理の場合は、割込処理ルーチンを実行し毎回サスペンドがかかっていないか調べるために、その分時間が長くなってしまっている。量産時の書込のように通常は割込が発生しないような、消去済のフラッシュメモリに書込を行なうような場合には、このサスペンドポイントを削除した図35に示すACCモードの処理フローでプログラム時間の高速化を図っている。
しかしここで、サスペンド要求判定ルーチンと一緒に埋込まれているアボート判定ルーチンも同時に削除してしまうと問題が生ずる。
仮に、メモリセルトランジスタの特性が悪く、プログラム動作が規格時間内に終了しない場合には、タイムオーバーで処理をアボートさせる必要がある。図33で説明したノーマル書込の場合には、これらの判定ポイントがサスペンドと同じルーチンで行なわれている。したがって図33のフローチャートにおいてサスペンド/アボート判定を単に削除してしまうとタイムオーバー時のアボート処理をすることができなくなってしまう。以下、図35のフローチャートについて順番に説明していく。
ACC書込が開始されると、ステップS101においてCPUは制御信号SACCをHレベルに設定する。書込コマンドがコマンドユーザインターフェイス部2に入力されることにより、制御信号SETUPが活性化され、ページバッファ18に書込データが転送される。この書込データはその後制御信号SETUPが非活性化されると、ベリファイ回路16をそのままスルーしてCD[15:0]としてメモリセルアレイに伝達される。そして初回のパルス印加がベリファイ動作なしで行なわれる。初回のパルス印加時には、ステップS102においてアボート判定が行なわれ、ステップS104において電圧判定が行なわれる。
図36は、ACC書込時の初回パルスを説明するための波形図である。
図36を参照して、ACC書込時には、実施の形態3で説明したような台形波パルスが印加される。最初にカウンタを所定値にセットすることにより初期電圧が印加され、そしてその後カウンタが目標値になっているか否かを判定する電圧判定が行なわれる。その際に、初期の段階では、カウント値を観測しなくても目標値には達していないことが明らかであるので、そのパルス印加の前半においてアボート判定を行なっている。
具体的には、アボートルーチンはせいぜい10コードぐらいのため、電圧はその間に2V程度しか上がらない。したがって、3Vから電圧印加を開始した場合であれば、アボートルーチンを処理している間に5V程度までしか上がらない。このため、CPU6がわざわざカウント値を参照して電圧判定を行なわなくても、設定到達電圧の目標値(9V程度)を超えてしまうことはあり得ない。また、第1回目のパルスの場合に台形波の後に方形波を印加するような図34の波形をACCモードの初回パルスに用いてもよいが、その際はランプ波に続く方形波印加部分でアボート判定を行なう。
再び図35を参照して、ステップS102においてタイムオーバー等によるアボートであると判定されると、ステップS103に進みアボート処理がなされる。
ステップS102においてアボートであると判定されない場合には、ステップS104に進み電圧判定が行なわれ、電圧は目標値に到達するまで上昇する。ステップS104において電圧が目標値に到達すると、ステップS105に進む。
ステップS105では、CPU6は、信号SACCをLレベルに非活性化する。これによりベリファイ回路16は通常のベリファイを行なうように設定される。そしてステップS106において書込ベリファイがなされる。書込ベリファイがフェイルである場合には、2回目以降のパルス印加がステップS107,S108において行なわれる。ステップS107ではプログラム電圧の印加がスタートされ、続いてステップS108においてアボート判定がなされる。
ステップS108でアボートであると判定された場合には、ステップS109に進みアボート処理がなされる。一方、ステップS108においてアボートであると判定されない場合には再びステップS105に戻る。
ステップS106において書込ベリファイがパスすると次のアドレスに対する書込を行なう。
ページプログラムの場合では、128ワードのプログラムを行なう。このため必ずアドレスインクリメントルーチンが必要となる。本明細書におけるフラッシュメモリのCPU6は4ビットマイコンであるので、一度の命令で処理できるのは4ビット幅つまり4ビットカウンタで最高16回である。つまりCPUのソフトウェアでアドレスのインクリメントを行なうためには、下位4ビットがいっぱいになれば別のルーチンを使用しもう3ビットのカウンタ演算をしてやる必要がある。
ステップS106がパスすると、まず、ステップS110に進み書込アドレスの下位4ビットのインクリメントがなされる。
そしてインクリメントによってキャリーが発生したか否かがステップS111において判断される。キャリーが発生した場合にはステップS112に進みアドレスの上位4ビットのインクリメントがなされる。一方、キャリーが発生しなかった場合には、ステップS101に戻り次のアドレスに対する書込処理がなされる。
ステップS112でアドレス上位4ビットのインクリメントがなされた場合には続いてS113においてアボート判定がなされる。
上位3ビットの演算は128回中7回だけしか行なわれず、その演算ルーチンに10コードのアボート判定ルーチンを入れたとしても、10×70ns=700nsが合計値となる。これを128回で割ると1ワード当り5.5nsの時間にしかならないのでこれは無視できる範囲である。
ステップS113でアボートであると判定された場合にはステップS114に進みアボート処理がなされる。
一方、ステップS113においてアボートであると判定されない場合には、ステップS115に進みステップS112のインクリメントによってキャリーが発生したか否かが判断される。キャリーが発生しない場合にはステップS101に戻りインクリメント後のアドレスに対する書込処理が行なわれる。一方ステップS115においてキャリーが発生したと判断された場合には書込処理は終了する。
実施の形態5では、ACCモードを設け、初回パルス印加前には書込ベリファイを行なわない。そして、アドレスインクリメント処理時に上位3ビットのインクリメント処理の直後にアボート判定ルーチンを入れている。これにより時間の増加を防ぎ、かつアボートが可能な書込制御シーケンスが実現されている。すなわち、時間短縮が達成された加速書込モードを備えるのでユーザが使いやすい不揮発性半導体記憶装置が実現できる。
[実施の形態6]
実施の形態6では、ブロック消去時の電源回路中のチャージポンプの制御方法について説明する。
図37は、チャージポンプのセットアップ時間について説明するための図である。
図37を参照して、CPUがカウンタを0から増加させて電圧目標値を0からカウントアップさせると、セットアップ時間が長くなる。これに対して、チャージポンプの能力に余裕がある場合は、このセットアップ時間を短縮することができる。
図38は、ブロック消去時のチャージポンプの制御方法を検討するための検討例を説明するためのブロック図である。
図38を参照して、この検討例では、コマンドユーザインターフェイス部2A中のカウンタ210は、消去ではなくてプログラムに合わせた仕様になっている。つまりカウンタ210は、CPU6Aからリセット信号が送られると出力値CNUMBERが“0”にリセットされ、CPU6Aが出力する制御信号C−ENABLEが活性化されるとカウントを開始し、非活性化されるとカウントを停止する。これは、プログラム時には、三角波を作り出す目的でカウンタが設計されているからである。三角波とは、ランプ波とも呼ばれ、0Vから設定値まで設定電圧を時間ステップで上げていく波形である。
電源制御回路10Aは、CPU6Aから送られる動作モードとチューニングヒューズ回路192に設定されているチューニング信号に応じてカウンタ210の出力が所定値となったときにCPU6Aに対して停止信号C−STOPを出力する。デコード回路196,198,…,200には、各種条件に対応する電圧値を検出するデコード回路である。そして選択信号発生回路194は、動作モードとチューニング信号に基づいてデコード回路196〜200の出力のいずれか1つをAND回路202〜206およびOR回路208によって選択する。
しかし、ブロック消去で消去パルスを印加する場合には、三角波は特に必要はなく、一定の電圧のパルス印加が必要である。図38に示した構成では、設定目標電圧に達するまで電圧制御回路10Aがカウント値を判定し、電圧制御回路が出力する信号C−STOPに応じてCPU6Aがイネーブル信号C−ENABLEを制御しカウンタ210を動作させる必要があった。
たとえば8Vの電圧が必要で、0.1V/70nsのステップで0から8VまでVcgを上昇させる場合には、80回×70ns=5.6μsのセットアップ時間が必要になる。これを電圧のセットごとに行なうとかなりの時間を要してしまう。また、電圧の到達をCPU6Aに教える必要があるため、消去動作時の電圧設定ごとの到達電圧判定用の制御信号を生成するデコード回路196,198,…,200が必要となり、大きな面積を要していた。
図39は、図38に示した検討例のブロック消去動作を説明するためのフローチャートである。
図39を参照して、ブロック消去が開始されると、まずステップS121で消去ベリファイが行なわれる。ステップS121で消去ベリファイがパスされば、そのままブロック消去動作は完了となる。
ステップS121で消去ベリファイがフェイルである場合にはステップS122に進みCPUはカウンタをリセットした後に“0”からカウントをスタートさせる。そしてステップS123においてカウント値が目標値か否かが判断される。そしてカウンタが目標値でない場合には、ステップS124においてカウント値の増加がなされ再びステップS123でカウント値が目標値か否かが判断される。
ステップS123においてカウント値が目標値であると判断された場合には、電源制御回路10Aからカウンタストップ信号がCPU6Aに送られてくるのでカウンタ210はカウント動作を停止する(ステップS125)。そしてステップS126において所定時間のパルス印加が行なわれ、そしてステップS127で消去ベリファイが行なわれる。
ステップS127で消去ベリファイがフェイルであった場合にはステップS128でカウント値が増加され、すなわちCPU6Aからイネーブル信号によってカウンタ210が動作を開始し、電源制御回路10Aから送られてくるストップ信号C−STOPに応じてCPU6Aはカウンタ210をストップさせる。そして所定時間のパルス印加がステップS129で行なわれる。パルス印加がステップS129で行なわれた後には再び消去ベリファイがステップS127で行なわれる。
そしてステップS127の消去ベリファイがパスであればブロック消去が完了となる。
図40は、実施の形態6のブロック消去時におけるチャージポンプの制御に関する構成を説明するためのブロック図である。
図40を参照して、コマンドユーザインターフェイス部2に含まれるカウンタ212は、CPU6から送られる信号LOADによって初期値DSETをセットすることができる。またカウンタ212は、CPU6が出力するリセット信号RESETに応じてカウント値が“0”にリセットされ、信号C−ENABLEが活性化されているときにカウントアップを行ない非活性化されているときはカウントアップは行なわない。さらに、カウンタ212は信号DVに応じてカウントアップを行なう1ステップのカウント値の増加分を変化させることができる。
図41は、図40におけるカウンタ212の構成を示したブロック図である。
図41を参照して、カウンタ212は、6ビット分の保持回路221〜226と、加算器228とを含む。
保持回路221は、リセット信号RESETに応じてリセットされクロック信号P2に応じて入力値を取込むラッチ回路232と、ラッチ回路232の出力と初期設定値DSETとをロード信号LOADに応じて切換えて出力するセレクタ234と、セレクタ234の出力をクロック信号P1に応じて取込むラッチ回路236とを含む。ラッチ回路236はリセット信号RESETに応じてリセットされる。
保持回路221は、さらに、ラッチ回路236の出力と加算器228の6ビットの出力のうち対応するビットを信号C−ENABLEに応じて切換えるセレクタ238を含む。セレクタ238の出力はラッチ回路232の入力に与えられる。
加算器228は、保持回路221〜226の6ビットの出力に対し増分値DVを加算して再び保持回路221〜226に対して出力する。増分値は、たとえば+1である場合にはカウンタ212は1クロック当りカウント値を1ずつ増加させる。また増分値が+2である場合にはカウンタ212は1クロック当りカウント値を2ずつ増加させる。これによりランプ波形の傾きを変えることができる。
図42は、実施の形態6のブロック消去動作を説明するためのフローチャートである。
図42を参照して、ブロック消去がコマンドにより指示されると、まずステップS131において消去ベリファイが行なわれる。消去ベリファイがパスであればそのままブロック消去は終了である。
一方、消去ベリファイがフェイルであればステップS132においてCPU6はカウンタ212に対して目標電圧値をセットする。これによりチャージポンプの電流供給能力に応じたスピードで電圧が上昇し、ステップS133において短縮されたセットアップ時間でパルス印加を行なうことができる。
そしてステップS134において消去ベリファイが行なわれ、消去ベリファイがフェイルする場合にはステップS135においてカウント値増加により電圧が上昇し、ステップS136においてパルス印加が行なわれ、ステップS134において再び消去ベリファイが行なわれる。ステップS134において消去ベリファイがパスであればブロック消去が完了する。
以上説明したように、実施の形態6では、電圧値をカウントアップするカウンタに初期値をセットすることができるように変更したので、電源回路中のチャージポンプの能力に応じた速度ですばやく電圧を印加することができる。たとえば、印加電圧として8Vが必要な場合には、従来5.6μsであったセットアップ時間が1.5μsに短縮される。また、図38の場合では複数のデコード回路196〜200が必要であったが、図40の場合には、カウンタに初期値を直接セットできるので回路規模も小さくできてレイアウト面積の削減が可能となる。
[実施の形態7]
実施の形態7ではフラッシュメモリにおけるスペアメモリセルに対する書込動作について説明する。
従来は、ノーマルメモリセルアレイにおいて不良が発見されるとスペアメモリセルアレイに対しては動作書込のチェックをしない段階で置換を行ない、この置換動作を行なったスペアメモリセルに対して書込および読出動作のチェックをしていた。しかしながら、製品歩留まりを一層向上させるには、スペアメモリセルアレイ部分を動作チェックしてからすなわち不良でないことを確認してから置換を行なったほうがよい。
しかしながら、フラッシュメモリは特に書込動作に時間がかかるので、従来ノーマルメモリセルアレイの書込および読出を行なってさらにスペアメモリセルアレイに対しても同様な処理を別途行なうのでは書込時間が長くなってしまう。このため書込をノーマルメモリセルアレイとスペアメモリセルアレイに対して同時に行なうマルチ書込を行なって書込時間を短縮する。
図43は、スペアメモリセルアレイに対する書込動作を説明するためのブロック図である。
図43を参照して、入力されたアドレスADDRESSはノーマルデコーダ260と冗長判定回路252とに与えられる。アドレスがノーマルメモリセルアレイ中の不良メモリセルに相当する場合には、冗長判定回路252は信号HITを活性化する。これに応じてスペアデコーダ262はスペアメモリセルアレイ266の一部を選択する。
一方スペアメモリセルアレイ266の書込チェックを事前に行なっておくためにはTEST回路254においてテスト信号TESTを活性化させ、スペアデコーダ262に対してテスト動作を行なわせる。テスト動作時にはスペアデコーダ262はアドレス信号ADDRESSに応じてスペアメモリセルアレイ266を選択する。スペアデコーダ262がテスト動作時にアドレス信号ADDRESSに応じてスペアメモリセルアレイの一部を選択するようにしたのは、選択率の問題を解決するためである。
選択率の問題とは、後に説明するようにノーマルデコーダはアドレスに応じて32分の1の選択率でノーマルメモリセルアレイの一部を選択する。一方、テスト動作時にヒット信号のみを強制的に活性化させスペアデコーダが1対1の選択を行なうのでは、スペアメモリセルアレイに対して書込パルスがノーマルセルアレイの32倍の頻度で印加されてしまう。このため、スペアメモリセルアレイが劣化しやすいという問題がある。
また、電源回路258は高電圧VPYをノーマルデコーダ260とスペアデコーダ262とに供給するが、信号HITを強制的に活性化させたときにスペアメモリセルアレイをすべて選択してしまうのでは、電源回路258の電流供給能力が不足してしまうという問題が生ずる。たとえば通常動作でノーマルメモリセル16ビットを同時書込する場合に対して、テスト動作時にさらに8ビットのスペアも同時に書込むのでは、電源回路258のチャージポンプの能力は1.5倍必要となってしまう。しかし16ビットを同時に書込む場合にスペアメモリセルアレイを余分に1ビット書込むのであればそれほどチャージポンプの能力を大きくする必要はない。
図44は、図43におけるノーマルデコーダ260,ノーマルメモリセルアレイ264およびスペアデコーダ262、スペアメモリセルアレイ266の構成を説明するための回路図である。
図44を参照して、ノーマルデコーダ260は、書込データD[0]に応じて出力信号BDO[0]を高電圧VPYに駆動するバッファ回路272と、書込データD[1]に応じて出力信号BDO[1]を高電圧VPYに駆動するバッファ回路274と,書込データD[2]に応じて出力信号BDO[2]を高電圧VPYに駆動するバッファ回路276と,書込データD[15]に応じて出力信号BDO[15]を高電圧VPYに駆動するバッファ回路278とを含む。
ノーマルデコーダ260は、さらに、アドレス信号A0〜A4に応じて32本のメインビット線のうち1本を選択して信号BDO[0]を伝達するセレクタ282と、アドレス信号A0〜A4に応じて32本のメインビット線のうち1本を選択して信号BDO[1]を伝達するセレクタ284と、アドレス信号A0〜A4に応じて32本のメインビット線のうち1本を選択して信号BDO[2]を伝達するセレクタ286と、アドレス信号A0〜A4に応じて32本のメインビット線のうち1本を選択して信号BDO[15]を伝達するセレクタ288とを含む。
ノーマルメモリセルアレイ264には、各セレクタ282,284,286,288に対応してメインビット線MBL[31:0]が設けられ、行列状にメモリセルトランジスタが配置される。
OR回路256は、信号HIT[0]と信号TESTとを受けるOR回路292と、信号HIT[1]と信号TESTとを受けるOR回路294と、信号HIT[2]と信号TESTとを受けるOR回路296と、信号HIT[7]と信号TESTとを受けるOR回路298とを含む。
スペアデコーダ262は、信号DSP[0]とOR回路292の出力とプリデコード信号/A4・/A3・/A2・/A1・/A0とを受けるAND回路302と、信号DSP[1]とOR回路294の出力とプリデコード信号/A4・/A3・/A2・/A1・A0とを受けるAND回路304と、信号DSP[2]とOR回路296の出力とプリデコード信号/A4・/A3・/A2・A1・/A0とを受けるAND回路306と、信号DSP[7]とOR回路298の出力とプリデコード信号/A4・/A3・A2・A1・A0とを受けるAND回路308とを含む。
スペアデコーダ262は、さらに、AND回路302,304,306,308の入力をそれぞれ受けるバッファ回路312,314,316,318を含む。バッファ回路312,314,316,318は高電圧VPYを電源電圧として受け、それぞれ出力信号BDOSP[0],BDOSP[1],BDOSP[2],BDOSP[7]を出力する。
スペアデコーダ262は、さらに、信号CAU0をゲートに受け信号BDOSP[0],BDOSP[1],BDOSP[2],BDOSP[7]をそれぞれスペアビット線MBLSP[0],MBLSP[1],MBLSP[2],MBLSP[7]に伝達するためのNチャネルMOSトランジスタ322,324,326,328を含む。
図45は、図44におけるセレクタ282の構成を示した回路図である。
図45を参照して、セレクタ282は、プログラム時に活性化される信号BDOを信号CAUOの活性化時にノードN1に伝達するNチャネルMOSトランジスタ342と、リード時にノードN1の信号を信号BDEとして出力するために設けられ、ゲートに信号CAUEを受けるNチャネルMOSトランジスタ344とを含む。
セレクタ282は、さらに、ノードN1とビット線MBL[0]との間に接続されゲートにプリデコード信号/A4・/A3・/A2・/A1・/A0を受けるNチャネルMOSトランジスタ346と、ノードN1とメインビット線MBL[1]との間に接続されゲートにプリデコード信号/A4・/A3・/A2・/A1・A0を受けるNチャネルMOSトランジスタ348と、ノードN1とビット線MBL[31]との間に設けられゲートにプリデコード信号A4・A3・A2・A1・A0を受けるNチャネルMOSトランジスタ350とを含む。
再び図44を参照して、セレクタ282〜288は32分の1の選択率でビット線MBLを選択する。マルチ書込時にはスペア判定信号HITによらず制御を行なうためにテスト信号TESTをHレベルに活性化する。スペアビット線MBLSP[0]〜MBLSP[7]に高電圧を印加する場合に、アドレス信号A4〜A0を用いて選択率を32分の1に強制的に設定する。
図44において信号A[4:0]が“00000”の場合にはビット線MBLSP[0]が選択される。また、信号A[4:0]が“00001”の場合には、ビット線MBLSP[1]が選択されてプログラム時に高電圧が印加される。
図46は、図44に示した構成のスペア選択に関する変形例を示した図である。
図46を参照して、OR回路256Aは、信号HIT[0]と信号TESTとを受けるOR回路362と、信号HIT[1]と信号TESTとを受けるOR回路364とを含む。
スペアデコーダ262Aは、データ信号DSP[0]とOR回路362の出力とプリデコード信号/A4・/A3・/A2とを受けるAND回路366と、データ信号DSP[1]とOR回路364の出力とプリデコード信号/A4・/A3・A2とを受けるAND回路370と、電源電圧として高電圧VPYを受け入力にAND回路366の出力を受けて信号BDOSP[0]を出力するバッファ回路368と、電源電圧として高電圧VPYを受け入力にAND回路370の出力を受けて信号BDOSP[1]を出力するバッファ回路372と、アドレス信号A0,A1に応じてビット線MBLSP[0]〜MBLSP[3]のうちの1本を選択しこれに信号BDOSP[0]を与える4分の1選択回路374と、アドレス信号A0,A1に応じてビット線MBLSP[4]〜MBLSP[7]のうちの1本を選択しこれに信号BDOSP[1]を与える4分の1選択回路376とを含む。
図47は、図46における4分の1選択回路374の構成を示した回路図である。
図47を参照して、4分の1選択回路374は、プログラム時に活性化される信号BDOを信号CAUOの活性化時にノードN2に伝達するNチャネルMOSトランジスタ382と、リード時にノードN2の信号を信号BDEとして出力するために設けられ、ゲートに信号CAUEを受けるNチャネルMOSトランジスタ384とを含む。
4分の1選択回路374は、さらに、ノードN2とビット線MBLSP[0]との間に接続されゲートにプリデコード信号/A1・/A0を受けるNチャネルMOSトランジスタ386と、ノードN2とメインビット線MBLSP[1]との間に接続されゲートにプリデコード信号/A1・A0を受けるNチャネルMOSトランジスタ388と、ノードN1とビット線MBLSP[3]との間に設けられゲートにプリデコード信号A1・A0を受けるNチャネルMOSトランジスタ390とを含む。
図46、図47で示した変形例では、信号BDO[7:0]の高電圧の信号をデコードするだけでなく、コラムデコード側でアドレスA[1:0]で4分の1に選択してかつ、AND回路366,370でアドレスA[4:2]による8分の1の選択を行なうことで図44の場合と同様な効果を得ることができる。
実施の形態7では、スペアメモリセルに対する信頼性が向上し、電源回路の能力をあまり増大させなくてもノーマルメモリセルとスペアメモリセルに対する同時書込が可能な不揮発性半導体記憶装置が提供できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。