(57)【特許請求の範囲】
【請求項１】
書き込み対象の複数のアドレスの全てに対して書き込みが十分か不十分かの判定を判定閾値により行う第１ステップと、
前記複数のアドレスのうち、前記書き込みが不十分の前記アドレスに対して前記書き込みを行い、前記書き込みが十分の前記アドレスに対して前記書き込みを行わない第２ステップと、
を有し、
前記第１ステップ及び前記第２ステップを所定回数繰り返し、
前記判定閾値は、読み取り時における読取判定閾値よりも高く設定される半導体不揮発性記憶装置の動作プログラム。
【請求項２】
前記書き込み対象の複数のアドレスは、ランダムアクセスが可能である請求項１に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項３】
前記所定回数繰り返す前記第２ステップのうち、最終回以外の前記第２ステップにおいて、前記書き込みが不十分の前記アドレスがない前記第２ステップが少なくとも１回は存在する請求項１に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項４】
前記第１ステップの前に、
前記複数のアドレスの全てに対して、前記書き込みが十分か不十分かの前記判定を行う第３ステップと、前記書き込みが不十分の前記アドレスに対して前記書き込みを行い、前記書き込みが十分の前記アドレスに対して前記書き込みを行わない第４ステップと、
を有し、
前記書き込みが不十分の前記アドレスがないと判断されるまで、前記第３ステップ及び前記第４ステップを繰り返し、
前記書き込みが不十分の前記アドレスがないと判断されてから、前記第１ステップに進む請求項１に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項５】
書き込み対象の複数の抵抗変化素子の全てに対して、抵抗が判定閾値よりも高い高抵抗素子か低い低抵抗素子かの判定を行う第１ステップと、
前記複数の抵抗変化素子のうち、前記低抵抗素子に対して、前記抵抗を増加させる書き込みを行い、前記高抵抗素子に対して前記書き込みを行わない第２ステップと、
を有し、
前記第１ステップ及び前記第２ステップを所定回数繰り返し、
前記判定閾値は、読み取り時における読取判定閾値よりも高く設定される半導体不揮発性記憶装置の動作プログラム。
【請求項６】
前記所定回数繰り返される前記第２ステップのうち、最終回以外の前記第２ステップにおいて、前記低抵抗素子がない前記第２ステップが少なくとも１回は存在する請求項５に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項７】
前記判定閾値を前記読取判定閾値の２倍以上とする請求項５に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項８】
前記第１ステップの前に、
前記複数の抵抗変化素子の全てに対して、前記高抵抗素子か前記低抵抗素子かの前記判定を行う第３ステップと、前記低抵抗素子に対して、前記書き込みを行い、前記高抵抗素子に対して前記書き込みを行わない第４ステップと、
を有し、
前記低抵抗素子がないと判断されるまで、前記第３ステップ及び前記第４ステップを繰り返し、
前記低抵抗素子がないと判断されてから、前記第１ステップに進む請求項５に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項９】
前記書き込みは、前記抵抗変化素子の前記抵抗を一旦低くしてから高くする請求項５に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項１０】
前記書き込みは、前記抵抗変化素子に対して電圧を印加することにより行い、第１電圧において前記書き込みを行うときと、それ以降に、第２電圧において前記書き込みを行うときを有し、前記第２電圧は前記第１電圧よりも高い請求項５に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項１１】
前記書き込みは、前記抵抗変化素子に対してパルスで電圧を印加することにより行い、第１パルス幅において前記書き込みを行うときと、それ以降に第２パルス幅において前記書き込みを行うときを有し、前記第２パルス幅は前記第１パルス幅よりも大きい請求項５に記載の半導体不揮発性記憶装置の動作プログラム。
【請求項１２】
複数の抵抗変化素子と、
前記複数の抵抗変化素子のうち書き込み対象となる抵抗変化素子の全てに対して、前記抵抗変化素子の抵抗が判定閾値よりも高い高抵抗素子か低い低抵抗素子かの判定を行う抵抗判定回路と、
前記複数の抵抗変化素子のうち、前記低抵抗素子に対して、前記抵抗を増加させる書き込みを行い、前記高抵抗素子に対して前記書き込みを行わない処理を行う書き込み電圧設定回路と、
を備え、
前記抵抗判定回路は、前記書き込みが行われた前記抵抗変化素子及び前記書き込みが行われない前記抵抗変化素子に対して前記判定をし、
前記抵抗判定回路における前記判定及び前記書き込み電圧設定回路における前記処理を繰り返し、
前記判定閾値は、読み取り時における読取判定閾値よりも高く設定される半導体不揮発性記憶装置。
【請求項１３】
前記抵抗判定回路により前記複数の抵抗変化素子に対して前記判定した結果を保存する判定結果保存回路をさらに備え、
前記判定結果保存回路に前記低抵抗素子がないと判定された結果が保存された状態でも、前記抵抗判定回路における前記判定及び前記書き込み電圧設定回路における前記処理を繰り返す請求項１２に記載の半導体不揮発性記憶装置。
【請求項１４】
前記判定閾値を前記読取判定閾値の２倍以上に設定された請求項１２に記載の半導体不揮発性記憶装置。
【請求項１５】
前記判定結果保存回路に前記低抵抗素子がないと判定された結果が保存された状態から前記抵抗判定回路における前記判定及び前記書き込み電圧設定回路における前記処理を所定回数繰り返す請求項１３に記載の半導体不揮発性記憶装置。
【請求項１６】
前記書き込みは、前記抵抗変化素子の前記抵抗を一旦低くしてから高くする請求項１２に記載の半導体不揮発性記憶装置。
【請求項１７】
前記書き込みは、前記抵抗変化素子に対して電圧を印加することにより行い、第１電圧において前記判定及び前記処理を繰り返すステップと、それ以降に、第２電圧において前記判定及び前記処理を繰り返すステップを有し、前記第２電圧は前記第１電圧よりも高い請求項１２に記載の半導体不揮発性記憶装置。
【請求項１８】
前記抵抗を増加させる前記書き込みは、前記抵抗変化素子に対してパルスで電圧を印加することにより行い、第１パルス幅において前記判定及び前記処理を繰り返すステップと、それ以降に第２パルス幅において前記判定及び前記処理を繰り返すステップを有し、前記第２パルス幅は前記第１パルス幅よりも大きい請求項１２に記載の半導体不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体不揮発性記憶装置及びその動作プログラムに関し、例えば、抵抗変化素子を用いた半導体不揮発性記憶装置及びその動作プログラムに関する。
【背景技術】
【０００２】
電源をOFFにしても記憶内容が保持されるメモリを不揮発性メモリ（Non-Volatile Memory、または、半導体不揮発性記憶装置ともいう。）といい、集積化が進む各種の電子機器に使用されている。不揮発性メモリには、例えば、浮遊ゲートを利用してデータの記録を行い、ブロック単位で書き込みを行うフラッシュメモリ（Flash Memory）や、抵抗の変化を利用してデータの記録を行い、ランダムアクセスが可能な抵抗変化型メモリ（Resistance Random Access Memory、以下「ReRAM」という。）があげられる。
【０００３】
ReRAMは、フラッシュメモリに比べて、データの書き込みに必要な電流が微量であり、書き込み速度が速いため、消費電力を低減することができる。このため、ReRAMは、電池駆動型のポータブル電子機器等へ搭載されるメモリとして有望視されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５０３９０７９号公報
【特許文献２】特許第４３２２３９５号公報
【特許文献３】特許第３７９６８５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
１ビットから構成されるアドレスを複数有する不揮発性メモリにおいて、書き込み対象のアドレスに対してベリファイ（判定）を行った場合に、パス（Pass）した複数のアドレスの中には、一定の割合で、本来は不良（Fail）であったはずのアドレスが含まれることがある。なお、以下の特許文献では、１つのアドレスに属するビット数は明らかにされていないが、例えば１つのアドレスは１ページを示し、これが複数のビットによって構成されていたとしても、１つのアドレスに含まれる個々のビットをアドレスと置き換えて考えれば、結局、１ビットから構成されるアドレスと同じことである。
【０００６】
特許文献１には、ReRAMにおけるベリファイ書き込みの方法が開示されている。特許文献１の方法では、Failと判定されたアドレスに対して書き込みを行い、Passと判定されたアドレスに対して書き込みを行わない。その後、書き込みが行われたアドレスに対してのみ判定を行い、書き込みが行われなかったアドレスについては判定も書き込みもスキップする。そのような書き込みと判定を繰り返し、書き込み対象のアドレスがすべてPassした場合、ベリファイ書き込み処理を終了する。このように、特許文献１の方法は、一旦Passの判定をしたアドレスには、それ以降、書き込みも判定も行わない。したがって、アドレスの抵抗の平均値（抵抗平均値）が判定閾値以下であって、本来Failアドレスであるはずのものが、判定時に、偶発的にPassした（誤Pass）場合、その後、そのアドレスがFailであることを検出することができない。よって、一旦Pass判定されたアドレスに対する検証が不十分であり、特許文献１の方法では、書き込みの精度が高いとはいえない。
【０００７】
なお、特許文献１の比較例には、PassアドレスかFailアドレスかに関わらず、書き込み対象のすべてのアドレスに対して、書き込みと判定をスキップせずに所定回数行なう方法が開示されている。比較例の方法は、Passアドレスに対しても書き込みを行うため、過剰書き込みとなる可能性がある。その結果、諸問題を引き起こす。よって、比較例では、書き込みの精度を向上させることはできない。
【０００８】
特許文献２には、フラッシュメモリにおけるテストモードを有するベリファイ書き込み方法が開示されている。特許文献２の方法は、電圧のストレスをワースト条件としたテストモードで書き込みを行う方法で、Passしたアドレスに対しても書き込みを行う。また、ページ単位のすべてのアドレスがPassしても書き込みを終了せず、所定回数判定と書き込みを繰り返す。この方法では、Passしたアドレスに対しての判定が行われるものの、過剰書き込みにより、諸問題を引き起こす。その結果、書き込みの精度を向上させることはできない。
【０００９】
特許文献３には、フラッシュメモリにおいて、ベリファイ書き込み終了後に再判定を行い、Failとなったアドレスを検出してベリファイ書き込みを行う方法が開示されている。特許文献３の方法は、Failと判定されたアドレスに対して書き込みを行い、一旦Passと判定されたアドレスに対しては、判定も書き込みも行わない。書き込み対象のアドレスがすべてPassアドレスになった場合、ベリファイ書き込みを終了する。特許文献３の方法でも、一旦Passしたアドレスに対して判定を行わないので、誤Passアドレスが存在する可能性がある。引用文献３の方法も、書き込みの精度を向上させることはできない。
【００１０】
このように、特許文献１〜３に開示されたベリファイ書き込み方法は、書き込みの精度を向上させることができないものとなっていた。
【００１１】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
一実施の形態によれば、半導体不揮発性記憶装置の動作プログラムは、書き込み対象の複数のアドレスの全てに対して、書き込みが十分か不十分かの判定を行う第１ステップと、書き込み対象の複数のアドレスのうち、書き込みが不十分のアドレスに対して書き込みを行い、書き込みが十分のアドレスに対して書き込みを行わない第２ステップと、を有する。そして、第１ステップ及び第２ステップを所定回数繰り返すものである。
【発明の効果】
【００１３】
前記一実施の形態によれば、半導体不揮発性記憶装置の書き込みの精度を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１にかかる半導体不揮発性記憶装置を例示する図である。
【図２】実施形態１にかかる周辺回路を例示した図である。
【図３】実施形態１にかかる半導体不揮発性記憶装置のOff書き込み動作を例示したフローチャートである。
【図４】実施形態１にかかる半導体不揮発性記憶装置のフォーミング及びOn書き込み動作を例示したフローチャートである。
【図５】実施形態１にかかる半導体不揮発性記憶装置の読み取り動作を例示したフローチャートである。
【図６】実施形態１にかかる半導体不揮発性記憶装置のOff書き込みにおける各アドレスの状態をマトリックス状に例示した図であり、各列は、書き込み対象の各アドレスを示し、各行は、各アドレスの状態を示す。
【図７】（ａ）及び（ｂ）は、抵抗変化素子の抵抗変動の挙動を例示したグラフであり、横軸は測定回数を示し、縦軸は抵抗値を示す。
【図８】１回のベリファイ書き込みを行った場合の抵抗値分布の変化を例示したグラフであり、横軸は抵抗値を示し、縦軸はアドレス数を示し、（ａ）は、初期状態を示し、（ｂ）は、判定を行った時の抵抗値の分布を示し、（ｃ）は、ベリファイ書き込みを行ったときの抵抗値の分布を示す。
【図９】Off書き込みを短いパルスで書き込みした場合、及び、長いパルスで書き込みした場合において、その後同じ条件でOn書き込みを行った場合のOn抵抗の分布を例示したグラフである。
【図１０】Off書き込みを短いパルスで書き込みした場合、及び、長いパルスで書き込みした場合におけるOff抵抗の分布を例示したグラフである。
【図１１】比較例にかかる半導体不揮発性記憶装置のOff書き込みにおける各アドレスの動作をマトリックス状に例示した図であり、各列は、書き込み対象の各アドレスを示し、各行は、各アドレスの状態を示す。
【図１２】実施形態２にかかる半導体不揮発性記憶装置の判定閾値とアドレス数との関係を例示するグラフであり、横軸は、抵抗値を示し、縦軸は、アドレス数を示す。
【図１３】ReRAMの抵抗値のばらつきを例示するグラフであり、横軸は、抵抗値を示し、縦軸は、確率である。
【図１４】ReRAMの抵抗値のばらつきを例示するグラフであり、横軸は、抵抗値を示し、縦軸は、確率である。
【図１５】実施形態２にかかる半導体不揮発性記憶装置及び比較例にかかる半導体不揮発性記憶装置の抵抗と正規化アドレス数を例示する図であり、横軸は抵抗値を示し、縦軸は正規化アドレス数を示す。
【図１６】実施形態３にかかる半導体不揮発性記憶装置の書き込み動作を例示するフローチャートである。
【発明を実施するための形態】
【００１５】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１６】
（実施形態１）
実施形態１について説明する。本実施形態は、半導体不揮発性記憶装置、動作方法及び動作プログラムについての実施形態である。まず、本実施形態にかかる半導体不揮発性記憶装置の構成を説明する。
図１は、実施形態１にかかる半導体不揮発性記憶装置１００を例示する図である。
図１に示すように、半導体不揮発性記憶装置１００は、ReRAMアレイ１０、周辺回路２０、バッファメモリ３０を有している。周辺回路２０は、ReRAMアレイ１０の周辺に配置されている。バッファメモリ３０は、周辺回路２０に隣接している。
【００１７】
ReRAMアレイ１０は、複数のアドレスを有している。例えば、アドレスは１ビットから構成されている。ReRAMアレイ１０は、複数のアドレスに対応した複数の記憶素子１１がマトリックス状に配置されて構成されている。ReRAMアレイ１０における複数の記憶素子１１は、例えば１つのトランジスタ１２及び１つの抵抗変化素子１３から構成された構造（以下、「1Tr1R構造」という。）を有している。
【００１８】
1Tr1R構造におけるトランジスタ１２は、一般的な電界効果型トランジスタ（FET）である。トランジスタ１２は、例えば、セル選択トランジスタとして用いられる。トランジスタ１２のソース端子Ｓはビット線ＢＬに接続されている。トランジスタ１２のゲート端子Ｇはワード線ＷＬに接続されている。トランジスタ１２のドレイン端子Ｄは、抵抗変化素子１３に接続されている。
【００１９】
抵抗変化素子１３は、上部金属１３ａ、抵抗変化層１３ｂ及び下部電極１３ｃがこの順で積層された構造（MIM構造）を有している。抵抗変化素子１３の下部電極１３ｃは、トランジスタ１２のドレイン端子Ｄに接続されている。抵抗変化素子１３の上部電極１３ａは、プレート線ＰＬに接続されている。下部電極１３ｃには、材料として、ルテニウム（Ru）が用いられている。下部電極１３ｃの厚さは、10nmである。上部電極１３ａには、窒化タンタル層（TaN層）で被覆されたタングステン（W）が用いられている。窒化タンタル（TaN）の被膜層の厚さは、2nmである。タングステンの厚さは10nmである。
【００２０】
抵抗変化層１３ｂは、上部電極１３ａ及び下部電極１３ｃで挟まれている。抵抗変化層１３ａは、酸素欠損を有する酸化タンタル層（TaOx層）及び酸素引き抜き層となるタンタル層（Ta層）を含んでいる。TaOx層の厚さは、5nm程度である。Ta層の厚さは、2nmである。抵抗変化素子１３の上部電極１３ａとTa層との間、または、下部電極１３ｃとTaOx層との間には、絶縁層１３ｄが設けられている。絶縁層１３ｄには直径100nmの円あるいは同等の面積の正方形に近い矩形の穴が設けられている。ここで言う抵抗変化素子１３の面積とは、上部電極１３ａ及び下部電極１３ｃの面積ではなく、絶縁層１３ｄに開けられた穴の面積である。この穴を通って上部電極１３ａから下部電極１３ｃの方へ延びる部分は、W/TaN/Ta/TaOx/Ruの積層構造となっている。その周囲の部分は、上部電極１３ａの下方または下部電極１３ｃの上方に絶縁層１３ｄが存在するため、抵抗変化層１３ｂとしては機能しない。
【００２１】
図２は、実施形態１にかかる周辺回路を例示した図である。
図１及び図２に示すように、周辺回路２０は、アドレス選択回路２１、書き込み電圧設定回路２２、抵抗判定回路２３及び判定結果保存回路２４を有している。アドレス選択回路２１、書き込み電圧設定回路２２、抵抗判定回路２３及び判定結果保存回路２４は、ReRAMアレイ１０における記憶素子１１に電気的に接続している。
【００２２】
アドレス選択回路２１は、ReRAMアレイ１０における記憶素子１１を選択する。例えば、アドレス選択回路２１は、ワード線ＷＬまたはビット線ＢＬに接続されている。アドレス選択回路２１は、複数の抵抗変化素子１３から書き込み対象の複数の抵抗変化素子１３を選択する。例えば、アドレス選択回路２１は、トランジスタ１２のゲート端子Ｇに対してワード線ＷＬを介して電圧を印加する。これにより、トランジスタ１２のゲートが開き、抵抗変化素子１３の抵抗を増減することができる。
【００２３】
書き込み電圧設定回路２２は、アドレス選択回路２１によって選択された記憶素子１１に対して書き込みをする。例えば、書き込み電圧設定回路２２は、ビット線ＢＬを介して、トランジスタ１２のソース端子Ｓに接続されている。書き込み電圧設定回路２２は、アドレス選択回路２１によって選択されたトランジスタ１２のソース端子Ｓに、ビット線ＢＬを介して、電圧を印加する。これにより、書き込み電圧設定回路２２は、抵抗変化素子１３の抵抗を増加させる書き込みを行う。このようにして、書き込み電圧設定回路２２は、抵抗変化素子１３の抵抗を設定する。なお、書き込み電圧設定回路２２は、抵抗変化素子１３の抵抗を設定することができれば、プレート線ＰＬを介して抵抗変化素子１３に接続されていてもよい。
【００２４】
抵抗判定回路２３は、プレート線ＰＬに接続している。抵抗判定回路２３は、プレート線ＰＬを介して抵抗変化素子１３に印加された電圧を引き出す。引き出した電圧を増幅して、抵抗判定回路２３は、抵抗変化素子１３の抵抗が判定閾値よりも高いか低いかの判定を行う。
【００２５】
判定結果保存回路２４は、抵抗判定回路２３に接続されている。判定結果保存回路２４は、抵抗判定回路２３における判定した結果を保存する。判定結果保存回路２４は、書き込み対象の各アドレスにおけるPassまたはFailの結果を保存する。バッファメモリ３０は、書き込みする内容のデータを一時的に保持するためのメモリである。
【００２６】
次に、本実施形態にかかる半導体不揮発性記憶装置１００の動作について説明する。まず、本実施形態にかかる半導体不揮発性記憶装置１００のOff書き込みにおけるベリファイ書き込み動作について説明する。
図３は、実施形態１にかかる半導体不揮発性記憶装置１００のOff書き込み動作を例示したフローチャートである。
図３のステップＳ１に示すように、Off書き込み動作は、まず、サイクル更新から始まる。サイクル更新における初期値を、例えば、０とする。最終サイクルを、所定回数の最終回、例えば10ないし100回とする。これにより、所定回数、例えば、100回の繰り返しが行われる。所定回数は、アドレスの数、抵抗変化素子１３の信頼性等により決定される。なお、半導体不揮発性記憶装置１００の構成は、前述の図１及び図２に示す。
【００２７】
次に、ステップＳ２に示すように、アドレス更新を行う。アドレス更新は、書き込み対象のアドレスの判定のため、アドレスを１つずつ巡回させるものである。書き込み対象の複数のアドレスは、ランダムアクセスが可能なものとする。初期値を、例えば、アドレス０とする。最終アドレスは、書き込み対象のアドレスを１つずつ処理していった場合に、最後に残ったアドレスである。アドレス更新は、具体的には、書き込み対象の複数のアドレスに対応した複数の抵抗変化素子１３をアドレス選択回路２１によって選択し、抵抗変化素子１３を１つずつ巡回させることにより行う。なお、書き込み対象のアドレスは、ページ単位、または、ブロック単位であってもよい。
【００２８】
次に、ステップＳ３に示すように、判定を行う。判定は、書き込み対象の複数のアドレスが、書き込み十分か不十分かを判定するものである。書き込み十分なアドレスをPassアドレス、書き込み不十分なアドレスをFailアドレスとする。または、単に、Pass、Failともいう。判定は、具体的には、アドレス選択回路２１によって選択された書き込み対象の複数の抵抗変化素子１３の全てに対して、抵抗が判定閾値より高いか低いかを抵抗判定回路２３が判定することにより行う。抵抗判定回路２３は、高い抵抗のものをPass、低い抵抗のものをFailとして、判定結果保存回路２４に判定結果を出力する。なお、ここではOff書き込みについて説明しているため、書き込み対象の抵抗変化素子１３とは、バッファメモリ３０に保存されている書き込むべきデータがOffであるアドレスである。
【００２９】
次に、ステップＳ４に示すように、判定結果を保存する。具体的には、判定結果保存回路２４は、抵抗判定回路２３が複数の抵抗変化素子１３に対して判定した結果を保存する。判定結果保存回路２４は、アドレスごとの判定結果を保存する。すでに各アドレスに対する判定結果が保存されている場合には、上書き保存される。
【００３０】
次に、ステップＳ５に示すように、アドレスが最終アドレスか判断する。最終アドレスでない（Noの）場合には、ステップＳ２に戻る。これにより、アドレス更新が行われ、次のアドレスが選択される。アドレスが最終アドレスである（Yesの）場合には、ステップＳ６に進む。
【００３１】
次に、ステップＳ６に示すように、アドレス更新を行う。ステップＳ６におけるアドレス更新は、書き込み対象のアドレスについて追加の書き込みを行うためにアドレスを巡回するものである。上述のステップＳ２と同様の方法で、アドレスを更新する。すなわち、初期値を、例えば、０にリセットする。最終アドレスは、書き込み対象のアドレスを１つずつ処理していった場合に、最後に残ったアドレスである。
次に、ステップＳ７に示すように、判定結果保存回路２４に保存されている判定結果を参照し、選択されたアドレスがPassかFailか判断する。
【００３２】
次に、ステップＳ８に示すように、書き込み対象の複数のアドレスのうち、選択されたアドレスがPassでない（Noの）場合、すなわち、書き込み不十分のアドレスの場合は、そのアドレスに対して書き込みを行う。具体的には、書き込み電圧設定回路２２は、ビット線BLに対して175μAの飽和電流を、2.2Vの電圧を用いて、20nsのパルス幅で印加する。これにより、書き込み電圧設定回路２２は、書き込み対象の複数の抵抗変化素子１３のうち、抵抗が判定閾値より低い抵抗変化素子１３に対して抵抗を増加させる書込みを行う。その後、ステップＳ９に進む。選択されたアドレスがPassである（Yesの）アドレス、すなわち、書き込み十分のアドレスの場合には、そのアドレスに対して書き込みを行わない。具体的には、書き込み電圧設定回路２２は、抵抗が判定閾値より高い抵抗変化素子１３に対して抵抗を増加させる書き込みを行わない。書き込み電圧設定回路２２は、このような処理を行う。その後、ステップＳ９に進む。
【００３３】
次に、ステップＳ９に示すように、アドレスが最終アドレスか判断する。最終アドレスでない（Noの）場合には、ステップＳ６に戻る。これにより、アドレス更新が行われ、次のアドレスが選択される。アドレスが最終アドレスである（Yesの）場合には、ステップＳ１０に進む。
【００３４】
次に、ステップＳ１０に示すように、最終サイクルかどうか判断される。最終サイクルでない（Noの）場合には、ステップＳ１に戻る。これにより、サイクルが繰り返される。したがって、書き込みが行われたアドレス及び書き込みが行われないアドレスに対して判定を行うことになる。具体的には、抵抗判定回路２３は、抵抗を増加させる書き込みが行われた抵抗変化素子１３及び抵抗を増加させる書き込みが行われない抵抗変化素子１３に対して、判定を行う処理をする。このようにして、サイクルを所定回数繰り返す。一方、最終サイクルである（Yesの）場合には、ベリファイ書き込み処理が終了する。
【００３５】
このように、本実施形態においては、書き込み対象の複数のアドレスの全てに対して書き込みが十分か不十分化かの判定を行うステップＳ３と、書き込み対象の複数のアドレスのうち、書き込みが不十分のアドレスに対して書き込みを行い、書き込みが十分のアドレスに対して書き込みを行わないステップＳ８と、を有し、ステップＳ３とステップＳ８が所定回数繰り返される。したがって、書き込みが行われたアドレス及び書き込みが行われないアドレスに対して判定を行うステップＳ３も繰り返される。
【００３６】
具体的には、書き込み対象の複数の抵抗変化素子１３の全てに対して、抵抗が判定閾値よりも高い抵抗変化素子１３（以下、「高抵抗素子」という。）か、抵抗が判定閾値よりも低い抵抗変化素子１３（以下、「低抵抗素子」という。）かの判定を行う処理と、書き込み対象の複数の抵抗変化素子１３のうち、低抵抗素子に対して、抵抗を増加させる書き込みを行い、高抵抗素子に対して抵抗を増加させる書き込みを行わない処理と、を有し、これらの処理が所定回数繰り返される。したがって、抵抗を増加させる書き込みが行われた低抵抗素子及び抵抗を増加させる書き込みが行われない高抵抗素子に対して、判定を行う処理も繰り返される。
【００３７】
ステップＳ３における判定で書き込み対象のすべてのアドレスがPassになっていても、処理を終了させない。これにより、所定回数繰り返されるステップＳ８のうち、最終回以外のステップＳ８において、書き込み不十分のアドレスがないステップＳ８が少なくとも１回は存在することとなる。具体的には、判定結果保存回路２４に低抵抗素子がないと保存された状態でも、抵抗判定回路２３及び電圧設定回路２２における処理を繰り返す。すなわち、所定回数繰り返されるステップＳ８のうち、最終回以外のステップＳ８において、低抵抗素子がないステップＳ８が少なくとも１回は存在することとなる。
【００３８】
なお、上述した半導体不揮発性記憶装置１００の動作方法を、動作プログラムとしてもよい。
また、動作プログラムを、コンピュータに実行させてもよい。その場合には、コンピュータに、書き込み対象の複数のアドレスの全てに対して書き込みが十分か不十分かの判定を行わせる第１ステップ（手順）と、複数のアドレスのうち、書き込みが不十分のアドレスに対して書き込みを行わせ、書き込みが十分のアドレスに対して書き込みを行わせない第２ステップ（手順）と、を有し、第１ステップ（手順）及び第２ステップ（手順）を所定回数繰り返すことを実行させる。
【００３９】
具体的には、半導体不揮発性記憶装置１００の動作プログラムとして、コンピュータに、書き込み対象の複数の抵抗変化素子１３の全てに対して、抵抗が判定閾値よりも高い高抵抗素子か低い低抵抗素子かの判定を行わせる第１ステップ（手順）と、複数の抵抗変化素子１３のうち、低抵抗素子に対して、抵抗を増加させる書き込みを行わせ、高抵抗素子に対して書き込みを行わせない第２ステップ（手順）と、を有するようにし、第１ステップ（手順）及び第２ステップ（手順）を所定回数繰り返すことを実行させる。
【００４０】
次に、本実施形態にかかる半導体不揮発性記憶装置１００のフォーミング及びOn書き込みにおけるベリファイ書き込み動作について説明する。
図４は、実施形態１にかかる半導体不揮発性記憶装置のフォーミング及びOn書き込み動作を例示したフローチャートである。
図４のステップＳ２１に示すように、まず、サイクル更新を行う。サイクル更新は、判定結果をリセット、すなわち、書込み対象の全アドレスをFailにセットすることにより行う。最終サイクルを、所定回数、例えば、100回とする。なお、半導体不揮発性記憶装置１００の構成は、前述の図１及び図２に示す。
【００４１】
次に、ステップＳ２２に示すように、アドレス更新を行う。アドレス更新は、書き込み対象アドレスについて判定するためのアドレスを巡回するものである。
次に、ステップＳ２３に示すように、書き込み対象のアドレスについて、保存されている判定結果が既にPassか判断する。判定結果保存回路２４に保存されている判定結果が、Passでない（Noの）場合には、ステップＳ２４に進む。判定結果保存回路２４に保存されている判定結果がPassの（Yesの）場合には、ステップＳ２６に進む。
【００４２】
次に、ステップＳ２４に示すように、判定結果保存回路２４に保存されている判定結果が、Passでない（Noの）場合には、On状態の書き込みが十分か不十分かの判定を行う。
ステップＳ２５に示すように、判定結果がPassである場合には、判定結果を更新する。これにより、書き込み対象のアドレスにおいて、On状態であるアドレスに対しては、Passとして判定結果保存回路２４に保存され、On状態でないアドレスに対しては、Failとして判定結果保存回路２４に保存される。その後、ステップＳ２６に進む。
【００４３】
ステップＳ２６に示すように、アドレスが最終アドレスか判断する。最終アドレスでない（Noの）場合には、ステップＳ２２に戻る。これにより、アドレス更新が行われ、次のアドレスが選択される。アドレスが最終アドレスである（Yesの）場合には、ステップＳ２７に進む。
次に、ステップＳ２７に示すように、書き込み対象のアドレスがすべてPassかどうか判断する。すべてPassの（Yesの）場合には、フォーミング及びOn書き込みにおけるベリファイ書き込み処理を終了する。すべてPassでない（Noの）場合には、ステップＳ２８に進む。
【００４４】
次に、ステップＳ２８に示すように、アドレス更新を行う。ステップＳ２８におけるアドレス更新は、書き込み対象アドレスについて追加の書き込みを行うためにアドレスを巡回するものである。上述のステップＳ２２と同様の方法で、アドレスを更新する。
次に、ステップＳ２９に示すように、選択されたアドレスがPassかFailか、判定結果保存回路２４に保存されている判定結果を参照して判断する。選択されたアドレスがFailである（Noの）場合にはステップＳ３０に進む。選択されたアドレスがPassである（Yesの）の場合にはステップＳ３１に進む。
【００４５】
次に、ステップＳ３０に示すように、書込みを行う。書き込み対象の複数のアドレスのうち、選択されたアドレスがPassでない（Noの）場合、すなわち、書き込みが不十分のアドレスの場合には、そのアドレスに対してのみ書き込みを行う。具体的には、フォーミングの場合には、判定閾値の抵抗を14kΩに設定する。書き込み電圧設定回路２２は、例えば、ワード線WLを介してトランジスタ１２に175μAの飽和電流を流し、プレート線ＰＬに3.0Vの電圧で1μsのパルスを印加する。これにより、書き込み電圧設定回路２２は、書き込み不十分のアドレスに対してのみ書き込みを行う。On書き込みの場合には、書き込み電圧設定回路２２は、例えば、ワード線ＷＬを介してトランジスタ１２に175μAの飽和電流を流し、プレート線に2.2Vの電圧で1μsのパルスを印加する。これにより、書き込み電圧設定回路２２は、書き込みが不十分のアドレスに対してのみ書き込みを行う。なお、フォーミングは製造後に一度だけ書き込みを行う。
【００４６】
選択されたアドレスがPassである（Yesの）場合、すなわち、書き込みが十分のアドレスに対しては書き込みを行わない。具体的には、高抵抗素子に対して抵抗を増加させる書き込みを行わない。その場合には、ステップ３１へ進む。
次に、ステップＳ３１に示すように、アドレスが最終アドレスか判断する。最終アドレスでない（Noの）場合には、ステップＳ２８に戻る。これにより、アドレス更新が行われ、次のアドレスが選択される。アドレスが最終アドレスである（Yesの）場合には、ステップＳ３２に進む。
【００４７】
次に、ステップＳ３２に示すように、最終サイクルかどうか判断される。最終サイクルでない（Noの）場合には、ステップＳ２１に戻る。これにより、サイクルが繰り返される。一方、最終サイクルである（Yesの）場合には、処理が終了する。
このように、フォーミング及びON書き込みの場合には、すべてのアドレスがPassになるか、所定回数繰り返しを実行すると、ベリファイ書き込み処理を終了する。
【００４８】
次に、本実施形態にかかる半導体不揮発性記憶装置１００の読み取り動作について説明する。
図５は、実施形態１にかかる半導体不揮発性記憶装置の読み取り動作を例示したフローチャートである。
図５のステップＳ４１に示すように、まず、アドレス更新を行う。アドレス更新は、読み取り対象アドレスについてアドレスの状態を読み取るためのアドレスを巡回するものである。なお、半導体不揮発性記憶装置１００の構成は、前述の図１及び図２に示す。
【００４９】
次に、ステップＳ４２に示すように、読み取りを行う。読み取りは、読み取り対象の各アドレスの状態を読み取る。具体的には、各アドレスに対応した抵抗変化素子１３の抵抗値を測定する。
次に、ステップＳ４３に示すように、判定を行う。判定は、読み取り対象のアドレスの状態を判定する。具体的には、判定は、アドレスに対応した抵抗変化素子１３の抵抗値を測定することにより行う。
【００５０】
次に、ステップＳ４４に示すように、アドレスの状態が、Off状態か判断する。例えば、Off状態の読み取り判定閾値を100kΩとした場合に、抵抗変化素子１３の抵抗が100kΩ以上かどうか判断する。抵抗変化素子１３の抵抗が100KΩ以上の（Yesの）場合には、ステップＳ４５に進む。100kΩ未満の（Noの）場合には、ステップＳ４６に進む。
次に、ステップＳ４５に示すように、抵抗変化素子１３の抵抗が100kΩ以上の場合には、そのアドレスはOff状態として判定結果が出力される。その後、ステップＳ４９に進む。
【００５１】
ステップＳ４６に示すように、抵抗変化素子１３の抵抗が100kΩ以下の場合には、On状態か判断される。具体的には、例えばOn状態の読み取り判定閾値を50kΩとした場合に、50kΩ未満か判断される。抵抗変化素子１３の抵抗が50kΩ未満の（Yesの）場合には、ステップＳ４７に進む。50kΩ以上の（Noの）場合には、ステップＳ４８に進む。
次に、ステップＳ４７に示すように、抵抗変化素子１３の抵抗が50kΩ未満の場合には、そのアドレスはOn状態と判断される。そして、そのアドレスはOn状態として判定結果が出力される。その後、ステップＳ４９に進む。
【００５２】
ステップＳ４８に示すように、50〜100kΩの場合には、そのアドレスはエラーとの判定結果が出力される。規定数以内のエラーの場合には、冗長アドレス等で対処する。その後、ステップＳ４９に進む。
次に、ステップＳ４９に示すように、アドレスが最終アドレスか判断する。最終アドレスでない（Noの）場合には、ステップＳ４１に戻る。これにより、アドレス更新が行われ、次のアドレスが選択される。アドレスが最終アドレスである（Yesの）場合には、読み取り処理が終了する。
【００５３】
次に、本実施形態におけるOff書き込み動作における各アドレスの状態を説明する。
図６は、実施形態１にかかる半導体不揮発性記憶装置のOff書き込みにおける各アドレスの状態をマトリックス状に例示した図であり、各列は、書き込み対象の各アドレスを示し、各行は、各アドレスの状態を示す。
図６に示すように、行が下方に進むにしたがって、各アドレスの状態が変化している。
図６における行Ａ０は、書込み対象の各アドレスを示す。左端はアドレス０である。右端はアドレス７である。なお、図においては、書き込み対象を８つのビットからなる８つのアドレスとしているが、これに限られない。１２８ビットや２５６ビット以上のものでもよい。
【００５４】
図６における行Ａ１は、書き込み対象の各アドレスに対して判定（R）を開始したことを示す。例えば、ReRAMの場合には、ランダムアクセスが可能であるから、Off書き込み動作は、判定から開始することができる。行Ａ２は、各アドレスの判定結果を示している。例えば、アドレス０〜２は、Pass（P）という結果であり、アドレス３〜７はFail（F）という結果である。行Ａ３は、Failであったアドレス３〜７に対して書き込み（W）を行うことを示す。第１回目の書き込みを初回書き込みという。アドレス０〜２に対しては、書き込みを行わない。
【００５５】
次に、行Ａ４は、前の判定結果にかかわらず、書き込み対象のすべてのアドレス０〜７に対して判定を行うことを示す。行Ａ５は、書き込み対象の各アドレスの判定結果を示す。アドレス０、２及び３は、Pass（P）という結果であり、アドレス１、４〜７はFail（F）という結果である。アドレス１におけるFailへの変動を検出している。行Ａ６は、判定結果がFailであったアドレス１、４〜７に対して、書き込みを行ったことを示す。２回目以降の書き込みを追加の書き込みという。アドレス０、２及び３に対しては、書き込みを行わない。行Ａ７は、前の判定結果にかかわらず、書き込み対象のすべてのアドレス０〜７に対して判定を行うことを示す。
【００５６】
行Ａ８は、書込み対象の全てのアドレス０〜７がPassであることを示す。行Ａ９は、Failのアドレスがないので追加書き込みをするアドレスがないことを示す。このように、書き込み対象のすべてのアドレス０〜７がPassとなる場合も起こりうるが、その時も書き込み動作は終了とならず、必ず所定回数繰り返し、判定および追加書き込みを行う。つまり、全部のアドレスがPassしても書き込み動作を終了しない。
【００５７】
行Ａ１０は、前の判定結果にかかわらず、書き込み対象のすべてのアドレス０〜７に対して判定を行うことを示す。行Ａ１１は、行Ａ７の判定でPassしたアドレス５もFailに変動することを示している。その場合には、行Ａ１２で示すように、アドレス５に対して書き込みを行う。このように、書き込み動作は、判定及び書き込みのサイクルを所定回数繰り返す。所定回数に達すると書き込み動作を終了する。
【００５８】
次に、本実施形態にかかる半導体不揮発性記憶装置１００の効果を説明するが、その前に、書き込み対象のアドレスにおける誤Pass及び偽Fail、並びに、On固着及びOff固着を説明する。
図７（ａ）及び（ｂ）は、抵抗変化素子１３の抵抗変動の挙動を例示したグラフであり、横軸は測定回数を示し、縦軸は抵抗値を示す。
一般的なReRAMにおいて、抵抗変化素子１３は、特に、高抵抗状態の場合に、抵抗の変動が大きく、測定を行う度に異なる値を示すことがある。ReRAMにおいて、抵抗変化素子１３の抵抗値の平均値（以下、「抵抗平均値」という。）を、抵抗変化素子１３の本来の抵抗値とする。
【００５９】
図７（ａ）に示すように、抵抗変化素子１３の抵抗値は、測定回数を重ねるたびに、抵抗平均値を中心として高抵抗側及び低抵抗側に幅をもった分布となる。分布の幅は、抵抗変化素子１３の特性に依存する。度数分布をとると、抵抗平均値から大きく外れた値も確率的に出現する。そのため、抵抗変化素子１３の抵抗値を１回の測定で決定することは、誤判定を引き起こす原因となる。
【００６０】
原則として抵抗値を複数回測定し、その平均値を得る必要がある。例えば、ベリファイ書き込みにおいて、あるアドレスが判定閾値より高い抵抗値を示すことによってPassと判定されたとする。しかしながら、抵抗変化素子１３の抵抗値は、不規則に分布する（ばらつく）現象がある。したがって、抵抗平均値が判定閾値より低いFailの領域にあるアドレスが偶然Passしたという「誤Pass」が発生した可能性がある。
【００６１】
一方、図７（ｂ）に示すように、ベリファイ書き込みにおいて、抵抗平均値が判定閾値より高いアドレスに対して正しくPass判定をしたとする。しかしながら、読み取りの際に、判定閾値よりも低い抵抗値を示してFailとなる「偽Fail」が発生した可能性もある。正しい判定を行うためには１回だけのPass/Fail判定ではなく、抵抗値の測定を複数回行って、抵抗平均値を求め、抵抗平均値が判定閾値より高いことを検証する必要がある。「誤Pass」を防ぐためには書き込みでの判定に、「偽Fail」を防ぐためには読み取りでの判定に、このような動作を行う必要がある。
【００６２】
しかしながら、一般的に読み取り動作は、CPUの動作速度に合わせた高速動作が要求される。したがって、読み取り動作において、抵抗値の測定を複数回行うような詳細な動作を行うことはできない。このため、読み取り時に「偽Fail」が発生しない対策を書き込み時に行う必要がある。その方法としては、ばらつきの影響が及ばない程度まで書き込みベリファイの判定閾値を高く設定することも考えられる。しかし、単に判定閾値を高くしただけでは「偽Fail」を解決することはできない。
【００６３】
図８は、１回のベリファイ書き込みを行った場合の抵抗値分布の変化を例示したグラフであり、横軸は抵抗値を示し、縦軸はアドレス数を示し、（ａ）は、初期状態を示し、（ｂ）は、判定を行った時の抵抗値の分布を示し、（ｃ）は、ベリファイ書き込みを行ったときの抵抗値の分布を示す。
【００６４】
図８（ａ）に示すように、初期状態での抵抗平均値の分布は、読み取り動作を行う判定閾値Rth_R、ベリファイ書き込みを行う際の判定閾値Rth_Vに対して高い抵抗及び低い抵抗のいずれの成分も有している。判定閾値Rth_Vは、抵抗平均値が判定閾値Rth_Vより高ければ判定閾値Rth_Rでの読み取り判定において偽Failが起こる確率を十分小さくできる程度に高い値に設定しているものとする。
【００６５】
図８（ｂ）には、初期状態で判定閾値Rth_VによるPass/Fail判定を行った時の結果の分布を示す。抵抗平均値が判定閾値Rth_Vより低いアドレスは、Failと判定されるべきである。抵抗平均値が判定閾値Rth_Vより十分低いアドレスは、ほぼすべてFailと判定される。しかし、抵抗平均値が判定閾値Rth_Vより低い側から、判定閾値Rth_Vに近付くにつれて、抵抗値のばらつきにより、たまたま判定閾値Rth_Vより高い抵抗を示し、誤Passとなる確率が高まってくる。判定閾値Rth_V付近では判定の成功率は、約1/2となる。
【００６６】
図８（ｃ）には、Failと判定されたアドレスに対して追加の書き込みを行い、判定閾値Rth_Vより高抵抗化させた分布を示す。判定時の誤Passがあるため、ベリファイ後の追加書き込みに成功したとしても抵抗平均値が判定閾値Rth_Vより低いアドレスを無くすことはできない。そのため、そのようなアドレスが偽Failを起こす可能性が残る。つまり偽Failが起こらないよう判定閾値Rth_Vを高く設定したとしても、判定閾値Rth_Vに対する誤Passの確率も十分に低減しなければ十分な効果を得ることができない。
【００６７】
更に、判定閾値を高くし過ぎるとその判定閾値をPassするのに必要なOff書き込み条件を強く（例えば、高電圧化、パルス幅の長時間化）する必要が生じるため、新たな問題を引き起こす。ReRAMにOff書き込みを行う場合、条件を強くすると、Off状態の抵抗値を高くすることができる。しかし、その場合には、書き込みによってOff書き込み時に形成された高抵抗層が絶縁破壊しOff状態にならなくなるOn固着(ショート不良)という問題が発生する。また、Off抵抗が高くなり過ぎて低抵抗のOn状態に戻らなくなるOff固着(オープン不良)という問題が発生する。
【００６８】
図９は、Off書き込みを短いパルスで書き込みした場合、及び、長いパルスで書き込みした場合において、その後、同じ条件でOn書き込みを行った場合のOn抵抗の分布を例示したグラフである。
図９に示すように、Off書き込みを短いパルス（短パルス３１）で行った場合には、すべてのアドレスが30kΩ以下の低い抵抗状態になっている。一方、Off書き込みを長いパルス（長パルス３２）で行った場合には、1MΩ以上の非常に抵抗が高いアドレスが発生している（領域３３）。これは、Off固着を起こしたアドレスが発生しているためである。なお、Off書き込みを行うときの強い条件として、パルスを長くすることを取り上げたが、これに限らない。Off書き込みを行うときの強い条件として、電圧を高くした場合も同様の現象が発生する。
【００６９】
図１０は、Off書き込みを短いパルスで書き込みした場合、及び、長いパルスで書き込みした場合におけるOff抵抗の分布を例示したグラフである。
図１０に示すように、Off書き込みを長いパルス（長パルス３２）で行った場合には、短いパルス（短パルス３１）で行った場合に比べて、抵抗の分布が高抵抗側にシフトしている。すなわち、抵抗が、平均的に高くなっている。しかし、低抵抗側の裾（領域３４）には、Off書き込みの状態ではない低抵抗のアドレスが残っている。長いパルスの印加は、Off書き込み状態に対して、高抵抗状態にかかる電圧ストレスを長くする。これにより、抵抗変化素子１３の抵抗変化層１３ｂが絶縁破壊を起こす。この結果、抵抗を高くすることができないアドレスが発生する。このような状態は、Off書き込みを行ってもOff状態にはならないOn固着となる。これらの問題を防ぐためにはOff書き込みの条件を必要十分な程度に極力弱める必要がある。このような理由から、高抵抗のOff状態の抵抗変化素子１３に対して、Off書き込みを続けるような動作は極力抑制しなければならない。
【００７０】
次に、上記で説明した誤Pass及び偽Fail、Off固着及びOn固着と関係づけて、本実施形態の効果を説明する。
上述したように、誤Pass及び偽Failを防ぐためには、複数回の判定及び書き込みを行う必要がある。本実施形態に係る半導体不揮発性記憶装置１００は、Passしたアドレスに対しても所定回数判定を繰り返す。また、すべてのアドレスがPassしてもベリファイ書き込み処理を終了せず、所定回数繰り返す。したがって、例えば、1回目のサイクルで誤Passが発生したとしても2回目あるいはそれ以降のサイクルにおける判定によって、誤Passの検出をすることができる。また、検出した誤Passに対して追加書き込みをすることができる。
【００７１】
抵抗平均値が判定閾値よりほぼ同等であって、わずかに低い場合、誤Passを起こす確率は、ほぼ1/2である。したがって、抵抗平均値が判定閾値とほぼ同等の場合には、半分のFailアドレスが判定をすり抜ける。これにより、半分のFailアドレスが誤Passとなる。しかし、10回の判定を行った場合を考えると、10回連続で誤Passを起こす確率は、1/1024=0.1%となる。このため、10回の判定を行うと、不良率を大幅に下げることが可能となる。つまり、1回の追加書き込みによって、抵抗を判定閾値よりも十分高くできたとすると、10回の判定および追加書き込みによって、判定をすり抜けるFailアドレスを、0.1%まで低減することができる。
【００７２】
また、書き込み終了後の抵抗平均値が判定閾値より高いアドレスも、読み取りばらつきのためにFail（偽Fail）となる確率がある。例えば、10%の確率で不良となる抵抗平均値の場合には、1回の判定では10%の確率でしか検出出来ないが、10回の判定を繰り返せば、偽Failが発生する確率が高まるためより高確率で検出することができる。このため、追加書き込みを行うことにより、抵抗平均値を高くし、偽Failの発生率、つまり不良率を低下させることができる。すなわち、10回の判定中1回も偽Failが発生しない確率は0.9の10乗の0.35であるので、10％の検出率が65％まで向上する。このように、本実施形態の半導体不揮発性記憶装置１００は、誤Pass及び偽Passの発生を抑制し、抵抗平均値どおりの判定をすることができるので、書き込み及び読み取りの精度を向上させることができる。
【００７３】
また、本実施形態では、すべてのアドレスがPassしてもベリファイ書き込みを終了しない。したがって、繰り返し回数を規定することにより、所望の精度でベリファイ書き込みをすることができる。さらに、その精度を保証することができる。
ReRAMの場合には、ランダムアクセスが可能であるから、Off書き込み動作は、判定から開始することができる。ベリファイ書き込みの余分な動作を省き、書き込み速度を向上させることができる。
【００７４】
また、本実施形態の半導体不揮発性記憶装置１００は、判定において、Failアドレスに対して書き込みを行い、Passアドレスに対しては書き込みを行わない。よって、書き込み対象のアドレスに対して過剰な書き込みをすることがない。これにより、On固着及びOff固着の発生を抑制することができる。
【００７５】
このように、本実施形態の半導体不揮発性記憶装置１００は、ReRAMの書き込み及び読み取りの精度を向上させることができる。ReRAMは、フラッシュメモリに比べて、データの書き込みに必要な電流が微量であり、書き込み速度が速いため、消費電力を低減することができる。したがって、ReRAMは、低消費電力の要求が厳しい用途に適している。例えば、RF通信機能を備えたマイコン(マイクロコントローラ、マイクロコンピュータ、MCU)といった半導体装置は、IoT(Internet of Things)あるいはセンサーネットと呼ばれるネットワークを構築するセンサーノードに用いられる。RF通信機能を備えたマイコンは、ノードに対して個別に電源線を敷設することは困難である。このため、RF通信機能を備えたマイコンは、電池駆動あるいは太陽電池などの環境発電によって電力を供給することが望ましい。そこで、RF通信機能を備えたマイコンに、本実施形態によって読み取り及び書き込みの不良率を大幅に低減したReRAMを用いる。これにより、低消費電力、高信頼のセンサーノードの供給が可能となる。
【００７６】
（比較例）
本実施形態にかかる半導体不揮発性記憶装置１００の特徴をより詳細に説明するために、比較例と対比して説明する。
図１１は、比較例にかかる半導体不揮発性記憶装置のOff書き込みにおける各アドレスの動作をマトリックス状に例示した図であり、各列は、書き込み対象の各アドレスを示し、各行は、各アドレスの状態を示す。
図１１に示すように、行が下方に進むにしたがって、各アドレスの状態が変化する。
図１１における行Ｂ０は、書き込み対象の各アドレスを示す。左端は、アドレス０である。右端は、アドレス７である。
【００７７】
図１１における行Ｂ１は、書き込み対象の各アドレスに対して書き込み（W）を開始したことを示す。例えば、フラッシュメモリの場合は、書き込みに先立って消去動作が行われ、全アドレスが0となっている。このため、最初のサイクルでは、まず書き込みを行う。行Ｂ２は、書き込み対象の各アドレスに対して判定（R）を行ったことを示す。行Ｂ３は、各アドレスの判定結果を示している。例えば、アドレス０〜２は、Pass（P）という結果であり、アドレス３〜７はFail（F）という結果である。
【００７８】
行Ｂ４は、Failであったアドレス３〜７に対してのみ書き込み（W）を行うことを示す。アドレス０〜２に対しては書き込みを行わない。次に、行Ｂ５は、Failであったアドレス３〜７に対して判定を行うことを示す。Passであったアドレス０〜２に対しては判定を行わない。行Ｂ６は、判定の結果を示す。アドレス３はPassである。アドレス４〜７はFailである。前のサイクルでPassしたアドレスは、それ以降Passとして扱われる。一旦Passしたアドレスは、判定も追加書き込みも一切行われない。
【００７９】
行Ｂ７は、判定結果がFailであったアドレス４〜７に対して、書き込みを行うことを示す。行Ｂ８は、Failであったアドレス４〜７に対して判定を行うことを示す。行Ｂ９は、書き込み対象のすべてのアドレスがPassであることを示す。
【００８０】
すべてのアドレスがPassとなるまで判定及び書き込みを繰り返し行う。全アドレスがPassとなればベリファイ書き込み処理を終了する。繰り返しの最大回数は規定されている場合もあるが、規定回数に達した時に全アドレスがPassになっていなかった場合は書き込み失敗として扱われる。
【００８１】
比較例は、一旦Passと判定されたアドレスに対して、判定も書き込みも行わない。したがって、ReRAMの抵抗値のように、アドレスの特性に、ばらつきがある場合には精度よく書き込みを行うことができない。例えば、抵抗平均値が判定閾値以下のアドレスは、Failと判定されるべきである。しかし、比較例は、たまたま高い抵抗値を示したアドレスをPassと誤判定する。抵抗平均値が判定閾値より若干低い場合には、誤判定の確率はほぼ1/2となる。そのため、比較例では、そのような抵抗平均値のアドレスに対する誤判定の確率も1/2となり、精度よく書き込みを行うことができない。また、抵抗平均値が判定閾値より高く、Passと判定されたとしても、読み取り時のばらつきのために判定閾値よりも低い抵抗を示し、Failとなる確率も同様に存在する。このような現象により、比較例は、書き込みまたは読み出しの不良を多発させる。
【００８２】
アドレスにおける値の変動を考慮したベリファイ書き込み方法もある。例えば、フラッシュメモリでは、近接セルに対する書き込みディスターブによって、メモリセルの閾値に変動を生じる問題が知られている。その対策として特許文献３に示されたように、書き込み動作完了後に改めてPass/Fail判定を行う動作方法がある。この例では、比較例の手法によるベリファイ書き込みですべてのアドレスがPassした後に、改めて全アドレスに対してPass/Fail判定を行い、Failであったアドレスに対して再度ベリファイ書き込みを行う。
【００８３】
この書き込み動作の繰り返し回数が多いと、再度書き込みディスターブが発生する可能性がある。このため、少ない繰り返し回数でベリファイ書き込みを終了させている。すなわち、全アドレスがPassするまで全アドレスに対する再判定と比較例によるベリファイ書き込みを行っている。また、最初のベリファイ書き込みの際に1回で全アドレスPassしていれば書き込みディスターブは発生していないと考え、再判定ループには入らないという実施例も記述されている。
【００８４】
しかしながらReRAMで起きている現象は書き込みディスターブといった外的要因とは無関係に発生している。読み取りを行う毎に、ばらついた測定結果を示している。そのため抵抗値は、抵抗平均値と、ばらつき幅で規定される確率分布を持つ。したがって、1回の読み取りでPass/Fail判定を下すことは原理的にできない。前述したように、例えば、判定閾値より若干低い平均抵抗を持つアドレスが誤Passする確率はおよそ1/2である。このアドレスに対して再度抵抗変動が起こっていないかを検証しても誤Passの確率は1/4までにしか改善できない。
【００８５】
また、特許文献３では、少ない繰り返し回数でベリファイ書き込みが完了するまで全アドレスの再判定とベリファイ書き込みを繰り返すと開示されている。アドレスによっては本実施形態と同様にPass判定をされた後も繰り返し判定を受ける場合がある。しかし、何回繰り返すかは、他のアドレスに対するベリファイ書き込みが終了する条件で決まっており、十分に精度を向上させるために必要な回数が保証されている訳ではない。繰り返し回数の上限値が決まっていたとしても、それ以前に終了する可能性があるため、不十分である。また終了条件を満たした際、最後にPassしたアドレスはその後の判定を受けないため、真に書き込みが終了しているとは言えない状態のままである。
【００８６】
つまりReRAMのように抵抗のばらつきが大きい素子において、１回の判定の結果は必ずしも正しいとは限らない。このため、比較例のように、1回のPass/Fail判定による結果が正しいという前提に基づいた書き込み方法では、精度よく書き込みを行うことができない。また、精度よい書き込みが保証されていない。本実施形態１にかかる半導体不揮発性記憶装置１００では、確率的にPass/Failするという素子の挙動に基づき、読み取り時の誤判定を防ぐことも含めて書き込みの精度の大幅な向上を実現している。
【００８７】
ReRAMに対して正確なベリファイ書き込みを行うためには、Pass/Fail判定ではなく抵抗測定を多数回行ってそのアドレスの抵抗ばらつき分布を取得した上で、その結果からFailする確率が高い場合には追加書き込みを行い、十分に低い場合はPassとみなすという動作が必要となる。これには抵抗のアナログ測定あるいはそれに準ずる回路と、多数回の測定結果を保持する記憶素子、および多大な測定時間や電力を要するため、実際に行うのは現実的ではない。
【００８８】
この方法と同様の効果を簡便に得られるのが本実施形態１にかかる半導体不揮発性記憶装置１００の動作方法である。追加書き込みを行うか否かの判断は、結局のところFailする確率が高いか低いかである。したがって、抵抗平均値やばらつき幅を取得しなくても、目的とする判定閾値でFailする確率が高いかどうかのみが得られればよい。固定の判定閾値で複数回の判定を行えば、Failする確率が高いアドレスに対しては、Failアドレスが検出される。このため、効率的に、追加の書き込みを要するアドレスの検出と書き込みを実行することができる。本実施形態にかかる半導体不揮発性記憶装置１００では、このような動作原理に基づき、書き込みまたは読み出しの成功率（精度）を大幅に向上させている。
【００８９】
（変形例１）
次に、実施形態１の変形例１について説明する。変形例１は、書き込みを行うための条件を変形させた例である。すなわち、抵抗を増加させる書き込みを行う場合に、抵抗変化素子１３の抵抗を一旦低くしてから高くするものである。
前述の実施形態１は、ベリファイ書き込み処理において、判定及びOff書き込みを繰り返し行う場合に、同じ条件でのOff書き込みを行っている。具体的には、抵抗変化素子１３の抵抗を増加させる書き込みを行う場合に、同じ電圧を印加している。本変形例１は、抵抗変化素子１３の抵抗を増加させる書き込みを行う場合に、一旦On書き込みと同じ極性のパルス電圧を印加して抵抗を低くする。その後、Off書き込みのための電圧を印加し、抵抗を増加させる。
【００９０】
ReRAMに対して、Off書き込みを上書きすると抵抗は徐々に高くなっていく。しかし、Off書き込みを繰り返すことは、強い（高電圧、パルス幅が長い等）Off書き込みを行うことと同様である。したがって、前述したように、Off固着やOn固着が発生する可能性がある。特に、実施形態１におけるOff書き込み動作方法では、Passと判定されたアドレスに対しても所定回数の判定を継続する。そして、その判定で、Failと判定されれば、追加のOff書き込みを行う。このため、追加のOff書き込みの頻度が高くなる。そこで、本変形例は、Off書き込みの前に一旦On状態に戻す。これにより、強いOff書き込み条件になることを抑制する。
【００９１】
On状態に戻す動作として、通常のOn書き込み動作を行うと、それは、単パルスによるOn/Off動作を繰り返しているだけである。それでは、追加のOff書き込みによる高抵抗化、すなわち、判定閾値以上への抵抗の増加を確実とすることにならない。そこで、変形例１では、弱いOn書き込み動作を行う。具体的には、通常のOn書き込みでは制限電流を175μAとし、2.2Vの電圧で1μsのパルスをプレート線に印加する。しかし、本変形例１では、制限電流を50μAに低下させ、プレート電圧を1.0Vに下げる。あるいは、パルス幅を10nsに短くする。このようにして、弱いOn書き込みを行う。これによって、通常より抵抗の高いOn状態となる。そして、その後のOff書き込みによって、抵抗を増加させることが容易になる。よって、追加の書き込みにより、判定閾値よりも抵抗を高くすることができる。このように、本変形例は、書き込みの精度を維持しつつ、強いOff書き込みによるOn固着/Off固着の発生を抑制することができる。
【００９２】
（変形例２）
次に、実施形態１の変形例２について説明する。本変形例は、その他の追加書き込み方法を示す。すなわち、抵抗を増加させる書き込みは、抵抗変化素子１３に対して電圧を印加することにより行い、第１電圧において判定及び書き込みの処理を繰り返すステップと、それ以降に、第２電圧において判定及び書き込みの処理を繰り返すステップを有し、第２電圧は第１電圧よりも高くなるようにする。
【００９３】
実施形態1のOff書き込み条件は、例えば、ビット線ＢＬに2.2Vの電圧を20nsのパルスで印加するものである。本変形例２は、追加書き込み条件として、パルス幅を10nsに固定した上で、繰り返し回数を重ねるごとにビット線ＢＬ電圧を0.1V刻みで昇圧する。このようにして、1.8Vから2.5Vの範囲で電圧を変化させる。この方法は、印加電圧1.8V、パルス幅10nsという弱い書き込み条件で、十分高抵抗化するアドレスに対しては、弱い条件で書き込みを行う。弱い書き込み条件で、高抵抗化が不十分なアドレスに対しては、徐々に書き込み条件を強める。これにより、極力弱い書き込み条件で、Off書き込みの高抵抗化を実現できる。なお、昇圧する方法は、繰り返し回数ごとに昇圧しなくてもよい。例えば、電圧が低い方では、繰り返し回数一回ごとに昇圧し、ある程度電圧が高くなったら、２回おき、または、３回おきに昇圧してもよい。繰り返し回数が少ないときの第１電圧と、それ以降の繰り返し回数が多いときの第２電圧とを比較した場合、第２電圧が第１電圧よりも高くなれば、昇圧方法は限らない。
【００９４】
同様の効果を持つ別の方法として、例えば、電圧を2.5Vに固定し繰り返し回数を重ねるごとにパルス幅を10nsから100nsまで大きくしていく方法もある。パルス幅を大きくする方法は、繰り返し回数ごとに大きくしなくてもよい。例えば、電圧が低い方では、繰り返し回数一回ごとに大きくし、ある程度電圧が高くなったら、２回おき、または、３回おきに大きくしてもよい。第１パルス幅において判定及び書き込みの処理を繰り返すステップと、それ以降に第２パルス幅において判定及び書き込みの処理を繰り返すステップを有し、第２パルス幅は第１パルス幅よりも大きくなるようにする。繰り返し回数が少ないときの第１パルス幅と、繰り返し回数が多いときの第２パルス幅とを比較した場合、第２パルス幅が第１パルス幅より大きくなれば、パルス幅を大きくする方法は限らない。
【００９５】
電圧及びパルス幅の変化の両者を組み合わせて効果を重畳させてもよい。あるいは低電圧短時間では高抵抗化しにくい場合は、低電圧ではパルス幅を大きくし、高電圧ではパルス幅を小さくしてもよい。
繰り返し回数が多くなるほど、Off書き込み条件を強くすると、繰り返し回数を少なくすることができる。
【００９６】
また、書き込み終了後に抵抗状態を安定化するため、パルス電圧を加え、読み取りのばらつきを更に低減させてもよい。パルス電圧を、例えば、ビット線に対して1.5Vの電圧で、50nsのパルス幅で印加する。このパルス電圧の印加は、低いOff書き込み条件に相当する。また、パルス電圧を、プレート線に対して1.5Vの電圧で、50nsのパルス幅、175μAの電流で印加してもよい。このパルス電圧は、低いOn書き込み条件に相当する。これらのパルスを1ないし100回印加する。これにより、抵抗状態が安定化する。よって、抵抗値のばらつき幅が縮小し、書き込み精度をより向上させることができる。
【００９７】
（実施形態２）
次に、実施形態２について説明する。本実施形態は、ベリファイ書き込み時の判定閾値Rth_Vを、読み取り時の読取判定閾値Rth_Rよりも高くする動作方法である。
本実施形態にかかる半導体不揮発性記憶装置の構成は、前述の実施形態１における半導体不揮発性記憶装置の構成と同様である。
【００９８】
抵抗平均値がRであるアドレスが、判定閾値Rth_Rで偽Failを起こす確率を確率Pf、判定閾値Rth_Vで誤Passを起こす確率を確率Ppとすると、抵抗値のばらつき幅から、確率Pf、Ppを予め把握することができる。また、確率Ppは判定閾値Rth_Vに依存するため、判定閾値Rth_Vを調整することによって、確率Ppを任意の値に調整することが可能である。ここで、ベリファイ書き込み動作で許容される繰り返し数をNとすると、（確率PpのN乗）X（確率Pf）が所望の不良率Fを下回るように、確率Ppを、即ち判定閾値Rth_Vを設定する。
【００９９】
図１２は、実施形態２にかかる半導体不揮発性記憶装置の判定閾値とアドレス数との関係を例示するグラフであり、横軸は、抵抗値を示し、縦軸は、アドレス数を示す。
図１２に示すように、Pf=10%、Pp=20%の場合、１回目の判定で、1000個のアドレスのうち、200個がPass判定される。その後の追加の書き込みにより、判定閾値Rth_R以下を示すアドレス数は、200個X10%＝20個となる。２回目は200個のうち40個のアドレスが判定閾値Rth_VをPassし、これがRth_R以下となる確率は、40個X10%=4個となる。N回目のFailは、1000個X（確率PpのN乗）X（確率Pf）個に低減する。
【０１００】
前述の実施形態１においては、誤Pass、偽Failの低減に効果がある。しかし、読み出し動作での判定閾値を用いて、書き込みベリファイの判定を行うと、不良率の低減効率が低いという問題がある。例えば、実施形態１では判定閾値とほぼ同じ抵抗平均値を示すアドレスの数を1x10-3にするには10回、1x10-6にするには17回の判定を要する。また、抵抗平均値が判定閾値より高いアドレスがFailを示す確率が仮に1%とすると、それを検出するためには100回の測定が、1ppmの確率で起こり得る偽Failを検出するには1x106回の測定が必要となる。そのため、ばらつきによる動作不良、特に偽Failの発生確率を十分に低減するには非常に多数回の測定を要することになり、ベリファイ判定閾値を読み出し動作の判定値より高く設定してこの回数を減らすことが実用上必要となる。
【０１０１】
図１３及び図１４は、ReRAMの抵抗値のばらつきを例示するグラフであり、横軸は、抵抗値を示し、縦軸は、確率である。
図１３に示すように、抵抗を100回測定した抵抗平均値の分布は、550kΩを中心として50kΩから測定限界の1.5MΩまで分布している。抵抗平均値が200kΩであるアドレス（領域３５）あるいは550kΩであるアドレス（領域３６）に着目する。
図１４に示すように、抵抗平均値が200kΩであるアドレスのプロット３７あるいは550kΩであるアドレスのプロット３８において、100回の抵抗の測定を行うと、抵抗平均値にかかわらず抵抗平均値の2倍あるいは1/2の抵抗を示す確率は、どちらの場合も0.1%程度を示している。
【０１０２】
例えば、読み出し動作での判定閾値Rth_Rを100kΩとして、200kΩの抵抗平均値のアドレスに対してベリファイ書き込みを行い、判定閾値Rth_R未満の値を示して偽Failとなる確率を1ppm以下に下げる場合を考える。このアドレスが偽Failを起こす確率Pfは0.1%であることから、確率Pp^N（確率PpのN乗）を0.1%にし、偽Fail率を0.1%×0.1%=1ppmとする必要がある。ベリファイ書き込みでの判定閾値Rth_Vが100kΩの場合では、確率Pp=(100%-0.1%)であるため、繰り返し回数Nはおよそ14000回となる。しかし、判定閾値Rth_Vが200kΩであれば確率Pp=50%であるため、N=10と大幅に必要な判定の回数を減らすことができる。判定閾値Rth_V を400kΩに設定すればPp=0.1%となるため、必要な判定の回数はわずか1回で済むことになる。
【０１０３】
判定閾値Rth_Vを高めるのは、偽Failだけでなく誤Passの抑制にも有効である。100kΩの判定閾値Rth_Vの場合に、抵抗平均値が100kΩのアドレス数を1ppmに減少させることを考える。誤Pass率が50%であるため、17回の判定が必要である。しかし、200kΩの判定閾値では、誤Pass率が0.1%であるため、2回の判定で1ppmに減少させることができる。
【０１０４】
以上のように本実施形態は、動作回数の低減に非常に大きな効果を示す。単に、判定閾値を上げることは、On/Off固着の発生またはOn状態保持特性の劣化といった別の問題を引き起こす可能性がある。しかし、これについても本実施形態の方法は、ベリファイ書き込み動作において、すべてのアドレスのPass/Fail判定を毎回行っているので、On/Off固着の発生等を最小限に抑えている。
【０１０５】
すべてのアドレス判定を毎回行わずに、単純に判定閾値を上げて、誤Pass、偽Failの発生を十分に抑制しようとすると、繰り返し回数N=1で十分な効果が得られるようにする必要がある。このため、判定閾値Rth_Vを400kΩ以上、つまり、判定閾値Rth_Rの4倍以上に設定する必要がある。それ以下では抵抗平均値が100kΩのアドレスが判定閾値Rth_Vを誤Passする確率を1ppm以下にできない。また、判定閾値Rth_Vにあるアドレスから100kΩで偽Failを起こす確率も1ppm以下にならない。
【０１０６】
しかし、本実施形態の手法では400kΩ以下の値、例えば300kΩの抵抗平均値のアドレスに対して、確率Pfを20ppm、確率Ppを0.5とすることができる。このため、繰り返し回数N=5で偽Fail発生率を1ppm以下に抑制することができる。350kΩの抵抗平均値のアドレスに対しては、若干落ちるが、確率Pfを4ppm、確率Ppを0.8とすることができるため、繰り返し回数N=6とすることができる。300kΩの判定閾値の場合に、100kΩの抵抗平均値のアドレスが誤Passする確率が20ppmである。よって、この場合には、2回の判定を行えば、誤Passの発生確率を十分に抑制することができる。
【０１０７】
図１５は、実施形態２にかかる半導体不揮発性記憶装置及び比較例にかかる半導体不揮発性記憶装置の抵抗と正規化アドレス数を例示する図であり、横軸は抵抗値を示し、縦軸は正規化アドレス数を示す。
図１５に示すように、判定閾値Rth_Rが100kΩ、判定閾値Rth_Vが300kΩの場合に、比較例におけるプロット４１では300kΩ以下の抵抗分布が残っている。さらに100kΩの抵抗を示すものもある。これに対し、実施形態２におけるプロット４２では、同じ書き込み条件、同じ繰り返し回数であるにもかかわらず300kΩ以下への抵抗分布のはみ出しが少なく、100kΩでは1アドレスも検出されていない。つまり、比較例では不十分な判定閾値Rth_Vの値であっても、実施形態２では誤Pass及び偽Failを十分抑制することができる。
【０１０８】
尚、この測定結果では判定閾値Rth_Vを300kΩとしたが、繰り返し回数Nを100回まで許容すれば判定閾値Rth_Vを250kΩまで、つまり、判定閾値Rth_Rの2.5倍まで下げても偽Fail率を1ppm以下に抑制することができる。判定閾値Rth_Vをどこまで抑制できるかは抵抗変化素子１３の読み取りばらつきの大きさや許容する不良率に依存する。判定閾値Rth_Vを概ね判定閾値Rth_Rの2倍以上にすると、実用上十分な精度で不良率を低減できる。
このように、実施形態２にかかる半導体不揮発性記憶装置１００及びその動作方法は、必要な繰り返し数を大幅に減少させることができる。また、必要となる判定閾値を下げることができる。よって、強いOff書き込みによる問題を軽減するという効果がある。
【０１０９】
（実施形態３）
次に、実施形態３について説明する。本実施形態は、書き込み対象アドレスがすべてPass、または、Passに準じた状態になってから、所定の回数だけ、ベリファイ書き込みを繰り返す動作方法である。本実施形態にかかる半導体不揮発性記憶装置１００の構成は、前述の実施形態１における半導体不揮発性記憶装置１００の構成と同様である。
【０１１０】
図１６は、実施形態３にかかる半導体不揮発性記憶装置の書き込み動作を例示するフローチャートである。
図１６のステップＳ５１に示すように、まず、サイクル更新を行う。サイクル更新は、初期値を、例えば、０とする。本実施形態におけるステップＳ５１においては、最終サイクルを、設定しなくてもよい。後述するようにすべてのアドレスが判定においてPassまたはPassに準じた状態になった後、所定回数、サイクルが繰り返されるからである。Passに準じた状態とは、不良率が、誤り検出訂正（ECC）で救済可能な値以下に抑制できた状態のことである。なお、ステップＳ５１において、最終回を設定してもよい。判定において、全アドレスがPassしない場合に、ステップＳ５１における最終回で処理を終了してもよい。
【０１１１】
次に、ステップＳ５２に示すように、アドレス更新を行う。アドレス更新は、書き込み対象のアドレスの判定及び追加の書き込みを行うため、アドレスを１つずつ巡回させるものである。
次に、ステップＳ５３に示すように、判定を行う。判定は、書き込み対象の複数のアドレスに対して、書き込みが十分か不十分かの判定を行う。実施形態１と同様に、書き込みが十分なアドレスはPassである。書き込みが不十分なアドレスはFailである。以下、実施形態１と同様の場合には説明を省略する。
次に、ステップＳ５４に示すように、選択されたアドレスがPassかFailか判断する。選択されたアドレスがPassである（Yesの）場合には、ステップＳ５５に進む。選択されたアドレスがPassでない（Noの）場合には、ステップＳ５６に進む。
【０１１２】
ステップＳ５６に示すように、選択されたアドレスがPassでない（Noの）場合には、書き込みを行う。その後、ステップＳ５５に進む。
ステップＳ５５に示すように、最終アドレスかどうか判断される。最終アドレスでない（Noの）場合には、ステップＳ５２に戻る。これにより、アドレス更新が行われ、次のアドレスが選択される。
ステップＳ５５において、アドレスが最終アドレスである（Yesの）場合には、ステップＳ５７に進む。
【０１１３】
次に、ステップＳ５７に示すように、書き込み対象のすべてのアドレスに対して、書き込み不十分のアドレスがないか、すなわち、すべてのアドレスがPassしているか判断する。ここで、Passアドレスには、Passに準じた状態も含む。書き込み対象のすべてのアドレスがPassしていない（Noの）場合は、ステップＳ５１に戻る。これにより、サイクル更新が行われ、書き込み不十分のアドレスがないと判断されるまで、サイクルが繰り返される。書き込み対象のすべてのアドレスがPassしている（Yesの）場合、すなわち、書き込み不十分のアドレスがないと判断された場合は、ステップＳ５８に進む。
【０１１４】
次に、ステップＳ５８に示すように、サイクル更新を行う。サイクル更新は、初期値を、例えば、０とする。本実施形態におけるステップＳ５８においては、最終サイクルを、所定の回数とする。これにより、書き込み対象のアドレスの書き込みがすべてPassアドレスになってから所定の回数サイクルを繰り返すことになる。
次に、ステップＳ５９に示すように、アドレス更新を行う。アドレス更新は、書き込み対象のアドレスの判定及び追加の書き込みを行うため、アドレスを１つずつ巡回させるものである。
【０１１５】
次に、ステップＳ６０に示すように、書き込みが行われたアドレス及び書き込みが行われないアドレスに対して判定を行う。
次に、ステップＳ６１に示すように、選択されたアドレスがPassかFailか判断する。選択されたアドレスがPassである（Yesの）場合には、ステップＳ６２に進む。選択されたアドレスがPassでない（Noの）場合には、ステップＳ６３に進む。
ステップＳ６３に示すように、選択されたアドレスがPassでない（Noの）場合には、書き込みを行う。その後、ステップＳ６２に進む。
【０１１６】
ステップＳ６２に示すように、選択されたアドレスが最終アドレスかどうか判断される。アドレスが最終アドレスである（Yesの）場合には、ステップＳ６４に進む。選択されたアドレスが最終アドレスでない（Noの）場合には、ステップＳ５９に戻る。これにより、アドレス更新が行われ、次のアドレスが選択される。
【０１１７】
ステップＳ６４に示すように、最終サイクルかどうか判断される。最終サイクルでない（Noの）場合には、ステップＳ５８に戻る。これにより、サイクルが繰り返される。一方、最終サイクルである（Yesの）場合には、処理が終了する。このように、書き込み対象のアドレスがすべてPassアドレスとなってからも、サイクルが所定の回数繰り返される。
【０１１８】
実施形態１及び２では、判定及び書き込みを所定回数繰り返すことにより、Passしたアドレスに対しての抵抗の検証が十分行われるようにした形態である。しかし、抵抗変化素子１３の抵抗が上がりにくい場合には、繰り返し回数を多くする必要がある。抵抗が非常に上がりにくい場合には、所定の繰り返し回数では不足することある。
【０１１９】
本実施形態３においては、すべてのアドレスがPassアドレスまたはPassアドレスに準じた状態になるまで、ベリファイ書き込みを繰り返す。そして、すべてのアドレスがPassアドレスまたはPassアドレスに準じた状態になってから、抵抗の検証に必要な回数だけ繰り返しを行う。また、実施形態１及び２と同様のベリファイ書き込みに先立って、すべてのアドレスをPassアドレスまたはPassアドレスに準じた状態になるまでベリファイ書き込みを行うステップを実施してもよい。
【０１２０】
すなわち、書き込み対象の複数のアドレスの全てに対して、書き込みが十分か不十分かの判定を行うステップＳ５３と、書き込みが不十分のアドレスに対して書き込みを行い、書き込みが十分のアドレスに対して書き込みを行わないステップＳ５６と、を有し、書き込みが不十分のアドレスがないと判断されるまで、ステップＳ５３及びステップＳ５６を繰り返す。そして、書き込み不十分のアドレスがないと判断されてから、実施形態１における判定及び書き込み動作と同様の動作へ進み、所定回数繰り返す。ここで、書き込み不十分のアドレスがないか判断するステップＳ５７を有していてもよい。
【０１２１】
具体的には、複数の抵抗変化素子１３に対して、抵抗が判定閾値より高いか低いかの判定を行い、低抵抗素子に対して、抵抗を増加させる書き込みを行うステップＳ５３と、高抵抗素子に対して抵抗を増加させる書き込みを行わないステップＳ５６と、を有し、低抵抗素子がないと判断されるまで、ステップＳ５３及びステップＳ５６を繰り返す。そして、低抵抗素子がないと判断されてから、実施形態１における判定及び書き込み動作と同様の動作へ進み、所定回数繰り返す。これにより、書き込みの容易さに応じて、全体の繰り返し回数の調整を可能にしたものとなっている。ここで、低抵抗素子がないか判断するステップＳ５７を有していてもよい。
【０１２２】
なお、上述した半導体不揮発性記憶装置１００の動作方法を、動作プログラムとしてもよい。
また、動作プログラムを、コンピュータに、実行させてもよい。その場合には、複数のアドレスの全てに対して、書き込みが十分か不十分かの判定を行わせるステップＳ５３に相当する第３ステップ（手順）と、書き込みが不十分のアドレスに対して書き込みを行わせ、書き込みが十分のアドレスに対して書き込みを行わせないステップＳ５６に相当する第４ステップ（手順）と、を有するようにし、書き込みが不十分のアドレスがないと判断されるまで、第３ステップ（手順）及び第４ステップ（手順）を繰り返させ、書き込みが不十分のアドレスがないと判断されてから、実施形態１における判定及び書き込み動作と同様のステップ（手順）に進むことを実行させる。
【０１２３】
具体的には、コンピュータに、複数の抵抗変化素子１３の全てに対して、高抵抗素子か低抵抗素子かの判定を行わせるステップＳ５３に相当する第３ステップ（手順）と、低抵抗素子に対して、書き込みを行わせ、高抵抗素子に対して書き込みを行わせないステップＳ５６に相当する第４ステップ（手順）と、を有するようにし、低抵抗素子がないと判断されるまで、第３ステップ（手順）及び第４ステップ（手順）を繰り返させ、低抵抗素子がないと判断されてから、実施形態１における判定及び書き込み動作と同様のステップ（手順）に進むことを実行させる。
【０１２４】
したがって、本実施形態３にかかる半導体不揮発性記憶装置１００は、少ない繰り返し回数で書き込みをすることができた場合には、繰り返し回数を少なくする。所定の繰り返し回数では書き込みに不足する場合には、繰り返し回数を多くする。このように、繰り返し回数を増減する調整を動的に行えることができ、余分な繰り返し回数を不要とすることができる。よって、書き込み終了までの時間を短縮できる。また、書き込みのための繰り返し回数に不足することがないので、書き込みの精度を向上させることができる。
【０１２５】
なお、すべてのアドレスがPassアドレスまたはPassに準じた状態になるまでの繰り返しにおいては、比較例と同様に、一旦Passしたアドレスに対しては、それ以降の判定をスキップする方法を用いてもよい。
【０１２６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１２７】
１０  ReRAMアレイ、１１  記憶素子、１２  トランジスタ、１３  抵抗変化素子、１３ａ  上部金属、１３ｂ  抵抗変化層、１３ｃ  下部電極、１３ｄ  絶縁層、２０  周辺回路、２１  アドレス選択回路、２２  書き込み電圧設定回路、２３  抵抗判定回路、２４  判定結果保存回路、３０  バッファメモリ、３１  短パルス、３２  長パルス、３３  領域、３４  領域、３５  領域、３６  領域、３７  プロット、３８  プロット、４１  プロット、４２  プロット、１００  半導体不揮発性記憶装置、Ａ０  行、Ａ１  行、Ａ２  行、Ａ３  行、Ａ４  行、Ａ５  行、Ａ６  行、Ａ７  行、Ａ８  行、Ａ９  行、Ａ１０  行、Ａ１１  行、Ａ１２  行、Ｂ０  行、Ｂ１  行、Ｂ２  行、Ｂ３  行、Ｂ４  行、Ｂ５  行、Ｂ６  行、Ｂ７  行、Ｂ８  行、Ｂ９  行、ＢＬ  ビット線、Ｄ  ドレイン端子、Ｇ  ゲート端子、ＰＬ  プレート線、Ｓ  ソース端子、ＷＬ  ワード線
【図１】
0006402072.tif 000002
【図２】
0006402072.tif 000003
【図３】
0006402072.tif 000004
【図４】
0006402072.tif 000005
【図５】
0006402072.tif 000006
【図６】
0006402072.tif 000007
【図７】
0006402072.tif 000008
【図８】
0006402072.tif 000009
【図９】
0006402072.tif 000010
【図１０】
0006402072.tif 000011
【図１１】
0006402072.tif 000012
【図１２】
0006402072.tif 000013
【図１３】
0006402072.tif 000014
【図１４】
0006402072.tif 000015
【図１５】
0006402072.tif 000016
【図１６】
0006402072.tif 000017