(57)【要約】【課題】離散的なトリミングデータを保持するトリミングテーブルを使って、複雑なアルゴリズムを用いずにアナログ回路の動作補償を行う場合であっても、ＣＰＵの誤動作などの深刻な問題の発生を防止する。【解決手段】ＣＰＵと、設定されるトリミングデータによって特性が変更されるアナログ回路を含むＬＳＩにおいて、温度、動作電圧、出荷後の経過時間などの環境パラメータの複数の範囲ごとに対応するトリミングデータを保持するトリミングテーブルを備える。ＬＳＩはさらに、環境パラメータの値を測定するセンサを備え、その測定値に基づいてトリミングテーブルを参照することにより、設定するトリミングデータを変更する。トリミングデータの変更状態をＣＰＵからアクセス可能、または、変更されたことをＣＰＵに割り込みで通知、または、変更の際にＣＰＵの動作を一時的に停止させる。【選択図】図１
2014138094.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、設定されるトリミングデータと環境パラメータによって特性が変更されるアナログ回路と、前記環境パラメータの値を測定するセンサと、前記環境パラメータの複数の範囲ごとに対応する前記トリミングデータの値を保持するトリミングテーブルを格納可能なメモリと、前記センサによる前記環境パラメータの測定値に基づいて、前記トリミングテーブルを参照することにより、前記アナログ回路に設定する前記トリミングデータの値を変更可能な、トリミング制御部とを備え、
前記トリミングデータの値の変更状態を前記ＣＰＵからアクセス可能に構成され、または、前記トリミングデータの値の前記変更を前記ＣＰＵに通知可能に構成され、または、前記トリミングデータの値の変更に伴って前記ＣＰＵの動作状態を変更可能に構成される、半導体装置。
【請求項２】
請求項１において、前記トリミング制御部は、前記変更状態を保持し、前記ＣＰＵからアクセス可能な、ステータスレジスタを備える、半導体装置。
【請求項３】
請求項１において、前記トリミング制御部は、前記トリミングデータの値を変更するときに、前記ＣＰＵに対して割り込みを発行可能に構成される、半導体装置。
【請求項４】
請求項１において、前記トリミング制御部は、前記トリミングデータの値を変更するときに、前記ＣＰＵの動作を停止させる制御を可能に構成される、半導体装置。
【請求項５】
請求項１において、前記ＣＰＵは、前記トリミング制御部に対して、前記トリミングデータの値の変更を許可または禁止する制御を可能に構成される、半導体装置。
【請求項６】
請求項１において、前記トリミング制御部は、比較データを保持可能な比較データレジスタと、前記比較データと前記環境パラメータの前記測定値とを比較し、前記比較結果に基づいて前記トリミングデータの値を選択する、トリミングデータ選択部とを備える、半導体装置。
【請求項７】
請求項１において、前記トリミング制御部は、比較データを保持可能な比較データレジスタと、前記比較データと前記環境パラメータの前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を徐々に増加または減少させることによって変更する、トリミングデータ変更部とを備える、半導体装置。
【請求項８】
請求項１において、前記環境パラメータは温度であり、前記センサは、前記アナログ回路の動作温度を測定可能であり、前記トリミングテーブルは、前記アナログ回路の特性を補償するためのトリミングデータの値を、複数の温度範囲ごとに格納し、前記トリミング制御部は、高温側温度閾値と低温側温度閾値を保持可能な比較データレジスタと、前記高温側温度閾値及び前記低温側温度閾値と前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を変更可能な、半導体装置。
【請求項９】
請求項１において、前記環境パラメータは前記アナログ回路に供給される電源電圧であり、前記センサは、前記電源電圧を測定可能であり、前記トリミングテーブルは、前記アナログ回路の特性を補償するためのトリミングデータの値を、複数の電源電圧範囲ごとに格納し、前記トリミング制御部は、電圧閾値を保持可能な比較データレジスタと、前記電圧閾値と前記測定値とを比較し、前記比較結果に基づいて前記トリミングデータの値を変更可能な、半導体装置。
【請求項１０】
請求項１において、前記環境パラメータは時間であり、前記センサは、日時を計時する時計であり、前記トリミングテーブルは、前記アナログ回路の特性を補償するためのトリミングデータの値を、複数の経過時間範囲ごとに格納し、前記トリミング制御部は、経過時間閾値を保持可能な比較データレジスタと、前記経過時間閾値と前記時計によって計時される前記日時に基づいて算出された経過時間とを比較し、比較結果に基づいて前記トリミングデータの値を変更可能な、半導体装置。
【請求項１１】
ＣＰＵと、前記ＣＰＵへクロックを供給し、設定されるトリミングデータと環境パラメータよって発振周波数の特性が変更されるクロック発生回路と、前記環境パラメータの値を測定するセンサと、前記環境パラメータの複数の範囲ごとに対応する前記トリミングデータの値を保持するトリミングテーブルを格納可能なメモリと、前記センサによる前記環境パラメータの測定値に基づいて、前記トリミングテーブルを参照することにより、前記クロック発生回路に設定する前記トリミングデータの値を変更可能な、トリミング制御部とを備える、半導体装置。
【請求項１２】
請求項１１において、前記半導体装置は、前記クロック発生回路から前記ＣＰＵへのクロック供給を停止可能なクロックストップ制御回路を備え、前記トリミング制御部は、比較データを保持可能な比較データレジスタと、前記比較データと前記環境パラメータの前記測定値とを比較し、前記比較結果に基づいて前記トリミングデータの値を切替える、トリミングデータ切替部とを備え、前記トリミング制御部は、前記クロックストップ制御回路により前記ＣＰＵへのクロック供給を停止した後に、前記トリミングデータの値を切替える、制御動作を可能に構成される、半導体装置。
【請求項１３】
請求項１２において、前記ＣＰＵへのクロック供給を停止した後、所定のクロックパルス数をカウントした後に、前記クロックストップ制御回路に対して前記ＣＰＵへのクロック供給を再開させる制御が可能な、カウンタをさらに備える、半導体装置。
【請求項１４】
請求項１１において、前記トリミング制御部は、比較データを保持可能な比較データレジスタと、前記比較データと前記環境パラメータの前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を徐々に増加または減少させることによって変更する、トリミングデータ変更部とを備える、半導体装置。
【請求項１５】
請求項１１において、前記ＣＰＵは、前記トリミング制御部に対して、前記トリミングデータの値の変更を許可または禁止する制御を可能に構成される、半導体装置。
【請求項１６】
請求項１１において、前記環境パラメータは温度であり、前記センサは、前記クロック発生回路の動作温度を測定可能であり、前記トリミングテーブルは、前記クロック発生回路の特性を補償するためのトリミングデータの値を、複数の温度範囲ごとに格納し、前記トリミング制御部は、高温側温度閾値と低温側温度閾値を保持可能な比較データレジスタと、前記高温側温度閾値及び前記低温側温度閾値と前記測定値とを比較し、前記比較結果に基づいて前記トリミングデータの値を変更可能な、半導体装置。
【請求項１７】
請求項１１において、前記環境パラメータは前記クロック発生回路に供給される電源電圧であり、前記センサは、前記電源電圧を測定可能であり、前記トリミングテーブルは、前記クロック発生回路の特性を補償するためのトリミングデータの値を、複数の電源電圧範囲ごとに格納し、前記トリミング制御部は、電圧閾値を保持可能な比較データレジスタと、前記電圧閾値と前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を変更可能な、半導体装置。
【請求項１８】
請求項１１において、前記環境パラメータは時間であり、前記センサは、日時を計時する時計であり、前記トリミングテーブルは、前記クロック発生回路の特性を補償するためのトリミングデータの値を、複数の経過時間範囲ごとに格納し、前記トリミング制御部は、経過時間閾値を保持可能な比較データレジスタと、前記経過時間閾値と前記時計によって計時される前記日時に基づいて算出された経過時間とを比較し、比較結果に基づいて前記トリミングデータの値を変更可能な、半導体装置。
【請求項１９】
請求項１１において、前記環境パラメータは温度と前記クロック発生回路に供給される電源電圧と時間であり、
前記半導体装置は、前記センサとして、前記クロック発生回路の動作温度を測定可能な温度センサと、前記クロック発生回路に供給される電源電圧を測定可能な電圧測定回路と、日時を計時する時計とを備え、
前記トリミングテーブルは、前記クロック発生回路の特性を補償するためのトリミングデータの値を、複数の温度範囲及び複数の電源電圧範囲及び複数の経過時間範囲の組合せごとに格納し、
前記トリミング制御部は、前記温度センサによって測定された前記クロック発生回路の動作温度と、前記電圧測定回路によって測定された前記クロック発生回路の電源電圧と、前記時計によって計時される前記日時に基づいて算出された経過時間とに基づいて、前記トリミングテーブルを参照することにより、前記クロック発生回路に設定する前記トリミングデータの値を変更可能に構成される、半導体装置。
【請求項２０】
請求項１において、単一半導体基板上に形成された、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アナログ回路を備える半導体装置に関し、特にアナログ回路の動的トリミングに好適に利用できるものである。
【背景技術】
【０００２】
システムＬＳＩ（Large Scale Integrated circuit）などの半導体装置に搭載されているアナログ回路モジュールの多くは、様々な要因によりその特性を大きく変化させ、仕様で許容される範囲を外れる恐れがある。その対策として、温度依存特性などを量産出荷前にトリミングする手法があるが、動作電圧・温度・経時変化（経年劣化）等の動作環境変化に伴う特性変動を完全には抑制できない場合がある。特に、システムＬＳＩに搭載されるＣＰＵ（Central Processing Unit）などのプロセッサを始めとするロジック回路に、クロックを供給する発振回路をオンチップに形成する場合に、発振周波数（クロック周波数）の精度に対する厳しい要求には、十分に応えられない場合がある。ＣＰＵには、安定したクロック周波数の供給が求められ、例えば中心周波数に対する精度を１％以内とする要求がある。発振回路をオンチップの素子で形成する場合、仕様で想定すべき製造ばらつきと、動作電圧・温度・経時変化（経年劣化）等の動作環境の変化の範囲において、例えばトランジスタの特性は、数１０％の範囲で変動する。トリミングは、ＬＳＩの製造後の検査で素子特性を測定し補償パラメータを求めて設定するなどにより、製造ばらつきによる特性変動を補償することができるが、動作環境の変化を補償することはできない。そのため、クロックを供給する発振回路をオンチップに形成する場合に、１％以内の精度に抑えることは、極めて厳しい要求である。
【０００３】
特許文献１には、温度依存性を持つ半導体集積回路におけるトリミング調整方法が開示されている。半導体集積回路の製造後に、高温での測定と低温での測定を実施し、温度依存性を考慮して最適なトリミング値を決める。
【０００４】
特許文献２には、IC製造後のテストにおいて素子の特性を測定することによって、パラメータの最適値を求め、参照データテーブルに書き込んでおき、所望のクロック及び消費電流に合わせて最適なパラメータを選択して回路ブロックに供給する技術が開示されている。
【０００５】
特許文献３には、複数の温度における補償パラメータをメモリに探索表として記憶しておき、作動時の温度を測定して、この温度測定値に対応するパラメータを探索表から取り出し、その温度における適切な補償パラメータを算出して、基準電圧発生回路を補償する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２００３２７号公報
【特許文献２】米国特許第６７９２３７９号明細書
【特許文献３】特開平６−２７６０９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１、２及び３について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００８】
ＣＰＵにクロックを供給する発振回路をオンチップに形成しその発振周波数を高精度に補償するなど、ＣＰＵを搭載したシステムＬＳＩにおいて、オンチップのアナログ回路の特性を、動作電圧・温度・経時変化（経年劣化）等の動作環境の変化の範囲において高精度に補償するためには、１つのトリミングデータでは十分ではない場合がある。例えば、特許文献１に開示される技術によれば、リングオシレータの発振周波数を、想定される温度範囲で数％以内に抑えることができるが、動作電圧や経時変化まで考慮すると、さらに高精度にすることはできない。第００４４段落と図１０にリングオシレータの出力周波数（発振周波数）の補正を行う実施例が開示され、出力周波数（発振周波数）の変動を、中心周波数500Hzに対して−25℃から＋85℃の温度範囲で、480Hzから520Hzの範囲に抑えられることが記載されている。これは、±4%にあたり、動作電圧の変動や経時変化の影響を考慮すればさらに、拡大する。特許文献２に開示される技術によれば、複数のトリミングデータを求めておき、使用時に適切なトリミングデータを選択して補償に利用するので、使用時ごとのユーザーの要求に適応することができるが、動作環境の変化には十分には対応しきれない。
【０００９】
特許文献３に開示される技術によれば、複数の温度におけるトリミングデータを求めてメモリに記憶しておき、使用時には温度を実測し、測定された温度測定値におけるトリミングデータを算出して使用するので、温度変化に対しては高精度の補償が実現される。しかし、適切なトリミングデータの算出には、複雑なアルゴリズムを採用する必要がある。また、動作電圧や経時変化については考慮されていないため、これを考慮するとさらに複雑なアルゴリズムが必要となる。これに対し、メモリに格納された複数の温度におけるトリミングデータから、適切なものを単純に選択して補償に使用すれば、複雑なアルゴリズムの適用を不要とすることができる。しかしながら、メモリに格納するトリミングデータを、動作環境の変化の範囲全体で連続的な値とすることは不可能であるから、トリミングデータは離散的となる。その場合には、トリミングデータを切り替える際に、アナログ回路の特性が不連続に変化するという新たな問題が発生する。特に、ＣＰＵにクロックを供給する発振回路において、トリミングデータを切り替えた場合には、発振周波数に瞬間的な高周波または低周波が発生し、あるいはジッタが発生する恐れがある等の新たな問題が生じる。クロックが不安定になった場合、ＣＰＵなどのロジック回路では、誤動作を惹き起こすなどの深刻な問題が生じる恐れがある。クロック発生器以外のアナログ回路モジュールにおいても、特性の不連続な変化が種々の問題を発生することがある。
【００１０】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施の形態によれば、下記の通りである。
【００１２】
すなわち、ＣＰＵと、温度、動作電圧、出荷後の経過時間などの環境パラメータと設定されるトリミングデータによって特性が変更されるアナログ回路とを含む半導体装置において、環境パラメータの複数の範囲ごとに対応するトリミングデータの値を保持するトリミングテーブルを格納可能なメモリを備える。半導体装置はさらに、環境パラメータの値を測定するセンサを備え、その測定値に基づいてトリミングテーブルを参照することにより、設定するトリミングデータの値を変更可能な、トリミング制御部を備える。トリミングデータの値の変更状態をＣＰＵからアクセス可能に構成する。または、トリミングデータの値の変更をＣＰＵに割り込みなどで通知可能に構成する。または、トリミングデータの値の変更に伴って、ＣＰＵの動作を一時的に停止可能に構成する。
【発明の効果】
【００１３】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、離散的なトリミングデータを保持するトリミングテーブルを使って、複雑なアルゴリズムを用いずにアナログ回路の動作補償を行う場合であっても、ＣＰＵに誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施形態１に係る半導体装置の構成を表すブロック図である。
【図２】図２は、トリミングデータ毎の温度と発振周波数の関係を示す特性図である。
【図３】図３は、実施形態１に係る半導体装置の動作例を表すタイミングチャートである。
【図４】図４は、温度変化とトリミングデータの変更方法の関係を表す説明図である。
【図５】図５は、半導体装置の一動作例における新たな課題を表すタイミングチャートである。
【図６】図６は、発振回路の発振周波数の経時変化を表す説明図である。
【図７】図７は、実施形態２に係る半導体装置の構成を表すブロック図である。
【図８】図８は、発振回路の発振周波数の経時変化に対応するためのトリミングテーブルの一例を表す説明図である。
【図９】図９は、実施形態２に係る発振回路の構成例を表すブロック図である。
【図１０】図１０は、実施形態２に係るトリミング制御部の構成例を表すブロック図である。
【図１１】図１１は、トリミングデータのトリミング制御部への供給方法を表す説明図である。
【図１２】図１２は、実施形態２に係る半導体装置の動作の一例を表すタイミングチャートである。
【図１３】図１３は、実施形態２に係る半導体装置の動作の別の一例を表すタイミングチャートである。
【図１４】図１４は、トリミングデータの変更に伴う発振回路の動作例を表すタイミングチャートである。
【図１５】図１５は、実施形態３に係るトリミング制御部の構成例を表すブロック図である。
【図１６】図１６は、実施形態３に係る半導体装置の動作におけるトリミングデータの変更方法の一例を表すタイミングチャートである。
【図１７】図１７は、実施形態３に係る半導体装置の動作におけるトリミングデータの変更方法の一例を表すタイミングチャートの拡大図である。
【図１８】図１８は、実施形態４に係る半導体装置の構成を表すブロック図である。
【発明を実施するための形態】
【００１６】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１７】
〔１〕＜トリミングデータの動的変更制御＞
代表的な実施の形態に係る半導体装置（１）は、以下の要素を含んで構成される。
【００１８】
ＣＰＵ（２）。設定されるトリミングデータと環境パラメータによって特性が変更されるアナログ回路（３、１１）。前記環境パラメータの値を測定するセンサ（４）。前記環境パラメータの複数の範囲ごとに対応する前記トリミングデータの値を保持するトリミングテーブル（５）を格納可能なメモリ（６）。前記センサによる前記環境パラメータの測定値に基づいて、前記トリミングテーブルを参照することにより、前記アナログ回路に設定する前記トリミングデータの値を変更可能な、トリミング制御部（７）。
【００１９】
半導体装置（１）は、前記トリミングデータの値の変更状態を前記ＣＰＵからアクセス可能に構成され、または、前記トリミングデータの値の前記変更を前記ＣＰＵに通知可能に構成され、または、前記トリミングデータの値の変更に伴って前記ＣＰＵの動作を一時的に停止可能に構成される。
【００２０】
これにより、離散的なトリミングデータを保持するトリミングテーブルを使って、複雑なアルゴリズムを用いずにアナログ回路の動作補償を行う場合であっても、ＣＰＵに誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００２１】
〔２〕＜ステータスレジスタ＞
項１において、前記トリミング制御部は、前記変更状態を保持し、前記ＣＰＵからアクセス可能な、ステータスレジスタ（２０）を備える。
【００２２】
これにより、ＣＰＵ（２）は、トリミングデータの変更状態を監視し、監視結果に基づいて適切にアナログ回路（３、１１）を制御することができ、誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００２３】
〔３〕＜割り込み＞
項１において、前記トリミング制御部は、前記トリミングデータの値を変更するときに、前記ＣＰＵに対して割り込みを発行可能に構成される（２３、２７）。
【００２４】
これにより、ＣＰＵ（２）はトリミングデータの変更状態を通知され、割り込み処理ルーチンにおいて適切にアナログ回路（３、１１）を制御することができ、誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００２５】
〔４〕＜ＣＰＵ  ｓｔｏｐ＞
項１において、前記トリミング制御部は、前記トリミングデータの値を変更するときに、前記ＣＰＵの動作を停止させる制御を可能に構成される（２２、２８、４２）。
【００２６】
これにより、ＣＰＵ（２）は、トリミングデータの値の変更に伴って発生する、アナログ回路（３、１１）の異常動作の影響を回避することができ、誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００２７】
〔５〕＜変更イネーブルレジスタ＞
項１から項４のうちのいずれか１項において、前記ＣＰＵは、前記トリミング制御部に対して、前記トリミングデータの値の変更を許可または禁止する制御を可能に構成される（２６）。
【００２８】
これにより、ＣＰＵ（２）は、その動作において、適切なタイミングでトリミングデータの変更を許可し、不適切な期間はトリミングデータの変更を禁止することができるので、誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００２９】
〔６〕＜トリミングデータ選択部＞
項１から項５のうちのいずれか１項において、前記トリミング制御部は、比較データを保持可能な比較データレジスタ（３５）と、前記比較データと前記環境パラメータの前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を選択する、トリミングデータ選択部（３０、３１）とを備える。
【００３０】
これにより、複雑なアルゴリズムを用いずにアナログ回路の動作補償を行うことができる。
【００３１】
〔７〕＜トリミングデータを徐々に変更＞
項１から項５のうちのいずれか１項において、前記トリミング制御部は、比較データを保持可能な比較データレジスタ（３５）と、前記比較データと前記環境パラメータの前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を徐々に増加または減少させることによって変更する、トリミングデータ変更部（３０、３１）とを備える。
【００３２】
これにより、複雑なアルゴリズムを用いず、アナログ回路に急激な特性変動を発生させることなく、アナログ回路の動作補償を行うことができる。
【００３３】
〔８〕＜温度補償＞
項１から項７のうちのいずれか１項において、前記環境パラメータは温度であり、前記センサは、前記アナログ回路の動作温度を測定可能であり（４＿１）、前記トリミングテーブルは、前記アナログ回路の特性を補償するためのトリミングデータの値を、複数の温度範囲ごとに格納する。前記トリミング制御部は、高温側温度閾値と低温側温度閾値を保持可能な比較データレジスタ（３５）と、前記高温側温度閾値及び前記低温側温度閾値と前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を変更可能に構成される。
【００３４】
これにより、アナログ回路（３、１１）の温度依存性が補償される。
【００３５】
〔９〕＜電源電圧補償＞
項１から項７のうちのいずれか１項において、前記環境パラメータは前記アナログ回路に供給される電源電圧であり、前記センサは、前記電源電圧を測定可能であり（４＿２）、前記トリミングテーブルは、前記アナログ回路の特性を補償するためのトリミングデータの値を、複数の電源電圧範囲ごとに格納する。前記トリミング制御部は、電圧閾値を保持可能な比較データレジスタ（３５）と、前記電圧閾値と前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を変更可能に構成される。
【００３６】
これにより、アナログ回路（３、１１）の電源電圧依存性が補償される。
【００３７】
〔１０〕＜経年変化補償＞
項１から項７のうちのいずれか１項において、前記環境パラメータは時間であり、前記センサは、日時を計時する時計（４＿３）であり、前記トリミングテーブルは、前記アナログ回路の特性を補償するためのトリミングデータの値を、複数の経過時間範囲ごとに格納する。前記トリミング制御部は、経過時間閾値を保持可能な比較データレジスタ（３５）と、前記経過時間閾値と前記時計によって計時される前記日時に基づいて算出された経過時間とを比較し、比較結果に基づいて前記トリミングデータの値を変更可能に構成される。
【００３８】
これにより、アナログ回路（３、１１）の特性の経年変化が補償される。
【００３９】
〔１１〕＜ＣＰＵのクロック発生回路の動的トリミング＞
代表的な実施の形態に係る半導体装置（１）は、以下の要素を含んで構成される。
【００４０】
ＣＰＵ（２）。前記ＣＰＵへクロックを供給し、設定されるトリミングデータと環境パラメータよって発振周波数の特性が変更されるクロック発生回路（１１）。前記環境パラメータの値を測定するセンサ（４）。前記環境パラメータの複数の範囲ごとに対応する前記トリミングデータの値を保持するトリミングテーブル（５）を格納可能なメモリ（６）。前記センサによる前記環境パラメータの測定値に基づいて、前記トリミングテーブルを参照することにより、前記クロック発生回路に設定する前記トリミングデータの値を変更可能な、トリミング制御部（７）。
【００４１】
これにより、離散的なトリミングデータを保持するトリミングテーブルを使って、複雑なアルゴリズムを用いずにクロック発生回路の動作補償を行う場合であっても、ＣＰＵに誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００４２】
〔１２〕＜トリミングデータ切替時のクロック停止＞
項１１において、前記半導体装置は、前記クロック発生回路から前記ＣＰＵへのクロック供給を停止可能なクロックストップ制御回路（４２）を備える。前記トリミング制御部は、比較データを保持可能な比較データレジスタ（３５）と、前記比較データと前記環境パラメータの前記測定値とを比較し、前記比較結果に基づいて前記トリミングデータの値を切替える、トリミングデータ切替部（３０、３１）とを備える。前記トリミング制御部は、前記クロックストップ制御回路により前記ＣＰＵへのクロック供給を停止した後に、前記トリミングデータの値を切替える、制御動作を可能に構成される。
【００４３】
これにより、ＣＰＵ（２）は、トリミングデータの値の変更に伴って発生する、クロック発生回路（１１）の異常な動作の影響を回避することができ、誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００４４】
〔１３〕＜トリミングデータ切替時のクロック供給の再開＞
項１２において、前記ＣＰＵへのクロック供給を停止した後、所定のクロックパルス数をカウントした後に、前記クロックストップ制御回路に対して前記ＣＰＵへのクロック供給を再開させる制御が可能な、カウンタ（５０）をさらに備える。
【００４５】
これにより、クロック発生回路による発振が安定した後にＣＰＵクロックの動作を再開することができる。
【００４６】
〔１４〕＜トリミングデータを徐々に変更＞
項１１において、前記トリミング制御部は、比較データを保持可能な比較データレジスタ（３５）と、前記比較データと前記環境パラメータの前記測定値とを比較し、比較結果に基づいて前記トリミングデータの値を徐々に増加または減少させることによって変更する、トリミングデータ変更部（３０、３１）とを備える。
【００４７】
これにより、複雑なアルゴリズムを用いず、例えば、瞬間的な著しく高い周波数のクロックの出力やジッタの発生などの、急激な特性変動を発生させることなく、クロック発生回路の動作補償を行うことができる。
【００４８】
〔１５〕＜変更イネーブルレジスタ＞
項１１から項１４のうちの１項において、前記ＣＰＵは、前記トリミング制御部に対して、前記トリミングデータの値の変更を許可または禁止する制御を可能に構成される（２６）。
【００４９】
これにより、ＣＰＵ（２）は、その動作において、適切なタイミングでトリミングデータの変更を許可し、不適切なタイミングではトリミングデータの変更を禁止することができるので、誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００５０】
〔１６〕＜温度補償＞
項１１から項１４のうちのいずれか１項において、前記環境パラメータは温度であり、前記センサは、前記クロック発生回路の動作温度を測定可能であり（４＿１）、前記トリミングテーブルは、前記クロック発生回路の特性を補償するためのトリミングデータの値を、複数の温度範囲ごとに格納する。前記トリミング制御部は、高温側温度閾値と低温側温度閾値を保持可能な比較データレジスタ（３５）と、前記高温側温度閾値及び前記低温側温度閾値と前記測定値とを比較し、前記比較結果に基づいて前記トリミングデータの値を変更可能に構成される。
【００５１】
これにより、クロック発生回路（１１）の温度依存性が補償される。
【００５２】
〔１７〕＜電源電圧補償＞
項１１から項１４のうちのいずれか１項において、前記環境パラメータは前記クロック発生回路に供給される電源電圧であり、前記センサは、前記電源電圧を測定可能であり（４＿２）、前記トリミングテーブルは、前記クロック発生回路の特性を補償するためのトリミングデータの値を、複数の電源電圧範囲ごとに格納する。前記トリミング制御部は、電圧閾値を保持可能な比較データレジスタ（３５）と、前記電圧閾値と前記測定値とを比較し、前記比較結果に基づいて前記トリミングデータの値を変更可能に構成される。
【００５３】
これにより、クロック発生回路（１１）の電源電圧依存性が補償される。
【００５４】
〔１８〕＜経年変化補償＞
項１１から項１４のうちのいずれか１項において、前記環境パラメータは時間であり、前記センサは、日時を計時する時計（４＿３）であり、前記トリミングテーブルは、前記クロック発生回路の特性を補償するためのトリミングデータの値を、複数の経過時間範囲ごとに格納する。前記トリミング制御部は、経過時間閾値を保持可能な比較データレジスタ（３５）と、前記経過時間閾値と前記時計によって計時される前記日時に基づいて算出された経過時間とを比較し、前記比較結果に基づいて前記トリミングデータの値を変更可能に構成される。
【００５５】
これにより、クロック発生回路（１１）の特性の経年変化が補償される。
【００５６】
〔１９〕＜温度補償＋電源電圧補償＋経年変化補償＞
項１１から項１４のうちのいずれか１項において、前記環境パラメータは温度と前記クロック発生回路に供給される電源電圧と時間であり、前記半導体装置は、前記センサとして、前記クロック発生回路の動作温度を測定可能な温度センサ（４＿１）と、前記クロック発生回路に供給される電源電圧を測定可能な電圧測定回路（４＿２）と、日時を計時する時計（４＿３）とを備える。
【００５７】
前記トリミングテーブルは、前記クロック発生回路の特性を補償するためのトリミングデータの値を、複数の温度範囲及び複数の電源電圧範囲及び複数の経過時間範囲の組合せごとに格納する。
【００５８】
前記トリミング制御部は、前記温度センサによって測定された前記クロック発生回路の動作温度と、前記電圧測定回路によって測定された前記クロック発生回路の電源電圧と、前記時計によって計時される前記日時に基づいて算出された経過時間とに基づいて、前記トリミングテーブルを参照することにより、前記クロック発生回路に設定する前記トリミングデータの値を変更可能に構成される。
【００５９】
これにより、クロック発生回路（１１）の温度依存性と、電源電圧依存性と、特性の経年変化が、すべて補償される。
【００６０】
〔２０〕＜シングルチップ＞
項１から項１９のうちのいずれか１項において、前記半導体装置は、単一半導体基板上に形成される。
【００６１】
これにより、単一半導体基板上に集積されたＬＳＩにおいて、アナログ回路の動作補償を行う場合であっても、ＣＰＵに誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００６２】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００６３】
〔実施形態１〕＜トリミングデータの動的変更制御＞
図１は、実施形態１に係る半導体装置の構成を表すブロック図である。実施形態１に係る半導体装置１は、ＣＰＵ２とアナログ回路３とセンサ４とメモリ６とトリミング制御部７を含んで構成される。アナログ回路３は、設定されるトリミングデータと環境パラメータによって特性が変更される。ここで、環境パラメータとは、アナログ回路３が動作する環境のパラメータであって、温度、電源電圧、応力、製造されてからの経過時間、累積動作時間などを指す。センサ４は、これらの環境パラメータの値を測定する、温度センサ、電圧検出回路、アナログ／ディジタル変換器、歪ゲージ、経過時間を計時するための時計などであり、複数種類のセンサを備えても良い。メモリ６は、環境パラメータの複数の範囲ごとに対応するトリミングデータの値を保持するトリミングテーブル５を格納可能に、構成される。トリミング制御部７は、センサ４による環境パラメータの測定値に基づいて、トリミングテーブル５を参照することにより、アナログ回路３に設定するトリミングデータの値を変更することできる、制御回路である。半導体装置１は、トリミングデータの値の変更状態をＣＰＵ２からアクセス可能に構成され、または、トリミングデータの値の変更をＣＰＵ２に通知可能に構成され、または、トリミングデータの値の変更に伴ってＣＰＵ２の動作を一時的に停止可能に構成される。特に制限されないが、これらの構成要素は、例えば単結晶シリコン基板などの同一半導体基板上に、公知の半導体製造技術によって形成することができる。特にアナログ回路３とセンサ４を同一半導体基板上に、さらに、隣接配置して形成することにより、アナログ回路３が動作する環境パラメータを正確に測定することができ、補償の精度を向上することができる。
【００６４】
これにより、離散的なトリミングデータを保持するトリミングテーブルを使って、複雑なアルゴリズムを用いずにアナログ回路の動作補償を行う場合であっても、ＣＰＵに誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００６５】
実施形態１に係る半導体装置１の動作について説明する。
【００６６】
図２は、トリミングデータ毎の温度と発振周波数の関係を示す特性図である。アナログ回路３の一例として発振回路を、環境パラメータの一例として温度を採って説明する。横軸は温度であり、縦軸は発振周波数である。仕様により、低温側Tcoldから高温側Thotまでの温度範囲において、発振周波数を中心周波数fcに対して±1.5Δf以内に抑えることが求められているものとする。トリミングを経ない発振回路の特性は、例えば「No Trim」の直線のようになり、低温側の広範囲と高温側の一部で、仕様を満足することができない。中心温度Ttypにおいて発振周波数が中心周波数fcとなるように、トリミングデータData_A (Typ)によってトリミングを行うと、中心温度Ttypを挟んでTtypに近い範囲では、仕様を満足することができるように調整される。しかし、仕様が厳しい場合、低温側下限Tcoldと高温側上限Thotそれぞれに近い温度範囲では、仕様を満足することができない。そこで、高温側で発振周波数を中心周波数fcにトリミングする高温側トリミングTt1と、低温側で発振周波数を中心周波数fcにトリミングする低温側トリミングTt2とをそれぞれ中心とするトリミングデータData_B (Hot)とData_C (Cold)とを求める。温度範囲毎に、適切なトリミングデータを使用することにより、余裕をもって仕様を満足することができる。即ち、３つの温度範囲Thot〜Tth1、Tth1〜Tth2、Tth2〜Tcoldのそれぞれにおいて、トリミングデータData_B (Hot)、Data_A (Typ)、Data_C (Cold)を使ってトリミングすることにより、発振周波数は、中心周波数fc±Δf以内に抑えることができ、仕様（中心周波数fc±1.5Δf以内）を満足することができる。算出したトリミングデータData_B (Hot)、Data_A (Typ)、Data_C (Cold)は、トリミングテーブル５としてメモリ６に格納する。メモリ６はフラッシュメモリ（登録商標）などの電気的に書き換え可能な不揮発性メモリであれば好適であるが、ブートプログラムなどにより、電源投入直後に外部からトリミングテーブル５がロードされるＲＡＭ（Random Access Memory）であってもよい。
【００６７】
これらのトリミングデータは、半導体装置１の出荷のための良品選別テストにおいて、アナログ回路３（発振回路）の特性を測定することにより、その実測値等に基づいて算出することができる。このときの測定環境におけるアナログ回路３（発振回路）の温度は、中心温度Ttypの他、低温側下限Tcoldと高温側上限Thot、或いは、高温側と低温側のトリミング温度Tt1とTt2であってもよく、一方、任意の温度であってもよい。任意の測定温度の場合には、デバイスシミュレーションなどによって予め求めておいた、実測値とトリミングデータの相関関係から、トリミングデータData_B (Hot)、Data_A (Typ)とData_C (Cold)とを求めることができる。また、相関関係は、量産実績に基づいて、逐次補正して精度を高めることもできる。半導体装置１の出荷のための良品選別テストを、高温または低温で実施するのは、コスト面の負担が大きいので、精度の高い相関関係を用いて常温測定のみの実測値から、トリミングデータData_B (Hot)、Data_A (Typ)とData_C (Cold)とを求めることにより、テストコストを抑えることができる。
【００６８】
図３は、実施形態１に係る半導体装置１の動作例を表すタイミングチャートである。
【００６９】
図３には、横軸に時間をとり、縦軸側には上から順に、温度、リセット信号（Reset）の波形、トリミングデータの値、トリミング変更イネーブル信号、比較データレジスタ１と２、及び、発振周波数が、示される。温度は温度センサ４によって測定され、比較データレジスタ１と２に設定される温度閾値を比較される。トリミング制御部７は、測定された温度が、どの温度範囲Thot〜Tth1、Tth1〜Tth2、Tth2〜Tcoldに入るかによって、トリミングデータData_B (Hot)、Data_A (Typ)、Data_C (Cold)を選んでアナログ回路３（発振回路）に設定してトリミングする。図３の最下段に示す発振周波数の軸において、３本の破線は、トリミングデータData_B (Hot)、Data_A (Typ)、Data_C (Cold)を選んだ場合それぞれの発振周波数を示す。
【００７０】
時刻t0後、トリミングデータは不定（indefinite）であり、比較データレジスタ１と２は初期値（Init）に初期化されている。このとき、発振周波数は中心周波数fcから外れ、不明の周波数となっている。リセット後、時刻t1において、トリミングデータは、Data_A (Typ)に初期化され、温度が常温Ttypであれば、発振周波数は中心周波数fcに調整される。比較データレジスタ１と２には、トリミングデータの値を切り替えるべき温度である、温度閾値Tth1とTth2が設定される。トリミング制御部７は、温度センサ４によって測定された温度を比較データレジスタ１と２に設定された温度閾値Tth1とTth2と比較し、温度が上昇して時刻t2にTth1を超えたことが検知すると、アナログ回路３（発振回路）のトリミングデータをData_B (Hot)に変更する。これにより、発振周波数は、太線で示すように低い側に調整される。その後、温度が低下して時刻t3にTth1を下回ったことを検知すると、トリミング制御部７は、アナログ回路３（発振回路）のトリミングデータをData_A (Typ)に変更する。その後さらに、温度が低下して時刻t4にTth2を下回ったことを検知すると、トリミング制御部７は、アナログ回路３（発振回路）のトリミングデータをData_C (Cold)に変更する。これにより、発振周波数は、太線で示すように高い側に調整される。
【００７１】
以上のように、アナログ回路３（発振回路）の発振周波数は、太線で示すように中心周波数fc±Δf以内に抑えられ、仕様（中心周波数fc±1.5Δf以内）を満足することができる。
【００７２】
以上は、仕様を満たすべき温度範囲を、３つの温度範囲に分けて、３種類のトリミングデータを使う実施形態について説明したが、４以上の温度範囲に分けても良い。温度範囲を細かく分けることにより、より高精度に制御することができる。また、電源電圧などのその他の環境パラメータも併用することができる。
【００７３】
温度センサ４によって測定された温度と、比較データレジスタ１と２に設定された温度閾値Tth1とTth2との比較には、安定のためヒステリシスを持たせるとよい。図４は、温度変化とトリミングデータの変更方法の関係を表す説明図である。横軸に時間、縦軸に温度をとり、最上段にトリミングデータの値を示してある。Tth1=83.5℃とした例を示す。温度が上昇するときには、Tth1(83.5℃)＋1.5℃=85.0℃を超えたときに、トリミングデータをData_A (Typ)からData_B (Hot)に変更し、温度が降下するときには、Tth1(83.5℃)−1.5℃=82.0℃を下回ったときに、トリミングデータをData_B (Hot)からData_A (Typ)に変更する。これにより、温度が比較データ（Tth）近傍にあるときに、いわゆるチャタリングするなど、比較結果が不安定になる問題を回避することができる。温度が上昇中か降下中かを判定する必要は特になく、中間温度のトリミングデータData_A (Typ)が使われているとき、高温側閾値温度（Tth1）を高めに、低温側閾値温度（Tth2）を低めに、それぞれ設定する。温度が上がって高温側トリミングデータData_B (Hot)が使われているときは、高温側閾値温度（Tth1）を低めに変更する。高温側トリミングデータData_B (Hot)が使われているときは、温度は高温側閾値温度（Tth1）よりも高く、次に比較結果が一致するのは、温度が降下する場合だからである。
【００７４】
以上述べてきたように、環境パラメータの複数の範囲ごとに対応するトリミングデータの値を保持するトリミングテーブル５をメモリ６に格納しておき、トリミング制御部７が、センサ４による環境パラメータの測定値に基づいて、トリミングテーブル５を参照して、アナログ回路３に設定するトリミングデータの値を変更することにより、アナログ回路の動作補償を行うことができる。
【００７５】
しかしながら、トリミングデータが変更されたことによって、アナログ回路３の特性は、一般に不連続に変化する。アナログ回路の特性上の不連続は、様々な問題を惹き起こす可能性がある。例えば、アナログ回路がクロック発生のための発振回路の場合、クロックジッタを発生し、あるいは瞬時的に極めて高い周波数または極めて低い周波数に相当するクロック波形を出力して、そのクロックが供給される論理回路の動作に、誤動作などの深刻な問題を惹き起こす恐れがある。
【００７６】
そこで、実施形態１に係る半導体装置１では、トリミングデータの値の変更状態をＣＰＵ２からアクセス可能に構成され、または、トリミングデータの値の変更をＣＰＵ２に通知可能に構成され、または、トリミングデータの値の変更に伴ってＣＰＵ２の動作を一時的に停止可能に構成される。トリミングデータの値の変更状態をフラグで監視し、またはトリミングデータの値そのものを、ＣＰＵ２から読み出すことができるように構成することにより、アナログ回路３が例えばアナログ／ディジタル変換器、ディジタル／アナログ変換器の場合に、ＣＰＵ２で動作させるプログラムによって、変換データを適切に補正することができる。また、トリミングデータの値が変更されたときに、割り込みを発行するなどの方法により、ＣＰＵ２に通知してもよい。ＣＰＵ２で動作させるプログラムの中の割り込み処理ルーチンによって、変換データを適切に補正することができる。アナログ回路３がＣＰＵ２の動作のためのクロックを供給するような場合には、上記のようなプログラムによる対策は困難である。ＣＰＵ２のクロックに、許容量を超えたジッタを含んだクロック波形、あるいは瞬時的に極めて高い周波数または極めて低い周波数に相当するクロック波形が印加されると、ＣＰＵ２自体が誤動作する恐れがあるため、その上で動作するソフトウェアの正常動作を保証することができないためである。その場合には、トリミングデータの値の変更に伴ってＣＰＵ２の動作を一時的に停止させる。ＣＰＵ２をスリープ、スタンバイなどの動作モードに遷移させてもよいし、ＣＰＵ２へのクロックの供給を止めても良い。
【００７７】
これにより、離散的なトリミングデータを保持するトリミングテーブルを使って、複雑なアルゴリズムを用いずにアナログ回路の動作補償を行う場合であっても、ＣＰＵに誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００７８】
〔実施形態２〕＜クロック発生回路のトリミングデータの動的変更制御＞
実施形態２に係る半導体装置１は、アナログ回路３をＣＰＵ２の動作のためのクロックを供給するクロック発生回路１１とした実施の形態である。この場合に発生する新たな課題について説明する。
【００７９】
図５は、半導体装置の一動作例における新たな課題を表すタイミングチャートである。図３と同様であるが、トリミングデータが変更される際の発振周波数の特性に新たな課題が生じる場合がある。時刻t2において、トリミングデータがData_A (Typ)からData_B (Hot)に変更されたことにより、発振周波数は不連続に変化し、瞬間的に仕様の下限であるfc−1.5Δfを下回る。同様に、時刻t3とt4においては、トリミングデータがそれぞれData_B (Hot)からData_A (Typ)、Data_A (Typ)からData_C (Cold)に変更されたことにより、発振周波数は不連続に変化し、瞬間的に仕様の上限であるfc＋1.5Δfを上回る。このため、ＣＰＵ２を始めとするクロック同期で動作する回路は、誤動作する恐れがある。
【００８０】
また、発振回路には、特性の経時変化があることが知られている。
【００８１】
図６は、発振回路の発振周波数の経時変化を表す説明図である。横軸に時間をとり、縦軸に発振周波数を採ったグラフである。時間軸は、日、週、年などの比較的長い時間レンジである。時刻t0の半導体製造における前工程が完了した時の発振周波数を基準とすることができる。時刻t1でモールド工程を終えた後、発振周波数は上昇する。さらに、時刻t2でリフロー工程を終えた後にさらに上昇する。これらは、温度履歴による応力に起因する特性変動とも考えられ、必ずしも周波数を高める方向であるとは限らない。時刻t3以降は、いわゆる経年劣化（経年変化）である。製造工程後に行われるウェハ状態でのテスト、またはモールド工程後に行われるパッケージ実装後のテストにおいて、トリミングデータを算出し、トリミングテーブル５をメモリ６に書き込んで出荷すると、その後の、経年変化に適応することができないという課題が生じる。
【００８２】
図７は、実施形態２に係る半導体装置の構成を表すブロック図である。実施形態２に係る半導体装置１は、ＣＰＵ２とクロック発生回路１１とセンサ４とメモリ６とトリミング制御部７を含んで構成される。半導体装置１は、さらに、ＲＡＭ８、周辺モジュール９、割り込み制御部１２を備え、互いにバス１０によって接続されている。クロック発生回路１１は、ＣＰＵ２の動作のためのクロックを供給し、設定されるトリミングデータと環境パラメータによってクロック周波数が変更される。また、クロック発生回路１１は、クロックストップ制御部４２を備える。ここで、環境パラメータは、温度、電源電圧、製造されてからの経過時間、累積動作時間などを指し、センサ４には、温度センサ４＿１、電圧センサ４＿２、リアルタイムクロック（ＲＴＣ：Real Time Clock）４＿３などが含まれ得る。メモリ６は、環境パラメータの複数の範囲ごとに対応するトリミングデータの値を保持するトリミングテーブル５を格納することができる、フラッシュメモリ６である。トリミング制御部７は、センサ４による環境パラメータの測定値に基づいて、トリミングテーブル５を参照することにより、クロック発生回路１１に設定するトリミングデータの値を変更することできる、制御回路である。ＣＰＵ２はバス１０を介してトリミング制御部７にアクセスすることにより、トリミング制御部７がクロック発生回路１１に設定したトリミングデータを読み出すことができる。トリミングデータ自体である必要はなく、設定されるトリミングデータを指すフラグ等を読み出し可能としてもよい。トリミング制御部７は、トリミングデータを変更するときに、クロック発生回路１１に対してCPU_Stop信号を出力し、クロックストップ制御部４２によって、クロック発生回路１１からＣＰＵ２へのクロックの供給を一時停止することができる。また、トリミング制御部７は、トリミングデータを変更するときに、割り込み制御部１２に対して割り込み信号を発行することにより、ＣＰＵ２に対して、トリミングデータの変更を通知することができる。図５に指摘するような課題がある場合には、クロック発生回路１１からＣＰＵ２へのクロックの供給を一時停止することができればよく、他のトリミングデータの変更状態の読み出しとトリミングデータの変更割り込みは、不可欠ではない。
【００８３】
特に制限されないが、上記の構成要素は、例えば単結晶シリコン基板などの同一半導体基板上に、公知の半導体製造技術によって形成することができる。特にクロック発生回路１１とセンサ４を同一半導体基板上に、さらに、隣接配置して形成することにより、クロック発生回路１１が動作する環境パラメータを正確に測定することができる。
【００８４】
これにより、離散的なトリミングデータを保持するトリミングテーブルを使って、複雑なアルゴリズムを用いずにクロック発生回路の動作補償を行う場合であっても、ＣＰＵに誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００８５】
図８は、発振回路の発振周波数の経時変化に対応するためのトリミングテーブル５の一例を表す説明図である。実施形態１では、３つの温度範囲においてトリミングデータを規定する例について説明したが、図８には、４つの温度範囲、４つの電源電圧範囲、さらに、４つの経時範囲について、４×４×４＝６４通りのトリミングデータを備えるトリミングテーブル５を示す。温度範囲は、−20℃未満、−20℃〜50℃、50℃〜85℃、85℃以上の４範囲とし、それぞれに、電源電圧範囲、1.8V未満、1.8V〜2.3V、2.3V〜2.8V、2.8V以上の４範囲に、１６通りのトリミングデータを備える。動作開始から１日未満のとき、Data_A〜Data_Pまでの１６通りのトリミングデータを備え、以降、動作開始から１日以上１週間未満のとき、動作開始から１週間以上１年未満のとき、動作開始から１年以上のときの、４通りの経過時間ごとに、それぞれ１６通りのトリミングデータを備える。なお、環境パラメータを経過時間とした場合には、図４を引用して説明した、ヒステリシスを持たせた制御は不要である。経過時間は不可逆であるので、原理的にチャタリングが発生し得ないためである。これにより、クロック発生回路（１１）の温度依存性と、電源電圧依存性と、特性の経年変化による特性変動のすべてを補償することができる。
【００８６】
図９は、実施形態２に係る発振回路の構成例を表すブロック図である。クロック発生回路１１は、図９に示す発振回路によって構成することができる。発振回路は、オシレータ部４０とリファレンス部４１とクロックストップ制御部４２とカウンタ５０を備える。オシレータ部４０は、電圧制御発振器（ＶＣＯ：Voltage Controlled Oscillator）４３と、制御パルス発生回路４４とＦ−Ｖ変換部４５を備えて構成される。リファレンス部４１は、基準電圧発生回路（ＢＧＲ：Band Gap Reference）４６と基準電流発生回路４７とを備えて構成され、基準電流発生回路４７に含まれる基準抵抗体４８の抵抗値がトリミングされる。ＶＣＯ４３の出力がクロックであり、クロックストップ制御部４２を介してＣＰＵ２にクロックを供給する。クロックストップ制御部４２はトリミング制御部７から入力されるCPU_Stop信号が活性化されると、ＣＰＵ２へのクロックの供給を一時停止する。クロックの供給停止後、カウンタ５０がリセットされ、所定のカウント値に達したときに、CLOCK_RESUME信号により、ＣＰＵ２へのクロックの供給を再開する。所定のカウント値とは、トリミングデータが変更されたときに、ＶＣＯ４３の発振が安定するまでに、出力されるクロックパルスの数に、マージンを加えて算出される。これにより、クロック発生回路１１による発振が安定した後にＣＰＵクロックの動作を再開することができる。
【００８７】
オシレータ部４０の周波数制御の原理について説明する。ＶＣＯ４３の出力は、制御パルス発生回路４４にフィードバックされる。所定の周波数または位相比較により、Ｆ−Ｖ変換部４５に対して、発振周波数を上げるまたは下げるための制御パルスを出力する。Ｆ−Ｖ変換部４５は、トランジスタＭ１とＭ２によりチャージポンプを構成している。チャージポンプからの充放電によりキャパシタＣ１とＣ２に蓄積される電荷によって、電圧ＶＳＩＧが保持されている。演算増幅器Ｏｐ１とキャパシタＣ３と抵抗Ｒ１によって構成される積分回路を経て、ＶＣＯ４３に制御電圧が供給される。ＶＣＯ４３は、電圧制御発振器であり、印加される制御電圧によって発振周波数が制御されたクロックパルスを出力する。
【００８８】
リファレンス部４１は、ＢＧＲ４６によって発生した基準電圧VrefCを使い、演算増幅器Ｏｐ２とトランジスタＭ３、可変抵抗４９により、基準電流IREFを発生させる。トランジスタＭ３とＭ４によって構成されるカレントミラーにより、所定の定数Ｎ倍された、定電流ICONST＝N×IREFが生成される。定数ＮはトランジスタＭ３とＭ４のサイズの比で規定される。定電流ICONSTは、オシレータ部４０のチャージポンプを構成するトランジスタＭ１に入力される。定電流ICONSTにもとづいて、ＶＣＯ４３の制御感度が調整される。定電流ICONSTは、トランジスタＭ１がオンしている期間にキャパシタＣ１とＣ２を充電するので、定電流ICONSTが大きい程、ＶＳＩＧを大きく変化させ、ＶＣＯ４３の発振周波数を大きく変化させる。基準抵抗体４８の値をトリミングして可変抵抗４９の値を変化させることにより、クロック発生回路１１の出力周波数をトリミングすることができる。
【００８９】
図１０は、実施形態２に係るトリミング制御部の構成例を表すブロック図である。トリミング制御部７には、上述のように、アナログ回路３、センサ４、フラッシュメモリ６、及び、割り込み制御部１２が接続されている。アナログ回路３は、本実施形態ではクロック発生回路１１であるが、トリミング制御部７は他のアナログ回路に接続される場合であっても、同様に構成することができるので、アナログ回路３として説明する。センサ４は、温度センサ４＿１、電圧センサ４＿２、およびＲＴＣ４＿３を含む。電圧センサ４＿２は、電源電圧が所定の電圧を下回ったことを検出する、パワーオンリセット回路（ＰＯＲ：Power On Reset）や低電圧検出回路（ＬＶＤ：Low Voltage Detector）を流用することもでき、また、アナログ／ディジタル変換器（ＡＤＣ：Analog/Digital Converter）を使って高精度に測定することもできる。フラッシュメモリ６には、トリミングテーブル５が格納され、また、比較データテーブル３６も合わせて格納しておくことができる。比較データテーブル３６には、環境パラメータの範囲を与える閾値のデータが格納される。
【００９０】
トリミング制御部７は、ステータスレジスタ２０、コントロールレジスタ２５、チップ情報制御部３０、トリミングデータ変更制御部３１、フラッシュメモリインターフェース（Flash I/F）３２、トリミングデータ用フラッシュメモリインターフェース３３、比較データ用フラッシュメモリインターフェース３４、及び、比較データレジスタファイル３５を含んで構成される。コントロールレジスタ２５は、トリミングデータ変更イネーブル（Change Enable）２６、割り込みイネーブル（Interrupt）２７、及び、ＣＰＵストップイネーブル（CPU Stop）２８の制御情報を含む。ステータスレジスタ２０は、トリミングデータ変更フラグ（Trim Change Flag）２１、ＣＰＵストップフラグ（CPU Stop Flag）２２、割り込みフラグ（Interrupt Flag）２３、及び、トリミングデータ２４を含んで構成される。コントロールレジスタ２５とステータスレジスタ２０は、図１０において図示を省略されるバスインターフェース回路を介して、バス１０に接続されており、ＣＰＵ２からアクセスすることができる。
【００９１】
比較データレジスタファイル３５は、フラッシュメモリ６の比較データテーブル３６から適宜比較データ（Compare Data）を読み込んで保持する。実施形態１では、３つの温度範囲Thot〜Tth1、Tth1〜Tth2、Tth2〜Tcoldについて説明したが、このとき、Tth1とTth2が比較データテーブル３６に保持され、比較データレジスタファイル３５に転送されて保持される。温度範囲の数が少ない場合は、同じ値を保持すれば良いが、温度範囲が多い場合は、比較データレジスタファイル３５に保持する比較データを適宜変更しても良い。比較データ用フラッシュメモリインターフェース３４とフラッシュメモリインターフェース３２を介して、フラッシュメモリ６における比較データテーブル３６の中の所望の比較データが格納されているアドレスを指定することにより、フラッシュメモリ６にアクセスして読み込む。チップ情報制御部３０には、温度センサ４＿１、電圧センサ４＿２、およびＲＴＣ４＿３から、温度情報、電圧レベル情報、経過時間情報が読み込まれ、それぞれ対応する、比較データと比較される。比較結果に基づいて、トリミングデータを選択する。トリミングデータ（Select Trim Data）は、トリミングデータ用フラッシュメモリインターフェース３３とフラッシュメモリインターフェース（Flash I/F）３２を介して、フラッシュメモリ６におけるトリミングテーブル５の中の所望のトリミングデータが格納されているアドレスを指定することにより、フラッシュメモリ６にアクセスして読み込む。コントロールレジスタ２５のトリミングデータ変更イネーブル（Change Enable）２６によって、トリミングデータの変更が許可されているときには、トリミングデータを変更する。選択されたトリミングデータは、トリミングデータ変更制御部３１を介して、アナログ回路３に設定される。コントロールレジスタ２５の割り込みイネーブル（Interrupt）２７によって割り込みが許可されていれば、ステータスレジスタの割り込みフラグ（Interrupt Flag）２３を立て、割り込み制御部１２に対して、割り込み信号（Interrupt）を発行する。
【００９２】
コントロールレジスタ２５のＣＰＵストップイネーブル２８により、ＣＰＵを一時停止することが指示されている場合は、トリミングデータの変更に先立って、ＣＰＵストップフラグ（CPU Stop Flag）２２を立て、必要に応じて割り込みを発生させて割り込みフラグ（Interrupt Flag）２３も立て、ＣＰＵ２にパラメータが変更されるのに伴ってクロック供給が停止されることを通知する。ＣＰＵ２は、割り込み処理ルーチンなどにより、クロックの停止に備える処理を実行することができる。その後、実際にCPU_STOP信号を発行してＣＰＵ２へのクロックを停止した後に、トリミングデータを変更する。
【００９３】
これとは異なり、コントロールレジスタ２５のＣＰＵストップイネーブル（CPU Stop）２８により、ＣＰＵを一時停止することを禁止しておいて、トリミングデータの変更割り込みを先行させてもよい。ＣＰＵ２は割り込み処理ルーチンによってクロックの停止に備える処理を終えた後、ＣＰＵストップイネーブル（CPU Stop）２８による禁止を解除して、実際にCPU_STOP信号を発行してＣＰＵ２へのクロックを停止した後に、トリミングデータを変更してもよい。
【００９４】
一方、ＣＰＵ２は、実行中のプログラムの処理の内容によっては、クロックの停止が誤動作を招く場合もあり、その他、トリミングデータを変更することが適切でないタイミングもあり得る。その場合には、コントロールレジスタ２５のトリミングデータ変更イネーブル２６によって、トリミングデータの変更を禁止することによって、トリミングデータが変更される時期を適正化させることができ、不適切なタイミングでのトリミングデータの変更に起因する誤動作を防止することができる。
【００９５】
図１０に示したブロック図では、フラッシュメモリインターフェース３２を介してフラッシュメモリ６に接続する例を示した。図１１は、トリミングデータのトリミング制御部への供給方法を表す説明図である。（ａ）のセレクタ方式は、フラッシュメモリ６から、トリミングテーブル５に格納されるトリミングデータを並列に出力しておき、セレクタによって選択して、アナログ回路３に書き込む構成である。トリミングデータの数が６４個、トリミングデータのビット数が８ビットの場合、５１２ビットの並列出力端子をフラッシュメモリ６に設ける必要があるが、トリミングデータの選択は高速に行うことができる。一方、（ｂ）のフラッシュインターフェース方式は、図１０に示した通り、フラッシュメモリインターフェース３２を介してフラッシュメモリ６に接続する構成である。アドレス線とデータ線とその他の制御信号線のみで接続することができるが、トリミング制御部７において適宜アドレスを生成する必要がある。
【００９６】
図１２は、実施形態２に係る半導体装置の動作の一例を表すタイミングチャートである。図５に示したタイミングチャートと比べ、比較データレジスタ１と２の図示を省略し、代わりに、割り込みイネーブル２７の状態とＣＰＵ２の動作状態を示す。時刻t1後にトリミングデータ変更イネーブル２６と割り込みイネーブル２７により、トリミングデータ変更とそれに伴う割り込みの発行が許可され、トリミングデータが変更される時刻t2において、割り込みが発生する。この割り込みにより、ＣＰＵ２は割り込み処理ルーチンを開始する。その後、トリミングデータが変更される。時刻t6までの期間、発振回路の出力信号の周波数は、不安定となる。図１２の最下段に示すように、発振周波数が瞬時的に仕様で規定される範囲を外れる場合もある。ＣＰＵ２は、発振周波数が不安定な期間を十分に経過する、時刻t7までの間、割り込み処理ルーチンを実行する。割り込み処理ルーチンは、例えば、発振回路がＣＰＵ２にクロックを供給するのではなく、タイマーにクロックを供給するときには、そのタイマーのカウント値を補正する。発振回路がＣＰＵ２にクロックを供給する場合には、発振回路の出力によって、ＣＰＵ２が誤動作しないように、例えば、クロックの分周数を大きくして、ＣＰＵ２を低い周波数で動作させ、仕様を超える周波数のクロックが入力されても、ＣＰＵ２を動作させるクロック周波数を仕様の範囲内になるように、制御することができる。時刻t3はトリミングデータが変更されることにより、仕様の範囲を超える高い周波数が出力され、クロックの不安定期間が時刻t8まで続くので、ＣＰＵ２は時刻t9まで、割り込み処理ルーチンを実行する。時刻t4から時刻t11も同様である。
【００９７】
図１３は、実施形態２に係る半導体装置の動作の別の一例を表すタイミングチャートであり、図１４は、トリミングデータの変更に伴う発振回路の動作例を表すタイミングチャートで、時刻t3前後の拡大図である。時刻t3において、トリミングデータが変更されると、クロック発生回路１１からのクロック出力は、例えば時刻t31までの期間にグリッジを発生させるおそれがあり、また、時刻t31〜t32の間にＣＰＵ２の正常動作を保証することができる範囲を超えた周波数となる恐れがある。トリミングデータが変更される、時刻t2、t3、t4から、それぞれ時刻t6、t8、t10までのクロックが不安定な期間は、CPU_STOP信号により、ＣＰＵ２の動作を停止させる。クロック発生回路１１からＣＰＵ２へのクロックの供給を停止しても良いし、ＣＰＵ２の動作モードを、スリープやスタンバイなどの、仕様の範囲を外れるクロックが入力されても、ＣＰＵ２が誤動作に至らない動作モードに移行させても良い。
【００９８】
これにより、ＣＰＵ２は、トリミングデータの値の変更に伴って発生する、クロック発生回路１１の異常な動作の影響を回避することができ、誤動作を惹き起こすなどの深刻な問題の発生を防止することができる。
【００９９】
〔実施形態３〕＜トリミングデータの連続的変更制御＞
図１５は、実施形態３に係るトリミング制御部の構成例を表すブロック図である。実施形態２においては、離散的なトリミングデータから選択して切り替えることによって変更する例を示した。アナログ回路３の特性は不連続に変化する問題点を指摘し、実施形態２は、そのような場合でも、誤動作を惹き起こすなどの深刻な問題の発生を防止する解決手段を提供した。一方、本実施形態３においては、トリミングデータを変更する際に、選択して切り替えるのではなく、徐々に増加または減少させて、切り替えるべきトリミングデータに近づけることによって変更する。
【０１００】
図１５に示した、実施形態３に係るトリミング制御部７では、図１０に示したブロック図と比較して、コントロールレジスタ２５に、さらに、スムーズチェンジイネーブル（Smooth Change）２９を追加する。スムーズチェンジイネーブル２９によって、トリミングデータを変更する際に、徐々に増加または減少させて変更することが指示されると、トリミングデータ変更制御部３１において、トリミングデータを例えば１ずつ増加または減少させることによって、新たなトリミングデータに変更する。
【０１０１】
図１６は、実施形態３に係る半導体装置の動作におけるトリミングデータの変更方法の一例を表すタイミングチャートであり、図１７は、その変更部分の拡大図である。トリミングデータは、時刻t1から時刻t2にかけて徐々に増加されることによりData_AからData_Bに変更され、時刻t3から時刻t4にかけて徐々に減少されることによりData_BからData_Aに変更される。図１６において、トリミングデータは、時刻t2から時刻t12にかけて徐々に減少されることによりData_A (Typ)からData_B (Hot)に変更され、時刻t3から時刻t13にかけて徐々に増加されることによりData_B (Hot)からData_A (Typ)に変更される。さらに、時刻t4から時刻t14にかけても同様に、徐々に増加されることによりData_A (Typ)からData_C (Cold)に変更される。これにともない、周波数は、時刻t2から時刻t12にかけて徐々に低下し、時刻t3から時刻t13と時刻t4から時刻t14にかけては徐々に上昇するが、急激な変化がないため、瞬時的に高い周波数のクロックパルスを発生させたり、許容範囲以上にジッタを増加させるなどの問題を発生させることが防止される。
【０１０２】
これにより、複雑なアルゴリズムを用いず、例えば、瞬間的な著しく高い周波数のクロックの出力やジッタの発生などの、急激な特性変動を発生させることなく、クロック発生回路の動作補償を行うことができる。
【０１０３】
〔実施形態４〕＜一般アナログ回路のトリミングデータの動的変更制御＞
図１８は、実施形態４に係る半導体装置の構成を表すブロック図である。実施形態２と３は、主にアナログ回路３がＣＰＵ２に対するクロック発生回路１１である場合について説明したが、クロック発生回路１１以外の一般のアナログ回路３のトリミングにも、同様に適用することができる。ここで、アナログ回路３は、アナログ／ディジタル変換器、ディジタル／アナログ変換器、アンプ回路、測定回路などである。トリミングデータを変更した場合には変換特性が変化するため、ＣＰＵ２はステータスレジスタ２０の内容を読み出すことにより、変換特性を補正しながら利用することができる。また、トリミングデータを変更した場合に割り込みが発行されるように設定すれば、トリミングデータの変更された後、特性が安定するまでの期間、変換を実行させないか、変換結果を利用しないなどの、処理を行うことができる。
【０１０４】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【０１０５】
１  半導体装置（ＬＳＩ）
２  ＣＰＵ
３  アナログ回路
４  センサ
４＿１  温度センサ
４＿２  電圧センサ（ＰＯＲ，ＬＶＤ，ＡＤＣ）
４＿３  ＲＴＣ
５  トリミングテーブル
６  不揮発性メモリ
７  トリミング制御部
８  ＲＡＭ
９  周辺モジュール
１０  バス
１１  クロック発生回路
１２  割り込み制御部
２０  ステータスレジスタ
２１  トリミングデータ変更フラグ
２２  ＣＰＵストップフラグ
２３  割り込みフラグ
２４  トリミングデータ
２５  コントロールレジスタ
２６  トリミングデータ変更イネーブル
２７  割り込みイネーブル
２８  ＣＰＵストップイネーブル
２９  スムーズチェンジイネーブル
３０  チップ情報制御部
３１  トリミングデータ変更制御部
３２  フラッシュメモリインターフェース
３３  トリミングデータ用フラッシュメモリインターフェース
３４  比較データ用フラッシュメモリインターフェース
３５  比較データレジスタファイル
３６  比較データテーブル
４０  オシレータ部
４１  リファレンス部
４２  クロックストップ制御部
４３  電圧制御発振器（ＶＣＯ）
４４  制御パルス発生回路
４５  Ｆ−Ｖ変換部
４６  基準電圧発生回路
４７  基準電流発生回路
４８  基準抵抗体
４９  可変抵抗器
５０  カウンタ
【図１】
2014138094.tif 000003
【図２】
2014138094.tif 000004
【図３】
2014138094.tif 000005
【図４】
2014138094.tif 000006
【図５】
2014138094.tif 000007
【図６】
2014138094.tif 000008
【図７】
2014138094.tif 000009
【図８】
2014138094.tif 000010
【図９】
2014138094.tif 000011
【図１０】
2014138094.tif 000012
【図１１】
2014138094.tif 000013
【図１２】
2014138094.tif 000014
【図１３】
2014138094.tif 000015
【図１４】
2014138094.tif 000016
【図１５】
2014138094.tif 000017
【図１６】
2014138094.tif 000018
【図１７】
2014138094.tif 000019
【図１８】
2014138094.tif 000020