(57)【要約】カスタム集積回路（ＩＣ）設計における、電力を、コンピュータ可読コードを含むカスタム集積回路の仕様を受け取り、かつそのコンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、そのコンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数の処理ブロックおよび１つまたは複数の電力ドメインを有するプロセッサ・アーキテクチャを自動的に生成し、各処理ブロックがいつ必要とされるかについてコード・プロファイルに基づいて決定し、かつ各ブロックを電力ドメインのうちの１つに割り当て、電力ドメインの電力のゲーティングを、コード・プロファイルに基づいて行ない、生成されたアーキテクチャを、半導体製造のためにカスタム集積回路のコンピュータ可読記述に合成する、ことによって管理するシステムおよび方法が開示される。
2013538386.tif 000002
【特許請求の範囲】
【請求項１】
カスタム集積回路（ＩＣ）設計において電力を管理する方法であって、
ａ．  コンピュータ可読コードを含む前記カスタム集積回路の仕様を受け取り、かつ前記コンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、
ｂ．  前記コンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数の処理ブロックおよび１つまたは複数の電力ドメインを有するプロセッサ・アーキテクチャを自動的に生成し、
ｃ．  各処理ブロックがいつ必要とされるかについて前記コード・プロファイルに基づいて決定し、かつ各ブロックを前記電力ドメインのうちの１つに割り当て、
ｄ．  前記電力ドメインの電力のゲーティングを、前記コード・プロファイルに基づいて行ない、
ｅ．  生成された前記アーキテクチャを、半導体製造のために前記カスタム集積回路のコンピュータ可読記述に合成する、
方法。
【請求項２】
前記プロファイルから機能ブロック利用度の統計を生成する、請求項１に記載の方法。
【請求項３】
異なる処理ブロックの利用度を時間の関数として追跡する、請求項２に記載の方法。
【請求項４】
１つまたは複数の処理ブロックの電力を推測して遮断し、電力を遮断した処理ブロックを必要時に自動的にオンに切り換える、請求項１に記載のシステム。
【請求項５】
インストラクション・デコーダを使用して、各電力ドメインに対して電力がいつ印加されるべきかを決定する、請求項１に記載の方法。
【請求項６】
前記コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを実行して処理ブロックの利用度を決定する、請求項１に記載の方法。
【請求項７】
前記コンピュータ可読コードを走らせる前記カスタム集積回路のためのファームウエアまたはソフトウエア開発キット（ＳＤＫ）を自動的に生成する、請求項１に記載の方法。
【請求項８】
前記コンピュータ可読コードをアッセンブリ・コードにコンパイルする、請求項１に記載の方法。
【請求項９】
前記アッセンブリ・コードをリンクして前記選択されたアーキテクチャのためのファームウエアを生成する、請求項８に記載の方法。
【請求項１０】
前記ファームウエアのサイクル‐ベースのシミュレーションを実行する、請求項８に記載の方法。
【請求項１１】
前記ファームウエアの動的プロファイリングを実行する、請求項８に記載の方法。
【請求項１２】
プロファイリングが行なわれたファームウエアに基づいて前記アーキテクチャを最適化する、請求項１１に記載の方法。
【請求項１３】
前記アッセンブリ・コードに基づいて前記アーキテクチャを最適化する、請求項８に記載の方法。
【請求項１４】
前記選択されたアーキテクチャのためのレジスタ・トランスファ・レベルのコードを生成する、請求項１に記載の方法。
【請求項１５】
前記ＲＴＬコードの合成を実行する、請求項１１に記載の方法。
【請求項１６】
カスタム集積回路（ＩＣ）設計において電力を自動的に管理するシステムであって、
ａ．  コンピュータ可読コードを含む前記カスタム集積回路の仕様を受け取り、かつ前記コンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定するための手段と、
ｂ．  前記コンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数の処理ブロックおよび１つまたは複数の電力ドメインを有するプロセッサ・アーキテクチャを自動的に生成するための手段と、
ｃ．  各処理ブロックがいつ必要とされるかについて前記コード・プロファイルに基づいて決定し、かつ各ブロックを前記電力ドメインのうちの１つに割り当てるための手段と、
ｄ．  前記電力ドメインの電力のゲーティングを、前記コード・プロファイルに基づいて行なうための手段と、
ｅ．  生成された前記アーキテクチャを、半導体製造のために前記カスタム集積回路のコンピュータ可読記述に合成するための手段と、
を備えるシステム。
【請求項１７】
前記プロファイルから機能ブロック利用度の統計を生成する、請求項１６に記載のシステム。
【請求項１８】
異なる処理ブロックの利用度を時間の関数として追跡するための手段を備える、請求項１７に記載のシステム。
【請求項１９】
１つまたは複数の処理ブロックの電力を推測して遮断し、電力を遮断した処理ブロックを必要時に自動的にオンに切り換えるための手段を備えるする、請求項１６に記載のシステム。
【請求項２０】
各電力ドメインに対して電力がいつ印加されるべきかを決定するインストラクション・デコーダを備える、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（相互に参照される出願）
出願人を共通とする、同日に出願された米国特許出願第１２／８３５，６０３号『アルゴリズムおよび仕様に基づく自動最適集積回路ジェネレータ（ＡＵＴＯＭＡＴＩＣ  ＯＰＴＩＭＡＬ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ  ＧＥＮＥＲＡＴＯＲ  ＦＲＯＭ  ＡＬＧＯＲＩＴＨＭＳ  ＡＮＤ  ＳＰＥＣＩＦＩＣＡＴＩＯＮ）』、米国特許出願第１２／８３５，６２１号『アルゴリズムおよび仕様に基づく自動最適集積回路ジェネレータ（ＡＵＴＯＭＡＴＩＣ  ＯＰＴＩＭＡＬ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ  ＧＥＮＥＲＡＴＯＲ  ＦＲＯＭ  ＡＬＧＯＲＩＴＨＭＳ  ＡＮＤ  ＳＰＥＣＩＦＩＣＡＴＩＯＮ）』、米国特許出願第１２／８３５，６２８号『駆動電力ゲーティングの応用（ＡＰＰＬＩＣＡＴＩＯＮ  ＤＲＩＶＥＮ  ＰＯＷＥＲ  ＧＡＴＩＮＧ）』、米国特許出願第１２／８３５，６３１号『集積回路におけるシステム、アーキテクチャおよびマイクロアーキテクチャ（ＳＡＭＡ）表現（ＳＹＳＴＥＭ，  ＡＲＣＨＩＴＥＣＴＵＲＥ  ＡＮＤ  ＭＩＣＲＯ‐ＡＲＣＨＩＴＥＣＴＵＲＥ  （ＳＡＭＡ）  ＲＥＰＲＥＳＥＮＴＡＴＩＯＮ  ＯＦ  ＡＮ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ）』、および米国特許出願第１２／８３５，６４０号『アーキテクチャ・レベルの省電力指向の最適化およびリスク軽減（ＡＲＣＨＩＴＥＣＴＵＲＡＬ  ＬＥＶＥＬ  ＰＯＷＥＲ‐ＡＷＡＲＥ  ＯＰＴＩＭＩＺＡＴＩＯＮ  ＡＮＤ  ＲＩＳＫ  ＭＩＴＩＧＡＴＩＯＮ）』が相互に関連しており、これらの文献によって参照される内容が、本願に援用される。
【背景技術】
【０００２】
本発明は、電子回路における電力消費を管理するための方法および装置に関する。
【０００３】
持ち運びできるバッテリ駆動電子デバイスにおいて、エネルギ効率の高いシステム設計は、エネルギ消費がポータブル・システムのバッテリ寿命を決定づけ、且つ消費者市場におけるあらゆる製品の売れ行きに影響を与える非常に重要な性能測定基準であることから、ますます重要なものとなった。したがって、電力管理が、システムのインフラストラクチャにおいて欠くことができない部分になりつつある。
【０００４】
動的電力管理（ＤＰＭ）は、エネルギまたは電力効率の高い計算のためにシステムの動的な構成または再構成を可能にする設計技法である。ＤＰＭ技術は、通常、システムの休止部分をオフにすることまたは処理速度を「低下」すること、およびシステムのパフォーマンスとエネルギ効率とを動的にトレードすること、を伴う。ＤＰＭ技術は、変化する作業負荷に対してシステム構成要素のパフォーマンスを個別に調整することによって、システムの電力を最適化し、かつそれをコントロールする方法を提供する。
【０００５】
動的に変化する作業負荷を伴うシステム、言い換えると、常時、ピークまたは最大パフォーマンスを実行する必要のないシステムにおいては、電圧およびクロック周波数をコントロールしてシステムの電力消費を最適化することが可能である。これは、動的電圧周波数制御（ＤＶＦＳ）として知られる。米国特許出願第２００７０２６６２６８号は、第１の周波数を有するローカル・クロック信号によって動作がコントロールされる単一インストラクション多重データ（ＳＩＭＤ）プロセッサ・アーキテクチャを開示しており、それにおいては、コントロール・プロセッサが、ＳＩＭＤプロセッサ・アーキテクチャの動作をコントロールし、かつプロセッサ・アレイの動作とデータ・ベクトルのストリームとを同期させる信号を生成するべく適合されている。コントロール・プロセッサの動作は、第２の周波数を有するローカル・クロック信号によってコントロールされ、かつ電力管理手段が、コントロール・プロセッサによって生成された同期信号に応答してローカル・クロック信号の周波数を調整し、それによってＳＩＭＤプロセッサ・アーキテクチャの電力消費を最小化する。しかしながら、このアプローチは、周波数を調整するだけであり、デバイスが、アプリケーション・コードによって必要とされないときでさえ、低い周波数において動作できる状態に置かれたままとなる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
チップによって消費される電力は、２つの主要成分、すなわち動的なスイッチング電力、および静的または漏れ電力に属する。これらの成分は、独立に管理することが可能である。従来の電力管理技術は、回路レベルの技術に頼っている。製造技術が、より小さい構造に向かっていることから、静的な電力の漏れが決定的なものとなりつつある。静的または漏れ電力は、ＩＣの活動とは独立している。したがって、携帯電話等のバッテリ駆動電子機器にとっては、漏れ電力を低減することが重要である。
【課題を解決するための手段】
【０００７】
１つの態様においては、カスタム集積回路（ＩＣ）設計における、電力を、コンピュータ可読コードを含むカスタム集積回路の仕様を受け取り、かつそのコンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、そのコンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数の処理ブロックおよび１つまたは複数の電力ドメインを有するプロセッサ・アーキテクチャを自動的に生成し、各処理ブロックがいつ必要とされるかについてコード・プロファイルに基づいて決定し、かつ各ブロックを電力ドメインのうちの１つに割り当て、電力ドメインの電力のゲーティングを、コード・プロファイルに基づいて行ない、生成されたアーキテクチャを、半導体製造のためにカスタム集積回路のコンピュータ可読記述に合成する、ことによって管理するシステムおよび方法が開示される。
【０００８】
上記の態様の実装には、次に示す内容のうちの１つまたは複数を含めることが可能である。システムは、プロファイルから機能ブロック利用度の統計を生成することができる。システムは、時間の関数として、異なる処理ブロックの利用度を追跡することができる。システムは、１つまたは複数の処理ブロックの電力を推測して遮断することが可能であり、必要時には、電力を遮断した処理ブロックを自動的にオンに切り換えることができる。各電力ドメインに電力がいつ印加されるべきかについては、インストラクション・デコーダが決定することができる。アプリケーション・コードを走らせるカスタムＩＣのためのソフトウエア・ツールは、自動的に生成することが可能である。これらのツールには、コンパイラ、アッセンブラ、リンカ、サイクル‐ベースのシミュレータのうちの１つまたは複数が含まれる。ツールは、自動的にファームウエアを生成する。ツールは、ファームウエアのプロファイリングを行なうことが可能であり、ファームウエアのプロファイルを、フィードバックとしてアーキテクチャの最適化に提供する。コンパイラのインストラクション・スケジューラは、この電力最適化スキームが与えられ、効率を最大化するべくインストラクションの順序を調整することが可能である。システムは、あらかじめ決定済みの物理的な制約に基づいてプロセッサ・アーキテクチャを反復的に最適化することが可能である。システムは、コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを実行することが可能である。システムは、コンピュータ可読コードを走らせるカスタム集積回路のためのソフトウエア開発キット（ＳＤＫ）を自動的に生成することが可能である。コンピュータ可読コードは、アッセンブリ・コードに変換され、かつリンクされて、選択されたアーキテクチャのためのファームウエアを生成することが可能である。システムは、ファームウエアのサイクル精度のシミュレーションを実行することが可能である。アーキテクチャは、プロファイリングが行なわれたファームウエアおよび／またはアッセンブリ・コードに基づいて最適化が行われることが可能である。システムは、選択されたアーキテクチャのために、したがって、タイミング、面積、または電力に関して最適化された物理設計のために、レジスタ・トランスファ・レベルのコードを生成することが可能である。システムは、ＲＴＬコードを合成することが可能である。
【０００９】
好ましい実施態様の利点には、次に示す内容のうちの１つまたは複数が含まれる。静的な電力は、アーキテクチャ上の見通しからコントロールされることが可能である。このことは、チップ設計者に、消費される電力のより良好な取り扱いを前もって知らせることになり、さらには電力関連のスケジュール遅延を回避させることにもなる。
【図面の簡単な説明】
【００１０】
【図１】図１は、アプリケーション・コードに応答して自動的に設計された特定用途向け集積回路（ＡＳＩＣ）のために電力を自動的に管理するシステムの一例を示した説明図である。
【図２】図２は、多様なプロセッサ・ブロック利用度のプロファイルの一例を示した説明図である。
【図３】図３は、図２のプロファイルを伴う特定のアプリケーション・コードの一例またはアルゴリズムのためにカスタム生成されたアーキテクチャの一例を示した説明図である。
【図４】図４は、プロセッサ・アーキテクチャの物理実装の一例を示した説明図である。
【図５】図５は、アーキテクチャ・レベルのホヮット‐イフ・インクリメンタル・コスト推定データ・モデル（ＷＩＣＥ‐ＤＭ）の一例を示した説明図である。
【図６】図６は、アーキテクチャ・ベースの電力管理を伴うカスタムＩＣを自動的に生成するシステムの一例を示した説明図である。
【発明を実施するための形態】
【００１１】
図１は、アプリケーション・コードに応答して自動的に設計された特定用途向け集積回路（ＡＳＩＣ）のために電力を自動的に管理するシステムの一例を示している。図１においては、このシステムに、入力としてアプリケーション・コードまたはアルゴリズム１０が提供される。アプリケーション・コードは、コンパイラ２０に与えられ、それがファームウエア３０を生成する。ファームウエア３０は、プロファイラ４０によって分析される。プロファイラの出力は、機能ブロック利用度統計モジュール５０に提供される。それの結果が電力ゲーティング・ジェネレータ６０に提供され、電力ゲーティング・ジェネレータ６０の出力は、ＳＡＭＡ（システム、アーキテクチャおよびマイクロアーキテクチャ）ブロック７０に提供される。ＳＡＭＡブロック７０は、高レベルの軽量アブストラクト・モデルを生成するが、これは、アーキテクチャ・オプティマイザが、ＳＡＭＡブロック７０内に記述された新しいアーキテクチャを最適化し、かつ生成することを可能にする。ＳＡＭＡブロック７０は、ＡＳＩＣの機能的および物理的なモデルが統一された拡張モデルであるデータ・モデル（ＤＭ）に対して情報を提供する。ＤＭは、ＡＳＩＣの、たとえば加算器、乗算器等といった物理プリミティブ情報を受け取る。ファームウエアのプロファイルは、アーキテクチャ・オプティマイザにフィードバックされ、とりわけ電力、サイズ、速度等のあらかじめ決定済みの物理的な制約に基づいてＡＳＩＣ設計の最適化が行なわれる。ＤＭは、これらの制約に従ったＲＴＬコードを生成し、アーキテクチャ・オプティマイザに提供されるタイミング、面積、電力フィードバック情報とともに物理設計に到達することが可能である。ＳＡＭＡブロック７０については、本願と同日に出願された出願人を共通とする係属中の出願の中でより詳細に述べられており、それによって参照される内容が、本願に援用される。
【００１２】
図１のシステムは、電力ゲーティングを通じて静的な電力消費を最小化する。通常、供給電圧が高く、トランジスタの切り換えが高速なほど、より電力が高い。したがって、デバイスの異なる領域での電圧供給をコントロールすることによって、電力とパフォーマンスのトレードオフを行なうことが可能である。また、必要とされていない特定のロジックについて、システムが電力ゲート標準セル、または電力ゲーティングを通じて電力供給を切り離すことも可能である。図１のシステムは、アルゴリズムまたはコード・プロファイルに基づいて、ほかの機能が使用されている間に、チップの種々のセクションが小さな時間窓にわたって使用されていない状態になる時期を決定する。たとえば、ＤＳＰチップでは、ＦＩＲフィルタにおいてＭＡＣ（積和演算ユニット）が使用されている間にＡＬＵ（算術ロジック・ユニット）が使用されないことがあり得る。電力ゲーティング・ジェネレータ６０は、１つの例において、コードの挙動を生かして、ＡＬＵロジックに対する電力グリッドを遮断することが可能である。
【００１３】
図２は、多様なプロセッサ・ブロック利用度のプロファイルの一例を示している。このプロファイルは、図１のシステムに対して電力管理を提供する上で使用される。この例では、コード・プロファイルが、浮動小数点ユニット（ＦＰＵ）が散発的に期間４００、４１０、および４２０において使用されることを示している。またこのプロファイルは、加算器が、期間４５０の間にわたって使用され、その期間が期間４００、４１０、および４２０よりはるかに長いことも示している。このブロック利用度統計に基づけば、加算器は非常に頻繁に使用されていることから、それが、分離される電力ドメインの候補になることはないが、ＦＰＵについては、長い休止期間にわたる間、ＣＰＵの電力のゲーティングを行って電力消費量を減少させ、エネルギを節約することが可能となるように、電力ゲーティング付きの新しい電力ドメインを作り出すことが可能である。
【００１４】
図３は、図２のプロファイルを伴う特定のアプリケーション・コードの一例またはアルゴリズムのためにカスタム生成されたアーキテクチャの一例を示している。このアーキテクチャにおいて、インストラクション・フェッチ（ＩＦ）ユニット１１０は、インストラクション・デコーダ１２０にインストラクションを提供する。インストラクションは、デコーダ１３０によってデコードされ、多様な汎用レジスタ１４０にアクセスする。オペランド・フェッチ・ユニット１５０は、これらのレジスタから、またはメモリからのデータをフェッチすることが可能である。加算器１６０は、加算および減算を行なうことが可能であり、浮動小数点ユニット（ＦＰＵ）１７０は、浮動小数点演算を扱うことが可能である。実行ユニット１８０は、インストラクションを実行することができる。
【００１５】
設計されているＩＣ内において、デバイスのある部分は常時オンの電力供給を有することが許容され、別の部分は、プログラムに従って遮断することができるコントロール可能な電力供給を有することが許容される。１つの利点は、電源とグラウンドの間の差がほぼゼロになることから漏れ電力が効果的に低減されることである。アルゴリズムの特定の要求に対する情報を使用し、図１のシステムは、ＩＣの特定部分への電力供給を完全にオフにする電力ゲーティングを提供する。また、電力をオンにするプロセスもまた、電力消費量を減少させている回路が電力投入されるときの『突入』電流の可能性を回避するべく慎重にシーケンシングが行なわれる。さらに、種々のボルテージアイランド内にドライバ‐負荷のペアが存在することがあり、スパイクおよびそのほかの過渡状態を最小化するべくそれらの関係がコントロールされる。
【００１６】
電力ゲーティングがシームレスに作動することを可能にするために、アーキテクチャ上の電力特徴を使用して静的な電力がコントロールされる。過去においては、チップ内の電力節約の特徴は、チップの多様なセクションの電力消費量が減少される『休止』、『スリープ』、および『停止』モード等の基本モードに限定されていた。しかしながら、スマート‐フォン等の新しい応用においてますます増加するパフォーマンス要件にあっては、活動を伴うことなくチップを休止させることは稀である。したがって、チップのいくつかの部分が常時アクティブであることから、これらの伝統的な電力モードのアクティブ化が可能になることはあまり一般的でない。
【００１７】
この例においては、図２のプロファイルに基づいて、ＦＰＵがそれ独自の電力ドメインＶＤＤ２に割り当てられることになり、ブロックの残りの部分が電力ドメインＶＤＤ１から電力供給されることをアーキテクチャ・オプティマイザが決定する。図１のシステムは、１つの実施態様において、インストラクション・デコーダ１２０を通じて電力ゲーティング・コントロール・ビットを自動的に生成する。インストラクション・デコーダ１２０は、アルゴリズムまたはコードのプロファイルに基づいて、特定の電力ドメインの電力消費量をいつ増加させるか、またはいつ減少させるかについて決定する電力ゲーティング・コントロール・ビットのストリームを生成する。
【００１８】
図４は、プロセッサ・アーキテクチャの実装の一例を示している。この実施態様においては、パイプライン段２００、２２０、および２７０が提供される。組み合わせロジック２１０をパイプライン段２００と２２０の間に位置決めすることが可能であり、ロジック２１０から継続的に静的な電力が流出される。組み合わせロジック２１０の電力消費を最小化するためにできることはなにもない。しかしながら、ＦＰＵ  ２３０、乗算器２４０、および加算器２５０については、それぞれを別々の電力バス上、またはドメインに置き、ゲーティング・コントローラ２６０として作用するインストラクション・デコーダによってゲーティングされるようにすることが可能である。
【００１９】
図４のシステムにおいては、ハードウエアの各機能ユニットおよびスレッドが、別々の電力コントロール・システムを有することができる。このシステムは、インストラクション・コードによってコントロールされ、したがって、動的にコントロールすることが可能である。またこの情報は、同一の電力コントロール・メカニズムを伴う異なるセクションを、単一の電力ゲーティング・メカニズムがそれらのロジックのための電力をオフにする方法で配置し、かつ配線することが可能となるように、プレイス・アンド・ルート・プロセスにも入力される。
【００２０】
１つの実施態様においては、システムが、異なる機能ブロックの利用度を時間の関数として知的に追跡する。こうして推測されて、異なる機能ブロックの電力が遮断されることになる。それらの機能ブロックの使用が必要となるインストラクションを伴うプログラム・フローが生じた場合には、ハードウエアが、それらの機能ブロックのための電力を自動的にオンに切り換える。したがって、プログラマが電力コントロール・システムの詳細な管理に関わることがなくなり、したがってそのことがシステムを使用することを容易にする。
【００２１】
図１は、カスタムＩＣを自動的に生成するシステムの一例を示している。図６のシステムは、選択された目標とするアプリケーションに対するプログラマブルハードウエア・ソリューションのために、インストラクション・セット圧縮および可変幅エンコーディングを使用する最適インストラクション・セットを伴うアーキテクチャを自動的に生成することをサポートする。目標とするアプリケーションの仕様は、一般に、Ｃ、ＭＡＴＬＡＢ（マトラボ）、ＳｙｓｔｅｍＣ（システムＣ）、フォートラン、エイダ等の高水準言語またはそのほかのいずれかの言語によるコンピュータ可読コードとして表現されたアルゴリズムを通じてなされる。仕様は、目標とするアプリケーションの記述を含み、またそれには、望ましいコスト、面積、電力、速度、パフォーマンス、およびそのほかのハードウエア・ソリューションの属性といった１つまたは複数の制約も含まれる。
【００２２】
図５は、アーキテクチャおよびマイクロ‐アーキテクチャ・レベルのインクリメンタル・ホヮット‐イフ分析のための物理設計（ＰＤ）モデル・ベースの面積、電力、および遅延コスト推定についてのデータ・フローを示している。図５を参照すると、ｉ回の繰り返しの後に、次のＳＡＭＡ  ｉ＋１が、５０２において、次の繰り返しへの入力として使用される。したがって、第ｉ回のＳＡＭＡは、５０４において更新される。５０４におけるＳＡＭＡは、５０６においてＣＡシミュレータに、５１０においてアーキテクチャ・オプティマイザに、提供される。ＡＯ  ５１０は、コスト関数クエリＡＰＩ  ５１２を通じて通信する。ＳＡＭＡは、ＳＡＭＡリーダＡＰＩ  ５１４を通じて通信する。ＣＡｓｉｍは、プロファイル・データ・リーダＡＰＩ  ５１６を通じてプロファイル情報を送る。
【００２３】
ＳＡＭＡリーダＡＰＩ  ５１４は、アーキテクチャ設計状態（ＭＡＭＬ‐ＨＧ）５１８に、アーキテクチャおよび合成情報を伝達する。コスト関数クエリＡＰＩ  ５１２は、評価コンテキスト管理５１５に情報を提供し、続いてそれが、ＭＡＭＬ‐ＨＧ  ５１８に情報を提供する。コンテキスト管理５１５は、評価コンテキスト物理設計モデル５３０の形成に使用することが可能である。コンテキスト管理５１５は、ベースラインからの提案された設計の修正の記録を保持している。コスト評価の初期段階の間には、多くの変更が確定されることなく提案される。確定されたコンテキストは、ベースライン設計の一部になる（ＳＡＭＡファイルの更新）。
【００２４】
ＭＡＭＬ‐ＨＧ  ５１８は、多レベルのＸ階層マネージャ５２０に対して多レベルのハイパーグラフ・データ構造を提供する。続いてマネージャ５２０が多様なビューを、とりわけブラック‐ボックス・ビュー５２２、カスタム多分解能階層的ビュー５２４、および完全に合成可能なネットリスト・ビュー５２６を含む多様なビューを提供する。これらのビュー５２２乃至５２６は、ベースラインの物理設計モデル５２８の形成に使用することが可能である。
【００２５】
モデル５２８乃至５３０は、とりわけ電力ホット‐スポット推定エンジン５４０、遅延およびタイミング推定エンジン５４２、および面積推定エンジン５４４によって使用されることが可能である。電力ホット‐スポット推定エンジン５４０は、ＭＡＭＬ‐ＨＧ  ５１８から推定による作動係数（ＡＦｓ）を受け取ることが可能である。エンジン５４０乃至５４４からのデータは、分析情報マネージャ５５０に提供され、それがコスト関数クエリＡＰＩ  ５１２を介してＡＯ  ５１０にフィードバックを提供する。
【００２６】
次に、１つのＡＰＩの例について、より詳細に考察する。
コスト関数推定（ＣＦＥ）ＡＰＩ。
ｂｏｏｌｅａｎ  ｄｅｆｉｎｅ＿ｃｏｎｔｅｘｔｃｏｎｔｅｘｔ＿ｎａｍｅ  ｛ｃｈａｎｇｅ＿ｌｉｓｔ｝
ｂｏｏｌｅａｎ  ｓｅｔ＿ａｃｔｉｖｅ＿ｃｏｎｔｅｘｔ  ｃｏｎｔｅｘｔ＿ｎａｍｅ
ｒｅｓｐｏｎｓｅ＿ｔｙｐｅ  ｃｏｍｐｕｔｅ＿ｄｅｌａｙ  ｛ｐａｔｈ｜ｗｈｏｌｅ＿ｃｈｉｐ｝
ｒｅｓｐｏｎｓｅ＿ｔｙｐｅ  ｃｏｍｐｕｔｅ＿ａｒｅａ  ｃｏｍｐｏｎｅｎｔ
ｂｏｏｌｅａｎ  ｃｏｍｍｉｔ＿ｃｏｎｔｅｘｔ  ｃｏｎｔｅｘｔ＿ｎａｍｅ  ‐ｏｕｔｆｉｌｅＮａｍｅ  ｓａｍａ＿ｉ．ｔｘｔ
【００２７】
「ｒｅｓｐｏｎｓｅ＿ｔｙｐｅ」は、以下の情報を含む。
●  相対的コスト（遅延、面積、電力等、実際のクエリに依存する）
○  定性（改善、有意の影響なし、低下）
○  定量（定性的変化のヒューリスティックな測度）
●  補足的な物理設計の最適化を伴う条件付きコスト（ＳＰＤＯ）
○  補足的なＰＤ最適化ＩＤ（将来的な参照のための内部のブック‐キーピングＩＤ）
○  ＷＡが受け入れられた場合の新しい相対的コスト
●  信頼区間
○  ０と１の間の値
○  １は、もっとも正確なデータ駆動ツールのフローを伴ってコストが計算されたことを意味する
○  ０は、コストが大まかに推定されたことを意味し、詳細なコスト分析が実行された場合には大きく異なる可能性が非常に高い。
【００２８】
補足的な最適化提案（ＩＤによってインデクスされる）を提供する能力は、物理設計の最適化を向上させ、アーキテクチャの最適化がまだ処理中であり、最適化が完了していないときにはＡＯに影響を与える。標準的な工業フローにおいては、アーキテクチャの最適化が完了するまで物理設計の最適化が行なわれない。システムは、物理的な合成が可能であると考えられる最適化をＡＯが選択することを可能にするが、ＡＯに、この最適化がどのように達成されるべきかについての詳細を理解することは求めない。その後、データ・モデルが、実際の実装のために物理的な合成を適切に構成する。このメカニズムは、ＡＯが、単なる直ちに計算されたコスト関数ではなく、広範囲にわたって変化する最適化の結果を考慮することを可能にし、したがって、より良好な設計に収束することを可能にする。
【００２９】
別のＡＰＩの例は、次のようなパス作動プロファイルである。
パス・プロファイル（ＰＰ）ＡＰＩ
ｓｅｔ＿ｐａｔｈ＿ｌｉｋｅｌｉｈｏｏｄ  ｐａｔｈ  ａｃｔｉｖｉｔｙ＿ｆａｃｔｏｒ
【００３０】
パス作動係数は、そのパスが用いられる確率または尤度である。この情報は、サイクル精度のシミュレータから利用することが可能である（第１ページの図解１参照）。ＷＩＣＥ‐ＤＭは、この情報を、物理設計のモデリングから獲得されたパスのトポロジ情報と統合する。その結果として、それが、物理設計の各単位面積についての電力利用度の見積を生成する。続いてこれが、電力ホット‐スポット情報を提供し、その後それは、フィードバックとしてリソース制約の形式でインストラクション・スケジューラに提供されることが可能である。このフィードバックの正味の効果は、（ａ）潜在的なタイミングおよびそのほかの信号品質の問題が回避されるようにインストラクションがスケジュールされること、および（ｂ）電力の散在、クロック・ゲーティングまたはそのほかの技術を用いて電力ホット‐スポットの近隣となる必要がある構成要素を組み込むことが可能となり、かつその種の即席処理の面積／タイミングのコストが直ちに利用可能となることである。
【００３１】
図５の１つの実施態様においては、アーキテクチャ・レベルの情報が、通常は物理的な合成に利用可能でない情報を渡すべく、ネットリスト・ファイル内にエンコーディングされる。たとえば、階層名には、その階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクス・タグを含めることができる。この情報は、ツール・チェーン・キャパシティの向上に帰する物理的な分割を行う点でより積極的な決定を行なうために有用であり、この結果、より高速なターン・アラウンド時間を実現できる。インスタンスの名前にもまた、アーキテクチャ・レベルのモデルが、これを実在のクリティカル・パスのためのありえる経路として見るか否かを示す特定のプレフィクス／ポストフィクスを含めることができる。物理的な合成は、正しいものが発見されるまで正しくないものを徐々に除いていくのではなく、実在のクリティカル・パスに対する『ルック・アヘッド』を行なうことが可能である。これは、望ましくない最適化（ほかのコスト増加を導く過剰な最適化）を除去し、ターン・アラウンド時間を節約する。別の例として、特定のマクロ・ブロックに、配置制約（とりわけアレイの配置等）を示す名前を付けることができ、それが、一度目で最適タイミングを達成することの補助となる。ネットリスト・ファイルに『側波帯』情報をエンコーディングすることに加えて、図５のフローは、オリジナルのユーザ制約のみで生成するより、物理的な合成を導出する上でより生産的な（物理的はもとよりタイミングの）設計制約を生成することも可能である。いくつかの場合においては、その種の制約は、ネットリストのインスタンス名設定スキームを通じた『暗黙的』なものである。
【００３２】
図６においては、ＩＣカスタマがプロダクト仕様１０２を生成する。通常は、所望のプロダクトのすべての主要機能を取り込んだ初期プロダクト仕様が存在する。そのプロダクトから、アルゴリズムの専門家がそのプロダクトに必要とされるコンピュータ可読コードまたはアルゴリズムを識別する。それらのアルゴリズムのうちのいくつかは、サードパーティから、または標準開発委員会からのＩＰとして利用可能となることがある。それらのうちのいくつかは、製品開発の一部として開発されなければならない。この態様においては、さらにプロダクト仕様１０２が、とりわけＣプログラム等のプログラムまたはＭＡＴＬＡＢ（マトラボ）モデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム１０４で詳述される。プロダクト仕様１０２は、また、とりわけコスト、面積、電力、プロセス・タイプ、ライブラリ、およびメモリ・タイプ等の要件１０６も含んでいる。
【００３３】
コンピュータ可読コードまたはアルゴリズム１０４および要件１０６は、自動化されたＩＣジェネレータ１１０に提供される。コードまたはアルゴリズム１０４およびチップ設計に課せられた制約だけに基づいて、ＩＣジェネレータ１１０は、人間の掛かり合いを殆ど、またはまったく伴うことなく、ＧＤＳファイル１１２、ＩＣを実行させるファームウエア１１４、ソフトウエア開発キット（ＳＤＫ）１１６、および／またはテスト・スート１１８を含む出力を自動的に生成する。ＧＤＳファイル１１２およびファームウエア１１４は、カスタム・チップ１２１の製造に使用される。
【００３４】
このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。このシステムは、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、アルゴリズムが、そのアプリケーションのために特に最適化されたプロセッサ上において実装されることが常に可能となる。システムは、この最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。この全体的なプロセスは、現在数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。要約して言えば、このシステムは、プロダクト開発のデジタル・チップ設計部分をブラック・ボックス化する。
【００３５】
１つの実施態様においては、このシステム・プロダクトが、次に示すものを入力として取ることが可能である。
Ｃ／ＭＡＴＬＡＢ（マトラボ）で定義されたコンピュータ可読コードまたはアルゴリズム、
必要とされる周辺機器、
面積目標、
電力目標、
マージン目標（将来的なファームウエア更新のためにどの程度のオーバーヘッドを組み込むべきか、またどの程度複雑性が増加するか）、
プロセスの選択肢、
標準セル・ライブラリの選択肢、
テスト可能性スキャン
【００３６】
システムの出力は、関連付けされるファームウエアすべてを伴ったデジタル・ハード・マクロとすることができる。このデジタル・ハード・マクロのために最適化されたソフトウエア開発キット（ＳＤＫ）もまた自動的に生成されて、ファームウエアに対する将来的なアップグレードがプロセッサの交換を強いることなく実装されるようにすることが可能である。
【００３７】
このシステムは、選択された目標とするアプリケーションに対して完全かつ最適なハードウエア・ソリューションを自動的に生成する。共通の目標とするアプリケーションは埋め込みアプリケーション空間内にあるが、それらは、必ずしもそれに限定されない。
【００３８】
次に、例として、自動化されたチップ設計システムをサポートするコンピュータについて考察する。コンピュータは、好ましくは、プロセッサ、ランダム・アクセス・メモリ（ＲＡＭ）、プログラム・メモリ（好ましくは、フラッシュＲＯＭ等の書き込み可能な読み出し専用メモリ（ＲＯＭ））、および入力／出力（Ｉ／Ｏ）コントローラをＣＰＵバスによって結合された形で含んでいる。このコンピュータは、ハードディスクおよびＣＰＵバスに結合されるハード・ドライブ・コントローラをオプションとして含むことができる。ハードディスクは、本発明等のアプリケーション・プログラムおよびデータを記憶するために使用することができる。それに代えて、アプリケーション・プログラムをＲＡＭまたはＲＯＭ内に記憶することができる。Ｉ／Ｏコントローラは、Ｉ／Ｏバスを経由してＩ／Ｏインターフェースに結合される。Ｉ／Ｏインターフェースは、シリアル・リンク、ローカル・エリア・ネットワーク、無線リンク、およびパラレル・リンク等の通信リンクを介してアナログまたはデジタル形式でデータの受信および送信を行なう。オプションとして、表示器、キーボード、およびポインティング・デバイス（マウス）がＩ／Ｏバスに接続されることもある。それに代えて、Ｉ／Ｏインターフェース、表示器、キーボード、およびポインティング・デバイスのために別々の接続（別々のバス）が使用されることもある。プログラマブル処理システムは、あらかじめプログラムすること、または別のソース（たとえば、フロッピー（登録商標）ディスク、ＣＤ‐ＲＯＭ、または別のコンピュータ）からプログラムをダウンロードすることによってそれをプログラムすること（および再プログラムすること）ができる。
【００３９】
各コンピュータ・プログラムは、目に見える形として、コンピュータによってストレージ媒体またはデバイスが読み出されたときに、ここで説明している手順を実行するべくそのコンピュータの構成および動作のコントロールを行なうために、汎用または専用プログラマブル・コンピュータによって読み出されることが可能なマシン可読ストレージ媒体またはデバイス（たとえば、プログラム・メモリまたは磁気ディスク）内に記憶される。また本発明のシステムは、コンピュータ・プログラムを用いて構成されるコンピュータ可読ストレージ媒体内において具体化されると考えてもよく、それにおいてストレージ媒体は、ここで述べている機能を実行するべく特定の、あらかじめ定義済みの態様でコンピュータを動作させるように構成される。
【００４０】
以上、ここでは、特許法に従うため、および当業者に、新しい原理の適用および必要とされる専用の構成要素の組み立ておよび使用に必要となる情報を提供するために、相当に詳細に本発明を説明してきた。しかしながら、本発明が明確に異なる装置およびデバイスによって実行可能であること、および装置の詳細および動作手順の両方に対する多様な修正が本発明自体の範囲からの逸脱なしに達成可能であることは理解されるものとする。
【符号の説明】
【００４１】
１０  アプリケーション・コードまたはアルゴリズム
２０  コンパイラ
３０  ファームウエア
４０  プロファイラ
５０  機能ブロック利用度統計モジュール
６０  電力ゲーティング・ジェネレータ
７０  ＳＡＭＡブロック
１０２  プロダクト仕様
１０４  コンピュータ可読コードまたはアルゴリズム
１０６  要件
１１０  インストラクション・フェッチ・ユニット、ＩＦユニット、ＩＣジェネレータ、自動化されたＩＣジェネレータ
１１２  ＧＤＳファイル
１１４  ファームウエア
１１６  ソフトウエア開発キット、ＳＤＫ
１１８  テスト・スート
１２０  インストラクション・デコーダ
１２１  カスタム・チップ
１３０  デコーダ
１４０  汎用レジスタ
１５０  オペランド・フェッチ・ユニット
１６０  加算器
１７０  浮動小数点ユニット、ＦＰＵ
１８０  実行ユニット
２００  パイプライン段
２１０  組み合わせロジック、ロジック
２２０  パイプライン段
２３０  ＦＰＵ
２４０  乗算器
２５０  加算器
２６０  ゲーティング・コントローラ
２７０  パイプライン段
４００  期間
４１０  期間
４２０  期間
４５０  期間
５１０  ＡＯ
５１２  コスト関数クエリＡＰＩ
５１４  ＳＡＭＡリーダＡＰＩ
５１５  評価コンテキスト管理
５１６  プロファイル・データ・リーダＡＰＩ
５１８  アーキテクチャ設計状態、ＭＡＭＬ‐ＨＧ
５２０  多レベルのＸ階層マネージャ
５２２  ブラック‐ボックス・ビュー
５２４  カスタム多分解能階層的ビュー
５２６  ネットリスト・ビュー
５２８  ベースラインの物理設計モデル
５３０  評価コンテキスト物理設計モデル
５４０  電力ホット‐スポット推定エンジン
５５０  分析情報マネージャ
【図１】
2013538386.tif 000003
【図２】
2013538386.tif 000004
【図３】
2013538386.tif 000005
【図４】
2013538386.tif 000006
【図５】
2013538386.tif 000007
【図６】
2013538386.tif 000008
【国際調査報告】
2013538386.tif 000009