(57)【要約】  ＡＳＩＣを開発するためのシステムおよび方法である。機能を実行するプログラム命令を含むソフトウェアプログラムを格納することができる。ソフトウェアプログラムは、所望のシステム速度にて処理システム上で実行することができ、また、その実行に基づいて検証することができる。処理システムの少なくとも一部分の第１のハードウェア記述を格納することができ、処理システムの少なくとも一部分の実装を特定することができる。第１のハードウェア記述の第１の部分に対応する、第２のハードウェア記述を生成することができる。第２のハードウェア記述は、処理システム上で実行するソフトウェアプログラムの第１の部分の専用のハードウェアによる実装を特定することができる。第２のハードウェア記述の生成は、ＡＳＩＣを完全に特定するために１回以上実行することができる。ソフトウェアプログラムの機能を実装する、ＡＳＩＣを作成することができる。
2009538481.tif 000002
【特許請求の範囲】
【請求項１】
機能を実行する特定用途向け集積回路（ＡＳＩＣ）を開発するための方法であって、
前記機能を実装するプログラム命令を含むソフトウェアプログラムを格納するステップと、
並列処理を実行可能な処理システム上で前記ソフトウェアプログラムを実行するステップであって、前記ソフトウェアプログラムの前記実行ステップは、所望のシステム速度で実行される、ステップと、
前記実行ステップに基づいて、前記ソフトウェアプログラムを検証するステップと、
前記処理システムの少なくとも一部分の第１のハードウェア記述を格納するステップであって、前記第１のハードウェア記述は前記処理システムの少なくとも一部分の実装を特定する、ステップと、
前記第１のハードウェア記述の第１の部分に対応する第２のハードウェア記述を生成する生成ステップであって、前記第２のハードウェア記述は、前記処理システム上で実行する前記ソフトウェアプログラムの第１の部分の専用のハードウェアによる実装を特定し、前記生成ステップは１回以上行われる、生成ステップと、
前記ソフトウェアプログラムの前記機能を実装する前記ＡＳＩＣを作成する作成ステップであって、ＡＳＩＣ上で前記第２のハードウェア記述の実装を含む、作成ステップと
を含む、特定用途向け集積回路を開発する方法。
【請求項２】
前記生成ステップは、複数の第２のハードウェア記述を生成するために複数回実行され、
前記作成ステップは、前記ＡＳＩＣ上での前記複数の第２のハードウェア記述の実装を含む、
請求項１に記載の方法。
【請求項３】
前記作成ステップは、前記ＡＳＩＣ上での前記第１のハードウェア記述の少なくとも一部分の実装を含む、請求項１に記載の方法。
【請求項４】
前記第２のハードウェア記述は状態機械を特定し、
前記生成ステップは、前記第１のハードウェア記述の前記第１の部分の、前記状態機械を特定する前記第２のハードウェア記述による置き換えを含み、
前記作成ステップは、前記ＡＳＩＣ上での前記状態機械の実装を含む、
請求項１に記載の方法。
【請求項５】
前記生成ステップは、前記ソフトウェアプログラムの前記第１の部分の計算要件と一致するまたはこれを超える、前記第２のハードウェア記述のカスタムデータパスを含む、請求項１に記載の方法。
【請求項６】
前記ソフトウェアの前記第１の部分は、順次に複数の演算を実行するように実行可能であり、
前記第２のハードウェア記述は、並列での複数の演算の実行を特定する、
請求項１に記載の方法。
【請求項７】
前記生成ステップは、
使用するハードウェアリソースの実際の量を決定するために、前記ソフトウェアプログラムを分析するステップを含み、
前記第１のハードウェア記述の第２の部分は、前記分析に基づき、前記作成ステップで使用されない、
請求項１に記載の方法。
【請求項８】
前記生成ステップは、
前記第１のハードウェア記述の前記第１の部分において未使用の通信リンクを決定するステップを含み、
前記第１のハードウェア記述の前記未使用の通信リンクは、前記作成ステップで使用されない、
請求項１に記載の方法。
【請求項９】
前記変換ステップは、
前記第１のハードウェア記述の前記第１の部分において、重要な時間的な要件を有するプログラム可能な通信リンクを決定するステップを含み、
前記生成ステップは、前記決定されたプログラム可能な通信リンクの、専用リンクによる置換えを含む、
請求項１に記載の方法。
【請求項１０】
前記処理システムの第１のプロセッサタイプで実行する前記ソフトウェアプログラムの第２の部分を分析するステップと、
第２のプロセッサタイプは、前記分析ステップに基づいて決定される、前記第２のプロセッサタイプのプロセッサを特定する第３のハードウェア記述を決定するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記第２のプロセッサタイプのプロセッサは、あらかじめ検証済みのプロセッサタイプのライブラリから選択される、請求項１０に記載の方法。
【請求項１２】
前記第２のプロセッサタイプのプロセッサは、前記分析に基づいて最適化される、請求項１０に記載の方法。
【請求項１３】
前記第２のハードウエア記述は、前記ソフトウエアプログラムのビット幅に従ってビット幅を実装する、請求項１に記載の方法。
【請求項１４】
１つまたは複数のＨＤＬ記述を、前記ソフトウエアプログラムから合成するステップと、
前記１つまたは複数のＨＤＬ記述のうちの少なくとも１つを前記第２のハードウエア記述に組み込むステップと、
をさらに含む、請求項１に記載の方法。
【請求項１５】
前記ＡＳＩＣを作成する作成ステップは、構造化されたＡＳＩＣ設計に従って１つまたは複数のあらかじめ定義済みのＡＳＩＣ部分を使用して行われる、請求項１に記載の方法。
【請求項１６】
前記１つまたは複数の第２のハードウエア記述からＡＳＩＣハードウエア記述を生成するステップ、
前記ＡＳＩＣハードウエア記述によって記述されたチップトポロジを分析するステップ、
前記分析に基づいて前記ＡＳＩＣハードウエア記述を最適化するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１７】
前記最適化するステップは、
サイジング、
バッファリング、
クロック網のチューニング、
電力網のチューニング、または
グラウンド網のチューニング
のうちの１つまたは複数を含む、請求項１６に記載の方法。
【請求項１８】
前記ＡＳＩＣは、１つまたは複数のＩＰブロックを含む、請求項１に記載の方法。
【請求項１９】
前記生成ステップは、前記ソフトウエアプログラムのために最適化されたメモリを指定する第３のハードウエア記述を使用してメモリを指定する前記第１のハードウエア記述の第２の部分を修正することを含む、請求項１に記載の方法。
【請求項２０】
前記第３のハードウエア記述は、
読み出し専用メモリ、
アップサイズされたメモリ、
ダウンサイズされたメモリ、または
再編成されたメモリ、
のうちの１つまたは複数を指定する、請求項１９に記載の方法。
【請求項２０】
前記処理システムは、複数のプロセッサおよびメモリ媒体を含み、前記メモリ媒体は、前記複数のプロセッサの間に分散されている、請求項１に記載の方法。
【請求項２１】
機能を実行する特定用途向け集積回路（ＡＳＩＣ）を開発するための方法であって、
前記機能を実装するプログラム命令を含むソフトウエアプログラムを格納するステップと、
並列処理の可能な処理システム上において前記ソフトウエアプログラムを実行するステップであって、所望のシステム速度で実行される、ステップと、
前記実行することに基づいて、前記ソフトウエアプログラムを検証するステップと、
前記処理システムの少なくとも一部分の第１のハードウエア記述を格納するステップであって、前記第１のハードウエア記述は、前記処理システムの少なくとも一部分の実装を指定する、ステップと、
前記第１のハードウエア記述の第１の部分に対応する複数の第２のハードウエア記述を繰り返し生成する生成ステップであって、前記複数の第２のハードウエア記述のそれぞれは、前記処理システム上において実行する前記ソフトウエアプログラムのそれぞれの第１の部分の専用ハードウエア実装を指定する、生成ステップと、
前記ソフトウエアプログラムの前記機能を実装する前記ＡＳＩＣを作成する作成ステップであって、ＡＳＩＣ上で前記複数の第２のハードウエア記述を実装を含む、作成ステップと、
を含む方法。
【請求項２２】
コンピュータシステムと、前記コンピュータシステムに接続される処理システムとを含むシステムであって、
前記コンピュータシステムは、
検証のために前記処理システムによってソフトウェアプログラムを実行可能な、前記ソフトウェアプログラムの格納を実行し、
第１のハードウェア記述は、ＡＳＩＣ上における前記処理システムの少なくとも一部分の実装を特定する、前記処理システムの前記少なくとも一部分の前記第１のハードウェア記述の格納を実行し、
複数の第２のハードウェア記述のそれぞれは、前記処理システム上で実行する前記ソフトウェアプログラムの各第１の部分の専用のハードウェアによる実装を特定する、前記第１のハードウェア記述の各第１の部分に対応する前記複数の第２のハードウェア記述の繰り返し生成を実行し、前記複数の第２のハードウェア記述は、前記ＡＳＩＣを、前記機能の実行をさせるよう構成することに利用できるものである、
よう構成されている、システム。
【請求項２３】
機能を実行する特定用途向け集積回路（ＡＳＩＣ）を開発するための方法であって、
前記機能を実装するプログラム命令を含むソフトウエアプログラムを格納するステップと、
並列処理を実行可能な処理システム上で前記ソフトウエアプログラムを実行するステップであって、前記ソフトウエアプログラムの実行ステップは、所望のシステム速度で実行される、ステップと、
前記実行ステップに基づいて前記ソフトウエアプログラムを検証するステップと、
前記処理システムの少なくとも一部分の第１のハードウエア記述を格納するステップであって、前記第１のハードウエア記述は、前記処理システムの少なくとも一部分の実装を指定するステップと、
前記第１のハードウエア記述の第１の部分に対応する第２のハードウエア記述を生成する生成ステップであって、前記第２のハードウエア記述は、前記処理システム上で実行する前記ソフトウエアプログラムの第１の部分のハードウエア実装を特定し、前記生成ステップは、１回以上行われ、且つ、意図されたターゲットデバイスとして構造化されたＡＳＩＣに基づいて行われる、生成ステップと、
前記ソフトウエアプログラムの機能を実行する前記構造化されたＡＳＩＣを構成すべく前記構造化されたＡＳＩＣ上での前記第２のハードウエア記述を実装するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定用途向け集積回路（ＡＳＩＣ）の開発の分野に係、特に、ソフトウェアプログラムに基づくＡＳＩＣの設計のためのシステムおよび方法に関する。
【背景技術】
【０００２】
<<関連技術の説明>>
機能検証の効率を向上させる目的で電子システムを記述するために、「Ｃ」等の高水準プログラム言語を利用するという最近の傾向によって、高水準モデルと低水準のハードウェア実現との間の実施のギャップが大きくなっている。典型的には、電子機器の試作のために、高水準言語プログラムを、ＶｅｒｉｌｏｇまたはＶＨＤＬコード等のハードウェア記述言語（ＨＤＬ）記述へと手動でまたは自動で変換し、ゲートレベル論理へ統合し、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のプログラム可能なハードウェアデバイス上で初期のテストを行う。ほとんどの高水準プログラムはプログラム可能なハードウェアデバイスまたはＡＳＩＣを構成するゲートレベル論理の実行に必要なクロック情報を含まないため、多くの場合において、これは複雑なタスクであることがわかっている。
【０００３】
プロセッサおよび配線接続された論理の組み合わせで実現されるシステムは、さらに、ソフトウェア（プロセッサによって実行される高水準言語プログラム）およびハードウェア（ゲートレベル論理のＨＤＬ記述）へと、設計を分割するために、難しいステップを必要とする。このため、手作業の変換は時間がかかりすぎ、エラーが生じやすい。自動変換（動作記述の合成）では、多くの場合、作成された論理が不十分となってしまう。ＦＰＧＡおよびプロセッサ等の既成で、市販のプログラム可能なデバイスに基づくハードウェアの試作品は、多くの場合、所望のシステム速度よりも遅い速度で動作し、このため、開発および検証のためにさらなる課題が生じることになる。場合によっては、プログラム可能なハードウェア要素の構成のために生成されたコードは、プログラム可能なハードウェアデバイスのパフォーマンスおよびリソース上の制約のために、最終のＡＳＩＣで必要なコードから大きく外れたものになり得る。これに対応するため、高水準プログラム言語に基づくモデルから最終のＡＳＩＣモデルへ設計（デザイン）を変換するために多くの開発サイクルが必要である。さらに、種々のデザイン変換の正確さ（機能の等価性（ｅｑｕｉｖａｌｅｎｃｅ））を検証するための、簡単で確実な分析技術は存在しない。このため、高水準動作モデルからＡＳＩＣデザインの物理的な実装への変換経路を改善することが望ましい。
【発明の概要】
【０００４】
ソフトウェアプログラムをＡＳＩＣに変換するためのシステムおよび方法について種々の実施の態様を、以下に説明する。
【０００５】
第１に、ソフトウェアプログラムを格納することができる。ソフトウェアプログラムは、所望のＡＳＩＣの機能を実現するプログラム命令を含むことができる。一実施形態において、ソフトウェアプログラムは、例えば、Ｃ等の高水準コンピュータ言語で記述することができる。あるいは、ソフトウェアプログラムは、Ｎａｔｉｏｎａｌ  ＩｎｓｔｒｕｍｅｎｔｓのＬａｂＶＩＥＷまたはＭａｔｈｗｏｒｋｓ，ＩｎｃのＳｉｍｕＬｉｎｋ等のグラフィカルプログラム言語で記述することができる。
【０００６】
ソフトウェアプログラムは、並列処理を実行可能な処理システム上で実行することができる。種々の実施の態様において、処理システムは、所望に応じて、単一のチップまたは複数の結合チップで実現することができる。例えば、処理システムは複数のプロセッサおよび（例えば、プロセッサ間で分散される）メモリ媒体を含むことができる。代替として、または、さらに、処理システムは、並列実行が可能な複数の再構成可能な論理要素を含むことができる。
【０００７】
ここで留意すべきは、ソフトウェアプログラムの実行前に、ソフトウェアプログラムを分析し、処理システムの異なる部分上で実行し得る部分に分割することができることである。例えば、ソフトウェアプログラムの第１のタスクまたは部分を、処理システムの第１の部分上で実行することができる。分析および分割は、所望に応じて、自動または手作業で実行することができる。従って、ソフトウェアプログラムは、処理システムの部分ずつ分割することができる。
【０００８】
更に留意すべきは、ソフトウェアプログラムを、所望のシステム速度で処理システム上で実行することができるということである。例えば、ソフトウェアプログラムは、作成中のＡＳＩＣの所望の速度で実行することができる。言い換えると、処理システムは、目的のシステム速度に等しいスループットレベルでソフトウェアプログラムを実行するために十分なハードウェアリソースを含むことができる。従って、システム開発およびデバッグを、妥協することなく、フルシステム速度で実行することができる。このため、処理システムは、所望のシステム速度においてリアルタイムで実行することができ、設計者は、ＡＳＩＣの将来のパフォーマンスに関して憶測することなく、ソフトウェアプログラムを完全にテストすることができる。
【０００９】
さらに、（例えば、所望のシステムのスループットレベルに到達するために）さらなる処理能力が必要な場合、さらなるプロセッサ、メモリ、および／または通信経路を、最小限の労力で処理システムに追加できる。システム要件に適合させるために処理システムを迅速に拡張させることができるため、システム設計に、迅速に変更できる試作能力を提供できる。好適な実施形態において、処理システムへのソフトウェアプログラムの再配信は、自動的に、およびユーザが意識することなく実行することができる。
【００１０】
従って、ソフトウェアプログラムは、処理システム上でのソフトウェアプログラムの実行によって、検証することができる。コンピュータシステム上で実行するソフトウェア開発環境は、システムソフトウェアプログラムを開発および検証するために、デバッグツール、パフォーマンス分析ツール、タスク割り当てツール、および通信統合ツールを提供することができる。検証されたソフトウェアは、最低限の処理量、メモリ容量、および通信リソースを消費するように最適化することができ、それが、ＡＳＩＣ実現のためのハードウェアの基準を形成する。
【００１１】
処理システムの第１のハードウェア記述を格納することができる。第１のハードウェア記述は、ハードウェアデバイス上での処理システムの実現を特定し得る。例えば、一実施形態において、第１のハードウェア記述は、上記の処理システムのためのデフォルトのハードウェア記述に対応し得る。代替として、またはさらに、ハードウェア記述は、処理システムのコンポーネントに基づいて、組み合わせ、統合することができる。第１のハードウェア記述は、例えば、ＶＨＤＬ（ＶＨＳＩＣハードウェア記述言語）、Ｖｅｒｉｌｏｇ等のハードウェア記述言語（ＨＤＬ）によって表現することができる。
【００１２】
第１のハードウェア記述の第１の部分によって特定される処理システムの一部分に対応する、第２のハードウェア記述を生成することができる。上記の例に従うと、第２のハードウェア記述は、第１のハードウェア記述の第１の部分に対応し得る。第２のハードウェア記述は、処理システム上の部分で実行されるソフトウェアプログラムの第１の部分の専用のハードウェア実現形態（例えば、特定の論理回路）を特定することができる。一部の実施形態において、第２のハードウェア記述は第１のハードウェア記述に基づいて作成することができ、（例えば、ソフトウェアのプログラム命令を例えば、ＨＤＬコード等のハードウェア記述に変換することによって）ソフトウェアのハードウェア記述を組み込むことができる。あるいは、第２のハードウェア記述は、単に、処理システム上の既存のアーキテクチャおよび処理システムで実行するソフトウェアを使って作成することができる。従って、第２のハードウェア記述は、第１のハードウェア記述によって表されるハードウェアのいくつかまたは全てを記述または実現することができる。しかし、第２のハードウェア記述は、ソフトウェア（またはその一部分）、ならびにソフトウェアを実行するハードウェアを記述または実現することもでき、この場合、第２のハードウェア記述は、ハードウェア上で実行するソフトウェアの機能を達成する専用のゲートの形態で、ソフトウェア／ハードウェアを特定する。従って、上に示すように、第２のハードウェア記述は、処理システム上で実行するソフトウェアプログラムの一部の専用のハードウェアの実現を特定し得る。
【００１３】
種々の実施態様において、第２のハードウェア記述は、１回以上生成することができる。例えば、第２のハードウェア記述は、各コンポーネントの少なくとも１つのサブセットまたは処理システムの部分のために生成することができる。次に、各第２のハードウェア記述は、ＡＳＩＣのための最終的なハードウェア記述へと、一緒にまとめることができる。あるいは、所望に応じて、完全なＡＳＩＣのために第２のハードウェア記述を生成することができる。
【００１４】
処理システム（またはその一部分）上で実行されるソフトウェアプログラムの一部分の専用のハードウェア実現を特定する第２のハードウェア記述の生成は、ソフトウェアプログラムのその部分および／または処理システムのその部分の「ハードウエア化」と称することができる。なお、ハードウエア化は、ＡＳＩＣ上のソフトウェアプログラムの特定の部分の実現も含み得る。従って、ハードウエア化は、プログラム可能性は排除され得る、またはＡＳＩＣのその特定の部分に限定してもよいことを意味し得る。さらに、上で述べたように、第２のハードウェア記述は、処理システムの部分で実行しているソフトウェアを含むように、第１のハードウェア記述を修正することで生成することができる。
【００１５】
ＡＳＩＣの特定の部分のハードウエア化によって、パフォーマンスの向上、より小さい面積、および、より低い電力消費が可能となり得る。留意すべきは、処理システムの１つ以上の部分をハードウエア化しないようにすることができ、最終製品（この場合はＡＳＩＣ）をプログラム可能にすることができるということである。従って、第２のハードウェア記述を、所望に応じて、完全にまたは部分的にハードウエア化される最終のＡＳＩＣのために生成することができる。このため、ハードウエア化の量を調節することによって、作成されたＡＳＩＣの特徴は、プログラム可能なＡＳＩＣから、カスタム配線接続されたＡＳＩＣまでの範囲にわたり得、異なる程度の改善された面積、パフォーマンス、および電力消費を達成することができる。なお、ハードウエア化する部分は、例えば、コンピュータシステム上で実行するグラフィカルユーザインターフェース（ＧＵＩ）を使ってユーザが選択することができる。
【００１６】
第２のハードウェア記述の生成（ないしハードウエア化）は、種々の方法を使用して実行することができる。一実施態様において、第２のハードウェア記述の生成には、使用されるハードウェアリソースの実際の量を決定するために、処理システム上で実行するソフトウェアの分析が含まれ得る。分析の実行後、１つ以上の未使用の通信リンク（例えば、論理および配線）またはチップＩＯも、例えば、第２のハードウェア記述を生成するために、第１のハードウェア記述から削除することができる。従って、一実施態様において、第２のハードウェア記述は、分析に基づいて、処理システムの種々の部分のハードウェア記述を含まない場合がある。
【００１７】
一部の実施態様において、重要なタイミング要件を有するプログラム可能な通信リンクは、専用の配線で置き換えることができる。さらに、命令セットおよび／またはデータの幅を、ソフトウェアプログラムに応じて変更することができる。
【００１８】
さらに、データメモリのサイズおよび構成を、ソフトウェアで定義される機能の厳密な要件に適合するように最適化することができる。例えば、未使用メモリについての不要なメモリ記述は、ハードウエア化のプロセス中に（第２のハードウェア記述を生成するために）第１のハードウェア記述から除去することができる。あるいは、またはさらに、例えば、最終ＡＳＩＣのパフォーマンスの向上、および、より小さな面積を可能にするために、メモリサイズを増大、メモリ構成を変更、またはＲＡＭ記述を読み出し専用メモリ（ＲＯＭ）記述で置き換えることができる。
【００１９】
一部の実施形態において、第１のハードウェア記述は特定のプロセッサを記述し得、プロセッサのハードウエア化は、（例えば、第１のハードウェア記述における）プロセッサの記述を、事前に検証されたプロセッサコアのライブラリからのプロセッサの特定の記述で置き換えることを含み得る。例えば、（例えば、ＡＳＩＣの）システム要件が浮動小数点パフォーマンスを要求する場合に、浮動小数点高速化用の組み込みハードウェアを有するプロセッサを使用することができ、そうでない場合には、より小さな固定小数点プロセッサを選択し、プロセッサ記述のライブラリから使用することができる。
【００２０】
同様に、プロセッサ記述は、ソフトウェアプログラムのソフトウェア要件に基づいてカスタマイズおよび再構成することができる。例えば、プロセッサ記述を、特に、命令を追加または削除し、レジスタファイルおよびキャッシュサイズを最適化し、特殊なハードウェアアクセラレータおよびアドレスモードを追加し、および／またはカスタム命令を作成することで、改良することができる。一実施態様において、プロセッサの実行制御および命令メモリは、特定のソフトウェアプログラムの機能を実行する状態機械（ステートマシン）によって置き換えることができる。さらに、プロセッサ記述は、ソフトウェアプログラムの計算要件と実質上一致するカスタムデータ経路を置換することで、最適化することができる。カスタムデータ経路は、例えば、第１のハードウェア記述で記述される処理システムによって、以前は順次で実行された演算を、並列実行できるようにすることができる。ここで留意すべきは、一部の実施態様において、従来の動作記述の合成技法を使用することができるということである。例えば、システムプログラムの一部分を分割し、配線接続された論理ブロックに統合することができる。
【００２１】
一部の実施形態において、ＩＰブロックを第２のハードウェア記述および／または最終のハードウェア記述に統合し得る。ＩＰブロックは、元の処理システムアーキテクチャに存在する、または存在しないこともある。ＩＰブロックは、さらに、ソフトウェアプログラムの機能の高度に最適化された論理の実現でもあり得る。ＩＰブロック（知的財産ブロック）は、利用のためのライセンスを付与された企業または団体によって生成されるブロックを意味し得る。従って、ＩＰブロックは、（例えば、第２のハードウェア記述にその記述を含めることによって）ＡＳＩＣに組み込むことができる。
【００２２】
ＡＳＩＣの１つ以上の部分をハードウエア化した後、ＡＳＩＣの電気的なパフォーマンスを、（元の処理システムのトポロジではなく）新しいチップトポロジのために最適化することができる。回路最適化は、サイズ決定、バッファリング、クロックネットチューニング、電力／接地ネットチューニング、および／またはその他の最適化を含み得る。
【００２３】
従って、第２のハードウェア記述の生成には、ＡＳＩＣを最適化するための、第１のハードウェア記述の改変が含まれ得る。ＡＳＩＣを作成または構成でき、および、ソフトウェアプログラムの機能を実現することができる。ＡＳＩＣの構成または作成は、ＡＳＩＣ上に第２のハードウェア記述（または最終ハードウェア構成／複数の第２のハードウェア構成）を実現することを含み得る。例えば、ＡＳＩＣを構成するためのハードウェア記述が状態機械を含む場合、ＡＳＩＣの構成は状態機械の実現を含み得る。さらに、ＡＳＩＣの構成は、ＡＳＩＣ上に第１のハードウェア記述の１つ以上の部分を実現することを含み得る。
【図面の簡単な説明】
【００２４】
以下の図面と共に以下の好適な実施形態の詳細な記述を考慮することで、本発明がより良く理解される。
【００２５】
【図１】本発明の種々の実施形態を実現するために、設計においてターゲットシステムを制御する例示的なコンピュータシステムを示す。
【００２６】
【図２】一実施形態による、ソフトウェアプログラムに基づいてＡＳＩＣを設計する方法の例示的な実施形態を示すフローチャートである。
【００２７】
【図３】本発明の一実施形態による例示的な処理システムを示す。
【００２８】
【図４】本発明の一実施形態による例示的なＡＳＩＣを示す。
【００２９】
本発明は種々の改変および変形がされ得るが、その特定の実施形態について図を用いて例として示し、本明細書において詳細に説明する。しかし、図面および図面の詳細な記述は、開示された特定の形態に本発明を制限するために意図されたものではなく、逆に、添付の請求項で定義される、本発明の精神および範囲内にある全ての改変例、同等例および代替例を含むことを意図していることを理解されたい。
【発明を実施するための形態】
【００３０】
<<用語>>
以下に、本発明で使用される用語の用語集を示す。
【００３１】
『メモリ媒体』−種々のタイプのメモリデバイスまたはストレージデバイスのうちいずれかである。「メモリ媒体」という用語は、インストール用の媒体、例えば、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク１０４、またはテープデバイス、コンピュータシステムメモリまたはＤＲＡＭ、ＤＤＲ  ＲＡＭ、ＳＲＡＭ、ＥＤＯ  ＲＡＭ、Ｒａｍｂｕｓ  ＲＡＭ等のランダムアクセスメモリ、または磁気メディア等の非揮発性メモリ、例えば、ハードドライブまたは光学記憶媒体を含むことを意図している。メモリ媒体は、他のタイプのメモリも含み得、また、その組み合わせも含み得る。さらに、メモリ媒体は、プログラムが実行される第１のコンピュータに配置することができ、および／またはインターネット等のネットワークによって第１のコンピュータに接続される第２の異なるコンピュータに配置することもできる。後者の例において、第２のコンピュータは、第１のコンピュータに実行のプログラム命令を提供することができる。「メモリ媒体」という用語は、例えば、ネットワークによって接続される異なるコンピュータにおけるような、異なる場所に存在し得る２つ以上のメモリ媒体をふくみ得る。
【００３２】
『キャリア媒体』−バス、ネットワーク、および／または電子的または光学的な信号等の信号を伝送する、上記のメモリ媒体、ならびに、他の物理的な伝送媒体等の、物理的な伝送媒体。
【００３３】
『プログラム可能なハードウェア要素』−プログラム可能なまたは配線接続された相互接続を経由して接続される複数のプログラム可能な機能ブロックを含む種々のハードウェアデバイスを含む。例には、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、ＰＬＤ（プログラム可能な論理デバイス）、ＦＰＯＡ（フィールドプログラマブルオブジェクトアレイ）、およびＣＰＬＤ（複雑なＰＬＤ）が含まれる。プログラム可能な機能ブロックは、細粒（ｆｉｎｅ  ｇｒａｉｎｅｄ）の（組み合わせ論理または参照テーブル）から粗粒（ｃｏａｒｓｅ  ｇｒａｉｎｅｄ）（演算論理ユニットまたはプロセッサコア）の範囲であり得る。プログラム可能なハードウェア要素は、「再構成可能な論理」と称することもできる。
【００３４】
『特定用途向け集積回路（ＡＳＩＣ）』−この用語は、用語の通常の意味の全範囲を表すよう意図している。ＡＳＩＣは、構成要素としてプログラム可能なプロセッサコアを含んでもよいが、ＡＳＩＣという用語は、汎用プログラム可能なデバイスではなく、特定のアプリケーションのためにカスタマイズされる集積回路を含むよう意図されている。携帯電話のセル、ＭＰ３プレーヤーのチップ、および多数の他の単機能ＩＣが、ＡＳＩＣの例である。ＡＳＩＣは、通常、ＶｅｒｉｌｏｇまたはＶＨＤＬ等のハードウェア記述言語で記述される。
【００３５】
『プログラム』−「プログラム」という用語は、用語の通常の意味の全範囲を表すよう意図している。「プログラム」という用語は、１）メモリに格納でき、および、プロセッサで実行可能なソフトウェアプログラム、または２）プログラム可能なハードウェア要素またはＡＳＩＣを構成するために利用可能なハードウェア構成プログラム、を含む。
【００３６】
『ソフトウェアプログラム』−「ソフトウェアプログラム」という用語は、用語の通常の意味の全範囲を表すよう意図しており、メモリ媒体に記憶し、プロセッサで実行することのできるプログラム命令、コード、スクリプトおよび／またはデータのいずれものタイプ、またはその組み合わせをも含む。例示的なソフトウェアプログラムは、Ｃ、Ｃ＋＋、ＰＡＳＣＡＬ、ＦＯＲＴＲＡＮ、ＣＯＢＯＬ、ＪＡＶＡ、アセンブリ言語等のテキストベースのプログラム言語で記述されるプログラム、グラフィカルプログラム（グラフィカルプログラム言語で記述されたプログラム）、アセンブリ言語プログラム、マシン言語にコンパイルされたプログラム、スクリプト、およびその他の種類の実行可能なソフトウェアを含む。ソフトウェアプログラムは、ある方法で相互実行される２つ以上のソフトウェアプログラムを含み得る。
【００３７】
『ハードウェア構成プログラム』−プログラム可能な要素またはＡＳＩＣをプログラムまたは構成するために使用可能なプログラム、例えば、ネットリストまたはビットファイル。
【００３８】
『グラフィカルユーザインターフェース』−この用語は、用語の通常の意味の全範囲を表すよう意図している。「グラフィカルユーザインターフェース」という用語は、多くの場合、「ＧＵＩ」と略される。ＧＵＩは、１つ以上の入力ＧＵＩエレメントのみ、１つ以上の出力ＧＵＩエレメントのみ、または入力および出力ＧＵＩエレメントの両方を含み得る。
【００３９】
以下に、ＧＵＩの種々の態様の例について記載する。以下の例および記載は、ＧＵＩの通常の意味を制限することを意図するものではなく、「グラフィカルユーザインターフェース」という用語が包括する例について記述する。
【００４０】
ＧＵＩは、１つ以上のＧＵＩ要素を有する単一のウィンドウ、または複数の個々のＧＵＩ要素（または１つ以上のＧＵＩエレメントをそれぞれ有する個々の複数ウィンドウ）を含むことができ、そこで、個々の複数ＧＵＩエレメントまたはウィンドウを任意にタイル表示することができる。
【００４１】
『グラフィカルユーザインターフェース要素』−入力または出力表示を提供するためのグラフィカルユーザインターフェースの要素。例示的なグラフィカルユーザインターフェース要素は、入力制御および出力インジケータを含む。
【００４２】
『コンピュータシステム』−パーソナルコンピュータシステム（ＰＣ）、メインフレームコンピュータシステム、ワークステーション、ネットワーク機器、インターネット機器、パーソナルデジタルアシスタント（ＰＤＡ）、グリッドコンピュータシステム、またはその他のデバイスまたはデバイスの組み合わせを含む、種々のタイプのコンピュータまたは処理システムのいずれか。一般的に、「コンピュータシステム」という用語は、メモリ媒体から命令を実行する少なくとも１つのプロセッサを有するいずれのデバイス（またはデバイスの組み合わせ）も含むように、幅広く定義可能である。
【００４３】
<<図１−コンピュータシステムおよびＡＳＩＣ>>
図１は、本発明の種々の実施形態を実施するために動作可能なターゲットシステム１００に接続されるコンピュータシステム８２を示す。
【００４４】
コンピュータシステム８２は、本発明の一実施形態による１つ以上のコンピュータプログラムまたはソフトウェアコンポーネントを格納することのできる少なくとも１つのメモリ媒体を含むことができる。例えば、メモリ媒体は、本明細書で記載される方法を実行するために実行可能な１つ以上のプログラム（例えば、ソフトウェアツール）を格納することができる。メモリ媒体は、オペレーティングシステムソフトウェア、ならびにコンピュータシステムの動作のための、他のソフトウェアを格納することができる。種々の実施形態はさらに、キャリア媒体上の上記の記述に従って実現される命令および／またはデータの受信または格納を含む。
【００４５】
一実施形態において、コンピュータシステムは、ターゲットシステムの動作を制御および観察するために、ソフトウェア開発環境を格納および実行することができる。ターゲットシステムは、所望のパフォーマンスレベルでシステムソフトウェアを実行可能な処理システムを含むことができる。ターゲットシステムソフトウェアプログラムは、電子システムの機能を実行するために、コンピュータシステムに格納し、ターゲット処理システムにダウンロードすることができる。ターゲットシステムは、システムソフトウェアプログラムを実行する処理システムと同じ機能を実行するターゲットシステムの専用のＡＳＩＣ実装形態を含むことができる。コンピュータシステムは、開発および検証ステージにおいて第一に使用される。ターゲットシステムは、コンピュータシステムなしで独立して動作して、電子システムの機能を実行することができる。
【００４６】
図１に示すように、コンピュータシステム８２はディスプレイデバイスを含むことができ、ターゲットシステム１００と接続し得る。ディスプレイデバイスは、ソフトウェア開発環境のためにグラフィカルユーザインターフェース（ＧＵＩ）を表示するように動作可能にできる。グラフィカルユーザインターフェースは、例えば、コンピュータプラットフォームに依存して、グラフィカルユーザインターフェースのいずれのタイプをも含むことができる。
【００４７】
<<図２および図２Ｂ−ソフトウェアプログラムをＡＳＩＣに変換するための方法>>
図２Ａに示される例示的な実施形態において、ソフトウェアプログラムに基づいてＡＳＩＣを設計する方法が示される。図２Ｂは、電子システム設計の試作の段階からのソフトウェアプログラムを、生産ＡＳＩＣに変換するための方法の特定の実施形態を示す。図２Ａおよび図２Ｂに示される方法は、他のデバイスもあるが、上記の図で示されるコンピュータシステムまたはデバイスのいずれかと共に使用することができる。種々の実施形態において、示される方法の要素のいくつかを、示されているのと異なる順序で、共に実行することができ、または省略することもできる。さらなる方法の要素を、さらに、所望に応じて実行実行することもできる。図示されるように、この方法は、以下のように実施され得る。
【００４８】
第１に、２０２において、ソフトウェアプログラムを格納することができる。ソフトウェアプログラムは、所望のＡＳＩＣの機能を実行するプログラム命令を含むことができる。一実施形態において、ソフトウェアプログラムは、例えば、Ｃ等の高水準コンピュータ言語で記述することができる。あるいは、ソフトウェアプログラムは、Ｎａｔｉｏｎａｌ  ＩｎｓｔｒｕｍｅｎｔｓのＬａｂＶＩＥＷまたはＭａｔｈｗｏｒｋｓ，ＩｎｃのＳｉｍｕＬｉｎｋ等のグラフィカルプログラム言語で記述することができる。
【００４９】
２０４において、ソフトウェアプログラムは、並列処理を実行可能な処理システム上で実行することができる。種々の実施形態において、処理システムは、所望に応じて、単一のチップまたは複数の結合チップで実現することができる。例えば、処理システムは（例えば、プロセッサ間で分散される）複数のプロセッサおよびメモリ媒体を含むことができる。あるいは、または、さらに、処理システムは、並列実行の可能な複数の再構成可能な論理要素を含むことができる。一実施形態において、処理システムは、図３に示すＨｙｐｅｒＸマルチプロセッサシステムであり得る。従って、マルチプロセッサシステムは、複数のプロセッサを使用して、ソフトウェアプログラムを並列で実行することができる。米国特許出願シリアル番号第１０／６０２、２９２号および第１１／６９１、８８９号は、こうしたシステム、ならびに、そのシステム上におけるソフトウェアプログラムの実行および展開について記載している。従って、２０２、２０４、および２０６についてのさらなる詳細は、上記の１つ以上の参考文献に記載されている。なお、こうした参考文献および本明細書で記載されている詳細は、制限を目的とするものではないため、その他の実施形態も想定している。例えば、ソフトウェアプログラムを、所望に応じて、列挙された参考文献に記載されているまたは上記で記載されている内容以外の、いずれの数の処理システムにおいて、いずれの数の言語ででも記述することができる。
【００５０】
ここで留意すべきは、ソフトウェアプログラムの実行前に、ソフトウェアプログラムを分析し、処理システムの異なる部分上で実行することができる部分に、分割し得ることである。例えば、ソフトウェアプログラムの第１のタスクまたは部分を、処理システムの第１の部分で実行することができる。分析および分割は、所望に応じて、自動または手作業で実行することができる。従って、ソフトウェアプログラムは、処理システムの部分間で分割することができる。
【００５１】
さらに留意すべきは、ソフトウェアプログラムを、所望のシステム速度で処理システム上で実行することができるということである。例えば、ソフトウェアプログラムは、作成中のＡＳＩＣの所望の速度で実行することができる（例えば、以下で述べる２１２で）。言い換えると、処理システムは、目的のシステム速度と同等なスループットレベルでソフトウェアプログラムを実行するために十分なハードウェアリソースを含むことができる。従って、システム開発およびデバッグを、妥協することなく、フルシステム速度で実行することができる。このため、処理システムは、所望のシステム速度でリアルタイムで実行することができ、それによって、設計者は、ＡＳＩＣの将来のパフォーマンスに関して憶測することなく、ソフトウェアプログラムを完全にテストすることができる。
【００５２】
さらに、（例えば、所望のシステムのスループットレベルに到達するために）さらなる処理能力が必要な場合、さらなるプロセッサ、メモリ、および／または通信経路を、最小限の労力で処理システムに追加できる。２１４においてシステム要件に適合させるために処理システムを迅速に拡張させることができるため、システム設計に、迅速に変更できる試作能力を提供できる。好適な実施形態において、処理システムへのソフトウェアプログラムの再配信は、自動的に、およびユーザが意識することなく実行することができる。
【００５３】
従って、２０６では、ソフトウェアプログラムは、処理システム上でのソフトウェアプログラムの実行に従って、検証することができる。コンピュータシステム８２上で実行するソフトウェア開発環境は、システムソフトウェアプログラムを開発および検証するための、デバッグツール、パフォーマンス分析ツール、タスク割り当てツール、および通信統合ツールを提供してもよい。検証されたソフトウェアは、次に、２１５おいて、最低限の処理量、メモリ容量、および通信リソースを消費するように最適化することができ、それが、２１６におけるＡＳＩＣ実現のためのハードウェアの基盤を形成する。
【００５４】
２０８において、処理システムの第１のハードウェア記述を格納することができる。第１のハードウェア記述は、ハードウェアデバイス（例えば、２１４のＨｙｐｅｒＸチップ）上での処理システムの実現を特定し得る。例えば、一実施形態において、第１のハードウェア記述は、上記の処理システムのためのデフォルトのハードウェア記述に対応し得る。代替として、またはさらに、ハードウェア記述は、処理システムのコンポーネントに基づいて、組み合わせ、統合することができる。一実施形態において、処理システムの異なる通信リンク、プロセッサタイプ、メモリ等に対する異なるハードウェア記述が存在することができ、これらは、処理システムの特定のコンポーネントおよび／またはアーキテクチャに従って、組み合わせ、統合することができる。第１のハードウェア記述は、処理システムの種々のコンポーネントに対応する１つ以上の部分を有し得る。例えば、第１のハードウェア記述は、一実施形態において、プロセッサおよびメモリを記述する第１の部分を含むことができる。従って、第１のハードウェア記述は、処理システムの設計に従って格納することができる。従って、第１のハードウェア記述は、第１のハードウェア記述がＡＳＩＣ上で実現されるならば、これにより、ＡＳＩＣ上に処理システムを作成することになる、すなわち、ＡＳＩＣ上で、複数のプロセッサおよびメモリが実装されるようになる。
【００５５】
２１０において、第１のハードウェア記述の第１の部分によって特定される処理システムの一部分に対応する、第２のハードウェア記述を生成することができる。上記の例に従うと、第２のハードウェア記述は、第１のハードウェア記述の第１の部分に対応し得る。第２のハードウェア記述は、処理システム上の部分で実行されるソフトウェアプログラムの第１の部分の専用のハードウェア実現形態を特定することができる。一部の実施形態において、第２のハードウェア記述は第１のハードウェア記述に基づいて作成することができ、（例えば、ソフトウェアのプログラム命令を、例えば、ＨＤＬコード等のハードウェア記述に変換することによって）ソフトウェアのハードウェア記述を組み込むことができる。あるいは、第２のハードウェア記述は、単に、処理システム上の既存のアーキテクチャおよび処理システム上で実行するソフトウェアを使って作成することができる。従って、第２のハードウェア記述は、第１のハードウェア記述によって表されるハードウェアのいくつかまたは全てを記述または実現することができる。しかし、第２のハードウェア記述は、ソフトウェア（またはその一部分）、ならびにソフトウェアを実行するハードウェアを記述または実現することもできる。従って、上に示すように、第２のハードウェア記述は、処理システム上で実行するソフトウェアプログラムの一部の専用のハードウェア実現を特定し得る。
【００５６】
第２のハードウェア記述の部分を作成する上で実行し得るハードウエア化の度合いは、さらなる最適化されたプロセッサの実現から専用のハードウェア回路の範囲におよび得る。従って、一実施形態において、第２のハードウェア記述の一部分は、第１のハードウェア記述で特定される汎用プロセッサと比較して、より制限されたプログラム可能性を有するより最適化されたプロセッサである。別の実施形態において、第２のハードウェア記述の一部分は、専用の論理を含み、それにより、第２のハードウェア記述のこの部分がＡＳＩＣ上に実現された場合に、処理システムの対応する部分で実行するソフトウェアプログラムの第１の部分の機能を実現する専用のゲートおよび／または論理回路をＡＳＩＣ上に作成することとなる。従って、第２のハードウェア記述の異なる部分は、サイズ、パフォーマンス、コスト等の種々の基準の要件に応じて、種々の異なる度合いに「ハードウエア化」することができる。
【００５７】
ある具体的な例として、処理システムのプロセッサを、２つの和の積、すなわち、Ｚ＝（Ａ＋Ｂ）ｘ（Ｃ＋Ｄ）を計算するようにプログラムでき、全ての変数がデータメモリに格納される。処理システムでこのプログラムを実行するために、プログラムを、プロセッサの命令メモリにロードすることができる。プログラムは、データメモリからデータ（Ａ、Ｂ、Ｃ、およびＤ）をフェッチし、結果（Ｚ）を計算するためにプロセッサの実行ユニットの加算器および乗算器を有効化し、および結果をデータメモリに再び格納するための一連の命令を含むことができる。この和の積の例において、例えば、第１のハードウェア記述は、プロセッサ（実行ユニットおよび命令メモリを含む）およびデータメモリを記述する第１の部分を含むことができる。この第１のハードウェア記述は、プログラムの命令によって特定されるいずれの機能をも実行するのに十分柔軟性のあるプロセッサを定義することができる。第２のハードウェア記述は、和の演算の積のみを実行するための、専用の回路、例えば、同じプロセッサの「ハードウエア化された」バージョンおよびメモリを記述する、対応する部分を含むことができる。従って、この特定の例において、第２のハードウェア記述は、処理システム（この場合、プロセッサおよびメモリ）の部分で実行するソフトウェアの部分の専用のハードウェアによる実現を記述することができる。
【００５８】
種々の実施形態において、第２のハードウェア記述は、１回以上生成することができる。例えば、第２のハードウェア記述は、各コンポーネントまたは処理システムの各部分のために生成することができる。次に、各第２のハードウェア記述は、ＡＳＩＣのための最終的なハードウェア記述へと、一緒にまとめることができる。あるいは、所望に応じて、完全なＡＳＩＣのために第２のハードウェア記述を生成することができる。
【００５９】
処理システム（またはその一部分）上で実行されるソフトウェアプログラムの一部分の専用のハードウェア実現を特定する第２のハードウェア記述の生成は、ソフトウェアプログラムのその部分および／または処理システムのその部分の「ハードウエア化」と称することができる。なお、ハードウエア化は、（例えば、２１２に記載されている第２のハードウェア記述にしたがってＡＳＩＣを構成することによって）ＡＳＩＣ上のソフトウェアプログラムの特定の部分の実現も含み得る。従って、ハードウエア化は、プログラム可能性は排除され得る、またはＡＳＩＣのその特定の部分、またはソフトウェアプログラムのその特定の部分に限定してもよいことを意味し得る。さらに、上で述べたように、第２のハードウェア記述は、処理システムの部分で実行しているソフトウェアを含むように、第１のハードウェア記述を改変することで生成することができる。
【００６０】
ＡＳＩＣの特定の部分のハードウエア化によって、パフォーマンスの向上、より小さい面積、および、より低い電力消費が可能となり得る。留意すべきは、処理システムの１つ以上の部分をハードウエア化しないようにすることができ、最終製品（この場合はＡＳＩＣ）をプログラム可能にすることができるということである。従って、第２のハードウェア記述を、所望に応じて、完全にまたは部分的にハードウエア化される最終のＡＳＩＣのために生成することができる。このため、ハードウエア化の量を調節することによって、作成されたＡＳＩＣの特徴は、プログラム可能なＡＳＩＣから、カスタム配線接続されたＡＳＩＣまでの範囲にわたり得、異なる程度の改善された面積、パフォーマンス、および電力消費を達成することができる。なお、ハードウエア化する部分は、例えば、コンピュータシステム上で実行するグラフィカルユーザインターフェース（ＧＵＩ）８２を使ってユーザが選択することができる。
【００６１】
第２のハードウェア記述の生成（またはハードウエア化）は、種々の方法を使用して実行することができる。一実施形態において、第２のハードウェア記述の生成には、使用されるハードウェアリソースの実際の量を決定するために、処理システム上で実行するソフトウェアの分析が含まれ得る。分析の実行後、１つ以上の未使用の通信リンク（例えば論理および配線）またはチップＩＯも、例えば、第２のハードウェア記述を生成するために、第１のハードウェア記述から削除することができる。従って、一実施形態において、第２のハードウェア記述は、分析に基づいて、処理システムの種々の部分のハードウェア記述を含まない場合がある。
【００６２】
一部の実施形態において、重要なタイミング要件を有するプログラム可能な通信リンクは、専用の配線で置き換えることができる。さらに、命令セットおよび／またはデータの幅を、２０２で格納されるソフトウェアプログラムに応じて変更することができる。
【００６３】
さらに、データメモリのサイズおよび構成を、ソフトウェアで定義される機能の厳密な要件に適合するように最適化することができる。例えば、未使用のメモリの不要なメモリ記述は、ハードウエア化のプロセス中に（第２のハードウェア記述を生成するために）第１のハードウェア記述から除去することができる。あるいは、またはさらに、例えば、最終ＡＳＩＣのパフォーマンスの向上、および、より小さな面積を可能にするために、メモリサイズを増大、メモリ構成を変更、またはＲＡＭ記述を読み出し専用メモリ（ＲＯＭ）記述で置き換えることができる。
【００６４】
一部の実施形態において、第１のハードウェア記述は特定のプロセッサを記述し得、プロセッサのハードウエア化は、（例えば、第１のハードウェア記述における）プロセッサの記述を、事前に検証されたプロセッサコアのライブラリからのプロセッサの特定の記述で置き換えることを含み得る。例えば、（例えば、ＡＳＩＣの）システム要件が浮動小数点パフォーマンスを要求する場合に、浮動小数点高速化組み込みハードウェアを有するプロセッサを使用することができ、そうでない場合には、より小さな固定小数点プロセッサを選択し、プロセッサ記述のライブラリから使用することができる。
【００６５】
同様に、プロセッサ記述は、２０２に格納されるソフトウェアのソフトウェア要件に基づいてカスタマイズおよび再構成することができる。例えば、プロセッサ記述を、特に、命令を追加または削除し、レジスタファイルおよびキャッシュサイズを最適化し、特殊なハードウェアアクセラレータおよびアドレスモードを追加し、および／またはカスタム命令を作成することで、改変することができる。一実施形態において、プロセッサの実行制御および命令メモリは、特定のソフトウェアプログラムの機能を実行する状態機械によって置き換えることができる。さらに、プロセッサ記述は、ソフトウェアプログラムの計算要件と実質上一致するカスタムデータ経路を置換することで、最適化することができる。カスタムデータ経路は、例えば、第１のハードウェア記述で記述される処理システムによって、以前は順次で実行された演算を、並列実行できるようにすることができる。ここで留意すべき、一部の実施形態において、従来の動作記述の合成技法を使用することができるということである。例えば、システムプログラムの一部分を分割し、配線接続された論理ブロックに統合することができる。
【００６６】
一部の実施形態において、ＩＰブロックを第２のハードウェア記述および／または最終のハードウェア記述に統合し得る。ＩＰブロックは、元の処理システムアーキテクチャに存在する、または存在しないこともある。ＩＰブロックは、さらに、ソフトウェアプログラムの機能の高度に最適化された論理の実現でもあり得る。ＩＰブロック（知的財産ブロック）は、利用のためのライセンスを付与された企業または団体によって生成されるブロックを意味し得る。従って、ＩＰブロックは、（例えば、第２のハードウェア記述にその記述を含めることによって）ＡＳＩＣに組み込むことができる。
【００６７】
ＡＳＩＣの１つ以上の部分をハードウエア化した後（および／または２１２でＡＳＩＣを作成あるいは構成した後）、ＡＳＩＣの電気的なパフォーマンスを、（元の処理システムのトポロジではなく）新しいチップトポロジのために最適化することができる。回路最適化は、サイズ決定、バッファリング、クロックネットチューニング、電力／接地ネットチューニング、および／またはその他の最適化を含み得る。
【００６８】
従って、第２のハードウェア記述の生成には、ＡＳＩＣを最適化するための、第１のハードウェア記述の改変が含まれ得る。改変ではシステムの機能を変更しないため、形式上の検証技術を含む検証技術およびテストを、第１のハードウェア記述を検証するために第２のハードウェア記述を検証するために、使用することができる。
【００６９】
２１２において、ＡＳＩＣを作成または構成することができ、また、ソフトウェアプログラムの機能を実行することができる。ＡＳＩＣの構成または作成は、ＡＳＩＣ上の第２のハードウェア記述（または最終のハードウェア構成／複数の第２のハードウェア構成）の実現を含み得る。例えば、ＡＳＩＣを構成するためのハードウェア記述が状態機械を含む場合、ＡＳＩＣの構成は状態機械の実現を含むことができる。さらに、ＡＳＩＣの構成は、ＡＳＩＣ上の第１のハードウェア記述の１つ以上の部分の実現を含むことができる。
【００７０】
<<図４−例示的な特定用途向け集積回路（ＡＳＩＣ）>>
図４は、本発明を使用して開発される例示的なＡＳＩＣのブロック図を示す。図示されるように、ＡＳＩＣは、Ｈｙｐｅｒ  Ｘ  Ｆａｂｒｉｃの４０２、４０４、および４０６として図４に示される、１つ以上のプログラム可能なセクションを含むことができる。ＡＳＩＣのプログラム可能な部分は、元のプロセッサ構造とほぼ同様のままである。上で示されるように、一部の実施形態において、最終化されたＡＳＩＣは、完全に配線接続されたＡＳＩＣの場合にプログラム可能なセクションは全く含まない場合がある。ハードウエア化された部分では、完全なカスタムレイアウトから標準的なセル位置までの範囲の種々の物理的な実装技術およびルートを適用することができる。ＡＳＩＣは、さらに、Ｉ／Ｏフレーム４００および、１つ以上のハードウエア化されたＩＰブロック４０８および４１０をむことができる。図４のＡＳＩＣは、上記に記載されているシステムおよび方法によって作成することができる。
【００７１】
<<構造化ＡＳＩＣ設計>>
一実施形態において、ＡＳＩＣは、構造化ＡＳＩＣアプローチを使用して作成または構成することができる。構造化ＡＳＩＣは、事前決定されたベースの回路およびレイアウト構成を有する特殊な形態のＡＳＩＣである。構造化ＡＳＩＣは、カスタム化をメタル、ビア、またはチップ製造プロセスの他の最上部材料層に制限することにより、設計時間およびコストを低減することを目的としている。構造化ＡＳＩＣの例には、ＬＳＩのＲａｐｉｄＣｈｉｐ、ＮＥＣのＩＳＳＰ、およびＦｕｊｉｔｓｕのＡｃｃｅｌＡｒｒａｙが含まれる。構造化ＡＳＩＣは、マスキングのコスト低下および事前製造されたファブリックの利用による短縮された製造時間にもかかわらず、ゲートレベル論理の設計において、従来のＡＳＩＣと同じリスクおよび複雑さ、およびそれに関連する時間収束の問題をはらんでいる。
【００７２】
現在の構造化ＡＳＩＣのベース構造は、メタル層のカスタム化をサポートするために不確定ゲートによって、大部分が占められている。ＨＤＬで記述されたシステムの記述が必要である。ＡＳＩＣを作成／実現するために、ＨＤＬをゲートレベルネットリストに変換するために、論理合成ツールを使用することができる。従って、次にカスタムのメタルマスクを作成することで、ゲートを配置し、接続することができる。
【００７３】
カスタムＡＳＩＣ（中でも、上記で説明されているもの等）のハードウエア化で使用される多くの技術は、マスクプログラム可能な構造化ＡＳＩＣの実現において等しく適用される。構造化ＡＳＩＣ実現の一実施形態において、ベースアレイは、例えば、上記のプロセッサシステム、メモリマクロ、ＩＯ、および他の事前定義されたＩＰブロック等のプロセッサを含むため、ＨＤＬではない、高水準プログラム言語から直接導き出される構造化ＡＳＩＣを作成できる。
【００７４】
別の一実施形態において、不確定ゲートは、カスタム論理の作成に役立てるために、プロセッサシステムのベース構造に追加される。さらに、またはあるいは、金属マスクのカスタム化を、通信リンクを形成するために使用することができる。一実施形態において、メタル層カスタム化を、さらに、様々な種類、サイズ、および編成のメモリブロックを形成するために使用することができる。さらに、カスタム論理ブロックを作成するためにメタル層のカスタ作成するためにメタル層のカスタむ化を使用する。
【００７５】
別の一実施形態において、プロセッサシステムにおける各プロセッサの特徴（または少なくともプロセッサのサブセット）を、メタル層カスタム化によってカスタム化することができる。例えば、１つ以上のプロセッサを、命令の追加／削除、浮動小数点ハードウェアを含有／除外、レジスタファイルサイズおよび／またはキャッシュサイズの調整、および／または特殊なハードウェアアクセラレータを含めることによって、改変することができる。
【００７６】
一部の実施形態において、１つ以上のＡＳＩＣ部分を、元の処理構造に基づいてＡＳＩＣチップ上に事前定義および事前製造することができ、メタル層上における異なる相互接続によって容易にカスタム化することができる。別の一例として、構造化ＡＳＩＣは、組み込みＩＰブロックを既に含み得る。
【００７７】
別の一実施形態において、構造化ＡＳＩＣが使用される場合、ソフトウェアプログラムの検証のために使用される処理システムは、構造化ＡＳＩＣのソフトウェアまたはハードウェアエミュレータとすることができる。最終の構造化ＡＳＩＣと実質上同じプラットフォームでソフトウェアプログラムを開発することにより、ソフトウェアプログラムから構造化ＡＳＩＣへのマッピングが単純化される。構造ＡＳＩＣでは使用できるハードウエア化の可能性が減少しているため、第１のハードウェア記述は、同じ処理ハードウェアが構造ＡＳＩＣ上で既に構成されているため、処理システムの完全な実現を含まない場合がある。このような場合、第２のハードウェア記述は、通信のカスタム化に必要な情報のみを含み得るが、構造化ＡＳＩＣアプローチでは、それでも、様々な度合いのハードウエア化が可能である。
【００７８】
<<ハードウエア化プロセスの自動化>>
上で示されるように、種々のソフトウェアツールを、図２Ａおよび図２Ｂに上記に説明されるハードウエア化プロセスの補助および自動化のためにコンピュータシステム８２に格納することができる。以下に、使用することができる例示的なツールの具体的な実施形態について説明する。
【００７９】
『ソフトウェア開発』−ユーザプログラムの入力、視覚化、シミュレーション、およびデバッグを行う。こうしたツールは、ソフトウェア／ハードウェアの共同設計およびデバッグのためにハードウェア参照設計に接続するための機器を含み得る。
【００８０】
『ソフトウェア分析』−コンピュータリソース使用、ストレージリソース使用、通信リソース使用、ＩＯリソース使用、データフロー、およびデータトラフィックの分析。
【００８１】
『タスク割り当て』−処理、メモリアクセス、および通信のオーバヘッドのコスト関数モデルの作成。こうしたツールは、処理と通信の間の最適なバランス、ならびに、最適化領域、パフォーマンス、待ち時間、および電力消費を達成するために、異なるプロセッサにタスクを割り当て、作業負荷を分散することができる。
【００８２】
『仮想試作』−ソフトウェアの実際のリソース要件に基づいて設計を最適化し、仮定の分析において、ユーザに、領域／パフォーマンス／電力についての迅速なフィードバックを提供する。コンピュータ上の仮想試作技術の例が、本明細書で完全に記載されているかのように参照して組み込まれる、米国特許第６，１４５，１１７号に記載されている。
【００８３】
『メモリ生成』−最適化プロセスの決定を実現するために、種々のサイズおよび組成のメモリを生成する。
【００８４】
『通信合成』−最適化プロセスの決定を実現するためにチップ上のブロック間で最適な通信経路を生成する。
【００８５】
『Ｉ／Ｏ合成』−システムの実際の要件に適合するように、最適なＩＯフレームを生成する。
【００８６】
『カスタムデータ経路合成』−ＨｙｐｅｒＸプロセッサの汎用データ処理ユニットを置き換えるカスタム化されたデータ経路を生成する。
【００８７】
『自動フロアプラン作成』−タイミング、電力、輻輳のルート分割、およびシグナルインテグリティ分析に基づいて、最適化されたフロアプランを生成する。フロアプランナは、ハードブロック、ソフトブロック、クロックネット、電力／接地ネットワーク、ＩＯ、および設計上の制約を、ＣａｄｅｎｃｅおよびＳｙｎｏｐｓｙｓのツール等の市販されている物理的な実装ツールに適したシードフロアプランに統合することができる。
【００８８】
『タイミング最適化』−プロセッサのハードウエア化の結果としての新しいタイミング上の制約に適合するための、回路の電気的パフォーマンスの最適化。
【００８９】
『設計の検証』−ハードウエア化された設計の機能上の正確さを検証する。こうしたツールは、設計の意図が物理的な変更プロセス中において不注意から変更されていないことを検証するために役立つ。
【００９０】
『動作記述の合成』−サイズ配線接続された論理の実現のためにＨＤＬ記述にプロセッサの高水準プログラムコードを統合する。市販の動作記述の合成ツールの例には、Ｍｅｎｔｏｒ  Ｇｒａｐｈｉｃｓ、Ｆｏｒｔｅ  Ｄｅｓｉｇｎ  Ｓｙｓｔｅｍ、およびＳｙｎｆｏｒｎａのソフトウェアがある。
【００９１】
『状態機械の生成』−プロセッサの命令メモリ、命令実行、およびシーケンス論理を置き換える、ステートマシンを生成。
【００９２】
『再構成可能なプロセッサの生成』−例えば、上記のソフトウェアプログラム等のソフトウェア要件に基づくプロセッサの再構成のためのものである。例えば、命令の追加／削除、レジスタファイルおよびキャッシュサイズの最適化、特別なハードウェアアクセラレータの追加、およびカスタム命令の作成は、すべて、プロセッサカスタム化における公知の技術である。Ｔｅｎｓｉｌｉｃａの構成可能なプロセッサアーキテクチャは、再構成可能なプロセッサを構成するために使用される市販のツールの例である。
【００９３】
従って、上記のソフトウェアツールの１つ以上は、本明細書に記載されているシステムおよび方法を使用するＡＳＩＣの作成を自動化または補助するために使用可能である。なお、こうしたツールは例示的であるにすぎず、その他のツールも想定している。
【００９４】
上記の実施形態は非常に詳細に記載されているが、上記の開示内容が完全に理解されたならば、当業者には多数の変形および改変が明らかであろう。以下の請求項は、これら全ての変形および改変を含むものとして解釈されるように意図されている。
【符号の説明】
【００９５】
８２  コンピュータシステム；  
１００  ターゲットシステム；  
４００  Ｉ／Ｏフレーム；  
４０２，４０４，４０６  ＡＳＩＣ；  
４０８，４１０  ＩＰブロック。
【図１】
2009538481.tif 000003
【図２】
2009538481.tif 000004
【図３】
2009538481.tif 000005
【図４】
2009538481.tif 000006
【手続補正書】
【提出日】平成21年1月27日(2009.1.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ある機能を実行する特定用途向け集積回路（ＡＳＩＣ）を開発するための方法であって、
前記機能を実装するプログラム命令を含むソフトウェアプログラムを格納するステップと、
並列処理を実行可能な処理システム上で前記ソフトウェアプログラムを実行するステップであって、前記ソフトウェアプログラムの前記実行ステップは、所望のシステム速度で実行される、ステップと、
前記実行ステップに基づいて、前記ソフトウェアプログラムを検証するステップと、
前記処理システムの少なくとも一部分の第１のハードウェア記述を格納するステップであって、前記第１のハードウェア記述は前記処理システムの少なくとも一部分の実装を特定する、ステップと、
前記第１のハードウェア記述の第１の部分に対応する第２のハードウェア記述を生成する生成ステップであって、前記第２のハードウェア記述は、前記処理システム上で実行する前記ソフトウェアプログラムの第１の部分の専用のハードウェアによる実装を特定し、前記生成ステップは１回以上行われる、生成ステップと、
前記ソフトウェアプログラムの前記機能を実装する前記ＡＳＩＣを作成する作成ステップであって、ＡＳＩＣ上で前記第２のハードウェア記述の実装を含む、作成ステップと
を含む、特定用途向け集積回路を開発する方法。
【請求項２】
前記生成ステップは、複数の第２のハードウェア記述を生成するために複数回実行され、
前記作成ステップは、前記ＡＳＩＣ上での前記複数の第２のハードウェア記述の実装を含む、
請求項１に記載の方法。
【請求項３】
前記作成ステップは、前記ＡＳＩＣ上での前記第１のハードウェア記述の少なくとも一部分の実装を含む、請求項１に記載の方法。
【請求項４】
前記第２のハードウェア記述は状態機械を特定し、
前記生成ステップは、前記第１のハードウェア記述の前記第１の部分の、前記状態機械を特定する前記第２のハードウェア記述による置き換えを含み、
前記作成ステップは、前記ＡＳＩＣ上での前記状態機械の実装を含む、
請求項１に記載の方法。
【請求項５】
前記生成ステップは、前記ソフトウェアプログラムの前記第１の部分の計算要件と一致するまたはこれを超える、前記第２のハードウェア記述のカスタムデータパスを含む、請求項１に記載の方法。
【請求項６】
前記ソフトウェアの前記第１の部分は、順次に複数の演算を実行するように実行可能であり、
前記第２のハードウェア記述は、並列での複数の演算の実行を特定する、
請求項１に記載の方法。
【請求項７】
前記生成ステップは、
使用するハードウェアリソースの実際の量を決定するために、前記ソフトウェアプログラムを分析するステップを含み、
前記第１のハードウェア記述の第２の部分は、前記分析に基づき、前記作成ステップで使用されない、
請求項１に記載の方法。
【請求項８】
前記生成ステップは、
前記第１のハードウェア記述の前記第１の部分において未使用の通信リンクを決定するステップを含み、
前記第１のハードウェア記述の前記未使用の通信リンクは、前記作成ステップで使用されない、
請求項１に記載の方法。
【請求項９】
前記変換ステップは、
前記第１のハードウェア記述の前記第１の部分において、重要な時間的な要件を有するプログラム可能な通信リンクを決定するステップを含み、
前記生成ステップは、前記決定されたプログラム可能な通信リンクの、専用リンクによる置換えを含む、
請求項１に記載の方法。
【請求項１０】
前記処理システムの第１のプロセッサタイプで実行する前記ソフトウェアプログラムの第２の部分を分析するステップと、
第２のプロセッサタイプは、前記分析ステップに基づいて決定される、前記第２のプロセッサタイプのプロセッサを特定する第３のハードウェア記述を決定するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記処理システムは、複数のプロセッサおよびメモリ媒体を含み、前記メモリ媒体は複数のプロセッサ間の分散されている、請求項１に記載の方法。
【請求項１２】
請求項１〜１１のいずれか１項の方法を実行するためのプログラム命令を含む、メモリ媒体。
【請求項１３】
コンピュータシステムと、前記コンピュータシステムに接続される処理システムとを含むシステムであって、
前記コンピュータシステムは、
検証のために前記処理システムによってソフトウェアプログラムを実行可能な、前記ソフトウェアプログラムの格納を実行し、
第１のハードウェア記述は、ＡＳＩＣ上における前記処理システムの少なくとも一部分の実装を特定する、前記処理システムの前記少なくとも一部分の前記第１のハードウェア記述の格納を実行し、
複数の第２のハードウェア記述のそれぞれは、前記処理システム上で実行する前記ソフトウェアプログラムの各第１の部分の専用のハードウェアによる実装を特定する、前記第１のハードウェア記述の各第１の部分に対応する前記複数の第２のハードウェア記述の反復的な生成を実行し、前記複数の第２のハードウェア記述は、前記ＡＳＩＣを、前記機能の実行をさせるよう構成することに利用できるものである、
よう構成されている、システム。
【請求項１４】
ある機能を実行する特定用途向け集積回路（ＡＳＩＣ）を開発するためのプログラム命令を含むメモリ媒体であって、
検証のために処理システムによってソフトウェアプログラムを実行可能な、前記ソフトウェアプログラムと、
第１のハードウェア記述はＡＳＩＣ上における前記処理システムの少なくとも一部分の実装を特定する、前記処理システムの前記少なくとも一部分の前記第１のハードウェア記述と、
第２のハードウェア記述は、前記処理システム上で実行する前記ソフトウェアプログラムの各第１の部分の専用のハードウェアによる実装を特定する、前記第１のハードウェア記述の各第１の部分に対応する前記第２のハードウェア記述を生成するために実行可能なプログラム命令と、
が格納されており、
前記第２のハードウェア記述は、前記機能を実行するように前記ＡＳＩＣを構成するために利用可能であり、
前記第２のハードウェア記述は、前記第１のハードウェア記述の前記各第１の部分を置き換えるように構成されている、
特定用途向け集積回路を開発するためのプログラム命令を含むメモリ媒体。
【請求項１５】
前記プログラム命令は、複数の第２のハードウェア記述を生成するように実行可能であり、
前記複数の第２のハードウェア記述のそれぞれは、前記機能を実行するように前記ＡＳＩＣを構成するため利用可能であり、
前記複数の第２のハードウェア記述のそれぞれは、前記第１のハードウェア記述の各第１の部分を置き換えるように構成されている、
請求項１４に記載のメモリ媒体。
【国際調査報告】
2009538481.tif 000007
2009538481.tif 000008
2009538481.tif 000009
2009538481.tif 000010
2009538481.tif 000011