(57)【要約】【課題】本発明は、プロセッサの動作電圧を動的に変動させる場合にプロセッサがハングアップ等の異常動作をすることがないように、チップ毎の動作特性及び現在の動作条件での動作特性に応じた最適な電圧設定が可能な半導体集積回路を提供することを目的とする。【解決手段】半導体集積回路は、クロック信号に基づいて動作して命令を実行するコア回路と、コア回路に供給される電源電圧を変更する電圧制御部と、クロック信号をコア回路に供給するクロック生成部と、クロック信号及び電源電圧で動作してコア回路の動作を模擬することによりコア回路が電源電圧で正常に動作するか否かをテストするテスト回路を含み、電圧制御部が電源電圧を変更している間においてクロック生成部はクロック信号の代わりに別の信号をコア回路に供給する。【選択図】  図１
2006004338.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号に基づいて動作する内部モジュールと、
該内部モジュールに供給される電源電圧を変更する電圧制御部と、
該クロック信号を該内部モジュールに供給するクロック生成部と、
該クロック信号及び該電源電圧で動作して該内部モジュールにおけるクリティカルパスの遅延を模擬することにより該内部モジュールが該電源電圧で正常に動作するか否かをテストするテスト回路
を含み、該電圧制御部が該電源電圧を変更している間において該クロック生成部は該クロック信号の代わりに別の信号を該内部モジュールに供給することを特徴とする半導体集積回路。
【請求項２】
該電圧制御部が該電源電圧を変更している間において該クロック生成部は信号レベルが固定された信号を該別の信号として該該内部モジュールに供給することを特徴とする請求項１記載の半導体集積回路。
【請求項３】
該電圧制御部が該電源電圧を変更している間において該クロック生成部は該クロック信号よりも低い周波数のクロック信号を該別の信号として該該内部モジュールに供給することを特徴とする請求項１記載の半導体集積回路。
【請求項４】
該電源電圧の変更を完了した後に該テスト回路によるテスト結果が良好を示す場合に該クロック生成部は該該内部モジュールに対する該クロック信号の供給を再開することを特徴とする請求項１記載の半導体集積回路。
【請求項５】
該電源電圧の変更を完了した後に該テスト回路によるテスト結果が不良を示す場合に、該テスト回路によるテスト結果が良好を示すまで該電圧制御部は該電源電圧を上昇させることを特徴とする請求項４記載の半導体集積回路。
【請求項６】
該テスト回路は、
該該内部モジュールのクリティカルパスの遅延値に相当する遅延を有する遅延パスと、
該遅延パスを伝播した信号を該クロック信号に同期して正常に受け取れるか否かを判断する判定回路
を含み、該判定回路による該遅延パスを伝播した信号を正常に受け取れるか否かの判断に応じて該該内部モジュールが該電源電圧で正常に動作するか否かをテストすることを特徴とする請求項１記載の半導体集積回路。
【請求項７】
該テスト回路は該遅延パスと該判定回路のセットを複数個含み、該複数個のセットの該遅延パスはそれぞれ異なる遅延を有することを特徴とする請求項６記載の半導体集積回路。
【請求項８】
該テスト回路のテスト結果を格納するレジスタを更に含み、該内部モジュールは命令実行動作により該レジスタをアクセス可能であることを特徴とする請求項７記載の半導体集積回路。
【請求項９】
クロック信号に基づいて動作する内部モジュールと、
該内部モジュールに供給される電源電圧を変更する電圧制御部と、
該クロック信号を該内部モジュールに供給するクロック生成部と、
該クロック信号及び該電源電圧で動作して該内部モジュールにおけるクリティカルパスの遅延を模擬することにより該内部モジュールが該電源電圧で正常に動作するか否かをテストするテスト回路
を含み、該電圧制御部が該電源電圧を変更している間において該電圧制御部から該内部モジュールにビジー信号をアサートすることにより該内部モジュールの動作を停止することを特徴とする半導体集積回路。
【請求項１０】
クロック信号に基づいて動作して命令を実行するコア回路と、
該コア回路に供給される電源電圧を変更する電圧制御部と、
該クロック信号を該コア回路に供給するクロック生成部と、
該コア回路のハングアップ状態を検出するモニタ回路
を含み、該モニタ回路による該ハングアップ状態の検出に応答して該コア回路をリセットすることを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に半導体集積回路に関し、詳しくは内部動作電圧を変更する半導体集積回路に関する。
【背景技術】
【０００２】
半導体集積回路の消費電力を削減するために、電圧を最適化することが一般に行われている。しかし半導体プロセス技術の発展に伴い、0.13μm以下の微細なテクノロジでプロセッサ等を製造する場合には、従来は誤差として扱われてきたリーク電流が無視できない比率を占めるようになる。このリーク電流は、プロセッサの動作・非動作に関わらず常時流れ続けるのみならず、内部動作電圧の上昇に伴い電流量が増えるという特性がある。また動作電圧の上昇によりチップ温度が上昇すると、温度上昇によってもリーク電流が増大してしまう。このためにリーク電流の存在が低消費電力を実現するにあたり非常に大きな問題となっている。
【０００３】
リーク電流の影響を最小限に抑えるために、プロセッサ等において高速動作を必要としない期間には内部動作電圧を下げてリーク電流を抑え、高速動作を必要とする期間には内部電圧を上げるという手法が採用されている。このような技術においては、電圧変動による影響を最小限に抑えるために、ある電圧値から他の電圧値へ急激に電圧を変動させるのではなく、一定の時間をかけて小さい値の電圧ステップ毎に少しずつ電圧値を変動させる手法がある。このような電圧制御を実現するためには、チップが動作可能な下限電圧を予め把握している必要があり、内部電圧を下げていく場合にはこの下限電圧より低い電圧値にならないように制御する必要がある。もしこの下限電圧よりも電圧値が下がると、プロセッサを構成する半導体素子の遅延値が大きくなり、命令実行処理が正常に実行できずにプロセッサがハングアップする危険性がある。
【０００４】
なお特許文献１には、ＣＰＵ内部の演算処理部に電圧テスト回路を設け、電圧を少しずつ下げていきながら演算器のテストをし、演算器が動作する最低電圧を決定する発明が開示されている。また特許文献２には、システムボード上にある複数のプロセッサに対する最適な供給電圧値を求める手段として、システムパワーオン時に各プロセッサに対して電圧マージンテストを行なうことにより、各プロセッサに対して電圧供給源から最適な電圧を供給する技術が示されている。
【０００５】
また非特許文献１は、必要な処理性能に応じて動的にプロセッサの動作周波数や内部動作電圧をプログラム命令で制御する技術に関して、近年の技術の一般的なトレンドを示している。
【特許文献１】特開平１１−２０３１６３号公報
【特許文献２】特開２００１−３４５０２号公報
【非特許文献１】”ダイナミック・パワー・マネッジメント・フォー・エンベデッド・システムズ（Dynamic Power Management for Embedded Systems）”、［online］、２００２年１１月１９日、アイビーエム（ＩＢＭ）、［平成１６年４月２７日検索］、インターネット＜URL: http://www.research.ibm.com/arl/projects/papers/DPM_V1.1.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
徐々に電圧を変化させる場合、内部電圧を上げていく場合はＣＰＵの動作条件が向上する方向に状態が変化するので問題が無いが、内部電圧を下げていく場合には、プロセッサ自身が命令実行不可能となりハングアップしてしまう危険性がある。半導体プロセス過程により製造されるプロセッサには、プロセスバラツキによる性能バラツキがある。従って、安全性を確保しながら動的に内部電圧を変化させたい場合には、個々のプロセッサについて予め正常動作可能な電圧範囲を調べておき、この電圧範囲内で十分なマージンを確保しながら電圧を制御する必要がある。
【０００７】
また半導体集積回路は、その動作中においても温度上昇等の要因により性能が劣化する場合がある。従って正常動作可能な範囲が動作条件によっても異なることになり、ある動作条件で調べておいた正常動作可能な電圧範囲では、動作条件変化後には正常な動作ができなくなる可能性がある。またこのような問題を避けるために、殊更に大きなマージンを確保する必要が生じたりする。
【０００８】
以上を鑑みて、本発明は、プロセッサの動作電圧を動的に変動させる場合にプロセッサがハングアップ等の異常動作をすることがないように、チップ毎の動作特性及び現在の動作条件での動作特性に応じた最適な電圧設定が可能な半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明による半導体集積回路は、クロック信号に基づいて動作する内部モジュールと、該内部モジュールに供給される電源電圧を変更する電圧制御部と、該クロック信号を該内部モジュールに供給するクロック生成部と、該クロック信号及び該電源電圧で動作して該内部モジュールにおけるクリティカルパスの遅延を模擬することにより該内部モジュールが該電源電圧で正常に動作するか否かをテストするテスト回路を含み、該電圧制御部が該電源電圧を変更している間において該クロック生成部は該クロック信号の代わりに別の信号を該内部モジュールに供給することを特徴とする。
【００１０】
また本発明による別の側面によれば、半導体集積回路は、クロック信号に基づいて動作して命令を実行するコア回路と、該コア回路に供給される電源電圧を変更する電圧制御部と、該クロック信号を該コア回路に供給するクロック生成部と、該コア回路のハングアップ状態を検出するモニタ回路を含み、該モニタ回路による該ハングアップ状態の検出に応答して該コア回路をリセットすることを特徴とする。
【発明の効果】
【００１１】
本発明の少なくとも１つの実施例によれば、電源電圧変更中において電圧不安定な状態でのコア回路等の内部モジュールの動作を抑止すると共に、電圧変更後の動作再開前に内部モジュールの正常動作が保障できるか否かを予めテスト回路で確認することができる。従って、内部モジュールの動作電圧を動的に変動させる場合に内部モジュールがハングアップ等の異常動作をすることがないように、チップ毎の動作特性及び現在の動作条件での動作特性に応じた最適な電圧設定をすることが可能になる。
【００１２】
また本発明の少なくとも１つの実施例によれば、何らかの要因（例えば外部からの電源ノイズ等）によりコア回路がハングアップしてしまった場合であっても、コア回路をリセットすることで正常な動作状態に復帰することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１４】
図１は、本発明による半導体集積回路の実施例の構成の一例を示す図である。図１の半導体集積回路（プロセッサ）１００は、電圧制御部１、クロック生成部２、ＣＰＵコア部３、ＳＤＲＡＭ制御部４、オンチップバス５、バスブリッジ６、内部周辺バス７、モジュール８、電圧制御レジスタ９、クロック制御レジスタ１０、ＰＬＬ回路１１、及びテスト回路２０を含む。プロセッサ１００は外部可変電圧供給源１２から電圧を供給される。またプロセッサ１００のＳＤＲＡＭ制御部４は、外部ＳＤＲＡＭ１３に接続されている。
【００１５】
図１において、電圧制御部１、クロック生成部２、ＣＰＵコア部３、及びテスト回路２０が本発明に直接に関連する部分であり、その他の構成要素は本発明を適用する半導体集積回路の一般的な構成を示すものである。ＳＤＲＡＭ制御部４は、外部ＳＤＲＡＭ１３とのインターフェースを提供する。バスブリッジ６は、オンチップバス５と内部周辺バス７とのインターフェースを提供する。モジュール８において、電圧制御レジスタ９は電圧制御部１の動作をソフトウェア的に制御する設定値を格納し、クロック制御レジスタ１０はクロック生成部２のクロック速度やクロック供給／停止等をソフトウェア的に制御するための設定値を格納する。これらのレジスタは、ＣＰＵコア部３からバスを介してアクセス可能であり、ＣＰＵコア部３で実行されるプログラム命令により制御することができる。ＰＬＬ回路１１は、外部から供給されるクロック信号ＣＬＫＩＮに同期した逓倍クロック信号を生成し、クロック生成部２に供給する。
【００１６】
プロセッサ１００自体の動作電圧は外部可変電圧供給源１２から供給される。プロセッサ１００内部の電圧制御部１から出力される制御信号により外部可変電圧供給源１２を制御することで、プロセッサ１００の動作電圧を制御することができる。プロセッサ１００内部のクロック生成部２においては、ＰＬＬ回路１１からの逓倍クロック信号を基にして、ＣＰＵコア部３へのコアクロック信号ＣＯＲＥ＿ＣＬＫを含む各モジュールへの動作クロック信号を生成・供給する。
【００１７】
図２は、図１の半導体集積回路における電圧制御動作の実施例の一例を示すタイミングチャートである。
【００１８】
図２において、（ａ）は横軸を時間とし縦軸をプロセッサ１００の内部動作電圧Ｖｄｄとして示した電圧制御時の電圧変化である。この例では、高速動作時の１．３ＶからＣＰＵ処理能力をそれ程必要としない場合の０．９Ｖまで、動作電圧を変化させている。（ｂ）に示されるように、時間Ｔ１までの期間、プロセッサ１００は高速動作している。この期間、（ｄ）に示されるようにコアクロック信号ＣＯＲＥ＿ＣＬＫはＣＰＵコア部３へ供給されつづける。その他の内部モジュールへのクロック供給も同様であってよい。
【００１９】
その後、プロセッサ１００を制御するＯＳ等から低電圧移行の指示が電圧制御レジスタ９に書き込まれると、電圧制御部１はクロック生成部２へクロック停止指示を供給する。このクロック停止指示に応じて、クロック生成部２はコアクロック信号ＣＯＲＥ＿ＣＬＫの供給を停止する。このようにプロセッサ１００の中で一番高速に動作するＣＰＵコア部３のクロックを停止させておくことで、電圧変動時の不安定な内部電圧による命令実行のハングアップ等を回避することができる。このときＣＰＵコア部３以外のモジュールへのクロック供給は、継続しても停止してもよい。例えば外部ＳＤＲＡＭ１３を制御するＳＤＲＡＭ制御部４へはクロック供給を継続しておく構成とすれば、外部ＳＤＲＡＭ１３をセルフリフレッシュモード等に遷移させておく必要がないという利点がある。
【００２０】
図２において、時間Ｔ１から時間Ｔ２の期間は、電圧制御部１が外部可変電圧供給源１２を制御して内部動作電圧Ｖｄｄを徐々に下げている期間である。所望の０．９Ｖにまで内部動作電圧が下がり安定した後、Ｔ２からＴ３の期間において、電圧制御部１はテストイネーブル信号をアサートする。このテストイネーブル信号のアサートに応答して、テスト回路２０がＴ２からＴ３の期間において動作テストを行なう。テスト回路２０は、動作テストの結果（ＮＧ又はＯＫ）を示すテスト結果信号を電圧制御部１に供給する。
【００２１】
テスト結果の内容がＯＫであれば、電圧制御部１はクロック生成部２へのクロックマスク要求を解除する。これに応答して、クロック生成部２は時間Ｔ３から新しい変更後の電圧値を用いてクロックの供給を開始して、ＣＰＵコア部３の動作を再開する。
【００２２】
尚、図２には内部電圧を下げていく場合が例として示されているが、内部電圧を上げる場合でも処理手順は同じでよい。但し、電圧を上げる場合にはＣＰＵコア部３の動作条件が向上する方向に変化するので、ハングアップの危険性は少ないと考えられる。
【００２３】
またクロック供給を停止する期間としては、図２のＴ１及びＴ２間の電圧が不安定な期間に限る必要は無い。例えばチップ内部のＰＬＬ回路１１の電源電圧をも変化させた場合には、電圧安定後更にＰＬＬ回路１１の発振が安定するまでクロック供給を停止する構成としてよい。
【００２４】
また図１においては、図示の都合上、クロック生成部２から共通の信号線を介してコアクロック信号ＣＯＲＥ＿ＣＬＫをＣＰＵコア部３及びテスト回路２０に供給するように示されている。しかし図２の期間Ｔ２〜Ｔ３の間は、ＣＰＵコア部３へはクロックを供給せずにテスト回路２０へはクロックを供給する必要があり、実際の構成においては異なる信号経路とすることが好ましい。
【００２５】
図３は、図１の半導体集積回路における電圧制御動作の実施例の別の例を示すタイミングチャートである。
【００２６】
図３では、電圧変更後の期間Ｔ２〜Ｔ３において実行した動作テストのテスト結果信号がＮＧ（不良）を示す場合に、その後の期間Ｔ３〜Ｔ４において電圧制御部１が内部動作電圧を上昇させる。その電圧変更が終了した後に期間Ｔ４〜Ｔ５にいて、再度テストイネーブル信号をアサートして動作テストを実行する。この図の例では、２度目の動作テストの結果、テスト結果信号がＯＫ（良好）を示している。このＯＫのテスト結果に応答して、電圧制御部１がクロック生成部２にアサートしているクロックマスク要求を解除する。これに応答して、クロック生成部２は時間Ｔ５から新しい変更後の電圧値を用いてクロックの供給を開始して、ＣＰＵコア部３の動作を再開する。
【００２７】
図４は、テスト回路２０の実施例の構成の一例を示す回路図である。
【００２８】
図４のテスト回路２０は、ＡＮＤゲート２１、フリップフロップ２２、遅延パス２３、フリップフロップ２４、フリップフロップ２５、及びエクスクルーシブＮＯＲゲート２６を含む。
【００２９】
フリップフロップ２２は、テストパターンを発生するための１ビットのトグル信号生成用カウンタとして動作する。具体的には、電圧制御部１からのテストイネーブル信号がＨＩＧＨの場合に、コアクロック信号ＣＯＲＥ＿ＣＬＫをトリガとしてトグル動作をするものである。フリップフロップ２２で生成したテストパターン信号を遅延パス２３で遅らせ、遅延したテストパターン信号をフリップフロップ２４によりコアクロック信号ＣＯＲＥ＿ＣＬＫに同期して取り込む。またフリップフロップ２２で生成したテストパターン信号を遅延パス２３を介することなく、フリップフロップ２５によりコアクロック信号ＣＯＲＥ＿ＣＬＫに同期して取り込む。フリップフロップ２５に取り込まれたデータがテストパターンの正しい値（期待値）である。エクスクルーシブＮＯＲゲート２６は、フリップフロップ２４及び２５の値を比較して、両値が同一のときにＨＩＧＨのテスト結果信号を送出する。両値が互いに異なるときは、ＬＯＷのテスト結果信号を送出する。
【００３０】
遅延パス２３は例えば遅延バッファで構成され、ＣＰＵコア部３の内部のクリティカルパスと同等の遅延値か、或いはそれよりも一定の遅延量だけ大きい遅延値を有するように設定される。例えば図１のプロセッサ１００を構成する半導体集積回路のレイアウト後にタイミング検証をした際に、一番タイミング的にクリティカルな（一番タイミング的に厳しい）パスを特定し、そのクリティカルパスの遅延値（或いは遅延値＋一定マージン）を設定する。これにより遅延パス２３によりクリティカルパスの遅延を模擬することができる。例えばＣＰＵコア部３のクリティカルパスのマージンが、コアクロック信号ＣＯＲＥ＿ＣＬＫの１クロックサイクルの５％に相当する場合、遅延パス２３は１クロックサイクルの９５％に相当する遅延値（或いは遅延値＋一定マージン）に設定すればよい。なおここでいう一定のマージンは、半導体のプロセスバラツキ、電圧変動、温度変化による動作条件の変化等の影響を考慮して設けるものである。
【００３１】
上記のような構成とすれば、電圧変化後にテスト回路２０によるテスト動作を実行することにより、電圧変化後の条件にあるクリティカルパスを模擬するパスで遅延したテストパターン信号を、正常にラッチできるか否かを判断することができる。これにより、ＣＰＵコア部３内部の実際のクリティカルパスにおいて問題が発生するか否かを判断することができる。テスト結果信号がＨＩＧＨの時にはテスト結果がＯＫであり、テスト結果信号がＬＯＷの時にはテスト結果がＮＧである。 
この実施例の場合、テスト結果信号は１ビットである。この場合、テスト結果信号を受け取る電圧制御部１において、テストイネーブル信号をネゲートするときのテスト結果信号の状態を読み取ることで、テスト結果の良否を判定することができる。なおテスト結果信号の１ビットに加えて、テスト結果信号の有効期間を示す信号を送出するように構成してもよい。
【００３２】
テスト回路２０は、乗算器や加算器等により構成することもできるが、消費電力及び回路規模等を考慮した場合、図４のような簡素な構成が現実的であり好ましい。
【００３３】
図５は、プロセッサ１００の第２の実施例の構成の一例を示す図である。図５において、図１と同一の構成要素は同一の参照番号で参照し、その説明は省略する。
【００３４】
図５においては、図１のテスト回路２０の代わりに性能モニタ回路３０が設けられる。またモジュール８には、性能モニタ回路３０の動作を制御するための設定値を格納するテスト制御レジスタ３２、及び性能モニタ回路３０のモニタ結果を格納する性能モニタレジスタ３３が設けられる。これらのレジスタは、ＣＰＵコア部３からバスを介してアクセス可能であり、ＣＰＵコア部３で実行されるプログラム命令により制御或いは読み出しすることができる。
【００３５】
性能モニタ回路３０は、カウンタ３１及び複数（図の例では３つ）のテスト回路２０−１乃至２０−３を含む。テスト回路２０−１乃至２０−３の各々は、図４のテスト回路２０と同様の構成でよい。またテスト回路２０−１乃至２０−３はそれぞれ、ＣＰＵコア部３のクリティカルパスの遅延の例えば１．１倍、１．３倍、１．５倍の遅延値をテストする構成である。
【００３６】
カウンタ３１は、テスト制御レジスタ３２によりそのカウント値が制御され、カウント値が一定値に到達するとテスト回路２０−１乃至２０−３を動作させるテストイネーブル信号を生成する。テスト回路２０−１乃至２０−３は、カウンタ３１からのテストイネーブル信号と電圧制御部１からのテストイネーブル信号の何れかがアサートされると、テスト動作を実行する。各テスト回路２０−１乃至２０−３が出力するテスト結果信号は、電圧制御部１及び性能モニタレジスタ３３に供給される。
【００３７】
複数のテスト回路２０−１乃至２０−３を設け、それぞれ異なる遅延値に対してテスト動作を実行することで、現在の内部動作電圧等の動作条件下での動作環境評価を行うことができる。即ち、例えばクリティカルパスの遅延の例えば１．１倍、１．３倍、１．５倍の遅延値のテストの全てにおいてＯＫの結果が出れば、動作環境は良好であると判断できる。また１．１倍及び１．３倍の遅延値でのテスト結果がＯＫであるが１．５倍の遅延値でのテスト結果がＮＧであれば、動作環境が若干悪化していることがわかる。また１．１倍の遅延値でのテスト結果がＯＫであるが１．３倍及び１．５倍の遅延値でのテスト結果がＮＧであれば、動作環境が更に悪化していることがわかる。
【００３８】
これらの結果を示す複数のテスト結果信号を電圧制御部１に供給することで、図１の実施例の場合と比較して、よりきめ細かな電圧制御が可能となる。また複数のテスト結果信号の１つのみを電圧制御部１に供給するようにしてもよい。この場合には、図１の実施例の場合と同様の電圧制御動作となる。
【００３９】
本実施例では更に、複数の遅延値に対するテスト結果を性能モニタレジスタ３３に定期的にモニタ結果として格納し、そのモニター結果をＣＰＵコア部３が実行するＯＳ等のプログラムで必要に応じて参照するように構成する。この構成により、ある内部動作電圧で動作している状態において温度変化などによりＣＰＵコア部３の動作条件が変動する場合でも、ＣＰＵコア部３の実行するＯＳ等によるソフト的な監視動作により、動作環境が悪化しているか否かを適当なタイミング（例えば一定の間隔）で判定することができる。例えば動作環境が危険なほど悪化している場合には、ソフトウェアによる命令を電圧制御部１に与えて内部動作電圧を上昇させる等の措置をとることができる。
【００４０】
このように本実施例においては、電圧変動後のＣＰＵコア部３が停止している状態での動作確認テスト（ハード的なトリガによるテスト）だけでなく、ＣＰＵコア部３が動作している状態での動作環境監視のためのテスト（ソフト的なトリガによるテスト）が可能となり、より柔軟性のある消費電力低減のための制御が可能となる。
【００４１】
図６は、本発明を適用したシステムＬＳＩの実施例の構成の一例を示す構成図である。この実施例のシステムＬＳＩ２００は、そのチップ内部に、プロセッサ１００、コ・プロセッサ１１０、及び外部デバイス制御部１２０を含む。プロセッサ１００、コ・プロセッサ１１０、及び外部デバイス制御部１２０は、それぞれ回路規模の大きなモジュールであり、それぞれの動作周波数が異なるものとする。またプロセッサ１００、コ・プロセッサ１１０、及び外部デバイス制御部１２０のそれぞれの大規模モジュールに対して、独立に動作電圧及びクロック周波数を制御できるものとする。
【００４２】
このような構成の場合、各大規模モジュール毎に電源制御を行なうことになるので、それぞれのモジュールにおいて動作環境の確認するための性能モニタを設けることが望ましい。図６の例においては、プロセッサ１００、コ・プロセッサ１１０、及び外部デバイス制御部１２０に、性能モニタ回路３０、性能モニタ回路１１１、及び性能モニタ回路１２１がそれぞれ設けられる。これら性能モニタ回路１１１及び１２１の構成は、性能モニタ回路３０と同一でよい。図示するように、各性能モニタ回路からそれぞれのテスト結果が電圧制御部１及び性能モニタレジスタ３３に供給される。なお図示を省略してあるが、各性能モニタ回路は、電圧制御部１及び性能モニタレジスタ３３からそれぞれの制御信号を受け取ることで、その動作が制御される。なお図６では、性能モニタ回路３０がＣＰＵコア部３内部に設けられるものとして示されるが、性能モニタ回路３０の位置はＣＰＵコア部３内部でも外部でもよい。
【００４３】
本実施例では、各モジュール毎に性能モニタ回路を設ける構成としたが、性能モニタ回路ではなくテスト回路２０を設ける構成でもよい。また各モジュール毎に電源ブロックが分かれていない場合であっても、チップ内部の電圧降下が大きいと予想されるような箇所があれば、そのような個所の各々に性能モニタ回路（又はテスト回路）を設けてもよい。
【００４４】
図７は、プロセッサ１００の第３の実施例の構成の一例を示す図である。図７において、図５と同一の構成要素は同一の参照番号で参照し、その説明は省略する。
【００４５】
図７のプロセッサ１００は、図５の構成に加えて割込制御部４０を含むことを特徴とする。またモジュール８には、割込制御部４０の割り込み動作を制御するための割込発生レジスタ３４が設けられる。また外部可変電圧供給源１２が送出するバッテリー・エラー信号が電圧制御部１に供給される。電圧制御部１は、外部可変電圧供給源１２から供給されるバッテリー・エラー信号又は性能モニタ回路３０から供給されるモニタ結果に基づいて動作状態が危険であると判断すると、ＣＰＵコア部３へ直接割り込みを発生するか、或いは割込発生レジスタ３４及び割込制御部４０を介してＣＰＵコア部３に間接的に割り込みを発生する。
【００４６】
なお電圧制御部１が、ＣＰＵコア部３に直接に割り込みを発生させるか又は割込制御部４０を介して間接に割り込みを発生させるかについての動作の選択は、電圧制御レジスタ９の格納値により設定することができる。また電圧制御部１が動作状態が危険であると判断すると自動的に内部動作電圧を上げるように電圧制御動作を実行するか否かの動作の選択についても、電圧制御レジスタ９の格納値により設定することができる。
【００４７】
図８は、本発明による半導体集積回路の動作の別の実施例を示す図である。この図８は、プロセッサ１００のチップのパワーオンリセット時に、正常動作に必要な最低限の電圧に内部動作電圧を設定する場合のタイミングチャートを示す。
【００４８】
時間Ｔ１までの期間は、ＰＬＬ回路１１の安定待ち期間である。この期間は、電圧制御部１に供給する外部からのリセット信号を印加し続けることにより規定するか、或いは電圧制御部１やクロック生成部２にカウンタを設け、ＰＬＬ回路１１が安定するまでの一定期間を計時することにより規定してよい。ＰＬＬ安定待ち時間が終了すると、期間Ｔ１〜Ｔ２においてテスト動作を実行する（図８（ｃ））。図８に示す例では、電圧制御部１への外部からのリセット印加後の初期状態では、外部可変電圧供給源１２の電圧値が０．９Ｖになるように設定されている（図８（ａ））。この電圧値での期間Ｔ１〜Ｔ２におけるテストではテスト結果がＮＧ（図８（ｄ））を示すので、期間Ｔ２〜Ｔ３において内部動作電圧を上昇させ、その後の期間Ｔ３〜Ｔ４において再度テスト動作を実行する。この際、コアクロック信号ＣＯＲＥ＿ＣＬＫ（図８（ｅ））は停止状態であり、また電圧制御部１（又はクロック生成部２）が送出する内部リセット信号（図８（ｆ））はアサート状態のままである。その後同様の動作を繰り返して、期間Ｔ５〜Ｔ６において実行したテストの結果、テスト結果がＯＫとなる。これに応じて、時間Ｔ６からクロックの供給を開始する（図８（ｅ））。なお内部リセット信号（図８（ｆ））がアサートされているので、クロックの供給開始はもっと早いタイミングでも問題ない。期間Ｔ６〜Ｔ７においては、クロックを供給している状態で内部リセット信号を印加し続け、チップ内部の同期リセットの回路を初期化する。時間Ｔ７において、リセット信号を解除して通常動作を開始する。
【００４９】
上記説明においては、内部リセット信号は電圧制御部１又はクロック生成部２から送出されるとしたが、独立したリセット生成回路として別個のモジュールを設けてもよいし、電圧制御部１及びクロック生成部２以外の別のブロックの機能として設けてもよい。
【００５０】
本実施例では、プロセッサのパワーオン・リセット時に、テスト回路によるテスト動作に基づいて最適な（必要最低限の）電圧値に設定してから、内部リセットを解除して動作を開始することができる。この機能があれば、製造バラツキ等によりチップ間で性能バラツキがあったとしても、チップの動作開始時から必要最低限の内部動作電圧に基づいて動作することが可能となり、チップ毎に最適な低消費電力化を図ることができる。
【００５１】
図９は、コアクロック信号ＣＯＲＥ＿ＣＬＫの停止に関する制御動作を説明するための図である。これまで説明した実施例では、電圧変更時にコアクロック信号ＣＯＲＥ＿ＣＬＫの供給を停止する構成としている。しかしながらＣＰＵコア部３がバスアクセス中にコアクロック信号ＣＯＲＥ＿ＣＬＫを停止させても、ＣＰＵコア部３以外のクロックを停止させない場合には、バス上のデータが消失してＣＰＵコア部３がハングアップしてしまう危険がある。
【００５２】
そのためクロック供給停止に先立って、クロック生成部２からＣＰＵコア部３へクロック供給停止を要求するリクエスト信号ＣＴＲＬ＿ＲＥＱを供給する。リクエスト信号ＣＴＲＬ＿ＲＥＱを受け取ったＣＰＵコア部３は、現在転送中のデータのバスアクセスが全て完了してクロック停止が可能な状態になると、それ以降のバスリクエストを抑止した状態にして、アクノリッジ信号ＣＴＲＬ＿ＡＣＫをクロック生成部２に返送する。クロック生成部２では、アクノリッジ信号ＣＴＲＬ＿ＡＣＫを受信してから、コアクロック信号ＣＯＲＥ＿ＣＬＫの供給を停止する。
【００５３】
なおリクエスト信号の送出元はクロック生成部２ではなく電圧制御部１であってもよい。またリクエスト信号の送出先は、必要に応じて、ＣＰＵコア部３ではなくオンチップバス５に接続されたＤＭＡコントローラ等のバスマスタやバスブリッジ６であってよい。
【００５４】
図１０は、本発明の半導体集積回路における電圧制御動作の別の実施例を示すタイミングチャートである。
【００５５】
図１０の電圧制御動作においては、図２の電圧制御動作のように電圧変化中にコアクロック信号ＣＯＲＥ＿ＣＬＫを停止させるのではなく、そのクロック周波数を低くしている。このようにクロック周波数を低くすることで、内部動作電圧が多少不安定になっても、タイミング的に比較的余裕をもって命令を実行することができるために、ＣＰＵコア部３のハングアップ等の以上動作の危険性を少なくすることができる。
【００５６】
図１１は、本発明の半導体集積回路における電圧制御動作の更に別の実施例を示すタイミングチャートである。図１１の電圧制御動作においては、電圧変更中であってもコアクロック信号ＣＯＲＥ＿ＣＬＫ（図１１（ｄ））を停止することはなく、その代わりにＣＰＵコア部３に対するビジー信号ＣＯＲＥ＿ＢＵＳＹを期間Ｔ１〜Ｔ３の間アサートしている。このビジー信号ＣＯＲＥ＿ＢＵＳＹは、例えば電圧制御部１からＣＰＵコア部３に供給すればよい。ＣＰＵコア部３では、ビジー信号ＣＯＲＥ＿ＢＵＳＹがアサートされると、命令実行処理を停止する。このようにビジー信号を用いた構成によっても、内部動作電圧変更中の不安定期間におけるハングアップ等の以上動作を防止することができる。
【００５７】
図１２は、本発明の半導体集積回路における電圧制御動作の更に別の実施例を示すタイミングチャートである。図３に示す動作と比較して図１２に示す動作では、電圧変化後の通常動作のためのクロック周波数が、電圧変化前より低い周波数となっていることが異なる。この場合の内部動作電圧は、低い周波数で正常動作するのに必要な最低限の電圧値に設定されるので、図３の動作と比較して更なる低消費電力化を図ることができる。なおこの場合、期間Ｔ２〜Ｔ３及び期間Ｔ４〜Ｔ５におけるテスト動作は、周波数変化後の低い周波数のクロック信号を用いて実行される。
【００５８】
クロック周波数の変更はクロック生成部２により実行されるが、これはクロック制御レジスタ１０等の設定値に基づいて制御すればよい。また上記説明はクロック周波数を下げる場合についての例であるが、クロック周波数を上げる場合にも、テスト回路によるテスト結果がＯＫを示すようになるまで徐々に電圧を上げていくという制御を実行することができる。
【００５９】
図１３は、本発明による半導体集積回路の更に別の実施例の構成を示す図である。図１３に示す構成は、ＣＰＵコア部３がハングアップしてしまった場合に対処するためのものである。図１３において、図1と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００６０】
図１３において、プロセッサ１００はＣＰＵモニタ回路５０を含む。ＣＰＵモニタ回路５０、ＣＰＵコア部３で命令を実行する際の命令フェッチアドレスを示すプログラムカウンタをモニタする。或いはＣＰＵモニタ回路５０は、オンチップバス５のバスリクエスト信号等をモニタしてもよい。ＣＰＵコア部３のプログラムカウンタの内容或いはオンチップバス５のバスリクエスト信号等が一定期間変化しない場合、ＣＰＵモニタ回路５０は電圧制御部１に対してリセット要求信号を送出する。
【００６１】
一定期間、プログラムカウンタやバスリクエスト信号等が変化しない場合には、ＣＰＵコア部３がハングアップしていると考えられる。このように一旦ＣＰＵコア部３がハングアップしてしまうと、内部動作電圧を電圧制御部１で上昇させたとしても、プログラムが復帰して動作が回復することはない。従って、ハングアップが検出された場合には、ＣＰＵモニタ回路５０から電圧制御部１にリセット要求信号を送出する。リセット要求信号のアサートに応答して、電圧制御部１はプロセッサ１００のチップ内部の各モジュールを強制的にリセットする。この際、電圧制御部１は電圧制御レジスタ９にハングアップ後のリセットであることを示す値を格納する。その後電圧制御部１は、内部動作電圧を安全と考えられる高い電圧値に変更した後、リセットを解除することにより、チップの動作を初期状態から再開させる。
【００６２】
内部動作電圧を制御する場合にはハングアップの危険性が高いので、特に電圧を下降させる場合には、電圧変更前に予め外部ＳＤＲＡＭ等のメモリにチップ内部の必要なレジスタ値を退避させておくことが望ましい。ハングアップ状態からリセット動作で初期化する際には、ブートプログラムにより電圧制御レジスタ９の値を読み出し、ハングアップ後のリセットによるブートであることを認識する。この認識に基づいて、ＣＰＵコア部３は、外部ＳＤＲＡＭ等のメモリ媒体に各種レジスタ値等を読みに行き、これらレジスタ値を復帰させることによって動作を再開することができる。
【００６３】
なおリセット後に動作を再開する前に、本発明のテスト回路を用いて例えば図８に示すような制御動作を実行することにより、ハングアップしない適切な内部動作電圧で動作を再開することができる。
【００６４】
図１４は、図１３のプロセッサ１００の動作の実施例を示すフローチャートである。ステップＳ１において、電圧制御動作に先立って必要なレジスタの内容等を外部メモリ等に退避しておく。ステップＳ２において、例えば内部電源電圧降下等の電圧制御動作を実行する。ステップＳ３において、動作テストを実行する。この動作テストは、上記本発明の実施例で説明したテスト回路によるテスト動作である。ステップＳ４において、テスト結果がＯＫであるか否かを判断する。テスト結果がＯＫでなければ、ステップＳ２に戻り電圧を調整してから再度テスト動作及びテスト結果の判定を実行する。
【００６５】
ステップＳ４においてテスト結果がＯＫの場合、ステップＳ５に進み、通常動作に復帰する。即ち電圧制御動作により変更された後の内部電源電圧でプロセッサ１００の動作を再開する。
【００６６】
ここで電圧制御動作時にＣＰＵのクロックを停止又は減速させないで内部動作電圧を下げた場合や、ＣＰＵのクリティカルパスが正常動作できない電圧であるにも関わらずプロセス・バラツキ等によりテスト回路が動作した場合等には、通常動作を再開してもＣＰＵがハングアップしてしまう可能性がある。そこでステップＳ６において、ハングアップが検出されたか否かを判断する。このハングアップ検出は、図１３において説明したようにＣＰＵモニタ回路５０によって行われる。
【００６７】
ステップＳ６でハングアップが検出された場合には、ステップＳ７に進み、リセット動作を実行する。ステップＳ８では、リセット動作で駆動されたＣＰＵのブートプログラムがリセット要因をハングアップであると認識し、外部メモリ等に退避してあったレジスタ値等を復帰させる処理を実行する。その後、ステップＳ２に戻って移行の処理を実行することで、電圧制御動作、テスト動作、及び通常動作への復帰を行う。
【００６８】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００６９】
なお本発明は以下の内容を含むものである。
（付記１）クロック信号に基づいて動作する内部モジュールと、
該内部モジュールに供給される電源電圧を変更する電圧制御部と、
該クロック信号を該内部モジュールに供給するクロック生成部と、
該クロック信号及び該電源電圧で動作して該内部モジュールにおけるクリティカルパスの遅延を模擬することにより該内部モジュールが該電源電圧で正常に動作するか否かをテストするテスト回路
を含み、該電圧制御部が該電源電圧を変更している間において該クロック生成部は該クロック信号の代わりに別の信号を該内部モジュールに供給することを特徴とする半導体集積回路。
（付記２）該電圧制御部が該電源電圧を変更している間において該クロック生成部は信号レベルが固定された信号を該別の信号として該該内部モジュールに供給することを特徴とする付記１記載の半導体集積回路。
（付記３）該電圧制御部が該電源電圧を変更している間において該クロック生成部は該クロック信号よりも低い周波数のクロック信号を該別の信号として該該内部モジュールに供給することを特徴とする付記１記載の半導体集積回路。
（付記４）該電源電圧の変更を完了した後に該テスト回路によるテスト結果が良好を示す場合に該クロック生成部は該該内部モジュールに対する該クロック信号の供給を再開することを特徴とする付記１記載の半導体集積回路。
（付記５）該電源電圧の変更を完了した後に該テスト回路によるテスト結果が不良を示す場合に、該テスト回路によるテスト結果が良好を示すまで該電圧制御部は該電源電圧を上昇させることを特徴とする付記４記載の半導体集積回路。
（付記６）該テスト回路は、
該該内部モジュールのクリティカルパスの遅延値に相当する遅延を有する遅延パスと、
該遅延パスを伝播した信号を該クロック信号に同期して正常に受け取れるか否かを判断する判定回路
を含み、該判定回路による該遅延パスを伝播した信号を正常に受け取れるか否かの判断に応じて該該内部モジュールが該電源電圧で正常に動作するか否かをテストすることを特徴とする付記１記載の半導体集積回路。
（付記７）該テスト回路は該遅延パスと該判定回路のセットを複数個含み、該複数個のセットの該遅延パスはそれぞれ異なる遅延を有することを特徴とする付記６記載の半導体集積回路。
（付記８）該テスト回路のテスト結果を格納するレジスタを更に含み、該内部モジュールは命令実行動作により該レジスタをアクセス可能であることを特徴とする付記７記載の半導体集積回路。
（付記９）該テスト回路は定期的にテスト動作を実行することを特徴とする付記７記載の半導体集積回路。
（付記１０）該電圧制御部は該テスト回路のテスト結果に応じて該電源電圧を制御することを特徴とする付記９記載の半導体集積回路。
（付記１１）該テスト回路のテスト結果に応じて該内部モジュールへの割り込みを発生する割込制御部を更に含むことを特徴とする付記９記載の半導体集積回路。
（付記１２）それぞれ独立に電源電圧が制御可能な複数の電源ブロックと、
該複数の電源ブロックの各々に設けられるテスト回路
を更に含むことを特徴とする付記１記載の半導体集積回路。
（付記１３）該電圧制御部は該半導体集積回路のパワーオン・リセットの直後に該テスト回路に該テスト動作を実行させながら該電源電圧を制御することを特徴とする付記１記載の半導体集積回路。
（付記１４）該クロック生成部は該電圧制御部が該電源電圧を変更する前後において該クロック信号の周波数を変化させることを特徴とする付記１記載の半導体集積回路。
（付記１５）該内部モジュールはコア回路であることを特徴とする付記１記載の半導体集積回路。
（付記１６）該内部モジュールは外部メモリを含む外部周辺回路と接続するインタフェース回路であることを特徴とする付記１記載の半導体集積回路。
（付記１７）クロック信号に基づいて動作する内部モジュールと、
該内部モジュールに供給される電源電圧を変更する電圧制御部と、
該クロック信号を該内部モジュールに供給するクロック生成部と、
該クロック信号及び該電源電圧で動作して該内部モジュールにおけるクリティカルパスの遅延を模擬することにより該内部モジュールが該電源電圧で正常に動作するか否かをテストするテスト回路
を含み、該電圧制御部が該電源電圧を変更している間において該電圧制御部から該内部モジュールにビジー信号をアサートすることにより該内部モジュールの動作を停止することを特徴とする半導体集積回路。
（付記１８）クロック信号に基づいて動作して命令を実行するコア回路と、
該コア回路に供給される電源電圧を変更する電圧制御部と、
該クロック信号を該コア回路に供給するクロック生成部と、
該コア回路のハングアップ状態を検出するモニタ回路
を含み、該モニタ回路による該ハングアップ状態の検出に応答して該コア回路をリセットすることを特徴とする半導体集積回路。
（付記１９）該クロック信号及び該電源電圧で動作して該コア回路の動作を模擬することにより該コア回路が該電源電圧で正常に動作するか否かをテストするテスト回路を更に含み、該リセット時に該電圧制御部は該テスト回路にテスト動作を実行させながら該電源電圧を制御することを特徴とする付記１８記載の半導体集積回路。
【図面の簡単な説明】
【００７０】
【図１】本発明による半導体集積回路の実施例の構成の一例を示す図である。
【図２】図１の半導体集積回路における電圧制御動作の実施例の一例を示すタイミングチャートである。
【図３】図１の半導体集積回路における電圧制御動作の実施例の別の例を示すタイミングチャートである。
【図４】テスト回路の実施例の構成の一例を示す回路図である。
【図５】プロセッサの第２の実施例の構成の一例を示す図である。
【図６】本発明を適用したシステムＬＳＩの実施例の構成の一例を示す構成図である。
【図７】プロセッサの第３の実施例の構成の一例を示す図である。
【図８】本発明による半導体集積回路の動作の別の実施例を示す図である。
【図９】コアクロック信号の停止に関する制御動作を説明するための図である。
【図１０】本発明の半導体集積回路における電圧制御動作の別の実施例を示すタイミングチャートである。
【図１１】本発明の半導体集積回路における電圧制御動作の更に別の実施例を示すタイミングチャートである。
【図１２】本発明の半導体集積回路における電圧制御動作の更に別の実施例を示すタイミングチャートである。
【図１３】本発明による半導体集積回路の更に別の実施例の構成を示す図である。
【図１４】図１３のプロセッサの動作の実施例を示すフローチャートである。
【符号の説明】
【００７１】
１  電圧制御部
２  クロック生成部
３  ＣＰＵコア部
４  ＳＤＲＡＭ制御部
５  オンチップバス
６  バスブリッジ
７  内部周辺バス
８  モジュール
９  電圧制御レジスタ
１０  クロック制御レジスタ
１１  ＰＬＬ回路
２０  テスト回路
【図１】
2006004338.tif 000003
【図２】
2006004338.tif 000004
【図３】
2006004338.tif 000005
【図４】
2006004338.tif 000006
【図５】
2006004338.tif 000007
【図６】
2006004338.tif 000008
【図７】
2006004338.tif 000009
【図８】
2006004338.tif 000010
【図９】
2006004338.tif 000011
【図１０】
2006004338.tif 000012
【図１１】
2006004338.tif 000013
【図１２】
2006004338.tif 000014
【図１３】
2006004338.tif 000015
【図１４】
2006004338.tif 000016