(57)【要約】【解決手段】回路の実現可能なフロアプラン（ｆｌｏｏｒｐｌａｎ）を回路設計の初期の段階で決定し、配分（ｂｕｄｇｅｔ）を行う。フロアプランと配分の決定処理は、ＲＴＬの複雑さの見積り、物理的パーティショニング、ブロック配置、ブロックのＩ／Ｏ配置、トップレベルの全体的な配線（ｒｏｕｔｉｎｇ）、及びフロアプランの実現可能性（ｆｅａｓｉｂｉｌｉｔｙ）の検証を含む。各ブロックへの全体の制約の分配（ａｌｌｏｃａｔｉｏｎ）は各ブロックにおいて回路パスのタイミングを表す論理コーンを作成することにより行われる。回路パスを最適化して各ブロックについて実現可能なタイミングを決める。各ブロックで実現可能なタイミングに基づいて全体の制約を比率に応じて各ブロックに分配する。【選択図】図１
2004513436.tif 000002
【特許請求の範囲】
【請求項１】
回路について配分されたフロアプランを決定するフロアプラン配分方法において、
上記回路のタイミングを初期化するタイミング初期化ステップと、
上記回路について物理的配分を行う物理的配分ステップと、
上記回路をゲートのブロックに分割する分割ステップと、
上記ブロックの配置を特定するブロック配置ステップと、
上記ブロックのそれぞれに時間を配分する時間配分ステップとを有するフロアプラン配分方法。
【請求項２】
上記タイミング初期化ステップは、
上記回路の高位記述から柔軟なタイミングモデルのセットを作成する柔軟タイミングモデルステップと、
上記回路に適用する一般制約のセットを作成する一般制約ステップとを有することを特徴とする請求項１記載のフロアプラン配分方法。
【請求項３】
上記高位記述はＲＴＬ、Ｖｅｒｉｌｏｇ、又は上記回路を記述するその他の高位記述言語のうち少なくとも１つであることを特徴とする請求項２記載のフロアプラン配分方法。
【請求項４】
上記柔軟タイミングモデルステップは、
上記高位記述から最適化していないネットリストを作成するネットリスト作成ステップと、
各ノード結合論理素子が上記最適化していないネットリストからゲートのセットを表し、該ゲートのセットにより規定されるタイミングアーク（パス）を特定する、論理コーンのセットを作成する論理コーンステップとを有することを特徴とする請求項２記載のフロアプラン配分方法。
【請求項５】
上記物理的配分ステップは、上記回路のコンポーネント間に使用可能な時間を分配することであり、
上記各々のコーンにおける正のスラックを上記コーンの中で込み合ったアークのそれぞれに分配する正スラック分配ステップと、
（コーン内部の）正のスラックを該コーンにおける各柔軟アークに分配するステップと、
（コーン内部の）負のスラックを該コーンにおける各凍結アークから回収するステップとを有することを特徴とする請求項４記載のフロアプラン配分方法。
【請求項６】
上記正スラック分配ステップは、
各コーン内部の配分されるアーク遅延をゼロに設定するステップと、
アークの重みを各コーンの柔軟部に係る最速のインプリメンテーションの関数として設定するステップと、
到着時刻伝搬法によりタイミングを伝搬するステップと、
アークの重みを伝搬するステップと、
込み合ったコーンを検出するステップと、
込み合ったコーンにおけるスラックを分配するステップと、
込み合ったコーンにおける重みを更新するステップとを有することを特徴とする請求項５記載のフロアプラン配分方法。
【請求項７】
上記物理的配分ステップは、柔軟なタイミングモデルのセットを使用して上記回路のコンポーネント間に使用可能な時間を分配する使用可能時間分配ステップからなることを特徴とする請求項２記載のフロアプラン配分方法。
【請求項８】
上記使用可能時間分配ステップは、
上記各々の柔軟なタイミングモデルにおける正のスラックを上記モデルの中で込み合ったアークのそれぞれに分配する正スラック分配ステップと、
正のスラックを上記モデルにおける各柔軟アークに分配するステップと、
負のスラックを上記モデルにおける各凍結アークから回収するステップとを有することを特徴とする請求項７記載のフロアプラン配分方法。
【請求項９】
上記分割ステップは、
１以上の上記ブロックを通るタイミングパスの数を最小化するステップと、
タイミングのクリティカルパスに係るブロックのオーナーシップを制限するステップとを有することを特徴とする請求項１記載のフロアプラン配分方法。
【請求項１０】
上記分割ステップは、上記回路に対してタイミングドリブンブロック分割を行うタイミングドリブンブロック分割ステップであることを特徴とする請求項１記載のフロアプラン配分方法。
【請求項１１】
上記タイミングドリブンブロック分割ステップは、
クリティカルなブロックサイズに係る寄生を決定するステップと、
ゲートの遅延及び柔軟なモデルの遅延を上記寄生の関数として算出するステップと、
算出したゲートの遅延及び柔軟なモデルの遅延を用いて、上記回路に係る結線されたクリティカルパスのセットを上記クリティカルなブロックサイズより小さな同一の物理的ブロックに収納するステップとを有することを特徴とする請求項１０記載のフロアプラン配分方法。
【請求項１２】
上記ブロック配置ステップは、
上記回路のブロック分割に基づいて寄生を見積もるステップと、
ゲートの遅延及び柔軟なモデルの遅延を上記寄生の関数として算出するステップと、
上記ゲートの遅延及び柔軟なモデルの遅延の算出結果からネットの重みを算出するステップと、
ネットの重みより軽いブロックは密に又は高速配置で配置され、ネットの重みより重いブロックは疎に配置されるように、各ブロックに係るネットの重みの量に基づいて上記ブロックを配置するステップとを有することを特徴とする請求項１記載のフロアプラン配分方法。
【請求項１３】
ブロック間の配線を決める配線ステップと、
上記ブロックに対してＩ／Ｏデバイスを配置するＩ／Ｏ配置ステップとを更に有する請求項１記載のフロアプラン配分方法。
【請求項１４】
上記配線及びＩ／Ｏ配置ステップは、
上記回路のブロック配置に基づいて寄生を見積もるステップと、
ゲートの遅延及び柔軟なモデルの遅延を上記寄生の関数として算出するステップと、
ブロック間ネットを含むパスの柔軟性に基づいてブロック間ネットに係るタイミング配分を作成するステップと、
上記タイミング配分を用いて、ブロック端末割当、チャネル圧縮、及びネットバッハリングのうち少なくとも１つを行うステップとを有することを特徴とする請求項１３記載のフロアプラン配分方法方法。
【請求項１５】
上記時間配分ステップは、
上記回路の全体的な配線に基づいて寄生を見積もるステップと、
ゲートの遅延及び柔軟なモデルの遅延を上記寄生の関数として算出するステップと、
算出したゲートの遅延及び柔軟なモデルの遅延に基づいて使用可能な時間を決定するステップと、
上記回路の各ブロック間で上記使用可能な時間を分配するステップとを有することを特徴とする請求項１記載のフロアプラン配分方法方法。
【請求項１６】
先行する、少なくとも１つの上記ステップの後、上記回路のタイミングを検証する検証ステップを更に有する請求項１記載のフロアプラン配分方法方法。
【請求項１７】
上記検証ステップは、
上記一般制約に比較して上記タイミング検証を考慮すると上記フロアプラン設計の現段階が実現可能でないことを上記タイミング検証が示している場合に、
上記回路の上記高位記述及び上記一般制約のうち少なくとも１つを変更するステップと、
上記タイミング検証に直前で先行する、１以上の上記ステップを再度実行するステップとを有することを特徴とする請求項１６記載のフロアプラン配分方法方法。
【請求項１８】
回路の全体的なタイミング制約を該回路のサブブロック間で分配する全体的なタイミング制約分配方法において、
各ブロックについてＲＴＬ又はその他の高位記述を提供するステップと、
上記ＲＴＬに基づき、各ブロックについて最適化されていない未最適化ネットリストを作成するステップと、
ブロック内部のタイミングアークを特定する、各ブロックの未最適化ネットリストからノード結合論理素子（以下、論理コーンという）のセットを作成するコーン作成ステップと、
上記論理コーンを用いて、各ブロック内部のタイミングアークを最適化する最適化ステップと、
各ブロックにおいて最適化したタイミングアークに基づいて、上記全体的なタイミング制約を各ブロックに分配する分配ステップとを有する全体的なタイミング制約分配方法。
【請求項１９】
上記コーン作成ステップは、
各グループ内において、各ゲートの出力はそのグループに属する他のゲートの１入力のみを駆動するが、最後のゲートについてはブロックの出力、又はブロックにおける他のグループの複数の入力を駆動してよいように、各ブロックにある関連するゲートについてグループ分けを行うステップと、
各タイミングパスに係る柔軟性を含んで、関連するゲートの上記各グループを介してタイミングアークを数学的に記述するステップと、
各グループ内において、上記数学的に記述したタイミングアークの各々を上記コーンの１つとしてグループ分けするステップとを有することを特徴とする請求項１８記載の全体的なタイミング制約分配方法。
【請求項２０】
上記最適化ステップは、
上記ブロックについて最高速の全体タイミングを決定するために、１以上の上記コーンに係るタイミングアークを調整するステップであることを特徴とする請求項１８記載の全体的なタイミング制約分配方法。
【請求項２１】
上記分配ステップは、
各ブロックの各コーンを通る最長のタイミングに基づいて、各ブロックの最適化タイミングを決定するステップと、
各ブロックに係る最適化タイミングの比率に基づいて上記全体的なタイミング制約の比率を各ブロックに分配するステップとを有することを特徴とする請求項１８記載の全体的なタイミング制約分配方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本特許書類の開示の一部には著作権の保護対象が含まれる。著作権者は何人も特許商標局の特許ファイル又は記録に示された形で特許書類又は特許開示をファクシミリ複製することについては異議はないが、その他の点については全著作権を保有する。
【０００２】
本発明は、回路設計を合成する方法及びシステムに関する。詳細には、本発明は、各ブロックに対して適した（ｆｅａｓｉｂｌｅ）フロアプラン（ｆｌｏｏｒｐｌａｎ）を決定し、各ブロックに対してタイミング及び設計ルールの制約（ｃｏｎｓｔｒａｉｎｔｓ）を割り当てる（ａｌｌｏｃａｔｉｏｎ）配分技術（ｂｕｄｇｅｔｉｎｇ ｔｅｃｎｉｑｕｅｓ）を用いて、回路設計のそれぞれの部分（ブロック）を並列的（ｃｏｎｃｕｒｒｅｎｔ）に合成する方法及びシステムに関する。
【０００３】
【従来の技術】
最も利用可能な従来の合成ツールでは、設計者が取り扱える回路設計のゲート数は、所定のゲート換算数（例えば１００，０００）までである。設計者は、所定のゲート換算数を超えるチップを設計する場合、従来の合成ツールで全回路設計を行えるようにするためには、回路設計を小さな部分（例えばサブブロック）に手動で分割しなければならない。また、ブロックの設計作業を異なるチームで分担するために、パーティショニング（ｐａｒｔｉｏｎｉｎｇ）を行うときでも、回路設計のプロジェクトをより小さな管理しやすいコンポーネントに分割する。サブブロックによる設計は、階層設計（ｈｉｅｒａｒｃｈｉｃａｌ ｄｅｓｉｇｎ）と呼ばれることもある。回路設計をより小さなサブブロックに分割することは、設計者にとって普通の手順であり、これにより、従来の合成ツールを用いて全ての回路設計を合成することができる。
【０００４】
しかしながら、上述の手順において、タイミング及び論理設計ルールの制約（ｃｏｎｓｔｒａｉｎｔｓ）をチップの最上位の観点から（ｔｏｐ−ｌｅｖｅｌ ｖｉｅｗ）サブブロックに適用される局所的な制約（ｌｏｃａｌ ｃｏｎｓｔｒａｉｎｔｓ）に変換することは困難である。局所的に配分された制約は、公称タイミング性能をサブブロックに与える割当（ａｌｌｏｃａｔｉｏｎ）の結果である。全ての設計を１回の完全な合成で行うのではなく、サブブロックを合成ツールに読み込んで、幾つかのサブブロックの合成を（最終的には並列的に）実行するためには、タイミング及び論理設計ルールの割当が必要である。
【０００５】
全体の制約をサブブロックに適用される局所制約に変換する操作は、対応するサブブロックの特徴化（ｃｈａｒａｃｔｅｒｉｚａｔｉｏｎ）と呼ばれる。全体の制約を配分された局所制約に変換する操作は、タイミング及び設計ルールの制約の割当（ｃｏｎｓｔｒａｉｎｔｓ ａｌｌｏｃａｔｉｏｎ）と呼ばれる。
【０００６】
サブブロックに対するタイミング及び設計ルールの制約の割当は、チームリーダーが各技術者に１つのサブブロックの合成を分担させるような場合に有効である。技術者は並行して作業を行うためには、各技術者は、自分が担当するサブブロックに割り当てられるタイミング及び論理設計ルールの制約を必要とする。この状況において、サブブロックのタイミング及び設計ルールの制約の割当は、合成のスクリプト（ｓｃｒｉｐｔ）を提供しなければならない。この結果、この操作は合成自体よりも前に行わなければならない。
【０００７】
ＲＴＬのフロアプランナ（ｆｌｏｏｒｐｌａｎｎｅｒ）ツールに関する上述した状況のより詳細な説明が、１９９７年８月２９日に出願され、係属中の米国特許出願番号０８／９２１３６１号、発明の名称（回路設計のフロアプランニングを抽象度が高いレベルで行う方法及びシステム「Ｍｅｔｈｏｄ ａｎｄ Ｓｙｓｔｅｍ ｆｏｒ Ｆｌｏｏｒｐｌａｎｎｉｎｇ ａ Ｃｉｒｃｕｉｔ Ｄｅｓｉｇｎ ａｔ ａ Ｈｉｇｈ Ｌｅｖｅｌ ｏｆ Ａｂｓｔｒａｃｔｉｏｎ」）に記載されており、この出願の内容は、参照することにより本願に組み込まれる。
【０００８】
タイミングの割当は、任意に、全時間量を各ブロック又は各サブブロックに単純に割り当てるか、全時間量をブロック間で等しく分けるか、あるいは式（ｆｏｒｍｕｌａ）に基づいて割り当てるかによって行われている。全体の制約から局所的なブロック／サブブロックの制約へのタイミングの割当の一例が、ギネッチ（ｇｕｉｎｅｔｔｉ）等の米国特許第６０８６６２１号（’６２１）に記載されており、この米国特許は、参照することにより、完全に本願に組み込まれる。ギネッチ（’６２１）において、配分された実際のゲートの経路長を考慮した式を用いて、タイミング配分を分割することが教示されている。
【０００９】
【発明が解決しようとする課題】
しかしながら、従来のサブブロックへのタイミングの割当技術は、任意か、等分配か、式によるかに拘わらず、いずれも精度が悪く、一部のブロックは制約過小になり（ｕｎｄｅｒ−ｃｏｎｓｒａｉｎｅｄ）、他のブロックは制約過大になる（ｏｖｅｒ−ｃｏｎｓｔｒａｉｎｅｄ）。
【００１０】
【課題を解決するための手段】
本出願の発明者は、ブロック配置、ブロック間のタイミング等の基になる高レベル（ｈｉｇｈ ｌｅｖｅｌ）の回路設計（例えばＲＴＬ）は、ブロック内及びブロック間に適したフロアプラン及びタイミング制約を割り当てることができるようにするためには、より優れた配分を、特に回路設計の初期段階で行う必要があるということを、認識している。
【００１１】
本発明はＲＴＬ記述から実現可能な配分した最適フロアプランを作成し、フロアプランに係るブロックについてタイミング制約のセットを決定する物理的バジェッタ（ｐｈｙｓｉｃａｌ ｂｕｄｇｅｔｏｒ）を提供する。フロアプランは一連の配置した物理的ブロック、配置した物理的ブロックのＩ／Ｏ、外部Ｉ／Ｏ、全体的な配線最上位レベルの配線（ｒｏｕｔｅｄ ｔｏｐ ｌｅｖｅｌ ｗｉｒｅ）、及び物理的ブロックと初期論理階層（ｉｎｉｔｉａｌ ｌｏｇｉｃａｌ ｈｉｅｒａｒｃｈｙ）間の対応である。更に、物理的バジェッタは各ブロックについて一連の配分して制約を発生する。これらの配分した制約はフロアプラン作成の際に物理的バジェッタにより実行されるタイミングの見積り及び分配に対応している。実現可能の意味において、伝統的な合成及び配置兼配線（ｐｌａｃｅ ａｎｄ ｒｏｕｔｅ：以下、Ｐ＆Ｒという）ツールはタイミング制約を考慮しつつそのフロアプラン内でＲＴＬ記述をインプリメント可能であるべきである。タイミング制約が厳しすぎれば、物理的バジェッタはユーザに対して変更の候補（例えば一部のＲＴＬ記述の変更や一部のタイミング制約の放棄）をアドバイスする。実現可能の意味において、フロアプランは可能限り小さい方がよい。
【００１２】
１つの具体例において、物理的バジェッタはＲＴＬ記述と一部の制約から、以下のステップによりフロアプランを作成する。
【００１３】
１）ＲＴＬ記述の複雑さを見積もる。
２）物理的分割を行う、すなわちＲＴＬセル（ｃｅｌｌｓ）の階層ネットリストから結線した（ｉｎｔｅｒｃｏｎｎｅｃｔｅｄ）物理的ブロックのリストを作成する。
３）ブロック配置を行う。
４）ブロックのＩ／Ｏ配置と最上位レベルの全体的な配線を行う。
５）フロアプランが実現可能か検証する。
各ステップは、ブロックタイミング／全体的なタイミング及びフロアプランニングについて全体的な視点を持つ、単一のツールである物理的バジェッタにより実行され、そのなかで、ＣＰＵ集中（ｉｎｔｅｎｓｉｖｅ）ステップの各々は高速で精度の良い見積り器（ｅｓｔｉｍａｔｏｒｓ）に（初期の見積りと初期の反復（ｉｔｅｒｒａｔｉｏｎ）時に）置換される。
【００１４】
一旦ブロックを配置した後、本発明は様々なブロック間でタイミングの分配を行い、ブロックをインプリメントするのに要求されるタイミングの確かな見積りを求める。タイミング分配はＲＴＬから作成した未最適化ネットリストのゲートから論理コーンを識別することにより定められる。ここで論理コーンを用いてタイミングを調整し、ゲートについて基本的な高位の最適化を図り、ブロックタイミングについて確実な近似を得る。次に、全体的なタイミング制約の一部を近似したブロックタイミングに基づいて各ブロックに分配する。同様のプロセスをＲＴＬの複雑さの見積り及びブロックの分割にも適用する。
【００１５】
本発明の１つの具体例は、回路について配分されたフロアプランを決定するフロアプラン配分方法方法において、回路のタイミングを初期化するタイミング初期化ステップと、回路について物理的配分を行う物理的配分ステップと、回路をゲートのブロックに分割する分割ステップと、ブロックの配置を特定するブロック配置ステップと、ブロックのそれぞれに時間を配分する時間配分ステップとを有するフロアプラン配分方法方法である。更に本発明は、ブロックのそれぞれに時間を配分するために、回路の全体的なタイミング制約を該回路のサブブロック間で分配する全体的なタイミング制約分配方法において、各ブロックについてＲＴＬ又はその他の高位記述を提供するステップと、ＲＴＬに基づき、各ブロックについて最適化されていない未最適化ネットリストを作成するステップと、ブロック内部のタイミングアークを特定する、各ブロックの未最適化ネットリストからノード結合論理素子（以下、論理コーンという）のセットを作成するコーン作成ステップと、論理コーンを用いて、各ブロック内部のタイミングアークを最適化する最適化ステップと、各ブロックにおいて最適化したタイミングアークに基づいて、全体的なタイミング制約を各ブロックに分配する分配ステップとを有する全体的なタイミング制約分配方法を提供する。
【００１６】
本発明は従来のシステムに比べ数多くの利点を備えており、これらの利点として、限定する意味ではないが、初期のＲＴＬ記述に係る組合せ回路要素（ｃｏｍｂｉｎａｔｏｒｉａｌ ｐｉｅｃｅｓ）のタイミング挙動（ｔｉｍｉｎｇ ｂｅｈａｖｉｏｒ）をモデリングする、強力で高精度の柔軟なタイミングモデル、長い合成反復（ｓｙｎｔｈｅｓｉｓ ｉｔｅｒａｔｉｏｎｓ）に入る前に実タイミングドリブン（ｒｅａｌ ｔｉｍｉｎｇ ｄｒｉｖｅｎ）による分割（ｐａｒｔｉｔｉｏｎｉｎｇ）を実行する能力、長い合成反復に入る前に実タイミングドリブンによる配置を実行する能力、長い合成反復に入る前に実最上位レベルにおけるネット全体的な配線（ｒｅａｌ ｔｏｐ ｌｅｖｅｌ ｎｅｔ ｇｒｏｂａｌ ｒｏｕｔｉｎｇ）を実行する能力、及び長い合成反復に入る前に実タイミングドリブンによる最上位レベルのバッファ挿入（ｒｅａｌ ｔｉｍｉｎｇ ｄｒｉｖｅｎ ｔｏｐ ｌｅｖｅｌ ｂｕｆｆｅｒ ｉｎｓｅｒｔｉｏｎ）を実行する能力が挙げられる。本発明に係る様々な処理及び技法について、回路合成を行うツール（統合アンサンブル（Ｉｎｔｅｇｒａｔｉｏｎ Ｅｎｓｅｎｂｌｅ））において実現されて、利用可能なコマンドを参照して説明する。しかしながら、本書で述べる各プロセスは他の種類のツールに単独で、あるいは他のプロセス又はデバイスと組み合わせて適用することもできる。
【００１７】
【発明の実施の形態】
回路設計において、ブロック間タイミングは、ブロックを配置する（タイミングパス（ｐａｔｈｓ）はブロック及びゲートの配置によって変わる）フロアプランと、ブロック間寄生との関数である。
【００１８】
フロアプランを決定する処理は、以下のステップから構成されるループである。
【００１９】
１）ＲＴＬ記述の複雑さを見積もる。
２）物理的分割を行う、すなわちＲＴＬセル（ｃｅｌｌｓ）の階層ネットリストから相互に連結された（ｉｎｔｅｒｃｏｎｎｅｃｔｅｄ）物理的ブロックのリストを作成する。
３）ブロック配置を行う。
４）ブロックのＩ／Ｏ配置と最上位レベルの全体の配線を行う（ｒｏｕｔｉｎｇ）。
５）フロアプランが実現可能かを検証する。
回路又はタイミング要件が実現不可能であると判明したときには、前回の反復を不可能にした問題を考慮して再調整を行うことにより、上述のステップを繰り返す。
【００２０】
しかしながら、これらの作業は、多くの点で相互に依存しており、以下のものが含まれる。
【００２１】
１）ＲＴＬ記述の複雑さはタイミング制約と寄生に依存するが、ブロック内寄生（ｉｎｔｒａ−ｂｌｏｃｋ ｐａｒａｓｉｔｉｃｓ）はブロック配置が決まった後で決まるものであり、一方、ブロック間寄生（ｉｎｔｅｒ−ｂｌｏｃｋ ｐａｒａｓｉｔｉｃｓ）は、全体配線の後に分かるものである。複雑さ自体は、見積りを行うか、タイミングドリブン合成（ｔｉｍｉｎｇ ｄｒｉｖｅｎ ｓｙｎｔｈｅｓｉｓ）を行えば、得ることができる。トレードオフはＣＰＵ対精度である。
２）物理的パーティショニング（ｐｈｙｓｉｃａｌ ｐａｒｔｉｔｉｏｎｉｎｇ）は、論理セルの複雑さと、タイミング制約とに依存する。しかしながら、タイミング制約を確かめるには、寄生の情報が必要である。
３）ブロック配置は、パーティショニング（これはＲＴＬセルの複雑さに依存する）とタイミング制約とに依存する。しかしながら、タイミング制約を確かめるには寄生の情報が必要である。
４）ブロックのＩ／Ｏ配置と最上位レベルの全体配線は、ブロック配置とタイミング制約とに依存する。しかしながら、タイミング制約を確かめるには寄生の情報が必要である。
【００２２】
したがって、上述したステップは互いに依存するので、本出願の発明者は、ループに入る最良の方法は、後続のステップの性能を見積もることであると見いだした。エントリポイント（ｅｎｔｒｙ ｐｏｉｎｔ）の選択及びエントリポイントで行う見積りは、繰返し回数と非収束のリスクが最小となるように行う。設計者が取り組むべき１つの問題は、大きなタイミングの重要な設計を実行する際には、未知のパーティショニングの寄生、ブロック配置、最上位レベルの全体の配線を用いて設計の複雑さを見積もった方がよいのか、それとも見積りなしの設計に基づきパーティショニング、ブロック配置、全体の配線を行った方がよいのか、ということである。
【００２３】
この問題に対処するために、物理的ブロックの理想サイズは前もって分かっているとする。この前提は、「クリティカルブロック（Ｃｒｉｔｉｃａｌ Ｂｌｏｃｋ）」理論に基づくものであり、この理論によれば、テクノロジーを決め、ブロック内配線に使われる金属層の数を決めたならば、そのサイズを超えると、ブロック内の全配線が抵抗性でなくなるような臨界的なブロックサイズが存在する。このクリティカルなブロックサイズ以下では、ブロック遅延は主としてゲート遅延（これは配線容量（ｗｉｒｅ ｃａｐａｃｉｔａｎｃｅ）にも依存する）から導き出される（ｄｒｉｖｅｎ）。したがって、タイミング性能の観点からは、ブロックサイズをクリティカルサイズより小さく保つのがよい。サイズがこのクリティカルサイズに等しいブロックのことをクリティカルブロックという。現在の技術（０．２μｍ）では、このようなクリティカルブロックは、５０ｋ〜１００ｋ個のゲートを含む。適切に設計されたフロアプランは、設計のクリティカルパスにおいてブロック間配線数を最小にする。これにより、クリティカルパスの遅延を、ゲートと配線の双方の関数ではなく、ゲートの関数として保つことができる。換言すると、理想的に、全クリティカルパスを１つのクリティカルブロックに完全に含めることができる。
【００２４】
クリティカルブロックの寄生は、そのブロックの大きさから見積もることができるとすると、このクリティカルブロック寄生モデルに基づいて設計の複雑さを見積もることによりループに入る。すなわち、数百万（ｍｕｌｔｉ−ｍｉｌｉｏｎ）個のゲート設計において、１００ｋ個のブロック寄生モデルを用いて設計の複雑さを見積もっている。しかしながら、このモデルは少なくとも２つの理由で楽観的である。１）ブロックの中には１００ｋ個よりも多いブロックがあることを考慮していない。２）ブロック間の遅延を考慮していない。その副作用として、このような楽観的寄生モデルに基づいたタイミング検証は、前もって設計者が設計の実現可能性を判断するのを助けることになる（これらの最良ケースの寄生を用いても、設計がタイミングの制約を満たすことができないのであれば、それ以上先に進んでも意味がない。タイミング検証は、ユーザが指定した一連のタイミング制約の下で設計が正しい周波数で機能することを検証する。タイミング検証は、タイミングの見積りに基づいて行われ、例えば、配線の正味遅延を配線が存在しなくなる長さまで見積もる。）。
【００２５】
設計の目的上、ブロックに基づく寄生は、配線負荷モデル（ｗｉｒｅ ｌｏａｄ ｍｏｄｅｌ）を用いて見積もることができる。配線負荷モデルは、通常、最適化ツールとしては、寄生を見積もるのに適した方法とはいえない。しかしながら、配線負荷モデルは、見積りのツールとしては、配線容量を適正にモデル化し、その主な目標は、Ｐ＆Ｒが一旦完了した後に、得られた設計が正しい周波数で動作するかを判定をすることである。
【００２６】
【表１】
2004513436.tif 000003
【００２７】
０．３　ＩＥタイミング最適化ループ
ここで、図１は、「見積もられたＲＴＬ」と幾つかの制約から開始するタイミング最適化ループを示す図であり、他の図面において、同一又は対応する要素には同じ参照番号を付している。このループは以下のステップからなる。
【００２８】
ステップ１：配分（ｂｕｄｇｅｔｉｎｇ）中に固定論理（ドントタッチ）とみなされるドントタッチ論理（ｄｏｎ’ｔ＿ｔｏｕｃｈ ｌｏｇ）を指定する。ＲＴＬはドントタッチとして設定されない。構造上のネットリストは、デフォルト設定ではドントタッチであるが、ユーザは、この属性をクリアすることができる。タイミングモデルは、ドントタッチとみなされる。
【００２９】
ステップ２：設計者は、タイミング制約を与える見積り／推論（ｉｎｆｅｒｒｅｄ）ＲＴＬとＡＴＣファイルの両方によって、ＩＥタイミング最適化ループを初期化する。この初期化中に、柔軟タイミングモデル（ｆｌｅｘｉｂｌｅ ｔｉｍｉｎｇ ｍｏｄｅ）が生成される。
【００３０】
ステップ３：物理的配分を設計する。これは以下の３段階からなる。
（１）クリティカルブロックのサイズ見積りにおいて寄生を見積もる。この段階は、設計者が設計を配分する前に設計を検証しなかった場合のみ、実行される必要がある。
（２）ゲート遅延及び柔軟モデルの遅延を寄生の関数として計算する。同様に、この段階も、設計者が設計を配分する前に設計を検証しなかった場合のみ、実行される必要がある。
（３）これらの寄生モデルを用いて、ＩＥは物理的配分を実行する。すなわち、ＩＥは、論理最適化ツールを模倣して、与えられたタイミング制約を満たすＲＴＬ記述の実行（ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）のゲートの複雑さを見積もる。なお、この物理的配分は、全てのスラックを消費するものではない。幾つかのスラック（ｓｌａｃｋ）は、ブロック間遅延のために予備として残される。予備スラックは、物理的パーティショニング、ブロック配置及び全体的な配線の際に使用される。
【００３１】
ステップ４：タイミング検証を３段階で実行する。
（１）クリティカルブロックのサイズ見積りにおいて寄生を見積もる。なお、これらの寄生が前のステップで見積もられていて、依然有効であれば、再度見積もる必要はない。
（２）ゲート遅延及び柔軟モデルの遅延を寄生の関数として計算する。なお、これらのゲート遅延が前のステップで見積もられていて、依然有効であれば、再度計算する必要はない。
（３）ＩＥは、配分中に行った論理最適化の結果を確かめる。タイミングが満たされないときは、フロアプランニングを更に進める意味がない。むしろ、設計の仕様を変更する必要がある。タイミングが満たされているときは、ステップ５に進む。
【００３２】
ステップ５：タイミングドリブンパティショニングを３段階を実行する。
（１）クリティカルブロックのサイズ見積りに基づいて寄生を見積もる。なお、これらの寄生が前のステップで見積もられていて、依然有効であれば、再度見積もる必要はない。
（２）ゲート遅延と柔軟モデルの遅延を寄生の関数として計算する。なお、これらのゲート遅延が前のステップで見積もられていて、依然有効であれば、再度計算する必要はない。
（３）簡単に言うと、タイミングドリブンパティショニングは、最上位レベルのクリティカルネットを避ける。すなわち、タイミングドリブンパティショニングは、結線されたクリティカルパスのセットをクリティカルブロックのサイズより小さい同一の物理的ブロック内に収納しようとする。
【００３３】
ステップ６：タイミングの検証を３段階で実行する。
（１）寄生をパティショニングの関数として見積もる。物理的ブロック内に完全に収納されたネットから、ブロックの複雑さに基づいた寄生モデル（ステップ３で見積もられたモデルとは異なる）が得られる。そして、最上位レベルの物理的ネット（すなわちブロック間のネット）から、全体的な設計の複雑さの関数である寄生モデルが得られる。
（２）ゲート遅延と柔軟モデルの遅延の計算を寄生の関数として実行する。
（３）配分中に行った論理最適化の結果を確かめる。タイミングが満たされてないときは、フロアプランニングを更に進める意味がない。この場合、設計の仕様を変更する必要がある。タイミングが満たされているときは、ＩＥはステップ７に進む。
【００３４】
ステップ７：タイミングドリブンブロック配置を３段階で実行する。
（１）寄生をパティショニングの関数として見積もる。なお、これらの寄生が前のステップで見積もられていて、依然有効であれば、再度見積もる必要はない。
（２）ゲート遅延と柔軟モデルの遅延の計算を寄生の関数として実行する。なお、これらのゲート遅延が前のステップで見積もられていて、依然有効であれば、再度計算する必要はない。
（３）ブロック配置は、最上位レベルの物理的ネットに関する時間配分（ｔｉｍｅ ｂｕｄｇｅｔ）から生成されるネットの重みによりタイミングドリブンされる。ネットが低柔軟タイミングパス、すなわち論理合成の観点から更に最適化することが困難なネットに属しているときは、重みは重くなる。ネットが高柔軟タイミングパス、すなわち論理合成の観点から更に最適化することが可能なネットに属しているときは、重みは軽くなる。このように、ブロック配置は、パス柔軟性の一部を消費する。
【００３５】
ステップ８：タイミング検証を３段階で実行する。
（１）寄生をブロック配置の関数として見積もる。一方、ブロック内寄生は、今やブロックの複雑さとブロックのアスペクト比の双方の関数である。他方、ブロック間寄生は、ブロック位置の関数である（例えば、中心間スタイナ（Ｓｔｅｉｎｅｒ）ツリー見積り）。
（２）ゲート遅延と柔軟モデルの遅延の計算を寄生の関数として実行する。
（３）ＩＥは、配分中に行った論理最適化の結果を確かめる。タイミングが満たされていないときは、フロアプランニングを更に進める意味がない。むしろ、設計の仕様を変更する必要がある。タイミングが満たされているときは、ＩＥはステップ９に進む。
【００３６】
ステップ９：ユーザはタイミングドリブン配線とＩ／Ｏ配置を４段階で実行する。
（１）寄生をブロック配置の関数として見積もる。なお、これらの寄生が前のステップで見積もられていて、依然有効であれば、再度見積もる必要はない。
（２）ゲート遅延と柔軟モデルの遅延の計算を寄生の関数として実行する。なお、これらのゲート遅延が前のステップで見積もられていて、依然有効であれば、再度計算する必要はない。
（３）ＩＥは、ブロック間ネットのタイミング配分を生成する。ブロック間ネットのタイミング配分は、ネットを含むパスの柔軟性に基づいている。
（４）ＩＥは、全体的な配線、ブロック端子割当、チャネル圧縮（ｃｈａｎｎｅｌ ｃｏｍｐａｃｔｉｏｎ）、ネットバッファリングを実行する。これは、再びパスの柔軟性を消費する。
【００３７】
ステップ１０：時間配分。今や最上位レベルのネット遅延が分かっているので、時間配分の目標は、全体的な配線後、スラックを再分配することである。この時間配分を３段階で実行する。
（１）寄生を全体的な配線の関数として見積もる。なお、これらの寄生が前のステップで見積もられていて、依然有効であれば、再度見積もる必要はない。
（２）ゲート遅延と柔軟モデルの遅延の計算を寄生の関数として実行する。なお、これらのゲート遅延が前のステップで見積もられていて、依然有効であれば、再度計算する必要はない。
（３）ＩＥは、時間配分を実行する。物理的配分と時間配分の主な違いは、時間配分が「物理的影響（ｐｈｙｓｉｃａｌ ｅｆｆｅｃｔｓ）」のためのスラックを予約（ｂｏｏｋ）しないという点である。
【００３８】
ステップ１１：タイミングの報告。タイミング検証を３段階で実行する。
（１）寄生を全体的な配線の関数として見積もる。なお、これらの寄生が前のステップで見積もられていて、依然有効であれば、再度見積もる必要はない。
（２）ゲート遅延と柔軟モデルの遅延の計算を寄生の関数として実行する。なお、これらのゲート遅延が前のステップで見積もられていて、依然有効であれば、再度計算する必要はない。
（３）ＩＥは、タイミング検証を実行する。
【００３９】
ステップ１２：ここで、設計者は以下のオプションを有する。
（１）選択された階層的論理インスタンスに対する配分された合成スクリプトを生成する。そして、これらのスクリプトをお気に入りの合成ツールに読み込み、選択された論理セルの各々を並列的に合成する。
（２）代わりに、設計者は、ユーザの指定した最上レベルのタイミング制約を、各物理的ブロック内部で用いられるｗｉｒｅｌｏａｄｍｏｄｅｌｓを含むｗｉｒｅｌｏａｄｍｏｄｅｌファイル及びブロック間遅延を記録に取った、最上位レベルの標準遅延フォーマット（ｔｏｐ−ｌｅｖｅｌ Ｓｔａｎｄａｒｄ Ｄｅｌａｙ Ｆｏｒｍａｔ、以下、ＳＤＦという。）のファイルと共に、単に保存する。この場合、設計者は、完全な設計を、合成ツール内の単にリストされたファイルと共に読み込み、配分を使用せずに、幾つかの最適化を試みる（例えば、先ずシェルを最適化する）。この場合、時間配分は必要とされない。
【００４０】
なお、配分は、ＩＥ内に組み込まれた古典的な合成アルゴリズムを用いてもよい。これにより、配分は真の実論理合成タイミング最適化（ｒｅａｌ ｌｏｇｉｃ ｓｙｎｔｈｅｓｉｓ ｔｉｍｉｎｇ ｏｐｔｉｍｉｚａｔｉｏｎ）に置換され、この最適化により、ＩＥは次世代の合成ツールへと変貌する。最適化と配分の相違は、ＣＰＵと精度のトレードオフである。また、配分の後に論理最適化を行い、何らかの方法で配分の結果を確認するようにしてもよい。セッションの終了後（ループの繰返しが完了したときに）、合成スクリプトの代わりに、配置されたフロアプラン及び最適化ネットリストが作成される（なお、この場合、ＲＴＬを見積もるために、クイックブール最適化器（ｑｕｉｃｋ Ｂｏｏｌｅａｎ Ｏｐｔｉｍｉｚｅｒ）ではなく、ブール最適化器が必要である。）。
【００４１】
１．タイミング最適化ループステップ
このセクションにおいて、ＩＥのタイミング最適化ループの各ステップを１つずつ説明する。
【００４２】
１．２　ＲＴＬの見積り
ここでの唯一の前提は、ブール最適化は、可能な限り小さなブールネットワークを作成しようとし、それをファンイン（設計におけるゲートの最大入力数）とファンアウト（設計におけるゲートで駆動される端子の（ｉｎｓｔ＿ｔｅｒｍｉｎａｌ）の最大数）の双方に対して４個を限度として平衡的にマッピングする点である。ファンインに限度を設けることにより、マッパー（ｍａｐｐｅｒ）が多数の直列トランジスタを有する大きなゲートを用いることを防ぐ。ファンアウトに限度を設けることにより、マッパーが、小さなバッファゲートに大容量のノードを駆動させるのを防ぐ。これにより、後のステップで行うタイミング検証が確実に意味あるものになる。
【００４３】
１．３　ドントタッチインスタンスの指定
上述したように、固定論理は、下流の実行ツール（ｍｐｌｅｍｅｎｔａｔｉｏｎ ｔｏｏｌ）による変更の対象ではない。したがって、固定論理は配分されない。固定論理の候補を具体例としては、タイミングモデル、パッド、ブラックボックス、ＡＴＣ制約によりタッチされるゲート（例えばタイミングアークがＡＴＣ制約により分割されるゲート）がある。
【００４４】
ゲートレベルのネットリストは「ドントタッチ設定」コマンドを介して、固定論理としてユーザ指定される。デフォルトとして、ゲートレベルのネットリストは全て固定、すなわち全ゲートレベルのネットリストはドントタッチ属性を持つと考える。ユーザは「ドントタッチクリア」コマンドを介して、この属性を消去することができる。
【００４５】
上述したように、柔軟論理は、下流の実行ツールによる変更を受ける。したがって、柔軟論理は常に配分される。柔軟論理の具体例を以下に示す。
【００４６】
ゲートレベルのネットリストに変換される全ＲＴＬネットリスト、ただしＡＴＣ制約がタッチするゲートは除く。
【００４７】
ユーザによりドントタッチが設定されていない全ゲートレベルのネットリスト、ただしＡＴＣ制約がタッチするゲートは除く。
【００４８】
「ドントタッチ設定」コマンド（ＩＥ）は、設計の配分（ｂｕｄｇｅｔｉｎｇ）において設計の特定部分を配分禁止するのに用いられる。
【００４９】
１．４　タイミングの初期化
タイミングエッジグラフ（ｔｉｍｉｎｇ ｅｄｇｅ ｇｒａｐｈ）は、タイミング検証プロセスを実行するために、所定のネットリストの上にタイミング検証器（ｖｅｒｉｆｉｅｒ）によって作成されるデータ構造である。柔軟タイミングエッジグラフは、柔軟論理を含むエッジグラフとして定義される。柔軟タイミングエッジグラフは、一部に固定論理を含んでもよい。
【００５０】
タイミング初期化の目標は、見積り器（ｅｓｔｉｍａｔｏｒ）が作成した階層ネットリストのデータベースから柔軟タイミングエッジグラフを作成することである。柔軟エッジグラフは、共通タイミングエンジン（ｃｏｍｍｏｎ ｔｉｍｉｎｇ ｅｎｇｉｎｅ）によって、見積りネットリストから設計の柔軟部分を検出することにより自動的に作成される。１つの具体例において、これは以下のように行われる。
【００５１】
アンビットのタイミング制約を（例えばファイルから）ロードする。これを行うために、ＣＴＥにネットリストデータベースのビューを提示し、ＣＴＥにロードすべきアンビットのタイミング制約のファイル名を与える。ＣＴＥは先ず柔軟性なしのエッジグラフを作成し、ついでアンビットのタイミング制約ファイルを構文解析し、アンビットのタイミング制約オブジェクトを生成しそれらをネットリストのコンポーネントに添付する。
【００５２】
設計の柔軟部分を検出する。これを行うために、ユーザの設定したドントタッチ属性とＣＴＥ　ＡＰＩを参照してアンビットのタイミング制約がタッチする（ｃｏｎｓｔｒａｉｎｔ−ｔｏｕｃｈｅｄ）オブジェクトを得る。
【００５３】
設計の柔軟部分をモデリングする。図２はＩＥモデル化柔軟セルを示す。このＩＥモデル化柔軟セルは以下の３種類の要素からなる。
【００５４】
ファンアウト自由論理コーン、
バッハーツリー、
順次素子。
【００５５】
組合せセルがアンビットのタイミング制約によりタッチされた場合、それは順次素子として「可視（ｖｉｓｉｂｌｅ）」となる。
【００５６】
柔軟性なしのエッジグラフを柔軟エッジグラフに変換する。これを行うために、各柔軟要素についてタイミングライブラリフォーマット（ＴＬＦ）モデルを作成し、このＴＬＦモデルで初期のゲートセットを置換する（なお、これを介してＣＴＥに柔軟モデルの入力ｉｎｓｔ＿ｔｅｒｍｉｎａｌ容量を与えることができる。）。
以下のサブセクションにおいて、バッファツリーの柔軟性及び論理コーンの柔軟性をモデリングする方法を提示する。これらはテクノロジーに依存しない方法である。
【００５７】
１．４．１　バッファツリーの柔軟性
応用タイミング制約によれば、伝統的合成ツールで作成したバッファツリーは平衡にも非平衡にもなり得る。例えば、「近接連続バッファライブラリに対する高速ファンアウト最適化アルゴリズム（Ａ ｆａｓｔ Ｆａｎｏｕｔ Ｏｐｔｉｍｉｚａｔｉｏｎ Ａｌｇｏｒｉｔｈｍ ｆｏｒ Ｎｅａｒ−Ｃｏｎｔｉｎｕｏｕｓ Ｂｕｆｆｅｒ Ｌｉｂｒａｒｉｅｓ）」ディ・キューン（Ｄ． Ｋｕｎｇ）著、ＤＡＣ９８、及び「ファンアウトに対するヒューリスティックアルゴリズム（Ａ Ｈｅｕｒｉｓｔｉｃ Ａｌｇｏｒｉｔｈｍ ｆｏｒ ｔｈｅ Ｆａｎｏｕｔ Ｐｒｏｂｌｅｍ）」ケイ・シン（Ｋ． Ｓｉｎｇｈ）著、ＤＡＣ９８が参照される。図３は平衡と非平衡のバッファツリーを示す。平衡バッファツリーについて、出力タイミングアークの全入力は遅延が同一である。非平衡バッファツリーにおいて、一部のアークは遅延が短く、他のアークは遅延が長い。
【００５８】
今、前提として：
（１）前もって、合成時に使用するファンアウト数の限度ｆｎが分かっている。この限度はしばしば配置ツールにより定められ（ｄｒｉｖｅｎされ）、約４に等しい。
（２）このようなファンアウトについて寄生ｐのモデルがある。これは前のセクションから得られる。
（３）ライブラリ内にセルの平均入力ピン容量ａｉｐｃが与えられている（これは即時（ｉｍｍｅｄｉａｔｅ）である）。
（４）ライブラリ／テクノロジー較正後、（ｆｎ＊ａｉｐｃ）＋ｐに対応する負荷を駆動する最速ゲートが分かっており、そのゲートに係る遅延はｄｇである。
とすると、ファンアウト数ｆの平衡バッファツリーのアークに関する遅延の見積りは次式で与えられる。
2004513436.tif 000004
ファンアウト数の限度を考慮すると、（ｆｎ−１）個のアークの遅延を、残りのアークの遅延が増大することを受け入れて、低減することができる。
2004513436.tif 000005
例えば、図４の場合、ｆｎは４に等しいから、３個のアークを加速し、残り１３個のアークを減速する。
【００５９】
１．４．１．１　階層的インスタンス出力負荷の考慮
時には、階層的インスタンス出力端子は図５に示すような拡散ファンアウトを駆動することがある。
【００６０】
推論（ｉｎｆｅｒｅｎｃｅ）及び見積り（ｅｓｔｉｍａｔｉｏｎ）が共に最上位レベルでこのノードをバッファリングしないとすると、この過剰負荷がかかったネットによる遅延を考慮する必要がある。このためにこの出力ｉｎｓｔ＿ｔｅｒｍｉｎａｌについてインクリメンタルな柔軟性なしの遅延（ｉｎｃｒｅｍｅｎｔａｌ ｎｏｎ−ｆｌｅｘｉｂｌｅ ｄｅｌａｙ）を付加する。
【００６１】
１．４．２　コーンの柔軟性
コーンの柔軟性の解析は「Ｔｈｅｏｒｙ ｏｆ Ｌｏｇｉｃａｌ Ｅｆｆｏｒｔ」（以下、サザーランド（Ｓｕｔｈｅｒｌａｎｄ）という）に基づいている。この理論によると、１つのゲートを通る正規化遅延は次のようにモデリングされる。
2004513436.tif 000006
ここで、ｇはロジカルエフォート（ｌｏｇｉｃａｌ ｅｆｆｏｒｔ）であり、ゲートの機能及びゲートの入力数に依存する。サザーランドには各種ゲートについてｇの値が与えられている。
ｈは電気的作用（ｅｌｅｃｔｒｉｃａｌ ｅｆｆｏｒｔ）であり、Ｃｏｕｔ／Ｃｉｎに等しい。ここで、Ｃｏｕｔはゲートが駆動する出力容量であり、Ｃｉｎはゲートの入力ピン容量である。
ｐは寄生遅延であり、ゲートの構造、ゲートの入力数、及びｐｉｎｖ（１に等しいとみなしてよい標準インバータ入力容量）の機能に依存する。サザーランドには各種ゲートについてｐの値が与えられている。
【００６２】
論理コーン内部において次式が成り立つ場合を検討する。
2004513436.tif 000007
したがって
2004513436.tif 000008
コーンの柔軟性の解析はコーンのブール関数に依存する。コーンのブール関数が加法標準形（ＤＣＦ）で表現されるとして、３つのケースが考えられる。
【００６３】
（１）ＤＣＦは１つの積のみを含む。
（２）ＤＣＦは２以上の積を含むが、入力リテラル（ｌｉｔｅｒａｌ）はＤＣＦに１回しか現れない。
（３）ＤＣＦは２以上の積を含み、入力リテラルはＤＣＦに２回以上現れる。
【００６４】
１．４．２．１　ＤＣＦが１つの積のみを含む場合
式（６）から、ｎ入力ＮＡＮＤゲートの正規化遅延はサザーランドより次式で与えられる。
2004513436.tif 000009
図６に示すように、このゲートの入力の１つに係る遅延を低減すると、加速入力遅延は次式で簡単に計算できる。
2004513436.tif 000010
インバータの遅延を（インバータはコーンを駆動するバッファツリーに含まれているので）無視すると、ロジカルエフォートの理論から次式が与えられる。
2004513436.tif 000011
同様にして、減速入力を通る遅延を計算すると次式となる。
2004513436.tif 000012
減速遅延は次式で定義される。
2004513436.tif 000013
（ｎ−１）入力ＮＡＮＤゲートは同様な方法で更に加速できる。初期のｎ入力ＮＡＮＤゲートのｍ入力を加速するとすると、ｉ番目の加速入力の遅延は次式で定義される。
2004513436.tif 000014
残る非加速の（ｎ−ｍ）入力の遅延は次式で与えられる。
2004513436.tif 000015
そしてこれらの非加速入力の減速遅延は次式で与えられる。
2004513436.tif 000016
【００６５】
１．４．２．２　ＤＣＦは複数の積を含むがどの入力リテラルも１回だけ使用される場合
ＤＣＦはｎ個の積を含み、ｉ番目の積はｎｉ個のリテラルを含むものとする。平衡インプリメンテーションのｉ番目の積に係る出力に対する入力の遅延は次式で計算される。
2004513436.tif 000017
すなわち
2004513436.tif 000018
【００６６】
次に図７に示すように、入力の１つを加速することとし、加速入力は図示するようなａｏｉ２１（ＡＮＤ／ＯＲ／ＩＮＶＥＲＴＩＮＧ）ゲートを駆動するものとすると、加速入力の遅延は次式で計算される。
2004513436.tif 000019
加速入力の積に属する入力の遅延は次式で与えられる。
2004513436.tif 000020
他の積に属する入力の遅延は次式で与えられる。
2004513436.tif 000021
同一の積に属する入力を更に加速するのであれば、他の積の入力は減速しない。
【００６７】
加速入力の遅延を計算するためには、加速積の数を考慮しなければならない。次のようにいうことができる。
【００６８】
ｊ番目の加速積のｉ番目の加速積の遅延は次式で計算される。
2004513436.tif 000022
【００６９】
１．４．２．３　ＤＣＦは複数の積を含み、入力リテラルに制限のない場合
ここで、クイック見積りは、２入力マルチプレクサを介して実行される、シャノン分解（Ｓｈａｎｎｏｎ ｆａｃｔｏｒｉｚａｔｉｏｎ）に基づいており、その遅延は次式で与えられる。
2004513436.tif 000023
入力関数を前提とすると、ｉ番目の加速積が有する遅延の上限は次式で与えられる。
2004513436.tif 000024
また、実際に関数をシャノン分解しなければ、非加速入力の遅延を見積もる式はない。このレベルにおいて、ｎ入力関数の平均遅延を計算するテーブルを記憶するとよい。
【００７０】
１．４．３　柔軟モデルの遅延曲線
柔軟モデルの遅延曲線は完全に非平衡のｎ入力コーン／バッファツリーのアーク遅延をこのコーン／バッファツリーのｎ入力に関係づけるＷＬＭ（配線負荷モデル）依存曲線である。例えば、図８は８入力コーンの柔軟モデルの遅延曲線である。
【００７１】
柔軟モデルの遅延曲線は、前述した式を用いてコーンのタイプ又はバッファツリー特性から自動的に作成される。
【００７２】
１．４．４　実遅延曲線
実遅延曲線はコーン／バッファツリーのアークに係わる分布した実遅延に関するＷＬＭ依存曲線である。当初、ＲＤＣは、ＭＤＣ（図９参照）の中央値から得られる、平坦な曲線である。ここで、ＭＤＣの点を「ｒ」で表す。ＲＤＣは、例えばｒｅｐｏｒｔ＿ｔｉｍｉｎｇコマンドで使用される。
【００７３】
１．４．５　配分遅延曲線
配分遅延曲線（ｂｕｄｇｅｔｅｄ ｄｅｌａｙ ｃｕｒｖｅ：ＢＤＣという）は配分したコーン／バッファツリーのアークの配分遅延とそのコーン／バッファツリーの入力との関係を示す曲線である（図１０参照）。ＢＤＣの点は「ｂ」で表す。
【００７４】
ＭＤＣと異なり、ＢＤＣはＷＬＭに依存する。配分遅延は、どのＷＬＭを使用したかにかかわらず、アークの遅延を示す。ＲＤＣと異なり、ＢＤＣは非実アーク遅延（モデルによる実現が不可能な遅延）を含んでも構わない。
【００７５】
ここで、ＢＤＣの点の中には凍結（ｆｒｏｚｅｎ）を意味する「ｆ」属性を有するものがある。この意味は、アークの遅延が全て配分され、今後、再配分されることはないということである。後述するように、配分の際には、少しずつ、コーンアークの一部が全て配分される。このことはコーンアークの下限を示唆する。
【００７６】
１．５　寄生の見積り
寄生の見積りは、設計者が以下のどれでも行った際に直ちに自動起動されるタスクである：タイミング検証、配分、タイミングドリブンパティショニング、タイミングドリブン配置、タイミングドリブン全体的な配線、及び／又は最終配分。
【００７７】
また、寄生の見積りは、ＩＥの現在の状態が見積り／推論、パティション、ブロック配線、及び／又は全体的な配線のときに行われる。
【００７８】
最後に、無効にするようなこと（異なる状態、例えばパティションかブロック配線、あるいは同じ状態内の異なる特性、例えば異なるブロック配置又は異なるブロックパティショニング）が何もなされない限り、寄生は有効である。
【００７９】
以下において、ＩＥ状態（ＩＥに係る設計状態：見積り、パティション、ブロック配置、最上レベル配線完了、等）により、どのように見積りが計算されるか明らかにする。
【００８０】
１．５．１　クリティカルブロックによる寄生見積り
この見積りは、クリティカルサイズのブロック内で用いられる、配置から独立した配線負荷モデルを作成する。この配線負荷モデルを作成する方法の例を下記に示す。
【００８１】
（１）配線負荷モデルのライブラリから配線負荷モデルを得る。
（２）テクノロジーに依存しない配線長テーブル、及び線形容量等のテクノロジー変数から配線負荷モデルを作成する。
（３）オンザフライ設計配置と寄生抽出からから配線負荷モデルを作成する。
（４）モンテカルロ法によるテクノロジーに依存しない配線長見積りと幾つかのテクノロジー変数から配線負荷モデルを作成する。
【００８２】
配線負荷モデルを作成する好ましい技法は２番目の方法（２）であるが、最初に有効性を確認すべきである。また、この配線負荷モデルの作成にはネットリスト最適化と配置を並列的に行うケーデンスツールである、Ｐｈｓｉｃａｌｌｙ Ｋｎｏｗｌｅｄｇｅａｂｌｅ Ｓｙｎｔｈｅｓｉｓ（ＰＫＳ）が必要である。これらの寄生は、ＩＥがこの現在の状態にある限り、すなわちＩＥがパティショニングモードに入らない限り、有効である。以下のサブセクションにおいて、各方法を明らかにする。
【００８３】
１．５．１．１　ＷＬＭのライブラリからＷＬＭを得る方法
配線負荷モデルのＴＬＦファイルと共に設計サイズに応じた配線負荷モデルの使用法に関する指示セットがあれば、配線負荷モデルを得るために、配線負荷モデルのライブラリからＷＬＭインスタンスを補間してクリティカルブロックサイズに対応する配線負荷モデルを作成する（補間法）。
【００８４】
しかしながら、補間法はライブラリ内でこのような配線負荷モデルを利用できるかに依存する。
【００８５】
１．５．１．２　配線長モデルからＷＬＭを作成する方法
テクノロジーに依存しない配線長テーブル（ＷＬＴ）は、設計サイズ（これは使用可能な金属層の数を考慮する）、ライブラリ２入力ゲートサイズ及びファンアウトの関数として作成される。詳細には、下記の関係を前提とする。
2004513436.tif 000025
【００８６】
次に、ＷＬＴ、アスペクト比と設計サイズ、設計ゲートサイズ、及びテクノロジーファイルからＷＬＭを作成する。各ファンアウト値について、ＷＬＴは長さ（Ｌ）を返す。これから下記のように計算される。
2004513436.tif 000026
ここで、ＣｈとＣｖは、Ｑｐｌａｃｅ（ケーデンスの先進的な配置技術）により、テクノロジーファイルと使用可能な金属層の数（使用可能なトラック比率を介してＱｐｌａｃｅに指定する）とから計算される、線形な、横と縦の容量である。
【００８７】
したがって、設計ツールにコード化される、（２３）決定後、ＷＬＭは計算される。ＷＬＭはＷＬＴと式（２）、（３）、（４）から計算される。
【００８８】
１．５．１．３　クイック配置からＷＬＭを作成する方法
クイック配置から作成されるＷＬＭは設計のクイック配置、寄生の抽出、及びこれらの寄生からのＷＬＭの生成に基づいている。インプリメンテーションは以下の通り。スクラッチからＩＥを開始する際に、ライブラリとテクノロジーファイルがロードされると、ＩＥは、異なるサイズに係る設計のコレクションを生成し、それらをクイック配置（ｑｐｌａｃｅ）し、寄生を抽出し、各設計について配線負荷モデルを作成する。これらのＷＬＭを（例えばデータベースに）保存して、そのデータベースからＩＥを開始する際、ＩＥが再度これらのＷＬＭを作成しなくて済むようにする。その後、ＩＥの動作中に、新しいＷＬＭが必要になったら、新たに作成したＷＬＭデータベース内で補間をとることにより新しいＷＬＭを作成する。
【００８９】
１．５．１．４　モンテカルロ法による配線長モデルからＷＬＭを作成する方法
モンテカルロ法に基づく方法において、それぞれの異なるファンアウト値について、設計サイズに等しい２次元空間におけるファンアウト値のデータ座標のセットを抽出すると共に中央（ｍｅｄｉａｎ）のシュタイナー（Ｓｔｅｉｎｅｒ）ツリー長を抽出することによりＷＬＴを作成する。上述の式（２）、（３）、（４）を再使用してＷＬＭを求める。
【００９０】
１．５．２　分割による寄生見積り
分割（ｐａｒｔｉｔｉｏｎ）による寄生見積りはクリティカルブロックによる寄生見積りに似ている。１つの相違点はブロックのサイズがパティショニングに基づく点である。ここで、寄生見積り器は作成した物理的ブロックのそれぞれについて１つの配線負荷モデルを作成する。１つのブロックに係る配線負荷モデルはその物理的ブロックに含まれる論理セルの各々が使用することになる。更に、見積り器は全設計サイズに対応する最上位レベルの配線負荷モデルも作成する。この配線負荷モデルは最上位レベルの物理的ネットで使用されることになる。例えば、図１１の場合、ＩＥは、パティショニングの前に下記の各々を見積もる。
【００９１】
（１）セルａ１のサイズに基づいた、セルａ１用配線負荷モデルａ１＿ｗｌｍ、この配線負荷モデルはＣＴＥに送られる。
（２）セルａ２のサイズに基づいた、セルａ２用配線負荷モデルａ２＿ｗｌｍ、この配線負荷モデルはＣＴＥに送られる。
（３）セルａ３のサイズに基づいた、セルａ３用配線負荷モデルａ３＿ｗｌｍ、この配線負荷モデルはＣＴＥに送られる。
（４）セルｂのサイズに基づいた、セルｂ１，ｂ２，ｂ３（及びｂ）用配線負荷モデルｂ＿ｗｌｍ、この配線負荷モデルはＣＴＥに送られる。
（５）セル最上位のサイズに基づいた、ネットｎ１（又はノードｎ１）用配線負荷モデルｔｏｐ＿ｗｌｍ、この配線負荷モデルを用いてネットｎ１の容量を見積もる。この見積りのために、セルｂ内の該当するノードの部分を正しくバッファリングするのは論理合成の役割であるとして３のファンアウトを考える。（この配線負荷モデルはＣＴＥに送られない。ＣＴＥは物理的な階層構造を知っているのではなく、知っているのは論理的な階層構造だけである。）この特別のネット（ｎ１）について、ＣＴＥは与えられた容量を使用し、与えられた配線負荷モデルに関しては何も付け加えない。
【００９２】
１．５．３　ブロック配置による寄生見積り
図１２は図１１の分割設計で行った配置の代表的結果を示したものである。このブロック配置のために、ＩＥは、下記の寄生を見積もる。
【００９３】
（１）セルａ１のサイズとアスペクト比に基づいた、セルａ１用配線負荷モデルａ１＿ｗｌｍ、この配線負荷モデルはＣＴＥに送られる。
（２）セルａ２のサイズとアスペクト比に基づいた、セルａ２用配線負荷モデルａ２＿ｗｌｍ、この配線負荷モデルはＣＴＥに送られる。
（３）セルａ３のサイズとアスペクト比に基づいた、セルａ３用配線負荷モデルａ３＿ｗｌｍ、この配線負荷モデルはＣＴＥに送られる。
（４）セルｂのサイズとアスペクト比に基づいた、セルｂ１，ｂ２，ｂ３（又はｂ）用配線負荷モデルａ１＿ｗｌｍ、この配線負荷モデルはＣＴＥに送られる。
（５）ネットｎ１について、ブロック中心間のシュタイナーツリーに基づいた配線容量。この容量はＣＴＥに送られ、ＣＴＥはこの容量を全ネットｎ１について使用する。
【００９４】
１．５．４　タイミングドリブンによる全体的な配線＋容量見積り
タイミングドリブンによる全体的な配線（ｇｌｏｂａｌ ｒｏｕｔｉｎｇ）はタイミング最適化ループに下記のデータ項目をバックアノテートする。
【００９５】
（１）ソースからシンクベースへの、バッファを含むネットの遅延
（２）ソースからシンクベースへの、バッファを含まないネットの遅延
（３）ソースから見た集中（ｌｕｍｐｅｄ）容量
ネットの遅延がゼロでなくなったら、図１３に示すように、それを（論理階層構造に基づいて）柔軟エッジグラフにアノテートする。
【００９６】
１．６　ゲート遅延と柔軟遅延の見積り
ゲート遅延は遅延算出器により、見積り寄生（例えば、タイミング検証器（ｖｅｒｉｆｉｅｒ）が算出した遅延）を考慮して見積もる。柔軟遅延は、ＲＤＣとＭＤＣを動かすことにより速やかに見積もられる。上述したように、これらの曲線はＷＬＭに依存する。このように見積りのタスクは、これらの曲線を新ＷＬＭ対旧ＷＬＭの比の関数である因子で動かすことにより構成される（柔軟ゲート遅延を新ＷＬＭの関数として見積もるに関する説明参照）。
【００９７】
１．７　物理的配分
物理的配分の目標は速やかに下記の事項を知ることである。
【００９８】
（１）クリティカルブロックの寄生を用いた、設計の実現可能性（ｆｅａｓｉｂｉｌｉｔｙ）
（２）これらの寄生を用いた、設計が正しい周波数で機能するのに必要なゲートの複雑さの見積り
ここでも、伝統的な合成を行ってこの見積りを出す。伝統的な合成アルゴリズムはアーキテクチャの複雑さについて正確な見積りを出すが、余りにもＣＰＵ時間を浪費し、闇雲に伝統的な合成アルゴリズムを実行させてこれらの見積りを求める。換言すると、タイミング制約の影響を受ける設計の複雑さを見積もるために、合成ツールを長時間動作させてタイミング制約条件を満たすようにするのではなく、本発明に係るアプローチは全設計に亘ってタイミングを賢く配分し、それからこの賢い配分を大なり小なり考慮に入れてインプリメンテーションのコストを見積もることで構成される。全設計に亘ってタイミングを賢く配分するために、設計を構成する異なる論理機能間の相互依存性を考慮する。論理機能（ｌｏｇｉｃａｌ ｆｕｎｃｔｉｏｎ）に関する全ての入力／出力パスを可能な限り最速（ａｓ ｆａｓｔ ａｓ ｐｏｓｓｉｂｌｅ）にすることはできないと考えて、一部の他のパスが減速されるならば一部のパスが好ましいとする。これを達成するために、柔軟タイミングモデルの論理機能をモデリングする。要するに、柔軟モデルは論理コーンのアーク遅延依存性を速やかに捕捉する。
【００９９】
ＩＥにおいて、配分コマンドは、実配分を作成し、配分の適用領域（ｒｅｓｕｌｔｉｎｇ ａｒｅａ）の見積りを出す点で上位（ｓｕｐｅｒｉｏｒ）の配分コマンドである。
【０１００】
配分コマンドは４段階からなる。
（１）セクションで説明したようにして寄生を見積もる。
（２）現寄生モデルにより柔軟モデルの遅延点を適応する。
（３）柔軟性ドリブン時間配分を行う。
（４）配分の領域／タイミングを見積もる。
【０１０１】
以下のセクションにおいて、柔軟性ドリブン時間配分及び配分の領域／タイミングの見積りについて説明する。
【０１０２】
１．７．１　柔軟性ドリブン時間配分
ＩＥによるタイム配分処理は、ＩＭＦ（反復ミニマックスＰＥＲＴ）アルゴリズムに基づいている。例えば、「ＶＬＳＩ回路に対するネット遅延上の限界（Ｂｏｕｎｄｓ ｏｎ Ｎｅｔ Ｄｅｌａｙｓ ｆｏｒ ＶＬＳＩ Ｃｉｒｃｕｉｔｓ）」エッチ・ユーセフ（Ｈ．Ｙｏｕｓｓｅｆ）著、回路及び装置上のＩＥＥＥトランザクション（ＩＥＥＥ Ｔｒａｎｓａｃｔｉｏｎ ｏｎ Ｃｉｒｃｕｉｔｓ ａｎｄ Ｓｙｓｔｅｍｓ）、第３９巻、Ｎｏ．１１、９２年１１月において、ＣＴＥはアプリケーションにＩＭＰアルゴリズムを実行させる基本的な機能を提供する。
【０１０３】
以下において、先ず、設計を行う際に避けるべき落とし穴の幾つかについて説明するテスト事例を提示する。次に定義と表記を示す。最後に、ＩＥに関する、ＩＭＰアルゴリズムの使用法を提示する。以下の説明において、読者はＩＭＰアルゴリズムに通じていることを前提とする。
【０１０４】
このセクション（及び書類）の残りで、簡単のために、コーンのみについて説明する。しかし、留意すべきこととして、内在するネットリスト表現は明らかにコーンとバッファツリー（と順次素子）から構成される。コーンについて述べたことは全てバッファツリーについても有効であり、相違点は前のセクションで示したようにアーク遅延の相互依存関係である。
【０１０５】
１．７．１．１　小さな事例
図１５は設計の断片（ｐｉｅｃｅ）を示したものである。この断片は３つの結線した論理コーン、それぞれＬ（左）、Ｍ（中央）及びＲ（右）からなる。コーン内の太線はコーンのタイミングのクリティカルアークを表す。コーンの細線はコーンのタイミングのクリティカルでないアークを表す。コーンのサイズと共にコーンの下方に示す表の第１行はコーンアークの遅延の上限を表す。ここで１つのゲートを通る最小の遅延を「２」とする。分配すべき遅延を１０ｎｓとする。この表の第２行は伝統的な、上限遅延に基づく配分（ＵＢＤ配分）の結果を表す。一方において、この配分はコーンＬとＲについて実現不能なタイミング配分を生成する。他方において、この配分はコーンＭについてクリティカルアークを過小に制約する。第３行はより実際的な、過密（ｃｏｎｇｅｓｔｅｄ）に基づく配分（ＣＢ配分）を示す。この配分は前のセクションで述べたコーンアークに関する遅延の相互依存関係を考慮する。
【０１０６】
図１６は設計の断片（ｐｉｅｃｅ）を示したもので、この断片は３つの結線した論理コーン、それぞれＬ（左）、Ｍ（中央）及びＲ（右）からなる。コーン内の太線はコーンのタイミングのクリティカルアークを表す。コーンの細線はコーンのタイミングのクリティカルでないアークを表す。コーンのサイズと共にコーンの下方に示す表の第１行はコーンアークの遅延の上限を表す。ここで１つのゲートを通る最小の遅延を「２」とする。分配すべき遅延を１２ｎｓとする。この表の第２行は伝統的な、上限遅延に基づく配分（ＵＢＤ配分）の結果を表す。一方において、この配分はコーンＭについて実現不能なタイミング配分を生成する。他方において、この配分はコーンＬとＭについてクリティカルアークを過小に制約する。第３行はより実際的な、過密（ｃｏｎｇｅｓｔｅｄ）に基づく配分（ＣＢ配分）を示す。この配分は前のセクションで述べたコーンアークに関する遅延の相互依存関係を考慮する。
【０１０７】
上の２つの実験から、コーンサイズとコーンアーク配分との関係は全コーンアークがクリティカルな場合にのみ存在する。したがって、タイミング配分としてはコーンタイミングの過密に基づいて行うべきである。
【０１０８】
１．７．１．２　定義及び表記
次のように定義する。
【０１０９】
ρ：与えられたアークの重み
ｄ：与えられたアークの現在の重み
ｄａｍｉｎ：与えられたアークの絶対最小重み。この絶対最小重みはコーンのタイプ又はアークを含むバッファツリーの関数である（セクション３．４参照）。
【０１１０】
ｄｒｍｉｎ：与えられたアークの相対最小重み。この相対最小重みはコーンのタイプ又はアークを含むバッファツリー、及び既に配分したコーンアークの現遅延の関数である。
【０１１１】
Ｐηｍａｘ：（単にＰという）与えられたアークを通る全パスの中で最大のパス重み。Ｐは設計におけるアーク重みを伝搬／逆伝搬（ｐｒｏｐａｇａｔｉｎｇ／ｂａｃｋ−ｐｒｏｐａｇｅｔｉｎｇ）することにより計算される。
【０１１２】
Ｕηｍｉｎ：（単にＵという）与えられたアークを通る全パスの中で最小のパス重み。Ｕは設計到着時刻（それぞれ設計所要時間）を伝搬（それぞれ逆伝搬（ｂａｃｋ−ｐｒｏｐａｇｅｔｉｎｇ））することにより計算される。
【０１１３】
下記の式を相対スラック分配式（ｒｅｌａｔｉｖｅ ｓｌａｃｋ ｄｉｓｔｒｉｂｕｔｉｏｎ ｆｏｒｍｕｌａ）と呼ぶことにし、これは、アークの現遅延値（ｄ）、アークの重み（ρ）、アークを通る最悪パスのスラック（Ｕ）、与えられたアークを通る全パスの中で最大のパス重み（Ｐ）、及びアークの相対最小重み（ｄｒｍｉｎ）の関数としてアークの遅延を次式により更新する。
2004513436.tif 000027
ここで、標準のＩＭＦスラック分配式は単に次式で与えられる。
2004513436.tif 000028
全アーク遅延を可能な限り短くするためにタイルしたコーンを、可及的最速平衡コーン（ｂａｌａｎｃｅｄ ａｓ ｆａｓｔ ａｓ ｐｏｓｓｉｂｌｅ ｃｏｎｅ）と呼ぶことにする。このようなコーンのアークの（平衡）遅延をｄｂと呼ぶ。この種のコーン内部において、各アーク遅延「ｉ」について下記の関係が成り立つ。
ｄｂ，ｉ＞＝ｄｍｉｎ，ｉ　　　　　　　　　　　　　　　　　　　　　　　（２９）
全てのコーンアークをｄｒｍｉｎに設定することは不可能であることは分かっている。また、前のセクションで示したロジカルエフォート理論から導かれる、アーク遅延の相互依存関係から、他のコーンを加速する際にコーンアークを減速する方法についても分かっている。また、コーンアークのセットに絶対スラック分配式（ａｂｓｏｌｕｔｅ ｓｌａｃｋ ｄｉｓｔｒｉｂｕｔｉｏｎ ｆｏｒｍｕｌａ）を厳密に適用し、それによって遅延の相互依存関係が破られるときに、コーンアークのセットは過密である、又は込み合っている（ｃｏｎｇｅｓｔｅｄ）、という。更に、過密アークのセットを含むコーンをタイミング過密コーン（単に過密コーンという）と定義する。
【０１１４】
なお、可及的最速平衡バッファツリーと過密バッファツリーについても同様に定義される。
【０１１５】
次のセクションで示す配分処理はインクリメンタルである。最初は、どのコーンも凍結していない（すなわち全設計はＲＴＬ記述から見積もられた）とすると、全設計は完全に柔軟である。次に処理が行われている間、少しずつコーンアークの断片（ｐｉｅｃｅｓ）が凍結する一方で、他の断片は柔軟性を保つ。例えば、配分処理の開始時に、図１４のコーンＭの全アークはゼロの遅延を得る。処理が進行する間、このコーンのクリティカルアークは過密アークのセットとなり、非常に小さな分配遅延を得る。当然ながら、この決定によりクリティカルでないアークは定義された遅延の一部を得る。よって、依然として変更を受ける部分をアークの柔軟部分と定義する。また、既に凍結された部分をアークの凍結部分と定義する。最初は、どのアークも凍結部分はなし（ｎｕｌｌ）である（なお、ユーザ指定により凍結された設計構造断片の部分についてはスラック分配を受けることはない）。アークの柔軟部分がなし（ｎｕｌｌ）ならばそのアークの分配遅延は凍結される。
【０１１６】
１．７．１．３　柔軟性ドリブン物理的配分
ＩＭＰアルゴリズムに基づいた、ＩＥによる物理的配分処理を図２０に示す。この処理は異なる３段階からなる。
【０１１７】
（第１段階）過密ドリブン正のスラックの分配。この段階はステップ１〜２０からなる（図２０参照）。この段階の目標は、アーク遅延の相互依存関係を配慮し、コーンタイミング過密の関数として、アークに正のスラックを分配することである（式２８）。この段階は全コーンアークの遅延をゼロに設定して開始し、その後少しずつ過密アークのみに正のスラックを分配する。この第１段階の間、過密していないアークは何らかのスラックを受け取らない。図１７に係る配分遅延曲線は、この過密ドリブン正のスラック分配の代表的な結果を示すものである。
【０１１８】
（ａ）最初の３入力は過密であり、モデル遅延「ｍ」に等しい配分遅延「ｂｆ」を得た。更にこの配分遅延は「ｆ」属性を得たが、その意味はこれらの遅延はこの第１段階の間これ以上スラックを受け取らないということである。したがってこれらのアークの重みρはゼロにリセットされる。
【０１１９】
（ｂ）後の５入力は過密でなかった。したがってこれらの入力はモデル遅延「ｍ」に等しい遅延「ｂ」を得、このことはこれらの遅延がモデル遅延より小さくならないことを反映している。しかしながら、これらのアークは尚スラックを受け取る可能性があり、そのためこれらのアークの重みρはそのまま（ｕｎｔｏｕｃｈｅｄ）で変更されない。
【０１２０】
ところでｗｈｉｌｅループ（ステップ５）中に、アーク遅延の相互依存関係から負のスラック（負のＵ）が発生する可能性がある。しかしながら、負のアーク遅延を設定するリスクはなく、その理由は相対スラック分配式の「ｍａｘ」の性質による。この第１段階の終了時に正スラックが全て分配されるわけではない。その主な理由は第１段階の間、過密アークにのみスラックを分配していることによる。当然のこととして、一部のアークは依然としてある程度柔軟である。図１７から直ぐ分かるように、凍結フラグが立っていない、入力５〜８を駆動するノードには全スラックは分配されていない。この問題は第２段階で解決される。
【０１２１】
また、設計内部の一部のノードに係るスラックは負になる可能性がある。負のスラックが発生する主因は相対スラック分配式にある。この問題は第３段階で解決される。
【０１２２】
（第２段階）正規の（ｒｅｇｕｌａｒ）正スラック分配段階。この段階はステップ１１からなる。上述したように、第１段階では正スラックのみを過密アークのセットに分配した。したがって、第１段階の終了時に完全に柔軟か部分的に柔軟なアークが残っている可能性が非常に高い（しかも望まれる）。この第２段階の目標はアーク遅延の相互依存関係を考慮して残る正スラックの何％かを分配することである。このようにして、ＩＥは、一部の正スラックを、パティショニング、ブロック配置、及びブロック間の全体的な配線のために予約する。図１８は図１７の例に対して行った正規の正スラック分配の結果を示したものである。後の５入力はモデル遅延「ｍ」より大きな遅延「ｂ」を得ているが、これはこれらのアークがタイミングクリティカルなパスに属していないことを表している。
【０１２３】
（段３段階）アーク遅延ドリブン負のスラック回収段階。この段階はステップ１２〜１９（図２０参照）からなる。図１９はこのような領域回収の結果を示したものである。最初の３入力はモデルが予測した可能な限り最小の遅延「ｍ」より小さな配分遅延「ｂ」を有するに至っている。
【０１２４】
第１段階は以下のいずれかの理由により負スラックを発生する可能性がある。
ユーザの指定したシステムレベルの制約が厳しすぎる。
第１段階の分配の貪欲な側面。
コーンアークの遅延見積り関数が控えめである。及び／又は、
コーン及びバッファツリーを抽出する基になったブールネットワークの構造。
ここで、先ず、精度を確認するために配分処理を較正（ｃａｌｉｂｒａｔｅ）する。
【０１２５】
好ましくは、レポートは第１ステップで発生した負のスラックを示す。この負のスラックが所定の比率より大きければ、タイミング制約が厳しすぎる可能性が非常に高い。反対の状況では、残り３つの原因は、アーク遅延ドリブン負のスラック回収（ａｒｃ ｄｅｌａｙ ｄｒｉｖｅｎ ｎｅｇａｔｉｖｅ ｓｌａｃｋ ｒｅｃｌａｍａｔｉｏｎ）により解決される。すなわち、負のスラックを分配するのであるが、今回はアーク遅延の関数としてである。換言すると以下のようにいえる。第１段階ではコーンアークの遅延の相互依存性に配慮してスラックを分配しようとした。これにより第１段階の終了時において、コーンアークの遅延はこれらのアークが持つべき相対長を正しく反映している。アーク遅延ドリブン負のスラック回収は、これらの相対長を維持する。第３段階の終了時において、第１段階で割り当てられ、現第２段階で遅延が減少したアークは以下の２つの遅延値をストアする。
【０１２６】
（第１の遅延値）現第２段階で制約された遅延である配分遅延値は合成スクリプトを作成するのに用いる。
【０１２７】
（第２の遅延値）第１及び第２段階から見積もられた遅延である実遅延値（ｒｅａｌｉｓｔｉｃ ｄｅｌａｙ ｖａｌｕｅ）。この実遅延は、配分遅延値と共に、過密であり、多分クリティカルであるコーンを追跡するのに役立つので、ストアされる。
【０１２８】
ＩＥにおいて、配分後、各配分セルには配分コマンドにより自動的に設定された配分属性が付く。この属性は新しいＲＴＬセルを再ロードした際、インクリメンタルな配分を行うのに用いられる。配分属性は「配分消去（ｃｌｅａｒ ｂｕｄｇｅｔ）」コマンドにより消去できる。
【０１２９】
このセクションの残りでは、物理的配分処理の主ステップを１つずつ説明する。
【０１３０】
１．７．１．３．１　ステップ１：配分アーク遅延をゼロに設定する
ＩＭＰアルゴリズムは配置ツールを駆動するためにスラックをネットに分配するように設計される。ＩＭＰアルゴリズムはゲート遅延を実ゲート遅延に、配線遅延をゼロに設定して開始する。ついでＩＭＰアルゴリズムは正スラックを配線遅延に分配する。
【０１３１】
処理を開始するに当たり、どのスラックも分配されていないものとする。したがって全コーン及びバッファツリーのアーク遅延をゼロに設定する。明らかに、配分器（ｂｕｄｇｅｔｅｒ）に結線ゲート（ｉｎｔｅｒｃｏｎｎｅｃｔｅｄ ｇａｔｅｓ）のセットとして供給される、設計の凍結断片（すなわち、どの最適化も受けない、構造上のネットリストとしてロードされた断片）には（ゼロのゲート遅延ではなく）実遅延が与えられる。
【０１３２】
１．７．１．３．２　ステップ２：アーク重みを柔軟部分の最速インプリメンテーションの関数として設定する
原ＩＰＭアルゴリズムの主なアイデアは、物理的及び電気的特性の相対重みに従い、例えばファンアウト数や駆動力に比例して、スラックを構成ネット（ｃｏｎｓｔｉｔｕｅｎｔ ｎｅｔｓ）間のパスに分配することであった。
【０１３３】
本発明において、スラックはアークの柔軟部分に係る最速インプリメンテーションの相対重みに基づいて分配される。１キューブ（１−ｃｕｂｅ）のＤＣＦコーンのアークがバッファツリーのアーク遅延のｎ倍より速くなければ、そのアークの相対重みはバッファツリーアークの相対重みよりｎ倍以上大きいはずである。
【０１３４】
１．７．１．３．３　ステップ３、８、１５、１８：タイミングを伝搬する
タイミングの伝搬は、アーク配分遅延を用いた、到着時刻伝搬、所要時間伝搬である。これはＣＴＥのサービスである。この伝搬の終了時において、最小スラックＵをアークベースから抽出することができる。
【０１３５】
１．７．１．３．４　ステップ４、９、１４：アーク重みを伝搬する
アーク重みの伝搬は標準伝搬である（標準伝搬はタイミング検証アルゴリズムが行うタイミング情報の伝搬である）。これはＣＴＥのサービスであることを前提とする。この伝搬の終了時において、最大重みＰをアークベースから抽出することができる。
【０１３６】
１．７．１．３．５　ステップ５：過密コーンの検出
過密コーンの検出は、単に、全コーン及びバッファツリーを反復し、込み入ったコーンを検出することからなる。定義から、過密コーンは過密アークのセットを含む。過密アークのセットを検出する１つの方法は、コーンアークの分配スラック（ρ＊Ｕ／Ｐ）をコーンアーク遅延の相互依存関係から得られる実現可能なインプリメンテーションのセット（ＭＤＣ曲線）と比較することである。この比較の方法は下記の通り。
【０１３７】
（１）テーブル内に完全に非平衡のコーンインプリメンテーションに係る最高速から最遅速までのアーク遅延（コーンのＭＤＣ）を表現する。これはコーンの柔軟モデル及び初期ライブラリ特性から直ちに得られる。
（２）アークの分配スラックを最高速から最遅速の順に並べる。
（３）再遅速から最高速まで反復し、分配スラックがＭＤＣアーク遅延より小さくなった時点で反復を止める。そのときのアークと残り全部のアークが過密アークのセットを構成する。
【０１３８】
この方法は図２１に説明されており、図中、８入力コーンのモデル遅延曲線（ＭＤＣ）は「ｍ」で表され、分配スラックは「ｄｓ」で表される。再遅速の入力、すなわち８番目の入力から始めて、反復は、分配スラックがモデルの見積もったゲート遅延より小さくなる５番目の入力で停止する。したがって、１〜５番目の入力が過密アークということになる。
【０１３９】
１．７．１．３．６　ステップ６：過密コーンにおいてスラックを分配する
過密コーンにおいてスラックを分配する処理を図２２に示し、図２３で説明する。
【０１４０】
図２３において、過密アークのセットは５個の速いアークからなる。最初の３つのモデル遅延曲線（ＭＤＣ）アークは最初の３つのＭＤＣの中央値（ｍｅｄｉａｎ）に設定される。４番目のアーク遅延は４番目のＭＤＣに設定され、５番目のアーク遅延は５番目のＭＤＣに設定される。同じことが残る３つの過密でないアークについて行われる。しかし、重要な相違は、これら残り３つのアークについては更にスラック分配を受ける、すなわち柔軟性を残しているのに対して、最初の５つは柔軟性を何らかの残しておらず、完全に凍結されている点である。
【０１４１】
１．７．１．３．７　ステップ７：過密コーンにおいて重みを更新する
上述した方法により検出された過密アークはゼロの重みとなり、一方過密でないアークはその重みが変更されずそのまま保たれる。図２３の例について述べると、最初の５つのアークはゼロに設定されるのに対し、残りのアークの重みは変更されずに保たれる。
【０１４２】
なお、重みの更新は前のセクションで示したスラック分配関数内部で実際にインプリメントされる。
【０１４３】
１．７．１．３．８　ステップ１１：正スラックの何％かを柔軟アークに分配する
これは下記の式を用いて行う。
2004513436.tif 000029
これは最上位レベルの結線（ｉｎｔｅｒｃｏｎｎｅｃｔ）のために一部のスラックを予約する。ここで、
（１）もしτ＝０ならば、論理は過剰最適化（ｏｖｅｒ−ｏｐｔｉｍｉｚｅｄ）されている。すなわち得られた見積り領域（ａｒｅａ）が実際の最終領域に比べて広すぎる。
（２）もしτ＝１００ならば、最上位ラベルの結線のために何ら伝搬遅延は予約されない。
【０１４４】
このように、τは残りのスラックの関数である。残りの正スラックを完全には分配しなかったのであるから、ＩＭＰアルゴリズムは１回の反復で十分である。ＵとＰも前のステップのものが使用できるので、時間を分配するだけでよい。τを定義するために、最初にユーザは、最上位レベルのネットに関する平均最悪遅延を与える何らかの変数（ｍａｘ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈ）を指定する。以降、τは次式により動的に計算される。
2004513436.tif 000030
全設計タイミングパスのうち：
（１）一部は最上位レベルのネットを全く含んでいない。
（２）一部は１つの最上位レベルのネットを含む。
（３）一部は複数の最上位レベルのネットを含む。
【０１４５】
タイミングパスの長さをｐａｔｈ＿ｌｅｎｇｔｈとする。このパスに属する最上位レベルのネットについて消費される、タイミングパスの長さの部分をｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈで定義する。（パスが最上位レベルのネットを全く含んでいなければ、このパスのｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈはゼロ（ｎｕｌｌ）である。パスが最上レベルのネットを複数個含んでいれば、ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈはこのパスに属する異なる最上位レベルネットの遅延を合計したものである。）設計におけるタイミングパスの最悪のｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈをｗｏｒｓｔ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈで定義する。ユーザの指定したｍａｘ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈはｗｏｒｓｔ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈを制約する（ｍａｘ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈの値は前の同様な設計に基づいたユーザの経験により設定される）。「設計に対する計画（Ｐｌａｎｎｉｎｇ ｆｏｒ Ｐｅｒｆｏｒｍａｎｃｅ）」オッテン及びブレイトン（Ｏｔｔｅｎ ａｎｄ Ｂｒａｙｔｏｎ）著、ＤＡＣ９８、ｐｐ１２２〜１２７にはクロック周期の半分が示唆される。
【０１４６】
１．７．１．３．９　ステップ１２：ＢＤＣをＲＤＣに複製する
以降のステップの目標は前のステップで見積もった配分アーク遅延を圧縮することである。この圧縮の目標は正しく合成スクリプトを作成するために、ゼロのスラックに達することである。しかしながら、この圧縮はタイミング制約に達することを困難にする。したがって、初期の配分見積りアーク遅延を追跡記録して、負のスラック回収後に、タイミング過密をユーザに報告できるようにする。これによりユーザは圧縮アークを含むコーンがどこに配置されているか知ることができる。定義により、圧縮アーク（ｃｏｍｐｒｅｓｓｅｄ ａｒｃ）は、その配分遅延がモデルの予測した遅延より小さい（ＢＤＣ＞ＭＤＣ）アークである。アーク圧縮の大きさのオーダーから設計者は合成ツールが尚も成功する可能性が高いか、あるいはＲＴＬコードを変更すべきかを判断することができる。
【０１４７】
１．７．１．３．１０　ステップ１３：アーク重みを凍結アーク遅延の関数として設定する
このステップは即時（ｉｍｍｅｄｉａｔｅ）である。
Ａｒｃ Ｗｅｉｇｈｔ＝Ｆｒｏｚｅｎ ａｒｃ ｄｅｌａｙ
【０１４８】
１．７．１．３．１１　ステップ１６：負スラックを検出する
全到着時刻伝搬／所要時間逆伝搬の完了時点で負スラックの検出は即時である。
【０１４９】
１．７．１．３．１２　ステップ１７：負スラックを分配する
負スラックの分配は伝統的ＩＭＰスラック分配により行われる。
2004513436.tif 000031
この負スラック分配は負のスラックパスに属するアークの遅延を圧縮する。
【０１５０】
１．７．２　配分の領域見積り
一旦各コーン／バッファツリーを配分したら、その領域を見積もる。以下の方法が使用できる。
【０１５１】
（１）方法１：テクノロジーマッパーを用いて１つずつ全コーン／バッファツリーをマッピングして強制的に配分アーク遅延に配慮する。インプリメンテーションの観点からは、これは、エプシロンテクノロジーマッパ（ｅｐｓｉｌｏｎ ｔｅｃｈｎｏｌｏｇｙ ｍａｐｐｅｒ）を用いて即時である。
【０１５２】
（２）方法２：（例えば、ブール最適化を行う）ＩＥ見積り器により得られた初期の領域を配分アーク遅延ｄとアーク最小遅延ｄｒｍｉｎとの比較から生成した因子でスケーリングする。
【０１５３】
方法１の利点は、以下の通り。
（１）領域見積りの精度が高い。
（２）圧縮した遅延が初期の配分遅延と異なる場合、ＩＥは、これらの圧縮した遅延が妥当かどうかについて判断する機会がある。
【０１５４】
方法１の主な欠点はＣＰＵとメモリを消費することである。
【０１５５】
方法２の利点と欠点は方法１の利点と欠点の反対である。方法選択の鍵は方法２を使用した場合に発生する相対的な見積り誤差を把握することである。初期のマッピングはある程度のファンインとファンアウトの限度により制御される、見積り器によって行われる点から、方法２で生じる誤差は約１０〜１５％となろう。したがって、方法２を使用することにした（後で方法１を使用することもできる）。このように、本発明は配分に基づいた因子により見積り領域を適応する。高いタイミング過密を特定したブロックについてユーザは最適化／合成を行うことが好ましい。
【０１５６】
１．８　タイミング検証
ユーザが配分後のタイミング（ブロック及びゲートの配置を変更した場合のタイミングパスの変更）について検査を行えるように、３種類のメカニズムを提案する。
【０１５７】
ユーザはＢｕｉｄｔｉｍｅの「ｒｅｐｏｒｔ＿ｔｉｍｉｎｇ」コマンドにアクセスする。このコマンドは上位ｎ個の最悪パスの終点（ｅｎｄ ｐｏｉｎｔ）を報告する（ここで、ｎはユーザ指定であり、デフォルト値は１０である）。ここでユーザはこのパスの終点を１つ選択し、そのパス終点で終わるパスを全てトレースする。ユーザがグラフィカルモードにいて、且つフロアプランが完了していれば、そのパスがＩＥのフロアプランにクロスプローブ（ｃｒｏｓｓ−ｐｒｏｂｅ）される（見た目は現ＰＤＰ／Ｐｅａｒｌ ｌｉｎｋにあるのと同じ形態で）。このタイミング解析は実タイミングアークに基づいている。すなわちタイミング解析は、見積りタイミングに違反があればタイミング違反を報告する。ｒｅｐｏｒｔ＿ｔｉｍｉｎｇが負のスラックを報告するもう１つの要因は設計に配分を受けない、多数の固定構造ネットリストが含まれている場合である。ｒｅｐｏｒｔ＿ｔｉｍｉｎｇコマンドの魅力的な強化は報告したパスセグメントに関する属性を付加してユーザにパスのどの部分が「固定」されたかを報告することである。
【０１５８】
ＩＥにおいて、設計者は「ｒｅｐｏｒｔ＿ｔｉｍｉｎｇ＿ｃｏｎｇｅｓｔｉｏｎ」コマンドにアクセスできる。シェル（ｓｈｅｌｌ）モードにおいて、このコマンドは：
（１）全論理セルにおける過密コーン／バッファツリーの比を報告する。過密コーンはそれらのＢＤＣとＲＤＣを比較して自動的に検出される。
（２）パティショニングが完了していれば、全物理的ブロックにおける過密コーン／バッファツリーの比を報告する。
【０１５９】
グラフィカルモードにおいて、このコマンドは：
（１）全論理ブラウザ（ｌｏｇｉｃａｌ ｂｒｏｗｓｅｒ）に、全論理セルにおける過密コーン／バッファツリーの比を報告する。
（２）パティショニングが完了していれば、全物理ブラウザ（ｐｈｙｓｉｃａｌ ｂｒｏｗｓｅｒ）に、全物理的ブロックにおける過密コーン／バッファツリーの比を報告する。
（３）ブロック配置が完了していれば、フロアプランのウインドウ枠に、例えば非常にタイミングが込み合ったブロックを赤で色分けすることによりタイミングの過密を報告する。
【０１６０】
最後に、ＩＥにおいて、設計者は「ｒｅｐｏｒｔ＿ｂｕｄｇｅｔ」コマンドにアクセスすることができる。このコマンドは、実遅延ではなく配分遅延を使用する点を除き、ｒｅｐｏｒｔ＿ｔｉｍｉｎｇコマンドと等価である。ｒｅｐｏｒｔ＿ｂｕｄｇｔコマンドは、固定論理がパス制約の値を超えた場合に負のスラックを報告する。
【０１６１】
１．９　タイミングドリブンによるパティショニング
このセクションでは、タイミング最適化ループが物理的パティショニングに与えるサービス及び／又は情報について説明する。
【０１６２】
タイミング最適化ループは下記のサービスを物理的パティショニングに供給する。
【０１６３】
（１）セル過密コーン／バッファツリー比
（２）階層ネットに係る最悪スラック
物理的パティショニングの目標は負のスラック論理ネット上に物理的ネットを構築することを回避することである。
【０１６４】
これらのサービスを物理的パティショニングに提供するために下記に示す３つの機能が用意される。
【０１６５】
（１）タイミング伝搬を行う機能
（２）ネットベース（ｎｅｔ ｂａｓｅ）上のスラックに関する問い合わせ
（３）論理セルベース上の過密の比に関する問い合わせ
１．１０　タイミングドリブンによるブロック配置
このセクションではタイミング最適化ループがブロック配置器（ｂｌｏｃｋ ｐｌａｃｅｒ）に与えるサービス及び／又は情報について説明する。
【０１６６】
タイミング最適化ループはブロック配置器に階層ネット上のスラックＵを識別するサービスを提供する。
【０１６７】
ブロック配置器の目標は負スラック物理的ネットを可能な限り小さく維持することである。これはブロック配置器にネットの重みを指定する（ネット重みは配置器に対する制約である）。デフォルトとしてネット重みは１に設定される。ユーザがネット重みをｎ（ここで、ｎ＞１）に設定した場合、その意味は、そのネットの配線長がブロック配置器からはｎ倍以上長く見えるということである（ブロック配置器は最上位レベルのネットの全配線長を最小化しようとする）。
【０１６８】
これらのサービスを物理的パティショニングに提供するために、以下の処理が提供される。
【０１６９】
（１）配線配分を行う機能。配線配分方法（処理）の１つの具体例を図２４に示す。この方法は、再び分配されることのない、負のスラックをノードに持たせる。当然のこととして、負スラックタイミングパスに属する最上位レベルのネットは何らかの分配タイミングスラックを受けない（０．００１ｎｓの分配スラックを受け取ったノードと、負スラックに属しているという理由でスラックを全く受けなかったノードとを区別したいのであれば、ノードに基づいた、負スラックパスが負である、該当するＵｍｉｎにもアクセスする）。
（２）ネットベース上の配分スラックに関する問い合わせ
【０１７０】
１．１１　タイミングドリブンによる全体的な配線＋寄生見積り
このセクションの目標は以下を提示することである。
【０１７１】
（１）タイミング最適化ループがタイミングドリブンによる全体的な配線のために行う、１．７．１．３で説明した配線配分処理を主構成とするサービス。全体的な配線処理器（ｒｏｕｔｅｒ）は最上位レベルのネット遅延配分から計算した重みを得る。ユーザ指定の金属層と共に、この重みから、ＣＣＣ全体的な配線処理器（ケーデンスの設計ツール）はタイミングドリブンによるモード（ｔｉｍｉｎｇ ｄｒｉｖｅｎ ｍｏｄｅ）で動作する。ＣＣＴが全体的な配線を完了すると直ちに最上位レベルのバッファ挿入処理は全体的な配線から寄生を抽出し、遅延配分に基づいてノードをバッファリングする。
【０１７２】
（２）タイミング最適化ループを継続するために全体的な配線処理が行うサービス。これらのサービスはタイミング最適化ループに以下のデータ項目をバックアノテートすることからなる。
【０１７３】
（１）ソースからシンクベースへの、バッファを含むネットの遅延
（２）ソースからシンクベースへの、バッファを含まないネットの遅延
（３）ソースから見た集中（ｌｕｍｐｅｄ）容量
ネットの遅延がゼロでなくなったら、（例えば図２２に示すように、）それを（論理階層構造に基づいて）柔軟エッジグラフにアノテートする。
【０１７４】
１．１２　時間配分
一部のノードについて、全体的な配線後の遅延（ｐｏｓｔ ｇｒｏｂａｌ ｒｏｕｔｉｎｇ ｄｅｌａｙｓ）は配分遅延より小さくなる可能性がある。また、物理的配分は一部の他のノードに関して大きすぎる遅延を予約した可能性がある。したがって、一旦全体的な配線が完了したら、正規の正スラック分配と負スラック回収の両方を実行する必要がある。これがインクリメンタルな配分の目標であり、ＩＥにおいて、ｂｕｄｇｅｔ＿ｔｉｍｅコマンドにより呼び出される。図２６は時間配分処理の具体例を示したものである。
【０１７５】
ステップ０：アーク遅延を前のステップにおいて見積もった新しい寄生で適応する。
ステップ１：配分遅延を実（ｒｅａｌｉｓｔｉｃ）遅延にリセットする。最終配分（ｆｉｎａｌ ｂｕｄｇｅｔｉｎｇ）の目標は配分遅延を再計算することである。
ステップ２：パティショニング、ブロック配置、全体的な配線は正のスラックを生成した可能性がある。最上位レベルのネットのために遅延を予約しても意味がないので、ｍａｘ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈは無視する。
この場合、全正スラックを論理に分配する。
ステップ３〜９：配分処理の負スラック回収段階と同じである（例えば、図２０参照）。
【０１７６】
１．１３　合成スクリプトの作成
合成スクリプトの作成（ｓｙｎｔｈｅｓｉｓ ｓｃｒｉｐｔ ｇｅｎｅｒａｔｉｏｎ）は「ｗｒｉｔｅ ｓｙｎｔｈｅｓｉｓ ｆｌｏｗ」コマンドを用いて行う。このコマンドは設計の論理階層インスタンスを引数として受け取る。論理階層インスタンスの各々について、ＩＥのフロアプランに基づいた、合成／最適化を行うのに必要な全関連コマンドを含む合成スクリプトを作成する。これらのコマンドの１つは合成ツールにＷＬＭファイルを開くように指示し、もう１つのコマンドは合成ツールに制約ファイルを開くように指示する。このドキュメントでは、制約ファイル作成と配線負荷モデルファイル作成に焦点を当てる。
【０１７７】
１．１３．１　配線負荷モデルファイル作成
配線負荷モデル作成はＩＥの作成した配線負荷モデルをＴＬＦファイルにダンプすることからなる。
【０１７８】
図２７の物理的階層構造の場合、ＩＥは、次の２つの配線負荷モデル（ｗｉｒｅ ｌｏａｄ ｍｏｄｅｌｓ）を作成する。
（１）ブロックｂｌｏｃｋ１内部用ｗｌｍ＿ｂｌｏｃｋ１
（２）ブロックｂｌｏｃｋ２内部用ｗｌｍ＿ｂｌｏｃｋ２
１．１３．２　アンビットのタイミング制約（ＡＴＣ）ファイル作成
制約ファイル作成は下記の情報を含むアンビットの制約ファイル（Ａｍｂｉｔ ｔｉｍｉｎｇ ｃｏｎｓｔｒａｉｎｔ）ファイルを作成することからなる。
（１）配分タイミング制約
（２）セル単位での、使用する配線負荷モデルの仕様
（３）環境情報
【０１７９】
１．１３．２．１　配分タイミング制約の作成
論理セルのタイミング制約は配分アーク遅延値から作成される。これらのタイミング制約は次の要素から構成される。
（１）設計のクロックの波形
（２）クロックの宣言
（３）クロック関連入力／出力遅延
（４）マルチサイクル（ｍｕｌｔｉ−ｃｙｃｌｅｓ）
【０１８０】
１．１３．２．２　配線負荷モデルの仕様
作成した制約ファイルに係る選択したインスタンスに属する論理階層インスタンスのそれぞれについて、使用するＷＬＭを指定するステートメントを得る。図２７に示す論理及び物理の階層構造を前提とすると、インスタンスＡに係る制約ファイルは以下を含む。
（１）インスタンスａ１についてｗｌｍ＿ｂｌｏｃｋ１を使用する旨の指示
（２）インスタンスｂ１についてｗｌｍ＿ｂｌｏｃｋ２を使用する旨の指示
【０１８１】
１．１３．２．３　環境情報
環境情報は以下の項目からなる。
（１）入力端子を駆動するゲートのタイプ
（２）各出力端子にかかる負荷
（３）出力端子のファンアウト
（４）入力端子の最大ファンアウト（ｍａｘ＿ｆａｎｎｏｕｔ）
（５）入力端子にかかる最大負荷（ｍａｘ＿ｌｏａｄ）
（６）ノードを駆動する外部インスタンス端子（ｉｎｓｔ＿ｔｅｒｍｉｎａｌｓ）の数
【０１８２】
１．１３．２．３．１　入力端子を駆動するゲートのタイプ
入力端子を駆動するゲートのタイプを指定する合成指示は、「ｓｅｔ ｂｕｄｇｅｔ＿ｏｕｔｐｕｔ＿ｄｒｉｖｅｒ＜ｃｅｌｌＮａｍｅ＞」コマンドによりユーザ制御可能（ｕｓｅｒ−ｃｏｎｔｒｏｌｌｅｄ）である。ユーザが設定すると、ＩＥは、ｃｅｌｌＮａｍｅにより入力端子を駆動するセルのタイプを指定する。ユーザから設定がない場合，次の２つのケースが考えられる。
【０１８３】
（１）入力端子がＩＥによるバッファ付き最上位レベルの物理的ネットにより駆動される。この場合、ＩＥは、入力端子ドライバとしてそのネットをバッファリングするバッファを指定する。
（２）入力端子がＩＥによるバッファ付き最上位レベルの物理的ネットにより駆動されない。この場合、ＩＥは、入力端子ドライバとしてライブラリの最速２入力ＮＡＮＤゲートを指定する。
【０１８４】
１．１３．２．３．２　出力端子の負荷
出力端子の負荷の計算は、ユーザが「ｓｅｔ ｂｕｄｇｅｔ＿ｆａｎｎｏｕｔ＜ｖａｌｕｅ＞」コマンドを介して指定する全体的なｂｕｄｇｅｔ＿ｆａｎｎｏｕｔ値に依存する。更に、出力端子の負荷の計算は、「ｓｅｔ ｂｕｄｇｅｔ＿ｉｎｐｕｔ＿ｃａｐａｃｉｔａｎｃｅ＜ｖａｌｕｅ＞」コマンドを介して設定される、ライブラリの平均入力端子容量値にも依存する。
【０１８５】
出力端子の配分負荷の計算は以下のように出力端子のトポロジーに依存する。
【０１８６】
（１）出力端子が最上位レベルの物理的ネットを駆動しない（図２８におけるセルａ１の出力端子ｏ１参照）。換言すると、その端子に接続されたノードは現配分インスタンスを含む物理的ブロック内部に完全に収納（ｅｎｃｌｏｓｅｄ）される。この場合、負荷は次の式により計算される。
2004513436.tif 000032
更に、出力端子が、図２８のように３つの他の階層構造セルではなく、１５個の他の階層構造セルを駆動する場合でも、ＩＥは、ｂｕｄｇｅｔ＿ｆａｎｎｏｕｔ限界値を使用し、すなわち、ＩＥはバッファがｂｌｏｃｋ１内部に正しく挿入されると想定する。このような状況では、ユーザにセルａ１ではなく、ｂｌｏｃｋ１を配分するように薦めるとよい。このことはｂｌｏｃｋｉが設計における論理セルに対応していれば可能である（ＩＥは、更に、論理階層構造を更新してそれが物理階層構造と一致するようにする）。
【０１８７】
（２）出力端子がバッファ付き最上位レベルの物理的ネットのみを駆動する（図２９のインスタンスａ２の出力端子ｏ１参照）。この場合、出力負荷は、出力端子とバッファ間の配線容量と、バッファの入力容量との和で計算される。
【０１８８】
（３）出力端子がバッファのない最上位レベルのネットのみを駆動する（図３０参照）。この場合、最上位レベルのネットが抵抗性でないならば、ＩＥの時間バジェッタはそのノードについてＲＣ遅延を計算せず、次のように負荷を見積もる。
2004513436.tif 000033
ここで、凍結ブロックの入力容量は凍結ブロックのＴＬＦモデルから読み取れるか、あるいは凍結ブロックがネットリストで与えられていれば（配線負荷モデルとブロック内部の負荷ピンの入力容量とを用いて）計算される。例えば、図３０の設計の場合、セルａ２の出力端子は下記の要素からなる負荷を駆動する。
【０１８９】
（１）物理的ネットの最上位レベルの部分（太線）に係る配線容量（ｃａｐ）。　（２）ｂｌｏｃｋ４内部の全ｃａｐ。このｃａｐは３つの負荷ｃａｐと３のファンアウトに対応する配線ｃａｐから構成される。
（３）ＴＬＦモデルとして与えられる、ｂｌｏｃｋ３の入力ｃａｐ。
（４）ｂｌｏｃｋ２は柔軟であるので、合成の最適化の際、入力ファンアウトを１に低減する。したがって、ｂｌｏｃｋ２について、負荷は１のファンアウトに対応する、ｂｕｄｇｅｔ＿ｉｎｐｕｔ＿ｃａｐａｃｉｔａｎｃｅ＋ｗｉｒｅ ｃａｐに相当する。
最上位レベルのネットが抵抗性であれば、ＩＥの時間バジェッタはそのノードについてＲＣ遅延を見積もり、ＩＥの負荷バジェッタはＣｅｆｆに対応する負荷を指定する。この場合、最上位レベルのネットのＲＣ遅延は既にタイム配分中に考慮されている。
（５）あるいは、出力端子はバッファ付き／バッファなし最上位レベルのネットとその端子を囲むブロック内部にある一部の他のゲートとの組合せを駆動し、この場合、ＩＥは、前述した異なる式を用いて負荷を計算する。
【０１９０】
１．１３．２．３．３　出力端子のファンアウト
出力端子の配分ファンアウトの計算は出力端子のトポロジーに依存する。
【０１９１】
１つのケースでは、出力端子は最上位レベルの物理的ネットを駆動しない（図２８におけるセルａ１の出力端子ｏ１参照）。換言すると、その端子に接続されたノードは現配分インスタンスを含む物理的ブロック内部に完全に収納（ｅｎｃｌｏｓｅｄ）される。この場合、ファンアウトは次の式により計算される。
ｆａｎｏｕｔ＝ｂｕｄｇｅｔ＿ｆａｎｏｕｔ　　　　　　　　　　　　　　　　　　　　　　（３５）
この場合、出力端子が、図２８のように３つの他の階層構造セルではなく、１５個の他の階層構造セルを駆動する場合でも、ＩＥは、ｂｕｄｇｅｔ＿ｆａｎｎｏｕｔ限界値を使用し、すなわち、ＩＥは、バッファがｂｌｏｃｋ１内部に正しく挿入されると想定する。このような状況では、ユーザにセルａ１ではなく、ｂｌｏｃｋ１を配分するように薦めるとよい。このことはｂｌｏｃｋｉが設計における論理セルに対応していれば可能である（ＩＥは、更に、論理階層構造を更新してそれが物理階層構造と一致するようにする）。
【０１９２】
出力端子がバッファ付き最上位レベルの物理的ネットのみを駆動する（図２９のインスタンスａ２の出力端子ｏ１参照）場合、出力ファンアウトは、バッファの入力端子のファンアウトである（１にデフォルトされる）。
【０１９３】
そして、出力端子がバッファのない最上位レベルのネットのみを駆動する（図３０参照）場合、ＩＥの時間バジェッタは次のようにファンアウトを見積もる。
2004513436.tif 000034
ここで、凍結ブロックの入力ファンアウトは凍結ブロックのＴＬＦモデルから読み取れるか、あるいは凍結ブロックがネットリストで与えられていれば計算される。例えば、図３０の設計の場合、セルａ２の出力端子ｏ１は下記の要素からなるファンアウトを駆動する。
【０１９４】
（１）ｂｌｏｃｋ４内部の全ファンアウト。
（２）ＴＬＦモデルとして与えられる、ｂｌｏｃｋ３の入力ファンアウト。
（３）ｂｌｏｃｋ２は柔軟であるので、合成の最適化の際、入力ファンアウトを１に低減する。
【０１９５】
２．　シェル（ＴＣＬ）インタフェース
２．１　タイミングの初期化
タイミングは次のコマンドを介して初期化される。
ｉｎｉｔｉａｌｉｚｅ＿ｔｉｍｉｎｇ＜［ＡＴＣ］ｆｉｌｅ＞
ここで、ｉｎｉｔｉａｌｉｚｅ＿ｔｉｍｉｎｇはインクリメンタルである。既に配分され、（配分コマンドが自動設定した）配分属性をなお有しているＲＴＬセルはその配分値を維持する。
【０１９６】
２．２　タイミング違反の報告
タイミング検証は、下記のＢｕｉｄＴｉｍｅコマンドを介して報告される（ＢｕｉｄＴｉｍｅユーザーズガイド参照）。
ｒｅｐｏｒｔ＿ｔｉｍｉｎｇ
なお、ｒｅｐｏｒｔ＿ｔｉｍｉｎｇコマンドは報告パスに関し、固定遅延について「Ｆ」のフラグを付け、配分遅延について「Ｂ」のフラグを付ける。
【０１９７】
ｒｅｐｏｒｔ＿ｔｉｍｉｎｇコマンドはユーザがｉｎｉｔｉａｌｉｚｅ＿ｔｉｍｉｎｇコマンドを介して設計を配分すると直ちに使用可能（ｅｎａｂｌｅｄ）になる。
【０１９８】
ｒｅｐｏｒｔ＿ｔｉｍｉｎｇは、寄生がまだ抽出されていないかあるいは有効でなくなったら、最初にそれらを自動的に抽出する。
【０１９９】
２．３　物理的配分
物理的配分は次のコマンドで行われる。
ｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌ
ｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドは、最上位レベルの結線遅延（ｉｎｔｅｒｃｏｎｎｅｃｔ ｄｅｌａｙｓ）のために部分的にスラックを予約しながら、柔軟な組合せ回路ブロック間にタイミングスラックを分配する。最上位レベルの結線すなわち相互接続のために予約されるスラックの部分はｓｅｔ＿ｍａｘ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈコマンドを介してユーザ制御可能（ｕｓｅｒ−ｃｏｎｔｒｏｌｌｅｄ）である。
【０２００】
終了時に、ｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドは全配分セルに配分属性を付ける（この属性は「配分消去（ｃｌｅａｒ ｂｕｄｇｅｔ）」コマンドを介して消去できる）。
【０２０１】
ここで、ｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドは、なお有効な配分属性を有するセルを再び配分しない意味においてインクリメンタルである。
【０２０２】
また、ｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドは配分による領域への影響を解析するので、セルのゲートに関する複雑さの見積りは配分コマンドにより変更される。ブロック配置後に、ｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドを実行した場合、ユーザはブロック領域がｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドにより変更されることが分かる。
【０２０３】
配分はタイミングドリブンによるパティショニング、タイミングドリブンによるブロック配置、及びタイミングドリブンによる最上位レベルの全体的な配線に先立って行われる。
【０２０４】
設計者がｉｎｔｉａｌｉｚｅ＿ｔｉｍｉｎｇコマンドを使用すると、直ちにｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドは使用可能となり、全体的な配線が行われると直ちに使用不能（ｄｉｓａｂｌｅｄ）になる。通常、ｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドは物理的パティショニング前に行われる。しかしながら、インクリメンタルな変更のために、配分コマンドは物理的パティショニング後やブロック配置後にも実行できる。図３１はインクリメンタルなシナリオを説明する。ここで、ステップ１０で行われる配分はインクリメンタルであり、その理由はステップ４で実行した全体的な配分が全配分インスタンスについて配分属性を設定するからである（もしユーザがステップ１０より前に全配分属性を消去したのであればステップ１０で行われる配分は全体的なになる。）。
ｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドは、寄生がまだ抽出されていないかあるいは有効でなくなったら、最初にそれらを自動的に抽出する。
【０２０５】
２．４　配分の報告
分配した配分は下記のコマンドを介して検査される。
ｒｅｐｏｒｔ＿ｂｕｄｇｅｔ
ｒｅｐｏｒｔ＿ｂｕｄｇｅｔコマンドは何らかの固定遅延の理由でタイミング制約に違反したパスを報告する。
【０２０６】
ｒｅｐｏｒｔ＿ｂｕｄｇｅｔコマンドはユーザがｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドにより設計を配分すると直ちに使用可能になる。
【０２０７】
ｒｅｐｏｒｔ＿ｂｕｄｇｅｔコマンドは、寄生がまだ抽出されていないかあるいは有効でなくなったら、最初にそれらを自動的に抽出する。
【０２０８】
２．５　タイミング過密の報告
タイミング過密の報告は下記のコマンドを介して行われる。
2004513436.tif 000035
ユーザが指定した引数（ａｒｇｕｍｅｎｔ）に従い、論理セルの各々、又は物理的ブロックの各々について柔軟アーク遅延の総数に対する過密柔軟アーク遅延の比が報告される。配分アーク遅延とモデルアーク遅延との差がｔｏｌｅｒａｎｃｅＶａｌｕｅより大きくなり次第、アークは過密であるとみなされる。デフォルトではｔｏｌｅｒａｎｃｅＶａｌｕｅはゼロ（ｎｕｌｌ）であるが、ユーザ／設計者により設定可能である。ｃｅｌｌＮａｍｅとｂｌｏｃｋＮａｍｅはいずれもワイルドカードを受け入れるように設定される。
【０２０９】
ｒｅｐｏｒｔ＿ｔｉｍｉｎｇ＿ｃｏｎｇｅｓｔｉｏｎコマンドはユーザがｂｕｄｇｅｔ＿ｐｈｙｓｉｃａｌコマンドにより設計を配分すると直ちに使用可能になる。
【０２１０】
ｒｅｐｏｒｔ＿ｔｉｍｉｎｇ＿ｃｏｎｇｅｓｔｉｏｎコマンドは、寄生がまだ抽出されていないかあるいは有効でなくなったら、最初にそれらを自動的に抽出する。
【０２１１】
２．６　時間配分
時間配分は下記のコマンドを介して実行される。
ｂｕｄｇｅｔ＿ｔｉｍｅ
この最終配分の目標は、バッファの挿入を含む全体的な配線の実行後に正と負の両方のスラックを再分配することである。ｂｕｄｇｅｔ＿ｔｉｍｅコマンドは全体的な配線が利用可能な限り使用可能である。最終配分を行う理由として下記の項目が含まれる。
【０２１２】
（１）最上位レベルの結線に係る実遅延を考慮して、タイミングの解析とタイミング過密の報告を行うこと
（２）設計者が並列的な（ｃｏｎｃｕｒｒｅｎｔ）インプリメンテーション法を望む場合に備えて配分合成スクリプトを作成すること
【０２１３】
２．７　ドントタッチ属性の設定
ユーザは下記のコマンドを介してドントタッチ（ｄｏｎｔ＿ｔｏｕｃｈ）属性を設定する。
ｓｅｔ＿ｄｏｎｔｏｕｃｈ＜ｉｎｓｔＮａｍｅ＞
どのゲートレベルのリストもデフォルトではｄｏｎｔ＿ｔｏｕｃｈとなる。ｄｏｎｔ＿ｔｏｕｃｈインスタンスは配分コマンドにより配分されない。
【０２１４】
２．８　ドントタッチ属性の消去
ユーザは下記のコマンドを介してｄｏｎｔ＿ｔｏｕｃｈ属性を消去する。
ｃｌｅａｒ＿ｄｏｎｔ＿ｔｏｕｃｈ＜ｉｎｓｔＮａｍｅ＞
【０２１５】
２．９　配分属性の消去
インクリメンタルな配分を可能にするために、配分属性は配分コマンドにより自動的に設定される。この属性は下記のコマンドを介して消去される。
ｃｌｅａｒ＿ｂｕｄｇｅｔ＜ｉｎｓｔＮａｍｅ＞
【０２１６】
２．１０　最上位レベルのパス長の最大値設定
タイミングパスの長さをｐａｔｈ＿ｌｅｎｇｔｈとする。このパスに属する最上位レベルのネットについて消費される、タイミングパスの長さの部分をｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈで定義する。（パスが最上位レベルのネットを全く含んでいなければ、このパスのｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈはゼロ（ｎｕｌｌ）である。パスが最上レベルのネットを複数含んでいれば、ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈはこのパスに属する異なる最上位レベルネットの遅延を合計したものである。）設計におけるタイミングパスの最悪のｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈをｗｏｒｓｔ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈで定義する。ユーザの指定したｍａｘ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈはｗｏｒｓｔ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈを制約する。ｍａｘ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈは下記のコマンドを介して指定される。
ｓｅｔ ｍａｘ＿ｔｏｐ＿ｌｅｖｅｌ＿ｐａｔｈ＿ｌｅｎｇｔｈ＜ｄｅｌａｙＶａｌｕｅ＞
ｄｅｌａｙＶａｌｕｅは配分コマンドにより使用される。
【０２１７】
２．１１　配分出力ドライバの指定
セルの入力端子を駆動するゲートのタイプは下記のコマンドを介して指定される。
ｓｅｔ ｂｕｄｇｅｔ＿ｏｕｔｐｕｔ＿ｄｒｉｖｅｒ＜ｃｅｌｌＮａｍｅ＞
この指示は「ｗｒｉｔｅ ｓｙｎｔｈｅｓｉｓ ｆｌｏｗ」コマンドにより使用される。
【０２１８】
２．１２　配分全体的なファンアウトの指定
セルの入力端子を駆動するゲートのタイプは下記のコマンドを介して指定される。
ｓｅｔ ｂｕｄｇｅｔ＿ｏｕｔｐｕｔ＿ｄｒｉｖｅｒ＜ｃｅｌｌＮａｍｅ＞
この指示は「ｗｒｉｔｅ ｓｙｎｔｈｅｓｉｓ ｆｌｏｗ」コマンドにより使用される。デフォルトは最速２入力ＮＡＮＤゲートである。
【０２１９】
２．１３　配分全体的なファンアウトの指定
出力端子の負荷の計算は全体的なｂｕｄｇｅｔ＿ｆａｎｎｏｕｔ値に依存し、ｂｕｄｇｅｔ＿ｆａｎｎｏｕｔ値は下記のコマンドを介して指定される。
ｓｅｔ ｂｕｄｇｅｔ＿ｆａｎｏｕｔ＜ｆａｎｏｕｔＶａｌｕｅ＞
この指示は「ｗｒｉｔｅ ｓｙｎｔｈｅｓｉｓ ｆｌｏｗ」コマンドにより使用される。デフォルトは「４」である。
【０２２０】
２．１４　ライブラリ平均入力端子負荷の指定
ライブラリ平均入力端子負荷は下記のコマンドを介してユーザが指定可能である。
ｓｅｔ ｂｕｄｇｅｔ＿ｉｎｐｕｔ＿ｃａｐａｃｉｔａｎｃｅ＜ｃａｐａｃｉｔａｎｃｅＶａｌｕｅ＞
この指示は「ｗｒｉｔｅ ｓｙｎｔｈｅｓｉｓ ｆｌｏｗ」コマンドにより使用される。デフォルトは最速２入力ＮＡＮＤゲートの入力負荷である。
【０２２１】
２．１５　最上位レベル結線遅延の保存
最上位レベルの結線（ｉｎｔｅｒｃｏｎｎｅｃｔ）遅延は下記のコマンドを介して、標準遅延フォーマット（ＳＤＦ）内部に全体として保存される。
【０２２２】
ｗｒｉｔｅ ｔｏｐ＿ｌｅｖｅｌ＿ｉｎｔｅｒｃｏｎｎｅｃｔ＿ｄｅｌａｙ＜［ｓｄｆ］ｆｉｌｅＮａｍｅ＞
デフォルトのｆｉｌｅＮａｍｅは設計の最上位レベルセルの名前である。作成したファイルはバッファ付き最上位レベルのノードについて、又は抵抗性の最上位レベルのノードについてエントリを含んでいる。完全に容量性の最上位レベルのノードについては作成したＳＤＦファイルにリストされない。
【０２２３】
このコマンドは全体的な配線が実行されると直ちに使用可能である。
【０２２４】
２．１６　最上位レベル結線寄生の保存
最上位レベルの結線（ｉｎｔｅｒｃｏｎｎｅｃｔ）の寄生は下記のコマンドを介して、低減標準（ｒｅｄｕｃｅｄ ｓｔａｎｄａｒｄ）寄生フォーマット（ＲＳＰＦ）内部に全体として保存される。
ｗｒｉｔｅ ｔｏｐ＿ｌｅｖｅｌ＿ｉｎｔｅｒｃｏｎｎｅｃｔ＿ｐａｒａｓｉｔｉｃｓ＜［ｒｓｐｆ］ｆｉｌｅＮａｍｅ＞
デフォルトのｆｉｌｅＮａｍｅは設計の最上位レベルセルの名前である。
【０２２５】
ブロック配置が完了すると直ちにこのコマンドは使用可能になる。全体的な配線が行われてない限り、最上位レベル結線の寄生はブロック中心間のスタイナツリー見積り法により見積もられる。全体的な配線が完了すると見積りは全体的な配線の結果に基づく。
【０２２６】
２．１７　配線負荷モデルの保存
異なる物理的ブロック内部で使用する異なる配線負荷モデルは下記のコマンドを介して作成される。
ｗｒｉｔｅ ｗｉｒｅｌｏａｄｍｏｄｅｌ＜［ｔｌｆ］ｆｉｌｅＮａｍｅ＞
デフォルトのｆｉｌｅＮａｍｅは設計の最上位レベルセルの名前である。
【０２２７】
２．１８　配分なしの最上位レベル制約ファイルの保存
設計の異なる断片（ｐｉｅｃｅｓ）について正しい配線負荷モデルを使用するために指示と共にユーザの指定した全制約を含む、最上レベルの制約ファイルは下記のコマンドを介して保存することができる。
ｗｒｉｔｅ ｔｏｐ＿ｌｅｖｅｌ＿ｓｙｎｔｈｅｓｉｓ＿ｓｃｒｉｐｔ＜［ｃｍｄ］ｆｉｌｅＮａｍｅ＞
作成ファイルには合成ツール内部で実行される全ての必要なコマンドを記録する。これらの記録には以下の項目が含まれる。
【０２２８】
（１）ＲＴＬ設計のローディング
（２）設計の合成
（３）指示の一意化（ｕｎｉｑｕｉｆｉｃａｔｉｏｎ）
（４）配線負荷モデルを含むファイルを開く
（５）制約と配線負荷モデルの指示を含むＡＴＣファイルを開く
（６）結線遅延ファイルを開く
（７）結線ＲＳＰＦファイルを開く
【０２２９】
２．１９　配分したインスタンス制約ファイルの保存
配分制約ファイルは下記のコマンドを介して保存される。
ｗｒｉｔｅ ｓｙｎｔｈｅｓｉｓ＿ｓｃｒｉｐｔ
【０２３０】
２．２０　クリティカルブロックサイズの設定
クリティカルブロックサイズは下記のコマンドを介して設定される。
ｓｅｔ ｃｒｉｔｉｃａｌ＿ｂｌｏｃｋ＿ｓｉｚｅ＜ｇａｔｅＥｑｕｉｖＮｕｍｂｅｒ＞
デフォルトは１００Ｋゲートである。
【０２３１】
本発明はコンピュータ分野の当業者には明らかなように、本開示の教えに基づいてプログラムされた、従来の汎用又は専用デジタルコンピュータ又はマイクロプロセッサを用いて都合良く実現される。しかしながら、（例えば、ＡＳＩＣやＦＰＧＡ用の）回路設計等の計算集中形の応用において、高速処理が有利である。
【０２３２】
ソフトウェア技術の当業者には明らかなように、本開示の教えに基づいて適切なソフトウェアコーディングが技術を有するプログラマーにより容易に作成できる。更に、当業者には明らかなように、本発明は特定用途向け集積回路の製作により、あるいは従来のコンポーネント回路を適当なネットワークで相互接続することにより、実施することもできる。
【０２３３】
本発明は、コンピュータを制御して本発明の処理を行わせるのに使用される命令を記録した記録媒体（媒体）であるコンピュータプログラム製品を包含する。記録媒体は、制限する意味ではなく、任意の種類のフロッピィディスク、ミニディスク（ＭＤ）、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ（フラッシュカードを含む）、磁気又は光カード、ナノシステム（分子メモリＩＣを含む）、ＲＡＩＤデバイス、遠隔データ記憶装置／アーカイブ／ウェアハウス、あるいは命令及び／又はデータを記憶する任意の種類の適当な媒体又は装置を包含する。
【０２３４】
本発明は、コンピュータ読み取り可能な、任意の媒体に記憶され、汎用／専用コンピュータのハードウェア又はマイクロプロセッサを制御し、コンピュータ又はマイクロプロセッサを人、ユーザとインターラクトさせ、あるいは他のメカニズムにより本発明の成果を利用する、ソフトウェアを包含する。この種のソフトウェアは、限定する意味でなく、デバイスドライバ、オペレーティングシステム、及びユーザアプリケーションを含む。最後にこの種のコンピュータ読み取り可能な媒体は上述したように、本発明を実施するソフトウェアを含む。
【０２３５】
汎用／専用コンピュータ又はマイクロプロセッサに係るプログラミング（ソフトウェア）の一環として、本発明の教え、本書で説明した処理のそれぞれ、本発明の処理に基づいた表示、記憶、通信等を実現するソフトウェアモジュールが含まれる。
【０２３６】
明らかに、上述した教えに照らし、本発明について多数の変形及び変更が可能である。したがって、ここで詳細に記載した通りに限らず、特許請求の範囲内において本発明を実施することができると解される。
【図面の簡単な説明】
【図１】
「見積りＲＴＬ」及び制約のセットから開始するタイミング最適化ループの高位フローチャートである。
【図２】
論理の自由コーン、バッファツリー、及び順次素子からなるモデル化柔軟セルのグラフ説明図である。
【図３】
平衡及び非平衡バッファツリーの説明図である。
【図４】
３つのアークが加速され、残る１３個のアークが減速されるバッファツリーの説明図である。
【図５】
拡散ファンアウトを駆動する階層インスタンス出力端子の説明図である。
【図６】
ゲートの１入力を加速する説明図である。
【図７】
１入力を加速したＤＣＦの説明図である。
【図８】
８入力コーンの柔軟モデルの遅延曲線のグラフである。
【図９】
実分布遅延曲線（ＲＤＣ）及びコーン／バッファツリーのアークのモデル遅延曲線のグラフである。
【図１０】
コーン／バッファツリーの配分遅延曲線（ＢＤＣ）のグラフである。
【図１１】
設計のパーティショニングの例を説明する図である。
【図１２】
ブロック配置結果の例を説明する図である。
【図１３】
バックアノテーションの例を説明する図である。
【図１４】
柔軟ゲート遅延を見積もるための、モデル遅延曲線及び実遅延曲線を説明するグラフの組である。
【図１５】
３個の結線された論理コーン（タイミングコーン）で構成される設計要素を説明する図である。
【図１６】
設計における論理コーンと共に、コーン遅延、ＵＤＢ配分、及びＣＢ配分に関する統計情報を説明する図である。
【図１７】
論理コーンと共に、過密（ｃｏｎｇｅｓｔｉｏｎ）ドリブン正のスラック分布の結果を示す配分遅延曲線を説明する図である。
【図１８】
正規の（ｒｅｇｕｌａｒ）正スラック分布の結果を説明するグラフである。
【図１９】
遅延ドリブン負のスラック回収の結果を説明するグラフである。
【図２０】
物理的配分のプログラム設計フローである。
【図２１】
過密コーンの検出を説明するグラフである。
【図２２】
過密コーンにおけるスラックを分配する処理のプログラム設計フローである。
【図２３】
過密コーン内の実配分スラックの分配を説明するチャートである。
【図２４】
配線配分処理のプログラム設計フローである。
【図２５】
論理階層への最上位レベル遅延のバックアノテーションを説明する図である。
【図２６】
時間配分処理（最終配分）のプログラム設計フローである。
【図２７】
設計の物理的パーティショニングの例である。
【図２８】
１つの物理的ブロック内に収納される出力ノードを説明する図である。
【図２９】
最上位レベルの結線を駆動する出力ノードを説明する図である。
【図３０】
バッファなしの最上位レベルネットを駆動する出力ノードを説明する図である。
【図３１】
インクリメンタルな変更の処理の例である。
【図１】
2004513436.tif 000036
【国際公開パンフレット】
2004513436.tif 000037
2004513436.tif 000038
2004513436.tif 000039
2004513436.tif 000040
2004513436.tif 000041
2004513436.tif 000042
2004513436.tif 000043
2004513436.tif 000044
2004513436.tif 000045
2004513436.tif 000046
2004513436.tif 000047
2004513436.tif 000048
2004513436.tif 000049
2004513436.tif 000050
2004513436.tif 000051
2004513436.tif 000052
2004513436.tif 000053
2004513436.tif 000054
2004513436.tif 000055
2004513436.tif 000056
2004513436.tif 000057
2004513436.tif 000058
2004513436.tif 000059
2004513436.tif 000060
2004513436.tif 000061
2004513436.tif 000062
2004513436.tif 000063
2004513436.tif 000064
2004513436.tif 000065
2004513436.tif 000066
2004513436.tif 000067
2004513436.tif 000068
2004513436.tif 000069
2004513436.tif 000070
2004513436.tif 000071
2004513436.tif 000072
2004513436.tif 000073
2004513436.tif 000074
2004513436.tif 000075
2004513436.tif 000076
2004513436.tif 000077
2004513436.tif 000078
2004513436.tif 000079
2004513436.tif 000080
2004513436.tif 000081
2004513436.tif 000082
2004513436.tif 000083
2004513436.tif 000084
2004513436.tif 000085
2004513436.tif 000086
2004513436.tif 000087
2004513436.tif 000088
2004513436.tif 000089
2004513436.tif 000090
2004513436.tif 000091
2004513436.tif 000092
2004513436.tif 000093
2004513436.tif 000094
2004513436.tif 000095
2004513436.tif 000096
2004513436.tif 000097
2004513436.tif 000098
2004513436.tif 000099
2004513436.tif 000100
2004513436.tif 000101
2004513436.tif 000102
2004513436.tif 000103
2004513436.tif 000104
2004513436.tif 000105
2004513436.tif 000106
2004513436.tif 000107
2004513436.tif 000108
2004513436.tif 000109
2004513436.tif 000110
2004513436.tif 000111
2004513436.tif 000112
2004513436.tif 000113
【国際公開パンフレット（コレクトバージョン）】
2004513436.tif 000114
2004513436.tif 000115
【国際調査報告】
2004513436.tif 000116