(57)【要約】【課題】回路パラメータの異なる組合せにおける制約パラメータを測定する。【解決手段】回路パラメータの所定の組合せに対する制約パラメータの値は、回路パラメータの他の組合せに対する任意の先に計算された値に基づき推定される（３１０）。推定は制約パラメータの実際の値に近いかも知れないので、推定値の周辺の狭い探索範囲において、（例えばシミュレーションを使用して）探索を行うことができる（３３０、３４０）。その結果、回路パラメータの異なる組合せにおける制約パラメータを迅速に測定することができる。本発明の他の態様により、（パス結果を生成する少なくとも１つの点および失敗結果を生成する他の１つの点を伴う）複数の探索点の結果に基づき曲線が生成され、探索は、パスと失敗点との間において、曲線上の中間点に対応する遅延が望ましい閾値より低いかどうかを第１に調査することによって実行される。【選択図】図３
2005038430.tif 000002
【特許請求の範囲】
【請求項１】
集積回路が実装される回路パラメータの組合せに対する構成要素の制約パラメータを測定する方法であって、該構成要素は該集積回路において使用するよう設計されており、
上記回路パラメータの組合せに対する上記制約パラメータを、上記回路パラメータの１つあるいは複数の他の組合せの正しい制約パラメータ値に基づき推定し、推定値を生成することと、
上記推定値の周辺を探索し、上記回路パラメータの組合せに対する上記制約パラメータに対する正しい値を決定すること、
を含む、上記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（本発明の背景）
（発明の分野）
本発明は、集積回路を実装するために使用される計算機支援設計（ＣＡＤ）、特に、回路パラメータの異なる組合せにおける制約パラメータを測定するための方法および装置に関する。
【背景技術】
【０００２】
（関連技術）
集積回路は一般に、フリップフロップやレジスタのようないくつかの構成要素を含んでいる。構成要素のいくつかの特性を決定すること、例えば、集積回路が動作することができる最大クロック速度を決定することがしばしば望ましい。このような重要な特性のいくつかは、制約パラメータである。制約パラメータは一般に、２つの信号の発生の間の最少遅延／持続を特定する値を指す。ここで、参照信号は制約する信号と呼ばれ、他の信号は制約付信号と呼ばれる。
【０００３】
例えば、（メモリ、例えばフリップフロップを有する）順次構成要素に関する重要な制約パラメータは、準備時間、保持時間および最少パルス幅を含む。周知のように、準備時間は一般に、問題となる信号（例えば、制約付信号としての入力信号）が、参照信号（制約する信号）より前に望ましい信号レベルに到達するための最少時間持続を指す。保持時間とは、問題となる信号が、例えば適当なサンプリングを可能にするために、クロック信号の端の後に望ましいレベルにとどまる最少持続時間を指す。パルス幅は、問題となる信号が順次構成要素によって正確にサンプリングされるように、参照／制約する信号（例えば、クロック信号）が望ましい信号レベルにとどまる必要がある、最少パルス幅を指す。
【０００４】
制約値は一般に、集積回路に関連する回路パラメータの特定の組合せに依存する。回路パラメータの例として、クロックおよびデータ信号のスルーレートがある。周知のように、信号のスルーは、信号が１つの論理値から他の論理値に移り変わる時の信号レベルの変化速度を表す。一般に、スルーは、信号が実質的に１つの論理値を表すレベルから他の論理値を表す他のレベルに変化するのに必要とする時間量に基づき測定される。
【０００５】
回路パラメータは、一般に集積回路の電気特性に影響を与える、製造工程、温度および電圧のような他の要因を含む（あるいはこれらに影響される）場合がある。従って、制約パラメータの値は、これらのパラメータによっても影響されることがある。従って、制約パラメータは、回路パラメータの１つの組合せにおいて１つの値をとり、回路パラメータの他の組合せにおいて他の値をとることがある。
【０００６】
（回路パラメータの特定の組合せに対する）制約パラメータの正しい値はしばしば、（制約パラメータの）探索範囲内での探索によって決定される。この分野では周知の２等分探索と呼ばれる方法においては、探索範囲の中央における値が制約パラメータに対して仮定され、入力信号が、同様にこの分野では周知のＳＰＩＣＥのようなツールを使用してシミュレートされた構成要素に提供される。次の繰り返しに対する探索範囲は、シミュレーションの結果によって、（先の繰り返しに対する探索範囲の）上半分あるいは下半分に設定される。このような方法は、制約パラメータの（許容誤差内の）正しい値が決定されるまで、繰り返し続けられる。
【０００７】
回路パラメータの異なる組合せにおいて制約パラメータの正しい値を測定することは、しばしば望ましい。例えば、セル・ライブラリは、いくつかの構成要素（例えば、フリップフロップ、ラッチ）に対応する設計を含む場合もあり、回路パラメータの異なる組合せに対する構成要素の制約値を計算することが望ましい場合がある。このようにして計算された値は、対応する構成要素と関連してセル・ライブラリに記憶することができる。集積回路が後に設計される場合、設計者（あるいは設計を支援するツール）は、回路が設計されている回路パラメータの組合せに関係なく、入手可能な値に基づき迅速に適当な設計決定を行うことができる。
【０００８】
従って、測定すべき制約値の数は、回路パラメータにおける要素／変数の数、各仕様要素に対する可能な値の数、その他に伴い、かなり多いことが理解できるであろう。少なくとも、計算すべき制約値がこのように多いために、かなり長い時間（あるいはかなりの量の計算用資源）が、問題となる制約値を決定するために必要となる場合がある。従って、仕様の異なる組合せにおいて制約パラメータを測定するための時間を減少させることが望ましいであろう。
【０００９】
（発明の概要）
本発明の１つの態様により、それに従って集積回路が実装される回路パラメータの組合せに対する構成要素の制約パラメータの測定が可能となる。１つの実施例において、回路パラメータの所定の組合せに対する制約パラメータの値は、回路パラメータの他の組合せに対応する制約値に基づき推定される。推定値はそれから、所定の組合せに対する制約パラメータの正しい値を探索するために使用される。
【００１０】
推定は正確であるかもしれないので、正しい値は狭い範囲における探索によって決定することができ、これにより、回路パラメータのいくつかの組合せに対する制約パラメータを測定する時間を減少させることができる。１つの実施例において、制約パラメータはフリップフロップに対して測定され、回路パラメータは、データ信号およびクロック信号のスルーレートを含む。
【００１１】
１つの実施例において、探索は、推定値を使用して構成要素の第１のシミュレーションを行い、第１のシミュレーションがパス結果を返すかどうかを決定することによって実行される。第１のシミュレーションがパス結果を返す場合、第１の探索範囲は、上限は推定値と等しく、下限は（推定値から第１の値を引いた値）と等しく設定される。第１のシミュレーションがパス結果を返さない場合、第１の探索範囲は、下限は推定値と等しく、上限は（推定値に第２の値を加えた値）と等しく設定される。
【００１２】
一般に、各後続の繰り返しにおいて、探索範囲の上限は、シミュレーション結果がパスの場合、探索点（探索値）に設定され、探索範囲の下限は、そうでない場合に探索点に設定される。加えて、パスおよび失敗（つまり、パスでない）結果の少なくとも１つの事例がまだ見つかっていない場合、下限はパス結果の場合減少され、上限は失敗結果の場合増加される。増加および減少の程度は、各繰り返しの間に段階的に増加される。
【００１３】
従って、シミュレーションは第３の探索範囲が決定されるまで続けられる場合があり、第３の探索範囲の上限はパス結果を返し、下限はパス結果を返さない。１つの実施例において、制約パラメータに対する正しい値を決定するために、２等分探索が第３の探索範囲において実行される。
【００１４】
他の実施例において、曲線（制約パラメータ値の関数としての遅延）が、（少なくとも１つのパス結果および１つの失敗結果を伴う）先のシミュレーションに基づき生成される。複数の中間点が第３の探索範囲において選択される。期待遅延が、曲線を使用して各中間点と関連して決定される。各期待遅延は閾値と比較され、期待遅延が許容できるか許容できないかが決定される。期待遅延は、期待遅延が閾値より小さい場合許容可能とみなされ、そうでなければ許容不可能とみなされる。
【００１５】
シミュレーションの次の点は、比較の結果に基づき決定される。例えば、第３の探索範囲の１／３および２／３における２つの中間点が選択されるかもしれない。双方の結果が許容不可能である場合、２／３点を次の点として選択してもよく、双方の結果が許容可能である場合、１／３点が選択される。結果のうち１つが許容可能で他の１つが許容不可能である場合、探索範囲における中間点が選択される。このような方法を使用することにより、探索範囲を、２等分探索の場合における１／２の代わりに１／３に狭めることができる。範囲を狭めることにより、探索の数もまた減少させることができる。
【００１６】
本発明の更なる特徴および利点は、本発明の多様な実施例の構造および動作と共に、付随する図面を参照して以下に詳細に説明される。図面において、同じ参照番号は一般に、同一の、機能的に類似する、および／あるいは構造的に類似する要素を示す。１つの要素が最初に現れる図面は、対応する参照番号における左端の番号によって示される。
【実施例１】
【００１７】
１．概要
本発明の１つの態様は、回路パラメータの異なる組合せに対する任意の先に計算された値に基づき、第１に制約パラメータの推定値を生成することにより、回路パラメータの特定の組合せに対する制約パラメータを測定する時間を少なくする。推定値は、先に計算された値を使用することによりかなり正確にすることができ、正しい値に対する探索は、このような推定値によりかなり狭い範囲において行うことができる。狭い範囲における探索により、特定の組合せに対する制約値は迅速に測定することができる。回路パラメータの多様な組合せに対する制約パラメータを測定するための総時間は、従って、減少させることができる。
【００１８】
本発明のいくつかの態様を、説明のための例示的環境を参照して以下に説明する。多くの特定の詳細、関係、および方法は、本発明の理解を完全なものとするために説明されることを理解されたい。この分野の技術者は、しかし、本発明は１つあるいは複数の特定の詳細が無くても、あるいは他の方法と共にであっても、またその他の場合であっても、実行することができることが容易に理解できるであろう。他の場合においては、周知の構造あるいは動作は、本発明を曖昧なものとしないために、詳細には示されていない。
【００１９】
２．コンピュータ・システム
図１は、本発明を実現するための１例としてのシステムを表すコンピュータ・システム１００のブロック図である。コンピュータ・システム１００は、中央処理装置（ＣＰＵ）１１０のような１つあるいは複数のプロセッサ、ランダム・アクセス・メモリ（ＲＡＭ）１２０、補助記憶装置１３０、グラフィック・コントローラ１６０、ディスプレイ装置１７０、ネットワーク・インタフェース１８０、および入力インタフェース１９０を含んでもよい。ディスプレイ装置１７０を除く全ての構成要素は、通信パス１５０を通して互いに通信してもよく、通信パス１５０は、この分野では周知のように、いくつかのバスを含んでもよい。図１の構成要素は、以下に更に詳細に説明する。
【００２０】
ＣＰＵ１１０は、ＲＡＭ１２０に記憶された命令を実行して、本発明のいくつかの特徴を提供する。ＣＰＵ１１０は複数の処理装置を含んでもよく、各処理装置は特定のタスクのために設計されている可能性がある。あるいは、ＣＰＵ１１０は、１つの処理装置のみを含んでもよい。ＲＡＭ１２０は、通信パス１５０を使用して補助記憶装置１３０から命令を受け取ることができる。（ライブラリ内の）多様なセルを表すデータおよび決定された制約値は、命令の実行の間、補助記憶装置１３０（および／あるいはＲＡＭ１２０）に記憶されそこから検索することができる。
【００２１】
グラフィック・コントローラ１６０は、ＣＰＵ１１０から受け取ったデータ／命令に基づき、ディスプレイ装置１７０への（例えば、ＲＧＢ形式における）ディスプレイ信号を生成する。ディスプレイ装置１７０は、ディスプレイ信号によって定義されたイメージを表示するための表示画面を含む。入力インタフェース１９０は、キーボードおよび／あるいはマウスに対応してもよく、一般に、ユーザが入力することを可能にする。ネットワーク・インタフェース１８０は、入力（および出力）のいくつかがネットワーク上に提供されることを可能にする。一般に、ディスプレイ装置１７０、入力インタフェース１９０およびネットワーク・インタフェース１８０は、ユーザが、補助記憶装置１３０に備えられている（あるいはネットワーク・インタフェース１８０から受け取った）セル・ライブラリを使用して集積回路を設計することを可能にし、周知の方法で実現することができる。
【００２２】
補助記憶装置１３０は、ハード・ドライブ１３１、フラッシュ・メモリ１３６、および取外し可能記憶ドライブ１３７を含んでもよい。補助記憶装置１３０は、ソフトウェア命令およびデータ（例えば、セル・ライブラリおよび決定された制約値）を記憶することができ、これらのソフトウェア命令およびデータは、コンピュータ・システム１００が本発明によるいくつかの特徴を提供できるようにする。データおよび命令のいくつかあるいは全ては、取外し可能記憶装置１４０上に備えられてもよく、データおよび命令は、取外し可能記憶ドライブ１３７によって読み出されＣＰＵ１１０に提供されてもよい。フロッピー（登録商標）・ドライブ、磁気テープ・ドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤドライブ、フラッシュ・メモリ、取外し可能メモリ・チップ（ＰＣＭＣＩＡカード、ＥＰＲＯＭ）は、このような取外し可能記憶ドライブ１３７の例である。
【００２３】
取外し可能記憶装置１４０は、取外し可能記憶ドライブ１３７がデータおよび命令を読み出すことができるように、取外し可能記憶ドライブ１３７と互換性のある媒体および記憶形式を使用して実現することができる。従って、取外し可能記憶装置１４０は、コンピュータ・ソフトウェアおよび／あるいはデータを記憶した、コンピュータ読み取り可能記憶媒体を含む。本発明の１つの実施例は、コンピュータ・システム１００において走っている（つまり実行している）ソフトウェアを使用して実現される。
【００２４】
本明細書において、用語“コンピュータ・プログラム製品”とは、取外し可能記憶装置１４０あるいはハード・ドライブ１３１にインストールされたハード・ディスクを一般に指すために使用される。これらのコンピュータ・プログラム製品は、コンピュータ・システム１００にソフトウェアを提供するための手段である。上記のように、ＣＰＵ１１０は、ソフトウェア命令を検索し、その命令を実行して本発明の多様な特徴を提供することができる。本発明の特徴は、以下に詳細に説明される。説明のために、特徴はＤフリップフロップを参照して記述される。
【００２５】
３．例示的構成要素
図２は、例示的構成要素を表すＤフリップフロップ２００のブロック図である。Ｄフリップフロップ２００の制約パラメータは、本発明の１つの態様により測定することができる。Ｄフリップフロップ２００は、Ｄ入力２１０およびクロック入力２２０を受け取り、それに応答してＱ出力２４０を生成するよう図示されている。
【００２６】
Ｄフリップフロップ２００は、クロック入力２２０が論理低から高に変化する時、Ｄ入力２１０上で受信した信号をＱ出力に転送する。従って、パス２４０上のＱ出力における信号はＤ入力における信号に類似しているかもしれないが、いくらかの遅延の後に現れる。Ｄフリップフロップ２００は、３つの制約パラメータ、準備時間、保持時間、およびパルス幅、によって特徴付けることができる。制約パラメータ値は、回路パラメータに関連する特定の値に依存する場合がある。
【００２７】
Ｄフリップフロップ２００の準備時間を（データ信号およびクロック信号の）スルー時間の多様な組合せに対して決定することのできる方法を以下に説明する。しかし、本方法は、この分野の技術者には明らかなように、他の構成要素、制約パラメータおよび回路パラメータに適用することもできる。このような応用は、本発明の多様な態様の範囲および精神内にあるものとみなされる。
【００２８】
４．方法
図３は、本発明の１つの態様により、回路パラメータの多様な組合せに対する制約パラメータ値を迅速に決定することのできる方法を表す流れ図である。説明のために、本方法は図１および図２を参照して記述される。しかし、本方法は、ここに提供される開示に基づきこの分野の技術者には明らかなように、他の構成要素の制約パラメータを決定するためのいくつかの他の実施例においても実現することができる。本方法は、ステップ３０１において開始し、制御はステップ３１０に移る。
【００２９】
ステップ３１０において、コンピュータ・システム１００は、回路パラメータの他の組合せに対して決定された制約値に基づき、回路パラメータの１つの組合せに対する制約値を推定する。このような推定のために、多様な方法を使用することができる。例示的方法は、以下の段落において更に詳細に説明する。
【００３０】
ステップ３３０において、推定値に基づきおおよその範囲を決定することができる。一般に範囲は、推定値より大きいいくつかの値と推定値より小さいいくつかの値を含む必要がある。
【００３１】
ステップ３４０において、コンピュータ・システム１００は、ステップ３３０において決定された範囲において、正しい値の探索を行う。探索は一般に、（測定しようとする）制約パラメータに対する特定の値を使用して、構成要素がその特定の値において機能的であるかどうかを決定することを伴う。特定の値は、（許容誤差限度内の）正しい値が決定されるまで繰り返し変えられる。例示的探索方法は、以下に更に詳細に説明する。
【００３２】
ステップ３５０において、コンピュータ・システム１００は、ステップ３４０において正しい値が見つかったか（決定されたか）どうかを決定する。正しい値が見つかった場合、制御はステップ３９９に移り、そうでない場合制御はステップ３６０に移る。ステップ３６０において、探索が行なわれるべき範囲が変更され、制御はステップ３４０に移る。従って、ステップ３４０、３５０および３６０のループは、（制約パラメータに対する）正しい値が見つかるまで続けられる。方法はステップ３９９において終了する。
【００３３】
図３のステップを以下に追加例と共に説明する。１つの実施例において、ステップ３１０の推定は、曲線の当てはめ技術を使用して行われる。曲線の当てはめ技術の基礎となる原則は、図４を参照して以下に説明する。
【００３４】
５．原則
図４は、スルーにおける変化に伴う制約値の変化を表すグラフである。このグラフは本発明の多様な態様により決定しようとする多様なデータ点に基づいていることを理解されたい。しかし、正確な値を調査することにより、本発明の１つの実施例において使用される原則が理解される。
【００３５】
グラフは、ｘ軸に沿ったデータ・スルー（つまり、データ信号のスルー）およびｙ軸に沿った制約値を含む。３つの曲線４１０、４２０および４３０がクロック・スルー（つまり、クロック信号のスルー）の３つの値に対応して示されている。従って、各曲線はクロック・スルー定数を保ちながら描かれていることが理解されるであろう。しかし、同様な（曲線）パターンを、データ・スルー定数を保ちながらクロック・スルーを変化させることによっても見ることができる。
【００３６】
図４から、制約値は曲線のパターンに当てはまり、この曲線は多様な数学式を使用してモデル化できることが理解されるであろう。１つの実施例において、２Ｄスプライン曲線が、（図３のステップ３１０のように）パターンを決定し、従って次の値を推定するために使用される。しかし、ある場合において、先の値が存在しないことがあり、このような場合にはステップ３１０におけるような推定は可能でない場合がある。制約値を上記の方法を使用して決定することのできる方法は、図５を参照して以下に説明する。
【００３７】
６．マトリックス
図５は、本発明の１つの実施例において各制約パラメータを決定することのできる方法を表すマトリックスを示している。マトリックスは、５つの行５１０、５２０、５４０、５６０および５８０、および６つの列５０１、５０２、５０４、５０６、５０８および５０９を含み、その結果３０個のエントリを含んで示されている。説明は２次元しか含まないマトリックスを参照してなされるけれども、この概念は、本発明の多様な態様の範囲および精神から逸脱することなく、多次元（製造工程、温度、電圧、その他）に容易に拡張することができることを理解されたい。
【００３８】
行に沿ったエントリは、データ・スルーが変化するクロック・スルーの特定の値に対応し、列に沿ったエントリは、クロック・スルーが変化するデータ・スルーの特定の値に対応する。従って、行５１０におけるエントリ（（１，１）、（１，２）、（１，３）、（１，４）、（１，５）および（１，６））は、クロック・スルーの第１の値に対応しデータ・スルーが変化する値を表す。列５０１におけるエントリ（（１，１）、（２，１）、（３，１）、（４，１）および（５，１））は、データ・スルーの第１の値に対応しクロック・スルーが変化する値を表す。
【００３９】
各エントリを決定することのできる方法をここに説明する。値は、左から右へ行優先順に決定されるよう記述され、図５における左下隅から始まることを理解することが役立つであろう。従って、行５１０において、（左下隅における）エントリ（１，１）は“なし”を含み、エントリにおける値は独立して（どんな先の値の利益も無しに）決定する必要があることを示している。従って、エントリ（１，１）に対応する制約値は、従来の方法（例えば、２等分探索）によって決定してもよい。
【００４０】
エントリ（１，２）は、ＰＬＣ（最後の制約値を使用した予測）を含み、エントリ（１，２）に対応する制約値は、（エントリ（１，１）によって表される）先のスルーに基づき予測された（推定された）値から決定されることを示している。ＰＬＣは、次のエントリの正しい値を決定するために、１つの先のエントリのみが使用可能である場合に使用される。同様に、エントリ（２，１）もまたＰＬＣを含む。
【００４１】
エントリ（１，３）はＰＤＳ（データ・スルーに亘る曲線の当てはめを使用した推測）を含み、エントリ（１，３）に対応する制約値は、同じ行における先に決定された正しい値(つまり、（１，１）および（１，２）に対応する正しい値）に基づき推定されることを示している。同様に、ＰＤＳを有する他のエントリの正しい値は、同じ行におけるエントリに対応する先に計算された正しい値を使用して推定することができる。正しい値はそれから、推定値の周辺を探索することによって決定することができる。
【００４２】
行５２０において、エントリ（２，２）はＰＰＣ（平行曲線を使用した推測）を含み、エントリ（２，２）に対応する制約値は、行５１０および５２０に対応する曲線は平行であると仮定して決定されることを示している。従って、エントリ（１，１）および（１，２）に対応する実際の値の差分が決定され、同じ差分が、エントリ（２，１）に対応する実際の値に関して使用され、エントリ（２，２）に対する値が推定される。
【００４３】
行５４０において、エントリ（３，１）はＰＣＳ（クロック・スルーに亘る曲線の当てはめを使用した予測）を含み、エントリ（３，１）に対応する制約値は、同じ列における先に決定された正しい値（つまり、（１，１）および（２，１）に対応する正しい値）に基づき推定された値から決定されることを示している。同様に、ＰＣＳを有する他のエントリの値は、同じ列におけるエントリに対応する先に計算された値を使用して推定することができる。
【００４４】
上記のことから、回路パラメータのいくつかの組合せに対する制約値は、先に計算された正しい値に基づき推定することができることが理解されるであろう。正しい値を推定値から決定することのできる方法は、以下に追加例と共に説明する。
【００４５】
７．推定値からの正しい値の決定
図６は、本発明の１つの実施例において、正しい値を推定値から決定することのできる方法を表す流れ図である。本方法はステップ６０１において開始し、制御は直ちに６０５に移る。
【００４６】
ステップ６０５において、コンピュータ・システム１００は推定値、最少範囲、ＲｍａｘおよびＲｍｉｎを受け取る。ＲｍａｘおよびＲｍｉｎはそれぞれ、制約値が潜在的に持つことのできる最大および最少の値を表し、構成要素の設計者が提供することができる。最少範囲は、制約パラメータに対する正しい値の計算における許容誤差を特定する。
【００４７】
ステップ６１０において、変数ＨｅｎｄおよびＬｅｎｄがそれぞれ（推定値＋小さな値）および（推定値−小さな値）に等しく設定される。１つの実施例において、“小さな値”はゼロに等しく選択される。以下に説明するように、変数Ｌｅｎｄは（現在の）探索範囲の低（左）端を表し、変数Ｈｅｎｄは探索範囲の高（右）端を表す。
【００４８】
変数ＨｅｘｐおよびＬｅｘｐは共に１に等しく設定される。変数ＨｅｘｐおよびＬｅｘｐは、以下に説明するように、ステップ６２０−６９０のループにおいて探索範囲を決定する際に連続する失敗およびパス結果が得られた場合、範囲の右および左方向への拡大を加速するために使用される。
【００４９】
ＰフラグおよびＦフラグはそれぞれ、パス・フラグおよび失敗フラグを表し、最初は共に偽に設定されている。ＰフラグおよびＦフラグはそれぞれ、以下に説明するように、パスおよび失敗の最初のケースが見つかった時に真に変えられ、そのまま真のままである。双方のフラグが真である時、探索範囲は、ステップ６２０−６９０のループによって正しく決定されたものとみなされる。
【００５０】
ステップ６２０において、次の探索点が決定される。この決定は、多様な方法を使用して行うことができる。１つの実施例において、ＰフラグおよびＦフラグのうち少なくとも１つが偽である場合、探索点はＨｅｎｄとＬｅｎｄの平均に等しく選択される。一方、ＰフラグおよびＦフラグの双方が真である場合、探索点を決定することのできる方法は、図７を参照して以下に説明する。
【００５１】
ステップ６２５において、（ステップ６２０において決定された）探索点におけるシミュレーションが行われる。つまり、制約値が探索点と等しいと仮定して、構成要素がシミュレートされる。この分野では周知のＳＰＩＣＥシミュレータのようなツールを、シミュレーションのために使用してもよい。
【００５２】
ステップ６３０において、ステップ６２５のシミュレーションがパスしたか（つまり成功したか）に関する決定がなされる。１つの実施例において、構成要素が機能的である（つまり、フリップフロップ２００の場合データが伝播された）場合、および、探索点に対応する伝播遅延がＲ遅延（以下の段落において説明する測定値）より小さい場合、結果はパスと決定される。その他の場合、結果は失敗と決定される。結果が失敗とみなされた場合制御はステップ６４０に移り、その他の場合はステップ６７０に移る。
【００５３】
ステップ６４０において、変数Ｌｅｎｄは探索点と等しく設定され、Ｆフラグは、シミュレーションの失敗状況はすでに見つかっていることを反映して、真に設定される。ステップ６５０において、ＰフラグおよびＦフラグの状態が調べられ、双方のフラグが“真”に等しいかどうか決定される。ＰフラグおよびＦフラグの双方が“真”に等しい場合、制御はステップ６９０に移り、その他の場合はステップ６６０に移る。
【００５４】
ステップ６６０において、Ｈｅｎｄは｛Ｈｅｎｄ＋Ｋ ｘ Ｈｅｘｐ｝と等しく設定され、ＨｅｘｐはＨｅｘｐ ｘ ２と等しく設定される（“ｘ”は乗法記号を示す）。ここで、Ｋは何らかの定数値を表す。理解されるように、Ｈｅｘｐの乗算の結果は、連続する繰り返しに亘るＨｅｎｄの増加率である。制御はステップ６９０に移る。ステップ６７０において、上記のステップ６４０においてＬｅｎｄおよびＦフラグが設定されたのと同様に、変数Ｈｅｎｄは探索点と等しく設定されＰフラグは真に等しく設定される。
【００５５】
ステップ６８０において、ＰフラグおよびＦフラグの状態が調べられ、双方のフラグが“真”に等しいかどうか決定される。ＰフラグおよびＦフラグの双方が真に等しい場合、制御はステップ６９０に移り、その他の場合ステップ６８５に移る。ステップ６８５において、Ｌｅｎｄは｛Ｌｅｎｄ−Ｋ ｘ Ｌｅｘｐ｝と等しく設定され、ＬｅｘｐはＬｅｘｐ ｘ ２と等しく設定される（“ｘ”は乗法記号を示す）。制御はそれからステップ６９０に移る。
【００５６】
ステップ６９０において、ＳＲａｎｇｅ（Ｈｅｎｄ−Ｌｅｎｄと等しい）が（ステップ６０５において受け取った）最少範囲より小さいかどうかに関する決定がなされる。ＳＲａｎｇｅが最少範囲より小さい場合、制御はステップ６９５に移り、その他の場合制御はステップ６２０に移る。ステップ６２０−６９０のループにおいて、ＳＲａｎｇｅが最少範囲より小さくなるまで、適当なステップが繰り返される。
【００５７】
ステップ６９５において、（ステップ６３０における）最後のパス結果に対応する探索点は、制約パラメータの正しい値として報告される。Ｈｅｎｄ変数が対応する値を含んでいるので、正しい値はＨｅｎｄを使用して報告され、本方法はステップ６９９において終了する。このようにして、制約パラメータの正しい値は、推定値から決定することができる。図６のステップの動作は、以下に１つの例を参照して更に説明される。
【００５８】
８．例
図７は、Ｘ軸上に探索のために使用される制約値（準備時間）を、Ｙ軸上に伝播遅延（つまり、クロックの立上がり端とＱ出力において現れるデータとの間の）を有するグラフである。制約値が許容最小値より低い場合、伝播遅延は無限に向かって示され、データは伝播されないことを示している。
【００５９】
観察されるように、伝播遅延は、１部分においては制約値が減少するのに比例して増加するよう示され、他の部分においては制約値が増加するにつれ実質的に平坦であるよう示されている。正しい制約値は、遅延が正確度制限（本明細書における最少範囲）内でＲｄｅｌａｙより小さい、最少準備時間であり、本説明的例においては点７６３におけるものと仮定される。無限の準備時間（あるいは、実際にはＲｍａｘ）に対応する遅延は、Ｉｄｅｌａｙと称される。
【００６０】
Ｒｄｅｌａｙは、Ｉｄｅｌａｙより高い（例えば、１０％より高い）何らかの遅延として定義され、図６を参照して上に説明したように正しい値を決定するために使用される。ＲｍｉｎおよびＲｍａｘはそれぞれ、任意の探索範囲に対する下限および上限を特定する、最少および最大制約値を表し、ユーザが特定することができる。図７の曲線は、以下に説明するように、連続する探索点を決定するために使用される。
【００６１】
引き続き図６および図７を共に参照し、説明のために、推定値は点７６０に対応すると仮定する。（探索点７６０は正しい値７６３より実質的に大きいので）ステップ６３０においてパス結果が決定され、従って制御はステップ６７０に移る。Ｈｅｎｄはそれから探索点に設定され、Ｐフラグは真に設定される。制御はそれからステップ６８５に移り、そこでＬｅｎｄは（Ｋ ｘ Ｌｅｘｐ）分減少され、その結果のＬｅｎｄは点７６２に対応すると仮定する。第１の繰り返しの終わりにおける探索範囲は、従って、点７６２と７６０との間である。制御はそれからステップ６２０に移る。
【００６２】
次の（第２の）繰り返しに対する探索点は、Ｆフラグが偽であるので、ＬｅｎｄとＨｅｎｄの平均（点７６１と仮定する）に設定される。パス結果がステップ６３０において検出され（ここでもまた、探索点７６１は正しい値７６３より実質的に大きいので）、Ｌｅｎｄは第１の繰り返しにおけるよりもより大きい因子分減少され、Ｌｅｎｄは従って７６４と等しいと仮定される。Ｈｅｎｄは探索点７６１に設定される。第２の繰り返しの終わりにおける探索範囲は、従って、点７６４と７６１との間である。制御はそれからステップ６２０に移る。
【００６３】
次の（第３の）繰り返しに対する探索点は、ＬｅｎｄとＨｅｎｄの平均（点７６５）に設定される。今度は失敗結果がステップ６３０において検出され（探索点７６５が正しい値７６３より実質的に小さいので）、制御はステップ６４０に移る。Ｌｅｎｄは探索点（７６５）と等しく設定され、Ｆフラグは真に等しく設定される。ここで双方のフラグが真に設定されているので、制御は、全ての後続の繰り返しにおいて（今回の繰り返しも含めて）、ステップ６５０および６８０からステップ６９０に移る。従って、第３の繰り返しの終わりにおいて、探索範囲は点７６５と７６１との間である。
【００６４】
いずれかの端においてパスおよび失敗点によって定義される範囲は、制約パラメータが何らかのレベルの正確さをもって推定されている場合、狭くなることを理解されたい。その結果、上記の繰り返しの数を最少にすることができる。一旦探索範囲が狭められると、その範囲に伴う探索の数もまた少なくなり、それにより、セル・ライブラリ特徴づけ時間を更に少なくすることができる。パスおよび失敗点内で更なる探索を行うことのできる方法を以下に説明する。
【実施例２】
【００６５】
１つの実施例において、ステップ６９０の条件が真となるまで、連続する繰り返しにおいて探索範囲を狭めながら、２等分探索が行われる。代替的実施例を、図８を参照して以下に説明する。本方法は、単に説明のために上記の実施例を参照して説明される。しかし、本方法は、他の環境／実施例においても実現することができる。本方法はステップ８０１において開始し、制御は直ちにステップ８１０に移る。
【００６６】
ステップ８１０において、曲線（遅延を制約パラメータ値の関数とする）が、多様な失敗およびパス点を当てはめて生成される。１つの実施例において、曲線は方程式によって表され、方程式はそれから多様な決定のために計算することができる。上記の例において、曲線は点７６０、７６１および７６５を通して当てはめることができる。この分野において周知の、多様な曲線の当てはめ技術（例えば、スプライン曲線）を使用してもよい。説明のために、図７の曲線が生成されたと仮定する。
【００６７】
ステップ８３０において、生成された曲線を使用して、探索範囲における１つあるいは複数の中間点に対応する期待遅延を決定する。理解されるように、最近のパスおよび失敗点（説明的実施例において、点７６５および７６１）が、探索範囲を形成する。１つの実施例において、２つの点（探索範囲の１／３および２／３）に対応する遅延が、曲線を調査することによって決定される。
【００６８】
言い換えれば、７９０および７８０はそれぞれ探索範囲の失敗およびパス点に対するＸ座標を表すと仮定すると、この範囲（７８０−７９０）における１／３（点７６６）および２／３（点７６８）点が決定され、Ｙ軸上の対応する遅延は曲線を調査することによって決定される。
【００６９】
ステップ８５０において、ステップ８３０において決定された各遅延が、閾値と比較される。１つの実施例において、閾値は上記のＲｄｅｌａｙと等しく設定される。遅延が閾値より小さい場合、遅延は許容可能とみなされ、その他の場合は許容不可能とみなされる。
【００７０】
ステップ８６０において、シミュレーションの次の点が、ステップ８５０の比較の結果に基づき決定される。点７６６および７６８の双方の結果が許容不可能とみなされる場合、シミュレーションの次の点は２／３点７６８に設定することができる。点７６６および７６８の双方の結果が許容可能とみなされる場合、シミュレーションの次の点は１／３点７６６に設定することができる。点７６８の結果が許容可能であり点７６６の結果が許容不可能である場合、シミュレーションの次の点は、探索範囲における中間点７６９(中央に位置するよう示されている)に設定することができる。
【００７１】
説明的例において、点７６６および７６８における遅延は閾値（点７６３におけるＲｄｅｌａｙ）より小さいので、点７６６および７６８の双方はステップ８５０において許容可能とみなされる。従って、次のシミュレーション点は、ステップ８６０において１／３点７６６に設定される。
【００７２】
ステップ８７０において、シミュレーションがステップ８６０において決定された次の点に対して実行される。説明的例において、シミュレーションは、ステップ８７０において点７６６において実行される。曲線の当てはめを使用してステップ８３０において決定された遅延は一般に正確であるので、シミュレーションの結果はパスとみなされる。
【００７３】
ステップ８９０において、新しい探索範囲がシミュレーションの結果に基づき設定される。説明的例において、次の探索範囲はステップ８９０において点７６５と７６６との間に設定される。この探索範囲は、点７６５と７６１との間の先の探索範囲の１／３である。
【００７４】
多様な方法を、範囲内で探索し正しい遅延値を決定するために使用することができる。理解されるように、図８の方法は、探索窓を（２等分探索における半分に対比して）１／３に狭めることができるので、繰り返し（シミュレーション）の数を減少させることができる。
【００７５】
従って、上記のような方法を使用して、制約パラメータの正しい値を決定することができる。理解されるように、回路パラメータの他の組合せに対応する正しい値を使用することにより、所定の組合せに対する推定値を正しく決定することができる。このような正確性により、推定値の周辺を探索することによって、必要とされる付加的探索の数を更に最小化することができる。
【００７６】
９．結論
本発明の多様な実施例を上に説明してきたけれども、これらの実施例は例としてのみ示され、制限として示されているのではないことを理解されたい。従って、本発明の広さおよび範囲は、上記の例示的実施例のいずれによっても制限されるものではなく、以下の請求項およびそれらに同等な物によってのみ定義されるものである。
【００７７】
以上の説明に関して更に以下の項を開示する。
（１）  それに従って集積回路が実装される回路パラメータの組合せに対する構成要素の制約パラメータを測定する方法であって、該構成要素は該集積回路において使用するよう設計されており、
上記回路パラメータの組合せに対する上記制約パラメータを、上記回路パラメータの１つあるいは複数の他の組合せの正しい制約パラメータ値に基づき推定し、推定値を生成することと、
上記推定値の周辺を探索し、上記回路パラメータの組合せに対する上記制約パラメータに対する正しい値を決定すること、
を含む、上記方法。
（２）  （１）記載の方法において、上記探索は、
上記制約パラメータに対する上記推定値を使用して、上記構成要素の第１のシミュレーションを実行することと、
上記第１のシミュレーションがパス結果を返すかどうかを決定することと、
上記第１のシミュレーションが上記パス結果を返す場合、上限を上記推定値と等しく、下限を上記推定値から第１の値を減算した値に等しく、第１の探索範囲を設定することと、
上記第１のシミュレーションが上記パス結果を返さない場合、上記下限を上記推定値と等しく、上記上限を上記推定値に第２の値を加算した値に等しく、上記第１の探索範囲を設定すること、
を含むことを特徴とする、上記方法。
（３）  （２）記載の方法において、上記探索は更に、
上記制約パラメータに対する第２の探索値を使用して、上記構成要素の第２のシミュレーションを実行することと、該第２の探索値は上記第１の探索範囲に含まれ、
上記第２のシミュレーションが上記パス結果を返すかどうかを決定することと、
上記第２のシミュレーションが上記パス結果を返す場合、上限を上記第２の探索値と等しく第２の探索範囲を設定することと、
上記第２のシミュレーションが上記パス結果を返し、上記第１のシミュレーションもまた上記パス結果を返した場合、上記第２の探索範囲の下限を、上記第１の探索範囲の上記下限から第３の値を減算した値に等しく設定することと、該第３の値は上記第１の値より大きく、
上記第２のシミュレーションが上記パス結果を返さない場合、上記第２の探索範囲の上記下限を上記第２の探索値と等しく設定することと、
上記第２のシミュレーションが上記パス結果を返さず、上記第１のシミュレーションも上記パス結果を返さなかった場合、上記第２の探索範囲の上記上限を、上記第１の探索範囲の上記上限に第４の値を加算した値に等しく設定すること、該第４の値は上記第２の値より大きい、
を含むことを特徴とする、上記方法。
（４）  （３）記載の方法であって更に、第３の探索範囲を決定することを含み、上記第３の探索範囲の上記上限は上記パス結果を返し、上記下限は上記パス結果を返さないことを特徴とする、上記方法。
（５）  （４）記載の方法であって更に、
遅延を制約パラメータ値の関数として曲線を生成することと、該曲線は、少なくとも上記第１のシミュレーションおよび上記第２のシミュレーションに基づき生成され、
上記第３の探索範囲における複数の中間点を選択することと、
上記曲線を使用して、上記複数の中間点の各々に関連する期待遅延を決定することと、
上記各期待遅延を閾値と比較して、上記期待遅延が許容可能か許容不可能かを決定することと、上記期待遅延は、上記期待遅延が上記閾値より小さい場合許容可能とみなされ、その他の場合は許容不可能とみなされ、
上記比較の上記結果に基づきシミュレーションの次の点を決定すること、
を含むことを特徴とする、上記方法。
（６）  （５）記載の方法であって更に、
上記次の点に対応するパラメータ値を使用して第３のシミュレーションを実行することと、
上記第３のシミュレーションの結果に基づき第４の探索範囲を設定すること、
を含むことを特徴とする、上記方法。
（７）  回路パラメータの異なる組合せにおける制約パラメータの測定
回路パラメータの所定の組合せに対する制約パラメータの値は、回路パラメータの他の組合せに対する任意の先に計算された値に基づき推定される（３１０）。推定は制約パラメータの実際の値に近いかも知れないので、推定値の周辺の狭い探索範囲において、（例えばシミュレーションを使用して）探索を行うことができる（３３０、３４０）。その結果、回路パラメータの異なる組合せにおける制約パラメータを迅速に測定することができる。本発明の他の態様により、（パス結果を生成する少なくとも１つの点および失敗結果を生成する他の１つの点を伴う）複数の探索点の結果に基づき曲線が生成され、探索は、パスと失敗点との間において、曲線上の中間点に対応する遅延が望ましい閾値より低いかどうかを第１に調査することによって実行される。
【図面の簡単な説明】
【００７８】
【図１】本発明の１つの態様により実現されたコンピュータ・システムのブロック図である。
【図２】例示的構成要素の詳細を表すＤフリップフロップのブロック図である。
【図３】本発明の１つの態様による、回路パラメータの多様な組合せに対する制約パラメータ値を迅速に決定することのできる方法を表す流れ図である。
【図４】本発明の１つの態様により制約パラメータを決定するために使用することができる、データ・スルーにおける変化に伴う制約値の変化を表すグラフである。
【図５】本発明の１つの実施例において各制約パラメータを決定することのできる方法を表すマトリックスを示す図である。
【図６】本発明の１つの態様による、推定値から迅速に正しい値を決定することのできる方法を表す流れ図である。
【図７】本発明の１つの態様により、より良い探索点を決定するために使用される、制約値の変化に伴う伝播遅延の変化を表すグラフである。
【図８】本発明の他の態様による、１つの範囲を探索する間、シミュレーションの数を減少させるために曲線の当てはめ方法を使用することができる方法を表す流れ図である。
【符号の説明】
【００７９】
１００  コンピュータ・システム
１１０  ＣＰＵ
１２０  ＲＡＭ
１３０  補助記憶装置
１３１  ハード・ドライブ
１３６  フラッシュ・メモリ
１３７  取外し可能記憶ドライブ
１４０  取外し可能記憶装置
１５０  通信パス
１６０  グラフィック・コントローラ
１７０  ディスプレイ装置
１８０  ネットワーク・インタフェース
１９０  入力インタフェース
２００  Ｄフリップフロップ
２１０  Ｄ入力
２２０  クロック入力
２４０  Ｑ出力
【図１】
2005038430.tif 000003
【図２】
2005038430.tif 000004
【図３】
2005038430.tif 000005
【図４】
2005038430.tif 000006
【図５】
2005038430.tif 000007
【図６】
2005038430.tif 000008
【図７】
2005038430.tif 000009
【図８】
2005038430.tif 000010