まず、添付図面の図1〜図5を参照して、半導体集積回路装置におけるクロックツリー設計の技術背景を説明する。
図1および図2は半導体集積回路装置のクロックツリー設計の技術背景を説明するための図であり、LSIのセルを配置した後、クロック供給源から全ての供給先への伝播遅延時間がなるべく等しくなるように、インバータまたはバッファツリーを合成して配置・配線を行うCTS方式を説明するものである。図1において、参照符号1はクロック供給源(クロックジェネレータ)、2はクロック供給先(フリップフロップ)、3,31〜33,321〜323はクロックドライバ(バッファまたはインバータ)、そして、4a,4b;41a〜43a,41b〜43b;421a〜423a,421b〜423b,4220はクロック配線を示している。
図1に示されるように、半導体集積回路装置におけるクロックツリーは、クロックジェネレータ1からのクロックを、階層化されたクロックドライバ(例えば、クロックドライバ3,32,322)およびクロック配線(例えば、クロック配線4a,4b,42a,42b,422a,422b,4220)を介してフリップフロップ1のクロック端子CKに供給する。なお、図1では、1つのフリップフロップのみが描かれているが、実際には、階層化された最終段の複数のクロックドライバ(322)から対応する各フリップフロップ(2)に対してそれぞれクロックが供給される。
ここで、クロックを受け取る複数のフリップフロップ(2)において、最も速いタイミングでクロックを受け取るフリップフロップと最も遅いタイミングでクロックを受け取るフリップフロップとの間の時間差(伝播遅延時間の差:クロックスキュー)をTsとすると、このクロックスキューTsはできるだけ小さい方が好ましい。すなわち、半導体集積回路装置における各回路(各フリップフロップ)を同じクロックのエッジで制御する必要がある。
ところで、半導体集積回路装置において、クロックを受け取るフリップフロップは、チップ上の様々な位置に散らばっており、クロックジェネレータ1(または、半導体集積回路装置のクロック入力端子)から各フリップフロップ(2)までのクロック配線(4a,4b,42a,42b,422a,422b,4220)の長さはそれぞれ異なっており、また、これらのクロック配線の寄生容量も一定ではない。そのため、クロックを受け取る全てのフリップフロップ(2)を同じタイミングで制御するためには、クロックドライバ(3,32,322)の階層化を多く(クロックツリーを深く)して、これら各クロックドライバで短いクロック配線(小さい寄生容量)を駆動するようになっている。
さらに、近年、半導体集積回路装置は、その性能を一層向上させるべく、より高速のクロックにより駆動されるようになって来ている。このように、クロック周波数が高速化すると、クロックスキューに対する要求は、より一層厳しいものとなる。
具体的に、例えば、図2に示されるように、クロック周波数が100MHzで10%のタイミングマージン(すなわち、1ns)が許される場合、同じ10%のタイミングマージンでも、例えば、クロック周波数が200MHzになると、半分(0.5ns)の時間しか許されないことになる。換言すると、同じ1nsのクロックスキューが存在する場合、クロック周波数が200MHzになると、20%のタイミングマージンがないと誤動作の恐れが生じることになる。
そのため、クロック周波数が高くなると、より多くのクロックドライバを使用することになり、結果として、消費電力も増加してしまう。
図3は半導体集積回路装置におけるクロックツリーの具体例を概念的に示す図であり、図4はCTS方式におけるクロックスキューと消費電力との関係を示す図である。ここで、図3(a)は、B(Boundingのパラメータ)=1ps、すなわち、クロックスキューが1psの場合を示し、このとき、COST=1229755、すなわち、回路規模(配線長)が1229755になる。また、図3(b)は、B=10psの場合(クロックスキューを10psとした場合)を示し、このとき、COST=1112512(回路規模:1112512)になる。さらに、図3(c)は、B=∞の場合(クロックスキューを考えない場合)を示し、このとき、COST=780100(回路規模:780100)になる。なお、クロックツリーの各ブランチの先端には、例えば、それぞれフリップフロップ(図示しない)が設けられている。
図3(a)〜図3(c)から明らかなように、クロックスキューを小さくすればするほど、クロックツリーは複雑になって回路規模も大きくなることが分かる。
すなわち、クロックスキューと消費電力との関係を示す図4からも明らかなように、CTS方式を適用したクロックツリーは、クロックスキューの値を減らそうとすると、ツリーの段数が増えるため消費電力も増大する。さらに、厳しいスキューを充足するためには、クロックツリーの規模が爆発的に増大して非現実的なものになったり、また、レイアウトとして物理的な実現可能性が難しくなってしまう。さらに、仮に、そのような深い(クロックドライバの段数の多い)クロックツリーができたとしても、実際に製造した半導体集積回路装置におけるタイミング精度には疑問がある。なお、経験的には、浅いクロックツリーが正確でよいという考え方もある。
図5は低電圧で動作する半導体集積回路装置のクロックツリー設計を説明するための図であり、図5(a)は、低電圧で動作する半導体集積回路装置の一例における制御系、データパス系およびクロックブロック系に対するコア電力消費の百分率を示し、また、図5(b)は、低電圧で動作する半導体集積回路装置の各具体例における電力消費の百分率を示している。
図5(a)に示されるように、低電圧で動作する半導体集積回路装置の一例におけるコア電力消費は、例えば、制御系において約53%が消費され、その内、約38%が論理回路により消費され、また、約15%がクロックドライバにより消費され、さらに、例えば、データパス系において約43%が消費され、その内、約28%が論理回路により消費され、また、約15%がクロックドライバにより消費されることが分かる。なお、クロックブロック系においては、約4%がクロックドライバにより消費されている。合計すると、クロック系全体で全電力の約34%が消費されているといえる。
このように、半導体集積回路装置において、クロックドライバにより消費される電力は、クロックブロック系だけではなく、制御系やデータパス系においてもおおきなウェイトを占めていることが分かる。
図5(b)は、半導体集積回路装置の各具体例における電力消費の百分率を示すもので、埋め込みコントローラLSI(最内周の同心円部分)、ハイエンドCPU(埋め込みコントローラLSIの外側の同心円部分)、MPEG2デコーダ(ハイエンドCPUの外側の同心円部分)、および、ATMスイッチLSI(MPEG2デコーダの外側の同心円部分:最外周の同心円部分)の具体的な4種類のLSI(チップ)における電力消費の百分率を示すものである。
すなわち、例えば、埋め込みコントローラLSIにおいては、約45%がクロック系による電力消費であり、約40%がデータパス系の電力消費であり、10%がメモリによる電力消費であり、そして、5%がI/O(Input/Output:パッド)による電力消費であり、また、例えば、ハイエンドCPUにおいては、約28%がクロック系による電力消費であり、約28%がデータパス系の電力消費であり、38%がメモリによる電力消費であり、そして、6%がI/Oによる電力消費であり、さらに、例えば、MPEG2デコーダにおいては、約23%がクロック系による電力消費であり、約34%がデータパス系の電力消費であり、21%がメモリによる電力消費であり、そして、22%がI/O(Input/Output:パッド)による電力消費である。なお、ATMスイッチにおいては、約20%がクロック系による電力消費であり、約10%がデータパス系の電力消費であり、3%がメモリによる電力消費であり、そして、67%がI/Oによる電力消費である。
このように、様々な半導体集積回路装置においても、クロック系の消費電力が大きなウェイトを持つことが分かる。
特に、低電圧でのタイミング設計においては、動作電圧の低下によりスリューレート(Slew Rate)が大きくなり、それに伴ってクロックスキューも増大する。このため、標準電圧で設計されたクロックツリーを用いると動作マージンの劣化が起こる。また、クロックスキューを標準電圧と同じに保とうとすると、クロックツリーの強化が必要となり、消費電力および面積の増加を招く。このことは、より強力なCTS技術に加え、性能と消費電力のトレードオフ問題を取り扱うことを意味し、設計問題が複雑化するため好ましいことではない。
ここで、低電圧におけるクロックスキューの低減は、標準電圧時よりも一層直接に最大動作周波数に寄与する。さらに、クロックツリーを強化せずにスキューを削減できれば、高速動作、低電圧動作および低電力動作の並立に有効である。
なお、従来、低消費電力で低スキューのクロックツリー回路が提案されている(例えば、特許文献1参照)。
さらに、従来、基準クロックとの位相比較を行う位相比較器、ループフィルタおよびVCO(Voltage Controlled Oscillator:電圧制御発信器)を使用して高速のクロックを分配する技術も提案されている(例えば、非特許文献1参照)。また、従来、ディジタル方式のDLL(Delay Locked Loop)回路を使用して低スキューのクロックを分配するものも提案されている(例えば、非特許文献2参照)。
特開2000−035831
バディム・ガトニックおよびアナンサ・ピー・チャンドラカサン、「分配PLLを使用したアクティブ・ギガヘルツ・クロックネトワーク」、ソリッド・ステート・サーキットのIEEEジャーナル、第35巻、第11号、第1553〜第1560頁、2000年11月(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)
チャールズ・イー・ダイク他、「ディジタル、ダイナミック・クロック・デスキュー設計」、技術論文のVLSI回路ダイジェストの2003年シンポジウム、第21〜第24頁、2003年6月(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)
図7は本発明に係るクロックツリー回路の一実施例を概略的に示すブロック回路図である。図7において、参照符号100はクロックツリー回路、103a,103bは遅延時が可変なクロックドライバ、102a,102bはフリップフロップ、104a,104bはフィードバック配線、105は位相比較回路、106はローパスフィルタ(LPF)、そして、110a,110bは部分クロックツリーを示している。
本発明に係るクロックツリー回路100は、クロックを半導体集積回路装置内の各回路(フリップフロップ)に分配するものであり、基本的には、一般的なCTS方式を適用して構成されるが、図7に示されるように、遅延時間が可変な第1の遅延時間可変クロックドライバ103aを有する第1の部分クロックツリー110aおよび遅延時間が可変な第2の遅延時間可変クロックドライバ103bを有する第2の部分クロックツリー110bと、第1の部分クロックツリー110aの先端(クロックドライバ130aの出力)からの第1のクロックCLK1と第2の部分クロックツリー110bの先端(クロックドライバ130bの出力)からの第2のクロックCLK2との位相を比較する位相比較回路105とを備える。そして、位相比較回路105の出力により第1および第2の遅延時間可変クロックドライバ103a,103bの遅延時間が制御されて、第1および第2の部分クロックツリー110a,110b間のスキューを低減し、クロックツリー回路100全体としてのスキューを所定の値(規格値)内に収めるようになっている。ここで、第1および第2の部分クロックツリー110a,110bの先端からは、対称な帰還経路を持つようになっており、相互に相手をリファレンスクロックとみなすことができるような構成となっている。
なお、各部分クロックツリー110a,110bにおいても、通常のクロックツリー(クロックツリーの一部)と同様に、複数のクロックドライバを介して複数のフリップフロップに対してクロックを分配するようになっている。第1および第2の部分クロックツリー110a,110bは、それぞれクロックツリー回路100の単なるクロックツリーの一部である。また、位相比較回路105に入力する第1および第2の部分クロックツリー110a,110bの先端からのクロックは、例えば、クロックツリー全体(クロックツリー回路)の最終段のクロックドライバの出力クロックであるが、これに限定されるものではない。
すなわち、第1および第2の部分クロックツリー110a,110bの先端からのクロックは、例えば、クロックツリー回路の最終段を除く任意の段のクロックドライバの出力クロックであってもよい。この場合、第1および第2の部分クロックツリー110a,110bの先端からのクロックは、さらに下流の第1および第2の末端クロックドライバツリーを介して分配されることになる。なお、各部分クロックツリー110a,110bからの出力クロックを受け取る各末端クロックドライバツリーは、例えば、CTS方式が適用されるクロックドライバ回路全体と一緒に形成することができる。これらの末端クロックドライバツリーは、例えば、クロックドライバの段数が少なく、また、カバーする領域も狭いために大きなスキューは生じないものと考えられる。
位相比較回路105と第1および第2の遅延時間可変クロックドライバ103a,103bとの間に設けられるLPF106は、位相比較回路105からの信号(遅延時間制御信号)をフィードバック配線104a,104b(配線距離が長くなると考えられる)を介して第1および第2の遅延時間可変クロックドライバ103a,103bに供給する場合、その長いフィードバック配線104a,104b上の遅延時間制御信号を直流化して低電力化するためのものである。なお、このLPF106は、例えば、回路構成によってはフィードバック配線104a,104b自体が有する容量負荷(配線容量、寄生容量等)により実現され得るものであり、その場合には、改めてLPF106を設ける必要はない。
また、上記説明では、2つの部分クロックツリー(第1および第2の部分クロックツリー110a,110b)における各根元部分のクロックドライバを、それぞれ遅延時間の制御が可能なドライバ(第1および第2の遅延時間可変クロックドライバ103a,103b)として構成したが、予め一方の部分クロックツリー(例えば、第1の部分クロックツリー110a)の出力クロック(CLK1)が他方の部分クロックツリー(例えば、第2の部分クロックツリー110b)の出力クロック(CLK2)よりも必ず速いタイミングの信号であることが分かっていれば、その速いタイミングのクロック(CLK1)を出力する方の部分クロックツリー(例えば、第1の部分クロックツリー110a)の根元部分のクロックドライバ103aだけを遅延時間可変クロックドライバとし、他方の部分クロックツリー(例えば、第2の部分クロックツリー110b)の根元部分のクロックドライバ(103b)を通常のクロックドライバ(遅延時間を制御する機能を持たないクロックドライバ)として構成することもできる。さらに、第1の部分クロックツリー110aの先端のクロックドライバおよび第2の部分クロックツリー110bの先端のクロックドライバは必ずしも同じ階層のクロックドライバである必要はなく、また、第1および第2の遅延時間可変クロックドライバ103a,103bも同じ階層である必要はない。
次に、本発明のクロックツリー回路に適用される位相比較回路およびLPF後のフィードバック回路について説明する。
図8は図7のクロックツリー回路に適用されるクロックドライバの一例を示す回路図である。
図8に示されるように、クロックドライバ(遅延時間可変クロックドライバ)103a(103b)は、位相比較回路105からの立ち上がりエッジ用帰還信号によって制御されるものであり、pMOSトランジスタ31a〜33aおよびnMOSトランジスタ34a〜36aを備え、pMOSトランジスタ32a,33aおよびnMOSトランジスタ35a,36aは電源線間に直列に接続され、また、pMOSトランジスタ31aおよびnMOSトランジスタ34aも直列に接続されている。
位相比較回路105(LPF106)からの遅延時間制御信号(立ち上がりエッジ用帰還信号:ブレーキ信号BRK0)は、pMOSトランジスタ31aおよび32aのゲートに供給され、また、クロックは、pMOSトランジスタ33aおよびnMOSトランジスタ35aのゲートに供給されている。ここで、nMOSトランジスタ34aのゲートおよびソースは共通接続され、nMOSトランジスタ31aとpMOSトランジスタ34aとの接続ノードはnMOSトランジスタ36aのゲートに接続されている。そして、pMOSトランジスタ33aのドレインおよびnMOSトランジスタ35aのドレインの接続ノードから出力(遅延時間が制御されたクロック)が取り出されるようになっている。なお、図8に示す遅延時間可変クロックドライバは、単なる一例であり、様々な回路構成を適用することができるのはいうまでもない。
図9は本発明に係るクロックツリー回路に適用される位相比較回路の一例を示すブロック回路図であり、図10は図9の位相比較回路におけるブレーキ信号発生回路、および、遅延時間可変クロックドライバにおける電圧リミッタ兼終端部の一例を示す回路図である。
また、図11および図12は本発明に係るクロックツリー回路によるスキュー低減の様子を示す図である。図11は、600psの初期スキューの立ち上がりエッジを調整する様子を示すものであり、立ち上がりの600psのスキューは、図12に示す制御信号により120psのスキューTs1になった様子を示している。なお、120psのスキューTs1は、さらなる位相比較回路105による複数回の位相比較結果による制御信号で零になる。また、この例では、立ち下がりの600psのスキューTs2はそのままとなっているが、図13を参照して後述する相補的な信号を帰還することにより、立ち下がりのスキュー低減も行うことができる。
まず、位相比較回路105は、記憶素子を駆動し、異なるクロックツリー(部分クロックツリー)に属し、物理的に近くにある2つのクロックを入力とし、それら2つのクロックの位相差に見合った長さのパルスを発生する。ここで、位相比較回路105は、単純なセルベースのディジタル回路で構成可能であり、低電力および低コストで実現することができる。なお、位相比較回路は、ミキサ回路により構成することもできる。なお、位相比較回路も様々な回路構成のものを適用することができるのはもちろんである。
図9に示されるように、位相比較回路105は、クロックレシーバ151,152、ダイナミック型Dフリップフロップ153,154、アンプ155、ブレーキ信号発生回路156、インバータ1501〜1504、および、NANDゲート1505〜1508を備えている。ここで、参照符号1050は到着順判定回路を示し、また、1051は位相差判定回路を示す。なお、図9の位相比較回路105は、例えば、68個のトランジスタで構成することができる。
第1のクロックレシーバ151は、第1の部分クロックツリー110aからのクロックCLKIN0(図7のCLK1に相当)を受け取って相補のクロック信号CLK0P,CLK0M(図11参照)を出力し、また、第2のクロックレシーバ152は、第2の部分クロックツリー110bからのクロックCLKIN1(図7のCLK2に相当)を受け取って相補の信号CLK1P,CLK11Mを出力する。これら相補のクロックのうち、各負論理の信号CLK0M,CLK1Mはインバータ1501,1502を介してフリップフロップ153,154に供給されると共に、他方の各正論理のクロック信号CLK1P,CLK0Pが一端に入力されたNANDゲート1506,1505に供給される。フリップフロップ153,154の出力はアンプ155に供給され、該アンプ155の出力(制御信号)CLK0V,CLK1V(図12参照)は、NANDゲート1505,1506の出力がインバータ1503,1504を介して一端に入力されたNANDゲート1507,1508の他端に供給される。なお、アンプ155は、クロスカップル(交差接続)されたカレントミラー回路により構成することができるが、他の様々な回路構成を適用することもできる。
そして、NANDゲート1507,1508の出力(キックパルス:制御信号)KICK0,KICK1(図12参照)はブレーキ信号発生回路156に供給され、該ブレーキ信号発生回路156から第1および第2の部分クロックツリー110a,110b(第1および第2の部分クロックツリー110a,110bにおける第1および第2の遅延時間可変クロックドライバ103a,103b)に対してブレーキ信号(制御信号)BRK0,BRK1(図12参照)が出力される。なお、このブレーキ信号BRK0,BRK1は、直接に、或いは、LPF106を介して第1および第2の部分クロックツリー110a,110bに供給されるのは、前述した通りである。
このように、位相比較回路105は、第1および第2の部分クロックツリー110a,110bからのクロックCLKIN0,CLKIN1(CLK1,CLK2)の到着時間を判定する回路を備え、エッジがあるときだけ動作する低消費電力の回路構成とされ、また、早い方のクロックを遅らせる対称な動作を行うようになっている。なお、後述するように、本発明において、位相比較回路は、CTS方式を適用した直後に挿入位置を決定するため、既存のSoC設計フローと高い整合性を有することになる。
図10に示されるように、ブレーキ信号発生回路156は、NANDゲート1507,1508の出力であるキックパルスKICK0,KICK1をゲートで受け取るpチャネル型MOSトランジスタ(pMOSトランジスタ)612,611、および、該のpMOSトランジスタ612;611と直列に接続されたnチャネル型MOSトランジスタ(nMOSトランジスタ)615,616;613,614を備える。ここで、ブレーキ信号発生回路156は、ブレーキ信号発生回路156(位相比較回路105)から第1および第2の遅延時間可変クロックドライバ103a,103bまでの配線負荷容量と共にローパスフィルタを構成している。また、nMOSトランジスタ613〜616のゲートにはイネーブル信号ENBが供給されている。
このように、ブレーキ信号発生回路156(LPF106)は、パルス入力(キックパルスKICK0,KICK1)を直流レベルへ変換することで低消費電力化を図るようになっている。また、上記パルス入力で充電系を駆動し、放電系はトランジスタのリーク電流により行うようになっており、低速動作が可能である。さらに、位相比較回路105(ブレーキ信号発生回路156)からクロックツリー(第1および第2の部分クロックツリー110a,110bの各遅延時間可変クロックドライバ103a,103b)のルートへ向けた配線の容量がローパスフィルタを構成するようになっており、足りない場合はMOSキャパシタで補うことができる。
電圧リミッタ兼終端部1031は、第1および第2の部分クロックツリー110a,110bの各遅延時間可変クロックドライバ103a,103b内に配置されるもので、ブレーキ信号BRK0;BRK1と電源線(V[0])との間にそれぞれ直列に設けられたnMOSトランジスタ624,625,626;621,622,623を備えている。ここで、電圧リミッタ兼終端部1031は、フィードバック信号(ブレーキ信号BRK0,BRK1)を一定レベル以下に保つためのものであり、この電圧リミッタ兼終端部1031をクロックドライバ103a,103bに設けることにより、ノイズ耐性を向上することができる。なお、電圧リミッタ兼終端部1031は、本発明に必須なものではない。
図13は本発明に係るクロックツリー回路の他の実施例を概略的に示すブロック回路図である。
上述した図7に示すクロックツリー回路は、例えば、クロックの立ち上がりエッジのみを修正するものであり、そのため、デューティを維持するようにはなっていない。図13に示すクロックツリー回路の実施例において、位相比較回路105は、クロックCLK1,CLK2の立ち上がりおよび立ち下がりの両方のエッジを測定する機能を有し、フィードバック線104a,104bで相補的な信号を帰還する(立ち下がり用帰還信号用のフィードバック線を追加する)ことで、クロックの立ち上がりおよび立ち下がりの両方のエッジを修正してデューティを維持するようになっている。
図14は図13のクロックツリー回路に適用されるクロックドライバの一例を示す回路図であり、クロックの立ち上がりエッジおよび立ちさがりエッジの両方の遅延を制御可能な遅延時間可変クロックドライバの一例を示すものである。
図14に示されるように、遅延時間可変クロックドライバ103a(103b)は、電源線間に直列に接続されたpMOSトランジスタ37a,38aおよびnMOSトランジスタ39a,40aを備えている。位相比較回路105(LPF106)からの立ち上がりエッジ用帰還信号CNTLP(遅延時間制御信号:ブレーキ信号BRK0)は、pMOSトランジスタ37aのゲートに供給され、pMOSトランジスタ38aおよびnMOSトランジスタ39aの共通接続されたゲートに入力されたクロックCLKINの立ち上がりエッジを制御する。また、立ち下がりエッジ用帰還信号CNTLNは、nMOSトランジスタ40aのゲートに供給され、入力クロックCLKINの立ち下がりエッジを制御する。そして、立ち上がりエッジ用帰還信号CNTLPおよび立ち下がりエッジ用帰還信号CNTLNにより立ち上がりおよび立ち下がりエッジが制御された入力クロックCLKINは、pMOSトランジスタ38aのドレインとnMOSトランジスタ39aのドレインとの接続ノードから出力(遅延時間が制御されたクロック)CLKOUTが取り出されるようになっている。
図13に示すクロックツリー回路および図14に示す遅延時間可変クロックドライバは、特に、高速なクロックの場合、クロックの立ち上がりおよび立ち下がりの両方のエッジを使用する場合、および、デューティ依存の回路等において有効なものである。
図15は図13のクロックドライバの変形例を示す回路図であり、図15(a)に示すクロックドライバ(遅延時間可変クロックドライバ)は、図14に示すクロックドライバからnMOSトランジスタ40aを除いたものに相当し、また、図15(b)に示すクロックドライバは、図14に示すクロックドライバからpMOSトランジスタ37aを除いたものに相当する。
すなわち、図15(a)に示すクロックドライバは、制御信号(立ち上がりエッジ用帰還信号)CNTLPにより入力クロックCLKINの立ち上がりエッジを制御してクロックCLKOUTの遅延時間を制御するようになっており、また、図15(b)に示すクロックドライバは、制御信号(立ち下がりエッジ用帰還信号)CNTLNにより入力クロックCLKINの立ち下がりエッジを制御してクロックCLKOUTの遅延時間を制御するようになっている。
ここで、本発明を低電圧(テクノロジーノードの標準電圧(例えば、130nmプロセスの場合、1.0〜1.2V)よりも十分に小さい値(例えば、130nmプロセスでVdd=0.7V以下))で動作する回路に適用する場合、制御信号(帰還信号)として、pMOSトランジスタ37aのゲートに対して0〜Vth(V)程度、nMOSトランジスタ40aのゲートに対してVdd−Vth〜Vdd(V)程度の振幅の小さい信号を用い、遅延時間可変クロックドライバとして上述した図14、図15(a)および図15(b)に示す回路を適用することができ、面積および電力オーバヘッドを小さくすることができる。
なお、遅延時間可変クロックドライバとしては、上述したものに限定されず、様々な構成のものを適用することができる。また、図14、図15(a)および図15(b)に示すクロックドライバは、インバータとして構成されているが、例えば、入力クロックCLKINの前段にインバータを1段設けて入力クロックと出力クロックの論理を一致させたバッファとして構成することができるのはいうまでもない。
図16は本発明に係るクロックツリー回路のさらなる実施例を概略的に示すブロック回路図である。
図16と図7との比較から明らかなように、本実施例のクロックツリー回路では、位相比較回路105からLPF106およびフィードバック配線104aを介して遅延時間可変クロックドライバにフィードバックする制御信号を、1つの遅延時間可変クロックドライバ103aだけでなく複数の遅延時間可変クロックドライバ103a,1032aおよび10322aに供給して遅延時間の制御を行うようになっている。このとき、遅延時間の制御を行う最上流の遅延時間可変クロックドライバ103aよりも下流の遅延時間可変クロックドライバ1032aおよび10322aに対応する遅延時間可変クロックドライバ1031aおよび10321a等に対しても制御信号を供給して遅延時間の制御を行うように構成する。
このように、遅延時間の制御を行う遅延時間可変クロックドライバは1段に限定されず、制御信号を複数段の遅延時間可変クロックドライバに供給して遅延時間の制御を行うように構成することもできる。これにより、遅延調節量を大きくすることができ、或いは、一段当たりの遅延調節量を小さくすることで遅延時間の制御特性を向上させることができる。なお、本実施例では、制御信号(帰還信号)は直流レベルで帰還されるため、たとえ制御信号により制御される遅延時間可変クロックドライバの数が増えて寄生容量が増加しても問題とはならない。
図17は本発明に係る半導体集積回路装置の設計方法を概念的に説明するための図である。
本発明に係る半導体集積回路装置の設計方法の前提として、クロックツリーは単純な分岐構造を有して再収斂しない(再び合流しない)ようになっており、さらに、分岐後の部分クロックツリーは、領域をほぼ排他的で、且つ、凸領域的(異なる部分クロックツリーが複雑に入り込んだりすることなく)にカバーする。
図17に示されるように、本発明の半導体集積回路装置の設計方法は、まず、目的とする半導体集積回路装置(チップ或いはモジュール)のクロックツリー100を、CTS方式を適用して構成し(S1)、その後、部分クロックツリーのペア(第1の部分クロックツリー110aおよび第2の部分クロックツリー110b)を選択し(S2)、さらに、位相差観測回路(位相比較回路)105およびローパスフィルタ(LPF)106を配置する(S3)。なお、前述したように、例えば、フィードバック配線104(104a,104b)自体が有する容量負荷によりローパスフィルタの機能が代用可能な場合には、LPF106を設けなくてもよい。
すなわち、本発明の半導体集積回路装置の設計方法では、第1の部分クロックツリー110aにおける先端領域120a内の1つのクロックドライバ(図7におけるクロックドライバ130aに相当)と、第2の部分クロックツリー110bにおける先端領域120b内の1つのクロックドライバ(図7におけるクロックドライバ130bに相当)を選び、位相比較回路105によりこれら2つのクロックドライバからの出力クロックを位相比較する。ここで、位相比較回路105は、上記選択された2つのドライバの中央部付近に配置するのが好ましい。なお、第1の部分クロックツリー110aにおける先端領域120aおよび第2の部分クロックツリー110bにおける先端領域120bから選択される各クロックドライバは、それぞれ任意のものを選択することができるが、各先端領域120aおよび先端領域120bにおいて代表的な(平均的な)クロックの到着時間を有し、且つ、第1の部分クロックツリー110aと第2の部分クロックツリー110bとの隣接部に近い(物理的に近い距離にある)2つのクロックドライバを選択するのが好ましい。この選択される各クロックドライバとしては、例えば、最終段のクロックドライバ、或いは、最終段よりも所定段数だけ上流のクロックドライバであるが、必ずしも同じ段数のものである必要はない。
さらに、位相比較回路105(LPF106)から第1および第2の遅延時間可変クロックドライバ103a,103bまでフィードバック配線104(104a,104b)を敷設する(S4)。そして、位相比較回路105の出力により第1および第2の遅延時間可変クロックドライバ103a,103bにおける遅延時間を制御する(S5)。なお、2つの遅延時間可変クロックドライバ103a,103bは、予め第1および第2の部分クロックツリー110a,110bの出力クロックにおけるタイミングの前後関係が分かっていれば、速いタイミングのクロックを出力する一方の部分クロックツリーに対してのみ遅延時間可変クロックドライバを設け、他方の部分クロックツリーに対しては通常のクロックドライバを設けるように構成することもできる。
同様に、上述した第1の部分クロックツリー110aとして、上記の第1および第2の部分クロックツリー110a,110bを含む部分クロックツリー110a’を設定し、この新たな第1の部分クロックツリー110a’に対する新たな第2の部分クロックツリーとして部分クロックツリー110b’を設定して、上述した第1および第2の部分クロックツリー110a,110bに対する処理と同様の処理を再帰的に適用することができる(S6)。すなわち、クロックツリー100の分岐構造に対応して第1および第2の部分クロックツリー110a,110b;110a’,110b’;…を抽出し、上述した処理を再帰的に適用することで、半導体集積回路装置全体に対して本発明を適用することができる。
本発明に係る半導体集積回路装置の設計方法は、まず、CTS方式を軽く(本来の要求より緩いタイミング制約で)実施し、さらに、クロックツリーを部分クロックツリーにクラスタ化(抽出)する。このとき、各クラスタ内のクロックスキュー見積り値が一定以下になるようにする。また、隣接(近接)する部分クロックツリーの代表的到着時間が近いものを組み合わせてスキュー低減回路を入れる。この組み合わせた回路(ツリー)は再び部分クロックツリーとなる。
なお、本発明に係る半導体集積回路装置の設計方法において、例えば、ゲーティドクロックでは、イネーブル回路以降を部分クロックツリーと捉えるとよい。もちろん、イネーブルより上流へも適用することは可能である。また、データ転送のないサブツリー間には、スキュー低減回路を入れなくてもよい。さらに、CTS方式を適用した後、スキュー低減回路の挿入位置を決定し、クロックツリーの先端部から位相比較器までをクロックと同様の優先配線とする。この配線は、なるべく等長、等遅延になるように引かなければならないが物理的に近接する配線のため問題少ない。また、フィードバック線のレイアウトは、普通の信号と同じ扱いでよく、また、必要に応じて遠回りさせてもよい。そして、クロックツリーの広がりに応じて再帰的、階層的に適用する。
図18は本発明に係るクロックツリー回路のさらに他の実施例を概略的に示すブロック回路図であり、ゲーティドクロック方式の回路に対して適用したものである。
図18に示されるように、NANDゲート107A〜107Zにはそれぞれイネーブル信号ENA〜ENZが入力され、出力されるクロックの活性化の制御を行うようになっている。ここで、NANDゲート107Aの出力クロックが供給される下流側(フリップフロップFF側)を第1の部分クロックツリー110aとし、NANDゲート107Zの出力クロックが供給される下流側を第2の部分クロックツリー110bとする。すなわち、イネーブル回路(NANDゲート107A,107Z)よりも下流側を部分クロックツリーと捉え、位相比較回路105、LPF106a,106bおよび遅延時間可変クロックドライバ103a,103b等によるスキュー低減回路を設ける。
なお、イネーブル回路(NANDゲート107A,107Z)よりも上流側(ルート側)に対しては、別途部分クロックツリー110a’および110b’を抽出して、第1および第2の部分クロックツリー110a,110bに対する処理と同様の処理を行ってスキュー低減回路を設ける。このとき、CTSは全てのクロックツリー(例えば、部分クロックツリー110a,110bおよび110a’,110b’)に対して一括して行ってもよいが、ゲーティドされる点を境界にして分割して行う、すなわち、例えば、部分クロックツリー110a,110bと部分クロックツリー110a’,110b’に対してCTSを分割して行うようにすることもできる。
以下、本発明に係る半導体集積回路装置の設計方法を従来技術と比較しつつ、詳述する。
図19は一般的な半導体集積回路装置の設計フローの一例を示す図であり、通常のSoCの論理・回路設計フローを示すものである。
図19に示されるように、論理・回路設計は、まず、ステップS10において、アーキテクチァ設計、RT(Register Transfer)設計・検証および論理合成・検証を行い、さらに、ステップS11に進んで、フロアプランニング、配置配線およびCTSを行う。ここで、クロックスキューに対する制約は、ステップS11における配置配線後のCTS(Clock Tree Synthesis)工程で行われる。
さらに、ステップS12に進んで、寄生素子を抽出し、ステップS13に進んで、抽出された寄生素子を考慮したタイミング検証を行う。すなわち、レイアウトより寄生素子を抽出しその寄生素子を含めたシミュレーション(バックアノテーション:レイアウトから抽出した寄生容量および抵抗成分等を考慮したタイミング検証)を行う。そして、ステップS14において、タイミングが正しいかどうかの判定を行う。
ステップS14において、タイミングが正しい(YES)と判定されると、ステップS15に進んでマスクの作成を行う(設計工程が終了する)。ここで、ステップS14におけるタイミングが正しいとの判定は、精度の高いタイミング検証の結果、目的とする半導体集積回路装置(例えば、SoC)が設計者の意図通り動作することが確認された場合であり、そのときには、設計工程が終了し、次のマスクの作成工程に進むことになる。
一方、ステップS14において、タイミングが正しくない(NO)と判定されると、ステップS16に進んで、実装設計からのデータを取り込んで、必要に応じてステップS10およびステップS11の処理を行った後、ステップS12の寄生素子の抽出処理およびステップS13のタイミング検証処理を再度実行し、上述したステップS14において、タイミングが正しいと判定されるまでこれらの処理を繰り返す。
すなわち、タイミングエラーやマージン不足等があった場合には、フローの上流に戻るがどこに戻るか(ステップS10或いはS11)は、ケースバイケースである。ここで、クロックスキューはセットアップおよびホールドの両マージンを支配し、最上流のアーキテクチァから見直す場合からレイアウト結果の小修正で済む場合まで様々である。このように、SoCの設計フローは、例えば、SoCの微細化等に伴って上記のループを収束させることが困難になっているのが現状である。
なお、上述したステップS14におけるタイミングが正しくないとの判定は、スキューがどうなっているかは別として、目的とする回路が誤動作したことを意味する。ここで、レイアウトの後、タイミングが原因でバックアノテーションの結果、誤動作が生じる原因は、(1) 最長パスに当初の見積もり以上の遅延が付いてセットアップマージンを満たさなくなった場合、(2) 最短パスに当初の見積もり程の遅延が付かずホールドマージンを満たさなくなった場合、(3) 出発側クロックが見積もり値よりも遅くなってセットアップマージンを満たさなくなった場合、(4) 到着側クロックが見積もり値よりも早くなってセットアップマージンを満たさなくなった場合、(5) 出発側クロックが見積もり値よりも早くなってホールドマージンを満たさなくなった場合、および、(6) 到着側クロックが見積もり値よりも遅くなってホールドマージンを満たさなくなった場合等のいずれか1つが、或いは、それらの複数が同時に起こったことにある。なお、以下に詳述する本発明に係る半導体集積回路装置の設計方法は、特に、上記(3)〜(6)に起因してタイミングが正しくないと判定された場合に有効なものである。
図20は本発明に係る半導体集積回路装置の設計フローの一例を示す図であり、通常のSoCの実装設計フローを示すものである。
図20に示されるように、本実施例において、実装設計は、まず、ステップS20において、フロアプランニング、配置配線およびCTSを行い、ステップS21に進んで、寄生素子を抽出し、さらに、ステップS22に進んで、抽出された寄生素子を考慮したタイミング検証(バックアノテーション)を行う。そして、ステップS23において、タイミングが正しいかどうかの判定を行う。
ステップS23において、タイミングが正しい(YES)と判定されると、ステップS24に進んでマスクの作成を行う(設計工程が終了する)。一方、ステップS23において、タイミングが正しくない(NO)と判定されると、ステップS26に進んで、エラー個所にスキュー低減回路を挿入(本発明の半導体集積回路装置の設計方法を適用)し、さらに、ステップS25に進んで、ECO(Engineering Change Order)処理を行う。そして、ステップS25でECO処理を行った後、ステップS21の寄生素子の抽出処理およびステップS22のタイミング検証処理を再度実行し、上述したステップS23において、タイミングが正しいと判定されるまでこれらの処理を繰り返す。
このように、本実施例では、図19に示すステップS14(図20のステップS23)において、タイミングが正しくないと判定されると、ステップS26におけるエラー個所に対するスキュー低減回路の挿入処理を行うようになっている。なお、回路を挿入するための配置配線の変更は、技術的に十分確立されたECO処理(ステップS27)を適用することができる。この図20に示すような設計フローをサポートする機能は、自動レイアウトツールの機能の一部とすることが可能である。ここで、上記設計フローで得られる回路は、見積もり値でのクロックツリー設計であり、動作時のスキューを最小化する効果は十分ではないこともあるが、物理設計ループを収束させることは可能である。
図21は図20の設計フローにおけるスキュー低減回路の挿入処理(図20のステップS26)の一例を示す図であり、図22は図21のスキュー低減回路の挿入処理を説明するための図である。なお、図22は、各クロックTaおよびTbを受け取る2つのフリップフロップ(FF)間で組み合わせ回路を介したエラーパスが存在している様子を示している。
図21に示すスキュー低減回路の挿入処理は、図20の実施例において、ステップS23でタイミングが所定のスキュー値を満たしていない(NO)と判定され、ステップS26で行うエラー個所にスキュー低減回路を挿入する処理を示している。
図21に示されるように、スキュー低減回路の挿入処理(ステップS26)は、まず、ステップS261において、パスの終端と始端のクロックスキューをTsとし、セットアップ(ホールド)エラーをTeとしてステップS262に進む。ステップS262では、スキューTb−Ta(=Ts)がエラーTeよりも大きいか否かを判定する。ここで、クロックTaおよびTbは、クロックドライバ(バッファまたはインバータ)130aおよび130bの出力であり、例えば、図7における第1および第2の部分クロックツリー110aおよび110bの出力クロックCLK1およびCLK2に相当する。
ステップS262において、スキューTb−TaがエラーTe以下である(NO)と判定されると、ステップS260に進んで、通常の対策(例えば、図19におけるステップS11,S16およびS10等の処理)を行う。一方、ステップS262において、スキューTb−TaがエラーTeよりも大きい(YES)と判定されると、ステップS263に進んで、図22に示されるように、クロックツリーを遡り、Tb’−Ta’>Teを満たすなるべく上流のクロックドライバの組103a,103bを規定(検出)する。さらに、ステップS264に進んで、クロックスキューの観測点の近傍(クロックドライバ130a,130bの近く)に2つのクロックTa,Tbの位相差を検出(位相を比較)する位相差検出回路(位相比較回路105)を配置すると共に、ステップS263で規定されたクロックドライバの組103a,103bを遅延時間可変クロックドライバ(可変遅延バッファ)で置き換えて、ステップS25に進む。なお、ステップS264では、位相差検出回路により検出された位相差に応じて遅延時間可変クロックドライバ103a,103bにおける遅延時間の制御を行う配線も行う。
これにより、クロックスキューが原因で些少なセットアップ不足やホールド不足が少数の場合には、上述した本発明の半導体集積回路装置の設計方法(スキュー低減回路)を適用して局所的にスキューを小さくして設計を行うことができる。また、本発明を適用することにより、データパス系のレイアウトが原因となるセットアップ不足に対しても、より高精度にスキューを抑え込むことでセットアップ不足を回避することが可能な場合もある。
図23は本発明に係る半導体集積回路装置の設計フローの他の例を示す図である。
図23において、各ステップS30,S31およびS33〜S37は、それぞれ図19におけるステップS10,S11およびS12〜S16に相当し、本実施例では、図19のステップS11(図23のステップS31)の後に、スキュー低減回路を挿入するステップS32をさらに設けるようにしたものである。
すなわち、図23に示されるように、本実施例では、ステップS30でアーキテクチァ設計、RT設計・検証および論理合成・検証を行い、さらに、ステップS31でフロアプランニング、配置配線およびCTSを行った後、ステップS32に進んで、スキュー低減回路の挿入処理を行う。さらに、ステップS33に進んで寄生素子を抽出し、そして、ステップS34で抽出された寄生素子を考慮したタイミング検証を行う。すなわち、図19と同様の処理を行い、さらに、ステップS35において、タイミングが正しいかどうかの判定を行う。なお、本実施例におけるステップS35〜S37の処理は、図19を参照して説明したステップS14〜S16と同様であり、その説明は省略する。
図24は本発明に係る半導体集積回路装置の設計フローのさらに他の例を示す図であり、通常のSoCの実装設計フローを示すものである。
図24に示されるように、実装設計は、まず、ステップS40において、フロアプランニング、配置配線およびCTSを行い、さらに、ステップS41に進んで、スキュー低減回路を挿入(本発明の半導体集積回路装置の設計方法を適用)する。その後、ステップS42において、寄生素子を抽出し、さらに、ステップS43に進んで、抽出された寄生素子を考慮したタイミング検証(バックアノテーション)を行う。そして、ステップS44において、タイミングが正しいかどうかの判定を行う。
ステップS44において、タイミングが正しい(YES)と判定されると、ステップS45に進んでマスクの作成を行う(設計工程が終了する)。一方、ステップS44において、タイミングが正しくない(NO)と判定されると、ステップS47に進んで(経路P2)、エラー個所にスキュー低減回路を挿入(本発明の半導体集積回路装置の設計方法を適用)し、さらに、ステップS46に進んで、ECO処理を行う。そして、ステップS46でECO処理を行った後、ステップS42の寄生素子の抽出処理およびステップS43のタイミング検証処理を再度実行し、上述したステップS44において、タイミングが正しいと判定されるまでこれらの処理を繰り返す。ここで、ステップS41のスキュー低減回路の挿入処理は、図23におけるステップS32と同様のものであり、また、ステップS47のエラー個所に対するスキュー低減回路の挿入処理は、図20におけるステップS26と同様のものであり、これらステップS41およびS47の処理は、前述した図21および図22を参照して説明した通りである。
なお、ステップS44において、タイミングが正しくない(NO)と判定されたとき、ステップS47に進んで上述した処理を行う代わりに、図19を参照して説明した一般的な半導体集積回路装置の設計フローと同様に、実装設計からのデータを取り込み(図19のステップS16)、必要に応じて、アーキテクチァ設計、RT設計・検証および論理合成・検証(図19のステップS10)、並びに、フロアプランニング、配置配線およびCTS(図19のステップS11)を行ってもよい(経路P1)。
すなわち、クロックスキューの「見積もり値」は自動レイアウト後、或いは、自動レイアウト内部で判定することができ、例えば、スキューが目標値よりも大きいときは、スキュー低減回路を挿入(本発明の半導体集積回路装置の設計方法を適用)してタイミングエラーが生じる可能性を小さくすることができる。さらに、全クロックツリーに対してスキュー低減回路を挿入すれば、動的にクロックスキューを最小化することが可能になる。また、上述したように、ステップS44のバックアノテーション後、タイミングが正しくない(NO)と判定された場合には、ステップS47に進んでエラー個所に対してさらにスキュー低減回路を挿入(経路P2)することもできるが、経路P1のように、通常のフロー(図19に示すようなフロー)で進むこともできる。これは、ステップS44において、タイミングが正しくないと判定された場合(タイミングによる誤動作があった場合)、スキューの増大が原因のときには経路P2を流れる処理を行い、また、データパスの遅延が原因の場合には経路P1を流れる処理を行うことになる。
図25は通常のCTS方式を適用したクロックツリーの一例を概略的に示す図であり、また、図26は本発明を適用したクロックツリーの一例を概略的に示す図である。図25および図26において、参照符号400はクロックが分配される逆L字形のセルの配置配線領域を示し、また、410は通常のCTS方式を適用してセルの配置配線領域400までクロックを分配するクロックツリー(クロックツリー回路)の一部を示し、そして、420は本発明による2つの部分クロックツリーを抽出してセルの配置配線領域400までクロックを分配するクロックツリーの一部を示す。ここで、図25および図26において、各三角形印はそれぞれクロックドライバ(バッファまたはインバータ)を示している。なお、図25および図26において、逆L字形のセルの配置配線領域400の左下の矩形領域に、例えば、メモリマクロ等が既に置かれていて配線領域として使用できない場合、セルの配置配線領域400までのクロックツリーの一部410および420は、セルの配置配線領域400内に配線されることになる。
図25に示されるように、通常のCTS方式を適用したクロックツリーは、全ての領域において、それぞれの配線の長さを対称的に延ばしてクロックツリーを構成するため、全体としての配線長(総配線長)も長くなり、また、クロックツリーの階層も深くなり、そして、クロックドライバの数も多くなる。
これに対して、本発明を適用すると、図26から明らかなように、総配線長を短くすることができ、また、クロックツリーの階層も浅くすることができ、さらに、クロックドライバの数も少なくしてクロックツリーを構成することが可能になる。図26において、各クロックドライバの組AおよびB、CおよびD、並びに、EおよびFは、それぞれ抽出された2つの部分クロックツリーの遅延時間可変クロックドライバ(図7の103a,103b)に相当するものであり、例えば、それぞれ最終段のクロックドライバの組からの2つのクロックを位相比較回路(図7の105)で比較して、各遅延時間可変クロックドライバの遅延時間を制御する。ここで、各遅延時間可変クロックドライバの組A,B;C,D;E,Fは階層化されており、例えば、第1の組の遅延時間可変クロックドライバAおよびBに対して本発明を適用(処理X)し、さらに、第2の組の遅延時間可変クロックドライバCおよびDに対して本発明を適用(処理Y)し、そして、第3の組の遅延時間可変クロックドライバEおよびFに対して本発明を適用(処理Z)することができる。
遅延時間可変クロックドライバAおよびBは、最終段のクロックドライバ401および402から出力されるクロックの位相を比較し、その2つのクロックの位相差(2つのクロックの到着時間差)に応じて遅延時間可変クロックドライバAおよびBの遅延時間の制御を行うようになっている。なお、前述したように、1組のクロックドライバ401,402から出力される2つのクロックの内、予め遅れる方のクロックがどちらかが分かっていれば、その反対(進む方)のクロックを伝えるクロックドライバのみを遅延時間可変クロックドライバとし、他方(遅れる方のクロックを伝えるクロックドライバ)は遅延時間可変機能を持たない通常のクロックドライバとして構成することができる。
また、例えば、遅延時間可変クロックドライバCおよびDに関して、最終段のクロックドライバ403および404から出力されるクロックの位相を比較してもよいが、最終段よりも上流のクロックドライバBおよび405から出力されるクロックの位相を比較し、その位相比較結果により遅延時間可変クロックドライバC,Dの遅延時間を制御するように構成することもできる。なお、クロックドライバBおよび405の出力クロックを受け取る後段のクロックドライバは、例えば、CTS方式によりクロックツリー回路全体を構成するのと同時にクロックツリーの一部として構成されるが、クロックドライバBおよび405までの(上流の)クロックツリーと、クロックドライバBおよび405の出力クロックを受け取るそれ以降の(下流の)クロックツリーとを独立に構成することもできる。ここで、クロックドライバBおよび405の出力クロックを受け取る下流のクロックツリーは、例えば、クロックドライバの段数が少なく、また、カバーする領域も狭いために大きなスキューは生じないものと考えることができる。
さらに、例えば、遅延時間可変クロックドライバEおよびFに関して、最終段のクロックドライバ406および407から出力されるクロックの位相を比較してもよいが、最終段よりも上流のクロックドライバDおよび408からのクロックの位相を比較し、その位相比較結果により遅延時間可変クロックドライバE,Fの遅延時間を制御してもよい。なお、遅延時間可変クロックドライバの遅延時間としては、予め所定の遅延時間を持つように構成しておき、一方の遅延時間可変クロックドライバによりその遅延時間可変クロックドライバを介して伝えられるクロックのタイミングを早くも遅くも制御することもできる。
このように、本発明は、大域的分配は厳密に等遅延なツリーを組む必要がなく、不均等な領域に対してもそのまま適用することができ、リピータ(クロックドライバ)の数や配線長を低減することができる。
図27は本発明に係る半導体集積回路の設計プログラムを記録した媒体の例を説明するための図である。図27において、参照符号310は処理装置、320はプログラム(データ)提供者、そして、330は可搬型記録媒体を示している。
上述した各実施例に係る半導体集積回路の設計方法は、例えば、図27に示すような処理装置310に対するプログラム(データ)として与えられ、処理装置310により実行される。処理装置310は、プロセッサを含む演算処理装置本体311、および、演算処理装置本体311に対してプログラム(データ)を与えたり或いは処理された結果を格納する処理装置側メモリ(例えば、RAM(Random Access Memory)やハードディスク)312等を備える。処理装置310に提供されたプログラム(データ)は、ローディングされて処理装置310のメインメモリ上で実行される。
プログラム(データ)提供者320は、プログラム(データ)を格納する手段(回線先メモリ:例えば、DASD(Direct Access Storage Device))321を有し、例えば、インターネット等の回線を介してプログラム(データ)を処理装置310に提供したり、或いは、CD−ROMやDVD等の光ディスクまたはフロッピィディスク等の磁気ディスクといった可搬型記録媒体330を介して処理装置310に提供する。本発明に係る半導体集積回路の設計プログラムを記録した媒体は、上記の処理装置側メモリ312、回線先メモリ321、および、可搬型記録媒体330等の様々なものを含むのはいうまでもない。
このように、本発明に係るクロックツリー回路、或いは、半導体集積回路装置の設計方法によれば、クロックツリーの先端部(120a,120b:クロックツリーの先端:フリップフロップの入力)のクロックを常時観測するため、見積もり誤差、製造ばらつき、電源電圧変動および温度変化等に起因したスキューに対しても動的にスキュー低減の効果を発揮することができる。また、観測点として物理的に近接した点を選択するため、観測用信号(各部分クロックツリー110a,110bの先端から位相比較器105までの間)の配線長を無視することができ、さらに、クロックによる高周波数で動作するノードが位相比較回路内およびその近傍に限られるため、交流電流のオーバヘッドを微小にすることができる。
また、本発明によれば、従来技術のように、リファレンスクロックが事実上存在しないため、低電力であり、且つ、リファレンスクロックをゼロスキューで分配するといった問題を回避することができる。そして、CTS方式に対する要求を緩和できるため、クロックツリーの段数と配線長が小さくなり、動作電力の削減も期待できる。なお、位相比較回路(位相差検出回路)および遅延時間可変クロックドライバ(可変遅延回路)は共に小規模回路として構成することができ、CTS方式を適用した後のクロックツリーに対して、上記小規模回路を付加するだけでよいため、現状の設計フローに対する整合性が高いといった利点もある。
さらに、本発明によれば、ローパスフィルタ(LPF106)の後の信号を帰還する場合、フィードバック信号が直流電位のため、配線長を考慮する必要がなくなり、また、動作電流も少なくすることができる。そして、LPFの後の信号を帰還する場合、ディジタル信号の帰還に比べるとリピータが不要になるため、低コスト化および低電力化を図ることができる。