(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行される、クロックツリー合成のための方法であって、前記方法は、
一組の上位クロックツリーを構築することを含み、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーは、クロックスキューに対するチップ内ばらつきおよび／またはクロスコーナーばらつきの影響を減じるように最適化され、
各上位クロックツリーのリーフごとに下位クロックツリーを構築することを含み、前記下位クロックツリーは、クロック信号を前記上位クロックツリーのリーフから一組のクロックシンクに分配し、前記下位クロックツリーは、レイテンシ、消費電力、および／または面積を減じるように最適化される、方法。
【請求項２】
上位クロックツリーにおける配線の幅は下位クロックツリーにおける配線の幅よりも広い、請求項１に記載の方法。
【請求項３】
所与の上位クロックツリーのすべての水平配線は同一金属層上でルーティングされる、請求項１に記載の方法。
【請求項４】
所与の上位クロックツリーのすべての垂直配線は同一金属層上でルーティングされる、請求項１に記載の方法。
【請求項５】
所与の上位クロックツリーにおけるすべてのバッファは同じサイズを有する、請求項１に記載の方法。
【請求項６】
命令を格納する非一時的なコンピュータ読取可能な記憶媒体であって、前記命令はコンピュータによって実行されると前記コンピュータにクロックツリー合成のための方法を実行させ、前記方法は、
一組の上位クロックツリーを構築することを含み、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーは、クロックスキューに対するチップ内ばらつきおよび／またはクロスコーナーばらつきの影響を減じるように最適化され、
各上位クロックツリーのリーフごとに下位クロックツリーを構築することを含み、前記下位クロックツリーは、クロック信号を前記上位クロックツリーのリーフから一組のクロックシンクに分配し、前記下位クロックツリーは、レイテンシ、消費電力、および／または面積を減じるように最適化される、非一時的なコンピュータ読取可能な記憶媒体。
【請求項７】
上位クロックツリーにおける配線の幅は下位クロックツリーにおける配線の幅よりも広い、請求項６に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項８】
所与の上位クロックツリーのすべての水平配線は同一金属層上でルーティングされる、請求項６に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項９】
所与の上位クロックツリーのすべての垂直配線は同一金属層上でルーティングされる、請求項６に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１０】
所与の上位クロックツリーにおけるすべてのバッファは同じサイズを有する、請求項６に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１１】
装置であって、
プロセッサと、
命令を格納する記憶媒体とを備え、前記命令は前記プロセッサによって実行されると前記装置にクロックツリー合成のための方法を実行させ、前記方法は、
一組の上位クロックツリーを構築することを含み、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーは、クロックスキューに対するチップ内ばらつきおよび／またはクロスコーナーばらつきの影響を減じるように最適化され、
各上位クロックツリーのリーフごとに下位クロックツリーを構築することを含み、前記下位クロックツリーは、クロック信号を前記上位クロックツリーのリーフから一組のクロックシンクに分配し、前記下位クロックツリーは、レイテンシ、消費電力、および／または面積を減じるように最適化される、装置。
【請求項１２】
上位クロックツリーにおける配線の幅は下位クロックツリーにおける配線の幅よりも広い、請求項１１に記載の装置。
【請求項１３】
所与の上位クロックツリーのすべての水平配線は同一金属層上でルーティングされる、請求項１１に記載の装置。
【請求項１４】
所与の上位クロックツリーのすべての垂直配線は同一金属層上でルーティングされる、請求項１１に記載の装置。
【請求項１５】
所与の上位クロックツリーにおけるすべてのバッファは同じサイズを有する、請求項１１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
この開示はクロックツリー合成（clock tree synthesis）（ＣＴＳ）に関する。より具体的には、この開示は二重構造ＣＴＳに関する。
【背景技術】
【０００２】
関連技術
ＣＴＳとは、１つの回路設計内の一組の順序回路素子にクロック信号を分配するためのクロック分配ネットワークを作成するプロセスのことである。１つの回路設計は複数のクロックドメインを含み得る。各クロックドメインは複数のクロックツリーを含み得る。ＣＴＳによって生成されたクロックツリーの品質は、ＥＤＡフローにおける下流段、特にタイミング収束に多大な影響を及ぼす可能性がある。したがって、必要なのは、高品質のクロックツリーを効率的に作成することができるＣＴＳのためのシステムおよび技術である。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
本明細書に記載のいくつかの実施形態は、クロックツリーを構築するためのシステムおよび技術を提供する。いくつかの実施形態は、一組の上位クロックツリーを構築することができ、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーを、クロックスキューに対するチップ内ばらつき（on-chip-variation）（ＯＣＶ）またはクロスコーナーばらつきの影響を減じるように最適化することができる。次に、本実施形態は、各上位クロックツリーのリーフごとに下位クロックツリーを構築することができ、下位クロックツリーは、クロック信号を上位クロックツリーのリーフから一組のクロックシンクに分配する。下位クロックツリーは、レイテンシ、消費電力、および／または面積を減じるように最適化することができる。
【０００４】
いくつかの実施形態において、上位クロックツリーにおける配線の幅は下位クロックツリーにおける配線の幅よりも広くてもよい。いくつかの実施形態において、所与の上位クロックツリーのすべての水平配線は同一金属層上でルーティングされてもよい。いくつかの実施形態において、所与の上位クロックツリーのすべての垂直配線は同一金属層上でルーティングされてもよい。いくつかの実施形態において、所与の上位クロックツリーにおけるすべてのバッファは同じサイズを有していてもよい。
【図面の簡単な説明】
【０００５】
【図１】本明細書に記載のいくつかの実施形態に従い、動作およびプロセス条件が１つのチップ上でどのように異なり得るかを示す。
【図２】本明細書に記載のいくつかの実施形態に従い、タイミング制約がどのようにＯＣＶばらつきを説明し得るかを示す。
【図３Ａ】本明細書に記載のいくつかの実施形態に従い、クロックツリートポロジの変更がＯＣＶクロックスキューにどのように影響し得るかを示す。
【図３Ｂ】本明細書に記載のいくつかの実施形態に従い、クロックツリートポロジの変更がＯＣＶクロックスキューにどのように影響し得るかを示す。
【図４】本明細書に記載のいくつかの実施形態に従い、ＯＣＶおよびタイミング臨界を意識したＣＴＳを実行するためのプロセスを示す。
【図５】本明細書に記載のいくつかの実施形態に従い、二重構造クロックツリーの論理回路図を示す。
【図６】本明細書に記載のいくつかの実施形態に従い、上位クロックツリーの一部を示す。
【図７】本明細書に記載のいくつかの実施形態に従い、二重構造クロックツリーを構築するためのプロセスを示す。
【図８】本明細書に記載のいくつかの実施形態に従い、コンピュータシステムを示す。
【発明を実施するための形態】
【０００６】
詳細な説明
以下の説明は、当業者が本発明を実施し使用することを可能にするために示され、特定の応用例およびその必要条件との関連で行なわれる。開示される実施形態に対するさまざまな変更が当業者には容易に明らかになるであろう。また、本明細書で規定される一般原理は、本発明の精神および範囲から外れることなく他の実施形態および応用例に適用し得る。よって、本発明は、示される実施形態に限定されるのではなく、本明細書に開示される原理および特徴と矛盾しない最も広い範囲と一致するはずである。この開示では、「および／または」という用語が、列挙された構成要素ととともに使用される場合、これは、列挙された構成要素の可能なすべての組合わせを意味する。たとえば、「Ｘ、Ｙ、および／またはＺ」という表現は、以下の場合をカバーする。（１）Ｘのみ、（２）Ｙのみ、（３）Ｚのみ、（４）ＸおよびＹ、（５）ＸおよびＺ、（６）ＹおよびＺ、（７）Ｘ、Ｙ、およびＺ。加えて、この開示では、「〜に基づく」という用語は「〜のみにまたは〜の一部に基づく」を意味する。
【０００７】
電子設計自動化（electronic design automation）（ＥＤＡ）フローの概要
ＥＤＡフローを用いて回路設計を作成することができる。回路設計が完成すると、製造、実装、および組立てを経て集積回路チップが生産される。ＥＤＡフローは複数の工程を含み得る。各工程は１つ以上のＥＤＡソフトウェアツールの使用を伴ない得る。いくつかのＥＤＡ工程およびソフトウェアツールについて以下で説明する。これらＥＤＡ工程およびソフトウェアツールの例は、専ら例示を目的としており、実施形態を開示されている形態に限定することを意図しているのではない。
【０００８】
いくつかのＥＤＡソフトウェアツールは、回路設計者が実現したい機能を回路設計者が説明できるようにする。これらツールはまた、回路設計者がwhat-if計画を実行することによって機能の改良、コストの確認等を行なえるようにする。論理設計および機能検証中に、システム内のモジュール用のＨＤＬ（hardware description language（ハードウェア記述言語））コード、たとえばSystemVerilogコードを書込むことができ、機能の正確さについて設計を検査することができ、たとえば、設計を検査することにより、これが正しい出力を生成することを保証できる。
【０００９】
合成およびテスト用の設計中に、１つ以上のＥＤＡソフトウェアツールを用いてＨＤＬコードをネットリストに変換することができる。さらに、このネットリストを対象技術に合わせて最適化することができ、完成したチップを検査するためにテストを設計し実行することができる。ネットリストの検証中に、ネットリストは、タイミング制約の遵守およびＨＤＬコードとの対応について検査することができる。
【００１０】
設計の計画中に、チップの全体平面図を構築するとともにタイミングおよびトップレベルルーティングについて分析することができる。物理的な実装中に、回路素子をレイアウト内に置くことができ（配置）、電気的に連結することができる（ルーティング）。
【００１１】
分析および抽出中に、回路の機能をトランジスタレベルで検証することができ、寄生要素を抽出することができる。物理的な検証中に、設計を検査することにより、製造、電気的事項、リソグラフィに関する事項、および回路の正確さを保証することができる。
【００１２】
分解能強化中に、幾何学的操作をレイアウトに対して行なうことにより、設計の製造可能性を改善することができる。マスクデータの準備中に、設計を「テープアウト」し、製造中に使用されるマスクを作成することができる。
【００１３】
ＯＣＶおよびタイミング臨界を意識したＣＴＳ
ＯＣＶとは、１つのチップ上の動作およびプロセス条件のばらつきのことである。図１は、本明細書に記載のいくつかの実施形態に従い、動作およびプロセス条件が１つのチップ上でどのように異なり得るかを示す。電圧、温度、およびプロセスパラメータ（たとえばチャネル長）はチップ１０２上でばらつき得る。たとえば、領域１０４における電圧、温度、およびプロセスパラメータはそれぞれ、３．２Ｖ、７２°Ｆ、および０．２６μである場合がある。一方、領域１０６における電圧、温度、およびプロセスパラメータはそれぞれ、３．４Ｖ，６８°Ｆ、および０．２４μである場合がある。ＯＣＶは、回路素子の１つ以上の特性に影響し得る。たとえば、ＯＣＶが原因で、領域１０４内のセルのインスタンスが領域１０６内の同一セルのインスタンスと異なる遅延特性を有することがある。
【００１４】
一般的に、２つの場所間のＯＣＶの量は、距離とともに増加する。たとえば、間の距離が大きい２つの同一セルは、それぞれの特性（たとえば遅延）の差が、間の距離が小さい２つの同一セルよりも大きいと予測される。加えて、ＯＣＶの量は一般的に、経路長の増加および／または経路内の回路素子の数の増加に伴って増加する。たとえば、長い配線は短い配線よりも顕著なＯＣＶ効果を有すると予測される。さらに、回路素子の数が多い経路は回路素子の数が少ない経路よりもＯＣＶ効果が大きいと予測される。
【００１５】
ＯＣＶはクロックスキューに影響し得る。なぜなら、ＯＣＶが原因で、回路素子および配線の遅延がそれぞれの公称値から変化することがあるからである。このため、タイミング制約はこの変化を説明する必要がある。図２は、本明細書に記載のいくつかの実施形態に従い、タイミング制約がどのようにＯＣＶばらつきを説明し得るかを示す。回路２００は、順序回路素子２０２、２０４、および２０６を含む。各順序回路素子は、クロック信号を受けるクロック入力「Ｃ」と、クロック信号に基づいてデータ信号を送出する出力「Ｑ」と、クロック信号に基づいてデータ信号を捕捉する入力「Ｄ」とを有する。図２では順序回路素子の例として「Ｄフリップフロップ」が使用されているが、順序回路素子２０２、２０４、および２０６は一般的にはクロック信号を用いて時間調整される任意の回路であればよい。
【００１６】
組合せ論理クラウド２１４および２１６は、１本以上の配線および／または１つ以上の組合せ論理ゲートを含み得るが、これらは順序回路素子を含まない。ある順序回路素子の出力で送出されたデータ信号は、別の順序回路素子の入力で捕捉される前に組合せ論理クラウドを通過し得る。たとえば、順序回路素子２０２の出力「Ｑ」によって送出されたデータ信号は、順序回路素子２０４の入力「Ｄ」で捕捉される前に、組合せ論理クラウド２１４（ここでこのデータ信号を他のデータ信号と論理的に組合わせることができる）を通過する。
【００１７】
クロック信号「ＣＬＫ」は、バッファ２０８、２１０、および２１２を含むクロックツリーを用いて順序回路素子に分配することができる。このクロックツリーは分岐点Ｂ１およびＢ２を含み、この分岐点でクロックツリートポロジは複数の方向に分岐する。先に説明したように、ＯＣＶが原因で同一セルまたは配線の異なるインスタンスが異なる遅延を有することがある。具体的には、ある回路素子に対して（１つの公称遅延を用いるのではなく）ある範囲の遅延を用いることにより、たとえば、回路素子に対してディレーティング係数を用いるかまたは高および低遅延値を用いることにより、ＯＣＶをモデル化することができる。同様に、経路については、その経路内の回路素子について、それぞれの高遅延値と低遅延値を集約することによって、高遅延値と低遅延値を計算することができる。
【００１８】
図２において、回路経路は点線で示されており、回路経路の高遅延値（すなわち低速経路）および低遅延値（すなわち高速経路）はそれぞれ大文字と小文字で示されている。たとえば、分岐点Ｂ１から順序顔路素子２０２のクロック入力「Ｃ」までの高遅延値および低遅延値はそれぞれＸ１およびｘ１である。項「Ｘ１」の下付き文字「１」は、この遅延値が分岐点Ｂ１からのものであることを示す。
【００１９】
データ経路遅延も図２に示されている。たとえば、順序回路素子２０２の出力「Ｑ」からデータ信号が送出された時点から順序回路素子２０４の入力「Ｄ」でこのデータ信号が捕捉された時点までの高遅延および低遅延は、「Ａ」（高遅延値）および「ａ」（低遅延値）である。
【００２０】
この開示では、高遅延値に相当する大文字をデータ経路自体にも使用している。たとえば、データ経路「Ａ」は、組合せ論理クラウド２１４を通る、順序回路素子２０２から順序回路素子２０４までのデータ経路である。なお、点線が順序回路素子２０２の（出力「Ｑ」から始まるのではなく）クロック入力「Ｃ」から始まっている理由は、点線で示されるデータ経路遅延が、クロック入力「Ｃ」に達したクロックエッジと出力「Ｑ」から送出されるデータ信号との間の遅延である、送出遅延を含むことにある。
【００２１】
図２に示される経路遅延を用いて、ＯＣＶを意識したセットアップタイミング制約を次のように表わすことができる。
【００２２】
【数１】
0006333948.tif 000002
【００２３】
式中、ΔＡ、ΔＢ、およびΔＣはセットアップタイミング要件である。同様に、ＯＣＶを意識したホールドタイミング制約を次のように表わすことができる。
【００２４】
【数２】
0006333948.tif 000003
【００２５】
式中、δＡ、δＢ、およびδＣはホールドタイミング要件である。
高遅延値および低遅延値は、ディレーティング係数を用いて表わすことができる。ｄをディレーティング係数とし、プライム記号「´」が公称遅延値を示すものとする。たとえば、ｘ１´を、分岐点Ｂ１から順序回路素子２０２のクロック入力「Ｃ」までの公称経路遅延とする。そうすると、高遅延値および低遅延値はそれぞれ、Ｘ１＝ｘ１´＋ｄ・ｘ１´およびｘ１＝ｘ１´−ｄ・ｘ１と表わすことができる。他の高遅延値および低遅延値についても同様の式を導くことができる。式（１）を用いてデータ経路「Ａ」、「Ｂ」、および「Ｃ」それぞれのクロックスキューＣＳＡ、ＣＳＢ、およびＣＳＣを次のように表わすことができる。
【００２６】
【数３】
0006333948.tif 000004
【００２７】
なお、右辺の第１項、たとえば（ｘ１´−ｙ１´）は、公称クロックスキュー（すなわち公称経路遅延間の差）であり、第２項、たとえばｄ・（ｘ１´＋ｙ１´）は、ＯＣＶの影響を表わす。ホールドタイミング制約についても同様にクロックスキューの式を導くことができる。
【００２８】
式（３）からいくつかの重要事項がわかる。第１に、ＯＣＶクロックスキュー成分は、分岐点からの総（すなわち送出＋捕捉）経路レイテンシを最小にする、たとえば（ｘ１´＋ｙ１´）を最小にすることによってしか、最小にすることができない。第２に、分岐点をクロックツリートポロジのルートに向かって動かすと、結果として分岐点からの総経路遅延が大きくなり、その結果、ＯＣＶクロックスキュー成分が大きくなる。第３に、挿入遅延を加えることによって公称クロックスキューを最小にしようとすると、ＯＣＶクロックスキュー成分が悪化する可能性が高い。なぜなら、挿入遅延を加えると、分岐点からの総経路遅延が増すからである。従来のＣＴＳの手法は公称クロックスキューを最適化しようとするのが一般的であった。上記説明に基づくと、ＯＣＶクロックスキューを最適化する（すなわちクロックスキューに対するＯＣＶの影響を減じる）ことは、従来のＣＴＳで行なわれる従来のクロックスキュー最適化とは大きく異なることは明らかである。
【００２９】
図３Ａ〜図３Ｂは、本明細書に記載のいくつかの実施形態に従い、クロックツリートポロジの変更がＯＣＶクロックスキューにどのように影響し得るかを示す。明確にするためかつ開示を容易にするために、図３Ａ〜図３Ｂにバッファは示されていない。図３Ａに示される回路３００は、分岐点Ｂ１がツリーのリーフからより遠く（したがってツリーのルートにより近く）分岐点Ｂ２がツリーのリーフにより近い（したがってツリーのルートからより遠い）クロックツリートポロジを含む。これに対し、図３Ｂに示される回路３５０では、分岐点Ｂ２はツリーのリーフからより遠く分岐点Ｂ１はツリーのリーフにより近い。
【００３０】
なお、回路３００では、データ経路「Ａ」のＯＣＶクロックスキュー成分はデータ経路「Ｂ」および「Ｃ」のＯＣＶクロックスキュー成分よりも大きい。なぜなら、図３Ａでは（ｘ１´＋ｙ１´）＞（ｙ２´＋ｚ２´）であるからである。逆に、回路３５０では、データ経路「Ａ」のＯＣＶクロックスキュー成分はデータ経路「Ｂ」および「Ｃ」のＯＣＶクロックスキュー成分よりも小さい。なぜなら、図３Ｂでは（ｘ１´＋ｙ１´）＜（ｙ２´＋ｚ２´）であるからである。
【００３１】
本明細書に記載のいくつかの実施形態は、臨界タイミング経路のクロックスキューに対するＯＣＶの影響を減じるクロックツリートポロジを構築する。たとえば、データ経路「Ｂ」および「Ｃ」は臨界（たとえばタイミングスラックが負であるかゼロに近い）であるがデータ経路「Ａ」は臨界でない場合、いくつかの実施形態は図３Ａに示されるクロックツリートポロジを使用することができる。一方、データ経路「Ａ」は臨界であるがデータ経路「Ｂ」および「Ｃ」は臨界でない場合、いくつかの実施形態は図３Ｂに示されるクロックツリートポロジを使用することができる。一般的に、所与のタイミング経路のＯＣＶクロックスキューを減じること（すなわち所与のタイミング経路のクロックスキューに対するＯＣＶの影響を減じること）は、最も近い分岐点（すなわち送出および捕捉順序回路素子に最も近い）から送出および捕捉順序回路素子までの総（すなわち送出＋捕捉）経路レイテンシを減じることを含み得る。
【００３２】
図４は、本明細書に記載のいくつかの実施形態に従い、ＯＣＶおよびタイミング臨界を意識したＣＴＳを実行するためのプロセスを示す。このプロセスは、一組の臨界経路にある順序回路素子の時間調整のために第１の組のクロックツリートポロジを構築することで始めることができ、この構築は、クロックスキューに対するＯＣＶの影響を減じるように第１の組のクロックツリートポロジを最適化することを含む（動作４０２）。
【００３３】
タイミングスラックおよび対応するタイミング経路は、所要時間を回路設計によって後方に（すなわちタイミング終点からタイミング始点へ）伝搬し、到着時間を回路設計によって前方に（すなわちタイミング始点からタイミング終点へ）伝搬することによって求めることができる。次に、タイミングスラックの妨害に相当するタイミング経路、およびオプションとしてタイミングスラックのほぼ妨害に相当するタイミング経路を、一組の臨界経路として識別することができる。いくつかの実施形態において、このプロセスは、タイミング経路をこれらタイミング経路のスラック値に基づいて分類し最もスラックが小さい予め定められた数（または予め定められた割合）の経路を選択することによって、上記一組の臨界経路を求めてもよい。
【００３４】
先に説明したように、各臨界経路は、送出順序回路素子の出力（タイミング始点）で始まり、捕捉順序回路素子の入力（タイミング終点）で終わる。たとえば、図２において、臨界経路は、順序回路素子２０２の「Ｑ」出力で始まり順序回路素子２０４の「Ｄ」入力で終わるものであってもよい。なお、一組の臨界経路は、一組の順序回路素子に対応する。たとえば、図２において、一組の臨界経路がデータ経路「Ｂ」および「Ｃ」を含む場合、この一組の臨界経路にある順序回路素子は、順序回路素子２０２、２０４、および２０６を含むであろう。一方、この一組の臨界経路がデータ経路「Ａ」しか含まない場合、この一組の臨界経路にある順序回路素子は、順序回路素子２０２および２０４を含むであろうが順序回路素子２０６は含まないであろう。
【００３５】
一組のクロックツリートポロジは、１つ以上のクロックツリートポロジを含み得る。たとえば、図３Ａの、クロック信号「ＣＬＫ」を順序回路素子２０２、２０４、および２０６のクロック入力に分配するネットは、クロックツリートポロジを１つしか含まない「一組のクロックツリートポロジ」の一例である。「最適化する」、「最適化」、およびそれ以外のこのような用語は、所与の目的関数を最小化または最大化しようと試みるプロセスを意味する。なお、これら最適化プロセスは、目的関数のグローバル最小値または最大値を得る前に終了し得る。一組のクロックツリートポロジを、クロックスキューに対するＯＣＶの影響を減じるように最適化することは、クロックツリートポロジにおける分岐点の最適化された位置を求めることを含み得る。具体的には、このプロセスは、所与の臨界経路の終点にある２つの順序回路素子にできるだけ近い分岐点を求めることができる。
【００３６】
図４を参照して、このプロセスは次に、一組の臨界経路にない順序回路素子の時間調整のために第２の組のクロックツリートポロジを構築することができ、この構築は、クロックレイテンシを減じるように第２の組のクロックツリートポロジを最適化することを含む（動作４０４）。いくつかの実施形態において、メトリクスの組合せを最適化することができる。たとえば、動作４０４において、このプロセスは、クロックツリートポロジの、レイテンシの最適化（たとえばクロックツリーのルートからクロックツリーのリーフまでの最大遅延の最小化）、消費電力（たとえばクロックツリーの動的および／または漏れ消費電力）の最適化、および／または面積（たとえばクロックツリーにおいて使用されているバッファの総セル面積)の最適化を試みることができる。
【００３７】
第２の組のクロックツリートポロジは、全く新しいクロックツリートポロジを含むものであってもよく、および／または既存のクロックツリートポロジの増分拡張部（たとえば動作４０２で作成されたクロックツリートポロジの増分拡張部）を含むものであってもよい。たとえば、図２において、データ経路「Ａ」は臨界経路であるがデータ経路「Ｂ」および「Ｃ」は臨界経路でないと仮定する。動作４０２は、クロック信号「ＣＬＫ」を順序回路素子２０２および２０４のクロック入力に分配するクロックツリートポロジを構築し得る。次に、動作４０４は、ポイントＢ２から順序回路素子２０６のクロック入力までの分岐を作成することによってこのクロックツリートポロジを増分的に拡張し得る（なお、動作４０２は、順序回路素子２０６が臨界経路上になかったので、この分岐を作成しなかった）。
【００３８】
二重構造クロックツリー
従来のＣＴＳの手法はツリーを下から上に構築する、すなわち、これら手法はクロックシンク（たとえば順序回路素子のクロック入力）から始めてツリーを次第にクロックソースに向けて構築する。あいにく、ＯＣＶが原因で、クロックスキューは、従来のＣＴＳの手法を用いて構築されたクロックツリーにおいて大きく変動することがある。
【００３９】
従来のＣＴＳの手法と異なり、本明細書に記載のいくつかの実施形態は、上位クロックツリーおよび下位クロックツリーと呼ばれる二種類のクロックツリーを用いて二重構造のクロックツリーを構築する。上位クロックツリーは、比較的長い距離を通してクロック信号をチップの異なる領域に分配するために構築され最適化される。上位クロックツリーは、たとえばクロックスキューに対するＯＣＶおよび／またはクロスコーナーばらつきの影響を減じるようにこの上位クロックツリーを最適化することによって、耐ＯＣＶおよび／またはクロスコーナーにすることができる。上位クロックツリーのリーフ（アンカーバッファと呼ばれる）は、下位クロックツリーのルートとして機能する。具体的には、上位クロックツリーの各リーフから、下位クロックツリーを構築し最適化することによって、クロック信号を上位クロックツリーのリーフの近傍にあるクロックシンクに分配することができる。
【００４０】
図５は、本明細書に記載のいくつかの実施形態に従い、二重構造クロックツリーの論理回路図を示す。上位クロックツリー５０４は、クロック信号を、クロックツリールート５０２から、上位クロックツリー５０４のリーフ、たとえば上位クロックツリー５０４のリーフ５０８に、分配する。上位クロックツリーの各リーフはクロックバッファ（この開示ではアンカーバッファと呼ばれる）であってもよい。たとえば、リーフ５０８は下位クロックツリーを駆動するアンカーバッファであってもよい。
【００４１】
下位クロックツリー５０６は、クロック信号を、上位クロックツリーのリーフから一組のクロックシンクに分配する。具体的には、各上位クロックツリーの各リーフは、上位クロックツリーのリーフの近傍にあるクロックシンクにクロック信号を分配する、下位クロックツリーのルートとして機能する。たとえば、リーフ５０８は、クロックシンク、たとえばリーフ５０８の近傍にあるクロックシンク５１２にクロック信号を分配する下位クロックツリー５１０のルートとして機能する。
【００４２】
上記のように、上位クロックツリーは、たとえばクロックスキューに対するＯＣＶの影響を減じるように上位クロックツリートポロジを最適化することによって、ＯＣＶに対する耐性を有するように最適化することができる。さらに、いくつかの実施形態において、上位クロックツリーで使用されるすべてのバッファは、同一セルのインスタンスであってもよく、または、同一種類でサイズが非常によく似たセルのインスタンスであってもよい（たとえばセルライブラリが大きな範囲のセルサイズのセルを含む場合は上位クロックツリーで使用されるセルを小さい範囲のセルサイズから選択してもよい）。同一サイズのバッファを使用することにより、クロックスキューに対するＯＣＶの影響を減じることができる。なぜなら同一サイズにされたバッファはＯＣＶから同じように影響を受けると予想されるからである。加えて、上位クロックツリーのクロックツリートポロジは、規則的な構造を有していてもよく、それは、クロックスキューに対するＯＣＶの影響を減じるのに役立ち得る。いくつかの実施形態において、上位クロックツリーは、下位クロックツリーで使用される配線の幅よりも大きな配線の幅を使用することができる。幅がより大きな配線の電気的特性（たとえば容量および抵抗）は一般的に、幅が狭い配線よりもＯＣＶに対する耐性が高い。加えて、すべての水平配線を同一金属層（たとえば金属層Ｍ４）上でルーティングし、同様に、すべての垂直配線を同一金属層（たとえば金属層Ｍ３）上でルーティングすることによって、金属層間のプロセスばらつきの影響を減じることができる。このようにして、上位クロックツリーを、クロックツリーの特性（たとえばクロックスキュー）に対するＯＣＶの影響を減じるように最適化することができる。
【００４３】
なお、同一の装置および／または配線幅の使用は、ＯＣＶの影響を減じるのみならず、クロスコーナーばらつき（ＰＶＴばらつきとしても知られている）も減じる。先に説明したように、ＯＣＶとは１つのチップの異なる領域内のばらつきのことである。一方、クロスコーナーばらつきまたはＰＶＴばらつきは、チップ全体に影響する、複数のコーナーに亘るプロセス、電圧、および温度のばらつきのことである。一般的に、チップは（たとえばタイミングに関して）複数のコーナー（各コーナーは公称プロセス、電圧、および温度値に関連する）に亘って検証され、同一の装置および／または配線幅の使用は、複数のＰＶＴコーナーに亘るクロックスキューのばらつきを減じるのにも役立つ。
【００４４】
図６は、本明細書に記載の実施形態に従い、上位クロックツリーの一部を示す。図６に示される上位クロックツリーの一部は、配線６０４等の配線と、バッファ６０６等のバッファとを含む。ルーティンググリッド６０２を用いてクロックツリーの配線をルーティングすることができ、ルーティングおよび／または配置の阻止部、たとえば阻止部６０８をルーティンググリッド６０２内に指定することができる。配線６０４が阻止部６０８を避けるようにルーティングされていることが注目される。加えて、すべての水平配線が同一金属層、すなわち金属層Ｍ４においてルーティングされ、すべての垂直配線が同一金属層、すなわち金属層Ｍ３においてルーティングされていることが注目される。いくつかの実施形態において、これは、上位クロックツリーのすべての水平配線および垂直配線をそれぞれの金属層においてルーティングすることをルータに強制するルーティング規則を作成することによって可能になる。加えて、図６に示されるように、二重構造ＣＴＳは、できる限り共通経路を共有することによってクロックスキューに対するＯＣＶの影響を減じようとしている。
【００４５】
図７は、本明細書に記載のいくつかの実施形態に従い、二重構造クロックツリーを構築するためのプロセスを示す。このプロセスは、一組の上位クロックツリーを構築することで始めることができ、各上位クロックツリーの各リーフは下位クロックツリーのルートであり、各上位クロックツリーは、クロックスキューに対するＯＣＶおよび／またはクロスコーナーばらつきの影響を減じるように最適化される（動作７０２）。
【００４６】
一組の上位クロックツリーは、１つ以上の上位クロックツリーを含み得る。先に説明したように、上位クロックツリーは一般的に、下位クロックツリーよりも長い配線を有し、クロックバッファごとのファンアウトが少なく、クロックツリーの論理ゲートはほんのわずかであるか全くない。加えて、上位クロックツリーは、好ましくはより良好なＯＣＶ耐性のために規則的なトポロジを有していてもよく、装置ばらつきの影響を減じるためにクロックバッファのサイズが同一／同様であってもよい。さらに、上位クロックツリーは、ツリーの異なる分岐に対して一致する配線長および金属層を使用することにより相互接続のばらつきを制御することができる。上位クロックツリーを構築している間に、プロセスは、（１）異なるプロセス、電圧、および温度コーナーに亘るセル遅延および配線遅延のバランスを取ることができ、（２）クロックツリー全体において同一サイズのバッファを使用することができ、（３）分岐のルートを一致させることができる。
【００４７】
次に、プロセスは、各上位クロックツリーのリーフごとに下位クロックツリーを構築することができ、下位クロックツリーは、クロック信号を上位クロックツリーのリーフから一組のクロックシンクに分配し、下位クロックツリーは、レイテンシ、消費電力、および／または面積を減じるように最適化される（動作７０４）。
【００４８】
先に説明したように、下位クロックツリーは、一般的に、配線長が上位クロックツリーよりも短く、クロックバッファ／ゲートごとのファンアウトは中程度の数〜多数であり、クロックシンクの分布が不均一でありゲートのバッファサイズがばらついているので、構造の規則性は低い。一般的に、下位クロックツリーのレベル数が少ないほど、ＯＣＶに対するクロックツリーの耐性は高くなる。
【００４９】
いくつかの実施形態において、下位クロックツリーのバッファレベルの最大数は、ＯＣＶの影響を減じるために、制約を受けることがある。具体的には、最大バッファレベルの制約を満たすために、下位クロックツリーは、バッファの追加に加えて、既存のゲート（たとえばクロックゲーティングセル）の複製を作る必要があるかもしれない。いくつかの実施形態において、同じクラスタ化プロセスを、バッファリングおよびゲート複製に使用する。いくつかの実施形態において、このプロセスは、下位クロックツリーのレベルのバランスが取れておりそれによってＯＣＶ耐性をさらに改善できることを保証することができる。
【００５０】
いくつかの実施形態において、下位クロックツリーにおけるレベル数は、予め定められた最大数になるよう強制される、すなわち、下位クロックツリーのルートから下位クロックツリーのリーフまでの各経路のバッファの数は、予め定められた最大数よりも少なくまたはそれと等しくなるよう強制される。なお、この最大バッファレベルの制約は、下位クロックツリーのサイズも制限する。予め定められた最大バッファレベルの制約を受けて、プロセスは、回路設計においてクロックシンクをクラスタ化することによって一組の下位クロックツリーを構築することができる。このプロセスは次に、下位クロックツリーの一時的アンカーバッファ位置を識別することができる。一時的アンカーバッファ位置が求められると、プロセスは、１つ以上の上位クロックツリーを作成してクロック信号をアンカーバッファに分配することができる。一般的に、下位クロックツリーで許容されるレベル数が少なければ、下位クロックツリーの数は多くなる。逆に、下位クロックツリーで許容されるレベル数が多ければ、下位クロックツリーの数は少なくなる。
【００５１】
コンピュータシステム
図８は、本明細書に記載のいくつかの実施形態に従い、コンピュータシステムを示す。コンピュータシステム８０２は、プロセッサ８０４と、メモリ８０６と、記憶装置８０８とを含み得る。コンピュータシステム８０２は、表示装置８１４、キーボード８１０、およびポインティングデバイス８１２に結合し得る。記憶装置８０８は、オペレーティングシステム８１６、アプリケーション８１８、およびデータ８２０を格納し得る。データ８２０は、アプリケーション８１８が要求する入力、および／またはアプリケーション８１８が生成した出力を含み得る。
【００５２】
コンピュータシステム８０２は、自動的に（またはユーザとの対話により）、この開示において暗示的または明示的に記載されている１つ以上の動作を実行する。具体的には、動作中、コンピュータシステム８０２は、アプリケーション８１８をメモリ８０６にロードすることができる。次にアプリケーション８１８を用いてＯＣＶおよびタイミング臨界を意識したＣＴＳを実行することができ、および／または二重構造ＣＴＳを実行することができる。
【００５３】
結論
上記説明は、当業者が本実施形態を実施し使用することを可能にするために示されている。開示されている実施形態に対するさまざまな変更が当業者には容易に明らかになるであろう。また、本明細書で規定されている一般原理は、本開示の精神および範囲から外れることなく他の実施形態および応用例に適用可能である。よって、本発明は、示されている実施形態に限定されるのではなく、本明細書に開示されている原理および特徴と矛盾しない最も広い範囲に一致するはずである。
【００５４】
この開示に記載されているデータ構造およびコードは、その一部またはすべてを、コンピュータ読取可能な記憶媒体および／またはハードウェアモジュールおよび／またはハードウェア装置に格納することができる。コンピュータ読取可能な記憶媒体は、揮発性メモリ、不揮発性メモリ、磁気および光記憶装置たとえばディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多目的ディスクまたはデジタルビデオディスク）に、または、コードおよび／またはデータを格納することができる現在知られているまたは後に開発されるその他の媒体を含むが、これらに限定されない。この開示に記載されているハードウェアモジュールまたは装置は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、専用または共用プロセッサ、および／または現在知られているまたは後に開発されるその他のハードウェアモジュールまたは装置を含むが、これらに限定されない。
【００５５】
この開示に記載されている方法およびプロセスは、その一部またはすべてを、コンピュータ読取可能な記憶媒体または装置に格納されたコードおよび／またはデータとして実現することにより、コンピュータシステムがこのコードおよび／またはデータを読出して実行したときにコンピュータシステムが関連する方法およびプロセスを実行するようにしてもよい。この方法およびプロセスはまた、その一部またはすべてを、ハードウェアモジュールまたは装置で実現することにより、ハードウェアモジュールまたは装置が起動されたときにこれらが関連する方法およびプロセスを実行するようにしてもよい。なお、これら方法およびプロセスは、コード、データ、およびハードウェアモジュールまたは装置の組合わせを用いて実施することができる。
【００５６】
本発明の実施形態の上記説明は、専ら例示と説明を目的として示されている。上記説明はすべてを網羅することを意図している訳でも、本発明を開示された形態に限定することを意図している訳でもない。したがって、数多くの変更および変形が当業者には明らかであろう。加えて、上記開示は本発明を限定することを意図したものではない。本発明の範囲は以下の請求項によって定義される。
【図１】
0006333948.tif 000005
【図２】
0006333948.tif 000006
【図３Ａ】
0006333948.tif 000007
【図３Ｂ】
0006333948.tif 000008
【図４】
0006333948.tif 000009
【図５】
0006333948.tif 000010
【図６】
0006333948.tif 000011
【図７】
0006333948.tif 000012
【図８】
0006333948.tif 000013