(19)【発行国】日本国特許庁(JP)
【公報種別】再公表特許(A1)
(11)【国際公開番号】WO2017154183
(43)【国際公開日】20170914
【発行日】20180322
(54)【発明の名称】高位合成装置、高位合成方法及び高位合成プログラム
(51)【国際特許分類】
   G06F 17/50 20060101AFI20180223BHJP
【FI】
   !G06F17/50 654M
【審査請求】有
【予備審査請求】未請求
【全頁数】26
【出願番号】2016553026
(21)【国際出願番号】JP2016057668
(22)【国際出願日】20160310
(11)【特許番号】6072383
(45)【特許公報発行日】20170201
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.MATLAB
(71)【出願人】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
【住所又は居所】東京都千代田区丸の内二丁目7番3号
(74)【代理人】
【識別番号】100099461
【弁理士】
【氏名又は名称】溝井 章司
(74)【代理人】
【識別番号】100187300
【弁理士】
【氏名又は名称】長谷川 靖子
(72)【発明者】
【氏名】山本 亮
【住所又は居所】日本国東京都千代田区丸の内二丁目7番3号 三菱電機株式会社内
【テーマコード(参考)】
5B046
【Fターム(参考)】
5B046AA08
5B046BA02
5B046BA03
5B046GA01
5B046HA05
(57)【要約】
構成決定部(112)が、回路の動作を記述した動作記述(511)であって複数の実行単位を含む動作記述(511)を取得し、複数の実行単位で取り得る回路構成の候補を構成候補として決定する。判定部(113)が、複数の実行単位の回路構成を構成候補とした場合の回路の特性を回路特性(522)として算出し、回路特性(522)が閾値(521)を満たす場合に構成候補を決定回路構成(310)として出力する。高位合成部(140)が、複数の実行単位の回路構成が決定回路構成(310)となるように動作記述(511)に対して高位合成を実行する。
【特許請求の範囲】
【請求項1】
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部と
を備えた高位合成装置。
【請求項2】
前記高位合成装置は、さらに、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述を変換すると共に高位合成オプションを設定するコード変換部を備え、
前記高位合成部は、
前記コード変換部により変換された前記動作記述と前記高位合成オプションを用いて高位合成を実行する請求項1に記載の高位合成装置。
【請求項3】
前記構成決定部は、
前記複数の実行単位の依存関係に基づいて前記構成候補を決定する請求項1または2に記載の高位合成装置。
【請求項4】
前記構成決定部は、
前記複数の実行単位に共通の変数に基づいて前記複数の実行単位の依存関係を判定する請求項3に記載の高位合成装置。
【請求項5】
前記高位合成装置は、さらに、
前記複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する単位構成決定部を備え、
前記判定部は、
前記回路の特性を前記複数の実行単位の各実行単位の単位内構成候補毎に算出し、前記回路特性が閾値を満たす場合に前記複数の実行単位の各実行単位の単位内構成候補を決定単位内構成として出力し、
前記高位合成部は、
前記複数の実行単位の各実行単位の単位内構成が決定単位内構成となるように前記動作記述に対して高位合成を実行する請求項1から4のいずれか1項に記載の高位合成装置。
【請求項6】
前記高位合成装置は、さらに、
前記複数の実行単位が前記決定回路構成の場合の前記複数の実行単位間のバッファ構成を決定するバッファ構成判定部を備え、
前記高位合成部は、
前記バッファ構成を実現するように前記動作記述に対して高位合成を実行する請求項5に記載の高位合成装置。
【請求項7】
前記判定部は、
前記複数の実行単位の各々の特性を単位毎特性として算出し、前記単位毎特性に基づいて前記回路特性を算出し、
前記高位合成装置は、さらに、
前記判定部により前記回路特性が閾値を満たさないと判定された場合、前記単位毎特性に基づいて構成を変更する実行単位を解析する解析部を備えた請求項1から6のいずれか1項に記載の高位合成装置。
【請求項8】
前記高位合成装置は、さらに、
前記判定部により前記回路特性が閾値を満たすと判定された場合、前記単位毎特性に基づいて回路共有を指示する回路共有指示部を備えた請求項7に記載の高位合成装置。
【請求項9】
前記判定部は、
前記回路特性として、前記回路のレイテンシと前記回路の入力データ充填期間とを算出する請求項1から8のいずれか1項に記載の高位合成装置。
【請求項10】
前記実行単位は、ループ記述である請求項1から9のいずれか1項に記載の高位合成装置。
【請求項11】
構成決定部が、回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定し、
判定部が、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力し、
高位合成部が、前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成方法。
【請求項12】
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定処理と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定処理と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成処理と
をコンピュータに実行させる高位合成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラミング言語による動作記述からレジスタ転送レベルの回路記述を自動生成する高位合成装置、高位合成方法及び高位合成プログラムに関する。
【背景技術】
【0002】
従来の半導体集積回路の設計では、RTL(Register Transfer Level)といったハードウェア記述言語を用いて、レジスタ(フリップフロップ)間の組み合わせ回路の動作を記述していた。近年では、集積回路の回路規模が増大しており、ハードウェア記述言語を用いた設計では多大な設計時間を要する。そこで、ハードウェア記述言語よりも抽象度が高いC言語、C++言語、SystemC言語、Matlab言語といった高級言語を用いて設計を行い、RTLを自動的に生成する技術が提唱されている。そして、これを実現するツールが高位合成ツールとして市販されている。
設計者は、高級言語を用いたソースコードと、回路仕様とを高位合成ツールに入力することで、回路設計を行うことができる。また、設計者は、高級言語では表現できない、或いはソースコードで表現するには効率的でない回路仕様については、オプション、アトリビュート、プラグマといった高位合成オプションを設定して、高位合成ツールに入力する。
【0003】
これらの高位合成オプションは、回路の非機能要件であるレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量等に影響を与える。高位合成ツールでは、配列のメモリ化あるいはレジスタ化、演算のパイプライン化或いは非パイプライン化を指定する高位合成オプションがある。ソースコードの動作記述自体は変更せずに、これらの高位合成オプションを設定し高位合成を行うことで、非機能要件であるメモリ使用量やスループットを容易に知ることができる。
つまり、これらの高位合成オプションの組み合わせを試行し、試行結果から得られる特性、すなわち非機能要件を満たす最適な回路を選択することで、所望の回路を得ることができる。
しかしながら、これらの高位合成オプションの組み合わせは膨大になるため、探索の高速化が課題になる。そこで、特許文献1では、これらの高位合成オプションの設計空間を定義し、この設計空間の探索を高速に行う方法を開示している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第5605435号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1では各クラスタの最適化は可能であるが、クラスタ間のアーキテクチャに着目されておらず、クラスタ間のアーキテクチャ探索ができないという課題がある。
【0006】
本発明は、非機能要件を満たすためのアーキテクチャ設計において、実行単位間の構成を考慮したアーキテクチャ設計と、そのアーキテクチャを実現するための高位合成を行うことを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る高位合成装置は、
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部とを備えた。
【発明の効果】
【0008】
本発明に係る高位合成装置では、構成決定部が、回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する。そして、判定部が、複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する。さらに、高位合成部が、複数の実行単位の回路構成が決定回路構成となるように動作記述に対して高位合成を実行する。よって、本発明に係る高位合成装置によれば、回路特性が閾値を満たす実行単位の回路構成を決定回路構成として得ることができると共に、その決定回路構成を実現するための高位合成を行うことができるという効果を奏する。
【図面の簡単な説明】
【0009】
【図1】実施の形態1に係る高位合成装置100の構成図。
【図2】実施の形態1に係る高位合成装置100の高位合成方法510及び高位合成プログラム520による高位合成処理S100を示すフロー図。
【図3】実施の形態1に係るロジック構成判定処理S110を示すフロー図。
【図4】実施の形態1に係るソースコード151の例を示す図。
【図5】実施の形態1に係るソースコード151を高位合成ツールに入力した場合の合成結果51の例を示す図。
【図6】実施の形態1に係る判定処理S113において用いられる単位内構成(ループ内アーキテクチャ)の計算式31。
【図7】実施の形態1に係る判定処理S113において用いられる回路構成(ループ間アーキテクチャ)のレイテンシの計算式31。
【図8】実施の形態1に係る判定処理S113において用いられる回路構成(ループ間アーキテクチャ)のDTの計算式31。
【図9】実施の形態1に係る判定処理S113により算出された非機能要件結果52(直列型、1回目)の例を示す図。
【図10】実施の形態1に係る判定処理S113により算出された非機能要件結果52(並列型、1回目)の例を示す図。
【図11】実施の形態1に係る判定処理S113により算出された非機能要件結果52(直列型、再度)の例を示す図。
【図12】実施の形態1に係る判定処理S113により算出された非機能要件結果52(並列型、再度)の例を示す図。
【図13】実施の形態1に係る判定処理S113により算出された非機能要件結果52(直列型、再々度)の例を示す図。
【図14】実施の形態1に係る判定処理S113により算出された非機能要件結果52(並列型、再々度)の例を示す図。
【図15】実施の形態1の変形例に係る高位合成装置100xの構成図。
【発明を実施するための形態】
【0010】
実施の形態1.
***構成の説明***
図1を用いて、本実施の形態に係る高位合成装置100の構成について説明する。
本実施の形態において、高位合成装置100は、コンピュータである。高位合成装置100は、プロセッサ910、記憶装置920、入力インタフェース930、出力インタフェース940といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
【0011】
高位合成装置100は、機能構成として、ロジック構成判定部110と、バッファ構成判定部120と、コード変換部130と、高位合成部140と、記憶部150とを備える。ロジック構成判定部110は、単位構成決定部111、構成決定部112、判定部113、解析部114、回路共有指示部115を備える。
以下の説明では、高位合成装置100におけるロジック構成判定部110と、バッファ構成判定部120と、コード変換部130と、高位合成部140の機能を、高位合成装置100の「部」の機能という。ロジック構成判定部110の機能とは、単位構成決定部111と、構成決定部112と、判定部113と、解析部114と、回路共有指示部115の機能である。
高位合成装置100の「部」の機能は、ソフトウェアで実現される。
【0012】
また、記憶部150は、記憶装置920で実現される。記憶部150には、ソースコード151、非機能要件152、回路仕様153、RTL154、合成レポート155が記憶される。また、記憶部150には、単位構成決定部111により生成される合成結果51、判定部113により算出された非機能要件結果52といった情報が記憶される。
【0013】
プロセッサ910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ910は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ910は、具体的には、CPU(Central Processing Unit)である。
【0014】
記憶装置920は、メモリ921及び補助記憶装置922を含む。補助記憶装置922は、具体的には、ROM(Read Only Memory)、フラッシュメモリ、又は、HDD(Hard Disk Drive)である。メモリ921は、具体的には、RAM(Random Access Memory)である。本実施の形態では、記憶部150は、メモリ921により実現される。なお、記憶部150は、補助記憶装置922により実現されてもよいし、メモリ921と補助記憶装置922とにより実現されていてもよい。記憶部150の実現方法は任意である。
【0015】
入力インタフェース930は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートである。入力インタフェース930は、具体的には、USB端子である。なお、入力インタフェース930は、LAN(Local Area Network)と接続されるポートであってもよい。
出力インタフェース940は、ディスプレイ装置といった表示機器のケーブルが接続されるポートである。出力インタフェース940は、具体的には、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイ装置は、具体的には、LCD(Liquid Crystal Display)である。なお、出力インタフェース940は、プリンタ装置といった出力装置に接続されていてもよい。
【0016】
補助記憶装置922には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ921にロードされ、プロセッサ910に読み込まれ、プロセッサ910によって実行される。補助記憶装置922には、OS(Operating System)も記憶されている。OSの少なくとも一部がメモリ921にロードされ、プロセッサ910はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
【0017】
高位合成装置100は、1つのプロセッサ910のみを備えていてもよいし、複数のプロセッサ910を備えていてもよい。複数のプロセッサ910が「部」の機能を実現するプログラムを連携して実行してもよい。
【0018】
「部」の機能による処理の結果を示す情報、データ、信号値、及び、変数値は、メモリ921、補助記憶装置922、又は、プロセッサ910内のレジスタ又はキャッシュメモリに記憶される。なお、図1において、各部と記憶部150とを結ぶ矢印は、各部が処理の結果を記憶部150に記憶すること、或いは、各部が記憶部150から情報を読み出すことを表している。また、各部を結ぶ矢印は、制御の流れを表している。
【0019】
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disc)といった可搬記録媒体に記憶されてもよい。
なお、「部」の機能を実現するプログラムを高位合成プログラム520ともいう。高位合成プログラム520は、「部」として説明している機能を実現するプログラムである。また、高位合成プログラムプロダクトと称されるものは、高位合成プログラム520が記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【0020】
<高位合成装置100の入出力>
次に、本実施の形態の高位合成装置100の入出力について説明する。
高位合成装置100は、ソースコード151と非機能要件152と回路仕様153とを入力として高位合成を行い、RTL153と合成レポート155とを出力する。
【0021】
ソースコード151は、高位合成対象の回路の動作をC言語、C++言語、SystemC言語、Matlab言語といった高級言語で記述した動作記述である。ソースコード151は、入力装置から入力インタフェース930を介して入力され、記憶部150に記憶される。ソースコード151は、回路の動作を記述した動作記述511の一例である。
また、ソースコード151は、複数の実行単位515を含む。実行単位515は、例えば、ループ記述、関数、動作単位、サブモジュールともいう。
【0022】
非機能要件152には、要求する回路の非機能要件が定義されている。具体的には、非機能要件152には、要求する回路のレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が定義されている。非機能要件152は、入力装置から入力インタフェース930を介して入力され、記憶部150に記憶される。回路の非機能要件とは回路の特性或いは性能を表す回路特性の一例である。また、非機能要件152とは、回路特性の閾値521の一例である。
【0023】
回路仕様153には、回路の仕様が定義されている。具体的には、回路仕様153には、外部とのインタフェース定義、マッピングするデバイス名(FPGAの形名やASICなどのプロセス名)、周波数といった情報が定義されている。回路仕様153は、入力装置から入力インタフェース930を介して入力され、記憶部150に記憶される。
【0024】
RTL154は、ハードウェア記述言語、即ちHDLの例である。
合成レポート155は、RTL154と共に高位合成ツールから出力される。合成レポート155には、生成されたRTL154の非機能要件が設定される。即ち、合成レポート155には、生成されたRTLのレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が設定されている。
【0025】
<入力データの充填期間について>
ここで、回路への入力データの充填期間について説明する。回路の特性(性能)として一般的な項目は、レイテンシである。これは、入力データが回路に入力されてから、出力されるまでの期間、或いはサイクル数として定義されるのが一般である。
【0026】
さて、関数F1と関数F2を実行する回路を設計する場合、大きく2つの回路構成が考えられる。
1つ目の回路構成は、F1とF2とを順序的に、直列に実行する回路構成である。これはF1を処理した後で、F2を処理する。この回路では、F1とF2で回路共有ができるため、回路規模の削減が見込める。つまり、F2が動作している期間はF1は動作しない。また、F1が動作している期間はF2は動作しないことになる。ここでF1のレイテンシをF1_LAT、F2のレイテンシをF2_LATとすると、トータルのレイテンシは、F1_LATとF2_LATを足した値F1_LAT+F2_LATとなる。
2つ目の回路構成は、F1とF2が並列で動作する場合である。F1とF2間にはダブルバッファとして、バッファAとバッファBとの2つのメモリを用意する。F1が処理結果をバッファAに書き込み、それと同時にF2はバッファBを読み出し、処理するという流れで、バケツリレーのように処理する。この回路構成のレイテンシも1つ目の回路構成と同じ、F1_LAT+F2_LATである。
【0027】
しかし、上記2つの回路構成は、次のデータの入力を受付可能とする期間が異なる。1つ目の回路構成は、F1でデータを受理した後、F2が実行されるまで、次の入力を受け取れない。一方で、2つ目の回路構成は、バケツリレー方式なので、F2の実行中に依存せず、F1は次のデータを受け付けることが可能となる。
ここで、入力データ充填期間を定義する。入力データ充填期間は、任意の関数で利用される配列へのデータ入力が充填される期間である。この入力データ充填期間をDTと呼ぶ。このDTは非機能要件152の1つである。
上記1つ目の回路構成では、DTは、F1_LAT+F2_LATである。上記2つ目の回路構成では、DTは、max(F1_LAT,F2_LAT)となる。
【0028】
このように非機能要件152においてDTを定義することにより、生成される回路の候補を限定することが可能になり、高速に探索が可能になる。
【0029】
***動作の説明***
次に、本実施の形態に係る高位合成装置100の動作について説明する。
図2を用いて、本実施の形態に係る高位合成装置100の高位合成方法510及び高位合成プログラム520による高位合成処理S100の処理の概要について説明する。
高位合成処理S100は、ロジック構成判定処理S110と、バッファ構成判定処理S120と、コード変換処理S130と、高位合成実行処理S140とを有する。
【0030】
高位合成処理S100は、ソースコード151と、入力データ充填期間を含んだ非機能要件152と、回路仕様153とを入力とする。
ロジック構成判定処理S110は、非機能要件152を満たす回路全体の回路構成を決定回路構成310として、また、非機能要件152を満たす回路を構成するサブモジュール(実行単位)の単位内構成を決定単位内構成311として決定する。
また、バッファ構成判定処理S120は、各実行単位を接続するバッファ構成を決定する。このように、非機能要件152を満たす回路の回路構成と、この回路を構成する実行単位の単位内構成と、各実行単位を接続するバッファ構成とを決定することを、回路構成を探索するともいう。
【0031】
<ロジック構成判定処理S110>
図3は、本実施の形態に係るロジック構成判定処理S110を示すフロー図である。
ロジック構成判定処理S110は、単位構成決定処理S111と、構成決定処理S112と、判定処理S113と、解析処理S114と、回路共有指示処理S115とを有する。
【0032】
<単位構成決定処理S111>
まず、単位構成決定処理S111について説明する。単位構成決定処理S111では、単位構成決定部111は、複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する。
【0033】
単位構成決定処理S111において、単位構成決定部111は、ソースコード151からループ記述箇所を実行単位として構文解析により抽出し、ループ毎に関数化を行う。ループは実行単位の一例である。
そして、単位構成決定部111は、各ループ内にイタレーション間での依存関係があるか否かを判定する。単位構成決定部111は、各ループ内にイタレーション間での依存関係がないと判定した場合は、各ループをパイプライン化又は展開可能と判定する。ここで展開可能とは、並列化が可能であることを意味する。なお、各ループ内にイタレーション間での依存関係があるか否かの判定は、高位合成ツールを用いて行ってもよい。また、クラスタとしてループ以外の関数等を含んだ記述範囲を関数化してもよい。
単位構成決定部111は、各ループ内にイタレーション間での依存関係があると判定した場合は、各ループを非パイプライン及び展開不可と判定する。
単位構成決定処理S111により、各ループにおけるパイプライン化の可否と展開の可否とを判定できる。このため、パイプライン化又は展開ができないループ(回路)は、所望の回路の探索から除外することにより、探索処理を高速化することができる。
【0034】
次に、単位構成決定部111は、ソースコード151を高位合成ツールに入力し、ループ毎のレイテンシ、回路規模といった非機能要件を合成結果51として得る。具体的には、単位構成決定部111は、ループ内の1イテレーション処理分のレイテンシ(LOGIC_LAT)と回路規模(AREA)とを、パイプライン化した場合と非パイプライン化の場合とのそれぞれの場合について得る。
なお、このとき、単位構成決定部111は、高位合成ツールにおいて回路共有はしないモードを選択する。通常、回路共有を行うと、レイテンシが伸びる傾向になる。回路のレイテンシは高位合成ツールのオプションで設定が可能であるが、無限に設定できてしまう。本実施の形態では、単位構成決定処理S111時点での回路共有を抑制し、後工程である回路共有指示処理S116においてレイテンシを指定することによる回路共有を行うことで、探索範囲を限定し、高速に最適解を得られるという効果がある。
【0035】
図4は、本実施の形態に係るソースコード151の例を示す図である。
単位構成決定部111は、図4に示すソースコード151からループ記述箇所を構文解析により抽出し、ループ毎にF1,F2との関数化を行う。図4に示すF1のループ記述とF2のループ記述との各々が実行単位515の一例である。
図4に示すソースコード151では各ループ内で依存関係がないため、単位構成決定部111は、各ループ内で依存関係がないと判定し、いずれのループもパイプライン化又は展開が可能であると判定する。
そして、単位構成決定部111は、ソースコード151を高位合成ツールに入力する。
図5は、本実施の形態に係るソースコード151を高位合成ツールに入力した場合の合成結果51を示す図である。図5では、パイプライン化したループ(回路)で高位合成した場合の合成結果51を示しているが、非パイプラインで高位合成した場合も同様にして求められる。
【0036】
単位構成決定処理S111は、ソースコード151で表される全体回路に含まれるループを実行単位或いは関数として、ループ内の構成を判定するループ内アーキテクチャ判定処理ともいう。また、単位構成決定部111は、ループ内アーキテクチャ判定部ともいう。
【0037】
以上のように、単位構成決定部111は、各実行単位についてパイプライン化の可否及び展開の可否を判定し、各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する。すなわち、単位構成決定部111により実行単位についてパイプライン化が可能であると判定された場合は、単位内構成候補はパイプライン及び非パイプラインとなる。
【0038】
<構成決定処理S112>
次に、構成決定処理S112について説明する。
構成決定処理S112において、構成決定部112は、回路の動作を記述したソースコード151であって複数の実行単位を含むソースコード151を取得し、複数の実行単位で取り得る回路構成の候補を構成候補として決定する。
具体的には、構成決定部112は、異なるループ記述の依存関係から、構成候補を決定する。すなわち、構成決定部112は、異なるループ記述の依存関係から、異なるループ記述部分の回路が並列実行可能かどうかを判断する。構成決定部112は、異なるループ記述部分の回路が並列実行可能であると判定した場合、異なるループ記述部分の回路の並列実行開始が可能になるタイミングを計測する。
異なるループ記述の依存関係とは、ソースコード151により記述される回路において、ループで表される実行単位間の構成、すなわち回路全体の回路構成を意味する。
【0039】
ループ間のアーキテクチャタイプ(すなわち、回路構成)は3種類ある。1つ目は、直列型である。直列型は、並列実行しない回路構成であり、前段のループ処理が終わってから、後段のループ処理を行う回路構成である。2つ目は、並列型(基本形)である。これは、前段のループと、後段のループが完全に独立して並列に実行する回路構成である。これは上述したバケツリレー方式である。3つ目は並列型(遅延形)である。これは、前段のループ実行の途中から後段のループが開始される回路構成である。
【0040】
直列型は、レイテンシが大きいが、回路共有の促進が可能という特徴がある。並列型(基本形)は、レイテンシは中程度である。また、並列型(遅延形)はレイテンシを小さくできるという特徴がある。
【0041】
これら3つの回路構成の中で、直列型、及び並列型(基本形)は、いかなるループ記述でも採用され得る。しかし、並列型(遅延形)は、ソースコードの実装に依存する。
【0042】
構成決定処理S112では、構成決定部112は、異なるループ記述部分の回路が並列型(遅延形)で構成可能か否かの決定を行う。
構成決定処理S112の手順は以下である。
(1)構成決定部112は、ループ間で共通に利用、即ち共通に参照或いは代入されている変数を構文解析により抽出する。
(2)構成決定部112は、各ループにおいて、変数へのライト及びリードするインデックスを構文解析により抽出する。変数へのライトにおいて、変数が配列でない場合は、最終イタレーション値、即ちループ上限値をインデックスとする。また、変数へのリードにおいて、変数が配列でない場合は、インデックスを0とする。
(3)構成決定部112は、共通する変数のライトとリードとのインデックスの差分絶対値を算出し、これらの中から最大値をDelayとして計算する。
【0043】
図4のソースコード151を用いて、具体的に説明する。構成決定処理S112において、構成決定部112が図4のソースコード151を入力した場合について説明する。
(1)構成決定部112は、構文解析を用いて、ループ間で共通に利用されている変数sumとbとを抽出する。
(2)F1のループでsum及びb[i]へ代入されているインデックスを抽出する。sumへ代入されているインデックスはSIZE−1(ループ上限値)である。b[i]へ代入されているインデックスは「0・・・SIZE−1(+1)」である。ここで、・・・は()内に示す数だけ順に加算されていることを意味する。つまり、0,1,2,3,・・・,SIZE−1と同義である。
F2のループではsum及びb[i]はリードである。リードは、sum及びb[i]及びb[i+1]であり、それぞれのインデックスは0、「0・・・SIZE−1(+1)」、「1・・・SIZE−2(+1)」である。
(3)次にDelayを算出する。
例では、sumの場合、|(SIZE−1)−(0)|=SIZE−1である。b[i]の場合、|(0・・・SIZE−1)−(0・・・SIZE−1)|=0・・・0(0)である。b[i+1]の場合、|(0・・・SIZE−1)−(1・・・SIZE−2)|=1・・・1(0)である。よって、sum及びb[i]及びb[i+1]のうちインデックスの差分絶対値の最大値はSIZE−1である。
【0044】
なお、後述する解析処理S114で並列数Nが指定された場合、ループを展開して同様に計算する。
【0045】
このように、構成決定部112は、複数のループ記述に共通の変数のインデックスに基づいて複数のループ記述の依存関係を判定する。
構成決定処理S112は、ソースコード151で表される全体回路に含まれる異なるループ記述部分の回路が並列型(遅延形)で構成可能か否かの決定を行う。構成決定処理S112は、ループ間アーキテクチャ判定処理ともいう。また、構成決定部112は、ループ間アーキテクチャ判定部ともいう。
【0046】
以上のように、構成決定部112は、複数のループ記述の回路構成について並列型(遅延形)で構成可能かを判定し、複数のループ記述の回路構成の構成候補を決定する。
【0047】
<判定処理S113>
判定処理S113では、判定部113は、複数のループ記述の回路構成を、構成決定処理S112で決定された構成候補とした場合の回路の特性を回路特性522として算出する。そして、判定部113は、回路特性522が閾値521を満たす場合にその構成候補を決定回路構成310として出力する。また、判定部113は、回路特性522が閾値521を満たす場合に複数の実行単位515の各実行単位515の単位内構成候補を決定単位内構成311として出力する。
具体的には、判定部113は、回路全体の回路構成(ループ間アーキテクチャ)の非機能(回路特性522)を計算する。このとき、判定部113は、実行単位の回路構成候補毎に、さらに、各実行単位の単位内構成候補毎に回路特性522を算出し、回路特性522を含む非機能要件結果52を算出する。判定部113は、回路のレイテンシと回路の入力データ充填期間(DT)とを含む回路特性522を算出する。
判定部113は、算出した非機能要件結果52が記憶部150に記憶されている非機能要件152(閾値521)を満たしているか否かの判定を行う(ステップS113a)。
【0048】
図6は、本実施の形態に係る判定処理S113において用いられる単位内構成(ループ内アーキテクチャ)の計算式31である実行単位計算式3131を示す図である。
また、図7は、本実施の形態に係る判定処理S113において用いられる回路構成(ループ間アーキテクチャ)の計算式31である回路構成計算式3132を示す図である。図8は、本実施の形態に係る判定処理S113において用いられる回路構成(ループ間アーキテクチャ)の計算式31であるDT計算式3133を示す図である。
ここで、LOOPは、ループ数である。Nは、並列数である。LOGIC_LATは、1イテレーション分レイテンシである。FNは、ループ番号Nの処理であり、サンプル(具体例)ではF1とF2がある。FNcycleは、FNのレイテンシである。Delayn−1,nは、FN番目とFN−1番目の上述した構成決定処理S112で求めた距離である。DII(Data Initiation Interval)は、パイプライン化した場合のスループットであり、これは高位合成ツールでも同様に定義される。
【0049】
判定部113は、実行単位計算式3131を用いて、実行単位のレイテンシ、すなわちループ内のレイテンシを算出する。そして、判定部113は、実行単位のレイテンシと、回路構成計算式3132とを用いて、回路全体の回路構成(ループ間アーキテクチャ)のレイテンシを算出する。また、判定部113は、実行単位のレイテンシと、DT計算式3133とを用いて、回路全体の回路構成(ループ間アーキテクチャ)のDTを算出する。
即ち、判定部113は、回路全体の回路構成(ループ間アーキテクチャ)の非機能として、レイテンシとDTとを非機能要件結果52として算出する。
【0050】
図9及び図10は、図4に示すソースコード151から算出された非機能要件結果52を示す図である。図9は、ソースコード151の回路構成が直列型の場合の非機能要件結果52を示す。また、図10は、ソースコード151の回路構成が並列型の場合の非機能要件結果52を示す。
図9及び図10に示すように、判定部113は、複数の実行単位の各実行単位の特性を単位毎特性として算出し、算出した単位毎特性に基づいて回路全体の回路特性522を算出する。また、図9及び図10に示すように、判定部113は、回路特性522を、複数の実行単位の各実行単位の単位内構成候補毎に算出する。すなわち、判定部113は、F1とF2との各々について、パイプラインの場合と非パイプラインの場合との単位内構成候補毎の単位毎特性を算出する。そして、算出した単位内構成候補毎の単位毎特性に基づいて、回路特性522を算出する。
【0051】
図3のステップS113aにおいて、判定部113は、回路特性522が閾値521を満たすか否かを判定する。具体的には、判定部113は、ソースコード151から算出された非機能要件結果52が非機能要件152を満たすか否かを判定する。
判定部113は、非機能要件結果52が非機能要件152を満たしていないと判定した場合は、解析処理S114に進む。一方、判定部113は、非機能要件結果52が非機能要件152を満たすと判定した場合は、回路共有指示処理S115に進む。
【0052】
<解析処理S114>
解析処理S114において、解析部114は、判定部113により回路特性522が閾値521を満たさないと判定された場合、単位毎特性に基づいて構成を変更する実行単位515を解析する。具体的には、非機能要件結果52が非機能要件152を満たさない場合、非機能要件152を満たすための改善ポイントを解析する。解析部114は、改善のための指示を改善指示として単位構成決定処理S111に出力し、単位構成決定処理S111に処理を戻す。
【0053】
具体的には、解析部114は、レイテンシを表すサイクル数が非機能要件152を満たさない場合、各実行単位のレイテンシ見積もり値が最も大きい実行単位を抽出する。そして、解析部114は、抽出した実行単位について、並列度Nを2にする、或いは周波数を変更する等の改善指示を単位構成決定部111に出力する。単位構成決定処理S111では、単位構成決定部111は、解析部114から出力された改善指示に基づいて、設計を改善し、再度評価を行う。
また、解析部114は、非機能要件152としての回路規模が満たせない場合は、現在のLOGIC_LAT値から1を足した値をLOGIC_LATとして定義する改善指示を単位構成決定部111に出力する。単位構成決定処理S111では、単位構成決定部111は、解析部114から出力された改善指示に基づいて、高位合成ツール上の回路共有モードをオンにして、高位合成を実行する。先の単位構成決定処理S111では、回路共有モードをオフにして高位合成を実行していた。つまり、レイテンシは最も短く、回路規模は大きいものである。非機能要件152としての回路規模が満たせない場合は、回路共有モードをオンにするが、この場合、高位合成ツールは、どの程度、回路共有をすべきかが分からない。これはレイテンシが設定されていないからである。レイテンシを設定することで、限られた時間制約のもと回路共有を行うことができる。つまり、この処理は、非機能要件であるレイテンシを可能な限り維持しつつ、回路共有を探索する方法であり、回路規模共有の探索が高速に行える。
【0054】
以上のように、解析処理S114では、目標となる非機能要件152を満たす回路を高速に探索するための、改善効果が大きい箇所を判断し、改善指示を行うことが可能になるため、効率的な探索が可能となる。
【0055】
図4のソースコード151を例として説明する。仮に非機能要件152のレイテンシを1000、DTを1000とする。図9(直列型)及び図10(並列型)に示した非機能要件結果52では、非機能要件152のレイテンシ及びDTを満たしていない。
解析部114は、非機能要件結果52が非機能要件152を満たせていないと判定する。
【0056】
解析部114は、図9及び図10の非機能要件結果52に基づいて、Fcycleの大きい値を削減するために、並列化を行う。並列化対象となる実行単位(すなわち関数あるいはロジック)は、レイテンシが大きいF2とする。レイテンシの大小は、例えば、レイテンシの総和等から判断する。この例では、F1が非パイプ、F2がパイプの場合は、F1のほうが大きいが、簡単のため、F2の並列化を行う。解析部114は、実際は、それぞれの実行単位の組み合わせで、適切な改善ポイントを決める。
解析部114は、F2を並列化N=2として指定する改善指示を生成し、単位構成決定部111に出力する。単位構成決定処理S111では、単位構成決定部111は、解析部114から出力された改善指示に基づいて、F2を並列化N=2とする改善指示を単位構成決定処理S111に出力し、再度評価を行う。
【0057】
図11(直列型)及び図12(並列型)に、単位構成決定処理S111において再度計算された非機能要件結果52を示す。図11(直列型)及び図12(並列型)の非機能要件結果52であっても、まだ非機能要件152を満たせない。よって、解析部114は、上記と同様にF1を並列化N=2とする改善指示を単位構成決定処理S111に出力し、再度評価を行う。図13(直列型)及び図14(並列型)に、単位構成決定処理S111において再々度計算された非機能要件結果52を示す。図14の結果より、パイプラインで並列度2のF1と、パイプラインで並列度2のF2とが並列実行する回路構成が非機能要件152を満たす回路構成である決定される。
【0058】
<回路共有指示処理S115>
次に、図3に戻り説明を続ける。
回路共有指示部115は、判定部113により回路特性522が閾値521を満たすと判定された場合、各実行単位の単位毎特性に基づいて回路共有を指示する。具体的には、回路共有指示部115は、回路全体のレイテンシに影響しない単位内構成のレイテンシを求め、これを高位合成ツールへのオプションとして与える。
この処理は、回路構成として並列型が選択されている場合に限定される。並列型では、上述した計算式のように、実行単位のレイテンシがレイテンシ計算式、及びDT計算式上に現れない実行単位が存在する。例えば、並列型のDT計算式においては、Maxで計算するため、この最大値より小さい値を持つ実行単位のレイテンシを最大値以下に設定しても、全体の性能に影響を与えない。
そこで、該当する単位内構成のレイテンシを最大値までに引きあげる。このようにすることで、実行単位の回路共有が可能になり、かつ一般には回路共有によりレイテンシが伸びてしまうが、この場合に限り、全体のレイテンシには影響しないことなるため、効果的に最適な回路共有が可能になる。
【0059】
図4を例とした判定処理S113のステップS113aにおいて非機能要件152を満たすと判定された回路構成は、パイプラインで並列度2のF1と、パイプラインで並列度2のF2とが並列実行する回路構成がであった。図14から、この回路構成は、並列型であり、F1のLOGIC_LATが2で、F2のLOGIC_LATが4である。ここで、F1のLOGIC_LATを4にしても、全体の性能に影響を与えないため、LOGIC_LATを4にして、再度F1を合成する。このようにすることで、回路共有が可能になり、面積を削減できる。
【0060】
以上のように、ロジック構成判定処理S110により、非機能要件152を満たす回路構成が決定される。
【0061】
<バッファ構成判定処理S120>
次に、バッファ構成判定部120は、複数の実行単位が決定回路構成310を成す場合の複数の実行単位間のバッファ構成22を決定する。すなわち、バッファ構成判定部120は、ロジック構成判定処理S110において決定された決定回路構成310を実現するためのバッファ構成22を決定する。
【0062】
バッファ構成判定処理S120の手順を以下に示す。
(1)基本構成の決定
バッファ構成判定部120は、バッファの基本構成を、回路全体の回路構成(ループ間アーキテクチャ)が直列型ならShare型、並列型(基本形)ならダブルバッファ型、並列型(遅延型)ならラインバッファ型とする。
(2)SIZEの取得
(2−1)Share型の場合:配列の要素数等より判断する。
(2−2)ダブルバッファ型の場合:配列の要素数等より判断する。
(2−3)ラインバッファ型の場合:遅延量(Delay)とする。
(3)シフトレジスタ化
Share型、ダブルバッファ型、ラインバッファ型共に、配列に対して、複数のリード(参照)がある場合は、要素数のインデックスよりシフトレジスタ化を判定する。
(4)ポート数及びメモリ個数の判断
バッファ構成判定部120は、単位内構成が並列の場合、並列数に応じたポート数、メモリ個数を生成する。
以上の手順でバッファ構成判定部120は、バッファ構成22を決定する。
【0063】
<コード変換処理S130及び高位合成実行処理S140>
コード変換処理S130において、コード変換部130は、複数の実行単位の回路構成が決定回路構成310となるように動作記述を変換し、変換した動作記述を変換記述として出力する。さらに、コード変換部130は、複数の実行単位の各実行単位の単位内構成が決定単位内構成311となるように動作記述を変換すると共に高位合成オプションを設定する。さらに、コード変換部130は、バッファ構成判定部120により決定されたバッファ構成22を実現するように動作記述を変換すると共に高位合成オプションを設定する。
【0064】
具体的には、コード変換部130は、ロジック構成判定処理S110において決定された決定回路構成310及び決定単位内構成311と、バッファ構成判定処理S120において決定されたバッファ構成22とを取得する。コード変換部130は、決定回路構成310及び決定単位内構成311とバッファ構成とに基づいて、これらの決定回路構成310及び決定単位内構成311とバッファ構成とを実現するために、ソースコードの変換及び挿入と、高位合成オプションの設定とを行う。高位合成ツールによって、その記述方法やオプションは異なるため、テンプレートデザインを用いてソースコード及び高位合成オプションを生成してもよい。
高位合成実行処理S140において、高位合成部140は、コード変換処理S130において生成されたソースコードと高位合成オプションとを高位合成ツールに入力することにより、高位合成実行処理S140を実行し、RTL154及び合成レポート155を出力する。
【0065】
以上で、本実施の形態に係る高位合成装置100の高位合成処理S100についての説明を終わる。
【0066】
***他の構成***
高位合成装置100は、通信装置を備え、通信装置を介して、ソースコード151、非機能要件152、回路仕様153を受信してもよい。また、高位合成装置100は、通信装置を介して、RTL154及び合成レポート155を送信してもよい。この場合、通信装置はレシーバとトランスミッタとを備える。具体的には、通信装置は通信チップ又はNIC(Network Interface Card)である。通信装置はデータを通信する通信部として機能する。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
【0067】
また、本実施の形態では、高位合成装置100の「部」の機能がソフトウェアで実現されるが、変形例として、高位合成装置100の「部」の機能がハードウェアで実現されてもよい。
図15を用いて、本実施の形態の変形例に係る高位合成装置100xの構成について説明する。
図15に示すように、高位合成装置100xは、処理回路909、入力インタフェース930、出力インタフェース940といったハードウェアを備える。
【0068】
処理回路909は、前述した「部」の機能及び記憶部150を実現する専用の電子回路である。処理回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、又は、FPGA(Field−Programmable Gate Array)である。
【0069】
「部」の機能は、1つの処理回路909で実現されてもよいし、複数の処理回路909に分散して実現されてもよい。
【0070】
別の変形例として、高位合成装置100の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。即ち、高位合成装置100の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
【0071】
プロセッサ910、記憶装置920、及び、処理回路909を、総称して「プロセッシングサーキットリ」という。つまり、高位合成装置100の構成が図1及び図10のいずれに示した構成であっても、「部」の機能及び記憶部150は、プロセッシングサーキットリにより実現される。
【0072】
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
【0073】
***本実施の形態の効果の説明***
本実施の形態に係る高位合成装置100は、回路の動作を記述した動作記述であるソースコードと、回路の特性を決める非機能要件と、合成対象の回路仕様とを入力として、高位合成処理を行い、ハードウェア記述言語を出力する。この高位合成装置100は、並列実行単位の内部アーキテクチャ及び並列化アーキテクチャを決めるロジック構成判定部と、並列化されたアーキテクチャ間のバッファ構成を決めるバッファ構成判定部とを備える。また、高位合成装置100は、ロジック構成判定部により決められたロジックアーキテクチャとバッファ構成判定部により決められたバッファ構成とを実現するソースコードと高位合成オプションとを生成するコード変換部を備える。よって、本実施の形態に係る高位合成装置100によれば、これまで手動で行ってきた、非機能要件を満たすためのアーキテクチャ設計と、そのアーキテクチャを実現するためのソースコード及び高位合成オプション等の設定を自動かつ高速に行うことができる。さらに、本実施の形態に係る高位合成装置100によれば、設計者に依存せず、短時間で最適な回路の設計が可能になる。
【0074】
また、本実施の形態に係る高位合成装置100によれば、生成された回路が非機能要件を満たせない場合、非機能要件を改善するアーキテクチャの変更を行う解析部を有するので、非機能要件を満たすまでアーキテクチャの変更を行うことができ、最適な回路の設計を確実にすることができる。
【0075】
また、本実施の形態に係る高位合成装置100によれば、非機能要件を満たすレイテンシに合わせて、回路共有度を決めることを可能にする回路共有指示部を有するので、最適な回路の設計を効率的にすることができる。
【0076】
以上、本発明の実施の形態について説明したが、この実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、高位合成装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、どのような組合せ、或いは任意のブロック構成で高位合成装置を構成しても構わない。また、高位合成装置は、1つの装置でなく、複数の装置から構成された高位合成システムでもよい。
【0077】
また、この実施の形態のうち、複数の部分を組合せて実施しても構わない。或いは、この実施の形態のうち、部分的に実施しても構わない。その他、この実施の形態を、全体として或いは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【0078】
22 バッファ構成、31 計算式、51 合成結果、52 非機能要件結果、100,100x 高位合成装置、110 ロジック構成判定部、111 単位構成決定部、112 構成決定部、113 判定部、114 解析部、115 回路共有指示部、120 バッファ構成判定部、130 コード変換部、140 高位合成部、150 記憶部、151 ソースコード、152 非機能要件、153 回路仕様、154 RTL、155 合成レポート、310 決定回路構成、311 決定単位内構成、510 高位合成方法、511 動作記述、515 実行単位、520 高位合成プログラム、521 閾値、522 回路特性、909 処理回路、910 プロセッサ、920 記憶装置、921 メモリ、922 補助記憶装置、930 入力インタフェース、940 出力インタフェース、3131 実行単位計算式、3132 回路構成計算式、3133 DT計算式、S100 高位合成処理、S110 ロジック構成判定処理、S120 バッファ構成判定処理、S130 コード変換処理、S140 高位合成実行処理、S111 単位構成決定処理、S112 構成決定処理、S113 判定処理、S114 解析処理、S115 回路共有指示処理。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】

【手続補正書】
【提出日】20160818
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位で利用される配列へのデータ入力が充填される期間である入力データ充填期間の閾値を取得し、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の入力データ充填期間を前記回路の回路特性として算出し、前記回路特性が前記閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部と
を備えた高位合成装置。
【請求項2】
前記高位合成装置は、さらに、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述を変換すると共に高位合成オプションを設定するコード変換部を備え、
前記高位合成部は、
前記コード変換部により変換された前記動作記述と前記高位合成オプションを用いて高位合成を実行する請求項1に記載の高位合成装置。
【請求項3】
前記構成決定部は、
前記複数の実行単位の依存関係に基づいて前記構成候補を決定する請求項1または2に記載の高位合成装置。
【請求項4】
前記構成決定部は、
前記複数の実行単位に共通の変数に基づいて前記複数の実行単位の依存関係を判定する請求項3に記載の高位合成装置。
【請求項5】
前記高位合成装置は、さらに、
前記複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する単位構成決定部を備え、
前記判定部は、
前記回路の特性を前記複数の実行単位の各実行単位の単位内構成候補毎に算出し、前記回路特性が閾値を満たす場合に前記複数の実行単位の各実行単位の単位内構成候補を決定単位内構成として出力し、
前記高位合成部は、
前記複数の実行単位の各実行単位の単位内構成が決定単位内構成となるように前記動作記述に対して高位合成を実行する請求項1から4のいずれか1項に記載の高位合成装置。
【請求項6】
前記実行単位は、ループ記述である請求項1からのいずれか1項に記載の高位合成装置。
【請求項7】
構成決定部が、回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定し、
判定部が、前記複数の実行単位で利用される配列へのデータ入力が充填される期間である入力データ充填期間の閾値を取得し、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の入力データ充填期間を前記回路の回路特性として算出し、前記回路特性が前記閾値を満たす場合に前記構成候補を決定回路構成として出力し、
高位合成部が、前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成方法。
【請求項8】
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定処理と、
前記複数の実行単位で利用される配列へのデータ入力が充填される期間である入力データ充填期間の閾値を取得し、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の入力データ充填期間を前記回路の回路特性として算出し、前記回路特性が前記閾値を満たす場合に前記構成候補を決定回路構成として出力する判定処理と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成処理と
をコンピュータに実行させる高位合成プログラム。
【国際調査報告】