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