(57)【要約】【課題】製造バラつきの下で、クロックスキューとクロック遅延最小化しつつ、クロック信号部での消費電力を最小化する。【解決手段】メッシュネットの遅延を計算するメッシュネット遅延計算部103と、メッシュネット駆動構造の遅延を計算するメッシュネット駆動構造遅延計算部105と、クロック素子のクラスタを階層的に生成するクロック素子階層クラスタ生成部106と、クロックゲーティング構造生成部107と、ローカルクロック構造生成部108と、ローカルクロック構造遅延計算部109と、生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算するクロック構造評価部110と、ローカルクロック構造候補の集合から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択するクロック構造選択手段111と、を備える。【選択図】図１
2011210053.tif 000002
【特許請求の範囲】
【請求項１】
クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶する記憶装置と、
メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネットを生成するメッシュネット生成手段と、
前記メッシュネット生成手段で生成した前記メッシュネットの遅延を計算するメッシュネット遅延計算手段と、
前記メッシュネットを駆動するバッファツリーを生成するメッシュネット駆動構造生成手段と、
前記メッシュネット駆動構造生成手段で生成したメッシュネット駆動構造の遅延を計算するメッシュネット駆動構造遅延計算手段と、
前記チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成するクロック素子階層クラスタ生成手段と、
前記クロック素子階層クラスタ生成手段で生成した各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入するクロックゲーティング構造生成手段と、
前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成するローカルクロック構造生成手段と、
前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算するとローカルクロック構造遅延計算手段と、
前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算するクロック構造評価手段と、
全てのメッシュネット格子数候補に対して行われた、ローカルクロック構造候補の集合から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択するクロック構造選択手段と、
を備えた、半導体集積回路の設計装置。
【請求項２】
請求項１記載の半導体集積回路の設計装置において、
前記クロックゲーティング構造生成手段は、
クロック素子の最下位階層クラスタを、イネーブル信号の接続対象として選択する手段と、選択したクロック素子階層にイネーブル信号を接続した時に、イネーブル信号の遅延が遅延制約を満たすかどうか確認する手段と、イネーブル信号の遅延制約を満たさなければ、イネーブル信号接続対象となるクロック素子階層を1階層上げて選択し直し、再度イネーブル信号の遅延が遅延制約を満たすかどうか確認する手段と、これらの手段による処理をイネーブル信号の遅延が遅延制約を満たすまで繰り返す手段と、を備える半導体集積回路の設計装置。
【請求項３】
請求項１記載の半導体集積回路の設計装置において、
前記メッシュネット遅延計算手段は、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、あらかじめ、回路シミュレーションにより計算した遅延を保持した表をライブラリとして備え、該ライブラリを遅延計算に利用することを特徴とする半導体集積回路の設計装置。
【請求項４】
クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶し、
メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成し、前記メッシュネット構造の遅延を計算し、
前記メッシュネット構造を駆動するメッシュネット駆動バッファツリー構造を生成し、前記メッシュネット駆動バッファツリー構造の遅延を計算し、
前記チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成し、
前記各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入し、
前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成し、生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算し、
前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算し、
全てのメッシュネット格子数候補に対してローカルクロック構造候補の集合を生成し、その中から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択する、半導体集積回路の設計方法。
【請求項５】
請求項４記載の半導体集積回路の設計方法において、
クロックゲーティング構造生成において、まず、クロック素子の最下位階層クラスタを、イネーブル信号の接続対象として選択し、選択したクロック素子階層にイネーブル信号を接続した時に、イネーブル信号の遅延が遅延制約を満たすかどうか確認し、イネーブル信号の遅延制約を満たさなければ、イネーブル信号接続対象となるクロック素子階層を1階層上げて選択し直し、再度イネーブル信号の遅延が遅延制約を満たすかどうか確認し、これらの処理をイネーブル信号の遅延が遅延制約を満たすまで繰り返す、半導体集積回路の設計方法。
【請求項６】
請求項４記載の半導体集積回路の設計方法のメッシュネット遅延計算において、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、あらかじめ、回路シミュレーションにより計算した遅延を保持した表をライブラリとして用意しておき、遅延計算に利用する、半導体集積回路の設計方法。
【請求項７】
半導体集積回路の設計装置として機能させるコンピュータに、
クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶する手順と、
メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成する手順と、
前記メッシュネット構造の遅延を計算する手順と、
前記メッシュネット構造を駆動するメッシュネット駆動バッファツリー構造を生成する手順と、
前記メッシュネット駆動バッファツリー構造の遅延を計算する手順と、
前記チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成する手順と、
前記各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入する手順と、
前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成する手順と、
前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算する手順と、
前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算する手順と、
全てのメッシュネット格子数候補に対して、ローカルクロック構造候補の集合を生成し、その中から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択する手順と、
を実行させるコンピュータプログラム。
【請求項８】
請求項７記載のコンピュータプログラムにおいて、
前記クロックゲーティング構造生成手順は、
クロック素子の最下位階層クラスタを、イネーブル信号の接続対象として選択する手順と、
選択したクロック素子階層にイネーブル信号を接続した時に、イネーブル信号の遅延が遅延制約を満たすかどうか確認する手順と、
イネーブル信号の遅延制約を満たさなければ、イネーブル信号接続対象となるクロック素子階層を1階層上げて選択し直し、再度イネーブル信号の遅延が遅延制約を満たすかどうか確認する手順と、
これらの手順をイネーブル信号の遅延が遅延制約を満たすまで繰り返す手順とを含むことを特徴とするコンピュータプログラム。
【請求項９】
請求項７記載のコンピュータプログラムにおいて、
前記メッシュネット遅延計算手順は、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、あらかじめ、回路シミュレーションにより計算した遅延を保持した表をライブラリとして用意しておき、遅延計算に利用する手順を含むことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法、設計装置および、コンピュータプログラムに関し、特に、クロックゲーティング構造およびメッシュ構造を持つクロック分配回路を含む半導体集積回路の配置配線を行う設計方法、設計装置および、コンピュータプログラムに関する。
【背景技術】
【０００２】
同期式半導体集積回路は、演算および演算の制御を行うための論理素子(以後、論理セルまたは論理ゲートとも称する)と、論理素子群の動作の同期を取るための順序回路素子(以後、クロック素子、フリップフロップ、またはFFとも称する)から構成されている。各フリップフロップには、ひとつのクロック供給源(以後、クロックソースとも称する)から周期的に発振するクロック信号が供給され、クロック信号の立ち上がりまたは立下りに応じて、フリップフロップが保持しているデータは論理素子群に供給される。論理素子は供給されたデータを入力として演算および演算の制御を行い、その結果をフリップフロップに保存する。以上の処理は周期的に変化するクロック信号の立ち上がりまたは立下りに応じて繰り返される。
【０００３】
上述の同期式回路を、クロック信号を基準にして、正常なタイミングで動作させるための、理想的なクロック信号分配回路の配置配線の条件は、いずれのフリップフロップのクロック入力端子においても、全く同じクロック信号波形が得られるようにすることである。しかし、実際には、クロック信号を引き回す配線、接続しているクロック素子の配置分布の疎密により、フリップフロップ毎にクロック信号が到着する時間を全く同じにすることは困難である。
【０００４】
フリップフロップ対における、クロック信号が到達する時間の差をクロックスキューと称し、クロックスキューが大きいと回路は正常動作しなくなる可能性がある。従って、クロック分配回路の配置配線では、可能な限りクロックスキューを小さくすることが重要となる。
【０００５】
クロック信号を分配する回路の構成として、クロックソースから複数のバッファを経由するツリー状の配線経路を設定し、クロック信号をツリー状に各クロック素子へ分配するものがある。ここで、クロックソースから各クロック素子までのクロック信号の伝搬経路が同じ長さ、同じバッファ段数となるようにツリー形状を設定することにより、クロックスキューを低減することが可能となる。例えば特許文献1に上述のようなツリー構造を生成する技術が示されている。この技術によるクロック分配回路の配置配線例を図１６に示す。ここでは、クロックソース16-01からクロック素子16-03へ、中継バッファ16-04を介して、クロック信号を分配する経路16-02が設定されている。
【０００６】
しかしながら、このような分配回路構成にしても、実際の設計では、各経路形状のずれ、製造プロセスのバラつきなどの影響でクロックスキューが発生してしまうことは避けられない。特に、近年、半導体プロセスの微細化により、製造における品質バラツキによる遅延バラツキ問題が深刻化しており、これに従い、クロックスキューの最小化は、さらに困難なものになっている。
【０００７】
特許文献1の方法を、製造バラツキ耐性が強くなるように拡張する技術の公知例として、特許文献2があるが、ツリー状の構造では、信号分岐先の遅延バラツキの差が生じることは避けられないため、スキュー最小化には限界がある。
【０００８】
そこで、このような製造バラツキ問題に対処するために、ツリー構造を持つクロック分配回路の末端バッファの出力を配線短絡することにより、クロックソースからの各クロック素子へのクロック信号到着時間差を小さくする技術が提案されている。この技術によれば、バッファの出力を配線短絡することにより、クロック供給源から異なる経路を経由してきたクロック信号が平均化され、製造バラツキによるクロックスキューを低減することが可能となる。例えば、クロックツリー構造の末端バッファの出力端子をメッシュ構造 (格子構造とも称する) を持った配線に接続し、メッシュ形状配線から、クロック素子へクロック信号を分配する技術が、特許文献4、特許文献5、特許文献6で提案されている。図１７に、クロック分配ツリー(17-01)の末端バッファ(17-03)出力を、メッシュ構造配線(17-02および17-04)で短絡した例を示す。
【０００９】
一方で、近年の半導体回路の大規模化および高速化の進歩は、クロック信号部での消費電力の増大を招いており、クロックスキュー削減に加えて、低消費電力化を実現するクロック配置配線設計技術も重要となってきている。
【００１０】
クロック信号部の消費電力を削減する効果的な方法としては、ゲーティッドクロック回路設計手法が提案され、広く普及している(例えば特許文献7)。これは、回路が動作しない場合に、クロックの動作も止めることにより、低消費電力化を図る技術であり、論理回路からゲーティング信号と称する(または、イネーブル信号と称する)制御信号をクロック分配回路上に接続し、クロック信号の伝搬を制御する。
【００１１】
クロックゲーティングの例を、図１８に示す。ゲーティング信号(18-01、 18-02)と、クロックソース16-01からのクロック信号の論理積を取ることにより、クロック信号のクロック素子への分配を制御する論理ゲート18-04をゲーティングセルと称し、同一ゲーティング信号が接続するゲーティングセルからクロック信号が分配されるクロック素子16-03の集合を、ゲーティッド回路18-03と称する。ゲーティング信号が接続するゲーティングセルの入力端子をイネーブル端子と称する。
【００１２】
さらに、近年では、低消費電力と低スキューの双方を実現するために、クロックゲーティングとメッシュ構造を組み合わせる技術が、例えば、特許文献8、 特許文献9で提案されている。ここでは、図１９に示すように、クロックゲーティングを適用する部分回路毎にメッシュ構造17-02を適用している。これを、レイアウト構造で見ると、図２０に示すように、それぞれのゲーティッド回路に対して生成したメッシュ構造17-02を同一レイアウト領域上に重ね合わせることになる。
【００１３】
しかしながら、従来のクロックゲーティングとメッシュ構造を組み合わせる技術では、図１９、図２０に示すように、クロックゲーティングを適用する部分回路毎にメッシュ構造を適用しているため、異なるメッシュ構造に接続するクロック素子対のスキューを十分に小さくすることができないという問題が存在する。すなわち、ゲーティング構造を含むクロック構成では、チップ内のクロック素子入力端子に接続する全てのバッファ出力を配線短絡するメッシュ形状配線を適用できず、ゲーティッド回路毎にメッシュ形状配線を設定することになるため、同一ゲーティッド回路内でのクロックスキューは低減できるものの、異なるゲーティッド回路間では、クロック信号の伝搬経路が異なり、クロックスキューが増大してしまう。
【００１４】
また、通常、チップ上には異なるゲーティッド回路に属するクロック素子が混在して分布することが多いため、メッシュ構造を重ねて設定することは、多くの配線資源を消費することになり、配線性の悪化、消費電力の増加につながるという問題がある。
【００１５】
この課題を解決するために、特願２００９−２８３８８６号では、図２１に示すように、ゲーティングセルを複製し、異なるイネーブル信号で駆動されるゲーティッド回路を同一メッシュ構造17-02以下に接続する技術を提案している。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開平５−０５４１００号公報
【特許文献２】特開２００７−１２３３３６号公報
【特許文献３】特開２００４−３３４４６８号公報
【特許文献４】特開２００３−０９２３５２号公報
【特許文献５】特開２００３−２８２７１２号公報
【特許文献６】特開２００７−２１４３３４号公報
【特許文献７】特開２００９−０５３８３０号公報
【特許文献８】特開２００３−１０９３８２号公報
【特許文献９】特開２００７−０１９４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
特願２００９−２８３８８６号で提案されているメッシュ構造とクロックゲーティング構造の組み合わせ技術を、図３のクロック(クロックソース16-01からゲーティングセル18-04を介して、クロック素子16-03へクロック信号を分配する)に対して適用した場合、図４に示すようなクロック構造(メッシュ構造17-02と、メッシュ構造を駆動するバッファツリー17-02と、メッシュ以降のローカル構造と、複製されたゲーティングセル集合18-04と、イネーブル信号の組合せ)が生成される。
【００１８】
この場合、クロックソースからクロック素子までの遅延時間は、メッシュネットを駆動するバッファツリー構造の遅延時間D1(図４の04-01)と、メッシュネット自体を駆動する遅延時間D2(図４の04-02)と、ゲーティッド回路を駆動する遅延時間D3(図４の04-03)、の合計になる。ここで、D3 はクロック素子毎に異なる値となるため、このクロック構造の最小遅延時間はD1 + D2 + min{D3}、最大遅延時間はD1+D2+max{D3} となる。min{D3}はD3の最小値、max{D3}はD3の最大値を示す。
【００１９】
このクロック構造の主なスキューは、メッシュネットまで(D1+D2)は、短絡配線の効果により、ほぼ0に抑えることが可能であるため、ゲーティッド回路を駆動する遅延時間D3において発生する。ゲーティッド回路部分は、配線短絡を行っていないため、遅延バラつきの影響を緩和することができず、遅延バラつき係数をkとすると、このクロック構造のスキューは、max{D3}* (1 + k) - min{D3} * (1 - k) となる。ここで、k は0以上1未満の少数として与えられる。
【００２０】
上述したクロック構造の遅延とスキューに加えて、設計においては、ゲーティングセルを駆動するためのイネーブル信号の遅延時間D4(図４の04-04)についても上限制約が与えられる。複製されるゲーティングセルの数が多くなると、イネーブル信号のファンアウト数が大きくなり、遅延時間制約をみたすことが困難になることがある。
【００２１】
クロック構造の設計では、以下のいずれかの課題について、メッシュネット構造、メッシュネット駆動バッファツリー構造、およびゲーティッドクロック構造の最良な組合せを求めることが望まれる。
1) イネーブル信号の遅延時間D4とクロック最大遅延 D1 + D2 + max{D3} に、それぞれ上限制約が与えられた下で、クロックスキューmax{D3}* (1 + k) - min{D3} * (1 - k)を最小化する。
2) イネーブル信号の遅延時間D4とクロックスキューmax{D3}* (1 + k) - min{D3} * (1 - k)に、それぞれ上限制約が与えられた下で、クロック最大遅延 D1 + D2 + max{D3}を最小化する。
【００２２】
この問題を効率良く解く設計技術は、いまだ提案されていない。
【００２３】
本発明は、このような課題を解決するためになされたものであって、クロックゲーティング構造を持つクロック分配回路を含む半導体集積回路について、イネーブル信号遅延とクロック遅延とクロックスキューを総合的に考慮した配置配線を行う設計方法、設計装置および、コンピュータプログラムを提供することにある。
【課題を解決するための手段】
【００２４】
本発明の半導体集積回路の設計装置は、
クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶する記憶装置と、メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネットを生成するメッシュネット生成手段と、前記メッシュネット生成手段で生成した前記メッシュネットの遅延を計算するメッシュネット遅延計算手段と、前記メッシュネットを駆動するバッファツリーを生成するメッシュネット駆動構造生成手段と、前記メッシュネット駆動構造生成手段で生成したメッシュネット駆動構造の遅延を計算するメッシュネット駆動構造遅延計算手段と、前記チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成するクロック素子階層クラスタ生成手段と、前記クロック素子階層クラスタ生成手段で生成した各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入するクロックゲーティング構造生成手段と、前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成するローカルクロック構造生成手段と、前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算するとローカルクロック構造遅延計算手段と、前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算するクロック構造評価手段と、全てのメッシュネット格子数候補に対して行われた、ローカルクロック構造候補の集合から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択するクロック構造選択手段と、を備える。
【００２５】
本発明の半導体集積回路の設計方法は、
クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶し、メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成し、前記メッシュネット構造の遅延を計算し、前記メッシュネット構造を駆動するメッシュネット駆動バッファツリー構造を生成し、前記メッシュネット駆動バッファツリー構造の遅延を計算し、前記チップ情報に含まれるクロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成し、前記各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入し、前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成し、前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算し、前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算し、全てのメッシュネット格子数候補に対してローカルクロック構造候補の集合を生成し、その中から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択する。
【００２６】
本発明のコンピュータプログラムは、半導体集積回路の設計装置として機能させるコンピュータに、クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶する手順と、メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成する手順と、前記メッシュネット構造の遅延を計算する手順と、前記メッシュネット構造を駆動するメッシュネット駆動バッファツリー構造を生成する手順と、前記メッシュネット駆動バッファツリー構造の遅延を計算する手順と、前記チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成する手順と、前記各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入する手順と、前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成する手順と、前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算する手順と、前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算する手順と、全てのメッシュネット格子数候補に対して、ローカルクロック構造候補の集合を生成し、その中から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択する手順と、を実行させる。
【００２７】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００２８】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００２９】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施する時には、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【００３０】
さらに、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【発明の効果】
【００３１】
本発明によれば、低消費電力化に有効であるゲーティング構造を含むクロック分配回路に対して、製造バラつきを含むスキューの削減のために有効であるメッシュ構造を分割することなく、クロック構造全体の遅延とスキューおよびイネーブル信号遅延を総合的に考慮して、全クロック素子を同一のメッシュ構造以下に接続する最良なクロック構造を生成することが可能となる。これにより、クロック分配回路の低消費電力化と低遅延化および低遅延スキュー化が可能となる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態に係る半導体集積回路の設計装置の構成を示す機能ブロック図である。
【図２】本発明の実施の形態に係る半導体集積回路の設計方法の処理手順の一例を示すフローチャートである。
【図３】本発明の設計装置および設計方法への入力となるクロック構造の一例を示す図である。
【図４】本発明の設計装置および設計方法により生成されるクロック構造の一例を示す図である。
【図５】メッシュネット構造の一例である。
【図６】メッシュネット構造の遅延を計算するために用いられる、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、メッシュネット自体の遅延を保持する表の一例を示す図である。
【図７】メッシュネット構造を駆動するために用いられるバッファツリー構造の一例を示す図である。
【図８】ゲーティング構造とクロック素子配置を考慮したクロック素子階層クラスタリングの一例を示す図である。
【図９】ゲーティング構造とクロック素子配置を考慮したクロック素子階層クラスタリングの一例をレイアウトの観点から示した図である。
【図１０】最階層クラスタへイネーブル信号を接続した例を示す図である。
【図１１】最階層クラスタへイネーブル信号を接続した例をレイアウトの観点から示した図である。
【図１２】下から２番目の階層クラスタへイネーブル信号を接続した例を示す図である。
【図１３】下から２番目の階層クラスタへイネーブル信号を接続した例をレイアウトの観点で示した図である。
【図１４】下から２番目の階層クラスタへイネーブル信号を接続することにより得られるメッシュネット構造以降のゲーティングクロック構造の例を示す図である。
【図１５】下から２番目の階層クラスタへイネーブル信号を接続することにより得られるメッシュネット構造以降のゲーティングクロック構造の例をレイアウトの観点から示した図である。
【図１６】特許文献記載のクロック分配方法を示す図である。
【図１７】特許文献記載のメッシュ構造挿入を示す図である。
【図１８】特許文献記載のゲーティングクロック回路構成を示す図である。
【図１９】特許文献記載のゲーティングクロックとメッシュ構造の組合せの回路構成を示す図である。
【図２０】特許文献記載のゲーティングクロックとメッシュ構造の組合せのレイアウトを示す図である。
【図２１】特願２００９−２８３８８６号記載のゲーティングクロックとメッシュ構造の組合せ構造を示す図である。
【図２２】コンピュータの一構成例を示す図である。
【発明を実施するための形態】
【００３３】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同一の符号を付し、適宜説明を省略する。
(第1の実施の形態)
図１は、本発明の実施の形態に係る半導体集積回路の設計装置の構成を示す機能ブロック図である。
【００３４】
本実施形態の半導体集積回路設計装置100は、クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶するチップ情報記憶部90と、チップ情報受付部101と、メッシュネット格子数候補から格子数を１つ選択し、チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネットを生成するメッシュネット生成部102と、メッシュネット生成部102で生成したメッシュネットの遅延を計算するメッシュネット遅延計算部103と、前記メッシュネットを駆動するバッファツリーを生成するメッシュネット駆動構造生成部104と、メッシュネット駆動構造生成部104で生成したメッシュネット駆動構造の遅延を計算するメッシュネット駆動構造遅延計算部105と、を備える。
【００３５】
また、本実施形態の半導体集積回路設計装置100は、チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成するクロック素子階層クラスタ生成部106と、前記各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入するクロックゲーティング構造生成部107と、を備える。
【００３６】
さらに、本実施形態の半導体集積回路設計装置100は、前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成するローカルクロック構造生成部108と、ローカルクロック構造生成部108により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算するとローカルクロック構造遅延計算部109と、前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算するクロック構造評価部110と、全てのメッシュネット格子数候補に対して行われた、ローカルクロック構造候補の集合から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択するクロック構造選択部111と、を備える。
【００３７】
チップ情報記憶部９０は、メッシュネット生成部１０２からクロック構造評価選択部１１１までの各部と接続され、各部で生成された生成データ、計算された計算結果及び評価された評価結果はチップ情報記憶部９０に記憶される。各生成部で生成された生成データはチップ情報記憶部９０に記憶され、各計算部で計算するデータはチップ情報記憶部９０から受ける。しかし、計算部で計算するデータを対応する生成部から受けてもよい。また、データの一部を生成部から受け、他のデータをチップ情報記憶部９０から受けるようにしてもよい。例えば、メッシュネット遅延計算部１０３はメッシュネット生成部１０２で生成されたメッシュネットを、チップ情報記憶部９０から受けても、メッシュネット生成部１０２から受けても、データの一部をメッシュネット生成部１０２から受け、チップ情報記憶部９０から他のデータを受けてもよい。したがって、図１では、メッシュネット生成部１０２からクロック構造選択部１１１までが、一方向の矢印で接続されているが、必ずデータが矢印の方向に送られることを意味するものでなく、チップ情報記憶部９０を介してデータが送られる場合もある。
【００３８】
また、メッシュネット生成部１０２で用いる、全てのクロック素子の入力端子位置のデータは、チップ情報記憶部９０を介さずに、直接、チップ情報受付部１０１から受けてもよい。
【００３９】
なお、本実施形態の半導体集積回路設計装置100は、専用ＩＣ等のハードウエアで構成することができるが、制御装置、記憶装置、入力装置および表示装置からなる一般的なコンピュータにより構成することができる。これらの各部については図２２を用いて説明する。また、上記の各ユニットは、記憶装置に格納されたコンピュータプログラムにより動作する制御装置により、ROM(Read Only Memory)、RAM(Random Access Memory)などの記憶装置上に構築されて制御される。すなわち、半導体集積回路設計装置の各構成要素は、任意のコンピュータの制御装置としてのCPU(Central Processing Unit)1104、ROM(Read Only Memory)、RAM(Random Access Memory)など記憶装置としてのメモリ1103、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶ユニット1105、液晶ディスプレイ等の表示部1102、ネットワーク接続用インタフェース等の入出力部1101、各部を接続するバス1106を中心にハードウエアとソフトウエアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。
【００４０】
以下説明する各図は、ハードウエア単位の構成ではなく、機能単位のブロックを示している。なお、以下の図において、本実施形態の本質に関わらない部分の構成については省略してあり、図示されていない。
【００４１】
チップ情報記憶部90は、設計対象となる半導体集積回路チップのクロック素子を含むゲートレベルのネットリストに関する情報(チップデータ)を記憶する。ここで、クロック素子の集合は、回路の論理構造から同一のゲーティング論理でクロック信号の伝搬を制御できる部分集合に分割されている。この各部分集合の単位をゲーティッド回路とも称する。また、各クロック素子には配置座標が与えられている。
【００４２】
チップ情報受付部101は、チップデータを受け付け、チップ情報記憶部90に記憶する。チップ情報受付部101は、例えば、半導体集積回路設計装置100の図示されない、入出力インタフェースを介して、各種記録媒体または記憶装置、あるいはネットワークなどを介した他の装置からデータを入力して受け付けてもよいし、ユーザが操作入力したデータを受け付けてもよい。チップ情報記憶部90の情報は、必ずしも毎回受け付けて更新する必要はなく、既にチップ情報記憶部90に記憶されている情報を利用することもできる。
【００４３】
メッシュネット生成部102は、メッシュネット格子数候補から格子数を１つ選択し、チップ情報記憶部90に記憶される、全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成する。ここで、メッシュ配線構造としては、格子状配線などの構造を利用することが考えられる。メッシュネット格子数候補としては、例えば、2x2、4x4、8x8、のような縦横格子数の組合せで与えられる。メッシュネット形状は、全てのクロック素子を覆う縦横格子を生成し、各格子の中心を隣接する格子の中心と結ぶことにより生成され、各格子の中心にメッシュネット駆動バッファが配置され、その出力端子がメッシュネットと接続される。
【００４４】
メッシュネット遅延計算部103は、メッシュネット生成部102で生成したメッシュネットの遅延を計算する。
【００４５】
メッシュネット駆動構造生成部104は、メッシュネットを駆動するバッファツリーを生成する。ここでは、メッシュネットを直接駆動するバッファがバッファツリーの末端バッファとなり、クロックソースから、これら末端バッファ集合へクロック信号を分配するバッファツリーの構成および形状を決定する。ここでは、各末端バッファまでの遅延が同一になるように構成および形状を決定するが、このようなバッファツリーの生成には、例えば、Hツリー型、2分木型などの形状を利用することが可能である。 
【００４６】
メッシュネット駆動構造遅延計算部105は、メッシュネット駆動構造生成部104が生成したメッシュネット駆動構造における、クロックソースから末端バッファ入力端子までの遅延を計算する。
【００４７】
クロック素子階層クラスタ生成部106は、回路の論理構造から判断される同一のゲーティング論理でクロック信号の伝搬を制御できる集合単位とクロック素子の配置分布を考慮して、クロック素子のクラスタを生成する。具体的には、同一のゲーティング論理でクロック信号の伝搬を制御できるクロック素子集合を分割し、配置座標が近いクロック素子が同一クラスタに含まれるように、複数のクロック素子クラスタを生成する。この時、ひとつのクロック素子クラスタに含まれるクロック素子の数に上限が与えられる。この処理を繰り返すことにより階層的なクラスタリング構造が生成される。
【００４８】
クロックゲーティング構造生成部107は、クロック素子階層クラスタ生成部106で生成した各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入する。この処理は、例えば、選択対象となる階層を、最下位階層のクラスタから開始し、イネーブル信号の遅延制約を満たすまで、ひとつづつ上位階層に上げていく方法が考えられる。
【００４９】
ローカルクロック構造生成部108は、メッシュネットと複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成する。ここでは、例えば、ゲーティングセル毎に、ゲーティングセルの入力端子から最も近いメッシュネット構造上の点付近にバッファを配置し、このバッファ入力端子とメッシュネットを接続し、前記挿入したバッファ出力端子から該ゲーティングセルの入力端子への配線を生成し、前記各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続する。このゲーティングセルの出力端子とクロック素子の接続には、既存のクロックツリー生成手段を用いることもでき、本実施形態の本質に関わらないので詳細な説明は省略する。
【００５０】
ローカルクロック構造遅延計算部109は、ローカルクロック構造生成手段108により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算する。
【００５１】
クロック構造評価部110は、生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算する。メッシュネットを駆動するバッファツリー構造の遅延時間をD1、メッシュネット自体を駆動する遅延時間をD2、ゲーティッド回路を駆動する遅延時間D3とすると、D3 はクロック素子毎に異なる値となるため、このクロック構造の最小遅延時間はD1 + D2 + min{D3}、最大遅延時間はD1+D2+max{D3} となる。min{D3}はD3の最小値、max{D3}はD3の最大値を示す。このクロック構造の主なスキューは、メッシュネットまでは、短絡配線の効果により、ほぼ0に抑えることが可能であるため、ゲーティッド回路を駆動する遅延時間D3において発生する。ゲーティッド回路部分は、配線短絡を行っていないため、遅延バラつきの影響を緩和することができず、遅延バラつき係数をkとすると、このクロック構造のスキューは、max{D3}* (1 + k) - min{D3} * (1 - k) となる。ここで、k は0以上1未満の少数として与えられる。
【００５２】
クロック構造選択部111は、一連のクロック構造生成部群を、全てのメッシュネット格子数候補に対して適用することにより、クロック構造候補の集合を生成し、その中から、目的に合うクロック構造を選択する。
【００５３】
本実施形態の半導体集積回路設計装置100において、CPUが、ハードディスクに記憶されるプログラムをメモリに読み出して実行することにより、上記各ユニットの各機能を実現することができる。
【００５４】
本実施形態のコンピュータプログラムは、半導体集積回路設計装置100を実現させるためのコンピュータに、クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶する手順と、メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成する手順と、前記メッシュネット構造の遅延を計算する手順と、前記メッシュネット構造を駆動するメッシュネット駆動バッファツリー構造を生成する手順と、前記メッシュネット駆動バッファツリー構造の遅延を計算する手順と、前記チップ情報に含まれるクロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成する手順と、前記各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入する手順と、前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成する手順と、前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算する手順と、前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算する手順と、全てのメッシュネット格子数候補に対して、ローカルクロック構造候補の集合を生成し、その中から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択する手順と、を実行させるように記述されている。
【００５５】
このように構成された本実施形態の半導体集積回路設計装置100の動作について、以下に説明する。図２は、本発明の実施の形態に係る半導体集積回路の設計方法の処理手順の一例を示すフローチャートである。
【００５６】
本実施形態の半導体集積回路の設計方法は、
クロックゲーティング構造を含む半導体集積回路のチップ情報を受け付けて記憶し(ステップS101)、メッシュネット格子数候補から格子数を１つ選択し(ステップS102)、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成し(ステップS103)、前記メッシュネット構造の遅延を計算し(ステップS104)、前記メッシュネット構造を駆動するメッシュネット駆動バッファツリー構造を生成し(ステップS105)、前記メッシュネット駆動バッファツリー構造の遅延を計算し(ステップS106)、前記チップ情報に含まれるクロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成し(ステップS107)、前記各クロック素子階層クラスタに対して、まず、クロック素子の最下位階層を、イネーブル信号の接続対象として選択し(ステップS108)、選択したクロック素子階層にイネーブル信号を接続した時に、イネーブル信号の遅延が遅延制約を満たすかどうか確認し(ステップS109)、イネーブル信号の遅延制約を満たさなければ、イネーブル信号接続対象となるクロック素子階層を1階層上げて選択し直し(ステップS110)、再度、ステップS109で、イネーブル信号の遅延が遅延制約を満たすかどうか確認することを、イネーブル信号の遅延が遅延制約を満たすまで繰り返し、その結果、選択されたクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入し(ステップS111)、前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成し(ステップS112)、前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算し(ステップS113)、前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算し(ステップS114)、前記一連のクロック構造生成方法群を、全てのメッシュネット格子数候補に対して適用したかどうかを確認し(ステップS115)、まだ未適用のメッシュネット格子数が存在すれば、再度、ステップS102からS114までの処理を繰り返し、最終的に得られたクロック構造候補の集合の中から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択する(ステップS116)。
【００５７】
以下、図２乃至図１５を用いて具体的に説明する。
【００５８】
はじめに、チップ情報受付部101により、設計対象となる半導体集積回路チップのクロック素子を含むゲートレベルのネットリストに関する情報(チップデータ)の入力を受け付け、チップ情報記憶部90に記憶する(ステップS101)。ここで、フリップフロップの集合は、回路の論理構造から同一のゲーティング論理でクロック信号の伝搬を制御できる部分集合に分割されている。この各部分集合をゲーティッド回路とも称する。入力データに含まれるクロック分配回路は、図１８に示すような、クロックゲーティング構造を持っている。すなわち、クロックソース(16-01)からクロック素子(16-03)まで、ゲーティングセル(18-04)を介してクロック信号が分配され、ゲーティングセルはクロック信号とゲーティング信号(18-01、 18-02)の論理積(AND)を取ることにより、クロック信号の伝搬を制御する。ここで、同一のゲーティング信号以下にあるクロック素子をまとめて、ひとつのゲーティッド回路と呼ぶ。また、各クロック素子には配置座標が与えられているものとする。
【００５９】
次に、メッシュネット生成部102が、図５に示すように、メッシュネット格子数候補から格子数を１つ選択し(ステップS102)、チップ情報記憶部90に記憶された、全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造(17-02)を生成する(ステップS103)。ここで、メッシュ配線構造としては、格子状配線などの構造を利用することが考えられる。メッシュネット格子数候補としては、例えば、2x2、4x4、8x8、のような縦横格子数の組合せで与えられる。メッシュネット形状は、全てのクロック素子を覆う縦横格子を生成し、各格子の中心を隣接する格子の中心と結ぶことにより生成され、各格子の中心にメッシュネット駆動バッファ(17-03)が配置され、その出力端子がメッシュネットと接続される。図５では、(a)に4x4の格子点数、(b)に2x2の格子点数の例を、それぞれ、示している。
【００６０】
次に、メッシュネット遅延計算部103が、メッシュネット生成部102で生成したメッシュネット構造をチップ情報記憶部９０から受け、メッシュネットの遅延を計算する(ステップS104)。複数の駆動バッファを持つネットの遅延を精度良く、短時間で計算する方法は知られておらず、spiceのような回路シミュレーションを用いるのが一般的である。しかし、ここでは、最良なクロック構造探索が目的であるため、各構造に対して、回路シミュレーションを実行するのは現実的でない。この問題を解決するために、ここでは、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、あらかじめ、回路シミュレーションにより計算した遅延を保持しておき、利用する。図６に、メッシュネット構造の遅延を計算するために用いられる、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、メッシュネット自体の遅延(06-01)を保持する表の一例を示す。
【００６１】
メッシュネット駆動構造生成部104は、メッシュネットを駆動するバッファツリーを生成する(ステップS105)。ここでは、メッシュネットを直接駆動するバッファがバッファツリーの末端バッファとなり、クロックソース(16-01)から、これら末端バッファ集合(17-03)へクロック信号(07-01)を分配するバッファツリーの構成および形状を決定する。ここでは、各末端バッファまでの遅延(クロック信号07-01の経路の遅延)が同一になるように、ツリー上の中継バッファ(16-04)を含む、構成および形状(17-01)を決定するが、このようなバッファツリーの生成には、例えば、Hツリー型、2分木型などの形状を利用することが可能である。 図７にメッシュネット駆動バッファツリー構造の例を示す。図７(a)が4x4の格子数の場合、図７(b)が2x2の格子数の場合を、それぞれ示している。なお、ここでは簡単のため、16個または4個の末端バッファを持つ完全対称なクロック分配信号レイアウトの一例としてHツリー型の構造を示しているが、これに限定されない。
【００６２】
次に、メッシュネット駆動構造遅延計算部105が、メッシュネット駆動構造生成部104が生成したメッシュネット駆動バッファツリー構造における、クロックソースから末端バッファ入力端子までの遅延(クロック信号07-01の経路の遅延)を計算する(ステップS106)。図７に、遅延計算対象となるバッファツリー上の経路を示す。
【００６３】
次にクロック素子階層クラスタ生成部106が、チップ情報記憶部90に記憶される、回路の論理構造から判断される同一のゲーティング論理でクロック信号の伝搬を制御できる集合単位とクロック素子の配置分布を考慮して、クロック素子のクラスタを生成する(ステップS107)。具体的には、同一のゲーティング論理でクロック信号の伝搬を制御できるクロック素子集合を分割し、配置座標が近いクロック素子が同一クラスタに含まれるように、複数のクロック素子クラスタを生成する。この時、ひとつのクロック素子クラスタに含まれるクロック素子の数に上限が与えられる。この処理を繰り返すことにより階層的なクラスタリング構造が生成される。図８に、メッシュ構造(17-02)以下に接続するクロック素子(16-03)の階層クラスタリングの例を示す。まず、階層レベル1では、クロック素子数が、それぞれ、2、 3、 3、 2、 2、 3、 3、 2 である8つのクラスタ(08-01)が作られる。次に各クラスタの重心を参考に、レベル2のクラスタリングが行われ、クロック素子数が、それぞれ、5、 5、 8、 2である４つのクラスタ(08-02)が作られる。次に、レベル3のクラスタリングが行われ、クロック素子数が、それぞれ、10、 10 である2つのクラスタ(08-03)が作られる。図９は、図８の階層クラスタリングをレイアウトの観点から示した図である。図９(a)は、クロック素子(16-03)に対して、レベル１のクラスタリング(08-01)を終えた状態、図９(b)は、レベル2(08-02)および3のクラスタリング(08-03)を終えた状態を、それぞれ、示している。
【００６４】
次に、クロックゲーティング構造生成部107が、クロック素子階層クラスタ生成部106で生成した各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入する。より具体的には、まず、クロック素子の最下位階層クラスタを、イネーブル信号の接続対象として選択し(ステップS108)、選択したクロック素子階層にイネーブル信号を接続した時に、イネーブル信号の遅延が遅延制約を満たすかどうか確認し(ステップS109)、イネーブル信号の遅延制約を満たさなければ、イネーブル信号接続対象となるクロック素子階層を1階層上げて選択し直し(ステップS110)、再度、ステップS109で、イネーブル信号の遅延が遅延制約を満たすかどうか確認することを、イネーブル信号の遅延が遅延制約を満たすまで繰り返す。例えば、図８、図９の最下位階層クラスタをイネーブル信号接続対象とする、図１０のクロックゲーティング構造が生成される(04-04はイネーブル信号を示す)。これに対して、図１０に示したイネーブル信号(04-04)の遅延が上限制約を満たしているかどうかを確認する。図１１は、図１０の構造をレイアウト観点で表した図であり、16-04はイネーブル信号分配ツリー上の中継バッファを示す。図１０のイネーブル信号遅延(イネーブル信号のソースからゲーティングセル18-04への遅延)が上限制約以下でない場合、イネーブル信号の接続対象階層をひとつ上げた図１２のゲーティング構造が評価対象となる。図１０の場合と同様に各クラスタのルートに接続するイネーブル信号(04-04)の遅延が上限制約以下になっているかどうかがチェックされる。図１３は、図１２のゲーティング構造をレイアウト観点から表した図であり、図１１同様、16-04はイネーブル信号分配ツリー上の中継バッファを示している。その結果、選択されたクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセル(18-04)として挿入する(ステップS111)。 
【００６５】
次にローカルクロック構造生成部108が、前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成する(ステップS112)。ここでは、例えば、ゲーティングセル毎に、ゲーティングセルの入力端子から最も近いメッシュネット構造上の点付近にバッファを配置し、このバッファ入力端子とメッシュネットを接続し、前記挿入したバッファ出力端子から該ゲーティングセルの入力端子への配線を生成し、前記各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続する。このゲーティングセルの出力端子とクロック素子の接続には、既存のクロックツリー生成手段を用いることもでき、本実施形態の本質に関わらないので詳細な説明は省略する。図１４に、図１２および図１３で選択されたイネーブル信号接続階層から生成されたゲーティングクロック構造を示す。図１５は、図１４のゲーティングクロック構造をレイアウト観点から示した図である。メッシュ構造17-04の直後に中継バッファ16-04を挿入し、ゲーティングセル18-04との接続を行っている。ゲーティングセルからは、クロック素子16-03へのクロック信号分配が行われる。中継バッファ16-04、 ゲーティングセル18-04のバッファ駆動能力は、メッシュ構造17-02以降の各クロック素子への遅延04-03が全てのクロック素子で同一であり、かつ、できるだけ小さくなるように、調整される。
【００６６】
次に、ローカルクロック構造遅延計算部109が、前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算する(ステップS113)。具体的には、図１４に示す各ローカル構造の遅延04-03を計算することになる。
【００６７】
次に、クロック構造評価部110が、前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算する(ステップS114)。メッシュネットを駆動するバッファツリー構造の遅延時間をD1、メッシュネット自体を駆動する遅延時間をD2、ゲーティッド回路を駆動する遅延時間D3とすると、D3 はクロック素子毎に異なる値となるため、このクロック構造の最小遅延時間はD1 + D2 + min{D3}、最大遅延時間はD1+D2+max{D3} となる。このクロック構造の主なスキューは、メッシュネットまでは、短絡配線の効果により、ほぼ0に抑えることが可能であるため、ゲーティッド回路を駆動する遅延時間D3において発生する。ゲーティッド回路部分は、配線短絡を行っていないため、遅延バラつきの影響を緩和することができず、遅延バラつき係数をkとすると、このクロック構造のスキューは、max{D3}* (1 + k) - min{D3} * (1 - k) となる。ここで、k は0以上1未満の少数として与えられる。
【００６８】
次に、クロック構造選択部111が、前記一連のクロック構造生成方法群を、全てのメッシュネット格子数候補に対して適用したかどうかを確認し(ステップS115)、まだ未適用のメッシュネット格子数が存在すれば、再度、ステップS102からS114までの処理を繰り返し、最終的に得られたクロック構造候補の集合の中から、目的に合うクロック構造を選択する(ステップS116)。ここで、クロック構造の選択手段は、クロック最大遅延 D1 + D2 + max{D3}が上限制約以内で、クロックスキューmax{D3}* (1 + k) - min{D3} * (1 - k)が最小であるクロック構造、または、クロックスキューmax{D3}* (1 + k) - min{D3} * (1 - k)が上限制約以内で、クロック最大遅延 D1 + D2 + max{D3}を最小であるクロック構造を選択する。
【００６９】
以上説明したフローは、ステップＳ１０１からステップＳ１１６までの処理が順次シリーズに処理されている。しかし、ステップＳ１０１からステップＳ１０６までを第１の処理、ステップＳ１０７からステップＳ１１１までを第２の処理、ステップＳ１１２からステップＳ１１３までを第３の処理としたとき、第１の処理と第２の処理は並行に処理してもよく、第２の処理が第１の処理に先立って行われてもよい。
【００７０】
以上、説明したように、本実施形態の半導体集積回路の設計装置および設計方法によれば、低消費電力化に有効であるゲーティング構造を含むクロック分配回路に対して、製造バラつきを含むスキューの削減のために有効であるメッシュ構造を分割することなく、クロック構造全体の遅延とスキューおよびイネーブル信号遅延を総合的に考慮して、全クロック素子を同一のメッシュ構造以下に接続する最良なクロック構造を生成することが可能となる。これにより、クロック分配回路の低消費電力化と低遅延化および低遅延スキュー化が可能となる。
【００７１】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００７２】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００７３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下の構成には限られない。
（付記１）
クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶する記憶装置と、
メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネットを生成するメッシュネット生成手段と、
前記メッシュネット生成手段で生成した前記メッシュネットの遅延を計算するメッシュネット遅延計算手段と、
前記メッシュネットを駆動するバッファツリーを生成するメッシュネット駆動構造生成手段と、
前記メッシュネット駆動構造生成手段で生成したメッシュネット駆動構造の遅延を計算するメッシュネット駆動構造遅延計算手段と、
前記チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成するクロック素子階層クラスタ生成手段と、
前記クロック素子階層クラスタ生成手段で生成した各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入するクロックゲーティング構造生成手段と、
前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成するローカルクロック構造生成手段と、
前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算するとローカルクロック構造遅延計算手段と、
前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算するクロック構造評価手段と、
全てのメッシュネット格子数候補に対して行われた、ローカルクロック構造候補の集合から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択するクロック構造選択手段と、
を備えた、半導体集積回路の設計装置。
（付記２）
付記１記載の半導体集積回路の設計装置において、
前記クロックゲーティング構造生成手段は、
クロック素子の最下位階層クラスタを、イネーブル信号の接続対象として選択する手段と、選択したクロック素子階層にイネーブル信号を接続した時に、イネーブル信号の遅延が遅延制約を満たすかどうか確認する手段と、イネーブル信号の遅延制約を満たさなければ、イネーブル信号接続対象となるクロック素子階層を1階層上げて選択し直し、再度イネーブル信号の遅延が遅延制約を満たすかどうか確認する手段と、これらの手段による処理をイネーブル信号の遅延が遅延制約を満たすまで繰り返す手段と、を備える半導体集積回路の設計装置。
（付記３）
付記１記載の半導体集積回路の設計装置において、
前記メッシュネット遅延計算手段は、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、あらかじめ、回路シミュレーションにより計算した遅延を保持した表をライブラリとして備え、該ライブラリを遅延計算に利用することを特徴とする半導体集積回路の設計装置。
（付記４）
クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶し、
メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成し、前記メッシュネット構造の遅延を計算し、
前記メッシュネット構造を駆動するメッシュネット駆動バッファツリー構造を生成し、前記メッシュネット駆動バッファツリー構造の遅延を計算し、
前記チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成し、
前記各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入し、
前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成し、生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算し、
前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算し、
全てのメッシュネット格子数候補に対してローカルクロック構造候補の集合を生成し、その中から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択する、半導体集積回路の設計方法。
（付記５）
付記４記載の半導体集積回路の設計方法において、
クロックゲーティング構造生成において、まず、クロック素子の最下位階層クラスタを、イネーブル信号の接続対象として選択し、選択したクロック素子階層にイネーブル信号を接続した時に、イネーブル信号の遅延が遅延制約を満たすかどうか確認し、イネーブル信号の遅延制約を満たさなければ、イネーブル信号接続対象となるクロック素子階層を1階層上げて選択し直し、再度イネーブル信号の遅延が遅延制約を満たすかどうか確認し、これらの処理をイネーブル信号の遅延が遅延制約を満たすまで繰り返す、半導体集積回路の設計方法。
（付記６）
付記４記載の半導体集積回路の設計方法のメッシュネット遅延計算において、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、あらかじめ、回路シミュレーションにより計算した遅延を保持した表をライブラリとして用意しておき、遅延計算に利用する、半導体集積回路の設計方法。
（付記７）
半導体集積回路の設計装置として機能させるコンピュータに、
クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶する手順と、
メッシュネット格子数候補から格子数を１つ選択し、前記チップ情報に含まれる全てのクロック素子の入力端子位置を考慮して、前記選択した格子数のメッシュネット構造を生成する手順と、
前記メッシュネット構造の遅延を計算する手順と、
前記メッシュネット構造を駆動するメッシュネット駆動バッファツリー構造を生成する手順と、
前記メッシュネット駆動バッファツリー構造の遅延を計算する手順と、
前記チップ情報に含まれる、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを階層的に生成する手順と、
前記各クロック素子階層クラスタに対して、イネーブル信号の遅延制約を満たすように、イネーブル信号接続対象となるクロック素子階層を選択し、選択したクラスタ階層以下に含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記階層クラスタを駆動するゲーティングセルとして挿入する手順と、
前記メッシュネットと前記複製した各ゲーティングセル入力端子を接続し、ゲーティングセルからクロック素子までの接続構造を生成する手順と、
前記ローカルクロック構造生成手段により生成した各ローカルクロック構造について、メッシュネットの入力端子から各クロック素子までの遅延を計算する手順と、
前記生成したクロック構造全体について、クロック最大遅延と遅延バラつきを考慮したクロックスキューを計算する手順と、
全てのメッシュネット格子数候補に対して、ローカルクロック構造候補の集合を生成し、その中から、計算された各ローカルクロック構造遅延と計算された各クロックスキューとに基づいてクロック構造を選択する手順と、
を実行させるコンピュータプログラム。
（付記８）
付記７記載のコンピュータプログラムにおいて、
前記クロックゲーティング構造生成手順は、
クロック素子の最下位階層クラスタを、イネーブル信号の接続対象として選択する手順と、
選択したクロック素子階層にイネーブル信号を接続した時に、イネーブル信号の遅延が遅延制約を満たすかどうか確認する手順と、
イネーブル信号の遅延制約を満たさなければ、イネーブル信号接続対象となるクロック素子階層を1階層上げて選択し直し、再度イネーブル信号の遅延が遅延制約を満たすかどうか確認する手順と、
これらの手順をイネーブル信号の遅延が遅延制約を満たすまで繰り返す手順とを含むことを特徴とするコンピュータプログラム。
（付記９）
付記７記載のコンピュータプログラムにおいて、
前記メッシュネット遅延計算手順は、メッシュネット駆動バッファ数とメッシュネット容量の各組合せについて、あらかじめ、回路シミュレーションにより計算した遅延を保持した表をライブラリとして用意しておき、遅延計算に利用する手順を含むことを特徴とするコンピュータプログラム。
【産業上の利用可能性】
【００７４】
本発明は、クロックゲーティング構造およびメッシュ構造を持つクロック分配回路を含む半導体集積回路の配置配線を行う設計方法、設計装置および、コンピュータプログラムに適用される。
【符号の説明】
【００７５】
04-01   メッシュネット駆動バッファツリー構造の遅延時間
04-02  メッシュネット自体の遅延時間
04-03   ローカルクロック構造の遅延時間
04-04  イネーブル信号の遅延時間
06-01  対応するメッシュネット容量を対応する駆動バッファ数で駆動する時の遅延時間
07-01   メッシュネット駆動バッファツリー構造の遅延計算対象経路
08-01   クロック素子クラスタレベル1
08-02   クロック素子クラスタレベル2
08-03   クロック素子クラスタレベル3
16-01   クロックソース 
16-02   配線経路 
16-03   クロック素子 
16-04   中継バッファ
17-01   グローバル構造(Hツリー)
17-02   メッシュ構造 
17-03   グローバル構造末端バッファ 
17-04   グローバル構造・メッシュ接続配線 
18-01   ゲーティング信号1
18-02   ゲーティング信号2
18-03   ゲーティッド回路 
18-04   ゲーティングセル 
90    チップ情報記憶部
100  半導体集積回路設計装置
101  チップ情報受付部
102  メッシュネット生成部
103  メッシュネット遅延計算部
104  メッシュネット駆動構造生成部
105  メッシュネット駆動構造遅延計算部
106  クロック素子階層クラスタ生成部
107  クロックゲーティング構造生成部
108  ローカルクロック構造生成部 
109  ローカルクロック構造遅延計算部
110  クロック構造評価部
111  クロック構造選択部
【図１】
2011210053.tif 000003
【図２】
2011210053.tif 000004
【図３】
2011210053.tif 000005
【図４】
2011210053.tif 000006
【図５】
2011210053.tif 000007
【図６】
2011210053.tif 000008
【図７】
2011210053.tif 000009
【図８】
2011210053.tif 000010
【図９】
2011210053.tif 000011
【図１０】
2011210053.tif 000012
【図１１】
2011210053.tif 000013
【図１２】
2011210053.tif 000014
【図１３】
2011210053.tif 000015
【図１４】
2011210053.tif 000016
【図１５】
2011210053.tif 000017
【図１６】
2011210053.tif 000018
【図１７】
2011210053.tif 000019
【図１８】
2011210053.tif 000020
【図１９】
2011210053.tif 000021
【図２０】
2011210053.tif 000022
【図２１】
2011210053.tif 000023
【図２２】
2011210053.tif 000024