クロック信号供給回路の設計方法、情報処理装置およびプログラム
【課題】半導体集積回路におけるクロック信号の供給において、回路全体を通しクロックラインを短縮し得る構成を提供することを目的とする。
【解決手段】回路素子のグループ間で回路素子の交換、移動を実行し、当該実行の前後でグループごとに回路素子の位置と中心位置との距離の合計し更に全グループについて合計した値が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化を実行する構成である。
【解決手段】回路素子のグループ間で回路素子の交換、移動を実行し、当該実行の前後でグループごとに回路素子の位置と中心位置との距離の合計し更に全グループについて合計した値が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化を実行する構成である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はクロック信号供給回路の設計方法、情報処理装置およびプログラムに係り、特に一のクロックバッファによってクロック信号が供給される回路素子のグループ分けの方法に関する。なおクロックバッファとは、クロック信号を中継する機能を有するバッファを意味する(以下同様)。
【背景技術】
【0002】
半導体集積回路において、フリップフロップ等の回路素子に対し、クロックバッファを用いてクロック信号を供給する。この場合、一のクロックバッファによってクロック信号が供給される回路素子のグループを形成する。なお以下の説明において「グループ」とは一のクロックバッファによってクロック信号が供給される回路素子のグループを意味し、そのようなグループを形成することをグループ分けあるいはグループ化と称する。
【特許文献1】特開2007−27841号公報
【特許文献2】特開2007−128429号公報
【特許文献3】特開平7−134626号公報
【特許文献4】特開平11−214517号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
効果的なグループ分けを行い得るクロック信号供給回路の設計方法を提供することが目的である。
【課題を解決するための手段】
【0004】
クロック信号供給回路の設計方法では以下に示す最適化を行う。すなわちグループ間で回路素子の交換および移動のうちの少なくとも何れか一方を実行する。そして各グループの中心位置と当該グループ内の各回路素子との間の距離を合計する。更に当該グループごとの合計を全グループにつき合計する。そして全グループのついての合計が減少する場合に前記交換および移動のうちの少なくとも何れか一方の実行後のグループを維持する。他方全グループのついての合計が減少しない場合には前記交換および移動のうちの少なくとも何れか一方の実行前のグループを維持する。そして当該最適化を反復する。結果的に得られた各グループにつき、当該グループの中心位置にクロックバッファを設け、グループ内の各回路素子にクロック信号を供給する。
【発明の効果】
【0005】
クロック信号供給回路の設計方法において、上記最適化では各グループの中心位置と当該グループ内の各回路素子との間の距離を合計の全グループのついての合計が減少する場合に前記交換および移動のうちの少なくとも何れか一方の実行後のグループを維持する。他方全グループのついての合計が減少しない場合には前記交換および移動のうちの少なくとも何れか一方の実行前のグループを維持する。更に最適化を反復する。このため、全グループを通し、各グループのクロックバッファから各回路素子までの距離が効果的に短縮される。
【発明を実施するための最良の形態】
【0006】
例えばフリップフロップのセットアップタイミング、ホールドタイミングの条件を満たすためにはクロックスキューを小さくする必要がある。なおクロックスキューとは、例えばクロック信号がフリップフロップに供給される際にフリップフロップ間で生ずる遅延差を意味する(以下同様)。またクロックバッファは動作率が高いため、回路全体の消費電力の削減のため設置個数を少なくすることが望ましい。
【0007】
またクロックバッファからフリップフロップ等の回路素子までの配線長を短縮し、そのばらつきを低減することが望ましい。またクロックバッファのファンアウトを一定数以下とすることが望ましい。なおクロックバッファのファンアウトとは、クロックバッファを用いてクロック信号を供給する際、一のクロックバッファによってクロック信号が供給される回路素子の個数を意味する(以下同様)。また許容ファンアウトとは、ファンアウトの許容値を意味する(以下同様)。またクロックドメインごとにグループ化を行う必要がある。
【0008】
実施例によるクロック信号供給回路の設計方法では、半導体集積回路の回路設計において、回路に含まれる各フリップフロップに対しクロック信号を供給する際、最初にいわゆるH型クロックツリーを作成する。ここでH型クロックツリーとはフリップフロップ等の回路素子にクロック信号を供給するための配線経路の構造である(以下同様)。そして上記H型クロックツリーの末端から各フリップフロップまでをクロックバッファを介してクロックラインで接続する。ここでクロックラインとはクロック信号を供給する配線を意味する(以下同様)。より具体的には、回路に含まれるフリップフロップをグループ化し、各グループに対し一のクロックバッファを割り当て、H型クロックツリーの末端から各クロックバッファに対しクロックラインを接続する。また各クロックバッファから該当するグループに属するフリップフロップとの間もクロックラインで接続する。その結果、H型クロックツリーの末端から、各クロックバッファを介し、それぞれのフリップフロップにクロックラインが接続される。その結果、同クロックラインを通じてクロック信号がそれぞれのフリップフロップに供給される。
【0009】
実施例では上記グループ化を行う際、最初に仮のグループ化(以下初期グループ化と称する)を行い、初期グループ化で得られたグループに対し後述する最適化を反復して行う。最適化とは、グループ間のフリップフロップの交換や移動を含む。更に前記交換や移動のたび、各グループの中心位置と当該グループに属するフリップフロップとの間の距離の合計を計算し、更にグループごとの合計を全グループについて合計する。全グループについての合計が減少する場合に、上記グループ間のフリップフロップの交換や移動後のグループを維持する。全グループについての合計が減少しない場合には、上記グループ間のフリップフロップの交換や移動前のグループを維持する。また最適化は、一定の条件を満たす場合に行うグループ同士の結合を含む。そして上記最適化を反復して行う。
【0010】
各グループの中心位置には、当該グループに属するフリップフロップに対しクロック信号を供給するクロックバッファが設けられる。したがって各グループの中心位置と当該グループに属するフリップフロップとの間の距離が短いほど、クロックバッファから各フリップフロップに接続するクロックラインが短い。その結果クロックスキューを低減することもできる。
【0011】
上記の如く最適化を反復して行うことにより最適なグループ化を行うことができる。その結果高周波数の領域(GHz帯等)において、クロックスキューを効果的に低減し得るフリップフロップのグループ化を行える。
【0012】
上記最適化の動作は、当該動作をコンピュータに実行させるためのプログラムにより自動化し得る。すなわち上記最適化のための一連の手続きをアルゴリズムとして規定し、プログラム化する。ここで当該プログラムによる処理量は取り扱うフリップフロップの個数に対し線形で増加する。したがって処理量が現実的な程度に収まり、その際に必要とされるメモリの記憶領域も現実的な程度に収まるように上記プログラムを提供し得る。ここで上記最適化を反復して実行する場合、上記各グループの中心位置と当該グループに属するフリップフロップとの間の距離の合計の更にグループごとの合計は、上記反復に対し、収束する。
【0013】
図1は実施例のクロック信号供給回路の設計方法におけるデータの流れを説明するための図である。
【0014】
図1中、設計者は半導体集積回路のネットリスト1,レイアウトデータ2に加え、最適化の実行に係るエリアの定義、許容ファンアウトおよび反復回数等のパラメータ3を設定する。
【0015】
上記ネットリスト1,レイアウトデータ2およびパラメータ3は、コンピュータにおいて、前記プログラムにしたがって、記憶装置からCPUによって読み込まれ(4)、CPUによりグループ化(5)がなされる。すなわちコンピュータはプログラムにしたがって上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップをグループ化する。ここでは上記最適化が適宜反復して実行され、最適なグループ化がなされる。そしてグループ化で得られたグループに基づきコンピュータにより、ネットリストおよびレイアウトデータ上、クロックバッファの挿入およびクロックラインの接続がなされる。なおクロックバッファの挿入およびクロックラインの接続については図14とともに後述する。そしてクロックバッファの挿入およびクロックラインの接続がなされた状態のネットリスト7およびレイアウトデータ8がCPUにより記憶装置に書き込まれる(6)。またこの場合、別途上記グループ化の内容を示す情報「グループデータ」9もCPUにより記憶装置に書き込まれる。設計者はグループデータ9を見てグループ化の内容をマニュアルで編集することができる。
【0016】
このように設計者により編集されたグループデータをコンピュータに入力することにより、同編集後のグループデータがCPUにより記憶装置から読み取られ(4)、同編集後のグループデータに基づいてクロックバッファの挿入およびクロックラインの接続がなされる。そしてこの場合もクロックバッファの挿入およびクロックラインの接続がなされたネットリスト7およびレイアウトデータ8がCPUにより記憶装置に書き込まれる(6)。
【0017】
図2は上記実施例によるクロック信号供給回路の設計方法をコンピュータで実現するためのプログラムのアルゴリズムの大略の流れを説明するため図である。
【0018】
同アルゴリズムは、初期グループ化S100,最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400を含む。これらS100、S200,S300,S400の手順を実行後、終了判定S500が実行される。終了判定S500では、一定の条件を満たす場合には図2に示される一連の手順の終了を決定する。一定の条件を満たさない場合には再度上記最適化1、2,3(S200,S300,S400)の各手順が反復される。
【0019】
図3は上記初期グループ化S100の詳細を説明するための図である。
【0020】
図3中、ステップS101にて、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップから一のフリップフロップを選択する。この選択の順序は例えばネットリスト上の番号による。ステップS102にて、既にグループが存在するか否かを判定する。初期段階ではグループは存在しないため(NO),ステップS106に移行する。ステップS106にて、当該一のフリップフロップが属するグループを設定する。そしてステップS107にて、当該一のフリップフロップの位置に基づき、回路のレイアウト上で当該グループのエリアを設定する。
【0021】
次にステップS108にて、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップの全てが、ステップS101で既に選択されたかを判定する。ここで上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップの全てが選択された場合とは、上記全てのフリップフロップが、ステップS106で設定されたグループに属する場合を意味する。回路に含まれる全てのフリップフリップがステップS101で選択されてはいなかった場合、ステップS101に戻る。
【0022】
ステップS101にて、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップから、上記一のフリップフロップ以外の他のフリップフロップを選択する。次にステップS102にて、既にグループが存在するか否かを判定する。ここでは既に上記ステップS106でグループが設けられている(YES)。このためステップS103に移行する。なおここで、ステップS106にて新たなグループが作成された直後のステップS102においては、当該新たなグループが選択される。また、直前のステップS103,S104がともにYESであり、ステップS105で処理中のフリップフロップが当該グループに追加された場合においても、その直後のステップS102では当該グループが選択される。他方、直前のステップS103あるいはS104の結果がNOとなり、その結果次のステップS105にて現在処理中のフリップフロップを当該グループに追加することができない場合の直後のステップS102では、当該グループ以外の既存のグループが選択される。
【0023】
次にステップS103にて、ステップS101で選択されたフリップフロップが、ステップS102にて選択されたグループにつき、ステップS107で設定されたエリア内に位置するか否かを判定する。エリア内に位置する場合、次にステップS104にて、前記選択されたグループにつき、ステップS106で設定されたグループに属するフリップフロップの個数が、上記パラメータ3に含まれる許容ファンアウト以内か否かを判定する。許容ファンアウト以内であれば(YES)、ステップS105にて、ステップS101で選択されたフリップフロップを、ステップS106で当該グループに追加する。そしてステップS107にて、当該グループに属するフリップフロップの位置に基づき、当該グループのエリアを更新する。
【0024】
その後ステップS108にて再び上記の如く、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップの全てが、ステップS101で選択されたかを判定する。回路に含まれる全てのフリップフリップがステップS101で選択されてはいなかった場合、ステップS101に戻る。以降ステップS101,S102,S103,S104,S105、S107、S108のループを反復実施する。
【0025】
但し当該反復実施において、ステップS101では、前回までのステップS101にて既に選択されたフリップフロップ以外のフリップフロップをその都度選択する。またステップS103において使用されるエリアは、直前のステップS107で更新後のエリアである。
【0026】
また上記反復実施の間、ステップS103にて、直前のステップS101で選択されたフリップフロップが直前のステップS107で更新後の、当該グループのエリア内に位置しない場合(NO)、ステップS102に戻る。そこで、上記の如く、当該グループ以外のグループを新たに選択し、当該新たな選択に係るグループにつき、ステップS103以降の動作を行う。同様にステップS104にて、当該グループに属するフリップフロップの個数が許容ファンアウトを超過する場合、ステップS102に戻る。そこで、上記の如く、当該グループ以外のグループを新たに選択し、当該新たな選択に係るグループにつき、ステップS103以降の動作を行う。またこのようにしてステップS102にてグループが順次選択された結果、現に存在する全てのグループの各々についてのステップS103以降の動作が既に終了しており、新たに選択するグループが存在しない場合(NO)、ステップS106に移行する。ステップS106にて、直前のステップS101で選択されたフリップフリップにつき新たなグループを作成する。そして当該新たなグループにつき、ステップS107以降の動作を行う。
【0027】
このようにして、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップの全てが、ステップS106で設定された何れかのグループに属するようになる。
【0028】
図4A乃至4Gとともに、図3とともに上述した初期グループ化S100の動作の具体例を説明する。
【0029】
図4Aの例は、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップとして、図示の如く、番号1乃至19を有する計19個のフリップフロップが含まれる。
【0030】
図4Bでは、番号1のフリップフロップが選択され、当該フリップフロップが属するグループとしてグループ1、G1が設定されている。またグループ1、G1に対するエリアとして、エリア1、A1が設定されている。この例の場合、エリアはグループの中心を中心とする一定サイズの正方形として得られる。グループの中心は、グループに属するフリップフロップのx、y各座標の最大値および最小値のそれぞれの中心のx、y座標の位置である。エリアの決定方法に関し、図5A,5Bとともに後述する。
【0031】
図4Cは、番号1乃至8までの計8個のフリップフリップが処理された状態を示す。なおこの例の場合、上記許容ファンアウトとして8が設定されている。また図3のステップS101におけるフリップフロップの選択は、各フリップフロップの番号順になされるものとする。また図3のS107でエリア内に位置するか否かを判定する場合、当該エリア内に処理対象のフリップフロップがその一部分でも含まれていれば当該フリップフロップは当該エリアに位置すると判定する。その結果、番号1乃至8迄のフリップフロップの各々は、図3のステップS103,S104の条件を満たし、ステップS105でグループ1、G1に追加される。その結果図4Cに示されるように、番号1乃至8のフリップフロップはグループ1、G1に属することになる。
【0032】
なおエリア1、A1は、このようにして対応するグループ1、G1に属するフリップフロップが増加するごとにステップS107で更新される。図4Cの場合、グループ1、G1には番号1乃至8の計8個のフリップフリップが属するため、同8個のフリップフリップが属するグループ1,G1の中心を中心とする一定のサイズの正方形としてエリア1、A1が更新される。その結果、図4Bに示す、番号1のフリップフロップのみがグループ1、G1に属する場合のエリア1、A1に対し、図4Cの状態では、エリア1、A1が更新され、右方向にずれて設定されている。次にステップS108にて未だ全てのフリップフロップ、すなわち番号1乃至19の計19個のフリップフロップが処理済みではないため、ステップS101に戻る。
【0033】
ステップS101にて、次の番号9のフリップフロップが選択される。次にステップS102にて、上記処理中のグループ1,G1が選択される。図4Dは上記番号9のフリップフロップが処理された状態を示す。ここでは、上記の如く許容ファンアウトは8なので、番号9のフリップフロップの場合、ステップS104からステップS102に移行する。ステップS102にて他のグループが存在するか否かを判定する。この場合当該グループ1、G1意外にグループは存在しない。このため次にステップS106に移行し、上記処理中の番号9のフリップフロップにつき新たなグループ2,G2を作成する。次にエリア2(図4Dでは省略)が設定される(ステップS107)。
【0034】
図4Eは、引き続き番号10乃至15のフリップフロップが順次処理された後の状態を示す。この状態では、グループ2、G2には番号9乃至15の計7個のフリップフロップが属し、同7個のフリップフロップが属するグループ2,G2の中心を中心とする一定サイズの正方形としてエリア2、A2が設定されている。また上記7個は許容ファンアウト8以内である。
【0035】
図4Fは、引き続き番号16のフリップフロップが処理された後の状態を示す。番号16のフリップフロップは上記グループ2、G2のエリア2、A2内に位置しないため、ステップS103からステップS102に移行する、ステップS102では、他のグループとして、グループ1,G1が選択される。しかしながら当該番号16のフリップフロップは上記グループ1,G1のエリアA1に含まれない。そこでステップS103からステップS102に移行する。ステップS102にて、他には未処理のグループは存在しないため、ステップS106に移行する。ステップS106にて、当該番号16のフリップフロップにつき新たなグループ3、G3が設定され、エリア3、A3が設定されている(ステップS107)。次にステップS108にて、未だ全てのフリップフロップ、すなわち番号1乃至19の計19個のフリップフロップが処理済みではないため、ステップS101に戻る。
【0036】
図4Gは、引き続き番号17乃至19のフリップフロップが順次処理された後の状態を示す。この状態では、グループ3、G3には番号16乃至19の計4個のフリップフロップが属し、同4個のフリップフロップが属するグループ3,G3の中心を中心とする一定サイズの正方形としてエリア3、A3が設定されている。また上記4個は許容ファンアウト8以内である。この状態では、ステップS108にて、回路に含まれる全てのフリップフロップ、すなわち番号1乃至19の計19個のフリップフロップが処理済みであるため、図2の初期グループ化S100が終了する。
【0037】
次に図5A,5Bとともに、グループのエリアの決め方について説明する。
【0038】
図5Aに示す如く、クロックバッファBが許容ファンアウト8のフリップフロップFF(以下単にフリップフロップと称する)にクロック信号を供給する場合を想定する。そしてフリップフロップが最も密に配置された領域より大きくなるように、当該グループの中心からのノルムを決定する。この場合、当該決定されたノルムの範囲としてエリアの最小サイズを得る。
【0039】
更にまた図5Bに示される如く、上記同様、クロックバッファBが許容ファンアウト8のフリップフロップにクロック信号を供給する場合を想定する。そしてこの場合、距離が長くなりすぎる(クロックスキューが大きくなる)領域より小さくなるようにノルムを決定する。そして当該決定されたノルムの範囲としてエリアの最大サイズを得る。エリアのサイズとして、上記最小サイズと最大サイズとの間の何れかのサイズを選ぶことができる。
【0040】
また上記の如く、グループに属するフリップフロップが変動してグループが変化すると、当該グループの中心の座標が変化する。そのため、グループが変化するたびにエリアを再計算して更新する。
【0041】
以下に実施例に適用可能な様々なノルムの例を示す。
・グループのエリアの領域を規程するもののうちの一のものとしてのユークリッドノルムを以下に示す。
【0042】
【数1】
ここでx1=x、x2=yとした場合、このノルムの範囲はユークリッド距離が一定の値の範囲となり、したがって円形の範囲となる。
・グループのエリアの領域を規程するもののうちの他の一のものとしての最大値ノルムを以下に示す。
【0043】
【数2】
ここでx1=x、x2=yとした場合、このノルムの範囲はx、yの各々の値の最大値が一定の値の範囲となり、したがって正方形の範囲となる。
・グループのエリアの領域を規程するもののうちの更に他の一のものとしてのp次平均ノルムを以下に示す。
【0044】
【数3】
ここでx1=x、x2=yとし、更にpが1の場合、このノルムの範囲はx、yの合計が一定の値の範囲となり、したがって菱形の範囲となる。
【0045】
上記図4A乃至4Gの例の場合および以下に述べる例の場合、上記の如く、x、y座標の各々においてグループに属する全てのフリップフロップの最大座標および最小座標の中間の座標の位置をグループの中心とする。そして当該グループの中心からのノルムを上記図5A、5Bとともに述べた条件で決定する。そしてこのようにして決定されたノルムの範囲としてエリアを得る。図4A乃至4Gの例の場合および以下に述べる例の場合、上記最大値ノルムが使用され、上記グループの中心を中心とする正方形のエリアが決定される。
【0046】
次に上記最適化1(交換)および最適化2(移動)について詳細に説明する。
【0047】
図6A,6Bは上記した初期グループ化S100によって得られたグループの例を示す。
【0048】
図6Aに示す如く、この例の場合、計20個のフリップフロップが3個のグループ、グループ1乃至3、G1、G2,G3にグループ化されている。また図6Aには、これらグループ1乃至3、G1、G2,G3のそれぞれのエリア1乃至3、A1,A2,A3が示されている。この例の場合、図6Bに示されるように、グループ1、G1には8個のフリップフロップが属し、グループ2、G2には8個のフリップフリップが属し、グループ3、G3には4個のフリップフロップが属する。この例の場合も許容ファンアウトは8とされている。また図6Aに示される如く、上記エリア1乃至3、A1,A2,A3は相互の重複している。図6A,6B中、C1乃至C3は、それぞれグループ1乃至3、G1,G2,G3の中心を示している。したがって図6A,6Bに示されるグループの場合、グループ1、G1に属する8個のフリップフリップにつき、その中心C1にクロックバッファが配置される。したがってグループ1、G1に属する8個のフリップフリップの各々に対し、その中心C1に配置されるクロックバッファによりクロック信号が供給されることになる。その際のクロックラインL1,L2,L3は図6A,6Bに示される如く、配線長がいわゆるマンハッタン距離となるように接続される。なおクロックラインの接続の方法は上記マンハッタン距離となるような接続する場合に限られず、半導体集積回路に対し適用するテクノロジーに応じ適宜変更され得る。
【0049】
次にこのようなグループに対し、最適化1(交換)を行う場合の例につき、図7A乃至7Dともに詳細に説明する。
【0050】
図7Aは上記図6Bと同様のグループ化の状態を示す。ここで最適化1(交換)S200として、図7A中、グループ1、G1に属する8個のフリップフロップのうち、右上の2個のフリップフロップAをグループ2、G2に移す。また同時に、上記2個のフリップフロップAと交換に、グループ2、G2に属する8個のフリップフリップのうち、左下の2このフリップフロップBをグループ1、G1に移す。その結果、図7Bに示す如くのグループに変化する。
【0051】
以下に図7Aの状態と図7Bの状態とを、クロックバッファと各フリップフロップとの間のクロックラインの長さについて比較する。ここで図7Bの場合、図7Aの状態に対しグループが変化しているため、図7Bに示される変化後のグループの中心C1,C2,C3の位置は、変化前と異なっている。そして図7Bの場合、上記変化後のグループの中心C1,C2、C3にクロックバッファが配置され、当該クロックバッファから対応するグループに属する各フリップフロップに対しクロックラインが接続される。その場合のクロックラインL1,L2,L3が図7Bに示されている。図7AのクロックラインL1,L2,L3と比較すると、明らかに図7Bの方がクロックラインの総長が短縮されていることが分かる。
【0052】
図7Cは上記最適化1(交換)S200における動作の流れを説明するための図である。
【0053】
図7C中、ステップS201にて、上記初期グループ化S100の手順で生成されたグループから、2個のグループの組み合わせを抽出する。あるいは後述する最適化1(交換)S200、最適化2(移動)S300および最適化3(結合)S400の反復の際、前回の最適化3(結合)の結果得られたグループから2個のグループを抽出する。ステップS202にて、当該抽出に係る2個のグループの、それぞれのエリアが重なり合うか否かを判定する。重なり合わない場合、ステップS201に戻り、他の2個のグループの組み合わせの新たな抽出を行い、当該新たな抽出に係る2個のグループにつきステップS202を実行する。
【0054】
他方、ステップS202にて、当該抽出に係る2個のグループの、それぞれのエリアが重なり合う場合、ステップS203にて、当該2個のグループ間で、それぞれのグループに属するフリップフロップ同士の交換を試みる。そして当該フリップフリップ同士の交換後の状態につき、各グループにおいて、当該グループの中心と、同グループに属するフリップフロップとの間のマンハッタン距離の合計を計算する。ここで得られるグループごとのマンハッタン距離の合計は、各グループのコスト(あるいは評価指標値)の一例として使用される。なお後述するように、当該コストは上記マンハッタン距離によるものの例に限られない。更に各グループのコストを全てのグループについて合計する。当該全てのグループについて求めた合計を全体のコストと称する。なおコストを求める方法につき後述する。
【0055】
ステップS203では、上記交換の前後で全体のコストを比較し、当該交換の結果全体のコストが減少する場合、当該交換後のグループを維持する。ここでこのようにグループ間でフリップフロップ同士を交換すると、各グループに属するフリップフロップのうち当該交換に係るフリップフロップは交換以前のフリップフロップとは異なるものとなる。このようにグループに属するフリップフロップのうちの少なくともその一部のフリップフロップがそれ以前のものとは異なるものとなることを、「グループが変化する」と称する。同様に、グループに属するフリップフロップのうちの少なくともその一部のフリップフロップが他のグループに移動することにより減少する場合も「グループが変化する」と称する。同様に他のグループからフリップフロップが移動してくることにより当該グループに属するフリップフロップが増加する場合も「グループが変化する」と称する。このようにグループが変化した後の当該グループのコストを求める場合、予め当該グループの中心を、当該変化後のグループの中心に更新した上でコストを求める。
【0056】
図7Cの説明に戻り、ステップS203にて、当該交換の結果全体のコストが減少しない場合、当該交換前のグループを維持する。このような動作を、それぞれが異なるグループに属する全てのフリップフロップ同士の組み合わせにつき一組ずつ順次反復して行う。そしてその都度、全体のコストが減少する場合には該当する交換後のグループを維持し、減少しない場合には交換前のグループを維持する。
【0057】
このようにして上記2個のグループについてステップS203が終了した後、全てのグループの組み合わせの抽出が済んだか否かを判定する(ステップS204)。全てのグループの組み合わせの抽出が済んでいなかった場合(NO)、ステップS201に戻り、更に他の組み合わせに係る2個のグループの新たな抽出を行い、当該新たな抽出に係る2個のグループにつきステップS202を実行する。全てのグループの組み合わせの抽出が済んだ場合(ステップS204のYES)、最適化1(交換)を終了する。
【0058】
このようにしてステップS201にて全てのグループの組み合わせが順次抽出され、それぞれの組み合わせに対し順次ステップS202,S203が実行される。
【0059】
図7Dは図7Aの例に対し上記最適化1(交換)S200を行う場合の、グループ1,2、G1,G2間でフリップフロップの交換を試みる方法について説明するための図である。上記の如く図7Aの例の場合、グループ1,2の各々には許容ファンアウトである8個のフリップフリップが属する。したがって交換を試みるフリップフリップの組み合わせの数は、8×8=64であり、64通りである。これら64通りの各々につき、順次上記交換を試み、各グループの中心を更新した上で交換前後で全体のコストを比較する。その結果全体のコストが減少すれば当該交換後のグループを維持し、減少しなければ交換前のグループを維持する。このような動作を64回反復する。実際に当該64通りの反復を行った結果は以下の通りである。
【0060】
すなわち、上記の如くグループ1,2、G1,G2間でフリップフロップA,Bの交換を行った場合全体のコストが減少する。他方、グループ1,3、G1,G3間およびグループ2,3、G2,G3間でフリップフロップの交換を行っても全体のコストは減少しない。その結果、このように図7Aの例において上記図7Cとともに上述の最適化1(交換)S200を行った結果、図7Bに示す如く、グループ1,2、G1,G2間でフリップフロップA,Bの交換のみが行われた状態のグループが得られる。
【0061】
次に図8A〜8Dとともに、最適化2(移動)S300につき詳細な説明を行う。
【0062】
図8Aは図7Bの状態、すなわち上記7Aのグループに対し上記最適化1(交換)が実行された状態を示す。ここで図8Aの状態でグループ1、2,3、G1,G2,G3は、相互にそのエリアが重なり合っているものとする。この例の場合、例えば図8Bに示す如く、グループ2、G2に属する2つのフリップフロップDのうちの何れか一個をグループ3、G3に移動した場合、全体のコストが最も減少する。すなわち、図8Aのグループにおいて考え得るグループ間のフリップフロップの移動の全ての場合を試み、各場合についてグループの中心を更新した上で全体のコストの変化量を記憶装置に記憶しておく。このようにして記憶された、移動を試みた各場合の全体のコストの変化量のうち、最も減少量の大きい場合を得る。そして当該最も減少量の多い場合の移動のみを実際に行う。図8A,8Bの場合、上記2このフリップフロップDのうちの1個のフリップフリップの移動が上記最も減少量の多い場合に該当する。ここで図2とともに上記したように、最適化1(交換)S200、最適化2(移動)S300および最適化3(結合)は、終了判定S500の結果が「一連の手順を反復する」であった場合、再度反復される。図8A,8Bの場合、このように最適化2(移動)S300が反復された場合を想定している。当該反復に係る最適化2(移動)S300において、上記2このフリップフロップDのうちの他の1個のフリップフリップの移動が上記最も減少量の多い場合に該当する。その結果、当該反復による2回の最適化2(移動)の各々の回において、上記2このフリップフロップDの各々が、上記最も減少量の多い場合に該当し、当該移動が実際に行われる。
【0063】
他方、図8Bに示す如く、グループ2、G2からグループ1、G1へのフリップフリップの移動を想定した場合、グループ1、G1に属するフリップフリップの個数は8個であり、既に許容ファンアウトに至っている。上記の如くグループ2、G2からグループ1、G1へのフリップフリップの移動を行った場合、グループ1、G1に属するフリップフロップの総数が9となってしまい、許容ファンアウト8を超えてしまう。したがってこのような移動は実際には行われない。
【0064】
図8Cは上記の如くグループ2,3、G2,G3間で、最適化2(移動)S300を試みる方法について説明するための図である。図8Aの場合、グループ2、G2には計8個のフリップフリップが属し、グループ3、G3には計4個のフリップフロップが属する。この場合、グループ2に属する8個のフリップフロップの各々につき、グループ3への移動を試み、その都度各グループの中心を更新したうえで全体のコストを得、全体のコストの変化量を記憶装置に記憶しておく。他方、グループ3に属するフリップフリップをグループ2に移動することを想定すると、その場合、グループ2に属するフリップフリップの総数が9となり許容ファンアウト8を超える。したがってグループ3からグループ2への移動は実際には行われない。このようにして記憶された、各移動の場合の全体のコストの変化量を相互比較し、減少量が最も大きい場合の移動のみを実際に行い、それ以外の移動は実際には行わない。
【0065】
図8Dは上記最適化2(移動)S300における動作の流れを説明するための図である。
【0066】
図8D中、ステップS301にて、前記最適化1(交換)の結果得られたグループから2個のグループの組み合わせを抽出する。ステップS302にて、当該組み合わせに係る2個のグループの、それぞれのエリアが重なり合うか否かを判定する。重なり合わない場合、ステップS301に戻り、他の2個のグループの組み合わせの抽出を新たに行い、当該新たな抽出に係るグループにつき、ステップS302を実行する。
【0067】
他方、ステップS302にて、当該組み合わせに係る2個のグループの、それぞれのエリアが重なり合う場合、ステップS303にて、当該2個のグループ間で、それぞれのグループに属するフリップフロップの移動を試みる。そして当該フリップフリップの移動後の状態につき、各グループの中心を更新した上で全体のコストを求める。そして上記移動の前後で全体のコストを比較し、その都度コストの変化量を記憶装置に記憶しておく。このような動作を上記2個のグループの間で考え得る全てのフリップフロップの移動の場合について試み、それぞれの場合における全体のコストの変化量を記憶装置に記憶する。ここで上記の如く、少なくとも一方のグループに属するフリップフリップの総数が既に許容ファンアウト8に達している場合、当該グループに対するフリップフロップの移動は行わない。そしてステップS304にて、このようにして記憶された各移動の場合の全体のコストの変化量を相互に比較し、最も減少量の大きい場合の移動のみを実際に行い、他の場合の移動は行わない。
【0068】
このようにして上記2個のグループについてステップS304が終了した後、全てのグループの組み合わせの抽出が済んだか否かを判定する(ステップS305)。全てのグループの組み合わせの抽出が済んでいなかった場合(NO)、ステップS301に戻り、更に他の組み合わせに係る2個のグループの新たな抽出を行い、当該新たな抽出に係る2個のグループにつきステップS302を実行する。全てのグループの組み合わせの抽出が済んだ場合(ステップS305のYES)、最適化2(移動)を終了する。
【0069】
このようにしてステップS301にて全てのグループの組み合わせが順次抽出され、ステップS302の条件を満たす全てのグループの組み合わせに対し順次ステップS303,S304が実行される。
【0070】
図8Aのグループに対し、上記図8Dとともに上述した最適化2(移動)S300が実施された結果、上記の如く、グループ2、G2に属する2個のフリップフロップDのうちの一個がグループ3、G3に移動される。そして最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400が反復され、当該反復に係る最適化2(移動)にて、今度はグループ2、G2に属する2個のフリップフロップDのうちの他の一個がグループ3、G3に移動される。その結果図8Bに示される状態、すなわち結果的にグループ2、G2に属する2個のフリップフロップDがグループ3、G3に移動される。なおこの場合、前記最適化3(結合)においては後述する結合を実行する条件が満たされず、実際には結合が行われなかったものとする。また前記反復に係る最適化1(交換)においても、交換により全体のコストが減少する場合が存在せず、実際には交換が行われなかったものとする。したがって最初の最適化2(移動)S300と前記反復に係る2度目の最適化2(移動)S300との間で実行される前記最適化3(結合)S400および前記反復に係る最適化1(交換)S200においては何らグループが変化しなかった場合を想定している。
【0071】
図9は図8Bと同じ状態を示しており、上記最適化1(交換)S200、最適化2(移動)S300の効果について説明するための図である。
【0072】
図9の状態を最適化1(交換)S200,最適化2(移動)S300の実行前の状態、すなわち図7Aのグループの状態と比較する。図7Aのグループの状態において図7A中、例えばグループ1、G1を着目する。この場合、グループ1、G1には2個のフリップフロップAが属しており、これらを含む計8個のフリップフリップは図7A中、横方向に比較的広く分散している。この状態では図7Aに示す如く、当該グループ1の中心C1にクロックバッファを設け、当該クロックバッファから当該8個のフリップフロップに対し配線長がマンハッタン距離をなすようにクロックラインL1を接続することになる。他方、最適化1(交換)S200,最適化2(移動)S300の実行後の状態、すなわち図9では同図中、グループ1、G1には2個のフリップフロップAの代わりに、元はグループ2、G2に属していたフリップフロップBが属している。その結果、これらを含む計8個のフリップフリップは図9、横方向において、比較的集中している。この状態では図9に示す如く、当該グループ1の中心C1にクロックバッファを設け、当該クロックバッファから当該8個のフリップフロップに対し配線長がマンハッタン距離をなすようにクロックラインL1を接続することになる。図7AにおけるクロックラインL1と図9におけるクロックラインL1とを比較すると、図9のクロックラインL1の総長の方が明らかに短縮されていることが分かる。同様な点はグループ2、G2のくロックラインL2についても言える。
【0073】
次にグループ2,3、G2,G3につき、最適化1(交換)S200,最適化2(移動)S300の実行前後の状態、すなわち図7Aと図9の状態を相互に比較する。最適化1(交換)S200,最適化2(移動)S300の実行前にグループ2、G2に属していた2個のフリップフロップDが、最適化1(交換)S200,最適化2(移動)S300の実行後にはグループ3、G3に属している。その結果グループ3についてのみ着目すると、グループ3に属するフリップフロップの総数が4から6に増加した分、クロックラインL3の総長は増加している。しかしながら同時にグループ2、G2について着目すると、上記の如くフリップフロップBがフリップフロップAと交換されたことに加え、フリップフロップDがグループ3、G3に移動されている。その結果、図9の状態では、グループ2、G2に属する計6個のフリップフロップは、図9の横方向において比較して集中しており、その結果クロックラインL2は図7Aの状態に比して大幅に短縮されている。その結果、全グループ1,2,3、G1,G2,G3を通じ、各グループのクロックラインL1,L2,L3の総長の合計は、図7Aの状態に比し、図9の状態の方が明らかに短縮されている。
【0074】
上記の如く、最適化1(交換)S200の場合、図7CのステップS203にて、全体のコストが下がる場合にのみ実際にグループ間のフリップフロップの交換を行う。また、最適化2(移動)S300の場合、図8DのステップS304にて全体のコストが最も下がる場合にのみ、グループ間の移動を行う。その結果図7A,図9とともに上述の如く、最適化1(交換)S200,最適化2(移動)S300の実行により、全てのグループを通じ、クロックラインの総長の合計を短縮できる。
【0075】
更に各グループのファンアウトに着目した場合、図7Aの場合にはグループ1,2,3、G1,G2,G3のそれぞれのファンアウトが8,8,4である。これに対し、図9の場合にはグループ1,2,3、G1,G2,G3のファンアウトはそれぞれ8,6,6となっている。図7Aの場合最大ファンアウト8と最小ファンアウト4との差が4であるのに対し、図9の場合は最大ファンアウト8と最小ファンアウト6との差が2である。よってファンアウトのバラツキが低減されている。
【0076】
図10A乃至10Cとともに上記最適化3(結合)S400につき詳細に説明する。
【0077】
図10Aは、上記最適化2(移動)S300の結果得られたグループの例を示す。同図の例では回路には計20個のフリップフロップが含まれ、グループ1、G1には4個のフリップフロップが属し、グループ2、G2にも4個のフリップフロップが属する。またグループ3、G3には8個のフリップフリップが属し、グループ4、G4には4個のフリップフロップが属する。更に図10Aの場合、グループ1,2の間で、各々のグループに属するフリップフロップが、他のグループのエリア内に位置するものとする。すなわちグループ1に属する4個のフリップフロップは、グループ2のエリア内に位置するものとする。同様にグループ2に属する4個のフリップフロップは、グループ1のエリア内に位置するものとする。このような関係はグループ3,4との間でも成立するものとする。すなわち、グループ3に属する8個のフリップフロップは、グループ4のエリア内に位置するものとする。同様にグループ4に属する4個のフリップフロップは、グループ3のエリア内に位置するものとする。
【0078】
このように2個のグループが以下の関係を有する際、当該関係を「互いのフリップフリップが互いのエリアに含まれる関係」と称する。すなわち一のグループに属する全てのフリップフロップが他の一のグループのエリア内に位置し、前記他の一のグループに属する全てのフリップフロップが前記一のグループのエリア内に位置する関係である。
【0079】
ここで最適化3(結合)S400では、互いのフリップフリップが互いのエリアに含まれる関係を有するグループ1,2、G1,G2の間、およびグループ3,4、G3,G4の間の各々につき、以下の動作を行う。すなわち2個のグループのファンアウトを合計した場合に許容ファンアウト以内である場合、当該2個のグループを結合して1個のグループとなるようにグループの変更を行う。上記の如く、フリップフロップにクロック信号を供給する際、各グループに一のクロックバッファを設ける。上記の如くグループ同士の結合を行うことにより、回路に含まれるフリップフロップが属するグループの総数が減少する。その結果回路全体を通じ、使用するクロックバッファの数が減少する。その結果消費電力を低減させることができる。
【0080】
図10Aの例の場合、まずグループ1,2、G1,G2の間では、上記の如く、各グループに属するフリップフロップの数は4であり、すなわちファンアウトが4である。したがってグループ1,2のファンアウトを合計すると8となり、許容ファンアウト8以内に収まっている。したがって図10Bに示される如く、グループ1,2を結合する。他方グループ3,4の間では、上記の如く、各グループに属するフリップフロップの数はそれぞれ8、4であり、すなわちファンアウトがそれぞれ8,4である。したがってグループ3,4のファンアウトを合計すると12となり、許容ファンアウト8を超える。したがって図10Bに示される如く、グループ3,4を結合することはしない。
【0081】
図10Cは最適化3(結合)S400の動作の流れを説明するための図である。
【0082】
図10C中、ステップS401にて、前記最適化2(移動)S300の結果得られたグループから2個のグループの組み合わせを抽出する。ステップS402にて、当該組み合わせに係る2個のグループの、それぞれのエリアが重なり合うか否かを判定する。重なり合わない場合、ステップS401に戻り、他の2個のグループの組み合わせの新たな抽出を行い当該新たな抽出に係る2個のグループにつきステップS402以降を実行する。
【0083】
他方、ステップS402にて、当該組み合わせに係る2個のグループの、それぞれのエリアが重なり合う場合、ステップS403にて、当該2個のグループが互いのフリップフリップが互いのエリアに含まれる関係を有するか否かを判定する。当該2個のグループが互いのフリップフリップが互いのエリアに含まれる関係を有さない場合、ステップS401に戻り、他の2個のグループの組み合わせの新たな抽出を行い当該新たな抽出に係る2個のグループにつきステップS402以降を実行する。当該2個のグループが互いのフリップフリップが互いのエリアに含まれる関係を有する場合、ステップS404を実行する。
【0084】
ステップS404では、当該2個のグループのそれぞれのファンアウトの合計が許容ファンアウト以内に収まるか否かを判定する。当該2個のグループのそれぞれのファンアウトの合計が許容ファンアウト以内に収まらない場合ステップS401に戻り、他の2個のグループの組み合わせの新たな抽出を行い当該新たな抽出に係る2個のグループにつきステップS402以降を実行する。当該2個のグループのそれぞれのファンアウトの合計が許容ファンアウト以内に収まる場合、ステップS405を実行する。ステップS405では、当該2個のグループを結合し、1個のグループとする。このようにして上記2個のグループについてステップS405が終了した後、全てのグループの組み合わせの抽出が済んだか否かを判定する(ステップS406)。全てのグループの組み合わせの抽出が済んでいなかった場合(NO)、ステップS401に戻り、更に他の組み合わせに係る2個のグループの新たな抽出を行い、当該新たな抽出に係る2個のグループにつきステップS402を実行する。全てのグループの組み合わせの抽出が済んだ場合(ステップS406のYES)、最適化3(結合)を終了する。
【0085】
このようにしてステップS401にて全てのグループの組み合わせが順次抽出され、各々の組み合わせに係る2個のグループに対し、上記同様、ステップS402以降の動作を実行する。
【0086】
次に図11とともに、図2に示す終了判定S500につき説明を行う。
【0087】
終了判定S500では、以下の条件1あるいは条件2を満たす場合に収束したと判断し、一連の手順を終了する。すなわち最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の実行を終了し、図2の処理を終了する。
【0088】
条件1:
以下の全ての条件1)、2)、3)が満たされる:
1)最適化1(交換)S200の前後で全体のコストが一定であり減少しない。
【0089】
2)最適化2(移動)S300の前後で全体のコストが一定であり減少しない。
【0090】
3)最適化3(結合)S400の前後で全体のコストが一定であり減少しない。
【0091】
条件2:
最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の反復の回数nが所定回数に至った。
【0092】
図12A、12B,12C、12Dとともに、最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の反復の例につき説明する。
【0093】
図12Aは初期グループ化S100によってグループ1,2,3、G1,G2,G3が得られた状態を示す。図12Aに示す如く、グループ1、G1には8個のフリップフロップが属し、グループ2、G2には8個のフリップフリップが属し、グループ3、G3には6個のフリップフロップが属する。
【0094】
最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の各々では、グループ1と2、G1,G2,グループ1と3、G1,G3、グループ2と3、G2,G3の順番で処理を行うものとする。
【0095】
図12Aの状態ではグループ1と2では、相互のエリア1と2、A1,A2が重なっていない。したがって最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400のいずれにおいても処理対象とならない(図7C中、ステップS202のNO、図8D中、ステップS302のNO、図10C中、ステップS402のNO)。他方グループ2と3では、相互のエリア2と3、A2,A3が重なっている。したがって最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400のいずれにおいても処理対象となる(図7C中、ステップS202のYES、図8D中、ステップS302のYES、図10C中、ステップS402のYES)。この例の場合、図12Bに示される如く、最適化2(移動)S300の反復により、グループ2から2個のフリップフリップEがグループ3に移動されたものと想定する。
【0096】
上記グループ2、G2からグループ3、G3への2個のフリップフロップEの移動の結果、図12Cに示す如く、グループ2,3の各々に属するフリップフロップが変化する。その結果図12Cに示す如く、各グループ2,3の中心C2,C3が変化する。例えばグループ2、G2の場合上記の如く、右端部に有ったフリップフリップEがグループ3、G3へ移動している。その結果グループ2には6個のフリップフロップが残る。当該残った6個のフリップフロップの中心は、前記移動前の8個のフリップフロップの場合の中心に対し、左側に移動している。したがってグループ2の中心C2はこれに対応して左側に移動する。ここでグループ2のエリア2、A2は上記の如く、当該グループの中心C2を中心とする一定サイズの正方形である。上記の如くグループ2の中心C2の左側の移動により、エリア2、A2もこれに対応して左側に移動する(図12C参照)。
【0097】
その結果図12Cに示す如く、グループ1と2との間で、相互にエリア1と2、A1,A2とが重なる。この状態で最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400を実行した場合、上記図12Aの場合と異なり、グループ1と2との間が処理対象となる(図7C中、ステップS202のYES、図8D中、ステップS302のYES、図10C中、ステップS402のYES)。その結果図12Dに示す如く、例えば最適化2(移動)S300において、グループ1、G1のフリップフロップFがグループ2、G2に移動される。
【0098】
このように実施例のクロック信号供給回路の設計方法によれば、最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の実行においてグループが変化すると、それに対応してそのエリアが変化する。エリアが変化すると、当初重なっていなかったグループ相互でエリアが重なり合う場合がある。そのような場合、当初はエリアの重なりが無くグループ相互間が最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の処理対象外であったものが、新たに処理対象となる。その結果最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の処理対象範囲が広がり、より効果的な最適化が期待できる。
【0099】
図13とともに、最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の反復の追加的な条件について述べる。
【0100】
すなわち、前回の最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の実行において、ある組み合わせに係るグループ間ではフリップフロップの交換も移動も実際には行われず、当該グループが変化しなかった場合を想定する。そのような場合、当該グループ間ではそれ以降、最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400を行わないものとすることができる。そのようにすることによって、該当する組み合わせに係るグループは処理対象外となる.その結果以後該当する組み合わせに係るグループについての処理が実行されないため、処理量が削減できる。
【0101】
図14とともに、上記終了判定S500にて「一連の手順を終了する」旨の判定がなされた以後の動作につき説明する。
【0102】
各グループ1,2,3、G1,G2,G3のそれぞれの中心C1,C2,C3にクロックバッファB1,B2,B3を挿入する。次にクロックバッファB1,B2、B3から、それぞれのグループ1,2,3のフリップフロップに対し、クロックラインL1,L2,L3を接続する。そしてクロックバッファB1,B2,B3から、最も近いH型ツリーの末端BにクロックラインL0を接続する。その結果H型ツリーの末端Bに、各クロックバッファB1,B2,B3を介し、各グループ1,2,3に属するフリップフロップがクロックラインL0,L1,L2,L3により接続される。
【0103】
以下に上記コストを求める方法につき、数式を使用した説明を行う。
【0104】
グループの中心の座標は以下の数式で得られる。
【0105】
Xg = ( Xfmax + Xfmin ) / 2
Yg = ( Yfmax + Yfmin ) / 2
ここでXfmax,Xfminは、それぞれグループ内のフリップフロップの最大x座標、最小x座標をそれぞれ示す。同様にYfmax,Yfminは、それぞれグループ内のフリップフロップの最大y座標、最小y座標をそれぞれ示す。
【0106】
各グループのコストは以下の数式で得られる。
【0107】
Cg = Σ( | Xf - Xg | + | Yf - Yg | )
ここでグループのコストは上記の如く、グループの中心からフリップフリップまでのマンハッタン距離の総和である。マンハッタン距離はクロックラインの配線長に対応するため、グループのコストは当該グループに属するフリップフロップに係るクロックラインの総配線長に対応する。
【0108】
全体のコストは以下の数式で得られる。
【0109】
C = ΣCg
上記最適化1(交換)S200,最適化2(移動)S300におけるコストの変化量は以下の数式で得られる。
【0110】
ΔC = { Cia + Cja } − { Cib + Cjb }
= { Σ( | Xf - Xia | + | Yf - Yia | ) + Σ( | Xf - Xja | + | Yf - Yja | ) } -
{ Σ( | Xf - Xib | + | Yf - Yib | ) + Σ( | Xf - Xjb | + | Yf - Yjb | ) }
ここで
C:コスト
f: フリップフリップの識別番号
Cgにおけるg:グループの識別番号
Xf:フリップフリップのx座標
Yf:フリップフリップのy座標
Xg:グループの中心のx座標
Yg:グループの中心のy座標
またi, jは交換・移動の対象となるグループの組み合わせにおける各グループの識別番号を示し、aは交換・移動後、bは交換・移動前であることを示す。
【0111】
上記各グループのコストCg(すなわち評価指標値)としては上記の例、すなわち
マンハッタン距離:Cg = Σ( | Xf - Xg | + | Yf - Yg | )
によるものに限られず、例えば以下に示すユークリッド距離、総配線長、容量および遅延等のうちのいずれか一のものによるものとすることができる。
【0112】
1.ユークリッド距離:Cg = Σ{ ( Xf - Xg ) + ( Yf - Yg ) }
2.総配線長:Cg = クロックバッファから各フリップフロップまでの総配線長
3.容量(負荷):Cg = クロックバッファのゲート容量+ 配線容量+ 各フリップフロップのクロック入力ピン容量
4.遅延:Cg = クロックバッファから各フリップフロップのクロック入力ピンまでの遅延の合計
以下に図1とともに、実施例のクロック信号供給回路の設計方法をプログラムで実現する際の処理の概要を述べる。
【0113】
図1に示される如くネットリスト(周知のVerilog, VHDL等)1が記憶装置からCPUに読み込まれ、CPUは当該ネットリスト1からフリップフロップのインスタンスを抽出する(図1中、データリード4)。またCPUは抽出されたフリップフロップをグループ化する(図1中、フリップフロップのグループ化5)。またCPUはグループ化で得られたグループに対し、ネットリスト上で、図14とともに上述の如くクロックバッファを挿入し、クロックラインを接続する。そしてCPUは、このようにクロックバッファが挿入され、クロックラインが接続された状態のネットリスト7を記憶装置に書き込む(図1中、データライト6)。
【0114】
同様に図1に示される如く、レイアウトデータ(DEF or PKIT等)2が記憶装置からCPUに読み込まれ、CPUは当該レイアウトデータ2から上記フリップフロップのインスタンスの座標を抽出する(図1中、データリード4)。そしてCPUは抽出された座標に基づいて上記グループ化を行う(図1中、フリップフロップのグループ化5)。またCPUはグループ化で得られたグループに対し、レイアウトデータ上で、図14とともに上述の如くクロックバッファを配置し、クロックラインを配置する。そしてCPUはこのようにクロックバッファが配置され、クロックラインが配置された状態のレイアウトデータ8を記憶装置に書き込む(図1中、データライト6)。
【0115】
また設計者はコンピュータに対し、コマンドラインの形態で各種のパラメータ3を入力する。当該各種のパラメータは図1とともに上記の如く、エリアの定義(すなわちエリアの決定方法)、許容ファンアウト、図2に示す最適化1〜3(S200〜S400)の反復回数n等を含む。上記エリアの決定方法とは、例えば上記の如く、最大値ノルムを使用して一定サイズの正方形のエリアを得る方法である。
【0116】
また上記CPUは、グループ化5の結果得られるグループを示すデータファイル9を記憶装置に書き込む。このデータファイル9には各グループに属するフリップフロップを示す情報が含まれ、例えば周知のCSV(Comma Separated Value format)形式のファイルとされる。
【0117】
実施例のクロック信号供給回路の設計方法によれば、以下の効果が得られる。
【0118】
1)クロックバッファからのクロックラインの配線長を短縮し、そのバラツキを低減することが可能である。
【0119】
2)クロックバッファごとのファンアウトのバラツキを低減可能である。
【0120】
3)クロックバッファの個数を削減可能である。
【0121】
4)半導体集積回路において、局所的ではなく、全体的にクロックスキューを改善し得る。
【0122】
5)プログラム言語で記述することができる。また、現実的な計算量、現実的な記憶領域でグループ化を実施することができる。これはエリアが重なり合うグループ間のみが最適化の処理対象となるため、処理量は処理対象のフリップフロップの個数に対し線形に増加するにすぎない。またコストが減少する場合にグループの変更を実施するため、コストは単調に減少する。
【0123】
このように実施例のクロック信号供給回路の設計方法によれば、半導体集積回路におけるクロックスキューを低減し得るクロック信号供給回路の設計方法を自動化し得る。
【0124】
図15とともに実施例のクロック信号供給回路の設計方法を適用可能な半導体集積回路の例について説明する。
【0125】
図15は実施例のクロック信号供給回路の設計方法を適用可能な半導体集積回路の例としての、DIMM(Dual Inline Memory Module)を制御するメモリコントローラを示す。当該メモリコントローラの動作周波数は例えばGHzのオーダーを超えるものとされる。
【0126】
出願人は図15とともに上記したメモリコントローラの回路設計において、実施例のクロック信号供給回路の設計方法を実行した。より具体的には、同方法をプログラムで実現し、クロックバッファの挿入およびクロックラインの接続に係る回路設計を自動化して実施した。
【0127】
その結果フリップフロップ間のクロックスキューを低減することができた。またセットアップタイミング、ホールドタイミング等に係る設計作業を容易に成しえた。また自動化により、グループ化、ゲートエントリ、スキュー調整、タイミング調整、配置等の工数を削減できた。したがってLSI開発期間の短縮、開発コストの削減が可能な点が確認できた。
【0128】
図16は実施例のクロック信号供給回路の設計方法をプログラムで実現する場合に使用可能なコンピュータの構成を説明するためのブロック図である。
【0129】
図16に示すごとく、同コンピュータ500は、与えられたプログラムを構成する命令を実行することによって様々な動作を実行するためのCPU501と、キーボード、マウス等よりなり設計者が操作内容又はデータを入力するための操作部502とを有する。またコンピュータ500は、設計者にCPU501による処理経過、処理結果等を表示するCRT、液晶表示器等よりなる表示部503を有する。またコンピュータ500は、ROM、RAM等よりなりCPU504が実行するプログラム、データ等を記憶したり作業領域として使用される上記記憶装置としてのメモリ504を有する。またコンピュータ500は,プログラム、データ等を格納する上記記憶装置としてのハードディスク装置505を有する。またコンピュータ500は、上記記憶装置としてのCD−ROM507を媒介として外部からプログラムをロードしたりデータをロードするためのCD−ROMドライブ506を有する。またコンピュータ500は、インターネット、LAN等の通信網509を介して外部サーバからプログラムをダウンロード等するためのモデム508を有する。
【0130】
コンピュータ500はCD−ROM507を媒介として、あるいは通信ネットワーク509を媒介として、上述の実施例のクロック信号供給回路の設計方法をCPU501に実行させるためのプログラムをロードあるいはダウンロードする。そしてこれをハードディスク装置505にインストールし、適宜メモリ504にロードしてCPU501が実行する。その結果、同コンピュータ500により実施例のクロック信号供給回路の設計方法が自動的に実行される。
【0131】
なお実施例のクロック信号供給回路の設計方法は上記の如くフリップフロップにクロック信号を供給する回路の設計方法に限られず、他の回路素子にクロック信号を供給する回路の設計方法にも同様に適用可能である。
【0132】
また実施例のクロック信号供給回路の設計方法では、最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400を当該順番に実施するものとして説明した。しかしながら最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400の実行の順序はこの順序に限られず、他の順序で実行してもよい。
【0133】
また最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400の全てを実行するように説明した。しかしながら、最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400の計3種の最適化のうちの少なくとも一種の最適化のみを実行するようにしてもよい。
【0134】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
演算手段がクロック信号の供給される複数の回路素子の回路データを記憶装置から読み込む段階と、
演算手段が前記複数の回路素子をグループ分けする段階と、
演算手段がグループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくともいずれかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復する段階とを有するクロック信号供給回路の設計方法であって、
前記各グループに属する回路素子に対し一のクロックバッファを用いてクロック信号を供給することを特徴とするクロック信号供給回路の設計方法。
(付記2)
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループに属する各回路素子にクロック信号を供給するクロックバッファから各回路素子までの総配線長、当該グループにおける前記クロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれかとされる
付記1に記載のクロック信号供給回路の設計方法。
(付記3)
前記グループ分けする段階は、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得ることを特徴とする付記1に記載のクロック信号供給回路の設計方法。
(付記4)
前記最適化段階では更に、2つのグループの回路素子が互いに相手のグループのエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする付記3に記載のクロック信号供給回路の設計方法。
(付記5)
前記交換段階は、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階は、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする付記3または4に記載のクロック信号供給回路の設計方法。
(付記6)
コンピュータに、クロック信号の供給が行われる複数の回路素子をグループに分けて得られた当該グループに対し、グループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくともいずれかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復させるプログラム。
(付記7)
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループに属する各回路素子にクロック信号を供給するクロックバッファから各回路素子までの総配線長、当該グループにおける前記クロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれかとされる
請求項6に記載のプログラム。
(付記8)
更にコンピュータに、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得る段階を実行させることを特徴とする請求項6に記載のプログラム。
(付記9)
前記最適化段階では更に、2つのグループの回路素子が互いに相手側のエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする付記8に記載のプログラム。
(付記10)
前記交換段階では、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階では、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする付記8または9に記載のプログラム。
(付記11)
クロック信号の供給が行われる複数の回路素子をグループに分けて得られた当該複数のグループに対し、グループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくとも何れかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復する演算手段を有し、
前記最適化段階の反復の結果得られる各グループに属する回路素子に対し一のクロックバッファを用いてクロック信号が供給されることを特徴とする情報処理装置。
(付記12)
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループに属する各回路素子にクロック信号を供給するクロックバッファから各回路素子までの総配線長、当該グループにおける前記クロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれかとされる
請求項11に記載の情報処理装置。
(付記13)
更に前記演算手段は、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得ることを特徴とする請求項11に記載の情報処理装置。
(付記14)
前記最適化段階では更に、2つのグループの回路素子が互いに相手側のエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする付記13に記載の情報処理装置。
(付記15)
前記交換段階では、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階では、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする付記13または14に記載の情報処理装置。
【図面の簡単な説明】
【0135】
【図1】実施例によるクロック信号供給回路の設計方法のデータの流れを示す図である。
【図2】図1中、フリップフロップのグループ化の基本的なアルゴリズムの流れを示す図である。
【図3】図2中、初期グループ化の動作の流れを示す図である。
【図4A】初期グループ化の動作を説明するための図(その1)である。
【図4B】初期グループ化の動作を説明するための図(その2)である。
【図4C】初期グループ化の動作を説明するための図(その3)である。
【図4D】初期グループ化の動作を説明するための図(その4)である。
【図4E】初期グループ化の動作を説明するための図(その5)である。
【図4F】初期グループ化の動作を説明するための図(その6)である。
【図4G】初期グループ化の動作を説明するための図(その7)である。
【図5A】初期グループ化におけるグループのエリアの決め方について説明するための図(その1)である。
【図5B】初期グループ化におけるグループのエリアの決め方について説明するための図(その2)である。
【図6A】初期グループ化を実行後の状態の例を示す図(その1)である。
【図6B】初期グループ化を実行後の状態の例を示す図(その2)である。
【図7A】最適化1(交換)について説明するための図(その1)である。
【図7B】最適化1(交換)について説明するための図(その2)である。
【図7C】最適化1(交換)について説明するための図(その3)である。
【図7D】最適化1(交換)について説明するための図(その4)である。
【図8A】最適化2(移動)について説明するための図(その1)である。
【図8B】最適化2(移動)について説明するための図(その2)である。
【図8C】最適化2(移動)について説明するための図(その3)である。
【図8D】最適化2(移動)について説明するための図(その4)である。
【図9】最適化1,最適化2を実行後の状態の例を示す図である。
【図10A】最適化3(結合)について説明するための図(その1)である。
【図10B】最適化3(結合)について説明するための図(その2)である。
【図10C】最適化3(結合)について説明するための図(その3)である。
【図11】フリップフロップのグループ化における収束の判定について説明するための図である。
【図12A】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その1)である。
【図12B】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その2)である。
【図12C】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その3)である。
【図12D】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その4)である。
【図13】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その5)である。
【図14】クロックバッファの挿入、クロックラインの接続について説明するための図である。
【図15】実施例の効果の検証について説明するための図である。
【図16】実施例によるクロック信号供給回路の設計方法をコンピュータで実現する場合について説明するための図である。
【符号の説明】
【0136】
501 CPU
502 操作部
503 表示部
504 メモリ(記憶装置)
505 HDD(記憶装置)
506 CD−ROMドライブ
507 CD―ROM(記憶装置)
508 モデム
509 通信網
FF フリップフロップ
G1,G2,G3,... グループ
A1,A2,A3,... エリア
C1,C2,C3,.. グループの中心
B1,B2,B3,... クロックバッファ
L0,L1,L2,L3,... クロックライン
【技術分野】
【0001】
本発明はクロック信号供給回路の設計方法、情報処理装置およびプログラムに係り、特に一のクロックバッファによってクロック信号が供給される回路素子のグループ分けの方法に関する。なおクロックバッファとは、クロック信号を中継する機能を有するバッファを意味する(以下同様)。
【背景技術】
【0002】
半導体集積回路において、フリップフロップ等の回路素子に対し、クロックバッファを用いてクロック信号を供給する。この場合、一のクロックバッファによってクロック信号が供給される回路素子のグループを形成する。なお以下の説明において「グループ」とは一のクロックバッファによってクロック信号が供給される回路素子のグループを意味し、そのようなグループを形成することをグループ分けあるいはグループ化と称する。
【特許文献1】特開2007−27841号公報
【特許文献2】特開2007−128429号公報
【特許文献3】特開平7−134626号公報
【特許文献4】特開平11−214517号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
効果的なグループ分けを行い得るクロック信号供給回路の設計方法を提供することが目的である。
【課題を解決するための手段】
【0004】
クロック信号供給回路の設計方法では以下に示す最適化を行う。すなわちグループ間で回路素子の交換および移動のうちの少なくとも何れか一方を実行する。そして各グループの中心位置と当該グループ内の各回路素子との間の距離を合計する。更に当該グループごとの合計を全グループにつき合計する。そして全グループのついての合計が減少する場合に前記交換および移動のうちの少なくとも何れか一方の実行後のグループを維持する。他方全グループのついての合計が減少しない場合には前記交換および移動のうちの少なくとも何れか一方の実行前のグループを維持する。そして当該最適化を反復する。結果的に得られた各グループにつき、当該グループの中心位置にクロックバッファを設け、グループ内の各回路素子にクロック信号を供給する。
【発明の効果】
【0005】
クロック信号供給回路の設計方法において、上記最適化では各グループの中心位置と当該グループ内の各回路素子との間の距離を合計の全グループのついての合計が減少する場合に前記交換および移動のうちの少なくとも何れか一方の実行後のグループを維持する。他方全グループのついての合計が減少しない場合には前記交換および移動のうちの少なくとも何れか一方の実行前のグループを維持する。更に最適化を反復する。このため、全グループを通し、各グループのクロックバッファから各回路素子までの距離が効果的に短縮される。
【発明を実施するための最良の形態】
【0006】
例えばフリップフロップのセットアップタイミング、ホールドタイミングの条件を満たすためにはクロックスキューを小さくする必要がある。なおクロックスキューとは、例えばクロック信号がフリップフロップに供給される際にフリップフロップ間で生ずる遅延差を意味する(以下同様)。またクロックバッファは動作率が高いため、回路全体の消費電力の削減のため設置個数を少なくすることが望ましい。
【0007】
またクロックバッファからフリップフロップ等の回路素子までの配線長を短縮し、そのばらつきを低減することが望ましい。またクロックバッファのファンアウトを一定数以下とすることが望ましい。なおクロックバッファのファンアウトとは、クロックバッファを用いてクロック信号を供給する際、一のクロックバッファによってクロック信号が供給される回路素子の個数を意味する(以下同様)。また許容ファンアウトとは、ファンアウトの許容値を意味する(以下同様)。またクロックドメインごとにグループ化を行う必要がある。
【0008】
実施例によるクロック信号供給回路の設計方法では、半導体集積回路の回路設計において、回路に含まれる各フリップフロップに対しクロック信号を供給する際、最初にいわゆるH型クロックツリーを作成する。ここでH型クロックツリーとはフリップフロップ等の回路素子にクロック信号を供給するための配線経路の構造である(以下同様)。そして上記H型クロックツリーの末端から各フリップフロップまでをクロックバッファを介してクロックラインで接続する。ここでクロックラインとはクロック信号を供給する配線を意味する(以下同様)。より具体的には、回路に含まれるフリップフロップをグループ化し、各グループに対し一のクロックバッファを割り当て、H型クロックツリーの末端から各クロックバッファに対しクロックラインを接続する。また各クロックバッファから該当するグループに属するフリップフロップとの間もクロックラインで接続する。その結果、H型クロックツリーの末端から、各クロックバッファを介し、それぞれのフリップフロップにクロックラインが接続される。その結果、同クロックラインを通じてクロック信号がそれぞれのフリップフロップに供給される。
【0009】
実施例では上記グループ化を行う際、最初に仮のグループ化(以下初期グループ化と称する)を行い、初期グループ化で得られたグループに対し後述する最適化を反復して行う。最適化とは、グループ間のフリップフロップの交換や移動を含む。更に前記交換や移動のたび、各グループの中心位置と当該グループに属するフリップフロップとの間の距離の合計を計算し、更にグループごとの合計を全グループについて合計する。全グループについての合計が減少する場合に、上記グループ間のフリップフロップの交換や移動後のグループを維持する。全グループについての合計が減少しない場合には、上記グループ間のフリップフロップの交換や移動前のグループを維持する。また最適化は、一定の条件を満たす場合に行うグループ同士の結合を含む。そして上記最適化を反復して行う。
【0010】
各グループの中心位置には、当該グループに属するフリップフロップに対しクロック信号を供給するクロックバッファが設けられる。したがって各グループの中心位置と当該グループに属するフリップフロップとの間の距離が短いほど、クロックバッファから各フリップフロップに接続するクロックラインが短い。その結果クロックスキューを低減することもできる。
【0011】
上記の如く最適化を反復して行うことにより最適なグループ化を行うことができる。その結果高周波数の領域(GHz帯等)において、クロックスキューを効果的に低減し得るフリップフロップのグループ化を行える。
【0012】
上記最適化の動作は、当該動作をコンピュータに実行させるためのプログラムにより自動化し得る。すなわち上記最適化のための一連の手続きをアルゴリズムとして規定し、プログラム化する。ここで当該プログラムによる処理量は取り扱うフリップフロップの個数に対し線形で増加する。したがって処理量が現実的な程度に収まり、その際に必要とされるメモリの記憶領域も現実的な程度に収まるように上記プログラムを提供し得る。ここで上記最適化を反復して実行する場合、上記各グループの中心位置と当該グループに属するフリップフロップとの間の距離の合計の更にグループごとの合計は、上記反復に対し、収束する。
【0013】
図1は実施例のクロック信号供給回路の設計方法におけるデータの流れを説明するための図である。
【0014】
図1中、設計者は半導体集積回路のネットリスト1,レイアウトデータ2に加え、最適化の実行に係るエリアの定義、許容ファンアウトおよび反復回数等のパラメータ3を設定する。
【0015】
上記ネットリスト1,レイアウトデータ2およびパラメータ3は、コンピュータにおいて、前記プログラムにしたがって、記憶装置からCPUによって読み込まれ(4)、CPUによりグループ化(5)がなされる。すなわちコンピュータはプログラムにしたがって上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップをグループ化する。ここでは上記最適化が適宜反復して実行され、最適なグループ化がなされる。そしてグループ化で得られたグループに基づきコンピュータにより、ネットリストおよびレイアウトデータ上、クロックバッファの挿入およびクロックラインの接続がなされる。なおクロックバッファの挿入およびクロックラインの接続については図14とともに後述する。そしてクロックバッファの挿入およびクロックラインの接続がなされた状態のネットリスト7およびレイアウトデータ8がCPUにより記憶装置に書き込まれる(6)。またこの場合、別途上記グループ化の内容を示す情報「グループデータ」9もCPUにより記憶装置に書き込まれる。設計者はグループデータ9を見てグループ化の内容をマニュアルで編集することができる。
【0016】
このように設計者により編集されたグループデータをコンピュータに入力することにより、同編集後のグループデータがCPUにより記憶装置から読み取られ(4)、同編集後のグループデータに基づいてクロックバッファの挿入およびクロックラインの接続がなされる。そしてこの場合もクロックバッファの挿入およびクロックラインの接続がなされたネットリスト7およびレイアウトデータ8がCPUにより記憶装置に書き込まれる(6)。
【0017】
図2は上記実施例によるクロック信号供給回路の設計方法をコンピュータで実現するためのプログラムのアルゴリズムの大略の流れを説明するため図である。
【0018】
同アルゴリズムは、初期グループ化S100,最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400を含む。これらS100、S200,S300,S400の手順を実行後、終了判定S500が実行される。終了判定S500では、一定の条件を満たす場合には図2に示される一連の手順の終了を決定する。一定の条件を満たさない場合には再度上記最適化1、2,3(S200,S300,S400)の各手順が反復される。
【0019】
図3は上記初期グループ化S100の詳細を説明するための図である。
【0020】
図3中、ステップS101にて、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップから一のフリップフロップを選択する。この選択の順序は例えばネットリスト上の番号による。ステップS102にて、既にグループが存在するか否かを判定する。初期段階ではグループは存在しないため(NO),ステップS106に移行する。ステップS106にて、当該一のフリップフロップが属するグループを設定する。そしてステップS107にて、当該一のフリップフロップの位置に基づき、回路のレイアウト上で当該グループのエリアを設定する。
【0021】
次にステップS108にて、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップの全てが、ステップS101で既に選択されたかを判定する。ここで上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップの全てが選択された場合とは、上記全てのフリップフロップが、ステップS106で設定されたグループに属する場合を意味する。回路に含まれる全てのフリップフリップがステップS101で選択されてはいなかった場合、ステップS101に戻る。
【0022】
ステップS101にて、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップから、上記一のフリップフロップ以外の他のフリップフロップを選択する。次にステップS102にて、既にグループが存在するか否かを判定する。ここでは既に上記ステップS106でグループが設けられている(YES)。このためステップS103に移行する。なおここで、ステップS106にて新たなグループが作成された直後のステップS102においては、当該新たなグループが選択される。また、直前のステップS103,S104がともにYESであり、ステップS105で処理中のフリップフロップが当該グループに追加された場合においても、その直後のステップS102では当該グループが選択される。他方、直前のステップS103あるいはS104の結果がNOとなり、その結果次のステップS105にて現在処理中のフリップフロップを当該グループに追加することができない場合の直後のステップS102では、当該グループ以外の既存のグループが選択される。
【0023】
次にステップS103にて、ステップS101で選択されたフリップフロップが、ステップS102にて選択されたグループにつき、ステップS107で設定されたエリア内に位置するか否かを判定する。エリア内に位置する場合、次にステップS104にて、前記選択されたグループにつき、ステップS106で設定されたグループに属するフリップフロップの個数が、上記パラメータ3に含まれる許容ファンアウト以内か否かを判定する。許容ファンアウト以内であれば(YES)、ステップS105にて、ステップS101で選択されたフリップフロップを、ステップS106で当該グループに追加する。そしてステップS107にて、当該グループに属するフリップフロップの位置に基づき、当該グループのエリアを更新する。
【0024】
その後ステップS108にて再び上記の如く、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップの全てが、ステップS101で選択されたかを判定する。回路に含まれる全てのフリップフリップがステップS101で選択されてはいなかった場合、ステップS101に戻る。以降ステップS101,S102,S103,S104,S105、S107、S108のループを反復実施する。
【0025】
但し当該反復実施において、ステップS101では、前回までのステップS101にて既に選択されたフリップフロップ以外のフリップフロップをその都度選択する。またステップS103において使用されるエリアは、直前のステップS107で更新後のエリアである。
【0026】
また上記反復実施の間、ステップS103にて、直前のステップS101で選択されたフリップフロップが直前のステップS107で更新後の、当該グループのエリア内に位置しない場合(NO)、ステップS102に戻る。そこで、上記の如く、当該グループ以外のグループを新たに選択し、当該新たな選択に係るグループにつき、ステップS103以降の動作を行う。同様にステップS104にて、当該グループに属するフリップフロップの個数が許容ファンアウトを超過する場合、ステップS102に戻る。そこで、上記の如く、当該グループ以外のグループを新たに選択し、当該新たな選択に係るグループにつき、ステップS103以降の動作を行う。またこのようにしてステップS102にてグループが順次選択された結果、現に存在する全てのグループの各々についてのステップS103以降の動作が既に終了しており、新たに選択するグループが存在しない場合(NO)、ステップS106に移行する。ステップS106にて、直前のステップS101で選択されたフリップフリップにつき新たなグループを作成する。そして当該新たなグループにつき、ステップS107以降の動作を行う。
【0027】
このようにして、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップの全てが、ステップS106で設定された何れかのグループに属するようになる。
【0028】
図4A乃至4Gとともに、図3とともに上述した初期グループ化S100の動作の具体例を説明する。
【0029】
図4Aの例は、上記ネットリスト1およびレイアウトデータ2に含まれるフリップフロップとして、図示の如く、番号1乃至19を有する計19個のフリップフロップが含まれる。
【0030】
図4Bでは、番号1のフリップフロップが選択され、当該フリップフロップが属するグループとしてグループ1、G1が設定されている。またグループ1、G1に対するエリアとして、エリア1、A1が設定されている。この例の場合、エリアはグループの中心を中心とする一定サイズの正方形として得られる。グループの中心は、グループに属するフリップフロップのx、y各座標の最大値および最小値のそれぞれの中心のx、y座標の位置である。エリアの決定方法に関し、図5A,5Bとともに後述する。
【0031】
図4Cは、番号1乃至8までの計8個のフリップフリップが処理された状態を示す。なおこの例の場合、上記許容ファンアウトとして8が設定されている。また図3のステップS101におけるフリップフロップの選択は、各フリップフロップの番号順になされるものとする。また図3のS107でエリア内に位置するか否かを判定する場合、当該エリア内に処理対象のフリップフロップがその一部分でも含まれていれば当該フリップフロップは当該エリアに位置すると判定する。その結果、番号1乃至8迄のフリップフロップの各々は、図3のステップS103,S104の条件を満たし、ステップS105でグループ1、G1に追加される。その結果図4Cに示されるように、番号1乃至8のフリップフロップはグループ1、G1に属することになる。
【0032】
なおエリア1、A1は、このようにして対応するグループ1、G1に属するフリップフロップが増加するごとにステップS107で更新される。図4Cの場合、グループ1、G1には番号1乃至8の計8個のフリップフリップが属するため、同8個のフリップフリップが属するグループ1,G1の中心を中心とする一定のサイズの正方形としてエリア1、A1が更新される。その結果、図4Bに示す、番号1のフリップフロップのみがグループ1、G1に属する場合のエリア1、A1に対し、図4Cの状態では、エリア1、A1が更新され、右方向にずれて設定されている。次にステップS108にて未だ全てのフリップフロップ、すなわち番号1乃至19の計19個のフリップフロップが処理済みではないため、ステップS101に戻る。
【0033】
ステップS101にて、次の番号9のフリップフロップが選択される。次にステップS102にて、上記処理中のグループ1,G1が選択される。図4Dは上記番号9のフリップフロップが処理された状態を示す。ここでは、上記の如く許容ファンアウトは8なので、番号9のフリップフロップの場合、ステップS104からステップS102に移行する。ステップS102にて他のグループが存在するか否かを判定する。この場合当該グループ1、G1意外にグループは存在しない。このため次にステップS106に移行し、上記処理中の番号9のフリップフロップにつき新たなグループ2,G2を作成する。次にエリア2(図4Dでは省略)が設定される(ステップS107)。
【0034】
図4Eは、引き続き番号10乃至15のフリップフロップが順次処理された後の状態を示す。この状態では、グループ2、G2には番号9乃至15の計7個のフリップフロップが属し、同7個のフリップフロップが属するグループ2,G2の中心を中心とする一定サイズの正方形としてエリア2、A2が設定されている。また上記7個は許容ファンアウト8以内である。
【0035】
図4Fは、引き続き番号16のフリップフロップが処理された後の状態を示す。番号16のフリップフロップは上記グループ2、G2のエリア2、A2内に位置しないため、ステップS103からステップS102に移行する、ステップS102では、他のグループとして、グループ1,G1が選択される。しかしながら当該番号16のフリップフロップは上記グループ1,G1のエリアA1に含まれない。そこでステップS103からステップS102に移行する。ステップS102にて、他には未処理のグループは存在しないため、ステップS106に移行する。ステップS106にて、当該番号16のフリップフロップにつき新たなグループ3、G3が設定され、エリア3、A3が設定されている(ステップS107)。次にステップS108にて、未だ全てのフリップフロップ、すなわち番号1乃至19の計19個のフリップフロップが処理済みではないため、ステップS101に戻る。
【0036】
図4Gは、引き続き番号17乃至19のフリップフロップが順次処理された後の状態を示す。この状態では、グループ3、G3には番号16乃至19の計4個のフリップフロップが属し、同4個のフリップフロップが属するグループ3,G3の中心を中心とする一定サイズの正方形としてエリア3、A3が設定されている。また上記4個は許容ファンアウト8以内である。この状態では、ステップS108にて、回路に含まれる全てのフリップフロップ、すなわち番号1乃至19の計19個のフリップフロップが処理済みであるため、図2の初期グループ化S100が終了する。
【0037】
次に図5A,5Bとともに、グループのエリアの決め方について説明する。
【0038】
図5Aに示す如く、クロックバッファBが許容ファンアウト8のフリップフロップFF(以下単にフリップフロップと称する)にクロック信号を供給する場合を想定する。そしてフリップフロップが最も密に配置された領域より大きくなるように、当該グループの中心からのノルムを決定する。この場合、当該決定されたノルムの範囲としてエリアの最小サイズを得る。
【0039】
更にまた図5Bに示される如く、上記同様、クロックバッファBが許容ファンアウト8のフリップフロップにクロック信号を供給する場合を想定する。そしてこの場合、距離が長くなりすぎる(クロックスキューが大きくなる)領域より小さくなるようにノルムを決定する。そして当該決定されたノルムの範囲としてエリアの最大サイズを得る。エリアのサイズとして、上記最小サイズと最大サイズとの間の何れかのサイズを選ぶことができる。
【0040】
また上記の如く、グループに属するフリップフロップが変動してグループが変化すると、当該グループの中心の座標が変化する。そのため、グループが変化するたびにエリアを再計算して更新する。
【0041】
以下に実施例に適用可能な様々なノルムの例を示す。
・グループのエリアの領域を規程するもののうちの一のものとしてのユークリッドノルムを以下に示す。
【0042】
【数1】
ここでx1=x、x2=yとした場合、このノルムの範囲はユークリッド距離が一定の値の範囲となり、したがって円形の範囲となる。
・グループのエリアの領域を規程するもののうちの他の一のものとしての最大値ノルムを以下に示す。
【0043】
【数2】
ここでx1=x、x2=yとした場合、このノルムの範囲はx、yの各々の値の最大値が一定の値の範囲となり、したがって正方形の範囲となる。
・グループのエリアの領域を規程するもののうちの更に他の一のものとしてのp次平均ノルムを以下に示す。
【0044】
【数3】
ここでx1=x、x2=yとし、更にpが1の場合、このノルムの範囲はx、yの合計が一定の値の範囲となり、したがって菱形の範囲となる。
【0045】
上記図4A乃至4Gの例の場合および以下に述べる例の場合、上記の如く、x、y座標の各々においてグループに属する全てのフリップフロップの最大座標および最小座標の中間の座標の位置をグループの中心とする。そして当該グループの中心からのノルムを上記図5A、5Bとともに述べた条件で決定する。そしてこのようにして決定されたノルムの範囲としてエリアを得る。図4A乃至4Gの例の場合および以下に述べる例の場合、上記最大値ノルムが使用され、上記グループの中心を中心とする正方形のエリアが決定される。
【0046】
次に上記最適化1(交換)および最適化2(移動)について詳細に説明する。
【0047】
図6A,6Bは上記した初期グループ化S100によって得られたグループの例を示す。
【0048】
図6Aに示す如く、この例の場合、計20個のフリップフロップが3個のグループ、グループ1乃至3、G1、G2,G3にグループ化されている。また図6Aには、これらグループ1乃至3、G1、G2,G3のそれぞれのエリア1乃至3、A1,A2,A3が示されている。この例の場合、図6Bに示されるように、グループ1、G1には8個のフリップフロップが属し、グループ2、G2には8個のフリップフリップが属し、グループ3、G3には4個のフリップフロップが属する。この例の場合も許容ファンアウトは8とされている。また図6Aに示される如く、上記エリア1乃至3、A1,A2,A3は相互の重複している。図6A,6B中、C1乃至C3は、それぞれグループ1乃至3、G1,G2,G3の中心を示している。したがって図6A,6Bに示されるグループの場合、グループ1、G1に属する8個のフリップフリップにつき、その中心C1にクロックバッファが配置される。したがってグループ1、G1に属する8個のフリップフリップの各々に対し、その中心C1に配置されるクロックバッファによりクロック信号が供給されることになる。その際のクロックラインL1,L2,L3は図6A,6Bに示される如く、配線長がいわゆるマンハッタン距離となるように接続される。なおクロックラインの接続の方法は上記マンハッタン距離となるような接続する場合に限られず、半導体集積回路に対し適用するテクノロジーに応じ適宜変更され得る。
【0049】
次にこのようなグループに対し、最適化1(交換)を行う場合の例につき、図7A乃至7Dともに詳細に説明する。
【0050】
図7Aは上記図6Bと同様のグループ化の状態を示す。ここで最適化1(交換)S200として、図7A中、グループ1、G1に属する8個のフリップフロップのうち、右上の2個のフリップフロップAをグループ2、G2に移す。また同時に、上記2個のフリップフロップAと交換に、グループ2、G2に属する8個のフリップフリップのうち、左下の2このフリップフロップBをグループ1、G1に移す。その結果、図7Bに示す如くのグループに変化する。
【0051】
以下に図7Aの状態と図7Bの状態とを、クロックバッファと各フリップフロップとの間のクロックラインの長さについて比較する。ここで図7Bの場合、図7Aの状態に対しグループが変化しているため、図7Bに示される変化後のグループの中心C1,C2,C3の位置は、変化前と異なっている。そして図7Bの場合、上記変化後のグループの中心C1,C2、C3にクロックバッファが配置され、当該クロックバッファから対応するグループに属する各フリップフロップに対しクロックラインが接続される。その場合のクロックラインL1,L2,L3が図7Bに示されている。図7AのクロックラインL1,L2,L3と比較すると、明らかに図7Bの方がクロックラインの総長が短縮されていることが分かる。
【0052】
図7Cは上記最適化1(交換)S200における動作の流れを説明するための図である。
【0053】
図7C中、ステップS201にて、上記初期グループ化S100の手順で生成されたグループから、2個のグループの組み合わせを抽出する。あるいは後述する最適化1(交換)S200、最適化2(移動)S300および最適化3(結合)S400の反復の際、前回の最適化3(結合)の結果得られたグループから2個のグループを抽出する。ステップS202にて、当該抽出に係る2個のグループの、それぞれのエリアが重なり合うか否かを判定する。重なり合わない場合、ステップS201に戻り、他の2個のグループの組み合わせの新たな抽出を行い、当該新たな抽出に係る2個のグループにつきステップS202を実行する。
【0054】
他方、ステップS202にて、当該抽出に係る2個のグループの、それぞれのエリアが重なり合う場合、ステップS203にて、当該2個のグループ間で、それぞれのグループに属するフリップフロップ同士の交換を試みる。そして当該フリップフリップ同士の交換後の状態につき、各グループにおいて、当該グループの中心と、同グループに属するフリップフロップとの間のマンハッタン距離の合計を計算する。ここで得られるグループごとのマンハッタン距離の合計は、各グループのコスト(あるいは評価指標値)の一例として使用される。なお後述するように、当該コストは上記マンハッタン距離によるものの例に限られない。更に各グループのコストを全てのグループについて合計する。当該全てのグループについて求めた合計を全体のコストと称する。なおコストを求める方法につき後述する。
【0055】
ステップS203では、上記交換の前後で全体のコストを比較し、当該交換の結果全体のコストが減少する場合、当該交換後のグループを維持する。ここでこのようにグループ間でフリップフロップ同士を交換すると、各グループに属するフリップフロップのうち当該交換に係るフリップフロップは交換以前のフリップフロップとは異なるものとなる。このようにグループに属するフリップフロップのうちの少なくともその一部のフリップフロップがそれ以前のものとは異なるものとなることを、「グループが変化する」と称する。同様に、グループに属するフリップフロップのうちの少なくともその一部のフリップフロップが他のグループに移動することにより減少する場合も「グループが変化する」と称する。同様に他のグループからフリップフロップが移動してくることにより当該グループに属するフリップフロップが増加する場合も「グループが変化する」と称する。このようにグループが変化した後の当該グループのコストを求める場合、予め当該グループの中心を、当該変化後のグループの中心に更新した上でコストを求める。
【0056】
図7Cの説明に戻り、ステップS203にて、当該交換の結果全体のコストが減少しない場合、当該交換前のグループを維持する。このような動作を、それぞれが異なるグループに属する全てのフリップフロップ同士の組み合わせにつき一組ずつ順次反復して行う。そしてその都度、全体のコストが減少する場合には該当する交換後のグループを維持し、減少しない場合には交換前のグループを維持する。
【0057】
このようにして上記2個のグループについてステップS203が終了した後、全てのグループの組み合わせの抽出が済んだか否かを判定する(ステップS204)。全てのグループの組み合わせの抽出が済んでいなかった場合(NO)、ステップS201に戻り、更に他の組み合わせに係る2個のグループの新たな抽出を行い、当該新たな抽出に係る2個のグループにつきステップS202を実行する。全てのグループの組み合わせの抽出が済んだ場合(ステップS204のYES)、最適化1(交換)を終了する。
【0058】
このようにしてステップS201にて全てのグループの組み合わせが順次抽出され、それぞれの組み合わせに対し順次ステップS202,S203が実行される。
【0059】
図7Dは図7Aの例に対し上記最適化1(交換)S200を行う場合の、グループ1,2、G1,G2間でフリップフロップの交換を試みる方法について説明するための図である。上記の如く図7Aの例の場合、グループ1,2の各々には許容ファンアウトである8個のフリップフリップが属する。したがって交換を試みるフリップフリップの組み合わせの数は、8×8=64であり、64通りである。これら64通りの各々につき、順次上記交換を試み、各グループの中心を更新した上で交換前後で全体のコストを比較する。その結果全体のコストが減少すれば当該交換後のグループを維持し、減少しなければ交換前のグループを維持する。このような動作を64回反復する。実際に当該64通りの反復を行った結果は以下の通りである。
【0060】
すなわち、上記の如くグループ1,2、G1,G2間でフリップフロップA,Bの交換を行った場合全体のコストが減少する。他方、グループ1,3、G1,G3間およびグループ2,3、G2,G3間でフリップフロップの交換を行っても全体のコストは減少しない。その結果、このように図7Aの例において上記図7Cとともに上述の最適化1(交換)S200を行った結果、図7Bに示す如く、グループ1,2、G1,G2間でフリップフロップA,Bの交換のみが行われた状態のグループが得られる。
【0061】
次に図8A〜8Dとともに、最適化2(移動)S300につき詳細な説明を行う。
【0062】
図8Aは図7Bの状態、すなわち上記7Aのグループに対し上記最適化1(交換)が実行された状態を示す。ここで図8Aの状態でグループ1、2,3、G1,G2,G3は、相互にそのエリアが重なり合っているものとする。この例の場合、例えば図8Bに示す如く、グループ2、G2に属する2つのフリップフロップDのうちの何れか一個をグループ3、G3に移動した場合、全体のコストが最も減少する。すなわち、図8Aのグループにおいて考え得るグループ間のフリップフロップの移動の全ての場合を試み、各場合についてグループの中心を更新した上で全体のコストの変化量を記憶装置に記憶しておく。このようにして記憶された、移動を試みた各場合の全体のコストの変化量のうち、最も減少量の大きい場合を得る。そして当該最も減少量の多い場合の移動のみを実際に行う。図8A,8Bの場合、上記2このフリップフロップDのうちの1個のフリップフリップの移動が上記最も減少量の多い場合に該当する。ここで図2とともに上記したように、最適化1(交換)S200、最適化2(移動)S300および最適化3(結合)は、終了判定S500の結果が「一連の手順を反復する」であった場合、再度反復される。図8A,8Bの場合、このように最適化2(移動)S300が反復された場合を想定している。当該反復に係る最適化2(移動)S300において、上記2このフリップフロップDのうちの他の1個のフリップフリップの移動が上記最も減少量の多い場合に該当する。その結果、当該反復による2回の最適化2(移動)の各々の回において、上記2このフリップフロップDの各々が、上記最も減少量の多い場合に該当し、当該移動が実際に行われる。
【0063】
他方、図8Bに示す如く、グループ2、G2からグループ1、G1へのフリップフリップの移動を想定した場合、グループ1、G1に属するフリップフリップの個数は8個であり、既に許容ファンアウトに至っている。上記の如くグループ2、G2からグループ1、G1へのフリップフリップの移動を行った場合、グループ1、G1に属するフリップフロップの総数が9となってしまい、許容ファンアウト8を超えてしまう。したがってこのような移動は実際には行われない。
【0064】
図8Cは上記の如くグループ2,3、G2,G3間で、最適化2(移動)S300を試みる方法について説明するための図である。図8Aの場合、グループ2、G2には計8個のフリップフリップが属し、グループ3、G3には計4個のフリップフロップが属する。この場合、グループ2に属する8個のフリップフロップの各々につき、グループ3への移動を試み、その都度各グループの中心を更新したうえで全体のコストを得、全体のコストの変化量を記憶装置に記憶しておく。他方、グループ3に属するフリップフリップをグループ2に移動することを想定すると、その場合、グループ2に属するフリップフリップの総数が9となり許容ファンアウト8を超える。したがってグループ3からグループ2への移動は実際には行われない。このようにして記憶された、各移動の場合の全体のコストの変化量を相互比較し、減少量が最も大きい場合の移動のみを実際に行い、それ以外の移動は実際には行わない。
【0065】
図8Dは上記最適化2(移動)S300における動作の流れを説明するための図である。
【0066】
図8D中、ステップS301にて、前記最適化1(交換)の結果得られたグループから2個のグループの組み合わせを抽出する。ステップS302にて、当該組み合わせに係る2個のグループの、それぞれのエリアが重なり合うか否かを判定する。重なり合わない場合、ステップS301に戻り、他の2個のグループの組み合わせの抽出を新たに行い、当該新たな抽出に係るグループにつき、ステップS302を実行する。
【0067】
他方、ステップS302にて、当該組み合わせに係る2個のグループの、それぞれのエリアが重なり合う場合、ステップS303にて、当該2個のグループ間で、それぞれのグループに属するフリップフロップの移動を試みる。そして当該フリップフリップの移動後の状態につき、各グループの中心を更新した上で全体のコストを求める。そして上記移動の前後で全体のコストを比較し、その都度コストの変化量を記憶装置に記憶しておく。このような動作を上記2個のグループの間で考え得る全てのフリップフロップの移動の場合について試み、それぞれの場合における全体のコストの変化量を記憶装置に記憶する。ここで上記の如く、少なくとも一方のグループに属するフリップフリップの総数が既に許容ファンアウト8に達している場合、当該グループに対するフリップフロップの移動は行わない。そしてステップS304にて、このようにして記憶された各移動の場合の全体のコストの変化量を相互に比較し、最も減少量の大きい場合の移動のみを実際に行い、他の場合の移動は行わない。
【0068】
このようにして上記2個のグループについてステップS304が終了した後、全てのグループの組み合わせの抽出が済んだか否かを判定する(ステップS305)。全てのグループの組み合わせの抽出が済んでいなかった場合(NO)、ステップS301に戻り、更に他の組み合わせに係る2個のグループの新たな抽出を行い、当該新たな抽出に係る2個のグループにつきステップS302を実行する。全てのグループの組み合わせの抽出が済んだ場合(ステップS305のYES)、最適化2(移動)を終了する。
【0069】
このようにしてステップS301にて全てのグループの組み合わせが順次抽出され、ステップS302の条件を満たす全てのグループの組み合わせに対し順次ステップS303,S304が実行される。
【0070】
図8Aのグループに対し、上記図8Dとともに上述した最適化2(移動)S300が実施された結果、上記の如く、グループ2、G2に属する2個のフリップフロップDのうちの一個がグループ3、G3に移動される。そして最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400が反復され、当該反復に係る最適化2(移動)にて、今度はグループ2、G2に属する2個のフリップフロップDのうちの他の一個がグループ3、G3に移動される。その結果図8Bに示される状態、すなわち結果的にグループ2、G2に属する2個のフリップフロップDがグループ3、G3に移動される。なおこの場合、前記最適化3(結合)においては後述する結合を実行する条件が満たされず、実際には結合が行われなかったものとする。また前記反復に係る最適化1(交換)においても、交換により全体のコストが減少する場合が存在せず、実際には交換が行われなかったものとする。したがって最初の最適化2(移動)S300と前記反復に係る2度目の最適化2(移動)S300との間で実行される前記最適化3(結合)S400および前記反復に係る最適化1(交換)S200においては何らグループが変化しなかった場合を想定している。
【0071】
図9は図8Bと同じ状態を示しており、上記最適化1(交換)S200、最適化2(移動)S300の効果について説明するための図である。
【0072】
図9の状態を最適化1(交換)S200,最適化2(移動)S300の実行前の状態、すなわち図7Aのグループの状態と比較する。図7Aのグループの状態において図7A中、例えばグループ1、G1を着目する。この場合、グループ1、G1には2個のフリップフロップAが属しており、これらを含む計8個のフリップフリップは図7A中、横方向に比較的広く分散している。この状態では図7Aに示す如く、当該グループ1の中心C1にクロックバッファを設け、当該クロックバッファから当該8個のフリップフロップに対し配線長がマンハッタン距離をなすようにクロックラインL1を接続することになる。他方、最適化1(交換)S200,最適化2(移動)S300の実行後の状態、すなわち図9では同図中、グループ1、G1には2個のフリップフロップAの代わりに、元はグループ2、G2に属していたフリップフロップBが属している。その結果、これらを含む計8個のフリップフリップは図9、横方向において、比較的集中している。この状態では図9に示す如く、当該グループ1の中心C1にクロックバッファを設け、当該クロックバッファから当該8個のフリップフロップに対し配線長がマンハッタン距離をなすようにクロックラインL1を接続することになる。図7AにおけるクロックラインL1と図9におけるクロックラインL1とを比較すると、図9のクロックラインL1の総長の方が明らかに短縮されていることが分かる。同様な点はグループ2、G2のくロックラインL2についても言える。
【0073】
次にグループ2,3、G2,G3につき、最適化1(交換)S200,最適化2(移動)S300の実行前後の状態、すなわち図7Aと図9の状態を相互に比較する。最適化1(交換)S200,最適化2(移動)S300の実行前にグループ2、G2に属していた2個のフリップフロップDが、最適化1(交換)S200,最適化2(移動)S300の実行後にはグループ3、G3に属している。その結果グループ3についてのみ着目すると、グループ3に属するフリップフロップの総数が4から6に増加した分、クロックラインL3の総長は増加している。しかしながら同時にグループ2、G2について着目すると、上記の如くフリップフロップBがフリップフロップAと交換されたことに加え、フリップフロップDがグループ3、G3に移動されている。その結果、図9の状態では、グループ2、G2に属する計6個のフリップフロップは、図9の横方向において比較して集中しており、その結果クロックラインL2は図7Aの状態に比して大幅に短縮されている。その結果、全グループ1,2,3、G1,G2,G3を通じ、各グループのクロックラインL1,L2,L3の総長の合計は、図7Aの状態に比し、図9の状態の方が明らかに短縮されている。
【0074】
上記の如く、最適化1(交換)S200の場合、図7CのステップS203にて、全体のコストが下がる場合にのみ実際にグループ間のフリップフロップの交換を行う。また、最適化2(移動)S300の場合、図8DのステップS304にて全体のコストが最も下がる場合にのみ、グループ間の移動を行う。その結果図7A,図9とともに上述の如く、最適化1(交換)S200,最適化2(移動)S300の実行により、全てのグループを通じ、クロックラインの総長の合計を短縮できる。
【0075】
更に各グループのファンアウトに着目した場合、図7Aの場合にはグループ1,2,3、G1,G2,G3のそれぞれのファンアウトが8,8,4である。これに対し、図9の場合にはグループ1,2,3、G1,G2,G3のファンアウトはそれぞれ8,6,6となっている。図7Aの場合最大ファンアウト8と最小ファンアウト4との差が4であるのに対し、図9の場合は最大ファンアウト8と最小ファンアウト6との差が2である。よってファンアウトのバラツキが低減されている。
【0076】
図10A乃至10Cとともに上記最適化3(結合)S400につき詳細に説明する。
【0077】
図10Aは、上記最適化2(移動)S300の結果得られたグループの例を示す。同図の例では回路には計20個のフリップフロップが含まれ、グループ1、G1には4個のフリップフロップが属し、グループ2、G2にも4個のフリップフロップが属する。またグループ3、G3には8個のフリップフリップが属し、グループ4、G4には4個のフリップフロップが属する。更に図10Aの場合、グループ1,2の間で、各々のグループに属するフリップフロップが、他のグループのエリア内に位置するものとする。すなわちグループ1に属する4個のフリップフロップは、グループ2のエリア内に位置するものとする。同様にグループ2に属する4個のフリップフロップは、グループ1のエリア内に位置するものとする。このような関係はグループ3,4との間でも成立するものとする。すなわち、グループ3に属する8個のフリップフロップは、グループ4のエリア内に位置するものとする。同様にグループ4に属する4個のフリップフロップは、グループ3のエリア内に位置するものとする。
【0078】
このように2個のグループが以下の関係を有する際、当該関係を「互いのフリップフリップが互いのエリアに含まれる関係」と称する。すなわち一のグループに属する全てのフリップフロップが他の一のグループのエリア内に位置し、前記他の一のグループに属する全てのフリップフロップが前記一のグループのエリア内に位置する関係である。
【0079】
ここで最適化3(結合)S400では、互いのフリップフリップが互いのエリアに含まれる関係を有するグループ1,2、G1,G2の間、およびグループ3,4、G3,G4の間の各々につき、以下の動作を行う。すなわち2個のグループのファンアウトを合計した場合に許容ファンアウト以内である場合、当該2個のグループを結合して1個のグループとなるようにグループの変更を行う。上記の如く、フリップフロップにクロック信号を供給する際、各グループに一のクロックバッファを設ける。上記の如くグループ同士の結合を行うことにより、回路に含まれるフリップフロップが属するグループの総数が減少する。その結果回路全体を通じ、使用するクロックバッファの数が減少する。その結果消費電力を低減させることができる。
【0080】
図10Aの例の場合、まずグループ1,2、G1,G2の間では、上記の如く、各グループに属するフリップフロップの数は4であり、すなわちファンアウトが4である。したがってグループ1,2のファンアウトを合計すると8となり、許容ファンアウト8以内に収まっている。したがって図10Bに示される如く、グループ1,2を結合する。他方グループ3,4の間では、上記の如く、各グループに属するフリップフロップの数はそれぞれ8、4であり、すなわちファンアウトがそれぞれ8,4である。したがってグループ3,4のファンアウトを合計すると12となり、許容ファンアウト8を超える。したがって図10Bに示される如く、グループ3,4を結合することはしない。
【0081】
図10Cは最適化3(結合)S400の動作の流れを説明するための図である。
【0082】
図10C中、ステップS401にて、前記最適化2(移動)S300の結果得られたグループから2個のグループの組み合わせを抽出する。ステップS402にて、当該組み合わせに係る2個のグループの、それぞれのエリアが重なり合うか否かを判定する。重なり合わない場合、ステップS401に戻り、他の2個のグループの組み合わせの新たな抽出を行い当該新たな抽出に係る2個のグループにつきステップS402以降を実行する。
【0083】
他方、ステップS402にて、当該組み合わせに係る2個のグループの、それぞれのエリアが重なり合う場合、ステップS403にて、当該2個のグループが互いのフリップフリップが互いのエリアに含まれる関係を有するか否かを判定する。当該2個のグループが互いのフリップフリップが互いのエリアに含まれる関係を有さない場合、ステップS401に戻り、他の2個のグループの組み合わせの新たな抽出を行い当該新たな抽出に係る2個のグループにつきステップS402以降を実行する。当該2個のグループが互いのフリップフリップが互いのエリアに含まれる関係を有する場合、ステップS404を実行する。
【0084】
ステップS404では、当該2個のグループのそれぞれのファンアウトの合計が許容ファンアウト以内に収まるか否かを判定する。当該2個のグループのそれぞれのファンアウトの合計が許容ファンアウト以内に収まらない場合ステップS401に戻り、他の2個のグループの組み合わせの新たな抽出を行い当該新たな抽出に係る2個のグループにつきステップS402以降を実行する。当該2個のグループのそれぞれのファンアウトの合計が許容ファンアウト以内に収まる場合、ステップS405を実行する。ステップS405では、当該2個のグループを結合し、1個のグループとする。このようにして上記2個のグループについてステップS405が終了した後、全てのグループの組み合わせの抽出が済んだか否かを判定する(ステップS406)。全てのグループの組み合わせの抽出が済んでいなかった場合(NO)、ステップS401に戻り、更に他の組み合わせに係る2個のグループの新たな抽出を行い、当該新たな抽出に係る2個のグループにつきステップS402を実行する。全てのグループの組み合わせの抽出が済んだ場合(ステップS406のYES)、最適化3(結合)を終了する。
【0085】
このようにしてステップS401にて全てのグループの組み合わせが順次抽出され、各々の組み合わせに係る2個のグループに対し、上記同様、ステップS402以降の動作を実行する。
【0086】
次に図11とともに、図2に示す終了判定S500につき説明を行う。
【0087】
終了判定S500では、以下の条件1あるいは条件2を満たす場合に収束したと判断し、一連の手順を終了する。すなわち最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の実行を終了し、図2の処理を終了する。
【0088】
条件1:
以下の全ての条件1)、2)、3)が満たされる:
1)最適化1(交換)S200の前後で全体のコストが一定であり減少しない。
【0089】
2)最適化2(移動)S300の前後で全体のコストが一定であり減少しない。
【0090】
3)最適化3(結合)S400の前後で全体のコストが一定であり減少しない。
【0091】
条件2:
最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の反復の回数nが所定回数に至った。
【0092】
図12A、12B,12C、12Dとともに、最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の反復の例につき説明する。
【0093】
図12Aは初期グループ化S100によってグループ1,2,3、G1,G2,G3が得られた状態を示す。図12Aに示す如く、グループ1、G1には8個のフリップフロップが属し、グループ2、G2には8個のフリップフリップが属し、グループ3、G3には6個のフリップフロップが属する。
【0094】
最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の各々では、グループ1と2、G1,G2,グループ1と3、G1,G3、グループ2と3、G2,G3の順番で処理を行うものとする。
【0095】
図12Aの状態ではグループ1と2では、相互のエリア1と2、A1,A2が重なっていない。したがって最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400のいずれにおいても処理対象とならない(図7C中、ステップS202のNO、図8D中、ステップS302のNO、図10C中、ステップS402のNO)。他方グループ2と3では、相互のエリア2と3、A2,A3が重なっている。したがって最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400のいずれにおいても処理対象となる(図7C中、ステップS202のYES、図8D中、ステップS302のYES、図10C中、ステップS402のYES)。この例の場合、図12Bに示される如く、最適化2(移動)S300の反復により、グループ2から2個のフリップフリップEがグループ3に移動されたものと想定する。
【0096】
上記グループ2、G2からグループ3、G3への2個のフリップフロップEの移動の結果、図12Cに示す如く、グループ2,3の各々に属するフリップフロップが変化する。その結果図12Cに示す如く、各グループ2,3の中心C2,C3が変化する。例えばグループ2、G2の場合上記の如く、右端部に有ったフリップフリップEがグループ3、G3へ移動している。その結果グループ2には6個のフリップフロップが残る。当該残った6個のフリップフロップの中心は、前記移動前の8個のフリップフロップの場合の中心に対し、左側に移動している。したがってグループ2の中心C2はこれに対応して左側に移動する。ここでグループ2のエリア2、A2は上記の如く、当該グループの中心C2を中心とする一定サイズの正方形である。上記の如くグループ2の中心C2の左側の移動により、エリア2、A2もこれに対応して左側に移動する(図12C参照)。
【0097】
その結果図12Cに示す如く、グループ1と2との間で、相互にエリア1と2、A1,A2とが重なる。この状態で最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400を実行した場合、上記図12Aの場合と異なり、グループ1と2との間が処理対象となる(図7C中、ステップS202のYES、図8D中、ステップS302のYES、図10C中、ステップS402のYES)。その結果図12Dに示す如く、例えば最適化2(移動)S300において、グループ1、G1のフリップフロップFがグループ2、G2に移動される。
【0098】
このように実施例のクロック信号供給回路の設計方法によれば、最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の実行においてグループが変化すると、それに対応してそのエリアが変化する。エリアが変化すると、当初重なっていなかったグループ相互でエリアが重なり合う場合がある。そのような場合、当初はエリアの重なりが無くグループ相互間が最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の処理対象外であったものが、新たに処理対象となる。その結果最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の処理対象範囲が広がり、より効果的な最適化が期待できる。
【0099】
図13とともに、最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の反復の追加的な条件について述べる。
【0100】
すなわち、前回の最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400の実行において、ある組み合わせに係るグループ間ではフリップフロップの交換も移動も実際には行われず、当該グループが変化しなかった場合を想定する。そのような場合、当該グループ間ではそれ以降、最適化1(交換)S200,最適化2(移動)S300,最適化3(結合)S400を行わないものとすることができる。そのようにすることによって、該当する組み合わせに係るグループは処理対象外となる.その結果以後該当する組み合わせに係るグループについての処理が実行されないため、処理量が削減できる。
【0101】
図14とともに、上記終了判定S500にて「一連の手順を終了する」旨の判定がなされた以後の動作につき説明する。
【0102】
各グループ1,2,3、G1,G2,G3のそれぞれの中心C1,C2,C3にクロックバッファB1,B2,B3を挿入する。次にクロックバッファB1,B2、B3から、それぞれのグループ1,2,3のフリップフロップに対し、クロックラインL1,L2,L3を接続する。そしてクロックバッファB1,B2,B3から、最も近いH型ツリーの末端BにクロックラインL0を接続する。その結果H型ツリーの末端Bに、各クロックバッファB1,B2,B3を介し、各グループ1,2,3に属するフリップフロップがクロックラインL0,L1,L2,L3により接続される。
【0103】
以下に上記コストを求める方法につき、数式を使用した説明を行う。
【0104】
グループの中心の座標は以下の数式で得られる。
【0105】
Xg = ( Xfmax + Xfmin ) / 2
Yg = ( Yfmax + Yfmin ) / 2
ここでXfmax,Xfminは、それぞれグループ内のフリップフロップの最大x座標、最小x座標をそれぞれ示す。同様にYfmax,Yfminは、それぞれグループ内のフリップフロップの最大y座標、最小y座標をそれぞれ示す。
【0106】
各グループのコストは以下の数式で得られる。
【0107】
Cg = Σ( | Xf - Xg | + | Yf - Yg | )
ここでグループのコストは上記の如く、グループの中心からフリップフリップまでのマンハッタン距離の総和である。マンハッタン距離はクロックラインの配線長に対応するため、グループのコストは当該グループに属するフリップフロップに係るクロックラインの総配線長に対応する。
【0108】
全体のコストは以下の数式で得られる。
【0109】
C = ΣCg
上記最適化1(交換)S200,最適化2(移動)S300におけるコストの変化量は以下の数式で得られる。
【0110】
ΔC = { Cia + Cja } − { Cib + Cjb }
= { Σ( | Xf - Xia | + | Yf - Yia | ) + Σ( | Xf - Xja | + | Yf - Yja | ) } -
{ Σ( | Xf - Xib | + | Yf - Yib | ) + Σ( | Xf - Xjb | + | Yf - Yjb | ) }
ここで
C:コスト
f: フリップフリップの識別番号
Cgにおけるg:グループの識別番号
Xf:フリップフリップのx座標
Yf:フリップフリップのy座標
Xg:グループの中心のx座標
Yg:グループの中心のy座標
またi, jは交換・移動の対象となるグループの組み合わせにおける各グループの識別番号を示し、aは交換・移動後、bは交換・移動前であることを示す。
【0111】
上記各グループのコストCg(すなわち評価指標値)としては上記の例、すなわち
マンハッタン距離:Cg = Σ( | Xf - Xg | + | Yf - Yg | )
によるものに限られず、例えば以下に示すユークリッド距離、総配線長、容量および遅延等のうちのいずれか一のものによるものとすることができる。
【0112】
1.ユークリッド距離:Cg = Σ{ ( Xf - Xg ) + ( Yf - Yg ) }
2.総配線長:Cg = クロックバッファから各フリップフロップまでの総配線長
3.容量(負荷):Cg = クロックバッファのゲート容量+ 配線容量+ 各フリップフロップのクロック入力ピン容量
4.遅延:Cg = クロックバッファから各フリップフロップのクロック入力ピンまでの遅延の合計
以下に図1とともに、実施例のクロック信号供給回路の設計方法をプログラムで実現する際の処理の概要を述べる。
【0113】
図1に示される如くネットリスト(周知のVerilog, VHDL等)1が記憶装置からCPUに読み込まれ、CPUは当該ネットリスト1からフリップフロップのインスタンスを抽出する(図1中、データリード4)。またCPUは抽出されたフリップフロップをグループ化する(図1中、フリップフロップのグループ化5)。またCPUはグループ化で得られたグループに対し、ネットリスト上で、図14とともに上述の如くクロックバッファを挿入し、クロックラインを接続する。そしてCPUは、このようにクロックバッファが挿入され、クロックラインが接続された状態のネットリスト7を記憶装置に書き込む(図1中、データライト6)。
【0114】
同様に図1に示される如く、レイアウトデータ(DEF or PKIT等)2が記憶装置からCPUに読み込まれ、CPUは当該レイアウトデータ2から上記フリップフロップのインスタンスの座標を抽出する(図1中、データリード4)。そしてCPUは抽出された座標に基づいて上記グループ化を行う(図1中、フリップフロップのグループ化5)。またCPUはグループ化で得られたグループに対し、レイアウトデータ上で、図14とともに上述の如くクロックバッファを配置し、クロックラインを配置する。そしてCPUはこのようにクロックバッファが配置され、クロックラインが配置された状態のレイアウトデータ8を記憶装置に書き込む(図1中、データライト6)。
【0115】
また設計者はコンピュータに対し、コマンドラインの形態で各種のパラメータ3を入力する。当該各種のパラメータは図1とともに上記の如く、エリアの定義(すなわちエリアの決定方法)、許容ファンアウト、図2に示す最適化1〜3(S200〜S400)の反復回数n等を含む。上記エリアの決定方法とは、例えば上記の如く、最大値ノルムを使用して一定サイズの正方形のエリアを得る方法である。
【0116】
また上記CPUは、グループ化5の結果得られるグループを示すデータファイル9を記憶装置に書き込む。このデータファイル9には各グループに属するフリップフロップを示す情報が含まれ、例えば周知のCSV(Comma Separated Value format)形式のファイルとされる。
【0117】
実施例のクロック信号供給回路の設計方法によれば、以下の効果が得られる。
【0118】
1)クロックバッファからのクロックラインの配線長を短縮し、そのバラツキを低減することが可能である。
【0119】
2)クロックバッファごとのファンアウトのバラツキを低減可能である。
【0120】
3)クロックバッファの個数を削減可能である。
【0121】
4)半導体集積回路において、局所的ではなく、全体的にクロックスキューを改善し得る。
【0122】
5)プログラム言語で記述することができる。また、現実的な計算量、現実的な記憶領域でグループ化を実施することができる。これはエリアが重なり合うグループ間のみが最適化の処理対象となるため、処理量は処理対象のフリップフロップの個数に対し線形に増加するにすぎない。またコストが減少する場合にグループの変更を実施するため、コストは単調に減少する。
【0123】
このように実施例のクロック信号供給回路の設計方法によれば、半導体集積回路におけるクロックスキューを低減し得るクロック信号供給回路の設計方法を自動化し得る。
【0124】
図15とともに実施例のクロック信号供給回路の設計方法を適用可能な半導体集積回路の例について説明する。
【0125】
図15は実施例のクロック信号供給回路の設計方法を適用可能な半導体集積回路の例としての、DIMM(Dual Inline Memory Module)を制御するメモリコントローラを示す。当該メモリコントローラの動作周波数は例えばGHzのオーダーを超えるものとされる。
【0126】
出願人は図15とともに上記したメモリコントローラの回路設計において、実施例のクロック信号供給回路の設計方法を実行した。より具体的には、同方法をプログラムで実現し、クロックバッファの挿入およびクロックラインの接続に係る回路設計を自動化して実施した。
【0127】
その結果フリップフロップ間のクロックスキューを低減することができた。またセットアップタイミング、ホールドタイミング等に係る設計作業を容易に成しえた。また自動化により、グループ化、ゲートエントリ、スキュー調整、タイミング調整、配置等の工数を削減できた。したがってLSI開発期間の短縮、開発コストの削減が可能な点が確認できた。
【0128】
図16は実施例のクロック信号供給回路の設計方法をプログラムで実現する場合に使用可能なコンピュータの構成を説明するためのブロック図である。
【0129】
図16に示すごとく、同コンピュータ500は、与えられたプログラムを構成する命令を実行することによって様々な動作を実行するためのCPU501と、キーボード、マウス等よりなり設計者が操作内容又はデータを入力するための操作部502とを有する。またコンピュータ500は、設計者にCPU501による処理経過、処理結果等を表示するCRT、液晶表示器等よりなる表示部503を有する。またコンピュータ500は、ROM、RAM等よりなりCPU504が実行するプログラム、データ等を記憶したり作業領域として使用される上記記憶装置としてのメモリ504を有する。またコンピュータ500は,プログラム、データ等を格納する上記記憶装置としてのハードディスク装置505を有する。またコンピュータ500は、上記記憶装置としてのCD−ROM507を媒介として外部からプログラムをロードしたりデータをロードするためのCD−ROMドライブ506を有する。またコンピュータ500は、インターネット、LAN等の通信網509を介して外部サーバからプログラムをダウンロード等するためのモデム508を有する。
【0130】
コンピュータ500はCD−ROM507を媒介として、あるいは通信ネットワーク509を媒介として、上述の実施例のクロック信号供給回路の設計方法をCPU501に実行させるためのプログラムをロードあるいはダウンロードする。そしてこれをハードディスク装置505にインストールし、適宜メモリ504にロードしてCPU501が実行する。その結果、同コンピュータ500により実施例のクロック信号供給回路の設計方法が自動的に実行される。
【0131】
なお実施例のクロック信号供給回路の設計方法は上記の如くフリップフロップにクロック信号を供給する回路の設計方法に限られず、他の回路素子にクロック信号を供給する回路の設計方法にも同様に適用可能である。
【0132】
また実施例のクロック信号供給回路の設計方法では、最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400を当該順番に実施するものとして説明した。しかしながら最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400の実行の順序はこの順序に限られず、他の順序で実行してもよい。
【0133】
また最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400の全てを実行するように説明した。しかしながら、最適化1(交換)S200,最適化2(移動)S300および最適化3(結合)S400の計3種の最適化のうちの少なくとも一種の最適化のみを実行するようにしてもよい。
【0134】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
演算手段がクロック信号の供給される複数の回路素子の回路データを記憶装置から読み込む段階と、
演算手段が前記複数の回路素子をグループ分けする段階と、
演算手段がグループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくともいずれかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復する段階とを有するクロック信号供給回路の設計方法であって、
前記各グループに属する回路素子に対し一のクロックバッファを用いてクロック信号を供給することを特徴とするクロック信号供給回路の設計方法。
(付記2)
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループに属する各回路素子にクロック信号を供給するクロックバッファから各回路素子までの総配線長、当該グループにおける前記クロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれかとされる
付記1に記載のクロック信号供給回路の設計方法。
(付記3)
前記グループ分けする段階は、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得ることを特徴とする付記1に記載のクロック信号供給回路の設計方法。
(付記4)
前記最適化段階では更に、2つのグループの回路素子が互いに相手のグループのエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする付記3に記載のクロック信号供給回路の設計方法。
(付記5)
前記交換段階は、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階は、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする付記3または4に記載のクロック信号供給回路の設計方法。
(付記6)
コンピュータに、クロック信号の供給が行われる複数の回路素子をグループに分けて得られた当該グループに対し、グループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくともいずれかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復させるプログラム。
(付記7)
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループに属する各回路素子にクロック信号を供給するクロックバッファから各回路素子までの総配線長、当該グループにおける前記クロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれかとされる
請求項6に記載のプログラム。
(付記8)
更にコンピュータに、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得る段階を実行させることを特徴とする請求項6に記載のプログラム。
(付記9)
前記最適化段階では更に、2つのグループの回路素子が互いに相手側のエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする付記8に記載のプログラム。
(付記10)
前記交換段階では、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階では、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする付記8または9に記載のプログラム。
(付記11)
クロック信号の供給が行われる複数の回路素子をグループに分けて得られた当該複数のグループに対し、グループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくとも何れかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復する演算手段を有し、
前記最適化段階の反復の結果得られる各グループに属する回路素子に対し一のクロックバッファを用いてクロック信号が供給されることを特徴とする情報処理装置。
(付記12)
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループに属する各回路素子にクロック信号を供給するクロックバッファから各回路素子までの総配線長、当該グループにおける前記クロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれかとされる
請求項11に記載の情報処理装置。
(付記13)
更に前記演算手段は、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得ることを特徴とする請求項11に記載の情報処理装置。
(付記14)
前記最適化段階では更に、2つのグループの回路素子が互いに相手側のエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする付記13に記載の情報処理装置。
(付記15)
前記交換段階では、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階では、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする付記13または14に記載の情報処理装置。
【図面の簡単な説明】
【0135】
【図1】実施例によるクロック信号供給回路の設計方法のデータの流れを示す図である。
【図2】図1中、フリップフロップのグループ化の基本的なアルゴリズムの流れを示す図である。
【図3】図2中、初期グループ化の動作の流れを示す図である。
【図4A】初期グループ化の動作を説明するための図(その1)である。
【図4B】初期グループ化の動作を説明するための図(その2)である。
【図4C】初期グループ化の動作を説明するための図(その3)である。
【図4D】初期グループ化の動作を説明するための図(その4)である。
【図4E】初期グループ化の動作を説明するための図(その5)である。
【図4F】初期グループ化の動作を説明するための図(その6)である。
【図4G】初期グループ化の動作を説明するための図(その7)である。
【図5A】初期グループ化におけるグループのエリアの決め方について説明するための図(その1)である。
【図5B】初期グループ化におけるグループのエリアの決め方について説明するための図(その2)である。
【図6A】初期グループ化を実行後の状態の例を示す図(その1)である。
【図6B】初期グループ化を実行後の状態の例を示す図(その2)である。
【図7A】最適化1(交換)について説明するための図(その1)である。
【図7B】最適化1(交換)について説明するための図(その2)である。
【図7C】最適化1(交換)について説明するための図(その3)である。
【図7D】最適化1(交換)について説明するための図(その4)である。
【図8A】最適化2(移動)について説明するための図(その1)である。
【図8B】最適化2(移動)について説明するための図(その2)である。
【図8C】最適化2(移動)について説明するための図(その3)である。
【図8D】最適化2(移動)について説明するための図(その4)である。
【図9】最適化1,最適化2を実行後の状態の例を示す図である。
【図10A】最適化3(結合)について説明するための図(その1)である。
【図10B】最適化3(結合)について説明するための図(その2)である。
【図10C】最適化3(結合)について説明するための図(その3)である。
【図11】フリップフロップのグループ化における収束の判定について説明するための図である。
【図12A】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その1)である。
【図12B】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その2)である。
【図12C】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その3)である。
【図12D】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その4)である。
【図13】最適化1,最適化2,最適化3を反復する場合の例について説明するための図(その5)である。
【図14】クロックバッファの挿入、クロックラインの接続について説明するための図である。
【図15】実施例の効果の検証について説明するための図である。
【図16】実施例によるクロック信号供給回路の設計方法をコンピュータで実現する場合について説明するための図である。
【符号の説明】
【0136】
501 CPU
502 操作部
503 表示部
504 メモリ(記憶装置)
505 HDD(記憶装置)
506 CD−ROMドライブ
507 CD―ROM(記憶装置)
508 モデム
509 通信網
FF フリップフロップ
G1,G2,G3,... グループ
A1,A2,A3,... エリア
C1,C2,C3,.. グループの中心
B1,B2,B3,... クロックバッファ
L0,L1,L2,L3,... クロックライン
【特許請求の範囲】
【請求項1】
演算手段がクロック信号の供給される複数の回路素子の回路データを記憶装置から読み込む段階と、
演算手段が前記複数の回路素子をグループ分けする段階と、
演算手段がグループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくともいずれかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復する段階とを有するクロック信号供給回路の設計方法であって、
前記各グループに属する回路素子に対し一のクロックバッファを用いてクロック信号を供給することを特徴とするクロック信号供給回路の設計方法。
【請求項2】
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループのクロックバッファから各回路素子までの総配線長、当該グループのクロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれか一のものとされる
請求項1に記載のクロック信号供給回路の設計方法。
【請求項3】
前記グループ分けする段階は、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得ることを特徴とする請求項1に記載のクロック信号供給回路の設計方法。
【請求項4】
前記最適化段階では更に、2つのグループの回路素子が互いに相手のグループのエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする請求項3に記載のクロック信号供給回路の設計方法。
【請求項5】
前記交換段階は、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階は、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする請求項3または4記載のクロック信号供給回路の設計方法。
【請求項6】
コンピュータに、クロック信号の供給が行われる複数の回路素子をグループに分けて得られた当該グループに対し、グループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくともいずれかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復させるプログラム。
【請求項7】
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループのクロックバッファから各回路素子までの総配線長、当該グループのクロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれか一のものとされる
請求項6に記載のプログラム。
【請求項8】
更にコンピュータに、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得る段階を実行させることを特徴とする請求項6に記載のプログラム。
【請求項9】
前記最適化段階では更に、2つのグループの回路素子が互いに相手側のエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする請求項8に記載のプログラム。
【請求項10】
前記交換段階は、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階は、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする請求項8または9に記載のプログラム。
【請求項11】
クロック信号の供給が行われる複数の回路素子をグループに分けて得られた当該複数のグループに対し、グループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくとも何れかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復する演算手段を有し、
前記最適化段階の反復の結果得られる各グループに属する回路素子に対し一のクロックバッファを用いてクロック信号が供給されることを特徴とする情報処理装置。
【請求項12】
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループのクロックバッファから各回路素子までの総配線長、当該グループのクロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれか一のものとされる
請求項11に記載の情報処理装置。
【請求項13】
更に前記演算手段は、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得ることを特徴とする請求項11に記載の情報処理装置。
【請求項14】
前記演算手段は前記最適化段階にて更に、2つのグループの回路素子が互いに相手のグループのエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする請求項13に記載のクロック信号供給回路の設計方法。
【請求項1】
演算手段がクロック信号の供給される複数の回路素子の回路データを記憶装置から読み込む段階と、
演算手段が前記複数の回路素子をグループ分けする段階と、
演算手段がグループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくともいずれかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復する段階とを有するクロック信号供給回路の設計方法であって、
前記各グループに属する回路素子に対し一のクロックバッファを用いてクロック信号を供給することを特徴とするクロック信号供給回路の設計方法。
【請求項2】
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループのクロックバッファから各回路素子までの総配線長、当該グループのクロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれか一のものとされる
請求項1に記載のクロック信号供給回路の設計方法。
【請求項3】
前記グループ分けする段階は、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得ることを特徴とする請求項1に記載のクロック信号供給回路の設計方法。
【請求項4】
前記最適化段階では更に、2つのグループの回路素子が互いに相手のグループのエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする請求項3に記載のクロック信号供給回路の設計方法。
【請求項5】
前記交換段階は、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階は、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする請求項3または4記載のクロック信号供給回路の設計方法。
【請求項6】
コンピュータに、クロック信号の供給が行われる複数の回路素子をグループに分けて得られた当該グループに対し、グループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくともいずれかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復させるプログラム。
【請求項7】
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループのクロックバッファから各回路素子までの総配線長、当該グループのクロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれか一のものとされる
請求項6に記載のプログラム。
【請求項8】
更にコンピュータに、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得る段階を実行させることを特徴とする請求項6に記載のプログラム。
【請求項9】
前記最適化段階では更に、2つのグループの回路素子が互いに相手側のエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする請求項8に記載のプログラム。
【請求項10】
前記交換段階は、対象となる2つのグループのエリア同士が重なり合いかつ交換の結果前記全グループについての合計が減少する場合当該交換後のグループを維持し、当該交換後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新し、
前記移動段階は、対象となる2つのグループのエリア同士が重なり合いかつ移動後の結果前記全グループについての合計が最も減少する場合当該移動後のグループを維持し、当該移動後の各グループに属する回路素子の位置に基づいて各グループのエリアを更新することを特徴とする請求項8または9に記載のプログラム。
【請求項11】
クロック信号の供給が行われる複数の回路素子をグループに分けて得られた当該複数のグループに対し、グループ間で回路素子の交換を行う交換段階およびグループ間で回路素子の移動を行う移動段階のうちの少なくとも何れかを実行し、当該実行の前後で各グループにつき当該グループの評価指標値を算出し当該算出されたグループごとの評価指標値を全グループについて合計し当該全グループについての合計が減少する場合には当該実行後のグループを維持し減少しない場合には当該実行前のグループを維持する最適化段階を反復する演算手段を有し、
前記最適化段階の反復の結果得られる各グループに属する回路素子に対し一のクロックバッファを用いてクロック信号が供給されることを特徴とする情報処理装置。
【請求項12】
前記評価指標値は、当該グループに属する各回路素子の位置と当該グループの中心位置との間のマンハッタン距離の合計、当該グループに属する各回路素子の位置と当該グループの中心位置との間のユークリッド距離の合計、当該グループのクロックバッファから各回路素子までの総配線長、当該グループのクロックバッファのゲート容量、当該クロックバッファから各回路素子までの配線の容量および各回路素子のクロック信号入力端子の容量の合計並びに当該グループのクロックバッファから各回路素子のクロック信号入力端子までの遅延の合計のうちのいずれか一のものとされる
請求項11に記載の情報処理装置。
【請求項13】
更に前記演算手段は、前記複数の回路素子のうちから一の回路素子を選択し、未だグループが存在しない場合には当該一の回路素子が属するグループを設け、当該一の回路素子の位置に基づき当該一の回路素子を含むエリアを決定し、既にグループが存在する場合であって、前記一の回路素子が当該グループの前記エリア内に位置し、当該グループに属する回路素子の数が許容ファンアウト以内であれば、前記一の回路素子を当該グループに追加し、当該グループに属する回路素子の位置に基づいて前記エリアを更新する段階を、前記複数の回路素子のうち未だ選択されていない回路素子が無くなるまで反復することにより前記複数のグループを得ることを特徴とする請求項11に記載の情報処理装置。
【請求項14】
前記演算手段は前記最適化段階にて更に、2つのグループの回路素子が互いに相手のグループのエリアに含まれかつ当該2つのグループに属する回路素子の個数が前記許容ファンアウト以内の場合に、当該2つのグループ同士を結合して一のグループとする結合段階を実行することを特徴とする請求項13に記載のクロック信号供給回路の設計方法。
【図1】
【図2】
【図3】
【図4A】
【図4B】
【図4C】
【図4D】
【図4E】
【図4F】
【図4G】
【図5A】
【図5B】
【図6A】
【図6B】
【図7A】
【図7B】
【図7C】
【図7D】
【図8A】
【図8B】
【図8C】
【図8D】
【図9】
【図10A】
【図10B】
【図10C】
【図11】
【図12A】
【図12B】
【図12C】
【図12D】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4A】
【図4B】
【図4C】
【図4D】
【図4E】
【図4F】
【図4G】
【図5A】
【図5B】
【図6A】
【図6B】
【図7A】
【図7B】
【図7C】
【図7D】
【図8A】
【図8B】
【図8C】
【図8D】
【図9】
【図10A】
【図10B】
【図10C】
【図11】
【図12A】
【図12B】
【図12C】
【図12D】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2010−86284(P2010−86284A)
【公開日】平成22年4月15日(2010.4.15)
【国際特許分類】
【出願番号】特願2008−254634(P2008−254634)
【出願日】平成20年9月30日(2008.9.30)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成22年4月15日(2010.4.15)
【国際特許分類】
【出願日】平成20年9月30日(2008.9.30)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]