(57)【要約】【課題】予期せずにシステムが電源供給停止状態になった場合であっても、正常にシステムの動作を再開することが可能な半導体集積回路を提供する。【解決手段】揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む少なくとも一つの不揮発レジスタと、不揮発レジスタの内部における揮発性データと不揮発性データとの一致・不一致の状態として、一致するならば第１の値を保持し、不一致ならば第２の値を保持する記憶領域を有する不揮発性メモリと、不揮発性メモリの不揮発レジスタの内部における一致・不一致の状態をモニターし、不揮発性メモリの状態に応じた信号を出力する監視回路と、監視回路からの信号を内部演算装置又は外部装置に出力するノードと、を備え、電源立ち上げ動作時において、不揮発性メモリが第２の値を保持する場合に、監視回路がノードにアクティブな信号を供給する半導体集積回路とする。【選択図】      図１
2014222425.tif 000002
【特許請求の範囲】
【請求項１】
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む少なくとも一つの不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態として、一致するならば第１の値を保持し、不一致ならば第２の値を保持する記憶領域を有する不揮発性メモリと、
前記不揮発性メモリの後段に設けられ、前記不揮発レジスタの内部における前記一致・不一致の状態をモニターし、前記不揮発性メモリの状態に応じた信号を出力する監視回路と、
前記監視回路から供給された信号を内部演算装置又は外部装置に出力するノードと、を備え、
電源立ち上げ動作時において、前記不揮発性メモリが前記第２の値を保持する場合、前記監視回路が前記ノードにアクティブな信号を供給することを特徴とする半導体集積回路。
【請求項２】
前記電源立ち上げ動作時に、前記アクティブ状態の信号が割り込み信号として前記内部演算装置に供給され、
前記内部演算装置は、
前記割り込み信号に応じて割り込み処理を開始することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記不揮発性メモリが有する記憶領域にはメモリ空間上のアドレスが割り付けられ、
前記不揮発性メモリは、
前記アドレスを指定する書き込み信号に応じて、指定された前記アドレスが割り付けられた前記記憶領域に保持された状態を書き換えることを特徴とする請求項１又は２に記載の半導体集積回路。
【請求項４】
前記不揮発性メモリは、
前記割り込み信号に応じて、所定のアドレスを割り付けられた前記記憶領域のデータを書き換えることを特徴とする請求項３に記載の半導体集積回路。
【請求項５】
電源の立ち下げ前の動作において、前記不揮発性メモリの前記記憶領域のうち少なくとも一つを前記第１の値にする処理を行うことを特徴とする請求項１乃至４のいずれか一項に記載の半導体集積回路。
【請求項６】
前記不揮発性メモリが含む前記記憶領域のうち少なくとも一つを隠蔽するマスク動作用不揮発性メモリを前記不揮発性メモリの後段に備え、
前記監視回路は、
前記マスク動作用不揮発性メモリが前記第１の値にセットされると、前記マスク動作用不揮発性メモリの前段にある前記記憶領域の状態は、前記記憶領域の状態に関わらず前記マスク動作用不揮発性メモリを介して前記第１の値を保持するものとみなすことを特徴とする請求項１乃至５のいずれか一項に記載の半導体集積回路。
【請求項７】
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む複数の不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態を保持する記憶領域を有する不揮発性メモリと、
前記不揮発レジスタ及び前記不揮発性メモリの内部の状態をモニターするとともに前記ノードを制御する検出回路と、
前記検出回路からの出力を内部演算装置又は外部装置に出力するノードと、を備え、
前記検出回路は、
電源立ち上げ動作時に、前記不揮発性メモリ内部における前記揮発性データと前記不揮発性データとの前記一致・不一致の状態をモニターし、前記一致・不一致の状態が不一致である場合に前記ノードをアクティブとする制御を実行することを特徴とする半導体集積回路。
【請求項８】
製造工程終了時点において前記不揮発性メモリが含む前記記憶領域の全てを前記第２の値にセットすることを特徴とする請求項１乃至７のいずれか一項に記載の半導体集積回路の製造方法。
【請求項９】
請求項１乃至７のいずれか一項に記載の半導体集積回路を含み、
前記不揮発性メモリの内部状態を表示する表示手段を備えることを特徴とするコンピュータシステム。
【請求項１０】
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む少なくとも一つの不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態として、一致するならば第１の値を保持し、不一致ならば第２の値を保持する記憶領域を有する不揮発性メモリと、
前記不揮発性メモリの後段に設けられ、前記不揮発レジスタの内部における前記一致・不一致の状態をモニターし、前記不揮発性メモリの状態に応じた信号を出力する監視回路と、
前記監視回路から供給された信号を内部演算装置又は外部装置に出力するノードと、を備えた半導体集積回路の制御方法であって、
電源立ち上げ動作時において、前記不揮発性メモリが前記第２の値を保持する場合、前記監視回路から前記ノードにアクティブな信号を供給させることを特徴とする半導体集積回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路、半導体集積回路の製造方法、コンピュータシステム及び半導体集積回路の制御方法に関する。特に、不揮発なレジスタを備えた半導体集積回路に関する。
【背景技術】
【０００２】
近年、半導体の集積度が向上するにつれ、回路が動作していないときのトランジスタのリーク電流による電力消費が問題になっている。そこで、半導体集積回路を利用していないときに、その回路の電源をオフにしてリーク電流を低減する低消費電力モードを備えた半導体集積回路が開発されている。しかしながら、半導体集積回路への電源供給が停止されると、不揮発性メモリを除いて半導体集積回路の内部状態は消去されてしまう。そのため、電源オフに先立って保持しておきたいデータを外部記憶装置等に退避する必要がある。
【０００３】
特許文献１には、電源停止時にコンピュータシステムの構成要素の状態を保存する方法と、電源が完全に遮断された後の再開機能を有するコンピュータシステムについて開示されている。特許文献１のコンピュータシステムでは、コンピュータシステム構成要素内の走査ラッチを使用して内部状態を読み取る。読み取った内部状態は、不揮発性記憶域に保存され、電源が遮断される。
【０００４】
特許文献２には、不揮発性メモリと書き込み回路とを備えたラッチ回路を備え、電源オフに先立ち、ラッチ回路の揮発的なデータを、不揮発性メモリに書き込むことを特徴とする半導体装置について開示されている。特許文献２の半導体装置では、不揮発性メモリセルを付加することにより、複雑な転送動作が不要で高速にデータを退避できる。
【０００５】
特許文献３には、不揮発ラッチの他に、ラッチへの書き込み・ロードなどの動作を監視又は制御する不揮発性メモリを備えた半導体集積回路について記載されている。特許文献３の半導体集積回路では、書き込み・ロードを行う不揮発素子の素子数を削減し、データの退避・復帰に要する電力を削減している。また、特許文献３の半導体集積回路に設けられた制御用の不揮発性メモリは、動作時にデータを書き換えることによって、意図した復帰後の状態に復帰することも可能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１８２８０３号公報
【特許文献２】特開２００４−１３３９６９号公報
【特許文献３】特願２０１１−１９７５１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１のように、内部状態を保持している回路部分から分離して配置されたメモリ素子を利用する場合、データ転送に伴う時間遅延と消費電力が発生する。特に、電源のオン／オフを高頻度で行った場合には、データ転送に伴う時間遅延や消費電力が大きくなってしまうという課題がある。
【０００８】
特許文献２の半導体集積回路では、モジュールごとに備えられた電源スイッチをオン・オフする度にそのモジュールに含まれる全ての不揮発ラッチのデータを退避・復帰する。そのため、不必要な書き込みやロードが発生し、消費する電力が大きくなるという課題がある。
【０００９】
特許文献３の半導体集積回路では、外的な要因による電源停止などによってプログラム動作時に意図せぬタイミングで停止した場合、その後の復帰は電源停止前の復帰状態と同じ状態から開始することになる。そのため、電源停止前の動作によってデータが書き換わっているときに再度プログラムコードを重複して開始すると、データの不整合などが発生する可能性もある。
【００１０】
本発明は、予期せずにシステムが電源供給停止状態になった場合であっても、正常にシステムの動作を再開することが可能な半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の半導体集積回路は、揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む少なくとも一つの不揮発レジスタと、不揮発レジスタの内部における揮発性データと不揮発性データとの一致・不一致の状態として、一致するならば第１の値を保持し、不一致ならば第２の値を保持する記憶領域を有する不揮発性メモリと、不揮発性メモリの後段に設けられ、不揮発レジスタの内部における一致・不一致の状態をモニターし、不揮発性メモリの状態に応じた信号を出力する監視回路と、監視回路から供給された信号を内部演算装置又は外部装置に出力するノードと、を備え、電源立ち上げ動作時において、不揮発性メモリが有する記憶領域のうち少なくとも一つが第２の値を保持する場合に、監視回路がノードにアクティブな信号を供給する。
【００１２】
本発明の半導体集積回路は、揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む複数の不揮発レジスタと、不揮発レジスタの内部における揮発性データと不揮発性データとの一致・不一致の状態を保持する記憶領域を有する不揮発性メモリと、不揮発レジスタ及び不揮発性メモリの内部の状態をモニターするとともにノードを制御する検出回路と、検出回路からの出力を内部演算装置又は外部装置に出力するノードと、を備え、検出回路は、電源立ち上げ動作時に、不揮発性メモリ内部における揮発性データと不揮発性データとの一致・不一致の状態をモニターし、一致・不一致の状態が不一致である場合にノードをアクティブとする制御を実行する。
【００１３】
本発明の半導体集積回路の制御方法は、揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む少なくとも一つの不揮発レジスタと、
不揮発レジスタの内部における揮発性データと不揮発性データとの一致・不一致の状態として、一致するならば第１の値を保持し、不一致ならば第２の値を保持する記憶領域を有する不揮発性メモリと、不揮発性メモリの後段に設けられ、不揮発レジスタの内部における一致・不一致の状態をモニターし、不揮発性メモリの状態に応じた信号を出力する監視回路と、監視回路から供給された信号を内部演算装置又は外部装置に出力するノードと、を備えた半導体集積回路の制御方法であって、電源立ち上げ動作時において、不揮発性メモリが有する記憶領域のうち少なくとも一つが第２の値を保持する場合に、監視回路がノードにアクティブな信号を供給する。
【発明の効果】
【００１４】
本発明の半導体集積回路によれば、予期せずにシステムの電源がオフ状態になった際であっても、不揮発レジスタ内の揮発性データが不揮発素子に正常に退避されたか否かを判定することができ、正常にシステムの動作を再開することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係る半導体集積回路の一例の概念図である。
【図２】本発明の第１の実施形態に係る不揮発性フリップフロップの概念図である。
【図３】本発明の第２の実施形態に係る半導体集積回路における入力信号とＶａｌｉｄビットからの出力信号との対応を示す関係図である。
【図４】本発明の第２の実施形態に係る半導体集積回路における入力信号とＶａｌｉｄビットからの出力信号との対応を示す関係図である。
【図５】本発明の第２の実施形態に係る半導体集積回路の正常動作時の信号チャート図である。
【図６】本発明の第２の実施形態に係る半導体集積回路において電源障害が発生した場合の信号チャート図である。
【図７】本発明の第３の実施形態に係る不揮発性フリップフロップの一例の概念図である。
【図８】本発明の第３の実施形態に係る不揮発性フリップフロップの一例の概念図である。
【図９】本発明の第４の実施形態に係る半導体集積回路の一例の概念図である。
【図１０】本発明の第５の実施形態に係る半導体集積回路の概念図である。
【図１１】本発明の第５の実施形態に係る検出回路の概念図である。
【図１２】本発明の第６の実施形態に係るコンピュータシステムの概念図である。
【図１３】本発明の実施形態に係る不揮発性フリップフロップの回路図の一例である。
【図１４】本発明の実施形態に係る半導体集積回路へのＣＬＫ発生回路の概念図である。
【図１５】本発明の実施形態に係る不揮発性素子の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００１７】
（第１の実施形態）
（構成）
まず、図１を用いて、本発明の第１の実施形態に係る半導体集積回路１の概要について説明する。
【００１８】
図１に示したように、本実施形態に係る半導体集積回路１は、不揮発レジスタ１０と、制御回路２０と、ノード３０と、を備えている。ノードから出力された信号は、半導体集積回路１には含まれない内部演算装置又は外部装置（内部演算装置／外部装置６０）に向けて出力される。
【００１９】
不揮発レジスタ１０は、同様の構成をもつ複数の不揮発性のレジスタＲ１〜Ｒｍで構成されている（ｍは自然数）。なお、これ以降、不揮発レジスタ１０に含まれるレジスタＲ１〜Ｒｍのうち特定のレジスタもしくは任意のレジスタを表す場合、レジスタＲｘと記載する（ｘは自然数）。
【００２０】
本実施形態に係る不揮発レジスタ１０は、中央演算装置であれば、プログラムカウンタやステータスレジスタ、スタックポインタなどの特殊なレジスタ、演算のオペランドに使われる汎用レジスタを含む。また、ある機能ブロック（内部モジュール）やメモリマップドＩＯのような外部モジュールを制御し、データを読み出すための周辺レジスタも含む（ＩＯ：Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）。
【００２１】
不揮発レジスタ１０に含まれるそれぞれのレジスタＲ１〜Ｒｍは、１個又は複数（ｎ個）の不揮発性フリップフロップ１１で構成されている（ｎは自然数）。なお、不揮発レジスタ１０は、不揮発ラッチで構成されていてもよい。また、これ以降、不揮発性メモリ２１は複数のレジスタを含むものとして説明する。
【００２２】
レジスタに含まれる不揮発性フリップフロップ１１に対する制御信号は、少なくとも各レジスタにおいては共通化されている。また、全てのレジスタＲ１〜Ｒｍが共通の制御信号で動作してもよい。
【００２３】
不揮発レジスタ１０に対する共通のＣＬＫ信号によって、ｎ個の不揮発性フリップフロップ１１の書き込みが実行される。また、ＷＢ信号でストアが実行され、ＬＢ信号でリストアが実行される。一般に、それぞれの不揮発レジスタ１０においてｎの値は同じであるが、場合によっては異なっていてもよい。
【００２４】
（不揮発性フリップフロップ）
図２には、不揮発性フリップフロップ１１の内部構成の一例を示した。
【００２５】
図２の不揮発性フリップフロップ１１は、外部から入力されたデータを揮発データとして保持する保持回路１３と、保持回路１３に保持されたデータを書き込むための不揮発素子１３と、を備えている。保持回路１３と不揮発素子１４との間では、相互にデータを転送し合う。
【００２６】
ロジック回路である保持回路１３の保持データは、電源をオフすると消失する。それに対し、メモリ素子である不揮発素子１４の保持データは、電源をオフしても保持される。
【００２７】
図２の不揮発性フリップフロップ１１では、ロジック回路である保持回路１３と、メモリ素子である不揮発素子１４とが一体として配置しているため、電源の遮断状態から復帰する前のデータ転送遅延が防止できる。そのため、データ転送に使用する配線や回路の電力消費を削減することができる。
【００２８】
不揮発性フリップフロップ１１には、システムのクロック信号（ＣＬＫ信号）を入力するクロック端子３１と、外部からデータを入力するための入力端子３２と、保持回路１３に保持されたデータを出力するための出力端子３３と、が設けられている。また、不揮発性フリップフロップ１１は、保持回路１３に保持されたデータを揮発性素子１４へストアすることを指示するＷＢ信号を入力するストア端子３４と、揮発素子１４に保持されたデータをリストアすることを指示するＬＢ信号を入力するリストア端子３５と、を有する。
【００２９】
なお、保持回路１３のデータＱを不揮発素子１４へ転送することを、不揮発素子１４へのストアという。ストアは、外部からのＷＢ信号によって実行される。また、不揮発素子１４のデータを保持回路１３の出力端子Ｑへ転送することを不揮発素子１４のリストアという。リストアは、外部からのＬＢ信号によって実行される。
【００３０】
また、不揮発性フリップフロップ１１の揮発性データのみを書き換えることを、書き込みという。書き込みにおいては、外部からのデータＤは、外部からのＣＬＫ信号の立ち上がりエッジもしくは立ち下りエッジをトリガーとして、不揮発性フリップフロップ１１の出力端子３３から出力されるデータＱに反映される。
【００３１】
不揮発性フリップフロップ１１で構成された不揮発レジスタ１０は、後段の制御回路２０に含まれる不揮発性メモリ２１と接続される。不揮発レジスタ１０の内部状態は、不揮発性メモリ２１内部にＶａｌｉｄビットとして記憶される。
（制御回路）
制御回路２０は、不揮発性メモリ２１と、監視回路２２と、を含む。制御回路２０は、不揮発レジスタ１０を構成するレジスタＲｘが保持する揮発データと不揮発データとの一致・不一致に関する情報（Ｖａｌｉｄビット）を保持し、そのＶａｌｉｄビットの論理和を取る回路となる。
【００３２】
（不揮発性メモリ）
不揮発性メモリ２１は、不揮発レジスタ１０の内部データの状態を保持する。具体的には、保持回路１３が揮発的に保持する揮発データと、不揮発素子１４が不揮発的に保持する不揮発データとの一致・不一致に関する情報（Ｖａｌｉｄビット）を保持する。
【００３３】
保持回路１３が保持する揮発データと、不揮発素子１４が保持する不揮発データとが一致していると判断される場合、不揮発性メモリ２１は０の状態（第１の値）を保持する。また、保持回路１３が保持する揮発データと、不揮発素子１４が保持する不揮発データとが一致しないと判断される場合、不揮発性メモリ２１は１の状態（第２の値）を保持する。すなわち、Ｖａｌｉｄビットとしては、不揮発データと揮発データとが一致する場合は０、一致していない場合は１が記録される。
【００３４】
不揮発性メモリ２１は、不揮発レジスタ１０が有するｍ個の不揮発性のレジスタＲ１〜Ｒｍに対応するように、複数の記憶領域を有する。なお、不揮発性メモリ２１を構成する記憶領域は１個であってもよい。
【００３５】
不揮発性メモリ２１が複数の記憶領域を備えている場合、ｍ個のレジスタＲ１〜Ｒｍに対して別個の記憶領域を設けてもよいし、ｍ個のレジスタＲ１〜Ｒｍのうちいくつかをグループ化したものに対して記憶領域が共有されるようにしてもよい。
【００３６】
１つの不揮発性メモリ２１を複数のレジスタＲ１〜Ｒｍで共有させる場合、複数のレジスタＲ１〜Ｒｍの中に１つでもデータが不一致となるレジスタＲｘがあると判断されれば、不揮発性メモリ２１は１の状態を記憶する。また、揮発的データと不揮発データとを読み出して比較後、一致していれば０の状態を、不一致であれば１の状態を、不揮発性メモリ２１に書き込んでもよい。
【００３７】
さらに、不揮発レジスタ１０への書き込み、ストア及びリストアの動作をモニターすることによって、比較処理を省略することが可能である。そのため、不揮発レジスタＲｘへの書き込み動作が行われたときに１状態になり、ストア・リストア動作が実行されたときに０状態にする方がより望ましい。
【００３８】
不揮発性メモリ２１の複数の記憶領域には、不揮発レジスタ１０に備えられた不揮発性フリップフロップ１１内において、保持回路１３に保持された揮発データと、揮発性素子１４に保持された不揮発データとが一致するか否かを示すＶａｌｉｄビット（一致・不一致判定ビット）が保持される。また、各レジスタＲ１〜Ｒｍのそれぞれに対してＶａｌｉｄビットを設ける場合、図１０のように、それぞれのＶａｌｉｄビットをＶＢ１、ＶＢ２、・・・、ＶＢｍのように表記する。
【００３９】
（監視回路）
また、不揮発性メモリ２１は、図１の半導体集積回路１Ａのように、監視回路２２を含む。監視回路２２は、不揮発レジスタ１０を構成するレジスタから出力される信号に対してＯＲ演算を行ってラッチする論理回路である。すなわち、監視回路２２は、Ｖａｌｉｄビットを評価し、エラー判定を実施する。
【００４０】
監視回路２２は、Ｖａｌｉｄビット信号を入力とし、少なくとも一つの１が入力されれば１を出力する論理回路を構成する。すなわち、電源立ち上げ動作時において、揮発性メモリ２１が１の状態を保持する場合に、アクティブな信号を出力する。
【００４１】
なお、不揮発性メモリ２１の各Ｖａｌｉｄビットの出力を入力とした論理回路（ＯＲ回路）を組み、電源立ち上げのタイミングで論理回路の出力をラッチすることによって、エラー検出回路になる。また、エラーを抱えたままシステムが動作し続けてＶａｌｉｄビットを書き換え続けると、Ｖａｌｉｄビットが全部０になるため、ラッチ回路を最終段に入れ、エラー出力がノンアクティブになってしまうのを防いでいる。
【００４２】
図１のような構成にすれば、制御回路２０は、監視回路２２によって一つにまとめられたＶａｌｉｄビット情報を基にノード３０には単一の信号を出力すればよく、全てのＶａｌｉｄビットから信号を出力する必要がなくなる。そのため、半導体集積回路１の動作時間や消費電力を低減することができる。
【００４３】
（ノード）
ノード３０は、外部への出力信号、もしくは、内部ＣＰＵへの割り込み要求信号をアクティブにする端子である（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）。
【００４４】
例えば、ノード３０からの出力信号がアクティブになったことを通知するデバイスが設けられていれば、そのデバイスによる情報によって、システムのユーザは不揮発レジスタ１０の内部情報を知ることができる。また、内部ＣＰＵへの割り込み要求信号がアクティブになると、エラーとなってシステム動作を停止させる構成とすれば、システムが誤作動することを防止することができる。
【００４５】
本実施形態において、ノード３０は、半導体集積回路１への電源がＯＮになるとき、すなわち、電源立ち上げ動作時に、不揮発性メモリ２１の状態が１であれば、アクティブとなって信号を出力する。ノード３０から出力された信号は、外部への出力信号又は内部ＣＰＵへの割り込み要求信号である。本実施形態においては、電源立ち上げ時に、ノード３０がアクティブとなって、この信号を出力する点に特徴を有する。
【００４６】
（動作）
次に、本発明の第１の実施形態に係る半導体集積回路１の動作について説明する。
【００４７】
図１０に示したように、レジスタＲｘに含まれる不揮発性フリップフロップ１１では、保持回路１３が保持する揮発性データと、不揮発素子１４が保持する不揮発性データとが異なると、不揮発性メモリ２１のＶａｌｉｄビットは０から１に変更される。例えば、あるレジスタＲｘに含まれる不揮発性フリップフロップ１１のうち少なくとも一つで揮発データと不揮発データとが異なれば、レジスタＲｘに対応するＶａｌｉｄビットを１の状態とする。また、不揮発性メモリ２１が含む一つの記憶領域を複数のレジスタＲｘで共有する場合、いずれかのレジスタＲｘで不揮発データと揮発データとの不一致があれば、その記憶領域に１を状態とすればよい。
【００４８】
不揮発性フリップフロップ１１が保持する揮発性データと不揮発性データとが一致し、そのレジスタＲｘに対応するＶａｌｉｄビットを状態０にセットする場合は２通りある。
【００４９】
一つは、ある不揮発性フリップフロップ１１において、不揮発素子１４から保持回路１３にデータをストアする場合である。もう一つは、不揮発性フリップフロップ１１の揮発性データを不揮発素子１４にリストアする場合である。
【００５０】
また、あるレジスタＲｘが含む不揮発性フリップフロップ１１の揮発性データと不揮発性データとが異なる場合、その不揮発性フリップフロップ１１を含むレジスタＲｘに対応するＶａｌｉｄビットは状態１にセットされる。これは、書き込み動作によって不揮発性フリップフロップ１１にデータを入力し、保持回路１３の揮発データを更新したものの、その揮発データを不揮発素子１４にストアしていない場合に相当する。すなわち、あるレジスタＲｘが含む少なくとも一つの不揮発性フリップフロップ１１の揮発性データを更新する動作によって、その不揮発性フリップフロップ１１が保持する不揮発性データと揮発性データとが異なっている場合に、対応するＶａｌｉｄビットは状態１にセットされる。
【００５１】
通常のシステム動作においては、保持回路１３へのデータの書き込み、保持回路１３から不揮発素子１４へのデータのストア、不揮発素子１４から保持回路１３へのデータのリストアが定常的に実行される。特に、電源停止動作時において、保持回路１３から不揮発素子１４へデータをストアすることによって、電源が立ち下げられても、不揮発性レジスタ１０内部にデータが保持されることになる。そのため、正常に電源が立ち下げられていれば、不揮発性メモリ２１は、０の状態を保持していることになる。それに対し、電源立ち下げが正常に実行されなかった場合、不揮発性メモリ２１は、１の状態を保持することになる。
【００５２】
（データ制御方法）
不揮発レジスタ１０の制御信号であるＷＢ信号・ＬＢ信号は、電源制御回路への電源のオン・オフ信号から生成されればよい。なお、ＣＰＵなどの中央演算回路を含み、プログラムメモリに格納された命令コードに従って、ＷＢ信号とＬＢ信号を発生させるタイミングを単一もしくは複数のコードで指定するソフトウェア制御としてもよい。その場合、コードは、図示しない記憶装置に格納しておけばよい。
【００５３】
また、ソフトウェア（プログラムコード）からも信号制御できるようにすると、意図した復帰後の状態にすることができるなど、制御の柔軟性が向上する。
【００５４】
なお、半導体集積回路１内全ての不揮発レジスタ１０を一律に制御するのではなく、不揮発レジスタ１０に所定のアドレスを割り付け、それぞれのレジスタＲｘの書き込み（ＷＥ＿ｘ）、ストア（ＷＢ＿ｘ）、リストア（ＬＢ＿ｘ）の動作を個別に制御するようにしてもよい（ｘはレジスタＲｘの末尾の番号に対応）。
【００５５】
（電源停止からの復帰動作）
次に、システムの電源を停止するときの動作について、意図した電源停止（正常時）と意図しない電源停止（異常時）との場合に分けて説明する。
【００５６】
まず、正常な電源停止においては、不揮発性メモリ２１を含む半導体集積回路１の電源をオフし、次のオン状態からの開始（復帰）に備える。そのために、正常時の電源停止では、あるレジスタＲｘが含む不揮発性フリップフロップ１１の揮発性データと不揮発性データとを一致させ、不揮発性メモリ２１を状態０にする動作をプログラムに従って実行させる。電源停止時もしくは投入時において、不揮発性メモリ２１が状態０である場合には、前回の電源停止が正常に実行されたことになる。この場合、ノード３０はアクティブとならないため、通常の電源立ち上げ動作が実行される。
【００５７】
それに対し、電源の復帰直後に不揮発性メモリ２１が状態１であった場合は、前回の電源停止が意図しないものであったと判定される。そのため、不揮発性メモリ２１が状態１であった場合、ノード３０がアクティブとなり、ノード３０から信号が出力される。ノード殻出力される信号は、外部への出力信号又は内部ＣＰＵへの割り込み要求信号である。
【００５８】
一般に、不揮発レジスタ１０に含まれる保持回路１３のデータを不揮発素子１４に退避させれば、電源を落としてもデータは不揮発レジスタ１０に保持される。また、電源を再度投入し、不揮発素子１４のデータを保持回路１３に戻すことによって、半導体集積回路１の動作を電源停止前の状態に戻すことができる。
【００５９】
しかしながら、意図せずに、保持回路１３中の揮発データを不揮発素子１４中に不揮発データとしてストアする前に電源停止した場合、レジスタＲ１〜Ｒｍが含む不揮発素子１４の中には更新前のデータが残っていることになる。このような状態で、通常時と同様に電源投入してしまうと、更新されていないデータを含む不揮発素子１４と、更新されたデータを含む不揮発素子１４と、から同時にデータをリストアしてしまうため、システム動作に異常が生じる可能性がある。
【００６０】
それに対し、本発明の第１の実施形態に係る半導体集積回路１によれば、意図しない電源停止があったことを、電源停止中もしくは電源投入時に、不揮発性メモリ２１の状態によって判定できる。そのため、意図しない電源停止後の電源投入時において、誤作動を引き起こさないようにシステムを起動することができ、システム全体が誤作動することを防止することができる。
【００６１】
本発明の第１の実施形態に係る半導体集積回路によれば、不揮発レジスタ内のデータが正常に退避される前にシステムの電源がオフ状態になると、ノードから信号が出力される。その信号は、外部への出力信号又は内部ＣＰＵへの割り込み要求信号である。
【００６２】
外部への出力信号が出力されれば、システムの電源が正常に停止されたか否かを、その出力信号によってユーザに通知することができる。そのため、ユーザに通知されたノードの状態に応じて、電源復帰後にシステムを動作させるか否かを判断できる。ノードがアクティブであった場合、電源復帰後にシステムを動作させなければ、システム全体が誤動作することを未然に防ぐことができる。
【００６３】
また、ノードから内部ＣＰＵへの割り込み要求信号が出力されれば、その割り込み要求信号によってシステム動作を自動的に停止することができる。そのため、エラーがありながらシステムを稼働させ続けることによって起こりうるシステムの誤動作を防止することができる。
【００６４】
（第２の実施形態）
次に、本発明の第２の実施形態に係る半導体集積回路２について、図３及び図４を用いて説明する。
【００６５】
図３及び図４のように、本発明の第２の実施形態に係る半導体集積回路２は、最終段にラッチ回路２４を備えたエラー検出回路２５を構成する。その他の構成は、第１の実施形態と同様である。
【００６６】
ラッチ回路２４は、電源立ち上げの瞬間に発生したエラーを保持することができる。電源投入時に不揮発性メモリ２１が１の状態であれば、ラッチ回路２４へのＬＢ信号の入力タイミングで、ノード３０がアクティブとなってノード３０を介してエラーフラッグ信号が出力される。なお、ＬＢ信号の入力タイミングは、電源をＯＮしたタイミングとなる。また、ＬＢ信号のタイミングでエラーフラッグ信号を出力すればよいため、ラッチ回路２４がノード３０の機能を兼ねてもよい。
【００６７】
例えば、半導体集積回路２に記憶装置（図示しない）を設ければ、電源をオフする前に全ての不揮発性メモリ２１からの出力が０になるようなプログラムコードを記憶装置に格納できる。記憶装置に格納されたプログラムコードによって、システムが意図しない電源停止をした際に、自動的にシステム動作を停止することができる。
【００６８】
不揮発性メモリ２１の状態は、不揮発レジスタＲｘへの書き込み（ＷＥ＿ｘ）動作が行われたときに１状態とし、ストア（ＷＢ＿ｘ）、リストア（ＬＢ＿ｘ）動作が実行されたときに０状態とすることが好ましい。
【００６９】
ラッチ回路２４は、不揮発レジスタ１０とは別個に設けられてもよいし、不揮発レジスタ１０が含む任意のレジスタＲｘに含まれるスレーブラッチであってもよい。不揮発性メモリ２１が１の状態で電源投入されると、ラッチ回路２４にＬＢ信号が入力され、ＬＢ信号ラッチ回路２４の有するいずれかのノードがアクティブとなり、ラッチ回路２４からエラーフラッグ信号が出力されることになる。
【００７０】
ラッチ回路２４は、電源立ち上げの瞬間に発生したエラーを保持する。そのため、Ｖａｌｉｄビットが１となってエラーが発生していれば、システム動作が停止される。その結果、Ｖａｌｉｄビットが１でエラーが発生しているにもかかわらず、エラーのままシステム動作が継続されてＶａｌｉｄビットを０にしてしまうという不具合を防止することができる。
【００７１】
システムの電源を正常に停止した場合、全ての不揮発レジスタ１０からの出力が０の状態になって停止する。そのため、電源再投入時には、不揮発性メモリ２１には０の状態が保持される。すなわち、電源再投入後、不揮発性メモリ２１が０を保持していることを確認すれば、システムが正常に停止されたことを把握することができる。この場合、ＬＢ信号の入力に応じて通常のリストア動作を行えばよい。
【００７２】
それに対し、意図しないシステムへの電源供給障害が発生した場合は、全ての不揮発性メモリからの出力が０にならずに電源供給が停止する。１の状態がある場合、レジスタＲｘへのストア動作（ＷＢ＿ｘ）を実行してレジスタＲｘ内部の揮発データと不揮発的データを一致させる前に、電源供給障害が発生する。そのため、電源再投入時には、不揮発性メモリ２１に含まれるいずれかのＶａｌｉｄビットＶＢｘから１の出力が得られる。すなわち、電源再投入後、不揮発性メモリ２１が１を保持していることを確認すれば、システムが異常停止したことを把握することができる。
【００７３】
また、電源投入時に不揮発性メモリ２１が１を保持している場合、ＬＢ信号の入力タイミングでエラーフラッグ信号によって割り込み動作を開始し、システム動作を一時停止すれば、システム誤動作を自動で防止できる。
【００７４】
本実施形態では、図３及び図４のように、エラーを保持するラッチ回路が設けられている。そのため、不揮発性メモリ２１中のＶａｌｉｄビットＶＢｘから、１つでも１が出力されていれば、エラーが検出されてシステム動作を停止し、アクティブ状態となったノード３０からエラーフラッグ信号を出力することができる。
【００７５】
なお、ある機能ブロック単位・実レイアウト上の回路ブロック単位でＶａｌｉｄビットをグルーピングし、そのグループ内のいずれかのＶａｌｉｄビットが１を出力していればアクティブになるノード３０を複数設定してもよい。すなわち、エラーフラッグ信号は複数あってもよい。
【００７６】
上述のエラーフラッグ信号は、外部の表示デバイスなどに接続してユーザに通知するようにしてもよい。また、エラーフラッグ信号を特定のアドレスのレジスタＲｘにデータとして保持させて、特定のアドレスのデータに関するエラーフラッグ信号をユーザに通知するようにしてもよい。さらに、エラーフラッグ信号のアクティブ状態を確認した時刻を、別途あるアドレスのデータとして記録してもよい。
【００７７】
割り込み処理に対応したＣＰＵなどの中央演算装置を有する場合は、割り込み信号をエラーフラッグ信号から生成してもよく、データの不整合などが発生しないプログラムコードのスタート時点まで戻ってシステム動作を開始するようにしてもよい。
【００７８】
（タイミングチャート）
ここで、図５及び図６のターミングチャートを用いて、信号の入力タイミングにおける保持回路１３と揮発素子１４とのデータ授受について説明する。
【００７９】
なお、図５及び図６に示すチャート図では、各信号を入力又は出力する端子がアクティブ状態になったことを、Ｙ軸方向の順方向と対応させている。したがって、図５及び図６のチャート図におけるＹ軸方向は、回路上の信号の電位（Ｈｉｇｈ、Ｌｏｗ）を限定するものではない。
【００８０】
図５及び図６において、Ｖ信号は、電源がＯＮの場合にアクティブとする。また、ＷＥ＿ｘ信号、ＶＢ＿ｘ信号、ＷＢ＿ｘ信号、ＬＢ＿ｘ信号は、それぞれ、不揮発レジスタ１０が含むレジスタＲｘへの入出力信号を示し、アクティブとなったときに信号が入力される。さらに、Ｑ＿ｘ［ｎ］は、レジスタＲｘの保持回路１３における揮発データの保持状況を示し、Ｒ＿ｘ［ｎ］は、レジスタＲｘの不揮発素子１４における不揮発データの保持状況を示す。また、図６におけるＥｒｒｏｒ信号は、エラーフラッグ信号が出力されている場合にアクティブとなる。
【００８１】
（意図した電源停止）
図５は、意図した電源停止時（正常な電源停止時）におけるタイミングチャートである。図５においては、初期状態として、電源がアクティブ（ＯＮ）であり、揮発データと不揮発データとが一致する（状態０）状態にあったものとする。
【００８２】
まず、レジスタＲｘにＷＥ＿ｘ信号が入力され（Ｔ１）、レジスタＲｘに対して新たなるデータを保持回路１３に書き込む指示が出されると、保持回路１３にデータが書き込まれ、保持回路１３の揮発データが更新される。図５には、ＷＥ＿ｘ信号に応じて、Ｑ＿ｘ［ｎ］のデータが更新される様子を示している（Ｔ２）。
【００８３】
このとき、揮発データと不揮発データは異なるため、不揮発性メモリ２１のＶａｌｉｄビットは１の状態になる。図５では、ＶＢ＿ｘがアクティブとなるように示している。なお、ＶＢ＿ｘがアクティブになるタイミングは、Ｔ１とＴ２のいずれでもよい。
【００８４】
次に、システムの電源停止指示が出されると、ＷＢ＿ｘ信号がレジスタＲｘに入力される（Ｔ３）。ＷＢ＿ｘ信号によって、保持回路１３から不揮発素子１４へのストア指示が出されると、保持回路１３から不揮発素子１４にデータがストアされる。図５には、Ｑ＿ｘ［ｎ］からＲ＿ｘ［ｎ］にデータがストアされる様子を示している（Ｔ４）。
【００８５】
ここで、電源が投入されると、リストア指示がＬＢ＿ｘ信号としてレジスタＲｘに入力され（Ｔ５）、不揮発素子１４から保持回路１４へとデータがリストアされる（Ｔ６）。
【００８６】
このように、意図した電源停止においては、保持回路１３から不揮発素子１４へのデータのストア、電源投入における不揮発素子１４から保持回路１３へのデータのリストアが正常に実行される。
【００８７】
（意図しない電源停止）
次に、図６を用いて、意図しない電源停止の場合について説明する。
【００８８】
図６は、意図しない電源停止時（異常な電源停止時）におけるタイミングチャートである。図６においては、初期状態として、電源がアクティブ（ＯＮ）であり、揮発データと不揮発データとが一致する状態（状態０）にあったものとする。
【００８９】
まず、レジスタＲｘにＷＥ＿ｘ信号が入力され（Ｔ１１）、レジスタＲｘに対して新たなるデータを保持回路１３に書き込む指示が出されると、保持回路１３にデータが書き込まれ、保持回路１３の揮発データが更新される。図６には、Ｑ＿ｘ［ｎ］のデータが更新される様子で示している（Ｔ１２）。Ｑ＿ｘ［ｎ］のデータ更新は、意図した電源停止時と同様である。
【００９０】
このとき、揮発データと不揮発データが異なることになるため、不揮発性メモリ２１のＶｌａｉｄビットは１の状態になる。図６では、ＶＢ＿ｘがアクティブとなるように示している。ＶＢ＿ｘがアクティブになる動作は、意図した電源停止時と同様である。なお、ＶＢ＿ｘがアクティブになるタイミングは、Ｔ１１とＴ１２のいずれでもよい。
【００９１】
ここで、何らかの異常によって、電源が異常停止されたとする。このとき、意図した電源停止とは異なり、ＷＢ＿ｘ信号がレジスタに入力されず、不揮発素子１４に保持された不揮発データは、電源停止時にストアされるべきデータに更新されていない状態を維持していることになる。この状態は、電源停止時においては、ＶＢ＿ｘ信号がアクティブであることによって確認できる。
【００９２】
本実施形態に係る半導体集積回路１では、レジスタＲｘの不揮発フリップフロップ１１内部において、電源停止時にストアされるべきであった揮発データと、不揮発素子１４に保持された不揮発データと、が異なることを、レジスタＲｘのＶａｌｉｄビットＶＢ＿ｘが１の状態であることから確認できる。この情報が半導体集積回路１を含むシステムを利用するユーザに通知されれば、ユーザは次回の電源投入時に通常のシステム動作を実行させないように処置することができる。そのため、保持回路１３は、一部の不揮発素子１４に保持された間違った不揮発データ（Ｒ＿ｘ［ｎ］）を、揮発データ（Ｑ＿ｘ［ｎ］）として保持回路１３にリストアすることを防止でき、システム上の誤動作が起こらないようにすることできる。
【００９３】
また、意図しない電源停止が起こったことに気づかずに電源を投入したとしても、電源投入時にＶＢ＿ｘ信号がアクティブであれば、いずれかのノードをアクティブとすることによってエラーフラッグ信号（Ｅｒｒｏｒ信号）が出力され（Ｔ１５）、システム動作が実行されない。すなわち、不揮発素子１４のデータが間違ってリストアされたとしてもエラーフラグが立つために、システムが誤動作しないように対処される。なお、Ｔ１６において、一部の不揮発データ（Ｒ＿ｘ［ｎ］）が揮発データ（Ｑ＿ｘ［ｎ］）としてリストアされると、システムの誤動作につながる。
【００９４】
ただし、全ての不揮発データ（Ｒ＿ｘ［ｎ］）が正常であることが確認され、その全ての不揮発データ（Ｒ＿ｘ［ｎ］）を揮発データ（Ｑ＿ｘ［ｎ］）としてリストアすれば、Ｔ１１においてデータ更新する前の状態にシステムを復帰することができる。
【００９５】
なお、不揮発性メモリ２１は、複数個の不揮発性メモリ２１を１つのセットとして不揮発レジスタを構成し、その不揮発レジスタにアドレスを割り付けてもよい。このようにすることで、コード（ソフトウェアプログラム）上から直接動作を制御したり、データを読み出したりできる。
【００９６】
コード上から直接制御・読み出しできれば、電源再投入後の動作において、不揮発素子１４のデータを揮発性データとしてリストアする必要のない不揮発レジスタ１０に対しては、ストア、リストア動作を実行せずに、不揮発性メモリ２１のみを０状態に書き換えることが可能である。ｎビットの不揮発レジスタ１０にストアを実行するための電力をｎｘＰとすると、不揮発性メモリ２１のみを０状態にすれば、１／ｎの消費電力でオフ前の処理を済ませることができる。なお、Ｐは１つの不揮発素子１４を書き換えるために必要な電力である。
本発明の第２の実施形態によれば、制御回路の最終段にラッチ回路を入れたエラー検出回路を設けることにより、電源投入時に検出したエラー判定を保持し続けることができる。したがって、電源投入後にシステムが動作を続けて、Ｖａｌｉｄビットを書き換え続けてしまい、Ｖａｌｉｄビットが全部０になることでエラー出力がノンアクティブになってしまうことを防止できる。
【００９７】
また、本発明の第２の実施形態に係る半導体集積回路によれば、エラーの発生時刻や、電源復帰後に得られたデータが正常動作の下で得られたか否かを判断することもできる。また、電源復帰後にエラービットの信号を割り込み信号として利用すれば、別途用意した復帰シーケンスを実行することによって、データ不整合が発生せずに正常動作が確保できる復帰プログラムから開始させることもできる。
【００９８】
（第３の実施形態）
本発明の第３の実施形態に係る半導体集積回路では、不揮発メモリ２０が有する記憶領域に所定のアドレスを割り付ける。その他の構成については、第１の実施形態と同様である。
【００９９】
なお、ＷＥ信号とは、書き込み動作を指示するイネーブル信号（ＥＮ信号）と、アドレスデータが上記の所定アドレスと一致したことを示すＭａｔｃｈ信号との論理積を取った信号である。すなわち、ＷＥ信号は、所定アドレスを有するレジスタＲｘへの書き込み動作指示信号となる。
【０１００】
不揮発メモリ２０が有する記憶領域にアドレスが割り付けられている場合において、揮発素子１４が保持する揮発データを更新する方法としては、図７及び図８に示すような方法を挙げられる。なお、以下の信号入力以外の動作は、第１の実施形態と同様である。
【０１０１】
図７では、不揮発性フリップフロップ１１の前段に論理積回路１５を設けている。図７では、不揮発性フリップフロップ１１に直接ＣＬＫ信号を入力するのではなく、論理積回路１５を介してＣＬＫ信号を入力する。すなわち、論理積回路１５にＣＬＫ信号とＷＥ信号とを入力し、それらの論理積を取ったゲーティングクロック信号を保持回路１３に入力する。
【０１０２】
図８では、不揮発性フリップフロップ１１の前段にセレクタ１６を設けている。図８では、不揮発性フリップフロップ１１に直接データＤ［ｎ］を入力するのではなく、セレクタ１６を介してデータＤ［ｎ］が入力される。すなわち、外部からのデータＤ［ｎ］と不揮発レジスタの出力Ｑ［ｎ］をセレクタ１６に入力し、ＷＥ信号によって出力を切り替えて、Ｑ［ｎ］のデータを更新する。
【０１０３】
なお、ＷＥ信号の入力によってアドレスを指定する方法は、ここで挙げた限りではなく、不揮発メモリ２０内部の記憶領域に所定のアドレスを指定できるような方法でありさえすればよい。
【０１０４】
本発明の第３の実施形態に係る半導体集積回路によれば、不揮発メモリ２０が有する記憶領域にアドレスを割り付け、ＷＥ信号をトリガーとして、指定されたアドレスのＶａｌｉｄビット情報を所定のタイミングで更新することができる。そのため、所定のタイミングで揮発データを不揮発データとしてストアすることができ、よりシステムを安定化することができる。また、エラー発生時には、エラーが発生したレジスタＲｘを特定し、そのレジスタＲｘのみを更新することが可能となるため、システムの復旧を早めることが可能となる。
【０１０５】
（第４の実施形態）
本発明の第４の実施形態に係る半導体集積回路４の制御回路２７では、図９のように、不揮発性メモリ２１と監視回路２２との間に、不揮発性のマスク動作用メモリ２６を追加している。その他の構成は、第１の実施形態と同様である。不揮発性メモリ２１と、マスク動作用メモリ２６と、監視回路２２とは、制御回路２７を構成する。
【０１０６】
マスク動作用メモリ２６は、各Ｖａｌｉｄビットの後段に追加され、図９のように不揮発性メモリ２１と別個に設けてもよいし、不揮発性メモリ２１の内部の構成要素としてもよい。
【０１０７】
マスク動作用メモリ２６は、全てのレジスタＲ１〜Ｒｍの後段に、それぞれのレジスタＲ１〜Ｒｍに対応するマスク動作用メモリ２６を設けておき、動作させるマスク動作用メモリ２６をコード上で指定すればよい。例えば、図９のように、それぞれのレジスタＲ１〜Ｒｍに対応するように、マスクＭＳＫ１〜ＭＳＫｍを設ければよい。
【０１０８】
また、全てのレジスタＲ１〜Ｒｍに共通なマスク動作用メモリ２６を設け、プログラム指定によってマスクするレジスタＲ１〜Ｒｍを選択するようにしてもよい。また、半導体集積回路４の製造段階で、予め特定のレジスタＲｘのみをマスクするように設計し、マスクするレジスタＲｘの後段のみにマスク動作用メモリ２６を設けてもよい。
【０１０９】
マスク動作用メモリ２６を含む制御回路２７では、以下の式１の論理演算が実行され、その演算結果がノード３０に出力される。なお、式１中の＊は論理積を示し、＋は論理和を示す。
【０１１０】
（出力）＝（ＶＢ１＊ＭＳＫ１）＋（ＶＢ２＊ＭＳＫ２）＋・・・（ＶＢｘ＊ＭＳＫｘ）＋・・・（ＶＢｍ＊ＭＳＫｍ）（１）
すなわち、マスク動作用メモリ２６を０の状態とするとマスクが機能し（ローアクティブ）、実際のレジスタＲｘの状態に関わらず、マスク対象となるＶａｌｉｄビットは０の状態とみなされる。
【０１１１】
電源再投入後の動作に対して、必ずしも不揮発素子１４の不揮発データをリストアする必要のないレジスタＲｘに対しては、そのレジスタＲｘに対応するマスク動作用メモリ２６（マスクＭＳＫｘ）を０の状態にセットする。そうすれば、不揮発性メモリ２１（ＶａｌｉｄビットＶＢｘ）が１の状態を保持することを隠蔽して０の状態とみなされる。
【０１１２】
本発明に係る第４の実施形態によれば、不揮発素子１４のデータをリストアする必要のない不揮発レジスタ１０が、各種電源のオン・オフパターンにおいて同一であるならば、不揮発素子１４を書き換える回数がさらに減り、さらに省電力効果が高まる。
【０１１３】
（第５の実施形態）
本発明の第５の実施形態に係る半導体集積回路５は、図１０に示したように、不揮発レジスタ１０と不揮発性メモリ２１とノード３０とに接続された検出回路５０を備えている。不揮発性メモリ２１及び検出回路５０は、制御回路２９を構成する。
【０１１４】
検出回路５０は、不揮発性メモリ２１のＶａｌｉｄビットを監視して不揮発レジスタ１０の内部状態を検知し、その内部状態に応じてノード３０を制御する。
【０１１５】
検出回路５０は、不揮発性メモリ２１のＶａｌｉｄビットが０ならば正常であると判定する。また、検出回路５０は、Ｖａｌｉｄビットが１であるならば異常があると判定し、ノード３０をアクティブにする。
【０１１６】
検出回路５０は、図１１のように、監視回路５１と、判定回路５２と、ノード制御回路５３と、記憶装置５４と、を有する。なお、検出回路５０は、Ｖａｌｉｄビットが１である場合に、半導体集積回路１が有するノード３０をアクティブにしさえすれば、その内部構成は図１１のとおりでなくてもよい。検出回路５０は、半導体集積回路１に設けられた図示しない中央演算装置の構成要素に、図１１の構成要素がもつ機能を割り当てることによって実現することができる。
【０１１７】
監視回路５１は、不揮発性メモリ２１内部のＶａｌｉｄビットを取得し、Ｖａｌｉｄビットが０であるか１であるかを監視する。監視回路５１は、第１〜４の実施形態に係る監視回路２２と同様の構成とすればよく、少なくともＯＲ回路を含む回路である。
【０１１８】
監視回路５１による監視結果は、判定回路３１に送られる。すなわち、監視回路５１は、Ｖａｌｉｄビットが１の状態であれば、Ｖａｌｉｄビットが１の状態であることを判定回路５２に伝える。
【０１１９】
判定回路５２は、監視回路５１の監視結果を基に、後述する不揮発性フリップフロップ１１のノードを制御するか否かを判定する。本実施形態に係る判定回路５２は、監視回路５１の監視結果を受け、不揮発性メモリ２１が含むＶａｌｉｄビットのうち少なくとも一つが１である場合、ノードをアクティブとする制御を実行すると判定する。
【０１２０】
ノード制御回路５３は、判定回路５２の判定結果を基に、ノード３０を制御する。本実施形態に係るノード制御回路５３は、判定回路５２の判定結果が１である場合、ノード３０をアクティブとする制御を実行する。なお、ノード制御回路５３の出力をノード３０そのものとみなしてもよい。
【０１２１】
記憶装置５４は、不揮発レジスタ１０や不揮発性メモリ２１、ノードを制御するためのプログラムコードを格納する。なお、記憶装置５４は、プログラムコード以外のデータであっても格納することができる。
【０１２２】
なお、監視回路２２がなくても、判定回路５２が、ノード３０（出力ノード）と不揮発レジスタ１０との相関を判定する機能を有し、電源投入時のみならず、あるレジスタＲｘが特定の値になったときにエラー判定の有無を実施する構成としてもよい。あるレジスタＲｘが特定になるタイミングとは、例えば、プログラムカウンタがあるコード番地に到達したときなどに設定することができる。
【０１２３】
第５の実施形態の半導体集積回路によれば、ノードの動作を検出回路が有するノード制御回路によって制御する。そのため、第２の実施形態のラッチ回路や第４の実施形態のマスク動作用メモリがなくても、プログラムコードによって、ノードから出力する信号をＶａｌｉｄビットの状態に応じて制御することができる。
【０１２４】
また、第２の実施形態のラッチ回路や第４の実施形態のマスク動作用メモリと検出回路を共存させてもよい。その場合、検出回路には、ラッチ回路やマスク動作用メモリの動作を保障する役割をもたせることができる。
【０１２５】
（第６の実施形態）
図１２に示した第６の実施形態に係るコンピュータシステム６は、本発明の第１の実施形態に係る半導体集積回路１のノード３０からの出力信号を受信し、その出力信号の情報を表示する表示手段６１を有する。なお、第６の実施形態に係るコンピュータシステム６は、第１の実施形態に係る半導体集積回路５のみならず、第２〜５の実施形態に係る半導体集積回路のいずれかとしてもよい。
【０１２６】
表示手段６１は、不揮発性メモリ２１の内部の状態（０か１）を表示し、不揮発性メモリ２１内部の状態をモニターできるようにする。特定のレジスタＲｘの状態を区別できるようにモニターできることが好ましい。例えば、コンピュータや携帯端末装置などのモニターなどを表示手段６１とし、不揮発レジスタ１０の内部情報を表示するコンピュータシステムとすることができる。
【０１２７】
表示手段６１によれば、本実施形態の半導体集積回路１を含むコンピュータシステムを使用するユーザに対して、不揮発レジスタ１０の内部情報を通知することができる。
【０１２８】
表示手段６１に０が表示されていれば、正常にシステムが停止されたことが確認できる。また、表示手段６１に１が表示されていれば、意図しない電源停止が起きたことを確認できる。
【０１２９】
表示手段６１によって通知された情報をユーザが確認できれば、次の電源投入時において、１が表示された半導体集積回路のシステム動作を止めることによって、その半導体集積回路を含むシステム全体が誤作動することを防止することができる。
【０１３０】
なお、表示手段６１は、視覚情報のみならず、聴覚情報や触覚情報、嗅覚情報、味覚情報を通知するデバイスであってもよい。
【０１３１】
（半導体集積回路の製造方法）
本発明の実施形態に係る半導体集積回路において、電源停止状態からの動作復帰には、製造直後のプログラムコードやデータが全く入っていない半導体集積回路１の初動時も含む。そのため、半導体集積回路１の製造工程の最終段階において、不揮発レジスタ１０を監視する不揮発性メモリ２１の状態を１とするように不揮発素子１４に外部磁場を印加しておいてもよい。この場合、製造直後は、初期設定でエラーが発生しているという前提で不揮発性メモリ２１の状態を１とする。
【０１３２】
不揮発性メモリ２１の状態を１にしておけば、１の状態にあるレジスタＲｘを操作しないと１が残ることになる。そのため、初期プログラムをロードして、全てのＶａｌｉｄビットが０になっていることを確認できれば、逆説的に、不揮発レジスタ１０への初期の書き込みが終了したことを確認できる。
【０１３３】
また、製造工程終了時点において不揮発性メモリ２１の状態が１になるように不揮発素子１４に外部磁場を印加しておかなくても、少なくとも初期プログラムをロードしていない工場出荷段階において不揮発レジスタへの初期の書き込みを実行し、不揮発性メモリ２１の状態を１としてもよい。工場出荷後に初期プログラムがロードされていれば、不揮発性メモリ２１の状態が０に変わっていることから、不揮発レジスタ１０への初期の書き込みが終了したことを確認できることになる。
【０１３４】
（実施例）
ここで、本発明の第１の実施形態に係る不揮発性フリップフロップ１１の一例として、図１３の不揮発性フリップフロップ１１０について説明する。なお、図１３に示した不揮発性フリップフロップ１１０は、特許文献３に記載されたものと同様の構成である。
【０１３５】
図１３を参照すると、本実施例に係る不揮発性フリップフロップ１１０は、マスタラッチ１１１と、不揮発素子１４０を含むスレーブラッチ１１２と、を備える。不揮発性フリップフロップ１１０は、通常のフリップフロップと同様に、前段のマスタラッチ１１１と、後段のスレーブラッチ１１２と、を備えるラッチ回路から成る。特に、不揮発素子１４０を含む不揮発性フリップフロップの後段回路（スレーブラッチ１１２）を不揮発ラッチともよぶ。不揮発素子１４０は、不揮発素子Ｒ１及びＲ２で構成される。
【０１３６】
（クロック発生回路）
図１４に示したクロック発生回路１１３は、本実施例に係る不揮発性フリップフロップ１１０の外部に設けられ、ＣＬＫ信号を発生させる。クロック発生回路１１３は、インバータＩＮＶ５及びＩＮＶ６を有する。なお、クロック発生回路１１３は、半導体集積回路１に含まれてもよいし、半導体集積回路１の外部に設けられたものであってもよい。
【０１３７】
不揮発性フリップフロップ１１０には、インバータＩＮＶ５の出力であるＰ１信号と、インバータＩＮＶ５及びＩＮＶ６の出力であるＰ２信号とが入力される。Ｐ１信号はＣＬＫ信号と逆相であり、Ｐ２信号はＣＬＫ信号と同相であり、それぞれ不揮発性フリップフロップ１１０のクロック信号として機能する。
【０１３８】
（マスタラッチ）
図１３に示すように、マスタラッチ１１１は、第１のクロックドインバータ１２１と、第１のインバータＩＮＶ１と、第２のクロックドインバータ１２２と、第２のインバータＩＮＶ２と、を備えている。
【０１３９】
第１のクロックドインバータ１２１は、ＰＭＯＳトランジスタＴ１及びＴ２、ＮＭＯＳトランジスタＴ３及びＴ４を含む（ＰＭＯＳ：  ｐ−Ｃｈａｎｎｅｌ  Ｍｅｔａｌ−Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ、ＮＭＯＳ：ｎ−Ｃｈａｎｎｅｌ  Ｍｅｔａｌ−Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）。
【０１４０】
ＰＭＯＳトランジスタＴ１は、ソースが電源端（ＶＤＤ）に、ドレインがＰＭＯＳトランジスタＴ２のソースに、ゲートがデータ端子Ｄに接続されている。ＰＭＯＳトランジスタＴ２は、ソースがＰＭＯＳトランジスタＴ１のドレインに、ドレインがＮＭＯＳトランジスタＴ３のドレインに、ゲートがＰ２ノードに接続されている。
【０１４１】
ＮＭＯＳトランジスタＴ３は、ドレインがＰＭＯＳトランジスタＴ２のドレインに、ソースがＮＭＯＳトランジスタＴ４のドレインに、ゲートがＰ１ノードに接続されている。ＮＭＯＳトランジスタＴ４は、ドレインがＮＭＯＳトランジスタＴ３のソースに、ソースがグランド（ＧＮＤ）に、ゲートがデータ入力端子Ｄに接続されている。
【０１４２】
第１のインバータＩＮＶ１は、第１のクロックドインバータの出力となるトランジスタＴ２とＴ３のドレインの接続点に入力が接続されている。
【０１４３】
第２のクロックドインバータ１２２は、ＰＭＯＳトランジスタＴ５及びＴ６、ＮＭＯＳトランジスタＴ７及びＴ８からなる。
【０１４４】
ＰＭＯＳトランジスタＴ５は、ソースが電源端（ＶＤＤ）に、ドレインがＰＭＯＳトランジスタＴ６のソースに、ゲートが第１のインバータＩＮＶ１の出力に接続されている。ＰＭＯＳトランジスタＴ６は、ソースがＰＭＯＳトランジスタＴ５のドレインに、ドレインがＮＯＭＳトランジスタＴ７のドレインに、ゲートがＰ１ノードに接続されている。
【０１４５】
ＮＭＯＳトランジスタＴ７は、ドレインがＰＭＯＳトランジスタＴ６のドレインに、ソースがＮＭＯＳトランジスタＴ８のドレインに、ゲートがＰ２ノードに接続されている。ＮＭＯＳトランジスタＴ８は、ドレインがＮＭＯＳトランジスタＴ７のソースに、ソースがグランド（ＧＮＤ）に、ゲートが第１のインバータＩＮＶ１の出力に接続されている。
【０１４６】
第２のインバータＩＮＶ２の入力には、第１のインバータＩＮＶ１の出力が接続されている。
【０１４７】
第１のインバータＩＮＶ１と、第２のクロックドインバータ１２２とは、保持回路１３１（双安定回路）を構成する。なお、保持回路１３１は、揮発的にデータを保持する機能を有するものの、本実施例でいうところの保持回路ではなく、マスタラッチの構成要素となる。
【０１４８】
ＣＬＫ信号がＨｉｇｈ（Ｐ１信号：Ｌｏｗ、Ｐ２信号：Ｈｉｇｈ）のとき、第２のクロックドインバータ１２２はオンとなり、インバータとして作動する。すなわち、第２のクロックドインバータ１２２は、第１のインバータＩＮＶ１とともにフリップフロップを構成する。
【０１４９】
ＣＬＫ信号がＬｏｗ（Ｐ１信号：Ｈｉｇｈ、Ｐ２信号：Ｌｏｗ）のとき、第２のクロックドインバータ１２２はオフとなり、インバータＩＮＶ１のみが機能する。このとき、データ入力端子Ｄの信号は、第１のクロックドインバータ１２１で反転され、インバータＩＮＶ１に入力されて反転される。
【０１５０】
また、ＣＬＫ信号がＨｉｇｈ（Ｐ１信号：Ｌｏｗ、Ｐ２信号：Ｈｉｇｈ）のとき、第１のクロックドインバータ１２１はオフとなり、データ入力端子Ｄの信号は第１のインバータＩＮＶ１へ伝達されない。このとき、第２のクロックドインバータ１２２がオンとなり、インバータＩＮＶ１とオン状態の第２のクロックドインバータとがフリップフロップ（双安定回路）を構成する。
【０１５１】
マスタラッチ１１１のデータは、ノードＮ１で保持される。また、インバータＩＮＶ２で反転されたデータは、ノードＮ２で保持される。
【０１５２】
ノードＮ１及びＮ２に保持されるデータは、Ｐ２信号がＨｉｇｈ（ＣＬＫ信号：Ｈｉｇｈ）のときにオン状態とされるトランジスタＴ９とＴ１０を介して、スレーブラッチ１１２の保持ノードＮ３及びＮ４にそれぞれ入力される。Ｐ２信号がＬｏｗ（ＣＬＫ信号：Ｌｏｗ）のとき、トランジスタＴ９及びＴ１０はオフし、ノードＮ１及びＮ２とスレーブラッチのノードＮ３及びＮ４とはそれぞれ電気的に非接続とされる。
【０１５３】
（スレーブラッチ）
図１３に示すように、スレーブラッチ１１２は、保持回路１３２と、不揮発素子１４０と、書き込み用トランジスタ１２５と、プリチャージ・イコライズ回路１２６と、を備えている。
【０１５４】
（保持回路）
保持回路１３２は、ＰＭＯＳトランジスタＴ１１及びＴ１３、ＮＭＯＳトランジスタＴ１２及びＴ１４を有する。トランジスタＴ１１−Ｔ１４は、本発明の実施形態に係る保持回路である保持回路１３２を形成する。
【０１５５】
保持回路１３２と不揮発素子１４０との間ではデータの授受が行われる。不揮発性フリップフロップ１１０は、保持回路１３２のデータを不揮発素子１４０へ書き込む機能と、不揮発素子１４から保持回路１３２へデータをロードする機能と、を有する。
【０１５６】
保持回路１３２は、ＰＭＯＳトランジスタＴ１１及びＮＭＯＳトランジスタＴ１２からなる第１のＣＭＯＳインバータ１２３と、ＰＭＯＳトランジスタＴ１３及びＮＭＯＳトランジスタＴ１４からなる第２のＣＭＯＳインバータ１２４と、を備えている。ＰＭＯＳトランジスタＴ１１及びＴ１３のソースは電源端（ＶＤＤ）に接続され、ＰＭＯＳトランジスタＴ１１とＴ１３のドレインは、それぞれＮＭＯＳトランジスタＴ１２とＴ１４のドレインに接続される。ＮＭＯＳトランジスタＴ１３とＴ１５のソースは、それぞれ後述する不揮発素子Ｒ１及びＲ２の第１端子に接続される。
【０１５７】
トランジスタＴ１１及びＴ１２との共通接続されたゲートは、第１のＣＭＯＳインバータ１２３の入力ノードとなり、ノードＮ４に接続されている。トランジスタＴ１１及びＴ１２の共通接続されたドレインは、第１のＣＭＯＳインバータ１２３の出力ノードとなり、ノードＮ３に接続されている。
【０１５８】
トランジスタＴ１３及びＴ１４の共通接続されたゲートは、第２のＣＭＯＳインバータ１２４の入力ノードとなり、ノードＮ３に接続されている。トランジスタＴ１３及びＴ１４の共通接続されたドレインは、第２のＣＭＯＳインバータ１２４の出力ノードとなり、ノードＮ４に接続されている。
【０１５９】
（書き込み用トランジスタ）
書き込み用トランジスタ１２５は、ＮＭＯＳトランジスタＴ１５、Ｔ１６、Ｔ１７及びＴ１８を有している。ＮＭＯＳトランジスタＴ１５とＴ１７では、ドレインが電源端（ＶＤＤ）に接続され、ソースがＮＭＯＳトランジスタＴ１６とＴ１８のドレインに接続されている。ＮＭＯＳトランジスタＴ１６とＴ１８のドレインは、ＮＭＯＳトランジスタＴ１５とＴ１７のソースに接続され、ソースはグランド（ＧＮＤ）に接続される。
【０１６０】
（不揮発素子）
不揮発素子１４０は、不揮発素子Ｒ１及びＲ２を有している。
【０１６１】
不揮発素子Ｒ１の第１端子はトランジスタＴ１２のソースに接続され、第２端子はトランジスタＴ１５とＴ１６の接続ノードＮ５に接続される。不揮発素子Ｒ２の第１端子はトランジスタＴ１４のソースに接続され、第２端子はトランジスタＴ１５とＴ１６の接続ノードＮ５と、トランジスタＴ１７とＴ１８の接続ノードＮ６と、に接続される。なお、不揮発素子Ｒ１とＲ２を強磁性トンネル接合素子（ＭＴＪ：Ｍａｇｎｅｔｉｃ  Ｔｕｎｎｅｌ  Ｊｕｎｃｔｉｏｎ）で構成する場合、互いの第３端子同士を接続する。
【０１６２】
トランジスタＴ１５及びＴ１６の共通接続されたドレイン（ノードＮ５）と、トランジスタＴ１７及びＴ１８の共通接続されたドレイン（ノードＮ６）は、互いに接続される。
【０１６３】
ノードＮ５及びＮ６の接続ノードは、ＮＭＯＳトランジスタＴ１９のドレインに接続される。ＮＯＭＳトランジスタＴ１９は、ドレインがノードＮ５及びＮ６の接続ノードに接続され、ソースがＧＮＤに接続され、ゲートが書き込み時にＬｏｗとなるＷＢ信号の入力に接続される。
【０１６４】
トランジスタＴ１９は、ＷＢ信号がＨｉｇｈのとき、すなわち書き込みしないときはオンとなり、トランジスタＴ１２とＴ１４のソースを不揮発素子Ｒ１とＲ２を介してＧＮＤに接続する。
【０１６５】
（プリチャージ・イコライズ回路）
スレーブラッチ１１２は、さらに、電源端（ＶＤＤ）とノードＮ３との間に接続されたＰＭＯＳトランジスタＴ２１と、電源端（ＶＤＤ）とノードＮ４との間に接続されたＰＭＯＳトランジスタＴ２２と、ノードＮ３とＮ４との間に接続されたＰＭＯＳトランジスタＴ２０を備える。トランジスタＴ２０〜Ｔ２２のゲートは、ＬＢ信号の入力に共通接続されている。
【０１６６】
トランジスタＴ２０〜Ｔ２２は、プリチャージ・イコライズ回路１２６を構成し、制御信号ＬＢがＬｏｗのとき、ノードＮ３とＮ４を電源電位にプリチャージ・イコライズする。
【０１６７】
（２入力ＮＯＲ回路）
スレーブラッチ１１２は、さらに、書き込み用の２入力ＮＯＲ回路ＮＯＲ１及びＮＯＲ２とを備える。２入力ＮＯＲ回路ＮＯＲ１は、ノードＮ３及びＷＢノードに入力が接続され、トランジスタＴ１６及びＴ１７のゲートに出力が接続される。２入力ＮＯＲ回路ＮＯＲ２は、ノードＮ４及びＷＢノードに入力が接続され、トランジスタＴ１８及びＴ１５のゲートに出力が接続される。ＷＢ信号がＬｏｗのとき、２入力ＮＯＲ回路ＮＯＲ１及びＮＯＲ２は、それぞれノードＮ３及びＮ４を反転した信号を出力する。
【０１６８】
（反転バッファ）
スレーブラッチ１１２は、さらに、ノードＮ３とＮ４のそれぞれに入力端子が接続された出力用のインバータＩＮＶ３とＩＮＶ４を備えている。インバータＩＮＶ３とＩＮＶ４は、反転バッファとなる。
【０１６９】
（信号）
スレーブラッチ１１２において、保持回路１３２にラッチされた相補のデータ（ノードＮ３とＮ４のデータ）は、２入力ＮＯＲ回路ＮＯＲ１及びＮＯＲ２それぞれの第１の入力に入力される。
【０１７０】
ＷＢ信号は、トランジスタＴ１９のゲートと、２入力ＮＯＲ回路ＮＯＲ１及びＮＯＲ２の第２の入力に入力される。
【０１７１】
２入力ＮＯＲ回路ＮＯＲ１の出力は、トランジスタＴ１７のゲートに接続されている。２入力ＮＯＲ回路ＮＯＲ２の出力は、トランジスタＴ１５のゲートに接続されている。
【０１７２】
ＬＢ信号は、トランジスタＴ２０−２２のゲートに入力される。ＬＢ信号がＬｏｗのとき、ノードＮ３及びＮ４は電源電位にプリチャージ・イコライズされる。
【０１７３】
出力信号Ｑは、ノードＮ３に入力が接続されたインバータＩＮＶ４から出力される。出力信号ＱＢは、ノードＮ４に入力が接続されたインバータＩＮＶ３から出力される。
【０１７４】
図１４に示したインバータＩＮＶ５及びＩＮＶ６でそれぞれ生成された相補のクロック信号となるＰ１信号及びＰ２信号は、第１及び第２のクロックドインバータに供給される。また、Ｐ２信号はトランジスタＴ９及びＴ１０のゲートにも供給される。
【０１７５】
図１３に示した不揮発性フリップフロップ１１０は、既存のフリップフロップの機能に加え、下記の２つの機能を備えている。
【０１７６】
第１に、スレーブラッチ１１２の保持回路１３２に電気的に記憶しているデータを不揮発素子Ｒ１及びＲ２へ書き込むことができる（ストア）。第２に、不揮発素子１４０（Ｒ１・Ｒ２）に蓄えられているデータを読み出し、読み出したデータをスレーブラッチ１１２の保持回路で保持することができる（リストア）。
【０１７７】
（ＭＴＪ素子）
不揮発素子Ｒ１・Ｒ２には、例えば、磁気抵抗効果を利用した強磁性トンネル接合素子（ＭＴＪ素子）が用いられる（ＭＴＪ：Ｍａｇｎｅｔｉｃ  Ｔｕｎｎｅｌ  Ｊｕｎｃｔｉｏｎ）。
【０１７８】
ＭＴＪ素子とは、磁化方向が変化する強磁性層（フリー層）と、磁化方向が固定された強磁性層（固定層）と、フリー層と固定層の間に形成される絶縁層を含む構成を備えている素子である。ＭＴＪ素子に対して膜面垂直方向に電流を流した際の抵抗値は、フリー層と固定層の磁化の方向によって変化する。フリー層の磁化と固定層の磁化が平行の場合、抵抗値は低く、フリー層の磁化と固定層の磁化が反平行の場合、抵抗値は高くなる。
【０１７９】
この性質を利用して、ＭＴＪ素子では、抵抗値もしくはフリー層の磁化の方向に論理データを対応付ける。例えば、低抵抗状態を論理値０、高抵抗状態を論理値１とすることができる。ＭＴＪ素子の書き込みは、電流磁界を用いてフリー層の磁化方向を制御する磁場書き込み方式や、スピントルク効果を利用してフリー層の磁化方向を制御するスピントルク書き込み方式によって行うことができる。
【０１８０】
なお、不揮発性フリップフロップ及び不揮発ラッチとして用いる不揮発性素子は、ＭＴＪ素子に限らず、電源をオフにした状態でも記憶状態を保持する不揮発素子でありさえすればよい。例えば、不揮発素子として、フラッシュメモリや強誘電体メモリ（ＦｅＲＡＭ）、抵抗変化型メモリ（ＲｅＲＡＭ）、相変化型メモリ（ＰＲＡＭ）を用いることができる（ＦｅＲＡＭ：Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲｅＲＡＭ：Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＰＲＡＭ：Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）。ただし、不揮発性フリップフロップ及び不揮発ラッチとして用いる不揮発性素子は、論理回路上に配置されるため、高い書き換え性能が要求される。そのため、磁気抵抗メモリ（ＭＲＡＭ）のように、劣化なく何度でも変化させることが可能な磁性状態を記憶データとして対応させるメモリが不揮発性素子として最適である。
【０１８１】
図１３の不揮発性フリップフロップ１１２に含まれる不揮発素子１４０としては、例えば、図１５に示したような磁壁移動型素子を用いることができる。図１５に断面を示した磁壁移動型素子では、スピントルク効果を利用して書き込みを行う。なお、図１５に示した磁壁移動型素子は、特許文献３に示されたものと同様の構成である。また、不揮発素子に接続されるトランジスタ（図１３のトランジスタＴ１２、Ｔ１４、Ｔ１５、Ｔ１６、Ｔ１７及びＴ１８）は、図１５においてはいずれも回路図記号で示されている。
【０１８２】
図１５に示した不揮発素子１４０は、フリー層（２０３、２１３）内の磁壁移動によってデータを保持し、磁気トンネル接合（ＭＴＪ）を利用してフリー層（２０３、２１３）の磁化状態を読み出す、３端子構造の磁壁移動型素子である。
【０１８３】
図１５の不揮発素子１４０（磁壁移動型素子）は、基板の表面又は内部に形成され、メタル層（２０６、２０７、２１６）、第１ハード層（２０４、２１４）、第２ハード層（２０５、２１５）、フリー層（２０３、２１３）、絶縁層（２０２、２１２）、リファレンス層（２０１、２１１）を含む。
【０１８４】
図１５の不揮発素子Ｒ１において、リファレンス層２０１は不揮発レジスタのトランジスタＴ１２に、第１ハード層２０４はトランジスタＴ１５とＴ１６の接続点に接続される。例えば、不揮発素子としてＭＴＪを用いる場合、図１３のノードＮ５（Ｎ６）は、不揮発素子の第１ハード層２０４（２１４）を接続するメタル層２０６（２１６）を介して接続される。
【０１８５】
第２ハード層２０５は、メタル層２０７、第２ハード層２１５及び不揮発素子Ｒ２の第１ハード層２１４を介して、トランジスタＴ１７及びＴ１８の接続点に接続される。例えば、不揮発素子としてＭＴＪを用いる場合、メタル層２０７は、図１３のノードＮ５及びＮ６の接続ノードとなって、ＮＭＯＳトランジスタＴ１９のドレインに接続される。
【０１８６】
例えば、フリー層及びハード層として垂直磁気異方性を有する磁性薄膜を利用すると、第１ハード層２０４と第２ハード層２０５の磁化方向は逆向きに固定されている。
【０１８７】
フリー層２０３の磁化は、スピン偏極電流の向きによって、図１５のＺ方向に沿って上下にコントロールできる。例えば、第１ハード層２０４から第２ハード層２０５に向かって電流を流した場合、偏極した電子は逆向きに流れ、第２ハード層２０５と同じ向きにフリー層２０３の磁化は揃う。逆に、第２ハード層２０５から第１ハード層２０４に向かって電流を流した場合、第１ハード層２０４と同じ向きにフリー層２０３の磁化は揃う。以上の作用は、不揮発素子Ｒ２についても同様である。
【０１８８】
（変形例）
本発明の別の実施例に係る不揮発性フリップフロップ１１は、マスタラッチ１１１のデータを不揮発素子１４へ書き込む機能と、不揮発素子１４からマスタラッチ１１１へデータをロードする機能を有していてもよい。また、別の実施例に係る不揮発性フリップフロップ１１は、マスタラッチ１１１のデータを不揮発素子１４へ書き込む機能と、不揮発素子１４からスレーブラッチ１１２へデータをロードする機能を有していてもよい。また、別の実施例に係る不揮発性フリップフロップ１１は、スレーブラッチ１１２のデータを不揮発素子１４へ書き込む機能と、不揮発素子１４からマスタラッチ１１１へデータをロードする機能を有していてもよい。
【０１８９】
（ストア動作）
ここで、図１３を参照して、不揮発レジスタへのストア動作を説明する。
【０１９０】
ＷＢ信号をＬｏｗとすることで、ストア動作を実行できる。
【０１９１】
不揮発素子Ｒ１及びＲ２への書き込みデータは、スレーブラッチ１１２のデータＱに対応する。
【０１９２】
インバータＩＮＶ４の出力データＱが０の場合（Ｌｏｗ）の場合、ノードＮ４はＨｉｇｈ（電源電位）、ノードＮ３はＬｏｗとなり、２入力ＮＯＲ回路ＮＯＲ２の出力はＬｏｗ、２入力ＮＯＲ回路ＮＯＲ１の出力はＨｉｇｈとなる。このとき、トランジスタＴ１６とＴ１７がオン、トランジスタＴ１５とＴ１８がオフになり、ノードＮ６（Ｈｉｇｈ）からノードＮ５（Ｌｏｗ）へ書き込み電流が流れる。
【０１９３】
その結果、不揮発素子Ｒ１は低抵抗状態、不揮発素子Ｒ２は高抵抗状態になり、不揮発素子は、データＱに対応したデータ０を記憶する。
【０１９４】
一方、データＱが１の場合（Ｈｉｇｈ）、ノードＮ３は電源電位（Ｈｉｇｈ）、ノードＮ４はＬｏｗとなり、２入力回路ＮＯＲ１の出力はＬｏｗ、２入力回路ＮＯＲ２の出力はＨｉｇｈとなる。このとき、トランジスタＴ１６とＴ１７がオフ、トランジスタＴ１５とＴ１８がオンになり、ノードＮ５（Ｈｉｇｈ）からノードＮ６（Ｌｏｗ）へ書き込み電流が流れる。
【０１９５】
その結果、不揮発素子Ｒ１は高抵抗状態、不揮発素子Ｒ２は低抵抗状態になり、不揮発素子は、データＱと対応したデータ１を記憶する。
【０１９６】
（リストア動作）
次に、図１３を参照して、不揮発レジスタからのリストア動作を説明する。
【０１９７】
ＬＢ信号をＬｏｗとすることで、リストア動作を実行できる。このとき、ＣＬＫ信号はＬｏｗである（Ｐ１信号：Ｈｉｇｈ、Ｐ２信号：Ｌｏｗ）。そのため、トランジスタＴ２０、Ｔ２１及びＴ２２はオンとなり、ノードＮ３及びＮ４はＨｉｇｈ（電源電位）にプリチャージ・イコライズされる。
【０１９８】
ノードＮ４がＨｉｇｈとなると、ノードＮ４の電位（Ｈｉｇｈ）をゲートに受けるトランジスタＴ１２はオン状態とされ、電源端（ＶＤＤ）、ノードＮ３からトランジスタＴ１２を介して不揮発素子Ｒ１に読み出し電流が流れる。
【０１９９】
また、ノードＮ４がＨｉｇｈとなると、ノードＮ３の電位（Ｈｉｇｈ）をゲートに受けるトランジスタＴ１４はオン状態とされ、電源、ノードＮ４からトランジスタＴ１４を介して不揮発素子Ｒ２に読み出し電流が流れる。
【０２００】
なお、リストア動作において、ＷＢ信号はＨｉｇｈとされ、トランジスタＴ１９がオンとされ、不揮発素子Ｒ１とＲ２に流れる読み出し電流はＧＮＤに流れ込む。これらの読み出し電流の差に応じて、ノードＮ３とノードＮ４には微小な電位差が生じる。
【０２０１】
次に、ＬＢ信号がＬｏｗからＨｉｇｈに変化すると、トランジスタ２０−２２がオフし、トランジスタＴ１１−１４の保持回路１３２（差動ラッチ）により、ノードＮ３とＮ４との間の電位差が増幅される。不揮発素子に記憶しているデータが０の場合、不揮発素子Ｒ１は低抵抗状態、不揮発素子Ｒ２は高抵抗状態であるため、ノードＮ３はＬｏｗレベル、ノードＮ４はＨｉｇｈレベルになる。ノードＮ４の電位は、インバータＩＮＶ４で反転され、出力端子ＱはＬｏｗレベルとなる。すなわち、出力端子Ｑのデータは、不揮発素子のデータに対応した０となる。
【０２０２】
一方、不揮発素子に記憶しているデータが１の場合、不揮発素子Ｒ１は高抵抗状態、不揮発素子Ｒ２は低抵抗状態であるため、ノードＮ３はＨｉｇｈレベル、ノードＮ４はＬｏｗレベルになり、出力端子ＱはＨｉｇｈレベルとなる。すなわち、出力端子Ｑのデータは、不揮発素子のデータに対応した１となる。
【０２０３】
以上が、本発明の第１の実施形態に係る実施例１の不揮発性フリップフロップ１１０に関する説明である。なお、本発明の実施形態に係る半導体集積回路は、実施例で説明した不揮発性フリップフロップ１１０を含む構成となる。
【０２０４】
以上、実施形態及び実施例を参照して本発明を説明してきたが、本発明は上記実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２０５】
上記の実施形態・実施例の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む少なくとも一つの不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態として、一致するならば第１の値を保持し、不一致ならば第２の値を保持する記憶領域を有する不揮発性メモリと、
前記不揮発性メモリの後段に設けられ、前記不揮発レジスタの内部における前記一致・不一致の状態をモニターし、前記不揮発性メモリの状態に応じた信号を出力する監視回路と、
前記監視回路から供給された信号を内部演算装置又は外部装置に出力するノードと、を備え、
電源立ち上げ動作時において、前記不揮発性メモリが前記第２の値を保持する場合、前記監視回路が前記ノードにアクティブな信号を供給することを特徴とする半導体集積回路。
（付記２）
前記不揮発性メモリは、
前記揮発性データを更新すると前記第２の値を保持し、
更新した前記揮発性データを前記不揮発性データとして前記不揮発素子に記憶させると前記第１の値を保持し、
前記不揮発素子に記憶されている前記不揮発性データを前記保持回路に復帰させると前記第１の値を保持する、ことを特徴とする付記１に記載の半導体集積回路。
（付記３）
前記電源立ち上げ動作時に、前記アクティブ状態の信号が割り込み信号として前記内部演算装置に供給され、
前記内部演算装置は、
前記割り込み信号に応じて割り込み処理を開始することを特徴とする付記１又は２に記載の半導体集積回路。
（付記４）
前記不揮発性メモリが有する記憶領域にはメモリ空間上のアドレスが割り付けられ、
前記不揮発性メモリは、
前記アドレスを指定する書き込み信号に応じて、指定された前記アドレスが割り付けられた前記記憶領域に保持された状態を書き換えることを特徴とする付記１乃至３のいずれか一項に記載の半導体集積回路。
（付記５）
前記不揮発性メモリは、
前記割り込み信号に応じて、所定の前記アドレスを割り付けられた前記記憶領域のデータを書き換えることを特徴とする付記４に記載の半導体集積回路。
（付記６）
前記不揮発性メモリは、
前記割り込み信号に応じて、所定の前記アドレスを割り付けられた前記記憶領域に前記ノードにアクティブ状態の信号が供給された時刻を記録することを特徴とする付記４又は５のいずれか一項に記載の半導体集積装置。
（付記７）
電源の立ち下げ前の動作において、前記不揮発性メモリの前記記憶領域のうち少なくとも一つを前記第１の値にする処理を行うことを特徴とする付記１乃至６のいずれか一項に記載の半導体集積回路。
（付記８）
前記電源の立ち下げ前の動作において、前記不揮発性メモリの前記記憶領域のうち全てを前記第１の値にする処理を行うことを特徴とする付記１乃至７のいずれか一項に記載の半導体集積回路。
（付記９）
前記不揮発性メモリが含む前記記憶領域のうち少なくとも一つを隠蔽するマスク動作用不揮発性メモリを前記不揮発性メモリの後段に備え、
前記監視回路は、
前記マスク動作用不揮発性メモリが前記第１の値にセットされると、前記マスク動作用不揮発性メモリの前段にある前記記憶領域の状態は、前記記憶領域の状態に関わらず前記マスク動作用不揮発性メモリを介して前記第１の値を保持するものとみなすことを特徴とする付記１乃至８のいずれか一項に記載の半導体集積回路。
（付記１０）
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む複数の不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態を保持する記憶領域を有する不揮発性メモリと、
前記不揮発レジスタ及び前記不揮発性メモリの内部の状態をモニターするとともに前記ノードを制御する検出回路と、
前記検出回路からの出力を内部演算装置又は外部装置に出力するノードと、を備え、
前記検出回路は、
電源立ち上げ動作時に、前記不揮発性メモリ内部における前記揮発性データと前記不揮発性データとの前記一致・不一致の状態をモニターし、前記一致・不一致の状態が不一致である場合に前記ノードをアクティブとする制御を実行することを特徴とする半導体集積回路。
（付記１１）
前記検出回路は、
前記電源立ち上げ動作時に前記不揮発性メモリの内部状態を監視する監視回路と、
前記監視回路の監視結果に基づいて前記揮発性データと前記不揮発性データとの前記一致・不一致の状態を判定する判定回路と、
前記判定回路の判定結果に基づいて前記ノードを制御するノード制御回路と、
前記監視回路、前記判定回路及び前記ノード制御回路の設定条件を格納する記憶回路と、を含むことを特徴とする請求項１０に記載の半導体集積回路。
（付記１２）
出荷時点において前記不揮発性メモリの有する前記記憶領域の全てが前記第２の値であることを特徴とする付記１乃至１１のいずれか一項に記載の半導体集積回路。
（付記１３）
製造工程終了時点において前記不揮発性メモリの有する前記記憶領域の全てが前記第２の値であることを特徴とする付記１乃至１１のいずれか一項に記載の半導体集積回路。
（付記１４）
製造工程終了時点において前記不揮発性メモリの有する前記記憶領域の全てを前記第２の値にセットすることを特徴とする付記１乃至１１のいずれか一項に記載の半導体集積回路の製造方法。
（付記１５）
請求項１乃至１３のいずれか一項に記載の半導体集積回路を含み、
前記不揮発性メモリの内部状態を表示する表示手段を備えることを特徴とするコンピュータシステム。
（付記１６）
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む少なくとも一つの不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態として、一致するならば第１の値を保持し、不一致ならば第２の値を保持する記憶領域を有する不揮発性メモリと、
前記不揮発性メモリの後段に設けられ、前記不揮発レジスタの内部における前記一致・不一致の状態をモニターし、前記不揮発性メモリの状態に応じた信号を出力する監視回路と、
前記監視回路から供給された信号を内部演算装置又は外部装置に出力するノードと、を備えた半導体集積回路の制御方法であって、
電源立ち上げ動作時において、前記不揮発性メモリが前記第２の値を保持する場合に、前記監視回路から前記ノードにアクティブな信号を供給させることを特徴とする半導体集積回路の制御方法。
（付記１７）
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む複数の不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態を保持する記憶領域を有する不揮発性メモリと、
前記不揮発レジスタ及び前記不揮発性メモリの内部の状態をモニターするとともに前記ノードを制御する検出回路と、
前記検出回路からの出力を内部演算装置又は外部装置に出力するノードと、を備えた半導体集積回路の制御方法であって、
電源立ち上げ動作時に、前記不揮発性メモリ内部における前記揮発性データと前記不揮発性データとの前記一致・不一致の状態をモニターし、前記一致・不一致の状態が不一致である場合に前記ノードをアクティブとする制御を前記検出回路に実行させることを特徴とする半導体集積回路の制御方法。
（付記１８）
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む少なくとも一つの不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態として、一致するならば第１の値を保持し、不一致ならば第２の値を保持する記憶領域を有する不揮発性メモリと、
前記不揮発性メモリの後段に設けられ、前記不揮発レジスタの内部における前記一致・不一致の状態をモニターし、前記不揮発性メモリの状態に応じた信号を出力する監視回路と、
前記監視回路から供給された信号を内部演算装置又は外部装置に出力するノードと、を備えた半導体集積回路の制御プログラムであって、
電源立ち上げ動作時において、前記不揮発性メモリが前記第２の値を保持する場合、前記監視回路から前記ノードにアクティブな信号を供給させる処理をコンピュータに実行させることを特徴とする半導体集積回路の制御プログラム。
（付記１９）
揮発性データを保持する保持回路と、不揮発性データを保持する不揮発素子と、を含む複数の不揮発レジスタと、
前記不揮発レジスタの内部における前記揮発性データと前記不揮発性データとの一致・不一致の状態を保持する記憶領域を有する不揮発性メモリと、
前記不揮発レジスタ及び前記不揮発性メモリの内部の状態をモニターするとともに前記ノードを制御する検出回路と、
前記検出回路からの出力を内部演算装置又は外部装置に出力するノードと、を備えた半導体集積回路の制御プログラムであって、
電源立ち上げ動作時に、前記不揮発性メモリ内部における前記揮発性データと前記不揮発性データとの前記一致・不一致の状態をモニターし、前記一致・不一致の状態が不一致である場合、前記ノードをアクティブとする制御を実行する処理をコンピュータに実行させることを特徴とする半導体集積回路の制御プログラム。
【符号の説明】
【０２０６】
１、２、４、５    半導体集積回路
１０    不揮発レジスタ
１１    不揮発性フリップフロップ
１３    保持回路
１４    不揮発素子
１５    論理積回路
１６    セレクタ
２０    制御回路
２１    不揮発性メモリ
２２    監視回路
２４    ラッチ回路
２５    エラー検出回路
２６    マスク動作用メモリ
２７、２９    制御回路
３０    ノード
３１    クロック端子
３２    入力端子
３３    出力端子
３４    ストア端子
３５    リストア端子
５０    検出回路
５１    監視回路
５２    判定回路
５３    ノード制御回路
５４    記憶装置
６０    内部演算装置／外部装置
６１    表示手段
１１０    不揮発性フリップフロップ
１１１    マスタラッチ
１１２    スレーブラッチ
１１３    クロック発生回路
１２１    第１のクロックドインバータ
１２２    第２のクロックドインバータ
１２３    第１のＣＭＯＳインバータ
１２４    第２のＣＭＯＳインバータ
１２５    書き込み用トランジスタ
１２６    プリチャージ・イコライズ回路
１３１、１３２    保持回路
１４０    不揮発素子
２０１    リファレンス層
２０３    フリー層
２０４、２１４    第１ハード層
２０５、２１５    第２ハード層
２０６、２０７    メタル層
【図１】
2014222425.tif 000003
【図２】
2014222425.tif 000004
【図３】
2014222425.tif 000005
【図４】
2014222425.tif 000006
【図５】
2014222425.tif 000007
【図６】
2014222425.tif 000008
【図７】
2014222425.tif 000009
【図８】
2014222425.tif 000010
【図９】
2014222425.tif 000011
【図１０】
2014222425.tif 000012
【図１１】
2014222425.tif 000013
【図１２】
2014222425.tif 000014
【図１３】
2014222425.tif 000015
【図１４】
2014222425.tif 000016
【図１５】
2014222425.tif 000017