JP6655028B2 - 高位合成におけるシステムアーキテクチャの抽出 - Google Patents

高位合成におけるシステムアーキテクチャの抽出 Download PDF

Info

Publication number
JP6655028B2
JP6655028B2 JP2016570796A JP2016570796A JP6655028B2 JP 6655028 B2 JP6655028 B2 JP 6655028B2 JP 2016570796 A JP2016570796 A JP 2016570796A JP 2016570796 A JP2016570796 A JP 2016570796A JP 6655028 B2 JP6655028 B2 JP 6655028B2
Authority
JP
Japan
Prior art keywords
circuit
circuit block
function
control circuit
control
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
JP2016570796A
Other languages
English (en)
Other versions
JP2017518577A (ja
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.)
Xilinx Inc
Original Assignee
Xilinx 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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2017518577A publication Critical patent/JP2017518577A/ja
Application granted granted Critical
Publication of JP6655028B2 publication Critical patent/JP6655028B2/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]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/08HW-SW co-design, e.g. HW-SW partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Description

発明の分野
この開示は集積回路(IC)に関し、より特定的には、高位合成において回路設計用のシステムアーキテクチャを抽出することに関する。
背景
高位合成は、電子システムの高位プログラミング言語記述から回路設計を作製する自動化された設計プロセスである。電子システムの高位プログラミング言語記述はアルゴリズム記述である。高位プログラミング言語の例は、C、C++、システムCなどを含むが、それらに限定されない。電子設計自動化(EDA)ツールが、高位プログラミング言語記述上で動作しかつ回路設計を生成する。回路設計は、ハードウェア記述言語(HDL)を用いて特定される電子システムのレジスタ転送レベルハードウェア記述であってもよい。
高位合成において、1つの目的は、並列性が導入され得る高位プログラミング言語記述の逐次部分を同定することである。回路設計に組入れられると、並列性により、結果的に得られる回路構成において、リソースの使い方が改良され、かつシステム性能が向上する。多数の高位プログラミング言語記述は本質的に反復性であり、ループ、アレイなどの複雑なプログラミング言語構文を利用する。そのような複雑な構文を有する高位プログラミング言語記述からデータフローアーキテクチャを抽出するのは困難であり、通常は行なわれない。
要約
方法は、高位プログラミング言語記述の第1の関数と、高位プログラミング記述の制御フロー構文内に含有される第2の関数とを判断することと、第2の関数が第1の関数のデータ消費関数であると判断することと、回路設計内で、プロセッサを用いて、ローカルメモリを含むポートを自動的に生成することとを含む。ポートは、回路設計内で、第1の関数の第1の回路ブロック実現例を第2の関数の第2の回路ブロック実現例に結合する。
システムは、実行可能な動作を開始するようにプログラミングされるプロセッサを含む。実行可能な動作は、高位プログラミング言語記述の第1の関数と高位プログラミング記述の制御フロー構文内に含有される第2の関数とを判断することと、第2の関数が第1の関数のデータ消費関数であると判断することと、回路設計内で、ローカルメモリを含むポートを自動的に生成することとを含む。ポートは、回路設計内で、第1の関数の第1の回路ブロック実現例を第2の関数の第2の回路ブロック実現例に結合する。
非一時的コンピュータ読出可能記憶媒体はその上に記憶される命令を含む。命令は、プロセッサによって実行されると、方法を実行する。方法は、高位プログラミング言語記述の第1の関数と高位プログラミング記述の制御フロー構文内に含有される第2の関数とを判断することと、第2の関数が第1の関数のデータ消費関数であると判断することと、回路設計内で、ローカルメモリを含むポートを自動的に生成することとを含む。ポートは、回路設計内で、第1の関数の第1の回路ブロック実現例を第2の関数の第2の回路ブロック実現例に結合する。
他の特徴は、以下の詳細な説明および請求項を検討すれば認識されるであろう。
例示的なデータ処理システムを示すブロック図である。 電子システムの高位プログラミング言語記述(記述)から回路設計を作製する例示的な方法を示すフロー図である。 電子システムの記述からの回路設計の自動作製を示すブロック図である。 電子システムの記述からの回路設計の自動作製を示すブロック図である。 電子システムの記述からの別の回路設計の自動作製を示すブロック図である。 電子システムの記述からの別の回路設計の自動作製を示すブロック図である。 電子システムの記述からの別の回路設計の自動作製を示すブロック図である。 電子システムの記述からの別の回路設計の自動作製を示すブロック図である。 自己同期ポートを用いる電子システムの例示的な記述を示す図である。 自己同期ポートを用いる電子システムの別の例示的な記述を示す図である。 集積回路の例示的なアーキテクチャの図である。
図面の詳細な説明
開示は新規の特徴を規定する請求項で結ばれるが、図面とともに説明を検討することによって本開示中に記載のさまざまな特徴がより十分に理解されると考えられる。本明細書中に記載のプロセス、機械、製造、および任意のその変形は例示の目的のために与えられる。この開示中に記載の特定の構造的および機能的詳細は限定と解釈されるべきではなく、単に請求項の根拠として、および事実上任意の適切に詳述される構造において記載の特徴をさまざまに用いることを当業者に教示するための代表的な根拠として解釈されるべきである。さらに、この開示内で用いられる用語および文言は限定を意図するものではなく、むしろ記載される特徴の理解可能な説明を提供することを意図する。
この開示は集積回路(IC)に関し、より特定的には高位合成において回路設計用のシステムアーキテクチャを抽出することに関する。この開示内に記載される発明の構成に従うと、電子システムの高位プログラミング言語記述は、電子システム用の回路設計を生成するように処理される。高位プログラミング言語記述は、非ネステッドループ、アレイ、条件付き制御構造などのさまざまな制御フロー構文のうち任意のものを含み得るアルゴリズム的記述である。制御フロー構文は、データ依存タイミング挙動を容易にする制御回路構成を組入れることによって処理される。回路設計のデータ依存タイミング挙動は、制御回路構成が生成し得る制御信号を用いて生成されるさまざまな回路ブロックの間で制御されるおよび/または同期される。
結果的に得られる回路設計は、電子システムのハードウェア記述である。回路設計は、ハードウェア記述言語を用いて特定され得る。さらに、回路設計は、電子システムの元の高位プログラミング言語の大規模なプログラムコードの複数の同時実行をサポートする。
1つの局面では、本明細書中に記載の発明の構成は、データ処理システムによって行なわれる方法またはプロセスとして実現され得る。別の局面では、発明の構成は、本明細書中に記載されるような回路設計を生成する実行可能な動作を実行するおよび/または開始するようにプログラミングされるプロセッサを有するデータ処理システムとして実現され得る。また別の局面では、発明の構成は、実行されると、プロセッサおよび/またはシステムに方法またはプロセスを行なわせるプログラムコードを記憶する非一時的コンピュータ読出可能記憶媒体として実現され得る。
この文書を通じて適用されるいくつかの定義を提示する。本明細書中に規定されるように、「自動的」という用語は、ユーザの介入がないことを意味する。本明細書中に規定されるように、「ユーザ」という用語は人間を意味する。
本明細書中に規定されるように、「高位プログラミング言語」という用語は、命令が記載のシステムの詳細からの強い抽象化を典型的に有する、たとえば電子システムなどのデータ処理システムを記述するのに用いられる命令の組を意味する。高位プログラミング言語は、メモリ管理または機械命令などの記載のシステムの動作の局面を隠し得、高位プログラミング言語で書かれるプログラムがさまざまなシステムに変換されるのを可能にし得る。高位プログラミング言語を用いる場合、ユーザは、プログラムから生成されるべきシステムのレジスタ、メモリアドレス、機械命令などを明示的に記述し得るが、そうする必要はない。高位プログラミング言語の例は、C、C++、システムCなどを含むが、それらに限定されない。ある場合、特定のデータ処理システムの命令の組は、交互のまたは異なるデータ処理システムの命令の組で表現されるプログラムに変換されると、「高位プログラミング言語」と考えられ得る。
本明細書中に規定されるように、「制御フロー構文」という用語は、その実行の結果、2つ以上の異なるデータフロー経路のうちどれに従うかに関しての選択がなされる、高位プログラミング言語の1つ以上のステートメントまたは命令を意味する。制御フロー構文は関数と同じではない。制御フロー構文の例は条件付き分岐である。条件付き分岐は、条件が満たされる場合にのみステートメントが実行される、または条件が満たされるまで実行される場合を指す。条件付き分岐は、ループ構文、for-next構文、do-until構文、if-then構文、if-then-else構文などを含む。
本明細書中に規定されるように、「ハードウェア記述言語」という用語は、デジタルシステムの文書化、設計、および実現例を容易にするコンピュータ言語である。デジタルシステムの実現例は、IC製造用の1組のマスクへのデジタルシステムの変換、フィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルICのプログラミングなどを含み得る。HDLを用いると、たとえば、ユーザは、電子回路を設計しかつ特定し、回路の動作を記述し、かつ回路の動作を検証する試験を作製することができる。HDLは、空間的および時間的構造ならびにモデリングされているデジタルシステムの挙動の標準的なテキストベースの表現を含む。HDL統語論および意味論は、デジタルシステム中の同時動作を表現しかつ同時動作の進捗を同期化させて特定の組合された挙動を達成するための明示的な表記を含む。多くの回路において、この同期化は、「クロック」と呼ばれるグローバルに可視の信号に基づいている。しかしながら、回路の部分同士の間の同期のための他の機構を設けてもよいことを認めるべきである。
本明細書中に規定されるように、「ハンドシェイキング」または「ハンドシェイクシグナリング」という用語は、同期化の確立、または特定の文字コンフィギュレーションおよび/もしくは信号を交換することによる、たとえば回路などの送信機器と受信機器との間での通知の提供を含み得る、ある種の制御シグナリングを意味する。ハンドシェイキングは、クロック信号に関連して1組の信号を用いて実現されてもよく、または、クロック信号とは独立した1組の信号(たとえば「二相ハンドシェイク」)を用いて実現されてもよく、またはより原始的な同期化と通信との組を組合せるプロトコルを通したデータパケットもしくはメッセージの交換を用いて実現されてもよい。
図示の簡潔さおよび明確性の目的のために、図に示される要素は必ずしも縮尺通りに描かれているとは限らない。たとえば、明確性のために、要素の一部の寸法は他の要素に対して誇張されることがある。さらに、適切と考えられる場合は、対応の、類似の、または同様の特徴を示すために、参照番号が図の間で繰返される。
図1は、例示的なデータ処理システム(システム)100を示すブロック図である。システム100は、システムバス115または他の好適な回路構成を通してメモリ素子110に結合される、たとえば中央処理装置(CPU)などの少なくとも1つのプロセッサ105を含む。システム100はメモリ素子110内にプログラムコードを記憶する。プロセッサ105は、システムバス115を介してメモリ素子110からアクセスされるプログラムコードを実行する。1つの局面では、システム100は、プログラムコードを記憶するおよび/または実行するのに好適なコンピュータとして実現される。しかしながら、システム100は、この明細書内に記載される機能を果たすことができる、プロセッサおよびメモリを含む任意のシステムの形態で実現されてもよいことを認めるべきである。
メモリ素子110は、たとえばローカルメモリ120および1つ以上のバルク記憶デバイス125などの1つ以上の物理的メモリデバイスを含む。ローカルメモリ120は、プログラムコードの実際の実行の際に一般的に用いられるランダムアクセスメモリ(RAM)または他の非持続的メモリデバイスを指す。バルク記憶デバイス125は、ハードディスクドライブ(HDD)、固体状態ドライブ(SSD)、または他の持続的データ記憶デバイスとして実現することができる。システム100は、実行の間にプログラムコードをバルク記憶デバイス125から取出さなければならない回数を低減するために、少なくともあるプログラムコードの一時的な記憶を提供する1つ以上のキャッシュメモリ(図示せず)も含むことがある。
キーボード130、表示デバイス135、およびポインティングデバイス140などの入出力(I/O)デバイスは、システム100に結合されてもされなくてもよい。直接にまたは介在I/Oコントローラを通して、I/Oデバイスがシステム100に結合され得る。介在するプライベートネットワークまたは公衆網を通してシステム100が他のシステム、コンピュータシステム、遠隔プリンタ、および/または遠隔記憶デバイスに結合されるように、ネットワークアダプタ145もシステム100に結合され得る。モデム、ケーブルモデム、イーサネット(登録商標)カード、および無線トランシーバは、システム100内で用い得る異なる種類のネットワークアダプタ145の例である。
図1に描かれるように、メモリ素子110は電子設計自動化(EDA)アプリケーション150を記憶する。実行可能なプログラムコードの形態で実現されるEDAアプリケーション150は、システム100によって実行される。そのため、EDAアプリケーション150はシステム100の一体部分と考えられる。EDAアプリケーション150は、開発中の電子システムの受信した高位プログラミング言語記述155により動作する。明確性および考察の目的のため、高位プログラミング言語記述155は、電子システムの「記述」155または「記述」と称される。高位プログラミング言語を用いて特定される記述155は、電子システムのアルゴリズム的記述である。記述155は用いるべき特定のハードウェアを特定しない。
EDAアプリケーション150はアルゴリズム的記述155によって動作し、電子システム用の回路設計160を生成する。回路設計160は、記述155によって特定される電子システムのハードウェア記述である。回路設計160は、HDLで書かれるまたは特定されるレジスタ転送レベルハードウェア記述として特定されてもよい。
EDAアプリケーション150ならびに記述155および/または回路設計160を含む任意のデータ項目は、システム100の一部として用いられると、またはIC内で(プログラマブルIC、特定用途向けIC、部分プログラマブルIC、もしくは非プログラマブルICであっても)実現例のためにさらに処理されると、機能性を与える機能的データ構造である。
図2は、電子システムの記述から回路設計を作製する例示的な方法200を示すフロー図である。方法200は、図1のシステム100などのシステムによって実行され得る。図示の目的のため、方法200は、1つの制御フロー構文を処理するものとして記載される。しかしながら、方法200は、記述内で同定され得るまたは記述内で同定される複数の制御フロー構文を処理するようにそれ以外のやり方で適合され得るさらなる制御フロー構文を処理するために、繰返し行なわれてもよいことを認めるべきである。
ブロック205で、システムは、処理のための電子システムの記述を受信する。記述は高位プログラミング言語で特定される。さらに、記述は制御フロー構文を含む。ブロック210で、システムは、記述内に特定される関数を同定する。
ブロック215で、システムは、記述内の制御フロー構文を同定する。ブロック220で、システムは、どの関数、または場合によってはどの複数の関数が制御フロー構文内に含有されるかを判断する。この明細書内で、制御フロー構文内に含有される関数は「目的関数」と称される。関数は、目的関数が実行されるかもしくは実行されないか、および/または目的関数が実行される多数の回数(繰返し)を制御フロー構文の実行が判断する際に、制御フロー構文内に含有される。
ブロック225で、システムは、任意の目的関数を含む記述の関数のうちどれがデータ生成関数でありかつどれがデータ消費関数であるかを判断する。本明細書中に規定されるように、「データ生成関数」という用語は、目的関数であるかもしれないまたは目的関数でないかもしれない別の関数によって入力として用いられるデータを生成するまたは出力する記述の関数を意味する。本明細書中に規定されるように、「データ消費関数」という用語は、目的関数であるかもしれないまたは目的関数でないかもしれない別の関数によって生成または出力されるデータを入力として受信する記述の関数を意味する。システムは、データ生成関数とデータ消費関数との関係を同定する。所与の関数は、1つの関数に関してデータ生成関数として動作し、かつ別の異なる関数に関してはデータ消費関数として動作することがある。
ブロック230で、システムは、記述のデータ生成関数とデータ消費関数との間のデータ交換を評価する。たとえば、システムは、目的関数と目的関数への入力を与えるデータ生成関数との間のデータ交換を評価する。システムはさらに、目的関数と目的関数から出力を受けるデータ消費関数との間のデータ交換を評価することがある。
各々の関数が回路ブロックに変換されるので、結果的に得られる回路ブロックはポートによって結合される。本明細書中に規定されるように、「ポート」は、2つ以上の回路ブロックを結合することによって回路ブロックが信号および/またはデータを交換できるようにする回路構成、またはたとえば配線、メモリ、インターフェイスなどの回路構成のハードウェア記述を指す。データ生成関数のために作製される回路ブロックをデータ消費回路ブロックのために作製される回路ブロックに結合するのに用いられるポートの種類は、データ生成関数とデータ消費関数との間に発生するデータ交換の評価から決められる。
システムは、データ交換の1つ以上の属性を判断し得る。1つの局面では、システムは、関数と目的関数との間で行なわれるデータ交換の種類を示す電子システムの記述に含まれるコンパイラディレクティブを検出し得る。たとえば、記述内で、特定の関数に関連付けられて、それによりデータ交換の種類を特定する「pragma」または「♯pragma」ディレクティブを見つけ得る。ディレクティブは、目的関数に関連付けられて検出されると、たとえば、回路設計を作製する際に用いるべきポートの種類を示し得る。データ交換の属性は、記述の高位プログラミング言語内に規定されるように交換されるデータの種類も含み得る。
別の局面では、システムは、関数への入力、関数からの出力を分析し得る、ならびに/または入力データ項目が処理されるおよび/もしくは出力データ項目が生成される逐次の順序を判断し得る。システムは、たとえばデータ生成関数が生成するデータがデータ生成関数が生成するのと同じ逐次の順序でデータ消費関数によって消費されるか否かを判断してもよい。同様に、システムは、データ生成関数が生成するデータが、データ生成関数が生成するのとは異なる逐次の順序でデータ消費関数によって消費されるか否かを判断してもよい。
ブロック235で、システムは、データ生成関数とデータ消費関数との間のデータ交換の評価に従ってポートの種類を判断する。1つ以上の局面では、システムは、検出されたコンパイラディレクティブまたは交換されるデータの種類に従ってポートの種類を判断してもよい。別の局面では、システムは、データ交換に従って、およびより特定的には、後でデータが消費される逐次の順序と比較したデータが生成される逐次の順序に従って、ポートの種類を判断する。
たとえば、生成されたのと同じ逐次の順序でデータが消費される場合、ポートは、先入れ先出し(FIFO)メモリを用いて実現され得る。FIFOメモリの使用は、ポートが自己同期ポートとして実現されることを意味する。生成されたのとは異なる順序でデータが消費されるデータ交換は、自己同期ポートとしてまたは非自己同期ポートとして実現され得る。しかしながら、生成されたのとは異なる順序でデータが消費される場合、FIFOメモリを用いなくてもよい。代わりに、ポートを実現するのにローカルメモリを用いる。
説明および明確性の目的のため、関数のために生成される回路ブロック、回路構成、または回路は、同様の用語法を用いて参照される。たとえば、関数を生成するデータ生成器のために生成される回路ブロックはデータ生成回路ブロックと称されることがある。目的関数のために生成される回路ブロックは目的回路ブロックと称されることがある。同様に、データ消費関数のために生成される回路ブロックはデータ消費回路ブロックと称されることがある。
一般的に、ポートは、自己同期であっても非自己同期であっても、ブロックレベルのハンドシェイキングを利用する。自己同期ポートにより、データは、データ消費回路ブロックが処理を開始した後にデータ消費回路ブロックに到達できるようになる。そのようにできるには、ブロックレベルハンドシェイクシグナリングを超えた付加的なハンドシェイクシグナリングが要件となる。データ消費回路ブロックは、たとえばメモリがデータを内蔵する前に、ブロックレベル開始ハンドシェイクを完了し、データの一部の処理を開始し得る。付加的なデータが生成されてメモリの中に入れられると、データ消費回路ブロックは付加的なハンドシェイクシグナリングを完了してこのデータをメモリから除去し、当該データを処理し得る。同様に、データ生成回路ブロックは、処理を完了する前に、ハンドシェイクシグナリングを完了してデータをメモリの中に入れ得る。データ生成回路ブロックは後にブロックレベルダン(done)ハンドシェイクを完了してもよい。
自己同期ポートの例はストリーミングインターフェイスである。ストリーミングインターフェイスの一例は、アドバンストエクステンシブルインターフェイス(Advanced eXtensible Interface)(AXI)プロトコル準拠ストリーミングポートであり、これは「AXIストリーム」と称されることがある。1つの局面では、ストリーミングインターフェイスはFIFOメモリを含む。その場合、自己同期ポートはFIFOデータ転送方式に従う。別の局面では、ストリーミングインターフェイスはローカルメモリを含むことがある。ローカルメモリの場合、自己同期ポートは、順序を外れて、すなわちFIFO順序ではなく、またはFIFOデータ転送方式に従って、データにアクセスし得る。しかしながら、いずれの場合も、自己同期ポートは、データ消費回路ブロックおよび/またはデータ生成回路ブロックと用いられる特定のメモリとの間で行なわれるハンドシェイクシグナリングなどのブロックレベルハンドシェイクシグナリングを超えたハンドシェイクシグナリングを含む。
注記されるように、非自己同期ポートは、ブロックレベルハンドシェイクシグナリングを利用する。ブロックレベルハンドシェイクシグナリングは、データ消費回路ブロックおよび/またはデータ生成回路ブロックがデータ転送に係る特定のメモリとの間でのシェイクシグナリングを行なわずにそれら自身の間でハンドシェイクシグナリングを行なうことを意味する。データ消費回路ブロックは、たとえばメモリとの付加的なハンドシェイクシグナリングを完了せずにブロックレベル開始ハンドシェイクを完了して、ローカルメモリ中のデータにアクセスし得る。データ生成回路ブロックは、ハンドシェイクシグナリングを完了せずにローカルメモリ中のデータにアクセスし、次にブロックレベルダンハンドシェイクシグナリングを行なってもよい。非自己同期ポートの場合、データ消費回路ブロックの処理の開始の前に、データ消費回路ブロックに与えるべきすべてのデータを準備して、データ消費回路ブロックがこれを利用可能になっていなければならない。
非自己同期ポートは、アドレスおよびデータ信号を有するローカルメモリを含む。当該回路構造により、記憶されているのとは異なる順序でデータを読出せるようになる。自己同期ポートまたは非自己同期ポートのいずれかを実現するのに用い得る例示的なローカルメモリは、ルックアップテーブル(LUT)ランダムアクセスメモリ、ブロックランダムアクセスメモリ、フリップフロップなどを含むが、これらに限定されない。電子システムをその中に実現すべきIC外部のメモリも「ローカルメモリ」として用いてもよい。
ブロック240で、システムは回路設計内に自動的にポートを生成する。各々のポートは、データ生成回路ブロックとデータ消費回路ブロックとを結合し、ブロック235で判断される種類として実現される。したがって、各々のポートは適切なメモリ種類を含む。回路設計内に回路ブロックまたはポートを生成することは、システムが、場合によっては回路ブロック、回路構成、またはポートを特定するHDLモジュールを生成し、回路設計内に当該HDLを含むことを意味する。ハードウェア記述モジュールは、まとめると、電子システムのための回路設計を形成する。したがって、この開示内では、「ハードウェア記述モジュール」、「回路」、「回路ブロック」、「ポート」、および/または「回路構成」という用語は、その時々によって相互交換可能に用いられることがある。
ブロック245で、システムは回路設計内で制御回路構成を自動的に生成する。制御回路構成は開始制御回路および終了制御回路を含み得る。制御回路構成は実際に、ハードウェアにおいてアルゴリズム的記述の制御フロー構文を実現する。
データ生成関数およびデータ消費関数を目的関数に接続するポートが自己同期であるか否かに依存して、制御回路構成は、必要な制御信号を生成して、制御フロー構文に従って、データ生成回路ブロックと、目的回路ブロックと、データ消費回路ブロックとの間でのデータの流れを実行するように構成される。制御信号の範囲は、少なくとも部分的に、実現例のために選択されるまたは判断されるポートの種類と、検出される制御フロー構文の種類とによって決まる。
1つの局面では、回路設計内でポートを生成することは、データ転送のために自動的にメモリを生成することを含む。たとえば、システムは、生成されるのとは異なる順序でデータが消費されるという判断に応答して、データ生成回路ブロックから目的回路ブロックへのデータ転送を容易にするアドレス指定可能メモリを自動的に挿入する。システムは、たとえばデータ消費順とは異なるデータ生成順などの同様の状況において、目的回路ブロックからデータ消費回路ブロックへのデータ転送を容易にするアドレス指定可能メモリを自動的に挿入してもよい。ある場合、メモリは、独立して書込または読出がなされ得る複数の独立した領域を含む、たとえばピンポンメモリなどのセグメント化されたメモリであってもよい。
別の例では、システムは、データ生成回路ブロックが生成したのと同じ逐次の順序で目的回路ブロックがデータを消費するという判断に応答して、データ生成回路ブロックから目的回路ブロックへのデータ転送を容易にするFIFOメモリを自動的に挿入する。システムは、同様の状況で目的回路ブロックからデータ消費回路ブロックへのデータ転送を容易にするFIFOメモリを自動的に挿入してもよい。
ブロック250で、システムは、記述の各関数毎に回路ブロックを自動的に生成する。ブロック255で、システムは、結果的に得られる回路設計を出力する。たとえば、システムは、持続的記憶デバイスなどのメモリ内に回路設計を記憶する。
図3−1および図3−2は、電子システムの記述からの回路設計の自動作製を示すブロック図である。図3−1および図3−2に示されるプロセスは、図1のシステムによって実現されてもよい。
図3−1は、回路設計を実現するのに非自己同期ポートを用いる電子システムの記述305を示す。記述305は、関数A、関数B、および関数Cと呼ばれる3つの関数を含む。この例では、記述305は、ループ型の制御フロー構文を含む。描かれるように、関数Bは制御フロー構文内に含有され、目的関数である。注記されるように、制御フロー構文内に含有される関数は、関数の実行が、たとえそれが条件付き実行および/または実行回数であっても、制御フロー構文によって直接に制御される関数である。
システムは回路設計310を生成している。回路設計310はグラフィックに図示されている。関数A、B、およびCの各々は、それぞれA、B、およびCの標識を有するブロックまたは回路ブロックとして回路設計310中に描かれている。関数A、B、およびCを回路ブロックに変換することに加えて、システムは制御回路構成315を自動的に挿入している。一般的に、制御回路構成315は、記述305中に同定される制御フロー構文のハードウェア実現例である。制御回路構成315は開始制御回路320および終了制御回路325を含む。
論じられるように、システムは、関数Aと関数Bとの間のデータ交換が非自己同期ポートとして実現されると判断している。システムは、メモリ330を挿入して回路ブロックAから回路ブロックBへのデータ転送を実行している。メモリ330はRAMである。システムはメモリ335も挿入して回路ブロックBから回路ブロックCへのデータ転送を実行している。メモリ335はRAMである。1つの局面では、アルゴリズム的記述305中に特定される任意のアレイは、たとえば、特定の回路ブロックによってアクセス可能なメモリ330および335などのRAMなどの2つ以上のローカルメモリに変換される。たとえばメモリ330および335などの各々それぞれのローカルメモリへのアクセスは、少なくとも部分的に制御回路構成315によって行なわれるハンドシェイクシグナリングによって制御されるまたは限定される。
図3−図6内で、データ信号経路は実線を用いて示され、制御信号は点線または破線で表わされる。たとえば、回路ブロックAからメモリ330、回路ブロックB、メモリ335、および回路ブロックCへの実線の矢印は、注目される回路ブロック間でのデータの流れを表わす。データ信号経路は、回路ブロックAと開始制御回路320との間および開始制御回路320と終了制御回路325との間にも存在する。アルゴリズム的記述305内の制御フロー構文の検出の結果、制御回路構成315が生成され、これにより、回路設計310がより多くのタスクを同時に行なえるようになる。回路設計310により、回路ブロックA、B、およびCがパイプライン化された態様で同時に動作できるようになる。
回路設計310内で、ループ制御が以下のように実現され得る。1つの局面では、回路ブロックAは開始制御回路320へダン制御信号をアサートして、回路ブロックBを含むループ処理の繰返しを開始させる。回路ブロックAは、データ経路を介して開始制御回路320へ、たとえばループ境界などのループについての終了条件を通信し、これは次にデータ経路を介して終了制御回路325に終了条件を通信する。
開始制御回路320は、ループボディ、すなわち回路ブロックB、の実行の各々の開始に応答して、回路ブロックBとの間でのシェイクシグナリングを行ない得る。これに応じて、開始制御回路320はループボディの実行の開始をカウントし得る。開始制御回路320はさらに、終了制御回路325にカウントを通信し得る、または実行開始の回数が終了条件にいつ達するかを終了制御回路325に通知し得る。終了制御回路325はさらに、ループボディの実行の各々の終了に応答して、回路ブロックBとの間でのシェイクシグナリングを行ない得る。終了制御回路325は、ループボディの実行の終了をカウントし、実行の終了のカウントが終了条件にいつ達するかを判断し得る。
終了制御回路325は、実行カウントの開始および実行カウントの終了の両者がループ境界に達したのに応答して、回路ブロックCとの間でのシェイクシグナリングを行なう。たとえば、開始制御回路320および終了制御回路325の両者がループ境界または終了条件に達したのに応答して、終了制御回路325は、回路ブロックCへ開始制御信号をアサートして、回路ブロックBを含むループを終了または完了してもよい。
データの流れに関して、たとえば回路ブロックAが生成するデータは、スペースが利用可能である場合は、メモリ330に押込まれる。回路設計310の実現例に依存して、データの流れのためのハンドシェイクシグナリングは、以前に別個のまたは付加的な配線として記述されたまたは実現された制御ハンドシェイクシグナリングの一部であってもよい。
回路ブロックBは、ループの各々の繰返しの間にメモリ330からデータを読出す。回路ブロックBが利用するデータは、回路ブロックBがループの最後の実行についてのデータの最後の読出を行なうまでメモリ330中に留まる。1つの局面では、開始制御回路320および終了制御回路325は、回路ブロックBとの間でのシェイクシグナリングを行なって、すべてのループボディの実行の開始の完了後にもはや必要なくなったデータを回路ブロックBがメモリ330から除去してもよいことを示す。他の場合、メモリ330中に記憶されるデータがもはや回路ブロックBによって必要とされないとシステムが判断すれば、システムは、より早期にそのようなハンドシェイクシグナリングをイネーブルし得る。
終了制御回路325は、回路ブロックBと回路ブロックCとの間でハンドシェイクシグナリングを行なって、回路ブロックBがメモリ335に出力するデータを回路ブロックCが消費または読出してもよいと示さなければならない。回路ブロックCにデータの利用可能性を知らせるように行なわれるハンドシェイクシグナリングは、記載されたように、ループボディのすべての実行の完了に応答して行なわれる。
メモリ330およびメモリ335は、さまざまな公知の物理的メモリデバイスのうち任意のものを用いて実現され得る。たとえば、メモリ330およびメモリ335は、その中に回路設計310が実現されるIC外部のルックアップテーブル(LUT)RAM、ブロックRAM、フリップフロップ、メモリを用いて実現され得る。さらに、メモリ330および335の記憶場所の数またはサイズは記述305の要件に従って異なる。
別の代替的な実現例では、開始制御回路320および終了制御回路325は、ループの各々の繰返し毎にハンドシェイクシグナリングを行なってもよい。ループの最後の繰返しは、開始制御回路320から終了制御回路325への別個の信号によって示され得る。ループの完了を示す開始制御回路320からの信号に応答して、終了制御回路325は、回路ブロックCとの必要なハンドシェイクシグナリングを行ない得る。
図3−2は、回路設計を実現するのに自己同期ポートを用いる例を示す。図3−2に示される例では、自己同期ポート350は、回路ブロックAから回路ブロックBにデータを渡すように実現される。自己同期ポート355は、回路ブロックBから回路ブロックCにデータを渡すように実現される。1つの局面では、自己同期ポート350および自己同期ポート355は、FIFOメモリを用いて実現される。別の局面では、自己同期ポート350および自己同期ポート355は、ローカルメモリを用いて実現される。別の局面では、自己同期ポート350または355のうち一方がFIFOメモリを用いて実現され得る一方で、自己同期ポート350または355の他方はローカルメモリを用いて実現される。
図4−1および図4−2は電子システムの記述からの別の回路設計の自動作製を示すブロック図である。図4−1および図4−2に示されるプロセスは図1のシステムによって実現され得る。
図4−1は、回路設計を実現するのに非自己同期ポートを用いる電子システムの記述305を示す。図4は、記述305が回路設計410に変換される代替的実現例を示す。回路設計410は、付加的なパイプライン化を容易にするように関数Bが複数の回路ブロックB1,B2、およびB3として実現されることを除き、図3−1の回路設計310と実質的に同様である。応じて、開始制御回路420は、回路ブロックB1との間でのシェイクシグナリングを行なう。終了制御回路425は、回路ブロックB3との間でのシェイクシグナリングを行なう。ハンドシェイクシグナリングは、回路ブロックB1とB2との間および回路ブロックB2とB3との間でも実現される。
図4−2は回路設計を実現するのに自己同期ポートを用いる例を示す。図4−2に示される例では、自己同期ポート450は、回路ブロックAから回路ブロックB1にデータを渡すように実現される。自己同期ポート455は、回路ブロックB3から回路ブロックCにデータを渡すように実現される。1つの局面では、自己同期ポート450および自己同期ポート455は、FIFOメモリを用いて実現される。別の局面では、自己同期ポート450および自己同期ポート455は、ローカルメモリを用いて実現される。別の局面では、自己同期ポート450または455の一方がFIFOメモリを用いて実現され得る一方で、自己同期ポート450または455の他方はローカルメモリを用いて実現される。
図5は電子システムの記述からの別の回路設計の自動作製を示すブロック図である。図5に示されるプロセスは図1のシステムによって実現され得る。図5は電子システムの記述505を示す。記述505は、関数A、関数B1、関数B2、および関数Cと呼ばれる4つの関数を含む。この例では、アルゴリズム的記述505は「if-then-else」型の制御フロー構文を含む。描かれるように、両方の関数B1およびB2は、相互に排他的な実行オプションとして制御フロー構文内に含有される。
システムは回路設計510を生成している。回路設計510がグラフィックに図示される。関数A、B1、B2、およびCの各々は、それぞれA、B1、B2、およびCと標識付けられる回路または回路ブロックとして回路設計510中に描かれる。システムは制御回路構成515を自動的に挿入する。制御回路構成515は、記述505中に同定される「if-then-else」制御フロー構文のハードウェア実現例である。制御回路構成515は、開始制御回路520および終了制御回路525を含む。
図5の例では、システムは非自己同期ポートを生成する。システムはさらに、メモリ530を挿入して、回路ブロックAから回路ブロックB1またはB2へのデータ転送を実行している。システムは、メモリ535も挿入して回路ブロックB1またはB2から回路ブロックCへのデータ転送を実行している。たとえばメモリ530および535などの各々それぞれのローカルメモリへのアクセスは、制御回路構成515によって行なわれるハンドシェイクシグナリングによって制御または限定される。メモリ530および535はRAM型のメモリである。
たとえば、開始制御回路構成520は、回路ブロックAからダン信号を受信し得る。ダン制御信号に応答して、開始制御回路構成520は、回路ブロックAから開始制御回路520に渡される制御フロー構文の条件に従って、回路ブロックB1または回路ブロックB2へ開始制御信号をアサートまたは出力し得る。終了制御回路525は、場合によっては、回路ブロックB1またはB2からダン制御信号を受信し、それに応答して回路ブロックCへ開始制御信号をアサートまたは出力し得る。
図6は電子システムの記述からの別の回路設計の自動作製を示すブロック図である。図6に示されるプロセスは図1のシステムによって実現され得る。図6は、システムが記述605から回路設計610を生成し、かつ非自己同期ポートを用いる、より詳細な図示を提示する。
回路設計610内で、システムは、関数の入力および出力の各々がメモリとして実現されると判断する。示されるように、回路設計610は、出力Aのための出力Aメモリ、出力B1のための出力B1メモリ、および出力B2のための出力B2メモリを含む。図示の容易のため、データを回路ブロックAに与えてデータを回路ブロックCから受信するメモリは示していない。
図6の例では、出力Aメモリ、出力B1メモリ、および出力B2メモリの各々は、ピンポンメモリとして、または異なるデータセットのための回路ブロックの並列もしくは同時実行を容易にするために少なくとも2つの別個の記憶領域を有するメモリとして実現され得る。たとえば、回路ブロックAが動作を完了すると、結果は、出力Aメモリの第1の記憶領域に記憶され得る。関数Bは入力として「出力A」を受信するので、回路ブロックAは、開始制御回路620へダン制御信号をアサートする。回路ブロックAからのダン制御信号は、回路ブロックB1およびB2を含むループの実行を開始する。回路ブロックAは、結果とともに次のデータセットが出力Aメモリの第2の領域に記憶されると、動作を開始し得る。このように、回路ブロックB1は、回路ブロックAが出力Aメモリの第2の領域に書込む間、出力Aメモリの第1の領域にアクセスし続け得る。
開始制御回路620は、回路ブロックB1へ制御信号をアサートすることによってループ実行を開始する。開始制御回路620は、ループ脱出条件が真であると判断されるまで、新たなループ繰返しを開始し続け得る。回路ブロックB1が動作を完了すると、結果的に得られるデータは、出力B1メモリの第1の領域に記憶される。回路ブロックB1はさらに、回路ブロックB2へ開始信号制御信号をアサートする。回路ブロックB2は、出力B1メモリの第1の領域に記憶されるデータに対する動作を開始する。一方、回路ブロックB1は、次の繰返しのための計算を開始し得る。これがループの最後の繰返しであれば、開始制御論理は新たなループ開始を開始してもよく、ブロックB1は、出力Aメモリの第2の領域から次のデータセットを取出すことによって計算を開始することができる。回路ブロックB1によって生成されるデータは、出力B1メモリの第2の領域に記憶される。
回路ブロックB1および回路ブロックB2がループについてのすべての繰返しを終えると、終了制御回路625は、回路ブロックCへの開始制御信号をアサートする。終了制御回路625からの開始制御信号に応答して、回路ブロックCは、出力B2メモリから処理のためのデータを取得する。
図7は、自己同期ポートを用いる電子システムの例示的な記述705を示す。記述705内で宣言されるような関数AとB1とB2とCとの間で交換されるデータは、ストリームデータ型によって通信される。システムは記述705を評価し、記述自体からおよびストリームデータ型の使用から、回路設計内で自己同期ポートを用い得ると判断する。
図8は自己同期ポートを用いる電子システムの別の例示的な記述805を示す。記述805の場合、システムはプロデューサ関数を分析し、データが0〜N−1の指数から逐次の順序で生成されることを見出す。システムはさらにコンシューマー関数を分析し、プロデューサ関数が生成するデータがプロデューサ関数が生成するのと同じ順序で消費されると判断する。システムはFIFOメモリを用いる。というのも、システムは、データ生成順および消費順が同じであることを証明または判断することができるからである。1つの局面では、生成されるのと同じ逐次の順序でデータが消費されるとシステムが判断または証明できない場合、システムは、その条件を、生成されるのと同じ逐次の順序でデータが消費されないという判断と均等であると評価する。
図9は、この明細書内に開示される実施形態に従うICのための例示的なアーキテクチャ900を示すブロック図である。アーキテクチャ900は、たとえばフィールドプログラマブルゲートアレイ(FPGA)型のIC内において実現可能である。この明細書内に記載されるさまざまな回路設計は、たとえばコンフィギュレーションビットストリームに変換されかつアーキテクチャ900を用いてICにロードされるなど、さらに処理され得る。
示されるように、アーキテクチャ900は、たとえば、論理、ブロックなどのいくつかの異なる種類のプログラマブル回路を含む。たとえば、アーキテクチャ900は、マルチギガビットトランシーバ(MGT)901、コンフィギュラブル論理ブロック(CLB)902、ランダムアクセスメモリブロック(BRAM)903、入/出力ブロック(IOB)904、コンフィギュレーションおよびクロッキング論理(CONFIG/CLOCKS)905、デジタル信号処理ブロック(DSP)906、特化されたI/Oブロック907(たとえばコンフィギュレーションポートおよびクロックポート)、およびデジタルクロックマネージャ、アナログ−デジタルコンバータ、システム監視論理などの他のプログラマブル論理908を含む多数の異なるプログラマブルタイルを含むことができる。
いくつかのICでは、各々のプログラマブルタイルは、各々の隣接するタイルにおいて対応の相互接続素子(INT)911へのまたはそれからの規格化接続を有するプログラマブルINT911を含む。したがって、INT911は、ともに、図示されるICのためのプログラマブル相互接続構造を実現する。各々のINT911は、図9の一番上に含まれる例に示されるように、同じタイル内にプログラマブル論理素子へのおよびそれからの接続も含む。
たとえば、CLB902は、ユーザ論理プラス単一のINT911を実現するようにプログラミングされ得るコンフィギュラブル論理素子(CLE)912を含むことができる。BRAM903は、1つ以上のINT911に加えて、BRAM論理素子(BRL)913を含むことができる。典型的に、タイルに含まれるINT911の数はタイルの高さに依存する。描かれる実施形態では、BRAMタイルは5つのCLBと同じ高さを有するが、他の数(たとえば4)も用いることもできる。DSPタイル906は、適切な数のINT911に加えて、DSP論理素子(DSPL)914を含むことができる。IOB904は、INT911の1つのインスタンスに加えて、たとえば、I/O論理素子(IOL)915の2つのインスタンスを含むことができる。当業者には明らかなように、たとえば、IOL915に接続される実際のI/Oパッドは典型的に、IOL915の区域に閉じ込められるわけではない。
図9に描かれる例では、たとえば、領域905、907、および908から形成される、ダイの中心近くのカラムナ区域をコンフィギュレーション、クロック、および他の制御論理のために用いることができる。このカラムから延在する水平方向の区域909は、プログラマブルICの幅にわたってクロックおよびコンフィギュレーション信号を分配するのに用いられる。
図9に示されるアーキテクチャを利用するいくつかのICは、ICの大きな部分を構成する規則的なカラムナ構造を中断させる付加的な論理ブロックを含む。付加的な論理ブロックは、プログラマブルブロックおよび/または専用回路構成であり得る。たとえば、PROC910として描かれるプロセッサブロックは、CLBおよびBRAMのいくつかの列にわたる。
1つの局面では、PROC910は、専用回路構成として、たとえば、ICのプログラマブル回路構成を実現するダイの一部として作製されるハードワイヤードプロセッサとして実現される。PROC910は、複雑さの範囲がプログラムコードを実行することができる単一のコアなどの個別のプロセッサから1つ以上のコア、モジュール、コプロセッサ、インターフェイスなどを有するプロセッサシステム全体に及ぶ、さまざまな異なるプロセッサ種類および/またはシステムの任意のものを表わすことができる。
別の局面では、PROC910は、アーキテクチャ900から省略され、かつ記載されるプログラマブルブロックの他の種類のうち1つ以上で置き換えられる。さらに、PROC910の場合にそうであるように、プログラムコードを実行することができるプロセッサを形成するようにプログラマブル回路構成のさまざまなブロックを利用することができるという点で、そのようなブロックを利用して「ソフトプロセッサ」を形成することができる。
「プログラマブル回路構成」という文言は、本明細書中に記載されるさまざまなプログラマブルまたはコンフィギュラブル回路ブロックまたはタイルなどのIC内のプログラマブル回路素子、ならびにIC中にロードされるコンフィギュレーションデータに従ってさまざまな回路ブロック、タイル、および/または素子を選択的に結合する相互接続回路構成を指すことができる。たとえば、CLB902およびBRAM903などのPROC910外部の図9に示される部分をICのプログラマブル回路構成と考えることができる。
一般的に、プログラマブル回路構成の機能性は、コンフィギュレーションデータがICにロードされるまでは確立されない。コンフィギュレーションビットの組は、FPGAなどのICのプログラマブル回路構成をプログラミングするのに用いることができる。コンフィギュレーションビットは典型的に、「コンフィギュレーションビットストリーム」と称される。一般的に、プログラマブル回路構成は、コンフィギュレーションビットストリームをまずICにロードすることなくして動作または機能しない。コンフィギュレーションビットストリームは、プログラマブル回路構成内に特定の回路設計を有効に実現するまたはインスタンス化する。回路設計は、たとえば、プログラマブル回路ブロックの機能的局面およびさまざまなプログラマブル回路ブロック間の物理的接続性を特定する。
「配線接続される(hardwired)」または「ハード化された(hardened)」、すなわちプログラマブルでない、回路構成は、ICの一部として製造される。プログラマブル回路構成とは異なり、配線接続された回路構成または回路ブロックは、コンフィギュレーションビットストリームのロードによるICの製造後には実現されない。配線接続された回路構成は一般的に、たとえばPROC910などのICにコンフィギュレーションビットストリームをまずロードすることなく機能する、たとえば専用の回路ブロックおよび相互接続を有すると考えられる。
ある事例では、配線接続された回路構成は、IC内の1つ以上のメモリ素子に記憶されるレジスタ設定または値に従って設定または選択され得る1つ以上の動作モードを有することができる。動作モードは、たとえば、コンフィギュレーションビットストリームをICにロードすることによって設定可能である。このようにできるにも拘らず、配線される回路構成はプログラマブル回路構成とは考えられない。というのも、配線接続される回路構成は、ICの一部として製造されると、動作可能でありかつ特定の機能を有するからである。
図9は、たとえばプログラマブルファブリックなどのプログラマブル回路構成を含むICを実現するために用いることができる例示的なアーキテクチャを示すことが意図される。たとえば、列中の論理ブロックの数、列の相対的な幅、列の数および順序、列に含まれる論理ブロックの種類、論理ブロックの相対的な大きさ、ならびに図9の一番上に含まれる相互接続/論理実現例は、純粋に例示的である。たとえば、実際のICでは、ユーザ回路設計の効率的な実現を容易にするために、CLBが現われる場所にはどこにでも、1つよりも多くのCLBの隣接する列が典型的に含まれる。しかしながら、隣接するCLB列の数はICの全体サイズによって異なり得る。さらに、IC内のPROC910などのブロックのサイズおよび/または位置決めは、図示の目的のみのためであり、この明細書に開示される1つ以上の実施形態の限定として意図されるものではない。
本明細書に開示される発明の構成に従うと、電子システムの記述は、制御フロー構文を同定するように評価され得る。記述から回路設計を生成する際、制御回路構成は、制御フロー構文の機能性を実現する回路設計中に挿入される。制御回路構成は、並列性を増大させ、効率的にリソースを使用し、かつ結果的に得られる回路設計を増大させるために、ハンドシェイクシグナリングなどの機能を果たす。
説明の目的のため、本明細書中に開示されるさまざまな発明の概念の完全な理解を与えるために具体的な術語を述べる。しかしながら、本明細書中で用いる術語は発明の構成の特定の局面を記載する目的のためのみのものであり、限定的であることを意図していない。
本明細書中で用いるような用語「a」および「an」は、1または1よりも多くとして定義される。本明細書中で用いるような用語「複数」は、2または2よりも多くとして定義される。本明細書中で用いるような用語「別の」は、少なくとも第2のものまたはそれ以上として定義される。本明細書中で用いるような用語「結合される」は、他に示されなければ、一切の介入要素なしに直接にまたは1つ以上の介入要素が存在して間接的に接続されると定義される。2つの要素は、通信チャネル、経路、ネットワーク、またはシステムを通して、機械的に、電気的に、または通信するようにリンクされて結合されることもできる。
本明細書中で用いるような用語「および/または」は、関連付けられて列挙される項目のうち1つ以上のありとあらゆる可能な組合せを指しかつそれらを包含する。この開示で用いられる際の用語「含む」および/または「含んでいる」は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を特定するが、その1つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはその群の存在または追加を排除するものではないことがさらに理解される。第1、第2などの用語を本明細書中で用いてさまざまな要素を記載することがあるが、これらの用語は1つの要素を別の要素から区別するためにのみ用いられているため、これらの要素はこれらの用語によって限定されるべきではないことも理解される。
用語「ならば」は、文脈に依存して、「とき」または「すると」または「判断することに応答して」または「検出することに応答して」を意味すると解釈されることがある。同様に、「と判断されれば」または「[述べられた条件またはイベント]が検出されれば」という文言は、文脈に依存して、「判断すると」または「判断することに応答して」または「[述べられた条件またはイベント]を検出すると」または「[述べられた条件またはイベント]を検出したことに応答して」を意味すると解釈されることがある。
この開示内で、同じ参照符号は、端子、信号線、配線、およびそれらの対応の信号を参照するのに用いられる。この点において、「信号」、「配線」、「接続」、「端子」、および「ピン」という用語は、その時々によってこの開示内で相互交換可能に用いられることがある。「信号」、「配線」などの用語は、たとえば、単一の配線を通した単一のビットの搬送または複数の並列の配線を通した複数の並列のビットの搬送などの、1つ以上の信号を表わすことができることも認めるべきである。さらに、各々の配線または信号は、場合によっては、信号または配線によって接続される2つ以上の構成要素同士の間の双方向通信を表わすことがある。
この開示内に記載される1つ以上の局面は、ハードウェアにおいてまたはハードウェアとソフトウェアとの組合せにおいて実現可能である。1つ以上の局面は、1つのシステムにおいて集中された態様で、または異なる素子がいくつかの相互接続されたシステムにわたって広がっている分散された態様で、実現することができる。本明細書中に記載される方法の少なくとも一部を実行するように適合される任意の種類のデータ処理システムまたは他の装置が適している。
1つ以上の局面はさらに、本明細書中に記載の方法の実現例を可能化するすべての特徴を含むコンピュータプログラム製品に埋込まれることができる。コンピュータプログラム製品は、コンピュータ読出可能データ記憶媒体を含む。本明細書中に規定されるように、「コンピュータ読出可能記憶媒体」という用語は、命令実行システム、装置、またはデバイスが用いるためのまたはそれに関連したプログラムコードを内蔵するまたは記憶する記憶媒体を意味する。コンピュータ読出可能記憶媒体は非一時的であり、そのためそれ自体一時的に伝播する信号ではない。コンピュータ読出可能記憶媒体の例は、光学的媒体、磁気的媒体、光磁気媒体、ランダムアクセスメモリなどのコンピュータメモリ、たとえばハードディスクなどのバルク記憶デバイスなどを含み得るが、それらに限定されない。
図中のフロー図およびブロック図は、本明細書中に開示される発明の構成のさまざまな局面に従って、システム、方法、およびコンピュータプログラム製品の可能な実現例のアーキテクチャ、機能性、および動作を示す。この点において、フロー図またはブロック図中の各ブロックは、特定される論理的機能を実現するための1つ以上の実行可能な命令を含むモジュール、セグメント、またはコードの一部を表わすことがある。いくつかの代替的な実現例では、ブロック中に注記される機能は、図に注記される順序を外れて生じることがあることにも注目すべきである。たとえば、関与する機能性に依存して、続けて示される2つのブロックが実質的に同時に実行されることがあったり、またはブロックが逆の順で実行されたりすることがあり得る。ブロック図および/またはフロー図の図示の各ブロック、ならびにブロック図および/またはフロー図の図示中のブロックの組合せは、特定される機能もしくはアクトを行なう特殊用途ハードウェアベースのシステムまたは特殊用途ハードウェアとコンピュータ命令との組合せによって実現可能であることも注記される。
このように、この開示を通じて、「処理」または「計算」または「算出」または「判断」または「表示」などの用語を利用する表現は、コンピュータシステムのレジスタおよび/またはメモリ内の物理的(電子的)量として表わされるデータを操作する、かつこれをコンピュータシステムメモリおよび/またはレジスタもしくは他のそのような情報記憶、送信、もしくは表示デバイス内の物理的量として同様に表わされる他のデータに変換する、たとえばコンピュータシステムまたは同様の電子計算デバイスなどのデータ処理システムの行為およびプロセスを指す。
以下の請求項中のすべての手段またはステッププラス機能要素の対応の構造、材料、アクト、および均等物は、具体的に請求されるような他の請求される要素と組合せて、機能を果たすための任意の構造、材料、またはアクトを含むことが意図される。
方法は、高位プログラミング言語記述の第1の関数と、高位プログラミング記述の制御フロー構文内に含有される第2の関数とを判断することと、第2の関数が第1の関数のデータ消費関数であると判断することと、回路設計内で、プロセッサを用いて、ローカルメモリを含むポートを自動的に生成することとを含む。ポートは、回路設計内で、第1の関数の第1の回路ブロック実現例を第2の関数の第2の回路ブロック実現例に結合する。
方法は、非自己同期ポートとして、第1の回路ブロックと第2の回路ブロックとの間でハンドシェイクシグナリングを行なうことによって、回路設計内で、第2の回路ブロックの動作を制御する制御回路構成を自動的に生成することを含んでもよい。
1つの局面では、制御回路構成を自動的に生成することは、フロー制御構文を実現する開始制御回路と終了制御回路とを生成することを含んでもよい。
別の局面では、制御回路構成を自動的に生成することは、第1の回路ブロックからダン制御信号を受信することに応答して制御フロー構文の条件に従って開始制御信号を第2の回路ブロックまたは第3の回路ブロックに出力する開始制御回路を生成することを含んでもよい。第2の回路ブロックまたは第3の回路ブロックからダン制御信号を受信することに応答して開始制御信号を第4の回路ブロックに与える終了制御回路が生成されてもよい。第4の回路ブロックは、第2の関数または第3の関数のデータ消費関数である関数から生成される。
別の局面では、制御回路構成を自動的に生成することは、第1の回路ブロックからダン制御信号を受信することに応答して制御フロー構文の条件に従って開始制御信号を第2の回路ブロックに出力する開始制御回路を生成することを含んでもよい。第2の回路ブロックからダン制御信号を受信することに応答して開始制御信号を第3の回路ブロックに与える終了制御回路が生成されてもよい。第3の回路ブロックは、第2の関数のデータ消費関数である第3の関数から生成される。
また別の局面では、制御回路構成を自動的に生成することは、第1の回路ブロックからダン制御信号を受信することに応答して第2の回路ブロックに開始制御信号を出力する開始制御回路を生成することを含んでもよい。制御フロー構文の終了条件が満たされると判断することに応答して開始制御信号を第3の回路ブロックに与える終了制御回路が生成されてもよい。第3の回路ブロックは、第2の関数のデータ消費関数である第3の関数から生成される。
開始制御回路は、フロー制御構文の終了条件を終了制御回路に通信してもよい。さらに、終了制御回路は、開始制御回路および終了制御回路の両者が終了条件を検出することに応答して開始制御信号を第3の回路ブロックに与えてもよい。
システムは、実行可能な動作を開始するようにプログラミングされるプロセッサを含む。実行可能な動作は、高位プログラミング言語記述の第1の関数と高位プログラミング記述の制御フロー構文内に含有される第2の関数とを判断することと、第2の関数が第1の関数のデータ消費関数であると判断することと、回路設計内で、ローカルメモリを含むポートを自動的に生成することとを含む。ポートは、回路設計内で、第1の関数の第1の回路ブロック実現例を第2の関数の第2の回路ブロック実現例に結合する。
実行可能な動作は、非自己同期ポートとして、第1の回路ブロックと第2の回路ブロックとの間でハンドシェイクシグナリングを行なうことによって、回路設計内で、第2の回路ブロックの動作を制御する制御回路構成を自動的に生成することを含んでもよい。
1つの局面では、制御回路構成を自動的に生成することは、フロー制御構文を実現する開始制御回路と終了制御回路とを生成することを含んでもよい。
別の局面では、制御回路構成を自動的に生成することは、第1の回路ブロックからダン制御信号を受信することに応答して制御フロー構文の条件に従って開始制御信号を第2の回路ブロックまたは第3の回路ブロックに出力する開始制御回路を生成することを含んでもよい。第2の回路ブロックまたは第3の回路ブロックからダン制御信号を受信することに応答して開始制御信号を第4の回路ブロックに与える終了制御回路が生成されてもよい。第4の回路ブロックは、第2の関数または第3の関数のデータ消費関数である関数から生成される。
別の局面では、制御回路構成を自動的に生成することは、第1の回路ブロックからダン制御信号を受信することに応答して制御フロー構文の条件に従って開始制御信号を第2の回路ブロックに出力する開始制御回路を生成することを含む。第2の回路ブロックからダン制御信号を受信することに応答して開始制御信号を第3の回路ブロックに与える終了制御回路が生成されてもよい。第3の回路ブロックは、第2の関数のデータ消費関数である第3の関数から生成される。
また別の局面では、制御回路構成を自動的に生成することは、第1の回路ブロックからダン制御信号を受信することに応答して第2の回路ブロックに開始制御信号を出力する開始制御回路を生成することを含んでもよい。制御フロー構文の終了条件が満たされると判断することに応答して開始制御信号を第3の回路ブロックに与える終了制御回路が生成されてもよい。第3の回路ブロックは、第2の関数のデータ消費関数である第3の関数から生成される。
開始制御回路は、フロー制御構文の終了条件を終了制御回路に通信してもよい。さらに、終了制御回路は、開始制御回路および終了制御回路の両者が終了条件を検出することに応答して、開始制御信号を第3の回路ブロックに与えてもよい。
非一時的コンピュータ読出可能記憶媒体は、その上に記憶される命令を含む。命令は、プロセッサによって実行されると、方法を実行する。方法は、高位プログラミング言語記述の第1の関数と高位プログラミング記述の制御フロー構文内に含有される第2の関数とを判断することと、第2の関数が第1の関数のデータ消費関数であると判断することと、回路設計内で、ローカルメモリを含むポートを自動的に生成することとを含む。ポートは、回路設計内で、第1の関数の第1の回路ブロック実現例を第2の関数の第2の回路ブロック実現例に結合する。
方法は、非自己同期ポートとして、第1の回路ブロックと第2の回路ブロックとの間でハンドシェイクシグナリングを行なうことによって、回路設計内で、第2の回路ブロックの動作を制御する制御回路構成を自動的に生成することを含んでもよい。
1つの局面では、制御回路構成を自動的に生成することは、フロー制御構文を実現する開始制御回路と終了制御回路とを生成することを含んでもよい。
開始制御回路はフロー制御構文の終了条件を終了制御回路に通信してもよい。
この開示内に記載される特徴は、その精神または必須の属性から逸脱することなく他の形態で具体化されることができる。したがって、そのような特徴および実現例の範囲を示すものとして、以上の開示よりもむしろ以下の請求項を参照すべきである。

Claims (15)

  1. プロセッサが実行する方法であって、
    高位プログラミング言語記述の第1の関数と、前記高位プログラミング記述の制御フロー構文内に含有される第2の関数とを判断することと、
    前記第2の関数が前記第1の関数のデータ消費関数であると判断することと、
    回路設計内で、ローカルメモリを備えるポートを自動的に生成することとを備え、
    前記ポートは、前記回路設計内で、前記第1の関数の第1の回路ブロック実現例を前記第2の関数の第2の回路ブロック実現例に結合し、さらに
    非自己同期ポートとして、前記第1の回路ブロックと前記第2の回路ブロックとの間でハンドシェイクシグナリングを行なうことによって、前記回路設計内で、前記第2の回路ブロックの動作を制御する制御回路構成を自動的に生成することを備え、前記制御回路構成は、前記第2の回路ブロック実現例を制御する前記制御フロー構文を実現する、方法。
  2. 制御回路構成を自動的に生成することは、前記制御フロー構文を実現する際に互いと通信するように構成される開始制御回路と終了制御回路とを生成することを備え、前記開始制御回路は、前記第1の回路ブロック実現例から前記制御フロー構文についての終了条件を受信しかつ前記終了制御回路に前記終了条件を与え、前記開始制御回路は前記第2の回路ブロック実現例の実行の開始をカウントし、前記終了制御回路は前記第2の回路ブロック実現例の実行の終了をカウントし、前記終了制御回路は、前記第2の回路ブロック実現例の回路ブロックコンシューマとのハンドシェイクシグナリングを行ない、前記開始制御回路からの実行の前記開始の回数が前記終了条件に到達しかつ実行の前記終了の回数が前記終了条件に到達することに応答して、データを消費に利用可能であることを示す、請求項1に記載の方法。
  3. 制御回路構成を自動的に生成することは、前記制御フロー構文を実現する際に互いと通信するように構成される開始制御回路と終了制御回路とを生成することを備え、前記開始制御回路は、前記第1の回路ブロック実現例から前記制御フロー構文についての終了条件を受信し、前記第2の回路ブロック実現例の実行の開始をカウントし、実行の前記開始の回数が前記終了条件に到達すると前記終了制御回路に通知し、前記終了制御回路は、前記第2の回路ブロック実現例の回路ブロックコンシューマとのハンドシェイクシグナリングを行ない、前記開始制御回路からの前記通知に応答してデータを消費に利用可能であることを示し、前記第2の回路ブロック実現例の実行の終了の回数が前記開始制御回路から与えられる前記終了条件に到達すると判断する、請求項1に記載の方法。
  4. 制御回路構成を自動的に生成することは、前記第1の回路ブロックからダン制御信号を受信することに応答して前記制御フロー構文の条件に従って開始制御信号を前記第2の回路ブロックまたは第3の回路ブロックに出力する開始制御回路を生成することを備え、前記第3の回路ブロックは、第3の関数から生成され、制御回路構成を自動的に生成することはさらに、
    前記第2の回路ブロックまたは前記第3の回路ブロックからダン制御信号を受信することに応答して開始制御信号を第4の回路ブロックに与える終了制御回路を生成することを備え、
    前記第4の回路ブロックは、前記第2の関数または前記第3の関数のデータ消費関数である関数から生成され、前記第3の関数は、前記第1の関数のデータ消費関数である、請求項1に記載の方法。
  5. 制御回路構成を自動的に生成することは、
    前記第1の回路ブロックからダン制御信号を受信することに応答して前記制御フロー構文の条件に従って開始制御信号を前記第2の回路ブロックに出力する開始制御回路を生成することと、
    前記第2の回路ブロックからダン制御信号を受信することに応答して開始制御信号を第3の回路ブロックに与える終了制御回路を生成することとを備え、
    前記第3の回路ブロックは、前記第2の関数のデータ消費関数である第3の関数から生成される、請求項1に記載の方法。
  6. 制御回路構成を自動的に生成することは、
    前記第1の回路ブロックからダン制御信号を受信することに応答して前記第2の回路ブロックに開始制御信号を出力する開始制御回路を生成することと、
    前記制御フロー構文の終了条件が満たされると判断することに応答して開始制御信号を第3の回路ブロックに与える終了制御回路を生成することとを備え、
    前記第3の回路ブロックは、前記第2の関数のデータ消費関数である第3の関数から生成される、請求項1に記載の方法。
  7. 前記開始制御回路は、前記フロー制御構文の前記終了条件を前記終了制御回路に通信する、請求項6に記載の方法。
  8. 前記終了制御回路は、前記開始制御回路および前記終了制御回路の両者が前記終了条件を検出することに応答して前記開始制御信号を前記第3の回路ブロックに与える、請求項7に記載の方法。
  9. システムであって、
    実行可能な動作を開始するようにプログラミングされるプロセッサを備え、前記実行可能な動作は、
    高位プログラミング言語記述の第1の関数と前記高位プログラミング記述の制御フロー構文内に含有される第2の関数とを判断することと、
    前記第2の関数が前記第1の関数のデータ消費関数であると判断することと、
    回路設計内で、ローカルメモリを備えるポートを自動的に生成することとを備え、
    前記ポートは、前記回路設計内で、前記第1の関数の第1の回路ブロック実現例を前記第2の関数の第2の回路ブロック実現例に結合し、さらに前記実行可能な動作は、
    非自己同期ポートとして、前記第1の回路ブロックと前記第2の回路ブロックとの間でハンドシェイクシグナリングを行なうことによって、前記回路設計内で、前記第2の回路ブロックの動作を制御する制御回路構成を自動的に生成することを備え、前記制御回路構成は、前記第2の回路ブロック実現例を制御する前記制御フロー構文を実現する、システム。
  10. 制御回路構成を自動的に生成することは、前記制御フロー構文を実現する際に互いと通信するように構成される開始制御回路と終了制御回路とを生成することを備え、前記開始制御回路は、前記第1の回路ブロック実現例から前記制御フロー構文についての終了条件を受信しかつ前記終了制御回路に前記終了条件を与え、前記開始制御回路は前記第2の回路ブロック実現例の実行の開始をカウントし、前記終了制御回路は前記第2の回路ブロック実現例の実行の終了をカウントし、前記終了制御回路は、前記第2の回路ブロック実現例の回路ブロックコンシューマとのハンドシェイクシグナリングを行ない、前記開始制御回路からの実行の前記開始の回数が前記終了条件に到達しかつ実行の前記終了の回数が前記終了条件に到達することに応答して、データを消費に利用可能であることを示す、請求項9に記載のシステム。
  11. 制御回路構成を自動的に生成することは、前記制御フロー構文を実現する際に互いと通信するように構成される開始制御回路と終了制御回路とを生成することを備え、前記開始制御回路は、前記第1の回路ブロック実現例から前記制御フロー構文についての終了条件を受信し、前記第2の回路ブロック実現例の実行の開始をカウントし、実行の前記開始の回数が前記終了条件に到達すると前記終了制御回路に通知し、前記終了制御回路は、前記第2の回路ブロック実現例の回路ブロックコンシューマとのハンドシェイクシグナリングを行ない、前記開始制御回路からの前記通知に応答してデータを消費に利用可能であることを示し、前記第2の回路ブロック実現例の実行の終了の回数が前記開始制御回路から与えられる前記終了条件に到達すると判断する、請求項9に記載のシステム。
  12. 制御回路構成を自動的に生成することは、前記第1の回路ブロックからダン制御信号を受信することに応答して前記制御フロー構文の条件に従って開始制御信号を前記第2の回路ブロックまたは第3の回路ブロックに出力する開始制御回路を生成することを備え、前記第3の回路ブロックは、第3の関数から生成され、制御回路構成を自動的に生成することはさらに、
    前記第2の回路ブロックまたは前記第3の回路ブロックからダン制御信号を受信することに応答して開始制御信号を第4の回路ブロックに与える終了制御回路を生成するこを備え、
    前記第4の回路ブロックは、前記第2の関数または前記第3の関数のデータ消費関数である関数から生成され、前記第3の関数は、前記第1の関数のデータ消費関数である、請求項9に記載のシステム。
  13. 制御回路構成を自動的に生成することは、
    前記第1の回路ブロックからダン制御信号を受信することに応答して前記制御フロー構文の条件に従って開始制御信号を前記第2の回路ブロックに出力する開始制御回路を生成することと、
    前記第2の回路ブロックからダン制御信号を受信することに応答して開始制御信号を第3の回路ブロックに与える終了制御回路を生成することとを備え、
    前記第3の回路ブロックは、前記第2の関数のデータ消費関数である第3の関数から生成される、請求項9に記載のシステム。
  14. 制御回路構成を自動的に生成することは、
    前記第1の回路ブロックからダン制御信号を受信することに応答して前記第2の回路ブロックに開始制御信号を出力する開始制御回路を生成することと、
    前記制御フロー構文の終了条件が満たされると判断することに応答して開始制御信号を第3の回路ブロックに与える終了制御回路を生成することとを備え、
    前記第3の回路ブロックは、前記第2の関数のデータ消費関数である第3の関数から生成される、請求項9に記載のシステム。
  15. 前記開始制御回路は前記フロー制御構文の前記終了条件を前記終了制御回路に通信し、前記終了制御回路は、前記開始制御回路および前記終了制御回路の両者が前記終了条件を検出することに応答して前記開始制御信号を前記第3の回路ブロックに与える、請求項14に記載のシステム。
JP2016570796A 2014-06-02 2015-06-02 高位合成におけるシステムアーキテクチャの抽出 Active JP6655028B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/294,062 US9449131B2 (en) 2014-06-02 2014-06-02 Extracting system architecture in high level synthesis
US14/294,062 2014-06-02
PCT/US2015/033693 WO2015187635A1 (en) 2014-06-02 2015-06-02 Extracting system architecture in high level synthesis

Publications (2)

Publication Number Publication Date
JP2017518577A JP2017518577A (ja) 2017-07-06
JP6655028B2 true JP6655028B2 (ja) 2020-02-26

Family

ID=53404920

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016570796A Active JP6655028B2 (ja) 2014-06-02 2015-06-02 高位合成におけるシステムアーキテクチャの抽出

Country Status (6)

Country Link
US (1) US9449131B2 (ja)
EP (1) EP3149577B1 (ja)
JP (1) JP6655028B2 (ja)
KR (1) KR102358940B1 (ja)
CN (1) CN106462431B (ja)
WO (1) WO2015187635A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9922150B1 (en) * 2014-11-11 2018-03-20 Altera Corporation Method and apparatus for satisfying operating conditions in a system design using an electronic design automation tool
US9710584B1 (en) 2016-03-23 2017-07-18 Xilinx, Inc. Performance of circuitry generated using high-level synthesis
US9824172B1 (en) 2016-03-23 2017-11-21 Xilinx, Inc. Performance of circuitry generated using high-level synthesis
US10671779B1 (en) * 2018-07-09 2020-06-02 Xilinx, Inc. Function calls in high level synthesis
US11238199B1 (en) 2020-12-09 2022-02-01 Xilinx, Inc. High-level synthesis vector library for single-instruction multiple data programming and electronic system design
US11651127B2 (en) 2021-08-11 2023-05-16 Xilinx, Inc. Placement of logic based on relative activation rates
US11836426B1 (en) 2022-08-15 2023-12-05 Xilinx, Inc. Early detection of sequential access violations for high level synthesis

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603043A (en) 1992-11-05 1997-02-11 Giga Operations Corporation System for compiling algorithmic language source code for implementation in programmable hardware
US5535342A (en) 1992-11-05 1996-07-09 Giga Operations Corporation Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols
GB2317245A (en) * 1996-09-12 1998-03-18 Sharp Kk Re-timing compiler integrated circuit design
JP3423603B2 (ja) * 1997-12-22 2003-07-07 シャープ株式会社 高位合成装置及び高位合成方法、並びに高位合成プログラムを記録した記録媒体
JP4083491B2 (ja) * 2002-07-19 2008-04-30 富士通株式会社 モジュール間インタフェースの自動合成装置、合成方法、プログラム及び可搬記憶媒体
ATE485557T1 (de) * 2003-04-16 2010-11-15 Nxp Bv Datenverarbeitung wobei gleichzeitig ausgeführte prozesse durch einen fifo-puffer kommunizieren
US7222314B1 (en) * 2004-12-09 2007-05-22 Xilinx, Inc. Generation of a hardware interface for a software procedure
US7418676B2 (en) * 2005-01-19 2008-08-26 Seiko Epson Corporation Asynchronous circuit design tool and computer program product
JP2011044073A (ja) * 2009-08-24 2011-03-03 Ricoh Co Ltd 高位合成装置、高位合成方法および高位合成プログラム
US8296713B2 (en) * 2010-09-30 2012-10-23 Synopsys, Inc. Method and apparatus for synthesizing pipelined input/output in a circuit design from high level synthesis
CN102163248B (zh) * 2011-04-02 2012-12-05 北京大学深圳研究生院 一种集成电路的高级综合方法
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
JP5910108B2 (ja) * 2012-01-25 2016-04-27 株式会社ソシオネクスト 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法
CN103077283B (zh) * 2013-01-16 2016-05-18 清华大学 基于VFI优化的C-to-RTL综合方法
CN103150461B (zh) * 2013-04-10 2016-08-10 上海安路信息科技有限公司 用于集成电路设计的并行综合方法及其系统

Also Published As

Publication number Publication date
US20150347654A1 (en) 2015-12-03
EP3149577B1 (en) 2020-04-01
US9449131B2 (en) 2016-09-20
EP3149577A1 (en) 2017-04-05
KR102358940B1 (ko) 2022-02-04
CN106462431A (zh) 2017-02-22
CN106462431B (zh) 2019-09-27
KR20170016378A (ko) 2017-02-13
WO2015187635A1 (en) 2015-12-10
JP2017518577A (ja) 2017-07-06

Similar Documents

Publication Publication Date Title
JP6655028B2 (ja) 高位合成におけるシステムアーキテクチャの抽出
Kobayashi et al. OpenCL-ready high speed FPGA network for reconfigurable high performance computing
Kranenburg et al. MB-LITE: A robust, light-weight soft-core implementation of the MicroBlaze architecture
JP2006522406A5 (ja)
JP2006522406A (ja) データ・フロー・マシン
WO2021055233A1 (en) Performance estimation-based resource allocation for reconfigurable architectures
Wiangtong et al. Hardware/software codesign: a systematic approach targeting data-intensive applications
US11720475B2 (en) Debugging dataflow computer architectures
US8661378B2 (en) Asychronous system analysis
Bergmann et al. QUKU: a dual-layer reconfigurable architecture
Piccolboni et al. Broadening the exploration of the accelerator design space in embedded scalable platforms
WO2021055234A1 (en) Efficient execution of operation unit graphs on reconfigurable architectures based on user specification
US9946823B2 (en) Dynamic control of design clock generation in emulation
Perepelitsyn et al. FPGA as a service solutions development strategy
López-Paradís et al. Fast behavioural rtl simulation of 10b transistor soc designs with metro-mpi
TW202227979A (zh) 用於檢測串流相容及廣播相容的資料存取型樣的編譯時邏輯
Rodriguez et al. Leveraging partial dynamic reconfiguration on zynq soc fpgas
Kinage et al. Design and implementation of FPGA soft core processor for low power multicore Embedded system using VHDL
US10754759B1 (en) Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit
US10410713B1 (en) Content addressable memory modeling in emulation and prototyping
Firmansyah et al. Performance evaluation of Stratix V DE5-Net FPGA board for high performance computing
Kumar B et al. A novel utilization-aware and power-delay-aware intelligent DMA controller for video streaming used in AI applications
He et al. Efficient communication support in predictable heterogeneous mpsoc designs for streaming applications
Banerjee et al. Multi-stage parallel processing of design element access tasks in FPGA-based logic emulation systems
US11449347B1 (en) Time-multiplexed implementation of hardware accelerated functions in a programmable integrated circuit

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20170112

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190625

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190904

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: 20200107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200131

R150 Certificate of patent or registration of utility model

Ref document number: 6655028

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250