説明

半導体集積回路の設計方法、設計装置およびプログラム

【課題】製造バラつきの下で、クロックスキューの最小化しつつ、クロック信号部での消費電力を最小化する半導体集積回路の設計方法、設計装置および、コンピュータプログラムを提供する。
【解決手段】メッシュ配線構造を駆動するバッファツリーを生成するグローバルクロック構造生成部104と、クロック素子の配置分布とクロックゲーティング構造を考慮してクラスタを生成するクロック素子クラスタ生成部106と、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセルとして挿入するゲーティングセル複製・挿入部107と、ローカルクロック構造生成部109と、タイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルの駆動能力を調整するゲーティングセル駆動能力調整部111と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路の設計方法、設計装置およびコンピュータプログラムに関し、特に、クロックゲーティング構造およびメッシュ配線構造を持つクロック信号分配回路を含む半導体集積回路の配置配線を行う設計方法、設計装置およびプログラムに関する。
【背景技術】
【0002】
同期式半導体集積回路は、演算および演算の制御を行うための論理素子(以後、論理セルまたは論理ゲートとも称する)と、論理素子群の動作の同期を取るための順序回路素子(以後、クロック素子、フリップフロップ(FF)とも称する)から構成されている。
【0003】
各フリップフロップには、1つのクロック供給源(以後、クロックソースとも称する)から周期的に発振するクロック信号が供給される。クロック信号の立ち上がりまたは立下りで、フリップフロップが保持しているデータは論理素子群に供給される。論理素子は、供給されたデータを入力として演算および演算の制御を行い、その結果をフリップフロップに保存する。以上の処理は周期的に変化するクロック信号の立ち上がりまたは立下りで繰り返される。
【0004】
上述の同期式半導体集積回路を、クロック信号を基準にして、正常なタイミングで動作させるための、理想的なクロック信号分配回路の配置配線の条件は、いずれのフリップフロップのクロック入力端子においても、全く同じクロック信号波形が得られるようにすることである。
【0005】
しかし、実際には、クロック信号を引き回す配線、接続しているクロック素子の配置分布の疎密のために、フリップフロップ毎にクロック信号が到着する時間を全く同じにすることは困難である。フリップフロップ対における、クロック信号が到達する時間の差をクロックスキューと呼び、このクロックスキューが大きいと回路は正常動作しなくなる可能性がある。従って、クロック分配回路の配置配線では、可能な限りクロックスキューを最小化することが重要となる。
【0006】
クロック信号を分配するクロック信号分配回路の構成として、クロックソースから複数のバッファを経由するツリー状の配線経路を設定し、クロック信号をツリー状に各クロック素子へ分配するものがある。ここで、クロックソースから各クロック素子までのクロック信号の伝搬経路が同じ長さ、同じバッファ段数となるようにツリー形状を設定することにより、クロックスキューを低減することが可能となる。例えば、特許文献1に上述のようなツリー構造を生成する技術が示されている。この技術によるクロック信号分配回路の配置配線例を図12に示す。
【0007】
しかしながら、このようなクロック信号分配回路の構成にしても、実際の設計では、各経路形状のずれ、製造プロセスのバラつきなどの影響でクロックスキューが発生してしまうことは避けられない。特に、近年、半導体プロセスの微細化により、製造における品質バラツキによる遅延バラツキ問題が深刻化しており、これに伴い、クロックスキューの最小化は、さらに困難なものになっている。
【0008】
特許文献1記載の方法を、製造バラツキ耐性が強くなるように拡張する技術の例が、特許文献2に記載されているが、ツリー状の構造では、信号分岐先の遅延バラツキの差が生じることは避けられないため、クロックスキュー最小化には限界がある。
【0009】
また、回路の動作性能を向上させるために、フリップフロップ間の論理素子を経由するパスの遅延計算結果に基づき、意図的にフリップフロップ間にスキューを設定する技術も提案されている(関連技術が、例えば、特許文献3に記載されており、その例を図13に示す)。ここでは、遅延が大きい論理パスについて、始点側のクロック素子へのクロック信号到着時間を早め、終点側のクロック素子へのクロック信号到着時間を遅らせる(逆に、遅延が小さい論理パスについては、始点側のクロック素子へのクロック信号到着時間を遅らせ、終点側のクロック素子へのクロック信号到着時間を早める)ことにより、回路動作性能の向上を図っている。しかし、遅延バラツキが大きい状況下では、設計で正確にスキューを制御することが困難であるため、意図的にスキューを設定する技術も適用困難となる。
【0010】
そこで、このような製造バラツキの問題に対処するために、ツリー構造を持つクロック分配回路の末端バッファの出力を配線短絡することにより、クロックソースからの各クロック素子へのクロック信号到着時間差を最小化する技術が提案されている。この技術によれば、バッファの出力を配線短絡することにより、クロック供給源から異なる経路を経由してきたクロック信号が平均化され、製造バラツキによるクロックスキューを低減することが可能となる。例えば、クロックツリー構造の末端バッファの出力端子をメッシュ構造(格子構造とも呼ぶ)を持った配線に接続し、メッシュ構造配線から、クロック素子へクロック信号を分配する技術が、例えば、特許文献4、特許文献5、特許文献6で提案されている。図14に、クロック分配ツリーの末端バッファ出力を、メッシュ構造配線で短絡した例を示す。
【0011】
一方で、近年の半導体回路の大規模化、および、高速化の進歩は、クロック信号部での消費電力の増大を招いており、クロックスキュー削減に加えて、低消費電力化を実現するクロック配置配線設計技術も重要となってきている。
【0012】
クロック信号部の消費電力を削減する効果的な方法としては、ゲーティッドクロック回路設計手法が提案され、広く普及している(例えば、特許文献7に記載される技術)。これは、回路が動作しない場合に、クロックの動作も止めることにより、低消費電力化を図る技術であり、論理回路からゲーティング信号と呼ばれる制御信号をクロック分配回路上に接続し、クロック信号の伝搬を制御する。
【0013】
クロックゲーティングの例を、図15に示す。ゲーティング信号とクロック信号の論理積を取ることにより、クロック信号のクロック素子への分配を制御する論理ゲートをゲーティングセルと呼び、同一ゲーティング信号が接続するゲーティングセルからクロック信号が分配されるクロック素子の集合を、ゲーティッド回路と呼ぶ。ゲーティング信号が接続するゲーティングセルの入力端子をイネーブル端子と呼ぶ。
【0014】
さらに、近年では、低消費電力と低スキューの双方を実現するために、クロックゲーティングとメッシュ構造を組み合わせる技術が、例えば、特許文献8、特許文献9で提案されている。ここでは、図16に示すように、クロックゲーティングを適用する部分回路毎にメッシュ構造を適用している。これを、レイアウト構造で見ると、図17に示すように、それぞれのゲーティッド回路に対して生成したメッシュ構造を同一レイアウト領域上に重ね合わせることになる。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特許第2695078号
【特許文献2】特開2007−123336号公報
【特許文献3】特開2004−334468号公報
【特許文献4】特開2003−092352号公報
【特許文献5】特許第3920124号
【特許文献6】特開2007−214334号公報
【特許文献7】特開2009−053830号公報
【特許文献8】特開2003−109382号公報
【特許文献9】特開2007−019414号公報
【発明の概要】
【発明が解決しようとする課題】
【0016】
しかしながら、クロックゲーティングとメッシュ構造を組み合わせる技術では、図16、図17に示すように、クロックゲーティングを適用する部分回路毎にメッシュ構造を適用しているため、異なるメッシュ構造に接続するクロック素子対のスキューを十分に最小化できないという問題が存在する。すなわち、ゲーティング構造を含むクロック構成では、チップ内のクロック素子入力端子に接続する全てのバッファ出力を配線短絡するメッシュ形状配線を適用できず、ゲーティッド回路毎にメッシュ形状配線を設定することになるため、同一ゲーティッド回路内でのクロックスキューは低減できるものの、異なるゲーティッド回路間では、クロック信号の伝搬経路が異なり、クロックスキューが増大してしまう。
【0017】
また、通常、チップ上には異なるゲーティッド回路に属するクロック素子が混在して分布することが多いため、メッシュ構造を重ねて設定することは、多くの配線資源を消費することになり、配線性の悪化、消費電力の増加につながるという問題がある。
【0018】
回路動作向上を目的とした意図的スキュー設定についても、異なるゲーティッド回路に含まれるクロック素子対については、クロックスキューのバラツキを押えることが困難であるため、クロック素子対のスキューを適切に調整することも困難になる、という問題が存在する。
【0019】
(発明の目的)
本発明は、このような課題を解決するためになされたものであって、クロックゲーティング構造を持つクロック分配回路を含む半導体集積回路について、クロックスキューの最小化と回路動作性能の向上を可能とする配置配線を行う設計方法、設計装置およびプログラムを提供することにある。
【課題を解決するための手段】
【0020】
本発明の第1の半導体集積回路の設計装置は、クロックゲーティング構造を含む半導体集積回路のチップ情報を用いて、クロック素子と論理ゲートを配置するゲート配置手段と、全てのクロック素子の入力端子を覆うメッシュ配線構造を生成するメッシュ配線構造生成手段と、メッシュ配線構造を駆動するバッファツリーを生成するグローバルクロック構造生成手段と、グローバルクロックツリーとメッシュ配線構造を接続するグローバル構造・メッシュ接続手段と、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを生成するクロック素子クラスタ生成手段と、各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセルとして挿入するゲーティングセル複製・挿入手段と、メッシュ配線構造と各クロック素子クラスタを駆動するゲーティングセルを接続するメッシュ配線構造・クロック素子クラスタ接続手段と、各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続するローカルクロック構造生成手段とを備える。
【0021】
本発明の第1の半導体集積回路の設計方法は、クロックゲーティング構造を含む半導体集積回路のチップ情報を受け付け、クロック素子と論理ゲートを配置し、全てのクロック素子の入力端子を覆うメッシュ配線構造を生成し、メッシュ配線構造を駆動するバッファツリーを生成し、グローバルクロックツリーとメッシュ配線構造を接続し、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを生成し、各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセルとして挿入し、メッシュ配線構造と各クロック素子クラスタを駆動するゲーティングセルを接続し、各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続する。
【0022】
本発明の第1のプログラムは、半導体集積回路の設計装置であるコンピュータに、クロックゲーティング構造を含む半導体集積回路のチップ情報を受け付けて、クロック素子と論理ゲートを配置する処理と、全てのクロック素子の入力端子を覆うメッシュ配線構造を生成する処理と、メッシュ配線構造を駆動するバッファツリーを生成する処理と、グローバルクロックツリーとメッシュ配線構造を接続する処理と、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを生成する処理と、各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセルとして挿入する処理と、メッシュ配線構造と各クロック素子クラスタを駆動するゲーティングセルを接続する処理と、各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続する処理と、を実行させる。
【発明の効果】
【0023】
本発明によれば、低消費電力化に有効であるゲーティング構造を含むクロック分配回路に対して、製造バラつきを含むスキューの削減のために有効であるメッシュ配線構造を分割することなく、全クロック素子を同一のメッシュ配線構造以下に接続することが可能となる。これにより、クロック信号分配回路の低消費電力化と低クロックスキュー化が可能となる。
【図面の簡単な説明】
【0024】
【図1】本発明の実施の形態に係る半導体集積回路の設計装置の構成を示す機能ブロック図である。
【図2】本発明の実施の形態に係る半導体集積回路の設計方法の処理手順の一例を示すフローチャートである。
【図3】クロック分配回路の配置結果を示す図である。
【図4】クロック素子を覆うメッシュ配線構造の設定を示す図である。
【図5】末端バッファを4つ持つグローバルクロック構造の一例と、グローバル構造とメッシュ配線構造の接続を示す図である。
【図6】ゲーティング構造とクロック素子配置を考慮したクロック素子クラスタリングの一例を示す図である。
【図7】クロック素子クラスタへのゲーティングセル挿入と、ゲーティングセルとメッシュ配線構造の接続を示す図である。
【図8】ゲーティングセルとクロック素子を接続するローカルクロック構造生成の一例を示す図である。
【図9】本発明によって得られるメッシュ配線構造以下にクロックゲーティング構造を接続する回路構成の一例を示す図である。
【図10】クロック素子間のタイミング解析に基づいた、メッシュ配線構造以下に接続するクロックゲーティングセルの駆動能力調整の一例を示す図である。
【図11】ゲーティング構造が2段になっている回路構成の場合の、本発明によるメッシュ配線構造挿入結果の一例を示す図である。
【図12】特許文献記載のクロック分配方法を示す図である。
【図13】特許文献記載のクロックスキュー調整を示す図である。
【図14】特許文献記載のメッシュ配線構造挿入を示す図である。
【図15】特許文献記載のゲーティングクロック回路構成を示す図である。
【図16】特許文献記載のゲーティングクロックとメッシュ配線構造の組合せの回路構成を示す図である。
【図17】特許文献記載のゲーティングクロックとメッシュ配線構造の組合せのレイアウトを示す図である。
【発明を実施するための形態】
【0025】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
(第1の実施の形態)
図1は、本発明の実施の形態に係る半導体集積回路の設計装置の構成を示す機能ブロック図である。
【0026】
本実施の形態の半導体集積回路設計装置100は、クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶するチップ情報記憶部90と、チップ情報受付部101と、クロック素子と論理ゲートを配置するゲート配置部102と、全てのクロック素子の入力端子を覆うメッシュ配線構造を生成するメッシュ配線構造生成部103と、生成したメッシュ配線構造を駆動するバッファツリーを生成するグローバルクロック構造生成部104と、グローバルクロック構造とメッシュ配線構造を接続するグローバル構造・メッシュ接続部105と、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子群が含まれるようにクラスタを生成するクロック素子クラスタ生成部106と、各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセルとして挿入するゲーティングセル複製・挿入部107と、メッシュ配線構造と各クロック素子クラスタを駆動するゲーティングセルを接続するメッシュ配線構造・クロック素子クラスタ接続部108と、各ゲーティングセル出力端子とゲーティングセルが駆動するクロック素子クラスタ内のクロック素子入力端子を接続するローカルクロック構造生成部109と、クロック素子間の論理素子上パスのタイミング解析を行なう論理パス遅延計算部110と、クロック素子間の論理素子上パスのタイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルの駆動能力を調整するゲーティングセル駆動能力調整部111と、を備える。
【0027】
なお、本実施の形態の半導体集積回路設計装置100は、制御装置、記憶装置、入力装置および表示装置からなる一般的なコンピュータにより構成することができる。これらの各部については図示しない。また、上記の各ユニットは、記憶装置に格納されたコンピュータプログラムにより動作する制御装置により、ROM(Read Only Memory)、RAM(Random Access Memory)などの記憶装置上に構築されて制御される。なお、以下の図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
【0028】
すなわち、半導体集積回路設計装置の各構成要素は、任意のコンピュータのCPU(Central Processing Unit)、メモリ、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶ユニット、ネットワーク接続用インタフェースを中心にハードウエアとソフトウエアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下説明する各図は、ハードウエア単位の構成ではなく、機能単位のブロックを示している。
【0029】
チップ情報記憶部90は、設計対象となる半導体集積回路チップのクロック素子を含むゲートレベルのネットリストに関する情報(チップ情報)を記憶する。ここで、クロック素子の集合は、回路の論理構造から同一のゲーティング論理でクロック信号の伝搬を制御できる部分集合に分割されている。この各部分集合の単位をゲーティッド回路とも呼ぶ。
【0030】
チップ情報受付部101は、上記チップ情報を受け付け、チップ情報記憶部90に記憶する。チップ情報受付部101は、例えば、半導体集積回路設計装置100の図示されない、入出力インタフェースを介して、各種記録媒体または記憶装置、あるいはネットワークなどを介した他の装置からデータを入力して受け付けてもよいし、ユーザが操作入力したデータを受け付けてもよい。チップ情報記憶部90のチップ情報は、必ずしも毎回受け付けて更新する必要はなく、既にチップ情報記憶部90に記憶されている情報を利用することもできる。
【0031】
ゲート配置部102は、クロック素子と論理ゲートを配置する。このゲート配置部102は、既存の配置手段を用いることもでき、本発明の本質に関わらないので詳細な説明は省略する。
【0032】
メッシュ配線構造生成部103は、全てのクロック素子の入力端子を覆うメッシュ配線構造を生成する。ここで、メッシュ配線構造としては、格子状配線などの関連技術として提案されている構造を利用することが考えられる。
【0033】
グローバルクロック構造生成部104は、メッシュ配線構造を駆動するバッファツリーを、グローバルクロックツリーとして生成する。ここで、バッファツリーの形状としては、Hツリー型、2分木型などの従来から提案されている形状を使用することが考えられる。
【0034】
グローバル構造・メッシュ接続部105は、グローバルクロックツリーとメッシュ配線構造を接続する。ここでは、グローバルクロックツリーの末端バッファの出力端子から配線を引出し、メッシュ配線構造上の最も近い点に接続する。
【0035】
クロック素子クラスタ生成部106は、回路の論理構造から判断される同一のゲーティング論理でクロック信号の伝搬を制御できる集合単位とフリップフロップの配置分布を考慮して、クロック素子のクラスタを生成する。具体的には、同一のゲーティング論理でクロック信号の伝搬を制御できるクロック素子集合を分割し、配置座標が近いクロック素子が同一クラスタに含まれるように、複数のクロック素子クラスタを生成する。この時、1つのクロック素子クラスタに含まれるクロック素子の数に上限が与えられる。
【0036】
ゲーティングセル複製・挿入部107は、クロック素子クラスタ生成部106で生成した各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセルとして挿入する。この時、元のゲーティングセルに接続していたゲーティング信号も、分岐させ、複製された各ゲーティングセルのイネーブル端子への接続を生成する。
【0037】
メッシュ・クロック素子クラスタ接続部108は、メッシュ配線構造と各クロック素子クラスタを駆動するゲーティングセルの入力端子を接続する。具体的には、ゲーティングセルの入力端子から最も近いメッシュ配線構造上の点への配線を生成する。
【0038】
ローカルクロック構造生成部109は、各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続する。このローカルクロック構造生成部109には、既存のクロックツリー生成手段を用いることもでき、本発明の本質に関わらないので詳細な説明は省略する。
【0039】
論理パス遅延計算部110は、クロック素子間の論理素子上パスのタイミング解析を行なう。この論理パス遅延計算部110は、既存の論理パス遅延計算段を用いることもでき、本発明の本質に関わらないので詳細な説明は省略する。
【0040】
ゲーティングセル駆動能力調整部111は、クロック素子間の論理素子上パスのタイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルのサイズ、すなわち、駆動能力を調整し、クロック素子間の論理パス遅延と合わせて、回路動作がタイミング制約を満たすように、クロックスキューを調整する。
【0041】
本実施形態の半導体集積回路設計装置100において、CPUが、ハードディスクに記憶されるプログラムをメモリに読み出して実行することにより、上記各ユニットの各機能を実現することができる。
【0042】
本実施形態のコンピュータプログラムは、半導体集積回路設計装置100を実現させるためのコンピュータに、クロックゲーティング構造を含む半導体集積回路のチップ情報を記憶する手順と、クロック素子と論理ゲートを配置する手順と、全てのクロック素子の入力端子を覆うメッシュ配線構造を生成する手順と、メッシュ配線構造を駆動するバッファツリーを生成する手順と、グローバルクロックツリーとメッシュ配線構造を接続する手順と、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子のクラスタを生成する手順と、各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセルとして挿入する手順と、メッシュ配線構造と各クロック素子クラスタを駆動するゲーティングセルを接続する手順と、各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続する手順と、クロック素子間の論理素子上パスのタイミング解析を行なう手順と、クロック素子間の論理素子上パスのタイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルのサイズ、すなわち、駆動能力を調整し、クロック素子間のパス遅延と合わせて、回路動作がタイミング制約を満たすように、クロックスキューを調整する手順と、を実行させるように記述されている。
【0043】
(第1の実施の形態の動作の説明)
次に、図面を参照して、本実施の形態の動作について詳細に説明する。
【0044】
本実施の形態に係る本実施の形態による半導体集積回路設計装置100の動作について、以下に説明する。図2は、本発明の実施の形態に係る半導体集積回路の設計方法の処理手順の一例を示すフローチャートである。
【0045】
本実施の形態による半導体集積回路の設計方法は、クロックゲーティング構造を含む半導体集積回路のチップ情報を受付け(ステップS101)、クロック素子と論理ゲートを配置し(ステップS102)、全てのクロック素子の入力端子を覆うメッシュ配線構造を生成し(ステップS103)、メッシュ配線構造を駆動するバッファツリーを、グローバルクロックツリーとして生成し(ステップS104)、グローバルクロックツリーとメッシュ配線構造を接続し(ステップS105)、クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子のクラスタを生成し(ステップS106)、各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセルとして挿入し(ステップS107)、メッシュ配線構造と各クロック素子クラスタを駆動するゲーティングセルを接続し(ステップS108)、各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続し(ステップS109)、クロック素子間の論理素子上パスのタイミング解析を行ない(ステップS110)、クロック素子間の論理素子上パスのタイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルのサイズ、すなわち、駆動能力を調整し、クロック素子間の論理パス遅延と合わせて、回路動作がタイミング制約を満たすように、クロックスキューを調整する(ステップS111)。
【0046】
以下、図2乃至図11を用いて半導体集積回路の設計方法の処理手順について具体的に説明する。
【0047】
はじめに、チップ情報受付部101により、設計対象となる半導体集積回路チップのクロック素子を含むゲートレベルのネットリストに関する情報(チップ情報)の入力を受け付け、チップ情報記憶部90に記憶する(ステップS101)。ここで、フリップフロップの集合は、回路の論理構造から同一のゲーティング論理でクロック信号の伝搬を制御できる部分集合に分割されている。この各部分集合をゲーティッド回路とも呼ぶ。入力するチップ情報に含まれるクロック分配回路は、図15に示すような、これまでに提案されている一般的なクロックゲーティング構造を持っている。
【0048】
次に、チップ情報受付部101によりチップ情報記憶部90に記憶された論理回路に対して、ゲート配置部102が、論理ゲートとフリップフロップの配置を、ネットリストのセル間接続とフリップフロップ間タイミング制約に基づいて行い、図3のようなクロック素子配置結果を生成する(ステップS102)。図3では簡単のため、クロック素子12−03以外の論理ゲートは省略している。また、同一の符号が振られているクロック素子(例えば、F1、F2等)は、同一のゲーティング論理によりクロック信号の伝搬を制御されること、すなわち同一のゲーティッド回路に属していることを意味している。
【0049】
次に、メッシュ配線構造生成部103が、図4に示すように、全てのクロック素子の入力端子を覆うメッシュ配線構造14−02を生成する。なお、ここでは簡単のため、メッシュ配線構造の一例として4×4の格子状配線構造を示しているが、これに限定されないことは言うまでもない。
【0050】
次に、グローバルクロックツリー生成部104が、図5に示すように、メッシュ配線構造を駆動するバッファツリー14−01を、グローバルクロックツリーとして生成する(ステップS104)。なお、ここでは簡単のため、4個の末端バッファを持つ完全対称なクロック分配信号レイアウトの一例としてHツリー型の構造を示しているが、これに限定されない。
【0051】
次に、グローバル構造・メッシュ接続部105は、図5の14−04に示すように、グローバルクロックツリーとメッシュ配線構造を接続する(ステップS105)。ここでは、グローバルクロックツリーの末端バッファの出力端子から配線を引出し、メッシュ配線構造上の最も近い点に接続する。
【0052】
次に、クロック素子クラスタ生成部106が、回路の論理構造から判断される同一のゲーティング論理でクロック信号の伝搬を制御できる集合単位とフリップフロップの配置分布を考慮して、フリップフロップのクラスタを生成する(ステップS106)。
【0053】
具体的には、図6に示すように、同一のゲーティング論理でクロック信号の伝搬を制御できるクロック素子の集合を、座標が近いクロック素子が同一クラスタに含まれるように分割し、クラスタ06−01の集合を生成する。この時、1つのクラスタに含まれるクロック素子の数と分布面積に上限を与えることもできる。図6では、6つのクロック素子クラスタ06−01が生成されている。クロック素子クラスタ生成部106では、1つのクラスタに含まれるクロック素子の数と分布範囲が、製造バラツキが問題にならない程度の数と分布範囲になるように、クロック素子のクラスタリングが行なわれる。
【0054】
次に、ゲーティングセル複製・挿入部107が、図7に示すように、クロック素子クラスタ生成部106で生成された各クロック素子クラスタ06−01(図6)に対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、クラスタを駆動するゲーティングセル15−04として挿入する(ステップS108)。この時、元のゲーティングセルに接続していたゲーティング信号も、分岐して、複製された各ゲーティングセルのイネーブル端子への接続を生成する。
【0055】
次に、メッシュ配線構造・各クロック素子クラスタ接続部108が、図7の07−01に示すように、メッシュ配線構造と各クロック素子クラスタを駆動するゲーティングセルを接続する(ステップS108)。具体的には、ゲーティングセルの入力端子から最も近いメッシュ配線構造上の点へ配線を生成する。
【0056】
次に、ローカルクロック構造生成部109が、図8に示すように、各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続する配線08−01を生成する(ステップS109)。このローカルクロック構造生成部109は、既存のクロックツリー生成手段を用いることもでき、本発明の本質に関わらないので詳細な説明は省略する。
【0057】
上記の処理により、入力時のクロック分配回路構成(図15)は、図9に示すように、回路全体を覆うメッシュ配線構造の下に、ゲーティングセルを介して、クロック素子が接続される構造となる。このため、異なるゲーティッド回路に含まれるクロック素子対のクロックスキューも最小化することが可能となる。
【0058】
次に、論理パス遅延計算部110は、クロック素子間の論理素子上パスのタイミング解析を行なう(ステップS110)。図10に、メッシュ配線構造14−02、ゲーティングセル10−01、10−02、10−03、クロック素子クラスタ15−03、クロック素子間論理10−04、10−05の関係図を示す。
【0059】
ここで、回路動作を保証するための遅延条件は、例えば、クロックソース12−01から、メッシュ配線構造14−02、ゲーティングセル10−01およびゲーティングセル10−01に接続するクロック素子クラスタ10−06を経由して、ゲーティングセル10−02に接続するクロック素子クラスタ10−07に到達する遅延の合計が、クロックソース12−01から、メッシュ配線構造14−02、ゲーティングセル10−02を経由してゲーティングセル10−02に接続するクロック素子クラスタ10−07に到達する遅延の合計にクロック周期を足した時間よりも小さくなることである。論理パス遅延計算部110は、これらの遅延計算を行う。この論理パス遅延計算部110は、既存の論理パス遅延計算段を用いることもでき、本発明の本質に関わらないので詳細な説明は省略する。
【0060】
次に、ゲーティングセル駆動能力調整部111は、クロック素子間の論理素子上パスのタイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルのサイズ、すなわち、駆動能力を調整し、クロック素子間のパス遅延と合わせて、回路動作が遅延条件を満たすように、クロックスキューを調整する(ステップS111)。
【0061】
図10では、論理回路10−05の論理パス遅延が大きく、遅延条件を違反しており、一方、論理回路10−04の論理パス遅延は、十分、小さいとする。この時、ゲーティングセル10−02の駆動能力を大きく調整、ゲーティングセル10−03の駆動能力を小さく調整、することにより、回路の動作遅延条件を満たすことが可能になる。製造バラツキの大きい条件下では、このような遅延調整は、困難であるが、メッシュ配線構造を挿入することにより、ゲーティングセルまでのスキューを製造バラツキ込みで低減することが可能であるため、メッシュ配線構造以下の遅延調整が容易となる。
【0062】
次に、図11(a)に、ゲーティング構造が2段になっている回路構成11−01を含むクロック分配回路を示す。ゲーティング構造が2段になっている回路構成は、大きな論理単位でのクロック停止と、小さな論理単位でのクロック停止を組み合わせるために、一般的に採用されている。この場合、図11(b)に示すように、多段になっている2つのゲーティング信号の論理積を取ったゲーティング信号を、クロック素子クラスタを駆動するゲーティングセル11−04のイネーブル端子に接続することにより、メッシュ配線構造を分割することなく、全てのクロック素子を同一のメッシュ配線構造以下に接続することが可能となる。
【0063】
ゲーティング構造が2段になっている回路構成も、本発明による半導体集積回路の設計装置および設計方法で生成可能である。すなわち、クロック素子クラスタ生成部106で、ゲーティング信号の組み合わせが異なるクロック素子が同一のクロック素子クラスタに含まれないようにクロック素子集合を分割するように考慮すれば良い。ゲーティングの段数が3段以上の場合に対しても、本発明は同様に適用可能である。
【0064】
(第1の実施の形態による効果)
次に本実施の形態の効果について説明する。
【0065】
以上、説明したように、本実施形態の半導体集積回路の設計装置および設計方法によれば、低消費電力化に有効であるゲーティング構造を含むクロック分配回路に対して、製造バラつきを含むスキューの削減のために有効であるメッシュ配線構造を分割することなく、全クロック素子を同一のメッシュ配線構造以下に接続することが可能となる。
【0066】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【0067】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0068】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【0069】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【0070】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施する時には、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【0071】
さらに、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【符号の説明】
【0072】
06−01:クロック素子クラスタ
07−01:メッシュ・クロック素子クラスタ接続
08−01:ローカルクロック構造
10−01、10−02、10−03:ゲーティングセル
10−04、10−05:論理回路
10−06、10−07、10−08:クロック素子クラスタ
11−01:2段ゲーティング構造
11−02:2段目のゲーティング信号
11−03:2段目のゲーティングセル
11−04:1段目と2段目をゲーティング論理の論理積を含むゲーティングセル
12−01:クロックソース
12−02:配線経路
12−03:クロック素子
12−04:中継バッファ
13−01:遅延調整用バッファ
13−02:論理回路
14−01:グローバル構造(Hツリー)
14−02:メッシュ配線構造
14−03:グローバル構造末端バッファ
14−04:グローバル構造・メッシュ接続配線
15−01:ゲーティング信号1
15−02:ゲーティング信号2
15−03:ゲーティッド回路
15−04:ゲーティングセル
100:半導体集積回路設計装置
90:チップ情報記憶部
101:チップ情報受付部
102:ゲート配置部
103:メッシュ配線構造生成部
104:グローバルクロック構造生成部
105:グローバル構造・メッシュ接続部
106:クロック素子クラスタ生成部
107:ゲーティングセル複製・挿入部
108:メッシュ配線構造・クロック素子クラスタ接続部
109:ローカルクロック構造生成部
110:論理パス遅延計算部
111:ゲーティングセル駆動能力調整部

【特許請求の範囲】
【請求項1】
クロックゲーティング構造を含む半導体集積回路のチップ情報を用いて、クロック素子と論理ゲートを配置するゲート配置手段と、
全てのクロック素子の入力端子を覆うメッシュ配線構造を生成するメッシュ配線構造生成手段と、
前記メッシュ配線構造を駆動するバッファツリーを生成するグローバルクロック構造生成手段と、
前記グローバルクロックツリーと前記メッシュ配線構造を接続するグローバル構造・メッシュ接続手段と、
クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを生成するクロック素子クラスタ生成手段と、
前記各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記クラスタを駆動するゲーティングセルとして挿入するゲーティングセル複製・挿入手段と、
前記メッシュ配線構造と前記各クロック素子クラスタを駆動するゲーティングセルを接続するメッシュ配線構造・クロック素子クラスタ接続手段と、
前記各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続するローカルクロック構造生成手段と
を備えることを特徴とする半導体集積回路の設計装置。
【請求項2】
クロック素子間論理パスのタイミング解析を行なう論理パス遅延計算手段と、
クロック素子間の論理素子上パスの前記タイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルの駆動能力を調整するゲーティングセル駆動能力調整手段と
をさらに備えることを特徴とする請求項1に記載の半導体集積回路の設計装置。
【請求項3】
クロックゲーティング構造が多段構造である場合、前記クロック素子クラスタ生成手段が、ゲーティング信号の組み合わせが異なるクロック素子が同一のクロック素子クラスタに含まれないようにクロック素子集合を分割することを特徴とする請求項1に記載の半導体集積回路の設計装置。
【請求項4】
前記ゲート配置手段は、ネットリストのセル間接続とフリップフロップ間タイミング制約に基づいてクロック素子と論理ゲートを配置することを特徴とする請求項1から請求項3のいずれか1項に記載の半導体集積回路の設計装置。
【請求項5】
前記メッシュ配線構造・クロック素子クラスタ接続手段は、ゲーティングセルの入力端子から最も近いメッシュ配線構造上の点へ配線を生成することを特徴とする請求項1から請求項4のいずれか1項に記載の半導体集積回路の設計装置。
【請求項6】
前記ゲーティングセル駆動能力調整手段は、クロック素子間のパス遅延と合わせて、回路動作が遅延条件を満たすように、クロックスキューを調整することを特徴とする請求項2から請求項5のいずれか1項に記載の半導体集積回路の設計装置。
【請求項7】
クロックゲーティング構造を含む半導体集積回路のチップ情報を受け付け、クロック素子と論理ゲートを配置し、
全てのクロック素子の入力端子を覆うメッシュ配線構造を生成し、
前記メッシュ配線構造を駆動するバッファツリーを生成し、
前記グローバルクロックツリーと前記メッシュ配線構造を接続し、
クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを生成し、
前記各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記クラスタを駆動するゲーティングセルとして挿入し、
前記メッシュ配線構造と前記各クロック素子クラスタを駆動するゲーティングセルを接続し、
前記各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続することを特徴とする半導体集積回路の設計方法。
【請求項8】
クロック素子間論理パスのタイミング解析を行なうステップと、クロック素子間の論理素子上パスの前記タイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルの駆動能力調整を行うステップを含むことを特徴とする請求項7に記載の半導体集積回路の設計方法。
【請求項9】
クロックゲーティング構造が多段になっている場合は、クロック素子クラスタを生成するステップで、ゲーティング信号の組み合わせが異なるクロック素子が同一のクロック素子クラスタに含まれないようにクロック素子集合を分割することを特徴とする請求項7に記載の半導体集積回路の設計方法。
【請求項10】
前記ゲートを配置するステップにおいて、ネットリストのセル間接続とフリップフロップ間タイミング制約に基づいてクロック素子と論理ゲートを配置することを特徴とする請求項7から請求項9のいずれか1項に記載の半導体集積回路の設計方法。
【請求項11】
前記メッシュ配線構造とゲーティングセルを接続するステップにおいて、ゲーティングセルの入力端子から最も近いメッシュ配線構造上の点へ配線を生成することを特徴とする請求項7から請求項10のいずれか1項に記載の半導体集積回路の設計方法。
【請求項12】
前記ゲーティングセルの駆動能力調整を行うステップにおいて、クロック素子間のパス遅延と合わせて、回路動作が遅延条件を満たすように、クロックスキューを調整することを特徴とする請求項8から請求項11のいずれか1項に記載の半導体集積回路の設計方法。
【請求項13】
半導体集積回路の設計装置であるコンピュータに、
クロックゲーティング構造を含む半導体集積回路のチップ情報を受け付けて、クロック素子と論理ゲートを配置する処理と、
全てのクロック素子の入力端子を覆うメッシュ配線構造を生成する処理と、
前記メッシュ配線構造を駆動するバッファツリーを生成する処理と、
前記グローバルクロックツリーと前記メッシュ配線構造を接続する処理と、
クロック素子の配置分布とクロックゲーティング構造を考慮して、異なるゲーティッド回路に含まれるクロック素子が混在せず、かつ、近傍に配置されたクロック素子の集合が含まれるようなクロック素子のクラスタを生成する処理と、
前記各クロック素子クラスタに対して、そのクラスタに含まれるクロック素子が属するゲーティッド回路にクロック信号を分配するゲーティングセルを複製して、前記クラスタを駆動するゲーティングセルとして挿入する処理と、
前記メッシュ配線構造と前記各クロック素子クラスタを駆動するゲーティングセルを接続する処理と、
前記各ゲーティングセルとゲーティングセルが駆動するクロック素子クラスタ内のクロック素子を接続する処理と、を実行させることを特徴とするプログラム。
【請求項14】
前記コンピュータに、
クロック素子間論理パスのタイミング解析を行なう処理と、クロック素子間の論理素子上パスの前記タイミング解析結果に基づき、クロック素子クラスタを駆動するゲーティングセルの駆動能力調整を行う処理と、をさらに実行させることを特徴とする請求項13に記載のプログラム。
【請求項15】
クロックゲーティング構造が多段になっている場合は、クロック素子のクラスタ生成処理が、ゲーティング信号の組み合わせが異なるクロック素子が同一のクロック素子クラスタに含まれないようにクロック素子集合を分割する処理をに実行させることを特徴とする請求項13に記載のプログラム。
【請求項16】
前記ゲートを配置する処理において、ネットリストのセル間接続とフリップフロップ間タイミング制約に基づいてクロック素子と論理ゲートを配置することを特徴とする請求項13から請求項15のいずれか1項に記載のプログラム。
【請求項17】
前記メッシュ配線構造とゲーティングセルを接続する処理において、ゲーティングセルの入力端子から最も近いメッシュ配線構造上の点へ配線を生成することを特徴とする請求項13から請求項16のいずれか1項に記載のプログラム。
【請求項18】
前記ゲーティングセルの駆動能力調整を行う処理において、クロック素子間のパス遅延と合わせて、回路動作が遅延条件を満たすように、クロックスキューを調整することを特徴とする請求項14から請求項17のいずれか1項に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−128682(P2011−128682A)
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【出願番号】特願2009−283886(P2009−283886)
【出願日】平成21年12月15日(2009.12.15)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】