<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本発明の実施の形態1にかかる半導体装置を示すブロック図である。図1に示す半導体装置は、モニタ部1_1〜1_Nおよび制御部2を備える内部回路3と、電源供給部4と有する(Nは正の整数である。以下、同様。)。なお、図1に示す内部回路3は一つの電源制御単位であり、モニタ部1_1〜1_Nおよび制御部2は電源制御単位毎に設けられている。また、図1では内部回路3と電源供給部4を別に設けているが、内部回路3と電源供給部4を一体として構成してもよい。また、図1では内部回路3に制御部2を設けているが、制御部2を内部回路3と別に設けるようにしてもよい。
モニタ部1_1〜1_Nは、内部回路3の複数の箇所に設けられている。モニタ部1_1〜1_Nは内部回路3の特性をモニタするために設けられている。このため、モニタ部1_1〜1_Nは内部回路3に均等に配置されていることが好ましい。各モニタ部1_1〜1_Nから出力された信号C_1〜C_Nは、制御部2に供給される。
図2は、本実施の形態にかかる半導体装置が備えるモニタ部1_Nの一例を示すブロック図である。モニタ部1_Nは、リングオシレータ11とカウンタ12とを備える。リングオシレータ11は、NAND1と遅延素子13とを有する。遅延素子13としては、例えばバッファ回路や、直列に接続された偶数個のインバータ(NOTゲート)を用いることができる。また、遅延素子13として直列に接続された奇数個のインバータを用いてもよいが、この場合はNAND1をAND回路に替える必要がある。
NAND1の一方の入力には制御部2から出力されたイネーブル信号EN_Nが供給される。NAND1の出力は遅延素子13に供給される。また、遅延素子13の出力はNAND1の他方の入力およびカウンタ12に供給される。カウンタ12には制御部2から出力されたリセット信号が供給される。カウンタ12のカウント値C_Nは、モニタ部1_Nが設けられた場所の特性を示す信号として制御部2に出力される。
リングオシレータ11は、イネーブル信号EN_Nが非活性状態(つまり、ロウレベル"0")の場合は発振しない。一方、リングオシレータ11は、イネーブル信号EN_Nがハイレベル(つまり、活性状態"1")の場合は所定の周期で発振する。よって、リングオシレータ11は、イネーブル信号EN_Nがハイレベルの期間、カウンタ12に対してロウレベルの信号とハイレベルの信号を繰り返して出力する。カウンタ12は、イネーブル信号EN_Nがハイレベルの期間、リングオシレータ11が発振した回数(つまり、リングオシレータ11から出力されたパルス数)を測定する。制御部2は、リングオシレータ11が発振した回数を測定する前に、カウンタ12にリセット信号を出力してカウンタの値をリセットしておく。
このときカウンタ12から出力されるカウント値C_Nは、モニタ部1_Nが配置されている場所の内部回路3の特性を示している。つまり、カウント値C_Nが大きい程、リングオシレータ11の発振周波数が高いため、リングオシレータ11を構成する素子の速度が速いといえる。逆に、カウント値C_Nが小さい程、リングオシレータ11の発振周波数が低いため、リングオシレータ11を構成する素子の速度が遅いといえる。
制御部2は、複数のモニタ部1_1〜1_Nから出力された信号C_1〜C_Nに基づき電源供給部4を制御するための制御信号CTRLを生成し、この制御信号CTRLを電源供給部4に出力する。つまり、制御部2は、複数のモニタ部1_1〜1_Nから出力された信号C_1〜C_Nに基づき算出されたモニタ値と、設定された比較値との比較結果に応じて電源供給部4を制御する。このとき、制御部2は、複数のモニタ部1_1〜1_Nにおける特性のばらつきに応じて比較値を設定することができる。
図3は、本実施の形態にかかる半導体装置が備える制御部の一例を示すブロック図である。図3に示すように、制御部2は、ばらつき値算出部21、モニタ値算出部22、レジスタ23、および比較部24を備える。
モニタ値算出部22は、複数のモニタ部1_1〜1_Nから出力された信号(つまり、カウント値)C_1〜C_Nに基づき、比較部24において比較値COMPと比較するためのモニタ値C_AVEを算出する。例えば、モニタ値C_AVEとして、複数のモニタ部1_1〜1_Nにおけるカウント値C_1〜C_Nの平均値を用いることができる。しかし、モニタ値C_AVEは、カウント値C_1〜C_Nの平均値に限定されることはなく、例えば、カウント値C_1〜C_Nの中から選択された1つの値を用いてもよく、また、これ以外の方法で決定された値を用いることもできる。
図4は、図3に示すモニタ値算出部22の一例を示すブロック図である。図4に示すモニタ値算出部22は、モニタ値C_AVEとしてカウント値C_1〜C_Nの平均値を算出する回路である。なお、図4では、例として、モニタ値算出部22が4つのカウント値C_1〜C_4を用いてモニタ値C_AVEを算出する場合を示している。
図4に示すモニタ値算出部22は、加算器30_1〜30_3と平均化回路31とを備える。加算器30_1は、カウント値C_1とカウント値C_2とを入力し、これらの値を加算した値を加算器30_3に出力する。加算器30_2は、カウント値C_3とカウント値C_4とを入力し、これらの値を加算した値を加算器30_3に出力する。加算器30_3は、加算器30_1から出力された値と加算器30_2から出力された値とを入力し、これらの値を加算した値を平均化回路31に出力する。すなわち、平均化回路31に入力される値は、カウント値C_1〜C_4を全て加算した値である。平均化回路31は、カウント値C_1〜C_4を全て加算した値を、カウント値の数(この場合は、"4")で除算して、除算後の値をモニタ値C_AVEとして出力する。例えば、平均化回路31は、カウント値が2進数で表現されている場合、2ビット右シフトする。
なお、上記例ではカウント値が4つの場合を例として示したが、カウント値が4つ以上の場合であっても同様に回路を構成することができる。つまり、カウント値C_1〜C_Nを全て加算する複数の加算器を設ける。そして、カウント値C_1〜C_Nを全て加算した値を、平均化回路31において、カウント値の数(N)で除算することでモニタ値C_AVEを算出することができる。
図3に示すばらつき値算出部21は、例えば、複数のモニタ部1_1〜1_Nにおけるカウント値C_1〜C_Nの標準偏差(σ)をばらつき値C_VARとして算出することができる。図5は、ばらつき値算出部21の一例を示すブロック図である。図5に示すばらつき値算出部21は、ばらつき値C_VARとしてカウント値C_1〜C_Nの標準偏差(σ)を算出する回路である。なお、図5では、例として、ばらつき値算出部21が4つのカウント値C_1〜C_4を用いてばらつき値C_VARを算出する場合を示している。
図5に示すばらつき値算出部21は、減算器32_1〜32_4、乗算器33_1〜33_4、加算器34_1〜34_3、除算器35、および平方根演算器36を備える。減算器32_1は、カウント値C_1と、カウント値C_1〜C_4の平均値C_AVEとを入力し、これらの値を減算した値(C_1−C_AVE)を乗算器33_1に出力する。ここで、カウント値C_1〜C_4の平均値C_AVEは、例えば図4に示したモニタ値算出部22を用いて求めることができる。以降、減算器32_2〜32_4についても同様の動作をする。
乗算器33_1は、減算器32_1から出力された値(C_1−C_AVE)を入力し、この値を自乗した値(C_1−C_AVE)2を加算器34_1に出力する。乗算器33_2は、減算器32_2から出力された値(C_2−C_AVE)を入力し、この値を自乗した値(C_2−C_AVE)2を加算器34_1に出力する。以降、乗算器33_3〜33_4についても同様の動作をする。
加算器34_1は、乗算器33_1から出力された値(C_1−C_AVE)2と乗算器33_2から出力された値(C_2−C_AVE)2とを入力し、これらの値を加算した値を加算器34_3に出力する。加算器34_2は、乗算器33_3から出力された値(C_3−C_AVE)2と乗算器33_4から出力された値(C_4−C_AVE)2とを入力し、これらの値を加算した値を加算器34_3に出力する。加算器34_3は、加算器34_1から出力された値と加算器34_2から出力された値とを加算した値(つまり、(C_1−C_AVE)2+(C_2−C_AVE)2+(C_3−C_AVE)2+(C_4−C_AVE)2)を除算器35に出力する。
除算器35は、加算器34_3から出力された値をカウント値の数"4"で除算する。例えば、カウント値が2進数で表現されている場合、2ビット右シフトする。除算器35で得られた値は、カウント値C_1〜C_4の分散値(σ2)である。平方根演算器36は、除算器35から出力された分散値(σ2)の平方根を演算することで、標準偏差(σ)を算出する。得られた標準偏差(σ)は、ばらつき値C_VARとして比較部24に出力される。
図3に示すレジスタ23は、複数の比較値A(26_1)、比較値B(26_2)、比較値C(26_3)を格納している。レジスタ23に格納する比較値の数は任意に決定することができる。比較値は、モニタ値C_AVEの上限値に対応した設定値(第1の設定値)とモニタ値C_AVEの下限値に対応した設定値(第2の設定値)を含んでいる。図6は、レジスタ23に格納されている比較値の一例を示している。
図6に示すように、レジスタ23は、例えば比較値Aとして、下限の設定値C_L_set_1と上限の設定値C_H_set_1を格納している。ここで、下限の設定値C_L_set_1は、モニタ値C_AVEがこの値よりも低くならないようにするために設定された値である。また、上限の設定値C_H_set_1は、モニタ値C_AVEがこの値よりも高くならないようにするために設定された値である。すなわち、制御部2は、モニタ値C_AVEが設定値C_L_set_1と設定値C_H_set_1の間となるような制御信号CTRLを生成する。
同様に、レジスタ23は、比較値Bとして、下限の設定値C_L_set_2と上限の設定値C_H_set_2を格納している。また、レジスタ23は、比較値Cとして、下限の設定値C_L_set_3と上限の設定値C_H_set_3を格納している。
そして、レジスタ23は、複数のモニタ部1_1〜1_Nにおける特性のばらつきに応じて比較値COMPを設定する。つまり、レジスタ23は、ばらつき値算出部21から出力されたカウント値C_1〜C_Nのばらつき値C_VARに応じて、比較値COMPを設定する。設定された比較値COMPは、比較部24に出力される。
ここで、例えば、比較値Aの上限の設定値C_H_set_1と下限の設定値C_L_set_1との間隔は、比較値Bの上限の設定値C_H_set_2と下限の設定値C_L_set_2との間隔よりも広く設定されているものとする。また、比較値Bの上限の設定値C_H_set_2と下限の設定値C_L_set_2との間隔は、比較値Cの上限の設定値C_H_set_3と下限の設定値C_L_set_3との間隔よりも広く設定されているものとする。
更に、比較値Aの上限の設定値C_H_set_1は比較値Bの上限の設定値C_H_set_2よりも大きく、比較値Bの上限の設定値C_H_set_2は比較値Cの上限の設定値C_H_set_3よりも大きくなるように設定されているものとする。また、比較値Aの下限の設定値C_L_set_1は比較値Bの下限の設定値C_L_set_2よりも大きく、比較値Bの下限の設定値C_L_set_2は比較値Cの下限の設定値C_L_set_3よりも大きくなるように設定されているものとする。
本実施の形態にかかる半導体装置では、レジスタ23は、ばらつき値算出部21から出力されたカウント値C_1〜C_Nのばらつきが小さくなるにつれて、つまり、ばらつき値(標準偏差)C_VARが小さくなるにつれて、比較値COMPの上限の設定値が小さくなるように、且つ比較値COMPの上限の設定値と下限の設定値の間隔が狭くなるように、比較値COMPを設定している。
図6を用いて説明すると、a>b>c>dの関係がある場合、ばらつき値(標準偏差)C_VARが大きい場合(a>C_VAR≧b)、レジスタ23は比較値Aを比較値COMPとして出力する。また、ばらつき値(標準偏差)C_VARが比較的大きい場合(b>C_VAR≧c)、レジスタ23は比較値Bを比較値COMPとして出力する。また、ばらつき値(標準偏差)C_VARが比較的小さい場合(c>C_VAR≧d)、レジスタ23は比較値Cを比較値COMPとして出力する。
比較部24は、レジスタ23から出力された比較値COMPとモニタ値算出部22から出力されたモニタ値C_AVEとを比較し、モニタ値C_AVEが比較値COMPの上限の設定値と下限の設定値との間となるような制御信号CTRLを生成し、電源供給部4に出力する。制御信号CTRLは、電源供給部4の仕様に対応した信号であり、例えば、符号化された信号などである。
電源供給部4は、制御部2の比較部24から出力された制御信号CTRLに応じて、内部回路3に供給する電源電圧Vddを制御する。具体的には、モニタ値C_AVEが比較値COMPの上限の設定値よりも大きくなった場合は、モニタ部における動作周波数が高いので、制御部2は供給される電源電圧Vddが低くなるように電源供給部4を制御する。逆に、モニタ値C_AVEが比較値COMPの下限の設定値よりも小さくなった場合は、モニタ部における動作周波数が低いので、制御部2は供給される電源電圧Vddが高くなるように電源供給部4を制御する。
図7、図8は本実施の形態にかかる発明の効果を説明するための図である。まず、図7を用いて、本実施の形態にかかる発明の効果を説明する。内部回路3に形成された所定の回路において、所定の性能を実現するための電圧の設計値をV_nomとする。このとき、内部回路3の特性(チップ性能)にはばらつきがあるため、図7の上図に示すように、内部回路3に形成された所定の回路において、所定の性能を実現するための電圧値はV_min_s(最小値)からV_max_s(最大値)となる。つまり、所定の性能を実現するための電圧値は、V_nomを中心として分散する。このときの標準偏差をσ1とする。
このとき、電源供給部4は、内部回路3に形成された所定の回路において、所定の性能を実現するために、V_min_s〜V_max_sの電源電圧Vddを供給する必要がある。内部回路3の特性のばらつきが大きい場合(図7の上図)は、モニタ値と内部回路3の性能にずれが生じることから電源電圧にマージンを与える必要があり、電圧の最大値V_max_sを大きくする必要がある。
一方、図7の下図に示すように、内部回路3の特性(チップ性能)のばらつきが小さい場合は、所定の性能を実現するための電圧値V_min_s〜V_max_s'の標準偏差は小さくなる(このときの標準偏差をσ2とする)。このとき、図7に示すように、所定の性能を実現するための最低電圧V_min_sは、標準偏差がσ1の場合とσ2の場合とで同一とすることができる。よって、図7の下図に示したように、標準偏差がσ2の場合は、内部回路3の特性のばらつきが小さいので、電圧の最大値V_max_s'は、標準偏差がσ1の場合の電圧の最大値V_max_sよりも、符号52で示す分だけ小さくすることができる。
換言すると、内部回路3の特性のばらつきが小さい場合(標準偏差σ2)は、設定電圧の最大値をV_max_s'とすることができる。一方、内部回路3の特性のばらつきが大きい場合(標準偏差σ1)は、設定電圧の最大値を、ばらつきが小さい場合の最大値V_max_s'に符号52に示すマージンを設けた電圧V_max_sとする必要がある。
従来、モニタ値C_AVEと比較される比較値は固定値であったため、内部回路3の特性のばらつきが大きい場合を想定して、所定の性能を実現するための電圧の最大値V_maxsを高めに設定する必要があった。このため、本来であれば、内部回路3の特性のばらつきが小さく、所定の性能を実現するための電圧の最大値を低めに設定することができる場合であっても、電圧の最大値が高めに設定されるため、半導体装置の消費電力が増加するという問題があった。
これに対して本実施の形態にかかる半導体装置では、ばらつき値算出部21において、複数のモニタ部1_1〜1_Nにおけるカウント値C_1〜C_Nのばらつき値C_VARを算出し、このばらつき値C_VARに応じて比較部24で用いる比較値COMPを決定している。つまり、内部回路3の特性のばらつきが大きい場合は、比較値COMPとして、比較値の上限の設定値が大きく、且つ比較値の上限値と下限値の間隔が広い比較値を用いることができる(図7の上図参照)。一方、内部回路3の特性のばらつきが小さい場合は、比較値COMPとして、比較値の上限の設定値が小さく、且つ比較値の上限値と下限値の間隔が狭い比較値を用いることができる(図7の下図参照)。
このように、本実施の形態にかかる半導体装置では、内部回路3の特性のばらつきに応じて比較部24で用いる比較値COMPを変更することができるので、内部回路3の特性のばらつきに応じて最適な比較値を用いることができる。よって、比較値に無駄なマージンを設ける必要がないため、半導体装置の消費電力を低減することができる。
図8は、本実施の形態にかかる発明の効果を説明するための図であり、図7における電圧が図8に示す速度(カウント値)に対応している。図8に示すように、内部回路3の特性のばらつきが大きい場合は、比較値COMPとして比較値A(図6参照)を用いている。つまり、比較値COMPとして、上限の設定値がC_H_set_1、下限の設定値がC_L_set_1の比較値を用いている。
制御部2は、モニタ値C_AVEが上限の設定値C_H_set_1よりも大きくなった場合は、電源供給部4から供給される電源電圧Vddを低くし、モニタ値C_AVEが下限の設定値C_L_set_1よりも小さくなった場合は、電源供給部4から供給される電源電圧Vddを高くする。このような制御により、モニタ値C_AVEを下限の設定値C_L_set_1と上限の設定値C_H_set_1との間に収めることができる。
図8の上図に示す場合は内部回路3の特性のばらつきが大きいので、比較値COMPとして、上限の設定値C_H_set_1が大きく、且つ比較値の上限の設定値C_H_set_1と下限の設定値C_L_set_1の間隔53が広い比較値を用いている。一方、図8の下図に示す場合は内部回路3の特性のばらつきが小さいので、比較値COMPとして、上限の設定値C_H_set_2が設定値C_H_set_1よりも小さく、且つ比較値の上限の設定値C_H_set_2と下限の設定値C_L_set_2の間隔54が狭い比較値を用いることができる。
例えば、内部回路3の特性のばらつきが大きい場合(図8の上図)は、モニタ値C_AVEが符号55の位置となるように制御する必要がある。しかし、内部回路3の特性のばらつきが小さい場合(図8の下図)は、比較値COMPの上限の設定値C_H_set_2を低く設定することができるので、モニタ値C_AVEがより小さな値となるように、電源電圧Vddを制御することができる(つまり、電源電圧Vddを低くすることができる)。
以上で説明したように、本実施の形態にかかる半導体装置では、内部回路3の特性のばらつきに応じて比較部24で用いる比較値COMPを変更することができるので、内部回路3の特性のばらつきに応じて最適な比較値を用いることができる。よって、比較値に無駄なマージンを設ける必要がないため、半導体装置の消費電力を低減することができる。
したがって、本実施の形態にかかる発明により、消費電力を低減することが可能な半導体装置および電源供給方法を提供することができる。
<実施の形態2>
次に、本発明の実施の形態2について説明する。実施の形態2にかかる半導体装置では、ばらつき値算出部の構成が実施の形態1で説明したばらつき値算出部21と異なる。これ以外は実施の形態1と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
図9は、本実施の形態にかかる半導体装置が備えるばらつき値算出部21'を示すブロック図である。図9に示すばらつき値算出部21'は、最大値算出部37、最小値算出部38、および減算器39を有する。図9では、例として、ばらつき値算出部21'が4つのカウント値C_1〜C_4を用いてばらつき値C_VARを算出する場合を示している。
最大値算出部37は、カウント値C_1〜C_4の中から最大値を抽出し、この最大値C_MAXを減算器39に出力する。図11は、最大値算出部37の一例を示すブロック図である。最大値算出部37は、比較器41_1〜41_3で構成されている。比較器41_1は、カウント値C_1、C_2を入力し、これらのうちカウント値が大きい方のカウント値を比較器41_3に出力する。比較器41_2は、カウント値C_3、C_4を入力し、これらのうちカウント値が大きい方のカウント値を比較器41_3に出力する。比較器41_3は、比較器41_1から出力されたカウント値と比較器41_2から出力されたカウント値のうち、大きい方のカウント値を最大値C_MAXとして出力する。
図13は、比較器41_1の一例を示すブロック図である(比較器41_2、比較器41_2についても同様の構成である)。比較器41_1は、減算器43と判定部44とを有する。減算器43は、カウント値C_1とカウント値C_2とを入力し、カウント値C_1からカウント値C_2を減算した値を判定部44に出力する。判定部44は、入力された値が正の値である場合はカウント値C_1を出力し、入力された値が負の値である場合はカウント値C_2を出力する。カウント値が2ビットで表現されている場合、判定部44は、入力された値のMSB(Most Significant Bit)が"0"の場合はカウント値C_1を出力し、入力された値のMSBが"1"の場合はカウント値C_2を出力する。このとき、負の整数を2の補数で表すとMSBは"1"となる。
図9に示す最小値算出部38は、カウント値C_1〜C_4の中から最小値を抽出し、この最小値C_MINを減算器39に出力する。図12は、最小値算出部38の一例を示すブロック図である。最小値算出部38は、比較器42_1〜42_3で構成されている。比較器42_1は、カウント値C_1、C_2を入力し、これらのうちカウント値が小さい方のカウント値を比較器42_3に出力する。比較器42_2は、カウント値C_3、C_4を入力し、これらのうちカウント値が小さい方のカウント値を比較器42_3に出力する。比較器42_3は、比較器42_1から出力されたカウント値と比較器42_2から出力されたカウント値のうち、小さい方のカウント値を最小値C_MINとして出力する。
図14は、比較器42_1の一例を示すブロック図である(比較器42_2、比較器42_2についても同様の構成である)。比較器42_1は、減算器45と判定部46とを有する。減算器45は、カウント値C_1とカウント値C_2とを入力し、カウント値C_1からカウント値C_2を減算した値を判定部46に出力する。判定部46は、入力された値が正の値である場合はカウント値C_2を出力し、入力された値が負の値である場合はカウント値C_1を出力する。カウント値が2ビットで表現されている場合、判定部46は、入力された値のMSB(Most Significant Bit)が"0"の場合はカウント値C_2を出力し、入力された値のMSBが"1"の場合はカウント値C_1を出力する。このとき、負の整数を2の補数で表すとMSBは"1"となる。
図9に示す減算器39は、最大値算出部37から出力された最大値C_MAXと最小値算出部38から出力された最小値C_MINとを入力し、最大値C_MAXから最小値C_MINを減算した値をばらつき値C_VARとして出力する。つまり、本実施の形態では、カウント値の最大値C_MAXとカウント値の最小値C_MINの差が大きい程、ばらつき値C_VARが大きくなる。一方、カウント値の最大値C_MAXとカウント値の最小値C_MINの差が小さい程、ばらつき値C_VARが小さくなる。
なお、本実施の形態では、図10に示すばらつき値算出部21''を用いてもよい。図10に示すばらつき値算出部21''は、図9に示したばらつき値算出部21'に除算器40を加えている。つまり、本実施の形態では、カウント値の最大値C_MAXからカウント値の最小値C_MINを引いた値を、更にカウント値の平均値で除算した値((C_MAX−C_MIN)/C_AVE)をばらつき値として用いてもよい。
実施の形態1で説明したばらつき値算出部21では、ばらつき値として標準偏差を求めていた。このとき、自乗や平方根の演算を実施する必要があるため、ばらつき値算出部21の構成が比較的複雑となっていた(図5参照)。よって、カウント値C_1〜C_Nからばらつき値C_VARを算出する際の演算量が多くなり、演算に時間がかかる場合があった。
これに対して本実施の形態では、図9〜図14に示すように、比較的簡単な構成でばらつき値算出部21'を構成することができる。よって、カウント値C_1〜C_Nからばらつき値C_VARを算出する際の演算量を少なくすることができ、ばらつき値C_VARの算出にかかる時間を短縮することができる。
<実施の形態3>
次に、本発明の実施の形態3について説明する。実施の形態3にかかる半導体装置では、モニタ部の構成が実施の形態1で説明したモニタ部1_N(図2参照)と異なる。これ以外は実施の形態1と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
図15は、本実施の形態にかかる半導体装置が備えるモニタ部60を示すブロック図である。図15に示すモニタ部60は、図1に示すモニタ部1_1〜1_Nの各々に対応している。すなわち、複数のモニタ部60が、内部回路3の複数の箇所に設けられている。図15に示すモニタ部60は、モニタ素子61(第1のモニタ素子)とモニタ素子62(第2のモニタ素子)とを有する。ここで、モニタ素子61、62は同一段数のリングオシレータを備える。
モニタ素子61は、NAND11と、複数のインバータINV11_1〜INV11_Nと、カウンタ63とを備える。ここで、NAND11および複数のインバータINV11_1〜INV11_Nはリングオシレータを構成し、偶数個のインバータINV11_1〜INV11_Nが直列に接続されている。
NAND11の一方の入力には制御部2から出力されたイネーブル信号EN_aが供給される。また、インバータINV11_Nの出力は、NAND11の他方の入力およびカウンタ63に出力される。カウンタ63には制御部2から出力されたリセット信号が供給される。カウンタ63のカウント値C_N_aは、モニタ部60が設けられた場所の特性を示す信号として制御部2に出力される。
モニタ素子62は、NAND12と、複数のインバータINV12_1〜INV12_Nと、カウンタ64とを備える。ここで、NAND12および複数のインバータINV12_1〜INV12_Nはリングオシレータを構成し、偶数個のインバータINV12_1〜INV12_Nが直列に接続されている。
NAND12の一方の入力には制御部2から出力されたイネーブル信号EN_bが供給される。また、インバータINV12_Nの出力は、NAND12の他方の入力およびカウンタ64に出力される。カウンタ64には制御部2から出力されたリセット信号が供給される。カウンタ64のカウント値C_N_bは、モニタ部60が設けられた場所の特性を示す信号として制御部2に出力される。
図16は、モニタ部60の動作を説明するためのタイミングチャートであり、モニタ素子61に供給されるイネーブル信号EN_aと、モニタ素子62に供給されるイネーブル信号EN_bの波形を示している。図16に示すように、モニタ素子61に供給されるイネーブル信号EN_aは、内部回路3の特性をモニタするモニタ期間にのみハイレベルとなる。つまり、モニタ素子61は、実施の形態1で説明したモニタ部1_Nと同様の動作をする。
これに対して、モニタ素子62に供給されるイネーブル信号EN_bは、モニタ期間以外においてもハイレベルとなっている。イネーブル信号EN_bがハイレベルとなっている期間、NAND12および複数のインバータINV12_1〜INV12_Nで構成されるリングオシレータは発振する。モニタ素子62が備えるリングオシレータは、モニタ素子61が備えるリングオシレータよりも発振している時間が長いため、モニタ素子62はモニタ素子61よりも早く劣化する。
このとき、イネーブル信号EN_bがハイレベルとなる期間を、内部回路3が備える回路の動作期間と近似させることで、内部回路3が備える回路の劣化状態を反映したカウント値C_N_bを出力することができる。
すなわち、内部回路3が備える回路の経時劣化が進んでいない場合は、同一のモニタ期間において、モニタ素子61のカウント値C_N_aとモニタ素子62のカウント値C_N_bはほぼ同一の値となる。一方、内部回路3が備える回路の経時劣化が進んでいる場合は、内部回路3が備える回路の劣化状態を反映したモニタ素子62のカウント値C_N_bと、モニタ期間のみ動作をするモニタ素子61のカウント値C_N_aとで、差異が生じる。よって、制御部2は、モニタ素子61のカウント値C_N_aとモニタ素子62のカウント値C_N_bとで差異が生じた場合は、モニタ素子62のカウント値C_N_bを用いることで、内部回路3が備える回路の経年劣化を反映した制御をすることができる。
例えば、内部回路3が備える回路の経時劣化によって回路素子の動作速度が遅くなった場合、モニタ素子62のカウント値C_N_bはモニタ素子61のカウント値C_N_aよりも小さくなる。この場合、制御部2は、モニタ素子62のカウント値C_N_bを用いることで、内部回路3に供給する電源電圧Vddを適切に制御することができる。換言すると、制御部2は、モニタ素子61に対してのモニタ素子62の遅延量が所定の値以上大きくなった場合、モニタ素子62のモニタ結果であるカウント値C_N_bを用いて比較値を設定することができる。
以上で説明したように、本実施の形態にかかる半導体装置では、モニタ部60に、モニタ期間のみ動作するモニタ素子61と、モニタ期間以外にも動作するモニタ素子62とを設けている。そして、モニタ素子61のカウント値C_N_aとモニタ素子62のカウント値C_N_bとで差異が生じた場合、モニタ素子62のカウント値C_N_bを用いることで、内部回路3が備える回路の経年劣化を反映した制御をすることができる。
<実施の形態4>
次に、本発明の実施の形態4について説明する。実施の形態4にかかる半導体装置では、モニタ部の構成が実施の形態1で説明したモニタ部1_N(図2参照)と異なる。これ以外は実施の形態1と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
図17は、本実施の形態にかかる半導体装置が備えるモニタ部70を示すブロック図である。図17に示すモニタ部70は、図1に示すモニタ部1_1〜1_Nの各々に対応している。すなわち、複数のモニタ部70が、内部回路3の複数の箇所に設けられている。図15に示すモニタ部70は、モニタ素子71(第3のモニタ素子)とモニタ素子72(第4のモニタ素子)とを有する。
モニタ素子71は、NAND21と、複数のインバータINV21_1〜INV21_Nと、カウンタ73とを備える。ここで、NAND21および複数のインバータINV21_1〜INV21_Nはリングオシレータを構成し、偶数個のインバータINV21_1〜INV21_Nが直列に接続されている。
NAND21の一方の入力には制御部2から出力されたイネーブル信号EN_cが供給される。また、インバータINV21_Nの出力は、NAND21の他方の入力およびカウンタ73に出力される。カウンタ73には制御部2から出力されたリセット信号が供給される。カウンタ73のカウント値C_N_cは、モニタ部70が設けられた場所の特性を示す信号として制御部2に出力される。
モニタ素子72は、NAND22と、複数のインバータINV22_1〜INV22_Mと、カウンタ74とを備える。ここで、NAND22および複数のインバータINV22_1〜INV22_Mはリングオシレータを構成し、偶数個のインバータINV22_1〜INV22_Mが直列に接続されている。なお、MはNよりも大きい整数である。
NAND22の一方の入力には制御部2から出力されたイネーブル信号EN_dが供給される。また、インバータINV22_Mの出力は、NAND22の他方の入力およびカウンタ74に出力される。カウンタ74には制御部2から出力されたリセット信号が供給される。カウンタ74のカウント値C_N_dは、モニタ部70が設けられた場所の特性を示す信号として制御部2に出力される。
本実施の形態では、モニタ素子71に供給されるイネーブル信号EN_cとモニタ素子72に供給されるイネーブル信号EN_dは、同一の信号である。すなわち、モニタ素子71とモニタ素子72とが動作をするモニタ期間は同一の期間となる。しかし、モニタ素子71が備えるインバータの個数とモニタ素子72が備えるインバータの個数は異なるので、モニタ素子71から出力されるカウント値C_N_cとモニタ素子72から出力されるカウント値C_N_dは異なる。
ここで、内部回路3のばらつきの種類には、主に、システマティックばらつきとランダムばらつきがある。システマティックばらつきは比較的広い範囲におけるばらつきであり、例えば内部回路3の複数の箇所に設けられたモニタ部を用いて検出することができる。一方、ランダムばらつきは比較的狭い範囲におけるばらつきである。
本実施の形態では、モニタ部70に複数のモニタ素子71、72を設けることで、ランダムばらつきを検出することを可能にしている。すなわち、図17に示すように、本実施の形態では、インバータの個数が異なるモニタ素子を2つ設けている。具体的には、モニタ素子72のインバータINV22_1〜INV22_Mの個数を、モニタ素子71のインバータINV21_1〜INV21_Nの個数よりも多くしている。そして、モニタ素子72のカウント値C_N_dにインバータの段数比(N/M)を乗算した値と、モニタ素子71のカウント値C_N_cと、を比較することで、モニタ部におけるランダムばらつきを検出することができる。
つまり、インバータの段数が多いモニタ素子72のカウント値C_N_dは、モニタ素子71が形成されているゲート数よりも多数のゲートのばらつきを反映したカウント値であるため、モニタ素子71のカウント値C_N_cよりも、ランダムばらつきの影響が少ない(ランダムばらつきはゲート段数の平方根の逆数に比例する)。よって、モニタ素子72のカウント値C_N_dにインバータの段数比(N/M)を乗算した値と、モニタ素子71のカウント値C_N_cとのばらつきの差が小さい場合は、ランダムばらつきが小さいと判断することができる。逆に、モニタ素子72のカウント値C_N_dにインバータの段数比(N/M)を乗算した値と、モニタ素子71のカウント値C_N_cとのばらつきの差が大きい場合は、ランダムばらつきが大きいと判断することができる。
制御部2は、モニタ部におけるランダムばらつきも考慮して、比較部で使用される比較値COMPを決定することができる。つまり、複数のモニタ部のカウント値から得られたシステマティックばらつきと、各モニタ部の2つのモニタ素子から得られたランダムばらつきとを考慮して、比較部24で使用される比較値COMPを決定することができる。換言すると、制御部2は、モニタ素子71のモニタ結果とモニタ素子72のモニタ結果に基づき、モニタ部70における特性のばらつきを検出し、当該ばらつきに応じて比較値COMPを設定することができる。
本実施の形態にかかる半導体装置では、システマティックばらつきに加えて、ランダムばらつきも考慮して、比較部24で使用される比較値COMPを決定することができるので、内部回路に供給される電源電圧Vddをより適切に制御することができる。
<実施の形態5>
次に、本発明の実施の形態5について説明する。実施の形態5にかかる半導体装置では、制御部の構成が実施の形態1で説明した制御部3(図3参照)と異なる。これ以外は実施の形態1と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
図18は、本実施の形態にかかる半導体装置が備える制御部80の一例を示すブロック図である。図18に示すように、制御部80は、比較値生成部81、モニタ値算出部22、レジスタ83、セレクタ84、および比較部24を備える。
比較値生成部81は、複数のモニタ部1_1〜1_Nにおけるカウント値C_1〜C_Nを入力し、これらのばらつき値(例えば、標準偏差(σ))に応じて、比較値を生成する。また、比較値生成部81には、内部回路に電源が供給されたタイミングを示すパワーオン信号PWR_ONが供給される。比較値生成部81は、例えば、パワーオン信号PWR_ONが入力されたタイミングで比較値を生成する。パワーオン信号PWR_ONは、例えば端子を介して外部から供給される。
比較値生成部81で生成される比較値は、基本的には実施の形態1にかかる比較値A、比較値B、比較値C、・・・、と同様である。このとき、比較値生成部81は、内部回路の経年劣化を考慮して比較値を生成してもよく(実施の形態3参照)、また、システマティックばらつきに加えて、ランダムばらつきも考慮して比較値を生成してもよい(実施の形態4参照)。比較値生成部81で生成された比較値はセレクタ84に出力される。
レジスタ83には比較値(固定値)が格納されている。レジスタ83に格納されている比較値は、汎用的に使用できる比較値である。例えば、内部回路3の特性のばらつきが大きい場合を想定して、所定の性能を実現するための電圧の最大値V_maxsを高めに設定してある比較値である(図7の上図、図8の上図参照)。つまり、レジスタ83に格納されている比較値は、内部回路3の特性のばらつきが大きい場合を想定して、マージンを多めに確保している比較値である。レジスタ83に格納されている比較値(固定値)は、セレクタ84に出力される。
セレクタ84は、選択信号SELに応じて、比較値生成部81で生成された比較値(可変値)またはレジスタ83に格納されている比較値(固定値)を選択し、選択された比較値COMPを比較部24に出力する。選択信号SELは、例えば端子を介して外部から供給されてもよく、また設定レジスタ(不図示)から供給されるようにしてもよい。
図19A、図19Bは、本実施の形態にかかる制御部80の動作を説明するためのタイミングチャートである。図19Aに示すタイミングチャートでは、選択信号SELがハイレベルになった後に、パワーオン信号PWR_ONがハイレベルになる場合の動作を示している。また、図19Bに示すタイミングチャートでは、選択信号SELがハイレベルになる前に、パワーオン信号PWR_ONがハイレベルになる場合の動作を示している。
まず、図19Aに示すタイミングチャートについて説明する。初期状態において、選択信号SELおよびパワーオン信号PWR_ONはロウレベルとなっている。選択信号SELがロウレベルであるので、セレクタ84はレジスタ83に格納されている比較値(固定値)を選択している。タイミングt1において選択信号SELがロウレベルからハイレベルに遷移すると、セレクタ84は、比較値生成部81で生成された比較値(可変値)を選択する。このとき、セレクタ84から比較部24に比較値COMP1(比較値生成部81で更新される前の比較値)が出力される。その後、タイミングt2においてパワーオン信号PWR_ONがロウレベルからハイレベルに遷移すると、比較値生成部81は、カウント値C_1〜C_Nに基づき比較値を生成する。生成された比較値COMP2は、セレクタ84を介して比較部24に供給される。
次に、図19Bに示すタイミングチャートについて説明する。初期状態において、選択信号SELおよびパワーオン信号PWR_ONはロウレベルとなっている。選択信号SELがロウレベルであるので、セレクタ84はレジスタ83に格納されている比較値(固定値)を選択している。タイミングt11においてパワーオン信号PWR_ONがロウレベルからハイレベルに遷移すると、比較値生成部81は、カウント値C_1〜C_Nに基づき比較値を生成する。生成された比較値COMP2は、セレクタ84に出力される。その後、タイミングt12において選択信号SELがロウレベルからハイレベルに遷移すると、セレクタ84は比較値生成部81で生成された比較値COMP2を選択し、比較部24に比較値COMP2を出力する。
図20は、本実施の形態にかかる半導体装置の動作を説明するためのフローチャートである。まず、制御部80は、割り込みがあったか否かを判断する(ステップS1)。つまり、パワーオン信号PWR_ONがハイレベルとなった場合に割り込みがあったと判断する。割り込みがあった場合(ステップS1:Yes)、制御部80は、モニタ結果を集計する(ステップS2)。つまり、制御部80は、各モニタ部1_1〜1_Nにおけるカウント値C_1〜C_Nを取得して集計する。その後、制御部80の比較値生成部81は、カウント値C_1〜C_Nを用いてばらつき値を計算し(ステップS3)、算出されたばらつき値に応じた比較値を生成する。このようにして比較値生成部81は比較値を更新する(ステップS4)。
比較部24は、比較値生成部81で生成(更新)された比較値COMPと、モニタ値算出部22で算出されたモニタ値C_AVEとを比較する(ステップS5)。モニタ値C_AVEが、比較値COMPの範囲内である場合(ステップS6:Yes)、電圧制御動作を終了して通常動作に復帰する。一方、モニタ値C_AVEが、比較値COMPの範囲外である場合(ステップS6:No)、比較部24は、モニタ値C_AVEが比較値COMPの範囲内となるように電源供給部4を制御する。
以上で説明したように、本実施の形態にかかる半導体装置では、比較値生成部81において、フレキシブルに比較値を生成することができるので、内部回路に供給される電源電圧Vddをより適切に制御することができる。
<実施の形態6>
次に、本発明の実施の形態6について説明する。実施の形態6にかかる半導体装置では、図21に示すように制御部80'にタイマ88を設けた点が実施の形態5で説明した制御部80と異なる。これ以外は実施の形態5と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
内部回路3に搭載されている回路が使用時に起動する場合は、使用されるタイミング、つまり電源が供給されるタイミングにおいて、比較値を更新することができる。このとき、内部回路3に電源が供給されるタイミングを示すパワーオン信号PWR_ONを用いることで、比較値の更新のタイミングを設定することができる。
しかし、内部回路3に搭載されている回路の中には、一度電源が供給された後、電源を落とすことなく常に電源が供給され続ける回路もある。このような回路では、パワーオン信号PWR_ONを用いて比較値の更新のタイミングを設定することができない。
そこで本実施の形態にかかる半導体装置では、制御部80'にタイマ88を設け、比較値の更新のタイミングを示す更新タイミング信号RNWを比較値生成部81に出力している。タイマ88は、例えばクロック信号が供給されるカウンタで構成することができる。
図22は、本実施の形態にかかる半導体装置の動作を説明するためのタイミングチャートである。初期状態では、選択信号SELがロウレベルであるので、セレクタ84はレジスタ83に格納されている比較値(固定値)を選択している。その後、タイミングt21において、選択信号SELがロウレベルからハイレベルに遷移する。これにより、セレクタ84は、比較値生成部81で生成された比較値(可変値)を選択する。このとき、セレクタ84から比較部24に比較値COMP1が出力される。
その後、タイミングt22において更新タイミング信号RNWがハイレベルになると、比較値生成部81は比較値を更新する。このとき、セレクタ84から比較部24に出力される比較値は比較値COMP1から比較値COMP2に更新される。更に、タイミングt23において更新タイミング信号RNWがハイレベルになると、比較値生成部81は比較値を更新する。このとき、セレクタ84から比較部24に出力される比較値は比較値COMP2から比較値COMP3に更新される。このように、比較値生成部81は、更新タイミング信号RNWがハイレベルになる毎に比較値を更新する。これ以外の動作は、実施の形態5の場合と同様である。
<実施の形態7>
次に、本発明の実施の形態7について説明する。実施の形態7にかかる半導体装置では、制御部の構成が実施の形態1で説明した制御部3(図3参照)と異なる。これ以外は実施の形態1と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
図23は、本実施の形態にかかる半導体装置が備える制御部90を示す図である。本実施の形態では、制御部90にモニタ選択部93を新たに設けている。モニタ選択部93は、モニタ選択信号M_SELに応じて、モニタ部1_1〜1_Nの中から使用するモニタ部を選択する。すなわち、モニタ選択部93は、使用するモニタ部に対してハイレベルのイネーブル信号を出力することで、使用するモニタ部を選択することができる。ここで、モニタ選択信号M_SELは、例えば端子を介して外部から供給されてもよく、また設定レジスタ(不図示)から供給されるようにしてもよい。
図24A、図24Bは、モニタ部の配置を説明するための図である。図24Aに示すモニタ部95、96は、図24Bに示すモニタ部97、98よりも多く配置されている。すなわち、図24Aに示すモニタ部95、96を用いることで、より正確に内部回路の特性をモニタすることができる。一方、モニタ部が多い場合は、モニタ部で得られたカウント値の演算処理に時間がかかるという問題がある。また、図24Bに示すモニタ部97、98の数は、図24Aに示すモニタ部95、96の数よりも少ないので、モニタ部で得られたカウント値の演算処理に比較的時間がかからないという利点がある。一方、モニタ部の数が少ないので、モニタの精度は図24Aに示す場合よりは劣る。
本実施の形態では、モニタ部の数が多い図24Aに示す組み合わせと、モニタ部の数が少ない図24Bに示す組み合わせとを、モニタ選択信号M_SELを用いて選択できるように構成することができる。よって、半導体装置を使用する使用者のニーズに応じて、モニタ部の組み合わせを変更することができる。
また、本実施の形態では、ばらつき値算出部21で用いられるカウント値の数と、モニタ値算出部22で用いられるカウント値の数を、適宜変更することができる。すなわち、ばらつき値算出部21で算出されるばらつき値は比較値を決定するために用いられる。よって、より多くのモニタ部のカウント値を用いてばらつき値を算出したほうがより正確に比較値を決定することができる。一方、モニタ値算出部22で算出されるモニタ値は、内部回路における特性の変化をモニタするために用いられるため、モニタ値算出部22で用いられるカウント値の数は、ばらつき値算出部21で用いられるカウント値の数よりも少なくすることができる。
よって、例えば図24Aに示す組み合わせのモニタ部を用いる場合は、ばらつき値算出部21でばらつき値を算出する際にモニタ部95およびモニタ部96(全てのモニタ部)を使用し、モニタ値算出部22でモニタ値を算出する際にモニタ部95のみ(斜線で示すモニタ部)を使用することができる。同様に、図24Bに示す組み合わせのモニタ部を用いる場合は、ばらつき値算出部21でばらつき値を算出する際にモニタ部97およびモニタ部98(全てのモニタ部)を使用し、モニタ値算出部22でモニタ値を算出する際にモニタ部97のみ(斜線で示すモニタ部)を使用することができる。
このように、本実施の形態では、制御部90にモニタ選択部93を設けることで、使用するモニタ部を使用状況等に応じて適宜選択することが可能になる。
<実施の形態8>
次に、本発明の実施の形態8について説明する。実施の形態8にかかる半導体装置では、モニタ部の構成が実施の形態1で説明したモニタ部1_N(図2参照)と異なる。これ以外は実施の形態1と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
図25は、本実施の形態にかかる半導体装置が備えるモニタ部の一例を示すブロック図である。図25に示すように、モニタ部101_Nは、フリップフロップFF1〜FF4と、クリティカルパスレプリカtcritと、遅延素子ta、tbとを有する。フリップフロップFF1は、クロック信号Tclkに応じて、入力されたデータをクリティカルパスレプリカtcritに出力する。クリティカルパスレプリカtcritは、内部回路3が備える回路における最も遅延の大きいパスを反映した遅延素子である。遅延素子ta、tbは所定の遅延値を備える遅延素子である。クリティカルパスレプリカtcrit、遅延素子ta、tbはそれぞれ互いに直列に接続されている。
フリップフロップFF2は、クロック信号Tclkに応じて、遅延素子tbから出力されたデータを格納すると共に、制御部2に信号F_OUT_N_1を出力する。フリップフロップFF3は、クロック信号Tclkに応じて、遅延素子taから出力されたデータを格納すると共に、制御部2に信号F_OUT_N_2を出力する。フリップフロップFF2は、クロック信号Tclkに応じて、クリティカルパスレプリカtcritから出力されたデータを格納すると共に、制御部2に信号F_OUT_N_3を出力する。ここで、各フリップフロップから出力される信号F_OUT_N_1〜F_OUT_N_3は、モニタ部101_Nにおけるモニタ結果を示す信号である。
例えばクロックTclkが立ち上がる第1のタイミングで、フリップフロップFF1がデータ"1"を出力したとする。このとき、データ"1"は、クリティカルパスレプリカtcrit、遅延素子ta、tbを経由してフリップフロップFF2に到達する。そして、次にクロックTclkが立ち上がる第2のタイミングで、フリップフロップFF2にデータ"1"が格納される。この場合は、制御部2に信号F_OUT_N_1として"1"が出力される。しかし、クリティカルパスレプリカtcrit、遅延素子ta、tbにおける遅延が大きすぎる場合は、フリップフロップFF2にデータ"1"が到達する前に、クロックTclkが第2のタイミングで立ち上がるためフリップフロップFF2に格納されるデータは"0"となる。
同様に、クロックTclkが立ち上がる第1のタイミングで、フリップフロップFF1がデータ"1"を出力したとする。このとき、データ"1"は、クリティカルパスレプリカtcrit、遅延素子taを経由してフリップフロップFF3に到達する。そして、次にクロックTclkが立ち上がる第2のタイミングで、フリップフロップFF3にデータ"1"が格納される。この場合は、制御部2に信号F_OUT_N_2として"1"が出力される。しかし、クリティカルパスレプリカtcrit、遅延素子taにおける遅延が大きすぎる場合は、フリップフロップFF3にデータ"1"が到達する前に、クロックTclkが第2のタイミングで立ち上がるためフリップフロップFF3に格納されるデータは"0"となる。
同様に、クロックTclkが立ち上がる第1のタイミングで、フリップフロップFF1がデータ"1"を出力したとする。このとき、データ"1"は、クリティカルパスレプリカtcritを経由してフリップフロップFF4に到達する。そして、次にクロックTclkが立ち上がる第2のタイミングで、フリップフロップFF4にデータ"1"が格納される。この場合は、制御部2に信号F_OUT_N_3として"1"が出力される。しかし、クリティカルパスレプリカtcritにおける遅延が大きすぎる場合は、フリップフロップFF4にデータ"1"が到達する前に、クロックTclkが第2のタイミングで立ち上がるためフリップフロップFF4に格納されるデータは"0"となる。
本実施の形態にかかる半導体装置では、各モニタ部101_Nから出力される信号F_OUT_N_1〜F_OUT_N_3の値(つまり、"0"または"1")を用いて、各モニタ部101_Nにおける遅延を検出することができる。具体的には、モニタ部101_Nから出力される各信号の値が(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(1、1、1)の場合、モニタ部101_Nにおける遅延が最も小さい。つまり、この場合は、クリティカルパスレプリカtcrit、遅延素子ta、tbを含むパス(遅延が最も大きいパス)を経由した場合であっても、データ"1"がフリップフロップFF2に到達しているので、モニタ部101_Nにおける遅延が小さいといえる。
以降、モニタ部101_Nから出力される各信号の値が(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(0、1、1)、(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(0、0、1)、(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(0、0、0)となるにつれて、モニタ部101_Nにおける遅延が大きいといえる。
また、本実施の形態では、各モニタ部101_Nにおいて内部回路3の遅延を測定する際に、適宜、クロックTclkの周波数を変更してもよい。例えば、モニタ部101_Nから出力される各信号の値が(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(1、1、1)の場合、クロックTclkの周波数を高くすることで、(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(1、1、1)と(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(0、1、1)との境界を検出することができる。また、例えば、モニタ部101_Nから出力される各信号の値が(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(0、0、0)の場合、クロックTclkの周波数を低くすることで、(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(0、0、0)と(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)=(0、0、1)との境界を検出することができる。
実施の形態1にかかる半導体装置と同様に、制御部2が備えるばらつき値算出部21は、モニタ部101_Nから出力された各信号の値(F_OUT_N_1、F_OUT_N_2、F_OUT_N_3)を用いて、ばらつき値C_VARを求めることができる。
図26は、本実施の形態にかかる半導体装置の動作を説明するための図である。図26に示すように、制御部2は、クロック信号Tclkが上限の設定値tcrit+ta'+tb'よりも大きい場合は、電源供給部4から供給される電源電圧Vddを低くし、クロック信号Tclkが下限の設定値tcrit+ta'よりも小さい場合は、電源供給部4から供給される電源電圧Vddを高くする。このような制御により、クロック信号Tclkを下限の設定値tcrit+ta'と上限の設定値tcrit+ta'+tb'との間に収めることができる。
ここで、設定値tcrit+ta'、設定値tcrit+ta'+tb'は制御目標となる遅延値である。遅延値ta'は遅延値taをばらつき値C_VARに応じて補正した値である。また、遅延値tb'は遅延値tbをばらつき値C_VARに応じて補正した値である。つまり、各モニタ部におけるばらつき値C_VARが大きい場合は、遅延値tb'として遅延値tbよりも大きな値を設定する。これにより、上限の設定値tcrit+ta'+tb'にマージンを持たせることができるので、より遅延が大きい場合であっても、適切に電源電圧を設定することができる。
一方、各モニタ部におけるばらつき値C_VARが小さい場合は、遅延値ta'として遅延値taに近い値を、また、遅延値tb'として遅延値tbに近い値を設定することができる。つまり、各モニタ部におけるばらつき値C_VARが小さい場合は、比較値に大きなマージンを設ける必要がないので、遅延値ta、tbに近い値を遅延値として設定することができる。よって、上限の設定値tcrit+ta'+tb'を小さくすることができるので、半導体装置の消費電力を低減することができる。
なお、本実施の形態にかかる半導体装置では、遅延素子として2つの遅延素子ta、tbを設けた場合について説明したが、遅延素子は3つ以上備えていてもよい。この場合、各遅延素子から出力されるデータを格納するためのフリップフロップを、それぞれの遅延素子に対応して設ける必要がある。
また、本実施の形態にかかる半導体装置では、モニタ部101_Nがクリティカルパスレプリカtcritを備える構成について説明した。しかし、本実施の形態にかかる半導体装置では、内部回路3の特性のばらつきをモニタするモニタ部として実施の形態1で説明したリングオシレータを備えるモニタ部を用い、内部回路3が備える回路の性能(遅延特性)をモニタするモニタ部として、本実施の形態で説明したクリティカルパスレプリカtcritを備えるモニタ部を用いてもよい。このように、内部回路3が備える回路の性能を検出するモニタ部として、クリティカルパスレプリカtcritを備えるモニタ部を用いることで、実際の回路に近い遅延特性を検出することができる。
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。