(57)【要約】【課題】消費電力を抑制することができる半導体装置を提供する。【解決手段】不揮発性フリップフロップ回路１６は、スレーブラッチと、バルーン部３２と、ＮＭＯＳトランジスタＴＲ８〜ＴＲ１０と、を備える。バルーン部３２は、グランド電圧が切り替えられる場合に、ＭＴＪ素子に記憶されているデータとスレーブラッチ３０が保持するデータとが同一でない場合は、スレーブラッチ３０が保持するデータをＭＴＪ素子に書き込ませる制御を行う。バルーン部３２は、ＭＴＪ素子に記憶されているデータとスレーブラッチ３０に保持されているデータとが同一の場合は、スレーブラッチ３０が保持するデータをＭＴＪ素子に書き込ませない制御を行う。ＮＭＯＳトランジスタＴＲ８〜ＴＲ１０は、スレーブラッチ３０が保持するデータがＭＴＪ素子に正しく書き込まれたか否かを表す出力信号ＣＭＰ＿ＯＵＴをバルーン部３２のＸＯＲ回路ＸＯＲ１から出力させる機能を有する。【選択図】図２
2018101456.tif 000002
【特許請求の範囲】
【請求項１】
フリップフロップと、
前記フリップフロップが保持するデータを記憶する不揮発性記憶部と、
自装置に対するグランド電圧が切り替えられる場合に、前記不揮発性記憶部に記憶されているデータと前記フリップフロップが保持するデータとが同一でない場合は、前記フリップフロップが保持するデータを前記不揮発性記憶部に書き込ませる制御を行い、前記不揮発性記憶部に記憶されているデータと前記フリップフロップに保持されているデータとが同一の場合は、前記フリップフロップが保持するデータを前記不揮発性記憶部に書き込ませない制御を行うバルーン部と、
前記フリップフロップが保持するデータを前記不揮発性記憶部に書き込む場合に、正しく書き込まれたか否かを表す情報を前記バルーン部から出力させる確認部と、
を備えた半導体装置。
【請求項２】
前記バルーン部は、前記不揮発性記憶部に記憶されているデータと同一のデータを記憶し、
前記確認部が、前記フリップフロップが保持するデータが前記不揮発性記憶部に正しく書き込まれていないことを表す情報を出力させた場合、前記バルーン部に記憶されているデータのレベルを反転させたデータを前記不揮発性記憶部に書き込む再書込部をさらに備えた、
請求項１に記載の半導体装置。
【請求項３】
前記確認部が、前記フリップフロップが保持するデータが前記不揮発性記憶部に正しく書き込まれていないことを表す情報を出力させた場合、前記フリップフロップに記憶されているデータを前記不揮発性記憶部に再び書き込む再書込部をさらに備えた、
請求項１に記載の半導体装置。
【請求項４】
前記不揮発性記憶部は、前記フリップフロップが保持する１ビットのデータを記憶する一対の不揮発性記憶素子を備え、
前記再書込部は、前記一対の不揮発性記憶素子の一方の一端と、前記バルーン部の一端とを接続する第１のトランジスタと、前記一対の不揮発性記憶素子の他方の一端と、前記バルーン部の他端とを接続し、前記第１のトランジスタと異なるサイズの第２のトランジスタとを含む、
請求項２または請求項３に記載の半導体装置。
【請求項５】
前記再書込部が、前記不揮発性記憶部にデータを書き込む際に、前記不揮発性記憶部にデータの書き込みを行いやすくするための所定の制御処理を行う制御部をさらに備えた、
請求項２から請求項４のいずれか１項に記載の半導体装置。
【請求項６】
前記バルーン部は、前記不揮発性記憶部に記憶されているデータと前記フリップフロップが保持するデータとが同一でない場合に前記フリップフロップが保持するデータを前記不揮発性記憶部に書き込ませる制御を行う制御素子を含む、
請求項１から請求項５のいずれか１項に記載の半導体装置。
【請求項７】
前記不揮発性記憶部は、磁気トンネル接合素子である、
請求項１から請求項６のいずれか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関する。
【背景技術】
【０００２】
一般的に、半導体集積回路（ＬＳＩ：Large Scale Integration circuit）の消費電力を削減する技術として、半導体チップ内部の回路（内部回路）に供給する電源電圧を遮断し、内部回路をいわゆるスリープ状態にするパワーゲーティングと呼ばれる技術が知られている。
【０００３】
当該技術に関連して電源電圧の供給を遮断することにより内部状態や内部データが消失することを防止するための技術が知られている。例えば、非特許文献１には、電源電圧の供給を遮断する前に、不揮発性の記憶部が保持するデータを揮発性の記憶部に書き込む技術が記載されている。この技術では、電源電圧の供給を再開する場合に、不揮発性の記憶部から揮発性の記憶部にデータを復元する。不揮発性の記憶部として、例えば、ＭＴＪ（Magnetic Tunnel Junction：磁気トンネル接合）素子が用いられている。
【０００４】
しかしながら不揮発性の記憶部にＭＴＪ素子を用いた場合、データの書込動作（ストア）に大きなエネルギー（電力）が必要となる。そのため、書込動作（ストア）の回数を減らし消費電力を抑制する技術として、例えば非特許文献２には、ＭＴＪ素子に記憶されているデータと、書き込もうとしているデータとの論理値が異なる場合のみ、ＭＴＪ素子にデータを書き込む技術が記載されている。
【０００５】
ところで、不揮発性の記憶部にＭＴＪ素子を用いた技術として、トランジスタを介して接続されたスレーブラッチに保持されたデータを、当該トランジスタを制御してＭＴＪ素子に書き込む技術が知られている。この技術では、ＭＴＪ素子にデータを書き込むために、トランジスタのサイズを大きくしなくてはならないが、トランジスタのサイズを大きくすると、トランジスタをオン状態にした際に、スレーブラッチ内の電圧が大きく低下して、スレーブラッチが保持しているデータの論理値が反転してしまう場合がある。
【０００６】
これに対して、非特許文献３には、ＭＴＪ素子にデータを書き込む際にスレーブラッチから直接、ＭＴＪ素子に電流が流れ出す（または電流が流れ込む）のを防止する技術が記載されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】S. Yamamoto, Y. Shuto and S. Sugahara, “Nonvolatile Delay Flip-flop using Spin-transistor Architecture with Spin Transfer Torque MTJs for Power-gating Systems,” Electronics Letters, Vol. 47 No. 18, Sept. 2011.
【非特許文献２】M. Kudo, K. Usami, "MTJ Based Non-Volatile Flip Flop to Prevent Useless Store Operation", The 30th International Technical Conference on  Circuits/Systems, Computers and Communications (ITC-CSCC'15), Jun. 29-Jul. 2,2015, Seoul, Korea.
【非特許文献３】宇佐美, 工藤, 平賀, 屋上,“ストア／リストア動作のロバスト性を向上させたMTJ 利用不揮発性フリップフロップ回路” 応用物理学会春季学術講演会, 19p-P4-5,Mar. 2016.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記非特許文献１〜３に記載の技術では、ＭＴＪ素子の製造ばらつきや、回路に用いられるトランジスタの製造ばらつき等のプロセスばらつきや、動作時の電源電圧の変動や温度の変動が生じた場合に、書き込み（ストア）動作が正しく行えない場合がある等の問題から、安定した書き込みを行うためには、トランジスタのサイズを大きくする必要がある。ただし、トランジスタのサイズを大きくすると、消費電力の増加を招くとともに、回路の小型化が困難となるという課題がある。
【０００９】
本発明は上記問題点を解決するためになされたものであり、消費電力を抑制することができる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本開示の技術の第１の態様は、半導体装置であって、フリップフロップと、前記フリップフロップが保持するデータを記憶する不揮発性記憶部と、自装置に対するグランド電圧が切り替えられる場合に、前記不揮発性記憶部に記憶されているデータと前記フリップフロップが保持するデータとが同一でない場合は、前記フリップフロップが保持するデータを前記不揮発性記憶部に書き込ませる制御を行い、前記不揮発性記憶部に記憶されているデータと前記フリップフロップに保持されているデータとが同一の場合は、前記フリップフロップが保持するデータを前記不揮発性記憶部に書き込ませない制御を行うバルーン部と、前記フリップフロップが保持するデータを前記不揮発性記憶部に書き込む場合に、正しく書き込まれたか否かを表す情報を前記バルーン部から出力させる確認部と、を備える。
【００１１】
また、本開示の技術の第２の態様は、上記第１の態様の半導体装置において、前記バルーン部は、前記不揮発性記憶部に記憶されているデータと同一のデータを記憶し、前記確認部が、前記フリップフロップが保持するデータが前記不揮発性記憶部に正しく書き込まれていないことを表す情報を出力させた場合、前記バルーン部に記憶されているデータのレベルを反転させたデータを前記不揮発性記憶部に書き込む再書込部をさらに備える。
【００１２】
また、本開示の技術の第３の態様は、上記第１の態様の半導体装置において、前記確認部が、前記フリップフロップが保持するデータが前記不揮発性記憶部に正しく書き込まれていないことを表す情報を出力させた場合、前記フリップフロップに記憶されているデータを前記不揮発性記憶部に再び書き込む再書込部をさらに備える。
【００１３】
また、本開示の技術の第４の態様は、上記第２の態様または第３の態様の半導体装置において、前記不揮発性記憶部は、前記フリップフロップが保持する１ビットのデータを記憶する一対の不揮発性記憶素子を備え、前記再書込部は、前記一対の不揮発性記憶素子の一方の一端と、前記バルーン部の一端とを接続する第１のトランジスタと、前記一対の不揮発性記憶素子の他方の一端と、前記バルーン部の他端とを接続し、前記第１のトランジスタと異なるサイズの第２のトランジスタとを含む。
【００１４】
また、本開示の技術の第５の態様は、上記第２の態様から第４の態様のいずれか１態様の半導体装置において、前記再書込部が、前記不揮発性記憶部にデータを書き込む際に、前記不揮発性記憶部にデータの書き込みを行いやすくするための所定の制御処理を行う制御部をさらに備える。
【００１５】
また、本開示の技術の第６の態様は、上記第１の態様から第５の態様のいずれか１態様の半導体装置において、前記バルーン部は、前記不揮発性記憶部に記憶されているデータと前記フリップフロップが保持するデータとが同一でない場合に前記フリップフロップが保持するデータを前記不揮発性記憶部に書き込ませる制御を行う制御素子を含む。
【００１６】
また、本開示の技術の第７の態様は、上記第１の態様から第６の態様のいずれか１態様の半導体装置において、前記不揮発性記憶部は、磁気トンネル接合素子である。
【発明の効果】
【００１７】
本発明によれば、記憶素子にＭＴＪが用いられた半導体装置において、消費電力を抑制した装置を提供することが可能となる。これにより、回路設計の際に考慮していたマージンを大きく減らすことが可能となり、より小型かつ柔軟な回路を設計可能となる。
【図面の簡単な説明】
【００１８】
【図１】第１実施形態の半導体装置の一例を示すブロック図である。
【図２】第１実施形態の不揮発性フリップフロップ回路の一例の回路図である。
【図３】第１実施形態の半導体集積回路の制御による不揮発性フリップフロップ回路の動作の流れの一例を表すフローチャートである。
【図４】第１実施形態の半導体集積回路の制御による不揮発性フリップフロップ回路の動作の流れの一例を表すフローチャートである。
【図５】第２実施形態の不揮発性フリップフロップ回路の他の一例の回路図である。
【図６】第２実施形態の半導体集積回路の制御による不揮発性フリップフロップ回路の動作の流れの一例を表すフローチャートである。
【図７】第２実施形態の半導体集積回路の制御による不揮発性フリップフロップ回路の動作の流れの一例を表すフローチャートである。
【図８】第３実施形態の不揮発性フリップフロップ回路の他の一例の回路図である。
【図９】第４実施形態の不揮発性フリップフロップ回路の一例の回路図である。
【図１０】第４実施形態の半導体集積回路の制御による不揮発性フリップフロップ回路の動作の流れの一例を表すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明に係る実施形態の例を説明する。なお、各図面において同一機能を有する部分には同一符号が付されており、重複する説明は適宜、省略する。
【００２０】
［第１実施形態］
まず、本実施形態の半導体集積回路の構成について説明する。図１は、本実施形態の半導体集積回路１０の一例を示すブロック図である。また、図２には、本実施形態の不揮発性フリップフロップ回路１６の一例の回路図を示す。
【００２１】
本実施形態の半導体集積回路１０は、制御回路１２、パワースイッチ１４、不揮発性フリップフロップ回路１６、及び内部回路１８を備えている。
【００２２】
本実施形態の半導体集積回路１０は、内部回路１８等のグランドの電位（以下、「グランド電圧」という）を、ＧＮＤ電圧から、ＶＧＮＤ電圧に引き上げる（ＶＧＮＤ＞ＧＮＤ）ことで、いわゆるスリープ状態にすることにより、消費電力を抑制する機能を有する。
【００２３】
制御回路１２は、上記スリープ状態（グランド電圧を、ＶＧＮＤ電圧に引き上げた状態）を制御する機能を有している。本実施形態の制御回路１２は、スリープ制御信号ＰＳ＿ＥＮをパワースイッチ１４へ出力する。また、制御回路１２は、詳細を後述する制御信号Ｓａｖｅ、ＳＲ１、ＳＲ２、ＳＲ３、ＲＢ、及びＣＴＲＬと、ＬＰＧ（Local Power Gating）信号（以下、「信号ＬＰＧ」という）とを不揮発性フリップフロップ回路１６へ出力する。
【００２４】
図２に示した一例のように、本実施形態のパワースイッチ１４は、ＮＭＯＳトランジスタＴＲ１１を用いている。ＮＭＯＳトランジスタＴＲ１１のゲートには制御回路１２から出力されるスリープ制御信号ＰＳ＿ＥＮが入力される。
【００２５】
ＮＭＯＳトランジスタＴＲ１１のソースはＧＮＤ電圧を供給する電源線に接続され、ドレインはＶＧＮＤ電圧を供給する電源線に接続されている。本実施形態の半導体集積回路１０では、スリープ状態に移行しない回路のグランド電圧はＧＮＤ電圧を維持する。一方、スリープ状態に移行する回路はグランド電圧がＧＮＤ電圧と、ＶＧＮＤ電圧とで切り替わる。なお、本実施形態では、制御回路１２の制御により、パワーゲーティングが行われスリープ状態に移行することができる回路領域（グランド電圧が切り替わる領域）を「ＰＧ（パワーゲーティング）領域」という。
【００２６】
具体的には、通常の動作を行う通常状態では、論理値が「１」のスリープ制御信号ＰＳ＿ＥＮが入力されてＮＭＯＳトランジスタＴＲ１１がオン状態となり、グランド電圧がＶＧＮＤ電圧からＧＮＤ電圧に引き下げられる。一方、パワーゲーティングを行う場合には、論理値が「０」のスリープ制御信号ＰＳ＿ＥＮが入力されてＮＭＯＳトランジスタＴＲ１１がオフ状態になり、ＰＧ領域のグランド電圧がＧＮＤ電圧からＶＧＮＤ電圧に引き上げられる。すなわち、通常状態（ＮＭＯＳトランジスタＴＲ１１がオン状態）の場合は、ＰＧ領域のグランド電圧がＧＮＤ電圧となる。一方、パワーゲーティングを行う（ＮＭＯＳトランジスタＴＲ１１がオフ状態）場合は、グランド電圧がＧＮＤ電圧からＶＧＮＤ電圧に切り替わる。この場合、ＶＧＮＤ＞ＧＮＤであり、グランド電圧が高くなったことにより、ＰＧ領域の回路の駆動が停止し、スリープ状態となる。
【００２７】
内部回路１８は特に限定されるものではなく、ユーザ等の要求に応じた機能を有する回路であればよい。なお、内部回路１８は、複数の機能（回路）を含んでいてもよい。また、内部回路１８は、グランド電圧がＧＮＤ電圧を維持する回路及びＧＮＤ電圧とＶＧＮＤ電圧とで切り替わる回路（ＰＧ領域）の両者を含んでいてもよいし、一方の回路のみであってもよい。
【００２８】
不揮発性フリップフロップ回路１６は、入力信号Ｄを保持（ラッチ）して、入力信号Ｄに応じた（同じ論理値（レベル）の）出力信号Ｑを出力する機能を有する。本実施形態の不揮発性フリップフロップ回路１６は、ＰＧ領域であり、グランド電圧がＧＮＤ電圧とＶＧＮＤ電圧とで切り替わる。
【００２９】
図２に示すように、本実施形態の不揮発性フリップフロップ回路１６は、Ｄ型フリップフロップであるマスターラッチ３４及びスレーブラッチ３０と、バルーン部３２と、を備える。
【００３０】
マスターラッチ３４は、不揮発性フリップフロップ回路１６の外部から入力された入力信号Ｄをクロック信号ＣＬＫに応じたタイミングで取り込んで保持する機能を有する。
【００３１】
マスターラッチ３４は、インバータＩＶ６〜ＩＶ８、及びトランスファーゲートＴＧ１〜ＴＧ３を備える。インバータＩＶ６には不揮発性フリップフロップ回路１６の外部から入力信号Ｄが入力される。
【００３２】
トランスファーゲートＴＧ１〜ＴＧ３は、クロック信号ＣＬＫによりオン（ＯＮ）及びオフ（ＯＦＦ）が制御される。なお、トランスファーゲートＴＧ１と、トランスファーゲートＴＧ２及びＴＧ３とでは、クロック信号ＣＬＫによりオン、オフするタイミングが逆になっている。
【００３３】
スレーブラッチ３０は、マスターラッチ３４から出力されたデータをクロック信号ＣＬＫに応じたタイミングで取り込んで保持し、入力信号Ｄと同じ論理値の出力信号Ｑを不揮発性フリップフロップ回路１６の外部に出力する機能を有する。本実施形態のスレーブラッチ３０が、本開示のフリップフロップの一例である。
【００３４】
スレーブラッチ３０は、ＮＡＮＤ回路ＮＡＮＤ１、インバータＩＶ１、トランスファーゲートＴＧ４、ＰＭＯＳトランジスタＴＲ７、及びＮＭＯＳトランジスタＴＲ８〜ＴＲ１０を備える。トランスファーゲートＴＧ４は、クロック信号ＣＬＫによりオン及びオフが制御される。また、ＰＭＯＳトランジスタＴＲ７は、制御信号ＳＲ１によりオン及びオフが制御される。
【００３５】
ＮＡＮＤ回路ＮＡＮＤ１に供給される制御信号ＲＢは、非同期リセット信号であり、制御信号ＲＢの論理値を「０」に設定すると、スレーブラッチ３０内に記憶されているデータの論理値を「０」に初期化できる。
【００３６】
本実施形態のＮＭＯＳトランジスタＴＲ８〜ＴＲ１０が、本開示の技術の確認部の一例である。ＮＭＯＳトランジスタＴＲ８は、一端（ドレイン）がインバータＩＶ１の電源に接続され、他端（ソース）がＶＧＮＤ電圧が供給される電源線（以下、単に「ＶＧＮＤ電圧」という）に接続されている。ＮＭＯＳトランジスタＴＲ９は、一端（ソース）がノードＮ１に接続され、他端（ドレイン）がノードＮ２に接続されている。また、ＮＭＯＳトランジスタＴＲ１０は、一端（ドレイン）がＮＡＮＤ回路ＮＡＮＤ１の電源に接続され、他端（ソース）がＶＧＮＤ電圧に接続されている。ＮＭＯＳトランジスタＴＲ８、ＴＲ１０は、信号ＬＰＧの反転信号によりオン及びオフが制御される。一方、ＮＭＯＳトランジスタＴＲ９は、信号ＬＰＧによりオン及びオフが制御される。
【００３７】
本実施形態のマスターラッチ３４及びスレーブラッチ３０によるフリップフロップ動作について説明する。
【００３８】
クロック信号ＣＬＫの論理値が「１」から「０」になると、トランスファーゲートＴＧ１、ＴＧ４はオン状態、トランスファーゲートＴＧ２、ＴＧ３はオフ状態になる。これにより、マスターラッチ３４では入力信号Ｄが取り込まれ、スレーブラッチ３０ではクロック信号ＣＬＫの論理値が「０」になる前に取り込んだ信号が保持される。
【００３９】
次にクロック信号ＣＬＫの論理値が「０」から「１」になると、トランスファーゲートＴＧ１、ＴＧ４はオフ状態、トランスファーゲートＴＧ２、ＴＧ３はオン状態になる。これにより、マスターラッチ３４では、クロック信号ＣＬＫの論理値が「１」になる前に取り込んだ信号が保持され、スレーブラッチ３０ではマスターラッチ３４のトランスファーゲートＴＧ３から出力された信号が取り込まれ、取り込まれた信号と同じ論理値の出力信号ＱがインバータＩＶ９から出力される。
【００４０】
本実施形態のバルーン部３２は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込んだデータと同一のデータを一時的に保持し、該データと、現在スレーブラッチ３０に保持されているデータとの比較を行う。そしてバルーン部３２は、比較結果に基づいてＭＴＪ素子ＭＴＪ１、ＭＴＪ２にスレーブラッチ３０に保持されているデータの書き込みを行うか否かを制御する。バルーン部３２は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータと、スレーブラッチ３０に保持されているデータとが一致する場合は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にデータの書き込みを行わない制御を行う。
【００４１】
具体的には、本実施形態のバルーン部３２は、図２に示すようにインバータＩＶ１０、ＩＶ１１、トランスファーゲートＴＧ５、ＴＧ６、及びＸＯＲ回路ＸＯＲ１を備えている。
【００４２】
トランスファーゲートＴＧ５の入力端子はスレーブラッチ３０のＮＡＮＤ回路ＮＡＮＤ１の入力端子（マスターラッチ３４のトランスファーゲートＴＧ３の出力端子）に接続されている。また、トランスファーゲートＴＧ５の出力端子は、インバータＩＶ１０の入力端子及びトランスファーゲートＴＧ６の出力端子に接続されている。インバータＩＶ１１の出力端子はトランスファーゲートＴＧ６の入力端子に接続されている。トランスファーゲートＴＧ５、ＴＧ６は制御信号Ｓａｖｅによりオン及びオフが制御される。なお、トランスファーゲートＴＧ５と、トランスファーゲートＴＧ６とでは、制御信号Ｓａｖｅによりオン、オフするタイミングが逆になっている。
【００４３】
ＸＯＲ回路ＸＯＲ１の一方の入力端子には、インバータＩＶ１０の出力端子及びインバータＩＶ１１の入力端子が接続されている。また、ＸＯＲ回路ＸＯＲ１の他方の入力端子には、スレーブラッチ３０のＮＡＮＤ回路ＮＡＮＤ１の出力端子（インバータＩＶ９の入力端子）が接続されている。ＸＯＲ回路ＸＯＲ１からは出力信号ＣＭＰ＿ＯＵＴが出力される。
【００４４】
さらに、図２に示すように本実施形態の不揮発性フリップフロップ回路１６は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２を備える。
【００４５】
ＭＴＪ素子ＭＴＪ１、ＭＴＪ２は、印加される電圧の大きさに応じて抵抗値が変化する。自由層ｆからピン層ｐへ向かう方向に電流を流すと、自由層ｆの磁化方向がピン層ｐと同一になってＭＴＪ素子は低抵抗となり、論理値が「１」のデータを記憶した状態となる。一方、ピン層ｐから自由層ｆへ向かう方向に電流を流すと、自由層ｆの磁化方向がピン層ｐと反対になってＭＴＪ素子は高抵抗となり、論理値が「０」のデータを記憶した状態となる。
【００４６】
ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されたデータ（情報）は、グランド電圧がＶＧＮＤ電圧に切り替わった後も保持される。そのため本実施形態の不揮発性フリップフロップ回路１６は、パワーゲーティングを行う場合、スリープ状態に移行する前に、スレーブラッチ３０が保持しているデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込んで記憶させる。また、不揮発性フリップフロップ回路１６は、スリープ状態から復帰する場合は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれているデータをスレーブラッチ３０へ読み出して復元する。
【００４７】
なお、本実施形態では、スレーブラッチ３０が保持しているデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶させる動作を「ストア」という。また、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２からデータを読み出しスレーブラッチ３０に復元させる動作を「リストア」という。
【００４８】
本実施形態のＭＴＪ素子ＭＴＪ１、ＭＴＪ２は、ピン層ｐ側が制御信号ＣＴＲＬが流れる制御信号線に接続されている。ＭＴＪ素子ＭＴＪ１の自由層ｆ側はＰＭＯＳトランジスタＴＲ１の一端（ドレイン）及びＮＭＯＳトランジスタＴＲ３、ＴＲ５の一端（ソース）に接続されている。また、ＭＴＪ素子ＭＴＪ２の自由層ｆ側はＰＭＯＳトランジスタＴＲ２の一端（ドレイン）及びＮＭＯＳトランジスタＴＲ４、ＴＲ６の一端（ソース）に接続されている。
【００４９】
ＰＭＯＳトランジスタＴＲ１は一端（ドレイン）がＭＴＪ素子ＭＴＪ１に接続されており、他端（ソース）がスレーブラッチ３０及びバルーン部３２に接続されている。一方、ＰＭＯＳトランジスタＴＲ２は一端（ドレイン）がＭＴＪ素子ＭＴＪ２に接続されており、他端（ソース）がスレーブラッチ３０及びバルーン部３２に接続されている。ＰＭＯＳトランジスタＴＲ１、ＴＲ２は、制御信号ＳＲ１によりオン及びオフが制御される。
【００５０】
また、ＮＭＯＳトランジスタＴＲ３は一端（ソース）がＭＴＪ素子ＭＴＪ１に接続されており、他端（ドレイン）がインバータＩＶ３の出力に接続されている。インバータＩＶ３の入力は、ノードＮ２及びインバータＩＶ１の入力に接続されている。一方、ＮＭＯＳトランジスタＴＲ４は一端（ソース）がＭＴＪ素子ＭＴＪ２に接続されており、他端（ドレイン）がインバータＩＶ２の出力に接続されている。インバータＩＶ２の入力は、ノードＮ１及びトランスファーゲートＴＧ４の出力に接続されている。ＮＭＯＳトランジスタＴＲ３、ＴＲ４は、制御信号ＳＲ２によりオン及びオフが制御される。
【００５１】
また、本実施形態は、本開示の技術の再書込部の一例である、インバータＩＶ４、ＩＶ５、及びＮＭＯＳトランジスタＴＲ５、ＴＲ６を備える。インバータＩＶ４、ＩＶ５、及びＮＭＯＳトランジスタＴＲ５、ＴＲ６は、制御信号ＳＲ３に応じて、バルーン部３２に保持されているデータの論理値（レベル）を反転させたデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込ませる機能を有する。
【００５２】
インバータＩＶ４の入力は、バルーン部３２のノードＮ１１及びトランスファーゲートＴＧ６の出力に接続されており、出力は、ＮＭＯＳトランジスタＴＲ５の一端（ドレイン）に接続されている。ＮＭＯＳトランジスタＴＲ５の他端（ソース）は、ＭＴＪ素子ＭＴＪ１に接続されている。一方、インバータＩＶ５の入力は、バルーン部３２のノードＮ１２及びインバータＩＶ１１の入力に接続されており、出力は、ＮＭＯＳトランジスタＴＲ６の一端（ドレイン）に接続されている。ＮＭＯＳトランジスタＴＲ６の他端（ソース）は、ＭＴＪ素子ＭＴＪ２に接続されている。ＮＭＯＳトランジスタＴＲ５、ＴＲ６は、制御信号ＳＲ３によりオン及びオフが制御される。
【００５３】
次に、本実施形態の不揮発性フリップフロップ回路１６の動作について説明する。図３及び図４には、本実施形態の半導体集積回路１０の制御による不揮発性フリップフロップ回路１６の動作の流れの一例を表すフローチャートを示す。図３及び図４に示すように、本実施形態の不揮発性フリップフロップ回路１６は、制御回路１２の制御に応じた、初期化、アクティブ、ストア、ベリファイ、リトライ、スリープ、及びリストアの７つの動作モードを有する。
【００５４】
まず、不揮発性フリップフロップ回路１６は、初期化動作を行う。そのため、図３に示すように、ステップＳ１００では、制御回路１２は、クロック信号ＣＬＫの論理値を「０」に、かつスリープ制御信号ＰＳ＿ＥＮの論理値を「１」にした状態で、制御信号ＲＢの論理値を「０」にする。スレーブラッチ３０では、ノードＮ２の電位が「１」になるため、スレーブラッチ３０が保持する信号の値が「０」に初期化される。
【００５５】
なお、信号ＬＰＧの論理値は「０」であるため、ＮＭＯＳトランジスタＴＲ９はオフ状態であり、ＮＭＯＳトランジスタＴＲ８、ＴＲ１０はオン状態である。
【００５６】
次のステップＳ１０２で制御回路１２は、制御信号ＲＢの論理値を「１」にし、さらに制御信号ＳＲ２の論理値を「１」にする。これにより、ＮＡＮＤ回路ＮＡＮＤ１が動作し、またＮＭＯＳトランジスタＴＲ３、ＴＲ４がオン状態になるため、インバータＩＶ２、ＩＶ３を介してスレーブラッチ３０に保持されたデータが、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれる。
【００５７】
また、制御回路１２は、制御信号Ｓａｖｅの論理値を「１」にする。これにより、バルーン部３２のトランスファーゲートＴＧ５がオン状態に、トランスファーゲートＴＧ６がオフ状態になり、スレーブラッチ３０に保持されたデータがバルーン部３２に書き込まれる。
【００５８】
次のステップＳ１０４で制御回路１２は、制御信号Ｓａｖｅの論理値を「０」にし、信号ＬＰＧの論理値を「１」にする。これにより、トランスファーゲートＴＧ５がオフ状態に、トランスファーゲートＴＧ６がオン状態になる。また、ＮＭＯＳトランジスタＴＲ８がオフ状態になるため、インバータＩＶ１がＶＧＮＤ電圧から電気的に切り離される。同様に、ＮＭＯＳトランジスタＴＲ１０がオフ状態になるため、ＮＡＮＤ回路ＮＡＮＤ１がＶＧＮＤ電圧から電気的に切り離される。さらに、ＮＭＯＳトランジスタＴＲ９がオン状態になるため、ノードＮ１とノードＮ２とが導通し、等電位になる。
【００５９】
次のステップＳ１０６で制御回路１２は、信号ＬＰＧの論理値を「０」に変化させ、制御信号ＳＲ１の論理値を「０」にする。これにより、ＰＭＯＳトランジスタＴＲ１、ＴＲ２がオン状態になるため、ＭＴＪ素子ＭＴＪ１とＭＴＪ素子ＭＴＪ２との抵抗差に応じて、ノードＮ１及びノードＮ２の電位が決定し、ＭＴＪ素子ＭＴＪ１及びＭＴＪ２に記憶されているデータが、スレーブラッチ３０に読み出される。
【００６０】
この際、バルーン部３２に記憶しているデータの論理値は「０」であるため、ノードＮ１１の電位は「０」であり、ノードＮ１２の電位は「１」である。
【００６１】
その結果、ノードＮ２の電位が「１」ならば、ＸＯＲ回路ＸＯＲ１から出力される出力信号ＣＭＰ＿ＯＵＴの論理値は、「０」になる。一方、ノードＮ２の電位が「０」ならば、ＸＯＲ回路ＸＯＲ１から出力される出力信号ＣＭＰ＿ＯＵＴの論理値は、「１」になる。
【００６２】
このように、論理値「０」に初期化したスレーブラッチ３０のデータが正しくＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれ（ストアされ）ており、バルーン部３２に記憶されていたデータと一致する場合、出力信号ＣＭＰ＿ＯＵＴの論理値は「０」になる、一方、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にスレーブラッチ３０のデータが正しくストアされていない場合、出力信号ＣＭＰ＿ＯＵＴの論理値は「１」になる。
【００６３】
そこで、次のステップＳ１０８で制御回路１２は、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」であるか否かを判定する。出力信号ＣＭＰ＿ＯＵＴの論理値が「０」ではない場合、ステップＳ１０８の判定が否定判定となり、ステップＳ１００に戻り、再び初期化動作を繰り返す。なお、この際、制御回路１２は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にスレーブラッチ３０からデータを書き込みしやすくするための処理を行うことが好ましい。データを書き込みしやすくするための処理としては、例えば、制御信号ＳＲ２の電圧を大きく（信号の振幅を高く）することが挙げられる。
【００６４】
一方、出力信号ＣＭＰ＿ＯＵＴの論理値が「１」の場合、ステップＳ１０８の判定が肯定判定となり、初期化動作を終了してステップＳ１１０へ移行する。
【００６５】
アクティブ動作であるステップＳ１１０では、制御回路１２は、パワースイッチ１４をオン状態にし、不揮発性フリップフロップ回路１６のグランド電圧をＧＮＤ電圧に切り替える。アクティブ動作では、クロック信号ＣＬＫにより制御される通常動作を行う。
【００６６】
次に、不揮発性フリップフロップ回路１６は、ストア動作を行う。
【００６７】
そのため、次のステップＳ１１２では、制御回路１２は、クロック信号ＣＬＫのトグルを停止し、クロック信号ＣＬＫの論理値を「０」に維持する。また、制御回路１２は、バルーン部３２に記憶されているデータとスレーブラッチ３０に保持されているデータとの比較を、次のステップＳ１１４で行う。具体的には、ステップＳ１１４で制御回路１２は、出力信号ＣＭＰ＿ＯＵＴの論理値が「１」であるか否かを判定する。
【００６８】
バルーン部３２に記憶されているデータと、スレーブラッチ３０に保持されているデータとが異なる場合、例えば、スレーブラッチ３０のノードＮ１の電位が「１」、ノードＮ２の電位が「０」に、バルーン部３２のノードＮ１１の電位が「０」、ノードＮ１２の電位が「１」になる。この場合、出力信号ＣＭＰ＿ＯＵＴの論理値が「１」になる。そのため、ステップＳ１１４の判定が肯定判定となり、ステップＳ１１６に移行する。ステップＳ１１６では、制御回路１２は、制御信号ＳＲ２の論理値を「１」にし、ＮＭＯＳトランジスタＴＲ３、ＴＲ４をオン状態にして、スレーブラッチ３０に保持されているデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込む。
【００６９】
一方、バルーン部３２に記憶されているデータと、スレーブラッチ３０に保持されているデータとが同一の場合、例えば、スレーブラッチ３０のノードＮ１の電位が「０」、ノードＮ２の電位が「１」に、バルーン部３２のノードＮ１１の電位が「０」、ノードＮ１２の電位が「１」になる。この場合、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」になる。そのため、ステップＳ１１４の判定が否定となり、ステップＳ１１８に移行する。この際、制御信号ＳＲ２の論理値は「０」のままであるため、ＮＭＯＳトランジスタＴＲ３、ＴＲ４はオフ状態であり、スレーブラッチ３０に保持されているデータがＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれない。
【００７０】
なお、初期化動作の直後は、バルーン部３２に記憶されているデータの論理値は「０」である。一方、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にデータが正しく書き込まれている場合、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータの論理値も「０」であり、バルーン部３２に記憶されているデータと一致する。
【００７１】
これにより、本実施形態では、スレーブラッチ３０に保持されているデータと、バルーン部３２に記憶されているデータとが異なる場合のみ、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に、データの書込が行われる。
【００７２】
不揮発性フリップフロップ回路１６は、このようにしてストア動作が終了すると、次にベリファイ動作を行う。
【００７３】
次のステップＳ１１８では、制御回路１２は、制御信号Ｓａｖｅの論理値を「０」にし、信号ＬＰＧの論理値を「１」にする。これにより、スレーブラッチ３０のＮＡＮＤ回路ＮＡＮＤ１とインバータＩＶ１とがＶＧＮＤ電圧から電気的に切り離される。また、ＮＭＯＳトランジスタＴＲ９がオン状態になり、ノードＮ１とノードＮ２とが導通し、等電位になる。
【００７４】
次のステップＳ１２０で制御回路１２は、信号ＬＰＧの論理値を「０」に変化させ、制御信号ＳＲ１の論理値を「０」にすると、トランジスタＴＲ８、ＴＲ１０がオン状態になり、トランジスタＴＲ９がオフ状態になり、ＰＭＯＳトランジスタＴＲ１、ＴＲ２がオン状態になる。そのため、ＭＴＪ素子ＭＴＪ１とＭＴＪ素子ＭＴＪ２との抵抗差で、ノードＮ１及びノードＮ２の電位が決定し、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータがスレーブラッチ３０に読み出される。
【００７５】
次のステップＳ１２２で制御回路１２は、出力信号ＣＭＰ＿ＯＵＴの論理値が「１」であるか否かを判定する。
【００７６】
ここで、例として、スレーブラッチ３０に保持されたデータの論理値が「１」であり、このデータをストアした場合について述べる。この場合、ノードＮ１の電位が「１」に、ノードＮ２の電位が「０」である。ストアを行う場合は、上述したように、スレーブラッチ３０に保持されたデータとバルーン部３２に記憶されたデータとが異なる場合である。そのため、この場合、バルーン部３２に保持されているデータの論理値は「０」であり、バルーン部３２のノードＮ１１の電位は「０」であり、ノードＮ１２の電位は「１」である。
【００７７】
ノードＮ１２の電位が「１」、かつノードＮ２の電位が「０」の場合、ＸＯＲ回路ＸＯＲ１から出力される出力信号ＣＭＰ＿ＯＵＴの論理値は「１」になる。これにより、スレーブラッチ３０に保持されたデータの論理値である「１」をＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書込み、さらにＭＴＪ素子ＭＴＪ１、ＭＴＪ２からスレーブラッチ３０に読み出したデータの論理値が、バルーン部３２に記憶しておいたデータの論理値「０」と逆であることが判定される。従って、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２へデータが正しくストアされたことが確認できる。この場合、ステップＳ１２２の判定が肯定判定となり、リトライ動作を終了して、後述する、スリープ動作（ステップＳ１２８）へ移行する。
【００７８】
一方、スレーブラッチ３０のノードＮ２の電位と、バルーン部３２のノードＮ１２の電位とが一致する場合、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」になる。そのため、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」の場合、ＭＴＪ素子ＭＴＪ１にデータが正しくストアされていないと、判定することができる。この場合、ステップＳ１２２の判定が否定判定となり、ステップＳ１２４へ移行する。
【００７９】
ステップＳ１２４で制御回路１２は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２へのデータの書込を容易にするための所定の制御処理を行う。
【００８０】
リトライ動作において、制御回路１２が、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２へのデータの書込を行いやすくするための所定の制御処理としては、特に限定されないが、例えば、以下の制御処理が挙げられる。なお、リトライ動作を開始した直後は、ステップＳ１２４を省略してステップＳ１２６へ以降してもよい。
【００８１】
例えば、全体の電源電圧を高くすることにより、各トランジスタを動作しやすく（書き込みしやすく）する制御処理が挙げられる。
【００８２】
また例えば、既に、リトライ動作（後述のステップＳ１２６の動作）を行った後の場合、制御信号ＳＲ３のパルス幅を長くして、ＮＭＯＳトランジスタＴＲ５、ＴＲ６のオン時間を長くすることにより、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にデータを書き込む書込時間を長くしてもよい。なお、この場合、予め、書込に適した時間を複数通り用意しておき、制御回路１２は、短い時間から順次適用することにより、書込時間を長くしていくようにしてもよい。
【００８３】
また例えば、既に、リトライ動作（後述のステップＳ１２６の動作）を行った後の場合、ＮＭＯＳトランジスタＴＲ５、ＴＲ６の閾値電圧を変化させ、ＮＭＯＳトランジスタＴＲ５、ＴＲ６をオン状態にし易くしてもよい。
【００８４】
また例えば、既に、リトライ動作（後述のステップＳ１２６の動作）を行った後の場合、制御信号ＳＲ３の振幅電圧を高くすることにより、ＮＭＯＳトランジスタＴＲ５、ＴＲ６をオン状態にし易くしてもよい。
【００８５】
また例えば、ＣＴＲＬ信号の電圧を高く（電圧パルス幅を大きく）してもよい。
【００８６】
そして、次のステップＳ１２６で制御回路１２は、制御信号ＳＲ３の論理値を「１」にする。これにより、ＮＭＯＳトランジスタＴＲ５、ＴＲ６がオン状態になるため、インバータＩＶ４、ＩＶ５を介して、バルーン部３２に記憶されているデータの論理値が反転されたデータがＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれる。この、バルーン部３２に記憶されているデータの論理値が反転されたデータが、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にストアすべき、正しいデータである。
【００８７】
ステップＳ１２６の動作の後、ステップＳ１１８に戻り、不揮発性フリップフロップ回路１６は、再度、ベリファイ動作を行う。
【００８８】
このように、本実施形態の不揮発性フリップフロップ回路１６では、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に正しくデータが書き込まれるまで、ベリファイ動作とリトライ動作とを繰り返す。
【００８９】
一方、上述したように、ベリファイ動作により、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にデータが正しく書き込まれていると判定された場合（ステップＳ１２２で肯定判定）、ステップＳ１２８のスリープ動作へ移行する。
【００９０】
スリープ動作では、制御回路１２は、パワースイッチ１４をオフ状態にする。これにより、不揮発性フリップフロップ回路１６のグランド電位がＧＮＤ電圧からＶＧＮＤ電圧に切り替わり、回路を流れるリーク電流がカットされる。
【００９１】
スリープ状態から復帰する場合、ステップＳ１３０に移行し、リストア動作を行う。リストア動作のステップＳ１３０では、制御回路１２は、制御信号ＳＲ１、ＳＲ２の論理値を「０」にし、さらに、パワースイッチ１４をオン状態にする。これにより、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータを、スレーブラッチ３０に読み出す。
【００９２】
次のステップＳ１３２で制御回路１２は、制御信号Ｓａｖｅの論理値を「１」にし、スレーブラッチ３０に読み出されたデータをバルーン部３２に書き込む。これにより、スリープ状態から復帰した時点でＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータを、スレーブラッチ３０に保持しておくことができる。
【００９３】
この後、制御信号Ｓａｖｅの論理値を「０」に変化させ、アクティブ動作を再開する（ステップＳ１１０に戻る）。
【００９４】
以上説明したように、本実施形態の不揮発性フリップフロップ回路１６は、スレーブラッチ３０と、バルーン部３２と、ＮＭＯＳトランジスタＴＲ８〜ＴＲ１０と、を備える。バルーン部３２は、自装置に対するグランド電圧がＶＧＮＤ電圧に切り替えられる場合に、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータとスレーブラッチ３０が保持するデータとが同一でない場合は、スレーブラッチ３０が保持するデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込ませる制御を行う。さらに、バルーン部３２は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータとスレーブラッチ３０に保持されているデータとが同一の場合は、スレーブラッチ３０が保持するデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込ませない制御を行う。ＮＭＯＳトランジスタＴＲ８〜ＴＲ１０は、スレーブラッチ３０が保持するデータがＭＴＪ素子ＭＴＪ１、ＭＴＪ２に正しく書き込まれたか否かを表す出力信号ＣＭＰ＿ＯＵＴをバルーン部３２のＸＯＲ回路ＸＯＲ１から出力させる機能を有する。
【００９５】
不揮発性フリップフロップ回路１６では、トランジスタ等の製造ばらつきや、温度によるばらつき等により、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にデータを正しく書き込めない場合がある。特に、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にデータを書き込む（ストア）際に消費する電力を抑制するために、制御信号ＣＴＲＬの電圧パルス幅や電圧振幅を小さくすると、書き込みに失敗する可能性が高くなる。
【００９６】
これに対して、本実施形態の不揮発性フリップフロップ回路１６によれば、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にデータの書き込み（ストア）動作を行った後、データが正しく書き込まれたか確認するベリファイ機能を有し、確認結果を表す出力信号ＣＭＰ＿ＯＵＴを出力する。
【００９７】
また、本実施形態の不揮発性フリップフロップ回路１６によれば、確認を行った結果、データが正しく書き込まれていない場合は、正しいデータを再びＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込む。
【００９８】
これにより、本実施形態の不揮発性フリップフロップ回路１６によれば、トランジスタのサイズを大きくする等せずとも、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれたデータが正しいか確認することができ、その結果、正しくデータを書き込むことができる。従って、本実施形態の不揮発性フリップフロップ回路１６によれば、消費電力を抑制することができる。
【００９９】
また、本実施形態の不揮発性フリップフロップ回路１６によれば、確認結果に応じて、正しいデータを再びＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込む際は、データを書き込みやすくするが、消費電力が少ない状態から徐々に、消費電力が大きな状態に変更していく。例えば、制御信号ＳＲ３のパルス幅を長くして、ＮＭＯＳトランジスタＴＲ５、ＴＲ６のオン時間を長くすることにより、データを書き込みやすくする場合、オン時間を少しづつ長くしながら、データの再書き込みを行う。そのため、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に正しくデータを書き込むのに要する電力を最小に近づけることができ、消費電力を抑制することができる。
【０１００】
［第２実施形態］
本実施形態は、不揮発性フリップフロップ回路１６の一部の構成及び動作が第１実施形態の不揮発性フリップフロップ回路１６（図２参照）と異なるため、異なる構成及び動作について説明する。
【０１０１】
図５には、本実施形態の不揮発性フリップフロップ回路１６の一例の回路図を示す。
【０１０２】
本実施形態の不揮発性フリップフロップ回路１６のマスターラッチ３４は、第１実施形態のマスターラッチ３４が備えていたインバータＩＶ８に代わり、ＮＡＮＤ回路ＮＡＮＤ２０を備えている点で異なっている。
【０１０３】
ＮＡＮＤ回路ＮＡＮＤ２０には制御信号ＲＢが供給され、制御信号ＲＢの論理値を「０」に設定すると、マスターラッチ３４内に記憶されているデータの論理値が初期化される。また、ＮＡＮＤ回路ＮＡＮＤ２０には、インバータＩＶ７から出力された信号が入力されるため、制御信号ＲＢの論理値を「１」に設定すると、インバータＩＶ７から出力された信号の反転信号が出力される。
【０１０４】
本実施形態のマスターラッチ３４においても、第１実施形態のマスターラッチ３４と同様に、クロック信号ＣＬＫの論理値が「１」から「０」になると、入力信号Ｄを取り込み、クロック信号ＣＬＫの論理値が「０」から「１」になると、取り込んだ信号を保持する。
【０１０５】
さらに、本実施形態の不揮発性フリップフロップ回路１６のスレーブラッチ３０は、ノードＮ１とノードＮ２とに接続されたＮＭＯＳトランジスタＴＲ９を備えていない点で第１実施形態のスレーブラッチ３０と異なっている。また、本実施形態のスレーブラッチ３０は、ＮＡＮＤ回路ＮＡＮＤ１及びインバータ回路ＩＶ１各々の電源にトランジスタＴＲ１０、ＴＲ８が接続されていない点で、第１実施形態のスレーブラッチ３０と異なっている。
【０１０６】
なお、本実施形態のスレーブラッチ３０の構成は、従来の半導体集積回路、例えば、上記非特許文献３に記載されているスレーブラッチ（図示省略）と同様の構成である。
【０１０７】
またさらに、本実施形態の不揮発性フリップフロップ回路１６のバルーン部３２は、インバータＩＶ１０の電源にＮＭＯＳトランジスタＴＲ２３が接続されている点で、第１実施形態のバルーン部３２と異なっている。また、本実施形態のバルーン部３２は、トランスファーゲートＴＧ５、ＴＧ６を備えておらず、かつインバータＩＶ１１に代わり、トランジスタＴＲ２２が接続されたＮＡＮＤ回路ＮＡＮＤ２１を備えている点で、第１実施形態のバルーン部３２と異なっている。
【０１０８】
ＮＡＮＤ回路ＮＡＮＤ２１には制御信号ＲＢが供給され、また、インバータＩＶ１０から出力された信号が入力される。また、ＮＡＮＤ回路ＮＡＮＤ２１の電源には、ＮＭＯＳトランジスタＴＲ２２が接続されている。
【０１０９】
ＮＭＯＳトランジスタＴＲ２２は、一端（ドレイン）がＮＡＮＤ回路ＮＡＮＤ２１の電源に接続され、他端（ソース）がＶＧＮＤ電圧に接続されている。一方、ＮＭＯＳトランジスタＴＲ２３は、一端（ドレイン）がインバータＩＶ１０の電源に接続され、他端（ソース）がＶＧＮＤ電圧に接続されている。ＮＭＯＳトランジスタＴＲ２２、ＴＲ２３は、信号ＬＰＧによりオン及びオフが制御される。従って、本実施形態のバルーン部３２のインバータＩＶ１０及びＮＡＮＤ回路ＮＡＮＤ２１は、信号ＬＰＧの論理値が「０」になるとＶＧＮＤ電圧から切り離される。
【０１１０】
また、本実施形態の不揮発性フリップフロップ回路１６は、本開示の技術の再書込部の一例が第１実施形態の不揮発性フリップフロップ回路１６と異なっている。具体的には、図５に示したように本実施形態の不揮発性フリップフロップ回路１６では、インバータＩＶ４、ＩＶ５を備えておらず、ＮＭＯＳトランジスタＴＲ５、ＴＲ６に代わり、ＰＭＯＳトランジスタＴＲ２０、ＴＲ２１を備えている点で第１実施形態の不揮発性フリップフロップ回路１６と異なっている。
【０１１１】
本実施形態の不揮発性フリップフロップ回路１６では、ＮＭＯＳトランジスタＴＲ３、ＴＲ４が、制御信号ＳＲ２に応じて、スレーブラッチ３０に保持されているデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に再び書き込ませる機能を有する。このように、本実施形態の不揮発性フリップフロップ回路１６では、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２へデータを書き込む際は、常にスレーブラッチ３０に保持されているデータを書き込む点で、第１実施形態の不揮発性フリップフロップ回路１６と異なっている。
【０１１２】
次に、本実施形態の不揮発性フリップフロップ回路１６の動作について説明する。本実施形態の不揮発性フリップフロップ回路１６の動作も、第１実施形態の不揮発性フリップフロップ回路１６の動作（図３及び図４参照）と同様に、初期化、アクティブ、ストア、ベリファイ、リトライ、スリープ、及びリストアの７つの動作モードを有する。図６及び図７には、本実施形態の半導体集積回路１０の制御による不揮発性フリップフロップ回路１６の動作の流れの一例を表すフローチャートを示す。なお、第１実施形態の不揮発性フリップフロップ回路１６の動作と同様の動作については、同様のステップ番号を付与し、詳細な説明を省略する。
【０１１３】
本実施形態においてもまず、不揮発性フリップフロップ回路１６は、初期化動作を行う。そのため、図６に示すように、ステップＳ１０１では、制御回路１２は、第１実施形態の初期化動作におけるステップＳ１００と同様に、クロック信号ＣＬＫの論理値を「０」、かつスリープ制御信号ＰＳ＿ＥＮの論理値を「１」にした状態で、制御信号ＲＢの論理値を「０」にする。これにより、ノードＮ２の電位が「１」になり、ノードＮ１の電位が「０」になるため、スレーブラッチ３０が保持する信号の値が「０」に初期化される。
【０１１４】
また、本実施形態では、ステップＳ１０１で制御回路１２は、信号ＬＰＧの論理値を「１」にし、バルーン部３２のトランジスタＴＲ２２、ＴＲ２３をオン状態にする。これにより、ＮＡＮＤ回路ＮＡＮＤ２１から出力される信号によりノードＮ１１の電位が「１」になり、インバータＩＶ１０から出力される信号によりノードＮ１２の電位が「０」になる。そのため、バルーン部３２が保持する信号の値が「１」に初期化される。
【０１１５】
この状態において、ＸＯＲ回路ＸＯＲ１から出力される出力信号ＣＭＰ＿ＯＵＴの論理値は、「１」になる。ここで、出力信号ＣＭＰ＿ＯＵＴの論理値が「１」ならば、制御回路１２は、スレーブラッチ３０及びバルーン部３２が正常に初期化されたとみなせる。一方、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」ならば、制御回路１２は、スレーブラッチ３０及びバルーン部３２の少なくとも一方が正常に初期化されていないとみなせる。このように、初期化が正常に行われていないとみなせる場合は、制御回路１２は、初期化を行いやすくするための処理等、所定の処理を行うようにしてもよい。初期化を行いやすくするための処理としては、例えば、全体の電源電圧を高くすることにより、各トランジスタを動作しやすく（書き込みしやすく）する制御処理が挙げられる。
【０１１６】
次のステップＳ１０３で制御回路１２は、制御信号ＲＢの論理値を「１」にし、さらに制御信号ＳＲ１、ＳＲ２、ＳＲ３の論理値を「１」にする。これにより、ＰＭＯＳトランジスタＴＲ２０、ＴＲ２１がオフ状態となり、ＮＭＯＳトランジスタＴＲ３、ＴＲ４がオン状態になるため、インバータＩＶ２、ＩＶ３を介してスレーブラッチ３０に保持されたデータが、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれる。
【０１１７】
ＭＴＪ素子ＭＴＪ１、ＭＴＪ２への書き込みは、具体的には、制御信号ＣＴＲＬの論理値を「１」にすることで、制御信号ＣＴＲＬが流れる制御信号線からＭＴＪ素子ＭＴＪ１、及びＮＭＯＳトランジスタＴＲ３を介して、インバータＩＶ３へ電流を流す。これにより、書込が正常に行われる場合、ＭＴＪ素子ＭＴＪ１は、高抵抗状態となり、論理値「０」のデータが記憶された状態となる。また、制御信号ＣＴＲＬの論理値を「０」にすることで、ＮＭＯＳトランジスタＴＲ４及びＭＴＪ素子ＭＴＪ２を介して上記制御信号線に電流が流れる。これにより、書込が正常に行われる場合、ＭＴＪ素子ＭＴＪ２は、低抵抗状態となり、論理値「１」のデータが記憶された状態となる。
【０１１８】
次のステップＳ１０７で制御回路１２は、制御信号ＣＴＲＬの論理値を「１」にした状態で、制御信号ＳＲ３の論理値を「０」にし、信号ＬＰＧの論理値を「０」にして、バルーン部３２のＮＭＯＳトランジスタＴＲ２２、ＴＲ２３をオフ状態にして、ＮＡＮＤ回路ＮＡＮＤ２１及びインバータＩＶ１０をＶＧＮＤ電圧から電気的に切り離す。これにより、ＧＮＤ電圧を供給する電源線への電流経路が遮断されるため、ノードＮ１１及びノードＮ１２共に、高電位（論理値「１」）となる。
【０１１９】
この後、信号ＬＰＧの論理値を再び「１」にすると、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２の抵抗差、及びトランジスタＴＲ２０、ＴＲ２１のコンダクタンスの差に応じて、ノードＮ１１及びノードＮ１２の電位が決定し、ＭＴＪ素子ＭＴＪ１及びＭＴＪ２に記憶されているデータが、バルーン部３２に読み出される。
【０１２０】
この際、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２への書き込みが正常に行われていれば、上述のようにＭＴＪ素子ＭＴＪ１は高抵抗状態であり、ＭＴＪ素子ＭＴＪ２は低抵抗状態であるため、ノードＮ１１の電位は「０」であり、ノードＮ１２の電位が「１」である。
【０１２１】
上述したように、スレーブラッチ３０のノードＮ２の電位が「１」であるため、ＸＯＲ回路ＸＯＲ１から出力される出力信号ＣＭＰ＿ＯＵＴの論理値は、「０」になる。
【０１２２】
一方、ノードＮ１２の電位が「０」ならば、ＸＯＲ回路ＸＯＲ１から出力される出力信号ＣＭＰ＿ＯＵＴの論理値は、「１」になる。
【０１２３】
このように、論理値「０」に初期化したスレーブラッチ３０のデータが正しくＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれ（ストアされ）、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２から読み出したデータと一致する場合、出力信号ＣＭＰ＿ＯＵＴの論理値は「０」になる、一方、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にスレーブラッチ３０のデータが正しくストアされていない場合、出力信号ＣＭＰ＿ＯＵＴの論理値は「１」になる。
【０１２４】
そこで、次のステップＳ１０８で制御回路１２は、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」であるか否かを判定する。出力信号ＣＭＰ＿ＯＵＴの論理値が「０」ではない場合、ステップＳ１０８の判定が否定判定となり、ステップＳ１０１に戻り、再び初期化動作を繰り返す。なお、この際、制御回路１２は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にスレーブラッチ３０からデータを書き込みしやすくするための処理を行うことが好ましい。データを書き込みしやすくするための処理としては、例えば、制御信号ＳＲ２の電圧を大きく（信号の振幅を高く）することが挙げられる。
【０１２５】
一方、出力信号ＣＭＰ＿ＯＵＴの論理値が「１」の場合、ステップＳ１０８の判定が肯定判定となり、初期化動作を終了してステップＳ１１０へ移行する。
【０１２６】
アクティブ動作及びストア動作は、第１実施形態の不揮発性フリップフロップ回路１６におけるアクティブ動作及びストア動作（ステップＳ１１０〜Ｓ１１６と同様のため説明を省略する。
【０１２７】
一方、本実施形態の不揮発性フリップフロップ回路１６は、ベリファイ動作が第１実施形態の不揮発性フリップフロップ回路１６におけるベリファイ動作（ステップＳ１１０〜Ｓ１１６）と異なるためベリファイ動作について説明する。
【０１２８】
なお、以下では、一例として、スレーブラッチ３０に記憶されているデータの論理値が「１」であり、当該データをＭＴＪ素子ＭＴＪ１、ＭＴＪ２にストアした場合について説明する。なお、論理値が「１」のデータをストアする場合にはバルーン部３２に保持されているデータの論理値は必ず「０」である。
【０１２９】
ステップＳ１１９で制御回路１２は、制御信号ＣＴＲＬの論理値を「１」、制御信号ＳＲ３の論理値を「０」、及び信号ＬＰＧの論理値を「０」にする。そのため、バルーン部３２のＮＭＯＳトランジスタＴＲ２２、ＴＲ２３がオフ状態になり、ＮＡＮＤ回路ＮＡＮＤ２１とインバータＩＶ１０とがＶＧＮＤ電圧から電気的に切り離される。これにより、ノードＮ１１及びノードＮ１２は共に、高電位（「１」）になる。
【０１３０】
次のステップＳ１２１で制御回路１２は、信号ＬＰＧの論理値を「１」に変化させる。ＰＭＯＳトランジスタＴＲ２０、ＴＲ２１がオン状態であるため、ＰＭＯＳトランジスタＴＲ２０、ＴＲ２１のコンダクタンスの差、及びＭＴＪ素子ＭＴＪ１とＭＴＪ素子ＭＴＪ２との抵抗差で、ノードＮ１１及びノードＮ１２の電位が決定し、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータがバルーン部３２に読み出される。
【０１３１】
この際、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２への書き込みが正常に行われていれば、ノードＮ１１の電位は「１」に、ノードＮ１２の電位は「０」になる。また、スレーブラッチ３０のノードＮ２の電位は「０」であるため、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」になる。
【０１３２】
一方、これに対し、上記ストア動作でＭＴＪ素子ＭＴＪ１、ＭＴＪ２への書き込みが正常に行われなかった場合には、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」にならない。
【０１３３】
そこで、次のステップＳ１２３で制御回路１２は、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」であるか否かを判定する。
【０１３４】
出力信号ＣＭＰ＿ＯＵＴの論理値が「０」の場合、すなわち正常にＭＴＪ素子ＭＴＪ１、ＭＴＪ２への書き込みが行われた場合、ステップＳ１２３の判定が肯定判定となり、スリープ動作（ステップＳ１２８）へ移行する。
【０１３５】
一方、出力信号ＣＭＰ＿ＯＵＴの論理値が「０」ではない（「１」である）場合、すなわち正常にＭＴＪ素子ＭＴＪ１、ＭＴＪ２への書き込みが行われなかった場合、ステップＳ１２３の判定が否定判定となり、ステップＳ１２４へ移行する。
【０１３６】
本実施形態のリトライ動作におけるステップＳ１２４で行われる制御処理は、第１実施形態の不揮発性フリップフロップ回路１６におけるリトライ動作のステップＳ１２４と略同様の動作であるため説明を省略する。なお、第１実施形態におけるＮＭＯＳトランジスタＴＲ５、ＴＲ６を、本実施形態では、ＰＭＯＳトランジスタＴＲ２０、ＴＲ２１と読み替えることは言うまでもない。
【０１３７】
次のステップＳ１２７で制御回路１２は、制御信号ＳＲ２の論理値を「１」にする。これにより、ＮＭＯＳトランジスタＴＲ３、ＴＲ４がオン状態になるため、インバータＩＶ２、ＩＶ３を介して、スレーブラッチ３０に記憶されているデータがＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれる。この、スレーブラッチ３０に記憶されているデータが、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にストアすべき、正しいデータである。
【０１３８】
ステップＳ１２６の動作の後、ステップＳ１１９に戻り、不揮発性フリップフロップ回路１６は、再度、ベリファイ動作を行う。
【０１３９】
このように、本実施形態の不揮発性フリップフロップ回路１６においても、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に正しくデータが書き込まれるまで、ベリファイ動作とリトライ動作とを繰り返す。
【０１４０】
本実施形態の不揮発性フリップフロップ回路１６におけるスリープ動作は、第１実施形態の不揮発性フリップフロップ回路１６におけるスリープ動作（ステップＳ１２８）と同様の動作であるため説明を省略する。
【０１４１】
また、スリープ状態から復帰する場合のリストア動作におけるステップＳ１３０も第１実施形態の不揮発性フリップフロップ回路１６におけるリストア動作のステップＳ１３０と同様の動作であるため説明を省略する。
【０１４２】
一方本実施形態では、ステップＳ１３０の次のステップＳ１３３で制御回路１２は、制御信号ＳＲ１の論理値を「１」に、制御信号ＳＲ２、ＳＲ３の論理値を「０」にする。さらに、ＬＰＧ信号の論理値を「１」から「０」に切り替え、再び「１」に切り替える。これにより、ＴＲ２１のコンダクタンスの差、及びＭＴＪ素子ＭＴＪ１とＭＴＪ素子ＭＴＪ２との抵抗差で、ノードＮ１１及びノードＮ１２の電位が決定し、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータがバルーン部３２に読み出される。
【０１４３】
以上説明したように、本実施形態の不揮発性フリップフロップ回路１６は、スレーブラッチ３０と、バルーン部３２と、を備える。バルーン部３２は、自装置に対するグランド電圧が切り替えられる場合に、グランド電圧がＶＧＮＤ電圧に切り替えられる場合に、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータとスレーブラッチ３０が保持するデータとが同一でない場合は、スレーブラッチ３０が保持するデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込ませる制御を行う。また、バルーン部３２は。ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータとスレーブラッチ３０に保持されているデータとが同一の場合は、スレーブラッチ３０が保持するデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込ませない制御を行う。さらに、バルーン部３２は、スレーブラッチ３０が保持するデータをＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込む場合に、正しく書き込まれたか否かを表す出力信号ＣＭＰ＿ＯＵＴをＸＯＲ回路ＸＯＲ１から出力させる機能を有する。すなわち、本実施形態の不揮発性フリップフロップ回路１６のバルーン部３２は、自身が本開示の技術の確認部としての機能を有する。
【０１４４】
このように、本実施形態の不揮発性フリップフロップ回路１６も、第１実施形態の不揮発性フリップフロップ回路１６と同様の効果が得られる。
【０１４５】
すなわち、本実施形態の不揮発性フリップフロップ回路１６によれば、トランジスタのサイズを大きくする等せずとも、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれたデータが正しいか確認することができ、その結果、正しくデータを書き込むことができる。従って、本実施形態の不揮発性フリップフロップ回路１６によれば、消費電力を抑制することができる。
【０１４６】
また、本実施形態の不揮発性フリップフロップ回路１６によれば、確認結果に応じて、正しいデータを再びＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込む際の消費電力を抑制することができる。
【０１４７】
［第３実施形態］
本実施形態は、バルーン部３２の構成及び動作の一部が第２実施形態のバルーン部３２（図５参照）と異なるため、異なる構成及び動作について説明する。
【０１４８】
図８には、本実施形態の不揮発性フリップフロップ回路１６の一例の回路図を示す。
【０１４９】
本実施形態の不揮発性フリップフロップ回路１６のバルーン部３２は、第２実施形態のバルーン部３２が備えていたＮＡＮＤ回路ＮＡＮＤ２１に代わり、インバータＩＶ２０を備えている点で異なっている。
【０１５０】
インバータＩＶ２０の入力はノードＮ１２に接続され、出力はノードＮ１１に接続されている。また、インバータＩＶ２０の電源には、ＮＭＯＳトランジスタＴＲ２２が接続されている。
【０１５１】
本実施形態の不揮発性フリップフロップ回路１６の動作は、第２実施形態の不揮発性フリップフロップ回路１６の動作（図６及び図７参照）と初期化動作におけるステップＳ１００の動作の一部が異なる他は同様の動作であるため、異なる動作のみ説明する。
【０１５２】
第２実施形態の初期化動作のステップＳ１００では、スレーブラッチ３０及びバルーン部３２を初期化していた。これに対して、本実施形態の不揮発性フリップフロップ回路１６における初期化動作では、スレーブラッチ３０のみ初期化する点で異なっている。
【０１５３】
このようにスレーブラッチ３０のみ初期化しても、以降の動作を第２実施形態と同様に行うことにより、本実施形態の不揮発性フリップフロップ回路１６においても、第２実施形態の不揮発性フリップフロップ回路１６と同様の効果が得られることは言うまでもない。
【０１５４】
なお、上記第２実施形態及び第３実施形態の不揮発性フリップフロップ回路１６では、上述したように、スレーブラッチ３０の構を、従来の不揮発性フリップフロップ回路におけるスレーブラッチの構成と同様とすることができる。
【０１５５】
そのためクロック信号が変化してから、インバータＩＶ９の出力信号Ｑが変化するまでの遅延時間が従来の不揮発性フリップフロップ回路に対して増大しないため、第１実施形態の不揮発性フリップフロップ回路１６に比べて高速化が図れるという効果が得られる。
【０１５６】
［第４実施形態］
本実施形態は、バルーン部３２の構成及び動作の一部が第２実施形態のバルーン部３２（図５参照）と異なるため、異なる構成及び動作について説明する。
【０１５７】
図９には、本実施形態の不揮発性フリップフロップ回路１６の一例の回路図を示す。
【０１５８】
本実施形態の不揮発性フリップフロップ回路１６のバルーン部３２は、ＡＮＤ回路ＡＮＤ１を備えている点で、第２実施形態のバルーン部３２（図５参照）と異なっている。本実施形態のＡＮＤ回路ＡＮＤ１が、本開示の制御素子の一例である。ＡＮＤ回路ＡＮＤ１には、ＸＯＲ回路ＸＯＲ１の出力である出力信号ＣＭＰ＿ＯＵＴと、制御信号ＳＲ２とが入力される。
【０１５９】
さらに、本実施形態の不揮発性フリップフロップ回路１６は、ＮＭＯＳトランジスタＴＲ３及びＴＲ４の制御端子は互いに接続されており、また、ＡＮＤ回路ＡＮＤ１の出力が接続されている点で、第２実施形態の不揮発性フリップフロップ回路１６と異なっている。
【０１６０】
従って、本実施形態の不揮発性フリップフロップ回路１６では、出力信号ＣＭＰ＿ＯＵＴの論理値が「１」の場合、制御信号ＳＲ２の論理値が「１」ならばＡＮＤ回路ＡＮＤ１の出力が「１」となり、ＮＭＯＳトランジスタＴＲ３、ＴＲ４がオン状態となり、スレーブラッチ３０の値が、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれる。一方、制御信号ＳＲ２の論理値が「０」ならばＡＮＤ回路ＡＮＤ１の出力が「０」となり、ＮＭＯＳトランジスタＴＲ３、ＴＲ４がオフ状態となり、スレーブラッチ３０の値は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれない。
【０１６１】
上述したように、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれているデータと、バルーン部３２に記憶されているデータとが一致する場合、出力信号ＣＭＰ＿ＯＵＴの論理値は「０」になり、一致しない場合、出力信号ＣＭＰ＿ＯＵＴの論理値は「１」になる。
【０１６２】
従って、ＡＮＤ回路ＡＮＤ１によれば、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれているデータと、バルーン部３２に記憶されているデータとが一致しない場合のみ、スレーブラッチ３０の値が、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれる。
【０１６３】
次に、本実施形態の不揮発性フリップフロップ回路１６の動作について説明する。図１０には、本実施形態の半導体集積回路１０の制御による不揮発性フリップフロップ回路１６の動作の流れの一例を表すフローチャートを示す。なお、第２実施形態の不揮発性フリップフロップ回路１６の動作と同様の動作については、同様のステップ番号を付与し、詳細な説明を省略する。なお、ステップＳ１２８以降のスリープ及びリストアの各動作は、第２実施形態と同様であるため、フローチャートの記載及び説明ともに省略する。
【０１６４】
本実施形態の不揮発性フリップフロップ回路１６の動作も、初期化、アクティブ、ストア、ベリファイ、リトライ、スリープ、及びリストアの７つの動作モードを有するが、図１０に示すように、初期化モードが、リセットモードとＭＴＪ初期化モードに分かれる点で、第２実施形態との第２実施形態の不揮発性フリップフロップ回路１６の動作（図６及び図７参照）と異なっている。
【０１６５】
本実施形態の不揮発性フリップフロップ回路１６では、リセットモードのステップＳ１０１で、スレーブラッチ３０をリセットするために制御回路１２により制御信号ＲＢの論理値が「０」になると、バルーン部３２もリセットされ、ノードＮ１２の論理値が「０」にＮＡＮＤ回路ＮＡＮＤ１の出力の論理値が「１」になる。これにより、ＸＯＲ回路ＸＯＲ１には、論理値が「０」の信号と論理値が「１」の信号とが入力されるため、出力信号ＣＭＰ＿ＯＵＴの論理値が「１」となる。そのため、上述したようにＮＭＯＳトランジスタＴＲ３、ＴＲ４がオン状態になり、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２もリセットされる。
【０１６６】
初期化モードでは、続いてステップＳ１０３〜Ｓ１０８の動作を行うことにより、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２の初期化を行う。
【０１６７】
また、図１０に示すように、本実施形態ではストアモードにおいて、ステップＳ１１２及びステップＳ１１４の動作に替わり、ステップＳ１１１の動作を含む点で第２実施形態の不揮発性フリップフロップ回路１６の動作と異なっている。
【０１６８】
ステップＳ１１１で制御回路１２は、制御信号ＳＲ３の論理値を「１」にした後、ステップＳ１１１に移行する。制御信号ＳＲ３の論理値を「１」にすることにより、トランジスタＴＲ２０、ＴＲ２１がオン状態となり、上記ステップＳ１０１でリセット状態となったバルーン部３２にＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータが読み出される。
【０１６９】
本実施形態では、第２実施形態の不揮発性フリップフロップ回路１６で行われていた、ステップＳ１１２及びステップＳ１１４の動作が行われないが、上述したように出力信号ＣＭＰ＿ＯＵＴの論理値が「１」の場合、すなわちＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれているデータと、バルーン部３２に記憶されているデータとが一致しない場合のみ、ステップＳ１１６でスレーブラッチ３０に保持されているデータがＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれることになる。
【０１７０】
このように、本実施形態の不揮発性フリップフロップ回路１６によれば、ＡＮＤ回路ＡＮＤ１を設けたことにより、制御回路１２等の不揮発性フリップフロップ回路１６の外部装置からの指示を要せずに、バルーン部３２に保持されているデータとＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれているデータとが一致しない場合のみ、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２にデータを書き込むようにすることができる。
【０１７１】
なお、本実施形態では、ＭＴＪ初期化モードの前にリセットモードの動作を行う形態について説明したが、リセットモードの動作を行うタイミングは本実施形態に限定されず、スレーブラッチ３０のリセットを行いたい任意のタイミングとすることができる。例えば、初期化モードにおいて、リセットモードをＭＴＪ初期化モードの後に行うようしてもよい。
【０１７２】
［第５実施形態］
本実施形態の不揮発性フリップフロップ回路１６は、第２実施形態の不揮発性フリップフロップ回路１６（図５参照）とＮＭＯＳトランジスタＴＲ２０、ＴＲ２１の構成が異なるため、本実施形態のＮＭＯＳトランジスタＴＲ２０、ＴＲ２１の構成及び動作について説明する。なお、不揮発性フリップフロップ回路１６の回路図は図５と同様となるため、図５を参照して説明する。
【０１７３】
また、本実施形態の不揮発性フリップフロップ回路１６の動作全体の流れも、第２実施形態の不揮発性フリップフロップ回路１６の動作全体の流れ（図６及び図７参照）と同様であるため、図６に示したフローチャートを参照して説明する。
【０１７４】
本実施形態のＮＭＯＳトランジスタＴＲ２０、ＴＲ２１の各々が、本開示の第１のトランジスタ及び第２のトランジスタの一例である。
【０１７５】
本実施形態のＮＭＯＳトランジスタＴＲ２０、ＴＲ２１は、同様の構造であるが、サイズが異なるトランジスタである。一例として、本実施形態では、ＮＭＯＳトランジスタＴＲ２０の方がＮＭＯＳトランジスタＴＲ２１よりもサイズが大きいトランジスタを用いている。
【０１７６】
図６に示した不揮発性フリップフロップ回路１６の動作におけるステップＳ１０７のように、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に書き込まれているデータをバルーン部３２に読み出す場合の動作について説明する。
【０１７７】
本実施形態の不揮発性フリップフロップ回路１６と異なる不揮発性フリップフロップ回路では、一般的に、ＭＴＪ素子ＭＴＪ１の抵抗値と、ＭＴＪ素子ＭＴＪ２の抵抗値とが異なっている場合、バルーン部３２には、抵抗値の差に応じた論理値のデータが読み出される。すなわち、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータの状態が、「１，０」または「０，１」の場合、バルーン部３２には、各状態に対応する論理値のデータが読み出される。
【０１７８】
一般的に、ＭＴＪ素子の製造ばらつきや、動作時の電源電圧の変動が生じた場合等において、一対のＭＴＪ素子に記憶されるデータの状態が同一になる、すなわち、記憶されるデータが共に「０」となる場合や、共に「１」となる場合がある。このような場合、上記不揮発性フリップフロップ回路では、ＭＴＪ素子ＭＴＪ１の抵抗値と、ＭＴＪ素子ＭＴＪ２の抵抗値とが同一であるため、動作不良となる場合がある。
【０１７９】
これに対して本実施形態の不揮発性フリップフロップ回路１６では、ＭＴＪ素子ＭＴＪ１の抵抗値と、ＭＴＪ素子ＭＴＪ２の抵抗値とが同じ場合、バルーン部３２には、ＮＭＯＳトランジスタＴＲ２０のコンダクタンスと、ＮＭＯＳトランジスタＴＲ２１のコンダクタンスとの差に応じた論理値のデータが読み出されることになる。すなわち、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されているデータの状態が、「０，０」または「１，１」の場合、本実施形態では、ＮＭＯＳトランジスタＴＲ２０の方がＮＭＯＳトランジスタＴＲ２１よりもコンダクタンスが大きいため、ノードＮ１１の電位が「１」になり、ノードＮ１２の電位が「０」になる。従って、バルーン部３２には、論理値が「１」のデータが読み出された状態となる。
【０１８０】
なお、ＮＭＯＳトランジスタＴＲ２０のコンダクタンスと、ＮＭＯＳトランジスタＴＲ２１のコンダクタンスとの差は、トランジスタのサイズの差に対応する。ＮＭＯＳトランジスタＴＲ２０、ＴＲ２１のサイズの差は、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２の抵抗値やトランジスタの製造ばらつきも考慮したシミュレーション結果によれば、一方のトランジスタのサイズが他方のトランジスタのサイズよりも１．５倍以上、２倍以下であることが好ましい。
【０１８１】
このように、本実施形態の不揮発性フリップフロップ回路１６では、ＮＭＯＳトランジスタＴＲ２０のコンダクタンスと、ＮＭＯＳトランジスタＴＲ２１のコンダクタンスとを異ならせたため、ＭＴＪ素子ＭＴＪ１、ＭＴＪ２に記憶されるデータが共に「０」となる場合、及び共に「１」となる場合であっても、ＮＭＯＳトランジスタＴＲ２０のコンダクタンスと、ＮＭＯＳトランジスタＴＲ２１のコンダクタンスとの差に応じて、ノードＮ１１及びノードＮ１２の電位が決定し、ＭＴＪ素子ＭＴＪ１及びＭＴＪ２に記憶されているデータが、バルーン部３２に読み出される。従って、本実施形態の不揮発性フリップフロップ回路１６によれば、動作不良となる確率を低下することができる。
【０１８２】
なお、上記各実施形態では半導体集積回路１０が１つの不揮発性フリップフロップ回路１６を備えた場合について説明したが、不揮発性フリップフロップ回路１６の数は限定されるものではない。不揮発性フリップフロップ回路１６は、１ビットのデータを記憶するものであるため、半導体集積回路１０は、記憶させるデータのビット数に応じた数の不揮発性フリップフロップ回路１６を備えればよい。
【０１８３】
また、上記各実施形態では、不揮発性記憶部の一例としてＭＴＪ素子ＭＴＪ１、ＭＴＪ２を用いた場合について説明したがこれに限らない。パワースイッチ１４によりグランド電圧の供給の遮断（ＶＧＮＤ電圧に切り替わった）後も、記憶しているデータが消えない（不揮発性）記憶部であれば特に限定されない。
【０１８４】
また、変更されたパルス幅とオン時間は、一定期間（一定時間、一定書込回数等）有効とするようにしてもよいし、書込が完了した際に毎度リセットするようにしてもよい。
【０１８５】
また、上記各実施形態で説明した半導体集積回路１０、不揮発性フリップフロップ回路１６等の構成及び動作等は一例であり、本発明の主旨を逸脱しない範囲内において状況に応じて変更可能であることは言うまでもない。
【０１８６】
例えば、スレーブラッチ３０は、ＮＭＯＳトランジスタＴＲ９を備えていなくてもよい。
【符号の説明】
【０１８７】
１０  半導体集積回路
１２  制御回路
１４  パワースイッチ
１６  不揮発性フリップフロップ回路
３０  スレーブラッチ
３２  バルーン部
３４  マスターラッチ
ＩＶ１〜ＩＶ１３、ＵＶ２０  インバータ
ＭＴＪ１、ＭＴＪ２  ＭＴＪ素子
Ｎ１、Ｎ２、Ｎ１１、Ｎ１２  ノード
ＮＡＮＤ１、ＮＡＮＤ２０、ＮＡＮＤ２１  ＮＡＮＤ回路
ＮＯＲ１  ＮＯＲ回路
ＴＧ１〜ＴＧ６  トランスファーゲート
ＴＲ１、ＴＲ２、ＴＲ７  ＰＭＯＳトランジスタ
ＴＲ３〜ＴＲ６、ＴＲ８〜ＴＲ１１  ＮＭＯＳトランジスタ
ＴＲ２０、ＴＲ２１  ＰＭＯＳトランジスタ
ＸＯＲ１  ＸＯＲ回路
【図１】
2018101456.tif 000003
【図２】
2018101456.tif 000004
【図３】
2018101456.tif 000005
【図４】
2018101456.tif 000006
【図５】
2018101456.tif 000007
【図６】
2018101456.tif 000008
【図７】
2018101456.tif 000009
【図８】
2018101456.tif 000010
【図９】
2018101456.tif 000011
【図１０】
2018101456.tif 000012