(57)【要約】【課題】消費電力を低減することができる半導体回路を得る。【解決手段】本開示の半導体回路は、揮発性の第１の記憶部と、第１の制御信号に基づいて、第１の記憶部に記憶されたデータを記憶する揮発性の第２の記憶部と、第２の制御信号に基づいて、第２の記憶部に記憶されたデータに応じたデータを記憶するとともに、第３の制御信号に基づいて、自らに記憶されたデータを第１の記憶部に記憶させる、不揮発性の第３の記憶部と、第１の制御信号および第３の制御信号を生成するとともに、第１の記憶部に記憶されたデータと第２の記憶部に記憶されたデータとを比較し、その比較結果に基づいて第２の制御信号を生成する制御部とを備える。【選択図】図２
2019071577.tif 000002
【特許請求の範囲】
【請求項１】
揮発性の第１の記憶部と、
第１の制御信号に基づいて、前記第１の記憶部に記憶されたデータを記憶する揮発性の第２の記憶部と、
第２の制御信号に基づいて、前記第２の記憶部に記憶されたデータに応じたデータを記憶するとともに、第３の制御信号に基づいて、自らに記憶されたデータを前記第１の記憶部に記憶させる、不揮発性の第３の記憶部と、
前記第１の制御信号および前記第３の制御信号を生成するとともに、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとを比較し、その比較結果に基づいて前記第２の制御信号を生成する制御部と
を備えた半導体回路。
【請求項２】
前記制御部は、
第１の期間において、前記第３の制御信号を用いて、前記第３の記憶部に記憶されたデータを前記第１の記憶部に記憶させるとともに、前記第１の制御信号を用いて、前記第１の記憶部に記憶されたデータを前記第２の記憶部に記憶させ、
前記第１の期間の後の第２の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが相違していることを示す場合に、前記第２の制御信号を用いて、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
請求項１に記載の半導体回路。
【請求項３】
前記制御部は、
前記第２の期間の後の第３の期間において、前記第３の制御信号を用いて、前記第３の記憶部に記憶されたデータを前記第１の記憶部に記憶させ、
前記第３の期間の後の第４の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが一致していることを示す場合に、前記第２の制御信号を用いて、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
請求項２に記載の半導体回路。
【請求項４】
前記制御部は、前記第４の期間において、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる際の動作条件を、前記第２の期間において、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる際の動作条件と異なる条件に設定する
請求項３に記載の半導体回路。
【請求項５】
前記第３の記憶部は、駆動信号が印加される不揮発性の記憶素子を有し、
前記第２の制御信号は、前記駆動信号を含み、
前記制御部は、前記第２の期間において前記駆動信号の振幅を第１の電圧に設定し、前記第４の期間における前記駆動信号の振幅を第２の電圧に設定する
請求項４に記載の半導体回路。
【請求項６】
前記第２の電圧は、前記第１の電圧よりも大きい
請求項５に記載の半導体回路。
【請求項７】
前記第３の記憶部は、駆動信号が印加される不揮発性の記憶素子を有し、
前記第２の制御信号は、前記駆動信号を含み、
前記制御部は、前記第２の期間において前記駆動信号のパルス幅を第１のパルス幅に設定し、前記第４の期間における前記駆動信号のパルス幅を第２のパルス幅に設定する
請求項４に記載の半導体回路。
【請求項８】
前記第２のパルス幅は、前記第１のパルス幅よりも広い
請求項７に記載の半導体回路。
【請求項９】
前記制御部は、前記第４の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが相違していることを示す場合に、前記第１の記憶部および前記第２の記憶部への電源供給を停止するように電源制御を行う
請求項３に記載の半導体回路。
【請求項１０】
前記制御部は、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが相違していることを示すまで、前記第３の期間における動作と、前記第４の期間における動作とを繰り返す
請求項３に記載の半導体回路。
【請求項１１】
第１の回路および第２の回路をさらに備え、
前記第１の期間と前記第２の期間との間の第５の期間において、
前記第１の記憶部は、前記第１の回路から供給されたデータを記憶するとともに、記憶されたデータを前記第２の回路に供給する
請求項２に記載の半導体回路。
【請求項１２】
揮発性の第１の記憶部に記憶されたデータと、第１の制御信号に基づいて前記第１の記憶部に記憶されたデータを記憶する揮発性の第２の記憶部に記憶されたデータとを比較し、
前記第１の記憶部に記憶されたデータと、前記第２の記憶部に記憶されたデータとの比較結果に基づいて、第２の制御信号を不揮発性の第３の記憶部に供給することにより、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
半導体回路の制御方法。
【請求項１３】
第１の期間において、第３の制御信号を前記第３の記憶部に供給することにより、前記第３の記憶部に記憶されたデータを前記第１の記憶部に記憶させるとともに、前記第１の制御信号を用いて、前記第１の記憶部に記憶されたデータを前記第２の記憶部に記憶させ、
前記第１の期間の後の第２の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが相違していることを示す場合に、前記第２の制御信号を用いて、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
請求項１２に記載の半導体回路の制御方法。
【請求項１４】
前記第２の期間の後の第３の期間において、前記第３の制御信号を用いて、前記第３の記憶部に記憶されたデータを前記第１の記憶部に記憶させ、
前記第３の期間の後の第４の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが一致していることを示す場合に、前記第２の制御信号を用いて、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
請求項１３に記載の半導体回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、不揮発性の記憶素子を有する半導体回路、およびそのような半導体回路の制御方法に関する。
【背景技術】
【０００２】
電子機器は、エコロジーの観点から消費電力が低いことが望まれている。半導体回路では、例えば、一部の回路への電源供給を選択的に停止することにより消費電力の低減を図る、いわゆるパワーゲーティングという技術がしばしば用いられる。このように電源供給が停止された回路では、電源供給が再開された後に、すぐに、電源供給が停止される前の動作状態に復帰することが望まれる。そのような短時間での復帰動作を実現する方法の一つに、回路に不揮発性の記憶素子を内蔵する方法がある（例えば特許文献１など）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１１／０２７３９２５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このように、電子機器では、消費電力の低減が望まれており、半導体回路においても、さらなる消費電力の低減が期待されている。
【０００５】
消費電力を低減することができる半導体回路および半導体回路の制御方法を提供することが望ましい。
【課題を解決するための手段】
【０００６】
本開示の一実施の形態における半導体回路は、第１の記憶部と、第２の記憶部と、第３の記憶部と、制御部とを備えている。第１の記憶部は、揮発性のものである。第２の記憶部は、第１の制御信号に基づいて、第１の記憶部に記憶されたデータを記憶する揮発性のものである。第３の記憶部は、第２の制御信号に基づいて、第２の記憶部に記憶されたデータに応じたデータを記憶するとともに、第３の制御信号に基づいて、自らに記憶されたデータを第１の記憶部に記憶させる、不揮発性のものである。制御部は、第１の制御信号および第３の制御信号を生成するとともに、第１の記憶部に記憶されたデータと第２の記憶部に記憶されたデータとを比較し、その比較結果に基づいて第２の制御信号を生成するものである。
【０００７】
本開示の一実施の形態における半導体回路の制御方法は、揮発性の第１の記憶部に記憶されたデータと、第１の制御信号に基づいて第１の記憶部に記憶されたデータを記憶する揮発性の第２の記憶部に記憶されたデータとを比較し、第１の記憶部に記憶されたデータと、第２の記憶部に記憶されたデータとの比較結果に基づいて、第２の制御信号を不揮発性の第３の記憶部に供給することにより、第２の記憶部に記憶されたデータに応じたデータを第３の記憶部に記憶させるものである。
【０００８】
本開示の一実施の形態における半導体回路および半導体回路の制御方法では、揮発性の第１の記憶部にデータが記憶される。また、第１の制御信号に基づいて、揮発性の第２の記憶部に、第１の記憶部に記憶されたデータが記憶され、第２の制御信号に基づいて、不揮発性の第３の記憶部に、第２の記憶部に記憶されたデータに応じたデータが記憶される。第２の制御信号は、第１の記憶部に記憶されたデータと第２の記憶部に記憶されたデータとの比較結果に基づいて生成される。
【発明の効果】
【０００９】
本開示の一実施の形態における半導体回路および半導体回路の制御方法によれば、第１の記憶部に記憶されたデータと第２の記憶部に記憶されたデータとを比較し、その比較結果に基づいて第２の制御信号を生成したので、消費電力を低減することができる。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれの効果があってもよい。
【図面の簡単な説明】
【００１０】
【図１】本開示の一実施の形態に係る半導体回路の一構成例を表すブロック図である。
【図２】図１に示したフリップフロップの一構成例を表す回路図である。
【図３】図２に示した排他的論理和回路の一動作例を表す真理値表である。
【図４】図２に示したモード制御回路の一構成例を表す回路図である。
【図５Ａ】図４に示したモード制御回路の一動作例を表す真理値表である。
【図５Ｂ】図４に示したモード制御回路の一動作例を表す他の真理値表である。
【図５Ｃ】図４に示したモード制御回路の一動作例を表す他の真理値表である。
【図６Ａ】図２に示したフリップフロップの一動作例を表す説明図である。
【図６Ｂ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図６Ｃ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図６Ｄ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図６Ｅ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図６Ｆ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図６Ｇ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図６Ｈ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図６Ｉ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図６Ｊ】図２に示したフリップフロップの一動作例を表す他の説明図である。
【図７Ａ】図１に示した半導体回路の一動作例を表す波形図である。
【図７Ｂ】図１に示した半導体回路の他の動作例を表す波形図である。
【図８Ａ】図１に示した半導体回路の他の動作例を表す波形図である。
【図８Ｂ】図１に示した半導体回路の他の動作例を表す波形図である。
【図９】図１に示した半導体回路の他の動作例を表す波形図である。
【図１０Ａ】図１に示した半導体回路の一動作例を表すフローチャートである。
【図１０Ｂ】図１に示した半導体回路の一動作例を表す他のフローチャートである。
【図１１】変形例に係る半導体回路の一構成例を表すブロック図である。
【図１２】図１１に示したフリップフロップの一構成例を表す回路図である。
【図１３】図１２に示したモード制御回路の一構成例を表す回路図である。
【図１４】他の変形例に係るフリップフロップの一構成例を表す回路図である。
【図１５】実施の形態を適用したスマートフォンの外観構成を表す斜視図である。
【発明を実施するための形態】
【００１１】
以下、本開示の実施の形態について、図面を参照して詳細に説明する。なお、説明は以下の順序で行う。
１．実施の形態
２．適用例
【００１２】
＜１．実施の形態＞
［構成例］
図１は、一実施の形態に係る半導体回路（半導体回路１）の一構成例を表すものである。半導体回路１は、不揮発性の記憶素子を有し、電源供給が再開された後に、電源供給が停止される前の動作状態に復帰することができるように構成されたものである。なお、本開示の実施の形態に係る半導体回路の駆動方法は、本実施の形態により具現化されるので、併せて説明する。半導体回路１は、回路１０と、電源トランジスタ８と、ＣＰＵ（Central Processing Unit）７と、制御部９とを備えている。なお、これに限定されるものではなく、例えば、回路１０が制御部９の一部の回路を含むようにしてもよい。
【００１３】
回路１０は、所定の動作を行う回路である。この回路１０の電源端子Ｔ１には電源電圧ＶＤＤが供給され、接地端子Ｔ２は、電源トランジスタ８を介して接地されている。これにより、回路１０内の各回路の接地端子には、電源トランジスタ８がオン状態であるときに接地電圧ＶＧＮＤが供給されるようになっている。回路１０は、複数のフリップフロップ（Ｆ／Ｆ）２０と、判定回路１１とを有している。
【００１４】
フリップフロップ２０は、アクティブモードＭ１において、クロック信号ＣＬＫの立ち上がりエッジに基づいて、データ入力端子Ｄに入力された信号をサンプリングして、そのサンプリング結果をデータ出力端子Ｑから出力するものである。このフリップフロップ２０は、後述するように、不揮発性の記憶素子６７，６８を含む記憶回路６０（後述）を有し、電源供給を停止している間、フリップフロップ２０の動作状態をこの記憶回路６０に記憶させる（スリープモードＭ２）。これにより、フリップフロップ２０は、電源供給が再開した後に、すぐに、電源供給が停止される前の動作状態に復帰することができるようになっている。
【００１５】
動作モードをアクティブモードＭ１からスリープモードＭ２に移行させる場合には、フリップフロップ２０は、制御部９から供給された、複数の信号を含む制御信号ＳＩＧに基づいて、フリップフロップ２０のスレーブラッチ４０（後述）に記憶された情報を記憶回路６０（後述）に書き込む（ストアモードＭ３）。そして、フリップフロップ２０は、記憶回路６０に正常に情報を書き込むことができたかどうかを検証し（ベリファイモードＭ４）、記憶回路６０に正常に情報を書き込むことができなかった場合には、正常に情報を書き込むことができるまで、書込条件を変えつつ、情報の書き込みを繰り返す（リトライモードＭ５）。一方、動作モードをスリープモードＭ２からアクティブモードＭ１に移行させる場合には、フリップフロップ２０は、記憶回路６０からスレーブラッチ４０に情報を読み出す（リストアモードＭ６）ようになっている。さらに、フリップフロップ２０は、スレーブラッチ４０およびバルーン回路５０（後述）をリセットする機能（リセットモードＭ７）、および、例えば工場出荷時などにおいて記憶回路６０を初期化する機能（イニシャライズモードＭ８）をも有している。このように、フリップフロップ２０は、８つの動作モード（アクティブモードＭ１、スリープモードＭ２、ストアモードＭ３、ベリファイモードＭ４、リトライモードＭ５、リストアモードＭ６、リセットモードＭ７、およびイニシャライズモードＭ８）で動作を行うようになっている。また、フリップフロップ２０は、詳細は後述するが、スレーブラッチ４０に記憶された情報とバルーン回路５０に記憶された情報とを比較し、その比較結果を信号ＣＭＰ＿ＯＵＴとして出力する機能をも有している。
【００１６】
判定回路１１は、ベリファイモードＭ４において、複数のフリップフロップ２０から供給された信号ＣＭＰ＿ＯＵＴに基づいて、全てのフリップフロップ２０において、スレーブラッチ４０（後述）に記憶された情報を記憶回路６０に正常に書き込むことができたかどうかを判定するものである。そして、判定回路１１は、その判定結果をＣＰＵ７に供給するようになっている。
【００１７】
電源トランジスタ８は、電源制御信号ＳＰＧに基づいてオンオフするものである。この例では、電源トランジスタ８は、Ｎ型のＭＯＳ（Metal Oxide Semiconductor）トランジスタである。電源トランジスタ８のゲートには電源制御信号ＳＰＧが供給され、ドレインは回路１０の接地端子Ｔ２に接続され、ソースには接地電圧ＶＧＮＤが供給されている。半導体回路１では、回路１０を動作させる場合には、電源トランジスタ８をオン状態にし、回路１０を動作させない場合には、電源トランジスタ８をオフ状態にする。これにより、半導体回路１では、消費電力を低減することができるようになっている。
【００１８】
ＣＰＵ７は、半導体回路１の動作を制御するものである。また、ＣＰＵ７は、電源トランジスタ８に電源制御信号ＳＰＧを供給して電源トランジスタ８をオンオフすることにより、いわゆるパワーゲーティングを行う機能をも有している。
【００１９】
このパワーゲーティングにおいて、ＣＰＵ７は、制御部９に制御信号を供給することにより、半導体回路１の動作モードを指示する。具体的には、ＣＰＵ７は、動作モードをアクティブモードＭ１からスリープモードＭ２に移行させる場合には、まず、半導体回路１がストアモードＭ３で動作すべき旨を指示し、次に、半導体回路１がベリファイモードＭ４で動作すべき旨を指示する。判定回路１１は、ベリファイモードＭ４において、複数のフリップフロップ２０から供給された信号ＣＭＰ＿ＯＵＴに基づいて、全てのフリップフロップ２０において、スレーブラッチ４０（後述）に記憶された情報を記憶回路６０に正常に書き込むことができたかどうかを判定する。ＣＰＵ７は、判定回路１１における判定結果に基づいて、複数のフリップフロップ２０のうちの一部のフリップフロップ２０が、記憶回路６０に情報を正常に書き込むことができなかったことを把握した場合には、半導体回路１がリトライモードＭ５で動作すべき旨を指示する。これにより、記憶回路６０に情報を正常に書き込むことができなかったフリップフロップ２０は、書込条件を変えつつ、記憶回路６０への情報の書き込みを繰り返す。そして、全てのフリップフロップ２０が記憶回路６０に情報を正常に書き込んだ場合には、ＣＰＵ７は、電源トランジスタ８をオフ状態にする。一方、ＣＰＵ７は、動作モードをスリープモードＭ２からアクティブモードＭ１に移行させる場合には、まず、半導体回路１がリストアモードＭ６で動作すべき旨を指示し、その次に、電源トランジスタ８をオン状態にするようになっている。
【００２０】
なお、以上に示した例では、動作モードをアクティブモードＭ１からスリープモードＭ２に移行させる場合に、半導体回路１をストアモードＭ３で動作させるようにしたが、これに限定されるものではなく、例えば、ストアモードＭ３を経ずに、アクティブモードＭ１からスリープモードＭ２に直接移行することができるようにしてもよい。すなわち、半導体回路１では、これらの動作モードを自由に組み合わせることにより、様々な動作を行うことができるようになっている。
【００２１】
制御部９は、ＣＰＵ７から指示された動作モードに基づいて、回路１０の各フリップフロップ２０に対して制御信号ＳＩＧを供給するものである。制御信号ＳＩＧは、８つの信号ＳＴＯＲＥ，ＲＥＳＴＯＲＥ，ＩＮＩＴＩＡＬＩＺＥ，ＲＥＳＥＴ，ＶＥＲＩＦＹ，ＥＱＬ，ＳＡＶＥ，ＣＴＲＬを含んでいる。
【００２２】
図２は、フリップフロップ２０の一構成例を表すものである。フリップフロップ２０は、インバータ２１，２２と、マスタラッチ３０と、スレーブラッチ４０と、バルーン回路５０と、記憶回路６０と、排他的論理和（ＥＸ−ＯＲ）回路２３と、モード制御回路７０とを有している。また、フリップフロップ２０は、図示しないが、制御部９から供給された信号ＲＥＳＥＴ，ＥＱＬ，ＳＡＶＥに基づいて、これらの信号の反転信号である信号ＲＥＳＥＴＢ，ＥＱＬＢ，ＳＡＶＥＢをそれぞれ生成する回路をも有している。
【００２３】
インバータ２１は、クロック信号ＣＬＫを反転することによりクロック信号ＣＢを生成するものである。インバータ２２は、クロック信号ＣＢを反転することによりクロック信号Ｃを生成するものである。
【００２４】
（マスタラッチ３０）
マスタラッチ３０は、インバータ３１と、トランスミッションゲート３２と、インバータ３３，３４と、トランスミッションゲート３５とを有している。
【００２５】
インバータ３１の入力端子はフリップフロップ２０のデータ入力端子Ｄに接続され、出力端子はトランスミッションゲート３２の一端に接続されている。トランスミッションゲート３２の一端はインバータ３１の出力端子に接続され、他端はノードＮ３１に接続されている。このトランスミッションゲート３２は、クロック信号Ｃが“０”（低レベル）であるときに一端と他端との間をオン状態にし、クロック信号Ｃが“１”（高レベル）であるときに一端と他端との間をオフ状態にするものである。
【００２６】
インバータ３３の入力端子はノードＮ３１に接続され、出力端子はノードＮ３２に接続されている。
【００２７】
インバータ３４の入力端子はノードＮ３２に接続され、出力端子はトランスミッションゲート３５の一端に接続されている。トランスミッションゲート３５の一端はインバータ３４の出力端子に接続され、他端はノードＮ３１に接続されている。このトランスミッションゲート３５は、クロック信号Ｃが“１”であるときに一端と他端との間をオン状態にし、クロック信号Ｃが“０”であるときに一端と他端との間をオフ状態にするものである。
【００２８】
（スレーブラッチ４０）
スレーブラッチ４０は、トランスミッションゲート４１と、反転論理積（ＮＡＮＤ）回路４２と、トランジスタ４３と、インバータ４４と、トランジスタ４５と、トランスミッションゲート４６と、トランジスタ４７と、トランジスタ４８と、インバータ４９とを有している。
【００２９】
トランスミッションゲート４１の一端はノードＮ３２に接続され、他端はノードＮ４１に接続されている。このトランスミッションゲート４１は、クロック信号Ｃが“１”であるときに一端と他端との間をオン状態にし、クロック信号Ｃが“０”であるときに一端と他端との間をオフ状態にするものである。ノードＮ４１における電圧は、以下、信号ＳＬＡＶＥとして参照する。
【００３０】
反転論理積回路４２の第１入力端子には信号ＲＥＳＥＴＢが供給され、第２入力端子はノードＮ４１に接続され、出力端子はノードＮ４２に接続され、接地端子はトランジスタ４３のドレインに接続されている。トランジスタ４３は、Ｎ型のＭＯＳトランジスタであり、ゲートには信号ＥＱＬＢが供給され、ドレインは反転論理積回路４２の接地端子に接続され、ソースは回路１０の接地端子Ｔ２に接続されている。この構成により、反転論理積回路４２は、信号ＥＱＬが“０”であるときに、第１入力端子における信号ＲＥＳＥＴＢおよび第２入力端子における信号ＳＬＡＶＥの反転論理積を出力し、信号ＥＱＬが“１”であるときに、出力インピーダンスをハイインピーダンス状態にするようになっている。ノードＮ４２における電圧は、以下、信号ＳＬＡＶＥＢとして参照する。
【００３１】
インバータ４４の入力端子はノードＮ４２に接続され、出力端子はトランスミッションゲート４６の一端に接続され、接地端子はトランジスタ４５のドレインに接続されている。トランジスタ４５は、Ｎ型のＭＯＳトランジスタであり、ゲートには信号ＥＱＬＢが供給され、ドレインはインバータ４４の接地端子に接続され、ソースは回路１０の接地端子Ｔ２に接続されている。この構成により、インバータ４４は、信号ＥＱＬが“０”であるときに、入力端子における信号ＳＬＡＶＥＢの反転信号を出力し、信号ＥＱＬが“１”であるときに、出力インピーダンスをハイインピーダンス状態にするようになっている。
【００３２】
トランスミッションゲート４６の一端はインバータ４４の出力端子に接続され、他端はノードＮ４１に接続されている。このトランスミッションゲート４６は、クロック信号Ｃが“０”であるときに一端と他端との間をオン状態にし、クロック信号Ｃが“１”であるときに一端と他端との間をオフ状態にするものである。トランジスタ４７は、Ｐ型のＭＯＳトランジスタであり、ゲートには信号ＲＥＳＴＯＲＥが供給され、ソースはインバータ４４の出力端子およびトランスミッションゲート４６の一端に接続され、他端はノードＮ４１に接続されている。
【００３３】
トランジスタ４８は、Ｎ型のＭＯＳトランジスタであり、ゲートには信号ＥＱＬが供給され、ソースはノードＮ４２に接続され、ドレインはノードＮ４１に接続されている。
【００３４】
インバータ４９の入力端子はノードＮ４２に接続され、出力端子はフリップフロップ２０のデータ出力端子Ｑに接続されている。
【００３５】
（バルーン回路５０）
バルーン回路５０は、トランスミッションゲート５１と、反転論理和（ＮＯＲ）回路５２と、インバータ５３と、トランスミッションゲート５４とを有している。
【００３６】
トランスミッションゲート５１の一端はノードＮ４１に接続され、他端はノードＮ５１に接続されている。このトランスミッションゲート５１は、信号ＳＡＶＥが“１”であるときに一端と他端との間をオン状態にし、信号ＳＡＶＥが“０”であるときに一端と他端との間をオフ状態にするものである。ノードＮ５１における電圧は、以下、信号ＢＡＬＯＯＮとして参照する。
【００３７】
反転論理和回路５２の第１入力端子には信号ＲＥＳＥＴが供給され、第２入力端子はノードＮ５１に接続され、出力端子はノードＮ５２に接続されている。ノードＮ５２における電圧は、以下、信号ＢＡＬＯＯＮＢとして参照する。
【００３８】
インバータ５３の入力端子はノードＮ５２に接続され、出力端子はトランスミッションゲート５４の一端に接続されている。トランスミッションゲート５４の一端はインバータ５３の出力端子に接続され、他端はノードＮ５１に接続されている。このトランスミッションゲート５４は、信号ＳＡＶＥが“０”であるときに一端と他端との間をオン状態にし、信号ＳＡＶＥが“１”であるときに一端と他端との間をオフ状態にするものである。
【００３９】
（記憶回路６０）
記憶回路６０は、インバータ６１，６２と、トランジスタ６３〜６６と、記憶素子６７，６８とを有している。
【００４０】
インバータ６１の入力端子はバルーン回路５０のノードＮ５１に接続され、出力端子はトランジスタ６３のドレインに接続されている。インバータ６２の入力端子はバルーン回路５０のノードＮ５２に接続され、出力端子はトランジスタ６４のドレインに接続されている。
【００４１】
トランジスタ６３，６４は、Ｎ型のＭＯＳトランジスタである。トランジスタ６３のゲートには信号ＳＲが供給され、ドレインはインバータ６１の出力端子に接続され、ソースはノードＮ６１に接続されている。トランジスタ６４のゲートには信号ＳＲが供給され、ドレインはインバータ６２の出力端子に接続され、ソースはノードＮ６２に接続されている。トランジスタ６３，６４は、後述するように、情報を記憶素子６７，６８に書き込む場合に、それぞれオン状態になるものである。
【００４２】
トランジスタ６５，６６は、Ｐ型のＭＯＳトランジスタである。トランジスタ６５のゲートには信号ＲＥＳＴＯＲＥが供給され、ソースはノードＮ４１に接続され、ドレインはノードＮ６１に接続されている。トランジスタ６６のゲートには信号ＲＥＳＴＯＲＥが供給され、ソースはノードＮ４２に接続され、ドレインはノードＮ６２に接続されている。トランジスタ６５，６６は、後述するように、情報を記憶素子６７，６８から読み出す場合に、それぞれオン状態になるものである。
【００４３】
記憶素子６７，６８は、不揮発性の記憶素子であり、この例では、スピン注入により、フリー層Ｆ（後述）の磁化の向きを変えることにより情報の記憶を行う、スピン注入磁化反転型（ＳＴＴ；Spin Transfer Torque）の磁気トンネル接合（ＭＴＪ；Magnetic Tunnel Junction）素子である。記憶素子６７の一端はノードＮ６１に接続され、他端には信号ＣＴＲＬが供給されている。記憶素子６８の一端はノードＮ６２に接続され、他端には信号ＣＴＲＬが供給されている。
【００４４】
以下、記憶素子６７を例に説明する。なお、記憶素子６８についても同様である。記憶素子６７は、フリー層Ｆと、トンネルバリア層Ｔと、ピンド層Ｐとを有している。フリー層Ｆは、磁化の方向が、流入するスピン偏極電流に応じて、例えば膜面垂直方向において変化する強磁性体により構成されるものである。ピンド層Ｐは、磁化の方向が、例えば膜面垂直方向に固定された強磁性体により構成されるものである。トンネルバリア層Ｔは、フリー層Ｆとピンド層Ｐとの間の磁気的結合を切るとともに、トンネル電流を流すように機能するものである。この例では、フリー層ＦはノードＮ６１に接続され、ピンド層Ｐには信号ＣＴＲＬが供給される。
【００４５】
この構成により、記憶素子６７では、例えば電流をフリー層Ｆからピンド層Ｐに流すと、記憶素子６７の両端間の抵抗値が低くなる（高抵抗状態ＲＨ）。この高抵抗状態ＲＨは、“１”（高レベル）に対応する状態である。反対に、例えば電流をピンド層Ｐからフリー層Ｆに流すと、記憶素子６７の両端間の抵抗値が低くなる（低抵抗状態ＲＬ）。この低抵抗状態ＲＬは、“０”（高レベル）に対応する状態である。
【００４６】
このように、記憶素子６７，６８では、電流を流す方向に応じて、抵抗状態が高抵抗状態ＲＨと低抵抗状態ＲＬとの間で変化する。記憶素子６７，６８は、このようにして抵抗状態を設定することにより、情報を記憶することができるようになっている。
【００４７】
（排他的論理和回路２３）
排他的論理和回路２３の第１入力端子はノードＮ５２に接続され、第２入力端子はノードＮ４２に接続される。そして、排他的論理和回路２３は、第１入力端子での信号ＢＡＬＯＯＮＢおよび第２入力端子での信号ＳＬＡＶＥＢの排他的論理和を、信号ＣＭＰ＿ＯＵＴとして出力するようになっている。この排他的論理和回路２３は、図３に示したように動作する。
【００４８】
（モード制御回路７０）
モード制御回路７０は、信号ＳＴＯＲＥ，ＩＮＩＴＩＡＬＩＺＥ，ＶＥＲＩＦＹ、および信号ＣＭＰ＿ＯＵＴに基づいて、信号ＳＲを生成するものである。
【００４９】
図４は、モード制御回路７０の一構成例を表すものである。この図４には、説明の便宜上、図２に示した排他的論理和回路２３をも描いている。モード制御回路７０は、排他的論理和回路７１と、論理和（ＯＲ）回路７２と、論理積回路７３とを有している。図５Ａは、モード制御回路７０の排他的論理和回路７１の真理値表を、その動作とともに表すものであり、図５Ｂは、論理和回路７２の真理値表を表すものであり、図５Ｃは、論理積回路７３の真理値表を、その動作とともに表すものである。
【００５０】
排他的論理和回路７１は、信号ＣＭＰ＿ＯＵＴと信号ＶＥＲＩＦＹとの排他的論理和を求め、その結果を信号ＣＭＰ＿ＯＵＴ＿Ｖとして出力するものである。論理和回路７２は、信号ＳＴＯＲＥと信号ＩＮＩＴＩＡＬＩＺＥとの論理和を求め、その結果を信号ＷＲＩＴＥとして出力するものである。論理積回路７３は、信号ＣＭＰ＿ＯＵＴ＿Ｖと信号ＷＲＩＴＥとの論理積を求め、その結果を信号ＳＲとして出力するものである。
【００５１】
ここで、スレーブラッチ４０は、本開示における「第１の記憶部」の一具体例に対応する。バルーン回路５０は、本開示における「第２の記憶部」の一具体例に対応する。記憶回路６０は、本開示における「第３の記憶部」の一具体例に対応する。排他的論理和回路２３、モード制御回路７０、判定回路１１、ＣＰＵ７、および制御部９は、本開示における「制御部」の一具体例に対応する。信号ＳＡＶＥは、本開示における「第１の制御信号」の一具体例に対応する。信号ＳＲおよび信号ＣＴＲＬは、本開示における「第２の制御信号」の一具体例に対応する。信号ＣＴＲＬは、本開示における「駆動信号」の一具体例に対応する。信号ＲＥＳＴＯＲＥは、本開示における「第３の制御信号」の一具体例に対応する。
【００５２】
［動作および作用］
続いて、本実施の形態の半導体回路１の動作および作用について説明する。
【００５３】
（全体動作概要）
まず、図１，２を参照して、半導体回路１の全体動作概要を説明する。ＣＰＵ７は、制御部９に制御信号を供給することにより、半導体回路１の動作モードを指示する。制御部９は、ＣＰＵ７から指示された動作モードに基づいて、回路１０の各フリップフロップ２０に対して、制御信号ＳＩＧ（８つの信号ＳＴＯＲＥ，ＲＥＳＴＯＲＥ，ＩＮＩＴＩＡＬＩＺＥ，ＲＥＳＥＴ，ＶＥＲＩＦＹ，ＥＱＬ，ＳＡＶＥ，ＣＴＲＬ）を供給する。回路１０のフリップフロップ２０は、アクティブモードＭ１において、クロック信号ＣＬＫの立ち上がりエッジに基づいて、データ入力端子Ｄに入力された信号をサンプリングして、そのサンプリング結果をデータ出力端子Ｑから出力する。
【００５４】
ＣＰＵ７は、動作モードをアクティブモードＭ１からスリープモードＭ２に移行させる場合には、まず、半導体回路１がストアモードＭ３で動作すべき旨を指示し、その後に半導体回路１がベリファイモードＭ４で動作すべき旨を指示する。判定回路１１は、ベリファイモードＭ４において、複数のフリップフロップ２０から供給された信号ＣＭＰ＿ＯＵＴに基づいて、全てのフリップフロップ２０において、スレーブラッチ４０に記憶された情報を記憶回路６０に正常に書き込むことができたかどうかを判定する。ＣＰＵ７は、判定回路１１における判定結果に基づいて、複数のフリップフロップ２０のうちの一部のフリップフロップ２０が、記憶回路６０に情報を正常に書き込むことができなかったことを把握した場合には、半導体回路１がリトライモードＭ５で動作すべき旨を指示する。これにより、記憶回路６０に情報を正常に書き込むことができなかったフリップフロップ２０は、書込条件を変えつつ、記憶回路６０への情報の書き込みを繰り返す。そして、全てのフリップフロップ２０が記憶回路６０に情報を正常に書き込んだ場合には、ＣＰＵ７は、電源トランジスタ８をオフ状態にする。
【００５５】
一方、ＣＰＵ７は、動作モードをスリープモードＭ２からアクティブモードＭ１に移行させる場合には、まず、半導体回路１がリストアモードＭ６で動作すべき旨を指示し、その次に、電源トランジスタ８をオン状態にする。
【００５６】
（詳細動作）
次に、半導体回路１の動作を、動作モードがスリープモードＭ２からアクティブモードＭ１に移行し、スリープモードＭ２に戻るまでの一連の動作を例に挙げて、詳細に説明する。
【００５７】
図６Ａ〜６Ｊは、フリップフロップ２０における、スレーブラッチ４０、バルーン回路５０、および記憶回路６０の一動作例を表すものである。この図６Ａ〜６Ｊにおいて、スレーブラッチ４０におけるトランスミッションゲート４１，４６、およびバルーン回路５０におけるトランスミッションゲート５１，５４を、適宜、そのトランスミッションゲートの動作状態を表すスイッチを用いて示している。同様に、スレーブラッチ４０におけるトランジスタ４３，４５，４７，４８、および記憶回路６０のトランジスタ６３〜６６を、適宜、そのトランジスタの動作状態を表すスイッチを用いて示している。
【００５８】
（スリープモードＭ２からアクティブモードＭ１へ移行する場合）
動作モードをスリープモードＭ２からアクティブモードＭ１に移行させる場合には、ＣＰＵ７は、まず、半導体回路１がリストアモードＭ６で動作すべき旨を指示する。このとき、電源トランジスタ８はオフ状態である。制御部９は、ＣＰＵ７からの指示に基づいて、信号ＲＥＳＴＯＲＥを“０”（アクティブ）にする。これにより、トランジスタ４７，６５，６６はオン状態になり、スレーブラッチ４０のノードＮ４１が、トランジスタ６５を介して記憶素子６７に接続されるとともに、スレーブラッチ４０のノードＮ４２が、トランジスタ６６を介して記憶素子６８と接続される。次に、ＣＰＵ７は、電源トランジスタ８をオン状態にする。このとき、図６Ａに示したように、信号ＣＴＲＬは“０”であり、信号ＲＥＳＥＴは“０”（非アクティブ）であり、トランスミッションゲート４１はオフ状態であり、トランスミッションゲート４６はオン状態である。また、信号ＥＱＬは“０”（非アクティブ）であるので、トランジスタ４３，４５はオン状態であり、トランジスタ４８はオフ状態である。よって、スレーブラッチ４０では、負帰還動作が行われ、反転論理積回路４２は、ノードＮ４１における信号ＳＬＡＶＥの反転信号をノードＮ４２に出力しようとし、インバータ４４は、ノードＮ４２における信号ＳＬＡＶＥＢの反転信号をノードＮ４１に出力しようとする。この例では、記憶素子６７の抵抗状態は高抵抗状態ＲＨ（“１”）であり、記憶素子６８の抵抗状態は低抵抗状態ＲＬ（“０”）である。よって、ノードＮ４１は高い抵抗値でプルダウンされ、ノードＮ４２は低い抵抗値でプルダウンされるため、ノードＮ４１における信号ＳＬＡＶＥは“１”になり、ノードＮ４２における信号ＳＬＡＶＥＢは“０”になる。すなわち、信号ＳＬＡＶＥは、高抵抗状態ＲＨ（“１”）に応じて“１”になり、信号ＳＬＡＶＥＢは、低抵抗状態ＲＬ（“０”）に応じて“０”になる。このようにして、フリップフロップ２０は、記憶回路６０に記憶された情報を、スレーブラッチ４０に読み出す。
【００５９】
次に、制御部９は、信号ＲＥＳＴＯＲＥを“１”（非アクティブ）にする。これにより、図６Ｂに示したように、トランジスタ４７，６５，６６がオフ状態になり、スレーブラッチ４０のノードＮ４１が記憶素子６７から切り離されるとともに、ノードＮ４２が記憶素子６８から切り離される。また、制御部９は、信号ＳＡＶＥを“１”（アクティブ）にする。これにより、トランスミッションゲート５１がオン状態になるとともに、トランスミッションゲート５４がオフ状態になり、スレーブラッチ４０のノードＮ４１はトランスミッションゲート５１を介してバルーン回路５０のノードＮ５１に接続される。その結果、この例では、ノードＮ５１の信号ＢＡＬＯＯＮは“１”になり、ノードＮ５２の信号ＢＡＬＯＯＮＢは“０”になる。
【００６０】
次に、制御部９は、信号ＳＡＶＥを“０”（非アクティブ）にする。これにより、図６Ｃに示したように、トランスミッションゲート５１がオフ状態になるとともに、トランスミッションゲート５４がオン状態になり、スレーブラッチ４０のノードＮ４１がバルーン回路５０から切り離される。そして、バルーン回路５０では、負帰還動作が行われ、情報が記憶される。この例では、信号ＢＡＬＯＯＮは“１”であり、信号ＢＡＬＯＯＮＢは“０”である。このようにして、フリップフロップ２０は、スレーブラッチ４０に記憶された情報をバルーン回路５０に移す。
【００６１】
このようにして、半導体回路１の動作モードは、スリープモードＭ２からアクティブモードＭ１（図６Ｄ）に移行する。例えば、クロック信号ＣＬＫがトグルし始めると、フリップフロップ２０は、クロック信号Ｃ，ＣＢに応じて動作する。例えば、クロック信号Ｃが“１”であるときに、トランスミッションゲート４１がオン状態になるとともに、トランスミッションゲート４６がオフ状態になる。これにより、マスタラッチ３０のノードＮ３２がスレーブラッチ４０のＮ４１と接続される。そして、クロック信号Ｃが“０”であるときに、トランスミッションゲート４１がオフ状態になるとともに、トランスミッションゲート４６がオン状態になる。これにより、スレーブラッチ４０において、負帰還動作が行われ、情報が記憶される。この動作において、図６Ｄに示したように、トランスミッションゲート５１はオフ状態を維持する。これにより、バルーン回路５０に記憶された情報は維持される。
【００６２】
（アクティブモードＭ１からスリープモードＭ２へ移行する場合）
動作モードをアクティブモードＭ１からスリープモードＭ２に移行させる場合には、ＣＰＵ７は、まず、半導体回路１がストアモードＭ３で動作すべき旨を指示する。制御部９は、ＣＰＵ７からの指示に基づいて、信号ＳＴＯＲＥを“１”（アクティブ）にする。また、制御部９は、クロック信号ＣＬＫを停止させ、このクロック信号ＣＬＫを“０”にする。これ以降、フリップフロップ２０は、スレーブラッチ４０に記憶された情報に応じて、異なる動作を行う。
【００６３】
スレーブラッチ４０に記憶された情報（例えば信号ＳＬＡＶＥ）が、バルーン回路５０に記憶された情報（例えば信号ＢＡＬＯＯＮ）と同じである場合には、図６Ｅに示したように、信号ＣＭＰ＿ＯＵＴが“０”になる。この場合、モード制御回路７０は、信号ＳＲを“０”にする。すなわち、モード制御回路７０（図４）では、信号ＶＥＲＩＦＹが“０”（非アクティブ）であり、信号ＣＭＰ＿ＯＵＴが“０”であるので、信号ＣＭＰ＿ＯＵＴＶは“０”になり、信号ＳＲは“０”になる。よって、トランジスタ６３，６４はオフ状態を維持する。その結果、フリップフロップ２０は、情報を記憶回路６０に書き込まない。すなわち、この場合には、図６Ｅに示したように、記憶素子６７の抵抗状態は、スレーブラッチ４０のノードＮ４１における信号ＳＬＡＶＥ（“１”）に対応した高抵抗状態ＲＨであり、記憶素子６８の抵抗状態は、ノードＮ４２における信号ＳＬＡＶＥＢ（“０”）に対応した低抵抗状態ＲＬである。このように、記憶回路６０では、記憶素子６７，６８の抵抗状態は、すでに、スレーブラッチ４０のノードＮ４１，Ｎ４２に応じた抵抗状態になっているので、フリップフロップ２０は、情報を記憶回路６０に書き込まない。
【００６４】
一方、スレーブラッチ４０に記憶された情報（例えば信号ＳＬＡＶＥ）が、バルーン回路５０に記憶された情報（例えば信号ＢＡＬＯＯＮ）と異なる場合には、図６Ｆ，６Ｇに示したように、信号ＣＭＰ＿ＯＵＴが“１”になる。この場合には、フリップフロップ２０は、スレーブラッチ４０に記憶された情報を記憶回路６０に書き込む。具体的には、フリップフロップ２０は、記憶素子６７の抵抗状態を、ノードＮ４１における信号ＳＬＡＶＥ（“０”）に対応した低抵抗状態ＲＬにすべく、そして、記憶素子６８の抵抗状態を、ノードＮ４２における信号ＳＬＡＶＥＢ（“１”）に対応した高抵抗状態ＲＨにすべく、スレーブラッチ４０に記憶された情報を記憶回路６０に書き込む。
【００６５】
まず、図６Ｆ，６Ｇに示したように、モード制御回路７０は、信号ＳＲを“１”にする。すなわち、モード制御回路７０（図４）では、信号ＶＥＲＩＦＹが“０”（非アクティブ）であり、信号ＣＭＰ＿ＯＵＴが“１”であるので、信号ＣＭＰ＿ＯＵＴＶは“１”になる。また、信号ＳＴＯＲＥが“１”（アクティブ）であり、信号ＩＮＩＴＩＡＬＩＺＥが“０”（非アクティブ）であるので、信号ＷＲＩＴＥは“１”になる。その結果、信号ＳＲは“１”になる。よって、図６Ｆ，６Ｇに示したように、トランジスタ６３，６４はオン状態になる。そして、フリップフロップ２０は、バルーン回路５０のノードＮ５１における信号ＢＡＬＯＯＮおよびノードＮ５２における信号ＢＡＬＯＯＮＢを用いて、２ステップで、情報を記憶回路６０に書き込む。
【００６６】
制御部９は、第１ステップにおいて、図６Ｆに示したように、信号ＣＴＲＬを“１”にする。これにより、記憶回路６０では、バルーン回路５０に記憶された情報に応じて、記憶素子６７，６８のうちの一方に電流が流れる。この例では、信号ＢＡＬＯＯＮが“１”であり、信号ＢＡＬＯＯＮＢが“０”である。よって、記憶素子６７、トランジスタ６３、インバータ６１の順に、ストア電流Ｉstore1が流れる。このとき、記憶素子６７では、ストア電流Ｉstore1がピンド層Ｐからフリー層Ｆに流れるので、記憶素子６７の抵抗状態は、低抵抗状態ＲＬ（“０”）になる。
【００６７】
次に、制御部９は、第２ステップにおいて、図６Ｇに示したように、信号ＣＴＲＬを“０にする。これにより、記憶回路６０では、バルーン回路５０に記憶された情報に応じて、記憶素子６７，６８のうちの他方に電流が流れる。この例では、インバータ６２、トランジスタ６４、記憶素子６８の順に、ストア電流Ｉstore2が流れる。このとき、記憶素子６７では、ストア電流Ｉstore2がフリー層Ｆからピンド層Ｐに流れるので、記憶素子６８の抵抗状態は、高抵抗状態ＲＨ（“１”）になる。
【００６８】
この２つのステップにより、図６Ｇに示したように、記憶素子６７の抵抗状態は、ノードＮ４１における信号ＳＬＡＶＥ（“０”）に対応した低抵抗状態ＲＬになり、記憶素子６８の抵抗状態は、ノードＮ４２における信号ＳＬＡＶＥＢ（“１”）に対応した高抵抗状態ＲＨになる。
【００６９】
この例では、このフリップフロップ２０は、記憶回路６０に情報を正常に書き込むことができたと仮定したが、複数のフリップフロップ２０のうちのあるフリップフロップ２０が、記憶回路６０に情報を正常に書き込むことができない場合もあり得る。そこで、半導体回路１は、次に、全てのフリップフロップ２０において、スレーブラッチ４０に記憶された情報を記憶回路６０に正常に書き込むことができたかどうかを確認する（ベリファイモードＭ４）。そして、複数のフリップフロップ２０のうちのあるフリップフロップ２０が、記憶回路６０に情報を正常に書き込むことができなかった場合には、そのフリップフロップ２０は、例えば、正常に情報を書き込むことができるまで、書込条件を変えつつ、情報の書き込みを繰り返す（リトライモードＭ５）。
【００７０】
まず、ＣＰＵ７は、半導体回路１がベリファイモードＭ４で動作すべき旨を指示する。制御部９は、ＣＰＵ７からの指示に基づいて、信号ＳＴＯＲＥを“０”（非アクティブ）にするとともに、信号ＶＥＲＩＦＹを“１”（アクティブ）にする。これにより、モード制御回路７０は、信号ＳＲを“０”にする。すなわち、モード制御回路７０（図４）では、信号ＳＴＯＲＥおよび信号ＩＮＩＴＩＡＬＩＺＥが“０”（非アクティブ）であるので、信号ＷＲＩＴＥが“０”になり、信号ＳＲは“０”になる。よって、図６Ｈに示したように、トランジスタ６３，６４はオフ状態になる。また、制御部９は、ＣＰＵ７からの指示に基づいて、信号ＥＱＬを“１”（アクティブ）にする。これにより、図６Ｈに示したように、トランジスタ４３，４５はオフ状態になり、トランジスタ４８はオン状態になる。このとき、スレーブラッチ４０では、ノードＮ４１，Ｎ４２は、互いに接続されるとともに、フローティング状態になる。つまり、スレーブラッチ４０は電源電圧ＶＤＤに充電される。なお、更に、信号ＣＴＲＬを“１”にするとともに、トランジスタ６５，６６をオン状態にすることにより、スレーブラッチ４０を電源電圧ＶＤＤにより短い時間で充電することができる。
【００７１】
次に、制御部９は、信号ＲＥＳＴＯＲＥを“０”（アクティブ）にする。これにより、トランジスタ４７，６５，６６はオン状態になり、スレーブラッチ４０のノードＮ４１が、トランジスタ６５を介して記憶素子６７に接続されるとともに、スレーブラッチ４０のノードＮ４２が、トランジスタ６６を介して記憶素子６８と接続される。次に、制御部９は、信号ＥＱＬを“０”（非アクティブ）にする。これにより、以下に説明するように、フリップフロップ２０は、上述したリストアモードＭ６における動作（図６Ａ）と同様に、記憶回路６０に記憶された情報を、スレーブラッチ４０に読み出す。
【００７２】
例えば、上述したストアモードＭ３における動作（図６Ｆ，６Ｇ）により、情報が記憶回路６０に正常に書き込まれたフリップフロップ２０では、図６Ｉに示したように、記憶素子６７の抵抗状態は低抵抗状態ＲＬ（“０”）であり、記憶素子６８の抵抗状態は高抵抗状態ＲＨ（“１”）である。よって、ノードＮ４１は低い抵抗値でプルダウンされ、ノードＮ４２は高い抵抗値でプルダウンされるため、ノードＮ４１における信号ＳＬＡＶＥは“０”になり、ノードＮ４２における信号ＳＬＡＶＥＢは“１”になる。この場合には、スレーブラッチ４０に記憶された情報（例えば信号ＳＬＡＶＥ）が、バルーン回路５０に記憶された情報（例えば信号ＢＡＬＯＯＮ）と異なるので、信号ＣＭＰ＿ＯＵＴが“１”になる。
【００７３】
一方、上述したストアモードＭ３における動作（図６Ｆ，６Ｇ）により、情報が記憶回路６０に正常に書き込まれていないフリップフロップ２０では、図６Ｊに示したように、この例では、記憶素子６７の抵抗状態は高抵抗状態ＲＨ（“１”）であり、記憶素子６８の抵抗状態は低抵抗状態ＲＬ（“０”）である。よって、ノードＮ４１は高い抵抗値でプルダウンされ、ノードＮ４２は低い抵抗値でプルダウンされるため、ノードＮ４１における信号ＳＬＡＶＥは“１”になり、ノードＮ４２における信号ＳＬＡＶＥＢは“０”になる。この場合には、スレーブラッチ４０に記憶された情報（例えば信号ＳＬＡＶＥ）が、バルーン回路５０に記憶された情報（例えば信号ＢＡＬＯＯＮ）と同じになるので、信号ＣＭＰ＿ＯＵＴが“０”になる。
【００７４】
そして、制御部９は、信号ＲＥＳＴＯＲＥを“１”（非アクティブ）にする。これにより、フリップフロップ２０では、トランジスタ４７，６５，６６がオフ状態になり、スレーブラッチ４０のノードＮ４１が記憶素子６７から切り離されるとともに、ノードＮ４２が記憶素子６８から切り離される。
【００７５】
判定回路１１は、このベリファイモードＭ４において、複数のフリップフロップ２０から供給された信号ＣＭＰ＿ＯＵＴに基づいて、全てのフリップフロップ２０において、スレーブラッチ４０に記憶された情報を記憶回路６０に正常に書き込むことができたかどうかを判定する。具体的には、判定回路１１は、全てのフリップフロップ２０から供給された信号ＣＭＰ＿ＯＵＴが“１”である場合には、全てのフリップフロップ２０において、情報を記憶回路６０に正常に書き込むことができたと判定する。
【００７６】
ＣＰＵ７は、判定回路１１が、全てのフリップフロップ２０のスレーブラッチ４０に記憶された情報を記憶回路６０に正常に書き込むことができたと判定した場合には、電源トランジスタ８をオフ状態にする。これにより、半導体回路１は、動作モードをスリープモードＭ２に移行させる。
【００７７】
また、ＣＰＵ７は、判定回路１１が、例えば一部のフリップフロップ２０のスレーブラッチ４０に記憶された情報を記憶回路６０に正常に書き込むことができていないと判定した場合には、そのフリップフロップ２０がリトライモードＭ５で動作すべき旨を指示する。制御部９は、ＣＰＵ７からの指示に基づいて、信号ＳＴＯＲＥを“１”（アクティブ）にする。
【００７８】
ストアモードＭ３における動作（図６Ｆ，６Ｇ）において情報が記憶回路６０に正常に書き込まれているフリップフロップ２０（図６Ｉ）では、モード制御回路７０は、信号ＳＲを“０”にする。すなわち、モード制御回路７０（図４）では、信号ＶＥＲＩＦＹが“１”（アクティブ）であり、信号ＣＭＰ＿ＯＵＴが“１”であるので、信号ＣＭＰ＿ＯＵＴ＿Ｖが“０”になり、信号ＳＲは“０”になる。よって、トランジスタ６３，６４はオフ状態を維持する。その結果、フリップフロップ２０は、情報を記憶回路６０に書き込まない。すなわち、この場合には、情報が記憶回路６０に正常に書き込まれているので、このフリップフロップ２０は、再度書き込みを行わない。
【００７９】
一方、ストアモードＭ３における動作（図６Ｆ，６Ｇ）において情報が記憶回路６０に正常に書き込まれなかったフリップフロップ２０（図６Ｊ）では、モード制御回路７０は、信号ＳＲを“１”にする。すなわち、モード制御回路７０（図４）では、信号ＶＥＲＩＦＹが“１”（アクティブ）であり、信号ＣＭＰ＿ＯＵＴが“０”であるので、信号ＣＭＰ＿ＯＵＴ＿Ｖが“１”になる。また、信号ＳＴＯＲＥが“１”（アクティブ）であり、信号ＩＮＩＴＩＡＬＩＺＥが“０”（非アクティブ）であるので、信号ＷＲＩＴＥが“１”になる。よって、信号ＳＲは“１”になる。これにより、トランジスタ６３，６４はオン状態になる。そして、フリップフロップ２０は、ストアモードＭ３における動作（図６Ｆ，６Ｇ）と同様に、バルーン回路５０のノードＮ５１における信号ＢＡＬＯＯＮおよびノードＮ５２における信号ＢＡＬＯＯＮＢを用いて、２ステップで、情報を記憶回路６０に書き込む。具体的には、制御部９は、ストアモードＭ３における動作と同様に、第１ステップにおいて、信号ＣＴＲＬを“１”にし、第２ステップにおいて、信号ＣＴＲＬを“０”にする。その際、例えば、制御部９は、情報を記憶回路６０に正常に書き込むことができるように、書込条件を変更する。具体的には、制御部９は、例えば、信号ＣＴＲＬの電圧やパルス幅を変更する。そして、フリップフロップ２０は、図６Ｈ〜６Ｊに示した動作と同様に、記憶回路６０に記憶された情報を、スレーブラッチ４０に読み出す。そして、判定回路１１は、このフリップフロップ２０が出力した信号ＣＭＰ＿ＯＵＴに基づいて、スレーブラッチ４０に記憶された情報を記憶回路６０に正常に書き込むことができたかどうかを判定する。このようにして、半導体回路１は、情報を記憶回路６０に正常に書き込むことができるまで、書込条件を変えつつ、情報の書き込みを繰り返す。
【００８０】
図７Ａ，７Ｂは、信号ＣＴＲＬの電圧を変更する場合における信号ＣＴＲＬの波形例を表すものである。図７Ａの例では、信号ＣＴＲＬを“１”にするときの信号ＣＴＲＬの電圧を、情報の書き込みを繰り返す度に徐々に高くしている。図７Ｂの例では、さらに、信号ＣＴＲＬを“０”にするときの信号ＣＴＲＬの電圧をも、情報の書き込みを繰り返す度に徐々に低くしている。
【００８１】
図８Ａ，８Ｂは、信号ＣＴＲＬのパルス幅を変更する場合における信号ＣＴＲＬの波形例を表すものである。図８Ａの例では、信号ＣＴＲＬを“１”にするときの信号ＣＴＲＬのパルス幅を、情報の書き込みを繰り返す度に徐々に長くしている。図８Ｂの例では、さらに、信号ＣＴＲＬを“０”にするときの信号ＣＴＲＬのパルス幅をも、情報の書き込みを繰り返す度に長くしている。
【００８２】
図９は、信号ＣＴＲＬの電圧およびパルス幅を変更する場合における信号ＣＴＲＬの波形例を表すものである。この例では、信号ＣＴＲＬを“１”にするときの信号ＣＴＲＬの電圧を、情報の書き込みを繰り返す度に徐々に高くするとともに、信号ＣＴＲＬを“１”にするときの信号ＣＴＲＬのパルス幅を、情報の書き込みを繰り返す度に徐々に長くしている。
【００８３】
このようにして、制御部９は、書込条件を変更し、フリップフロップ２０は、情報を記憶回路６０に正常に書き込むことができるまで、情報の書き込みを繰り返す。半導体回路１は、全てのフリップフロップ２０が正常に情報を書き込むことができるまで、書込条件を変えつつ、情報の書き込みを繰り返す。
【００８４】
そして、ＣＰＵ７は、判定回路１１が、全てのフリップフロップ２０のスレーブラッチ４０に記憶された情報を記憶回路６０に正常に書き込むことができたと判定した場合には、電源トランジスタ８をオフ状態にする。これにより、半導体回路１は、動作モードをスリープモードＭ２に移行させる。
【００８５】
図１０Ａ，１０Ｂは、半導体回路１の他の動作例を表すフローチャートである。この例では、半導体回路１は、まず、フリップフロップ２０の記憶回路６０を初期化し（イニシャライズモードＭ８）、スレーブラッチ４０およびバルーン回路５０をリセットする（リセットモードＭ７）。そして、半導体回路１は、アクティブモードＭ１で動作する。そして、半導体回路１は、その後、動作モードをアクティブモードＭ１からスリープモードＭ２に移行させる。その際、半導体回路１は、まず、フリップフロップ２０のスレーブラッチ４０に記憶された情報を記憶回路６０に書き込み（ストアモードＭ３）、記憶回路６０に正常に情報を書き込むことができたかどうかを検証し（ベリファイモードＭ４）、記憶回路６０に正常に情報を書き込むことができなかった場合には、書込条件を変更し（リトライモードＭ５）、再度情報の書き込みを行う。そして、半導体回路１は、記憶回路６０に正常に情報を書き込むことができた場合には、動作モードをスリープモードＭ２に移行させる。そして、半導体回路１は、その後、動作モードをスリープモードＭ２からアクティブモードＭ１に移行させる。その際、半導体回路１は、記憶回路６０からスレーブラッチ４０に情報を読み出す（リストアモードＭ６）。以下に、この動作について詳細に説明する。
【００８６】
（イニシャライズモードＭ８）
まず、制御部９は、信号ＲＥＳＥＴを“１”（アクティブ）にする（ステップＳ１０１）。これにより、半導体回路１は、フリップフロップ２０のスレーブラッチ４０に記憶された情報およびバルーン回路５０に記憶された情報を初期化する。これにより、信号ＳＬＡＶＥは“０”になり、信号ＳＬＡＶＥＢは“１”になる。また、信号ＢＡＬＯＯＮは“１”になり、信号ＢＡＬＯＯＮＢは“０”になる。その結果、信号ＣＭＰ＿ＯＵＴは“１”になる。
【００８７】
次に、制御部９は、信号ＩＮＩＴＩＡＬＩＺＥを“１”（アクティブ）にし、モード制御回路７０は、信号ＳＲを“１”にする（ステップＳ１０２）。すなわち、モード制御回路７０（図４）では、信号ＶＥＲＩＦＹが“０”（非アクティブ）であり、信号ＣＭＰ＿ＯＵＴが“１”であるので、信号ＣＭＰ＿ＯＵＴ＿Ｖが“１”になる。また、信号ＳＴＯＲＥが“０”（非アクティブ）であり、信号ＩＮＩＴＩＡＬＩＺＥが“１”（アクティブ）であるので、信号ＷＲＩＴＥが“１”になる。よって、信号ＳＲは“１”になる。これにより、フリップフロップ２０は、情報を記憶回路６０に書き込む。
【００８８】
次に、制御部９は、信号ＳＡＶＥを“０”（非アクティブ）にし、信号ＥＱＬを“１”（アクティブ）にし、信号ＶＥＲＩＦＹを“１”（アクティブ）にする（ステップＳ１０３）。これにより、フリップフロップ２０は、スレーブラッチ４０のノードＮ４１，Ｎ４２を互いに接続するとともにフローティング状態にする。
【００８９】
次に、制御部９は、信号ＥＱＬを“０”（非アクティブ）にするとともに、信号ＲＥＳＴＯＲＥを“０”（アクティブ）にする（ステップＳ１０４）。これにより、フリップフロップ２０は、記憶回路６０に記憶された情報をスレーブラッチ４０に読み出す。そして、排他的論理和回路２３は、スレーブラッチ４０に記憶された情報とバルーン回路５０に記憶された情報とを比較することにより、信号ＣＭＰ＿ＯＵＴを生成する。ステップＳ１０２において情報を記憶回路６０に正常に書き込むことができた場合には、ノードＮ４１における信号ＳＬＡＶＥは“０”になり、ノードＮ４２における信号ＳＬＡＶＥＢは“１”になる。このとき、信号ＢＡＬＯＯＮＢは“０”であるので、信号ＣＭＰ＿ＯＵＴは“１”になる。一方、情報を正常に書き込むことができなかった場合には、例えば、ノードＮ４１における信号ＳＬＡＶＥは“１”であり、ノードＮ４２における信号ＳＬＡＶＥＢは“０”になる。このとき、信号ＣＭＰ＿ＯＵＴは“０”になる。
【００９０】
（リトライモードＭ５）
信号ＣＭＰ＿ＯＵＴが“０”である場合（ステップＳ１０５において“Ｎ”）には、制御部９は、書込条件を変更する（ステップＳ１０６）。すなわち、この場合には、ステップＳ１０２において情報を記憶回路６０に正常に書き込むことができなかったので、制御部９は、書込条件を変更する。具体的には、制御部９は、例えば、図７Ａ，７Ｂ，８Ａ，８Ｂ，９に示したように、信号ＣＴＲＬの電圧やパルス幅を変更する。そして、ステップＳ１０２に戻る。そして、半導体回路１は、信号ＣＭＰ＿ＯＵＴが“１”になるまで、このステップＳ１０２〜Ｓ１０６の動作を繰り返す。
【００９１】
（リセットモードＭ７）
ステップＳ１０５において、信号ＣＭＰ＿ＯＵＴが“１”である場合（ステップＳ１０５において“Ｙ”）には、制御部９は、信号ＩＮＩＴＩＡＬＩＺＥを“０”（非アクティブ）にし、信号ＶＥＲＩＦＹを“０”（非アクティブ）にし、信号ＲＥＳＥＴを“１”（アクティブ）にする（ステップＳ１１１）。これにより、半導体回路１は、フリップフロップ２０のスレーブラッチ４０に記憶された情報およびバルーン回路５０に記憶された情報を初期化する。これにより、信号ＳＬＡＶＥは“０”になり、信号ＳＬＡＶＥＢは“１”になる。また、信号ＢＡＬＯＯＮは“１”になり、信号ＢＡＬＯＯＮＢは“０”になる。
【００９２】
（アクティブモードＭ１）
次に、制御部９は、信号ＲＥＳＥＴを“０”（非アクティブ）にする（ステップＳ１２１）。これにより、フリップフロップ２０は、通常動作を行う。
【００９３】
そして、しばらくの間、アクティブモードＭ１で動作を行った後に、半導体回路１は、動作モードをアクティブモードＭ１からスリープモードＭ２に移行させる。具体的には、以下に示すように、半導体回路１は、ストアモードＭ３およびベリファイモードＭ４を経て、動作モードをスリープモードＭ２に移行させる。
【００９４】
（ストアモードＭ３）
まず、制御部９は、信号ＳＴＯＲＥを“１”（アクティブ）にするとともに、クロック信号ＣＬＫを停止させ、このクロック信号ＣＬＫを“０”にする（ステップＳ１３１）。排他的論理和回路２３は、スレーブラッチ４０に記憶された情報とバルーン回路５０に記憶された情報とを比較することにより、信号ＣＭＰ＿ＯＵＴを生成する。
【００９５】
信号ＣＭＰ＿ＯＵＴが“０”である場合（ステップＳ１３２において“Ｙ”）には、ステップＳ１４１に進む。すなわち、この場合には、記憶素子６７，６８の抵抗状態は、すでに、スレーブラッチ４０のノードＮ４１，Ｎ４２に応じた抵抗状態になっているので、フリップフロップ２０は、情報を記憶回路６０に書き込まない。この動作は、図６Ｅに対応する。
【００９６】
信号ＣＭＰ＿ＯＵＴが“１”である場合（ステップＳ１３２において“Ｎ”）には、モード制御回路７０は、信号ＳＲを“１”にする（ステップＳ１３３）。すなわち、モード制御回路７０（図４）では、信号ＶＥＲＩＦＹが“０”（非アクティブ）であり、信号ＣＭＰ＿ＯＵＴが“１”であるので、信号ＣＭＰ＿ＯＵＴ＿Ｖが“１”になる。また、信号ＳＴＯＲＥが“１”（アクティブ）であり、信号ＩＮＩＴＩＡＬＩＺＥが“０”（非アクティブ）であるので、信号ＷＲＩＴＥが“１”になる。よって、信号ＳＲは“１”になる。これにより、フリップフロップ２０は、情報を記憶回路６０に書き込む。この動作は、図６Ｆ，６Ｇに対応する。
【００９７】
（ベリファイモードＭ４）
次に、制御部９は、信号ＳＡＶＥを“０”（非アクティブ）にし、信号ＥＱＬを“１”（アクティブ）にし、信号ＶＥＲＩＦＹを“１”（アクティブ）にする（ステップＳ１３４）。これにより、フリップフロップ２０は、スレーブラッチ４０のノードＮ４１，Ｎ４２を互いに接続するとともにフローティング状態にする。この動作は、図６Ｈに対応する。
【００９８】
次に、制御部９は、信号ＥＱＬを“０”（非アクティブ）にするとともに、信号ＲＥＳＴＯＲＥを“０”（アクティブ）にする（ステップＳ１３５）。これにより、フリップフロップ２０は、記憶回路６０に記憶された情報をスレーブラッチ４０に読み出す。ステップＳ１３３において情報を記憶回路６０に正常に書き込むことができた場合には、信号ＣＭＰ＿ＯＵＴは“１”になる。この動作は、図６Ｉに対応する。一方、情報を正常に書き込むことができなかった場合には、信号ＣＭＰ＿ＯＵＴは“０”になる。この動作は、図６Ｊに対応する。
【００９９】
（リトライモードＭ５）
信号ＣＭＰ＿ＯＵＴが“０”である場合（ステップＳ１３６において“Ｎ”）には、制御部９は、書込条件を変更する（ステップＳ１３７）。具体的には、制御部９は、例えば、図７Ａ，７Ｂ，８Ａ，８Ｂ，９に示したように、信号ＣＴＲＬの電圧やパルス幅を変更する。そして、ステップＳ１３３に戻る。そして、半導体回路１は、信号ＣＭＰ＿ＯＵＴが“１”になるまで、このステップＳ１０２〜Ｓ１０６の動作を繰り返す。
【０１００】
（スリープモードＭ２）
次に、制御部９は、信号ＳＴＯＲＥおよび信号ＶＥＲＩＦＹを“０”（非アクティブ）にするとともに、モード制御回路７０は、信号ＳＲを“０”にする（ステップＳ１４１）。すなわち、モード制御回路７０（図４）では、信号ＳＴＯＲＥが“０”（非アクティブ）であり、信号ＩＮＩＴＩＡＬＩＺＥが“０”（非アクティブ）であるので、信号ＷＲＩＴＥが“０”になり、信号ＳＲは“０”になる。そして、ＣＰＵ７は、電源トランジスタ８をオフ状態にする。このようにして、半導体回路１は、回路１０をスリープ状態にする。
【０１０１】
その後、しばらくしてから、半導体回路１は、動作モードをスリープモードＭ２からアクティブモードＭ１に移行させる。具体的には、半導体回路１は、リストアモードＭ６を経て、動作モードをアクティブモードＭ１に移行させる。
【０１０２】
（リストアモードＭ６）
まず、制御部９は、信号ＲＥＳＴＯＲＥを“０”（アクティブ）にする（ステップＳ１５１）。そして、ＣＰＵ７は、電源トランジスタ８をオン状態にする。これにより、フリップフロップ２０は、記憶回路６０に記憶された情報をスレーブラッチ４０に読み出す。
【０１０３】
そして、制御部９は、信号ＳＡＶＥを“１”（アクティブ）にする（ステップＳ１５２）。これにより、フリップフロップ２０は、スレーブラッチ４０に記憶された情報をバルーン回路５０に移す。そして、ステップＳ１２１に戻る。
【０１０４】
このようにして、動作モードがアクティブモードＭ１に移行する。
【０１０５】
以上のように、半導体回路１では、複数のフリップフロップ２０のそれぞれにバルーン回路５０を設けるようにした。そして、ストアモードＭ３において、スレーブラッチ４０に記憶された情報とバルーン回路５０に記憶された情報との比較結果に基づいて、情報を記憶回路６０に書き込むようにした。具体的には、半導体回路１では、ストアモードＭ３において、スレーブラッチ４０に記憶された情報とバルーン回路５０に記憶された情報とが互いに異なる場合（ステップＳ１３２において“Ｎ”）に、図６Ｆ，６Ｇに示したように、情報を記憶回路６０に書き込むようにした。これにより、半導体回路１では、複数のフリップフロップ２０のうちの、情報を記憶回路６０に書き込む必要があるフリップフロップ２０においてのみ、情報を書き込むことができるので、消費電力を低減することができる。
【０１０６】
また、半導体回路１では、ベリファイモードＭ４およびリトライモードＭ５において、スレーブラッチ４０に記憶された情報とバルーン回路５０に記憶された情報との比較結果に基づいて、情報を記憶回路６０に再び書き込むようにした。具体的には、半導体回路１では、ベリファイモードＭ４およびリトライモードＭ５において、図６Ｊに示したように、スレーブラッチ４０に記憶された情報とバルーン回路５０に記憶された情報とが同じである場合（ステップＳ１３６において“Ｎ”）に、情報を記憶回路６０に再び書き込むようにした。これにより、半導体回路１では、直前の書き込み動作において、情報を記憶回路６０に正常に書き込むことができなかったフリップフロップ２０においてのみ、情報を書き込むことができるので、消費電力を低減することができる。
【０１０７】
また、半導体回路１では、ベリファイモードＭ４およびリトライモードＭ５において、情報を記憶回路６０に繰り返し書き込むようにした。これにより、半導体回路１では、書込エラーレートを低減することができる。
【０１０８】
また、半導体回路１では、ベリファイモードＭ４およびリトライモードＭ５において、情報を記憶回路６０に繰り返し書き込む際、書込条件を変更するようにしたので、例えば半導体回路１が搭載される電子機器に応じて、書込時間を適切に設定することができる。
【０１０９】
［効果］
以上のように本実施の形態では、複数のフリップフロップのそれぞれにバルーン回路を設け、ストアモードにおいて、スレーブラッチに記憶された情報とバルーン回路に記憶された情報との比較結果に基づいて、情報を記憶回路に書き込むようにしたので、消費電力を低減することができる。
【０１１０】
本実施の形態では、ベリファイモードおよびリトライモードにおいて、スレーブラッチに記憶された情報とバルーン回路に記憶された情報との比較結果に基づいて、情報を記憶回路に再び書き込むようにしたので、消費電力を低減することができる。
【０１１１】
本実施の形態では、ベリファイモードおよびリトライモードにおいて、情報を記憶回路に繰り返し書き込むようにしたので、書込エラーレートを低減することができる。
【０１１２】
本実施の形態では、ベリファイモードおよびリトライモードにおいて、情報を記憶回路に繰り返し書き込む際、書込条件を変更するようにしたので、書込時間を適切に設定することができる。
【０１１３】
［変形例１］
上記実施の形態では、Ｎ型のＭＯＳトランジスタを用いて電源トランジスタ８を構成したが、これに限定されるものではなく、これに代えて、例えば、Ｐ型のＭＯＳトランジスタを用いて電源トランジスタを構成してもよい。以下に、本変形例に係る半導体回路１Ａについて詳細に説明する。
【０１１４】
図１１は、半導体回路１Ａの一構成例を表すものである。半導体回路１Ａは、回路１０Ａと、電源トランジスタ８Ａと、ＣＰＵ７Ａと、制御部９Ａとを備えている。
【０１１５】
回路１０Ａは、所定の動作を行う回路である。この回路１０の電源端子Ｔ１には、電源トランジスタ８Ａを介して電源電圧ＶＤＤが供給され、接地端子Ｔ２には接地電圧ＶＧＮＤが供給されている。これにより、回路１０内の各回路の電源端子には、電源トランジスタ８Ａがオン状態であるときに電源電圧ＶＤＤが供給されるようになっている。この回路１０Ａは、複数のフリップフロップ２０Ａを有している。
【０１１６】
電源トランジスタ８Ａは、電源制御信号ＳＰＧＢに基づいてオンオフするものであり、この例では、Ｐ型のＭＯＳトランジスタである。電源制御信号ＳＰＧＢは、上記実施の形態に係る電源制御信号ＳＰＧの反転信号に対応するものである。電源トランジスタ８Ａのゲートには電源制御信号ＳＰＧＢが供給され、ソースには電源電圧ＶＤＤが供給され、ドレインは、回路１０Ａの電源端子Ｔ１に接続されている。
【０１１７】
ＣＰＵ７Ａは、半導体回路１Ａの動作を制御するものである。また、ＣＰＵ７Ａは、電源トランジスタ８Ａに電源制御信号ＳＰＧＢを供給して電源トランジスタ８Ａをオンオフすることにより、いわゆるパワーゲーティングを行う機能をも有している。
【０１１８】
制御部９Ａは、ＣＰＵ７Ａから指示された動作モードに基づいて、回路１０Ａの各フリップフロップ２０Ａに対して制御信号ＳＩＧを供給するものである。制御信号ＳＩＧは、８つの信号ＳＴＯＲＥ，ＲＥＳＴＯＲＥＢ，ＩＮＩＴＩＡＬＩＺＥ，ＲＥＳＥＴ，ＶＥＲＩＦＹ，ＥＱＬ，ＳＡＶＥ，ＣＴＲＬを含んでいる。信号ＲＥＳＴＯＲＥＢは、上記実施の形態に係る信号ＲＥＳＴＯＲＥの反転信号に対応するものである。
【０１１９】
図１２は、フリップフロップ２０Ａの一構成例を表すものである。フリップフロップ２０Ａは、スレーブラッチ４０Ａと、記憶回路６０Ａと、モード制御回路７０Ａとを有している。
【０１２０】
スレーブラッチ４０Ａは、反転論理積回路４２Ａと、トランジスタ４３Ａと、インバータ４４Ａと、トランジスタ４５Ａと、トランジスタ４７Ａとを有している。
【０１２１】
反転論理積回路４２Ａの第１入力端子には信号ＲＥＳＥＴＢが供給され、第２入力端子はノードＮ４１に接続され、出力端子はノードＮ４２に接続され、電源端子はトランジスタ４３Ａのドレインに接続されている。トランジスタ４３Ａは、Ｐ型のＭＯＳトランジスタであり、ゲートには信号ＥＱＬが供給され、ソースは回路１０Ａの電源端子Ｔ１に接続され、ドレインは反転論理積回路４２Ａの電源端子に接続されている。
【０１２２】
インバータ４４Ａの入力端子はノードＮ４２に接続され、出力端子はトランスミッションゲート４６の一端に接続され、電源端子はトランジスタ４５Ａのドレインに接続されている。トランジスタ４５Ａは、Ｐ型のＭＯＳトランジスタであり、ゲートには信号ＥＱＬが供給され、ソースは回路１０Ａの電源端子Ｔ１に接続され、ドレインはインバータ４４Ａの電源端子に接続されている。
【０１２３】
トランジスタ４７Ａは、Ｎ型のＭＯＳトランジスタであり、ゲートには信号ＲＥＳＴＯＲＥＢが供給され、ソースはインバータ４４Ａの出力端子およびトランスミッションゲート４６の一端に接続され、他端はノードＮ４１に接続されている。
【０１２４】
記憶回路６０Ａは、インバータ６１，６２と、トランジスタ６３Ａ〜６６Ａと、記憶素子６７Ａ，６８Ａとを有している。
【０１２５】
インバータ６１の入力端子はバルーン回路５０のノードＮ５１に接続され、出力端子はトランジスタ６３Ａのソースに接続されている。インバータ６２の入力端子はバルーン回路５０のノードＮ５２に接続され、出力端子はトランジスタ６４Ａのソースに接続されている。
【０１２６】
トランジスタ６３Ａ，６４Ａは、Ｐ型のＭＯＳトランジスタである。トランジスタ６３Ａのゲートには信号ＳＲＢが供給され、ソースはインバータ６１Ａの出力端子に接続され、ドレインはノードＮ６１に接続されている。トランジスタ６４Ａのゲートには信号ＳＲＢが供給され、ソースはインバータ６２の出力端子に接続され、ドレインはノードＮ６２に接続されている。信号ＳＲＢは、上記実施の形態に係る信号ＳＲの反転信号に対応するものである。
【０１２７】
トランジスタ６５Ａ，６６Ａは、Ｎ型のＭＯＳトランジスタである。トランジスタ６５Ａのゲートには信号ＲＥＳＴＯＲＥＢが供給され、ドレインはノードＮ４１に接続され、ソースはノードＮ６１に接続されている。トランジスタ６６Ａのゲートには信号ＲＥＳＴＯＲＥＢが供給され、ドレインはノードＮ４２に接続され、ソースはノードＮ６２に接続されている。
【０１２８】
記憶素子６７Ａ，６８Ａは、上記実施の形態に係る記憶素子６７，６８と同様に、スピン注入磁化反転型の磁気トンネル接合素子である。この例では、記憶素子６７Ａのピンド層ＰはノードＮ６１に接続され、フリー層Ｆには信号ＣＴＲＬが供給される。同様に、記憶素子６８Ａのピンド層ＰはノードＮ６２に接続され、フリー層Ｆには信号ＣＴＲＬが供給される。
【０１２９】
図１３は、モード制御回路７０Ａの一構成例を表すものである。モード制御回路７０Ａは、反転論理積回路７３Ａを有している。反転論理積回路７３Ａは、信号ＣＭＰ＿ＯＵＴ＿Ｖと信号ＷＲＩＴＥとの論理積を求め、その結果を信号ＳＲＢとして出力するものである。
【０１３０】
［変形例２］
上記実施の形態では、図２に示したようにフリップフロップ２０を構成したが、これに限定されるものではない。例えば、フリップフロップ２０では、ノードＮ５１をインバータ６１を介してトランジスタ６３のドレインに接続するとともに、ノードＮ５２をインバータ６２を介してトランジスタ６４に接続したが、これに代えて、インバータ６１，６２を削除し、ノードＮ５１をトランジスタ６４のドレインに接続するとともに、ノードＮ５２をトランジスタ６３のドレインに接続してもよい。また、例えば、フリップフロップ２０では、トランジスタ４８を設けたが、これに代えて、トランジスタ４８を削除してもよい。また、フリップフロップ２０では、反転論理和回路５２を用いてバルーン回路５０をリセットできるようにしたが、これに限定されるものではなく、他の回路を用いてバルーン回路５０をリセットしてもよい。
【０１３１】
以上の例では、上記実施の形態に係るフリップフロップ２０に本変形例を適用したが、これに限定されるものではなく、変形例１に係るフリップフロップ２０Ａ（図１２）に、本変形例を適用してもよい。図１４は、フリップフロップ２０Ａに本変形例を適用したフリップフロップ（フリップフロップ２０Ｂ）の一構成例を表すものである。このフリップフロップ２０Ｂは、スレーブラッチ４０Ｂと、バルーン回路５０Ｂと、記憶回路６０Ｂとを有している。
【０１３２】
スレーブラッチ４０Ｂは、トランスミッションゲート４１と、反転論理積回路４２Ａと、トランジスタ４３Ａと、インバータ４４Ａと、トランジスタ４５Ａと、トランスミッションゲート４６と、トランジスタ４７Ａと、インバータ４９とを有している。すなわち、スレーブラッチ４０Ｂは、スレーブラッチ４０Ａ（図１２）からトランジスタ４８を省いたものである。
【０１３３】
バルーン回路５０Ｂは、トランスミッションゲート５１と、インバータ５５Ｂと、反転論理積回路５６Ｂと、トランスミッションゲート５４とを有している。インバータ５５Ｂの入力端子はノードＮ５１に接続され、出力端子はノードＮ５２に接続されている。反転論理積回路５６Ｂの第１入力端子には信号ＲＥＳＥＴＢが供給され、第２入力端子はノードＮ５２に接続され、出力端子はトランスミッションゲート５４の一端に接続されている。
【０１３４】
記憶回路６０Ｂは、トランジスタ６３Ａ〜６６Ａと、記憶素子６７Ａ，６８Ａとを有している。トランジスタ６３ＡのドレインはノードＮ５２に接続されている。トランジスタ６４Ａのドレインは、ノードＮ５１に接続されている。
【０１３５】
［変形例３］
上記実施の形態では、あるフリップフロップ２０において、記憶回路６０に情報を正常に書き込むことができなかった場合には、そのフリップフロップ２０は、正常に情報を書き込むことができるまで、情報の書き込みを繰り返すようにしたが、これに限定されるものではない。例えば、情報の書き込み回数に上限を設け、例えば、その上限回数まで情報の書き込みを繰り返しても、正常に情報を書き込むことができない場合には、情報の書き込みを停止してもよい。
【０１３６】
［変形例４］
上記実施の形態では、磁気トンネル接合素子を用いて記憶素子６７，６８を構成したが、これに限定されるものではなく、抵抗状態が可逆的に変化する様々な記憶素子を用いることができる。具体的には、記憶素子は、例えば、抵抗変化型記憶素子、相変化型記憶素子、および強誘電体記憶素子などを使用することができる。
【０１３７】
＜２．適用例＞
次に、上記実施の形態および変形例で説明した半導体回路の適用例について説明する。
【０１３８】
図１５は、上記実施の形態等の半導体回路が適用されるスマートフォンの外観を表すものである。このスマートフォンは、例えば、本体部３１０、表示部３２０、およびバッテリ３３０を有している。
【０１３９】
上記実施の形態等の半導体回路は、このようなスマートフォンの他、デジタルカメラ、ノート型パーソナルコンピュータ、携帯型ゲーム機、ビデオカメラなどのあらゆる分野の電子機器に適用することが可能である。特に、本技術は、バッテリを有する携帯型の電子機器に適用すると効果的である。
【０１４０】
以上、いくつかの実施の形態および変形例、ならびにそれらの具体的な応用例および電子機器への適用例を挙げて本技術を説明したが、本技術はこれらの実施の形態等には限定されず、種々の変形が可能である。
【０１４１】
例えば、上記の実施の形態等では、書込条件を変更する際、信号ＣＴＲＬの電圧やパルス幅を変更したが、これに限定されるものではない。例えば、信号ＳＲの電圧をも変更してもよい。
【０１４２】
また、例えば、上記の実施の形態等では、本技術をフリップフロップ２０のスレーブラッチ４０に適用したが、これに限定されるものではない。例えば、マスタラッチ３０に適用してもよい。また、上記の実施の形態等では、本技術をＤ型のフリップフロップ２０に適用したが、これに限定されるものではなく、例えばＴ型などの他のフリップフロップに適用してもよい。また、ラッチに適用してもよい。
【０１４３】
なお、本明細書に記載された効果はあくまで例示であって限定されるものでは無く、また他の効果があってもよい。
【０１４４】
なお、本技術は以下のような構成とすることができる。
【０１４５】
（１）揮発性の第１の記憶部と、
第１の制御信号に基づいて、前記第１の記憶部に記憶されたデータを記憶する揮発性の第２の記憶部と、
第２の制御信号に基づいて、前記第２の記憶部に記憶されたデータに応じたデータを記憶するとともに、第３の制御信号に基づいて、自らに記憶されたデータを前記第１の記憶部に記憶させる、不揮発性の第３の記憶部と、
前記第１の制御信号および前記第３の制御信号を生成するとともに、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとを比較し、その比較結果に基づいて前記第２の制御信号を生成する制御部と
を備えた半導体回路。
（２）前記制御部は、
第１の期間において、前記第３の制御信号を用いて、前記第３の記憶部に記憶されたデータを前記第１の記憶部に記憶させるとともに、前記第１の制御信号を用いて、前記第１の記憶部に記憶されたデータを前記第２の記憶部に記憶させ、
前記第１の期間の後の第２の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが相違していることを示す場合に、前記第２の制御信号を用いて、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
前記（１）に記載の半導体回路。
（３）前記制御部は、
前記第２の期間の後の第３の期間において、前記第３の制御信号を用いて、前記第３の記憶部に記憶されたデータを前記第１の記憶部に記憶させ、
前記第３の期間の後の第４の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが一致していることを示す場合に、前記第２の制御信号を用いて、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
前記（２）に記載の半導体回路。
（４）前記制御部は、前記第４の期間において、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる際の動作条件を、前記第２の期間において、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる際の動作条件と異なる条件に設定する
前記（３）に記載の半導体回路。
（５）前記第３の記憶部は、駆動信号が印加される不揮発性の記憶素子を有し、
前記第２の制御信号は、前記駆動信号を含み、
前記制御部は、前記第２の期間において前記駆動信号の振幅を第１の電圧に設定し、前記第４の期間における前記駆動信号の振幅を第２の電圧に設定する
前記（４）に記載の半導体回路。
（６）前記第２の電圧は、前記第１の電圧よりも大きい
前記（５）に記載の半導体回路。
（７）前記第３の記憶部は、駆動信号が印加される不揮発性の記憶素子を有し、
前記第２の制御信号は、前記駆動信号を含み、
前記制御部は、前記第２の期間において前記駆動信号のパルス幅を第１のパルス幅に設定し、前記第４の期間における前記駆動信号のパルス幅を第２のパルス幅に設定する
前記（４）から（６）のいずれかに記載の半導体回路。
（８）前記第２のパルス幅は、前記第１のパルス幅よりも広い
前記（７）に記載の半導体回路。
（９）前記制御部は、前記第４の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが相違していることを示す場合に、前記第１の記憶部および前記第２の記憶部への電源供給を停止するように電源制御を行う
前記（３）から（８）のいずれかに記載の半導体回路。
（１０）前記制御部は、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが相違していることを示すまで、前記第３の期間における動作と、前記第４の期間における動作とを繰り返す
前記（３）から（９）のいずれかに記載の半導体回路。
（１１）第１の回路および第２の回路をさらに備え、
前記第１の期間と前記第２の期間との間の第５の期間において、
前記第１の記憶部は、前記第１の回路から供給されたデータを記憶するとともに、記憶されたデータを前記第２の回路に供給する
前記（２）から（１０）のいずれかに記載の半導体回路。
（１２）揮発性の第１の記憶部に記憶されたデータと、第１の制御信号に基づいて前記第１の記憶部に記憶されたデータを記憶する揮発性の第２の記憶部に記憶されたデータとを比較し、
前記第１の記憶部に記憶されたデータと、前記第２の記憶部に記憶されたデータとの比較結果に基づいて、第２の制御信号を不揮発性の第３の記憶部に供給することにより、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
半導体回路の制御方法。
（１３）第１の期間において、第３の制御信号を前記第３の記憶部に供給することにより、前記第３の記憶部に記憶されたデータを前記第１の記憶部に記憶させるとともに、前記第１の制御信号を用いて、前記第１の記憶部に記憶されたデータを前記第２の記憶部に記憶させ、
前記第１の期間の後の第２の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが相違していることを示す場合に、前記第２の制御信号を用いて、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
前記（１２）に記載の半導体回路の制御方法。
（１４）前記第２の期間の後の第３の期間において、前記第３の制御信号を用いて、前記第３の記憶部に記憶されたデータを前記第１の記憶部に記憶させ、
前記第３の期間の後の第４の期間において、前記比較結果が、前記第１の記憶部に記憶されたデータと前記第２の記憶部に記憶されたデータとが一致していることを示す場合に、前記第２の制御信号を用いて、前記第２の記憶部に記憶されたデータに応じたデータを前記第３の記憶部に記憶させる
前記（１３）に記載の半導体回路の制御方法。
【符号の説明】
【０１４６】
１，１Ａ…半導体回路、７，７Ａ…ＣＰＵ、８，８Ａ…電源トランジスタ、９，９Ａ…制御部、１０，１０Ａ…回路、１１…判定回路、２０，２０Ａ，２０Ｂ…フリップフロップ、２１，２２…インバータ、２３…排他的論理和回路、３０…マスタラッチ、３１，３３，３４…インバータ、３２，３５…トランスミッションゲート、４０，４０Ａ，４０Ｂ…スレーブラッチ、４１，４６…トランスミッションゲート、４２，４２Ａ…反転論理積回路、４３，４３Ａ，４５，４５Ａ，４７，４７Ａ，４８…トランジスタ、４４，４４Ａ，４９…インバータ、５０，５０Ｂ…バルーン回路、５１，５４…トランスミッションゲート、５２…反転論理和回路、５３…インバータ、５５Ｂ…インバータ、５６Ｂ…反転論理積回路、６０，６０Ａ，６０Ｂ…記憶回路、６１Ａ，６２Ａ…インバータ、６３〜６６，６３Ａ〜６６Ａ…トランジスタ、６７，６７Ａ，６８，６８Ａ…記憶素子、７０，７０Ａ…モード制御回路、７１…排他的論理和回路、７２…論理和回路、７３…論理積回路、７３Ａ…反転論理積回路、ＢＡＬＯＯＮ，ＢＡＬＯＯＮＢ，ＣＭＰ＿ＯＵＴ，ＣＭＰ＿ＯＵＴ＿Ｖ，ＣＴＲＬ，ＥＱＬ，ＥＱＬＢ，ＩＮＩＴＩＡＬＩＺＥ，ＲＥＳＥＴ，ＲＥＳＥＴＢ，ＲＥＳＴＯＲＥ，ＲＥＳＴＯＲＥＢ，ＳＡＶＥ，ＳＡＶＥＢ，ＳＬＡＶＥ，ＳＬＡＶＥＢ，ＳＲ，ＳＲＢ，ＳＴＯＲＥ，ＶＥＲＩＦＹ，ＷＲＩＴＥ…信号、ＣＬＫ，Ｃ，ＣＢ…クロック信号、Ｄ…データ入力端子、Ｍ１…アクティブモード、Ｍ２…スリープモード、Ｍ３…ストアモード、Ｍ４…ベリファイモード、Ｍ５…リトライモード、Ｍ６…リストアモード、Ｍ７…リセットモード、Ｍ８…イニシャライズモード、Ｑ…データ出力端子、ＳＩＧ…制御信号、ＳＰＧ，ＳＰＧＢ…電源制御信号、Ｔ１…電源端子、Ｔ２…接地端子、ＶＤＤ…電源電圧、ＶＧＮＤ…接地電圧。
【図１】
2019071577.tif 000003
【図２】
2019071577.tif 000004
【図３】
2019071577.tif 000005
【図４】
2019071577.tif 000006
【図５Ａ】
2019071577.tif 000007
【図５Ｂ】
2019071577.tif 000008
【図５Ｃ】
2019071577.tif 000009
【図６Ａ】
2019071577.tif 000010
【図６Ｂ】
2019071577.tif 000011
【図６Ｃ】
2019071577.tif 000012
【図６Ｄ】
2019071577.tif 000013
【図６Ｅ】
2019071577.tif 000014
【図６Ｆ】
2019071577.tif 000015
【図６Ｇ】
2019071577.tif 000016
【図６Ｈ】
2019071577.tif 000017
【図６Ｉ】
2019071577.tif 000018
【図６Ｊ】
2019071577.tif 000019
【図７Ａ】
2019071577.tif 000020
【図７Ｂ】
2019071577.tif 000021
【図８Ａ】
2019071577.tif 000022
【図８Ｂ】
2019071577.tif 000023
【図９】
2019071577.tif 000024
【図１０Ａ】
2019071577.tif 000025
【図１０Ｂ】
2019071577.tif 000026
【図１１】
2019071577.tif 000027
【図１２】
2019071577.tif 000028
【図１３】
2019071577.tif 000029
【図１４】
2019071577.tif 000030
【図１５】
2019071577.tif 000031