(57)【特許請求の範囲】
【請求項１】
半導体装置は、
電源電圧の変動より速い速度で電源電圧をサンプリングし、前記電源電圧を符号化して電圧コード値を生成する電圧センサと、
前記電圧コード値に基づいて電圧低下を検出する電圧低下判定回路と、
クロックを生成するクロック制御回路と、
を備え、
前記クロック制御回路は、
前記電圧低下判定回路が電圧低下を検出するときに前記クロックを停止し、前記クロックの停止後に電源変動が安定するまでの期間前記クロックを停止する回路と、
前記クロックの再開時、前記クロックの周波数を段階的に上げて前記クロックの停止前の周波数まで戻す回路と、
を備え、
前記電圧低下判定回路は、前記電圧コード値の履歴から電圧値を先読みし変動値を予測する予測演算回路を備える。
【請求項２】
請求項１の半導体装置において、
前記クロックを停止する期間を設定するレジスタと前記段階的に上げる周波数を設定するレジスタとを備える。
【請求項３】
請求項１の半導体装置において、
前記電圧低下判定回路は、
前記電圧コード値から電圧値を求める演算回路と、
前記演算回路で求めた電圧値とレジスタに設定された所定の電圧値とを比較して電圧低下を判定する回路と、
を備える。
【請求項４】
請求項３の半導体装置において、
前記演算回路は、絶対値演算回路、平均値演算回路、変動値演算回路および変動予測値演算回路のうちの少なくとも２つの演算回路を備え、
複数の前記演算回路のうちどの演算回路の結果用いるかを指定するレジスタを備える。
【請求項５】
請求項１の半導体装置において、
前記予測演算回路は、所定サイクルの間、予測値の微分値が連続して負となる場合に予測値をマスクする回路を備える。
【請求項６】
請求項１の半導体装置において、
前記電圧センサは、
サンプリングクロックのエッジをデータ入力とするＴＤＣと、
前記ＴＤＣの出力を符号化するエンコーダと、
を備える。
【請求項７】
請求項６の半導体装置において、
前記エンコーダは、前記ＴＤＣのビット列のデータが変化する位置のうち最も下位ビット側で電圧コードに符号化するよう構成される。
【請求項８】
請求項６の半導体装置において、
前記サンプリングクロックの周波数は前記電源電圧の変動より２０倍以上速く、前記クロックの周波数の１／Ｎであり、Ｎは自然数である。
【請求項９】
半導体装置は、
電源電圧の変動より２０倍以上速い速度で電源電圧をサンプリングし、前記電源電圧を符号化して電圧コード値を生成する電圧センサと、
前記電圧コード値に基づいて電圧低下を検出する電圧低下判定回路と、
前記電圧低下判定回路が電圧低下を検出するときに、クロックを停止または低速化するクロック制御回路と、
を備え、
前記電圧低下判定回路は、
前記電圧コード値から電圧値を求める演算回路と、
前記演算回路で求めた電圧値とレジスタに設定された所定の電圧値とを比較して電圧低下を判定する回路と、
前記電圧コード値の履歴から電圧値を先読みし変動値を予測する予測演算回路と、
を備え、
前記演算回路は、絶対値演算回路、平均値演算回路、変動値演算回路、変動予測値演算回路のいずれかの演算回路である。
【請求項１０】
請求項９の半導体装置において、
前記電圧センサは、
サンプリングクロックのエッジをデータ入力とするＴＤＣと、
前記ＴＤＣの出力を符号化するエンコーダと、
を備え、
前記サンプリングクロックの周波数は、前記クロックの周波数の１／Ｎであり、Ｎは自然数である。
【請求項１１】
請求項１０の半導体装置において、
前記エンコーダは、前記ＴＤＣのビット列のデータが変化する位置のうち最も下位ビット側で電圧コードに符号化するよう構成される。
【請求項１２】
請求項９の半導体装置において、
前記予測演算回路は、所定サイクルの間、予測値の微分値が連続して負となる場合に予測値をマスクするよう構成される。
【請求項１３】
請求項９の半導体装置において、
前記クロック制御回路は、前記クロックの停止後に電源変動が安定するまでの期間前記クロックを停止または低速化し、前記クロックの再開時前記クロックの周波数を段階的に上げて前記クロックの停止前の周波数まで戻すよう構成される。
【請求項１４】
請求項１３の半導体装置において、
前記クロックを停止または低速化する期間を設定するレジスタと前記段階的に上げる周波数を設定するレジスタとを備える。
【請求項１５】
半導体装置は、
ＣＰＵと、
電源電圧が所定の電圧値よりも低下したときに前記ＣＰＵに供給するクロックを停止し、前記クロックの停止後に所定の期間前記クロックを停止し、前記クロックの再開時の前記クロックの周波数を所定の周波数ずつ段階的に上げて前記クロックの停止前の周波数まで戻すクロック制御回路と、
前記所定の電圧値を格納する第１レジスタと、
前記所定の期間を格納する第２レジスタと、
前記所定の周波数を格納する第３レジスタと、
電源電圧の変動より速い速度で電源電圧をサンプリングし、前記電源電圧を符号化して電圧コード値を生成する電圧センサと、
前記電圧コード値に基づいて電圧低下を検出する電圧低下判定回路と、
を備え、
前記電圧低下判定回路は、前記電圧コード値の履歴から電圧値を先読みし変動値を予測する予測演算回路を備え、
前記ＣＰＵは前記第１乃至第３レジスタにそれぞれの値を設定するよう構成される。
【請求項１６】
請求項１５の半導体装置において、
前記電圧センサは、前記電源電圧を前記クロックの周波数の１／Ｎ（Ｎは自然数）の周波数のクロックでサンプリングし、前記電源電圧を符号化して電圧コード値を生成する構成され、
前記電圧低下判定回路は、
前記電圧コード値から電圧値を求める演算回路と、
前記演算回路で求めた電圧値と前記所定の電圧値とを比較して電圧低下を判定する回路と、
を備える。
【請求項１７】
半導体装置は、
電源電圧の変動より速い速度で電源電圧をサンプリングし、前記電源電圧を符号化して電圧コード値を生成する電圧センサと、
前記電圧コード値に基づいて電圧低下を検出する電圧低下判定回路と、
クロックを生成するクロック制御回路と、
を備え、
前記電圧低下判定回路は、
前記電圧コード値から電圧値を求める演算回路と、
前記演算回路で求めた電圧値とレジスタに設定された所定の電圧値とを比較して電圧低下を判定する回路と、
を備え、
前記演算回路は、絶対値演算回路、平均値演算回路、変動値演算回路および変動予測値演算回路のうちの少なくとも２つの演算回路を備え、
複数の前記演算回路のうちどの演算回路の結果用いるかを指定するレジスタを備え、
前記クロック制御回路は、
前記電圧低下判定回路が電圧低下を検出するときに前記クロックを停止し、前記クロックの停止後に電源変動が安定するまでの期間前記クロックを停止する回路と、
前記クロックの再開時、前記クロックの周波数を段階的に上げて前記クロックの停止前の周波数まで戻す回路と、
を備える。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例えば電圧降下を感知する回路を備える半導体装置に適用可能である。
【背景技術】
【０００２】
電源電圧の変動に応じてクロック周波数を変化させることが提案されている（例えば、特開２０１４−５２９６９号公報）。すなわち、電源電圧が高い方に変動した場合にはクロック周波数を上げて動作速度を速くする。逆に、電源電圧が低い方向に変動した場合にはクロック周波数を下げて動作速度を遅くするという制御が行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−５２９６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、電源電圧の変動に応じてクロック周波数を変化させる方法では、クロック周波数変更に要するレイテンシから急負荷変動時に発生する大きな電圧降下等の高速な電圧変化には追従できない。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００５】
本開示のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
すなわち、半導体装置は、想定する電源電圧変動の周波数より速いサンプリング速度で電源電圧をモニタリングし、システムが誤動作を起こす電圧降下が発生すると判定すると、クロックを停止クロックする。
【発明の効果】
【０００６】
上記の半導体装置によれば、急負荷変動時に発生する大きな電圧降下等の高速な電圧変化には追従することができる。
【図面の簡単な説明】
【０００７】
【図１】比較例１に係る半導体装置の急負荷変動時に発生する電圧降下と設計電圧範囲の関係を説明するための図。
【図２】比較例２に係る半導体装置の電圧および電流のシミュレーション結果を示す図。
【図３】半導体チップを実装したボードにおける電源電圧の振動を説明するための図。
【図４】チップ容量別、周波数と電源インピーダンスの関係を説明するための図。
【図５】ボード容量別、周波数と電源インピーダンスの関係を説明するための図
【図６】実施形態に係る半導体装置の効果を説明するための電圧波形図
【図７】実施例に係る半導体装置の構成を説明するためのブロック図。
【図８】図７の半導体装置の制御フロー図。
【図９】図７の電圧降下判定回路のフロー図。
【図１０】クロック停止・再開時における電圧および電流波形イメージ図。
【図１１】図７の電圧センサの構成を説明するためのブロック図。
【図１２Ａ】図７の電圧センサの高電圧時の動作波形図。
【図１２Ｂ】図７の電圧センサの低電圧時の動作波形図。
【図１３】電圧センサの１回目と２回目以降のサンプリングで結果が異なる場合の動作波形図。
【図１４】電圧センサの１回目と２回目以降のサンプリングで結果が異なる場合の動作波形図。
【図１５】図７の電圧センサの他の構成例を示すブロック図
【図１６】図１５の電圧センサの動作波形図。
【図１７Ａ】図１１のエンコーダの構成を示すブロック図。
【図１７Ｂ】図１１のエンコーダの構成を示すブロック図。
【図１８Ａ】ＭＥＴＡ［６］〜ＭＥＴＡ［７］に‘１０’境界が存在する場合のエンコーダ内部処理イメージ図。
【図１８Ｂ】‘１０’境界が存在しない場合のエンコーダ内部処理イメージ図。
【図１８Ｃ】ＭＥＴＡ［９８］〜ＭＥＴＡ［９９］に‘１０’境界が存在する場合のエンコーダ内部処理イメージ図。
【図１９】絶対値演算のフロー図。
【図２０】平均値演算のフロー図。
【図２１】変動値演算のフロー図。
【図２２】予測演算のフロー図。
【図２３】マスク機能を説明するための電圧波形イメージ図。
【図２４Ａ】マスク機能付き予測演算のフロー図。
【図２４Ｂ】マスク機能付き予測演算のフロー図。
【図２５】クロック制御回路のブロック図。
【図２６Ａ】クロック制御回路の周波数制御イメージ図。
【図２６Ｂ】クロック制御回路の周波数制御イメージ図。
【図２７】クロック制御回路の制御フロー図。
【図２８】実施例２に係る半導体装置のレイアウトイメージ図である。
【図２９Ａ】図２８のQuad CoreＣＰＵとクロック制御回路との間の信号受け渡しイメージを示すブロック図。
【図２９Ｂ】図２８のQuad CoreＣＰＵとクロック制御回路との間の信号受け渡しイメージを示すブロック図。
【図３０】図２８のQuad CoreＣＰＵのクロック停止動作波形図。
【図３１】実施形態に係る半導体装置の構成を示すブロック図。
【発明を実施するための形態】
【０００８】
以下、実施形態および実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【０００９】
まず、本開示に先立って本願発明者らが検討した技術（以下、比較例という。）について説明する。
図１は比較例１に係る半導体装置の急負荷変動時に発生する電圧降下と設計電圧範囲の関係を示すタイミング図である。矢印Ａは急負荷変動により発生する致命的な電圧降下を示している。比較例１では、急負荷変動時に発生する大きな電圧降下を見越したワーストの電圧範囲（破線Ｂ）で設計することにより実動作の保証をする。ワーストの急負荷変動を保証する広い電圧範囲での設計は、最高動作速度を大幅に低下させ、所望の演算性能を実現することを困難とする。また、実動作時に設計で想定した以上の電圧降下が発生した場合は誤動作を引き起こす。
【００１０】
図２は比較例２に係る半導体装置の電圧および電流のシミュレーション結果を示す図である。比較例２では、電圧降下による誤動作防止策としてクロックを停止する。しかし、クロック停止後に即時再開した場合、クロック供給による急激な電流変化によりさらなる電圧降下を引き起こす場合があるため、単純なクロック停止・再開の制御では急負荷変動時の致命的な電圧降下発生の対処にはならない。例えば、図２に示すように、クロック停止（Ａ）から１０ｎｓ後にクロック再開（Ｂ）した場合、電圧が急激に低下し（Ｃ）、クロック停止前よりも悪化する。
【００１１】
図３（Ａ）、３（Ｂ）は半導体チップを実装したボードにおける電源電圧の振動を説明するための図であり、図３（Ａ）は断面図、図３（Ｂ）は等価回路図である。ボード（BOARD）１に電圧調整器（VOLTAGE REGULATOR）２、半導体チップ（CHIP）３が実装されたパッケージ（PACKAGE）４、デカップリングコンデンサ（DECOUPLING CAPACITOR）５、６が搭載されている。なお、半導体チップ３はパッケージ４の端子とボンディングワイヤ７で電気的に接続されている。インダクタＬ１はボード上の電源分配網（POWER DISTRIBUTION NETWORK ON BOARD）、インダクタＬ２はパッケージ上の電源分配網（POWER DISTRIBUTION NETWORK ON PACKAGE）、インダクタＬ３、Ｌ４はデカップリングコンデンサ５、６の等価インダクタンスである。キャパシタＣ１、Ｃ２はデカップリングコンデンサ５、６の容量である。キャパシタＣ３は半導体チップ上のデカップリングコンデンサの容量である。
【００１２】
電源電圧のＡＣ的な振動波形は、半導体チップ３、パッケージ４、ボード１のもつインダクタンス（Ｌ）、キャパシタンス（Ｃ）、抵抗（Ｒ）から、振幅（＝インピーダンス）および共振周波数が決まる。
【００１３】
図４はチップ容量別、周波数と電源インピーダンスの関係を示す図である。図５はボード容量別、周波数と電源インピーダンスの関係を示す図である。
【００１４】
電源インピーダンスは電源電圧波形の振幅を決めるため、電源インピーダンスの抑制は電源電圧ドロップの抑制につながる。図４および図５に示すように、大きい容量ＣＬと小さい容量ＣＳとで電源インピーダンスの周波数特性は異なる。言い換えると電源インピーダンスはオンチップ容量、ボード容量により、異なる周波数特性をもつ。顧客ボードによって搭載容量や寄生容量等（Ｌ,Ｃ,Ｒ成分）が異なると、それぞれの電源インピーダンスの周波数特性も異なることになる。したがって、電源インピーダンスに応じた最適な電源電圧のドロップ判定をする必要がある。
＜実施形態＞
図３１は実施形態に係る半導体装置の構成を示すブロックである。実施形態に係る半導体装置１０は、想定する電源電圧変動の周波数より速いサンプリング速度で電源電圧をモニタリングし、電圧コード値を出力する電圧センサ１１と、電圧コード値からシステムが誤動作を起こす電圧降下が発生すると判定し、クロック停止信号を出力する電圧降下判定回路１２と、クロック停止、再開、周波数変更を制御するクロック制御回路１３と、を備える。
【００１５】
実施形態によれば、設計電圧範囲を超える急負荷変動が発生した場合に起こりうるシステム誤動作の抑制が可能となる。図６は実施形態に係る半導体装置の効果を説明するための電圧波形図である。矢印Ａは稀に発生する電圧降下で、比較例１では設計電圧範囲を破線Ｂよりも上に設定していた。実施形態では設計電圧範囲を破線Ｃよりも上に設定することができる。すなわち、ワースト急負荷変動による致命的な電圧降下を設計電圧範囲から除外し電圧範囲を狭めた設計を可能にすることで、最高動作周波数を向上させ、演算性能を改善することが可能となる。
【実施例１】
【００１６】
図７は実施例に係る半導体装置の構成を示すブロック図である。実施例に係る半導体装置（ＣＨＩＰ）１０は、電圧センサ１１と、電圧降下判定回路１２と、クロック制御回路１３と、被制御領域１４と、を一つの半導体基板上に備える。電圧センサ回路１１は電源電圧が変動する周波数よりも高速なサンプリングによって電源電圧（ＶＤＤ）をモニタし、電圧コード値を出力する。電圧降下判定回路１２はレジスタで設定される計算アルゴリズムおよび閾値に対して電圧コード値から計算された結果が閾値を下回った場合に致命的な電圧降下発生と判定し、クロック停止信号（ＣＫＳＰ）を生成する。反対に、過大な電圧上昇が発生する場合を検出するために、電圧上限を決める閾値を設定し、この閾値を上回る場合にクロック停止信号（ＣＫＳＰ）を生成する構成としてもよい。クロック制御回路１３はクロック信号（ＣＬＫ）を被制御領域１４に供給し、クロック停止信号（ＣＫＳＰ）を受けてクロック信号（ＣＬＫ）を停止させる回路およびレジスタで設定される所定時間待機後に段階的にクロック信号（ＣＬＫ）を再開する。判定モード選択（演算アルゴリズム選択（ＭＤＥ）、判定閾値（ＶＴＨ））およびクロック再開方式選択（クロック停止期間（ＴＳＰ）、クロック再開段階値（ＦＳＴ））は被制御領域１４内のＣＰＵまたは半導体装置１０の外部の装置によって電圧降下判定回路１２やクロック制御回路１３の中のレジスタに設定される。
【００１７】
図８は図７の半導体装置の制御フロー図である。
ステップＳ１：電圧センサ１１は、電源電圧のモニタリングを実施する。電圧のサンプリング速度は想定する電圧変動周波数の２０倍以上が望ましい。例えば電圧が５０ＭＨｚで振動する場合にはサンプリング速度は１ＧＨｚ以上となる。加えてサンプリング速度は電圧変動を起こす要因となるクロック信号（ＣＬＫ）の周波数と同じまたは１／ｎ周波数であることが望ましい。クロック周波数よりも速い周期でサンプリングすると誤動作の要因とならないクロックサイクル内の電圧変動をとらえることとなり、悲観的に電圧降下を判定するためである。
【００１８】
ステップＳ２：電圧センサ１１は、モニタリングした電源電圧を電圧コード値に変換して出力する。
【００１９】
ステップＳ３：電圧降下判定回路１２は、被制御領域１４内のＣＰＵ等がレジスタ値で設定する演算アルゴリズム（ＭＤＥ）に応じて電圧値演算を実施する。電圧降下発生を判定する演算アルゴリズムは、絶対値演算、平均値演算、変動値計算、予測計算など多様な電圧降下発生を判定する演算を可能とする。
【００２０】
図９は電圧降下発生判定フローを示す図である。
ステップＳ３１：センス結果である電圧コード値を取得する。
【００２１】
ステップＳ３２：センス結果履歴保持回路１２１はセンス結果の最新値、１回前の値、２回前の値、・・・、ｍ回前の値を保持する。
【００２２】
ステップＳ３３：演算回路１２２はセンス結果履歴保持回路のセンス結果を用いて、絶対値演算、平均値演算、変動値演算、予測値演算を行い、絶対値、平均値、変動値、予測値を求める。
【００２３】
ステップＳ３４：演算回路１２２は絶対値、平均値、変動値、予測値のいずれかをレジスタ内の判定モード選択値（ＭＤＥ）に基づいて選択し、演算結果とする。なお、判定モード選択値（ＭＤＥ）で選択された演算回路のみを動作させるようにしてもよい。また、演算回路１２２は絶対値、平均値、変動値、予測値の全てを設ける必要はなく、複数もつ場合は少なくとも２つあればよい。さらに、演算回路１２２は複数の演算回路を備える必要はなく、絶対値、平均値、変動値、予測値のうちの少なくとも１つを備えていればよい。
【００２４】
ステップＳ４：電圧降下判定回路１２は、演算結果とレジスタ値で設定する判定閾値（ＶＴＨ）を比較する（演算結果＜閾値）。ＹＥＳの場合はステップＳ５に移り、ＮＯの場合はステップＳ１に戻り電圧モニタを継続する。また、反対に、過大な電圧上昇から半導体装置１０を保護する場合などのために、演算結果＞閾値を比較する構成としてもよい。
【００２５】
ステップＳ５：電圧降下判定回路１２は、クロック停止信号（ＣＫＳＰ）を出力する。
【００２６】
ステップＳ６：クロック制御回路１３は、クロック停止信号（ＣＫＳＰ）に基づいてクロック供給を停止する（ＣＬＫ停止）。
【００２７】
ステップＳ７：クロック制御回路１３では、クロック供給停止後の期間とレジスタ値で設定するクロック停止期間（ＴＳＰ）とを比較する（ＣＬＫ停止期間＞設定値）。ＹＥＳの場合ステップＳ８に移る。ＮＯの場合はステップＳ６に戻る。
【００２８】
ステップＳ８：クロック制御回路１３は、クロック停止信号（ＣＫＳＰ）受信から所定時間のクロック停止後、クロックを再開し、レジスタ値で設定するクロック再開段階値（ＦＳＴ）に基づき、段階的に周波数を上げる（ＣＬＫ再開）。
【００２９】
図１０はクロック停止・再開時における電圧および電流波形イメージ図である。クロック停止および再開は、負荷変動による電圧振動収束時間（Ｔ）分のクロック停止期間制御と段階的なクロック再開により、クロック再開による大きな電圧降下を抑制する。クロックを停止すると負荷変動により電圧が振動する。その電圧振動が収束する（電圧変動が安定する）までの期間、クロックを停止する。クロック停止（ＣＬＫ停止）期間は、例えば２００ｎｓである。なお、破線Ａはクロックを停止しなかった場合の電圧波形である。クロックの再開（ＣＬＫ再開）は段階的にクロック周波数を引き上げる。クロックの再開時、クロック周波数を段階的に上昇させないと、図の点線Ｂで示すように、電流変動による急激な電圧降下が発生する。
【００３０】
電圧変動周波数の２０倍以上の高速サンプリングによる電圧センサを適用することで電圧降下が誤動作を起こす前に電圧降下を判定し、クロックを停止することが可能となる。また、電圧降下のエンベロープから電圧降下を先読みすることが可能となる。
【００３１】
クロック停止時間をレジスタ設定値とすることによってクロック停止時の電圧変動が安定するまでクロックを停止させることが可能となる。
【００３２】
クロック再開時に周波数を段階的に上昇させることでクロック再開時の電流変動による急激な電圧降下による誤動作を防止することが可能となる。
【００３３】
電圧降下判定アルゴリズムおよび判定閾値をレジスタ設定とすることにより、チップ内電源とパッケージ、ＰＣＢ等で決まるインピーダンスに応じた電圧判定を行うことが可能となる。
【００３４】
＜電圧センサ＞
図１１は図７の電圧センサの構成を示すブロック図である。電圧センサ１１は電圧に応じた遅延値を生成する電圧制御遅延回路１１１、Ｄフリップフロップ（D-Flip Flop）を用いたＴＤＣ（Time to Digital Converter）回路１１２、メタステーブル（Metastable）伝播を防止するＭＥＴＡ対策回路１１３、ＴＤＣ結果をエンコードするエンコーダ（ENCODER）１１４、エンコード結果を同期出力する出力信号同期化回路１１５で構成される。
【００３５】
図１２Ａおよび図１２Ｂは電圧センサの動作波形を示す図であり、図１２Ａは高電圧時の波形で、図１２Ｂは低電圧時の波形である。図１２Ａおよび図１２Ｂでは６ビットのＴＤＣ回路１１２の例を示している。
クロック信号（ｓＣＬＫ）のパルスは電圧制御遅延回路１１１に入力され、電源電圧に応じた遅延後に、ＴＤＣ回路１１２に到達する。電圧制御遅延回路１１１は例えばバッファチェーンで構成される。バッファチェーンは、多段接続された複数の単位遅延素子（バッファセル）、例えば複数のインバータで構成される。一般的に、バッファセルは電源電圧により遅延が異なり、電源電圧が高い（高電圧）時より電源電圧が低い（低電圧）時の方が遅延が大きくなる特性をもつ。
ＴＤＣ回路１１２はバッファチェーンとＤフリップフロップで構成される。ＴＤＣ回路１１２内のノードＮ１,Ｎ２, …, Ｎ６は、それぞれのノード間にあるバッファセルＢ１、Ｂ２、…、Ｂ６の遅延分だけ遅れてパルスが伝搬し、遅延値は電源電圧に応じて異なる。高電圧時は低電圧時より遅延が小さいため、高電圧時の方がより早くバッファチェーンの後段にパルスが伝搬する。ノードＮ１,Ｎ２, …, Ｎ６はクロック信号（ｓＣＬＫ）によってサンプリングされ、次のｓＣＬＫの立ち上がりエッジ入力時に‘１’となっているノードの信号が入力されるＤフリップフロップの出力を‘１’に遷移させる。ｓＣＬＫ立ち上がりエッジ入力時、高電圧の場合はノードＮ１,Ｎ２, …, Ｎ４は‘１’、ノードＮ５,Ｎ６は‘０’のため、ＤフリップフロップＦＦ１、ＦＦ２、…、ＦＦ４の出力信号（ＥＤ１,ＥＤ２, …,ＥＤ４）は‘１’に、ＤフリップフロップＦＦ５、ＦＦ６の出力信号（ＥＤ５,ＥＤ６）は‘０’になる。一方で低電圧の場合は、ｓＣＬＫ立ち上がりエッジ入力時、ノードＮ１,Ｎ２は‘１’、ノードＮ３,Ｎ４,…,Ｎ６は‘０’のため、ＥＤ１,ＥＤ２は‘１’に、ＥＤ３,ＥＤ４, …, ＥＤ６は‘０’になる。ＥＤは‘１’の連続値と‘０’の連続値からなり、ＥＤの‘１０’の境界は、電源電圧が高いほど上位ビット側にあらわれ、電源電圧が低いほど下位ビット側にあらわれる。図１２Ａに示すように、高電圧時はＥＤ［１：６］＝１１１１００であるのに対し、図１２Ｂに示すように、低電圧時はＥＤ［１：６］＝１１００００となり、高電圧ほど上位ビット側、低電圧ほど下位ビット側に‘１０’の境界があらわれる。
ＭＥＴＡ対策回路１１３では、ＥＤが遷移した次のｓＣＬＫ立ち上がりエッジでＥＤの値を取り込み、信号（ＭＥＴＡ）として出力する。ＭＥＴＡはＥＤと同じビット数である。エンコーダ１１４ではＭＥＴＡの各ビットの‘１０’の境界位置に基づいて符号化し、電圧コード（ＣＯＤＥ）として出力する。出力信号同期化回路１１５にて電圧コード（ＣＯＤＥ）を受け、ｓＣＬＫに同期して、電圧コード（ＶＣＯＤＥ）を出力する。
【００３６】
図１１のＴＤＣ回路１１２は、クロック信号（ｓＣＬＫ）の周期と、電圧制御遅延回路１１１およびＴＤＣ回路１１２の遅延値との関係によっては、同一電圧でのサンプリングにも関わらず１回目のサンプリングと２回目以降のサンプリングで結果が異なる場合がある。このケースでは、電圧値とサンプリング値が一対一の関係にないため、エンコーダ１１４での符号化が困難になる。
【００３７】
図１３は電圧センサの１回目と２回目以降のサンプリングで結果が異なる場合の動作波形図であり、ＭＳＢ＝１０のＴＤＣ回路１１２にて電源電圧が一定の場合にサンプリングを４回実施する例である。ＣＬＫパルスは電圧制御遅延回路１１１により遅延し、ノードＮ０に到達する。ノードＮ０からＮ１０までは、各ノード間のバッファＢ１〜Ｂ１０により遅延する。１回目のサンプリング（1st SAMPLING）時、ノードＮ１〜Ｎ４は‘１’、ノードＮ５〜Ｎ１０は‘０’となるため、サンプリング結果はＥＤ［１：１０］＝‘１１１１００００００’となる。しかし、クロック信号（ｓＣＬＫ）の周期（Ｔｓｃｌｋ）に対してｓＣＬＫの電圧制御遅延回路１１１の入力からノードＮ１０までの遅延が大きいため、２回目のサンプリング（2nd SAMPLING）時、矢印Ａで示すように、ノードＮ１０に最初のｓＣＬＫパルスの遅延が残った状態になる。このため、ノードＮ１〜Ｎ４だけでなくノードＮ１０も‘１’となるため、サンプリング結果はＥＤ［１：１０］＝‘１１１１０００００１’となり、１回目のサンプリングと異なる結果となる。１回目の電圧コード（ＣＯＤＥ、ＶＣＯＤＥ）は正しいが、２回目の電圧コード（ＣＯＤＥ、ＶＣＯＤＥ）は誤ったものとなる。なお、図１３の例では、３回目以降は２回目と同一のサンプリング結果となる。
また、図１３の例よりもクロック信号（ｓＣＬＫ）の周期（Ｔｓｃｌｋ）に対してｓＣＬＫの電圧制御遅延回路１１１の入力からノードＮ１０までの遅延が非常に大きい場合や、ＭＳＢが大きい場合（例えば１２８ビットの場合)には、２回目以降のサンプリングでＥＤ［１：１２８］＝１１１１…１１１００００…０００１１１１…１１１００００のように‘１０’の境界が複数になるケースが発生する。
【００３８】
図１４は電圧センサの１回目と２回目以降のサンプリングで結果が異なる場合の動作波形図であり、にＭＳＢ＝１８のＴＤＣ回路１１２にて電源電圧が一定の場合にサンプリングを４回実施する例である。この例では、１回目のサンプリング（1st SAMPLING）結果でＥＤ［１：１８］＝１１１１＿００００＿００００＿００００＿００となるのに対し、２回目のサンプリング（2nd SAMPLING）結果ではＥＤ［１：１８］＝１１１１＿００００＿０１１１＿１１１０＿００となる。
【００３９】
図１５は図１１の電圧センサの他の構成例を示すブロック図である。図１６は図１５の電圧センサの動作波形図である。サンプリング毎に結果が異なるケースを避けるため、ｓＣＬＫの電圧制御遅延回路１１１の入力からノードＮ１０までの遅延に対しサンプリングクロック信号の周期を十分に大きくする。例えば、クロック信号（ｓＣＬＫ）と電圧制御遅延回路１１１およびＴＤＣ回路１１２の間に分周回路１１６を配置し、電圧制御遅延回路１１１およびＴＤＣ回路１１２の入力にＣＬＫの１／２の分周信号（ｄｉｖＣＬＫ）を入力する。これにより、サンプリングクロックの信号の周期は２×Ｔｓｃｌｋとなるので、サンプリング毎に結果が異なることによる誤動作を図７の電圧センサよりも回避することができる。ただし、分周信号（ｄｉｖＣＬＫ）を用いたＴＤＣ回路１１２では、サンプリング周波数も分周されることになり、サンプリング速度を低下させる。
【００４０】
＜エンコーダ＞
図１７Ａおよび図１７Ｂは図１１のエンコーダの構成を示すブロック図である。
【００４１】
１回目と２回目以降のサンプリング結果が異なる場合に、必ず１回目のサンプリング結果を優先して符号化する技術をエンコーダに採用する。例えば、ＭＳＢ＝１２８のようにバッファチェーンが長い場合、言い換えると、ＥＤ［１：１２８］＝１１１１…１１１００００…０００１１１１…１１１００００のように‘１０’の境界が複数回あらわれるケースにおいて、下位ビット側の‘１０’境界に応じて符号化する。
【００４２】
エンコーダ１１４は、要素回路ＤＥＴと、要素回路ＦＬＥＮＣと、要素回路ＰＲＲＴＹと、要素回路ＥＮＣＤと、要素回路ＥＲＲと、を備える。
要素回路ＤＥＴは、ＭＥＴＡ対策回路１１３のＬビットの出力信号（ＭＥＴＡ［０］〜ＭＥＴＡ［Ｌ−１］）の各ビットのうち隣り合う２ビットを取得し、下位ビット側が‘１’、上位ビット側が‘０’の場合（‘１ ０’境界がある場合）に出力信号（ＤＥ）を‘１’にする。要素回路ＤＥＴは、下位ビット側が‘０’、上位ビット側が‘０’の場合または下位ビット側が‘０’、上位ビット側が‘１’の場合、下位ビット側が‘１’、上位ビット側が‘１’の場合（‘１０’境界がない場合）に出力信号（ＤＥ）を‘０’にする。
要素回路ＦＬＧＥＮCは要素回路ＦＬＧと要素回路ＥＮＣとを備える。要素回路ＤＥＴの出力信号（ＤＥ）をＮビットずつ束ね、束ねた信号のなかに‘１’がある場合（‘１０’境界がある場合）、要素回路ＦＬＧは‘１’を出力信号（ＦＬ）として出力し、要素回路ＥＮＣは‘１０’境界位置に応じた符号化結果を出力信号（Ｘ）として出力する。束ねた信号のなかに‘１’がない場合（‘１０’境界がない場合）、要素回路ＦＬＧは‘０’を出力信号（ＦＬ）として出力し、要素回路ＥＮＣは何もしない。
要素回路ＰＲＲＴＹは、Ｍ個の要素回路ＦＬＧＥＮＣから出力信号（ＦＬ）を受け、‘１０’境界が存在する束（要素回路ＦＬＧＥＮＣ）を検出する。この際、‘１０’境界が複数存在する場合は、下位ビット側の‘１０’境界を優先する。
要素回路ＥＮＣＤは、要素回路ＰＲＲＴＹが示す束の‘１０’境界位置に応じた符号化結果から、ＭＥＴＡの‘１０’境界位置を把握し、符号化を行う。符号化結果はＣＯＤＥとして出力される。
要素回路ＥＲＲは、サンプリング結果が異常な場合や、‘１０’境界が存在しない（すなわち電圧やクロック周波数が回路動作範囲外である）場合に（ＤＴＥＲＲ）信号を‘１’にする。
【００４３】
図１８Ａは、ＭＥＴＡ［６］〜ＭＥＴＡ［７］に‘１０’境界が存在する場合のエンコーダ内部処理イメージ図である。図１８Ｂは、‘１０’境界が存在しない場合のエンコーダ内部処理イメージ図である。図１８Ｃは、ＭＥＴＡ［９８］〜ＭＥＴＡ［９９］に‘１０’境界が存在する場合のエンコーダ内部処理イメージ図である。一度のサンプリングで図１８A、図１８B、図１８Cが同時に発生する場合、‘１０’境界が２つ存在するため、下位ビット側すなわちＭＥＴＡ［６］〜ＭＥＴＡ［７］の‘１０’境界を優先して符号化する。まず、要素回路ＤＥＴでは、ＭＥＴＡ［６］〜ＭＥＴＡ［７］およびＭＥＴＡ［９８］〜ＭＥＴＡ［９９］が‘１０’境界のため、ＥＤ７、ＥＤ９９が‘１’となる。ＥＤ７は１つめの束として１番目の要素回路ＦＬＧＥＮＣで、ＥＤ９９はM個目の束としてM番目の要素回路FLGENCに入力される。ＥＤ７＝１、ＥＤ９９＝１を受け、１番目の要素回路ＦＬＧＥＮＣは、ＦＬ１に‘１’を、Ｘ１にＩ７に対する符号化結果を出力し、Ｍ番目の要素回路ＦＬＧＥＮＣは、ＦＬＭに‘１’を、ＸＭにＩ３に対する符号化結果をそれぞれ出力する。要素回路ＰＲＲＴＹは、ＦＬ１＝１、ＦＬＭ＝１から、下位ビット側のＦＬ１を優先し、１つめの束に‘１０’境界が存在することを要素回路ＥＮＣＤに伝達する。要素回路ＥＮＣＤでは、要素回路ＰＲＲＴＹからの信号に従い、１つめの束の‘１０’境界に対する符号化結果から、ＭＥＴＡの‘１０’境界位置がＭＥＴＡ［６］〜ＭＥＴＡ［７］であることを把握し、ＭＥＴＡ［６］〜ＭＥＴＡ［７］に対する符号化結果をＣＯＤＥとして出力する。また、この例では‘１０’境界が存在しているため、ＤＴＥＲＲは‘０’となる。
【００４４】
サンプリング毎に結果が異なることによる誤動作を回避することができる。
【００４５】
＜電圧降下判定回路＞
外部から設定した判定モードに応じてクロック停止信号を生成する電圧降下判定回路について説明する。図９に示すように、電圧降下判定回路１２は、電圧センサ１１のｍ回前までのセンス結果履歴を保持するセンス結果履歴値保持回路１２１と、センス結果を演算する演算回路１２２と、レジスタ値で設定するアルゴリズムに応じて演算結果を選択する演算結果選択回路１２３と、演算結果とレジスタ値で設定する閾値を比較し、演算値＜閾値となる場合にＣＬＫ停止信号を生成する判定回路１２４とで構成する。
【００４６】
絶対値演算、平均値演算、変動値演算、予測演算の各演算モードについて、センス結果履歴値保持数＝８を例として説明する。
（絶対値演算）
図１９は絶対値演算のフロー図である。絶対値演算では、センス結果履歴保持回路１２１の最新のセンス値（Absolute  Vn）を出力する。絶対値演算回路１２２ａはレジスタ等で構成することができる。
【００４７】
（平均値演算）
図２０は平均値演算のフロー図である。平均値演算では、センス結果履歴を用い、レジスタ値で設定する移動平均サイクル数（何サイクル分の移動平均をとるか）に基づいて、平均値を算出する。移動平均サイクル数は１／２／４／８サイクル前までの平均値のいずれかを選択する。例えば、移動平均サイクル数＝４とした場合、最新のセンス値（Absolute  Vn）から４回前のセンス（Absolute  Vn-４）までの平均値を算出し出力する。平均値演算回路１２２ｂは加算器と除算器と選択回路とレジスタ等で構成することができる。
【００４８】
（変動値演算）
図２１は変動値演算のフロー図である。変動値演算では、センス結果履歴を用い、レジスタ値で設定する移動平均サイクル数に基づき最新のセンス値（Absolute  Vn）とｍ回前のセンス値（Absolute  Vn-m）の差分（Delta(ｎ)-(n-1), Delta(ｎ)-(n-2), Delta(ｎ)-(n-4), Delta(ｎ)-(n-8)）を算出後、差分の平均値を算出し、変動値として出力する。移動平均サイクル数は１／２／４／８サイクル前までの平均値のいずれかを選択する。差分の平均を取る期間を変えて計算することができる。例えば、移動平均サイクル数＝４とした場合の変動値は、(最新のセンス値（Absolute  Vn）−４回前のセンス値（Absolute  Vn-4）)／４となる。変動値演算回路１２２ｃは減算器（加算器）と除算器と選択回路とレジスタ等で構成することができる。
【００４９】
（予測演算）
図２２は予測演算のフロー図である。予測演算では、前述の変動値計算と同様、レジスタ値で設定する移動平均サイクル数に基づき最新のセンス値（Absolute  Vn）とｍ回前のセンス値（Absolute  Vn-m）の差分（Delta(ｎ)-(n-1), Delta(ｎ)-(n-2), Delta(ｎ)-(n-4), Delta(ｎ)-(n-8)）を算出し、差分の平均値を求め、変動値（Delta(ave)）を算出する。移動平均サイクル数は１／２／４／８サイクル前までの平均値のいずれかを選択する。差分の平均を取る期間を変えて計算することができる。さらに、外部から設定した先読みサイクル数（何サイクル先の先読みをするか）に基づき、変動値と先読みサイクル数の積算値（Delta(ave)＊ｋ）を算出する。先読みサイクル数（ｋ）は１／２／４／８サイクルのいずれかである。積算値（Delta(ave)＊ｋ）と最新のセンス値（Absolute  Vn）を加算し、変動予測値（先読みAbsolute  Vn）として出力する。例えば、移動平均サイクル数＝４、先読みサイクル数＝２とした場合の予測結果は、{(最新のセンス値（Absolute  Vn）−４回前のセンス値（Absolute  Vn-4）)／４}*２＋最新のセンス値（Absolute  Vn）となる。予測演算回路１２２ｄは減算器（加算器）と除算器と選択回路と乗算器と加算器とレジスタ等で構成することができる。
【００５０】
（マスク機能付き予測演算）
図２３はマスク機能を説明するための電圧波形イメージ図である。図２４Ａおよび図２４Ｂはマスク機能付き予測演算のフロー図である。前述した予測演算はあくまで予測のため、絶対値との誤差を有しており、実際の値と予測値が大きく乖離する場合がある。この予測誤差を軽減するために、所定サイクルの間、予測値の微分値が連続して負となる場合に予測値をマスクする。図２３に示すように、実電圧波形Ａと先読み電圧波形Ｂとは大きく乖離している。そこで、予測値グラフの負の傾き（−）が４サイクル継続する場合（図のＣの箇所）に、負の傾きが４サイクル継続したときの値を保持し（破線Ｄ）、予測値が保持値より大きくなると、保持値を破棄し予測値を更新し（Ｅ）、誤差の大きな値をマスクする。
【００５１】
図２４Ａに示すように、演算は、最新のセンス値（Absolute  Vn）と１回前のセンス値（Absolute  Vn-1）の差分(delta)をとり、差分が正か負か判定する。差分が正の場合は変数（minus count）を０にし、負の場合は変数（minus count）をカウントアップする。変数（minus count）が、レジスタ値で設定する負のDelta継続値（m_targ）以下の場合、カウントを継続し、m_targより大きくなる場合、前述の予測演算で算出した予測値（先読みAbsolute  Vn）を保持し、m_flagを１にする。なお、図２３に示す例ではDelta継続値（m_targ）は４である。予測値保持後は、保持値（Vn）と最新の予測値（Vn+1）の大小関係を比較し、保持値≧最新の変動予測値となる場合は保持値を出力、保持値＜最新の変動予測値となる場合は保持値を破棄し、最新の予測値を出力する。m_flagを０に初期化し、予測値の傾きの正負判定に戻る。
【００５２】
図２４Ｂに示すように、マスク機能を使用するか否かをマスク有効化信号（mask_enable）で制御する。マスク有効化信号（mask_enable）が１である場合、m_flagがセレクタに伝達され、m_flagが１のときは保持値（Vn）をマスク付き先読み値として出力し、m_flagが０のときは最新の予測値（Vn+1）をマスク付き先読み値として出力し、変動予測値が求まる。マスク有効化信号（mask_enable）が０である場合、常に最新の予測値（Vn+1）を出力し、マスク機能を無効化する。マスク機能付き予測演算回路１２２ｅは、予測演算回路１２２ｄに加えて、減算器（加算器）とカウンタと比較器とレジスタと選択回路等で構成することができる。
【００５３】
上述したように電圧降下判定回路に多様なアルゴリズムを準備することにより、さまざまな負荷変動時の電圧変動で誤動作を起こす電圧値を判定することが可能となる。また、先読みアルゴリズムにより電圧センスからクロック停止までのレイテンシを隠蔽し、より高精度に危険な電源電圧降下からシステムを保護することが可能となる。マスク機能付き予測演算アルゴリズムにより予想誤差を低減することができる。
【００５４】
＜クロック制御回路＞
図２５はクロック制御回路の構成を示すブロック図である。クロック制御回路１３はＣＬＫ生成回路１３１とＣＬＫ停止期間制御回路１３２と周波数変調回路１３３とを備える。
ＣＬＫ生成回路１３１は、例えばＰＬＬ（Phase Locked Loop）で構成され、クロック信号（ＣＬＫｏ）を生成する。ＣＬＫ停止期間制御回路１３２はクロック停止信号（ＣＫＳＰ）に基づいてクロックを停止またはクロックを低速化する（ＣＬＫ停止）。ここで、クロックの低速化とは、クロックが動作していても電源電圧変動が少ない速度（周波数）であり、好ましくは電源電圧変動がクロックの停止と同程度少なくなる速度である。また、クロック停止期間（ＴＳＰ）に基づいてクロックを停止する期間またはクロックを低速化する期間（ＣＬＫ停止期間）を制御する。クロック停止期間（ＴＳＰ）はＣＬＫ停止期間制御回路１３２内のレジスタに格納される。例えば、ＣＬＫ停止期間制御回路１３２はカウンタでクロック信号（ＣＬＫｏ）を測定し、カウント値とクロック停止期間（ＴＳＰ）とを比較する。ＣＬＫ停止期間制御回路１３２はカウント値が、クロック停止期間（ＴＳＰ）を越える場合にＣＬＫ再開開始信号（ＣＫＳＡ）を発行する。
【００５５】
周波数変調回路１３３は周波数変調値（ＦＳＰ）、ＣＬＫ再開段階値（ＦＳＴ）に基づいてクロック信号（ＣＬＫｏ）の周波数を変調する。ＣＬＫ停止時の周波数は周波数変調値（ＦＳＰ）で設定され、周波数が０ときはクロックが停止する。ＣＬＫ再開開始後の周波数を階段状に上昇させる段階値はＣＬＫ再開段階値（ＦＳＴ）で設定される。周波数変調値（ＦＳＰ）、ＣＬＫ再開段階値（ＦＳＴ）は周波数変調回路１３３内のレジスタに格納される。電圧センサが動作しているときは、ＣＬＫ停止時であっても、クロック信号（ｓＣＬＫ）は出力される。
【００５６】
図２６Ａおよび図２６Ｂは周波数変調を説明するためのイメージ図である。周波数変調回路１３３は、クロック停止信号（ＣＫＳＰ）を受け、ＣＬＫ停止時の周波数変調値に応じた周波数変調を行う。周波数変調値（ＦＳＰ）は、図２６Ａに示すようにＣＬＫ停止（ｆstp＝０）の設定値の他に、図２６Ｂに示すようにＣＬＫ低速化（０＜ｆstp＜fop）の設定値に設定することが可能である。周波数変調回路１３３は、ＣＬＫ再開開始信号（ＣＫＳＡ）を受けクロックを再開し、ＣＬＫ停止前の周波数（ｆop）に戻るまで、ＣＬＫ再開段階値（ＦＳＰ）に応じて段階的に（ステップ時間（Ｔｓｔ）ごとにΔｆずつ）周波数を上げる。ＴｓｔおよびΔｆは一定である必要なく、時間と共に大きくなったり小さくなったりしてもよい。
【００５７】
図２７はクロック制御回路の動作を示すフロー図である。
ステップＳ１３１：クロック制御回路１３のＣＬＫ停止期間制御回路１３２は、ＣＬＫ停止信号（ＣＫＳＰ）を受けて、クロックを停止または低速化する。ＣＬＫ停止時の周波数変調値（ＦＳＰ）に基づいて、クロック停止または指定された低い周波数にする。
【００５８】
ステップ１３２：ＣＬＫ停止期間制御回路１３２は、ＣＬＫ停止後、ＣＬＫ停止時間（クロック信号（ＣＬＫｏ））をカウントする。
【００５９】
ステップ１３３：ＣＬＫ停止期間制御回路１３２は、カウント値がクロック停止期間（ＴＳＰ）の設定値よりも大きいかどうかを判定する。ＹＥＳの場合はステップ１３４に移る。ＮＯの場合はステップＳ１３２に戻る。
【００６０】
ステップ１３４：ＣＬＫ停止期間制御回路１３２は、クロック再開開始信号（ＣＫＳＡ）を生成する。
【００６１】
ステップ１３５：周波数変調回路１３３は、クロック再開開始信号（ＣＫＳＡ）を受け、ＣＬＫ再開段階値（ＦＳＴ）に応じて、段階的にクロック周波数を上げる。
【００６２】
ステップ１３６：周波数変調回路１３３は、クロック周波数がＣＬＫ停止前の周波数（ｆop）よりも小さいかどうか判定する。ＹＥＳの場合はステップ１３５に戻る。ＮＯの場合はステップＳ１３７に移る。
【００６３】
ステップ１３７：クロック周波数変調を停止する。
【実施例２】
【００６４】
図２８は実施例２に係る半導体装置のレイアウトイメージ図である。実施例２に係る半導体装置２０は動作周波数（クロック周波数）が１．５ＧＨｚのQuad Core ＣＰＵ２１とクロック制御回路１３とを備える。Quad Core ＣＰＵ２１は４つのＣＰＵ（ＣＰＵ０〜３）とクロックゲート回路（ＣＧ）２２とを備える。電圧センサ１１、電圧降下判定回路１２はＣＰＵ０〜３のそれぞれのコア内に配置する。クロックゲート回路２２はクロック生成および制御を行うＣＬＫ制御回路１３とクロック分配先(ＣＰＵ０〜３)との間に配置され、クロック停止信号（ＣＫＳＰ）が入力された場合にＣＰＵ０〜３のクロック（ＣＰＵＣＬＫ）を停止する。実施例２の電圧センサ１１、電圧降下判定回路１２、クロック制御回路１３は実施例１と同様な構成である。ただし、実施例２のクロック制御回路１３はクロック停止信号（ＣＫＳＰ）によってクロック信号（ＣＬＫ）を低速化することができるが、ＣＰＵＣＬＫは低速化することができず停止する。
【００６５】
図２９Ａおよび図２９Ｂは図２８のQuad CoreＣＰＵとクロック制御回路との間の信号受け渡しイメージを示すブロック図である。図３０は図２８のQuad Core ＣＰＵのＣＬＫ停止動作波形を示す図である。各ＣＰＵに配置された電圧センサ１１の電圧コード（ＶＣＯＤＥ）を基に、電圧降下判定回路１２が致命的な電圧降下が発生すると判定した場合、クロック停止信号（ＣＫＳＰ）を出力する。ここではクロック停止信号がＨｉｇｈになるとクロック停止制御をアサートすることとする。クロック停止信号（ＣＫＳＰ）がＨｉｇｈ後はＶＣＯＤＥに関わりなくＨｉｇｈを保持する。また４ＣＰＵのうち１つでも電圧降下判定回路１２がクロック停止信号（ＣＫＳＰ）をＨｉｇｈにする場合にクロック停止制御を実行するよう、クロック停止信号（ＣＫＳＰ０〜３）をＯＲ回路２３に入力する。クロック停止信号（ＣＫＳＰ０〜３）のＯＲ結果であるクロック停止信号（ＣＫＳＰ）は、同期化回路であるＤフリップフロップ２４を介してクロックゲート回路２２に、Ｄフリップフロップ２５を介してＣＬＫ制御回路１３に送られる。クロックゲート回路２２はＤフリップフロップ２２１とインバータ２２２とＡＮＤ回路２２３とを備え、クロック停止信号（ＣＫＳＰ）を受けＣＬＫ停止する。クロック制御回路１３ではクロック停止信号（ＣＫＳＰ）受信後、レジスタ値で設定されたクロック停止期間（ＴＳＰ）待機し、クロック停止解除信号（ＣＫＳＡ）を出力する。電圧降下判定回路１２は、クロック停止解除信号（ＣＫＳＡ）を受け、クロック停止信号（ＣＫＳＰ）をＬｏｗにし、ＣＬＫ停止を解除する。ＣＬＫ停止解除後、ＣＬＫ制御回路１３はレジスタ値で設定したＣＬＫ再開段階値（ＦＳＴ）に基づき、クロック周波数を段階的にＣＬＫ停止前の周波数に戻す。
【００６６】
図２９Ａおよび図２９Ｂに示すように、ＴＤＣ１１２の出力からクロックゲート回路２２の出力までの間に５段の同期化回路しかないので、電圧センサ１１が致命的な電圧降下を検知してからクロックゲート回路２２までのレイテンシが５クロックサイクル＋ＣＬＫレイテンシと短いため電圧降下によってシステムが誤動作を起こす前にクロックを停止することが可能である。半導体装置２０では１．５ＧＨｚのクロックを使用しているので、５クロックサイクル＝３．３ｎｓであり、約５ｎｓ以内でクロックを停止することが可能である。
【００６７】
図３０に示すように、ＣＰＵ３の電圧降下判定回路１２が、電圧センサ１１が出力する電圧コード（ＶＣＯＤＥ）値より致命的な電圧降下発生と判定した場合は、クロック停止信号（ＣＫＳＰ３）をＨｉｇｈにする（タイミングＴ３）。それにより、ＯＲ回路２３の出力であるクロック停止信号（ＣＫＳＰ）がＨｉｇｈになり、タイミングＴ４においてＤフリップフロップ２４で取り込まれ、タイミングＴ５においてＤフリップフロップ２２１に取り込まれ、ＣＰＵＣＬＫがＬｏｗに固定されて停止する。また、クロック停止信号（ＣＫＳＰ）はタイミングＴ５においてＤフリップフロップ２５で取り込まれ、クロック制御回路１３Ａに入力される。
【００６８】
クロック制御回路１３はクロック停止期間（ＴＳＰ）クロック信号（ＣＬＫ）を停止し（例えば、Ｌｏｗに固定し）、その後クロック再開開始信号（ＣＫＳＡ）をＨｉｇｈにして、クロック信号（ＣＬＫ）を出力する。クロック再開開始信号（ＣＫＳＡ）はタイミングＳ１で電圧降下判定回路１２に取り込まれ、タイミングＳ３でクロック停止信号（ＣＫＰ３）はＬｏｗになる。これにより、ＯＲ回路２３の出力であるクロック停止信号（ＣＫＳＰ）がＬｏｗになり、タイミングＳ４においてＤフリップフロップ２４で取り込まれ、タイミングＳ５において同期化回路２２１に取り込まれ、クロック信号（ＣＬＫ）がＣＰＵＣＬＫとして出力される。このときのクロック信号（ＣＬＫ）は非常に低い周波数（Ａ）であり、ステップ時間（Ｔｓｔ）後、ＦＳＴで設定されるΔｆだけ高い周波数のクロック信号（ＣＬＫ）が出力され（Ｂ）、さらにステップ時間（Ｔｓｔ）後、クロック再開段階値（ＦＳＴ）に基づいてΔｆだけ高い周波数のクロック信号（ＣＬＫ）が出力される（Ｃ）。以後、同様に段階的にクロック周波数は高くなり、クロック停止前の周波数（ｆｏｐ）まで高くなる。ステップ時間（Ｔｓｔ）は１００ｎｓ以上であることが好ましい。
【００６９】
以上、本発明者によってなされた発明を実施形態および実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
【符号の説明】
【００７０】
１０・・・半導体装置
１１・・・電圧センサ
１１１・・・電圧制御遅延回路
１１２・・・ＴＤＣ
１１３・・・ＭＥＴＡ対策回路
１１４・・・エンコーダ
１１５・・・出力信号同期化回路
１２・・・電圧降下判定回路
１２１・・・センス結果履歴保持回路
１２２・・・演算回路
１２３・・・演算選択回路
１２４・・・判定回路
１３・・・クロック制御回路
１３１・・・ＣＬＫ生成回路
１３２・・・ＣＬＫ停止期間制御回路
１３３・・・周波数変調回路
【図１】
0006533135.tif 000002
【図２】
0006533135.tif 000003
【図３】
0006533135.tif 000004
【図４】
0006533135.tif 000005
【図５】
0006533135.tif 000006
【図６】
0006533135.tif 000007
【図７】
0006533135.tif 000008
【図８】
0006533135.tif 000009
【図９】
0006533135.tif 000010
【図１０】
0006533135.tif 000011
【図１１】
0006533135.tif 000012
【図１２Ａ】
0006533135.tif 000013
【図１２Ｂ】
0006533135.tif 000014
【図１３】
0006533135.tif 000015
【図１４】
0006533135.tif 000016
【図１５】
0006533135.tif 000017
【図１６】
0006533135.tif 000018
【図１７Ａ】
0006533135.tif 000019
【図１７Ｂ】
0006533135.tif 000020
【図１８Ａ】
0006533135.tif 000021
【図１８Ｂ】
0006533135.tif 000022
【図１８Ｃ】
0006533135.tif 000023
【図１９】
0006533135.tif 000024
【図２０】
0006533135.tif 000025
【図２１】
0006533135.tif 000026
【図２２】
0006533135.tif 000027
【図２３】
0006533135.tif 000028
【図２４Ａ】
0006533135.tif 000029
【図２４Ｂ】
0006533135.tif 000030
【図２５】
0006533135.tif 000031
【図２６Ａ】
0006533135.tif 000032
【図２６Ｂ】
0006533135.tif 000033
【図２７】
0006533135.tif 000034
【図２８】
0006533135.tif 000035
【図２９Ａ】
0006533135.tif 000036
【図２９Ｂ】
0006533135.tif 000037
【図３０】
0006533135.tif 000038
【図３１】
0006533135.tif 000039