(57)【要約】【課題】ＣＰＵのパフォーマンスに影響を及ぼすことなく、故障診断を行うことを可能にする半導体集積回路を提供する。【解決手段】通常動作において利用される第１のバスＢＵＳＡ、及びそれとは異なる第２のバスＢＵＳＡに接続されたＣＰＵ１から第２のバスを介して出力される診断情報に基づいて、診断マクロ６が誤り検出情報を求め、プログラムの実行に応じて求められた最終の誤り検出情報と保持している１つの期待値との比較によりＣＰＵが故障しているか否かを判定するようにして、通常動作に利用される第１のバスの負荷を増加させずに、故障診断を行えるようにする。【選択図】図１
2010276544.tif 000002
【特許請求の範囲】
【請求項１】
通常動作に係るデータが伝送される第１のバスに接続する第１のインタフェース、及び前記第１のバスとは異なる第２のバスに接続する第２のインタフェースを有する処理部と、
前記第２のバスに接続され、前記処理部から出力される診断情報に基づいて誤り検出情報を求め、求めた前記誤り検出情報に基づいて前記処理部が故障しているか否かを判定する診断部とを有し、
１つの期待値が保持され、
前記診断部は、プログラムの実行に応じて求められた最終の誤り検出情報と前記期待値との比較により前記処理部が故障しているか否かを判定することを特徴とする半導体集積回路。
【請求項２】
前記誤り検出情報は、チェックサムであることを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記第２のバスは、前記処理部から出力される前記処理部の内部状態を示す情報が伝送されるバスであることを特徴とする請求項１又は２記載の半導体集積回路。
【請求項４】
前記診断部で前記誤り検出情報と前記期待値との比較を行うタイミングを生成するタイマを有することを特徴とする請求項１〜３の何れか１項に記載の半導体集積回路。
【請求項５】
前記診断部は、前記誤り検出情報と前記期待値とが異なる場合には、前記処理部に対する割り込みを発行することを特徴とする請求項１〜４の何れか１項に記載の半導体集積回路。
【請求項６】
通常動作に係るデータが伝送される第１のバスに接続する第１のインタフェース、及び前記第１のバスとは異なる第２のバスに接続する第２のインタフェースを有する処理部から前記第２のバスに出力される診断情報に基づいて誤り検出情報を求める演算工程と、
求めた前記誤り検出情報に基づいて前記処理部が故障しているか否かを判定する判定工程とを有し、
１つの期待値を予め保持し、前記判定工程にて、診断プログラムの実行に応じて求められた最終の誤り検出情報と前記期待値とを比較し前記処理部が故障しているか否かを判定することを特徴とする半導体集積回路の故障診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路における故障診断技術に関する。
【背景技術】
【０００２】
近年、自動車向けのＬＳＩ（Large Scale Integration）などの半導体集積回路においては、半導体集積回路の故障検出を行い、重大な事故を招く前に、システムによって事故の発生を防ぐことが求められている。システムを構成する要素や部品の故障リスクを減らすような安全装置を機能として実装することで安全性を高める考え方は、機能安全と呼ばれている。例えば、電子機器の機能安全に関しては国際規格ＩＥＣ６１０５８が制定されており、また、自動車分野向けの機能安全に関しては国際規格ＩＳＯ２６２６２が制定される予定であり、今後、安全装置を実装するような機能安全に対する要求が高まる傾向にある。
【０００３】
図４に示すようなＣＰＵ（Central Processing Unit、中央処理装置）を搭載した半導体集積回路において、ＣＰＵの故障を検出する方法として、以下に説明するような方法がある。図４に示す半導体集積回路は、ＣＰＵ１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、及び周辺部１０４を有する。ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、及び周辺部１０４は、システムバスＢＵＳを介して互いに通信可能に接続されている。ＣＰＵ１０１は、ＲＯＭ１０２等に格納されているプログラムに従って処理を実行し、その処理に応じてＲＡＭ１０３や周辺部１０４等とシステムバスＢＵＳを介してデータのやりとりを行う。
【０００４】
また、図４に示す半導体集積回路は、故障診断機能に係る診断用データ取得部１０５及び期待値比較部１０６を有する。診断用データ取得部１０５は、ＣＰＵ１０１の出力をシステムバスＢＵＳに対して出力するための伝送経路に接続され、ＣＰＵ１０１の出力から故障判定に必要なデータを取得する。期待値比較部１０６は、診断用データ取得部１０５により取得されたデータと予め用意した期待値との比較を行う。
【０００５】
ＣＰＵ１０１の故障を診断するための診断プログラムが予め用意されてＲＯＭ１０２に格納され、故障診断時には、ＣＰＵ１０１は、ＲＯＭ１０２から診断プログラムを読み出して実行する。ＣＰＵ１０１は、診断プログラムに係る処理を１ステップずつ行って、処理結果を例えばＲＡＭ１０３にシステムバスＢＵＳを介してストアする。診断用データ取得部１０５は、システムバスＢＵＳを介してＣＰＵ１０１からＲＡＭ１０３や周辺部１０４に出力される診断プログラムの処理結果を、その伝送経路上から診断用のデータとして１ステップ毎に又は所定ステップ数毎に取得する。期待値比較部１０６は、診断用データ取得部１０５により取得されたデータ毎に、用意した期待値との比較を逐次行い、取得されたデータと期待値とが一致しない場合には故障であると判定する。
【０００６】
また、半導体記憶装置において、格納された各情報におけるチェックサムを予め格納しておき、試験時には、読み出した情報に基づいてチェックサムを算出し外部に出力するとともに、予め格納されているチェックサムを外部に出力することで、テスタ上でのチェックサムの計算を不要にする方法が提案されている（例えば、特許文献１参照。）。また、シフトパス構造を有する論理回路において、シミュレーションにより故障の場所及び内容を示す診断辞書を作成しておき、テスト時に論理回路の出力値と診断辞書の内容とを比較照合し、故障の場所及び内容を取得する方法が提案されている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平６−３６６００号公報
【特許文献２】特開平１１−２８７８４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述したＣＰＵを搭載した半導体集積回路における故障の検出方法では、故障判定に用いる診断用のデータを取得するための診断用データ取得部１０５が、ＣＰＵ１０１の出力をシステムバスＢＵＳに対して出力するための伝送経路に接続されている。そのため、ＣＰＵ１０１の出力に係る負荷が診断用データ取得部１０５によって増加してＣＰＵ１０１の出力に係る伝送速度が落ち、ＣＰＵ１０１のパフォーマンス（処理実行能力、性能）に影響を及ぼす。また、診断用データ取得部１０５により取得したデータ毎に、用意した期待値との比較を行う必要がある。
【０００９】
本発明の目的は、ＣＰＵのパフォーマンスに影響を及ぼすことなく、故障診断を行うことを可能にする半導体集積回路を提供することにある。
【課題を解決するための手段】
【００１０】
半導体集積回路の一態様は、通常動作に係るデータが伝送される第１のバスに接続する第１のインタフェース、及びそれとは異なる第２のバスに接続する第２のインタフェースを有する処理部と、第２のバスに接続され、処理部から出力される診断情報に基づいて誤り検出情報を求めて処理部が故障しているか否かを判定する診断部とを有する。診断部は、プログラムの実行に応じて求められた最終の誤り検出情報と保持している１つの期待値との比較により処理部が故障しているか否かを判定する。
【発明の効果】
【００１１】
通常動作に係るデータが伝送される第１のバスとは異なる第２のバスを介して診断情報を取得して処理部が故障しているか否かを判定するので、通常動作に利用される第１のバスの負荷は増加しない。したがって、パフォーマンスを低下させることなく、パフォーマンスに影響を及ぼさずに故障診断を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態における半導体集積回路の構成例を示す図である。
【図２】本実施形態における半導体集積回路の他の構成例を示す図である。
【図３】本実施形態における半導体集積回路の動作例を示すフローチャートである。
【図４】ＣＰＵを搭載した半導体集積回路の構成を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面に基づいて説明する。
【００１４】
図１は、本発明の実施形態における半導体集積回路の構成例を示すブロック図である。
図１に示す本実施形態における半導体集積回路は、ＣＰＵ（Central Processing Unit、中央処理装置）１、ＲＯＭ（Read Only Memory）２、ＲＡＭ（Random Access Memory）３、周辺部４、デバッガモジュール５、及び診断マクロ６を有する。
【００１５】
ＣＰＵ１は、プログラムを読み出して実行することで、半導体集積回路内の各機能部を制御する。例えば、ＣＰＵ１は、プログラムに従って処理を実行し、その処理に応じてＲＡＭ３や周辺部４とデータのやりとりを行う。ＣＰＵ１は、情報（データ）を入出力（入力又は出力の一方である場合も含む。）するための異なる２つのインタフェースＩＦＡ、ＩＦＢを有する。ＣＰＵ１は、第１のインタフェースＩＦＡによって第１のバスＢＵＳＡに接続され、第２のインタフェースＩＦＢによって第２のバスＢＵＳＢに接続される。
【００１６】
第１のバスＢＵＳＡは、通常動作において利用されるバス（通常動作に係る通常のデータのやりとりが行われるバス）であり、例えば、システムバス（あるいはリソースバス）と呼ばれる通常のデータのやりとりを行うためのバスである。本実施形態における半導体集積回路においては、第１のバスＢＵＳＡを介して、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、及び周辺部４が互いに通信可能に接続されている。なお、本実施形態では、故障診断のための診断プログラムをＣＰＵ１が実行しているときを故障診断動作と呼び、故障診断動作と区別して、診断プログラムとは異なる所定の機能処理を実現するためのプログラムをＣＰＵ１が実行しているときを通常動作と呼ぶ。
【００１７】
第２のバスＢＵＳＢは、通常動作には利用されないバス（通常動作に係る通常のデータのやりとりが行われないバス）であり、例えば、トレースバスと呼ばれる各種情報（例えば、デバッグ用のトレース情報（デバッグ情報））が伝送されるバスである。本実施形態における半導体集積回路においては、第２のバスＢＵＳＢを介して、ＣＰＵ１とデバッガモジュール５とが通信可能に接続されるとともに、伝送される各種情報を取得可能なように診断マクロ６が第２のバスＢＵＳＢに接続されている。
【００１８】
ＲＯＭ２には、ＣＰＵ１が実行するプログラムや、プログラムに従って行われる処理に用いるデータ等が格納されている。本実施形態においては、少なくとも故障診断を行うための診断プログラムがＲＯＭ２に格納されているものとする。なお、ＣＰＵ１が実行するプログラムや、それに係る処理に用いるデータ等は、周辺部４から供給するようにしても良いし、外部から周辺部４を介して供給するようにしても良い。
【００１９】
ＲＡＭ３は、ＣＰＵ１が実行するプログラムの処理結果等のデータを一時的に記憶するメモリであり、ＣＰＵ１のいわゆる主メモリあるいはワークエリア等として機能する。周辺部４は、所定の機能を実現する機能部である。
【００２０】
デバッガモジュール５は、実際の動作とは別にＣＰＵ１から第２のバスＢＵＳＢを介して出力されるＣＰＵ１の内部状態を示す各種情報を蓄積する。第２のバスＢＵＳＢを介してＣＰＵ１から出力される各種情報には、プログラムの実行中に蓄積され、プログラムに係る動作が異常である場合に蓄積された情報をたどっていき動作解析を行うための情報（例えば、デバッグ用のトレース情報（デバッグ情報））が含まれる。
【００２１】
診断マクロ６は、故障診断のための診断プログラムの実行に伴って第２のバスＢＵＳＢを介しＣＰＵ１から出力されるＣＰＵ１の内部状態を示す各種情報から、故障診断に利用する診断用のデータＴＩを抽出する。本実施形態では一例として、診断マクロ６は、ＣＰＵ１から出力されるデバッグ用のトレース情報から、命令実行アドレス、ストア命令時のストアアドレス、ストアデータ、ロード命令実行時のリードアドレス、リードデータを診断用のデータＴＩとして抽出する。
【００２２】
また、診断マクロ６は、抽出した診断用のデータＴＩに基づいて誤り検出情報を求め、求めた誤り検出情報に基づいてＣＰＵ１が故障しているか否かを判定する。例えば、診断マクロ６は、チェックサム演算部を有し、抽出した診断用のデータＴＩから誤り検出情報としてチェックサムを算出する。診断マクロ６は、診断プログラムの実行により得られる最終的なチェックサムの演算結果と、予め用意した期待値との比較を行い、比較結果に基づいて故障か否かを判定する。診断マクロ６におけるチェックサムの算出については、任意のチェックサムアルゴリズム方式（例えば、ＣＲＣチェックサム、Ａｌｄｅｒ−３２チェックサム、Ｆｌｅｔｃｈｅｒ−３２チェックサム等）が適用可能である。
【００２３】
図１に示す半導体集積回路において、通常動作時には、ＣＰＵ１が所定のプログラムに従って処理を実行し、ＣＰＵ１が処理に応じてＲＡＭ３や周辺部４等と第１のバスＢＵＳＡを介してデータのやりとりを行うことで、所定の機能処理を行う。
【００２４】
また、故障診断動作時には、ＣＰＵ１は、故障診断のための診断プログラムを読み出して実行する。診断プログラムの実行中、ＣＰＵ１は、処理に応じて第１のバスＢＵＳＡを介してＲＡＭ３や周辺部４等とデータのやりとりを行うとともに、第２のバスＢＵＳＢを介して実際の動作とは別にデバッグ用のトレース情報等の各種情報を出力する。また、診断プログラムの実行中、診断マクロ６は、ＣＰＵ１から第２のバスＢＵＳＢを介し出力される各種情報から故障診断に利用する診断用のデータＴＩを抽出して、抽出した診断用のデータＴＩを用いて誤り検出情報を求める。そして、診断マクロ６は、診断プログラムの実行を開始して以降の全期間にわたって求められた最終的な誤り検出情報と、予め用意されている期待値との比較を行い、最終的な誤り検出情報と期待値とが一致しない場合には故障であると判定し、一致する場合には故障でないと判定する。
【００２５】
このように、本実施形態における半導体集積回路は、通常動作において利用される第１のバスＢＵＳＡとは異なる通常動作には利用されない第２のバスＢＵＳＢを介して伝送される情報から診断用のデータＴＩを取得し、ＣＰＵ１の故障診断を行う。これにより、第１のバスＢＵＳＡに係る負荷を増加させることなく、故障診断を行うことができ、ＣＰＵ１のパフォーマンスも低下しない。したがって、ＣＰＵ１のパフォーマンスに影響を及ぼすことなく、故障診断を行うことが可能になる。
【００２６】
また、本実施形態における半導体集積回路では、取得した診断用のデータＴＩ毎に期待値との比較を行うのではなく、診断プログラムの実行により得られた最終的な誤り検出情報と期待値とを比較して故障であるか否かを判定するので、比較に係る処理量を軽減することができる。また、取得した診断用のデータＴＩ毎に期待値を用意する必要がなく、最終的な誤り検出情報と比較する１つの期待値だけを用意すれば良く、用意する期待値の数を削減でき、期待値を保持するための記憶容量を低減することができる。
【００２７】
図２は、本発明の実施形態における半導体集積回路の他の構成例を示すブロック図である。なお、図２において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００２８】
図２に示す半導体集積回路は、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、周辺部４、デバッガモジュール５、及び診断マクロ６に加え、期待値レジスタ１１、比較タイミング用タイマ１２、比較タイミング用タイマ値レジスタ１３、監視用タイマ１４、監視用タイマ値レジスタ１５、及び情報レジスタ１６を有する。
【００２９】
期待値レジスタ１１は、診断プログラムの実行に応じて算出される誤り検出情報の期待値を保持するレジスタである。診断マクロ６は、期待値レジスタ１１を参照し、期待値比較タイミングにおいて診断用のデータＴＩに基づき求めた誤り検出情報と期待値レジスタ１１に保持されている期待値との比較を行う。
【００３０】
比較タイミング用タイマ１２は、診断用のデータＴＩに基づき求めた誤り検出情報と期待値との比較を行う期待値比較タイミングを生成するタイマである。比較タイミング用タイマ１２は、診断プログラムの実行中において所定時間が経過する毎にタイマ値がカウントダウン（デクリメント）され、タイマ値が“０”となったとき期待値比較タイミングであることを示す。比較タイミング用タイマ値レジスタ１３は、期待値比較タイミングに係るタイマ値、言い換えれば比較タイミング用タイマ１２におけるタイマ値の初期値を保持するレジスタである。診断プログラムの実行が開始されると、比較タイミング用タイマ値レジスタ１３からタイマ値が比較タイミング用タイマ１２にロードされ設定される。
【００３１】
監視用タイマ１４は、診断プログラムの実行を開始した後、診断プログラムに係る処理が終了する時間が経過しても処理の終了が確認されない場合に、ＣＰＵ１に対してリセットをかけるリセットタイミングを生成するタイマである。監視用タイマ１４は、診断プログラムの実行中において所定時間が経過する毎にタイマ値がカウントダウン（デクリメント）され、タイマ値が“０”となったときリセットタイミングであることを示す。監視用タイマ値レジスタ１５は、リセットタイミングに係るタイマ値、言い換えれば監視用タイマ１４におけるタイマ値の初期値を保持するレジスタである。診断プログラムの実行が開始されると、監視用タイマ値レジスタ１５からタイマ値が監視用タイマ１４にロードされ設定される。
【００３２】
情報レジスタ１６は、故障診断動作に係る情報を保持するレジスタである。情報レジスタ１６は、ＣＰＵ１に対してリセットをかけた場合であってもリセット（初期化）されずに情報を保持可能なレジスタである。情報レジスタ１６は、例えば、ＣＰＵ１に対してリセットをかけた場合に、そのことを示すフラグを保持する。
【００３３】
次に、図２に示した半導体集積回路の動作について説明する。
通常動作時には、半導体集積回路は、ＣＰＵ１が所定のプログラムに従って処理を実行し、ＣＰＵ１が処理に応じてＲＡＭ３や周辺部４等と第１のバスＢＵＳＡを介してデータのやりとりを行うことで、所定の機能処理を行う。
【００３４】
故障診断動作について、図３を参照して説明する。図３は、図２に示した半導体集積回路における故障診断動作の一例を示すフローチャートである。なお、以下の説明では、診断マクロ６は、誤り検出情報としてチェックサムを算出し、そのチェックサムアルゴリズム方式としてＣＲＣチェックサムを用いるものとする。すなわち、診断マクロ６は、ＣＲＣ演算部を有し、抽出した診断用のデータＴＩに基づいてＣＲＣ演算を行うものとする。
【００３５】
故障診断動作を開始する際、まず、ステップＳ１にて、故障診断動作に係る初期設定が行われる。ステップＳ１における初期設定では、故障診断を行うための診断プログラムがＲＯＭ３に格納されるとともに、期待値レジスタ１１に期待値が格納される。また、ステップＳ１における初期設定では、比較タイミング用タイマ値レジスタ１３及び監視用タイマ値レジスタ１５にそれぞれタイマ値が格納される。なお、これらの処理（診断プログラムの格納、期待値の格納、タイマ値の格納）を行う順序は任意であり、診断プログラムの実行を開始する前にすべての処理が完了していれば良い。
【００３６】
ステップＳ２にて、ＣＰＵ１は、ＲＯＭ３に格納された診断プログラムの実行を開始する。また、診断プログラムの実行開始と同時に、比較タイミング用タイマ値レジスタ１３及び監視用タイマ値レジスタ１５からタイマ値が比較タイミング用タイマ１２及び監視用タイマ１４にそれぞれロードされ、各タイマ１２、１４が動作（カウントダウン）を開始する。なお、比較タイミング用タイマ値レジスタ１３及び監視用タイマ値レジスタ１５から比較タイミング用タイマ１２及び監視用タイマ１４へのタイマ値のロードは、診断プログラムの実行開始前に予め行っていても良い。
【００３７】
次に、ステップＳ３にて、診断マクロ６は、診断プログラムの実行に伴って第２のバスＢＵＳＢを介しＣＰＵ１から出力されるデバッグ用のトレース情報から、命令実行アドレス、ストア命令時のストアアドレス、ストアデータ、ロード命令実行時のリードアドレス、リードデータを診断用のデータＴＩとして抽出する。さらに、診断マクロ６は、抽出した診断用のデータＴＩを診断マクロ６に内蔵されているＣＲＣ演算部に取り込んでＣＲＣ演算を行う。ステップＳ３での処理は、診断プログラムの実行を開始してから期待値比較タイミングになるまで行われる。
【００３８】
次に、ステップＳ４にて、診断マクロ６は、比較タイミング用タイマ１２のタイマ値が“０”になったとき、すなわち期待値比較タイミングで、診断用のデータＴＩに基づくＣＲＣ演算結果（ＣＲＣチェックサム）と期待値とを比較する。比較の結果、ＣＲＣ演算結果（ＣＲＣチェックサム）と期待値とが一致する場合には（ステップＳ５のＹＥＳ）、正常であるとして診断動作を終了する。
【００３９】
一方、ステップＳ４での比較の結果、診断マクロ６は、ＣＲＣ演算結果（ＣＲＣチェックサム）と期待値とが異なる場合には（ステップＳ５のＮＯ）、故障であると判定し、ステップＳ６にてＣＰＵ１に対するＮＭＩ（Non Maskable Interrupt、割り込み）を発行する。
【００４０】
ＮＭＩの発行後、診断マクロ６は、ＣＰＵ１にてＮＭＩが受け付けられたか否かを監視する（ステップＳ７）。そして、ＣＰＵ１にてＮＭＩが受け付けられたと判断した場合には（ステップＳ７のＹＥＳ）、診断動作を終了する。一方、診断マクロ６は、ＣＰＵ１にてＮＭＩが受け付けられることなく（ステップＳ７のＮＯ）、ＮＭＩが受け付けられるはずの時間が経過した場合には（ステップＳ８のＹＥＳ）、ステップＳ９に進む。ＮＭＩが受け付けられるはずの時間が経過したか否かの判断は、監視用タイマ１４のタイマ値に基づいて行われ、タイマ値が“０”になったとき、すなわちリセットタイミングでＮＭＩが受け付けられるはずの時間が経過したと判定する。
【００４１】
ステップＳ９にて、診断マクロ６は、ＣＰＵ１に対してリセットをかけ、動作を終了する。また、ステップＳ９においてＣＰＵ１に対しリセットをかける際、診断マクロ６は、情報レジスタ１６にＮＭＩが受け付けられないことが原因でリセットが発生したことを示すフラグを設定する。なお、前述したように情報レジスタ１６は、ＣＰＵ１に対してリセットをかけた場合でもリセットされないレジスタである。これにより、リセット状態から復帰したときに情報レジスタ１６の情報を読み出すことで、リセットの発生要因を解析することができ、ＮＭＩが受け付けられずにリセットされたことがわかる。
【００４２】
本実施形態によれば、第２のバスＢＵＳＢを介して伝送される情報から診断用のデータＴＩを取得してＣＰＵ１の故障診断を行うので、通常動作において利用される第１のバスＢＵＳＡに係る負荷を増加させることなく、故障診断を行うことができる。したがって、ＣＰＵ１のパフォーマンスに影響を及ぼすことなく、故障診断を行うことが可能になる。また、本実施形態によれば、誤り検出情報と期待値との比較動作は１回だけ行うので、比較に係る処理量を軽減することができる。また、１つの期待値だけを用意すれば良く、用意する期待値の数を削減でき、期待値を保持するための記憶容量を低減することができる。
【００４３】
なお、診断マクロ６は、診断プログラムの実行が開始されてから診断プログラムが終了する時間が経過しても終了しない場合には、ＣＰＵ１が暴走したと判断して診断動作を中止するようにしても良い。例えば、ＣＲＣ演算結果（ＣＲＣチェックサム）と期待値とが不一致であったがＮＭＩの発行がなされないなど、故障診断動作が異常となった場合に診断動作を中止することができる。診断プログラムが終了する時間が経過したか否かの判断は、例えば監視用タイマ１４の機能を拡張させたり、新たにタイマを設けたりして、タイマ値等に基づき行えば良い。
【００４４】
また、ＮＭＩが発行されたときの求められている誤り検出情報及び監視用タイマ１４のタイマ値を情報レジスタ１６に取り込んで保持し、読み出し可能にしても良い。例えば、期待値レジスタ１１及び比較タイミング用タイマ値レジスタ１３に適当な値を設定して診断プログラムを実行し、意図的にＮＭＩを発行させて、そのときの誤り検出情報及び監視用タイマ１４のタイマ値を取得する。これにより、取得した誤り検出情報を、診断プログラムを実行した際に比較する期待値として得ることができる。また、取得した監視用タイマ１４のタイマ値からＣＲＣ演算結果と期待値との比較を行ったときのタイマ値を推測することで、診断プログラムの実行における期待値比較タイミングに係るタイマ値を得ることができる。
【００４５】
また、本実施形態では、比較タイミング用タイマ１２は、診断プログラムの実行を開始した後、タイマ値がカウントダウン（デクリメント）されるタイマとしているが、タイマ値がカウントアップ（インクリメント）されるタイマであっても良い。比較タイミング用タイマ１２としてタイマ値がカウントアップされるタイマを用いた場合には、例えば、診断プログラムの実行開始時に比較タイミング用タイマ１２を初期化して動作を開始し、タイマ値が比較タイミング用タイマ値レジスタ１３に設定された値となったときを期待値比較タイミングとすれば良い。
【００４６】
また、監視用タイマ１４は、タイマ値がカウントダウン（デクリメント）されるタイマとしているが、タイマ値がカウントアップ（インクリメント）されるタイマであっても良い。監視用タイマ１４としてタイマ値がカウントアップされるタイマを用いた場合には、例えば、診断プログラムの実行開始時に監視用タイマ１４を初期化して動作を開始し、タイマ値が監視用タイマ値レジスタ１５に設定された値となったときをリセットタイミングとすれば良い。
【００４７】
また、本実施形態における半導体集積回路において、監視用タイマ１４及び監視用タイマ値レジスタ１５を設けるか否かは任意であり、設けなくとも故障診断動作を実現することができる。また、情報レジスタ１６も、設けるか否かは任意であり、設けなくとも故障診断動作を実現することができる。
【００４８】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００４９】
（付記１）通常動作に係るデータが伝送される第１のバスに接続する第１のインタフェース、及び前記第１のバスとは異なる第２のバスに接続する第２のインタフェースを有する処理部と、
前記第２のバスに接続され、前記処理部から出力される診断情報に基づいて誤り検出情報を求め、求めた前記誤り検出情報に基づいて前記処理部が故障しているか否かを判定する診断部とを有し、
１つの期待値が保持され、
前記診断部は、プログラムの実行に応じて求められた最終の誤り検出情報と前記期待値との比較により前記処理部が故障しているか否かを判定することを特徴とする半導体集積回路。
（付記２）前記誤り検出情報は、チェックサムであることを特徴とする付記１記載の半導体集積回路。
（付記３）前記第２のバスは、前記処理部から出力される前記処理部の内部状態を示す情報が伝送されるバスであることを特徴とする付記１又は２記載の半導体集積回路。
（付記４）前記処理部の内部状態を示す情報は、前記処理部でのプログラムの実行に係るトレース情報であることを特徴とする付記３記載の半導体集積回路。
（付記５）前記診断部で前記誤り検出情報と前記期待値との比較を行うタイミングを生成するタイマを有することを特徴とする付記１〜４の何れか１項に記載の半導体集積回路。
（付記６）前記診断部は、前記誤り検出情報と前記期待値とが異なる場合には、前記処理部に対する割り込みを発行することを特徴とする付記１〜５の何れか１項に記載の半導体集積回路。
（付記７）前記診断部は、前記割り込みを発行してから所定時間が経過するまでに前記割り込みに係る処理が行われない場合には、前記処理部に対してリセットをかけることを特徴とする付記６記載の半導体集積回路。
（付記８）前記診断部は、前記リセットをかけた際に前記リセットの発生要因を示すフラグを設定することを特徴とする付記７記載の半導体集積回路。
（付記９）前記割り込みが発行されたときの前記処理部により求められた誤り検出情報及びプログラムの実行開始からの時間を示す時間情報を保持するレジスタを有することを特徴とする付記６記載の半導体集積回路。
（付記１０）前記診断部は、前記診断情報を用いてＣＲＣ演算を行い、前記誤り検出情報としてチェックサムを算出することを特徴とする付記１〜９の何れか１項に記載の半導体集積回路。
（付記１１）前記第１のバスはシステムバスであり、前記第２のバスはトレースバスであることを特徴とする付記１〜１０の何れか１項に記載の半導体集積回路。
（付記１２）通常動作に係るデータが伝送される第１のバスに接続する第１のインタフェース、及び前記第１のバスとは異なる第２のバスに接続する第２のインタフェースを有する処理部から前記第２のバスに出力される診断情報に基づいて誤り検出情報を求める演算工程と、
求めた前記誤り検出情報に基づいて前記処理部が故障しているか否かを判定する判定工程とを有し、
１つの期待値を予め保持し、前記判定工程にて、診断プログラムの実行に応じて求められた最終の誤り検出情報と前記期待値とを比較し前記処理部が故障しているか否かを判定することを特徴とする半導体集積回路の故障診断方法。
【符号の説明】
【００５０】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  周辺部
５  デバッガモジュール
６  診断マクロ
１１  期待値レジスタ
１２  比較タイミング用タイマ
１３  比較タイミング用タイマ値レジスタ
１４  監視用タイマ
１５  監視用タイマ値レジスタ
１６  情報レジスタ
ＢＵＳＡ  第１のバス
ＢＵＳＢ  第２のバス
ＩＦＡ  第１のバスインタフェース
ＩＦＢ  第２のバスインタフェース
【図１】
2010276544.tif 000003
【図２】
2010276544.tif 000004
【図３】
2010276544.tif 000005
【図４】
2010276544.tif 000006