半導体装置
【課題】部分的な経年劣化の予兆を早期に発見することができる半導体装置を提供する。
【解決手段】LSI1は、複数のモジュールと、複数の遅延モニタを含む遅延モニタ群15とを備える。各遅延モニタは、複数段のゲート素子を有するリングオシレータを含む。各遅延モニタは、ゲート素子の遅延時間を測定する。CPU#0は、遅延モニタによって測定された遅延時間に基づいて、遅延モニタの近傍のモジュールの経年劣化を判定する。
【解決手段】LSI1は、複数のモジュールと、複数の遅延モニタを含む遅延モニタ群15とを備える。各遅延モニタは、複数段のゲート素子を有するリングオシレータを含む。各遅延モニタは、ゲート素子の遅延時間を測定する。CPU#0は、遅延モニタによって測定された遅延時間に基づいて、遅延モニタの近傍のモジュールの経年劣化を判定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
集積回路などの装置の劣化を検出する方法が知られている。たとえば、特許文献1の方法は、デジタル・システムの最大動作周波数を周期的に求めることと、(i)デジタル・システムの測定または推定最大動作周波数が、デジタル・システムの警告閾値動作周波数を下回る場合であって、当該警告閾値周波数は、デジタル・システムについて製造元によって特定された最小動作周波数以上である場合、および(ii)デジタル・システムの測定最大動作周波数間の差分の変化率がデジタル・システムについての許容変化率閾値を超える場合のうちの少なくとも1つであった場合にデジタル・システムの信頼性の低下を示す警告信号を生成することとを含む、ことが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2010−524101号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1のような従来の劣化検出装置は、劣化の予兆を察知したらアラームを発信して、該当システムまたはLSIの修理または交換を行なうものである。前もって故障しそうなことが分かると、部品調達やメンテナンススケジュール調整ができるため、円滑に交換作業を進めることができるメリットがある。
【0005】
しかしながら、従来の劣化検出回路には、以下の問題がある。
同一パッケージ内に複数のダイチップが実装されている場合は、それぞれのダイは違う製造プロセスで作られているため、信頼性に関するパラメータが相違する。すなわち故障率や寿命が違うため、あるダイチップが劣化しても他のダイチップも同じように劣化するとは限らない。また、アナログ回路、メモリ、高速回路、低速回路が混在する大規模システムLSIでは、同一ダイであっても、場所によって微細度が違うため故障率や寿命が異なるし、また同程度の微細度でも場所によって劣化に大きく関係する電圧、電流密度、温度が異なるため、ある箇所が劣化しても他の箇所が同じように劣化しているとは限らない。このように、従来では、同一半導体チップ内の劣化は均一ではないにもかかわらず、チップ全体の劣化を検出して、チップごとに交換していたため、無駄が生じていた。
【0006】
それゆえに、本発明の目的は、部分的な経年劣化の予兆を早期に発見することができる半導体装置を提供することである。
【課題を解決するための手段】
【0007】
本発明の一実施形態の半導体装置は、複数のモジュールと、複数の遅延モニタとを備え、各遅延モニタは、複数段のゲート素子を有するリングオシレータを含み、ゲート素子の遅延時間を測定する。この半導体装置は、遅延モニタによって測定された遅延時間に基づいて、遅延モニタの近傍のモジュールの経年劣化を判定する制御部とを備える。
【発明の効果】
【0008】
本発明の一実施形態によれば、部分的な経年劣化の予兆を早期に発見することができる半導体装置を提供することである。
【図面の簡単な説明】
【0009】
【図1】本実施の形態のLSIの構成を表わす図である。
【図2】図1のLSIのレイアウトを表わす図である。
【図3】第1の実施形態の遅延モニタ#i(i=00〜16)の構成を表わす図である。
【図4】第1の実施形態の遅延モニタの動作タイミングを表わす図である。
【図5】第1の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図6】第2の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図7】第3の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図8】電源電圧の制御テーブルを表わす図である。
【図9】第4の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図10】周波数の制御テーブルを表わす図である。
【図11】第5の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図12】第6の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図13】第7の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図14】第8の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図15】第9の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図16】第10の実施形態の遅延モニタ#i(i=00〜16)の構成を表わす図である。
【図17】第10の実施形態の遅延モニタの動作タイミングを表わす図である。
【図18】第11の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図19】第12の実施形態の遅延モニタを説明するための図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面を参照して説明する。
[第1の実施形態]
図1は、本実施の形態のLSIの構成を表わす図である。
【0011】
このLSI1は、マルチプロセッサ構成のLSIである。このLSI1は、CPU(Central Processing Unit)群14を有する。CPU群14は、CPU#0〜#8の複数のプロセッサを含む。CPU#0〜CPU#8の各々は、内部に1次キャッシュ(I-cache,D-cache)、CPUコアと、内部メモリ(U-LM)、MMU(メモリ管理部)、SDI(デバッガ)を有する。
【0012】
CPU#0〜CPU#7は、CPUバス72に接続され、CPUバス72はCPUバス制御部4を介して2次キャッシュ3に接続されている。また、2次キャッシュ3、CPU#8、遅延モニタ群15は内部周辺バス13に接続されている。さらに、2次キャッシュはDDR2I/F2を介して第1外部バスに接続されている。
【0013】
CPU#0〜CPU#8のうち、CPU#8が本実施の形態で説明するLSI1の経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行することとする。但し、CPU#0〜CPU#7の何れかにおいて本実施の形態で説明するLSI1の経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行することも可能である。
【0014】
このLSI1は、DSP(Digital Signal Processor)群9と、DMAC(Direct Memory Access Controller)5、外部バス制御部8、電源回路10、内蔵SRAM(Static Random Access Memory)6と、JTAG(Joint Test Action Group)コントローラ11と、汎用入出力ポート12と、クロック供給回路33と、電源回路10とを備える。
【0015】
DSP群9に含まれるDSP#0およびDSP#1は、画像処理などの所定の専用の演算を実行する。
【0016】
(レイアウト)
図2は、図1のLSIのレイアウトを表わす図である。
【0017】
図2に示すように、CPU#0、CPU#1、CPU#2、CPU#3、CPU#4、CPU#5、CPU#6、CPU#7、CPU#8、DSP#0、DSP#1、2次キャッシュ3、DDR2I/F2、内蔵SRAM6、クロック供給回路33、機能モジュールA、機能モジュールB、機能モジュールC、機能モジュールD、機能モジュールE、機能モジュールFがそれぞれ1つのモジュールを構成する。図1のCPUバス制御部4、DMAC5、外部バス制御部8、電源回路10、JTAGコントローラ11、汎用入出力ポート12は、機能モジュール#A〜Fのいずれかに属する。
【0018】
また、LSI1の内部には、遅延モニタ#00〜#16が配置されている。これらの遅延モニタ#00〜#16は小さく且つ省電力である。これらの遅延モニタ#00〜#16はレイアウト上全く同じ形状をしている。
【0019】
各遅延モニタには、1つのモジュールが対応づけられ、割り当てられたモジュールの近傍(内部を含む)に配置される。たとえば、遅延モニタ#00〜#08がそれぞれCPU#0〜#8に対応づけられて、近傍に配置されている。
【0020】
遅延モニタとその遅延モニタに対応するモジュールは、電源を共通にしたり、あるいはクロック周波数を同じにしたり、あるいは電源とクロック両方を共通にする。各遅延モニタは、対応づけられたモジュールと、温度条件や、製造バラつきが近くなるように、割り当てられたモジュールの近傍に配置される。したがって、経年劣化によって遅延モニタの遅延値が大きくなった場合には、遅延モニタに対応し、近傍に配置されたモジュールも経年劣化していると判断することができる。
【0021】
上述の1つのモジュール、すなわちCPU#0、CPU#1、CPU#2、CPU#3、CPU#4、CPU#5、CPU#6、CPU#7、CPU#8、DSP#0、DSP#1、2次キャッシュ、DDR2I/F、SRAM、クロック供給回路、機能モジュールA、機能モジュールB、機能モジュールC、機能モジュールD、機能モジュールE、機能モジュールFは個別に周波数制御ができる。
【0022】
CPU#0、CPU#1、CPU#2、CPU#3、CPU#4、CPU#5、CPU#6、CPU#7、CPU#8、DSP#0、DSP#1、2次キャッシュ、DDR2I/F、SRAM、クロック供給回路、機能モジュールA、機能モジュールF、機能モジュールB+C+D+Eのセットは、それぞれ個別に電圧制御ができる。
【0023】
(遅延モニタ)
経年劣化によって、トランジスタの閾値が変化したり、トランジスタのドレイン電流が減少し、配線やビアは配線細りになる。したがって、経年劣化が進むにつれインバータチェーンのゲート遅延が徐々に大きくなる。本実施の形態の遅延モニタは、このような特質を利用する。
【0024】
図3は、第1の実施形態の遅延モニタ#i(i=00〜16)の構成を表わす図である。
【0025】
図3を参照して、遅延モニタ#iは、制御レジスタ22と、フリップフロップ25と、リングオシレータ26と、パルスカウンタ24と、エッジ検出部23とを備える。
【0026】
パルスカウンタ24と、エッジ検出部23と、CPU#8と、制御レジスタ22は、内部周辺バス13によって互いに接続されている。
【0027】
制御レジスタ22には、内部周辺バス13を介してCPUから信号が入力される。さらに、制御レジスタ22には、基準クロックCLKが入力される。基準クロックCLKとして、たとえば、CPU#8のクロック、内部周辺バス13のクロック、遅延モニタ専用のクロックなどが用いられる。
【0028】
制御レジスタ22は、遅延モニタ#iの起動時に、CPU#8の制御によって、計測開始ビットに「1」が書き込まれる。制御レジスタ22の計測開始ビットが「1」に設定された場合に、リセット信号RSがパルスカウンタ24に出力される。
【0029】
制御レジスタ22は、リセット信号RSを出力してから一定時間経過後に、計測開始信号STをフリップフロップ25に出力する。
【0030】
フリップフロップ25には、基準クロックCLKと、計測開始信号STが入力される。フリップフロップ25は、計測開始信号STが入力された場合に、リングオシレータ26とエッジ検出部23に、イネーブル信号であるオシレータイネーブル信号ENを基準クロックCLKの1周期Tcの期間出力する。
【0031】
リングオシレータ26は、NAND素子NAと複数段のゲート素子IV1〜IV14と第一の信号線とを有し、第一の信号線にイネーブル信号であるオシレータイネーブル信号ENが入力されている期間、発振信号を出力する。
【0032】
NAND素子は2つの端子を有する。NAND素子の一方の端子は、第一の信号線が接続されたイネーブル端子である。上述したフリップフロップ25の動作により、オシレータイネーブル信号ENは、基準クロックCLKの1周期の期間、第一の信号線に入力される。そのため、第一の信号線と接続されたイネーブル端子には、オシレータイネーブル信号ENが入力される。NAND素子の他方の端子には、最終段のインバータ素子から出力される信号が入力される。
【0033】
パルスカウンタ24は、リングオシレータ26の発振信号の発振数、つまり、リングオシレータ26の出力パルス数Cdcをカウントする。このカウント値は、たとえば、16ビット単位で出力される。パルスカウンタ24には、制御レジスタ22からリセット信号RSが入力される。パルスカウンタ24は、リセット信号RSが入力されると、それまで保持していた出力パルス数をリセットする。
【0034】
エッジ検出部23は、リングオシレータ26の各段のゲート素子の出力を、オシレータイネーブル信号ENの終了のタイミングで検出する。具体的には、エッジ検出部23は、オシレータイネーブル信号ENのエッジが、上記のタイミングで伝播しているゲート素子の段数(以下、ゲート段数)Cdfを検出する。Cdfは、リングオシレータ26内を通過したオシレータイネーブル信号ENのエッジ数が偶数である場合には、イネーブル端子からのゲート段数と対応する。一方、リングオシレータ26内を通過したオシレータイネーブル信号ENのエッジ数が奇数である場合には、Cdfは、イネーブル端子からのゲート段数に全ゲート段数を加えた値となる。したがって、Cdfは、0〜29までの値を取る。この検出内容は、たとえば、15ビットで出力される。
【0035】
CPU#8は、内部周辺バス13を介して、パルスカウンタ24と、エッジ検出部23と接続される。CPU#8は、遅延モニタ#i内のエッジ検出部23およびパルスカウンタ24の出力に基づいて、ゲート素子による遅延に関する所定の数値を算出する。
【0036】
本実施の形態において、CPU#8は、式(A1)(A2)に基づいて、パルスカウンタ24のカウント値Cdcと、エッジ検出部23の検出内容Cdfとから、第一の信号線にオシレータイネーブル信号が入力されている期間にオシレータイネーブル信号ENのエッジがリングオシレータ26の各ゲート素子を伝播可能な段数(以下、伝播可能段数)Cd、および、ゲート素子1段の平均遅延時間Tdを算出する。
【0037】
Cd=Cdc×N×2+Cdf・・・(A1)
Td=Tc/Cd・・・(A2)
ただし、Tcは基準クロックCLKの周期、Nはリングオシレータ26のゲート素子の段数である。本実施の形態では、ゲート素子1段の平均遅延時間Tdを経年劣化の判定のための遅延値として用いる。
【0038】
(遅延値の算出動作)
次に、図4を用いて、遅延モニタ#iが起動して、CPU#8によってCdおよびTdを算出する動作について説明する。
【0039】
まず、制御レジスタ22は、CPU#8の制御によって、計測開始ビットに「1」が書き込まれると、ハイレベルのリセット信号RSをパルスカウンタ24に出力する。パルスカウンタ24は、リセット信号RSを受けると、それまで保持していた検出内容をリセットする。
【0040】
次に、制御レジスタ22は、リセット信号RSを出力してから基準クロックCLKの1周期経過後に、ハイレベルの計測開始信号STをフリップフロップ25に出力する。フリップフロップ25は、計測開始信号STの立下りのタイミングから基準クロックCLKの1周期の間の測定期間において、リングオシレータ26の第一の信号線に、ハイレベルのオシレータイネーブル信号ENを出力する。
【0041】
オシレータイネーブル信号ENがハイレベルの期間(すなわち、測定期間)において、パルスカウンタ24は、リングオシレータ26の発振信号の発振数Cdcをカウントする。エッジ検出部23は、オシレータイネーブル信号ENがロウレベルになるタイミングで、オシレータイネーブル信号ENのエッジが伝播しているゲート段数Cdfを検出する。
【0042】
CPU#8は、遅延モニタ#iの出力Cdc,Cdfに基づいて、式(A1)、(A2)に従って、伝播可能段数Cdおよびゲート素子1段の平均遅延時間Tdを求めて、Tdを経年劣化判定のための遅延値として用いる。
【0043】
(経年劣化の判定)
図5は、第1の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0044】
図5に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS101)。
【0045】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS102)。
【0046】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS103でYES)、チェックを完了する。
【0047】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS103でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、LSI1の外部にアラートを発信する(ステップS104)。
【0048】
上記の動作において、遅延モニタ#iを起動して遅延値をチェックするタイミングは、システムの立ち上げ時または一定時間ごと(定期的)とする。また、このLSI1を用いたシステム内の他の動作に連携して(たとえば自動車に関連するLSIの場合には、自動車が動く時、停止する時、エンジンの回転数が一定以上になった時など)、遅延モニタ#iを起動して遅延値をチェックすることとしてもよい。また、コンピューターシステム管理者のメンテナンスの指示によって遅延モニタ#iを起動して遅延値をチェックすることとしてもよい。
【0049】
基準値は、許容できる上限値に到達するまでの時間を確保できる値を設定する。許容できる上限値に到達するまでの時間、つまり故障までの時間は、LSIを使用するシステムによって変わる。基準値は、予めシミュレーションで求めたり、あるいはLSIの開発段階またはLSIを使ったシステムの開発段階での試験での結果から求めることができる。また基準値は、ゲート素子1段の平均遅延時間Tdでなくても、その関数になるものでもよい。たとえば、遅延モニタ#iの出力であるCdc,Cdfそのものであってもよい。精度がそれほど要求されない場合はCdcだけでもよい。精度がある程度必要な場合には、Cdcを上位ビットとし、Cdfを下位ビットとしてコンカチネートしたデータでもよい。Cdc,Cdfをそのまま使う場合は、CPUの計算負荷が減り、制御が簡単になる。
【0050】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、アラートを発信することができる。
【0051】
[第2の実施形態]
図6は、第2の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0052】
図6に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS201)。
【0053】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS202)。
【0054】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS203でYES)、チェックを完了する。
【0055】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS203でNO)、JTAGコントローラ11に対して、適切なシーケンスの信号を与えることによって、LSI1のセルフテスト(BIST(Built-In Self Test))を行ない、劣化によって誤動作する箇所が無いかを調査する(ステップS204)。
【0056】
セルフテストで問題がない場合には(ステップS205でNO)、CPU#8は、チェックを完了する。セルフテストで問題がある場合には(ステップS205でYES)、CPU#8は、LSI1の外部にLSI1が経年劣化していると判定して、アラートを発信する(ステップS206)。
【0057】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、BISTを実行して、経年劣化によって誤動作する箇所がないかを調べることができる。
【0058】
[第3の実施形態]
図7は、第3の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0059】
図7に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS301)。
【0060】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS302)。
【0061】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS303でYES)、チェックを完了する。
【0062】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS303でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、電源回路10を制御して遅延モニタ#iの近傍のモジュールの電源電圧を下げる。電源電圧の制御は、電源レギュレータを内蔵するLSIの場合には、CPU#8が、電源レギュレータへ電源電圧を下げるように指示する信号を出力することによって行なわれる。電源レギュレータを持たないLSIの場合には、CPU#8は、LSIの外部へ電源電圧を減少するように要求して、LSIの外部のレギュレータが電源電圧を下げるように制御する。CPU#0は、基準値と遅延値Tdとの差分を計算し、差分値に基づいて、電源電圧の下げ幅を決定する。たとえば、CPU#8は、基準値と遅延値Tdとの差分値が1nsごとに基準値を10mV下げる。電圧が高いほど経年劣化が進むので、電源電圧を下げることで劣化の進行を遅らせることができる(ステップS304)。
【0063】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールの電源電圧を下げたことによって遅延モニタ#iにおけるゲート遅延が増えるためである(ステップS305)。
【0064】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、遅延モニタの近傍のモジュールの電源電圧を小さくすることによって、LSIの寿命を延ばすことができる。
【0065】
なお、電源電圧の制御の別の方法として、図8に示すようなテーブルに従って、パルスカウンタ24のカウント値Cdcの値によって、電源電圧の大きさを変更することとしてもよい。
【0066】
第3の実施形態の電源電圧の下げ幅、および図8のテーブルの電圧は、製造プロセスや使用環境などによって適切な値が変わるので、それぞれのLSIまたはシステムに合ったものを用いることにすればよい。
【0067】
[第4の実施形態]
図9は、第4の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0068】
図9に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS401)。
【0069】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS402)。
【0070】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS403でYES)、チェックを完了する。
【0071】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS403でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、クロック供給回路33を制御して遅延モニタ#iの近傍のモジュールの動作周波数を下げる。CPU#8は、基準値と遅延値Tdとの差分を計算し、差分値に基づいて、近傍のモジュール動作周波数の下げ幅を決定する。たとえば、基準値と遅延値Tdとの差分値が5nsごとに、供給するクロックの分周比を大きくする。周波数の制御は、LSI内で自動的に下げてもよいし、またOSやソフトウェアによってCPU#8からクロック周波数を制御することとしてもよい。周波数(=サイクルタイム)が速いほど経年劣化が進むので、動作周波数を下げることで劣化の進行を遅らせることができる(ステップS404)。
【0072】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールの動作周波数を下げても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値Tdが基準値を超えることになるためである(ステップS405)。
【0073】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、遅延モニタの近傍のモジュールの動作周波数を下げることによって、LSIの寿命を延ばすことができる。
【0074】
なお、周波数制御の別の方法として、図10に示すようなテーブルに従って、パルスカウンタのカウント値Cdcの値によって、分周比を変えることで周波数の大きさを変更することとしてもよい。
【0075】
なお、第4の実施形態の周波数の下げ幅、および図10のテーブルの分周比は、製造プロセスや使用環境などによって適切な値が変わるので、それぞれのLSIまたはシステムに合ったものを用いることにすればよい。
【0076】
[第5の実施形態]
図11は、第5の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0077】
図11に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS501)。
【0078】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS502)。
【0079】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS503でYES)、チェックを完了する。
【0080】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS503でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、温度を下げるために、LSIパッケージに外付けされている冷却ファンの回転速度を上げたり、回転頻度を上げる制御を行なう。
【0081】
CPU#8は、基準値と遅延値Tdとの差分を計算し、差分値に基づいて、冷却ファンの制御幅を決定する。たとえば、基準値と遅延値Tdとの差分値が1nsごとに、冷却ファンの回転数を1段階上げたり、冷却ファンをオンにするためのセンサの温度設定を1段階上げたりする。温度が高いほど経年劣化が進むものがあるので、温度を下げることで劣化の進行を遅らせることができる(ステップS504)。
【0082】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、冷却ファンを制御しても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS505)。
【0083】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、LSIパッケージに外付けされている冷却ファンの回転速度を上げたり、回転頻度を上げる制御を行い、温度を下げることによって、LSIの寿命を延ばすことができる。
【0084】
[第6の実施形態]
CPU#0〜CPU#8は、OSによってタスクが割り当てられる。各タスクはその内容によって、CPUにかかる負荷が違う。たとえば複雑な演算をするタスクを実行するCPUは多くのゲートが速い周波数でスイッチングする。単純な計算を行なうタスクを実行するCPUは少ないゲートが比較的遅い周波数でスイッチングする。外部からの入力を監視するような制御系のタスクを実行するCPUは、ほとんどのゲートが全くスイッチングせず一部のゲートも非常に遅い周波数でしか動かない。
【0085】
本実施の形態は、経年劣化が判定された場合に、複数のCPUへのタスクの割り当てを切替える。
【0086】
図12は、第6の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0087】
図12に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS601)。
【0088】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS602)。
【0089】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS603でYES)、チェックを完了する。
【0090】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS603でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、遅延モニタ#iの近傍のモジュールが高負荷のタスクを実行しているCPUであったときには(ステップS604でYES)、近傍の遅延モニタの遅延値Tdが基準値以下であり、かつ低負荷なタスクを実行しているか、いずれのタスクも実行していない別のCPUを特定する。CPU#8は、特定した別のCPUに近傍のモジュールであるCPUが実行していた高負荷なタスクを割り当てる。また、CPU#8は、別のCPUが低負荷なタクスを実行していた場合には、その低負荷なタスクを近傍のモジュールのCPUに割り当てる。CPUの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。したがってCPUの負荷を下げることで劣化の進行を遅らせることができる(ステップS605)。
【0091】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールのCPUのタスクを低負荷のタスクに変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS606)。
【0092】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、複数のCPUのタスクの割当てを変更することによって、LSIの寿命を延ばすことができる。
【0093】
なお、経年劣化していると判定された遅延モニタの近傍のCPUについては、OSなどのソフトウェアがその遅延値を記憶し、以降もその遅延値に基づいて、そのCPUに適切な負荷のタスクを割り当てることとしてもよい。
【0094】
[第7の実施形態]
本実施の形態では、DSP#0およびDSP#1は、一方がメイン演算器として機能し、他方がサブ演算器として機能するものとする。初期状態では、DSP#0がメイン演算器として機能し、DSP#1がサブ演算器として機能するものとする。
【0095】
メイン演算器で演算のほとんどすべてが行なわれるが、メイン演算器だけでは処理速度が間に合わない演算を行なう場合には、サブ演算器がメイン演算器を補助するために用いられる。
【0096】
本実施の形態は、経年劣化が判定された場合に、DSP#0とDSP#1の役割を切替える。
【0097】
図13は、第7の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0098】
図13に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS701)。
【0099】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS702)。
【0100】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS703でYES)、チェックを完了する。
【0101】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS703でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、遅延モニタ#iの近傍のモジュールがメイン演算器として機能しているDSP#0であったときには(ステップS704でYES)、サブ演算器として機能しているDSP#1の近傍の遅延モニタの遅延値が基準値以下である場合には、DSP#1をメイン演算器に変更し、DSP#0をサブ演算器に変更する。メイン演算器とサブ演算器の切替えは、OSが割り当てを決めている場合は、OS内で処理することができる。別の切替方法として、アプリケーションソフトウェアで切替えたり、ハードウェアでDSP0とDSP1の入出力I/Fを入れ替えたり、DSP#0とDSP#1の識別IDを入れ替えるなどの方法でもよい。DSPの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。従ってDSPの負荷を下げることで劣化の進行を遅らせることができる(ステップS705)。
【0102】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールのDSP#0をサブ演算器に変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS706)。
【0103】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、メイン演算器とサブ演算器の役割を交換することによって、LSIの寿命を延ばすことができる。
【0104】
[第8の実施形態]
本実施の形態では、CPU#0〜CPU#8のうち、1つがメインCPUとして機能し、CPU#1〜CPU#7の7つがサブCPUとして機能し、CPU#8を経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行するものとする。初期状態では、CPU#0がメインCPUとして機能し、CPU#1〜CPU#7がサブCPUとして機能するものとする。
【0105】
メインCPUで命令のほとんどすべてが行なわれるが、メインCPUだけでは処理速度が間に合わない命令を実行する場合には、サブCPUがメインCPUを補助するために用いられる。
【0106】
本実施の形態は、経年劣化が判定された場合に、メインCPUをCPU#0から他のCPUに切替える。
【0107】
図14は、第8の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0108】
図14に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS801)。
【0109】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS802)。
【0110】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS803でYES)、チェックを完了する。
【0111】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS803でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、遅延モニタ#iの近傍のモジュールがメインCPUとして機能しているCPU#0であった場合には(ステップS804でYES)、CPU#1〜CPU#7のうち、近傍の遅延モニタの遅延値が基準値以下であるCPUを特定する(CPU#Aとする)。CPU#8は、CPU#0をサブCPUに変更し、CPU#AをメインCPUに変更する。メインCPUとサブCPUの切替えは、OSが割り当てを決めている場合は、OS内で処理することができる。別の切替方法として、アプリケーションソフトウェアで切替えたり、ハードウェアでCPU#0とCPU#Aの入出力I/Fを入れ替えたり、CPU#0とCPU#Aの識別IDを入れ替えるなどの方法でもよい。CPUの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。従ってCPUの負荷を下げることで劣化の進行を遅らせることができる(ステップS805)。
【0112】
さらに、CPU#Aは、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールのCPU#0をサブCPUに変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS806)。
【0113】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、メインCPUとサブCPUの役割を交換することによって、LSIの寿命を延ばすことができる。
【0114】
[第9の実施形態]
本実施の形態では、CPU#0〜CPU#8のうち、CPU#0〜CPU#6の7つはSMP(Symmetric Multiple Processor)プロセッサとして使用され、CPU#7は予備のCPUとして機能するものとする。SMPプロセッサによって、プログラムが並列処理される。予備のCPUには、クロックが供給されず、電源電圧も供給されない。
【0115】
本実施の形態では、SMPプロセッサとして動作するCPU#0〜CPU#6に経年劣化が観測された場合に、経年劣化したCPUを停止させるとともに、予備のCPUがあればその予備のCPUをSMPプロセッサとして動作させる。
【0116】
図15は、第9の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0117】
図15に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS901)。
【0118】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS902)。
【0119】
CPU#0は、遅延値Tdが基準値以下の場合には(ステップS903でYES)、チェックを完了する。
【0120】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS903でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、遅延モニタ#iの近傍のモジュールが動作中のCPU(以下、劣化CPUとよぶ)であった場合には(ステップS904でYES)、予備のCPUがあるかを調べる。
【0121】
CPU#8は、予備のCPUがある場合(CPU#7が予備のままの場合)には(ステップS905でYES)、予備のCPU(CPU#7)を起動し、劣化CPUから予備のCPUにデータを移動して(ステップS906)、劣化CPUを停止させる(ステップS907)。
【0122】
CPU#8は、予備のCPUがない場合(CPU#7が予備でなくなった場合)には(ステップS905でNO)、劣化CPUから他の動作中のCPUにデータを移動して、劣化CPUを停止させ、動作中のCPUで並列度を1つ下げてプログラムを実行させる(ステップS906)。
【0123】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールの劣化CPUを停止させても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS910)。
【0124】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、CPUの経年劣化を検出した場合に、劣化したCPUに代えて予備のCPUを使用することによって、LSIの寿命を延ばすことができる。
【0125】
なお、本実施の形態では、予備のCPUを有し、あるCPUが劣化した場合に、劣化したCPUに代えて予備のCPUを使用する場合について説明したが、DSP、他の機能IP、またはアナログモジュールでも、同様に実行できる。
【0126】
[第10の実施形態]
図16は、第10の実施形態の遅延モニタ#i(i=00〜16)の構成を表わす図である。
【0127】
第10の実施形態の遅延モニタ#iが、図3に示す第1の実施形態の遅延モニタ#iと相違する点は、第1の実施形態の遅延モニタ#iのリングオシレータ26が、遅延値の測定期間のみ発振したのに対して、第10の実施形態の遅延モニタ#iのリングオシレータ26が、遅延値の測定期間の前後の所定サイクル以外では、発振し続ける点である。
【0128】
具体的には、第10の実施形態の遅延モニタ#iは、図3の構成に加えて、論理回路42とフリップフロップ41とを備える。
【0129】
第1の実施形態と同様のフリップフロップ25の出力であるオシレータイネーブル信号EN1は、エッジ検出部23およびパルスカウンタ24に与えられる。
【0130】
論理回路42は、計測開始信号ST、リセット信号RS、基準クロックCLKを受けて、論理演算の結果をフリップフロップ41へ出力する。フリップフロップ41の出力であるオシレータイネーブル信号EN2は、リングオシレータ26に与えられる。
【0131】
(遅延値の算出動作)
次に、図17を用いて、遅延モニタ#iが起動して、CPU#8によってCdおよびTdが算出す動作について説明する。
【0132】
まず、論理回路42およびフリップフロップ41によって、リングオシレータ26の第一の信号線へのオシレータイネーブル信号EN2がハイレベルに設定される。オシレータイネーブル信号EN2がハイレベルになることによって、リングオシレータ26は発振する。
【0133】
制御レジスタ22は、CPU#8の制御によって、計測開始ビットに「1」が書き込まれると、ハイレベルのリセット信号RSをパルスカウンタ24に出力する。パルスカウンタ24は、リセット信号RSを受けると、それまで保持していた検出内容をリセットする。
【0134】
論理回路42およびフリップフロップ41は、リセット信号RSの立下りのタイミングで、リングオシレータ26の第一の信号線へのオシレータイネーブル信号EN2をハイレベルからロウレベルに変更する。オシレータイネーブル信号EN2がロウレベルになることによって、リングオシレータ26は発振を停止する。
【0135】
次に、制御レジスタ22は、リセット信号RSを出力してから基準クロックCLKの1周期経過後に、ハイレベルの計測開始信号STをフリップフロップ25に出力する。フリップフロップ25は、計測開始信号STの立下りのタイミングから基準クロックCLKの1周期の間の測定期間において、エッジ検出部23にハイレベルのオシレータイネーブル信号EN1を出力する。
【0136】
また、論理回路42およびフリップフロップ41は、計測開始信号STの立下りのタイミングから基準クロックCLKの1周期の間の測定期間において、リングオシレータ26の第一の信号線にハイレベルのオシレータイネーブル信号EN2を出力する。オシレータイネーブル信号EN2がハイレベルになることによって、リングオシレータ26は発振する。
【0137】
オシレータイネーブル信号EN1がハイレベルの期間(すなわち、測定期間)において、パルスカウンタ24は、リングオシレータ26の発振信号の発振数Cdcをカウントする。エッジ検出部23は、オシレータイネーブル信号EN1がロウレベルになるタイミングで、オシレータイネーブル信号EN2のエッジが伝播しているゲート段数Cdfを検出する。
【0138】
CPU#8は、遅延モニタ#iの出力Cdc,Cdfに基づいて、式(A1)、(A2)に従って、伝播可能段数Cdおよびゲート素子1段の平均遅延時間Tdを求めて、Tdを経年劣化判定のための遅延値として用いる。
【0139】
また、論理回路42およびフリップフロップ41によって、測定時間の終了後、基準クロックCLKの2周期の間、リングオシレータ26の第一の信号線へのオシレータイネーブル信号EN2がロウレベルに設定される。オシレータイネーブル信号EN2がロウレベルになることによって、リングオシレータ26は発振を停止する。
【0140】
論理回路42およびフリップフロップ41によって、基準クロックCLKの2周期の経過後、リングオシレータ26の第一の信号線へのオシレータイネーブル信号EN2がハイレベルに設定される。オシレータイネーブル信号EN2がハイレベルになることによって、リングオシレータ26は発振を再開する。
【0141】
(効果)
以上のように、本実施の形態の遅延モニタのリングオシレータは長時間発振し、劣化の進みが早いので、劣化の進行を早期に検出できる。
【0142】
[第11の実施形態]
図18は、第11の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0143】
図18に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS1101)。
【0144】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS1102)。
【0145】
CPU#8は、現在測定された遅延値Tdと前回測定された遅延値Tdとの差分値が基準値以下の場合には(ステップS1103でYES)、遅延値Tdを内蔵SRAM6に記憶して(ステップS1104)、チェックを完了する。
【0146】
CPU#8は、差分値が基準値を超えた場合には(ステップS1103でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、LSI1の外部にアラートを発信する(ステップS1105)。
【0147】
(効果)
以上のように、本実施の形態によれば、現在の遅延値と前回測定時の遅延値との差分値に基づいて経年劣化を判定するので、バラつきの大きいLSIでも正確に経年劣化を判定することができる。
【0148】
なお、より正確に経年劣化を判断するために、前回測定時の遅延値だけでなく、それ以前の遅延値の履歴も取っておき、これらの遅延値の統計量(移動平均など)に基づいて、経年劣化を判断することとしてもよい。
【0149】
[第12の実施形態]
第12の実施形態では、図19に示すように、2個の遅延モニタが1つのペアを構成する。2個の遅延モニタは、近接して配置される。
【0150】
ペアの一方の第1遅延モニタ61は、第10の実施形態で説明した図16に示す遅延モニタである。第1遅延モニタ61のリングオシレータ26は、遅延値の測定期間の前後の所定サイクル以外では、発振し続ける。
【0151】
ペアの他方の第2遅延モニタ62は、第1の実施形態で説明した図3に示す遅延モニタである。第2遅延モニタ62のリングオシレータ26は遅延値の測定期間のみ発振する。
【0152】
第1遅延モニタ61は、発振する時間が長いので、第2遅延モニタ62よりも早く劣化する。第1遅延モニタ61と第2遅延モニタ62は、製造ばらつきや、電圧、温度など周囲環境は非常に近い状態のため、第1遅延モニタ61と第2遅延モニタ62の遅延値の差分を見ることで、近接するモジュールが劣化の進行が顕著になる期間(すなわち、遅延値の時間変化量が大きい期間)に入ったか否かを判定することができる。
【0153】
CPU#8は、第1遅延モニタ61で測定された遅延値Tdと、第2遅延モニタ62で測定された遅延値Tdとの差分値が基準値を超えた場合に、第1遅延モニタ61と第2遅延モニタ62の近傍のモジュールが経年劣化したと判定する。
【0154】
(効果)
以上のように、本実施の形態によれば、リングオシレータが長時間発振する第1遅延モニタの遅延値と、リングオシレータが短時間発振する第2遅延モニタの遅延値との差分値に基づいて経年劣化を判定するので、バラつきの大きいLSIでも正確に経年劣化を判定することができる。
【0155】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0156】
1 LSI、2 DDR2I/F、3 2次キャッシュ、4 CPUバス制御部、5 DMAC、6 内蔵SRAM、8 外部バス制御部、9 DSP群、10 電源回路、11 JTAGコントローラ、12 汎用入出力ポート、13 内部周辺バス、14 CPU群、15 遅延モニタ群、22 制御レジスタ、23 エッジ検出部、24 パルスカウンタ、25,41 フリップフロップ、26 リングオシレータ、33 クロック供給回路、42 論理回路、61 第1遅延モニタ、62 第2遅延モニタ、NA NAND、IV1〜IV14 ゲート素子。
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
集積回路などの装置の劣化を検出する方法が知られている。たとえば、特許文献1の方法は、デジタル・システムの最大動作周波数を周期的に求めることと、(i)デジタル・システムの測定または推定最大動作周波数が、デジタル・システムの警告閾値動作周波数を下回る場合であって、当該警告閾値周波数は、デジタル・システムについて製造元によって特定された最小動作周波数以上である場合、および(ii)デジタル・システムの測定最大動作周波数間の差分の変化率がデジタル・システムについての許容変化率閾値を超える場合のうちの少なくとも1つであった場合にデジタル・システムの信頼性の低下を示す警告信号を生成することとを含む、ことが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2010−524101号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1のような従来の劣化検出装置は、劣化の予兆を察知したらアラームを発信して、該当システムまたはLSIの修理または交換を行なうものである。前もって故障しそうなことが分かると、部品調達やメンテナンススケジュール調整ができるため、円滑に交換作業を進めることができるメリットがある。
【0005】
しかしながら、従来の劣化検出回路には、以下の問題がある。
同一パッケージ内に複数のダイチップが実装されている場合は、それぞれのダイは違う製造プロセスで作られているため、信頼性に関するパラメータが相違する。すなわち故障率や寿命が違うため、あるダイチップが劣化しても他のダイチップも同じように劣化するとは限らない。また、アナログ回路、メモリ、高速回路、低速回路が混在する大規模システムLSIでは、同一ダイであっても、場所によって微細度が違うため故障率や寿命が異なるし、また同程度の微細度でも場所によって劣化に大きく関係する電圧、電流密度、温度が異なるため、ある箇所が劣化しても他の箇所が同じように劣化しているとは限らない。このように、従来では、同一半導体チップ内の劣化は均一ではないにもかかわらず、チップ全体の劣化を検出して、チップごとに交換していたため、無駄が生じていた。
【0006】
それゆえに、本発明の目的は、部分的な経年劣化の予兆を早期に発見することができる半導体装置を提供することである。
【課題を解決するための手段】
【0007】
本発明の一実施形態の半導体装置は、複数のモジュールと、複数の遅延モニタとを備え、各遅延モニタは、複数段のゲート素子を有するリングオシレータを含み、ゲート素子の遅延時間を測定する。この半導体装置は、遅延モニタによって測定された遅延時間に基づいて、遅延モニタの近傍のモジュールの経年劣化を判定する制御部とを備える。
【発明の効果】
【0008】
本発明の一実施形態によれば、部分的な経年劣化の予兆を早期に発見することができる半導体装置を提供することである。
【図面の簡単な説明】
【0009】
【図1】本実施の形態のLSIの構成を表わす図である。
【図2】図1のLSIのレイアウトを表わす図である。
【図3】第1の実施形態の遅延モニタ#i(i=00〜16)の構成を表わす図である。
【図4】第1の実施形態の遅延モニタの動作タイミングを表わす図である。
【図5】第1の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図6】第2の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図7】第3の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図8】電源電圧の制御テーブルを表わす図である。
【図9】第4の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図10】周波数の制御テーブルを表わす図である。
【図11】第5の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図12】第6の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図13】第7の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図14】第8の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図15】第9の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図16】第10の実施形態の遅延モニタ#i(i=00〜16)の構成を表わす図である。
【図17】第10の実施形態の遅延モニタの動作タイミングを表わす図である。
【図18】第11の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【図19】第12の実施形態の遅延モニタを説明するための図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面を参照して説明する。
[第1の実施形態]
図1は、本実施の形態のLSIの構成を表わす図である。
【0011】
このLSI1は、マルチプロセッサ構成のLSIである。このLSI1は、CPU(Central Processing Unit)群14を有する。CPU群14は、CPU#0〜#8の複数のプロセッサを含む。CPU#0〜CPU#8の各々は、内部に1次キャッシュ(I-cache,D-cache)、CPUコアと、内部メモリ(U-LM)、MMU(メモリ管理部)、SDI(デバッガ)を有する。
【0012】
CPU#0〜CPU#7は、CPUバス72に接続され、CPUバス72はCPUバス制御部4を介して2次キャッシュ3に接続されている。また、2次キャッシュ3、CPU#8、遅延モニタ群15は内部周辺バス13に接続されている。さらに、2次キャッシュはDDR2I/F2を介して第1外部バスに接続されている。
【0013】
CPU#0〜CPU#8のうち、CPU#8が本実施の形態で説明するLSI1の経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行することとする。但し、CPU#0〜CPU#7の何れかにおいて本実施の形態で説明するLSI1の経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行することも可能である。
【0014】
このLSI1は、DSP(Digital Signal Processor)群9と、DMAC(Direct Memory Access Controller)5、外部バス制御部8、電源回路10、内蔵SRAM(Static Random Access Memory)6と、JTAG(Joint Test Action Group)コントローラ11と、汎用入出力ポート12と、クロック供給回路33と、電源回路10とを備える。
【0015】
DSP群9に含まれるDSP#0およびDSP#1は、画像処理などの所定の専用の演算を実行する。
【0016】
(レイアウト)
図2は、図1のLSIのレイアウトを表わす図である。
【0017】
図2に示すように、CPU#0、CPU#1、CPU#2、CPU#3、CPU#4、CPU#5、CPU#6、CPU#7、CPU#8、DSP#0、DSP#1、2次キャッシュ3、DDR2I/F2、内蔵SRAM6、クロック供給回路33、機能モジュールA、機能モジュールB、機能モジュールC、機能モジュールD、機能モジュールE、機能モジュールFがそれぞれ1つのモジュールを構成する。図1のCPUバス制御部4、DMAC5、外部バス制御部8、電源回路10、JTAGコントローラ11、汎用入出力ポート12は、機能モジュール#A〜Fのいずれかに属する。
【0018】
また、LSI1の内部には、遅延モニタ#00〜#16が配置されている。これらの遅延モニタ#00〜#16は小さく且つ省電力である。これらの遅延モニタ#00〜#16はレイアウト上全く同じ形状をしている。
【0019】
各遅延モニタには、1つのモジュールが対応づけられ、割り当てられたモジュールの近傍(内部を含む)に配置される。たとえば、遅延モニタ#00〜#08がそれぞれCPU#0〜#8に対応づけられて、近傍に配置されている。
【0020】
遅延モニタとその遅延モニタに対応するモジュールは、電源を共通にしたり、あるいはクロック周波数を同じにしたり、あるいは電源とクロック両方を共通にする。各遅延モニタは、対応づけられたモジュールと、温度条件や、製造バラつきが近くなるように、割り当てられたモジュールの近傍に配置される。したがって、経年劣化によって遅延モニタの遅延値が大きくなった場合には、遅延モニタに対応し、近傍に配置されたモジュールも経年劣化していると判断することができる。
【0021】
上述の1つのモジュール、すなわちCPU#0、CPU#1、CPU#2、CPU#3、CPU#4、CPU#5、CPU#6、CPU#7、CPU#8、DSP#0、DSP#1、2次キャッシュ、DDR2I/F、SRAM、クロック供給回路、機能モジュールA、機能モジュールB、機能モジュールC、機能モジュールD、機能モジュールE、機能モジュールFは個別に周波数制御ができる。
【0022】
CPU#0、CPU#1、CPU#2、CPU#3、CPU#4、CPU#5、CPU#6、CPU#7、CPU#8、DSP#0、DSP#1、2次キャッシュ、DDR2I/F、SRAM、クロック供給回路、機能モジュールA、機能モジュールF、機能モジュールB+C+D+Eのセットは、それぞれ個別に電圧制御ができる。
【0023】
(遅延モニタ)
経年劣化によって、トランジスタの閾値が変化したり、トランジスタのドレイン電流が減少し、配線やビアは配線細りになる。したがって、経年劣化が進むにつれインバータチェーンのゲート遅延が徐々に大きくなる。本実施の形態の遅延モニタは、このような特質を利用する。
【0024】
図3は、第1の実施形態の遅延モニタ#i(i=00〜16)の構成を表わす図である。
【0025】
図3を参照して、遅延モニタ#iは、制御レジスタ22と、フリップフロップ25と、リングオシレータ26と、パルスカウンタ24と、エッジ検出部23とを備える。
【0026】
パルスカウンタ24と、エッジ検出部23と、CPU#8と、制御レジスタ22は、内部周辺バス13によって互いに接続されている。
【0027】
制御レジスタ22には、内部周辺バス13を介してCPUから信号が入力される。さらに、制御レジスタ22には、基準クロックCLKが入力される。基準クロックCLKとして、たとえば、CPU#8のクロック、内部周辺バス13のクロック、遅延モニタ専用のクロックなどが用いられる。
【0028】
制御レジスタ22は、遅延モニタ#iの起動時に、CPU#8の制御によって、計測開始ビットに「1」が書き込まれる。制御レジスタ22の計測開始ビットが「1」に設定された場合に、リセット信号RSがパルスカウンタ24に出力される。
【0029】
制御レジスタ22は、リセット信号RSを出力してから一定時間経過後に、計測開始信号STをフリップフロップ25に出力する。
【0030】
フリップフロップ25には、基準クロックCLKと、計測開始信号STが入力される。フリップフロップ25は、計測開始信号STが入力された場合に、リングオシレータ26とエッジ検出部23に、イネーブル信号であるオシレータイネーブル信号ENを基準クロックCLKの1周期Tcの期間出力する。
【0031】
リングオシレータ26は、NAND素子NAと複数段のゲート素子IV1〜IV14と第一の信号線とを有し、第一の信号線にイネーブル信号であるオシレータイネーブル信号ENが入力されている期間、発振信号を出力する。
【0032】
NAND素子は2つの端子を有する。NAND素子の一方の端子は、第一の信号線が接続されたイネーブル端子である。上述したフリップフロップ25の動作により、オシレータイネーブル信号ENは、基準クロックCLKの1周期の期間、第一の信号線に入力される。そのため、第一の信号線と接続されたイネーブル端子には、オシレータイネーブル信号ENが入力される。NAND素子の他方の端子には、最終段のインバータ素子から出力される信号が入力される。
【0033】
パルスカウンタ24は、リングオシレータ26の発振信号の発振数、つまり、リングオシレータ26の出力パルス数Cdcをカウントする。このカウント値は、たとえば、16ビット単位で出力される。パルスカウンタ24には、制御レジスタ22からリセット信号RSが入力される。パルスカウンタ24は、リセット信号RSが入力されると、それまで保持していた出力パルス数をリセットする。
【0034】
エッジ検出部23は、リングオシレータ26の各段のゲート素子の出力を、オシレータイネーブル信号ENの終了のタイミングで検出する。具体的には、エッジ検出部23は、オシレータイネーブル信号ENのエッジが、上記のタイミングで伝播しているゲート素子の段数(以下、ゲート段数)Cdfを検出する。Cdfは、リングオシレータ26内を通過したオシレータイネーブル信号ENのエッジ数が偶数である場合には、イネーブル端子からのゲート段数と対応する。一方、リングオシレータ26内を通過したオシレータイネーブル信号ENのエッジ数が奇数である場合には、Cdfは、イネーブル端子からのゲート段数に全ゲート段数を加えた値となる。したがって、Cdfは、0〜29までの値を取る。この検出内容は、たとえば、15ビットで出力される。
【0035】
CPU#8は、内部周辺バス13を介して、パルスカウンタ24と、エッジ検出部23と接続される。CPU#8は、遅延モニタ#i内のエッジ検出部23およびパルスカウンタ24の出力に基づいて、ゲート素子による遅延に関する所定の数値を算出する。
【0036】
本実施の形態において、CPU#8は、式(A1)(A2)に基づいて、パルスカウンタ24のカウント値Cdcと、エッジ検出部23の検出内容Cdfとから、第一の信号線にオシレータイネーブル信号が入力されている期間にオシレータイネーブル信号ENのエッジがリングオシレータ26の各ゲート素子を伝播可能な段数(以下、伝播可能段数)Cd、および、ゲート素子1段の平均遅延時間Tdを算出する。
【0037】
Cd=Cdc×N×2+Cdf・・・(A1)
Td=Tc/Cd・・・(A2)
ただし、Tcは基準クロックCLKの周期、Nはリングオシレータ26のゲート素子の段数である。本実施の形態では、ゲート素子1段の平均遅延時間Tdを経年劣化の判定のための遅延値として用いる。
【0038】
(遅延値の算出動作)
次に、図4を用いて、遅延モニタ#iが起動して、CPU#8によってCdおよびTdを算出する動作について説明する。
【0039】
まず、制御レジスタ22は、CPU#8の制御によって、計測開始ビットに「1」が書き込まれると、ハイレベルのリセット信号RSをパルスカウンタ24に出力する。パルスカウンタ24は、リセット信号RSを受けると、それまで保持していた検出内容をリセットする。
【0040】
次に、制御レジスタ22は、リセット信号RSを出力してから基準クロックCLKの1周期経過後に、ハイレベルの計測開始信号STをフリップフロップ25に出力する。フリップフロップ25は、計測開始信号STの立下りのタイミングから基準クロックCLKの1周期の間の測定期間において、リングオシレータ26の第一の信号線に、ハイレベルのオシレータイネーブル信号ENを出力する。
【0041】
オシレータイネーブル信号ENがハイレベルの期間(すなわち、測定期間)において、パルスカウンタ24は、リングオシレータ26の発振信号の発振数Cdcをカウントする。エッジ検出部23は、オシレータイネーブル信号ENがロウレベルになるタイミングで、オシレータイネーブル信号ENのエッジが伝播しているゲート段数Cdfを検出する。
【0042】
CPU#8は、遅延モニタ#iの出力Cdc,Cdfに基づいて、式(A1)、(A2)に従って、伝播可能段数Cdおよびゲート素子1段の平均遅延時間Tdを求めて、Tdを経年劣化判定のための遅延値として用いる。
【0043】
(経年劣化の判定)
図5は、第1の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0044】
図5に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS101)。
【0045】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS102)。
【0046】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS103でYES)、チェックを完了する。
【0047】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS103でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、LSI1の外部にアラートを発信する(ステップS104)。
【0048】
上記の動作において、遅延モニタ#iを起動して遅延値をチェックするタイミングは、システムの立ち上げ時または一定時間ごと(定期的)とする。また、このLSI1を用いたシステム内の他の動作に連携して(たとえば自動車に関連するLSIの場合には、自動車が動く時、停止する時、エンジンの回転数が一定以上になった時など)、遅延モニタ#iを起動して遅延値をチェックすることとしてもよい。また、コンピューターシステム管理者のメンテナンスの指示によって遅延モニタ#iを起動して遅延値をチェックすることとしてもよい。
【0049】
基準値は、許容できる上限値に到達するまでの時間を確保できる値を設定する。許容できる上限値に到達するまでの時間、つまり故障までの時間は、LSIを使用するシステムによって変わる。基準値は、予めシミュレーションで求めたり、あるいはLSIの開発段階またはLSIを使ったシステムの開発段階での試験での結果から求めることができる。また基準値は、ゲート素子1段の平均遅延時間Tdでなくても、その関数になるものでもよい。たとえば、遅延モニタ#iの出力であるCdc,Cdfそのものであってもよい。精度がそれほど要求されない場合はCdcだけでもよい。精度がある程度必要な場合には、Cdcを上位ビットとし、Cdfを下位ビットとしてコンカチネートしたデータでもよい。Cdc,Cdfをそのまま使う場合は、CPUの計算負荷が減り、制御が簡単になる。
【0050】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、アラートを発信することができる。
【0051】
[第2の実施形態]
図6は、第2の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0052】
図6に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS201)。
【0053】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS202)。
【0054】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS203でYES)、チェックを完了する。
【0055】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS203でNO)、JTAGコントローラ11に対して、適切なシーケンスの信号を与えることによって、LSI1のセルフテスト(BIST(Built-In Self Test))を行ない、劣化によって誤動作する箇所が無いかを調査する(ステップS204)。
【0056】
セルフテストで問題がない場合には(ステップS205でNO)、CPU#8は、チェックを完了する。セルフテストで問題がある場合には(ステップS205でYES)、CPU#8は、LSI1の外部にLSI1が経年劣化していると判定して、アラートを発信する(ステップS206)。
【0057】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、BISTを実行して、経年劣化によって誤動作する箇所がないかを調べることができる。
【0058】
[第3の実施形態]
図7は、第3の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0059】
図7に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS301)。
【0060】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS302)。
【0061】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS303でYES)、チェックを完了する。
【0062】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS303でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、電源回路10を制御して遅延モニタ#iの近傍のモジュールの電源電圧を下げる。電源電圧の制御は、電源レギュレータを内蔵するLSIの場合には、CPU#8が、電源レギュレータへ電源電圧を下げるように指示する信号を出力することによって行なわれる。電源レギュレータを持たないLSIの場合には、CPU#8は、LSIの外部へ電源電圧を減少するように要求して、LSIの外部のレギュレータが電源電圧を下げるように制御する。CPU#0は、基準値と遅延値Tdとの差分を計算し、差分値に基づいて、電源電圧の下げ幅を決定する。たとえば、CPU#8は、基準値と遅延値Tdとの差分値が1nsごとに基準値を10mV下げる。電圧が高いほど経年劣化が進むので、電源電圧を下げることで劣化の進行を遅らせることができる(ステップS304)。
【0063】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールの電源電圧を下げたことによって遅延モニタ#iにおけるゲート遅延が増えるためである(ステップS305)。
【0064】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、遅延モニタの近傍のモジュールの電源電圧を小さくすることによって、LSIの寿命を延ばすことができる。
【0065】
なお、電源電圧の制御の別の方法として、図8に示すようなテーブルに従って、パルスカウンタ24のカウント値Cdcの値によって、電源電圧の大きさを変更することとしてもよい。
【0066】
第3の実施形態の電源電圧の下げ幅、および図8のテーブルの電圧は、製造プロセスや使用環境などによって適切な値が変わるので、それぞれのLSIまたはシステムに合ったものを用いることにすればよい。
【0067】
[第4の実施形態]
図9は、第4の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0068】
図9に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS401)。
【0069】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS402)。
【0070】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS403でYES)、チェックを完了する。
【0071】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS403でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、クロック供給回路33を制御して遅延モニタ#iの近傍のモジュールの動作周波数を下げる。CPU#8は、基準値と遅延値Tdとの差分を計算し、差分値に基づいて、近傍のモジュール動作周波数の下げ幅を決定する。たとえば、基準値と遅延値Tdとの差分値が5nsごとに、供給するクロックの分周比を大きくする。周波数の制御は、LSI内で自動的に下げてもよいし、またOSやソフトウェアによってCPU#8からクロック周波数を制御することとしてもよい。周波数(=サイクルタイム)が速いほど経年劣化が進むので、動作周波数を下げることで劣化の進行を遅らせることができる(ステップS404)。
【0072】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールの動作周波数を下げても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値Tdが基準値を超えることになるためである(ステップS405)。
【0073】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、遅延モニタの近傍のモジュールの動作周波数を下げることによって、LSIの寿命を延ばすことができる。
【0074】
なお、周波数制御の別の方法として、図10に示すようなテーブルに従って、パルスカウンタのカウント値Cdcの値によって、分周比を変えることで周波数の大きさを変更することとしてもよい。
【0075】
なお、第4の実施形態の周波数の下げ幅、および図10のテーブルの分周比は、製造プロセスや使用環境などによって適切な値が変わるので、それぞれのLSIまたはシステムに合ったものを用いることにすればよい。
【0076】
[第5の実施形態]
図11は、第5の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0077】
図11に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS501)。
【0078】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS502)。
【0079】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS503でYES)、チェックを完了する。
【0080】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS503でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、温度を下げるために、LSIパッケージに外付けされている冷却ファンの回転速度を上げたり、回転頻度を上げる制御を行なう。
【0081】
CPU#8は、基準値と遅延値Tdとの差分を計算し、差分値に基づいて、冷却ファンの制御幅を決定する。たとえば、基準値と遅延値Tdとの差分値が1nsごとに、冷却ファンの回転数を1段階上げたり、冷却ファンをオンにするためのセンサの温度設定を1段階上げたりする。温度が高いほど経年劣化が進むものがあるので、温度を下げることで劣化の進行を遅らせることができる(ステップS504)。
【0082】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、冷却ファンを制御しても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS505)。
【0083】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、LSIパッケージに外付けされている冷却ファンの回転速度を上げたり、回転頻度を上げる制御を行い、温度を下げることによって、LSIの寿命を延ばすことができる。
【0084】
[第6の実施形態]
CPU#0〜CPU#8は、OSによってタスクが割り当てられる。各タスクはその内容によって、CPUにかかる負荷が違う。たとえば複雑な演算をするタスクを実行するCPUは多くのゲートが速い周波数でスイッチングする。単純な計算を行なうタスクを実行するCPUは少ないゲートが比較的遅い周波数でスイッチングする。外部からの入力を監視するような制御系のタスクを実行するCPUは、ほとんどのゲートが全くスイッチングせず一部のゲートも非常に遅い周波数でしか動かない。
【0085】
本実施の形態は、経年劣化が判定された場合に、複数のCPUへのタスクの割り当てを切替える。
【0086】
図12は、第6の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0087】
図12に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS601)。
【0088】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS602)。
【0089】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS603でYES)、チェックを完了する。
【0090】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS603でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、遅延モニタ#iの近傍のモジュールが高負荷のタスクを実行しているCPUであったときには(ステップS604でYES)、近傍の遅延モニタの遅延値Tdが基準値以下であり、かつ低負荷なタスクを実行しているか、いずれのタスクも実行していない別のCPUを特定する。CPU#8は、特定した別のCPUに近傍のモジュールであるCPUが実行していた高負荷なタスクを割り当てる。また、CPU#8は、別のCPUが低負荷なタクスを実行していた場合には、その低負荷なタスクを近傍のモジュールのCPUに割り当てる。CPUの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。したがってCPUの負荷を下げることで劣化の進行を遅らせることができる(ステップS605)。
【0091】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールのCPUのタスクを低負荷のタスクに変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS606)。
【0092】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、複数のCPUのタスクの割当てを変更することによって、LSIの寿命を延ばすことができる。
【0093】
なお、経年劣化していると判定された遅延モニタの近傍のCPUについては、OSなどのソフトウェアがその遅延値を記憶し、以降もその遅延値に基づいて、そのCPUに適切な負荷のタスクを割り当てることとしてもよい。
【0094】
[第7の実施形態]
本実施の形態では、DSP#0およびDSP#1は、一方がメイン演算器として機能し、他方がサブ演算器として機能するものとする。初期状態では、DSP#0がメイン演算器として機能し、DSP#1がサブ演算器として機能するものとする。
【0095】
メイン演算器で演算のほとんどすべてが行なわれるが、メイン演算器だけでは処理速度が間に合わない演算を行なう場合には、サブ演算器がメイン演算器を補助するために用いられる。
【0096】
本実施の形態は、経年劣化が判定された場合に、DSP#0とDSP#1の役割を切替える。
【0097】
図13は、第7の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0098】
図13に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS701)。
【0099】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS702)。
【0100】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS703でYES)、チェックを完了する。
【0101】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS703でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、遅延モニタ#iの近傍のモジュールがメイン演算器として機能しているDSP#0であったときには(ステップS704でYES)、サブ演算器として機能しているDSP#1の近傍の遅延モニタの遅延値が基準値以下である場合には、DSP#1をメイン演算器に変更し、DSP#0をサブ演算器に変更する。メイン演算器とサブ演算器の切替えは、OSが割り当てを決めている場合は、OS内で処理することができる。別の切替方法として、アプリケーションソフトウェアで切替えたり、ハードウェアでDSP0とDSP1の入出力I/Fを入れ替えたり、DSP#0とDSP#1の識別IDを入れ替えるなどの方法でもよい。DSPの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。従ってDSPの負荷を下げることで劣化の進行を遅らせることができる(ステップS705)。
【0102】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールのDSP#0をサブ演算器に変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS706)。
【0103】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、メイン演算器とサブ演算器の役割を交換することによって、LSIの寿命を延ばすことができる。
【0104】
[第8の実施形態]
本実施の形態では、CPU#0〜CPU#8のうち、1つがメインCPUとして機能し、CPU#1〜CPU#7の7つがサブCPUとして機能し、CPU#8を経年劣化の判定、および判定結果に基づいて制御を行なうプログラムを実行するものとする。初期状態では、CPU#0がメインCPUとして機能し、CPU#1〜CPU#7がサブCPUとして機能するものとする。
【0105】
メインCPUで命令のほとんどすべてが行なわれるが、メインCPUだけでは処理速度が間に合わない命令を実行する場合には、サブCPUがメインCPUを補助するために用いられる。
【0106】
本実施の形態は、経年劣化が判定された場合に、メインCPUをCPU#0から他のCPUに切替える。
【0107】
図14は、第8の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0108】
図14に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS801)。
【0109】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS802)。
【0110】
CPU#8は、遅延値Tdが基準値以下の場合には(ステップS803でYES)、チェックを完了する。
【0111】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS803でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、遅延モニタ#iの近傍のモジュールがメインCPUとして機能しているCPU#0であった場合には(ステップS804でYES)、CPU#1〜CPU#7のうち、近傍の遅延モニタの遅延値が基準値以下であるCPUを特定する(CPU#Aとする)。CPU#8は、CPU#0をサブCPUに変更し、CPU#AをメインCPUに変更する。メインCPUとサブCPUの切替えは、OSが割り当てを決めている場合は、OS内で処理することができる。別の切替方法として、アプリケーションソフトウェアで切替えたり、ハードウェアでCPU#0とCPU#Aの入出力I/Fを入れ替えたり、CPU#0とCPU#Aの識別IDを入れ替えるなどの方法でもよい。CPUの負荷が高いと、ゲートのスイッチング回数や、動作周波数、温度が上がるため、経年劣化がより進む。従ってCPUの負荷を下げることで劣化の進行を遅らせることができる(ステップS805)。
【0112】
さらに、CPU#Aは、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールのCPU#0をサブCPUに変えても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS806)。
【0113】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、LSIの経年劣化を検出した場合に、メインCPUとサブCPUの役割を交換することによって、LSIの寿命を延ばすことができる。
【0114】
[第9の実施形態]
本実施の形態では、CPU#0〜CPU#8のうち、CPU#0〜CPU#6の7つはSMP(Symmetric Multiple Processor)プロセッサとして使用され、CPU#7は予備のCPUとして機能するものとする。SMPプロセッサによって、プログラムが並列処理される。予備のCPUには、クロックが供給されず、電源電圧も供給されない。
【0115】
本実施の形態では、SMPプロセッサとして動作するCPU#0〜CPU#6に経年劣化が観測された場合に、経年劣化したCPUを停止させるとともに、予備のCPUがあればその予備のCPUをSMPプロセッサとして動作させる。
【0116】
図15は、第9の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0117】
図15に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS901)。
【0118】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS902)。
【0119】
CPU#0は、遅延値Tdが基準値以下の場合には(ステップS903でYES)、チェックを完了する。
【0120】
CPU#8は、遅延値Tdが基準値を超えた場合には(ステップS903でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、遅延モニタ#iの近傍のモジュールが動作中のCPU(以下、劣化CPUとよぶ)であった場合には(ステップS904でYES)、予備のCPUがあるかを調べる。
【0121】
CPU#8は、予備のCPUがある場合(CPU#7が予備のままの場合)には(ステップS905でYES)、予備のCPU(CPU#7)を起動し、劣化CPUから予備のCPUにデータを移動して(ステップS906)、劣化CPUを停止させる(ステップS907)。
【0122】
CPU#8は、予備のCPUがない場合(CPU#7が予備でなくなった場合)には(ステップS905でNO)、劣化CPUから他の動作中のCPUにデータを移動して、劣化CPUを停止させ、動作中のCPUで並列度を1つ下げてプログラムを実行させる(ステップS906)。
【0123】
さらに、CPU#8は、基準値を緩和する(大きくする)。基準値を緩和する理由は、遅延モニタ#iの近傍のモジュールの劣化CPUを停止させても、劣化したゲートは元には戻らないため、同じ基準値を用いると毎回遅延値が基準値を超えることになるためである(ステップS910)。
【0124】
(効果)
以上のように、本実施の形態によれば、CPUが遅延モニタを観測することによって、CPUの経年劣化を検出した場合に、劣化したCPUに代えて予備のCPUを使用することによって、LSIの寿命を延ばすことができる。
【0125】
なお、本実施の形態では、予備のCPUを有し、あるCPUが劣化した場合に、劣化したCPUに代えて予備のCPUを使用する場合について説明したが、DSP、他の機能IP、またはアナログモジュールでも、同様に実行できる。
【0126】
[第10の実施形態]
図16は、第10の実施形態の遅延モニタ#i(i=00〜16)の構成を表わす図である。
【0127】
第10の実施形態の遅延モニタ#iが、図3に示す第1の実施形態の遅延モニタ#iと相違する点は、第1の実施形態の遅延モニタ#iのリングオシレータ26が、遅延値の測定期間のみ発振したのに対して、第10の実施形態の遅延モニタ#iのリングオシレータ26が、遅延値の測定期間の前後の所定サイクル以外では、発振し続ける点である。
【0128】
具体的には、第10の実施形態の遅延モニタ#iは、図3の構成に加えて、論理回路42とフリップフロップ41とを備える。
【0129】
第1の実施形態と同様のフリップフロップ25の出力であるオシレータイネーブル信号EN1は、エッジ検出部23およびパルスカウンタ24に与えられる。
【0130】
論理回路42は、計測開始信号ST、リセット信号RS、基準クロックCLKを受けて、論理演算の結果をフリップフロップ41へ出力する。フリップフロップ41の出力であるオシレータイネーブル信号EN2は、リングオシレータ26に与えられる。
【0131】
(遅延値の算出動作)
次に、図17を用いて、遅延モニタ#iが起動して、CPU#8によってCdおよびTdが算出す動作について説明する。
【0132】
まず、論理回路42およびフリップフロップ41によって、リングオシレータ26の第一の信号線へのオシレータイネーブル信号EN2がハイレベルに設定される。オシレータイネーブル信号EN2がハイレベルになることによって、リングオシレータ26は発振する。
【0133】
制御レジスタ22は、CPU#8の制御によって、計測開始ビットに「1」が書き込まれると、ハイレベルのリセット信号RSをパルスカウンタ24に出力する。パルスカウンタ24は、リセット信号RSを受けると、それまで保持していた検出内容をリセットする。
【0134】
論理回路42およびフリップフロップ41は、リセット信号RSの立下りのタイミングで、リングオシレータ26の第一の信号線へのオシレータイネーブル信号EN2をハイレベルからロウレベルに変更する。オシレータイネーブル信号EN2がロウレベルになることによって、リングオシレータ26は発振を停止する。
【0135】
次に、制御レジスタ22は、リセット信号RSを出力してから基準クロックCLKの1周期経過後に、ハイレベルの計測開始信号STをフリップフロップ25に出力する。フリップフロップ25は、計測開始信号STの立下りのタイミングから基準クロックCLKの1周期の間の測定期間において、エッジ検出部23にハイレベルのオシレータイネーブル信号EN1を出力する。
【0136】
また、論理回路42およびフリップフロップ41は、計測開始信号STの立下りのタイミングから基準クロックCLKの1周期の間の測定期間において、リングオシレータ26の第一の信号線にハイレベルのオシレータイネーブル信号EN2を出力する。オシレータイネーブル信号EN2がハイレベルになることによって、リングオシレータ26は発振する。
【0137】
オシレータイネーブル信号EN1がハイレベルの期間(すなわち、測定期間)において、パルスカウンタ24は、リングオシレータ26の発振信号の発振数Cdcをカウントする。エッジ検出部23は、オシレータイネーブル信号EN1がロウレベルになるタイミングで、オシレータイネーブル信号EN2のエッジが伝播しているゲート段数Cdfを検出する。
【0138】
CPU#8は、遅延モニタ#iの出力Cdc,Cdfに基づいて、式(A1)、(A2)に従って、伝播可能段数Cdおよびゲート素子1段の平均遅延時間Tdを求めて、Tdを経年劣化判定のための遅延値として用いる。
【0139】
また、論理回路42およびフリップフロップ41によって、測定時間の終了後、基準クロックCLKの2周期の間、リングオシレータ26の第一の信号線へのオシレータイネーブル信号EN2がロウレベルに設定される。オシレータイネーブル信号EN2がロウレベルになることによって、リングオシレータ26は発振を停止する。
【0140】
論理回路42およびフリップフロップ41によって、基準クロックCLKの2周期の経過後、リングオシレータ26の第一の信号線へのオシレータイネーブル信号EN2がハイレベルに設定される。オシレータイネーブル信号EN2がハイレベルになることによって、リングオシレータ26は発振を再開する。
【0141】
(効果)
以上のように、本実施の形態の遅延モニタのリングオシレータは長時間発振し、劣化の進みが早いので、劣化の進行を早期に検出できる。
【0142】
[第11の実施形態]
図18は、第11の実施形態における遅延モニタ#i(i=00〜16)での遅延値のチェック手順を示すフローチャートである。
【0143】
図18に示すように、まず、CPU#8は、制御レジスタ22の計測開始ビットに「1」をセットとして、遅延モニタ#iを起動する。遅延モニタ#i内のリングオシレータ26が発振動作する(ステップS1101)。
【0144】
次に、CPU#8は、遅延モニタ#iのエッジ検出部23およびパルスカウンタ24からの出力を受けて、式(A1)および式(A2)に従って、遅延値Tdを求めて、遅延値Tdをチェックする(ステップS1102)。
【0145】
CPU#8は、現在測定された遅延値Tdと前回測定された遅延値Tdとの差分値が基準値以下の場合には(ステップS1103でYES)、遅延値Tdを内蔵SRAM6に記憶して(ステップS1104)、チェックを完了する。
【0146】
CPU#8は、差分値が基準値を超えた場合には(ステップS1103でNO)、遅延モニタ#iの近傍のモジュールが経年劣化していると判定し、LSI1の外部にアラートを発信する(ステップS1105)。
【0147】
(効果)
以上のように、本実施の形態によれば、現在の遅延値と前回測定時の遅延値との差分値に基づいて経年劣化を判定するので、バラつきの大きいLSIでも正確に経年劣化を判定することができる。
【0148】
なお、より正確に経年劣化を判断するために、前回測定時の遅延値だけでなく、それ以前の遅延値の履歴も取っておき、これらの遅延値の統計量(移動平均など)に基づいて、経年劣化を判断することとしてもよい。
【0149】
[第12の実施形態]
第12の実施形態では、図19に示すように、2個の遅延モニタが1つのペアを構成する。2個の遅延モニタは、近接して配置される。
【0150】
ペアの一方の第1遅延モニタ61は、第10の実施形態で説明した図16に示す遅延モニタである。第1遅延モニタ61のリングオシレータ26は、遅延値の測定期間の前後の所定サイクル以外では、発振し続ける。
【0151】
ペアの他方の第2遅延モニタ62は、第1の実施形態で説明した図3に示す遅延モニタである。第2遅延モニタ62のリングオシレータ26は遅延値の測定期間のみ発振する。
【0152】
第1遅延モニタ61は、発振する時間が長いので、第2遅延モニタ62よりも早く劣化する。第1遅延モニタ61と第2遅延モニタ62は、製造ばらつきや、電圧、温度など周囲環境は非常に近い状態のため、第1遅延モニタ61と第2遅延モニタ62の遅延値の差分を見ることで、近接するモジュールが劣化の進行が顕著になる期間(すなわち、遅延値の時間変化量が大きい期間)に入ったか否かを判定することができる。
【0153】
CPU#8は、第1遅延モニタ61で測定された遅延値Tdと、第2遅延モニタ62で測定された遅延値Tdとの差分値が基準値を超えた場合に、第1遅延モニタ61と第2遅延モニタ62の近傍のモジュールが経年劣化したと判定する。
【0154】
(効果)
以上のように、本実施の形態によれば、リングオシレータが長時間発振する第1遅延モニタの遅延値と、リングオシレータが短時間発振する第2遅延モニタの遅延値との差分値に基づいて経年劣化を判定するので、バラつきの大きいLSIでも正確に経年劣化を判定することができる。
【0155】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0156】
1 LSI、2 DDR2I/F、3 2次キャッシュ、4 CPUバス制御部、5 DMAC、6 内蔵SRAM、8 外部バス制御部、9 DSP群、10 電源回路、11 JTAGコントローラ、12 汎用入出力ポート、13 内部周辺バス、14 CPU群、15 遅延モニタ群、22 制御レジスタ、23 エッジ検出部、24 パルスカウンタ、25,41 フリップフロップ、26 リングオシレータ、33 クロック供給回路、42 論理回路、61 第1遅延モニタ、62 第2遅延モニタ、NA NAND、IV1〜IV14 ゲート素子。
【特許請求の範囲】
【請求項1】
複数のモジュールと、
複数の遅延モニタとを備え、
各遅延モニタは、複数段のゲート素子を有するリングオシレータを含み、前記ゲート素子の遅延時間を測定し、
前記遅延モニタによって測定された遅延時間に基づいて、前記遅延モニタの近傍のモジュールの経年劣化を判定する制御部とを備えた、半導体装置。
【請求項2】
前記制御部は、前記経年劣化と判定した場合に、アラートを発信する、請求項1記載の半導体装置。
【請求項3】
前記制御部は、前記経年劣化と判定した場合に、前記半導体装置のビルトインセルフテストを実行する、請求項1記載の半導体装置。
【請求項4】
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールの電源電圧を減少させる、請求項1記載の半導体装置。
【請求項5】
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールの動作周波数を減少させる、請求項1記載の半導体装置。
【請求項6】
前記制御部は、経年劣化と判定した場合に、前記遅延モニタの近傍に配置されたファンの回転速度を増加させ、または回転頻度を増加させる、請求項1記載の半導体装置。
【請求項7】
前記半導体装置は、
複数のプロセッサを備え、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが、高負荷のタスクを実行しているプロセッサであったときには、前記タスクを別のプロセッサに割り当てる、請求項1記載の半導体装置。
【請求項8】
前記制御部は、前記遅延モニタによって測定された遅延時間が所定の基準値を超えるか否かによって経年劣化を判定する、請求項1記載の半導体装置。
【請求項9】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの中の1つのプロセッサは、メインプロセッサとして機能し、残りはサブプロセッサとして機能し、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールがプロセッサでありメインプロセッサとして機能しているときには、前記近傍のモジュールであるプロセッサがサブプロセッサとして機能し、サブプロセッサとして機能しているプロセッサがメインプロセッサとして機能するように変更する、請求項1記載の半導体装置。
【請求項10】
前記複数のプロセッサの各々は識別IDを有し、前記サブプロセッサとして機能しているプロセッサがメインプロセッサとして機能するように変更する際、前記サブプロセッサと前記メインプロセッサの識別IDを入れ替えることにより変更する、請求項9記載の半導体装置。
【請求項11】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの一部は、予備のプロセッサとして機能することが可能であり、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが動作中のプロセッサの場合に、予備のプロセッサとして機能しているプロセッサが存在するときには、前記近傍のモジュールであるプロセッサを停止し、かつ前記予備のプロセッサとして機能しているプロセッサを動作させる、請求項1記載の半導体装置。
【請求項12】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの一部は、予備のプロセッサとして機能することが可能であり、予備のプロセッサを除く2個以上のプロセッサによってプログラムの並列処理が可能であり、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが動作中のプロセッサのときには、予備のプロセッサとして機能しているプロセッサが存在しないときには、前記近傍のモジュールであるプロセッサを停止する、請求項1記載の半導体装置。
【請求項13】
前記遅延モニタのリングオシレータは、遅延時間の測定期間および前記測定期間の前後の所定サイクル数以外では、発振し続ける、請求項1記載の半導体装置。
【請求項14】
前記制御部は、前記遅延モニタによって、現時点で測定された遅延時間と、過去に測定された遅延時間との差分に基づいて、前記経年劣化を判定する、請求項1記載の半導体装置。
【請求項15】
前記複数の遅延モニタは、近接する2個ずつが1つのペアを構成し、
前記ペアの一方の遅延モニタのリングオシレータは、遅延時間の測定期間の前後の所定サイクル数以外では、発振し続け、
前記ペアの他方の遅延モニタのリングオシレータは遅延時間の測定期間のみ発振し、
前記制御部は、前記一方の遅延モニタで測定された遅延時間と、前記他方の遅延モニタで測定された遅延時間との差分に従って、前記経年劣化を判定する、請求項1記載の半導体装置。
【請求項1】
複数のモジュールと、
複数の遅延モニタとを備え、
各遅延モニタは、複数段のゲート素子を有するリングオシレータを含み、前記ゲート素子の遅延時間を測定し、
前記遅延モニタによって測定された遅延時間に基づいて、前記遅延モニタの近傍のモジュールの経年劣化を判定する制御部とを備えた、半導体装置。
【請求項2】
前記制御部は、前記経年劣化と判定した場合に、アラートを発信する、請求項1記載の半導体装置。
【請求項3】
前記制御部は、前記経年劣化と判定した場合に、前記半導体装置のビルトインセルフテストを実行する、請求項1記載の半導体装置。
【請求項4】
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールの電源電圧を減少させる、請求項1記載の半導体装置。
【請求項5】
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールの動作周波数を減少させる、請求項1記載の半導体装置。
【請求項6】
前記制御部は、経年劣化と判定した場合に、前記遅延モニタの近傍に配置されたファンの回転速度を増加させ、または回転頻度を増加させる、請求項1記載の半導体装置。
【請求項7】
前記半導体装置は、
複数のプロセッサを備え、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが、高負荷のタスクを実行しているプロセッサであったときには、前記タスクを別のプロセッサに割り当てる、請求項1記載の半導体装置。
【請求項8】
前記制御部は、前記遅延モニタによって測定された遅延時間が所定の基準値を超えるか否かによって経年劣化を判定する、請求項1記載の半導体装置。
【請求項9】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの中の1つのプロセッサは、メインプロセッサとして機能し、残りはサブプロセッサとして機能し、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールがプロセッサでありメインプロセッサとして機能しているときには、前記近傍のモジュールであるプロセッサがサブプロセッサとして機能し、サブプロセッサとして機能しているプロセッサがメインプロセッサとして機能するように変更する、請求項1記載の半導体装置。
【請求項10】
前記複数のプロセッサの各々は識別IDを有し、前記サブプロセッサとして機能しているプロセッサがメインプロセッサとして機能するように変更する際、前記サブプロセッサと前記メインプロセッサの識別IDを入れ替えることにより変更する、請求項9記載の半導体装置。
【請求項11】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの一部は、予備のプロセッサとして機能することが可能であり、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが動作中のプロセッサの場合に、予備のプロセッサとして機能しているプロセッサが存在するときには、前記近傍のモジュールであるプロセッサを停止し、かつ前記予備のプロセッサとして機能しているプロセッサを動作させる、請求項1記載の半導体装置。
【請求項12】
前記半導体装置は、
複数のプロセッサを備え、前記複数のプロセッサの一部は、予備のプロセッサとして機能することが可能であり、予備のプロセッサを除く2個以上のプロセッサによってプログラムの並列処理が可能であり、
前記制御部は、前記経年劣化と判定した場合に、前記遅延モニタの近傍のモジュールが動作中のプロセッサのときには、予備のプロセッサとして機能しているプロセッサが存在しないときには、前記近傍のモジュールであるプロセッサを停止する、請求項1記載の半導体装置。
【請求項13】
前記遅延モニタのリングオシレータは、遅延時間の測定期間および前記測定期間の前後の所定サイクル数以外では、発振し続ける、請求項1記載の半導体装置。
【請求項14】
前記制御部は、前記遅延モニタによって、現時点で測定された遅延時間と、過去に測定された遅延時間との差分に基づいて、前記経年劣化を判定する、請求項1記載の半導体装置。
【請求項15】
前記複数の遅延モニタは、近接する2個ずつが1つのペアを構成し、
前記ペアの一方の遅延モニタのリングオシレータは、遅延時間の測定期間の前後の所定サイクル数以外では、発振し続け、
前記ペアの他方の遅延モニタのリングオシレータは遅延時間の測定期間のみ発振し、
前記制御部は、前記一方の遅延モニタで測定された遅延時間と、前記他方の遅延モニタで測定された遅延時間との差分に従って、前記経年劣化を判定する、請求項1記載の半導体装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2013−88394(P2013−88394A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−231778(P2011−231778)
【出願日】平成23年10月21日(2011.10.21)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願日】平成23年10月21日(2011.10.21)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]