説明

半導体集積回路のクロックツリー形成方法およびプログラム。

【課題】製造ばらつきの影響の小さいクロックツリーを生成するクロックツリー形成方法を提供する。
【解決手段】クロックツリー回路のFF対のフリップフロップ間の経路に対して、クロックスキューがない状態でタイミング解析を行い、ホールドエラーが発生する基準値に対しての余裕度としてホールドスラック値を求めるホールドスラック計算処理22と、クロックツリー回路の分岐点となるバッファからFF対ごとのフリップフロップ入力間の経路に対して、経路の遅延の最小値、最大値を計算し記憶するバッファ遅延計算処理23と、経路ごとにホールドスラック値と最大値から最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合はFF対をグループ化するFF対集合操作処理24と、同一グループのFF対の経路ごとに、FF対が同一のバッファで駆動するようにバッファを挿入するバッファ挿入処理25を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、製造を安定的に実施するためのハードウェア設計に係わり、特にクロックツリー形成時にホールドエラーの発生を抑える技術に関する。
【背景技術】
【0002】
近年、回路の微細化にともない製造ばらつきの影響を無視できなくなっており、製造ばらつきの影響を考慮した設計が不可欠となっている。特にクロックツリーなどの製造では、製造ばらつきによって発生するクロックスキューによりタイミングエラーが発生する場合があり、タイミング収束を難しくする要因のひとつとなっている。そのため、クロックツリー設計において製造ばらつきの影響の小さいクロックツリーを生成することは、タイミング収束にとって非常に重要である。
【0003】
特許文献1によれば、ホールドエラー発生の削減を考慮したクロックツリー生成手法に関する技術として、回路内信号線の最適化方法が提案されている。これは、ファンアウト制約を満足するかに着目し、バッファ挿入を行うかの判断を行い。ファンアウト制約を満足していない場合に、評価値算出部によって求められた評価値算出する。この評価値に基づいて、分割部によりFF(フリップフロップ)をいくつかのグループに分割し、バッファ挿入部で分割されたグループに対してバッファ挿入を行う提案がされている。
【0004】
また、特許文献2、3などにクロックツリーの形成方法が提案されている。特許文献2にでは、素子や配線の形態により異なる製造プロセス等に関連する物理的な製造ばらつきに起因する遅延のばらつきを、クロックツリー形成の各方式ごとに定めておき、方式ごとに考慮すべきマージンを変えている。物理的なばらつきが小さい部分に対しては必要以上のマージンを考慮する必要をなくし、遅延制約の問題となる部分に対してはばらつきの少ない方式を適用することにより回路設計に必要以上の制約を課する必要がなくなるという効果が記載されている。
【0005】
しかしながら、特許文献1の提案はファンアウト制約に基づいたバッファ挿入であり、遅延(delay)、スキュー(skew)に対する考慮がされていない。そのため、従来技術を用いて生成されたクロックツリーは遅延、スキューが増大し、タイミングエラーが発生しやすい状況となる。また、製造ばらつきによるスキューの考慮が行なわれてなく、製造ばらつきが発生した状況でホールドエラーの発生を確実に防止することは保証できない。
【0006】
また、製造工程において、基板上にトランジスタや配線パターンを形成してい場合に、基板上のトランジスタ、配線パターンをすべて均一に形成することは困難である。トランジスタや配線パターンごとで異なった特性になることを前提として考える必要がある。例えば、図10に示すように、設計ツール上は同じゲートセル81、82を配置して設計しても、製造したゲートセル81aと82aで基板上の位置によってはゲート遅延が異なり、設計上は配線長や配線幅が同じ配線パターンであっても配線遅延が異なることがある。このため、設計段階からこのような製造ばらつきが発生してもタイミングなどの問題の起きない設計を行うことが必要となっている。
【0007】
また、図11に示すように3つのゲートセル93、94、95が直列に接続された場合のタイミング検証をする上では、通常は図11(b)に示すように通常のパス遅延(typ)で計算される。しかし、製造ばらつきを考慮した場合、ひとつのパスに対して、図11(a)のように早い方にばらついたケース(遅延の早いトランジスタ、配線パターンで形成されたケース:Min側)と、c)遅い方にばらついたケース(遅延の遅いトランジスタ、配線パターンで形成されたケース:Max側)を想定し、パス遅延が計算される。
【0008】
例えば、図11の計算結果は、min側では3Tmin、max側では3Tmax、通常では3Ttypとなる(Tmin<Ttyp<Tmax)。
また、図12に示す設計上のゲートセル101〜104、106〜108、FF105、109から構成される回路について、製造ばらつきを考慮してタイミングチェックを行う場合について説明する。図12に示すセットアップ解析では送り手側のFF105aのクロックパス遅延はmax側、受け手側のFF109aのクロックパス遅延はmin側の遅延を用い、ホールド解析では送り手側のFF105bのクロックパス遅延はmin側、受け手側のFF109bのクロックパス遅延はmax側の遅延を用いて、チェックが行われる。
【0009】
ここで、ホールド解析に着目すると、ホールド解析は解析を行うFF対に対して、それらのFF105b、109bからクロックパスをさかのぼり、当該FF105b、109b対へ分岐する点からのクロックパス遅延を用いて解析される。このため、解析を行うFF対から遠くに分岐点があると、それだけ製造ばらつき考慮の影響を受けることになり、当該FF対の間のクロックスキューは大きくなる。
【0010】
図13(a)に示すようにバッファ111の出力から分岐しFF1112の入力に向かうバッファ112〜116のルートAと、FF1113の入力に向かうバッファ117〜FF1111のルートBのクロックスキューは大きくなる。ここで、クロックスキューはルートAのクロックディレーとルートBのクロックディレーの差を求めたものの絶対値である。
【0011】
そして、大きなクロックスキューが発生したときは、ホールドエラーが発生しやすくなる。一方、図13(b)に示すようにFF対1112、1113の近くのバッファ116(1111)に分岐点があると、製造ばらつきの影響は少なくなり、当該FF対の間のクロックスキューは小さくなる。
【0012】
ホールドエラーが発生した場合、エラーを解消するように回路の修正が行われる。しかし、図14(a)に示すようにホールドエラーが発生しているFF121とFF122間のパスに、図14(b)のようにディレイバッファを挿入したり、クロックツリー自体の変更が行われる。しかし、ディレイバッファを挿入することは回路面積の増大につながり、設計収束を遅らせる原因となる。また、クロックツリーの変更は他のタイミングパスに影響を及ぼし、タイミング収束、設計収束を遅らせる原因となる。
【特許文献1】特許第3337412号公報
【特許文献2】特許第2953384号公報
【特許文献3】特開2005−4496号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
本発明は上記のような実情に鑑てなされたものであり、製造ばらつきの影響の小さいクロックツリーを生成する設計装置とプログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明のひとつの態様では、ハードウェア設計装置による半導体集積回路のクロックツリーの形成方法であって、上記ハードウェア設計装置に記録されている回路配置情報に基づいて、クロックツリー回路のFF対のフリップフロップ間の経路に対して、クロックスキューがない状態でタイミング解析を行い、ホールドエラーが発生する基準値に対しての余裕度としてホールドスラック値を求めるホールドスラック計算処理と、上記クロックツリー回路に用いられているバッファの上記回路配置情報に基づき上記クロックツリー回路の分岐点となる上記バッファから上記FF対ごとの上記フリップフロップ入力間の経路に対して、上記経路の遅延の最小値、最大値を計算し記憶するバッファ遅延計算処理と、上記経路ごとに上記ホールドスラック値と上記最大値から上記最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合は上記FF対をグループ化するFF対集合操作処理と、同一の上記グループの上記FF対の上記経路ごとに、上記FF対が同一の上記バッファで駆動するように上記バッファを挿入するバッファ挿入処理を行うことを特徴とする。
【0015】
好ましくは、上記バッファ挿入処理で生成した結果に対して再度ホールドスラック値の計算を行うホールドスラック再計算処理をし、上記ホールドスラック再計算処理の値に基づいて上記FF対集合操作処理から再処理をし、上記経路ごとに上記比較の結果がホールドスラック値より小さいと判断されるまで処理してもよい。
【0016】
本発明の他の態様では、半導体集積回路のクロックツリーの形成設計を実行するプログラムであって、上記ハードウェア設計装置に記録されている回路配置情報に基づいて、クロックツリー回路のFF対のフリップフロップ間の経路に対して、クロックスキューがない状態でタイミング解析を行い、ホールドエラーが発生する基準値に対しての余裕度として初期のホールドスラック値を求めるホールドスラック計算機能と、上記クロックツリー回路に用いられているバッファの上記回路配置情報に基づき上記クロックツリー回路の分岐点となる上記バッファから上記FF対ごとの上記フリップフロップ入力間の経路に対して、上記経路の遅延の最小値、最大値を計算し記憶するバッファ遅延計算機能と、上記経路ごとに上記ホールドスラック値と上記最大値から上記最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合は上記FF対をグループ化するFF対集合操作機能と、同一の上記グループの上記FF対の上記経路ごとに、上記FF対が同一の上記バッファで駆動するように上記バッファを挿入するバッファ挿入機能と、を有するプログラムでありコンピュータが実行可能な半導体集積回路のクロックツリーの形成設計プログラムである。
【0017】
好ましくは、上記バッファ挿入機能で生成した結果に対して再度ホールドスラック値の計算を行い、再度計算したホールドスラック値に基づいて上記FF対集合操作機能から再処理をして、上記経路ごとに上記比較の結果がホールドスラック値より小さいと判断されるまで処理することを特徴とする。
【0018】
上記構成によりクロックツリー生成を行なうことにより、ホールドクリティカルなFF対に対して、FFに近いところでバッファ挿入されるようになり、製造ばらつきを考慮した場合でも影響の少ない(ホールドエラーの発生を抑えられる)クロックツリーが生成される。
【発明の効果】
【0019】
本発明によれば、製造ばらつきによるホールドエラーの発生を抑えられるクロックツリーが生成できる。
【発明を実施するための最良の形態】
【0020】
以下図面に基づいて、本発明の実施形態について詳細を説明する。
(実施例1)
(本発明のシステムのブロック図)
図1は本発明の半導体集積回路を実現するためのハードウェア設計装置のブロック図である。図1において、設計装置10は、CPU11、ROM12、RAM13、ハードディスクドライブ(HDD)14、フレキシブルディスクドライブ(FDD)15、入力インタフェース(入力I/F)16、通信インタフェース(通信I/F)17、出力インタフェース(出力I/F)19、グラフィック処理部110などを備えている。また、上記各構成部はバス111によってそれぞれ接続されている。
【0021】
CPU11は、ROM12、RAM13、HDD14、FDD15に格納されているプログラムやデータに応じた処理を実行し、設計装置10の全体の制御などをする。ROM12は、CPU11が実行する基本的なプログラム(ブートプログラムなど)やデータを記録する。RAM13は、CPU11が実行途中のプログラムやデータを記録し、ワークエリアなどとして使用される。
【0022】
HDD14には、CPU11が実行するOS(Operation System)やアプリケーションプログラムなどが記録され、CPU11の制御に従いハードディスクにデータのリード/ライトを実行する。FDD15は、CPU11の制御にしたがってFD15aに対するデータのリード/ライトを制御する。FD15aは、FDD15の制御で書き込まれたデータを記憶したり、FD15aに記憶されたデータを設計装置10に読み取らせたりする。また、着脱可能な記録媒体としてFD15aのほか、コンピュータで読み取り可能な記録媒体として、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(DigitalVersatileDisc)、DVD−RAM(RandomAccessMemory)、CD−ROM(CompactDiscReadOnlyMemory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Opticaldisk)などがある。
【0023】
入力I/F16は、マウスやキーボードが接続され、ユーザが入力した情報を受信し、バス111を介してCPU11に送信する。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスは、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【0024】
通信I/F17は、必要に応じ、他のコンピュータとの間のLAN接続やインターネット接続や無線接続のためのインタフェースである。通信回線を通じてインターネットなどのネットワークを介して他の装置に接続される。そして、ネットワーク18と内部のインタフェースは、外部装置からのデータの入出力を制御する。例えば、モデムやLANアダプタなどを採用することができる。
【0025】
出力I/F19は、プリンタなどの出力装置19aを制御するために備えられている。また、グラフィック処理部110には、ディスプレイなどの表示装置110aが接続され、グラフィック処理部110は、CPU11からの描画命令に従って表示装置110aの画面上に操作情報、論理シミュレーション後のログやカバレッジの集計結果、信号波形等を表示する。例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。なお、グラフィック処理部110を介さずに、出力I/F19から表示装置と接続してもよい。
(本発明の原理)
ハードウェア設計装置には、入力装置16aから入力されたHDL(Hardware Description Language:ハードウェア記述言語)や回路図レベルで入力されたソースに基づいて論理合成をし、レイアウトおよびパターンを生成する。図2は本発明の原理を示す機能ブロック図である。図2に示すクロックツリーを最適化するブロックであるクロックツリー生成部21は、CPU11にHDD14やROM12に記録されている。クロックツリー生成部21は、ホールドスラック計算部22、バッファ遅延計算部23、FF対集合操作部24、バッファ挿入部25、ホールドスラック再計算部26などから構成されている。
【0026】
クロックツリー生成部21では、上記ソースに基づいてHDD14などに記録されたライブラリ(部品情報、パターン情報等の回路配置に関する情報ライブラリ)からデータを選択し、回路配置に関するデータ(回路配置情報)を生成する。このデータを入力データ27としてホールドスラック計算部22に入力する。
【0027】
そして、入力データ27のクロックツリー回路のFF対に該当する部分の経路に対して、クロックスキューがない状態(ideal mode)でタイミング解析を行い、初期のホールドスラック値を求める。ホールドスラック値とはホールドエラーが発生する基準値に対してどのくらいの余裕があるかを示す値である。
【0028】
バッファ遅延計算部23では、クロックツリーの製造ばらつきを考慮したバッファ(ゲートセルなどの素子)の遅延値の最小値、最大値を計算し記憶する。ここでFF対の分岐点となるバッファから2つのFF入力までの各経路に対して、上記ライブラリに登録されている回路配置情報の部品情報などから読み出したバッファの遅延データに基づき計算をする。本例ではライブラリのバッファに関するデータの遅延の最小値、最大値を使用して計算をする。計算結果はRAM13などに記録する。
【0029】
FF対集合操作部24では、処理済みのFF対、未処理のFF対の集合を記録する。クロックツリーを最適化する以前のデータ(未処理のFF対)と最適化後のFF対(処理済)を記録する。クロックツリーに用いられているバッファの回路配置情報に基づきクロックツリーの分岐点となるバッファからFF対ごとのフリップフロップ入力間の経路に対して、経路の遅延の最小値、最大値を計算し記録する。そして、経路ごとにホールドスラック値と最大値から最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合はFF対をグループ化するFF対集合操作部24で処理をする。
【0030】
バッファ挿入部25では、FF対のホールドスラック値とバッファ遅延計算部23において計算されたばらつきを考慮して、バッファの遅延の最小値、最大値に基づいて同一グループのFF対の経路ごとに、FF対が同一のバッファで駆動するようにバッファを挿入するバッファ挿入処理を行う。
【0031】
次にホールドスラック再計算部26では、バッファ挿入に応じてFF対の再計算を行う。同一グループのFF対の経路ごとに、FF対が同一のバッファで駆動するようにバッファを挿入するバッファ挿入処理をする。その後出力データ28を生成し回路配置に使用する。
(本実施例のフロー)
図3はクロックツリー生成手法について示したフロー図である。上記説明したように、ステップS21では、クロックスキュー=0でタイミング解析を行い、パスが存在するFF対に対して図4に示すようにFF間のホールドスラック値を計算する。
【0032】
ステップS22では、バッファ挿入に使用するバッファに対して、ばらつきを考慮した遅延の最小値(Tmin)、最大値(Tmax)を計算する。
ステップS23では、(該当FF対のホールドスラック値)<(Tmax−Tmin)であるFF対は、同じバッファで駆動するようにバッファを挿入する。
【0033】
次に、バッファ挿入において使用するバッファに対して、ばらつきが発生したケースでの遅延(Tmin,Tmax)を計算する。このとき、例えばバッファの入力端子条件、出力端子条件に許容される最悪の条件を与えて計算すれば、最もばらついた場合のバッファ遅延(Tmin,Tmax)が計算される。そして、最初に求めた各FF対のホールドスラック値と、ばらつきが発生したときのスキュー値(Tmax−Tmin)を比較する。その結果が、ホールドスラック値<スキュー値(Tmax−Tmin)の関係になっているFF対に対しては、同じバッファで駆動するようにバッファの挿入を行う。
【0034】
これは、異なるバッファで駆動すると、ばらつきによるスキューによりホールドエラーが発生してしまうからである。
図5(a)に示す場合は、バッファ51からFF54のルートにバッファ52がある。またFF55までの間にはバッファ53が配置されている。このような場合、上記説明したようにホールドスラック値<(Tmax−Tmin)の関係であると、別々のバッファ52、53で駆動した場合ホールドエラーが発生する。しかし図5(b)のようにバッファ56から分岐するようにすれば、同じバッファで駆動しているため、バッファばらつきの影響を受けないので、ホールドエラーが発生しない。このようにして、ホールドスラック値と遅延(Tmin、Tmax)の関係に着目し、FF直前のバッファを挿入したあと、同様の手法で2段目のバッファを挿入する。なお、1段目で挿入したバッファのばらつきによるクロックスキューを含めてバッファ挿入を行う。この処理を繰り返し行うことにより、ホールドエラーの発生を確実に防止するようなバッファ挿入が可能となる。
【0035】
上記構成により、製造ばらつきによるホールドエラーの発生を抑えられるクロックツリーが生成できる。
(実施例2)
実施例2(繰り返しありのケース)のフローチャートを図6に示す。
【0036】
ステップS61では、クロックスキュー=0(ideal mode)でタイミング解析を行い、パスが存在するFF対に対してホールドスラック値を計算する。図7に示すようにFF1〜FF8までのホールドスラック値が算出される。例えば(FF1,FF2)=50ps、(FF2,FF3)=150ps、(FF3,FF4)=50ps、(FF4,FF5)=250ps、(FF5,FF6)=50ps、(FF6,FF7)=150ps、(FF7,FF8)=50psである。
【0037】
ステップS62では、バッファ挿入に使用するバッファに対して、ばらつきを考慮した遅延の最小値、最大値(Tmin,Tmax)を計算する。例えば挿入バッファの特性を、早い時の遅延(min)をTmin=200psとし、遅い時の遅延(max)をTmax=300psとして計算する。
【0038】
ステップS63では、パスが存在するFF対すべてを未処理FF対集合に追加して記録する。未処理FF対集合にFF対間のパスを追加する。また仮未処理対集合を空とする。
未処理FF対集合={(FF1,FF2),(FF2,FF3),(FF3,FF4),(FF4,FF5),(FF5,FF6),(FF6,FF7),(FF7,FF8)}
仮未処理FF対集合={ }(空集合)
ステップS64では、未処理FF対集合が空であるかを判断する。すべてのFF対について最適化を完了している場合は、クロックツリー生成部の処理を終了する。まだ、未処理のFF対がある場合はステップS65に移行する。
【0039】
ステップS65では、未処理FF対集合中のすべてのFF対に対して処理をしたかを確認する。処理をしている場合はステップS610に移行する。処理をしていない場合はステップS66に移行する。
【0040】
ステップS66では、未処理FF対集合の各FF対のホールドスラック値が、ホールドスラック値<(Tmax−Tmin)の関係を満たしているかを判定する。満たしている場合はステップS67に移行する。そうでない場合はステップS68に移行する。
【0041】
ステップS67では、上記FF対がステップS66の条件を満たしているFF対からなるグループに記録し同一グループ化する。ステップS68では、S66の条件を満たさないFF対は、仮未処理FF対集合に追加記録する。その後、ステップS69で、上記S66の対象であるFF対を未処理FF対集合から削除する。
【0042】
ステップS610では、実施例1で説明したように、上記同一グループに属しているFF対が同一バッファで駆動されるようにバッファを挿入する。
図8(a)に上記ステップS65〜S610の処理結果を示す(FF直前:FFから数えて1段目のバッファの挿入)。
【0043】
その結果、グループ1={FF1,FF2}、グループ2={FF3,FF4}、グループ3={FF5,FF6}、グループ4={FF7,FF8}の各グループに対して、バッファ(buf1,buf2,buf3,buf4)の挿入を行う。
【0044】
また、この段階でホールドスラック値<Tmax−TminでないFF対は仮未処理ペア集合に追加されている。
仮未処理FF対集合={(FF2,FF3),(FF4,FF5),(FF6,FF7)}
ステップS611では、上記仮未処理FF対集合に属するFF対を未処理FF対集合に追加し、仮未処理FF対集合からは削除する。未処理FF対集合に仮未処理FF対集合に属するFF対を追加する。
【0045】
未処理FF対集合={(FF2,FF3),(FF4,FF5),(FF6,FF7)}
また、仮未処理対集合を空とする。仮未処理FF対集合={ }(空集合)
ステップS612では、未処理FF対集合に属するFF対のホールドスラック値を再計算する。現在のホールドスラックからクロックスキュー値(Tmax−Tmin)を減算して新しいホールドスラック値とする。
【0046】
そしてステップS64に移行する。図8(b)に示すように未処理FF対集合{(FF2,FF3),(FF4,FF5),(FF6,FF7)}について、ホールドスラック値を再計算する。
【0047】
次に、FFから数えて2段目のバッファ挿入に関してステップS65〜S610までの処理を再度行う。また、ホールドスラック値<Tmax−TminであるFF対に相当するバッファをグループ化(グループ5=(Buf1,Buf2)、グループ6=(Buf3,Buf4))する。
【0048】
各グループに対して、バッファ(buf5,buf6)挿入を行うことで、図8(c)に示すようにバッファが挿入される。また、この段階でホールドスラック値<Tmax−Tminの条件を満たさないFF対は仮未処理FF対集合に追加されている。仮未処理FF対集合={(FF4,FF5)}
さらに、FFから数えて3段目のバッファ挿入に関してステップS65〜S610までの処理をする。ホールドスラック値<Tmax−TminであるFF対に相当するバッファをグループ化(グループ7={Buf5,Buf6})する。
各グループに対して、バッファ(buf7)の挿入を行う。
【0049】
また、この段階でホールドスラック値<Tmax−TminでないFF対は仮未処理ペア集合に追加されているが、本例では全て処理されたので仮未処理FF対集合={ }(空集合)となる。
【0050】
この後、フロー図のステップS64の処理に移行して終了する。このように繰り返し処理を行った結果、各FF対への分岐点が、図8(d)に示すような1つのFF対に対して1つの駆動バッファを挿入した構成となる。そのため、製造ばらつきによるホールドエラーの発生を抑えられたクロックツリーが生成できる(図9参照)。
【0051】
なお、このようなハードウェア構成を有するコンピュータを1台または2台以上用いることによって、上記説明した各種処理機能が実現される。その場合システムが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【0052】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0053】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次受け取ったプログラムに従った処理を実行することもできる。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
【0054】
(付記1)
ハードウェア設計装置による半導体集積回路のクロックツリーの形成方法であって、
前記ハードウェア設計装置に記録されている回路配置情報に基づいて、クロックツリー回路のFF対のフリップフロップ間の経路に対して、クロックスキューがない状態でタイミング解析を行い、ホールドエラーが発生する基準値に対しての余裕度としてホールドスラック値を求めるホールドスラック計算処理と、
前記クロックツリー回路に用いられているバッファの前記回路配置情報に基づき前記クロックツリー回路の分岐点となる前記バッファから前記FF対ごとの前記フリップフロップ入力間の経路に対して、前記経路の遅延の最小値、最大値を計算し記憶するバッファ遅延計算処理と、
前記経路ごとに前記ホールドスラック値と前記最大値から前記最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合は前記FF対をグループ化するFF対集合操作処理と、
同一の前記グループの前記FF対の前記経路ごとに、前記FF対が同一の前記バッファで駆動するように前記バッファを挿入するバッファ挿入処理処理を行うことを特徴とするクロックツリー形成方法。
(付記2)
前記バッファ挿入処理で生成した結果に対して再度ホールドスラック値の計算を行うホールドスラック再計算処理をし、
前記ホールドスラック再計算処理の値に基づいて前記FF対集合操作処理から再処理をし、前記経路ごとに前記比較の結果がホールドスラック値より小さいと判断されるまで処理をすることを特徴とする付記1に記載のクロックツリー形成方法。
(付記3)
半導体集積回路のクロックツリーの形成設計を実行するプログラムであって、
前記ハードウェア設計装置に記録されている回路配置情報に基づいて、クロックツリー回路のFF対のフリップフロップ間の経路に対して、クロックスキューがない状態でタイミング解析を行い、ホールドエラーが発生する基準値に対しての余裕度として初期のホールドスラック値を求めるホールドスラック計算機能と、
前記クロックツリー回路に用いられているバッファの前記回路配置情報に基づき前記クロックツリー回路の分岐点となる前記バッファから前記FF対ごとの前記フリップフロップ入力間の経路に対して、前記経路の遅延の最小値、最大値を計算し記憶するバッファ遅延計算機能と、
前記経路ごとに前記ホールドスラック値と前記最大値から前記最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合は前記FF対をグループ化するFF対集合操作機能と、
同一の前記グループの前記FF対の前記経路ごとに、前記FF対が同一の前記バッファで駆動するように前記バッファを挿入するバッファ挿入機能と、
を有するプログラムでありコンピュータが実行可能な半導体集積回路のクロックツリーの形成設計プログラム。
(付記4)
前記バッファ挿入機能で生成した結果に対して再度ホールドスラック値の計算を行い、再度計算したホールドスラック値に基づいて前記FF対集合操作機能から再処理をして、前記経路ごとに前記比較の結果がホールドスラック値より小さいと判断されるまで処理することを特徴とする付記3に記載のコンピュータが実行可能な半導体集積回路のクロックツリーの形成設計プログラム。
(付記5)
半導体集積回路のクロックツリーの形成設計を行うのためのプログラムを記録した記録媒体であって、
前記ハードウェア設計装置に記録されている回路配置情報に基づいて、クロックツリー回路のFF対のフリップフロップ間の経路に対して、クロックスキューがない状態でタイミング解析を行い、ホールドエラーが発生する基準値に対しての余裕度として初期のホールドスラック値を求めるホールドスラック計算機能と、
前記クロックツリー回路に用いられているバッファの前記回路配置情報に基づき前記クロックツリー回路の分岐点となる前記バッファから前記FF対ごとの前記フリップフロップ入力間の経路に対して、前記経路の遅延の最小値、最大値を計算し記憶するバッファ遅延計算機能と、
前記経路ごとに前記ホールドスラック値と前記最大値から前記最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合は前記FF対をグループ化するFF対集合操作機能と、
同一の前記グループの前記FF対の前記経路ごとに、前記FF対が同一の前記バッファで駆動するように前記バッファを挿入するバッファ挿入機能と、
をコンピュータで実行させるための実行可能な半導体集積回路のクロックツリーの形成設計プログラムを記録したコンピュータで読み取り可態な記録媒体。
(付記6)
前記バッファ挿入機能で生成した結果に対して再度ホールドスラック値の計算を行い、再度計算したホールドスラック値に基づいて前記FF対集合操作機能から再処理をして、前記経路ごとに前記比較の結果がホールドスラック値より小さいと判断されるまで処理することを特徴とする付記5に記載のコンピュータで実行可能な半導体集積回路のクロックツリーの形成設計プログラムを記録したコンピュータで読み取り可態な記録媒体。
【図面の簡単な説明】
【0055】
【図1】本発明を実現させるためのシステム構成を示した図である。
【図2】実施例1の機能ブロック図である。
【図3】実施例1のフローを示す図である。
【図4】FF対のホールドスラックを示す図である。
【図5】同一のバッファを使用して最適をした図である。
【図6】実施例2のフローを示す図である。
【図7】FF対間のパスのホールドスラック値を計算
【図8】実施例2のフローの説明図である。
【図9】最適化後の配置を示す図である。
【図10】従来の設計による製造ばらつきを示す図である。
【図11】従来のゲートセルの遅延を示した図である。
【図12】設計上の回路に基づいて、セットアップ解析、ホールド解析を示す図である。
【図13】製造ばらつきを考慮した設計を示した図である。
【図14】従来のパスにバッファを挿入した時の図である。
【符号の説明】
【0056】
10 設計装置
11 CPU
12 ROM
13 RAM
14 ハードディスクドライブ(HDD)
15 フレキシブルディスクドライブ(FDD)
15a FD
16 入力インタフェース(入力I/F)
16a 入力装置
17 通信インタフェース(通信I/F)
18 通信回線
19 出力インタフェース(出力I/F)
19a 出力装置
110 グラフィック処理部
110a 表示装置
111 バス
21 クロックツリー生成部
22 ホールドスラック計算部
23 バッファ遅延計算部
24 FF対集合操作部
25 バッファ挿入部
26 ホールドスラック再計算部
27 入力データ
28 出力データ
51、52、53、56 バッファ
54、55 FF(フリップフロップ)

【特許請求の範囲】
【請求項1】
ハードウェア設計装置による半導体集積回路のクロックツリーの形成方法であって、
前記ハードウェア設計装置に記録されている回路配置情報に基づいて、クロックツリー回路のFF対のフリップフロップ間の経路に対して、クロックスキューがない状態でタイミング解析を行い、ホールドエラーが発生する基準値に対しての余裕度としてホールドスラック値を求めるホールドスラック計算処理と、
前記クロックツリー回路に用いられているバッファの前記回路配置情報に基づき前記クロックツリー回路の分岐点となる前記バッファから前記FF対ごとの前記フリップフロップ入力間の経路に対して、前記経路の遅延の最小値、最大値を計算し記憶するバッファ遅延計算処理と、
前記経路ごとに前記ホールドスラック値と前記最大値から前記最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合は前記FF対をグループ化するFF対集合操作処理と、
同一の前記グループの前記FF対の前記経路ごとに、前記FF対が同一の前記バッファで駆動するように前記バッファを挿入するバッファ挿入処理を行うことを特徴とするクロックツリー形成方法。
【請求項2】
前記バッファ挿入処理で生成した結果に対して再度ホールドスラック値の計算を行うホールドスラック再計算処理をし、
前記ホールドスラック再計算処理の値に基づいて前記FF対集合操作処理から再処理をし、前記経路ごとに前記比較の結果がホールドスラック値より小さいと判断されるまで処理をすることを特徴とする請求項1に記載のクロックツリー形成方法。
【請求項3】
半導体集積回路のクロックツリーの形成設計を実行するプログラムであって、
前記ハードウェア設計装置に記録されている回路配置情報に基づいて、クロックツリー回路のFF対のフリップフロップ間の経路に対して、クロックスキューがない状態でタイミング解析を行い、ホールドエラーが発生する基準値に対しての余裕度として初期のホールドスラック値を求めるホールドスラック計算機能と、
前記クロックツリー回路に用いられているバッファの前記回路配置情報に基づき前記クロックツリー回路の分岐点となる前記バッファから前記FF対ごとの前記フリップフロップ入力間の経路に対して、前記経路の遅延の最小値、最大値を計算し記憶するバッファ遅延計算機能と、
前記経路ごとに前記ホールドスラック値と前記最大値から前記最小値を減算した結果を比較して、ホールドスラック値より大きいと判断された場合は前記FF対をグループ化するFF対集合操作機能と、
同一の前記グループの前記FF対の前記経路ごとに、前記FF対が同一の前記バッファで駆動するように前記バッファを挿入するバッファ挿入機能と、
を有するプログラムでありコンピュータが実行可能な半導体集積回路のクロックツリーの形成設計プログラム。
【請求項4】
前記バッファ挿入機能で生成した結果に対して再度ホールドスラック値の計算を行い、再度計算したホールドスラック値に基づいて前記FF対集合操作機能から再処理をして、前記経路ごとに前記比較の結果がホールドスラック値より小さいと判断されるまで処理することを特徴とする請求項3に記載のコンピュータが実行可能な半導体集積回路のクロックツリーの形成設計プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2007−183887(P2007−183887A)
【公開日】平成19年7月19日(2007.7.19)
【国際特許分類】
【出願番号】特願2006−2958(P2006−2958)
【出願日】平成18年1月10日(2006.1.10)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】