JP5009979B2 - 処理システムでのソフトウェアプログラムの実行に基づくasicの設計 - Google Patents

処理システムでのソフトウェアプログラムの実行に基づくasicの設計 Download PDF

Info

Publication number
JP5009979B2
JP5009979B2 JP2009512266A JP2009512266A JP5009979B2 JP 5009979 B2 JP5009979 B2 JP 5009979B2 JP 2009512266 A JP2009512266 A JP 2009512266A JP 2009512266 A JP2009512266 A JP 2009512266A JP 5009979 B2 JP5009979 B2 JP 5009979B2
Authority
JP
Japan
Prior art keywords
hardware description
hardware
asic
processing system
software program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009512266A
Other languages
English (en)
Other versions
JP2009538481A (ja
Inventor
エング,トミー・ケイ
Original Assignee
コーヒレント・ロジックス・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by コーヒレント・ロジックス・インコーポレーテッド filed Critical コーヒレント・ロジックス・インコーポレーテッド
Publication of JP2009538481A publication Critical patent/JP2009538481A/ja
Application granted granted Critical
Publication of JP5009979B2 publication Critical patent/JP5009979B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stored Programmes (AREA)
  • Processing Of Solid Wastes (AREA)

Description

本発明は、特定用途向け集積回路(ASIC)の開発の分野に係、特に、ソフトウェアプログラムに基づくASICの設計のためのシステムおよび方法に関する。
<<関連技術の説明>>
機能検証の効率を向上させる目的で電子システムを記述するために、「C」等の高水準プログラム言語を利用するという最近の傾向によって、高水準モデルと低水準のハードウェア実現との間の実施のギャップが大きくなっている。典型的には、電子機器の試作のために、高水準言語プログラムを、VerilogまたはVHDLコード等のハードウェア記述言語(HDL)記述へと手動でまたは自動で変換し、ゲートレベル論理へ統合し、例えば、フィールドプログラマブルゲートアレイ(FPGA)等のプログラム可能なハードウェアデバイス上で初期のテストを行う。ほとんどの高水準プログラムはプログラム可能なハードウェアデバイスまたはASICを構成するゲートレベル論理の実行に必要なクロック情報を含まないため、多くの場合において、これは複雑なタスクであることがわかっている。
プロセッサおよび配線接続された論理の組み合わせで実現されるシステムは、さらに、ソフトウェア(プロセッサによって実行される高水準言語プログラム)およびハードウェア(ゲートレベル論理のHDL記述)へと、設計を分割するために、難しいステップを必要とする。このため、手作業の変換は時間がかかりすぎ、エラーが生じやすい。自動変換(動作記述の合成)では、多くの場合、作成された論理が不十分となってしまう。FPGAおよびプロセッサ等の既成で、市販のプログラム可能なデバイスに基づくハードウェアの試作品は、多くの場合、所望のシステム速度よりも遅い速度で動作し、このため、開発および検証のためにさらなる課題が生じることになる。場合によっては、プログラム可能なハードウェア要素の構成のために生成されたコードは、プログラム可能なハードウェアデバイスのパフォーマンスおよびリソース上の制約のために、最終のASICで必要なコードから大きく外れたものになり得る。これに対応するため、高水準プログラム言語に基づくモデルから最終のASICモデルへ設計(デザイン)を変換するために多くの開発サイクルが必要である。さらに、種々のデザイン変換の正確さ(機能の等価性(equivalence))を検証するための、簡単で確実な分析技術は存在しない。このため、高水準動作モデルからASICデザインの物理的な実装への変換経路を改善することが望ましい。
ソフトウェアプログラムをASICに変換するためのシステムおよび方法について種々の実施の態様を、以下に説明する。
第1に、ソフトウェアプログラムを格納することができる。ソフトウェアプログラムは、所望のASICの機能を実現するプログラム命令を含むことができる。一実施形態において、ソフトウェアプログラムは、例えば、C等の高水準コンピュータ言語で記述することができる。あるいは、ソフトウェアプログラムは、National InstrumentsのLabVIEWまたはMathworks,IncのSimuLink等のグラフィカルプログラム言語で記述することができる。
ソフトウェアプログラムは、並列処理を実行可能な処理システム上で実行することができる。種々の実施の態様において、処理システムは、所望に応じて、単一のチップまたは複数の結合チップで実現することができる。例えば、処理システムは複数のプロセッサおよび(例えば、プロセッサ間で分散される)メモリ媒体を含むことができる。代替として、または、さらに、処理システムは、並列実行が可能な複数の再構成可能な論理要素を含むことができる。
ここで留意すべきは、ソフトウェアプログラムの実行前に、ソフトウェアプログラムを分析し、処理システムの異なる部分上で実行し得る部分に分割することができることである。例えば、ソフトウェアプログラムの第1のタスクまたは部分を、処理システムの第1の部分上で実行することができる。分析および分割は、所望に応じて、自動または手作業で実行することができる。従って、ソフトウェアプログラムは、処理システムの部分ずつ分割することができる。
更に留意すべきは、ソフトウェアプログラムを、所望のシステム速度で処理システム上で実行することができるということである。例えば、ソフトウェアプログラムは、作成中のASICの所望の速度で実行することができる。言い換えると、処理システムは、目的のシステム速度に等しいスループットレベルでソフトウェアプログラムを実行するために十分なハードウェアリソースを含むことができる。従って、システム開発およびデバッグを、妥協することなく、フルシステム速度で実行することができる。このため、処理システムは、所望のシステム速度においてリアルタイムで実行することができ、設計者は、ASICの将来のパフォーマンスに関して憶測することなく、ソフトウェアプログラムを完全にテストすることができる。
さらに、(例えば、所望のシステムのスループットレベルに到達するために)さらなる処理能力が必要な場合、さらなるプロセッサ、メモリ、および/または通信経路を、最小限の労力で処理システムに追加できる。システム要件に適合させるために処理システムを迅速に拡張させることができるため、システム設計に、迅速に変更できる試作能力を提供できる。好適な実施形態において、処理システムへのソフトウェアプログラムの再配信は、自動的に、およびユーザが意識することなく実行することができる。
従って、ソフトウェアプログラムは、処理システム上でのソフトウェアプログラムの実行によって、検証することができる。コンピュータシステム上で実行するソフトウェア開発環境は、システムソフトウェアプログラムを開発および検証するために、デバッグツール、パフォーマンス分析ツール、タスク割り当てツール、および通信統合ツールを提供することができる。検証されたソフトウェアは、最低限の処理量、メモリ容量、および通信リソースを消費するように最適化することができ、それが、ASIC実現のためのハードウェアの基準を形成する。
処理システムの第1のハードウェア記述を格納することができる。第1のハードウェア記述は、ハードウェアデバイス上での処理システムの実現を特定し得る。例えば、一実施形態において、第1のハードウェア記述は、上記の処理システムのためのデフォルトのハードウェア記述に対応し得る。代替として、またはさらに、ハードウェア記述は、処理システムのコンポーネントに基づいて、組み合わせ、統合することができる。第1のハードウェア記述は、例えば、VHDL(VHSICハードウェア記述言語)、Verilog等のハードウェア記述言語(HDL)によって表現することができる。
第1のハードウェア記述の第1の部分によって特定される処理システムの一部分に対応する、第2のハードウェア記述を生成することができる。上記の例に従うと、第2のハードウェア記述は、第1のハードウェア記述の第1の部分に対応し得る。第2のハードウェア記述は、処理システム上の部分で実行されるソフトウェアプログラムの第1の部分の専用のハードウェア実現形態(例えば、特定の論理回路)を特定することができる。一部の実施形態において、第2のハードウェア記述は第1のハードウェア記述に基づいて作成することができ、(例えば、ソフトウェアのプログラム命令を例えば、HDLコード等のハードウェア記述に変換することによって)ソフトウェアのハードウェア記述を組み込むことができる。あるいは、第2のハードウェア記述は、単に、処理システム上の既存のアーキテクチャおよび処理システムで実行するソフトウェアを使って作成することができる。従って、第2のハードウェア記述は、第1のハードウェア記述によって表されるハードウェアのいくつかまたは全てを記述または実現することができる。しかし、第2のハードウェア記述は、ソフトウェア(またはその一部分)、ならびにソフトウェアを実行するハードウェアを記述または実現することもでき、この場合、第2のハードウェア記述は、ハードウェア上で実行するソフトウェアの機能を達成する専用のゲートの形態で、ソフトウェア/ハードウェアを特定する。従って、上に示すように、第2のハードウェア記述は、処理システム上で実行するソフトウェアプログラムの一部の専用のハードウェアの実現を特定し得る。
種々の実施態様において、第2のハードウェア記述は、1回以上生成することができる。例えば、第2のハードウェア記述は、各コンポーネントの少なくとも1つのサブセットまたは処理システムの部分のために生成することができる。次に、各第2のハードウェア記述は、ASICのための最終的なハードウェア記述へと、一緒にまとめることができる。あるいは、所望に応じて、完全なASICのために第2のハードウェア記述を生成することができる。
処理システム(またはその一部分)上で実行されるソフトウェアプログラムの一部分の専用のハードウェア実現を特定する第2のハードウェア記述の生成は、ソフトウェアプログラムのその部分および/または処理システムのその部分の「ハードウエア化」と称することができる。なお、ハードウエア化は、ASIC上のソフトウェアプログラムの特定の部分の実現も含み得る。従って、ハードウエア化は、プログラム可能性は排除され得る、またはASICのその特定の部分に限定してもよいことを意味し得る。さらに、上で述べたように、第2のハードウェア記述は、処理システムの部分で実行しているソフトウェアを含むように、第1のハードウェア記述を修正することで生成することができる。
ASICの特定の部分のハードウエア化によって、パフォーマンスの向上、より小さい面積、および、より低い電力消費が可能となり得る。留意すべきは、処理システムの1つ以上の部分をハードウエア化しないようにすることができ、最終製品(この場合はASIC)をプログラム可能にすることができるということである。従って、第2のハードウェア記述を、所望に応じて、完全にまたは部分的にハードウエア化される最終のASICのために生成することができる。このため、ハードウエア化の量を調節することによって、作成されたASICの特徴は、プログラム可能なASICから、カスタム配線接続されたASICまでの範囲にわたり得、異なる程度の改善された面積、パフォーマンス、および電力消費を達成することができる。なお、ハードウエア化する部分は、例えば、コンピュータシステム上で実行するグラフィカルユーザインターフェース(GUI)を使ってユーザが選択することができる。
第2のハードウェア記述の生成(ないしハードウエア化)は、種々の方法を使用して実行することができる。一実施態様において、第2のハードウェア記述の生成には、使用されるハードウェアリソースの実際の量を決定するために、処理システム上で実行するソフトウェアの分析が含まれ得る。分析の実行後、1つ以上の未使用の通信リンク(例えば、論理および配線)またはチップIOも、例えば、第2のハードウェア記述を生成するために、第1のハードウェア記述から削除することができる。従って、一実施態様において、第2のハードウェア記述は、分析に基づいて、処理システムの種々の部分のハードウェア記述を含まない場合がある。
一部の実施態様において、重要なタイミング要件を有するプログラム可能な通信リンクは、専用の配線で置き換えることができる。さらに、命令セットおよび/またはデータの幅を、ソフトウェアプログラムに応じて変更することができる。
さらに、データメモリのサイズおよび構成を、ソフトウェアで定義される機能の厳密な要件に適合するように最適化することができる。例えば、未使用メモリについての不要なメモリ記述は、ハードウエア化のプロセス中に(第2のハードウェア記述を生成するために)第1のハードウェア記述から除去することができる。あるいは、またはさらに、例えば、最終ASICのパフォーマンスの向上、および、より小さな面積を可能にするために、メモリサイズを増大、メモリ構成を変更、またはRAM記述を読み出し専用メモリ(ROM)記述で置き換えることができる。
一部の実施形態において、第1のハードウェア記述は特定のプロセッサを記述し得、プロセッサのハードウエア化は、(例えば、第1のハードウェア記述における)プロセッサの記述を、事前に検証されたプロセッサコアのライブラリからのプロセッサの特定の記述で置き換えることを含み得る。例えば、(例えば、ASICの)システム要件が浮動小数点パフォーマンスを要求する場合に、浮動小数点高速化用の組み込みハードウェアを有するプロセッサを使用することができ、そうでない場合には、より小さな固定小数点プロセッサを選択し、プロセッサ記述のライブラリから使用することができる。
同様に、プロセッサ記述は、ソフトウェアプログラムのソフトウェア要件に基づいてカスタマイズおよび再構成することができる。例えば、プロセッサ記述を、特に、命令を追加または削除し、レジスタファイルおよびキャッシュサイズを最適化し、特殊なハードウェアアクセラレータおよびアドレスモードを追加し、および/またはカスタム命令を作成することで、改良することができる。一実施態様において、プロセッサの実行制御および命令メモリは、特定のソフトウェアプログラムの機能を実行する状態機械(ステートマシン)によって置き換えることができる。さらに、プロセッサ記述は、ソフトウェアプログラムの計算要件と実質上一致するカスタムデータ経路を置換することで、最適化することができる。カスタムデータ経路は、例えば、第1のハードウェア記述で記述される処理システムによって、以前は順次で実行された演算を、並列実行できるようにすることができる。ここで留意すべきは、一部の実施態様において、従来の動作記述の合成技法を使用することができるということである。例えば、システムプログラムの一部分を分割し、配線接続された論理ブロックに統合することができる。
一部の実施形態において、IPブロックを第2のハードウェア記述および/または最終のハードウェア記述に統合し得る。IPブロックは、元の処理システムアーキテクチャに存在する、または存在しないこともある。IPブロックは、さらに、ソフトウェアプログラムの機能の高度に最適化された論理の実現でもあり得る。IPブロック(知的財産ブロック)は、利用のためのライセンスを付与された企業または団体によって生成されるブロックを意味し得る。従って、IPブロックは、(例えば、第2のハードウェア記述にその記述を含めることによって)ASICに組み込むことができる。
ASICの1つ以上の部分をハードウエア化した後、ASICの電気的なパフォーマンスを、(元の処理システムのトポロジではなく)新しいチップトポロジのために最適化することができる。回路最適化は、サイズ決定、バッファリング、クロックネットチューニング、電力/接地ネットチューニング、および/またはその他の最適化を含み得る。
従って、第2のハードウェア記述の生成には、ASICを最適化するための、第1のハードウェア記述の改変が含まれ得る。ASICを作成または構成でき、および、ソフトウェアプログラムの機能を実現することができる。ASICの構成または作成は、ASIC上に第2のハードウェア記述(または最終ハードウェア構成/複数の第2のハードウェア構成)を実現することを含み得る。例えば、ASICを構成するためのハードウェア記述が状態機械を含む場合、ASICの構成は状態機械の実現を含み得る。さらに、ASICの構成は、ASIC上に第1のハードウェア記述の1つ以上の部分を実現することを含み得る。
以下の図面と共に以下の好適な実施形態の詳細な記述を考慮することで、本発明がより良く理解される。
本発明の種々の実施形態を実現するために、設計においてターゲットシステムを制御する例示的なコンピュータシステムを示す。
一実施形態による、ソフトウェアプログラムに基づいてASICを設計する方法の例示的な実施形態を示すフローチャートである。
本発明の一実施形態による例示的な処理システムを示す。
本発明の一実施形態による例示的なASICを示す。
本発明は種々の改変および変形がされ得るが、その特定の実施形態について図を用いて例として示し、本明細書において詳細に説明する。しかし、図面および図面の詳細な記述は、開示された特定の形態に本発明を制限するために意図されたものではなく、逆に、添付の請求項で定義される、本発明の精神および範囲内にある全ての改変例、同等例および代替例を含むことを意図していることを理解されたい。
<<用語>>
以下に、本発明で使用される用語の用語集を示す。
『メモリ媒体』−種々のタイプのメモリデバイスまたはストレージデバイスのうちいずれかである。「メモリ媒体」という用語は、インストール用の媒体、例えば、CD−ROM、フロッピー(登録商標)ディスク104、またはテープデバイス、コンピュータシステムメモリまたはDRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等のランダムアクセスメモリ、または磁気メディア等の非揮発性メモリ、例えば、ハードドライブまたは光学記憶媒体を含むことを意図している。メモリ媒体は、他のタイプのメモリも含み得、また、その組み合わせも含み得る。さらに、メモリ媒体は、プログラムが実行される第1のコンピュータに配置することができ、および/またはインターネット等のネットワークによって第1のコンピュータに接続される第2の異なるコンピュータに配置することもできる。後者の例において、第2のコンピュータは、第1のコンピュータに実行のプログラム命令を提供することができる。「メモリ媒体」という用語は、例えば、ネットワークによって接続される異なるコンピュータにおけるような、異なる場所に存在し得る2つ以上のメモリ媒体をふくみ得る。
『キャリア媒体』−バス、ネットワーク、および/または電子的または光学的な信号等の信号を伝送する、上記のメモリ媒体、ならびに、他の物理的な伝送媒体等の、物理的な伝送媒体。
『プログラム可能なハードウェア要素』−プログラム可能なまたは配線接続された相互接続を経由して接続される複数のプログラム可能な機能ブロックを含む種々のハードウェアデバイスを含む。例には、FPGA(フィールドプログラマブルゲートアレイ)、PLD(プログラム可能な論理デバイス)、FPOA(フィールドプログラマブルオブジェクトアレイ)、およびCPLD(複雑なPLD)が含まれる。プログラム可能な機能ブロックは、細粒(fine grained)の(組み合わせ論理または参照テーブル)から粗粒(coarse grained)(演算論理ユニットまたはプロセッサコア)の範囲であり得る。プログラム可能なハードウェア要素は、「再構成可能な論理」と称することもできる。
『特定用途向け集積回路(ASIC)』−この用語は、用語の通常の意味の全範囲を表すよう意図している。ASICは、構成要素としてプログラム可能なプロセッサコアを含んでもよいが、ASICという用語は、汎用プログラム可能なデバイスではなく、特定のアプリケーションのためにカスタマイズされる集積回路を含むよう意図されている。携帯電話のセル、MP3プレーヤーのチップ、および多数の他の単機能ICが、ASICの例である。ASICは、通常、VerilogまたはVHDL等のハードウェア記述言語で記述される。
『プログラム』−「プログラム」という用語は、用語の通常の意味の全範囲を表すよう意図している。「プログラム」という用語は、1)メモリに格納でき、および、プロセッサで実行可能なソフトウェアプログラム、または2)プログラム可能なハードウェア要素またはASICを構成するために利用可能なハードウェア構成プログラム、を含む。
『ソフトウェアプログラム』−「ソフトウェアプログラム」という用語は、用語の通常の意味の全範囲を表すよう意図しており、メモリ媒体に記憶し、プロセッサで実行することのできるプログラム命令、コード、スクリプトおよび/またはデータのいずれものタイプ、またはその組み合わせをも含む。例示的なソフトウェアプログラムは、C、C++、PASCAL、FORTRAN、COBOL、JAVA、アセンブリ言語等のテキストベースのプログラム言語で記述されるプログラム、グラフィカルプログラム(グラフィカルプログラム言語で記述されたプログラム)、アセンブリ言語プログラム、マシン言語にコンパイルされたプログラム、スクリプト、およびその他の種類の実行可能なソフトウェアを含む。ソフトウェアプログラムは、ある方法で相互実行される2つ以上のソフトウェアプログラムを含み得る。
『ハードウェア構成プログラム』−プログラム可能な要素またはASICをプログラムまたは構成するために使用可能なプログラム、例えば、ネットリストまたはビットファイル。
『グラフィカルユーザインターフェース』−この用語は、用語の通常の意味の全範囲を表すよう意図している。「グラフィカルユーザインターフェース」という用語は、多くの場合、「GUI」と略される。GUIは、1つ以上の入力GUIエレメントのみ、1つ以上の出力GUIエレメントのみ、または入力および出力GUIエレメントの両方を含み得る。
以下に、GUIの種々の態様の例について記載する。以下の例および記載は、GUIの通常の意味を制限することを意図するものではなく、「グラフィカルユーザインターフェース」という用語が包括する例について記述する。
GUIは、1つ以上のGUI要素を有する単一のウィンドウ、または複数の個々のGUI要素(または1つ以上のGUIエレメントをそれぞれ有する個々の複数ウィンドウ)を含むことができ、そこで、個々の複数GUIエレメントまたはウィンドウを任意にタイル表示することができる。
『グラフィカルユーザインターフェース要素』−入力または出力表示を提供するためのグラフィカルユーザインターフェースの要素。例示的なグラフィカルユーザインターフェース要素は、入力制御および出力インジケータを含む。
『コンピュータシステム』−パーソナルコンピュータシステム(PC)、メインフレームコンピュータシステム、ワークステーション、ネットワーク機器、インターネット機器、パーソナルデジタルアシスタント(PDA)、グリッドコンピュータシステム、またはその他のデバイスまたはデバイスの組み合わせを含む、種々のタイプのコンピュータまたは処理システムのいずれか。一般的に、「コンピュータシステム」という用語は、メモリ媒体から命令を実行する少なくとも1つのプロセッサを有するいずれのデバイス(またはデバイスの組み合わせ)も含むように、幅広く定義可能である。
<<図1−コンピュータシステムおよびASIC>>
図1は、本発明の種々の実施形態を実施するために動作可能なターゲットシステム100に接続されるコンピュータシステム82を示す。
コンピュータシステム82は、本発明の一実施形態による1つ以上のコンピュータプログラムまたはソフトウェアコンポーネントを格納することのできる少なくとも1つのメモリ媒体を含むことができる。例えば、メモリ媒体は、本明細書で記載される方法を実行するために実行可能な1つ以上のプログラム(例えば、ソフトウェアツール)を格納することができる。メモリ媒体は、オペレーティングシステムソフトウェア、ならびにコンピュータシステムの動作のための、他のソフトウェアを格納することができる。種々の実施形態はさらに、キャリア媒体上の上記の記述に従って実現される命令および/またはデータの受信または格納を含む。
一実施形態において、コンピュータシステムは、ターゲットシステムの動作を制御および観察するために、ソフトウェア開発環境を格納および実行することができる。ターゲットシステムは、所望のパフォーマンスレベルでシステムソフトウェアを実行可能な処理システムを含むことができる。ターゲットシステムソフトウェアプログラムは、電子システムの機能を実行するために、コンピュータシステムに格納し、ターゲット処理システムにダウンロードすることができる。ターゲットシステムは、システムソフトウェアプログラムを実行する処理システムと同じ機能を実行するターゲットシステムの専用のASIC実装形態を含むことができる。コンピュータシステムは、開発および検証ステージにおいて第一に使用される。ターゲットシステムは、コンピュータシステムなしで独立して動作して、電子システムの機能を実行することができる。
図1に示すように、コンピュータシステム82はディスプレイデバイスを含むことができ、ターゲットシステム100と接続し得る。ディスプレイデバイスは、ソフトウェア開発環境のためにグラフィカルユーザインターフェース(GUI)を表示するように動作可能にできる。グラフィカルユーザインターフェースは、例えば、コンピュータプラットフォームに依存して、グラフィカルユーザインターフェースのいずれのタイプをも含むことができる。
<<図2および図2B−ソフトウェアプログラムをASICに変換するための方法>>
図2Aに示される例示的な実施形態において、ソフトウェアプログラムに基づいてASICを設計する方法が示される。図2Bは、電子システム設計の試作の段階からのソフトウェアプログラムを、生産ASICに変換するための方法の特定の実施形態を示す。図2Aおよび図2Bに示される方法は、他のデバイスもあるが、上記の図で示されるコンピュータシステムまたはデバイスのいずれかと共に使用することができる。種々の実施形態において、示される方法の要素のいくつかを、示されているのと異なる順序で、共に実行することができ、または省略することもできる。さらなる方法の要素を、さらに、所望に応じて実行実行することもできる。図示されるように、この方法は、以下のように実施され得る。
第1に、202において、ソフトウェアプログラムを格納することができる。ソフトウェアプログラムは、所望のASICの機能を実行するプログラム命令を含むことができる。一実施形態において、ソフトウェアプログラムは、例えば、C等の高水準コンピュータ言語で記述することができる。あるいは、ソフトウェアプログラムは、National InstrumentsのLabVIEWまたはMathworks,IncのSimuLink等のグラフィカルプログラム言語で記述することができる。
204において、ソフトウェアプログラムは、並列処理を実行可能な処理システム上で実行することができる。種々の実施形態において、処理システムは、所望に応じて、単一のチップまたは複数の結合チップで実現することができる。例えば、処理システムは(例えば、プロセッサ間で分散される)複数のプロセッサおよびメモリ媒体を含むことができる。あるいは、または、さらに、処理システムは、並列実行の可能な複数の再構成可能な論理要素を含むことができる。一実施形態において、処理システムは、図3に示すHyperXマルチプロセッサシステムであり得る。従って、マルチプロセッサシステムは、複数のプロセッサを使用して、ソフトウェアプログラムを並列で実行することができる。米国特許出願シリアル番号第10/602、292号および第11/691、889号は、こうしたシステム、ならびに、そのシステム上におけるソフトウェアプログラムの実行および展開について記載している。従って、202、204、および206についてのさらなる詳細は、上記の1つ以上の参考文献に記載されている。なお、こうした参考文献および本明細書で記載されている詳細は、制限を目的とするものではないため、その他の実施形態も想定している。例えば、ソフトウェアプログラムを、所望に応じて、列挙された参考文献に記載されているまたは上記で記載されている内容以外の、いずれの数の処理システムにおいて、いずれの数の言語ででも記述することができる。
ここで留意すべきは、ソフトウェアプログラムの実行前に、ソフトウェアプログラムを分析し、処理システムの異なる部分上で実行することができる部分に、分割し得ることである。例えば、ソフトウェアプログラムの第1のタスクまたは部分を、処理システムの第1の部分で実行することができる。分析および分割は、所望に応じて、自動または手作業で実行することができる。従って、ソフトウェアプログラムは、処理システムの部分間で分割することができる。
さらに留意すべきは、ソフトウェアプログラムを、所望のシステム速度で処理システム上で実行することができるということである。例えば、ソフトウェアプログラムは、作成中のASICの所望の速度で実行することができる(例えば、以下で述べる212で)。言い換えると、処理システムは、目的のシステム速度と同等なスループットレベルでソフトウェアプログラムを実行するために十分なハードウェアリソースを含むことができる。従って、システム開発およびデバッグを、妥協することなく、フルシステム速度で実行することができる。このため、処理システムは、所望のシステム速度でリアルタイムで実行することができ、それによって、設計者は、ASICの将来のパフォーマンスに関して憶測することなく、ソフトウェアプログラムを完全にテストすることができる。
さらに、(例えば、所望のシステムのスループットレベルに到達するために)さらなる処理能力が必要な場合、さらなるプロセッサ、メモリ、および/または通信経路を、最小限の労力で処理システムに追加できる。214においてシステム要件に適合させるために処理システムを迅速に拡張させることができるため、システム設計に、迅速に変更できる試作能力を提供できる。好適な実施形態において、処理システムへのソフトウェアプログラムの再配信は、自動的に、およびユーザが意識することなく実行することができる。
従って、206では、ソフトウェアプログラムは、処理システム上でのソフトウェアプログラムの実行に従って、検証することができる。コンピュータシステム82上で実行するソフトウェア開発環境は、システムソフトウェアプログラムを開発および検証するための、デバッグツール、パフォーマンス分析ツール、タスク割り当てツール、および通信統合ツールを提供してもよい。検証されたソフトウェアは、次に、215おいて、最低限の処理量、メモリ容量、および通信リソースを消費するように最適化することができ、それが、216におけるASIC実現のためのハードウェアの基盤を形成する。
208において、処理システムの第1のハードウェア記述を格納することができる。第1のハードウェア記述は、ハードウェアデバイス(例えば、214のHyperXチップ)上での処理システムの実現を特定し得る。例えば、一実施形態において、第1のハードウェア記述は、上記の処理システムのためのデフォルトのハードウェア記述に対応し得る。代替として、またはさらに、ハードウェア記述は、処理システムのコンポーネントに基づいて、組み合わせ、統合することができる。一実施形態において、処理システムの異なる通信リンク、プロセッサタイプ、メモリ等に対する異なるハードウェア記述が存在することができ、これらは、処理システムの特定のコンポーネントおよび/またはアーキテクチャに従って、組み合わせ、統合することができる。第1のハードウェア記述は、処理システムの種々のコンポーネントに対応する1つ以上の部分を有し得る。例えば、第1のハードウェア記述は、一実施形態において、プロセッサおよびメモリを記述する第1の部分を含むことができる。従って、第1のハードウェア記述は、処理システムの設計に従って格納することができる。従って、第1のハードウェア記述は、第1のハードウェア記述がASIC上で実現されるならば、これにより、ASIC上に処理システムを作成することになる、すなわち、ASIC上で、複数のプロセッサおよびメモリが実装されるようになる。
210において、第1のハードウェア記述の第1の部分によって特定される処理システムの一部分に対応する、第2のハードウェア記述を生成することができる。上記の例に従うと、第2のハードウェア記述は、第1のハードウェア記述の第1の部分に対応し得る。第2のハードウェア記述は、処理システム上の部分で実行されるソフトウェアプログラムの第1の部分の専用のハードウェア実現形態を特定することができる。一部の実施形態において、第2のハードウェア記述は第1のハードウェア記述に基づいて作成することができ、(例えば、ソフトウェアのプログラム命令を、例えば、HDLコード等のハードウェア記述に変換することによって)ソフトウェアのハードウェア記述を組み込むことができる。あるいは、第2のハードウェア記述は、単に、処理システム上の既存のアーキテクチャおよび処理システム上で実行するソフトウェアを使って作成することができる。従って、第2のハードウェア記述は、第1のハードウェア記述によって表されるハードウェアのいくつかまたは全てを記述または実現することができる。しかし、第2のハードウェア記述は、ソフトウェア(またはその一部分)、ならびにソフトウェアを実行するハードウェアを記述または実現することもできる。従って、上に示すように、第2のハードウェア記述は、処理システム上で実行するソフトウェアプログラムの一部の専用のハードウェア実現を特定し得る。
第2のハードウェア記述の部分を作成する上で実行し得るハードウエア化の度合いは、さらなる最適化されたプロセッサの実現から専用のハードウェア回路の範囲におよび得る。従って、一実施形態において、第2のハードウェア記述の一部分は、第1のハードウェア記述で特定される汎用プロセッサと比較して、より制限されたプログラム可能性を有するより最適化されたプロセッサである。別の実施形態において、第2のハードウェア記述の一部分は、専用の論理を含み、それにより、第2のハードウェア記述のこの部分がASIC上に実現された場合に、処理システムの対応する部分で実行するソフトウェアプログラムの第1の部分の機能を実現する専用のゲートおよび/または論理回路をASIC上に作成することとなる。従って、第2のハードウェア記述の異なる部分は、サイズ、パフォーマンス、コスト等の種々の基準の要件に応じて、種々の異なる度合いに「ハードウエア化」することができる。
ある具体的な例として、処理システムのプロセッサを、2つの和の積、すなわち、Z=(A+B)x(C+D)を計算するようにプログラムでき、全ての変数がデータメモリに格納される。処理システムでこのプログラムを実行するために、プログラムを、プロセッサの命令メモリにロードすることができる。プログラムは、データメモリからデータ(A、B、C、およびD)をフェッチし、結果(Z)を計算するためにプロセッサの実行ユニットの加算器および乗算器を有効化し、および結果をデータメモリに再び格納するための一連の命令を含むことができる。この和の積の例において、例えば、第1のハードウェア記述は、プロセッサ(実行ユニットおよび命令メモリを含む)およびデータメモリを記述する第1の部分を含むことができる。この第1のハードウェア記述は、プログラムの命令によって特定されるいずれの機能をも実行するのに十分柔軟性のあるプロセッサを定義することができる。第2のハードウェア記述は、和の演算の積のみを実行するための、専用の回路、例えば、同じプロセッサの「ハードウエア化された」バージョンおよびメモリを記述する、対応する部分を含むことができる。従って、この特定の例において、第2のハードウェア記述は、処理システム(この場合、プロセッサおよびメモリ)の部分で実行するソフトウェアの部分の専用のハードウェアによる実現を記述することができる。
種々の実施形態において、第2のハードウェア記述は、1回以上生成することができる。例えば、第2のハードウェア記述は、各コンポーネントまたは処理システムの各部分のために生成することができる。次に、各第2のハードウェア記述は、ASICのための最終的なハードウェア記述へと、一緒にまとめることができる。あるいは、所望に応じて、完全なASICのために第2のハードウェア記述を生成することができる。
処理システム(またはその一部分)上で実行されるソフトウェアプログラムの一部分の専用のハードウェア実現を特定する第2のハードウェア記述の生成は、ソフトウェアプログラムのその部分および/または処理システムのその部分の「ハードウエア化」と称することができる。なお、ハードウエア化は、(例えば、212に記載されている第2のハードウェア記述にしたがってASICを構成することによって)ASIC上のソフトウェアプログラムの特定の部分の実現も含み得る。従って、ハードウエア化は、プログラム可能性は排除され得る、またはASICのその特定の部分、またはソフトウェアプログラムのその特定の部分に限定してもよいことを意味し得る。さらに、上で述べたように、第2のハードウェア記述は、処理システムの部分で実行しているソフトウェアを含むように、第1のハードウェア記述を改変することで生成することができる。
ASICの特定の部分のハードウエア化によって、パフォーマンスの向上、より小さい面積、および、より低い電力消費が可能となり得る。留意すべきは、処理システムの1つ以上の部分をハードウエア化しないようにすることができ、最終製品(この場合はASIC)をプログラム可能にすることができるということである。従って、第2のハードウェア記述を、所望に応じて、完全にまたは部分的にハードウエア化される最終のASICのために生成することができる。このため、ハードウエア化の量を調節することによって、作成されたASICの特徴は、プログラム可能なASICから、カスタム配線接続されたASICまでの範囲にわたり得、異なる程度の改善された面積、パフォーマンス、および電力消費を達成することができる。なお、ハードウエア化する部分は、例えば、コンピュータシステム上で実行するグラフィカルユーザインターフェース(GUI)82を使ってユーザが選択することができる。
第2のハードウェア記述の生成(またはハードウエア化)は、種々の方法を使用して実行することができる。一実施形態において、第2のハードウェア記述の生成には、使用されるハードウェアリソースの実際の量を決定するために、処理システム上で実行するソフトウェアの分析が含まれ得る。分析の実行後、1つ以上の未使用の通信リンク(例えば論理および配線)またはチップIOも、例えば、第2のハードウェア記述を生成するために、第1のハードウェア記述から削除することができる。従って、一実施形態において、第2のハードウェア記述は、分析に基づいて、処理システムの種々の部分のハードウェア記述を含まない場合がある。
一部の実施形態において、重要なタイミング要件を有するプログラム可能な通信リンクは、専用の配線で置き換えることができる。さらに、命令セットおよび/またはデータの幅を、202で格納されるソフトウェアプログラムに応じて変更することができる。
さらに、データメモリのサイズおよび構成を、ソフトウェアで定義される機能の厳密な要件に適合するように最適化することができる。例えば、未使用のメモリの不要なメモリ記述は、ハードウエア化のプロセス中に(第2のハードウェア記述を生成するために)第1のハードウェア記述から除去することができる。あるいは、またはさらに、例えば、最終ASICのパフォーマンスの向上、および、より小さな面積を可能にするために、メモリサイズを増大、メモリ構成を変更、またはRAM記述を読み出し専用メモリ(ROM)記述で置き換えることができる。
一部の実施形態において、第1のハードウェア記述は特定のプロセッサを記述し得、プロセッサのハードウエア化は、(例えば、第1のハードウェア記述における)プロセッサの記述を、事前に検証されたプロセッサコアのライブラリからのプロセッサの特定の記述で置き換えることを含み得る。例えば、(例えば、ASICの)システム要件が浮動小数点パフォーマンスを要求する場合に、浮動小数点高速化組み込みハードウェアを有するプロセッサを使用することができ、そうでない場合には、より小さな固定小数点プロセッサを選択し、プロセッサ記述のライブラリから使用することができる。
同様に、プロセッサ記述は、202に格納されるソフトウェアのソフトウェア要件に基づいてカスタマイズおよび再構成することができる。例えば、プロセッサ記述を、特に、命令を追加または削除し、レジスタファイルおよびキャッシュサイズを最適化し、特殊なハードウェアアクセラレータおよびアドレスモードを追加し、および/またはカスタム命令を作成することで、改変することができる。一実施形態において、プロセッサの実行制御および命令メモリは、特定のソフトウェアプログラムの機能を実行する状態機械によって置き換えることができる。さらに、プロセッサ記述は、ソフトウェアプログラムの計算要件と実質上一致するカスタムデータ経路を置換することで、最適化することができる。カスタムデータ経路は、例えば、第1のハードウェア記述で記述される処理システムによって、以前は順次で実行された演算を、並列実行できるようにすることができる。ここで留意すべき、一部の実施形態において、従来の動作記述の合成技法を使用することができるということである。例えば、システムプログラムの一部分を分割し、配線接続された論理ブロックに統合することができる。
一部の実施形態において、IPブロックを第2のハードウェア記述および/または最終のハードウェア記述に統合し得る。IPブロックは、元の処理システムアーキテクチャに存在する、または存在しないこともある。IPブロックは、さらに、ソフトウェアプログラムの機能の高度に最適化された論理の実現でもあり得る。IPブロック(知的財産ブロック)は、利用のためのライセンスを付与された企業または団体によって生成されるブロックを意味し得る。従って、IPブロックは、(例えば、第2のハードウェア記述にその記述を含めることによって)ASICに組み込むことができる。
ASICの1つ以上の部分をハードウエア化した後(および/または212でASICを作成あるいは構成した後)、ASICの電気的なパフォーマンスを、(元の処理システムのトポロジではなく)新しいチップトポロジのために最適化することができる。回路最適化は、サイズ決定、バッファリング、クロックネットチューニング、電力/接地ネットチューニング、および/またはその他の最適化を含み得る。
従って、第2のハードウェア記述の生成には、ASICを最適化するための、第1のハードウェア記述の改変が含まれ得る。改変ではシステムの機能を変更しないため、形式上の検証技術を含む検証技術およびテストを、第1のハードウェア記述を検証するために第2のハードウェア記述を検証するために、使用することができる。
212において、ASICを作成または構成することができ、また、ソフトウェアプログラムの機能を実行することができる。ASICの構成または作成は、ASIC上の第2のハードウェア記述(または最終のハードウェア構成/複数の第2のハードウェア構成)の実現を含み得る。例えば、ASICを構成するためのハードウェア記述が状態機械を含む場合、ASICの構成は状態機械の実現を含むことができる。さらに、ASICの構成は、ASIC上の第1のハードウェア記述の1つ以上の部分の実現を含むことができる。
<<図4−例示的な特定用途向け集積回路(ASIC)>>
図4は、本発明を使用して開発される例示的なASICのブロック図を示す。図示されるように、ASICは、Hyper X Fabricの402、404、および406として図4に示される、1つ以上のプログラム可能なセクションを含むことができる。ASICのプログラム可能な部分は、元のプロセッサ構造とほぼ同様のままである。上で示されるように、一部の実施形態において、最終化されたASICは、完全に配線接続されたASICの場合にプログラム可能なセクションは全く含まない場合がある。ハードウエア化された部分では、完全なカスタムレイアウトから標準的なセル位置までの範囲の種々の物理的な実装技術およびルートを適用することができる。ASICは、さらに、I/Oフレーム400および、1つ以上のハードウエア化されたIPブロック408および410をむことができる。図4のASICは、上記に記載されているシステムおよび方法によって作成することができる。
<<構造化ASIC設計>>
一実施形態において、ASICは、構造化ASICアプローチを使用して作成または構成することができる。構造化ASICは、事前決定されたベースの回路およびレイアウト構成を有する特殊な形態のASICである。構造化ASICは、カスタム化をメタル、ビア、またはチップ製造プロセスの他の最上部材料層に制限することにより、設計時間およびコストを低減することを目的としている。構造化ASICの例には、LSIのRapidChip、NECのISSP、およびFujitsuのAccelArrayが含まれる。構造化ASICは、マスキングのコスト低下および事前製造されたファブリックの利用による短縮された製造時間にもかかわらず、ゲートレベル論理の設計において、従来のASICと同じリスクおよび複雑さ、およびそれに関連する時間収束の問題をはらんでいる。
現在の構造化ASICのベース構造は、メタル層のカスタム化をサポートするために不確定ゲートによって、大部分が占められている。HDLで記述されたシステムの記述が必要である。ASICを作成/実現するために、HDLをゲートレベルネットリストに変換するために、論理合成ツールを使用することができる。従って、次にカスタムのメタルマスクを作成することで、ゲートを配置し、接続することができる。
カスタムASIC(中でも、上記で説明されているもの等)のハードウエア化で使用される多くの技術は、マスクプログラム可能な構造化ASICの実現において等しく適用される。構造化ASIC実現の一実施形態において、ベースアレイは、例えば、上記のプロセッサシステム、メモリマクロ、IO、および他の事前定義されたIPブロック等のプロセッサを含むため、HDLではない、高水準プログラム言語から直接導き出される構造化ASICを作成できる。
別の一実施形態において、不確定ゲートは、カスタム論理の作成に役立てるために、プロセッサシステムのベース構造に追加される。さらに、またはあるいは、金属マスクのカスタム化を、通信リンクを形成するために使用することができる。一実施形態において、メタル層カスタム化を、さらに、様々な種類、サイズ、および編成のメモリブロックを形成するために使用することができる。さらに、カスタム論理ブロックを作成するためにメタル層のカスタ作成するためにメタル層のカスタむ化を使用する。
別の一実施形態において、プロセッサシステムにおける各プロセッサの特徴(または少なくともプロセッサのサブセット)を、メタル層カスタム化によってカスタム化することができる。例えば、1つ以上のプロセッサを、命令の追加/削除、浮動小数点ハードウェアを含有/除外、レジスタファイルサイズおよび/またはキャッシュサイズの調整、および/または特殊なハードウェアアクセラレータを含めることによって、改変することができる。
一部の実施形態において、1つ以上のASIC部分を、元の処理構造に基づいてASICチップ上に事前定義および事前製造することができ、メタル層上における異なる相互接続によって容易にカスタム化することができる。別の一例として、構造化ASICは、組み込みIPブロックを既に含み得る。
別の一実施形態において、構造化ASICが使用される場合、ソフトウェアプログラムの検証のために使用される処理システムは、構造化ASICのソフトウェアまたはハードウェアエミュレータとすることができる。最終の構造化ASICと実質上同じプラットフォームでソフトウェアプログラムを開発することにより、ソフトウェアプログラムから構造化ASICへのマッピングが単純化される。構造ASICでは使用できるハードウエア化の可能性が減少しているため、第1のハードウェア記述は、同じ処理ハードウェアが構造ASIC上で既に構成されているため、処理システムの完全な実現を含まない場合がある。このような場合、第2のハードウェア記述は、通信のカスタム化に必要な情報のみを含み得るが、構造化ASICアプローチでは、それでも、様々な度合いのハードウエア化が可能である。
<<ハードウエア化プロセスの自動化>>
上で示されるように、種々のソフトウェアツールを、図2Aおよび図2Bに上記に説明されるハードウエア化プロセスの補助および自動化のためにコンピュータシステム82に格納することができる。以下に、使用することができる例示的なツールの具体的な実施形態について説明する。
『ソフトウェア開発』−ユーザプログラムの入力、視覚化、シミュレーション、およびデバッグを行う。こうしたツールは、ソフトウェア/ハードウェアの共同設計およびデバッグのためにハードウェア参照設計に接続するための機器を含み得る。
『ソフトウェア分析』−コンピュータリソース使用、ストレージリソース使用、通信リソース使用、IOリソース使用、データフロー、およびデータトラフィックの分析。
『タスク割り当て』−処理、メモリアクセス、および通信のオーバヘッドのコスト関数モデルの作成。こうしたツールは、処理と通信の間の最適なバランス、ならびに、最適化領域、パフォーマンス、待ち時間、および電力消費を達成するために、異なるプロセッサにタスクを割り当て、作業負荷を分散することができる。
『仮想試作』−ソフトウェアの実際のリソース要件に基づいて設計を最適化し、仮定の分析において、ユーザに、領域/パフォーマンス/電力についての迅速なフィードバックを提供する。コンピュータ上の仮想試作技術の例が、本明細書で完全に記載されているかのように参照して組み込まれる、米国特許第6,145,117号に記載されている。
『メモリ生成』−最適化プロセスの決定を実現するために、種々のサイズおよび組成のメモリを生成する。
『通信合成』−最適化プロセスの決定を実現するためにチップ上のブロック間で最適な通信経路を生成する。
『I/O合成』−システムの実際の要件に適合するように、最適なIOフレームを生成する。
『カスタムデータ経路合成』−HyperXプロセッサの汎用データ処理ユニットを置き換えるカスタム化されたデータ経路を生成する。
『自動フロアプラン作成』−タイミング、電力、輻輳のルート分割、およびシグナルインテグリティ分析に基づいて、最適化されたフロアプランを生成する。フロアプランナは、ハードブロック、ソフトブロック、クロックネット、電力/接地ネットワーク、IO、および設計上の制約を、CadenceおよびSynopsysのツール等の市販されている物理的な実装ツールに適したシードフロアプランに統合することができる。
『タイミング最適化』−プロセッサのハードウエア化の結果としての新しいタイミング上の制約に適合するための、回路の電気的パフォーマンスの最適化。
『設計の検証』−ハードウエア化された設計の機能上の正確さを検証する。こうしたツールは、設計の意図が物理的な変更プロセス中において不注意から変更されていないことを検証するために役立つ。
『動作記述の合成』−サイズ配線接続された論理の実現のためにHDL記述にプロセッサの高水準プログラムコードを統合する。市販の動作記述の合成ツールの例には、Mentor Graphics、Forte Design System、およびSynfornaのソフトウェアがある。
『状態機械の生成』−プロセッサの命令メモリ、命令実行、およびシーケンス論理を置き換える、ステートマシンを生成。
『再構成可能なプロセッサの生成』−例えば、上記のソフトウェアプログラム等のソフトウェア要件に基づくプロセッサの再構成のためのものである。例えば、命令の追加/削除、レジスタファイルおよびキャッシュサイズの最適化、特別なハードウェアアクセラレータの追加、およびカスタム命令の作成は、すべて、プロセッサカスタム化における公知の技術である。Tensilicaの構成可能なプロセッサアーキテクチャは、再構成可能なプロセッサを構成するために使用される市販のツールの例である。
従って、上記のソフトウェアツールの1つ以上は、本明細書に記載されているシステムおよび方法を使用するASICの作成を自動化または補助するために使用可能である。なお、こうしたツールは例示的であるにすぎず、その他のツールも想定している。
上記の実施形態は非常に詳細に記載されているが、上記の開示内容が完全に理解されたならば、当業者には多数の変形および改変が明らかであろう。以下の請求項は、これら全ての変形および改変を含むものとして解釈されるように意図されている。
82 コンピュータシステム;
100 ターゲットシステム;
400 I/Oフレーム;
402,404,406 ASIC;
408,410 IPブロック。

Claims (14)

  1. ある機能を実行する特定用途向け集積回路(ASIC)を開発するための方法であって、
    前記機能を実装するプログラム命令を含むソフトウェアプログラムを格納するステップと、
    並列処理を実行可能な処理システム上で前記ソフトウェアプログラムを実行するステップであって、前記ソフトウェアプログラムの前記実行ステップは、所望のシステム速度で実行される、ステップと、
    前記実行ステップに基づいて、前記ソフトウェアプログラムを検証するステップと、
    前記処理システムの少なくとも一部分の第1のハードウェア記述を格納するステップであって、前記第1のハードウェア記述は前記処理システムの少なくとも一部分の実装を特定する、ステップと、
    前記第1のハードウェア記述の第1の部分に対応する第2のハードウェア記述を生成する生成ステップであって、前記第2のハードウェア記述は、前記処理システム上で実行する前記ソフトウェアプログラムの第1の部分の専用のハードウェアによる実装を特定し、前記生成ステップは1回以上行われる、生成ステップと、
    前記ソフトウェアプログラムの前記機能を実装する前記ASICを作成する作成ステップであって、ASIC上で前記第2のハードウェア記述の実装を含む、作成ステップとを含む、特定用途向け集積回路を開発する方法。
  2. 前記生成ステップは、複数の第2のハードウェア記述を生成するために複数回実行され、
    前記作成ステップは、前記ASIC上での前記複数の第2のハードウェア記述の実装を含む、
    請求項1に記載の方法。
  3. 前記作成ステップは、前記ASIC上での前記第1のハードウェア記述の少なくとも一部分の実装を含む、請求項1に記載の方法。
  4. 前記第2のハードウェア記述は状態機械を特定し、
    前記生成ステップは、前記第1のハードウェア記述の前記第1の部分の、前記状態機械を特定する前記第2のハードウェア記述による置き換えを含み、
    前記作成ステップは、前記ASIC上での前記状態機械の実装を含む、
    請求項1に記載の方法。
  5. 前記生成ステップは、前記ソフトウェアプログラムの前記第1の部分の計算要件と一致するまたはこれを超える、前記第2のハードウェア記述のカスタムデータパスを含む、請求項1に記載の方法。
  6. 前記ソフトウェアの前記第1の部分は、順次に複数の演算を実行するように実行可能であり、
    前記第2のハードウェア記述は、並列での複数の演算の実行を特定する、
    請求項1に記載の方法。
  7. 前記生成ステップは、
    使用するハードウェアリソースの実際の量を決定するために、前記ソフトウェアプログラムを分析するステップを含み、
    前記第1のハードウェア記述の第2の部分は、前記分析に基づき、前記作成ステップで使用されない、
    請求項1に記載の方法。
  8. 前記生成ステップは、
    前記第1のハードウェア記述の前記第1の部分において未使用の通信リンクを決定するステップを含み、
    前記第1のハードウェア記述の前記未使用の通信リンクは、前記作成ステップで使用されない、
    請求項1に記載の方法。
  9. 前記変換ステップは、
    前記第1のハードウェア記述の前記第1の部分において、重要な時間的な要件を有するプログラム可能な通信リンクを決定するステップを含み、
    前記生成ステップは、前記決定されたプログラム可能な通信リンクの、専用リンクによる置換えを含む、
    請求項1に記載の方法。
  10. 前記処理システムの第1のプロセッサタイプで実行する前記ソフトウェアプログラムの第2の部分を分析するステップと、
    第2のプロセッサタイプは、前記分析ステップに基づいて決定される、前記第2のプロセッサタイプのプロセッサを特定する第3のハードウェア記述を決定するステップと、
    をさらに含む、請求項1に記載の方法。
  11. 前記処理システムは、複数のプロセッサおよびメモリ媒体を含み、前記メモリ媒体は複数のプロセッサ間の分散されている、請求項1に記載の方法。
  12. コンピュータシステムと、前記コンピュータシステムに接続される処理システムとを含むシステムであって、
    前記コンピュータシステムは、
    検証のために前記処理システムによってソフトウェアプログラムを実行可能な、前記ソフトウェアプログラムの格納を実行し、
    第1のハードウェア記述は、ASIC上における前記処理システムの少なくとも一部分の実装を特定する、前記処理システムの前記少なくとも一部分の前記第1のハードウェア記述の格納を実行し、
    複数の第2のハードウェア記述のそれぞれは、前記処理システム上で実行する前記ソフトウェアプログラムの各第1の部分の専用のハードウェアによる実装を特定する、前記第1のハードウェア記述の各第1の部分に対応する前記複数の第2のハードウェア記述の反復的な生成を実行し、前記複数の第2のハードウェア記述は、前記ASICを、前記機能の実行をさせるよう構成することに利用できるものである、
    よう構成されている、システム。
  13. ある機能を実行する特定用途向け集積回路(ASIC)を開発するためのプログラム命令を含むメモリ媒体であって、
    検証のために処理システムによってソフトウェアプログラムを実行可能な、前記ソフトウェアプログラムと、
    第1のハードウェア記述はASIC上における前記処理システムの少なくとも一部分の実装を特定する、前記処理システムの前記少なくとも一部分の前記第1のハードウェア記述と、
    コンピュータに、前記ソフトウェアプログラムを読み出させ、前記ソフトウェアプログラムをハードウェア記述に変換させることによって、前記処理システム上で実行する前記ソフトウェアプログラムの各第1の部分の専用のハードウェアによる実装を特定する、前記第1のハードウェア記述の各第1の部分に対応する前記第2のハードウェア記述を生成させる前記プログラム命令と、
    が格納されており、
    前記第2のハードウェア記述は、前記機能を実行するように前記ASICを構成するために利用可能であり、
    前記第2のハードウェア記述は、前記第1のハードウェア記述の前記各第1の部分を置き換えるように構成されている、メモリ媒体。
  14. 前記プログラム命令は、コンピュータに複数の第2のハードウェア記述を生成させるように実行可能であり、
    前記複数の第2のハードウェア記述のそれぞれは、前記機能を実行するように前記ASICを構成するため利用可能であり、
    前記複数の第2のハードウェア記述のそれぞれは、前記第1のハードウェア記述の各第1の部分を置き換えるように構成されている、請求項13に記載のメモリ媒体。
JP2009512266A 2006-05-22 2007-05-22 処理システムでのソフトウェアプログラムの実行に基づくasicの設計 Active JP5009979B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US80262906P 2006-05-22 2006-05-22
US60/802,629 2006-05-22
PCT/US2007/069481 WO2007137266A2 (en) 2006-05-22 2007-05-22 Designing an asic based on execution of a software program on a processing system

Publications (2)

Publication Number Publication Date
JP2009538481A JP2009538481A (ja) 2009-11-05
JP5009979B2 true JP5009979B2 (ja) 2012-08-29

Family

ID=38724092

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009512266A Active JP5009979B2 (ja) 2006-05-22 2007-05-22 処理システムでのソフトウェアプログラムの実行に基づくasicの設計

Country Status (5)

Country Link
US (5) US7761817B2 (ja)
EP (1) EP2030135A2 (ja)
JP (1) JP5009979B2 (ja)
CN (1) CN101517576B (ja)
WO (1) WO2007137266A2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386704B2 (en) 2002-10-31 2008-06-10 Lockheed Martin Corporation Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method
US8073974B2 (en) 2004-10-01 2011-12-06 Lockheed Martin Corporation Object oriented mission framework and system and method
US7761817B2 (en) 2006-05-22 2010-07-20 Coherent Logix, Incorporated Designing an ASIC based on execution of a software program on a processing system
US7555741B1 (en) * 2006-09-13 2009-06-30 Altera Corporation Computer-aided-design tools for reducing power consumption in programmable logic devices
US8972958B1 (en) * 2012-10-23 2015-03-03 Convey Computer Multistage development workflow for generating a custom instruction set reconfigurable processor
US8739088B1 (en) * 2009-10-16 2014-05-27 Xilinx, Inc. Using constraints wtihin a high-level modeling system for circuit design
US8201126B1 (en) * 2009-11-12 2012-06-12 Altera Corporation Method and apparatus for performing hardware assisted placement
KR101651871B1 (ko) * 2009-12-28 2016-09-09 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US8225247B2 (en) * 2010-07-13 2012-07-17 Satish Padmanabhan Automatic optimal integrated circuit generator from algorithms and specification
US8880866B2 (en) 2010-10-15 2014-11-04 Coherent Logix, Incorporated Method and system for disabling communication paths in a multiprocessor fabric by setting register values to disable the communication paths specified by a configuration
CN102467582B (zh) * 2010-10-29 2014-08-13 国际商业机器公司 一种集成电路设计中优化连线约束的方法和系统
TW201301135A (zh) * 2011-06-16 2013-01-01 Hon Hai Prec Ind Co Ltd 零件資料轉檔系統及方法
CN109240704B (zh) * 2012-11-06 2022-06-14 相干逻辑公司 用于设计重用的多处理器编程工具包
US9619597B1 (en) * 2014-02-28 2017-04-11 Cadence Design Systems, Inc. System, method, and computer program product for electronic design configuration space determination and verification
US9202004B1 (en) * 2014-08-01 2015-12-01 Cadence Design Systems, Inc. System, method, and computer program product for ensuring that each simulation in a regression is running a unique configuration
JP6992357B2 (ja) * 2017-09-22 2022-01-13 日本電気株式会社 設計支援装置、設計支援方法およびコンピュータプログラム
US10740257B2 (en) * 2018-07-02 2020-08-11 International Business Machines Corporation Managing accelerators in application-specific integrated circuits
JP6531927B1 (ja) * 2018-08-17 2019-06-19 株式会社エルアミーナ 高位合成マルチプロセッサシステム等
US11983265B2 (en) 2019-04-18 2024-05-14 RunSafe Security, Inc. Automated integration of a source modification engine
CN111506398B (zh) * 2020-03-03 2024-05-10 平安科技(深圳)有限公司 任务调度方法和装置、存储介质、电子装置
CN111552190B (zh) * 2020-04-24 2024-01-30 杭州涂鸦信息技术有限公司 一种控制硬件设备功能的方法及其系统和装置
US11502715B2 (en) 2020-04-29 2022-11-15 Eagle Technology, Llc Radio frequency (RF) system including programmable processing circuit performing block coding computations and related methods
US11411593B2 (en) 2020-04-29 2022-08-09 Eagle Technology, Llc Radio frequency (RF) system including programmable processing circuit performing butterfly computations and related methods
CN113657059B (zh) * 2021-08-17 2023-05-09 成都视海芯图微电子有限公司 一种适用于点云数据处理器的自动化设计方法及装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0410502B1 (en) * 1989-07-27 1997-05-28 Lsi Logic Corporation Method and apparatus for emulating interaction between application specific integrated circuit (asic) under development and target system
JP2986761B2 (ja) * 1997-05-23 1999-12-06 三菱電機株式会社 ハードウェア規模可変マイクロプロセッサ・ソフトコア設計方法
US5966534A (en) * 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US6226776B1 (en) * 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
US6466898B1 (en) * 1999-01-12 2002-10-15 Terence Chan Multithreaded, mixed hardware description languages logic simulation on engineering workstations
US6272451B1 (en) * 1999-07-16 2001-08-07 Atmel Corporation Software tool to allow field programmable system level devices
JP2001216337A (ja) * 2000-02-01 2001-08-10 Rooran:Kk Cpuコアの開発支援システムとその開発支援方法及び開発支援用プログラムを記録した記録媒体
US6578133B1 (en) * 2000-02-24 2003-06-10 Stanley M. Hyduke MIMD array of single bit processors for processing logic equations in strict sequential order
US6490707B1 (en) * 2000-07-13 2002-12-03 Xilinx, Inc. Method for converting programmable logic devices into standard cell devices
US7415594B2 (en) * 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US7000092B2 (en) * 2002-12-12 2006-02-14 Lsi Logic Corporation Heterogeneous multi-processor reference design
JP3923920B2 (ja) * 2003-03-31 2007-06-06 株式会社東芝 集積回路の設計システム及び集積回路の設計方法
US6981232B1 (en) * 2003-05-23 2005-12-27 Xilinx, Inc. Method and system for integrating a program and a processor into an application specific processor
US7353362B2 (en) * 2003-07-25 2008-04-01 International Business Machines Corporation Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus
JP2006155448A (ja) * 2004-12-01 2006-06-15 Matsushita Electric Ind Co Ltd データ処理装置およびデータ処理装置の設計方法
US7437500B2 (en) * 2005-08-05 2008-10-14 Lsi Corporation Configurable high-speed memory interface subsystem
EP2008182B1 (en) * 2006-03-27 2010-05-12 Coherent Logix Incorporated Programming a multi-processor system
US7761817B2 (en) * 2006-05-22 2010-07-20 Coherent Logix, Incorporated Designing an ASIC based on execution of a software program on a processing system
JP4955484B2 (ja) * 2007-08-24 2012-06-20 ルネサスエレクトロニクス株式会社 回路設計装置、回路設計方法、及び、回路設計プログラム
US20100175038A1 (en) * 2009-01-06 2010-07-08 Internationl Buisness Machines Corporation Techniques for Implementing an Engineering Change Order in an Integrated Circuit Design

Also Published As

Publication number Publication date
CN101517576B (zh) 2011-10-05
US8438510B2 (en) 2013-05-07
WO2007137266A2 (en) 2007-11-29
US20130283220A1 (en) 2013-10-24
US20110219343A1 (en) 2011-09-08
US8788989B2 (en) 2014-07-22
US7949969B2 (en) 2011-05-24
US8171436B2 (en) 2012-05-01
US20100281451A1 (en) 2010-11-04
US20120192131A1 (en) 2012-07-26
US7761817B2 (en) 2010-07-20
US20070271545A1 (en) 2007-11-22
JP2009538481A (ja) 2009-11-05
WO2007137266A3 (en) 2008-06-26
EP2030135A2 (en) 2009-03-04
CN101517576A (zh) 2009-08-26

Similar Documents

Publication Publication Date Title
JP5009979B2 (ja) 処理システムでのソフトウェアプログラムの実行に基づくasicの設計
US9558308B2 (en) Compiler for closed-loop 1×N VLSI design
US8386972B2 (en) Method and apparatus for managing the configuration and functionality of a semiconductor design
US5880971A (en) Methodology for deriving executable low-level structural descriptions and valid physical implementations of circuits and systems from semantic specifications and descriptions thereof
US6378123B1 (en) Method of handling macro components in circuit design synthesis
US8639487B1 (en) Method for multiple processor system-on-a-chip hardware and software cogeneration
US8141016B2 (en) Integrated design for manufacturing for 1×N VLSI design
US7966598B2 (en) Top level hierarchy wiring via 1×N compiler
US20100107130A1 (en) 1xn block builder for 1xn vlsi design
Koul et al. Aha: An agile approach to the design of coarse-grained reconfigurable accelerators and compilers
US20100058271A1 (en) Closed-Loop 1xN VLSI Design System
JP2022016409A (ja) レジスタ転送レベル設計から合成可能なネットリストを生成するためのシステム及び方法
US7509246B1 (en) System level simulation models for hardware modules
JP2005293448A (ja) データ処理装置の開発方法、データプロセッサの開発支援プログラム、設計データの提供方法、及びデータ処理システムの開発方法
Santos et al. A scalable methodology for agile chip development with open-source hardware components
US10152566B1 (en) Constraint based bit-stream compression in hardware for programmable devices
Fawcett Tools to speed FPGA development
Baguma High level synthesis of fpga-based digital filters
Kuusilinna et al. Real-time system-on-a-chip emulation: emulation driven system design with direct mapped virtual components
Dossis Formal Design Flows for Embedded IoT Hardware
Sweeney Hardware Design Methodologies Hardware Design Methodologies
Nikolic AN IMPROVED METHOD AND APPARATUS FOR AUTOMATED DESIGN AND VERIFICATON OF INTEGRATED CIRCUITS

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111003

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120501

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120531

R150 Certificate of patent or registration of utility model

Ref document number: 5009979

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150608

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250