(57)【要約】【課題】信号遅延検出用回路を構成する排他的論理和回路自体が故障した場合に、信号の遅延を正しく検出することができない。【解決手段】機能不全事前検出回路１２は、ＦＦ０の後段に設けられるＦＦ１のデータ入力端子への入力データを遅延させる遅延回路ＤＬと、遅延回路ＤＬの出力を受けるＦＦＴと、ＦＦ１の出力とＦＦＴの出力とを比較する比較器ＣＭＰとを含む。機能不全事前検出回路１２には、機能不全事前検出回路１２の動作テスト時には、テストデータｔｖ１と、テストデータｔｖ２が入力される。テストデータｔｖ２は、遅延回路ＤＬに入力される。比較器ＣＭＰは、動作テスト時には、テストデータｔｖ１と、ＦＦＴの出力とを比較する。【選択図】図１
2014109453.tif 000002
【特許請求の範囲】
【請求項１】
第１のフリップフロップと、
前記第１のフリップフロップの後段に設けられる第２のフリップフロップと、
前記第２のフリップフロップのデータ入力端子へのルートと分岐したルートに設けられた機能不全事前検出回路とを備え、
前記機能不全事前検出回路は、
前記第２のフリップフロップのデータ入力端子への入力データを遅延させる遅延素子と、
前記遅延素子の出力を受ける第３のフリップフロップと、
前記第２のフリップフロップの出力と前記第３のフリップフロップの出力とを比較する比較器とを含み、
前記機能不全事前検出回路には、前記機能不全事前検出回路の動作テスト時には、第１のテストデータと、第２のテストデータが入力され、前記第２のテストデータは、前記遅延素子に入力され、
前記比較器は、前記動作テスト時には、前記第１のテストデータと、前記第３のフリップフロップの出力とを比較する、半導体装置。
【請求項２】
前記機能不全事前検出回路は、
前記動作テスト時に、前記第２のテストデータを前記遅延素子へ出力し、通常動作時には、前記入力データを前記遅延素子へ出力する第１のセレクタと、
前記動作テスト時に、前記第１のテストデータを前記比較器へ出力し、前記通常動作時には、前記第２のフリップフロップの出力を前記比較器へ出力する第２のセレクタとを含む、請求項１記載の半導体装置。
【請求項３】
前記半導体装置は、
前記比較器の比較結果が不一致の場合に、前記第１のフリップフロップおよび前記第２のフリップフロップへの電力供給を停止させるためのスイッチを備える、請求項２記載の半導体装置。
【請求項４】
前記半導体装置は、各々が、別個の電源電圧で動作する複数個の回路ブロックを備え、
前記スイッチは、前記比較器の比較結果が不一致の場合に、前記第１のフリップフロップおよび前記第２のフリップフロップを含む回路ブロックへの電力供給を停止させる、請求項３記載の半導体装置。
【請求項５】
前記半導体装置は、デュアルロックステップ方式のマイクロコンピュータであり、
第１のＣＰＵコアと、
第２のＣＰＵコアと、
前記第１のＣＰＵコアの演算結果と前記第２のＣＰＵコアの演算結果を比較する比較器とを備える、請求項４記載の半導体装置。
【請求項６】
前記比較器の比較結果が不一致の場合、前記第１のＣＰＵコアおよび前記第２のＣＰＵコアに割込みが通知され、
前記第１のＣＰＵコアは、前記スイッチを制御して電力供給を停止させる、請求項５記載の半導体装置。
【請求項７】
前記比較器の比較結果を表わす信号が、直接前記スイッチに送られて、前記電力供給が停止させる、請求項４記載の半導体装置。
【請求項８】
前記比較器の比較結果を表わす信号が前記半導体装置の外部へ送られて、外部からの制御によって前記電源供給が停止させる、請求項４記載の半導体装置。
【請求項９】
第１のフリップフロップと、
前記第１のフリップフロップの後段に設けられる第２のフリップフロップと、
前記第２のフリップフロップのデータ入力端子へのルートと分岐したルートに設けられた機能不全事前検出回路とを備え、
前記機能不全事前検出回路は、
前記第２のフリップフロップのデータ入力端子への入力データを遅延させる直列接続された複数段の遅延素子と、
各々が、各遅延素子の出力を受ける複数の第３のフリップフロップと、
各々が、前記第２のフリップフロップの出力と対応の第３のフリップフロップの出力とを比較する複数の比較器とを含み、
前記機能不全事前検出回路には、前記機能不全事前検出回路の動作テスト時には、第１のテストデータと、第２のテストデータが入力され、前記第２のテストデータは、前記複数段の遅延素子の初段に入力され、
前記比較器は、前記動作テスト時には、前記第１のテストデータと、前記対応の第３のフリップフロップの出力とを比較する、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、たとえば温度上昇による信号の遅延による機能不全のリスクを検出する機能を有する半導体装置に関する。
【背景技術】
【０００２】
半導体装置の内部の回路に何らかの機能不全が発生し電源とグランドが低抵抗性ショートし、その結果温度が上昇し、内部の回路内での信号の伝達が遅延することがある。
【０００３】
このような信号の遅延を検出するために、たとえば、特許文献１（特開２００８−２５６４９１号公報）に記載された信号遅延検出用回路は、少なくとも１つの信号伝播遅延回路（１）と、信号伝播遅延回路（１）から出力された信号（Ｂ）と、信号伝播遅延回路（１）の入力部から分岐した信号伝達経路を通過した信号Ｃとを受けて信号を出力する排他的論理和回路（Ｃ）とを有する遅延検出用ユニットを１つまたは複数備える。排他的論理和回路（Ｃ）から出力されるデジタル信号を用いて信号伝播遅延回路（１）における異常の有無を判定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２５６４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、信号遅延検出用回路を構成する排他的論理和回路（Ｃ）自体が故障した場合に、信号の遅延を正しく検出することができないという問題がある。
【０００６】
また、特許文献１では、２つのフリップフロップ間の信号の遅延を検出する構成については開示されていない。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかであろう。
【課題を解決するための手段】
【０００８】
本発明の一実施形態によれば、機能不全事前検出回路は、第１のフリップフロップの後段に設けられる第２のフリップフロップのデータ入力端子への入力データを遅延させる遅延素子と、遅延素子の出力を受ける第３のフリップフロップと、第２のフリップフロップの出力と第３のフリップフロップの出力とを比較する比較器とを含む。機能不全事前検出回路には、機能不全事前検出回路の動作テスト時には、第１のテストデータと、第２のテストデータが入力され、第２のテストデータは、遅延素子に入力される。比較器は、動作テスト時には、第１のテストデータと、第３のフリップフロップの出力とを比較する。
【発明の効果】
【０００９】
本発明の一実施形態によれば、信号の遅延を検出する回路自体の故障を検出することができるので、温度異常などによる信号の遅延を正しく検出することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態のマイコンの一部の構成を表わす図である。
【図２】通常動作時における、正常時の動作を説明するための図である。
【図３】通常動作時における、機能不全事前検出時の動作を説明するための図である。
【図４】第１の実施形態のマイコンの構成を表わす図である。
【図５】マイコン１による機能不全事前検出の手順を表わすフローチャートである。
【図６】図５のステップＳ２０２における機能不全事前検出回路自体の故障を検出する手順を表わすフローチャートである。
【図７】テスト動作時における機能不全事前検出回路が故障しているか否かの判定方式を説明するための図である。
【図８】テスト動作時における機能不全事前検出回路が故障しているか否かの判定方式を説明するための図である。
【図９】テスト動作時における機能不全事前検出回路が故障しているか否かの判定方式を説明するための図である。
【図１０】テスト動作時における機能不全事前検出回路が故障しているか否かの判定方式を説明するための図である。
【図１１】第２の実施形態のマイコンの一部の構成を表わす図である。
【図１２】通常動作時における、正常時の動作を説明するための図である。
【図１３】通常動作時における、機能不全事前検出時の動作の例を説明するための図である。
【図１４】通常動作時における、機能不全事前時の動作の別の例を説明するための図である。
【図１５】通常動作時における、機能不全事前時の動作の別の例を説明するための図である。
【図１６】第３の実施形態のマイコンの構成を表わす図である。
【図１７】第４の実施形態のマイコンの構成を表わす図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を用いて説明する。
［第１の実施形態］
図１は、第１の実施形態のマイコンの一部の構成を表わす図である。
【００１２】
図１を参照して、マイコンは、機能回路として、フリップフロップＦＦ０と、論理回路１１と、フリップフロップＦＦ１と、フリップフロップＦＦ２とを備える。
【００１３】
マイコン１は、フリップフロップＦＦ０とフリップフロップＦＦ１との間のルートの分岐ルートに設けられる機能不全事前検出回路１２を備える。機能不全事前検出回路１２は、セレクタＳＬ２と遅延回路ＤＬ１とフリップフロップＦＦＴとからなる遅延側経路と、セレクタＳＬ１の基準側経路と、遅延側経路と基準側経路との其々からの信号を比較する比較器ＣＭＰとを備える。
【００１４】
フリップフロップＦＦ０は、通常動作時に実データが入力されるデータ入力端子と、
クロックＣＬＫが入力される入力端子と、出力端子とを有する。
【００１５】
論理回路１１は、フリップフロップＦＦ０の出力端子から出力されるデータを受けて、データの論理演算などを行なう。
【００１６】
論理回路１１の出力は２つに分岐し、一方がフリップフロップＦＦ１と接続し、他方が機能不全事前検出回路１２のセレクタＳＬ２と接続する。
【００１７】
フリップフロップＦＦ１は、通常動作時に論理回路１１の出力を受けるデータ入力端子と、クロックＣＬＫが入力されるクロック端子と、出力端子とを有する。
【００１８】
フリップフロップＦＦ１の出力は２つに分岐し、一方がフリップフロップＦＦ２と接続し、他方が機能不全事前検出回路１２のセレクタＳＬ１と接続する。
【００１９】
フリップフロップＦＦ２は、通常動作時にフリップフロップＦＦ１の出力を受けるデータ入力端子と、クロックＣＬＫが入力されるクロック端子と、出力端子とを有する。
【００２０】
セレクタＳＬ２は、論理回路１１から出力されるデータと、テストデータｔｖ２とを受ける。セレクタＳＬ２は、テストモード信号ｔｍが活性化されている場合には、テストデータｔｖ２を遅延回路ＤＬへ出力する。セレクタＳＬ２は、テストモード信号ｔｍが非活性化されている場合には、論理回路１１から出力されるデータを遅延回路ＤＬへ出力する。
【００２１】
遅延回路ＤＬは、セレクタＳＬ２の出力信号を遅延させる。遅延回路ＤＬによる遅延量は、動作保障温度を外れた場合に、比較器ＣＭＰで不良が判定できるような値に設定されている。
【００２２】
フリップフロップＦＦＴは、遅延回路ＤＬの出力を受けるデータ入力端子と、クロックＣＬＫが入力されるクロック端子と、出力端子とを有する。  
【００２３】
セレクタＳＬ１は、フリップフロップＦＦ１から出力されるデータと、テストデータｔｖ１とを受ける。セレクタＳＬ１は、テストモード信号ｔｍが活性化されている場合には、テストデータｔｖ１を比較器ＣＭＰへ出力する。セレクタＳＬ１は、テストモード信号ｔｍが非活性化されている場合には、フリップフロップＦＦ１から出力されるデータを比較器ＣＭＰへ出力する。
【００２４】
比較器ＣＭＰは例えばＸＮＯＲ回路であり、セレクタＳＬ１の出力信号と、フリップフロップＦＦＴの出力信号とが一致したときには、比較結果信号ＤＳを「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳを「Ｌ」レベルに設定する。
【００２５】
すなわち、比較器ＣＭＰは、テスト動作時には、テストデータｔｖ１と、遅延回路ＤＬおよびフリップフロップＦＦＴを経由したテストデータｔｖ２とが一致したときには、比較結果信号ＤＳを「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳを「Ｌ」レベルに設定する。
【００２６】
比較器ＣＭＰは、通常動作時には、フリップフロップＦＦ１を経由した実データと、遅延回路ＤＬおよびフリップフロップＦＦＴを経由した実データとが一致したときには、比較結果信号ＤＳを「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳを「Ｌ」レベルに設定する。
【００２７】
図１では、セレクタＳＬ１はフリップフロップＦＦ１の後段に配置している。かかる配置を行うことで、フリップフロップＦＦ１からフリップフロップＦＦ２の経路での動作に影響を及ぼすことなく、機能不全事前検出テストを実施することが可能となる。フリップフロップＦＦ１からフリップフロップＦＦ２の経路での動作に支障を生じない場合は、フリップフロップＦＦ１の前段にセレクタＳＬ１を配置し、遅延側経路と同様の配置順序としても良い。
【００２８】
図２は、通常動作時における、正常時の動作を説明するための図である。
図２を参照して、フリップフロップＦＦ１のデータ入力端子には、Ｃ点のデータが入力される。Ｃ点のデータは、クロックＣＬＫの立ち上りエッジ＃０に対して、ｄ０の時間だけ遅れている。フリップフロップＦＦ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｃ′点のデータ）を「Ｈ」レベルに変化させる。
【００２９】
一方、フリップフロップＦＦＴのデータ入力端子には、Ｂ点のデータが入力される。Ｂ点のデータは、遅延回路ＤＬによってＣ点のデータよりもｄ１の時間だけ遅れている。  フリップフロップＦＦＴは、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｂ′点のデータ）を「Ｈ」レベルに変化させる。  
【００３０】
比較器ＣＭＰは、Ｃ′点のデータとＢ′点のデータとを比較する。Ｃ′点のデータとＢ′点のデータとは常に一致するので、比較結果信号ＤＳは常に「Ｈ」レベルを維持する。
【００３１】
図３は、通常動作時における、機能不全事前検出時の動作を説明するための図である。
図３を参照して、フリップフロップＦＦ１のデータ入力端子には、Ｃ点のデータが入力される。Ｃ点のデータは、クロックＣＬＫの立ち上りエッジ＃０に対して、ｄ０′の時間だけ遅れている。フリップフロップＦＦ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｃ′点のデータ）を「Ｈ」レベルに変化させる。
【００３２】
一方、フリップフロップＦＦＴのデータ入力端子には、Ｂ点のデータが入力される。Ｂ点のデータは、遅延回路ＤＬによってＣ点のデータよりもｄ１′の時間だけ遅れている。
【００３３】
フリップフロップＦＦＴは、動作保証温度を外れたことによって、クロックＣＬＫの立ち上りエッジ＃２に同期して、出力（Ｂ′点のデータ）を「Ｈ」レベルに変化させる。  
【００３４】
比較器ＣＭＰは、Ｃ′点のデータとＢ′点のデータとを比較する。  Ｃ′点のデータとＢ′点のデータとは、クロックＣＬＫの立ち上りエッジ＃１から立ち上りエッジ＃２までの期間不一致となるので、この期間は、比較結果信号ＤＳが「Ｌ」レベルとなる。
【００３５】
図４は、第１の実施形態のマイコン１の構成を表わす図である。
図４を参照して、マイコン１は、デュアルロックステップ方式のマイクロコンピュータであり、電源Ａ回路群８１と、電源Ｂ回路群８２と、電源Ｃ回路群８３と、レギュレータ３７と、制御回路４１と、電源Ａスイッチ４２と、電源Ｂスイッチ４３と、電源Ｃスイッチ４４とを備える。
【００３６】
電源Ａ回路群８１は、メインのＣＰＵコア２と、回路＃１とを備える。
メインのＣＰＵコア２は、割込コントローラ３２、システムレジスタ３１、およびシステムレジスタ３３を含む。
【００３７】
回路＃１は、回路＃１内の機能回路を構成する２つのフリップフロップＦＦ０，ＦＦ１間のルートの分岐ルートに設けられる機能不全事前検出回路１２−１を含む。
【００３８】
電源Ｂ回路群８２は、チェック用のＣＰＵコア３と、比較器３６と、回路＃２とを備える。
【００３９】
回路＃２は、回路＃２内の機能回路を構成する２つのフリップフロップＦＦ０，ＦＦ１間のルートの分岐ルートに設けられる機能不全事前検出回路１２−２を含む。
【００４０】
チェック用のＣＰＵコア３は、割込コントローラ３５、およびシステムレジスタ３４を含む。
【００４１】
電源Ｃ回路群８３は、回路＃３と、回路＃４とを備える。
回路＃３は、回路＃３内の機能回路を構成する２つのフリップフロップＦＦ０，ＦＦ１間のルートの分岐ルートに設けられる機能不全事前検出回路１２−３を含む。回路＃４は、回路＃４内の機能回路を構成する２つのフリップフロップＦＦ０，ＦＦ１間のルートの分岐ルートに設けられる機能不全事前検出回路１２−４を含む。
【００４２】
レギュレータ３７は、外部から供給する電源電圧から電源Ａ回路群８１への電源電圧を生成して、生成した電源電圧を電源Ａスイッチ４２を介して電源Ａ回路群８１へ供給する。レギュレータ３７は、外部から供給する電源電圧から電源Ｂ回路群８２への電源電圧を生成して、生成した電源電圧を電源Ｂスイッチ４３を介して電源Ｂ回路群８２へ供給する。レギュレータ３７は、外部から供給する電源電圧から電源Ｃ回路群８３への電源電圧を生成して、生成した電源電圧を電源Ｃスイッチ４４を介して電源Ｃ回路群８３へ供給する。
【００４３】
メインのＣＰＵコア２とチェック用のＣＰＵコア３は、同一の処理を実行する。メインのＣＰＵコア２の処理結果を表わす信号と、チェック用のＣＰＵコア３の処理結果を表わす信号は、比較器３６へ送られる。比較器３６は、２つのＣＰＵコア２，３の処理結果を表わす信号を比較して、比較結果を表わす信号を端子ＰＤを通じてマイコン１の外部のシステムへ送る。
【００４４】
回路＃１の機能不全事前検出回路１２−１、回路＃２の機能不全事前検出回路１２−２、回路＃３の機能不全事前検出回路１２−３、および回路＃４の機能不全事前検出回路１２−４のそれぞれの比較結果信号ＤＳは、メインのＣＰＵコア２内の割込コントローラ３２およびチェック用のＣＰＵコア３内の割込コントローラ３５に送られる。割込コントローラ３２および割込コントローラ３５は、比較結果信号ＤＳが「Ｌ」レベルとなったときに、機能不全のリスクを知らせる割込みが通知されたと認識する。
【００４５】
システムレジスタ３３からテストモード信号ｔｍ、テストデータｔｖ１、およびテストデータｔｖ２が、回路＃１の機能不全事前検出回路１２−１、回路＃２の機能不全事前検出回路１２−２、回路＃３の機能不全事前検出回路１２−３および回路＃４の機能不全事前検出回路１２−４のうちのいずかれかに送られる。
【００４６】
メインのＣＰＵコア２は、システムレジスタ３１から電源Ｃスイッチ４４、電源Ｂスイッチ４３の各々に切り換え信号を送る。電源Ｃスイッチ４４への切り換え信号が「Ｌ」レベルの場合には、電源Ｃスイッチ４４はオフとなり、電源Ｃスイッチ４４への切り換え信号が「Ｈ」レベルの場合には、電源Ｃスイッチ４４はオンとなる。電源Ｂスイッチ４３への切り換え信号が「Ｌ」レベルの場合には、電源Ｂスイッチ４３はオフとなり、電源Ｂスイッチ４３への切り換え信号が「Ｈ」レベルの場合には、電源Ｂスイッチ４３はオンとなる。
【００４７】
また、メインのＣＰＵコア２は、システムレジスタ３１から制御回路４１に切り換え信号を送る。また、チェック用のＣＰＵコア３も、システムレジスタ３４から制御回路４１に切り換え信号を送る。制御回路４１の切り換え信号が「Ｌ」レベルの場合には、制御回路４１は、電源Ａスイッチ４２をオフにし、制御回路４１への切り換え信号が「Ｈ」レベルの場合には、制御回路４１は、電源Ａスイッチ４２をオンとする。
【００４８】
メインのＣＰＵコア２は、割込コントローラ３２が機能不全事前検出回路１２−１から機能不全のリスクを知らせる割込を受信した場合には、制御回路４１への切り替え信号を「Ｌ」レベルに設定する。メインのＣＰＵコア２は、割込コントローラ３２が機能不全事前検出回路１２−２から機能不全のリスクを知らせる割込を受信した場合には、電源Ｂスイッチ４３への切り替え信号を「Ｌ」レベルに設定する。メインのＣＰＵコア２は、割込コントローラ３２が機能不全事前検出回路１２−３から機能不全のリスクを知らせる割込を受信した場合には、電源Ｃスイッチ４４への切り替え信号を「Ｌ」レベルに設定する。メインのＣＰＵコア２は、割込コントローラ３２が機能不全事前検出回路１２−４から機能不全のリスクを知らせる割込を受信した場合には、電源Ｃスイッチ４４への切り替え信号を「Ｌ」レベルに設定する。
【００４９】
また、メインのＣＰＵコア２は、割込コントローラ３２が機能不全のリスクを知らせる割込みを受信した場合には、システムレジスタ３１から端子ＰＳを通じてマイコン１の外部のシステムへ機能不全のリスクの発生を知らせる信号を出力する。
【００５０】
図５は、マイコン１による機能不全事前検出の手順を表わすフローチャートである。
マイコン１が搭載されるシステムの電源がオンとなる。また、電源Ａスイッチ４２、電源Ｂスイッチ４３、および電源Ｃスイッチ４４がオンとなり、レギュレータ３７から電源Ａ回路群８１の回路、電源Ｂ回路群８２の回路、電源Ｃ回路群８３の回路に電源電圧が供給される（ステップＳ２０１）。
【００５１】
次に、メインのＣＰＵコア２は、マイコン１内に設けられた１個以上の機能不全事前検出回路１２自体が故障しているか否かが判定する。機能不全事前検出回路１２自体の故障判定はシステムの電源オン直後に限定されず、機能不全のリスク検出した際等に機能不全事前検出回路１２が故障していないことを確認するための故障判定を行うのであっても良い。判定方式については後述する。
【００５２】
故障と判定された場合には（ステップＳ２０２でＹＥＳ）、メインのＣＰＵコア２は、故障が発生したことを表わす信号を端子ＰＳを通じてシステムへ送る（ステップＳ２０３）。
【００５３】
故障と判定されなかった場合には（ステップＳ２０２でＮＯ）、メインのＣＰＵコア２は、マイコン１全体を通常動作させる（ステップＳ２０４）。
【００５４】
機能不全事前検出回路１２が、機能不全のリスク（つまり、前段のフリップフロップから後段のフリップフロップへの信号の伝送遅延が増大）を検出しなかった場合には、図２に示すように、機能不全事前検出回路１２から出力される比較結果信号ＤＳは「Ｈ」レベルとなる。
【００５５】
機能不全事前検出回路１２が、機能不全のリスクを検出した場合には（ステップＳ２０５でＹＥＳ）、機能不全事前検出回路１２から出力される比較結果信号ＤＳがＣＬＫの周期Ｔの整数倍以上の期間だけ「Ｌ」レベルとなる（ステップＳ２０６）。
【００５６】
メインのＣＰＵコア２の割込コントローラ３２およびチェック用のＣＰＵコア３の割込コントローラ３５は、比較結果信号ＤＳが「Ｌ」レベルとなったときに、機能不全のリスクを知らせる割込みが通知されたと認識する（ステップＳ２０７）。
【００５７】
メインのＣＰＵコア２は、割込みを検知すると、機能不全事前検出回路１２および機能不全のリスクが検出された機能回路（フリップフロップＦＦ１およびフリップフロップＦＦ２）が含まれる回路群への電源供給を停止する。すなわち、メインのＣＰＵコア２は、機能不全事前検出回路１２および機能不全のリスクが検出された機能回路が電源Ａ回路群８１の場合は、制御回路４１を指示して電源Ａスイッチ４２をオフにさせる。メインのＣＰＵコア２は、機能不全事前検出回路１２および機能不全のリスクが検出された機能回路が電源Ｂ回路群８２の場合は、電源Ｂスイッチ４３をオフにする。メインのＣＰＵコア２は、機能不全事前検出回路１２および機能不全のリスクが検出された機能回路が電源Ｃ回路群８３の場合は、電源Ｃスイッチ４４をオフにする（ステップＳ２０８）。
【００５８】
次に、メインのＣＰＵコア２は、システムレジスタ３１から端子ＰＳを通じてマイコン１の外部のシステムへ機能不全のリスクの発生を知らせる信号を出力する（ステップＳ２０９）。
【００５９】
図６は、図５のステップＳ２０２における機能不全事前検出回路１２自体の故障を検出する手順を表わすフローチャートである。
【００６０】
図６を参照して、メインのＣＰＵコア２は、回路Ｘ（図４の回路＃１〜回路＃４のいずれか）へのテストモード信号ｔｍを活性化する（ステップＳ１０１）。
【００６１】
次に、メインのＣＰＵコア２は、回路Ｘへのテストデータｔｖ１を「Ｌ」レベルに設定し、回路Ｘへのテストデータｔｖ２を「Ｌ」レベルに設定する（ステップＳ１０２）。
【００６２】
メインのＣＰＵコア２は、テストデータの不一致を検知した（つまり、比較結果信号ＤＳが「Ｌ」レベルとなった）ときには（ステップＳ１０３でＮＯ）、回路Ｘ内の機能不全事前検出回路１２が故障していると判定する（ステップＳ１１２）。
【００６３】
メインのＣＰＵコア２は、テストデータの不一致を検知しなかった（つまり、比較結果信号ＤＳが「Ｈ」レベルを維持した）ときには（ステップＳ１０３でＹＥＳ）、テストデータｔｖ１を「Ｌ」レベルに設定し、テストデータｔｖ２を「Ｈ」レベルに設定する（ステップＳ１０４）。
【００６４】
メインのＣＰＵコア２は、テストデータの不一致を検知しなかった（つまり、比較結果信号ＤＳが「Ｈ」レベルを維持した）ときには（ステップＳ１０５でＮＯ）、回路Ｘ内の機能不全事前検出回路１２が故障していると判定する（ステップＳ１１２）。
【００６５】
メインのＣＰＵコア２は、テストデータの不一致を検知した（つまり、比較結果信号ＤＳが「Ｌ」レベルとなった）ときには（ステップＳ１０５でＹＥＳ）、テストデータｔｖ１を「Ｈ」レベルに設定し、テストデータｔｖ２を「Ｈ」レベルに設定する（ステップＳ１０６）。
【００６６】
メインのＣＰＵコア２は、テストデータの不一致を検知した（つまり、比較結果信号ＤＳが「Ｌ」レベルとなった）ときには（ステップＳ１０７でＮＯ）、回路Ｘ内の機能不全事前検出回路１２が故障していると判定する（ステップＳ１１２）。
【００６７】
メインのＣＰＵコア２は、テストデータの不一致を検知しなかった（つまり、比較結果信号ＤＳが「Ｈ」レベルを維持した）ときには（ステップＳ１０７でＹＥＳ）、テストデータｔｖ１を「Ｈ」レベルに設定し、テストデータｔｖ２を「Ｌ」レベルに設定する（ステップＳ１０８）。
【００６８】
メインのＣＰＵコア２は、テストデータの不一致を検知しなかった（つまり、比較結果信号ＤＳが「Ｈ」レベルを維持した）ときには（ステップＳ１０９でＮＯ）、回路Ｘ内の機能不全事前検出回路１２が故障していると判定する（ステップＳ１１２）。
【００６９】
メインのＣＰＵコア２は、テストデータの不一致を検知した（つまり、比較結果信号ＤＳが「Ｌ」レベルとなった）ときには（ステップＳ１０９でＹＥＳ）、回路Ｘ内の機能不全事前検出回路１２が正常動作していると判定する（ステップＳ１１０）。
【００７０】
次に、メインのＣＰＵコア２は、回路Ｘへのテストモード信号ｔｍを非活性化する（ステップＳ１１１）。
【００７１】
図７は、テスト動作時における機能不全事前検出回路１２が故障しているか否かの判定方式を説明するための図である。
【００７２】
図７を参照して、メインのＣＰＵコア２は、テストデータｔｖ１を「Ｈ」レベルに設定し、テストデータｔｖ２を「Ｈ」レベルに設定する。
【００７３】
フリップフロップＦＦＴのデータ入力端子には、テストデータｔｖ２が入力される。フリップフロップＦＦＴは、クロックＣＬＫの立ち上りエッジ＃０に同期して、出力（Ｂ′点のデータ）を「Ｈ」レベルに変化させる。  
【００７４】
比較器ＣＭＰは、テストデータｔｖ１とＢ′点のデータとを比較する。テストデータｔｖ１とＢ′点のデータとは、クロックＣＬＫの立ち上りエッジ＃０以降において一致し、比較結果信号ＤＳは「Ｈ」レベルとなる。
【００７５】
図８は、テスト動作時における機能不全事前検出回路１２が故障しているか否かの判定方式を説明するための図である。
【００７６】
図８を参照して、メインのＣＰＵコアは、テストデータｔｖ１を「Ｈ」レベルに設定し、テストデータｔｖ２を「Ｌ」レベルに設定する。
【００７７】
フリップフロップＦＦＴのデータ入力端子には、テストデータｔｖ２が入力される。テストデータｔｖ２が「Ｌ」レベルなので、フリップフロップＦＦＴの出力（Ｂ′点のデータ）は「Ｌ」レベルのまま変化しない。  
【００７８】
比較器ＣＭＰは、テストデータｔｖ１とＢ′点のデータとを比較する。テストデータｔｖ１とＢ′点のデータとは、不一致なので、比較結果信号ＤＳは「Ｌ」レベルとなる。
【００７９】
図９は、テスト動作時における機能不全事前検出回路１２が故障しているか否かの判定方式を説明するための図である。
【００８０】
図８を参照して、メインのＣＰＵコアは、テストデータｔｖ１を「Ｌ」レベルに設定し、テストデータｔｖ２を「Ｈ」レベルに設定する。
【００８１】
フリップフロップＦＦＴのデータ入力端子には、テストデータｔｖ２が入力される。フリップフロップＦＦＴは、クロックＣＬＫの立ち上りエッジ＃０に同期して、出力（Ｂ′点のデータ）を「Ｈ」レベルに変化させる。  
【００８２】
比較器ＣＭＰは、テストデータｔｖ１とＢ′点のデータとを比較する。テストデータｔｖ１とＢ′点のデータとは、クロックＣＬＫの立ち上りエッジ＃０以降において不一致となり、比較結果信号ＤＳは「Ｌ」レベルとなる。
【００８３】
図１０は、テスト動作時における機能不全事前検出回路１２が故障しているか否かの判定方式を説明するための図である。
【００８４】
図１０を参照して、メインのＣＰＵコアは、テストデータｔｖ１を「Ｌ」レベルに設定し、テストデータｔｖ２を「Ｌ」レベルに設定する。
【００８５】
フリップフロップＦＦＴのデータ入力端子には、テストデータｔｖ２が入力される。テストデータｔｖ２が「Ｌ」レベルなので、フリップフロップＦＦＴの出力（Ｂ′点のデータ）は「Ｌ」レベルのまま変化しない。  
【００８６】
比較器ＣＭＰは、テストデータｔｖ１とＢ′点のデータとを比較する。テストデータｔｖ１とＢ′点のデータとは、一致するので、比較結果信号ＤＳは「Ｈ」レベルとなる。
【００８７】
以上のように、本実施の形態によれば、半導体装置内の任意の箇所に機能不全事前検出回路を設けて、低抵抗性ショートを早期に検出することができ、半導体装置の機能回路内に不良が発現する前に対処することができる。また、本実施の形態によれば、機能不全事前検出回路自体の故障を検出することができるので、温度異常などによる信号の遅延を正しく検出することができる。また、温度上昇を検知した回路群への電源供給を直ちに停止するので、故障の影響範囲を電源とグランドがショートした電源プレーン（回路群）にとどめることができるので、他の回路群へ発熱が伝搬せず、他の回路群は温度上昇せず動作不良にならない。
【００８８】
なお、本実施の形態とは別の方法として、温度異常による動作不全を検出するために、チェック用のＣＰＵコア３の１箇所以上の動作マージンの少ないパスの遅延を故意に悪化させて動作マージンを無くしてインプリするという方式が考えられる。このように故意に一方の遅延を悪化させ、動作マージンをなくさせることによって、動作保証温度から動作温度が少しはずれて該パスの遅延が少し劣化したときに、動作エラーとなる規定の遅延を超えて、チェック用のＣＰＵコア３の動作不良が起こり、メインのＣＰＵコア２側と動作が異なることにより、メインのＣＰＵコア２側の機能不全を事前に検出できる。
【００８９】
しかしながら、この方法には以下のような欠点がある。
（１）  デュアルロックステップ方式自体の動作マージンを下げることで、機能不全を事前に検出できるが、この方法は、機能不全を発生しやすくさせる機構であり、機能安全の観点では本末転倒の技術である。
【００９０】
（２）デュアルロックステップの機構をそのまま用いるため、遅延劣化させるフリップフロップの出力と比較器とが接続されるとは限らない。したがって、遅延劣化により動作不全が発生しても直後にエラーを検出されるとは限らない。
【００９１】
（３）  デュアルロックステップ方式の機構をそのまま用いており、動作不良を検出した場合、α線などによるソフトエラーによる動作不良と、発熱による動作不良とが区別ができず、対処を正常にできないという問題がある。
【００９２】
（４）  ＣＰＵコア２そのものの機能不全を検出するために、エラーを検出した場合にＣＰＵコア２そのものの信頼性に疑義があり、半導体装置内部での判断はできないため、半導体装置の外部のシステムへ通知することしかできない。
【００９３】
（５）  チェック用のＣＰＵコア３側の一部のパスを使用するため、チェック用のＣＰＵコア３側の内部温度上昇の検出が限定される。仮に半導体装置内の特定個所が低抵抗性ショートを起こし発熱しても、上記限定された個所まで発熱が伝搬するまで検知することができない。この熱伝搬するまでの間に他の回路が動作不良を起こすような場合へも適用できない。
【００９４】
（６）  メインのＣＰＵコア２側の動作マージンを稼ぐという観点で、メインのＣＰＵコア２側にはこの機構を入れることができない。したがって、チェック用のＣＰＵコア３側で正常動作していても、メインのＣＰＵコア２側の温度上昇が激しい場合は、メインのＣＰＵコア２側の速度不良が先に発現し、この方法では動作不良を先に検出することができない場合がある。
【００９５】
（７）  メインのＣＰＵコア２とチェック用のＣＰＵコア３側とで、物理的に異なり、それぞれ別々にレイアウトを実施する必要がある。
【００９６】
（８）  半導体装置内の電源系統が複数ある場合に、どこで機能不全（低抵抗性ショート）が発生しているのか判別できなく、電源系統毎の対策が打てない。
【００９７】
これに対して、本実施の形態によれば、上記の問題を発生することがないという特徴を有する。
【００９８】
［第２の実施形態］
図１１は、第２の実施形態のマイコンの一部の構成を表わす図である。
【００９９】
図１１を参照して、マイコンは、機能回路として、フリップフロップＦＦ０と、論理回路１１と、フリップフロップＦＦ１と、フリップフロップＦＦ２とを備える。
【０１００】
マイコン１は、フリップフロップＦＦ０とフリップフロップＦＦ１との間のルートと分岐するルートに設けられた機能不全事前検出回路５２を備える。機能不全事前検出回路５２は、セレクタＳＬ２と、遅延回路ＤＬ１，ＤＬ２，ＤＬ３と、フリップフロップＦＦＴ１，ＦＦＴ２，ＦＦＴ３と、セレクタＳＬ１と、比較器ＣＭＰ１，ＣＭＰ２，ＣＭＰ３とを備える。
【０１０１】
フリップフロップＦＦ０は、通常動作時に実データが入力されるデータ入力端子と、
クロックＣＬＫが入力される入力端子と、出力端子とを有する。
【０１０２】
論理回路１１は、フリップフロップＦＦ０の出力端子から出力されるデータを受けて、データの論理演算などを行なう。
【０１０３】
論理回路１１の出力は２つに分岐し、一方がフリップフロップＦＦ１と接続し、他方が機能不全事前検出回路５２のセレクタＳＬ２と接続する。
【０１０４】
フリップフロップＦＦ１は、通常動作時に論理回路１１の出力を受けるデータ入力端子と、クロックＣＬＫが入力されるクロック端子と、出力端子とを有する。
【０１０５】
フリップフロップＦＦ１の出力は２つに分岐し、一方がフリップフロップＦＦ２と接続し、他方が機能不全事前検出回路５２のセレクタＳＬ１と接続する。
【０１０６】
フリップフロップＦＦ２は、通常動作時にフリップフロップＦＦ１の出力を受けるデータ入力端子と、クロックＣＬＫが入力されるクロック端子と、出力端子とを有する。
【０１０７】
セレクタＳＬ２は、論理回路１１から出力されるデータと、テストデータｔｖ２とを受ける。セレクタＳＬ２は、テストモード信号ｔｍが活性化されている場合には、テストデータｔｖ２を遅延回路ＤＬ１へ出力する。セレクタＳＬ２は、テストモード信号ｔｍが非活性化されている場合には、論理回路１１から出力されるデータを遅延回路ＤＬ１へ出力する。
【０１０８】
遅延回路ＤＬ１は、セレクタＳＬ２の出力信号を遅延させる。遅延回路ＤＬ２は、遅延回路ＤＬ１の出力を遅延させる。遅延回路ＤＬ３は、遅延回路ＤＬ２の出力を遅延させる。
【０１０９】
フリップフロップＦＦＴ１は、遅延回路ＤＬ１の出力を受けるデータ入力端子と、クロックＣＬＫが入力されるクロック端子と、出力端子とを有する。
【０１１０】
フリップフロップＦＦＴ２は、遅延回路ＤＬ２の出力を受けるデータ入力端子と、クロックＣＬＫが入力されるクロック端子と、出力端子とを有する。
【０１１１】
フリップフロップＦＦＴ３は、遅延回路ＤＬ３の出力を受けるデータ入力端子と、クロックＣＬＫが入力されるクロック端子と、出力端子とを有する。
【０１１２】
セレクタＳＬ１は、フリップフロップＦＦ１から出力されるデータと、テストデータｔｖ１とを受ける。セレクタＳＬ１は、テストモード信号ｔｍが活性化されている場合には、テストデータｔｖ１を比較器ＣＭＰ１，ＣＭＰ２，ＣＭＰ３へ出力する。セレクタＳＬ１は、テストモード信号ｔｍが非活性化されている場合には、フリップフロップＦＦ１から出力されるデータを比較器ＣＭＰ１，ＣＭＰ２，ＣＭＰ３へ出力する。
【０１１３】
比較器ＣＭＰ１は、セレクタＳＬ１の出力信号と、フリップフロップＦＦＴ１の出力信号とが一致したときには、比較結果信号ＤＳ１を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ１を「Ｌ」レベルに設定する。
【０１１４】
すなわち、比較器ＣＭＰ１は、テスト動作時には、テストデータｔｖ１と、遅延回路ＤＬ１およびフリップフロップＦＦＴ１を経由したテストデータｔｖ２とが一致したときには、比較結果信号ＤＳ１を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ１を「Ｌ」レベルに設定する。
【０１１５】
比較器ＣＭＰ１は、通常動作時には、フリップフロップＦＦ１を経由した実データと、遅延回路ＤＬ１およびフリップフロップＦＦＴ１を経由した実データとが一致したときには、比較結果信号ＤＳ１を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ１を「Ｌ」レベルに設定する。
【０１１６】
比較器ＣＭＰ２は、セレクタＳＬ１の出力信号と、フリップフロップＦＦＴ２の出力信号とが一致したときには、比較結果信号ＤＳ２を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ２を「Ｌ」レベルに設定する。
【０１１７】
すなわち、比較器ＣＭＰ２は、テスト動作時には、テストデータｔｖ１と、遅延回路ＤＬ１，ＤＬ２およびフリップフロップＦＦＴ２を経由したテストデータｔｖ２とが一致したときには、比較結果信号ＤＳ２を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ２を「Ｌ」レベルに設定する。
【０１１８】
比較器ＣＭＰ２は、通常動作時には、フリップフロップＦＦ１を経由した実データと、遅延回路ＤＬ１，ＤＬ２およびフリップフロップＦＦＴ２を経由した実データとが一致したときには、比較結果信号ＤＳ２を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ２を「Ｌ」レベルに設定する。
【０１１９】
比較器ＣＭＰ３は、セレクタＳＬ１の出力信号と、フリップフロップＦＦＴ３の出力信号とが一致したときには、比較結果信号ＤＳ３を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ３を「Ｌ」レベルに設定する。
【０１２０】
すなわち、比較器ＣＭＰ３は、テスト動作時には、テストデータｔｖ１と、遅延回路ＤＬ１，ＤＬ２，ＤＬ３およびフリップフロップＦＦＴ３を経由したテストデータｔｖ２とが一致したときには、比較結果信号ＤＳ３を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ３を「Ｌ」レベルに設定する。
【０１２１】
比較器ＣＭＰ３は、通常動作時には、フリップフロップＦＦ１を経由した実データと、遅延回路ＤＬ１，ＤＬ２，ＤＬ３およびフリップフロップＦＦＴ３を経由した実データとが一致したときには、比較結果信号ＤＳ３を「Ｈ」レベルに設定し、不一致のときには、比較結果信号ＤＳ３を「Ｌ」レベルに設定する。
【０１２２】
図１２は、通常動作時における、正常時（保証動作温度の範囲）の動作を説明するための図である。
【０１２３】
図１２を参照して、フリップフロップＦＦ１のデータ入力端子には、Ｃ点のデータが入力される。Ｃ点のデータは、クロックＣＬＫの立ち上りエッジ＃０に対して、ｄ０の時間だけ遅れている。フリップフロップＦＦ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｃ′点のデータ）を「Ｈ」レベルに変化させる。
【０１２４】
フリップフロップＦＦＴ１のデータ入力端子には、Ｂ１点のデータが入力される。Ｂ１点のデータは、遅延回路ＤＬ１によってＣ点のデータよりもｄ１の時間だけ遅れている。フリップフロップＦＦＴ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｂ１′点のデータ）を「Ｈ」レベルに変化させる。  
【０１２５】
比較器ＣＭＰ１は、Ｃ′点のデータとＢ１′点のデータとを比較する。Ｃ′点のデータとＢ１′点のデータとは常に一致するので、比較結果信号ＤＳ１は常に「Ｈ」レベルを維持する。
【０１２６】
フリップフロップＦＦＴ２のデータ入力端子には、Ｂ２点のデータが入力される。Ｂ２点のデータは、遅延回路ＤＬ１およびＤＬ２によってＣ点のデータよりもｄ２の時間だけ遅れている。フリップフロップＦＦＴ２は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｂ２′点のデータ）を「Ｈ」レベルに変化させる。  
【０１２７】
比較器ＣＭＰ２は、Ｃ′点のデータとＢ２′点のデータとを比較する。Ｃ′点のデータとＢ２′点のデータとは常に一致するので、比較結果信号ＤＳ２は常に「Ｈ」レベルを維持する。
【０１２８】
フリップフロップＦＦＴ３のデータ入力端子には、Ｂ３点のデータが入力される。Ｂ３点のデータは、遅延回路ＤＬ１、ＤＬ２およびＤＬ３によってＣ点のデータよりもｄ３の時間だけ遅れている。フリップフロップＦＦＴ３は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｂ３′点のデータ）を「Ｈ」レベルに変化させる。  
【０１２９】
比較器ＣＭＰ３は、Ｃ′点のデータとＢ３′点のデータとを比較する。Ｃ′点のデータとＢ３′点のデータとは常に一致するので、比較結果信号ＤＳ３は常に「Ｈ」レベルを維持する。
【０１３０】
図１３は、通常動作時における、機能不全事前検出時の動作の例（温度が第１段階だけ増加した場合）を説明するための図である。
【０１３１】
図１３を参照して、フリップフロップＦＦ１のデータ入力端子には、Ｃ点のデータが入力される。Ｃ点のデータは、クロックＣＬＫの立ち上りエッジ＃０に対して、ｄ０（１）の時間だけ遅れている。フリップフロップＦＦ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｃ′点のデータ）を「Ｈ」レベルに変化させる。
【０１３２】
フリップフロップＦＦＴ１のデータ入力端子には、Ｂ１点のデータが入力される。Ｂ１点のデータは、遅延回路ＤＬ１によってＣ点のデータよりもｄ１（１）の時間だけ遅れている。フリップフロップＦＦＴ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｂ１′点のデータ）を「Ｈ」レベルに変化させる。  
【０１３３】
比較器ＣＭＰ１は、Ｃ′点のデータとＢ１′点のデータとを比較する。Ｃ′点のデータとＢ１′点のデータとは常に一致するので、比較結果信号ＤＳ１は常に「Ｈ」レベルを維持する。
【０１３４】
フリップフロップＦＦＴ２のデータ入力端子には、Ｂ２点のデータが入力される。Ｂ２点のデータは、遅延回路ＤＬ１およびＤＬ２によってＣ点のデータよりもｄ２（１）の時間だけ遅れている。フリップフロップＦＦＴ２は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｂ２′点のデータ）を「Ｈ」レベルに変化させる。  
【０１３５】
比較器ＣＭＰ２は、Ｃ′点のデータとＢ２′点のデータとを比較する。  Ｃ′点のデータとＢ２′点のデータとは常に一致するので、比較結果信号ＤＳ２は常に「Ｈ」レベルを維持する。
【０１３６】
フリップフロップＦＦＴ３のデータ入力端子には、Ｂ３点のデータが入力される。Ｂ３点のデータは、遅延回路ＤＬ１、ＤＬ２およびＤＬ３によってＣ点のデータよりもｄ３（１）の時間だけ遅れている。フリップフロップＦＦＴ３は、クロックＣＬＫの立ち上りエッジ＃２に同期して、出力（Ｂ３′点のデータ）を「Ｈ」レベルに変化させる。  
【０１３７】
比較器ＣＭＰ３は、Ｃ′点のデータとＢ３′点のデータとを比較する。Ｃ′点のデータとＢ３′点のデータとは、クロックＣＬＫの立ち上りエッジ＃１から立ち上りエッジ＃２までの期間不一致となるので、この期間は、比較結果信号ＤＳ３が「Ｌ」レベルとなる。
【０１３８】
図１４は、通常動作時における、機能不全事前検出時の動作の別の例（温度が第２段階だけ増加した場合）を説明するための図である。
【０１３９】
図１４を参照して、フリップフロップＦＦ１のデータ入力端子には、Ｃ点のデータが入力される。Ｃ点のデータは、クロックＣＬＫの立ち上りエッジ＃０に対して、ｄ０（２）の時間だけ遅れている。フリップフロップＦＦ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｃ′点のデータ）を「Ｈ」レベルに変化させる。
【０１４０】
フリップフロップＦＦＴ１のデータ入力端子には、Ｂ１点のデータが入力される。Ｂ１点のデータは、遅延回路ＤＬ１によってＣ点のデータよりもｄ１（２）の時間だけ遅れている。フリップフロップＦＦＴ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｂ１′点のデータ）を「Ｈ」レベルに変化させる。  
【０１４１】
比較器ＣＭＰ１は、Ｃ′点のデータとＢ１′点のデータとを比較する。Ｃ′点のデータとＢ１′点のデータとは常に一致するので、比較結果信号ＤＳ１は常に「Ｈ」レベルを維持する。
【０１４２】
フリップフロップＦＦＴ２のデータ入力端子には、Ｂ２点のデータが入力される。Ｂ２点のデータは、遅延回路ＤＬ１およびＤＬ２によってＣ点のデータよりもｄ２（２）の時間だけ遅れている。フリップフロップＦＦＴ２は、クロックＣＬＫの立ち上りエッジ＃２に同期して、出力（Ｂ２′点のデータ）を「Ｈ」レベルに変化させる。  
【０１４３】
比較器ＣＭＰ２は、Ｃ′点のデータとＢ２′点のデータとを比較する。Ｃ′点のデータとＢ２′点のデータとは、クロックＣＬＫの立ち上りエッジ＃１から立ち上りエッジ＃２までの期間不一致となるので、この期間は、比較結果信号ＤＳ２が「Ｌ」レベルとなる。
【０１４４】
フリップフロップＦＦＴ３のデータ入力端子には、Ｂ３点のデータが入力される。Ｂ３点のデータは、遅延回路ＤＬ１、ＤＬ２およびＤＬ３によってＣ点のデータよりもｄ３（２）の時間だけ遅れている。フリップフロップＦＦＴ３は、クロックＣＬＫの立ち上りエッジ＃２に同期して、出力（Ｂ３′点のデータ）を「Ｈ」レベルに変化させる。  
【０１４５】
比較器ＣＭＰ３は、Ｃ′点のデータとＢ３′点のデータとを比較する。Ｃ′点のデータとＢ３′点のデータとは、クロックＣＬＫの立ち上りエッジ＃１から立ち上りエッジ＃２までの期間不一致となるので、この期間は、比較結果信号ＤＳ３が「Ｌ」レベルとなる。
【０１４６】
図１５は、通常動作時における、機能不全事前検出時の動作の別の例（温度が第３段階だけ増加した例）を説明するための図である。
【０１４７】
図１５を参照して、フリップフロップＦＦ１のデータ入力端子には、Ｃ点のデータが入力される。Ｃ点のデータは、クロックＣＬＫの立ち上りエッジ＃０に対して、ｄ０（３）の時間だけ遅れている。フリップフロップＦＦ１は、クロックＣＬＫの立ち上りエッジ＃１に同期して、出力（Ｃ′点のデータ）を「Ｈ」レベルに変化させる。
【０１４８】
フリップフロップＦＦＴ１のデータ入力端子には、Ｂ１点のデータが入力される。Ｂ１点のデータは、遅延回路ＤＬ１によってＣ点のデータよりもｄ１（３）の時間だけ遅れている。フリップフロップＦＦＴ１は、クロックＣＬＫの立ち上りエッジ＃２に同期して、出力（Ｂ１′点のデータ）を「Ｈ」レベルに変化させる。  
【０１４９】
比較器ＣＭＰ１は、Ｃ′点のデータとＢ１′点のデータとを比較する。Ｃ′点のデータとＢ１′点のデータとは、クロックＣＬＫの立ち上りエッジ＃１から立ち上りエッジ＃２までの期間不一致となるので、この期間は、比較結果信号ＤＳ１が「Ｌ」レベルとなる。
【０１５０】
フリップフロップＦＦＴ２のデータ入力端子には、Ｂ２点のデータが入力される。Ｂ２点のデータは、遅延回路ＤＬ１およびＤＬ２によってＣ点のデータよりもｄ２（３）の時間だけ遅れている。フリップフロップＦＦＴ２は、クロックＣＬＫの立ち上りエッジ＃２に同期して、出力（Ｂ２′点のデータ）を「Ｈ」レベルに変化させる。  
【０１５１】
比較器ＣＭＰ２は、Ｃ′点のデータとＢ２′点のデータとを比較する。Ｃ′点のデータとＢ２′点のデータとは、クロックＣＬＫの立ち上りエッジ＃１から立ち上りエッジ＃２までの期間不一致となるので、この期間は、比較結果信号ＤＳ２が「Ｌ」レベルとなる。
【０１５２】
フリップフロップＦＦＴ３のデータ入力端子には、Ｂ３点のデータが入力される。Ｂ３点のデータは、遅延回路ＤＬ１、ＤＬ２およびＤＬ３によってＣ点のデータよりもｄ３（３）の時間だけ遅れている。フリップフロップＦＦＴ３は、クロックＣＬＫの立ち上りエッジ＃２に同期して、出力（Ｂ３′点のデータ）を「Ｈ」レベルに変化させる。  
【０１５３】
比較器ＣＭＰ３は、Ｃ′点のデータとＢ３′点のデータとを比較する。Ｃ′点のデータとＢ３′点のデータとは、クロックＣＬＫの立ち上りエッジ＃１から立ち上りエッジ＃２までの期間不一致となるので、この期間は、比較結果信号ＤＳ３が「Ｌ」レベルとなる。
【０１５４】
以上のように、本実施の形態の半導体装置によれば、第１の実施形態と同様の効果を有する。
【０１５５】
また、本実施の形態によれば、複数の遅延回路を設けることによって、機能不全の深刻度を検知できる。たとえば、比較器ＣＭＰ１で不一致が検出されたときには、メインのＣＰＵコアが、機能不全の可能性がある旨の警告をユーザに通知し、比較器ＣＭＰ２で不一致が検出されたときには、メインのＣＰＵコアが、機能不全の可能性が高い旨の警告をユーザに通知し、比較器ＣＭＰ３で不一致が検出されたときには、メインのＣＰＵコアが電源電圧の供給を停止するようにしてもよい。
【０１５６】
［第３の実施形態］
図１６は、第３の実施形態のマイコン５１の構成を表わす図である。
【０１５７】
図１６のマイコン５１が、図４のマイコン１と相違する点は以下である。
回路＃１の機能不全事前検出回路１２−１からの比較結果信号ＤＳは、メインのＣＰＵコア２内の割込コントローラ３２およびチェック用のＣＰＵコア３内の割込コントローラ３５に送られるとともに、制御回路４５に送られる。制御回路４５は、比較結果信号ＤＳが「Ｌ」レベルとなったときに、機能不全のリスクを知らせる割込みが通知されたと認識し、電源Ａスイッチ４２をオフにする。
【０１５８】
回路＃２の機能不全事前検出回路１２−２からの比較結果信号ＤＳは、メインのＣＰＵコア２内の割込コントローラ３２およびチェック用のＣＰＵコア３内の割込コントローラ３５に送られるとともに、制御回路４６に送られる。制御回路４６は、比較結果信号ＤＳが「Ｌ」レベルとなったときに、機能不全のリスクを知らせる割込みが通知されたと認識し、電源Ｂスイッチ４３をオフにする。
【０１５９】
回路＃３の機能不全事前検出回路１２−３および回路＃４の機能不全事前検出回路１２−４からの比較結果信号ＤＳは、メインのＣＰＵコア２内の割込コントローラ３２およびチェック用のＣＰＵコア３内の割込コントローラ３５に送られるとともに、制御回路４７に送られる。制御回路４７は、比較結果信号ＤＳが「Ｌ」レベルとなったときに、機能不全のリスクを知らせる割込みが通知されたと認識し、電源Ｃスイッチ４４をオフにする。
【０１６０】
以上のように、本実施の形態の半導体装置によれば、第１の実施形態と同様の効果を有する。また、機能不全のリスクが発生した場合に、ＣＰＵコアを介さずに、制御回路によって電源スイッチをオフにするので、ＣＰＵコアが温度上昇などによって異常動作している場合でも、電源スイッチを適切に制御することができる。
【０１６１】
［第４の実施形態］
図１７は、第４の実施形態のマイコン１８１の構成を表わす図である。
【０１６２】
図１７のマイコン１８１が、図４のマイコン１と相違する点は以下である。
回路＃１の機能不全事前検出回路１２−１からの比較結果信号ＤＳは、メインのＣＰＵコア２内の割込コントローラ３２およびチェック用のＣＰＵコア３内の割込コントローラ３５に送られるとともに、端子Ｐ１を通じてマイコン１８１の外部のシステムに送られる。
【０１６３】
回路＃２の機能不全事前検出回路１２−２からの比較結果信号ＤＳは、メインのＣＰＵコア２内の割込コントローラ３２およびチェック用のＣＰＵコア３内の割込コントローラ３５に送られるとともに、端子Ｐ２を通じてマイコン１８１の外部のシステムに送られる。
【０１６４】
回路＃３の機能不全事前検出回路１２−３からの比較結果信号ＤＳは、メインのＣＰＵコア２内の割込コントローラ３２およびチェック用のＣＰＵコア３内の割込コントローラ３５に送られるとともに、端子Ｐ３を通じてマイコン１８１の外部のシステムに送られる。
【０１６５】
回路＃４の機能不全事前検出回路１２−４からの比較結果信号ＤＳは、メインのＣＰＵコア２内の割込コントローラ３２およびチェック用のＣＰＵコア３内の割込コントローラ３５に送られるとともに、端子Ｐ４を通じてマイコン１８１の外部のシステムに送られる。
【０１６６】
マイコン１８１の外部のシステムは、回路＃１の機能不全事前検出回路１２−１からの比較結果信号ＤＳが「Ｌ」レベルとなったときに、機能不全のリスクを知らせる割込みが通知されたと認識し、端子ＰＡを通じて制御回路４５に切り換え信号を送る。制御回路４５の切り換え信号が「Ｌ」レベルの場合には、制御回路４５は、電源Ａスイッチ４２をオフにし、制御回路４５への切り換え信号が「Ｈ」レベルの場合には、制御回路４５は、電源Ａスイッチ４２をオンとする。
【０１６７】
マイコン１８１の外部のシステムは、回路＃２の機能不全事前検出回路１２−２からの比較結果信号ＤＳが「Ｌ」レベルとなったときに、機能不全のリスクを知らせる割込みが通知されたと認識し、端子ＰＢを通じて制御回路４６に切り換え信号を送る。制御回路４６の切り換え信号が「Ｌ」レベルの場合には、制御回路４６は、電源Ｂスイッチ４３をオフにし、制御回路４６への切り換え信号が「Ｈ」レベルの場合には、制御回路４６は、電源Ｂスイッチ４３をオンとする。
【０１６８】
マイコン１８１の外部のシステムは、回路＃３の機能不全事前検出回路１２−３からの比較結果信号ＤＳが「Ｌ」レベルとなったとき、または回路＃４の機能不全事前検出回路１２−４からの比較結果信号ＤＳが「Ｌ」レベルとなったとき、機能不全のリスクを知らせる割込みが通知されたと認識し、端子ＰＣを通じて制御回路４７に切り換え信号を送る。制御回路４７の切り換え信号が「Ｌ」レベルの場合には、制御回路４７は、電源Ｃスイッチ４４をオフにし、制御回路４７への切り換え信号が「Ｈ」レベルの場合には、制御回路４７は、電源Ｃスイッチ４４をオンとする。
【０１６９】
以上のように、本実施の形態の半導体装置によれば、第１の実施形態と同様の効果を有する。また、機能不全のリスクが発生した場合に、外部からの制御で電源スイッチをオフにするので、ＣＰＵコアが温度上昇などによって異常動作している場合でも、電源スイッチを適切に制御することができる。
【０１７０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１７１】
１，５１，１８１  マイコン、２，３  ＣＰＵコア、１１  論理回路、１２，５２  機能不全事前検出回路、３１，３３，３４  システムレジスタ、３２，３５  割込コントローラ、３７  レギュレータ、４１，４５，４６，４７  制御回路、４２  電源Ａスイッチ、４３  電源Ｂスイッチ、４４  電源Ｃスイッチ、８１  電源Ａ回路群、８２  電源Ｂ回路群、８３  電源Ｃ回路群、ＦＦ０，ＦＦ１，ＦＦＴ，ＦＦＴ１，ＦＦＴ２，ＦＦＴ３  フリップフロップ、ＳＬ１，ＳＬ２  セレクタ、３６，ＣＭＰ，ＣＭＰ１，ＣＭＰ２，ＣＭＰ３  比較器、ＤＬ，ＤＬ１，ＤＬ２，ＤＬ３  遅延回路、ＰＡ，ＰＢ，ＰＣ，ＰＤ，ＰＳ，Ｐ１〜Ｐ４  端子。
【図１】
2014109453.tif 000003
【図２】
2014109453.tif 000004
【図３】
2014109453.tif 000005
【図４】
2014109453.tif 000006
【図５】
2014109453.tif 000007
【図６】
2014109453.tif 000008
【図７】
2014109453.tif 000009
【図８】
2014109453.tif 000010
【図９】
2014109453.tif 000011
【図１０】
2014109453.tif 000012
【図１１】
2014109453.tif 000013
【図１２】
2014109453.tif 000014
【図１３】
2014109453.tif 000015
【図１４】
2014109453.tif 000016
【図１５】
2014109453.tif 000017
【図１６】
2014109453.tif 000018
【図１７】
2014109453.tif 000019