(57)【要約】カスタム集積回路（ＩＣ）設計を、カスタムＩＣによって実行されるべきコンピュータ可読コードを含むカスタムＩＣの仕様を受け取り、システム、プロセッサ・アーキテクチャ、およびマイクロ−アーキテクチャ（ＳＡＭＡ）表現としてＩＣのアブストラクションを生成し、ＳＡＭＡ表現を、少なくともアーキテクチャ最適化ビュー、物理設計ビュー、およびソフトウエア・ツール・ビューを有するデータ・モデルに提供し、ＳＡＭＡ表現およびデータ・モデルを反復的に更新することによってプロセッサ・アーキテクチャを最適化し、１つまたは複数の制約を満たすコンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャを自動的に生成し、生成されたアーキテクチャを、半導体製造のためにカスタム集積回路のコンピュータ可読記述に合成する、ことによって自動的に生成するシステムおよび方法が開示されている。前述の内容は、人間の掛かり合いをまったく伴わないか、または最小限に伴って行われることが可能である。
2013537666.tif 000002
【特許請求の範囲】
【請求項１】
カスタム集積回路（ＩＣ）設計を自動的に生成する方法であって、
ａ．  前記カスタムＩＣによって実行されるべきコンピュータ可読コードを含むカスタムＩＣの仕様を受け取り、
ｂ．  システム、プロセッサ・アーキテクチャ、およびマイクロ−アーキテクチャ（ＳＡＭＡ）表現として前記ＩＣのアブストラクションを生成し、
ｃ．  前記ＳＡＭＡ表現を、少なくともアーキテクチャ最適化ビュー、物理設計ビュー、およびソフトウエア・ツール・ビューを有するデータ・モデルに提供し、
ｄ．  前記ＳＡＭＡ表現および前記データ・モデルを反復的に更新することによって前記プロセッサ・アーキテクチャを最適化し、１つまたは複数の制約を満たす前記コンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャを自動的に生成し、
ｅ．  生成された前記アーキテクチャを、半導体製造のために前記カスタム集積回路のコンピュータ可読記述に合成する、
方法。
【請求項２】
前記カスタムＩＣ上において前記コンピュータ可読コードを実行する、請求項１に記載の方法。
【請求項３】
前記データ・モデルは、前記ＩＣの機能的および物理的なモデルが統一された拡張モデルを含む、請求項１に記載の方法。
【請求項４】
前記データ・モデルは、前記ＩＣに関係する物理プリミティブ情報を受け取る、請求項１に記載の方法。
【請求項５】
ソフトウエア・ツールを生成する、請求項１に記載の方法。
【請求項６】
前記ツールは、コンパイラ、アッセンブラ、リンカ、サイクル−ベースのシミュレータのうちの１つまたは複数を含む、請求項５に記載の方法。
【請求項７】
前記ツールは、ファームウエアを自動的に生成する、請求項６に記載の方法。
【請求項８】
前記ファームウエアのプロファイリングを自動的に行ない、前記ファームウエアのプロファイルを、最適化するアーキテクチャにフィードバックする、請求項７に記載の方法。
【請求項９】
あらかじめ決定済みの物理的な制約に基づいて前記プロセッサ・アーキテクチャを最適化する、請求項１に記載の方法。
【請求項１０】
前記コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを行なう、請求項１に記載の方法。
【請求項１１】
前記コンピュータ可読コードを走らせる前記カスタム集積回路のためのファームウエアまたはソフトウエア開発キット（ＳＤＫ）を自動的に生成する、請求項１に記載の方法。
【請求項１２】
前記コンピュータ可読コードをアッセンブリ・コードにコンパイルする、請求項１に記載の方法。
【請求項１３】
前記アッセンブリ・コードをリンクして選択された前記アーキテクチャのためのファームウエアを生成する、請求項８に記載の方法。
【請求項１４】
前記ファームウエアのサイクル精度のシミュレーションを実行する、請求項８に記載の方法。
【請求項１５】
前記ファームウエアの静的または動的プロファイリングを実行する、請求項１０に記載の方法。
【請求項１６】
プロファイリングが行なわれたファームウエアに基づいて前記アーキテクチャを最適化する、請求項１１に記載の方法。
【請求項１７】
前記アッセンブリ・コードに基づいて前記アーキテクチャを最適化する、請求項８に記載の方法。
【請求項１８】
前記選択されたアーキテクチャのためのレジスタ・トランスファ・レベルのコードを生成する、請求項１に記載の方法。
【請求項１９】
タイミング、面積、または電力に関して最適化された物理設計のためにＲＴＬコードを生成することを包含する、請求項１８に記載の方法。
【請求項２０】
前記ＲＴＬコードの合成を実行する、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（相互に参照される出願）
出願人を共通とする、同日に出願された米国特許出願第１２／８３５，６０３号『アルゴリズムおよび仕様に基づく自動最適集積回路ジェネレータ（ＡＵＴＯＭＡＴＩＣ  ＯＰＴＩＭＡＬ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ  ＧＥＮＥＲＡＴＯＲ  ＦＲＯＭ  ＡＬＧＯＲＩＴＨＭＳ  ＡＮＤ  ＳＰＥＣＩＦＩＣＡＴＩＯＮ）』、米国特許出願第１２／８３５，６２１号『アルゴリズムおよび仕様に基づく自動最適集積回路ジェネレータ（ＡＵＴＯＭＡＴＩＣ  ＯＰＴＩＭＡＬ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ  ＧＥＮＥＲＡＴＯＲ  ＦＲＯＭ  ＡＬＧＯＲＩＴＨＭＳ  ＡＮＤ  ＳＰＥＣＩＦＩＣＡＴＩＯＮ）』、米国特許出願第１２／８３５，６２８号『駆動電力ゲーティングの応用（ＡＰＰＬＩＣＡＴＩＯＮ  ＤＲＩＶＥＮ  ＰＯＷＥＲ  ＧＡＴＩＮＧ）』、米国特許出願第１２／８３５，６３１号『集積回路におけるシステム、アーキテクチャおよびマイクロアーキテクチャ（ＳＡＭＡ）表現（ＳＹＳＴＥＭ，  ＡＲＣＨＩＴＥＣＴＵＲＥ  ＡＮＤ  ＭＩＣＲＯ‐ＡＲＣＨＩＴＥＣＴＵＲＥ  （ＳＡＭＡ）  ＲＥＰＲＥＳＥＮＴＡＴＩＯＮ  ＯＦ  ＡＮ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ）』、および米国特許出願第１２／８３５，６４０号『アーキテクチャ・レベルの省電力指向の最適化およびリスク軽減（ＡＲＣＨＩＴＥＣＴＵＲＡＬ  ＬＥＶＥＬ  ＰＯＷＥＲ‐ＡＷＡＲＥ  ＯＰＴＩＭＩＺＡＴＩＯＮ  ＡＮＤ  ＲＩＳＫ  ＭＩＴＩＧＡＴＩＯＮ）』が相互に関連しており、これらの文献によって参照される内容が、本願に援用される。
【背景技術】
【０００２】
本発明は、カスタム集積回路（ＩＣ）または特定用途向け集積回路（ＡＳＩＣ）の中間表現のためのシステムおよび方法に関する。
【０００３】
電子機器がよりユーザ・フレンドリになるに従って、電子機器に求められる特徴が増大してきている。たとえば、埋め込みアプリケーションのための典型的なハードウエア・プロダクト開発サイクルにおいて、アルゴリズム開発が行われている。次に、システム・アーキテクチャ開発者が、当該アルゴリズムがプロダクト内においてどのように実装される必要があるかについて分析する。従来、アルゴリズムは、ハードウエアに近いレジスタ・トランスファ言語（ＲＴＬ）等の低水準の中間表現に変換される。
【０００４】
ＲＴＬは、電子機器設計産業において広く使用されており、実際上、ＦＰＧＡまたはＡＳＩＣ等の所定のハードウエア・プラットフォーム内においてコード・モデルが合成されること（実際のロジック機能に変換されること）を保証するハードウエア記述言語で使用されるコーディング・スタイルを指す。
【０００５】
ロジック合成のためのＲＴＬモジュールの作成に使用されることが可能なハードウエア記述言語は、多数存在する。もっとも広く使用されているＲＴＬモデリング言語として、システム・ベリログ（Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ）、ベリログ（Ｖｅｒｉｌｏｇ）、およびＶＨＤＬが挙げられる。
【０００６】
米国特許出願第２００９０１４４６９０号は、Ｃ−タイプのプログラミング言語プログラムをハードウエア設計に変換するための方法を開示しており、それにおいてプログラムは、１つまたは複数のプロセスのアルゴリズムを表現している。このＣ−タイプのプログラミング言語プログラムは、ハードウエア記述言語（ＨＤＬ）による合成が可能な設計にコンパイルされる。コンパイラは、変数を、暗黙的なメモリまたはカスタム・メモリのいずれかを使用するものとして分類する。プログラミング言語は、ＡＮＳＩ  Ｃを使用することができ、またＨＤＬは、ベリログレジスタ・トランスファ・レベル（ＲＴＬ）とすることができる。ＨＤＬによる合成が可能な設計から生成されるハードウエア・デバイスは、特定用途向け集積回路（ＡＳＩＣ）またはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）とすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、それにもかかわらずＲＴＬは、ハードウエアの低水準の記述の域を出ない。したがって、ＲＴＬを用いた設計の分析およびその後に続く最適化が困難なものとなる可能性がある。
【課題を解決するための手段】
【０００８】
１つの態様においては、システムおよび方法が、カスタム集積回路（ＩＣ）設計を、カスタムＩＣによって実行されるべきコンピュータ可読コードを含むカスタムＩＣの仕様を受け取り、システム、プロセッサ・アーキテクチャ、およびマイクロ−アーキテクチャ（ＳＡＭＡ）表現としてＩＣのアブストラクションを生成し、ＳＡＭＡ表現を、少なくともアーキテクチャ最適化ビュー、物理設計ビュー、およびソフトウエア・ツール・ビューを有するデータ・モデルに提供し、ＳＡＭＡ表現およびデータ・モデルを反復的に更新することによってプロセッサ・アーキテクチャを最適化し、１つまたは複数の制約を満たすコンピュータ可読コードに対して固有のカスタマイズがなされたプロセッサ・アーキテクチャを自動的に生成し、生成されたアーキテクチャを、半導体製造のためにカスタム集積回路のコンピュータ可読記述に合成する、ことによって自動的に生成する。
【０００９】
上記の態様の実装には、次に示す内容のうちの１つまたは複数が含まれる。システムは、カスタムＩＣの機能を規定するアルゴリズム、プロセス、またはコード入力上において、実質的に人間の掛かり合いをまったく伴わないか、または最小限に伴って自動的に動作することが可能である。ユーザは、カスタムＩＣ上においてコンピュータ可読コードを実行することが可能である。データ・モデルは、ＩＣの機能的および物理的なモデルが統一された拡張モデルである。データ・モデルは、ＩＣの物理プリミティブ情報を受け取ることが可能である。アプリケーション・コードを走らせるカスタムＩＣのためのソフトウエア・ツールは、自動的に生成することが可能である。これらのツールには、コンパイラ、アッセンブラ、リンカ、サイクル−ベースのシミュレータのうちの１つまたは複数が含まれる。ツールは、自動的にファームウエアを生成する。ツールは、ファームウエアのプロファイリングを行なうことが可能であり、ファームウエアのプロファイルを、最適化するアーキテクチャにフィードバックする。システムは、あらかじめ決定済みの物理的な制約に基づいてプロセッサ・アーキテクチャを反復的に最適化することが可能である。システムは、コンピュータ可読コードの静的プロファイリングまたは動的プロファイリングを実行することが可能である。システムは、コンピュータ可読コードを走らせるカスタム集積回路のためのソフトウエア開発キット（ＳＤＫ）を自動的に生成することが可能である。コンピュータ可読コードは、アッセンブリ・コードに変換され、かつリンクされて、選択されたアーキテクチャのためのファームウエアを生成することが可能である。システムは、ファームウエアのサイクル−ベースのシミュレーションを実行することが可能である。アーキテクチャは、プロファイリングが行なわれたファームウエアおよび／またはアッセンブリ・コードに基づいて最適化が行われることが可能である。システムは、選択されたアーキテクチャのために、したがって、タイミング、面積、または電力に関して最適化された物理設計のために、レジスタ・トランスファ・レベルのコードを生成することが可能である。システムは、ＲＴＬコードを合成することが可能である。１つの実施態様においてＳＡＭＡは、次に示す内容のうちの１つまたは複数を規定することが可能である。
１．  システム
ａ．  クロック
ｂ．  パフォーマンス目標
ｃ．  ピンアウト
ｄ．  周辺機器
ｅ．  割り込みスキーム
ｆ．  接続性
ｇ．  その他
２．  アーキテクチャ
ａ．  オンチップ・メモリ
ｂ．  キャッシュ
ｃ．  レジスタ・ファイル
ｄ．  メモリ・マップ
ｅ．  ハードウエア機能ブロック
ｆ．  パイプライン
ｇ．  ＩＳＡ定義
ｈ．  その他
３．  ツール
ａ．  アッセンブラ・セッティング
ｂ．  リンカ変数
ｃ．  その他
４．  マイクロアーキテクチャ
ａ．  電力ドメイン
ｂ．  電力ゲーティング
ｃ．  その他
【００１０】
好ましい実施態様の利点には、次に示す内容のうちの１つまたは複数が含まれる。ＳＡＭＡ表現は、プロセッサ・アーキテクチャの最適化を容易にするハードウエアの中間アブストラクションを提供する。ＳＡＭＡベースのシステムは、形式的な処理およびポータビリティを複雑にするＲＴＬより好ましい。ＳＡＭＡは、マシンの独立性、コード生成に先立つ大域的最適化を可能にする。アーキテクチャは、一般にローカルに動作する単純かつ高速なコード・ジェネレータを使用することが可能である。ＳＡＭＡシステムは、使用がより容易であり、コード・ジェネレータを簡素化し、続いて、ＲＴＬコードを使用してなし得なかった方法でアーキテクチャを最適化することが可能である。
【００１１】
システムの好ましい実施態様のこのほかの利点には、次に示す内容のうちの１つまたは複数が含まれる。このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、コンピュータ可読コードまたはアルゴリズムが、それの適用のために特に最適化されたプロセッサ上において実装されることが可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、従来数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。ここで述べている自動的なシステムは、チップ設計の知識をまったく伴うことなく、アルゴリズム設計者自身が直接ハードウエア・チップを作ることが可能となるように、リスクを取り除き、チップ設計を自動的なプロセスにする。システムへの一次的な入力は、ＣまたはＭＡＴＬＡＢ（マトラボ）等のより高レベルの言語で記述されたコンピュータ可読コードまたはアルゴリズム仕様となる。
【図面の簡単な説明】
【００１２】
【図１】図１は、アプリケーション・コードまたはアルゴリズムからＡＳＩＣを自動的に製造するワークフロー・システムの一例を示した説明図である。
【図２】図２は、ＳＡＭＡとＡＳＩＣの間における関係を示すビューの一例を示した説明図である。
【図３】図３は、データ・モデルの一例を示した説明図である。
【図４】図４は、ＳＡＭＡ表現を用いたワークフロー・プロセスの一例を示した説明図である。
【図５】図５は、ＳＡＭＡを使用してカスタムＩＣを自動的に生成するシステムの一例を示した説明図である。
【発明を実施するための形態】
【００１３】
図１は、アプリケーション・コードまたはアルゴリズムからＡＳＩＣを自動的に製造するワークフロー・システムの一例を示している。最初に、アプリケーション・コードまたはアルゴリズムがユーザによって生成される（１１０）。次に、そのコードが、アーキテクチャ・オプティマイザ１１２に提供される。アーキテクチャ・オプティマイザ１１２は、ＡＳＩＣのアブストラクト統一表現である、システム、アーキテクチャ、およびマイクロ−アーキテクチャ（ＳＡＭＡ）表現１２０と呼ばれるアプリケーション・コードにカスタマイズされた中間ハードウエア表現を生成する。ＳＡＭＡ  １２０は、高水準の軽量アブストラクト・モデルであり、アーキテクチャ・オプティマイザ１１２が、ＳＡＭＡ  １２０内に記述された新しいアーキテクチャを最適化し、かつ生成することを可能にする。ＳＡＭＡ  １２０は、データ・モデル（ＤＭ）１３０に対して情報を提供するが、これはＡＳＩＣの機能的および物理的なモデルが統一された拡張モデルである。ＤＭ  １３０は、ＡＳＩＣの、たとえば加算器、乗算器等といった物理プリミティブ情報１１４を受け取る。ＤＭ  １３０は、ツール・ジェネレータ１３４にデータを提供し、続いてそれが、とりわけコンパイラ、アッセンブラ、リンカ、サイクル−ベースのシミュレータといったツール１３６のセットを駆動する。ツール１３６は、プロファイリング・ツール１４０によってプロファイリングされることが可能なファームウエア１３８を生成する。ファームウエアのプロファイルは、アーキテクチャ・オプティマイザ１１２にフィードバックされ、とりわけ電力、面積、タイミング等のあらかじめ決定済みの物理的な制約１５０に基づいてＡＳＩＣ設計の最適化が行なわれる。ＤＭ  １３０は、これらの制約１５０に従ったＲＴＬコード１３２を生成し、アーキテクチャ・オプティマイザ１１２に提供されるタイミング、面積、電力フィードバック情報とともに物理設計１６０に到達することが可能である。
【００１４】
たとえば、汎用レジスタ・ファイルは、単純な構造である。生成されたツールによってコンパイルされたファームウエアのプロファイリングに基づいて、アーキテクチャ・オプティマイザ１１２は、レジスタ・ファイルのサイズを最適化し、かつ空間および電力を節約するべく縮小されたレジスタ・ファイルとともに新しいＳＡＭＡ  １２０を生成することができる。結果として得られる新しいツールは、再度のプロファイリングを介して改善を確認することができる。
【００１５】
次に図２を参照すると、ＳＡＭＡとＡＳＩＣの間における関係を示すビューの一例が示されている。ＳＡＭＡ  ２００は、ＣコードまたはＭＡＴＬＡＢ（マトラボ）コード等のアルゴリズムから要約されたハードウエアの中間表現である。データ・モデル（ＤＭ）２１０は、設計の多様なビュー２２０を用いてＳＡＭＡ  ２００を表現することが可能である。ビューの分析２３０を行うことが可能であり、制約が満たされる場合には、実装２４０を行うことが可能である。
【００１６】
ＳＡＭＡは、ソフトウエア編集とハードウエア合成の間における遷移レイヤとして作用する。その種の遷移レイヤには、コンパイラ・ツール・フロー内において利用可能な最適化を利用し、かつ低水準・シンセサイザへの自由度の提供、アプリケーション固有の実装のためのオプションの探索も行なうことが意図されている。
【００１７】
１つの実施態様においてＳＡＭＡは、次に示す内容のうちの１つまたは複数を規定することが可能である。
１．  システム
ａ．  クロック
ｂ．  パフォーマンス目標
ｃ．  ピンアウト
ｄ．  周辺機器
ｅ．  割り込みスキーム
ｆ．  接続性
ｇ．  その他
２．  アーキテクチャ
ａ．  オンチップ・メモリ
ｂ．  キャッシュ
ｃ．  レジスタ・ファイル
ｄ．  メモリ・マップ
ｅ．  ハードウエア機能ブロック
ｆ．  パイプライン
ｇ．  ＩＳＡ定義
ｈ．  その他
３．  ツール
ａ．  アッセンブラ・セッティング
ｂ．  リンカ変数
ｃ．  その他
４．  マイクロアーキテクチャ
ａ．  電力ドメイン
ｂ．  電力ゲーティング
ｃ．  その他
【００１８】
図３は、データ・モデル２８０の一例を示している。ＤＭ  ２８０は、アプリケーションの多様なビューの生成に使用することが可能である。たとえば、アーキテクチャ・オプティマイザ・ビュー２８２は、オプティマイザが制約に対して設計を最良に適合させることができるように、タイミング、面積、電力効率等のアーキテクチャ上の構成要素情報を提供する。空間／サイズ要件等の物理的な制約が割り当てられた物理設計ビュー２８４を生成することが可能である。ソフトウエア・ツール・ビュー２８６は、ＤＭ  ２８０をてこ入れして、使用するソフトウエアのためのＩＳＡおよびアーキテクチャ上の制約を提供することが可能である。そのほかのビューも同様にＤＭ  ２８０から生成することが可能である。
【００１９】
１つの実施態様においては、アルゴリズム設計者が、アプリケーション問題を解決するコンピュータ可読コードを生成する。人力作業によるＩＣ設計に代わり、このシステムが、そのコードを受け取り、コードまたはアルゴリズムを分析する。次にシステムは、そのコードに基づいて最適アーキテクチャを自動的に生成する。アーキテクチャは、ＳＡＭＡにおいて表現され、データ・モデルとともに、１つまたは複数の反復を通じてそのアーキテクチャを最適化することが可能である。次にはＩＣ製造設備がカスタムＩＣを製造することが可能であり、結果として得られるＩＣは、人間の掛かり合いをまったく伴わないか、または最小限に伴ってアルゴリズムに対して最適化される。
【００２０】
ここで図４を参照すると、ＳＡＭＡを使用するワークフローの一例が示されている。このワークフローは、ＣまたはＭＡＴＬＡＢ（マトラボ）等の高水準言語において規定されたアルゴリズムを分析することから始まる（１０）。次にシステムは、アルゴリズムまたはコードに対してカスタマイズされた最適アーキテクチャの最初の設計を生成する（１２）。設計されるアーキテクチャは、ＳＡＭＡにおいて表現される（１４）。システムは、データ・モデル内において物理プリミティブ情報およびＳＡＭＡ情報を適用する（１６）。ソフトウエア・ツールが、そのデータ・モデルのために自動的に生成される（１８）。その後システムは、自動的に、ファームウエアを生成し、そのファームウエアのプロファイリングを行う（２０）。システムは、制約が満たされるまでアーキテクチャ設計を反復する（２２）。その後システムが、カスタムＩＣを製造し（２４）、ユーザは、そのカスタムＩＣ上においてファームウエアを走らせることが可能になる（２６）。
【００２１】
１つの実施態様においては、アーキテクチャが、可変幅のインストラクション・セットのエンコーディング・スキームを自動的に設計することが可能である。可変幅のインストラクション・セット上に作られるプログラム・コードは、さらに、可逆圧縮スキームを使用して圧縮され、ストレージ空間を節約することが可能である。また、その種の圧縮スキームが選択される場合においては、インストラクションが動的にデコーディングされ、かつ発行されるように、対応する解凍スキームもまた自動的に設計される。システムは、可変長のインストラクション・セットを使用してインストラクション・セットの最適エンコーディングを行うことが可能である。各インストラクションは、特定の幅に対する制限を伴うことなく、最適な任意のインストラクション・セット幅でエンコードされることが可能である。これは、伝統的なエンコーディング・スキームと比較したとき、より多くのインストラクションがサポートされることを可能にし、かつパフォーマンス上の利益を与えることになる。また、非常に微細な精度によってインストラクションがパックされることも可能であり、また複数のインストラクションが、単一のプログラム・メモリ・アクセスに対してパックされることも可能である。このことは、フェッチされて発行されることが可能な、サイクル当たりのインストラクションの数を増加することになる。アプリケーション・コード／アルゴリズムのためにインストラクション・セットおよびアーキテクチャがカスタム設計された後は、カスタム集積回路が、人間の掛かり合いをまったく伴うことなく、システムによって自動的に生成され、したがって、プロダクト開発時間およびコストが削減される。このカスタムＩＣは、自動的に生成されたソフトウエア開発キット（ＳＤＫ）および自動的に生成されたファームウエアを使用し、コード／アルゴリズムを効率的に実行させることが可能である。
【００２２】
これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、コンピュータ可読コードまたはアルゴリズムが、それの適用のために特に最適化されたプロセッサ上において実装されることが可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、従来の数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。
【００２３】
図５は、カスタムＩＣを自動的に生成するシステムの一例を示している。図５のシステムは、選択された目標とするアプリケーションに対するプログラマブルハードウエア・ソリューションにおいて、インストラクション・セット圧縮および可変幅エンコーディングを使用する最適インストラクション・セットを伴うアーキテクチャを自動的に生成することをサポートする。目標とするアプリケーションの仕様は、一般に、Ｃ、ＭＡＴＬＡＢ（マトラボ）、ＳｙｓｔｅｍＣ（システムＣ）、フォートラン、エイダ等の高レベル言語またはそのほかのいずれかの言語によるコンピュータ可読コードとして表現されたアルゴリズムを通じてなされる。仕様は、目標とするアプリケーションの記述を含み、またそれには、望ましいコスト、面積、電力、速度、パフォーマンス、およびそのほかのハードウエア・ソリューションの属性といった１つまたは複数の制約も含まれる。
【００２４】
図５においては、ＩＣカスタマがプロダクト仕様１０２を生成する。通常は、所望のプロダクトのすべての主要機能を取り込んだ初期プロダクト仕様が存在する。そのプロダクトから、アルゴリズムの専門家が、そのプロダクトに必要とされるコンピュータ可読コードまたはアルゴリズムを識別する。それらのアルゴリズムのうちのいくつかは、サードパーティから、または標準開発委員会からのＩＰとして利用可能となることがある。それらのうちのいくつかは、製品開発の一部として開発されなければならない。この態様においては、さらにプロダクト仕様１０２が、とりわけＣプログラム等のプログラムまたはＭＡＴＬＡＢ（マトラボ）モデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム１０４で詳述される。プロダクト仕様１０２は、また、とりわけコスト、面積、電力、プロセス・タイプ、ライブラリ、およびメモリ・タイプ等の要件１０６も含んでいる。
【００２５】
コンピュータ可読コードまたはアルゴリズム１０４および要件１０６は、自動化されたＩＣジェネレータ１１１に提供される。コードまたはアルゴリズム１０４およびチップ設計に課せられた制約だけに基づいて、ＩＣジェネレータ１１１は、人間の掛かり合いを殆ど、またはまったく伴うことなく、ＧＤＳファイル１１３、ＩＣを走らせるファームウエア１１５、ソフトウエア開発キット（ＳＤＫ）１１６、および／またはテスト・スート１１８を含む出力を自動的に生成する。ＧＤＳファイル１１３およびファームウエア１１５は、カスタム・チップ１２１の製造に使用される。
【００２６】
このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。このシステムは、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、アルゴリズムが、その適用のために特に最適化されたプロセッサ上において実装されることが常に可能となる。システムは、この最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。この全体的なプロセスは、現在数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。要約して言えば、このシステムは、プロダクト開発のデジタル・チップ設計部分をブラック・ボックスにする。
【００２７】
１つの実施態様においては、このシステム・プロダクトが、次に示すものを入力として取ることが可能である。
Ｃ／ＭＡＴＬＡＢ（マトラボ）で定義されたコンピュータ可読コードまたはアルゴリズム、
必要とされる周辺機器、
面積目標、
電力目標、
マージン目標（将来的なファームウエア更新のためにどの程度のオーバーヘッドを組み込むべきか、またどの程度複雑性が増加するか）、
プロセスの選択肢、
標準セル・ライブラリの選択肢、
テスト可能性スキャン。
【００２８】
システムの出力は、関連付けされるファームウエアすべてを伴ったデジタル・ハード・マクロとすることができる。このデジタル・ハード・マクロのために最適化されたソフトウエア開発キット（ＳＤＫ）もまた自動的に生成されて、ファームウエアに対する将来的なアップグレードがプロセッサの交換を強いることなく実装されるようにすることが可能である。
【００２９】
このシステムは、任意の選択された目標とするアプリケーションに対して完全かつ最適なハードウエア・ソリューションを自動的に生成する。共通の目標とするアプリケーションは埋め込みアプリケーション空間内にあるが、それらは、必ずしもそれに限定されない。
【００３０】
次に、例として、自動化されたチップ設計システムをサポートするコンピュータについて考察する。コンピュータは、好ましくは、プロセッサ、ランダム・アクセス・メモリ（ＲＡＭ）、プログラム・メモリ（好ましくは、フラッシュＲＯＭ等の書き込み可能な読み出し専用メモリ（ＲＯＭ））、および入力／出力（Ｉ／Ｏ）コントローラをＣＰＵバスによって結合された形で含んでいる。このコンピュータは、ハードディスクおよびＣＰＵバスに結合されるハード・ドライブ・コントローラをオプションとして含むことができる。ハードディスクは、本発明等のアプリケーション・プログラムおよびデータを記憶するために使用することができる。それに代えて、アプリケーション・プログラムをＲＡＭまたはＲＯＭ内に記憶させることができる。Ｉ／Ｏコントローラは、Ｉ／Ｏバスを経由してＩ／Ｏインターフェースに結合される。Ｉ／Ｏインターフェースは、シリアル・リンク、ローカル・エリア・ネットワーク、無線リンク、およびパラレル・リンク等の通信リンクを介してアナログまたはデジタル形式でデータの受信および送信を行なう。オプションとして、表示器、キーボード、およびポインティング・デバイス（マウス）がＩ／Ｏバスに接続されることもある。それに代えて、Ｉ／Ｏインターフェース、表示器、キーボード、およびポインティング・デバイスのために別々の接続（別々のバス）が使用されることもある。プログラマブル処理システムは、あらかじめプログラムすること、または別のソース（たとえば、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、または別のコンピュータ）からプログラムをダウンロードすることによってそれをプログラムすること（および再プログラムすること）ができる。
【００３１】
各コンピュータ・プログラムは、目に見える形として、コンピュータによってストレージ媒体またはデバイスが読み出されたときに、ここで説明している手順を実行するべくそのコンピュータの構成および動作のコントロールを行なうために、汎用または専用プログラマブル・コンピュータによって読み出されることが可能なマシン可読ストレージ媒体またはデバイス（たとえば、プログラム・メモリまたは磁気ディスク）内に記憶される。また本発明のシステムは、コンピュータ・プログラムを用いて構成されるコンピュータ可読ストレージ媒体内において具体化されると考えてもよく、それにおいてストレージ媒体は、ここで述べている機能を実行するべく特定の、あらかじめ定義済みの態様でコンピュータを動作させるように構成される。
【００３２】
以上、ここでは、特許法に従うため、および当業者に、新しい原理の適用および必要とされる専用の構成要素の組み立ておよび使用に必要となる情報を提供するために、相当に詳細に本発明を説明してきた。しかしながら、本発明が明確に異なる装置およびデバイスによって実行可能であること、および装置の詳細および動作手順の両方に対する多様な修正が本発明自体の範囲からの逸脱なしに達成可能であることは理解されるものとする。
【００３３】
【表１】
2013537666.tif 000003
【表２】
2013537666.tif 000004
【表３】
2013537666.tif 000005
【表４】
2013537666.tif 000006
【表５】
2013537666.tif 000007
【表６】
2013537666.tif 000008
【表７】
2013537666.tif 000009
【表８】
2013537666.tif 000010
【表９】
2013537666.tif 000011
【表１０】
2013537666.tif 000012
【表１１】
2013537666.tif 000013
【表１２】
2013537666.tif 000014
【表１３】
2013537666.tif 000015
【表１４】
2013537666.tif 000016
【表１５】
2013537666.tif 000017
【表１６】
2013537666.tif 000018
【表１７】
2013537666.tif 000019
【表１８】
2013537666.tif 000020
【表１９】
2013537666.tif 000021
【表２０】
2013537666.tif 000022
【表２１】
2013537666.tif 000023
【表２２】
2013537666.tif 000024
【符号の説明】
【００３４】
１０２  プロダクト仕様
１０４  コンピュータ可読コードまたはアルゴリズム
１０６  要件
１１１  ＩＣジェネレータ
１１２  アーキテクチャ・オプティマイザ
１１３  ＧＤＳファイル
１１４  物理プリミティブ情報
１１５  ファームウエア
１１６  ソフトウエア開発キット（ＳＤＫ）
１１８  テスト・スート
１２０  システム、アーキテクチャ、およびマイクロ−アーキテクチャ（ＳＡＭＡ）表現
１２１  カスタム・チップ
１３０  データ・モデル（ＤＭ）
１３２  ＲＴＬコード
１３４  ツール・ジェネレータ
１３６  ツール
１３８  ファームウエア
１４０  プロファイリング・ツール
１５０  物理的な制約
１６０  物理設計
２００  ＳＡＭＡ  
２１０  データ・モデル（ＤＭ）
２２０  ビュー
２３０  ビューの分析
２４０  実装
２８０  データ・モデル（ＤＭ）
２８２  アーキテクチャ・オプティマイザ・ビュー
２８４  物理設計ビュー
２８６  ソフトウエア・ツール・ビュー
【図１】
2013537666.tif 000025
【図２】
2013537666.tif 000026
【図３】
2013537666.tif 000027
【図４】
2013537666.tif 000028
【図５】
2013537666.tif 000029
【国際調査報告】
2013537666.tif 000030