(57)【要約】【課題】複数の順序回路として少なくともレベルセンス型順序回路を用いたシステムにおいて、動作周波数を高めると共に、信頼性を向上させる。【解決手段】マイクロコンピュータ（１）は、クロック供給元とされるクロック発生回路（２）と、クロック信号ＣＬＫに同期動作する機能モジュールと、機能モジュールに含まれ、クロック供給先とされるレベルセンス型順序回路（１２〜１４）と、クロック信号をレベルセンス型順序回路に伝播するクロック供給系（１１）等とを備える。クロック供給系は、クロック発生回路から出力されるクロック信号を複数の分岐を介して末端に伝播するクロック配線（２０）を有する。クロック配線の途中には、少なくともパルス生成回路（２６，２８，２９）が配置される。パルス生成回路は、レベルセンス型順序回路の入力動作期間の終点を規定するクロック信号の立ち下がりエッジの変化タイミングを可変とする。【選択図】図１
2007243912.tif 000002
【特許請求の範囲】
【請求項１】
クロック発生回路と、前記クロック発生回路から出力されるクロック信号を、複数の分岐を介して末端に伝播するクロック配線と、前記クロック配線の末端に接続された複数の順序回路とを有し、
前記複数の順序回路として少なくともレベルセンス型順序回路を有し、
前記レベルセンス型順序回路の入力動作期間の終点を規定するクロック信号の変化タイミングを可変とする第１可変回路を、前記クロック配線に有する半導体集積回路。
【請求項２】
前記第１可変回路に直列接続され、前記クロック信号の伝播遅延時間を変更可能な第２可変回路を、前記クロック配線に有する請求項１記載の半導体集積回路。
【請求項３】
前記複数の順序回路の一部としてエッジトリガ型順序回路を有する請求項２記載の半導体集積回路。
【請求項４】
前記クロック配線は、前記エッジトリガ型順序回路に直列接続され、前記クロック信号の伝播遅延時間を変更可能な第３可変回路を有する請求項３記載の半導体集積回路。
【請求項５】
前記第１可変回路は、
前記クロック信号の変化タイミングを指示する制御情報を保持するレジスタと、
遅延時間の異なる複数の遅延経路を有し、前記レジスタの保持する制御情報に応じて、前記遅延経路を選択する選択回路と、
前記選択回路の出力と前記クロック信号に応じて、前記変化タイミングを決定する論理回路と、を有する請求項１記載の半導体集積回路。
【請求項６】
前記論理回路は、イネーブル信号に応じて、レベル変化しない信号を出力するためのゲート回路を備える請求項５記載の半導体集積回路。
【請求項７】
前記レジスタに保持される制御情報を記憶する不揮発性記憶手段を更に備える請求項５記載の半導体集積回路。
【請求項８】
クロック発生回路と、前記クロック発生回路から出力されるクロック信号を、複数の分岐を介して末端に伝播するクロック配線と、前記クロック配線の末端に接続された複数の順序回路とを有し、
前記複数の順序回路として少なくともレベルセンス型順序回路を有し、
前記レベルセンス型順序回路の入力動作期間の終点を規定するクロック信号の変化タイミングを可変とするパルス生成回路を前記クロック配線に有し、
前記パルス生成回路は、前記クロック信号の立ち上がりエッジに同期する第１パルス信号を生成する第１パルス生成部と、
前記クロック信号の立ち下がりエッジに同期する第２パルス信号を生成する第２パルス生成部と、
前記第１パルス信号と、前記第２パルス信号とを合成して出力する論理回路と、を含んで成る半導体集積回路。
【請求項９】
前記第１パルス生成部は、前記第１パルス信号のパルス幅を調整可能な第１可変遅延回路を含み、
前記第２パルス生成部は、前記第２パルス信号のパルス幅を調整可能な第２可変遅延回路を含んで成る請求項８記載の半導体集積回路。
【請求項１０】
前記第２パルス生成部は、前記第２パルス信号の遅延量を調整可能な第３可変遅延回路を更に含む請求項９記載の半導体集積回路。
【請求項１１】
前記パルス生成回路は、前記第１パルス信号のパルス幅と前記第２パルス信号のパルス幅とを同時に調整可能な可変遅延回路を含む請求項８記載の半導体集積回路。
【請求項１２】
前記第１パルス生成部及び前記第２パルス生成部は、それぞれ共通のイネーブル信号に応じて前記第１パルス信号及び前記第２パルス信号の前記論理回路への伝達を停止可能な制御論理を含む請求項８記載の半導体集積回路。
【請求項１３】
前記第１パルス生成部は、第１イネーブル信号に応じて前記第１パルス信号の前記論理回路への伝達を停止可能な第１制御論理を含み、
前記第２パルス生成部は、第２イネーブル信号に応じて前記第２パルス信号の前記論理回路への伝達を停止可能な第２制御論理を含む請求項８記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック信号に同期動作する半導体集積回路に関し、例えばクロック供給先である複数の順序回路としてレベルセンス型順序回路を有する半導体集積回路に適用して有効な技術に関する。
【背景技術】
【０００２】
マイクロコンピュータ等の半導体集積回路を設計する場合には、クロック供給元であるクロック発生回路から出力されるクロック信号を、クロック供給先である複数の順序回路等に伝播するためのクロック供給系の設計が不可欠である。クロック供給系は、クロック配線を有している。クロック配線は、クロック信号を複数の分岐を介して末端に伝播するクロックツリー構造とされ、クロックスキューの低減を図るために、等幅、等長配線となるように設計される。クロックスキューとは、クロック供給元が共通である複数のクロック供給先でのクロック信号の位相のずれをいう。このクロック信号の位相のずれは、クロック供給元からクロック供給先までのクロック信号の到達時間差、即ちクロック信号の伝播遅延時間のばらつき、としても把握される。クロック配線の末端に接続される複数の順序回路としては、クロック信号の立ち上がりエッジの変化タイミングが入出力動作期間とされるエッジトリガ型順序回路と、クロック信号がハイレベルである期間が入出力動作期間とされるレベルセンス型順序回路とがある。
【０００３】
エッジトリガ型順序回路を用いたシステムにおいては、データの送り手側とされる前段のエッジトリガ型順序回路と、データの受け手側とされる後段のエッジトリガ型順序回路と、これらのエッジトリガ型順序回路の間に配置され、所定の演算処理等を行う組み合わせ回路とからなる複数のデータ経路が形成される。このようなデータ経路において、所定の組み合わせ回路が演算結果を出力するタイミングが、後段のエッジトリガ型順序回路に供給されるクロック信号の立ち上がりエッジの変化タイミング、即ち入出力動作期間を過ぎてしまう場合がある。この場合には、後段のエッジトリガ型順序回路が、所定の組み合わせ回路の演算結果を取り込むことができず、ＭＡＸディレイ違反を生じてしまう。ＭＡＸディレイ違反の原因としては、上記クロックスキューだけでなく、組み合わせ回路の遅延量のばらつき等も考えられる。
【０００４】
ＭＡＸディレイ違反を救済するためには、マイクロコンピュータの設計段階でクロックスキューや組み合わせ回路の遅延量のばらつきを、例えばデータ経路毎に設計値として把握し、製造後に、この設計値に基づいて後段のエッジトリガ型順序回路に供給されるクロック信号の立ち上がりエッジの変化タイミングを調整する方法が考えられる。しかしながら、マイクロコンピュータの設計段階で把握された上記設計値は、製造ばらつきや電源電圧ドロップ等、設計段階では正確に把握できない要因によって、製造後におけるテスト工程のテスト結果から把握された値とずれてしまう。
【０００５】
非特許文献１は、エッジトリガ型順序回路を用いたシステムにおいて、クロックツリー構造とされるクロック配線の途中に、クロック信号の伝播遅延時間を変更可能な可変遅延回路を配置し、テスト工程におけるテスト結果に応じて、クロックスキューを調整可能とする技術を開示している。この技術では、可変遅延回路によりクロック信号の遅延量を変化させて、クロック信号の立ち上がりエッジの変化タイミングを調整することで、ＭＡＸディレイ違反を救済している。
【０００６】
【非特許文献１】E.Takahashi, et al.,“A post-silicon clock timing adjustment using genetic algorithms,”2003 Symposium on VLSI Circuits Digest of Technical Papers, pp. 13-16.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明者は、複数の順序回路として少なくともレベルセンス型順序回路を用いたシステムにおいて、クロックスキューを調整して動作周波数を高めると共に、信頼性を向上させる手段について検討した。このシステムでは、前段のレベルセンス型順序回路と、後段のレベルセンス型順序回路と、これらのレベルセンス型順序回路の間に配置された所定の組み合わせ回路からなる複数のデータ経路が形成される。レベルセンス型順序回路の入出力動作期間は、例えばクロック信号がハイレベルである期間とされるから、所定の組み合わせ回路が演算結果を出力するタイミングが、後段のレベルセンス型順序回路の入出力動作期間内に位置すれば、データ経路においてＭＡＸディレイ違反は生じない。このため、非特許文献１の技術を上記システムに適用して、クロック信号の立ち上がりエッジの変化タイミングを可変とすれば、ＭＡＸディレイ違反を救済できる可能性が高い。
【０００８】
しかしながら、非特許文献１の技術では、可変遅延回路によって、クロック信号を遅延させるから、クロック信号の立ち上がりエッジの変化タイミングを可変とすることで、それに伴って立ち下がりエッジの変化タイミングも変化させてしまう。このため、非特許文献１の技術を上記システムに適用した場合には、ＭＩＮディレイ違反の救済が困難となってしまう。ＭＩＮディレイ違反は、可変遅延回路によって立ち下りエッジの変化タイミングが遅延され、さらに、組み合わせ回路の遅延量が小さい場合に生じ易い。この場合には、組み合わせ回路が演算結果を出力するタイミングが、後段のレベルセンス順序回路を入出力動作期間とするクロック信号のサイクル内に位置するだけでなく、前段のレベルセンス順序回路を入出力動作期間とするクロック信号のサイクル内にも位置してしまう。このため、クロック信号の同一サイクル内で、前段のレベルセンス型順序回路から後段のレベルセンス型順序回路にデータが突き抜けてしまい、ＭＩＮディレイ違反を生じてしまう。要するに、上記システムにおいて、クロック信号を可変遅延回路により遅延させただけでは、ＭＡＸディレイ違反とＭＩＮディレイ違反の両方を救済することはできず、動作周波数を高めた上で信頼性を向上させることが困難となる。
【０００９】
本発明の目的は、複数の順序回路として少なくともレベルセンス型順序回路を用いたシステムにおいて、動作周波数を高めると共に、信頼性を向上させるための技術を提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
本発明に係る半導体集積回路は、クロック発生回路（２）と、前記クロック発生回路から出力されるクロック信号を複数の分岐を介して末端に伝播するクロック配線（２０）と、前記クロック配線の末端に接続された複数の順序回路（１２〜１５）とを有する。前記複数の順序回路として少なくともレベルセンス型順序回路（１２〜１４）を有する。前記レベルセンス型順序回路の入力動作期間の終点を規定するクロック信号の変化タイミングを可変とする第１可変回路（２６，２８，２９）を、前記クロック配線に有する。
【００１３】
上記より、第１可変回路は、レベルセンス型順序回路の入出力動作期間の終点、即ちクロック信号が例えばハイレベルからローレベルに変化する立ち下がりエッジの変化タイミングをずらして、クロック信号のパルス幅を小さくできる。これにより、レベルセンス型順序回路の間に遅延量の小さい組み合わせ回路が配置されたデータ経路において、組み合わせ回路が演算結果等のデータを出力するタイミングを、データ経路におけるデータの送り手側とされる前段のレベルセンス順序回路を入出力動作期間とするクロック信号のサイクルとは異なるサイクル内に位置させることができる。そして、組み合わせ回路が出力するデータは、上記異なるサイクル内で、データの受け手側とされる後段のレベルセンス順序回路に取り込まれる。つまり、クロック信号の同一サイクル内で、前段のレベルセンス型順序回路から後段のレベルセンス型順序回路にデータが突き抜けることがないから、ＭＩＮディレイ違反を回避できる。さらに、データ経路において、レベルセンス型順序回路の間に組み合わせ回路が配置されていない場合には、ＭＩＮディレイ違反がより生じ易くなってしまう。しかし、このような場合でも、第１可変回路により、クロック信号の立ち下がりエッジの変化タイミングをずらして、パルス幅をより小さくすることにより、ＭＩＮディレイ違反を回避できる。
【００１４】
また、テスト工程では、クロック信号の動作周波数を徐々に高めながら、半導体集積回路が所定の入力データに対して正しい出力データを出力可能か否かを判定する。そして、例えばＭＩＮディレイ違反が原因で正しい出力データが出力できない場合に、第１可変回路によりパルス幅を小さくして、ＭＩＮディレイ違反を回避する。その後、再び動作周波数を高めて上記判定を行う。従って、複数の順序回路として少なくともレベルセンス型順序回路を用いたシステムにおいて、テスト工程で動作周波数を高めながら、ＭＩＮディレイ違反を回避して、信頼性を向上させることができる。
【００１５】
本発明の具体的な一つの形態として、前記第１可変回路に直列接続され、前記クロック信号の伝播遅延時間を変更可能な第２可変回路（２７，３０）を、前記クロック配線に有する。上記より、第１可変回路によりクロック信号のパルス幅を可変とした上で、第２可変回路によりパルスそのものをシフトさせることができる。これにより、第１可変回路によって、あるデータ経路でのＭＩＮディレイ違反を回避できる。さらに、遅延量の大きい組み合わせ回路が配置されている後続の他のデータ経路において、第２可変回路によって、この組み合わせ回路がデータを出力するタイミングを、他のデータ経路における後段のレベルセンス型順序回路の入出力動作期間内に位置させることができる。つまり、組み合わせ回路が出力するデータを、後段のレベルセンス型順序回路が取り込めないようなＭＡＸディレイ違反を回避できる。
【００１６】
本発明の具体的な一つの形態として、前記複数の順序回路の一部としてエッジトリガ型順序回路（１５）を有する。上記より、レベルセンス型順序回路と、入出力動作期間が例えばクロック信号の立ち上がりエッジの変化タイミングとされるエッジトリガ型順序回路とが混在したシステムにも適用できる。
【００１７】
本発明の具体的な一つの形態として、前記クロック配線は、前記エッジトリガ型順序回路に直列接続され、前記クロック信号の伝播遅延時間を変更可能な第３可変回路（３１）を有する。上記より、第３可変回路によって、後段のエッジトリガ型順序回路に供給されるクロック信号の遅延量を大きくし、パルスそのものをシフトさせた場合には、後段のエッジトリガ型順序回路の入力動作期間、即ちクロック信号の立ち上がりエッジの変化タイミングを遅延させたことになる。このようにすれば、エッジトリガ型順序回路の間に遅延量の大きい組み合わせ回路が配置されたデータ経路が形成されている場合であっても、このデータ経路にＭＡＸディレイ違反は生じない。
【００１８】
本発明の具体的な一つの形態として、前記第１可変回路は、レジスタ（３２）と、選択回路（３３）と、論理回路（３４）とを有する。レジスタは、前記クロック信号の変化タイミングを指示する制御情報を保持する。選択回路は、遅延時間の異なる複数の遅延経路を有し、前記レジスタの保持する制御情報に応じて、前記遅延経路を選択する。論理回路は、前記選択回路の出力と前記クロック信号に応じて、前記変化タイミングを決定する。上記より、制御情報は、クロックスキューを調整するテスト工程で得られた情報であって、例えばＭＩＮディレイ違反が生じたデータ経路の後段の順序回路で要求されたクロック信号の遅延量に対応する値とされる。機能モジュールに形成されるデータ経路は膨大な数であるから、例えば遺伝的アルゴリズム等の最適化アルゴリズムにより探索され、上記値が得られる。また、この制御情報は、選択回路で選択可能な遅延経路の数に応じたビット数を有する。このようにすれば、選択回路は、制御情報に基づいてクロック信号の遅延量を変化させることができる。そして、論理回路は、クロック信号の遅延量に基づいて、クロック信号の立ち下がりエッジの変化タイミングを決定して、ＭＩＮディレイ違反を回避できる。
【００１９】
本発明の具体的な一つの形態として、前記論理回路は、イネーブル信号に応じて、レベル変化しない信号を出力するためのゲート回路（８５）を備える。上記より、クロック配線の末端に接続された複数の順序回路のうち、例えばスリープ状態とされ、クロック信号の供給が必要でない機能モジュールに含まれる順序回路に対して、クロック信号を供給しないようにできる。これにより、低電力化を図ることができる。
【００２０】
本発明の具体的な一つの形態として、前記レジスタに保持される制御情報を記憶する不揮発性記憶手段（１０）を更に備える。上記より、テスト工程でのクロックスキューの調整で用いた制御情報を電源遮断時にも保持できる。これにより、製品固有の制御情報が製品自体に組み込まれることになり、例えば製品の特性を確認するときに制御情報を利用できる。
【００２１】
本発明の具体的な一つの形態として、前記パルス生成回路は、前記クロック信号の立ち上がりエッジに同期する第１パルス信号を生成する第１パルス生成部（１００）と、前記クロック信号の立ち下がりエッジに同期する第２パルス信号を生成する第２パルス生成部（２００）と、前記第１パルス信号と、前記第２パルス信号とを合成して出力する論理回路（３００）とを含んで構成することができる。かかる構成によれば、パルスクロック信号（ＰＣＬＫ）の立ち上がりエッジは、クロック信号（ＣＬＫ）の立ち上がりエッジに対して２倍の頻度で現れる。チップ内の論理回路を所定周波数で動作させたい場合、上記クロックパルス生成回路よりも上流側のクロックツリーでは、その１／２の周波数のクロック信号を分配すれば良い。このように上記クロックパルス生成回路よりも上流側のクロックツリーでのクロック信号の周波数を１／２に下げることができ、そこでの充放電回数の減少により、消費電力を低減できる。
【００２２】
このとき、前記第１パルス生成部は、前記第１パルス信号のパルス幅を調整可能な第１可変遅延回路（１０７）を含んで構成し、前記第２パルス生成部は、前記第２パルス信号のパルス幅を調整可能な第２可変遅延回路（２０３）を含んで構成することができる。さらに、前記第２パルス生成部には、前記第２パルス信号の遅延量を調整可能な第３可変遅延回路（２０８）を設けることができる。
【００２３】
前記パルス生成回路には、前記第１パルス信号のパルス幅と前記第２パルス信号のパルス幅とを同時に調整可能な可変遅延回路（１４５）を設けることができる。
【００２４】
前記第１パルス生成部及び前記第２パルス生成部には、それぞれ共通のイネーブル信号に応じて前記第１パルス信号及び前記第２パルス信号の前記論理回路への伝達を停止可能な制御論理（１０６，２０７）を設けることができる。
【００２５】
また、前記第１パルス生成部には、第１イネーブル信号に応じて前記第１パルス信号の前記論理回路への伝達を停止可能な第１制御論理（１０６）を設け、前記第２パルス生成部は、第２イネーブル信号に応じて前記第２パルス信号の前記論理回路への伝達を停止可能な第２制御論理（２０７）を設けることができる。
【発明の効果】
【００２６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００２７】
即ち、複数の順序回路として少なくともレベルセンス型順序回路を用いたシステムにおいて、動作周波数を高めると共に、信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００２８】
＜第１実施形態＞
図２には、本発明の実施形態に係る半導体集積回路の一例であるマイクロコンピュータの概略構成が例示される。マイクロコンピュータ１は、クロック信号を生成するクロック供給元とされるクロック発生回路２と、クロック信号に同期動作する複数の機能モジュールである中央処理装置（ＣＰＵ）３と、メモリ４と、バスコントローラ５と、論理ＩＰ（Intellectual Property）モジュール６，７と、入出力回路８等を備えている。これらの機能モジュールとクロック発生回路２は、内部バス９を介してそれぞれ接続されている。また、マイクロコンピュータ１は、ヒューズ回路１０を備えている。ＣＰＵ３は、メモリ４に格納されたプログラム等に基づいてマイクロコンピュータ１の全ての制御を行う。メモリ４は、ＣＰＵ３が実行すべきプログラムや固定データを記憶し、また、ＣＰＵ３による演算結果を記憶する。さらに、メモリ４は、ＣＰＵ３の作業領域ともなる。バスコントローラ５は、ＣＰＵ３によるアクセス対象に適合したバスサイクルを制御する。論理ＩＰモジュール６，７は、所定の機能を有する回路ブロックである。入出力回路８は、入出力バッファを有しており、外部との間で外部信号等の入出力を行う。
【００２９】
機能モジュールは、図１に示されるクロック供給系１１により伝播されるクロック信号のクロック供給先とされる複数の順序回路１２〜１５等を有する。さらに、機能モジュールには、例えばデータの送り手側とされる前段の順序回路と、データの受け手側とされる後段の順序回路等とからなるデータ経路が形成されている。データ経路は、前段の順序回路と後段の順序回路の間に、所定の演算を行う組み合わせ回路が配置される等、機能モジュールの仕様に応じて適宜の数、種類形成される。これらのデータ経路のうち、設計段階で特にＭＡＸディレイ違反及びＭＩＮディレイ違反を生じる可能性が高いと判定された経路を、クリティカルパスという。
【００３０】
本来、ＭＡＸディレイ違反やＭＩＮディレイ違反は、設計段階で把握されたクリティカルパスで生じるはずである。しかし、マイクロコンピュータ１では、製造ばらつきや電源電圧ドロップ等、設計段階では正確に把握できない要因によって、組み合わせ回路に遅延量のばらつきが生じる可能性がある。このような組み合わせ回路の遅延量のばらつきによって、クリティカルパス以外のデータ経路でＭＡＸディレイ違反やＭＩＮディレイ違反を生じてしまうこともある。そのため、テスト工程が必要とされる。テスト工程では、ＭＡＸディレイ違反やＭＩＮディレイ違反が実際に生じたデータ経路を特定すると共に、この特定されたデータ経路における後段の順序回路に供給されるクロック信号の遅延量をどのように調整すべきかを指示する遅延制御情報ＣＮＴ（図３参照）を得る。この遅延制御情報は、特定されたデータ経路毎のクロック信号の遅延量に対応する値であって、遺伝的アルゴリズム等の最適化アルゴリズムを用いて探索される。そして、遅延制御情報はヒューズ回路１０に書込まれる。
【００３１】
テスト工程は、マイクロコンピュータ１における設計段階、製造段階、調整段階、製品の出荷段階のうち、調整段階で行われる工程であって、クロック信号の動作周波数を徐々に高めながら、マイクロコンピュータ１が所定の入力データに対して正しい出力データを出力可能か否かを判定する。ＭＡＸディレイ違反やＭＩＮディレイ違反によって、正しい出力データが出力されなかった場合には、上記特定されたデータ経路における後段の順序回路に供給されるクロック信号を調整し、再び上記判定を行う。そして、正しい出力データが出力されると、更に動作周波数を高めていく。このようにして、マイクロコンピュータ１の最大動作周波数が決定される。
【００３２】
ＭＡＸディレイ違反は、組み合わせ回路の遅延量が大きい場合に生じ易い。つまり、ＭＡＸディレイ違反とは、組み合わせ回路が演算結果を出力する出力タイミングが、後段の順序回路の入出力動作期間を過ぎてしまい、後段の順序回路が演算結果を取り込めないことをいう。また、ＭＩＮディレイ違反は、組み合わせ回路の遅延量が小さい場合に生じ易い。このような場合には、例えば組み合わせ回路の出力タイミングが、後段のレベルセンス順序回路を入出力動作期間とするクロック信号のサイクル内に位置するだけでなく、前段のレベルセンス順序回路を入出力動作期間とするクロック信号のサイクル内にも位置してしまうことがある。これでは、クロック信号の同一サイクル内で、前段の順序回路に入力されたデータが、組み合わせ回路により演算され、演算結果が後段の順序回路に入力され、さらに後続の他の組み合わせ回路に出力されてしまう。このような状態を、データの突き抜け、即ちＭＩＮディレイ違反という。
【００３３】
図１には、マイクロコンピュータ１のクロック供給系１１の一例が示される。クロック供給系１１は、クロック供給元とされるクロック発生回路２から、クロック供給先とされる複数の順序回路１２〜１５に至るクロック伝播経路１６〜１９を形成している。複数の順序回路１２〜１５としては、クロック信号がハイレベルである期間が入出力動作期間とされる例えばパルスラッチ等のレベルセンス型順序回路１２〜１４と、クロック信号の立ち上がりエッジの変化タイミングが入出力動作期間とされる例えばフリップフロップ等のエッジトリガ型順序回路１５とがある。即ち、クロック供給系１１は、レベルセンス型順序回路１２〜１４とエッジトリガ型順序回路１５が混在したシステムに適用される。
【００３４】
クロック伝播経路１６〜１９は、クロック配線２０等により形成されている。クロック配線２０は、クロックツリー構造とされており、クロック発生回路２から出力されるクロック信号を複数の分岐を介して、その末端に接続された複数の順序回路１２〜１５に伝播する。また、クロック配線２０は、図面とは対応していないが、等幅、等長配線とされている。クロック配線２０の途中には、分岐による同一階層毎に駆動能力を等しくするためにクロックバッファ２１〜２５が配置されている。このようなクロック供給系１１では、クロックスキューをある程度低減することができる。クロックスキューとは、クロック供給元が共通であるクロック供給先、即ち、レベルセンス型順序回路１２〜１４，エッジトリガ型順序回路１５でのクロック信号の伝播遅延時間のばらつきをいう。
【００３５】
クロック発生回路２からレベルセンス型順序回路１２に至るクロック伝播経路１６には、クロック配線２０の途中に、クロックバッファ２１，２２と、パルス生成回路２６と、パルス生成回路２６に直列接続された可変遅延回路２７とが配置されている。レベルセンス型順序回路１３に至るクロック伝播経路１７には、クロック配線２０の途中に、クロックバッファ２１，２２，２４と、パルス生成回路２８とが配置されている。また、レベルセンス型順序回路１４に至るクロック伝播経路１８には、クロック配線２０の途中に、クロックバッファ２１，２３と、パルス生成回路２９と、パルス生成回路２９に直列接続された可変遅延回路３０とが配置されている。さらに、エッジトリガ型順序回路１５に至るクロック伝播経路１９には、クロック配線２０の途中に、クロックバッファ２１，２３，２５と、可変遅延回路３１が配置されている。
【００３６】
図３には、パルス生成回路２６の回路構成が例示される。他のパルス生成回路２８，２９は、パルス生成回路２６と同様であるから説明を適宜省略する。パルス生成回路２６は、クロック発生回路２から伝播されたクロック信号ＣＬＫを、ＣＰＵ３等から出力された遅延制御信号ＣＮＴに応じて、パルスクロック信号ＰＣＬＫを出力する回路であって、レジスタ３２と、選択回路３３と、論理回路３４等を備えている。レジスタ３２には、遅延制御信号ＣＮＴに応じて、クロック信号ＣＬＫの変化タイミングを指示する制御情報が設定される。選択回路３３は、遅延時間の異なる例えば２つの遅延経路を有し、レジスタ３２に設定された制御情報に応じて、遅延経路を選択する回路である。選択回路３３は、インバータ回路３５〜３７と、２入力に対して論理積を採るアンドゲート回路（以下、ＡＮＤ回路と記す）３８，３９と、２入力に対して論理和を採るオアゲート回路（以下、ＯＲ回路と記す）４０とを備えている。遅延経路の遅延時間は、経路上に配置されたインバータ回路の数に応じて異なる。論理回路３４は、選択回路３３の出力とクロック信号ＣＬＫに応じて、クロック信号ＣＬＫの変化タイミングを決定する回路であって、インバータ回路４１とＡＮＤ回路４２とを備えている。
【００３７】
以下、図４に例示されるパルス生成回路２６のタイミングチャートを用いて、パルスクロック信号ＰＣＬＫが生成される動作について説明する。ここで、説明の便宜上、タイミングチャートには、論理回路３４のインバータ回路４１の出力が信号ＳＡとして示される。まず、時刻ｔ０において、クロックＣＬＫが「１（ハイレベルを意味する）」、信号ＳＡが「１」であるから、ＡＮＤ回路４２の２入力が共に「１」となり、僅かな遅延量を持って時刻ｔ１において、パルスクロック信号ＰＣＬＫがローレベルからハイレベルにエッジ変化する。要するに、時刻ｔ１が立ち上がりエッジの変化タイミングとされる。
【００３８】
また、時刻ｔ０において、クロック信号ＣＬＫが「１」であるから、ＡＮＤ回路３８の一方の入力は「１」とされ、ＡＮＤ回路３９の一方の入力は２つのインバータ回路３５，３６により「１」とされる。そして、遅延制御信号ＣＮＴは「０（ローレベルを意味する）」であるから、レジスタ３２に設定される制御情報も「０」とされる。このとき、ＡＮＤ回路３８の他方の入力は、制御情報「０」がインバータ回路３７により反転されるので、「１」とされる。ＡＮＤ回路３９の他方の入力は、制御情報「０」がそのまま入力されるから、「０」である。これにより、ＡＮＤ回路３８の出力が「１」となり、ＡＮＤ回路３９の出力が「０」となるから、ＯＲ回路４０の出力は、論理和を採り、「１」となる。そして、ＯＲ回路４０の出力は、インバータ回路４１により反転されて、ＳＡ信号となる。このＳＡ信号は、ＡＮＤ回路３８の出力に基づいているので、経路上に配置された１つのインバータ回路４１による遅延量を持って時刻ｔ２において、「０」とされる。
【００３９】
時刻ｔ２において、クロック信号ＣＬＫは「１」、信号ＳＡは「０」であるから、ＡＮＤ回路４２の出力が「０」とされる。このとき、時刻ｔ２から僅かな遅延量を持って時刻ｔ３において、パルスクロック信号ＰＣＬＫがハイレベルからローレベルにエッジ変化する。要するに、時刻ｔ３が立ち下がりエッジの変化タイミングとされる。時刻ｔ３〜ｔ４においては、クロック信号ＣＬＫと信号ＳＡのいずれかが「０」であるから、パルスクロック信号ＰＣＬＫは、ローレベルとされる。
【００４０】
時刻ｔ４において、クロックＣＬＫが「１」、信号ＳＡが「１」であるから、ＡＮＤ回路４２の２入力が共に「１」となり、僅かな遅延量を持って時刻ｔ５において、パルスクロック信号ＰＣＬＫがローレベルからハイレベルにエッジ変化する。要するに、時刻ｔ５が立ち上がりエッジの変化タイミングとされる。
【００４１】
また、時刻ｔ４において、クロックＣＬＫが「１」であるから、ＡＮＤ回路３８の一方の入力は「１」とされ、ＡＮＤ回路３９の一方の入力は２つのインバータ回路３５，３６により「１」とされる。そして、遅延制御信号ＣＮＴは「１」であるから、レジスタ３２に設定される制御情報も「１」とされる。このとき、ＡＮＤ回路３８の他方の入力は、制御情報「１」がインバータ回路３７により反転されるので、「０」とされる。ＡＮＤ回路３９の他方の入力は、制御情報「１」がそのまま入力されるから、「１」である。これにより、ＡＮＤ回路３８の出力が「０」となり、ＡＮＤ回路３９の出力が「１」となるから、ＯＲ回路４０の出力は、論理和を採り、「１」となる。そして、ＯＲ回路４０の出力は、インバータ回路４１により反転されて、ＳＡ信号となる。このＳＡ信号は、ＡＮＤ回路３９の出力に基づいているので、経路上に配置された３つのインバータ回路３５，３６，４１による遅延量を持って時刻ｔ６において、「０」とされる。
【００４２】
時刻ｔ６において、クロック信号ＣＬＫは「１」、信号ＳＡは「０」であるから、ＡＮＤ回路４２の出力が「０」とされる。このとき、時刻ｔ６から僅かな遅延量を持って時刻ｔ７において、パルスクロック信号ＰＣＬＫがハイレベルからローレベルにエッジ変化する。要するに、時刻ｔ７が立ち下がりエッジの変化タイミングとされる。
【００４３】
このように、パルスクロック信号ＰＣＬＫにおいて、時刻ｔ０〜ｔ１の遅延量と時刻ｔ４〜ｔ５の遅延量とは略同じであるから、立ち上がりエッジの変化タイミングは変化していない。しかし、時刻ｔ０〜ｔ２の遅延量と時刻ｔ４〜ｔ６の遅延量とは選択回路３３による遅延経路の選択によって変化しているから、立ち下がりエッジの変化タイミングは可変とされる。要するに、パルス生成回路２６は、遅延制御信号ＣＮＴが「０」であれば、選択回路３３が遅延量の小さい遅延経路を選択するから、パルスクロック信号ＰＣＬＫの立ち下がりタイミングを早くしてパルス幅を小さくする。また、パルス生成回路２６は、遅延制御信号ＣＮＴが「１」であれば、選択回路３３が遅延量の大きい遅延経路を選択するから、パルスクロック信号ＰＣＬＫの立ち下がりタイミングを遅くしてパルス幅を大きくする。
【００４４】
これにより、クロック供給系１１では、パルス生成回路２６，２８，２９をクロック供給先がレベルセンス型順序回路１２〜１４であるクロック配線２０の途中に配置しているから、レベルセンス型順序回路１２〜１４の入出力動作期間の終点、即ち、パルスクロック信号ＰＣＬＫの立ち下がりエッジの変化タイミングを可変とすることができる。
【００４５】
ここで、図５を用いて、クロック信号ＣＬＫの立ち上がりエッジの変化タイミングの遅延量を大きくすることで、ＭＡＸディレイ違反を回避する場合について説明する。データ経路４３は、例えば３つのレベルセンス型順序回路１２，１３，１４と、これらの間に配置された組み合わせ回路４４，４５とから形成されている。まず、時刻ｔ０〜ｔ１において、前段のレベルセンス型順序回路１２は、クロック信号ＣＬＫによって入出力動作期間とされるから、例えば時刻ｔ０で所定のデータを組み合わせ回路４４に出力する。ここで、後段のレベルセンス型順序回路１３は、入出力動作期間がクロック信号ＣＬＫの時刻ｔ２〜ｔ３とされる。ところが、組み合わせ回路４４は、遅延時間が大きく、クロック信号ＣＬＫの１サイクル内で演算処理が完了していない。つまり、組み合わせ回路４４による演算結果の出力タイミングは、時刻ｔ３を過ぎた時刻ｔ４となり、演算結果が後段のレベルセンス型順序回路１３に取り込まれず、ＭＡＸディレイ違反を生じてしまう。
【００４６】
そこで、テスト工程において、例えばＣＰＵ３等がパルス幅を大きくするため遅延制御信号ＣＮＴ「１」を生成して、パルス生成回路２８に出力する。そして、パルス生成回路２８は、クロック信号ＣＬＫの立ち下がりエッジの変化タイミングを時刻ｔ５に変更したパルスクロック信号ＰＣＬＫをレベルセンス型順序回路１３に出力する。これにより、組み合わせ回路４４の演算結果の出力タイミングは、後段のレベルセンス型順序回路１３の入出力動作期間とされる時刻ｔ２〜ｔ５内に位置することになるから、ＭＡＸディレイ違反を回避できる。また、組み合わせ回路４５からみれば、データの送り手側とされるレベルセンス型順序回路１３は、例えばパルスクロック信号ＰＣＬＫの時刻ｔ４において所定のデータを組み合わせ回路４５に出力する。組み合わせ回路４５は、遅延時間がそれ程大きくないから、例えばパルスクロック信号ＰＣＬＫの時刻ｔ４〜ｔ６において所定の演算処理を完了させ、演算結果を時刻ｔ６で出力する。後段のレベルセンス型順序回路１４は、時刻ｔ６より入出力動作期間とされるから、ＭＡＸディレイ違反を生じない。
【００４７】
次に、図６を用いて、クロック信号ＣＬＫの立ち上がりエッジの変化タイミングの遅延量を小さくすることで、ＭＩＮディレイ違反を回避する場合について説明する。データ経路４６は、例えば３つのレベルセンス型順序回路１２，１３，１４と、組み合わせ回路４７，４８とから形成されている。まず、時刻ｔ０〜ｔ１において、前段のレベルセンス型順序回路１２は、クロック信号ＣＬＫによって入出力動作期間とされるから、例えば時刻ｔ０において所定のデータを組み合わせ回路４７に出力する。ここで、後段のレベルセンス型順序回路１４は、入出力動作期間がクロック信号ＣＬＫの時刻ｔ２〜ｔ６とされる。
【００４８】
組み合わせ回路４７は、遅延時間が大きく、クロック信号ＣＬＫの１サイクル内で演算処理が完了せず、演算結果の出力タイミングが時刻ｔ３となっている。しかし、この出力タイミングは、後段のレベルセンス型順序回路１４の入出力動作期間内に位置する。これにより、組み合わせ回路４７の演算結果は、後段のレベルセンス型順序回路１４に取り込まれるから、ＭＡＸディレイ違反は生じない。
【００４９】
これに対して、組み合わせ回路４８は、遅延量が小さく、演算処理を時刻ｔ２〜ｔ５内で完了させることができる。つまり、クロック信号ＣＬＫのパルス幅が大きいために、組み合わせ回路４７，４８による演算結果の出力タイミングが、後段のレベルセンス型順序回路１４の入出力動作期間とされるクロック信号ＣＬＫの同一サイクル内に位置してしまう。このため、２つの組み合わせ回路４７，４８の演算結果が、同一サイクル内で後段のレベルセンス型順序回路１４に取り込まれ、ＭＩＮディレイ違反を生じてしまう。
【００５０】
そこで、テスト工程において、例えばＣＰＵ３等がパルス幅を小さくするための遅延制御信号ＣＮＴ「０」を生成して、パルス生成回路２９に出力する。そして、パルス生成回路２９は、クロック信号ＣＬＫの立ち下がりエッジの変化タイミングを時刻ｔ６からｔ４に変更したパルスクロック信号ＰＣＬＫをレベルセンス型順序回路１４に出力する。これにより、組み合わせ回路４８の演算結果の出力タイミングは、後段のレベルセンス型順序回路１４の入出力動作期間とされる時刻ｔ２〜ｔ４内に位置しないことになる。このため、組み合わせ回路４８，４９の演算結果は、異なるサイクル内で後段のレベルセンス型順序回路１４に取り込まれるので、ＭＩＮディレイ違反を回避できる。
【００５１】
図７には、可変遅延回路２７の回路構成が一例として示される。他の可変遅延回路３０，３１は、可変遅延回路２７と同様であるから説明を適宜省略する。さらに、パルス生成回路２６と共通の回路構成については説明を適宜省略する。可変遅延回路２７は、上記したレジスタ３２と選択回路３３を備えており、クロック信号ＣＬＫの伝播遅延時間を可変、即ちクロック信号ＣＬＫのパルス幅を変更せずに、パルス自体をシフトさせたパルスクロック信号ＰＣＬＫを出力する。
【００５２】
図８には、可変遅延回路２７の動作タイミングを示すタイミングチャートの一例が示される。図４に示したタイミングチャートと比べると、可変遅延回路２７から出力されるパルスクロック信号ＰＣＬＫは、上記信号ＳＡを反転したパルスとされる。例えば、時刻ｔ０において、クロック信号ＣＬＫが「１」であるから、ＡＮＤ回路３８の一方の入力は「１」とされ、ＡＮＤ回路３９の一方の入力は２つのインバータ回路３５，３６により「１」とされる。そして、遅延制御信号ＣＮＴは「０」であるから、レジスタ３２に設定される制御情報も「０」とされる。このとき、ＡＮＤ回路３８の他方の入力は、制御情報「０」がインバータ回路３７により反転されるので、「１」とされる。ＡＮＤ回路３９の他方の入力は、制御情報「０」がそのまま入力されるから、「０」である。これにより、ＡＮＤ回路３８の出力が「１」となり、ＡＮＤ回路３９の出力が「０」となるから、ＯＲ回路４０の出力は、論理和を採り、「１」となる。そして、ＯＲ回路４０の出力であるパルスクロック信号ＰＣＬＫ信号となる。このパルスクロック信号ＰＣＬＫは、ＡＮＤ回路３８の出力に基づいているので、僅かな遅延量を持って時刻ｔ１において、「０」とされる。
【００５３】
また、時刻ｔ２において、クロックＣＬＫが「０」とされると、ＡＮＤ回路３８，３９の一方の入力が「０」となり、ＯＲ回路４０の出力は、「０」とされる。そして、パルスクロック信号ＰＣＬＫは、時刻ｔ３において「０」とされる。時刻ｔ４において、再びクロックＣＬＫが「１」となり、遅延制御信号ＣＮＴは「１」であるから、上記した論理演算により、ＡＮＤ回路３８の出力が「０」となり、ＡＮＤ回路３９の出力が「１」となる。そして、ＯＲ回路４０の出力は、論理和を採り、「１」となる。そして、ＯＲ回路４０の出力であるパルスクロック信号ＰＣＬＫ信号となる。このパルスクロック信号ＰＣＬＫ信号は、ＡＮＤ回路３９の出力に基づいているので、経路上に配置された２つのインバータ回路３５，３６による遅延量を持って時刻ｔ５において、「１」とされる。また、時刻ｔ６において、クロックＣＬＫが「０」とされると、ＡＮＤ回路３８，３９の一方の入力が「０」となり、ＯＲ回路４０の出力は、「０」とされる。そして、パルスクロック信号ＰＣＬＫは、時刻ｔ６において「０」とされる。
【００５４】
このように、可変遅延回路２７は、パルスクロック信号ＰＣＬＫのパルス幅を変化させず、選択回路３３で選択された遅延経路に基づく遅延量によって、パルスをシフトできる。従って、クロック供給系１１におけるクロック伝播経路１６，１８では、上記したパルス生成回路２６，２９だけでなく、可変遅延回路２７，３０がクロック配線２０の途中に配置されているから、クロック信号の立ち下がりエッジの変化タイミングを可変とした上で、そのパルス幅を保ったままシフトさせることができる。これにより、遅延量の小さい組み合わせ回路が配置されたデータ経路では、パルス生成回路２６，２９によってパルス幅を小さくすることで、上記ＭＩＮディレイ違反を回避できる。その上、遅延量の大きい組み合わせ回路が配置されている後続の他のデータ経路では、可変遅延回路２７，３０によってパルスを遅延させることで、上記ＭＡＸディレイ違反を回避できる。このようにすれば、マイクロコンピュータ１の歩留まりの向上を図ることができる。また、クロック供給系１１では、可変遅延回路３１をクロック供給先がエッジトリガ型順序回路１５であるクロック配線２０の途中に配置しているから、クロック信号ＣＬＫのパルス幅を保ったままシフトさせ、立ち上がりエッジの変化タイミングを可変とし、ＭＡＸディレイ違反を回避できる。
【００５５】
ここで、図９を用いて、クロック信号ＣＬＫの立ち上がりエッジの変化タイミングの遅延量を大きくすることで、ＭＡＸディレイ違反を回避する場合について説明する。データ経路５０は、例えば３つのエッジトリガ型順序回路１５，５１，５２と、これらの間に配置された組み合わせ回路５３，５４とから形成されている。まず、前段のエッジトリガ型順序回路１２は、時刻ｔ０におけるクロック信号ＣＬＫの立ち上がりエッジの変化タイミングによって入出力動作期間とされるから、所定のデータを組み合わせ回路５３に出力する。ここで、後段のエッジトリガ型順序回路１５は、入出力動作期間がクロック信号ＣＬＫの時刻ｔ１とされる。ところが、組み合わせ回路５３は遅延時間が大きく、クロック信号ＣＬＫの１サイクル内で演算処理が完了せず、演算結果の出力タイミングが時刻ｔ１を過ぎた時刻ｔ２となっている。このため、組み合わせ回路５３による演算結果が後段のエッジトリガ型順序回路１５に取り込まれず、ＭＡＸディレイ違反を生じてしまう。
【００５６】
そこで、テスト工程において、例えばＣＰＵ３等がパルスの遅延量を大きくしてシフトさせるための遅延制御信号ＣＮＴ「１」を生成して、可変遅延回路３１に出力する。すると、可変遅延回路３１は、クロック信号ＣＬＫの立ち上がりエッジの変化タイミングを時刻ｔ１からｔ２に変更したパルスクロック信号ＰＣＬＫをエッジトリガ型順序回路１５に出力する。これにより、組み合わせ回路５３の演算結果の出力タイミングは、後段のエッジトリガ型順序回路１５の入出力動作期間とされる時刻ｔ２に位置することになるから、ＭＡＸディレイ違反を回避できる。また、組み合わせ回路５４からみれば、データの送り手側とされるエッジトリガ型順序回路１５は、例えばパルスクロック信号ＰＣＬＫの時刻ｔ２において所定のデータを組み合わせ回路５４に出力する。組み合わせ回路５４は、遅延時間がそれ程大きくないから、クロック信号ＣＬＫの１サイクル内で演算処理を完了させ、演算結果を時刻ｔ３で出力する。後段のエッジトリガ型順序回路５２は、時刻ｔ３で入出力動作期間とされるから、ＭＡＸディレイ違反を生じない。
【００５７】
図１０には、クロック供給系の他の一例が示される。このクロック供給系５５において、レベルセンス型順序回路５６，５７に至るクロック供給経路５８，５９は、クロックバッファ６０と、共通のパルス生成回路６１と、可変遅延回路６２，６３がそれぞれ配置されている。これにより、クロック供給経路５８，５９で必要とされるパルス生成回路の数を減らすことができるから、低コスト化を図ることができる。また、エッジトリガ型順序回路６４，６５に至るクロック供給経路６６，６７では、クロックバッファ６０，６８と、可変遅延回路６９，７０が配置されており、クロック信号ＣＬＫのパルスをシフトさせることで、ＭＡＸディレイ違反を回避できる。
【００５８】
図１１には、複数の順序回路が全てエッジトリガ型順序回路であるシステムに適用されるクロック供給系の一例が示される。エッジトリガ型順序回路は、上記したようにクロック信号の立ち上がりエッジの変化タイミングで入出力動作期間とされる。このため、クロック供給系７１では、クロック信号の立ち上がりエッジの変化タイミングを可変にすればよい。そこで、エッジトリガ型順序回路７２〜７５に至るクロック供給経路７６〜７９には、可変遅延回路８０〜８３が配置されており、テスト工程においてクロック信号のパルスをシフトすることにより、ＭＡＸディレイ違反を回避することができる。
【００５９】
図１２には、パルス生成回路の他の一例が示される。パルス生成回路８４は、上記したパルス生成回路２６と比べると、論理回路８５の構成が異なる。論理回路８５は、入力されるイネーブル信号ＥＮＡＢＬＥに応じて、レベル変化しない信号を出力する。論理回路８５は、インバータ回路８６と、２入力に対して否定論理和を採るノア回路（以下、ＮＯＲ回路と記す）８７と、ＡＮＤ回路８８とを有している。インバータ回路８６は、イネーブル信号が入力され、その値を反転して出力する。ＮＯＲ回路８７は、インバータ回路８６の出力と選択回路３３の出力とを２入力として論理演算を行う。ＡＮＤ回路８８は、ＮＯＲ回路８７の出力とクロック信号ＣＬＫを２入力として論理積を採る。
【００６０】
例えば、イネーブル信号の値が「０」である場合、ＮＯＲ回路８７の一方の入力は「１」とされる。このため、選択回路３３の出力値にかかわらず、ＮＯＲ回路８７の出力値は「０」となる。これにより、クロック信号ＣＬＫの値にかかわらず、ＡＮＤ回路８８の出力値が「０」となる。即ち、パルス生成回路８４は、イネーブル信号の値が「０」であれば、パルスクロック信号ＰＣＬＫはレベル変化しないことになる。これは、ＣＰＵ３等が、クロック信号の供給が必要でない例えばスリープ状態とされた機能モジュールを予め特定することで、この機能モジュールに含まれる複数の順序回路に対して、クロック信号を供給しないで済むことになる。一般的に、マイクロコンピュータでは、クロック供給系により複数の順序回路にクロック信号を分配するだけで、例えば全消費電力の１／３程度を消費することになる。このため、上記したクロック供給系１１，５５に、パルス生成回路８４を配置することにより、低電力化を図ることができる。
【００６１】
一方、イネーブル信号の値が「１」である場合、ＮＯＲ回路８７の一方の入力は「０」とされる。そして、選択回路３３の出力値が「１」であれば、ＮＯＲ回路８７の出力値は「０」となる。これにより、クロック信号ＣＬＫの値にかかわらず、ＡＮＤ回路８８の出力値が「０」となるから、パルスクロック信号ＰＣＬＫは、例えばローレベルとされる。また、選択回路３３の出力値が「０」であれば、ＮＯＲ回路８７の出力値は「１」となる。これにより、ＡＮＤ回路８８の出力値がクロック信号ＣＬＫの値に応じて変化するから、パルスクロック信号ＰＣＬＫは、例えばハイレベルとローレベルを交互に繰り返す。要するに、パルス生成回路８４は、イネーブル信号の値が「１」であれば、図３に示したパルス生成回路２６と同様に、その立ち下がりエッジの変化タイミングを可変とする。
【００６２】
＜第２実施形態＞
図１３には、上記パルス生成回路２６の別の回路構成が例示される。図１３に示されるパルス生成回路２６は、クロック発生回路２から伝播されたクロック信号ＣＬＫを、ＣＰＵ３等から出力された遅延制御信号ＣＮＴに応じて、パルスクロック信号ＰＣＬＫを出力する回路であって、クロック信号ＣＬＫの立ち上がりエッジに同期する第１パルス信号を生成する第１パルス生成部１００と、クロック信号ＣＬＫの立ち下がりエッジに同期する第２パルス信号を生成する第２パルス生成部２００と、上記第１パルス信号と、上記第２パルス信号とを合成してパルスクロック信号ＰＣＬＫを形成するＯＲ回路３００とを含んで成る。上記ＯＲ回路３００で合成されたパルスクロック信号ＰＣＬＫは後段回路に伝達される。
【００６３】
上記第１パルス生成部１００は、互いに直列接続されたインバータ回路１０２，１０３，１０４と、上記インバータ回路１０４の出力信号を遅延することによって上記第１パルス信号のパルス幅を調整可能な第１可変遅延回路１０７と、上記クロック信号ＣＬＫと上記第１可変遅延回路１０７の出力信号とのアンド論理を得るＡＮＤ回路１０６とを含んで成る。上記第１可変遅延回路１０７での遅延量は、遅延制御信号ＣＮＴ１によってレジスタ１０８に設定された制御情報によって決定される。上記制御情報は遅延制御信号ＣＮＴによって書き換えられる。
【００６４】
上記第２パルス生成部２００は、上記インバータ回路１０４の出力信号を遅延することによって上記第２パルス信号のパルス幅を調整可能な第２可変遅延回路２０３と、この第２可変遅延回路２０３の出力信号の論理を反転するためのインバータ回路２０５と、このインバータ回路２０５の出力信号と上記インバータ回路１０２の出力信号とのアンド論理を得るためのＡＮＤ回路２０７と、このＡＮＤ回路２０７の出力信号の遅延量を調整可能な第３可変遅延回路２０８とを含んで成る。上記第２可変遅延回路２０３での遅延量は、遅延制御信号ＣＮＴ２によってレジスタ２０４に設定された制御情報によって決定される。また、上記第３可変遅延回路２０８での遅延量は、遅延制御信号ＣＮＴ３によってレジスタ２０９に設定された制御情報によって決定される。
【００６５】
上記の回路構成において、インバータ回路１０２の出力ノードを「Ｎ１」で示し、インバータ回路１０４の出力ノードを「Ｎ２」で示し、インバータ回路２０５の出力ノードを「Ｎ３」で示し、ＡＮＤ回路１０６の出力ノードを「Ｎ４」で示し、第３可変遅延回路２０８の出力ノードを「Ｎ５」で示す。
【００６６】
図１４には、図１３に示される回路における主要部の動作タイミングが示される。
【００６７】
クロック信号ＣＬＫが時刻ｔ０に立ち上がると、ＡＮＤ回路１０６の出力ノードＮ４の信号が立ち上がり、その後、ＯＲ回路３００を介してパルスクロック信号ＰＬＫが時刻ｔ１で立ち上がる。クロック信号ＣＬＫの立ち上がりエッジは、インバータ回路１０２、１０３、１０４を介してノードＮ２の立下りエッジとなり、これがＡＮＤ回路１０６の出力ノードＮ４の信号を立ち下げ、パルスクロック信号ＰＣＬＫを時刻ｔ２で立ち下げる。また、入力クロック信号ＣＬＫが時刻ｔ３に立ち下がると、インバータ回路１０２の出力ノードＮ１の信号が立ち上がり、それに伴いＡＮＤ回路２０７の出力ノードＮ５の信号が立ち上がる。その後、ＯＲ回路３００を介してパルスクロック信号ＰＣＬＫが時刻ｔ４で立ち上がる。インバータ回路１０２の出力信号の立ち上がりエッジは、インバータ３、４、５を介してノードＮ３の信号の立ち下りとなり、これがＡＮＤ回路２０７の出力ノードＮ５の信号を立ち下げ、パルスクロック信号ＰＣＬＫを時刻ｔ５で立ち下げる。
【００６８】
以上の動作を繰り返すことにより、入力クロックの立ち上がりエッジ、立ち下りエッジの両方に同期して立ち上がるパルスクロック信号ＰＣＬＫを生成することができる。
【００６９】
図１５に示される回路構成によれば、以下の作用効果を得ることができる。
【００７０】
（１）第１可変遅延回路１０７での遅延量を変更することによって上記第１パルス信号のパルス幅を調整することができ、第２可変遅延回路２０３での遅延量を変更することによって上記第２パルス信号のパルス幅を調整することができるので、上記第１可変遅延回路１０７での遅延量の変更、及び上記第２可変遅延回路２０３での遅延量の変更により、クロックパルス信号ＰＣＬＫの立ち下がりエッジの変化タイミングを可変とすることができる。それにより、上記第１実施形態の場合と同様の作用効果を得ることができる。
【００７１】
（２）パルスクロック信号ＰＣＬＫの立ち上がりエッジは、クロック信号ＣＬＫの立ち上がりエッジに対して２倍の頻度で現れる。例えば、パルスクロック信号ＰＣＬＫの周波数が２００ＭＨｚであれば、クロック信号ＣＬＫの周波数は１００ＭＨｚとなる。チップ内の論理回路を２００ＭＨｚで動作させたい場合、上記クロックパルス生成回路２６よりも上流側のクロックツリーでは１００ＭＨｚクロック信号を分配すれば良い。このように上記クロックパルス生成回路２６よりも上流側のクロックツリーでのクロック信号の周波数を１／２に下げることができ、そこでの充放電回数の減少により、消費電力を低減できる。
【００７２】
（３）入力クロックの立ち上がりエッジ、立ち下りエッジの両方に同期して立ち上がるパルスクロック信号ＰＣＬＫを生成する場合、クロック信号ＣＬＫのデューティ（ハイレベルとローレベルとの期間の比）が重要とされる。例えば図１５に示されるようにクロック信号ＣＬＫのデューティが５０％から大きく外れている場合、パルスクロック信号ＰＣＬＫのサイクル時間としてはＴ２，Ｔ３の二種類ができる。この場合、システムの最高動作周波数はＴ３で決まることになり、本来理想とされるＴ１／Ｔ２よりも下がってしまう。現実にデバイスのばらつきまで考慮した上で、信号の立ち上がり時間、立ち下がり時間を同一にすることができないため、クロック信号のデューティを５０％にすることは非常に難しいとされている。
【００７３】
これに対して図１３に示される構成では、上記第１可変遅延回路１０７、上記第２可変遅延回路２０３、及び上記第３可変遅延回路２０８において信号のタイミング調整を行うことができ、それによって、システム性能を理想に近づけることができる。例えば第３可変遅延回路２０８での遅延量を増やしてノードＮ５での信号を遅延させることにより、ＰＣＬＫ２で示されるようにパルスクロック信号のサイクル時間を揃えることができる（Ｔ４＝Ｔ５）。また、第２可変遅延回路２０３での遅延量を増やしてインバータ２０５の出力ノードＮ３における信号のハイレベル期間（パルス幅）を広げることにより、パルスクロック信号の立ち下がりタイミングが、パルスクロック信号ＰＣＬＫ２と一致するパルスクロック信号ＰＣＬＫ３を得ることができる。パルスクロック信号ＰＣＬＫ３は、期間Ｔ２，Ｔ３が異なるが、パルスクロック信号の立ち下がりタイミングが揃っているため、特にパルスラッチ回路では適切なパルスクロック信号とされる。
【００７４】
図１６には、上記パルス生成回路２６の別の回路構成が例示される。図１６に示されるパルス生成回路２６が、図１３に示されるのと大きく相違するのは、ＡＮＤ回路１０６，２０７の動作をイネーブル信号ＥＮＡＢＬＥによって制御可能に構成された点である。
【００７５】
イネーブル信号ＥＮＡＢＬＥをローレベルにすることで、パルスクロック信号ＰＣＬＫの生成を止めることができ、イネーブル信号ＥＮＡＢＬＥをハイレベルにすることで、パルスクロック信号ＰＣＬＫを生成することができる。イネーブル信号ＥＮＡＢＬＥは、図１におけるＣＰＵ３などから伝達される。
【００７６】
図１７には、図１６における主要部の動作タイミングが示される。
【００７７】
時刻ｔ２１でイネーブル信号ＥＮＡＢＬＥがハイレベルになり、時刻ｔ４でパルスクロック信号ＰＣＬＫが立ち上がっている。その後、時刻ｔ７でもう一度パルスクロック信号ＰＣＬＫが生成され、時刻ｔ８１でイネーブル信号ＥＮＡＢＬＥがローレベルになることから、その後のパルスクロック信号ＰＣＬＫの生成が止められている。パルスクロック信号ＰＣＬＫの生成が停止された場合、当該パルスクロック信号ＰＣＬＫが供給される回路の動作は停止される。
【００７８】
このようにイネーブル信号ＥＮＡＢＬＥをローレベルにすることで、パルスクロック信号ＰＣＬＫの生成を止めることができ、イネーブル信号ＥＮＡＢＬＥをハイレベルにすることで、パルスクロック信号ＰＣＬＫを生成することができるので、上記パルスクロック信号ＰＣＬＫが供給される回路の動作をＣＰＵ３から制御する場合に有効とされる。
【００７９】
図１８には、上記クロックパルス生成回路２６の適用例が示される。
【００８０】
３１７は半導体集積回路チップ、３１８はクロック発振器（ＣＰＧ）、３１９はクロック信号線、３２０、３２１、３２２、３２３は論理ＩＰモジュール、３２４はクロックバッファ、３２５はパルスラッチ回路、２６はクロックパルス生成回路、３２７はフリップフロップ、３２８はクロックバッファ、３２９はパルスラッチ回路、３３０は通常のクロックパルス生成回路である。クロック発振器３１８にて生成されたクロック信号は、クロック信号線３１９、クロックバッファ３２４を介して各論理ＩＰモジュール３２０、３２１、３２２、３２３に分配される。論理ＩＰモジュール３２０においては、入力クロック信号がクロックパルス生成回路２６によって２倍の周波数に高められ、各パルスラッチ回路３２５に供給されている。論理ＩＰモジュール３２１において入力クロックはクロックバッファ３２８によってそのままの周波数でフリップフロップ３２７に供給されている。論理ＩＰモジュール３２２においては、入力クロックがクロックパルス生成回路３０１によってそのままの周波数でパルスクロック信号に整形されてパルスラッチ回路３２９に供給されている。クロックパルス生成回路３０１には、図３に示される回路構成を適用することができる。論理ＩＰモジュール３２３においては、入力クロック信号が三通りに使われている。例えば、クロックバッファ３２８を介することにより、そのままの周波数でフリップフロップ３２７に供給されている第１のケース、クロックパルス生成回路２６を介することにより２倍の周波数のパルスクロック信号としてパルスラッチ回路３２５に供給される第２のケース、クロックパルス生成回路３０１を介することにより、周波数はそのままでパルスクロック信号に整形されてパルスラッチ回路３２９に供給されている第３のケースを挙げることができる。
【００８１】
例えば、半導体集積回路チップ上で特に高速動作が必要な中央処理装置のような回路を論理ＩＰモジュール３２０で構成することにより、チップ上で分配されるクロックの周波数を抑えることが可能となり、低消費電力化を果たすことが可能となる。特に高速動作を要求されないような、例えばユーザ論理を論理ＩＰモジュール３２１で構成し、画像処理装置を論理ＩＰモジュール３２２で構成し、その他の周辺回路を論理ＩＰモジュール３２３で構成することにより、論理ＩＰモジュールの機能に応じてクロックパルス生成回路の適用を検討することより、チップ全体の低消費電力化を果たすことが可能となる。
【００８２】
上記の構成によれば、クロックパルス生成回路２６を特定の論理ＩＰモジュール内に設けることにより、クロック発振器３１８から各論理ＩＰモジュールへのクロック分配時の周波数を高めることなく、当該論理ＩＰモジュールのみを２倍の周波数で動作させることが可能になり、半導体集積回路チップの処理性能を高めると同時に、低消費電力化を果たすことが可能になる。
【００８３】
図１９には、上記パルスラッチ回路３２５の構成例が示される。
【００８４】
上記パルスラッチ回路３２５は、特に制限されないが、図１９に示されるように、インバータ回路４３６，４３８，４３９，４３７，４４１、クロックドインバータ回路４４２、及びトランスミッションゲート４４０を含んで成る。上記パルス生成回路２６によって生成されたパルスクロック信号ＰＣＬＫはインバータ４３６を介して取り込まれる。パルスクロック信号ＰＣＬＫがハイレベルになると、データ端子Ｄからの入力データが出力端子Ｑに伝播される。パルスクロック信号ＰＣＬＫがローレベルになると、トランスミッションゲート回路４４０が閉じて、インバータ回路４４１と、クロックドインバータ４４２で構成されるラッチ回路によって、そのときの値が保持される。
【００８５】
図２０には、上記パルス生成回路２６の別の回路構成が例示される。
【００８６】
図２０に示されるパルス生成回路２６が図１３に示されるのと大きく相違するのは、第１パルス生成部１００によって得られる第１パルス信号のパルス幅と、第２パルス生成部２００によって得られる第２パルス信号のパルス幅とを同時に調整可能な可変遅延回路１４５を有する点である。図２０において、第１パルス生成部１００は、インバータ回路１０２と、可変遅延回路１４５と、ＡＮＤ回路１０６とを含んで成り、第２パルス生成部２００は、インバータ回路２０５と、ＡＮＤ回路２０７とを含んで成る。上記可変遅延回路１４５での遅延量は、遅延制御信号ＣＮＴによってレジスタ１４６に設定された制御情報によって決定される。
【００８７】
図２１には、図２０に示される回路における主要部の動作タイミングが示される。
【００８８】
遅延制御信号ＣＮＴがローレベルの期間に生成されるパルスクロック信号ＰＣＬＫのパルス幅ｔ２−ｔ１、ｔ５−ｔ４に比較して、遅延制御信号ＣＮＴがハイレベルの期間に生成されるパルスクロック信号ＰＣＬＫのパルス幅ｔ８−ｔ７、ｔ１１−ｔ１０が広がっている。つまり、遅延制御信号ＣＮＴによって、上記第１パルス信号のパルス幅と上記第２パルス信号のパルス幅とを同時に調整することができる。また、パルスクロック信号ＰＣＬＫの立ち上がりエッジは、クロック信号ＣＬＫの立ち上がりエッジに対して２倍の頻度で現れる。このことから、図２１に示される回路は、図１３に示されるのと同様の作用効果を得ることができる。また、図２１に示される構成によれば、第１パルス生成部１００によって得られる第１パルス信号のパルス幅と、第２パルス生成部２００によって得られる第２パルス信号のパルス幅とが、可変遅延回路１４５において同時に調整されるため、図１３に示される構成に比べて、可変遅延回路や遅延制御信号などの数が少なくて良い。
【００８９】
図２２には、上記パルス生成回路２６の別の回路構成が例示される。
【００９０】
図２２に示されるパルス生成回路２６が図１６に示されるのと大きく相違するのは、ＡＮＤ回路１０６，２０７の動作をイネーブル信号ＥＮＡＢＬＥ１，ＥＮＡＢＬＥ２によって個別的に制御可能に構成された点である。イネーブル信号ＥＮＡＢＬＥ１をローレベルにすることで、ＡＮＤ回路１０６の動作を停止させることができ、イネーブル信号ＥＮＡＢＬＥ２をローレベルにすることで、ＡＮＤ回路２０７の動作を停止させることができる。
【００９１】
図２３には、図２２に示される回路における主要部の動作タイミングが示される。
【００９２】
イネーブル信号ＥＮＡＢＬＥ２が時刻ｔ２１にハイレベルになり、パルスクロック信号ＰＣＬＫが時刻ｔ４に立ち上がり、また、イネーブル信号ＥＮＡＢＬＥ１が時刻ｔ５２にハイレベルになり、パルスクロック信号ＰＣＬＫが時刻ｔ７に立ち上がっている。これにより、パルスクロック信号ＰＣＬＫの周波数換算で１サイクル毎にゲーテッドクロックの制御が可能となる。
【００９３】
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００９４】
例えば、データ経路においてレベルセンス型順序回路の間に組み合わせ回路が配置されていない場合には、上記ＭＩＮディレイ違反がより生じ易くなってしまう。しかし、このような場合でも、例えばパルス生成回路２６によりクロック信号のパルス幅をより小さくすることにより、ＭＩＮディレイ違反を回避できる。
【００９５】
例えば、遅延制御信号ＣＮＴとして各レジスタに伝達されるべき情報は、半導体集積回路チップ内に配置されるヒューズ等の不揮発性メモリ、もしくは外部に接続されるメモリに格納され、チップのパワーオンリセット時に遅延制御信号ＣＮＴとしてレジスタに格納される構成であってもよい。これによって、半導体集積回路チップの製造時に、所定のテストでチップ毎に異なる遅延時間をそれぞれのチップに反映させることも可能となり、デバイス毎の特性に合わせた遅延時間の調整を行うことが可能となる。
【００９６】
マイクロコンピュータ１は、テスト工程におけるクロックスキューの調整に用いた制御情報をヒューズ回路１０に記憶するようにしたが、これに限られず、フラッシュメモリ等の不揮発性記憶手段に記憶してもよい。例えばフラッシュメモリであれば、内部バス９と接続され、ＣＰＵ３等から制御可能とされる。さらに、上記したデータ経路では、前段の順序回路と後段の順序回路を同種類としたが、これに限られず、エッジトリガ型順序回路とレベルセンス型順序回路でデータ経路を形成してもよい。この場合には、後段の順序回路の種類に応じてパルス幅の変更やパルスのシフトを行うことにより、ＭＡＸディレイ違反やＭＩＮディレイ違反を回避することができる。また、上記したマイクロコンピュータ１は、動作周波数の向上と共に低電力化が求められている携帯電話、デジタル家電製品等の適宜の半導体製品に適用することができる。
【図面の簡単な説明】
【００９７】
【図１】マイクロコンピュータのクロック供給系を例示する説明図である。
【図２】本発明の実施形態に係る半導体集積回路の一例であるマイクロコンピュータの概略構成が例示する説明図である。
【図３】パルス生成回路の回路構成を例示する説明図である。
【図４】パルス生成回路の動作タイミングを示すタイミングチャートである。
【図５】クロック信号の立ち下がりエッジの変化タイミングの遅延量を大きくして、ＭＡＸディレイ違反を回避する状態を例示する説明図である。
【図６】クロック信号の立ち下がりエッジの変化タイミングの遅延量を小さくして、ＭＩＮディレイ違反を回避する状態を例示する説明図である。
【図７】可変遅延回路の回路構成を例示する説明図である。
【図８】可変遅延回路の動作タイミングを示すタイミングチャートである。
【図９】クロック信号の立ち上がりエッジの変化タイミングの遅延量を大きくして、ＭＡＸディレイ違反を回避する状態を例示する説明図である。
【図１０】他のクロック供給系を例示する説明図である。
【図１１】エッジトリガ型順序回路からなるシステムに適用されるクロック供給系を例示する説明図である。
【図１２】他のパルス生成回路を例示する説明図である。
【図１３】上記パルス生成回路の別の回路構成を例示する説明図である。
【図１４】図１３に示されるパルス生成回路の動作タイミングを示すタイミングチャートである。
【図１５】図１３に示されるパルス生成回路の動作タイミングを示す別のタイミングチャートである。
【図１６】上記パルス生成回路の別の回路構成を例示する説明図である。
【図１７】図１６に示されるパルス生成回路の動作タイミングを示すタイミングチャートである。
【図１８】上記クロックパルス生成回路の適用例を示す説明図である。
【図１９】図１８に示されるパルスラッチ回路の構成を例示する説明図である。
【図２０】上記パルス生成回路の別の回路構成を例示する説明図である。
【図２１】図２０に示されるパルス生成回路の動作タイミングを示すタイミングチャートである。
【図２２】上記パルス生成回路の別の回路構成を例示する説明図である。
【図２３】図２２に示されるパルス生成回路の動作タイミングを示すタイミングチャートである。
【符号の説明】
【００９８】
１  マイクロコンピュータ
２  クロック発生回路
３  中央処理装置（ＣＰＵ）
４  メモリ
５  バスコントローラ
６，７  論理ＩＰモジュール
８  入出力回路
９  内部バス
１０  ヒューズ回路
１１  クロック供給系
１２〜１５  レベルセンス型順序回路
１６〜１９  クロック供給経路
２０  クロック配線
２１〜２５  クロックバッファ
２６，２８，２９  パルス生成回路
２７，３０，３１  可変遅延回路
３２  レジスタ
３３  選択回路
３４  論理回路
１００  第１パルス生成部
１０７  第１可変遅延回路
２００  第２パルス生成部
２０３  第２可変遅延回路
２０８  第３可変遅延回路
ＣＬＫ  クロック信号
ＣＮＴ  遅延制御信号
ＰＣＬＫ  パルスクロック信号
【図１】
2007243912.tif 000003
【図２】
2007243912.tif 000004
【図３】
2007243912.tif 000005
【図４】
2007243912.tif 000006
【図５】
2007243912.tif 000007
【図６】
2007243912.tif 000008
【図７】
2007243912.tif 000009
【図８】
2007243912.tif 000010
【図９】
2007243912.tif 000011
【図１０】
2007243912.tif 000012
【図１１】
2007243912.tif 000013
【図１２】
2007243912.tif 000014
【図１３】
2007243912.tif 000015
【図１４】
2007243912.tif 000016
【図１５】
2007243912.tif 000017
【図１６】
2007243912.tif 000018
【図１７】
2007243912.tif 000019
【図１８】
2007243912.tif 000020
【図１９】
2007243912.tif 000021
【図２０】
2007243912.tif 000022
【図２１】
2007243912.tif 000023
【図２２】
2007243912.tif 000024
【図２３】
2007243912.tif 000025