(57)【特許請求の範囲】
【請求項１】
半導体装置であって、
１つ以上の機能ユニットと、
前記機能ユニットから出力される信号を用いて、前記機能ユニットの劣化の度合いを示す劣化度を取得して、前記劣化度が予め定められた第１の閾値を超える場合に、前記半導体装置の寿命が近いことを通知するための処理を行う寿命予測回路と
を有し、
前記寿命予測回路は、前記半導体装置の電源電圧を低下させて前記機能ユニットについてテストを実行することによって、前記劣化度を取得する
半導体装置。
【請求項２】
前記半導体装置は、複数の前記機能ユニットを有し、
前記機能ユニットの１つは、中央処理回路であり、
前記中央処理回路は、前記中央処理回路以外の前記機能ユニットについて前記テストを実行する場合に、前記寿命予測回路として機能する
請求項１に記載の半導体装置。
【請求項３】
前記テストに関するプログラムを記憶するマスクＲＯＭ
をさらに有し、
前記寿命予測回路は、前記マスクＲＯＭに記憶された前記プログラムを実行することによって、前記テストを実行する
請求項１に記載の半導体装置。
【請求項４】
前記寿命予測回路は、前記機能ユニットについてＰＵＦによる処理を行うことによって、前記劣化度を取得する
請求項１に記載の半導体装置。
【請求項５】
前記寿命予測回路は、前記機能ユニットにソースデータを出力したことに応じて前記機能ユニットで生成されたレスポンスデータのエラー率を、前記劣化度として取得する
請求項４に記載の半導体装置。
【請求項６】
前記半導体装置は、複数の機能ユニットを有し、
前記寿命予測回路は、前記複数の機能ユニットのうちの少なくとも１つの前記劣化度が前記第１の閾値を超える場合に、前記通知するための処理を行う
請求項１に記載の半導体装置。
【請求項７】
前記寿命予測回路は、前記半導体装置が通常動作を行う前に、前記劣化度が前記第１の閾値以下であるか否かを判定する
請求項１に記載の半導体装置。
【請求項８】
半導体装置であって、
１つ以上の機能ユニットと、
前記機能ユニットから出力される信号を用いて、前記機能ユニットの劣化の度合いを示す劣化度を取得して、前記劣化度が予め定められた第１の閾値を超える場合に、前記半導体装置の寿命が近いことを通知するための処理を行う寿命予測回路と
を有し、
前記寿命予測回路は、前記機能ユニットについてＰＵＦによる処理を行うことによって、前記劣化度を取得し、
前記寿命予測回路は、前記機能ユニットにソースデータを出力したことに応じて前記機能ユニットで生成されたレスポンスデータのエラー率を、前記劣化度として取得する
半導体装置。
【請求項９】
前記半導体装置は、複数の前記機能ユニットを有し、
前記機能ユニットの１つは、中央処理回路であり、
前記寿命予測回路は、前記半導体装置の電源電圧を低下させて前記機能ユニットについてテストを実行することによって、前記劣化度を取得し、
前記中央処理回路は、前記中央処理回路以外の前記機能ユニットについて前記テストを実行する場合に、前記寿命予測回路として機能する
請求項８に記載の半導体装置。
【請求項１０】
前記寿命予測回路は、前記半導体装置の電源電圧を低下させて前記機能ユニットについてテストを実行することによって、前記劣化度を取得し、
前記半導体装置は、
前記テストに関するプログラムを記憶するマスクＲＯＭ
をさらに有し、
前記寿命予測回路は、前記マスクＲＯＭに記憶された前記プログラムを実行することによって、前記テストを実行する
請求項８に記載の半導体装置。
【請求項１１】
前記半導体装置は、複数の機能ユニットを有し、
前記寿命予測回路は、前記複数の機能ユニットのうちの少なくとも１つの前記劣化度が前記第１の閾値を超える場合に、前記通知するための処理を行う
請求項８に記載の半導体装置。
【請求項１２】
前記寿命予測回路は、前記半導体装置が通常動作を行う前に、前記劣化度が前記第１の閾値以下であるか否かを判定する
請求項８に記載の半導体装置。
【請求項１３】
半導体装置に含まれる１つ以上の機能ユニットから出力される信号を用いて、前記機能ユニットの劣化の度合いを示す劣化度を取得し、
前記劣化度が予め定められた第１の閾値以下であるか否かを判定し、
前記劣化度が前記第１の閾値を超える場合に、前記半導体装置の寿命が近いことを通知するための処理を行い、
前記半導体装置の電源電圧を低下させて前記機能ユニットについてテストを実行することによって、前記劣化度を取得する
寿命予測方法。
【請求項１４】
前記機能ユニットについてＰＵＦによる処理を行うことによって、前記劣化度を取得する
請求項１３に記載の寿命予測方法。
【請求項１５】
前記機能ユニットにソースデータを出力したことに応じて前記機能ユニットで生成されたレスポンスデータのエラー率を、前記劣化度として取得する
請求項１４に記載の寿命予測方法。
【請求項１６】
前記半導体装置は、複数の機能ユニットを有し、
前記複数の機能ユニットのうちの少なくとも１つの前記劣化度が前記第１の閾値を超える場合に、前記通知するための処理を行う
請求項１３に記載の寿命予測方法。
【請求項１７】
前記半導体装置が通常動作を行う前に、前記劣化度が前記第１の閾値以下であるか否かを判定する
請求項１３に記載の寿命予測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、監視システム及び寿命予測方法に関する。
【背景技術】
【０００２】
近年、車載電子機器等の機能安全規格として、ＩＳＯ２６２６２が、注目を集めている。機能安全とは、車載電子機器の構成要素であるマイクロコントローラ（例えばＭＣＵ：Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）等の半導体装置に故障が発生したとしても、機能的な工夫を施すことによって最低限の許容可能な安全を確保することである。例えば、故障が発生した場合に、故障を検出して、他の動作に遷移する（例えば車両を安全に停止する）等の制御を行うことが求められる。
【０００３】
機能的な工夫の一例として、複数のプロセッサコアを用いたロックステップ方式がある。この技術に関連し、特許文献１には、同じ機能を有する２つのデータ処理ユニットを備えるマイクロコントローラが記載されている。特許文献１にかかるマイクロコントローラは、第１のデータ処理ユニットと、第１のデータ処理ユニットと同じデータ処理を行う第２のデータ処理ユニットと、比較器とを有する。比較器は、第１のデータ処理ユニットからの出力と第２のデータ処理ユニットからの出力とを比較する。比較結果が不一致の場合、第１のデータ処理ユニットに故障が発生したことが検出されたとして、例えばマイクロコントローラを停止する等の例外処理が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２３７８４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１にかかる技術によって、半導体装置に故障が発生した場合であっても許容可能な安全を確保することができる。一方、機能安全技術を採用した場合であっても、半導体装置が故障した場合に不具合が発生するおそれがある。例えば、半導体装置が故障したときに車両が停止するような制御が行われる場合、車両の急停止等により何らかの不具合が発生するおそれがあった。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、１つ以上の機能ユニットと、前記機能ユニットから出力される信号を用いて、前記機能ユニットの劣化の度合いを示す劣化度を取得して、前記劣化度が予め定められた第１の閾値を超える場合に、前記半導体装置の寿命が近いことを通知するための処理を行う寿命予測回路とを有する。
【０００８】
一実施の形態によれば、寿命予測システムは、１つ以上の半導体装置と、前記半導体装置を監視する監視装置とを有し、前記半導体装置は、１つ以上の機能ユニットと、前記機能ユニットから出力される信号を用いて、前記機能ユニットの劣化の度合いを示す劣化度又は前記劣化度を取得するために用いられるパラメータを取得する寿命予測回路とを有し、前記監視装置は、前記劣化度が予め定められた第１の閾値を超える場合に、前記半導体装置の寿命が近いことを通知するための処理を行う。
【０００９】
一実施の形態によれば、寿命予測方法は、半導体装置に含まれる１つ以上の機能ユニットから出力される信号を用いて、前記機能ユニットの劣化の度合いを示す劣化度を取得し、前記劣化度が予め定められた第１の閾値以下であるか否かを判定し、前記劣化度が前記第１の閾値を超える場合に、前記半導体装置の寿命が近いことを通知するための処理を行う。
【００１０】
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本実施の形態としては有効である。
【発明の効果】
【００１１】
前記一実施の形態によれば、半導体装置が故障する前に、半導体装置が故障する可能性があることをユーザに通知することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態にかかる半導体装置の概要を示す図である。
【図２】図１に示した半導体装置の寿命予測方法を示すフローチャートである。
【図３】実施の形態１にかかるＭＣＵの構成を示す図である。
【図４】ＭＣＵの使用時間と機能ユニットの劣化度との関係を示すグラフである。
【図５】実施の形態１にかかるＭＣＵの寿命予測方法を示すフローチャートである。
【図６】半導体素子がトランジスタである場合の特性を示す図である。
【図７】実施の形態１にかかるテストの内容を示すフローチャートである。
【図８】実施の形態２にかかるＭＣＵの構成を示す図である。
【図９】実施の形態２にかかるＭＣＵの寿命予測方法を示すフローチャートである。
【図１０】実施の形態２にかかるＰＵＦ処理の内容を示すフローチャートである。
【図１１】実施の形態３にかかる寿命予測システムの構成を示す図である。
【図１２】実施の形態３にかかる寿命予測方法を示すフローチャートである。
【図１３】実施の形態３にかかる監視システムを示す図である。
【図１４】実施の形態３にかかる外部サーバによって行われる、車両の寿命評価方法を示すフローチャートである。
【図１５】第１の変形例にかかるＣＰＵの構成を示す図である。
【図１６】第１の変形例にかかるＭＣＵの寿命予測方法を示すフローチャートである。
【図１７】第２の変形例にかかる半導体システムを示す図である。
【図１８】第２の変形例にかかるＭＣＵを示す図である。
【図１９】第２の変形例にかかるＭＣＵを示す図である。
【発明を実施するための形態】
【００１３】
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１４】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１５】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１６】
また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００１７】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１８】
（実施の形態の概要）
本実施の形態の説明に先立って、本実施の形態の概要について説明する。
図１は、本実施の形態にかかる半導体装置１の概要を示す図である。半導体装置１は、例えばＭＣＵ等のマイクロコントローラである。半導体装置１は、例えば、車載電子機器の構成要素として車両に組み込まれてもよい。この場合、半導体装置１は、例えば、自動車等の車両の原動機（例えばエンジン）等を制御するＭＣＵ又はＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）等であってもよいが、これらに限定されない。
【００１９】
図１に示すように、半導体装置１は、機能ユニット２Ａ（機能ユニットＡ）と、機能ユニット２Ｂ（機能ユニットＢ）と、寿命予測回路４とを有する。機能ユニット２Ａ，２Ｂは、半導体装置１を構成する半導体回路である。機能ユニット２Ａ，２Ｂは、例えば、中央処理回路であるＣＰＵ、ＲＡＭ、ＲＯＭ、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）回路（以下、単に「Ｉ／Ｏ」と称する）であるが、これらに限られない。なお、機能ユニット２Ａ及び機能ユニット２Ｂを区別せずに説明する場合、単に、機能ユニット２と称する。また、半導体装置１は、機能ユニット２を１つのみ有してもよいし、３個以上有してもよい。
【００２０】
寿命予測回路４は、機能ユニット２の劣化を検知することによって、半導体装置１の寿命予測を行う。言い換えると、寿命予測回路４は、半導体装置１の寿命が近いか否かを判定する。さらに言い換えると、寿命予測回路４は、半導体装置１が故障しそうであるか否かを判定する。寿命予測回路４の具体的な処理については後述する。なお、図１において、寿命予測回路４は、機能ユニット２と別個に設けられているが、これに限られない。例えば、寿命予測回路４の機能は、例えばＣＰＵ等である機能ユニット２Ａによって実現されてもよい。この場合、寿命予測回路４は、機能ユニット２Ａである。さらに、寿命予測回路４の機能は、機能ユニット２Ａ及び機能ユニット２Ｂの両方によって実現されてもよい。この場合、寿命予測回路４は、機能ユニット２Ａ及び機能ユニット２Ｂである。
【００２１】
図２は、図１に示した半導体装置１の寿命予測方法を示すフローチャートである。まず、半導体装置１の電源がオンする（ステップＳ１０）。次に、寿命予測回路４は、機能ユニット２Ａの劣化度を取得する（ステップＳ１２）。ここで、「劣化度」とは、機能ユニット２の劣化の度合いを示す指標である。劣化度の具体例については後述する。寿命予測回路４は、機能ユニット２から出力される信号を用いて、劣化度を取得する。機能ユニット２から出力される信号の具体例については後述する。
【００２２】
次に、寿命予測回路４は、機能ユニット２Ａの劣化度が予め定められた閾値Ａ（第１の閾値）以下であるか否かを判定する（ステップＳ１４）。なお、寿命予測回路４は、閾値判定を行うだけでなく、機能ユニット２から入力されるアナログ信号などの情報を元に分析を行う機能を有してもよい。劣化度が閾値Ａ以下でない場合、つまり劣化度が閾値Ａを超える場合（Ｓ１４のＮＯ）、寿命予測回路４は、半導体装置１の寿命が近づいていると判断する。そして、寿命予測回路４は、エラーハンドリングを行う（ステップＳ２０）。ここで、エラーハンドリングは、半導体装置１の寿命が近いことを通知するための処理である。例えば、エラーハンドリングは、半導体装置１と通信可能に接続されたユーザインタフェースに寿命が近いことを示す警告を表示させるための信号を出力することである。このエラーハンドリングは、システム使用者が定義するものであり、本実施の形態では言及しない。これにより、ユーザインタフェースに、「ＭＣＵの寿命が近づいています」などの警告が表示され得る。
【００２３】
一方、劣化度が閾値Ａ以下である場合、つまり劣化度が閾値Ａを超えない場合（Ｓ１４のＹＥＳ）、寿命予測回路４は、Ｓ１２の処理と同様にして、機能ユニット２Ｂの劣化度を取得する（ステップＳ１６）。そして、寿命予測回路４は、機能ユニット２Ａの劣化度が予め定められた閾値Ｂ（第１の閾値）以下であるか否かを判定する（ステップＳ１８）。なお、閾値Ｂは、閾値Ａと異なっていてもよい。劣化度が閾値Ｂ以下でない場合、つまり劣化度が閾値Ｂを超える場合（Ｓ１８のＮＯ）、寿命予測回路４は、半導体装置１の寿命が近づいていると判断する。そして、寿命予測回路４は、エラーハンドリングを行う（ステップＳ２０）。
【００２４】
一方、劣化度が閾値Ｂ以下である場合、つまり劣化度が閾値Ｂを超えない場合（Ｓ１８のＹＥＳ）、半導体装置１は、通常動作を行う（ステップＳ２２）。ここで、通常動作とは、半導体装置１が、半導体装置１の本来の機能を実行するための起動動作（ブート動作等）を行って、半導体装置１の本来の機能を実行することである。
【００２５】
本実施の形態にかかる半導体装置１は、機能ユニット２の劣化の度合いを示す劣化度を取得して、劣化度が予め定められた第１の閾値を超える場合に、半導体装置１の寿命が近いことを通知するための処理を行う。したがって、半導体装置１が故障する（つまり寿命となる）前に、半導体装置１が間もなく故障する可能性があることをユーザに通知することが可能となる。これにより、ユーザは、半導体装置１が故障する前に、半導体装置１を新しいものと交換する等の対処を行うことができる。したがって、半導体装置１が搭載された製品の不具合を防止することが可能となる。
【００２６】
一般的には、半導体装置に致命的な故障が検知された際は、半導体装置の動作を停止する。しかしながら、このような場合においても直ちに動作停止させないことが求められる場合がある。例えば、半導体装置を搭載した電子機器により車両操作を自動的に行う自動運転支援システムにおいて、半導体装置の故障により電子機器の機能を停止することが求められる場合には、ドライバーに車両操作を引き継ぐまでの時間を十分確保し、その間は安全に動作を継続することが求められる。この際、故障発生から故障の影響で電子機器が安全な動作を継続できなくなる時間が短い場合には、ドライバーに車両操作を引き継ぐ時間が十分に取れなかった。一方、本実施の形態においては、半導体装置１が故障する前に、ドライバーに通知し、半導体装置１を新しいものと交換する等の対処を促すことができる。したがって、電子機器が安全な動作を継続できなくなる時間が短い場合であっても、半導体装置１が搭載された製品の不具合を未然に防止することが可能となる。
【００２７】
（実施の形態１）
次に、実施の形態１について説明する。実施の形態１においては、上述した半導体装置１の具体例としてＭＣＵである場合の例が示されている。
図３は、実施の形態１にかかるＭＣＵ１００の構成を示す図である。ＭＣＵ１００は、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６、Ｉ／Ｏ１０８、サブＣＰＵ１１２、レベルシフタ１１４及びマスクＲＯＭ１２０を有する。これらの構成要素は、互いにバスを介して接続されている。なお、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６及びＩ／Ｏ１０８は、上述した機能ユニット２に対応する。サブＣＰＵ１１２は、後述するＣＰＵ１０２のテストを行うための処理回路である。レベルシフタ１１４は、ＭＣＵ１００の電源電圧Ｖｄｄを調整するハードウェアである。
【００２８】
マスクＲＯＭ１２０は、ロジックテストプログラム１２２、ＲＡＭテストプログラム１２４、ＲＯＭテストプログラム１２６、及びＩ／Ｏテストプログラム１２８を記憶している。ロジックテストプログラム１２２は、ＣＰＵ１０２のテスト（ロジックテスト）を行うためのプログラムである。このロジックテストプログラム１２２は、サブＣＰＵ１１２によって実行される。つまり、ロジックテストが行われる場合、上述した寿命予測回路４に対応するのは、サブＣＰＵ１１２である。
【００２９】
ＲＡＭテストプログラム１２４は、ＲＡＭ１０４のテスト（ＲＡＭテスト）を行うためのプログラムである。ＲＯＭテストプログラム１２６は、ＲＯＭ１０６のテスト（ＲＯＭテスト）を行うためのプログラムである。Ｉ／Ｏテストプログラム１２８は、Ｉ／Ｏ１０８のテスト（Ｉ／Ｏテスト）を行うためのプログラムである。これらのＲＡＭテストプログラム１２４、ＲＯＭテストプログラム１２６及びＩ／Ｏテストプログラム１２８は、ＣＰＵ１０２によって実行される。つまり、ＲＡＭテスト、ＲＯＭテスト及びＩ／Ｏテストが行われる場合、上述した寿命予測回路４に対応するのは、ＣＰＵ１０２である。なお、ロジックテスト、ＲＡＭテスト、ＲＯＭテスト及びＩ／Ｏテストの内容については後述する。なお、閾値判定を行う回路に不具合があると、ＲＡＭテスト以降が正常に動作しないので、まず、ＣＰＵに対するテスト（ロジックテスト）が実行される。また、ＣＰＵ１０２がプログラムを実行させるのはＲＡＭ１０４上であるので、次に、ＲＡＭテストが実行される。また、プログラムはＲＯＭ１０６に記憶されているので、次に、ＲＯＭテストが実行される。そして、最後に、Ｉ／Ｏテストが実行される。なお、これらの各テストの順序は、上記の順序に限定されず、適宜、変更され得る。例えば、各テストの順序は、半導体回路固有の故障発生確率から決定してもよい。
【００３０】
ここで、マスクＲＯＭは、経年劣化に強いメモリである。したがって、ＭＣＵ１００の他の機能ユニットが劣化したとしても、プログラムが劣化することを抑制することが可能である。これにより、機能ユニットが劣化したとしても、確実にテストを行うことが可能である。
【００３１】
また、実施の形態１においては、上述したように、ＣＰＵ１０２のテスト（ロジックテスト）以外のテストについては、ＣＰＵ１０２が行う。これによって、ＣＰＵ１０２以外の機能ユニットについてのテストを専用に行う回路が不要となる。したがって、ＭＣＵ１００（半導体装置）の回路規模の増大を抑制することが可能となる。
【００３２】
なお、ロジックテスト、ＲＡＭテスト、ＲＯＭテスト及びＩ／Ｏテストが行われることによって、それぞれ、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６及びＩ／Ｏ１０８の劣化率が得られる。ここで、「劣化率」は、上述した劣化度の具体例である。劣化率とは、例えば、各機能ユニットを構成する複数の素子（トランジスタ等）の総数に対する、劣化した素子の個数の割合を示す。または、劣化率（劣化度）は、単体（トランジスタ又は機能ユニット）の特性値の平均値、最大値、又は最小値などであってもよい。なお、ロジックテスト、ＲＡＭテスト、ＲＯＭテスト及びＩ／Ｏテストの具体的な内容については、図６及び図７を用いて後述する。
【００３３】
また、ＭＣＵ１００は、後述するように、各機能ユニットの劣化率と、各機能ユニットについて予め定められた閾値とを比較して、劣化率が閾値以下であるか否かを判定する。そして、劣化率が閾値を超えた場合に、ＭＣＵ１００の寿命が近づいていると判定される。以下、図４を用いて、この閾値について説明する。
【００３４】
図４は、ＭＣＵ１００の使用時間と機能ユニットの劣化度との関係を示すグラフである。図４に示すグラフにおいて、横軸はＭＣＵ１００の使用時間を示し、縦軸は機能ユニットの劣化度を示す。上述したように、実施の形態１においては、劣化度の具体例は劣化率である。ＭＣＵ１００の使用時間が経過するにつれて、各機能ユニットの劣化率（劣化度）は上昇していく。つまり、ＭＣＵ１００の使用時間が経過するにつれて、各機能ユニットの劣化が進行していく。そして、劣化度が予め定められた閾値Ｔｈｄを超えた場合に、ＭＣＵ１００の寿命が近いと判定される。言い換えると、閾値Ｔｈｄは、この閾値Ｔｈｄを超えるとＭＣＵ１００の寿命が近いと判定され得る値である。
【００３５】
したがって、ＭＣＵ１００は、機能ユニットの劣化率とこの閾値Ｔｈｄとを比較する。なお、この閾値Ｔｈｄは、機能ユニット（ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６及びＩ／Ｏ１０８）ごとに異なってもよい。つまり、ＣＰＵ１０２の劣化率に関する閾値、ＲＡＭ１０４の劣化率に関する閾値、ＲＯＭ１０６の劣化率に関する閾値、及びＩ／Ｏ１０８の劣化率に関する閾値は、互いに異なっていてもよい。つまり、閾値Ｔｈｄは、機能ユニットごとに、適宜、設定され得る。この場合、機能ユニットの重要度に応じて閾値を設定してもよい。つまり、重要な機能ユニットであるほど、閾値を小さく設定してもよい。例えば、ＣＰＵ１０２の劣化度の閾値は、ＲＯＭ１０６の劣化度の閾値よりも小さくてもよい。
【００３６】
ここで、閾値Ｔｈｄは、各機能ユニットのエラー訂正能力以下であることが望ましい。具体的には、例えばＲＡＭ又はＲＯＭのように複数のセルから構成される機能ユニットについては、ＥＣＣ（Ｅｒｒｏｒ−Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ；誤り訂正符号）等によるエラー訂正機能を備えていることがある。ここで、機能ユニットから出力されたデータのエラー率は、劣化度が大きくなると大きくなる傾向にある。したがって、機能ユニットのエラー訂正能力の限界を超えない程度であればエラー訂正が行われ、機能ユニットのエラー訂正能力の限界を超える場合に、ＭＣＵ１００の寿命が近づいていると判定するように、閾値Ｔｈｄが設定されることが望ましい。具体的には、例えば、閾値Ｔｈｄは、５〜１０％としてもよい。
【００３７】
図５は、実施の形態１にかかるＭＣＵ１００の寿命予測方法を示すフローチャートである。まず、ＭＣＵ１００の電源がオンする（ステップＳ１００）。次に、ＭＣＵ１００は、ＣＰＵ１０２についてロジックテストを実行する（ステップＳ１０２）。具体的には、サブＣＰＵ１１２がロジックテストプログラム１２２を実行することで、ロジックテストが行われる。これにより、サブＣＰＵ１１２は、ＣＰＵ１０２についての劣化率を取得する。
【００３８】
次に、ＭＣＵ１００のサブＣＰＵ１１２は、ＣＰＵ１０２の劣化率が閾値ＴｈｄＡ（第１の閾値）以下であるか否かを判定する（ステップＳ１０４）。ここで、閾値ＴｈｄＡは、ＣＰＵ１０２について予め定められた閾値Ｔｈｄである。ＣＰＵ１０２の劣化率が閾値ＴｈｄＡ以下でない場合、つまり劣化率が閾値ＴｈｄＡを超える場合（Ｓ１０４のＮＯ）、サブＣＰＵ１１２は、ＭＣＵ１００の寿命が近づいているほど、ＣＰＵ１０２の劣化が進んでいると判定する。そして、サブＣＰＵ１１２は、そのＭＣＵ１００について予め定められたエラーハンドリングを行う（ステップＳ１２０）。
【００３９】
一方、ＣＰＵ１０２の劣化率が閾値ＴｈｄＡ以下である場合、つまり劣化率が閾値ＴｈｄＡを超えない場合（Ｓ１０４のＹＥＳ）、ＭＣＵ１００は、ＲＡＭ１０４についてＲＡＭテストを実行する（ステップＳ１０６）。具体的には、ＣＰＵ１０２がＲＡＭテストプログラム１２４を実行することで、ＲＡＭテストが行われる。これにより、ＣＰＵ１０２は、ＲＡＭ１０４についての劣化率を取得する。
【００４０】
次に、ＭＣＵ１００のＣＰＵ１０２は、ＲＡＭ１０４の劣化率が閾値ＴｈｄＢ（第１の閾値）以下であるか否かを判定する（ステップＳ１０８）。ここで、閾値ＴｈｄＢは、ＲＡＭ１０４について予め定められた閾値Ｔｈｄである。ＲＡＭ１０４の劣化率が閾値ＴｈｄＢ以下でない場合、つまり劣化率が閾値ＴｈｄＢを超える場合（Ｓ１０８のＮＯ）、ＣＰＵ１０２は、ＭＣＵ１００の寿命が近づいているほど、ＲＡＭ１０４の劣化が進んでいると判定する。そして、ＣＰＵ１０２は、上述したようなエラーハンドリングを行う（ステップＳ１２０）。
【００４１】
一方、ＲＡＭ１０４の劣化率が閾値ＴｈｄＢ以下である場合、つまり劣化率が閾値ＴｈｄＢを超えない場合（Ｓ１０８のＹＥＳ）、ＭＣＵ１００は、ＲＯＭ１０６についてＲＯＭテストを実行する（ステップＳ１１０）。具体的には、ＣＰＵ１０２がＲＯＭテストプログラム１２６を実行することで、ＲＯＭテストが行われる。これにより、ＣＰＵ１０２は、ＲＯＭ１０６についての劣化率を取得する。
【００４２】
次に、ＭＣＵ１００のＣＰＵ１０２は、ＲＯＭ１０６の劣化率が閾値ＴｈｄＣ（第１の閾値）以下であるか否かを判定する（ステップＳ１１２）。ここで、閾値ＴｈｄＣは、ＲＯＭ１０６について予め定められた閾値Ｔｈｄである。ＲＯＭ１０６の劣化率が閾値ＴｈｄＣ以下でない場合、つまり劣化率が閾値ＴｈｄＣを超える場合（Ｓ１１２のＮＯ）、ＣＰＵ１０２は、ＭＣＵ１００の寿命が近づいているほど、ＲＯＭ１０６の劣化が進んでいると判定する。そして、ＣＰＵ１０２は、上述したようなエラーハンドリングを行う（ステップＳ１２０）。
【００４３】
一方、ＲＯＭ１０６の劣化率が閾値ＴｈｄＣ以下である場合、つまり劣化率が閾値ＴｈｄＣを超えない場合（Ｓ１１２のＹＥＳ）、ＭＣＵ１００は、Ｉ／Ｏ１０８についてＩ／Ｏテストを実行する（ステップＳ１１４）。具体的には、ＣＰＵ１０２がＩ／Ｏテストプログラム１２８を実行することで、Ｉ／Ｏテストが行われる。これにより、ＣＰＵ１０２は、Ｉ／Ｏ１０８についての劣化率を取得する。
【００４４】
次に、ＭＣＵ１００のＣＰＵ１０２は、Ｉ／Ｏ１０８の劣化率が閾値ＴｈｄＤ（第１の閾値）以下であるか否かを判定する（ステップＳ１１６）。ここで、閾値ＴｈｄＤは、Ｉ／Ｏ１０８について予め定められた閾値Ｔｈｄである。Ｉ／Ｏ１０８の劣化率が閾値ＴｈｄＤ以下でない場合、つまり劣化率が閾値ＴｈｄＤを超える場合（Ｓ１１６のＮＯ）、ＣＰＵ１０２は、ＭＣＵ１００の寿命が近づいているほど、Ｉ／Ｏ１０８の劣化が進んでいると判定する。そして、ＣＰＵ１０２は、上述したようなエラーハンドリングを行う（ステップＳ１２０）。
【００４５】
一方、Ｉ／Ｏ１０８の劣化率が閾値ＴｈｄＤ以下である場合、つまり劣化率が閾値ＴｈｄＤを超えない場合（Ｓ１１６のＹＥＳ）、ＣＰＵ１０２は、全ての機能ユニットについて、ＭＣＵ１００の寿命が近づいているほど劣化していないと判定する。そして、ＭＣＵ１００は、上述したような通常動作を行う（ステップＳ１２２）。
【００４６】
次に、ロジックテスト、ＲＡＭテスト、ＲＯＭテスト及びＩ／Ｏテストについて説明する。ロジックテスト、ＲＡＭテスト、ＲＯＭテスト及びＩ／Ｏテストは、機能ユニットを構成する半導体素子（トランジスタ等）の劣化特性に基づくものである。以下、図６を用いて、実施の形態１にかかるテストについて説明する。
【００４７】
図６は半導体素子がトランジスタである場合の特性を示す図である。図６に示すグラフにおいて、横軸は半導体素子（トランジスタ）の電源電圧（動作電圧）Ｖｄｄを示し、縦軸は半導体素子（トランジスタ）の故障度を示す。ここで、故障度は、半導体素子の信頼性を示す指標であって、値が大きいほど信頼性が低いことを示す。例えば、故障度は、ＦＩＴ（Ｆａｉｌｕｒｅ  Ｉｎ  Ｔｉｍｅ）であってもよいが、これに限られない。また、閾値Ｔｈｆが、一点鎖線で示されている。閾値Ｔｈｆは、半導体素子においてエラーが発生するクライテリアである。
【００４８】
また、特性曲線Ｃ０は、ＭＣＵ１００の出荷時の特性を示す。一方、特性曲線Ｃ１は、ＭＣＵ１００の出荷後、半導体素子が劣化したときの特性を示す。ここで、特性曲線に示すように、電源電圧Ｖｄｄが高くなるほど、故障度は低下する。また、ＮＢＴＩ（Ｎｅｇａｔｉｖｅ  Ｂｉａｓ  Ｔｅｍｐｅｒａｔｕｒｅ  Ｉｎｓｔａｂｉｌｉｔｙ）劣化等により半導体素子が劣化すると、矢印Ａで示すように、半導体素子の特性曲線は、特性曲線Ｃ０から特性曲線Ｃ１に移行する。これにより、閾値電圧が高くなってしまうので、矢印Ｂで示すように、電源電圧Ｖｄｄを高くするように補正することで、エラーの発生を防止している。つまり、これにより、半導体素子の動作マージンを確保することができる。具体的には、特性曲線Ｃ１の状態で電源電圧ＶｄｄをＶｄｄ１まで高くすると、この動作電圧Ｖｄｄ１における故障度は閾値Ｔｈｆよりも小さいので、エラーは発生しない。このようにすることで、機能ユニットの寿命を延ばすことができる。
【００４９】
ここで、ＭＣＵ１００の寿命予測を行う場合には、矢印Ｃで示すように、電源電圧Ｖｄｄを動作電圧Ｖｄｄ１からテスト電圧Ｖｄｄ２に下げるようにする。この状態でテストを行うと、故障度は点Ｐ１で示す点の値となり、この値は閾値Ｔｈｆを超える。この場合、その半導体素子は劣化していると判定される。実施の形態１にかかるテストは、このように、電源電圧Ｖｄｄを動作電圧Ｖｄｄ１からテスト電圧Ｖｄｄ２に下げることで検出される値から、機能ユニットの劣化率を取得する。なお、電源電圧Ｖｄｄの下げ幅（Ｖｄｄ１−Ｖｄｄ２）は、Ｖｄｄ１の１０〜２０％であることが好ましいが、これに限られない。
【００５０】
図７は、実施の形態１にかかるテスト（ロジックテスト、ＲＡＭテスト、ＲＯＭテスト及びＩ／Ｏテスト）の内容を示すフローチャートである。図７に示すフローチャートは、図５に示したフローチャートのＳ１０２、Ｓ１０６、Ｓ１１０及びＳ１１４の処理に対応する。ここで、上述したように、図７に示すフローチャートは、ロジックテストの場合はサブＣＰＵ１１２がテストプログラム（ロジックテストプログラム１２２）を実行することによって行われる。また、図７に示すフローチャートは、ＲＡＭテスト、ＲＯＭテスト及びＩ／Ｏテストの場合は、ＣＰＵ１０２がテストプログラム（ＲＡＭテストプログラム１２４、ＲＯＭテストプログラム１２６及びＩ／Ｏテストプログラム１２８）を実行することによって行われる。以下の説明では、処理主体をサブＣＰＵ１１２とするが、ＣＰＵ１０２も同様に処理を行う。
【００５１】
まず、サブＣＰＵ１１２は、テストプログラムにしたがって、半導体素子の電源電圧Ｖｄｄを下げるための制御を行う（ステップＳ１３０）。具体的には、サブＣＰＵ１１２は、電源電圧Ｖｄｄを下げるように、レベルシフタ１１４を制御する。これにより、電源電圧Ｖｄｄは、動作電圧Ｖｄｄ１からテスト電圧Ｖｄｄ２に低下する。
【００５２】
次に、この状態で、サブＣＰＵ１１２は、半導体素子に対して動作確認を行う（ステップＳ１３２）。これにより、サブＣＰＵ１１２は、その半導体素子の故障度を取得する（ステップＳ１３４）。このとき、サブＣＰＵ１１２は、機能ユニットから出力された信号に応じて、故障度を取得する。ここで、「動作確認」とは、故障度を取得するための処理（テスト）である。例えば、サブＣＰＵ１１２は、半導体素子に対してチャレンジデータ（データ列）を出力し、半導体素子からのレスポンスデータ（信号）からエラー率を検出し、このエラー率を故障度としてもよい。
【００５３】
次に、サブＣＰＵ１１２は、取得した故障度が閾値Ｔｈｆ以上であるか否かを判定する（ステップＳ１３６）。故障度が閾値Ｔｈｆ以上である場合（Ｓ１３６のＹＥＳ）、サブＣＰＵ１１２は、この半導体素子が劣化していると判定する（ステップＳ１３８）。一方、故障度が閾値Ｔｈｆ以上でない場合（Ｓ１３６のＮＯ）、サブＣＰＵ１１２は、この半導体素子が劣化していないと判定する（ステップＳ１４０）。なお、この場合、テスト電圧Ｖｄｄ２において故障度が閾値Ｔｈｆ以上であり、かつ、動作電圧Ｖｄｄ１で故障度がＴｈｆ以上でないときに、サブＣＰＵ１１２は、劣化と判定してもよい。
【００５４】
次に、サブＣＰＵ１１２は、機能ユニット（ＣＰＵ１０２）内のテスト対象となる全ての半導体素子について上記処理（Ｓ１３０〜Ｓ１４０）が終了したか否か判定する（ステップＳ１４２）。全ての半導体素子について処理が終了していない場合（Ｓ１４２のＮＯ）、サブＣＰＵ１１２は、他の半導体素子についてＳ１３０〜Ｓ４０の処理を繰り返す。なお、サブＣＰＵ１１２は、２つ以上の半導体素子について同時に上記処理（Ｓ１３０〜Ｓ１４０）を行ってもよい。全ての半導体素子について同時に処理がなされる場合は、Ｓ１４２の処理はなくてもよい。
【００５５】
一方、全ての半導体素子について処理が終了した場合（Ｓ１４２のＹＥＳ）、サブＣＰＵ１１２は、劣化と検知された半導体素子の数をカウントする（ステップＳ１４４）。そして、サブＣＰＵ１１２は、劣化率を取得する（ステップＳ１４６）。具体的には、サブＣＰＵ１１２は、全ての半導体素子の数に対する、劣化と検知された半導体素子の個数の割合を、劣化率として取得する。なお、劣化率（劣化度）が、単体（トランジスタ又は機能ユニット）の特性値の平均値、最大値、又は最小値である場合、サブＣＰＵ１１２（又はＣＰＵ１０２）は、これらの特性値の平均値、最大値、又は最小値を、劣化率として取得してもよい。そして、サブＣＰＵ１１２（又はＣＰＵ１０２）は、これらの値が閾値Ｔｈｄを超える場合に、ＭＣＵ１００の寿命が近いと判断してもよい。
【００５６】
実施の形態１にかかるＭＣＵ１００は、各機能ユニットそれぞれの劣化率（劣化度）を取得して、それぞれの劣化率が予め定められた閾値Ｔｈｄを超える場合に、ＭＣＵ１００の寿命が近いことを通知するための処理を行う。したがって、ＭＣＵ１００が故障する（つまり寿命となる）前に、ＭＣＵ１００が間もなく故障する可能性があることをユーザに通知することが可能となる。これにより、ユーザは、ＭＣＵ１００が故障する前に、ＭＣＵ１００を新しいものと交換する等の対処を行うことができる。
【００５７】
また、実施の形態１においては、電源電圧を低下させてテストを行うといった、簡便な方法を用いることによって、ＭＣＵ１００の寿命予測を行うことができる。したがって、寿命予測を専用に行う回路をＭＣＵ１００に増設することが不要となる。したがって、実施の形態１においては、回路規模の増大を抑制しつつ、寿命予測を行うことが可能となる。
【００５８】
（実施の形態２）
次に、実施の形態２について説明する。実施の形態２は、劣化度を取得するためのテスト方法がＰＵＦ（Ｐｈｙｓｉｃａｌｌｙ  Ｕｎｃｌｏｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ；物理的複製困難関数）による処理である点で、実施の形態１と異なる。また、実施の形態２においても、実施の形態１と同様に、半導体装置１の具体例としてＭＣＵである場合の例が示されている。
【００５９】
ここで、ＰＵＦは、半導体回路（機能ユニット）それぞれについて異なる電子回路のわずかな差異を利用して，暗号を生成する技術である。言い換えると、ＰＵＦは、半導体回路内の物理的な揺らぎを利用して、半導体回路の固有の識別子（ＩＤ）を生成する技術である。具体的には、半導体回路にチャレンジデータ（ＰＵＦソース）が入力され、半導体回路から、半導体回路の固有ＩＤの初期値であるレスポンスデータ（ＰＵＦ値）が得られる。そして、このレスポンスデータについてエラー訂正を行うことで、半導体回路の固有ＩＤが生成される。以下、これらの一連の処理をＰＵＦ処理という。
【００６０】
ここで、ＰＵＦにおいては、半導体回路の物理的な揺らぎが利用されるため、半導体回路の劣化の影響を受ける。つまり、半導体回路が劣化すると、レスポンスデータのエラー率が大きくなる。このため、ＰＵＦ処理を行う回路は、半導体回路の劣化を検出する感度が高いデバイスであると言える。実施の形態２においては、この、半導体回路の劣化に伴ってエラー率が大きくなることを利用して、半導体装置の寿命予測が行われる。
【００６１】
図８は、実施の形態２にかかるＭＣＵ２００の構成を示す図である。ＭＣＵ２００は、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６、Ｉ／Ｏ１０８及びＰＵＦ処理回路２２０を有する。ＰＵＦ処理回路２２０は、ＰＵＦ処理を行う。ＰＵＦ処理回路２２０は、ＰＵＦソース部２２２及びエラー訂正部２２４を有する。
【００６２】
ＰＵＦ処理回路２２０は、後述するＰＵＦ処理を行って、エラー訂正を行うことで、エラー率を取得する。詳しくは後述する。ＰＵＦソース部２２２は、チャレンジデータであるＰＵＦソース（ソースデータ）を記憶している。ＰＵＦソース部２２２は、記憶しているＰＵＦソースを、機能ユニットに対して出力する。エラー訂正部２２４は、機能ユニットからレスポンスデータである初期値（ＰＵＦ値）を取得する。エラー訂正部２２４は、初期値に対してエラー訂正を行い、機能ユニットの固有ＩＤを生成する。
【００６３】
なお、実施の形態２においては、上述した寿命予測回路４に対応するのは、ＰＵＦ処理回路２２０である。そして、実施の形態２においては、劣化度の具体例は、エラー率である。つまり、実施の形態２においては、図４に示したグラフの縦軸は、エラー率を示す。
【００６４】
図９は、実施の形態２にかかるＭＣＵ２００の寿命予測方法を示すフローチャートである。まず、ＭＣＵ２００の電源がオンする（ステップＳ２００）。次に、ＭＣＵ２００は、ＣＰＵ１０２についてＰＵＦ処理を行う（ステップＳ２０２）。具体的には、ＰＵＦ処理回路２２０は、図１０を用いて後述するＰＵＦ処理を行う。これにより、ＰＵＦ処理回路２２０は、ＣＰＵ１０２についてのエラー率を取得する。
【００６５】
次に、ＭＣＵ１００のＰＵＦ処理回路２２０は、ＣＰＵ１０２のエラー率が閾値ＴｈｄＡ（第１の閾値）以下であるか否かを判定する（ステップＳ２０４）。ここで、閾値ＴｈｄＡは、ＣＰＵ１０２について予め定められた閾値Ｔｈｄであり、実施の形態１にかかる閾値ＴｈｄＡと同じであってもよい。ＣＰＵ１０２のエラー率が閾値ＴｈｄＡ以下でない場合、つまりエラー率が閾値ＴｈｄＡを超える場合（Ｓ２０４のＮＯ）、ＰＵＦ処理回路２２０は、ＭＣＵ１００の寿命が近づいているほど、ＣＰＵ１０２の劣化が進んでいると判定する。そして、ＰＵＦ処理回路２２０（又はＣＰＵ１０２）は、上述したようなエラーハンドリングを行う（ステップＳ２２０）
【００６６】
一方、ＣＰＵ１０２のエラー率が閾値ＴｈｄＡ以下である場合、つまりエラー率が閾値ＴｈｄＡを超えない場合（Ｓ２０４のＹＥＳ）、ＰＵＦ処理回路２２０は、ＲＡＭ１０４についてＰＵＦ処理を行う（ステップＳ２０６）。これにより、ＰＵＦ処理回路２２０は、ＲＡＭ１０４についてのエラー率を取得する。
【００６７】
次に、ＰＵＦ処理回路２２０は、ＲＡＭ１０４のエラー率が閾値ＴｈｄＢ（第１の閾値）以下であるか否かを判定する（ステップＳ２０８）。ここで、閾値ＴｈｄＢは、ＲＡＭ１０４について予め定められた閾値Ｔｈｄであり、実施の形態１にかかる閾値ＴｈｄＢと同じであってもよい。ＲＡＭ１０４のエラー率が閾値ＴｈｄＢ以下でない場合、つまりエラー率が閾値ＴｈｄＢを超える場合（Ｓ２０８のＮＯ）、ＰＵＦ処理回路２２０は、ＭＣＵ１００の寿命が近づいているほど、ＲＡＭ１０４の劣化が進んでいると判定する。そして、ＰＵＦ処理回路２２０（又はＣＰＵ１０２）は、エラーハンドリングを行う（ステップＳ２２０）。
【００６８】
一方、ＲＡＭ１０４のエラー率が閾値ＴｈｄＢ以下である場合、つまりエラー率が閾値ＴｈｄＢを超えない場合（Ｓ２０８のＹＥＳ）、ＰＵＦ処理回路２２０は、ＲＯＭ１０６についてＰＵＦ処理を行う（ステップＳ２１０）。これにより、ＰＵＦ処理回路２２０は、ＲＯＭ１０６についてのエラー率を取得する。
【００６９】
次に、ＰＵＦ処理回路２２０は、ＲＯＭ１０６のエラー率が閾値ＴｈｄＣ（第１の閾値）以下であるか否かを判定する（ステップＳ２１２）。ここで、閾値ＴｈｄＣは、ＲＯＭ１０６について予め定められた閾値Ｔｈｄであり、実施の形態１にかかる閾値ＴｈｄＣと同じであってもよい。ＲＯＭ１０６のエラー率が閾値ＴｈｄＣ以下でない場合、つまりエラー率が閾値ＴｈｄＣを超える場合（Ｓ２１２のＮＯ）、ＰＵＦ処理回路２２０は、ＭＣＵ１００の寿命が近づいているほど、ＲＯＭ１０６の劣化が進んでいると判定する。そして、ＰＵＦ処理回路２２０（又はＣＰＵ１０２）は、エラーハンドリングを行う（ステップＳ２２０）。
【００７０】
一方、ＲＯＭ１０６のエラー率が閾値ＴｈｄＣ以下である場合、つまりエラー率が閾値ＴｈｄＣを超えない場合（Ｓ２１２のＹＥＳ）、ＰＵＦ処理回路２２０は、Ｉ／Ｏ１０８についてＰＵＦ処理を行う（ステップＳ２１４）。これにより、ＰＵＦ処理回路２２０は、Ｉ／Ｏ１０８についてのエラー率を取得する。
【００７１】
次に、ＰＵＦ処理回路２２０は、Ｉ／Ｏ１０８のエラー率が閾値ＴｈｄＤ（第１の閾値）以下であるか否かを判定する（ステップＳ２１６）。ここで、閾値ＴｈｄＤは、Ｉ／Ｏ１０８について予め定められた閾値Ｔｈｄであり、実施の形態１にかかる閾値ＴｈｄＤと同じであってもよい。Ｉ／Ｏ１０８のエラー率が閾値ＴｈｄＤ以下でない場合、つまりエラー率が閾値ＴｈｄＤを超える場合（Ｓ２１６のＮＯ）、ＰＵＦ処理回路２２０は、ＭＣＵ１００の寿命が近づいているほど、Ｉ／Ｏ１０８の劣化が進んでいると判定する。そして、ＰＵＦ処理回路２２０（又はＣＰＵ１０２）は、エラーハンドリングを行う（ステップＳ２２０）。
【００７２】
一方、Ｉ／Ｏ１０８のエラー率が閾値ＴｈｄＤ以下である場合、つまりエラー率が閾値ＴｈｄＤを超えない場合（Ｓ２１６のＹＥＳ）、ＰＵＦ処理回路２２０は、全ての機能ユニットについて、ＭＣＵ１００の寿命が近づいているほど劣化していないと判定する。そして、ＭＣＵ１００は、上述したような通常動作を行う（ステップＳ２２２）。
【００７３】
次に、図１０を用いて、ＰＵＦ処理について説明する。
図１０は、実施の形態２にかかるＰＵＦ処理の内容を示すフローチャートである。図１０に示すフローチャートは、図９に示したフローチャートのＳ２０２、Ｓ２０６、Ｓ２１０及びＳ２１４の処理に対応する。
【００７４】
まず、ＰＵＦ処理回路２２０のＰＵＦソース部２２２は、ＣＰＵ１０２等の機能ユニットに、チャレンジデータであるＰＵＦソースを出力する（ステップＳ２３０）。ＰＵＦソースが入力された機能ユニットは、ＰＵＦソースに応じて、レスポンスデータである固有ＩＤの初期値（ＰＵＦ値）を生成する。エラー訂正部２２４は、この初期値を読み出す（ステップＳ２３２）。言い換えると、ＰＵＦ処理回路２２０は、機能ユニットから出力された信号に応じて、初期値を取得する。
【００７５】
エラー訂正部２２４は、初期値に対してエラー訂正を行う（ステップＳ２３４）。そして、エラー訂正部２２４は、固有ＩＤを生成する（ステップＳ２３６）。また、エラー訂正部２２４は、エラー率を取得する（ステップＳ２３８）。具体的には、エラー訂正部２２４は、エラー訂正の際に、初期値のデータ列においてエラー訂正がなされたビットの割合を、エラー率として取得する。
【００７６】
実施の形態２にかかるＭＣＵ２００は、各機能ユニットそれぞれのエラー率（劣化度）を取得して、それぞれのエラー率が予め定められた閾値Ｔｈｄを超える場合に、ＭＣＵ２００の寿命が近いことを通知するための処理を行う。したがって、ＭＣＵ２００が故障する（つまり寿命となる）前に、ＭＣＵ２００が間もなく故障する可能性があることをユーザに通知することが可能となる。これにより、ユーザは、ＭＣＵ２００が故障する前に、ＭＣＵ２００を新しいものと交換する等の対処を行うことができる。
【００７７】
また、実施の形態２にかかるＭＣＵ２００は、ＰＵＦ処理といったセキュリティ強化技術を用いて、寿命予測を行う。したがって、このＰＵＦ技術が採用されたＭＣＵ２００については、寿命予測に特化した方法を用いることなく、寿命予測を行うことが可能である。また、実施の形態２にかかるＭＣＵ２００は、ＰＵＦ処理によって得られたエラー率を用いることで、寿命予測を行う。したがって、寿命予測を専用に行う回路をＭＣＵ２００に増設することが不要となる。したがって、実施の形態２においては、回路規模の増大を抑制しつつ、寿命予測を行うことが可能となる。
【００７８】
（実施の形態３）
次に、実施の形態３について説明する。
図１１は、実施の形態３にかかる寿命予測システム３００の構成を示す図である。寿命予測システム３００は、１つ以上のＭＣＵ１００−１〜１００−ｍ（ｍは１以上の整数）と、監視装置である監視用ＭＣＵ３１０とを有する。ここで、図１１には、監視対象のＭＣＵとして実施の形態１にかかるＭＣＵ１００が示されているが、実施の形態２にかかるＭＣＵ２００が監視対象であってもよい。以下の説明では、監視対象のＭＣＵが実施の形態１にかかるＭＣＵ１００である例について説明する。
【００７９】
監視用ＭＣＵ３１０は、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６、Ｉ／Ｏ１０８を少なくとも有している。監視用ＭＣＵ３１０のＩ／Ｏ１０８は、各ＭＣＵ１００からデータを受信し、各ＭＣＵ１００にデータを送信する通信回路として機能する。同様に、ＭＣＵ１００のＩ／Ｏ１０８は、監視用ＭＣＵ３１０にデータを送信し、監視用ＭＣＵ３１０からデータを受信する通信回路として機能する。
【００８０】
監視用ＭＣＵ３１０は、ＭＣＵ１００−１〜１００−ｍを監視する。特に、監視用ＭＣＵ３１０は、ＭＣＵ１００−１〜１００−ｍそれぞれの寿命を監視する。監視用ＭＣＵ３１０は、ＭＣＵ１００−１〜１００−ｍそれぞれについて、寿命が近いか否かを判定して、あるＭＣＵ１００の寿命が近い場合には、そのＭＣＵ１００についてのエラーハンドリングを行う。
【００８１】
図１２は、実施の形態３にかかる寿命予測方法を示すフローチャートである。図１２において、Ｓ３００〜Ｓ３２０の処理は、各ＭＣＵ１００によって行われ、Ｓ３２２〜Ｓ３４０の処理は、監視用ＭＣＵ３１０によって行われる。また、図１２のフローチャートには、１つのＭＣＵ１００についての処理についてのみ示されている。一方、監視用ＭＣＵ３１０が複数のＭＣＵ１００について寿命予測を行う場合、監視用ＭＣＵ３１０は、ＭＣＵ１００−１から順に寿命予測を行ってもよいし、複数のＭＣＵ１００について同時に寿命予測を行ってもよい。
【００８２】
まず、ＭＣＵ１００の電源がオンする（ステップＳ３００）。次に、ＭＣＵ１００のサブＣＰＵ１１２は、Ｓ１０２の処理と同様に、ＣＰＵ１０２についてロジックテストを実行し、ＣＰＵ１０２についての劣化率を取得する（ステップＳ３０２）。ＭＣＵ１００のＩ／Ｏ１０８は、ＣＰＵ１０２の劣化率を示すデータを、監視用ＭＣＵ３１０に対して送信する（ステップＳ３０４）。ＭＣＵ１００のＣＰＵ１０２は、Ｓ１０６の処理と同様に、ＲＡＭ１０４についてＲＯＭテストを実行し、ＲＡＭ１０４についての劣化率を取得する（ステップＳ３０６）。ＭＣＵ１００のＩ／Ｏ１０８は、ＲＡＭ１０４の劣化率を示すデータを、監視用ＭＣＵ３１０に対して送信する（ステップＳ３０８）。
【００８３】
ＭＣＵ１００のＣＰＵ１０２は、Ｓ１１０の処理と同様に、ＲＯＭ１０６についてＲＡＭテストを実行し、ＲＡＭ１０４についての劣化率を取得する（ステップＳ３１０）。ＭＣＵ１００のＩ／Ｏ１０８は、ＲＯＭ１０６の劣化率を示すデータを、監視用ＭＣＵ３１０に対して送信する（ステップＳ３１２）。ＭＣＵ１００のＣＰＵ１０２は、Ｓ１１０の処理と同様に、Ｉ／Ｏ１０８についてＩ／Ｏテストを実行し、Ｉ／Ｏについての劣化率を取得する（ステップＳ３１４）。ＭＣＵ１００のＩ／Ｏ１０８は、Ｉ／Ｏ１０８の劣化率を示すデータを、監視用ＭＣＵ３１０に対して送信する（ステップＳ３１４）。
【００８４】
監視用ＭＣＵ３１０のＩ／Ｏ１０８がＣＰＵ１０２の劣化率を示すデータを受信することで、監視用ＭＣＵ３１０は、ＣＰＵ１０２の劣化率を取得する（ステップＳ３２２）。監視用ＭＣＵ３１０のＣＰＵ１０２は、Ｓ１０４の処理と同様に、ＭＣＵ１００のＣＰＵ１０２の劣化率が閾値ＴｈｄＡ以下であるか否かを判定する（ステップＳ３２４）。ＣＰＵ１０２の劣化率が閾値ＴｈｄＡ以下でない場合、つまり劣化率が閾値ＴｈｄＡを超える場合（Ｓ３２４のＮＯ）、監視用ＭＣＵ３１０のＣＰＵ１０２は、ＭＣＵ１００の寿命が近づいているほど、ＣＰＵ１０２の劣化が進んでいると判定する。そして、監視用ＭＣＵ３１０のＣＰＵ１０２は、そのＭＣＵ１００について予め定められたエラーハンドリングを行う（ステップＳ３３８）。
【００８５】
同様にして、監視用ＭＣＵ３１０は、ＲＡＭ１０４の劣化率を取得する（ステップＳ３２６）。監視用ＭＣＵ３１０は、Ｓ１０８の処理と同様にして、ＲＡＭ１０４の劣化率が閾値ＴｈｄＢ以下であるか否かを判定する（ステップＳ３２８）。ＲＡＭ１０４の劣化率が閾値ＴｈｄＢ以下でない場合（Ｓ３２８のＮＯ）、監視用ＭＣＵ３１０は、そのＭＣＵ１００について予め定められたエラーハンドリングを行う（ステップＳ３３８）。
【００８６】
同様にして、監視用ＭＣＵ３１０は、ＲＯＭ１０６の劣化率を取得する（ステップＳ３３０）。監視用ＭＣＵ３１０は、Ｓ１１２の処理と同様にして、ＲＯＭ１０６の劣化率が閾値ＴｈｄＣ以下であるか否かを判定する（ステップＳ３３２）。ＲＯＭ１０６の劣化率が閾値ＴｈｄＣ以下でない場合（Ｓ３３２のＮＯ）、監視用ＭＣＵ３１０は、そのＭＣＵ１００について予め定められたエラーハンドリングを行う（ステップＳ３３８）。
【００８７】
同様にして、監視用ＭＣＵ３１０は、Ｉ／Ｏ１０８の劣化率を取得する（ステップＳ３３４）。監視用ＭＣＵ３１０は、Ｓ１１６の処理と同様にして、Ｉ／Ｏ１０８の劣化率が閾値ＴｈｄＤ以下であるか否かを判定する（ステップＳ３３６）。Ｉ／Ｏ１０８の劣化率が閾値ＴｈｄＤ以下でない場合（Ｓ３３６のＮＯ）、監視用ＭＣＵ３１０は、そのＭＣＵ１００について予め定められたエラーハンドリングを行う（ステップＳ３３８）。
【００８８】
一方、全ての機能ユニットについて劣化率が閾値Ｔｈｄ以下である場合、監視用ＭＣＵ３１０は、ＭＣＵ１００に対し、通常動作を行うことを指示する（ステップＳ３４０）。具体的には、監視用ＭＣＵ３１０のＣＰＵ１０２は、通常動作命令を生成し、監視用ＭＣＵ３１０のＩ／Ｏ１０８は、通常動作命令をＭＣＵ１００に送信する。ＭＣＵ１００のＩ／Ｏ１０８が、通常動作命令を受信すると（ステップＳ３１８）、ＭＣＵ１００は、ブート動作等の通常動作を行う（ステップＳ３２０）。
【００８９】
実施の形態３にかかる監視用ＭＣＵ３１０は、各ＭＣＵ１００の各機能ユニットそれぞれの劣化率（劣化度）を取得して、それぞれの劣化率が予め定められた閾値Ｔｈｄを超える場合に、そのＭＣＵ１００の寿命が近いことを通知するための処理を行う。したがって、あるＭＣＵ１００が故障する（つまり寿命となる）前に、そのＭＣＵ１００が間もなく故障する可能性があることをユーザに通知することが可能となる。これにより、ユーザは、ＭＣＵ１００が故障する前に、ＭＣＵ１００を新しいものと交換する等の対処を行うことができる。
【００９０】
また、実施の形態３においては、ＭＣＵ１００ではなく、監視用ＭＣＵ３１０が寿命予測を行うように構成されている。言い換えると、各ＭＣＵ１００が寿命予測を行う必要はない。したがって、実施の形態３においては、ＭＣＵ１００の処理負荷を軽減することが可能となる。
【００９１】
なお、各ＭＣＵ１００が寿命予測を行い、監視用ＭＣＵ３１０は、各ＭＣＵ１００から、寿命予測結果（ＭＣＵ１００の寿命が近いか否かを示す結果）のみを取得してもよい。この場合、監視用ＭＣＵ３１０は、エラーハンドリングを行うのみであってもよい。
【００９２】
上記の処理は、実施の形態２にかかるＭＣＵ２００を監視する場合も同様である。この場合、ＭＣＵ２００のＰＵＦ処理回路２２０は、各機能ユニットについてＰＵＦ処理を行ってエラー率を取得する。そして、通信回路であるＩ／Ｏ１０８は、そのエラー率を監視用ＭＣＵ３１０に送信する。監視用ＭＣＵ３１０は、各ＭＣＵ２００から受信したエラー率を用いて、各ＭＣＵ２００の寿命予測を行う。
【００９３】
また、ＭＣＵ１００は、各機能ユニットの劣化率（劣化度）を送信するとしたが、これに限られない。ＭＣＵ１００は、図７に示したフローチャートの途中の処理までを行うのみであってもよい。例えば、ＭＣＵ１００は、各機能ユニットの半導体素子の故障度を取得することまで、つまり図７のＳ１３４の処理までを行う。ここで、この故障度は、劣化率（劣化度）を取得するためのパラメータである。そして、通信回路であるＩ／Ｏ１０８は、その故障度を監視用ＭＣＵ３１０に送信する。このとき、監視用ＭＣＵ３１０は、サブＣＰＵ１１２の機能を有する回路を有しており、図７のＳ１３６以降の処理を行ってもよい。例えば、ＭＣＵ１００のＣＰＵ１０２は、劣化率（劣化度）又は劣化率を取得するために用いられるパラメータである故障度を取得する寿命予測回路として機能する。
【００９４】
また、実施の形態２にかかるＭＣＵ２００の場合も同様である。ＭＣＵ２００のＰＵＦ処理回路２２０は、各機能ユニットからレスポンスデータである初期値（ＰＵＦ値）を取得することまで、つまり図１０のＳ２３２の処理までを行う。そして、通信回路であるＩ／Ｏ１０８は、その初期値を監視用ＭＣＵ３１０に送信する。このとき、監視用ＭＣＵ３１０は、エラー訂正部２２４を有してもよく、図１０のＳ２３４以降の処理を行ってもよい。つまり、ＭＣＵ２００のＰＵＦ処理回路２２０は、エラー率（劣化度）又はエラー率を取得するために用いられるパラメータである初期値を取得する寿命予測回路として機能する。
【００９５】
図１３は、実施の形態３にかかる監視システム３５０を示す図である。監視システム３５０は、車両３２０と、外部サーバ３６０とを有する。外部サーバ３６０は、コンピュータであって、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６、Ｉ／Ｏ１０８及び無線通信可能な通信装置を少なくとも有する。
【００９６】
車両３２０は、ネットワーク３５２を介して外部サーバ３６０を通信可能に接続されている。車両３２０は、図１１に示した寿命予測システム３００と、制御対象機器３２２−１〜３２２−ｍとを有する。制御対象機器３２２−１〜３２２−ｍは、例えば原動機等の制御可能な機器である。制御対象機器３２２−１〜３２２−ｍは、それぞれ、ＭＣＵ１００−１〜１００−ｍによって制御される。監視用ＭＣＵ３１０のＩ／Ｏ１０８は、各ＭＣＵ１００の寿命予測結果を、ネットワーク３５２を介して外部サーバ３６０に対して送信する。
【００９７】
図１４は、実施の形態３にかかる外部サーバ３６０によって行われる、車両３２０の寿命評価方法を示すフローチャートである。なお、図１４に車両３２０の寿命評価方法は一例であって、他の方法によって車両３２０の寿命を評価してもよい。
【００９８】
外部サーバ３６０は、監視用ＭＣＵ３１０から、各ＭＣＵ１００の寿命予測結果を取得する（ステップＳ３５２）。外部サーバ３６０は、寿命が近いＭＣＵ１００の数が、予め定められた閾値以上であるか否かを判定する（ステップＳ３５４）。寿命が近いＭＣＵ１００の数が閾値以上である場合（Ｓ３５４のＹＥＳ）、外部サーバ３６０は、車両３２０の寿命が近いことを通知する（ステップＳ３５６）。これにより、実施の形態３にかかる外部サーバ３６０は、通信可能に接続された車両３２０の寿命予測を行うことが可能となる。
【００９９】
なお、外部サーバ３６０は、ＭＣＵ１００の寿命予測結果を監視用ＭＣＵ３１０から取得するとしたが、これに限られない。外部サーバ３６０が、各ＭＣＵ１００の寿命予測を行ってもよい。この場合、外部サーバ３６０は、監視用ＭＣＵ３１０から、劣化度を取得するために用いられるパラメータを取得してもよい。つまり、外部サーバ３６０は、図１２に示したＳ３２２〜Ｓ３４０の処理を行ってもよい。これによって、監視用ＭＣＵ３１０の負荷を低減することができる。
【０１００】
（変形例）
なお、本実施の形態は、上述した構成に限られない。例えば、本実施の形態は、以下のような変形例についても、適用可能である。
【０１０１】
＜第１の変形例＞
上述した実施の形態においては、寿命予測が行われた後で、通常動作が行われる。一方、電源投入から起動までの時間を短縮したい場合には、通常動作の間に、ＭＣＵの寿命予測を行うことも可能である。以下、詳述する。なお、以下の説明は、実施の形態１についての例を示しているが、実施の形態２についても同様である。
【０１０２】
図１５は、第１の変形例にかかるＣＰＵ１０２の構成を示す図である。ＣＰＵ１０２は、複数のブロック１０２ａ−１〜１０２ａ−ｎ（ｎは２以上の整数）から構成されている。ブロック１０２ａ−１〜１０２ａ−ｎについて、それぞれ個別に劣化度（劣化率）が取得され得る。なお、他の機能ユニットについても、同様に複数のブロックで構成されうる。また、ＲＡＭ１０４及びＲＯＭ１０６については、物理的に別個のブロックでなくてもよく、論理的に別個のブロックで構成されてもよい。
【０１０３】
図１６は、第１の変形例にかかるＭＣＵ１００の寿命予測方法を示すフローチャートである。まず、ＭＣＵ１００の電源がオンする（ステップＳ４００）。次に、ＭＣＵ１００は、ブート動作等の通常動作を行う（ステップＳ４０２）。このとき、ＣＰＵ１０２は、ブロック１０２ａ−１〜１０２ａ−ｎのうちの一部を用いて通常動作を行う。つまり、ブロック１０２ａ−１〜１０２ａ−ｎのうちの全てが同時に動作しているわけではなく、少なくとも１つのブロック１０２ａは、通常動作の間のある時点では、動作を停止し得る。
【０１０４】
ＭＣＵ１００は、上述したＳ１０２〜Ｓ１２０の処理、つまり寿命予測を行う（Ｓ４１０）。このとき、ＣＰＵ１０２が処理対象である場合（Ｓ１０２〜Ｓ１０４）、通常動作の間で動作を停止しているブロック１０２ａについて、Ｓ１０２〜Ｓ１０４の処理がなされ得る。また、他の処理（Ｓ１０６〜Ｓ１２０）の場合、通常動作の間で動作を停止しているブロック１０２ａが、Ｓ１０６〜Ｓ１２０の処理を行い得る。このようにして、電源投入から起動までの時間を短縮したい場合には、通常動作の間に、ＭＣＵの寿命予測を行うことができる。
【０１０５】
＜第２の変形例＞
上述した実施の形態において、半導体装置は、図３又は図８に示したハードウェア構成を有しているが、ハードウェア構成は、図３又は図８に示したものに限られない。以下、他のハードウェア構成について説明する。なお、以下の説明は、実施の形態１にかかるハードウェア構成の例について示しているが、実施の形態２についても同様である。
【０１０６】
図１７は、第２の変形例にかかる半導体システム４００を示す図である。図１７には、寿命予測の対象である半導体装置として、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）である例が示されている。半導体システム４００は、ＳｏＣ４１０、サブＣＰＵ４１２、レベルシフタ４１４及びシリアルフラッシュメモリ４１６を有する。これらの構成要素は、互いにバスを介して接続されている。
【０１０７】
ＳｏＣ４１０は、ＣＰＵ１０２、ＲＡＭ１０４、Ｉ／Ｏ１０８を有する。ＳｏＣ４１０は、ＲＯＭ１０６を有してもよい。サブＣＰＵ４１２は、サブＣＰＵ１１２と実質的に同様の機能を有している。また、レベルシフタ４１４は、レベルシフタ１１４と実質的に同様の機能を有している。シリアルフラッシュメモリ４１６は、ロジックテストプログラム１２２、ＲＡＭテストプログラム１２４、ＲＯＭテストプログラム１２６、及びＩ／Ｏテストプログラム１２８を記憶している。このようなハードウェア構成により、上述した実施の形態にかかる方法を用いて、ＳｏＣの寿命予測を行うことが可能である。
【０１０８】
図１８は、第２の変形例にかかるＭＣＵ４２０を示す図である。ＭＣＵ４２０は、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６、Ｉ／Ｏ１０８、サブＣＰＵ１１２及びレベルシフタ１１４を有する。図１８の例においては、マスクＲＯＭ１２０ではなく、ＲＯＭ１０６が、ロジックテストプログラム１２２、ＲＡＭテストプログラム１２４、ＲＯＭテストプログラム１２６、及びＩ／Ｏテストプログラム１２８を記憶している。このような構成により、マスクＲＯＭがないＭＣＵについても、上述した実施の形態にかかる方法を用いて、寿命予測を行うことが可能である。
【０１０９】
図１９は、第２の変形例にかかるＭＣＵ４４０を示す図である。ＭＣＵ４４０は、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６、Ｉ／Ｏ１０８及びレベルシフタ１１４を有する。さらに、ＭＣＵ４４０は、ＣＰＵコントローラ４４２、ＲＡＭコントローラ４４４、ＲＯＭコントローラ４４６及びＩ／Ｏコントローラ４４８を有する。また、ＭＣＵ４４０は、ロジックテストプログラム１２２、ＲＡＭテストプログラム１２４、ＲＯＭテストプログラム１２６、及びＩ／Ｏテストプログラム１２８を、互いに別個に有している。
【０１１０】
ＣＰＵコントローラ４４２、ＲＡＭコントローラ４４４、ＲＯＭコントローラ４４６及びＩ／Ｏコントローラ４４８は、上述した寿命予測回路４に対応する。ＣＰＵコントローラ４４２、ＲＡＭコントローラ４４４、ＲＯＭコントローラ４４６及びＩ／Ｏコントローラ４４８は、それぞれ、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６及びＩ／Ｏ１０８と接続されている。ＣＰＵコントローラ４４２、ＲＡＭコントローラ４４４、ＲＯＭコントローラ４４６及びＩ／Ｏコントローラ４４８は、それぞれ、ＣＰＵ１０２、ＲＡＭ１０４、ＲＯＭ１０６及びＩ／Ｏ１０８を制御する。
【０１１１】
具体的には、ＣＰＵコントローラ４４２は、ロジックテストプログラム１２２を実行して、ＣＰＵ１０２についての寿命予測を行う。同様に、ＲＡＭコントローラ４４４は、ＲＡＭテストプログラム１２４を実行して、ＲＡＭ１０４についての寿命予測を行う。ＲＯＭコントローラ４４６は、ＲＯＭテストプログラム１２６を実行して、ＲＯＭ１０６についての寿命予測を行う。Ｉ／Ｏコントローラ４４８は、Ｉ／Ｏテストプログラム１２８を実行して、Ｉ／Ｏ１０８についての寿命予測を行う。このように、テストプログラムを実行するために、各機能ユニットについて独立したハードウェア構成が設けられていてもよい。
【０１１２】
＜その他の変形例＞
上述した実施の形態においては、上述した実施の形態にかかる半導体装置（ＭＣＵ等）が組み込まれる製品が車両である場合の例を示したが、製品は車両でなくてもよい。例えば、半導体装置（ＭＣＵ等）が組み込まれる製品は、鉄道等の信号制御システム又は冷蔵庫等の家電製品等であってもよい。Ｓｍａｒｔ  Ｈｏｍｅ及びＳｍａｒｔ  Ｂｕｉｌｄｉｎｇ等の、複数の機器がネットワークで接続されているシステム全体にも、本実施の形態は有効である。
【０１１３】
また、上述した実施の形態においては、各機能ユニットについて、順次、劣化度を取得するとしたが、このような構成に限られない。複数の機能ユニットについて同時に劣化度を取得するようにしてもよい。さらに、ハードウェア構成上可能であれば、全ての機能ユニットについて同時に劣化度を取得するようにしてもよい。また、劣化の感度が高い機能ユニット、つまり、この機能ユニットが劣化したら（他の機能ユニットに関わらず）半導体装置の寿命が近いと診断され得る機能ユニットがある場合には、その機能ユニットについて劣化度と閾値とを比較したら他の機能ユニットについての処理を省略してもよい。例えば、ＲＡＭ１０４が、劣化の感度が高い場合、図５のＳ１１０以降の処理、及び図９のＳ２１０以降の処理を省略してもよい。ＲＡＭ１０４以外の機能ユニットが、劣化の感度が高い場合も同様である。なお、上述したように、ＰＵＦ処理を行う回路は、半導体回路の中でも特性劣化の感度が高いデバイスであることから、ＰＵＦ処理について、劣化の感度が高い機能ユニット以外の処理を省略することは、より効果的であり得る。
【０１１４】
また、上述した実施の形態においては、各機能ユニットについて劣化度が閾値を超えたときに、つまり少なくとも１つの機能ユニットについて劣化度が閾値を超えたときに、エラーハンドリングが行われるとしたが、このような構成に限られない。全ての機能ユニットで劣化度が閾値を超えたときに、エラーハンドリングが行われてもよい。しかしながら、少なくとも１つの機能ユニットについて劣化度が閾値を超えたときにエラーハンドリングが行われるようにすることで、１つの機能ユニットが異常である場合に、通知がなされ得る。したがって、より確実に、半導体装置の寿命前（故障前）に、ユーザに通知を行うことが可能となる。これにより、より確実に、ユーザは、半導体装置の故障前に半導体装置を交換することが可能となる。
【０１１５】
また、上述した実施の形態においては、半導体装置（ＭＣＵ等）がブート動作等の通常動作を行う前に、各機能ユニットについてテストを行って劣化度を取得して半導体装置の寿命予測を行うように構成されているが、このような構成に限られない。上述した第１の変形例のように、通常動作の前に寿命予測が行われてもよい。しかしながら、第１の変形例では、半導体装置のハードウェアが故障していた場合、通常動作が行われても、ハードウェアが故障しているので、その通常動作が無効となってしまう。一方、寿命予測の後で通常動作が行われることにより、半導体装置のハードウェアが故障していた場合にはエラーハンドリングが行われる。したがって、通常動作が無効となることを防止することが可能となる。
【０１１６】
また、上述した実施の形態においては、ロジックテストプログラム１２２等のテストプログラムは、寿命予測の対象となる半導体装置にテストプログラムが記憶されているとしたが、このような構成に限られない。半導体装置の外部からテストプログラムが提供されてもよく、その外部から提供されたテストプログラムを、ＣＰＵ１０２等が実行してもよい。
【０１１７】
また、半導体装置（ＭＣＵ等）に発光体が組み込まれている場合は、その発光体を発光させることも、エラーハンドリングに含まれる。また、半導体装置（ＭＣＵ等）ごとに、エラーハンドリングの種類を変えてもよい。半導体装置が制御する機器の重要度に応じて、エラーハンドリングの種類を変えてもよい。例えば、車両のエンジンを制御する半導体装置である場合は、エラーハンドリングとして、警告又は車両の停止を行うための処理を行ってもよい。また、車両のパワーウインドウを制御する半導体装置である場合は、単に発光体の点灯のための処理のみでよい。
【０１１８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１１９】
１  半導体装置
２  機能ユニット
４  寿命予測回路
１００  ＭＣＵ
１０２  ＣＰＵ
１０２ａ  ブロック
１０４  ＲＡＭ
１０６  ＲＯＭ
１０８  Ｉ／Ｏ
１１２  サブＣＰＵ
１１４  レベルシフタ
１２０  マスクＲＯＭ
１２２  ロジックテストプログラム
１２４  ＲＡＭテストプログラム
１２６  ＲＯＭテストプログラム
１２８  Ｉ／Ｏテストプログラム
２００  ＭＣＵ
２２０  ＰＵＦ処理回路
２２２  ＰＵＦソース部
２２４  エラー訂正部
３００  寿命予測システム
３１０  監視用ＭＣＵ
３５０  監視システム
３６０  外部サーバ
４００  半導体システム
４１０  ＳｏＣ
４１２  サブＣＰＵ
４１４  レベルシフタ
４１６  シリアルフラッシュメモリ
４２０  ＭＣＵ
４４０  ＭＣＵ
４４２  ＣＰＵコントローラ
４４４  ＲＡＭコントローラ
４４６  ＲＯＭコントローラ
４４８  Ｉ／Ｏコントローラ
【図１】
0006651394.tif 000002
【図２】
0006651394.tif 000003
【図３】
0006651394.tif 000004
【図４】
0006651394.tif 000005
【図５】
0006651394.tif 000006
【図６】
0006651394.tif 000007
【図７】
0006651394.tif 000008
【図８】
0006651394.tif 000009
【図９】
0006651394.tif 000010
【図１０】
0006651394.tif 000011
【図１１】
0006651394.tif 000012
【図１２】
0006651394.tif 000013
【図１３】
0006651394.tif 000014
【図１４】
0006651394.tif 000015
【図１５】
0006651394.tif 000016
【図１６】
0006651394.tif 000017
【図１７】
0006651394.tif 000018
【図１８】
0006651394.tif 000019
【図１９】
0006651394.tif 000020