(57)【要約】【課題】動作レベル記述により表される演算を適切にグループ化して、動作合成するのに好適な動作合成装置を提供する。【解決手段】動作合成部３１は、動作レベル記述により表される複数の演算処理と当該複数の演算処理間で引き渡されるデータの流れとが記述された中間レベル記述を生成し、当該複数の演算処理のそれぞれが実行されるタイミングを示すタイミング情報を付加する。グループ化部３２は、タイミング情報が付加された中間レベル記述に記述されている複数の演算処理から、同じタイミングで実行される複数の演算処理を抽出する。グループ化部３２は、タイミング情報が付加された中間レベル記述に記述されている、抽出された複数の演算処理を、当該複数の演算処理を１つの演算処理により実現する複合演算処理に置換する。動作合成部３１は、置換された中間レベル記述を、レジスタ転送レベル記述に変換する。【選択図】図２
2011039636.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路上に実装される回路を動作レベルで記述する動作レベル記述を、当該回路をレジスタ転送レベルで記述するレジスタ転送レベル記述に変換する動作合成装置であって、
動作レベル記述の入力を受け付ける受付部と、
前記受付部により受け付けられた動作レベル記述により表される複数の演算処理と当該複数の演算処理間で引き渡されるデータの流れとが記述された中間レベル記述を生成する生成部と、
前記生成部により生成された中間レベル記述に、当該中間レベル記述に記述されている複数の演算処理のそれぞれが実行されるタイミングを示すタイミング情報を付加する付加部と、
前記付加部によりタイミング情報が付加された中間レベル記述に記述されている複数の演算処理から、同じタイミングで実行される複数の演算処理を抽出する抽出部と、
前記付加部によりタイミング情報が付加された中間レベル記述に記述されている、前記抽出部により抽出された複数の演算処理を、当該複数の演算処理を１つの演算処理により実現する複合演算処理に置換する置換部と、
レジスタ転送レベル記述に記述可能な回路構成要素を表すライブラリ情報に基づいて、前記置換部により置換された中間レベル記述を、レジスタ転送レベル記述に変換する変換部と、を備える、
ことを特徴とする動作合成装置。
【請求項２】
前記複合演算処理を実現する回路構成要素であって、前記レジスタ転送レベル記述に記述可能な回路構成要素を表す情報を、前記ライブラリ情報に追加する追加部、をさらに備える、
ことを特徴とする請求項１に記載の動作合成装置。
【請求項３】
前記追加部により前記ライブラリ情報に追加される情報は、前記回路構成要素の面積もしくは遅延時間のうちのいずれかを含む情報である、
ことを特徴とする請求項２に記載の動作合成装置。
【請求項４】
前記変換部により変換されたレジスタ転送レベル記述を論理合成して、前記複合演算処理を実現する回路構成要素の面積もしくは遅延時間のうちのいずれかを測定する合成部、をさらに備え、
前記追加部は、前記合成部により測定された、前記回路構成要素の面積もしくは遅延時間のうちのいずれかを含む情報を、前記ライブラリ情報に追加する、
ことを特徴とする請求項３に記載の動作合成装置。
【請求項５】
前記ライブラリ情報は、前記レジスタ転送レベル記述に記述可能な回路構成要素を、少なくとも、演算の種類、入力信号の数、演算の優先順序、入力信号のビット幅、入力信号の符号、ならびに、入力信号の到達遅延時間、により表す情報である、
ことを特徴とする請求項１乃至４のいずれか１項に記載の動作合成装置。
【請求項６】
半導体集積回路上に実装される回路を動作レベルで記述する動作レベル記述を、当該回路をレジスタ転送レベルで記述するレジスタ転送レベル記述に変換する動作合成装置が実行する動作合成方法であって、
前記動作合成装置は、受付部と、生成部と、付加部と、抽出部と、置換部と、変換部とを備え、
前記受付部が、動作レベル記述の入力を受け付ける受付ステップと、
前記生成部が、前記受付部により受け付けられた動作レベル記述により表される複数の演算処理と当該複数の演算処理間で引き渡されるデータの流れとが記述された中間レベル記述を生成する生成ステップと、
前記付加部が、前記生成部により生成された中間レベル記述に、当該中間レベル記述に記述されている複数の演算処理のそれぞれが実行されるタイミングを示すタイミング情報を付加する付加ステップと、
前記抽出部が、前記付加部によりタイミング情報が付加された中間レベル記述に記述されている複数の演算処理から、同じタイミングで実行される複数の演算処理を抽出する抽出ステップと、
前記置換部が、前記付加部によりタイミング情報が付加された中間レベル記述に記述されている、前記抽出部により抽出された複数の演算処理を、当該複数の演算処理を１つの演算処理により実現する複合演算処理に置換する置換ステップと、
前記変換部が、レジスタ転送レベル記述に記述可能な回路構成要素を表すライブラリ情報に基づいて、前記置換部により置換された中間レベル記述を、レジスタ転送レベル記述に変換する変換ステップと、を備える、
ことを特徴とする動作合成方法。
【請求項７】
コンピュータを、
半導体集積回路上に実装される回路を動作レベルで記述する動作レベル記述を、当該回路をレジスタ転送レベルで記述するレジスタ転送レベル記述に変換する動作合成装置として機能させるためのプログラムであって、
前記コンピュータを、
動作レベル記述の入力を受け付ける受付部、
前記受付部により受け付けられた動作レベル記述により表される複数の演算処理と当該複数の演算処理間で引き渡されるデータの流れとが記述された中間レベル記述を生成する生成部、
前記生成部により生成された中間レベル記述に、当該中間レベル記述に記述されている複数の演算処理のそれぞれが実行されるタイミングを示すタイミング情報を付加する付加部、
前記付加部によりタイミング情報が付加された中間レベル記述に記述されている複数の演算処理から、同じタイミングで実行される複数の演算処理を抽出する抽出部、
前記付加部によりタイミング情報が付加された中間レベル記述に記述されている、前記抽出部により抽出された複数の演算処理を、当該複数の演算処理を１つの演算処理により実現する複合演算処理に置換する置換部、
レジスタ転送レベル記述に記述可能な回路構成要素を表すライブラリ情報に基づいて、前記置換部により置換された中間レベル記述を、レジスタ転送レベル記述に変換する変換部、として機能させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作レベル記述により表される演算を適切にグループ化して、動作合成するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンピュータ上で実現するためのプログラムに関する。
【背景技術】
【０００２】
所望のシステムの回路機能の全てを１つのチップで実現するＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）が知られている。このようなＬＳＩは、システムＬＳＩあるいはＳＯＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）と呼ばれる。近年、半導体製造技術の向上に伴って、システムＬＳＩに集積できるゲート数が飛躍的に増加し、システムＬＳＩの処理能力も飛躍的に向上している。このため、システムＬＳＩは、画像処理、暗号化処理、復号処理、および、フィルタ処理など多彩な処理に用いられている。
【０００３】
このようなシステムＬＳＩの設計を支援するツールとして、動作合成装置が知られている。動作合成装置は、システムＬＳＩに実装される回路を動作レベルで表現する動作レベル記述を動作合成することにより、当該回路をレジスタ転送レベルで表現するレジスタ転送レベル記述（以下「ＲＴレベル記述」という。）を生成する装置である。具体的には、動作合成装置は、言語レベル最適化工程、スケジューリング工程、リソースアロケーション工程、バインディング工程、その他の最適化工程などを実行して、動作レベル記述をＲＴレベル記述に変換する。
【０００４】
ところで、スケジューリング工程においては、動作レベル記述により表現されている処理とデータの流れを表現するＣＤＦＧ（Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ）が生成される。ＣＤＦＧは、一般的には、加算、減算、乗算、除算などの基本演算の組み合わせにより表現される。しかしながら、基本演算の組み合わせにより表現されたＣＤＦＧに基づいて生成された回路は、加算器、減算器、乗算器、除算器などの基本演算器により実現されるため、動作速度が遅いことが一般的である。
【０００５】
このため、複数の基本演算を組み合わせた複合演算を用いてＣＤＦＧを表現し、生成される回路が当該複合演算を実現する複合演算器を含むようにして、当該回路の動作速度を向上させる技術が望まれている。かかる技術の一例として、特許文献１には、ＣＤＦＧから、グループ化すべき演算の組み合わせを抽出し、抽出した演算の組み合わせをグループ化して、当該演算の組み合わせを複合演算により表現する論理回路設計支援システムが開示されている。特許文献１に開示されている論理回路設計支援システムは、複合演算器の個数、複合演算器の回路構成、ならびに、演算に対する優先度などの、抽出すべき演算の組み合わせを特定するための情報の入力を設計者から受け付ける。従って、設計者は、動作レベル記述、動作合成方法、ならびに、動作合成における制約条件などを考慮して、論理回路設計支援システムに入力すべき情報を決定する必要がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第３６０２６９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、設計者が、抽出すべき演算の組み合わせを特定するための情報を決定することは、容易なことではなかった。このため、複合演算により高速な演算を可能とする回路を表現するＲＴレベル記述を、自動で生成することが可能な動作合成装置が望まれている。
【０００８】
本発明は、上記問題に鑑みてなされたものであり、動作レベル記述により表される演算を適切にグループ化して、動作合成するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の第１の観点に係る動作合成装置は、
半導体集積回路上に実装される回路を動作レベルで記述する動作レベル記述を、当該回路をレジスタ転送レベルで記述するレジスタ転送レベル記述に変換する動作合成装置であって、
動作レベル記述の入力を受け付ける受付部と、
前記受付部により受け付けられた動作レベル記述により表される複数の演算処理と当該複数の演算処理間で引き渡されるデータの流れとが記述された中間レベル記述を生成する生成部と、
前記生成部により生成された中間レベル記述に、当該中間レベル記述に記述されている複数の演算処理のそれぞれが実行されるタイミングを示すタイミング情報を付加する付加部と、
前記付加部によりタイミング情報が付加された中間レベル記述に記述されている複数の演算処理から、同じタイミングで実行される複数の演算処理を抽出する抽出部と、
前記付加部によりタイミング情報が付加された中間レベル記述に記述されている、前記抽出部により抽出された複数の演算処理を、当該複数の演算処理を１つの演算処理により実現する複合演算処理に置換する置換部と、
レジスタ転送レベル記述に記述可能な回路構成要素を表すライブラリ情報に基づいて、前記置換部により置換された中間レベル記述を、レジスタ転送レベル記述に変換する変換部と、を備える、
ことを特徴とする。
【００１０】
上記目的を達成するために、本発明の第２の観点に係る動作合成方法は、
半導体集積回路上に実装される回路を動作レベルで記述する動作レベル記述を、当該回路をレジスタ転送レベルで記述するレジスタ転送レベル記述に変換する動作合成装置が実行する動作合成方法であって、
前記動作合成装置は、受付部と、生成部と、付加部と、抽出部と、置換部と、変換部とを備え、
前記受付部が、動作レベル記述の入力を受け付ける受付ステップと、
前記生成部が、前記受付部により受け付けられた動作レベル記述により表される複数の演算処理と当該複数の演算処理間で引き渡されるデータの流れとが記述された中間レベル記述を生成する生成ステップと、
前記付加部が、前記生成部により生成された中間レベル記述に、当該中間レベル記述に記述されている複数の演算処理のそれぞれが実行されるタイミングを示すタイミング情報を付加する付加ステップと、
前記抽出部が、前記付加部によりタイミング情報が付加された中間レベル記述に記述されている複数の演算処理から、同じタイミングで実行される複数の演算処理を抽出する抽出ステップと、
前記置換部が、前記付加部によりタイミング情報が付加された中間レベル記述に記述されている、前記抽出部により抽出された複数の演算処理を、当該複数の演算処理を１つの演算処理により実現する複合演算処理に置換する置換ステップと、
前記変換部が、レジスタ転送レベル記述に記述可能な回路構成要素を表すライブラリ情報に基づいて、前記置換部により置換された中間レベル記述を、レジスタ転送レベル記述に変換する変換ステップと、を備える、
ことを特徴とする。
【００１１】
上記目的を達成するために、本発明の第３の観点に係るプログラムは、
コンピュータを、
半導体集積回路上に実装される回路を動作レベルで記述する動作レベル記述を、当該回路をレジスタ転送レベルで記述するレジスタ転送レベル記述に変換する動作合成装置として機能させるためのプログラムであって、
前記コンピュータを、
動作レベル記述の入力を受け付ける受付部、
前記受付部により受け付けられた動作レベル記述により表される複数の演算処理と当該複数の演算処理間で引き渡されるデータの流れとが記述された中間レベル記述を生成する生成部、
前記生成部により生成された中間レベル記述に、当該中間レベル記述に記述されている複数の演算処理のそれぞれが実行されるタイミングを示すタイミング情報を付加する付加部、
前記付加部によりタイミング情報が付加された中間レベル記述に記述されている複数の演算処理から、同じタイミングで実行される複数の演算処理を抽出する抽出部、
前記付加部によりタイミング情報が付加された中間レベル記述に記述されている、前記抽出部により抽出された複数の演算処理を、当該複数の演算処理を１つの演算処理により実現する複合演算処理に置換する置換部、
レジスタ転送レベル記述に記述可能な回路構成要素を表すライブラリ情報に基づいて、前記置換部により置換された中間レベル記述を、レジスタ転送レベル記述に変換する変換部、として機能させる、
ことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、動作レベル記述により表される演算を適切にグループ化して、動作合成するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンピュータ上で実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１乃至３の実施形態に係る動作合成装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係る動作合成装置が備える機能を説明するためのブロック図である。
【図３】動作レベル記述を示す図である。
【図４】ライブラリ情報を説明するための図である。
【図５】本発明の第１の実施形態に係る動作合成装置が実行する動作合成処理を示すフローチャートである。
【図６】演算ノードの実行タイミングが決定される前のＣＤＦＧ（Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ）を示す図である。
【図７】演算ノードの実行タイミングが決定された後のＣＤＦＧを示す図である。
【図８】演算ノードがグループ化された後のＣＤＦＧを示す図である。
【図９】本発明の第２の実施形態に係る動作合成装置が備える機能を説明するためのブロック図である。
【図１０】本発明の第２の実施形態に係る動作合成装置が実行するライブラリ情報生成処理を示すフローチャートである。
【図１１】演算ノードの実行タイミングが決定された後のＣＤＦＧを示す図である。
【図１２】演算ノードがグループ化された後のＣＤＦＧを示す図である。
【図１３】生成されたライブラリ情報を説明するための図である。
【図１４】本発明の第３の実施形態に係る動作合成装置が備える機能を説明するためのブロック図である。
【図１５】本発明の第３の実施形態に係る動作合成装置が実行するライブラリ情報更新処理を示すフローチャートである。
【図１６】ライブラリ情報により表される演算器のＲＴレベル記述を示す図である。
【図１７】演算器の面積と遅延時間とが追加されたライブラリ情報を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態に係る動作合成装置について図面を参照して説明する。ここで、動作合成装置は、動作レベルで半導体集積回路等の回路を表現する記述（以下「動作レベル記述」という。）を、合成制約に基づいて動作合成することにより、当該回路をレジスタ転送レベルで表現するレジスタ転送レベル記述（以下「ＲＴレベル記述」という。）を生成する。
【００１５】
（第１の実施形態）
まず、本発明の第１の実施形態に係る動作合成装置１００について説明する。
【００１６】
図１に示すように、動作合成装置１００は、物理的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、ハードディスク装置１４と、入力装置１５と、表示装置１６と、出力装置１７と、を備える。動作合成装置１００が備える各構成要素はバスを介して接続される。
【００１７】
ＣＰＵ１１は、ハードディスク装置１４に記憶されたプログラムに従って動作合成装置１００全体の動作を制御する。ＣＰＵ１１は、各構成要素とバスを介して接続され、制御信号やデータのやりとりをする。
【００１８】
ＲＯＭ１２は、電源投入直後に実行されるＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）を記憶する。ＩＰＬが実行された後、ＣＰＵ１１は、ハードディスク装置１４に記憶されたプログラムをＲＡＭ１３に読み出して実行する。
【００１９】
ＲＡＭ１３は、データやプログラムを一時的に記憶する。ＲＡＭ１３は、ハードディスク装置１４から読み出されたプログラムや、動作合成処理に必要なデータ等を一時記憶する。
【００２０】
ハードディスク装置１４は、ＣＰＵ１１により実行されるプログラムを記憶する。また、ハードディスク装置１４は、動作レベル記述や合成制約なども記憶する。
【００２１】
入力装置１５は、ＣＰＵ１１による制御のもと、動作レベル記述や合成制約等の入力をユーザから受け付け、また、動作合成処理の開始要求等の要求をユーザから受け付ける。入力装置１５は、例えば、キーボードやマウスから構成される。
【００２２】
表示装置１６は、ＣＰＵ１１による制御のもと、動作レベル記述を示す画面、合成制約を示す画面などを表示する。表示装置１６は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）やＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）などから構成される。
【００２３】
出力装置１７は、ＣＰＵ１１による制御のもと、ハードディスク装置１４に記憶されている動作レベル記述やＲＴレベル記述などを、適宜、動作合成装置１００の外部の装置などに出力する。出力装置１７は、例えば、フレキシブルディスクドライブ、ネットワークカード、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどにより構成される。
【００２４】
次に、本実施形態に係る動作合成装置１００が備える機能について説明する。
【００２５】
図２は、本実施形態に係る動作合成装置１００が備える機能を説明するためのブロック図である。図２に示すように、動作合成装置１００は、機能的には、入力部１０と、記憶部２０と、処理部３０と、出力部４０とを備える。
【００２６】
入力部１０は、動作合成を行うことを指示する情報や動作レベル記述などをユーザから受け付け、処理部３０に供給する。入力部１０は、合成制約情報など記憶部２０に記憶されるデータを受け付けて、処理部３０に供給してもよい。なお、処理部３０に供給されたデータは、適宜、記憶部２０に記憶される。入力部１０は、例えば、入力装置１５により構成される。
【００２７】
記憶部２０は、処理部３０が実行する動作プログラムを記憶する他、本発明を実現するために必要な種々のデータを記憶する。本実施形態では、動作レベル記述記憶領域２１、ライブラリ情報記憶領域２２、合成制約記憶領域２３、中間レベル記述記憶領域２４、ＲＴレベル記述記憶領域２５が記憶部２０内に設けられ、各記憶領域に所定のデータが格納される。記憶部２０は、例えば、ハードディスク装置１４により構成される。
【００２８】
動作レベル記述記憶領域２１は、動作レベル記述を記憶する領域である。動作レベル記述は、ハードウェア記述言語やプログラム言語により表現される。ハードウェア記述言語は、例えば、Ｖｅｒｉｌｏｇ−ＨＤＬ（Ｖｅｒｉｌｏｇ  Ｈａｒｄｗａｒｅ  Ｄｉｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、ＶＨＤＬ（Ｖｅｒｙ  Ｈｉｇｈ  Ｓｐｅｅｄ  Ｈａｒｄｗａｒｅ  Ｄｉｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、ＳｙｓｔｅｍＶｅｒｉｌｏｇである。プログラム言語は、例えば、Ｃ、Ｃ＋＋、Ｃ＃、ＳｙｓｔｅｍＣ、ＳｐｅｃＣ、ＪＡＶＡ（登録商標）、Ｐｅｒｌ、Ｓｃｈｅｍｅ、Ｌｉｓｐである。動作レベル記述は、Ｃ、Ｃ＋＋、あるいは、ＪＡＶＡ（登録商標）に、回路を実現するための拡張が行われた言語で表現されてもよい。動作レベル記述は、例えば、設計者によって準備される。図３に、ＳｙｓｔｅｍＣで記述されている動作レベル記述の例を示す。
【００２９】
図３は、ディジタル信号処理などで頻繁に実行される典型的な処理が記述された動作レベル記述を示す。関数ｆｕｎｃの処理は、配列変数ｃｏｅｆｆと配列変数ａｒｙの各要素を掛け合わせたものを全て足し合わせ、その結果を関数の戻り値として返す処理である。
【００３０】
ライブラリ情報記憶領域２２には、演算器、メモリ、入出力端子、マルチプレクサ、レジスタ、デコーダ、論理演算、定数テーブル等の回路構成要素に関する情報がライブラリ情報として登録されている。半導体集積回路のＲＴレベル記述は、ライブラリ情報記憶領域２２に登録されている回路構成要素で構成する必要がある。
【００３１】
図４に、ライブラリ情報記憶領域２２に格納されているライブラリ情報の一例を模式的に示す。図４には、ＩＤ１〜３によりそれぞれ特定される３つの回路構成要素が示されている。ＩＤ１により特定される回路構成要素は、面積が２００で演算に要する時間（以下「遅延時間」という。）が１００であって、ビット幅が３２ビットの入力データａとビット幅が３２ビットの入力データｂとを加算する加算器である。ＩＤ２により特定される回路構成要素は、面積が５００で遅延時間が２００であって、ビット幅が３２ビットの入力データａとビット幅が３２ビットの入力データｂとを乗算する乗算器である。ＩＤ３により特定される回路構成要素は、面積が５５０で遅延時間が２５０であって、ビット幅が３２ビットの入力データａと、ビット幅が３２ビットの入力データｂとビット幅が３２ビットの入力データｃとを乗算して得られた値とを加算する乗加算器である。
【００３２】
合成制約記憶領域２３は、動作合成処理でＲＴレベル記述を生成する際に必要となる制約を示す合成制約情報を記憶する領域である。合成制約情報は、例えば、各回路構成要素の使用可能個数、回路全体の面積、回路の動作周波数などを指定する情報である。
【００３３】
なお、上述した、動作レベル記述、ライブラリ情報、および、合成制約情報は、動作合成処理を行う前に回路設計者等によって事前に作成されて各領域に格納されている必要がある。
【００３４】
中間レベル記述記憶領域２４は、動作合成の各工程（言語レベル最適化工程、スケジューリング工程、リソースアロケーション工程、バインディング工程、その他の最適化工程等）で生成される記述（以下「中間レベル記述」という。）を記憶する領域である。例えば、スケジューリング工程では、ＣＤＦＧ（Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ）が中間レベル記述として作成され、中間レベル記述記憶領域２４に記憶される。
【００３５】
ＲＴレベル記述記憶領域２５は、動作合成処理によって、動作レベル記述から最終的に生成されるＲＴレベル記述を記憶する領域である。
【００３６】
処理部３０は、動作合成装置１００の動作を制御する。なお、処理部３０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。従って、処理部３０が備える各部は、それぞれ、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。処理部３０は、機能的には、動作合成部３１と、グループ化部３２とを備える。
【００３７】
動作合成部３１は、ライブラリ情報記憶領域２２に格納されたライブラリ情報、および、合成制約記憶領域２３に格納された合成制約情報に基づいて、動作レベル記述記憶領域２１に記憶されている動作レベル記述からＲＴレベル記述を合成する動作合成処理を行う。生成されたＲＴレベル記述は、ＲＴレベル記述記憶領域２５に格納される。なお、この動作合成処理には、言語レベル最適化工程、スケジューリング工程、リソースアロケーション工程、バインディング工程、その他の最適化工程等の工程が含まれる。
【００３８】
言語レベル最適化工程は、動作レベル記述に対して、関数の呼出の解消や、ループのアンロールや、不要コードの削除などの言語レベルでの最適化を行う工程である。
【００３９】
スケジューリング工程は、最適化された動作レベル記述から、制御とデータの流れを抽出し、どのタイミング（または状態）でどのような処理や演算等を実行すべきかを決定する工程である。
【００４０】
リソースアロケーション工程は、回路構成要素の選択を行う工程である。
【００４１】
バインディング工程は、スケジューリングされた動作レベル記述内の各処理に対して、必要なハードウェアリソース（演算器などの回路素子、および、レジスタ等）を割り付ける工程である。 
【００４２】
その他の最適化工程は、データパスの最適化等の処理を行う工程である。
【００４３】
なお、動作合成部３１は、上述した各工程（言語レベル最適化工程、スケジューリング工程、バインディング工程、その他の最適化工程）で作成される中間レベル記述を、中間レベル記述記憶領域２４に記憶する。また、動作合成部３１は、上述した各工程を経て、最終的に、ＲＴレベル記述を作成して、ＲＴレベル記述記憶領域２５に記憶する。
【００４４】
グループ化部３２は、スケジューリング工程により生成された中間レベル記述に後述するグループ化処理を施す。具体的には、グループ化部３２は、当該中間レベル記述を中間レベル記述記憶領域２４から読み出して解析することにより、当該中間レベル記述に含まれる演算処理を、その実行タイミング毎に分類する。そして、グループ化部３２は、当該分類ごとにグループ化可能な演算の組み合わせを抽出する。本実施形態においては、ある演算の組み合わせを１つの回路構成要素によって実現することが可能な回路構成要素がライブラリ情報記憶領域２２に記憶されている場合に、当該演算の組み合わせはグループ化可能となる。そして、グループ化部３２は、抽出されたグループ化可能な演算の組み合わせをグループ化する。具体的には、グループ化部３２は、抽出されたグループ化可能な演算の組み合わせを、複合演算に置換する。なお、リソースアロケーション工程によって、当該複合演算を実行する回路構成要素として、当該複合演算を実行する１つの複合演算器が選択される。動作合成部３１は、グループ化部３２によりグループ化処理が施された中間レベル記述に対して、リソースアロケーション工程ならびにバインディング工程を実行する。
【００４５】
出力部４０は、合成制約記憶領域２３に記憶されている合成制約情報やＲＴレベル記述記憶領域２５に記憶されているＲＴレベル記述などを、適宜、動作合成装置１００の外部の装置などに出力する。出力部４０は、例えば、出力装置１７により構成される。
【００４６】
次に、図５に示すフローチャートを用いて、動作合成装置１００が実行する動作合成処理について説明する。動作合成装置１００は、設計者などにより、動作合成処理の開始を要求する操作入力を受け付けると、図５に示す動作合成処理を開始する。
【００４７】
まず、ＣＰＵ１１は、言語レベル最適化を実行する（ステップＳ１０１）。具体的には、ＣＰＵ１１は、ハードディスク装置１４に記憶されている動作レベル記述をＲＡＭ１３に読み出して、当該動作レベル記述を言語レベルで最適化する。ＣＰＵ１１は、最適化された動作レベル記述を、ハードディスク装置１４に記憶する。
【００４８】
ＣＰＵ１１は、ステップＳ１０１の処理を終了すると、スケジューリングを実行する（ステップＳ１０２）。具体的には、まず、ＣＰＵ１１は、ハードディスク装置１４に記憶されている動作レベル記述と合成制約情報とをＲＡＭ１３に読み出す。ここで、図３に示す動作レベル記述が読み出されるものとする。また、図３に示す動作レベル記述の配列ａｒｙが１ポートのメモリにより実現することを指定する合成制約情報が読み出されるものとする。ＣＰＵ１１は、当該合成制約情報により指定される合成制約を満たすように、演算、入力、出力、配列読み込み、配列書き込みを状態に割り当てる。そして、ＣＰＵ１１は、当該動作レベル記述から制御とデータの流れとを抽出し、ＣＤＦＧと呼ばれる中間レベル記述を生成する。図６に、生成されたＣＤＦＧを示す。図６には、配列ａｒｙ、ｃｏｅｆｆの各要素にデータが入力されて、演算処理された結果がｓｕｍに格納される例を示している。演算処理は、ｎ０からｎ１６の演算ノードで表現され、演算ノード間で引き渡されるデータの流れは矢印により表現されている。
【００４９】
そして、ＣＰＵ１１は、合成制約情報により指定される合成制約を満たすように、中間レベル記述内の各処理の実行タイミングを決定し、中間レベル記述を更新する。すなわち、ＣＰＵ１１は、ＣＤＦＧに表されている各演算ノードがどのタイミングで処理を実行すべきかを表す中間レベル記述を生成する。
【００５０】
図７に、更新された中間レベル記述（演算処理の実行タイミングが決定済みのＣＤＦＧ）を示す。ここで、合成制約情報は、配列ａｒｙを１ポートのメモリで実現することを指定している。このため、配列ａｒｙからのデータの読み込みは、各状態（ＳＴＥＰ）において１回しかできない。図７のＳＴＥＰ１からＳＴＥＰ９は、処理の実行状態を示している。そして、配列ａｒｙに対するデータの読み込みは、それぞれの状態で１回となっている。このメモリの読み込みのタイミングが決定された後に、各演算ノードの実行タイミングが決定される。例えば、演算ノードｎ０による加算処理は、ＳＴＥＰ１のタイミングで実行されることを示している。また、ＳＴＥＰ２で演算ノードｎ１と演算ノードｎ９とによる演算処理が実行され、ＳＴＥＰ３で演算ノードｎ２と演算ノードｎ１０とによる演算処理が実行されることを示している。ＣＰＵ１１は、スケジューリング済みのＣＤＦＧ（中間レベル記述）を、ハードディスク装置１４に記憶する。
【００５１】
ＣＰＵ１１は、ステップＳ１０２の処理を終了すると、演算ノードの組みを選択する（ステップＳ１０３）。つまり、ＣＰＵ１１は、状態ごとに、グループ化可能な演算ノードの候補を抽出する。具体的には、ＣＰＵ１１は、ハードディスク装置１４に記憶されているＣＤＦＧをＲＡＭ１３に読み出す。そして、ＣＰＵ１１は、同じステップ（同じ状態）において実行される演算ノードの組みを選択する。図７に示す例では、ＳＴＥＰ２で実行される演算ノードｎ１と演算ノードｎ９との組が選択される。図８は、各状態においてグループ化候補として抽出される演算ノードが、グループ化可能な演算ノードの候補のうち、演算ノード数が最大になるようにグループ化候補を決めた場合の中間レベル記述を示している。
【００５２】
ＣＰＵ１１は、ステップＳ１０３の処理を終了すると、選択された演算ノードの組がグループ化可能であるか否かを判別する（ステップＳ１０４）。具体的には、まず、ＣＰＵ１１は、ハードディスク装置１４に記憶されているライブラリ情報をＲＡＭ１３に読み出す。そして、ライブラリ情報により表される回路構成要素のうち、ステップＳ１０３で選択された演算ノードの組を１つの回路構成要素で実行可能なものがあるか否かを判別する。つまり、グループ化ノードと同じ種類の演算器が登録されている場合には、グループ化可能であると判別される。例えば、演算ノードｎ１と演算ノードｎ９との組により実行される演算は、（３２ビット）＋（３２ビット）×（３２ビット）である。そして、この演算を実行する演算ノードｎ１７はＩＤ３に登録されている。このため、演算ノードｎ１と演算ノードｎ９との組は、グループ化可能であると判別される。このように、ＣＰＵ１１は、グループ化候補の演算ノードとライブラリ情報から最終的にグループ化する演算ノードを決定する。
【００５３】
ＣＰＵ１１は、グループ化可能であると判別すると（ステップＳ１０４：ＹＥＳ）、選択された演算ノードの組をグループ化する（ステップＳ１０５）。具体的には、ＣＰＵ１１は、図７に示す演算ノードｎ１と演算ノードｎ９とを、図８に示す演算ノードｎ１７に置き換える（グループ化する）。
【００５４】
ＣＰＵ１１は、グループ化可能でないと判別（ステップＳ１０４：ＮＯ）、もしくは、ステップＳ１０５の処理を終了すると、未選択の演算ノードの組み合わせがあるか否かを判別する（ステップＳ１０６）。ＣＰＵ１１は、未選択の演算ノードの組み合わせがあると判別すると（ステップＳ１０６：ＹＥＳ）、ステップＳ１０３に処理を戻す。
【００５５】
一方、ＣＰＵ１１は、未選択の演算ノードの組み合わせがないと判別すると（ステップＳ１０６：ＮＯ）、演算ノードがグループ化済みであるＣＤＦＧに基づいて、ＲＴレベル記述を生成する（ステップＳ１０７）。具体的には、まず、ＣＰＵ１１は、ハードディスク装置１４に記憶されている中間レベル記述（ＣＤＦＧ）と合成制約情報とをＲＡＭ１３に読み出す。そして、ＣＰＵ１１は、合成制約情報ならびにライブラリ情報に基づいて、中間レベル記述にリソースアロケーション、バインディングならびにその他の最適化処理を施すことにより、ＲＴレベル記述を生成する。そして、ＣＰＵ１１は、生成したＲＴレベル記述をハードディスク装置１４に記憶する。
【００５６】
ＣＰＵ１１は、ステップＳ１０７の処理を終了すると、動作合成処理を終了する。
【００５７】
本実施形態に係る動作合成装置１００によれば、グループ化部３２によりＣＤＦＧ中の複数の演算ノードが単一の複合演算ノードに置換される。このため、生成される回路の面積や動作速度などの性能の向上が期待できる。また、グループ化部３２は、実行タイミングが決定済みの演算ノードを表すＣＤＦＧに対して演算ノードのグループ化処理を実行する。より詳細には、グループ化される演算ノードの組の候補は、実行タイミングが同じ複数の演算ノードから抽出される。つまり、実行タイミングが決定された中間レベル記述に対して、状態ごとにグループ化する演算ノードが決定される。このため、グループ化の候補となる演算ノードの組み合わせが増大することが抑制されることが期待される。従って、グループ化対象の演算ノードの組を特定する情報を設計者から供給されなくても、演算ノードのグループ化処理が短時間で実行されるとともに、適切にグループ化されることが期待される。
【００５８】
これに対し、例えば、特許文献１に開示されている設計支援システムは、図６に示す中間レベル記述をもとにグループ化するノードを決定する。従って、特許文献１に開示されている設計支援システムによれば、グループ化候補のノードは、例えば、（ｎ０，ｎ９）、（ｎ０，ｎ１，ｎ９）、（ｎ０，ｎ９，ｎ１０）、（ｎ０，ｎ１，ｎ２，ｎ９，ｎ１０）、（ｎ０，ｎ１，ｎ２，ｎ９，ｎ１０，ｎ１１）など無数に考えられる。そこで、特許文献１に開示されている設計支援システムは、予め複合演算器の演算数や回路構成や演算に対する優先度の指定を予め設定者から受け付けて、グループ化するノードを特定していた。しかし、一般的に、動作レベル記述、動作合成方法、動作合成の制約条件により、適切な指定が異なるものである。このため、設計者が適切にこれらを指定することは困難であった。
【００５９】
（第２の実施形態）
次に、本発明の第２の実施形態に係る動作合成装置１１０について説明する。なお、第１の実施形態に係る動作合成装置１００と同様の構成ならびに処理については説明を省略する。第２の実施形態に係る動作合成装置１１０は、物理的には、図１に示す第１の実施形態に係る動作合成装置１００の構成と同様の構成である。
【００６０】
図９は、本実施形態に係る動作合成装置１１０が備える機能を説明するためのブロック図である。図９に示すように、動作合成装置１１０は、機能的には、入力部１０と、記憶部２７と、処理部３６と、出力部４０とを備える。動作合成装置１１０は、記憶部２０の代わりに記憶部２７を備えること、ならびに、処理部３０の代わりに処理部３６を備えること以外は、動作合成装置１００と同様の構成である。また、記憶部２７は、ライブラリ生成指示情報記憶領域２６をさらに備えること以外は、記憶部２０と同様の構成である。さらに、処理部３６は、ライブラリ情報生成部３３をさらに備えること以外は、処理部３０と同様の構成である。従って、以下では、主に、ライブラリ生成指示情報記憶領域２６ならびにライブラリ情報生成部３３について説明する。
【００６１】
ライブラリ生成指示情報記憶領域２６は、ライブラリの生成方法を指定するライブラリ生成指示情報を記憶する領域である。ライブラリ生成指示情報は、後述するライブラリ情報生成部３３がライブラリを生成する際に、（ａ）ライブラリ情報記憶領域２２に格納されている回路構成要素の情報を更新する、もしくは、（ｂ）ライブラリ情報記憶領域２２に格納されている回路構成要素以外の回路構成要素を表すライブラリ情報を生成する、などを指示する情報である。ライブラリ生成指示情報は、ライブラリ情報生成部３３によるライブラリの生成処理に先立って、回路設計者などによって予め記憶されている必要がある。
【００６２】
ライブラリ情報生成部３３は、グループ化部３２により演算ノードがグループ化されることにより生成された中間レベル記述と、ライブラリ生成指示情報記憶領域２６に記憶されているライブラリ生成指示情報とに基づいて、動作合成用のライブラリ情報を生成する。生成された動作合成用のライブラリ情報は、ライブラリ情報記憶領域２２に記憶される。
【００６３】
次に、図１０に示すフローチャートを用いて、動作合成装置１１０が実行するライブラリ情報生成処理について説明する。動作合成装置１１０は、設計者などにより、ライブラリ情報生成処理の開始を要求する操作入力を受け付けると、図１０に示すライブラリ情報生成処理を開始する。ステップＳ２０１からステップＳ２０３までの処理は、図５に示すステップＳ１０１からステップＳ１０３までの処理と同様であるため説明を省略する。
【００６４】
ＣＰＵ１１は、ステップＳ２０３の処理を終了すると、ステップＳ２０３で選択された演算ノードの組をグループ化する（ステップＳ２０４）。従って、当該演算ノードの組により表される複合演算を単独で実行可能な回路構成要素を示す情報が、ライブラリ情報記憶領域２２に記憶されているか否かにかかわらず、当該演算ノードの組がグループ化される。
【００６５】
ＣＰＵ１１は、ステップＳ２０４の処理を終了すると、未選択の演算ノードの組み合わせがあるか否かを判別する（ステップＳ２０５）。ＣＰＵ１１は、未選択の演算ノードの組み合わせがあると判別すると（ステップＳ２０５：ＹＥＳ）、ステップＳ２０３に処理を戻す。一方、ＣＰＵ１１は、未選択の演算ノードの組み合わせがないと判別すると（ステップＳ２０５：ＮＯ）、ライブラリ情報を生成する（ステップＳ２０６）。
【００６６】
具体的には、ＣＰＵ１１は、演算ノードがグループ化済みの中間レベル記述と、ライブラリ生成指示情報記憶領域２６に記憶されているライブラリ生成指示情報とに基づいて、ライブラリ情報を生成する。生成された動作合成用のライブラリ情報は、ライブラリ情報記憶領域２２に記憶される。
【００６７】
ここで、ライブラリ情報がどのように生成されるかについて説明する。
【００６８】
図１１は、ステップＳ２０２により生成された中間レベル記述を示す図である。図１１には、各入力変数ａ０からａ２、ｂ０からｂ２、ｃ０、ｃ１、ｄ０、ｄ１、中間変数ｔ０、ｔ１、は、それぞれ８ビット変数であり、各変数が加算処理される例を示している。
【００６９】
図１２は、グループ化部３２が状態ごとにグループ化可能な演算ノードの候補を抽出した結果を模式的に表す図である。図１２には、演算ノードｎ１、ｎ２、ｎ３はグループ化候補の演算ノードｎ１０として、演算ノードｎ４、ｎ５、ｎ６はグループ化候補の演算ノードｎ１１として、演算ノードｎ７、ｎ８、ｎ９はグループ化候補の演算ノードｎ１２として抽出されていることが示されている。本実施形態においては、グループ化候補の演算ノードがそのままグループ化される。従って、図１２に示す中間レベル記述が、演算ノードがグループ化された中間レベル記述となる。
【００７０】
ＣＰＵ１１は、図１２に示す中間レベル記述に基づいて、ライブラリ情報を生成する。すなわち、ＣＰＵ１１は、中間レベル記述に含まれる各演算ノードの演算の種類を解析し、解析結果に基づいてライブラリ情報を生成する。図１３は、図１２に示す中間レベル記述に基づいて生成されるライブラリ情報を示す図である。ＩＤ１の演算器は、演算ノードｎ１０とｎ１２とに対応するライブラリ情報であり、ＩＤ２の演算器は、演算ノードｎ１１に対応するライブラリ情報である。
【００７１】
ＣＰＵ１１は、ステップＳ２０６の処理を終了すると、ライブラリ情報生成処理を終了する。
【００７２】
一般に、動作レベル記述や、動作合成オプションなどにより、必要な動作合成用のライブラリ情報が変わる。このため、動作合成用のライブラリ情報を適切に設計者が用意することは困難である。しかしながら、本実施形態に係る動作合成装置１１０によれば、動作合成用のライブラリ情報を生成することが可能となるため、このような問題が解消される。
【００７３】
本実施形態に係る動作合成装置１１０が実行するライブラリ情報生成処理で特徴的なことは、機能的には等価である４個の変数を加算する演算器について、加算の構成（演算の優先順序）が異なるものは、異なる種類の演算器としてライブラリ情報が生成されることである。すなわち、複合演算器の回路構成を、ライブラリ情報に含めていることになる。これは、ＲＴレベル回路の実現方法にも依存するが、一般的には、ＩＤ１とＩＤ２の演算器の回路性能が異なるためである。このように、機能的には等価であるが、性能が異なる演算器が用意されていると、動作合成の処理工程であるリソースアロケーション工程、バインディング工程において、最適化処理の自由度が増えることにつながる。このため、結果として、品質の良いＲＴレベル記述が生成されることが期待される。
【００７４】
本実施形態においては、演算の構成をライブラリ情報の種類に含める例を示したが、演算の入力変数に対する到達遅延等をライブラリ情報の種類とすることも可能である。これによっても、最適化による効果が期待できる。
【００７５】
複合演算器は、対象となる演算の種類や、変数ビット幅、変数の符号、演算の構成、変数の到達時間等、非常に膨大な組み合わせの演算器が実現可能となる。このため、全ての複合演算器のライブラリ情報を事前に用意しておくことは困難である。しかしながら、本実施形態にかかる動作合成装置１１０によれば、様々なアプリケーション向けの回路設計に適用することが可能なライブラリ情報が自動で生成される。
【００７６】
（第３の実施形態）
次に、本発明の第３の実施形態に係る動作合成装置１２０について説明する。なお、第２の実施形態に係る動作合成装置１１０と同様の構成ならびに処理については説明を省略する。第３の実施形態に係る動作合成装置１２０は、物理的には、図１に示す第１の実施形態に係る動作合成装置１００の構成と同様の構成である。
【００７７】
図１４は、本実施形態に係る動作合成装置１２０が備える機能を説明するためのブロック図である。図１４に示すように、動作合成装置１２０は、機能的には、入力部１０と、記憶部２７と、処理部３７と、出力部４０とを備える。動作合成装置１２０は、処理部３６の代わりに処理部３７を備えること以外は、動作合成装置１１０と同様の構成である。また、処理部３７は、回路品質情報付加部３４、ならびに、論理合成部３５をさらに備えること以外は、処理部３６と同様の構成である。従って、以下では、主に、回路品質情報付加部３４、ならびに、論理合成部３５について説明する。
【００７８】
回路品質情報付加部３４は、ライブラリ情報生成部３３により生成された複合演算器の回路品質情報を取得し、取得した回路品質情報を、当該複合演算器のライブラリ情報に付加する。このために、回路品質情報付加部３４は、複合演算器の回路品質情報を取得するための論理合成の実行用コマンドを生成し、後述する論理合成部３５に論理合成させる。そして、回路品質情報付加部３４は、論理合成により得られた回路品質レポートに基づいて、複合演算器のライブラリ情報に回路品質情報を追加する。
【００７９】
論理合成部３５は、ＲＴレベル記述記憶領域２５に格納されているＲＴレベル記述と、実行コマンドとに基づいて、論理合成を実行する。そして、論理合成部３５は、ゲートレベル記述を生成するとともに、複合演算器の遅延時間や面積などの回路品質をレポートする。
【００８０】
次に、図１５に示すフローチャートを用いて、動作合成装置１２０が実行するライブラリ情報更新処理について説明する。動作合成装置１２０は、設計者などにより、ライブラリ情報更新処理の開始を要求する操作入力を受け付けると、図１５に示すライブラリ情報更新処理を開始する。ステップＳ３０１からステップＳ３０６までの処理は、図１０に示すステップＳ２０１からステップＳ２０６までの処理と同様であるため説明を省略する。なお、ステップＳ３０６においては、図１３に示すように、面積や遅延時間などの情報が含まれないライブラリ情報が生成されるものとする。
【００８１】
ＣＰＵ１１は、ステップＳ３０６の処理を終了すると、ハードディスク装置１４に記憶されているライブラリ情報を読み込み、ライブラリ情報により指定される回路構成要素の情報を取得する（ステップＳ３０７）。すなわち、ＣＰＵ１１は、ライブラリ情報を読み込み、登録されている演算器ＩＤ１とＩＤ２の回路構成要素の情報を取得する。例えば、演算器ＩＤ１については、種類が（ａ＋ｂ）＋（ｃ＋ｄ）であり、変数のビット幅はそれぞれ８であるという情報が取得される。
【００８２】
ＣＰＵ１１は、ステップＳ３０７の処理を終了すると、ＲＴレベル記述を生成する（ステップＳ３０８）。生成されるＲＴレベル記述は、ステップＳ３０７で取得された回路構成要素に対応した記述である。図１６に、図１３に示される複合演算器のＲＴレベル記述を示す。このＲＴレベル記述は、Ｖｅｒｉｌｏｇ−ＨＤＬで記述されている。
【００８３】
ＣＰＵ１１は、ステップＳ３０８の処理を終了すると、論理合成の実行用コマンドを生成する（ステップＳ３０９）。論理合成の実行用のコマンドは、論理合成を実行するためのコマンド群が指定されたものである。
【００８４】
ＣＰＵ１１は、ステップＳ３０９の処理を終了すると、ステップＳ３０９で生成された論理合成の実行用コマンドを用いて、ステップＳ３０８で生成されたＲＴレベル記述に対する論理合成を実行する（ステップＳ３１０）。
【００８５】
ＣＰＵ１１は、ステップＳ３１０の処理を終了すると、論理合成により得られた回路品質レポートに基づいて、ステップＳ３０６で生成されたライブラリ情報を更新する（ステップＳ３１１）。回路品質レポートは、演算器の面積や遅延時間などのレポートである。図１７に、面積と遅延時間が追加されたライブラリ情報を示す。図１７に、ＩＤ１，ＩＤ２の演算器の（面積、遅延時間）として、それぞれ、（３５０，１００）、（３３０、１１０）が追加された例を示す。
【００８６】
ＣＰＵ１１は、ステップＳ３１１の処理を終了すると、ライブラリ情報更新処理を終了する。
【００８７】
本実施形態に係る動作合成装置１２０によれば、生成された回路構成要素のライブラリ情報に、当該回路構成要素の回路品質情報が追加される。このため、回路品質情報が追加されたライブラリ情報を用いて、動作合成処理の各工程において、正確な回路品質の見積もりを利用することができる。従って、品質の良いＲＴレベル記述を生成することが可能となる。さらに、動作合成処理により出力される、回路品質見積もりの精度を向上させることが可能となる。
【００８８】
上記第１の実施形態においては、最初に、実行タイミングが同じである演算ノードの組が選択され、次に、当該演算ノードの組により表される複合演算を実行可能な回路構成要素がライブラリ情報に登録済みであるか否かが判別される例を示した。しかし、最初に、ライブラリ情報に登録済みであって複合演算が実行可能な回路構成要素が選択され、次に、当該複合演算を実行する演算ノードの組であって、実行タイミングが同じである演算ノードの組があるか否かが判別されるようにしてもよい。
【００８９】
上記第３の実施形態においては、論理合成部３５が動作合成装置１２０に含まれる例を示した。しかし、論理合成部３５は、動作合成装置１２０の外部の装置に含まれていてもよい。この場合、回路品質情報付加部３４は、論理合成の実行コマンドの代わりに論理合成の実行用スクリプトを生成し、当該外部の装置に含まれる論理合成部３５に供給する。また、論理合成部３５が動作合成部３１に含まれる構成、すなわち、動作合成部３１が動作合成と論理合成とを実行する構成であってもよい。
【００９０】
上記第３の実施形態においては、ライブラリ情報更新処理が、ライブラリ情報を生成する処理（ステップＳ３０１〜Ｓ３０６の処理）を含み、ステップＳ３０１〜Ｓ３１１の処理により構成される例を示した。しかし、ライブラリ情報更新処理には、図１５に示す全ての処理が含まれなくてもよい。例えば、Ｓ３０６において生成されるライブラリ情報が、あらかじめライブラリ情報記憶領域２２に格納されている場合には、ライブラリ情報更新処理は、ステップＳ３０７〜Ｓ３１１の処理により構成される。すなわち、ステップＳ３０７〜Ｓ３１１の処理によりライブラリ情報を更新することが可能である。
【００９１】
上記第２の実施形態では、フローチャートの説明において、「ライブラリ情報生成処理」を説明し、上記第３の実施形態では、フローチャートの説明において、「ライブラリ情報更新処理」を説明した。しかしながら、これらの実施形態において、第１の実施形態において説明した「動作合成処理」が実行されるようにしてもよい。すなわち、第２の実施形態における「ライブラリ情報生成処理」は、単独で実行されてもよいし、「動作合成処理」と組み合わされて実行されてもよい。また、第３の実施形態における「ライブラリ情報更新処理」は、単独で実行されてもよいし、「動作合成処理」と組み合わされて実行されてもよい。
【００９２】
なお、本発明に係る動作合成装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、コンピュータに、上記動作を実行するためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  Ｄｉｓｋ）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これをコンピュータシステムにインストールすることにより、上述の処理を実行する動作合成装置を構成しても良い。
【００９３】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。また、上述の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、又はＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記憶媒体や記憶装置に格納してもよい。
【産業上の利用可能性】
【００９４】
本発明は、例えば、電子回路の回路設計を支援する動作合成装置に利用することができる。
【符号の説明】
【００９５】
１０  入力部
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ハードディスク装置
１５  入力装置
１６  表示装置
１７  出力装置
２０、２７  記憶部
２１  動作レベル記述記憶領域
２２  ライブラリ情報記憶領域
２３  合成制約記憶領域
２４  中間レベル記述記憶領域
２５  ＲＴレベル記述記憶領域
２６  ライブラリ生成指示情報記憶領域
３０、３６、３７  処理部
３１  動作合成部
３２  グループ化部
３３ライブラリ情報生成部
３４  回路品質情報付加部
３５  論理合成部
４０  出力部
１００、１１０、１２０  動作合成装置
【図１】
2011039636.tif 000003
【図２】
2011039636.tif 000004
【図３】
2011039636.tif 000005
【図４】
2011039636.tif 000006
【図５】
2011039636.tif 000007
【図６】
2011039636.tif 000008
【図７】
2011039636.tif 000009
【図８】
2011039636.tif 000010
【図９】
2011039636.tif 000011
【図１０】
2011039636.tif 000012
【図１１】
2011039636.tif 000013
【図１２】
2011039636.tif 000014
【図１３】
2011039636.tif 000015
【図１４】
2011039636.tif 000016
【図１５】
2011039636.tif 000017
【図１６】
2011039636.tif 000018
【図１７】
2011039636.tif 000019