"カスタム集積回路IC設計において電力を管理する方法であって、a.コンピュータ可読コードを含む前記カスタム集積回路の仕様を受け取り、かつ前記コンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、b.前記コンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサアーキテクチャであって、1つまたは複数のインストラクションを実行する前記IC上に1つまたは複数の処理ブロックを有するプロセッサアーキテクチャを自動的に生成し、c.前記コードプロファイルに基づいてインストラクション実行シーケンスを決定し、かつ前記インストラクションシーケンスの再割り当てまたは遅延を行なって、ホット-スポットを低減するべく前記処理ブロックにわたって動作または活動を分散させ、d.生成された前記アーキテクチャを、半導体製造のために、前記カスタム集積回路のコンピュータ可読記述に合成する、方法。各マシンインストラクションはハードウエア実行パスと関連付けされており、データモデル内において、可能性のある実行パスおよび関連付けされたインストラクションの記録を保持する、請求項1に記載の方法。前記データモデルは、前記マシンインストラクションの統計的プロファイルを受け取り、任意の所定サイクル内におけるインストラクションの実行の定常状態確率を抽出する、請求項1に記載の方法。前記データモデルは、各インストラクション実行パスのための推定による位相幾何学的レイアウトを作り出す、請求項1に記載の方法。あらかじめ決定済みのプロトコルに基づいて1つまたは複数の物理設計モデルを使用する前記レイアウトを推定し、物理設計のモデリングのために必要とされるアブストラクションのあらかじめ決定済みのレベルを選択する、請求項4に記載の方法。前記データモデルは、インストラクションの実行の定常状態確率を実行パスのトポロジと関連付けする、請求項1に記載の方法。前記データモデルからレイアウトの部分領域を作り出し、各部分領域が、部分領域の重みを決定する1つまたは複数の実行パスの確率をもたらす交差する実行パスの集まりを決定する、請求項6に記載の方法。部分領域の重み分布を適用して電力ホット-スポットの部位を推定する、請求項7に記載の方法。前記データモデルを適用して、実行パスが電力ホット-スポットと交差する影響を受けるインストラクションを識別する、請求項1に記載の方法。仮想制限容量リソースとして電力ホット-スポット領域のモデリングを行なう、請求項9に記載の方法。前記データモデルを通じ、コンパイラのインストラクションスケジューラに対する前記制限容量リソースに依存して影響を受けるインストラクションが提供される、請求項9に記載の方法。インストラクションスケジューラの最適化は、1つまたは複数のパフォーマンスコスト関数とともに前記制限容量リソースが考慮され、前記ICのための電力ホット-スポットおよびパフォーマンスを同時に最適化する、請求項11に記載の方法。前記プロファイルから機能ブロック利用度の統計を生成する、請求項1に記載の方法。異なる処理ブロックの利用度を時間の関数として追跡する、請求項13に記載の方法。1つまたは複数の処理ブロックのための電力を推測して遮断し、電力を遮断した処理ブロックを自動的に必要時にオンに切り換える、請求項1に記載のシステム。インストラクションデコーダを使用して、各電力ドメインに対して電力がいつ印加されるべきかを決定する、請求項1に記載の方法。前記コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを実行して処理ブロックの利用度を決定する、請求項1に記載の方法。前記コンピュータ可読コードを走らせる前記カスタム集積回路のためのファームウエアまたはソフトウエア開発キットSDKを自動的に生成する、請求項1に記載の方法。前記コンピュータ可読コードをアッセンブリコードにコンパイルし、前記アッセンブリコードをリンクして選択された前記アーキテクチャのためのファームウエアを生成し、かつ前記ファームウエアのサイクル精度のシミュレーションを実行する、請求項1に記載の方法。カスタム集積回路IC設計において電力を管理する方法であって、a.コンピュータ可読コードを含む前記カスタム集積回路の仕様を受け取り、かつ前記コンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、b.前記コンピュータ可読コードに対して独特のカスタマイズがなされたプロセッサアーキテクチャであって、1つまたは複数のインストラクションを実装する1つまたは複数の処理ブロックを有するプロセッサアーキテクチャを自動的に生成し、c.前記コードプロファイルに基づいてインストラクション実行シーケンスを決定し、前記処理ブロックの空間的な割り当てを行なってホット-スポットを低減するべく前記IC上の異なるエリアに対して動作または活動を分散し、d.生成された前記アーキテクチャを、半導体製造のために、前記カスタム集積回路のコンピュータ可読記述に合成する、方法。通常、アルゴリズムおよび/またはプロダクト仕様から、アーキテクチャ開発者が、プロダクトをハードウエアおよびソフトウエアに分割することによってアーキテクチャを開発する。続いて設計者が、レジスタトランスファ言語RTLコード等の中間コードにそのアーキテクチャを翻訳する。その後、フロアプランニングが行なわれ、そこで初めてICレイアウトの生成が可能になる。レイアウトの後に、そのレイアウトについてのホット-スポット分析を行なうことが可能になり、ホット-スポット分析が、現在の設計から生じているIRホット-スポットが容認可能でないことを示している場合には、ユーザは、すべてのシーケンス、すなわちアーキテクチャ開発、RTL、フロアプランニング、レイアウト、およびホット-スポット分析からなる全シーケンスを再度始める。このプロセスは、非常に長々しくなる可能性があり、かつ設計の複雑性によっては数百万ドルのコストが掛かる可能性がある。第1の態様においては、コンピュータ可読コードを含むカスタム集積回路の仕様を受け取り、かつそのコンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し、そのコンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサアーキテクチャであって、1つまたは複数のインストラクションを実装する1つまたは複数の処理ブロックを有するプロセッサアーキテクチャを自動的に生成し、上記のコードプロファイルに基づいてインストラクション実行シーケンスを決定し、かつそのインストラクションシーケンスの再割り当てを行なってホット-スポットを低減するべくIC上の異なるブロックに動作を分散させ、生成されたプロセッサチップ仕様を、半導体製造のために、カスタム集積回路のコンピュータ可読記述に合成する、ことによってカスタム集積回路を自動的に合成するシステムおよび方法が開示されている。別の態様においては、実行シーケンスの再整理を行なってIC上の動作を空間的に分散させることに代えて、プロセスが、コードプロファイルに基づいてインストラクション実行シーケンスを決定し、かつ処理ブロックの空間的な再割り当てを行なってホット-スポットを低減するべくIC上の異なるエリアに動作を分散させることができる。上記の態様の実装には、次に示す内容のうちの1つまたは複数が含まれる。このプロセスは、1つ1つのマシンインストラクションと、オンチップロジックおよび相互接続構造のコレクションである関連付けされたハードウエア実行パスと、を関連付ける。実行パスは、インストラクションのハードウエアフットプリントと考えることが可能である。データモデルは、可能性のあるすべての実行パスおよびそれらに関連付けされたインストラクションの記録を保持している。データモデルは、多様なマシンインストラクションの統計的プロファイルを受け取り、そこから、任意の所定サイクル内においてインストラクションが実行される定常状態確率を抽出する。データモデルは、各インストラクション実行パスに対して推定された位相幾何学的レイアウトを作り出すことが可能である。レイアウトは、物理設計のモデリングのために必要とされる適切なアブストラクションレベルを選択する、あらかじめ決定済みのプロトコルに基づいた多様な物理設計モデルを使用して推定される。データモデルは、インストラクションの実行の定常状態確率を、それの実行パスの位相幾何学的レイアウトと関連付けする。データモデルは、レイアウトの部分領域を作り出すが、各部分領域には、部分領域の重みの計算に使用される実行パスの確率の集まりをもたらす、交差する実行パスの集まりが存在する。部分領域の重みの全領域にわたる分布は、電力ホット-スポットの部位の推定に使用される。データモデルは、影響を受けるインストラクション、すなわち実行パスが電力ホット-スポットと交差するインストラクションを識別する。その後、電力ホット-スポット領域が、仮想の制限容量リソースとしてモデリングされる。データモデルは、制限容量リソースに依存して影響を受けるインストラクションを調べるべくコンパイラのインストラクションスケジューラを調整する。制限容量は、閉じた連続の中でアクティブ化が許されるべき部分領域内の実行パスの数を制限することと解釈される。その種のリソース依存度は、インストラクションスケジューラのリソース割り付けテーブルに容易に追加することが可能である。その後、このインストラクションスケジューラの最適化が、前述のように作り出された仮想リソースを、そのほかのパフォーマンスコスト関数とともに考慮する。したがって、電力およびパフォーマンスが同時に最適化される。システムは、プロファイルから機能ブロック利用度の統計を生成することができる。システムは、時間の関数として、異なる処理ブロックの利用度を追跡することができる。システムは、1つまたは複数の処理ブロックのための電力を推測して遮断することが可能であり、必要時には、電力を遮断した処理ブロックを自動的にオンに切り換えることができる。各電力ドメインに電力がいつ印加されるべきかについては、インストラクションデコーダが決定することができる。アプリケーションコードを走らせるカスタムICのためのソフトウエアツールは、自動的に生成することが可能である。これらのツールには、コンパイラ、アッセンブラ、リンカ、サイクル-ベースのシミュレータのうちの1つまたは複数が含まれる。ツールは、自動的にファームウエアを生成する。ツールは、ファームウエアのプロファイリングを行なうことが可能であり、ファームウエアのプロファイルを、最適化するアーキテクチャにフィードバックする。コンパイラのインストラクションスケジューラは、この電力最適化スキームが与えられ、利点を最大化するべくインストラクションの順序をアレンジすることが可能である。システムは、あらかじめ決定済みの物理的な制約に基づいてプロセッサアーキテクチャを反復的に最適化することが可能である。システムは、コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを実行することが可能である。システムは、コンピュータ可読コードを走らせるカスタム集積回路のためのソフトウエア開発キットSDKを自動的に生成することが可能である。コンピュータ可読コードは、アッセンブリコードに変換され、かつリンクされて、選択されたアーキテクチャのためのファームウエアを生成することが可能である。システムは、ファームウエアのサイクル精度のシミュレーションを実行することが可能である。アーキテクチャは、プロファイリングが行なわれたファームウエアおよび/またはアッセンブリコードに基づいて最適化が行われることが可能である。システムは、選択されたアーキテクチャのために、したがって、タイミング、面積、または電力に関して最適化された物理設計のために、レジスタトランスファレベルのコードを生成することが可能である。システムは、RTLコードを合成することが可能である。好ましい実施態様の利点には、次に示す内容のうちの1つまたは複数が含まれる。静的電力は、アーキテクチャ上の見通しからコントロールすることが可能である。このことは、チップ設計者に、消費される電力のより良好な取り扱いを前もって獲得させることになり、さらには電力関連のスケジュール遅延を回避させることにもなる。システムは、コスト関数の更新を通じて、ホット-スポット管理における予測可能性を改善する。これにより、ホット-スポットによって招かれる部分最適性に関して予期しない事態が発生することを回避することができる。インストラクションスケジューラにはデータモデルを通じて電力利用度が通知され、インストラクションの実行をスケジューリングすることによる真のコストを調べることができ、その結果、チップ上の最小限のホット-スポットを伴った高いパフォーマンスがもたらされる。したがって、このインストラクションスケジューラが、予測されたホット-スポット情報を使用し、かつこの情報を仮想リソース制約にマップすることが可能であるという点から、このインストラクションスケジューラは省電力指向であり、標準の既製のインストラクションスケジューラが省電力指向となることが可能となる。別の態様においては、コンピュータ可読コードおよびカスタム集積回路に対する1つまたは複数の制約を含むカスタム集積回路の仕様を受け取り、コンピュータ可読コードに対して固有のカスタマイズがなされたチップ仕様の物理的な合成のための情報を渡すべく、データモデル内においてアーキテクチャレベルの知識をエンコーディングし、チップ仕様の物理的な合成およびデータモデルの更新を、制約が満たされるまで反復的に実行し、半導体製造のために、チップ仕様のコンピュータ可読記述をカスタム集積回路内に合成する、ことによってカスタム集積回路を自動的に合成するシステムおよび方法が開示されている。上記の態様の実装には、次に示す内容のうちの1つまたは複数が含まれる。システムは、階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクスタグを適用することが可能である。アーキテクチャレベルの情報からのクリティカルパスを示すべく、名前に特定のプレフィクス/ポストフィクスをストアすることが可能である。システムは、マクロブロック名、階層名、プラグマ、コメント、ダミーモジュール、およびラッパーモジュールのうちの1つを用いて、最適なタイミングを実現するのための配置の制約を示すことが可能である。システムは、以前の繰り返しの中で取り込んだか、またはユーザによって供給された情報を使用して、クリティカルパスを検出するために先読みを実行することが可能である。制約は、レジスタトランスファ言語RTLの制約、フロアプランの制約、物理的な制約、タイミングの制約、電力の制約、システムレベルの制約のうちの1つであるとすることが可能である。制約情報は、とりわけネットリストのインスタンスのネーミングプロトコルを通じてデータモデルに提供することが可能である。システムの好ましい実施態様の利点には、次に示す内容のうちの1つまたは複数が含まれる。システムは、設計活動のなかでもっとも詳細な技術水準を要する物理的な合成を自動化する。初期の設計段階においては、実在のクリティカルパスが、解決可能なクリティカルパスによってマスクされる。システムは、いずれのクリティカルパスについて最適化を行なうかを自動的に決定し、かつ実在のクリティカルパスを自動的に明らかにする。システムは、非階層的設計方法および、単一の処理の実行の中で完全な回路を分析する階層的方法を使用する。この包括的アプローチは、設計者およびツールが常時、同一の回路のすべての側面に焦点を当てているため、設計の収束をもたらす。このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻るようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、コンピュータ可読コードまたはアルゴリズムが、それの適用のために特に最適化されたプロセッサ上において実装されることが可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエアツールおよびファームウエアアプリケーションとともに生成する。このプロセスは、これまで数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。このシステムは、ハードウエアチップソリューションが設計される方法におけるパラダイムを完全にシフトするものである。このシステムは、チップ設計の知識をまったく伴うことなく、アルゴリズム設計者自身が直接ハードウエアチップを作ることが可能となるように、リスクを取り除き、チップ設計を自動的なプロセスにする。システムへの一次的な入力は、CまたはMATLABマトラボ等のより高水準の言語で記述されたコンピュータ可読コードまたはアルゴリズム仕様となる。このシステムを使用する多くの利点のうちのいくつかには、次のようなものが含まれる。1スケジュール:チップ設計サイクルが数年単位ではなく数週単位に落ち着くことになる場合には、このシステムを使用している会社が、自社の製品をすばやく市場に持ち込むことによって急速に変化する市場に浸透することが可能になる。2コスト:一般にチップの実装に使用する必要がある多数の技術者が不必要なものとなる。このことは、このシステムを使用している会社に夥しいコストの節約をもたらす。3最適性:このシステムプロダクトを使用して設計されたチップは、優れたパフォーマンス、面積、および電力消費を有している。このシステムは、システムの設計にデジタルチップ構成要素を有するシステムの設計で使用される方法におけるパラダイムを完全にシフトするものである。このシステムは、C/MATLABマトラボで記述されたアルゴリズムからデジタルハードウエアを生成する完全に自動化されたソフトウエアプロダクトである。このシステムは、CまたはMATLABマトラボ等の高水準言語を採用してハードウエアチップを実現するプロセスへの独特のアプローチを使用する。要約して言えば、これは、チップ設計を完全に自動化されたソフトウエアプロセスにする。図1は、カスタムICを自動的に生成するシステムの一例を示している。図1のシステムは、選択された目標とするアプリケーションに対する最適カスタム集積回路ソリューションを自動的に生成することをサポートする。目標とするアプリケーションの仕様は、一般に、C、MATLABマトラボ、SystemCシステムC、フォートラン、エイダ等の高水準言語またはそのほかのいずれかの言語によるコンピュータ可読コードとして表現されたアルゴリズムを通じてなされる。仕様は、目標とするアプリケーションの記述を含み、またそれには、望ましいコスト、面積、電力、速度、パフォーマンス、およびそのほかのハードウエアソリューションの属性といった1つまたは複数の制約も含まれる。物理的な合成を補助するため、システムは、ネットリストファイルに側波帯情報をエンコーディングし、オリジナルのユーザ制約のみで実現されるより、物理的な合成のガイドする上でより生産的な物理的はもとよりタイミングの設計制約をファイルに保存することが可能である。起き得る形態においては、その種の制約は、ネットリストのインスタンス名設定スキームを通じた暗黙的なものである。図1においては、ICカスタマがプロダクト仕様102を生成する。通常は、所望のプロダクトのすべての主要機能を取り込んだ初期プロダクト仕様が存在する。そのプロダクトから、アルゴリズムの専門家がそのプロダクトに必要とされるコンピュータ可読コードまたはアルゴリズムを識別する。それらのアルゴリズムのうちのいくつかは、サードパーティから、または標準開発委員会からのIPとして利用可能となることがある。それらのうちのいくつかは、製品開発の一部として開発されなければならない。この態様においては、さらにプロダクト仕様102が、とりわけCプログラム等のプログラムまたはMATLABマトラボモデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム104で詳述される。プロダクト仕様102は、また、とりわけコスト、面積、電力、プロセスタイプ、ライブラリ、およびメモリタイプ等の要件106も含んでいる。コンピュータ可読コードまたはアルゴリズム104および要件106は、自動化されたICジェネレータ110に提供される。コードまたはアルゴリズム104およびチップ設計に課せられた制約だけに基づいて、ICジェネレータ110は、図2のプロセスを使用し、人間の係り合いをまったく伴うことなく、GDSファイル112、ICに実行させるファームウエア114、ソフトウエア開発キットSDK116、および/またはテストスイート118を含む出力を自動的に生成する。GDSファイル112は、カスタムチップ120の製造に使用される。その後ファームウエア114が、製造されたこのチップ上で実行されて、カスタマプロダクト仕様102を実装する。物理的な合成の間、ICジェネレータ110は、ネットリストファイルに側波帯情報をエンコーディングする。その後、システムは、物理的な合成のガイドする上での物理的はもとよりタイミングの設計制約を適用する。起き得る形態においては、その種の制約は、ネットリストのインスタンス名設定スキームを通じた暗黙的なものである。図1のシステムは、チップ設計の課題を緩和し、それを単純なプロセスにする。このシステムは、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わりに、アルゴリズムが、その適用のために特に最適化されたデジタルチッププロセッサ上において実装されることが常に可能となる。システムは、この最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエアツールおよびファームウエアアプリケーションとともに生成する。この全体的なプロセスは、これまで数年を要する問題として対処されていた事項を、数日の問題として対処することを可能とする。要約して言えば、このシステムは、プロダクト開発のデジタルチップ設計部分をブラックボックス化する。1つの実施態様においては、このシステムプロダクトが、次に示すものを入力することが可能である。C/MATLABマトラボで定義されたコンピュータ可読コードまたはアルゴリズム、必要とされる周辺機器、IO仕様、面積目標、電力目標、マージン目標将来的なファームウエア更新のためにどの程度のオーバーヘッドを組み込むべきか、またどの程度複雑性が増加するか、プロセスの選択肢、標準セルライブラリの選択肢、メモリコンパイラの選択肢、テスト可能性スキャン、タップコントローラ、内蔵セルフテスト機能等。システムの出力は、関連付けされるファームウエアすべてを伴ったデジタルハードマクロとすることができる。このデジタルハードマクロのために最適化されたソフトウエア開発キットSDKもまた自動的に生成されて、ファームウエアに対する将来的なアップグレードがプロセッサの交換を強いることなく実装されることが可能である。図2は、カスタムICを自動的に生成するワークフローの一例を示している。このシステムは、選択された目標とするアプリケーションに対する完全かつ最適なハードウエアソリューションを自動的に生成する。共通の目標とするアプリケーションは埋め込みアプリケーション領域内にあるが、それらは、必ずしもそれに限定されない。図2を参照すると、まずASICカスタマがプロダクト仕様202を生成する。プロダクト仕様202は、さらに、とりわけCプログラム等のプログラムまたはMATLABマトラボモデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム204で詳述される。プロダクト仕様202は、また、とりわけコスト、面積、電力、プロセスタイプ、ライブラリ、およびメモリタイプ等のプロダクトパラメータおよび要件206も含んでいる。コンピュータ可読コードまたはアルゴリズム204およびプロダクトパラメータ206は、自動最適インストラクションセットアーキテクチャジェネレータAOISAG210を含む自動化されたICジェネレータ110に提供される。ジェネレータ210は、自動最適チップジェネレータAOCHIPG244を駆動する自動最適RTLジェネレータAORTLG242をコントロールする。AOCHIPG244は、ネットリストファイルに側波帯情報をエンコーディングし、オリジナルのユーザ制約のみで実現されるより、物理的な合成のガイドする上でより生産的な物理的はもとよりタイミングの設計制約をファイルに保存することが可能である。起き得る形態においては、その種の制約は、ネットリストのインスタンス名設定スキームを通じた暗黙的なものである。AOCHIPG244およびAORTLG242の出力は、AOISAG210のフィードバックループ内に提供されている。またAOISAG210は、自動最適ファームウエアツールジェネレータAOFTG246もコントロールし、それの出力は、自動最適ファームウエアジェネレータAOFG248に提供される。AOFG248の出力もまた、AOISAGへのフィードバックループ内に提供される。ICジェネレータ110は、出力として、GDSファイル212、ICを実行させるファームウエア214、ソフトウエア開発キットSDK216を生成する。GDSファイル212およびファームウエア214は、カスタムチップ220を製造するTSMCまたはUMC等のIC製造器230に提供される。1つの実施態様においては、システムが完全に自動化される。人力の介入または誘導は、まったく必要とされない。このシステムは、最適化されている。ツールが、最適ソリューションを自動的に生成することになる。このほかの実施態様においては、必要であればユーザが間に割り込んで人間による誘導を提供することが可能である。AOISAG210は、最適インストラクションセットアーキテクチャISAと呼ばれているを自動的に生成することが可能である。ISAは、プログラマブルハードウエアソリューションの実現に必要とされ、かつ全デジタルチップ仕様を規定するあらゆる詳細まで定義される。これらの詳細は、次に例として示すファクタのうちの1つまたは複数が含まれる。1インストラクションセットの機能、エンコーディング、および圧縮、2コ‐プロセッサ/マルチ‐プロセッサアーキテクチャ、3スカラー性、4レジスタファイルサイズおよび幅、アクセス待ち時間およびポート、5固定小数点サイズ、6静的および動的分岐予測、7コントロールレジスタ、8スタック演算、9ループ、10サーキュラーバッファ、11データアドレシング、12パイプラインの深さおよび機能、13サーキュラーバッファ、14周辺機器、15メモリアクセス/待ち時間/幅/ポート、16スキャン/タップコントローラ、17専用アクセラレータモジュール、18クロック仕様、19データメモリおよびキャッシュシステム、20データプリ‐フェッチメカニズム、21プログラムメモリおよびキャッシュシステム、22プログラムプリ‐フェッチメカニズム。AORTLG242は、最適ISAから、レジスタトランスファ言語RTLでのハードウエアソリューションの自動生成を提供する自動最適RTLジェネレータである。AORTLG242は、完全に自動化されている。人力の介入または誘導は、まったく必要とされない。ツールが、最適ソリューションを自動的に生成することになる。生成されたRTLは合成可能、かつコンパイル可能である。AOCHIPG244は、最適RTLからGDSIIハードウエアソリューションの自動生成を提供する自動最適チップジェネレータである。ツール244は、完全に自動化されている。人力の介入または誘導は、まったく必要とされない。ツールが、最適ソリューションを自動的に生成することになる。生成されたチップは、完全に機能を実現するものであり、かつ修正を伴うことなく標準FABを使用して製造することが可能である。AOFTG246は、ハードウエアソリューション上におけるファームウエアコードの開発に必要とされるソフトウエアツールを自動的に生成するための自動最適ファームウエアツールジェネレータである。これは、完全に自動化されている。人力の介入または誘導は、まったく必要とされない。ツールが、最適ソリューションを自動的に生成することになる。コンパイラ、アッセンブラ、リンカ、機能シミュレータ、サイクル精度のシミュレータといった標準ツールを、デジタルチップ仕様に基づいて自動的に生成することが可能である。AOFG248は、結果として得られるチップ120による実行が必要になるファームウエアの自動生成を実行する自動最適ファームウエアジェネレータである。このツールは、完全に自動化されている。人力の介入または誘導は、まったく必要とされない。それに加えて、このツールは、最適ソリューションを自動的に生成することになる。最適化されたリアルタイムオペレーティングシステムRTOSもまた、自動的に生成することが可能である。チップ仕様は、カスタマアプリケーションの実行に必要とされる正確な機能ユニットを定義する。またこれは、並列に使用されるこれらのユニットの数が決定されるように固有の並列処理も正確に定義する。ミクロ的およびマクロ的レベルの並列処理の複雑性が、すべて、プロファイリング情報から抽出され、したがってチップ仕様は、この情報を伴って設計される。したがって、チップ仕様は、最適に設計され、この種のプロファイリング情報を伴わないでチップ仕様が設計される場合に起こり得るような設計が過剰になることまたは設計が不足することがない。動的プロファイリングの間に分岐の統計値が収集され、この情報に基づいて分岐予測メカニズムが最適に設計される。また、連続するインストラクションの間におけるすべての依存性チェックも、このプロファイリングから既知となり、したがってチップ仕様のパイプラインおよびインストラクションスケジューリングに関する点のすべてが最適に設計される。チップ仕様は、次に挙げるようなオプションを提供することが可能である。ラッピングについて絶えずテストすることを必要とせずに、サーキュラーバッファが実装されることを可能にする、ハードウエアモジュロアドレシング。DMAを広範囲に使用し、コードを予測してキャッシュ階層および関連する遅延についての情報が書き込まれる、ストリーミングデータのために設計されたメモリアーキテクチャ。複数の演算ユニットの駆動は、メモリアーキテクチャが毎インストラクションサイクル当たりいくつかのアクセスをサポートすることを要求する。独立したプログラムおよびデータメモリハーバードアーキテクチャ、および場合によっては複数のデータバス上における同時アクセス。特殊SIMD単一インストラクション多重データ演算。いくつかのプロセッサは、VLIWテクニックを使用し、したがって各インストラクションが複数の演算ユニットを並列に駆動する。特殊な演算、たとえば高速積和演算MAC等。ビット反転アドレシング、FFTの計算に有用な特殊なアドレシングモード。特殊なループコントロール、たとえばインストラクションのフェッチまたは出口テストのためのオーバーヘッドを伴わない非常にタイトなループ内において少数のインストラクションワードを実行するためのアーキテクチャ上のサポート等。データ欠如のために実行ユニットが機能停止することが皆無であるように、データプリ‐フェッチメカニズムと結合された特殊なプリ‐フェッチインストラクション。これにより、メモリ帯域幅が、所定の実行ユニットおよびその種の実行ユニットを使用するインストラクションのスケジューリングのために最適に設計される。図3は、図1のカスタムチップ120を自動的に生成するためのプロセスフローの一例を示している。ここで図3を参照するが、まずカスタマプロダクト仕様が生成される302。カスタマプロダクト仕様302は、さらに、とりわけCプログラム等のプログラムまたはMATLABマトラボモデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム304で詳述される。カスタマアルゴリズム304は、静的316および動的318にプロファイリングが行なわれる。このプロファイリングから収集された統計が、アーキテクチャオプティマイザユニット320内において使用される。このユニットはまた、カスタマ仕様302も受け取る。ベース機能ジェネレータ314は、カスタマアルゴリズム304の実装に必要となる基本的演算子または実行ユニットを決定する。ベース機能ジェネレータ314の出力はまた、アーキテクチャオプティマイザ320へも供給される。アーキテクチャオプティマイザ320の出力に基づいて、初期チップ仕様がアーキテクチャ322として定義される。続いてこれが、ツールジェネレータ332ユニットに供給されて自動的にコンパイラ306、アッセンブラ308、リンカ310、およびサイクル精度のシミュレータ338を生成する。その後、これらの一連のツールを使用して、カスタマアルゴリズム304が、アーキテクチャ322上で実行することが可能なファームウエア312に変換される。アッセンブラ308の出力は静的プロファイリング334が行ない、サイクル精度のシミュレータ338の出力は動的プロファイリング340が行なう。これらのプロファイル情報は、その後、アーキテクチャオプティマイザ342によって使用され、アーキテクチャ322の純化および改善が行なわれる。カスタマ仕様が満たされるまで322から332、306、308、310、312、338、340、342へと至り、322に戻るフィードバックループ、および322から332、306、308、334、342へと至り、322に戻るフィードバックループが、反復的に実行される。これらのフィードバックループは、人間の介入をまったく伴わずに自動的に生じ、したがって自動的に、最適ソリューションに到達する。アーキテクチャオプティマイザ342は、アーキテクチャフロア‐プランナ336および、合成およびPR328フィードバックにも基づいている。アーキテクチャの決定は、アプリケーションプロファイリング情報だけでなく、物理的な場所およびルート情報も参照して行なわれる。アーキテクチャの最適化は正確であり、設計済みアーキテクチャのバックエンド設計で起き得る驚きの事態が生じることはない。たとえば、アーキテクチャオプティマイザが、2つの16ビットのオペランドを入力として取り、32ビットの結果を生成する乗算器ユニットを使用することを選択したものとする。アーキテクチャオプティマイザ342は、それらのオペランドを適用した時点と、フロア‐プランナ336および合成328からの結果を利用可とする時点との間における正確なタイミング遅延を承知している。アーキテクチャオプティマイザ342はまた、実際のチップ内において乗算器が配置され、ルーティングされるときの正確な面積も承知している。したがって、この乗算器を使用するためのアーキテクチャは、プロファイリングデータからのこの乗算器の必要性に基づくだけでなく、面積、タイミング遅延パフォーマンスとも呼ばれている、および電力の観点から見たこの乗算器に関連するコストにも基づいて決定される。別の例においては、パフォーマンスがカスタムチップ上における制約事項である場合に、パフォーマンスを高速化するために、コンパイラ306は、シリアルプロセッサ上での実行に長時間を要するプログラム、コード、またはアルゴリズムを抽出し、同時演算が可能な複数の処理ユニットを含む新しいアーキテクチャがあれば、それを、多重処理ユニット内において並列に、またはオーバーラップ態様で処理することが可能である複数の部品に分解することによってプログラムの実行時間を短縮する。フロントエンドの追加のタスクは、並列処理を捜し出すことであり、バックエンドの追加のタスクは、正しい結果および向上したパフォーマンスが獲得される態様でそれをスケジュールすることである。システムは、どのような種類の部品をプログラムが分割するか、およびどのようにそれらの部品を再アレンジできるかについて決定する。これには、次の事項が含まれる。並列処理の精度、レベル、および程度、並列実行の候補の間における依存度の分析。別の例においては、空間または電力がカスタムチップ上における制約事項である場合に、たとえばコンパイラは、コードをシーケンシャルに実行して電力およびチップの地積要件を節約する単一の低電力プロセッサDSPを生成することになる。アーキテクチャブロック322から、プロセスは、RTLジェネレータ324を使用してRTLを生成することができる。RTLコードが生成され326、当該RTLコードを、合成配置およびルーティングブロック328に提供することができる。アーキテクチャフロア‐プランナからの情報もまた考慮に入れることが可能である336。レイアウトを生成することが可能である330。このレイアウトは、たとえば、GDSIIファイルフォーマットとすることができる。本発明の1つの態様は、統一されたアーキテクチャ322の表現形式であり、ソフトウエアツールジェネレータ332およびハードウエアRTLジェネレータ324の両方がこの表現形式を使用することが可能となるように作り出される。この表現形式は、SAMAシステム、アーキテクチャ、およびマイクロ‐アーキテクチャと呼ばれている。アーキテクチャ設計動作は、カスタムチップによって実行されることになるプログラム、コード、またはアルゴリズムの分析に基づく。1つの実装においては、ユニスカラープロセッサ上での実行に長時間を要するプログラムがある場合に、システムは、多重処理ユニット内において並列に、またはオーバーラップ態様で処理することが可能な複数の部品に処理要件を分解することによってパフォーマンスを向上させることが可能である。フロントエンドの追加のタスクは、並列処理を捜し出すことであり、バックエンドの追加のタスクは、正しい結果および向上したパフォーマンスが獲得される態様でそれをスケジュールすることである。システムは、どのような種類の部品をプログラムが分割するか、およびどのようにそれらの部品を再アレンジできるかについて決定することが可能である。これは、並列処理の精度、程度をはじめ、並列実行の候補の間における依存度の分析を伴う。プログラムの部品および複数の処理ユニットが広い範囲にわたることから、異なるコンパイルアプローチを必要とする適正な数の組み合わせが可能である。これらの組み合わせのために、チップ仕様は、設計の過剰または不足がまったく存在しないように計算ユニットのサポートに必要とされるデータ帯域幅が正しく設計される。アーキテクチャオプティマイザ342は、最初にプログラム内の潜在的な並列ユニットを識別し、続いて、それらに対する依存度分析を実行して、互いに独立であって、しかも同時に実行することが可能なセグメントを見つけ出す。アーキテクチャオプティマイザ342は、マシンインストラクションの精度レベルの点で並列処理を識別する。たとえば、標準スカラープロセッサ上における2つのN要素ベクトルの加算は、一度に1つのインストラクションを実行することになる。しかしながら、ベクトルプロセッサ上においては、すべてのN個のインストラクションをN個の独立したプロセッサ上で実行することが可能であり、そのことは合計時間を、単一の加算の実行に必要とされる時間のN倍をわずかに超える程度にまで短縮する。アーキテクチャオプティマイザは、ベクトルステートメントに等価なシーケンシャルステートメントを採用し、ベクトルマシンインストラクションへの翻訳を行なう。ベクトル化を可能にする条件は、ソースオペランドの要素が結果のオペランドから独立していなければならないということである。たとえば、次のようなコードがある。DO100J=1,NDO100I=1,NDO100K=1,NCI,J=CI,JAI,K×BK,J100CONTINUEこの行列乗算の例では、各繰り返しが、直前の繰り返しにおいて計算されたCI,Jの値を使用してCI,Jを計算しており、したがってベクトル化は可能でない。パフォーマンスが希望されているのであれば、システムは、このコードを次のように変換する。DO100J=1,NDO100K=1,NDO100I=1,NCI,J=CI,JAI,K×BK,J100CONTINUEこの場合においては、連続するインストラクションが互いに独立しているCI‐1,JおよびCI,Jを計算し、異なるプロセッサ上において同時に実行可能であることからベクトル化が可能である。このように、インストラクションレベルにおける依存度分析は、オペランドレベルの依存度を認識し、とりわけ、適切な最適化を適用してベクトル化を可能にする補助となることが可能である。図4は、データモデルの一例を示している。アーキテクチャオプティマイザ342は、ASICのアブストラクト統一表現である、システム、アーキテクチャ、およびマイクロ-アーキテクチャSAMA表現120と呼ばれるアプリケーションコードに対してカスタマイズされた中間ハードウエア表現を生成する。データモデルDM280は、設計の多様なビューを用いてSAMAを表現することが可能である。SAMAは、ソフトウエアコンピレーションとハードウエア合成の間における遷移レイヤとして作用する。その種の遷移レイヤには、コンパイラツールフロー内において利用可能な最適化を利用し、かつ低レベルシンセサイザへの自由度の提供、アプリケーション固有の実装のためのオプションの探索も行なうことが意図されている。DM280は、アプリケーションの多様なビューの生成に使用することが可能である。たとえば、アーキテクチャオプティマイザビュー282が、オプティマイザによる制約に対する設計の最良の割り当てが可能となるように、タイミング、面積、電力効率等のアーキテクチャ上の構成要素情報を提供する。空間/サイズ要件等の物理的な制約に取り組む物理設計ビュー284を生成することが可能である。ソフトウエアツールビュー286は、DM280をてこ入れして、使用するソフトウエアのためのISAおよびアーキテクチャ上の制約を提供することが可能である。そのほかのビューも同様にDM280から生成することが可能である。DM280は、図3のツールによって生成される情報のリポジトリであり、その種の情報は、ICのレイアウトの最終的な生成に必要とされる。DM280は、異なるツールによってクエリを行なうことが可能な異なるビューを生成することが可能である。これらのビューは、物理設計の間に使用することが可能である。図5は、図4のデータモデルを使用して物理的な合成を実行するためのプロセスの一例を示している。このプロセスは、コンピュータ可読コードに対して固有のカスタマイズがなされたチップ仕様の物理的な合成のための情報を渡すべく、データモデル内において初期アーキテクチャレベルの情報をエンコーディングする510。次に、プロセスは、それぞれの繰り返しの中でチップ仕様の物理的な合成およびチップ仕様のデータモデルの更新を反復して行い、制約が満たされるまで実行する520。以前の繰り返しから生成された情報が、データモデルを通じて次の繰り返しに供給されるクリティカルパスのルックアヘッド情報とともにフィードバックループとして提供される530。たとえば、システムは、階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクスタグを適用することが可能である。システムは、マクロブロック名、階層名、プラグマ、コメント、ダミーモジュール、およびラッパーモジュールのうちの1つを用いて最適なタイミングを実現するための配置の制約を示すことが可能である。アーキテクチャレベルの情報からのクリティカルパスを示すべく、名前に特定のプレフィクス/ポストフィクスを格納することが可能である。したがって、1つの例においては、先行するパスの間にサブモジュールAをサブモジュールBおよびCの近くに配置する必要があった場合に、この関係をABCと表示することが可能であり、同様にBをBACと表示することが可能である。すべての制約が満たされる最終的な繰り返しの過程で、プロセスは、半導体製造のために、チップ仕様のコンピュータ可読記述をカスタム集積回路内に合成する。図5は、アーキテクチャレベルのホヮット-イフインクリメンタルコスト推定データモデルWICE-DMの一例を示している。WICE-DMアーキテクチャは、フロント-エンド、バック-エンド、コンテキスト管理セクション、およびAPIセクションからなる。フロント-エンドは、A2C設計技法で念入りに作られたアーキテクチャ設計状態を表わす。この念入りに作られた設計は、相互に参照される多アスペクト多レベルMAMLハイパーグラフ構成で記録されるが、これは、非常に効率的なカスタマイズを可能とする設計アブストラクションモデルDAMの生成を可能にする。バック-エンドは、物理設計を意識したホヮット-イフインクリメンタルコスト推定エンジンを表わす。コンテキスト管理セクションは、フロント-エンドがバック-エンドにおける分析を駆動するべく生成しなければならない適切なDAMを決定する。次に、MAMLハイパーグラフ構成の一例について考察する。ハイパーグラフは、よく知られたグラフ構造であり、そのグラフ構造は、相互接続を、ノードの単一ペアに対向するようにハイパー-エッジすなわち、複数のヘッドおよび複数のテールとしてモデリングするものである。ハイパーグラフ内の多レベルの階層は、配置の間におけるネットリスト分割をはじめ、設計検証問題において使用することが可能である。この回路図は、4つの頂点白の矩形およびディスクとして描画されるがツリーとして描画される3つのハイパーエッジによって接続されるハイパーグラフの線画として解釈される。たとえば、回路図は、ツリーとして描画されるハイパーエッジによって複数の頂点構成要素を表わす白の矩形およびディスクとして描画されるが接続される、ハイパーグラフの線画として解釈される。ハイパーグラフは、オーバーラップする階層をサポートする複数の階層アスペクトをサポートすることが可能である。このことは、アスペクト間の効率的な切り換えが可能なハイパーグラフを可能にする。図5は、アーキテクチャおよびマイクロ-アーキテクチャレベルのインクリメンタルホヮット-イフ分析のための物理設計PDモデルベースの面積、電力、および遅延コスト推定についてのデータフローを示している。図5を参照すると、i回の繰り返しの後に、次のSAMAi1が、502において、次の繰り返しへの入力として使用される。したがって、第i回のSAMAは、504において更新される。504におけるSAMAは、506においてCAシミュレータに、510においてアーキテクチャオプティマイザに提供される。AO510は、コスト関数クエリAPI512を通じて伝達する。SAMAは、SAMAリーダAPI514を通じて伝達する。CAsimは、プロファイルデータリーダAPI516を通じてプロファイル情報を送る。SAMAリーダAPI514は、アーキテクチャ設計状態MAML-HG518に、アーキテクチャおよび合成情報を伝達する。コスト関数クエリAPI512は、評価コンテキスト管理515に情報を提供し、続いてそれが、MAML-HG518に情報を提供する。コンテキスト管理515は、評価コンテキスト物理設計モデルの形成に使用することが可能である。コンテキスト管理515は、ベースラインから提案された設計の修正の記録を保持している。コスト評価の初期段階の間には、多くの変更が確定されることなく提案される。確定されたコンテキストは、ベースライン設計の一部になるSAMAファイルの更新。MAML-HG518は、多レベルのX階層マネージャ520に対して多レベルのハイパーグラフデータ構造を提供する。続いてマネージャ520が多様なビューを、とりわけブラック-ボックスビュー522、カスタム多分解能階層的ビュー524、および完全に合成可能なネットリストビュー526を含む多様なビューを提供する。これらのビュー522乃至526は、ベースラインの物理設計モデル528の形成に使用することが可能である。モデル528乃至530は、とりわけ電力ホット-スポット推定エンジン540、遅延およびタイミング推定エンジン542、および面積推定エンジン544によって使用されることが可能である。電力ホット-スポット推定エンジン540は、MAML-HG518から推定による作動係数AFsを受け取ることが可能である。エンジン540乃至544からのデータは、分析情報マネージャ550に提供され、それがコスト関数クエリAPI512を介してAO510にフィードバックを提供する。次に、APIの一例について、より詳細に考察するコスト関数推定CFEAPI。booleandefine_contextcontext_name{change_list}booleanset_active_contextcontext_nameresponse_typecompute_delay{path\whole_chip}response_typecompute_areacomponentbooleancommit_contextcontext_name-outfileNamesama_i.txtresponse_typeは、以下の情報を含む。●相対的コスト遅延、面積、電力等、実際のクエリに依存する○定性改善、有意の影響なし、低下○定量定性的変化のヒューリスティックな測度●補足的な物理設計の最適化を伴う条件付きコストSPDO○補足的なPD最適化ID将来的な参照のための内部のブック-キーピングID○WAが受け入れられた場合の新しい相対的コスト●信頼区間○0と1の間の値○1は、もっとも正確なデータ駆動ツールのフローを伴ってコストが計算されたことを意味する○0は、コストが大まかに推定されたことを意味し、詳細なコスト分析が実行された場合には大きく異なる可能性が非常に高い。補足的な最適化提案IDによってインデクスされるを提供する能力は、物理設計の最適化を向上させ、アーキテクチャの最適化がまだ処理中であり、最適化が完了していないときにはAOに影響を与える。標準的なの工業フローにおいては、アーキテクチャの最適化が完了するまで物理設計の最適化が行なわれない。同時にAOは、代替案を詳細を意識する必要はない。このメカニズムは、AOが、単なる直接に計算されたコスト関数ではなく、広範囲にわたって変化する最適化の結果を考慮することを可能にし、したがって、より良好な設計の収斂を可能にする。別のAPIの一例は、次のようなパス作動プロファイルである。パスプロファイルPPAPIset_path_likelihoodpathactivity_factorパス作動係数は、そのパスが用いられる確率または尤度である。この情報は、サイクル精度のシミュレータから利用することが可能である。WICE-DMは、この情報を、物理設計のモデリングから獲得されたパスのトポロジ情報と統合する。その結果として、それが、物理設計の各単位面積についての電力利用度の見積を生成する。続いてこれが、電力ホット-スポット情報を提供し、その後それは、フィードバックとしてリソース制約の形式でインストラクションスケジューラに提供することが可能である。このフィードバックの正味の効果は、a潜在的なタイミングおよびそのほかの信号品質の問題が回避されるようにインストラクションがスケジュールされること、およびb電力の散在、クロックゲーティングまたはそのほかの技術を用いて電力ホット-スポットの近隣となる必要がある構成要素を組み込むことが可能となり、かつその種の即席処理の面積/タイミングのコストが直ちに利用可能となることである。図5の1つの実施態様においては、アーキテクチャレベルの情報が、通常は物理的な合成に利用可能でない情報を渡すべく、ネットリストファイル内にエンコーディングされる。たとえば、階層名には、その階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクスタグを含めることができる。この情報は、ツールチェーンキャパシティの向上に帰する物理的な分割を行う点で、より積極的な決定を行なうために有用であり、この結果、より高速なターンアラウンド時間を実現できる。インスタンスの名前もまた、アーキテクチャレベルのモデルが、これを、実在のクリティカルパスのためのありえる経路として見るか否かを示す特定のプレフィクス/ポストフィクスを含めることができる。物理的な合成は、正しいものが発見されるまで正しくないものを徐々に除いていくのではなく、実在のクリティカルパスに対するルックアヘッドを行なうことが可能である。これは、望ましくない最適化ほかのコスト増加を導く過剰な最適化を除去し、ターンアラウンド時間を節約する。別の例として、特定のマクロブロックに、配置制約とりわけアレイの配置等を示す名前を付けることができ、それが、一度目で最適タイミングを達成することの補助となる。ネットリストファイルに側波帯情報をエンコーディングすることに加えて、図3のフローは、オリジナルのユーザ制約のみで生成するより、物理的な合成を導出する上でより生産的な物理的はもとよりタイミングの設計制約を生成することも可能である。いくつかの場合においては、その種の制約は、ネットリストの名前設定スキームを通じて暗黙的なものである。図6は、設計のフロント-エンドを初期化するプロセスの一例を示している。フロント-エンドは、アーキテクチャ設計状態を表わす。フロント-エンドは、SAMAファイルからのアーキテクチャ仕様の高水準の記述を得、指定されたアーキテクチャを実現するために必要とされるすべての機能構成要素の詳細を完全な形で生成する。図6は、WICE-DMフロント-エンドを初期化するためのプロセスである。このプロセスは、XMLマークアップ言語を使用し、マシンによるデータの把握をサポートする。このプロセスでは、SAMADTDが602において受け取られてXMLパーザ604に送られるが、ここでは、606におけるSAMAバージョン情報も受け取られる。XMLパーザ604は、610においてWICE-DMコールバック機能を、612においてSAMA変数空間を、セットアップする。またプロセスは、614においてアーキテクチャを生成し、616においてアーキテクチャ設計状態MAML-HGを生成する。初期化が終了すると、この念入りに作られたアーキテクチャが、すべてのコスト関数クエリのためのベースラインとして働く。図7A及び図7Bは、最適化ループバック710を伴う物理的な合成プロセスの一例を示している。複数のループバック710は、プロセスは、改善のために焦点を当てることが可能な特定の動作について、細かい精度での最適化を可能にする。720におけるフロント-エンドから、プロセスは、階層構造および透過性プランニング722を実行する。次に、723においてI/O配置制約を受け取った後、フルチップI/Oプランニングが行なわれる724。726においては、ブロックシェイピングを行なうことが可能である。次に、相対配置制約を受け取ることが可能であり727、728において粗配置を行なうことが可能になる。750においては、フィードスループランニングを行なうことが可能である。プロセスは、752における電力グリッドプランニングおよび接続に進む。754においては、クロック配置プランニングが行なわれる。756においては、HFNハイファンアウトネットおよびFTNフィードスルーネット固定動作を行なうことができる。その後758において、ブロックレベルの配分割り当てを行なうことができる。760においては、トップレベルとブロックレベルの物理的な分割が行なわれる。最適化されたトップレベルの配置は、762において決定することが可能である。最適化されたトップレベルのクロックは、764において決定することが可能である。トップレベルの最適化されたルーティングは、766において決定することが可能である。トップおよびブロックの物理的な分割から、プロセスは、チップの各ブロックについてモジュール788を実行することが可能である。モジュール788内では、790において最適化されたブロックレベルの配置を決定することが可能である。最適化されたブロックレベルのクロックは、792において決定することが可能である。最適化されたブロックレベルのルーティングは、794において決定することが可能である。さらに、796においてブロックSTAを行なうことが可能である。766または796から、プロセスは、768におけるフルチップ集積化、および770におけるフルチップSTAを実行する。フルチップSTAの結果が合格であれば、780においてプロセスが物理設計モデルを生成するが、そうでなければいずれかの710にループバックして、設計の最適化および制約への適合を行なう。1つの実施態様における、クリティカルパスのルックアヘッドを伴う物理的な合成プロセスの擬似コードの一例は次のとおりである。スタート→ゲートレベルネットリスト1.設計分割2.粗配置3.分割のサイジングおよび成形4.トップレベルのI/Oパッド配置5.ロジック配置6.HFNバッファリング7.ブロックI/O割り当てフィードスルーを含む→ブロックフロアプラン準備完了8.バッファリングの最適化9.推定によるSTA←目標を満たさなければならず、そうならない場合には、設計が収斂しない可能性が非常に高い。10.ブロックレベルの予算作成→ブロックSDC準備完了11.{ブロック}1.スタート→ブロックI/Oが固定されたブロックフロアプラン2.詳細な配置最適化を実行する3.詳細なクロックツリー合成および最適化を実行する4.詳細なルーティング最適化を実行する5.ブロックレベルSTA←現在のタイミング問題を確定するには局所的な目標を満たさなければならない。12.トップレベルアッセンブリ1.スタート→トップレベルネットリストの詳細な配置最適化2.トップレベルネットリストの詳細なクロック最適化3.トップレベルネットリストの詳細なルート最適化13.詳細な寄生抽出14.フルチップSTA←テープアウトに移行するには目標を満たさなければならない。15.チップ仕上げタスク-メタルフィル等終了→GDSIIレイアウトゲートレベルネットリストが、プロセスへ入力される。プロセスは、2つのループを有している。ループ1においては、ステップ1から9までが、通常、ステップ9の目標に到達するために多数回にわたって反復される。ループ2においてもステップ11.1から11.5までが、各ブロックについて多数回にわたって反復され、ステップ10における見積が収束しないことが明らかになると、ループ1のやり直しが必要になることがある。ステップ14は、ステップ9にて見積もられたSTAに現実性の点で一貫性がなかった場合、それを理由に不合格となる可能性がある。図8Aは、インストラクション実行プロファイルに基づいたインストラクションの発行とパスエクササイズの間における相関を図解した一例の図式である。サイクル精度のシミュレータが、パスが実行される確率または尤度であるパス作動係数を提供する。WICE-DMは、この情報を、物理設計のモデリングから獲得されたパスのトポロジ情報と統合する。その結果として、それが、物理設計の各単位面積についての電力利用度推定を生成する。続いてこれが、電力ホット-スポット情報を提供し、その後それは、フィードバックとしてリソース制約の形式でインストラクションスケジューラに提供することが可能である。このフィードバックの正味の効果は、a潜在的なタイミングおよびそのほかの信号品質の問題が回避されるようにインストラクションがスケジュールされること、およびb電力の散在、クロックゲーティングまたはそのほかのテクニックを用いて電力ホット-スポットの近隣となる必要がある構成要素を組み込んで変更することが可能となり、かつこのような適宜の変更により面積/タイミングのコストが直ちに利用可能となることである。伝統的なフローでは、物理設計段階において、利用可能な実行パスの尤度についての唯一の情報は、ユーザ指定のフォールスパス0の確率を有するものである。WICE-DMにおいては、このコンセプトが、0から1までの確率値の範囲を表わすべく拡張される。このメカニズムは、WICE-DMがアーキテクチャオプティマイザの挙動に影響を及ぼすことを可能にする。したがって、AOは、以前は置き去りにされていた可能性のあるより新しいパス内を検索することができるようになり、最適化の結果、異なるソリューションに収束することとなる。図8Aは、4つのインストラクションI1乃至I4についてインストラクション実行経路トポロジの一例を示している。この例においては、インストラクションスケジューラが、I1→I2→I3→I4の順序でそれらの実行をシーケンス処理することを選ぶ。電力ホット-スポット推定によるコストに基づいて、WICE-DMは、新しいリソース制約を挿入してインストラクションスケジューラに影響を及ぼす。それにより、新しい最適実行順序を、I1→I3→I4→I2とすることができることになった。この実行順序の再整理は、電力ホット-スポットエリアが再び作動される前に冷却される時間を与える。図8Bは、インストラクションスケジューラがインストラクション実行プロファイルに基づいてどのように電力ホット-スポットを最小化することが可能であるかを図解した一例の図式である。このプロセスは、コンピュータ可読コードを含むカスタム集積回路の仕様を受け取り、かつそのコンピュータ可読コードのプロファイルを生成してインストラクション利用度を決定し810、そのコンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサアーキテクチャであって、1つまたは複数のインストラクションを実装する1つまたは複数の処理ブロックを有するプロセッサアーキテクチャを自動的に生成し812、上記のコードプロファイルに基づいてインストラクション実行シーケンスを決定し、かつそのインストラクションシーケンスの再割り当てを行なってホット-スポットを低減するべくIC上の異なるブロックに動作を分散させ814、手順を含む。インストラクションシーケンスを変更する代わりに、ほかのオプションの中でもとりわけ、インストラクションシーケンスの部分を時間的に遅延させてホット-スポットを平均することも可能である。最後にこのプロセスは、生成されたアーキテクチャを、半導体製造のために、カスタム集積回路のコンピュータ可読記述に合成する816。図8Cは、本発明の1つの態様によるワークフロープロセスの一例を示している。図8Cのフローにおいては、システムがアーキテクチャ設計を生成する850。次に、ホット-スポット分析が行なわれる852。その後、RTL等の中間コードを生成することが可能になる854。フロアプランニングが実行され856、レイアウトを行なうことが可能になる858。ホット-スポット分析の間に生成された情報は、早い時期に統合される。図9Aおよび9Bは、ホット-スポットを意識したインストラクションスケジューラの最適化をデータモデルによってどのようにして達成可能であるかを記述したタスクレベルのプロセスの一例を示している。901においては、プロセスが、各マシンインストラクションを関連付けされたハードウエア実行パスにマップする。902においては、プロセスが、可能性のあるすべての実行パスおよびそれらの関連付けされたインストラクションの記録をデータモデル内において保持する。次に、903においては、データモデルが、多様なマシンインストラクションの統計的プロファイルを受け取る。904においては、データモデルが、そこから、任意の所定サイクル内においてインストラクションが実行される定常状態確率を抽出する。905においては、データモデルが、各インストラクション実行パスに対して推定された位相幾何学的レイアウトを作り出す。906においては、レイアウトが、物理設計のモデリングのために必要とされる適切なアブストラクションレベルを選択する、あらかじめ決定済みのプロトコルに基づいた多様な物理設計モデルを使用して推定される。907においては、データモデルが、インストラクションの実行の定常状態確率を、それの実行パスのトポロジと関連付けする。908においては、データモデルが、レイアウトの部分領域を作り出すが、各部分領域については、部分領域の重みの計算に使用される実行パスの確率の集まりをもたらす、交差する実行パスの集まりが存在する。909においては、部分領域の重みの全領域にわたる分布が、電力ホット-スポットの部位の推定に使用される。910においては、データモデルが、影響を受けるインストラクション、すなわち実行パスが電力ホット-スポットと交差するインストラクションを識別する。次の911においては、電力ホット-スポット領域が、仮想の制限容量リソースとしてモデリングされる。データモデルは、制限容量リソースに依存して影響を受けるインストラクションを調べるべくインストラクションスケジューラを調整する。制限容量とは、閉じた連続する処理の中でアクティブ化が許容される部分領域内の実行パスの数を制限することである。その種のリソース依存度は、インストラクションスケジューラのリソース割り付けテーブルに容易に追加することが可能である。続く912においては、このインストラクションスケジューラの最適化が、前述のように作り出された仮想リソースを、そのほかのパフォーマンスコスト関数とともに考慮する。したがって、電力およびパフォーマンスが同時に最適化される。上記のプロセスは、実行シーケンスの再整理を行なっているが、実行シーケンスの再整理を行なってIC上の動作を空間的に分散させることに代えて、プロセスが、コードプロファイルに基づいてインストラクション実行シーケンスを決定し、かつ処理ブロックの空間的な再割り当てを行なってホット-スポットを低減するべくIC上の異なるエリアに動作を分散させることができる。1つの実施態様においては、マイクロアーキテクチャの最適化ループのために高速インクリメンタル物理遅延推定モデルを次のとおりに生成することが可能である。最初に、プロセスが、あらかじめ決定済みの分割スキームを識別し、かつRTLを粗いゲートレベルネットリストにADMから変換する。主要な構成要素はブラック-ボックス化されており、インターフェースが、より少ないネットに要約される。プロセスは、単純なあらかじめ決定済みの、高速タイミング計算にとって容易なルート形状を決定する。タイミンググラフは、特に、敏感度分析のために設計される。タイマは、エルモア遅延推定を使用し、主要ブロックブラック-ボックスとしてモデリングされる間の最良のケース、平均的なケース、および最悪のケースのフライト時間を提供する。このモデルは、インクリメンタルクエリを可能にし、かつSTAツールより数桁高速である。この速度は、テープアウトの結果の品質QoRの測定ではなく、インクリメンタルコストフィードバックの提供に使用される。1つの設計の例においては、アルゴリズムが、500MのMAC演算/サイクルを必要とする。図5のプロセスを用いて、180nmのTSMCプロセスノード上において推定約250MHzのクロック速度を伴う初期アーキテクチャが生成される。初期ハードウエアは、要求されたスループットを達成するべく2つのMACユニットのために設計される。しかしながら、ゲートレベル合成の後、達成可能なクロック周波数が200MHzまで下げられ、DM280内において情報が更新される。バック-エンドフロー前述のステップ14の後、達成可能なクロック周波数がさらに165MHz未満まで下げられ、その情報を用いてDM280が更新される。プログラムの部品および複数の処理ユニットが広い範囲にわたることから、異なる最適化アプローチを適正な数の組み合わせ実施することが可能である。アーキテクチャオプティマイザは、最初にプログラム内の潜在的な並列ユニットを識別し、続いて、それらに対する依存度分析を実行して、互いに独立であって、しかも同時に実行することが可能なセグメントを見つけ出す。システムは、アーキテクチャ決定に戻り、このとき、ハードウエアが、3つのMACユニット用に再設計される。新しい設計が、バック-エンドフローまで反復的にループし、再び、設計目標が満たされているか否かを調べる。このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、コンピュータ可読コードまたはアルゴリズムが、その適用のために特に最適化されたプロセッサ上において実装されることが常に可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエアツールおよびファームウエアアプリケーションとともに生成する。このプロセスは、従来の数年を要する問題として対処されていた事項を、数日の問題として対処することを可能とする。このシステムは、ハードウエアチップソリューションが設計される方法におけるパラダイムを完全にシフトさせるものである。多くの利点のうち、システムの好ましい実施態様を使用する利点を3つ次に挙げる。1スケジュール:チップ設計サイクルが数年単位ではなく数週単位に落ち着くことになる場合には、ユーザが、製品をすばやく市場に持ち込むことによって急速に変化する市場に浸透することが可能になる。2コスト:一般にチップの実装に使用する必要がある多数の技術者が不必要なものとなる。このことは、システムを使用している会社に夥しいコストの節約をもたらす。3最適性:このシステムプロダクトを使用して設計されたチップは、優れたパフォーマンス、面積、および電力消費を有している。次に、例として、自動化されたチップ設計システムをサポートするコンピュータについて考察する。コンピュータは、好ましくは、プロセッサ、ランダムアクセスメモリRAM、プログラムメモリ好ましくは、フラッシュROM等の書き込み可能な読み出し専用メモリROM、および入力/出力I/OコントローラをCPUバスによって結合された形で含んでいる。このコンピュータは、ハードディスクおよびCPUバスに結合されるハードドライブコントローラをオプションとして含むことができる。ハードディスクは、本発明等のアプリケーションプログラムおよびデータをストアするために使用することができる。それに代えて、アプリケーションプログラムをRAMまたはROM内にストアすることができる。I/Oコントローラは、I/Oバスを経由してI/Oインターフェースに結合される。I/Oインターフェースは、シリアルリンク、ローカルエリアネットワーク、無線リンク、およびパラレルリンク等の通信リンクを介してアナログまたはデジタル形式でデータの受信および送信を行なう。オプションとして、表示器、キーボード、およびポインティングデバイスマウスがI/Oバスに接続されることもある。それに代えて、I/Oインターフェース、表示器、キーボード、およびポインティングデバイスのために別々の接続別々のバスが使用されることもある。プログラマブル処理システムは、あらかじめプログラムすること、または別のソースたとえば、フロッピーディスク、CD-ROM、または別のコンピュータからプログラムをダウンロードすることによってそれをプログラムすることおよび再プログラムすることができる。各コンピュータプログラムは、目に見える形として、コンピュータによってストレージ媒体またはデバイスが読み出されたときに、ここで説明しているプロシージャを実行するべくそのコンピュータの構成および動作のコントロールを行なうために、汎用または専用プログラマブルコンピュータによって読み出されることが可能なマシン可読ストレージ媒体またはデバイスたとえば、プログラムメモリまたは磁気ディスク内にストアされる。また本発明のシステムは、コンピュータプログラムを用いて構成されるコンピュータ可読ストレージ媒体内において具体化されると考えてもよく、それにおいてストレージ媒体は、ここで述べている機能を実行するべく特定の、あらかじめ定義済みの態様でコンピュータを動作させるように構成される。以上、ここでは、特許法に従うため、および当業者に、新しい原理の適用および必要とされる専用の構成要素の組み立ておよび使用に必要となる情報を提供するために、相当に詳細に本発明を説明してきた。しかしながら、本発明が明確に異なる装置およびデバイスによって実行可能であること、および装置の詳細および動作手順の両方に対する多様な修正が本発明自体の範囲からの逸脱なしに達成可能であることは理解されるものとする。"