説明

レイアウト装置及びレイアウト方法

【課題】クロックツリー設計において、簡潔なスキュー調整をすることができるレイアウト装置及びレイアウト方法を提供すること。
【解決手段】本発明にかかるレイアウト装置1は、想定スキュー値記憶部141、遅延挿入部133、遅延調整部134を備える。想定スキュー値記憶部141は、クロックツリーの段数に応じて予め定められた想定スキュー値を格納する。遅延挿入部133は、想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延調整バッファ206を挿入する。遅延調整部134は、クロックツリーのスキュー値が要求スキュー値以下となるように、クロックツリーの配線後に、遅延調整バッファ206の遅延を調整する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はレイアウト装置及びレイアウト方法に関し、特に半導体集積回路のクロックツリー設計におけるレイアウト装置及びレイアウト方法に関する。
【背景技術】
【0002】
近年の半導体集積回路の高周波数化に伴い、同期化回路間のタイミングマージン確保が要求されている。そのため、クロックツリーのクロックスキューを小さくする必要がある。しかし、半導体集積回路の設計の際に、クロックスキューの調整に多くの設計時間を費やしている。
【0003】
一方で、半導体集積回路の大規模化に伴う同期化回路の増加により、クロックツリーの構造が大規模化している。そのため、クロックスキューの調整にさらに多くの設計時間を費やすこととなっている。このような背景から、半導体集積回路のクロックスキューを短時間で調整する要求(必要性)が高まってきた。
【0004】
特許文献1には、クロックスキューが閾値以下に収束する回路規模となるように、クロックツリーが有するフリップフロップを複数のグループに分割し、グループの前段に遅延バッファを挿入する技術が開示されている。分割後、グループの組み合わせ及び中継バッファの数の変更を繰り返すことによって、クロックが入力されるクロック端子から遅延バッファまでの階層数が所定の数となるようにクロックツリーを構成する。
【0005】
このとき、クロックツリーを構成するということは、起点であるクロック入力端子から対象バッファであるブロックまでを、入力容量と配線容量で決まる遅延量が均等になる様、中継バッファを用いて階層的に構成することである。
【0006】
なお、特許文献2には、データ接続経路の数に基づいて、半導体集積回路上のフリップフロップが配置された領域の分割を繰り返し、分割された領域のフリップフロップをツリー状に接続する技術が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2006−107206号公報
【特許文献2】特開2007−123336号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、クロックツリーの遅延量は、対象とするフリップフロップ、バッファ、ツリー等からなるブロックの数量や配置位置によって決まる。つまり、これらの数量や配置位置は実際にレイアウト配置し、配線しなければ決まらず、配線容量と入力容量から見積もる仮配線遅延時間と実配線遅延時間との差分は大きくなる。加えて、クロックツリー構造による多岐にわたるパス間においても、2点間のパスの配線後の遅延量は、2点間のパスの配置配線から見積もった遅延時間の差分よりも大きくなる。
【0009】
そのため、特許文献1に記載の技術では、クロック端子からクロックツリー末端までの複数あるクロックパスのクロック遅延の差分(以降、スキュー値と称す)のMAX値とMIN値の差分が、半導体集積回路のタイミング設計上許容されるスキュー値(以降、要求スキュー値と称す)を超える場合は、中継バッファを接続する対象ブロックの数を変えたり、中継バッファの数を変えたりして、再度配置配線を行い、要求スキュー値内に収まるまでクロックツリーを繰り返し構築しなければならない。
【0010】
したがって、クロック端子から遅延バッファまでのクロック経路が一回の配線工程で決まらず、制限された段数となるまでクロックツリーの段数を決定する工程に戻ってやり直さなければならない。その結果、クロックツリーの設計工程数が増大するという問題があった。
【課題を解決するための手段】
【0011】
本発明にかかるレイアウト装置は、クロックツリーの段数に応じて予め定められた想定スキュー値を格納する想定スキュー値記憶手段と、前記想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延手段を挿入する遅延挿入手段と、前記クロックツリーのスキュー値が前記要求スキュー値以下となるように、前記クロックツリーの配線後に、前記遅延手段の遅延を調整する遅延調整手段と、を備えるものである。このような構成によって、クロックツリーの配線後、遅延調整のためにクロックツリーの構造を変更する必要がないため、配線工程を削減できる。
【0012】
本発明にかかるレイアウト方法は、クロックツリーの段数に応じて予め定められた想定スキュー値を参照し、前記想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延手段を挿入し、前記クロックツリーのスキュー値が前記要求スキュー値以下となるように、前記クロックツリーの配線後に、前記遅延手段の遅延を調整するものである。これによって、クロックツリーの構造を変更することなく、遅延手段の遅延調整のみによりクロックツリーのスキュー値を調整できる。
【発明の効果】
【0013】
本発明により、クロックツリー設計において、簡潔なスキュー調整をすることができるレイアウト装置及びレイアウト方法を提供することができる。
【図面の簡単な説明】
【0014】
【図1】実施の形態1にかかるレイアウト装置の構成例を示す図である。
【図2】実施の形態1にかかるレイアウト方法を説明するためのフローチャートである。
【図3】実施の形態1にかかるレイアウト方法を説明するための詳細なフローチャートである。
【図4】実施の形態1にかかる想定スキュー値のテーブルを示す図である。
【図5】実施の形態1にかかる親クロックツリーの構成例を示す図である。
【図6】実施の形態1にかかるクロックツリーの構成例を示す図である。
【図7】実施の形態1にかかるクロックツリーの配線工程を示す図である。
【図8】実施の形態1にかかるクロックツリーの配線工程を示す図である。
【図9】実施の形態1にかかるクロックツリーの配線工程を示す図である。
【図10】実施の形態1にかかるクロックツリーの配線工程を示す図である。
【図11】実施の形態1にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図12】実施の形態1にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図13】実施の形態1にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図14】実施の形態1にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図15】実施の形態1にかかる配線後のクロックツリーの構成例を示す図である。
【図16】実施の形態1にかかる配線後のクロックツリーの遅延分布を示す図である。
【図17】実施の形態1にかかる配線後のクロックツリーの遅延分布を示す図である。
【図18】実施の形態1にかかる配線後のクロックツリーの遅延分布を示す図である。
【図19】実施の形態1にかかる配線後のクロックツリーの遅延分布を示す図である。
【図20】実施の形態1にかかる遅延調整バッファ挿入後のクロックツリーの構成例を示す図である。
【図21】実施の形態1にかかる遅延調整によるクロックツリーの遅延分布の変化を示す図である。
【図22】実施の形態1にかかる遅延調整によるクロックツリーの遅延分布の変化を示す図である。
【図23】実施の形態2にかかるレイアウト装置の構成例を示す図である。
【図24】実施の形態2にかかるレイアウト方法を説明するための詳細なフローチャートである。
【図25】実施の形態2にかかる配置面積を説明するための図である。
【図26】実施の形態2にかかる想定スキュー値のテーブルを示す図である。
【図27】実施の形態3にかかるレイアウト方法を説明するためのフローチャートである。
【図28】実施の形態3にかかるクロックツリーの配線工程を示す図である。
【図29】実施の形態3にかかるクロックツリーの配線工程を示す図である。
【図30】実施の形態3にかかるクロックツリーの配線工程を示す図である。
【図31】実施の形態3にかかるクロックツリーの配線工程を示す図である。
【図32】実施の形態3にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図33】実施の形態3にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図34】実施の形態3にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図35】実施の形態3にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図36】実施の形態3にかかる配線後のクロックツリーの構成例を示す図である。
【図37】実施の形態3にかかる配線後のクロックツリーの遅延分布を示す図である。
【図38】実施の形態3にかかる配線後のクロックツリーの遅延分布を示す図である。
【図39】実施の形態3にかかる配線後のクロックツリーの遅延分布を示す図である。
【図40】実施の形態3にかかる配線後のクロックツリーの遅延分布を示す図である。
【図41】実施の形態3にかかる遅延調整後のクロックツリーの構成例を示す図である。
【図42】実施の形態3にかかる遅延調整後のクロックツリーの遅延分布を示す図である。
【図43】実施の形態3にかかる遅延調整後のクロックツリーの遅延分布を示す図である。
【図44】実施の形態3にかかる遅延調整後のクロックツリーの遅延分布を示す図である。
【図45】実施の形態3にかかる遅延調整後のクロックツリーの遅延分布を示す図である。
【発明を実施するための形態】
【0015】
実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるレイアウト装置1の構成例を図1に示す。レイアウト装置1は、キーボード11、マウス12、処理装置13、記憶装置14、表示装置15を備える。
【0016】
キーボード11は、文字キー、数字キー、機能指示キー等を備えており、各種キー入力を行う。マウス12は、マウスカーソルの示す位置データを入力する。これらキーボード11及びマウス12等の入力装置によって、入力された論理回路のクロック信号のスキュー算出をするための指示、クロック信号のスキュー算出結果を検証する際の指示等の入力を行う。
【0017】
処理装置13は、CPU (Central Processing Unit) 131、メモリ132等を備えるマイクロコンピュータである。CPU131及びメモリ132は、例えばROM(Read Only Memory)やRAM(Random Access Memory)等からなる。処理装置13は、この装置全体の制御を司るとともに、クロック信号のスキュー算出するための演算の処理、クロック信号のスキュー算出結果を記憶装置14にファイル形式で記憶させる処理、記憶装置14に記憶されているクロック信号のスキュー算出結果を内部メモリに読み込む処理、クロック信号のスキュー算出結果等を表示装置15に表示させるための処理等を行う。
【0018】
また、処理装置13は、遅延バッファを挿入する遅延挿入部133、遅延バッファによる遅延時間を調整する遅延調整部134、親クロックツリーからクロックツリーを分割するツリー分割部135、クロックツリーの配線を行う配線部136も備える。
【0019】
記憶装置14は、想定スキュー値記憶部141を備える。想定スキュー値記憶部141は、例えば、HDD(Hard Disk Drive)やRAM等であり、クロック信号のスキュー算出結果やクロックツリー性能評価結果等を記憶する。表示装置15は、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)等のディスプレイ装置であって、クロック信号のスキュー算出結果及び各種メッセージ等を表示する。
【0020】
続いて、本実施の形態にかかるレイアウト方法について説明する。図2にレイアウト方法を説明するためのフローチャートを示す。はじめに、レイアウト装置1のキーボード11等を用いて、クロックツリーをレイアウトするために必要なデータを入力する(ステップS101)。このとき入力されるデータは、例えば、ネット情報、製品情報、クロックツリー性能評価結果、要求スキュー値(MIN、MAX)等の情報を入力する。
【0021】
次に、入力されたデータに基づいて、処理装置13が、クロックツリーの構造を決定する(ステップS102)。図3にステップS102の詳細なフローチャートを示す。
【0022】
まず、処理装置13が、ステップS101において入力されたネット情報、製品情報に基づいて、CTSバッファ(以降、駆動バッファと称す。)のドライブ能力から決定される駆動可能なFF(フリップフロップ)数をFとして求める(ステップS1021)。
【0023】
次に、処理装置13は、クロックツリーの末端側(フリップフロップの手前)に必要な駆動バッファの数n(駆動手段の数)をn=接続FF数の総数/Fで求める(ステップS1022)。例えば、対象となる一つのクロックドメインに接続されたFFの総数が320個、駆動バッファの駆動可能なFF数が20個であったとすると、クロックツリーの末端側に必要な駆動バッファ数nはn=320個/20個=16個となる。
【0024】
駆動バッファの数が決定すると、処理装置13は、親クロックツリーの段数(階層数)を決定する(ステップS1023)。例えば、クロックツリーを1つの始点、n個の終点とした2分岐構造のクロックツリーとした場合、それを構成する駆動バッファ及び中継バッファの段数、つまり親クロックツリーの段数をmとすると、m−1=logn、つまりm=(logn)+1で求める。このとき、親クロックツリーとは、配置配線がされておらず、以降のステップにおいて分割される前の仮のクロックツリーの構成を意味する。また、中継バッファとは、クロックツリーの各分岐点の前段に設けられるバッファを意味する。
【0025】
なお、logの底はクロックツリーの分岐数に対応しており、上記の例では2分岐構造であるためlogの底は2となる。前述の例に示すように、末端側に必要な中継バッファの数が16個の場合、親クロックツリーの段数mは以下の式によりm=5段と決定される。
【0026】
【数1】

【0027】
次に、処理装置13は、想定スキュー値記憶部141に格納されたクロックツリー性能評価結果を読み出し、クロックツリーの段数mに対応して想定されるスキュー値(以降、想定スキュー値と称す)dtを、図4のクロックツリー性能評価結果(想定スキュー値のテーブル)を参照して求める(ステップS1024)。前述の例に示すように、クロックツリーの段数mが5の場合、図4の表より想定スキュー値dtは400psとなる。なお、クロックツリー性能評価結果は、クロックツリー設計における評価実績等に基づいて、任意に設定される。
【0028】
クロックツリーの段数mに応じた想定スキュー値が決定すると、処理装置13は、想定スキュー値dtと要求スキュー値とを比較する(ステップS1025)。ここで、要求スキュー値とは、設計するクロックツリーに許容される遅延時間を意味する。想定スキュー値dtが要求スキュー値より大きい場合、想定している2分岐構造のクロックツリーが要求スキュー値を満足しないものとして、処理装置13は、クロックツリーの段数mを一つ減算して(ステップS1026)、減算後のクロックツリーの段数mとクロックツリー性能評価結果とに基づいて、再度想定スキュー値dtを求める(ステップS1024)。
【0029】
前述の例に示すように、クロックツリーの段数m=5、想定スキュー値dt=400psにおいて、要求スキュー値が250psの場合、想定スキュー値dtの方が大きくなる。そのため、処理装置13は、クロックツリーの段数を一つ減算し、m=4の場合の想定スキュー値dt=300psをステップS1024で求める。そして、再度想定スキュー値dtと要求スキュー値の比較を行う(ステップS1025)。今度も想定スキュー値dt=300ps>要求スキュー値250psとなり、想定スキュー値dtの方が大きい値となる。そのため、処理装置13は、クロックツリーの段数をさらに一つ減算し(ステップS1026)、m=3としてクロックツリー性能評価結果を参照し、想定スキュー値を求める(ステップS1024)。この結果、クロックツリーの段数m=3であれば、想定スキュー値dt=200psとなり要求スキュー値250psより小さいため、次のステップS1027に移る。
【0030】
次に、ステップS1023において求めた中継バッファの数nと中継バッファの段数mとに基づいて、ツリー分割部135が、対象としているクロックドメインを分割する分割数Jを以下の式で求める(ステップS1027)。そして、ツリー分割部135は、分割数に基づいて、親クロックツリーを複数のクロックツリーに分割する。
【0031】
【数2】

【0032】
前述の例に示すように、対象となるクロックドメインにおいて、2分岐構造としたクロックツリーの終端に必要な駆動バッファ数n=16、クロックツリーの段数m=3の場合、J=16/2の(3−1)乗=16/4=4分割となる。分割しなかった場合のクロックツリー(親クロックツリー200)を図5に示す。また、1つのクロックツリーのスキューを小さくする為、4分割した場合のクロックツリー2001〜2004を図6に示す。スキューの対象が320個から80個に低減されるので、想定スキュー値も小さくなる。
【0033】
このとき、各クロックツリー2001〜2004の最上位側に配置されたバッファをグループバッファ204(2041〜2044)と称す。最上位側とは、クロックツリーの分岐点のうち、クロックが入力されるクロック端子201に最も近い分岐点の前段側(クロック端子201側)を意味する。クロックツリー2001には、グループバッファ2041が設けられる。同様に、クロックツリー2002にはグループバッファ2042、クロックツリー2003にはグループバッファ2043、クロックツリー2004にはグループバッファ2044が設けられる。なお、末端側に接続されるものは、フリップフロップ205に限られず、ラッチ、マクロ等の論理回路であってもよい。
【0034】
以上のステップS1021〜S1027によって、処理装置13は、クロックツリーの構成を決定する。続いて、図2のフローチャートに戻り、ステップS103以降の工程について説明する。
【0035】
クロックツリーの構造が決定すると、処理装置13は、クロックツリーのバッファの配置を行う(ステップS103)。そして、配線部136は、図7〜10に示すように、フリップフロップ205から各グループバッファ2041〜2044までの配線を行う(ステップS104)。このときの各クロックツリー2001〜2004のスキュー値の遅延分布を図11〜図14にそれぞれ示す。図11〜図14においては、横軸はクロックツリーが有する各パスのスキュー値であり、縦軸は横軸で示されたスキュー値を有するパス数を意味している。前述したステップS1025において、想定スキュー値が要求スキュー値よりも小さくなるように設定されているため、図11〜図14に示すように、各クロックツリー2001〜2004の遅延分布曲線301〜304は、要求スキュー値の範囲内となる。
【0036】
そして、配線部136は、各グループバッファ204からクロック端子201までの配線を行う(ステップS105)。ステップS103〜ステップS105によって配線が完了したクロックツリーを図15に示す。このとき、クロック端子201から各グループバッファ2041〜2044までの配線は、図15に示すように、階層的ではなく一束で接続することが好ましい。つまり、クロック端子201と各グループバッファ2041〜2044とが、1つの分岐点を介して接続されることとなる。そのため、クロック端子201からクロックツリー2001〜2004までの段数は変化しない。また、クロック端子201から各グループバッファ2041〜2044までに加わる遅延量が全て同じになる。その結果、クロックツリー全体の段数が制限内か否かを判断し、制限内でない場合にツリーの再構築をする必要がない。
【0037】
次に、処理装置13は、クロック端子201からフリップフロップ205までの全てのパスの遅延時間を算出する(ステップS106)。遅延時間の算出結果に基づいて、処理装置13は、要求スキュー値を満たさないクロックツリーを検出する。具体的には、仮配線と実配線の差分や、ステップS105の配線によるスキュー見積からの遅延追加分により、要求スキュー値をオーバーしているクロックツリーのグループバッファを、グループバッファ2041〜2044の中から抽出する(ステップS107)。
【0038】
図16〜図19に、全ての配線を完了したクロックツリー2001〜2004のスキュー値の遅延分布曲線の一例をそれぞれ示す。図16において、クロックツリー2001の遅延分布曲線301は、要求スキュー値のMAXをオーバーしている。同様に、図19のクロックツリー2004の遅延分布曲線304も要求スキュー値のMINを下回っている。一方、クロックツリー2002、2003の遅延分布曲線302、303は、要求スキュー値を満たしている。この場合、処理装置13によって、グループバッファ2041とグループバッファ2044が抽出される。
【0039】
ステップS107において要求スキュー値を満たさないグループバッファ2041とグループバッファ2044が抽出されると、処理装置13は、当該グループバッファ2041、2044に対して要求値を満足する遅延調整バッファ206の挿入量を算出する(ステップS108)。なお、遅延調整バッファ206(遅延手段に対応する)とは、遅延時間が速くなる方向へシフトさせる高駆動型バッファ2061と、遅延時間が遅くなる方向へシフトさせる遅延バッファ2062との両方を意味する。
【0040】
前述の例において、クロックツリー2001では、図16に示すように、クロックツリーのスキューが要求スキュー値のMAX値をオーバーしている。そのため、処理装置13は、クロックツリー2001のスキューを変えることなく、遅延時間が速くなる方向へシフトさせ、要求スキュー値を満足させる高駆動型バッファ2061の挿入量を算出する。なお、高駆動型バッファ2061は、遅延挿入部133によって、グループバッファ2041の入力ピンとクロック端子201との間に挿入される。つまり、遅延挿入部133は、クロックツリー2001の最上位側に高駆動型バッファ2061を挿入する。
【0041】
同様に、クロックツリー2004では、要求スキュー値のMIN値をオーバーしている。そのため、処理装置13は、クロックツリー2004のスキューを変えることなく、遅延時間が遅くなる方向へシフトさせて要求スキュー値を満足させる遅延バッファ2062の挿入量を算出する。なお、遅延バッファ2062は、遅延挿入部133によって、グループバッファ2044の入力ピンとクロック端子201との間に挿入される。つまり、遅延挿入部133は、クロックツリー2004の最上位側に遅延バッファ2062を挿入する。
【0042】
そして、遅延調整部134は、遅延調整バッファ206を挿入、あるいは中継バッファ203またはグループバッファ204の変更を行う(ステップS109)。つまり、遅延調整部134は、クロックツリー2001または2004全体として遅延時間を調整する。例えば、クロックツリー全体の遅延時間を速めたい時は、高駆動型バッファ2061を、遅くしたい時は遅延バッファ2062を挿入する。
【0043】
遅延調整バッファ206挿入後のクロックツリーの回路を図20に示す。上述したように、グループバッファ2041の入力ピンとクロック端子201との間に高駆動型バッファ2061が挿入され、グループバッファ2044の入力ピンとクロック端子201との間に遅延バッファ2062が挿入される。なお、遅延調整部134は、遅延調整バッファ206の挿入により遅延を調整しているが、遅延量が可変のバッファを用いて各クロックツリーのスキュー値を調整してもよい。
【0044】
また、遅延調整を行ったクロックツリー2001の遅延分布を図21に、遅延調整を行ったクロックツリー2004の遅延分布を図22に示す。図21において、クロック端子201接続後、遅延調整バッファ206挿入前のクロックツリー2001の遅延分布曲線が、曲線3011である。それに対して、クロック端子201接続後、遅延調整バッファ206挿入後のクロックツリー2001の遅延分布曲線が曲線3012である。高駆動型バッファ2061の挿入によって、クロックツリー2001全体の遅延時間が速まっている。そして、高駆動型バッファ2061挿入後の遅延分布曲線3012は、要求スキュー値の範囲内に収まっている。
【0045】
一方、クロックツリー2004における遅延調整について図22を用いて説明する。クロック端子201接続後、遅延調整バッファ206挿入前のクロックツリー2004の遅延分布曲線が、曲線3041である。それに対して、クロック端子201接続後、遅延調整バッファ206挿入後のクロックツリー2004の遅延分布曲線が曲線3042である。図21におけるクロックツリー2001と同様に、遅延バッファ2062が挿入されることによって、クロックツリー2004の遅延分布曲線が曲線3041から曲線3042へと移動している。これによって、クロックツリー2004のスキューも要求スキュー値の範囲内に収まっている。したがって、ステップS109の遅延調整によって、クロックツリー2001〜クロックツリー2004の遅延が、すべて要求スキュー値の範囲内に収まる。以上のステップによって本実施の形態にかかるレイアウト方法の処理は終了する。
【0046】
このように、本実施の形態にかかるレイアウト装置及びレイアウト方法においては、クロックツリー性能評価結果を参照し、想定スキュー値を用いてクロックツリーの配線を行う。そして、仮配線と実配線の差分等によって、スキュー値に誤差が生じ、要求スキュー値を満たさない場合には、遅延調整バッファ206の挿入等によって、当該誤差を解消する。そのため、クロックツリーの配線及び遅延調整バッファ206の挿入が完了すると、スキュー調整のためにクロックツリーのツリー構造は変化させなくてよい。つまり、配線後にツリー構造は変化しないためクロックツリー2001〜2004のスキュー値は変わらない。その結果、クロックツリーの末端側からクロック端子201までの配線工程は1回だけで済む。したがって、配線後に再度分割や再配線を繰り返すことなく、遅延調整バッファ206の調整のみによって簡潔なスキュー調整を短時間で行うことができる。
【0047】
また、ツリー分割部135を備える構成により、クロックツリー全体のパスの数を削減することができる。そのため、スキューの対象を削減することとなり、クロック端子201からフリップフロップ205までの全てのパスの遅延時間を算出する時間を削減することができる。
【0048】
実施の形態2
本発明にかかる実施の形態2について説明する。図23に示した本実施の形態にかかるレイアウト装置2は、図1に示したレイアウト装置の構成に加えて、回路面積検出部137を備える。なお、その他の構成についてはレイアウト装置1と同様であるので、説明を省略する。
【0049】
続いて、本実施の形態にかかるレイアウト方法について、図24のフローチャートを用いて説明する。図24に示したフローチャートは、図3に示したフローチャートに加えて、ステップS201を備え、ステップS1024に替えてステップS202を備える。まず、実施の形態1において説明したように、キーボード11等を用いて、ネット情報、製品情報、クロックツリー性能評価結果、要求スキュー値(MIN、MAX)等の入力データを入力する(ステップS101)。このとき、本実施の形態においては、さらにセル設配置情報を入力する。セル配置情報とは、フリップフロップ等の論理回路がセル上にどのように配置されるかを示す情報である。
【0050】
次に、回路面積検出部137は、設計するクロックツリーが有するフリップフロップの配置面積Sを、セル配置情報に基づいて算出する(ステップS201)。図25を用いて、配置面積Sの算出方法を説明する。クロックツリーとの接続対象となるフリップフロップのセル配置情報の座標のX座標、Y座標を(X、Y)とすると、(Xmax−Xmin)×(Ymax−Ymin)で表される範囲を配置面積Sとする。図25においては、IC(Integrated Circuit)チップ401上における(Xmax−Xmin)×(Ymax−Ymin)の面積、すなわちS2が配置面積Sに相当する。
【0051】
以降のステップS1021〜ステップS1023については、実施の形態1と同様である。つまり、駆動バッファ202が駆動可能なフリップフロップ205の数Fを求め(ステップS1021)、そのFの値に基づいて、必要な駆動バッファ202の数を求める(ステップS1022)。そして、クロックツリーの段数を決定する(ステップS1023)。
【0052】
次に、処理装置13は、想定スキュー値記憶部141に格納されたクロックツリー性能評価結果を読み出す。そして、回路面積検出部137がステップS201において検出した配置面積SとステップS103において決定された段数mとに基づいて、クロックツリー性能評価結果を参照し、想定スキュー値dtを求める(ステップS202)。具体的には、処理装置13は、図26に示すような表を参照して想定スキュー値dtを見積もる。なお、図26に示す表は一例であり、これに限られるものではない。
【0053】
例えば、クロックツリーの段数mが5段であり、配置面積SがS2平方ミリメートルであるとすると、当該条件において想定されるスキュー値dtは400psとなる。
【0054】
そして、処理装置13は、想定スキュー値dtと要求スキュー値とを比較する(ステップS1025)。その結果、想定スキュー値dtが要求スキュー値を満たしている場合には、ツリー分割部135が、クロックツリーを分割する(ステップS1027)。一方、想定スキュー値dtが要求スキュー値を満たさない場合は、処理装置13は、クロックツリーの段数mを一段減らし(ステップS1026)、再度クロックツリー性能評価結果を参照し、想定スキュー値dtを求める(ステップS202)。
【0055】
以上によって、本実施の形態にかかるクロックツリー構造の決定が完了する(ステップS102)。なお、ステップS102以降の処理(ステップS103〜ステップS109)は、実施の形態1と同様であるため、説明を省略する。
【0056】
このように、本実施の形態にかかるレイアウト装置2及びレイアウト方法を用いると、想定スキュー値dtを求める際に配置面積Sがパラメータとして追加される。その結果、より正確な想定スキュー値dtを見積もることができる。
【0057】
実施の形態3
本発明にかかる実施の形態3について説明する。本実施の形態にかかるレイアウト装置の構成は、実施の形態1と同様であるため、構成の説明は省略する。図27に本実施の形態にかかるレイアウト方法のフローチャートを示す。本実施の形態にかかるレイアウト方法は、実施の形態1のレイアウト方法に加えて、遅延バッファの配置(ステップS301)を備える。また、本実施の形態にかかるレイアウト方法は、実施の形態1にかかるレイアウト方法のステップS107〜ステップS109に替えて、ステップS302〜ステップS304を備える。
【0058】
本実施の形態にかかるレイアウト方法について説明する。データ入力(ステップS101)からクロックツリーの配置(ステップS103)までは、実施の形態1と同様であるため、説明を省略する。
【0059】
クロックツリー配置が完了すると、配線(ステップS104、105)が行われる前に、遅延挿入部133が、クロック端子201と各クロックツリーのグループバッファ204との間に遅延バッファ2062を配置する(ステップS301)。このとき、遅延挿入部133は、クロックツリー2001〜2004のスキュー値が要求スキュー値dtを上回る個数の遅延バッファ2062を配置する。
【0060】
次に、配線部136が、フリップフロップ205からグループバッファ204までの配線を行う(ステップS104)。図7〜10と同様に、クロックツリー2001〜2004の配線を示す図を図28〜31に示す。また、ステップS104において配線され、遅延バッファ2062の接続前のクロックツリー2001〜2004の遅延分布を図32〜図35に示す。このときは、未だ遅延バッファ2062は接続されていないため、クロックツリー2001〜2004の遅延分布は、いずれも要求スキュー値dtの範囲内である。
【0061】
そして、クロック端子201と各グループバッファ204とが、遅延バッファ2062を介して接続される(ステップS105)。そのときの回路図を図36に示す。ステップS105において配線が行われると、それぞれのクロックツリー2001〜2004のスキュー値には遅延バッファ2062によって遅延が生じる。
【0062】
処理装置13は、クロック端子201からフリップフロップ205までの全てのパスの遅延時間を算出する(ステップS106)。図37〜図40に、算出したクロックツリー2001〜2004の遅延分布曲線を示す。図37〜図40に示すように、遅延バッファ2062の挿入により生じた遅延によって、クロックツリー2001〜2004の全ての遅延分布曲線301〜304が、要求スキュー値のMAXを超えている。
【0063】
遅延時間の算出結果に基づいて、処理装置13は、要求スキュー値のMAXをオーバーしたクロックツリーを検出し、当該クロックツリーのグループバッファ204を抽出する(ステップS302)。上述の例においては、全てのクロックツリーの遅延分布曲線が要求スキュー値のMAXをオーバーしているため、全てのグループバッファ2041〜2044が抽出される。
【0064】
そして、処理装置13は、要求スキュー値のMAXをオーバーした遅延量を算出し、当該算出結果に基づいて、遅延バッファ2062の削除量を算出する(ステップS303)。その後、算出された遅延バッファ2062の削除量に応じて、遅延調整部134は、遅延バッファ2062を削除する(ステップS304)。
【0065】
上述の例において、遅延バッファ2062を削除した後のクロックツリーの回路図を図41に示す。ステップS105による配線後の遅延分布曲線を見ると、クロックツリー2001の遅延分布曲線301は、要求スキュー値のMAXを大きくオーバーしている(図37参照)。そのため、遅延調整部134は、遅延バッファ2062を3個削除する。同様に、クロックツリー2002、2003の遅延分布曲線302、303は、クロックツリー2001の遅延分布曲線301ほど要求スキュー値のMAXをオーバーしていないので(図38、39参照)、遅延調整部134は、クロックツリー2002、2003から、遅延バッファ2062を2個削除する。さらに、クロックツリー2004の遅延分布曲線304は、要求スキュー値のMAXを少しだけオーバーしているため(図40参照)、遅延調整部134は、遅延バッファ2062を1個削除する。このように、遅延調整部134は、予め挿入していた遅延バッファ2062から算出した遅延量に相当する遅延バッファ2062を削除する。
【0066】
ここで、遅延調整部134が、遅延バッファ2062の削除により、遅延を調整した後のクロックツリー2001〜2004の遅延分布曲線を図42〜図45に示す。クロックツリー2001〜2004全ての遅延分布曲線301〜304が要求スキュー値の範囲内に収まっている。以上により、本実施の形態にかかるレイアウト方法の処理が終了する。
【0067】
このように、本実施の形態にかかるレイアウト方法においては、グループバッファ204とクロック端子201との間に要求遅延時間を上回る個数の遅延バッファ2062を挿入しておき、遅延バッファ2062を削除することによって遅延調整を行う。そのため、遅延調整部134の遅延調整過程において、遅延値の増加はなく、遅延値の短縮のみなので遅延調整が一方向に決まる。また、調整する遅延量は、削除された遅延バッファ2062分と、分断された配線による遅延量のみとなる。その結果、想定する遅延削減量と、遅延調整後のクロックツリーの遅延削減量とは、高い確度で一致し、遅延調整の回数を削減することが出来る。したがって、短時間の遅延調整が可能となる。
【0068】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【0069】
1、2 レイアウト装置
11 キーボード
12 マウス
13 処理装置
14 記憶装置
15 表示装置
131 CPU
132 メモリ
133 遅延挿入部
134 遅延調整部
135 ツリー分割部
136 配線部
137 回路面積検出部
141 想定スキュー値記憶部
200 親クロックツリー
201 クロック端子
202 駆動バッファ
203 中継バッファ
204 グループバッファ
205 フリップフロップ
206 遅延調整バッファ
301〜304、3011、3012、3041、3042 遅延分布曲線
401 ICチップ
2001〜2004 クロックツリー
2041〜2044 グループバッファ
2061 高駆動型バッファ
2062 遅延バッファ

【特許請求の範囲】
【請求項1】
クロックツリーの段数に応じて予め定められた想定スキュー値を格納する想定スキュー値記憶手段と、
前記想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延手段を挿入する遅延挿入手段と、
前記クロックツリーのスキュー値が前記要求スキュー値以下となるように、前記クロックツリーの配線後に、前記遅延手段の遅延を調整する遅延調整手段と、
を備えるレイアウト装置。
【請求項2】
親クロックツリーの末端側に配置された論理回路を駆動させる駆動手段の数と、前記駆動手段の数に応じた前記クロックツリーの段数とに基づいて、前記親クロックツリーから前記クロックツリーを分割するツリー分割手段をさらに備える請求項1に記載のレイアウト装置。
【請求項3】
前記想定スキュー値は、前記クロックツリーの段数に加え、前記論理回路が半導体基板上に配置される面積に応じて、予め定められている値である請求項1または2に記載のレイアウト装置。
【請求項4】
前記レイアウト装置は、クロックが出力されるクロック端子と前記クロックツリーとを配線する配線手段をさらに備え、
前記配線手段は、前記クロック端子と前記遅延手段とが、1つの分岐点を介して接続されるように配線を行う請求項1〜3のいずれか一項に記載のレイアウト装置。
【請求項5】
前記遅延挿入手段は、前記クロックツリーの配線前に、前記クロックツリーのスキュー値が前記要求スキュー値よりも大きくなるように、前記遅延手段を挿入する請求項1〜4のいずれか一項に記載のレイアウト装置。
【請求項6】
クロックツリーの段数に応じて予め定められた想定スキュー値を参照し、
前記想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延手段を挿入し、
前記クロックツリーのスキュー値が前記要求スキュー値以下となるように、前記クロックツリーの配線後に、前記遅延手段の遅延を調整するレイアウト方法。
【請求項7】
親クロックツリーの末端側に配置された論理回路を駆動させる駆動手段の数を決定し、
前記駆動手段の数に応じて、前記クロックツリーの段数を決定し、
前記駆動手段の数と前記クロックツリーの段数とに基づいて、前記親クロックツリーから前記クロックツリーを分割する請求項6に記載のレイアウト方法。
【請求項8】
前記想定スキュー値は、前記クロックツリーの段数に加え、前記論理回路が半導体基板上に配置される面積に応じて、予め定められている値である請求項6または7に記載のレイアウト方法。
【請求項9】
クロックが出力されるクロック端子と前記クロックツリーとの配線は、前記クロック端子と前記遅延手段とが、1つの分岐点を介して接続されるように配線を行う請求項6〜8のいずれか一項に記載のレイアウト方法。
【請求項10】
前記クロックツリーの配線前に、前記クロックツリーのスキュー値が前記要求スキュー値よりも大きくなるように、前記クロックツリーの最上位側に前記遅延手段を挿入する請求項6〜9のいずれか一項に記載のレイアウト方法。

【図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

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate


【公開番号】特開2011−154537(P2011−154537A)
【公開日】平成23年8月11日(2011.8.11)
【国際特許分類】
【出願番号】特願2010−15669(P2010−15669)
【出願日】平成22年1月27日(2010.1.27)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】