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