(57)【要約】  カスタム集積回路を自動的に合成するシステムおよび方法が開示されており、当該自動的な合成は、コンピュータ可読コードおよびカスタム集積回路に対する１つまたは複数の制約を含むカスタム集積回路の仕様を受け取ることと、コンピュータ可読コードに対して独特のカスタマイズがなされたチップ仕様の物理合成のための新しい制約を生成し、かつ渡すべく、データ・モデル内においてアーキテクチャ・レベルの知識をエンコーディングすることと、詳細な物理合成が実行された後のフロー内においてより遅くに観察されるコストと一貫したルックアヘッド・コスト関数をアーキテクチャ最適化の間に受け取ることであって、データ・モデルを通じた以前の反復から生成されて、かつその後に続く反復に供給されるルックアヘッド・コスト関数を受け取ることと、１つの最適化ポイントにおいて利用可能な情報を、データ・モデルを使用する設計フロー内の異なる場所で呼び出される別の最適化ポイントのための制約に自動的に翻訳することと、によって行なわれる。
2013545179.tif 000002
【特許請求の範囲】
【請求項１】
カスタム集積回路を自動的に合成する方法であって、
ａ．  コンピュータ可読コードおよび前記カスタム集積回路に対する１つまたは複数の制約を含む前記カスタム集積回路の仕様を受け取り、
ｂ．  前記コンピュータ可読コードに対して固有のカスタマイズがなされたチップ仕様の物理合成のための新しい制約を生成し、かつ渡すべく、データ・モデル内においてアーキテクチャ・レベルの知識をエンコーディングし、
ｃ．  詳細な物理合成が実行された後のフロー内においてより遅くに観察されるコストと一貫したルックアヘッド・コスト関数をアーキテクチャ最適化の間に受け取り、前記ルックアヘッド・コスト関数は、前記データ・モデルを通じた以前の反復から生成されて、かつその後に続く反復に供給され、
ｄ．  １つの最適化ポイントにおいて利用可能な情報を、前記データ・モデルを使用する前記設計フロー内の異なる場所で呼び出される別の最適化ポイントのための制約に自動的に翻訳し、
ｅ．  半導体デバイス製造のために、前記チップ仕様のコンピュータ可読記述を前記カスタム集積回路内に合成する、
方法。
【請求項２】
フロー内ＯＥ（最適化エンジン）間側波帯通信チャンネルを作成する、
請求項１に記載の方法。
【請求項３】
階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクス・タグを適用する
請求項１に記載の方法。
【請求項４】
前記アーキテクチャ・レベルの知識からのクリティカル・パスを示すべく、特定のプレフィクス／ポストフィクスを用いて名前をストアする、
請求項１に記載の方法。
【請求項５】
マクロ・ブロック名、階層名、プラグマ、コメント、ダミー・モジュール、およびラッパー・モジュールのうちの１つを用いて最適タイミングのための配置の制約を示す
請求項１に記載の方法。
【請求項６】
最適化候補のサーチの間にコスト関数の評価の一部として真のクリティカル・パスを検出するべくルックアヘッドを実行する
請求項１に記載の方法。
【請求項７】
前記制約は、レジスタ・トランスファ言語（ＲＴＬ）の制約、フロア・プランの制約、物理的な制約、タイミングの制約、電力の制約、システム・レベルの制約のうちの１つを含む、
請求項１に記載の方法。
【請求項８】
ネットリストのネーミング・プロトコルを通じて前記データ・モデルに制約情報を提供する、
請求項１に記載の方法。
【請求項９】
前記コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを行なう、
請求項１に記載の方法。
【請求項１０】
前記コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングが、コスト・モデリングをはじめ物理設計最適化のためのリソース制約に変換される、
請求項１に記載の方法。
【請求項１１】
前記コンピュータ可読コードを走らせる前記カスタム集積回路のためのファームウエアまたはソフトウエア開発キット（ＳＤＫ）を自動的に生成する、
請求項１に記載の方法。
【請求項１２】
前記コンピュータ可読コードに基づいてアーキテクチャを選択する、
請求項１に記載の方法。
【請求項１３】
前記コンピュータ可読コードの静的および動的プロファイリングに基づいて前記アーキテクチャを最適化する、
請求項１に記載の方法。
【請求項１４】
前記コンピュータ可読コードをアッセンブリ・コードにコンパイルする、
請求項１に記載の方法。
【請求項１５】
前記アッセンブリ・コードをリンクして前記選択されたアーキテクチャのためのファームウエアを生成する、
請求項１２に記載の方法。
【請求項１６】
前記ファームウエアのサイクル精度のシミュレーションを実行する、
請求項１２に記載の方法。
【請求項１７】
前記ファームウエアの動的プロファイリングを実行する、
請求項１２に記載の方法。
【請求項１８】
プロファイリングが行なわれたファームウエアに基づいて前記アーキテクチャを最適化する、
請求項１５に記載の方法。
【請求項１９】
前記アッセンブリ・コードに基づいて前記アーキテクチャを最適化する、
請求項１２に記載の方法。
【請求項２０】
前記選択されたアーキテクチャのためのレジスタ・トランスファ・レベル（ＲＴＬ）コードを生成し、前記ＲＴＬコードを合成する、
請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＤＡ設計収斂のためのフレームワークに関する。
【背景技術】
【０００２】
図１は、典型的なＳｏＣ設計フローを高レベルの説明図で示している。従来のオン・チップ・システム（ＳｏＣ）プロセスにおいては、アーキテクチャ／マイクロアーキテクチャ設計最適化ブロック４０によって設計仕様１が処理される。ブロック４０の結果は、ネットリスト合成ブロック５０によって受け取られる行動レジスタ・トランスファ言語（ＲＴＬ）１５０である。ゲート・レベル・ネットリスト１６０が生成され、それを物理合成ブロック６０が使用してフル・チップ・レイアウトを生成することができる。このレイアウトは、フル・チップ分析ブロック７０によって分析することが可能である。フィードバックとしてアーキテクチャ／マイクロアーキテクチャ設計最適化ブロック４０に遅延依存度の更新を提供することができる。それに加えて、重要な遅延情報をネットリスト合成モジュール５０に提供することができる。通常、このプロセスは、複数の特化された最適化ブロック４０、５０、および６０にわたって、完全に整合する設計が達成されることを要求する。単一の特化された最適化でさえ、それらの最適化問題の殆どが、容易に定式化することおよび純粋な閉じた形式の解析的等式として解決することが不可能であることから反復的、且つ漸進的に精緻化が達成される（たとえば、反復１００または１１０または１２０）。各最適化フローがほかの最適化フローとは独立して働くとしても、修正された設計が、ほかの最適化フローのパフォーマンスに影響を及ぼす可能性がある。したがって全体の設計を総合したときに系の部分最適性が明らかになり、コスト関数に対するいくつかの追加の制約または修正を伴って最適化フローの多くを再実行する必要性（たとえば、反復１３０または１４０）が生じることがある。多くの場合、これらの追加の制約または修正は、比較的古い問題を解決する一方、比較的新しい問題をカバーしない可能性がある。したがって、設計クロージャが重大なリスクとなり得る。
【０００３】
設計クロージャに対する１つのリスクは、アーキテクチャ最適化ブロック４０等のより早い最適化フローが、物理設計最適化ブロック６０等のより遅い最適化フローと比べて、より抽象的な設計モデルに対して実行されるという事実からもたらされる。設計サイクルのより早い部分においてなされる多くの最適化決定は、フローのより遅い部分に含まれる詳細と一貫しないことがある。その種の非一貫性は、実在のクリティカル・パスをマスクすることがあり、最適化エンジンの焦点をより軽微なクリティカル・パスに対してより積極的に向けさせてしまい、より後に存在するクリティカル・パスの修正が不可能ではないとしてもはるかに困難になる状況を導いてしまう。実際、これらの不充分に方向が定められた初期最適化を識別し、かつ巻き戻しも行なって、偽クリティカル・パスを排除しければならないことがある。
【０００４】
設計クロージャに対する別のリスクは、ツール・キャパシティ（メモリおよびターンアラウンド時間）の限界に対処する取り組みの中で、階層的設計方法を採用することから生じる。これらの設計方法は、端から端までのフル回路パスを一息で分析／設計しなければならないことを回避する。この漸次的なアプローチは、設計者およびツールが、異なる時に同一回路の異なる側面の間を揺れ動くことから、潜在的に設計の収束を避ける可能性がある。
【０００５】
設計クロージャに対するさらに別のリスクは、不充分な制約が最適化に対して指定されることから生じる。現在の設計環境においては、異なる最適化フローに対して適切な制約を設定することの多くは、専門家の知識を要求するマニュアル・ステップである。収斂レートおよび品質に関して言えば、最適化フローに対して最大可能な有効な制約条件を設定することが望ましい。これらの制約を人為的に決定することは、非常に時間を要し、しかも誤りを生じやすい。制約生成のより大きな自動化のための機会は存在するが、設計フローが１つのツールから別のそれに移動するとき、データ・モデル内にまったく連続性がない。このため、１つの好都合な場所において必要な情報が利用できない。この事実の中に難題が横たわる。たとえば、物理合成が、共有する多数の信号に基づいてロジックの配置の最適化を試みることがある。他方、アーキテクチャ最適化フローは、いくつかの信号がほかよりもアクティブ化されがちとなり得ることを承知しており、ゆえにその種の信号は、通常、物理合成が行なうよりは大きな重みが与えられるべきであると認識されている。これを達成するためには、根底にあるハードウエア・ブロックの相関的グループ化等のいくつかの制約を設定することが必要になる。ＡＯには、どのように制約を設定するべきかがわからない。物理合成には、動的な信号の優先度がわからない。このように根底にあるデータ・モデル内には不連続が存在する。
【発明の概要】
【課題を解決するための手段】
【０００６】
カスタム集積回路を自動的に合成するシステムおよび方法が開示されており、当該自動的な合成は、コンピュータ可読コードおよびカスタム集積回路に対する１つまたは複数の制約を含むカスタム集積回路の仕様を受け取り、コンピュータ可読コードに対して固有のカスタマイズがなされたチップ仕様の物理合成のための新しい制約を生成し、かつ渡すべく、データ・モデル内においてアーキテクチャ・レベルの知識をエンコーディングし、詳細な物理合成が実行された後のフロー内においてより遅くに観察されるコストと一貫したルックアヘッド・コスト関数をアーキテクチャ最適化の間に受け取り、前記ルックアヘッド・コスト関数は、データ・モデルを通じた以前の反復から生成されて、かつその後に続く反復に供給され、１つの最適化ポイントにおいて利用可能な情報を、データ・モデルを使用する設計フロー内の異なる場所で呼び出される別の最適化ポイントのための制約に自動的に翻訳し、半導体デバイス製造のために、チップ仕様のコンピュータ可読記述をカスタム集積回路内に合成する、ことによって行なわれる。
【０００７】
上記の態様の実装には、次に示す内容のうちの１つまたは複数を含めることができる。システムは、階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクス・タグを適用することが可能である。アーキテクチャ・レベルの知識からのクリティカル・パスを示すべく、特定のプレフィクス／ポストフィクスを用いて名前をストアすることが可能である。システムは、マクロ・ブロック名、階層名、プラグマ、コメント、ダミー・モジュール、およびラッパー・モジュールのうちの１つを用いて最適タイミングのための配置の制約を示すことが可能である。システムは、以前の繰り返しの中で取り込んだか、またはユーザによって供給された情報を使用してクリティカル・パスを検出するべく、ルックアヘッドを実行することが可能である。制約は、レジスタ・トランスファ言語（ＲＴＬ）の制約、フロア・プランの制約、物理的な制約、タイミングの制約、電力の制約、システム・レベルの制約のうちの１つであるとすることが可能である。制約情報は、とりわけネットリストのネーミング・プロトコルを通じてデータ・モデルに提供することが可能である。
【０００８】
システムの好ましい実施態様の利点には、次に示す内容のうちの１つまたは複数を含めることができる。システムは、端から端までのフローにわたって多様なツールをリンクする新しい通信媒体およびプロトコルを可能にする。その種の媒体は、ツール間ではあるがフロー内となる通信がより容易に生じることを可能にする。システムはまた、アーキテクチャ最適化において使用される物理設計のコスト関数推定と物理合成フローのテープアウト・バージョンの間におけるより近い忠実度を可能にする。総合的に言えば、このシステムは、より詳細な設計段階に向かう設計プロセスの進捗に従ってチップ設計における全体的な変更の頻度およびサイズを細らせることを試みる。このフレームワークは、より高い品質の設計の収束につながるフロー・レベルの最適化の挙動の変換を可能にする。フレームワークは、標準ＥＤＡテクノロジのリエンジニアリングを必要とすることなくそれを行ない、したがって標準ＥＤＡツール・ベースの設計環境内における実装が可能である。システムは、もっとも詳細なレベルの設計活動であるところの物理合成を自動化する。初期の設計段階においては、実在のクリティカル・パスが、解決可能なクリティカル・パスによってマスクされる。システムは、いずれのクリティカル・パスについて最適化を行なうかを自動的に決定し、かつ実在のクリティカル・パスを自動的に明らかにする。システムは、非階層的設計方法および階層的方法を使用して単一のランの中で完全な回路を分析する。この包括的アプローチは、設計者およびツールが同時に同一の回路の側面に、伝統的に可能であったより多くの焦点を当てることから設計の収束をもたらす。このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わりに、コンピュータ可読コードまたはアルゴリズムが、それの適用のために特に最適化されたプロセッサ上において実装されることが可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、これまで数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。このシステムは、ハードウエア・チップ・ソリューションが設計される方法におけるパラダイムを完全にシフトするものである。
【０００９】
このシステムは、チップ設計の知識をまったく伴うことなく、アルゴリズム設計者自身が直接ハードウエア・チップを作ることが可能となるように、リスクを取り除き、チップ設計を自動的なプロセスにする。システムへの一次的な入力は、ＣまたはＭａｔｌａｂ（マトラボ）等のより高レベルの言語で記述されたコンピュータ可読コードまたはアルゴリズム仕様となる。
【００１０】
このシステムを使用する多くの利益のうちのいくつかには、次のようなものを含めることができる。
（１）スケジュール：チップ設計サイクルが数年単位ではなく数週単位に落ち着くことになる場合には、このシステムを使用している会社が、自社の製品をすばやく市場に持ち込むことによって急速に変化する市場に浸透することが可能になる。
（２）コスト：一般にチップの実装に必要とされる多数の技術者が不要となる。このことは、このシステムを使用している会社に夥しいコストの節約をもたらす。
（３）最適性：このシステム・プロダクトを使用して設計されたチップは、優れたパフォーマンス、面積、および電力消費を有している。
【００１１】
このシステムは、デジタル・チップ構成要素に向けた、それを有するシステムの設計で使用される方法におけるパラダイムを完全にシフトするものである。このシステムは、Ｃ／ＭＡＴＬＡＢ（マトラボ）で記述されたアルゴリズムからデジタル・ハードウエアを生成する完全に自動化されたソフトウエア・プロダクトである。このシステムは、ＣまたはＭＡＴＬＡＢ（マトラボ）等の高水準言語を採用してハードウエア・チップを実現するプロセスへの独特のアプローチを使用する。要約して言えば、これは、チップ設計を完全に自動化されたソフトウエア・プロセスにする。
【図面の簡単な説明】
【００１２】
【図１】図１は、典型的なＳｏＣ設計フローを高レベルの図として示した説明図である。
【図２】図２は、本発明の１つの態様に従って統合されたデータ・モデル（ＩＤＭ）を伴う例示的なフレームワークを示した説明図である。
【図３】図３は、コスト関数モデリングのための例示的なシステムを示した説明図である。
【図４】図４は、データ・モデルの一例を示した説明図である。
【図５Ａ】図５Ａは、アーキテクチャ設計状態のストアに使用される多様な例示的ＭＡＭＬハイパーグラフを示した説明図である。
【図５Ｂ】図５Ｂは、アーキテクチャ設計状態のストアに使用される多様な例示的ＭＡＭＬハイパーグラフを示した説明図である。
【図５Ｃ】図５Ｃは、アーキテクチャ設計状態のストアに使用される多様な例示的ＭＡＭＬハイパーグラフを示した説明図である。
【図５Ｄ】図５Ｄは、アーキテクチャ設計状態のストアに使用される多様な例示的ＭＡＭＬハイパーグラフを示した説明図である。
【図６Ａ】図６Ａは、コスト計算のために使用される例示的な物理設計モデルを示した説明図である。
【図６Ｂ】図６Ｂは、ＴｒｕｅＣｏｓｔ（トゥルーコスト）計算のために使用される例示的な物理設計モデルに対する改良を示した説明図である。
【発明を実施するための形態】
【００１３】
ここで図２を参照するが、統合されたデータ・モデル（ＩＤＭ）２７０を伴う例示的なフレームワークが本発明の１つの態様に従って使用されている。図２においては、アーキテクチャ／マイクロアーキテクチャ設計最適化エンジン２００がアーキテクチャ最適化（ＡＯ）アダプタ２３０と通信する。それに加えて、インストラクション・スケジューラ２１０がインストラクション・スケジューラ・アダプタ２４０と通信することができる。同様に、物理設計最適化エンジン２２０が物理設計アダプタ２５０と通信する。アダプタ２３０、２４０、および２５０は、側波帯通信チャンネル２６０を通じて通信し、それはまた統合されたデータ・モデル２７０と通信する。
【００１４】
側波帯通信チャンネル２６０は、多様な最適化フローがコンテキスト情報を通信媒体に渡すことを可能にし、そこでその種の情報は、持続的ではあるが受動的にフロー全体を通じて維持される。ＥＤＡツール・ベースのＳｏＣ設計フロー・コンテキストにおいては、チャンネル２６０が、既存の標準フォーマット設計の付帯事項を侵さず、且つ軽微な拡張を利用して実装される。たとえば、統合されたデータ・モデル２７０によってネットリスト・ファイル内に次に示すアーティファクトを埋め込むことが可能である：すなわち（ａ）ダミー階層、（ｂ）オブジェクト名のプレフィクスおよびポストフィクス・タグ、およびダミー・セルである。別の例においては、統合されたデータ・モデル２７０が、電気的に接続されていないオブジェクトに仮想パス・エレメントとしてパスを埋め込むことを含めて、静的タイミング・レポート内に異なるアーティファクトを挿入することができる。
【００１５】
最適化エンジン２００、２１０、および２２０は、アダプタ２３０、２４０、および２５０を通じてチャンネル２６０と通信する。アダプタは、一般に前処理または後処理スクリプトであり、ネットリストまたは特定の標準設計の付帯事項、たとえば側波帯通信プロトコル、を使用してＳＴＡパス−ファイル等を修正することが可能である。これらのスクリプトは、そのほかの任意のツール・フロー・スクリプトと同様に記述され、かつ使用され、したがってこれらのアダプタの作成および／または使用のためのテクノロジ依存はまったく存在しない。統合されたデータ・モデル２７０は、また、この側波帯チャンネル２６０と通信する組み込みアダプタも有している。
【００１６】
このフレームワークは、より高い品質の設計の収束につながるフロー・レベルの最適化の挙動の変換を可能にする。フレームワークは、標準ＥＤＡテクノロジのリエンジニアリングを必要とすることなくその変換を行ない、したがって標準ＥＤＡツール・ベースの設計環境内における実装が可能である。
【００１７】
次に図３を参照すると、コスト関数モデリングのためのシステムが示されている。ＩＤＭフレームワークの１つの側面は、それが拡張性の高いコスト関数モデリング機能を有することである。完全に入念に練られたネットリスト３００が、多様な動的インストラクション・トレース３１０とともにベースラインとしてＩＤＭに提供される。その後ＡＯ  ３２０がこのＩＤＭを最適化ループの間におけるホヮット−イフ分析のために使用することができる。ターンアラウンド時間を伝統的な物理合成ベースのＱｏＲ分析より低く維持するために、ＩＤＭ  ２７０は、インテリジェント階層管理を使用して動的に抽象化された物理合成３４０の設計モデルを作成する。コスト関数モデルが、ホヮット−イフ・コンテキストに対してのみ敏感のままとどまることを確保するために、システムは、ＴｒｕｅＣｏｓｔ（トゥルーコスト）分析エンジン３５０を含む。伝統的な物理合成ベースのＱｏＲは、ホヮット−イフ・コンテキストに対してのみ敏感な応答をもたらさないことがある。
【００１８】
コスト関数モデリングは、内部カスタム・グラフ−ベースのデータ構造表現に読み込まれた、ベースラインが詳細に述べられたネットリスト３００を伴って開始する。動的インストラクション・トレース３１０が使用されて、潜在的フロア・プランニング制約が自動的に識別される。ＡＯ  ３２０がコスト関数評価クエリを開始するとき、ＡＯ  ３２０から獲得された変更リストが調べられて抽象的な物理合成３４０に使用するための適切な物理設計階層が決定される。このステップは、コストを測定するために使用することが可能なモデルを生成する。
【００１９】
コスト計算エンジン３６０は、抽象的な物理設計モデル上において実行される標準の階層フロー・ベースの物理的設計の静的タイミング分析および電力推定フローに類似するものである。静的タイミング分析に加えてブロック３６０は、多様な標準ビルディング・ブロックについての事前に特性が示された分析も維持する。小さく抑制された変更については、閉じた形式の表現を使用して推定によるコスト関数値を分析的に決定することが可能である。これらの結果は、要求されている努力レベルに応じてさらに精緻化することができる。
【００２０】
ＴｒｕｅＣｏｓｔ（トゥルーコスト）分析エンジン（３５０）は、ＳＴＡ結果を分析して、クエリ応答についてモデルが適切であったか否かを決定する。クリティカル・パスが動的インストラクション・トレースのプロファイリング（３１０）からの統計的推論と一貫しない場合には、その種のパスを修正する試みがなされる（バッファ挿入、輻輳緩和等の標準ＱｏＲ改善ステップをその種のパス上において検討する）。図６Ａは、３６０によって使用されることになる物理設計モデルの一例を示している。コスト計算エンジン（３６０）が、抽象的な物理合成（３４０）を使用して設計のレイアウトを生成した。この場合においては、メモリ・マクロの形状が異なるネットワーク（構成要素１、２、およびポートを接続している）に影響を及ぼし、結果として長い相互接続がもたらされる。このため、メモリ・マクロの形状が最大のクリティカル・パスになっている。３６０はこのパスを分析し、たとえば図６Ｂに示されているようにメモリのハード・マクロの縦横比を調整するか、またはサイズの再設定を試みる。精緻化されたモデルは、はるかに現実的なコスト関数評価を提供し、ＡＯエンジン（３２０）がより迅速に収束することを可能にする。
【００２１】
概して言えば、ブロック３５０は、規則ベースの反復的な自動化されたプロセスを使用して多くのその種のモデル精緻化ステップを実行する。これらの規則自体は、一般に、標準ＥＤＡフロー内における実装が簡単である。たとえば、規則のうちの１つを最初にパスの遅延分布プロファイルを決定することとすることが可能であり、これは典型的なＳＴＡレポートから比較的簡単に獲得される。次に適用する規則の選択肢は、その分布プロファイルが、クリティカル・パスがより大きなパターンの一部であること、または特異的な『アウトライヤ』であることを示唆しているか否かに依存する。特異的なアウトライヤのクリティカル・パスが存在するときに考慮するべき規則の例は、支配的な遅延構成要素がネット（ワイヤ）またはゲートであるか否かの決定とすることができる。これもまた、一般にＳＴＡパス・ファイルから極めて簡単に獲得される。
【００２２】
最終的には、現在のネットリストにおいてはそれ以上の修正が不可能なクリティカル・パスが現われ始める。このモデル上の遅延数は、ホヮット−イフ・エクササイズの真のコストをより正しく表わす。
【００２３】
次に、ＩＤＭフレームワークを使用するフローの収束について説明する。設計フローにおいて、より後の段階の最適化が局所化された修正のみに制限される場合には、フローの全体的な収束が保証される。
【００２４】
ここで、物理的設計分析がレイアウトのある領域内において電力ホット−スポットを発見する状況を考える。このホット−スポットは、この領域内のすべての回路が頻繁にアクティブ化されるという事実によって引き起こされたものである。伝統的な設計フローにおいては、物理設計最適化エンジンが、その領域内の回路をより大きな空間に拡散する試みを行なうことになり、その結果として、全体的な面積の増加を回避するために、その回路の大部分のレイアウトがシャッフルされる。これは、多くのパス上の遅延に例外なく影響を及ぼし、結果として、閉じられる必要がある非常に異なるセットのクリティカル・パスをもたらすことになる。ＩＤＭフレームワークは、ここで別のオプションを可能にする。このフレームワークは、このホット−スポットをリソース制約としてインストラクション・スケジューラに伝え、それが、ホット−スポットが回避されるような異なるスケジューリング・メカニズムを発見できることがある。この代替オプションの主要な利点は、あまり優雅でない方法（すなわち、全体的な変更）でこれの修正を必要とする物理設計最適化を導く機会を回避することである。このコンセプトは、別の特許出願（２０１０年７月１３日に出願された米国特許出願第１２／８３５，６４０号の『アーキテクチュアラル・レベル・パワー−アウェア・オプティマイゼーション・アンド・リスク・ミティゲーション（Ａｒｃｈｉｔｅｃｔｕｒａｌ  ｌｅｖｅｌ  ｐｏｗｅｒ−ａｗａｒｅ  ｏｐｔｉｍｉｚａｔｉｏｎ  ａｎｄ  ｒｉｓｋ  ｍｉｔｉｇａｔｉｏｎ）』、整理番号：ＡＬＧＯＴＯＣＨＩＰ−００７）の中でより詳細に説明されている。
【００２５】
第２の例として、物理設計がロジック・セルに加えて多くのマクロを有している状況を考える。マクロ配置が標準ロジックを配置する必要がある空間を過剰に区画化しないことが好ましく、それを外すと配置最適化エンジンが良好な品質の結果をもたらし得ないことがある。伝統的な物理設計フローにおいては、接続されているネットのジオメトリおよびトポロジに基づいてマクロがグループ化される傾向にある。しかしながらネットは、パスのセグメントでしかない。物理合成フローが完全に完了し、静的タイミング分析が走るまで、マクロ配置のパス・レベルの遅延の影響はわからない。フィードバックが物理合成の終了時に到来することから、いくつかのそのほかの最適化との混同がさらに生じる。したがって、マクロ配置に対するフィードバックを分離することは無視できないタスクであり、多くはマニュアルで行なわれている。ＩＤＭフレームワークは、ここでも再び異なるオプションを可能にする。重要なクリティカル・パスは、アーキテクチャ最適化段階において明らかになり、この情報が側波帯チャンネル内に取り込まれて、ＩＤＭフレームワークは、その種のパスの構成要素に対して相対的な『グループ』制約を設定することが可能である。これは、物理合成におけるマクロ配置ステップが、ＳＴＡを待機することを必要とせずに、それのパスの近隣が何であるかを迅速に調べることを可能にする。また良好なマクロ配置は、実在のクリティカル・パスに正しく焦点を当てている物理合成を導き、単一の反復で達成されるＱｏＲを向上させる。
【００２６】
第１の例は、逆方向作用を示す（すなわち、インストラクション・スケジューラ等の上流の最適化をどのように制限するかについてのフィードバックをＡＯが提供する間における物理設計のコスト関数計算）。第２の例は、順方向作用を示す（すなわち、ＡＯがあらかじめ計算済みの情報を物理合成等の下流の最適化に渡す）。これらの新しい形式の作用は、ＩＤＭフレームワークによって可能になったものであり、これは設計フローにおける収束の挙動を左右する鍵である。
【００２７】
図４はデータ・モデルの一例を示している。アーキテクチャ・オプティマイザ４０（図１）は、ＡＳＩＣの抽象的統一表現であるところのシステム、アーキテクチャ、およびマイクロアーキテクチャ（ＳＡＭＡ）表現と呼ばれているアプリケーション・コードに対してカスタマイズされた中間ハードウエア表現を生成する。データ・モデル（ＤＭ）２８０は、設計の多様なビューを用いてＳＡＭＡを表現することが可能である。ＳＡＭＡは、ソフトウエア・コンピレーションとハードウエア合成の間における遷移レイヤとして作用する。その種の遷移レイヤには、コンパイラ・ツール・フロー内において利用可能な最適化を利用し、かつ低レベル・シンセサイザへの自由度の提供、アプリケーション固有の実装のためのオプションの探索も行なうことが意図されている。ＤＭ  ２８０は、アプリケーションの多様なビューの生成に使用することが可能である。たとえば、アーキテクチャ・オプティマイザ・ビュー２８２が、オプティマイザによる制約に対する最適な設計の当て嵌めが可能となるように、タイミング、面積、電力効率等のアーキテクチャ上の構成要素情報を提供する。空間／サイズ要件等の物理的な制約に取り組む物理設計ビュー２８４を生成することが可能である。ソフトウエア・ツール・ビュー２８６は、ＤＭ  ２８０をてこ入れして、使用するソフトウエアのためのＩＳＡおよびアーキテクチャ上の制約を提供することが可能である。そのほかのビューも同様にＤＭ  ２８０から生成することが可能である。ＤＭ  ２８０は、図３のツールによって生成される情報のリポジトリであり、その種の情報は、ＩＣのレイアウトの最終的な生成に必要とされる。ＤＭ  ２８０は、異なるツールによってクエリを行なうことが可能な異なるビューを生成することが可能である。これらのビューは、物理設計の間に使用することが可能である。
【００２８】
ＤＭ  ２８０は、物理設計のために使用される情報を取り込むが、この情報は合成のためには使用されない。このプロセスは、コンピュータ可読コードに対して固有のカスタマイズがなされたチップ仕様の物理合成のための情報を渡すべく、データ・モデル内において初期アーキテクチャ・レベルの知識をエンコードする。次にプロセスは、それぞれの繰り返しの中でチップ仕様の物理合成およびチップ仕様のデータ・モデルの更新を行なう反復を、制約が満たされるまで実行する。以前の繰り返しから生成された情報が、データ・モデルを通じて次の繰り返しに供給されるクリティカル・パスのルックアヘッド情報とともにフィードバック・ループとして提供される。たとえば、システムは、階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクス・タグを適用することが可能である。システムは、マクロ・ブロック名、階層名、プラグマ、コメント、ダミー・モジュール、およびラッパー・モジュールのうちの１つを用いて最適タイミングのための配置の制約を示すことが可能である。
【００２９】
アーキテクチャ・レベルの知識からのクリティカル・パスを示すべく、特定のプレフィクス／ポストフィクスを用いて名前をストアすることが可能である。したがって、１つの例においては、以前の通過の間にサブモジュールＡをサブモジュールＢおよびＣの近くに配置する必要があった場合に、この関係をＡＢＣと記述することが可能であり、同様にＢをＢＡＣと記述することが可能である。
【００３０】
すべての制約が満たされる最終的な繰り返しにおいては、プロセスが、半導体製造のために、チップ仕様のコンピュータ可読記述をカスタム集積回路内に合成する。
【００３１】
ホヮット−イフ・インクリメンタル・コスト推定データ・モデル（ＷＩＣＥ−ＤＭ）を使用することができる。ＷＩＣＥ−ＤＭアーキテクチャは、フロント−エンド、バック−エンド、コンテキスト管理およびＡＰＩセクションからなる。フロント−エンドは、設計技法における詳細に記述されたアーキテクチャ設計状態を表わす。この詳細に記述された設計は、相互に参照される「多アスペクト多レベル」（ＭＡＭＬ）ハイパーグラフ構成で保存されるが、これは、非常に効率のよいカスタマイズ可能な設計抽象化モデル（ＤＡＭ）の生成を可能にする。バック−エンドは、物理設計を意識したホヮット−イフ・インクリメンタル・コスト推定エンジンを表わす。コンテキスト管理セクションは、フロント−エンドがバック−エンドにおける分析を駆動するべく生成しなければならない適切なＤＡＭを決定する。
【００３２】
例示的なＭＡＭＬハイパーグラフ構成を図５Ａから５Ｄに示す。ハイパーグラフは、ノードの単一ペアに対立するものとしてのハイパーエッジ（すなわち、複数のヘッドおよび複数のテール）としてモデリングされることになる相互接続を提供する、よく知られたグラフ構造である。ハイパーグラフ内の多レベルの階層は、配置の間におけるネットリスト分割をはじめ、設計検証において使用することが可能である。この回路図は、４つの頂点（白の矩形およびディスクとして描画される）がツリーとして描画される３つのハイパーエッジによって接続されるハイパーグラフの線画であるとして解釈することが可能である。たとえば、回路図は、複数の頂点（構成要素を表わす白の矩形およびディスクとして描画される）がツリーとして描画されるハイパーエッジによって接続されるハイパーグラフの線画であるとして解釈することが可能である。
【００３３】
ハイパーグラフは、オーバーラップする階層をサポートする複数の階層アスペクトをサポートすることが可能である。このことは、アスペクト間の効率的な切り換えが可能なハイパーグラフを可能にする。
【００３４】
１つの実施態様においては、アーキテクチャ・レベルの知識が、通常は物理合成に利用可能でない情報を渡すべく、ネットリスト・ファイル内にエンコードされる。たとえば、階層名が、その階層内のセルのグループ化がハード制約またはソフト制約であるか否かを示すプレフィクスおよびポストフィクス・タグを含むことができる。この情報は、物理的な分割においてより積極的な決定を行なうために有用である。この物理的分割は、より迅速なターンアラウンド時間を結果としてもたらすツール・チェーン・キャパシティの向上に帰するものである。インスタンスの名前もまた、アーキテクチャ・レベルのモデルが、実在のクリティカル・パスのにありがちな経路として見るか否かを示す特定のプレフィクス／ポストフィクスを含むことができる。物理合成は、正しいものが発見されるまで正しくないものを徐々に除いていくのではなく、実在のクリティカル・パスに対する『ルックアヘッド』を行なうことが可能である。これは、望ましくない最適化（ほかのコスト増加を導く過剰な最適化）を除去し、ターンアラウンド時間を節約する。別の例として、特定のマクロ・ブロックに、配置制約（とりわけアレイの配置等）を示す名前を付けることができ、それが、一度目で最適タイミングを達成することの補助となる。ネットリスト・ファイルへの『側波帯』情報のエンコーディングに加えて、フローが、オリジナルのユーザ制約のみで可能となるより、より生産的な（物理的はもとよりタイミングの）設計制約を物理合成のガイドにおいて生成することも可能である。いくつかの場合においては、その種の制約が、ネットリストのネーミング・スキームを通じて『暗黙』的に含意される。
【００３５】
合成の間においては、プリ−プロセッサによって情報が前処理され、これは、ネットリスト・ファイル内にエンコードされたアーキテクチャの知識を使用することができる。たとえば、アーキテクチャの知識が、いくつかの特定のブロックが互いに近くに配置されるべきであることを指定しているとき、プリ−プロセッサは、その物理的な関係を制約として強制するべくネットリスト・ファイルをセットアップする。前処理されたネットリストは、その後、既存の物理合成ツールに渡され、その結果、標準的な物理合成ツールが使用される場合であっても、そのツールが、アーキテクチャ・レベルの知識を伴ってより最適に走ることが可能になる。この特定の実施態様は、データ・モデルが既製のツールを伴って働くことを可能にする。それに代えて、アーキテクチャ・レベルの知識を組み込むべく根底から組み立てられるカスタム物理合成ツールを生成することも可能であり、その種のツールにおいては、ネットリスト・ファイル内へのアーキテクチャの知識のエンコードに必要な前処理操作が縮小される。
【００３６】
１つの実施態様における、クリティカル・パスのルックアヘッドを伴う物理合成プロセスの例示的な擬似コードは次のとおりである。
スタート→ゲート・レベル・ネットリスト
１．  設計分割
２．  粗配置
３．  分割のサイジングおよび成形
４．  トップ・レベルのＩ／Ｏパッド配置
５．  ロジック配置
６．  ＨＦＮバッファリング
７．  ブロックＩ／Ｏ割り当て（フィードスルーを含む）→ブロック・フロア・プラン準備完了
８．  バッファリングの最適化
９．  推定によるＳＴＡ←目標を満たさなければならず、満たされなければ設計が収束しないことが非常にありがちとなる
１０．  ブロック・レベルの予算作成→ブロックＳＤＣ準備完了
１１．  ｛ブロック｝
１．  スタート→ブロックＩ／Ｏが固定されたブロック・フロア・プラン
２．  詳細な配置最適化を実行する
３．  詳細なクロック・ツリー合成および最適化を実行する
４．  詳細なルーティング最適化を実行する
５．  ブロック・レベルＳＴＡ←現在のタイミング問題を確定するには局所的な目標を満たさなければならない
１２．  トップ・レベル・アッセンブリ
１．  スタート→トップ・レベル・ネットリストの詳細な配置最適化
２．  トップ・レベル・ネットリストの詳細なクロック最適化
３．  トップ・レベル・ネットリストの詳細なルート最適化
１３．  詳細な寄生抽出
１４．  フル・チップＳＴＡ←テープアウトに移行するには目標を満たさなければならない
１５．  チップ仕上げタスク  −  メタル・フィル等
終了→ＧＤＳＩＩレイアウト
【００３７】
ゲート・レベル・ネットリストは、プロセスへの入力である。プロセスは、２つのループを有している。ループ１においては、ステップ１から９までが、通常、ステップ９の目標に到達するために多数回にわたって反復される。ループ２においてもステップ１１．１から１１．５までが、各ブロックについて多数回にわたって反復され、ステップ１０における予算が収束しないことが明らかになると、ループ１のやり直しが必要になることがある。ステップ１４は、ステップ９の推定によるＳＴＡが追加の現実と一貫していなかったことに起因して不合格となる可能性がある。
【００３８】
１つの実施態様においては、マイクロアーキテクチャ最適化ループのための高速インクリメンタル物理遅延推定モデルを次のとおりに生成することが可能である。最初にプロセスが、あらかじめ決定済みの分割スキームを識別し、かつＲＴＬを粗いゲート・レベル・ネットリストに（ＡＤＭから）変換する。主要な構成要素はブラック−ボックス化されており、インターフェースが、より少ないネットに要約される。プロセスは、単純なあらかじめ決定済みの、高速タイミング計算にとって容易なルート形状を決定する。タイミング・グラフは、特に、敏感度分析のために設計される。タイマは、エルモア遅延推定を使用し、主要ブロック（ブラック−ボックスとしてモデリングされる）間の最良の平均的および最悪ケースの『フライト』時間を提供する。このモデルは、インクリメンタル・クエリを可能にし、かつＳＴＡツールより数桁高速である。この速度は、テープアウトの結果の品質（ＱｏＲ）の測定ではなく、インクリメンタル・コスト・フィードバックの提供に使用される。
【００３９】
１つの例示的な設計においては、アルゴリズムが、５００ＭのＭＡＣ演算／サイクルを必要とする。このプロセスを用いて、１８０ｎｍのＴＳＭＣプロセス・ノード上において約２５０ＭＨｚの推定によるクロック速度を伴う初期アーキテクチャが生成される。初期ハードウエアは、要求されたスループットを達成するべく２つのＭＡＣユニットのために設計される。しかしながら、ゲート・レベル合成の後、達成可能なクロック周波数が２００ＭＨｚまで下げられ、ＤＭ  ２８０内において情報が更新される。バック−エンド・フロー（前述のステップ１４）の後、達成可能なクロック周波数がさらに１６５ＭＨｚ未満まで下げられ、その情報を用いてＤＭ  ２８０が更新される。プログラムの部品および複数の処理ユニットが広いサイズ範囲にわたることから、異なる最適化アプローチを必要とする適正な数の組み合わせが可能である。アーキテクチャ・オプティマイザは、最初にプログラム内の潜在的な並列ユニットを識別し、続いて、それらに対する依存度分析を実行して、互いに独立であって、しかも同時に実行することが可能なセグメントを見つけ出す。システムは、アーキテクチャ決定に立ち返り、このとき、ハードウエアが、３つのＭＡＣユニット用に再設計される。新しい設計がバック−エンド・フローまで反復的にループし、設計目標が満たされているか否かが再び調べられる。
【００４０】
このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、コンピュータ可読コードまたはアルゴリズムが、その適用のために特に最適化されたプロセッサ上において実装されることが常に可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、従来の数年を要する問題として対処されていた事項を、数日の問題として対処することを可能とする。このシステムは、ハードウエア・チップ・ソリューションが設計される方法におけるパラダイムを完全にシフトさせるものである。多くの利点のうち、システムの好ましい実施態様を使用する利点を３つ次に挙げる。
（１）スケジュール：チップ設計サイクルが数年単位ではなく数週単位に落ち着くことになる場合には、ユーザが、製品をすばやく市場に持ち込むことによって急速に変化する市場に浸透することが可能になる。
（２）コスト：一般にチップの実装に使用する必要がある多数の技術者が不必要なものとなる。このことは、システムを使用している会社に夥しいコストの節約をもたらす。
（３）最適性：このシステム・プロダクトを使用して設計されたチップは、優れたパフォーマンス、面積、および電力消費を有している。
【００４１】
次に、例として、自動化されたチップ設計システムをサポートするコンピュータについて考察する。コンピュータは、好ましくは、プロセッサ、ランダム・アクセス・メモリ（ＲＡＭ）、プログラム・メモリ（好ましくは、フラッシュＲＯＭ等の書き込み可能な読み出し専用メモリ（ＲＯＭ））、および入力／出力（Ｉ／Ｏ）コントローラをＣＰＵバスによって結合された形で含んでいる。このコンピュータは、ハードディスクおよびＣＰＵバスに結合されるハード・ドライブ・コントローラをオプションとして含むことができる。ハードディスクは、本発明等のアプリケーション・プログラムおよびデータをストアするために使用することができる。それに代えて、アプリケーション・プログラムをＲＡＭまたはＲＯＭ内にストアすることができる。Ｉ／Ｏコントローラは、Ｉ／Ｏバスを経由してＩ／Ｏインターフェースに結合される。Ｉ／Ｏインターフェースは、シリアル・リンク、ローカル・エリア・ネットワーク、無線リンク、およびパラレル・リンク等の通信リンクを介してアナログまたはデジタル形式でデータの受信および送信を行なう。オプションとして、表示器、キーボード、およびポインティング・デバイス（マウス）がＩ／Ｏバスに接続されることもある。それに代えて、Ｉ／Ｏインターフェース、表示器、キーボード、およびポインティング・デバイスのために別々の接続（別々のバス）が使用されることもある。プログラマブル処理システムは、あらかじめプログラムすること、または別のソース（たとえば、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、または別のコンピュータ）からプログラムをダウンロードすることによってそれをプログラムすること（および再プログラムすること）ができる。
【００４２】
各コンピュータ・プログラムは、目に見える形として、コンピュータによってストレージ媒体またはデバイスが読み出されたときに、ここで説明しているプロシージャを実行するべくそのコンピュータの構成および動作のコントロールを行なうために、汎用または専用プログラマブル・コンピュータによって読み出されることが可能なマシン可読ストレージ媒体またはデバイス（たとえば、プログラム・メモリまたは磁気ディスク）内にストアされる。また本発明のシステムは、コンピュータ・プログラムを用いて構成されるコンピュータ可読ストレージ媒体内において具体化されると考えてもよく、それにおいてストレージ媒体は、ここで述べている機能を実行するべく特定の、あらかじめ定義済みの態様でコンピュータを動作させるように構成される。
【００４３】
以上、ここでは、特許法に従うため、および当業者に、新しい原理の適用および必要とされる専用の構成要素の組み立ておよび使用に必要となる情報を提供するために、相当に詳細に本発明を説明してきた。しかしながら、本発明が明確に異なる装置およびデバイスによって実行可能であること、および装置の詳細および動作手順の両方に対する多様な修正が本発明自体の範囲からの逸脱なしに達成可能であることは理解されるものとする。
【図１】
2013545179.tif 000003
【図２】
2013545179.tif 000004
【図３】
2013545179.tif 000005
【図４】
2013545179.tif 000006
【図５Ａ】
2013545179.tif 000007
【図５Ｂ】
2013545179.tif 000008
【図５Ｃ】
2013545179.tif 000009
【図５Ｄ】
2013545179.tif 000010
【図６Ａ】
2013545179.tif 000011
【図６Ｂ】
2013545179.tif 000012
【国際調査報告】
2013545179.tif 000013