(58)【調査した分野】(Int.Cl.,DB名)
前記書込制御部は、前記不揮発性記憶部に記憶されているデータを記憶し、記憶している当該データと、前記フリップフロップが保持するデータとを比較した比較結果に基づいて前記制御を行う、
請求項1に記載の半導体装置。
【発明を実施するための形態】
【0019】
以下、図面を参照して本発明に係る実施形態の例を説明する。なお、各図面において同一機能を有する部分には同一符号が付されており、重複する説明は適宜、省略する。
【0020】
[第1の実施形態]
まず、本実施形態の半導体集積回路の構成について説明する。
図1は、本実施形態の半導体集積回路10の一例を示すブロック図である。
【0021】
本実施形態の半導体集積回路10は、スリープ制御回路12、パワースイッチ14、不揮発性フリップフロップ回路16、及び内部回路18を備えている。
【0022】
本実施形態の半導体集積回路10は、内部回路18等に供給する電源電圧VDDVを遮断し、いわゆるスリープ状態にすることにより、消費電力を抑制する機能を有する。
【0023】
スリープ制御回路12は、上記スリープ状態(電源電圧VDDVの供給状態)を制御する機能を有している。本実施形態のスリープ制御回路12は、スリープ制御信号PS_ENをパワースイッチ14へ出力する。また、スリープ制御回路12は、詳細を後述する制御信号Save、SR1、SR2、及びCTRLを不揮発性フリップフロップ回路16へ出力する。
【0024】
パワースイッチ14は、スリープ制御信号PS_ENに応じて電源電圧VDDVの供給を遮断する機能を有する。
図2に示すように本実施形態のパワースイッチ14は、具体例としてPMOSトランジスタP10を用いている。PMOSトランジスタP10のゲートはスリープ制御回路12に接続されており、スリープ制御回路12からスリープ制御信号PS_ENが入力される。
【0025】
PMOSトランジスタP10のソースは電源電圧VDDを供給する電源線に接続され、ドレインは電源電圧VDDVを供給する電源線に接続されている。本実施形態の半導体集積回路10では、スリープ状態に移行しない回路は電源電圧VDDにより駆動する。一方、スリープ状態に移行する回路は電源電圧VDDVにより駆動する。なお、本実施形態では、スリープ制御回路12の制御により、パワーゲーティングが行われスリープ状態に移行することができる回路領域(電源電圧VDDVで駆動する領域)を「PG(パワーゲーティング)領域」という。
【0026】
具体的には、通常の動作を行う通常状態では、スリープ制御回路12からパワースイッチ14へ論理値が「0」(Lowレベル)のスリープ制御信号PS_ENが出力される。これにより、パワースイッチ14のPMOSトランジスタP10はオン状態となり、電源電圧VDDVが供給される。一方、パワーゲーティング時のスリープ状態では、スリープ制御回路12からパワースイッチ14へ論理値が「1」(Highレベル)のスリープ制御信号PS_ENが出力される。これにより、パワースイッチ14のPMOSトランジスタP10はオフ状態となり、電源電圧VDDVの供給が遮断され、電源電圧VDDVにより駆動するPG領域の回路の駆動が停止し、スリープ状態となる。
【0027】
内部回路18は特に限定されるものではなく、ユーザ等の要求に応じた機能を有する回路であればよい。なお、内部回路18は、複数の機能(回路)を含んでいてもよい。また、内部回路18は、電源電圧VDDにより駆動する回路及び電源電圧VDDVにより駆動する回路(PG領域)の両者を含んでいてもよいし、一方の回路のみであってもよい。
【0028】
本発明の半導体装置として機能する不揮発性フリップフロップ回路16は、入力信号Dを保持(ラッチ)して、入力信号Dに応じた(同じ論理値(レベル)の)出力信号Qを出力する機能を有する。本実施形態の不揮発性フリップフロップ回路16は、PG領域であり、電源電圧VDDVにより駆動する。
【0029】
図2には、本実施形態の不揮発性フリップフロップ回路16の回路図を示す。
図2に示すように、本実施形態の不揮発性フリップフロップ回路16は、D型フリップフロップであるマスターラッチ30及びスレーブラッチ32と、書込制御回路34と、を備える。
【0030】
マスターラッチ30は、不揮発性フリップフロップ回路16の外部から入力された入力信号Dをクロック信号CLKに応じたタイミングで取り込んで保持する機能を有する。
【0031】
マスターラッチ30は、インバータIV1〜IV3、及びトランスファーゲートTG1〜TG3を備える。インバータIV1には不揮発性フリップフロップ回路16の外部から入力信号Dが入力される。
【0032】
トランスファーゲートTG1〜TG3は、クロック信号CLKによりオン(ON)及びオフ(OFF)が制御される。なお、トランスファーゲートTG1と、トランスファーゲートTG2及びTG3とでは、クロック信号CLKによりオン、オフするタイミングが逆になっている。
【0033】
スレーブラッチ32は、マスターラッチ30から出力されたデータをクロック信号CLKに応じたタイミングで取り込んで保持し、入力信号Dと同じ論理値の出力信号Qを不揮発性フリップフロップ回路16の外部に出力する機能を有する。
【0034】
スレーブラッチ32は、インバータIV4〜IV6、トランスファーゲートTG4、及びNMOSトランジスタN7を備える。トランスファーゲートTG4は、クロック信号CLKによりオン及びオフが制御される。また、NMOSトランジスタN7は、制御信号SR1によりオン及びオフが制御される。トランスファーゲートTG1及びTG4は、クロック信号CLKによりオン、オフするタイミングが同一になっている。
【0035】
スレーブラッチ32のインバータIV6からは、出力信号Qが不揮発性フリップフロップ回路16の外部(内部回路18)に出力される。
【0036】
本実施形態のマスターラッチ30及びスレーブラッチ32によるフリップフロップ動作について説明する。
【0037】
クロック信号CLKの論理値が「1」から「0」になると、トランスファーゲートTG1、TG4はオン状態、トランスファーゲートTG2、TG3はオフ状態になる。これにより、マスターラッチ30では入力信号Dが取り込まれ、スレーブラッチ32ではクロック信号CLKの論理値が「0」になる前に取り込んだ信号が保持される。
【0038】
次にクロック信号CLKの論理値が「0」から「1」になると、トランスファーゲートTG1、TG4はオフ状態、トランスファーゲートTG2、TG3はオン状態になる。これにより、マスターラッチ30では、クロック信号CLKの論理値が「1」になる前に取り込んだ信号が保持され、スレーブラッチ32ではマスターラッチ30のトランスファーゲートTG3から出力された信号が取り込まれ、取り込まれた信号と同じ論理値の出力信号QがインバータIV6から出力される。
【0039】
本実施形態の書込制御回路34は、MTJ素子MTJ1、MTJ2に書き込んだデータと同一のデータを一時的に保持し、該データと、現在スレーブラッチ32に保持されているデータとの比較を行う。そして書込制御回路34は、比較結果に基づいてMTJ素子MTJ1、MTJ2にスレーブラッチ32に保持されているデータの書き込みを行うか否かを制御する。書込制御回路34は、MTJ素子MTJ1、MTJ2に記憶されているデータと、スレーブラッチ32に保持されているデータとが一致する場合は、MTJ素子MTJ1、MTJ2にデータの書き込みを行わない制御を行う。
【0040】
具体的には、本実施形態の書込制御回路34は、
図2に示すようにインバータIV8、IV9、トランスファーゲートTG5、TG6、各々2入力のNEOR(Not Exclusive OR)回路NEOR1、及びNOR(Not OR)回路NOR1を備えている。
【0041】
トランスファーゲートTG5の入力端子はスレーブラッチ32のインバータIV4の入力端子(マスターラッチ30のトランスファーゲートTG3の出力端子)に接続されている。また、トランスファーゲートTG5の出力端子は、インバータIV8の入力端子及びトランスファーゲートTG6の出力端子に接続されている。インバータIV9の出力端子はトランスファーゲートTG6の入力端子に接続されている。トランスファーゲートTG5、TG6は制御信号Saveによりオン及びオフが制御される。なお、トランスファーゲートTG5と、トランスファーゲートTG6とでは、制御信号Saveによりオン、オフするタイミングが逆になっている。
【0042】
NEOR回路NEOR1の一方の入力端子には、インバータIV8の出力端子及びインバータIV9の入力端子が接続されている。また、NEOR回路NEOR1の他方の入力端子には、スレーブラッチ32のインバータIV4の出力端子(インバータIV6の入力端子)が接続されている。
【0043】
NOR回路NOR1の一方の入力端子には制御信号SR2が入力される。また、他方の入力端子には、NEOR回路NEOR1の出力端子が接続されている。NOR回路NOR1からは出力信号selectWが出力される。
【0044】
さらに、
図2に示すように本実施形態の不揮発性フリップフロップ回路16は、MTJ素子MTJ1、MTJ2、及びNMOSトランジスタN1〜N6を備える。なお、NMOSトランジスタN2、N3が本発明の第1スイッチ素子の一例であり、NMOSトランジスタN1、N4が本発明の復元部及び第2スイッチ素子の一例である。また、NMOSトランジスタN1、N4に入力される制御信号SR2が本発明の復元制御信号の一例である。
【0045】
ここで、本発明の不揮発性記憶部の一例であるMTJ素子MTJ1、MTJ2について説明する。
図3には、本実施形態に係るMTJ素子MTJ1、MTJ2の層構成及び動作を説明するための概略断面図を示す。また、
図4には、本実施形態に係るMTJ素子MTJ1、MTJ2の動作の説明に関する電圧対抵抗値のグラフを示す。
図3に示すようにMTJ素子は、磁性を有し磁気の方向が変化する自由層(Free layer)20と、磁性を有し磁気の方向が一定のSAF(Synthetic anti-ferromagnetic)のピン層(Pinned layer)23と、の間にトンネルバリア層(Tunnel barrier layer)22を有する。ピン層23は、固定層(Reference layer)24を有している。また、MTJ素子は、下地層(Under layer)26、及び下部電極(Bottom electrode)28を有する。
【0046】
MTJ素子は、
図4に示すようにMTJ素子に印加する電圧の大きさに応じて抵抗値が変化する。そのため、自由層20からピン層23へ向かう方向に電流を流すと、自由層20の磁化方向がピン層23と同一になってMTJ素子は低抵抗となり、論理値が「0」のデータを記憶した状態となる。一方、ピン層23から自由層20へ向かう方向に電流を流すと、自由層20の磁化方向がピン層23と反対になってMTJ素子は高抵抗となり、論理値が「1」のデータを記憶した状態となる。
【0047】
MTJ素子に記憶されたデータ(情報)は、電源電圧VDDVの供給が遮断されても保持される。そのため本実施形態の不揮発性フリップフロップ回路16は、パワーゲーティングを行う場合、電源電圧VDDVが遮断されてスリープ状態に移行する前に、スレーブラッチ32が保持しているデータをMTJ素子MTJ1、MTJ2に書き込んで記憶させる。また、不揮発性フリップフロップ回路16は、スリープ状態から復帰する場合は、MTJ素子MTJ1、MTJ2に書き込まれているデータをスレーブラッチ32へ読み出して復元する。
【0048】
なお、本実施形態では、スレーブラッチ32が保持しているデータをMTJ素子MTJ1、MTJ2に記憶させる動作を「ストア」という。また、MTJ素子MTJ1、MTJ2からデータを読み出しスレーブラッチ32に復元させる動作を「リストア」という。
【0049】
本実施形態のMTJ素子MTJ1、MTJ2は、自由層20側が制御信号CTRLが流れる制御信号線に接続されている。MTJ素子MTJ1のピン層23側はNMOSトランジスタN5の一端(ソース)に接続されており、MTJ素子MTJ2のピン層23側はNMOSトランジスタN6の一端(ソース)に接続されている。
【0050】
NMOSトランジスタN5は一端(ソース)がMTJ素子MTJ1に接続されており、他端(ドレイン)がNMOSトランジスタN1、N2の一端(ソース)に接続されている。一方、NMOSトランジスタN6は一端(ソース)がMTJ素子MTJ2に接続されており、他端(ドレイン)がNMOSトランジスタN3、N4の一端(ソース)に接続されている。NMOSトランジスタN5、N6は、制御信号SR1によりオン及びオフが制御される。
【0051】
NMOSトランジスタN1、N2は他端(ドレイン)がスレーブラッチ32(インバータIV4の入力端子)に接続されている。また、NMOSトランジスタN3、N4は他端(ドレイン)がスレーブラッチ32(インバータIV4の出力端子)に接続されている。NMOSトランジスタN1、N4は、制御信号SR2によりオン及びオフが制御される。また、NMOSトランジスタN2、N3は、書込制御回路34から出力される出力信号selectWによりオン及びオフが制御される。
【0052】
次に、本実施形態の不揮発性フリップフロップ回路16の動作について説明する。
図5には、本実施形態の不揮発性フリップフロップ回路16の制御シーケンスを表すタイムチャートを示す。なお、
図5では、論理値が「1」(Highレベル)の入力信号Dを不揮発性フリップフロップ回路16が取り込んで保持する場合を示している。
【0053】
まず、Initial(初期)ステートにおいて、スリープ制御回路12から不揮発性フリップフロップ回路16に入力される制御信号SR2の論理値は「1」である。一方、制御信号SR1の論理値を「0」から「1」へ変化させ、制御信号SR1の論理値が「1」である期間に制御信号CTRLの論理値を「0」から「1」へ、さらに「1」から「0」へと変化させることにより、MTJ素子MTJ1、MTJ2を初期化する。MTJ素子MTJ1、MTJ2を初期化した後、再び制御信号SR1の論理値を「0」にする。さらに、制御信号Saveの論理値を「1」にして書込制御回路34内に記憶されているデータを初期化した後、再び制御信号Saveの論理値を「0」にする。
【0054】
次に、マスターラッチ30及びスレーブラッチ32に入力信号Dを取り込むActiveステートに移行する。
図5に示したActive1ステートでは、制御信号SR1及び制御信号Saveの論理値を「0」にする。制御信号SR1の論理値が「0」のため、NMOSトランジスタN7はオフ状態である。また、制御信号Saveの論理値が「0」のため、トランスファーゲートTG5はオフ状態であり、トランスファーゲートTG6はオン状態である。
【0055】
この状態でクロック信号CLKをトグルさせることにより、マスターラッチ30及びスレーブラッチ32は通常のフリップフロップと同様の動作を行い、上述したように入力信号Dを取り込んで保持する。
【0056】
次に、パワーゲーティングを行う場合には、まずスレーブラッチ32に保持されているデータをMTJ素子MTJ1、MTJ2にストアする。この動作を行うのがStoreステートである。Storeステートでは、制御信号SR1の論理値を「1」、制御信号SR2の論理値を「0」に設定する。Storeステートでは、動作として以下の2つの場合が生ずる。
【0057】
1つ目は、
図5においてStore1と記された場合であり、書込制御回路34内に記憶されているデータ(MTJ素子MTJ1、MTJ2に記憶されているデータ)と、スレーブラッチ32内に保持されているデータとが異なる場合の動作である。
【0058】
NEOR回路NEOR1の一方の入力端子にはインバータIV8から書込制御回路34内に記憶されているデータが入力される。また、NEOR回路NEOR1の他方の入力端子にはインバータIV4からスレーブラッチ32内に保持されているデータが入力される。NEOR回路NEOR1は、入力される2つのデータのレベルが一致しない場合は論理値が「0」の信号を出力する。そのため、NOR回路NOR1の一方の入力端子には論理値が「0」の制御信号SR2が入力され、他方の入力端子にはNEOR回路NEOR1から論理値が「0」の信号が入力される。従って、NOR回路NOR1から出力される出力信号selectWの論理値は「1」になる。
【0059】
出力信号selectWの論理値が「1」であるため、NMOSトランジスタN2、N3がオン状態になる。制御信号SR1の論理値が「1」であり、NMOSトランジスタN5〜N7がオン状態であるので、制御信号CTRLの論理値を「0」から「1」へ、さらに「1」から「0」へと変化させることにより、スレーブラッチ32とMTJ素子MTJ1、MTJ2との間で電流が流れ、スレーブラッチ32に保持されているデータがMTJ素子MTJ1、MTJ2に書き込まれる。この場合に、MTJ素子MTJ1、MTJ2に電流が流れるため、書き込みエネルギーが消費される。
【0060】
これに対し、Storeステートの2つ目は、
図5においてSrore2と記された場合であり、書込制御回路34内に記憶されているデータと、スレーブラッチ32内に保持されているデータとが同一である場合の動作である。
【0061】
NEOR回路NEOR1は、入力される2つのデータのレベルが一致する場合は論理値が「1」の信号を出力する。そのため、この場合はNOR回路NOR1の一方の入力端子には論理値が「0」の制御信号SR2が入力され、他方の入力端子にはNEOR回路NEOR1から論理値が「1」の信号が入力される。従って、NOR回路NOR1から出力される出力信号selectWの論理値は「0」になる。
【0062】
出力信号selectWの論理値が「0」であるため、NMOSトランジスタN2、N3がオフ状態になる。NMOSトランジスタN1、N4もオフ状態であるため、NMOSトランジスタN5、N6がオン状態であっても、スレーブラッチ32とMTJ素子MTJ1、MTJ2との間には電流経路は生成されず、MTJ素子MTJ1、MTJ2にデータは書き込まれない。このとき、MTJ素子MTJ1、MTJ2には電流が流れないため、書き込みエネルギーは消費されない。
【0063】
Storeステートでの動作を行った後、Sleepステートに移行する。Sleepステートでは、スリープ制御信号PS_ENの論理値を「1」に設定することにより、パワースイッチ14のPMOSトランジスタP10をオフ状態にし、PG領域の電源電圧(電源電圧VDDV)の供給を遮断する。電源電圧の遮断中は、PG領域の回路内部の電荷はリークによって放電するため、スレーブラッチ32内の各ノードの電圧が0Vになる。そのため、出力信号Qの論理値は、
図5に示すように「1」から「0」へ徐々に変化する。
【0064】
また、Sleepステートでは、制御信号SR1の論理値が「0」であるため、NMOSトランジスタN5、N6はオフ状態である。
【0065】
次に、Sleepステートを終了し、通常動作に復帰するためにリストアを行う。この動作を行うのがRestore(
図5のRestore1、Restore2)ステートである。Restoreステートでは、スリープ制御信号PS_ENの論理値を「1」から「0」にし、また、制御信号SR1の論理値を「0」から「1」にし、制御信号SR2の論理値を「1」に保つ。
【0066】
この場合、スリープ制御信号PS_ENの論理値が「0」になるため、パワースイッチ14のPMOSトランジスタP10がオン状態になり、PG領域に対して電源電圧VDDVの供給が再開される。また、制御信号SR1の論理値が「1」になるため、NMOSトランジスタN5〜N7がオン状態になる。さらに、制御信号SR2の論理値が「1」であるため、NMOSトランジスタN1、N4がオン状態になる。そのため、MTJ素子MTJ1、MTJ2に記憶されているデータがスレーブラッチ32に書き込まれる。これによって、電源電圧VDDVの遮断前にスレーブラッチ32に保持されていたデータが復元できる。
【0067】
また、Restoreステートでは、スレーブラッチ32へのデータの復元が完了したタイミングで、制御信号SR1の論理値を「1」から「0」にし、制御信号Saveの論理値を「0」から「1」にする。制御信号SR1の論理値が「0」になるため、NMOSトランジスタN5〜N7がオフ状態になる。また、制御信号Saveの論理値が「1」になるため、トランスファーゲートTG5はオン状態になり、トランスファーゲートTG6はオフ状態になる。そのため、スレーブラッチ32へ復元したデータと同一のデータが、書込制御回路34内に記憶される。
【0068】
以上の動作により、本実施形態の不揮発性フリップフロップ回路16では、リストアにおいて、MTJ素子MTJ1、MTJ2に記憶されている最新のデータが、常に書込制御回路34内に記憶される。このため、その後マスターラッチ30及びスレーブラッチ32によるフリップフロップの通常動作(Activeステート)を続け、再びストアを行う場合にも、MTJ素子MTJ1、MTJ2に記憶されているデータを、書込制御回路34内に記憶されているデータによって代替することができる。
【0069】
書込制御回路34は、ストア時に、内部に記憶されているデータとスレーブラッチ32が保持するデータとを比較して、MTJ素子MTJ1、MTJ2への書き込みを行うか否かを切り替えることができる。書込制御回路34には、内部に記憶されているデータと、スレーブラッチ32が保持するデータとが一致する場合は、MTJ素子MTJ1、MTJ2にデータの書き込みを行わないよう制御する。従って、本実施形態の不揮発性フリップフロップ回路16は、MTJ素子MTJ1、MTJ2への無駄な書き込み動作を抑制することができ、無駄な書き込みエネルギーの消費を抑えることができる。
【0070】
なお、上記では、論理値が「1」の入力信号Dを取り込んで保持する場合の不揮発性フリップフロップ回路16の動作について
図5を参照して詳細に説明したが、論理値が「0」の入力信号Dを保持する場合の不揮発性フリップフロップ回路16の動作も同様である。
図6には、入力信号Dの論理値が「0」の場合の本実施形態の不揮発性フリップフロップ回路16の制御シーケンスを表すタイムチャートを示す。
【0071】
図6に示すように、Active1ステートでは、クロック信号CLKをトグルさせることにより、マスターラッチ30及びスレーブラッチ32は通常のフリップフロップと同様の動作を行い、上述したように入力信号Dを取り込んで保持する。入力信号Dの論理値が「0」であるため、
図6に示した場合では、出力信号「Q」の論理値も「0」になり、Storeステート以降も「0」を維持する。また、出力信号Qの論理値が「0」の場合は、論理値が「1」である場合(
図5参照)と異なり、Sleepステートでも論理値が変化することなく「0」のままである。
【0072】
論理値が「0」の入力信号Dを保持する場合は、上述のように出力信号Qの論理が異なる他は、
図6に示すように不揮発性フリップフロップ回路16の動作、スリープ制御回路12から出力される各種制御信号の状態やパワースイッチ14の動作について、
図5を参照して上述したものと同様であるため、ここでの詳細な説明を省略する。
【0073】
このように本実施形態の半導体集積回路10(不揮発性フリップフロップ回路16)では、入力信号Dの論理値に係わらず、MTJ素子MTJ1、MTJ2への無駄な書き込み動作を抑制することができる。
[第2の実施形態]
本実施形態の不揮発性フリップフロップ回路16は、NMOSトランジスタN1〜N6、NEOR回路NEOR1、及びNOR回路NOR1の配置が第1の実施形態の不揮発性フリップフロップ回路16と異なっている。なお、不揮発性フリップフロップ回路16のその他の構成や半導体集積回路10全体の構成は、第1の実施形態と同様のため、同様の部分については説明を省略する。
【0074】
図7には、本実施形態の不揮発性フリップフロップ回路の回路図を示す。
図7に示すように、NMOSトランジスタN5、N6をスレーブラッチ32側に接続し、NMOSトランジスタN1〜N4をMTJ素子MTJ1、MTJ2側に接続している。
【0075】
具体的には、NMOSトランジスタN5は他端(ドレイン)がスレーブラッチ32(インバータIV4の入力端子)に接続されている。また、NMOSトランジスタN6は他端(ドレイン)がスレーブラッチ32(インバータIV4の出力端子)に接続されている。第1の実施形態と同様にNMOSトランジスタN5、N6は、制御信号SR1によりオン及びオフが制御される。
【0076】
NMOSトランジスタN1、N2は他端(ドレイン)がNMOSトランジスタN5の一端(ソース)に接続されており、一端(ソース)がMTJ素子MTJ1に接続されている。一方、NMOSトランジスタN3、N4は他端(ドレイン)がNMOSトランジスタN6の一端(ソース)に接続されており、一端(ソース)がMTJ素子MTJ2に接続されている。第1の実施形態と同様にNMOSトランジスタN1、N4は、制御信号SR2によりオン及びオフが制御される。また、NMOSトランジスタN2、N3は、書込制御回路34から出力される出力信号selectWによりオン及びオフが制御される。
【0077】
また、本実施形態の不揮発性フリップフロップ回路16は、書込制御回路34に備えられているNEOR回路NEOR1及びNOR回路NOR1の配置が異なっている。
【0078】
図7に示すようにNOR回路NOR1の一方の入力端子には制御信号SR2が入力される。また、他方の入力端子には、インバータIV4の出力が入力される。また、NEOR回路NEOR1の一方の入力端子には、インバータIV8の出力が入力され、他方の入力端子には、NOR回路NOR1の出力が入力される。NEOR回路NEOR1からは出力信号selectWが出力される。
【0079】
本実施形態の不揮発性フリップフロップ回路16の動作について説明する。
【0080】
第1の実施形態において上述したStoreステートにおいてNOR回路NOR1は、制御信号SR2の論理値が「0」であるため、インバータIV4の出力信号の論理値を反転した信号を出力する。そのため、NEOR回路NEOR1に入力される二つの信号は、書込制御回路34に記憶されているデータと、スレーブラッチ32が保持するデータとが一致している場合は論理値が異なり、両データが一致していない場合は論理値が同一になる。
【0081】
NEOR回路NEOR1から出力される出力信号selectWは、書込制御回路34に記憶されているデータと、スレーブラッチ32が保持するデータとが一致している場合は論理値が「0」になり、一致していない場合は論理値が「1」になる。このように書込制御回路34は、第1の実施形態で上述したStoreステートと同様に出力信号selectWを出力する。
【0082】
従って、第1の実施形態で説明した制御シーケンス(
図2、6参照)と同様に動作させることにより、第1の実施形態の不揮発性フリップフロップ回路16と同様の機能を実現できる。
[第3の実施形態]
本実施形態では、上記各実施形態の不揮発性フリップフロップ回路16で用いていたNMOSトランジスタN1〜N7に代わりPMOSトランジスタを用いる場合について説明する。なお、上記各実施形態の不揮発性フリップフロップ回路16及び半導体集積回路10と同様の構成及び動作については説明を省略する。
【0083】
図8には、本実施形態の不揮発性フリップフロップ回路の回路図を示す。
図8に示すように、本実施形態の不揮発性フリップフロップ回路116は、上記各実施形態の不揮発性フリップフロップ回路16におけるNMOSトランジスタN1〜N7に代わり、PMOSトランジスタP1〜P7を備えている。なお、PMOSトランジスタP2、P3が本発明の第1スイッチ素子の一例であり、PMOSトランジスタP1、P4が本発明の復元部及び第2スイッチ素子の一例である。また、PMOSトランジスタP1、P4に入力される制御信号SR2が本発明の復元制御信号の一例である。
【0084】
そのため、本実施形態の半導体集積回路110では、パワースイッチ114も上記各実施形態のパワースイッチ14と異なっている。本実施形態のパワースイッチ114は、
図8に示すように具体例としてNMOSトランジスタN10を用いている。NMOSトランジスタN10のゲートにはスリープ制御回路12から出力されるスリープ制御信号PS_ENと論理値が反転した反転信号が入力される。
【0085】
通常状態では、論理値が「1」の信号(スリープ制御信号PS_ENの反転信号)が入力されてNMOSトランジスタN10がオン状態となり、VGND電圧がGND電圧に引き下げられる(VGND>GND)。一方、パワーゲーティングを行う場合には、論理値が「0」の信号(スリープ制御信号PS_ENの反転信号)が入力されてNMOSトランジスタN10がオフ状態になり、PG領域に供給されるGND電圧がVGND電圧に切り替わる。すなわち、通常状態(NMOSトランジスタN10がオン状態)の場合は、PG領域にはグランドとしてGND電圧が供給される。一方、パワーゲーティングを行う場合(NMOSトランジスタN10がオフ状態)には、GND電圧の供給が遮断され、グランドがVGND電圧になる。この場合、VGND>GNDであり、グランドの電位が高くなったことにより、PG領域の回路の駆動が停止し、スリープ状態となる。
【0086】
また、本実施形態の不揮発性フリップフロップ回路116では、PMOSトランジスタP1〜P7を用いたことに応じて、書込制御回路134が備える論理回路も上記各実施形態と異なっている。
【0087】
図8に示すように本実施形態の書込制御回路134は、論理回路としてNEOR回路NEOR1及びOR(OR)回路OR1を備える。
【0088】
NEOR回路NEOR1の一方の入力端子にはインバータIV8の出力が入力される。また、他方の入力端子にはインバータIV4の出力が入力される。また、OR回路OR1の一方の入力端子には制御信号SR2の論理値を反転した反転信号が入力され、他方の入力端子にはNEOR回路NEOR1の出力が入力される。OR回路OR1からは出力信号selectWが出力される。
【0089】
次に、本実施形態の不揮発性フリップフロップ回路116の動作について説明する。
図9には、本実施形態の不揮発性フリップフロップ回路116の制御シーケンスを表すタイムチャートを示す。なお、
図9では、論理値が「1」の入力信号Dを不揮発性フリップフロップ回路116が取り込んで保持する場合を示している。
【0090】
まず、Initial(初期)ステートにおいて、スリープ制御回路12から不揮発性フリップフロップ回路116に入力される制御信号SR2の論理値は「0」である。一方、制御信号SR1の論理値を「1」から「0」へ変化させ、制御信号SR1の論理値が「0」である期間に制御信号CTRLの論理値を「1」から「0」へ、さらに「0」から「1」へと変化させることにより、MTJ素子MTJ1、MTJ2を初期化する。MTJ素子MTJ1、MTJ2を初期化した後、再び制御信号SR1の論理値を「1」にする。さらに、制御信号Saveの論理値を「1」にして書込制御回路134内に記憶されているデータを初期化した後、再び制御信号Saveの論理値を「0」にする。
【0091】
次に、マスターラッチ30及びスレーブラッチ32に入力信号Dを取り込むActiveステートに移行する。
図9に示したActive1ステートでは、制御信号SR1の論理値を「1」に、制御信号Saveの論理値を「0」にする。制御信号SR1の論理値が「1」のため、PMOSトランジスタP7はオフ状態である。また、制御信号Saveの論理値が「0」のため、トランスファーゲートTG5はオフ状態であり、トランスファーゲートTG6はオン状態である。
【0092】
この状態でクロック信号CLKをトグルさせることにより、マスターラッチ30及びスレーブラッチ32は通常のフリップフロップと同様の動作を行い上述したように入力信号Dを取り込んで保持する。
【0093】
次に、パワーゲーティングを行う場合には、まずスレーブラッチ32に保持されているデータをMTJ素子MTJ1、MTJ2にストアする。Storeステートでは、制御信号SR1の論理値を「0」、制御信号SR2の論理値を「1」に設定する。
【0094】
まず、書込制御回路34内に記憶されているデータ(MTJ素子MTJ1、MTJ2に記憶されているデータ)と、スレーブラッチ32内に保持されているデータとが異なる場合のStore1ステートについて説明する。
【0095】
NEOR回路NEOR1の一方の入力端子にはインバータIV8から書込制御回路134内に記憶されているデータが入力される。また、NEOR回路NEOR1の他方の入力端子には、インバータIV4からスレーブラッチ32内に保持されているデータが入力される。NEOR回路NEOR1は、入力される2つのデータのレベルが一致しない場合は論理値が「0」の信号を出力する。
【0096】
制御信号SR2の論理値が「1」であるため、OR回路OR1の一方の入力端子には制御信号SR2を反転した論理値が「0」の信号が入力され、他方の入力端子にはNEOR回路NEOR1から論理値が「0」の信号が入力される。従って、OR回路OR1から出力される出力信号selectWの論理値は「0」になる。
【0097】
出力信号selectWの論理値が「0」であるため、PMOSトランジスタP2、P3がオン状態になる。制御信号SR1の論理値が「0」であり、PMOSトランジスタP5〜P7がオン状態であるので、制御信号CTRLの論理値を「1」から「0」へ、さらに「0」から「1」へと変化させることにより、スレーブラッチ32とMTJ素子MTJ1、MTJ2との間で電流が流れ、スレーブラッチ32に保持されているデータがMTJ素子MTJ1、MTJ2に書き込まれる。この場合に、MTJ素子MTJ1、MTJ2に電流が流れるため、書き込みエネルギーが消費される。
【0098】
これに対して、書込制御回路34内に記憶されているデータと、スレーブラッチ32内に保持されているデータとが同一である場合の動作であるSrore2ステートについて説明する。
【0099】
NEOR回路NEOR1は、入力される2つのデータのレベルが一致する場合は論理値が「1」の信号を出力する。そのため、OR回路OR1の一方の入力端子には制御信号SR2を反転した論理値が「0」の信号が入力され、他方の入力端子にはNEOR回路NEOR1から論理値が「1」の信号が入力される。従って、OR回路OR1から出力される出力信号selectWの論理値は「1」になる。
【0100】
出力信号selectWの論理値が「1」であるため、PMOSトランジスタP2、P3がオフ状態になる。PMOSトランジスタP1、P4もオフ状態であるため、PMOSトランジスタP5、P6がオン状態であっても、スレーブラッチ32とMTJ素子MTJ1、MTJ2との間には電流経路は生成されず、MTJ素子MTJ1、MTJ2にデータは書き込まれない。このとき、MTJ素子MTJ1、MTJ2には電流が流れないため、書き込みエネルギーは消費されない。
【0101】
Storeステートでの動作を行った後、Sleepステートに移行する。Sleepステートでは、スリープ制御信号PS_ENの論理値を「1」に設定することにより、その反転信号により制御されるパワースイッチ114のNMOSトランジスタN10をオフ状態にし、PG領域へのGND電圧の供給を遮断する。GND電圧の遮断中は、PG領域の回路内部のすべてのノードは、電源電圧VDDからのリークによって充電されるため、スレーブラッチ32内の各ノードの電圧が電源電圧VDDと同一になる。
【0102】
また、Sleepステートでは、制御信号SR1の論理値が「1」であるため、PMOSトランジスタP5、P6はオフ状態である。
【0103】
次に、Sleepステートを終了し、通常動作に復帰するためにリストアを行う。Restoreステートでは、スリープ制御信号PS_ENの論理値を「1」から「0」にし、また、制御信号SR1の論理値を「1」から「0」にし、制御信号SR2の論理値を「0」に保つ。
【0104】
パワースイッチ14のNMOSトランジスタN10がオン状態になり、PG領域に対してGND電圧の供給が再開され、グランドの電位がVGND電圧からGND電圧に引き下げられる。また、制御信号SR1の論理値が「0」になるため、PMOSトランジスタP5〜P7がオン状態になる。さらに、制御信号SR2の論理値が「0」であるため、PMOSトランジスタP1、P4がオン状態になる。そのため、MTJ素子MTJ1、MTJ2に記憶されているデータがスレーブラッチ32に書き込まれる。これによって、GND電圧(グランド電圧)の遮断前にスレーブラッチ32に保持されていたデータが復元できる。
【0105】
また、Restoreステートでは、スレーブラッチ32へのデータの復元が完了したタイミングで、制御信号SR1の論理値を「0」から「1」にし、制御信号Saveの論理値を「0」から「1」にする。制御信号SR1の論理値が「1」になるため、PMOSトランジスタP5〜P7がオフ状態になる。また、制御信号Saveの論理値が「1」になるため、トランスファーゲートTG5はオン状態になり、トランスファーゲートTG6はオフ状態になる。そのため、スレーブラッチ32へ復元したデータと同一のデータが、書込制御回路34内に記憶される。
【0106】
このように、本実施形態の不揮発性フリップフロップ回路116も、上記各実施形態の不揮発性フリップフロップ回路16と同様の機能を実現できる。従って、本実施形態の不揮発性フリップフロップ回路116も、MTJ素子MTJ1、MTJ2への無駄な書き込み動作を抑制することができ、無駄な書き込みエネルギーの消費を抑えることができる。
[第4の実施形態]
本実施形態の不揮発性フリップフロップ回路116は、PMOSトランジスタP1〜P6の配置、及び書込制御回路134の論理回路が第3の実施形態の不揮発性フリップフロップ回路116と異なっている。不揮発性フリップフロップ回路116のその他の構成や半導体集積回路110全体の構成は、上記各実施形態と同様のため、同様の部分については説明を省略する。
【0107】
図10には、本実施形態の不揮発性フリップフロップ回路の回路図を示す。
図10に示すように、PMOSトランジスタP5、P6をスレーブラッチ32側に接続し、PMOSトランジスタP1〜P4をMTJ素子MTJ1、MTJ2側に接続している。
【0108】
具体的には、PMOSトランジスタP5は一端(ソース)がスレーブラッチ32(インバータIV4の入力)に接続されている。また、PMOSトランジスタP6は一端(ソース)がスレーブラッチ32(インバータIV4の出力)に接続されている。第3の実施形態と同様にPMOSトランジスタP5、P6は、制御信号SR1によりオン及びオフが制御される。
【0109】
PMOSトランジスタP1、P2は一端(ソース)がPMOSトランジスタP5の他端(ドレイン)に接続されており、他端(ドレイン)がMTJ素子MTJ1に接続されている。一方、PMOSトランジスタP3、P4は一端(ソース)がPMOSトランジスタP6の他端(ドレイン)に接続されており、他端(ドレイン)がMTJ素子MTJ2に接続されている。第3の実施形態と同様にPMOSトランジスタP1、P4は、制御信号SR2によりオン及びオフが制御される。また、PMOSトランジスタP2、P3は、書込制御回路134から出力される出力信号selectWによりオン及びオフが制御される。
【0110】
また、本実施形態の書込制御回路134は、
図10に示すように論理回路としてNOR回路NOR1及びEOR(Exclusive OR)回路EOR1を備えている。
【0111】
NOR回路NOR1の一方の入力端子には制御信号SR2の論理値が反転した反転信号が入力される。また、他方の入力端子には、インバータIV4の出力が入力される。また、EOR回路EOR1の一方の入力端子には、インバータIV8の出力が入力され、他方の入力端子には、NOR回路NOR1の出力が入力される。EOR回路EOR1からは出力信号selectWが出力される。
【0112】
本実施形態の不揮発性フリップフロップ回路116の動作について説明する。
【0113】
第3の実施形態において上述したStoreステートにおいてNOR回路NOR1は、制御信号SR2の論理値が「1」であり反転信号の論理値が「0」であるため、インバータIV4の出力信号の論理値を反転した信号を出力する。そのため、EOR回路EOR1に入力される二つの信号は、書込制御回路134に記憶されているデータと、スレーブラッチ32が保持するデータとが一致している場合は論理値が異なり、両データが一致していない場合は論理値が同じになる。
【0114】
EOR回路EOR1から出力される出力信号selectWは、書込制御回路134に記憶されているデータと、スレーブラッチ32が保持するデータとが一致している場合は論理値が「1」になり、一致していない場合は論理値が「0」になる。このように書込制御回路134は、第3の実施形態で上述したStoreステートと同様に出力信号selectWを出力する。
【0115】
従って、第3の実施形態で説明した制御シーケンス(
図9参照)と同様に動作させることにより、第3の実施形態の不揮発性フリップフロップ回路116と同様の機能を実現できる。
【0116】
以上説明したように、上記各実施形態の不揮発性フリップフロップ回路16(116)は、マスターラッチ30、スレーブラッチ32、書込制御回路34(134)、MTJ素子MTJ1、MTJ2、及びNMOSトランジスタN1〜N6(PMOSトランジスタP1〜P6)を備える。
【0117】
書込制御回路34(134)は、MTJ素子MTJ1、MTJ2と同一のデータを一時的に記憶し、パワーゲーティングにより電源電力が遮断される場合(ストア)に、記憶しているデータとスレーブラッチ32が保持するデータとの比較を行って、MTJ素子MTJ1、MTJ2にデータを書き込むか否かを制御する。書込制御回路34は出力信号selectWにより、記憶しているデータとスレーブラッチ32が保持するデータとが一致しない場合は、MTJ素子MTJ1、MTJ2にデータを書き込ませ、一致する場合は、MTJ素子MTJ1、MTJ2にデータを書き込ませない制御を行う。
【0118】
上記各実施形態のNMOSトランジスタN2、N3(PMOSトランジスタP2、P3)は、スレーブラッチ32とMTJ素子MTJ1、MTJ2との間の電流経路に設けられ、書込制御回路34(134)から出力される出力信号selectWにより、オン及びオフが制御される。
【0119】
書込制御回路34(134)は、記憶しているデータとスレーブラッチ32が保持するデータとが一致する場合は、出力信号selectWによりNMOSトランジスタN2、N3(PMOSトランジスタP2、P3)がオフ状態となり、スレーブラッチ32とMTJ素子MTJ1、MTJ2との間に電流経路が形成されない。これにより、スレーブラッチ32が保持するデータはMTJ素子MTJ1、MTJ2に書き込まれない。
【0120】
また、記憶しているデータとスレーブラッチ32が保持するデータとが一致しない場合は、出力信号selectWによりNMOSトランジスタN2、N3(PMOSトランジスタP2、P3)がオン状態となり、スレーブラッチ32とMTJ素子MTJ1、MTJ2との間に電流経路が形成される。これにより、スレーブラッチ32が保持するデータがMTJ素子MTJ1、MTJ2に書き込まれる。
【0121】
パワーゲーティングを行う場合、従来の不揮発性フリップフロップ回路(
図11の不揮発性フリップフロップ回路1016参照)では、MTJ素子MTJ1、MTJ2の状態に関係なく書き込み電流を流してしまう。つまり、従来の不揮発性フリップフロップ回路では、MTJ素子MTJ1、MTJ2が記憶しているデータとこれから書き込もうするデータとが同じ論理値の場合には、あえて書込みを行う必要がないにもかかわらず、書き込みを行おうとして電流を流してしまう。従来の不揮発性フリップフロップ回路では、MTJ素子MTJ1、MTJ2が記憶しているデータに応じて書き込みを制御する技術がないため、無駄な書き込みエネルギーを生じてしまう場合があった。
【0122】
これに対して上記各実施形態の不揮発性フリップフロップ回路16(116)では、MTJ素子MTJ1、MTJ2が記憶するデータとスレーブラッチ32が保持するデータとが一致する場合は、スレーブラッチ32とMTJ素子MTJ1、MTJ2との間に電流経路が形成されず電流が流れない。
【0123】
従って、上記各実施形態の不揮発性フリップフロップ回路16(116)は、MTJ素子MTJ1、MTJ2にデータを書き込むことによる消費エネルギーを削減することができる。
【0124】
上記各実施形態の不揮発性フリップフロップ回路16(116)では、書込制御回路34(134)を設けたことによりエネルギーが消費される。しかしながら、MTJ素子MTJ1、MTJ2にデータを書き込むのに要する消費エネルギーは、書込制御回路34(134)による消費エネルギーよりもオーダが異なる程大きい。そのため、上記各実施形態の不揮発性フリップフロップ回路16(116)のように書込制御回路34(134)を設けても、従来の不揮発性フリップフロップ回路に比べて、消費エネルギーを大幅に削減することができる。
【0125】
なお、上記各実施形態では半導体集積回路10(110)が1つの不揮発性フリップフロップ回路16(116)を備えた場合について説明したが、不揮発性フリップフロップ回路16(116)の数は限定されるものではない。不揮発性フリップフロップ回路16(116)は、1ビットのデータを記憶するものであるため、記憶させるデータのビット数に応じた数の不揮発性フリップフロップ回路16(116)を備えればよい。
【0126】
半導体集積回路10(110)が複数の不揮発性フリップフロップ回路16(116)を備え、各々に保持されているデータの論理値として「1」と「0」とがそれぞれ50%の確率だとした場合、新たにMTJ素子MTJ1、MTJ2に書き込まなければならない不揮発性フリップフロップ回路16(116)の個数は全体の半分であると考えられる。この場合、書き込みエネルギーを従来の不揮発性フリップフロップ回路の1/2に抑えることが可能である。
【0127】
なお、上記各実施形態では、書込制御回路34(134)によりMTJ素子MTJ1、MTJ2にスレーブラッチ32が保持するデータを書き込む制御を行う場合について説明した。しかしながら、書込制御回路34(134)に代えて、ソフトウエアを用いて、MTJ素子MTJ1、MTJ2にデータを書き込む制御を行うようにしてもよい。この場合、例えば、CPU(Central Processing Unit)等を備えた制御部を設け、MTJ素子MTJ1、MTJ2が記憶するデータを予め取得して一時記憶しておく、またはストア時に取得し、当該データと、スレーブラッチ32が保持するデータとを比較して、両データが一致するか否かに応じた論理値の出力信号selectWを制御部から出力すればよい。
【0128】
また、上記各実施形態では、不揮発性記憶部の一例としてMTJ素子MTJ1、MTJ2を用いた場合について説明したがこれに限らない。パワースイッチ14(114)により電源電圧(グランド電圧)の供給の遮断後も、記憶しているデータが消えない(不揮発性)記憶部であれば特に限定されない。
【0129】
また、上記各実施形態で説明した半導体集積回路10(110)、不揮発性フリップフロップ回路16(116)等の構成及び動作等は一例であり、本発明の主旨を逸脱しない範囲内において状況に応じて変更可能であることは言うまでもない。