(57)【要約】【課題】  回路のタイミング・グラフのエッジのクリティカリティ確率を判定するための方法を提供すること。【解決手段】  本方法は、タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するステップと、回路の統計的タイミング設定を行うステップと、注目する各エッジについて、タイミング・グラフを複数の部分に分割するカットセットを定めるステップと、カットセット内の各エッジについて、エッジ・スラックを判定するステップと、カットセット内の全てのエッジ・スラックの統計的極大を計算するステップと、各エッジのエッジ・クリティカリティ確率を統計的極大から推論するステップと、を含む。回路のタイミング・グラフのエッジのクリティカリティ確率を判定するためのシステムもまた説明される。【選択図】      図１
2009519528.tif 000002
【特許請求の範囲】
【請求項１】
回路のタイミング・グラフのエッジのクリティカリティ確率を判定するための方法であって、
タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するステップと、
前記回路の統計的タイミング解析を実行するステップと、
注目する各エッジについて、前記タイミング・グラフを複数の部分に分割するカットセットを定めるステップと、
前記カットセット内の各エッジについて、エッジ・スラックを判定するステップと、
前記カットセット内の全てのエッジ・スラックの統計的極大を計算するステップと、
各エッジのエッジ・クリティカリティ確率を前記統計的極大から推論するステップと、
を含む方法。
【請求項２】
前記複数の部分の第１の部分が前記タイミング・グラフのソース・ノードを含み、前記複数の部分の第２の部分が前記タイミング・グラフのシンク・ノードを含む、請求項１に記載の方法。
【請求項３】
前記カットセットがエッジを含み、前記エッジのソース・ノードが前記タイミング・グラフの現在のレベルより小さいレベルにある、請求項２に記載の方法。
【請求項４】
前記カットセットがエッジを含み、前記エッジのシンク・ノードが前記タイミング・グラフの現在のレベルより大きいレベルにある、請求項２に記載の方法。
【請求項５】
早モードの統計的エッジ・スラックが、早モードのソース・ノードの統計的到達時間と、早モードのシンク・ノードの統計的要求到達時間の負数と、前記エッジの早モードの遅延との統計和である、請求項２に記載の方法。
【請求項６】
遅モードの統計的エッジ・スラックが、遅モードのソース・ノードの統計的到達時間と、遅モードのシンク・ノードの統計的要求到達時間の負数と、前記エッジの遅モードの遅延との統計和である、請求項２に記載の方法。
【請求項７】
前記推論するステップが、各エッジの前記エッジ・クリティカリティ確率を、１つのカットセット内の全てのエッジのエッジ・スラックの極大のタイトネス確率として判定するステップを含む、請求項１に記載の方法。
【請求項８】
前記回路の性能に影響を与える変動源が同時に考慮される、請求項１に記載の方法。
【請求項９】
前記推論するステップが、分割木データ構造を用いることによって為される、請求項１に記載の方法。
【請求項１０】
回路のタイミング特性を最適化する方法であって、
請求項１から請求項９のいずれか１項に記載の方法により、タイミング・グラフのエッジのクリティカリティ確率を判定するステップと、
前記クリティカリティ確率を用いて回路のタイミング特性の最適化をガイドするステップと、
を含む方法。
【請求項１１】
前記判定するステップが、分割木データ構造を用いることによって為されることを特徴とする、請求項１０に記載の方法。
【請求項１２】
前記判定するステップが、
タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するステップと、
前記回路の統計的タイミング解析を実行するステップと、
注目する各エッジについて、前記タイミング・グラフを複数の部分に分割するように構成されるカットセットを定めるステップと、
前記カットセット内の各エッジについて、エッジ・スラックを判定するステップと、
前記カットセット内の全てのエッジ・スラックの統計的極大を計算するステップと、
各エッジのエッジ・クリティカリティ確率を前記統計的極大から推論するステップと、
を含む、請求項１０に記載の方法。
【請求項１３】
回路の統計的タイミング解析において、クリティカリティを予測するためのシステムであって、
タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するための手段と、
前記回路の統計的タイミング解析を実行するための手段と、
前記タイミング・グラフの各レベルについて、前記タイミング・グラフを複数の部分に分割するカットセットを定めるための手段と、
前記カットセット内の各エッジについて、エッジ・スラックを判定するための手段と、
前記カットセット内の全てのエッジ・スラックの統計的極大を計算するための手段と、
各エッジのエッジ・クリティカリティ確率を前記統計的極大から推論するための手段と、
を備えるシステム。
【請求項１４】
請求項１から請求項１２のいずれか１項に記載の方法のステップの全てを実行するための命令を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル集積回路の設計自動化に関する。より具体的には、本発明は遅延変動の存在下におけるデジタル回路の統計的静的タイミング解析に関する。
【背景技術】
【０００２】
集積回路技術の世代交代ごとにばらつきが比例的に増大することが観察されている。そうしたばらつきの原因は、例えば、製造における変動、装置の疲労、環境の変動（例えば、温度及び供給電力の電圧など）、及び位相同期ループ（ＰＬＬ）変動を含む。このような変動の存在下では、各々の信号伝搬アーク（signal propagation arc）（例えばタイミング・アーク）のクリティカリティ、即ち、注目する信号伝搬アークを通るクリティカル・パスを有する集積回路（例えばチップ）を製造する確率を知ることが望ましい。検査、タイミングレポート、及び回路最適化を含む種々の用途において、このようなことができれば利益が得られる。
【０００３】
従来技術の「確定的」タイミング法は、固定されたプロセス・コーナ又は「ケース」でタイミング解析（timing）を実行する。従って、回路遅延の確率分布、及び信号伝搬アークのクリティカリティを予測することは困難なものとなり得る。しかも、確定的タイミング法においては、クリティカル・パスは一意であり、従って、最適化方法における改善の自明な目標である。統計的タイミングにおいては、各々の経路及び各々のエッジは、ある大きさの非負の、クリティカルとなる確率を有することが観察される。集積回路の手動又は自動最適化をガイドするために、このようなエッジ・クリティカリティ確率を大小のオーダーで予測することが望ましい。
【０００４】
クリティカリティ確率を予測する従来技術の方法は、相関を正確に考慮することが非能率的及び不可能であるといった問題の影響を受ける。クリティカリティを計算する１つの方法はモンテカルロ・シミュレーションを直接的なやり方で適用することであり、これは、所与の確率分布を満たすプロセス・パラメータの多数の無作為な組み合わせを生成し、次いで確定的タイミング解析を繰り返し実行して、プロセス・パラメータの個々の組み合わせの各々についてクリティカルなタイミング・アークを検出することによるものである。特定のエッジが最もクリティカルな経路上にあるような回路の分率が、そのエッジのクリティカリティ確率である。しかしながら、この手法は余りにも多くの確定的タイミング解析を必要とするので、計算が非能率的になり過ぎる恐れがある。
【０００５】
パラメータ化統計的静的解析を用いる別の従来技術の方法は、「Ｓｙｓｔｅｍ  ａｎｄ    Ｍｅｔｈｏｄ  ｆｏｒ  Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｃｒｉｔｉｃａｌｉｔｙ  Ｐｒｅｄｉｃｔｉｏｎ  ｏｆ  Ｄｉｇｉｔａｌ  Ｃｉｒｃｕｉｔｓ」という名称の特許文献１に記載されている。しかしながら、この手法は、「タイトネス確率（ｔｉｇｈｔｎｅｓｓ  ｐｒｏｂａｂｉｌｉｔｉｅｓ）」が独立した確率であると暗黙的に仮定している。タイトネス確率は、信号伝播経路の再収束と、共通のグローバルな変動源への依存性との両方に起因して強く相関することがあるので、この仮定には欠点があり、クリティカリティ確率の不正確な予測に繋がる。
【０００６】
よって、上記の問題を克服する必要がある。
【０００７】
【特許文献１】米国特許出願公開番号第２００５／００６６２９８号
【特許文献２】米国特許出願公開番号第２００５／００６５７６５号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の態様は、デジタル回路におけるクリティカリティ予測のためのシステム及び方法に関する。具体的には、本発明の態様は、パラメータ化統計的静的タイミング解析（statistical static timing analysis（ＳＳＴＡ））の際にタイミング・グラフの各エッジのクリティカリティ確率を計算するための方法を開示する。
【課題を解決するための手段】
【０００９】
回路のタイミング・グラフのエッジのクリティカリティ確率を判定するための方法を提供する方法が説明される。本方法は、タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するステップと、回路の統計的タイミング解析を実行するステップと、注目する各エッジについて、タイミング・グラフを複数の部分に分割するカットセットを定めるステップと、カットセット内の各エッジについて、エッジ・スラックを判定するステップと、カットセット内の全てのエッジ・スラックの統計的極大（statistical maximum）を計算するステップと、各エッジのエッジ・クリティカリティ確率を統計的極大から推論するステップと、を含む。
【００１０】
本発明は、さらに、回路の統計的タイミング解析において、クリティカリティを予測するためのシステムであって、タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するための手段と、回路の統計的タイミング解析を実行するための手段と、タイミング・グラフの各レベルについて、タイミング・グラフを複数の部分に分割するカットセットを定めるための手段と、カットセット内の各エッジについて、エッジ・スラックを判定するための手段と、カットセット内の全てのエッジ・スラックの統計的極大を計算するための手段と、各エッジのエッジ・クリティカリティ確率を統計的極大から推論するための手段と、を含むシステムを提供する。
【００１１】
本発明は、また、回路のタイミング特性を最適化するためのアプリケーションを配置するための方法であって、タイミング解析される回路に対応する有向非循環グラフを形成し、回路の統計的タイミング解析を実行し、注目する各エッジについて、タイミング・グラフを複数の部分に分割するカットセットを定め、カットセットの中の各々のエッジについて、エッジ・スラックを判定し、カットセット内中の全てのエッジ・スラックの統計的極大を計算し、且つ、各エッジのエッジ・クリティカリティ確率を統計的極大から推論するように作動可能なコンピュータ・インフラストラクチャを準備するステップを含む方法を提供する。
【発明を実施するための最良の形態】
【００１２】
添付の図面を参照して、以下に本発明の好ましい実施形態が説明される。
【００１３】
本発明の態様は、デジタル回路の統計的タイミング解析において、信号伝搬アークのクリティカリティを予測するためのシステム及び方法を説明する。ある信号伝搬アークのクリティカリティは、そのアークがクリティカルである確率（即ち、あるタイミング・アークがタイミング・クリティカルな（timing-critical）信号伝搬経路に属するチップを製造する確率）である。
【００１４】
図１は、本発明の１つの実施形態による統計的静的タイミング解析システム１００の概略的なブロック図である。システム１００は、本明細書において代替的にツール１００とも呼ばれる。システム１００は複数の入力１１０、１２０、１３０、１４０を受け取るように構成される。第１の入力は、解析される回路の構造を表す回路ネットリスト１１０である。第２の入力は、タイミング・アサーション１２０（例えばタイミング制約条件）の集合である。タイミング・アサーション１２０は、典型的には、プライマリ入力における到達時間と、プライマリ出力における要求到達時間と、クロックの位相に関する情報と、プライマリ出力によって駆動される外部負荷の詳細とを含む。タイミング・アサーション１２０は、確定的な数、又は独立した確率分布若しくは相関した確率分布、或いはそれらのいずれかの組み合わせの形式とすることができる。
【００１５】
第３の入力は、タイマがゲート又は配線の遅延を遅延モデル変数（例えば、入力スルー又は立ち上がり／立ち下がり時間、及び出力負荷）の関数として、並びに変動源の関数として判定できるようにする、パラメータ化された遅延モデル１３０の集合である。例えば、特許文献２、「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｔａｔｉｓｔｉｃａｌ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｄｉｇｉｔａｌ  Ｃｉｒｃｕｉｔｓ」に記載のような一次線形モデルを用いて、遅延を判定することができる。システム１００は、変動源１４０の統計量に関する情報を受け取るように構成される。変動源１４０は、典型的には、各々の変動源に関する平均値と標準偏差とを伴う変動源のリストを含む。
【００１６】
確率的な又は統計的な静的タイミングモジュール１５０は、入力１１０、１２０、１３０、１４０を受け取って、回路の全てのノードにおける到達時間及び要求時間のパラメータ化された一次モデルで注釈された回路のタイミング・グラフ１６０（例えば出力１６０）を生成するように構成される。パラメータ化された一次モデル１６０は、一次線形モデルの形とすることができる。到達時間及び要求時間のパラメータ化されたモデルで注釈されたタイミング・グラフ１６０は、タイミング・アークのクリティカリティを計算するように構成されたユニット１７０によって受け取られる。ユニット１７０は、タイミング・アークのクリティカリティ１８０を計算する。タイミング・アークのクリティカリティ１８０は、製造されたチップにおけるタイミング・アークのクリティカリティ確率を示す。例えば、タイミング・アークＡのクリティカリティは、タイミング・クリティカルな信号伝搬経路上にタイミング・アークＡがある回路を製造する確率を与える。
【００１７】
図２は、本発明の１つの実施形態による、タイミング・アークのクリティカリティによって駆動される回路最適化システム２００の概略図である。システム２００は、回路最適化モジュール２４０と、静的タイミング解析装置２５０とを含む。回路最適化モジュール２４０は、回路ネットリスト２１０、タイミング・アサーションの集合、パラメータ化された遅延モデル２２０、及び最適化目標及び制約条件２３０を入力として受け取るように構成される。
【００１８】
回路ネットリスト２１０は、最適化される回路の構造を表す。
【００１９】
パラメータ化された遅延モデル２２０の集合は、静的タイミング解析装置２５０がゲート又は配線の遅延を遅延モデル変数（例えば、入力スルー又は立ち上がり／立ち下がり時間、及び出力負荷）の関数として、並びに変動源の関数として判定できるようにする。例えば、特許文献２、「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｔａｔｉｓｔｉｃａｌ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｄｉｇｉｔａｌ  Ｃｉｒｃｕｉｔｓ」に記載のような一次線形モデルを用いて、遅延を判定することができる。
【００２０】
最適化制約条件２３０は、例えば、タイミング制約条件、漏れ及びスイッチング電力制約条件、信号勾配制約条件、面積制約条件、及びノイズ制約条件を含むことができる。
【００２１】
最適化目標２３０は、最適化装置２４０が達成することが望まれる目標を指定する。例えば、最適化目標は、チップ面積又は電力を最小化すること、製造歩留まり又は性能を最大化することなど、とすることができる。
【００２２】
回路最適化装置２４０は、種々の入力を受け入れて最適化された回路２６０を生成し、これはネットリスト又はデータベースの形式とすることができる。最適化された回路２６０は、最適化目標２３０によって指定された特性を含み、かつ最適化制約条件２３０を満たす。最適化された回路２６０は、ネットリスト２１０によって指定された回路とは異なっていてもよい。その違いは、例えば、セルの寸法若しくは種類、又はトポロジーに関するものであり得る。
【００２３】
最適化の間に、最適化装置２４０は静的タイミング解析装置２５０と対話して、回路のタイミング特性を推定する。さらに、最適化装置２４０は、タイミング・アークのクリティカリティの計算装置２５０と対話して、セルの寸法若しくはセルの種類の変更の候補として適切な回路セル、又は他の回路セルの最適化変形を選択する。最適化は、離散型であっても連続型であってもよく、特定のカスタム回路設計は、ライブラリ・セルから構成されても、されなくてもよいことが理解されるべきである。当業者であれば、このような種々の最適化シナリオに適用することが可能な本発明の変種を作り出すことができるであろう。
【００２４】
本明細書全体を通じて、タイミング・アークのクリティカリティを計算するために、適切な場合には、以下の定義が用いられる。
【００２５】
デジタル・システムは、典型的には、クロックサイクル又は「ティック」ごとに何らかの計算を実行する回路を基にして動作する。特定のクロックサイクルにおいて、所与の信号は、回路に印加された入力に応じて、スイッチングしない場合があり、一度スイッチングする場合があり、又は何度もスイッチングする場合がある。各々のクロックサイクル内で、システムにおける全ての信号の各々に関して、正確なタイミング（例えば、早モード到達時間（early mode arrival time）、即ち「早到達時間」、及び遅モード到達時間（late mode arrival time）、即ち「遅到達時間」）を保証することが望ましい。
【００２６】
早モード到達時間とは、信号がスイッチングできる（例えば、前回のクロックサイクルの間のその信号の安定した論理状態から変化する）可能性がある最も早い時間であると定義される。早モード到達時間は、前回のサイクルが「定常に戻り（settle down）」、且つ現在のクロックサイクルの間に論理値が変化する即ちスイッチングする前に正しい論理値を記録したということを保証する。信号がスイッチングすることが可能であり、尚且つ、回路を所望の通りに機能させる最も早い時間は、「早要求時間」と呼ばれる。
【００２７】
遅モード到達時間とは、信号がスイッチングを停止して安定状態になる最も遅い時間であると定義される。これは、回路がクロックサイクル制約条件を満たすために望まれる時間で機能を完了することを保証する。回路が正確に機能できるようにするために、信号がスイッチングを停止して最終的な安定な論理状態おいて安定になることが望まれる最も遅い時間は、「遅要求時間」と呼ばれる。
【００２８】
遅モードにおいて、要求時間と到達時間との間の代数的な差は、「遅タイミング・スラック」と定義される。同様に、早モードにおいて、到達時間と要求時間との間の代数的な差は、「早タイミング・スラック」と定義される。
【００２９】
タイマは、タイミング・グラフを通じてタイミング値を「順方向伝搬」することによって、到達時間を計算し、また、要求時間はタイミング・グラフを通じてタイミング値を「逆方向伝搬」することによって計算される。
【００３０】
簡略にするために、本記載は遅モードのタイミング量（例えば、遅到達時間及び遅要求時間）の計算に限定される。しかしながら、クリティカリティを計算するために提示される本技術及び方法は、早モードのタイミング量（例えば、早到達時間及び早要求時間）に拡張することが可能であると認識されるであろう。
【００３１】
タイミング・グラフは、デジタル回路のモデルである。タイミング・グラフの頂点は、タイミング・グラフによってモデル化される回路のノードに対応する。タイミング・グラフのアーク、即ち「タイミング・アーク」は、頂点を連結する。タイミング・アークは有向であり、１つの回路ノードから別の回路ノードへの信号伝搬をモデル化する。各々のタイミング・アークに伝搬遅延が割り当てられる。遅延は、タイミング・アークの始点から終点までの信号伝播時間に等しい。タイミング・グラフの２つのノードは特殊な意味を持つことがあり、すなわち、全ての信号が出発するソース・ノード、及び全ての回路信号の行き先であるシンク・ノードである。１つのプライマリ入力と１つの出力とを有する回路に関して、ソース・ノードは回路のプライマリ入力であり、シンク・ノードは回路のプライマリ出力である。複数のプライマリ入力及び出力を有する回路に関しては、解析の際の便宜のために、ソース・ノード及びシンク・ノードは回路の実際のノードに追加して導入される。よって、ソース・ノードは回路の全てのプライマリ入力に連結され、シンク・ノードは回路の全てのプライマリ出力に連結される。
【００３２】
最小のタイミング・スラックを有する頂点を持ったタイミング・グラフの経路が、クリティカル・パスであると定義される。例えば、回路がより高速で動作するように設計される場合には、クリティカル・パスを通る信号伝搬もまた、より高速にされなければならない。クリティカル・パスに属するタイミング・アークがクリティカルであると考えられるので、発明者は、非クリティカル・パスの速度を上げても回路をより高速に動作させることには寄与しないことを観察した。選択されたクリティカルアークの遅延を低減することによって、回路をより高速に動作するように設計することが可能である。非クリティカルアークにおける遅延の小さな変化は、回路性能に影響を与えることはないように見える。従って、回路の最適化のためには、回路のクリティカルなタイミング・アークを識別することが望ましい。集積回路の効果的な製造試験のためには、チップのクリティカルなタイミング・アークを知ることが有用である。配置、経路選択、バッファ挿入、及び物理的な合成といった電子設計自動化（ＥＤＡ）の他の領域は、タイミング・アークのクリティカリティを知ることから利益を得ることができる。
【００３３】
図３は、図１−図２に関して説明された用語を説明するために与えられる見本のサンプルのデジタル回路の例である。デジタル回路３００は、ゲート３２０、３５０及び３７０を有する。回路３００は、プライマリ入力３１０、３４０及び３６０と、プライマリ出力３３０及び３８０とを有する。
【００３４】
図４は、図３に示されたサンプル回路３００をモデル化したタイミング・グラフ４００を示す。タイミング・グラフ４００は、ソース・ノード４４０と、シンク・ノード４５５とを含む。ノード４１０、４３０、４９０は、図３のプライマリ回路入力３１０、３４０、及び３６０に対応する。ノード４２０及び４８５は、図３のプライマリ出力３３０及び３８０に対応する。ノード４２０、４８０及び４８５は、図３のゲート３２０、３５０及び３７０の出力に対応する。アーク４２５、４６０、４５７は、ソース・ノード４４０をノード４１０、４３０、４９０にそれぞれ連結するタイミング・アークである。アーク４３５及び４７０は、ノード４２０、４８５をシンク・ノード４５５に連結するタイミング・アークである。信号は、ソース・ノード４４０から、全てのタイミング・アークをそのタイミング・アークに割り当てられた遅延に従いながら通過して、シンク・ノード４５５へ伝搬する。
【００３５】
全てのゲート伝搬遅延が確定的な値であるような実施形態においては、全ての到達時間及び要求時間もまた確定定な値である。しかしながら、製造及び／又は環境のばらつきがモデル化される場合には、タイミング・アークの遅延は、対応する確率分布関数を用いて記述されるランダムな変数とみなされるべきである。その場合には、到達時間、要求時間、及びタイミング・スラックの確率分布を計算するために、統計的タイミング解析が用いられるべきである。
【００３６】
パラメータ化統計的静的タイミング解析（ＳＳＴＡ）は、回路の解析及び最適化に対して有用である。この技術によれば、ゲート遅延は、以下の一次線形モデルとして表現される。
【数１】
2009519528.tif 000003
ここでａ０は平均値であり、ΔＸｉはグローバル・パラメータＸｉの変動であり、ΔＸｉ＝Ｘｉ−Ｘｉ，０であって、ここでＸｉ，０はＸｉの平均値であり、ａｉはパラメータ変動ΔＸｉに対するゲート遅延の感度であり、ΔＲａはゲート遅延の無相関の変動の原因となるランダム変数であり、ａｎ＋１は無相関の変動ΔＲａに対するゲート遅延の感度である。
【００３７】
式（１）に示される表現を用いて、パラメータ化ＳＳＴＡは、回路タイミング特性（例えば、到達時間及び要求到達時間、遅延、タイミング・スラック）の統計的近似を、同じ一次線形モデルの形式での同じパラメータの関数として計算する。
【００３８】
パラメータ化統計的ＳＴＡは、経路ベース又はブロックベースのいずれかとすることができる。経路ベースの統計的ＳＴＡは、各々の信号伝搬経路を別々に解析し、回路遅延の確率分布を、全ての経路の遅延の確率的極大として計算する。通常、これは全ての信号伝搬経路の列挙及びパラメータ変動空間における積分を要し、非能率的な計算手順である。
【００３９】
パラメータ化ＳＳＴＡの別の技術は、ブロックベースのＳＳＴＡである。この技術においては、信号到達時間及び信号要求到達時間は、確定的ＳＴＡによって到達時間が伝搬されるのと同様のやり方で、各々の回路ノードについてその位相幾何学的順序でプロセス・パラメータの関数として計算される。ブロックベースのＳＳＴＡを用いると、タイミング解析を増分演算（incremental operation）として実行することが可能であり、それにより、回路の変更が実施された後で、タイミングを効率的に照会することができる。
【００４０】
ブロックベースのＳＴＡは、到達時間をゲート遅延の分だけ増分し、最悪の場合の到達時間を計算することによって、各々の回路ノードにおける到達時間を計算する。到達時間をゲート遅延の分だけ増分することは、ゲート入力からその出力へ信号を伝搬することに対応する。この演算は、ゲート入力における到達時間とゲート遅延とを加算することによって実行される。最悪の場合の到達時間の計算は、ゲート入力に到達する信号の中から、最悪の場合の信号を選択する。最悪の信号とは、タイミング解析の種類に応じて、最も遅いものであってもよく、又は最も早いものであってもよい。
【００４１】
タイミング・アークのクリティカリティを計算するために提案される方法論は、発明者によって為された観察に基づくものであり、発明者は、タイミング・アークのクリティカリティが、図５及び図６に図示されるように、タイミング・アークを通る全ての信号伝搬経路のクリティカリティの総和であることを観察した。
【００４２】
図５は、サンプルのタイミング・グラフのタイミング・アークのクリティカリティ及び信号伝搬経路を図示する概略図である。具体的には、図５は、ソース・ノード５１５とシンク・ノード５３０とを有するタイミング・グラフ５００を示す。タイミング・グラフ５００から、始点５３５と終点５５０とを有する任意のタイミング・アーク５４０が選択される。経路５２０、５４５及び６５６は、ソース・ノード５１５からタイミング・アーク５４０の始点ノード５３５へと延びる。経路５２５、５５５及び５６０は、タイミング・アーク５４０の終点ノード５５０からシンク・ノード５３０へと延びる。タイミング・アーク５４０を通る種々の経路は、経路５２０、５４５及び５６５と、タイミング・アーク５４０自体と、経路５２５、５５５及び５６０とのすべての可能な組み合わせである。タイミング・グラフ５００の網掛けで示した領域は、簡略にするために明示的に図示されていない、タイミング・グラフの中のさらに多数のノード及びアークを表す。
【００４３】
各経路の遅延は、式（１）の一次線形モデルの形で表すことができる。２つの経路Ｓｋ及びＳｊと、それらの遅延の一次線形モデルとを考えると、
【数２】
2009519528.tif 000004
であり、ここで、ａ０，ｋ、ａ０，ｊは遅延の平均値であり、ΔＸｉはパラメータＸｉの変動であり、ΔＸｉ＝Ｘｉ−Ｘｉ，０であって、ここでＸｉ，０はＸｉの平均値であり、ａｉ，ｋ、ａｉ，ｊはパラメータ変動ΔＸｉに対する経路遅延の感度であり、ΔＲａ，ｋ、ΔＲａ，ｊは経路遅延の無相関の変動の原因となるランダム変数であり、ａｎ＋１，ｋ、ａｎ＋１，ｊはそれぞれ、無相関の変動ΔＲａ，ｋ、ΔＲａ，ｊに対する経路遅延の感度である。
【数３】
2009519528.tif 000005
でない限り、遅延Ｄｋ及びＤｊ（ランダム変数と見なされる）が正確に同一の値を持つ確率は０である。この場合には、２つの経路Ｓｋ及びＳｊのうちの少なくとも一方がクリティカルである確率は、各々の経路がクリティカルである個々の確率の合計である。即ち、
【数４】
2009519528.tif 000006
【００４４】
式（３）が成立する場合、経路Ｓｋ及びＳｊは同一の遅延を有し得る。その場合には、経路Ｓｋ及びＳｊの一方がクリティカルであれば、他方も同様にクリティカルである。式（５）に示されるように、経路Ｓｋ及びＳｊの各々にクリティカリティ値を割り当てることができる。
【数５】
2009519528.tif 000007
式（４）は、式（５）についても成立することがわかる。
【００４５】
式（５）で例証された概念は、１対の経路から任意の数の経路まで拡張することができる。即ち、経路の集合｛Ｓ１，Ｓ２，．．．，Ｓｎ｝のうちの少なくとも１つの経路がクリティカルである確率は、これらの経路の各々がクリティカルである個々の確率の総和に等しい。即ち、
【数６】
2009519528.tif 000008
【００４６】
ここから、タイミング・アークのクリティカリティは、図６に示されるように、そのアークを通る全ての経路のクリティカリティの総和であることが直接導かれる。
【００４７】
図６は、図５のサンプルのタイミング・グラフに示されるようにタイミング・アークを通る経路のクリティカリティ領域を持つ変動空間を示す。具体的には、図６は、２つのサンプル・パラメータ変動、即ち有効チャネル長Ｌｅｆｆ及びトランジスタ閾値ＶＴｈの空間６１０を概略的に図示する。空間６１０は、Ｌｅｆｆ及びＶＴｈの変動を−３σから３σまでカバーする。空間６１０の各点は、ＬｅｆｆとＶＴｈとの１つの組み合わせに対応する。多角形６１５、６２０、６２５、６３０、６３５、６４０、６４５、６５０、６５５は、タイミング・グラフ５００のタイミング・アーク５４０（図５）を通る経路がクリティカルであるようなプロセス・パラメータの組み合わせの領域を表す。各々の多角形領域は、アーク５４０を通る９つの経路のうちの１つに対応する。図５のタイミング・グラフは例示的なものであり、本発明の態様をより良く理解する説明のために示されることが認識される。１つの好ましい実施形態において、経路遅延はプロセス・パラメータの異なる線形関数であるので、多角形領域は互いに境界を接することができるのみであり、決して交差しない。アーク５４０を通る経路のうちの少なくとも１つがクリティカルであればそのタイミング・アークはクリティカルであるので、全ての多角形６１５、６２０、６２５、６３０、６３５、６４０、６４５、６５０、６５５の和集合は、タイミング・アーク５４０がクリティカルであるようなプロセス・パラメータの組み合わせの領域である。
【００４８】
タイミング・グラフのカットセットに属するタイミング・アークの集合を考えると、タイミング・アークのクリティカリティの計算を単純化することが可能である。連結グラフのカットセットとは、グラフからそれを消去することでグラフが２つの連結されない成分に切断されるようなアークの集合であると定義される。真の（又は最小の）カットセットとは、そのカットセットのどの真の部分集合もそれ自体はカットセットではないようなカットセットである。
【００４９】
タイミング・アークのクリティカリティの計算を単純化するために、一方がソース頂点を含み、もう一方がシンク頂点を含む２つの部分にタイミング・グラフを分離する真のカットセットのみを考える。さらに、以下の特性を満たすカットセットのみを考える。
【００５０】
即ち、カットセットＣが、成分Ｆがソース頂点を含み、成分Ｇがシンク頂点を含むようにタイミング・グラフを２つの成分Ｆ及びＧに分けるならば、どのカットセット・アークの始点も成分Ｆに属し、どのカットセット・アークの終点も成分Ｇに属することになる。別の言い方をすれば、全てのカットセット・アークのアークは、ソース頂点を含む成分から、シンク頂点を含む成分へと向けられる。簡略にするために、真のカットセットを、以下の説明においては「カットセット」と呼ぶ。
【００５１】
タイミング・グラフは有向非循環グラフ（ＤＡＧ）であり、ＤＡＧの頂点は位相幾何学的にソートすることが常に可能である（例えば、ＤＡＧは、各々のアークが下位の指数を持つ頂点から上位の指数を持つ頂点に向かうように順序付けられる）。
【００５２】
タイミング・グラフがカットセットＣを持つならば、そのタイミング・グラフのソース頂点からシンク頂点に向かうどの経路も、カットセットＣに属するアークを有する。さもなければ、ソース頂点とシンク頂点とはグラフの異なる成分に属することができなくなる。
【００５３】
ソース頂点からシンク頂点へのどの経路も、カットセットに属するアークを１つだけ有する。一旦、経路がカットセット・アークを通ったら、その経路はシンク頂点を有する成分に到達し、ソース頂点を有する成分に戻ることはできない。従って、この経路はカットセットの中の別のアークを通ることはできない。よって、同じカットセットの中の２つのタイミング・アークａとｂは、それらを通る異なる経路の集合を有するので、これらが同時にクリティカルになる確率（即ち、両方のタイミング・アークがクリティカルであるようなチップを製造する確率）は０であると結論付けることができる。
【００５４】
タイミング・グラフのどのカットセットについても、タイミング・アークのクリティカリティの総和は、そのチップの全ての経路のクリティカリティの総和を表しているので、常に１である。
【００５５】
所与のカットセットＣのどのタイミング・アークａｉについても、このタイミング・アークを通る全ての経路の最大遅延の一次線形モデルＤｉ，Ｃは既知であると仮定する。その場合には、これらの全ての一次モデルＤｉ，Ｃの統計的極大としてのタイミング・グラフの最大遅延Ｄの一次モデルは、
【数７】
2009519528.tif 000009
として計算することができ、ここで、極大は、カットセットＣの全てのタイミング・アークにわたって統計学的な意味で計算され、ｎＣはカットセットの中のエッジの数である。
【００５６】
タイミング・アークａｉを通る経路の最大遅延Ｄｉ，Ｃが、ソース頂点からシンク頂点への他のいずれの経路の遅延よりも大きい確率Ｐｉ，Ｃが、このタイミング・アークａｉのクリティカリティそのものである。この確率Ｐｉ，Ｃは、式（７）で統計的極大を計算する場合における遅延Ｄｉ，Ｃに対応するタイトネス確率に等しい。
【００５７】
従って、タイミング・アークのクリティカリティを計算するためには、そのタイミング・グラフのカットセットと、各タイミング・アークを通る経路の集合の最大遅延の一次モデルと、一次線形モデルの形式で表されるこれらの最大遅延のタイトネス確率とを計算することが望ましい。
【００５８】
図７は、タイミング・グラフの例示的なカットセットを示す。具体的には、図７は、タイミング・グラフ７００のカットセットの一例７８０を概略的に図示する。タイミング・グラフ７００は、ソース・ノード７３５及びシンク・ノード７５０を有する。カットセット７８０は、それぞれ、その始点ノード７２５、７２５及び７６０から終点ノード７４０、７５５及び７５５に向かう、タイミング・アーク７３０、７８５及び７６５を含む。経路の集合７１５はソース・ノード７３５からノード７２５へ向かう。経路の集合７２０はノード７４０からシンク・ノード７５０へ向かう。経路の集合７７０はソース・ノード７３５からノード７６０へ向かう。経路の集合７７５はノード７５５からシンク・ノード７５０へ向かう。
【００５９】
図８は、図４にその一例を示すタイミング・グラフに関して、タイミング・グラフのカットセットを計算するためのフロー方法である。具体的には、図８は、タイミング・グラフのカットセットを構築するための方法８００を示す。カットセットは多くの異なる方法で構築することが可能であり、ここで説明される本発明の概念は、カットセットがどのようにして構築されたかに関わりなく適用可能であることが理解されるべきである。方法８００への入力はタイミング・グラフであり、出力はそのタイミング・グラフのタイミング・アークの全てを網羅するカットセットの集合である。
【００６０】
開始ブロック８１０は機能ブロック８１５に制御を渡す。
【００６１】
ステップ８１５において、機能ブロック８１５はタイミング・グラフをレベル化（levelize）する。レベル化とは、タイミング・グラフの頂点の集合Ｖを、全てのタイミング・アークが下位レベルの頂点から上位レベルの頂点へと向かうように部分集合（レベル）Ｖ１，Ｖ２，．．．，Ｖｎに分割することであると定義される。レベル化は、確定的タイミング解析と統計的タイミング解析の両方において用いられており、タイミング解析装置（例えば、図２に示されるタイミング解析装置２２５）の一部である。ステップ８１５は、静的タイミング解析ツールの適切な機能ブロックを呼び出すことによって実施されてもよく、又は静的タイミング解析ツールによって構築されたレベル化されたタイミング・グラフに直接アクセスすることによって実施されてもよい。次いでステップ８２０が実行される。
【００６２】
ステップ８２０において、空集合Ｃ０が構築される。次いでステップ８２５が実行される。ステップ８２５において、レベルのカウンタｉが値１に初期化され、変数ｎはタイミング・グラフのレベルの数に等しく設定される。次いで、方法はステップ８３０に移る。
【００６３】
ステップ８３０において、カットセットＣｉが計算される。カットセットＣｉ−１を考え、そこから、レベルＶｉの頂点に入ってくる全てのアークが消去される。さらに、以下の式に従って、レベルＶｉの頂点から出ていく全てのアークが得られたカットセットに追加される。即ち、
【数８】
2009519528.tif 000010
次いで、方法はステップ８３５に移る。
【００６４】
ステップ８３５は、レベルのカウンタｉを１だけ増分し、ステップ８４０に制御を渡す。
【００６５】
ステップ８４０は、レベルのカウンタｉがタイミング・グラフのレベルの数ｎより少ないか否かを判定する。カウンタｉがｎより少ない場合には、判断ブロック８４０はタイミング・グラフの次のカットセットの計算のために機能ブロック８３０に制御を渡す。そうでない場合には、ステップ８４０は終了ブロック８４５に制御を渡す。
【００６６】
図９は、例示的なタイミング・グラフのカットセットの計算を図示する。具体的には、図９は、ソース・ノード９２６とシンク・ノード９５６とを有するタイミング・グラフの一例９００上でのカットセットの計算を説明する。説明を目的として、タイミング・グラフ９００の１つのレベル９０３と、２つのカットセット９８０及び９８３とが示される。レベル９０３は、頂点９３０及び９７６を含む。頂点９３０は、入ってくるアーク９０６と、出ていくアーク９１０及び９４０とを有する。頂点９７６は、入ってくるタイミング・アーク９４６と、出ていくタイミング・アーク９７０とを有する。カットセット９８０は、タイミング・アーク９０６、９３６、及び９４６を含む。カットセット９８３は、タイミング・アーク９１０、９４０、９３６、及び９７０を含む。図９は、方法８００がタイミング・グラフ９００のレベル９０３を処理するときのスナップショットを示す。方法８００は、カットセット９８０からカットセット９８３へと遷移する。この方法は、アーク９０６、９３６及び９４６を有するカットセット９８０を考え、そのカットセット９８０からレベル９０３の頂点９３０、９７６に入ってくるアーク９０６及び９４６を除去し、レベル９０３の頂点９３０、９７６から出ていくアーク９１０、９４０、及び９７０を追加することによって、カットセット９８３を計算し、これにより新しいカットセット｛９３６、９１０、９４０、９７０｝が生成される。
【００６７】
図１０は、タイミング・グラフの１つのタイミング・アークを通る全ての経路の最大遅延の計算を図示する。あるエッジを通る全ての経路の最大遅延は、そのエッジのエッジ・スラックと呼ばれる。具体的には、図１０は、ソース頂点１０１５とシンク頂点１０３５とを有するタイミング・グラフ１０００を概略的に示す。任意に選択されたタイミング・アーク１０４０を通る経路の最大遅延の一次モデルの計算が示される。タイミング・アーク１０４０は、始点１０２５と終点１０３０とを有する。経路の集合１０２０は、ソース頂点１０１５から、選択されたタイミング・アーク１０４０の始点１０２５へ向かう。経路の集合１０４５は、選択されたタイミング・アーク１０４０の終点１０３０から、タイミング・グラフのシンク頂点１０３５へ向かう。タイミング・グラフ１０００の中の網掛けで示した領域は、このタイミング・グラフの明示的に示されていないさらに多数のノード及びエッジを示す。
【００６８】
パラメータ化統計的タイミング解析が到達時間及び要求時間を一次線形モデルの形で計算したと仮定すると、静的タイミング・グラフ解析における到達時間及び要求時間の定義から、タイミング・アーク１０４０の始点１０２５における到達時間ＴＡＴ，Ｉは、ソース頂点１０１５から始点１０２５への信号伝搬の最大遅延そのものであると結論付けることができる。他方では、タイミング・アーク１０４０の終点１０３０における要求時間ＴＲＡＴ，Ｔは、頂点１０３０からシンク頂点１０３５への信号伝搬の最大遅延そのものに負号を付けたものである。簡略にするために、ソース頂点１０１５における到達時間及びシンク頂点１０３５における要求時間は０に設定されると仮定する。タイミング・アーク１０４０を通る経路の集合の最大遅延ＤＳは、タイミング・アーク１０４０のソース頂点１０１５から始点１０２５までの最大遅延ＤＩと、タイミング・アーク１０４０自体の遅延Ｄａと、タイミング・アーク１０４０の終点１０３０からシンク頂点１０３５までの最大遅延ＤＴとを加算したものである。即ち、
【数９】
2009519528.tif 000011
【００６９】
この遅延は、統計的静的タイミング解析によって計算された到達時間及び要求時間の値に関して表すことができる。即ち、
【数１０】
2009519528.tif 000012
【００７０】
式（９）及び（１０）における加算及び減算は統計学的な意味で為されると理解される。
【００７１】
上記のことから判るように、タイミング・グラフのどのタイミング・アークを通る全ての経路の最大遅延、即ち、どのタイミング・アークのエッジ・スラックも、統計的タイミング解析の結果から効率的且つ容易に計算することができる。
【００７２】
図１１は、図４にその一例を示すタイミング・グラフのエッジのクリティカリティ確率を判定するための高レベルのフロー方法である。
【００７３】
ステップ１０５１において、タイミング解析される回路に対応する有向非循環タイミング・グラフが形成され、回路の統計的タイミング解析が実行される。次いで、方法はステップ１０５２に移る。
【００７４】
ステップ１０５２において、注目するエッジの各々について、タイミング・グラフを複数の部分に分割するカットセットが定義される。次いで、ステップ１０５３が実行される。
【００７５】
ステップ１０５３において、カットセットの中の注目するエッジの各々について、エッジ・スラックが判定される。次いで、ステップ１０５４が実行される。
【００７６】
ステップ１０５４において、カットセットの中の全てのエッジ・スラックの統計的極大が判定される。次いで、ステップ１０５５が実行される。
【００７７】
ステップ１０５５において、各エッジのエッジ・クリティカリティ確率がステップ１０５４の統計的極大演算から推論される。
【００７８】
図１２は、図９にその一例を示すタイミング・グラフに関するタイミング・アークのクリティカリティを計算するためのフロー方法１１００である。開始ブロック１１１０は機能ブロック１１１５に制御を渡す。
【００７９】
機能ブロック１１１５は、タイミング・グラフの各頂点について到達時間及び要求到達時間を計算するパラメータ化統計的タイミング解析を行う。機能ブロック１１１５は機能ブロック１１２０に制御を渡す。
【００８０】
機能ブロック１１２０は、タイミング・グラフに含まれるタイミング・アークの全てを網羅するタイミング・グラフのカットセットを構築する。これは、例えば方法８００によって行うことができる。他の適切な方法論を用いることができる。カットセットは１度に全てを構築してから処理してもよく、又は１度に１つずつ構築し、処理してもよい。機能ブロック１１２０は機能ブロック１１２５に制御を渡す。
【００８１】
機能ブロック１１２５は、変数Ｍを、機能ブロック１１２０によって構築されたカットセットの数に等しく設定する。機能ブロック１１２５は機能ブロック１１３０に制御を渡す。
【００８２】
機能ブロック１１３０は、カットセットのカウンタｉを１に初期化し、機能ブロック１１３５に制御を渡す。
【００８３】
機能ブロック１１３５は、機能ブロック１１２０によって構築されたカットセットの集合から第ｉ番目のカットセットＣｉを選択する。機能ブロック１１３５は機能ブロック１１４０に制御を渡す。
【００８４】
機能ブロック１１４０は、ＮをカットセットＣｉの中のタイミング・アークの数に等しく設定し、機能ブロック１１４５に制御を渡す。
【００８５】
機能ブロック１１４５は、現在のカットセットの中のアークのカウンタｊを１に初期化し、機能ブロック１１５０に制御を渡す。
【００８６】
機能ブロック１１５０は、カットセットＣｉの中から第ｊ番目のタイミング・アークｅｉ,ｊを選択し、機能ブロック１１５５に制御を渡す。
【００８７】
機能ブロック１１５５は、タイミング・アークｅｉ，ｊの始点ｖｉｎｉｔ，ｉ，ｊと終点ｖｔｅｒｍ，ｉ，ｊとを見つけ出し、機能ブロック１１６０に制御を渡す。
【００８８】
機能ブロック１１６０は、タイミング・アークｅｉｊを通る全ての経路の集合の最大遅延Ｄｉ，ｊの一次線形モデル（即ちｅｉ，ｊのエッジ・スラック）を以下のように計算する。即ち、
【数１１】
2009519528.tif 000013
ここで、
・ＴＡＴ（ｖｉｎｉｔ，ｉ，ｊ）は、頂点ｖｉｎｉｔ，ｉ，ｊにおける到達時間であり、
・ｄ（ｅｉ，ｊ）はタイミング・アークｅｉ，ｊの遅延であり、
・ＴＲＡＴ（ｖｔｅｒｍ，ｉ，ｊ）は頂点ｖｔｅｒｍ，ｉ，ｊにおける要求時間である。
【００８９】
機能ブロック１１６０は、機能ブロック１１６５に制御を渡す。
【００９０】
機能ブロック１１６５は、タイミング・アークのカウンタｊを１だけ増分し、判断ブロック１１７０に制御を渡す。
【００９１】
判断ブロック１１７０は、現在のｊの値が、現在のカットセットＣｉの中のタイミング・アークの数Ｎを上回らないか否かを判定する。ｊがＮを上回らなかった場合には、判断ブロック１１７０は機能ブロック１１５０に制御を渡す。そうでない場合には、判断ブロック１１７０は機能ブロック１１７５に制御を渡す。
【００９２】
機能ブロック１１７５は、一次モデルの集合｛Ｄｉ，１，Ｄｉ，２，．．．，Ｄｉ，Ｎ｝についてのタイトネス確率Ｐｉ，１，Ｐｉ，２，．．．，Ｐｉ，Ｎを計算する。例えば、Ｐｉ，１は、Ｄｉ，１が｛Ｄｉ，１，Ｄｉ，２，．．．，Ｄｉ，Ｎ｝の極大である確率である。この計算は、幾つかの方法で行うことができる。可能な方法の１つは、モンテカルロ法を用いることである。モンテカルロ法によるタイトネス確率の計算は、タイミング・グラフの深さと等しいカットセットの数と同じ回数だけ適用すればよいので、効率的であり得る。機能ブロック１１７５は機能ブロック１１８０に制御を渡す。
【００９３】
機能ブロック１１８０は、現在のカットセットのタイミング・アークｅｉ，１，ｅｉ，２，．．．，ｅｉ，ＮのクリティカリティＣｉを、機能ブロック１１７５によって計算されたタイトネス確率Ｐｉ，１，Ｐｉ，２，．．．，Ｐｉ，Ｎに等しく設定する。機能ブロック１１８０は機能ブロック１１８５に制御を渡す。
【００９４】
機能ブロック１１８５は、カットセットのカウンタｉを１だけ増分し、判断ブロック１１９０に制御を渡す。
【００９５】
判断ブロック１１９０は、現在のｉの値がカットセットの数Ｍを上回らないか否かを判定する。現在のｉの値がＭを上回らなかった場合には、判断ブロック１１９０は機能ブロック１１３５に制御を渡して、次のカットセットを処理させる。そうでない場合には、判断ブロック１１９０は終了ブロック１１９５に制御を渡す。
【００９６】
タイミング・グラフのカットセットの計算と、タイミング・アークのクリティカリティの計算とを、上記で説明されたように独立した方法８００及び１１００によって分離させることは必ずしも必要ではない。１つのカットセットに属するタイミング・アークのクリティカリティがそのカットセットの作成直後に計算されるように、方法８００、１１００を組み合わせることができる。
【００９７】
図１３は、所与のＮ個の一次線形モデルｍ１，ｍ２，．．．，ｍＮのタイトネス確率を計算するためのアルゴリズム１２００のブロック図を示す。これらの一次線形モデルは、例えば、遅延、到達時間、又は要求時間のモデルとすることができる。エッジ・クリティカリティを計算するためには、それらは典型的には１つのカットセットの中の全てのエッジのエッジ・スラックである。
【００９８】
アルゴリズム１２００の開始ブロック１２０５は、機能ブロック１２１０に制御を渡す。
【００９９】
機能ブロック１２１０は、Ｎを所与の一次統計的モデルの数に等しく設定し、機能ブロック１２１５に制御を渡す。
【０１００】
機能ブロック１２１５は、一次線形モデルのカウンタｉを１に初期化し、機能ブロック１２２０に制御を渡す。
【０１０１】
機能ブロック１２２０は、モデルｍｉを除く全ての所与の一次線形モデルの統計的極大を計算する。これは、Ｎ−１個の一次線形モデルｍ１，ｍ２，．．．，ｍｉ−１，ｍｉ＋１，．．．，ｍＮの統計的極大を計算することを意味する。計算結果は、一次モデルｍｍａｘであり、これはエッジｉの補完的エッジ・スラック（complement edge slack）と呼ばれる。機能ブロック１２２０は機能ブロック１２２５に制御を渡す。
【０１０２】
機能ブロック１２２５は、一次エッジ・スラック・モデルｍｉが機能ブロック１２２０によって計算された一次の補完的エッジ・スラック・モデルｍｍａｘより大きくなるタイトネス確率Ｐを計算する。機能ブロック１２２５は機能ブロック１２３０に制御を渡す。
【０１０３】
機能ブロック１２３０は、一次モデルｍｉのタイトネス確率Ｐｉを、機能ブロック１２２５によって計算されたＰの値に等しく設定し、機能ブロック１２３５に制御を渡す。
【０１０４】
機能ブロック１２３５は一次線形モデルのカウンタｉを１だけ増分し、判断ブロック１２４０に制御を渡す。
【０１０５】
判断ブロック１２４０は、ｉが所与の一次モデルの数Ｎを上回らないか否かを判定する。現在のｉの値がＮを上回らなかった場合には、判断ブロック１２４０は機能ブロック１２２０に制御を渡す。そうでない場合には、制御は機能ブロック１２４５に渡される。
【０１０６】
機能ブロック１２４５は、一次線形モデルｍ１，ｍ２，．．．，ｍＮのタイトネス確率Ｐ１，Ｐ２，．．．，ＰＮの総和Ｓを計算し、機能ブロック１２５０に制御を渡す。理論的には、Ｓは１．０に等しいはずであるが、数値の丸め又は他の近似のせいで、１．０に等しくならないこともある。
【０１０７】
機能ブロック１２５０は、各タイトネス確率値ＰｉをＳで除算することによって、正規化する。この正規化は、タイトネス確率の総和が１となることを保証することによって、計算の確度を向上させることができる。機能ブロック１２５０は終了ブロック１２５５に制御を渡す。
【０１０８】
方法１２００は、バイナリの統計的極大演算のＯ（Ｎ２）回の適用を必要とする場合がある。別の実施形態においては、クリティカリティは、所与の一次線形モデルの集合を、２，４，８，．．．，２ｌｏｇＮ個の要素を有する階層化された入れ子型の部分集合の系に分割し、この階層的な分割の二進分割木（binary partition tree）を構築し、部分集合の各々についての統計的極大を、２つの要素を有する部分集合から始めて、次に４つの要素の部分集合について、そして以下同様に予め計算し、二進分割木を走査して、この走査の間に補完的な部分集合についての統計的極大と必要とされるタイトネス確率とを計算することによって、線形時間Ｏ（Ｎ）で計算することができる。
【０１０９】
いかなる一般性を失うこともなく、簡略にするために、クリティカリティを計算することが望まれる一次線形モデルｍ１，ｍ２，．．．，ｍＮの数Ｎを、２のべき乗であると仮定する。即ち、
【数１２】
2009519528.tif 000014
【０１１０】
図１４は、８つの一次線形モデルの集合｛ｍ１，ｍ２，ｍ３，ｍ４，ｍ５，ｍ６，ｍ７，ｍ８｝の階層的に釣り合いのとれた分割のための順序のある二分木１３００を示す。木は、根ノード１３０３と、所与の一次線形モデル｛ｍ１，ｍ２，ｍ３，ｍ４，ｍ５，ｍ６，ｍ７，ｍ８｝を模式的に表す葉ノード１３３３、１３３５、１３３８、１３４０、１３４３、１３４５、１３４８、１３５０とを有する。葉ノードの集合は、第１の分割レベルにおいて部分集合１３２３、１３２５、１３２８、１３３０に分割される。木ノード１３１３、１３１５、１３１８、１３２０は、これらの部分集合｛｛ｍ１，ｍ２｝，｛ｍ３，ｍ４｝，｛ｍ５，ｍ６｝，｛ｍ７，ｍ８｝｝に対応する。第１のレベルの部分集合の集合は、第２のレベルの２つの部分集合１３５５、１３６０に分割される。木ノード１３０５、１３１０は、第２のレベルのこれらの部分集合｛｛｛ｍ１，ｍ２｝，｛ｍ３，ｍ４｝｝，｛｛ｍ５，ｍ６｝，｛ｍ７，ｍ８｝｝｝に対応する。
【０１１１】
図１５は、所与のＮ個の一次エッジ・スラック線形モデルについてのタイトネス確率を計算するための流れ図１４００のブロック図を示す。発明者は、所与の一次エッジ・スラック・モデルの数は２のべき乗であると仮定したが、本方法はいかなる数の一次エッジ・スラック・モデルにも適用できることが自明である。
【０１１２】
開始ブロック１４０５は、機能ブロック１４１０に制御を渡す。
【０１１３】
機能ブロック１４１０は、Ｎを、タイトネス確率を計算することが望まれる所与の一次線形エッジ・スラック・モデルの数に等しく設定する。機能ブロック１４１０は、機能ブロック１４１５に制御を渡す。
【０１１４】
機能ブロック１４１５は、分割木のレベルの数を、
【数１３】
2009519528.tif 000015
として計算する。
【０１１５】
所与の一次モデルの数を２のべき乗（例えば、Ｎは２のべき乗）と仮定しているので、この計算は正確である。しかしながら、方法１４００は、任意の数の一次モデルを扱うように拡張することができる。機能ブロック１４１５は、機能ブロック１４２０に制御を渡す。
【０１１６】
機能ブロック１４２０は、分割木の葉（例えば、最下位）レベルを構築し、所与の一次線形モデルに対応する葉ノードの順序集合を構築する。機能ブロック１４２０は、機能ブロック１４２５に制御を渡す。
【０１１７】
機能ブロック１４２５は、分割レベル（例えば、分割木のレベル）のカウンタｉを１に設定し、機能ブロック１４３０に制御を渡す。
【０１１８】
機能ブロック１４３０は、現在の分割レベルにおける部分集合（例えば、分割木の現在のレベルにおけるノード）の数をＭ＝Ｎ／２に設定し、機能ブロック１４３５に制御を渡す。
【０１１９】
機能ブロック１４３５は、現在の分割レベルにおける部分集合のカウンタｊを１に初期化し、機能ブロック１４４０に制御を渡す。
【０１２０】
機能ブロック１４４０は、第ｉ番目の分割レベルの第ｊ番目の部分集合を以下のように構築する。
【数１４】
2009519528.tif 000016
【０１２１】
この部分集合Ｓｉ，ｊは、前のレベルの分割に由来する２つの部分集合Ｓｉ−１，２ｊ−１、Ｓｉ−１，２ｊをその中に含めることによって構築される。部分集合Ｓｉ−１，２ｊ−１、Ｓｉ−１，２ｊは、前の分割レベルにおける部分集合の順序に従って取られる。機能ブロック１４４０は、機能ブロック１４４５に制御を渡す。
【０１２２】
機能ブロック１４４５は、構築された部分集合Ｓｉ，ｊの一次線形モデルｍｉ，ｊを計算し、それをこの部分集合に割り当てる。この一次モデルｍｉ，ｊは、部分集合Ｓｉ，ｊの構築に用いられた部分集合Ｓｉ−１，２ｊ−１、Ｓｉ−１，２ｊに対応する一次線形モデルｍｉ−１，２ｊ−１、ｍｉ−１，２ｊの統計的極大を計算することによって計算される。一次線形モデルｍｉ，ｊは、部分集合Ｓｉ，ｊに含まれる全ての一次線形モデルの統計的極大の一次線形モデルである。機能ブロック１４４５は、機能ブロック１４５０に制御を渡す。
【０１２３】
機能ブロック１４５０は、部分集合のカウンタの現在の値ｊを１だけ増分し、判断ブロック１４５５に制御を渡す。
【０１２４】
判断ブロック１４５５は、ｊが現在の分割レベルにおける部分集合の数Ｍを上回らないか否かを判定する。ｊが現在の分割レベルにおける部分集合の数を上回らなかった場合には、判断ブロック１４５５は機能ブロック１４４０に制御を渡して、現在の分割レベルにおける次の部分集合を構築させる。そうでない場合には、制御は機能ブロック１４６０に渡される。
【０１２５】
機能ブロック１４６０は、第ｉ番目の分割レベルに対応する分割木の第ｉ番目のレベルを構築する。この構築は、部分集合の構築中に行ってもよい。しかしながら、１つの好ましい実施形態において、より明確にするために、発明者は、部分集合の構築から木ノードの構築を独立させた。機能ブロック１４６０は、機能ブロック１４６５に制御を渡す。
【０１２６】
機能ブロック１４６５は、分割レベルのカウンタｉを１だけ増分し、機能ブロック１４７０に制御を渡す。
【０１２７】
機能ブロック１４７０は、次の分割レベルにおける部分集合の数ＭをＭ＝Ｍ／２として計算し、判断ブロック１４７５に制御を渡す。
【０１２８】
判断ブロック１４７５は、ｉが分割レベルの数ｎより少ないか否かを判定する。ｉがｎより少なかった場合には、判断ブロック１４７５は機能ブロック１４３５に制御を渡して、次の分割レベルを構築させる。そうでない場合には、制御は機能ブロック１４８０に渡される。
【０１２９】
機能ブロック１４８０は、木に根ノードを加えることによって分割木の構築を完了し、機能ブロック１４８３に制御を渡す。
【０１３０】
機能ブロック１４８３は、根ノードの左の子に、根ノードの右の子に対応する部分集合の一次線形モデルｍｒｉｇｈｔに等しい補完的な一次線形モデルｍｌ，ｃｏｍｐｌを割り当てる。この補完的なモデルは、左の子に対応する部分集合の補集合である部分集合の統計的極大の一次線形モデルに等しい。機能ブロック１４８３は、機能ブロック１４８５に制御を渡す。
【０１３１】
機能ブロック１４８５は、根ノードの右の子に、根ノードの左の子に対応する部分集合の一次線形モデルｍｌｅｆｔに等しい補完的な一次線形モデルｍｒ，ｃｏｍｐｌを割り当てる。この補完的なモデルは、右の子に対応する部分集合の補集合である部分集合の統計的極大の一次線形モデルに等しい。機能ブロック１４８５は、機能ブロック１４８８に制御を渡す。
【０１３２】
機能ブロック１４８８は、分割木の左の部分木を上から下へ走査して、その葉ノードについてのタイトネス確率を計算する。走査の方法１５００は、図１６に関して後述する。機能ブロック１４８８は、機能ブロック１４９０に制御を渡す。
【０１３３】
機能ブロック１４９０は、分割木の右の部分木を上から下へ走査して、その葉ノードについてのタイトネス確率を計算する。機能ブロック１４９０は、終了ブロック１４９５に制御を渡す。
【０１３４】
図１６は、分割部分木を走査し、その葉ノードに対応する一次モデルのタイトネス確率を計算するためのフロー方法１５００を図示する。方法１５００は、再帰構造を有する。即ち、この方法は、下位レベルの部分木を走査するためにそれ自身を呼び出す。方法１５００は、分割部分木のノードに対応する部分集合の補集合である部分集合を考慮に入れる。方法論１５００は、補完的な部分集合の要素の統計的極大の一次線形モデルを計算する。補完的な部分集合の一次線形モデルは、補完的な一次線形モデル、又は補完的なエッジ・スラックと呼ばれる。
【０１３５】
方法論１５００は、部分木の根が、方法１５００の呼び出しに先立って割り当てられた補完的な一次モデルを有すると仮定する。これは、方法１５００を呼び出す方法１４００によって、又はそれ自身を再帰的に呼び出す前に方法１５００によって、のいずれかにより為される。
【０１３６】
開始ブロック１５０５は、判断ブロック１５１０に制御を渡す。
【０１３７】
判断ブロック１５１０は、根ノードの子ノードが葉であるか否かを判定する。子ノードが葉であった場合には、判断ブロック１５１０は機能ブロック１５１５に制御を渡して、葉ノードを処理させる。そうでない場合には、機能ブロック１５３５に制御を渡す。
【０１３８】
機能ブロック１５１５は、左の補完的な一次線形モデルｍｌ，ｃｏｍｐｌを、根ノードの補完的なモデルｍｒｏｏｔ，ｃｏｍｐｌと、右の葉ノードの一次モデルｍｌｅａｆ，ｒｉｇｈｔとの統計的極大として計算する。機能ブロック１５１５は、機能ブロック１５２０に制御を渡す。
【０１３９】
機能ブロック１５２０は、左の葉ノードの一次モデルｍｌｅａｆ，ｌｅｆｔについてのタイトネス確率を、この一次モデルｍｌｅａｆ，ｌｅｆｔと左の補完的な一次モデルｍｌ，ｃｏｍｐｌとのタイトネス確率として計算する。機能ブロック１５２０は、機能ブロック１５２５に制御を渡す。
【０１４０】
機能ブロック１５２５は、右の補完的な一次線形モデルｍｒ，ｃｏｍｐｌを、根ノードの補完的なモデルｍｒｏｏｔ，ｃｏｍｐｌと左の葉ノードの一次モデルｍｌｅａｆ，ｌｅｆｔとの統計的極大として計算する。機能ブロック１５２５は、機能ブロック１５３０に制御を渡す。
【０１４１】
機能ブロック１５３０は、右の葉ノードの一次線形モデルｍｌｅａｆ，ｒｉｇｈｔに関するタイトネス確率を、この一次モデルｍｌｅａｆ，ｒｉｇｈｔと右の補完的な一次線形モデルｍｒ，ｃｏｍｐｌとのバイナリのタイトネス確率として計算する。機能ブロック１５３０は、機能ブロック１５５５に制御を渡す。
【０１４２】
機能ブロック１５３５は、左の子ノードについての補完的な一次線形モデルｍｌ，ｃｏｍｐｌを、根ノードの補完的なモデルｍｒｏｏｔ，ｃｏｍｐｌと根ノードの右の子に対応する部分集合の一次線形モデルｍｒｉｇｈｔとの統計的極大として計算する。機能ブロック１５３５は、機能ブロック１５４０に制御を渡す。
【０１４３】
機能ブロック１５４０は、右の子ノードについての補完的な一次線形モデルｍｒ，ｃｏｍｐｌを、根ノードの補完的なモデルｍｒｏｏｔ，ｃｏｍｐｌと根ノードの左の子に対応する部分集合の一次線形モデルｍｌｅｆｔとの統計的極大として計算する。機能ブロック１５４０は、機能ブロック１５４５に制御を渡す。
【０１４４】
機能ブロック１５４５は、分割木の左の部分木を上から下へ走査して、その葉ノードに関するタイトネス確率を計算する。走査は、方法１５００を再帰的に呼び出すことによって実行される。機能ブロック１５４５は、機能ブロック１５５０に制御を渡す。
【０１４５】
機能ブロック１５５０は、分割木の右の部分木を上から下へ走査して、その葉ノードに関するタイトネス確率を計算する。走査は、アルゴリズム１５００を再帰的に呼び出すことによって実行される。機能ブロック１５５０は、終了ブロック１５５５に制御を渡す。
【０１４６】
本方法は効率的であり、固有の相関を正確に考慮に入れる。回路の性能に影響を及ぼす全ての変動源が同時に考慮される。結果として得られるクリティカリティ確率は、最適化、レイアウト、バッファ挿入、及び経路選択などの種々の設計タスクの際に、手動又は自動化技術の如何を問わずに利用される。
【０１４７】
図１７は、本発明の種々の態様を実施するためのコンピュータ・システムである。
【０１４８】
コンピュータ・システム１６００は、コンピュータ・インフラストラクチャ１６０２の中に設けられる。コンピュータ・システム１６００は、本発明の教示を実行する能力があるいずれかのタイプのコンピュータ・システムを表すことが意図される。例えば、コンピュータ・システム１６００は、ラップトップ・コンピュータ、デスクトップ・コンピュータ、ワークステーション、ハンドヘルド・デバイス、サーバ、コンピュータ・クラスタなどとすることができる。ユーザ１６０４は、コンピュータ・システム１６００に直接的にアクセスしてもよく、又は、コンピュータ・システム１６００とネットワーク１６０６（例えばインターネット、広域エリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、仮想私設ネットワーク（ＶＰＮ）など）を介して通信するコンピュータ・システムを操作してもよいことが認識されるべきである。後者の場合には、コンピュータ・システム１６００とユーザが操作するコンピュータ・システムとの間の通信は、種々の様式の通信リンクのいずれかの組み合わせを経由して行われることができる。例えば、通信リンクは、有線及び／又は無線の伝送方法のいずれかの組み合わせを利用することができるアドレス可能な接続を含むことができる。通信がインターネットを経由して行われる場合には、従来のＴＣＰ／ＩＰソケットベースのプロトコルによって接続性を提供することができ、インターネットへの接続性を確立するためにインターネットサービスプロバイダを用いることができる。
【０１４９】
コンピュータ・システム１６００は、処理ユニット１６０８、メモリ１６１０、バス１６１２、及び入出力（Ｉ／Ｏ）インターフェース１６１４を含むものとして示されている。さらに、コンピュータ・システム１６００は、外部デバイス／リソース１６１６及び１つ又は複数の記憶システム１６１８と通信状態で示される。一般に、処理ユニット１６０８は、メモリ１６１０及び／又は記憶システム１６１８に格納されている、例えばエッジ・クリティカリティを計算するためのコンピュータ・プログラム・コードを実行する。コンピュータ・プログラム・コードの実行中に、処理ユニット１６０８は、メモリ１６１０、ストレージ・システム１６１８、及び／又はＩ／Ｏインターフェース１６１４からデータを読み込み、及び／又はこれらに対してデータを書き込むことができる。バス１６１２は、コンピュータ・システム１６００内の各々の構成要素の間に通信リンクを与える。外部デバイス／リソース１６１６は、ユーザが、コンピュータ・システム１６００と対話させることができるいかなるデバイス（例えばキーボード、ポインティングデバイス、ディスプレイ（例えばディスプレイ１６２０）、プリンタなど）、及び／又はコンピュータ・システム１６００が１つ又は複数の他の計算機デバイスと通信することを可能にするいかなるデバイス（例えばネットワークカード、モデムなど）を含むこともできる。
【０１５０】
コンピュータ・インフラストラクチャ１６０２は、本発明の実施に用いることが可能な種々のタイプのコンピュータ・インフラストラクチャの単なる例示である。例えば、１つの実施形態において、コンピュータ・インフラストラクチャ１６０２は、ネットワーク（例えばネットワーク１６０６）を横断して通信して本発明の種々のプロセス・ステップを実行する、２つ又はそれ以上の計算機デバイス（例えばサーバ・クラスタ）を含むことができる。さらにまた、コンピュータ・システム１６００は、本発明の実施に用いることができる多くのタイプのコンピュータ・システムの単なる代表であり、その各々がハードウェア／ソフトウェアの多数の組み合わせを含むことができる。例えば、処理ユニット１６０８は、単一の処理ユニットを含んでいてもよく、又は、１つ又は複数の位置にある１つ又は複数の処理ユニットにわたって、例えばクライアント及びサーバ上に、分散されていてもよい。同様に、メモリ１６１０及び／又は記憶システム１６１８は、１つ又は複数の位置にある種々のタイプのデータ記憶及び／又は伝送媒体のいかなる組み合わせを含むこともできる。さらに、Ｉ／Ｏインターフェース１６１４は、１つ又は複数の外部デバイス／リソース１６１６と情報を交換するためのいかなるシステムを含むこともできる。さらにまた、コンピュータ・システム１６００には、図１７に示されない１つ又は複数の付加的な構成要素（例えば、システム・ソフトウェア、通信システム、キャッシュメモリなど）が含まれてもよいことが理解される。しかしながら、コンピュータ・システム１６００がハンドヘルド・デバイスなどを含む場合には、１つ又は複数の外部デバイス／リソース１６１６（例えばディスプレイ１６２０）及び／又は１つ又は複数の記憶システム１６１８は、図示されているように外部ではなく、コンピュータ・システム１６００内部に含まれてもよいことが理解される。
【０１５１】
記憶システム１６１８は、本発明の下で情報のための記憶領域を提供することが可能ないかなるタイプのシステム（例えばデータベース）とすることもできる。この点で、記憶システム１６１８は、磁気ディスクドライブまたは光ディスクドライブといった、１つ又は複数の記憶デバイスを含むことができる。別の実施形態において、記憶システム１６１８は、例えばローカルエリアネットワーク（ＬＡＮ）、広域エリアネットワーク（ＷＡＮ）、又はストレージエリアネットワーク（ＳＡＮ）にわたって分散されたデータを含むことができる（図示せず）。
【０１５２】
さらにまた、図示されていないが、ユーザ１６０４によって操作されるコンピュータ・システムは、コンピュータ・システム１６００に関して上述されたものと同様のコンピュータ化構成要素を含むことができる。
【０１５３】
ここに提示された本発明の説明は極大演算に焦点を置いたが、当業者であれば本教示を最小値に適用することができることが認識される。さらにまた、ここに提示された本発明の説明は最も遅い到達時間の計算に焦点を置いたが、当業者であれば本教示を最も早い到達時間に適用することができることが認識される。さらに、ここに提示された本発明の説明は組み合わせ回路に焦点を置いたが、当業者であれば本教示を順次回路に適用することができること認識される。加えて、ここに提示された本発明の説明はゲート遅延が分離可能関数である場合に焦点を置いたが、当業者であれば本教示をゲート遅延が非分離可能関数である場合に適用することができると認識されるべきである。
【図面の簡単な説明】
【０１５４】
【図１】本発明の１つの実施形態による統計的静的タイミング解析システムの概略的なブロック図である。
【図２】タイミング・アークのクリティカリティによって駆動される回路最適化システムの概略図である。
【図３】図１−図２に関して説明された用語を説明するために与えられるデジタル回路の例である。
【図４】図３に示される例示的な回路をモデル化したタイミング・グラフを示す。
【図５】図３に示されるデジタル回路についてのタイミング・グラフのタイミング・アークのクリティカリティ及び信号伝搬経路を示す概略図である。
【図６】図５に示されるようにタイミング・アークを通る経路のクリティカリティ領域を持つ変動空間を示す。
【図７】タイミング・グラフの例示的なカットセットを示す。
【図８】図４にその一例を示すタイミング・グラフに関して、タイミング・グラフのカットセットを計算するためのフロー方法である。
【図９】例示的なタイミング・グラフのカットセットの計算を示す。
【図１０】１つのタイミング・アークを通る全ての経路の最大遅延の計算を示す。
【図１１】図４にその一例を示すタイミング・グラフのエッジのクリティカリティ確率を判定するための高レベルのフロー方法である。
【図１２】タイミング・アークのクリティカリティを計算するための流れ図である。
【図１３】Ｎ個の一次線形モデルのタイトネス確率を計算するための流れ図である。
【図１４】一次モデルの集合についての二進分割木の例を示す。
【図１５】図１４にその一例を示す二進分割木を用いてＮ個の一次モデルについてのタイトネス確率を計算するための流れ図である。
【図１６】図１４にその一例を示す分割木を走査し、タイトネス確率を計算するための流れ図である。
【図１７】本発明の種々の態様を実施するためのコンピュータ・システムの図である。
【符号の説明】
【０１５５】
１００：統計的静的タイミング解析システム
２００：回路最適化システム
３００：デジタル回路
４００、５００、７００、９００、１０００：タイミング・グラフ
４４０、５１５、７３５、９２６、１０１５：ソース・ノード
４５５、５３０、７５０、９５６、１０３５：シンク・ノード
５４０：、７３０、７６５、７８５、１０４０：タイミング・アーク
６１０：変動空間
７８０、９８０、９８３：カットセット
９０３：レベル
１３００：二進分割木
１６００：コンピュータ・システム
【図１】
2009519528.tif 000017
【図２】
2009519528.tif 000018
【図３】
2009519528.tif 000019
【図４】
2009519528.tif 000020
【図５】
2009519528.tif 000021
【図６】
2009519528.tif 000022
【図７】
2009519528.tif 000023
【図８】
2009519528.tif 000024
【図９】
2009519528.tif 000025
【図１０】
2009519528.tif 000026
【図１１】
2009519528.tif 000027
【図１２】
2009519528.tif 000028
【図１３】
2009519528.tif 000029
【図１４】
2009519528.tif 000030
【図１５】
2009519528.tif 000031
【図１６】
2009519528.tif 000032
【図１７】
2009519528.tif 000033
【手続補正書】
【提出日】平成21年1月28日(2009.1.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
回路のタイミング・グラフのエッジのクリティカリティ確率を判定するための方法であって、
タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するステップと、
前記回路の統計的タイミング解析を実行するステップと、
注目する各エッジについて、前記タイミング・グラフを複数の部分に分割するカットセットを定めるステップであって、前記複数の部分の第１の部分が前記タイミング・グラフのソース・ノードを含み、前記複数の部分の第２の部分が前記タイミング・グラフのシンク・ノードを含む、前記定めるステップと、
前記カットセット内の各エッジについて、エッジ・スラックを判定するステップと、
前記カットセット内の全てのエッジ・スラックの統計的極大を計算するステップと、
各エッジのエッジ・クリティカリティ確率を前記統計的極大から推論するステップと、
を含む方法において、
早モードの統計的エッジ・スラックが、早モードのソース・ノードの統計的到達時間と、早モードのシンク・ノードの統計的要求到達時間の負数と、前記エッジの早モードの遅延との統計和である、前記方法。
【請求項２】
回路のタイミング・グラフのエッジのクリティカリティ確率を判定するための方法であって、
タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するステップと、
前記回路の統計的タイミング解析を実行するステップと、
注目する各エッジについて、前記タイミング・グラフを複数の部分に分割するカットセットを定めるステップであって、前記複数の部分の第１の部分が前記タイミング・グラフのソース・ノードを含み、前記複数の部分の第２の部分が前記タイミング・グラフのシンク・ノードを含む、前記定めるステップと、
前記カットセット内の各エッジについて、エッジ・スラックを判定するステップと、
前記カットセット内の全てのエッジ・スラックの統計的極大を計算するステップと、
各エッジのエッジ・クリティカリティ確率を前記統計的極大から推論するステップと、
を含む方法において、
遅モードの統計的エッジ・スラックが、遅モードのソース・ノードの統計的到達時間と、遅モードのシンク・ノードの統計的要求到達時間の負数と、前記エッジの遅モードの遅延との統計和である、前記方法。
【請求項３】
回路のタイミング特性を最適化する方法であって、
タイミング・グラフのエッジのクリティカリティ確率を判定するステップであって、前記判定ステップであって、
タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するステップと、
前記回路の統計的タイミング解析を実行するステップと、
注目する各エッジについて、前記タイミング・グラフを複数の部分に分割するように構成されるカットセットを定めるステップと、
前記カットセット内の各エッジについて、エッジ・スラックを判定するステップと、
前記カットセット内の全てのエッジ・スラックの統計的極大を計算するステップと、
各エッジのエッジ・クリティカリティ確率を前記統計的極大から推論するステップと、
を含む、前記判定ステップと、
前記クリティカリティ確率を用いて回路のタイミング特性の最適化をガイドするステップとを含み、  
遅モードの統計的エッジ・スラックが、遅モードのソース・ノードの統計的到達時間と、遅モードのシンク・ノードの統計的要求到達時間の負数と、前記エッジの遅モードの遅延との統計和である、前記最適化する方法。
【請求項４】
回路のタイミング特性を最適化する方法であって、
タイミング・グラフのエッジのクリティカリティ確率を判定するステップであって、前記判定ステップであって、
タイミング解析される回路に対応する有向非循環タイミング・グラフを形成するステップと、
前記回路の統計的タイミング解析を実行するステップと、
注目する各エッジについて、前記タイミング・グラフを複数の部分に分割するように構成されるカットセットを定めるステップと、
前記カットセット内の各エッジについて、エッジ・スラックを判定するステップと、
前記カットセット内の全てのエッジ・スラックの統計的極大を計算するステップと、
各エッジのエッジ・クリティカリティ確率を前記統計的極大から推論するステップと、
を含む、前記判定ステップと、
前記クリティカリティ確率を用いて回路のタイミング特性の最適化をガイドするステップとを含み、  
早モードの統計的エッジ・スラックが、早モードのソース・ノードの統計的到達時間と、早モードのシンク・ノードの統計的要求到達時間の負数と、前記エッジの早モードの遅延との統計和である、前記最適化する方法。
【請求項５】
請求項１から請求項４のいずれか１項に記載の方法のステップの全てをコンピュータに実行させるための命令を含む、コンピュータ・プログラム。
【国際調査報告】
2009519528.tif 000034
2009519528.tif 000035
2009519528.tif 000036
2009519528.tif 000037