(57)【特許請求の範囲】
【請求項１】
再構成可能ハードウェアにより実現される電子回路を表す第１の動作レベル記述の入力を受け付ける受付部、
当該第１の動作レベル記述に、プロファイル情報を収集してから出力する動作レベル記述（以下「プロファイル記述」という。）を追加して、第２の動作レベル記述を生成する追加部、
与えられた動作レベル記述を動作合成してレジスタ転送レベル記述を生成する動作合成部、
当該第２の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述に基づいて当該再構成可能ハードウェアに電子回路を実現し、当該電子回路を動作させて、プロファイル情報を出力させるプロファイル部、
当該第１の動作レベル記述を前記動作合成部に与えるとともに当該プロファイル情報に基づいて生成した最適化情報を前記動作合成部に与えてレジスタ転送レベル記述を得る最適化部、
を備える、ことを特徴とする動作合成装置。
【請求項２】
請求項１に記載の動作合成装置であって、
前記動作合成部は、当該第２の動作レベル記述のうち第１の動作レベル記述に基づく電子回路とプロファイル記述に基づく電子回路とが、並行に動作するように動作合成する、
ことを特徴とする動作合成装置。
【請求項３】
請求項２に記載の動作合成装置であって、
前記追加部は、ユーザに指定された状態の実行回数、条件分岐の選択回数、レジスタやメモリに書き込まれる値、入力端子から入力される値、出力端子に出力される値をプロファイル情報とし、
前記最適化部は、面積、処理サイクル数、遅延、若しくは、消費電力のうちユーザに指定されたものを削減するように最適化情報を生成する、
ことを特徴とする動作合成装置。
【請求項４】
請求項３に記載の動作合成装置であって、
前記プロファイル部は、当該得られたレジスタ転送レベル記述に基づいて当該再構成可能ハードウェアに電子回路を実現することができない場合、当該ユーザにプロファイル情報を再度指定するように求め、
前記追加部は、当該求めに応じて当該ユーザにより再度指定されたプロファイル情報を収集してから出力する動作レベル記述を、当該第１の動作レベル記述に追加する、
ことを特徴とする動作合成装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の動作合成装置であって、
前記最適化部は、前記動作合成部に当該第１の動作レベル記述を与えるのにかえて、当該第２の動作レベル記述を与える、
ことを特徴とする動作合成装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の動作合成装置であって、
当該第１の動作レベル記述、当該プロファイル記述、当該第２の動作レベル記述は高級プログラミング言語、若しくはその中間表現により記述される、
ことを特徴とする動作合成装置。
【請求項７】
請求項１乃至５のいずれか１項に記載の動作合成装置であって、
前記追加部は、当該プロファイル記述として、当該プロファイル情報を収集してから出力する動作レベル記述にかえて、当該プロファイル情報を収集してから出力する電子回路を実現するレジスタ転送レベル記述を追加し、
前記動作合成部は、当該第２の動作レベル記述が与えられると、当該第１の動作レベル記述を動作合成して得られたレジスタ転送レベル記述に当該プロファイル記述を追加して、レジスタ転送レベル記述を生成する、
ことを特徴とする動作合成装置。
【請求項８】
受付部、追加部、動作合成部、プロファイル部、最適化部を備える動作合成装置が実行する動作合成方法であって、
前記受付部が、再構成可能ハードウェアにより実現される電子回路を表す第１の動作レベル記述の入力を受け付ける受付ステップ、
前記追加部が、当該第１の動作レベル記述に、プロファイル情報を収集してから出力する動作レベル記述（以下「プロファイル記述」という。）を追加して、第２の動作レベル記述を生成する追加ステップ、
前記動作合成部が、与えられた動作レベル記述を動作合成してレジスタ転送レベル記述を生成する動作合成ステップ、
前記プロファイル部が、当該第２の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述に基づいて当該再構成可能ハードウェアに電子回路を実現し、当該電子回路を動作させて、プロファイル情報を出力させるプロファイルステップ、
前記最適化部が、当該第１の動作レベル記述を前記動作合成部に与えるとともに当該プロファイル情報に基づいて生成した最適化情報を前記動作合成部に与えてレジスタ転送レベル記述を得る最適化ステップ、
を備える、ことを特徴とする動作合成方法。
【請求項９】
コンピュータを、
再構成可能ハードウェアにより実現される電子回路を表す第１の動作レベル記述の入力を受け付ける受付部、
当該第１の動作レベル記述に、プロファイル情報を収集してから出力する動作レベル記述（以下「プロファイル記述」という。）を追加して、第２の動作レベル記述を生成する追加部、
与えられた動作レベル記述を動作合成してレジスタ転送レベル記述を生成する動作合成部、
当該第２の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述に基づいて当該再構成可能ハードウェアに電子回路を実現し、当該電子回路を動作させて、プロファイル情報を出力させるプロファイル部、
当該第１の動作レベル記述を前記動作合成部に与えるとともに当該プロファイル情報に基づいて生成した最適化情報を前記動作合成部に与えてレジスタ転送レベル記述を得る最適化部、
として機能させる、ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能ハードウェアにより実現する電子回路を最適化するのに好適な動作合成装置、動作合成方法並びにこれらをコンピュータ上で実現するためのプログラムに関する。
【背景技術】
【０００２】
再構成可能ハードウェアとして、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＤＲＰ（Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ）などの技術が提案されている。これらに関連する技術については、以下の文献に開示されている。
【特許文献１】特許第３９８７７８２号公報
【特許文献２】特許第３９８７７８３号公報
【特許文献３】特開２００６−２０２３３０号公報
【０００３】
再構成可能ハードウェア上に実現される電子回路の設計には、動作合成ツールを用いた設計手法が有効である。この動作合成ツールは、入力ポートや変数のビット幅等のＨ／Ｗ化に必要な情報を含んだ動作レベル記述を動作合成することにより、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ（レジスタ転送レベル））記述を出力するツールである。
【０００４】
一般に、動作合成の分野においては、動作レベル記述から得られる情報のみを用いて最適化を行う静的コンパイルと呼ばれる手法が用いられている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、再構成可能ハードウェアにより実現される電子回路を実際に動作させて、動作時に得られるプロファイル情報を用いて最適化を行いたいという要望が強い。
【０００６】
例えば、ある状態から別の状態への遷移確率が偏っていることが分かれば、公知の最適化技術等を適用して電子回路の性能を向上させることができると期待されるからである。
【０００７】
本発明は、上記問題に鑑みてなされたものであり、再構成可能ハードウェアにより実現する電子回路を最適化するのに好適な動作合成装置、動作合成方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の第１の観点に係る動作合成装置は、受付部、追加部、動作合成部、プロファイル部、最適化部を備え、以下のように構成する。
まず、受付部は、再構成可能ハードウェアにより実現される電子回路を表す第１の動作レベル記述の入力を受け付ける。
次に、追加部は、当該第１の動作レベル記述に、プロファイル情報を収集してから出力する動作レベル記述（以下「プロファイル記述」という。）を追加して、第２の動作レベル記述を生成する。
さらに、動作合成部は、与えられた動作レベル記述を動作合成してレジスタ転送レベル記述を生成する。
また、プロファイル部は、当該第２の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述に基づいて当該再構成可能ハードウェアに電子回路を実現し、当該電子回路を動作させて、プロファイル情報を出力させる。
そして、最適化部は、当該第１の動作レベル記述を動作合成部に与えるとともに当該プロファイル情報に基づいて生成した最適化情報を動作合成部に与えてレジスタ転送レベル記述を得る。
【０００９】
上記目的を達成するために、その他の観点に係る動作合成方法は、受付部、追加部、動作合成部、プロファイル部、最適化部を備える動作合成装置が実行する動作合成方法であって、受付ステップ、追加ステップ、動作合成ステップ、プロファイルステップ、最適化ステップを備え、以下のように構成する。
すなわち、受付ステップでは、受付部が、再構成可能ハードウェアにより実現される電子回路を表す第１の動作レベル記述の入力を受け付ける。
そして、追加ステップでは、追加部が、当該第１の動作レベル記述に、プロファイル情報を収集してから出力する動作レベル記述（以下「プロファイル記述」という。）を追加して、第２の動作レベル記述を生成する。
さらに、動作合成ステップでは、動作合成部が、与えられた動作レベル記述を動作合成してレジスタ転送レベル記述を生成する。
また、プロファイルステップでは、プロファイル部が、当該第２の動作レベル記述を動作合成部に与えて得られるレジスタ転送レベル記述に基づいて当該再構成可能ハードウェアに電子回路を実現し、当該電子回路を動作させて、プロファイル情報を出力させる。
さらに、最適化ステップでは、最適化部が、当該第１の動作レベル記述を前記動作合成部に与えるとともに当該プロファイル情報に基づいて生成した最適化情報を前記動作合成部に与えてレジスタ転送レベル記述を得る。
【００１０】
上記目的を達成するために、その他の観点に係るプログラムは、コンピュータを、受付部、追加部、動作合成部、プロファイル部、最適化部として、以下のように機能させる。
まず、受付部は、再構成可能ハードウェアにより実現される電子回路を表す第１の動作レベル記述の入力を受け付ける。
次に、追加部は、当該第１の動作レベル記述に、プロファイル情報を収集してから出力する動作レベル記述（以下「プロファイル記述」という。）を追加して、第２の動作レベル記述を生成する。
さらに、動作合成部は、与えられた動作レベル記述を動作合成してレジスタ転送レベル記述を生成する。
また、プロファイル部は、当該第２の動作レベル記述を前記動作合成部に与えて得られるレジスタ転送レベル記述に基づいて当該再構成可能ハードウェアに電子回路を実現し、当該電子回路を動作させて、プロファイル情報を出力させる。
そして、最適化部は、当該第１の動作レベル記述を動作合成部に与えるとともに当該プロファイル情報に基づいて生成した最適化情報を動作合成部に与えてレジスタ転送レベル記述を得る。
【発明の効果】
【００１１】
本発明によれば、再構成可能ハードウェアにより実現する電子回路を最適化するのに好適な動作合成装置、動作合成方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して、本実施形態に係る動作合成装置について説明する。
【００１３】
まず、図１を参照して、本実施形態に係る動作合成装置の構成について説明する。なお、動作合成装置は、入力ポートや変数のビット幅等のＨ／Ｗ化に必要な情報を含んだ動作レベル記述を動作合成することにより、半導体集積回路の構成、配置、配線を記述するＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ（レジスタ転送レベル））記述を得る装置である。
【００１４】
図１に示すように、動作合成装置１００は、物理的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、ハードディスク装置１４と、入力装置１５と、表示装置１６と、出力装置１７と、を備える。動作合成装置１００が備える各構成要素はバスを介して接続される。
【００１５】
ＣＰＵ１１は、ハードディスク装置１４に記憶されたプログラムに従って動作合成装置１００全体の動作を制御する。ＣＰＵ１５は、各構成要素とバスを介して接続され制御信号やデータのやりとりをする。
【００１６】
ＲＯＭ１２は、電源投入直後に実行されるＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）を記憶する。ＩＰＬが実行された後、ＣＰＵ１１は、ハードディスク装置１４に記憶されたプログラムをＲＡＭ１３に読み出して実行する。
【００１７】
ＲＡＭ１３は、データやプログラムを一時的に記憶する。ＲＡＭ１３は、ハードディスク装置１４から読み出されたプログラムや、動作合成処理に必要なデータ等を一時記憶する。
【００１８】
ハードディスク装置１４は、ＣＰＵ１１により実行されるプログラムを記憶する。また、ハードディスク装置１４は、動作合成すべき動作レベル記述や、動作合成により得られたＲＴＬ記述等を記憶する。
【００１９】
入力装置１５は、ＣＰＵ１１による制御のもと、動作合成に必要なパラメータ等の入力をユーザから受け付け、また、動作合成開始要求等の要求をユーザから受け付ける。入力装置１５は、例えば、キーボードやマウスから構成される。
【００２０】
表示装置１６は、ＣＰＵ１１による制御のもと、ユーザからのパラメータ等の入力や動作合成開始要求等の要求を受け付けるための画面、動作レベル記述を表示するための画面、レジスタ転送レベル記述を表示するための画面等を表示する。表示装置１６は、例えば、液晶ディスプレイ装置から構成される。
【００２１】
出力装置１７は、ＣＰＵ１１による制御のもと、動作合成により得られたＲＴＬ記述や、ＲＴＬ記述を論理合成することにより得られた構成情報等を出力する。出力装置１７は、例えば、ＵＳＢポート等の汎用の通信インターフェースや、ディジタル出力ポート等から構成される。
【００２２】
次に、本実施形態に係る動作合成装置１００の基本構成について説明する。
【００２３】
図２は、本実施形態に係る動作合成装置１００の基本構成を示すブロック図である。図２に示すように、動作合成装置１００は、機能的には、受付部２０と、追加部３０と、動作合成部４０と、プロファイル部５０と、最適化部６０と、を備える。なお、動作合成装置１００が生成した回路は、再構成可能ハードウェア７０に実装される。すなわち、動作合成装置１００は、生成した構成情報を再構成可能ハードウェア７０に書き込む。
【００２４】
受付部２０は、再構成可能ハードウェア７０により実現される電子回路を表す第１の動作レベル記述の入力を受け付ける。受付部２０は、ＣＰＵ１１が、ＲＯＭ１２、ＲＡＭ１３及び入力装置１５と協働することにより実現される。
【００２５】
追加部３０は、第１の動作レベル記述に、プロファイル情報を収集してから出力する動作レベル記述（以下「プロファイル記述」という。）を追加して、第２の動作レベル記述を生成する。追加部３０は、ＣＰＵ１１が、ＲＯＭ１２、ＲＡＭ１３及び入力装置１５と協働することにより実現される。
【００２６】
動作合成部４０は、与えられた動作レベル記述を動作合成してＲＴＬ記述を生成する。動作合成部４０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００２７】
プロファイル部５０は、第２の動作レベル記述を動作合成部４０に与えて得られるＲＴＬ記述に基づいて再構成可能ハードウェア７０に電子回路を実現し、当該電子回路を動作させて、プロファイル情報を出力させる。プロファイル部５０は、ＣＰＵ１１が、ＲＯＭ１２、ＲＡＭ１３、入力装置１５及び出力装置１７と協働することにより実現される。
【００２８】
最適化部６０は、第１の動作レベル記述を動作合成部４０に与えるとともに当該プロファイル情報を動作合成部４０に最適化情報として指定してＲＴＬ記述を得る。最適化部６０は、ＣＰＵ１１が、ＲＯＭ１２、ＲＡＭ１３及び入力装置１５と協働することにより実現される。
【００２９】
次に、本実施形態に係る動作合成装置１００が実行する動作合成処理について図３、図４及び図５を参照して詳細に説明する。
【００３０】
動作合成装置１００は、例えば、動作合成の開始要求を入力装置１５を介してユーザから受けると、図４のフローチャートに示す動作合成処理を開始する。
【００３１】
まず、受付部２０は、ユーザから動作合成対象の動作レベル記述を受け付ける（ステップＳ１０１）。具体的には、受付部２０は、ユーザから動作合成対象の動作レベル記述の指定を受け付け、ユーザから指定された動作レベル記述（以下、「第１の動作レベル記述」とする。）をハードディスク装置１４から読み出してＲＡＭ１３に記憶する。
【００３２】
次に、追加部３０は、収集すべきプロファイル情報の指定をユーザから受け付ける（ステップＳ１０２）。収集すべきプロファイル情報は、例えば、状態の実行回数、条件分岐の選択回数、レジスタやメモリに書き込まれる値、入力端子から入力される値、出力端子に出力される値等である。
【００３３】
また、追加部３０は、第１の動作レベル記述を動作合成部４０に与えて動作合成させることにより、生存区間情報等の情報を取得する（ステップＳ１０３）。なお、動作合成部４０は、周知の方法により第１の動作レベル記述を動作合成することにより生存区間情報を取得する。
【００３４】
次に、追加部３０は、第１の動作レベル記述にプロファイル情報を取得し出力するための記述（以下、「プロファイル記述」とする。）を追加して第２の動作レベル記述を生成する（ステップＳ１０４）。追加部３０がプロファイル記述を追加する手順については、図５（Ａ）、（Ｂ）を用いて説明する。
【００３５】
図５（Ａ）、（Ｂ）に示すように、再構成可能ハードウェア７０には、多数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）が二次元に配置されている。図５（Ａ）、（Ｂ）には、プロファイル記述を追加する手順の説明に必要な部分のみを示し、各ＰＥ間を接続する配線やスイッチ等の説明に不要な部分については図示を省略する。なお、各ＰＥは、隣接するＰＥから供給されたデータに対して構成情報により指定された演算を実行し、演算結果を隣接するＰＥに供給する。また、各ＰＥは、データを保持するレジスタを備えるものとする。
【００３６】
追加部３０は、各データの生存区間情報や未使用のＰＥの情報等を動作合成部４０から取得する。具体的には、例えば、追加部３０は、図５（Ａ）に示すように、データＡがＰＥ１１からＰＥ１２を経てＰＥ１３に供給され、データＢがＰＥ３１からＰＥ３２及びＰＥ３３を経てＰＥ３４に供給され、ＰＥ１４、ＰＥ２１、ＰＥ２２、ＰＥ２３及びＰＥ２４が未使用である旨の情報を取得する。
【００３７】
ここで、データは、当該データが通過する経路から近い場所で収集することが、時間的な観点及びリソース的な観点から効率がよい。すなわち、収集すべきデータが通過する経路に隣接するＰＥであって未使用のＰＥで当該データを収集する。例えば、追加部３０は、図５（Ｂ）に示すように、ＰＥ２３でデータＡを収集し、ＰＥ２４でデータＢを収集することを決定する。そして、追加部３０は、ＰＥ２３でデータＡを収集して所定のタイミングで出力し、ＰＥ２４でデータＢを収集して所定のタイミングで出力するようなプロファイル記述を第１の動作レベル記述に追加する。
【００３８】
次に、プロファイル部５０は、ＲＴＬ記述を取得する（ステップＳ１０５）。具体的には、プロファイル部５０は、追加部３０が生成した第２の動作レベル記述を動作合成部４０に引き渡して動作合成させることによりＲＴＬ記述を生成させ、生成したＲＴＬ記述を取得する。
【００３９】
そして、プロファイル部５０は、プロファイル情報を取得し出力する機能を備えた回路（以下、「プロファイル機能付き回路」とする。）が生成可能か否かを判別する（ステップＳ１０６）。具体的には、プロファイル部５０は、取得したＲＴＬ記述に基づいて生成するプロファイル機能付き回路が、再構成可能ハードウェアに実装可能なサイズであるか否かを判別する。
【００４０】
例えば、プロファイル部５０は、取得したＲＴＬ記述のサイズが所定のサイズ以下であるか否かを判別し、或いは、取得したＲＴＬ記述を論理合成することにより構成情報を取得し、この構成情報のサイズが所定のサイズ以下であるか否かを判別する。
【００４１】
プロファイル部５０は、プロファイル機能付き回路が生成可能ではないと判別した場合（ステップＳ１０６：ＮＯ）、再度、ユーザにプロファイル情報を指定するように求め、また、プロファイル情報を変更するように追加部３０に指示する（ステップＳ１０７）。
【００４２】
追加部３０は、プロファイル部５０からプロファイル情報の変更を指示されることに応答して、ユーザからプロファイル情報の指定を再度受け付ける（ステップＳ１０７）。そして、動作合成装置１００は、再度受け付けたプロファイル情報に基づいて上述の処理（ステップＳ１０３〜ステップＳ１０５）を実行する。動作合成装置１００は、プロファイル機能付き回路が生成可能となるまで上述の処理（ステップＳ１０３〜ステップＳ１０６）を繰り返す。
【００４３】
一方、プロファイル部５０は、プロファイル機能付き回路が生成可能であると判別した場合（ステップＳ１０６：ＹＥＳ）、プロファイル機能付き回路を生成する（ステップＳ１０８）。具体的には、プロファイル部５０は、取得したＲＴＬ記述を論理合成することにより、プロファイル機能付き回路を再構成可能ハードウェア７０に実現するために必要な構成情報を生成する。
【００４４】
そして、プロファイル部５０は、プロファイル機能付き回路を動作させる（ステップＳ１０９）。具体的には、プロファイル部５０は、生成した構成情報を再構成可能ハードウェア７０に書き込んだ後、プロファイル機能付き回路を動作させる。
【００４５】
ここで、プロファイル部５０は、再構成可能ハードウェア７０上に実現されたプロファイル機能付き回路からプロファイル情報を取得する（ステップＳ１１０）。プロファイル機能付き回路は、動作中にプロファイル情報を取得し、出力する。プロファイル部５０は、プロファイル機能付き回路の動作中は、プロファイル情報を所定のタイミングで取得し続ける。
【００４６】
次に、最適化部６０は、プロファイル情報に基づいて最適化情報を生成する（ステップＳ１１１）。具体的には、最適化部６０は、プロファイル部５０が取得したプロファイル情報と、ユーザから指定された重視パラメータ情報と、に基づいて、動作レベル記述から最適化されたＲＴＬ記述を生成するために必要な最適化情報を生成する。なお、重視パラメータ情報は、面積、処理サイクル数、遅延、若しくは、消費電力のうち最適化の際に重視するパラメータを指定する情報である。
【００４７】
面積を重視する最適化では、例えば、３２ビットの入力を受け付ける回路に対し、入力される値をプロファイル情報として取得する。取得したプロファイル情報から、実際に入力されている値は常に１６ビット以下であると分かれば、入力は１６ビットであるというのを新たな制約として、面積を削減する最適化が行える。
【００４８】
最後に、最適化部６０は、最適化されたＲＴＬ記述を取得する（ステップＳ１１２）。具体的には、最適化部６０は、第１の動作レベル記述を動作合成部４０に与えるとともに、生成した最適化情報を動作合成部４０に与えてＲＴＬ記述を生成させることにより、最適化されたＲＴＬ記述を取得する。最適化部６０が最適化されたＲＴＬ記述を取得すると動作合成処理が完了する。
【００４９】
本実施形態に係る動作合成装置１００によれば、プロファイル機能付きの回路を実際に動作させることによりプロファイル情報を取得し、取得したプロファイル情報に基づいて第１の動作レベル記述の動作合成を行う。プロファイル情報に基づいて第１の動作レベル記述を動作合成するため、最適化されたＲＴＬ記述を取得することができる。
【００５０】
また、ソフトウェアでの動的コンパイルは関数単位が基本であるが、再構成可能ハードウェアではある状態での入出力となるレジスタを関数引数とみなし、任意の切り口で最適化を実行することができる。
【００５１】
さらに、動作合成ツールと連携し、各リソースの生存区間情報を利用することにより、（１）取得すべきプロファイル情報の削減、（２）回路動作上のホットスポット解析の容易化、を図ることができる。
【００５２】
（変形例）
上述の実施形態では、プロファイル機能付き回路（第２の動作レベル記述を動作合成することにより得られる回路）を動作させることにより得られるプロファイル情報を用いて、第１の動作レベル記述を動作合成する例を示した。しかしながら、プロファイル機能付き回路は、単にプロファイル情報を取得するための回路ではなく、本来実現されるべきアプリケーション機能（演算機能、通信機能等）も備えている。このため、プロファイル機能付き回路を再構成可能ハードウェアに実装した状態で、アプリケーションを実行する構成としてもよい。
【００５３】
この場合、動作合成装置は、プロファイル機能付き回路を動作させることにより得られるプロファイル情報を用いて、第２の動作レベル記述を動作合成する。そして、動作合成装置は、第２の動作レベル記述を動作合成して得られたＲＴＬ記述から求めた構成情報を再構成可能ハードウェア７０に上書きすることにより、アプリケーションの動作中に最適化された回路に更新することが可能となる。
【００５４】
以下、変形例に係る動作合成装置が実行する動作合成処理について図６及び図７を参照して詳細に説明する。
【００５５】
動作合成装置１０１は、例えば、動作合成の開始要求を入力装置１５を介してユーザから受けると、図７のフローチャートに示す動作合成処理を開始する。
【００５６】
まず、受付部２０は、ユーザから動作合成対象の動作レベル記述を受け付ける（ステップＳ２０１）。受付部２０は、ユーザから動作合成対象の動作レベル記述の指定を受け付け、ユーザから指定された第１の動作レベル記述をハードディスク装置１４から読み出してＲＡＭ１３に記憶する。
【００５７】
次に、追加部３０は、第１の動作レベル記述にプロファイル記述を追加して第２の動作レベル記述を生成する（ステップＳ２０２）。追加部３０は、上述のようにプロファイル指定情報や生存区間情報に基づいてプロファイル記述を追加してもよいし、あらかじめ定められた情報に基づいてプロファイル記述を追加してもよい。
【００５８】
そして、プロファイル部５０は、ＲＴＬ記述を生成する（ステップＳ２０３）。具体的には、プロファイル部５０は、追加部３０が生成した第２の動作レベル記述を動作合成部４０に引き渡して動作合成させることによりＲＴＬ記述を生成させ、生成したＲＴＬ記述を取得する。
【００５９】
ここでは、理解を容易にするため、取得したＲＴＬ記述に基づいて生成される回路は、再構成可能ハードウェアに実装可能なサイズであるものとして説明する。
【００６０】
プロファイル部５０は、プロファイル機能付き回路を生成する（ステップＳ２０４）。具体的には、プロファイル部５０は、取得したＲＴＬ記述を論理合成することにより、プロファイル機能付き回路を再構成可能ハードウェア７０に実現するために必要な構成情報を生成する。
【００６１】
そして、プロファイル部５０は、プロファイル機能付き回路を動作させる（ステップＳ２０５）。具体的には、プロファイル部５０は、生成した構成情報を再構成可能ハードウェア７０に書き込んだ後、プロファイル機能付き回路を動作させる。
【００６２】
ここで、プロファイル部５０は、再構成可能ハードウェア７０上に実現されたプロファイル機能付き回路からプロファイル情報を取得する（ステップＳ２０６）。プロファイル機能付き回路は、動作中にプロファイル情報を取得し、出力する。プロファイル部５０は、プロファイル機能付き回路の動作中は、プロファイル情報を所定のタイミングで取得し続ける。
【００６３】
次に、最適化部６０は、プロファイル情報に基づいて最適化情報を生成する（ステップＳ２０７）。具体的には、最適化部６０は、プロファイル部５０が取得したプロファイル情報に基づいて、最適化されたＲＴＬ記述を取得するために必要な最適化情報を生成する。なお、最適化部６０は、上述のようにユーザから指定された重視パラメータ情報に基づいて最適化情報を生成してもよい。
【００６４】
そして、最適化部６０は、最適化されたＲＴＬ記述を取得する（ステップＳ２０８）。具体的には、最適化部６０は、第２の動作レベル記述を動作合成部４０に与えるとともに、生成した最適化情報を動作合成部４０に与えてＲＴＬ記述を生成させることにより、最適化されたＲＴＬ記述を取得する。
【００６５】
次に、プロファイル部５０は、プロファイル機能付き回路を再度生成する（ステップＳ２０９）。具体的には、プロファイル部５０は、最適化されたＲＴＬ記述を論理合成することにより、プロファイル機能付き回路を再構成可能ハードウェア７０に実現するために必要な構成情報を生成する。
【００６６】
そして、プロファイル部５０は、プロファイル機能付き回路を再構成可能ハードウェア７０に再度書き込む（ステップＳ２１０）。具体的には、プロファイル部５０は、生成した構成情報を所定のタイミングで再構成可能ハードウェア７０に書き込むことにより、再構成可能ハードウェア７０上に実現される回路を更新する。
【００６７】
以後、動作合成装置１０１は、ステップＳ２０６〜ステップＳ２１０の処理を繰り返す。
【００６８】
変形例に係る動作合成装置１０１によれば、プロファイル機能付きの回路を用いてアプリケーションを動作させている間にプロファイル情報を取得し、取得したプロファイル情報に基づいて生成した構成情報を動的に上書きすることができる。このため、再構成可能ハードウェア上に実装された回路を、動作中に最適化された回路に置き換えることができる。
【００６９】
なお、変形例に係る動作合成装置１０１によれば、プロファイル機能付きの回路を用いてアプリケーションを動作させる。しかしながら、プロファイル機能を実現する回路部分は、アプリケーション動作に使用しないリソースを用いて構成しているためリソースを追加する必要がない。また、プロファイル機能を実現する回路部分は、アプリケーションを実現する回路部分と並行に動作するため、アプリケーション本来の動作に影響を与えることがなく、アプリケーション回路の動作速度を維持することが可能となる。
【００７０】
なお、第１の動作レベル記述、プロファイル記述、第２の動作レベル記述は、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ、Ｊａｖａ（登録商標）などの高級プログラミング言語により記述するのが一般的であるが、動作合成装置を実現するコンピュータが処理しやすいようにした中間表現により記述してもよい。
【００７１】
また、プロファイル記述を高級プログラミング言語により記述するのではなく、レジスタ転送レベル記述を記述するための言語や中間表現により記述することとしても良い。この場合、プロファイル記述は、プロファイル情報を収集してから出力する電子回路を実現するレジスタ転送レベル記述に相当する。
【００７２】
従って、追加部３０が出力する第２の動作レベル記述は、第１の動作レベル記述と、レジスタ転送レベル記述によるプロファイル記述と、を組み合わせたものとなる。
【００７３】
そして、動作合成部４０は、第２の動作レベル記述が与えられると、まず、その中に含まれる第１の動作レベル記述を動作合成して、レジスタ転送レベル記述を得る。その後に、得られたレジスタ転送レベル記述にプロファイル記述を追加して、その結果を生成の結果としてプロファイル部５０に返す。
【００７４】
上記実施形態では、プログラムが、記憶装置に予め記憶されているものとして説明した。しかし、動作合成装置を、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  Ｄｉｓｋ）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【００７５】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
【００７６】
上述のように、本発明によれば、再構成可能ハードウェアにより実現する電子回路を最適化するのに好適な動作合成装置、動作合成方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施形態に係る動作合成装置の構成を示すブロック図である。
【図２】動作合成装置の基本構成を示すブロック図である。
【図３】動作合成処理を説明するためのブロック図である。
【図４】動作合成処理を示すフローチャートである。
【図５】（Ａ）、（Ｂ）は、プロファイル記述を追加する手順を説明するための図である。
【図６】変形例に係る動作合成装置の構成を示すブロック図である。
【図７】変形例に係る動作合成装置の動作合成処理を示すフローチャートである。
【符号の説明】
【００７８】
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ハードディスク装置
１５  入力装置
１６  表示装置
１７  出力装置
２０  受付部
３０  追加部
４０  動作合成部
５０  プロファイル部
６０  最適化部
７０  再構成可能ハードウェア
１００、１０１  動作合成装置
【図１】
0005012611.tif 000002
【図２】
0005012611.tif 000003
【図３】
0005012611.tif 000004
【図４】
0005012611.tif 000005
【図５】
0005012611.tif 000006
【図６】
0005012611.tif 000007
【図７】
0005012611.tif 000008