JP2007526539A - 集積回路開発システム - Google Patents

集積回路開発システム Download PDF

Info

Publication number
JP2007526539A
JP2007526539A JP2006517391A JP2006517391A JP2007526539A JP 2007526539 A JP2007526539 A JP 2007526539A JP 2006517391 A JP2006517391 A JP 2006517391A JP 2006517391 A JP2006517391 A JP 2006517391A JP 2007526539 A JP2007526539 A JP 2007526539A
Authority
JP
Japan
Prior art keywords
data
hardware
signal
objects
interface
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.)
Pending
Application number
JP2006517391A
Other languages
English (en)
Inventor
アンソニー マーク ジョーンズ,
ポール, エム. ワッソン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ambric Inc
Original Assignee
Ambric Inc
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 Ambric Inc filed Critical Ambric Inc
Publication of JP2007526539A publication Critical patent/JP2007526539A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Logic Circuits (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Abstract

本発明の実施形態には、集積回路開発用のシステムが含まれる。この開発システムの要素には、ハードウェアオブジェクトとソフトウェアオブジェクトが含まれる。これらのオブジェクトは、ソフトウェア環境においてインスタンス化され、整列され、パラメータが決められ、接続されることにより異なる機能を実現する。ソフトウェアにおいては、その記述により1組のオブジェクトのトポロジと特性、ひいては機能全体が定義される。これらのオブジェクトは1組のプリミティブオブジェクトから階層的に構成されている。予め確立され、カプセル化されたハードウェアオブジェクトとして設定されたプリミティブオブジェクトをモデル化することができるハードウェアを使用すれば、トポロジと特性とが、所望の実行機能を発揮できるハードウェアを定義する。本発明の実施形態を用いれば、回路設計者は、ハードウェアまたはハードウェアデザインについてほとんど知識がなくても、あるいは全く知識がなくても、高レベルなソフトウェア記述だけでハードウェアシステムを設計することができる。
【選択図】図29

Description

関連出願の参照
本出願は、2003年6月18日に提出された「集積回路開発システム」という表題の米国仮特許出願60/479,759に基づく優先権を主張するものであり、当該米国仮特許出願の内容は参照により本出願に組み込まれる。
本件は、集積回路開発システムに係り、特に、ハードウェアオブジェクト、ハードウェアオブジェクトの間でのメッセージを容易にする通信構造、およびハードウェアオブジェクト上におけるソフトウェア表現およびシステムの実行を可能にするシステムを含む集積回路開発システムに関するものである。
現在のところ、集積回路(IC)の設計および開発は、非常に難しくコストのかかるプロセスである。今日におけるASIC(特定用途向け集積回路)の手法やEDA(電子設計自動化)ツールにおいては厳しい制約があるので、新たな製造技術により特別なゲートが提供されても、設計者はそのすべてを効果的に使用することができないため、設計上のギャップがますます広がりつつある。
すべてを注文設計する場合には、たとえキャッシュメモリのように大きな規則正しい構造を設計する場合であっても、非常にコストがかかってしまう。これは、新たな製造技術においては低レベル詳細部の複雑さが指数関数的に増加するので、使用可能時間内に多くの新しい設計をすることができないからである。現在の構造ではICのスピードに限界があるが、配線を長くし、チップの構成部品間の配線をより多くすることがますます必要となっている。このように配線の量が増えることにより、配線中の欠陥を中心とする新たな製造パラダイムが生じる。
1つのダイあたり10億個程度というトランジスタ密度に向けて製造技術が進み続けるにつれ、設計コストの急激な上昇、検証の手間の指数関数的増加、現在の設計ツール固有の制限、および以前のものを効果的に再利用できないことにより、将来の開発が非常に高価で少数の者にしか利用できないものになるであろうことが明らかになってきている。
図1Aおよび図1Bは、ASICおよびFPGA(フィールドプログラマブルゲートアレイ)を用いてICを作成する工程の例を示す。ここでは機能A,B,Cとして示されているシステムモデルを作ることから設計が始められる。このシステムモデルはどのような方法によって作成してもよく、このようなモデリングシステムには、例えばブロック図、統一モデル言語(UML)モデルまたはデータフローチャートが含まれる。システムモデルが完成すれば、人の手によりソフトウェアが記述されるが、これは時間がかかりチェックが難しいものである。このソフトウェア記述は、例えば、C、C++、Java、Matlab、Smalltalk、またはSystem Cにより作成することができる。次に、このソフトウェア記述は、システムの論理ゲートモデルを作成するのに使用できるレジスタ転送レベル(RTL)記述に人の手により翻訳される。RTLは、合成を介して論理ゲートモデルを生成するのに使用できるVerilogやVHDLのようなハードウェア記述言語(HDL)の一般用語である。RTLは、ASIC(図1A)やFPGA(図1B)のいずれに対しても使用される。人の手によりソフトウェア記述からRTLに翻訳することは、時間がかかりチェックが難しいものである。ASICについては、合成により論理ゲートモデルが作成されれば、より多くのソフトウェアが使用され、半自動ハードウェアレイアウトツールにより機能を発揮するようにゲートが配置および配線される。配列された後、作成されたパターンは、製造工程において光学効果を生じるように最適化される。この工程を最適化するためには何度も繰り返すことが必要になり、手動で最適化がなされる場合があることに留意されたい。最後に、マスクセットが作成され、特定の設計済みASICを作るためにこのマスクセットが使用される。
図1Bからわかるように、FPGAを作成するためにも同様の工程がなされる。論理ゲートモデルを製作するためにRTL記述と合成が用いられる。目標とする部分に物理的にデザインを確実に適合させるためには、何度か繰り返さなければならない場合がある。マッピングが判明すれば、タイミング条件を確実に満足するためにそのデザインの検査がなされる。最初の段階でタイミング設計条件を満足していない場合には、マッピングとタイミング条件の双方が満足されるようにRTLの構造を変更しなければならない。例えば、タイミングの制約条件が確実に満足されるように同じ論理回路を多重に繰り返す必要があることが多いが、RTL記述を変更するだけでこれを行うことができる。最後に、FPGA上の各要素の論理マッピングがROMにロードされる。FPGA装置の電源が入ると、ROMからすべてのFPGA要素が自動的にロードされ、所望の機能が発揮される。
トランジスタや他のIC構成部品のサイズが小さくなっているため、すべてを注文設計した場合には、現在使用されているよりも多くの設計者が必要となり、これにより複雑さが増大し、現在の技術の状況に比べると、開発するのに必要な時間と資力が指数関数的に増加する。ハードウェアの複雑さを軽減し、ハードウェアにおける間違いを検証することを少なくするために、現在の多くのシステムは、ハードウェアとソフトウェアとを混合して使用している。この新しいパラダイムにおいては、プログラム可能なハードウェア上で実行されるソフトウェアを多くの構成部品に関して使用して、装置の製造後に機能性およびバグを修正できるようにすることに対して、パフォーマンスはトレードオフの関係に立つ。このソフトウェアとハードウェアとを共存させて解決法を得るというコデザインプロセスは、ここ20年広範囲にわたって研究されてきた課題であるが、ほとんど成功していない。
適当な時間内に広範で複雑な設計を行い、これを検証することを確実に行うためには、ハードウェアとソフトウェアの構成要素を広範囲にわたって再利用することが必要不可欠であるが、これは実現不可能なものとされ、一致団結した小さな設計センター内で、限られた意味においてのみなされていたものである。
本発明の実施形態は、従来技術における他の限定にも向けられている。
本発明の実施形態には、集積回路開発用のシステムが含まれる。この開発システムの要素には、ハードウェアオブジェクトとソフトウェアオブジェクトが含まれる。これらのオブジェクトは、ソフトウェア環境においてインスタンス化され、整列され、パラメータが決められ、接続されることにより異なる機能を実現する。ソフトウェアにおいては、その記述により1組のオブジェクトのトポロジと特性が定義される。これらのオブジェクトは他のオブジェクトと階層的に構成されている。最も低いレベルの階層はプリミティブオブジェクトと呼ばれる。その機能を実現し、ソフトウェアオブジェクトの本質的な特性を維持することができるハードウェアを使用すれば、ソフトウェア記述のトポロジと特性とが、所望の機能を発揮できるハードウェアを定義するために必要なすべてのものとなる。本発明の実施形態を用いれば、回路設計者は、ハードウェアまたはハードウェアデザインについてほとんど知識がなくても、あるいは全く知識がなくても、ソフトウェア記述だけでハードウェアシステムを設計することができる。
通信の基本
基本的に、IC上に形成されたハードウェアオブジェクトは電気信号を用いて互いに通信を行う。電気信号の状態によりデータが定義される。例えば、作動電圧と基準接地電圧の中間点よりも高い電圧値の電気信号は「1」またはHIGHの値を表していると考えることができ、その中間点よりも低い電圧は「0」またはLOWの値であると考えることができる。信号の完全性を確保するために、基準接地電圧に近い限られた範囲の電圧がLOWの値であるとされる。同様に、作動電圧に近い限られた範囲の電圧がHIGHの値であるとされる。これらの範囲の間の電圧は未定義論理状態とされる。
すべての説明および図面において、HIGHの値は信号がアクティブであることを示しており、LOWの値は非アクティブ値であることを示している。信号がアクティブであることは、HIGHまたはLOWという用語によって決まるものではない。
第1の点から第2の点に同時にデータを伝達することができるパラレルデータバスを介してオブジェクト間で多重信号を送ることができる。特定の時間内に送ることのできるデータ量は、バスのデータ幅とデータの状態が更新される頻度によって決まる。
オブジェクト間でデータを送るタイミングと方法を決定するために、データ伝送プロトコルがよく使用される。典型的には、このプロトコル自身は実際の「データ」伝送の一部ではないが、データの特性を示したり、データの伝送を同期したりする。例えば、受信オブジェクトが、ビジー状態でデータを受信できないことを示すことがある。
図2は、受信オブジェクトがデータを受信可能であることを「accept」信号をアクティブにすることにより示す比較的簡単なデータ転送プロトコルを示すタイミングチャートである。同様に、送信オブジェクトは、そのオブジェクトが送っているデータが有効であるか無効なであるかを示す。無効なデータは、値を有しておらず、使用されることもない。
図2からわかるように、HIGHのaccept信号は、受信オブジェクトがデータを受信できることを示している。HIGHのvalid信号は、データが有効な値を有していることを示している。accept信号およびvalid信号がともにHIGHである場合、送信オブジェクトと受信オブジェクトとの間でデータ転送がなされる。図2にはclock信号が示されている。このクロックは、valid信号、accept信号、およびdata信号をその立ち上がりエッジでトリガする。data信号は、1ビットでもよく、同時に送信される数ビットのデータを含んでいてもよい。共通データバス幅は、8、16、32、または64のように2の累乗になっている。
最初のクロックパルスにおいては、図2に示されたclock信号の立ち上がりエッジによりvalid信号のビットがHIGHにされ、data信号が意味のある値であることが示される。しかし、accept信号はLOWであり、これは、受信オブジェクトがデータを受信する準備が整っていないことを示している。data信号は、accept信号がHIGHにあるクロックエッジ4までDATA1という値を保持する。クロックエッジ3でaccept信号はHIGHにされ、受信オブジェクトが受信可能であることが示される。クロックエッジ4では、DATA1というデータが送信オブジェクトから受信オブジェクトに転送される。矢印はデータの転送を示している。クロックエッジ6,7,9では、valid信号とaccept信号がともにHIGHであるため、転送が行われる。他のすべてのクロックエッジにおいては、valid信号とaccept信号の一方もしくは両方がLOWであるため、転送が行われない。図2のクロックにおいては、説明を簡単にするためにクロックエッジにおける遷移が示されている。図2に示す転送プロトコルは、受信オブジェクトが送信オブジェクトの状態を推測的に知ることなく受信の準備が整ったことを示すプリエンプティブクラスのプロトコルの1つである。
図3は、プロトコルレジスタ50を示すブロック図である。このレジスタは、入力インタフェイスと出力インタフェイスとの間の1組の記憶素子である。図3のインタフェイスは、図2に詳細を示したものと同一のプロトコルを使用している。入力インタフェイスは、in_accept信号を用いて記憶素子52および54が更新可能であることを示す。in_acceptがHIGHであれば、in_dataの値を記憶素子54に格納し、in_validの値を記憶素子52に格納する。記憶素子52および54は、1つ以上の値(valid, data)を保持していてもよいことに留意されたい。出力インタフェイスは、記憶素子52の最も古い値をout_validに与え、記憶素子54の最も古い値をout_dataに与える。out_validとout_dataの値は、out_accept信号がHIGHであるときには、次に古い値(valid, data)に変更され、そうでないときには変更されない。記憶素子56は、out_accept信号の履歴を含んでおり、in_accept信号の次の値を計算するために使用される。
図4は、記憶素子72,74,76,78を含む別のプロトコルデータレジスタ70のブロック図である。記憶素子72,74,76は、図3のプロトコルレジスタ50の記憶素子52,54,56に対応し、同様に動作する。簡潔にするためにこれらの素子についての説明は省略する。記憶素子78は、パケット識別子の値の履歴も格納するようにレジスタ70を拡張するものである。図3のレジスタ50は、2値(valid, data)の履歴を格納したが、図4のレジスタ70は、3値(valid,(data, packet_id))の履歴を格納する。それぞれの値において、valid値がHIGHであることは、2値(data, packet_id)が意味のあるものであることを示している。valid値がLOWである場合には、2値(data, packet_id)を使用することができないか、または、未定義の結果が生ずる可能性がある。2値(data, packet_id)において、packet_idの値は、より大きなデータグループまたはデータパケットにおけるdata値の位置を示している。パケットメッセージが、パラレルで同時に転送できるデータよりも多くのデータを含んでいる場合、メッセージがいくつかのデータ「ワード」に分割されることが多い。ここでの「メッセージパケット」および「ワード」という用語は、最も広い意味で解釈されるべきであり、特定の構造、フォーマット、または限定を意味するものではない。したがって、1つのメッセージパケットを転送するためには、多数の組のデータまたはワードを送信しなければならない場合がある。
一実施形態においては、packet_idの値は1ビットであるが、より大きなグループやメッセージパケットにおけるデータメンバシップを示すものであってもよいことはもちろんである。特定の実施形態においては、packet_idのLOW値は、それがメッセージパケットの最終ワードであることを示している。packet_idに関して、他のすべてのワードはHIGH値となっている。これを利用して、現在のワードに先行するワードのLOW値のすぐ後にpacket_idのHIGH値が続いていることを検出することで、メッセージパケットにおける先頭ワードを決定することができる。換言すれば、先行するpacket_idにおけるLOW値に続くpacket_idにおける最初のHIGH値は、メッセージパケットにおける先頭ワードを示している。1ビットのpacket_idを用いた場合には、最初と最後のワードのみを決定することができる。
図5は、組み合わせ論理回路を含むプロトコルレジスタ80を示している。図5のプロトコルレジスタ80は、図3のプロトコルレジスタ50と同様であるが、出力インタフェイスに論理回路87を含んでいる。図5に示す実施形態においては、論理回路87は、二入力ORゲートである。論理回路87は、否定演算されたレジスタ82からのout_valid信号をout_accept信号に組み合わせて、out_validがLOWであっても、常にプロトコルレジスタ80が次に古い値(valid, data)に更新する。実際の使用における動作を以下に詳細に示す。
図6A〜図6Eは、パイプライン90に組み込んだ一連のプロトコルレジスタ80の動作を示すブロック図である。パイプライン90は、R1〜R9で示される9つのレジスタを含んでいる。図6A〜図6Eのそれぞれは、異なる時間t1〜t5を示している。パイプライン90は、隣の受信オブジェクト(図示せず)からのout_accept信号を用いている。上述した隣の受信オブジェクトは、データを受信できないときにout_accept信号をLOWにする。t1〜t5におけるout_accept信号は常にLOWであり、その受信オブジェクトがt1〜t5の間は受信していないことを示している。図5からわかるように、記憶場所86は、in_accept信号を算出し、それを隣のレジスタに返信する。例えば、レジスタR1のin_accept信号はレジスタR2のin_accept信号などとなる。このように、受信オブジェクトからのout_accept信号はパイプライン90に連続的に送られる。
図6Aからわかるように、t1の時点では、パイプライン90は、有効な3つのワードデータD1,D2,D3を保持している。また、パイプライン90は、無効であると考えられる他のデータを保持している。有効データは各レジスタにおいて陰付ボックスで示されており、無効データは陰なしボックスで示されている。上述したように、各サイクルにおいて、パイプライン90は、隣の受信オブジェクトからのout_accept信号を用いている。また、パイプライン90は、送信オブジェクト(図示せず)からの他の値(valid, data)を受け入れる。図6Aのt1の時点においては、有効な4番目のワードデータD4がパイプライン90に送られつつある。
したがって、t1の時点では、有効なデータD1、D2、D3を有する3つのワードがあり、これらすべてはパイプライン90の別個のプロトコルレジスタR2、R5、R8に格納されている。途中のout_accept信号がHIGHになるサイクルごとに、値(valid, data)は次のレジスタに進む。サイクルt1において、レジスタR1に与えられたout_acceptがLOWであったとしても、図5の論理回路87によりR1が更新される。サイクルt2およびt3において、R2が無効データを含んでいるので、R2における途中のout_acceptはHIGHのままである。図5の論理回路87は、パイプライン90において無効なデータワードを除去し、パイプライン90の各レジスタR1〜R9が意味のあるデータを格納している場合にのみ処理を停止するように作用する。
論理回路87の動作は、すべてのレジスタR1〜R9の間で繰り返され、これにより、D1、D2、D3の間にある無効データのすべてがサイクルt5までに除去される。これらの無効データは、R1に与えられたout_accept信号がLOWに保持されていても除去されており、受信オブジェクトはデータを受け入れていないことを示していることに留意されたい。本発明の実施形態によれば、無駄になるところであったサイクルにおいても、パイプラインのデータ処理を有効に継続させることができる。
図7は、プロトコルレジスタ70(図4)を図5の論理回路87と組み合わせたプロトコルレジスタ100のブロック図である。プロトコルレジスタ100は、図4を参照して説明したそれぞれの信号を格納するために記憶場所102,104,106,108を含んでいる。論理要素107は、図5の論理回路87に対応するOR機能を有している。同一の機能を有するゲートのあらゆる組み合わせにより論理要素107を構成できることはもちろんである。
図8は、本発明における単一の履歴を有するプロトコルレジスタ100の実装を示す模式図である。図8のプロトコルレジスタ100は、クロックのエッジでトリガされる「D」型フリップフロップとして示される記憶レジスタを含んでいる。さらに、フリップフロップの中には、イネーブルがHIGHのときに立ち上がりエッジで入力値を出力に転送することだけを許可するイネーブル入力を含むものがある。ここでの説明は、動作を説明するために主同期クロック(図示せず)を用いるが、回路は、後述の例において示すような非同期クロックを用いるようになっていてもよい。
D型フリップフロップ132,134,138は、1セットの値(valid, data, packet_id)を格納することができる第1のレジスタセットを構成している。このレジスタセットを「サイドレジスタ」130という。D型フリップフロップ122,124,128は、別の値(valid, data, packet_id)を格納することができる第2のレジスタセットを構成している。このレジスタセットを「メインレジスタ」120という。マルチプレクサ142,144,148は、(in_accept信号がHIGHの場合には)入力から、あるいはin_accept信号がLOWの場合にはサイドレジスタ130から、値(valid, data, packet_id)をメインレジスタ120にロードする論理セットを構成している。
上述したように、data値の幅は何ビットであってもよい。
論理機能127,137は、図5の論理回路87に対応し、その詳細な機能はここでは説明しない。レジスタ126は、(論理機能127,137の動作を無視して)in_acceptになるサイクルまで遅らせたout_acceptのコピーを作成する。
サイドレジスタ130には、in_acceptがHIGHであるときに入力3値がロードされ、そうでない場合には、サイドレジスタはそれまでの3値を保持する。マルチプレクサ142,144,148とin_acceptとout_acceptの組み合わせにより、メインレジスタ120の動作が制御される。表1はメインレジスタの動作を示す。
Figure 2007526539
表1は、プロトコルレジスタ110に関して4つの状態、すなわち通常、停止中、停止、開始中があることを示している。通常状態は、レジスタが入力インタフェイスから直接出力インタフェイスに次の3値を転送する通常動作を行っている状態である。停止中状態は、出力インタフェイスのout_accept信号がLOWとなって受信オブジェクトがデータを受信できないことを示し、入力インタフェイスのin_accept信号がまだLOWになっていないときに生じる。停止中状態においては、新しい入力3値を受け入れることができ、これはサイドレジスタ130に格納される。停止状態は、入力および出力インタフェイスの双方がデータを転送しておらず、レジスタ120および130の双方がvalidデータで満杯になっている状態である。開始中状態は、出力インタフェイスが最も古い3値を転送するが、入力インタフェイスが停止している状態である。開始状態においては、サイドレジスタ130に保持された2番目に古い3値がメインレジスタ120に転送される。図9は、プロトコルレジスタ110における状態遷移図であり、状態と各状態を変化させるout_accept信号の遷移を示している。
図10は、長さ5のパケットを構成する3値(valid, data, packet_id)の考えられる2つの組み合わせを示す図である。それぞれの3値はワードW1〜W5として示されている。レジスタ図は、パケットが有効な3値および無効な3値の双方からなることを示しており、陰付ボックスは有効である場合を示している。validがLOWであるとき、data信号と同様にpacket_id信号は未定義である。packet_id信号は、LOWがパケットの最終ワードを示す1ビット信号である。上述したように、packet_idがLOWからHIGHに遷移することにより、パケットにおける先頭ワードが決定される
図10のパケット図は、有効ワードのみを示すことによりvalid信号の状態を抽象化している。これは、マルチワードパケットに関して最も便利な図である。
図11は、2つの等長パケット(この場合においてはそれぞれ長さ5のワード)をワードごとに組み合わせる方法を示している。図10のパケット図において、動作は極めて簡単である。それぞれのワードは個々に組み合わされ、長さ5の新しいパケットが作成される。サイクルごとの挙動はより複雑であり、図10のレジスタ図は、各パケットにおけるvalid信号が実際の動作にどのように影響するのかを示している。
図11では、それぞれA1〜A5およびB1〜B5と連続的に示された5ワードの2つのパケットAおよびBを用いている。図11の例においては、この組み合わせにより長さ5の新たなパケットが生じ、それぞれの出力ワードはA1+B1,A2+B2,...,A5+B5となる。
図11は、T1からT10の各サイクルにおける動作を示している。サイクルT1では、入力ワードA1およびB1がともに受け入れられ、合計であるA1+B1が出力される。サイクルT1における出力3値(valid, data, packet_id)は(1,A1+B1,1)である。サイクルT2においては、B2が有効でないため加算されない。このため、A2は、A2およびB2の双方が存在し加算して出力値(1,A2+B2,1)を作成可能になるサイクルT5までB2を待つ。サイクルT2,T3,T4においては、有効な出力がないため、出力値は、Xを未定義の値として(0,X,X)となる。サイクルT6において、A3とB3が利用可能になり、出力値は(1,A3+B3,1)となる。サイクルT7においては、B4が入力側にあるが、A4を待たなければならないので、無効な出力値(0,X,X)が生成される。サイクルT8においては、A4とB4が組み合わされ、出力値(1,A4+B4,1)が生成される。サイクルT9においては、B5が入力側にあるが、A5を待たなければならないので、無効な出力値(0,X,X)が生成される。サイクルT10では、A5とB5が受け入れ可能なので、最終ワード(1,A5+B5,0)が生成される。
図11において、packet_idフィールドは、パケットAワードのpacket_idフィールドのコピーとする、あるいは、パケットBワードからコピーすることができる。この例においては、パケットは同じ長さでなければならないので、この状況は対称的である。図11は、無効なワードを、破棄せずに、入ってくるパケットにおける無効なワードの相対位置により出力パケット内で再配置する方法を示している。パケットを組み合わせるためには、最も長いパケット以上の時間が必要である。
図12は、従来の方法で設計された先入れ先出し(FIFO)要素144を図3のプロトコルレジスタ50に変える方法を示している。従来のFIFO要素144は、主クロックを用いて同期させてもよく、あるいは、入力インタフェイスと出力インタフェイスで別個に独立した無関係のクロックを用いて非同期にしてもよい。従来のFIFO要素144は、入力データをFIFOに入れるpush信号を用いている。FIFOが満杯になると、FIFOはfull信号を発する。full信号がHIGHのときにpush信号をアクティブにする挙動については、これらの状況では、入力データを破棄する実装もあれば、push信号を単に無視する実装もあるため、定義されていない。同様に、従来のFIFO要素144は、FIFOからデータを出力するためのpop信号を用いている。FIFOが空になったときにempty信号が与えられる。push/fullの問題と同様に、empty信号がHIGHのときにpop信号をアクティブにすることは、これらの状況では、未定義値を出力する実装もあれば、pop信号を無視する実装もあるため、定義されていない。
図12は、論理機能140,141,142,143を加えることにより、FIFO要素144を図3のプロトコルレジスタ50に変える方法を示している。in_data信号とout_data信号は、ちょうどFIFO要素144の入力および出力データポートに対応する。インバータ140により、FIFOが空でない場合、すなわちFIFO要素144にデータが存在する場合にout_validがHIGHとなることが保証される。インバータ142により、FIFOが満杯でない場合、すなわちFIFO要素144にまだ利用可能なスペースがある場合にin_acceptがHIGHとなることが保証される。2入力AND論理機能141および143は、FIFO要素144が満杯のときにpush=HIGHとなったり、FIFO要素144が空のときにpop=HIGHとなったりするような不当状態を排除することにより、FIFO要素144の起こりえる未定義の挙動を防止している。
図13は、図3のプロトコルレジスタ50、上述したプロトコルレジスタの他の例、またはこれらの組み合わせを用いてハードウェアオブジェクトを作成する方法を示している。図13の上の例は、ハードウェアオブジェクト150に対して1つの入力ポートと1つのポートがある簡単なパイプラインステージを示している。ハードウェアオブジェクト150は、図10において述べたパケット結合を用いて構築可能なメッセージを使用して、システムの他の部分と通信を行う。メッセージの内容と構造は、図10のパケット結合により影響を受けない。以下のものに限られるわけではないが、データ、オペランド、結果、コマンド、指令、ルーティング方向、メッセージのステータスフラグ、および内部構造識別子を含めて、メッセージの形態および内容は簡単に構築することができる。
すべてのメッセージは非同期的に取り扱われる。常時メッセージを受信可能な非同期手段である入力ポートに関して、ハードウェアオブジェクト150により入力メッセージが処理できない場合の唯一の動作は入力をブロックすることである。これは、メッセージの一部でも使用または処理できない場合に、プロトコルレジスタ155がそのin_accept信号をLOWにすることによりなされる。準備ができてからはじめてメッセージを出力可能な非同期手段である出力ポートに関しては、出力メッセージの準備ができていないときの唯一の動作はハードウェアオブジェクト150に何も出力させないことである。これは、プロトコルレジスタ156がそのout_valid信号をLOWにすることによりなされる。
非同期的なメッセージによりハードウェアオブジェクト150の動作を制御することは、ソフトウェアオブジェクトの挙動および特性に直接対応するハードウェアオブジェクトを生成する場合に有効である。プロトコルレジスタ155,156は、予期しない副作用を生ずる周りの電気回路から電気回路151を隔離しているので、ハードウェアオブジェクト150内の電気回路151は、回路をどのように組み合わせたものであってもよい。また、非同期的なメッセージを使用すれば、いつでもメッセージを受信および出力することができるので、外部との間で生じるタイミングの問題を解消することができる。
ハードウェアオブジェクト150の他の実装例が図13に含まれている。以下では、ハードウェアオブジェクト152とハードウェアオブジェクト150との関係について述べるが、プロトコルレジスタ157および158がそれぞれプロトコルレジスタ155および156に直接対応可能であるに留意することは重要である。また、電気回路153を電気回路151と同一のものとしてもよい。ハードウェアオブジェクト152は、簡単なFIFO154と付加的なプロトコルレジスタ159とを含んでいる。FIFO154およびプロトコルレジスタ159は、入力メッセージをバッファし、遅らせるように動作する。同期システムにおいては、この遅延により、ハードウェアオブジェクト150と比較してハードウェアオブジェクト152の動作の待ち時間が変化することとなるが、この遅延はスループットや機能に影響を与えない。非同期システムにおいては、時間と待ち時間に関して厳格な概念がなく、ハードウェアオブジェクト152およびハードウェアオブジェクト150は同一の挙動をする。
図13の内部プロトコルレジスタ159は、プロトコルレジスタが、ちょうど境界ではなく、ハードウェアオブジェクトの内部に有用な機能を有することを示している。本発明の好ましい実施形態においては、そのようなレジスタを使用することが有益な場合はいつでもプロトコルレジスタが排他的に使用される。
図14は、プロトコルレジスタの異なる組み合わせを有する簡単なジョイン機能およびフォーク機能を示すものである。
ジョイン機能160は、図10のパケット結合に対応するメッセージ全体に対して処理を行う。図13の説明において、メッセージの詳細が説明される。最も簡単な形態のジョイン機能160は、2つの入力ポート161,162と1つの出力ポート168を有しており、2つの入力ポート161,162に受信されたメッセージの同期を行う。この同期は、入力ポート161および162がともにメッセージの先頭ワードを持ったときの出力メッセージにより始まり、入力インタフェイス161および162がともに同期プロセスを開始したメッセージの最終ワードを受信したときに完了する。
フォーク機能163は、図10のパケット結合に対応するメッセージ全体に対して処理を行う。図13の説明において、メッセージの詳細が説明される。最も簡単な形態のフォーク機能163は、2つの出力ポート165,166と1つの入力ポート164を有しており、入力ポート164に受信された入力メッセージを出力ポート165と166の双方に複製する。この複製プロセスは、入力ポート164がメッセージの先頭ワードを持ったときの出力メッセージにより始まり、出力インタフェイス165および166がともにこのプロセスを開始したメッセージの最終ワードを送信したときに完了する。
図14では、図3のプロトコルレジスタ50が黒く塗りつぶされた長方形として示されている。例えば、長方形167がプロトコルレジスタを表している。図14は、同一のフォーク機能およびジョイン機能を生成するすべての等価なトポロジを示しており、基本的にはプロトコルレジスタの配置によって機能が変化することはない。図13の説明において詳述したように、非同期システムにおいてプロトコルレジスタを挿入することはタイミングおよび機能に影響を与えない。
図14の異なるトポロジは、プロトコルレジスタの挿入を任意に決めることができることを示している。本発明の好ましい実施形態においては、すべてのプロトコルレジスタにほぼ等しい電気的負荷特性および同様のタイミング特性を持たせるようにレジスタがIC上に置かれる。このルールを強制することにより、すべてのプロトコルレジスタは実質的に同一の動作を行う。図13に示されるポートとしてプロトコルレジスタを用いてハードウェアオブジェクトを構成する場合には、ハードウェアオブジェクトを実装するためにIC上のどのプロトコルレジスタが選択されたかとは無関係に、ハードウェアオブジェクトの入力ポートおよび出力ポートが同一の機能および電気的性能を有することとなる。これにより、ハードウェアオブジェクトを副作用なく再配置または再インスタンス化することができ、これは、そのインスタンスがいつでもどこでも同一の動作をすると思われているソフトウェアオブジェクトをハードウェアモデル化するための重要な特徴となる。
図15は、図8のプロトコルレジスタの実装110を拡張して非同期クロックclk1,clk2を用いたプロトコルレジスタを形成し、入力インタフェイスおよび出力インタフェイスのそれぞれのために3値(valid, data, packet_id)の繰り返しや消失がないようにする方法を示している。D型フリップフロップ171,172,173,174は同期機能を有し、これにより、シンクロナイザへの移行により準安定入力電圧が形成され、シンクロナイザの動作によりその準安定電圧が(ランダムに)有効なHIGHまたはLOWの電圧に分解される。もとの移行は少なくとも2サイクルにわたって安定を維持するので、シンクロナイザの分解はランダムであってよく、真の論理値は準安定後の次のサイクルに常に正しくサンプルされる。多くのシステムにおいて、2つよりも多くのD型フリップフロップ(171,172または173,174)をカスケード接続し、準安定出力電圧の可能性を低めてもよく、あるいは、D型フリップフロップ171,172,173,174の代わりに特定のシンクロナイザ要素を用いてもよい。
図15は、valid信号とaccept信号が明確に同期することを示している。in_data信号とin_packet_id信号は同期的にサンプルされ、図15の論理回路の動作により、out_valid信号とout_accept信号がHIGHであり、受信プロトコルレジスタ(図示せず)に転送が行われるときにout_data信号とout_packet_id信号が変化しないことが保証される。
図15のvalid論理とaccept論理によりラッチが形成され、これにより論理的にHIGHである値がシンクロナイザの一方を通過し、他方のシンクロナイザにおいて対応するHIGHの値が受信されるまでこれをLOWにリセットすることはできない。
リセット状態においては、クリティカルノード175および176はLOWであり、177および178はHIGHである。これは回路が静止した状態である。この静止状態においては、主出力out_validはLOWでありin_acceptはHIGHである。すなわち、レジスタが空で開始の準備ができた状態である。out_validがLOWであることは、静止状態においてはout_acceptの状態が問題とならないことを意味している。in_validがHIGHとなり3値(valid, data, packet_id)を入力するときにはじめて次の状態になることができる。ノード177が次のサイクルでin_acceptとともにLOWとなることが状態レジスタ179により保証される。これにより、これ以上の入力データが受け入れられないことが保証される。ノード177のLOWの値は、フリップフロップ171,172を用いて同期され、最終的にはノード178がLOWになる。ノード176および178の双方がLOWになり、out_validがHIGHになる。状態レジスタ180は、転送が行われた時刻、すなわちout_validとout_acceptがともにHIGHとなった時刻を記録する。状態レジスタ180により、転送後の次のサイクルでノード176がHIGHとなることが保証される。ノード176をHIGHとすることにより、データの転送が繰り返されないようにout_validを強制的にLOWとする。ノード176のHIGHの値は、フリップフロップ173,174を用いて同期され、最終的にはノード175がHIGHとなる。
クリティカルノード175および176がHIGHで、177および178はLOWである状態は、転送が完了した休止状態である。この休止状態においては、ノード175をHIGHにすることにより、一連の動作を開始し、ノード177,178,176,175のすべてが最終的にそれぞれの静止状態であるLOW、LOW、HIGH、HIGHに戻る。このとき、in_validがHIGHになると新たな転送が開始される。
図16は、マスタクロックから異なるクロック周波数を構成する方法を示すタイミングチャートである。図16においては、2つの「非同期」周波数in_clkとout_clkが生成されている。これらの周波数は常にmaster_clkよりも低く、マークスペースまたはクロックエッジは必ずしも同一ではない。図16においては、(シーケンスが繰り返されるとして)master_clkの立ち上がりクロックエッジ15個に対して、in_clkとout_clkのそれぞれの立ち上がりクロックエッジが4つ存在する。これは、in_clkとout_clkの周波数はともにmaster_clkの周波数の4/15であることを意味するが、in_clkとout_clkのエッジ位置の差は、これらのクロックが互いに非同期的になっていることを示している。
図16は、本質的に非同期のクロックをマスタ同期クロックから比較的簡単に、またそれぞれの出力クロックに対して任意の周波数分割比をもって生成できることを示している。図16においては、in_clkenは、master_clkの降下エッジでサンプルされ、in_clkを生成するためにmaster_clkとともにAND機能用マスクとして使用される(master_clkに同期する)イネーブル信号である。同様に、out_clkenは、master_clkの降下エッジでサンプルされ、out_clkを生成するためにmaster_clkとともにAND機能用マスクとして使用される(master_clkに同期する)イネーブル信号である。図16で説明したクロック概念図は、擬似非同期クロックとして知られている。
図17は、図8のプロトコルレジスタ実装例110を拡張して3値(valid, data, packet_id)の繰り返しや消失なく入力および出力インタフェイスのそれぞれに対して擬似非同期IN_CLKおよびOUT_CLKを用いるプロトコルレジスタを作成する方法を示している。擬似非同期IN_CLKおよびOUT_CLKは、図16で説明したように、MASTER_CLK、in_clken、およびout_clkenから生成される。IN_CLKと示された陰付の領域には図8の論理回路が再現され、プロトコルレジスタ196が形成されている。陰付の領域内のすべてのD型フリップフロップは、クロックとしてIN_CLKを用いている。MASTER_CLKと示された陰のない領域内の追加の論理回路は、OUT_CLKと示された陰付の領域内に示された出力インタフェイスが正しく形成され、OUT_CLK信号と揃うようにプロトコルが再フォーマットされることを保証する機能を有する。D型フリップフロップ190は、クロックとしてMASTER_CLK信号を用いている。
図17の陰のない領域内の論理回路は、IN_CLKとOUT_CLKが同じ場合に、in_clkenとout_clkenがずっとHIGHであり最も高い周波数となっても、図8の実装例と同一の動作がなされることを保証するように配置されている。この場合における論理回路の動作は分かりやすい。論理ゲート191は常にLOWの値を出力し、D型フリップフロップ190も同様である。したがって、論理ゲート192,193,194はパスモードであり、out_acceptとout_validの状態はプロトコルレジスタ196により直接制御される。
図17においてin_clkenとout_clkenがずっとHIGHではない場合は、陰なし領域のゲートは、out_validと(IN_CLKをクロックとして用いるプロトコルレジスタ196に対するout_acceptである)論理ゲート193の出力とが正しい状態となるように制御される。すなわち、論理ゲート192は、out_validをLOWにすることにより次のin_clkenがまだアクティブになっていないときにout_validを複製する可能性を除去し、論理ゲート193は、ゲート193の出力をHIGHにすることにより次にin_clkenがアクティブにされるまで「out_accept」を拡張し(逃さない)ことを保証する。
ハードウェアオブジェクト
図18は、ハードウェアオブジェクトの機能図を示している。上述したように、ハードウェアオブジェクトは、多数のプロトコルレジスタにより区切られた電気回路を含んでいる。プロトコルレジスタは、上述したレジスタと同じものであってもよい。電気回路の論理的な流れはレジスタの存在によって全く影響を受けず、むしろレジスタは長い信号線を区分することによって電気的負荷をバランスさせるために用いられる。それぞれのハードウェアオブジェクトは、完全にカプセル化されており、他のオブジェクトの状態による影響を受けない。ハードウェアオブジェクトは、メッセージまたはメッセージパケットを送信することにより互いに通信を行う。パケットは、指令またはデータ、あるいはその両方を含んでいてもよい。実施形態によっては、メッセージを用いることによってのみハードウェアオブジェクトの内部状態が調べられ変更される。ハードウェアオブジェクトが指令および適切なデータを受信すると、受信ハードウェアオブジェクトはデータを操作して出力を生成することができる。この出力は他のオブジェクトに送信することができる。
一般に、上述した開発システムにおいては、ハードウェアオブジェクトは中規模のものであり、すなわちANDゲートのような最も簡単な機能ではなく、ハードウェアオブジェクト集合の一般的性質を壊す傾向を有するような過度に複雑な機能でもない。中規模オブジェクトの中には、IO構造、マイクロプロセッサ、RAM、および有限状態機械(FSM)が含まれる。オブジェクトの中には、極めて一般的な用途のものもあれば、一定の機能を有するものもある。オブジェクトは継承可能な従属機能を持っていてもよく、例えば積和(MAC)オブジェクトは用途によって加算器または乗算器として機能する場合がある。
ハードウェアオブジェクト300には、典型的には少なくとも1つの入力プロトコルレジスタ310と出力プロトコルレジスタ310によって「仕切られ」た特殊な中央電気回路304の組が含まれる。図18においては、マルチプルプロトコルレジスタ310が存在している。実際には、プロトコルレジスタ310の存在および/または配置は回路動作に影響を与えないので、オブジェクトの動作機能または動作能力を失うことなく、プロトコルレジスタを持たないハードウェアオブジェクトを有することも可能である。逆に、ハードウェアオブジェクト300は、中央電気回路304の内部と境界部の双方に多数のレジスタを持っていてもよい。プロトコルレジスタ310をどこにでも配置できるので、抵抗型負荷と容量性負荷とをバランスさせる物理的位置を選べば、チップ内に長い信号線が形成されることがない。レジスタの中には最小限のものもあれば、付加的な特徴や性能を有するものもあることからすると、プロトコルレジスタ310は互いに多少異なるものであってもよい。典型的には、プロトコルレジスタは、同時に転送することができるデータ信号の数によって区別される。システム例の中には、いくつかの種類の変化型プロトコルレジスタが含まれる。
ハードウェアオブジェクト300はスタンドアロンであってもよいが、いくつかのハードウェアオブジェクトを連係させることが極めて有益である。図19は、U1〜U9で示される9つのハードウェアオブジェクト300を示している。ハードウェアオブジェクト300のうちの2つU4,U7は独立しており、この例では、ハードウェアオブジェクトと連係していない。多重ハードウェアオブジェクト300を連係させて、好ましくは個々のハードウェアオブジェクトによる能力よりも多くの機能を有する他のハードウェアオブジェクトを作成することができる。図19に示すように、ハードウェアオブジェクトU1,U2,U3,U5は互いに連係され、ハードウェアオブジェクト320が作成されている。ハードウェアオブジェクト320は、単にその構成要素間で内部的な通信を行う特定のスタンドアロン回路として形成してもよいが、本発明の実施形態によれば、個々のハードウェアオブジェクトは他の構成要素と連係されているという理由だけで一般性を失うものではない。逆に、より小さなハードウェアオブジェクトの集合からより強力なハードウェアオブジェクトを作成できることは、ここでの本発明の概念を用いる場合のもう1つの効果である。
また、図19は、ハードウェアオブジェクトU5,U6,U8,U9を連係させることにより構成される他のハードウェアオブジェクト330を示している。機能的な観点からすると、U5がハードウェアオブジェクト320と330の双方に属していることは問題ではない。場合によっては、分離可能なハードウェアでハードウェアオブジェクトU5を構成し、ハードウェアオブジェクト320とハードウェアオブジェクト330の構成要素のそれぞれの機能を独立したハードウェアで動作させることから共有機能が生まれる。また、場合によっては、ハードウェアオブジェクト320とハードウェアオブジェクト330の構成要素の機能が、ハードウェアオブジェクトU5内の共有ハードウェア上で実現されることもある。ハードウェアオブジェクト320およびハードウェアオブジェクト330には、適切な優先度と性能基準によりハードウェアを共有可能とするために時分割機能がなければならない。
図20A〜図20Cは、それぞれ異なる中央電気回路304を有するハードウェアオブジェクト300の例を示す。図20Aは、中央電気回路304に乗算機能を含むハードウェアオブジェクト300を示している。乗算機能は、ハードウェア乗算器によって実現してもよいし、公知の他の方法により実現してもよい。プロトコルレジスタ310は、ハードウェアオブジェクト300と他のオブジェクトとの間の均一なデータインタフェイスを提供する。図20Bは、中央電気回路304にメモリと位相器とを含むハードウェアオブジェクト300を示している。この例においては、メモリと位相器は、プロトコルレジスタ310を介さずに直接相互に通信を行う。中央電気回路304内の通信は、ハードウェアオブジェクトの境界で使用されるプロトコルレジスタに加えて内部プロトコルレジスタ310を用いてもよい。あるいは、中央電気回路304内で他の通信形態を用いることもできる。例えば、図20Bに示すように、メモリと位相器は、ダイレクトバスプロトコルを使って直接相互に通信を行ってもよい。さらに、メモリと位相器は、必要に応じて、シリアルラインを介して通信を行うことができる。実装可能なハードウェアオブジェクトおよび開発システムを組み立てる目的からすれば、ハードウェアオブジェクト300の中央電気回路304内の要素が相互にどのような通信を行うのかということは、比較的重要なことではない。また、図20Bのハードウェアオブジェクト300は、オブジェクト間の通信を容易にするためにプロトコルレジスタ310を含んでいる。
図20Cは、中央電気回路304に他の要素を有するハードウェアオブジェクト300の追加例である。この例においては、レジスタファイルと論理演算装置(ALU)にメモリと状態機械が付加的に連結されている。この例は、中央電気回路304のすべての要素が必ずしも直接相互に通信を行う必要がなく、あらゆる方法またはプロトコルを用いた通信を特定のハードウェアオブジェクト300自身に統合可能であることを示している。
しかしながら、ほとんどすべての場合において、中央電気回路304の「端部」にプロトコルレジスタ310を設けることにより、ハードウェアオブジェクトの集約が容易になり、非常に強力かつ複雑なオブジェクトを作成することができる。
図21は、他のハードウェアオブジェクトと同一の境界によって仕切られている必要のないハードウェアオブジェクトを示している。図21においては、5つのハードウェアオブジェクトが示されている。IC基板上に固定された4つのハードウェアオブジェクトは、342,344,346および348である。オブジェクト350は、オブジェクト342,344および346の要素から構成されている。オブジェクト350は、オブジェクト342および346のすべての要素を含んでいるが、オブジェクト344については一部のみを含んでいる。すなわち、オブジェクト350は、ハードウェアオブジェクト344の中央電気回路304のメモリと一方のALUのみとを用いている。ハードウェアオブジェクト344の中央電気回路304はそれらを内部的にすでに利用しているので、オブジェクト350はプロトコルレジスタ310によって区切られていることに留意されたい。この場合において、オブジェクト350は、ハードウェアオブジェクト344の中央電気回路304の内部にあるプロトコルレジスタ310を使用することができる。オブジェクト344の残ったALUおよびオブジェクト348の全体は、ここでは割り当てられていないが、他のハードウェアオブジェクトを形成するために使用することができる。
オブジェクトは、本発明の好ましい実施形態におけるメッセージパケットを用いて実現することができる非同期メッセージを相互に送信することにより、相互に通信を行う。メッセージパケットは、メッセージの内容または構造を制限するものではなく、メッセージは、データ、指令、アドレス、および/またはメッセージパケット自身の情報を含んでいてもよい。図22は、それぞれのプロトコルレジスタ310の間でメッセージを用いて相互に通信を行う2つのハードウェアオブジェクト360,370を示している。本発明の実施形態は、特定のメッセージフォーマットに影響を与えるものではなく、あるプロトコルにメッセージを従わせることを要求するものでもない。もちろん、システムは、メッセージの送信側と受信側との間の理解を前提として設計されるので、送信側と受信側がメッセージを正しく解釈することができるように構造を形成しなければならない。
図22には、10ワードを含むメッセージ380の例も示されている。この例のメッセージ380は、宛先アドレスまたは「ROUTE LEFT」のような固定コマンドとなり得るルーティングコマンドから始まる。後述するように、ハードウェアオブジェクトのシステムが再構成可能チップにリンクされ固定されたときに、IC基板上のそれぞれのハードウェアオブジェクトに一意のアドレスを割り当ててもよい。メッセージは、この一意のアドレスに基づいて、あるいは例えばステアリングコマンドに基づいて指示される。メッセージ380は、ルーティング情報の後に、そのメッセージに含まれている情報の種類またはそのメッセージの高水準構造を識別するために使用可能なフラグを含んでいる。プロトコルレジスタ310を介して送られたプロトコルに従ったメッセージは、いくつかの異なる種類を表すことができるので、どの種類が使用されているのかを示すためにフラグを用いることができる。フラグは、例えば、データだけを含んでいる、命令を含んでいるなど、メッセージのフォーマットを示していてもよい。さらに、図22のメッセージ380の例は、一連の命令とオペランドおよび受信オブジェクト370により使用される様々なフラグを含んでいる。受信オブジェクトが、送信オブジェクトから受け取った命令およびオペランドの一部または全部を他のオブジェクトに単に渡すだけの場合もある。パススルーメッセージは、第1のオブジェクトがメッセージを、第1のオブジェクトに直接接続されていない他のオブジェクトに送信する場合に使用される。
図23は、多数の基本オブジェクト402,404,406,408,410を含む「メッセージングフォーク」オブジェクト400を示している。単一のデータストリームAがオブジェクト400に入力され、2つの出力A1およびA2が生成される。フォークは、データストリームAに含まれるあらゆるデータまたはオペランドに作用することができる。フォークプリミティブオブジェクト402内において、メッセージストリームAは2つの構成ストリームA1およびA2に分割される。最も基本的な形態においては、フォークオブジェクト402は、データストリームAから単にデータを複製し、2つのストリームA1およびA2を作る。他の実施形態においては、フォークオブジェクト402は、入ってくるストリームを要素ストリームに分解する前にストリームに対して操作を行うことができる。例えば、フォークオブジェクト402は、データストリームA内の数字の混在を許容し、整数のみをストリームA1に、浮動小数点をストリームA2に分割してもよい。フォークオブジェクト400の他の実施形態は、ストリームに操作を行うことなく単にそのストリームを分割することができる。例えば、特定の範囲内のアドレス指定されたすべてのメッセージは出力ストリームA2に入り、他のすべてのメッセージは出力ストリームA1に入るようにできる。このように、多量に入ってくるデータを別々の多数の並列プロセスにより分割することができる。他の種類のフォークは、メッセージパケット内のルーティングコマンドにあたるまでパケットを固定された方向に向け、ルーティングコマンドにあたった時点でそのルーティングコマンドに従うステアリングフォークを含んでいる。2つのデータストリームA1およびA2のみが生成されるものとして図示しているが、多数のフォークオブジェクトをリンクさせてストリームを何個でも生成することができる。
また、図23は、オブジェクト404および406がメッセージストリームA2に作用して、非常に複雑なフォーク機能を生成可能なことを示している。同様に、オブジェクト408および410は、メッセージストリームA1に作用してさらなる機能を生成することができる。5つのオブジェクト402,404,406,408および410により構成されるオブジェクト400の構造の重要性は、メッセージストリームA1およびA2が並行に動作することにある。例えば、ストリームの1つが一時的にブロックされている場合、他のストリームは処理を続行する。
図23は、いずれのストリームの長さを制限するものではない。特に、この例においては、同じ長さの入力メッセージに呼び出されても、出力ストリームB1およびB2を異なる長さにすることが重要なことである。
図24は、2つの入力ストリームを受け入れ、それらを単一のストリームに結合する「ジョイン」オブジェクト420を示している。図23において述べたフォークオブジェクトと同様に、ジョインオブジェクト420は、所望の機能を実現するために必要なほとんどすべての形態をとることができる。共通のジョイン機能は2つの入力メッセージに同期している。この場合において、出力ストリームが生成され始める前に双方の入力メッセージを提示しなければならず、一度生成され始めると、それぞれの入力メッセージの全体が受信されるまで同期プロセスを終了することができない。他の共通機能は、第1の入力メッセージをコピーして出力に至る「代替ジョイン」機能である。一度入力メッセージが受け入れられると、他の入力における他のメッセージはコピーが完了するまで待機する。一般に、「代替ジョイン」機能は、最も以前に使用されたポリシーに従って公平に裁定するが、入力優先順位を固定し、入力メッセージ内でエンコードされた優先順位に対して作用する他の形態が共通して使用される。ジョイン機能およびそのアナログであるフォーク機能は、並列プロセスの出力間での計算順序を生成するためにその機能を使用することができるので、非同期計算システムにおいては非常に有用である。
図24は、ハードウェアオブジェクトを組み合わせることにより複雑なジョイン機能を生成することができることを示している。オブジェクト422と424との間のフィードバック関係429および430により、入力メッセージストリーム431および432の非常に複雑な組み合わせが実現される。同様に、オブジェクト428は、基本ジョインオブジェクト426の出力を後処理し、最終的なジョインオブジェクト420を内部基本ジョインオブジェクト426よりも極めて複雑なものにするために使用することができる。図23と同様に、ジョインオブジェクト420の本質は、その構成要素が独立して動作することにある。
簡単に組み合わせることができるハードウェアオブジェクトを、独立して動作させ、21、図23、および図24で述べたような非同期メッセージを用いて通信を行うことは、最大のシステムパフォーマンスを保証するには必ずしも十分ではない。さらに、上述した異なるプロトコルレジスタの1つを使用することにより、システム内のすべての構成要素オブジェクトが完全に停止するまで(出力できずに有効データで満杯になったとき)、データを処理し続けることが保証される。
上述したハードウェアオブジェクトは、シリコン内または他の基板に直接形成してもよい。図25は、ハードウェアオブジェクト454および455において物理的に形成された多数のインスタンスを有するチップの例450を示している。オブジェクトは、プロトコルレジスタ間でリンクされたデータラインによって相互に接続されている。プロトコルレジスタは、上述した他のプロトコルレジスタの特性を有することができる。入力ピンおよび出力ピン458は、チップ450に対するインタフェイスを提供する。特定の接続プロトコルを実現するようにプログラムされた特殊ハードウェアオブジェクト454を含めることにより、USBやFirewireなどの標準通信プロトコルをチップ450に接続してもよい。
チップ450上に形成されたオブジェクト454および455の特定の組み合わせは、チップ450の用途によって異なる。しかしながら、近代技術によれば、非常に多くの物理オブジェクトがサポートされており、適用範囲を広くすることができる。ハードウェアチップ450上のハードウェアオブジェクトは、比較的簡単に設定および再設定できるので、チップ450を再設定可能標準部、すなわちRSPということができる。RSP上で実現される物理的ハードウェアオブジェクトインスタンスの総数は、100〜100,000以上のオーダである。異なる物理的ハードウェアオブジェクトの総数(この例では2つのみ)は、もっと少なく、例えば10のオーダである。もちろん、ハードウェアオブジェクトの種類または総数は、ここで述べた本発明の概念を逸脱することなく、RSP上に実装することができる。
どのハードウェアオブジェクトをベースRSP上に置くかを選択することにより、特定のRSPを特定の市場向けに最適化することができる。共通の例が、計算ハードウェア用のオンチップメモリ容量とトレードオフの関係に立つ。例えば、加算器、位相器、および乗算器のような多数のコンピュータ物理ハードウェアオブジェクトを有するRSPは、DSP(デジタル信号処理)市場においては有用である。また、より多くのオンチップメモリを有することは、大きなデータセットを格納し、ネットワークパケットをバッファすることの方が純数学上の計算よりも重要とされるネットワークルーティング市場においては有用である。
ソフトウェアオブジェクトs
一度ハードウェアオブジェクトが定義されると、本発明の実施形態によれば、相互接続されたハードウェアオブジェクトの記述を開発することによりシステムを構築することができる。最終的に、この記述は、上述したRSP上にロードされ、非常に一般的なアーキテクチャを使って、完全にプログラムされた非常に具体的なシステムが作られる。一度プログラムされると、RSPシステムが完成し、動作可能な状態となる。
相互接続されたハードウェアオブジェクトのシステムを作成するために、ハードウェアオブジェクト定義についてのソフトウェア記述がオブジェクトライブラリに格納される。ライブラリの例は図26に示されている。この図には、ライブラリオブジェクトA,B,C,Dのコレクションが示されている。ライブラリオブジェクトは、プリミティブオブジェクト記述の定義済みコレクションである。上述した唯一のメッセージプロトコルの存在と各ハードウェアオブジェクトのカプセル化により、ハードウェアオブジェクトのソフトウェアオブジェクト記述をハードウェアオブジェクトに予め組み込むことができる。
本発明において具体化されるソフトウェアオブジェクトに必要な特性には、独立実行性、オブジェクト間の非同期メッセージ通信、カプセル化、およびコンテキストに対する無反応性が含まれる。
独立実行性は、ソフトウェアが実行される基本ハードウェアの動作からそのソフトウェアを除去し、ハードウェアの制約なしに、異なる多くのソフトウェアアーキテクチャを効果的に実現可能とする決定的な品質というべきものである。
非同期メッセージにより、ハードウェアデザインにおける従来のタイミング問題からソフトウェア記述を独立させることができるので、非同期メッセージは重要である。さらに、非同期メッセージは、多くのプロセッササイクルによって定義される「リアルタイム」を持つのではなくて、リアルタイムソフトウェアの機能性をソフトウェアにおいて明示的に定義させる。
カプセル化とコンテキストに対する無反応性により、ソフトウェアオブジェクトは、IC上のハードウェア実装の物理的な位置に関係なく、また特定のICの種類に関係なく、同一の機能および性能を発揮することができる。
・ビルトインカプセル化され、
・コンテキストに対して無反応であり、
・独立して動作し、
・非同期的に通信を行い、
・純粋に再配置可能で、
・どのような寸法にもでき、
・いかようにも複雑にすることができる
ようにハードウェアオブジェクトを構築できれば、オブジェクト指向プラグラミング(OOP)をサポートするソフトウェア記述を使うだけで、ハードウェアオブジェクトに承継、多相性、およびモジュール性を比較的簡単に与えることができる。このように、ハードウェアオブジェクトは、OOPの主役にしっかりと付随するソフトウェア記述を有している。
ハードウェア的観点からのオブジェクトとソフトウェア的観点からのオブジェクトとの間に機能的な差違はない。すべてのハードウェアオブジェクトは、純粋に、オブジェクトライブラリのソフトウェアプリミティブのインスタンシエイションであると考えることができる。すべてのソフトウェアオブジェクトは、純粋に、完全にカプセル化されたハードウェアオブジェクトの記述であると考えることができる。本発明の実施形態においては、ハードウェア的観点およびソフトウェア的観点の間には、完全でかつ立証可能な1対1のマッピングがある。上述した開発システムにおけるハードウェア/ソフトウェア二分法は、プロトコルレジスタと基本ハードウェアオブジェクトのルールと関係に基づく本来のボトムアップ式構造といえる。すべてのソフトウェアの挙動およびハードウェアオブジェクトのすべての具体的なハードウェア情報は、オブジェクト定義の内部に含まれている。これらは、中央に格納され、承継可能なものである。これにより、ハードウェアルールおよび関係を子インスタンスから承継できるため、新しいオブジェクトを作成することができる。
図26は、相互接続された4つのプリミティブオブジェクトから構成されるオブジェクトAを示している。これらのうち3つはプリミティブタイプ#1であり、1つはタイプ#2である。オブジェクトAがライブラリに置かれると、オブジェクト自身はさらなるオブジェクトにより使用可能となる。例えば、オブジェクトAに類似するオブジェクトBは、他のプリミティブオブジェクトのコレクションとしても示されており、オブジェクトDは、オブジェクトAおよびBのみのコレクションであり、直接にはプリミティブオブジェクトをインスタンス化しない。これらの階層関係は、例えば承継のようなすべてのOOP特性を保持する。しかしながら、ライブラリに格納されたソフトウェアオブジェクトは、プリミティブオブジェクトに限定される必要はない。これは、オブジェクトCの定義に示されており、オブジェクトCは、相互に接続された付加的なプリミティブオブジェクトとともに他のライブラリオブジェクトBを含んでいる。
また、ソフトウェアオブジェクト階層が図27に示されており、図27は、ソフトウェアオブジェクト460内に階層的に集められた多数のプリミティブオブジェクトを示している。ソフトウェアオブジェクト462は、単純に1つのプリミティブオブジェクトであり、ソフトウェアオブジェクト464および466はそれぞれ2つと3つのプリミティブオブジェクトから構成されている。新しいレベルの階層と抽象化を定義することにより、ライブラリ用の新しいソフトウェアオブジェクトを作成することができる。具体的なハードウェアルールおよび関係のすべては子から承継されるので、新しいソフトウェアオブジェクト用のハードウェア情報が自動的に生成される。特に、オブジェクトライブラリは、C++、Java、または他のOOP言語により開発することができる。
システム開発
完全なシステムのソフトウェアモデルの一例が図28に示されている。この図は、ハードウェアプリミティブのコレクションと、オブジェクトライブラリのビデオデコーダ部からの予め定義されたソフトウェアオブジェクトとから組み立てられるMPEG2デコーダオブジェクト470を示している。ビデオデコーダライブラリ480は、モーションオブジェクト472と圧縮解除オブジェクト476とともに、個々のプリミティブオブジェクトP1〜P7を含んでいる。モーションオブジェクト472は2つのプリミティブP3およびP5から作成され、圧縮解除オブジェクト474は3つのプリミティブP2,P4,P6から作成される。P6プリミティブは、離散コサイン変換の逆関数(DCT−1)プリミティブオブジェクトである。プリミティブP1およびP7は、入力/出力プリミティブオブジェクトである。デコーダ470を組み立てることには、外部フレームストア476を使用することを含んでいる。実施形態によっては、オフチップメモリを使用して外部フレームストア476がもたらされる。デコーダの実装に関してさらなる詳細を以下に述べる。
図28のソフトウェアモデルは、システムの本来のOOP記述である。オブジェクトは独立して実行され、コードは単純にオブジェクトインスタンスのコレクションである。システムがそのようなソフトウェアモデルを使用して記述されると、システムは、1つのソフトウェアとして実行可能となり、ハードウェアにモデルを効率的にマップするために必要とされる構造的な情報を持つ。
ソフトウェアおよび最終的にはハードウェアオブジェクトのコレクションであるソフトウェアシステムが生成されると、システムはRSP450(図25)上にマップされ、ハードウェア製品を作る。動作においては、システム設計者がシステムモデルを設計するとき、基本の物理的ハードウェアオブジェクトの特性から直接生成されたオブジェクトライブラリから直接特性を使用する。したがって、システム設計者が、所望のシステムを記述するとき、その所望のシステムの特性はすでにビルトインされた基本の物理的ハードウェアオブジェクトの特性を有している。この所望のシステムにおける基本の物理的ハードウェアオブジェクトへの直接的な一致により、RSP上へのマッピングが比較的単純な割り当てプロセスとなる。
マッピングシステムの一例が図29に示されており、図29は、MPEG2デコーダとなるようにプログラムされたシステムチップ480を生成するために図25のRSP450上にマップされた図28のMPEG2デコーダオブジェクト470を示している。デコーダオブジェクト470のプリミティブオブジェクトP1〜P7のそれぞれは、RSP450のハードウェアオブジェクト454および455のうちの1つに割り当てられる。プリミティブオブジェクトP1〜P9となるように構成されるときの基本となる物理的ハードウェアオブジェクト454および455の特性は、オブジェクトライブラリ480(図28)からデコーダ470を開発するために使用される特性と同一である。デコーダ470のオブジェクトP1と、RSP450上に「1」と付されたプログラム済み物理的ハードウェアオブジェクト454とは、ともに入力オブジェクトであり、システムに対する入力メッセージを受け入れる。同様に、オブジェクトP7と、「7」と付されたプログラム済み物理的オブジェクト455とは、出力オブジェクトであり、デコードされたビデオを伝送する。
圧縮解除オブジェクト474を構成するプリミティブオブジェクトP2,P4,P6は、RSP450上にそれぞれ「2」「4」「6」と付された3つの物理的ハードウェアオブジェクトに直接マップされる。圧縮解除オブジェクト474の階層特性は、陰付領域474で示されるように、RSP450上に維持される。同様に、モーションオブジェクト472を構成するプリミティブオブジェクトP3およびP5は、「3」および「5」とそれぞれ付された2つの物理的ハードウェアオブジェクトに直接マップされる。モーションオブジェクト472の階層特性は、陰付領域472に示されるように、RSP450上に維持される。
この例における図28のフレームストア476は、ソフトウェアモデルにおけるオフチップとしてマークされており、RSP450上にはマップされずに、「フレームストアへ/フレームストアから」とマークされたインタフェイス信号を生成する。
RSP450上の物理的ハードウェアオブジェクト454および455のすべてが、それぞれのシステム実装のために使用されるわけではない。確かに多くの物理的ハードウェアオブジェクトは使用されない。使用されない物理的ハードウェアオブジェクトは電源を切ってもよいし、電力を節約するために非常に低いクロック周波数で動作するようにセットしてもよい。
上述したように、ハードウェアオブジェクトは、ソフトウェアオブジェクト記述、機能、および特性を本質的に含んでいる。さらに、ハードウェアオブジェクトには、特性についての追加の要件がある。すなわち、ハードウェアに所望の機能を発揮させる構成バイナリプログラムと、必要とされる量のハードウェア資源と、ハードウェアがどのように接続されるかを支配する接続ルールである。本発明の一実施形態においては、基本となる物理的ハードウェアオブジェクトの考えられる1つのトポロジについて、たった1つのバージョンのオブジェクトが存在する。他の実施形態においては、多くの異なるトポロジと、(オブジェクトに付けられた構成バイナリを使用して)オブジェクトを生成するようにプログラム可能な基本となる物理的ハードウェアオブジェクトの混合物とが存在する。後者の場合、オブジェクトは異なる具体的形態を有している。
オブジェクトの具体的形態は、ビルトインされたソフトウェアオブジェクトとまさに同一であるが、それぞれの具体的形態は、特定の具体的形態を選ぶユーザによって交換され得る異なる性能と資源利用を生成する異なるハードウェアトポロジと混合物を有している。
図30は、1つのソフトウェアオブジェクトの具体的形態に付けることができる付加的情報を示している。ソフトウェアオブジェクト490が示されているが、これは、あらゆるタイプのオブジェクト記述、例えば図28のデコーダ470となり得るものである。ソフトウェアオブジェクト490を開発する際、物理的ハードウェアオブジェクトのトポロジが選ばれ、接続ルールが生成される。接続ルールは、特定の性能目標を満足するのにトポロジが許容する最大および最小遅れを特定し、プリミティブオブジェクトがRSP450のハードウェア上に直接マップされるときに満足されなければならない。上記ハードウェアオブジェクトを参照して述べたように、各ハードウェアオブジェクトに関連づけられるプロトコルレジスタの数には実際上限界がある。したがって、各ハードウェアオブジェクトに対する相互接続のレベルにもこれに対応して限界がある。すなわち、RSP450上の各ハードウェアオブジェクトが、ソフトウェアオブジェクトにおいて使用される他のハードウェアオブジェクトに直接接続されることは不可能であると考えられる。このため、(例えば、性能要求を満たすために)互いに近接しなければならないオブジェクトが接続可能となり、直接接続される必要のないオブジェクトが接続される必要のないことが保証されるように、接続ルール492のリストが使用される。図30の接続ルール492のリストを参照すると、A.dとA.d(2つのハードウェアオブジェクトのポートを「d」とする)との間のリンクが直接接続されなければならない、すなわち、ちょうど1ホップの接続長を持たなければならないことを示している。他のオブジェクトは、直接相互に接続される必要はなく、それぞれ3接続分または7接続分まで離れていてもよい。実際、直接接続されていないハードウェアオブジェクトが互いに通信する必要が生じると、それらのハードウェアオブジェクトは、アドレス付メッセージやルーティングコマンドを所望のハードウェアオブジェクトに送信する。
リソースリスト494は、ソフトウェアオブジェクトの具体的態様のトポロジを形成するRSP450上の物理的ハードウェアオブジェクトの数と種類を示している。システムの設計の際は、RSP450上の利用可能なリソースを追跡するデザインルールチェッカーを使用することができ、設計時にシステム設計者が物理的に利用可能なリソース数を超えてしまうことを防止する。
接続ルール492およびリソースリスト494は、承継を用いるソフトウェアオブジェクトにおける子プリミティブから簡単に推測することができる。プリミティブオブジェクトだけが定義されたトポロジを持っている。
バイナリリスト496は、物理的ハードウェアオブジェクト内の命令メモリまたは構成レジスタにロードされ、特定の物理的ハードウェアオブジェクトのすべき動作を制御するマイクロコードまたはマイクロ命令のリストである。例えば、ハードウェアオブジェクトが初期化されたときに、最初に読み込まれた命令がハードウェアオブジェクトに対して行う最初の所望の命令となるように、マイクロコードを命令順に格納することができる。
システムソフトウェアオブジェクトモデルは、RSP450上のハードウェアオブジェクトと同一構造であるので、設定されたRSP450はシステムモデルにおいてシミュレートされたのと全く同じように動作する。
実際には、バイナリリスト496は、典型的には、EEPROMのような何らかのメモリや他の種類のROM、あるいはRSP450上またはRSP450外に設けられた他の種類のメモリに格納される。RSPの電源が入ると、まず、初期化プロセスによりすべてのハードウェアオブジェクトが初期状態に初期化される。リセットにより自動的に初期命令をロードする機能を有するように1つの物理的ハードウェアオブジェクトを構成してもよい。その後、初期命令が実行され、トップレベルのバイナリリスト496がRSP450にロードされる。バイナリリストは、上述したメッセージパケットプロトコルを用いて個々のハードウェアオブジェクトに配布することができる。バイナリの最初の部分が個々のオブジェクトにロードされると、オブジェクトは動作を開始でき、最初の入力データを待つ。
完全にプログラムされたシステムを作成するために使用されるプロセスを説明するためのフローチャートが図31に示されている。フロー500は、まず、プロセス510において、問題をその構成要素に分割する。次に、プロセス520において、ライブラリオブジェクトが設計システムにインポートされる。設計が進むにつれ、判断530において、設計者はライブラリ内に正しいソフトウェアオブジェクトが存在するかを決定する。必要なオブジェクトが存在しない場合、例えば、オブジェクトがまだ存在しない、または、新しい性能の具体的形態が必要である場合には、プロセス532において、設計者はそれらを生成することができ、ライブラリ内に新たに生成されたオブジェクトを格納する。デザインが完成し、必要なオブジェクトのすべてがライブラリに含められた後、そのデザインがプロセス540においてテストされる。プロセス5510において、そのデザインがチェックされる。デザインがデザインテストを通過しない場合、例えば接続ルールを満足しない場合には、フロー500はループバックし、新しいオブジェクトの具体的形態が生成され、デザインがテストされる。デザインが完成すると、プロセス560において、上述したように、RSP450からのハードウェア制約条件のリストが、プログラムされたRSP上にマップされるデザインの特徴に合わされる。
本発明の実施形態は、RSP450上のハードウェアオブジェクトのコレクションが大量の並列処理を非同期的に実行するので、データスループットの高い利用に特に適している。これにより、複雑なアルゴリズムを用いた大量のデータを操作する非常に大きなシステムに対して非常に大きな可能性が生じる。特に適した利用例としては、例えば、ビデオエンコーディング用の動作推定、高精細度ビデオエンコーディング処理、レーザライター用のラスタアルゴリズム、高速無線ネットワーク用のアクセラレータ、高度セキュア暗号化、記憶領域ネットワーク、HDTVビデオスケーリング、802.13、802.11g、および他の無線プロトコル用のFEC、SNORT不正侵入検知、ディスプレイレート変化に対する一時的なビデオ補間がある。
本発明の実施形態の主要な態様は、高性能の集積回路を作り、ソフトウェアのみを用いてそれらを変更することが本来的にできる完全性にある。完全性とは、ソフトウェア記述を使用するだけでソフトウェア−ハードウェアにおけるコデザイン上の問題が解決されることを意味している。
本発明の実施形態を用いれば、ソフトウェアとハードウェアの観点およびその実装が、1つで同一のものとなる。これにより、開発システムのユーザは、標準的なツールと言語を用いてプログラムを書くことができ、付随する性能上の利益をすべて享受しつつ、ハードウェア内でそれらを直接実行することができる。
本発明の実施形態のユーザは、ハードウェアについての知識や専門技術を有する必要がない。そのようなユーザは、単にソフトウェアを書き、操作することで、今日、オーダメードのICによってのみ実現される非常に高性能なシステムと同様に複雑なシステムを作ることができる。システムがソフトウェア内で定義されると、既存の物理的ハードウェアオブジェクトのコレクションとともに作られる汎用ICを設定するためにそのソフトウェア定義が使用される。オブジェクトのソフトウェアライブラリと結びつけられた唯一の汎用チップであるRSPの組み合わせにより、ユーザは、簡単には設計することができなかったシステムを、現状のツールを使用して効率良く迅速に設計し、テストすることが可能となる。
実装例
図32、図33、図34、および図35は、簡単なオブジェクトを使って比較的複雑なオブジェクトを作る方法の例を示している。このオブジェクト例は、2つのストリームをたたみ込みフィルタされた2つのストリームを生成するものである。時間領域におけるたたみ込みは、周波数領域における乗算と等価であり、無線通信システムにおけるように多重フィルタがカスケード接続される用途において用いられる。設計の目標は、同じ値を同時に多くの構成オブジェクトに送る広範囲接続を介せず、複数のハードウェア乗算器をビジー状態にすることができるように、たたみ込みオブジェクトを生成することである。
図32は、たたみ込みプリミティブオブジェクトを示している。(ui、wi、およびyiで示される)3つの入力ポートと(wi+1、ui+1、およびyi+1で示される)3つの出力ポートを構成する6つのプロトコルレジスタがある。ハードウェアオブジェクト内の電気回路は、1つのハードウェア乗算器と1つの加算器である。ハードウェアオブジェクト内の接続は、次の動作を行うように設定されている。
Figure 2007526539
また、図32は、入力および出力ポートと「CP」と付されたプリミティブを示すオブジェクトの概略図を示している。
図33は、図32のたたみ込みプリミティブオブジェクト用の擬似コードを示している。ポートは、CHANNEL型のINPORT接続またはOUTPORT接続として宣言されている。ローカル変数ui、wi、およびyiは整数型として宣言されている。この処理における1行目のコードは、チャンネルaとチャンネルbのジョイン機能である。ジョイン機能は、チャンネルaとbの双方が有効な入力を持つまで完了しない。チャンネルaで受信した値は変数uiに割り当てられ、チャンネルbで受信した値は変数wiに割り当てられる。次の2行は、uiとwiを出力チャンネルdとeにそれぞれコピーしている。「c→yi」という行は、乗算器ハードウェアの出力を有する他のジョイン機能と等価であり、「join(a→ui,b→wi,cy→i)」を用いることにより1行目に組み込むことができたものである。しかしながら、図33に示されるように2つに分けることにより、チャンネルcの入力がまだ生じていなくても乗算器ハードウェアを続けさせることができる。最終行は、値ui*wi+yiがチャンネルfに出力されることを示している。
図34は、この例において使用される他のプリミティブオブジェクトを示している。(uiおよびwiで示される)2つの入力ポートと(wi+1、ui+1、およびyi+1で示される)3つの出力ポートとを構成する(利用可能な6つのうちの)5つのプロトコルレジスタがある。ハードウェアオブジェクト内の電気回路は、唯一のハードウェア乗算器である。ハードウェアオブジェクト内の接続は、次の動作を行うように設定されている。
Figure 2007526539
また、図34は、入力および出力ポートと「乗算」の略号として「X」と付されたプリミティブを示すオブジェクトの概略図を示している。
図35は、図32および図34における2つのプリミティブオブジェクトをトポロジ内で組み合わせ、たたみ込みオブジェクトを生成する方法を示している。すべての接続は、配線を簡単にするポイント−ポイントであり続け、これにより、広範囲の配線の接続ではなく、プリミティブオブジェクトが性能に影響を与えることが可能となることに留意されたい。
たたみ込みオブジェクトの関数は以下の式によって与えられる。
Figure 2007526539
図35の例においては、簡単にするため、i>3においては、w(i)とu(i)がゼロであるとしているが、実際のストリーミングシステムにおいては、最初の4つよりも多くの入力値を使用することができる。級数展開すれば、それぞれの出力項は以下の式により与えられる。
Figure 2007526539
図35のトポロジがこれらの項を正しく生成することを示すために、まず、出力y(0)を調べる。出力y(0)は、プリミティブオブジェクト600のyi+1出力によって生成され、必要に応じて単にu(0)*w(0)となる。次に、出力y(1)を調べる。出力y(1)は、プリミティブオブジェクト601のyi+1出力によって生成され、以下のような関数である。
Figure 2007526539

上記式において、上付文字は、出力を生成する特定のオブジェクトを示している。オブジェクト600とオブジェクト602は以下のように動作する。
Figure 2007526539

最後の4つの式を組み合わせると以下のようになる。
Figure 2007526539

このガウス消去法のプロセスが残りの出力y(2)...y(6)に対して続けられる。
上述したシステムの実装は、上記開示の内容から作り出すことが容易なものである。例のごとく、実装の詳細はシステム設計者に任されている。特定のハードウェアオブジェクト、プロトコルレジスタ、メッセージのフォーマットなどの個々の選択は、実装の仕様であり、経験的に発見しなければならない場合もある。本発明は、システムの設計および実装において、現在の方法と比較して先駆的なパラダイムシフトを提示するものである。
これまでハードウェアおよびソフトウェアオブジェクトを含む集積回路開発システムの特定の実施形態について述べてきたが、そのような具体的な言及が本発明の範囲に対する制限と考えられることを意図しているものではなく、本発明の範囲はクレームおよびその均等物によって決定されるべきものである。
図1Aは、ASICを設計するために使用される典型的なプロセスを示すブロック図である。 図1Bは、FPGAを設計するために使用される典型的なプロセスを示すブロック図である。 図2は、データ転送プロトコルを示すタイミングチャートである。 図3は、データレジスタを抽象的に示すブロック図である。 図4は、本発明の実施形態に係るプロトコルレジスタを抽象的に示すブロック図である。 図5は、組み合わせ論理回路を含むプロトコルレジスタブロック図である。 図6A〜図6Eは、一連のプロトコルレジスタにより形成されるデータパイプラインの挙動を示すブロック図である。 図7は、本発明の他の実施形態に係るプロトコルレジスタのブロック図である。 図8は、本発明の実施形態に係るプロトコルレジスタの模式図である。 図9は、図8のプロトコルレジスタの状態遷移図である。 図10は、無効データメンバを示すデータパケットの2つのブロック図を示す。 図11は、2つのデータパケットの組み合わせ方法を示す。 図12は、従来のFIFO要素を本発明に組み込む方法を示すブロック図である。 図13は、プロトコルレジスタを用いてハードウェアオブジェクトを構築する方法を示すブロック図である。 図14は、フォーク、ジョイン、およびプロトコルレジスタの等価組み合わせを示す模式図である。 図15は、プロトコルレジスタの非同期実装を示す模式図である。 図16は、擬似非同期クロックの生成を示すタイミングチャートである。 図17は、プロトコルレジスタの擬似非同期実装を示すブロック図である。 図18は、ハードウェアオブジェクトの一例のブロック図である。 図19は、既存のハードウェアオブジェクトからハードウェアオブジェクトを定義する方法を示すブロック図である。 図20A〜図20Cは、異なる種類のハードウェアオブジェクトを示すブロック図である。 図21は、他の種類のハードウェアオブジェクトを示すブロック図である。 図22は、ハードウェアオブジェクトがメッセージを用いて互いに通信を行う方法を示すブロック図である。 図23は、メッセージフォークオブジェクトを示すブロック図である。 図24は、メッセージジョインオブジェクトを示すブロック図である。 図25は、物理的に形成された多数のハードウェアオブジェクトを有する再設定可能チップの例を示す。 図26は、開発システム用の再設定可能チップと連係して用いられるオブジェクトライブラリを示すブロック図である。 図27は、ソフトウェアオブジェクトの階層を示すブロック図である。 図28は、ハードウェアシステムのソフトウェアモデルを示すブロック図である。 図29は、ソフトウェアオブジェクトを再設定可能チップ上にマップする方法を示すブロック図である。 図30は、それぞれのソフトウェアオブジェクトシステムに付けることのできる付加情報を示すブロック図である。 図31は、再設定可能チップ上への実装用ソフトウェアシステムを開発する場合に用いられるプロセスを示すフロー図である。 図32は、本発明の実施形態を用いて作成することができるシステムの一例を示す図である。 図33は、本発明の実施形態を用いて作成することができるシステムの一例を示す図である。 図34は、本発明の実施形態を用いて作成することができるシステムの一例を示す図である。 図35は、本発明の実施形態を用いて作成することができるシステムの一例を示す図である。

Claims (80)

  1. データセットと、前記格納されたデータセットの有効性を示す信号と、前記格納されたデータセットのグループ内における前のデータセットと次のデータセットに対するメンバシップを示す信号とを格納する複数の第1の記憶素子と、
    前記記憶素子内の値を前記次のデータセットに置換できることを示す更新入力信号と、
    を備えた、チップ上のハードウェアレジスタ。
  2. データコピーセットと、前記格納されたデータコピーセットの有効性を示す信号と、前記データコピーセットのグループ内における他のデータセットに対するメンバシップを示す信号とを格納する複数の第2の記憶素子と、
    前記入力信号を記憶し、前記更新入力信号から1サイクル分遅れた更新出力信号を生成するように構成された付加的記憶素子と、
    第1の信号を生成し、前記更新出力信号がアクティブであるときに、新しいデータコピーセットと、前記グループ内におけるメンバシップを示す新しい信号と、前記新しいデータコピーセットの有効性を示す新しい信号とを前記複数の第2の記憶素子にロードするように構成された1以上の第1の論理素子セットと、
    第2の信号を生成し、前記更新入力信号がアクティブであり、前記更新出力信号が非アクティブであるときに、前記複数の第2の記憶素子に現在記憶されている前記データコピーセットを前記第1の記憶素子にロードするように構成された1以上の第2の論理素子セットと、
    をさらに備えた、請求項1のハードウェアレジスタ。
  3. 前記複数の第1および第2の記憶素子は、エッジでトリガされるフリップフロップである、請求項1のハードウェアレジスタ。
  4. 前記第1の論理素子セットは、
    前記データコピーセットのグループ内における他のデータセットに対するメンバシップを表す信号を否定演算した信号に結合された第1の入力と、
    前記更新出力信号に結合された第2の入力と、
    出力と、
    を有するOR機能である、請求項1のハードウェアレジスタ。
  5. 複数の第2のレジスタの出力に結合された第1の入力と、
    前記ハードウェアレジスタの主出力に結合された第2の入力と、
    複数の第1のレジスタの入力に結合された出力と、
    ORゲートの出力に結合された入力と、
    を有する多重化装置をさらに備えた、請求項4のハードウェアレジスタ。
  6. 前記格納されたデータセットのグループ内における他のデータセットに対するメンバシップを示す信号を否定演算した信号に結合された第1の入力と、
    前記更新入力信号に結合された第2の入力と、
    出力と、
    を有するOR機能をさらに備えた、請求項2のハードウェアレジスタ。
  7. 前記出力は前記付加的記憶素子の入力に結合されている、請求項6のハードウェアレジスタ。
  8. 前記出力は前記複数の第1の記憶素子のイネーブル入力に結合されている、請求項6のハードウェアレジスタ。
  9. データの有効性を示し、グループのメンバであるデータの位置を示すデータを第1および第2の記憶素子セットに並行にロードし、
    プロトコルレジスタの出力に接続された受信オブジェクトのデータ受け入れ能力を示す第1のaccept信号を受信し、
    前記第1のaccept信号の後に受信され、前記受信オブジェクトのデータ受け入れ能力を示す第2のaccept信号を受信し、
    前記第1のaccept信号と前記第2のaccept信号とを比較し、
    前記第1のaccept信号と前記第2のaccept信号の双方が非アクティブであるときに、両方の記憶素子セット内のデータを保持し、
    前記第1のaccept信号と前記第2のaccept信号の双方がアクティブであるときに、新しいデータを前記第1および第2の記憶素子セットに並行にロードし、
    前記第1のaccept信号が非アクティブであり、前記第2のaccept信号がアクティブであるときに、前記第1の記憶素子セットから前記第2の記憶素子セットにデータをロードし、
    前記第1のaccept信号がアクティブであり、前記第2のaccept信号が非アクティブであるときに、前記第2の記憶素子セット内のデータセットを保持し、新しいデータセットを第1の記憶素子セットにロードする、プロトコルレジスタの実行方法。
  10. 現在前記第2の記憶素子セット内に記憶されているデータが無効であることを信号が示しているときに、前記第2の記憶素子セットに常に新しいデータをロードする、請求項9の方法。
  11. 現在前記第1の記憶素子セット内に記憶されているデータが無効であることを信号が示しているときに、前記第1の記憶素子セットに常に新しいデータをロードする、請求項10の方法。
  12. 現在前記第1の記憶素子セット内に記憶されているデータが無効であることを信号が示しているときに、前記第1の記憶素子セットに常に新しいデータをロードする、請求項9の方法。
  13. グループ内のdata信号のメンバシップを示すグループインジケータと、前記グループ内のdata信号の相対位置とを含む複数のdata信号と、
    前記data信号の有効性を示すvalid信号と、
    前記複数のdata信号とvalid信号を新しい複数のdata信号に置換できることを示すaccept信号と、
    を備えた、データインタフェイスプロトコル。
  14. 前記accept信号が非アクティブであり、前記valid信号が非アクティブであるときに、前記data信号とvalid信号をさらに置換できる、請求項13のデータインタフェイスプロトコル。
  15. 前記グループインジケータは単一のパケット識別子信号である、請求項13のデータインタフェイスプロトコル。
  16. 前記パケット識別子信号は、データセットのグループの最終要素でのみ非アクティブにされる、請求項15のデータインタフェイスプロトコル。
  17. 次のデータセットのグループにおける最初の要素は、非アクティブ状態からアクティブ状態に遷移した前記パケット識別子信号により決定できる、請求項15のデータインタフェイスプロトコル。
  18. グループ内のdata信号のメンバシップを示すグループインジケータと前記グループ内のdata信号の相対位置とを含む複数のdata信号と、前記data信号の有効性を示すvalid信号と、前記複数のdata信号と前記valid信号を新しい複数のdata信号に置換できることを示すaccept信号とを格納するレジスタを含む入力インタフェイスを備えた、データパイプライン要素。
  19. 出力インタフェイスをさらに備えた、請求項18のデータパイプライン要素。
  20. 順番に接続された請求項18の複数のパイプライン要素を備え、伝送中の複数のデータセット値を保持可能なデータパイプラインであって、
    伝送中のすべてのデータセットのすべてのvalid信号が非アクティブである場合に前記パイプラインは論理的に空とされ、
    伝送中のすべてのデータセットのすべてのvalid信号がアクティブである場合に前記パイプラインは満杯とされ、
    前記パイプラインが満杯である場合にのみ前記パイプラインに対する入力インタフェイスaccept信号が非アクティブとなる、データパイプライン。
  21. 第1のグループ内の第1のdata信号のメンバシップを示すグループインジケータと前記第1のグループ内の第1のdata信号の相対位置とを含む複数の第1のdata信号と、前記第1のdata信号の有効性を示すvalid信号と、前記複数の第1のdata信号と前記valid信号を新しい複数の第1のdata信号に置換できることを示すaccept信号とを格納する第1のレジスタを含む第1の入力インタフェイスと、
    第2のグループ内の第2のdata信号のメンバシップを示すグループインジケータと前記第2のグループ内の第2のdata信号の相対位置とを含む複数の第2のdata信号と、前記第2のdata信号の有効性を示すvalid信号と、前記複数の第2のdata信号と前記valid信号を新しい複数の第2のdata信号に置換できることを示すaccept信号とを格納する第2のレジスタを含む第2の入力インタフェイスと、
    出力インタフェイスと、
    前記入力インタフェイスと前記出力インタフェイスとに結合され、前記第1の入力インタフェイスと前記第2の入力インタフェイスのいずれか、または前記第1および第2の入力インタフェイスの双方から受信した完全なデータグループに対してのみ動作するように構成されたジョイン回路と、
    を備えた、ジョイン要素。
  22. 前記ジョイン回路は、前記第1の入力インタフェイスのデータグループと前記第2の入力インタフェイスのデータグループの2つ1組の組み合わせに対して機能するように構成されている、請求項21のジョイン要素。
  23. 前記ジョイン回路は、前記第1の入力インタフェイス上のデータグループから先頭データ要素を受信し、前記第2の第2の入力インタフェイス上のデータグループから先頭データ要素を受信した後に前記組み合わせを始めるように構成されている、請求項22のジョイン要素。
  24. 前記ジョイン回路は、第1の入力インタフェイス上のデータグループから最終データ要素を受信し、前記第2の入力インタフェイス上のデータグループから最終データ要素を受信した後にのみ前記組み合わせを完了するように構成されている、請求項22のジョイン要素。
  25. 前記ジョイン回路は、前記第1の入力インタフェイス上のデータグループおよび前記第2の入力インタフェイス上のデータグループに対して選択機能を行うように構成されている、請求項21のジョイン要素。
  26. 前記ジョイン回路は、先に先頭データ要素を提示した方の入力インタフェイスからデータグループを選択するように構成されている、請求項25のジョイン要素。
  27. 前記ジョイン回路は、選択された入力インタフェイス上の最終データ要素を受信した後にのみ新たな選択を行うように構成されている、請求項25のジョイン要素。
  28. 前記第1および第2の入力インタフェイスの双方は同時に先頭データ要素を提示し、前記ジョイン回路は前記選択を裁定するように構成されている、請求項26のジョイン要素。
  29. 前記ジョイン回路は、最も以前に使用された入力インタフェイスを選択するように構成されている、請求項28のジョイン要素。
  30. 前記ジョイン回路は、ランダムに入力インタフェイスを選択するように構成されている、請求項28のジョイン要素。
  31. 前記ジョイン回路は、優先順位に基づいて入力インタフェイスを選択するように構成されている、請求項28のジョイン要素。
  32. グループ内のdata信号のメンバシップを示すグループインジケータと前記グループ内のdata信号の相対位置とを含む複数のdata信号と、前記data信号の有効性を示すvalid信号と、前記複数のdata信号と前記valid信号を新しい複数のdata信号に置換できることを示すaccept信号とを格納するレジスタを含む入力インタフェイスと、
    前記入力インタフェイスに結合され、前記入力インタフェイスから受信した完全なデータグループに対してのみ動作するように構成されたフォーク回路セットと、
    第1の出力インタフェイスと、
    第2の出力インタフェイスと、
    を備えた、フォーク要素。
  33. 前記フォーク回路は、前記入力インタフェイス上のデータグループを複製し、該複製されたグループを前記第1の出力インタフェイスおよび前記第2の出力インタフェイスに送信するように構成されている、請求項32のフォーク要素。
  34. 前記フォーク回路は、前記入力インタフェイス上のグループの先頭data信号を受信した後に複製を開始するように構成されている、請求項33のフォーク要素。
  35. 前記フォーク回路は、前記第1の出力インタフェイス上のグループの最終data信号を送信し、前記第2の出力インタフェイス上のグループの最終data信号を送信した後に複製を終了するように構成されている、請求項33のフォーク要素。
  36. 一度に1ワードのデータストリームを受け入れるデータインタフェイスであって、
    前記データインタフェイスに結合された前段から、メッセージパケット識別子を含む1以上のデータを同時にデータワードとして受け入れる入力と、
    前記受け入れられたデータワードの有効性の表示を受け入れる入力と、
    前記データインタフェイスに結合された後段が前記データインタフェイスから転送されたデータワードを受け入れ可能であることの表示を受け入れる入力と、
    前記後段がデータワードを受け入れ可能であるか、または前記受け入れられたデータワードが有効ではない場合に、前記データインタフェイスに次のデータワードを前記前段からロードさせるように構成されたロード回路と、
    前記メッセージパケット識別子から新しいメッセージパケットの開始を検出するように構成されたパケット検出回路と、
    を備えた、データインタフェイス。
  37. 前記パケット検出回路は、1番目のデータワードのメッセージパケット識別子および2番目のデータワードのメッセージパケット識別子におけるデータ遷移状態を検出するように構成されている、請求項36のデータインタフェイス。
  38. 前記パケット検出回路は、非アクティブなメッセージパケット識別子をメッセージパケットにおける最終データワードであると認定するように構成されている、請求項36のデータインタフェイス。
  39. 前記パケット検出回路は、メッセージパケットにおける最終ワードに続くアクティブなメッセージパケット識別子を次のメッセージパケットの先頭ワードであると認定するように構成されている、請求項38のデータインタフェイス。
  40. 送信オブジェクトに結合され前記送信オブジェクトからの情報に関係なく入力accept信号を生成し、前記送信オブジェクトから1以上のメッセージパケットを受け入れるように構成された入力インタフェイスと、
    前記入力インタフェイスに結合され、メッセージパケット内のデータセットを受信した後にのみ状態を変化するように構成されたオブジェクトコアと、
    前記コアと受信オブジェクトとの間に結合され、前記受信オブジェクトからの情報に関係なくvalidデータ信号を生成し、1以上のメッセージパケットを前記受信オブジェクトに送信するように構成された出力インタフェイスと、
    を備えた、基板上のハードウェアオブジェクト。
  41. 前記受信オブジェクトに送信された1以上のデータパケットは、前記送信オブジェクトから受け入れられた1以上のメッセージパケットと同一のものである、請求項40のハードウェアオブジェクト。
  42. 前記送信オブジェクトからのメッセージパケットの1つは、データと、前記データの有効性を示す信号と、メッセージパケット内のメンバシップと前記メッセージパケット内の相対位置とを示す信号とを含む、請求項40のハードウェアオブジェクト。
  43. 前記メッセージパケットは複数のデータセットを含む、請求項40のハードウェアオブジェクト。
  44. 前記オブジェクトコアは、前記オブジェクトコアのクロックに同期しないメッセージパケットを受信するように構成されている、請求項40のハードウェアオブジェクト。
  45. 前記オブジェクトコアは、受信オブジェクトのクロックに同期しないメッセージパケットを送信するように構成されている、請求項40のハードウェアオブジェクト。
  46. 前記オブジェクトコアは、
    第1の情報に作用するように構成された第1のコア部と、
    前記第1のコア部に結合された内部プロトコルインタフェイスと、
    前記内部プロトコルインタフェイスに結合され、第2の情報に作用するように構成された第2のコア部と、
    を備えた、請求項40のハードウェアオブジェクト。
  47. 前記プロトコルインタフェイスは、前記入力インタフェイスと同一の構造である、請求項46のハードウェアオブジェクト。
  48. 前記内部プロトコルインタフェイスは、前記ハードウェアオブジェクトに対する第2の入力インタフェイスとなるように構成可能である、請求項47のハードウェアオブジェクト。
  49. 前記プロトコルインタフェイスは、前記出力インタフェイスと同一の構造である、請求項46のハードウェアオブジェクト。
  50. 前記内部プロトコルインタフェイスは、前記ハードウェアオブジェクトに対する第2の出力インタフェイスとなるように構成可能である、請求項49のハードウェアオブジェクト。
  51. 基板上に形成された第1のハードウェアオブジェクトと、
    前記基板上に形成された第2のハードウェアオブジェクトと、
    前記第1および第2のハードウェアオブジェクトの間に結合され、メッセージデータを格納する第1のデータレジスタと、有効性信号を格納する第2のデータレジスタと、パケットメンバシップ信号を格納する第3のデータレジスタとを含むプロトコルレジスタと、
    を備えた、システム。
  52. 前記第1のハードウェアオブジェクトは前記プロトコルレジスタを含む、請求項51のシステム。
  53. 前記プロトコルレジスタは、前記第1のハードウェアオブジェクトおよび前記第2のハードウェアオブジェクトから分離されている、請求項51のシステム。
  54. 前記プロトコルレジスタは、前記プロトコルレジスタがデータを受け入れ可能であることを示すaccept信号を前記第1のハードウェアオブジェクトに通過させる、請求項51のシステム。
  55. 前記accept信号は、前記第2のハードウェアオブジェクトによって生成される、請求項54のシステム。
  56. 前記accept信号は、前記プロトコルが非アクティブvalid信号を受信した後に前記プロトコルレジスタによって生成される、請求項54のシステム。
  57. 非同期メッセージを受信することによって呼び出し可能な方法を有し、設定されたハードウェアオブジェクトにより実行されるソフトウェアオブジェクトにおいて、
    前記ハードウェアオブジェクトは、
    ソフトウェア方法インタフェイスを実現するプロトコルレジスタと、
    前記プロトコルレジスタに結合され、メッセージパケットにおけるデータセットを受信した後にのみ状態を変化するように構成され、前記ソフトウェアオブジェクトのすべての方法を実行するように構成されたオブジェクトコアと、
    を備えた、ソフトウェアオブジェクト。
  58. それぞれ別個のソフトウェア方法インタフェイスを実現する1以上のプロトコルレジスタをさらに備えた、請求項57のハードウェアオブジェクト。
  59. 前記オブジェクトコアは、前記1以上のプロトコルレジスタに結合され、ソフトウェア方法を並行して実行するように構成されている、請求項58のハードウェアオブジェクト。
  60. 前記オブジェクトコアは1以上の内部プロトコルレジスタを備えた、請求項57のハードウェアオブジェクト。
  61. 1以上の前記内部プロトコルレジスタがソフトウェア方法を実現するように構成されている、請求項60のハードウェアオブジェクト。
  62. 複数のソフトウェアオブジェクトが並行して実行可能である、請求項61のハードウェアオブジェクト。
  63. 前記ソフトウェアオブジェクトを実現するために連係して実行される1以上のハードウェアオブジェクトをさらに備えた、請求項57のハードウェアオブジェクト。
  64. ソフトウェア方法を実現するように構成された1以上の内部プロトコルレジスタを有する第2のハードウェアオブジェクトをさらに備え、前記第1のハードウェアオブジェクトの全部と前記第2のハードウェアオブジェクトの一部が前記ソフトウェアオブジェクトを実現するために連係して実行される、請求項57のハードウェアオブジェクト。
  65. ソフトウェア方法を実現するように構成された1以上の内部プロトコルレジスタを有する第2のハードウェアオブジェクトをさらに備え、前記第1のハードウェアオブジェクトの一部と前記第2のハードウェアオブジェクトの一部が前記ソフトウェアオブジェクトを実現するために連係して実行される、請求項61のハードウェアオブジェクト。
  66. 複数のハードウェアオブジェクトを含むシステム上で機能を実行する方法であって、
    1以上の前記ハードウェアオブジェクトに非同期メッセージを送り、ソフトウェアオブジェクト方法を呼び出す、方法。
  67. それぞれメッセージパケットに対して動作し、比較的類似した電気的負荷特性を有する複数のハードウェアオブジェクトの記述のライブラリと、
    前記ライブラリを参照し、コマンドを受け入れ前記記述の1つのインスタンスを作成するとともに、コマンドを受け入れ2以上の前記作成されたインスタンスをリンクするように構成されたモデラーと、
    を備えた、集積回路開発システム
  68. 前記ライブラリは、ソフトウェアオブジェクトのコレクションをさらに有する、請求項67の開発システム。
  69. 前記ソフトウェアオブジェクトのコレクションは、階層の下部に複数のプリミティブオブジェクトを有し、階層的になっており、それぞれのプリミティブオブジェクトは、物理的ハードウェアオブジェクトの1以上の部分と関連づけられている、請求項68の開発システム。
  70. 前記ソフトウェアオブジェクトのコレクションの1つは、任意の数の複数のプリミティブオブジェクトを有することが可能であり、前記1つのソフトウェアオブジェクトの関連づけは、前記プリミティブオブジェクトの関連づけをまとめることにより生成される、請求項69の開発システム。
  71. 前記作成されたインスタンスのすべてについて出力ファイルを生成するように構成されている出力モジュールをさらに備えた、請求項67の開発システム。
  72. 前記出力ファイルはコンパイルなしで実行可能である、請求項71の開発システム。
  73. 前記出力ファイルはソフトウェアオブジェクトである、請求項71の開発システム。
  74. 前記ライブラリはソフトウェアオブジェクトのコレクションを有し、前記出力ファイルは前記ライブラリに追加可能で、ソフトウェアオブジェクトとして利用可能である、請求項71の開発システム。
  75. 物理的にインスタンス化されたハードウェアオブジェクトのコレクションをプログラムする方法であって、
    前記インスタンス化されたハードウェアオブジェクトの抽象化コレクションであるソフトウェアオブジェクトであって、それぞれ、
    前記ソフトウェアオブジェクトにおいて使用されるハードウェアオブジェクトのリストと、
    前記リストされたハードウェアオブジェクトを接続するためのルールのリストと、
    前記リストされたハードウェアオブジェクトにロードされる指令ファイルと、
    を含むソフトウェアオブジェクトのコレクションを受け入れ、
    前記物理的にインスタンス化されたハードウェアオブジェクトのコレクションの記述を受け入れ、
    前記物理的にインスタンス化されたハードウェアオブジェクトのそれぞれに前記ハードウェアオブジェクトのリストから識別子を割り当て、
    前記識別子を用いて前記指令ファイル内のシンボリック情報を置換して、前記物理的にインスタンス化されたハードウェアオブジェクトのコレクション用の初期化ファイルを作成する、方法。
  76. 前記初期化ファイルをメモリに格納する、請求項75のシステム。
  77. 前記メモリは、前記物理的にインスタンス化されたハードウェアオブジェクトの1つである、請求項76のシステム。
  78. 前記メモリは、前記物理的にインスタンス化されたハードウェアオブジェクトから分離されている、請求項76のシステム。
  79. 前記物理的にインスタンス化されたハードウェアオブジェクトは、起動指令を含む読み出し専用メモリである、請求項75のシステム。
  80. 前記物理的にインスタンス化されたハードウェアオブジェクトは、起動指令をロードするように構成された状態機械となるようにリセットされる、請求項75のシステム。
JP2006517391A 2003-06-18 2004-06-18 集積回路開発システム Pending JP2007526539A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US47975903P 2003-06-18 2003-06-18
PCT/US2004/019510 WO2004114166A2 (en) 2003-06-18 2004-06-18 Integrated circuit development system

Publications (1)

Publication Number Publication Date
JP2007526539A true JP2007526539A (ja) 2007-09-13

Family

ID=33539216

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006517391A Pending JP2007526539A (ja) 2003-06-18 2004-06-18 集積回路開発システム

Country Status (10)

Country Link
US (6) US7865637B2 (ja)
EP (1) EP1636725B1 (ja)
JP (1) JP2007526539A (ja)
KR (1) KR20060063800A (ja)
CN (1) CN101044485A (ja)
AU (1) AU2004250685A1 (ja)
CA (1) CA2527970C (ja)
IL (1) IL172142A0 (ja)
RU (1) RU2006100275A (ja)
WO (1) WO2004114166A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015514766A (ja) * 2012-04-18 2015-05-21 シーメンス・ヘルスケア・ダイアグノスティックス・インコーポレーテッドSiemens Healthcare Diagnostics Inc. コンジュゲート試薬を製造するための化合物および方法

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1402379A4 (en) * 2001-05-25 2009-08-12 Annapolis Micro Systems Inc METHOD AND APPARATUS FOR MODELING DATA STREAM SYSTEMS AND MAKING SUCH SYSTEMS IN COMPUTER EQUIPMENT
US20070169022A1 (en) * 2003-06-18 2007-07-19 Jones Anthony M Processor having multiple instruction sources and execution modes
WO2004114166A2 (en) * 2003-06-18 2004-12-29 Ambric, Inc. Integrated circuit development system
US20070186076A1 (en) * 2003-06-18 2007-08-09 Jones Anthony M Data pipeline transport system
US7373631B1 (en) * 2004-08-11 2008-05-13 Altera Corporation Methods of producing application-specific integrated circuit equivalents of programmable logic
US7228509B1 (en) * 2004-08-20 2007-06-05 Altera Corporation Design tools for configurable serial communications protocols
US20060080632A1 (en) * 2004-09-30 2006-04-13 Mathstar, Inc. Integrated circuit layout having rectilinear structure of objects
JP2006155448A (ja) * 2004-12-01 2006-06-15 Matsushita Electric Ind Co Ltd データ処理装置およびデータ処理装置の設計方法
US7260800B1 (en) * 2004-12-10 2007-08-21 Synopsys, Inc. Method and apparatus for initial state extraction
US7434192B2 (en) * 2004-12-13 2008-10-07 Altera Corporation Techniques for optimizing design of a hard intellectual property block for data transmission
US7392489B1 (en) 2005-01-20 2008-06-24 Altera Corporation Methods and apparatus for implementing application specific processors
US7613858B1 (en) * 2005-01-24 2009-11-03 Altera Corporation Implementing signal processing cores as application specific processors
US20070247189A1 (en) * 2005-01-25 2007-10-25 Mathstar Field programmable semiconductor object array integrated circuit
US7546582B2 (en) * 2005-03-30 2009-06-09 International Business Machines Corporation Managing dynamic configuration data for producer components in a computer infrastructure
US20070058686A1 (en) * 2005-08-16 2007-03-15 Federico Capasso Active optical antenna
US20070073966A1 (en) * 2005-09-23 2007-03-29 Corbin John R Network processor-based storage controller, compute element and method of using same
TW200725415A (en) * 2005-12-30 2007-07-01 Tatung Co Ltd Method for automatically translating high level programming language into hardware description language
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
JP4528728B2 (ja) * 2006-01-31 2010-08-18 株式会社東芝 デジタル回路の自動設計装置、自動設計方法、および自動設計プログラム
US7991221B1 (en) * 2006-03-06 2011-08-02 Kling Daniel H Data processing system utilizing topological methods to manipulate and categorize n-dimensional datasets
US8091064B2 (en) * 2006-04-14 2012-01-03 Panasonic Corporation Supporting system, design supporting method, and computer-readable recording medium recorded with design supporting program
US9162091B2 (en) * 2007-05-09 2015-10-20 Bradley A. Kuhnert Safety harness
US20090144595A1 (en) * 2007-11-30 2009-06-04 Mathstar, Inc. Built-in self-testing (bist) of field programmable object arrays
US8726248B2 (en) * 2008-06-12 2014-05-13 Oracle America, Inc. Method and apparatus for enregistering memory locations
US8898621B2 (en) * 2009-10-09 2014-11-25 Oracle International Corporation Methods and systems for implementing a logical programming model
US8438251B2 (en) * 2009-10-09 2013-05-07 Oracle International Corporation Methods and systems for implementing a virtual storage network
US8572004B2 (en) 2009-12-29 2013-10-29 International Business Machines Corporation Space solution search
US8453081B2 (en) 2010-05-20 2013-05-28 International Business Machines Corporation Electrical design space exploration
US9189217B2 (en) * 2011-10-03 2015-11-17 Telefonaktiebolaget L M Ericsson (Publ) Method for exploiting massive parallelism
US9389841B2 (en) * 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
DE102012022838A1 (de) * 2012-11-23 2014-05-28 Phoenix Contact Gmbh & Co. Kg System zum Bereitstellen eines individuell konfigurierten Sicherheits-Schaltrelais
US8799836B1 (en) * 2013-07-08 2014-08-05 International Business Machines Corporation Yield optimization for design library elements at library element level or at product level
US9898310B2 (en) * 2013-10-16 2018-02-20 International Business Machines Corporation Symmetrical dimensions in context-oriented programming to optimize software object execution
US9276575B2 (en) * 2013-11-18 2016-03-01 Intel Corporation Low leakage state retention synchronizer
US8887108B1 (en) * 2014-05-14 2014-11-11 Fujitsu Limited Support apparatus, design support method, and recording medium
CN105515565B (zh) * 2015-12-14 2018-07-13 天津光电通信技术有限公司 一种硬件逻辑资源复用模块及复用实现的方法
US10545739B2 (en) * 2016-04-05 2020-01-28 International Business Machines Corporation LLVM-based system C compiler for architecture synthesis
US11317894B2 (en) * 2016-06-30 2022-05-03 Koninklijke Philips N.V. Sealed control panel for medical equipment
US10459843B2 (en) 2016-12-30 2019-10-29 Texas Instruments Incorporated Streaming engine with separately selectable element and group duplication
CN108052018B (zh) * 2017-12-13 2020-09-01 中国兵器装备集团自动化研究所 一种制导与控制组件轻量化处理方法及制导与控制组件
CN109884517B (zh) * 2019-03-21 2021-04-30 浪潮商用机器有限公司 一种待测芯片及测试系统
EP3770800A1 (en) * 2019-07-25 2021-01-27 ABB S.p.A. A computer-implemented method for reading a digital graphical diagram representing an electric circuit
CN111238426B (zh) * 2020-02-24 2021-06-15 重庆市计量质量检测研究院 用于校准微纳米坐标测量系统测量误差的标准装置
CN113194097B (zh) * 2021-04-30 2022-02-11 北京数盾信息科技有限公司 一种安全网关的数据处理方法、装置及安全网关
CN113031496B (zh) * 2021-05-27 2021-09-21 之江实验室 一种基于fpga的工业协议映射结构和方法

Family Cites Families (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US25363A (en) * 1859-09-06 George henderson
US124012A (en) * 1872-02-27 Improvement in refrigerating preserving-houses
US56084A (en) * 1866-07-03 Improved car-spring
US229482A (en) * 1880-06-29 Manufacture of coffee-pots
US1296A (en) * 1839-08-21 Machine eoe bending tiees
US1445A (en) * 1839-12-27 Lattice bkidge
US3290650A (en) 1963-05-13 1966-12-06 Rca Corp Character reader utilizing stroke and cavity detection for recognition of characters
US4914574A (en) 1984-08-16 1990-04-03 Mitsubishi Denki Kabushiki Kaisha Data transmission apparatus having cascaded data processing modules for daisy chain data transfer
US5283554A (en) * 1990-02-21 1994-02-01 Analog Devices, Inc. Mode switching system for a pixel based display unit
JPH03269728A (ja) 1990-03-20 1991-12-02 Fujitsu Ltd パイプライン計算機における命令実行制御方式
US5867399A (en) 1990-04-06 1999-02-02 Lsi Logic Corporation System and method for creating and validating structural description of electronic system from higher-level and behavior-oriented description
US5872448A (en) 1991-06-18 1999-02-16 Lightspeed Semiconductor Corporation Integrated circuit architecture having an array of test cells providing full controlability for automatic circuit verification
DE69229338T2 (de) 1992-06-30 1999-12-16 Discovision Ass Datenpipelinesystem
US6112017A (en) * 1992-06-30 2000-08-29 Discovision Associates Pipeline processing machine having a plurality of reconfigurable processing stages interconnected by a two-wire interface bus
US6435737B1 (en) 1992-06-30 2002-08-20 Discovision Associates Data pipeline system and data encoding method
US5404428A (en) 1993-12-07 1995-04-04 Sun Microsystems, Inc. Method and system for updating derived items in a view model which includes multiple coordinate systems
US5655151A (en) * 1994-01-28 1997-08-05 Apple Computer, Inc. DMA controller having a plurality of DMA channels each having multiple register sets storing different information controlling respective data transfer
JP3269728B2 (ja) 1994-02-25 2002-04-02 株式会社日立製作所 ジェットポンプ計測管固定用クランプ
US6044211A (en) 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US5602878A (en) * 1994-09-23 1997-02-11 Intel Corporation Method of delivering stable data across an asynchronous interface
US6025853A (en) 1995-03-24 2000-02-15 3Dlabs Inc. Ltd. Integrated graphics subsystem with message-passing architecture
US5870588A (en) * 1995-10-23 1999-02-09 Interuniversitair Micro-Elektronica Centrum(Imec Vzw) Design environment and a design method for hardware/software co-design
ATE257611T1 (de) 1995-10-23 2004-01-15 Imec Inter Uni Micro Electr Entwurfssystem und -verfahren zum kombinierten entwurf von hardware und software
WO1997035254A1 (en) 1996-03-19 1997-09-25 Massachusetts Institute Of Technology Computer system and computer implemented process for representing software system descriptions and for generating executable computer programs and computer system configurations from software system descriptions
US5745124A (en) 1996-06-21 1998-04-28 Texas Instruments Incorporated Method and system for data translation
US5778059A (en) 1996-08-30 1998-07-07 Digital Technics, Inc. Distributed predictive and event-driven processing environment
US6289488B1 (en) * 1997-02-24 2001-09-11 Lucent Technologies Inc. Hardware-software co-synthesis of hierarchical heterogeneous distributed embedded systems
US6233540B1 (en) * 1997-03-14 2001-05-15 Interuniversitair Micro-Elektronica Centrum Design environment and a method for generating an implementable description of a digital system
US6606588B1 (en) * 1997-03-14 2003-08-12 Interuniversitair Micro-Elecktronica Centrum (Imec Vzw) Design apparatus and a method for generating an implementable description of a digital system
US6330659B1 (en) * 1997-11-06 2001-12-11 Iready Corporation Hardware accelerator for an object-oriented programming language
US6105083A (en) * 1997-06-20 2000-08-15 Avid Technology, Inc. Apparatus and method for controlling transfer of data between and processing of data by interconnected data processing elements
FR2766937B1 (fr) 1997-07-31 2001-04-27 Sqware T Protocole et systeme de liaison par bus entre elements d'un microcontroleur
US6112304A (en) 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US6167502A (en) 1997-10-10 2000-12-26 Billions Of Operations Per Second, Inc. Method and apparatus for manifold array processing
US6078962A (en) 1997-10-30 2000-06-20 Lsi Logic Corporation Bi-directional asynchronous transfer scheme using a single handshake
IL122299A (en) 1997-11-25 2003-11-23 Broadcom Corp Video encoding device
US6075935A (en) * 1997-12-01 2000-06-13 Improv Systems, Inc. Method of generating application specific integrated circuits using a programmable hardware architecture
DE69827589T2 (de) * 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
US6216223B1 (en) 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US6230307B1 (en) 1998-01-26 2001-05-08 Xilinx, Inc. System and method for programming the hardware of field programmable gate arrays (FPGAs) and related reconfiguration resources as if they were software by creating hardware objects
US6145117A (en) 1998-01-30 2000-11-07 Tera Systems Incorporated Creating optimized physical implementations from high-level descriptions of electronic design using placement based information
US6292925B1 (en) 1998-03-27 2001-09-18 Xilinx, Inc. Context-sensitive self implementing modules
US6092174A (en) * 1998-06-01 2000-07-18 Context, Inc. Dynamically reconfigurable distributed integrated circuit processor and method
US6167501A (en) * 1998-06-05 2000-12-26 Billions Of Operations Per Second, Inc. Methods and apparatus for manarray PE-PE switch control
US6128678A (en) * 1998-08-28 2000-10-03 Theseus Logic, Inc. FIFO using asynchronous logic to interface between clocked logic circuits
JP4573189B2 (ja) 1998-10-10 2010-11-04 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムコード変換方法
US6467009B1 (en) 1998-10-14 2002-10-15 Triscend Corporation Configurable processor system unit
US6145073A (en) 1998-10-16 2000-11-07 Quintessence Architectures, Inc. Data flow integrated circuit architecture
US6701515B1 (en) 1999-05-27 2004-03-02 Tensilica, Inc. System and method for dynamically designing and evaluating configurable processor instructions
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6477697B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Adding complex instruction extensions defined in a standardized language to a microprocessor design to produce a configurable definition of a target instruction set, and hdl description of circuitry necessary to implement the instruction set, and development and verification tools for the instruction set
US6654889B1 (en) 1999-02-19 2003-11-25 Xilinx, Inc. Method and apparatus for protecting proprietary configuration data for programmable logic devices
US6622233B1 (en) 1999-03-31 2003-09-16 Star Bridge Systems, Inc. Hypercomputer
US6473769B1 (en) 1999-03-31 2002-10-29 Microsoft Corporation Property linking in object-oriented computing environments
US6298472B1 (en) 1999-05-07 2001-10-02 Chameleon Systems, Inc. Behavioral silicon construct architecture and mapping
GB9918643D0 (en) 1999-08-06 1999-10-13 Canon Kk Geometry pipeline for computer graphics
US6597664B1 (en) * 1999-08-19 2003-07-22 Massachusetts Institute Of Technology Digital circuit synthesis system
US6507947B1 (en) * 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
WO2001016710A1 (fr) 1999-08-30 2001-03-08 Ip Flex Inc. Processeur de donnees
US6598177B1 (en) 1999-10-01 2003-07-22 Stmicroelectronics Ltd. Monitoring error conditions in an integrated circuit
US6763034B1 (en) 1999-10-01 2004-07-13 Stmicroelectronics, Ltd. Connection ports for interconnecting modules in an integrated circuit
US20020129340A1 (en) 1999-10-28 2002-09-12 Tuttle Douglas D. Reconfigurable isomorphic software representations
US6633181B1 (en) 1999-12-30 2003-10-14 Stretch, Inc. Multi-scale programmable array
US6763327B1 (en) 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US20010025363A1 (en) 2000-03-24 2001-09-27 Cary Ussery Designer configurable multi-processor system
CA2407407A1 (en) 2000-04-26 2001-11-01 The Trustees Of Columbia University In The City Of New York A low latency fifo circuit for mixed clock systems
US7171693B2 (en) * 2000-05-12 2007-01-30 Xtreamlok Pty Ltd Information security method and system
EP1156617B1 (en) * 2000-05-17 2003-09-10 Matsushita Electric Industrial Co., Ltd. Hybrid ARQ method for packet data transmission
US6850092B2 (en) * 2000-06-09 2005-02-01 The Trustees Of Columbia University Low latency FIFO circuits for mixed asynchronous and synchronous systems
US6353395B1 (en) * 2000-08-08 2002-03-05 Brk Brands, Inc. Interconnectable detector with local alarm indicator
US6889310B2 (en) 2000-08-12 2005-05-03 Mobilygen Corporation Multithreaded data/context flow processing architecture
US7080183B1 (en) * 2000-08-16 2006-07-18 Koninklijke Philips Electronics N.V. Reprogrammable apparatus supporting the processing of a digital signal stream and method
DE10052210B4 (de) 2000-10-20 2004-12-23 Infineon Technologies Ag Integrierte Schaltung mit einer synchronen und asynchronen Schaltung sowie Verfahren zum Betrieb einer solchen integrierten Schaltung
US6507214B1 (en) 2000-10-26 2003-01-14 Cypress Semiconductor Corporation Digital configurable macro architecture
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
US6975628B2 (en) * 2000-12-22 2005-12-13 Intel Corporation Method for representing and controlling packet data flow through packet forwarding hardware
US6483343B1 (en) * 2000-12-29 2002-11-19 Quicklogic Corporation Configurable computational unit embedded in a programmable device
US7325232B2 (en) 2001-01-25 2008-01-29 Improv Systems, Inc. Compiler for multiple processor and distributed memory architectures
US6857110B1 (en) 2001-01-30 2005-02-15 Stretch, Inc. Design methodology for merging programmable logic into a custom IC
JP4475835B2 (ja) * 2001-03-05 2010-06-09 富士通株式会社 入力回線インタフェース装置及びパケット通信装置
US7142882B2 (en) 2001-03-09 2006-11-28 Schmidt Dominik J Single chip wireless communication integrated circuit
US20030054774A1 (en) 2001-03-22 2003-03-20 Quicksilver Technology, Inc. Method and system for managing hardware resources to implement system acquisition using an adaptive computing architecture
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US6530070B2 (en) * 2001-03-29 2003-03-04 Xilinx, Inc. Method of constraining non-uniform layouts using a uniform coordinate system
US6618434B2 (en) 2001-05-31 2003-09-09 Quicksilver Technology, Inc. Adaptive, multimode rake receiver for dynamic search and multipath reception
US6795882B1 (en) 2001-06-04 2004-09-21 Advanced Micro Devices, Inc. High speed asynchronous bus for an integrated circuit
US6653859B2 (en) * 2001-06-11 2003-11-25 Lsi Logic Corporation Heterogeneous integrated circuit with reconfigurable logic cores
EP2224330B1 (de) 2001-06-20 2012-05-09 Krass, Maren Verfahren und gerät zum partitionieren von grossen rechnerprogrammen
GB2381336B (en) 2001-08-21 2005-09-28 Silicon Infusion Ltd Object orientated heterogeneous multi-processor platform
US6931561B2 (en) * 2001-10-16 2005-08-16 International Business Machines Corporation Apparatus and method for asynchronously interfacing high-speed clock domain and low-speed clock domain using a plurality of storage and multiplexer components
CN102902839B (zh) 2002-04-25 2016-04-06 新思科技公司 管理集成电路设计的装置和方法
JP3934493B2 (ja) 2002-06-28 2007-06-20 富士通株式会社 集積回路及びシステム開発方法
US7471643B2 (en) 2002-07-01 2008-12-30 Panasonic Corporation Loosely-biased heterogeneous reconfigurable arrays
US7065665B2 (en) 2002-10-02 2006-06-20 International Business Machines Corporation Interlocked synchronous pipeline clock gating
US6877150B1 (en) 2002-12-04 2005-04-05 Xilinx, Inc. Method of transforming software language constructs to functional hardware equivalents
US7400629B2 (en) 2002-12-19 2008-07-15 International Business Machines Corporation CAM based system and method for re-sequencing data packets
US6816562B2 (en) 2003-01-07 2004-11-09 Mathstar, Inc. Silicon object array with unidirectional segmented bus architecture
US20040193763A1 (en) 2003-03-28 2004-09-30 Fujitsu Limited Inter-bus communication interface device and data security device
US7000211B2 (en) 2003-03-31 2006-02-14 Stretch, Inc. System and method for efficiently mapping heterogeneous objects onto an array of heterogeneous programmable logic resources
US7062586B2 (en) 2003-04-21 2006-06-13 Xilinx, Inc. Method and apparatus for communication within a programmable logic device using serial transceivers
US20040252713A1 (en) * 2003-06-13 2004-12-16 Roger Taylor Channel status management system for multi-channel LIU
WO2004114166A2 (en) * 2003-06-18 2004-12-29 Ambric, Inc. Integrated circuit development system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG200202354001, 籠谷裕人、外1名, "依存性グラフに基づく非同期式制御回路の合成", 情報処理学会研究報告, 19921023, 第92巻、第83号, 第9−16頁, JP, 社団法人情報処理学会 *
JPN6009046168, 籠谷裕人、外1名, "依存性グラフに基づく非同期式制御回路の合成", 情報処理学会研究報告, 19921023, 第92巻、第83号, 第9−16頁, JP, 社団法人情報処理学会 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015514766A (ja) * 2012-04-18 2015-05-21 シーメンス・ヘルスケア・ダイアグノスティックス・インコーポレーテッドSiemens Healthcare Diagnostics Inc. コンジュゲート試薬を製造するための化合物および方法

Also Published As

Publication number Publication date
US7206870B2 (en) 2007-04-17
US7865637B2 (en) 2011-01-04
US7139985B2 (en) 2006-11-21
CN101044485A (zh) 2007-09-26
WO2004114166A3 (en) 2005-12-29
US7406584B2 (en) 2008-07-29
EP1636725B1 (en) 2018-05-16
US20060117275A1 (en) 2006-06-01
CA2527970C (en) 2014-07-29
US20050005250A1 (en) 2005-01-06
US20060282812A1 (en) 2006-12-14
US7409533B2 (en) 2008-08-05
WO2004114166A2 (en) 2004-12-29
EP1636725A2 (en) 2006-03-22
RU2006100275A (ru) 2006-07-10
US7673275B2 (en) 2010-03-02
US20050055657A1 (en) 2005-03-10
US20060282813A1 (en) 2006-12-14
KR20060063800A (ko) 2006-06-12
CA2527970A1 (en) 2004-12-29
US20050015733A1 (en) 2005-01-20
AU2004250685A1 (en) 2004-12-29
IL172142A0 (en) 2006-04-10

Similar Documents

Publication Publication Date Title
JP2007526539A (ja) 集積回路開発システム
JP5045961B2 (ja) 同期回路設計の表現から非同期回路設計の表現へおよび非同期回路設計の表現から同期回路設計の表現への自動変換を実行するためのシステムおよび方法
US7653895B1 (en) Memory arrangement for message processing by a plurality of threads
JP2006522406A5 (ja)
JP2006522406A (ja) データ・フロー・マシン
JPH10116302A (ja) 集積回路の設計方法及びそれによって設計された集積回路
Carloni The role of back-pressure in implementing latency-insensitive systems
US7823162B1 (en) Thread circuits and a broadcast channel in programmable logic
Zhao et al. Using vivado-HLS for structural design: A NoC case study
US7113901B1 (en) Reuse of hardware components
Ditmar A dynamically reconfigurable FPGA-based content addressable memory for IP characterization
Caspi Design automation for streaming systems
TWI285825B (en) Hardware register on a chip, method of implementing a protocol register, machine-accessible medium embodying a data interface protocol or a software object, data pipeline element, data pipeline device, join element, fork element, data interface device...
Grasset et al. Automatic generation of component wrappers by composition of hardware library elements starting from communication service specification
Ihmor et al. Modeling and automated synthesis of reconfigurable interfaces
Dumitriu A framework and method for the run-time on-chip synthesis of multi-mode self-organized reconfigurable stream processors
Rissa et al. SoftSONIC: A customisable modular platform for video applications
Sonek Header Parsing Logic in Network Switches Using Fine and Coarse-Grained Dynamic Reconfiguration Strategies
Gajski et al. Transaction-Level System Modeling
Kelley High-Level Digital Interfaces with Low Overhead
Bainbridge et al. System-on-Chip Design using Self-timed Networks-on-Chip
Keller Programming Model for Network Processing on an FPGA
Bhathagar et al. Partitioning and Coding Styles

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070615

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091202

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091209

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100106

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100114

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100205

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100215

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100511