JP6246445B1 - 高位合成装置、高位合成方法及び高位合成プログラム - Google Patents

高位合成装置、高位合成方法及び高位合成プログラム Download PDF

Info

Publication number
JP6246445B1
JP6246445B1 JP2017547004A JP2017547004A JP6246445B1 JP 6246445 B1 JP6246445 B1 JP 6246445B1 JP 2017547004 A JP2017547004 A JP 2017547004A JP 2017547004 A JP2017547004 A JP 2017547004A JP 6246445 B1 JP6246445 B1 JP 6246445B1
Authority
JP
Japan
Prior art keywords
cdfg
processing
level synthesis
arithmetic
pipeline
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
JP2017547004A
Other languages
English (en)
Other versions
JPWO2017158785A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6246445B1 publication Critical patent/JP6246445B1/ja
Publication of JPWO2017158785A1 publication Critical patent/JPWO2017158785A1/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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)

Abstract

演算処理を繰り返す繰り返し演算処理であって演算処理の出力を次の演算処理の入力とする繰り返し演算処理を表したCDFG(コントロールデータフローグラフ)を第1CDFG(111)として取得し、第1CDFG(111)を、第1CDFG(111)で表された繰り返し演算処理をパイプライン処理で実行する第2CDFG(112)に変更するCDFG変更部(160)を備えた。

Description

本発明は、プログラミング言語による動作記述からレジスタ転送レベルのHDL(ハードウェア記述言語)記述を自動生成する高位合成装置、高位合成方法及び高位合成プログラムに関する。
従来、LSI(Large Scale Integration)開発では、Verilog−HDLやVHDLといったハードウェア記述言語を使用した設計を行ってきた。しかし、近年の集積回路の大規模化に伴い、ハードウェア記述言語を使用した設計では設計記述量が膨大となり多大な設計時間を必要とされるため、設計生産性の向上が求められている。設計生産性の向上の一つとして、動作記述からレジスタ転送レベルの回路記述を自動合成する高位合成技術がある。高位合成技術は、ハードウェア記述言語よりも抽象度の高いC言語、C++言語、SystemC言語といった高級言語による設計を行い、高位合成ツールを用いて自動的にハードウェア記述言語を生成する技術である。この高位合成技術によれば、設計記述量を削減し、設計時間の短縮を図ることができる。
特許文献1の技術では、動作レベルの記述をN個の段階記述に分解し、N個の段階記述の間の入出力並びに演算がパイプライン処理されるようにスケジューリング部でタイミングを調整する。そして、特許文献1の技術では、N個の段階記述のそれぞれに対する段階回路と、半導体集積回路がとりうる2N−1個の段階状態を制御する状態制御回路とが生成されるようにハードウェア記述言語を生成する。このように、特許文献1には、高速なパイプライン回路を実現する動作合成方法が記載されている。
特開2010−86310号公報
特許文献1の技術は、演算処理を繰り返す繰り返し演算処理であって演算処理の出力を次の演算処理の入力とする繰り返し演算処理を実行する回路の動作記述には適用できないという課題がある。
本発明は、演算処理を繰り返す繰り返し演算処理であって演算処理の出力を次の演算処理の入力とする繰り返し演算処理を実行する回路の動作記述を入力とした場合でも、パイプライン処理を可能にすることにより、処理性能が高いハードウェア記述言語を生成する高位合成装置を提供することを目的とする。
本発明に係る高位合成装置は、
演算処理を繰り返す繰り返し演算処理であって前記演算処理の出力を次の演算処理の入力とする繰り返し演算処理を表したCDFG(コントロールデータフローグラフ)を第1CDFGとして取得し、前記第1CDFGを、前記第1CDFGで表された前記繰り返し演算処理をパイプライン処理で実行する前記第2CDFGに変更するCDFG変更部を備えた。
本発明に係る高位合成装置では、演算処理を繰り返す繰り返し演算処理であって前記演算処理の出力を次の演算処理の入力とする繰り返し演算処理を表したCDFGを第1CDFGとして取得し、前記第1CDFGを、前記第1CDFGで表された前記繰り返し演算処理をパイプライン処理で実行する前記第2CDFGに変更するCDFG変更部を備えているので、繰り返し演算処理をパイプライン化することができるという効果を奏する。
実施の形態1に係る高位合成装置100の構成図。 高位合成技術を用いた高位合成装置100xの構成図。 図2の高位合成装置100xの動作を示すフロー図。 ソースコード171の具体例を示す図。 浮動小数点の加算演算の例を示す図。 図4に示した浮動小数点の加算演算の処理をパイプライン処理で実行した場合のタイミング図。 図6に対してデータハザードを回避するようにクロック周期毎の処理の実行タイミングを変更した場合のタイミング図。 実施の形態1に係る高位合成装置100の高位合成方法510及び高位合成プログラム520による高位合成処理S100を示すフロー図。 実施の形態1に係るCDFG生成部110が図4に示したソースコード171から生成した第1CDFG111の一例を示す図。 実施の形態1に係るスケジューリング結果122の例を示す図。 実施の形態1に係るパイプライン判定処理S150のフロー図。 実施の形態1に係るCDFG変更部160が第1CDFG111を変更した第2CDFG112の一例を示す図。 実施の形態1に係るCDFG変更処理S160のフロー図。 実施の形態1に係るCDFG変更処理S160の前後での演算処理を数式で表した例。 実施の形態1に係るCDFG変更処理S160の前後での演算処理を回路で表した例。 実施の形態1の変形例に係る高位合成装置100yの構成図。
実施の形態1.
***構成の説明***
図1を用いて、本実施の形態に係る高位合成装置100の構成について説明する。
本実施の形態において、高位合成装置100は、コンピュータである。高位合成装置100は、プロセッサ910、記憶装置920、入力インタフェース930、出力インタフェース940といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
高位合成装置100は、機能構成として、CDFG生成部110と、スケジューリング部120と、パイプライン判定部150と、CDFG変更部160と、バインディング部130と、RTL生成部140と、記憶部170とを備える。
以下の説明では、高位合成装置100におけるCDFG生成部110と、スケジューリング部120と、パイプライン判定部150と、CDFG変更部160と、バインディング部130と、RTL生成部140とをまとめて高位合成部101ともいう。また、以下の説明では、高位合成装置100におけるCDFG生成部110と、スケジューリング部120と、パイプライン判定部150と、CDFG変更部160と、バインディング部130と、RTL生成部140の機能を、高位合成装置100の「部」の機能という。
高位合成装置100の「部」の機能は、ソフトウェアで実現される。
また、記憶部170は、記憶装置920で実現される。記憶部170には、ソースコード171、合成制約情報172、回路情報173、RTL174が記憶される。また、記憶部170には、CDFG生成部110により生成される第1CDFG111、スケジューリング部120により生成される制御サイクル情報121及びスケジューリング結果122、CDFG変更部160により生成される第2CDFG112といった情報が記憶される。
プロセッサ910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ910は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ910は、具体的には、CPU(Central Processing Unit)である。
記憶装置920は、メモリ921及び補助記憶装置922を含む。補助記憶装置922は、具体的には、ROM(Read Only Memory)、フラッシュメモリ、又は、HDD(Hard Disk Drive)である。メモリ921は、具体的には、RAM(Random Access Memory)である。本実施の形態では、記憶部170は、メモリ921により実現される。なお、記憶部170は、補助記憶装置922により実現されてもよいし、メモリ921と補助記憶装置922とにより実現されていてもよい。記憶部170の実現方法は任意である。
入力インタフェース930は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートである。入力インタフェース930は、具体的には、USB端子である。なお、入力インタフェース930は、LAN(Local Area Network)と接続されるポートであってもよい。
出力インタフェース940は、ディスプレイ装置といった表示機器のケーブルが接続されるポートである。出力インタフェース940は、具体的には、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイ装置は、具体的には、LCD(Liquid Crystal Display)である。なお、出力インタフェース940は、プリンタ装置といった出力装置に接続されていてもよい。
補助記憶装置922には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ921にロードされ、プロセッサ910に読み込まれ、プロセッサ910によって実行される。補助記憶装置922には、OS(Operating System)も記憶されている。OSの少なくとも一部がメモリ921にロードされ、プロセッサ910はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
高位合成装置100は、1つのプロセッサ910のみを備えていてもよいし、複数のプロセッサ910を備えていてもよい。複数のプロセッサ910が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の機能による処理の結果を示す情報、データ、信号値、及び、変数値は、メモリ921、補助記憶装置922、又は、プロセッサ910内のレジスタ又はキャッシュメモリに記憶される。なお、図1において、各部と記憶部170とを結ぶ矢印は、各部が処理の結果を記憶部170に記憶すること、或いは、各部が記憶部170から情報を読み出すことを表している。また、各部を結ぶ矢印は、制御の流れを表している。
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disc)といった可搬記録媒体に記憶されてもよい。
なお、「部」の機能を実現するプログラムを高位合成プログラム520ともいう。高位合成プログラム520は、「部」として説明している機能を実現するプログラムである。また、高位合成プログラムプロダクトと称されるものは、高位合成プログラム520が記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
次に、本実施の形態の前提となる高位合成技術について説明する。
図2は、本実施の形態の前提となる高位合成技術を用いた高位合成装置100xの構成を示す図である。
高位合成装置100xは、図1で説明した本実施の形態に係る高位合成装置100の構成から、パイプライン判定部150とCDFG変更部160とを除いた構成である。すなわち高位合成装置100xの高位合成部101xは、CDFG生成部110と、スケジューリング部120xと、バインディング部130と、RTL生成部140とを備える。また、記憶部170には、第1CDFG111と制御サイクル情報121とが記憶され、スケジューリング結果122と第2CDFG112とは記憶されていない。
高位合成部101xは、ソースコード171と、合成制約情報172と、回路情報173とを入力として高位合成を行い、RTL174を出力する。RTL174は、ハードウェア記述言語の例である。
ソースコード171は、高位合成対象の回路の動作をC言語、C++言語、SystemC言語といった高級言語で記述した動作記述である。ソースコード171は、入力装置から入力インタフェース930を介して入力され、記憶部170に記憶される。
合成制約情報172は、高位合成対象の回路の回路規模、資源量、タイミング制約、クロック周波数、パイプライン化対象部といった情報を含む。合成制約情報172は、入力装置から入力インタフェース930を介して入力され、記憶部170に記憶される。
回路情報173は、高位合成後の回路を実装するLSIに設けられた演算ユニット、レジスタ、メモリユニット等の規模及び遅延情報等の情報を含む。回路情報173は、入力装置から入力インタフェース930を介して入力され、記憶部170に記憶される。
RTL174は、回路の構造がハードウェア記述言語で記述された回路記述である。回路記述とは、回路動作を、レジスタ間の信号の流れと論理演算の組み合わせとにより記述したものである。回路記述は、回路の構造記述ともいう。
図3を用いて、図2の高位合成装置100xの動作である高位合成処理S100xの概要について説明する。高位合成処理S100xは、実施の形態の前提となる高位合成技術を用いた処理である。高位合成処理S100xは、CDFG生成処理S110、スケジューリング処理S120x、バインディング処理S130、RTL生成処理S140を有する。
CDFG生成処理S110において、CDFG生成部110は、ソースコード171の構文解析を行い、制御構成とデータ依存とを解析して、CDFG(コントロールデータフローグラフ)111を生成する。第1CDFG111は、制御フローとデータフローとを表現したグラフである。データフローは、演算を示すノードと、変数を示すノードと、ノード間を接続するエッジとで表現される。CDFG生成部110は、冗長な演算ノードの削除を行う。また、CDFG生成部110は、高性能かつ小面積な回路の構造記述を生成するために、不要処理の削除、共通部分処理の削除、定数の伝搬と畳み込みの処理、ループ処理の展開による並列度の向上処理等を行う。第1CDFG111については後で詳しく説明する。
次に、スケジューリング処理S120xにおいて、スケジューリング部120xは、第1CDFG111内の各ノードで示される処理を実行するために必要な制御サイクルを決定し、制御サイクル情報121として出力する。スケジューリング部120xは、合成制約情報172に設定されているクロック周波数と、回路情報173に設定されている演算ユニットやレジスタやメモリユニット等の遅延情報とに基づいて、制御サイクルを決定する。このとき、スケジューリング部120xは、第1CDFG111に含まれる繰り返し処理をパイプライン化した制御サイクルを試行する。スケジューリング部120xは、試行した制御サイクルで処理が実行出来ない場合は、別の方法を試行し、制御サイクルを決定する。スケジューリング部120xは、制御サイクルを含む制御サイクル情報121をスケジューリング結果122として出力する。
次に、バインディング処理S130において、バインディング部130は、制御サイクル情報121に基づいて、ハードウェア記憶リソースやハードウェア演算リソース等のハードウェアリソースを回路に割り付ける。バインディング部130は、制御サイクル情報121から、ハードウェアリソースのライフタイムを解析する。バインディング部130は、解析結果に基づき、同一処理が可能なハードウェアリソースのうち、ライフタイムがオーバーラップしていないハードウェアリソースには同一のハードウェアリソースを割り当て、ハードウェアを共有化する。バインディング部130は、ハードウェアリソースの回路への割り付け結果をバインディング結果として出力する。
最後に、RTL生成処理S140において、RTL生成部140は、制御サイクル情報121とバインディング結果とを実現するために、必要となる制御回路を生成する。そして、RTL生成部140は、バインディング部130で得られたハードウェアリソースを接続したデータパスとあわせて、レジスタ転送レベル記述であるRTL174を出力する。
次に、具体例を用いて、本実施の形態の前提となる高位合成技術について説明する。
図4は、ソースコード171の具体例を示す図である。図4では、浮動小数点の複数入力値の合計値を算出する動作記述を記載したC言語のプログラムをソースコード171の例として示している。
図4に示すソースコード171は、入力となる浮動小数点の配列“in_d”に格納されているN個の値の合計値を“res_d”に格納する動作を示している。図4に示すソースコード171では、初期状態で“res_d”に‘0’を設定し、ループ処理毎に“res_d”に入力値である“in_d[i]”を加算する処理を繰り返すことで、入力値の合計値を算出する。図4に示すソースコード171では、ループ回数はN回である。
図4に示すソースコード171は、出力変数を次の入力変数として演算を繰り返す繰り返し処理を有する。繰り返し処理があるソースコード171から、処理性能、すなわち処理レイテンシとクロック周期の積が高いRTL記述を生成するためには、繰り返し処理をパイプライン処理化し、繰り返し処理のスループット性能を高める必要がある。
図5は、浮動小数点の加算演算の例を示している。
図5に示すように、浮動小数点の加算演算は、入力変数A300と入力変数B301に対して、変数入替処理302、桁合せ処理303、加算処理304、丸め処理305を行い、演算結果306を得る。
変数入替処理302では、入力変数A300の指数部と、入力変数B301の指数部との大小が比較310で比較され、スイッチ311で桁合せ処理303の処理対象の変数が選択される。ここで、入力変数A300の指数部より入力変数B301の指数部の方が大きい場合は入力変数A300の仮数部が桁合せ処理対象として桁合せ処理303に渡され、入力変数B301の仮数部は桁合せ処理不要として桁合せ処理303に渡される。入力変数A300の指数部より入力変数B301の指数部の方が小さい場合は入力変数B301の仮数部が桁合せ処理対象として桁合せ処理303に渡され、入力変数A300の仮数部は桁合せ処理不要として桁合せ処理303に渡される。
桁合せ処理303では、変数入替処理302で桁合せ処理対象として変数入替処理302から渡された変数の仮数部がシフタ313で右シフト処理され、桁合せ不要として変数入替処理302から渡された変数の仮数部との桁合せが行われる。桁合せが行われた変数は加算処理304に渡される。ここで、桁合せのためのシフト量は減算312で入力変数A300の指数部と入力変数B301の指数部との差分から算出される。
また、桁合せ処理が不要な変数として変数入替処理302から渡された変数の仮数部は入力された値がそのまま加算処理304に渡される。
加算処理304では、桁合せ処理303から渡された2つの桁の揃った変数の和が求められ、丸め処理305に出力される。なお、入力変数A300と入力変数B301の2つの変数の符号が同じ場合は加算が行われ、符号が異なる場合は引き算が行われる。
丸め処理305では、加算処理304から渡された加算結果に対し、例えばIEEE754等の規格に合わせて正規化するために近似値への丸めが行われ、演算結果306として出力される。
図4に示した浮動小数点の合計値算出を行う場合は、入力変数A300には図4の配列“in_d”の値を配列順に入力し、入力変数B301には図4の“res_d”の値を入力する。つまり、図5の演算結果306が入力変数B301の入力となる。
以上のように浮動小数点の加算演算には多くの処理ステップが必要であり、整数の加算に比べ長い計算時間を必要とする。この一連の処理ステップを1クロックで実行すると、クロックが非常に低くなってしまうため、一般的には処理ステップ毎に異なるクロックサイクルで実行するように回路が設計される。
図6は、図4に示した浮動小数点の加算演算の処理をパイプライン処理で実行した場合のタイミング図の例である。
Loop400は図4に示した繰り返し処理のループ回数を示す。Cycle401はクロック周期を示す。処理402は1回目のループでのクロック周期毎の処理を示す。処理403は2回目のループでのクロック周期毎の処理を示す。図4では、ループ回数はNである。
図6の処理402及び処理403のクロック周期毎の処理で、図6の変数入替A0及び変数入替A1は図5の変数入替処理302に該当する。図6の桁合せB0及び桁合せB1は図5の桁合せ処理303に該当する。図6の加算C0及び加算C1は図5の加算処理304に該当する。図6の丸めD0及び丸めD1は図5の丸め処理305に該当する。
図6では1回のループの演算処理の処理サイクルは4サイクルであるが、パイプライン処理にすることにより、N個の浮動小数点配列からの合計値算出の処理サイクル数は「N+3」サイクルで実行できる。
しかし、図6では、処理402の丸めD0が4回目のサイクルで実行されているのに対し、処理403の変数入替A1が2回目のサイクルで実行されている。処理402の丸めD0の出力データと処理403の変数入替A1の入力データとはイタレーション間のデータ依存があるため、データハザードが発生し、所望の演算結果が得られない虞がある。
図7は、図6に対してデータハザードを回避するようにクロック周期毎の処理の実行タイミングを変更した場合のタイミング図の例である。
図7において、Loop500は図6のLoop400に対応し、Cycle501は図6のCycle401に対応する。また、処理502は図6の処理402に対応し、処理503は図6の処理403に対応している。
図7では、処理502の丸めD0を4回目のサイクルで実行後、処理503の変数入替A1を第5サイクルで実行するように変更し、データハザードを回避している。
しかし、図7では、N個の浮動小数点配列からの合計値算出の処理サイクル数は「N×4」サイクルが必要となる。
以上で、本実施の形態の前提となる高位合成技術についての説明を終わる。
***動作の説明***
次に、本実施の形態に係る高位合成装置100の動作について説明する。
図8を用いて、本実施の形態に係る高位合成装置100の高位合成方法510及び高位合成プログラム520による高位合成処理S100の処理の概要について説明する。
図8に示す高位合成処理S100では、図3に示した高位合成処理S100xに対して、パイプライン判定処理S150と、CDFG変更処理S160とが追加されている。また、スケジューリング処理S120は、図3で説明したスケジューリング処理S120xに、スケジューリング結果122を出力する処理を加えた処理である。CDFG生成処理S110、バインディング処理S130、RTL生成処理S140の処理については、図3で説明したものと同様である。
以下において、ソースコード171は、演算処理を繰り返す繰り返し演算処理であって前記演算処理の出力を次の演算処理の入力とする繰り返し演算処理の動作を記述している。
また、第1CDFG111は、演算処理を繰り返す繰り返し演算処理であって演算処理の出力を次の演算処理の入力とする繰り返し演算処理を表したCDFGである。具体的には、第1CDFG111は、CDFG生成部110によりソースコード171から生成される。
また、以下において、第1CDFG111のパイプライン化とは、第1CDFG111に表された繰り返し演算処理をパイプライン処理で実行できるようにすることを意味する。
スケジューリング処理S120は、スケジューリング処理S120xにスケジューリング結果122を出力するという処理が加わる。
スケジューリング処理S120において、スケジューリング部120は、第1CDFGに表された繰り返し演算処理をパイプライン処理で実行した場合のスケジューリング結果122を出力する。具体的には、スケジューリング部120は、パイプライン処理を行う制御サイクルで処理を実現出来なかったことを示す情報と、データハザードが発生したデータハザード変数と、パイプラインの処理サイクルが4サイクルであることを含むスケジューリング結果122を出力する。データハザード変数とは、第1CDFG111に表された繰り返し演算処理をパイプライン処理で実行した場合にデータハザードが生じた変数である。パイプラインの処理サイクルとは、すなわち演算処理の処理サイクルである。
パイプライン判定処理S150において、パイプライン判定部150は、スケジューリング結果122に基づいて、第1CDFG111に表された繰り返し演算処理がパイプライン処理できるか否かを判定する。パイプライン判定部150は、スケジューリング結果122に含まれるデータハザード変数に基づいて、第1CDFG111に表された繰り返し演算処理がパイプライン処理できるか否かを判定する。つまり、パイプライン判定部150は、第1CDFG111を変更すれば、繰り返し演算処理のパイプライン化が可能か否かを判定する。パイプライン判定部150は、スケジューリング処理S120により出力されたスケジューリング結果122に基づいて、第1CDFG111のパイプライン化が可能か否かを判定する。
第1CDFG111のパイプライン化が可能と判定された場合、処理はCDFG変更処理S160に進む。
第1CDFG111のパイプライン化が不可と判定された場合、処理はバインディング処理S130に進む。
パイプライン判定処理S150については後で詳しく説明する。
CDFG変更処理S160では、CDFG変更部160は、第1CDFG111を変更し、変更後の第2CDFG112を生成する。CDFG変更部160は、繰り返し演算処理を表した第1CDFG111を取得し、第1CDFG111を、第1CDFG111で表された繰り返し演算処理をパイプライン処理で実行する第2CDFG112に変更する。CDFG変更部160は、変更した第2CDFG112をスケジューリング処理S120に入力する。
CDFG変更処理S160については後で詳しく説明する。
次に、本実施の形態に係る高位合成処理S100についてさらに詳しく説明する。
<CDFG生成処理S110>
CDFG生成処理S110は、上述したように、ソースコード171から第1CDFG111を生成する処理である。
図9は、本実施の形態に係るCDFG生成部110が図4に示したソースコード171から生成した第1CDFG111の一例を示す図である。
図9において、第1CDFG111は、演算処理702を繰り返す繰り返し演算処理790であって演算処理702の出力を次の演算処理702の入力とする繰り返し演算処理790を表している。第1CDFG111は、複数のDFG(データフローグラフ)から構成される。
初期設定DFG700は、初期設定のDFGで、ループ条件判定をする変数‘i’と演算結果値“res_d”とに0を設定している。
条件判定DFG701は、条件判定の制御を表し、“i<N”の場合は、演算処理を行い、“else”(その他)の場合は、演算処理を終了することを示している。
演算処理DFG702は、演算処理のDFGであり、図5で示した浮動小数点の加算処理を行っている。
条件更新DFG703は、ループ条件判定を行う変数‘i’を更新するDFGで、‘i’は1ループ毎に1ずつ加算される。
<スケジューリング処理S120>
スケジューリング処理S120において、スケジューリング部120は、第1CDFG111内の各ノードで示される処理を実行するために必要な制御サイクルを決定する。
スケジューリング部120は、図9の第1CDFG111が入力されると、図5で示した処理に対応付け、変数入替処理302、桁合せ処理303、加算処理304、丸め処理305にそれぞれに1サイクルの処理サイクルを割り付ける。
上述したように、スケジューリング部120は、第1CDFG111に含まれる繰り返し演算処理790をパイプライン化した制御サイクルを試行する。具体的には、スケジューリング部120は、図6で示したタイミングでパイプライン処理を行うような制御サイクルを試行する。
スケジューリング部120は、試行した制御サイクルで処理が実行出来ない場合は、別の方法を試行し、制御サイクルを決定する。具体的には、図6で示したパイプライン処理の場合、イタレーション間に依存性のある変数があり、データハザードが発生するため処理を実行することが出来ない。そのため、スケジューリング部120は、図7で示したタイミングで処理を行う制御サイクルに決定する。
スケジューリング部120は、スケジューリング結果として制御サイクル情報121を出力する。具体的には、スケジューリング部120は、図7で示したタイミングで処理を行う制御サイクルに決定した場合、制御サイクルはN×4であることを含む制御サイクル情報121を出力する。
また、スケジューリング部120は、試行した制御サイクルで処理が実行出来なかったことを示す情報をスケジューリング結果122として出力する。具体的には、スケジューリング部120は、パイプラン処理を行うような制御サイクルで処理を実現出来なかったことと、データハザードが発生したデータハザード変数と、パイプラインの処理サイクルとを含むスケジューリング結果122を出力する。
図10は、本実施の形態に係るスケジューリング結果122の例を示す図である。
図6で示したパイプライン処理の制御サイクルが実行できなかった場合、スケジューリング部120は、図10に示すようなスケジューリング結果122を出力する。スケジューリング結果122は、パイプラン処理を行う制御サイクルで処理を実現出来たか否かを示す情報と、データハザードが発生したデータハザード変数222と、パイプラインの処理サイクルとが含まれる。図6で示したパイプライン処理の制御サイクルが実行できなかった場合、スケジューリング結果122には、パイプライン試行結果221は失敗、データハザード変数222はres_d、パイプラインの処理サイクル223として4が設定される。
<パイプライン判定処理S150>
パイプライン判定処理S150において、パイプライン判定部150は、スケジューリング部120により通知されたスケジューリング結果122に基づいて、第1CDFG111のパイプライン化の可否を判定する。パイプライン判定部150は、第1CDFG111についてパイプライン化が不要又はパイプライン化が不可と判定した場合、スケジューリング部120が出力した制御サイクル情報121をバインディング部130に出力する。パイプライン判定部150は、パイプライン化が可能と判定した場合、スケジューリング部120から通知されたスケジューリング結果122をCDFG変更部160に通知し、第1CDFG111の変更を指示する。
図11は、本実施の形態に係るパイプライン判定処理S150のフロー図である。
ステップS151において、パイプライン判定部150は、スケジューリング結果122に基づいて、データハザードが発生しパイプライン化が失敗したか否かを判定する。具体的には、パイプライン判定部150は、スケジューリング結果122の「パイプライン化の試行結果」欄と、「データハザード変数」欄とから、データハザードが発生しパイプライン化が失敗したか否かを判定する。図10の例では、パイプライン判定部150は、「パイプライン化の試行結果」欄が失敗であり、「データハザード変数」欄にres_dが設定されているので、データハザードが発生しパイプライン化が失敗したと判定する。パイプライン判定部150は、データハザードが発生しパイプライン化が失敗したと判定した場合、ステップS152に進み、それ以外の場合、ステップS154に進む。
ステップS152において、パイプライン判定部150は、スケジューリング結果122に基づいて、データハザード変数が前演算処理(すなわち、前ループ)の出力変数を次演算処理の入力変数とすることにより発生しているもののみであるか否かを判定する。データハザード変数が前演算処理(すなわち、前ループ)の出力変数を次演算処理の入力変数とすることにより発生しているもののみということは、演算処理に含まれる複数の演算ノードの演算順序に依存するデータハザードは発生していないことを意味する。具体的には、パイプライン判定部150は、スケジューリング結果122の「データハザード変数」欄に設定されている変数と第1CDFG111とを比較して、スケジューリング結果122の「データハザード変数」欄に設定されている変数が、前演算処理の出力変数でありかつ次演算処理の入力変数としてのみ用いられているか否かを判定する。パイプライン判定部150は、パイプライン処理で発生するデータハザードが、前ループでの出力変数を入力とすることで発生しており、演算ノードの演算順序に依存するデータハザードは発生していないことを検出した場合、ステップS153に進む。それ以外の場合、ステップS154に進む。
ステップS153において、パイプライン判定部150は、第1CDFG111のパイプライン化が可能であると判定する。パイプライン判定部150は、パイプライン化が可能と判定した場合、スケジューリング部120から通知されたスケジューリング結果122をCDFG変更部160に通知し、第1CDFG111の変更を指示する。
ステップS154において、パイプライン判定部150は、第1CDFG111のパイプライン化は不要又は不可であると判定する。パイプライン判定部150は、パイプライン化が不要又はパイプライン化が不可と判定した場合、スケジューリング部120が出力した制御サイクル情報121をバインディング部130に出力する。
<CDFG変更処理S160>
CDFG変更処理S160において、CDFG変更部160は、第1CDFG111を、第1CDFG111で表された繰り返し演算処理790をパイプライン処理で実行する第2CDFG112に変更する。CDFG変更部160は、パイプライン判定部150により、第1CDFG111に表された繰り返し演算処理790がパイプライン処理できると判定された場合に第1CDFG111を第2CDFG112に変更する。
言い換えると、CDFG変更部160は、CDFG生成部110が生成した第1CDFG111を、演算処理(ループ処理)の処理サイクルのパイプライン処理で実現できるように変更する。すなわち、CDFG変更部160は、第1CDFG111を、演算処理(ループ処理)の処理サイクルである4サイクルのパイプライン処理で実現できるように第2CDFG112に変更する。
図12は、本実施の形態に係るCDFG変更部160が第1CDFG111を変更した第2CDFG112の一例を示す図である。
CDFG変更部160は、繰り返し演算処理790のループ回数と演算処理の処理サイクルとに基づいて、第1CDFG111を第2CDFG112に変更する。
CDFG変更部160は、第1CDFG111を、繰り返し演算処理790を処理サイクルの数のサブ繰り返し演算処理に分割する。そして、CDFG変更部160は、処理サイクルの数のサブ繰り返し演算処理を実行する第1演算処理804と、処理サイクルの数のサブ繰り返し演算処理の各々の出力を入力として演算処理812を実行する第2演算処理814とを表した第2CDFG112に変更する。
第1演算処理804は、パイプライン処理で実行できる。第1演算処理804は、第一の繰り返し演算処理ともいう。第2演算処理814は、パイプライン処理で実行できる。なお、第2演算処理814は、時分割処理で実行してもよい。第2演算処理814は、第二の繰り返し演算処理ともいう。
図12では、図9に示す第1CDFG111を演算処理(ループ処理)の処理サイクルである4サイクルのパイプラン処理で実現できるように変更した第2CDFG112を示している。図12において、図9と同様の構成には同一の符号を付している。
図12の第2CDFG112において、図9に示す第1CDFG111と異なる点は以下の点である。
1つ目は、第1CDFG111の初期設定700が、第2CDFG112では初期設定800に変更された点である。
2つ目は、第1CDFG111の演算処理702が、第2CDFG112では演算処理802に変更された点である。
3つ目は、第2CDFG112では、初期設定810と、条件判定811と、演算処理812と、ループ条件変数更新813とから成る第2演算処理が追加された点である。
図12の第2CDFG112では、初期設定800と条件判定701と演算処理802とループ条件変数更新803とで第1演算処理804を行い、入力変数“in_d[0]”〜“in_d[N−1]”から、“res_d1[0]”〜“res_d1[3]”までを算出する。また、第2CDFG112では、初期設定810と条件判定811と演算処理812とループ条件変数更新813とで第2演算処理814を行う。第2CDFG112では、第1CDFG111の出力である“res_d1[0]”〜“res_d1[3]”を入力とし、“res_d1[0]+res_d1[1]+res_d1[2]+res_d1[3]”を実行し、“res_d”として算出する。
図13は、本実施の形態に係るCDFG変更処理S160のフロー図である。
ステップS161において、CDFG変更部160は、演算処理702の出力変数“red_d”を、演算処理(パイプライン処理)の処理サイクル数分で配列化するように第1CDFG111を変更する。本実施の形態では、演算処理(パイプライン処理)のサイクル数が4サイクルであることから、CDFG変更部160は、演算処理802のように出力変数を“res_d1[0]〜res_d1[4]”に配列化し、演算結果の取得元と保存先を“red_d1[i%4]”として、ループ回数毎に“res_d1[0]”〜“res_d1[3]”から割り当てている。
ステップS162において、CDFG変更部160は、配列化した出力変数の初期値設定を行うように第1CDFG111を変更する。CDFG変更部160は、配列化した出力変数“res_d1[0]〜res_d1[4]”の初期値設定を行うように第1CDFG111を変更する。具体的には、CDFG変更部160は、初期設定800のように出力変数“res_d[0]=0”、“res_d[1]=0”、“res_d[2]=0”、“res_d[3]=0”を第1CDFG111に追加する。
ステップS163において、CDFG変更部160は、第2演算処理814の追加を行う。追加する第2演算処理814のCDFGは変更前の第1CDFG111と同様である。第2演算処理814では、演算処理の入力変数が第1演算処理804の出力になっている点と、演算処理812の繰り返し演算回数が演算処理(パイプライン処理)のサイクル数になっている点が異なる。
具体的には、CDFG変更部160は、まず、初期設定700を複製し初期設定800を生成する。次に、CDFG変更部160は、条件判定701の繰り返し演算数“i<N”を“i<4”に変更し、条件判定811を生成する。次に、演算処理702の入力変数“in_d”を“red_d1[i]”に変更し、演算処理812を生成する。最後に、ループ条件変数更新703を複製し、ループ条件変数更新813を生成する。
以上により、CDFG変更部160は、演算処理の出力変数を処理サイクルの数で配列化することにより、繰り返し演算処理790を処理サイクルの数である4つのサブ繰り返し演算処理に分割する。4つのサブ繰り返し演算処理とは、“red_d1[i%4]”と“in_d[i]”とを入力して、“red_d1[i%4]”を出力する各演算処理802である。この4つのサブ繰り返し演算処理はパイプライン処理で実行できる。そして、CDFG変更部160は、4つのサブ繰り返し演算処理の各実行結果を第2演算処理814に出力し、演算処理812を実行する。
以上により、本実施の形態に係る高位合成処理S100についての説明を終わる。
図14は、本実施の形態に係るCDFG変更処理S160の前後での演算処理を数式で表した例である。
数式50は、CDFG変更処理S160前の図9で示した第1CDFG111を表す。数式51の(1)から(5)は、CDFG変更処理S160後の図12で示した第2CDFG112を表す。数式51の(1)から(4)が第1演算処理804に対応し、数式51の(5)が第2演算処理814に対応する。
図15は、本実施の形態に係るCDFG変更処理S160の前後での演算処理を回路で表した例である。
回路図60は、CDFG変更処理S160前の図9で示した第1CDFG111から生成した回路を表す。回路図61は、CDFG変更処理S160後の図12で示した第2CDFG112から生成した回路を表している。
回路図60では、演算処理回路601はパイプライン処理できないため、時分割処理で実施している。
一方、回路図61では、演算処理回路611が図12の第1演算処理804に対応し、演算処理回路613が図12の第2演算処理814に対応している。演算処理回路611は演算処理をパイプライン処理で実施し、演算結果はFIFO612に一旦保存された後、演算処理回路613で演算処理を時分割処理で実施する。
***他の構成***
本実施の形態の図15では第2演算処理814に対応する演算処理回路613を時分割処理で実施している例を示しているが、第2演算処理は第1演算処理と同様にパイプライン処理で行っても良いし、並列処理で行っても良い。
また、本実施の形態では、パイプライン処理サイクルが4の場合の例をあげたが、パイプライン処理サイクル数が4以外の場合であっても本実施の形態は適用可能である。第1演算処理でパイプライン処理サイクル数分の配列に演算結果を格納し、第2演算処理でパイプライン処理サイクル数分の配列を入力とした演算を行うようにCDFGを変更すれば良い。
また、本実施の形態では演算処理として浮動小数点の加算を例に説明したが、本実施の形態が対象とする演算処理は浮動小数点の加算に限定されない。図12の第1演算処理804は図9の繰り返し演算処理790と演算処理自体は同一で、入出力値の配列の個数のみを変更している。また、図12の第2演算処理814は図9の繰り返し演算処理790と演算処理は同一で入出力値の保存先が異なるのみである。よって、本実施の形態は、入力変数と演算処理の出力変数を入力とする演処理算を繰り返し行う動作記述であれば、演算処理の内容は限定せずに適用することができる。
また、高位合成装置100は、通信装置を備え、通信装置を介して、ソースコード171、合成制約情報172、回路情報173を受信してもよい。また、高位合成装置100は、通信装置を介して、RTL174を送信してもよい。この場合、通信装置はレシーバとトランスミッタとを備える。具体的には、通信装置は通信チップ又はNIC(Network Interface Card)である。通信装置はデータを通信する通信部として機能する。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
また、本実施の形態では、高位合成装置100の「部」の機能がソフトウェアで実現されるが、変形例として、高位合成装置100の「部」の機能がハードウェアで実現されてもよい。
図16を用いて、本実施の形態の変形例に係る高位合成装置100yの構成について説明する。
図16に示すように、高位合成装置100yは、処理回路909、入力インタフェース930、出力インタフェース940といったハードウェアを備える。
処理回路909は、前述した「部」の機能及び記憶部170を実現する専用の電子回路である。処理回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、又は、FPGA(Field−Programmable Gate Array)である。
「部」の機能は、1つの処理回路909で実現されてもよいし、複数の処理回路909に分散して実現されてもよい。
別の変形例として、高位合成装置100の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。即ち、高位合成装置100の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
プロセッサ910、記憶装置920、及び、処理回路909を、総称して「プロセッシングサーキットリ」という。つまり、高位合成装置100の構成が図1及び図16のいずれに示した構成であっても、「部」の機能及び記憶部170は、プロセッシングサーキットリにより実現される。
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
***本実施の形態の効果の説明***
以上のように、本実施の形態に係る高位合成装置100は、CDFGを変更するCDFG変更部を備える。CDFG変更部は、出力変数を次の入力変数として演算処理を繰り返す繰り返し演算処理をパイプライン化可能なようにCDFGを変更する。よって、出力変数を次の入力変数として演算処理を繰り返す繰り返し演算処理についてもパイプライン化をすると共に、適切な演算結果を得ることができる。また、このようにループ1回の処理の入力が前回の結果を参照するような回路においても、処理性能(処理レイテンシとクロック周期の積)が高いRTL記述を生成することができる。
また、本実施の形態に係る高位合成装置100は、スケジューリング部から通知されたスケジューリング結果に基づいて、繰り返し演算処理のパイプライン処理化の可否を判定するパイプライン判定部を備える。CDFG変更部は、パイプライン判定部によりパイプライン化が可能な場合のみCDFGを変更することができるので、無駄な処理を省き、効率的にCDFGを変更することができる。
また、本実施の形態に係る高位合成装置100は、パイプライン処理サイクル数に応じてCDFGの変更方法を決定するので、元のCDFGを利用してCDFGを変更することができる。
以上、本発明の実施の形態について説明したが、この実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、高位合成装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、どのような組合せ、或いは任意のブロック構成で高位合成装置を構成しても構わない。また、高位合成装置は、1つの装置でなく、複数の装置から構成された高位合成システムでもよい。
また、この実施の形態のうち、複数の部分を組合せて実施しても構わない。或いは、この実施の形態のうち、部分的に実施しても構わない。その他、この実施の形態を、全体として或いは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
50,51 数式、60,61 回路図、100,100x,100y 高位合成装置、101,101x 高位合成部、110 CDFG生成部、111 CDFG、120,120x スケジューリング部、121 制御サイクル情報、122 スケジューリング結果、130 バインディング部、140 RTL生成部、150 パイプライン判定部、160 CDFG変更部、112 第2CDFG、170 記憶部、171 ソースコード、172 合成制約情報、173 回路情報、174 RTL、221 試行結果、222 データハザード変数、223 処理サイクル、300 入力変数A、301 入力変数B、302 変数入替処理、303 桁合せ処理、304 加算処理、305 丸め処理、306 演算結果、310 比較、311 スイッチ、312 減算、313 シフタ、400,500 Loop、401,501 Cycle、403,403,502,503 処理、510 高位合成方法、520 高位合成プログラム、601,611,613 演算処理回路、700,800,810 初期設定、701,811 条件判定、702,802,812 演算処理、703,803,813 ループ条件変数更新、790 繰り返し演算処理、804 第1演算処理、814 第2演算処理、909 処理回路、910 プロセッサ、920 記憶装置、921 メモリ、922 補助記憶装置、930 入力インタフェース、940 出力インタフェース、S100,S100x 高位合成処理、S110 CDFG生成処理、S120,S120x スケジューリング処理、S130 バインディング処理、S140 RTL生成処理、S150 パイプライン判定処理、S160 CDFG変更処理。

Claims (9)

  1. 演算処理を繰り返す繰り返し演算処理であって前記演算処理の出力を次の演算処理の入力とする繰り返し演算処理を表したCDFG(コントロールデータフローグラフ)を第1CDFGとして取得し、前記第1CDFGを、前記第1CDFGで表された前記繰り返し演算処理をパイプライン処理で実行する第2CDFGに変更するCDFG変更部を備えた高位合成装置。
  2. 前記高位合成装置は、さらに、
    前記第1CDFGに表された前記繰り返し演算処理をパイプライン処理で実行した場合のスケジューリング結果を出力するスケジューリング部と、
    前記スケジューリング結果に基づいて、前記第1CDFGに表された前記繰り返し演算処理がパイプライン処理できるか否かを判定するパイプライン判定部と
    を備え、
    前記CDFG変更部は、
    前記パイプライン判定部により、前記第1CDFGに表された前記繰り返し演算処理がパイプライン処理できると判定された場合に前記第1CDFGを前記第2CDFGに変更する請求項1に記載の高位合成装置。
  3. 前記スケジューリング部は、
    前記第1CDFGに表された前記繰り返し演算処理をパイプライン処理で実行した場合にデータハザードが生じた変数をデータハザード変数として含む前記スケジューリング結果を出力し、
    前記パイプライン判定部は、
    前記スケジューリング結果に含まれる前記データハザード変数に基づいて、前記第1CDFGに表された前記繰り返し演算処理がパイプライン処理できるか否かを判定する請求項2に記載の高位合成装置。
  4. 前記CDFG変更部は、
    前記繰り返し演算処理のループ回数と前記演算処理の処理サイクルとに基づいて、前記第1CDFGを前記第2CDFGに変更する請求項1から3のいずれか1項に記載の高位合成装置。
  5. 前記CDFG変更部は、
    前記第1CDFGを、前記繰り返し演算処理を前記処理サイクルの数のサブ繰り返し演算処理に分割し、前記処理サイクルの数のサブ繰り返し演算処理を実行する第1演算処理と、前記処理サイクルの数のサブ繰り返し演算処理の各々の出力を入力として前記演算処理を実行する第2演算処理とを表した前記第2CDFGに変更する請求項4に記載の高位合成装置。
  6. 前記第1演算処理は、パイプライン処理で実行できる請求項5に記載の高位合成装置。
  7. 前記第2演算処理は、パイプライン処理で実行できる請求項5又は6に記載の高位合成装置。
  8. 高位合成装置の高位合成方法において、
    CDFG変更部が、演算処理を繰り返す繰り返し演算処理であって前記演算処理の出力を次の演算処理の入力とする繰り返し演算処理を表したCDFG(コントロールデータフローグラフ)を第1CDFGとして取得し、前記第1CDFGを、前記第1CDFGで表された前記繰り返し演算処理をパイプライン処理で実行する第2CDFGに変更する高位合成方法。
  9. 演算処理を繰り返す繰り返し演算処理であって前記演算処理の出力を次の演算処理の入力とする繰り返し演算処理を表したCDFG(コントロールデータフローグラフ)を第1CDFGとして取得し、前記第1CDFGを、前記第1CDFGで表された前記繰り返し演算処理をパイプライン処理で実行する第2CDFGに変更するCDFG変更処理をコンピュータに実行させる高位合成プログラム。
JP2017547004A 2016-03-17 2016-03-17 高位合成装置、高位合成方法及び高位合成プログラム Active JP6246445B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/058445 WO2017158785A1 (ja) 2016-03-17 2016-03-17 高位合成装置、高位合成方法及び高位合成プログラム

Publications (2)

Publication Number Publication Date
JP6246445B1 true JP6246445B1 (ja) 2017-12-13
JPWO2017158785A1 JPWO2017158785A1 (ja) 2018-03-22

Family

ID=59851689

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017547004A Active JP6246445B1 (ja) 2016-03-17 2016-03-17 高位合成装置、高位合成方法及び高位合成プログラム

Country Status (3)

Country Link
US (1) US20190034562A1 (ja)
JP (1) JP6246445B1 (ja)
WO (1) WO2017158785A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6761182B2 (ja) * 2017-03-14 2020-09-23 富士通株式会社 情報処理装置、情報処理方法及びプログラム
WO2019186618A1 (ja) * 2018-03-26 2019-10-03 三菱電機株式会社 高位合成装置、高位合成方法および高位合成プログラム
JP7407192B2 (ja) * 2018-08-09 2023-12-28 イーエニエーエスセー テック インスティチュート デ エンゲンハリア デ システマス エ コンピュータドレス テクノロジア エ シエンシア フィールド・プログラマブル・ゲート・アレイのためのコードを最適化する方法および装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009025973A (ja) * 2007-07-18 2009-02-05 Sharp Corp 動作合成装置、半導体集積回路の製造方法、動作合成方法、動作合成制御プログラムおよび可読記録媒体
JP2009238085A (ja) * 2008-03-28 2009-10-15 Nec Corp 動作合成システム、動作合成方法および動作合成用プログラム
JP2010015339A (ja) * 2008-07-02 2010-01-21 Sharp Corp 動作合成装置、動作合成方法、プログラム、記録媒体、および半導体集積回路の製造方法
JP2014006650A (ja) * 2012-06-22 2014-01-16 Renesas Electronics Corp 動作合成装置、動作合成方法、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム
JP2014174940A (ja) * 2013-03-13 2014-09-22 Renesas Electronics Corp 動作合成装置及び動作合成プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689647A (en) * 1989-03-14 1997-11-18 Sanyo Electric Co., Ltd. Parallel computing system with processing element number setting mode and shortest route determination with matrix size information
JP4770657B2 (ja) * 2006-09-13 2011-09-14 日本電気株式会社 パイプライン合成システム、方法及びプログラム
JP4444305B2 (ja) * 2007-03-28 2010-03-31 株式会社東芝 半導体装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009025973A (ja) * 2007-07-18 2009-02-05 Sharp Corp 動作合成装置、半導体集積回路の製造方法、動作合成方法、動作合成制御プログラムおよび可読記録媒体
JP2009238085A (ja) * 2008-03-28 2009-10-15 Nec Corp 動作合成システム、動作合成方法および動作合成用プログラム
JP2010015339A (ja) * 2008-07-02 2010-01-21 Sharp Corp 動作合成装置、動作合成方法、プログラム、記録媒体、および半導体集積回路の製造方法
JP2014006650A (ja) * 2012-06-22 2014-01-16 Renesas Electronics Corp 動作合成装置、動作合成方法、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム
JP2014174940A (ja) * 2013-03-13 2014-09-22 Renesas Electronics Corp 動作合成装置及び動作合成プログラム

Also Published As

Publication number Publication date
WO2017158785A1 (ja) 2017-09-21
JPWO2017158785A1 (ja) 2018-03-22
US20190034562A1 (en) 2019-01-31

Similar Documents

Publication Publication Date Title
Hara et al. Chstone: A benchmark program suite for practical c-based high-level synthesis
US8689156B2 (en) Method of, and apparatus for, optimization of dataflow hardware
US7353491B2 (en) Optimization of memory accesses in a circuit design
Ma et al. Algorithm-hardware co-design of single shot detector for fast object detection on FPGAs
US7917882B2 (en) Automated digital circuit design tool that reduces or eliminates adverse timing constraints due to an inherent clock signal skew, and applications thereof
US8839163B2 (en) Behavioral synthesis method, behavioral synthesis program and behavioral synthesis apparatus
JP6246445B1 (ja) 高位合成装置、高位合成方法及び高位合成プログラム
US11995386B2 (en) Verification of hardware design for data transformation component
US10599803B2 (en) High level synthesis apparatus, high level synthesis method, and computer readable medium
Chowdhury et al. Leveraging automatic high-level synthesis resource sharing to maximize dynamical voltage overscaling with error control
Stitt et al. A parallel sliding-window generator for high-performance digital-signal processing on FPGAs
JP2016122299A (ja) ステートマシン分割プログラム、情報処理装置およびステートマシン分割方法
JPWO2019171464A1 (ja) 設計支援装置および設計支援プログラム
US10303832B2 (en) Architecture generating device
US9268891B1 (en) Compact and efficient circuit implementation of dynamic ranges in hardware description languages
WO2018150588A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2004246402A (ja) 論理回路最適化方法、論理回路最適化装置、及び、論理回路合成装置
JP5267376B2 (ja) 動作合成装置、動作合成方法、ならびに、プログラム
US7853907B2 (en) Over approximation of integrated circuit based clock gating logic
US20240320407A1 (en) Verification of hardware design for data transformation component
US20240220121A1 (en) Methods and apparatus for storing data
JP6545406B2 (ja) 高位合成装置、高位合成方法および高位合成プログラム
JP6266183B2 (ja) 回路設計支援装置および回路設計支援プログラム
Lam et al. Rapid evaluation of custom instruction selection approaches with FPGA estimation
US20070168788A1 (en) Detector in parallel with a logic component

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170906

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170906

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20171003

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171114

R150 Certificate of patent or registration of utility model

Ref document number: 6246445

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250