(57)【特許請求の範囲】
【請求項１】
複数のシナリオにおいて回路設計の設計要求違反を修正する方法であって、該方法は、
シナリオイメージを受信することを含み、該シナリオイメージは、シナリオにおける回路対象についてのパラメータの値を記憶しており、
複数シナリオＥＣＯ（ｅｎｇｉｎｅｅｒｉｎｇ  ｃｈａｎｇｅ  ｏｒｄｅｒ）データベースを受信することを含み、該複数シナリオＥＣＯデータベースは、前記複数のシナリオにおける回路対象の下位セットについてのパラメータの値の下位セットを記憶しており、
１つ以上のプロセッサによって１つ以上の設計要求違反を修正するＥＣＯを決定することとを含み、該決定することは、該シナリオイメージおよび該複数シナリオＥＣＯデータベース内に記憶されたパラメータの値に基づいて、前記複数のシナリオの少なくともいくつかにおける回路対象についてのパラメータの値を推定することを含む、
方法。
【請求項２】
前記複数のシナリオにおける各々のシナリオは、工程コーナー、動作条件、または動作モードのうちの１つ以上と関連づけられる、請求項１に記載の方法。
【請求項３】
前記パラメータの値は、前記回路設計における１つ以上のピンでのタイミングスラックの値を含む、請求項１に記載の方法。
【請求項４】
前記パラメータの値は、前記回路設計における１つ以上のピンでの容量性負荷の値を含む、請求項１に記載の方法。
【請求項５】
前記パラメータの値は、前記回路設計における１つ以上のピンでの遷移時間の値を含む、請求項１に記載の方法。
【請求項６】
前記パラメータの値は、前記回路設計におけるゲートについての漏れ電力の値を含む、請求項１に記載の方法。
【請求項７】
前記１つ以上の設計要求違反は、セットアップタイミング違反を含む、請求項１に記載の方法。
【請求項８】
前記１つ以上の設計要求違反は、ホールドタイミング違反を含む、請求項１に記載の方法。
【請求項９】
前記１つ以上の設計要求違反は、電気的設計規則違反を含む、請求項１に記載の方法。
【請求項１０】
前記１つ以上の設計要求違反は、電力バジェット違反を含む、請求項１に記載の方法。
【請求項１１】
コンピュータ読み取り可能なプログラムであって、コンピュータにより実行されるとき、該コンピュータに、複数のシナリオにおいて回路設計の設計要求違反を修正する方法を行わせ、該方法は、
シナリオイメージを受け取ることであって、該シナリオイメージは、シナリオにおける回路対象についてのパラメータの値を記憶する、ことと、
複数シナリオＥＣＯ（ｅｎｇｉｎｅｅｒｉｎｇ  ｃｈａｎｇｅ  ｏｒｄｅｒ）データベースを受け取ることであって、該複数シナリオＥＣＯデータベースは、前記複数のシナリオにおける回路対象の下位セットについてのパラメータの値の下位セットを記憶する、ことと、
１つ以上の設計要求違反を修正するＥＣＯを決定することとを含み、該決定することは
、該シナリオイメージおよび該複数シナリオＥＣＯデータベース内に記憶されたパラメータの値を使用して、前記複数のシナリオの少なくともいくつかにおける回路対象についてのパラメータの値を推定することを含む、
コンピュータ読み取り可能なプログラム。
【請求項１２】
各々のシナリオは、工程コーナー、動作条件、または動作モードのうちの１つ以上と関連づけられる、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項１３】
前記パラメータの値は、前記回路設計における１つ以上のピンでのタイミングスラックの値を含む、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項１４】
前記パラメータの値は、前記回路設計における１つ以上のピンでの容量性負荷の値を含む、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項１５】
前記パラメータの値は、前記回路設計における１つ以上のピンでの遷移時間の値を含む、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項１６】
前記パラメータの値は、前記回路設計におけるゲートについての漏れ電力の値を含む、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項１７】
前記１つ以上の設計要求違反は、セットアップタイミング違反を含む、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項１８】
前記１つ以上の設計要求違反は、ホールドタイミング違反を含む、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項１９】
前記１つ以上の設計要求違反は、電気的設計規則違反を含む、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項２０】
前記１つ以上の設計要求違反は、電力バジェット違反を含む、請求項１１に記載のコンピュータ読み取り可能なプログラム。
【請求項２１】
システムであって、該システムは、
プロセッサーと、
メモリーとを含み、該メモリーは、
シナリオイメージであって、該シナリオイメージは、シナリオにおける回路対象についてのパラメータの値を記憶する、シナリオイメージと、
複数シナリオＥＣＯ（ｅｎｇｉｎｅｅｒｉｎｇ  ｃｈａｎｇｅ  ｏｒｄｅｒ）データベースであって、該複数シナリオＥＣＯデータベースは、前記複数のシナリオにおける回路対象の下位セットについてのパラメータの値の下位セットを記憶する、複数シナリオＥＣＯデータベースと、
命令とを記憶し、該命令は、該プロセッサーにより実行されるとき、該システムに、１つ以上の設計要求違反を修正するＥＣＯを決定させ、該決定することは、該シナリオイメージおよび該複数シナリオＥＣＯデータベース内に記憶されたパラメータの値を使用して、前記複数のシナリオの少なくともいくつかにおける回路対象についてのパラメータの値を推定することを含む、
システム。
【請求項２２】
前記複数のシナリオにおける各々のシナリオは、工程コーナー、動作条件、または動作モードのうちの１つ以上と関連づけられる、請求項２１に記載のシステム。
【請求項２３】
前記パラメータの値は、
前記回路設計における１つ以上のピンでのタイミングスラックの値と、
前記回路設計における１つ以上のピンでの容量性負荷の値と、
前記回路設計における１つ以上のピンでの遷移時間の値と、
前記回路設計におけるゲートについての漏れ電力の値と、のうちの１つ以上を含む、請求項２１に記載のシステム。
【請求項２４】
前記１つ以上の設計要求違反は、
セットアップタイミング違反と、
ホールドタイミング違反と、
電気的設計規則違反と、
電力バジェット違反とのうちの１つ以上を含む、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（技術分野）
本開示は、電子設計自動化（ＥＤＡ）に関連する。より具体的には、本開示は、複数の複数コーナー複数モードのシナリオにおける設計要求違反を修正するシステムおよび技術に関連する。
【背景技術】
【０００２】
（背景）
（関連技術）
コンピュータ技術の急速な進歩は、時には何兆バイトほどに大きいデータセット上で毎秒何兆ものコンピュータによる動作を行うことを可能にしてきた。これらの進歩は、主として、集積回路のサイズおよび複雑性の指数関数的増加が原因でありうる。
【０００３】
製造されたチップが所望されるように機能することを保証するために、回路設計は、通例、数多くの設計要求との適合性についてチェックされる。実際、回路設計は、一般的に、設計要求を満たすまで製造されず、その設計要求は、タイミング要求、騒音要求、漏れ要求などを含みうるが、これらに制限されない。
【０００４】
典型的な回路設計の流れにおいて、適合性をチェックするツールが使用されて、回路設計における設計要求違反を識別する。それから、追加の調整が回路設計になされて、設計要求違反を修正する。ひとたび回路設計が違反なしになると、回路設計は、製造のために準備されうる。
【０００５】
より小さな半導体形状への進歩は、集積回路の工程および動作条件の可変性を増加させてきた。工程コーナーは、工程条件の特定のセットであり、その工程条件のもとで回路設計は設計されうる。動作コーナーは、動作条件（たとえば、温度、電圧）の特定のセットであり、その動作条件のもとで回路設計は動作しうる。
【０００６】
回路設計の複雑性の増加の１つの理由は、数多くの動作モード（たとえば、待機状態、任務、試験、など）の導入である。特に、回路設計のいくつかの部分は、特定の動作モードにおいて完全にスイッチを切られうる。さらに、異なる動作モードは、極端に異なる電圧、クロック速度、などを有しうる。
【０００７】
工程コーナー、動作条件、および／または動作モードのすべての組み合わせのもとで、回路設計が機能上および性能の目標を満たすことを保証することが望ましい。「複数コーナー／複数モード（ＭＣＭＭ）シナリオ」または略して「シナリオ」という用語は、特定の工程コーナー、特定の動作条件、および／または特定の動作モードの組み合わせを表す。
【０００８】
１つのシナリオにおいて設計要求違反を修正することは、他のシナリオにおいて新しい違反を生成しうる。したがって、違反を識別すること、および修正することの工程は、一般的に、複数回、および複数のシナリオにわたって行われる必要がある。不運にも、回路設計のサイズおよび複雑性が急速に増加していて、かつ回路設計がチェックされる必要があるシナリオの数が急速に増加しているので、設計要求違反を修正するために必要な時間の量は、急速に増加している。
【発明の概要】
【課題を解決するための手段】
【０００９】
（概要）
本発明の一実施形態は、複数のシナリオにおいて回路設計の設計要求違反を修正するシステムを提供する。動作中、システムは、シナリオイメージおよび複数シナリオＥＣＯ（ｅｎｇｉｎｅｅｒｉｎｇ  ｃｈａｎｇｅ  ｏｒｄｅｒ）データベースを受け取りうる。シナリオイメージは、シナリオにおける回路対象についてのパラメータの値を記憶しえ、複数シナリオＥＣＯデータベースは、複数のシナリオにおける回路対象の下位セットについてのパラメータの値の下位セットを記憶しうる。各々のシナリオは、工程コーナー、動作条件、または動作モードのうちの１つ以上と関連づけられうる。次に、システムは、１つ以上の設計要求違反を修正するＥＣＯを決定しえ、その決定することは、シナリオイメージおよび複数シナリオＥＣＯデータベース内に記憶されたパラメータの値に基づいて、複数のシナリオにおける回路対象についてのパラメータの値を推定することを含みうる。本開示において、別な方法で述べられない限り、「基づく」という句は、「単にまたは部分的に基づく」を意味する。
【００１０】
パラメータの値は、システムに設計要求違反を識別し、かつ修正することを可能にさせうる回路情報を含みうる。特に、パラメータの値は、（１）回路設計における１つ以上のピンでのタイミングスラックの値、（２）回路設計における１つ以上のピンでの容量性負荷の値、（３）回路設計における１つ以上のピンでの遷移時間の値、および（４）回路設計におけるゲートについての漏れ電力の値を含みうるが、これらに制限されない。
【００１１】
設計要求違反は、回路設計における潜在的な問題を識別するのに役立ちうる。特に、設計要求違反は、（１）セットアップタイミング違反、（２）ホールドタイミング違反、（３）電気的設計規則違反、および（４）電力バジェット違反を含みうるが、これらに制限されない。
【図面の簡単な説明】
【００１２】
（図面の簡単な説明）
【図１】図１は、集積回路の設計および製作における種々のステップを図示する。
【図２Ａ】図２Ａおよび２Ｂは、どのように、シナリオにおける設計要求違反を修正することが、別のシナリオにおける別の設計要求違反を生成しうるか、またはさらに悪くしうるかを図示する。
【図２Ｂ】図２Ａおよび２Ｂは、どのように、シナリオにおける設計要求違反を修正することが、別のシナリオにおける別の設計要求違反を生成しうるか、またはさらに悪くしうるかを図示する。
【図３】図３は、複数のシナリオにおける設計要求違反を修正するためのアプローチを図示する。
【図４】図４は、複数シナリオＥＣＯデータベースを使用して、複数のシナリオにおける設計要求違反を修正するアプローチを図示する。
【図５】図５は、表形式の複数シナリオＥＣＯデータベースの一部を図示する。
【図６】図６は、どのように、パラメータの値がシナリオイメージおよび複数シナリオＥＣＯデータベースを使用して推定されうるかの例を図示する。
【図７】図７は、複数のシナリオにおける設計要求違反を修正する工程を図示するフローチャートを与える。
【発明を実施するための形態】
【００１３】
（詳細な説明）
以下の説明は、当業者の誰もが本発明を生産し、かつ使用することができるように与えられ、特定の用途およびその要求の文脈において提供される。開示された実施形態に対する種々の改変は、当業者にとって容易に明白であり、本明細書中に定義される概括的な原理は、本発明の精神および範囲から逸脱することなく、他の実施形態および用途に応用されうる。したがって、本発明は、示される実施形態に制限されずに、本明細書中に開示される原理および特徴と一致する最も広い範囲を授けられる。
【００１４】
図１は、集積回路の設計および製作における種々のステップを図示する。工程は、製品アイディア１００で始まり、その製品アイディア１００は、電子設計自動化（ＥＤＡ）ソフトウェア１１０を使用することで具現化される。チップ１７０は、製作１５０ステップならびにパッケージおよび組み立て１６０ステップを行うことにより、完結した設計から製造される。
【００１５】
ＥＤＡソフトウェア１１０を使用する設計の流れは、以下に説明される。設計の流れの説明は、例証の目的のためだけであって、本発明を制限することは意図されないということを留意されたい。たとえば、実際の集積回路設計は、以下で説明される順序とは異なる順序で設計の流れのステップを行うことを設計者に要求しうる。
【００１６】
システム設計ステップ１１２において、設計者らは、インプリメントする機能性を記述しうる。設計者らは、機能性を高め、かつコストをチェックするために、起こりうる事態の計画も行いうる。さらに、ハードウェア‐ソフトウェアのアーキテクチャを分割することは、このステップで生じる。論理設計および機能上の検証ステップ１１４において、ハードウェア記述言語（ＨＤＬ）設計は、生成され、かつ機能上の正確さについてチェックされうる。
【００１７】
統合および設計ステップ１１６において、ＨＤＬコードは、対象の技術のために最適化されうるネットリストに翻訳されうる。さらに、試験は、完成したチップをチェックするために設計され、かつインプリメントされうる。ネットリスト検証ステップ１１８において、ネットリストは、タイミング制限との適合性について、およびＨＤＬコードとの対応についてチェックされうる。
【００１８】
設計計画ステップ１２０において、チップについての全部のフロアプランが描かれ、かつタイミングおよびトップレベルのルーティングについて分析されうる。次に、物理的インプリメンテーションステップ１２２において、配置およびルーティングが行われうる。
【００１９】
分析および取り出しステップ１２４において、回路の機能性は、トランジスタレベルで検証されうる。物理的検証ステップ１２６において、設計は、機能上、製造上、電気的、またはリソグラフィーの問題のいずれも正すためにチェックされうる。
【００２０】
解像度を高めるステップ１２８において、幾何学的な操作は、設計の製造可能性を向上させるためにレイアウトに対して行われうる。最後に、マスクデータ準備ステップ１３０において、設計は、完成したチップを製造するマスクの製造のためにテープアウト１４０されうる。
【００２１】
ひとたび設計要求違反が回路設計において識別されると、回路のセルは、設計要求違反を修正するために調整されうる。たとえば、セットアップ時間違反を修正するために、経路内の１つ以上のセルは、サイズアップされ、経路を横切る信号により経験される遅延を減らしうる。同様に、ホールド時間違反を修正するために、１つ以上のバッファーは、経路に追加され、経路のピンでホールド時間を増加させうる。
【００２２】
設計要求違反を修正するために回路のセルになされる追加の調整は、ＥＣＯ（ｅｎｇｉｎｅｅｒｉｎｇ  ｃｈａｎｇｅ  ｏｒｄｅｒ）と呼ばれる。ＥＣＯはタイミング違反を修正することに制限されないということを留意されたい。ＥＣＯは、概して、いずれの種類の違反（たとえば、設計要求チェック違反、騒音違反、漏れ違反など）も修正するために使用されうる。
【００２３】
図２Ａおよび２Ｂは、どのように、シナリオにおける設計要求違反を修正することが、別のシナリオにおける別の設計要求違反を生成しうるか、またはさらに悪くしうるかを図示する。
【００２４】
ゲート２０２〜２２０は、回路設計の一部でありうる。図２Ａに図示されるように、回路設計は、シナリオＳ１において経路２２２および２２４に沿ったセットアップタイミング違反を有しうる。シナリオＳ１のみを考える場合、ゲート２０８−Ｓは、タイミング違反を修正するためのＥＣＯを適用する良い候補である。特に、ゲート２０８−Ｓは、経路２２２および２２４に沿ったセットアップタイミング違反を修正するために、より速いゲート（つまり、より小さな遅延値を有するゲート）と取り替えられうる。
【００２５】
しかし、図２Ｂに示されるように、ゲート２０８−Ｓをより速いゲートと取り替えることは、シナリオＳ２において経路２２６に沿ったホールドタイミング違反を生成しうるか、またはさらに悪くしうる。特に、図２Ｂは、ゲート２０８−Ｓが、ゲート２０８−Ｓのより速い型であるゲート２０８−Ｆと取り替えられたことを示す。ゲート２０８−Ｓがゲート２０８−Ｆと取り替えられたとき、シナリオＳ１において経路２２２および２２４に沿ったセットアップ違反を修正したが、シナリオＳ２において経路２２６に沿ったホールド違反を生成したか、またはさらに悪くした。
【００２６】
これらの理由のため、システム（たとえば、ＥＤＡツールを実行するコンピュータシステム）は、設計要求違反を修正するときに複数のシナリオをチェックする必要がある。図２Ａおよび２Ｂにおいて、システムが、設計要求違反を修正するときにシナリオＳ１とＳ２との両方をチェックする場合、システムは、ＥＣＯを適用する候補としてゲート２０２、２０４、および２１２を選択しうる。たとえば、システムは、ゲート２０２および２０４をより速いゲートと取り替え、ゲート２１２をより遅いゲートと取り替え、それによってシナリオＳ１において経路２２２および２２４に沿ったセットアップタイミング違反を修正し、同時にシナリオＳ２において経路２２６に沿ったホールドタイミング違反を修正しうる。同様の考えは、他のタイプの違反が修正されるときにも適用される。
【００２７】
図３は複数のシナリオにおける設計要求違反を修正するアプローチを図示する。
【００２８】
コンピュータシステム３０２は、プロセッサー３０４、メモリー３０６、およびストレージデバイス３０８を含みうる。コンピュータシステム３０２は、ディスプレイデバイス３１４、キーボード３１０、およびポインティングデバイス３１２に連結されうる。ストレージデバイス３０８は、オペレーティングシステム３１６、アプリケーション３１８、および異なるシナリオに対応するシナリオイメージ３２０〜３２４を記憶しうる。シナリオイメージ３２０〜３２４は、特定のシナリオにおいて回路設計の設計要求違反を検出および／または修正するためのアプリケーション３１８により要求される情報を含みうる。各々のシナリオイメージが概して非常に大きいので、コンピュータシステム３０２は、所与の時にいつでも、１つのシナリオイメージをメモリー３０６内に保持することができるだけでありうる。
【００２９】
動作中、アプリケーション３１８は、特定のシナリオに対応するシナリオイメージ（たとえば、シナリオＳ１に対応するシナリオイメージ３２０）をストレージ３０８からメモリー３０６内へロードしうる。次に、アプリケーション３１８は、シナリオイメージ３２０を使用して、シナリオＳ１における設計要求違反を修正するＥＣＯを決定しうる。それから、アプリケーション３１８は、シナリオイメージ３２０をメモリー３０６から除去し、シナリオＳ２に対応しうるシナリオイメージ３２２をストレージ３０８からメモリー３０６にロードしうる。次に、アプリケーション３１８は、シナリオイメージ３２２を使用して、シナリオＳ１における設計要求違反を修正するように決定されたＥＣＯが、新しい設計要求違反を生成するか、またはシナリオＳ２における現存の設計要求違反をさらに悪くするかどうかをチェックしうる。そのような場合、アプリケーション３１８は、ＥＣＯを却下し、シナリオＳ１におけるＥＣＯの新しいセットを決定することでやり直しうる。一方で、新しい設計要求違反が生成されず、かつ現存の設計要求違反がシナリオＳ２においてさらに悪くならなかった場合、システムは、次のシナリオに対応する次のシナリオイメージをロードしうる。この態様で、システムは、各々のシナリオにおいてＥＣＯをチェックし続けえ、ひとたびＥＣＯがすべてのシナリオにおいてチェックされると、システムは、ＥＣＯを回路設計に引き渡す。
【００３０】
不運にも、ディスク動作の長い呼び出し時間が原因で、シナリオイメージをストレージ３０８からメモリー３０６にロードすることは、通例、長い時間がかかる。結果として、上記のアプローチは、複数のシナリオにおける設計要求違反を修正するために実行不可能なほどに長い時間がかかりうる。分散コンピューティングに基づくアプローチは、性能を向上させるために使用されうる。たとえば、各々のシナリオイメージは、分散コンピューティング環境内の別個のコンピュータ内にロードされうる。それから、コンピュータが特定のシナリオのためのＥＣＯを決定するとき、コンピュータは、ＥＣＯを分散コンピューティング環境内の他のコンピュータに伝達して、異なるシナリオにおいてＥＣＯを検証しうる。不運にも、このアプローチは、シナリオの数が多い（たとえば数百）場合、数多くのコンピュータを要求するので、非常に高価でありうる。
【００３１】
本発明のいくつかの実施形態は、複数のシナリオにおける設計要求違反を修正するＥＣＯを決定するために要求される時間の量を実質的に減らしうる。いくつかの実施形態は、すべてのシナリオからの情報を含む複数シナリオＥＣＯデータベースを生成する。このデータベースは、シナリオイメージと並んでメモリー内に存在しうるほど十分に小さい。システムが、特定のシナリオにおける設計要求違反を修正するＥＣＯのセットを決定するとき、システムは、複数シナリオＥＣＯデータベースを使用して、すべてのシナリオにわたってＥＣＯをチェックしうる。複数シナリオＥＣＯデータベースは、システムに、ＥＣＯが各々のシナリオにおいて有すると予期される影響を素早く推定することを可能にさせる。
【００３２】
図４は、複数シナリオＥＣＯデータベースを使用して、複数のシナリオにおける設計要求違反を修正するアプローチを図示する。
【００３３】
図３のように、コンピュータシステム４０２は、プロセッサー４０４、メモリー４０６、およびストレージデバイス４０８を含みうる。コンピュータシステム４０２は、ディスプレイデバイス４１４、キーボード４１０、およびポインティングデバイス４１２に連結されうる。ストレージデバイス４０８は、オペレーティングシステム４１６、アプリケーション４１８、および異なるシナリオに対応するシナリオイメージ４２０〜４２４を記憶しうる。シナリオイメージ４２０〜４２４はデータを含みえ、このデータは、特定のシナリオにおいて回路設計の設計要求違反を分析し、シミュレートし、かつ／または修正するためにアプリケーション４１８により要求される。各々のシナリオイメージが概して非常に大きいので、コンピュータシステム４０２は、所与の時にいつでも、１つのシナリオイメージをメモリー４０６内に保持することができるだけでありうる。
【００３４】
ストレージ４０８は、複数シナリオＥＣＯデータベース４２６をさらに記憶しうる。複数シナリオＥＣＯデータベース４２６は、複数のシナリオについての回路情報を含みえ、この回路情報は、複数のシナリオにおけるＥＣＯの影響を推定するために使用されうる。
【００３５】
動作中、アプリケーション４１８は、特定のシナリオに対応するシナリオイメージ（たとえば、シナリオＳ１に対応するシナリオイメージ４２０）をストレージ４０８からメモリー４０６内にロードしうる。次に、アプリケーション４１８は、複数シナリオＥＣＯデータベース４２６をメモリー４０６内にロードしうる。複数シナリオＥＣＯデータベース４２６は、シナリオイメージ４２０と並んでメモリー４０６内に存在しうるほど十分に小さくありうる。それから、アプリケーション４１８は、シナリオイメージ４２０を使用することで、シナリオＳ１における設計要求違反を修正するＥＣＯを決定し、かつ複数シナリオＥＣＯデータベース４２６を使用することで、ＥＣＯが他のシナリオにおいて、新しい設計要求違反を生成することも、現存の設計要求違反をさらに悪くすることも予期されないことを保証しうる。次に、アプリケーション４１８は、決定されたＥＣＯを回路設計に引き渡すか、またはＥＣＯが後で回路設計に引き渡されうるように、ＥＣＯをストレージ４０８内に記憶することかのどちらかをしうる。図３におけるアプリケーション３１８とは違って、アプリケーション４１８は、他のシナリオにおけるＥＣＯの影響をチェックするためにシナリオイメージを交換しないので、アプリケーション４１８は、他のシナリオにおけるＥＣＯの影響をチェックするために要求される時間の量を実質的に減らす。
【００３６】
ひとたびシナリオＳ１に対するＥＣＯが、引き渡されるか、またはストレージ４０８内に記憶されるかのどちらかがされると、アプリケーション４１８は、別のシナリオに対応する第二のシナリオイメージをロードしうる。たとえば、アプリケーション４１８は、シナリオＳ２に対応するシナリオイメージ４２２をロードしうる。次に、アプリケーション４１８は、シナリオイメージ４２２を使用することで、シナリオＳ２における設計要求違反を修正するＥＣＯを決定し、かつ複数シナリオＥＣＯデータベース４２６を使用することで、他のシナリオにおけるＥＣＯの影響をチェックしうる。この態様で、システムは、各々のシナリオにおける設計要求違反を修正するＥＣＯを決定し、かつ複数シナリオＥＣＯデータベースを使用してＥＣＯの影響をチェックしうる。
【００３７】
図３および４に示される実施形態は、例証の目的のためだけである。実施形態に対する種々の改変は、当業者にとって容易に明白である。たとえば、一実施形態において、コンピュータシステム４０２は、コンピュートファームの一部であり、かついずれのユーザーインターフェースデバイスも含まなくてもよく、アプリケーション４１８は、コンピュートファームに作業として委ねられうる。別の実施形態において、コンピュータ４０２は、クラウドコンピューティングインフラストラクチャーの一部でありうる。
【００３８】
図５は、表形式の複数シナリオＥＣＯデータベースの一部を図示する。表５００の各々の列はシナリオに対応しえ、各々の行はパラメータ（たとえば、遅延、静電容量、スルーなど）に対応しうる。複数シナリオＥＣＯデータベースは、すべてのシナリオにわたって関与する各々の対象（たとえば、ゲート、ネット、ピン、など）についてのパラメータの値を記憶しうる。表５００は、回路設計において特定の対象と関連づけられる複数シナリオＥＣＯデータベースの一部を表す。たとえば、値Ｖ−５０１〜Ｖ−５０９は、異なるシナリオにおけるゲート２０８−Ｓ（図２Ａを参照）と関連づけられるパラメータの値でありうる。
【００３９】
複数シナリオＥＣＯデータベース内に記憶される情報は、シナリオイメージ（たとえばシナリオイメージ４２０（図４を参照））内に記憶される情報の小さな断片でありうる。特に、複数シナリオＥＣＯデータベースは、異なるシナリオにおけるＥＣＯの影響を分析するために要求される対象（たとえば、ゲート、ネット、ピンなど）についての情報を記憶するだけでありうる。たとえば、図２Ａおよび２Ｂにおいて、ゲート２１４はセットアップタイミング違反経路上にも、ホールドタイミング違反経路上にもないので、ゲート２１４についての情報は、複数シナリオＥＣＯデータベース内に記憶される必要がない。さらに、複数シナリオＥＣＯデータベースは、まばらでありえ、つまり、複数シナリオＥＣＯデータベースは、異なるシナリオにおけるＥＣＯの影響を分析するために要求されるシナリオおよび／またはパラメータだけについての値を記憶しうる。たとえば、図２Ａのゲート２０８−Ｓが静的漏れ電力バジェットに違反することが予期されない場合、ゲート２０８−Ｓの静的漏れ電力についての情報は、複数シナリオＥＣＯデータベース内に記憶されなくてもよい。同様に、回路設計が、特定のシナリオにおいていずれの設計要求違反も有さず、またそのシナリオにおいて何か設計要求違反を有することが予期されない場合、複数シナリオＥＣＯデータベースは、そのシナリオについてのいずれの情報も記憶しなくてもよい。
【００４０】
表５００に示される情報は、特定のゲートと関連づけられうる。システムは、設計要求違反を修正するためにゲートを新しいゲートと取り替えうる。しかし、メモリーおよび複数シナリオＥＣＯデータベース内の現用のシナリオイメージは、新しいゲートについてのいずれの情報も有さなくてもよい。したがって、本発明のいくつかの実施形態は、現用のシナリオイメージおよび複数シナリオＥＣＯデータベースを使用して、設計要求違反を修正するために使用される取り替えゲートについてのパラメータの値を推定する。
【００４１】
たとえば、表５００が図２Ａに示されるゲート２０８−Ｓについてのパラメータの値を記憶すると仮定する。特に、図５におけるパラメータＰ１がゲート２０８−Ｓのゲート遅延に対応すると仮定する。さらに、ゲート２０８−Ｓをゲート２０８−Ｆと取り替えることが、シナリオＳ１において、図２Ａに示される２つのセットアップ違反を修正することを、システムが決定すると仮定する。その場合、システムは、ゲート２０８−Ｓをゲート２０８−Ｆと取り替えることが、シナリオＳ２において何か問題を生成するかどうかをチェックすることを望みうる。しかし、表５００は、ゲート２０８−Ｆについてのパラメータの値（たとえば、ゲート遅延）を有さず、シナリオＳ１についてのイメージは、シナリオＳ２についてのゲート遅延の値を有さない。
【００４２】
図６は、どのように、パラメータの値が、シナリオイメージおよび複数シナリオＥＣＯデータベースを使用して推定されうるかの例を図示する。
【００４３】
ゲート６０２についてのパラメータＰ１の値が、シナリオＳ１およびＳ２においてそれぞれ、１０および５に等しく、ゲート６０４についてのパラメータＰ１の値が、シナリオＳ１において１４に等しいと仮定する。破線の囲みは、複数シナリオＥＣＯデータベース内に記憶されうる情報を示し、点線の囲みは、シナリオＳ１についてのイメージ内に記憶されうる情報を示す。シナリオＳ２におけるゲート６０４についてのパラメータＰ１の値は、シナリオＳ１についてのイメージ内に記憶されず、複数シナリオＥＣＯデータベース内にも記憶されないということを留意されたい。
【００４４】
シナリオＳ２におけるゲート６０４についてのパラメータＰ１の値は、ゲート６０２をゲート６０４と取り替えることが、新しい設計要求違反を生成すると予期されるか、またはシナリオＳ２において現存の設計要求違反をさらに悪くすると予期されるかどうかを決定するために要求されうる。本発明のいくつかの実施形態は、シナリオＳ１についてのイメージおよび複数シナリオＥＣＯデータベース内に含まれる情報に基づいて、シナリオＳ２におけるゲート６０４についてのパラメータＰ１の値を推定する。
【００４５】
一般に、システムは、パラメータの値を推定するためにいずれの推定関数も使用しうる。一実施形態において、システムは、シナリオＳ１およびＳ２におけるゲート６０２についてのパラメータＰ１の値の間の比率を決定し、その比率を使用することにより、シナリオＳ２におけるゲート６０４についてのパラメータＰ１の値を決定しうる。たとえば、図６において、シナリオＳ１およびＳ２におけるゲート６０２についてのパラメータＰ１の値の間の比率は、２に等しい。それから、この比率は、使用されて、シナリオＳ２におけるゲート６０４についてのパラメータＰ１の値を７であると決定しうる。
【００４６】
図７は、複数のシナリオにおける設計要求違反を修正する工程を図示するフローチャートを与える。
【００４７】
工程は、シナリオイメージを受け取ることで始まりえ、そのシナリオイメージは、シナリオにおける回路対象についてのパラメータの値を記憶する（動作７０２）。
【００４８】
シナリオは、工程コーナー、動作条件、または動作モードのうちの１つ以上と関連づけられうる。シナリオイメージは、詳細なタイミング分析を行うため、および種々の設計要求との適合性をチェックするために使用される情報を含みうる。そのような場合、シナリオイメージは、非常に大きくありえ、コンピュータシステムは、所与の時にいつでも、単一のシナリオイメージをメモリー内に記憶することができるだけでありうる。
【００４９】
パラメータの値は、回路設計における１つ以上のピンでのタイミングスラックの値、回路設計におけるゲートについての漏れ電力の値、回路設計における１つ以上のピンでの容量性負荷の値および遷移時間の値を含みうるが、これらに制限されない。以下の段落は、設計要求ならびに関連したパラメータの値および回路対象のいくつかの例を説明する。これらの例は、例証の目的のためだけであって、本発明の範囲を制限することは意図されない。
【００５０】
「最大遅延タイミング」要求（別名「セットアップ時間」要求）は、信号にタイミングエンドポイントと関連した必要時間の前にタイミングエンドポイントに到達するように要求する。この設計要求が違反される場合、回路設計は、おそらく、より遅い速度で動作される必要がある。タイミングエンドポイントは、この設計要求を満たす必要がありうる回路対象の例である。タイミングエンドポイントでのスラックの値（たとえば、タイミングエンドポイントでの信号の必要時間と到達時間との間の差）は、ＥＣＯがこの設計要求の違反を修正するかどうかを決定するために、シナリオイメージおよび／または複数シナリオＥＣＯデータベース内に記憶される必要がありうるパラメータの値の例である。スラックの値の大きさは、タイミングエンドポイントがこの設計要求に違反するときに負であり、タイミングエンドポイントが設計要求を満足するときに正でありうる。
【００５１】
「最小遅延タイミング」要求（別名「ホールド時間」要求）は、信号に必要時間の後にタイミングエンドポイントに到達するように要求する。この設計要求が違反される場合、（たとえば信号がレジスターにより捕捉されなかったので）回路は、おそらく、正常に動作せず、かつ／または不完全な機能性を有する。タイミングエンドポイントは、この設計要求を満たす必要がありうる回路対象の例である。タイミングエンドポイントでのスラックの値（たとえば、タイミングエンドポイントでの信号の必要時間と到達時間との間の差）は、ＥＣＯがこの設計要求の違反を修正するかどうかを決定するために、シナリオイメージおよび／または複数シナリオＥＣＯデータベース内に記憶される必要がありうるパラメータの値の例である。スラックの値の大きさは、タイミングエンドポイントがこの設計要求に違反するときに負であり、タイミングエンドポイントがこの設計要求を満足するときに正である。
【００５２】
「電気的設計規則」（別名電気的ＤＲＣ）は、１つ以上の制限を回路対象の１つ以上の電気的性質に課す。電気的設計規則の例は、最大許容信号遷移時間、各々のゲート上の最大許容容量性負荷、ネットの最大許容ファンアウト、およびネットの最大長さを含む。シナリオイメージおよび／または複数シナリオＥＣＯデータベース内に記憶される必要がありうるパラメータの値の例は、回路対象の電気的性質の値（たとえば、静電容量）でありうる。この設計規則は、異なるタイプの回路対象に適用されうる。たとえば、最大許容信号遷移時間要求は、タイミングエンドポイントもしくはゲート（たとえば、ゲートの出力での遷移は、ある範囲内になければならない）またはネット（たとえば、ネット上のいずれのピン上の遷移は、ある値より小さくなければならない）に適用されうる。最大許容容量性負荷要求は、論理ゲートに適用されうる。最大許容ファンアウト要求および／または最大長さ要求はネットに適用されうる。
【００５３】
「電力バジェット」制約または要求は、１つ以上の制限を回路設計の１つ以上の電力に関連する性質に課しうる。電力に関連する設計要求の例は、回路対象の許容漏れ電力、動的電力、および／または全電力の上限を含む。シナリオイメージおよび／または複数シナリオＥＣＯデータベース内に記憶されうるパラメータの値は、回路対象の電力消費の値でありうる。この設計要求は、異なるタイプの回路対象に適用されうる。たとえば、電力に関連する設計要求は、全体の回路設計、または回路設計における各々のリーフレベルのセルインスタンス、または回路設計における特定のブロックに適用されうる。
【００５４】
図７の論述を続けると、システムは、それから、複数シナリオＥＣＯデータベースを受け取りえ、その複数シナリオＥＣＯデータベースは、複数のシナリオにおける回路対象の下位セットについてのパラメータの値の下位セットを記憶する（動作７０４）。複数シナリオＥＣＯデータベースは、複数のシナリオにわたって回路対象についての種々のパラメータの値を記憶する。しかし、複数シナリオＥＣＯデータベースは、回路対象の下位セットだけについてのパラメータの値の下位セットを記憶する必要があるだけでありうるので、複数シナリオＥＣＯデータベースは、シナリオイメージと比べると、サイズが実質的に小さくありうる。
【００５５】
いくつかの実施形態において、複数シナリオＥＣＯデータベースは、関与する各々のパラメータについての値の範囲を記憶するだけである。範囲は、いずれの所与のシナリオにおいてもパラメータの値がその範囲内にあるように選択される。
【００５６】
いくつかの実施形態において、システムは、既知の設計要求違反に基づいて複数シナリオＥＣＯデータベースを築く。たとえば、回路設計が、特定の数の設計要求に違反すると仮定する。システムは、設計要求違反により影響を与えられるパラメータおよび回路対象を決定しうる。次に、システムは、それらのパラメータの値だけを複数シナリオＥＣＯデータベース内に記憶しうる。たとえば、図２Ａおよび２Ｂに示されるように、ゲート２１４は、セットアップタイミング違反経路上にも、ホールドタイミング違反経路上にもないので、ゲート２１４と関連づけられるパラメータの値は、複数シナリオＥＣＯデータベース内に記憶されなくてもよい。
【００５７】
いくつかの実施形態において、システムは、既知の設計要求違反および潜在的な設計要求違反に基づいて複数シナリオＥＣＯデータベースを築く。たとえば、システムは、違反していないが、違反しそうなパラメータの値を考えうる。たとえば、ゲート２１４が、タイミング経路上にあり、その経路のスラックがほぼ０である（つまり、ゲート２１４はタイミング要求に違反しそうである）場合、ゲート２１４と関連づけられるパラメータの値は、複数シナリオＥＣＯデータベース内に記憶されうる。
【００５８】
図７の論述を続けると、システムは、それから、１つ以上の設計要求違反を修正するＥＣＯを決定しえ、前記決定することは、シナリオイメージおよび複数シナリオＥＣＯデータベース内に記憶されたパラメータの値に基づいて、複数のシナリオにおける回路対象についてのパラメータの値を推定することを含む（動作７０６）。
【００５９】
特に、シナリオイメージは、第一のシナリオにおける第一のゲートおよび第二のゲートについてのパラメータの値を記憶しうる。複数シナリオＥＣＯデータベースは、第二のシナリオにおける第一のゲートについてのパラメータの値を記憶しうる。システムは、それから、シナリオイメージおよび複数シナリオＥＣＯデータベース内に記憶されたパラメータの値に基づいて、第二のシナリオにおける第二のゲートについてのパラメータの値を推定しうる。
【００６０】
（結論）
上記の説明は、当業者の誰もが実施形態を生産し、かつ使用することができるように与えられる。開示された実施形態に対する種々の改変は、当業者にとって容易に明白であり、本明細書中に定義される概括的な原理は、本開示の精神および範囲から逸脱することなく、他の実施形態および用途に応用できる。したがって、本発明は、示される実施形態に制限されずに、本明細書に開示される原理および特徴と一致する最も広い範囲を授けられる。
【００６１】
本開示内に説明されるデータ構造およびコードは、コンピュータ読み取り可能な記憶媒体および／またはハードウェアモジュールおよび／またはハードウェア装置上に部分的にまたは完全に記憶されうる。コンピュータ読み取り可能な記憶媒体は、現時点で既知もしくはのちに開発される、コードおよび／またはデータを記憶することができる揮発性メモリー、不揮発性メモリー、ディスクドライブのような磁気および光学的記憶デバイス、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタルバーサタイルディスクもしくはデジタルビデオディスク）、または他の媒体を含むが、これらに制限されない。本開示内に説明されるハードウェアモジュールまたは装置は、現時点で既知もしくはのちに開発される特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、専用もしくは共有プロセッサー、および／または他のハードウェアモジュールもしくは装置を含むが、これらに制限されない。
【００６２】
本開示内に説明される方法および工程は、コンピュータ読み取り可能な記憶媒体またはデバイス内に記憶されるコードおよび／またはデータとして部分的にまたは完全に具体化されえ、その結果、コンピュータシステムがコードおよび／またはデータを読み取り、かつ実行するとき、コンピュータシステムは、関連した方法および工程を行う。方法および工程は、ハードウェアモジュールまたは装置内にも部分的にまたは完全に具体化されえ、その結果、ハードウェアモジュールまたは装置が起動されるとき、ハードウェアモジュールまたは装置は関連した方法および工程を行う。方法および工程は、コード、データ、およびハードウェアモジュールもしくは装置の組み合わせを使用することで具体化されうるということを留意されたい。
【００６３】
本発明の実施形態の上述の説明は、例証および説明の目的のためだけに与えられてきた。上述の説明は、網羅的であることも、本発明を開示された形態に制限することも意図されない。したがって、多数の改変および変化は、当業者にとって明白である。さらに、上記の開示は、本発明を制限することは意図されない。本発明の範囲は、添付の特許請求の範囲により定義される。
【図１】
0005917543.tif 000002
【図２Ａ】
0005917543.tif 000003
【図２Ｂ】
0005917543.tif 000004
【図３】
0005917543.tif 000005
【図４】
0005917543.tif 000006
【図５】
0005917543.tif 000007
【図６】
0005917543.tif 000008
【図７】
0005917543.tif 000009