(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行される、回路最適化を導くための方法であって、前記方法は、
回路設計における論理経路の一連の鎖に対する一連の複合緩みを計算することを含み、論理経路の各鎖は、信号を送出するのみで信号を捕捉はしない順序回路素子または一次入力から始まり、信号を捕捉するのみで信号を送出はしない順序回路素子または一次出力で終わり、前記方法は、さらに、
前記一連の複合緩みに基づいて前記回路設計の回路最適化を導くことを含み、前記導くことは、一連の複合緩みにおけるすべての複合緩みが０以上の場合に回路最適化を終わらせることを含む、方法。
【請求項２】
前記導くことは、論理経路の鎖において複合緩みが０以上の論理経路のタイミング破壊を解決しようとしないことを含む、請求項１に記載の方法。
【請求項３】
前記導くことは、論理経路の鎖において複合緩みが負の論理経路のタイミング破壊を解決しようとすることを含む、請求項１に記載の方法。
【請求項４】
前記導くことは、複合緩みが負の論理経路の鎖の複合緩みを増大させようとすることを含む、請求項１に記載の方法。
【請求項５】
前記導くことは、負の緩みを有する論理経路のいくつの鎖が論理経路を含むかに基づいて論理経路に対する優先度を割り当てることを含み、前記回路最適化は、優先度の順位の減少において論理経路のタイミング緩みを増大させようとする、請求項１に記載の方法。
【請求項６】
コンピュータによって実行されるとき、回路最適化を導くための方法を前記コンピュータに行なわせる命令を記憶する持続的なコンピュータ読取可能な記憶媒体であって、前記方法は、
回路設計における論理経路の一連の鎖に対する一連の複合緩みを計算することを含み、論理経路の各鎖は、信号を送出するのみで信号を捕捉はしない順序回路素子または一次入力から始まり、信号を捕捉するのみで信号を送出はしない順序回路素子または一次出力で終わり、前記方法は、さらに、
前記一連の複合緩みに基づいて前記回路設計の回路最適化を導くことを含み、前記導くことは、一連の複合緩みにおけるすべての複合緩みが０以上の場合に回路最適化を終わらせることを含む、持続的なコンピュータ読取可能な記憶媒体。
【請求項７】
前記導くことは、論理経路の鎖において複合緩みが０以上の論理経路のタイミング破壊を解決しようとしないことを含む、請求項６に記載の持続的なコンピュータ読取可能な記憶媒体。
【請求項８】
前記導くことは、論理経路の鎖において複合緩みが負の論理経路のタイミング破壊を解決しようとすることを含む、請求項６に記載の持続的なコンピュータ読取可能な記憶媒体。
【請求項９】
前記導くことは、複合緩みが負の論理経路の鎖の複合緩みを増大させようとすることを含む、請求項６に記載の持続的なコンピュータ読取可能な記憶媒体。
【請求項１０】
前記導くことは、負の緩みを有する論理経路のいくつの鎖が論理経路を含むかに基づいて論理経路に対する優先度を割り当てることを含み、前記回路最適化は、優先度の順位の減少において論理経路のタイミング緩みを増大させようとする、請求項６に記載の持続的なコンピュータ読取可能な記憶媒体。
【請求項１１】
機器であって、
プロセッサと、
前記プロセッサによって実行されるとき、回路最適化を導くための方法を前記機器に行なわせる命令を記憶する持続的なコンピュータ読取可能な記憶媒体とを含み、前記方法は、
回路設計における論理経路の一連の鎖に対する一連の複合緩みを計算することを含み、論理経路の各鎖は、信号を送出するのみで信号を捕捉はしない順序回路素子または一次入力から始まり、信号を捕捉するのみで信号を送出はしない順序回路素子または一次出力で終わり、前記方法は、さらに、
前記一連の複合緩みに基づいて前記回路設計の回路最適化を導くことを含み、前記導くことは、一連の複合緩みにおけるすべての複合緩みが０以上の場合に回路最適化を終わらせることを含む、機器。
【請求項１２】
前記導くことは、論理経路の鎖において複合緩みが０以上の論理経路のタイミング破壊を解決しようとしないことを含む、請求項１１に記載の機器。
【請求項１３】
前記導くことは、論理経路の鎖において複合緩みが負の論理経路のタイミング破壊を解決しようとすることを含む、請求項１１に記載の機器。
【請求項１４】
前記導くことは、複合緩みが負の論理経路の鎖の複合緩みを増大させようとすることを含む、請求項１１に記載の機器。
【請求項１５】
前記導くことは、負の緩みを有する論理経路のいくつの鎖が論理経路を含むかに基づいて論理経路に対する優先度を割り当てることを含み、前記回路最適化は、優先度の順位の減少において論理経路のタイミング緩みを増大させようとする、請求項１１に記載の機器。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
この開示は、電子設計自動化（ＥＤＡ）に関する。より特定的には、この開示は、回路設計の最適化に関する。
【背景技術】
【０００２】
関連技術
処理技術の進歩および消費者向け電子機器への事実上無限の欲求は、集積回路（ＩＣ）設計の規模および複雑さの急速な増大を加速させている。ＩＣ設計の規模および複雑さの急速な増大により、回路設計の高レベルの記述を、一連のタイミングの制約を満たし同時に領域、漏洩電力等の付加的な指標を最適化する実現化に変換することは、ますます困難となっている。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
ここに記載されたいくつかの実施例は、回路設計の最適化を導くための技術およびシステムを提供する。ここに記載のいくつかの実施例は、回路設計における論理経路の一連の鎖に対する一連の複合緩み（この開示では超経路緩みとも称す）を計算する。論理経路の各鎖は、信号を送出するのみで信号を捕捉はしない順序回路素子または一次入力から始まり、信号を捕捉するのみで信号を送出はしない順序回路素子または一次出力で終わる。次に実施例は、一連の複合緩みに基づいて、回路設計の回路最適化を導く。より特定的には、いくつかの実施例は、一連の複合緩みに基づいて、クロック木合成（ＣＴＳ）の前に行なわれる回路最適化を導く。
【０００４】
いくつかの実施例では、回路設計の回路最適化を導くことは、論理経路の鎖において複合緩みが０以上の論理経路のタイミング破壊を解決しようとしないことを含む。
【０００５】
いくつかの実施例では、回路設計の回路最適化を導くことは、論理経路の鎖において複合緩みが負の論理経路のタイミング破壊を解決しようとすることを含む。
【０００６】
いくつかの実施例では、回路設計の回路最適化を導くことは、複合緩みが負の論理経路の鎖の複合緩みを増大させようとすることを含む。
【０００７】
いくつかの実施例では、回路設計の回路最適化を導くことは、負の緩みを有する論理経路のいくつの鎖が論理経路を含むかに基づいて論理経路に対する優先度を割り当てることを含み、回路最適化は、優先度の順位の減少において論理経路のタイミング緩みを増大させようとする。負の緩みで論理経路の鎖の最大数（すなわち、超経路の最大数）によって共有される論理経路は、「タイミングボトルネック」と称され得る。
【０００８】
いくつかの実施例では、回路設計の回路最適化を導くことは、一連の複合緩みにおけるすべての複合緩みが０以上の場合に回路最適化を終わらせることを含む。
【図面の簡単な説明】
【０００９】
【図１】ここに記載されたいくつかの実施例による回路設計を示す。
【図２】ここに記載されたいくつかの実施例による超経路分析に基づいていかに案内が与えられ得るかを示す。
【図３Ａ】ここに記載されたいくつかの実施例により複数のクロックを用いて順序回路素子がクロックされる例を示す。
【図３Ｂ】ここに記載されたいくつかの実施例により複数のクロックを用いて順序回路素子がクロックされる例を示す。
【図４】ここに記載されたいくつかの実施例によるループを含む回路設計を示す。
【図５】ここに記載されたいくつかの実施例による超経路緩みを計算および使用するための処理を示す。
【図６】ここに記載されたいくつかの実施例によるコンピュータシステムを示す。
【発明を実施するための形態】
【００１０】
詳細な説明
以下の記載は、本願のいかなる当業者であっても発明を生産し使用することが可能なように提示されており、特定の応用およびその要件の文脈において与えられる。開示された実施例に対する種々の変更は、本願の当業者には容易に明らかであり、ここに定義される一般的な原理は、本発明の精神および範囲から離れることなく他の実施例および応用に適用され得る。このように、本発明は、示された実施例に限定されることなく、ここに開示された原理および特徴と整合する最も広い範囲に合致する。この開示では、「および／または」という用語が存在物のリストとともに用いられた場合、それは存在物のリストのすべての可能な組合せを言及する。たとえば、「Ｘ、Ｙおよび／またはＺ」という語句は、（１）Ｘのみ、（２）Ｙのみ、（３）Ｚのみ、（４）ＸおよびＹ、（５）ＸおよびＺ、（６）ＹおよびＺ、（７）Ｘ、ＹおよびＺの場合を包含する。
【００１１】
電子設計自動化（ＥＤＡ）フローの概観
回路設計を生成するのにＥＤＡフローが用いられ得る。回路設計がいったん完了すると、それは集積回路チップを生産するために、製造、包装および組立を受け得る。ＥＤＡフローは、複数の工程を含み得、各工程は、１以上のＥＤＡソフトウェアツールを用いることを含み得る。いくつかのＥＤＡ工程およびソフトウェアツールが以下に記載される。ＥＤＡ工程およびソフトウェアツールのこれらの例は、例示の目的のみのためであって、開示された形式に実施例を限定する意図はない。
【００１２】
いくつかのＥＤＡソフトウェアツールにより、回路設計者は、回路設計の機能性を記述することが可能となる。また、これらのツールにより、回路設計者は、機能性を改善する、費用をチェックする等の仮定の計画を実行することも可能となる。論理設計および機能検証の間、システムのモジュールに対するＨＤＬ（ハードウェア記述言語）たとえばシステムヴェリログ（Verilog）のコードが記述され得る。また、機能の正確性のために設計がチェックされ得、たとえば、それが正しい出力を生産することを保証するために設計がチェックされ得る。
【００１３】
試験のための合成および設計の間、ＨＤＬコードは、１以上のＥＤＡソフトウェアツールを用いてネットリストに変換され得る。さらに、ネットリストは、目標技術のために最適化され得、試験は完成されたチップをチェックするために設計および実行され得る。ネットリストの検証の間、ネットリストは、タイミングの制約に適合し、かつＨＤＬコードと対応するようにチェックされ得る。
【００１４】
設計計画の間、タイミングおよび最高レベルの経路指定のために、チップに対する全体的なフロアプランが構築され分析され得る。物理的な実行の間、回路素子は、設計通りに位置づけられ得る（配置）とともに、電気的に結合され得る（経路指定）。
【００１５】
分析および抽出の間、回路の機能性はトランジスタレベルで検証され得、寄生性が抽出される。物理的な検証の間、製造、電気的な問題、リソグラフィの問題および回路に対する正確性を保証するために、設計がチェックされ得る。
【００１６】
解像度を高める間、設計の製造可能性を改善するために、幾何学的な操作が配置上で行なわれ得る。マスクデータの準備の間、製造の間に用いられるマスクを製造するために、設計が「完全に理解され」得る。
【００１７】
超経路緩みに基づく最適化案内の付与
図１は、ここに記載されたいくつかの実施例による回路設計を示す。回路設計１００は、順序回路素子１０４、１０８及び１１２を含む。入力ピン「Ｉｎ」は、順序回路素子１０４の入力ピン「Ｄ」に結合された組合せ論理１０２に結合される。順序回路素子１０４の出力ピン「Ｑ」は、順序回路素子１０８の入力ピン「Ｄ」に結合された組合せ論理１０６に結合される。順序回路素子１０８の出力ピン「Ｑ」は、順序回路素子１１２の入力ピン「Ｄ」に結合された組合せ論理１１０に結合される。順序回路素子１１２の出力ピン「Ｑ」は、出力ピン「Ｏｕｔ」に結合された組合せ論理１１４に結合される。順序回路素子１０４、１０８及び１１２のクロック入力は、クロックピン「Ｃｌｋ」に結合される。
【００１８】
エッジトリガのＤフリップフロップは、順序回路素子の例として、この開示で用いられている。しかしながら、「順序回路素子」との用語は一般に、あらゆる型のエッジトリガまたはレベルトリガの順序回路素子を指し、この開示に表わされた形式に限定されない。本願の通常の知識を有する者には明らかなように、この開示に記載された実施例は一般に、あらゆる型のエッジトリガまたはレベルトリガの順序回路素子に応用可能である。
【００１９】
所与のクロック端（立ち上がり、立ち下がり、または両方）において、各順序回路素子の入力は、入力に与えられた論理値を捕捉し、各順序回路素子の出力は、論理値を送出し、それは次の順序回路素子の入力に到達する前に、１以上のゲートおよび／またはネットを通じて伝搬する。
【００２０】
この開示において、「超弧（super arc）」との用語は、一次入力または順序回路素子の出力から始まり、一次出力または次の順序回路素子の入力で終わる経路のことを指す。たとえば、回路設計１００は、超弧１１６、１１８、１２０および１２２を含む。「超弧遅延」との用語は、超弧の遅延を指す。タイミング分析は通常、遅延がクロック周期より小さくなることを確実にするために、超弧の遅延、たとえば、順序回路素子の出力から次の順序回路素子の入力までの遅延を計算する。たとえば、タイミング分析システムは、超弧１２０における各ゲートおよびネットの遅延を合計することにより、超弧１２０の遅延（すなわち、順序回路素子１０８の出力から順序回路素子１１２の入力までの遅延）を決定し得る。超弧遅延はまた、順序回路素子１１２の設定時間を含み得る。
【００２１】
もし、すべての順序回路素子が完全に同期した（すなわち、クロック端がすべての順序回路素子において厳格に同時に生じた）クロック信号を受け、設定の制約が０であると仮定した場合、我々は、タイミング緩みを決定するために、クロック周期から超弧遅延を減算することができる。しかし、もしクロックが同期していなければ、我々は、タイミング緩みを計算するためにクロックスキューを考慮する必要がある。具体的には、ある順序回路素子（たとえば、順序回路素子１０８）と次の順序回路素子（たとえば、順序回路素子１１２）との間の経路緩みＳＰは、次のように計算できる。
【００２２】
ＳＰ＝Ｔ＋ＬＬ−Ｄ−ＬＣ                                          （１）
ここで、Ｔはクロック周期、ＬＬは送出クロック潜時（launch clock latency）（すなわち、送出する順序回路素子での「理想の」クロック端と実際のクロック端との間の時間差）、Ｄは超弧遅延、そして、ＬＣは捕捉クロック潜時（すなわち、捕捉する順序回路素子におけるクロックルート（root）での「理想の」クロック端と実際のクロック端との間の時間差）のことである。
【００２３】
もし、経路緩みＳＰが正であれば、それは、送出する順序回路素子（たとえば、上記の例では順序回路素子１０８）で送出された信号が、捕捉する順序回路素子（たとえば、上記の例では順序回路素子１１２）で要求される時間の前に到達することを意味する。しかしながら、もし、経路緩みＳＰが負（すなわち、タイミング破壊がある）であれば、それは、送出する順序回路素子で送出された信号が、捕捉する順序回路素子で要求される時間の後に到達することを意味し、それは回路設計１００に誤動作をもたらし得る（いくつかの実施例では、小さな正の経路緩みも破壊になり得ることを考慮している。これらの実施例では、破壊タイミング緩み値と非破壊タイミング緩み値との間の境界を表わすために、しきい値の項が式（１）に付加され得る。）
【００２４】
経路緩みが負である場合、回路設計は、経路緩みを０以上とするために修正される必要がある。たとえば、従来の回路最適化システムは、種々の回路変形、たとえば、バッファの付加／除去、ゲートの大きさの増加／減少、回路の部分をより小さな遅延の等価な回路に置換等を行なうことによって式（１）のＤの値を減少させることにより、経路緩みを改善しようとする。しかしながら、タイミング緩み値を改善する他の解決法として、ＬＬおよび／またはＬＣの値を調整する、すなわち、送出する順序回路素子と捕捉する順序回路素子との間の相対的なクロックスキューを調整することが注目される。この開示では、１以上のタイミング経路のタイミングを改善するためにクロックスキューが回路設計に導入される場合、当該クロックスキューは「有用なクロックスキュー」と称される。
【００２５】
「論理経路」という用語は、一次入力またはある順序回路素子の出力で始まり、一次出力または他の順序回路素子の入力で終わる経路のことを指す。たとえば、順序回路素子１０４の出力「Ｑ」で始まり、順序回路素子１０８の入力「Ｄ」で終わる経路は、論理経路である。「超経路」という用語は、信号を送出するのみで信号を捕捉はしない順序回路素子（そのような順序回路素子はまれである）または一次入力から始まり、信号を捕捉するのみで信号を送出はしない順序回路素子（やはり、そのような順序回路素子はまれである）または一次出力で終わる論理経路の鎖のことを指す。言い換えると、超経路は、信号を送出するのみで信号を捕捉はしない順序回路素子（そのような順序回路素子はまれである）または一次入力で始まり、信号を捕捉するのみで信号を送出はしない順序回路素子（やはり、そのような順序回路素子はまれである）または一次出力で終わる超弧の鎖である。たとえば、超経路１２４は、一次入力「Ｉｎ」で始まり、一次出力「Ｏｕｔ」で終わり、超弧１１６，１１８，１２０および１２２の鎖を含む。
【００２６】
「超経路緩み」という用語は、超経路に沿って（たとえば、式（１）を用いて計算された）個々の経路緩みの積算を指す。送出クロック潜時および捕捉クロック潜時は、超経路上のすべての順序回路素子について互いに打ち消すことが注目される。
【００２７】
それゆえ、ｎ個の超弧の鎖である超経路に対する超経路緩みＳＳＰは、次のように表わすことができる。
【００２８】
【数１】
0006301363.tif 000002
【００２９】
もし、超経路緩みが非負（すなわち、０以上）であれば、超経路における経路のタイミング破壊は、破壊経路に有用なクロックスキューを導入する、すなわち、破壊経路における送出および捕捉の順序回路素子の間の相対的なクロックスキューを調整することによって、解決することができる。
【００３０】
【数２】
0006301363.tif 000003
【００３１】
【数３】
0006301363.tif 000004
【００３２】
負の緩みを有する超経路に対し、ＣＴＳ前の最適化では、一般に、超弧遅延を減らすためにどの構成経路を最適化するかを決定する自由を有する。しかしながら、いくつかの実施例では、タイミング経路は（それらの緩みに関係なく）、いくつの負の緩みの超経路が所与のタイミング経路を共有するかに基づいて最適化され得る。具体的には、負の緩みを有するより多くの超経路によって共有されるタイミング経路が、最初に最適化されるべきである。もし、高い優先度のタイミング経路の緩みが既に正である場合、いくつかの実施例では、ＣＴＳ前の回路最適化で、タイミング経路の正の緩みをより増やすように命令する。ＣＴＳ前の回路最適化では通常、タイミング経路の正の緩みを増やそうとしないため、これは非自明であることに注目すべきである。
【００３３】
図２は、ここに記載されたいくつかの実施例による超経路分析に基づいていかに案内が与えられ得るかを示す。回路設計２００は、順序回路素子２０２および２０４を含む。超弧２０８は、順序回路素子２０２の「Ｑ」出力で始まり、順序回路素子２０４の「Ｄ」入力で終わる。回路経路２１０は、一次入力「Ｉｎ１」で始まり、順序回路素子２０２の「Ｄ」入力で終わる。回路経路２１２は、一次入力「Ｉｎ２」で始まり、順序回路素子２０２の「Ｄ」入力で終わる。回路経路２１０および２１２は、組合せおよび／または順序の回路素子を含み得るとともに、１以上の回路素子を共有し得る。同様に、回路経路２１４は、順序回路素子２０４の「Ｑ」出力で始まり、一次出力「Ｏｕｔ１」で終わる。また、回路経路２１６は、順序回路素子２０４の「Ｑ」出力で始まり、一次出力「Ｏｕｔ２」で終わる。回路経路２１４および２１６は、組合せおよび／または順序の回路素子を含み得るとともに、１以上の回路素子を共有し得る。
【００３４】
一次入力「Ｉｎ１」で始まり一次出力「Ｏｕｔ１」で終わる超経路が負の緩みを有し、一次入力「Ｉｎ２」で始まり一次出力「Ｏｕｔ２」で終わる超経路もまた負の緩みを有するものと仮定する。このとき、負の緩みを有する両方の超経路が超弧２０８を通って通過するため、いくつかの実施例では、ＣＴＳ前の回路最適化において、他の超弧でタイミング破壊を解決しようとする前に超弧２０８のタイミングを改善しようとする（すなわち、現在のタイミング緩み値が負か正かに関わらずタイミング緩みを増やそうとする）ために、超弧２０８により高い優先度を割り当て得る。超弧２０８内において、ＣＴＳ前の回路最適化では、タイミングを改善するためにゲートを並べる順番を自由に決めることができることに注目すべきである。また、従来の回路最適化の技術はいずれも、超弧を最適化する際の順番を決めるために超経路の緩みを用いないことに注意すべきである。
【００３５】
上記の議論においてなされた１つの仮定では、超経路の緩みが０以上である限り、超経路の個々の経路もまた０以上の緩みを各々有するようにさせるという有用なスキューのスケジューリング解決法がある。しかしながら、実際には、この仮定を無効にするいくつかの制約が存在し、それらは現在議論されている。
【００３６】
有用なスキューによる順序回路素子のクロック潜時の遅延は、当該クロックの挿入遅延を超えないべきであり、そうでなければ、クロック木に多すぎるバッファを挿入する結果になり得るとともに、チップ上の変動効果（挿入遅延が長いほど厳しい）は、有用なスキューを導入することによって得られた利益を元に戻し得る。
【００３７】
順序回路素子が複数のクロックを用いてクロックされる場合、異なるクロックにより各経路（送出および捕捉フロップの各対）に対して複数の緩みが生じ、有用なスキューのスケジューリングは各クロックに対して独立ではない。図３Ａから３Ｂは、ここに記載されたいくつかの実施例により複数のクロックを用いて順序回路素子がクロックされる例を示す。回路３００は、図３Ａに示される経路（曲線）により相互接続される順序回路素子３０２、３０４、３０６、３０８、３１０および３１２を含む。各経路に隣接する括弧内の数は、当該経路上の緩みである。順序回路素子３０６および３０８の間の経路は、当該経路に隣接する２つの数を有する。第１の数「（４）」はＣｌｋ１の緩みであり、第２の数「（３）」はＣｌｋ２の緩みである。
【００３８】
図３Ａにおいて、Ｃｌｋ１およびＣｌｋ２の間のすべての経路が誤った経路であると仮定する。誤った経路とは、タイミング破壊が無視される経路のことである。たとえば、順序回路素子３０２（クロック領域Ｃｌｋ１）で始まり、順序回路素子３１２（クロック領域Ｃｌｋ２）で終わる経路のタイミングは無視できる。
【００３９】
いま、もし順序回路素子３０４から順序回路素子３１２への経路をそのまま見た場合、有用なスキューを用いることによってまるで非負の緩みを達成することができるかのように思われる。しかしながら、Ｃｌｋ２の経路の有用なスキューのスケジューリングは、よりタイミングが厳しいＣｌｋ１のそれによって影響され、その結果、Ｃｌｋ２には依然として負の緩みが残る。具体的には、もし有用なスキューを用いることによりＣｌｋ２の経路上のタイミング破壊を除去しようとした場合、それはＣｌｋ１の経路上でのタイミング破壊を引き起こすことになる。図３Ｂは、順序回路素子３０４および３１０の間の経路上の負の緩みを解決するために有用なスキューが用いられた後の緩みを示す。それゆえ、２つの異なる経路が独立に考慮された場合、２つの異なる経路上のタイミング破壊を解決するために有用なスキュー用いることがたとえ可能であったとしても、２つの経路間の依存性により、両方の経路上のタイミング破壊を同時に解決するために有用なスキューを用いることは可能でないように思われる。いくつかの実施例では、２つ（以上）の超経路が異なるクロック領域にあるが、１以上の超弧を共有する状況を検出し得る。超経路がいったん検出されると、これらの実施例では、所与のクロック領域でタイミング破壊を解決するために有用なスキューを用い得る一方で、他のクロック領域で新たなタイミング破壊は生成されないことが保証される。
【００４０】
超経路が環状の場合、他の複雑さが生じる。図４は、ここに記載されたいくつかの実施例によるループを含む回路設計を示す。回路４００は、図４に示される経路（曲線）により相互接続される順序回路素子４０２、４０４、４０６および４０８を含む。順序回路素子４０４の「Ｑ」出力は、順序回路素子４０６および４０８を通って通過する経路を介して、順序回路素子４０２の「Ｄ」入力に結合され、それによりループを形成するという点において注目される。
【００４１】
もし、一次入力「Ｉｎ」と一次入力「Ｏｕｔ」との間の超経路の超経路緩みが０以上である場合、超経路のいかなるタイミング破壊も除去するために有用なスキューを用い得るべきである。しかしながら、環状であるため、これは可能ではないだろう。具体的には、もし、超弧４１０の緩みを増やすために、順序回路素子４０２および４０４の間の相対的なクロックスキューを変化させる場合、それに応じて超弧４１２および／または４１４の緩みが減少し得るため、タイミング破壊が生成され得る。たとえば、順序回路素子４０２のクロック端が１時間単位だけ早く移動し、順序回路素子４０４のクロック端が１時間単位だけ遅く移動した場合、超弧４１０における緩みは、２時間単位だけ増加する。しかしながら、超弧４１２および４１４における緩みは、それぞれ１時間単位だけ減少し、これは、超弧４１２および／または４１４でのタイミング破壊を引き起こし得る。
【００４２】
ここに記載されたいくつかの実施例では（たとえば、幅優先横断を行ない、訪れた節点を追跡することにより）ループを検出し、検出されたループによって影響される正の緩みで超経路を決定する。影響された超経路に対し、実施例では、有用なスキューが超経路におけるタイミング破壊を解決するのに用いられ得るかどうかを決定し得る。
【００４３】
超経路の計算は、ＣＴＳ前の回路最適化の機関とは異なっており、有用なスキューの計算機関と潜在的に共有／結合され得ることが注目される。超経路の計算は、ＣＴＳ前の回路最適化の機関に対する案内を提供する、すなわち、超経路の計算は、どの経路を最適化し、いつ最適化を停止するかに関する案内を提供することが着目される。
【００４４】
たとえば、いくつかの実施例では、たとえ個々の経路緩みが依然として負であるとしても、すべての超経路が正の緩みをいったん有すれば、ＣＴＳ前の回路最適化の機関は、最適化を停止するように指令され得る。負の経路緩みのタイミング破壊は、ＣＴＳの間に有用なスキューを用いてそれから解決され得る。これは、超経路が非負の緩みを有する限り、多くの経路が負の緩みを持つことが許されるため、伝統的な解決法と比較して、ＣＴＳ前の回路最適化の機関によりなされる必要のある最適化の量を大きく減らし得る。これは、ＣＴＳ前の回路最適化の機関により行なわれる必要のある最適化の量を著しく減らすためにいくつかの実施例によって用いられる重要な洞察である。
【００４５】
図５は、ここに記載されたいくつかの実施例による超経路緩みを計算および使用するための処理を示す。処理は、論理経路の一連の鎖に対する一連の複合緩み（すなわち、超経路緩み）を計算することによって始まり、論理経路の各鎖は、信号を送出するのみで信号を捕捉はしない順序回路素子または一次入力から始まり、信号を捕捉するのみで信号を送出はしない順序回路素子または一次出力で終わる（動作５０２）。次に、処理は、一連の複合緩みに基づいて回路の最適化を導き得る（動作５０４）。一連の複合緩みは、１以上の複合緩みを含み得るとともに、論理経路の一連の鎖は、論理経路の１以上の鎖を含み得ることが注目される。
【００４６】
具体的には、もし複合緩みが０以上であれば、処理は、ＣＴＳ前の回路最適化の機関が、超経路にある論理経路上のタイミング誤りを解決しようとしないように指令し得る。一方、もし複合緩みが負であれば、処理は、ＣＴＳ前の回路最適化の機関が、超経路にある論理経路のタイミング緩みを増やそうとするように指令し得る。
【００４７】
いくつかの実施例では、処理は、論理経路を通って通過する負の緩みを有する超経路の数に基づいて論理経路を優先付けし得る。具体的には、論理経路が負の緩みを有する超経路のより大きな数によって共有される場合、論理経路はより高い優先度を有する。次に、処理は、優先順位を減少させる際に論理経路のタイミング緩みを増加させるように、ＣＴＳ前の回路最適化の機関を導き得る。ある変形例では、論理経路の優先度は、論理経路を含む超経路の負の緩みの大きさの合計に基づき得る。さらに他の変形例では、もし２つの論理経路が同じ優先度を有する場合、均衡を破るために論理経路の緩みが用いられ得る。具体的には、より低いタイミング緩みの論理経路が、より高いタイミング緩みの論理経路よりも高い優先度を与えられ得る。
【００４８】
いくつかの実施例において、処理は、一連の複合緩みにおけるすべての複合緩みが０以上（すなわち、たとえ１以上の論理経路の緩みが負であるとしても）の場合、ＣＴＳ前の最適化機関が最適化を終了させるように指令し得る。
【００４９】
コンピュータシステム
図６は、ここに記載されたいくつかの実施例によるコンピュータシステムを示す。コンピュータシステムは、一般に、計算を行なうことのできるあらゆるシステムであり得る。具体的には、コンピュータシステムは、マイクロプロセッサ、特定用途向け集積回路、分散計算システム、クラウド計算システム、または現在知られまたは後に開発されるいかなる他の計算システムであり得る。コンピュータシステム６０２は、プロセッサ６０４、メモリ６０６、および記憶６０８を含む。コンピュータシステム６０２は、ディスプレイ６１４、キーボード６１０、およびポインティング装置６１２と結合され得る。記憶６０８は、一般に、データを記憶できるあらゆる装置であり得る。具体的には、記憶装置は、磁気、光、または磁気光学の記憶装置であり得る、または、フラッシュメモリおよび／またはバッテリ支援メモリに基づき得る。記憶６０８は、アプリケーション６１６、オペレーティングシステム６１８およびデータ６２０を記憶し得る。
【００５０】
アプリケーション６１６は、コンピュータ６０２によって実行された場合、この開示において黙示的にまたは明示的に記載された１以上の処理をコンピュータ６０２に実行させる命令を含み得る。データ６２０は、アプリケーション６１６によって入力されまたは出力されるいかなるデータも含み得る。
【００５１】
上記の記載は、本願のいかなる当業者も実施例を構成し使用できるように提示されている。開示された実施例に対する種々の変更は、本願の当業者にとって容易に明らかとなり、ここに規定された一般的な原理は、この開示の精神および範囲から離れることなく、他の実施例および応用に適用可能である。このように、本願発明は、示された実施例に限定されないが、ここに開示された原理および特徴と整合する最も広い範囲に合致し得る。
【００５２】
この開示に記載されたデータ構造および符号は、持続的なコンピュータ読取可能な記憶媒体および／またはハードウェアモジュールおよび／またはハードウェア機器に部分的にまたは全体的に記憶され得る。持続的なコンピュータ読取可能な記憶媒体は、電磁波または信号の伝搬を唯一の例外とするすべてのコンピュータ読取可能な記憶媒体を含む。具体的には、持続的なコンピュータ読取可能な記憶媒体は、現在知られまたは後に開発される、符号および／またはデータを記憶することが可能なディスク駆動装置、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）または他の媒体のような揮発性メモリ、不揮発性メモリ、磁気および光学の記憶装置を含むが、これらには限定されない。この開示に記載されたハードウェアモジュールまたは機器は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、専用または共有のプロセッサ、および／または現在知られまたは後に開発される他のハードウェアモジュールまたは機器を含むが、これらには限定されない。
【００５３】
この開示に記載された方法および処理は、コンピュータシステムが符号および／またはデータを読み出して実行する場合に当該コンピュータシステムが関連する方法および処理を実行するように、持続的なコンピュータ読取可能な記憶媒体または装置に記憶された符号および／またはデータとして部分的にまたは全体的に具現化され得る。方法および処理はまた、ハードウェアモジュールまたは機器において部分的にまたは全体的に具現化され得る。方法および処理は、符号、データ、およびハードウェアモジュールまたは機器の結合を用いて具現化され得ることが注目される。
【００５４】
本願発明の実施例のこれまでの記載は、説明および記述の目的のためにのみ提示されている。それらは、包括的であったり開示された形式に本願発明を限定するようには意図されていない。したがって、本願の当業者にとって多くの修正および変形は明らかである。加えて、上記の開示は本願発明を限定するようには意図されていない。本願発明の範囲は、添付の特許請求の範囲によって規定される。
【図１】
0006301363.tif 000005
【図２】
0006301363.tif 000006
【図３Ａ】
0006301363.tif 000007
【図３Ｂ】
0006301363.tif 000008
【図４】
0006301363.tif 000009
【図５】
0006301363.tif 000010
【図６】
0006301363.tif 000011