(57)【要約】【課題】半導体集積回路を構成する機能マクロの寿命を延ばすことができる半導体集積回路を提供することである。【解決手段】一実施の形態にかかる半導体集積回路１は、複数の機能マクロ１１、１２と、複数の機能マクロ１１、１２のそれぞれに対して所定の電位差を有する動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを供給する電源供給回路１５と、複数の機能マクロ１１、１２のうち最も動作電圧が低い機能マクロに対して自己診断を実行するＢＩＳＴ制御回路１４と、を備える。そして、電源供給回路１５は、ＢＩＳＴ制御回路１４の自己診断の結果が異常である場合、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くする。【選択図】図１
2013239023.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能マクロと、
前記複数の機能マクロのそれぞれに対して所定の電位差を有する動作電圧を供給する電源供給回路と、
前記複数の機能マクロのうち最も動作電圧が低い機能マクロに対して自己診断を実行するＢＩＳＴ制御回路と、を備え、
前記電源供給回路は、前記ＢＩＳＴ制御回路の自己診断の結果が異常である場合、前記最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くする、
半導体集積回路。
【請求項２】
前記電源供給回路は、前記自己診断の結果が異常である場合、前記最も動作電圧が低い機能マクロの動作電圧を、最も動作電圧が高い機能マクロの動作電圧よりも前記所定の電位差だけ高い動作電圧とする、請求項１に記載の半導体集積回路。
【請求項３】
前記電源供給回路は、前記自己診断の結果が異常である場合、全ての機能マクロの動作電圧を前記所定の電圧だけ高くする、請求項１に記載の半導体集積回路。
【請求項４】
前記ＢＩＳＴ制御回路は、前記複数の機能マクロが同一の処理を行なうことで得られた処理結果を比較し、当該処理結果が一致しない場合に前記自己診断を実行する、請求項１に記載の半導体集積回路。
【請求項５】
前記ＢＩＳＴ制御回路は、前記複数の機能マクロの電源投入時または前記複数の機能マクロのリセット処理時に前記自己診断を実行する、請求項１に記載の半導体集積回路。
【請求項６】
前記ＢＩＳＴ制御回路は、前記最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くした後、再度、前記最も動作電圧が低かった機能マクロに対して自己診断を実行し、当該自己診断の結果が異常である場合、前記最も動作電圧が低かった機能マクロが故障していると診断する、請求項１に記載の半導体集積回路。
【請求項７】
前記ＢＩＳＴ制御回路は、前記自己診断の対象となる機能マクロを交互に切り替えるＢＩＳＴ対象切替回路を備える、請求項２に記載の半導体集積回路。
【請求項８】
前記電源供給回路は、前記自己診断の結果が異常となる頻度に応じて、前記全ての機能マクロの動作電圧を高くする際の前記所定の電圧を決定する、請求項３に記載の半導体集積回路。
【請求項９】
複数の機能マクロのそれぞれに対して所定の電位差を有する動作電圧を供給し、
前記複数の機能マクロのうち最も動作電圧が低い機能マクロに対して自己診断を実行し、
前記自己診断の結果が異常である場合、前記最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くする、
半導体集積回路の制御方法。
【請求項１０】
前記自己診断の結果が異常である場合、前記最も動作電圧が低い機能マクロの動作電圧を、最も動作電圧が高い機能マクロの動作電圧よりも前記所定の電位差だけ高い動作電圧とする、請求項９に記載の半導体集積回路の制御方法。
【請求項１１】
前記自己診断の結果が異常である場合、全ての機能マクロの動作電圧を前記所定の電圧だけ高くする、請求項９に記載の半導体集積回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路およびその制御方法に関し、例えば自己診断機能を備えた半導体集積回路およびその制御方法に関する。
【背景技術】
【０００２】
近年、半導体集積回路の安全性や信頼性の向上が要求されている。特に、車載用の半導体集積回路では高い安全性や信頼性が要求されるため、例えば自己診断機能を搭載した半導体集積回路が用いられている。
【０００３】
車載用の半導体集積回路のように高い安全性や信頼性が要求される製品では、ＥＣＵ（Engine Control Unit）レベルでの安全性や信頼性が要求される。このため、ＣＰＵ（Central Processing Unit）を搭載するＭＣＵ（Micro Control Unit）単体での信頼性を向上させるために、ＣＰＵを冗長化したシステムや自己診断機能を搭載したシステムが用いられている。
【０００４】
自己診断機能を搭載したシステムとして、２つのＣＰＵを搭載し、一方をマスタＣＰＵ、他方をチェック用のＣＰＵとし、２つＣＰＵの処理結果を比較することで各々のＣＰＵの故障を診断するシステムが用いられている。しかしながら、半導体集積回路の誤動作の外的要因としてノイズ等による電圧変動がある。そして、この電圧変動の影響により２つのＣＰＵが同時に誤動作すると、２つのＣＰＵが共に異常動作をしているにもかかわらず、２つのＣＰＵの処理結果が一致するため自己診断システムが正常であると誤判定する場合がある。このため、高い安全性や信頼性が要求される半導体集積回路では、外的要因に対して長期間、信頼性を確保することができる技術が求められている。
【０００５】
上記のような課題を解決するために、特許文献１に開示されているデータ処理装置では、各々のＣＰＵに供給されるクロックの位相や電源電圧の大きさ等の動作環境条件を動作保証範囲内で異なるようにしている。
【０００６】
また、特許文献２には、制御中に自己診断できるプログラム可能な制御装置に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平４−１４９７４３号公報
【特許文献２】特開２００８−２６７９９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に開示されている技術では、同一構成、同一機能を有する２つのＣＰＵを用いて半導体集積回路を構成し、２つのＣＰＵに供給される動作電圧に差を設けることで、半導体集積回路の信頼性を向上させている。
【０００９】
しかしながら、半導体集積回路を構成する各々のトランジスタ素子の動作速度は経年劣化により遅くなるため、各々のトランジスタ素子の動作可能な最低電圧が上昇する。このため、２つのＣＰＵ（機能マクロ）に供給される動作電圧に差を設けると、低い動作電圧で動作しているＣＰＵが早期に寿命に到達するという問題がある。
【００１０】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施の形態にかかる半導体集積回路は、半導体集積回路を構成する複数の機能マクロのそれぞれに対して所定の電位差を有する動作電圧を供給する電源供給回路と、複数の機能マクロのうち最も動作電圧が低い機能マクロに対して自己診断を実行するＢＩＳＴ制御回路と、を備える。そして、電源供給回路は、ＢＩＳＴ制御回路の自己診断の結果が異常である場合、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くする。
【００１２】
一実施の形態にかかる半導体集積回路の制御方法は、複数の機能マクロのそれぞれに対して所定の電位差を有する動作電圧を供給し、複数の機能マクロのうち最も動作電圧が低い機能マクロに対して自己診断を実行する。そして、自己診断の結果が異常である場合、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くする。
【発明の効果】
【００１３】
前記一実施の形態により、半導体集積回路を構成する機能マクロの寿命を延ばすことができる半導体集積回路およびその制御方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかる半導体集積回路を示すブロック図である。
【図２】実施の形態１にかかる半導体集積回路の動作を説明するためのフローチャートである。
【図３】実施の形態１にかかる半導体集積回路が備える電源供給回路が機能マクロの動作電圧を高くする場合の一例を示す図である。
【図４】実施の形態１にかかる半導体集積回路が備える電源供給回路が機能マクロの動作電圧を高くする場合の他の例を示す図である。
【図５】課題を説明するための図である。
【図６】実施の形態２にかかる半導体集積回路を示すブロック図である。
【図７】実施の形態２にかかる半導体集積回路の動作を説明するためのフローチャートである。
【図８】実施の形態３にかかる半導体集積回路の動作を説明するためのフローチャートである。
【図９】実施の形態４にかかる半導体集積回路を示すブロック図である。
【図１０】実施の形態４にかかる半導体集積回路の動作を説明するためのフローチャートである。
【図１１】実施の形態５にかかる半導体集積回路の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１５】
＜実施の形態１＞
実施の形態１にかかる半導体集積回路について説明する。図１は、本実施の形態にかかる半導体集積回路を示すブロック図である。図１に示すように、半導体集積回路１は、複数の機能マクロ１１、１２と、比較回路１３と、ＢＩＳＴ（built in self-test）制御回路１４と、電源供給回路１５と、を備える。
【００１６】
機能マクロ１１、１２は、複数のトランジスタ素子等を用いて構成された所定の機能を有する回路である。機能マクロ１１、１２は、半導体集積回路を構成する回路の中でも比較的重要な役割を果たす回路であり、例えばＣＰＵやクロック生成回路等である。例えば、複数の機能マクロ１１、１２は、互いに同一構成、同一機能、同一レイアウトを有する。機能マクロ１１、１２には、電源供給回路１５から動作電圧Ｖ_ＭＡ、Ｖ_ＭＢがそれぞれ供給される。
【００１７】
通常動作時、機能マクロ１１、１２は同一内容の処理を実行し、処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢをそれぞれ比較回路１３に出力する。例えば、機能マクロ１１、１２がＣＰＵである場合、機能マクロ１１、１２には同一の命令が供給され、機能マクロ１１、１２は供給された命令の処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢをそれぞれ比較回路１３に出力する。ここで、通常動作時とは、半導体集積回路１が通常の機能を実現するために動作する場合であり、例えば半導体集積回路１が車載用のマイクロコントローラであれば、半導体集積回路が車のエンジン等を制御する場合である。
【００１８】
また、自己診断時（ＢＩＳＴ診断時）、機能マクロ１１、１２のうちＢＩＳＴ診断の対象となっている機能マクロには、ＢＩＳＴ制御回路１４から、機能マクロが正常に動作するかを確認するためのＢＩＳＴテストパターンが供給される。また、ＢＩＳＴ診断の対象となっている機能マクロは、ＢＩＳＴ制御回路１４にＢＩＳＴテストパターンの処理結果を出力する。ここで、自己診断時（ＢＩＳＴ診断時）とは、ＢＩＳＴ制御回路１４を用いて機能マクロが正常に動作しているかを診断する場合である。
【００１９】
例えば、機能マクロ１１がＢＩＳＴ診断の対象となっている場合、自己診断時、機能マクロ１１には機能マクロ１１が正常に動作するかを確認するためのＢＩＳＴテストパターンＢＩＳＴ_ＭＡが供給される。そして、機能マクロ１１は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡの処理結果ＢＩＳＴ_ＭＡ_ＲをＢＩＳＴ制御回路１４に出力する。また、例えば、機能マクロ１２がＢＩＳＴ診断の対象となっている場合、自己診断時、機能マクロ１２には機能マクロ１２が正常に動作するかを確認するためのＢＩＳＴテストパターンＢＩＳＴ_ＭＢが供給される。そして、機能マクロ１２は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理結果ＢＩＳＴ_ＭＢ_ＲをＢＩＳＴ制御回路１４に出力する。
【００２０】
なお、本実施の形態では、半導体集積回路１が２つの機能マクロ１１、１２を備える場合を例として説明するが、本実施の形態では半導体集積回路１を構成する機能マクロが３つ以上であってもよい。
【００２１】
比較回路１３は、通常動作時に機能マクロ１１、１２で処理された処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢを入力し、入力した処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢに応じて機能マクロ１１、１２の故障を診断する。つまり、比較回路１３は、入力した処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢを比較し、処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢが一致する場合は、機能マクロ１１および機能マクロ１２における処理内容が同一であることから、機能マクロ１１および機能マクロ１２の両方が故障していないと診断する。この場合、比較回路１３は、故障診断結果信号ＳＩＧ_ＣＭＰとして正常を示す信号（例えば、ロウレベルの信号）を出力する。
【００２２】
一方、比較回路１３は、入力した処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢが一致しない場合は、機能マクロ１１および機能マクロ１２における処理内容が異なることから、機能マクロ１１および機能マクロ１２のうちの少なくとも一方が故障していると診断する。この場合、比較回路１３は、故障診断結果信号ＳＩＧ_ＣＭＰとして異常を示す信号（例えば、ハイレベルの信号）を出力する。すなわち、比較回路１３は、機能マクロ１１および機能マクロ１２の故障を診断する故障診断回路として機能する。
【００２３】
ＢＩＳＴ制御回路１４は、複数の機能マクロ１１、１２のそれぞれに対して自己診断を実行する。例えば、ＢＩＳＴ制御回路１４は、機能マクロ１１の自己診断を実行する場合、機能マクロ１１の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＡを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡを機能マクロ１１に出力する。機能マクロ１１は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡの処理結果ＢＩＳＴ_ＭＡ_ＲをＢＩＳＴ制御回路１４に出力する。そして、ＢＩＳＴ制御回路１４は、機能マクロ１１から出力された処理結果ＢＩＳＴ_ＭＡ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＡ_Ｒが期待値と等しい場合は機能マクロ１１が正常であると診断する。一方、ＢＩＳＴ制御回路１４は、処理結果ＢＩＳＴ_ＭＡ_Ｒが期待値と等しくない場合は機能マクロ１１が異常であると診断する。
【００２４】
同様に、ＢＩＳＴ制御回路１４は、機能マクロ１２の自己診断を実行する場合、機能マクロ１２の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＢを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢを機能マクロ１２に出力する。機能マクロ１２は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理結果ＢＩＳＴ_ＭＢ_ＲをＢＩＳＴ制御回路１４に出力する。そして、ＢＩＳＴ制御回路１４は、機能マクロ１２から出力された処理結果ＢＩＳＴ_ＭＢ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しい場合は機能マクロ１２が正常であると診断する。一方、ＢＩＳＴ制御回路１４は、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しくない場合は機能マクロ１２が異常であると診断する。
【００２５】
例えば、ＢＩＳＴ制御回路１４は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合（ハイレベルの場合）、機能マクロ１１および機能マクロ１２のうちのいずれか一方の自己診断を行なってもよい。つまり、故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合、機能マクロ１１および機能マクロ１２のうちのいずれか一方が故障している可能性が高いので、ＢＩＳＴ制御回路１４は、機能マクロ１１および機能マクロ１２のうちのいずれか一方の自己診断を行なう。
【００２６】
例えば、ＢＩＳＴ制御回路１４は、複数の機能マクロ１１、１２のうち供給される動作電圧が最も低い機能マクロに対して自己診断を行なう。すなわち、複数の機能マクロ１１、１２のうち供給される動作電圧が最も低い機能マクロは、供給される動作電圧が高い他の機能マクロと比べて、トランジスタ素子の経年劣化に起因する寿命に早期に到達する。このため、故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合は、機能マクロ１１および機能マクロ１２のうち供給される動作電圧が低い機能マクロが故障している可能性が高いと想定されることから、ＢＩＳＴ制御回路１４は供給される動作電圧が最も低い機能マクロに対して自己診断を行なう。
【００２７】
ＢＩＳＴ制御回路１４は、機能マクロ１１、１２に供給している動作電圧Ｖ_ＭＡ、Ｖ_ＭＢに関する情報ＶＡＬ_Ｖを電源供給回路１５から取得することで、供給される動作電圧が最も低い機能マクロを特定することができる。
【００２８】
また、ＢＩＳＴ制御回路１４は、複数の機能マクロ１１、１２の電源投入時または複数の機能マクロ１１、１２のリセット処理時に自己診断を実行してもよい。例えば、複数の機能マクロ１１、１２の電源投入時やリセット処理時に、ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧとしてハイレベルの信号がＢＩＳＴ制御回路１４に供給されるようにする。このようにすることで、ＢＩＳＴ制御回路１４は、ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧとしてハイレベルの信号が供給された場合に、自己診断を実行することができる。なお、ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧがハイレベルとなるタイミングは、複数の機能マクロ１１、１２の電源投入時やリセット処理時に限定されることはなく、他の任意のタイミング（例えば、製品出荷時や毎回の動作開始時など）であってもよい。
【００２９】
ＢＩＳＴ制御回路１４は、自己診断結果を示すＢＩＳＴ結果信号ＢＩＳＴ_Ｒを電源供給回路１５に出力する。例えば、ＢＩＳＴ制御回路１４は、機能マクロ１１、１２の自己診断結果が異常である場合、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして自己診断結果が異常であることを示す信号（例えば、ハイレベルの信号）を電源供給回路１５に出力する。
【００３０】
電源供給回路１５は、機能マクロ１１、１２に動作電圧Ｖ_ＭＡ、Ｖ_ＭＢをそれぞれ供給し、機能マクロ１１、１２に供給している動作電圧Ｖ_ＭＡ、Ｖ_ＭＢに関する情報ＶＡＬ_ＶをＢＩＳＴ制御回路１４に供給する。ここで、電源供給回路１５は、機能マクロ１１、１２に動作電圧Ｖ_ＭＡ、Ｖ_ＭＢとして所定の電位差を有する動作電圧を供給する。このように、機能マクロ１１、１２に所定の電位差を有する動作電圧を供給することで、例えば外的要因により、供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢが変動した場合であっても、２つの機能マクロが同時に誤動作することを抑制することができる。
【００３１】
例えば、機能マクロ１１に供給される動作電圧Ｖ_ＭＡを、機能マクロ１２に供給される動作電圧Ｖ_ＭＢよりもΔＶだけ高くしたとする。このとき、動作電圧Ｖ_ＭＡおよび動作電圧Ｖ_ＭＢは、機能マクロ１１、１２の正常動作範囲内に設定されているものとする。そして、例えば、外的要因により機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢが共に高くなり、機能マクロ１１に供給される動作電圧Ｖ_ＭＡが正常動作範囲の上限よりも高くなると、機能マクロ１１は正常に動作しなくなる。一方、動作電圧が低い機能マクロ１２は、外的要因により機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢが共に高くなったとしても、機能マクロ１２の動作電圧Ｖ_ＭＢが正常動作範囲の上限を超えない限り正常に動作する。
【００３２】
また、例えば、外的要因により機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢが共に低くなり、機能マクロ１２に供給される動作電圧Ｖ_ＭＢが正常動作範囲の下限よりも低くなると、機能マクロ１２は正常に動作しなくなる。一方、動作電圧が高い機能マクロ１１は、外的要因により機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢが共に低くなったとしても、機能マクロ１１の動作電圧Ｖ_ＭＡが正常動作範囲の下限よりも低くならない限り正常に動作する。
【００３３】
このように、機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢに所定の電位差を設けることで、動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを同じ電圧とした場合よりも、２つの機能マクロが同時に誤動作することを抑制することができる。
【００３４】
電源供給回路１５は、ＢＩＳＴ制御回路１４から出力されたＢＩＳＴ結果信号ＢＩＳＴ_Ｒに応じて、機能マクロ１１、１２に供給する動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを制御する。つまり、電源供給回路１５は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒがハイレベルの場合（自己診断の結果が異常である場合）、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くする。このように、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くすることで、最も動作電圧が低い機能マクロの寿命を延ばすことができる。
【００３５】
このとき、電源供給回路１５は、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くした後においても、機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢが所定の電位差ΔＶを有するように、動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを設定する。
【００３６】
次に、本実施の形態にかかる半導体集積回路１の動作について説明する。図２は、本実施の形態にかかる半導体集積回路１の動作を説明するためのフローチャートである。電源供給回路１５は、機能マクロ１１、１２に動作電圧Ｖ_ＭＡ、Ｖ_ＭＢをそれぞれ供給している。通常動作時、機能マクロ１１、１２は同一内容の処理を実行し、処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢをそれぞれ比較回路１３に出力する（ステップＳ１）。例えば、機能マクロ１１、１２がＣＰＵである場合、機能マクロ１１、１２には同一の命令が供給され、機能マクロ１１、１２は供給された命令の処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢをそれぞれ比較回路１３に出力する。
【００３７】
また、通常動作時、ＢＩＳＴ制御回路１４は、自己診断の実行要求があるか否かを判断する（ステップＳ２）。例えば、ＢＩＳＴ制御回路１４は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが正常を示す場合（ステップＳ２：Ｎｏ）、通常動作を継続する（ステップＳ１）。一方、ＢＩＳＴ制御回路１４は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合（ステップＳ２：Ｙｅｓ）、機能マクロ１１および機能マクロ１２のうちのいずれか一方の自己診断を実行する（ステップＳ３）。
【００３８】
また、ＢＩＳＴ制御回路１４は、ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧとしてハイレベルの信号がＢＩＳＴ制御回路１４に供給された場合に、機能マクロ１１および機能マクロ１２のうちのいずれか一方の自己診断を実行するようにしてもよい。ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧがハイレベルになる場合とは、例えば機能マクロ１１、１２の電源投入時やリセット処理時である。
【００３９】
自己診断を実行する際（ステップＳ３）、ＢＩＳＴ制御回路１４は、複数の機能マクロ１１、１２のうち供給される動作電圧が最も低い機能マクロに対して自己診断を実行する。ＢＩＳＴ制御回路１４は、機能マクロ１１、１２に供給している動作電圧Ｖ_ＭＡ、Ｖ_ＭＢに関する情報ＶＡＬ_Ｖを電源供給回路１５から取得することで、供給される動作電圧が最も低い機能マクロを特定することができる。
【００４０】
例えば、機能マクロ１１の自己診断を実行する場合、ＢＩＳＴ制御回路１４は、機能マクロ１１の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＡを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡを機能マクロ１１に出力する。機能マクロ１１は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡの処理結果ＢＩＳＴ_ＭＡ_ＲをＢＩＳＴ制御回路１４に出力する。そして、ＢＩＳＴ制御回路１４は、機能マクロ１１から出力された処理結果ＢＩＳＴ_ＭＡ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＡ_Ｒが期待値と等しい場合は機能マクロ１１が正常であると診断する。一方、ＢＩＳＴ制御回路１４は、処理結果ＢＩＳＴ_ＭＡ_Ｒが期待値と等しくない場合は機能マクロ１１が異常であると診断する。なお、機能マクロ１２の自己診断を実行する場合についても同様である。
【００４１】
ＢＩＳＴ制御回路１４は、自己診断を実行した機能マクロの診断結果が正常である場合（ステップＳ４：Ｙｅｓ）、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして正常を示す信号（ロウレベルの信号）を電源供給回路１５に出力する。電源供給回路１５は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒが正常を示す信号であるので、機能マクロ１１、１２に供給する動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを変更することなく、機能マクロ１１、１２に動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを供給し続ける。その後、機能マクロ１１、１２は通常動作へと戻る（ステップＳ１）。
【００４２】
一方、ＢＩＳＴ制御回路１４は、自己診断を実行した機能マクロの診断結果が異常である場合（ステップＳ４：Ｎｏ）、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして異常を示す信号（ハイレベルの信号）を電源供給回路１５に出力する。電源供給回路１５は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒが異常を示す信号であるので、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くする（ステップＳ５）。このとき、電源供給回路１５は、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くした後においても、機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢが所定の電位差ΔＶを有するようにする。その後、ステップＳ１へと戻り、機能マクロ１１、１２は通常動作を実行する。
【００４３】
次に、電源供給回路１５が機能マクロの動作電圧を高くする場合について詳細に説明する。図３は、本実施の形態にかかる半導体集積回路１の動作を説明するための図であり、電源供給回路１５が機能マクロの動作電圧を高くする場合の一例を示す図である。図３に示す例では、機能マクロＡ（１１）の初期の動作電圧Ｖａ０を、機能マクロＢ（１２）の初期の動作電圧Ｖｂ０よりも所定の電位差ΔＶだけ高くしている。
【００４４】
また、図３に示す符号５１は機能マクロ１１の動作可能最低電圧を示しており、符号５２は機能マクロ１２の動作可能最低電圧を示している。ここで、動作可能最低電圧５１は、通常動作時のクロック周波数で機能マクロ１１が正常に動作することができる最低動作電圧である。つまり、機能マクロ１１の動作電圧が動作可能最低電圧５１よりも低くなると機能マクロ１１が正常に動作しなくなる。また、動作可能最低電圧５２は、通常動作時のクロック周波数で機能マクロ１２が正常に動作することができる最低動作電圧である。つまり、機能マクロ１２の動作電圧が動作可能最低電圧５２よりも低くなると機能マクロ１２が正常に動作しなくなる。
【００４５】
なお、図３に示す例では、動作可能最低電圧５１、５２が上昇した後、動作可能最低電圧５１のほうが動作可能最低電圧５２よりも高くなっている。これは、機能マクロ１１の初期の動作電圧Ｖａ０を機能マクロ１２の初期の動作電圧Ｖｂ０よりも高く設定しているために、機能マクロ１２を構成するトランジスタ素子よりも機能マクロ１１を構成するトランジスタ素子の方がトランジスタ素子の劣化が早いためである。
【００４６】
図３に示すように、タイミングｔ１よりも前では、機能マクロ１１の動作電圧Ｖａ０および機能マクロ１２の動作電圧Ｖｂ０のそれぞれは、動作可能最低電圧５１および動作可能最低電圧５２よりも低くならないので、機能マクロ１１および機能マクロ１２は正常に動作する。つまり、図２に示すフローチャートのステップＳ３において、ＢＩＳＴ制御回路１４による機能マクロの自己診断が実行されたとしても、ステップＳ４では正常と診断される。
【００４７】
その後、タイミングｔ１では、機能マクロ１２の動作電圧Ｖｂ０が動作可能最低電圧５２よりも低くなるため、機能マクロ１２は正常に動作しなくなる。この場合は、ＢＩＳＴ制御回路１４が機能マクロ１２に対して自己診断を実行すると、機能マクロ１２の診断結果が異常となる。
【００４８】
よって、電源供給回路１５は、ＢＩＳＴ制御回路１４の自己診断の結果が異常を示すので、最も動作電圧が低い機能マクロ１２の動作電圧を、最も動作電圧が高い機能マクロ１１の動作電圧よりも所定の電位差ΔＶだけ高い動作電圧とする。つまり、電源供給回路１５は、機能マクロ１２の動作電圧Ｖｂ０を動作電圧Ｖｂ１とすることで、機能マクロ１２の動作電圧を機能マクロ１１の動作電圧Ｖａ０よりも電位差ΔＶだけ高い動作電圧としている。このとき、機能マクロ１１の動作電圧Ｖａ０は変更されない。このように、機能マクロ１２の動作電圧を所定の電圧（２×ΔＶ）だけ高くすることで、機能マクロ１２の動作電圧を機能マクロ１２の動作可能最低電圧５２よりも高くすることができ、機能マクロ１２の寿命を延ばすことができる。
【００４９】
その後、タイミングｔ２よりも前では、機能マクロ１１の動作電圧Ｖａ０および機能マクロ１２の動作電圧Ｖｂ１のそれぞれは、動作可能最低電圧５１および動作可能最低電圧５２よりも低くならないので、機能マクロ１１および機能マクロ１２は正常に動作する。
【００５０】
その後、タイミングｔ２では、機能マクロ１１の動作電圧Ｖａ０が動作可能最低電圧５１よりも低くなるため、機能マクロ１１は正常に動作しなくなる。この場合は、ＢＩＳＴ制御回路１４が機能マクロ１１に対して自己診断を実行すると、機能マクロ１１の診断結果が異常となる。
【００５１】
よって、電源供給回路１５は、ＢＩＳＴ制御回路１４の自己診断の結果が異常を示すので、最も動作電圧が低い機能マクロ１１の動作電圧を、最も動作電圧が高い機能マクロ１２の動作電圧よりも所定の電位差ΔＶだけ高い動作電圧とする。つまり、電源供給回路１５は、機能マクロ１１の動作電圧Ｖａ０を動作電圧Ｖａ１とすることで、機能マクロ１１の動作電圧を機能マクロ１２の動作電圧Ｖｂ１よりも電位差ΔＶだけ高い動作電圧としている。このとき、機能マクロ１２の動作電圧Ｖｂ１は変更されない。このように、機能マクロ１１の動作電圧を所定の電圧（２×ΔＶ）だけ高くすることで、機能マクロ１１の動作電圧を機能マクロ１１の動作可能最低電圧５１よりも高くすることができ、機能マクロ１１の寿命を延ばすことができる。
【００５２】
以降、タイミングｔ３、ｔ４についても上記のタイミングｔ１、ｔ２と同様である。このように、図３に示す例では、電源供給回路１５は機能マクロ１１、１２の動作電圧を交互に高くしている。なお、機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢの上限は、例えば半導体集積回路１の設定電圧の上限とすることができる。
【００５３】
次に、電源供給回路１５が機能マクロの動作電圧を高くする場合の他の例について説明する。図４は、本実施の形態にかかる半導体集積回路１の動作を説明するための図であり、電源供給回路１５が機能マクロの動作電圧を高くする場合の他の例を示す図である。図４に示す例においても、機能マクロＡ（１１）の初期の動作電圧Ｖａ０を、機能マクロＢ（１２）の初期の動作電圧Ｖｂ０よりも所定の電位差ΔＶだけ高くしている。また、図３に示した場合と同様に、図４に示す符号５１は機能マクロ１１の動作可能最低電圧を示し、符号５２は機能マクロ１２の動作可能最低電圧を示している。
【００５４】
図４に示すように、タイミングｔ１１よりも前では、機能マクロ１１の動作電圧Ｖａ０および機能マクロ１２の動作電圧Ｖｂ０のそれぞれは、動作可能最低電圧５１および動作可能最低電圧５２よりも低くならないので、機能マクロ１１および機能マクロ１２は正常に動作する。つまり、図２に示すフローチャートのステップＳ３において、ＢＩＳＴ制御回路１４による機能マクロの自己診断が実行されたとしても、ステップＳ４では正常と診断される。
【００５５】
その後、タイミングｔ１１では、機能マクロ１２の動作電圧Ｖｂ０が動作可能最低電圧５２よりも低くなるため、機能マクロ１２は正常に動作しなくなる。この場合は、ＢＩＳＴ制御回路１４が機能マクロ１２に対して自己診断を実行すると、機能マクロ１２の診断結果が異常となる。
【００５６】
よって、電源供給回路１５は、ＢＩＳＴ制御回路１４の自己診断の結果が異常を示すので、全ての機能マクロ１１、１２の動作電圧を所定の電圧だけ高くする。つまり、電源供給回路１５は、機能マクロ１１の動作電圧Ｖａ０を動作電圧Ｖａ１'とし、機能マクロ１２の動作電圧Ｖｂ０を動作電圧Ｖｂ１'とする。このとき、機能マクロ１１の動作電圧Ｖａ１'は、機能マクロ１２の動作電圧Ｖｂ１'よりもΔＶだけ高い電圧とする。このように、機能マクロ１１、１２の動作電圧を所定の電圧だけ高くすることで、機能マクロ１２の動作電圧を機能マクロ１２の動作可能最低電圧５２よりも高くすることができ、機能マクロ１２の寿命を延ばすことができる。
【００５７】
その後、タイミングｔ１２よりも前では、機能マクロ１１の動作電圧Ｖａ１'および機能マクロ１２の動作電圧Ｖｂ１'のそれぞれは、動作可能最低電圧５１および動作可能最低電圧５２よりも低くならないので、機能マクロ１１および機能マクロ１２は正常に動作する。
【００５８】
その後、タイミングｔ１２では、機能マクロ１２の動作電圧Ｖｂ１'が再び動作可能最低電圧５２よりも低くなるため、機能マクロ１２は正常に動作しなくなる。この場合は、機能マクロ１２に対して自己診断を実行すると、機能マクロ１２の診断結果が異常となる。
【００５９】
よって、電源供給回路１５は、ＢＩＳＴ制御回路１４の自己診断の結果が異常を示すので、再び全ての機能マクロ１１、１２の動作電圧を所定の電圧だけ高くする。つまり、電源供給回路１５は、機能マクロ１１の動作電圧Ｖａ１'を動作電圧Ｖａ２'とし、機能マクロ１２の動作電圧Ｖｂ１'を動作電圧Ｖｂ２'とする。このときも、機能マクロ１１の動作電圧Ｖａ２'は、機能マクロ１２の動作電圧Ｖｂ２'よりもΔＶだけ高い電圧とする。このように、機能マクロ１１、１２の動作電圧を所定の電圧だけ高くすることで、機能マクロ１２の動作電圧を機能マクロ１２の動作可能最低電圧５２よりも高くすることができ、機能マクロ１２の寿命を延ばすことができる。
【００６０】
タイミングｔ１２以降の動作についても上記の場合と同様である。このように、図４に示す例では、電源供給回路１５は機能マクロ１１、１２の動作電圧の大小関係（機能マクロ１１の動作電圧＞機能マクロ１２の動作電圧）を維持しつつ、機能マクロ１１、１２の動作電圧を高くしている。なお、機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢの上限は、例えば半導体集積回路１の設定電圧の上限とすることができる。
【００６１】
また、機能マクロ１１、１２の動作電圧を上昇させる際の所定の電圧（つまり、Ｖａ１'−Ｖａ０、Ｖｂ１'−Ｖｂ０）は任意に設定することができる。例えば、電源供給回路１５は、ＢＩＳＴ制御回路１４の自己診断の結果が異常となる頻度に応じて、全ての機能マクロ１１、１２の動作電圧を高くする際の所定の電圧（電圧の上昇幅）を決定してもよい。つまり、ＢＩＳＴ制御回路１４の自己診断の結果が異常となる頻度が高い場合、電源供給回路１５は、全ての機能マクロ１１、１２の動作電圧を高くする際の所定の電圧（電圧の上昇幅）を高く設定する。逆に、ＢＩＳＴ制御回路１４の自己診断の結果が異常となる頻度が少ない場合、電源供給回路１５は、全ての機能マクロ１１、１２の動作電圧を高くする際の所定の電圧（電圧の上昇幅）を低く設定する。
【００６２】
特許文献１に開示されている技術では、同一構成、同一機能を有する２つのＣＰＵ（機能マクロ）を用いて半導体集積回路を構成し、２つのＣＰＵに供給される動作電圧に差を設けることで、半導体集積回路の信頼性を向上させていた。
【００６３】
しかしながら、半導体集積回路を構成する各々のトランジスタ素子の動作速度は経年劣化により遅くなるため、各々のトランジスタ素子の動作可能な最低電圧が上昇する。このため、２つのＣＰＵに供給される動作電圧に差を設けると、低い動作電圧で動作しているＣＰＵが早期に寿命に到達するという問題があった。
【００６４】
図５は、課題を説明するための図であり、機能マクロＡ、Ｂに供給される動作電圧Ｖａ、Ｖｂ、機能マクロＡの動作可能最低電圧９１、および機能マクロＢの動作可能最低電圧９２を示している。動作可能最低電圧９１、９２は、通常動作時のクロック周波数で機能マクロＡ、Ｂが正常に動作することができる最低動作電圧である。半導体集積回路を構成する各々のトランジスタ素子の動作速度は経年劣化により遅くなるため、各々のトランジスタ素子の動作可能な最低電圧は上昇する。よって、機能マクロＡの動作可能最低電圧９１および機能マクロＢの動作可能最低電圧９２は経時的に上昇する。
【００６５】
図５に示すように、機能マクロＡには動作電圧Ｖａが供給され、機能マクロＢには機能マクロＡの動作電圧Ｖａよりも電圧差ΔＶだけ低い動作電圧Ｖｂが供給されているものとする。つまり、機能マクロＡ、機能マクロＢを備える半導体集積回路の信頼性を向上させるために、２つの機能マクロに供給される動作電圧に電圧差を設けているとする。
【００６６】
そして、図５に示すように、機能マクロＢの動作電圧Ｖｂを機能マクロＡの動作電圧Ｖａよりも低くすると、動作電圧が低い方の機能マクロＢの動作電圧Ｖｂが、動作電圧が高い方の機能マクロＡの動作電圧Ｖａよりも早期に動作可能最低電圧９２よりも低くなる。このため、２つの機能マクロに供給される動作電圧に差を設けると、低い動作電圧で動作している機能マクロが早期に寿命に到達するという問題があった。
【００６７】
ここで、２つの機能マクロに供給される動作電圧に差を設ける場合は、半導体集積回路における消費電力を考慮し、機能マクロＢの動作電圧を機能マクロＡの動作電圧（通常の動作電圧）よりも低くすることで電位差を設ける場合が想定される。このように、一方の機能マクロの動作電圧を通常の動作電圧よりも低くすると、低い動作電圧で動作している機能マクロが通常よりも早期に寿命に到達するため、２つの機能マクロを通常の動作電圧で動作させた場合よりも、半導体集積回路の寿命が短くなる。
【００６８】
例えば、図５に示す機能マクロＡの動作電圧Ｖａを通常の動作電圧とし、機能マクロＢの動作電圧Ｖｂを機能マクロＡの動作電圧Ｖａ（通常の動作電圧）よりもΔＶだけ低くした場合、機能マクロＡはタイミングｔ２２まで正常に動作するにもかかわらず、機能マクロＢはタイミングｔ２１で正常に動作しなくなる。この場合、機能マクロＡ、Ｂを備える半導体集積回路の寿命は、機能マクロＡ、Ｂを通常の動作電圧で動作させた場合と比べて、Δｔだけ短くなる。
【００６９】
そこで本実施の形態にかかる半導体集積回路では、ＢＩＳＴ制御回路１４を用いて複数の機能マクロ１１、１２のうち最も動作電圧が低い機能マクロに対して自己診断を実行している。そして、ＢＩＳＴ制御回路１４による自己診断の結果が異常を示す場合、電源供給回路１５は、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くしている。このようにすることで、最も動作電圧が低い機能マクロの動作電圧を動作可能最低電圧よりも高くすることができ、当該機能マクロの寿命を延ばすことができる。
【００７０】
特に、本実施の形態にかかる半導体集積回路では、消費電力を考慮して一方の機能マクロの動作電圧を他方の機能マクロの動作電圧（通常の動作電圧）よりも低くしたとしても、半導体集積回路の寿命を延ばすことができる。
【００７１】
以上で説明した本実施の形態により、半導体集積回路を構成する機能マクロの寿命を延ばすことができる半導体集積回路およびその制御方法を提供することができる。
【００７２】
＜実施の形態２＞
次に、実施の形態２について説明する。図６は、本実施の形態にかかる半導体集積回路２を示す図である。本実施の形態にかかる半導体集積回路２では、実施の形態１で説明した半導体集積回路１と比べて、ＢＩＳＴ制御回路２４および電源供給回路３５の構成が異なる点、またメモリ１６を備えている点が異なる。これ以外は実施の形態１で説明した半導体集積回路１と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
【００７３】
図６に示すように、本実施の形態にかかる半導体集積回路２は、複数の機能マクロ１１、１２と、比較回路１３と、ＢＩＳＴ制御回路２４と、電源供給回路３５と、メモリ１６と、を備える。機能マクロ１１、１２および比較回路１３の構成および動作については実施の形態１で説明した場合と同様である。
【００７４】
ＢＩＳＴ制御回路２４は、複数の機能マクロ１１、１２のそれぞれに対して自己診断を実行する。ＢＩＳＴ制御回路２４は、ＢＩＳＴ対象切替回路２１とＢＩＳＴコントローラ２２とを備える。
【００７５】
ＢＩＳＴ対象切替回路２１は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合（ハイレベルの場合）やＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧとしてハイレベルの信号が供給された場合、メモリ１６に格納されているＢＩＳＴ診断の対象となっている機能マクロに関する情報（ＳＥＬ_ＢＩＳＴ_Ｒ）を読み出す。ここで、ＢＩＳＴ診断の対象となっている機能マクロは、複数の機能マクロ１１、１２のうち供給される動作電圧が最も低い機能マクロである。つまり、メモリ１６には、複数の機能マクロ１１、１２のうち供給される動作電圧が最も低い機能マクロに関する情報が格納されている。
【００７６】
また、ＢＩＳＴ対象切替回路２１は、ＢＩＳＴ診断の実行を命令するためのＢＩＳＴ実行信号ＢＩＳＴ_ＥＸＥをＢＩＳＴコントローラ２２に出力する。このとき、ＢＩＳＴ実行信号ＢＩＳＴ_ＥＸＥには、ＢＩＳＴ診断の対象となっている機能マクロに関する情報が含まれている。
【００７７】
ＢＩＳＴコントローラ２２は、ＢＩＳＴ実行信号ＢＩＳＴ_ＥＸＥが供給されると、機能マクロ１１、１２のいずれか一方の自己診断を実行する。例えば、ＢＩＳＴコントローラ２２は、機能マクロ１１の自己診断を実行する場合、機能マクロ１１の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＡを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡを機能マクロ１１に出力する。機能マクロ１１は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＡの処理結果ＢＩＳＴ_ＭＡ_ＲをＢＩＳＴコントローラ２２に出力する。そして、ＢＩＳＴコントローラ２２は、機能マクロ１１から出力された処理結果ＢＩＳＴ_ＭＡ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＡ_Ｒが期待値と等しい場合は機能マクロ１１が正常であると診断する。一方、ＢＩＳＴコントローラ２２は、処理結果ＢＩＳＴ_ＭＡ_Ｒが期待値と等しくない場合は機能マクロ１１が異常であると診断する。
【００７８】
同様に、ＢＩＳＴコントローラ２２は、機能マクロ１２の自己診断を実行する場合、機能マクロ１２の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＢを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢを機能マクロ１２に出力する。機能マクロ１２は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理結果ＢＩＳＴ_ＭＢ_ＲをＢＩＳＴコントローラ２２に出力する。そして、ＢＩＳＴコントローラ２２は、機能マクロ１２から出力された処理結果ＢＩＳＴ_ＭＢ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しい場合は機能マクロ１２が正常であると診断する。一方、ＢＩＳＴコントローラ２２は、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しくない場合は機能マクロ１２が異常であると診断する。
【００７９】
ＢＩＳＴコントローラ２２は、自己診断結果を示すＢＩＳＴ結果信号ＢＩＳＴ_ＲをＢＩＳＴ切替回路２１および電圧コントローラ３１に出力する。例えば、ＢＩＳＴコントローラ２２は、機能マクロ１１、１２の自己診断結果が異常である場合、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして自己診断結果が異常であることを示す信号（例えば、ハイレベルの信号）をＢＩＳＴ切替回路２１および電圧コントローラ３１に出力する。
【００８０】
ＢＩＳＴ対象切替回路２１は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして自己診断結果が異常であることを示す信号（例えば、ハイレベルの信号）が供給されると、メモリ１６に次回のＢＩＳＴ診断対象の機能マクロに関する情報（ＳＥＬ_ＢＩＳＴ_Ｗ）を書き込む。
【００８１】
電源供給回路３５は、機能マクロ１１、１２に動作電圧Ｖ_ＭＡ、Ｖ_ＭＢをそれぞれ供給する。電源供給回路３５は、電圧コントローラ３１とレギュレータ３２とを備える。電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１、１２の動作電圧情報（ＶＡＬ_Ｖ_Ｒ）を読み出し、当該動作電圧情報に応じた制御信号ＣＴＲ_ＲＥＧをレギュレータ３２に出力する。レギュレータ３２は、制御信号ＣＴＲ_ＲＥＧに応じた動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを各々の機能マクロ１１、１２に供給する。機能マクロ１１、１２には動作電圧Ｖ_ＭＡ、Ｖ_ＭＢとして所定の電位差を有する動作電圧が供給される。
【００８２】
また、電圧コントローラ３１は、ＢＩＳＴコントローラ２２から出力されたＢＩＳＴ結果信号ＢＩＳＴ_Ｒに応じて、機能マクロ１１、１２に供給する動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを制御する。つまり、電圧コントローラ３１は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒがハイレベルの場合（自己診断の結果が異常である場合）、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くする。このとき、電圧コントローラ３１は、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くした後においても、機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢが所定の電位差ΔＶを有するようにする。
【００８３】
例えば、電圧コントローラ３１は、ＢＩＳＴコントローラ２２から出力されたＢＩＳＴ結果信号ＢＩＳＴ_Ｒがハイレベルの場合（自己診断の結果が異常である場合）、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くした後の動作電圧情報（ＶＡＬ_Ｖ_Ｗ）をメモリ１６に格納する。そして、電圧コントローラ３１は、メモリ１６に格納された機能マクロ１１、１２の動作電圧情報（ＶＡＬ_Ｖ_Ｒ）を読み出し、当該動作電圧情報に応じた制御信号ＣＴＲ_ＲＥＧをレギュレータ３２に出力する。レギュレータ３２は、制御信号ＣＴＲ_ＲＥＧに応じた動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを各々の機能マクロ１１、１２に供給する。このようにすることで、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くすることができる。
【００８４】
メモリ１６には、ＢＩＳＴ診断の対象となっている機能マクロに関する情報（動作電圧が最も低い機能マクロに関する情報）、および機能マクロ１１、１２の動作電圧情報が格納されている。例えば、機能マクロ１１、１２の動作電圧情報は、図３に示す機能マクロ１１の動作電圧Ｖａ０、Ｖａ１、Ｖａ２、機能マクロ１２の動作電圧Ｖｂ０、Ｖｂ１、Ｖｂ２、図４に示す機能マクロ１１の動作電圧Ｖａ１'、Ｖａ２'、機能マクロ１２の動作電圧Ｖｂ１'、Ｖｂ２'である。メモリ１６には、例えば不揮発性メモリを用いることができる。
【００８５】
次に、本実施の形態にかかる半導体集積回路２の動作について説明する。図７は、本実施の形態にかかる半導体集積回路２の動作を説明するためのフローチャートである。以下では、図３に示すように機能マクロ１２の動作電圧の初期値Ｖｂ０が機能マクロ１１の動作電圧の初期値Ｖａ０よりも低い場合を例として説明する。
【００８６】
メモリ１６には、予め、機能マクロ１１の動作電圧の初期値Ｖａ０、機能マクロ１２の動作電圧の初期値Ｖｂ０、ＢＩＳＴ診断の対象となっている機能マクロに関する情報（動作電圧が最も低い機能マクロに関する情報であり、この場合は初期値として機能マクロ１２が設定されている）が格納されている。例えば、これらの情報は、半導体集積回路の出荷時にメモリ１６に格納される。
【００８７】
また、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１、１２の動作電圧情報（ＶＡＬ_Ｖ_Ｒ）を読み出し、当該動作電圧情報に応じた制御信号ＣＴＲ_ＲＥＧをレギュレータ３２に出力している。レギュレータ３２は、制御信号ＣＴＲ_ＲＥＧに応じた動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを各々の機能マクロ１１、１２に供給している。このとき、機能マクロ１１には動作電圧Ｖ_ＭＡとしてＶａ０が、機能マクロ１２には動作電圧Ｖ_ＭＢとしてＶｂ０が、それぞれ供給されている。
【００８８】
通常動作時、機能マクロ１１、１２は同一内容の処理を実行し、処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢをそれぞれ比較回路１３に出力する（ステップＳ１１）。例えば、機能マクロ１１、１２がＣＰＵである場合、機能マクロ１１、１２には同一の命令が供給され、機能マクロ１１、１２は供給された命令の処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢをそれぞれ比較回路１３に出力する。
【００８９】
また、通常動作時、ＢＩＳＴ制御回路２４は、自己診断の実行要求があるか否かを判断する（ステップＳ１２）。例えば、ＢＩＳＴ制御回路２４は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが正常を示す場合（ステップＳ１２：Ｎｏ）、通常動作を継続する（ステップＳ１１）。一方、ＢＩＳＴ制御回路２４は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合（ステップＳ１２：Ｙｅｓ）、機能マクロ１１および機能マクロ１２のうちのいずれか一方の自己診断を実行する（ステップＳ１３）。
【００９０】
つまり、ＢＩＳＴ対象切替回路２１は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合（ハイレベルの場合）、メモリ１６に格納されているＢＩＳＴ診断の対象となっている機能マクロに関する情報（ＳＥＬ_ＢＩＳＴ_Ｒ）を読み出す。この場合、ＢＩＳＴ診断の対象となっている機能マクロの初期値として機能マクロ１２が設定されている。その後、ＢＩＳＴ対象切替回路２１は、ＢＩＳＴ診断の実行を命令するためのＢＩＳＴ実行信号ＢＩＳＴ_ＥＸＥをＢＩＳＴコントローラ２２に出力する。このとき、ＢＩＳＴ実行信号ＢＩＳＴ_ＥＸＥには、ＢＩＳＴ診断の対象となっている機能マクロ１２に関する情報が含まれている。ＢＩＳＴコントローラ２２は、ＢＩＳＴ実行信号ＢＩＳＴ_ＥＸＥが供給されると、機能マクロ１２の自己診断を実行する（ステップＳ１３）。
【００９１】
なお、ＢＩＳＴ制御回路２４は、ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧとしてハイレベルの信号が供給された場合に、機能マクロ１１および機能マクロ１２のうちのいずれか一方の自己診断を実行するようにしてもよい。ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧがハイレベルになる場合は、例えば機能マクロ１１、１２の電源投入時やリセット処理時である。
【００９２】
自己診断を実行する際、ＢＩＳＴコントローラ２２は、機能マクロ１２の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＢを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢを機能マクロ１２に出力する。機能マクロ１２は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理結果ＢＩＳＴ_ＭＢ_ＲをＢＩＳＴコントローラ２２に出力する。そして、ＢＩＳＴコントローラ２２は、機能マクロ１２から出力された処理結果ＢＩＳＴ_ＭＢ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しい場合は機能マクロ１２が正常であると診断する。
【００９３】
ＢＩＳＴコントローラ２２は、自己診断を実行した機能マクロ１２の診断結果が正常である場合（ステップＳ１４：Ｙｅｓ）、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして正常を示す信号（ロウレベルの信号）をＢＩＳＴ対象切替回路２１および電圧コントローラ３１に出力する。この場合、ＢＩＳＴ対象切替回路２１は、メモリ１６に格納されているＢＩＳＴ診断対象の機能マクロに関する情報を書き換えないので、ＢＩＳＴ診断対象の機能マクロは機能マクロ１２のままとなる。また、この場合、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１、１２の動作電圧情報を書き換えないので、レギュレータ３２は、機能マクロ１１に動作電圧Ｖａ０を、機能マクロ１２に動作電圧Ｖｂ０を、それぞれ供給し続ける。その後、機能マクロ１１、１２は通常動作（ステップＳ１１）へと戻り、再度、ステップＳ１１以降の動作を繰り返す。
【００９４】
一方、ＢＩＳＴコントローラ２２は、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しくない場合は機能マクロ１２が異常であると診断する（ステップＳ１４：Ｎｏ。図３のタイミングｔ１参照）。このとき、ＢＩＳＴコントローラ２２は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして異常を示す信号（ハイレベルの信号）をＢＩＳＴ対象切替回路２１および電圧コントローラ３１に出力する。この場合、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１２の動作電圧情報を、動作電圧Ｖｂ０から動作電圧Ｖｂ１に書き換える（図３参照）。一方、機能マクロ１２の動作電圧Ｖａ０については書き換えない。
【００９５】
その後、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１、１２の動作電圧情報（ＶＡＬ_Ｖ_Ｒ）を読み出し、当該動作電圧情報に応じた制御信号ＣＴＲ_ＲＥＧをレギュレータ３２に出力する。レギュレータ３２は、制御信号ＣＴＲ_ＲＥＧに応じた動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを各々の機能マクロ１１、１２に供給する。つまり、レギュレータ３２は機能マクロ１１に動作電圧Ｖａ０を、機能マクロ１２に動作電圧Ｖｂ１をそれぞれ供給する。このようにすることで、ＢＩＳＴ対象の機能マクロ１２の動作電圧を上げることができる（ステップＳ１５）。
【００９６】
また、機能マクロ１２が異常であると診断された場合、ＢＩＳＴ対象切替回路２１は、メモリ１６に次回のＢＩＳＴ診断対象の機能マクロに関する情報として機能マクロ１１の情報を書き込む（ステップＳ１６）。その後、機能マクロ１１、１２は通常動作（ステップＳ１１）へと戻り、再度、ステップＳ１１以降の動作を繰り返す。なお、ステップＳ１５とステップＳ１６の順序は逆であってもよい。
【００９７】
上記例では、図３に示すように、電源供給回路３５が機能マクロ１１、１２の動作電圧を交互に高くしている場合について説明した。しかし、本実施の形態においても、図４に示すように、電源供給回路３５が機能マクロ１１、１２の動作電圧の大小関係（機能マクロ１１の動作電圧＞機能マクロ１２の動作電圧）を維持しつつ、機能マクロ１１、１２の動作電圧を高くしてもよい。
【００９８】
本実施の形態にかかる半導体集積回路２においても、ＢＩＳＴ制御回路２４を用いて複数の機能マクロ１１、１２のうち最も動作電圧が低い機能マクロに対して自己診断を実行している。そして、ＢＩＳＴ制御回路２４による自己診断の結果が異常を示す場合、電源供給回路３５は、最も動作電圧が低い機能マクロの動作電圧を所定の電圧だけ高くしている。このようにすることで、最も動作電圧が低い機能マクロの動作電圧を動作可能最低電圧よりも高くすることができ、当該機能マクロの寿命を延ばすことができる。
【００９９】
以上で説明した本実施の形態により、半導体集積回路を構成する機能マクロの寿命を延ばすことができる半導体集積回路およびその制御方法を提供することができる。
【０１００】
＜実施の形態３＞
次に、実施の形態３について説明する。本実施の形態にかかる半導体集積回路では、実施の形態２で説明した動作（図７に示すフローチャート参照）に、図８に示すフローチャートに示すステップＳ１７〜Ｓ１９を加えている点が実施の形態２にかかる半導体集積回路と異なる。これ以外は、実施の形態２で説明した半導体集積回路と同様であるので、重複した説明は適宜省略する。
【０１０１】
図８は、本実施の形態にかかる半導体集積回路の動作を説明するためのフローチャートである。図８に示すフローチャートのステップＳ１１〜Ｓ１５は、図７に示すフローチャートのステップＳ１１〜Ｓ１５と同様であるので、重複した説明は省略する。
【０１０２】
本実施の形態では、ステップＳ１５においてＢＩＳＴ対象の機能マクロ１２の動作電圧を上げた後、再度、ＢＩＳＴ対象の機能マクロ１２の自己診断を実行している（ステップＳ１７）。この場合も、ＢＩＳＴコントローラ２２は、機能マクロ１２の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＢを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢを機能マクロ１２に出力する。機能マクロ１２は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理結果ＢＩＳＴ_ＭＢ_ＲをＢＩＳＴコントローラ２２に出力する。そして、ＢＩＳＴコントローラ２２は、機能マクロ１２から出力された処理結果ＢＩＳＴ_ＭＢ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しい場合は機能マクロ１２が正常であると診断する。
【０１０３】
ＢＩＳＴコントローラ２２は、ステップＳ１７における自己診断の診断結果が正常である場合（ステップＳ１８：Ｙｅｓ）、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして正常を示す信号（ロウレベルの信号）をＢＩＳＴ切替回路２１および電圧コントローラ３１に出力する。この場合、ＢＩＳＴ対象切替回路２１は、次回のＢＩＳＴ診断対象の機能マクロに関する情報として機能マクロ１１の情報をメモリ１６に書き込む（ステップＳ２０）。また、この場合、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１、１２の動作電圧情報を書き換えないので、レギュレータ３２は、機能マクロ１１に動作電圧Ｖａ０を、機能マクロ１２に動作電圧Ｖｂ１を、それぞれ供給し続ける。その後、機能マクロ１１、１２は通常動作（ステップＳ１１）へと戻り、再度、ステップＳ１１以降の動作を繰り返す。
【０１０４】
一方、ＢＩＳＴコントローラ２２は、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しくない場合は機能マクロ１２が異常であると診断する（ステップＳ１８：Ｎｏ）。このとき、ＢＩＳＴコントローラ２２は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして異常を示す信号（ハイレベルの信号）をＢＩＳＴ対象切替回路２１および電圧コントローラ３１に出力する。この場合、ＢＩＳＴ対象切替回路２１は、機能マクロ１２が寿命により故障したことを半導体集積回路のユーザ等に通知する（ステップＳ１９）。
【０１０５】
このように、本実施の形態にかかる半導体集積回路では、ステップＳ１５においてＢＩＳＴ対象の機能マクロ１２の動作電圧を上げた後、再度、ＢＩＳＴ対象の機能マクロ１２の自己診断を実行している（ステップＳ１７）。そして、２度目の自己診断において機能マクロ１２が異常であると診断された場合（ステップＳ１８：Ｎｏ）、ＢＩＳＴ対象切替回路２１は、機能マクロ１２が寿命により故障したと判断している。よって、本実施の形態にかかる半導体集積回路により、経年劣化に起因する故障以外の故障（つまり、寿命による故障）を検知することができる。
【０１０６】
＜実施の形態４＞
次に、実施の形態４について説明する。図９は、本実施の形態にかかる半導体集積回路３を示す図である。本実施の形態にかかる半導体集積回路３では、実施の形態２で説明した半導体集積回路２と比べて、ＢＩＳＴ制御回路４４の構成が異なる。これ以外は実施の形態２で説明した半導体集積回路２と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
【０１０７】
図９に示すように、本実施の形態にかかる半導体集積回路３は、複数の機能マクロ１１、１２と、比較回路１３と、ＢＩＳＴ制御回路４４と、電源供給回路３５と、メモリ１６と、を備える。機能マクロ１１、１２、比較回路１３、メモリ１６、電源供給回路３５の構成および動作については実施の形態１および２で説明した場合と同様である。
【０１０８】
ＢＩＳＴ制御回路４４はＢＩＳＴコントローラ４１を備える。ＢＩＳＴコントローラ４１は、複数の機能マクロ１１、１２のうちのいずれか一方に対して自己診断を実行する。ＢＩＳＴコントローラ４１は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合（ハイレベルの場合）やＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧとしてハイレベルの信号が供給された場合、機能マクロ１１、１２のいずれか一方の自己診断を実行する。
【０１０９】
また、ＢＩＳＴコントローラ４１は、自己診断結果を示すＢＩＳＴ結果信号ＢＩＳＴ_Ｒを電圧コントローラ３１に出力する。例えば、ＢＩＳＴコントローラ４１は、機能マクロの自己診断結果が異常である場合、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして自己診断結果が異常であることを示す信号（例えば、ハイレベルの信号）を電圧コントローラ３１に出力する。
【０１１０】
なお、本実施の形態にかかる半導体集積回路３では、ＢＩＳＴコントローラ４１は、機能マクロ１１、１２のうちのいずれか一方に対して自己診断を行なうように予め固定されている。すなわち、ＢＩＳＴコントローラ４１が自己診断を行なう機能マクロは、機能マクロ１１、１２のうち動作電圧が低い方の機能マクロに予め固定されている。このとき、電源供給回路３５は、機能マクロ１１、１２に供給される動作電圧Ｖ_ＭＡ、Ｖ_ＭＢの大小関係が維持されるように、機能マクロ１１、１２の動作電圧を制御する。すなわち、本実施の形態にかかる半導体集積回路３は、動作電圧を図４に示したように制御する半導体集積回路に適用することができる。
【０１１１】
次に、本実施の形態にかかる半導体集積回路３の動作について説明する。図１０は、本実施の形態にかかる半導体集積回路３の動作を説明するためのフローチャートである。以下では、図４に示すように機能マクロ１２の動作電圧の初期値Ｖｂ０が機能マクロ１１の動作電圧の初期値Ｖａ０よりも低い場合を例として説明する。
【０１１２】
メモリ１６には、予め、機能マクロ１１の動作電圧の初期値Ｖａ０、機能マクロ１２の動作電圧の初期値Ｖｂ０が格納されている。例えば、これらの情報は半導体集積回路の出荷時にメモリ１６に格納される。
【０１１３】
また、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１、１２の動作電圧情報（ＶＡＬ_Ｖ_Ｒ）を読み出し、当該動作電圧情報に応じた制御信号ＣＴＲ_ＲＥＧをレギュレータ３２に出力している。レギュレータ３２は、制御信号ＣＴＲ_ＲＥＧに応じた動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを各々の機能マクロ１１、１２に供給している。このとき、機能マクロ１１には動作電圧Ｖ_ＭＡとしてＶａ０が、機能マクロ１２には動作電圧Ｖ_ＭＢとしてＶｂ０が、それぞれ供給されている。
【０１１４】
通常動作時、機能マクロ１１、１２は同一内容の処理を実行し、処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢをそれぞれ比較回路１３に出力する（ステップＳ３１）。例えば、機能マクロ１１、１２がＣＰＵである場合、機能マクロ１１、１２には同一の命令が供給され、機能マクロ１１、１２は供給された命令の処理結果ＣＡＬ_ＭＡ、ＣＡＬ_ＭＢをそれぞれ比較回路１３に出力する。
【０１１５】
また、通常動作時、ＢＩＳＴ制御回路４４は、自己診断の実行要求があるか否かを判断する（ステップＳ３２）。例えば、ＢＩＳＴコントローラ４１は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが正常を示す場合（ステップＳ３２：Ｎｏ）、通常動作を継続する（ステップＳ３１）。一方、ＢＩＳＴコントローラ４１は、比較回路１３から出力された故障診断結果信号ＳＩＧ_ＣＭＰが異常を示す場合（ステップＳ３２：Ｙｅｓ）、機能マクロ１２の自己診断を実行する（ステップＳ３３）。
【０１１６】
なお、ＢＩＳＴコントローラ４１は、ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧとしてハイレベルの信号が供給された場合に、機能マクロ１２の自己診断を実行してもよい。ＢＩＳＴトリガー信号ＳＩＧ_ＴＲＧがハイレベルになる場合は、例えば機能マクロ１１、１２の電源投入時やリセット処理時である。
【０１１７】
自己診断を実行する際（ステップＳ３３）、ＢＩＳＴコントローラ４１は、機能マクロ１２の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＢを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢを機能マクロ１２に出力する。機能マクロ１２は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理結果ＢＩＳＴ_ＭＢ_ＲをＢＩＳＴコントローラ４１に出力する。そして、ＢＩＳＴコントローラ４１は、機能マクロ１２から出力された処理結果ＢＩＳＴ_ＭＢ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しい場合は機能マクロ１２が正常であると診断する。
【０１１８】
ＢＩＳＴコントローラ４１は、自己診断を実行した機能マクロ１２の診断結果が正常である場合（ステップＳ３４：Ｙｅｓ）、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして正常を示す信号（ロウレベルの信号）を電圧コントローラ３１に出力する。この場合、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１、１２の動作電圧情報を書き換えないので、レギュレータ３２は、機能マクロ１１に動作電圧Ｖａ０を、機能マクロ１２に動作電圧Ｖｂ０を、それぞれ供給し続ける。その後、機能マクロ１１、１２は通常動作（ステップＳ３１）へと戻り、再度、ステップＳ３１以降の動作を繰り返す。
【０１１９】
一方、ＢＩＳＴコントローラ４１は、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しくない場合は機能マクロ１２が異常であると診断する（ステップＳ３４：Ｎｏ。図４のタイミングｔ１１参照）。このとき、ＢＩＳＴコントローラ４１は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして異常を示す信号（ハイレベルの信号）を電圧コントローラ３１に出力する。この場合、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１の動作電圧情報を動作電圧Ｖａ０から動作電圧Ｖａ１'に、機能マクロ１２の動作電圧情報を動作電圧Ｖｂ０から動作電圧Ｖｂ１'に、それぞれ書き換える。
【０１２０】
その後、電圧コントローラ３１は、メモリ１６に格納されている機能マクロ１１、１２の動作電圧情報（ＶＡＬ_Ｖ_Ｒ）を読み出し、当該動作電圧情報に応じた制御信号ＣＴＲ_ＲＥＧをレギュレータ３２に出力する。レギュレータ３２は、制御信号ＣＴＲ_ＲＥＧに応じた動作電圧Ｖ_ＭＡ、Ｖ_ＭＢを各々の機能マクロ１１、１２に供給する。つまり、レギュレータ３２は機能マクロ１１に動作電圧Ｖａ１'を、機能マクロ１２に動作電圧Ｖｂ１'をそれぞれ供給する（ステップＳ３５）。このようにすることで、ＢＩＳＴ対象の機能マクロ１２の動作電圧を上げることができる。
【０１２１】
その後、機能マクロ１１、１２は通常動作（ステップＳ３１）へと戻り、再度、ステップＳ３１以降の動作を繰り返す。なお、上記例では、機能マクロ１２の動作電圧が機能マクロ１１の動作電圧よりも低い場合を例として説明したが、機能マクロ１１の動作電圧が機能マクロ１２の動作電圧よりも低い場合についても同様に適用することができる。このように、本実施の形態にかかる半導体集積回路３は、機能マクロ１１、１２の動作電圧の大小関係を維持しつつ、機能マクロ１１、１２に供給する動作電圧を制御する半導体集積回路に適用することができる。
【０１２２】
本実施の形態にかかる半導体集積回路では、実施の形態２で説明した半導体集積回路が備えるＢＩＳＴ切替回路が不要となるため半導体集積回路の構成を簡素化することができる。
【０１２３】
＜実施の形態５＞
次に、実施の形態５について説明する。本実施の形態にかかる半導体集積回路では、実施の形態４で説明した動作（図１０に示すフローチャート参照）に、図１１に示すフローチャートに示すステップＳ３６〜Ｓ３８を加えている点が実施の形態４にかかる半導体集積回路と異なる。これ以外は、実施の形態４で説明した半導体集積回路と同様であるので、重複した説明は適宜省略する。
【０１２４】
図１１は、本実施の形態にかかる半導体集積回路の動作を説明するためのフローチャートである。図１１に示すフローチャートのステップＳ３１〜Ｓ３５は、図１０に示すフローチャートのステップＳ３１〜Ｓ３５と同様であるので、重複した説明は省略する。
【０１２５】
本実施の形態では、ステップＳ３５においてＢＩＳＴ対象の機能マクロ１２の動作電圧を上げた後、再度、ＢＩＳＴ対象の機能マクロ１２の自己診断を実行している（ステップＳ３６）。この場合も、ＢＩＳＴコントローラ４１は、機能マクロ１２の自己診断に用いられるＢＩＳＴテストパターンＢＩＳＴ_ＭＢを生成し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢを機能マクロ１２に出力する。機能マクロ１２は、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理を実行し、ＢＩＳＴテストパターンＢＩＳＴ_ＭＢの処理結果ＢＩＳＴ_ＭＢ_ＲをＢＩＳＴコントローラ４１に出力する。そして、ＢＩＳＴコントローラ４１は、機能マクロ１２から出力された処理結果ＢＩＳＴ_ＭＢ_Ｒと期待値とを比較し、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しい場合は機能マクロ１２が正常であると診断する。
【０１２６】
ＢＩＳＴコントローラ４１は、ステップＳ３６における自己診断の診断結果が正常である場合（ステップＳ３７：Ｙｅｓ）、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒとして正常を示す信号（ロウレベルの信号）を電圧コントローラ３１に出力する。電圧コントローラ３１は、ＢＩＳＴ結果信号ＢＩＳＴ_Ｒが正常を示す信号であるので、機能マクロ１１、１２に供給する動作電圧Ｖａ１'、Ｖｂ１'を変更することなく、機能マクロ１１、１２に動作電圧Ｖａ１'、Ｖｂ１'を供給し続ける。その後、機能マクロ１１、１２は通常動作（ステップＳ３１）へと戻り、再度、ステップＳ３１以降の動作を繰り返す。
【０１２７】
一方、ＢＩＳＴコントローラ４１は、処理結果ＢＩＳＴ_ＭＢ_Ｒが期待値と等しくない場合は機能マクロ１２が異常であると診断する（ステップＳ３７：Ｎｏ）。この場合、ＢＩＳＴコントローラ４１は、機能マクロ１２が寿命により故障したことを半導体集積回路のユーザ等に通知する（ステップＳ３８）。
【０１２８】
このように、本実施の形態にかかる半導体集積回路では、ステップＳ３５においてＢＩＳＴ対象の機能マクロ１２の動作電圧を上げた後、再度、ＢＩＳＴ対象の機能マクロ１２の自己診断を実行している（ステップＳ３６）。そして、２度目の自己診断において機能マクロ１２が異常であると診断された場合（ステップＳ３７：Ｎｏ）、ＢＩＳＴコントローラ４１は、機能マクロ１２が寿命により故障したと判断している。よって、本実施の形態にかかる半導体集積回路により、経年劣化に起因する故障以外の故障（つまり、寿命による故障）を検知することができる。
【０１２９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１３０】
１  半導体集積回路
１１、１２  機能マクロ
１３  比較回路
１４、２４  ＢＩＳＴ制御回路
１５、３５  電源供給回路
１６  メモリ
２１  ＢＩＳＴ切替回路
２２、４１  ＢＩＳＴコントローラ
３１  電圧コントローラ
３２  レギュレータ
【図１】
2013239023.tif 000003
【図２】
2013239023.tif 000004
【図３】
2013239023.tif 000005
【図４】
2013239023.tif 000006
【図５】
2013239023.tif 000007
【図６】
2013239023.tif 000008
【図７】
2013239023.tif 000009
【図８】
2013239023.tif 000010
【図９】
2013239023.tif 000011
【図１０】
2013239023.tif 000012
【図１１】
2013239023.tif 000013