(57)【要約】コンピュータ可読コードを含むカスタム集積回路の仕様を受け取り、かつそのコンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、そのコンピュータ可読コードに対して独特のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数のインストラクションを実装する１つまたは複数の処理ブロックを有するプロセッサ・アーキテクチャを自動的に生成し、上記のコード・プロファイルに基づいてインストラクション実行シーケンスを決定し、かつそのインストラクション・シーケンスの再割り当てを行なってホット−スポットを低減するべくＩＣ上の異なるブロックに動作を分散させ、生成されたプロセッサ・チップ仕様を、半導体製造のために、カスタム集積回路のコンピュータ可読記述に合成する、ことによってカスタム集積回路を自動的に合成するシステムおよび方法が開示されている。
2013540295.tif 000002
【特許請求の範囲】
【請求項１】
カスタム集積回路（ＩＣ）設計において電力を管理する方法であって、
ａ．  コンピュータ可読コードを含む前記カスタム集積回路の仕様を受け取り、かつ前記コンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、
ｂ．  前記コンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数のインストラクションを実行する前記ＩＣ上に１つまたは複数の処理ブロックを有するプロセッサ・アーキテクチャを自動的に生成し、
ｃ．  前記コード・プロファイルに基づいてインストラクション実行シーケンスを決定し、かつ前記インストラクション・シーケンスの再割り当てまたは遅延を行なって、ホット−スポットを低減するべく前記処理ブロックにわたって動作または活動を分散させ、
ｄ．  生成された前記アーキテクチャを、半導体製造のために、前記カスタム集積回路のコンピュータ可読記述に合成する、
方法。
【請求項２】
各マシン・インストラクションはハードウエア実行パスと関連付けされており、データ・モデル内において、可能性のある実行パスおよび関連付けされたインストラクションの記録を保持する、請求項１に記載の方法。
【請求項３】
前記データ・モデルは、前記マシン・インストラクションの統計的プロファイルを受け取り、任意の所定サイクル内におけるインストラクションの実行の定常状態確率を抽出する、請求項１に記載の方法。
【請求項４】
前記データ・モデルは、各インストラクション実行パスのための推定による位相幾何学的レイアウトを作り出す、請求項１に記載の方法。
【請求項５】
あらかじめ決定済みのプロトコルに基づいて１つまたは複数の物理設計モデルを使用する前記レイアウトを推定し、物理設計のモデリングのために必要とされるアブストラクションのあらかじめ決定済みのレベルを選択する、請求項４に記載の方法。
【請求項６】
前記データ・モデルは、インストラクションの実行の定常状態確率を実行パスのトポロジと関連付けする、請求項１に記載の方法。
【請求項７】
前記データ・モデルからレイアウトの部分領域を作り出し、各部分領域が、部分領域の重みを決定する１つまたは複数の実行パスの確率をもたらす交差する実行パスの集まりを決定する、請求項６に記載の方法。
【請求項８】
部分領域の重み分布を適用して電力ホット−スポットの部位を推定する、請求項７に記載の方法。
【請求項９】
前記データ・モデルを適用して、実行パスが電力ホット−スポットと交差する影響を受けるインストラクションを識別する、請求項１に記載の方法。
【請求項１０】
仮想制限容量リソースとして電力ホット−スポット領域のモデリングを行なう、請求項９に記載の方法。
【請求項１１】
前記データ・モデルを通じ、コンパイラのインストラクション・スケジューラに対する前記制限容量リソースに依存して影響を受けるインストラクションが提供される、請求項９に記載の方法。
【請求項１２】
インストラクション・スケジューラの最適化は、１つまたは複数のパフォーマンス・コスト関数とともに前記制限容量リソースが考慮され、前記ＩＣのための電力ホット−スポットおよびパフォーマンスを同時に最適化する、請求項１１に記載の方法。
【請求項１３】
前記プロファイルから機能ブロック利用度の統計を生成する、請求項１に記載の方法。
【請求項１４】
異なる処理ブロックの利用度を時間の関数として追跡する、請求項１３に記載の方法。
【請求項１５】
１つまたは複数の処理ブロックのための電力を推測して遮断し、電力を遮断した処理ブロックを自動的に必要時にオンに切り換える、請求項１に記載のシステム。
【請求項１６】
インストラクション・デコーダを使用して、各電力ドメインに対して電力がいつ印加されるべきかを決定する、請求項１に記載の方法。
【請求項１７】
前記コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを実行して処理ブロックの利用度を決定する、請求項１に記載の方法。
【請求項１８】
前記コンピュータ可読コードを走らせる前記カスタム集積回路のためのファームウエアまたはソフトウエア開発キット（ＳＤＫ）を自動的に生成する、請求項１に記載の方法。
【請求項１９】
前記コンピュータ可読コードをアッセンブリ・コードにコンパイルし、前記アッセンブリ・コードをリンクして選択された前記アーキテクチャのためのファームウエアを生成し、かつ前記ファームウエアのサイクル精度のシミュレーションを実行する、請求項１に記載の方法。
【請求項２０】
カスタム集積回路（ＩＣ）設計において電力を管理する方法であって、
ａ．  コンピュータ可読コードを含む前記カスタム集積回路の仕様を受け取り、かつ前記コンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、
ｂ．  前記コンピュータ可読コードに対して独特のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数のインストラクションを実装する１つまたは複数の処理ブロックを有するプロセッサ・アーキテクチャを自動的に生成し、
ｃ．  前記コード・プロファイルに基づいてインストラクション実行シーケンスを決定し、前記処理ブロックの空間的な割り当てを行なってホット−スポットを低減するべく前記ＩＣ上の異なるエリアに対して動作または活動を分散し、
ｄ．  生成された前記アーキテクチャを、半導体製造のために、前記カスタム集積回路のコンピュータ可読記述に合成する、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（相互に参照される出願）
出願人を共通とする、同日に出願された米国特許出願第１２／８３５，６０３号『アルゴリズムおよび仕様に基づく自動最適集積回路ジェネレータ（ＡＵＴＯＭＡＴＩＣ  ＯＰＴＩＭＡＬ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ  ＧＥＮＥＲＡＴＯＲ  ＦＲＯＭ  ＡＬＧＯＲＩＴＨＭＳ  ＡＮＤ  ＳＰＥＣＩＦＩＣＡＴＩＯＮ）』、米国特許出願第１２／８３５，６２１号『アルゴリズムおよび仕様に基づく自動最適集積回路ジェネレータ（ＡＵＴＯＭＡＴＩＣ  ＯＰＴＩＭＡＬ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ  ＧＥＮＥＲＡＴＯＲ  ＦＲＯＭ  ＡＬＧＯＲＩＴＨＭＳ  ＡＮＤ  ＳＰＥＣＩＦＩＣＡＴＩＯＮ）』、米国特許出願第１２／８３５，６２８号『駆動電力ゲーティングの応用（ＡＰＰＬＩＣＡＴＩＯＮ  ＤＲＩＶＥＮ  ＰＯＷＥＲ  ＧＡＴＩＮＧ）』、米国特許出願第１２／８３５，６３１号『集積回路におけるシステム、アーキテクチャおよびマイクロアーキテクチャ（ＳＡＭＡ）表現（ＳＹＳＴＥＭ，  ＡＲＣＨＩＴＥＣＴＵＲＥ  ＡＮＤ  ＭＩＣＲＯ‐ＡＲＣＨＩＴＥＣＴＵＲＥ  （ＳＡＭＡ）  ＲＥＰＲＥＳＥＮＴＡＴＩＯＮ  ＯＦ  ＡＮ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ）』、および米国特許出願第１２／８３５，６４０号『アーキテクチャ・レベルの省電力指向の最適化およびリスク軽減（ＡＲＣＨＩＴＥＣＴＵＲＡＬ  ＬＥＶＥＬ  ＰＯＷＥＲ‐ＡＷＡＲＥ  ＯＰＴＩＭＩＺＡＴＩＯＮ  ＡＮＤ  ＲＩＳＫ  ＭＩＴＩＧＡＴＩＯＮ）』が相互に関連しており、これらの文献によって参照される内容が、本願に援用される。
【背景技術】
【０００２】
本発明は、アーキテクチャ・レベルの省電力指向の最適化およびリスク軽減のための方法および装置に関する。
【０００３】
電力の分布は、しばしば、製品内において消費される電力のレベルと同程度に重要になる。消費される電力のレベルがより低い場合であってさえ、消費部位が限られたエリア内に位置するときには、その位置で重大な電圧降下を生じさせることがある。続いて、その位置におけるパフォーマンスの低下を生じさせる。これは、電圧降下／ＩＲホット−スポットと呼ばれる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通常、アルゴリズムおよび／またはプロダクト仕様から、アーキテクチャ開発者が、プロダクトをハードウエアおよびソフトウエアに分割することによってアーキテクチャを開発する。続いて設計者が、レジスタ・トランスファ言語（ＲＴＬ）コード等の中間コードにそのアーキテクチャを翻訳する。その後、フロア・プランニングが行なわれ、そこで初めてＩＣレイアウトの生成が可能になる。レイアウトの後に、そのレイアウトについてのホット−スポット分析を行なうことが可能になり、ホット−スポット分析が、現在の設計から生じているＩＲホット−スポットが容認可能でないことを示している場合には、ユーザは、すべてのシーケンス、すなわちアーキテクチャ開発、ＲＴＬ、フロア・プランニング、レイアウト、およびホット−スポット分析からなる全シーケンスを再度始める。このプロセスは、非常に長々しくなる可能性があり、かつ設計の複雑性によっては数百万ドルのコストが掛かる可能性がある。
【課題を解決するための手段】
【０００５】
第１の態様においては、コンピュータ可読コードを含むカスタム集積回路の仕様を受け取り、かつそのコンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、そのコンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数のインストラクションを実装する１つまたは複数の処理ブロックを有するプロセッサ・アーキテクチャを自動的に生成し、上記のコード・プロファイルに基づいてインストラクション実行シーケンスを決定し、かつそのインストラクション・シーケンスの再割り当てを行なってホット−スポットを低減するべくＩＣ上の異なるブロックに動作を分散させ、生成されたプロセッサ・チップ仕様を、半導体製造のために、カスタム集積回路のコンピュータ可読記述に合成する、ことによってカスタム集積回路を自動的に合成するシステムおよび方法が開示されている。
【０００６】
別の態様においては、実行シーケンスの再整理を行なってＩＣ上の動作を空間的に分散させることに代えて、プロセスが、コード・プロファイルに基づいてインストラクション実行シーケンスを決定し、かつ処理ブロックの空間的な再割り当てを行なってホット−スポットを低減するべくＩＣ上の異なるエリアに動作を分散させることができる。
【０００７】
上記の態様の実装には、次に示す内容のうちの１つまたは複数が含まれる。このプロセスは、１つ１つのマシン・インストラクションと、オンチップ・ロジックおよび相互接続構造のコレクションである関連付けされたハードウエア実行パスと、を関連付ける。実行パスは、インストラクションのハードウエア「フットプリント」と考えることが可能である。データ・モデルは、可能性のあるすべての実行パスおよびそれらに関連付けされたインストラクションの記録を保持している。データ・モデルは、多様なマシン・インストラクションの統計的プロファイルを受け取り、そこから、任意の所定サイクル内においてインストラクションが実行される定常状態確率を抽出する。データ・モデルは、各インストラクション実行パスに対して推定された位相幾何学的レイアウトを作り出すことが可能である。レイアウトは、物理設計のモデリングのために必要とされる適切なアブストラクション・レベルを選択する、あらかじめ決定済みのプロトコルに基づいた多様な物理設計モデルを使用して推定される。データ・モデルは、インストラクションの実行の定常状態確率を、それの実行パスの位相幾何学的レイアウトと関連付けする。データ・モデルは、レイアウトの部分領域を作り出すが、各部分領域には、部分領域の重みの計算に使用される実行パスの確率の集まりをもたらす、交差する実行パスの集まりが存在する。部分領域の重みの（全領域にわたる）分布は、電力ホット−スポットの部位の推定に使用される。データ・モデルは、影響を受けるインストラクション、すなわち実行パスが電力ホット−スポットと交差するインストラクションを識別する。その後、電力ホット−スポット領域が、仮想の制限容量リソースとしてモデリングされる。データ・モデルは、制限容量リソースに依存して影響を受けるインストラクションを調べるべくコンパイラのインストラクション・スケジューラを調整する。制限容量は、閉じた連続の中でアクティブ化が許されるべき部分領域内の実行パスの数を制限することと解釈される。その種のリソース依存度は、インストラクション・スケジューラのリソース割り付けテーブルに容易に追加することが可能である。その後、このインストラクション・スケジューラの最適化が、前述のように作り出された仮想リソースを、そのほかのパフォーマンス・コスト関数とともに考慮する。したがって、電力およびパフォーマンスが同時に最適化される。システムは、プロファイルから機能ブロック利用度の統計を生成することができる。システムは、時間の関数として、異なる処理ブロックの利用度を追跡することができる。システムは、１つまたは複数の処理ブロックのための電力を推測して遮断することが可能であり、必要時には、電力を遮断した処理ブロックを自動的にオンに切り換えることができる。各電力ドメインに電力がいつ印加されるべきかについては、インストラクション・デコーダが決定することができる。アプリケーション・コードを走らせるカスタムＩＣのためのソフトウエア・ツールは、自動的に生成することが可能である。これらのツールには、コンパイラ、アッセンブラ、リンカ、サイクル−ベースのシミュレータのうちの１つまたは複数が含まれる。ツールは、自動的にファームウエアを生成する。ツールは、ファームウエアのプロファイリングを行なうことが可能であり、ファームウエアのプロファイルを、最適化するアーキテクチャにフィードバックする。コンパイラのインストラクション・スケジューラは、この電力最適化スキームが与えられ、利点を最大化するべくインストラクションの順序をアレンジすることが可能である。システムは、あらかじめ決定済みの物理的な制約に基づいてプロセッサ・アーキテクチャを反復的に最適化することが可能である。システムは、コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを実行することが可能である。システムは、コンピュータ可読コードを走らせるカスタム集積回路のためのソフトウエア開発キット（ＳＤＫ）を自動的に生成することが可能である。コンピュータ可読コードは、アッセンブリ・コードに変換され、かつリンクされて、選択されたアーキテクチャのためのファームウエアを生成することが可能である。システムは、ファームウエアのサイクル精度のシミュレーションを実行することが可能である。アーキテクチャは、プロファイリングが行なわれたファームウエアおよび／またはアッセンブリ・コードに基づいて最適化が行われることが可能である。システムは、選択されたアーキテクチャのために、したがって、タイミング、面積、または電力に関して最適化された物理設計のために、レジスタ・トランスファ・レベルのコードを生成することが可能である。システムは、ＲＴＬコードを合成することが可能である。
【０００８】
好ましい実施態様の利点には、次に示す内容のうちの１つまたは複数が含まれる。静的電力は、アーキテクチャ上の見通しからコントロールすることが可能である。このことは、チップ設計者に、消費される電力のより良好な取り扱いを前もって獲得させることになり、さらには電力関連のスケジュール遅延を回避させることにもなる。システムは、コスト関数の更新を通じて、ホット−スポット管理における予測可能性を改善する。これにより、ホット−スポットによって招かれる部分最適性に関して予期しない事態が発生することを回避することができる。インストラクション・スケジューラにはデータ・モデルを通じて電力利用度が通知され、インストラクションの実行をスケジューリングすることによる真のコストを調べることができ、その結果、チップ上の最小限のホット−スポットを伴った高いパフォーマンスがもたらされる。したがって、このインストラクション・スケジューラが、予測されたホット−スポット情報を使用し、かつこの情報を仮想リソース制約にマップすることが可能であるという点から、このインストラクション・スケジューラは「省電力指向」であり、標準の既製のインストラクション・スケジューラが省電力指向となることが可能となる。
【０００９】
別の態様においては、コンピュータ可読コードおよびカスタム集積回路に対する１つまたは複数の制約を含むカスタム集積回路の仕様を受け取り、コンピュータ可読コードに対して固有のカスタマイズがなされたチップ仕様の物理的な合成のための情報を渡すべく、データ・モデル内においてアーキテクチャ・レベルの知識をエンコーディングし、チップ仕様の物理的な合成およびデータ・モデルの更新を、制約が満たされるまで反復的に実行し、半導体製造のために、チップ仕様のコンピュータ可読記述をカスタム集積回路内に合成する、ことによってカスタム集積回路を自動的に合成するシステムおよび方法が開示されている。
【００１０】
上記の態様の実装には、次に示す内容のうちの１つまたは複数が含まれる。システムは、階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクス・タグを適用することが可能である。アーキテクチャ・レベルの情報からのクリティカル・パスを示すべく、名前に特定のプレフィクス／ポストフィクスをストアすることが可能である。システムは、マクロ・ブロック名、階層名、プラグマ、コメント、ダミー・モジュール、およびラッパー・モジュールのうちの１つを用いて、最適なタイミングを実現するのための配置の制約を示すことが可能である。システムは、以前の繰り返しの中で取り込んだか、またはユーザによって供給された情報を使用して、クリティカル・パスを検出するために先読みを実行することが可能である。制約は、レジスタ・トランスファ言語（ＲＴＬ）の制約、フロア・プランの制約、物理的な制約、タイミングの制約、電力の制約、システム・レベルの制約のうちの１つであるとすることが可能である。制約情報は、とりわけネットリストのインスタンスのネーミング・プロトコルを通じてデータ・モデルに提供することが可能である。
【００１１】
システムの好ましい実施態様の利点には、次に示す内容のうちの１つまたは複数が含まれる。システムは、設計活動のなかでもっとも詳細な技術水準を要する物理的な合成を自動化する。初期の設計段階においては、実在のクリティカル・パスが、解決可能なクリティカル・パスによってマスクされる。システムは、いずれのクリティカル・パスについて最適化を行なうかを自動的に決定し、かつ実在のクリティカル・パスを自動的に明らかにする。システムは、非階層的設計方法および、単一の処理の実行の中で完全な回路を分析する階層的方法を使用する。この包括的アプローチは、設計者およびツールが常時、同一の回路のすべての側面に焦点を当てているため、設計の収束をもたらす。このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻るようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、コンピュータ可読コードまたはアルゴリズムが、それの適用のために特に最適化されたプロセッサ上において実装されることが可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、これまで数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。このシステムは、ハードウエア・チップ・ソリューションが設計される方法におけるパラダイムを完全にシフトするものである。
【００１２】
このシステムは、チップ設計の知識をまったく伴うことなく、アルゴリズム設計者自身が直接ハードウエア・チップを作ることが可能となるように、リスクを取り除き、チップ設計を自動的なプロセスにする。システムへの一次的な入力は、ＣまたはＭＡＴＬＡＢ（マトラボ）等のより高水準の言語で記述されたコンピュータ可読コードまたはアルゴリズム仕様となる。
【００１３】
このシステムを使用する多くの利点のうちのいくつかには、次のようなものが含まれる。
（１）スケジュール：チップ設計サイクルが数年単位ではなく数週単位に落ち着くことになる場合には、このシステムを使用している会社が、自社の製品をすばやく市場に持ち込むことによって急速に変化する市場に浸透することが可能になる。
（２）コスト：一般にチップの実装に使用する必要がある多数の技術者が不必要なものとなる。このことは、このシステムを使用している会社に夥しいコストの節約をもたらす。
（３）最適性：このシステム・プロダクトを使用して設計されたチップは、優れたパフォーマンス、面積、および電力消費を有している。
【００１４】
このシステムは、システムの設計にデジタル・チップ構成要素を有するシステムの設計で使用される方法におけるパラダイムを完全にシフトするものである。このシステムは、Ｃ／ＭＡＴＬＡＢ（マトラボ）で記述されたアルゴリズムからデジタル・ハードウエアを生成する完全に自動化されたソフトウエア・プロダクトである。このシステムは、ＣまたはＭＡＴＬＡＢ（マトラボ）等の高水準言語を採用してハードウエア・チップを実現するプロセスへの独特のアプローチを使用する。要約して言えば、これは、チップ設計を完全に自動化されたソフトウエア・プロセスにする。
【図面の簡単な説明】
【００１５】
【図１】図１は、カスタムＩＣを自動的に生成するシステムの一例を示す。
【図２】図２は、カスタムＩＣを自動的に生成するワークフローの一例を示す。
【図３】図３は、カスタムＩＣを自動的に生成するプロセスの一例を示す。
【図４】図４は、データ・モデルの一例を示す。
【図５】図５は、アーキテクチャ・レベルのホヮット−イフ・インクリメンタル・コスト推定データ・モデル（ＷＩＣＥ−ＤＭ）の一例を示す。
【図６】図６は、設計のフロント−エンド、すなわちこの場合はＷＩＣＥ−ＤＭのフロント−エンドを初期化するプロセスの一例を示す。
【図７Ａ】図７Ａは、最適化ループ・バックを伴う物理的な合成プロセスの一例を示す。
【図７Ｂ】図７Ｂは、最適化ループ・バックを伴う物理的な合成プロセスの一例を示す。
【図８Ａ】図８Ａは、インストラクション実行プロファイルに基づいたインストラクションの発行とパス・エクササイズの間における相関の一例を図解した説明図である。
【図８Ｂ】図８Ｂは、どのようにしてインストラクション・スケジューラがインストラクション実行プロファイルに基づいて電力ホット−スポットを最小化することが可能であるかの一例を図解した説明図である。
【図８Ｃ】図８Ｃは、本発明の１つの態様によるワークフロー・プロセスの一例を示す。
【図９Ａ】図９Ａは、どのようにしてホット−スポットを意識したインストラクション・スケジューラの最適化をデータ・モデルによって達成可能であるかを記述したタスク・レベルのプロセスの一例を示す。
【図９Ｂ】図９Ｂは、どのようにしてホット−スポットを意識したインストラクション・スケジューラの最適化をデータ・モデルによって達成可能であるかを記述したタスク・レベルのプロセスの一例を示す。
【発明を実施するための形態】
【００１６】
図１は、カスタムＩＣを自動的に生成するシステムの一例を示している。図１のシステムは、選択された目標とするアプリケーションに対する最適カスタム集積回路ソリューションを自動的に生成することをサポートする。目標とするアプリケーションの仕様は、一般に、Ｃ、ＭＡＴＬＡＢ（マトラボ）、ＳｙｓｔｅｍＣ（システムＣ）、フォートラン、エイダ等の高水準言語またはそのほかのいずれかの言語によるコンピュータ可読コードとして表現されたアルゴリズムを通じてなされる。仕様は、目標とするアプリケーションの記述を含み、またそれには、望ましいコスト、面積、電力、速度、パフォーマンス、およびそのほかのハードウエア・ソリューションの属性といった１つまたは複数の制約も含まれる。物理的な合成を補助するため、システムは、ネットリスト・ファイルに『側波帯』情報をエンコーディングし、オリジナルのユーザ制約のみで実現されるより、物理的な合成のガイドする上でより生産的な（物理的はもとよりタイミングの）設計制約をファイルに保存することが可能である。起き得る形態においては、その種の制約は、ネットリストのインスタンス名設定スキームを通じた『暗黙的』なものである。
【００１７】
図１においては、ＩＣカスタマがプロダクト仕様１０２を生成する。通常は、所望のプロダクトのすべての主要機能を取り込んだ初期プロダクト仕様が存在する。そのプロダクトから、アルゴリズムの専門家がそのプロダクトに必要とされるコンピュータ可読コードまたはアルゴリズムを識別する。それらのアルゴリズムのうちのいくつかは、サードパーティから、または標準開発委員会からのＩＰとして利用可能となることがある。それらのうちのいくつかは、製品開発の一部として開発されなければならない。この態様においては、さらにプロダクト仕様１０２が、とりわけＣプログラム等のプログラムまたはＭＡＴＬＡＢ（マトラボ）モデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム１０４で詳述される。プロダクト仕様１０２は、また、とりわけコスト、面積、電力、プロセス・タイプ、ライブラリ、およびメモリ・タイプ等の要件１０６も含んでいる。
【００１８】
コンピュータ可読コードまたはアルゴリズム１０４および要件１０６は、自動化されたＩＣジェネレータ１１０に提供される。コードまたはアルゴリズム１０４およびチップ設計に課せられた制約だけに基づいて、ＩＣジェネレータ１１０は、図２のプロセスを使用し、人間の係り合いをまったく伴うことなく、ＧＤＳファイル１１２、ＩＣに実行させるファームウエア１１４、ソフトウエア開発キット（ＳＤＫ）１１６、および／またはテスト・スイート１１８を含む出力を自動的に生成する。ＧＤＳファイル１１２は、カスタム・チップ１２０の製造に使用される。その後ファームウエア１１４が、製造されたこのチップ上で実行されて、カスタマ・プロダクト仕様１０２を実装する。
【００１９】
物理的な合成の間、ＩＣジェネレータ１１０は、ネットリスト・ファイルに『側波帯』情報をエンコーディングする。その後、システムは、物理的な合成のガイドする上での（物理的はもとよりタイミングの）設計制約を適用する。起き得る形態においては、その種の制約は、ネットリストのインスタンス名設定スキームを通じた『暗黙的』なものである。
【００２０】
図１のシステムは、チップ設計の課題を緩和し、それを単純なプロセスにする。このシステムは、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わりに、アルゴリズムが、その適用のために特に最適化されたデジタル・チップ・プロセッサ上において実装されることが常に可能となる。システムは、この最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。この全体的なプロセスは、これまで数年を要する問題として対処されていた事項を、数日の問題として対処することを可能とする。要約して言えば、このシステムは、プロダクト開発のデジタル・チップ設計部分をブラック・ボックス化する。
【００２１】
１つの実施態様においては、このシステム・プロダクトが、次に示すものを入力することが可能である。
Ｃ／ＭＡＴＬＡＢ（マトラボ）で定義されたコンピュータ可読コードまたはアルゴリズム、
必要とされる周辺機器、
ＩＯ仕様、
面積目標、
電力目標、
マージン目標（将来的なファームウエア更新のためにどの程度のオーバーヘッドを組み込むべきか、またどの程度複雑性が増加するか）、
プロセスの選択肢、
標準セル・ライブラリの選択肢、
メモリ・コンパイラの選択肢、
テスト可能性（スキャン、タップ・コントローラ、内蔵セルフ・テスト機能等）。
【００２２】
システムの出力は、関連付けされるファームウエアすべてを伴ったデジタル・ハード・マクロとすることができる。このデジタル・ハード・マクロのために最適化されたソフトウエア開発キット（ＳＤＫ）もまた自動的に生成されて、ファームウエアに対する将来的なアップグレードがプロセッサの交換を強いることなく実装されることが可能である。
【００２３】
図２は、カスタムＩＣを自動的に生成するワークフローの一例を示している。このシステムは、選択された目標とするアプリケーションに対する完全かつ最適なハードウエア・ソリューションを自動的に生成する。共通の目標とするアプリケーションは埋め込みアプリケーション領域内にあるが、それらは、必ずしもそれに限定されない。
【００２４】
図２を参照すると、まずＡＳＩＣカスタマがプロダクト仕様２０２を生成する。プロダクト仕様２０２は、さらに、とりわけＣプログラム等のプログラムまたはＭＡＴＬＡＢ（マトラボ）モデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム２０４で詳述される。プロダクト仕様２０２は、また、とりわけコスト、面積、電力、プロセス・タイプ、ライブラリ、およびメモリ・タイプ等のプロダクト・パラメータおよび要件２０６も含んでいる。コンピュータ可読コードまたはアルゴリズム２０４およびプロダクト・パラメータ２０６は、自動最適インストラクション・セット・アーキテクチャジェネレータ（ＡＯＩＳＡＧ）（２１０）を含む自動化されたＩＣジェネレータ１１０に提供される。ジェネレータ２１０は、自動最適チップ・ジェネレータ（ＡＯＣＨＩＰＧ）２４４を駆動する自動最適ＲＴＬジェネレータ（ＡＯＲＴＬＧ）２４２をコントロールする。ＡＯＣＨＩＰＧ  ２４４は、ネットリスト・ファイルに『側波帯』情報をエンコーディングし、オリジナルのユーザ制約のみで実現されるより、物理的な合成のガイドする上でより生産的な（物理的はもとよりタイミングの）設計制約をファイルに保存することが可能である。起き得る形態においては、その種の制約は、ネットリストのインスタンス名設定スキームを通じた『暗黙的』なものである。
【００２５】
ＡＯＣＨＩＰＧ  ２４４およびＡＯＲＴＬＧ  ２４２の出力は、ＡＯＩＳＡＧ  ２１０のフィードバック・ループ内に提供されている。またＡＯＩＳＡＧ  ２１０は、自動最適ファームウエア・ツール・ジェネレータ（ＡＯＦＴＧ）２４６もコントロールし、それの出力は、自動最適ファームウエア・ジェネレータ（ＡＯＦＧ）２４８に提供される。ＡＯＦＧ  ２４８の出力もまた、ＡＯＩＳＡＧへのフィードバック・ループ内に提供される。
【００２６】
ＩＣジェネレータ１１０は、出力として、ＧＤＳファイル２１２、ＩＣを実行させるファームウエア２１４、ソフトウエア開発キット（ＳＤＫ）２１６を生成する。ＧＤＳファイル２１２およびファームウエア２１４は、カスタム・チップ２２０を製造するＴＳＭＣまたはＵＭＣ等のＩＣ製造器２３０に提供される。
【００２７】
１つの実施態様においては、システムが完全に自動化される。人力の介入または誘導は、まったく必要とされない。このシステムは、最適化されている。ツールが、最適ソリューションを自動的に生成することになる。このほかの実施態様においては、必要であればユーザが間に割り込んで人間による誘導を提供することが可能である。
【００２８】
ＡＯＩＳＡＧ  ２１０は、最適インストラクション・セット・アーキテクチャ（ＩＳＡと呼ばれている）を自動的に生成することが可能である。ＩＳＡは、プログラマブル・ハードウエア・ソリューションの実現に必要とされ、かつ全デジタル・チップ仕様を規定するあらゆる詳細まで定義される。これらの詳細は、次に例として示すファクタのうちの１つまたは複数が含まれる。
（１）インストラクション・セットの機能、エンコーディング、および圧縮、
（２）コ‐プロセッサ／マルチ‐プロセッサ・アーキテクチャ、
（３）スカラー性、
（４）レジスタ・ファイル・サイズおよび幅、アクセス待ち時間およびポート、
（５）固定小数点サイズ、
（６）静的および動的分岐予測、
（７）コントロール・レジスタ、
（８）スタック演算、
（９）ループ、
（１０）サーキュラー・バッファ、
（１１）データ・アドレシング、
（１２）パイプラインの深さおよび機能、
（１３）サーキュラー・バッファ、
（１４）周辺機器、
（１５）メモリ・アクセス／待ち時間／幅／ポート、
（１６）スキャン／タップ・コントローラ、
（１７）専用アクセラレータ・モジュール、
（１８）クロック仕様、
（１９）データ・メモリおよびキャッシュ・システム、
（２０）データ・プリ‐フェッチ・メカニズム、
（２１）プログラム・メモリおよびキャッシュ・システム、
（２２）プログラム・プリ‐フェッチ・メカニズム。
【００２９】
ＡＯＲＴＬＧ  ２４２は、最適ＩＳＡから、レジスタ・トランスファ言語（ＲＴＬ）でのハードウエア・ソリューションの自動生成を提供する自動最適ＲＴＬジェネレータである。ＡＯＲＴＬＧ  ２４２は、完全に自動化されている。人力の介入または誘導は、まったく必要とされない。ツールが、最適ソリューションを自動的に生成することになる。生成されたＲＴＬは合成可能、かつコンパイル可能である。
【００３０】
ＡＯＣＨＩＰＧ  ２４４は、最適ＲＴＬからＧＤＳＩＩハードウエア・ソリューションの自動生成を提供する自動最適チップ・ジェネレータである。ツール２４４は、完全に自動化されている。人力の介入または誘導は、まったく必要とされない。ツールが、最適ソリューションを自動的に生成することになる。生成されたチップは、完全に機能を実現するものであり、かつ修正を伴うことなく標準ＦＡＢを使用して製造することが可能である。
【００３１】
ＡＯＦＴＧ  ２４６は、ハードウエア・ソリューション上におけるファームウエア・コードの開発に必要とされるソフトウエア・ツールを自動的に生成するための自動最適ファームウエア・ツール・ジェネレータである。これは、完全に自動化されている。人力の介入または誘導は、まったく必要とされない。ツールが、最適ソリューションを自動的に生成することになる。コンパイラ、アッセンブラ、リンカ、機能シミュレータ、サイクル精度のシミュレータといった標準ツールを、デジタル・チップ仕様に基づいて自動的に生成することが可能である。ＡＯＦＧ  ２４８は、結果として得られるチップ１２０による実行が必要になるファームウエアの自動生成を実行する自動最適ファームウエア・ジェネレータである。このツールは、完全に自動化されている。人力の介入または誘導は、まったく必要とされない。それに加えて、このツールは、最適ソリューションを自動的に生成することになる。最適化されたリアルタイム・オペレーティング・システム（ＲＴＯＳ）もまた、自動的に生成することが可能である。
【００３２】
チップ仕様は、カスタマ・アプリケーションの実行に必要とされる正確な機能ユニットを定義する。またこれは、並列に使用されるこれらのユニットの数が決定されるように固有の並列処理も正確に定義する。ミクロ的およびマクロ的レベルの並列処理の複雑性が、すべて、プロファイリング情報から抽出され、したがってチップ仕様は、この情報を伴って設計される。したがって、チップ仕様は、最適に設計され、この種のプロファイリング情報を伴わないでチップ仕様が設計される場合に起こり得るような設計が過剰になることまたは設計が不足することがない。動的プロファイリングの間に分岐の統計値が収集され、この情報に基づいて分岐予測メカニズムが最適に設計される。また、連続するインストラクションの間におけるすべての依存性チェックも、このプロファイリングから既知となり、したがってチップ仕様のパイプラインおよびインストラクション・スケジューリングに関する点のすべてが最適に設計される。
【００３３】
チップ仕様は、次に挙げるようなオプションを提供することが可能である。
＊  ラッピングについて絶えずテストすることを必要とせずに、サーキュラー・バッファが実装されることを可能にする、ハードウエア・モジュロ・アドレシング。
＊  ＤＭＡを広範囲に使用し、コードを予測してキャッシュ階層および関連する遅延についての情報が書き込まれる、ストリーミング・データのために設計されたメモリ・アーキテクチャ。
＊  複数の演算ユニットの駆動は、メモリ・アーキテクチャが毎インストラクション・サイクル当たりいくつかのアクセスをサポートすることを要求する。
＊  独立したプログラムおよびデータ・メモリ（ハーバード・アーキテクチャ）、および場合によっては複数のデータ・バス上における同時アクセス。
＊  特殊ＳＩＭＤ（単一インストラクション多重データ）演算。
＊  いくつかのプロセッサは、ＶＬＩＷテクニックを使用し、したがって各インストラクションが複数の演算ユニットを並列に駆動する。
＊  特殊な演算、たとえば高速積和演算（ＭＡＣ）等。
＊  ビット反転アドレシング、ＦＦＴの計算に有用な特殊なアドレシング・モード。
＊  特殊なループ・コントロール、たとえばインストラクションのフェッチまたは出口テストのためのオーバーヘッドを伴わない非常にタイトなループ内において少数のインストラクション・ワードを実行するためのアーキテクチャ上のサポート等。
＊  データ欠如のために実行ユニットが機能停止することが皆無であるように、データ・プリ‐フェッチ・メカニズムと結合された特殊なプリ‐フェッチ・インストラクション。これにより、メモリ帯域幅が、所定の実行ユニットおよびその種の実行ユニットを使用するインストラクションのスケジューリングのために最適に設計される。
【００３４】
図３は、図１のカスタム・チップ１２０を自動的に生成するためのプロセス・フローの一例を示している。ここで図３を参照するが、まずカスタマ・プロダクト仕様が生成される（３０２）。カスタマ・プロダクト仕様３０２は、さらに、とりわけＣプログラム等のプログラムまたはＭＡＴＬＡＢ（マトラボ）モデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム３０４で詳述される。
【００３５】
カスタマ・アルゴリズム３０４は、静的３１６および動的３１８にプロファイリングが行なわれる。このプロファイリングから収集された統計が、アーキテクチャ・オプティマイザ・ユニット３２０内において使用される。このユニットはまた、カスタマ仕様３０２も受け取る。ベース機能ジェネレータ３１４は、カスタマ・アルゴリズム３０４の実装に必要となる基本的演算子または実行ユニットを決定する。ベース機能ジェネレータ３１４の出力はまた、アーキテクチャ・オプティマイザ３２０へも供給される。
【００３６】
アーキテクチャ・オプティマイザ３２０の出力に基づいて、初期チップ仕様がアーキテクチャ３２２として定義される。続いてこれが、ツール・ジェネレータ３３２ユニットに供給されて自動的にコンパイラ３０６、アッセンブラ３０８、リンカ３１０、およびサイクル精度のシミュレータ３３８を生成する。その後、これらの一連のツールを使用して、カスタマ・アルゴリズム３０４が、アーキテクチャ３２２上で実行することが可能なファームウエア３１２に変換される。
【００３７】
アッセンブラ３０８の出力は静的プロファイリング３３４が行ない、サイクル精度のシミュレータ３３８の出力は動的プロファイリング３４０が行なう。これらのプロファイル情報は、その後、アーキテクチャ・オプティマイザ３４２によって使用され、アーキテクチャ３２２の純化および改善が行なわれる。
【００３８】
カスタマ仕様が満たされるまで３２２から３３２、３０６、３０８、３１０、３１２、３３８、３４０、３４２へと至り、３２２に戻るフィードバック・ループ、および３２２から３３２、３０６、３０８、３３４、３４２へと至り、３２２に戻るフィードバック・ループが、反復的に実行される。これらのフィードバック・ループは、人間の介入をまったく伴わずに自動的に生じ、したがって自動的に、最適ソリューションに到達する。
【００３９】
アーキテクチャ・オプティマイザ３４２は、アーキテクチャ・フロア‐プランナ３３６および、合成およびＰ＆Ｒ  ３２８フィードバックにも基づいている。アーキテクチャの決定は、アプリケーション・プロファイリング情報だけでなく、物理的な場所およびルート情報も参照して行なわれる。アーキテクチャの最適化は正確であり、設計済みアーキテクチャのバック・エンド設計で起き得る驚きの事態が生じることはない。たとえば、アーキテクチャ・オプティマイザが、２つの１６ビットのオペランドを入力として取り、３２ビットの結果を生成する乗算器ユニットを使用することを選択したものとする。アーキテクチャ・オプティマイザ３４２は、それらのオペランドを適用した時点と、フロア‐プランナ３３６および合成３２８からの結果を利用可とする時点との間における正確なタイミング遅延を承知している。アーキテクチャ・オプティマイザ３４２はまた、実際のチップ内において乗算器が配置され、ルーティングされるときの正確な面積も承知している。したがって、この乗算器を使用するためのアーキテクチャは、プロファイリング・データからのこの乗算器の必要性に基づくだけでなく、面積、タイミング遅延（パフォーマンスとも呼ばれている）、および電力の観点から見たこの乗算器に関連するコストにも基づいて決定される。
【００４０】
別の例においては、パフォーマンスがカスタム・チップ上における制約事項である場合に、パフォーマンスを高速化するために、コンパイラ３０６は、シリアル・プロセッサ上での実行に長時間を要するプログラム、コード、またはアルゴリズムを抽出し、同時演算が可能な複数の処理ユニットを含む新しいアーキテクチャがあれば、それを、多重処理ユニット内において並列に、またはオーバーラップ態様で処理することが可能である複数の部品に分解することによってプログラムの実行時間を短縮する。フロント・エンドの追加のタスクは、並列処理を捜し出すことであり、バック・エンドの追加のタスクは、正しい結果および向上したパフォーマンスが獲得される態様でそれをスケジュールすることである。システムは、どのような種類の部品をプログラムが分割するか、およびどのようにそれらの部品を再アレンジできるかについて決定する。これには、次の事項が含まれる。
・  並列処理の精度、レベル、および程度、
・  並列実行の候補の間における依存度の分析。
【００４１】
別の例においては、空間または電力がカスタム・チップ上における制約事項である場合に、たとえばコンパイラは、コードをシーケンシャルに実行して電力およびチップの地積要件を節約する単一の低電力プロセッサＤＳＰを生成することになる。
【００４２】
アーキテクチャ・ブロック３２２から、プロセスは、ＲＴＬジェネレータ（３２４）を使用してＲＴＬを生成することができる。ＲＴＬコードが生成され（３２６）、当該ＲＴＬコードを、合成配置およびルーティング・ブロック（３２８）に提供することができる。アーキテクチャ・フロア‐プランナからの情報もまた考慮に入れることが可能である（３３６）。レイアウトを生成することが可能である（３３０）。このレイアウトは、たとえば、ＧＤＳＩＩファイル・フォーマットとすることができる。
【００４３】
本発明の１つの態様は、統一されたアーキテクチャ３２２の表現形式であり、ソフトウエア・ツール・ジェネレータ３３２およびハードウエアＲＴＬジェネレータ３２４の両方がこの表現形式を使用することが可能となるように作り出される。この表現形式は、ＳＡＭＡ（システム、アーキテクチャ、およびマイクロ‐アーキテクチャ）と呼ばれている。
【００４４】
アーキテクチャ設計動作は、カスタム・チップによって実行されることになるプログラム、コード、またはアルゴリズムの分析に基づく。１つの実装においては、ユニスカラー・プロセッサ上での実行に長時間を要するプログラムがある場合に、システムは、多重処理ユニット内において並列に、またはオーバーラップ態様で処理することが可能な複数の部品に処理要件を分解することによってパフォーマンスを向上させることが可能である。フロント・エンドの追加のタスクは、並列処理を捜し出すことであり、バック・エンドの追加のタスクは、正しい結果および向上したパフォーマンスが獲得される態様でそれをスケジュールすることである。システムは、どのような種類の部品をプログラムが分割するか、およびどのようにそれらの部品を再アレンジできるかについて決定することが可能である。これは、並列処理の精度、程度をはじめ、並列実行の候補の間における依存度の分析を伴う。プログラムの部品および複数の処理ユニットが広い範囲にわたることから、異なるコンパイル・アプローチを必要とする適正な数の組み合わせが可能である。
【００４５】
これらの組み合わせのために、チップ仕様は、設計の過剰または不足がまったく存在しないように計算ユニットのサポートに必要とされるデータ帯域幅が正しく設計される。アーキテクチャ・オプティマイザ３４２は、最初にプログラム内の潜在的な並列ユニットを識別し、続いて、それらに対する依存度分析を実行して、互いに独立であって、しかも同時に実行することが可能なセグメントを見つけ出す。
【００４６】
アーキテクチャ・オプティマイザ３４２は、マシン・インストラクションの精度レベルの点で並列処理を識別する。たとえば、標準スカラー・プロセッサ上における２つのＮ要素ベクトルの加算は、一度に１つのインストラクションを実行することになる。しかしながら、ベクトル・プロセッサ上においては、すべてのＮ個のインストラクションをＮ個の独立したプロセッサ上で実行することが可能であり、そのことは合計時間を、単一の加算の実行に必要とされる時間のＮ倍をわずかに超える程度にまで短縮する。アーキテクチャ・オプティマイザは、ベクトル・ステートメントに等価なシーケンシャル・ステートメントを採用し、ベクトル・マシン・インストラクションへの翻訳を行なう。ベクトル化を可能にする条件は、ソース・オペランドの要素が結果のオペランドから独立していなければならないということである。たとえば、次のようなコードがある。
ＤＯ  １００  Ｊ＝１，Ｎ
ＤＯ  １００  Ｉ＝１，Ｎ
ＤＯ  １００  Ｋ＝１，Ｎ
Ｃ（Ｉ，Ｊ）＝Ｃ（Ｉ，Ｊ）＋Ａ（Ｉ，Ｋ）×Ｂ（Ｋ，Ｊ）
１００  ＣＯＮＴＩＮＵＥ
【００４７】
この行列乗算の例では、各繰り返しが、直前の繰り返しにおいて計算されたＣ（Ｉ，Ｊ）の値を使用してＣ（Ｉ，Ｊ）を計算しており、したがってベクトル化は可能でない。パフォーマンスが希望されているのであれば、システムは、このコードを次のように変換する。
ＤＯ  １００  Ｊ＝１，Ｎ
ＤＯ  １００  Ｋ＝１，Ｎ
ＤＯ  １００  Ｉ＝１，Ｎ
Ｃ（Ｉ，Ｊ）＝Ｃ（Ｉ，Ｊ）＋Ａ（Ｉ，Ｋ）×Ｂ（Ｋ，Ｊ）
１００  ＣＯＮＴＩＮＵＥ
【００４８】
この場合においては、連続するインストラクションが互いに独立しているＣ（Ｉ‐１，Ｊ）およびＣ（Ｉ，Ｊ）を計算し、異なるプロセッサ上において同時に実行可能であることからベクトル化が可能である。このように、インストラクション・レベルにおける依存度分析は、オペランド・レベルの依存度を認識し、とりわけ、適切な最適化を適用してベクトル化を可能にする補助となることが可能である。
【００４９】
図４は、データ・モデルの一例を示している。アーキテクチャ・オプティマイザ３４２は、ＡＳＩＣのアブストラクト統一表現である、システム、アーキテクチャ、およびマイクロ−アーキテクチャ（ＳＡＭＡ）表現１２０と呼ばれるアプリケーション・コードに対してカスタマイズされた中間ハードウエア表現を生成する。データ・モデル（ＤＭ）２８０は、設計の多様なビューを用いてＳＡＭＡを表現することが可能である。ＳＡＭＡは、ソフトウエア・コンピレーションとハードウエア合成の間における遷移レイヤとして作用する。その種の遷移レイヤには、コンパイラ・ツール・フロー内において利用可能な最適化を利用し、かつ低レベル・シンセサイザへの自由度の提供、アプリケーション固有の実装のためのオプションの探索も行なうことが意図されている。ＤＭ  ２８０は、アプリケーションの多様なビューの生成に使用することが可能である。たとえば、アーキテクチャ・オプティマイザ・ビュー２８２が、オプティマイザによる制約に対する設計の最良の割り当てが可能となるように、タイミング、面積、電力効率等のアーキテクチャ上の構成要素情報を提供する。空間／サイズ要件等の物理的な制約に取り組む物理設計ビュー２８４を生成することが可能である。ソフトウエア・ツール・ビュー２８６は、ＤＭ  ２８０をてこ入れして、使用するソフトウエアのためのＩＳＡおよびアーキテクチャ上の制約を提供することが可能である。そのほかのビューも同様にＤＭ  ２８０から生成することが可能である。ＤＭ  ２８０は、図３のツールによって生成される情報のリポジトリであり、その種の情報は、ＩＣのレイアウトの最終的な生成に必要とされる。ＤＭ  ２８０は、異なるツールによってクエリを行なうことが可能な異なるビューを生成することが可能である。これらのビューは、物理設計の間に使用することが可能である。
【００５０】
図５は、図４のデータ・モデルを使用して物理的な合成を実行するためのプロセスの一例を示している。このプロセスは、コンピュータ可読コードに対して固有のカスタマイズがなされたチップ仕様の物理的な合成のための情報を渡すべく、データ・モデル内において初期アーキテクチャ・レベルの情報をエンコーディングする（５１０）。次に、プロセスは、それぞれの繰り返しの中でチップ仕様の物理的な合成およびチップ仕様のデータ・モデルの更新を反復して行い、制約が満たされるまで実行する（５２０）。以前の繰り返しから生成された情報が、データ・モデルを通じて次の繰り返しに供給されるクリティカル・パスのルック・アヘッド情報とともにフィードバック・ループとして提供される（５３０）。たとえば、システムは、階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクス・タグを適用することが可能である。システムは、マクロ・ブロック名、階層名、プラグマ、コメント、ダミー・モジュール、およびラッパー・モジュールのうちの１つを用いて最適なタイミングを実現するための配置の制約を示すことが可能である。
【００５１】
アーキテクチャ・レベルの情報からのクリティカル・パスを示すべく、名前に特定のプレフィクス／ポストフィクスを格納することが可能である。したがって、１つの例においては、先行するパスの間にサブモジュールＡをサブモジュールＢおよびＣの近くに配置する必要があった場合に、この関係をＡＢＣと表示することが可能であり、同様にＢをＢＡＣと表示することが可能である。
【００５２】
すべての制約が満たされる最終的な繰り返しの過程で、プロセスは、半導体製造のために、チップ仕様のコンピュータ可読記述をカスタム集積回路内に合成する。
【００５３】
図５は、アーキテクチャ・レベルのホヮット−イフ・インクリメンタル・コスト推定データ・モデル（ＷＩＣＥ−ＤＭ）の一例を示している。ＷＩＣＥ−ＤＭアーキテクチャは、フロント−エンド、バック−エンド、コンテキスト管理セクション、およびＡＰＩセクションからなる。フロント−エンドは、Ａ２Ｃ設計技法で念入りに作られたアーキテクチャ設計状態を表わす。この念入りに作られた設計は、相互に参照される「多アスペクト多レベル」（ＭＡＭＬ）ハイパーグラフ構成で記録されるが、これは、非常に効率的なカスタマイズを可能とする設計アブストラクション・モデル（ＤＡＭ）の生成を可能にする。バック−エンドは、物理設計を意識したホヮット−イフ・インクリメンタル・コスト推定エンジンを表わす。コンテキスト管理セクションは、フロント−エンドがバック−エンドにおける分析を駆動するべく生成しなければならない適切なＤＡＭを決定する。
【００５４】
次に、ＭＡＭＬハイパーグラフ構成の一例について考察する。ハイパーグラフは、よく知られたグラフ構造であり、そのグラフ構造は、相互接続を、ノードの単一ペアに対向するようにハイパー−エッジ（すなわち、複数のヘッドおよび複数のテール）としてモデリングするものである。ハイパーグラフ内の多レベルの階層は、配置の間におけるネットリスト分割をはじめ、設計検証問題において使用することが可能である。この回路図は、４つの頂点（白の矩形およびディスクとして描画される）がツリーとして描画される３つのハイパーエッジによって接続されるハイパーグラフの線画として解釈される。たとえば、回路図は、ツリーとして描画されるハイパーエッジによって複数の頂点（構成要素を表わす白の矩形およびディスクとして描画される）が接続される、ハイパーグラフの線画として解釈される。
【００５５】
ハイパーグラフは、オーバーラップする階層をサポートする複数の階層アスペクトをサポートすることが可能である。このことは、アスペクト間の効率的な切り換えが可能なハイパーグラフを可能にする。
【００５６】
図５は、アーキテクチャおよびマイクロ−アーキテクチャ・レベルのインクリメンタル・ホヮット−イフ分析のための物理設計（ＰＤ）モデル・ベースの面積、電力、および遅延コスト推定についてのデータ・フローを示している。図５を参照すると、ｉ回の繰り返しの後に、次のＳＡＭＡ  ｉ＋１が、５０２において、次の繰り返しへの入力として使用される。したがって、第ｉ回のＳＡＭＡは、５０４において更新される。５０４におけるＳＡＭＡは、５０６においてＣＡシミュレータに、５１０においてアーキテクチャ・オプティマイザに提供される。ＡＯ  ５１０は、コスト関数クエリＡＰＩ  ５１２を通じて伝達する。ＳＡＭＡは、ＳＡＭＡリーダＡＰＩ  ５１４を通じて伝達する。ＣＡｓｉｍは、プロファイル・データ・リーダＡＰＩ  ５１６を通じてプロファイル情報を送る。
【００５７】
ＳＡＭＡリーダＡＰＩ  ５１４は、アーキテクチャ設計状態（ＭＡＭＬ−ＨＧ）５１８に、アーキテクチャおよび合成情報を伝達する。コスト関数クエリＡＰＩ  ５１２は、評価コンテキスト管理５１５に情報を提供し、続いてそれが、ＭＡＭＬ−ＨＧ  ５１８に情報を提供する。コンテキスト管理５１５は、評価コンテキスト物理設計モデルの形成に使用することが可能である。コンテキスト管理５１５は、ベースラインから提案された設計の修正の記録を保持している。コスト評価の初期段階の間には、多くの変更が確定されることなく提案される。確定されたコンテキストは、ベースライン設計の一部になる（ＳＡＭＡファイルの更新）。
【００５８】
ＭＡＭＬ−ＨＧ  ５１８は、多レベルのＸ階層マネージャ５２０に対して多レベルのハイパーグラフ・データ構造を提供する。続いてマネージャ５２０が多様なビューを、とりわけブラック−ボックス・ビュー５２２、カスタム多分解能階層的ビュー５２４、および完全に合成可能なネットリスト・ビュー５２６を含む多様なビューを提供する。これらのビュー５２２乃至５２６は、ベースラインの物理設計モデル５２８の形成に使用することが可能である。
【００５９】
モデル５２８乃至５３０は、とりわけ電力ホット−スポット推定エンジン５４０、遅延およびタイミング推定エンジン５４２、および面積推定エンジン５４４によって使用されることが可能である。電力ホット−スポット推定エンジン５４０は、ＭＡＭＬ−ＨＧ  ５１８から推定による作動係数（ＡＦｓ）を受け取ることが可能である。エンジン５４０乃至５４４からのデータは、分析情報マネージャ５５０に提供され、それがコスト関数クエリＡＰＩ  ５１２を介してＡＯ  ５１０にフィードバックを提供する。
【００６０】
次に、ＡＰＩの一例について、より詳細に考察する
コスト関数推定（ＣＦＥ）ＡＰＩ。
ｂｏｏｌｅａｎ  ｄｅｆｉｎｅ＿ｃｏｎｔｅｘｔｃｏｎｔｅｘｔ＿ｎａｍｅ  ｛ｃｈａｎｇｅ＿ｌｉｓｔ｝
ｂｏｏｌｅａｎ  ｓｅｔ＿ａｃｔｉｖｅ＿ｃｏｎｔｅｘｔ  ｃｏｎｔｅｘｔ＿ｎａｍｅ
ｒｅｓｐｏｎｓｅ＿ｔｙｐｅ  ｃｏｍｐｕｔｅ＿ｄｅｌａｙ｛ｐａｔｈ＼ｗｈｏｌｅ＿ｃｈｉｐ｝
ｒｅｓｐｏｎｓｅ＿ｔｙｐｅ  ｃｏｍｐｕｔｅ＿ａｒｅａ  ｃｏｍｐｏｎｅｎｔ
ｂｏｏｌｅａｎ  ｃｏｍｍｉｔ＿ｃｏｎｔｅｘｔ  ｃｏｎｔｅｘｔ＿ｎａｍｅ  −ｏｕｔｆｉｌｅＮａｍｅ  ｓａｍａ＿ｉ．ｔｘｔ
【００６１】
「ｒｅｓｐｏｎｓｅ＿ｔｙｐｅ」は、以下の情報を含む。
●  相対的コスト（遅延、面積、電力等、実際のクエリに依存する）
○  定性（改善、有意の影響なし、低下）
○  定量（定性的変化のヒューリスティックな測度）
●  補足的な物理設計の最適化を伴う条件付きコスト（ＳＰＤＯ）
○  補足的なＰＤ最適化ＩＤ（将来的な参照のための内部のブック−キーピングＩＤ）
○  ＷＡが受け入れられた場合の新しい相対的コスト
●  信頼区間
○  ０と１の間の値
○  １は、もっとも正確なデータ駆動ツールのフローを伴ってコストが計算されたことを意味する
○  ０は、コストが大まかに推定されたことを意味し、詳細なコスト分析が実行された場合には大きく異なる可能性が非常に高い。
【００６２】
補足的な最適化提案（ＩＤによってインデクスされる）を提供する能力は、物理設計の最適化を向上させ、アーキテクチャの最適化がまだ処理中であり、最適化が完了していないときにはＡＯに影響を与える。標準的なの工業フローにおいては、アーキテクチャの最適化が完了するまで物理設計の最適化が行なわれない。同時にＡＯは、代替案を詳細を意識する必要はない。このメカニズムは、ＡＯが、単なる直接に計算されたコスト関数ではなく、広範囲にわたって変化する最適化の結果を考慮することを可能にし、したがって、より良好な設計の収斂を可能にする。
【００６３】
別のＡＰＩの一例は、次のようなパス作動プロファイルである。
パス・プロファイル（ＰＰ）ＡＰＩ
ｓｅｔ＿ｐａｔｈ＿ｌｉｋｅｌｉｈｏｏｄ  ｐａｔｈ  ａｃｔｉｖｉｔｙ＿ｆａｃｔｏｒ
【００６４】
パス作動係数は、そのパスが用いられる確率または尤度である。この情報は、サイクル精度のシミュレータから利用することが可能である。ＷＩＣＥ−ＤＭは、この情報を、物理設計のモデリングから獲得されたパスのトポロジ情報と統合する。その結果として、それが、物理設計の各単位面積についての電力利用度の見積を生成する。続いてこれが、電力ホット−スポット情報を提供し、その後それは、フィードバックとしてリソース制約の形式でインストラクション・スケジューラに提供することが可能である。このフィードバックの正味の効果は、（ａ）潜在的なタイミングおよびそのほかの信号品質の問題が回避されるようにインストラクションがスケジュールされること、および（ｂ）電力の散在、クロック・ゲーティングまたはそのほかの技術を用いて電力ホット−スポットの近隣となる必要がある構成要素を組み込むことが可能となり、かつその種の即席処理の面積／タイミングのコストが直ちに利用可能となることである。
【００６５】
図５の１つの実施態様においては、アーキテクチャ・レベルの情報が、通常は物理的な合成に利用可能でない情報を渡すべく、ネットリスト・ファイル内にエンコーディングされる。たとえば、階層名には、その階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクス・タグを含めることができる。この情報は、ツール・チェーン・キャパシティの向上に帰する物理的な分割を行う点で、より積極的な決定を行なうために有用であり、この結果、より高速なターン・アラウンド時間を実現できる。インスタンスの名前もまた、アーキテクチャ・レベルのモデルが、これを、実在のクリティカル・パスのためのありえる経路として見るか否かを示す特定のプレフィクス／ポストフィクスを含めることができる。物理的な合成は、正しいものが発見されるまで正しくないものを徐々に除いていくのではなく、実在のクリティカル・パスに対する「ルック・アヘッド」を行なうことが可能である。これは、望ましくない最適化（ほかのコスト増加を導く過剰な最適化）を除去し、ターン・アラウンド時間を節約する。別の例として、特定のマクロ・ブロックに、配置制約（とりわけアレイの配置等）を示す名前を付けることができ、それが、一度目で最適タイミングを達成することの補助となる。ネットリスト・ファイルに「側波帯」情報をエンコーディングすることに加えて、図３のフローは、オリジナルのユーザ制約のみで生成するより、物理的な合成を導出する上でより生産的な（物理的はもとよりタイミングの）設計制約を生成することも可能である。いくつかの場合においては、その種の制約は、ネットリストの名前設定スキームを通じて「暗黙的」なものである。
【００６６】
図６は、設計のフロント−エンドを初期化するプロセスの一例を示している。フロント−エンドは、「アーキテクチャ設計状態」を表わす。フロント−エンドは、ＳＡＭＡファイルからのアーキテクチャ仕様の高水準の記述を得、指定されたアーキテクチャを実現するために必要とされるすべての機能構成要素の詳細を完全な形で生成する。
【００６７】
図６は、ＷＩＣＥ−ＤＭフロント−エンドを初期化するためのプロセスである。このプロセスは、ＸＭＬマークアップ言語を使用し、マシンによるデータの把握をサポートする。このプロセスでは、ＳＡＭＡ  ＤＴＤが６０２において受け取られてＸＭＬパーザ６０４に送られるが、ここでは、６０６におけるＳＡＭＡバージョン情報も受け取られる。ＸＭＬパーザ６０４は、６１０においてＷＩＣＥ−ＤＭコールバック機能を、６１２においてＳＡＭＡ変数空間を、セットアップする。またプロセスは、６１４においてアーキテクチャを生成し、６１６においてアーキテクチャ設計状態ＭＡＭＬ−ＨＧを生成する。初期化が終了すると、この念入りに作られたアーキテクチャが、すべてのコスト関数クエリのためのベースラインとして働く。
【００６８】
図７Ａ及び図７Ｂは、最適化ループ・バック７１０を伴う物理的な合成プロセスの一例を示している。複数のループ・バック７１０は、プロセスは、改善のために焦点を当てることが可能な特定の動作について、細かい精度での最適化を可能にする。７２０におけるフロント−エンドから、プロセスは、階層構造および透過性プランニング（７２２）を実行する。次に、７２３においてＩ／Ｏ配置制約を受け取った後、フル・チップＩ／Ｏプランニングが行なわれる（７２４）。７２６においては、ブロック・シェイピングを行なうことが可能である。次に、相対配置制約を受け取ることが可能であり（７２７）、７２８において粗配置を行なうことが可能になる。
【００６９】
７５０においては、フィードスルー・プランニングを行なうことが可能である。プロセスは、７５２における電力グリッド・プランニングおよび接続に進む。７５４においては、クロック配置プランニングが行なわれる。７５６においては、ＨＦＮ（ハイ・ファンアウト・ネット）およびＦＴＮ（フィードスルー・ネット）固定動作を行なうことができる。その後７５８において、ブロック・レベルの配分割り当てを行なうことができる。７６０においては、トップ・レベルとブロック・レベルの物理的な分割が行なわれる。最適化されたトップ・レベルの配置は、７６２において決定することが可能である。最適化されたトップ・レベルのクロックは、７６４において決定することが可能である。トップ・レベルの最適化されたルーティングは、７６６において決定することが可能である。
【００７０】
トップおよびブロックの物理的な分割から、プロセスは、チップの各ブロックについてモジュール７８８を実行することが可能である。モジュール７８８内では、７９０において最適化されたブロック・レベルの配置を決定することが可能である。最適化されたブロック・レベルのクロックは、７９２において決定することが可能である。最適化されたブロック・レベルのルーティングは、７９４において決定することが可能である。さらに、７９６においてブロックＳＴＡを行なうことが可能である。
【００７１】
７６６または７９６から、プロセスは、７６８におけるフル・チップ集積化、および７７０におけるフル・チップＳＴＡを実行する。フル・チップＳＴＡの結果が合格であれば、７８０においてプロセスが物理設計モデルを生成するが、そうでなければいずれかの７１０にループ・バックして、設計の最適化および制約への適合を行なう。
【００７２】
１つの実施態様における、クリティカル・パスのルック・アヘッドを伴う物理的な合成プロセスの擬似コードの一例は次のとおりである。
スタート→ゲート・レベル・ネットリスト
１．  設計分割
２．  粗配置
３．  分割のサイジングおよび成形
４．  トップ・レベルのＩ／Ｏパッド配置
５．  ロジック配置
６．  ＨＦＮバッファリング
７．  ブロックＩ／Ｏ割り当て（フィードスルーを含む）→ブロック・フロア・プラン準備完了
８．  バッファリングの最適化
９．  推定によるＳＴＡ←目標を満たさなければならず、そうならない場合には、設計が収斂しない可能性が非常に高い。
１０．  ブロック・レベルの予算作成→ブロックＳＤＣ準備完了
１１．  ｛ブロック｝
１．  スタート→ブロックＩ／Ｏが固定されたブロック・フロア・プラン
２．  詳細な配置最適化を実行する
３．  詳細なクロック・ツリー合成および最適化を実行する
４．  詳細なルーティング最適化を実行する
５．  ブロック・レベルＳＴＡ←現在のタイミング問題を確定するには局所的な目標を満たさなければならない。
１２．  トップ・レベル・アッセンブリ
１．  スタート→トップ・レベル・ネットリストの詳細な配置最適化
２．  トップ・レベル・ネットリストの詳細なクロック最適化
３．  トップ・レベル・ネットリストの詳細なルート最適化
１３．  詳細な寄生抽出
１４．  フル・チップＳＴＡ←テープアウトに移行するには目標を満たさなければならない。
１５．  チップ仕上げタスク  −  メタル・フィル等
終了→ＧＤＳＩＩレイアウト
【００７３】
ゲート・レベル・ネットリストが、プロセスへ入力される。プロセスは、２つのループを有している。ループ１においては、ステップ１から９までが、通常、ステップ９の目標に到達するために多数回にわたって反復される。ループ２においてもステップ１１．１から１１．５までが、各ブロックについて多数回にわたって反復され、ステップ１０における見積が収束しないことが明らかになると、ループ１のやり直しが必要になることがある。ステップ１４は、ステップ９にて見積もられたＳＴＡに現実性の点で一貫性がなかった場合、それを理由に不合格となる可能性がある。
【００７４】
図８Ａは、インストラクション実行プロファイルに基づいたインストラクションの発行とパス・エクササイズの間における相関を図解した一例の図式である。サイクル精度のシミュレータが、パスが実行される確率または尤度であるパス作動係数を提供する。ＷＩＣＥ−ＤＭは、この情報を、物理設計のモデリングから獲得されたパスのトポロジ情報と統合する。その結果として、それが、物理設計の各単位面積についての電力利用度推定を生成する。続いてこれが、電力ホット−スポット情報を提供し、その後それは、フィードバックとしてリソース制約の形式でインストラクション・スケジューラに提供することが可能である。このフィードバックの正味の効果は、（ａ）潜在的なタイミングおよびそのほかの信号品質の問題が回避されるようにインストラクションがスケジュールされること、および（ｂ）電力の散在、クロック・ゲーティングまたはそのほかのテクニックを用いて電力ホット−スポットの近隣となる必要がある構成要素を組み込んで変更することが可能となり、かつこのような適宜の変更により面積／タイミングのコストが直ちに利用可能となることである。
【００７５】
伝統的なフローでは、物理設計段階において、利用可能な実行パスの尤度についての唯一の情報は、ユーザ指定のフォールス・パス（０の確率を有するもの）である。ＷＩＣＥ−ＤＭにおいては、このコンセプトが、０から１までの確率値の範囲を表わすべく拡張される。このメカニズムは、ＷＩＣＥ−ＤＭがアーキテクチャ・オプティマイザの挙動に影響を及ぼすことを可能にする。したがって、ＡＯは、以前は置き去りにされていた可能性のあるより新しいパス内を検索することができるようになり、最適化の結果、異なるソリューションに収束することとなる。図８Ａは、４つのインストラクションＩ１乃至Ｉ４についてインストラクション実行経路（トポロジ）の一例を示している。この例においては、インストラクション・スケジューラが、Ｉ１→Ｉ２→Ｉ３→Ｉ４の順序でそれらの実行をシーケンス処理することを選ぶ。電力ホット−スポット推定によるコストに基づいて、ＷＩＣＥ−ＤＭは、新しいリソース制約を挿入してインストラクション・スケジューラに影響を及ぼす。それにより、新しい最適実行順序を、Ｉ１→Ｉ３→Ｉ４→Ｉ２とすることができることになった。この実行順序の再整理は、電力ホット−スポット・エリアが再び作動される前に冷却される時間を与える。
【００７６】
図８Ｂは、インストラクション・スケジューラがインストラクション実行プロファイルに基づいてどのように電力ホット−スポットを最小化することが可能であるかを図解した一例の図式である。このプロセスは、コンピュータ可読コードを含むカスタム集積回路の仕様を受け取り、かつそのコンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し（８１０）、そのコンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャであって、１つまたは複数のインストラクションを実装する１つまたは複数の処理ブロックを有するプロセッサ・アーキテクチャを自動的に生成し（８１２）、上記のコード・プロファイルに基づいてインストラクション実行シーケンスを決定し、かつそのインストラクション・シーケンスの再割り当てを行なってホット−スポットを低減するべくＩＣ上の異なるブロックに動作を分散させ（８１４）、手順を含む。インストラクション・シーケンスを変更する代わりに、ほかのオプションの中でもとりわけ、インストラクション・シーケンスの部分を時間的に遅延させてホット−スポットを平均することも可能である。最後にこのプロセスは、生成されたアーキテクチャを、半導体製造のために、カスタム集積回路のコンピュータ可読記述に合成する（８１６）。
【００７７】
図８Ｃは、本発明の１つの態様によるワークフロー・プロセスの一例を示している。図８Ｃのフローにおいては、システムがアーキテクチャ設計を生成する（８５０）。次に、ホット−スポット分析が行なわれる（８５２）。その後、ＲＴＬ等の中間コードを生成することが可能になる（８５４）。フロア・プランニングが実行され（８５６）、レイアウトを行なうことが可能になる（８５８）。ホット−スポット分析の間に生成された情報は、早い時期に統合される。
【００７８】
図９Ａおよび９Ｂは、ホット−スポットを意識したインストラクション・スケジューラの最適化をデータ・モデルによってどのようにして達成可能であるかを記述したタスク・レベルのプロセスの一例を示している。９０１においては、プロセスが、各マシン・インストラクションを関連付けされたハードウエア実行パスにマップする。９０２においては、プロセスが、可能性のあるすべての実行パスおよびそれらの関連付けされたインストラクションの記録をデータ・モデル内において保持する。次に、９０３においては、データ・モデルが、多様なマシン・インストラクションの統計的プロファイルを受け取る。９０４においては、データ・モデルが、そこから、任意の所定サイクル内においてインストラクションが実行される定常状態確率を抽出する。９０５においては、データ・モデルが、各インストラクション実行パスに対して推定された位相幾何学的レイアウトを作り出す。９０６においては、レイアウトが、物理設計のモデリングのために必要とされる適切なアブストラクション・レベルを選択する、あらかじめ決定済みのプロトコルに基づいた多様な物理設計モデルを使用して推定される。９０７においては、データ・モデルが、インストラクションの実行の定常状態確率を、それの実行パスのトポロジと関連付けする。
【００７９】
９０８においては、データ・モデルが、レイアウトの部分領域を作り出すが、各部分領域については、部分領域の重みの計算に使用される実行パスの確率の集まりをもたらす、交差する実行パスの集まりが存在する。
【００８０】
９０９においては、部分領域の重みの（全領域にわたる）分布が、電力ホット−スポットの部位の推定に使用される。９１０においては、データ・モデルが、影響を受けるインストラクション、すなわち実行パスが電力ホット−スポットと交差するインストラクションを識別する。次の９１１においては、電力ホット−スポット領域が、仮想の制限容量リソースとしてモデリングされる。データ・モデルは、制限容量リソースに依存して影響を受けるインストラクションを調べるべくインストラクション・スケジューラを調整する。制限容量とは、閉じた連続する処理の中でアクティブ化が許容される部分領域内の実行パスの数を制限することである。その種のリソース依存度は、インストラクション・スケジューラのリソース割り付けテーブルに容易に追加することが可能である。続く９１２においては、このインストラクション・スケジューラの最適化が、前述のように作り出された仮想リソースを、そのほかのパフォーマンス・コスト関数とともに考慮する。したがって、電力およびパフォーマンスが同時に最適化される。
【００８１】
上記のプロセスは、実行シーケンスの再整理を行なっているが、実行シーケンスの再整理を行なってＩＣ上の動作を空間的に分散させることに代えて、プロセスが、コード・プロファイルに基づいてインストラクション実行シーケンスを決定し、かつ処理ブロックの空間的な再割り当てを行なってホット−スポットを低減するべくＩＣ上の異なるエリアに動作を分散させることができる。
【００８２】
１つの実施態様においては、マイクロアーキテクチャの最適化ループのために高速インクリメンタル物理遅延推定モデルを次のとおりに生成することが可能である。最初に、プロセスが、あらかじめ決定済みの分割スキームを識別し、かつＲＴＬを粗いゲート・レベル・ネットリストに（ＡＤＭから）変換する。主要な構成要素はブラック−ボックス化されており、インターフェースが、より少ないネットに要約される。プロセスは、単純なあらかじめ決定済みの、高速タイミング計算にとって容易なルート形状を決定する。タイミング・グラフは、特に、敏感度分析のために設計される。タイマは、エルモア遅延推定を使用し、主要ブロック（ブラック−ボックスとしてモデリングされる）間の最良のケース、平均的なケース、および最悪のケースの「フライト」時間を提供する。このモデルは、インクリメンタル・クエリを可能にし、かつＳＴＡツールより数桁高速である。この速度は、テープアウトの結果の品質（ＱｏＲ）の測定ではなく、インクリメンタル・コスト・フィードバックの提供に使用される。
【００８３】
１つの設計の例においては、アルゴリズムが、５００ＭのＭＡＣ演算／サイクルを必要とする。図５のプロセスを用いて、１８０ｎｍのＴＳＭＣプロセス・ノード上において推定約２５０ＭＨｚのクロック速度を伴う初期アーキテクチャが生成される。初期ハードウエアは、要求されたスループットを達成するべく２つのＭＡＣユニットのために設計される。しかしながら、ゲート・レベル合成の後、達成可能なクロック周波数が２００ＭＨｚまで下げられ、ＤＭ  ２８０内において情報が更新される。バック−エンド・フロー（前述のステップ１４）の後、達成可能なクロック周波数がさらに１６５ＭＨｚ未満まで下げられ、その情報を用いてＤＭ  ２８０が更新される。プログラムの部品および複数の処理ユニットが広い範囲にわたることから、異なる最適化アプローチを適正な数の組み合わせ実施することが可能である。アーキテクチャ・オプティマイザは、最初にプログラム内の潜在的な並列ユニットを識別し、続いて、それらに対する依存度分析を実行して、互いに独立であって、しかも同時に実行することが可能なセグメントを見つけ出す。システムは、アーキテクチャ決定に戻り、このとき、ハードウエアが、３つのＭＡＣユニット用に再設計される。新しい設計が、バック−エンド・フローまで反復的にループし、再び、設計目標が満たされているか否かを調べる。
【００８４】
このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、コンピュータ可読コードまたはアルゴリズムが、その適用のために特に最適化されたプロセッサ上において実装されることが常に可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、従来の数年を要する問題として対処されていた事項を、数日の問題として対処することを可能とする。このシステムは、ハードウエア・チップ・ソリューションが設計される方法におけるパラダイムを完全にシフトさせるものである。多くの利点のうち、システムの好ましい実施態様を使用する利点を３つ次に挙げる。
（１）スケジュール：チップ設計サイクルが数年単位ではなく数週単位に落ち着くことになる場合には、ユーザが、製品をすばやく市場に持ち込むことによって急速に変化する市場に浸透することが可能になる。
（２）コスト：一般にチップの実装に使用する必要がある多数の技術者が不必要なものとなる。このことは、システムを使用している会社に夥しいコストの節約をもたらす。
（３）最適性：このシステム・プロダクトを使用して設計されたチップは、優れたパフォーマンス、面積、および電力消費を有している。
【００８５】
次に、例として、自動化されたチップ設計システムをサポートするコンピュータについて考察する。コンピュータは、好ましくは、プロセッサ、ランダム・アクセス・メモリ（ＲＡＭ）、プログラム・メモリ（好ましくは、フラッシュＲＯＭ等の書き込み可能な読み出し専用メモリ（ＲＯＭ））、および入力／出力（Ｉ／Ｏ）コントローラをＣＰＵバスによって結合された形で含んでいる。このコンピュータは、ハードディスクおよびＣＰＵバスに結合されるハード・ドライブ・コントローラをオプションとして含むことができる。ハードディスクは、本発明等のアプリケーション・プログラムおよびデータをストアするために使用することができる。それに代えて、アプリケーション・プログラムをＲＡＭまたはＲＯＭ内にストアすることができる。Ｉ／Ｏコントローラは、Ｉ／Ｏバスを経由してＩ／Ｏインターフェースに結合される。Ｉ／Ｏインターフェースは、シリアル・リンク、ローカル・エリア・ネットワーク、無線リンク、およびパラレル・リンク等の通信リンクを介してアナログまたはデジタル形式でデータの受信および送信を行なう。オプションとして、表示器、キーボード、およびポインティング・デバイス（マウス）がＩ／Ｏバスに接続されることもある。それに代えて、Ｉ／Ｏインターフェース、表示器、キーボード、およびポインティング・デバイスのために別々の接続（別々のバス）が使用されることもある。プログラマブル処理システムは、あらかじめプログラムすること、または別のソース（たとえば、フロッピーディスク、ＣＤ−ＲＯＭ、または別のコンピュータ）からプログラムをダウンロードすることによってそれをプログラムすること（および再プログラムすること）ができる。
【００８６】
各コンピュータ・プログラムは、目に見える形として、コンピュータによってストレージ媒体またはデバイスが読み出されたときに、ここで説明しているプロシージャを実行するべくそのコンピュータの構成および動作のコントロールを行なうために、汎用または専用プログラマブル・コンピュータによって読み出されることが可能なマシン可読ストレージ媒体またはデバイス（たとえば、プログラム・メモリまたは磁気ディスク）内にストアされる。また本発明のシステムは、コンピュータ・プログラムを用いて構成されるコンピュータ可読ストレージ媒体内において具体化されると考えてもよく、それにおいてストレージ媒体は、ここで述べている機能を実行するべく特定の、あらかじめ定義済みの態様でコンピュータを動作させるように構成される。
【００８７】
以上、ここでは、特許法に従うため、および当業者に、新しい原理の適用および必要とされる専用の構成要素の組み立ておよび使用に必要となる情報を提供するために、相当に詳細に本発明を説明してきた。しかしながら、本発明が明確に異なる装置およびデバイスによって実行可能であること、および装置の詳細および動作手順の両方に対する多様な修正が本発明自体の範囲からの逸脱なしに達成可能であることは理解されるものとする。
【符号の説明】
【００８８】
１２０  ＳＡＭＡ表現
２８０  データ・モデル、ＤＭ  
２８２  アーキテクチャ・オプティマイザ・ビュー
２８４  物理設計ビュー
２８６  ソフトウエア・ツール・ビュー
３４２  アーキテクチャ・オプティマイザ
５１０  ＡＯ  
５１２  コスト関数クエリＡＰＩ  
５１４  ＳＡＭＡリーダＡＰＩ  
５１５  評価コンテキスト管理、コンテキスト管理
５１６  プロファイル・データ・リーダＡＰＩ  
５１８  アーキテクチャ設計状態、ＭＡＭＬ−ＨＧ  
５２０  Ｘ階層マネージャ、マネージャ
５２２  ブラック−ボックス・ビュー
５２４  カスタム多分解能階層ビュー
５２６  ネットリスト・ビュー
５２８  物理設計モデル
５４０  電力ホット−スポット推定エンジン
５４２  遅延およびタイミング推定エンジン
５４４  面積推定エンジン
５５０  分析情報マネージャ
６０４  ＸＭＬパーザ
７１０  最適化ループ・バック
７２２  階層構造および透過性プラニング
７２４  フル・チップＩ／Ｏプラニング
【図１】
2013540295.tif 000003
【図２】
2013540295.tif 000004
【図３】
2013540295.tif 000005
【図４】
2013540295.tif 000006
【図５】
2013540295.tif 000007
【図６】
2013540295.tif 000008
【図７Ａ】
2013540295.tif 000009
【図７Ｂ】
2013540295.tif 000010
【図８Ａ】
2013540295.tif 000011
【図８Ｂ】
2013540295.tif 000012
【図８Ｃ】
2013540295.tif 000013
【図９Ａ】
2013540295.tif 000014
【図９Ｂ】
2013540295.tif 000015
【国際調査報告】
2013540295.tif 000016