JP6544923B2 - 基本セルの小集合によって構築された可変駆動能力クロックドライバを備えた可変駆動能力クロックインバータを用いて構成されたクロックネットワークをチューニングするシステムおよび方法 - Google Patents

基本セルの小集合によって構築された可変駆動能力クロックドライバを備えた可変駆動能力クロックインバータを用いて構成されたクロックネットワークをチューニングするシステムおよび方法 Download PDF

Info

Publication number
JP6544923B2
JP6544923B2 JP2014263371A JP2014263371A JP6544923B2 JP 6544923 B2 JP6544923 B2 JP 6544923B2 JP 2014263371 A JP2014263371 A JP 2014263371A JP 2014263371 A JP2014263371 A JP 2014263371A JP 6544923 B2 JP6544923 B2 JP 6544923B2
Authority
JP
Japan
Prior art keywords
slew
cells
current
clock
integrated circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014263371A
Other languages
English (en)
Other versions
JP2015125779A (ja
Inventor
ニキル・ジャヤクマー
ヴィヴェック・トリヴェディ
ヴァサント・ケイ・パリセッティ
バガヴァティ・アール・ムーラ
ダマン・アルワリア
アミア・エイチ・モタメディ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cavium LLC
Original Assignee
Cavium Networks LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cavium Networks LLC filed Critical Cavium Networks LLC
Publication of JP2015125779A publication Critical patent/JP2015125779A/ja
Application granted granted Critical
Publication of JP6544923B2 publication Critical patent/JP6544923B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Architecture (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本発明は、集積回路に関し、さらに詳細には、半導体装置上のクロック分配ネットワークに関する。
半導体装置が適切に機能するには、当該半導体装置は、フリップフロップ、ラッチおよびメモリなどの並列な「シーケンシャル素子(逐次素子)」に対して、ほぼ同時にクロック信号を分配しなければならない。クロック信号が異なるタイミングでこれら並列素子に到着した場合、「クロックスキュー」が生じることにより、セットアップ違反やホールド違反を含む様々な問題が発生し、半導体装置内で伝送されるデータの整合性が危険にさらされる可能性がある。
大規模半導体装置は、当該装置上の素子に対してクロック信号を分配するクロック分配ネットワークを用いてスキューを低減する。クロック信号の立ち上がり時間および立ち下がり時間が設計要件を満たすことを確実にするために、CMOSインバータまたはCMOSバッファは一定の間隔で挿入される。(インバータやバッファはクロック分配ネットワークにおいて同様の機能をもつので、本願においてこれらの用語は互換的に用いられ、クロックドライバまたはクロック駆動素子とも称す。)ネットワークは、複数の箇所で分岐するかもしれない。クロックネットワークの分岐やクロックのCMOSインバータの挿入は、クロックスキューの増加の原因となる。クロックスキューは、他の理由、例えば、構造上の問題、クロック分配ネットワークにおける負荷のばらつき、処理のばらつき、インバータの電圧や温度のばらつき、およびクロック分配ネットワークでの相互接続における他の影響、によっても増加し得る。
クロックスキューを低減するために用いられる一構成として、クロックメッシュがある。クロックメッシュは、クロック分配ネットワークにおけるインバータからの出力を短絡させるために、クロスリンクと呼ばれる相互接続素子を導入する。これらクロスリンクは、短絡電力消費を生じるが、クロック駆動素子間でのクロック信号の遅延を低減し、それによりクロックスキューを低減する。クロックスキューを低減するために用いられる第2の構成として、図1A,1Bに示すハイブリッドツリーメッシュ100のような、ハイブリッドツリーメッシュがある。図1Aに示す、ハイブリッドツリーメッシュ100のメッシュ部分は、リブ(rib)120および130を支持するスパイン(spine)110と、リブ120上のインバータ121A〜Dと、リブ120および130上のクロック駆動素子を結合するクロスリンク121および122と、非直線(non-rectilinear)クロックメッシュ領域140とを備える。図1Aは、リブ120および130に沿った素子間のクロスリンクを示すが、他の構成においては、クロスリンクは、クロック分配ネットワークにおける別の位置または別の位置の組合せ、例えば、クロック分配ネットワーク内のようなクロック分配ネットワークの一端、またはリブ120および130に沿った素子間と、前記一端との両方に挿入される。メッシュ部分100は、図1Bに示す階層的バイナリツリー構造150により駆動される。階層的バイナリツリー構造150において、クロック駆動素子145(レベルL2)は、4つのクロック駆動素子120A〜C(レベルL1)を駆動し、クロック駆動素子160(レベルL3)は素子145とレベルL2の他の素子を駆動する。
図1A,1Bは、図面の簡略化のため、数個の、インバータ、リブおよびクロスリンクを示すが、クロック分配ネットワークは、典型的に、何十万ものこれら構成要素を有し、数千のクロック受信素子(シーケンシャル素子)に対してクロック信号を向ける。これら素子は、図1Aの非直線要素140のような他の構造と同様に、クロック分配ネットワークに対して様々な負荷となり、スキューが増加する。
短絡電力低減のためには、出力が短絡されたインバータの入力間のスキューを可能な限り低く保つことが重要である。つまり、設計時におけるクロック分配ネットワークの構造的スキューを低減することが重要である。クロスリンクによって出力が短絡された、クロック分配ネットワークにおけるインバータが互いに同じ負荷特性を有することを保証するのは、不可能かもしれない。そのため、構造的スキューを低減するように、チューナブルクロックインバータが必要となる。クロックインバータは、大きい負荷を駆動するものが大きい駆動能力を持ち、小さい負荷を駆動するものが小さい駆動能力をもつように、チューニングされる。ハイブリッドツリーメッシュ型クロック分配ネットワークの最終段において、負荷は、フリップフロップ密度や非直線クロックメッシュ領域のばらつきを含む様々な理由によって、大幅にばらつく可能性がある。
様々な有効駆動能力を生成するために、チューナブルクロックインバータは、複数の基本セルを組み合わせてそれら基本セルの出力を接続または分離して、構成されてもよい。このようにして、入力容量は変化せずに出力駆動能力のみが変化し、これにより、クロックネットワークのチューニングをより容易にかつ予測可能にすることができる。チューナブルクロックインバータを形成する方法の1つとして、基本セルを組み合わせて1つのマクロセルを形成し、必要に応じてこのマクロセルを使用する。このアプローチの欠点の1つは、当該マクロセルが、電子設計自動化(EDA)ツールにより、物理的設計のすべてのレベルを通して単一セルとして扱われることである。この場合、当該マクロセルの、トランジスタレベルでの正確な抽出および特徴付けが要求される。また、当該マクロセルを単一セルとして維持するために、このセルに対して、タイミングDB、物理的セルビュー、LVSネットリスト、および他の付帯的要素を生成しなければならない。しかしながら、マクロセルをそれらの構成要素である基本セルに分割すると、マクロセルを使用するクロック分配ネットワークのチューニングを極めて困難にする可能性がある。
本発明の第1の構成において、チューニングのための集積回路を作成(準備)する方法は、前記集積回路の設計(デザイン)にインスタンス化されたマクロセルの集合を生成することであって、前記集積回路の設計が前記集積回路上の容量性負荷を駆動するドライバを含む、生成することと、前記マクロセルそれぞれの入力ネットリストおよび出力ネットリストの位置を選択し、前記位置を印付ける端子を生成することと、前記端子の名前および前記マクロセルのピンの名前を決定することと、所定の判定基準に従って前記ドライバ上の容量性負荷の均衡を図ることによって、前記集積回路を初期チューニングすることとを含む。
一実施形態において、前記方法は、また、配置配線(PnR)ツールを用いて、前記集積回路の物理的DBを開くことを含む。前記集積回路は、クロスリンクを含むクロックネットワークを備える。いくつかの例として、前記クロックネットワークは、クロックメッシュ、クロックツリーメッシュ、またはハイブリッドツリーメッシュを備える。前記クロックネットワークは、前記クロスリンクを追加すること、前記クロスリンクを削除すること、またはこれら両方によりチューニングされる。
一実施形態において、前記マクロセルは、それぞれ、1つ以上の標準サイズの対応する基本セルのみを含む。一実施形態において、前記方法は、また、前記マクロセルのそれぞれを平坦化して、対応する基本セルを含むネットリストを生成することを含む。前記集積回路のチューニングは、回路シミュレーション中に、前記の前記名前と前記マクロセルのピンの名前とを用いて、前記基本セルを再度組合せて対応するマクロセルにすることを含む。好ましくは、前記端子の前記名前と前記マクロセルの前記名前とはファイルに格納される。あるいは、前記端子の前記名前と前記マクロセルのピンの名前とは、対応する端子の名前に埋め込まれる。一実施形態において、端子の物理的位置情報も、対応する端子の名前に埋め込まれる。
一実施形態において、前記方法は、また、前記集積回路のネットリストに刺激(stimulus)を導入し、前記マクロセルの入力(入力部)および出力(出力部)における回路パラメータを測定することを含む。前記チューニングは、前記集積回路のシミュレーション中に測定された1つ以上のパラメータを均一化することを含む。いくつかの例として、前記1つ以上のパラメータは、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む。
好ましくは、前記チューニングは、終了条件が満たされるまで前記マクロセルをサイズ変更することを含む。終了条件のいくつかの例は、マクロセルのサイズが目標サイズと等しいこと、測定されたスリューが所定の範囲内であること、サイズ変更の回数が所定の限度に達したこと、またはこれらの任意の組合せを含む。一実施形態において、サイズ変更は、以下の式に基づく:
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は、所定の目標スリューである。
本発明の第2の構成において、集積回路設計をチューニングするシステムは、プロセッサと、前記集積回路の設計(デザイン)にインスタンス化されたマクロセルの集合を生成する合成モジュールであって、前記集積回路の設計が前記集積回路の容量性負荷を駆動する複数のドライバを有する、合成モジュールと、前記マクロセルのそれぞれの入力ネットリストおよび出力ネットリストの位置を選択し、前記位置を印付けるための端子を生成し、前記端子の名前および前記マクロセルのピンの名前を決定する配置配線モジュールと、所定の判定基準に従って前記複数のドライバの容量性負荷の均衡を図ることによって、前記集積回路をチューニングする検証モジュールとを備える。前記システムは、さらに、前記合成モジュールに接続されたマクロセルライブラリを備え、当該マクロセルライブラリは標準サイズのマクロセルのみを含む。一実施形態において、前記集積回路は、クロスリンクを含むクロックネットワークを備える。いくつかの例として、前記クロックネットワークは、クロックメッシュ、クロックツリーメッシュまたはハイブリッドツリーメッシュを備える。
本発明の第3の構成において、クロック分配ネットワークを備えた半導体装置は、標準サイズの基本セルのみを含むマクロセルから構成されたクロック駆動素子を備える。前記マクロセルのそれぞれについて、対応する前記基本セルが当該マクロセルとの相対的な所定の配置に基づいて配置される。さらに、前記マクロセルが、シミュレーション中に1つ以上の回路シミュレーションパラメータに従ってサイズ変更されている。いくつかの例として、前記1つ以上の回路シミュレーションパラメータが、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む。いくつかの例として、前記クロック分配ネットワークは、クロックツリー、クロックメッシュ、またはハイブリッドツリーメッシュを含む。
以下の図面は、発明の実施形態を示すために使用される。全ての図面において、同一の参照符号は同一または類似の構成要素を示す。
従来技術によるメッシュツリーハイブリッド型クロック分配ネットワークの一部分の上位概略図である。 従来技術によるメッシュツリーハイブリッド型クロック分配ネットワークの一部分の上位概略図である。 クロック分配ネットワークに対して異なる負荷をとなるシーケンシャル素子を駆動する当該ネットワークの一部を示す概略図である。 本発明の原理に従って、標準サイズのセルをどのように組み合わせてクロック分配ネットワークをチューニングするかを示すために用いられる図である。 本発明の原理に従って、標準サイズのセルをどのように組み合わせてクロック分配ネットワークをチューニングするかを示すために用いられる図である。 本発明の原理に従って、標準サイズのセルをどのように組み合わせてクロック分配ネットワークをチューニングするかを示すために用いられる図である。 本発明の原理に従って、標準サイズのセルをどのように組み合わせてクロック分配ネットワークをチューニングするかを示すために用いられる図である。 本発明の実施形態に従った、64×の能力をもつクロックインバータのプログラミングを示す半導体装置レイアウトである。 本発明の実施形態に従った、32×の能力をもつクロックインバータのプログラミングを示す半導体装置レイアウトである。 本発明の実施形態に従った、0×の能力をもつクロックインバータのプログラミングを示す半導体装置レイアウトである。 本発明の一実施形態に従った、クロック分配ネットワークにおけるクロック駆動素子の結合を含む、デジタル設計フローのステップを示すフローチャートである。 本発明の一実施形態に従った、標準サイズのクロック駆動素子を組み合わせるプロセスのステップを示すフローチャートである。 本発明の一実施形態に従ってどのようにしてチューナブルクロックインバータを構成するかを示すVerilog(ヴェリログ)ネットリストの一部であって、図9Bに続くものである。 図9Aに続く、Verilogネットリストの別の一部であって、図9Cに続くものである。 図9Bに続く、Verilogネットリストのさらに別の一部である。 本発明の一実施形態に従ってどのようにしてチューナブルクロックインバータを構成するかを示すVerilogネットリストの一部であって、図10Bに続くものである。 図10Aに続く、Verilogネットリストの別の一部である。 本発明の一実施形態に従って半導体レイアウト内にセルを配置するステップを示すフローチャートである。 本発明の一実施形態に従ってセル間の相互接続を配線するステップを示すフローチャートである。 本発明の一実施形態に従った、マクロセル用の入力配線を示す概略図である。 本発明の一実施形態に従った、マクロセル用の出力配線を示す概略図である。 本発明の一実施形態に従った、配置配線されたチューニング用クロック分配ネットワークの物理的DBを用意するプロセスのステップを示すフローチャートである。 本発明の一実施形態に従って上記デジタル設計フローを行うための設計ツールのブロック図である。
本発明の原理に基づいて、チューナブルクロックドライバ(調整可能クロックドライバ)のソフトマクロセルが、電子設計自動化(EDA)プロセスのRTLステージ(RTLレベル)において生成される。EDAプロセスフローにおけるすべてのツールが、当該セルをその構成要素である基本セルに分割し、これにより、当該マクロセルのためのタイミングDB、物理的セルビュー、LVSネットリスト、および他の付帯的要素を維持することを不要とする。
本発明によれば、チューナブルクロックドライバのソフトマクロを生成するが、マクロセルは上記フローを通して維持されるものではない。ソフトマクロは、RTLステージおよびセルをその構成要素である基本セルに分割するためにフローで使用されるツールにおいて生成され、これにより当該マクロセルのためのタイミングDB、物理的セルビュー、LVSネットリスト、および他の付帯的要素を維持することを不要とする。
以下の記載において、第1に、スタンダードセルライブラリからのマクロセルをどのように組み合わせて、クロック分配ネットワークにおけるクロック受信素子を駆動するための駆動能力信号の調整可能(チューナブル)範囲を生成するかについて説明する。第2に、これらマクロセルをどのように配置配線するかについて説明する。第3に、マクロセルにより構築されたこれらクロックネットワークを、本発明の原理に基づいてどのようにチューニングするかについて説明する。
<標準サイズのマクロセルのみを用いたクロック分配ネットワークの生成>
本発明の原理に基づいて、半導体装置クロック分配ネットワークは、当該装置上のシーケンシャル(クロック受信)素子の駆動に必要な駆動能力にかかわらず、標準サイズのインバータのみを使用する。カスタムサイズのインバータを作成あるいは第三者から購入する必要がないので、設計プロセスが従来技術のプロセスよりも安価になる。さらに、これら標準サイズのインバータは徹底的にテストされており、予想通りに機能するので、これらクロック分配ネットワークを用いて半導体装置をデバッギングする時間が短縮され、製品をより早く市場に提供することができる。
一例として、電子設計自動化中に、クロック受信要素のための駆動能力が判定される。システムは、カスタムサイズのCMOSインバータの組合せを、それらの結合された駆動能力が当該シーケンシャル素子を駆動するには十分大きく、しかも短絡電力を最小化するには十分小さくなるように、判定する。そして、カスタムサイズの構成要素の組合せをシミュレートし、その後、対応するインバータを配置配線して物理的半導体装置を形成する。得られたクロックインバータは、低いスキューを保ちながら単一の半導体装置上の種々の負荷を駆動する。クロックインバータは、また、広い駆動能力の範囲と、低いスキューを保つための十分な細分性とを有する。
一実施形態では、上記標準サイズのインバータ(あるいは、他の「クロック駆動」素子)は、0×、8×、12×および16×の駆動能力を有する。これらインバータは、0×、8×、12×、16×、20×(8×+12×)、24×(12×+12×)、28×(20×+8×)、32×(16×+16×)、36×(8×+12×+16×)、40×(8×+16×+16×)、44×(12×+16×+16×)、48×(16×+16×+16×)、52×(8×+12×+16×+16×)、56×(8×+16×+16×+16×)および64×(16×+16×+16×+16×)の駆動能力を有するチューナブルインバータを形成するように組み合わせられ得る。上記の値を生成するために他のインバータ駆動能力を組み合わせてもよいことを理解されたい。例えば、駆動能力24×は、駆動能力8×を有する3つのインバータにより生成することができる。好ましくは、駆動能力は、最小の数のインバータを組合せることにより決定される。言い換えれば、一例では、駆動能力Dは、以下の式(1)に基づいてインバータを結合することにより決定される。
DX = 8×*a+12×*b+16×*c 式(1)
ここで、a+b+c(インバータの総数)は最少にされる。本発明の原理によれば、他の設計制約を用いて、他の選択基準を用いることもできる。
インバータを組合せて種々のグループとすることにより、クロック分配ネットワークは、所定範囲の値を有する「一群の(ganged)」インバータを生成し得る。本例では、インバータは、0×(例えば、対称性のためだけにダミー負荷が必要な場合)から64×の範囲内の任意の値であって、0×、8×、12×、16×〜56×(増加単位4×)、および64×の値を取ることができる。異なる標準サイズのインバータを用いて、他の範囲の信号強度を他の増加単位で生成してもよいことを理解されたい。
図2は、3つの異なる負荷L1、L2およびL3を駆動するクロック分配ネットワーク200の一部を模式的に示す。クロックネットワーク200は、マイクロプロセッサのような任意の半導体装置の一部を形成し得る。半導体装置200の合成中に、負荷値L1、L2およびL3が判定される。本例では、フリップフロップ密度や非直線クロックメッシュのばらつきのため、値L1、L2およびL3は互いに異なる。当業者であれば、他の理由により負荷がばらつく可能性があることを理解するであろう。
負荷L1は駆動能力20×のクロック信号を必要とし、負荷L2は駆動能力24×のクロック信号を必要とし、負荷L3は駆動能力52×のクロック信号を必要とする。クロック分配ネットワークのインバータは、駆動能力値がそれぞれ8×、12×および16×の標準サイズのセルのみを用いて作成される。駆動能力20×のクロック信号は、駆動能力8×、12×をそれぞれもつ2つの標準サイズのインバータの組合せつまり「一群化」によって生成される。駆動能力24×のクロック信号は、駆動能力8×、16×をそれぞれもつ2つの標準サイズのインバータの組合せによって生成される。駆動能力52×のクロック信号は、駆動能力16×、16×、12×、8×をそれぞれもつ4つの標準サイズのインバータの組合せによって生成される。本例では、上記合成ステップの後、シミュレーションステップ、タイミング分析ステップ、配置配線ステップ、抽出ステップおよび検証ステップを行う。
図3A〜Dは、標準セルライブラリの3種類のセルのみ(駆動能力が8×、12×および16×(図3A))をどのように組み合わせて、駆動能力が20×(図3B)、32×(図3C)および52×(図3D)のセルを生成するかについて、ほんの数例の可能な組合せを示す。
一実施形態では、すべての標準サイズのインバータは、半導体装置の1つ以上の層上に形成される。これらインバータは、VIAプログラミングによって、すなわち、インバータを共にシーケンシャル素子を駆動する出力ピンに電気的に結合するバイアを追加または削除することによって、組合せつまり「チューニング」される。図1Bを参照し、このようなチューニングは、クロック分配ネットワークにおける上流素子(例えば、145および160)には影響しない。
一実施形態では、基本セルは、「VIA34プログラミング」を用いて、チューナブルクロックインバータを形成するように組み合わせられる。基本セルは、半導体装置の隣り合わせに並ぶ列に配置されている。これら列は、一の列の上に他の列が位置し、出力ネットに接続された半導体装置の金属層4(M4)のストラップを引き込む。M4ストラップは、より上位の金属層を介して順に接続され得る。このようにして、基本セルの出力は、金属層3(M3)からM4へバイアを挿入または除去することによって、出力ネットに対して接続または分離され得る。他の金属層およびバイアはすべて接続されないままである。このようにして、2層(M3およびM4)間においてバイア(VIA34)を追加または除去するだけで、クロックインバータの駆動能力をチューニングすることができる。
図4〜6は、それぞれ、駆動能力が64×、32×および0×であるクロックインバータのVIA34プログラミングを示すレイアウトであり、M4における同一の(基本の)標準サイズのクロックセルと、M3における、各セルのために複数の出力ピンとを用いている。各レイアウトは、左側に、M4における16×、12×、8×、12×および16×のインバータと、右側に、M3における各インバータの出力ピンと、インバータを対応する出力ピンに電気的に結合させる、M3とM4の間のバイアとを含む。
図4は、例えば、すべてのM3出力ピン(410B、420B、430B、440B、450B)をすべての16×、12×、8×、12×および16×のインバータ(410A、420A、430A、440A、450A)に接続するようプログラムされたバイア480を有するレイアウト400であり、これにより16×+12×+8×+12×+16×(つまり64×)の組合せ駆動能力を有する出力ピン上のクロック信号を生成する。図5は、2つのM3出力ピン(510Bおよび550B)を対応する2つの16×インバータ(510Aおよび550A)の出力に接続するようにプログラムされたバイア580を有するレイアウト500であり、これにより16×+16×(つまり32×)の組合せ駆動能力を有するクロック信号を生成する。図6は、M3出力ピンを16×、12×、8×、12×および16×のインバータに接続するバイア680が除去されたレイアウト600であり、これにより駆動能力が0×(ダミー)のクロックインバータを形成する。当業者であれば、他のクロック強度をもつクロック信号を生成するためにクロック素子を組み合わせる他のVIA34プログラミングを想到できるであろう。
図7は、本発明の実施形態に従って使用される、対応するハードウェア構成要素を有する半導体装置のためのデジタル設計フローのステップ700を示すフローチャートである。ハードウェア記述言語およびVerilog/VHDLライブラリ750を用いた設計解析、設計仕様および設計実装が、それぞれ、ステップ701、705および710で行われる。合成ステップは、標準セルライブラリ755を用いてステップ715にて行われる。このステップでは、多くのサブステップを含み得るが、クロック分配ネットワークおよびシーケンシャル要素を含む上記構成要素の構築ブロックが合成される。クロック分配ネットワークは、標準サイズのセルのみを用いて合成される。このステージでは、論理回路が決定される。合成ステップ715の出力はネットリストであり、装置および各装置間の相互接続を示すASCIIファイルである。シミュレーションは、上記ネットリストを用いてステップ720にて行われ、設計を検証し、仕様通りでない場合は、ステップ710へループバックする。仕様通りであれば、ステップ725のタイミング解析へと進み、例えば、スキューを判定する。ステップ725の後、ステップ730にて配置配線が行われ、ステップ735にて抽出、すなわち性能に悪影響を与える構成要素の抽出および検査が行われ、ステップ740において検証、すなわち装置の製造または最適化や変更のために設計が修正される。設計を変更すべき場合は、ステップ715へループバックする。
図7に示すように、タイミング解析ステップ725はタイミング用ルックアップテーブル760にアクセスし、配置配線ステップ730はレイアウト値用Techファイル765にアクセスし、抽出ステップ735はRC寄生抽出用Techファイル770にアクセスする。
ステップ700は、本発明の一実施形態の例示に過ぎないことを理解されたい。他の実施形態では、ほんの数例を挙げれば、他のステップが追加され、いくつかのステップは組み合わされ、連続するステップは異なる順序で行われる。
図8は、図7の標準セルライブラリ755に格納された標準セルインバータを判定するステップ800を示す。プロセスのこのステージでは、合成ステップ715、検証ステップ740、またはその他のステップと同様に、各クロックインバータの負荷(ひいては、所要または「目標の」駆動能力)が既に決定されている。開始ステップ801において、目標駆動能力により駆動される第1のクロック受信素子が選択される。ステップ803では、上記式1に示されたような適切なクロック駆動能力を生成するために、標準セルライブラリに格納された標準サイズのマクロセルの組合せが判定される。そして、ステップ805では、これらインバータが組合せまたは「一群化」されて、図4〜6に示すようなVIAプログラミングを用いて目標駆動能力を生成する。ステップ807では、設計(デザイン)中に他のクロック受信素子があるか否かを判定し、もしあれば、ステップ803へループバックする。もし無ければ、ステップ809にてプロセスを終了する。
ステップ800は、本発明の一実施形態の例示に過ぎないことを理解されたい。他の実施形態では、ほんの数例を挙げれば、他のステップが追加され、いくつかのステップは組み合わされ、連続するステップは異なる順序で行われる。
図9は、本発明の一実施形態に基づいて、チューナブルクロックインバータがどのように構成されるかを示すVerilogネットリスト900である。ネットリスト900は、その出力を短絡するクロスリンクを有するクロックインバータを備えたバイナリツリーの構成を示す。本例のマクロセルは、標準セルライブラリからの駆動能力が8×、12×および16×のクロックインバータセルのみを用いて、0×、8×、12×、16×、20×、24×、28×、32×、36×、40×、44×、48×、52×、56×および64×の駆動能力を実現する。これらは、1つのクロックステーションを形成するように接続される。1つのメッシュクロック分配ネットワークは、1つのクロックメッシュを共に駆動する1つ以上の上記クロックステーションからなる。本例では、チューナブルクロックインバータは、xp_ckinvx0、xp_ckinvx8、xp_ckinvx12、xp_ckinvx16、xp_ckinvx20、xp_ckinvx24、xp_ckinvx28、xp_ckinvx32、xp_ckinvx36、xp_ckinvx40、xp_ckinvx44、xp_ckinvx48、xp_ckinvx52、xp_ckinvx56およびxp_ckinvx64であり、それぞれ、0×、8×、12×、16×、24×、28×、32×、36×、40×、44×、48×、52×、56×および64×の駆動能力を表す。これらチューナブルクロックインバータを構成するために使用される基本標準セルは、2つのstdcell_ckinv_x16セル、2つのstdcell_ckinv_x12セル、および1つのstdcell_ckinv_x8セルである。上記stdcell_ckinv_x16セル、stdcell_ckinv_x12セル、およびstdcell_ckinv_x8セルは、それぞれ、標準セルライブラリからの16×、12×、および8×の駆動能力を有するクロックインバータを表す。入力ネットは「A」であり、出力ネットは「Z」である。
上記例はチューナブルインバータの構成を示すが、本発明は、バッファやその他任意の論理ゲートを備える他のセルにも展開し得る。また、基本標準セルの小さいセットを組み合わせてそれらの出力の接続をバイアの変更のみでプログラム可能にすることにより、チューナブルバッファまたはクロック駆動素子も構成し得る。
<標準サイズのマクロセルの配置配線>
図10は、本発明の一実施形態による、クロスリンク付バイナリクロックツリーのVerilogネットリスト1000であり、どのようにインスタンス名を配置情報で埋め込むかを示すために使用されるものである。モジュール「clkstationSample」は、上記チューナブルクロックインバータの1つを用いるクロックドライバからなるクロックステーションである。モジュール「clkstationSample」は、1つの入力「clk_L5」および1つの出力「clk」を有する。出力ポートclk_L4およびclk_L3が、また、クロック分配の中間ノードのために追加され得る。ネットリストにこれらポートを追加すると、クロックステーションの各ステージにおいてチューニングが容易になる。また、クロックステーションにおいてインスタンス化された各クロックインバータのインスタンス名は、その内部に、クロックステーションにおけるドライバのレベル、さらには当該ドライバの配置の物理的なX座標およびY座標を有する。本例では、xL2で始まるすべてのインスタンス名が、クロックステーションの最終(リーフ)ステージを示す。xL2ドライバはxL3ドライバにより駆動され、xL3ドライバはxL4ドライバにより駆動される。X座標およびY座標は、インスタンス名の内部にあり、ドライバのレベル番号の後に記載される。例えば、インスタンス、
xp_ckinvx64 xL3_5094p600_8p100 (.A(clk_L4),Z(clk_L3));
は、駆動能力が64×のドライバであって、ドライバレベルが3で、X座標が5094.6でY座標が8.1の位置に配置され、入力ネットclk_L4および出力ネットclk_L3を有するものを示す。インスタンス名(レベルと物理的な座標情報を有する)は、レイアウトおよびチューニングフローにおいて、以下に述べる役割を果たす。
クロックステーションのレイアウトのために、ネットリストはPnR(Place−and−Route)ツールに読み込まれ、セルの一部である物理的座標情報が配置を導くために使用される。例えば、セルxL3_5094p600_8p100は、5つのセルxinv1、xinv2、xinv3、xinv4およびxinv5からなるマクロセルxp_ckinvx64のインスタンスである。ネットリストがPnRツールに読み込まれると、PnRツールは、1つの物理的セルの一部として認識する代わりに、以下の5つの基本セルを認識する。
xL3_5094p600_8p100/xinv1
xL3_5094p600_8p100/xinv2
xL3_5094p600_8p100/xinv3
xL3_5094p600_8p100/xinv4
xL3_5094p600_8p100/xinv5
これら5つのセルを一緒に配置するために、配置情報はインスタンス名に埋め込まれ、最初に、セルxL3_5094p600_8p100/xinv5を(X,Y)座標5094.6,8.1の中心に、あるいは若干ずらして(オフセットして)配置する。次に、セルxL3_5094p600_8p100/xinv4を、セルxL3_5094p600_8p100/xinv5よりも1標準セル列(あるいは、標準セル列の整数倍)だけ上方に配置する。その後、xL3_5094p600_8p100/xinv3、xL3_5094p600_8p100/xinv2、およびxL3_5094p600_8p100/xinv1をそれぞれ上方に配置する。あるいは、上記セルは、同じ列に隣同士に並べて配置されてもよい。また、いくつかのセルがある列に、他のセルが別の列にというように配置されてもよい。セル同士がオーバラップせず、各マクロセルにおいて基本セルの相対的位置関係が同じである限り、セルの配置はどのようなものであってもよい。これは、マクロセルの配線を確定的なものとするために必要である。このようにマクロセル内において各基本セルを相対的に配置すると、当該基本セルの入力ピンの位置および出力ピンの位置が確実にわかるようになる。
図11は、本発明の一実施形態による、マクロセル内にすべての基本セルを配置するプロセスのステップ1100を示す。ステップ1101において、クロックステーション設計(デザイン)においてインスタンス化されたすべてのマクロセルの集合を生成する。次に、ステップ1105において、当該集合におけるすべてのマクロセルインスタンスをループし、インスタンス名から(X,Y)座標情報を抽出する。次に、ステップ1110において、マクロセル内の基本セルを検索し、ステップ1105にて決定された(X,Y)座標からの固定の相対位置またはオフセット位置に配置する。
すべてのセルが配置されると、これらセルは固有化(uniquified)され、物理的DBにリンクされる。これは、Synopsys社製のIC Complier PnRツールにおいて、以下のコマンドを用いて達成される:
uniquify_fp_mw_cel
link
link_physical_library
セルの入力および出力の配線も、インスタンス名およびVerilogネットリストを用いて導かれる。この配線は、配置情報を用い、セル同士を接続する。これは、マクロセル内の各基本セルの配置が、当該セルのインスタンス名に組み込まれた(X,Y)座標からの既知のオフセット位置であることによってのみ可能となる。
図12は、本発明の一実施形態による、配線のプロセスのステップ1200を示す。ステップ1201において、クロックステーション設計(デザイン)においてインスタンス化されたすべてのマクロセルの集合が生成される。次に、ステップ1205において、当該集合におけるすべてのマクロセルインスタンスをループし、インスタンス名から(X,Y)座標情報を抽出する。次に、ステップ1210において、各基本セルのピン配置が検索される。次に、ステップ1215において、ステップ1205からの配置情報を用いて、基本セルのインスタンスのためのピンの位置が算出され、各ピンのオフセットを算出する。次に、ステップ1220において、物理的ルートが生成されて、マクロセル内のすべての基本セルの入力ピンを互いに接続し、マクロセルの入力の相互接続を助けるために1つ以上の位置を端子で印付ける。次に、ステップ1225において、物理的ルートが生成されて、マクロセル内のすべての基本セルの出力ピンを互いに接続し、マクロセルの出力の相互接続を助けるために1つ以上の位置を端子で印付ける。次に、ステップ1230において、マクロセルの入力および出力が、ネットリストにおける結合性に従って接続される。最後に、ステップ1235において、低スキューを保つためにルート長の均衡が保たれる。
一実施形態では、ステップ1100および1200は、図7のステップ730中に行われる。
図13および14は、本発明の一実施形態による、入力配線1300および出力配線1400を説明するために用いられる構造1300および1400をそれぞれ示す。構造1300は、駆動能力が16×(1301および1320)、12×(1305および1315)ならびに8×(1310)の標準セルと、M3入力ピンをM4ストラップに接続するVIA34バイア(1380)と、マクロセルの入力として印付けられたM4上の入力端子(1390)とを示す。構造1400は、駆動能力が16×(1401および1420)、12×(1405および1415)および8×(1410)の標準サイズのセルと、16×インバータ(1445および1465)、12×インバータ(1450および1460)および8×インバータ(1455)の出力ピンと、M3出力を、VIAスタックを介して接続するM8ストラップ(1470)と、M8出力ワイヤを接続するM9ストラップ(1430)と、マクロセルの出力として印付けられたM9上の出力端子(1425)とを示す。
図13および14の例では、マクロセル内の基本セルは、単一の列において、一の基本セルの上に他の基本セルが配置されている。他の配置も可能であるが、異なる入力・出力配線パターンを要する。マクロセル内における各基本セル(ひいては、入力ピンおよび出力ピン)の配置は当該マクロセルのインスタンス名に埋め込まれた(X,Y)座標に対して同じであるので、すべてのマクロセルは同一(あるいは同様)の配線パターンを有する。
図13および14は、インスタンス名に埋め込まれた物理的位置情報を用いて、どのようにしてインバータが配置配線され得るか、また、どのようにしてこれらインバータを1つのマクロセルとして論理的に動作させながら、物理的DBにおいては複数の基本セルとして表現され得るかを示す。この構造は、バッファやその他任意の論理ゲートを備える他のセルにも展開し得る。また、チューナブルバッファまたはクロック駆動素子もまた同様に配置配線され得る。
<クロックネットワークのチューニング>
本発明の一実施形態では、それぞれ基本セルの小さいセットからなる複数のマクロセルにより構築されたクロックネットワークを、当該マクロセルをそれらの基本セルに分割しながらチューニングする。一実施形態では、このチューニングは以下の前提に基づく:
A1.各マクロセルのソフトマクロが、レジスタトランジスタロジック(RTL)ステージにて生成される。
A2.上記複数のマクロセルが配置配線され、固定されたマクロセルの配置配線により物理的DBが入手可能となる。
A3.クロックネットワークにおいてインスタンス化された上記マクロセルのインスタンス名は、レベル情報(クロックツリーでのレベル)および固有の識別子(例えば、物理的位置は固有の識別子として使用可能である)を埋め込んでいる。
再び、本例のマクロセルが示されたネットリスト900を参照する。ネットリスト900は、クロスリンク付クロックバイナリークロックツリーを示す。上記説明のように、クロックステーションにおいてインスタンス化された各クロックドライバ(クロック駆動素子)のインスタンス名は、その内部に、クロックステーションにおけるそのドライバ(駆動素子)のレベル、およびそのドライバの配置の物理的なX座標およびY座標を有する。これにより、上記第3の前提A3のように、インスタンス名は固有である。
図15は、本発明の一実施形態による、配置配線されたチューニング用クロック分配ネットワークの物理的DBを用意するために使用されるステップ1500を示す。ステップ1501において、クロックネットワーク(またはクロックステーション)の物理的DBがPnRツールにおいて開かれる。次に、ステップ1503において、各マクロセルの入力ネット上の位置が選択され、この位置を印付けるための端子が生成される。次に、ステップ1505において、各マクロセルの出力ネット上の位置が選択され、この位置を印付けるための端子が生成される。この位置は、当該マクロセルに極めて近接した領域または当該マクロセル上の領域において、選択され得る。次に、ステップ1507において、生成されたすべての端子について、端子名およびマクロセルピン名のリストが、例えばファイルなどに、保持される。必要に応じて、マクロセルピンの方向も保持される。あるいは、これら情報は、端子名が生成される時に端子名に埋め込まれる。物理的位置情報も保持され得る。最後に、ステップ1509において、クロックメッシュにおいてクロスリンクを追加または削除して当該メッシュの各ドライバ上の容量性負荷について可能な限り均衡を図ることにより、クロックメッシュが初期チューニングされる。この初期チューニングは、ワイヤ長、またはクロックメッシュの各ドライバにより駆動される推定相互接続容量を単に比較するだけで(ワイヤ長と推定相互接続容量の2つのパラメータのみを例示)、シミュレーション無しで行い得る。図13および14は、それぞれ、図15におけるステップ1503および1505が行われた後の物理的DBを示す。
ステップ1509の後、物理的配線情報(相互接続の抵抗と容量)が、抽出ツールを用いて抽出される。抽出ツールは、ステップ1505および1507において物理的DBに生成された端子を保存するものである。抽出ツールは、ネットリストを生成し、当該ネットリストはクロックネットワークのシミュレーションおよびチューニングに使用される。マクロセルはソフトマクロとしてのみ生成されマクロセル上にはその物理的なレイアウトビューは存在しないので、抽出ツールはマクロセルを平坦化し、基本セルを用いてネットリストを生成することになる。表1に、抽出されたネットリストにおけるマクロセルの基本セルの一例を示す。
表1
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
これらマクロセルを使用するクロック分配ネットワークのチューニングにおいて、回路シミュレーション中に、これらセルを再度組み合わせる必要がある。基本セルをマクロセルに再度組み合わせる能力を有しない場合は、チューニングフローは、クロック分配ネットワークのリレーアウトおよび再抽出を伴うであろう。この場合、チューニングフローは行いにくくなり、繰り返し回数が制限されてしまう可能性がある。表2はこれを示し、表1の基本セルがどのようにしてチューニングのためにマクロセルに取り込まれる(collapsed)を示す。
表2
XxL3_5905p600_8p100 clk_L4_in1 clk_L3_out1 VDD VSS xp_ckinv64
1503および1505にて生成された端子は、抽出されたネットリストで取り込まれたマクロセルを接続するために用いられる。表2の例では、clk_L4_in1はステップ1503で生成された端子であり、clk_L3_out1は、ステップ1505で生成された端子である。これら端子は、マクロセルの上に(物理的に)位置するように、またはマクロセルに極めて近接して(物理的に)位置するように、選択される。この情報は、(各端子をマクロセルピン名にマッピングするファイルを生成する、または端子の物理的位置を含む)ステップ1507より入手可能である。あるいは、この情報は、端子名自体に埋め込まれている。ある実施形態では、チューニングされるマクロセルの取込みを行うためにスクリプトが使用される。同時に、クロックネットワークのネットリストへの刺激を生成するためのファイル、および、マクロセルの入力および出力における種々の回路パラメータを測定するための測定ステートメント(測定明細)を生成するためのファイルが生成され得る。各マクロセルの入力および出力は端子により印付けられているので(例えば、ステップ1503および1505)、測定ステートメントはこれら端子において生成され得る。いくつかの単なる例として、測定は、遅延、スリュー、電荷、電流、またはこれらパラメータの任意の組合せを含む。
一実施形態において、クロック配分における同レベルのすべてのドライバの出力での遅延とスリューの均衡を図るために、クロックネットワークは、いくつかのマクロセルの有効駆動能力を変えることによってチューニングされる。このチューニングは、回路シミュレーションツール(例えば、Hspice)を使用して行われる。また、クロックネットワークは、回路シミュレーションの間に測定された、1つ以上のパラメータを比較して均一化を試みることによってチューニングされ得る。いくつかの例として、これらパラメータは、遅延、スリュー、電流、または電荷を含む。以下の単なる例では、パラメータとしてスリューが用いられる。しかし、任意の他のパラメータまたはパラメータの組合せを用いてもよい。
本例では、「Target_slew」が、特定のマクロセルの出力のための目標スリュー値であり、「Current_slew」が、そのマクロセルの出力での回路シミュレーションで測定されたスリューである。「Current_size」は、当該マクロセルの現在のサイズ(または駆動能力)である。式(2)は、スリュー測定に基づいてクロックネットワークをチューニングするためのマクロセルの新たなサイズを導出するために用いられる。
New_size=Current_size*(1+(Current_slew−Target_slew)/(Target_slew))
式(2)
異なる実施形態では、マクロセルの新たなサイズを導出するために、以下の式(3)のような異なる式が用いられる。
New_size=Current_size*(1+(Current_slew−Target_slew)/(Current_slew))
式(3)
他の実施形態では、テーブル索引が用いられて、測定されたスリュー値を索引し、テーブルから新たなセルサイズを決定する。異なるセルサイズが異なる範囲のスリュー値に関連付け可能である。
新たなセルサイズが算出されると、これら新たなセルサイズは、シミュレーションに使用されるネットリストに組み込まれる。そして、新たなセルサイズをもつクロックネットワークが再度シミュレートされ、セルのサイズ変更の影響が検証される。スリュー(または他の測定値)がまだ目標値に達してなければ、再度セルのサイズ変更が行われる。これは、終了条件が満たされるまで繰り返される。いくつかの例として、終了条件は、以下の1つ以上の終了条件を含む:
すべてのマクロセルについて、New_size=Current_sizeである。
スリュー(または他の任意の測定値)が、目標値からのユーザ定義範囲内である。
繰り返し回数がユーザ定義限度に達している。
当業者であれば、本発明の原理に基づいて、他の終了条件および終了条件の組合せが使用可能であることを理解するであろう。
終了条件が満たされると、すべての新たなサイズは、シミュレーション用の回路ネットリストおよびクロックネットワーク用RTLネットリストにおいて更新される。新たなセルサイズは、クロックネットワークにおけるレイアウト(特に配線)に影響を与える。改訂されたRTLネットリストは、レイアウト変更を誘導するために用いられる。
<ハードウェア構成要素>
図16は、本発明の一実施形態による、電子設計ツール1600のブロック図である。図7、8、11、12および15を参照して、電子設計ツール1600は、プロセッサ1630およびメモリ1610を備える。メモリ1610は、ステップ700、800、1100、1200および1500を実行するためのコンピュータ実行可能指令1615と、データ750、755、760、765および770を含む領域1620とを含むコンピュータ読取可能媒体を格納する。
動作において、電子設計ツールは、クロック分配ネットワークを備えた半導体装置の製作に用いられる。クロック分配ネットワークにおけるシーケンシャル素子の負荷が判定され、駆動能力がクロック分配ネットワークのスキューを低減するように判定される。クロック分配ネットワーク上のインバータは、標準セルライブラリからの標準化されたセルつまり「基本」のセルにより形成され、これにより、クロック分配ネットワーク、ひいては半導体装置全体の製作にかかる費用および時間が削減される。有利には、これら基本セルは、ある数値範囲内で駆動能力を「チューニング」するために使用可能である。
配置配線中に基本セルを含むマクロセルはインスタンス化され、(X,Y)座標情報がインスタンス名から抽出される。そして、マクロセル内の基本セルが、(X,Y)座標からの固定された相対位置またはオフセット位置に配置される。次に、マクロセルは、以下の手順で配線される:クロックステーション設計においてインスタンス化されたマクロセルの集合を生成し;インスタンス名より(X,Y)座標情報を抽出し;各基本セルのためのピン位置を取得し;(X,Y)座標情報を用いてピンの位置を算出し;入力ピンをマクロセル内の基本セルと相互接続させるための物理的配線を生成し、1つ以上の位置を端子で印付けて複数のマクロセルの入力同士の接続を助け;マクロセル内のすべての基本セルの出力ピンを相互接続させるための物理的配線を生成し、1つ以上の位置を端子で印付けて複数のマクロセルの出力同士の接続を助け;マクロセルの入力と出力をネットリストにおける接続性に従って接続し;低いスキューを保つために複数のルート長の均衡を図る。
配置配線されたチューニング用クロック分配ネットワークの物理的DBを用意するために、各マクロセルの入力ネットリストおよび出力ネットリストの位置が生成され、これら位置を印付けるために端子が選択される。生成されたすべての端子および端子名のリストに対して、マクロセルピン名、および必要に応じてピンの方向が、好ましくはファイルに保存される。あるいは、これら情報は、端子名の生成時に端子名に埋め込まれる。また、物理的位置が含められてもよい。次に、クロックメッシュにおいてクロスリンクを追加または削除して、当該メッシュの各ドライバの容量性負荷の均衡を図ることにより、クロックメッシュが初期チューニングされる。この初期チューニングは、ワイヤ長、またはクロックメッシュの各ドライバにより駆動される推定相互接続容量を単に比較することによってなし得る。
本発明に基づいて標準サイズのセルを結合しクロックステーションの配置配線をおこなう方法および装置は、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(ハイブリッドツリーメッシュクロック分配ネットワークにおける可変駆動力のチューニング可能なクロックインバータを生成するように複数の駆動力のCOMSインバータを組合せるシステムおよび方法)」)、[代理人整理番号:XPL−00100]、および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」(ハイブリッドツリーメッシュクロック分配ネットワークの基本セルの小サブセットから構築された可変駆動力クロックドライバを用いてクロックステーションを配置配線するシステムおよび方法))、[代理人整理番号:XPL−00200]に記載されている。これら両文献は、参照によりその全文が援用される。
以上本発明の異なる実施形態について述べたが、これら実施形態の任意の数の組合せが可能であることを理解されたい。上記の実施形態は、本発明の例示にすぎず、その範囲を限定しようとするものではない。当業者であれば、添付の請求の範囲によって規定された本発明の要旨を逸脱することなく上記実施形態に変更を加えることが可能であることに容易に想到するであろう。

Claims (27)

  1. 複数の容量性負荷およびクロックネットワークを含むチューニング用の集積回路をチューニングする方法であって、
    前記クロックネットワークは、スパインと、前記スパインに結合された1つ以上の支持リブと、前記支持リブに結合された複数の基本セルと、前記支持リブの異なるものの上にある基本セルの対を互いに結合する1つ以上のクロスリンクとを含み、
    前記方法は、
    複数のマクロセルの集合を決定することであって、前記マクロセルの各々は1つ以上の前記基本セルによって形成され、前記集積回路の設計にインスタンス化され、前記マクロセルの各々は、前記1つ以上の基本セルによって決定される駆動能力を有し、前記基本セルの各々は、入力ピン及び出力ピンを有し、前記マクロセルの各々は前記集積回路上の前記容量性負荷のうち1つを駆動するためのものである決定することと、
    非一時的コンピュータ読取可能媒体内の前記マクロセルの各々を前記基本セルのグループとして表現することであって、前記マクロセルを形成する前記基本セルは、前記基本セルが単一のマクロセルであるかのように、前記グループが論理的に動作するように、構成される、表現することと、
    前記マクロセルの前記基本セルの複数の入力ピンのうちの1つの入力ピンの位置を印付けることによって、前記マクロセルの各々の入力および出力を選択し、前記マクロセルの前記基本セルの複数の出力ピンのうちの1つの出力ピンの位置を印付け、前記印付けた位置に端子を生成することと、
    前記マクロセルが前記マクロセルの前記入力および前記出力を示す一対の前記端子に関連付けられるように、前記端子がテーブルに配置されている前記マクロセルに前記端子を関連付けることと
    前記クロックネットワークのパラメータを均衡させるために、前記マクロセルによって駆動される前記容量性負荷のサイズに基づいて1つ以上の前記マクロセルの前記駆動能力をチューニングすることとを備え
    前記パラメータは、前記マクロセルの一方または両方の端子から測定される、チューニング用集積回路準備方法。
  2. 請求項1に記載の方法において、さらに、
    配置配線(PnR)ツールを用いて、前記集積回路の物理的DBを開くことを含む、チューニング用集積回路準備方法。
  3. 請求項に記載の方法において、前記クロックネットワークが、クロックメッシュ、クロックツリーメッシュおよびハイブリッドツリーメッシュのうちの1つを備える、チューニング用集積回路準備方法。
  4. 請求項に記載の方法において、前記集積回路のチューニングが、前記1つ以上のクロスリンクを追加することおよび削除することの任意の組合せを含む、チューニング用集積回路準備方法。
  5. 請求項に記載の方法において、前記マクロセルのそれぞれが、1つ以上対応する基本セルのみを含む、チューニング用集積回路準備方法。
  6. 請求項に記載の方法において、前記集積回路のチューニングは、回路シミュレーション中に、前記端子の端子用いて、前記基本セルを再度組み合わせて対応するマクロセルにすることを含む、チューニング用集積回路準備方法。
  7. 請求項に記載の方法において、さらに、
    前記端子名をファイルに格納することを備えた、チューニング用集積回路準備方法。
  8. 請求項に記載の方法において、さらに、
    前記入力ピンおよび前記出力ピンの方向を対応する端子名に埋め込むことを備えた、チューニング用集積回路準備方法。
  9. 請求項に記載の方法において、さらに、
    端子の物理的位置情報を、対応する端子に埋め込むことを備えた、チューニング用集積回路準備方法。
  10. 請求項1に記載の方法において、さらに、
    前記集積回路のネットリストに刺激を導入し、前記マクロセルの各々の前記入力および前記出力における回路パラメータの値算出することを備えた、チューニング用集積回路準備方法。
  11. 請求項10に記載の方法において、前記1つ以上のパラメータは、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む、チューニング用集積回路準備方法。
  12. 請求項11に記載の方法において、チューニングが、終了条件が満たされるまで前記1つ以上のマクロセルをサイズ変更することを含む、チューニング用集積回路準備方法。
  13. 請求項12に記載の方法において、前記終了条件は、前記マクロセルのサイズが目標サイズと等しくなること、測定されたスリューが所定の範囲内であること、サイズ変更の回数が所定の限度に達したこと、またはこれらの任意の組合せを含む、チューニング用集積回路準備方法。
  14. 請求項13に記載の方法において、前記サイズ変更は、以下の式に基づく、チューニング用集積回路準備方法。
    New_size=Current_size*(1+(Current_slew−Target_slew)/(Target_slew))
    ここで、New_sizeは、あるマクロセルの新たな駆動能力であり、Current_sizeは、当該マクロセルの現在の駆動能力であり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
  15. 請求項13に記載の方法において、前記サイズ変更は、以下の式に基づく、チューニング用集積回路準備方法。
    New_size=Current_size*(1+(Current_slew−Target_slew)/(Current_slew))
    ここで、New_sizeは、あるマクロセルの新たな駆動能力であり、Current_sizeは、当該マクロセルの現在の駆動能力であり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
  16. 複数の容量性負荷およびクロックネットワークを含む集積回路の設計をチューニングするシステムであって、
    前記クロックネットワークは、スパインと、前記スパインに結合された1つ以上の支持リブと、前記支持リブに結合された複数の基本セルと、前記支持リブの異なるものの上にある基本セルの対を互いに結合する1つ以上のクロスリンクとを含み、
    前記システムは、
    プロセッサと、
    成モジュールであって、
    複数のマクロセルの集合を決定することであって、前記マクロセルの各々は1つ以上の前記基本セルによって形成され、前記集積回路にインスタンス化され、前記マクロセルの各々は、前記1つ以上の基本セルによって決定される駆動能力を有し、前記基本セルの各々は、入力ピン及び出力ピンを有し、前記マクロセルの各々は前記集積回路上の前記容量性負荷のうち1つを駆動するためのものである、決定することと、
    物理的データベース内の前記マクロセルの各々を前記基本セルのグループとして表現することであって、前記マクロセルを形成する前記基本セルは、前記基本セルが単一のマクロセルであるかのように、前記グループが論理的に動作するように、構成される、表現することと
    を行う合成モジュールと、
    置配線モジュールであって、
    前記マクロセルの前記基本セルの複数の入力ピンのうちの1つの入力ピンの位置を印付けることによって、前記マクロセルの各々の入力および出力を選択することと、
    前記マクロセルの前記基本セルの複数の出力ピンのうちの1つの出力ピンの位置を印付け、前記印付けた位置に端子を生成することと、
    前記マクロセルが前記マクロセルの前記入力および前記出力を示す一対の前記端子に関連付けられるように、前記端子がテーブルに配置されている前記マクロセルに前記端子を関連付けることと
    を行う配置配線モジュールと、
    前記クロックネットワークのパラメータを均衡させるために、前記マクロセルによって駆動される前記容量性負荷のサイズに基づいて1つ以上の前記マクロセルの前記駆動能力をチューニングすることによって、前記集積回路をチューニングする検証モジュールとを備え
    前記パラメータは、前記マクロセルの一方または両方の端子から測定される、集積回路設計チューニングシステム。
  17. 請求項16に記載のシステムにおいて、さらに、
    前記合成モジュールに接続されたマクロセルライブラリを備え、
    当該マクロセルライブラリ基本セルのみを含む、集積回路設計チューニングシステム。
  18. 請求項16に記載のシステムにおいて、前記クロックネットワークは、クロックメッシュ、クロックツリーメッシュおよびハイブリッドツリーメッシュのうちの1つを備える、集積回路設計チューニングシステム。
  19. 請求項16に記載のシステムにおいて、前記検証モジュールは、さらに、回路シミュレーション中に、前記端子の端子用いて、前記基本セルを再度組み合わせて対応するマクロセルにする、集積回路設計チューニングシステム。
  20. 請求項16に記載のシステムにおいて、さらに、
    前記集積回路のネットリストに対して刺激を導入し、前記マクロセルの各々の前記入力および前記出力における回路パラメータの値算出する、シミュレーションモジュールを備えた、集積回路設計チューニングシステム。
  21. 請求項20に記載のシステムにおいて、前記1つ以上のパラメータは、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む、集積回路設計チューニングシステム。
  22. 請求項21に記載のシステムにおいて、前記合成モジュールは、終了条件が満たされるまで前記マクロセルをサイズ変更することによって、前記集積回路をチューニングするように構成される、集積回路設計チューニングシステム。
  23. 請求項22に記載のシステムにおいて、前記終了条件は、前記マクロセルのサイズが目標サイズと等しくなること、測定されたスリューが所定の範囲内であること、前記マクロセルのサイズ変更の回数が所定の限度に達したこと、またはこれらの組合せを含む、集積回路設計チューニングシステム。
  24. 請求項22に記載のシステムにおいて、前記マクロセルの前記サイズ変更は、回路シミュレーションパラメータに基づく、集積回路設計チューニングシステム。
  25. 請求項24に記載のシステムにおいて、前記回路シミュレーションパラメータは、遅延、スリュー、電流、電荷、またはこれらの任意の組合せを含む、集積回路設計チューニングシステム。
  26. 請求項22に記載のシステムにおいて、前記サイズ変更は、以下の式に基づく、集積回路設計チューニングシステム。
    New_size=Current_size*(1+(Current_slew−Target_slew)/(Target_slew))
    ここで、New_sizeは、あるマクロセルの新たな駆動能力であり、Current_sizeは、当該マクロセルの現在の駆動能力であり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
  27. 請求項22に記載のシステムにおいて、前記サイズ変更は、以下の式に基づく、集積回路設計チューニングシステム。
    New_size=Current_size*(1+(Current_slew−Target_slew)/(Current_slew))
    ここで、New_sizeは、あるマクロセルの新たな駆動能力であり、Current_sizeは、当該マクロセルの現在の駆動能力であり、Current_slewは、現在のスリューであり、Target_slewは、所定の目標スリューである。
JP2014263371A 2013-12-26 2014-12-25 基本セルの小集合によって構築された可変駆動能力クロックドライバを備えた可変駆動能力クロックインバータを用いて構成されたクロックネットワークをチューニングするシステムおよび方法 Active JP6544923B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/141,104 2013-12-26
US14/141,104 US9305129B2 (en) 2013-12-26 2013-12-26 System for and method of tuning clock networks constructed using variable drive-strength clock inverters with variable drive-strength clock drivers built out of a smaller subset of base cells

Publications (2)

Publication Number Publication Date
JP2015125779A JP2015125779A (ja) 2015-07-06
JP6544923B2 true JP6544923B2 (ja) 2019-07-17

Family

ID=53482083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014263371A Active JP6544923B2 (ja) 2013-12-26 2014-12-25 基本セルの小集合によって構築された可変駆動能力クロックドライバを備えた可変駆動能力クロックインバータを用いて構成されたクロックネットワークをチューニングするシステムおよび方法

Country Status (6)

Country Link
US (1) US9305129B2 (ja)
JP (1) JP6544923B2 (ja)
KR (1) KR20150076133A (ja)
CN (1) CN104750906A (ja)
HK (1) HK1207438A1 (ja)
TW (1) TWI661325B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9305129B2 (en) 2013-12-26 2016-04-05 Cavium, Inc. System for and method of tuning clock networks constructed using variable drive-strength clock inverters with variable drive-strength clock drivers built out of a smaller subset of base cells
US9390209B2 (en) * 2013-12-26 2016-07-12 Cavium, Inc. 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
US9443053B2 (en) 2013-12-26 2016-09-13 Cavium, Inc. System for and method of placing clock stations using variable drive-strength clock drivers built out of a smaller subset of base cells for hybrid tree-mesh clock distribution networks
CN106649898B (zh) * 2015-10-29 2019-12-13 京微雅格(北京)科技有限公司 一种加法器的打包布局方法
CN106209681B (zh) * 2016-06-28 2019-05-10 华为技术有限公司 一种队列管理方法和装置
CN108614796B (zh) * 2016-12-12 2021-06-01 中国航空工业集团公司西安航空计算技术研究所 加速1394物理层虚拟仿真的方法
CN106960087B (zh) * 2017-03-13 2020-05-19 上海华力微电子有限公司 一种时钟分布网络结构及其生成方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10242396A (ja) * 1997-03-03 1998-09-11 Mitsubishi Electric Corp クロックドライバ回路及び半導体集積回路装置
JPH10246754A (ja) * 1997-03-03 1998-09-14 Mitsubishi Electric Corp クロックドライバ回路及び半導体集積回路装置
US6166564A (en) * 1999-07-09 2000-12-26 Intel Corporation Control circuit for clock enable staging
US6434731B1 (en) * 1999-10-26 2002-08-13 International Business Machines Corporation Automated placement of signal distribution to diminish skew among same capacitance targets in integrated circuits
US6629298B1 (en) * 1999-11-10 2003-09-30 International Business Machines Corporation Automated programmable process and method for the improvement of electrical digital signal transition rates in a VLSI design
US6574781B1 (en) * 2000-08-21 2003-06-03 Oki Electric Industry Co., Ltd. Design methodology for inserting RAM clock delays
JP3420195B2 (ja) * 2000-09-26 2003-06-23 エヌイーシーマイクロシステム株式会社 クロック配線の設計方法
JP2002198430A (ja) * 2000-12-26 2002-07-12 Nec Microsystems Ltd 駆動力可変ブロックおよびこれを用いたlsi設計方法
US6698006B1 (en) * 2001-12-14 2004-02-24 Sequence Design, Inc. Method for balanced-delay clock tree insertion
US6763513B1 (en) * 2001-12-18 2004-07-13 Cadence Design Systems, Inc. Clock tree synthesizer for balancing reconvergent and crossover clock trees
US6981233B2 (en) * 2003-02-24 2005-12-27 Cadence Design Systems, Inc. Method for analyzing path delays in an IC clock tree
US6951002B2 (en) * 2003-06-05 2005-09-27 International Business Machines Corporation Design techniques for analyzing integrated circuit device characteristics
US7810061B2 (en) * 2004-09-17 2010-10-05 Cadence Design Systems, Inc. Method and system for creating a useful skew for an electronic circuit
US20060080632A1 (en) * 2004-09-30 2006-04-13 Mathstar, Inc. Integrated circuit layout having rectilinear structure of objects
TWI274266B (en) * 2005-05-26 2007-02-21 Faraday Tech Corp Verilog HDL simulation model for retain time
US7761275B2 (en) * 2005-12-19 2010-07-20 International Business Machines Corporation Synthesizing current source driver model for analysis of cell characteristics
US20080229266A1 (en) * 2006-12-14 2008-09-18 International Business Machines Corporation Design Structure for a Clock Distribution Network, Structure, and Method for Providing Balanced Loading in Integrated Circuit Clock Trees
JP2009187104A (ja) * 2008-02-04 2009-08-20 Panasonic Corp 半導体集積回路
JP5045595B2 (ja) * 2008-07-28 2012-10-10 富士通株式会社 回路設計支援装置、回路設計支援プログラム、回路設計支援方法
JP4784786B2 (ja) * 2009-03-27 2011-10-05 日本電気株式会社 クロック分配回路及びクロックスキュー調整方法
JP4918934B2 (ja) * 2009-08-21 2012-04-18 日本電気株式会社 半導体集積回路の遅延解析装置及び遅延解析方法並びにそのプログラム
US9219005B2 (en) 2011-06-28 2015-12-22 Monolithic 3D Inc. Semiconductor system and device
US8957398B2 (en) 2010-12-22 2015-02-17 Easic Corporation Via-configurable high-performance logic block involving transistor chains
US8407654B2 (en) 2011-02-23 2013-03-26 International Business Machines Corporation Glitch power reduction
US8627263B2 (en) 2011-02-23 2014-01-07 International Business Machines Corporation Gate configuration determination and selection from standard cell library
US8461893B2 (en) 2011-08-16 2013-06-11 Lsi Corporation Uniform-footprint programmable multi-stage delay cell
US8536921B2 (en) 2011-08-16 2013-09-17 Lsi Corporation Uniform-footprint programmable-skew multi-stage delay cell
US8984467B2 (en) * 2011-08-17 2015-03-17 Synopsys, Inc. Method and apparatus for automatic relative placement generation for clock trees
TWI472941B (zh) * 2012-04-18 2015-02-11 Global Unichip Corp 晶片輸出入設計的方法
US8629548B1 (en) * 2012-10-11 2014-01-14 Easic Corporation Clock network fishbone architecture for a structured ASIC manufactured on a 28 NM CMOS process lithographic node
US9305129B2 (en) 2013-12-26 2016-04-05 Cavium, Inc. System for and method of tuning clock networks constructed using variable drive-strength clock inverters with variable drive-strength clock drivers built out of a smaller subset of base cells
US9443053B2 (en) 2013-12-26 2016-09-13 Cavium, Inc. System for and method of placing clock stations using variable drive-strength clock drivers built out of a smaller subset of base cells for hybrid tree-mesh clock distribution networks

Also Published As

Publication number Publication date
US20150186583A1 (en) 2015-07-02
US9305129B2 (en) 2016-04-05
TWI661325B (zh) 2019-06-01
JP2015125779A (ja) 2015-07-06
KR20150076133A (ko) 2015-07-06
CN104750906A (zh) 2015-07-01
HK1207438A1 (en) 2016-01-29
TW201541272A (zh) 2015-11-01

Similar Documents

Publication Publication Date Title
JP6544923B2 (ja) 基本セルの小集合によって構築された可変駆動能力クロックドライバを備えた可変駆動能力クロックインバータを用いて構成されたクロックネットワークをチューニングするシステムおよび方法
US9443053B2 (en) System for and method of placing clock stations using variable drive-strength clock drivers built out of a smaller subset of base cells for hybrid tree-mesh clock distribution networks
US7340700B2 (en) Method for abstraction of manufacturing test access and control ports to support automated RTL manufacturing test insertion flow for reusable modules
US7761828B2 (en) Partitioning electronic circuit designs into simulation-ready blocks
US8589847B2 (en) Circuits and methods for programmable transistor array
US7188330B2 (en) Handling of unused coreware with embedded boundary scan chains to avoid the need of a boundary scan synthesis tool during custom instance creation
US20060271899A1 (en) Methods for producing structured application-specific integrated circuits that are equivalent to field-programmable gate arrays
US7404161B2 (en) Fullchip functional equivalency and physical verification
US20140270050A1 (en) Design and deployment of custom shift array macro cells in automated application specific integrated circuit design flow
US20140282325A1 (en) Methods for Layout Verification for Polysilicon Cell Edge Structures in FinFET Standard Cells using Filters
JP2004260093A (ja) 半導体集積回路装置と設計自動化装置及び方法並びにプログラム
US7689960B2 (en) Programmable via modeling
US9390209B2 (en) 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
US7360133B2 (en) Method for creating a JTAG tap controller in a slice for use during custom instance creation to avoid the need of a boundary scan synthesis tool
US20140075401A1 (en) Bit slice elements utilizing through device routing
US20230005562A1 (en) Scan chain compression for testing memory of a system on a chip
TW202347160A (zh) 將局部穿線電阻轉變為全域分佈式電阻
Shetty ASIC design flow and methodology–an overview
US8947120B2 (en) Latch array utilizing through device connectivity
US7576562B1 (en) Diagnosable structured logic array
CN117347839B (zh) 芯片测试电路及芯片
JP2872216B1 (ja) マクロの設計方法
Bernard Physical Level Design using Synopsys®
JP3130880B2 (ja) 半導体集積回路の階層レイアウト設計方法
Kao et al. New CAD issues and considerations for the design of mixed-signal SOCs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171222

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20171222

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20171222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190212

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190520

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190618

R150 Certificate of patent or registration of utility model

Ref document number: 6544923

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250