(57)【要約】【課題】ＰＬＬの性能に依存せずに、高い分解能で内部回路の動作周波数を変更可能とする。【解決手段】半導体集積回路内のクロック生成回路は、半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力する回路であり、可変発振回路と、選択回路とを有する。可変発振回路は、複数の周波数の中から一の周波数に基づくクロック信号である第２のクロック信号を生成し、当該第２のクロック信号を出力する。選択回路は、外部から入力された第１のクロック信号と可変発振回路から入力された第２のクロック信号とのいずれか一方を出力する。回路に対して出力されるクロック信号は、当該選択回路から出力されたクロック信号に基づき生成されるクロック信号である。【選択図】  図１
2020071604.tif 000002
【特許請求の範囲】
【請求項１】
クロック生成回路を有する半導体集積回路であって、
前記クロック生成回路は、半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力する回路であり、
前記クロック生成回路は、
複数の周波数の中から一の周波数に基づくクロック信号である第２のクロック信号を生成し、当該第２のクロック信号を出力する可変発振回路と、
外部から入力された第１のクロック信号と前記可変発振回路から入力された前記第２のクロック信号とのいずれか一方を出力する選択回路と
を有し、
前記回路に対して出力されるクロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号である
ことを特徴とする半導体集積回路。
【請求項２】
請求項１に記載の半導体集積回路において、
前記第１のクロック信号の周期と前記第２のクロック信号の周期との比を特定する第１の計測処理が実行されるクロック制御回路を更に有する
ことを特徴とする半導体集積回路。
【請求項３】
請求項２に記載の半導体集積回路において、
前記第１の計測処理は、前記選択回路に前記第１のクロック信号を選択させることと、前記制御クロック信号の周期と前記第２のクロック信号の周期との比を特定することとを含む
ことを特徴とする半導体集積回路。
【請求項４】
請求項２に記載の半導体集積回路において、
前記第１の計測処理において特定された比に基づく周波数は、前記制御処理での前記第２のクロック信号の周波数として前記可変発振回路に指定され、
前記可変発振回路は、前記指定された周波数を、前記第２のクロック信号の周波数として決定する
ことを特徴とする半導体集積回路。
【請求項５】
請求項１に記載の半導体集積回路において、
一つ又は複数のコンピュータプログラムを実行する一以上のプロセッサであるプロセッサ部を有し、
前記プロセッサ部が、前記第２のクロック信号についてテスト処理を正しく行える周波数と前記テスト処理を正しく行えない周波数とを特定する第２の計測処理を行う
ことを特徴とする半導体集積回路。
【請求項６】
請求項５に記載の半導体集積回路において、
前記第２の計測処理は、下記の（ａ）乃至（ｄ）を含み、
（ａ）前記第２のクロック信号について選択可能な周波数のうち当該第２の計測処理において未決定の周波数を決定すること、
（ｂ）（ａ）で決定された周波数の前記第２のクロック信号に基づくクロック信号で処理のテストを行うこと、
（ｃ）前記テストの結果が正しいか否かの判断を行うこと、
（ｄ）（ｃ）の結果が肯定であれば、(ａ)を行うこと
前記テスト処理を正しく行えない周波数は、（ｃ）の結果が否定のときの周波数であり、
前記テスト処理を正しく行える周波数は、結果が否定となった（ｃ）の直前回の（ｃ）の結果が肯定のときの周波数である
ことを特徴とする半導体集積回路。
【請求項７】
請求項１に記載の半導体集積回路において、
前記第１のクロック信号の周期と前記第２のクロック信号の周期との比を特定する第１の計測処理、及び、前記第２のクロック信号について前記制御処理を正しく行える周波数と前記制御処理を正しく行えない周波数とを特定する第２の計測処理、のうちの少なくとも一つの計測処理は、前記クロック生成回路から出力され入力されたクロック信号に同期して動作する一つ以上の回路による制御処理が行われていない期間に行われる
ことを特徴とする半導体集積回路。
【請求項８】
請求項１に記載の半導体集積回路において、
前記外部は、水晶振動子を使用した発振回路である
ことを特徴とする半導体集積回路。
【請求項９】
請求項１に記載の半導体集積回路において、
前記選択回路は、
前記制御クロック信号の周波数に高い精度が求められる前記制御処理を行う時刻には前記第１のクロック信号を選択し、
前記制御クロック信号の周波数を高い分解能で変更する必要がある前記制御処理を行う時刻には前記第２のクロック信号を選択する
ことを特徴とする半導体集積回路。
【請求項１０】
請求項１に記載の半導体集積回路において、
一つ又は複数のコンピュータプログラムを実行する一以上のプロセッサであるプロセッサ部を有し、
前記クロック生成回路からクロック信号を受け取る前記一つ又は複数の回路のいずれかが、前記プロセッサ部であり、
前記クロック生成回路を前記プロセッサ部が制御すること
を特徴とする半導体集積回路。
【請求項１１】
請求項７に記載の半導体集積回路において、
前記プロセッサ部が、前記一つ又は複数のコンピュータプログラムを実行することにより、前記制御処理が行われていない期間に前記少なくとも一つの計測処理を行う
ことを特徴とする半導体集積回路。
【請求項１２】
請求項１乃至１１のうちのいずれか１項に記載の半導体集積回路と、
前記第１のクロック信号のソースであるクロックソースと
を有することを特徴とする装置。
【請求項１３】
半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力するクロック生成回路において、
複数の周波数の中から一の周波数に基づくクロック信号である第２のクロック信号を生成し、当該第２のクロック信号を出力する可変発振回路と、
外部から入力された第１のクロック信号と前記可変発振回路から入力された前記第２のクロック信号とのいずれか一方を出力する選択回路と
を有し、
前記回路に対して出力されるクロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号である
ことを特徴とするクロック生成回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、クロック生成回路、半導体集積回路、及び、同半導体集積回路を備えた装置に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特許第５０７７０６７号公報（特許文献１）がある。この公報には、ＰＬＬ回路を使用して入力クロックのＮ／Ｍ倍のクロックを生成することにより、内部回路の動作周波数を変更可能な半導体集積回路が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５０７７０６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通常、外部から入力されるクロック信号の周波数は高くなく、故に、ＰＬＬにより周波数が高くされる。
【０００５】
しかし、一般に、ＰＬＬでは、生成したクロック信号の時間精度（周波数制度）を向上するためにＮの値に制限がある。このため、内部回路の動作周波数の調整の分解能は、ＰＬＬの性能に依存する。
【０００６】
本発明は、ＰＬＬの性能に依存しない高い分解能で内部回路の動作周波数を変更可能とすることを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明は様々な実施形態をとり得るが、その一例であるクロック生成回路は「半導体集積回路の内部回路である一つ又は複数の回路に対してクロック信号を出力するクロック生成回路において、複数の周波数の中から一の周波数に基づくクロック信号である第２のクロック信号を生成し、当該第２のクロック信号を出力する可変発振回路と、前記外部から入力された第１のクロック信号と前記可変発振回路から入力された前記第２のクロック信号とのいずれか一方を出力する選択回路とを有し、前記回路に対して出力されるクロック信号は、前記選択回路から出力されたクロック信号に基づき生成されるクロック信号である」ことを特徴とする。
【発明の効果】
【０００８】
ＰＬＬの性能に依存しない高い分解能で内部回路の動作周波数を変更することが可能となる。
【０００９】
上記した以外の課題、構成及び効果は、以下の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施例に係る半導体集積回路の例を示す図である。
【図２】図１の半導体集積回路のＰＬＬと分周回路の動作を示すタイミングチャートである。
【図３】図１の半導体集積回路のクロック制御回路の例を示す図である。
【図４】図３の第１の状態遷移回路とカウンタの動作を示すタイミングチャートである。
【図５】図３の第２の状態遷移回路の動作を示すタイミングチャートである。
【図６】図１の半導体集積回路を備えた制御装置の例を示す図である。
【図７】図６の制御装置で図１の半導体集積回路の限界動作周波数を計測するフローの例を示す図である。
【図８】図６の制御装置で制御処理と計測処理を時分割で処理する第１の例を示す図である。
【図９】図６の制御装置で制御処理と計測処理を時分割で処理する第２の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、一実施例を図面を用いて説明する。
【００１２】
図１は、本発明の一実施例に係る半導体集積回路の例である。
【００１３】
本実施例の半導体集積回路１００は、クロック生成回路（図では「ＣＰＧ」）１１０、メモリ制御回路（図では「ＭＣ」と表記）１１２、ＣＰＵ（Central Processing Unit）１１４、ウォッチドックタイマ（図では「ＷＤＴ」）１１６、システムバス制御回路（図では「ＳＢＣ」）１１８、及び、バス１５８を有する。バス１５８に、クロック生成回路１１０内のクロック制御回路（図では「ＣＴＬ」）１２４、メモリ制御回路１１２、ＣＰＵ１１４、ウォッチドックタイマ１１６及びシステムバス制御回路１１８が接続される。ＣＰＵ１１４は、プロセッサ部（一つ以上のプロセッサ）の一例でよい。
【００１４】
クロック生成回路１１０は、選択回路１２０（図では「ＭＵＸ」と表記）、周波数を変更可能な発振回路である可変発振回路（図では「ＶＦＯ」と表記）１２２、クロック制御回路１２４、ＰＬＬ（Phase Locked Loop）１２６、分周回路１２８（図では「ＤＩＶ」と表記）、及び、ＡＮＤ回路１３０を有する。
【００１５】
選択回路１２０は、選択信号１４６に従い、クロック生成回路１１０の外部から入力されたクロック信号１４０（第１のクロック信号の一例）、又は、可変発振回路１２２から出力されたクロック信号１４２（第２のクロック信号の一例）のいずれか一方を選択し、選択された方のクロック信号１４８を出力する。具体的には、制御回路１２０は、クロック信号１５６（後述）の周波数に高い精度が求められる制御処理を行う時刻にはクロック信号１４０を選択する（例えば、当該時刻には、クロック信号１４０の選択を示す選択信号１４６が入力されるためにクロック信号１４０を選択する）。
【００１６】
可変発振回路１２２は、複数の周波数の中から一の周波数を動的に決定し、当該決定された周波数のクロック信号を生成し、当該生成したクロック信号を出力する発振回路である。具体的には、可変発振回路１２２は、周波数コード１４４として指定され得る異なる複数の値にそれぞれ対応した異なる複数の周波数のうち周波数コード１４４として指定されている値に対応した周波数のクロック信号を生成し生成したクロック信号１４２を出力する。可変発振回路１２２の構成としては、既知の構成（例えば、特開昭５９−１１３５１７号公報、或いは、特開平７−７４６２３号公報に開示の構成）を採用することが可能である。
【００１７】
なお、可変発振回路１２２においては、製造時のばらつきによる個体差や、動作温度や、電源電圧などの影響のより、周波数コード１４４として同じ値が指定されてもクロック信号１４２の周波数は必ずしも同じとはならないことがある。そこで、本実施例では、クロック信号１４２の周波数を測定する機能が半導体集積回路１００（例えばクロック生成回路１１０）に設けられる。クロック信号１４２の周波数を測定する機能に関しては後述する。
【００１８】
クロック制御回路１２４は、バス１５８を介して周波数コード書き込み指令（周波数コード１４４を書き込むことの指令）を受けると、当該受けた指令で指定されている値を示す周波数コード１４４を可変発振回路１２２に出力する。クロック制御回路１２４はまた、バス１５８を介して周波数測定指令（周波数を測定することの指令）を受けると、予め定められた時間内のクロック信号１４２の立ち上がりエッジの回数を測定し、測定された回数を内部（例えば、クロック制御回路１２４内の記憶領域）に記憶する。クロック制御回路１２４はまた、バス１５８を介して周波数測定状態読み出し指令（周波数の測定状態を読み出すことの指令）を受けると、測定状態（例えば、周波数測定中は“１”、それ以外は“０”）をバス１５８に出力する。クロック制御回路１２４はまた、バス１５８を介して周波数読み出し指令（周波数を読み出すことの指令）を受けると、測定した周波数の値をバス１５８に出力する。クロック制御回路１２４はまた、バス１５８を介してクロック切り替え指令（クロック信号を切り替えることの指令）を受けると、選択回路１２０への選択信号１４６とＡＮＤ回路１３０への制御信号１５０を制御してクロック信号の切り替えを行う。
【００１９】
ＰＬＬ１２６は、入力されたクロック信号１４８と入力されたクロック信号１５２の位相が合う様に、出力するクロック信号１５４の周波数を制御する。具体的には、ＰＬＬ１２６は、クロック信号１５２の位相がクロック信号１４８より遅れている時はクロック信号１５４の周波数を増加させ、進んでいる時は減少させる。
【００２０】
分周回路１２８は、クロック信号１５４を分周することにより得られたクロック信号１５２を出力する。
【００２１】
ＡＮＤ回路１３０は、入力された制御信号１５０がハイの時はクロック信号１５４と同じ値のクロック信号１５６を出力する。ＡＮＤ回路１３０は、制御信号１５０がロウの期間中はクロック信号１５６をロウに固定（維持）する。
【００２２】
クロック信号１５６（制御クロック信号の一例）は、クロック制御回路１２４、メモリ制御回路１１２、ＣＰＵ１１４、ウォッチドックタイマ１１６、システムバス制御回路１１８に入力される。これらの回路１１２、１１４、１１６及び１１８は、クロック信号１５６に同期して動作する。
【００２３】
メモリ制御回路１１２は、バス１５８を介して読み出し要求を受けると、バス１６２を介して外部のメモリから読み出し対象（例えば値やプログラム）を読み出し、読み出した読み出し対象をバス１５８に出力する。メモリ制御回路１１２はまた、バス１５８を介して書き込み要求を受けると、バス１６２を介して外部のメモリに書き込み対象（例えば値やプログラム）を書き込む。
【００２４】
ＣＰＵ１１４は、バス１５８を介してメモリ制御回路１１２に読み出し要求を出力することで、バス１６２を介して外部のメモリからプログラムを読み出す。ＣＰＵ１１４は、読み出されたプログラムを実行する。実行したプログラムの中に読み出し、又は書き込みを指示する命令があった場合には、ＣＰＵ１１４は、バス１５８を介してクロック制御回路１２４、メモリ制御回路１１２、ウォッチドックタイマ１１６、又はシステムバス制御回路１１８に、読み出し要求又は書き込み要求を出力する。
【００２５】
ウォッチドックタイマ１１６は、内部に設けられたカウンタの値をクロック信号１５６の１周期ごとに１ずつインクリメントする。ウォッチドックタイマ１１６はまた、バス１５８を介してカウンタクリア要求を受けると、カウンタの値を“０”（初期値の一例）にクリアする（つまり、カウンタの値を初期値に戻す）。ウォッチドックタイマ１１６はまた、カウンタの値が予め定められた基準値を超えた場合には、ＣＰＵ１１４にリセット信号１６０を出力する。リセット信号１６０を出力するか否かの基準となる上記の基準値は、固定値であってもよいし、ウォッチドックタイマ１１６の内部に設けられたレジスタに設定された値を基にＣＰＵ１１４により変更されてもよい。
【００２６】
システムバス制御回路１１８は、バス１５８を介して読み出し要求を受けると、システムバス１６４を介して外部のデバイス（外部のメモリ以外のデバイス）から読み出し対象を読み出し、読み出した読み出し対象をバス１５８に出力する。システムバス制御回路１１８はまた、バス１５８を介して書き込み要求を受けると、システムバス１６４を介して外部のデバイスに書き込み対象を書き込む。システムバス制御回路１１８はまた、システムバス１６４を介して読み出し要求を受けると、バス１５８及びメモリ制御回路１１２を介してバス１６２に接続された外部のメモリから読み出し対象を読み出し、読み出した読み出し対象をシステムバス１６４に出力する。システムバス制御回路１１８はまた、システムバス１６４を介して書き込み要求を受けると、バス１５８、メモリ制御回路１１２を介してバス１６２に接続された外部のメモリに書き込み対象を書き込む。読み出し要求に応答して外部のデバイスと外部のメモリのいずれから読み出しを行うかは、読み出し要求（例えば、当該要求で指定されているアドレス）に依存する。同様に、書き込み要求に応答して外部のデバイスと外部のメモリのいずれに対して書き込みを行うかは、書き込み要求に依存する。
【００２７】
図２は、図１の半導体集積回路１００のＰＬＬ１２６と分周回路１２８の動作を示すタイミングチャートである。
【００２８】
分周回路１２８は、クロック信号１５４を１／４に分周した結果としてのクロック信号１５２を出力する。ＰＬＬ１２６はクロック信号１４８とクロック信号１５２の位相が合う様に動作するため、クロック信号１４８とクロック信号１５２はほぼ同一の波形となる。従って、クロック信号１５４はクロック信号１４８の４倍の周波数となる。
【００２９】
本実施例では、分周回路１２８の分周比は１／４に固定しているが、分周比は異なる値でもよく、また、レジスタに設定された値に従う値に動的に変更されてもよい。
【００３０】
図３は、図１の半導体集積回路１００のクロック制御回路１２４の例を示す図である。
【００３１】
本実施例のクロック制御回路１２４は、カウンタ（図では「ＣＮＴ」）３００、レジスタ（図では「ＲＥＧ」）３０２、第１の状態遷移回路（図では「ＳＴ１」）３０４、第２の状態遷移回路（図では「ＳＴ２」）３０６、及び、バスインタフェース（図では「ＢＩＦ」）３０８を有する。
【００３２】
クロック制御回路１２４には、４つのクロック信号１４０、１４２、１５４及び１５６が入力される。カウンタ３００は、クロック信号１４２に同期して動作する。レジスタ３０２、第１の状態遷移回路３０４及びバスインタフェース３０８は、クロック信号１５６に同期して動作する。第２の状態遷移回路３０６は、クロック信号１４０に同期して動作する回路と、クロック信号１５４に同期して動作する回路を含んでいる。
【００３３】
カウンタ３００は、入力されたクリア信号３１２がハイとなると、内蔵するカウンタ値（カウンタ３００の値）を“０”（初期値の一例）にクリアする（戻す）。カウンタ３００はまた、入力されたイネーブル信号３１４がハイである期間において、クロック信号１４２の立ち上がりエッジが発生する毎に内蔵するカウンタ値に１を加算する。カウンタ３００はまた、入力されたイネーブル信号３１４がロウである期間において、クロック信号１４２の立ち上がりエッジが発生する毎に内蔵するカウンタ値に１を加算することを行わない。カウンタ３００はまた、カウンタ値３１０を出力する。
【００３４】
レジスタ３０２は、書き込み要求３１６を受けると、書き込み要求３１６に従う書き込み対象を格納する。レジスタ３０２はまた、格納した書込み対象（例えば値）の一例である値としての周波数コード１４４を出力する。
【００３５】
第１の状態遷移回路３０４は、カウント指令３２０を受けると、クリア信号３１２とイネーブル信号３１４を制御してカウンタ３００を動作させる。第１の状態遷移回路３０４はまた、カウンタ３００を動作させている期間にカウンタ動作信号３１８をハイとし、それ以外の期間にカウンタ動作信号３１８をロウにする。なお、第１の状態遷移回路３０４の動作の詳細は後述する。
【００３６】
第２の状態遷移回路３０６は、クロック切り替え要求３２２を受けると、選択信号１４６及び制御信号１５０を制御してクロック切り替えを制御する。詳細は後述する。
【００３７】
バスインタフェース３０８は、バス１５８を介して読み出し要求を受けると、読み出しアドレス（当該要求で指定されているアドレス）に応じてカウンタ値３１０又はカウンタ動作信号３１８の値をバス１５８に出力する。バスインタフェース３０８はまた、バス１５８を介して書き込み要求を受けると、書き込みアドレス（当該要求で指定されているアドレス）に応じて書き込み要求３１６、カウント指令３２０、又は、クロック切り替え要求３２２を出力する。
【００３８】
図４は、第１の状態遷移回路３０４とカウンタ３００の動作を示すタイミングチャートである。なお、以下の説明では、ｎ番目のサイクルを「サイクルｎ」と表記する。なお、図４（及び図５）において、サイクルは、クロック信号１５６のサイクルである。
【００３９】
バスインタフェース３０８は、サイクル１において、バス１５８を介して第１の状態遷移回路３０４に対する書き込み要求を受け、当該要求に応答して、サイクル２において、カウント指令３２０をハイにする。
【００４０】
第１の状態遷移回路３０４は、サイクル２において、ハイ状態のカウント指令３２０を受けると、クリア信号３１２をハイとし、イネーブル信号３１４を、サイクル４からサイクル４０９９の期間にハイにし、カウンタ動作信号３１８をサイクル２からサイクル４０９９にハイにする。
【００４１】
カウンタ３００は、サイクル２においてハイ状態のクリア信号３１２を受けると、カウンタ値３１０を“０”にする。カウンタ３００はまた、サイクル４からサイクル４０９９の期間にハイ状態のイネーブル信号３１４を受けると、その期間のクロック信号１４２の立ち上がりの都度にカウンタ値３１０に１を加算する。図４の例は、クロック信号１４２の周波数がクロック信号１５６の周波数の１／３の場合を示している。このため、カウンタ値３１０は、サイクル４において“１”、サイクル７において“２”、サイクル４０９９において“１３６６”となる。カウンタ３００はまた、サイクル４１００以降にロウ状態のイネーブル信号３１４を受けると、クロック信号１４２の立ち上がりエッジでもカウンタ値３１０に１を加算しない。結果として、現在の値が維持される。イネーブル信号３１４がハイ状態となっているサイクル数（サイクル４からサイクル４０９９の４０９６サイクル）と、イネーブル信号３１４がロウ状態となって以降のカウンタ値３１０（“１３６６”）の比がクロック信号１５６とクロック信号１４２の周波数の比と量子化誤差を除き等しくなる。
【００４２】
本実施例では、イネーブル信号３１４がハイ状態となっているサイクル数は４０９６サイクルで固定としたが、レジスタで指定可能とする方法も考えられる。クロック信号１４２の周波数測定の量子化誤差は、イネーブル信号３１４がロウ状態となって以降のカウンタ値３１０の値の逆数に比例するためイネーブル信号３１４がハイ状態となっているサイクル数を多くするほど量子化誤差を削減することができる。
【００４３】
図５は、図３の第２の状態遷移回路３０６の動作を示すタイミングチャートである。
【００４４】
本実施例は、選択回路１２０がクロック信号１４０を選択している状態からクロック信号１４２を選択する状態に切り替える例を示している。逆方向に切り替える場合も動作は同様である。
【００４５】
バスインタフェース３０８は、サイクル１においてバス１５８を介して第２の状態遷移回路３０６に対する書き込み要求を受け、当該要求に応答してサイクル２においてクロック切り替え要求３２２をハイにする。
【００４６】
第２の状態遷移回路３０６は、サイクル２において、ハイ状態のクロック切り替え要求３２２を受けると、サイクル２でのクロック信号１５４の立ち下がりに同期して制御信号１５０をロウにし、サイクル１７でのクロック信号１５４の立ち下がりに同期して制御信号１５０をハイにする。これによって、サイクル３からサイクル１７までクロック信号１５６がロウとなる。これは、クロック信号１５４の不定がクロック信号１５６に現れない様にするための措置である。
【００４７】
第２の状態遷移回路３０６はまた、サイクル５において選択信号１４６をロウからハイに変化させる。これによって、クロック信号１４８としてクロック信号１４２が出力される。クロック信号１４８の周波数が変化することによって、ＰＬＬ１２６の動作が不安定となり、クロック信号１５４が不定となるが、一定時間後に動作が安定しクロック信号１５４はクロック信号１４８の４倍の周波数となる。ＰＬＬ１２６の動作が安定するまでの時間はクロック信号１５６をロウに維持すべく制御信号１５０をロウとする必要がある。このため、制御信号１５０をロウとする期間は、クロック信号１４０で予め定められた周期を経過する時間で定められる。
【００４８】
図６は、図１の半導体集積回路１００を備えた制御装置の例を示す図である。
【００４９】
図６の制御装置６００は、図１の半導体集積回路（図では「ＬＳＩ」）１００に加えて、クロック発振器（図では「ＣＯ」）６１０、ＲＯＭ（Read Only Memory）６１２、ＲＡＭ（Random Access Memory）６１４、入出力回路（図では「ＩＯ」）６１６、及び、通信回路（図ではＣＯＭ））６１８を有する。
【００５０】
クロック発振器６１０（クロックソースの一例）は、あらかじめ定められた周波数のクロックを出力する回路である。水晶振動子を使用したものが用いられる場合が多いが、必要な精度を満たしていればそれ以外のものでもよい。
【００５１】
ＲＯＭ６１２は、バス１６２を介して読み出し要求を受けると、指定されたアドレス（当該要求で指定されているアドレス）の読み出し対象（例えば値）をバス１６２に出力する。
【００５２】
ＲＡＭ６１４は、バス１６２を介して読み出し要求を受けると、指定されたアドレスの読み出し対象（例えば値）をバス１６２に出力する。ＲＡＭ６１４はまた、バス１６２を介して書き込み要求を受けると、指定されたアドレスに書き込み対象（例えば値）を書き込む。
【００５３】
入出力回路６１６は、バス１６２を介して読み出し要求を受けると、指定されたアドレスに対応する機器６０２の状態を示す読み出し対象を信号線６２０から取り込み、当該読み出し対象をバス１６２に出力する。入出力回路６１６はまた、バス１６２を介して書き込み要求を受けると、指定されたアドレスに対応する機器６０２の制御のための値を、信号線６２０を介して、バス１６２を介して受けた書き込み対象としての値に書き換える。
【００５４】
通信回路６１８は、システムバス１６４を介して送信要求を受けると、システムバス１６４を経由して送信データを受け、当該送信データを通信線６２２（例えばパーソナルコンピュータ（ＰＣ）のような機器に接続されている線）に出力する。通信回路６１８はまた、通信線６２２から受信データを受けると、システムバス１６４を介して、受信したデータを半導体集積回路１００に出力する。
【００５５】
図７は、図６の制御装置６００で図１の半導体集積回路１００の限界動作周波数を計測するフローの例を示す図である。「限界動作周波数」とは、半導体集積回路１００の内部回路（例えばＣＰＵ１１４やメモリ制御回路１１２といった個々の回路）が正常に動作する周波数と正常に動作しない周波数の境界値である。
【００５６】
ステップ７０２では、ＣＰＵ１１４が、ＲＡＭ６１４に格納されている変数ｔの値を“０”とする。変数ｔの値は、レジスタ３０２に書き込まれ周波数コード１４４に出力される値である。本実施例では、ｔの値が大きいほどクロック信号１４２の周波数が高い。
【００５７】
ステップ７０４では、ＣＰＵ１１４が、変数ｔの値をレジスタ３０２に書き込む。結果として、変数ｔの値が周波数コード１４４として可変発振回路１２２に出力される。これにより、可変発振回路１２２が、当該周波数コード１４４が示す値に対応した周波数のクロック信号１４２を生成し出力する。
【００５８】
ステップ７０６では、ＣＰＵ１１４が、第２の状態遷移回路３０６に対する書き込みを行い、クロック信号１４２を選択する状態に切り替える。具体的には、バスインタフェース３０８がＣＰＵ１１４からの書き込み要求を受け、第２の状態遷移回路３０６にクロック切り替え要求３２２を送信する。当該要求３２２に応答して、第２の状態遷移回路３０６が、クロック信号１４２を選択する選択信号１４６を出力する。第２の状態遷移回路３０６はまた、選択信号１４６が変化する前後の期間に制御信号１５０にロウを出力し、その後ハイを出力する。これにより、当該選択信号１４６が入力された選択回路１２０が、クロック信号１４２を選択し、当該クロック信号１４２に基づくクロック信号１５６がＡＮＤ回路１３０から出力される。
【００５９】
ステップ７０８では、ＣＰＵ１１４が、内部回路が正常に動作しているかどうかを判定するためのテストプログラムを実行する。テストプログラムでどの機能を使用するかによって限界動作周波数は異なるため、ユーザによって予めＲＯＭ６１２に限界動作周波数を測定したい機能を使用する様なテストプログラムが格納されている。
【００６０】
テストプログラム実行中にプログラムが暴走した場合は、ステップ７１０に進むことができない。この場合、ＣＰＵ１１４によるウォッチドックタイマ１１６のカウンタクリア動作が行われなくなるため、一定時間後にカウンタの値が予め定められた基準値を超え、ウォッチドックタイマ１１６がＣＰＵ１１４にリセット信号１６０を出力する。これが、ステップ７１２での処理である。その後、処理が、ステップ７１８に進む。
【００６１】
ステップ７１０では、ＣＰＵ１１４が、第２の状態遷移回路３０６に対する書き込みを行い、クロック信号１４０を選択する状態に切り替える。具体的には、バスインタフェース３０８がＣＰＵ１１４からの書き込み要求を受け、第２の状態遷移回路３０６にクロック切り替え要求３２２を送信する。当該要求３２２に応答して、第２の状態遷移回路３０６が、クロック信号１４０を選択する選択信号１４６を出力する。第２の状態遷移回路３０６はまた、選択信号１４６が変化する前後の期間に制御信号１５０にロウを出力し、その後ハイを出力する。これにより、当該選択信号１４６が入力された選択回路１２０が、クロック信号１４０を選択し、当該クロック信号１４０に基づくクロック信号１５６がＡＮＤ回路１３０から出力される。結果として、選択する信号がクロック信号１４２からクロック信号１４０に変更されたことになる。
【００６２】
ステップ７１４では、ＣＰＵ１１４が、テストプログラムの実行結果が正常であったかどうかを判断する。
【００６３】
テストプログラムの実行結果が正常であった場合には、ＣＰＵ１１４が、ステップ７１６で変数ｔに１を加算する。その後、処理が、ステップ７０４に戻る。
【００６４】
テストプログラムの実行結果が正常でなかった場合には、処理がステップ７１８に進む。
【００６５】
ステップ７１８では、ＣＰＵ１１４が、第１の状態遷移回路３０４に対する書き込みを行い、カウンタ３００でクロック信号１４２の周波数を測定する。具体的には、バスインタフェース３０８が、ＣＰＵ１１４からの書き込み要求を受け、カウント指令３２０を第１の状態遷移回路３０４に送信する。当該カウント指令３２０が入力された第１の状態遷移回路３０４が、ハイ状態のクリア信号３１２とハイ状態のイネーブル信号３１４を出力する。これにより、カウンタ３００のカウンタ値が初期化され（本実施例では“０”とされ）、イネーブル信号３１４がハイである期間中、カウンタ３００により、クロック信号１４２の立ち上がりエッジが発生する毎にカウンタ値が１インクリメントされる。カウンタ値３１０は、ＣＰＵ１１４により読み出される。当該期間の長さと、読み出されたカウンタ値３１０とを基に、ＣＰＵ１１４により、クロック信号１４２の周波数が測定（算出）される。
【００６６】
ステップ７２０では、ＣＰＵ１１４が、変数ｔの値から１を減じた値をレジスタ３０２に書き込む。結果として、変数ｔの値（１減じられた値）が周波数コード１４４として可変発振回路１２２に出力される。これにより、可変発振回路１２２が、当該周波数コード１４４が示す値に対応した周波数のクロック信号１４２を生成し出力する。
【００６７】
ステップ７２２の動作はステップ７１８と同様である。
【００６８】
ステップ７２２で測定された周波数は、テストプログラムの実行結果が正常であったときの周波数である。一方、ステップ７１８で測定した周波数は、テストプログラムの実行結果が正常でなかったときの周波数である。このため、両者の周波数の間に限界動作周波数が存在していることがわかる。両者の周波数の間に存在するいずれかの値が、限界動作周波数として、ＣＰＵ１１４により決定されてよい。なお、ステップ７１８、及びステップ７２２で測定しているのはクロック信号１４２の周波数であり、クロック信号１５６の周波数はその４倍となる。
【００６９】
限界動作周波数は、一般に、製造時のばらつきによる個体差、動作温度、電源電圧の影響を受ける他、半導体集積回路１００の長期間の稼働によって半導体素子の特性が劣化することに伴い低下する。限界動作周波数の計測結果は、動作温度や電源電圧の変動に対する動作速度のマージンが十分あるかどうかの確認に使用することができる。動作速度のマージンが不十分な半導体集積回路は動作温度や電源電圧が変動した時に誤動作する可能性があるため、誤動作が発生する前に動作速度のマージンが十分あるものと交換することにより、誤動作のリスクを軽減することができる。限界動作周波数の計測結果はまた、長時間稼働した後の半導体素子の特性劣化の度合いを推定するのにも用いることができる。特性劣化の時間変化と動作速度のマージンを組み合わせると、計測した半導体集積回路が正常に動作できる期間を推定することができる。
【００７０】
図８は、図６の制御装置６００で制御処理と計測処理（限界動作周波数を計測する処理）を時分割で処理する第１の例を示す図である。
【００７１】
図８によれば、制御装置６００の制御処理（例えば、クロック信号１５６に基づき動作する半導体集積回路１００による制御に従い機器６０２を制御する処理）は一定の周期で行われる。制御処理が実行される周期に対して制御処理に必要な時間は短い。そこで、図８によれば、各周期において、制御処理が終了した後の空き時間（制御処理が終了してから次の周期が開始するまでの空き時間）に計測処理が実行される。
【００７２】
図９は、図６の制御装置６００で制御処理と計測処理を時分割で処理する第２の例を示す図である。
【００７３】
図９によれば、制御対象の機器６０２が動作状態と停止状態を繰り返す。そこで、機器６０２が停止している時間に、計測処理が行われる。図８に比べると、計測処理を行う時間を長く確保できる。
【００７４】
上記の説明を、下記のように総括することができる。なお、下記は、上記の説明に無い事項を含んでいてもよい。
【００７５】
半導体集積回路１００内のクロック生成回路１１０は、クロック発振器６１０（外部の一例）からクロック信号１４０が入力され一つ又は複数の回路（例えば回路１１２、１１４、１１６及び１１８）に対してクロック信号１５６を出力する回路である。クロック生成回路１１０は、可変発振回路１２２と、選択回路１２０とを有する。可変発振回路１２２は、ＣＰＵ１１４によって指定された複数の周波数の中の一の周波数に従ったクロック信号１４２を生成し、当該クロック信号１４２を出力する。選択回路１２０は、入力されたクロック信号１４０及び１４２のいずれか一方をクロック信号１４８として出力する。クロック信号１５６は、選択回路１２０から出力されたクロック信号１４８に基づくクロック信号（例えば、ＰＬＬ１２６により周波数が高くされたクロック信号）である。
【００７６】
これにより、ＰＬＬ１２６の性能に依存しない高い分解能で内部回路の動作周波数を変更することと高い精度のクロック信号を出力することが可能である。なお、クロック信号１４０及び１４２のいずれを選択するかは、ＣＰＵ１１４が所定のプログラムを実行することにより、ＣＰＵ１１４からクロック制御回路１２４を介して選択回路１２０に指定されてよい。クロック信号１４０及び１４２のいずれを選択するかは、何番目の周期での制御処理であるかに応じて切り替えられてもよいし、少なくとも一つの制御処理において動的に切り替えられてもよい。
【００７７】
半導体集積回路１００（例えばクロック生成回路１１０）は、クロック制御回路１２４を更に有する。クロック制御回路１２４によって、クロック信号１４０の周期とクロック信号１４２の周期との比を特定する第１の計測処理（例えば図４を参照して説明した処理）が実行される。クロック信号１４０は、クロック信号１４２よりも高精度であるため、クロック信号１４０の周期を基準としてクロック信号１４２の周期を計測することで、クロック信号１４２の周期を高い精度で測定することが可能である。
【００７８】
第１の計測処理は、選択回路１２０にクロック信号１４０を選択させることと、クロック信号１５６の周期とクロック信号１４２の周期との比を特定することとを含む。クロック信号１４０が選択されれば、クロック信号１５６はクロック信号１４０に基づく信号となるため、クロック信号１５６は周期の精度が高い信号となる。
【００７９】
また、第１の計測処理において特定された比に基づく周波数は、制御処理でのクロック信号１４２の周波数（具体的には、当該周波数のクロック信号１４２を生成するための周波数コード１４４）として可変発振回路１２２に指定される。可変発振回路１２２は、指定された周波数をクロック信号１４２の周波数として決定する。このようにすることで、高い精度で測定された周波数に従ったクロック信号１４２を制御処理に利用することができる。
【００８０】
ＣＰＵ１１４は、クロック制御回路１２４を介して、クロック信号１４２についてテスト処理を正しく行える周波数とテスト処理を正しく行えない周波数とを特定する第２の計測処理（例えば図７を参照して説明した処理）を行う。これにより、テスト処理を正しく行える周波数とテスト処理を正しく行えない周波数との間の周波数である限界動作周波数を特定することができる。なお、「テスト処理」とは、例えば、上述したテストプログラムを処理することを意味する。
【００８１】
第２の計測処理は、下記の（ａ）乃至（ｄ）を含む。テスト処理を正しく行えない周波数は、（ｃ）の結果が否定のときの周波数である。テスト処理を正しく行える周波数は、結果が否定となった（ｃ）の直前回の（ｃ）の結果が肯定のときの周波数である。
（ａ）クロック信号１４２について選択可能な周波数のうち当該第２の計測処理において未決定の周波数を決定すること（例えばステップ７０４又は７１６）。
（ｂ）（ａ）で決定された周波数のクロック信号１４２に基づくクロック信号１５６で処理のテストを行うこと（例えばステップ７０８）。
（ｃ）テストの結果が正しいか否かの判断を行うこと（例えばステップ７１４）。
（ｄ）（ｃ）の結果が肯定であれば、(ａ)を行うこと（例えばステップ７１６）。
【００８２】
第１の計測処理と第２の計測処理のうちの少なくとも一つの計測処理は、前記クロック生成回路から出力され入力されたクロック信号に同期して動作する一つ以上の回路による制御処理が行われていない期間に行われる。これにより、制御処理に影響が出ることを避けることができる。なお、制御処理が行われていない期間とは、下記の（Ｐ）及び（Ｑ）の少なくとも一つである（ｘ及びｙはいずれも自然数）。
（Ｐ）ｘ番目の周期で行われる制御処理の終了から（ｘ＋１）番目の周期で行われる制御処理の開始までの期間（例えば、図８を参照して説明した期間）。
（Ｑ）制御処理として一つ又は複数の回路の停止に相当する処理が行われるｙ番目の周期と、制御処理として一つ又は複数の回路の停止に相当する処理が行われる（ｙ＋２）番目の周期との間にある（ｙ＋１）番目の周期としての期間（例えば、図９を参照して説明した期間（例えば周期（ｎ+２））。
【００８３】
上記外部は、水晶振動子を使用した発振回路（例えばクロックソースの一例であるクロック発振器６１０）である。このため、クロック信号１４０の周波数の精度は高い。
【００８４】
半導体集積回路１００は、上述したクロック生成回路１１０と、ＣＰＵ１１４（一つ又は複数のコンピュータプログラムを実行する一以上のプロセッサであるプロセッサ部の一例）とを有する。クロック生成回路１１０からクロック信号を受け取る一つ又は複数の回路のいずれかが、ＣＰＵ１１４である。クロック生成回路１１０をＣＰＵ１１４が制御する。ＣＰＵ１１４は、一つ又は複数のコンピュータプログラムを実行することにより、制御処理が行われていない期間に少なくとも一つの計測処理を行う。プログラムを実行するＣＰＵ１１４は、制御処理が行われていない期間を把握できるため、ＣＰＵ１１４により計測処理の開始が制御されれば、制御処理が行われていない期間に計測処理を行うことができる。なお、計測処理は、計測処理を行うことの指令がバス１５８を介してクロック制御回路１２４に入力された場合に当該クロック制御回路１２４によって行われてよい。
【符号の説明】
【００８５】
１００  半導体集積回路
【図１】
2020071604.tif 000003
【図２】
2020071604.tif 000004
【図３】
2020071604.tif 000005
【図４】
2020071604.tif 000006
【図５】
2020071604.tif 000007
【図６】
2020071604.tif 000008
【図７】
2020071604.tif 000009
【図８】
2020071604.tif 000010
【図９】
2020071604.tif 000011