(57)【要約】【課題】従来の半導体装置では、動作クロック信号を切り替えた後の動作に関する信頼性を確保できない問題があった。【解決手段】本発明にかかる半導体装置は、クロック伝達ノードを介して入力される動作クロック信号ＣＬＫｏｐに基づきプログラムを実行する演算回路１４と、内部で用いられる内部クロック信号ＣＬＫｉｎｔを生成する内部発振器１２と、内部クロック信号ＣＬＫｉｎｔをカウントし、カウント値が演算回路１４におけるプログラムの実行時間が予め定められた値に達したことを検出し、通知信号を出力するウォッチドッグタイマ１８と、通知信号に応じて動作クロック信号ＣＬＫｏｐの有無を検出するクロック監視回路１７と、を有する。【選択図】図１
2010128790.tif 000002
【特許請求の範囲】
【請求項１】
クロック伝達ノードを介して入力される動作クロック信号に基づきプログラムを実行する演算回路と、
内部で用いられる内部クロック信号を生成する内部発振器と、
前記内部クロック信号をカウントし、カウント値が前記演算回路における前記プログラムの実行時間が予め定められた値に達したことを検出し、通知信号を出力するウォッチドッグタイマと、
前記通知信号に応じて前記動作クロック信号の有無を検出するクロック監視回路と、
を有する半導体装置。
【請求項２】
前記通知信号は、
前記カウント値が予め定められた前記演算回路における前記プログラムの実行時間の上限値よりも小さな事前通知最大値に達した場合に出力される第１の通知信号と、
前記カウント値が前記上限値に達した場合に出力される第２の通知信号と、を含み、
前記クロック監視回路は、前記第１の通知信号に応じて前記動作クロック信号の有無の監視を開始する請求項１に記載の半導体装置。
【請求項３】
前記クロック監視回路において前記動作クロック信号を検出した場合、
前記演算回路は、前記第１の通知信号を受けた場合に実行中の前記プログラムに異常が認められなければ前記ウォッチドッグタイマのカウント値をリセットするＷＤＴクリア信号を出力し、前記第２の通知信号を受けた場合には前記第２の通知信号に応じて実行中の前記プログラムを強制終了させる請求項２に記載の半導体装置。
【請求項４】
前記クロック監視回路は、前記動作クロック信号がないことを検出した場合、前記演算回路において実行中の前記プログラムに関する処理を再開させるための処理を指示するバックアップ要求信号を前記演算回路に対して出力する請求項１乃至３のいずれか１項に記載の半導体装置。
【請求項５】
前記クロック監視回路において前記動作クロック信号が検出されなかった場合に前記クロック伝達ノードに対して出力するクロック信号を切り替えるセレクタを有する請求項１乃至４のいずれか１項に記載の半導体装置。
【請求項６】
前記セレクタには、前記半導体装置の外部において生成される複数の外部クロック信号が入力され、前記セレクタは、前記複数の外部クロック信号のうちいずれか１つを前記クロック伝達ノードに出力する請求項５に記載の半導体装置。
【請求項７】
前記セレクタには、前記半導体装置の外部において生成される外部クロック信号と前記内部クロック信号とが入力され、前記セレクタは、前記外部クロック信号と前記内部クロック信号のいずれか一方を前記クロック伝達ノードに出力する請求項６に記載の半導体装置。
【請求項８】
前記クロック監視回路が前記動作クロック信号を検出し、かつ、前記演算回路が前記第１の通知信号に応じて前記ウォッチドッグタイマのカウント値をリセットするＷＤＴクリア信号を出力した場合、
前記ウォッチドックタイマは前記カウント値を初期値に戻してカウント動作を継続し、
前記クロック監視回路は、次に前記第１の通知信号が入力されるまで動作を停止し、
前記演算回路は実行中の前記プログラムの処理を継続する
請求項２に記載の半導体装置。
【請求項９】
前記クロック監視回路が前記動作クロック信号を検出し、かつ、前記演算回路が前記第１の通知信号に応じて前記ウォッチドッグタイマのカウント値をリセットするＷＤＴクリア信号を出力しなかった場合、
前記ウォッチドックタイマは前記第２の通知信号を出力し、
前記演算回路は前記第２の通知信号に応じて実行中の前記プログラムを強制終了する
請求項２に記載の半導体装置。
【請求項１０】
前記クロック監視回路において前記動作クロック信号が停止していることを検出した場合、
前記クロック監視回路は、前記動作クロック信号の供給元を切り替えると共に前記演算回路に対して前記プログラムに関する処理を再開させるための処理を指示するバックアップ要求信号を出力する
請求項２に記載の半導体装置。
【請求項１１】
前記演算回路は、前記動作クロック信号の供給が再開後に前記ウォッチドッグタイマのカウント値をリセットするＷＤＴクリア信号を出力すると共に前記バックアップ要求信号に基づいて前記プログラムに関する処理を再開させるための処理を行う
請求項１０に記載の半導体装置。
【請求項１２】
前記ウォッチドックタイマは、前記動作クロック信号の供給が再開後においても前記ウォッチドッグタイマのカウント値をリセットするＷＤＴクリア信号を前記演算回路から受信できない場合、前記第２の通知信号を前記演算回路に対して出力し、
前記演算回路は、前記第２の通知信号に応じて実行中の前記プログラムを強制終了する
請求項１０に記載の半導体装置。
【請求項１３】
動作クロック信号に基づきプログラムを実行する演算回路を有する半導体装置における異常検出方法であって、
前記演算回路における前記プログラムの実行時間を計測し、
前記実行時間が予め設定された値に達したことに応じて前記動作クロック信号の有無を検出し、
前記演算回路における異常状態が前記動作クロック信号の異常又は前記プログラムの異常とのいずれに起因するものであるかを判断する半導体装置における異常検出方法。
【請求項１４】
前記動作クロック信号がないことが検出され、前記演算回路における異常状態が前記動作クロック信号の異常に起因するものであった場合、前記動作クロック信号の供給元を切り替える請求項１３に記載の半導体装置における異常検出方法。
【請求項１５】
前記動作クロック信号があることが検出され、前記演算回路における異常状態が前記プログラムの異常に起因するものであった場合、実行中の前記プログラムを強制終了させる請求項１３又は１４に記載の半導体装置における異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びその異常検出方法に関し、特にプログラムを実行する演算回路を有する半導体装置及びその異常検出方法に関する。
【背景技術】
【０００２】
マイコン（Micro Computer）等の半導体装置は、外部にて生成した動作クロック信号に基づき動作する。このとき、マイコンを含むシステムの低消費電力化、又はマイコンの信頼性の向上を目的として、マイコンに供給する動作クロック信号の切り替えを行うことがある。
【０００３】
このような動作クロック信号の切り替えの一例が特許文献１に開示されている。特許文献１に記載の半導体装置１００のブロック図を図５に示す。半導体装置１００は、クロック停止回路である。半導体装置１００は、クロック停止検出回路１０１、セット・リセット型フリップフロップ１０２、自走マルチ１０３、カウンタ１０４、選択回路１０５を有する。半導体装置１００では、外部クロック信号ＣＫＥの有無をクロック停止検出回路１０１により検出する。そして、クロック停止検出回路１０１により外部クロック信号ＣＫＥの停止状態が検出された場合には、カウンタ１０４により設定された所定の期間において、セット・リセット型フリップフロップ１０２と自走マルチ１０３とにより構成される内部クロック発生回路により生成される内部クロック信号ＣＫＩをマイコン等の内部回路へのクロック信号ＣＬＫとして出力する。なお、外部クロック信号ＣＫＥと内部クロック信号ＣＫＩのいずれをクロック信号ＣＬＫとするかは、選択回路１０５により選択される。
【０００４】
つまり、半導体装置１００では、システムの低消費電力化を実現するために、外部クロック信号ＣＫＥの発振を停止した場合において、外部クロック信号ＣＫＥの停止から所定の期間の間、内部クロック発生回路により動作を行う。これにより、半導体装置１００では、外部クロック信号ＣＫＥがマイコンの動作と関係なく停止した場合であっても、内部クロック信号ＣＫＩによりマイコンを安全にストップ状態に移行させることができる。つまり、半導体装置１００では、マイコンを含むシステムの低消費電力化を実現するために外部クロック信号ＣＫＥを停止する場合に、マイコンの動作に関係なく外部クロック信号ＣＫＥを停止させることができる。
【０００５】
また、動作クロック信号を切り替える別の例が特許文献２に開示されている。特許文献２に記載の半導体装置２００のブロック図を図６に示す。半導体装置２００は、ＰＬＬ内蔵マイクロコンピュータにおけるＰＬＬ（Phase Locked Loop）回路及び発振停止検出回路である。また、図６では示していないが、半導体装置２００は、ＰＬＬ回路及び発振停止検出回路の前段に外部生成クロック信号を受ける外部生成クロック停止回路を有する。
【０００６】
図６に示すように、半導体装置２００は、ＰＬＬ回路２１０、発振停止検出回路２０１を有する。また、発振停止検出回路２０１は、エッジ検出回路２２０、２ｂｉｔカウンタ２３０、ＯＲ回路２４０、外部生成クロック信号停止検出部２５０を有する。ＰＬＬ回路２１０は、外部生成クロック信号が供給されている場合は、外部生成クロック信号のｎ逓倍の周波数を有する内部クロック信号ＳＣＬＫを出力し、外部生成クロック信号が供給されずロウレベルの電圧（例えば接地電圧）が供給されている場合は、所定の周波数を有する内部クロック信号ＳＣＬＫを出力する。エッジ検出回路２２０は、外部生成クロック信号の円委を検出する。２ｂｉｔカウンタ２３０は、エッジ検出回路２２０の出力によってクリアされ、内部クロック信号をカウントソースとしてカウント動作を行う。なお、２ｂｉｔカウンタ２３０へのクリア信号は、ＯＲ回路２４０を介して与えられる。ＯＲ回路２４０には、初期化信号ＩＮＩＴＩＡＬと、エッジ検出回路２２０の出力信号とが与えられる。つまり、２ｂｉｔカウンタ２３０へのクリア信号は、初期化信号ＩＮＩＴＩＡＬと、エッジ検出回路２２０の出力信号との論理和演算結果が与えられる。外部生成クロック信号停止検出部２５０は、２ｂｉｔカウンタ２３０の出力が所定の設定値を超えると、これを外部生成クロック信号の停止として検出し、外部クロック停止検出信号ＣＴ１１を出力し続ける。そして、外部生成クロック停止回路は、外部クロック停止検出信号ＣＴ１１を受けると、外部生成クロック信号を遮断し、ロウレベルの信号を出力する。
【０００７】
つまり、半導体装置２００では、外部生成クロック信号が断線等の不具合により停止した場合に、外部生成回路クロック信号の停止を発振停止検出回路２０１により検出し、その後の動作クロック信号をＰＬＬ回路２１０が自ら生成する内部クロック信号ＳＣＬＫとする。これにより、半導体装置２００では、断線等による外部生成クロック信号の停止が発生した場合であってもマイコン等の動作を継続して行うことができる。つまり、半導体装置２００は、外部生成クロック信号の不具合に対して高い信頼性を確保することができる。
【特許文献１】特開平４−３６５１１０号公報
【特許文献２】特開２００４−３３４７９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１、２に記載の技術では、常に外部クロック信号の発振状態を監視しなければならず、半導体装置が動作している期間における消費電力を十分に低減できない問題がある。
【０００９】
また、マイコン等の半導体装置では、実行中のプログラムが暴走又は停止し、システムに重大な障害を生じさせることがある。このプログラムの暴走又は停止の１つの原因として動作クロックの停止がある。そこで、特許文献１、２に記載の技術を用いて停止した外部クロックに代えて他のクロック信号を用いることは有効であるようにも考えられる。
【００１０】
しかしながら、マイコン等の半導体装置では、一定時間以上経過してもプログラムの処理が終了しない場合にプログラムが暴走又は停止していると判断し、実行中のプログラムに関する情報を廃棄する等してプログラムを強制終了させることがある。そのため、特許文献１、２に記載の技術を用いて動作クロック信号の供給を再開したとしても、その再開がプログラムの強制終了後になると、動作クロック信号の再供給が開始される前の状態はすでに廃棄されているため、マイコンがそれ以前の状態とは全く異なった状態に基づいて再始動することになる。そのため、再始動後のマイコンが新たに発生したプログラムの暴走により正常に動作しない場合がある。
【００１１】
つまり、特許文献１、２に記載の技術では、外部クロック信号の発振の有無のみを監視しているため、実行中のプログラムの状態とは関係なく動作クロック信号の再供給が開始されるため、再始動後のマイコンの正しい動作状態で動作させられない場合がある。このようなことから、特許文献１、２に記載の技術では、マイコンの動作の信頼性が十分でない問題がある。
【課題を解決するための手段】
【００１２】
本発明にかかる半導体装置の一態様は、クロック伝達ノードを介して入力される動作クロック信号に基づきプログラムを実行する演算回路と、内部で用いられる内部クロック信号を生成する内部発振器と、前記内部クロック信号をカウントし、カウント値が前記演算回路における前記プログラムの実行時間が予め定められた値に達したことを検出し、通知信号を出力するウォッチドッグタイマと、前記通知信号に応じて前記動作クロック信号の有無を検出するクロック監視回路と、を有する。
【００１３】
本発明にかかる半導体装置における異常検出方法の一態様は、動作クロック信号に基づきプログラムを実行する演算回路を有する半導体装置における異常検出方法であって、前記演算回路における前記プログラムの実行時間を計測し、前記実行時間が予め設定された値に達したことに応じて前記動作クロック信号の有無を検出し、前記演算回路における異常状態が前記動作クロック信号の異常又は前記プログラムの異常とのいずれに起因するものであるかを判断するものである。
【００１４】
本発明にかかる半導体装置及びその異常検出方法では、ウォッチドッグタイマにより演算回路におけるプログラムの実行状態を検出する。そして、プログラムに異常があると判断された場合にクロック監視回路による動作クロック信号の監視を行う。これにより、クロック監視回路はプログラムの実行状態に異常があると思われる場合にのみ動作させることができるため、半導体装置の消費電力を削減することができる。
【００１５】
また、ウォッチドッグタイマにより演算回路におけるプログラムの実行状態を検出し、かつ、クロック監視回路により動作クロック信号の異常を検出するため、本発明にかかる半導体装置は、演算回路において実行されるプログラムが強制終了される前に、半導体装置の再始動後の動作のための動作を決定することができる。これにより、本発明にかかる半導体装置及びその異常検出方法では、半導体装置の再始動時の信頼性を向上させることができる。
【発明の効果】
【００１６】
本発明にかかる半導体装置及びその異常検出方法によれば、低消費電力と高い信頼性を確保することができる。
【発明を実施するための最良の形態】
【００１７】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１に本実施の形態にかかる半導体装置１のブロック図を示す。図１に示すように、半導体装置１は、主発振器１０、副発振器１１、内部発振器１２、セレクタ１３、演算回路（ＣＰＵ：Central Processing Unit）１４、フラッシュメモリ１５、ＲＡＭ（Random Access Memory）１６、クロック監視回路１７、ウォッチドッグタイマ１８を有する。
【００１８】
主発振器１０及び副発振器１１は、インバータ及び抵抗Ｒを有する。そして、主発振器１０及び副発振器１１は、半導体装置１の外部に設けられる水晶発振子Ｘｔａｌ及びコンデンサＣと共に発振器を構成する。主発振器１０はメインクロック信号ＣＬＫｍを出力し、副発振器１１はサブクロック信号ＣＬＫｓを出力する。このとき、主発振器１０と副発振器１１とでは、抵抗ＲとコンデンサＣにより決まる時定数が異なり、この時定数の違いに応じてメインクロック信号ＣＬＫｍとサブクロック信号ＣＬＫｓとの周波数の差が決まる。本実施の形態では、メインクロック信号ＣＬＫｍは、サブクロック信号ＣＬＫｓよりも高い周波数を有する。なお、本実施の形態では、メインクロック信号ＣＬＫｍとサブクロック信号ＣＬＫｓは、半導体装置１の内部に設けられた回路と外部に設けられた水晶発振子Ｘｔａｌ及びコンデンサＣとにより生成されるが、主発振器１０及び副発振器１１はともに外部に設けることもできる。そのため、以下の説明では、メインクロック信号ＣＬＫｍとサブクロック信号ＣＬＫｓとをともに外部クロック信号として扱う。また、主発振器１０及び副発振器１１は、クロック監視回路１７が出力するアクティベーション信号に応じて動作状態と停止状態とを切り替える。
【００１９】
内部発振器１２は、例えば、自走発振器やＰＬＬ回路とうの発振回路であって、単体でクロック信号を生成できる回路である。内部発振器１２は、半導体装置１の内部において用いられる内部クロック信号ＣＬＫｉｎｔを生成する。
【００２０】
セレクタ１３は、メインクロック信号ＣＬＫｍ、サブクロック信号ＣＬＫｓ及び内部クロック信号ＣＬＫｉｎｔを受信する。そして、セレクタ１３は、クロック監視回路１７が出力するクロック切替信号に基づき受信したクロック信号のいずれか１つを動作クロック伝達ノードに対して出力する。セレクタ１３が出力するクロック信号を以下では動作クロック信号ＣＬＫｏｐと称す。
【００２１】
ＣＰＵ１４は、フラッシュメモリ１５に格納されるプログラムを読み込み、当該プログラムを実行する。また、ＣＰＵ１４は、プログラムを実行するに当たりＲＡＭ１６をプログラムの実行中に生じる中間データの格納場所として用いる。ＣＰＵ１４、フラッシュメモリ１５、ＲＡＭ１６にはそれぞれ動作クロック信号ＣＬＫｏｐが供給され、これら回路は動作クロック信号ＣＬＫｏｐに基づき動作する。
【００２２】
また、ＣＰＵ１４は、第１の通知信号（例えば、オーバーフロー事前通知信号）、第２の通知信号（例えば、オーバーフロー通知信号）及びバックアップ要求信号が入力され、ＷＤＴクリア信号を出力する。オーバーフロー事前通知信号は、後述するウォッチドッグタイマ１８から入力される。そして、ＣＰＵ１４は、オーバーフロー事前通知信号を受信した場合、プログラムの実行状態を確認し、プログラムが正常に処理できている場合はＷＤＴクリア信号を出力する。一方、ＣＰＵ１４において実行されるプログラムが暴走等している場合は、ＷＤＴクリア信号は出力されない。なお、ＷＤＴクリア信号は、ＣＰＵ１４において実行されているプログラムが正常終了した場合及び実行するプログラムが切り替えられた場合においても出力される。オーバーフロー通知信号は、後述するウォッチドッグタイマ１８から入力される。そして、ＣＰＵ１４は、オーバーフロー通知信号を受けた場合、実行中のプログラムを強制終了させる。バックアップ要求信号は、後述するクロック監視回路から入力される。そして、ＣＰＵ１４は、バックアップ要求信号を受けると、実行中のプログラムを途中で終了させるために、実行中のプログラムに関する情報をＲＡＭ１６又はフラッシュメモリ１５に退避させる。
【００２３】
クロック監視回路１７は、オーバーフロー事前通知信号に応じて動作クロック信号ＣＬＫｏｐの有無を検出する。より具体的には、クロック監視回路１７は、半導体装置１の起動時にＣＰＵ１４又は図示しない他の回路からクロック設定信号を受けて、動作クロック信号ＣＬＫｏｐを監視するクロックモニタ期間の長さ等の各種設定が行われる。また、クロック監視回路１７は、内部クロック信号ＣＬＫｉｎｔに基づき動作する。そして、クロック監視回路１７は、オーバーフロー事前通知信号に応じて動作クロック信号ＣＬＫｏｐの有無の監視を開始する。この監視は、クロック設定信号により予め設定された期間の間で行われる。
【００２４】
クロック監視回路１７は、動作クロック信号ＣＬＫｏｐが停止していることを検出した場合、クロック切替信号を出力して、セレクタが選択するクロック信号を現在とは異なるクロック信号に切り替える。また、クロック監視回路１７は、主発振器１０及び副発振器１１にアクティベーション信号を出力する。本実施の形態では、主発振器１０に対するアクティベーション信号と副発振器１１に対するアクティベーション信号とは互いに排他的に制御される。つまり、本実施の形態では、ある時点において動作している発振器は、主発振器１０と副発振器１１とのいずれか一方となる。さらに、クロック監視回路１７は、動作クロック信号ＣＬＫｏｐが停止していることを検出した場合、ＣＰＵ１４に対してバックアップ要求信号を出力する。なお、クロック監視回路１７は、動作クロック信号ＣＬＫｏｐの有無を監視するクロック監視期間において動作クロック信号ＣＬＫｏｐがあることを検出した場合、クロック切替信号、アクティベーション信号及びバックアップ要求信号をそれ以前の状態で維持する。
【００２５】
ウォッチドッグタイマ１８は、内部クロック信号ＣＬＫｉｎｔのクロック数をカウントし、そのカウント値が予め設定された値に達するとオーバーフロー事前通知信号又はオーバーフロー通知信号を出力する。より具体的には、本実施の形態におけるウォッチドッグタイマ１８は、予め設定された値として、１つのプログラムがＣＰＵ１４を占有する時間（この時間をプログラムの実行時間と称す）の最大カウント値と、この最大値よりも小さな値を有する事前通知カウント値とを有する。そして、ウォッチドッグタイマ１８は、カウント値が事前通知カウント値に達するとオーバーフロー事前通知信号を出力する。また、ウォッチドッグタイマ１８は、カウント値が最大カウント値に達するとオーバーフロー通知信号を出力する。なお、ウォッチドッグタイマ１８は、ＣＰＵ１４からＷＤＴクリア信号を受けた場合、カウント値を初期化し、その後初期化後のカウント値からカウントアップを再開する。
【００２６】
続いて、図２〜図４に半導体装置１の動作を示すタイミングチャートを示す。そして、このタイミングチャートを参照して半導体装置１の動作について詳細に説明する。半導体装置１では、ＣＰＵ１４において実行中のプログラムの状態及び動作クロック信号ＣＬＫｏｐの状態によって動作が異なる。図２に示すタイミングチャートは、ＣＰＵ１４において実行中のプログラムの動作が正常な状態を維持している場合の例を示す。図３に示すタイミングチャートは、ＣＰＵ１４において実行中のプログラムの動作に異常が発生している場合の例を示す。図４に示すタイミングチャートは、動作クロック信号ＣＬＫｏｐが途中で停止してしまうことでＣＰＵ１４の動作に異常が生じている場合の例を示す。また、図２〜図４の例は、いずれもＣＰＵ１４に供給される動作クロック信号としてサブクロック信号ＣＬＫｓが選択されている状態を動作の開始状態としている。
【００２７】
まず、図２に示す例について説明する。この例では、タイミングＴ１においてウォッチドッグタイマ１８のカウント値が事前通知カウント値に達する。そのため、タイミングＴ１でオーバーフロー事前通知信号が立ち上がる。そして、このオーバーフロー事前通知信号の立ち上がりに応じて、クロック監視回路１７内のクロックモニタイネーブル信号が立ち上がり、クロック監視回路１７は動作クロック信号ＣＬＫｏｐの監視を開始する。その後、オーバーフロー事前通知信号はタイミングＴ１で立ち下がる。一方、クロックモニタイネーブル信号は、クロックモニタ期間が経過したタイミングＴ３で立ち下がる。このとき、図２に示す例では、クロックモニタ期間にクロック監視回路１７は動作クロック信号ＣＬＫｏｐがあることを検出するため、クロック切替信号、アクティベーション信号及びバックアップ要求信号をそれ以前の状態で維持する。その後、タイミングＴ４〜Ｔ５の期間において、ＣＰＵ１４は、タイミングＴ１において受け取ったオーバーフロー事前通知信号に応じてＷＤＴクリア信号を出力する。このＷＤＴクリア信号は、ＣＰＵ１４において実行されているプログラムが正常であるためにＣＰＵ１４が出力するものである。
【００２８】
このように、ＣＰＵ１４において実行されているプログラムに異常がなく、かつ、動作クロック信号ＣＬＫｏｐも正常である場合、オーバーフロー事前通知信号が出力したとしても、動作クロック信号ＣＬＫｏｐの供給先の切り替え動作等は行われず、かつ、適切なタイミングでウォッチドッグタイマ１８がリセットされる。これにより、ＣＰＵ１４は、実行中のプログラムに関する処理を続行することができる。
【００２９】
続いて、図３に示す例について説明する。図３に示す例は、図２に示した例において、実行中のプログラムが異常状態となった場合を示す。図３に示す例では、プログラムが異常な状態となり暴走しているため、タイミングＴ４〜Ｔ５の期間に出力されるＷＤＴクリア信号が出力されない。そのため、ウォッチドッグタイマ１８は、タイミングＴ６においてカウント値が最大カウント値に達する。そして、ウォッチドッグタイマ１８は、タイミングＴ６〜Ｔ７の期間にオーバーフロー通知信号を出力する。このオーバーフロー通知信号は、ＣＰＵ１４に入力され、ＣＰＵ１４は実行中のプログラムを強制終了させることで、プログラムの暴走を停止させる。
【００３０】
このように、動作クロック信号ＣＬＫｏｐが正常な状態において、ＣＰＵ１４で実行中のプログラムが暴走した場合には、ウォッチドッグタイマ１８が出力するオーバーフロー通知信号により、ＣＰＵ１４は、プログラムの暴走状態から脱出することができる。
【００３１】
続いて、図４に示す例について説明する。図４に示す例ではタイミングＴ１１において動作クロック信号ＣＬＫｏｐとして供給されているサブクロック信号ＣＬＫｓが停止する。その後、タイミングＴ１２においてウォッチドッグタイマ１８のカウント値が事前通知カウント値に達する。そのため、タイミングＴ１２でオーバーフロー事前通知信号が立ち上がる。そして、このオーバーフロー事前通知信号の立ち上がりに応じて、クロック監視回路１７内のクロックモニタイネーブル信号が立ち上がり、クロック監視回路１７は動作クロック信号ＣＬＫｏｐの監視を開始する。その後、オーバーフロー事前通知信号はタイミングＴ１３で立ち下がる。一方、クロックモニタイネーブル信号は、クロックモニタ期間が経過したタイミングＴ１３で立ち下がる。このとき、図４に示す例では、クロックモニタ期間にクロック監視回路１７は動作クロック信号ＣＬＫｏｐがないことを検出する。そのため、クロック監視回路１７は、タイミングＴ１４においてクロック切替信号を更新し、セレクタ１３が選択するクロック信号をメインクロック信号に切り替える。また、クロック監視回路１７は、アクティベーション信号を操作し、副発振器１１を停止させ、主発振器１０の動作を開始する。これにより、ＣＰＵ１４には、動作クロック信号ＣＬＫｏｐとしてメインクロック信号ＣＬＫｍが供給され、ＣＰＵ１４は、動作を再開する。また、このタイミングＴ１４においてクロック監視回路１７は、バックアップ要求信号を立ち上げてＣＰＵ１４に実行中のプログラムの退避を指示する。そのため、タイミングＴ１４以降の動作でＣＰＵ１４は、プログラムの退避動作及びプログラムの終了処理を行う。なお、バックアップ要求信号は、タイミングＴ１５で立ち下がる。そして、ＣＰＵ１４は、プログラムの退避動作又はプログラムの終了処理の開始に伴い、ＷＤＴクリア信号をタイミングＴ１６〜Ｔ１７の期間に出力し、ウォッチドッグタイマ１８のカウント値をクリアする。
【００３２】
このように、半導体装置１では、動作クロック信号ＣＬＫｏｐが停止していることに起因してオーバーフロー事前通知信号が出力された場合、動作クロック信号ＣＬＫｏｐの供給先を切り替え、その後のＣＰＵ１４の動作を行う。また、動作クロック信号ＣＬＫｏｐの切り替え後に供給されるクロック信号は本来のクロック信号とは異なる周波数を有するため、ＣＰＵ１４の処理と他の回路の処理との誤差に起因するシステム上の不具合を生じる可能性がある。そこで、半導体装置１では、動作クロック信号ＣＬＫｏｐの停止後にＣＰＵ１４の処理を再開する場合には、それ以前に実行していたプログラムを退避させて正常終了の状態に移行させる。これにより、動作クロック信号ＣＬＫｏｐの停止時のシステム上の信頼性を向上させる。
【００３３】
上記説明より、本実施の形態にかかる半導体装置１では、ウォッチドッグタイマ１８によりＣＰＵ１４においてプログラムの異常が生じている可能性があることを検出する。そして、プログラムの異常が予測された場合にのみ動作クロック信号ＣＬＫｏｐの有無を検出するクロック監視回路１７を動作させる。つまり、本実施の形態にかかる半導体装置１では、動作クロック信号ＣＬＫｏｐの状態を常に監視することはないため、動作クロック信号ＣＬＫｏｐの監視にかかる消費電力を削減することができる。なお、ウォッチドッグタイマ１８は、ＣＰＵ１４におけるプログラムの実行時間を計測するために、従来から用いられるものであり、ウォッチドッグタイマ１８を用いることによる消費電力の増加はない。
【００３４】
また、本実施の形態にかかる半導体装置１では、ウォッチドッグタイマ１８によりＣＰＵ１４においてプログラムの異常が生じている可能性があることを検出し、その検出結果に基づきクロック監視回路１７が動作クロック信号ＣＬＫｏｐの有無を確認する。このとき、クロック監視回路１７は、動作クロック信号ＣＬＫｏｐがないと判断した場合は、動作クロック信号ＣＬＫｏｐの供給先を切り替えると共に、プログラムの退避をＣＰＵ１４に指示するバックアップ要求信号を出力する。これにより、本実施の形態にかかる半導体装置１では、動作クロック信号ＣＬＫｏｐの供給元が切り替えられ、動作クロック信号ＣＬＫｏｐの供給が再開された時点ですでにプログラムが強制終了されてしまうことを防止することができる。つまり、本実施の形態にかかる半導体装置１は、動作クロック信号ＣＬＫｏｐの供給再開後にマイコンが不正な状態になることを防止することができるため、高い信頼性を実現することができる。
【００３５】
特に、本実施の形態にかかる半導体装置１では、ＣＰＵ１４にプログラムの強制終了処理を指示するオーバーフロー通知信号よりも前のタイミングで出力されるオーバーフロー事前通知信号に基づきクロック監視回路１７が動作クロック信号ＣＬＫｏｐの監視を開始する。これにより、本実施の形態にかかる半導体装置１は、動作クロック信号ＣＬＫｏｐの供給元を切り替え動作及びプログラムの退避指示をプログラムの強制終了処理が行われる前に確実に行うことができる。つまり、本実施の形態にかかる半導体装置１では、オーバーフロー事前通知信号に基づきクロック監視回路１７が動作クロック信号ＣＬＫｏｐの監視を開始することで、さらなる信頼性の向上を実現することができる。
【００３６】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【図面の簡単な説明】
【００３７】
【図１】実施の形態１にかかる半導体装置のブロック図である。
【図２】実施の形態１にかかる半導体装置の正常動作時の動作を示すタイミングチャートである。
【図３】実施の形態１にかかる半導体装置においてプログラム自体が暴走した場合の動作を示すタイミングチャートである。
【図４】実施の形態１にかかる半導体装置において動作クロック信号ＣＬＫｏｐの停止が検出された場合の動作を示すタイミングチャートである。
【図５】特許文献１に記載の半導体装置のブロック図である。
【図６】特許文献２に記載の半導体装置のブロック図である。
【符号の説明】
【００３８】
１    半導体装置
１０    主発振器
１１    副発振器
１２    内部発振器
１３    セレクタ
１４    ＣＰＵ
１５    フラッシュメモリ
１６    ＲＡＭ
１７    クロック監視回路
１８    ウォッチドッグタイマ
Ｃ    コンデンサ
Ｒ    抵抗
Ｘｔａｌ    水晶発振子
ＣＬＫｍ    メインクロック信号
ＣＬＫｓ    サブクロック信号
ＣＬＫｉｎｔ    内部クロック信号
ＣＬＫｏｐ    動作クロック信号
【図１】
2010128790.tif 000003
【図２】
2010128790.tif 000004
【図３】
2010128790.tif 000005
【図４】
2010128790.tif 000006
【図５】
2010128790.tif 000007
【図６】
2010128790.tif 000008