(57)【特許請求の範囲】
【請求項１】
演算処理部と、
前記演算処理部の暴走監視に用いる第１のウォッチドッグタイマーと、
前記演算処理部の暴走監視に用いる第２のウォッチドッグタイマーと、
第１乃至第３の診断回路と、を備え、
前記第１の診断回路は、前記第２のウォッチドッグタイマーを監視し、監視結果が異常であるか否かを示す第１の診断結果信号を生成し、
前記第３の診断回路は、前記第１のウォッチドッグタイマーを監視し、監視結果が異常であるか否かを示す第２の診断結果信号を生成し、
前記第２の診断回路は、前記第１の診断結果信号に基づいて前記第１の診断回路が異常であるか否かを判定し、前記第２の診断結果信号に基づいて前記第３の診断回路が異常であるか否かを判定する半導体装置。
【請求項２】
前記第２の診断回路は、前記第１の診断結果信号に基づいて前記第２のウォッチドッグタイマーが異常であるか否かを判定し、前記第２の診断結果信号に基づいて前記第１のウォッチドッグタイマーが異常であるか否かを判定することを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記第２の診断回路は、前記第２の診断回路自体が正常に動作しているか否かを示す第１の動作通知信号を生成し、
前記第１の診断回路及び前記第３の診断回路の少なくとも一方は、前記第１の動作通知信号に基づいて前記第２の診断回路が異常であるか否かを判定することを特徴とする請求項１または請求項２に記載の半導体装置。
【請求項４】
前記第１乃至第３の診断回路の各々は異常箇所判定回路を備え、
前記第２の診断回路は、前記第１の診断回路を監視し、監視結果が異常であるか否かを示す第３の診断結果信号を生成し、
前記第１の診断回路は、前記第１の診断回路自体が正常に動作していることを示す第２の動作通知信号を生成し、
前記第３の診断回路は、前記第３の診断回路自体が正常に動作していることを示す第３の動作通知信号を生成し、
前記第１乃至第３の診断回路の各々に備えられた前記異常箇所判定回路は、前記第１乃至第３の診断結果信号及び前記第１乃至第３の動作通知信号に基づいて異常箇所を特定することを特徴とする請求項３に記載の半導体装置。
【請求項５】
前記第１乃至第３の診断回路の各々に備えられた前記異常箇所判定回路は、
前記第１の診断結果信号の供給が無く、前記第２の動作通知信号が正常に通知され、前記第２または前記第３の診断回路による監視結果が正常である場合には前記第２のウォッチドッグタイマーが異常と判定し、
前記第１の診断結果信号の供給が無く、前記第２の動作通知信号が通知されず、前記第２または前記第３の診断回路による監視結果が正常である場合には前記第１の診断回路が異常と判定し、
前記第１の診断結果信号の供給が無く、前記第２の動作通知信号が通知されず、前記第２の診断回路による監視結果が異常である場合には前記第１の診断回路が異常と判定し、
前記第３の診断結果信号の供給が無く、前記第１の動作通知信号が正常に通知され、前記第１または前記第３の診断回路による監視結果が正常である場合には前記第１の診断回路が異常と判定し、
前記第３の診断結果信号の供給が無く、前記第１の動作通知信号が通知されず、前記第１または前記第３の診断回路による監視結果が正常である場合には前記第２の診断回路が異常と判定し、
前記第２の診断結果信号の供給が無く、前記第３の動作通知信号が正常に通知され、前記第１または前記第２の診断回路による監視結果が正常である場合には前記第１のウォッチドッグタイマーが異常と判定し、
前記第２の診断結果信号の供給が無く、前記第３の動作通知信号が通知されず、前記第１または前記第２の診断回路による監視結果が正常である場合には前記第３の診断回路が異常と判定することを特徴とする請求項４に記載の半導体装置。
【請求項６】
第１乃至第３のクロックソースをさらに備え、
前記第１のクロックソースは、前記第１のウォッチドッグタイマー及び前記第２の診断回路にクロックを供給し、
前記第２のクロックソースは、前記第１の診断回路及び前記演算処理部にクロックを供給し、
前記第３のクロックソースは、前記第２のウォッチドッグタイマー及び前記第３の診断回路にクロックを供給することを特徴とする請求項４または請求項５に記載の半導体装置。
【請求項７】
前記第１の診断回路は、前記第２のクロックソースからのクロックが所定数通知される間に、前記第２のウォッチドッグタイマーから通知されるカウントがあるか否かに基づいて前記第２のウォッチドッグタイマーの監視結果を判定し、
前記第２の診断回路は、前記第１のクロックソースからのクロックが所定数通知される間に、前記第１の診断回路から通知されるカウントがあるか否かに基づいて前記第１の診断回路の監視結果を判定し、
前記第３の診断回路は、前記第３のクロックソースからのクロックが所定数通知される間に、前記第１のウォッチドッグタイマーから通知されるカウントがあるか否かに基づいて前記第１のウォッチドッグタイマーの監視結果を判定することを特徴とする請求項６に記載の半導体装置。
【請求項８】
前記第１の診断回路は、前記第２のクロックソースからのクロックが所定数通知される間に、前記第２のウォッチドッグタイマーから通知されるカウント数が所定閾値を超えている場合に前記第３のクロックソースが周波数異常を起こしていると判定し、
前記第２の診断回路は、前記第３のクロックソースからのクロックが所定数通知される間に、前記第１の診断回路から通知されるカウント数が所定閾値を超えている場合に前記第２のクロックソースが周波数異常を起こしていると判定し、
前記第３の診断回路は、前記第３のクロックソースからのクロックが所定数通知される間に、前記第１のウォッチドッグタイマーから通知されるカウント数が所定閾値を超えている場合に前記第１のクロックソースが周波数異常を起こしていると判定することを特徴とする請求項６に記載の半導体装置。
【請求項９】
前記演算処理部は、周波数異常を起こしているクロックソースを停止させることを特徴とする請求項８に記載の半導体装置。
【請求項１０】
請求項１乃至請求項９のいずれか１項に記載の半導体装置を備える計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関する。
【背景技術】
【０００２】
電子機器等に組み込まれるＣＰＵ（Central Processing Unit: 中央演算処理装置）の暴走対策の一つとしてウォッチドッグタイマーによる制御が挙げられる。ウォッチドッグタイマーは、監視対象であるＣＰＵが正常である場合には永久に動作しない。しかし、ウォッチドッグタイマーはＣＰＵが異常である場合には正しく動作する必要がある。そのため、ウォッチドッグタイマーの信頼性向上はＣＰＵの異常対応を行う上で重要である。
【０００３】
特許文献１には、ウォッチドッグタイマーの動作確認を行う技術が開示されている。特許文献１に記載の電子機器は、ＣＰＵに対して２つのウォッチドッグタイマーを備える。各ウォッチドッグタイマーは、内部にカウンタを備え、カウント処理を行う。ＣＰＵは、２つのウォッチドッグタイマーにウォッチドッグクリア信号を供給する。ウォッチドッグクリア信号が供給された場合、ウォッチドッグタイマーは内部のカウント値をクリアする。カウント値がオーバーフローした場合、ウォッチドッグタイマーはリセット信号を論理結合素子に対して供給する。２つのウォッチドッグタイマーからのリセット信号が論理結合素子に供給された場合、当該論理結合素子はリセット信号をＣＰＵに供給する。すなわち、１つのウォッチドッグタイマーからのみリセット信号が出力された場合、ＣＰＵはリセットされない。
【０００４】
ＣＰＵは動作中に一方のウォッチドッグクリア信号を意図的に停止し、当該信号を供給していたウォッチドッグタイマーが正しく動作するかを判定する。つまり、当該ウォッチドッグタイマーがリセット信号を出力するか否かを判定する。上述の動作により、特許文献１に記載の電子機器は、ＣＰＵの動作中にウォッチドッグタイマーが正しく動作するか否かを判定することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１３１９０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の電子機器においては、ウォッチドッグタイマーの動作判定に用いる箇所に故障がある場合に正しくウォッチドッグタイマーの故障検知が出来ないという問題がある。たとえば、２つのウォッチドッグタイマーからリセット信号が供給される論理結合素子に故障が生じた場合、正しくウォッチドッグタイマーの異常検知が出来ない。
【課題を解決するための手段】
【０００７】
本発明にかかる半導体装置の一態様は、演算処理部と、前記演算処理部の暴走監視に用いる第１のウォッチドッグタイマーと、前記演算処理部の暴走監視に用いる第２のウォッチドッグタイマーと、第１乃至第３の診断回路と、を備え、前記第１の診断回路は、前記第２のウォッチドッグタイマーを監視し、監視結果が異常であるか否かを示す第１の診断結果信号を生成し、前記第３の診断回路は、前記第１のウォッチドッグタイマーを監視し、監視結果が異常であるか否かを示す第２の診断結果信号を生成し、前記第２の診断回路は、前記第１の診断結果信号に基づいて前記第１の診断回路が異常であるか否かを判定し、前記第２の診断結果信号に基づいて前記第３の診断回路が異常であるか否かを判定するものである。
【０００８】
本発明においては、第２の診断回路に、第１の診断回路及び第３の診断回路から監視結果が正常であるか否かの通知が供給される。第２の診断回路は、ウォッチドッグタイマーの監視を行う第１及び第３の診断回路の診断処理を行う。これにより、本発明にかかる半導体装置は、ウォッチドッグタイマーを監視する診断回路に異常が起きた場合にも適切な対応ができる。
【発明の効果】
【０００９】
本発明によれば、ウォッチドッグタイマーの故障診断に用いる回路に異常があった場合であっても適切な対応ができる半導体装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかる半導体装置の構成を示すブロック図である。
【図２】実施の形態１にかかる半導体装置の異常判定を示す図である。
【図３】実施の形態２にかかる半導体装置の構成を示すブロック図である。
【図４】実施の形態２にかかる半導体装置の異常判定を示す図である。
【図５】実施の形態３にかかる半導体装置の構成を示すブロック図である。
【図６】実施の形態３にかかる半導体装置の異常判定を示す図である。
【図７】実施の形態４にかかる半導体装置の構成を示すブロック図である。
【図８】実施の形態４にかかる診断回路１の詳細を示すブロック図である。
【図９】実施の形態４にかかる半導体装置の異常判定を示す図である。
【図１０】実施の形態４にかかる半導体装置の動作を示すタイミングチャートである。
【図１１】実施の形態４にかかる半導体装置の動作を示すタイミングチャートである。
【図１２】実施の形態４にかかる半導体装置の動作を示すタイミングチャートである。
【図１３】実施の形態５にかかる半導体装置の構成を示すブロック図である。
【図１４】実施の形態５にかかる診断回路１の詳細を示すブロック図である。
【図１５】実施の形態５にかかる半導体装置の周波数異常判定を示す図である。
【発明を実施するための形態】
【００１１】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は本実施の形態にかかる半導体装置の構成を示すブロック図である。当該半導体装置は、例えばフラッシュ内蔵マイクロコンピュータ、マスクＲＯＭ（Read Only Memory）搭載マイクロコンピュータ、マルチＣＰＵプロセッサ等の半導体装置に搭載され得る。
【００１２】
半導体装置１０は、ＣＰＵ１００と、ウォッチドッグタイマー１（２００）と、ウォッチドッグタイマー２（２１０）と、診断回路１（３００）と、診断回路２（３１０）と、診断回路３（３２０）と、を備える。
【００１３】
ＣＰＵ１００は、ウォッチドッグタイマーによって暴走監視対象となる演算処理部である。ＣＰＵ１００は、ウォッチドッグタイマー１（２００）及びウォッチドッグタイマー２（２１０）に対してウォッチドッグタイマークリア信号を供給する。ウォッチドッグタイマークリア信号は、ウォッチドッグタイマー内のカウントをリセットし、ウォッチドッグタイマーがＣＰＵ１００にリセット信号を供給しないように制御するための信号である。また、ＣＰＵ１００には、ウォッチドッグタイマーのカウント値がオーバーフローした場合（所定値を超えた場合）にリセット信号が供給される。さらにまた、ＣＰＵ１００には、各診断回路（診断回路１（３００）、診断回路２（３１０）、診断回路３（３２０））が各診断回路の監視対象が異常であることを検知した場合、異常通知信号が供給される。ＣＰＵ１００に対して異常通知信号が通知された場合、ＣＰＵ１００は異常箇所にかかるフェイルセーフ処理を行う。フェイルセーフ処理の詳細は後述する。
【００１４】
ウォッチドッグタイマー１（２００）は、ＣＰＵ１００の暴走検知を行う。ウォッチドッグタイマー１（２００）は内部にクロックをカウントするカウンタを持つ。当該カウンタのカウント値がオーバーフローした場合、ウォッチドッグタイマー１（２００）はＣＰＵ１００にリセット信号を供給する。また、ウォッチドッグタイマー１（２００）は、ＣＰＵ１００からウォッチドッグタイマークリア信号が供給された場合に、内部のカウント値をリセットする。さらにまた、ウォッチドッグタイマー１（２００）は、診断回路３（３２０）に対し、クロックのカウントに合わせて通知を行う。当該通知は、ウォッチドックタイマー１（２００）が正常にカウントアップ処理をしている場合に行われる。
【００１５】
ウォッチドッグタイマー２（２１０）は、ＣＰＵ１００の暴走検知を行う。ウォッチドッグタイマー２（２１０）は内部にクロックをカウントするカウンタを持つ。当該カウンタのカウント値がオーバーフローした場合、ウォッチドッグタイマー２（２１０）はＣＰＵ１００にリセット信号を供給する。また、ウォッチドッグタイマー２（２１０）は、ＣＰＵ１００からウォッチドッグタイマークリア信号が供給された場合に、内部のカウント値をリセットする。さらにまた、ウォッチドッグタイマー２（２１０）は、診断回路１（３００）に対し、クロックのカウントに合わせて通知を行う。当該通知は、ウォッチドックタイマー２（２１０）が正常にカウントアップ処理をしている場合に行われる。
【００１６】
診断回路１（３００）は、ウォッチドッグタイマー２（２１０）の動作診断を行う回路である。診断回路１（３００）は、ウォッチドッグタイマー２（２１０）の動作の診断結果を示す診断結果信号１を診断回路２（３１０）に供給する。ウォッチドッグタイマー２（２１０）からクロックカウントの通知があった場合、診断回路１（３００）はウォッチドッグタイマー２（２１０）が正常であることを示す診断結果信号１（ＨＩＧＨ）を診断回路２（３１０）に供給する。診断結果信号１は所謂パルス波であり、正常判定時にのみＨＩＧＨとなる。診断回路１（３００）は、ウォッチドッグタイマー２（２１０）が異常であると判定した場合、異常通知信号１をＣＰＵ１００に供給する。
【００１７】
なお、診断結果信号１は、正常判定時にＬＯＷとなる信号であってもよく、ウォッチドッグタイマー２（２１０）の正否を通知できるものであればよい。後述の診断結果信号２、３についても同様である。
【００１８】
診断回路３（３２０）は、ウォッチドッグタイマー１（２００）の動作診断を行う回路である。診断回路３（３２０）は、ウォッチドッグタイマー１（２００）の動作の診断結果を示す診断結果信号３を診断回路２（３１０）に供給する。ウォッチドッグタイマー１（２００）からクロックカウントの通知があった場合、診断回路３（３２０）はウォッチドッグタイマー１（２００）が正常であることを示す診断結果信号３（ＨＩＧＨ）を診断回路２（３１０）に供給する。診断回路３（３２０）は、ウォッチドッグタイマー１（２００）が異常であると判定した場合、異常通知信号３をＣＰＵ１００に供給する。
【００１９】
診断回路２（３１０）には、診断回路１（３００）及び診断回路３（３２０）から診断結果信号が供給される。診断回路１（３００）から正常であることを示す診断結果信号１（ＨＩＧＨ）が供給されない場合、診断回路２（３１０）は診断回路１（３００）またはウォッチドッグタイマー２（２１０）が異常であると判定する。同様に診断回路３（３２０）から正常であることを示す診断結果信号３（ＨＩＧＨ）が供給されない場合、診断回路２（３１０）は診断回路３（３２０）またはウォッチドッグタイマー１（２００）が異常であると判定する。そして、診断回路２（３１０）は異常箇所を通知するための異常通知信号２をＣＰＵ１００に対して供給する。
【００２０】
続いて、図２を参照して各診断回路の診断結果と異常箇所との関係を説明する。図２は、各診断回路の診断結果と異常箇所との関係を示す表である。図２の表において「ＯＫ」とは、監視対象が異常ではないと判定したことを示す。また、「ＮＧ」とは、監視対象が異常であると判定したことを示す。
【００２１】
診断回路１（３００）が異常判定をした場合、ウォッチドッグタイマー２（２１０）が異常であると特定する。診断回路１（３００）は、異常箇所を異常通知信号１によりＣＰＵ１００に通知する。異常通知信号１を供給されたＣＰＵ１００は、フェイルセーフ動作として例えばウォッチドッグタイマー２（２１０）を停止させる。
【００２２】
診断回路２（３１０）に対して、診断回路１（３００）からウォッチドッグタイマー１（２００）が正常であることを示す診断結果信号１（ＨＩＧＨ）が供給されなかった場合、診断回路２（３１０）は診断回路１（３００）またはウォッチドッグタイマー２（２１０）が異常であると判定する。診断回路２（３１０）は、診断回路１（３００）またはウォッチドッグタイマー２（２１０）が異常であることを異常通知信号２によりＣＰＵ１００に通知する。異常通知信号２を供給されたＣＰＵ１００は、フェイルセーフ処理として例えばウォッチドッグタイマー２（２１０）を停止させる。
【００２３】
診断回路２（３１０）に診断回路３（３２０）からのウォッチドッグタイマー１（２００）が正常であることを示す診断結果信号３（ＨＩＧＨ）が供給されなかった場合、診断回路２（３１０）は診断回路３（３２０）またはウォッチドッグタイマー１（２００）が異常であると判定する。診断回路２（３１０）は、診断回路３（３２０）またはウォッチドッグタイマー１（２００）が異常であることを異常通知信号２によりＣＰＵ１００に通知する。異常通知信号２を供給されたＣＰＵ１００は、フェイルセーフ処理として例えばウォッチドッグタイマー１（２００）を停止させる。
【００２４】
診断回路３（３２０）が異常判定をした場合、ウォッチドッグタイマー１（２００）が異常であると特定する。診断回路３（３２０）は、異常箇所を異常通知信号３によりＣＰＵ１００に通知する。異常通知信号３を供給されたＣＰＵ１００はフェイルセーフ動作として例えばウォッチドッグタイマー１（２００）を停止させる。
【００２５】
なお、上述の説明では、ＣＰＵ１００が異常箇所等を停止させるフェイルセーフ動作を行ったが必ずしもこれに限られない。異常箇所を特定した診断回路が当該異常箇所を停止させてもよい。例えば、診断回路３（３２０）またはウォッチドッグタイマー１（２００）が異常であることを検出した診断回路２（３１０）は、ウォッチドッグタイマー１（２００）を停止させてもよい。
【００２６】
続いて、本実施の形態にかかる半導体装置の効果について説明する。上述のように半導体装置１０は、ウォッチドッグタイマーの監視を行う診断回路１（３００）及び診断回路３（３２０）から診断結果信号が供給される診断回路２（３１０）を備える。診断回路２（３１０）は、診断結果信号の供給がない診断回路、または当該診断回路が監視していたウォッチドッグタイマーが異常であると判断可能である。ＣＰＵ１００は、異常と判断された箇所について適切なフェイルセーフ処理を実行することができる。これにより、ウォッチドッグタイマーを監視している回路に異常があったとしても適切にフェイルセーフ処理を行うことができる。
【００２７】
以下に、本実施の形態にかかる半導体装置の各構成要素と請求項の記載との対応を示す。診断回路１（３００）は、請求項に記載の第１の診断回路と対応する。診断回路２（３１０）は、請求項に記載の第２の診断回路と対応する。診断回路３（３２０）は、請求項に記載の第３の診断回路に対応する。診断結果信号１は請求項記載の第１の診断結果信号に対応する。診断結果信号３は、請求項記載の第２の診断結果信号に対応する。ウォッチドッグタイマー１は、請求項記載の第１のウォッチドッグタイマーに対応する。ウォッチドッグタイマー２は、請求項記載の第２のウォッチドッグタイマーに対応する。当該対応関係は、以降の実施の形態においても同様である。
【００２８】
＜実施の形態２＞
本発明の実施の形態２にかかる半導体装置は、診断回路２が正常動作している旨を診断回路１、３に通知することを特徴とする。図３を参照して本実施の形態にかかる半導体装置の基本構成及び動作について、実施の形態１と異なる部分を説明する。
【００２９】
診断回路２（３１０）は、診断回路２（３１０）自身が正しく動作していることを示す動作通知信号を定期的に診断回路１（３００）及び診断回路３（３２０）に供給する。診断回路１（３００）及び診断回路３（３２０）は、ウォッチドッグタイマーの異常判定に加えて診断回路２（３１０）が正しく動作しているか否かも判定する。すなわち、診断回路１（３００）及び診断回路３（３２０）は、診断回路２（３１０）から定期的に動作通知信号が供給されなかった場合、診断回路２（３１０）が異常であると判定する。
【００３０】
診断回路２（３１０）が異常であると判定した場合、診断回路１（３００）または診断回路３（３２０）はその旨を異常通知信号によりＣＰＵ１００に通知する。ＣＰＵ１００は、異常と判断された診断回路２（３１０）にかかるフェイルセーフ処理を行う。例えば、ＣＰＵ１００は、ＣＰＵ１００を内蔵している電子機器の表示部に診断回路２（３１０）が異常であることを表示する。
【００３１】
次に、図４を参照して各診断回路の診断結果と異常箇所との関係を説明する。図４は、各診断回路の診断結果と異常箇所との関係を示す表である。本実施の形態において、診断回路２（３１０）が動作通知信号を供給しなかった場合に診断回路２（３１０）が異常であると判断する点が実施の形態１と異なる。
【００３２】
続いて、本実施の形態にかかる半導体装置の効果について説明する。本実施の形態にかかる半導体装置において、診断回路１（３００）及び診断回路３（３２０）は、診断回路２（３１０）が正常動作しているか否かを定期的に確認することができる。これにより、診断回路２（３１０）が異常である場合に、ＣＰＵ１００または他の回路は適切なフェイルセーフ処理を行うことができる。すなわち、実施の形態１に比べてより詳細なフェイルセーフ処理が実行可能である。
【００３３】
なお、診断回路２（３１０）は、必ずしも診断回路１（３００）及び診断回路３（３２０）に動作通知信号を供給する必要はなく、一方のみに当該信号を供給してもよい。この場合、動作通知信号が供給される診断回路が診断回路２（３１０）の異常診断を行う。
【００３４】
診断回路２（３１０）が出力する動作通知信号は、請求項記載の第１の動作通知信号に対応する。当該対応関係は、以降の実施の形態においても同様である。
【００３５】
＜実施の形態３＞
本発明の実施の形態３にかかる半導体装置は、診断回路が相互に動作通知信号を供給することを特徴とする。図５を参照して本実施の形態にかかる半導体装置の基本構成及び動作について、実施の形態１及び２と異なる部分を説明する。
【００３６】
診断回路１（３００）は、診断結果信号１を診断回路２（３１０）及び診断回路３（３２０）に供給する。診断結果信号１は、実施の形態１及び２と同様に、ウォッチドッグタイマー２（２１０）が正常に動作している場合にのみＨＩＧＨとなるパルス信号である。また、診断回路１（３００）は、診断回路１（３００）自身が正しく動作していることを示す動作通知信号を定期的に診断回路２（３１０）及び診断回路３（３２０）に供給する。
【００３７】
診断回路１（３００）は内部にクロックをカウントするカウンタを持つ。診断回路１（３００）は、診断回路２（３１０）に対し、クロックのカウントに合わせて通知を行う。当該通知は、診断回路１（３００）が正常にカウントアップ処理をしている場合に通知される。
【００３８】
診断回路２（３１０）は、診断回路１（３００）の動作診断を行う。診断回路１（３００）からクロックカウントの通知があった場合、診断回路２（３１０）は診断回路１（３００）が正常であることを示す診断結果信号２（ＨＩＧＨ）を出力する。当該診断結果信号２は、診断回路１（３００）及び診断回路３（３２０）に供給される。
【００３９】
診断回路３（３２０）は、診断結果信号３を診断回路１（３００）及び診断回路２（３１０）に供給する。診断結果信号３は、実施の形態１及び２と同様に、ウォッチドッグタイマー１（２００）が正常に動作している場合にのみＨＩＧＨとなるパルス信号である。また、診断回路３（３２０）は、診断回路３（３２０）自身が正しく動作していることを示す動作通知信号を定期的に診断回路１（３００）及び診断回路２（３１０）に供給する。
【００４０】
また、各診断回路（診断回路１〜３）は、内部に異常箇所判定回路を備える。当該異常箇所判定回路は、後述する診断表（図６）に基づいて異常箇所を一か所に特定する回路である。異常箇所の特定が出来た場合、各診断回路は異常通知信号により異常箇所をＣＰＵ１００に通知する。
【００４１】
次に、図６を参照して各診断回路の診断結果と異常箇所との関係について説明する。なお、一般の半導体装置等において、ウォッチドッグタイマー、診断回路が複数同時に異常となることは稀である。よって、本実施の形態においては、異常箇所が一か所であるものとして各診断回路内の異常箇所特定回路が異常箇所の特定を行う方法を説明する。なお表中の「診断結果信号１（ＨＩＧＨ）供給無」とは、ＨＩＧＨの値をもつ診断結果信号１が診断回路２（３１０）及び診断回路３（３２０）に供給されていないことを示す。「診断結果信号２（ＨＩＧＨ）供給無」は、診断結果信号２が診断回路１（３００）及び診断回路３（３２０）に供給されていないことを示す。「診断結果信号３（ＨＩＧＨ）供給無」は、診断結果信号３が診断回路１（３００）及び診断回路２（３１０）に供給されていないことを示す。
【００４２】
他の診断回路からのＨＩＧＨの値を持つ診断結果信号（診断結果信号１〜３）が供給され、監視対象が正しく動作していると判断した場合、異常箇所特定回路は異常となっている箇所がないと判定する（表中の"１"、"３"、"５"）。
【００４３】
他の診断回路からのＨＩＧＨの値を持つ診断結果信号（診断結果信号１〜３）が供給され、かつ監視対象が正しく動作していないと判断した場合、異常箇所特定回路は当該正しく動作していない監視対象が異常であるものと判定する（表中の"２"、"４"、"６"）。たとえば、診断回路１（３００）内の異常箇所判定回路は、他の診断回路からＨＩＧＨの値を持つ診断結果信号が供給され、かつ監視対象であるウォッチドッグタイマー２（２１０）が異常と判定した場合、異常箇所はウォッチドッグタイマー２（２１０）であると判定する（表中の"２"）。
【００４４】
次に、診断結果信号１としてＨＩＧＨ信号が供給されていない場合について説明する。この場合、診断回路１（３００）が監視対象としているウォッチドッグタイマー２（２１０）または診断回路１（３００）が異常である。ここで、診断回路１（３００）から正常に動作通知信号が供給されている場合、診断回路１（３００）は正常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路はウォッチドッグタイマー２（２１０）が異常と判定する（表中の"７"、"１１"）。ウォッチドッグタイマー１についても異常と判定された場合（表中の"１３"）、異常箇所が複数あることになり、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。なお、表中の"９"に関しては、診断回路１（３００）が異常であり、かつ診断回路１（３００）が動作通知信号を供給していることとなり矛盾するため、考察対象外である。
【００４５】
一方、診断回路１（３００）から動作通知信号の供給が無い場合、診断回路１（３００）は異常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路は診断回路１（３００）が異常と判定する（表中の"８"、"１０"、"１２"）。ウォッチドッグタイマー１（２００）についても異常と判定された場合（表中の"１４"）には異常箇所が複数あることになるため、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。
【００４６】
次に、診断結果信号２としてＨＩＧＨ信号が供給されていない場合について説明する。この場合、診断回路２（３１０）が監視対象としている診断回路１（３００）または診断回路２（３１０）が異常である。ここで、診断回路２（３１０）から動作通知信号の供給がされている場合、診断回路２（３１０）は正常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路は診断回路１（３００）が異常と判定する（表中の"１５"、"１９"）。その他に異常と判断された箇所がある場合（表中の"１７"、"２１"）、異常箇所が複数あることになり、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。
【００４７】
一方、診断回路２（３１０）から動作通知信号の供給が無い場合、診断回路２（３１０）は異常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路は診断回路２（３１０）が異常と判定する（表中の"１６"、"２０"）。ウォッチドッグタイマー２（２１０）についても異常と判定された場合（表中の"１８"）、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。同様に、ウォッチドッグタイマー１（２００）についても異常と判定された場合（表中の"２２"）、異常箇所が複数あることになり、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。
【００４８】
次に、診断結果信号３としてＨＩＧＨ信号が供給されていない場合について説明する。この場合、診断回路３（３２０）が監視対象としているウォッチドッグタイマー１（２００）または診断回路３（３２０）が異常である。ここで、診断回路３（３２０）から動作通知信号の供給がされている場合、診断回路３（３２０）は正常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路はウォッチドッグタイマー１（２００）が異常と判定する（表中の"２３"、"２７"）。ウォッチドッグタイマー２（２１０）、診断回路１（３００）についても異常と判定された場合（表中の"２５"、"２９"）、異常箇所が複数あることになり、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。
【００４９】
一方、診断回路３（３２０）から動作通知信号の供給が無い場合、診断回路３（３２０）は異常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路は診断回路３（３２０）が異常と判定する（表中の"２４"、"２８"）。ウォッチドッグタイマー２（２１０）、診断回路１（３００）についても異常と判定された場合、異常箇所が複数あることになり、異常箇所特定回路は異常箇所を一か所に特定できない（表中の"２６"、"３０"）。
【００５０】
続いて、本実施の形態にかかる半導体装置の効果について説明する。上述のように、診断回路が相互に正常に動作していることの通知を行う。これにより、ＨＩＧＨの値を持つ診断結果信号が供給されない場合に、異常箇所特定回路は監視対象が異常であるか、監視している診断回路が異常であるかを切り分けることができる。例えば、診断結果信号１としてＨＩＧＨ信号が供給されず、診断回路１（３００）から正常に動作通知信号が供給されている場合、異常箇所特定回路はウォッチドッグタイマー２（２１０）が異常と特定できる。また、診断結果信号２としてＨＩＧＨ信号が供給されず、診断回路２（３１０）から正常に動作通知信号が供給されている場合、異常箇所特定回路は診断回路１（３００）が異常と特定できる。このように、異常箇所を細かく検出することができる。異常箇所を細かく検出できることにより、ＣＰＵ１００は異常箇所に応じた適切なフェイルセーフ処理を実施することができる。
【００５１】
なお、フェイルセーフ処理は、実施の形態１及び２において説明した処理とほぼ同様である。例えば、ウォッチドッグタイマー２（２１０）が異常である場合、ＣＰＵ１００はウォッチドッグタイマー２（２１０）を停止させる。
【００５２】
診断回路１（３００）が出力する動作通知信号は、請求項記載の第２の動作通知信号に対応する。診断回路３（３２０）が出力する動作通知信号は、請求項記載の第３の動作通知信号に対応する。当該対応関係は、以降の実施の形態においても同様である。
【００５３】
＜実施の形態４＞
本発明の実施の形態４にかかる半導体装置は、複数のクロックソースを備えることを特徴とする。図７を参照して本実施の形態にかかる半導体装置の基本構成及び動作について、実施の形態１、２、及び３と異なる部分を説明する。なお、本実施の形態にかかる半導体装置においても、異常箇所を一か所として特定するものとする。
【００５４】
半導体装置は、実施の形態３の構成に加えて、クロックソース１（４００）と、クロックソース２（４１０）と、クロックソース３（４２０）と、を備える。クロックソース１（４００）は、ウォッチドッグタイマー１（２００）及び診断回路２（３１０）に対してクロックを供給する。クロックソース２（４１０）は、ＣＰＵ１００及び診断回路１（３００）に対してクロックを供給する。クロックソース３（４２０）は、ウォッチドッグタイマー２（２１０）及び診断回路３（３２０）に対してクロックを供給する。なお、各クロックソースの動作周波数は同じである必要はない。
【００５５】
次に、図８を用いて本実施の形態における診断回路１（３００）の構成を説明する。診断回路１（３００）は、カウント回路３００１と、動作診断回路３００２と、異常箇所特定回路３００３と、を備える。
【００５６】
カウント回路３００１は、クロックソース２（４１０）から供給されるクロックをカウントする回路である。カウント回路３００１は、カウントしたクロック数を動作診断回路３００２に通知する。
【００５７】
動作診断回路３００２は、ウォッチドッグタイマー２（２１０）からの通知（クロックがウォッチドッグタイマー２（２１０）に供給される度に行われる通知）と、カウント回路３００１からのクロック数と、が入力される。動作診断回路３００２は、クロックソース２（４１０）の動作周波数と、ウォッチドッグタイマー２（２１０）にクロックを供給するクロックソース３（４２０）の動作周波数と、の関係からウォッチドッグタイマー２（２１０）の動作診断を行う。
【００５８】
例えば、クロックソース２（４１０）の動作周波数が８０Ｈｚ、クロックソース３（４２０）の動作周波数が２０Ｈｚとする。この場合、たとえば動作診断回路３００２は、クロックソース２（４１０）から５回クロックが供給される間にウォッチドッグタイマー２（２１０）から１回以上通知があるか否かを判定する。１回以上通知がある場合、動作診断回路３００２はウォッチドッグタイマー２（２１０）が動作していると判定する。動作診断回路３００２は、当該判定結果を異常箇所判定回路３００３に通知する。
【００５９】
異常箇所特定回路３００３には、動作診断回路３００２からの診断結果が供給される。また、異常箇所特定回路３００３には、診断回路２（３１０）からの動作通知信号及び診断結果信号２が供給される。同様に異常箇所特定回路３００３には、診断回路３（３２０）からの動作通知信号及び診断結果信号３が供給される。
【００６０】
異常箇所特定回路３００３は、後述する診断表（図９）に基づいて異常箇所を一か所に特定する回路である。異常箇所の特定が出来た場合、各診断回路は異常通知信号により異常箇所をＣＰＵ１００に通知する。
【００６１】
なお、図示しないが診断回路２（３１０）及び診断回路３（３２０）の構成は、図８に示した構成と略同一である。
【００６２】
続いて、図９を参照して各診断回路の診断結果と異常箇所との関係を示す表である。図９における"１"〜"６"については実施の形態３と同様の判定を行うため詳細は割愛する。
【００６３】
診断結果信号１としてＨＩＧＨ信号が供給されていない場合について説明する。この場合、診断回路１（３００）が監視対象としているウォッチドッグタイマー２（２１０）、診断回路１（３００）、診断回路１（３００）にクロックを供給するクロックソース２（４１０）のいずれかが異常である。ここで、診断回路１（３００）から動作通知信号が供給されている場合、診断回路１（３００）及びクロックソース２（４１０）は正常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路はウォッチドッグタイマー２（２１０）が異常と判定する（表中の"７"、"１１"）。ウォッチドッグタイマー１（２００）についても異常と判定された場合（表中の"１３"）、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。
【００６４】
一方、診断回路１（３００）から動作通知信号の供給が無い場合、診断回路１（３００）、またはクロックソース２（４１０）のいずれかが異常である。クロックソース２（４１０）が異常である場合、ＣＰＵ１００にクロックが供給されないため、ＣＰＵ１００はリセット信号を出力する。よって、その他に異常と判断された箇所が無い場合であって、ＣＰＵ１００からリセット信号が出力されていない場合、異常箇所特定回路は診断回路１（３００）が異常と判断する（表中の"８"、"１０"、"１２"）。また、その他に異常と判断された箇所が無い場合であって、ＣＰＵ１００からリセット信号が出力されている場合、異常箇所特定回路はＣＰＵ１００が異常と判断する（表中の"８"、"１０"、"１２"）。ウォッチドッグタイマー１（２００）についても異常と判定された場合（表中の"１４"）、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。
【００６５】
次に、診断結果信号２としてＨＩＧＨ信号が供給されていない場合について説明する。この場合、診断回路２（３１０）が監視対象としている診断回路１（３００）、診断回路２（３１０）、診断回路２（３１０）にクロックを供給するクロックソース１（４００）、のいずれかが異常である。ここで、診断回路２（３１０）から動作通知信号が供給されている場合、診断回路２（３１０）及びクロックソース１（４００）は正常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路は診断回路１（３００）が異常と判定する（表中の"１５"、"１９"）。その他に異常と判断された箇所がある場合（表中の"１７"、"２１"）、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。
【００６６】
一方、診断回路２（３１０）から動作通知信号の供給が無い場合、診断回路２（３１０）またはクロックソース１（４００）は異常である。ここで、ウォッチドッグタイマー２（２１０）が正常と判断された場合（表中の"１６"）、クロックソース３（４２０）の正常動作は判断できるが、異常箇所特定回路は異常箇所を一か所に特定できない。ウォッチドッグタイマー１（２００）が正常と判断された場合（表中の"２０"）、ウォッチドッグタイマー１（２００）にクロックを供給するクロックソース１（４００）が正常であることがわかる。よって、異常箇所特定回路は診断回路２（３１０）が異常と判定する（表中の"２０"）。ウォッチドッグタイマー２（２１０）が異常と判定された場合（表中の"１８"）、異常箇所特定回路は異常箇所を一か所に特定できない。ウォッチドッグタイマー１（２００）が異常と判定された場合（表中の"２２"）、異常箇所特定回路はウォッチドッグタイマー１（２００）にクロックを供給しているクロックソース１（４００）が異常と特定する。
【００６７】
診断結果信号３としてＨＩＧＨ信号が供給されていない場合について説明する。この場合、診断回路３（３２０）が監視対象としているウォッチドッグタイマー１（２００）、診断回路３（３２０）、診断回路３（３２０）にクロックを供給するクロックソース３（４２０）のいずれかが異常である。ここで、診断回路３（３２０）から動作通知信号が供給されている場合、診断回路３（３２０）及びクロックソース３（４２０）は正常である。よって、その他に異常と判断された箇所が無い場合には、異常箇所特定回路はウォッチドッグタイマー１（２００）が異常と判定する（表中の"２３"、"２７"）。ウォッチドッグタイマー２（２１０）、診断回路１（３００）についても異常と判定された場合（表中の"２５"、"２９"）、異常箇所が複数あることとなり、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。
【００６８】
一方、診断回路３（３２０）から動作通知信号の供給が無い場合、診断回路３（３２０）、またはクロックソース３（４２０）のいずれかが異常である。ウォッチドッグタイマー２（２１０）が正常と判定された場合（表中の"２４"）、ウォッチドッグタイマー２（２１０）にクロックを供給するクロックソース３（４２０）は正常に動作している。そのため、異常個所特定回路は診断回路３（３２０）が異常と判定する（表中の"２４"）。診断回路１（３００）が正常と判定された場合（表中の"２８"）、異常個所特定回路は異常箇所を一か所に特定することが出来ない。診断回路１（３００）が異常と判定された場合（表中の"３０"）、異常箇所が複数あることとなり、異常箇所特定回路は異常箇所を一か所に特定することが出来ない。ウォッチドッグタイマー２（２１０）が異常と判定された場合（表中の"２６"）、ウォッチドッグタイマー２（２１０）にクロックを供給するクロックソース３（４２０）が異常である可能性がある。そのため、異常箇所特定回路は異常箇所がクロックソース３（４２０）であると特定する（表中の"２６"）。
【００６９】
次に、図１０〜１２のタイミングチャートを用いて診断回路１（３００）に関係する各処理部の動作について説明する。図１０は、正常動作時の処理を示すタイミングチャートである。
【００７０】
正常動作時には、ウォッチドッグタイマー２（２１０）は正常にクロックのカウントを続ける。また、ウォッチドッグタイマー２（２１０）からのクロックカウント通知が診断回路１（３００）に対して定期的に行われる。また、各診断回路は、他の診断回路に対して動作通知信号を定期的に供給する。
【００７１】
診断回路１（３００）はウォッチドッグタイマー２（２１０）が正常動作している診断結果を他の診断回路に通知する（診断結果信号１）。診断回路１（３００）には、診断回路３（３２０）からウォッチドッグタイマー１（２００）が正常動作していることを示す診断結果信号３が供給される。
【００７２】
よって、診断回路１（３００）内の異常個所判定回路は、異常である処理部が無いと判定する（ＬＯＷ信号のままとなる）。また、診断回路１（３００）が出力する異常通知信号１は、異常箇所が無いことを示すＬＯＷの値となる。
【００７３】
次に図１１を用いて、ウォッチドッグタイマー２（２１０）が異常となった場合の各処理部の動作について説明する。本例では、ウォッチドッグタイマー２（２１０）は、時刻Ｔ１において異常となる。この場合、ウォッチドッグタイマー２（２１０）から診断回路１（３００）に対するクロックのカウント通知が行われなくなる。所定の期間に当該カウント通知がなされない場合、診断回路１（３００）内の異常箇所判定回路は他の診断回路の診断結果を参照する。本例では、他の診断回路からの異常が通知されていない。そのため、時刻Ｔ２において異常箇所判定回路は、ウォッチドッグタイマー２（２１０）が異常であることを検出する。
【００７４】
異常が検出された場合、診断回路１（３００）はウォッチドッグタイマー２（２１０）が異常であることを通知する異常通知信号１をＣＰＵ１００に出力する。
【００７５】
次に図１２を用いて、診断回路３（３２０）が異常である場合の各処理部の動作について説明する。本例では、診断回路３（３２０）は時刻Ｔ３において異常となる。この場合、診断回路３（３２０）は他の診断回路に対して動作通知信号を供給しなくなる。
【００７６】
ここで、診断回路１（３００）内の異常箇所判定回路は、ウォッチドッグタイマー２（２１０）のカウント通知があることからクロックソース３（４２０）が正常と判断し、診断回路３（３２０）が異常と時刻Ｔ４において判定する。
【００７７】
よって、診断回路１（３００）は、診断回路３（３２０）が異常であることを異常通知信号１によりＣＰＵ１００に通知する。
【００７８】
他の診断回路に関するタイミングチャートも上述の図１０〜１２と略同一に表わすことができる。
【００７９】
なお、異常箇所を特定した後に行うフェイルセーフ処理は、実施の形態１〜３において説明した処理と同様である。
【００８０】
続いて、本実施の形態にかかる半導体装置の効果について説明する。上述のように、本実施の形態にかかる半導体装置は複数のクロックソースを備える。これにより、一のクロックソースが異常となった場合であっても、他のクロックソースからクロックを供給されている回路等が正常に動作を継続できる。
【００８１】
また、上述の診断表（表９）に基づいて異常箇所を細かく特定することにより、異常箇所にのみ対応したフェイルセーフ処理を実行することができる。例えば、診断回路２（３１０）が異常であると特定できた場合、クロックソース１（４００）は正常である。そのため、クロックソース１（４００）を停止させることなく、診断回路２（３１０）の異常に対応したフェイルセーフ処理が実行できる。
【００８２】
クロックソース１（４００）は、請求項記載の第１のクロックソースに対応する。クロックソース２（４１０）は、請求項記載の第２のクロックソースに対応する。クロックソース３（４２０）は、請求項記載の第３のクロックソースに対応する。当該対応関係は、以降の実施の形態においても同様である。
【００８３】
＜実施の形態５＞
本発明の実施の形態５にかかる半導体装置は、診断回路の内部構成が変更され、クロックソースの周波数異常も判定できることを特徴とする。図１３を参照して本実施の形態にかかる半導体装置の基本構成及び動作について、実施の形態４と異なる部分を説明する。
【００８４】
本実施の形態にかかるＣＰＵ１００は、クロックソースが周波数異常と判定された場合に、当該クロックソースを停止させる。周波数異常の判定方法は、後述する。
【００８５】
次に図１４を参照して、本実施の形態にかかる診断回路１（３００）の構成を説明する。本実施の形態にかかる診断回路１（３００）は、実施の形態４の診断回路１（３００）の構成と比べ、動作診断回路３００２が差分検出回路３００４に変更された構成である。
【００８６】
差分検出回路３００４は、ウォッチドッグタイマー２（２１０）が動作しているか否か、及びウォッチドッグタイマー２（２１０）にクロックを供給するクロックソース３（４２０）が周波数異常を起こしているか否かを検出する。差分検出回路３００４は、クロックソース２（４１０）の動作周波数と、クロックソース３（４２０）の動作周波数と、の関係からウォッチドッグタイマー２（２１０）が動作しているか、及びクロックソース３（４２０）が周波数異常を起こしていないかについての診断を行う。
【００８７】
例えば、クロックソース２（４１０）の動作周波数が８０Ｈｚ、クロックソース３（４２０）の動作周波数が２０Ｈｚとする。この場合において、クロックソース２（４１０）が５回カウントする間に通知されたウォッチドッグタイマー２（２１０）のカウント数と、診断結果と、の関係を図１５に示す。
【００８８】
この場合、理論上はクロックソース２（４１０）が５回カウントする間に、ウォッチドッグタイマー２（２１０）から１回強のカウントの通知がなされる。よって、ウォッチドッグタイマー２（２１０）からのカウントが１回または２回の場合、差分検出回路３００４はウォッチドッグタイマー２（２１０）が正常と判断する。一方、カウントが０回の場合、差分検出回路３００４はウォッチドッグタイマー２（２１０）が動作しておらず、異常と判断する。その後、異常箇所特定回路３００３に診断結果が通知され、異常箇所の特定が行われる。異常箇所の特定方法は、実施の形態４とほぼ同様である。
【００８９】
一方、ウォッチドッグタイマー２（２１０）からのカウントが３回以上の場合、クロックソース３（４２０）の動作周波数が異常となっている。この場合、差分検出回路３００４は、クロックソース３（４２０）が異常を起こしていることを示す異常通知信号１をＣＰＵ１００に供給する。
【００９０】
周波数異常が通知されたＣＰＵ１００は、周波数異常を起こしているクロックソース３（４２０）を直ちに停止させる。
【００９１】
なお、図示しないが診断回路２（３１０）及び診断回路３（３２０）の構成は、図１４に示した構成と略同一である。
【００９２】
上述の構成により、クロックソースの動作周波数の異常を検出することができる。これにより、周波数異常を起こしているクロックソースを停止する等のフェイルセーフ処理ができる。当該フェイルセーフ処理ができることにより、クロックソースの動作周波数が速く、ウォッチドッグタイマーからリセット信号が誤ってＣＰＵ１００に対して供給される不具合を回避できる。
【００９３】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。上述の半導体装置は任意の計算機に搭載することが可能である。
【符号の説明】
【００９４】
１０    半導体装置
１００  ＣＰＵ
２００  ウォッチドッグタイマー１
２１０  ウォッチドッグタイマー２
３００  診断回路１
３１０  診断回路２
３２０  診断回路３
４００  クロックソース１
４１０  クロックソース２
４２０  クロックソース３
【図１】
0005476238.tif 000002
【図２】
0005476238.tif 000003
【図３】
0005476238.tif 000004
【図４】
0005476238.tif 000005
【図５】
0005476238.tif 000006
【図６】
0005476238.tif 000007
【図７】
0005476238.tif 000008
【図８】
0005476238.tif 000009
【図９】
0005476238.tif 000010
【図１０】
0005476238.tif 000011
【図１１】
0005476238.tif 000012
【図１２】
0005476238.tif 000013
【図１３】
0005476238.tif 000014
【図１４】
0005476238.tif 000015
【図１５】
0005476238.tif 000016