JP5193406B2 - クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体 - Google Patents

クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体 Download PDF

Info

Publication number
JP5193406B2
JP5193406B2 JP2001178295A JP2001178295A JP5193406B2 JP 5193406 B2 JP5193406 B2 JP 5193406B2 JP 2001178295 A JP2001178295 A JP 2001178295A JP 2001178295 A JP2001178295 A JP 2001178295A JP 5193406 B2 JP5193406 B2 JP 5193406B2
Authority
JP
Japan
Prior art keywords
buffer
supplied
wiring
unit
clock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001178295A
Other languages
English (en)
Other versions
JP2002373939A (ja
Inventor
昌弘 佐野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2001178295A priority Critical patent/JP5193406B2/ja
Priority to US09/983,185 priority patent/US6564353B2/en
Publication of JP2002373939A publication Critical patent/JP2002373939A/ja
Application granted granted Critical
Publication of JP5193406B2 publication Critical patent/JP5193406B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、例えばIC(Integrated Circuit)やLSI(Large Scale Integration)等の半導体集積回路のレイアウト設計に用いて好適の技術に関し、特に、設計対象回路中において、クロック信号供給源とクロック信号を供給されるべき複数の素子との間を結ぶクロック分配回路(ネット)を自動的に合成しレイアウトする、クロック分配回路の設計方法,設計装置および設計プログラム、並びに、同プログラムを記録したコンピュータ読取可能な記録媒体に関する。
【0002】
【従来の技術】
一般に、ICやLSI等の半導体集積回路上では、少なくとも一つのクロック信号供給源素子(以下、供給源素子という)から、クロック分配回路を介し、フリップフロップ等の多数の被クロック信号供給素子(以下、被供給素子という)にクロック信号を供給している。このような半導体集積回路は、近年、より高速で大規模な回路を集積するように要望され、回路構造の微細化が進んでいる。これに伴って、半導体集積回路の性能を最大限に生かすべく、クロックスキューやクロック伝播遅延時間を最適化するようにクロック分配回路を設計することが望まれている。
【0003】
ここで、クロック伝播遅延時間とは、クロック信号が一つの供給源素子から各被供給素子まで到達するのに要する時間であり、クロック伝播遅延時間の最適化とは、その遅延時間を最小化(最短化)することである。また、クロックスキューとは、ある被供給素子にクロック信号が到達するタイミング(前記クロック伝播遅延時間)と他の被供給素子に同じクロック信号が到達するタイミング(前記クロック伝播遅延時間)とのずれであり、クロックスキューの最適化とは、クロックスキューを“0”にすること(場合によっては“0”ではなく所望の値にすること)である。
【0004】
上述のような半導体集積回路(クロック分配回路)の、従来の設計手法(クロックスキューやクロック伝播遅延時間の最適化手法)は、例えば、特開平2−62675号公報,特開平8−44776号公報および特開平8−50604号公報に開示されている。
特開平2−62675号公報に開示された「論理回路素子配置方法」では、フリップフロップ等の論理回路素子(被供給素子)間の接続関係に従って、論理回路素子を配置してから、クロックアンプ(ドライバ)の数を決定・配置することにより、論理回路素子間のクロック伝播遅延時間を最適化している。
【0005】
特開平8−44776号公報に開示された「半導体集積回路のクロック配線回路の設計方法」では、クロックスキューの発生を抑制するようにクロックツリーを設計している。その際、まず、論理設計時には、各回路素子(被供給素子)をクロック入力バッファ(供給源素子)に直接接続し、レイアウト設計時に、回路素子の数に応じてクロックバッファ(ドライバ)をツリー状に配置した後、クロックバッファと各論理素子との間の配線を行なっている。
【0006】
特開平8−50604号公報に開示された「クロックスキュー防止レイアウト設計方法」では、クロック配線の配線長のバラツキを極力小さくすることにより、クロックスキューの発生を防止している。その際、複数のクロック信号入力端子(被供給素子)をグループ化し、グループ毎にバッファセル(ドライバ)を挿入・配置してから、クロック信号出力端子,バッファセル,クロック信号入力端子の間の配線を行なっている。
【0007】
【発明が解決しようとする課題】
上述した従来の手法では、基本的に、供給源素子と被供給素子との間におけるバッファ(ドライバ)の数や段数を決定してから、これらの供給源素子,被供給素子,バッファの間のネット配線を行ない、その配線の状態(配線長,配線幅,配線形状,分岐点の位置等)を調節することによりクロックスキューの調節(最適化)を行なっている。しかし、クロックスキューをより確実に最適化するためには、バッファの数や段数をレイアウト設計前に決定してしまうのではなく、レイアウト設計時に、配線状態とともにバッファの挿入/配置状態を調節することが好ましく、このような最適化技術の開発が望まれている。
【0008】
また、一般に、クロック伝播遅延時間を最適化するには、所定位置に配置された被供給素子の疎密を見てクロックネットのバランスを考慮しながらクロックツリーを作成することが望ましい。しかし、従来、一つの供給源素子側から多数の被供給素子へ向けてネット配線を行なう場合が多く、このような手法では、クロックスキューの最適化は可能であっても、同時にクロック伝播遅延時間を最適化することは極めて困難である。
【0009】
本発明は、このような課題に鑑み創案されたもので、レイアウト設計時に、被供給素子側から供給源素子へ向け、配線状態とバッファの挿入・配置状態との両方を調節しながら配線経路を決定してクロック分配回路を設計することにより、半導体集積回路全体におけるクロック伝播遅延時間とクロックスキューとを同時かつ確実に最適化できるようにした、クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体を提供することを目的とする。
【0010】
【課題を解決するための手段】
上記目的を達成するために、本発明のクロック分配回路の設計方法は、少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための方法であって、所定位置に配置される該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第1仮配線ステップと、該第1仮配線ステップで仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第1判断ステップと、該第1判断ステップでクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第1グルーピングステップと、該第1グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第1バッファ挿入ステップとを、該第1判断ステップでクロックスキューが最適化されていると判断されるまで、該第1バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し実行した後、該第1判断ステップでクロックスキューが最適化されていると判断された場合に、該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線ステップを実行することを特徴としている。このとき、該第1バッファ挿入ステップにおいて、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択してもよい。
このとき、該供給源素子と該複数の被供給素子のうちの一部(以下、特定被供給素子という)との間に特定の機能を果たす特定素子が介在している場合、該第1仮配線ステップの実行に先立って、該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択ステップを実行し、該選択ステップで選択された各特定素子候補位置について、当該特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線ステップと、該第2仮配線ステップで仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断ステップと、該第2判断ステップでクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第2グルーピングステップと、該第2グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入ステップとを、該第2判断ステップでクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該特定被供給素子とみなして、繰り返し実行するとともに、該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する第3仮配線ステップを実行した後、該複数の特定素子配置候補位置の全てについて該第2仮配線ステップ,該第2バッファ挿入ステップおよび該第3仮配線ステップで得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置ステップを実行してから、該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置ステップで配置された該特定素子とを、該複数の被供給素子とみなして、該第1仮配線ステップ,該第1判断ステップ,該第1グルーピングステップ,該第1バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該特定素子配置ステップで採用された仮配線結果と該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果と該特定素子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定してもよい。
さらに、該複数の被供給素子が異なる論理階層に属している場合、該第1仮配線ステップの実行に先立って、各論理階層について、該論理階層に属する該被供給素子(以下、所属被供給素子という)に接続される入力端子を仮想的に設定する入力端子設定ステップと、該入力端子設定ステップで設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択ステップとを実行し、該選択ステップで選択された各入力端子配置候補位置について、当該入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線ステップと、該第2仮配線ステップで仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断ステップと、該第2判断ステップでクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第2グルーピングステップと、該第2グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入ステップとを、該第2判断ステップでクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該所属被供給素子とみなして、繰り返し実行するとともに、該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する第3仮配線ステップを実行した後、該複数の入力端子配置候補位置の全てについて該第2仮配線ステップ,該第2バッファ挿入ステップおよび該第3仮配線ステップで得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置ステップを実行してから、該複数の論理階層のそれぞれについて該入力端子配置ステップで配置された複数の入力端子を、該複数の被供給素子とみなして、該第1仮配線ステップ,該第1判断ステップ,該第1グルーピングステップ,該第1バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該入力端子配置ステップで採用された仮配線結果と該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果と該入力端子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定してもよい。
【0011】
また、本発明のクロック分配回路の設計装置は、少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための装置であって、上述した第1仮配線ステップ,第1判断ステップ,第1グルーピングステップおよび第1バッファ挿入ステップをそれぞれ実行する第1仮配線部,第1判断部,第1グルーピング部,第1バッファ挿入部および最終配線ステップをそなえ、該第1仮配線部,該第1判断部,該第1グルーピング部および該第1バッファ挿入部を、該第1判断部によってクロックスキューが最適化されていると判断されるまで、該第1バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作させた後、該最終配線部を動作させることを特徴としている。
このとき、該供給源素子と該複数の被供給素子のうちの一部(以下、特定被供給素子という)との間に特定の機能を果たす特定素子が介在している場合に、該第1仮配線部の動作に先立って、該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択部と、該選択部によって選択された各特定素子候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう特定素子用設計部と、該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する特定素子用仮配線部と、該複数の特定素子配置候補位置の全てについて該特定素子用設計部および該特定素子用仮配線部によって得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置部とをそなえ、該特定素子用設計部が、各特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線部と、該第2仮配線部によって仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断部と、該第2判断部によってクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第2グルーピング部と、該第2グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入部とをそなえて構成され、該特定素子用設計部において、該第2仮配線部,該第2判断部,該第2グルーピング部および該第2バッファ挿入部が、該第2判断部によってクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置部によって配置された該特定素子とを、該複数の被供給素子とみなして、該第1仮配線部,該第1判断部,該第1グルーピング部,該第1バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第1仮配線部および該第1バッファ挿入部での仮配線結果と該特定素子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定してもよい。
また、該複数の被供給素子が異なる論理階層に属している場合、該第1仮配線部の動作に先立って、各論理階層について、該論理階層に属する該被供給素子(以下、所属被供給素子という)に接続される入力端子を仮想的に設定する入力端子設定部と、該入力端子設定部によって設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択部と、該選択部によって選択された各入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう入力端子用設計部と、該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する入力端子用仮配線部と、該複数の入力端子配置候補位置の全てについて該入力端子用設計部および該入力端子用仮配線部によって得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置部とをそなえ、該入力端子用設計部が、各入力端子配置候補位置に配置される該入力端子と所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線部と、該第2仮配線部によって仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断部と、該第2判断部によってクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第2グルーピング部と、該第2グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入部とをそなえて構成され、該入力端子用設計部において、該第2仮配線部,該第2判断部,該第2グルーピング部および該第2バッファ挿入部が、該第2判断部によってクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、該複数の論理階層のそれぞれについて該入力端子配置部で配置された複数の入力端子を、該複数の被供給素子とみなして、該第1仮配線部,該第1判断部,該第1グルーピング部,該第1バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第1仮配線部および該第1バッファ挿入部での仮配線結果と該入力端子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定してもよい。
【0012】
さらに、本発明のクロック分配回路の設計プログラムは、少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるためのものであって、上述した仮配線部,判断部,グルーピング部,バッファ挿入部および最終配線部として、該コンピュータを機能させるとともに、該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部,該判断部,該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部として機能させることを特徴としている。
そして、本発明のコンピュータ読取可能な記録媒体は、上述した設計プログラムを記録したことを特徴としている。
【0013】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
〔1〕第1実施形態の説明
図1は本発明の第1実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。
【0014】
第1実施形態の設計装置は、論理設計によって得られたネットリストに基づいて、少なくとも一つのクロック信号供給源素子(以下、クロック供給源素子あるいは単に供給源素子という場合がある)からのクロック信号を、フリップフロップ等の多数の被クロック信号供給素子(以下、単に被供給素子という)に分配・供給するクロック分配回路を設計するものである。ここで、第1実施形態におけるネットリストには、設計対象のチップ上に配置されるべき供給源素子および被供給素子に関する情報が含まれるが、これらの供給源素子と被供給素子との間に介在するバッファ(ドライバ)に関する情報は含まれていない。
【0015】
そして、第1実施形態の設計装置は、図1に示すように、仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15およびクロック供給源素子変更部16をそなえて構成されている。
ここで、仮配線部(第1仮配線部)11は、チップ上の所定位置に配置された供給源素子と全ての被供給素子との間を最短経路で直接接続する信号ライン(即ち、供給源素子が被供給素子の全てに対してクロック信号を直接供給する最短の信号ラインであってクロック伝播遅延時間を最適化しうる信号ライン)を仮配線するものである。
【0016】
判断部(第1判断部)12は、仮配線部11によって仮配線された信号ラインにより、複数の被供給素子におけるクロックスキューが最適化されているか否かを判断するものである。
グルーピング部(第1グルーピング部)13は、判断部11によってクロックスキューが最適化されていないと判断された場合に、複数の被供給素子を複数のグループに分割するものである。
【0017】
バッファ挿入部(第1バッファ挿入部)14は、供給源素子とグルーピング部13によって得られた各グループに属する被供給素子との間に挿入されるバッファとして、クロック伝播遅延時間やクロックスキューが最適となるものを選択するとともに、そのバッファの配置位置を決定し、バッファからグルーピング部13で選択された被供給素子までの仮配線を行なうものである。
【0018】
バッファ挿入部14は、より具体的に、以下のような機能(1)〜(6)を有している。
機能(1):グルーピング部13によって得られたグループ毎に、一つのバッファを割り当てる機能。
機能(2):機能(1)によって割り当てられたバッファを挿入・配置することの可能な、複数のバッファ挿入候補位置をチップ上で選択する機能。
【0019】
機能(3):機能(2)によって選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置されたバッファと当該グループに属する被供給素子との間を最短経路で接続する信号ラインを仮配線するとともに、当該バッファ挿入候補位置に配置されたバッファと供給源素子との間を最短経路で接続する信号ラインを仮配線する機能。
【0020】
機能(4):機能(3)によって複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、複数のバッファ挿入候補位置の中から、当該グループに属する被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択する機能。
機能(5):機能(4)によって選択された候補位置にバッファを挿入・配置する機能。
機能(6):各グループに挿入されるバッファとして、そのバッファから当該グループに属する被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択する機能。
【0021】
最終配線部15は、判断部12でクロックスキューが最適化されていると判断された場合に、仮配線部11およびバッファ挿入部14によって得られた仮配線結果に従って、供給源素子と複数の被供給素子/バッファとの間を結ぶ信号ラインの配線経路を決定するものである。
【0022】
クロック供給源素子変更部(供給源素子変更部)16は、最終配線部15による配線結果に基づいて、供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更するものである。ただし、ネットリストにおける供給源素子によってクロック伝播遅延時間が最適化される場合には、クロック供給源素子変更部16による処理は行なわない。
【0023】
なお、通常、供給源素子としては、同じ機能(クロック信号供給機能)を有しているが出力駆動能力等の特性の異なるものが複数存在する。素子の特性が異なる場合、当然、その素子からの出力信号(クロック信号)が伝播する時間も異なってくる。一般に、出力駆動能力の大きい素子の方が信号伝播時間は小さくなる傾向がある。そこで、本実施形態では、クロック供給源素子変更部16が、ネットリストにおいて決められた供給源素子を、その供給源素子と同じ機能を有しているが、クロック伝播遅延時間を最適化することのできる特性を有する素子に変更している。
【0024】
そして、第1実施形態の設計装置では、仮配線部11,判断部12,該グルーピング部13およびバッファ挿入部14が、判断部12によってクロックスキューが最適化されていると判断されるまで、バッファ挿入部14によって複数のグループのそれぞれに挿入されたバッファを複数の被供給素子とみなして、繰り返し動作した後、最終配線部15およびクロック供給源素子変更部16が動作するようになっている。
【0025】
上述した仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15およびクロック供給源素子変更部16は、専用ソフトウェア(クロック分配回路の設計プログラム)によって実現される。
この設計プログラムは、例えばフレキシブルディスク,CD−ROM等のコンピュータ読取可能な記録媒体に記録された形態で提供される。第1実施形態においては、設計装置を成すROM(Read Only Memory;図示省略)等に予め設計プログラムを格納しておき、この設計プログラムを、やはり設計装置を成すCPU(図示省略;コンピュータ)によって読み出し実行することで、上述した仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15およびクロック供給源素子変更部16としての機能が実現される。
【0026】
このとき、設計プログラムは、判断部12によってクロックスキューが最適化されていると判断されるまで、バッファ挿入部14によって複数のグループのそれぞれに挿入されたバッファを複数の被供給素子とみなし、CPUを、仮配線部11,判断部12,グルーピング部13およびバッファ挿入部14として繰り返し機能させた後、最終配線部15およびクロック供給源素子変更部16として機能させる。
なお、設計プログラムは、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供されてもよい。
【0027】
次に、図2に示すフローチャート(ステップS11〜S17)に従って、上述した第1実施形態の設計装置の動作、つまり本発明の第1実施形態としてのクロック分配回路の設計方法の手順について説明する。
論理設計結果として得られたネットリストが与えられると、第1実施形態の設計装置では、クロック分配回路にかかる情報、つまり供給源素子および被供給素子にかかる情報が抽出され、仮配線部11によって、チップ上の所定位置に配置される供給源素子と複数の被供給素子との間を、最短経路で直接接続する信号ラインが仮配線される(ステップS11;第1仮配線ステップ)。
【0028】
このように仮配線された信号ラインにより複数の被供給素子におけるクロックスキューが最適化されているか否かが、判断部12によって判断され(ステップS12;第1判断ステップ)、クロックスキューが最適化されていないと判断された場合(ステップS12のNOルート)、グルーピング部13によって、複数の被供給素子が複数のグループに分割される(ステップS13;第1グルーピングステップ)。ここで、各グループに含まれる被供給素子の数は、例えば、挿入されるバッファの特性(出力駆動能力等)に応じて決められる。また、基本的には、配置位置の近い所定数の被供給素子が一つのグループにまとめられる。
【0029】
この後、ステップS13で分割された各グループにおいて、バッファの挿入・配置を行なう(ステップS14;第1バッファ挿入ステップ)。このステップS14では、バッファ挿入部14によって、以下に説明するステップS141〜S149の処理が行なわれる。
まず、ステップS13で分割された複数のグループの中から一つを選択し(ステップS141)、そのグループに対して、挿入されるべき一つのバッファが割り当てられる(ステップS142)。そして、このバッファを挿入・配置可能な領域が認識され、その領域内で複数のバッファ挿入候補位置が選択される(ステップS143)。
【0030】
さらに、ステップS143で選択された複数のバッファ挿入候補位置の中から一つを選択し(ステップS144)、そのバッファ挿入候補位置に配置されたバッファと今回選択したグループに属する被供給素子との間を最短経路で接続する信号ラインが仮配線されるとともに、そのバッファ挿入候補位置に配置されたバッファと供給源素子との間を最短経路で接続する信号ラインが仮配線され、これらの信号ラインによる遅延時間が計算される。ここで得られた遅延時間は、バッファ挿入候補位置や配線経路に関する情報とともに、解としてメモリ等に保持される(ステップS145)。
【0031】
上述したステップS144およびS145の処理は、ステップS143で選択された全てのバッファ挿入候補位置に対して実行される。つまり、ステップS146において、全てのバッファ挿入候補位置についてステップS144およびS145の処理を終了したと判断されるまで、ステップS144およびS145の処理は繰り返し実行される。
【0032】
全てのバッファ挿入候補位置についてステップS144およびS145の処理を終了したと判断されると(ステップS146のYESルート)、複数のバッファ挿入候補位置について得られた遅延時間に基づいて、複数のバッファ挿入候補位置の中から、今回のグループに属する被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択される(ステップS147)。
【0033】
そして、ステップS147で選択された候補位置にバッファが挿入・配置される(ステップS148)。このとき、挿入されるバッファとしては、ステップS145での仮配線結果に基づいて、このバッファから、バッファ挿入対象のグループに属する被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファが選択される。
【0034】
上述したステップS141〜S148の処理は、ステップS13で分割された全てのグループに対して実行される。つまり、ステップS149において、全てのグループについてステップS141〜S148の処理を終了したと判断されるまで、ステップS141〜S148の処理は繰り返し実行される。
全てのグループについてステップS141〜S148の処理を終了したと判断されると(ステップS149のYESルート)、バッファ挿入部14によって各グループに挿入されたバッファを複数の被供給素子とみなして(ステップS15)、ステップS11に戻る。上述したステップS11〜S15の処理は、ステップS12でクロックスキューが最適化されていると判断されるまで繰り返し実行される。
【0035】
ステップS12でクロックスキューが最適化されていると判断された場合(YESルート)、最終配線部15において、ステップS11およびS145での仮配線結果に従って、供給源素子と複数の被供給素子/バッファとの間を結ぶ信号ラインの配線経路が決定される(ステップS16;最終配線ステップ)。
さらに、クロック供給源素子変更部16において、ステップS16での配線結果に基づいて、ネットリストで指定された供給源素子が、クロック伝播遅延時間を最適化しうる特性を有する素子に変更される(ステップS17;供給源素子変更ステップ)。ただし、前述した通り、ネットリストで指定された供給源素子によってクロック伝播遅延時間が最適化される場合には、クロック供給源素子変更部16による処理は実行されない。
【0036】
次に、図3〜図9を参照しながら、第1実施形態の設計動作をより具体的に説明する。なお、図3〜図9はその具体的な設計動作を説明するための図で、これらの図3〜図9において、符号CLKを付された三角形マークはクロック信号供給源素子(供給源素子)を示し、符号A〜Hをそれぞれ付された8個の矩形マークは被クロック信号供給素子(被供給素子)を示す。また、各被供給素子A〜Hにおける網がけ部はクロック入力端子の位置を示している。
【0037】
供給源素子CLKおよび被供給素子A〜Hの配置位置は、ネットリストにより与えられており、第1実施形態の設計装置には、図3に示すように供給源素子および被供給素子A〜Hをチップ上の所定位置に配置した回路が、入力として与えられる。
【0038】
図3に示すような入力回路に対し、仮配線部11が、供給源素子CLKと被供給素子A〜Hとの間を、最短経路の信号ライン(図4中の二点鎖線参照)によって仮配線して接続する(ステップS11)。その仮配線結果を図4に示す。
判断部12では、図4に示すような仮配線結果を参照し、各被供給素子A〜Hにおけるクロックスキューが最適化されているか否かが判断される(ステップS12)。
【0039】
判断部12において、クロックスキューが最適化されていないと判断された場合、グルーピング部13によって、バッファを挿入すべき被供給素子のグループが選択・分割される(ステップS13)。図5は、被クロック信号供給素子のグループの一つを選択した例を示す図で、この図5に示す例では、2つの被供給素子A,Bが一つのグループに属している。
【0040】
そして、バッファ挿入部14において、被供給素子A,Bと供給源素子CLKとの間でバッファを挿入・配置することの可能なバッファ挿入候補位置として、例えば図6〜図8に示すような3ヶ所を選択する(ステップS143)。
これらのバッファ挿入候補位置のそれぞれに、バッファb1を配置したと仮定して、各バッファb1と被供給素子A,Bとの間を最短経路で接続する信号ラインと、各バッファb1と供給源素子CLKとの間を最短経路で接続する信号ラインとを仮配線し、これらの信号ライン(図6〜図8の二点鎖線参照)による遅延時間を計算し、計算された遅延時間を、バッファ挿入候補位置や配線経路に関する情報とともに、解としてメモリ等に保持しておく(ステップS144〜S146)。
【0041】
全てのバッファ挿入候補位置について以上の処理を行なった後、保存されている上記解に基づいて、複数のバッファ挿入候補位置の中から、クロック伝播遅延時間およびクロックスキューを最適化しうる候補位置を選択し、挿入すべきバッファb1や、その挿入・配置位置や、配線経路を決定し、バッファb1を、決定された位置に挿入・配置する(ステップS147,S148)。ここでは、図7に示すバッファ挿入候補位置が、バッファb1の挿入・配置位置として選択・決定されたものとする。
【0042】
図9は、図3に示すような回路から、上述の処理によって最終的に生成されるクロックツリーの具体例を示している。この図9に示す配置・配線結果が得られるまでの処理は、以下のように行なわれる。
被供給素子Cの属するグループと、被供給素子D,Fの属するグループと、被供給素子E,G,Hの属するグループとのそれぞれについて、上述と同様の処理(ステップS142〜S148)が実行され、バッファb2,b3,b4の挿入・配置位置が、バッファ特性や配線経路とともに決定される。
【0043】
続いて、バッファb1〜b4を被供給素子とみなして(ステップS15)、上述と同様の処理(ステップS11〜S14)が実行される。つまり、バッファb1,b3の属するグループと、バッファb2,b4の属するグループとのそれぞれについて、上述と同様の処理(ステップS142〜S148)が実行され、バッファb5,b6の挿入・配置位置が決定される。
【0044】
さらに、バッファb5,b6を被供給素子とみなして(ステップS15)、上述と同様の処理(ステップS11〜S14)が実行される。つまり、バッファb5の属するグループと、バッファb6の属するグループとのそれぞれについて、上述と同様の処理(ステップS142〜S148)が実行され、バッファb7の挿入・配置位置が決定される。
【0045】
そして、バッファb7を被供給素子とみなし(ステップS15)、このバッファb7と供給源素子CLKとの間に仮配線された、最短経路の信号ラインについてクロックスキューが最適化されているものと判断され、供給源素子CLK,バッファb1〜b7および被供給素子A〜Hの間を結ぶ信号ラインの配線経路のほか、供給源素子CLKの特性などが決定され、最終的に図9に示すようなクロックツリー(クロック分配回路)が生成されることになる。
【0046】
このように、本発明の第1実施形態によれば、レイアウト設計に際して、供給源素子および複数の被供給素子を配置した後に、被供給素子側から供給源素子へ向け、配線状態とバッファの挿入・配置状態との両方を調節しながら配線経路が決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが同時かつ確実に最適化され、ひいては高速に動作することのできる半導体回路を設計し実現することができる。
【0047】
また、本実施形態では、バッファ挿入部14において、各グループに挿入されるバッファとして、そのバッファから各グループに属する被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択するとともに、クロック供給源素子変更部16において、最終配線結果に基づき、供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更することにより、より確実に、回路全体におけるクロック伝播遅延時間とクロックスキューとを最適化することができる。
【0048】
〔1−1〕第1実施形態における第1変形例の説明
図10は第1実施形態の第1変形例の具体的な設計動作を説明するための図である。
上述した第1実施形態では、クロックスキューの最適化条件が、各被供給素子においてクロックスキューを“0”にすることであったが、本発明はこれに限定されるものではなく、本第1変形例のごとく、複数の被供給素子に対して、それぞれ異なるクロックスキューの制約条件を与えてもよい。この場合、判断部12やバッファ挿入部14は、クロック分配回路の設計開始時に入力として与えられるクロックスキューの制約条件に基づいて、クロックスキューが最適化されているか否かを、その制約条件に基づいて判断する(図2のステップS12,S147参照)。これにより、クロックスキューが、与えられた制約条件を満足するように、挿入すべきバッファや、その挿入・配置位置や、配線経路が決定され、クロックツリー(クロック分配回路)が生成される。
【0049】
例えば、図9に示すクロックツリーは、クロックスキューを“0”にするという最適化条件のもとで生成されたものであるが、これに対し、被供給素子AとBとの間にクロックスキューを与えて生成されたクロックツリー(クロック分配回路)の例を図10に示す。この図10に示す例においては、被供給素子B〜Hについてのクロックスキューの最適化条件は、クロックスキューが“0”であることとする一方、被供給素子Aには被供給素子Bよりも所定時間だけ早くクロックが伝播することを制約条件として、被供給素子AとBとの間にクロックスキューが与えられるように、クロックツリーが生成されている。
【0050】
このように、複数の被供給素子に対してそれぞれ異なるクロックスキューの制約を与え、その制約に従って最適化の判断を行なうことにより、その制約を満足するように、バッファ(図10のb1参照)の挿入・配置および信号ラインの配線経路が決定され、その制約を満たすクロックスキューを与えられたクロックツリー(クロック分配回路)が容易に生成・設計されることになる。
【0051】
〔1−2〕第1実施形態における第2変形例の説明
図11〜図13は第1実施形態の第2変形例の具体的な設計動作を説明するための図である。
上述した第1実施形態では、クロック信号供給源素子CLKが一つである場合について説明したが、本第2変形例においては、図11に示すように2つのクロック信号供給源素子CLK1,CLK2がそなえられ、例えば、被供給素子A〜C,D,Fに供給源素子CLK1からのクロックが供給されるとともに、被供給素子E,G,Hに供給源素子CLK2からのクロックが供給される場合について説明する。なお、ここで、被供給素子A〜Hは、図3〜図9に示したものと同様の位置に配置されるものとし、供給源素子CLK1は、図3〜図9に示した供給源素子CLKと同様の位置に配置されるものとする。
【0052】
この第2変形例では、図11に示すような情報を有するネットリストが設計装置に与えられると、まず、そのネットリストに基づいて、供給源素子CLK1,CLK2毎に、第1実施形態と同様の処理(図2のステップS11〜S17参照)が行なわれる。
【0053】
即ち、チップ上に配置された供給源素子CLK1と被供給素子A〜C,D,Fとの間のクロック分配回路を上述と同様にして設計する。これにより、図12に示すように、供給源素子CLK1と被供給素子A〜C,D,Fとの間において、バッファb1〜b3,b5〜b7の配置位置や配線経路等が決定される。
また、チップ上に配置された供給源素子CLK2と被供給素子E,G,Hとの間のクロック分配回路を上述と同様にして設計する。これにより、図12に示すように、供給源素子CLKと被供給素子E,G,Hとの間において、バッファb4の配置位置や配線経路等が決定される。
【0054】
図12に示すごとく、2つの供給源素子CLK1,CLK2のそれぞれについて、クロックツリー(クロック分配回路)を生成した後、これら2つのクロックツリーの間でクロック伝播遅延時間に差がある場合には、クロックツリー間のクロック伝播遅延時間を一致させるべく、クロック伝播遅延時間の短い方のクロックツリーに、そのクロック伝播遅延時間の差分だけバッファを挿入し、その挿入バッファの配置位置や配線経路が決定される。このような決定処理は、例えば最終配線部15において実行される。
【0055】
例えば図12において供給源素子CLK2のクロックツリーのクロック伝播遅延時間が供給源素子CLK1のクロックツリーのクロック伝播遅延時間よりも短い場合、図13に示すように、例えば、供給源素子CLK2とバッファb4との間に、そのクロック伝播遅延時間の差分に応じたバッファb8,b9を挿入し、その挿入バッファb8,b9の配置位置や配線経路を決定する。
【0056】
このように、設計対象回路にクロック信号供給源素子が2以上存在する場合には、各供給源素子について、その供給源素子と同供給源素子からのクロック信号を供給される被供給素子との間のクロック分配回路(クロックツリー)を、第1実施形態と同様にして設計してから、各クロックツリーにおけるクロック伝播遅延時間が一致するように、バッファの挿入・配置および信号ラインの配線経路の決定がなされる。これにより、複数のクロック信号供給源素子が存在する場合にも、第1実施形態と同様、回路全体におけるクロック伝播遅延時間とクロックスキューとを最適化することができる。
【0057】
なお、この第2変形例では、クロック信号供給源素子が2つ存在する回路が入力として与えられる場合について説明したが、本発明は、これに限定されるものではなく、回路中に3以上のクロック信号供給源素子が存在する場合にも、上述と同様にして、クロック分配回路が設計される。
【0058】
〔2〕第2実施形態の説明
図14は本発明の第2実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。なお、図14中、既述の符号と同一の符号は、同一の部分もしくはほぼ同一の部分を示しているので、その詳細な説明は省略する。
第2実施形態において、論理設計によって得られた設計対象回路のネットリストには、第1実施形態と同様に、設計対象のチップ上に配置されるべき供給源素子および複数の被供給素子に関する情報が含まれるほか、供給源素子と複数の被供給素子のうちの一部(以下、特定被供給素子という)との間に配置され、特定の機能を果たす特定素子(例えばセレクタ,インバータ等)に関する情報が含まれているものとする。
【0059】
この特定素子は、供給源素子や被供給素子と同様に、予め回路(論理設計段階の回路)に存在するものではあるが、その配置位置は、供給源素子や被供給素子のように決まっておらず、第2実施形態では、後述するごとく、レイアウト設計時に、クロックスキューやクロック伝播遅延時間が最適化されるように決定される。
【0060】
つまり、第2実施形態の設計装置は、上述のようなネットリストに基づいて、供給源素子からのクロック信号を、特定素子を介して複数の被供給素子に分配・供給するクロック分配回路を設計するものである。なお、第2実施形態におけるネットリストには、第1実施形態のネットリストと同様、バッファに関する情報は含まれていない。
【0061】
そして、第2実施形態の設計装置は、図14に示すように、第1実施形態と同様の仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15Aおよびクロック供給源素子変更部16のほかに、仮配線部11よりも前段に、選択部17,特定素子用設計部18,特定素子用仮配線部19および特定素子配置部20をそなえて構成されている。
【0062】
ここで、選択部17は、特定素子を配置することの可能な、複数の特定素子配置候補位置をチップ上で選択するものである。
特定素子用設計部18は、選択部17によって選択された各特定素子候補位置に配置される特定素子と所定位置に配置される特定被供給素子との間におけるバッファの挿入・配置および信号ラインの仮配線を行なうものであり、仮配線部11A,判断部12A,グルーピング部13Aおよびバッファ挿入部14Aをそなえて構成されている。これらの仮配線部11A,判断部12A,グルーピング部13Aおよびバッファ挿入部14Aは、それぞれ、第1実施形態で説明した仮配線部11,判断部12,グルーピング部13およびバッファ挿入部14とほぼ同様の機能を果たすものである。
【0063】
つまり、仮配線部(第2仮配線部)11Aは、各特定素子配置候補位置に配置される特定素子とチップ上の所定位置に配置された特定被供給素子との間を最短経路で直接接続する信号ライン(即ち、特定素子から特定被供給素子の全てに対してクロック信号を直接供給する最短の信号ラインであってクロック伝播遅延時間を最適化しうる信号ライン)を仮配線するものである。
【0064】
判断部(第2判断部)12Aは、仮配線部11Aによって仮配線された信号ラインにより、特定被供給素子におけるクロックスキューが最適化されているか否かを判断するものである。
グルーピング部(第2グルーピング部)13Aは、判断部12Aによってクロックスキューが最適化されていないと判断された場合に、特定被供給素子を複数のグループに分割するものである。
【0065】
バッファ挿入部(第2バッファ挿入部)14Aは、特定素子とグルーピング部13Aによって得られた各グループに属する特定被供給素子との間に挿入されるバッファとして、クロック伝播遅延時間やクロックスキューが最適となるものを選択するとともに、そのバッファの配置位置を決定し、バッファからグルーピング部13Aで選択された特定被供給素子までの仮配線を行なうものである。
【0066】
バッファ挿入部14Aは、より具体的に、以下のような機能(11)〜(16)を有している。これらの機能(11)〜(16)は、それぞれ、第1実施形態において上述したバッファ挿入部14の機能(1)〜(6)に対応するものである。
機能(11):グルーピング部13Aによって得られたグループ毎に、一つのバッファを割り当てる機能。
【0067】
機能(12):機能(11)によって割り当てられたバッファを挿入・配置することの可能な、複数のバッファ挿入候補位置をチップ上で選択する機能。
機能(13):機能(12)によって選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置されたバッファと当該グループに属する特定被供給素子との間を最短経路で接続する信号ラインを仮配線するとともに、当該バッファ挿入候補位置に配置されたバッファと特定素子との間を最短経路で接続する信号ラインを仮配線する機能。
【0068】
機能(14):機能(13)によって複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、複数のバッファ挿入候補位置の中から、当該グループに属する特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択する機能。
機能(15):機能(14)によって選択された候補位置にバッファを挿入・配置する機能。
【0069】
機能(16):各グループに挿入されるバッファとして、そのバッファから当該グループに属する特定被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択する機能。
そして、特定素子用設計部18では、選択部17によって選択された特定素子候補位置毎に、仮配線部11A,判断部12A,グルーピング部13Aおよびバッファ挿入部14Aが、判断部12Aによってクロックスキューが最適化されていると判断されるまで、バッファ挿入部14Aによって複数のグループのそれぞれに挿入されたバッファを特定被供給素子とみなして、繰り返し動作するようになっている。
【0070】
特定素子用仮配線部19は、供給源素子と選択部17によって選択された各特定素子配置候補位置に配置された特定素子との間を最短経路で接続する信号ラインを仮配線するものである。
特定素子配置部20は、複数の特定素子配置候補位置の全てについて特定素子用設計部18および特定素子用仮配線部19によって得られた仮配線結果に基づいて、複数の特定素子配置候補位置の中から、特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に特定素子を配置するとともに、選択された候補位置について得られた仮配線結果およびバッファの挿入位置を採用するものである。
【0071】
そして、第2実施形態の設計装置では、複数の被供給素子のうち上記特定被供給素子を除いた被供給素子と、特定素子配置部20によって配置された特定素子とを、複数の被供給素子とみなして、第1実施形態の設計装置と同様に、仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15Aおよびクロック供給源素子変更部16を動作させる。
【0072】
ただし、第2実施形態の最終配線部15Aは、特定素子配置部20によって採用された仮配線結果と、仮配線部11およびバッファ挿入部14での仮配線結果と、特定素子配置部20によって決定された特定素子の配置位置とに従って、供給源素子,複数の被供給素子,バッファおよび特定素子の間を結ぶ信号ラインの配線経路を決定している。
【0073】
上述した仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15A,クロック供給源素子変更部16,選択部17,特定素子用設計部18,特定素子用仮配線部19および特定素子配置部20は、第1実施形態と同様、専用ソフトウェア(クロック分配回路の設計プログラム)によって実現される。
【0074】
この設計プログラムは、第1実施形態と同様、例えばフレキシブルディスク,CD−ROM等のコンピュータ読取可能な記録媒体に記録された形態で提供される。第2実施形態においても、設計装置を成すROM等に予め設計プログラムを格納しておき、この設計プログラムを、やはり設計装置を成すCPU(図示省略;コンピュータ)によって読み出し実行することで、上述した仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15A,クロック供給源素子変更部16,選択部17,特定素子用設計部18,特定素子用仮配線部19および特定素子配置部20としての機能が実現される。
【0075】
なお、第2実施形態において、仮配線部11が、特定素子用仮配線部19および仮配線部11Aとしての機能を兼ねるとともに、判断部12,グルーピング部13およびバッファ挿入部14が、それぞれ判断部12A,グルーピング部13Aおよびバッファ挿入部14Aとしての機能を兼ねるように構成してもよい。
【0076】
次に、図15に示すフローチャート(ステップS21〜S33,S11〜S15,S161およびS17)に従って、上述した第2実施形態の設計装置の動作、つまり本発明の第2実施形態としてのクロック分配回路の設計方法の手順について説明する。
【0077】
論理設計結果として得られた、少なくとも一つの特定素子を含むネットリストが与えられると、第2実施形態の設計装置では、選択部17によって、特定素子が一つ選択されるとともに(ステップS21)、その特定素子を配置可能な領域が認識され、その領域内で複数の特定素子配置候補位置が選択される(ステップS22;選択ステップ)。なお、ステップS21において複数の特定素子の中から一つの特定素子を選択する場合、特定被供給素子に近いものから順番に選択する。
【0078】
そして、ステップS22で選択された複数の特定素子配置候補位置の中から一つを選択し(ステップS23)、仮配線部11Aによって、その特定素子配置候補位置に配置される特定素子と、この特定素子に対応する特定被供給素子との間を、最短経路で直接接続する信号ラインが仮配線される(ステップS24;第2仮配線ステップ)。
【0079】
このように仮配線された信号ラインにより複数の特定被供給素子におけるクロックスキューが最適化されているか否かが、判断部12Aによって判断され(ステップS25;第2判断ステップ)、クロックスキューが最適化されていないと判断された場合(ステップS25のNOルート)、グルーピング部13Aによって、複数の特定被供給素子が複数のグループに分割される(ステップS26;第2グルーピングステップ)。ここで、各グループに含まれる特定被供給素子の数は、例えば、挿入されるバッファの特性(出力駆動能力等)に応じて決められる。また、基本的には、配置位置の近い所定数の特定被供給素子が一つのグループにまとめられる。
【0080】
この後、ステップS26で分割された各グループにおいて、バッファの挿入・配置を行なう(ステップS27;第2バッファ挿入ステップ)。このステップS27では、バッファ挿入部14Aによって、以下に説明するステップS271〜S279の処理が行なわれる。
まず、ステップS26で分割された複数のグループの中から一つのグループを選択し(ステップS271)、そのグループに対して、挿入されるべき一つのバッファが割り当てられる(ステップS272)。そして、このバッファを挿入・配置可能な領域が認識され、その領域内で複数のバッファ挿入候補位置が選択される(ステップS273)。
【0081】
さらに、ステップS273で選択された複数のバッファ挿入候補位置の中から一つのバッファ挿入候補位置を選択し(ステップS274)、そのバッファ挿入候補位置に配置されたバッファと今回選択したグループに属する特定被供給素子との間を最短経路で接続する信号ラインが仮配線されるとともに、そのバッファ挿入候補位置に配置されたバッファと特定素子との間を最短経路で接続する信号ラインが仮配線され、これらの信号ラインによる遅延時間が計算される。ここで得られた遅延時間は、バッファ挿入候補位置や配線経路に関する情報とともに、解としてメモリ等に保持される(ステップS275)。
【0082】
上述したステップS274およびS275の処理は、ステップS273で選択された全てのバッファ挿入候補位置に対して実行される。つまり、ステップS276において、全てのバッファ挿入候補位置についてステップS274およびS275の処理を終了したと判断されるまで、ステップS274およびS275の処理は繰り返し実行される。
【0083】
全てのバッファ挿入候補位置についてステップS274およびS275の処理を終了したと判断されると(ステップS276のYESルート)、複数のバッファ挿入候補位置について得られた遅延時間に基づいて、複数のバッファ挿入候補位置の中から、今回のグループに属する特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択される(ステップS277)。
【0084】
そして、ステップS277で選択された候補位置にバッファが挿入・配置される(ステップS278)。このとき、挿入されるバッファとしては、ステップS275での仮配線結果に基づいて、このバッファから、バッファ挿入対象のグループに属する特定被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファが選択される。
【0085】
上述したステップS271〜S278の処理は、ステップS26で分割された全てのグループに対して実行される。つまり、ステップS279において、全てのグループについてステップS271〜S278の処理を終了したと判断されるまで、ステップS271〜S278の処理は繰り返し実行される。
全てのグループについてステップS271〜S278の処理を終了したと判断されると(ステップS279のYESルート)、バッファ挿入部14Aによって各グループに挿入されたバッファを複数の特定被供給素子とみなして(ステップS28)、ステップS24に戻る。
【0086】
そして、上述したステップS24〜S28の処理は、ステップS25でクロックスキューが最適化されていると判断されるまで繰り返し実行される。ステップS25でクロックスキューが最適化されていると判断された場合(YESルート)、特定素子用仮配線部19によって、供給源素子と各特定素子配置候補位置に配置された特定素子との間を最短経路で接続する信号ラインを仮配線する(ステップS29;第3仮配線ステップ)。
【0087】
さらに、上述したステップS24〜S29の処理は、ステップS22で選択された全ての特定素子配置候補位置に対して実行される。つまり、ステップS30において、全ての特定素子配置候補位置についてステップS24〜S29の処理を終了したと判断されるまで、ステップS24〜S29の処理は繰り返し実行される。
【0088】
全ての特定素子配置候補位置についてステップS24〜S29の処理を終了したと判断されると(ステップS30のYESルート)、今回、ステップS21で選択された特定素子の配置位置を決定して、その配置位置に特定素子を配置する(ステップS31;特定素子配置ステップ)。このステップS31では、特定素子配置部20によって、以下に説明するステップS311およびS312の処理が行なわれる。
【0089】
つまり、全ての特定素子配置候補位置についてステップS24,S275およびS29で得られた仮配線結果に基づき、複数の特定素子配置候補位置の中から、特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択され(ステップS311)、選択された候補位置に特定素子が配置されるとともに、選択された候補位置についてステップS27で得られた仮配線結果およびバッファの挿入位置が採用される(ステップS312)。
【0090】
上述したステップS21〜S31の処理は、ネットリストに含まれる全ての特定素子に対して実行される。つまり、ステップS32において、全ての特定素子についてステップS21〜S31の処理を終了したと判断されるまで、ステップS21〜S31の処理は繰り返し実行される。
全ての特定素子についてステップS21〜S31の処理を終了したと判断されると(ステップS32のYESルート)、複数の被供給素子のうち特定被供給素子を除いた残りの被供給素子と、ステップS31で配置された特定素子とを、複数の被供給素子とみなして(ステップS33)、第1実施形態とほぼ同様の処理(ステップS11〜S15,S161およびS17)が実行される。
【0091】
その際、第1実施形態のステップS16に代えて第2実施形態で実行されるステップS161(最終配線ステップ)では、最終配線部15Aによって、ステップS31で採用された仮配線結果と、ステップS11およびS14での仮配線結果と、特定素子の配置位置とに従って、供給源素子,複数の被供給素子,バッファおよび特定素子の間を結ぶ信号ラインの配線経路が決定される。
【0092】
次に、図16および図17を参照しながら、第2実施形態の設計動作をより具体的に説明する。なお、図16および図17はその具体的な設計動作を説明するための図である。ここでは、図16に示すように、一つのクロック信号供給源素子CLKと、セレクタ,インバータ等の特定素子Sと、8個の被クロック信号供給素子A〜Hとが、ネットリストによって与えられ、これらの素子間のクロック分配回路を設計する場合について説明する。ただし、特定素子Sは、供給源素子CLKと3個の特定被供給素子A,D,Fとの間に介在するものとする。また、供給源素子CLKおよび被供給素子A〜Hは、図3〜図9に示したものと同様の位置に配置されるものとする。
【0093】
図16に示すような情報を有するネットリストが設計装置に与えられると、まず、上述したステップS21〜S32の処理によって、図17に示すように、3個の特定被供給素子A,D,Fに対する特定素子Sの配置位置が決定されるとともに、これらの3個の特定被供給素子A,D,Fと特定素子Sとの間におけるバッファb11,b12の挿入・配置および仮配線が行なわれる。
【0094】
この後、特定素子Sと残りの被供給素子B,C,E,G,Hとが被供給素子とみなされて、第1実施形態とほぼ同様の処理、つまり上述したステップS11〜S15,S161およびS17の処理が実行され、供給源素子CLKと特定素子Sおよび被供給素子B,C,E,G,Hとの間において、バッファb13〜b16が挿入・配置されるとともに配線経路が決定される。さらに、供給源素子CLKの特性などが決定された後、最終的に図17に示すようなクロックツリー(クロック分配回路)が生成されることになる。
【0095】
このように、本発明の第2実施形態によれば、供給源素子と被供給素子との間に特定素子を予め挿入したネットリストを与えられた場合には、その特定素子を移動可能なクロック信号供給源素子とみなし、複数の特定素子配置候補位置のそれぞれに配置された特定素子に対し、第1実施形態と同様の手法を適用してバッファ挿入・配置や配線経路を決定してから、その決定結果に基づいて、最適な特定素子の配置位置を決定している。この後、特定素子を残りの被供給素子とともに被供給素子とみなして第1実施形態の手法が適用される。
【0096】
これにより、回路中に特定素子を予め挿入されている場合であっても、特定被供給素子に対する特定素子の配置位置が、特定素子と特定被供給素子との間の配線経路とともに、配線状態およびバッファの挿入・配置状態との両方を調節しながら決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが、同時に最適化されるだけでなく、確実に最適化される。
【0097】
〔3〕第3実施形態の説明
図18は本発明の第3実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。なお、図18中、既述の符号と同一の符号は、同一の部分もしくはほぼ同一の部分を示しているので、その詳細な説明は省略する。
第3実施形態では、論理的に階層化設計された回路が入力として与えられる場合(つまり複数の被供給素子が異なる論理階層に属している場合)について説明する。このような場合において、第3実施形態の設計装置は、後述するごとく、論理階層の境界を変更しないようにクロック分配回路(クロックツリー)を設計するものである。なお、第3実施形態におけるネットリストには、供給源素子,被供給素子および論理階層に関する情報が含まれるが、第1実施形態のネットリストと同様、バッファに関する情報は含まれていない。
【0098】
そして、第3実施形態の設計装置は、図18に示すように、第1実施形態と同様の仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15Bおよびクロック供給源素子変更部16のほかに、仮配線部11よりも前段に、入力端子設定部21,選択部22,入力端子用設計部23,入力端子用仮配線部24および入力端子配置部25をそなえて構成されている。
【0099】
ここで、入力端子設定部21は、各論理階層について、その論理階層に属する被供給素子(以下、所属被供給素子という)に接続される入力端子が論理階層の境界上に存在すると仮定して、その入力端子を仮想的に設定するものである。
選択部22は、入力端子設定部21によって設定された各入力端子を配置することの可能な、複数の入力端子配置候補位置をチップ上で選択するものである。
【0100】
入力端子用設計部23は、選択部22によって選択された各入力端子候補位置に配置される入力端子と、この入力端子に接続され所定位置に配置される所属被供給素子との間におけるバッファの挿入・配置および信号ラインの仮配線を行なうものであり、仮配線部11B,判断部12B,グルーピング部13B,バッファ挿入部14Bをそなえて構成されている。これらの仮配線部11B,判断部12B,グルーピング部13B,バッファ挿入部14Bは、それぞれ、第1実施形態で説明した仮配線部11,判断部12,グルーピング部13およびバッファ挿入部14とほぼ同様の機能を果たすものである。
【0101】
つまり、仮配線部(第2仮配線部)11Bは、各入力端子配置候補位置に配置される入力端子とチップ上の所定位置に配置される所属被供給素子との間を最短経路で直接接続する信号ライン(即ち、入力端子から所属被供給素子の全てに対してクロック信号を直接供給する最短の信号ラインであってクロック伝播遅延時間を最適化しうる信号ライン)を仮配線するものである。
【0102】
判断部(第2判断部)12Bは、第2仮配線部によって仮配線された該信号ラインにより、所属被供給素子におけるクロックスキューが最適化されているか否かを判断するものである。
グルーピング部(第2グルーピング部)13Bは、判断部12Bによってクロックスキューが最適化されていないと判断された場合に、所属被供給素子を複数のグループに分割するものである。
【0103】
バッファ挿入部(第2バッファ挿入部)14Bは、入力端子とグルーピング部13Bによって得られた各グループに属する所属被供給素子との間に挿入されるバッファとして、クロック伝播遅延時間やクロックスキューが最適となるものを選択するとともに、そのバッファの配置位置を決定し、バッファからグルーピング部13Bで選択された所属被供給素子までの仮配線を行なうものである。
【0104】
バッファ挿入部14Bは、より具体的に、以下のような機能(21)〜(26)を有している。これらの機能(21)〜(26)は、それぞれ、第1実施形態において上述したバッファ挿入部14の機能(1)〜(6)に対応するものである。
機能(21):グルーピング部13Bによって得られたグループ毎に、一つのバッファを割り当てる機能。
【0105】
機能(22):機能(21)によって割り当てられたバッファを挿入・配置することの可能な、複数のバッファ挿入候補位置をチップ上で選択する機能。
機能(23):機能(22)によって選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置されたバッファと当該グループに属する所属被供給素子との間を最短経路で接続する信号ラインを仮配線するとともに、当該バッファ挿入候補位置に配置されたバッファと入力端子との間を最短経路で接続する信号ラインを仮配線する機能。
【0106】
機能(24):機能(23)によって複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、複数のバッファ挿入候補位置の中から、当該グループに属する所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択する機能。
機能(25):機能(24)によって選択された候補位置にバッファを挿入・配置する機能。
【0107】
機能(26):各グループに挿入されるバッファとして、そのバッファから当該グループに属する所属被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択する機能。
そして、入力端子用設計部24では、選択部22によって選択された特定素子候補位置毎に、仮配線部11B,判断部12B,グルーピング部13Bおよびバッファ挿入部14Bが、判断部12Bによってクロックスキューが最適化されていると判断されるまで、バッファ挿入部14Bによって複数のグループのそれぞれに挿入されたバッファを所属被供給素子とみなして、繰り返し動作するようになっている。
【0108】
入力端子用仮配線部24は、供給源素子と選択部22によって選択された各入力端子配置候補位置に配置された入力端子との間を最短経路で接続する信号ラインを仮配線するものである。
入力端子配置部25は、複数の入力端子配置候補位置の全てについて入力端子用設計部23および入力端子用仮配線部24によって得られた仮配線結果に基づいて、複数の入力端子配置候補位置の中から、所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に入力端子を仮想的に配置するとともに、選択された候補位置について得られた仮配線結果およびバッファの挿入位置を採用するものである。
【0109】
そして、第3実施形態の設計装置では、複数の論理階層のそれぞれについて入力端子配置部25によって配置された複数の入力端子を、複数の被供給素子とみなして、第1実施形態の設計装置と同様に、仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15Bおよびクロック供給源素子変更部16を動作させる。
【0110】
ただし、第3実施形態の最終配線部15Bは、入力端子配置部25によって採用された仮配線結果と、仮配線部11およびバッファ挿入部14での仮配線結果と、入力端子配置部20によって仮想的に決定された入力端子の配置位置とに従って、供給源素子,複数の被供給素子,バッファおよび入力端子の間を結ぶ信号ラインの配線経路を決定する
【0111】
上述した仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15B,クロック供給源素子変更部16,入力端子設定部21,選択部22,入力端子用設計部23,入力端子用仮配線部24および入力端子配置部25は、第1実施形態と同様、専用ソフトウェア(クロック分配回路の設計プログラム)によって実現される。
【0112】
この設計プログラムは、第1実施形態と同様、例えばフレキシブルディスク,CD−ROM等のコンピュータ読取可能な記録媒体に記録された形態で提供される。第3実施形態においても、設計装置を成すROM等に予め設計プログラムを格納しておき、この設計プログラムを、やはり設計装置を成すCPU(図示省略;コンピュータ)によって読み出し実行することで、上述した仮配線部11,判断部12,グルーピング部13,バッファ挿入部14,最終配線部15B,クロック供給源素子変更部16,入力端子設定部21,選択部22,入力端子用設計部23,入力端子用仮配線部24および入力端子配置部25としての機能が実現される。
【0113】
なお、第3実施形態においても、第2実施形態と同様、仮配線部11が、入力端子用仮配線部24および仮配線部11Bとしての機能を兼ねるとともに、判断部12,グルーピング部13およびバッファ挿入部14が、それぞれ判断部12B,グルーピング部13Bおよびバッファ挿入部14Bとしての機能を兼ねるように構成してもよい。
【0114】
次に、図19に示すフローチャート(ステップS40〜S53,S11〜S15,S162およびS17)に従って、上述した第2実施形態の設計装置の動作、つまり本発明の第2実施形態としてのクロック分配回路の設計方法の手順について説明する。
論理設計結果として得られた、論理的に階層化設計されたネットリストが与えられると、第3実施形態の設計装置では、まず、入力端子設定部21によって、各論理階層について、論理階層に属する所属被供給素子に接続される入力端子が仮想的に設定される(ステップS40;入力端子設定ステップ)。この後、選択部22によって、入力端子が一つ選択されるとともに(ステップS41)、その入力端子を配置可能な領域が認識され、その領域内で複数の入力端子配置候補位置が選択される(ステップS42;選択ステップ)。
【0115】
そして、ステップS42で選択された複数の入力端子配置候補位置の中から一つを選択し(ステップS43)、仮配線部11Bによって、その入力端子配置候補位置に配置される入力端子と、この入力端子に対応する所属被供給素子との間を、最短経路で直接接続する信号ラインが仮配線される(ステップS44;第2仮配線ステップ)。
【0116】
このように仮配線された信号ラインにより複数の所属被供給素子におけるクロックスキューが最適化されているか否かが、判断部12Bによって判断され(ステップS45;第2判断ステップ)、クロックスキューが最適化されていないと判断された場合(ステップS45のNOルート)、グルーピング部13Bによって、複数の所属被供給素子が複数のグループに分割される(ステップS46;第2グルーピングステップ)。ここで、各グループに含まれる所属被供給素子の数は、例えば、挿入されるバッファの特性(出力駆動能力等)に応じて決められる。また、基本的には、配置位置の近い所定数の所属被供給素子が一つのグループにまとめられる。
【0117】
この後、ステップS46で分割された各グループにおいて、バッファの挿入・配置を行なう(ステップS47;第2バッファ挿入ステップ)。このステップS47では、バッファ挿入部14Bによって、以下に説明するステップS471〜S479の処理が行なわれる。
【0118】
まず、ステップS46で分割された複数のグループの中から一つのグループを選択し(ステップS471)、そのグループに対して、挿入されるべき一つのバッファが割り当てられる(ステップS472)。そして、このバッファを挿入・配置可能な領域が認識され、その領域内で複数のバッファ挿入候補位置が選択される(ステップS473)。
【0119】
さらに、ステップS473で選択された複数のバッファ挿入候補位置の中から一つのバッファ挿入候補位置を選択し(ステップS474)、そのバッファ挿入候補位置に配置されたバッファと今回選択したグループに属する所属被供給素子との間を最短経路で接続する信号ラインが仮配線されるとともに、そのバッファ挿入候補位置に配置されたバッファと入力端子との間を最短経路で接続する信号ラインが仮配線され、これらの信号ラインによる遅延時間が計算される。ここで得られた遅延時間は、バッファ挿入候補位置や配線経路に関する情報とともに、解としてメモリ等に保持される(ステップS475)。
【0120】
上述したステップS474およびS475の処理は、ステップS473で選択された全てのバッファ挿入候補位置に対して実行される。つまり、ステップS476において、全てのバッファ挿入候補位置についてステップS474およびS475の処理を終了したと判断されるまで、ステップS474およびS475の処理は繰り返し実行される。
【0121】
全てのバッファ挿入候補位置についてステップS474およびS475の処理を終了したと判断されると(ステップS476のYESルート)、複数のバッファ挿入候補位置について得られた遅延時間に基づいて、複数のバッファ挿入候補位置の中から、今回のグループに属する所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択される(ステップS477)。
【0122】
そして、ステップS477で選択された候補位置にバッファが挿入・配置される(ステップS478)。このとき、挿入されるバッファとしては、ステップS475での仮配線結果に基づいて、このバッファから、バッファ挿入対象のグループに属する所属被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファが選択される。
【0123】
上述したステップS471〜S478の処理は、ステップS46で分割された全てのグループに対して実行される。つまり、ステップS479において、全てのグループについてステップS471〜S478の処理を終了したと判断されるまで、ステップS471〜S478の処理は繰り返し実行される。
全てのグループについてステップS471〜S478の処理を終了したと判断されると(ステップS479のYESルート)、バッファ挿入部14Bによって各グループに挿入されたバッファを複数の所属被供給素子とみなして(ステップS48)、ステップS44に戻る。
【0124】
そして、上述したステップS44〜S48の処理は、ステップS45でクロックスキューが最適化されていると判断されるまで繰り返し実行される。ステップS45でクロックスキューが最適化されていると判断された場合(YESルート)、入力端子用仮配線部24によって、供給源素子と各入力端子配置候補位置に配置された入力端子との間を最短経路で接続する信号ラインを仮配線する(ステップS49;第3仮配線ステップ)。
【0125】
全ての入力端子配置候補位置についてステップS44〜S49の処理を終了したと判断されると(ステップS50のYESルート)、今回、ステップS41で選択された入力端子の配置位置を決定し、その配置位置に入力端子を配置する(ステップS51;入力端子配置ステップ)。このステップS51では、入力端子配置部25によって、以下に説明するステップS11およびS12の処理が行なわれる。
【0126】
つまり、全ての特定素子配置候補位置についてステップS44,S475およびS49で得られた仮配線結果に基づき、複数の入力端子配置候補位置の中から、所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択され(ステップS11)、選択された候補位置に入力端子が仮想的に配置されるとともに、選択された候補位置についてステップS47で得られた仮配線結果およびバッファの挿入位置が採用される(ステップS12)。なお、上述のように決定された入力端子の配置位置には、実際には、例えば、適当な出力駆動能力を有するバッファが配置される(図21参照)。
【0127】
上述したステップS41〜S51の処理は、ステップS40で設定された全ての入力端子に対して実行される。つまり、ステップS52において、全ての入力端子についてステップS41〜S51の処理を終了したと判断されるまで、ステップS41〜S51の処理は繰り返し実行される。
【0128】
全ての入力端子についてステップS41〜S51の処理を終了したと判断されると(ステップS52のYESルート)、ステップS51で仮想的に配置された複数階層における入力端子(バッファ)を、複数の被供給素子とみなして(ステップS53)、第1実施形態とほぼ同様の処理(ステップS11〜S15,S162およびS17)が実行される。
【0129】
その際、第1実施形態のステップS16に代えて第3実施形態で実行されるステップS162(最終配線ステップ)では、最終配線部15Bによって、ステップS51で採用された仮配線結果と、ステップS11およびS14での仮配線結果と、入力端子の配置位置とに従って、供給源素子,複数の被供給素子,バッファおよび入力端子の間を結ぶ信号ラインの配線経路が決定される。
【0130】
次に、図20および図21を参照しながら、第3実施形態の設計動作をより具体的に説明する。なお、図20および図21はその具体的な設計動作を説明するための図である。ここでは、図20に示すように、2つの論理階層を有する回路がネットリストによって与えられた場合について説明する。このネットリストにおいては、第1実施形態と同様、一つのクロック信号供給源素子CLKと、8個の被クロック信号供給素子A〜Hとが含まれているが、被供給素子A〜Dが一つの論理階層に属し、被供給素子E〜Hがもう一つの論理階層に属しているものとし、これらの素子間のクロック分配回路を設計する場合について説明する。また、供給源素子CLKおよび被供給素子A〜Hは、図3〜図9に示したものと同様の位置に配置されるものとする。
【0131】
図20に示すような情報を有するネットリストが設計装置に与えられると、まず、上述したステップ40の処理によって、各論理階層について入力端子I1,I2が仮想的に設定された後、上述したステップS41〜S52の処理によって、図21に示すように、4個の所属被供給素子A〜Dに対する入力端子I1(バッファb25)の配置位置が決定されるとともに、これらの4個の所属被供給素子A〜Dと入力端子I1との間におけるバッファb21,b22の挿入・配置および仮配線が行なわれる。同様に、4個の所属被供給素子E〜Hに対する入力端子I2(バッファb26)の配置位置が決定されるとともに、これらの4個の所属被供給素子E〜Hと入力端子I2との間におけるバッファb23,b24の挿入・配置および仮配線が行なわれる。
【0132】
この後、2つの入力端子I1,I2の位置にそれぞれ配置される2つのバッファb25,b26が被供給素子とみなされて、第1実施形態とほぼ同様の処理、つまり上述したステップS11〜S15,S162およびS17の処理が実行され、供給源素子CLKと2つのバッファb25,b26との間において、バッファb27が挿入・配置されるとともに配線経路が決定される。さらに、供給源素子CLKの特性などが決定された後、最終的に図21に示すようなクロックツリー(クロック分配回路)が生成されることになる。
【0133】
このように、本発明の第3実施形態によれば、被供給素子が複数の論理階層に存在しているような回路の設計においては、論理階層の境界に仮想的に設定された入力端子を変更しないようにバッファ挿入・配置や配線経路が決定され、クロックツリーが生成される。
【0134】
これにより、複数の被供給素子が異なる論理階層に属している場合であっても、所属被供給素子に対する入力端子の位置が、入力端子と所属被供給素子との間の配線経路とともに、配線状態およびバッファの挿入・配置状態の両方を調節しながら決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが、同時に最適化されるだけでなく、確実に最適化される。
【0135】
〔4〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、本実施形態の設計回路に与えられるネットリストの内容に応じて、上述した第1〜第3実施形態や、第1実施形態の第1変形例や第2変形例を適宜組み合わせてクロック分配回路を設計してもよい。
【0136】
〔5〕付記
(付記1) 少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための方法であって、
所定位置に配置される該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第1仮配線ステップと、
該第1仮配線ステップで仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第1判断ステップと、
該第1判断ステップでクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第1グルーピングステップと、
該第1グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第1バッファ挿入ステップとを、該第1判断ステップでクロックスキューが最適化されていると判断されるまで、該第1バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し実行した後、
該第1判断ステップでクロックスキューが最適化されていると判断された場合に、該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線ステップを実行することを特徴とする、クロック分配回路の設計方法。
【0137】
(付記2) 該第1バッファ挿入ステップにおいて、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、付記1記載のクロック分配回路の設計方法。
【0138】
(付記3) 該供給源素子と該複数の被供給素子のうちの一部(以下、特定被供給素子という)との間に特定の機能を果たす特定素子が介在している場合、該第1仮配線ステップの実行に先立って、
該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択ステップを実行し、
該選択ステップで選択された各特定素子候補位置について、
当該特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線ステップと、
該第2仮配線ステップで仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断ステップと、
該第2判断ステップでクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第2グルーピングステップと、
該第2グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入ステップとを、該第2判断ステップでクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該特定被供給素子とみなして、繰り返し実行するとともに、
該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する第3仮配線ステップを実行した後、
該複数の特定素子配置候補位置の全てについて該第2仮配線ステップ,該第2バッファ挿入ステップおよび該第3仮配線ステップで得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置ステップを実行してから、
該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置ステップで配置された該特定素子とを、該複数の被供給素子とみなして、該第1仮配線ステップ,該第1判断ステップ,該第1グルーピングステップ,該第1バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該特定素子配置ステップで採用された仮配線結果と該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果と該特定素子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、付記1または付記2に記載のクロック分配回路の設計方法。
【0139】
(付記4) 該複数の被供給素子が異なる論理階層に属している場合、該第1仮配線ステップの実行に先立って、
各論理階層について、該論理階層に属する該被供給素子(以下、所属被供給素子という)に接続される入力端子を仮想的に設定する入力端子設定ステップと、
該入力端子設定ステップで設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択ステップとを実行し、
該選択ステップで選択された各入力端子配置候補位置について、
当該入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線ステップと、
該第2仮配線ステップで仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断ステップと、
該第2判断ステップでクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第2グルーピングステップと、
該第2グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入ステップとを、該第2判断ステップでクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該所属被供給素子とみなして、繰り返し実行するとともに、
該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する第3仮配線ステップを実行した後、
該複数の入力端子配置候補位置の全てについて該第2仮配線ステップ,該第2バッファ挿入ステップおよび該第3仮配線ステップで得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置ステップを実行してから、
該複数の論理階層のそれぞれについて該入力端子配置ステップで配置された複数の入力端子を、該複数の被供給素子とみなして、該第1仮配線ステップ,該第1判断ステップ,該第1グルーピングステップ,該第1バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該入力端子配置ステップで採用された仮配線結果と該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果と該入力端子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、付記1または付記2に記載のクロック分配回路の設計方法。
【0140】
(付記5) 該第2バッファ挿入ステップにおいて、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、付記3または付記4に記載のクロック分配回路の設計方法。
【0141】
(付記6) 該最終配線ステップによる配線結果に基づいて、該供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更する供給源素子変更ステップをさらに実行することを特徴とする、付記1〜付記5のいずれか一つに記載のクロック分配回路の設計方法。
【0142】
(付記7) 該複数の被供給素子に対してそれぞれ異なるクロックスキューの制約が与えられた場合、該制約を満足するように、該バッファの挿入・配置および該信号ラインの配線経路の決定を行なうことを特徴とする、付記1〜付記6のいずれか一つに記載のクロック分配回路の設計方法。
【0143】
(付記8) 該供給源素子が2以上存在する場合、各供給源素子について、当該供給源素子と、当該供給源素子からのクロック信号を供給される該被供給素子との間の該クロック分配回路を設計してから、2以上の該供給源素子から該複数の被供給素子までのクロック伝播遅延時間が一致するように、各供給源素子と各供給源素子について設計された該クロック分配回路との間で、バッファの挿入・配置および信号ラインの配線経路の決定を行なうことを特徴とする、付記1〜付記7のいずれか一つに記載のクロック分配回路の設計方法。
【0144】
(付記9) 少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための装置であって、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第1仮配線部と、
該第1仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第1判断部と、
該第1判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第1グルーピング部と、該第1グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第1バッファ挿入部と、
該第1判断部でクロックスキューが最適化されていると判断された場合に、該第1仮配線部および該第1バッファ挿入部によって得られた仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部とをそなえ、
該第1仮配線部,該第1判断部,該第1グルーピング部および該第1バッファ挿入部を、該第1判断部によってクロックスキューが最適化されていると判断されるまで、該第1バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作させた後、該最終配線部を動作させることを特徴とする、クロック分配回路の設計装置。
【0145】
(付記10) 該第1バッファ挿入部が、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、付記9記載のクロック分配回路の設計装置。
【0146】
(付記11) 該供給源素子と該複数の被供給素子のうちの一部(以下、特定被供給素子という)との間に特定の機能を果たす特定素子が介在している場合に、該第1仮配線部の動作に先立って、該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択部と、
該選択部によって選択された各特定素子候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう特定素子用設計部と、
該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する特定素子用仮配線部と、
該複数の特定素子配置候補位置の全てについて該特定素子用設計部および該特定素子用仮配線部によって得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置部とをそなえ、
該特定素子用設計部が、
各特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線部と、
該第2仮配線部によって仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断部と、
該第2判断部によってクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第2グルーピング部と、
該第2グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入部とをそなえて構成され、該特定素子用設計部において、該第2仮配線部,該第2判断部,該第2グルーピング部および該第2バッファ挿入部が、該第2判断部によってクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、
該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置部によって配置された該特定素子とを、該複数の被供給素子とみなして、該第1仮配線部,該第1判断部,該第1グルーピング部,該第1バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第1仮配線部および該第1バッファ挿入部での仮配線結果と該特定素子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、付記9または付記10に記載のクロック分配回路の設計装置。
【0147】
(付記12) 該第1仮配線部が、該特定素子用仮配線部および該第2仮配線部としての機能を兼ねるとともに、該第1判断部,該第1グルーピング部および該第1バッファ挿入部が、それぞれ該第2判断部,該第2グルーピング部および該第2バッファ挿入部としての機能を兼ねることを特徴とする、付記11記載のクロック分配回路の設計装置。
【0148】
(付記13) 該複数の被供給素子が異なる論理階層に属している場合、該第1仮配線部の動作に先立って、各論理階層について、該論理階層に属する該被供給素子(以下、所属被供給素子という)に接続される入力端子を仮想的に設定する入力端子設定部と、
該入力端子設定部によって設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択部と、
該選択部によって選択された各入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう入力端子用設計部と、
該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する入力端子用仮配線部と、
該複数の入力端子配置候補位置の全てについて該入力端子用設計部および該入力端子用仮配線部によって得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置部とをそなえ、
該入力端子用設計部が、
各入力端子配置候補位置に配置される該入力端子と所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線部と、
該第2仮配線部によって仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断部と、
該第2判断部によってクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第2グルーピング部と、
該第2グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入部とをそなえて構成され、
該入力端子用設計部において、該第2仮配線部,該第2判断部,該第2グルーピング部および該第2バッファ挿入部が、該第2判断部によってクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、
該複数の論理階層のそれぞれについて該入力端子配置部で配置された複数の入力端子を、該複数の被供給素子とみなして、該第1仮配線部,該第1判断部,該第1グルーピング部,該第1バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第1仮配線部および該第1バッファ挿入部での仮配線結果と該入力端子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、付記9または付記10に記載のクロック分配回路の設計装置。
【0149】
(付記14) 該第1仮配線部が、該入力端子用仮配線部および該第2仮配線部としての機能を兼ねるとともに、該第1判断部,該第1グルーピング部および該第1バッファ挿入部が、それぞれ該第2判断部,該第2グルーピング部および該第2バッファ挿入部としての機能を兼ねることを特徴とする、付記13記載のクロック分配回路の設計装置。
【0150】
(付記15) 該第2バッファ挿入部が、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、付記11〜付記14のいずれか一つに記載のクロック分配回路の設計装置。
【0151】
(付記16) 該最終配線部による配線結果に基づいて、該供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更する供給源素子変更部をさらにそなえたことを特徴とする、付記9〜付記15のいずれか一つに記載のクロック分配回路の設計装置。
【0152】
(付記17) 該複数の被供給素子に対してそれぞれ異なるクロックスキューの制約が与えられた場合、該制約を満足するように、該バッファの挿入・配置および該信号ラインの配線経路の決定を行なうことを特徴とする、付記9〜付記16のいずれか一つに記載のクロック分配回路の設計装置。
【0153】
(付記18) 該供給源素子が2以上存在する場合、各供給源素子について、当該供給源素子と、当該供給源素子からのクロック信号を供給される該被供給素子との間の該クロック分配回路を設計してから、2以上の該供給源素子から該複数の被供給素子までのクロック伝播遅延時間が一致するように、各供給源素子と各供給源素子について設計された該クロック分配回路との間で、バッファの挿入・配置および信号ラインの配線経路の決定を行なうことを特徴とする、付記9〜付記17のいずれか一つに記載のクロック分配回路の設計装置。
【0154】
(付記19) 少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるための設計プログラムであって、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する仮配線部、
該仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する判断部、
該判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割するグルーピング部、
該グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置するバッファ挿入部、および、
該判断部でクロックスキューが最適化されていると判断された場合に、該仮配線部および該バッファ挿入部によって得られた仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部として、該コンピュータを機能させるとともに、
該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部,該判断部,該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部として機能させることを特徴とする、クロック分配回路の設計プログラム。
【0155】
(付記20) 少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるための設計プログラムを記録したコンピュータ読取可能な記録媒体であって、
該設計プログラムが、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する仮配線部、
該仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する判断部、
該判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割するグルーピング部、
該グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置するバッファ挿入部、および、
該判断部でクロックスキューが最適化されていると判断された場合に、該仮配線部および該バッファ挿入部によって得られた仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部として、該コンピュータを機能させるとともに、
該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部,該判断部,該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部として機能させることを特徴とする、クロック分配回路の設計プログラムを記録したコンピュータ読取可能な記録媒体。
【0156】
【発明の効果】
以上詳述したように、本発明のクロック分配回路の設計方法(請求項1,2),設計装置(請求項3)および設計プログラム(請求項4)並びに同プログラムを記録したコンピュータ読取可能な記録媒体(請求項5)によれば、以下のような効果ないし利点を得ることができる。
【0157】
(1)レイアウト設計に際して、供給源素子および複数の被供給素子を配置した後に、被供給素子側から供給源素子へ向け、配線状態とバッファの挿入・配置状態との両方を調節しながら配線経路が決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが同時かつ確実に最適化され、ひいては高速に動作することのできる半導体回路を設計し実現することができる(請求項1,3〜5)。
【0158】
(2)各グループに挿入されるバッファとして、そのバッファから各グループに属する被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することにより、より確実に、回路全体におけるクロック伝播遅延時間とクロックスキューとを最適化することができる(請求項2)。
【0159】
(3)供給源素子と複数の被供給素子のうちの一部との間に特定の機能を果たす特定素子(セレクタ,インバータ等)が介在している場合においても、特定被供給素子に対する特定素子の位置が、この特定素子と特定被供給素子との間の配線経路とともに、配線状態およびバッファの挿入・配置状態の両方を調節しながら決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが、同時に最適化されるだけでなく、確実に最適化される。
【0160】
(4)複数の被供給素子が異なる論理階層に属している場合においても、各論理階層に属する所属被供給素子に接続される入力端子を、論理階層毎に仮想的に設定し、所属被供給素子に対する入力端子の位置が、入力端子と所属被供給素子との間の配線経路とともに、配線状態およびバッファの挿入・配置状態の両方を調節しながら決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが、同時に最適化されるだけでなく、確実に最適化される。
【0161】
(5)最終配線結果に基づいて、供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更することにより、より確実に、回路全体におけるクロック伝播遅延時間とクロックスキューとを最適化することができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。
【図2】本発明の第1実施形態としてのクロック分配回路の設計方法の手順を説明するためのフローチャートである。
【図3】第1実施形態の具体的な設計動作を説明するための図である。
【図4】第1実施形態の具体的な設計動作を説明するための図である。
【図5】第1実施形態の具体的な設計動作を説明するための図である。
【図6】第1実施形態の具体的な設計動作を説明するための図である。
【図7】第1実施形態の具体的な設計動作を説明するための図である。
【図8】第1実施形態の具体的な設計動作を説明するための図である。
【図9】第1実施形態の具体的な設計動作を説明するための図である。
【図10】第1実施形態の第1変形例の具体的な設計動作を説明するための図である。
【図11】第1実施形態の第2変形例の具体的な設計動作を説明するための図である。
【図12】第1実施形態の第2変形例の具体的な設計動作を説明するための図である。
【図13】第1実施形態の第2変形例の具体的な設計動作を説明するための図である。
【図14】本発明の第2実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。
【図15】本発明の第2実施形態としてのクロック分配回路の設計方法の手順を説明するためのフローチャートである。
【図16】第2実施形態の具体的な設計動作を説明するための図である。
【図17】第2実施形態の具体的な設計動作を説明するための図である。
【図18】本発明の第3実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。
【図19】本発明の第3実施形態としてのクロック分配回路の設計方法の手順を説明するためのフローチャートである。
【図20】第3実施形態の具体的な設計動作を説明するための図である。
【図21】第3実施形態の具体的な設計動作を説明するための図である。
【符号の説明】
11 仮配線部(第1仮配線部)
11A,11B 仮配線部(第2仮配線部)
12 判断部(第1判断部)
12A,12B 判断部(第2判断部)
13 グルーピング部(第1グルーピング部)
13A,13B グルーピング部(第2グルーピング部)
14 バッファ挿入部(第1バッファ挿入部)
14A,14B バッファ挿入部(第2バッファ挿入部)
15,15A,15B 最終配線部
16 クロック供給源素子変更部(供給源素子変更部)
17 選択部
18 特定素子用設計部
19 特定素子用仮配線部
20 特定素子配置部
21 入力端子設定部
22 選択部
23 入力端子用設計部
24 入力端子用仮配線部
25 入力端子配置部

Claims (9)

  1. 少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための方法であって、
    所定位置に配置される該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第1仮配線ステップと、
    該第1仮配線ステップで仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第1判断ステップと、
    該第1判断ステップでクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第1グルーピングステップと、
    該第1グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第1バッファ挿入ステップとを、該第1判断ステップでクロックスキューが最適化されていると判断されるまで、該第1バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し実行した後、
    該第1判断ステップでクロックスキューが最適化されていると判断された場合に、該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線ステップを実行することを特徴とする、クロック分配回路の設計方法。
  2. 該第1バッファ挿入ステップにおいて、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、請求項1記載のクロック分配回路の設計方法。
  3. 該供給源素子と該複数の被供給素子のうちの一部(以下、特定被供給素子という)との間に特定の機能を果たす特定素子が介在している場合、該第1仮配線ステップの実行に先立って、
    該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択ステップを実行し、
    該選択ステップで選択された各特定素子候補位置について、
    当該特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線ステップと、
    該第2仮配線ステップで仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断ステップと、
    該第2判断ステップでクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第2グルーピングステップと、
    該第2グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入ステップとを、該第2判断ステップでクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該特定被供給素子とみなして、繰り返し実行するとともに、
    該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する第3仮配線ステップを実行した後、
    該複数の特定素子配置候補位置の全てについて該第2仮配線ステップ,該第2バッファ挿入ステップおよび該第3仮配線ステップで得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置ステップを実行してから、
    該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置ステップで配置された該特定素子とを、該複数の被供給素子とみなして、該第1仮配線ステップ,該第1判断ステップ,該第1グルーピングステップ,該第1バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該特定素子配置ステップで採用された仮配線結果と該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果と該特定素子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、請求項1または請求項2に記載のクロック分配回路の設計方法。
  4. 該複数の被供給素子が異なる論理階層に属している場合、該第1仮配線ステップの実行に先立って、
    各論理階層について、該論理階層に属する該被供給素子(以下、所属被供給素子という)に接続される入力端子を仮想的に設定する入力端子設定ステップと、
    該入力端子設定ステップで設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択ステップとを実行し、
    該選択ステップで選択された各入力端子配置候補位置について、
    当該入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線ステップと、
    該第2仮配線ステップで仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断ステップと、
    該第2判断ステップでクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第2グルーピングステップと、
    該第2グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入ステップとを、該第2判断ステップでクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該所属被供給素子とみなして、繰り返し実行するとともに、
    該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する第3仮配線ステップを実行した後、
    該複数の入力端子配置候補位置の全てについて該第2仮配線ステップ,該第2バッファ挿入ステップおよび該第3仮配線ステップで得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置ステップを実行してから、
    該複数の論理階層のそれぞれについて該入力端子配置ステップで配置された複数の入力端子を、該複数の被供給素子とみなして、該第1仮配線ステップ,該第1判断ステップ,該第1グルーピングステップ,該第1バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該入力端子配置ステップで採用された仮配線結果と該第1仮配線ステップおよび該第1バッファ挿入ステップでの仮配線結果と該入力端子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、請求項1または請求項2に記載のクロック分配回路の設計方法。
  5. 少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための装置であって、
    所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第1仮配線部と、
    該第1仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第1判断部と、
    該第1判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第1グルーピング部と、
    該第1グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第1バッファ挿入部と、
    該第1判断部でクロックスキューが最適化されていると判断された場合に、該第1仮配線部および該第1バッファ挿入部によって得られた仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部とをそなえ、
    該第1仮配線部,該第1判断部,該第1グルーピング部および該第1バッファ挿入部を、該第1判断部によってクロックスキューが最適化されていると判断されるまで、該第1バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作させた後、該最終配線部および給源素子変更部を動作させることを特徴とする、クロック分配回路の設計装置。
  6. 該供給源素子と該複数の被供給素子のうちの一部(以下、特定被供給素子という)との間に特定の機能を果たす特定素子が介在している場合に、該第1仮配線部の動作に先立って、該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択部と、
    該選択部によって選択された各特定素子候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう特定素子用設計部と、
    該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する特定素子用仮配線部と、
    該複数の特定素子配置候補位置の全てについて該特定素子用設計部および該特定素子用仮配線部によって得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置部とをそなえ、
    該特定素子用設計部が、
    各特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線部と、
    該第2仮配線部によって仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断部と、
    該第2判断部によってクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第2グルーピング部と、
    該第2グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入部とをそなえて構成され、
    該特定素子用設計部において、該第2仮配線部,該第2判断部,該第2グルーピング部および該第2バッファ挿入部が、該第2判断部によってクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、
    該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置部によって配置された該特定素子とを、該複数の被供給素子とみなして、該第1仮配線部,該第1判断部,該第1グルーピング部,該第1バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第1仮配線部および該第1バッファ挿入部での仮配線結果と該特定素子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、請求項5記載のクロック分配回路の設計装置。
  7. 該複数の被供給素子が異なる論理階層に属している場合、該第1仮配線部の動作に先立って、各論理階層について、該論理階層に属する該被供給素子(以下、所属被供給素子という)に接続される入力端子を仮想的に設定する入力端子設定部と、
    該入力端子設定部によって設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択部と、
    該選択部によって選択された各入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう入力端子用設計部と、
    該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する入力端子用仮配線部と、
    該複数の入力端子配置候補位置の全てについて該入力端子用設計部および該入力端子用仮配線部によって得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置部とをそなえ、
    該入力端子用設計部が、
    各入力端子配置候補位置に配置される該入力端子と所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第2仮配線部と、
    該第2仮配線部によって仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第2判断部と、
    該第2判断部によってクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第2グルーピング部と、
    該第2グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第2バッファ挿入部とをそなえて構成され、
    該入力端子用設計部において、該第2仮配線部,該第2判断部,該第2グルーピング部および該第2バッファ挿入部が、該第2判断部によってクロックスキューが最適化されていると判断されるまで、該第2バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、
    該複数の論理階層のそれぞれについて該入力端子配置部で配置された複数の入力端子を、該複数の被供給素子とみなして、該第1仮配線部,該第1判断部,該第1グルーピング部,該第1バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第1仮配線部および該第1バッファ挿入部での仮配線結果と該入力端子の配置位置とに従って、該供給源素子,該複数の被供給素子,該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、請求項5記載のクロック分配回路の設計装置。
  8. 少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるための設計プログラムであって、
    所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する仮配線部、
    該仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する判断部、
    該判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割するグルーピング部、
    該グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置するバッファ挿入部、および、
    該判断部でクロックスキューが最適化されていると判断された場合に、該仮配線部および該バッファ挿入部によって得られた仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部として、該コンピュータを機能させるとともに、
    該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部,該判断部,該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部および給源素子変更部として機能させることを特徴とする、クロック分配回路の設計プログラム。
  9. 少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるための設計プログラムを記録したコンピュータ読取可能な記録媒体であって、
    該設計プログラムが、
    所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する仮配線部、
    該仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する判断部、
    該判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割するグルーピング部、
    該グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置するバッファ挿入部、および、
    該判断部でクロックスキューが最適化されていると判断された場合に、該仮配線部および該バッファ挿入部によって得られた仮配線結果に従って、該供給源素子,該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部として、該コンピュータを機能させるとともに、
    該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部,該判断部,該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部および給源素子変更部として機能させることを特徴とする、クロック分配回路の設計プログラムを記録したコンピュータ読取可能な記録媒体。
JP2001178295A 2001-06-13 2001-06-13 クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体 Expired - Fee Related JP5193406B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001178295A JP5193406B2 (ja) 2001-06-13 2001-06-13 クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体
US09/983,185 US6564353B2 (en) 2001-06-13 2001-10-23 Method and apparatus for designing a clock distributing circuit, and computer readable storage medium storing a design program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001178295A JP5193406B2 (ja) 2001-06-13 2001-06-13 クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体

Publications (2)

Publication Number Publication Date
JP2002373939A JP2002373939A (ja) 2002-12-26
JP5193406B2 true JP5193406B2 (ja) 2013-05-08

Family

ID=19019018

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001178295A Expired - Fee Related JP5193406B2 (ja) 2001-06-13 2001-06-13 クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体

Country Status (2)

Country Link
US (1) US6564353B2 (ja)
JP (1) JP5193406B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701507B1 (en) * 2001-12-14 2004-03-02 Sequence Design, Inc. Method for determining a zero-skew buffer insertion point
DE10164424A1 (de) * 2001-12-29 2003-07-17 Philips Intellectual Property Elektrische oder elektronische Schaltungsanordnung sowie zugeordnetes Verfahren
US6721931B2 (en) * 2002-02-05 2004-04-13 Agilent Technologies, Inc. System and method for simplifying clock construction and analysis
JP4017583B2 (ja) * 2003-10-16 2007-12-05 松下電器産業株式会社 半導体集積回路の設計データの回路表示方法
US20070204255A1 (en) * 2006-02-28 2007-08-30 International Business Machines Corporation Net routing
JP2007300067A (ja) * 2006-04-07 2007-11-15 Toshiba Corp 半導体集積回路装置およびその設計方法
US20080238519A1 (en) * 2007-03-26 2008-10-02 Ashok Kumar Kapoor Signaling circuit and method for integrated circuit devices and systems
US20080237657A1 (en) * 2007-03-26 2008-10-02 Dsm Solution, Inc. Signaling circuit and method for integrated circuit devices and systems
US7979732B2 (en) * 2007-07-03 2011-07-12 International Business Machines Corporation Efficient utilization of a multi-source network of control logic to achieve timing closure in a clocked logic circuit
US8499230B2 (en) * 2008-05-07 2013-07-30 Lsi Corporation Critical path monitor for an integrated circuit and method of operation thereof
US8843872B1 (en) * 2013-03-15 2014-09-23 Synopsys, Inc. Automatic clock tree synthesis exceptions generation
US9135389B2 (en) * 2013-09-25 2015-09-15 United Microelectronics Corporation Clock skew adjusting method and structure
KR20160015683A (ko) * 2014-07-31 2016-02-15 에스케이하이닉스 주식회사 반도체 장치
CN112989742B (zh) * 2019-12-13 2024-01-02 瑞昱半导体股份有限公司 借助于额外导线来进行电网优化的方法与设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2596596B2 (ja) 1988-08-29 1997-04-02 株式会社日立製作所 論理回路素子配置方法
JP2695078B2 (ja) * 1991-06-10 1997-12-24 株式会社東芝 データ処理装置クロック信号の分配方法
JP2540762B2 (ja) * 1993-11-10 1996-10-09 日本電気株式会社 クロック信号供給方法
JPH0844776A (ja) 1994-07-29 1996-02-16 Fujitsu Ltd 半導体集積回路のクロック配線回路の設計方法
JPH0850604A (ja) 1994-08-05 1996-02-20 Matsushita Electric Ind Co Ltd クロックスキュー防止レイアウト設計方法
US5638291A (en) * 1994-10-14 1997-06-10 Vlsi Technology, Inc. Method and apparatus for making integrated circuits by inserting buffers into a netlist to control clock skew
JPH08129571A (ja) 1994-10-31 1996-05-21 Hitachi Ltd クロック配線の設計方法
US5790841A (en) * 1996-04-15 1998-08-04 Advanced Micro Devices, Inc. Method for placement of clock buffers in a clock distribution system
US5798935A (en) * 1996-07-01 1998-08-25 Sun Microsystems, Inc. Method and apparatus for sizing buffers to provide minimal skew
JP2877128B2 (ja) * 1997-02-13 1999-03-31 日本電気株式会社 レイアウト方法及び装置
JPH11175183A (ja) * 1997-12-12 1999-07-02 Fujitsu Ltd 半導体集積回路におけるクロック分配回路
US6367051B1 (en) * 1998-06-12 2002-04-02 Monterey Design Systems, Inc. System and method for concurrent buffer insertion and placement of logic gates
JP2000029562A (ja) * 1998-07-10 2000-01-28 Hitachi Ltd 半導体集積回路及びクロック供給回路の設計方法
JP2001022816A (ja) * 1999-07-12 2001-01-26 Matsushita Electric Ind Co Ltd 半導体集積回路装置のレイアウト方法

Also Published As

Publication number Publication date
US6564353B2 (en) 2003-05-13
US20020199158A1 (en) 2002-12-26
JP2002373939A (ja) 2002-12-26

Similar Documents

Publication Publication Date Title
JP5193406B2 (ja) クロック分配回路の設計方法,設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体
US6539529B2 (en) Method and apparatus for designing integrated circuits and storage medium for storing the method
JP4303280B2 (ja) 半導体集積回路のレイアウト方法、レイアウトプログラム
US8607178B2 (en) Integrated circuit chip with repeater flops and methods for automated design of same
US8185860B2 (en) Method for matching timing on high fanout signal paths using routing guides
US8782591B1 (en) Physically aware logic synthesis of integrated circuit designs
WO1996037855A1 (en) Automated generation of megacells in an integrated circuit design system
US9785740B2 (en) Computer implemented system and method for modifying a layout of standard cells defining a circuit component
US6480996B1 (en) System and method for transposing wires in a circuit design
JP2010257164A (ja) 半導体集積回路装置の設計方法およびプログラム
US6493859B1 (en) Method of wiring power service terminals to a power network in a semiconductor integrated circuit
JP3629250B2 (ja) 半導体集積回路のレイアウト方法及び半導体集積回路
US7487488B1 (en) Predictable repeater routing in an integrated circuit design
US7117472B2 (en) Placement of a clock signal supply network during design of integrated circuits
JP2012174226A (ja) 半導体集積回路のレイアウト設計方法
JP4248925B2 (ja) 自動フロアプラン決定方法
JP3116915B2 (ja) クロックネットのレイアウト設計変更方式
JP4966838B2 (ja) クロック配線処理装置、クロック配線処理方法、及びプログラム
CN1656486A (zh) 集成电路设计方法
JP3164503B2 (ja) 配線パターン作成装置
JP2001308186A (ja) フリップフロップ追加修正が可能なレイアウト方法およびレイアウトプログラムを記録した記録媒体
JP2000222451A (ja) 半導体集積回路の設計支援システム
JP2013191025A (ja) Lsi設計方法
JP2002157292A (ja) 半導体集積回路の論理合成方法
JP2004005126A (ja) 半導体集積回路設計装置およびその設計方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080526

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080729

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20081030

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20081030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110726

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110816

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111026

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111102

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20111125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130204

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160208

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees