(57)【要約】【課題】可変駆動能力クロックドライバによって構成されたクロック分配ネットワークの製作にかかる費用および時間を削減する。【解決手段】集積回路の設計をチューニングするシステムであって、プロセッサと、集積回路の設計にインスタンス化されたマクロセルの集合を生成する合成モジュールであって、集積回路の設計が前記集積回路の容量性負荷を駆動する複数のドライバを有する、合成モジュールと、マクロセルのそれぞれの入力ネットリストおよび出力ネットリストの位置を選択し、位置を印付ける端子を生成し、端子の名前およびマクロセルのピンの名前を決定する配置配線モジュールと、所定の判定基準に従って前記複数のドライバの容量性負荷の均衡を図ることによって、集積回路をチューニングする検証モジュールとを備える。【選択図】図７
2015125779.tif 000002
【特許請求の範囲】
【請求項１】
チューニング用の集積回路を準備する方法であって、
前記集積回路の設計にインスタンス化された複数のマクロセルの集合を生成することであって、前記集積回路の設計が前記集積回路上の容量性負荷を駆動する複数のドライバを有する、生成することと、
前記マクロセルのそれぞれの入力ネットリストおよび出力ネットリストの位置を選択し、前記位置を印付ける端子を生成することと、
前記端子の名前および前記マクロセルのピンの名前を決定することと、
所定の判定基準に従って前記複数のドライバの容量性負荷の均衡を図ることによって、前記集積回路を初期チューニングすることとを備えた、チューニング用集積回路準備方法。
【請求項２】
請求項１に記載の方法において、さらに、
配置配線（ＰｎＲ）ツールを用いて、前記集積回路の物理的ＤＢを開くことを含む、チューニング用集積回路準備方法。
【請求項３】
請求項２に記載の方法において、前記集積回路が、クロスリンクを含むクロックネットワークを備える、チューニング用集積回路準備方法。
【請求項４】
請求項３に記載の方法において、前記クロックネットワークが、クロックメッシュ、クロックツリーメッシュおよびハイブリッドツリーメッシュのうちの１つを備える、チューニング用集積回路準備方法。
【請求項５】
請求項３に記載の方法において、前記集積回路のチューニングが、前記クロスリンクを追加することおよび削除することの任意の組合せを含む、チューニング用集積回路準備方法。
【請求項６】
請求項３に記載の方法において、前記マクロセルのそれぞれが、１つ以上の標準サイズの対応する基本セルのみを含む、チューニング用集積回路準備方法。
【請求項７】
請求項６に記載の方法において、さらに、
前記マクロセルのそれぞれを平坦化して、対応する基本セルを含むネットリストを生成することを備えた、チューニング用集積回路準備方法。
【請求項８】
請求項７に記載の方法において、前記集積回路のチューニングは、回路シミュレーション中に、前記端子の前記名前と前記マクロセルのピンの前記名前とを用いて、前記基本セルを再度組み合わせて対応するマクロセルにすることを含む、チューニング用集積回路準備方法。
【請求項９】
請求項８に記載の方法において、さらに、
前記端子の前記名前と前記マクロセルの前記名前とをファイルに格納することを備えた、チューニング用集積回路準備方法。
【請求項１０】
請求項８に記載の方法において、さらに、
前記端子の前記名前と前記マクロセルのピンの名前とを対応する端子の名前に埋め込むことを備えた、チューニング用集積回路準備方法。
【請求項１１】
請求項１０に記載の方法において、さらに、
端子の物理的位置情報を、対応する端子の名前に埋め込むことを備えた、チューニング用集積回路準備方法。
【請求項１２】
請求項１に記載の方法において、さらに、
前記集積回路のネットリストに刺激を導入し、前記マクロセルの入力および出力における回路パラメータを測定することを備えた、チューニング用集積回路準備方法。
【請求項１３】
請求項１２に記載の方法において、チューニングが、前記集積回路のシミュレーション中に測定された１つ以上のパラメータを均一化することを含む、チューニング用集積回路準備方法。
【請求項１４】
請求項１３に記載の方法において、前記１つ以上のパラメータは、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む、チューニング用集積回路準備方法。
【請求項１５】
請求項１４に記載の方法において、チューニングが、終了条件が満たされるまで前記マクロセルをサイズ変更することを含む、チューニング用集積回路準備方法。
【請求項１６】
請求項１５に記載の方法において、前記終了条件は、前記マクロセルのサイズが目標サイズと等しくなること、測定されたスリューが所定の範囲内であること、サイズ変更の回数が所定の限度に達したこと、またはこれらの任意の組合せを含む、チューニング用集積回路準備方法。
【請求項１７】
請求項１６に記載の方法において、サイズ変更は、以下の式に基づく、チューニング用集積回路準備方法。
New_size＝Current_size＊（１＋（Current_slew−Target_slew）／（Target_slew））
ここで、New_sizeは、あるマクロセルの新たなサイズであり、Current_sizeは、当該マクロセルの現在のサイズであり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
【請求項１８】
請求項１６に記載の方法において、サイズ変更は、以下の式に基づく、チューニング用集積回路準備方法。
New_size＝Current_size＊（１＋（Current_slew−Target_slew）／（Current_slew））
ここで、New_sizeは、あるマクロセルの新たなサイズであり、Current_sizeは、当該マクロセルの現在のサイズであり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
【請求項１９】
集積回路の設計をチューニングするシステムであって、
プロセッサと、
前記集積回路の設計にインスタンス化されたマクロセルの集合を生成する合成モジュールであって、前記集積回路の設計が前記集積回路の容量性負荷を駆動する複数のドライバを有する、合成モジュールと、
前記マクロセルのそれぞれの入力ネットリストおよび出力ネットリストの位置を選択し、前記位置を印付ける端子を生成し、前記端子の名前および前記マクロセルのピンの名前を決定する配置配線モジュールと、
所定の判定基準に従って前記複数のドライバの容量性負荷の均衡を図ることによって、前記集積回路をチューニングする検証モジュールとを備えた、集積回路設計チューニングシステム。
【請求項２０】
請求項１９に記載のシステムにおいて、さらに、
前記合成モジュールに接続されたマクロセルライブラリを備え、
当該マクロセルライブラリは標準サイズの基本セルのみを含む、集積回路設計チューニングシステム。
【請求項２１】
請求項２０に記載のシステムにおいて、前記集積回路は、クロスリンクを含むクロックネットワークを備える、集積回路設計チューニングシステム。
【請求項２２】
請求項２１に記載のシステムにおいて、前記クロックネットワークは、クロックメッシュ、クロックツリーメッシュおよびハイブリッドツリーメッシュのうちの１つを備える、集積回路設計チューニングシステム。
【請求項２３】
請求項２１に記載のシステムにおいて、前記合成モジュールは、さらに、前記マクロセルのそれぞれを平坦化して、対応する基本セルを含むネットリストを生成し、前記検証モジュールは、さらに、回路シミュレーション中に、前記端子の前記名前と前記マクロセルのピンの名前とを用いて、前記基本セルを再度組み合わせて対応するマクロセルにする、集積回路設計チューニングシステム。
【請求項２４】
請求項２３に記載のシステムにおいて、さらに、
前記集積回路のネットリストに対して刺激を導入し、前記マクロセルの入力および出力における回路パラメータを測定する、シミュレーションモジュールを備えた、集積回路設計チューニングシステム。
【請求項２５】
請求項２４に記載のシステムにおいて、前記合成モジュールは、さらに、前記集積回路のシミュレーション中に測定された１つ以上のパラメータを均一化することによって、前記集積回路の設計をチューニングする、集積回路設計チューニングシステム。
【請求項２６】
請求項２５に記載のシステムにおいて、前記１つ以上のパラメータは、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む、集積回路設計チューニングシステム。
【請求項２７】
請求項２６に記載のシステムにおいて、前記合成モジュールは、終了条件が満たされるまで前記基本セルをサイズ変更することによって、前記集積回路をチューニングするように構成される、集積回路設計チューニングシステム。
【請求項２８】
請求項２７に記載のシステムにおいて、前記終了条件は、前記マクロセルのサイズが目標サイズと等しくなること、測定されたスリューが所定の範囲内であること、前記マクロセルのサイズ変更の回数が所定の限度に達したこと、またはこれらの組合せを含む、集積回路設計チューニングシステム。
【請求項２９】
請求項２７に記載のシステムにおいて、前記マクロセルのサイズ変更は、回路シミュレーションパラメータに基づく、集積回路設計チューニングシステム。
【請求項３０】
請求項２９に記載のシステムにおいて、前記回路シミュレーションパラメータは、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む、集積回路設計チューニングシステム。
【請求項３１】
請求項２７に記載のシステムにおいて、サイズ変更は、以下の式に基づく、集積回路設計チューニングシステム。
New_size = Current_size* (1 + (Current_slew-Target_slew)/(Target_slew))
New_size＝Current_size＊（１＋（Current_slew−Target_slew）／（Target_slew））
ここで、New_sizeは、あるマクロセルの新たなサイズであり、Current_sizeは、当該マクロセルの現在のサイズであり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
【請求項３２】
請求項２７に記載のシステムにおいて、サイズ変更は、以下の式に基づく、集積回路設計チューニングシステム。
New_size＝Current_size＊（１＋（Current_slew−Target_slew）／（Current_slew））
ここで、New_sizeは、あるマクロセルの新たなサイズであり、Current_sizeは、当該マクロセルの現在のサイズであり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
【請求項３３】
クロック分配ネットワークを備えた半導体装置であって、当該クロック分配ネットワークは、
標準サイズの基本セルのみを含むマクロセルから構成された複数のクロック駆動素子を備え、
前記マクロセルのそれぞれについて、対応する前記基本セルが当該マクロセルとの相対的な所定の配置に従って配置され、さらに、前記マクロセルが、シミュレーション中に１つ以上の回路シミュレーションパラメータに従ってサイズ変更されている、半導体装置。
【請求項３４】
請求項３３に記載の半導体装置において、前記１つ以上の回路シミュレーションパラメータが、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む、半導体装置。
【請求項３５】
請求項３３に記載の半導体装置において、前記クロック分配ネットワークは、クロックツリー、クロックメッシュ、またはハイブリッドツリーメッシュを備えた、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路に関し、さらに詳細には、半導体装置上のクロック分配ネットワークに関する。
【背景技術】
【０００２】
半導体装置が適切に機能するには、当該半導体装置は、フリップフロップ、ラッチおよびメモリなどの並列な「シーケンシャル素子（逐次素子）」に対して、ほぼ同時にクロック信号を分配しなければならない。クロック信号が異なるタイミングでこれら並列素子に到着した場合、「クロックスキュー」が生じることにより、セットアップ違反やホールド違反を含む様々な問題が発生し、半導体装置内で伝送されるデータの整合性が危険にさらされる可能性がある。
【０００３】
大規模半導体装置は、当該装置上の素子に対してクロック信号を分配するクロック分配ネットワークを用いてスキューを低減する。クロック信号の立ち上がり時間および立ち下がり時間が設計要件を満たすことを確実にするために、ＣＭＯＳインバータまたはＣＭＯＳバッファは一定の間隔で挿入される。（インバータやバッファはクロック分配ネットワークにおいて同様の機能をもつので、本願においてこれらの用語は互換的に用いられ、クロックドライバまたはクロック駆動素子とも称す。）ネットワークは、複数の箇所で分岐するかもしれない。クロックネットワークの分岐やクロックのＣＭＯＳインバータの挿入は、クロックスキューの増加の原因となる。クロックスキューは、他の理由、例えば、構造上の問題、クロック分配ネットワークにおける負荷のばらつき、処理のばらつき、インバータの電圧や温度のばらつき、およびクロック分配ネットワークでの相互接続における他の影響、によっても増加し得る。
【０００４】
クロックスキューを低減するために用いられる一構成として、クロックメッシュがある。クロックメッシュは、クロック分配ネットワークにおけるインバータからの出力を短絡させるために、クロスリンクと呼ばれる相互接続素子を導入する。これらクロスリンクは、短絡電力消費を生じるが、クロック駆動素子間でのクロック信号の遅延を低減し、それによりクロックスキューを低減する。クロックスキューを低減するために用いられる第２の構成として、図１Ａ，１Ｂに示すハイブリッドツリーメッシュ１００のような、ハイブリッドツリーメッシュがある。図１Ａに示す、ハイブリッドツリーメッシュ１００のメッシュ部分は、リブ（rib）１２０および１３０を支持するスパイン（spine）１１０と、リブ１２０上のインバータ１２１Ａ〜Ｄと、リブ１２０および１３０上のクロック駆動素子を結合するクロスリンク１２１および１２２と、非直線（non-rectilinear）クロックメッシュ領域１４０とを備える。図１Ａは、リブ１２０および１３０に沿った素子間のクロスリンクを示すが、他の構成においては、クロスリンクは、クロック分配ネットワークにおける別の位置または別の位置の組合せ、例えば、クロック分配ネットワーク内のようなクロック分配ネットワークの一端、またはリブ１２０および１３０に沿った素子間と、前記一端との両方に挿入される。メッシュ部分１００は、図１Ｂに示す階層的バイナリツリー構造１５０により駆動される。階層的バイナリツリー構造１５０において、クロック駆動素子１４５（レベルＬ２）は、４つのクロック駆動素子１２０Ａ〜Ｃ（レベルＬ１）を駆動し、クロック駆動素子１６０（レベルＬ３）は素子１４５とレベルＬ２の他の素子を駆動する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
図１Ａ，１Ｂは、図面の簡略化のため、数個の、インバータ、リブおよびクロスリンクを示すが、クロック分配ネットワークは、典型的に、何十万ものこれら構成要素を有し、数千のクロック受信素子（シーケンシャル素子）に対してクロック信号を向ける。これら素子は、図１Ａの非直線要素１４０のような他の構造と同様に、クロック分配ネットワークに対して様々な負荷となり、スキューが増加する。
【０００６】
短絡電力低減のためには、出力が短絡されたインバータの入力間のスキューを可能な限り低く保つことが重要である。つまり、設計時におけるクロック分配ネットワークの構造的スキューを低減することが重要である。クロスリンクによって出力が短絡された、クロック分配ネットワークにおけるインバータが互いに同じ負荷特性を有することを保証するのは、不可能かもしれない。そのため、構造的スキューを低減するように、チューナブルクロックインバータが必要となる。クロックインバータは、大きい負荷を駆動するものが大きい駆動能力を持ち、小さい負荷を駆動するものが小さい駆動能力をもつように、チューニングされる。ハイブリッドツリーメッシュ型クロック分配ネットワークの最終段において、負荷は、フリップフロップ密度や非直線クロックメッシュ領域のばらつきを含む様々な理由によって、大幅にばらつく可能性がある。
【０００７】
様々な有効駆動能力を生成するために、チューナブルクロックインバータは、複数の基本セルを組み合わせてそれら基本セルの出力を接続または分離して、構成されてもよい。このようにして、入力容量は変化せずに出力駆動能力のみが変化し、これにより、クロックネットワークのチューニングをより容易にかつ予測可能にすることができる。チューナブルクロックインバータを形成する方法の１つとして、基本セルを組み合わせて１つのマクロセルを形成し、必要に応じてこのマクロセルを使用する。このアプローチの欠点の１つは、当該マクロセルが、電子設計自動化（ＥＤＡ）ツールにより、物理的設計のすべてのレベルを通して単一セルとして扱われることである。この場合、当該マクロセルの、トランジスタレベルでの正確な抽出および特徴付けが要求される。また、当該マクロセルを単一セルとして維持するために、このセルに対して、タイミングＤＢ、物理的セルビュー、ＬＶＳネットリスト、および他の付帯的要素を生成しなければならない。しかしながら、マクロセルをそれらの構成要素である基本セルに分割すると、マクロセルを使用するクロック分配ネットワークのチューニングを極めて困難にする可能性がある。
【課題を解決するための手段】
【０００８】
本発明の第１の構成において、チューニングのための集積回路を作成（準備）する方法は、前記集積回路の設計（デザイン）にインスタンス化されたマクロセルの集合を生成することであって、前記集積回路の設計が前記集積回路上の容量性負荷を駆動するドライバを含む、生成することと、前記マクロセルそれぞれの入力ネットリストおよび出力ネットリストの位置を選択し、前記位置を印付ける端子を生成することと、前記端子の名前および前記マクロセルのピンの名前を決定することと、所定の判定基準に従って前記ドライバ上の容量性負荷の均衡を図ることによって、前記集積回路を初期チューニングすることとを含む。
【０００９】
一実施形態において、前記方法は、また、配置配線（ＰｎＲ）ツールを用いて、前記集積回路の物理的ＤＢを開くことを含む。前記集積回路は、クロスリンクを含むクロックネットワークを備える。いくつかの例として、前記クロックネットワークは、クロックメッシュ、クロックツリーメッシュ、またはハイブリッドツリーメッシュを備える。前記クロックネットワークは、前記クロスリンクを追加すること、前記クロスリンクを削除すること、またはこれら両方によりチューニングされる。
【００１０】
一実施形態において、前記マクロセルは、それぞれ、１つ以上の標準サイズの対応する基本セルのみを含む。一実施形態において、前記方法は、また、前記マクロセルのそれぞれを平坦化して、対応する基本セルを含むネットリストを生成することを含む。前記集積回路のチューニングは、回路シミュレーション中に、前記の前記名前と前記マクロセルのピンの名前とを用いて、前記基本セルを再度組合せて対応するマクロセルにすることを含む。好ましくは、前記端子の前記名前と前記マクロセルの前記名前とはファイルに格納される。あるいは、前記端子の前記名前と前記マクロセルのピンの名前とは、対応する端子の名前に埋め込まれる。一実施形態において、端子の物理的位置情報も、対応する端子の名前に埋め込まれる。
【００１１】
一実施形態において、前記方法は、また、前記集積回路のネットリストに刺激（stimulus）を導入し、前記マクロセルの入力（入力部）および出力（出力部）における回路パラメータを測定することを含む。前記チューニングは、前記集積回路のシミュレーション中に測定された１つ以上のパラメータを均一化することを含む。いくつかの例として、前記１つ以上のパラメータは、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む。
【００１２】
好ましくは、前記チューニングは、終了条件が満たされるまで前記マクロセルをサイズ変更することを含む。終了条件のいくつかの例は、マクロセルのサイズが目標サイズと等しいこと、測定されたスリューが所定の範囲内であること、サイズ変更の回数が所定の限度に達したこと、またはこれらの任意の組合せを含む。一実施形態において、サイズ変更は、以下の式に基づく：
New_size＝Current_size＊（1＋（Current_slew−Target_slew）／（Target_slew））
ここで、New_sizeは、あるマクロセルの新たなサイズであり、Current_sizeは、当該マクロセルの現在のサイズであり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。他の実施形態では、サイズ変更は以下の式に基づく：
New_size＝Current_size＊（1＋（Current_slew−Target_slew）／（Current_slew））
ここで、New_sizeは、あるマクロセルの新たなサイズであり、Current_sizeは、当該マクロセルの現在のサイズであり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
【００１３】
本発明の第２の構成において、集積回路設計をチューニングするシステムは、プロセッサと、前記集積回路の設計（デザイン）にインスタンス化されたマクロセルの集合を生成する合成モジュールであって、前記集積回路の設計が前記集積回路の容量性負荷を駆動する複数のドライバを有する、合成モジュールと、前記マクロセルのそれぞれの入力ネットリストおよび出力ネットリストの位置を選択し、前記位置を印付けるための端子を生成し、前記端子の名前および前記マクロセルのピンの名前を決定する配置配線モジュールと、所定の判定基準に従って前記複数のドライバの容量性負荷の均衡を図ることによって、前記集積回路をチューニングする検証モジュールとを備える。前記システムは、さらに、前記合成モジュールに接続されたマクロセルライブラリを備え、当該マクロセルライブラリは標準サイズのマクロセルのみを含む。一実施形態において、前記集積回路は、クロスリンクを含むクロックネットワークを備える。いくつかの例として、前記クロックネットワークは、クロックメッシュ、クロックツリーメッシュまたはハイブリッドツリーメッシュを備える。
【００１４】
本発明の第３の構成において、クロック分配ネットワークを備えた半導体装置は、標準サイズの基本セルのみを含むマクロセルから構成されたクロック駆動素子を備える。前記マクロセルのそれぞれについて、対応する前記基本セルが当該マクロセルとの相対的な所定の配置に基づいて配置される。さらに、前記マクロセルが、シミュレーション中に１つ以上の回路シミュレーションパラメータに従ってサイズ変更されている。いくつかの例として、前記１つ以上の回路シミュレーションパラメータが、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む。いくつかの例として、前記クロック分配ネットワークは、クロックツリー、クロックメッシュ、またはハイブリッドツリーメッシュを含む。
【００１５】
以下の図面は、発明の実施形態を示すために使用される。全ての図面において、同一の参照符号は同一または類似の構成要素を示す。
【図面の簡単な説明】
【００１６】
【図１Ａ】従来技術によるメッシュツリーハイブリッド型クロック分配ネットワークの一部分の上位概略図である。
【図１Ｂ】従来技術によるメッシュツリーハイブリッド型クロック分配ネットワークの一部分の上位概略図である。
【図２】クロック分配ネットワークに対して異なる負荷をとなるシーケンシャル素子を駆動する当該ネットワークの一部を示す概略図である。
【図３Ａ】本発明の原理に従って、標準サイズのセルをどのように組み合わせてクロック分配ネットワークをチューニングするかを示すために用いられる図である。
【図３Ｂ】本発明の原理に従って、標準サイズのセルをどのように組み合わせてクロック分配ネットワークをチューニングするかを示すために用いられる図である。
【図３Ｃ】本発明の原理に従って、標準サイズのセルをどのように組み合わせてクロック分配ネットワークをチューニングするかを示すために用いられる図である。
【図３Ｄ】本発明の原理に従って、標準サイズのセルをどのように組み合わせてクロック分配ネットワークをチューニングするかを示すために用いられる図である。
【図４】本発明の実施形態に従った、６４×の能力をもつクロックインバータのプログラミングを示す半導体装置レイアウトである。
【図５】本発明の実施形態に従った、３２×の能力をもつクロックインバータのプログラミングを示す半導体装置レイアウトである。
【図６】本発明の実施形態に従った、０×の能力をもつクロックインバータのプログラミングを示す半導体装置レイアウトである。
【図７】本発明の一実施形態に従った、クロック分配ネットワークにおけるクロック駆動素子の結合を含む、デジタル設計フローのステップを示すフローチャートである。
【図８】本発明の一実施形態に従った、標準サイズのクロック駆動素子を組み合わせるプロセスのステップを示すフローチャートである。
【図９Ａ】本発明の一実施形態に従ってどのようにしてチューナブルクロックインバータを構成するかを示すＶｅｒｉｌｏｇ（ヴェリログ）ネットリストの一部であって、図９Ｂに続くものである。
【図９Ｂ】図９Ａに続く、Ｖｅｒｉｌｏｇネットリストの別の一部であって、図９Ｃに続くものである。
【図９Ｃ】図９Ｂに続く、Ｖｅｒｉｌｏｇネットリストのさらに別の一部である。
【図１０Ａ】本発明の一実施形態に従ってどのようにしてチューナブルクロックインバータを構成するかを示すＶｅｒｉｌｏｇネットリストの一部であって、図１０Ｂに続くものである。
【図１０Ｂ】図１０Ａに続く、Ｖｅｒｉｌｏｇネットリストの別の一部である。
【図１１】本発明の一実施形態に従って半導体レイアウト内にセルを配置するステップを示すフローチャートである。
【図１２】本発明の一実施形態に従ってセル間の相互接続を配線するステップを示すフローチャートである。
【図１３】本発明の一実施形態に従った、マクロセル用の入力配線を示す概略図である。
【図１４】本発明の一実施形態に従った、マクロセル用の出力配線を示す概略図である。
【図１５】本発明の一実施形態に従った、配置配線されたチューニング用クロック分配ネットワークの物理的ＤＢを用意するプロセスのステップを示すフローチャートである。
【図１６】本発明の一実施形態に従って上記デジタル設計フローを行うための設計ツールのブロック図である。
【発明を実施するための形態】
【００１７】
本発明の原理に基づいて、チューナブルクロックドライバ（調整可能クロックドライバ）のソフトマクロセルが、電子設計自動化（ＥＤＡ）プロセスのＲＴＬステージ（ＲＴＬレベル）において生成される。ＥＤＡプロセスフローにおけるすべてのツールが、当該セルをその構成要素である基本セルに分割し、これにより、当該マクロセルのためのタイミングＤＢ、物理的セルビュー、ＬＶＳネットリスト、および他の付帯的要素を維持することを不要とする。
【００１８】
本発明によれば、チューナブルクロックドライバのソフトマクロを生成するが、マクロセルは上記フローを通して維持されるものではない。ソフトマクロは、ＲＴＬステージおよびセルをその構成要素である基本セルに分割するためにフローで使用されるツールにおいて生成され、これにより当該マクロセルのためのタイミングＤＢ、物理的セルビュー、ＬＶＳネットリスト、および他の付帯的要素を維持することを不要とする。
【００１９】
以下の記載において、第１に、スタンダードセルライブラリからのマクロセルをどのように組み合わせて、クロック分配ネットワークにおけるクロック受信素子を駆動するための駆動能力信号の調整可能（チューナブル）範囲を生成するかについて説明する。第２に、これらマクロセルをどのように配置配線するかについて説明する。第３に、マクロセルにより構築されたこれらクロックネットワークを、本発明の原理に基づいてどのようにチューニングするかについて説明する。
【００２０】
＜標準サイズのマクロセルのみを用いたクロック分配ネットワークの生成＞
本発明の原理に基づいて、半導体装置クロック分配ネットワークは、当該装置上のシーケンシャル（クロック受信）素子の駆動に必要な駆動能力にかかわらず、標準サイズのインバータのみを使用する。カスタムサイズのインバータを作成あるいは第三者から購入する必要がないので、設計プロセスが従来技術のプロセスよりも安価になる。さらに、これら標準サイズのインバータは徹底的にテストされており、予想通りに機能するので、これらクロック分配ネットワークを用いて半導体装置をデバッギングする時間が短縮され、製品をより早く市場に提供することができる。
【００２１】
一例として、電子設計自動化中に、クロック受信要素のための駆動能力が判定される。システムは、カスタムサイズのＣＭＯＳインバータの組合せを、それらの結合された駆動能力が当該シーケンシャル素子を駆動するには十分大きく、しかも短絡電力を最小化するには十分小さくなるように、判定する。そして、カスタムサイズの構成要素の組合せをシミュレートし、その後、対応するインバータを配置配線して物理的半導体装置を形成する。得られたクロックインバータは、低いスキューを保ちながら単一の半導体装置上の種々の負荷を駆動する。クロックインバータは、また、広い駆動能力の範囲と、低いスキューを保つための十分な細分性とを有する。
【００２２】
一実施形態では、上記標準サイズのインバータ（あるいは、他の「クロック駆動」素子）は、０×、８×、１２×および１６×の駆動能力を有する。これらインバータは、０×、８×、１２×、１６×、２０×（８×＋１２×）、２４×（１２×＋１２×）、２８×（２０×＋８×）、３２×（１６×＋１６×）、３６×（８×＋１２×＋１６×）、４０×（８×＋１６×＋１６×）、４４×（１２×＋１６×＋１６×）、４８×（１６×＋１６×＋１６×）、５２×（８×＋１２×＋１６×＋１６×）、５６×（８×＋１６×＋１６×＋１６×）および６４×（１６×＋１６×＋１６×＋１６×）の駆動能力を有するチューナブルインバータを形成するように組み合わせられ得る。上記の値を生成するために他のインバータ駆動能力を組み合わせてもよいことを理解されたい。例えば、駆動能力２４×は、駆動能力８×を有する３つのインバータにより生成することができる。好ましくは、駆動能力は、最小の数のインバータを組合せることにより決定される。言い換えれば、一例では、駆動能力Ｄは、以下の式（１）に基づいてインバータを結合することにより決定される。
DX ＝ ８×＊a＋１２×＊b＋１６×＊c       式（１）
ここで、ａ＋ｂ＋ｃ（インバータの総数）は最少にされる。本発明の原理によれば、他の設計制約を用いて、他の選択基準を用いることもできる。
【００２３】
インバータを組合せて種々のグループとすることにより、クロック分配ネットワークは、所定範囲の値を有する「一群の（ganged）」インバータを生成し得る。本例では、インバータは、０×（例えば、対称性のためだけにダミー負荷が必要な場合）から６４×の範囲内の任意の値であって、０×、８×、１２×、１６×〜５６×（増加単位４×）、および６４×の値を取ることができる。異なる標準サイズのインバータを用いて、他の範囲の信号強度を他の増加単位で生成してもよいことを理解されたい。
【００２４】
図２は、３つの異なる負荷Ｌ１、Ｌ２およびＬ３を駆動するクロック分配ネットワーク２００の一部を模式的に示す。クロックネットワーク２００は、マイクロプロセッサのような任意の半導体装置の一部を形成し得る。半導体装置２００の合成中に、負荷値Ｌ１、Ｌ２およびＬ３が判定される。本例では、フリップフロップ密度や非直線クロックメッシュのばらつきのため、値Ｌ１、Ｌ２およびＬ３は互いに異なる。当業者であれば、他の理由により負荷がばらつく可能性があることを理解するであろう。
【００２５】
負荷Ｌ１は駆動能力２０×のクロック信号を必要とし、負荷Ｌ２は駆動能力２４×のクロック信号を必要とし、負荷Ｌ３は駆動能力５２×のクロック信号を必要とする。クロック分配ネットワークのインバータは、駆動能力値がそれぞれ８×、１２×および１６×の標準サイズのセルのみを用いて作成される。駆動能力２０×のクロック信号は、駆動能力８×、１２×をそれぞれもつ２つの標準サイズのインバータの組合せつまり「一群化」によって生成される。駆動能力２４×のクロック信号は、駆動能力８×、１６×をそれぞれもつ２つの標準サイズのインバータの組合せによって生成される。駆動能力５２×のクロック信号は、駆動能力１６×、１６×、１２×、８×をそれぞれもつ４つの標準サイズのインバータの組合せによって生成される。本例では、上記合成ステップの後、シミュレーションステップ、タイミング分析ステップ、配置配線ステップ、抽出ステップおよび検証ステップを行う。
【００２６】
図３Ａ〜Ｄは、標準セルライブラリの３種類のセルのみ（駆動能力が８×、１２×および１６×（図３Ａ））をどのように組み合わせて、駆動能力が２０×（図３Ｂ）、３２×（図３Ｃ）および５２×（図３Ｄ）のセルを生成するかについて、ほんの数例の可能な組合せを示す。
【００２７】
一実施形態では、すべての標準サイズのインバータは、半導体装置の１つ以上の層上に形成される。これらインバータは、ＶＩＡプログラミングによって、すなわち、インバータを共にシーケンシャル素子を駆動する出力ピンに電気的に結合するバイアを追加または削除することによって、組合せつまり「チューニング」される。図１Ｂを参照し、このようなチューニングは、クロック分配ネットワークにおける上流素子（例えば、１４５および１６０）には影響しない。
【００２８】
一実施形態では、基本セルは、「ＶＩＡ３４プログラミング」を用いて、チューナブルクロックインバータを形成するように組み合わせられる。基本セルは、半導体装置の隣り合わせに並ぶ列に配置されている。これら列は、一の列の上に他の列が位置し、出力ネットに接続された半導体装置の金属層４（Ｍ４）のストラップを引き込む。Ｍ４ストラップは、より上位の金属層を介して順に接続され得る。このようにして、基本セルの出力は、金属層３（Ｍ３）からＭ４へバイアを挿入または除去することによって、出力ネットに対して接続または分離され得る。他の金属層およびバイアはすべて接続されないままである。このようにして、２層（Ｍ３およびＭ４）間においてバイア（ＶＩＡ３４）を追加または除去するだけで、クロックインバータの駆動能力をチューニングすることができる。
【００２９】
図４〜６は、それぞれ、駆動能力が６４×、３２×および０×であるクロックインバータのＶＩＡ３４プログラミングを示すレイアウトであり、Ｍ４における同一の（基本の）標準サイズのクロックセルと、Ｍ３における、各セルのために複数の出力ピンとを用いている。各レイアウトは、左側に、Ｍ４における１６×、１２×、８×、１２×および１６×のインバータと、右側に、Ｍ３における各インバータの出力ピンと、インバータを対応する出力ピンに電気的に結合させる、Ｍ３とＭ４の間のバイアとを含む。
【００３０】
図４は、例えば、すべてのＭ３出力ピン（４１０Ｂ、４２０Ｂ、４３０Ｂ、４４０Ｂ、４５０Ｂ）をすべての１６×、１２×、８×、１２×および１６×のインバータ（４１０Ａ、４２０Ａ、４３０Ａ、４４０Ａ、４５０Ａ）に接続するようプログラムされたバイア４８０を有するレイアウト４００であり、これにより１６×＋１２×＋８×＋１２×＋１６×（つまり６４×）の組合せ駆動能力を有する出力ピン上のクロック信号を生成する。図５は、２つのＭ３出力ピン（５１０Ｂおよび５５０Ｂ）を対応する２つの１６×インバータ（５１０Ａおよび５５０Ａ）の出力に接続するようにプログラムされたバイア５８０を有するレイアウト５００であり、これにより１６×＋１６×（つまり３２×）の組合せ駆動能力を有するクロック信号を生成する。図６は、Ｍ３出力ピンを１６×、１２×、８×、１２×および１６×のインバータに接続するバイア６８０が除去されたレイアウト６００であり、これにより駆動能力が０×（ダミー）のクロックインバータを形成する。当業者であれば、他のクロック強度をもつクロック信号を生成するためにクロック素子を組み合わせる他のＶＩＡ３４プログラミングを想到できるであろう。
【００３１】
図７は、本発明の実施形態に従って使用される、対応するハードウェア構成要素を有する半導体装置のためのデジタル設計フローのステップ７００を示すフローチャートである。ハードウェア記述言語およびＶｅｒｉｌｏｇ／ＶＨＤＬライブラリ７５０を用いた設計解析、設計仕様および設計実装が、それぞれ、ステップ７０１、７０５および７１０で行われる。合成ステップは、標準セルライブラリ７５５を用いてステップ７１５にて行われる。このステップでは、多くのサブステップを含み得るが、クロック分配ネットワークおよびシーケンシャル要素を含む上記構成要素の構築ブロックが合成される。クロック分配ネットワークは、標準サイズのセルのみを用いて合成される。このステージでは、論理回路が決定される。合成ステップ７１５の出力はネットリストであり、装置および各装置間の相互接続を示すＡＳＣＩＩファイルである。シミュレーションは、上記ネットリストを用いてステップ７２０にて行われ、設計を検証し、仕様通りでない場合は、ステップ７１０へループバックする。仕様通りであれば、ステップ７２５のタイミング解析へと進み、例えば、スキューを判定する。ステップ７２５の後、ステップ７３０にて配置配線が行われ、ステップ７３５にて抽出、すなわち性能に悪影響を与える構成要素の抽出および検査が行われ、ステップ７４０において検証、すなわち装置の製造または最適化や変更のために設計が修正される。設計を変更すべき場合は、ステップ７１５へループバックする。
【００３２】
図７に示すように、タイミング解析ステップ７２５はタイミング用ルックアップテーブル７６０にアクセスし、配置配線ステップ７３０はレイアウト値用Ｔｅｃｈファイル７６５にアクセスし、抽出ステップ７３５はＲＣ寄生抽出用Ｔｅｃｈファイル７７０にアクセスする。
【００３３】
ステップ７００は、本発明の一実施形態の例示に過ぎないことを理解されたい。他の実施形態では、ほんの数例を挙げれば、他のステップが追加され、いくつかのステップは組み合わされ、連続するステップは異なる順序で行われる。
【００３４】
図８は、図７の標準セルライブラリ７５５に格納された標準セルインバータを判定するステップ８００を示す。プロセスのこのステージでは、合成ステップ７１５、検証ステップ７４０、またはその他のステップと同様に、各クロックインバータの負荷（ひいては、所要または「目標の」駆動能力）が既に決定されている。開始ステップ８０１において、目標駆動能力により駆動される第１のクロック受信素子が選択される。ステップ８０３では、上記式１に示されたような適切なクロック駆動能力を生成するために、標準セルライブラリに格納された標準サイズのマクロセルの組合せが判定される。そして、ステップ８０５では、これらインバータが組合せまたは「一群化」されて、図４〜６に示すようなＶＩＡプログラミングを用いて目標駆動能力を生成する。ステップ８０７では、設計（デザイン）中に他のクロック受信素子があるか否かを判定し、もしあれば、ステップ８０３へループバックする。もし無ければ、ステップ８０９にてプロセスを終了する。
【００３５】
ステップ８００は、本発明の一実施形態の例示に過ぎないことを理解されたい。他の実施形態では、ほんの数例を挙げれば、他のステップが追加され、いくつかのステップは組み合わされ、連続するステップは異なる順序で行われる。
【００３６】
図９は、本発明の一実施形態に基づいて、チューナブルクロックインバータがどのように構成されるかを示すＶｅｒｉｌｏｇネットリスト９００である。ネットリスト９００は、その出力を短絡するクロスリンクを有するクロックインバータを備えたバイナリツリーの構成を示す。本例のマクロセルは、標準セルライブラリからの駆動能力が８×、１２×および１６×のクロックインバータセルのみを用いて、０×、８×、１２×、１６×、２０×、２４×、２８×、３２×、３６×、４０×、４４×、４８×、５２×、５６×および６４×の駆動能力を実現する。これらは、１つのクロックステーションを形成するように接続される。１つのメッシュクロック分配ネットワークは、１つのクロックメッシュを共に駆動する１つ以上の上記クロックステーションからなる。本例では、チューナブルクロックインバータは、ｘｐ＿ｃｋｉｎｖｘ０、ｘｐ＿ｃｋｉｎｖｘ８、ｘｐ＿ｃｋｉｎｖｘ１２、ｘｐ＿ｃｋｉｎｖｘ１６、ｘｐ＿ｃｋｉｎｖｘ２０、ｘｐ＿ｃｋｉｎｖｘ２４、ｘｐ＿ｃｋｉｎｖｘ２８、ｘｐ＿ｃｋｉｎｖｘ３２、ｘｐ＿ｃｋｉｎｖｘ３６、ｘｐ＿ｃｋｉｎｖｘ４０、ｘｐ＿ｃｋｉｎｖｘ４４、ｘｐ＿ｃｋｉｎｖｘ４８、ｘｐ＿ｃｋｉｎｖｘ５２、ｘｐ＿ｃｋｉｎｖｘ５６およびｘｐ＿ｃｋｉｎｖｘ６４であり、それぞれ、０×、８×、１２×、１６×、２４×、２８×、３２×、３６×、４０×、４４×、４８×、５２×、５６×および６４×の駆動能力を表す。これらチューナブルクロックインバータを構成するために使用される基本標準セルは、２つのｓｔｄｃｅｌｌ＿ｃｋｉｎｖ＿ｘ１６セル、２つのｓｔｄｃｅｌｌ＿ｃｋｉｎｖ＿ｘ１２セル、および１つのｓｔｄｃｅｌｌ＿ｃｋｉｎｖ＿ｘ８セルである。上記ｓｔｄｃｅｌｌ＿ｃｋｉｎｖ＿ｘ１６セル、ｓｔｄｃｅｌｌ＿ｃｋｉｎｖ＿ｘ１２セル、およびｓｔｄｃｅｌｌ＿ｃｋｉｎｖ＿ｘ８セルは、それぞれ、標準セルライブラリからの１６×、１２×、および８×の駆動能力を有するクロックインバータを表す。入力ネットは「Ａ」であり、出力ネットは「Ｚ」である。
【００３７】
上記例はチューナブルインバータの構成を示すが、本発明は、バッファやその他任意の論理ゲートを備える他のセルにも展開し得る。また、基本標準セルの小さいセットを組み合わせてそれらの出力の接続をバイアの変更のみでプログラム可能にすることにより、チューナブルバッファまたはクロック駆動素子も構成し得る。
【００３８】
＜標準サイズのマクロセルの配置配線＞
図１０は、本発明の一実施形態による、クロスリンク付バイナリクロックツリーのＶｅｒｉｌｏｇネットリスト１０００であり、どのようにインスタンス名を配置情報で埋め込むかを示すために使用されるものである。モジュール「ｃｌｋｓｔａｔｉｏｎＳａｍｐｌｅ」は、上記チューナブルクロックインバータの１つを用いるクロックドライバからなるクロックステーションである。モジュール「ｃｌｋｓｔａｔｉｏｎＳａｍｐｌｅ」は、１つの入力「ｃｌｋ＿Ｌ５」および１つの出力「ｃｌｋ」を有する。出力ポートｃｌｋ＿Ｌ４およびｃｌｋ＿Ｌ３が、また、クロック分配の中間ノードのために追加され得る。ネットリストにこれらポートを追加すると、クロックステーションの各ステージにおいてチューニングが容易になる。また、クロックステーションにおいてインスタンス化された各クロックインバータのインスタンス名は、その内部に、クロックステーションにおけるドライバのレベル、さらには当該ドライバの配置の物理的なＸ座標およびＹ座標を有する。本例では、ｘＬ２で始まるすべてのインスタンス名が、クロックステーションの最終（リーフ）ステージを示す。ｘＬ２ドライバはｘＬ３ドライバにより駆動され、ｘＬ３ドライバはｘＬ４ドライバにより駆動される。Ｘ座標およびＹ座標は、インスタンス名の内部にあり、ドライバのレベル番号の後に記載される。例えば、インスタンス、
ｘｐ＿ｃｋｉｎｖｘ６４  ｘＬ３＿５０９４ｐ６００＿８ｐ１００  （．Ａ（ｃｌｋ＿Ｌ４），Ｚ（ｃｌｋ_Ｌ３))；
は、駆動能力が６４×のドライバであって、ドライバレベルが３で、Ｘ座標が５０９４．６でＹ座標が８．１の位置に配置され、入力ネットｃｌｋ＿Ｌ４および出力ネットｃｌｋ＿Ｌ３を有するものを示す。インスタンス名（レベルと物理的な座標情報を有する）は、レイアウトおよびチューニングフローにおいて、以下に述べる役割を果たす。
【００３９】
クロックステーションのレイアウトのために、ネットリストはＰｎＲ（Ｐｌａｃｅ−ａｎｄ−Ｒｏｕｔｅ）ツールに読み込まれ、セルの一部である物理的座標情報が配置を導くために使用される。例えば、セルｘＬ３＿５０９４ｐ６００＿８ｐ１００は、５つのセルｘｉｎｖ１、ｘｉｎｖ２、ｘｉｎｖ３、ｘｉｎｖ４およびｘｉｎｖ５からなるマクロセルｘｐ＿ｃｋｉｎｖｘ６４のインスタンスである。ネットリストがＰｎＲツールに読み込まれると、ＰｎＲツールは、１つの物理的セルの一部として認識する代わりに、以下の５つの基本セルを認識する。
ｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ１
ｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ２
ｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ３
ｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ４
ｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ５
これら５つのセルを一緒に配置するために、配置情報はインスタンス名に埋め込まれ、最初に、セルｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ５を（Ｘ，Ｙ）座標５０９４．６，８．１の中心に、あるいは若干ずらして（オフセットして）配置する。次に、セルｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ４を、セルｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ５よりも１標準セル列（あるいは、標準セル列の整数倍）だけ上方に配置する。その後、ｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ３、ｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ２、およびｘＬ３＿５０９４ｐ６００＿８ｐ１００／ｘｉｎｖ１をそれぞれ上方に配置する。あるいは、上記セルは、同じ列に隣同士に並べて配置されてもよい。また、いくつかのセルがある列に、他のセルが別の列にというように配置されてもよい。セル同士がオーバラップせず、各マクロセルにおいて基本セルの相対的位置関係が同じである限り、セルの配置はどのようなものであってもよい。これは、マクロセルの配線を確定的なものとするために必要である。このようにマクロセル内において各基本セルを相対的に配置すると、当該基本セルの入力ピンの位置および出力ピンの位置が確実にわかるようになる。
【００４０】
図１１は、本発明の一実施形態による、マクロセル内にすべての基本セルを配置するプロセスのステップ１１００を示す。ステップ１１０１において、クロックステーション設計（デザイン）においてインスタンス化されたすべてのマクロセルの集合を生成する。次に、ステップ１１０５において、当該集合におけるすべてのマクロセルインスタンスをループし、インスタンス名から（Ｘ，Ｙ）座標情報を抽出する。次に、ステップ１１１０において、マクロセル内の基本セルを検索し、ステップ１１０５にて決定された（Ｘ，Ｙ）座標からの固定の相対位置またはオフセット位置に配置する。
【００４１】
すべてのセルが配置されると、これらセルは固有化（uniquified）され、物理的ＤＢにリンクされる。これは、Ｓｙｎｏｐｓｙｓ社製のＩＣ  Ｃｏｍｐｌｉｅｒ  ＰｎＲツールにおいて、以下のコマンドを用いて達成される：
ｕｎｉｑｕｉｆｙ＿ｆｐ＿ｍｗ＿ｃｅｌ
ｌｉｎｋ
ｌｉｎｋ＿ｐｈｙｓｉｃａｌ＿ｌｉｂｒａｒｙ
【００４２】
セルの入力および出力の配線も、インスタンス名およびＶｅｒｉｌｏｇネットリストを用いて導かれる。この配線は、配置情報を用い、セル同士を接続する。これは、マクロセル内の各基本セルの配置が、当該セルのインスタンス名に組み込まれた（Ｘ，Ｙ）座標からの既知のオフセット位置であることによってのみ可能となる。
【００４３】
図１２は、本発明の一実施形態による、配線のプロセスのステップ１２００を示す。ステップ１２０１において、クロックステーション設計（デザイン）においてインスタンス化されたすべてのマクロセルの集合が生成される。次に、ステップ１２０５において、当該集合におけるすべてのマクロセルインスタンスをループし、インスタンス名から（Ｘ，Ｙ）座標情報を抽出する。次に、ステップ１２１０において、各基本セルのピン配置が検索される。次に、ステップ１２１５において、ステップ１２０５からの配置情報を用いて、基本セルのインスタンスのためのピンの位置が算出され、各ピンのオフセットを算出する。次に、ステップ１２２０において、物理的ルートが生成されて、マクロセル内のすべての基本セルの入力ピンを互いに接続し、マクロセルの入力の相互接続を助けるために１つ以上の位置を端子で印付ける。次に、ステップ１２２５において、物理的ルートが生成されて、マクロセル内のすべての基本セルの出力ピンを互いに接続し、マクロセルの出力の相互接続を助けるために１つ以上の位置を端子で印付ける。次に、ステップ１２３０において、マクロセルの入力および出力が、ネットリストにおける結合性に従って接続される。最後に、ステップ１２３５において、低スキューを保つためにルート長の均衡が保たれる。
【００４４】
一実施形態では、ステップ１１００および１２００は、図７のステップ７３０中に行われる。
【００４５】
図１３および１４は、本発明の一実施形態による、入力配線１３００および出力配線１４００を説明するために用いられる構造１３００および１４００をそれぞれ示す。構造１３００は、駆動能力が１６×（１３０１および１３２０）、１２×（１３０５および１３１５）ならびに８×（１３１０）の標準セルと、Ｍ３入力ピンをＭ４ストラップに接続するＶＩＡ３４バイア（１３８０）と、マクロセルの入力として印付けられたＭ４上の入力端子（１３９０）とを示す。構造１４００は、駆動能力が１６×（１４０１および１４２０）、１２×（１４０５および１４１５）および８×（１４１０）の標準サイズのセルと、１６×インバータ（１４４５および１４６５）、１２×インバータ（１４５０および１４６０）および８×インバータ（１４５５）の出力ピンと、Ｍ３出力を、ＶＩＡスタックを介して接続するＭ８ストラップ（１４７０）と、Ｍ８出力ワイヤを接続するＭ９ストラップ（１４３０）と、マクロセルの出力として印付けられたＭ９上の出力端子（１４２５）とを示す。
【００４６】
図１３および１４の例では、マクロセル内の基本セルは、単一の列において、一の基本セルの上に他の基本セルが配置されている。他の配置も可能であるが、異なる入力・出力配線パターンを要する。マクロセル内における各基本セル（ひいては、入力ピンおよび出力ピン）の配置は当該マクロセルのインスタンス名に埋め込まれた（Ｘ，Ｙ）座標に対して同じであるので、すべてのマクロセルは同一（あるいは同様）の配線パターンを有する。
【００４７】
図１３および１４は、インスタンス名に埋め込まれた物理的位置情報を用いて、どのようにしてインバータが配置配線され得るか、また、どのようにしてこれらインバータを１つのマクロセルとして論理的に動作させながら、物理的ＤＢにおいては複数の基本セルとして表現され得るかを示す。この構造は、バッファやその他任意の論理ゲートを備える他のセルにも展開し得る。また、チューナブルバッファまたはクロック駆動素子もまた同様に配置配線され得る。
【００４８】
＜クロックネットワークのチューニング＞
本発明の一実施形態では、それぞれ基本セルの小さいセットからなる複数のマクロセルにより構築されたクロックネットワークを、当該マクロセルをそれらの基本セルに分割しながらチューニングする。一実施形態では、このチューニングは以下の前提に基づく：
Ａ１．各マクロセルのソフトマクロが、レジスタトランジスタロジック（ＲＴＬ）ステージにて生成される。
Ａ２．上記複数のマクロセルが配置配線され、固定されたマクロセルの配置配線により物理的ＤＢが入手可能となる。
Ａ３．クロックネットワークにおいてインスタンス化された上記マクロセルのインスタンス名は、レベル情報（クロックツリーでのレベル）および固有の識別子（例えば、物理的位置は固有の識別子として使用可能である）を埋め込んでいる。
【００４９】
再び、本例のマクロセルが示されたネットリスト９００を参照する。ネットリスト９００は、クロスリンク付クロックバイナリークロックツリーを示す。上記説明のように、クロックステーションにおいてインスタンス化された各クロックドライバ（クロック駆動素子）のインスタンス名は、その内部に、クロックステーションにおけるそのドライバ（駆動素子）のレベル、およびそのドライバの配置の物理的なＸ座標およびＹ座標を有する。これにより、上記第３の前提Ａ３のように、インスタンス名は固有である。
【００５０】
図１５は、本発明の一実施形態による、配置配線されたチューニング用クロック分配ネットワークの物理的ＤＢを用意するために使用されるステップ１５００を示す。ステップ１５０１において、クロックネットワーク（またはクロックステーション）の物理的ＤＢがＰｎＲツールにおいて開かれる。次に、ステップ１５０３において、各マクロセルの入力ネット上の位置が選択され、この位置を印付けるための端子が生成される。次に、ステップ１５０５において、各マクロセルの出力ネット上の位置が選択され、この位置を印付けるための端子が生成される。この位置は、当該マクロセルに極めて近接した領域または当該マクロセル上の領域において、選択され得る。次に、ステップ１５０７において、生成されたすべての端子について、端子名およびマクロセルピン名のリストが、例えばファイルなどに、保持される。必要に応じて、マクロセルピンの方向も保持される。あるいは、これら情報は、端子名が生成される時に端子名に埋め込まれる。物理的位置情報も保持され得る。最後に、ステップ１５０９において、クロックメッシュにおいてクロスリンクを追加または削除して当該メッシュの各ドライバ上の容量性負荷について可能な限り均衡を図ることにより、クロックメッシュが初期チューニングされる。この初期チューニングは、ワイヤ長、またはクロックメッシュの各ドライバにより駆動される推定相互接続容量を単に比較するだけで（ワイヤ長と推定相互接続容量の２つのパラメータのみを例示）、シミュレーション無しで行い得る。図１３および１４は、それぞれ、図１５におけるステップ１５０３および１５０５が行われた後の物理的ＤＢを示す。
【００５１】
ステップ１５０９の後、物理的配線情報（相互接続の抵抗と容量）が、抽出ツールを用いて抽出される。抽出ツールは、ステップ１５０５および１５０７において物理的ＤＢに生成された端子を保存するものである。抽出ツールは、ネットリストを生成し、当該ネットリストはクロックネットワークのシミュレーションおよびチューニングに使用される。マクロセルはソフトマクロとしてのみ生成されマクロセル上にはその物理的なレイアウトビューは存在しないので、抽出ツールはマクロセルを平坦化し、基本セルを用いてネットリストを生成することになる。表１に、抽出されたネットリストにおけるマクロセルの基本セルの一例を示す。
【００５２】
表１
XxL3_5905p600_8p100/xinv1 clk_L4:F44 clk_L3:F52 VDD VSS std_cell_ckinvx16
XxL3_5905p600_8p100/xinv2 clk_L4:F80 clk_L3:F87 VDD VSS std_cell_ckinvx12
XxL3_5905p600_8p100/xinv3 clk_L4:F09 clk_L3:F14 VDD VSS std_cell_ckinvx8
XxL3_5905p600_8p100/xinv4 clk_L4:F30 clk_L3:F37 VDD VSS std_cell_ckinvx12
XxL3_5905p600_8p100/xinv5 clk_L4:F59 clk_L3:F67 VDD VSS std_cell_ckinvx16
【００５３】
これらマクロセルを使用するクロック分配ネットワークのチューニングにおいて、回路シミュレーション中に、これらセルを再度組み合わせる必要がある。基本セルをマクロセルに再度組み合わせる能力を有しない場合は、チューニングフローは、クロック分配ネットワークのリレーアウトおよび再抽出を伴うであろう。この場合、チューニングフローは行いにくくなり、繰り返し回数が制限されてしまう可能性がある。表２はこれを示し、表１の基本セルがどのようにしてチューニングのためにマクロセルに取り込まれる（collapsed）を示す。
【００５４】
表２
XxL3_5905p600_8p100 clk_L4_in1 clk_L3_out1 VDD VSS xp_ckinv64
【００５５】
１５０３および１５０５にて生成された端子は、抽出されたネットリストで取り込まれたマクロセルを接続するために用いられる。表２の例では、ｃｌｋ＿Ｌ４＿ｉｎ１はステップ１５０３で生成された端子であり、ｃｌｋ＿Ｌ３＿ｏｕｔ１は、ステップ１５０５で生成された端子である。これら端子は、マクロセルの上に（物理的に）位置するように、またはマクロセルに極めて近接して（物理的に）位置するように、選択される。この情報は、（各端子をマクロセルピン名にマッピングするファイルを生成する、または端子の物理的位置を含む）ステップ１５０７より入手可能である。あるいは、この情報は、端子名自体に埋め込まれている。ある実施形態では、チューニングされるマクロセルの取込みを行うためにスクリプトが使用される。同時に、クロックネットワークのネットリストへの刺激を生成するためのファイル、および、マクロセルの入力および出力における種々の回路パラメータを測定するための測定ステートメント（測定明細）を生成するためのファイルが生成され得る。各マクロセルの入力および出力は端子により印付けられているので（例えば、ステップ１５０３および１５０５）、測定ステートメントはこれら端子において生成され得る。いくつかの単なる例として、測定は、遅延、スリュー、電荷、電流、またはこれらパラメータの任意の組合せを含む。
【００５６】
一実施形態において、クロック配分における同レベルのすべてのドライバの出力での遅延とスリューの均衡を図るために、クロックネットワークは、いくつかのマクロセルの有効駆動能力を変えることによってチューニングされる。このチューニングは、回路シミュレーションツール（例えば、Ｈｓｐｉｃｅ）を使用して行われる。また、クロックネットワークは、回路シミュレーションの間に測定された、１つ以上のパラメータを比較して均一化を試みることによってチューニングされ得る。いくつかの例として、これらパラメータは、遅延、スリュー、電流、または電荷を含む。以下の単なる例では、パラメータとしてスリューが用いられる。しかし、任意の他のパラメータまたはパラメータの組合せを用いてもよい。
【００５７】
本例では、「Ｔａｒｇｅｔ＿ｓｌｅｗ」が、特定のマクロセルの出力のための目標スリュー値であり、「Ｃｕｒｒｅｎｔ＿ｓｌｅｗ」が、そのマクロセルの出力での回路シミュレーションで測定されたスリューである。「Ｃｕｒｒｅｎｔ＿ｓｉｚｅ」は、当該マクロセルの現在のサイズ（または駆動能力）である。式（２）は、スリュー測定に基づいてクロックネットワークをチューニングするためのマクロセルの新たなサイズを導出するために用いられる。
New_size＝Current_size＊（１＋（Current_slew−Target_slew）／（Target_slew））
式（２）
【００５８】
異なる実施形態では、マクロセルの新たなサイズを導出するために、以下の式（３）のような異なる式が用いられる。
New_size＝Current_size＊（１＋（Current_slew−Target_slew）／（Current_slew））
式（３）
【００５９】
他の実施形態では、テーブル索引が用いられて、測定されたスリュー値を索引し、テーブルから新たなセルサイズを決定する。異なるセルサイズが異なる範囲のスリュー値に関連付け可能である。
【００６０】
新たなセルサイズが算出されると、これら新たなセルサイズは、シミュレーションに使用されるネットリストに組み込まれる。そして、新たなセルサイズをもつクロックネットワークが再度シミュレートされ、セルのサイズ変更の影響が検証される。スリュー（または他の測定値）がまだ目標値に達してなければ、再度セルのサイズ変更が行われる。これは、終了条件が満たされるまで繰り返される。いくつかの例として、終了条件は、以下の１つ以上の終了条件を含む：
すべてのマクロセルについて、Ｎｅｗ＿ｓｉｚｅ＝Ｃｕｒｒｅｎｔ＿ｓｉｚｅである。
スリュー（または他の任意の測定値）が、目標値からのユーザ定義範囲内である。
繰り返し回数がユーザ定義限度に達している。
【００６１】
当業者であれば、本発明の原理に基づいて、他の終了条件および終了条件の組合せが使用可能であることを理解するであろう。
【００６２】
終了条件が満たされると、すべての新たなサイズは、シミュレーション用の回路ネットリストおよびクロックネットワーク用ＲＴＬネットリストにおいて更新される。新たなセルサイズは、クロックネットワークにおけるレイアウト（特に配線）に影響を与える。改訂されたＲＴＬネットリストは、レイアウト変更を誘導するために用いられる。
【００６３】
＜ハードウェア構成要素＞
図１６は、本発明の一実施形態による、電子設計ツール１６００のブロック図である。図７、８、１１、１２および１５を参照して、電子設計ツール１６００は、プロセッサ１６３０およびメモリ１６１０を備える。メモリ１６１０は、ステップ７００、８００、１１００、１２００および１５００を実行するためのコンピュータ実行可能指令１６１５と、データ７５０、７５５、７６０、７６５および７７０を含む領域１６２０とを含むコンピュータ読取可能媒体を格納する。
【００６４】
動作において、電子設計ツールは、クロック分配ネットワークを備えた半導体装置の製作に用いられる。クロック分配ネットワークにおけるシーケンシャル素子の負荷が判定され、駆動能力がクロック分配ネットワークのスキューを低減するように判定される。クロック分配ネットワーク上のインバータは、標準セルライブラリからの標準化されたセルつまり「基本」のセルにより形成され、これにより、クロック分配ネットワーク、ひいては半導体装置全体の製作にかかる費用および時間が削減される。有利には、これら基本セルは、ある数値範囲内で駆動能力を「チューニング」するために使用可能である。
【００６５】
配置配線中に基本セルを含むマクロセルはインスタンス化され、（Ｘ，Ｙ）座標情報がインスタンス名から抽出される。そして、マクロセル内の基本セルが、（Ｘ，Ｙ）座標からの固定された相対位置またはオフセット位置に配置される。次に、マクロセルは、以下の手順で配線される：クロックステーション設計においてインスタンス化されたマクロセルの集合を生成し；インスタンス名より（Ｘ，Ｙ）座標情報を抽出し；各基本セルのためのピン位置を取得し；（Ｘ，Ｙ）座標情報を用いてピンの位置を算出し；入力ピンをマクロセル内の基本セルと相互接続させるための物理的配線を生成し、１つ以上の位置を端子で印付けて複数のマクロセルの入力同士の接続を助け；マクロセル内のすべての基本セルの出力ピンを相互接続させるための物理的配線を生成し、１つ以上の位置を端子で印付けて複数のマクロセルの出力同士の接続を助け；マクロセルの入力と出力をネットリストにおける接続性に従って接続し；低いスキューを保つために複数のルート長の均衡を図る。
【００６６】
配置配線されたチューニング用クロック分配ネットワークの物理的ＤＢを用意するために、各マクロセルの入力ネットリストおよび出力ネットリストの位置が生成され、これら位置を印付けるために端子が選択される。生成されたすべての端子および端子名のリストに対して、マクロセルピン名、および必要に応じてピンの方向が、好ましくはファイルに保存される。あるいは、これら情報は、端子名の生成時に端子名に埋め込まれる。また、物理的位置が含められてもよい。次に、クロックメッシュにおいてクロスリンクを追加または削除して、当該メッシュの各ドライバの容量性負荷の均衡を図ることにより、クロックメッシュが初期チューニングされる。この初期チューニングは、ワイヤ長、またはクロックメッシュの各ドライバにより駆動される推定相互接続容量を単に比較することによってなし得る。
【００６７】
本発明に基づいて標準サイズのセルを結合しクロックステーションの配置配線をおこなう方法および装置は、N. Jayakumarらによる出願（発明の名称「System for and Method of Combining CMOS Inverters of Multiple Drive Strengths to Create Tune-able Clock Inverters of Variable Drive Strengths in Hybrid Tree-Mesh Clock Distribution Networks（ハイブリッドツリーメッシュクロック分配ネットワークにおける可変駆動力のチューニング可能なクロックインバータを生成するように複数の駆動力のＣＯＭＳインバータを組合せるシステムおよび方法）」）、［代理人整理番号：ＸＰＬ−００１００］、およびN. Jayakumarらによる出願（発明の名称「System for and Method of Placing and Routing Clock Stations Using Variable Drive-Strength Clock Drivers Built Out of a Smaller Subset of Base Cells for Hybrid Tree-Mesh Clock Distribution Networks」（ハイブリッドツリーメッシュクロック分配ネットワークの基本セルの小サブセットから構築された可変駆動力クロックドライバを用いてクロックステーションを配置配線するシステムおよび方法））、［代理人整理番号：ＸＰＬ−００２００］に記載されている。これら両文献は、参照によりその全文が援用される。
【００６８】
以上本発明の異なる実施形態について述べたが、これら実施形態の任意の数の組合せが可能であることを理解されたい。上記の実施形態は、本発明の例示にすぎず、その範囲を限定しようとするものではない。当業者であれば、添付の請求の範囲によって規定された本発明の要旨を逸脱することなく上記実施形態に変更を加えることが可能であることに容易に想到するであろう。
【図１Ａ】
2015125779.tif 000003
【図１Ｂ】
2015125779.tif 000004
【図２】
2015125779.tif 000005
【図３Ａ】
2015125779.tif 000006
【図３Ｂ】
2015125779.tif 000007
【図３Ｃ】
2015125779.tif 000008
【図３Ｄ】
2015125779.tif 000009
【図４】
2015125779.tif 000010
【図５】
2015125779.tif 000011
【図６】
2015125779.tif 000012
【図７】
2015125779.tif 000013
【図８】
2015125779.tif 000014
【図９Ａ】
2015125779.tif 000015
【図９Ｂ】
2015125779.tif 000016
【図９Ｃ】
2015125779.tif 000017
【図１０Ａ】
2015125779.tif 000018
【図１０Ｂ】
2015125779.tif 000019
【図１１】
2015125779.tif 000020
【図１２】
2015125779.tif 000021
【図１３】
2015125779.tif 000022
【図１４】
2015125779.tif 000023
【図１５】
2015125779.tif 000024
【図１６】
2015125779.tif 000025
【外国語明細書】
2015125779000001.pdf
2015125779000002.pdf
2015125779000003.pdf
2015125779000004.pdf