(57)【要約】      （修正有）【課題】プログラム後のメモリの抵抗値の制御を容易にすることのできる抵抗変化メモリを提供する。【解決手段】選択された抵抗変化メモリを第１抵抗状態から第２抵抗状態にプログラムするとき、選択された抵抗変化メモリに流れる電流を第１制限電流値以下に制限するとともに選択された抵抗変化メモリの抵抗状態を第１抵抗状態から第１抵抗状態よりも抵抗値が小さい第３抵抗状態に変化させ、その後、選択された抵抗変化メモリに流れる電流を第１制限電流値よりも大きい第２制限電流値以下に制限し、選択された抵抗変化メモリの抵抗状態を第３抵抗状態から第２抵抗状態に変化させる。【選択図】図８
2016062627.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１配線と、
前記複数の第１配線のそれぞれと交差する複数の第２配線と、
前記複数の第１配線と前記複数の第２配線とのそれぞれの交差領域に設けられた複数の抵抗変化メモリであって、各抵抗変化メモリは、対応する前記第１配線に接続された第１電極と、対応する前記第２配線に接続された第２電極と、前記第１電極と前記第２電極との間に設けられた抵抗変化層と、を有し、前記第１電極と前記第２電極との間に電圧が印加されることによって前記第１電極と前記第２電極との間の抵抗が第１抵抗状態あるいは前記第１抵抗状態よりも抵抗値が大きい第２抵抗状態に切り替わる、複数の抵抗変化メモリと、
前記複数の第１配線を駆動する第１ドライバと、
前記複数の第２配線を駆動する第２ドライバと、
前記第１および第２ドライバを制御する制御回路と、
を備え、
前記制御回路は前記第１および第２ドライバを制御することにより、前記複数の第１および第２配線から１つの第１配線および１つの第２配線を選択することにより、前記複数の抵抗変化メモリから前記選択された第１および第２配線に対応する１つの抵抗変化メモリを選択し、この選択された抵抗変化メモリを前記第１抵抗状態から前記第２抵抗状態にプログラムするとき、前記選択された抵抗変化メモリに流れる電流を第１制限電流値以下に制限するとともに前記選択された抵抗変化メモリの抵抗状態を前記第１抵抗状態から前記第１抵抗状態よりも抵抗値が小さい第３抵抗状態に変化させ、その後、前記選択された抵抗変化メモリに流れる電流を前記第１制限電流値よりも大きい第２制限電流値以下に制限するとともに前記選択された抵抗変化メモリの抵抗状態を前記第３抵抗状態から前記第２抵抗状態に変化させる、半導体集積回路。
【請求項２】
前記第１および第２ドライバは、前記選択された抵抗変化メモリを前記第２抵抗状態から第１抵抗状態にプログラムするとき、前記選択された抵抗変化メモリに流れる電流を前記第１制限電流値よりも小さい第３制限電流値以下に制限する、請求項１に記載の半導体集積回路。
【請求項３】
前記第１および第２ドライバは、
前記選択された抵抗変化メモリを前記第１抵抗状態から前記第３抵抗状態にプログラムするとき、前記選択された前記第１配線に前記選択された第２配線よりも大きい電圧を印加し、
前記選択された抵抗変化メモリを前記第３抵抗状態から前記第２抵抗状態にプログラムするとき、前記選択された第１配線に前記選択された第２配線よりも大きい電圧を印加する、請求項１または２記載の半導体集積回路。
【請求項４】
前記第１および第２のドライバは、前記選択された抵抗変化メモリを前記第１、第２、第３抵抗状態の１つから他の１つにプログラムするとき、前記選択された第１配線に第１電圧を印加し、前記選択された第２配線に第２電圧を印加し、選択されない第１配線に前記第１電圧と前記第２電圧との間の第３電圧を印加し、選択されない第２配線に前記第１電圧と前記第２電圧との間の第４電圧を印加する、請求項１乃至３のいずれかに記載の半導体集積回路。
【請求項５】
前記第３電圧と前記第４電圧は同一の電圧である、請求項３記載の半導体集積回路。
【請求項６】
前記第１および第２ドライバは、前記選択された抵抗変化メモリを前記第１、第２、第３抵抗状態の１つから他の１つにプログラムするとき、前記選択された第１および第２配線にそれぞれ前記第１電圧および前記第２電圧を印加する前に前記選択されない第１および第２配線にそれぞれ前記第３電圧および前記第４電圧を印加する、請求項３または４記載の半導体集積回路。
【請求項７】
前記第１および第２ドライバのうちの一方のドライバは、前記複数の第１配線および前記複数の第２配線のうちの駆動する一方の複数の配線に対応して設けられた複数の第１トランジスタを有し、各第１トランジスタは、ソースおよびドレインの一方が前記一方の複数の配線のうちの対応する配線に接続され、ソースおよびドレインの他方が第１電源に接続される、請求項１乃至６のいずれかに記載の半導体集積回路。
【請求項８】
前記一方のドライバは、各第１トランジスタのゲートに複数の大きさの電圧を印加する、請求項７記載の半導体集積回路。
【請求項９】
前記一方のドライバは、駆動する前記一方の複数の配線に対応して設けられ、前記複数の第１トランジスタとは駆動力が異なる複数の第２トランジスタを更に有し、各第２トランジスタは、ソースおよびドレインの一方が前記一方の複数の配線のうちの対応する配線に接続され、ソースおよびドレインの他方が前記第１電源に接続される、請求項７記載の半導体集積回路。
【請求項１０】
前記複数の第１トランジスタは前記複数の第２トランジスタと異なるチャネル幅を有する請求項９記載の半導体集積回路。
【請求項１１】
前記複数の第１配線は信号が入力される複数の入力配線に接続され、前記複数の第２配線は信号が出力される複数の出力配線に接続され、
前記第１のドライバは、前記抵抗変化メモリを前記第１、第２、第３抵抗状態の１つから他の１つにプログラムするとき、前記抵抗変化メモリに流れる電流を前記第１、第２、第３制限電流値のいずれか以下に制限することを特徴とする、請求項２記載の半導体集積回路。
【請求項１２】
前記複数の第１配線に対応して設けられた複数の第１バッファを有し、各第１バッファは、対応する入力配線に接続される第１入力端子と、対応する第１配線に接続される第１出力端子とを備えている、請求項１１記載の半導体集積回路。
【請求項１３】
前記複数の第２配線に対応して設けられた複数の第２バッファを有し、各第２バッファは、対応する第２配線に接続される第２入力端子と、対応する出力配線に接続される第２出力端子と、を備えている、請求項１１または１２記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体集積回路に関する。
【背景技術】
【０００２】
抵抗変化メモリは、２つの電極と、これら２つの電極の間に設けられた抵抗変化層と、を有する不揮発性メモリである。上記電極に所定の電圧を印加することにより、電極間の電気抵抗を低抵抗状態あるいは高抵抗状態に切り替えること、すなわちプログラムすることができる。いったんプログラムされた抵抗変化メモリは、その抵抗状態は電源を切っても保持される。
【０００３】
抵抗変化メモリをプログラムする際には、電極に印加する電圧の大きさおよび上記電圧の印加時間を適切に制御する必要がある。またそのほかに、プログラム電圧の印加中に抵抗変化メモリに流れる電流の大きさを制御することも重要である。このように、プログラム中に抵抗変化メモリに流れる電流を制御する回路を有する半導体集積回路は、知られている。
【０００４】
複数の抵抗変化メモリを備えた半導体集積回路において、異なる抵抗値を有する複数の抵抗変化メモリに同一のプログラム条件でプログラムを行った場合、プログラム後の抵抗状態が抵抗変化メモリ毎に異なる場合が多い。例えば、比較的大きい抵抗値を有する抵抗変化メモリと比較的小さい抵抗値を有する抵抗変化メモリに同じプログラム条件でプログラムを行った場合、前者の抵抗変化メモリよりも後者の抵抗変化メモリの方がプログラム後の抵抗値が大きくなることがある。
【０００５】
したがって、プログラム後の抵抗変化メモリの抵抗値を制御するためには、プログラム前の抵抗変化メモリの抵抗値に応じて適切なプログラム条件を選択する必要がある。しかし、このようなプログラム条件については、現在のところ知られていない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−２０３９６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本実施形態は、プログラム後のメモリの抵抗値の制御を容易にすることのできる抵抗変化メモリを備えた半導体集積回路を提供する。
【課題を解決するための手段】
【０００８】
本実施形態の半導体集積回路は、複数の第１配線と、前記複数の第１配線のそれぞれと交差する複数の第２配線と、前記複数の第１配線と前記複数の第２配線とのそれぞれの交差領域に設けられた複数の抵抗変化メモリであって、各抵抗変化メモリは、対応する前記第１配線に接続された第１電極と、対応する前記第２配線に接続された第２電極と、前記第１電極と前記第２電極との間に設けられた抵抗変化層と、を有し、前記第１電極と前記第２電極との間に電圧が印加されることによって前記第１電極と前記第２電極との間の抵抗が第１抵抗状態あるいは前記第１抵抗状態よりも抵抗値が大きい第２抵抗状態に切り替わる、複数の抵抗変化メモリと、前記複数の第１配線を駆動する第１ドライバと、前記複数の第２配線を駆動する第２ドライバと、前記第１および第２ドライバを制御する制御回路と、を備え、前記制御回路は前記第１および第２ドライバを制御することにより、前記複数の第１および第２配線から１つの第１配線および１つの第２配線を選択することにより、前記前記複数の抵抗変化メモリから前記選択された第１および第２配線に対応する１つの抵抗変化メモリを選択し、この選択された抵抗変化メモリを前記第１抵抗状態から前記第２抵抗状態にプログラムするとき、前記選択された抵抗変化メモリに流れる電流を第１制限電流値以下に制限するとともに前記選択された抵抗変化メモリの抵抗状態を前記第１抵抗状態から前記第１抵抗状態よりも抵抗値が小さい第３抵抗状態に変化させ、その後、前記選択された抵抗変化メモリに流れる電流を前記第１制限電流値よりも大きい第２制限電流値以下に制限し、前記選択された抵抗変化メモリの抵抗状態を前記第３抵抗状態から前記第２抵抗状態に変化させる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態による半導体集積回路を示すブッロク図。
【図２】第１実施形態に係る抵抗変化メモリを示す断面図。
【図３】図３（ａ）、３（ｂ）は、電流制限回路の例を示す図。
【図４】図４（ａ）、４（ｂ）は、電流制限回路の他の例を示す図。
【図５】図５（ａ）は、複数のメモリに対してリセットの前後の抵抗を測定した結果を示す図、図５（ｂ）は、リセット前のメモリ１０の抵抗とリセット電圧との関係を示す図。
【図６】第１実施形態におけるプログラム方法を説明する図。
【図７】セット動作の具体的な手順の一例を示すフローチャート。
【図８】リセット動作の具体的な手順の一例を示すフローチャート
【図９】セット動作の具体的な手順の他の例を示すフローチャート。
【図１０】第１実施形態の第１実施例による半導体集積回路を示す回路図。
【図１１】第１実施形態の第２実施例による半導体集積回路を示す回路図。
【図１２】第１実施形態の第３実施例による半導体集積回路を示す回路図。
【図１３】第１実施形態の第４実施例による半導体集積回路を示す回路図。
【図１４】第１実施形態の第５実施例による半導体集積回路を示す回路図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照して説明する。
【００１１】
（第１実施形態）
第１実施形態による半導体集積回路を図１に示す。この第１実施形態の半導体集積回路は、メモリセルアレイ１と、制御回路２０と、ドライバ２１と、ドライバ２２と、を備えている。メモリセルアレイ１はマトリクス状に配列された複数のメモリセルを有し、ドライバ２１およびドライバ２２によって駆動される。ドライバ２１、２２は制御回路２０から制御信号を受け取り、この制御信号に基づいて、選択したメモリセルにプログラム電圧を印加する。同様にドライバ２１、２２は上記制御信号に基づいて、選択していないメモリに所定の電圧を与えることもあるし、特定のメモリの電極の電位を浮遊状態にすることもある。
【００１２】
各メモリセルは、図２に示す抵抗変化メモリ（以下、メモリともいう）１０を有している。このメモリ１０は、電極１１、１３と、これらの電極１１、１３の間に挟まれた抵抗変化層１２と、を有する。抵抗変化層１２は、例えばチタン酸化物、ハフニウム酸化物、タンタル酸化物、およびアルミ酸化物といった金属酸化物でもあってもよいし、チタン酸窒化物、ハフニウム酸窒化物、タンタル酸窒化物、およびアルミ酸窒化物といった金属酸窒化物でもあってもよい。あるいはシリコン酸化物などの半導体酸化物であってもよいし、シリコン窒化物などの半導体窒化物、またはシリコン酸窒化物などの半導体酸窒化物であってもよい。また、アモルファスシリコン等の半導体材料であってもよい。また上記材料を積層した膜であってもよい。
【００１３】
このメモリ１０においては、電極１１、１３に所定の電圧を印加することによって、電極間の電気抵抗を変化させることができる。ここでは、メモリ１０の抵抗を高抵抗状態から低抵抗状態に変化させることをセットと称し、メモリ１０の抵抗を低抵抗状態から高抵抗状態に変化させることをリセットと称する。また、メモリ１０をセットするために必要な電圧をセット電圧と称し、メモリ１０をリセットするために必要な電圧をリセット電圧と称する。
【００１４】
メモリ１０の種類として、ユニポーラ型メモリと、バイポーラ型メモリがある。ユニポーラ型メモリでは、セット電圧およびリセット電圧の極性が同じである。例えば、メモリ１０をセットするために電極１１に印加する電圧よりも大きい電圧を電極１３に印加するときは、リセットする場合にも同様に電極１１に印加する電圧よりも大きい電圧を電極１３に印加する。一方、バイポーラ型メモリでは、セット電圧とリセット電圧の極性が逆となる。例えば、メモリ１０をセットするために電極１１に印加する電圧よりも大きい電圧を電極１３に印加するときは、リセットするために電極１１に印加する電圧よりも小さい電圧を電極１３に印加する。
【００１５】
あるメモリがユニポーラ型メモリであるかバイポーラ型メモリであるかは、電極や抵抗変化層を構成する材料、あるいはフォーミング（製造後にメモリの電極間に所定の電圧を印加することで、メモリ機能を活性化させること）の電圧印加条件等で決まる。同様に、セット電圧やリセット電圧の極性も、電極や抵抗変化層を構成する材料、あるいはフォーミングの電圧印加条件等で決まる。
【００１６】
メモリ１０にセット電圧またはリセット電圧を印加する際に、プログラム後のメモリ１０の抵抗値のばらつきを抑える目的で、あるいはメモリ１０の不可逆的な破壊を防ぐ目的で、プログラム中にメモリ１０に流れる電流をある値（制限電流値）以下に制限する機構が設けられる。例えば、一般にセット時の制限電流値を大きくすれば、セット後のメモリ１０の抵抗値は小さくなる。一方、リセット時は上記の制限電流値を十分大きくすることでメモリ１０に十分大きな量の電流を流し、そのときに発生する熱によってメモリ１０の抵抗状態を高抵抗状態へと変化させる。このようにセット時とリセット時では、異なる制限電流値が用いられる。
【００１７】
（電流制限回路の例）
制限電流値を生成する電流制限回路の例を図３（ａ）、３（ｂ）に示す。電流制限回路３０としてメモリ１０と直列に接続されたトランジスタを用い、このトランジスタのゲートに印加する電圧Ｖｃｏｍｐを制御することで、メモリに流れる最大電流を制御する。例えば、図３（ａ）の例では、トランジスタとしてｎチャネルトランジスタ３１を用い、メモリ１０の一方の電極に電圧Ｖｐｇｍ１を印加し、もう一方の電極にはｎチャネルトランジスタ３１を介して上記電圧Ｖｐｇｍ１よりも小さい電圧Ｖｐｇｍ２を印加する。このときトランジスタ３１のゲートには上記電圧Ｖｐｇｍ２よりも大きい電圧Ｖｃｏｍｐを印加し、このＶｃｏｍｐの大きさを制御することによって、プログラム中にメモリ１０に流れる最大電流を制御する。
【００１８】
電流制限回路３０としてｐチャネルトランジスタ３１ａを用いた例を図３（ｂ）に示す。この例では、メモリ１０の一方の電極に電圧Ｖｐｇｍ２を印加し、もう一方の電極にはｐチャネルトランジスタ３１ａを介して上記Ｖｐｇｍ２よりも大きい電圧Ｖｐｇｍ１を印加する。このときトランジスタ３１ａのゲートには上記電圧Ｖｐｇｍ１よりも小さい電圧Ｖｃｏｍｐを印加し、この電圧Ｖｃｏｍｐの大きさを制御することによって、プログラム中にメモリ１０に流れる最大電流を制御する。
【００１９】
このように、図３（ａ）、３（ｂ）に示す例では、トランジスタのゲートに印加する電圧に複数の電圧Ｖｃｏｍｐを用いることで複数の制限電流値を設定することができる。
【００２０】
（電流制限回路の他の例）
他の例として、図４（ａ）、４（ｂ）に示すように、電流制限回路３０として、複数のトランジスタおよびセレクタを用いてもよい。例えば、図４（ａ）に示す例では、電流制限回路３０として、ｎ（ｎ≧２）個のｎチャネルトランジスタ３１１〜３１ｎと、セレクタ３２とを備えている。この場合、メモリ１０の一方の電極に電圧Ｖｐｇｍ１が印加され、メモリ１０の他方の電極にセレクタ３２が接続される。このセレクタ３２には複数のトランジスタ３１１〜３１ｎのそれぞれのソースおよびドレインのうちの一方が接続され、セレクタ３２によって複数のトランジスタ３１１〜３１ｎのうちの１つのトランジスタが選択される。また、各トランジスタ３１ｉ（ｉ＝１，・・・，ｎ）のソースおよびドレインのうちの他方に、上記電圧Ｖｐｇｍ１よりも小さな電圧Ｖｐｇｍ２が印加される。そして、各トランジスタ３１ｉ（ｉ＝１，・・・，ｎ）のゲートには上記電圧Ｖｐｇｍ２よりも大きな電圧Ｖｃｏｍｐが印加される。
【００２１】
一方、図４（ｂ）に示す例では、電流制限回路３０として、ｎ（ｎ≧２）個のｐチャネルトランジスタ３１ａ１〜３１ａｎと、セレクタ３２とを備えている。この場合、メモリ１０の一方の電極に電圧Ｖｐｇｍ２が印加され、メモリ１０の他方の電極にセレクタ３２が接続される。このセレクタ３２には複数のトランジスタ３１ａ１〜３１ａｎのそれぞれのソースおよびドレインのうちの一方が接続され、セレクタ３２によって複数のトランジスタ３１ａ１〜３１ａｎのうちの１つのトランジスタが選択される。また、各トランジスタ３１ａｉ（ｉ＝１，・・・，ｎ）のソースおよびドレインのうちの他方に、上記電圧Ｖｐｇｍ２よりも大きな電圧Ｖｐｇｍ１が印加される。そして、各トランジスタ３１ｉ（ｉ＝１，・・・，ｎ）のゲートには上記電圧Ｖｐｇｍ１よりも小さな電圧Ｖｃｏｍｐが印加される。
【００２２】
これらの図４（ａ）、４（ｂ）に示す例においては、複数のトランジスタはそれぞれ駆動力が異なり、同じ電圧を印加したときにソース、ドレイン間に流れる電流量がそれぞれ異なるように設計する。具体的には、チャネル幅、ゲート長、あるいはゲート絶縁膜の膜厚、チャネルの不純物濃度などのうちのいずれか、またはいずれか複数を異なるようにトランジスタを作製する。メモリ１０をプログラムする際には、用いる電流制限量に応じて、メモリ１０と特定のトランジスタをセレクタによって接続する。
【００２３】
なお、図３（ａ）乃至図４（ｂ）に示す電流制限回路は、ドライバ２１およびドライバ２２のうちの少なくとも一方に設けられる。
【００２４】
一般に、メモリ１０をセットする場合には制限電流値を小さく設定し、メモリ１０に流れる最大電流を小さい値に制限する。このときセット後のメモリ１０の抵抗値はこの制限電流値に依存し、制限電流値を小さくするほど、セット後のメモリ１０の抵抗値は大きくなる。一方。メモリ１０をリセットする場合には制限電流値を大きくし、メモリ１０に十分大きな電流が流れるようにする。これはメモリ１０をリセットするために電流による熱を発生させる必要があるためである。
【００２５】
低抵抗状態にある複数のメモリ１０をリセットするとき、そのプログラム条件が同じであっても、リセット後のメモリ１０の抵抗がメモリ１０ごとに異なる場合がある。具体的には、ある好適な材料の組み合わせのメモリ１０においては、抵抗がより小さいメモリ１０の方が、リセット後の抵抗値が大きくなる。これらのことを図５（ａ）、５（ｂ）を参照して説明する。図５（ａ）は、複数のメモリに対してリセットの前後の抵抗を測定した結果を示す図である。横軸がリセット前のメモリ１０の抵抗（オン抵抗）を示し、縦軸はリセット後のメモリ１０の抵抗（オフ抵抗）を示す。
【００２６】
一方、リセット電圧を複数のメモリで比較すると、より抵抗が小さいメモリ１０の方がリセット電圧は小さくなる。すなわち、より小さい電圧でリセットが発生する。図５（ｂ）は、リセット前のメモリ１０の抵抗とリセット電圧との関係を示す図である。横軸がリセット前のメモリ１０の抵抗を示し、縦軸はリセット電圧を示す。
【００２７】
リセット電圧が小さすぎる場合、メモリ１０が意図せずに誤リセットしてしまう可能性が高くなる。例えば読み出しを行う際や、他のメモリをプログラムする際にメモリ１０に微小な電圧が印加されたとき、その電圧によって状態が変化する可能性がある。もしリセット電圧が十分大きければ、この問題が起こる可能性は低減できる。
【００２８】
図５（ｂ）からわかるように、メモリ１０の誤リセットを防ぐためにはオン抵抗を比較的大きくしておくことが有効である。しかし、図５（ａ）からわかるように、メモリ１０のオン抵抗が大きい場合、リセット後のオフ抵抗が十分大きくできない。すなわち、高抵抗状態のメモリ１０で大きなリーク電流が発生し、それによる読み出しエラーや消費電力の増大が発生する。
【００２９】
（プログラム方法）
そこで、本実施形態においては、メモリのリセット電圧を十分に大きくし、かつオフ抵抗、すなわちリセット後のメモリ１０の抵抗を十分大きくするために、以下のようなプログラム方法を用いる。メモリ１０をセットするときには、制限電流値を第１電流値Ｉｃｏｍｐ１に設定したうえでセット電圧を印加する。メモリ１０をリセットするときには、まず制限電流値を上記第１電流値Ｉｃｏｍｐ１よりも大きい第２電流値Ｉｃｏｍｐ２に設定したうえでセット電圧を印加し、その後、制限電流値を上記第２電流値Ｉｃｏｍｐ２よりも大きい第３電流値Ｉｃｏｍｐ３に設定したうえでリセット電圧を印加する。
【００３０】
本実施形態のプログラム方法を要約すると、図６に示すようになる。すなわち、セットの際は、オン抵抗Ｒｏｎのターゲットに合わせてセット動作を行う。オン抵抗Ｒｏｎが大きければ誤読み出しを防止することができる。
【００３１】
リセットの際は、一度小さいオン抵抗Ｒｏｎ’までセットさせ、その後リセットさせる。これにより、十分なオフ抵抗Ｒoffまでリセットさせることができる。
【００３２】
上記のプログラム方法において、第１電流値Ｉｃｏｍｐ１を比較的小さい値に設定することで、メモリ１０のオン抵抗が小さくなりすぎることを防ぐことができる。これによりメモリ１０の誤リセットの可能性は小さくなる。一方、リセットの際には、最初に比較的大きな第２電流値Ｉｃｏｍｐ２を用いてセット動作を行うことで、一時的にメモリ１０のオン抵抗を十分小さくする。その後、リセット電圧を印加すれば、十分に大きなオフ抵抗を得ることができる。リセット電圧を印加する際に用いる第３制限電流値Ｉｃｏｍｐ３は、メモリ１０に十分な電流を流すことができるように十分大きな値に設定する。
【００３３】
（セット動作）
図７はセット動作の具体的な手順の一例を示すフローチャートである。まず、制限電流値を第１電流値Ｉｃｏｍｐ１に設定し（Ｓ１）、セット電圧をメモリ１０に印加する（Ｓ２）。その後、メモリ１０の抵抗を読み出し、この読み出した値を第１判定値と比較する（Ｓ３）。もしメモリ１０の抵抗が第１判定値よりも小さい場合は、セット動作を終了する（Ｓ５）。一方、メモリ１０の抵抗が第１判定値よりも大きい場合は、再度セット電圧を印加する。この場合は、セット電圧として、前回用いた電圧よりも大きい電圧を用いるか、あるいは前回の電圧印加時間よりも長い時間電圧を印加する（Ｓ４）。これによりメモリ１０に、より大きなストレスが加わるようにする。その後、再度メモリ１０の抵抗を読み出し、この読み出した値を第１判定値と比較する（Ｓ３）。メモリ１０の抵抗値が第１判定値よりも小さくなるまでこの手順を繰り返す。
【００３４】
図８はリセットの具体的な手順の一例を示すフローチャートである。この手順は大きくステップＡ，Ｂの２つに分かれる。ステップＡでは、まず制限電流値を第２電流値Ｉｃｏｍｐ２に設定し（Ｓ１１）、セット電圧をメモリ１０に印加する（Ｓ１２）。その後、メモリ１０の抵抗を読み出し、この読み出した値を第２判定値と比較する（Ｓ１３）。もしメモリ１０の抵抗が第２判定値よりも小さい場合は、ステップＢへと進む。一方、メモリ１０の抵抗が第２判定値よりも大きい場合は、再度セット電圧を印加する。この場合は、セット電圧として、前回用いた電圧よりも大きい電圧を用いるか、あるいは前回の電圧印加時間よりも長い時間電圧を印加する（Ｓ１４）。これによりメモリ１０に、より大きなストレスが加わるようにする。その後、再度メモリ１０の抵抗を読み出し、この読み出した値を第２判定値と比較する（Ｓ１３）。メモリ１０の抵抗値が第２判定値よりも小さくなるまでこの手順を繰り返す。なお、第２電流値Ｉｃｏｍｐ２は上記第１電流値Ｉｃｏｍｐ１よりも大きい値に設定し、第２判定値は上記第１判定値よりも小さい値に設定する。
【００３５】
次にステップＢでは、制限電流値を第３電流値Ｉｃｏｍｐ３に設定し（Ｓ１５）、リセット電圧をメモリ１０に印加する（Ｓ１６）。その後、メモリ１０の抵抗を読み出し、この読み出した値を第３判定値と比較する（Ｓ１７）。もしメモリ１０の抵抗が第３判定値よりも大きい場合は、リセット動作は終了する（Ｓ１９）。一方、メモリの抵抗が第３判定値よりも小さい場合は、再度リセット電圧を印加する。この場合、リセット電圧として、前回用いた電圧よりも大きい電圧を用いるか、あるいは前回の電圧印加時間よりも長い時間電圧を印加する（Ｓ１８）。これにより、メモリ１０により大きなストレスが加わるようにする。その後再度メモリ１０の抵抗を読み出し、この読み出した値を第３判定値と比較する（Ｓ１７）。メモリ１０の抵抗が第３判定値よりも大きくなるまでこの手順を繰り返す。なお、ここではメモリ１０の抵抗と第２判定値とを比較するステップＳ１３は省略してもよい。すなわち、制限電流値を第２電流値Ｉｃｏｍｐ２に設定し、セット電圧を印加したら、その後すぐにステップＳ１５に進んでもよい。第３電流値Ｉｃｏｍｐ３は上記第２電流値Ｉｃｏｍｐ２よりも大きい値に設定し、第３判定値は上記第１判定値よりも大きい値に設定する。
【００３６】
図８に示すリセット動作の手順を用いることで、メモリ１０のオフ抵抗を十分大きくすることができる。
【００３７】
（セット動作の他の手順）
次に、セット動作の具体的な手順の他の例について図９を参照して説明する。まず、図７に示した例と同様に、制限電流値をＩｃｏｍｐ１に設定し（Ｓ１）、セット電圧を印加する（Ｓ２）。続いて、メモリ１０の抵抗を読み出し、この読み出した値を第１判定値と比較する（Ｓ３）。もしメモリ１０の抵抗が第１判定値よりも小さい場合は、次のステップＳ５に進む。一方、メモリ１０の抵抗が第１判定値以上の場合は、再度セット電圧を印加する。この場合は、前回用いた電圧よりも大きい電圧を用いるか、あるいは前回の電圧印加時間よりも長い時間電圧を印加する（Ｓ４）。これにより、メモリ１０により大きなストレスが加わるようにする。その後、再度メモリの抵抗を読み出し、この読み出した値を第１判定値と比較し、メモリ１０の抵抗値が第１判定値よりも小さくなるまでこの手順を繰り返す。メモリ１０の抵抗値が第１判定値よりも小さくなったら、メモリ１０の抵抗値を第４判定値と比較する（Ｓ５）。メモリ１０の抵抗値が第４判定値よりも大きい場合、セット動作は終了する。一方、メモリ１０の抵抗が第４判定値よりも小さい場合は、一度、メモリ１０をリセットさせた後、再度最初のステップからやり直す。このときのリセットの手順は、図８に示したステップＢと同様である。まず、制限電流値を第３電流値Ｉｃｏｍｐ３に設定し（Ｓ６）、リセット電圧を印加する（Ｓ７）。その後、メモリ１０の抵抗を読み出し、この読み出した値を第３判定値と比較する（Ｓ８）。もし、メモリ１０の抵抗が第３判定値よりも大きい場合は、ステップ２に戻る。一方、メモリの抵抗が第３判定値以下の場合は、再度リセット電圧を印加する。この場合、リセット電圧として、前回用いた電圧よりも大きい電圧を用いるか、あるいは前回の電圧印加時間よりも長い時間電圧を印加する（Ｓ９）。これによりメモリ１０に、より大きなストレスが加わるようにする。その後再度メモリ１０の抵抗を読み出し、この読み出した値を第３判定値と比較する（Ｓ８）。メモリ１０の抵抗が第３判定値よりも大きくなるまでこの手順を繰り返す。なお、ここではメモリ１０の抵抗と第３判定値とを比較するステップＳ８は省略してもよい。すなわち、制限電流値を第３電流値Ｉｃｏｍｐ３に設定し、リセット電圧を印加したら、その後すぐにステップＳ２に戻ってもよい。上記第４判定値は上記第１判定値よりも小さい値に設定する。
【００３８】
図９に示すセットの手順を用いることで、メモリ１０のオン抵抗が小さくなりすぎることを防ぐことができる。これにより、メモリ１０が誤リセットされてしまう可能性を低くすることができる。
【００３９】
以上説明した本実施形態のプログラム方法では、リセット電圧を印加する時の制限電流値を十分大きく設定した。その理由は、メモリ１０に流れる電流を十分大きくすることで熱を発生させるためである。このように熱を利用したプログラムは、メモリ１０がユニポーラ型のときに特に有効である。例えば図２に示したメモリ１０において抵抗変化膜１２としてチタン酸化物や、ハフニウム酸化物、タンタル酸化物といった金属酸化物、あるいはシリコン酸化物といった半導体酸化物を用い、電極１１としてチタンあるいは窒化チタンを用い、電極１３としてニッケルを用いた場合、メモリはユニポーラ型となる。このメモリに対しては、これまでに示したプログラム手法は有効である。
【００４０】
（第１実施例）
第１実施形態の第１実施例による半導体集積回路を図１０に示す。この第１実施例の半導体集積回路は、マトリクス状に配列されたメモリセルＭｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）を有するセルアレイ１と、ドライバ２１と、ドライバ２２と、図示しない制御回路と、を備えている。各メモリセルＭｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）は、図２に示すメモリ１０を備えている。第ｉ（ｉ＝１，・・・，ｍ）行のｎ個のメモリセルＭｉ１〜Ｍiｎは一端が対応するワード線ＷＬｉに接続される。第ｊ（ｊ＝１，・・・，ｎ）列のｍ個のメモリセルＭ１ｊ〜Ｍｍｊは一端が対応するビット線ＢＬｊに接続される。ワード線ＷＬ１〜ＷＬｍはドライバ２１によって駆動され、ビット線ＢＬ１〜ＢＬｎはドライバ２２によって駆動される。
【００４１】
（第２実施例）
第１実施形態の第２実施例による半導体集積回路を図１１に示す。この第２実施例の半導体集積回路は、メモリセルＭｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）がメモリ１０ｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）からなっている場合である。
【００４２】
（第３実施例）
第１実施形態の第３実施例による半導体集積回路を図１２に示す。この第３実施例の半導体集積回路は、メモリセルＭｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）がメモリ１０ｉｊと、ダイオード１５ｉｊとを有し、メモリ１０ｉｊと、ダイオード１５ｉｊが直列に接続されている場合である。
【００４３】
図１２においては、各メモリセルＭｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）のメモリ１０ｉｊの一方の電極が対応するビット線ＢＬｊに接続され、メモリ１０ｉｊの他方の電極がダイオード１５ｉｊのアノードに接続され、ダイオード１５ｉｊのカソードが対応するワード線ＷＬｉに接続されている。図１２に示す場合とは逆に、メモリ１０ｉｊの他方の電極がダイオード１５ｉｊのカソードに接続され、ダイオード１５ｉｊのアノードが対応するワード線ＷＬｉに接続されるように構成してもよい。また、メモリ１０ｉｊとダイオード１５ｉｊの配列順序を逆にしてもよい。すなわち、各メモリセルＭｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）のダイオード１５ｉｊのアノードが対応するビット線ＢＬｊに接続され、ダイオード１５ｉｊのカソードがメモリ１０ｉｊの一方の電極に接続され、メモリ１０ｉｊの他方の電極が対応するワード線ＷＬｉに接続されるように構成してもよい。この場合において、ダイオード１５ｉｊのアノードとカソードの接続位置を逆にしてもよい。
【００４４】
第１実施例乃至第３実施例においては、ドライバ２１、２２は、これまでに示したプログラム方法（例えば、図７乃至図９に示したプログラム手順）にしたがって、選択したメモリにプログラム電圧を与えるとともに、プログラム時の制限電流値を設定する。
【００４５】
第１乃至第３実施例の半導体集積回路は、例えば、大容量データを記憶するファイルメモリに使用できる。それぞれのメモリに任意のデータをプログラムし、必要なときには任意のメモリにプログラムされたデータを読み出すことができる。
【００４６】
また、第１乃至第３実施例の半導体集積回路は、例えばプログラマブルロジックデバイスにおける配線の切り替え回路としても使用できる。プログラマブルロジックデバイスは、チップ製造後に回路を書き換えることができる半導体集積回路である。プログラマブルロジックデバイスは複数の配線を有し、これらの配線のうち選択された２本の配線どうしを電気的に接続または非接続にする。
【００４７】
（第４実施例）
第１実施形態の第４実施例による半導体集積回路を図１３に示す。この第４実施例の半導体集積回路は、図１０に示す第１実施例の半導体集積回路をプログラマブルロジックデバイスに適用した場合の一例である。
【００４８】
この第４実施例においては、各ビット線ＢＬｊ（ｊ＝１，・・・，ｎ）は、トランジスタ４２ｊを介してインバータ等のバッファ４１ｊの出力端子に接続され、バッファ４１ｊの入力端子は入力線ＩＮｊに接続される。同様に、各ワード線ＷＬｉ（ｉ＝１，・・・，ｍ）は、トランジスタ４４ｉを介してインバータ等のバッファ４５ｉの入力端子に接続され、バッファ４５ｉの出力端子は出力線ＯＵＴｉに接続される。
【００４９】
メモリセルＭｉｊ（ｉ＝１，・・・,ｍ、ｊ＝１，・・・，ｎ）はそれぞれメモリ１０ｉｊを含み、入力線ＩＮｊに入力された信号は低抵抗状態にあるメモリ１０ｉｊを介して出力線ＯＵＴｉへと伝達される。なお、ここでビット線ＢＬｊとバッファ４１ｊの間のトランジスタ４２ｊ、あるいはワード線ＷＬｉとバッファ４５ｉとの間のトランジスタ４４ｉは、なくてもよい。ただし、これらのトランジスタを設けることで、メモリのプログラムを行う際にセット電圧あるいはリセット電圧によってバッファ等の周辺回路にダメージが入ることを防ぐことができる。
【００５０】
（第５実施例）
第１実施形態の第５実施例による半導体集積回路を図１４に示す。この第５実施例の半導体集積回路は、第４実施例において、メモリセルＭｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）がメモリ１０ｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）からなっている場合である。なお、メモリ１０ｉｊ（ｉ＝１，・・・，ｍ，ｊ＝１，・・・，ｎ）をプログラマブルロジックデバイスに適用した場合、図１２に示すようにダイオードを用いるのは望ましくない。なぜならば、ダイオードを設けると信号のレベル（ハイ／ロー）によって伝達のスピードに差が生じるためである。
【００５１】
第４実施例および第５実施例の半導体集積回路は、ワード線ＷＬｉ（ｉ＝１，・・・，ｍ）に接続されるドライバ２１と、ビット線ＢＬｊ（ｊ＝１，・・・，ｎ）に接続されるドライバ２２と、を有する。これらのドライバ２１、２２はこれまでに示したプログラム方法（例えば、図７乃至図９に示したプログラム手順）にしたがって、選択したメモリにプログラム電圧を与えるとともに、プログラム時の制限電流値を設定する。ただしこのとき、制限電流値はドライバ２１によって設定することが望ましい。その理由を以下に示す。
【００５２】
例えば、図１４に示す第５実施例の半導体集積回路において、メモリ１０２１にセット電圧を与える場合を考える。このときメモリ１０２１の電極にはドライバ２１、２２によって電位差が与えられる。ここではドライバ２１はワード線ＷＬ２にセット電圧Ｖｓｅｔを与え、ドライバ２２はビット線ＢＬ１に接地電圧Ｖｓｓを与えるとする。なお逆に、ドライバ２１がワード線ＷＬ２に接地電圧Ｖｓｓを与え、ドライバ２２はビット線ＢＬ１にセット電圧Ｖｓｅｔを与えてもよい。いずれにしても同時に、メモリ１０２１以外のメモリに誤ってデータが書き込まれるのを防ぐために、ドライバ２１はワード線ＷＬ２以外のワード線にプログラム防止電圧Ｖｉｎｈを与え、ドライバ２２はビット線ＢＬ１以外のビット線にプログラム防止電圧Ｖｉｎｈを与える。プログラム防止電圧Ｖｉｎｈは例えばＶｓｅｔとＶｓｓの中間の電圧である。
【００５３】
ここで、すでにこのときメモリ１０１１が低抵抗状態である場合を考える。ワード線ＷＬ１にはドライバ２１によってプログラム防止電圧Ｖｉｎｈが与えられており、ビット線ＢＬ１にはドライバ２２によって接地電圧Ｖｓｓが与えられている。もし、ドライバ２２によって制限電流値を設定する場合、図３（ａ）乃至図４（ｂ）に示すように、ビット線ＢＬ１には電流制限用のトランジスタを介してＶｓｓが与えられることになる。一方、ビット線ＢＬ１には、ドライバ２１からワード線ＷＬ１に印加されたプログラム防止電圧Ｖｉｎｈが低抵抗状態のメモリ１０１１を介して印加される。ここで、ビット線ＢＬ１の電位が接地電圧Ｖｓｓになるかプログラム防止電圧Ｖｉｎｈになるかは、上記電流制限用トランジスタの抵抗とメモリ１０１１の抵抗の比で決まる。しかし、電流制限用トランジスタは比較的大きな抵抗値を有するため、ビット線ＢＬ１の電位はプログラム防止電圧Ｖｉｎｈに近い電位になる可能性がある。ビット線ＢＬ１の電位がプログラム防止電圧Ｖｉｎｈになってしまうと、メモリ１０２１に印加される電圧もプログラム防止電圧Ｖｉｎｈになってしまい、メモリ１０２１のセットができなくなる。
【００５４】
しかし、もしドライバ２１によって制限電流値を設定する場合は、ワード線ＷＬ１には電流制限用のトランジスタを介してプログラム防止電圧Ｖｉｎｈが与えられることになる。一方、ビット線ＢＬ１には、ドライバ２１によって電流制限用トランジスタを介さずに接地電圧Ｖｓｓが印加される。したがってビット線ＢＬ１の電位は接地電圧Ｖｓｓになり、メモリ１０２１を確実にセットさせることができる。
【００５５】
上述の説明では、メモリ１０２１をセットする際に、既にメモリ１０１１が低抵抗状態である場合を考えた。
【００５６】
一方、メモリ１０２１をセットする際に、例えば既にメモリ１０２２が低抵抗状態である場合には、上記の例とは逆に、ドライバ２２で制限電流値を設定することが望ましい。しかし、プログラマブルロジックデバイスの場合、同じ出力線に接続された複数のメモリが同時に低抵抗状態になることはない。ここでいう出力線とは、メモリとバッファの入力とを接続する配線のことであり、図１３または図１４ではワード線に相当する。もし同じワード線に接続された複数のメモリ、例えばメモリ１０２１とメモリ１０２２とが両方とも低抵抗状態であったとすると、入力線ＩＮ１とＩＮ２がいずれも出力線ＯＵＴ２に接続されることを意味し、出力線ＯＵＴ２から出力される信号が不定となる。
【００５７】
したがって、メモリをプログラマブルロジックデバイスに適用した場合には、出力線（ここではワード線）に接続されるドライバ（ここではドライバ２１）によって制限電流値を設けることが適当である。
【００５８】
以上説明したように、本実施形態および第１乃至第５実施例によれば、プログラム後のメモリの抵抗値の制御を容易にすることが可能な抵抗変化メモリを備えた半導体集積回路を提供することができる。
【００５９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００６０】
１  セルアレイ
１０  抵抗変化メモリ
１０１１〜１０ｍｎ  抵抗変化メモリ
１１  電極
１２  抵抗変化層
１３  電極
１５１１〜１５ｍｎ  ダイオード
２０  制御回路
２１  ドライバ
２２  ドライバ
３１  電流制限素子
３１ａ  電流制限素子
３２  セレクタ
４１１〜４１ｎ  バッファ
４２１〜４２ｎ  トランジスタ
４４１〜４４ｍ  トランジスタ
４５１〜４５ｍ  バッファ
Ｍ１１〜Ｍｍｎ  メモリセル
ＢＬ１〜ＢＬｎ  ビット線
ＷＬ１〜ＷＬｍ  ワード線
【図１】
2016062627.tif 000003
【図２】
2016062627.tif 000004
【図３】
2016062627.tif 000005
【図４】
2016062627.tif 000006
【図５】
2016062627.tif 000007
【図６】
2016062627.tif 000008
【図７】
2016062627.tif 000009
【図８】
2016062627.tif 000010
【図９】
2016062627.tif 000011
【図１０】
2016062627.tif 000012
【図１１】
2016062627.tif 000013
【図１２】
2016062627.tif 000014
【図１３】
2016062627.tif 000015
【図１４】
2016062627.tif 000016