以下、図面を参照して本発明に係る実施形態の例を説明する。なお、各図面において同一機能を有する部分には同一符号が付されており、重複する説明は適宜、省略する。
まず、本実施形態の半導体集積回路の構成について説明する。図1は、本実施形態の半導体集積回路10の一例を示すブロック図である。また、図2には、本実施形態の不揮発性フリップフロップ回路16の一例の回路図を示す。
本実施形態の半導体集積回路10は、制御回路12、パワースイッチ14、不揮発性フリップフロップ回路16、及び内部回路18を備えている。
本実施形態の半導体集積回路10は、内部回路18等のグランドの電位(以下、「グランド電圧」という)を、GND電圧から、VGND電圧に引き上げる(VGND>GND)ことで、いわゆるスリープ状態にすることにより、消費電力を抑制する機能を有する。
制御回路12は、上記スリープ状態(グランド電圧を、VGND電圧に引き上げた状態)を制御する機能を有している。本実施形態の制御回路12は、スリープ制御信号PS_ENをパワースイッチ14へ出力する。また、制御回路12は、詳細を後述する制御信号Save、SR1、SR2、RB、及びCTRLと、LPG(Local Power Gating)信号(以下、「信号LPG」という)とを不揮発性フリップフロップ回路16へ出力する。
図2に示した一例のように、本実施形態のパワースイッチ14は、NMOSトランジスタTR7を用いている。NMOSトランジスタTR7のゲートには制御回路12から出力されるスリープ制御信号PS_ENが入力される。
NMOSトランジスタTR7のソースはGND電圧を供給する電源線に接続され、ドレインはVGND電圧を供給する電源線に接続されている。本実施形態の半導体集積回路10では、スリープ状態に移行しない回路のグランド電圧はGND電圧を維持する。一方、スリープ状態に移行する回路はグランド電圧がGND電圧と、VGND電圧とで切り替わる。なお、本実施形態では、制御回路12の制御により、パワーゲーティングが行われスリープ状態に移行することができる回路領域(グランド電圧が切り替わる領域)を「PG(パワーゲーティング)領域」という。
具体的には、通常の動作を行う通常状態では、論理値が「1」のスリープ制御信号PS_ENが入力されてNMOSトランジスタTR7がオン状態となり、グランド電圧がVGND電圧からGND電圧に引き下げられる。一方、パワーゲーティングを行う場合には、論理値が「0」のスリープ制御信号PS_ENが入力されてNMOSトランジスタTR7がオフ状態になり、PG領域のグランド電圧がGND電圧からVGND電圧に引き上げられる。すなわち、通常状態(NMOSトランジスタTR7がオン状態)の場合は、PG領域のグランド電圧がGND電圧となる。一方、パワーゲーティングを行う(NMOSトランジスタTR7がオフ状態)場合は、グランド電圧がGND電圧からVGND電圧に切り替わる。この場合、VGND>GNDであり、グランド電圧が高くなったことにより、PG領域の回路の駆動が停止し、スリープ状態となる。
内部回路18は特に限定されるものではなく、ユーザ等の要求に応じた機能を有する回路であればよい。なお、内部回路18は、複数の機能(回路)を含んでいてもよい。また、内部回路18は、グランド電圧がGND電圧を維持する回路及びGND電圧とVGND電圧とで切り替わる回路(PG領域)の両者を含んでいてもよいし、一方の回路のみであってもよい。
不揮発性フリップフロップ回路16は、入力信号Dを保持(ラッチ)して、入力信号Dに応じた(同じ論理値(レベル)の)出力信号Qを出力する機能を有する。本実施形態の不揮発性フリップフロップ回路16は、PG領域であり、グランド電圧がGND電圧とVGND電圧とで切り替わる。
図2に示すように、本実施形態の不揮発性フリップフロップ回路16は、D型フリップフロップであるマスターラッチ34及びスレーブラッチ30と、バルーン部32と、を備える。
マスターラッチ34は、不揮発性フリップフロップ回路16の外部から入力された入力信号Dをクロック信号CLKに応じたタイミングで取り込んで保持する機能を有する。
マスターラッチ34は、インバータIV6、IV7、トランスファーゲートTG1〜TG3、及びNAND回路NAND1を備える。インバータIV6には不揮発性フリップフロップ回路16の外部から入力信号Dが入力される。
トランスファーゲートTG1〜TG3は、クロック信号CLKによりオン(ON)及びオフ(OFF)が制御される。具体的には、トランスファーゲートTG1〜TG3は、クロック信号CLKがインバータIV9により反転されたクロック信号CBと、インバータIV9の出力がインバータIV10により反転されたクロック信号C(クロック信号CLKと同じ論理値)とにより制御される。なお、トランスファーゲートTG1と、トランスファーゲートTG2及びTG3とでは、クロック信号CLKによりオン、オフするタイミングが逆になっている。
NAND回路NAND1には非同期リセット信号である制御信号RBが供給され、制御信号RBの論理値を「0」に設定すると、マスターラッチ34内に記憶されているデータの論理値が初期化される。また、NAND回路NAND1には、インバータIV7から出力された信号が入力されるため、制御信号RBの論理値を「1」に設定すると、インバータIV7から出力された信号の反転信号が出力される。
一方、スレーブラッチ30は、マスターラッチ34から出力されたデータをクロック信号CLKに応じたタイミングで取り込んで保持し、入力信号Dと同じ論理値の出力信号Qを不揮発性フリップフロップ回路16の外部に出力する機能を有する。本実施形態のスレーブラッチ30が、本開示のフリップフロップ部の一例である。
スレーブラッチ30は、NAND回路NAND2、インバータIV3、及びトランスファーゲートTG4、TG5を備える。
NAND回路NAND2には制御信号RBが供給される。制御信号RBの論理値を「0」に設定すると、スレーブラッチ30内に記憶されているデータの論理値が「0」に初期化される。
インバータIV3の入力はNAND回路NAND2の出力に接続されており、出力は
トランスファーゲートTG4の一端に接続されている。トランスファーゲートTG4は、一端がインバータIV3に接続され、かつ他端がトランスファーゲートTG5の一端に接続されており、クロック信号CLKによりオン及びオフが制御される。また、トランスファーゲートTG5は、一端がトランスファーゲートTG4の他端に接続され、かつ他端がNAND回路NAND2の入力に接続されており、制御信号Saveによりオン及びオフが制御され、制御信号Saveの論理値が「0」の場合にオン状態になる。
本実施形態のマスターラッチ34及びスレーブラッチ30によるフリップフロップ動作について説明する。
クロック信号CLKの論理値が「1」から「0」になると、トランスファーゲートTG1、TG4はオン状態、トランスファーゲートTG2、TG3はオフ状態になる。これにより、マスターラッチ34では入力信号Dが取り込まれ、スレーブラッチ30ではクロック信号CLKの論理値が「0」になる前に取り込んだ信号が保持される。
次にクロック信号CLKの論理値が「0」から「1」になると、トランスファーゲートTG1、TG4はオフ状態、トランスファーゲートTG2、TG3はオン状態になる。これにより、マスターラッチ34では、クロック信号CLKの論理値が「1」になる前に取り込んだ信号が保持され、スレーブラッチ30ではマスターラッチ34のトランスファーゲートTG3から出力された信号が取り込まれ、取り込まれた信号と同じ論理値の出力信号QがインバータIV8から出力される。
本実施形態のバルーン部32は、MTJ素子MTJ1、MTJ2に書き込んだデータと同一のデータを一時的に保持し、該データと、現在スレーブラッチ30に保持されているデータとの比較を行う。そしてバルーン部32は、比較結果に基づいてMTJ素子MTJ1、MTJ2にスレーブラッチ30に保持されているデータの書き込みを行うか否かを制御する。バルーン部32は、MTJ素子MTJ1、MTJ2に記憶されているデータと、スレーブラッチ30に保持されているデータとが一致する場合は、MTJ素子MTJ1、MTJ2にデータの書き込みを禁止する(書込を行わない)制御を行う。
具体的には、本実施形態のバルーン部32は、図2に示すようにインバータIV4、IV5、トランスファーゲートTG6、NMOSトランジスタTR5、6及びXOR回路XOR1を備えている。
トランスファーゲートTG6の一方の端子はスレーブラッチ30のNAND回路NAND2の入力端子(マスターラッチ34のトランスファーゲートTG3の端子)に接続されている。また、トランスファーゲートTG6の他方の端子は、インバータIV4の入力端子及びインバータIV5の出力端子に接続されている。トランスファーゲートTG6は制御信号Saveによりオン及びオフが制御され、制御信号Saveの論理値が「1」の場合にオン状態になる。
NMOSトランジスタTR5は、一端がインバータIV4の電源に接続され、他端がVGND電圧を供給する電源電圧線に接続(以下、単に「VGAND電圧に接続という)されている。また、NMOSトランジスタTR6は、一端がインバータIV5の電源に接続され、他端がVGND電圧に接続されている。NMOSトランジスタTR5、TR6は、信号LPGによりオン及びオフが制御される。従って、本実施形態のバルーン部32のインバータIV4、IV5は、信号LPGの論理値が「0」になるとVGND電圧から切り離される。
XOR回路XOR1の一方の入力端子には、インバータIV4の出力端子及びインバータIV5の入力端子が接続されている。また、XOR回路XOR1の他方の入力端子には、スレーブラッチ30のNAND回路NAND2の出力端子(インバータIV3の入力端子)が接続されている。XOR回路XOR1からは出力信号CMP_OUTが出力される。
さらに、図2に示すように本実施形態の不揮発性フリップフロップ回路16は、NMOSトランジスタTR1〜TR4、インバータIV1、IV2、及び一対のMTJ素子としてMTJ素子MTJ1、MTJ2を備える。
MTJ素子MTJ1、MTJ2は、印加される電圧の大きさに応じて抵抗値が変化する。自由層fからピン層pへ向かう方向に電流を流すと、自由層fの磁化方向がピン層pと同一になってMTJ素子は低抵抗となり、記憶されているデータの状態が「1」となる。一方、ピン層pから自由層fへ向かう方向に電流を流すと、自由層fの磁化方向がピン層pと反対になってMTJ素子は高抵抗となり、記憶されているデータの状態が「0」となる。
MTJ素子MTJ1、MTJ2に記憶されたデータは、グランド電圧がVGND電圧に切り替わった後も保持される。そのため本実施形態の不揮発性フリップフロップ回路16は、パワーゲーティングを行う場合、スリープ状態に移行する前に、スレーブラッチ30が保持しているデータをMTJ素子MTJ1、MTJ2に書き込んで記憶させる。また、不揮発性フリップフロップ回路16は、スリープ状態から復帰する場合は、MTJ素子MTJ1、MTJ2に書き込まれているデータをスレーブラッチ30へ読み出して復元する。
なお、本実施形態では、スレーブラッチ30が保持しているデータをMTJ素子MTJ1、MTJ2に記憶させる動作を「ストア」という。また、MTJ素子MTJ1、MTJ2からデータを読み出しスレーブラッチ30に復元させる動作を「リストア」という。
本実施形態のMTJ素子MTJ1、MTJ2は、ピン層p側が制御信号CTRLが流れる制御信号線に接続されている。MTJ素子MTJ1の自由層f側はNMOSトランジスタTR1、TR3の一端(ソース)に接続されている。また、MTJ素子MTJ2の自由層f側はPMOSトランジスタTR2、TR4(ソース)の一端に接続されている。
NMOSトランジスタTR1は一端(ソース)がMTJ素子MTJ1に接続されており、他端(ドレイン)がインバータIV2の出力に接続されている。インバータIV2の入力は、ノードN2(NAND回路NAND2の出力)及びインバータIV3の入力に接続されている。一方、NMOSトランジスタTR2は一端(ソース)がMTJ素子MTJ2に接続されており、他端(ドレイン)がインバータIV1の出力に接続されている。インバータIV1の入力は、トランスファーゲートTG4の他端及びトランスファーゲートTG5の一端に接続されている。NMOSトランジスタTR1、TR2は、制御信号SR2によりオン及びオフが制御される。
また、NMOSトランジスタTR3は一端(ソース)がMTJ素子MTJ1に接続されており、他端(ドレイン)がバルーン部32に接続されている。一方、NMOSトランジスタTR4は一端(ソース)がMTJ素子MTJ2に接続されており、他端(ドレイン)がバルーン部32(XOR回路XOR1の入力)に接続されている。NMOSトランジスタTR3、TR4は、制御信号SR1によりオン及びオフが制御される。本実施形態のNMOSトランジスタTR3、TR4の各々が、本開示の第1のトランジスタ及び第2のトランジスタの一例である。
本実施形態のNMOSトランジスタTR1、TR2は、同様の構造かつ、同様のサイズのトランジスタである。一方、NMOSトランジスタTR3、TR4は、同様の構造であるが、サイズが異なるトランジスタである。一例として、本実施形態では、NMOSトランジスタTR3の方がNMOSトランジスタTR4よりもサイズが大きいトランジスタを用いている。
次に、本実施形態の不揮発性フリップフロップ回路16の動作について説明する。図3には、本実施形態の半導体集積回路10の制御による不揮発性フリップフロップ回路16の動作の流れの一例を表すフローチャートを示す。図3に示すように、本実施形態の不揮発性フリップフロップ回路16は、制御回路12の制御に応じた、アクティブ、ストア、ベリファイ、リトライ、スリープ、及びリストアの6つの動作モードを有する。
まず、不揮発性フリップフロップ回路16は、アクティブ動作を行う。
図3に示すように、ステップS100では、制御回路12は、パワースイッチ14をオン状態にし、不揮発性フリップフロップ回路16のグランド電圧をGND電圧に切り替える。アクティブ動作では、クロック信号CLKにより制御される通常動作(フリップフロップ動作)を行う。
次に、不揮発性フリップフロップ回路16は、ストア動作を行う。
そのため、次のステップS102では、制御回路12は、クロック信号CLKのトグルを停止し、クロック信号CLKの論理値を「0」に維持する。また、制御回路12は、制御信号SR1、SR2の論理値を「0」にする。これにより、NMOSトランジスタTR1〜TR4はオン状態となる。さらに、制御回路12は、信号LPGの論理値を「1」から「0」に変化させる。これにより、NMOSトランジスタTR5、TR6はオン状態となり、インバータIV4、IV5がVGND電圧と電気的に接続される。
この状態では、GND電圧を供給する電源線への電流経路が遮断されるため、ノードN11及びノードN12共に、高電位(論理値「1」)となる。
この後、信号LPGの論理値を再び「1」に変化させると、MTJ素子MTJ1とMTJ2との抵抗値の差、及びNMOSトランジスタTR3とNMOSトランジスタTR4とのコンダクタンスの差に応じて、ノードN11及びノードN12の電位が決定し、MTJ素子MTJ1及びMTJ2に記憶されているデータが、バルーン部32に読み出される。
この際、MTJ素子MTJ1の抵抗値と、MTJ素子MTJ2の抵抗値とが異なっている場合、バルーン部32には、抵抗値の差に応じた論理値のデータが読み出される。すなわち、MTJ素子MTJ1、MTJ2に記憶されているデータの状態が、「1,0」または「0,1」の場合、バルーン部32には、各状態に対応する論理値のデータが読み出される。
一方、本実施形態の不揮発性フリップフロップ回路16では、MTJ素子MTJ1の抵抗値と、MTJ素子MTJ2の抵抗値とが同じ場合、バルーン部32には、NMOSトランジスタTR3のコンダクタンスと、NMOSトランジスタTR4のコンダクタンスとの差に応じた論理値のデータが読み出されることになる。すなわち、MTJ素子MTJ1、MTJ2に記憶されているデータの状態が、「0,0」または「1,1」の場合、本実施形態では、NMOSトランジスタTR3の方がNMOSトランジスタTR4よりもコンダクタンスが大きいため、ノードN11の電位が「1」になり、ノードN12の電位が「0」になる。従って、バルーン部32には、論理値が「1」のデータが読み出された状態となる。
なお、NMOSトランジスタTR3のコンダクタンスと、NMOSトランジスタTR4のコンダクタンスとの差は、トランジスタのサイズの差に対応する。NMOSトランジスタTR3、TR4のサイズの差は、MTJ素子MTJ1、MTJ2の抵抗値やトランジスタの製造ばらつきも考慮したシミュレーション結果によれば、一方のトランジスタのサイズが他方のトランジスタのサイズよりも1.5倍以上、2倍以下であることが好ましい。
次のステップS104で、制御回路12は、バルーン部32に記憶されているデータとスレーブラッチ30に保持されているデータとの比較を行う。バルーン部32に記憶されているデータの論理値とスレーブラッチ30に記憶されているデータの論理値とが一致する場合、ノードN1の電位とノードN2との電位が同一となるため、XOR回路XOR1から出力される出力信号CMP_OUTの論理値は「0」になる。なお、本実施形態において電位が「同一」とは、誤差は無視して、同一とみなせることをいう。一方、両者の論理値が一致しない場合、ノードN1の電位とノードN2の電位とが異なるため、XOR回路XOR1から出力される出力信号CMP_OUTの論理値は「1」になる。
次のステップS106で制御回路12は、出力信号CMP_OUTの論理値が「1」であるか否かを判定する。出力信号CMP_OUTの論理値が「1」である場合、ステップS106の判定が肯定判定となり、ステップS108へ移行する。
ステップS108では、制御回路12は、制御信号SR2の論理値を「1」にし、NMOSトランジスタTR1、TR2をオン状態にして、スレーブラッチ30に保持されているデータをMTJ素子MTJ1、MTJ2に書き込む。
一方、出力信号CMP_OUTの論理値が「0」である場合、ステップS106の判定が否定となり、ステップS110に移行する。この際、制御信号SR2の論理値は「0」のままであるため、NMOSトランジスタTR1、TR2はオフ状態であり、スレーブラッチ30に保持されているデータは、MTJ素子MTJ1、MTJ2に書き込まれない。
このように、本実施形態の不揮発性フリップフロップ回路16では、スレーブラッチ30に記憶されているデータの論理値とバルーン部32に記憶されているデータの論理値とが異なる場合のみ、MTJ素子MTJ1、MTJ2にデータの書き込みを行う動作(Conditional Write:条件付き書込)が実現できる。従って、本実施形態の不揮発性フリップフロップ回路16によれば、不要な書き込みエネルギーの消費を抑制することができる。
不揮発性フリップフロップ回路16は、このようにしてストア動作が終了すると、次にベリファイ動作を行う。以下では、説明の便宜上、一例として、スレーブラッチ30に記憶されているデータの論理値が「1」であり、このデータを上記ステップS102〜S108の処理によりストアした場合について説明する。なお、上記の条件付き書込を行ったことにより、論理値が「1」のデータをストアした場合は、バルーン部32に記憶されているデータの論理値は「0」となっている。
次のステップS110では、制御回路12は、制御信号CTRLの論理値を「1」にし、制御信号SR1の論理値を「0」にし、かつ制御信号Saveの論理値を「0」にした状態で信号LPGの論理値を「0」にする。これにより、トランスファーゲートTG6はオフ状態になる。また、NMOSトランジスタTR5、TR6がオフ状態になるため、バルーン部32のインバータIV4、IV5がVGND電圧から電気的に切り離される。従って、ノードN11とノードN12とが導通し、共に高電位(「1」)になる。
次のステップS112で制御回路12は、信号LPGの論理値を「1」に変化させると、上記ステップS102と同様に、MTJ素子MTJ1とMTJ2との抵抗値の差、及びNMOSトランジスタTR3とNMOSトランジスタTR4とのコンダクタンスの差に応じて、ノードN11及びノードN12の電位が決定し、MTJ素子MTJ1及びMTJ2に記憶されているデータが、バルーン部32に読み出される。
なお、この際、上記ステップS102において上述したように、MTJ素子MTJ1の抵抗値と、MTJ素子MTJ2の抵抗値とが同じ場合であっても正常にリストアできる。
ここで、MTJ素子MTJ1、MTJ2への書込が正常に行われているばあい、または、両者の抵抗値が同一である場合、ノードN11の電位は「1」となり、ノードN12の電位は「0」となる。また、スレーブラッチ30のノードN2の電位は「0」である。従って、出力信号CMP_OUTの論理値は「0」となる。
そのため、ストア動作直後に行ったベリファイ動作において出力信号CMP_OUTの論理値が「0」である場合、MTJ素子MTJ1、MTJ2への書込が正しく行われていることがわかる。
そこで、次のステップS114で制御回路12は、出力信号CMP_OUTの論理値が「0」であるか否かを判定する。出力信号CMP_OUTの論理値が「0」の場合、すなわち正常にMTJ素子MTJ1、MTJ2への書き込みが行われた場合、ステップS114の判定が肯定判定となり、ステップS128のスリープ動作へ移行する。
一方、出力信号CMP_OUTの論理値が「0」ではない(「1」である)場合、すなわち正常にMTJ素子MTJ1、MTJ2への書き込みが行われなかった場合、ステップS114の判定が否定判定となり、ステップS116へ移行する。
ステップS116で制御回路12は、MTJ素子MTJ1、MTJ2へのデータの書込を容易にするための所定の制御処理を行う。
リトライ動作において、制御回路12が、MTJ素子MTJ1、MTJ2へのデータの書込を行いやすくするための所定の制御処理としては、特に限定されないが、例えば、以下の制御処理が挙げられる。なお、リトライ動作を開始した直後は、ステップS116を省略してステップS118へ以降してもよい。
例えば、全体の電源電圧を高くすることにより、各トランジスタを動作しやすく(書き込みしやすく)する制御処理が挙げられる。
また例えば、既に、リトライ動作(後述のステップS116の動作)を行った後の場合、制御信号SR2のパルス幅を長くして、NMOSトランジスタTR1、TR2のオン時間を長くすることにより、MTJ素子MTJ1、MTJ2にデータを書き込む書込時間を長くしてもよい。なお、この場合、予め、書込に適した時間を複数通り用意しておき、制御回路12は、短い時間から順次適用することにより、書込時間を長くしていくようにしてもよい。
また例えば、既に、リトライ動作(後述のステップS118の動作)を行った後の場合、NMOSトランジスタTR1、TR2の閾値電圧を変化させ、NMOSトランジスタTR1、TR2をオン状態にし易くしてもよい。
また例えば、既に、リトライ動作(後述のステップS118の動作)を行った後の場合、制御信号SR2の振幅電圧を高くすることにより、NMOSトランジスタTR1、TR2をオン状態にし易くしてもよい。
また例えば、CTRL信号の電圧を高く(電圧パルス幅を大きく)してもよい。
なお、パルス幅やオン時間等を変更した場合、一定期間(一定時間、一定書込回数等)有効とするようにしてもよいし、書込が完了した際に毎度リセットするようにしてもよい。
このように本実施形態の不揮発性フリップフロップ回路16によれば、確認結果に応じて、正しいデータを再びMTJ素子MTJ1、MTJ2に書き込む際は、データを書き込み易くするための所定の制御処理を行うが、消費電力が少ない状態から徐々に、消費電力が大きな状態に変更していく。例えば、制御信号SR2のパルス幅を長くして、NMOSトランジスタTR1、TR2のオン時間を長くすることにより、データを書き込みやすくする場合、オン時間を少しづつ長くしながら、データの再書き込みを行う。そのため、MTJ素子MTJ1、MTJ2に正しくデータを書き込むのに要する電力を最小に近づけることができ、消費電力を抑制することができる。
次のステップS118で制御回路12は、制御信号SR2の論理値を「1」にする。これにより、NMOSトランジスタTR1、TR2がオン状態になるため、インバータIV1、IV2を介して、スレーブラッチ30に記憶されているデータがMTJ素子MTJ1、MTJ2に書き込まれる。この、スレーブラッチ30に記憶されているデータが、MTJ素子MTJ1、MTJ2にストアすべき、正しいデータである。
ステップS118の動作の後、ステップS110に戻り、再度、不揮発性フリップフロップ回路16によるベリファイ動作が行われる。
このように、本実施形態の不揮発性フリップフロップ回路16では、MTJ素子MTJ1、MTJ2に正しくデータが書き込まれるまで、ベリファイ動作とリトライ動作とを繰り返す。
一方、上述したように、ベリファイ動作により、MTJ素子MTJ1、MTJ2にデータが正しく書き込まれていると判定された場合(ステップS114で肯定判定)、ステップS120のスリープ動作へ移行する。
スリープ動作では、制御回路12は、スリープ制御信号PS_ENの論理値を「0」に
して、パワースイッチ14をオフ状態にする。これにより、不揮発性フリップフロップ回路16のグランド電位がGND電圧からVGND電圧に切り替わり、回路を流れるリーク電流がカットされる。
スリープ状態から復帰する場合、ステップS122に移行し、リストア動作を行う。リストア動作のステップS122では、まず、制御回路1は、スリープ制御信号PS_ENの論理値を「1」にして、パワースイッチ14をオン状態にする。これにより、不揮発性フリップフロップ回路16のグランド電位がVGND電圧からGND電圧に切り替わる。
また、制御回路12は、制御信号SR1、SR2の論理値を「0」にして、NMOSトランジスタTR1〜TR4をオン状態にする。さらに、この状態で信号LPGの論理値を「1」から「0」に変化させ、さらに「1」に変化させることで、上記ステップS112と同様に、MTJ素子MTJ1及びMTJ2に記憶されているデータが、バルーン部32に読み出される。
次のステップS124で制御回路12は、制御信号Saveの論理値を「0」から「1」に変化させ、さらに「1」に変化させる。制御信号Saveの論理値が「1」になると、トランスファーゲートTG5がオフ状態に、トランスファーゲートTG6がオン状態になる。一方、制御信号Saveの論理値が「0」になると、トランスファーゲートTG5がオン状態に、トランスファーゲートTG6がオフ状態になる。これにより、バルーン部32に記憶されているデータがスレーブラッチ30に読み出される。
この後、不揮発性フリップフロップ回路16は、ステップS100に戻り、アクティブ動作を再開する。
以上説明したように、本実施形態の不揮発性フリップフロップ回路16は、スレーブラッチ30が保持する1ビットのデータを記憶する一対のMTJ素子MTJ1、MTJ2と、MTJ素子MTJ1、MTJ2に記憶されているデータとスレーブラッチ30が保持するデータとが同一ではない場合は、スレーブラッチ30が保持するデータをMTJ素子MTJ1、MTJ2とに書き込ませる制御を行うバルーン部32と、一対のMTJ素子MTJ1、MTJ2の一方の一端と、バルーン部32の一端とを接続するNMOSトランジスタとTR3と、一対のMTJ素子MTJ1、MTJ2の他方の一端と、バルーン部32の他端とを接続し、NMOSトランジスタとTR3と異なるサイズのNMOSトランジスタとTR4と、を備える。
本実施形態の不揮発性フリップフロップ回路16では、MTJ素子の製造ばらつきや、動作時の電源電圧の変動が生じた場合等において、一対のMTJ素子MTJ1、MTJ2に記憶されるデータの状態が同一になる、すなわち、記憶されるデータが共に「0」となる場合や、共に「1」となる場合がある。
このような場合、従来の不揮発性フリップフロップ回路では、動作不良となってしまう。
一方、本実施形態では、MTJ素子MTJ1、MTJ2に記憶されるデータが共に「0」となる場合、及び共に「1」となる場合であっても、NMOSトランジスタTR3のコンダクタンスと、NMOSトランジスタTR4のコンダクタンスとの差に応じて、ノードN11及びノードN12の電位が決定し、MTJ素子MTJ1及びMTJ2に記憶されているデータが、バルーン部32に読み出される。従って、動作不良とならず、正常に動作することができる。
従って、本実施形態の不揮発性フリップフロップ回路16によれば、一対の不揮発性の記憶部により1ビットのデータを記憶する場合に、動作不良となる確率を低下することができる。
また、本実施形態の不揮発性フリップフロップ回路16のバルーン部32は、MTJ素子MTJ1、MTJ2に記憶されているデータとスレーブラッチ30に保持されているデータとが同一である場合は、スレーブラッチ30が保持するデータをMTJ素子MTJ1、MTJ2とに書き込ませるのを禁止する制御を行う。
従って、本実施形態の不揮発性フリップフロップ回路16によれば、不要な書込を抑制することができるため、消費電力を抑制することができる。
なお、図4に一例を示した不揮発性フリップフロップ回路16のように、図2に示した不揮発性フリップフロップ回路16のバルーン部32が備えていたインバータIV5に替わり、NAND回路NAND3を備えていてもよい。図4に示した不揮発性フリップフロップ回路16のNAND回路NAND3には制御信号RBが供給される。図4に示した不揮発性フリップフロップ回路16においても、上記図2に示した不揮発性フリップフロップ回路16と同様に動作することはいうまでもない。
また、上記実施形態では、NMOSトランジスタTR3のほうが、NMOSトランジスタTR4よりもサイズが大きい態様について説明したが、NMOSトランジスタTR4のほうが、NMOSトランジスタTR3よりもサイズが大きい態様であってもよい。
また、上記実施形態では半導体集積回路10が1つの不揮発性フリップフロップ回路16を備えた場合について説明したが、不揮発性フリップフロップ回路16の数は限定されるものではない。不揮発性フリップフロップ回路16は、1ビットのデータを記憶するものであるため、半導体集積回路10は、記憶させるデータのビット数に応じた数の不揮発性フリップフロップ回路16を備えればよい。
また、上記実施形態では、不揮発性記憶部の一例としてMTJ素子MTJ1、MTJ2を用いた場合について説明したがこれに限らない。パワースイッチ14によりグランド電圧の供給の遮断(VGND電圧に切り替わった)後も、記憶しているデータが消えない(不揮発性)記憶部であれば特に限定されない。
また、上記実施形態で説明した半導体集積回路10、不揮発性フリップフロップ回路16等の構成及び動作等は一例であり、本発明の主旨を逸脱しない範囲内において状況に応じて変更可能であることは言うまでもない。