(57)【要約】【課題】部品点数を増加させることなく、低コストでかつ効率的に半導体集積回路装置の高信頼性化を実現させる。【解決手段】ユーザプログラムの実行時において、周期タイマ２からタイマカウンタ信号が出力されると、ＣＰＵコア６，７はＡＳＥメモリ３に格納されたテスト用プログラムを実行し、そのチェック結果をトレースメモリ１１に格納する。デバッグ回路１０は、トレースメモリ１１に格納されたチェック結果のコンペア処理を行い、ＣＰＵコア６，７が正常か否かを判定する。正常の場合、ＣＰＵコア６，７は、再びユーザプログラムを実行する。異常の場合、デバッグ回路１０は、状態信号をシステム停止回路１２に出力する。この状態信号を受けると、システム停止回路１２は、動作制御信号をＣＰＵコア６，７にそれぞれ出力し、半導体集積回路装置１の再起動処理が行われる。【選択図】図１
2013030056.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプログラムが格納される第１のメモリと、
前記ユーザプログラムに基づいて動作するＣＰＵと、
前記ＣＰＵが正常に動作しているか否かを一定の機会ごとに判定するための第１テストのプログラムが格納される第２のメモリと、
前記第１テストの結果のデータを格納する第３のメモリとを有し、
前記第３のメモリは、
前記第１テストの一定の機会とは異なるときに行なわれる第２テストの結果のデータの格納に用いられるメモリである、半導体集積回路装置。
【請求項２】
請求項１記載の半導体集積回路装置において、
前記第２テストは、前記ユーザプログラムのデバッグテストである、半導体集積回路装置。
【請求項３】
請求項１記載の半導体集積回路装置において、
前記第２のメモリは、
前記第２テストのプログラムの格納に用いられるメモリである、半導体集積回路装置。
【請求項４】
請求項３記載の半導体集積回路装置において、
前記第２テストは、前記ユーザプログラムのデバッグテストである、半導体集積回路装置。
【請求項５】
請求項１記載の半導体集積回路装置において、
前記一定の機会とは、前記ユーザプログラムによる動作の定期的な合間のことである、半導体集積回路装置。
【請求項６】
請求項１記載の半導体集積回路装置において、
前記一定の機会とは、前記半導体集積回路装置のパワーオン時もしくはパワーオフ時である、半導体集積回路装置。
【請求項７】
請求項１記載の半導体集積回路装置において、
前記第３のメモリは、前記第２のメモリの容量より大きい、半導体集積回路装置。
【請求項８】
ユーザプログラムが格納される第１のメモリと、
前記ユーザプログラムに基づいて動作するＣＰＵと、
前記ＣＰＵが正常に動作しているか否かを判定するための第１テストのプログラムが格納される第２のメモリと、
前記第１テストの結果のデータを格納する第３のメモリとを有し、
前記第３のメモリは、
前記第１テストの前に行なわれるユーザプログラムのデバッグテストの結果のデータの格納に用いられるメモリである、半導体集積回路装置。
【請求項９】
請求項８記載の半導体集積回路装置において、
前記第２のメモリは、
前記デバッグプログラムの格納に用いられるメモリである、半導体集積回路装置。
【請求項１０】
請求項８記載の半導体集積回路装置において、
前記第１テストは、前記ユーザプログラムによる動作の定期的な合間に行なわれる、半導体集積回路装置。
【請求項１１】
請求項８記載の半導体集積回路装置において、
前記第１テストは、前記半導体集積回路装置のパワーオン時もしくはパワーオフ時である、半導体集積回路装置。
【請求項１２】
請求項８記載の半導体集積回路装置において、
前記第３のメモリは、前記第２のメモリの記憶容量より記憶容量が大きい、半導体集積回路装置。
【請求項１３】
ユーザプログラムが格納される第１のメモリと、
前記ユーザプログラムに基づいて動作するＣＰＵと、
前記ＣＰＵが正常に動作しているか否かを判定するための第１テストのプログラムが格納される第２のメモリとを有し、
前記第２のメモリは、
前記第１テストの前に行なわれるユーザプログラムのデバッグテストのプログラムの格納に用いられるメモリである、半導体集積回路装置。
【請求項１４】
前記第１テストにおいて、前記第１テストの結果のデータを格納し、
前記デバッグテストにおいて、前記デバッグテストの結果のデータを格納する第３メモリを有する、請求項１３記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置の信頼性向上化技術に関し、特に、デバッグ機能を用いた信頼性の向上に有効な技術に関する。
【背景技術】
【０００２】
自動車には、ナビゲーションシステムやオーディオなどの情報系、エンジンやシャーシなどのパワートレイン系、あるいはエアコンやヘッドライト、ドアロックなどのボディ系などの各種制御を司るＥＣＵ(Electric Control Unit)などの電子システムが多数搭載されている。
【０００３】
このような電子システムに用いられる半導体集積回路装置には、高い信頼性が要求されており、高信頼性を実現する技術として、たとえば、電子システムにマイクロコンピュータなどの半導体集積回路装置の動作を監視する新たな監視用マイクロコンピュータなどの半導体集積回路装置を別チップによって設けたものが知られている。
【０００４】
この場合、監視用マイクロコンピュータは、電子システムの制御を司る半導体集積回路装置を定期的に監視し、該半導体集積回路装置に故障などの異常がないかをチェックしている。
【０００５】
この種の半導体集積回路装置におけるテスト技術としては、試験用基板上において、第１メモリ回路、第２メモリ回路、および信号処理回路を有する半導体集積回路装置の実動作に相当したクロック信号を供給し、テスト装置から第２メモリ回路に第１メモリ回路の動作試験を行うテストプログラムを書き込み、信号処理回路が書き込まれたテストプログラムに従って第１メモリ回路の動作試験を行い、良否判定結果をテスト装置に出力するものが知られている（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１６０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところが、上記のような半導体集積回路装置における高信頼性技術では、次のような問題点があることが本発明者により見い出された。
【０００８】
前述したように、電子システムにチェック用マイクロコンピュータが新たに必要となるので、該電子システムのコストが増加してしまうという問題がある。また、チェック用マイクロコンピュータを搭載するスペースが必要となり、電子システムの小型化の妨げとなってしまう恐れがある。
【０００９】
さらに、チェック用マイクロコンピュータによる専用のテストプログラムが必要となってしまい、該テストプログラムの開発工数やコストが必要となってしまうという問題がある。
【００１０】
本発明の目的は、部品点数を増加させることなく、低コストでかつ効率的に半導体集積回路装置の高信頼性化を実現させることのできる技術を提供することにある。
【００１１】
本発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１３】
一実施の形態によれば、半導体集積回路装置は、ユーザプログラムが格納される第１のメモリと、ユーザプログラムに基づいて動作するＣＰＵと、ＣＰＵが正常に動作しているか否かを一定の機会ごとに判定するための第１テストのプログラムが格納される第２のメモリと、第１テストの結果のデータを格納する第３のメモリとを有する。
【００１４】
さらに、第３のメモリは、第１テストの一定の機会とは異なるときに行なわれる第２テストの結果のデータの格納に用いられるメモリである。
【発明の効果】
【００１５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１６】
回路構成などを大幅に増加させることなく、半導体集積回路装置における高信頼性を確保することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態１による半導体集積回路装置の一例を示す説明図である。
【図２】図１の半導体集積回路装置におけるデバッグ処理の一例を示すフローチャートである。
【図３】図１の半導体集積回路装置におけるＣＰＵコアの検査処理の一例を示すフローチャートである。
【図４】図１の半導体集積回路装置に設けられたデバッグ回路によるコンペア処理の一例を示す説明図である。
【図５】図１の半導体集積回路装置に設けられたデバッグ回路によるコンペア処理の他の例を示す説明図である。
【図６】図１の半導体集積回路装置の他の例を示す説明図である。
【図７】図１のＣＰＵコアにおけるある状態の測定結果の履歴情報の一例を示した説明図である。
【図８】本発明の実施の形態２による半導体集積回路装置の一例を示す説明図である。
【図９】本発明の実施の形態３による半導体集積回路装置の一例を示す説明図である。である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１９】
（実施の形態１）
図１は、本発明の実施の形態１による半導体集積回路装置の一例を示す説明図、図２は、図１の半導体集積回路装置におけるデバッグ処理の一例を示すフローチャート、図３は、図１の半導体集積回路装置におけるＣＰＵコアの検査処理の一例を示すフローチャート、図４は、図１の半導体集積回路装置に設けられたデバッグ回路によるコンペア処理の一例を示す説明図、図５は、図１の半導体集積回路装置に設けられたデバッグ回路によるコンペア処理の他の例を示す説明図、図６は、図１の半導体集積回路装置の他の例を示す説明図、図７は、図１のＣＰＵコアにおけるある状態の測定結果の履歴情報の一例を示した説明図である。
【００２０】
〈実施の形態の概要〉
本実施の形態の概要は、以下である。
【００２１】
ユーザプログラムが格納される第１のメモリ（内蔵メモリ８，９）と、ユーザプログラムに基づいて動作するＣＰＵ（ＣＰＵコア６，７）と、ＣＰＵが正常に動作しているか否かを一定の機会ごとに判定するための第１テストのプログラムが格納される第２のメモリ（ＡＳＥメモリ３）とを有する。
【００２２】
また、第１テストのプログラムに基づいて、ＣＰＵが正常に動作しているか否かを判定するための第１テスト結果のデータを格納する第３のメモリ（トレースメモリ１１）を有する。
【００２３】
上述の一定の機会とは異なるときに、第２のメモリは第２テストのプログラムの格納に用いられ、第３のメモリは第２テスト結果のデータの格納に用いられる。
【００２４】
別の見方をすれば以下のようになる。
【００２５】
ユーザプログラムが格納される第１のメモリ（内蔵メモリ８，９）と、ユーザプログラムに基づいて動作するＣＰＵ（ＣＰＵコア６，７）と、ＣＰＵが正常に動作しているか否かを判定するための第１テストのプログラムが格納される第２のメモリ（ＡＳＥメモリ３）とを有する。
【００２６】
また、第１テストのプログラムに基づいて、ＣＰＵが正常に動作しているか否かを判定するための第１テスト結果のデータを格納する第３のメモリ（トレースメモリ１１）を有する。
【００２７】
第１テストのプログラムが格納される前に、第２のメモリは第２テストのプログラムの格納に用いられ、第３のメモリは第２テスト結果のデータの格納に用いられる。
【００２８】
以下、上記した概要に基づいて、実施の形態を詳細に説明する。
【００２９】
本実施の形態１において、半導体集積回路装置１は、たとえば、自動車におけるエンジンやシャーシなどのパワートレイン系、あるいはエアコンやヘッドライト、ドアロックなどのボディ系などの各種制御を司るＥＣＵに用いられる１チップのマイクロコンピュータである。
【００３０】
半導体集積回路装置１には、図１に示すように、周期タイマ２、ＡＳＥメモリ３、メモリインタフェース４、インタフェース５、ＣＰＵコア６，７、内蔵メモリ８，９、デバッグ回路１０、トレースメモリ１１、システム停止回路１２、およびレジスタ１３などが設けられている。また、ＡＳＥメモリ３、メモリインタフェース４、インタフェース５、ＣＰＵコア６，７、ならびにデバッグ回路１０は、メインバスＢを介して相互に接続されている。
【００３１】
ここでは、ＣＰＵコアが２つの例を示している。
【００３２】
さらに、半導体集積回路装置１には、外部メモリ１４、ならびに外部ＩＰ(Intellectual Property)１５がそれぞれ接続されている。外部メモリ１４は、半導体集積回路装置１に外部接続されるメモリであり、たとえば、フラッシュメモリに例示される不揮発性メモリやＨＤＤ(Hard Disc Drive)などである。
【００３３】
外部メモリ１４には、後述するデバッグ用プログラム、テスト用プログラム、およびＥＣＵの動作プログラムであるユーザプログラムなどの様々なデータが格納される。外部ＩＰ１５は、たとえば、画像処理プロセッサや信号処理プロセッサなどの半導体集積回路装置１に外部接続されるハードウェアモジュールである。
【００３４】
周期タイマ２は、ＣＰＵコア６，７にそれぞれ接続されており、タイマクロックなどのカウントアップを行い、ある時間に到達するとタイマカウンタ信号を出力する。ＡＳＥ(Advanced System Evaluation)メモリ３は、たとえば、ＳＲＡＭ(Static Random Access Memory)などの揮発性メモリからなり、デバッグ用プログラム、およびテスト用プログラムなどが格納される。
【００３５】
デバッグ用プログラムは、ユーザシステム（たとえば、ＥＣＵ）におけるユーザプログラムのバグを取り除くデバッグを行う際に用いられるプログラムである。テスト用プログラムは、製品となった半導体集積回路装置１において、ＣＰＵコア６，７の故障診断を行うプログラムであり、該ＣＰＵコア６，７の通常動作の合間に実行されるプログラムである。
【００３６】
ここで、通常動作とは、製品となった半導体集積回路装置１において、ＣＰＵコア６，７がユーザプログラムによる動作である。
【００３７】
このため、通常、ユーザプログラムはデバッグを終了しているものである。
【００３８】
またここでは、製品となった半導体集積回路装置１において、製品の使用等により半導体集積回路装置１に故障等が生じていないか、通常動作の合間に第１テストであるテストを行なう。
【００３９】
通常動作の合間には、半導体集積回路装置１のパワーオン（起動）時やパワーオフ時も含まれるものである。
【００４０】
つまりこのテストは、通常動作の合間（言い換えるとユーザプログラムによる動作の合間）に定期的（周期的）または半導体集積回路装置１のパワーオン（起動）時やパワーオフ（停止）時に行なわれる。
【００４１】
このテストは、定期的またはパワーオンやパワーオフ時等の一定の機会ごとにされているものと考える。
【００４２】
通常動作とは異なる動作である非通常動作とは、例えばデバッグ用プログラムを用いたデバッグ動作、あるいは製品出荷前の半導体集積回路装置をテストするテスト動作である。
【００４３】
つまり、出荷後の通常動作の合間に行なう第１テストではない、第２テストである。
【００４４】
非通常動作の場合、デバッグや製品出荷前のテスト等の実行前に半導体集積回路装置１外からプログラムが半導体集積回路装置１の内部のメモリに書き込まれる。
【００４５】
よって、第１テストは、一定の機会ごとあるいは、半導体集積回路装置の出荷後に行なわれるテストである。
【００４６】
第２テストは、第１テストとは異なるとき、あるいは、第１テストの前、あるいは、半導体集積回路装置出荷前に行なわれるテストである。
【００４７】
メモリインタフェース４は、外部メモリ１４とのインタフェース回路であり、インタフェース５は、外部ＩＰ１５とのインタフェース回路である。ＣＰＵコア６，７は、ユーザプログラムに基づいて、半導体集積回路装置１における動作を行なう。
【００４８】
内蔵メモリ８は、ＣＰＵコア６が使用するユーザプログラムが格納されるメモリであり、内蔵メモリ９は、ＣＰＵコア７が使用するユーザプログラムが格納されるメモリである。内蔵メモリ８，９は、たとえば、ＳＲＡＭなどの揮発性メモリからなる。
【００４９】
デバッグ回路１０は、非通常動作時において、ＡＳＥメモリ３に格納されたデバッグ用プログラムに基づいて、ユーザシステム（ＥＣＵ）のデバッグを実行する。
【００５０】
また、デバッグ回路１０は、通常動作の合間に、テスト用プログラムに基づいて該ＣＰＵコア６，７の故障診断を行う回路である。
【００５１】
トレースメモリ１１は、デバッグ回路１０、ＣＰＵコア６，７にそれぞれ接続されている。非通常動作時において、トレースメモリ１１は、デバッグ用プログラムに基づいたデバッグ時にサンプリングした各種データやステータス信号などのトレース結果を格納する。
【００５２】
また、通常動作の合間において、テスト用プログラムに基づいたＣＰＵコア６，７の故障診断結果を格納するメモリである。
【００５３】
たとえば、ＳＲＡＭなどの揮発性メモリからなる。
【００５４】
システム停止回路１２は、デバッグ回路１０に接続されている。
【００５５】
通常動作の合間において、このシステム停止回路１２には、デバッグ回路１０から出力される状態信号が入力されるように接続されている。
【００５６】
状態信号は、デバッグ回路１０がＣＰＵコア６，７の少なくとも一方が故障であると診断した際に出力される信号である。
【００５７】
システム停止回路１２は、状態信号が入力されると、ＣＰＵコア６，７を一時停止、あるいは再起動させる動作制御信号を出力する。
【００５８】
システム停止回路１２から出力される動作制御信号は、ＣＰＵコア６，７にそれぞれ入力されるとともに外部端子Ｔ１を介して、半導体集積回路装置１の外部に出力される。
【００５９】
レジスタ１３は、ＡＳＥメモリ３、およびトレースメモリ１１にそれぞれ接続されている。レジスタ１３は、ＡＳＥメモリ３、ならびにトレースメモリ１１を動作状態とするイネーブル信号を記憶する。このイネーブル信号は、たとえば、半導体集積回路装置１に設けられた外部端子Ｔ２を介して外部から入力される。
【００６０】
ＡＳＥメモリ３は、半導体集積回路装置１においてメモリ容量が他のメモリよりも比較的記憶容量の小さいメモリであり、たとえば、８Ｋバイト程度である。トレースメモリ１１は、ＡＳＥメモリ３よりもメモリ容量が大きく、たとえば、３２Ｋバイト〜４２Ｋバイト程度である。
【００６１】
また、内蔵メモリ８，９は、トレースメモリ１１よりもメモリ容量が大きく、たとえば、それぞれ１２８Ｋバイト〜２５６Ｋバイト程度である。半導体集積回路装置１に外部接続される外部メモリ１４は、内蔵メモリ８，９よりもメモリ容量が大きく、Ｍ（メガ）バイトオーダ、またはそれ以上のメモリ容量を有している。
【００６２】
次に、本実施の形態における半導体集積回路装置１の動作について説明する。
【００６３】
図２は、ユーザプログラムにおけるデバッグ処理の一例を示すフローチャートである。
【００６４】
つまり、非通常動作時のフローチャートを示すものである。
【００６５】
このデバッグ処理時には、たとえば、半導体集積回路装置１を用いたユーザが開発中のユーザシステムとソフトウェア開発用のパーソナルコンピュータとの間には、ソフトウェアおよびハードウェアのデバッグ、評価を行うエミュレータが接続された構成となっている。
【００６６】
まず、デバッグを開始する際には、エミュレータから外部端子Ｔ２を介してイネーブル信号（たとえば、Ｈｉ信号）が入力され、レジスタ１３に格納される（ステップＳ１０１）。レジスタ１３に格納されたイネーブル信号により、ＡＳＥメモリ３、およびトレースメモリ１１がそれぞれ動作可能状態となる。
【００６７】
続いて、ＡＳＥメモリ３は、エミュレータから出力されるデバッグ用プログラムをロードして格納する（ステップＳ１０２）。そして、内蔵メモリ８，９は、エミュレータから出力されるデバッグを行うユーザプログラムをそれぞれロードして格納する（ステップＳ１０３）。
【００６８】
その後、ＣＰＵ６，７は、内蔵メモリ８，９にそれぞれ格納されたユーザプログラムを実行する（ステップＳ１０４）。このステップＳ１０３の処理において、デバッグ回路１０は、ＡＳＥメモリ３に格納されたデバッグ用プログラムに基づいて、ユーザシステム（たとえば、ＥＣＵなど）におけるユーザプログラムのデバッグを実行し（ステップＳ１０５）、トレースメモリ１１にデバッグ用プログラムに基づくサンプリングした各種データやステータス信号などのトレース結果を格納する（ステップＳ１０６）。
【００６９】
トレースメモリ１１に格納されたトレース結果は、エミュレータを介してパーソナルコンピュータのモニタなどに表示され、ユーザにより、トレース結果の確認が行われる（ステップＳ１０７）。
【００７０】
図３は、テスト用プログラムによるＣＰＵコア６，７の検査処理の一例を示すフローチャートである。
【００７１】
つまり、通常動作および通常動作の合間のフローチャートを示すものである。
【００７２】
ＣＰＵコア６，７の検査は、たとえば、自動車などに設けられたＥＣＵなどに半導体集積回路装置１が搭載され、該半導体集積回路装置１が製品として通常動作している際に行われる検査処理である。
【００７３】
まず、半導体集積回路装置１に電源電圧ＶＣＣが投入されると、外部端子Ｔ２を介してイネーブル信号（たとえば、Ｈｉ信号）が入力され、レジスタ１３にイネーブル信号が格納される（ステップＳ２０１）。レジスタ１３に格納されたイネーブル信号により、ＡＳＥメモリ３、およびトレースメモリ１１がそれぞれ動作可能状態となる。
【００７４】
そして、たとえば、外部メモリ１４に格納されたテスト用プログラムがメモリインタフェース４を介してＡＳＥメモリ３にロードされる（ステップＳ２０２）。続いて、周期タイマ２が起動し（ステップＳ２０３）、内蔵メモリ８，９に格納されたユーザプログラムに基づいて、半導体集積回路装置１が通常動作状態となる（ステップＳ２０４）。
【００７５】
ここの例では、ＣＰＵコア６と７が同じテスト用プログラムを実行し、結果が同じになるか否かで動作が正常か否かを判断することとする。
【００７６】
このステップＳ２０４の処理において、周期タイマ２からある時間毎に出力されるタイマカウンタ信号が出力されると、ＣＰＵコア６，７は、ＡＳＥメモリ３に格納されたテスト用プログラムを実行する（ステップＳ２０５）。ＣＰＵコア６，７は、テスト用プログラムに基づいたチェック結果をトレースメモリ１１に格納する（ステップＳ２０６）。
【００７７】
デバッグ回路１０は、トレースメモリ１１にチェック結果が格納されたことを検知すると、該トレースメモリ１１に格納されたチェック結果のコンペア処理を行い（ステップＳ２０７）、ＣＰＵコア６，７が正常か否かを判定する（ステップＳ２０８）。
【００７８】
ここでは、同じ結果になるか否かで、正常もしくは異常と判断する例となる。
【００７９】
ステップＳ２０８の処理において、デバッグ回路１０が正常と判定した場合、デバッグ回路１０からは状態信号が出力されず、ＣＰＵコア６，７は、テスト用プログラムの処理が終了すると、再びユーザプログラムによる通常動作を行う。
【００８０】
また、ステップＳ２０８の処理において、ＣＰＵコア６，７のいずれかが異常であるとデバッグ回路１０が判定した場合、該デバッグ回路１０は、状態信号をシステム停止回路１２に出力する。
【００８１】
この状態信号を受けると、システム停止回路１２は、動作制御信号をＣＰＵコア６，７にそれぞれ出力する。ＣＰＵコア６，７は、動作制御信号が入力されると、半導体集積回路装置１の再起動処理を行う（ステップＳ２０９）。ここでは、半導体集積回路装置１の再起動処理ではなく、強制停止としてもよい。
【００８２】
さらに、デバッグ回路１０から出力される動作制御信号は、ＣＰＵコア６，７にそれぞれ入力されるだけではなく、外部端子Ｔ１を介して外部出力される。これにより、ＣＰＵコア６，７のいずれかが異常であることを外部に知らせることができる。
【００８３】
上記したステップＳ２０５〜Ｓ２０８の処理は、周期タイマ２からタイマカウンタ信号が出力される毎に行われる。
【００８４】
次に、図３のステップＳ２０７におけるコンペア処理の一例について説明する。
【００８５】
テスト用プログラムでは、ＡＬＵ（Arithmetic and Logic Unit）の演算状態、レジスタの状態、ＦＰＵ（Floating point number Processing Unit）の演算状態、ＣＰＵコア６，７の命令実行シーケンス状態、ＣＰＵコア６，７の命令分岐状態、外部ＩＰ１５の起動状態、ならびに外部メモリ１４のメモリ内容の状態などをチェックする。
【００８６】
ＡＬＵは、ＣＰＵコア６，７にそれぞれ設けられている演算装置であり、レジスタは、ＣＰＵコア６，７にそれぞれ設けられている記憶装置である。ＦＰＵは、ＣＰＵコア６，７にそれぞれ設けられている浮動小数点数演算装置である。
【００８７】
図４は、デバッグ回路１０によるコンペア処理の一例を示す説明図である。
【００８８】
図４に示す「メモリ内容」において、最上段は、タイムスタンプをそれぞれ示しており、タイムスタンプの下側には、上方から下方にかけて、ＡＬＵの演算状態、レジスタの状態、ＦＰＵの演算状態、ＣＰＵコア６，７の命令実行シーケンス状態、ＣＰＵコア６，７の命令分岐状態、外部ＩＰ１５の起動状態、ならびに外部メモリ１４のメモリ内容の状態などのチェック結果がそれぞれ示されている。これらのチェック結果は、トレースメモリ１１に格納されている。
【００８９】
タイムスタンプは、どちらのＣＰＵコアであるかとチェック回数がそれぞれ示されており、たとえば、図４の左上段に示す「Ｈ’００００＿００００」のうち、「Ｈ’」の次の「００００」は、ＣＰＵコア６であることを示し、その次の「００００」は、周期タイマ２から１回目のタイマカウンタ信号が出力された際の測定であることを示している。
【００９０】
よって、「Ｈ’００００＿０００１」の場合には、ＣＰＵコア６であることを示し、周期タイマ２から２回目のタイマカウンタ信号が出力された際の測定であることを示している。
【００９１】
また、図４において、上記した「Ｈ’００００＿００００」の右側におけるタイムスタンプ「Ｈ’１０００＿００００」では、「Ｈ’」の次の「０００１」が、ＣＰＵコア７であることを示し、その次の「００００」は、周期タイマ２から１回目のタイマカウンタ信号が出力された際の測定であることを示している。
【００９２】
デバッグ回路１０は、図４に示した測定結果の値を比較（コンペア）し、同じ値である場合には、ＣＰＵコア６，７が正常であると判定し、比較結果が不一致の場合には、ＣＰＵコア６，７のいずれかが異常であると判定する。
【００９３】
図４では、１回目、および２回目のチェックにおいて、ＣＰＵコア６，７の各測定項目における検査結果の値が同じであるので、デバッグ回路１０は、該ＣＰＵコア６，７が正常であると判定する。
【００９４】
しかし、３回目のチェックでは、ＡＬＵの演算状態の測定値が、ＣＰＵコア６では「Ｈ’１１１１＿１１１１」であるが、ＣＰＵコア７では「Ｈ’１１１１＿１１０１」と異なっているので、デバッグ回路１０は、ＣＰＵコア６，７のいずれかが異常と判定し、状態信号を出力する。
【００９５】
図５は、デバッグ回路１０によるコンペア処理の他の例を示す説明図である。
【００９６】
この図５では、ＣＰＵコア６，７のうち、いずれか１つのＣＰＵコア（たとえば、ＣＰＵコア６）のみの検査を行う場合の例であり、２つのＣＰＵコアのうち、一方のＣＰＵコアに高い信頼性が要求される場合などに有効である。
【００９７】
図５におけるタイムスタンプ、および測定項目については、図４と同様である。ここでは、ＣＰＵコア６のみをテスト用プログラムにより検査するので、タイムスタンプの「Ｈ’」の次は、ＣＰＵコア６を示す「００００」のみとなる。
【００９８】
デバッグ回路１０は、図中の測定結果（メモリ内容）と、テスト用プログラムに予めプログラムされている正常データとを比較し、それらが一致した際には、ＣＰＵコア６が正常であると判定し、不一致の際には、該ＣＰＵコア６が異常であると判定する。
【００９９】
たとえば、図５では、それぞれの項目における正常データが、すべて「Ｈ’１１１１＿１１１１」とならなければならないが、６回目の測定結果において、ＡＬＵの演算状態が「Ｈ’１１１１＿１１０１」となっている。よって、デバッグ回路１０は、ＣＰＵコア６が異常であると判定し、状態信号を出力する。
【０１００】
なお、図５の例では、２つのＣＰＵコアのうち、一方のＣＰＵコア（ＣＰＵコア６）のみのチェックを行う場合について記載したが、このようなマルチＣＰＵ構成ではなく、たとえば、図６に示すような１つのＣＰＵコア６のみを備えたシングルＣＰＵ構成の半導体集積回路装置１に適用することも可能である。
【０１０１】
図６に示す半導体集積回路装置１は、図１の半導体集積回路装置１から、ＣＰＵコア７、ならびに内蔵メモリ９を削除した構成となっており、その他の接続構成については、図１と同様であるので、説明は省略する。
【０１０２】
それにより、本実施の形態１によれば、チェック用プログラムに基づいてＣＰＵコア６，７に異常がないかを定期的にチェックするので、半導体集積回路装置１の信頼性を大幅に向上させることができる。
【０１０３】
なお、ここでの例では定期的（周期的）なテストを例に示したが、半導体集積回路装置１のパワーオン（起動）時やパワーオフ（停止）時にテストを行なってもよい。
【０１０４】
この場合は、周期的にユーザープログラムを止めることなく、テストをできる。
【０１０５】
また、ＣＰＵコア６，７をＡＳＥメモリ３、トレースメモリ１１、およびデバッグ回路１０などの通常動作時には使用しないデバッグ機能を用いて検査するので、半導体集積回路装置１における回路構成を大幅に増加させることなく半導体集積回路装置１の高信頼性機能を実現することができる。
【０１０６】
さらに、本実施の形態１では、テスト用プログラムによるチェック結果が格納されるトレースメモリ１１がＳＲＡＭからなる構成としたが、該トレースメモリ１１は、フラッシュメモリに例示される不揮発性メモリにより構成するようにしてもよい。
【０１０７】
トレースメモリ１１を不揮発性メモリとすることにより、チェック結果の履歴情報から、どの時点で測定結果が不一致となったかをバックトレースすることができる。このバックトレース情報を解析することにより、ユーザプログラムの再構築などが可能となる。
【０１０８】
図７は、ＣＰＵコア６におけるある状態（たとえば、ＡＬＵの演算状態など）の測定結果の履歴情報の一例を示した説明図である。
【０１０９】
図示するように、５回目に検査したＡＬＵの演算状態において処理が不正となっているので、たとえば、この不正となった演算状態の機能を使わないようにユーザプログラムを再構築することにより、半導体集積回路装置１の動作を正常に保つことができる。
【０１１０】
（実施の形態２）
本実施の形態の概要は、以下である。
【０１１１】
ユーザプログラムが格納される第１のメモリ（内蔵メモリ８，９）と、ユーザプログラムに基づいて動作するＣＰＵ（ＣＰＵコア６，７）と、ＣＰＵが正常に動作しているか否かを一定の機会ごとに判定するための第１テストのプログラムが格納される第２のメモリ（ＡＳＥメモリ３）とを有する。
【０１１２】
上述の一定の機会とは異なるときに、第２のメモリは第２テストのプログラムの格納に用いられる。
【０１１３】
別の見方をすれば以下のようになる。
【０１１４】
ユーザプログラムが格納される第１のメモリ（内蔵メモリ８，９）と、ユーザプログラムに基づいて動作するＣＰＵ（ＣＰＵコア６，７）と、ＣＰＵが正常に動作しているか否かを判定するための第１テストのプログラムが格納される第２のメモリ（ＡＳＥメモリ３）とを有する。
【０１１５】
第１テストのプログラムが格納される前に、第２のメモリは第２テストのプログラムの格納に用いられ。
【０１１６】
図８は、本発明の実施の形態２による半導体集積回路装置の一例を示す説明図である。
【０１１７】
前記実施の形態１の半導体集積回路装置１では、トレースメモリ１１にテスト用プログラムによるチェック結果が格納される構成としたが、本実施の形態２においては、トレースメモリ１１にチェック結果を格納するのではなく、該チェック結果を新たに設けたメモリに格納する構成となっている。
【０１１８】
半導体集積回路装置１は、図８に示すように、周期タイマ２、ＡＳＥメモリ３、メモリインタフェース４、インタフェース５、ＣＰＵコア６，７、内蔵メモリ８，９、デバッグ回路１０、トレースメモリ１１、システム停止回路１２、レジスタ１３、およびチェック結果メモリ１６から構成されている。
【０１１９】
前述したように、図１の半導体集積回路装置と異なる点は、チェック結果メモリ１６が新たに設けたところ、ならびにトレースメモリ１１がレジスタ１３に接続されていないところである。
【０１２０】
チェック結果メモリ１６は、ＣＰＵコア６，７にそれぞれ接続され、テスト用プログラム基づいてチェックしたＣＰＵコア６，７の検査結果をそれぞれ格納する。
【０１２１】
また、チェック結果メモリ１６は、レジスタ１３に格納されたイネーブル信号が入力されるように接続されており、該イネーブル信号がアクティブとなると動作状態となる。チェック結果メモリ１６は、トレースメモリ１１と同様にＳＲＡＭなどの揮発性メモリからなり，メモリ容量は、たとえば、３２Ｋバイト〜４２Ｋバイト程度である。
【０１２２】
テスト用プログラムによるＣＰＵコア６，７の検査処理については、前記実施の形態１の図３と同様であり、異なるところは、テスト用プログラムに基づいてチェックした検査結果を（図４のメモリ内容）をトレースメモリ１１に格納するのではなく、チェック結果メモリ１６に格納する点のみである。また、デバッグ回路１０によるコンペア処理についても前記実施の形態１の図４と同様であるので説明は、省略する。
【０１２３】
それにより、本実施の形態２においても、半導体集積回路装置１の信頼性を大幅に向上させることができる。また、通常動作時には使用しないデバッグ機能（ここでは、ＡＳＥメモリ３）を用いて検査するので、半導体集積回路装置１における回路構成を増加させることなく低コストで、半導体集積回路装置１の高信頼性機能を実現することができる。
【０１２４】
（実施の形態３）
本実施の形態の概要は、以下である。
【０１２５】
ユーザプログラムが格納される第１のメモリ（内蔵メモリ８，９）と、ユーザプログラムに基づいて動作するＣＰＵ（ＣＰＵコア６，７）と、ＣＰＵが正常に動作しているか否かを一定の機会ごとに判定するための第１テストのプログラムが格納される第２のメモリ（ＡＳＥメモリ３）とを有する。
【０１２６】
また、第１テストのプログラムに基づいて、ＣＰＵが正常に動作しているか否かを判定するための第１テスト結果のデータを格納する第３のメモリ（トレースメモリ１１）を有する。
【０１２７】
上述の一定の機会とは異なるときに、第３のメモリは第２テスト結果のデータの格納に用いられる。
【０１２８】
別の見方をすれば以下のようになる。
【０１２９】
ユーザプログラムが格納される第１のメモリ（内蔵メモリ８，９）と、ユーザプログラムに基づいて動作するＣＰＵ（ＣＰＵコア６，７）と、ＣＰＵが正常に動作しているか否かを判定するための第１テストのプログラムが格納される第２のメモリ（ＡＳＥメモリ３）とを有する。
【０１３０】
また、第１テストのプログラムに基づいて、ＣＰＵが正常に動作しているか否かを判定するための第１テスト結果のデータを格納する第３のメモリ（トレースメモリ１１）を有する。
【０１３１】
第１テストのプログラムが格納される前に、第３のメモリは第２テスト結果のデータの格納に用いられる。
【０１３２】
図９は、本発明の実施の形態３による半導体集積回路装置の一例を示す説明図である。
である。
【０１３３】
本実施の形態３において、半導体集積回路装置１は、図９に示すように、周期タイマ２、ＡＳＥメモリ３、メモリインタフェース４、インタフェース５、ＣＰＵコア６，７、内蔵メモリ８，９、デバッグ回路１０、トレースメモリ１１、システム停止回路１２、およびレジスタ１３からなる前記実施の形態の図１の構成に、テストメモリ１７が新たに追加された構成となっている。
【０１３４】
前記実施の形態１では、ＡＳＥメモリ３にテスト用プログラムを格納する構成としたが、本実施の形態３においては、ＡＳＥメモリ３ではなく、新たに設けられたテストメモリ１７にテスト用プログラムが格納される。
【０１３５】
テストメモリ１７は、ＡＳＥメモリ３と同様に、たとえば、ＳＲＡＭなどの揮発性メモリからなり、メモリ容量は、たとえば、８Ｋバイト程度である。また、テストメモリ１７は、レジスタ１３、およびメインバスＢにそれぞれ接続されており、ＡＳＥメモリ３は、レジスタ１３に接続されていない。
【０１３６】
また、テストメモリ１７は、レジスタ１３に格納されたイネーブル信号がアクティブとなると動作状態となる。
【０１３７】
テスト用プログラムによるＣＰＵコア６，７の検査処理については、前記実施の形態１の図３と同様であり、異なるところは、ＣＰＵコア６，７がメインバスＢを介してテストメモリ１７に格納されたテスト用プログラムを読み出して実行するところである。さらに、デバッグ回路１０によるコンペア処理についても前記実施の形態１の図４と同様であるので説明は省略する。
【０１３８】
それにより、本実施の形態３によっても、通常動作時には使用しないデバッグ機能（ここでは、トレースメモリ１１）を用いて半導体集積回路装置１の高信頼性機能を実現することができるので、低コストで半導体集積回路装置１の信頼性を大幅に向上させることができる。
【０１３９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１４０】
本発明は、半導体集積回路装置における信頼性向上化技術に適している。
【符号の説明】
【０１４１】
１  半導体集積回路装置
２  周期タイマ
３  ＡＳＥメモリ
４  メモリインタフェース
５  インタフェース
６  ＣＰＵコア
７  ＣＰＵコア
８  内蔵メモリ
９  内蔵メモリ
１０  デバッグ回路
１１  トレースメモリ
１２  システム停止回路
１３  レジスタ
１４  外部メモリ
１５  外部ＩＰ
１６  チェック結果メモリ
１７  テストメモリ
Ｂ  メインバス
Ｔ１  外部端子
Ｔ２  外部端子
【図１】
2013030056.tif 000003
【図２】
2013030056.tif 000004
【図３】
2013030056.tif 000005
【図４】
2013030056.tif 000006
【図５】
2013030056.tif 000007
【図６】
2013030056.tif 000008
【図７】
2013030056.tif 000009
【図８】
2013030056.tif 000010
【図９】
2013030056.tif 000011