(57)【要約】      （修正有）【課題】デザイン及びデザインのレイアウトにアクセスするレイアウトドリブンのエリア制約されたデザインの最適化方法を提供する。【解決手段】レイアウトはデザインのチップ領域を区分けするブロックを含む。各ブロックは１以上のゲートを含む。レイアウトはネットのグローバルルーティングをも含む。本方法はデザイン及びレイアウトの第１のタイミング分析を実行し、デザイン及びレイアウトを更新することも含む。本方法はデザイン及びレイアウトの第２のタイミング分析を実行することも含む。第２のタイミング分析はデザイン及びレイアウトの更新を考慮に入れる。本方法は、第２のタイミング分析の１以上の結果が、デザインが１以上の所定の設計目標に合致しないことを示す、及び第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、デザイン及びレイアウトを更に更新することも含む。【選択図】図１
2006178958.tif 000002
【特許請求の範囲】
【請求項１】
レイアウトドリブンのエリア制限されたデザインを最適化する論理プログラムであって、実行用に１以上の媒体中にエンコードされ、実行時に：
デザイン及び前記デザインのレイアウトにアクセスすること；
前記デザイン及び前記レイアウトの第１のタイミング分析を行うこと；
前記デザイン及び前記レイアウトの更新を行うこと；
前記デザイン及び前記レイアウトの更新を考慮に入れて、前記デザイン及び前記レイアウトの第２のタイミング分析を行うこと；
前記第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知すること；及び
前記第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新すること；
を行わせ、前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有し、前記レイアウトは前記デザインのチップ領域を区分けするブロックを有し、ブロックの各々は１以上のゲートを有し、前記レイアウトは更にネットのグローバルルーティングを有し；
前記デザイン及び前記レイアウトの更新は：
バッファを通じて互に結合された１以上のネットより成るクリティカルな拡張されたネット全てを前記デザインの中で見分けること；
前記クリティカルな拡張されたネットを並べること；
並べた順序で前記クリティカルな拡張されたネットの各々について：
前記クリティカルな拡張されたネット上のシンクに極性を割り当てること；
前記クリティカルな拡張されたネットから全てのバッファを除去すること；
前記クリティカルな拡張されたネットからバッファを除去したことによって、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に：
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に：
前記クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにすること；
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に：
前記クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用すること；及び
前記正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
それ以外の場合には：
拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記ヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
により行われることを特徴とする論理プログラム。
【請求項２】
レイアウトドリブンのエリア制限されたデザインを最適化する方法であって：
デザイン及び前記デザインのレイアウトにアクセスするステップ；
前記デザイン及び前記レイアウトの第１のタイミング分析を行うステップ；
前記デザイン及び前記レイアウトの更新を行うステップ；
前記デザイン及び前記レイアウトの更新を考慮して、前記デザイン及び前記レイアウトの第２のタイミング分析を行うステップ；
前記第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知するステップ；及び
前記第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新するステップ；
を有し、前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有し、前記レイアウトは前記デザインのチップ領域を区分けするブロックを有し、ブロックの各々は１以上のゲートを有し、前記レイアウトは更にネットのグローバルルーティングを有し；
前記デザイン及び前記レイアウトの更新を行うステップは：
バッファを通じて互に結合された１以上のネットより成るクリティカルな拡張されたネット全てを前記デザインの中で見分けるステップ；
前記クリティカルな拡張されたネットを並べるステップ；
並べた順序で前記クリティカルな拡張されたネットの各々について：
前記クリティカルな拡張されたネット上のシンクに極性を割り当てるステップ；
前記クリティカルな拡張されたネットから全てのバッファを除去するステップ；
前記クリティカルな拡張されたネットからバッファを除去したことによって、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に：
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用するステップ；及び
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
前記クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に：
前記クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにするステップ；
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用するステップ；
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
前記クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に：
前記クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用するステップ；及び
前記正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
それ以外の場合には：
拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用するステップ；及び
前記ヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
を有することを特徴とする方法。
【請求項３】
レイアウトドリブンのエリア制限されたデザインを最適化するシステムであって：
デザイン及び前記デザインのレイアウトにアクセスすること；
前記デザイン及び前記レイアウトの第１のタイミング分析を行うこと；
前記デザイン及び前記レイアウトの更新を行うこと；
前記デザイン及び前記レイアウトの更新を考慮に入れて、前記デザイン及び前記レイアウトの第２のタイミング分析を行うこと；
前記第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知すること；及び
前記第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新すること；
を行う最適化ツールを有し、前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有し、前記レイアウトは前記デザインのチップ領域を区分けするブロックを有し、ブロックの各々は１以上のゲートを有し、前記レイアウトは更にネットのグローバルルーティングを有し；
前記デザイン及び前記レイアウトの更新は：
バッファを通じて互に結合された１以上のネットより成るクリティカルな拡張されたネット全てを前記デザインの中で見分けること；
前記クリティカルな拡張されたネットを並べること；
並べた順序で前記クリティカルな拡張されたネットの各々について：
前記クリティカルな拡張されたネット上のシンクに極性を割り当てること；
前記クリティカルな拡張されたネットから全てのバッファを除去すること；
前記クリティカルな拡張されたネットからバッファを除去したことによって、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に：
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に：
前記クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにすること；
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に：
前記クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用すること；及び
前記正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
それ以外の場合には：
拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記ヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
により行われることを特徴とするシステム。
【請求項４】
前記デザイン及び前記レイアウトの更新の結果として最小回路スタックの改善が所定の閾値に到達するまで動作が反復される
ことを特徴とする請求項３記載のシステム。
【請求項５】
前記レイアウトの最小スラックが前記デザイン及び前記レイアウトに対する更新結果を悪化させる場合には、前記デザインの中で最小スラックを悪化させている前記デザイン中の１以上のネットを確認し、前記デザインの最小スラックを悪化させる前記デザイン中のネットに関連する前記デザイン及び前記レイアウトになされる変更を止める
ことを特徴とする請求項３記載のシステム。
【請求項６】
前記１以上の設計目標が：
前記デザインに関する領域の、負荷の又はスルーの制約に違反せずに前記デザインの遅延を最小化すること；
前記デザインにおける１以上のタイミング違反を解消すること；
前記デザインの中で遅延を増やさずに前記デザインから最大の領域を復元すること；
前記デザイン中の１以上のスルー又は過剰負荷の問題を解決すること；
の内の１以上より成ることを特徴とする請求項３記載のシステム。
【請求項７】
前記クリティカルな拡張されたネットの及ぶ各ブロックが利用可能な領域を一切有しない又は唯１つのネットノードしか有しないように前記クリティカルな拡張されたネットを修正し：
前記クリティカルな拡張されたネットに関連する１以上のゲートの配置を変更し、前記クリティカルな拡張されたネットのトポロジを変更し、或いは前記クリティカルな拡張されたネットのルーティングを変更し；又は
前記クリティカルな拡張されたネットの及ぶブロック各々の中の唯１つのノードに１以上のバッファを挿入する；
ことを特徴とする請求項３記載のシステム。
【請求項８】
１以上の基準に従って前記１以上のバッファを挿入するノードを選択する
ことを特徴とする請求項３記載のシステム。
【請求項９】
前記修正されたヴァンギネケンアルゴリズムが、修正元のヴァンギネケンアルゴリズムによるものとは異なるバッファされるソリューションを生成し；及び
前記修正されたグローバルエリアアルゴリズムが、修正元のグローバルエリアアルゴリズムによるものとは異なるバッファされるソリューションを生成する；
ことを特徴とする請求項３記載のシステム。
【請求項１０】
レイアウトドリブンのエリア制限されたデザインを最適化するシステムであって：
デザイン及び前記デザインのレイアウトにアクセスする手段；
前記デザイン及び前記レイアウトの第１のタイミング分析を行う手段；
前記デザイン及び前記レイアウトの更新を行う手段；
前記デザイン及び前記レイアウトの第２のタイミング分析を行う手段であって、第２のタイミング分析は前記デザイン及び前記レイアウトの更新を考慮するところの手段；
前記第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知する手段；及び
前記第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新する手段；
を有し、前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有し、前記レイアウトは前記デザインのチップ領域を区分けするブロックを有し、ブロックの各々は１以上のゲートを有し、前記レイアウトは更にネットのグローバルルーティングを有し；
前記デザイン及び前記レイアウトの更新を行う手段は：
バッファを通じて互に結合された１以上のネットより成るクリティカルな拡張されたネット全てを前記デザインの中で見分けること；
前記クリティカルな拡張されたネットを並べること；
並べた順序で前記クリティカルな拡張されたネットの各々について：
前記クリティカルな拡張されたネット上のシンクに極性を割り当てること；
前記クリティカルな拡張されたネットから全てのバッファを除去すること；
前記クリティカルな拡張されたネットからバッファを除去したことによって、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に：
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に：
前記クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにすること；
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に：
前記クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用すること；及び
前記正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
それ以外の場合には：
拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記ヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
を行うことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に回路設計の技術分野に関し、特にレイアウトドリブン(layout-driven)の領域の制約された設計に関連する。
【背景技術】
【０００２】
ディープサブミクロン（DSM:deep  submicrom）技術の出現により、相互接続負荷及び遅延並びにレイアウトドリブン統合が重要になってきている。しかしながら、厳しいレイアウト制約（例えば利用可能性や混み具合）に起因して、ネットバッファリングやゲートリサイジング(gate  resizing)のようなレイアウトフレンドリな論理変換のみが効果的である。
【０００３】
なお、本願は35U.S.C.§119(e)による西暦２００４年１２月１４日付け米国仮出願番号第60/636,319号に関連する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の課題は回路設計に関する欠点及び問題点を軽減又は解消することである。
【課題を解決するための手段】
【０００５】
一形態によれば、レイアウトドリブンのエリア制限されたデザインを最適化する方法は、デザイン及び前記デザインのレイアウトにアクセスするステップを含む。前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有する。前記レイアウトは前記デザインのチップ領域を区分けするブロックを有する。ブロックの各々は１以上のゲートを有する。前記レイアウトは更にネットのグローバルルーティングを有する。本方法は、前記デザイン及び前記レイアウトの第１のタイミング分析を行い、前記デザイン及び前記レイアウトの更新を次のように行う。デザイン及びレイアウトの更新はクリティカルな拡張されたネット全てを前記デザインの中で見分ける。拡張されたネットはバッファを通じて互に接続された１以上のネットを含む。デザイン及びレイアウトの更新は、前記クリティカルな拡張されたネットを並べるステップを有する。デザイン及びレイアウトの更新は、並べた順序で前記クリティカルな拡張されたネットの各々について、クリティカルな拡張されたネット上のシンクに極性を割り当てるステップ、クリティカルな拡張されたネットから全てのバッファを除去するステップ、クリティカルな拡張されたネットからバッファを除去したことによって、クリティカルな拡張されたネットの及ぶレイアウト内のブロックを更新するステップを有する。デザイン及びレイアウトの更新は、クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に、タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムをクリティカルな拡張されたネットに適用するステップ、及び修正されたヴァンギネケンアルゴリズム又は修正されたグローバルエリアアルゴリズムに従って、クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップを含む。デザイン及びレイアウトの更新は、クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に、クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにするステップ、タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用するステップ、修正されたヴァンギネケンアルゴリズム又は修正されたグローバルエリアアルゴリズムに従って、クリティカルな拡張されたネットの及ぶレイアウト内のブロックを更新するステップを有する。デザイン及びレイアウトの更新は、クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に、クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用するステップ、及び正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップを有する。デザイン及びレイアウトの更新は、それ以外の場合には、拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムをクリティカルな拡張されたネットに適用するステップ、及びヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップを有する。本方法は、デザイン及び前記レイアウトの第２のタイミング分析を行うステップを有する。第２のタイミング分析はデザイン及びレイアウトの更新を考慮に入れる。本方法は、第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知するステップを有する。本方法は、第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新するステップを有する。
【発明を実施するための最良の形態】
【０００６】
本発明の特定の形態は1以上の技術的利益をもたらす。一例として特定の実施例はバッファ挿入及び／又は削除によるマッピングされる、大まかに配置される及び全体的にルーティングされる設計の遅延を、そのレイアウトに課せられるローカルな領域の制約を侵さずに最小化する問題に対処する。特定の実施例は実行時間を改善することで品質を実質的に犠牲にせずにタイミング最適化用の以前のアルゴリズムを更に実用的にする。特定の実施例はタイミング最適化の以前のアルゴリズムに一般的に付随する実行時間の１２．５倍の速度向上効果をもたらす。
【０００７】
特定の実施例は上記の技術的利点の全部又は一部を備えていてもよいし、全く備えて無くてもよい。特定の実施例は1以上の他の技術的利点をもたらすかもしれないし、その利点の1以上は図面、詳細な説明及び特許請求の範囲により当該技術分野で通常の知識を有する者に更に明白になるであろう。
【０００８】
本発明並びにその特徴及び利点についての理解を更に完全にするため、添付図面に関連する以下の説明が参照される。
【実施例１】
【０００９】
図１は設計フロー例１０を示す。本発明の特定の実施例では、最適化されるロジック(logic)又は論理内容、完全にマッピングされる回路、ミンカット(min-cut)ベースのツールは水平及び垂直のカットを用いてチップ領域を複数ブロックに区分けする。ツールに関連するものは、ソフトウエア、ハードウエア、組み込まれた論理素子或いは適切ならばそのような２以上の素子の組み合わせを含む。１以上のコンピュータシステムは１以上のユーザにツールへのアクセスを与える。総チップ領域及びブロック数に依存して、配置ツールは各ブロックに固定された総領域を割り当て、そのブロックに配置可能なゲートの数及び種類を制約する。回路の各ゲートはブロック内に設けられる。ブロックは１より多くのゲートを含んでもよい。ネット各々のトポロジ及び全体的なルーティングがグローバルルーティングツールにより決定され、そのツールはブロック間のネットセグメントを生成する。これは図２に示されるように完全にマッピングされ、ブロック上に配置され及び全体的にルーティングされた設計様式モデル１２である。本発明の特定の実施例では、次のようにしてモデル１２に最適化法が施される。最適化法は所定の目標と共に一体化したタスクとして回路の設計を考察する。設計目標の具体例は、その領域の、負荷の及びスルー(slew)の制約を乱さずに回路遅延を最小化すること、時間的な違反を解消すること、回路遅延を増やさずに最大領域を復元すること、スルー及び過剰負荷の問題を解決すること等を含む。設計目標はそのような設計目標の１以上の組み合わせを含んでもよい。本発明の特定の実施例は設計目標を達成するための一連の最適化ステップを使用する。各ステップは設計内容に（例えば、ネットバッファリングやゲートサイズ変更等のような）ある変換を適用する。設計内容はこれらの変換によりタイミング情報と共に変化し、レイアウトツールに伝送され、レイアウトツールは図１に示されるようにより多くのカットを生成することで配置及びグローバルルーティングを細区分する。ロジック変換は、更に正確な位置及びワイヤ負荷や遅延と共に、細区分された設計内容について再び起動される。本発明の特定の実施例でのパラダイムは、ミンカットベースの配置ツール及びグローバルルーティングツールの一連の細区分（又は再生成）段階の間に特定の論理変換を組み込む。
【００１０】
マッピングされ、ブロック配置され及びグローバルにルーティングされた設計内容の下で、本発明の特定の実施例は領域制約に対してバッファ挿入及び／又は削除によりその遅延を最小化する問題を取り扱う。その領域制約は、各ブロック内で利用可能な領域が、バッファ最適化によりブロックに挿入される及びブロックから削除されるバッファに起因するネット領域増加よりも少なくあるべきことを規定する。あるブロックの領域制約が満たされていなかったならば、修正される設計内容は想定できない。設計プロセスが最終的なレイアウトに近づくほど、領域制約を満たすことは一層重要になる。
【００１１】
領域制約されたネットバッファリング問題を取り扱う従前のアルゴリズムはシングルネットでは比較的良好に機能するが、そのようなアルゴリズムの欠点は最悪の場合は指数関数的に増える実行時間であり、その欠点はアルゴリズムを多数のネットに使用することを不可能にする。本発明の特定の実施例は最終的な遅延や領域のような品質を犠牲にせずに実行時間を改善することでそのようなアルゴリズムをより実用的にする。本発明の特定の実施例は広々としたブロックにつき１ノード(ONPRB:one-node-per  roomy-block)の条件を利用し、ネットにより満たされるならば、最適化における実質的な損失を引き起こさずに最悪の実行時間の複雑さを（指数関数的から）二次式的に改善する。更に実行時間を減らすため、本発明の特定の実施例はネットをその条件を満たすものに変換する技術を使用する。
【００１２】
物理的な合成設計のフローでは設計内容は一般的には非一様なブロックにおそらくは区分けされる。ブロックは（ｘ，ｙ）座標で表現される。ブロックＰのトータルの領域はT(P)で表現される。T(P)はとりわけ総チップ領域及びブロック数を考慮しながらフロアプランニング及び配置ツールにより決定される。ブロックＰの中でセル及びネットにより占められる領域はそのブロックの使用領域U(P)である。Ｐの残りの領域は利用可能な領域A(P)であり、その領域は新たなセルを挿入したり、或いは既存のものをより大きなもので置換するのに使用されてもよい。A(P)=T(P)-U(P)。ブロックＰの領域制約は、Ｐに挿入した又はＰから削除したバッファに起因するＰ内の領域増加がA(P)を超えてはならないことである。
【００１３】
ネットセグメントは水平又は垂直のワイヤ線分である。簡易なネットはセルピン及び回路パッドを互に接続するネットセグメントの一群である。ネットはドライバ（又はルート）及びシンクピン／パッドである。ネットでは、ピンでもパッドでもないネットセグメントの終点の全てはスタイナ(Steiner)ノードと呼ばれる。ピン、パッド及びスタイナノードのネット上の全てはネットノードと呼ばれる。ネットは根のあるツリーであるので、ネットノードの子、親及び祖先を議論することは有意義である。図３はノード例を示す。図３では、ｘ及びｙは子であり、ｒはνの祖先である。ネットノードでツリーの根のある概念が使用されている。例えば図３でTνはノードνに根のあるツリーである。スパンγ(ν)はTνが及ぶブロックの集合を表すものとする。図４は図３に示されるノードに対応するダミーノード例を示す。図４ではγ(Sb2)={(0,0),(1,0)}である。拡張されたネットはバッファを越えて行く一般化されたネットである。そのシンクはバッファでないセルのパッド又は入力ピンのいずれかである。図３はルートがｒであり、４つのシンクp1-p4を有する拡張されたネットを示す。それは４つのブロック：(0,0),(0,1),(1,0),(1,1)にわたる。拡張されたネットは次の２点を除いて正規のネットとして表現される：（１）各バッファｂはダミーのスタイナノードにより置換される、即ち図３のバッファb1,b2は図４でSb1,Sb2のように表現される点、及び（２）ｐがドライバから非反転の又は反転した信号を受信するか否かに依存して各シンクｐには正（＋）又は負（−）の極性が割り当てられる点である。スタイナノード、リアル又はダミーは新たなバッファが挿入されるかもしれないネット上の場所の候補である。
【００１４】
これらは通常的には回路遅延に関する２つの主要な要因：セルを介するピン間遅延及び相互接続遅延である。セルMの入力ピンｉ及び出力ピンｏに対して、Ｍを通じてiからｏに至るまでの遅延d(i,o)は、d(i,o)=αio+βioco  により与えられる。coはｏでの負荷容量であり、αioはｉからｏへの固有の遅延であり、βioは関連する負荷係数である。これらのパラメータは、セルライブラリ中の各セルのアーク(arc)を出力するために全ての入力について特定される。相互接続にエルモア(Elmore)遅延モデルが使用されてもよい。
【００１５】
如何なる領域制約にもよらずターゲットのタイミングを最適化するタイミング最適化の従前の手法では、領域が利用可能でないブロック又は場所にもバッファを挿入するおそれがある。これらの技術の中にはバッファ数（又はそれらの領域）のようなコストをバッファリングソリューション各々に関連付けることを示唆するものもあるが、そのデザインの局所的な部分の中での領域の利用可能性に従うバッファを挿入することの問題を取り扱うものではない。他の従前の技術は障害物のあるバッファ挿入の問題を取り扱うが、それらの作業内容はローカルなエリア制約のある場合のバッファリング問題を取り扱うものではない。これに対して本発明の特定の実施例は、障害物に起因して関連するブロック内で減少させられた領域利用可能性がそのような例で使用されるので、障害物に自動的に対処することができる。
【００１６】
ｎ個のノードを有するネットＮ及びｌ（エル）個のバッファを有するライブラリの下では、Ｎについて（ｌ＋１）ｎ個のバッファリングソリューション（解）が存在する。タイミング最適化の従前の技法は、バッファリングによりＮについてタイミングを最適化するための厳密な多項式時間ダイナミックプログラムアルゴリズムを利用する。Ｎの各ネットシンクで必要な時間及びバッファライブラリの下で、アルゴリズムはルートｒで必要な時間を最大化するバッファの最適な選択肢及び場所を生成する。それはＮのボトムアップのネットノードを伝搬する：シンクから始まり、ルートに向けて進行する。（スタイナノードのような）中間ノードνでは、ｌ個のバッファのどれでもそれに対応する及びνで挿入しないどのバッファでもそれに対応する（ｌ＋１）個の可能性がある。アルゴリズムはこれらの可能性の全てを捕捉するためにνで一群のソリューションS(ν)を構築する。νでのソリューションはペア(c,q)であり、ｃはνに根を張るツリーTνの容量であり、ｑはνで必要な時間である。図５に示されるように、νでワイヤ及びバッファを介する容量及び遅延を適切に導入することで、νの子及びνでのバッファリングの可能性のソリューション群からS(ν)が構築される。各ソリューションはそれを生成したソリューションの子のポインタを有する。S(ν)はTνのネットノードで全てのバッファリングの可能性を捕捉する。ほとんどのソリューションは、それらはおそらくは最適ではないので破棄される。(c,q),(c’,q’)∈S(ν)について、((c’≧c’)且つ(q’<q))又は((c’≧c)且つ(q’≦q))ならば、(c’,q’)は最適ではない或いは劣ったものである。最終的にルートｒを訪れ、S(r)が構築される。ｒの親のセルで必要な時間を最大にするS(r)のソリューションはネットNについての最適ソリューションである。子のソリューションの子のポインタを再帰的に続け、ネットノードについてバッファがどこに及びどのバッファが挿入されるべきかが見分けられる。このアルゴリズムはネットノード数に関して二次式の実行時間を有する。
【００１７】
本発明の特定の実施例では、タイミング最適化に関する領域の制約されたネットバッファリングの目標は、領域制約を満足しつつネットのルートで必要とする時間を最大化することである。削除済みのバッファと共に拡張されたネットN、設計の各ブロックPについて更新された利用可能な領域A(P)及びNのノードνの下で、σにより推奨されるようにTνにバッファを挿入し且つ影響のあるブロック領域を更新した後に、全てのPについてA(P)≧０ならば、σ∈S(ν)は正規のソリューションである。さもなくばσは正規でない。略式には、リーガルなソリューションはブロック領域制約を乱さないバッファリング選択肢に対応する。
【００１８】
タイミング最適化の従前の技法は、１つのネットに関する領域の制約されたバッファリング問題に対する厳密なアルゴリズムを含む。厳密なムルガイ(Murgai)バッファリングアルゴリズムに関連するものは、適切ならばそのようなアルゴリズムを包含する。そのようなアルゴリズムはシンクからルートへトポロジの順序でネットノードを横切る。ネットノードでは、アルゴリズムは先ず全ての正規のソリューションを生成し（但し、正規のソリューション以外はない）、劣っているソリューションを破棄する。ルートではアルゴリズムは最適なリーガルなソリューションを拾う。ブロックＰ内にあるネットノードνは図５に示されるように処理される。S(ν)の各ソリューションσνに関し、ブロック領域利用テーブルHνが保持される。このテーブルはνに根を持つサブツリーTνが及ぶ各ブロックについてバッファリングソリューションσνにより必要とされる領域リソース(エリアリソース)を捕捉する。Q∈γ(ν)の各ブロックについて、HνはHν(Q)に格納し、全てのバッファの合成される領域はブロックQ内のσνによって挿入される。従って、σν=(cν,qν,Hν)である。σνは三者から成るように見えるがそうではない、なぜならHνは複数のエントリを含むことができるからである。つまり、σνは２＋｜γ(ν)｜個の成分を有する。
【００１９】
σν=(cν,qν,Hν)に関し、テーブルHνは次のように生成される。νがシンクノードならばHνは空（エンプティ）である。中間ノードνについて２つの可能性がある：
（１）σνはバッファリングされないソリューションであり、ｘでのσν=(cｚ,qｚ,Hｚ)及びｙでのσｙ=(cｙ,qｙ,Hｙ)のソリューションを組み合わせることで生成される。ここでｘ及びｙはνの子である。ソリューション構成はネットシンクからルートへ進むので、Hz及びHyは既に構築済みである。従ってHνは次のようにして生成される。各ブロックQ∈γ(ν)について：
・Hz(Q)もHy(Q)も存在しなければ、Hν(Q)を生成しない；
・Hz(Q)は存在するが、Hy（Q）は存在しないならば、Hν(Q)=Hz(Q)  である；
・Hy(Q)は存在するが、Hz（Q）は存在しないならば、Hν(Q)=Hy(Q)  である；
・それ以外については、Hν=Hz(Q)+Hy(Q)  である。
【００２０】
（２）σνがバッファリングされるソリューションであり、νにバッファｂを設けることによってバッファリングされないソリューションην=(c,q,H)から生成される。従ってHν(Q)=Hν(Q)∀Q≠P，Hν(P)= H(P)+area(b)  である。H(P)が存在しなければ、H(P)=area(b)  である。
【００２１】
Hνを生成した後にQ∈γ(ν)の各々についてHν(Q)≦A(Q)が検査される。もしそうであればσνは正規である。そうでなければそれは正規のものではなく、拒否される。ブロック領域利用テーブルの定義により、最適でないこと又は劣っていることについての以下の基準が使用されてもよい：
・定義１：２つのソリューションσ１=(c１,q１,H１)及びσ２=(c２,q２,H２)∈S(ν)の下で、1)c1≧c2、2)q1≦q2及び3)各ブロックQ∈γ(ν)についてH１(Q)≧H２(Q)  であるならば、σ２はσ１と同程度に良好である。存在しない入力はゼロであることが仮定される。不等式が厳密ならば、σ１はσ２に対してcqHの劣ったものである（最適ではない）。
【００２２】
ソリューションの非最適性基準はH1及びH2の全てのエントリの比較に起因して比較的厳密なものである。劣っているソリューションについて、全てのブロック領域エントリは悪くなり、それに加えてｃ及びｑのエントリも悪くなる。従って非常に少数の解が破棄され、最悪の場合、指数関数的に複雑さが増えるかもしれない。
【００２３】
以下の定義はソリューションの非最適性に関連する：
・定義２：νで別のソリューションσ２=(c２,q２,H２)が存在し、c1≧c2、2)q1≦q2であり、少なくとも１つの不等式が厳密であるならば、ネットノードνでのソリューションσ１=(c１,q１,H１)はｃｑの劣ったものである（或いはｃ及びｑに関して劣っている）。
【００２４】
特定の実施例はネットに関するある条件を使用し、それが満たされると、タイミング最適化問題に対する多項式時間の正確なアルゴリズムになる。以前のタイミング最適化技法で使用されていたアルゴリズムの指数関数的な破裂の理由は次のとおりである：ノードνでの各ソリューションとともに、アルゴリズムはνで根を持つサブツリーTνが及ぶ各ブロックで使用される領域を記憶する必要がある。これは、あるネットノードｗがあり、そのノードはνの祖先のノードであり且つブロックP∈γ(ν)内にある場合に取り扱われる。図６はブロックPにおけるエリア衝突の例を示す。図６ではｒがネットルートであり、p1乃至p4がシンクである。νでのソリューション生成の後に、Pの利用可能な領域A(P)のあるものはノードp1,p2,uでソリューションをバッファリングすることで既に使用済みである。ノードｗは同じ領域リソースに関して競合している。ｗで何らの正規でないソリューションも生成されてないことを確認するために、A(P)からどの程度多くの領域がσにより使用されたかが、ノードp1,p2,u,νで各ソリューションσと共に格納される。ブロック領域利用度を使用することが指数関数的な振る舞いを招く理由は次のとおりである：νでの多くのソリューションがｃｑの劣っているものであるが（ヴァンギネケン(Van  Ginneken)アルゴリズムの基本的結果である）、それらのブロックエリア利用度は異なるので、それらは必然的に破棄することができないからである。あるソリューションσ1は別のソリューションσ2に対してcqは劣っているが、σ2に対してcqHは劣ってないことが起こるかもしれない。例えばσ2がブロックPの中でσ1より多くの領域を使用し尽くしていた場合にそれがおこり得る。ｗが図6に示されるようにp4で大きな容量性負荷を使用しているとする。そしてｗでバッファを挿入することは最も利益がありそうである。残念なことにσ2はｗでバッファされるソリューションを生成することができないかもしれない。なぜならそれはPでバッファリングに十分に利用可能な領域を有しないかもしれないからである。一方、σ1はそのようなバッファされるソリューションを生成することができ、そのネットについて全体的に良好な遅延を導出する。以前に指摘したように、cqHの劣性の基準は非常に厳しく：ソリューションは悪いことにブロック領域のエントリ全てを有する必要があり、更に悪いことにｃ及びｑエントリも有する必要がある。ネットのスパンが大きくなるほど、ソリューションになるのは困難になり、劣るようになる。かくて比較的少数のソリューションしか破棄されず、指数関数的な複雑さを招く。
【００２５】
上述の説明では、ｗ，νの祖先のノードはブロックＰの中にある必要があり、Ｐはνで根を持つサブツリーTνの及ぶ範囲内にある。もしもネットNが、Nの及ぶ各ブロックＱがNの１つのノードを正確に含むようであるなら、Qはアルゴリズムの間に正確に一度訪れる（Qに含まれるネットノードνのソリューションが生成される場合）。Ｎの他のネットノードはＱの領域リソースについて競合していない。従ってブロック領域利用度は各ソリューションと共に格納されることを要しない。以下の修正されたvan  Ginnekenアルゴリズムが使用されてもよく、そのアルゴリズムは本来のvan  Ginnekenアルゴリズムと同様であるが、各ソリューションが２つの成分ｃ及びｑのみを有する。必要とされる唯一の修正はバッファされるソリューションの生成に関するものである。ブロックQのノードｖでバッファｂを挿入しようとする場合に、そのアルゴリズムは次の追加的な検査を実行する：バッファｂを挿入することは正しいか？−即ち、領域A(Q)はバッファｂの領域と少なくとも同量だけQ内で利用可能か？  もしそうであれば、バッファｂに関してバッファされないソリューションに対応するもの全てについて、バッファされるソリューションがνで生成されてもよい。かくて、他の如何なるノードからのエリア利用度情報も利用せずにソリューションに関して正当性の検査がノードでなされる。これに対して、一般的な場合では、ノードνでのソリューションの正当性は、νのブロックを共用する他のノードにより使用されるエリアに依存する。
【００２６】
・定義３：Nの及ぶ各ブロックが正確に１つのネットノードを含むならば、ネットNはONPB条件を満たす。
【００２７】
例えば、図７ではネットノードr1,ν及びp1の各々が異なるブロック内にあるので、ネットN1はONPB条件を満たす。w,p2,p3は全てブロック（１，０）の中にあるので、ネットN2はONPB条件を満足しない。
【００２８】
上記の説明から、以下の定理が成り立つ：
・定理１：ネットNがONPBを満たすならば、上述した修正されたvan  Ginnekenアルゴリズムはシングルネットのエリア制約されたタイミング指向バッファリング問題を最適には二次関数的時間で解決する。
【００２９】
複雑な計算の実行時間はvan  Ginnekenアルゴリズムのものと同程度である。
【００３０】
ONPB条件は、Pが利用可能な領域を有しない限り、１より多いネットノードと共にブロックPを越えてNが進行するのを許容することで強化されてもよいことに留意を要する。ここで使用されるブロック領域は更新されたブロック領域である−即ち、Nに当初存在していた全てのバッファが事前の処理ステップで消去された後である。
【００３１】
・定義４：Nの及ぶ各ブロックPが利用可能な領域を何ら有しない（即ち、A(P)=0）或いは正確に１ネットノードを含むならば、ネットNはONPRB条件を満たす。
【００３２】
次の定理が成り立つ：
・定理２：ネットNがONPRB条件を満たすならば、上述の修正されたvan  Ginnekenアルゴリズムはシングルネットのエリア制約された時間指向ネットバッファリング問題を最適には二次関数的な時間で解決する。
【００３３】
実行時間を更に改善するため、ONPRB条件を満たさないクリティカルネットはそれらが充足するように修正されてもよい。その修正は以下の２つの方式の一方でなされてもよい：
（１）セル配置、ネットトポロジ及び／又はルーティングを変更し、２つのネットが同じブロックに一切属しないようにする。しかしながらこれは設計特性を劣化させるかもしれないので望ましくない。
【００３４】
（２）ネットの及ぶ各ブロックについて、１つのノードでのみバッファ挿入を許容する。例えば図７のネットN2に関し、バッファ挿入がシンクノードp2,p3については許容されず、ｗについて許容されたならば、N2はONPB条件を満たす。
【００３５】
本発明の特定の実施例は上記の第２の手法を使用する。主な問題は、潜在的にバッファ挿入がなされてもよいブロックごとに１つのノードを選択することである。ネット上のノードは以下のタイプの１つである：ピン及びパッド（ソース及びシンク）、分岐しているスタイナノード、（長いネットセグメントにおける）中間的なスタイナノード、（例えば図５のノードｗのような分岐の１つにおける）分岐するスタイナノード直後のスタイナノード。バッファ挿入候補、スタイナノード及びパッド直後のスタイナノードはネットタイミングを改善する観点からは最小の効果をもたらす傾向がある。従ってこれら２種類ののどには最小の優先度が割り当てられてもよい。スタイナノード及び中間的スタイナノードは最も効果的である傾向があり、従ってそれに最高の優先度が与えられる。ピンには中間的な優先度が割り当てられる。次のように各ノードνに根を持つサブツリーTνを分析することで接続点（Tie）は分解される：バッファが挿入されるTνでのノード数及びTνの合計容量（全てのシンク及びワイヤの容量を含む）が算出される。これらにより、ノード当たりの平均的な容量が決定される。バッファ挿入候補としては、より高い平均容量を有するノードが好ましい。
【００３６】
ネットノードがONPRB条件を満たし、多くのノード数を有し、いくつものブロックに及ぶならば、実行時間及びメモリ利用度を改善するようにそのソリューション生成が制限されてもよい。ソリューションはｃとｑのみを又はｃとｑとグローバルエリアａの成分を用いて生成されてもよい。グローバルエリアａは現在のネットノードに根を持つサブツリーの全てのバッファにより使用される全領域を表現する。グローバルエリアアルゴリズムに関連するものは、ソリューションがｃ、ｑ及びａの要素を含むバッファリングアルゴリズムを包含する。ソリューションが全てのネットノードで生成された後で、そのネットのルートでの正規のソリューションは破棄される。そして最良の正当なソリューションが選択される。この手法は非最適なものを導入するが、以前に最適化されたネットを取り扱うことができる。
【００３７】
非限定的な一例として、以下はシングルネットＮのエリア制約されたタイミング最適化に関する改善されたバッファリングアルゴリズムの全体である：
１．（図４に示されるように）シンクの極性を割り当て、Ｎに関する全てのバッファを除去する；ブロックエリアを更新する；
２．ＮがＯＮＰＲＢ条件を満たすならば、修正されたvan  Ginnekenアルゴリズムを起動する；ブロック領域を更新する；戻る（リターン）；
３．Ｎが小さかったならば、それがＯＮＰＲＢ条件を満たすようにする；修正されたvan  Ginnekenアルゴリズムを呼び出す；ブロックエリアを更新する；戻る；
４．Ｎが中間的な大きさだったならば、上述した厳密なMurgaiアルゴリズムを起動する；ブロック領域を更新する；戻る；
５．Nのルートで正規のソリューションを利用しないvan  Ginneken又はグローバルエリアアルゴリズムを呼び出す；ブロックエリアを更新する。
【００３８】
アルゴリズムは上記の３つ全ての改善を組み入れる。アルゴリズムは設計全体に関するグローバルタイミング最適化アルゴリズム（これはタイミング最適化ツールにより実行されてもよい）に組み込まれてもよい。その一例は以下のとおりである：
１．ブロックが配置されグローバルにルーティングされたデザインについて遅延トレースを実行する
２．リピート(repeat)｛
３．    クリティカルな拡張ネットの識別及び並び替え
４．    その順序でネットNの各々につき、上記のアルゴリズムを適用する
５．    遅延とレースを実行する
６．｝アンティル(until)（シンクに改善なし）
７．（最小の回路スラック(slack)が悪化した）ならば
８．    問題となっているネットを確認し、変更は実行されない。
【００３９】
エリア最小化の設計目標に関し、同様な手法が使用される。しかしながら、van  Ginnekenアルゴリズム及び修正されたvan  Ginnekenアルゴリズムの代わりに、グローバルエリアアルゴリズム及び修正されたグローバルエリアアルゴリズムがそれぞれ使用される。修正されたグローバルエリアアルゴリズムは1つの修正点を除いてグローバルエリアアルゴリズムと同様である。その修正はバッファソリューション生成におけるものである。ブロックQのノードνにバッファｂを挿入しようとする場合に、そのアルゴリズムは追加的な次の検査を実行する：バッファｂを挿入することは正当であるか？−即ち、バッファｂの領域と少なくとも同量の領域A(Q)がQで利用可能であるか？  もしそうであったならば、バッファｂに関してバッファされないソリューションに対応するもの全てについてバッファされるソリューションがνで生成されてもよい。非限定的な一例として、以下はシングルネットNのエリア最小化のための改善されたバッファリングアルゴリズム全体である：
１．（図４に示されるように）シンクの極性を割り当て、Ｎに関する全てのバッファを除去する；ブロックエリアを更新する；
２．ＮがＯＮＰＲＢ条件を満たすならば、修正されたグローバルエリアアルゴリズムを起動する；ブロック領域を更新する；戻る（リターン）；
３．Ｎが小さかったならば、それがＯＮＰＲＢ条件を満たすようにする；修正されたグローバルエリアアルゴリズムを呼び出す；ブロックエリアを更新する；戻る；
４．Ｎが中間的な大きさだったならば、エリア最小化に関する厳密なMurgaiアルゴリズムを起動する；ブロック領域を更新する；戻る；
５．Nのルートで正規のソリューションを利用しないグローバルエリアアルゴリズムを呼び出す；ブロックエリアを更新する。
【００４０】
図８はレイアウトドリブンのエリア制約設計の最適化方法例を示す。本方法はステップ１００から始まり、論理的に最適化され完全にマッピングされた回路の設計内容にミンカットツールがアクセスする。ステップ１０２ではミンカットツールは設計するチップ領域を水平及び垂直カットを用いて複数のブロックに区分けする。ステップ１０４では配置ツールはブロック中のゲートを数及び種類で制限する固定領域を各ブロックに割り当てる。ステップ１０６では配置ツールが設計するゲートをブロックに配置する。ステップ１０８では設計するネット各々のトポロジ及びグローバルルーティングを決定するために、グローバルルーティングツールがブロック間のネットセグメントを生成する。ステップ１１０ではタイミング分析ツールがその設計内容に関するタイミング分析を実行する。ステップ１１２では最適化ツールが1以上の最適化アルゴリズムを設計中のネット各々に適用する。非限定的な一例として、最適化ツールは、そのレイアウトに課されるローカルエリア制約に違反せずに設計内容の遅延を最小化するためにネットバッファリングアルゴリズムを設計のレイアウト中のネット各々に適用してもよい。ステップ１１４では各ブロックが1より多くのゲートを一切含んでいなかったならば、本方法はステップ１１６に進む。ステップ１１６では最適化ツールは設計したレイアウトを分析用に通知し、その時点で本方法は終了する。
【００４１】
ステップ１１４で１以上のブロックの各々が１より多くのゲートを含んでいたならば、本方法はステップ１１８に進む。ステップ１１８ではミンカットツールは水平及び垂直カットを用いて設計するチップ領域を更に小さなブロックに再区分する。ステップ１２０では配置ツールは小さなブロック中のゲートを数及び種類で制限する固定領域を小さなブロック各々に割り当てる。ステップ１２２では配置ツールが設計する各ゲートを小さなブロックに配置する。ステップ１２４では設計するネット各々のトポロジ及びグローバルルーティングを決定するために、グローバルルーティングツールがより小さなブロック間のネットセグメントを生成する。ステップ１２６ではタイミング分析ツールがその設計内容に関するタイミング分析を実行する。ステップ１２８では最適化ツールが1以上の最適化アルゴリズムを設計中のネット各々に適用する。非限定的な一例として、最適化ツールは、そのレイアウトに課されるローカルエリア制約に違反せずに設計内容の遅延を最小化するためにネットバッファリングアルゴリズムを設計のレイアウト中のネット各々に適用してもよい。ステップ１３０では、より小さなブロック各々が１より多くのゲートを一切含んでいなかったならば、本方法はステップ１１６に進む。ステップ１３０で１以上の小さなブロックの各々が１より多くのゲートを含んでいたならば、本方法はステップ１１８に戻る。
【００４２】
図８に示される方法の特定のステップは特定の順序で生じるように図示及び説明されたが、本発明は図８に示される方法の適切などのステップでも適切な如何なる順序で生じてもよいことを想定している。
【００４３】
以上本発明を説明するために特定の実施例が使用されてきたが、当業者は本発明を説明するために使用された特定の実施例に対する変更、置換、変形、代替又は修正の１以上を理解するであろう。本発明はそのような変更、置換、変形、代替及び修正の全てを特許請求の範囲内に包含する。
【００４４】
以下、本発明により教示される手段が例示的に列挙される。
【００４５】
（付記１）
レイアウトドリブンのエリア制限されたデザインを最適化する論理プログラムであって、実行用に１以上の媒体中にエンコードされ、実行時に：
デザイン及び前記デザインのレイアウトにアクセスすること；
前記デザイン及び前記レイアウトの第１のタイミング分析を行うこと；
前記デザイン及び前記レイアウトの更新を行うこと；
前記デザイン及び前記レイアウトの更新を考慮に入れて、前記デザイン及び前記レイアウトの第２のタイミング分析を行うこと；
前記第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知すること；及び
前記第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新すること；
を行わせ、前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有し、前記レイアウトは前記デザインのチップ領域を区分けするブロックを有し、ブロックの各々は１以上のゲートを有し、前記レイアウトは更にネットのグローバルルーティングを有し；
前記デザイン及び前記レイアウトの更新は：
バッファを通じて互に結合された１以上のネットより成るクリティカルな拡張されたネット全てを前記デザインの中で見分けること；
前記クリティカルな拡張されたネットを並べること；
並べた順序で前記クリティカルな拡張されたネットの各々について：
前記クリティカルな拡張されたネット上のシンクに極性を割り当てること；
前記クリティカルな拡張されたネットから全てのバッファを除去すること；
前記クリティカルな拡張されたネットからバッファを除去したことによって、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に：
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に：
前記クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにすること；
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に：
前記クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用すること；及び
前記正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
それ以外の場合には：
拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記ヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
により行われることを特徴とする論理プログラム。
【００４６】
（付記２）
前記デザイン及び前記レイアウトの更新の結果として最小回路スタックの改善が所定の閾値に到達するまで動作が反復される
ことを特徴とする付記１記載の論理プログラム。
【００４７】
（付記３）  
前記レイアウトの最小スラックが前記デザイン及び前記レイアウトに対する更新結果を悪化させる場合には、前記デザインの中で最小スラックを悪化させている前記デザイン中の１以上のネットを確認し、前記デザインの最小スラックを悪化させる前記デザイン中のネットに関連する前記デザイン及び前記レイアウトになされる変更を止める
ことを特徴とする付記１記載の論理プログラム。
【００４８】
（付記４）  
前記１以上の設計目標が：
前記デザインに関する領域の、負荷の又はスルーの制約に違反せずに前記デザインの遅延を最小化すること；
前記デザインにおける１以上のタイミング違反を解消すること；
前記デザインの中で遅延を増やさずに前記デザインから最大の領域を復元すること；
前記デザイン中の１以上のスルー又は過剰負荷の問題を解決すること；
の内の１以上より成ることを特徴とする付記１記載の論理プログラム。
【００４９】
（付記５）  
前記クリティカルな拡張されたネットの及ぶ各ブロックが利用可能な領域を一切有しない又は唯１つのネットノードしか有しないように前記クリティカルな拡張されたネットを修正し：
前記クリティカルな拡張されたネットに関連する１以上のゲートの配置を変更し、前記クリティカルな拡張されたネットのトポロジを変更し、或いは前記クリティカルな拡張されたネットのルーティングを変更し；又は
前記クリティカルな拡張されたネットの及ぶブロック各々の中の唯１つのノードに１以上のバッファを挿入する；
ことを特徴とする付記１記載の論理プログラム。
【００５０】
（付記６）
１以上の基準に従って前記１以上のバッファを挿入するノードを選択する
ことを特徴とする付記５記載の論理プログラム。
【００５１】
（付記７）
前記修正されたヴァンギネケンアルゴリズムが、修正元のヴァンギネケンアルゴリズムによるものとは異なるバッファされるソリューションを生成し；及び
前記修正されたグローバルエリアアルゴリズムが、修正元のグローバルエリアアルゴリズムによるものとは異なるバッファされるソリューションを生成する；
ことを特徴とする付記１記載の論理プログラム。
【００５２】
（付記８）
レイアウトドリブンのエリア制限されたデザインを最適化する方法であって：
デザイン及び前記デザインのレイアウトにアクセスするステップ；
前記デザイン及び前記レイアウトの第１のタイミング分析を行うステップ；
前記デザイン及び前記レイアウトの更新を行うステップ；
前記デザイン及び前記レイアウトの更新を考慮して、前記デザイン及び前記レイアウトの第２のタイミング分析を行うステップ；
前記第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知するステップ；及び
前記第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新するステップ；
を有し、前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有し、前記レイアウトは前記デザインのチップ領域を区分けするブロックを有し、ブロックの各々は１以上のゲートを有し、前記レイアウトは更にネットのグローバルルーティングを有し；
前記デザイン及び前記レイアウトの更新を行うステップは：
バッファを通じて互に結合された１以上のネットより成るクリティカルな拡張されたネット全てを前記デザインの中で見分けるステップ；
前記クリティカルな拡張されたネットを並べるステップ；
並べた順序で前記クリティカルな拡張されたネットの各々について：
前記クリティカルな拡張されたネット上のシンクに極性を割り当てるステップ；
前記クリティカルな拡張されたネットから全てのバッファを除去するステップ；
前記クリティカルな拡張されたネットからバッファを除去したことによって、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に：
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用するステップ；及び
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
前記クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に：
前記クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにするステップ；
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用するステップ；
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
前記クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に：
前記クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用するステップ；及び
前記正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
それ以外の場合には：
拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用するステップ；及び
前記ヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新するステップ；
を有することを特徴とする方法。
【００５３】
（付記９）
前記デザイン及び前記レイアウトの更新の結果として最小回路スタックの改善が所定の閾値に到達するまで動作が反復される
ことを特徴とする付記８記載の方法。
【００５４】
（付記１０）  
前記レイアウトの最小スラックが前記デザイン及び前記レイアウトに対する更新結果を悪化させる場合には、前記デザインの中で最小スラックを悪化させている前記デザイン中の１以上のネットを確認し、前記デザインの最小スラックを悪化させる前記デザイン中のネットに関連する前記デザイン及び前記レイアウトになされる変更を止める
ことを特徴とする付記８記載の方法。
【００５５】
（付記１１）  
前記１以上の設計目標が：
前記デザインに関する領域の、負荷の又はスルーの制約に違反せずに前記デザインの遅延を最小化すること；
前記デザインにおける１以上のタイミング違反を解消すること；
前記デザインの中で遅延を増やさずに前記デザインから最大の領域を復元すること；
前記デザイン中の１以上のスルー又は過剰負荷の問題を解決すること；
の内の１以上より成ることを特徴とする付記８記載の方法。
【００５６】
（付記１２）  
前記クリティカルな拡張されたネットの及ぶ各ブロックが利用可能な領域を一切有しない又は唯１つのネットノードしか有しないように前記クリティカルな拡張されたネットを修正し：
前記クリティカルな拡張されたネットに関連する１以上のゲートの配置を変更し、前記クリティカルな拡張されたネットのトポロジを変更し、或いは前記クリティカルな拡張されたネットのルーティングを変更し；又は
前記クリティカルな拡張されたネットの及ぶブロック各々の中の唯１つのノードに１以上のバッファを挿入する；
ことを特徴とする付記８記載の方法。
【００５７】
（付記１３）
１以上の基準に従って前記１以上のバッファを挿入するノードを選択する
ことを特徴とする付記１２記載の方法。
【００５８】
（付記１４）
前記修正されたヴァンギネケンアルゴリズムが、修正元のヴァンギネケンアルゴリズムによるものとは異なるバッファされるソリューションを生成し；及び
前記修正されたグローバルエリアアルゴリズムが、修正元のグローバルエリアアルゴリズムによるものとは異なるバッファされるソリューションを生成する；
ことを特徴とする付記８記載の方法。
【００５９】
（付記１５）
レイアウトドリブンのエリア制限されたデザインを最適化するシステムであって：
デザイン及び前記デザインのレイアウトにアクセスすること；
前記デザイン及び前記レイアウトの第１のタイミング分析を行うこと；
前記デザイン及び前記レイアウトの更新を行うこと；
前記デザイン及び前記レイアウトの更新を考慮に入れて、前記デザイン及び前記レイアウトの第２のタイミング分析を行うこと；
前記第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知すること；及び
前記第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新すること；
を行う最適化ツールを有し、前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有し、前記レイアウトは前記デザインのチップ領域を区分けするブロックを有し、ブロックの各々は１以上のゲートを有し、前記レイアウトは更にネットのグローバルルーティングを有し；
前記デザイン及び前記レイアウトの更新は：
バッファを通じて互に結合された１以上のネットより成るクリティカルな拡張されたネット全てを前記デザインの中で見分けること；
前記クリティカルな拡張されたネットを並べること；
並べた順序で前記クリティカルな拡張されたネットの各々について：
前記クリティカルな拡張されたネット上のシンクに極性を割り当てること；
前記クリティカルな拡張されたネットから全てのバッファを除去すること；
前記クリティカルな拡張されたネットからバッファを除去したことによって、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に：
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に：
前記クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにすること；
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に：
前記クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用すること；及び
前記正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
それ以外の場合には：
拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記ヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
により行われることを特徴とするシステム。
【００６０】
（付記１６）
前記デザイン及び前記レイアウトの更新の結果として最小回路スタックの改善が所定の閾値に到達するまで動作が反復される
ことを特徴とする付記１５記載のシステム。
【００６１】
（付記１７）  
前記レイアウトの最小スラックが前記デザイン及び前記レイアウトに対する更新結果を悪化させる場合には、前記デザインの中で最小スラックを悪化させている前記デザイン中の１以上のネットを確認し、前記デザインの最小スラックを悪化させる前記デザイン中のネットに関連する前記デザイン及び前記レイアウトになされる変更を止める
ことを特徴とする付記１５記載のシステム。
【００６２】
（付記１８）  
前記１以上の設計目標が：
前記デザインに関する領域の、負荷の又はスルーの制約に違反せずに前記デザインの遅延を最小化すること；
前記デザインにおける１以上のタイミング違反を解消すること；
前記デザインの中で遅延を増やさずに前記デザインから最大の領域を復元すること；
前記デザイン中の１以上のスルー又は過剰負荷の問題を解決すること；
の内の１以上より成ることを特徴とする付記１５記載のシステム。
【００６３】
（付記１９）  
前記クリティカルな拡張されたネットの及ぶ各ブロックが利用可能な領域を一切有しない又は唯１つのネットノードしか有しないように前記クリティカルな拡張されたネットを修正し：
前記クリティカルな拡張されたネットに関連する１以上のゲートの配置を変更し、前記クリティカルな拡張されたネットのトポロジを変更し、或いは前記クリティカルな拡張されたネットのルーティングを変更し；又は
前記クリティカルな拡張されたネットの及ぶブロック各々の中の唯１つのノードに１以上のバッファを挿入する；
ことを特徴とする付記１５記載のシステム。
【００６４】
（付記２０）
１以上の基準に従って前記１以上のバッファを挿入するノードを選択する
ことを特徴とする付記１５記載のシステム。
【００６５】
（付記２１）
前記修正されたヴァンギネケンアルゴリズムが、修正元のヴァンギネケンアルゴリズムによるものとは異なるバッファされるソリューションを生成し；及び
前記修正されたグローバルエリアアルゴリズムが、修正元のグローバルエリアアルゴリズムによるものとは異なるバッファされるソリューションを生成する；
ことを特徴とする付記１５記載のシステム。
【００６６】
（付記２２）
レイアウトドリブンのエリア制限されたデザインを最適化するシステムであって：
デザイン及び前記デザインのレイアウトにアクセスする手段；
前記デザイン及び前記レイアウトの第１のタイミング分析を行う手段；
前記デザイン及び前記レイアウトの更新を行う手段；
前記デザイン及び前記レイアウトの第２のタイミング分析を行う手段であって、第２のタイミング分析は前記デザイン及び前記レイアウトの更新を考慮するところの手段；
前記第２のタイミング分析の１以上の結果が、前記デザインが所定の設計目標全てに合致していることを示す或いは前記第１のタイミング分析の１以上の結果に関する１以上の設計目標に向けて何らの進展も示さない場合に、前記デザイン及び前記レイアウトを分析用に通知する手段；及び
前記第２のタイミング分析の１以上の結果が、前記デザインが１以上の所定の設計目標に合致しないことを示す、及び前記第１のタイミング分析の１以上の結果に対する１以上の設計目標に向けて少なくとも所定量の進展を示す場合に、前記デザイン及び前記レイアウトを更に更新する手段；
を有し、前記デザインは１以上のゲート及び該ゲートに互に接続する１以上のネットを有し、前記レイアウトは前記デザインのチップ領域を区分けするブロックを有し、ブロックの各々は１以上のゲートを有し、前記レイアウトは更にネットのグローバルルーティングを有し；
前記デザイン及び前記レイアウトの更新を行う手段は：
バッファを通じて互に結合された１以上のネットより成るクリティカルな拡張されたネット全てを前記デザインの中で見分けること；
前記クリティカルな拡張されたネットを並べること；
並べた順序で前記クリティカルな拡張されたネットの各々について：
前記クリティカルな拡張されたネット上のシンクに極性を割り当てること；
前記クリティカルな拡張されたネットから全てのバッファを除去すること；
前記クリティカルな拡張されたネットからバッファを除去したことによって、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない又はバッファの挿入に関して唯１つのネットノードしか含まない場合に：
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第１の閾数より少ない場合であって、前記クリティカルな拡張されたネットの及ぶ１以上のブロックが、少なくともいくつかの利用可能な領域を有し且つ１より多くのネットノードを含む場合に：
前記クリティカルな拡張されたネットを修正し、前記クリティカルな拡張されたネットの及ぶブロックの各々が、利用可能な領域を一切有しない或いはバッファの挿入に関して唯１つのネットノードしか有しないようにすること；
タイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；
前記修正されたヴァンギネケンアルゴリズム又は前記修正されたグローバルエリアアルゴリズムに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
前記クリティカルな拡張されたネットが、ネットノードに関する第２の閾数より多く且つネットノードに関する第３の閾数より少ない場合に：
前記クリティカルな拡張されたネットに厳密なムルガイバッファリングアルゴリズムを適用すること；及び
前記正確なムルガイバッファリングアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
それ以外の場合には：
拡張されたネットのルートで正当なソリューションを使用しないタイミング最適化用の修正されたヴァンギネケンアルゴリズム又は領域最小化用の修正されたグローバルエリアアルゴリズムを前記クリティカルな拡張されたネットに適用すること；及び
前記ヴァンギネケンアルゴリズム又は前記グローバルエリアアルゴリズムのアプリケーションに従って、前記クリティカルな拡張されたネットの及ぶ前記レイアウト内のブロックを更新すること；
を行うことを特徴とするシステム。
【図面の簡単な説明】
【００６７】
【図１】レイアウトドリブン最適化の設計フロー例を示す図である。
【図２】ブロックレイアウト設計例を示す図である。
【図３】拡張されたネットを示す図である。
【図４】図３に示される拡張されたネットの表現例を示す図である。
【図５】図３に示される拡張されたネット中のノードνに関するソリューション計算例を示す図である。
【図６】ブロックＰにおける領域競合の例を示す図である。
【図７】１ノード対１ブロック（ＯＮＰＢ）条件を満たす又は満たさないネットの例を示す図である。
【図８】レイアウトドリブンの領域の制約された設計の最適化方法例を示すフローチャートである。
【符号の説明】
【００６８】
１０  設計フロー例
１２  設計様式例
【図１】
2006178958.tif 000003
【図２】
2006178958.tif 000004
【図３】
2006178958.tif 000005
【図４】
2006178958.tif 000006
【図５】
2006178958.tif 000007
【図６】
2006178958.tif 000008
【図７】
2006178958.tif 000009
【図８】
2006178958.tif 000010