(57)【要約】【課題】回路オーバヘッドが少なく、テクノロジ依存性が小さく、一般的なＳｏＣ設計フローと親和性高く、合理的な設計フローの構築を図る。【解決手段】抽出された寄生素子を考慮したタイミングが正しくないと判定されたとき、エラー個所にスキュー低減回路を挿入するステップS26が、遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップS261、第１の部分クロックツリーから出力される第１のクロックと第２の部分クロックツリーから出力される第２のクロックとの到着時間差を求めるステップS262、および、該第１および第２のクロックの到着時間差が所定のスキュー値を満たしていない場合には、第１の遅延時間可変クロックドライバの遅延時間を変更するステップS263,S264を備えるように構成する。【選択図】図２１
2008010003.tif 000002
【特許請求の範囲】
【請求項１】
フロアプランニング、配置配線およびＣＴＳを行うステップ、
寄生素子を抽出し、該抽出された寄生素子を考慮してタイミング検証を行うステップ、
前記抽出された寄生素子を考慮したタイミングが正しくないと判定されたとき、エラー個所にスキュー低減回路を挿入するステップ、および、
ＥＣＯ処理を行って、再度寄生素子の抽出および該抽出された寄生素子を考慮したタイミング検証を行うステップを備え、
前記エラー個所にスキュー低減回路を挿入するステップは、
遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップ、
前記第１の部分クロックツリーから出力される第１のクロックと前記第２の部分クロックツリーから出力される第２のクロックとの到着時間差を求めるステップ、および、
該第１および第２のクロックの到着時間差が所定のスキュー値を満たしていない場合には、前記第１の遅延時間可変クロックドライバの遅延時間を変更するステップを備えることを特徴とする半導体集積回路装置の設計方法。
【請求項２】
請求項１に記載の半導体集積回路装置の設計方法において、
前記第２のクロックドライバは遅延時間が可変な第２の遅延時間可変クロックドライバであり、前記第１および第２のクロックの到着時間差が所定のスキュー値を満たしていない場合には、前記第１の遅延時間可変クロックドライバと共に、該第２の遅延時間可変クロックドライバの遅延時間も変更することを特徴とする半導体集積回路装置の設計方法。
【請求項３】
請求項１に記載の半導体集積回路装置の設計方法において、
前記第１および第２の部分クロックツリーは近接しており、
該近接する第１および第２の部分クロックツリーから出力される前記第１および第２のクロックの到着時間差を求めることを特徴とする半導体集積回路装置の設計方法。
【請求項４】
請求項３に記載の半導体集積回路装置の設計方法において、
前記第１および第２のクロックは、それぞれ前記クロックツリー回路の最終段のクロックドライバの出力クロックであることを特徴とする半導体集積回路装置の設計方法。
【請求項５】
請求項３に記載の半導体集積回路装置の設計方法において、
前記第１および第２のクロックは、それぞれ前記クロックツリー回路の最終段を除く任意の段のクロックドライバの出力クロックであることを特徴とする半導体集積回路装置の設計方法。
【請求項６】
請求項５に記載の半導体集積回路装置の設計方法において、
前記第１の部分クロックツリーからの前記第１のクロックが供給される第１の末端領域、および、前記第２の部分クロックツリーからの前記第２のクロックが供給される第２の末端領域に対して、前記クロックツリー回路と同時にＣＴＳ方式を適用してクロックドライバのツリーを形成することを特徴とする半導体集積回路装置の設計方法。
【請求項７】
請求項５に記載の半導体集積回路装置の設計方法において、
前記第１の部分クロックツリーからの前記第１のクロックが供給される第１の末端領域、および、前記第２の部分クロックツリーからの前記第２のクロックが供給される第２の末端領域に対して、前記クロックツリー回路と独立してＣＴＳ方式を適用し、クロックドライバのツリーを形成することを特徴とする半導体集積回路装置の設計方法。
【請求項８】
請求項１に記載の半導体集積回路装置の設計方法において、
前記第１の部分クロックツリーと前記第２の部分クロックツリーとの組を、複数個所で抽出することを特徴とする半導体集積回路装置の設計方法。
【請求項９】
請求項８に記載の半導体集積回路装置の設計方法において、
前記複数個所の第１および第２の部分クロックツリーの組の抽出を階層的に行い、第１の組における第１の部分クロックツリーは、クロックドライバの遅延時間制御が終了した第２の組における第１および第２の部分クロックツリーを含むことを特徴とする半導体集積回路装置の設計方法。
【請求項１０】
フロアプランニング、配置配線およびＣＴＳを行った後、スキュー低減回路を挿入するステップを備える半導体集積回路装置の設計方法であって、
前記スキュー低減回路を挿入するステップは、
遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、該第１の部分クロックツリーに近接し、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップ、
前記第１の部分クロックツリーからの第１のクロックが出力される第１の観測点と前記第２の部分クロックツリーからの第２のクロックが出力される第２の観測点とを規定するステップ、
前記第１および第２のクロックの位相を比較する位相比較回路を配置するステップ、
該位相比較回路から前記第１の遅延時間可変クロックドライバまで制御信号をフィードバックするステップを備えることを特徴とする半導体集積回路装置の設計方法。
【請求項１１】
請求項１０に記載の半導体集積回路装置の設計方法において、
前記第１の観測点は前記第１の部分クロックツリーのクロックを代表する前記第１のクロックを出力し、且つ、前記第２の観測点は前記第２の部分クロックツリーのクロックを代表する前記第２のクロックを出力することを特徴とする半導体集積回路装置の設計方法。
【請求項１２】
請求項１０に記載の半導体集積回路装置の設計方法において、
前記第１の部分クロックツリーと前記第２の部分クロックツリーとの組を、複数個所で抽出することを特徴とする半導体集積回路装置の設計方法。
【請求項１３】
請求項１２に記載の半導体集積回路装置の設計方法において、
前記複数個所の第１および第２の部分クロックツリーの組の抽出を階層的に行い、第１の組における第１の部分クロックツリーは、クロックドライバの遅延時間制御が終了した第２の組における第１および第２の部分クロックツリーを含むことを特徴とする半導体集積回路装置の設計方法。
【請求項１４】
請求項１０に記載の半導体集積回路装置の設計方法において、
前記第１および第２のクロックの観測点は、それぞれ最終段のクロックドライバの出力であることを特徴とする半導体集積回路装置の設計方法。
【請求項１５】
請求項１０に記載の半導体集積回路装置の設計方法において、
前記第１および第２のクロックの観測点は、それぞれ最終段を除くクロックドライバの出力であることを特徴とする半導体集積回路装置の設計方法。
【請求項１６】
請求項１５に記載の半導体集積回路装置の設計方法において、
前記第１の部分クロックツリーからの前記第１のクロックが供給される第１の末端領域、および、前記第２の部分クロックツリーからの前記第２のクロックが供給される第２の末端領域に対して、前記クロックツリー回路と同時にＣＴＳ方式を適用してクロックドライバのツリーを形成することを特徴とする半導体集積回路装置の設計方法。
【請求項１７】
請求項１５に記載の半導体集積回路装置の設計方法において、
前記第１の部分クロックツリーからの前記第１のクロックが供給される第１の末端領域、および、前記第２の部分クロックツリーからの前記第２のクロックが供給される第２の末端領域に対して、前記クロックツリー回路と独立してＣＴＳ方式を適用し、クロックドライバのツリーを形成することを特徴とする半導体集積回路装置の設計方法。
【請求項１８】
請求項１０〜１７のいずれか１項に記載の半導体集積回路装置の設計方法において、前記スキュー低減回路を挿入するステップの後、さらに、
寄生素子を抽出し、該抽出された寄生素子を考慮してタイミング検証を行うステップ、
前記抽出された寄生素子を考慮したタイミングが正しくないと判定されたとき、エラー個所にさらなるスキュー低減回路を挿入するステップ、および、
ＥＣＯ処理を行って、再度寄生素子の抽出および該抽出された寄生素子を考慮したタイミング検証を行うステップを備え、
前記エラー個所にさらなるスキュー低減回路を挿入するステップは、請求項１〜９のいずれか１項に記載の処理を行うことを特徴とする半導体集積回路装置の設計方法。
【請求項１９】
コンピュータによって実行させるプログラムを記録した媒体であって、
フロアプランニング、配置配線およびＣＴＳを行うステップ、
寄生素子を抽出し、該抽出された寄生素子を考慮してタイミング検証を行うステップ、
前記抽出された寄生素子を考慮したタイミングが正しくないと判定されたとき、エラー個所にスキュー低減回路を挿入するステップ、および、
ＥＣＯ処理を行って、再度寄生素子の抽出および該抽出された寄生素子を考慮したタイミング検証を行うステップを備え、
前記エラー個所にスキュー低減回路を挿入するステップは、
遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップ、
前記第１の部分クロックツリーから出力される第１のクロックと前記第２の部分クロックツリーから出力される第２のクロックとの到着時間差を求めるステップ、および、
該第１および第２のクロックの到着時間差が所定のスキュー値を満たしていない場合には、前記第１の遅延時間可変クロックドライバの遅延時間を変更するステップを備える半導体集積回路の設計プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２０】
フロアプランニング、配置配線およびＣＴＳを行った後、スキュー低減回路を挿入するステップを備えるコンピュータによって実行させるプログラムを記録した媒体であって、
前記スキュー低減回路を挿入するステップは、
遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、該第１の部分クロックツリーに近接し、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップ、
前記第１の部分クロックツリーからの第１のクロックが出力される第１の観測点と前記第２の部分クロックツリーからの第２のクロックが出力される第２の観測点とを規定するステップ、
前記第１および第２のクロックの位相を比較する位相比較回路を配置するステップ、
該位相比較回路から前記第１の遅延時間可変クロックドライバまで制御信号をフィードバックするステップを備える半導体集積回路の設計プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロックの分配技術に関し、特に、低電力で動作し、設計が容易であり、且つ、スキューの小さいクロックツリー回路、半導体集積回路装置、半導体集積回路装置の設計方法、および、半導体集積回路の設計プログラムを記録した媒体に関する。
【０００２】
従来、ＡＳＩＣ／ＳｏＣ（Application Specific Integrated Circuit/System on Chip）設計において、クロックスキュー（Clock Skew）の小さいクロック分配は、ＣＴＳ（Clock Tree Synthesis）と呼ばれる方式、すなわち、まず、ＬＳＩ（Large Scale Integration Circuit）のセルを配置し、その後、クロック供給源から全ての供給先（例えば、フリップフロップのクロック入力端子）への伝播遅延時間がなるべく等しくなるように、インバータまたはバッファツリーを合成して配置および優先配線を行うセルライブラリのタイミング情報と配線遅延等の寄生素子の情報に基づく静的な方式が用いられていた。
【０００３】
さらに、従来、クロックの分配精度を高める（各クロック供給先への伝播遅延時間の差を小さくする）ために、遅延のバラエティの高いセルセットを用意するといった高精度化を目的とした多数の提案がなされ、また、実用に供されている。そして、それでも吸収できないパラメータの見積り誤差、製造ばらつき、並びに、動作時の電源電圧や温度による変動に対応するために、動的に遅延を調整する方式もいくつか提案されている。
【０００４】
ところで、上述した静的方式は、近年の半導体集積回路装置の微細化およびその動作電圧の低電圧化によって、クロック供給源から各供給先へのクロックの伝播遅延時間に対する要求を満たすことが極めて難しくなっているのが実情である。すなわち、クロックの伝播遅延時間を無理に目標に近づけると、クロックツリーが深く（階層の段数が多く）なって、回路規模および消費電力が破綻することになってしまう。さらに、従来、知られている動的方式は、消費電力が大きく、また、回路規模が大きく、或いは、通常のＳｏＣの設計フローとの整合性がなくシステム（ハードまたはソフト）の負荷が増大するといった問題がある。
【０００５】
そこで、低電力で動作すると共に、設計が容易であり、且つ、スキューの小さいクロック分配技術の提供が強く要望されている。
【背景技術】
【０００６】
まず、添付図面の図１〜図５を参照して、半導体集積回路装置におけるクロックツリー設計の技術背景を説明する。
【０００７】
図１および図２は半導体集積回路装置のクロックツリー設計の技術背景を説明するための図であり、ＬＳＩのセルを配置した後、クロック供給源から全ての供給先への伝播遅延時間がなるべく等しくなるように、インバータまたはバッファツリーを合成して配置・配線を行うＣＴＳ方式を説明するものである。図１において、参照符号１はクロック供給源（クロックジェネレータ）、２はクロック供給先（フリップフロップ）、３，３１〜３３，３２１〜３２３はクロックドライバ（バッファまたはインバータ）、そして、４ａ，４ｂ；４１ａ〜４３ａ，４１ｂ〜４３ｂ；４２１ａ〜４２３ａ，４２１ｂ〜４２３ｂ，４２２０はクロック配線を示している。
【０００８】
図１に示されるように、半導体集積回路装置におけるクロックツリーは、クロックジェネレータ１からのクロックを、階層化されたクロックドライバ（例えば、クロックドライバ３，３２，３２２）およびクロック配線（例えば、クロック配線４ａ，４ｂ，４２ａ，４２ｂ，４２２ａ，４２２ｂ，４２２０）を介してフリップフロップ１のクロック端子ＣＫに供給する。なお、図１では、１つのフリップフロップのみが描かれているが、実際には、階層化された最終段の複数のクロックドライバ（３２２）から対応する各フリップフロップ（２）に対してそれぞれクロックが供給される。
【０００９】
ここで、クロックを受け取る複数のフリップフロップ（２）において、最も速いタイミングでクロックを受け取るフリップフロップと最も遅いタイミングでクロックを受け取るフリップフロップとの間の時間差（伝播遅延時間の差：クロックスキュー）をＴsとすると、このクロックスキューＴsはできるだけ小さい方が好ましい。すなわち、半導体集積回路装置における各回路（各フリップフロップ）を同じクロックのエッジで制御する必要がある。
【００１０】
ところで、半導体集積回路装置において、クロックを受け取るフリップフロップは、チップ上の様々な位置に散らばっており、クロックジェネレータ１（または、半導体集積回路装置のクロック入力端子）から各フリップフロップ（２）までのクロック配線（４ａ，４ｂ，４２ａ，４２ｂ，４２２ａ，４２２ｂ，４２２０）の長さはそれぞれ異なっており、また、これらのクロック配線の寄生容量も一定ではない。そのため、クロックを受け取る全てのフリップフロップ（２）を同じタイミングで制御するためには、クロックドライバ（３，３２，３２２）の階層化を多く（クロックツリーを深く）して、これら各クロックドライバで短いクロック配線（小さい寄生容量）を駆動するようになっている。
【００１１】
さらに、近年、半導体集積回路装置は、その性能を一層向上させるべく、より高速のクロックにより駆動されるようになって来ている。このように、クロック周波数が高速化すると、クロックスキューに対する要求は、より一層厳しいものとなる。
【００１２】
具体的に、例えば、図２に示されるように、クロック周波数が１００ＭＨｚで１０％のタイミングマージン（すなわち、１ｎｓ）が許される場合、同じ１０％のタイミングマージンでも、例えば、クロック周波数が２００ＭＨｚになると、半分（０．５ｎｓ）の時間しか許されないことになる。換言すると、同じ１ｎｓのクロックスキューが存在する場合、クロック周波数が２００ＭＨｚになると、２０％のタイミングマージンがないと誤動作の恐れが生じることになる。
【００１３】
そのため、クロック周波数が高くなると、より多くのクロックドライバを使用することになり、結果として、消費電力も増加してしまう。
【００１４】
図３は半導体集積回路装置におけるクロックツリーの具体例を概念的に示す図であり、図４はＣＴＳ方式におけるクロックスキューと消費電力との関係を示す図である。ここで、図３（ａ）は、Ｂ（Boundingのパラメータ）＝１ｐｓ、すなわち、クロックスキューが１ｐｓの場合を示し、このとき、ＣＯＳＴ＝１２２９７５５、すなわち、回路規模（配線長）が１２２９７５５になる。また、図３（ｂ）は、Ｂ＝１０ｐｓの場合（クロックスキューを１０ｐｓとした場合）を示し、このとき、ＣＯＳＴ＝１１１２５１２（回路規模：１１１２５１２）になる。さらに、図３（ｃ）は、Ｂ＝∞の場合（クロックスキューを考えない場合）を示し、このとき、ＣＯＳＴ＝７８０１００（回路規模：７８０１００）になる。なお、クロックツリーの各ブランチの先端には、例えば、それぞれフリップフロップ（図示しない）が設けられている。
【００１５】
図３（ａ）〜図３（ｃ）から明らかなように、クロックスキューを小さくすればするほど、クロックツリーは複雑になって回路規模も大きくなることが分かる。
【００１６】
すなわち、クロックスキューと消費電力との関係を示す図４からも明らかなように、ＣＴＳ方式を適用したクロックツリーは、クロックスキューの値を減らそうとすると、ツリーの段数が増えるため消費電力も増大する。さらに、厳しいスキューを充足するためには、クロックツリーの規模が爆発的に増大して非現実的なものになったり、また、レイアウトとして物理的な実現可能性が難しくなってしまう。さらに、仮に、そのような深い（クロックドライバの段数の多い）クロックツリーができたとしても、実際に製造した半導体集積回路装置におけるタイミング精度には疑問がある。なお、経験的には、浅いクロックツリーが正確でよいという考え方もある。
【００１７】
図５は低電圧で動作する半導体集積回路装置のクロックツリー設計を説明するための図であり、図５（ａ）は、低電圧で動作する半導体集積回路装置の一例における制御系、データパス系およびクロックブロック系に対するコア電力消費の百分率を示し、また、図５（ｂ）は、低電圧で動作する半導体集積回路装置の各具体例における電力消費の百分率を示している。
【００１８】
図５（ａ）に示されるように、低電圧で動作する半導体集積回路装置の一例におけるコア電力消費は、例えば、制御系において約５３％が消費され、その内、約３８％が論理回路により消費され、また、約１５％がクロックドライバにより消費され、さらに、例えば、データパス系において約４３％が消費され、その内、約２８％が論理回路により消費され、また、約１５％がクロックドライバにより消費されることが分かる。なお、クロックブロック系においては、約４％がクロックドライバにより消費されている。合計すると、クロック系全体で全電力の約３４％が消費されているといえる。
【００１９】
このように、半導体集積回路装置において、クロックドライバにより消費される電力は、クロックブロック系だけではなく、制御系やデータパス系においてもおおきなウェイトを占めていることが分かる。
【００２０】
図５（ｂ）は、半導体集積回路装置の各具体例における電力消費の百分率を示すもので、埋め込みコントローラＬＳＩ（最内周の同心円部分）、ハイエンドＣＰＵ（埋め込みコントローラＬＳＩの外側の同心円部分）、ＭＰＥＧ２デコーダ（ハイエンドＣＰＵの外側の同心円部分）、および、ＡＴＭスイッチＬＳＩ（ＭＰＥＧ２デコーダの外側の同心円部分：最外周の同心円部分）の具体的な４種類のＬＳＩ（チップ）における電力消費の百分率を示すものである。
【００２１】
すなわち、例えば、埋め込みコントローラＬＳＩにおいては、約４５％がクロック系による電力消費であり、約４０％がデータパス系の電力消費であり、１０％がメモリによる電力消費であり、そして、５％がＩ／Ｏ（Input/Output：パッド）による電力消費であり、また、例えば、ハイエンドＣＰＵにおいては、約２８％がクロック系による電力消費であり、約２８％がデータパス系の電力消費であり、３８％がメモリによる電力消費であり、そして、６％がＩ／Ｏによる電力消費であり、さらに、例えば、ＭＰＥＧ２デコーダにおいては、約２３％がクロック系による電力消費であり、約３４％がデータパス系の電力消費であり、２１％がメモリによる電力消費であり、そして、２２％がＩ／Ｏ（Input/Output：パッド）による電力消費である。なお、ＡＴＭスイッチにおいては、約２０％がクロック系による電力消費であり、約１０％がデータパス系の電力消費であり、３％がメモリによる電力消費であり、そして、６７％がＩ／Ｏによる電力消費である。
【００２２】
このように、様々な半導体集積回路装置においても、クロック系の消費電力が大きなウェイトを持つことが分かる。
【００２３】
特に、低電圧でのタイミング設計においては、動作電圧の低下によりスリューレート（Slew Rate）が大きくなり、それに伴ってクロックスキューも増大する。このため、標準電圧で設計されたクロックツリーを用いると動作マージンの劣化が起こる。また、クロックスキューを標準電圧と同じに保とうとすると、クロックツリーの強化が必要となり、消費電力および面積の増加を招く。このことは、より強力なＣＴＳ技術に加え、性能と消費電力のトレードオフ問題を取り扱うことを意味し、設計問題が複雑化するため好ましいことではない。
【００２４】
ここで、低電圧におけるクロックスキューの低減は、標準電圧時よりも一層直接に最大動作周波数に寄与する。さらに、クロックツリーを強化せずにスキューを削減できれば、高速動作、低電圧動作および低電力動作の並立に有効である。
【００２５】
なお、従来、低消費電力で低スキューのクロックツリー回路が提案されている（例えば、特許文献１参照）。
【００２６】
さらに、従来、基準クロックとの位相比較を行う位相比較器、ループフィルタおよびＶＣＯ（Voltage Controlled Oscillator：電圧制御発信器）を使用して高速のクロックを分配する技術も提案されている（例えば、非特許文献１参照）。また、従来、ディジタル方式のＤＬＬ（Delay Locked Loop）回路を使用して低スキューのクロックを分配するものも提案されている（例えば、非特許文献２参照）。
【００２７】
【特許文献１】特開２０００−０３５８３１
【非特許文献１】バディム・ガトニックおよびアナンサ・ピー・チャンドラカサン、「分配ＰＬＬを使用したアクティブ・ギガヘルツ・クロックネトワーク」、ソリッド・ステート・サーキットのＩＥＥＥジャーナル、第３５巻、第１１号、第１５５３〜第１５６０頁、２０００年１１月（Vadim Gutnik & Anantha P. Chandrakasan, "Active GHz Clock Network Using Distributed PLLs", IEEE Journal of Solid-State Circuits, Vol. 35, No. 11, p.1553-1560, November 2000）
【非特許文献２】チャールズ・イー・ダイク他、「ディジタル、ダイナミック・クロック・デスキュー設計」、技術論文のＶＬＳＩ回路ダイジェストの２００３年シンポジウム、第２１〜第２４頁、２００３年６月（Charles E. Dike et al., "A Design for Digital, Dynamic Clock Deskew", 2003 Symposium on VLSI Circuits Digest of Technical Paoers, p.21-24, June 2003）
【発明の開示】
【発明が解決しようとする課題】
【００２８】
上述したように、従来、クロック分配技術としては、高精度な見積もりによるトップダウン方式、すなわち、静的手法として、通常、ＣＴＳ（Clock Tree Synthesis）方式が利用されている。このＣＴＳ方式は、インバータまたはバッファ（クロックドライバ）から構成されるクロックツリーを、経路遅延がなるべく等しくなるように、チップ上に配置・配線するＰ＆Ｒ（Place-and-Route）技術を適用し、さらに、クロックツリーの経路遅延を正確に見積もるタイミング評価を行い、そして、一旦作成されたクロックツリーの経路遅延をより均一にするために、遅延値（遅延時間）の異なるセルへの差し替えや負荷の微調整等を行う後処理によりさらに精度を向上するものである。
【００２９】
しかしながら、このＣＴＳ方式には、以下のような問題点がある。
すなわち、ＣＴＳ方式は、遅延の見積もり値に基づくものであるが、実デバイスにおいては、見積もり誤差、製造ばらつきおよび温度変化等の影響を受けることになる。さらに、より小さなスキューを達成するためには、クロックツリーの段数、総クロックドライバ数および総配線長が増加することになりその結果、消費電力も増加する。
【００３０】
また、クロックツリーが深く（階層の段数が多く）なると、見積もり誤差、製造ばらつき、および、温度変化等の影響が増大するといった悪循環に入ってしまうことがある。さらに、ＣＴＳ方式は、配置結果や配置領域の形状などに間接的影響を受けるため、スキューに対する要求が厳しいときは、収束しなかったり、或いは、レイアウトより寄生素子を抽出しその寄生素子を考慮したシミュレーションを行うバックアノテーション後にタイミングエラーとなって実装設計が収束しないこともにもなる。
【００３１】
しかしながら、前述したように、通常電圧（例えば、電源電圧Ｖcc＝１．２Ｖ、トランジスタの閾値電圧Ｖｔｈ＝４００ｍＶ）のとき、静的手法で妥当なスキュー（１０ｐｓのオーダ）が達成できるとしても、低電圧（例えば、電源電圧Ｖcc＝０．５Ｖ、トランジスタの閾値電圧Ｖｔｈ＝２００ｍＶ）では２倍以上のスキューとなってしまう。また、ばらつきの影響や温度変化を考慮すると、前記のような静的な手法では十分とはいえず、ＬＳＩ内部での実際のスキューの観測値に基づくより一層正確な方法が求められている。そこで、クロックツリーの中に、遅延可変なクロックドライバまたは選択可能なクロックドライバの組を設け、例えば、電源投入時等のタイミングで経路遅延をある種の参照時間（外部クロック等）に合わせて変更するといった遅延の半動的調整が考えられる。
【００３２】
しかしながら、上記の手法では、チップ外部にリファレンス（外部クロック）が必要であったり、或いは、内部にリファレンスを設ける場合には、ＬＳＩが複雑化し、さらに、ボードやシステムの負荷が増大することにもなる。
【００３３】
さらに、他の手法として、経路遅延差のあるクロックを短絡して遅延差が無くなるように出力の短絡を行うこと（例えば、ＦＰＧＡ（File Programmable Gate Array）におけるグローバルライン）も考えられるが、この場合、周波数の高い部分を短絡すると動作電流が増加することになり、また、位相差のある信号を出力短絡すると、貫通電流が増加して消費電力が大きくなるといった問題がある。
【００３４】
さらに、従来、回路の動作中に、経路遅延差を測定し、遅延可変なクロックドライバにフィードバックする遅延の動的調整も提案されている（例えば、前記特許文献１参照）。
【００３５】
図６は従来のクロックツリー回路の一例を示すブロック回路図であり、特許文献１の図４に相当するものである。図６において、参照符号２１〜２４はクロックドライバ（クロック素子）、２５はクロック供給元クロックドライバ、３１〜３３は位相比較回路、そして、４１〜４３はチャージポンプ回路を示している。
【００３６】
図６に示す従来のクロックツリー回路は、クロックドライバ２１〜２４に閾値電圧可変のウェル構造を有するトランジスタを適用し、位相比較回路３１〜３３により、クロックドライバ２４を基準とした他のクロックドライバ２１〜２３との間の位相を比較（位相差（スキュー）を検出）すると共に、差電圧を出力する。さらに、チャージポンプ回路４１〜４３により、上記差電圧を入力としてクロックドライバ２１〜２３にフィードバック（クロックドライバ２１〜２３のｎ−チャネル型ＭＯＳトランジスタのｐウェル端子にウェル電位として印加）し、クロックドライバ２１〜２３のスイッチング速度を制御してクロックスキューを低減させるようになっている。
【００３７】
このように、特許文献１に記載されたクロックツリー回路は、クロックツリーの先端部で位相差を測定し、ツリーに帰還するアーキテクチャであり、位相比較回路の出力を用いてチャージポンプ回路を駆動し、基板に逆バイアスを印加することによりクロックドライバを低速化してクロックスキューを低減させるものである。
【００３８】
しかしながら、特許文献１には、チャージポンプ回路および位相比較回路の実現方法や配置位置等に関する記載がないだけでなく、チャージポンプ回路を別に設けたり、基板の独立化等により回路のオーバヘッドの増加（回路面積の増加）および消費電力の増大が生じ、さらに、高周波信号（リファレンスや位相差信号）の大域的分配による消費電力の増加も生じる。また、図６の回路では、リファレンスクロックがスキューレスで分配でき、且つ、リファレンスクロックが一番遅いことが前提となっているが、それらは現実的ではない。
【００３９】
また、前述した非特許文献１および非特許文献２に示すクロック分配技術では、回路規模が大きくなると共に、消費電力が増大するといった課題がある。さらに、例えば、非特許文献２では、遅延線（ＤＬＬ回路）を制御する信号はディジタル信号でありノイズの影響を受け易いといった課題もある。
【００４０】
本発明は、上述した従来のクロック分配技術が有する課題に鑑み、低電圧動作で高速および高信頼性を有し、クロック系の消費電力を低減することのできるクロックツリー回路および半導体集積回路装置の提供を目的とする。さらに、本発明は、増大するクロック系電力の割合を抑えると共に、回路オーバヘッドが少なく、また、テクノロジ依存性が小さく、さらに、一般的なＳｏＣ設計フローと親和性高く、合理的な設計フローを構築することができ、そして、新たに問題を導入しない（ゼロスキュー配線を要する信号を増やしたりしない）クロックツリー回路、半導体集積回路装置、半導体集積回路装置の設計方法、および、半導体集積回路の設計プログラムを記録した媒体の提供を目的とする。
【課題を解決するための手段】
【００４１】
本発明の第１の形態によれば、フロアプランニング、配置配線およびＣＴＳを行うステップ、寄生素子を抽出し、該抽出された寄生素子を考慮してタイミング検証を行うステップ、前記抽出された寄生素子を考慮したタイミングが正しくないと判定されたとき、エラー個所にスキュー低減回路を挿入するステップ、および、ＥＣＯ処理を行って、再度寄生素子の抽出および該抽出された寄生素子を考慮したタイミング検証を行うステップを備え、前記エラー個所にスキュー低減回路を挿入するステップは、遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップ、前記第１の部分クロックツリーから出力される第１のクロックと前記第２の部分クロックツリーから出力される第２のクロックとの到着時間差を求めるステップ、および、該第１および第２のクロックの到着時間差が所定のスキュー値を満たしていない場合には、前記第１の遅延時間可変クロックドライバの遅延時間を変更するステップを備えることを特徴とする半導体集積回路装置の設計方法が提供される。
【００４２】
本発明の第２の形態によれば、フロアプランニング、配置配線およびＣＴＳを行った後、スキュー低減回路を挿入するステップを備える半導体集積回路装置の設計方法であって、前記スキュー低減回路を挿入するステップは、遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、該第１の部分クロックツリーに近接し、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップ、前記第１の部分クロックツリーからの第１のクロックが出力される第１の観測点と前記第２の部分クロックツリーからの第２のクロックが出力される第２の観測点とを規定するステップ、前記第１および第２のクロックの位相を比較する位相比較回路を配置するステップ、該位相比較回路から前記第１の遅延時間可変クロックドライバまで制御信号をフィードバックするステップを備えることを特徴とする半導体集積回路装置の設計方法が提供される。
【００４３】
本発明の第３の形態によれば、コンピュータによって実行させるプログラムを記録した媒体であって、フロアプランニング、配置配線およびＣＴＳを行うステップ、寄生素子を抽出し、該抽出された寄生素子を考慮してタイミング検証を行うステップ、前記抽出された寄生素子を考慮したタイミングが正しくないと判定されたとき、エラー個所にスキュー低減回路を挿入するステップ、および、ＥＣＯ処理を行って、再度寄生素子の抽出および該抽出された寄生素子を考慮したタイミング検証を行うステップを備え、前記エラー個所にスキュー低減回路を挿入するステップは、遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップ、前記第１の部分クロックツリーから出力される第１のクロックと前記第２の部分クロックツリーから出力される第２のクロックとの到着時間差を求めるステップ、および、該第１および第２のクロックの到着時間差が所定のスキュー値を満たしていない場合には、前記第１の遅延時間可変クロックドライバの遅延時間を変更するステップを備える半導体集積回路の設計プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体が提供される。
【００４４】
本発明の第４の形態によれば、フロアプランニング、配置配線およびＣＴＳを行った後、スキュー低減回路を挿入するステップを備えるコンピュータによって実行させるプログラムを記録した媒体であって、前記スキュー低減回路を挿入するステップは、遅延時間が可変な第１の遅延時間可変クロックドライバを介してクロックを分配する第１の部分クロックツリーと、該第１の部分クロックツリーに近接し、第２のクロックドライバを介してクロックを分配する第２の部分クロックツリーとを抽出するステップ、前記第１の部分クロックツリーからの第１のクロックが出力される第１の観測点と前記第２の部分クロックツリーからの第２のクロックが出力される第２の観測点とを規定するステップ、前記第１および第２のクロックの位相を比較する位相比較回路を配置するステップ、該位相比較回路から前記第１の遅延時間可変クロックドライバまで制御信号をフィードバックするステップを備える半導体集積回路の設計プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体が提供される。
【００４５】
このように、本発明は、例えば、物理的に近接（例えば、隣接）した２つの部分クロックツリーのスキューを小さくする方式をＣＴＳ方式と併用するものである。本発明では、クロック周波数で動作する回路を物理的に極めて小さい領域に囲い込み、遠距離の信号伝送を必要とする位相差信号を直流化（ＤＣ化）することで、消費電力の削減と実装設計の容易性を実現する。若干の消費電力増加と面積増加を伴うが、ＣＴＳ方式に対する要求が緩和されるためクロックツリー側の消費電力と面積コストが低減され、全体としては低電力化、低コスト化になる。ＰＶＴ（Process/Voltage/Temperature）変動に対して耐性を与えることができるので、低電圧で高速動作するＬＳＩのマージン確保を有効に行うことが可能になる。
【発明の効果】
【００４６】
本発明によれば、低消費電力および低コストで実装設計の容易なクロックツリー回路（半導体集積回路装置）を提供することができ、また、ＰＶＴ変動に対して耐性を与えることができるので、低電圧で高速動作するＬＳＩのマージン確保を有効に行うことが可能になる。
【発明を実施するための最良の形態】
【００４７】
以下、本発明に係るクロックツリー回路、半導体集積回路装置、半導体集積回路装置の設計方法、および、半導体集積回路の設計プログラムを記録した媒体の実施例を、添付図面を参照して詳述する。
【実施例】
【００４８】
図７は本発明に係るクロックツリー回路の一実施例を概略的に示すブロック回路図である。図７において、参照符号１００はクロックツリー回路、１０３ａ，１０３ｂは遅延時が可変なクロックドライバ、１０２ａ，１０２ｂはフリップフロップ、１０４ａ，１０４ｂはフィードバック配線、１０５は位相比較回路、１０６はローパスフィルタ（ＬＰＦ）、そして、１１０ａ，１１０ｂは部分クロックツリーを示している。
【００４９】
本発明に係るクロックツリー回路１００は、クロックを半導体集積回路装置内の各回路（フリップフロップ）に分配するものであり、基本的には、一般的なＣＴＳ方式を適用して構成されるが、図７に示されるように、遅延時間が可変な第１の遅延時間可変クロックドライバ１０３ａを有する第１の部分クロックツリー１１０ａおよび遅延時間が可変な第２の遅延時間可変クロックドライバ１０３ｂを有する第２の部分クロックツリー１１０ｂと、第１の部分クロックツリー１１０ａの先端（クロックドライバ１３０ａの出力）からの第１のクロックＣＬＫ１と第２の部分クロックツリー１１０ｂの先端（クロックドライバ１３０ｂの出力）からの第２のクロックＣＬＫ２との位相を比較する位相比較回路１０５とを備える。そして、位相比較回路１０５の出力により第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂの遅延時間が制御されて、第１および第２の部分クロックツリー１１０ａ，１１０ｂ間のスキューを低減し、クロックツリー回路１００全体としてのスキューを所定の値（規格値）内に収めるようになっている。ここで、第１および第２の部分クロックツリー１１０ａ，１１０ｂの先端からは、対称な帰還経路を持つようになっており、相互に相手をリファレンスクロックとみなすことができるような構成となっている。
【００５０】
なお、各部分クロックツリー１１０ａ，１１０ｂにおいても、通常のクロックツリー（クロックツリーの一部）と同様に、複数のクロックドライバを介して複数のフリップフロップに対してクロックを分配するようになっている。第１および第２の部分クロックツリー１１０ａ，１１０ｂは、それぞれクロックツリー回路１００の単なるクロックツリーの一部である。また、位相比較回路１０５に入力する第１および第２の部分クロックツリー１１０ａ，１１０ｂの先端からのクロックは、例えば、クロックツリー全体（クロックツリー回路）の最終段のクロックドライバの出力クロックであるが、これに限定されるものではない。
【００５１】
すなわち、第１および第２の部分クロックツリー１１０ａ，１１０ｂの先端からのクロックは、例えば、クロックツリー回路の最終段を除く任意の段のクロックドライバの出力クロックであってもよい。この場合、第１および第２の部分クロックツリー１１０ａ，１１０ｂの先端からのクロックは、さらに下流の第１および第２の末端クロックドライバツリーを介して分配されることになる。なお、各部分クロックツリー１１０ａ，１１０ｂからの出力クロックを受け取る各末端クロックドライバツリーは、例えば、ＣＴＳ方式が適用されるクロックドライバ回路全体と一緒に形成することができる。これらの末端クロックドライバツリーは、例えば、クロックドライバの段数が少なく、また、カバーする領域も狭いために大きなスキューは生じないものと考えられる。
【００５２】
位相比較回路１０５と第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂとの間に設けられるＬＰＦ１０６は、位相比較回路１０５からの信号（遅延時間制御信号）をフィードバック配線１０４ａ，１０４ｂ（配線距離が長くなると考えられる）を介して第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂに供給する場合、その長いフィードバック配線１０４ａ，１０４ｂ上の遅延時間制御信号を直流化して低電力化するためのものである。なお、このＬＰＦ１０６は、例えば、回路構成によってはフィードバック配線１０４ａ，１０４ｂ自体が有する容量負荷（配線容量、寄生容量等）により実現され得るものであり、その場合には、改めてＬＰＦ１０６を設ける必要はない。
【００５３】
また、上記説明では、２つの部分クロックツリー（第１および第２の部分クロックツリー１１０ａ，１１０ｂ）における各根元部分のクロックドライバを、それぞれ遅延時間の制御が可能なドライバ（第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂ）として構成したが、予め一方の部分クロックツリー（例えば、第１の部分クロックツリー１１０ａ）の出力クロック（ＣＬＫ１）が他方の部分クロックツリー（例えば、第２の部分クロックツリー１１０ｂ）の出力クロック（ＣＬＫ２）よりも必ず速いタイミングの信号であることが分かっていれば、その速いタイミングのクロック（ＣＬＫ１）を出力する方の部分クロックツリー（例えば、第１の部分クロックツリー１１０ａ）の根元部分のクロックドライバ１０３ａだけを遅延時間可変クロックドライバとし、他方の部分クロックツリー（例えば、第２の部分クロックツリー１１０ｂ）の根元部分のクロックドライバ（１０３ｂ）を通常のクロックドライバ（遅延時間を制御する機能を持たないクロックドライバ）として構成することもできる。さらに、第１の部分クロックツリー１１０ａの先端のクロックドライバおよび第２の部分クロックツリー１１０ｂの先端のクロックドライバは必ずしも同じ階層のクロックドライバである必要はなく、また、第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂも同じ階層である必要はない。
【００５４】
次に、本発明のクロックツリー回路に適用される位相比較回路およびＬＰＦ後のフィードバック回路について説明する。
【００５５】
図８は図７のクロックツリー回路に適用されるクロックドライバの一例を示す回路図である。
【００５６】
図８に示されるように、クロックドライバ（遅延時間可変クロックドライバ）１０３ａ（１０３ｂ）は、位相比較回路１０５からの立ち上がりエッジ用帰還信号によって制御されるものであり、ｐＭＯＳトランジスタ３１ａ〜３３ａおよびｎＭＯＳトランジスタ３４ａ〜３６ａを備え、ｐＭＯＳトランジスタ３２ａ，３３ａおよびｎＭＯＳトランジスタ３５ａ，３６ａは電源線間に直列に接続され、また、ｐＭＯＳトランジスタ３１ａおよびｎＭＯＳトランジスタ３４ａも直列に接続されている。
【００５７】
位相比較回路１０５（ＬＰＦ１０６）からの遅延時間制御信号（立ち上がりエッジ用帰還信号：ブレーキ信号ＢＲＫ０）は、ｐＭＯＳトランジスタ３１ａおよび３２ａのゲートに供給され、また、クロックは、ｐＭＯＳトランジスタ３３ａおよびｎＭＯＳトランジスタ３５ａのゲートに供給されている。ここで、ｎＭＯＳトランジスタ３４ａのゲートおよびソースは共通接続され、ｎＭＯＳトランジスタ３１ａとｐＭＯＳトランジスタ３４ａとの接続ノードはｎＭＯＳトランジスタ３６ａのゲートに接続されている。そして、ｐＭＯＳトランジスタ３３ａのドレインおよびｎＭＯＳトランジスタ３５ａのドレインの接続ノードから出力（遅延時間が制御されたクロック）が取り出されるようになっている。なお、図８に示す遅延時間可変クロックドライバは、単なる一例であり、様々な回路構成を適用することができるのはいうまでもない。
【００５８】
図９は本発明に係るクロックツリー回路に適用される位相比較回路の一例を示すブロック回路図であり、図１０は図９の位相比較回路におけるブレーキ信号発生回路、および、遅延時間可変クロックドライバにおける電圧リミッタ兼終端部の一例を示す回路図である。
【００５９】
また、図１１および図１２は本発明に係るクロックツリー回路によるスキュー低減の様子を示す図である。図１１は、６００ｐｓの初期スキューの立ち上がりエッジを調整する様子を示すものであり、立ち上がりの６００ｐｓのスキューは、図１２に示す制御信号により１２０ｐｓのスキューＴｓ１になった様子を示している。なお、１２０ｐｓのスキューＴｓ１は、さらなる位相比較回路１０５による複数回の位相比較結果による制御信号で零になる。また、この例では、立ち下がりの６００ｐｓのスキューＴｓ２はそのままとなっているが、図１３を参照して後述する相補的な信号を帰還することにより、立ち下がりのスキュー低減も行うことができる。
【００６０】
まず、位相比較回路１０５は、記憶素子を駆動し、異なるクロックツリー（部分クロックツリー）に属し、物理的に近くにある２つのクロックを入力とし、それら２つのクロックの位相差に見合った長さのパルスを発生する。ここで、位相比較回路１０５は、単純なセルベースのディジタル回路で構成可能であり、低電力および低コストで実現することができる。なお、位相比較回路は、ミキサ回路により構成することもできる。なお、位相比較回路も様々な回路構成のものを適用することができるのはもちろんである。
【００６１】
図９に示されるように、位相比較回路１０５は、クロックレシーバ１５１，１５２、ダイナミック型Ｄフリップフロップ１５３，１５４、アンプ１５５、ブレーキ信号発生回路１５６、インバータ１５０１〜１５０４、および、ＮＡＮＤゲート１５０５〜１５０８を備えている。ここで、参照符号１０５０は到着順判定回路を示し、また、１０５１は位相差判定回路を示す。なお、図９の位相比較回路１０５は、例えば、６８個のトランジスタで構成することができる。
【００６２】
第１のクロックレシーバ１５１は、第１の部分クロックツリー１１０ａからのクロックＣＬＫＩＮ０（図７のＣＬＫ１に相当）を受け取って相補のクロック信号ＣＬＫ０Ｐ，ＣＬＫ０Ｍ（図１１参照）を出力し、また、第２のクロックレシーバ１５２は、第２の部分クロックツリー１１０ｂからのクロックＣＬＫＩＮ１（図７のＣＬＫ２に相当）を受け取って相補の信号ＣＬＫ１Ｐ，ＣＬＫ１１Ｍを出力する。これら相補のクロックのうち、各負論理の信号ＣＬＫ０Ｍ，ＣＬＫ１Ｍはインバータ１５０１，１５０２を介してフリップフロップ１５３，１５４に供給されると共に、他方の各正論理のクロック信号ＣＬＫ１Ｐ，ＣＬＫ０Ｐが一端に入力されたＮＡＮＤゲート１５０６，１５０５に供給される。フリップフロップ１５３，１５４の出力はアンプ１５５に供給され、該アンプ１５５の出力（制御信号）ＣＬＫ０Ｖ，ＣＬＫ１Ｖ（図１２参照）は、ＮＡＮＤゲート１５０５，１５０６の出力がインバータ１５０３，１５０４を介して一端に入力されたＮＡＮＤゲート１５０７，１５０８の他端に供給される。なお、アンプ１５５は、クロスカップル（交差接続）されたカレントミラー回路により構成することができるが、他の様々な回路構成を適用することもできる。
【００６３】
そして、ＮＡＮＤゲート１５０７，１５０８の出力（キックパルス：制御信号）ＫＩＣＫ０，ＫＩＣＫ１（図１２参照）はブレーキ信号発生回路１５６に供給され、該ブレーキ信号発生回路１５６から第１および第２の部分クロックツリー１１０ａ，１１０ｂ（第１および第２の部分クロックツリー１１０ａ，１１０ｂにおける第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂ）に対してブレーキ信号（制御信号）ＢＲＫ０，ＢＲＫ１（図１２参照）が出力される。なお、このブレーキ信号ＢＲＫ０，ＢＲＫ１は、直接に、或いは、ＬＰＦ１０６を介して第１および第２の部分クロックツリー１１０ａ，１１０ｂに供給されるのは、前述した通りである。
【００６４】
このように、位相比較回路１０５は、第１および第２の部分クロックツリー１１０ａ，１１０ｂからのクロックＣＬＫＩＮ０，ＣＬＫＩＮ１（ＣＬＫ１，ＣＬＫ２）の到着時間を判定する回路を備え、エッジがあるときだけ動作する低消費電力の回路構成とされ、また、早い方のクロックを遅らせる対称な動作を行うようになっている。なお、後述するように、本発明において、位相比較回路は、ＣＴＳ方式を適用した直後に挿入位置を決定するため、既存のＳｏＣ設計フローと高い整合性を有することになる。
【００６５】
図１０に示されるように、ブレーキ信号発生回路１５６は、ＮＡＮＤゲート１５０７，１５０８の出力であるキックパルスＫＩＣＫ０，ＫＩＣＫ１をゲートで受け取るｐチャネル型ＭＯＳトランジスタ（ｐＭＯＳトランジスタ）６１２，６１１、および、該のｐＭＯＳトランジスタ６１２；６１１と直列に接続されたｎチャネル型ＭＯＳトランジスタ（ｎＭＯＳトランジスタ）６１５，６１６；６１３，６１４を備える。ここで、ブレーキ信号発生回路１５６は、ブレーキ信号発生回路１５６（位相比較回路１０５）から第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂまでの配線負荷容量と共にローパスフィルタを構成している。また、ｎＭＯＳトランジスタ６１３〜６１６のゲートにはイネーブル信号ＥＮＢが供給されている。
【００６６】
このように、ブレーキ信号発生回路１５６（ＬＰＦ１０６）は、パルス入力（キックパルスＫＩＣＫ０，ＫＩＣＫ１）を直流レベルへ変換することで低消費電力化を図るようになっている。また、上記パルス入力で充電系を駆動し、放電系はトランジスタのリーク電流により行うようになっており、低速動作が可能である。さらに、位相比較回路１０５（ブレーキ信号発生回路１５６）からクロックツリー（第１および第２の部分クロックツリー１１０ａ，１１０ｂの各遅延時間可変クロックドライバ１０３ａ，１０３ｂ）のルートへ向けた配線の容量がローパスフィルタを構成するようになっており、足りない場合はＭＯＳキャパシタで補うことができる。
【００６７】
電圧リミッタ兼終端部１０３１は、第１および第２の部分クロックツリー１１０ａ，１１０ｂの各遅延時間可変クロックドライバ１０３ａ，１０３ｂ内に配置されるもので、ブレーキ信号ＢＲＫ０；ＢＲＫ１と電源線（Ｖ［０］）との間にそれぞれ直列に設けられたｎＭＯＳトランジスタ６２４，６２５，６２６；６２１，６２２，６２３を備えている。ここで、電圧リミッタ兼終端部１０３１は、フィードバック信号（ブレーキ信号ＢＲＫ０，ＢＲＫ１）を一定レベル以下に保つためのものであり、この電圧リミッタ兼終端部１０３１をクロックドライバ１０３ａ，１０３ｂに設けることにより、ノイズ耐性を向上することができる。なお、電圧リミッタ兼終端部１０３１は、本発明に必須なものではない。
【００６８】
図１３は本発明に係るクロックツリー回路の他の実施例を概略的に示すブロック回路図である。
【００６９】
上述した図７に示すクロックツリー回路は、例えば、クロックの立ち上がりエッジのみを修正するものであり、そのため、デューティを維持するようにはなっていない。図１３に示すクロックツリー回路の実施例において、位相比較回路１０５は、クロックＣＬＫ１，ＣＬＫ２の立ち上がりおよび立ち下がりの両方のエッジを測定する機能を有し、フィードバック線１０４ａ，１０４ｂで相補的な信号を帰還する（立ち下がり用帰還信号用のフィードバック線を追加する）ことで、クロックの立ち上がりおよび立ち下がりの両方のエッジを修正してデューティを維持するようになっている。
【００７０】
図１４は図１３のクロックツリー回路に適用されるクロックドライバの一例を示す回路図であり、クロックの立ち上がりエッジおよび立ちさがりエッジの両方の遅延を制御可能な遅延時間可変クロックドライバの一例を示すものである。
【００７１】
図１４に示されるように、遅延時間可変クロックドライバ１０３ａ（１０３ｂ）は、電源線間に直列に接続されたｐＭＯＳトランジスタ３７ａ，３８ａおよびｎＭＯＳトランジスタ３９ａ，４０ａを備えている。位相比較回路１０５（ＬＰＦ１０６）からの立ち上がりエッジ用帰還信号ＣＮＴＬＰ（遅延時間制御信号：ブレーキ信号ＢＲＫ０）は、ｐＭＯＳトランジスタ３７ａのゲートに供給され、ｐＭＯＳトランジスタ３８ａおよびｎＭＯＳトランジスタ３９ａの共通接続されたゲートに入力されたクロックＣＬＫＩＮの立ち上がりエッジを制御する。また、立ち下がりエッジ用帰還信号ＣＮＴＬＮは、ｎＭＯＳトランジスタ４０ａのゲートに供給され、入力クロックＣＬＫＩＮの立ち下がりエッジを制御する。そして、立ち上がりエッジ用帰還信号ＣＮＴＬＰおよび立ち下がりエッジ用帰還信号ＣＮＴＬＮにより立ち上がりおよび立ち下がりエッジが制御された入力クロックＣＬＫＩＮは、ｐＭＯＳトランジスタ３８ａのドレインとｎＭＯＳトランジスタ３９ａのドレインとの接続ノードから出力（遅延時間が制御されたクロック）ＣＬＫＯＵＴが取り出されるようになっている。
【００７２】
図１３に示すクロックツリー回路および図１４に示す遅延時間可変クロックドライバは、特に、高速なクロックの場合、クロックの立ち上がりおよび立ち下がりの両方のエッジを使用する場合、および、デューティ依存の回路等において有効なものである。
【００７３】
図１５は図１３のクロックドライバの変形例を示す回路図であり、図１５（ａ）に示すクロックドライバ（遅延時間可変クロックドライバ）は、図１４に示すクロックドライバからｎＭＯＳトランジスタ４０ａを除いたものに相当し、また、図１５（ｂ）に示すクロックドライバは、図１４に示すクロックドライバからｐＭＯＳトランジスタ３７ａを除いたものに相当する。
【００７４】
すなわち、図１５（ａ）に示すクロックドライバは、制御信号（立ち上がりエッジ用帰還信号）ＣＮＴＬＰにより入力クロックＣＬＫＩＮの立ち上がりエッジを制御してクロックＣＬＫＯＵＴの遅延時間を制御するようになっており、また、図１５（ｂ）に示すクロックドライバは、制御信号（立ち下がりエッジ用帰還信号）ＣＮＴＬＮにより入力クロックＣＬＫＩＮの立ち下がりエッジを制御してクロックＣＬＫＯＵＴの遅延時間を制御するようになっている。
【００７５】
ここで、本発明を低電圧（テクノロジーノードの標準電圧（例えば、１３０ｎｍプロセスの場合、１．０〜１．２Ｖ）よりも十分に小さい値（例えば、１３０ｎｍプロセスでＶdd＝０．７Ｖ以下））で動作する回路に適用する場合、制御信号（帰還信号）として、ｐＭＯＳトランジスタ３７ａのゲートに対して０〜Ｖth（Ｖ）程度、ｎＭＯＳトランジスタ４０ａのゲートに対してＶdd−Ｖth〜Ｖdd（Ｖ）程度の振幅の小さい信号を用い、遅延時間可変クロックドライバとして上述した図１４、図１５（ａ）および図１５（ｂ）に示す回路を適用することができ、面積および電力オーバヘッドを小さくすることができる。
【００７６】
なお、遅延時間可変クロックドライバとしては、上述したものに限定されず、様々な構成のものを適用することができる。また、図１４、図１５（ａ）および図１５（ｂ）に示すクロックドライバは、インバータとして構成されているが、例えば、入力クロックＣＬＫＩＮの前段にインバータを１段設けて入力クロックと出力クロックの論理を一致させたバッファとして構成することができるのはいうまでもない。
【００７７】
図１６は本発明に係るクロックツリー回路のさらなる実施例を概略的に示すブロック回路図である。
【００７８】
図１６と図７との比較から明らかなように、本実施例のクロックツリー回路では、位相比較回路１０５からＬＰＦ１０６およびフィードバック配線１０４ａを介して遅延時間可変クロックドライバにフィードバックする制御信号を、１つの遅延時間可変クロックドライバ１０３ａだけでなく複数の遅延時間可変クロックドライバ１０３ａ，１０３２ａおよび１０３２２ａに供給して遅延時間の制御を行うようになっている。このとき、遅延時間の制御を行う最上流の遅延時間可変クロックドライバ１０３ａよりも下流の遅延時間可変クロックドライバ１０３２ａおよび１０３２２ａに対応する遅延時間可変クロックドライバ１０３１ａおよび１０３２１ａ等に対しても制御信号を供給して遅延時間の制御を行うように構成する。
【００７９】
このように、遅延時間の制御を行う遅延時間可変クロックドライバは１段に限定されず、制御信号を複数段の遅延時間可変クロックドライバに供給して遅延時間の制御を行うように構成することもできる。これにより、遅延調節量を大きくすることができ、或いは、一段当たりの遅延調節量を小さくすることで遅延時間の制御特性を向上させることができる。なお、本実施例では、制御信号（帰還信号）は直流レベルで帰還されるため、たとえ制御信号により制御される遅延時間可変クロックドライバの数が増えて寄生容量が増加しても問題とはならない。
【００８０】
図１７は本発明に係る半導体集積回路装置の設計方法を概念的に説明するための図である。
【００８１】
本発明に係る半導体集積回路装置の設計方法の前提として、クロックツリーは単純な分岐構造を有して再収斂しない（再び合流しない）ようになっており、さらに、分岐後の部分クロックツリーは、領域をほぼ排他的で、且つ、凸領域的（異なる部分クロックツリーが複雑に入り込んだりすることなく）にカバーする。
【００８２】
図１７に示されるように、本発明の半導体集積回路装置の設計方法は、まず、目的とする半導体集積回路装置（チップ或いはモジュール）のクロックツリー１００を、ＣＴＳ方式を適用して構成し（Ｓ１）、その後、部分クロックツリーのペア（第１の部分クロックツリー１１０ａおよび第２の部分クロックツリー１１０ｂ）を選択し（Ｓ２）、さらに、位相差観測回路（位相比較回路）１０５およびローパスフィルタ（ＬＰＦ）１０６を配置する（Ｓ３）。なお、前述したように、例えば、フィードバック配線１０４（１０４ａ，１０４ｂ）自体が有する容量負荷によりローパスフィルタの機能が代用可能な場合には、ＬＰＦ１０６を設けなくてもよい。
【００８３】
すなわち、本発明の半導体集積回路装置の設計方法では、第１の部分クロックツリー１１０ａにおける先端領域１２０ａ内の１つのクロックドライバ（図７におけるクロックドライバ１３０ａに相当）と、第２の部分クロックツリー１１０ｂにおける先端領域１２０ｂ内の１つのクロックドライバ（図７におけるクロックドライバ１３０ｂに相当）を選び、位相比較回路１０５によりこれら２つのクロックドライバからの出力クロックを位相比較する。ここで、位相比較回路１０５は、上記選択された２つのドライバの中央部付近に配置するのが好ましい。なお、第１の部分クロックツリー１１０ａにおける先端領域１２０ａおよび第２の部分クロックツリー１１０ｂにおける先端領域１２０ｂから選択される各クロックドライバは、それぞれ任意のものを選択することができるが、各先端領域１２０ａおよび先端領域１２０ｂにおいて代表的な（平均的な）クロックの到着時間を有し、且つ、第１の部分クロックツリー１１０ａと第２の部分クロックツリー１１０ｂとの隣接部に近い（物理的に近い距離にある）２つのクロックドライバを選択するのが好ましい。この選択される各クロックドライバとしては、例えば、最終段のクロックドライバ、或いは、最終段よりも所定段数だけ上流のクロックドライバであるが、必ずしも同じ段数のものである必要はない。
【００８４】
さらに、位相比較回路１０５（ＬＰＦ１０６）から第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂまでフィードバック配線１０４（１０４ａ，１０４ｂ）を敷設する（Ｓ４）。そして、位相比較回路１０５の出力により第１および第２の遅延時間可変クロックドライバ１０３ａ，１０３ｂにおける遅延時間を制御する（Ｓ５）。なお、２つの遅延時間可変クロックドライバ１０３ａ，１０３ｂは、予め第１および第２の部分クロックツリー１１０ａ，１１０ｂの出力クロックにおけるタイミングの前後関係が分かっていれば、速いタイミングのクロックを出力する一方の部分クロックツリーに対してのみ遅延時間可変クロックドライバを設け、他方の部分クロックツリーに対しては通常のクロックドライバを設けるように構成することもできる。
【００８５】
同様に、上述した第１の部分クロックツリー１１０ａとして、上記の第１および第２の部分クロックツリー１１０ａ，１１０ｂを含む部分クロックツリー１１０ａ’を設定し、この新たな第１の部分クロックツリー１１０ａ’に対する新たな第２の部分クロックツリーとして部分クロックツリー１１０ｂ’を設定して、上述した第１および第２の部分クロックツリー１１０ａ，１１０ｂに対する処理と同様の処理を再帰的に適用することができる（Ｓ６）。すなわち、クロックツリー１００の分岐構造に対応して第１および第２の部分クロックツリー１１０ａ，１１０ｂ；１１０ａ’，１１０ｂ’；…を抽出し、上述した処理を再帰的に適用することで、半導体集積回路装置全体に対して本発明を適用することができる。
【００８６】
本発明に係る半導体集積回路装置の設計方法は、まず、ＣＴＳ方式を軽く（本来の要求より緩いタイミング制約で）実施し、さらに、クロックツリーを部分クロックツリーにクラスタ化（抽出）する。このとき、各クラスタ内のクロックスキュー見積り値が一定以下になるようにする。また、隣接（近接）する部分クロックツリーの代表的到着時間が近いものを組み合わせてスキュー低減回路を入れる。この組み合わせた回路（ツリー）は再び部分クロックツリーとなる。
【００８７】
なお、本発明に係る半導体集積回路装置の設計方法において、例えば、ゲーティドクロックでは、イネーブル回路以降を部分クロックツリーと捉えるとよい。もちろん、イネーブルより上流へも適用することは可能である。また、データ転送のないサブツリー間には、スキュー低減回路を入れなくてもよい。さらに、ＣＴＳ方式を適用した後、スキュー低減回路の挿入位置を決定し、クロックツリーの先端部から位相比較器までをクロックと同様の優先配線とする。この配線は、なるべく等長、等遅延になるように引かなければならないが物理的に近接する配線のため問題少ない。また、フィードバック線のレイアウトは、普通の信号と同じ扱いでよく、また、必要に応じて遠回りさせてもよい。そして、クロックツリーの広がりに応じて再帰的、階層的に適用する。
【００８８】
図１８は本発明に係るクロックツリー回路のさらに他の実施例を概略的に示すブロック回路図であり、ゲーティドクロック方式の回路に対して適用したものである。
【００８９】
図１８に示されるように、ＮＡＮＤゲート１０７Ａ〜１０７Ｚにはそれぞれイネーブル信号ＥＮＡ〜ＥＮＺが入力され、出力されるクロックの活性化の制御を行うようになっている。ここで、ＮＡＮＤゲート１０７Ａの出力クロックが供給される下流側（フリップフロップＦＦ側）を第１の部分クロックツリー１１０ａとし、ＮＡＮＤゲート１０７Ｚの出力クロックが供給される下流側を第２の部分クロックツリー１１０ｂとする。すなわち、イネーブル回路（ＮＡＮＤゲート１０７Ａ，１０７Ｚ）よりも下流側を部分クロックツリーと捉え、位相比較回路１０５、ＬＰＦ１０６ａ，１０６ｂおよび遅延時間可変クロックドライバ１０３ａ，１０３ｂ等によるスキュー低減回路を設ける。
【００９０】
なお、イネーブル回路（ＮＡＮＤゲート１０７Ａ，１０７Ｚ）よりも上流側（ルート側）に対しては、別途部分クロックツリー１１０ａ’および１１０ｂ’を抽出して、第１および第２の部分クロックツリー１１０ａ，１１０ｂに対する処理と同様の処理を行ってスキュー低減回路を設ける。このとき、ＣＴＳは全てのクロックツリー（例えば、部分クロックツリー１１０ａ，１１０ｂおよび１１０ａ’，１１０ｂ’）に対して一括して行ってもよいが、ゲーティドされる点を境界にして分割して行う、すなわち、例えば、部分クロックツリー１１０ａ，１１０ｂと部分クロックツリー１１０ａ’，１１０ｂ’に対してＣＴＳを分割して行うようにすることもできる。
【００９１】
以下、本発明に係る半導体集積回路装置の設計方法を従来技術と比較しつつ、詳述する。
【００９２】
図１９は一般的な半導体集積回路装置の設計フローの一例を示す図であり、通常のＳｏＣの論理・回路設計フローを示すものである。
【００９３】
図１９に示されるように、論理・回路設計は、まず、ステップＳ１０において、アーキテクチァ設計、ＲＴ（Register Transfer）設計・検証および論理合成・検証を行い、さらに、ステップＳ１１に進んで、フロアプランニング、配置配線およびＣＴＳを行う。ここで、クロックスキューに対する制約は、ステップＳ１１における配置配線後のＣＴＳ（Clock Tree Synthesis）工程で行われる。
【００９４】
さらに、ステップＳ１２に進んで、寄生素子を抽出し、ステップＳ１３に進んで、抽出された寄生素子を考慮したタイミング検証を行う。すなわち、レイアウトより寄生素子を抽出しその寄生素子を含めたシミュレーション（バックアノテーション：レイアウトから抽出した寄生容量および抵抗成分等を考慮したタイミング検証）を行う。そして、ステップＳ１４において、タイミングが正しいかどうかの判定を行う。
【００９５】
ステップＳ１４において、タイミングが正しい（ＹＥＳ）と判定されると、ステップＳ１５に進んでマスクの作成を行う（設計工程が終了する）。ここで、ステップＳ１４におけるタイミングが正しいとの判定は、精度の高いタイミング検証の結果、目的とする半導体集積回路装置（例えば、ＳｏＣ）が設計者の意図通り動作することが確認された場合であり、そのときには、設計工程が終了し、次のマスクの作成工程に進むことになる。
【００９６】
一方、ステップＳ１４において、タイミングが正しくない（ＮＯ）と判定されると、ステップＳ１６に進んで、実装設計からのデータを取り込んで、必要に応じてステップＳ１０およびステップＳ１１の処理を行った後、ステップＳ１２の寄生素子の抽出処理およびステップＳ１３のタイミング検証処理を再度実行し、上述したステップＳ１４において、タイミングが正しいと判定されるまでこれらの処理を繰り返す。
【００９７】
すなわち、タイミングエラーやマージン不足等があった場合には、フローの上流に戻るがどこに戻るか（ステップＳ１０或いはＳ１１）は、ケースバイケースである。ここで、クロックスキューはセットアップおよびホールドの両マージンを支配し、最上流のアーキテクチァから見直す場合からレイアウト結果の小修正で済む場合まで様々である。このように、ＳｏＣの設計フローは、例えば、ＳｏＣの微細化等に伴って上記のループを収束させることが困難になっているのが現状である。
【００９８】
なお、上述したステップＳ１４におけるタイミングが正しくないとの判定は、スキューがどうなっているかは別として、目的とする回路が誤動作したことを意味する。ここで、レイアウトの後、タイミングが原因でバックアノテーションの結果、誤動作が生じる原因は、(1) 最長パスに当初の見積もり以上の遅延が付いてセットアップマージンを満たさなくなった場合、(2) 最短パスに当初の見積もり程の遅延が付かずホールドマージンを満たさなくなった場合、(3) 出発側クロックが見積もり値よりも遅くなってセットアップマージンを満たさなくなった場合、(4) 到着側クロックが見積もり値よりも早くなってセットアップマージンを満たさなくなった場合、(5) 出発側クロックが見積もり値よりも早くなってホールドマージンを満たさなくなった場合、および、(6) 到着側クロックが見積もり値よりも遅くなってホールドマージンを満たさなくなった場合等のいずれか１つが、或いは、それらの複数が同時に起こったことにある。なお、以下に詳述する本発明に係る半導体集積回路装置の設計方法は、特に、上記(3)〜(6)に起因してタイミングが正しくないと判定された場合に有効なものである。
【００９９】
図２０は本発明に係る半導体集積回路装置の設計フローの一例を示す図であり、通常のＳｏＣの実装設計フローを示すものである。
【０１００】
図２０に示されるように、本実施例において、実装設計は、まず、ステップＳ２０において、フロアプランニング、配置配線およびＣＴＳを行い、ステップＳ２１に進んで、寄生素子を抽出し、さらに、ステップＳ２２に進んで、抽出された寄生素子を考慮したタイミング検証（バックアノテーション）を行う。そして、ステップＳ２３において、タイミングが正しいかどうかの判定を行う。
【０１０１】
ステップＳ２３において、タイミングが正しい（ＹＥＳ）と判定されると、ステップＳ２４に進んでマスクの作成を行う（設計工程が終了する）。一方、ステップＳ２３において、タイミングが正しくない（ＮＯ）と判定されると、ステップＳ２６に進んで、エラー個所にスキュー低減回路を挿入（本発明の半導体集積回路装置の設計方法を適用）し、さらに、ステップＳ２５に進んで、ＥＣＯ（Engineering Change Order）処理を行う。そして、ステップＳ２５でＥＣＯ処理を行った後、ステップＳ２１の寄生素子の抽出処理およびステップＳ２２のタイミング検証処理を再度実行し、上述したステップＳ２３において、タイミングが正しいと判定されるまでこれらの処理を繰り返す。
【０１０２】
このように、本実施例では、図１９に示すステップＳ１４（図２０のステップＳ２３）において、タイミングが正しくないと判定されると、ステップＳ２６におけるエラー個所に対するスキュー低減回路の挿入処理を行うようになっている。なお、回路を挿入するための配置配線の変更は、技術的に十分確立されたＥＣＯ処理（ステップＳ２７）を適用することができる。この図２０に示すような設計フローをサポートする機能は、自動レイアウトツールの機能の一部とすることが可能である。ここで、上記設計フローで得られる回路は、見積もり値でのクロックツリー設計であり、動作時のスキューを最小化する効果は十分ではないこともあるが、物理設計ループを収束させることは可能である。
【０１０３】
図２１は図２０の設計フローにおけるスキュー低減回路の挿入処理（図２０のステップＳ２６）の一例を示す図であり、図２２は図２１のスキュー低減回路の挿入処理を説明するための図である。なお、図２２は、各クロックＴａおよびＴｂを受け取る２つのフリップフロップ（ＦＦ）間で組み合わせ回路を介したエラーパスが存在している様子を示している。
【０１０４】
図２１に示すスキュー低減回路の挿入処理は、図２０の実施例において、ステップＳ２３でタイミングが所定のスキュー値を満たしていない（ＮＯ）と判定され、ステップＳ２６で行うエラー個所にスキュー低減回路を挿入する処理を示している。
【０１０５】
図２１に示されるように、スキュー低減回路の挿入処理（ステップＳ２６）は、まず、ステップＳ２６１において、パスの終端と始端のクロックスキューをＴｓとし、セットアップ（ホールド）エラーをＴｅとしてステップＳ２６２に進む。ステップＳ２６２では、スキューＴｂ−Ｔａ（＝Ｔｓ）がエラーＴｅよりも大きいか否かを判定する。ここで、クロックＴａおよびＴｂは、クロックドライバ（バッファまたはインバータ）１３０ａおよび１３０ｂの出力であり、例えば、図７における第１および第２の部分クロックツリー１１０ａおよび１１０ｂの出力クロックＣＬＫ１およびＣＬＫ２に相当する。
【０１０６】
ステップＳ２６２において、スキューＴｂ−ＴａがエラーＴｅ以下である（ＮＯ）と判定されると、ステップＳ２６０に進んで、通常の対策（例えば、図１９におけるステップＳ１１，Ｓ１６およびＳ１０等の処理）を行う。一方、ステップＳ２６２において、スキューＴｂ−ＴａがエラーＴｅよりも大きい（ＹＥＳ）と判定されると、ステップＳ２６３に進んで、図２２に示されるように、クロックツリーを遡り、Ｔｂ’−Ｔａ’＞Ｔｅを満たすなるべく上流のクロックドライバの組１０３ａ，１０３ｂを規定（検出）する。さらに、ステップＳ２６４に進んで、クロックスキューの観測点の近傍（クロックドライバ１３０ａ，１３０ｂの近く）に２つのクロックＴａ，Ｔｂの位相差を検出（位相を比較）する位相差検出回路（位相比較回路１０５）を配置すると共に、ステップＳ２６３で規定されたクロックドライバの組１０３ａ，１０３ｂを遅延時間可変クロックドライバ（可変遅延バッファ）で置き換えて、ステップＳ２５に進む。なお、ステップＳ２６４では、位相差検出回路により検出された位相差に応じて遅延時間可変クロックドライバ１０３ａ，１０３ｂにおける遅延時間の制御を行う配線も行う。
【０１０７】
これにより、クロックスキューが原因で些少なセットアップ不足やホールド不足が少数の場合には、上述した本発明の半導体集積回路装置の設計方法（スキュー低減回路）を適用して局所的にスキューを小さくして設計を行うことができる。また、本発明を適用することにより、データパス系のレイアウトが原因となるセットアップ不足に対しても、より高精度にスキューを抑え込むことでセットアップ不足を回避することが可能な場合もある。
【０１０８】
図２３は本発明に係る半導体集積回路装置の設計フローの他の例を示す図である。
図２３において、各ステップＳ３０，Ｓ３１およびＳ３３〜Ｓ３７は、それぞれ図１９におけるステップＳ１０，Ｓ１１およびＳ１２〜Ｓ１６に相当し、本実施例では、図１９のステップＳ１１（図２３のステップＳ３１）の後に、スキュー低減回路を挿入するステップＳ３２をさらに設けるようにしたものである。
【０１０９】
すなわち、図２３に示されるように、本実施例では、ステップＳ３０でアーキテクチァ設計、ＲＴ設計・検証および論理合成・検証を行い、さらに、ステップＳ３１でフロアプランニング、配置配線およびＣＴＳを行った後、ステップＳ３２に進んで、スキュー低減回路の挿入処理を行う。さらに、ステップＳ３３に進んで寄生素子を抽出し、そして、ステップＳ３４で抽出された寄生素子を考慮したタイミング検証を行う。すなわち、図１９と同様の処理を行い、さらに、ステップＳ３５において、タイミングが正しいかどうかの判定を行う。なお、本実施例におけるステップＳ３５〜Ｓ３７の処理は、図１９を参照して説明したステップＳ１４〜Ｓ１６と同様であり、その説明は省略する。
【０１１０】
図２４は本発明に係る半導体集積回路装置の設計フローのさらに他の例を示す図であり、通常のＳｏＣの実装設計フローを示すものである。
【０１１１】
図２４に示されるように、実装設計は、まず、ステップＳ４０において、フロアプランニング、配置配線およびＣＴＳを行い、さらに、ステップＳ４１に進んで、スキュー低減回路を挿入（本発明の半導体集積回路装置の設計方法を適用）する。その後、ステップＳ４２において、寄生素子を抽出し、さらに、ステップＳ４３に進んで、抽出された寄生素子を考慮したタイミング検証（バックアノテーション）を行う。そして、ステップＳ４４において、タイミングが正しいかどうかの判定を行う。
【０１１２】
ステップＳ４４において、タイミングが正しい（ＹＥＳ）と判定されると、ステップＳ４５に進んでマスクの作成を行う（設計工程が終了する）。一方、ステップＳ４４において、タイミングが正しくない（ＮＯ）と判定されると、ステップＳ４７に進んで（経路Ｐ２）、エラー個所にスキュー低減回路を挿入（本発明の半導体集積回路装置の設計方法を適用）し、さらに、ステップＳ４６に進んで、ＥＣＯ処理を行う。そして、ステップＳ４６でＥＣＯ処理を行った後、ステップＳ４２の寄生素子の抽出処理およびステップＳ４３のタイミング検証処理を再度実行し、上述したステップＳ４４において、タイミングが正しいと判定されるまでこれらの処理を繰り返す。ここで、ステップＳ４１のスキュー低減回路の挿入処理は、図２３におけるステップＳ３２と同様のものであり、また、ステップＳ４７のエラー個所に対するスキュー低減回路の挿入処理は、図２０におけるステップＳ２６と同様のものであり、これらステップＳ４１およびＳ４７の処理は、前述した図２１および図２２を参照して説明した通りである。
【０１１３】
なお、ステップＳ４４において、タイミングが正しくない（ＮＯ）と判定されたとき、ステップＳ４７に進んで上述した処理を行う代わりに、図１９を参照して説明した一般的な半導体集積回路装置の設計フローと同様に、実装設計からのデータを取り込み（図１９のステップＳ１６）、必要に応じて、アーキテクチァ設計、ＲＴ設計・検証および論理合成・検証（図１９のステップＳ１０）、並びに、フロアプランニング、配置配線およびＣＴＳ（図１９のステップＳ１１）を行ってもよい（経路Ｐ１）。
【０１１４】
すなわち、クロックスキューの「見積もり値」は自動レイアウト後、或いは、自動レイアウト内部で判定することができ、例えば、スキューが目標値よりも大きいときは、スキュー低減回路を挿入（本発明の半導体集積回路装置の設計方法を適用）してタイミングエラーが生じる可能性を小さくすることができる。さらに、全クロックツリーに対してスキュー低減回路を挿入すれば、動的にクロックスキューを最小化することが可能になる。また、上述したように、ステップＳ４４のバックアノテーション後、タイミングが正しくない（ＮＯ）と判定された場合には、ステップＳ４７に進んでエラー個所に対してさらにスキュー低減回路を挿入（経路Ｐ２）することもできるが、経路Ｐ１のように、通常のフロー（図１９に示すようなフロー）で進むこともできる。これは、ステップＳ４４において、タイミングが正しくないと判定された場合（タイミングによる誤動作があった場合）、スキューの増大が原因のときには経路Ｐ２を流れる処理を行い、また、データパスの遅延が原因の場合には経路Ｐ１を流れる処理を行うことになる。
【０１１５】
図２５は通常のＣＴＳ方式を適用したクロックツリーの一例を概略的に示す図であり、また、図２６は本発明を適用したクロックツリーの一例を概略的に示す図である。図２５および図２６において、参照符号４００はクロックが分配される逆Ｌ字形のセルの配置配線領域を示し、また、４１０は通常のＣＴＳ方式を適用してセルの配置配線領域４００までクロックを分配するクロックツリー（クロックツリー回路）の一部を示し、そして、４２０は本発明による２つの部分クロックツリーを抽出してセルの配置配線領域４００までクロックを分配するクロックツリーの一部を示す。ここで、図２５および図２６において、各三角形印はそれぞれクロックドライバ（バッファまたはインバータ）を示している。なお、図２５および図２６において、逆Ｌ字形のセルの配置配線領域４００の左下の矩形領域に、例えば、メモリマクロ等が既に置かれていて配線領域として使用できない場合、セルの配置配線領域４００までのクロックツリーの一部４１０および４２０は、セルの配置配線領域４００内に配線されることになる。
【０１１６】
図２５に示されるように、通常のＣＴＳ方式を適用したクロックツリーは、全ての領域において、それぞれの配線の長さを対称的に延ばしてクロックツリーを構成するため、全体としての配線長（総配線長）も長くなり、また、クロックツリーの階層も深くなり、そして、クロックドライバの数も多くなる。
【０１１７】
これに対して、本発明を適用すると、図２６から明らかなように、総配線長を短くすることができ、また、クロックツリーの階層も浅くすることができ、さらに、クロックドライバの数も少なくしてクロックツリーを構成することが可能になる。図２６において、各クロックドライバの組ＡおよびＢ、ＣおよびＤ、並びに、ＥおよびＦは、それぞれ抽出された２つの部分クロックツリーの遅延時間可変クロックドライバ（図７の１０３ａ，１０３ｂ）に相当するものであり、例えば、それぞれ最終段のクロックドライバの組からの２つのクロックを位相比較回路（図７の１０５）で比較して、各遅延時間可変クロックドライバの遅延時間を制御する。ここで、各遅延時間可変クロックドライバの組Ａ，Ｂ；Ｃ，Ｄ；Ｅ，Ｆは階層化されており、例えば、第１の組の遅延時間可変クロックドライバＡおよびＢに対して本発明を適用（処理Ｘ）し、さらに、第２の組の遅延時間可変クロックドライバＣおよびＤに対して本発明を適用（処理Ｙ）し、そして、第３の組の遅延時間可変クロックドライバＥおよびＦに対して本発明を適用（処理Ｚ）することができる。
【０１１８】
遅延時間可変クロックドライバＡおよびＢは、最終段のクロックドライバ４０１および４０２から出力されるクロックの位相を比較し、その２つのクロックの位相差（２つのクロックの到着時間差）に応じて遅延時間可変クロックドライバＡおよびＢの遅延時間の制御を行うようになっている。なお、前述したように、１組のクロックドライバ４０１，４０２から出力される２つのクロックの内、予め遅れる方のクロックがどちらかが分かっていれば、その反対（進む方）のクロックを伝えるクロックドライバのみを遅延時間可変クロックドライバとし、他方（遅れる方のクロックを伝えるクロックドライバ）は遅延時間可変機能を持たない通常のクロックドライバとして構成することができる。
【０１１９】
また、例えば、遅延時間可変クロックドライバＣおよびＤに関して、最終段のクロックドライバ４０３および４０４から出力されるクロックの位相を比較してもよいが、最終段よりも上流のクロックドライバＢおよび４０５から出力されるクロックの位相を比較し、その位相比較結果により遅延時間可変クロックドライバＣ，Ｄの遅延時間を制御するように構成することもできる。なお、クロックドライバＢおよび４０５の出力クロックを受け取る後段のクロックドライバは、例えば、ＣＴＳ方式によりクロックツリー回路全体を構成するのと同時にクロックツリーの一部として構成されるが、クロックドライバＢおよび４０５までの（上流の）クロックツリーと、クロックドライバＢおよび４０５の出力クロックを受け取るそれ以降の（下流の）クロックツリーとを独立に構成することもできる。ここで、クロックドライバＢおよび４０５の出力クロックを受け取る下流のクロックツリーは、例えば、クロックドライバの段数が少なく、また、カバーする領域も狭いために大きなスキューは生じないものと考えることができる。
【０１２０】
さらに、例えば、遅延時間可変クロックドライバＥおよびＦに関して、最終段のクロックドライバ４０６および４０７から出力されるクロックの位相を比較してもよいが、最終段よりも上流のクロックドライバＤおよび４０８からのクロックの位相を比較し、その位相比較結果により遅延時間可変クロックドライバＥ，Ｆの遅延時間を制御してもよい。なお、遅延時間可変クロックドライバの遅延時間としては、予め所定の遅延時間を持つように構成しておき、一方の遅延時間可変クロックドライバによりその遅延時間可変クロックドライバを介して伝えられるクロックのタイミングを早くも遅くも制御することもできる。
【０１２１】
このように、本発明は、大域的分配は厳密に等遅延なツリーを組む必要がなく、不均等な領域に対してもそのまま適用することができ、リピータ（クロックドライバ）の数や配線長を低減することができる。
【０１２２】
図２７は本発明に係る半導体集積回路の設計プログラムを記録した媒体の例を説明するための図である。図２７において、参照符号３１０は処理装置、３２０はプログラム（データ）提供者、そして、３３０は可搬型記録媒体を示している。
【０１２３】
上述した各実施例に係る半導体集積回路の設計方法は、例えば、図２７に示すような処理装置３１０に対するプログラム（データ）として与えられ、処理装置３１０により実行される。処理装置３１０は、プロセッサを含む演算処理装置本体３１１、および、演算処理装置本体３１１に対してプログラム（データ）を与えたり或いは処理された結果を格納する処理装置側メモリ（例えば、ＲＡＭ（Random Access Memory）やハードディスク）３１２等を備える。処理装置３１０に提供されたプログラム（データ）は、ローディングされて処理装置３１０のメインメモリ上で実行される。
【０１２４】
プログラム（データ）提供者３２０は、プログラム（データ）を格納する手段（回線先メモリ：例えば、ＤＡＳＤ（Direct Access Storage Device））３２１を有し、例えば、インターネット等の回線を介してプログラム（データ）を処理装置３１０に提供したり、或いは、ＣＤ−ＲＯＭやＤＶＤ等の光ディスクまたはフロッピィディスク等の磁気ディスクといった可搬型記録媒体３３０を介して処理装置３１０に提供する。本発明に係る半導体集積回路の設計プログラムを記録した媒体は、上記の処理装置側メモリ３１２、回線先メモリ３２１、および、可搬型記録媒体３３０等の様々なものを含むのはいうまでもない。
【０１２５】
このように、本発明に係るクロックツリー回路、或いは、半導体集積回路装置の設計方法によれば、クロックツリーの先端部（１２０ａ，１２０ｂ：クロックツリーの先端：フリップフロップの入力）のクロックを常時観測するため、見積もり誤差、製造ばらつき、電源電圧変動および温度変化等に起因したスキューに対しても動的にスキュー低減の効果を発揮することができる。また、観測点として物理的に近接した点を選択するため、観測用信号（各部分クロックツリー１１０ａ，１１０ｂの先端から位相比較器１０５までの間）の配線長を無視することができ、さらに、クロックによる高周波数で動作するノードが位相比較回路内およびその近傍に限られるため、交流電流のオーバヘッドを微小にすることができる。
【０１２６】
また、本発明によれば、従来技術のように、リファレンスクロックが事実上存在しないため、低電力であり、且つ、リファレンスクロックをゼロスキューで分配するといった問題を回避することができる。そして、ＣＴＳ方式に対する要求を緩和できるため、クロックツリーの段数と配線長が小さくなり、動作電力の削減も期待できる。なお、位相比較回路（位相差検出回路）および遅延時間可変クロックドライバ（可変遅延回路）は共に小規模回路として構成することができ、ＣＴＳ方式を適用した後のクロックツリーに対して、上記小規模回路を付加するだけでよいため、現状の設計フローに対する整合性が高いといった利点もある。
【０１２７】
さらに、本発明によれば、ローパスフィルタ（ＬＰＦ１０６）の後の信号を帰還する場合、フィードバック信号が直流電位のため、配線長を考慮する必要がなくなり、また、動作電流も少なくすることができる。そして、ＬＰＦの後の信号を帰還する場合、ディジタル信号の帰還に比べるとリピータが不要になるため、低コスト化および低電力化を図ることができる。
【図面の簡単な説明】
【０１２８】
【図１】半導体集積回路装置のクロックツリー設計の技術背景を説明するための図（その１）である。
【図２】半導体集積回路装置のクロックツリー設計の技術背景を説明するための図（その２）である。
【図３】半導体集積回路装置におけるクロックツリーの具体例を概念的に示す図である。
【図４】ＣＴＳ方式におけるクロックスキューと消費電力との関係を示す図である。
【図５】低電圧で動作する半導体集積回路装置のクロックツリー設計を説明するための図である。
【図６】従来のクロックツリー回路の一例を示すブロック回路図である。
【図７】本発明に係るクロックツリー回路の一実施例を概略的に示すブロック回路図である。
【図８】図７のクロックツリー回路に適用されるクロックドライバの一例を示す回路図である。
【図９】本発明に係るクロックツリー回路に適用される位相比較回路の一例を示すブロック回路図である。
【図１０】図９の位相比較回路におけるブレーキ信号発生回路、および、遅延時間可変クロックドライバにおける電圧リミッタ兼終端部の一例を示す回路図である。
【図１１】本発明に係るクロックツリー回路によるスキュー低減の様子を示す図（その１）である。
【図１２】本発明に係るクロックツリー回路によるスキュー低減の様子を示す図（その２）である。
【図１３】本発明に係るクロックツリー回路の他の実施例を概略的に示すブロック回路図である。
【図１４】図１３のクロックツリー回路に適用されるクロックドライバの一例を示す回路図である。
【図１５】図１３のクロックドライバの変形例を示す回路図である。
【図１６】本発明に係るクロックツリー回路のさらなる実施例を概略的に示すブロック回路図である。
【図１７】本発明に係る半導体集積回路装置の設計方法を概念的に説明するための図である。
【図１８】本発明に係るクロックツリー回路のさらに他の実施例を概略的に示すブロック回路図である。
【図１９】一般的な半導体集積回路装置の設計フローの一例を示す図である。
【図２０】本発明に係る半導体集積回路装置の設計フローの一例を示す図である。
【図２１】図２０の設計フローにおけるスキュー低減回路の挿入処理の一例を示す図である。
【図２２】図２１のスキュー低減回路の挿入処理を説明するための図である。
【図２３】本発明に係る半導体集積回路装置の設計フローの他の例を示す図である。
【図２４】本発明に係る半導体集積回路装置の設計フローのさらに他の例を示す図である。
【図２５】通常のＣＴＳ方式を適用したクロックツリーの一例を概略的に示す図である。
【図２６】本発明を適用したクロックツリーの一例を概略的に示す図である。
【図２７】本発明に係る半導体集積回路の設計プログラムを記録した媒体の例を説明するための図である。
【符号の説明】
【０１２９】
１    クロック供給源（クロックジェネレータ）
２    クロック供給先（フリップフロップ）
３，２１〜２４，３１〜３３，３２１〜３２３    クロックドライバ
４ａ，４ｂ；４１ａ〜４３ａ，４１ｂ〜４３ｂ；４２１ａ〜４２３ａ，４２１ｂ〜４２３ｂ，４２２０    クロック配線
４１〜４３    チャージポンプ回路
１００    クロックツリー回路
１０３ａ    第１の遅延時可変クロックドライバ
１０３ｂ    第２の遅延時可変クロックドライバ
１０２ａ，１０２ｂ    フリップフロップ
１０４ａ，１０４ｂ    フィードバック配線
１０５，１０５’    位相比較回路
１０６    ローパスフィルタ（ＬＰＦ）
１０７Ａ〜１９７Ｚ    イネーブル回路（ＮＡＮＤゲート）
１１０ａ    第１の部分クロックツリー
１１０ｂ    第２の部分クロックツリー
１５１，１５２    クロックレシーバ１５１，１５２
１５３，１５４    ダイナミック型Ｄフリップフロップ
１５５    アンプ
１５６    ブレーキ信号発生回路
３１０    処理装置
３２０    プログラム（データ）提供者
３３０    可搬型記録媒体
４００    セルの配置配線領域
４１０，４２０    クロックツリーの一部
１５０１〜１５０４    インバータ
１５０５〜１５０８    ＮＡＮＤゲート
【図１】
2008010003.tif 000003
【図２】
2008010003.tif 000004
【図３】
2008010003.tif 000005
【図４】
2008010003.tif 000006
【図５】
2008010003.tif 000007
【図６】
2008010003.tif 000008
【図７】
2008010003.tif 000009
【図８】
2008010003.tif 000010
【図９】
2008010003.tif 000011
【図１０】
2008010003.tif 000012
【図１１】
2008010003.tif 000013
【図１２】
2008010003.tif 000014
【図１３】
2008010003.tif 000015
【図１４】
2008010003.tif 000016
【図１５】
2008010003.tif 000017
【図１６】
2008010003.tif 000018
【図１７】
2008010003.tif 000019
【図１８】
2008010003.tif 000020
【図１９】
2008010003.tif 000021
【図２０】
2008010003.tif 000022
【図２１】
2008010003.tif 000023
【図２２】
2008010003.tif 000024
【図２３】
2008010003.tif 000025
【図２４】
2008010003.tif 000026
【図２５】
2008010003.tif 000027
【図２６】
2008010003.tif 000028
【図２７】
2008010003.tif 000029