(57)【要約】  構成決定部（１１２）が、回路の動作を記述した動作記述（５１１）であって複数の実行単位を含む動作記述（５１１）を取得し、複数の実行単位で取り得る回路構成の候補を構成候補として決定する。判定部（１１３）が、複数の実行単位の回路構成を構成候補とした場合の回路の特性を回路特性（５２２）として算出し、回路特性（５２２）が閾値（５２１）を満たす場合に構成候補を決定回路構成（３１０）として出力する。高位合成部（１４０）が、複数の実行単位の回路構成が決定回路構成（３１０）となるように動作記述（５１１）に対して高位合成を実行する。
2017154183.tif 000002
【特許請求の範囲】
【請求項１】
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部と
を備えた高位合成装置。
【請求項２】
前記高位合成装置は、さらに、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述を変換すると共に高位合成オプションを設定するコード変換部を備え、
前記高位合成部は、
前記コード変換部により変換された前記動作記述と前記高位合成オプションを用いて高位合成を実行する請求項１に記載の高位合成装置。
【請求項３】
前記構成決定部は、
前記複数の実行単位の依存関係に基づいて前記構成候補を決定する請求項１または２に記載の高位合成装置。
【請求項４】
前記構成決定部は、
前記複数の実行単位に共通の変数に基づいて前記複数の実行単位の依存関係を判定する請求項３に記載の高位合成装置。
【請求項５】
前記高位合成装置は、さらに、
前記複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する単位構成決定部を備え、
前記判定部は、
前記回路の特性を前記複数の実行単位の各実行単位の単位内構成候補毎に算出し、前記回路特性が閾値を満たす場合に前記複数の実行単位の各実行単位の単位内構成候補を決定単位内構成として出力し、
前記高位合成部は、
前記複数の実行単位の各実行単位の単位内構成が決定単位内構成となるように前記動作記述に対して高位合成を実行する請求項１から４のいずれか１項に記載の高位合成装置。
【請求項６】
前記高位合成装置は、さらに、
前記複数の実行単位が前記決定回路構成の場合の前記複数の実行単位間のバッファ構成を決定するバッファ構成判定部を備え、
前記高位合成部は、
前記バッファ構成を実現するように前記動作記述に対して高位合成を実行する請求項５に記載の高位合成装置。
【請求項７】
前記判定部は、
前記複数の実行単位の各々の特性を単位毎特性として算出し、前記単位毎特性に基づいて前記回路特性を算出し、
前記高位合成装置は、さらに、
前記判定部により前記回路特性が閾値を満たさないと判定された場合、前記単位毎特性に基づいて構成を変更する実行単位を解析する解析部を備えた請求項１から６のいずれか１項に記載の高位合成装置。
【請求項８】
前記高位合成装置は、さらに、
前記判定部により前記回路特性が閾値を満たすと判定された場合、前記単位毎特性に基づいて回路共有を指示する回路共有指示部を備えた請求項７に記載の高位合成装置。
【請求項９】
前記判定部は、
前記回路特性として、前記回路のレイテンシと前記回路の入力データ充填期間とを算出する請求項１から８のいずれか１項に記載の高位合成装置。
【請求項１０】
前記実行単位は、ループ記述である請求項１から９のいずれか１項に記載の高位合成装置。
【請求項１１】
構成決定部が、回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定し、
判定部が、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力し、
高位合成部が、前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成方法。
【請求項１２】
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定処理と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定処理と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成処理と
をコンピュータに実行させる高位合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラミング言語による動作記述からレジスタ転送レベルの回路記述を自動生成する高位合成装置、高位合成方法及び高位合成プログラムに関する。
【背景技術】
【０００２】
従来の半導体集積回路の設計では、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）といったハードウェア記述言語を用いて、レジスタ（フリップフロップ）間の組み合わせ回路の動作を記述していた。近年では、集積回路の回路規模が増大しており、ハードウェア記述言語を用いた設計では多大な設計時間を要する。そこで、ハードウェア記述言語よりも抽象度が高いＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語、Ｍａｔｌａｂ言語といった高級言語を用いて設計を行い、ＲＴＬを自動的に生成する技術が提唱されている。そして、これを実現するツールが高位合成ツールとして市販されている。
設計者は、高級言語を用いたソースコードと、回路仕様とを高位合成ツールに入力することで、回路設計を行うことができる。また、設計者は、高級言語では表現できない、或いはソースコードで表現するには効率的でない回路仕様については、オプション、アトリビュート、プラグマといった高位合成オプションを設定して、高位合成ツールに入力する。【０００３】
これらの高位合成オプションは、回路の非機能要件であるレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量等に影響を与える。高位合成ツールでは、配列のメモリ化あるいはレジスタ化、演算のパイプライン化或いは非パイプライン化を指定する高位合成オプションがある。ソースコードの動作記述自体は変更せずに、これらの高位合成オプションを設定し高位合成を行うことで、非機能要件であるメモリ使用量やスループットを容易に知ることができる。
つまり、これらの高位合成オプションの組み合わせを試行し、試行結果から得られる特性、すなわち非機能要件を満たす最適な回路を選択することで、所望の回路を得ることができる。
しかしながら、これらの高位合成オプションの組み合わせは膨大になるため、探索の高速化が課題になる。そこで、特許文献１では、これらの高位合成オプションの設計空間を定義し、この設計空間の探索を高速に行う方法を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５６０５４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１では各クラスタの最適化は可能であるが、クラスタ間のアーキテクチャに着目されておらず、クラスタ間のアーキテクチャ探索ができないという課題がある。【０００６】
本発明は、非機能要件を満たすためのアーキテクチャ設計において、実行単位間の構成を考慮したアーキテクチャ設計と、そのアーキテクチャを実現するための高位合成を行うことを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る高位合成装置は、
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部とを備えた。
【発明の効果】
【０００８】
本発明に係る高位合成装置では、構成決定部が、回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する。そして、判定部が、複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する。さらに、高位合成部が、複数の実行単位の回路構成が決定回路構成となるように動作記述に対して高位合成を実行する。よって、本発明に係る高位合成装置によれば、回路特性が閾値を満たす実行単位の回路構成を決定回路構成として得ることができると共に、その決定回路構成を実現するための高位合成を行うことができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る高位合成装置１００の構成図。
【図２】実施の形態１に係る高位合成装置１００の高位合成方法５１０及び高位合成プログラム５２０による高位合成処理Ｓ１００を示すフロー図。
【図３】実施の形態１に係るロジック構成判定処理Ｓ１１０を示すフロー図。
【図４】実施の形態１に係るソースコード１５１の例を示す図。
【図５】実施の形態１に係るソースコード１５１を高位合成ツールに入力した場合の合成結果５１の例を示す図。
【図６】実施の形態１に係る判定処理Ｓ１１３において用いられる単位内構成（ループ内アーキテクチャ）の計算式３１。
【図７】実施の形態１に係る判定処理Ｓ１１３において用いられる回路構成（ループ間アーキテクチャ）のレイテンシの計算式３１。
【図８】実施の形態１に係る判定処理Ｓ１１３において用いられる回路構成（ループ間アーキテクチャ）のＤＴの計算式３１。
【図９】実施の形態１に係る判定処理Ｓ１１３により算出された非機能要件結果５２（直列型、１回目）の例を示す図。
【図１０】実施の形態１に係る判定処理Ｓ１１３により算出された非機能要件結果５２（並列型、１回目）の例を示す図。
【図１１】実施の形態１に係る判定処理Ｓ１１３により算出された非機能要件結果５２（直列型、再度）の例を示す図。
【図１２】実施の形態１に係る判定処理Ｓ１１３により算出された非機能要件結果５２（並列型、再度）の例を示す図。
【図１３】実施の形態１に係る判定処理Ｓ１１３により算出された非機能要件結果５２（直列型、再々度）の例を示す図。
【図１４】実施の形態１に係る判定処理Ｓ１１３により算出された非機能要件結果５２（並列型、再々度）の例を示す図。
【図１５】実施の形態１の変形例に係る高位合成装置１００ｘの構成図。
【発明を実施するための形態】
【００１０】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、本実施の形態に係る高位合成装置１００の構成について説明する。
本実施の形態において、高位合成装置１００は、コンピュータである。高位合成装置１００は、プロセッサ９１０、記憶装置９２０、入力インタフェース９３０、出力インタフェース９４０といったハードウェアを備える。記憶装置９２０は、メモリ９２１と補助記憶装置９２２とを有する。
【００１１】
高位合成装置１００は、機能構成として、ロジック構成判定部１１０と、バッファ構成判定部１２０と、コード変換部１３０と、高位合成部１４０と、記憶部１５０とを備える。ロジック構成判定部１１０は、単位構成決定部１１１、構成決定部１１２、判定部１１３、解析部１１４、回路共有指示部１１５を備える。
以下の説明では、高位合成装置１００におけるロジック構成判定部１１０と、バッファ構成判定部１２０と、コード変換部１３０と、高位合成部１４０の機能を、高位合成装置１００の「部」の機能という。ロジック構成判定部１１０の機能とは、単位構成決定部１１１と、構成決定部１１２と、判定部１１３と、解析部１１４と、回路共有指示部１１５の機能である。
高位合成装置１００の「部」の機能は、ソフトウェアで実現される。
【００１２】
また、記憶部１５０は、記憶装置９２０で実現される。記憶部１５０には、ソースコード１５１、非機能要件１５２、回路仕様１５３、ＲＴＬ１５４、合成レポート１５５が記憶される。また、記憶部１５０には、単位構成決定部１１１により生成される合成結果５１、判定部１１３により算出された非機能要件結果５２といった情報が記憶される。
【００１３】
プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ９１０は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１４】
記憶装置９２０は、メモリ９２１及び補助記憶装置９２２を含む。補助記憶装置９２２は、具体的には、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。メモリ９２１は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。本実施の形態では、記憶部１５０は、メモリ９２１により実現される。なお、記憶部１５０は、補助記憶装置９２２により実現されてもよいし、メモリ９２１と補助記憶装置９２２とにより実現されていてもよい。記憶部１５０の実現方法は任意である。
【００１５】
入力インタフェース９３０は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。
出力インタフェース９４０は、ディスプレイ装置といった表示機器のケーブルが接続されるポートである。出力インタフェース９４０は、具体的には、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイ装置は、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。なお、出力インタフェース９４０は、プリンタ装置といった出力装置に接続されていてもよい。
【００１６】
補助記憶装置９２２には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ９２１にロードされ、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。補助記憶装置９２２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。ＯＳの少なくとも一部がメモリ９２１にロードされ、プロセッサ９１０はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【００１７】
高位合成装置１００は、１つのプロセッサ９１０のみを備えていてもよいし、複数のプロセッサ９１０を備えていてもよい。複数のプロセッサ９１０が「部」の機能を実現するプログラムを連携して実行してもよい。
【００１８】
「部」の機能による処理の結果を示す情報、データ、信号値、及び、変数値は、メモリ９２１、補助記憶装置９２２、又は、プロセッサ９１０内のレジスタ又はキャッシュメモリに記憶される。なお、図１において、各部と記憶部１５０とを結ぶ矢印は、各部が処理の結果を記憶部１５０に記憶すること、或いは、各部が記憶部１５０から情報を読み出すことを表している。また、各部を結ぶ矢印は、制御の流れを表している。
【００１９】
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）といった可搬記録媒体に記憶されてもよい。
なお、「部」の機能を実現するプログラムを高位合成プログラム５２０ともいう。高位合成プログラム５２０は、「部」として説明している機能を実現するプログラムである。また、高位合成プログラムプロダクトと称されるものは、高位合成プログラム５２０が記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【００２０】
＜高位合成装置１００の入出力＞
次に、本実施の形態の高位合成装置１００の入出力について説明する。
高位合成装置１００は、ソースコード１５１と非機能要件１５２と回路仕様１５３とを入力として高位合成を行い、ＲＴＬ１５３と合成レポート１５５とを出力する。
【００２１】
ソースコード１５１は、高位合成対象の回路の動作をＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語、Ｍａｔｌａｂ言語といった高級言語で記述した動作記述である。ソースコード１５１は、入力装置から入力インタフェース９３０を介して入力され、記憶部１５０に記憶される。ソースコード１５１は、回路の動作を記述した動作記述５１１の一例である。
また、ソースコード１５１は、複数の実行単位５１５を含む。実行単位５１５は、例えば、ループ記述、関数、動作単位、サブモジュールともいう。
【００２２】
非機能要件１５２には、要求する回路の非機能要件が定義されている。具体的には、非機能要件１５２には、要求する回路のレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が定義されている。非機能要件１５２は、入力装置から入力インタフェース９３０を介して入力され、記憶部１５０に記憶される。回路の非機能要件とは回路の特性或いは性能を表す回路特性の一例である。また、非機能要件１５２とは、回路特性の閾値５２１の一例である。
【００２３】
回路仕様１５３には、回路の仕様が定義されている。具体的には、回路仕様１５３には、外部とのインタフェース定義、マッピングするデバイス名（ＦＰＧＡの形名やＡＳＩＣなどのプロセス名）、周波数といった情報が定義されている。回路仕様１５３は、入力装置から入力インタフェース９３０を介して入力され、記憶部１５０に記憶される。
【００２４】
ＲＴＬ１５４は、ハードウェア記述言語、即ちＨＤＬの例である。
合成レポート１５５は、ＲＴＬ１５４と共に高位合成ツールから出力される。合成レポート１５５には、生成されたＲＴＬ１５４の非機能要件が設定される。即ち、合成レポート１５５には、生成されたＲＴＬのレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が設定されている。
【００２５】
＜入力データの充填期間について＞
ここで、回路への入力データの充填期間について説明する。回路の特性（性能）として一般的な項目は、レイテンシである。これは、入力データが回路に入力されてから、出力されるまでの期間、或いはサイクル数として定義されるのが一般である。
【００２６】
さて、関数Ｆ１と関数Ｆ２を実行する回路を設計する場合、大きく２つの回路構成が考えられる。
１つ目の回路構成は、Ｆ１とＦ２とを順序的に、直列に実行する回路構成である。これはＦ１を処理した後で、Ｆ２を処理する。この回路では、Ｆ１とＦ２で回路共有ができるため、回路規模の削減が見込める。つまり、Ｆ２が動作している期間はＦ１は動作しない。また、Ｆ１が動作している期間はＦ２は動作しないことになる。ここでＦ１のレイテンシをＦ１＿ＬＡＴ、Ｆ２のレイテンシをＦ２＿ＬＡＴとすると、トータルのレイテンシは、Ｆ１＿ＬＡＴとＦ２＿ＬＡＴを足した値Ｆ１＿ＬＡＴ＋Ｆ２＿ＬＡＴとなる。
２つ目の回路構成は、Ｆ１とＦ２が並列で動作する場合である。Ｆ１とＦ２間にはダブルバッファとして、バッファＡとバッファＢとの２つのメモリを用意する。Ｆ１が処理結果をバッファＡに書き込み、それと同時にＦ２はバッファＢを読み出し、処理するという流れで、バケツリレーのように処理する。この回路構成のレイテンシも１つ目の回路構成と同じ、Ｆ１＿ＬＡＴ＋Ｆ２＿ＬＡＴである。
【００２７】
しかし、上記２つの回路構成は、次のデータの入力を受付可能とする期間が異なる。１つ目の回路構成は、Ｆ１でデータを受理した後、Ｆ２が実行されるまで、次の入力を受け取れない。一方で、２つ目の回路構成は、バケツリレー方式なので、Ｆ２の実行中に依存せず、Ｆ１は次のデータを受け付けることが可能となる。
ここで、入力データ充填期間を定義する。入力データ充填期間は、任意の関数で利用される配列へのデータ入力が充填される期間である。この入力データ充填期間をＤＴと呼ぶ。このＤＴは非機能要件１５２の１つである。
上記１つ目の回路構成では、ＤＴは、Ｆ１＿ＬＡＴ＋Ｆ２＿ＬＡＴである。上記２つ目の回路構成では、ＤＴは、ｍａｘ（Ｆ１＿ＬＡＴ，Ｆ２＿ＬＡＴ）となる。
【００２８】
このように非機能要件１５２においてＤＴを定義することにより、生成される回路の候補を限定することが可能になり、高速に探索が可能になる。
【００２９】
＊＊＊動作の説明＊＊＊
次に、本実施の形態に係る高位合成装置１００の動作について説明する。
図２を用いて、本実施の形態に係る高位合成装置１００の高位合成方法５１０及び高位合成プログラム５２０による高位合成処理Ｓ１００の処理の概要について説明する。
高位合成処理Ｓ１００は、ロジック構成判定処理Ｓ１１０と、バッファ構成判定処理Ｓ１２０と、コード変換処理Ｓ１３０と、高位合成実行処理Ｓ１４０とを有する。
【００３０】
高位合成処理Ｓ１００は、ソースコード１５１と、入力データ充填期間を含んだ非機能要件１５２と、回路仕様１５３とを入力とする。
ロジック構成判定処理Ｓ１１０は、非機能要件１５２を満たす回路全体の回路構成を決定回路構成３１０として、また、非機能要件１５２を満たす回路を構成するサブモジュール（実行単位）の単位内構成を決定単位内構成３１１として決定する。
また、バッファ構成判定処理Ｓ１２０は、各実行単位を接続するバッファ構成を決定する。このように、非機能要件１５２を満たす回路の回路構成と、この回路を構成する実行単位の単位内構成と、各実行単位を接続するバッファ構成とを決定することを、回路構成を探索するともいう。
【００３１】
＜ロジック構成判定処理Ｓ１１０＞
図３は、本実施の形態に係るロジック構成判定処理Ｓ１１０を示すフロー図である。
ロジック構成判定処理Ｓ１１０は、単位構成決定処理Ｓ１１１と、構成決定処理Ｓ１１２と、判定処理Ｓ１１３と、解析処理Ｓ１１４と、回路共有指示処理Ｓ１１５とを有する。
【００３２】
＜単位構成決定処理Ｓ１１１＞
まず、単位構成決定処理Ｓ１１１について説明する。単位構成決定処理Ｓ１１１では、単位構成決定部１１１は、複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する。
【００３３】
単位構成決定処理Ｓ１１１において、単位構成決定部１１１は、ソースコード１５１からループ記述箇所を実行単位として構文解析により抽出し、ループ毎に関数化を行う。ループは実行単位の一例である。
そして、単位構成決定部１１１は、各ループ内にイタレーション間での依存関係があるか否かを判定する。単位構成決定部１１１は、各ループ内にイタレーション間での依存関係がないと判定した場合は、各ループをパイプライン化又は展開可能と判定する。ここで展開可能とは、並列化が可能であることを意味する。なお、各ループ内にイタレーション間での依存関係があるか否かの判定は、高位合成ツールを用いて行ってもよい。また、クラスタとしてループ以外の関数等を含んだ記述範囲を関数化してもよい。
単位構成決定部１１１は、各ループ内にイタレーション間での依存関係があると判定した場合は、各ループを非パイプライン及び展開不可と判定する。
単位構成決定処理Ｓ１１１により、各ループにおけるパイプライン化の可否と展開の可否とを判定できる。このため、パイプライン化又は展開ができないループ（回路）は、所望の回路の探索から除外することにより、探索処理を高速化することができる。
【００３４】
次に、単位構成決定部１１１は、ソースコード１５１を高位合成ツールに入力し、ループ毎のレイテンシ、回路規模といった非機能要件を合成結果５１として得る。具体的には、単位構成決定部１１１は、ループ内の１イテレーション処理分のレイテンシ（ＬＯＧＩＣ＿ＬＡＴ）と回路規模（ＡＲＥＡ）とを、パイプライン化した場合と非パイプライン化の場合とのそれぞれの場合について得る。
なお、このとき、単位構成決定部１１１は、高位合成ツールにおいて回路共有はしないモードを選択する。通常、回路共有を行うと、レイテンシが伸びる傾向になる。回路のレイテンシは高位合成ツールのオプションで設定が可能であるが、無限に設定できてしまう。本実施の形態では、単位構成決定処理Ｓ１１１時点での回路共有を抑制し、後工程である回路共有指示処理Ｓ１１６においてレイテンシを指定することによる回路共有を行うことで、探索範囲を限定し、高速に最適解を得られるという効果がある。
【００３５】
図４は、本実施の形態に係るソースコード１５１の例を示す図である。
単位構成決定部１１１は、図４に示すソースコード１５１からループ記述箇所を構文解析により抽出し、ループ毎にＦ１，Ｆ２との関数化を行う。図４に示すＦ１のループ記述とＦ２のループ記述との各々が実行単位５１５の一例である。
図４に示すソースコード１５１では各ループ内で依存関係がないため、単位構成決定部１１１は、各ループ内で依存関係がないと判定し、いずれのループもパイプライン化又は展開が可能であると判定する。
そして、単位構成決定部１１１は、ソースコード１５１を高位合成ツールに入力する。
図５は、本実施の形態に係るソースコード１５１を高位合成ツールに入力した場合の合成結果５１を示す図である。図５では、パイプライン化したループ（回路）で高位合成した場合の合成結果５１を示しているが、非パイプラインで高位合成した場合も同様にして求められる。
【００３６】
単位構成決定処理Ｓ１１１は、ソースコード１５１で表される全体回路に含まれるループを実行単位或いは関数として、ループ内の構成を判定するループ内アーキテクチャ判定処理ともいう。また、単位構成決定部１１１は、ループ内アーキテクチャ判定部ともいう。
【００３７】
以上のように、単位構成決定部１１１は、各実行単位についてパイプライン化の可否及び展開の可否を判定し、各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する。すなわち、単位構成決定部１１１により実行単位についてパイプライン化が可能であると判定された場合は、単位内構成候補はパイプライン及び非パイプラインとなる。
【００３８】
＜構成決定処理Ｓ１１２＞
次に、構成決定処理Ｓ１１２について説明する。
構成決定処理Ｓ１１２において、構成決定部１１２は、回路の動作を記述したソースコード１５１であって複数の実行単位を含むソースコード１５１を取得し、複数の実行単位で取り得る回路構成の候補を構成候補として決定する。
具体的には、構成決定部１１２は、異なるループ記述の依存関係から、構成候補を決定する。すなわち、構成決定部１１２は、異なるループ記述の依存関係から、異なるループ記述部分の回路が並列実行可能かどうかを判断する。構成決定部１１２は、異なるループ記述部分の回路が並列実行可能であると判定した場合、異なるループ記述部分の回路の並列実行開始が可能になるタイミングを計測する。
異なるループ記述の依存関係とは、ソースコード１５１により記述される回路において、ループで表される実行単位間の構成、すなわち回路全体の回路構成を意味する。
【００３９】
ループ間のアーキテクチャタイプ（すなわち、回路構成）は３種類ある。１つ目は、直列型である。直列型は、並列実行しない回路構成であり、前段のループ処理が終わってから、後段のループ処理を行う回路構成である。２つ目は、並列型（基本形）である。これは、前段のループと、後段のループが完全に独立して並列に実行する回路構成である。これは上述したバケツリレー方式である。３つ目は並列型（遅延形）である。これは、前段のループ実行の途中から後段のループが開始される回路構成である。
【００４０】
直列型は、レイテンシが大きいが、回路共有の促進が可能という特徴がある。並列型（基本形）は、レイテンシは中程度である。また、並列型（遅延形）はレイテンシを小さくできるという特徴がある。
【００４１】
これら３つの回路構成の中で、直列型、及び並列型（基本形）は、いかなるループ記述でも採用され得る。しかし、並列型（遅延形）は、ソースコードの実装に依存する。
【００４２】
構成決定処理Ｓ１１２では、構成決定部１１２は、異なるループ記述部分の回路が並列型（遅延形）で構成可能か否かの決定を行う。
構成決定処理Ｓ１１２の手順は以下である。
（１）構成決定部１１２は、ループ間で共通に利用、即ち共通に参照或いは代入されている変数を構文解析により抽出する。
（２）構成決定部１１２は、各ループにおいて、変数へのライト及びリードするインデックスを構文解析により抽出する。変数へのライトにおいて、変数が配列でない場合は、最終イタレーション値、即ちループ上限値をインデックスとする。また、変数へのリードにおいて、変数が配列でない場合は、インデックスを０とする。
（３）構成決定部１１２は、共通する変数のライトとリードとのインデックスの差分絶対値を算出し、これらの中から最大値をＤｅｌａｙとして計算する。
【００４３】
図４のソースコード１５１を用いて、具体的に説明する。構成決定処理Ｓ１１２において、構成決定部１１２が図４のソースコード１５１を入力した場合について説明する。
（１）構成決定部１１２は、構文解析を用いて、ループ間で共通に利用されている変数ｓｕｍとｂとを抽出する。
（２）Ｆ１のループでｓｕｍ及びｂ［ｉ］へ代入されているインデックスを抽出する。ｓｕｍへ代入されているインデックスはＳＩＺＥ−１（ループ上限値）である。ｂ［ｉ］へ代入されているインデックスは「０・・・ＳＩＺＥ−１（＋１）」である。ここで、・・・は（）内に示す数だけ順に加算されていることを意味する。つまり、０，１，２，３，・・・，ＳＩＺＥ−１と同義である。
Ｆ２のループではｓｕｍ及びｂ［ｉ］はリードである。リードは、ｓｕｍ及びｂ［ｉ］及びｂ［ｉ＋１］であり、それぞれのインデックスは０、「０・・・ＳＩＺＥ−１（＋１）」、「１・・・ＳＩＺＥ−２（＋１）」である。
（３）次にＤｅｌａｙを算出する。
例では、ｓｕｍの場合、｜（ＳＩＺＥ−１）−（０）｜＝ＳＩＺＥ−１である。ｂ［ｉ］の場合、｜（０・・・ＳＩＺＥ−１）−（０・・・ＳＩＺＥ−１）｜＝０・・・０（０）である。ｂ［ｉ＋１］の場合、｜（０・・・ＳＩＺＥ−１）−（１・・・ＳＩＺＥ−２）｜＝１・・・１（０）である。よって、ｓｕｍ及びｂ［ｉ］及びｂ［ｉ＋１］のうちインデックスの差分絶対値の最大値はＳＩＺＥ−１である。
【００４４】
なお、後述する解析処理Ｓ１１４で並列数Ｎが指定された場合、ループを展開して同様に計算する。
【００４５】
このように、構成決定部１１２は、複数のループ記述に共通の変数のインデックスに基づいて複数のループ記述の依存関係を判定する。
構成決定処理Ｓ１１２は、ソースコード１５１で表される全体回路に含まれる異なるループ記述部分の回路が並列型（遅延形）で構成可能か否かの決定を行う。構成決定処理Ｓ１１２は、ループ間アーキテクチャ判定処理ともいう。また、構成決定部１１２は、ループ間アーキテクチャ判定部ともいう。
【００４６】
以上のように、構成決定部１１２は、複数のループ記述の回路構成について並列型（遅延形）で構成可能かを判定し、複数のループ記述の回路構成の構成候補を決定する。
【００４７】
＜判定処理Ｓ１１３＞
判定処理Ｓ１１３では、判定部１１３は、複数のループ記述の回路構成を、構成決定処理Ｓ１１２で決定された構成候補とした場合の回路の特性を回路特性５２２として算出する。そして、判定部１１３は、回路特性５２２が閾値５２１を満たす場合にその構成候補を決定回路構成３１０として出力する。また、判定部１１３は、回路特性５２２が閾値５２１を満たす場合に複数の実行単位５１５の各実行単位５１５の単位内構成候補を決定単位内構成３１１として出力する。
具体的には、判定部１１３は、回路全体の回路構成（ループ間アーキテクチャ）の非機能（回路特性５２２）を計算する。このとき、判定部１１３は、実行単位の回路構成候補毎に、さらに、各実行単位の単位内構成候補毎に回路特性５２２を算出し、回路特性５２２を含む非機能要件結果５２を算出する。判定部１１３は、回路のレイテンシと回路の入力データ充填期間（ＤＴ）とを含む回路特性５２２を算出する。
判定部１１３は、算出した非機能要件結果５２が記憶部１５０に記憶されている非機能要件１５２（閾値５２１）を満たしているか否かの判定を行う（ステップＳ１１３ａ）。
【００４８】
図６は、本実施の形態に係る判定処理Ｓ１１３において用いられる単位内構成（ループ内アーキテクチャ）の計算式３１である実行単位計算式３１３１を示す図である。
また、図７は、本実施の形態に係る判定処理Ｓ１１３において用いられる回路構成（ループ間アーキテクチャ）の計算式３１である回路構成計算式３１３２を示す図である。図８は、本実施の形態に係る判定処理Ｓ１１３において用いられる回路構成（ループ間アーキテクチャ）の計算式３１であるＤＴ計算式３１３３を示す図である。
ここで、ＬＯＯＰは、ループ数である。Ｎは、並列数である。ＬＯＧＩＣ＿ＬＡＴは、１イテレーション分レイテンシである。ＦＮは、ループ番号Ｎの処理であり、サンプル（具体例）ではＦ１とＦ２がある。ＦＮｃｙｃｌｅは、ＦＮのレイテンシである。Ｄｅｌａｙｎ−１，ｎは、ＦＮ番目とＦＮ−１番目の上述した構成決定処理Ｓ１１２で求めた距離である。ＤＩＩ（Ｄａｔａ  Ｉｎｉｔｉａｔｉｏｎ  Ｉｎｔｅｒｖａｌ）は、パイプライン化した場合のスループットであり、これは高位合成ツールでも同様に定義される。
【００４９】
判定部１１３は、実行単位計算式３１３１を用いて、実行単位のレイテンシ、すなわちループ内のレイテンシを算出する。そして、判定部１１３は、実行単位のレイテンシと、回路構成計算式３１３２とを用いて、回路全体の回路構成（ループ間アーキテクチャ）のレイテンシを算出する。また、判定部１１３は、実行単位のレイテンシと、ＤＴ計算式３１３３とを用いて、回路全体の回路構成（ループ間アーキテクチャ）のＤＴを算出する。
即ち、判定部１１３は、回路全体の回路構成（ループ間アーキテクチャ）の非機能として、レイテンシとＤＴとを非機能要件結果５２として算出する。
【００５０】
図９及び図１０は、図４に示すソースコード１５１から算出された非機能要件結果５２を示す図である。図９は、ソースコード１５１の回路構成が直列型の場合の非機能要件結果５２を示す。また、図１０は、ソースコード１５１の回路構成が並列型の場合の非機能要件結果５２を示す。
図９及び図１０に示すように、判定部１１３は、複数の実行単位の各実行単位の特性を単位毎特性として算出し、算出した単位毎特性に基づいて回路全体の回路特性５２２を算出する。また、図９及び図１０に示すように、判定部１１３は、回路特性５２２を、複数の実行単位の各実行単位の単位内構成候補毎に算出する。すなわち、判定部１１３は、Ｆ１とＦ２との各々について、パイプラインの場合と非パイプラインの場合との単位内構成候補毎の単位毎特性を算出する。そして、算出した単位内構成候補毎の単位毎特性に基づいて、回路特性５２２を算出する。
【００５１】
図３のステップＳ１１３ａにおいて、判定部１１３は、回路特性５２２が閾値５２１を満たすか否かを判定する。具体的には、判定部１１３は、ソースコード１５１から算出された非機能要件結果５２が非機能要件１５２を満たすか否かを判定する。
判定部１１３は、非機能要件結果５２が非機能要件１５２を満たしていないと判定した場合は、解析処理Ｓ１１４に進む。一方、判定部１１３は、非機能要件結果５２が非機能要件１５２を満たすと判定した場合は、回路共有指示処理Ｓ１１５に進む。
【００５２】
＜解析処理Ｓ１１４＞
解析処理Ｓ１１４において、解析部１１４は、判定部１１３により回路特性５２２が閾値５２１を満たさないと判定された場合、単位毎特性に基づいて構成を変更する実行単位５１５を解析する。具体的には、非機能要件結果５２が非機能要件１５２を満たさない場合、非機能要件１５２を満たすための改善ポイントを解析する。解析部１１４は、改善のための指示を改善指示として単位構成決定処理Ｓ１１１に出力し、単位構成決定処理Ｓ１１１に処理を戻す。
【００５３】
具体的には、解析部１１４は、レイテンシを表すサイクル数が非機能要件１５２を満たさない場合、各実行単位のレイテンシ見積もり値が最も大きい実行単位を抽出する。そして、解析部１１４は、抽出した実行単位について、並列度Ｎを２にする、或いは周波数を変更する等の改善指示を単位構成決定部１１１に出力する。単位構成決定処理Ｓ１１１では、単位構成決定部１１１は、解析部１１４から出力された改善指示に基づいて、設計を改善し、再度評価を行う。
また、解析部１１４は、非機能要件１５２としての回路規模が満たせない場合は、現在のＬＯＧＩＣ＿ＬＡＴ値から１を足した値をＬＯＧＩＣ＿ＬＡＴとして定義する改善指示を単位構成決定部１１１に出力する。単位構成決定処理Ｓ１１１では、単位構成決定部１１１は、解析部１１４から出力された改善指示に基づいて、高位合成ツール上の回路共有モードをオンにして、高位合成を実行する。先の単位構成決定処理Ｓ１１１では、回路共有モードをオフにして高位合成を実行していた。つまり、レイテンシは最も短く、回路規模は大きいものである。非機能要件１５２としての回路規模が満たせない場合は、回路共有モードをオンにするが、この場合、高位合成ツールは、どの程度、回路共有をすべきかが分からない。これはレイテンシが設定されていないからである。レイテンシを設定することで、限られた時間制約のもと回路共有を行うことができる。つまり、この処理は、非機能要件であるレイテンシを可能な限り維持しつつ、回路共有を探索する方法であり、回路規模共有の探索が高速に行える。
【００５４】
以上のように、解析処理Ｓ１１４では、目標となる非機能要件１５２を満たす回路を高速に探索するための、改善効果が大きい箇所を判断し、改善指示を行うことが可能になるため、効率的な探索が可能となる。
【００５５】
図４のソースコード１５１を例として説明する。仮に非機能要件１５２のレイテンシを１０００、ＤＴを１０００とする。図９（直列型）及び図１０（並列型）に示した非機能要件結果５２では、非機能要件１５２のレイテンシ及びＤＴを満たしていない。
解析部１１４は、非機能要件結果５２が非機能要件１５２を満たせていないと判定する。
【００５６】
解析部１１４は、図９及び図１０の非機能要件結果５２に基づいて、Ｆｃｙｃｌｅの大きい値を削減するために、並列化を行う。並列化対象となる実行単位（すなわち関数あるいはロジック）は、レイテンシが大きいＦ２とする。レイテンシの大小は、例えば、レイテンシの総和等から判断する。この例では、Ｆ１が非パイプ、Ｆ２がパイプの場合は、Ｆ１のほうが大きいが、簡単のため、Ｆ２の並列化を行う。解析部１１４は、実際は、それぞれの実行単位の組み合わせで、適切な改善ポイントを決める。
解析部１１４は、Ｆ２を並列化Ｎ＝２として指定する改善指示を生成し、単位構成決定部１１１に出力する。単位構成決定処理Ｓ１１１では、単位構成決定部１１１は、解析部１１４から出力された改善指示に基づいて、Ｆ２を並列化Ｎ＝２とする改善指示を単位構成決定処理Ｓ１１１に出力し、再度評価を行う。
【００５７】
図１１（直列型）及び図１２（並列型）に、単位構成決定処理Ｓ１１１において再度計算された非機能要件結果５２を示す。図１１（直列型）及び図１２（並列型）の非機能要件結果５２であっても、まだ非機能要件１５２を満たせない。よって、解析部１１４は、上記と同様にＦ１を並列化Ｎ＝２とする改善指示を単位構成決定処理Ｓ１１１に出力し、再度評価を行う。図１３（直列型）及び図１４（並列型）に、単位構成決定処理Ｓ１１１において再々度計算された非機能要件結果５２を示す。図１４の結果より、パイプラインで並列度２のＦ１と、パイプラインで並列度２のＦ２とが並列実行する回路構成が非機能要件１５２を満たす回路構成である決定される。
【００５８】
＜回路共有指示処理Ｓ１１５＞
次に、図３に戻り説明を続ける。
回路共有指示部１１５は、判定部１１３により回路特性５２２が閾値５２１を満たすと判定された場合、各実行単位の単位毎特性に基づいて回路共有を指示する。具体的には、回路共有指示部１１５は、回路全体のレイテンシに影響しない単位内構成のレイテンシを求め、これを高位合成ツールへのオプションとして与える。
この処理は、回路構成として並列型が選択されている場合に限定される。並列型では、上述した計算式のように、実行単位のレイテンシがレイテンシ計算式、及びＤＴ計算式上に現れない実行単位が存在する。例えば、並列型のＤＴ計算式においては、Ｍａｘで計算するため、この最大値より小さい値を持つ実行単位のレイテンシを最大値以下に設定しても、全体の性能に影響を与えない。
そこで、該当する単位内構成のレイテンシを最大値までに引きあげる。このようにすることで、実行単位の回路共有が可能になり、かつ一般には回路共有によりレイテンシが伸びてしまうが、この場合に限り、全体のレイテンシには影響しないことなるため、効果的に最適な回路共有が可能になる。
【００５９】
図４を例とした判定処理Ｓ１１３のステップＳ１１３ａにおいて非機能要件１５２を満たすと判定された回路構成は、パイプラインで並列度２のＦ１と、パイプラインで並列度２のＦ２とが並列実行する回路構成がであった。図１４から、この回路構成は、並列型であり、Ｆ１のＬＯＧＩＣ＿ＬＡＴが２で、Ｆ２のＬＯＧＩＣ＿ＬＡＴが４である。ここで、Ｆ１のＬＯＧＩＣ＿ＬＡＴを４にしても、全体の性能に影響を与えないため、ＬＯＧＩＣ＿ＬＡＴを４にして、再度Ｆ１を合成する。このようにすることで、回路共有が可能になり、面積を削減できる。
【００６０】
以上のように、ロジック構成判定処理Ｓ１１０により、非機能要件１５２を満たす回路構成が決定される。
【００６１】
＜バッファ構成判定処理Ｓ１２０＞
次に、バッファ構成判定部１２０は、複数の実行単位が決定回路構成３１０を成す場合の複数の実行単位間のバッファ構成２２を決定する。すなわち、バッファ構成判定部１２０は、ロジック構成判定処理Ｓ１１０において決定された決定回路構成３１０を実現するためのバッファ構成２２を決定する。
【００６２】
バッファ構成判定処理Ｓ１２０の手順を以下に示す。
（１）基本構成の決定
バッファ構成判定部１２０は、バッファの基本構成を、回路全体の回路構成（ループ間アーキテクチャ）が直列型ならＳｈａｒｅ型、並列型（基本形）ならダブルバッファ型、並列型（遅延型）ならラインバッファ型とする。
（２）ＳＩＺＥの取得
（２−１）Ｓｈａｒｅ型の場合：配列の要素数等より判断する。
（２−２）ダブルバッファ型の場合：配列の要素数等より判断する。
（２−３）ラインバッファ型の場合：遅延量（Ｄｅｌａｙ）とする。
（３）シフトレジスタ化
Ｓｈａｒｅ型、ダブルバッファ型、ラインバッファ型共に、配列に対して、複数のリード（参照）がある場合は、要素数のインデックスよりシフトレジスタ化を判定する。
（４）ポート数及びメモリ個数の判断
バッファ構成判定部１２０は、単位内構成が並列の場合、並列数に応じたポート数、メモリ個数を生成する。
以上の手順でバッファ構成判定部１２０は、バッファ構成２２を決定する。
【００６３】
＜コード変換処理Ｓ１３０及び高位合成実行処理Ｓ１４０＞
コード変換処理Ｓ１３０において、コード変換部１３０は、複数の実行単位の回路構成が決定回路構成３１０となるように動作記述を変換し、変換した動作記述を変換記述として出力する。さらに、コード変換部１３０は、複数の実行単位の各実行単位の単位内構成が決定単位内構成３１１となるように動作記述を変換すると共に高位合成オプションを設定する。さらに、コード変換部１３０は、バッファ構成判定部１２０により決定されたバッファ構成２２を実現するように動作記述を変換すると共に高位合成オプションを設定する。
【００６４】
具体的には、コード変換部１３０は、ロジック構成判定処理Ｓ１１０において決定された決定回路構成３１０及び決定単位内構成３１１と、バッファ構成判定処理Ｓ１２０において決定されたバッファ構成２２とを取得する。コード変換部１３０は、決定回路構成３１０及び決定単位内構成３１１とバッファ構成とに基づいて、これらの決定回路構成３１０及び決定単位内構成３１１とバッファ構成とを実現するために、ソースコードの変換及び挿入と、高位合成オプションの設定とを行う。高位合成ツールによって、その記述方法やオプションは異なるため、テンプレートデザインを用いてソースコード及び高位合成オプションを生成してもよい。
高位合成実行処理Ｓ１４０において、高位合成部１４０は、コード変換処理Ｓ１３０において生成されたソースコードと高位合成オプションとを高位合成ツールに入力することにより、高位合成実行処理Ｓ１４０を実行し、ＲＴＬ１５４及び合成レポート１５５を出力する。
【００６５】
以上で、本実施の形態に係る高位合成装置１００の高位合成処理Ｓ１００についての説明を終わる。
【００６６】
＊＊＊他の構成＊＊＊
高位合成装置１００は、通信装置を備え、通信装置を介して、ソースコード１５１、非機能要件１５２、回路仕様１５３を受信してもよい。また、高位合成装置１００は、通信装置を介して、ＲＴＬ１５４及び合成レポート１５５を送信してもよい。この場合、通信装置はレシーバとトランスミッタとを備える。具体的には、通信装置は通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。通信装置はデータを通信する通信部として機能する。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
【００６７】
また、本実施の形態では、高位合成装置１００の「部」の機能がソフトウェアで実現されるが、変形例として、高位合成装置１００の「部」の機能がハードウェアで実現されてもよい。
図１５を用いて、本実施の形態の変形例に係る高位合成装置１００ｘの構成について説明する。
図１５に示すように、高位合成装置１００ｘは、処理回路９０９、入力インタフェース９３０、出力インタフェース９４０といったハードウェアを備える。
【００６８】
処理回路９０９は、前述した「部」の機能及び記憶部１５０を実現する専用の電子回路である。処理回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、又は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）である。
【００６９】
「部」の機能は、１つの処理回路９０９で実現されてもよいし、複数の処理回路９０９に分散して実現されてもよい。
【００７０】
別の変形例として、高位合成装置１００の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。即ち、高位合成装置１００の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
【００７１】
プロセッサ９１０、記憶装置９２０、及び、処理回路９０９を、総称して「プロセッシングサーキットリ」という。つまり、高位合成装置１００の構成が図１及び図１０のいずれに示した構成であっても、「部」の機能及び記憶部１５０は、プロセッシングサーキットリにより実現される。
【００７２】
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
【００７３】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係る高位合成装置１００は、回路の動作を記述した動作記述であるソースコードと、回路の特性を決める非機能要件と、合成対象の回路仕様とを入力として、高位合成処理を行い、ハードウェア記述言語を出力する。この高位合成装置１００は、並列実行単位の内部アーキテクチャ及び並列化アーキテクチャを決めるロジック構成判定部と、並列化されたアーキテクチャ間のバッファ構成を決めるバッファ構成判定部とを備える。また、高位合成装置１００は、ロジック構成判定部により決められたロジックアーキテクチャとバッファ構成判定部により決められたバッファ構成とを実現するソースコードと高位合成オプションとを生成するコード変換部を備える。よって、本実施の形態に係る高位合成装置１００によれば、これまで手動で行ってきた、非機能要件を満たすためのアーキテクチャ設計と、そのアーキテクチャを実現するためのソースコード及び高位合成オプション等の設定を自動かつ高速に行うことができる。さらに、本実施の形態に係る高位合成装置１００によれば、設計者に依存せず、短時間で最適な回路の設計が可能になる。
【００７４】
また、本実施の形態に係る高位合成装置１００によれば、生成された回路が非機能要件を満たせない場合、非機能要件を改善するアーキテクチャの変更を行う解析部を有するので、非機能要件を満たすまでアーキテクチャの変更を行うことができ、最適な回路の設計を確実にすることができる。
【００７５】
また、本実施の形態に係る高位合成装置１００によれば、非機能要件を満たすレイテンシに合わせて、回路共有度を決めることを可能にする回路共有指示部を有するので、最適な回路の設計を効率的にすることができる。
【００７６】
以上、本発明の実施の形態について説明したが、この実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、高位合成装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、どのような組合せ、或いは任意のブロック構成で高位合成装置を構成しても構わない。また、高位合成装置は、１つの装置でなく、複数の装置から構成された高位合成システムでもよい。
【００７７】
また、この実施の形態のうち、複数の部分を組合せて実施しても構わない。或いは、この実施の形態のうち、部分的に実施しても構わない。その他、この実施の形態を、全体として或いは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００７８】
２２  バッファ構成、３１  計算式、５１  合成結果、５２  非機能要件結果、１００，１００ｘ  高位合成装置、１１０  ロジック構成判定部、１１１  単位構成決定部、１１２  構成決定部、１１３  判定部、１１４  解析部、１１５  回路共有指示部、１２０  バッファ構成判定部、１３０  コード変換部、１４０  高位合成部、１５０  記憶部、１５１  ソースコード、１５２  非機能要件、１５３  回路仕様、１５４  ＲＴＬ、１５５  合成レポート、３１０  決定回路構成、３１１  決定単位内構成、５１０  高位合成方法、５１１  動作記述、５１５  実行単位、５２０  高位合成プログラム、５２１  閾値、５２２  回路特性、９０９  処理回路、９１０  プロセッサ、９２０  記憶装置、９２１  メモリ、９２２  補助記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、３１３１  実行単位計算式、３１３２  回路構成計算式、３１３３  ＤＴ計算式、Ｓ１００  高位合成処理、Ｓ１１０  ロジック構成判定処理、Ｓ１２０  バッファ構成判定処理、Ｓ１３０  コード変換処理、Ｓ１４０  高位合成実行処理、Ｓ１１１  単位構成決定処理、Ｓ１１２  構成決定処理、Ｓ１１３  判定処理、Ｓ１１４  解析処理、Ｓ１１５  回路共有指示処理。
【図１】
2017154183.tif 000003
【図２】
2017154183.tif 000004
【図３】
2017154183.tif 000005
【図４】
2017154183.tif 000006
【図５】
2017154183.tif 000007
【図６】
2017154183.tif 000008
【図７】
2017154183.tif 000009
【図８】
2017154183.tif 000010
【図９】
2017154183.tif 000011
【図１０】
2017154183.tif 000012
【図１１】
2017154183.tif 000013
【図１２】
2017154183.tif 000014
【図１３】
2017154183.tif 000015
【図１４】
2017154183.tif 000016
【図１５】
2017154183.tif 000017
【手続補正書】
【提出日】平成28年8月18日(2016.8.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位で利用される配列へのデータ入力が充填される期間である入力データ充填期間の閾値を取得し、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の入力データ充填期間を前記回路の回路特性として算出し、前記回路特性が前記閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部と
を備えた高位合成装置。
【請求項２】
前記高位合成装置は、さらに、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述を変換すると共に高位合成オプションを設定するコード変換部を備え、
前記高位合成部は、
前記コード変換部により変換された前記動作記述と前記高位合成オプションを用いて高位合成を実行する請求項１に記載の高位合成装置。
【請求項３】
前記構成決定部は、
前記複数の実行単位の依存関係に基づいて前記構成候補を決定する請求項１または２に記載の高位合成装置。
【請求項４】
前記構成決定部は、
前記複数の実行単位に共通の変数に基づいて前記複数の実行単位の依存関係を判定する請求項３に記載の高位合成装置。
【請求項５】
前記高位合成装置は、さらに、
前記複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する単位構成決定部を備え、
前記判定部は、
前記回路の特性を前記複数の実行単位の各実行単位の単位内構成候補毎に算出し、前記回路特性が閾値を満たす場合に前記複数の実行単位の各実行単位の単位内構成候補を決定単位内構成として出力し、
前記高位合成部は、
前記複数の実行単位の各実行単位の単位内構成が決定単位内構成となるように前記動作記述に対して高位合成を実行する請求項１から４のいずれか１項に記載の高位合成装置。
【請求項６】
前記実行単位は、ループ記述である請求項１から５のいずれか１項に記載の高位合成装置。
【請求項７】
構成決定部が、回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定し、
判定部が、前記複数の実行単位で利用される配列へのデータ入力が充填される期間である入力データ充填期間の閾値を取得し、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の入力データ充填期間を前記回路の回路特性として算出し、前記回路特性が前記閾値を満たす場合に前記構成候補を決定回路構成として出力し、
高位合成部が、前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成方法。
【請求項８】
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定処理と、
前記複数の実行単位で利用される配列へのデータ入力が充填される期間である入力データ充填期間の閾値を取得し、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の入力データ充填期間を前記回路の回路特性として算出し、前記回路特性が前記閾値を満たす場合に前記構成候補を決定回路構成として出力する判定処理と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成処理と
をコンピュータに実行させる高位合成プログラム。
【国際調査報告】
2017154183.tif 000018
2017154183.tif 000019
2017154183.tif 000020
2017154183.tif 000021