(57)【特許請求の範囲】
【請求項１】
動作レベル記述から合成制約情報が示す制約を満たすようにレジスタ転送レベル記述を動作合成する動作合成装置であって、
前記レジスタ転送レベル記述に記載可能な回路構成要素を特定する情報をライブラリ情報として記憶するライブラリ情報記憶手段と、
前記動作レベル記述を言語レベルで最適化する言語レベル最適化手段と、
前記言語レベル最適化手段で最適化した際の最適化の実現方法を示す情報を、当該実現方法を適用した動作レベル記述内の処理を識別する情報と対応付けて記憶する、言語レベル最適化実現方法記憶手段と、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理の所属属性を判別する所属属性判別手段と、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理を処理の属性および前記所属属性判別手段で判別した所属属性毎に分類し、各処理の分類毎に、当該動作レベル記述内での出現数を取得する処理出現数取得手段と、
動作合成の合成内容を指示する合成指示情報を取得する合成指示情報取得手段と、
前記処理出現数取得手段で取得した処理の分類毎の出現数と、ライブラリ情報記憶手段に記憶したライブラリ情報と、前記言語レベル最適化実現方法記憶手段に記憶した情報とに基づいて、前記動作レベル記述が示す処理をレジスタ転送レベル記述で表現するために必要な前記合成指示情報が示す合成内容に合致する回路構成要素の種類と数とを示した情報を合成制約情報として生成する、合成制約情報生成手段と、
を備えることを特徴とする、動作合成装置。
【請求項２】
前記処理の所属属性は、当該処理の動作レベル記述内での位置が、ループ内であること、所定の関数内であること、関数外であることの少なくとも１つを含む、
ことを特徴とする、請求項１に記載の動作合成装置。
【請求項３】
前記回路構成要素は、演算要素、記憶要素、入力要素、出力要素の少なくとも１つを含む、
ことを特徴とする、請求項１又は２に記載の動作合成装置。
【請求項４】
前記合成指示情報は、動作合成を、回路面積優先で行うことを示した情報か遅延優先で行うことを示した情報かの何れか一方の情報を含む、
ことを特徴とする、請求項１乃至３の何れか１つに記載の動作合成装置。
【請求項５】
前記合成指示情報は、動作合成を回路面積優先で行うことと遅延優先で行うこととの優先度の割合を示した情報である、
ことを特徴とする、請求項１乃至３の何れか１つに記載の動作合成装置。
【請求項６】
コンピュータを、
レジスタ転送レベル記述に記載可能な回路構成要素を特定する情報をライブラリ情報として記憶するライブラリ情報記憶手段、
動作レベル記述を言語レベルで最適化する言語レベル最適化手段、
前記言語レベル最適化手段で最適化した際の最適化の実現方法を示す情報を、当該実現方法を適用した動作レベル記述内の処理を識別する情報と対応付けて記憶する、言語レベル最適化実現方法記憶手段、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理の所属属性を判別する所属属性判別手段、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理を処理の属性および前記所属属性判別手段で判別した所属属性毎に分類し、各処理の分類毎に、当該動作レベル記述内での出現数を取得する処理出現数取得手段、
動作合成の合成内容を指示する合成指示情報を取得する合成指示情報取得手段、
前記処理出現数取得手段で取得した処理の分類毎の出現数と、ライブラリ情報記憶手段に記憶したライブラリ情報と、前記言語レベル最適化実現方法記憶手段に記憶した情報とに基づいて、前記動作レベル記述が示す処理をレジスタ転送レベル記述で表現するために必要な前記合成指示情報が示す合成内容に合致する回路構成要素の種類と数とを示した情報を合成制約情報として生成する、合成制約情報生成手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作レベル記述からレジスタ転送レベル記述を作成する、動作合成装置、および、プログラムに関する。
【背景技術】
【０００２】
現在、ＬＳＩやＶＬＳＩ等の半導体集積回路の設計を支援するために、動作レベルの回路記述（動作レベル記述）からレジスタ転送レベルの記述（RTL記述）を合成する、動作合成処理が行われている（例えば、特許文献１を参照）。
【特許文献１】特開２００６−２８５８６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１に記載の技術では、この動作合成処理を行うにあたって、回路構成要素の制約を示した情報（合成制約情報）を、回路の設計者等が事前に用意しておく必要がある。
【０００４】
しかしながら、この合成制約情報を事前に用意しておくことは、非常に困難である。その理由としては、用意しておく合成制約情報は、対象となる回路の多種多様な回路情報を含んだライブラリに対応した情報でなければならないからである。
【０００５】
また、他の理由としては、動作レベル記述に適用する動作合成方法の違いによっても、必要となる合成制約情報は異なるため、動作合成の方法に基づいて最適な合成制約を用意しておく必要があるからである。
【０００６】
本発明は上記実情に鑑みてなされたものであり、事前に合成制約を用意しておく必要のない、動作合成装置、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、この発明の第１の観点に係る動作合成装置は、
動作レベル記述から合成制約情報が示す制約を満たすようにレジスタ転送レベル記述を動作合成する動作合成装置であって、
前記レジスタ転送レベル記述に記載可能な回路構成要素を特定する情報をライブラリ情報として記憶するライブラリ情報記憶手段と、
前記動作レベル記述を言語レベルで最適化する言語レベル最適化手段と、
前記言語レベル最適化手段で最適化した際の最適化の実現方法を示す情報を、当該実現方法を適用した動作レベル記述内の処理を識別する情報と対応付けて記憶する、言語レベル最適化実現方法記憶手段と、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理の所属属性を判別する所属属性判別手段と、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理を処理の属性および前記所属属性判別手段で判別した所属属性毎に分類し、各処理の分類毎に、当該動作レベル記述内での出現数を取得する処理出現数取得手段と、
動作合成の合成内容を指示する合成指示情報を取得する合成指示情報取得手段と、
前記処理出現数取得手段で取得した処理の分類毎の出現数と、ライブラリ情報記憶手段に記憶したライブラリ情報と、前記言語レベル最適化実現方法記憶手段に記憶した情報とに基づいて、前記動作レベル記述が示す処理をレジスタ転送レベル記述で表現するために必要な前記合成指示情報が示す合成内容に合致する回路構成要素の種類と数とを示した情報を合成制約情報として生成する、合成制約情報生成手段と、
を備えることを特徴とする。
【０００９】
上記目的を達成するため、この発明の第２の観点に係るプログラムは、
コンピュータを、
レジスタ転送レベル記述に記載可能な回路構成要素を特定する情報をライブラリ情報として記憶するライブラリ情報記憶手段、
動作レベル記述を言語レベルで最適化する言語レベル最適化手段、
前記言語レベル最適化手段で最適化した際の最適化の実現方法を示す情報を、当該実現方法を適用した動作レベル記述内の処理を識別する情報と対応付けて記憶する、言語レベル最適化実現方法記憶手段、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理の所属属性を判別する所属属性判別手段、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理を処理の属性および前記所属属性判別手段で判別した所属属性毎に分類し、各処理の分類毎に、当該動作レベル記述内での出現数を取得する処理出現数取得手段、
動作合成の合成内容を指示する合成指示情報を取得する合成指示情報取得手段、
前記処理出現数取得手段で取得した処理の分類毎の出現数と、ライブラリ情報記憶手段に記憶したライブラリ情報と、前記言語レベル最適化実現方法記憶手段に記憶した情報とに基づいて、前記動作レベル記述が示す処理をレジスタ転送レベル記述で表現するために必要な前記合成指示情報が示す合成内容に合致する回路構成要素の種類と数とを示した情報を合成制約情報として生成する、合成制約情報生成手段、
として機能させる。
【発明の効果】
【００１０】
上記構成によれば、動作レベル記述を言語レベル最適化した記述と、ライブラリ情報とを照合することで、最適な合成制約を生成するので、事前に合成制約を用意しておく必要がない。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態に係る動作合成装置１００について図面を参照して説明する。動作合成装置１００は、半導体集積回路等の回路の動作レベル記述に基づいて動作合成処理を行い、レジスタ転送レベル記述を出力するものである。
なお、当該実施形態は本発明の原理の理解を容易にするためのものであり、本発明の範囲は、下記の実施形態に限られるものではなく、当業者が以下の実施形態の構成を適宜置換した他の実施形態も、本発明の範囲に含まれる。
【００１２】
（第１の実施の形態）
第１の実施形態に係る動作合成装置１００は、図１に示すように、入力部１０と、記憶部２０と、処理部３０と、出力部４０とを備える。
【００１３】
入力部１０は、キーボード等を備え、ユーザによって入力された動作合成を行うことを指示する指示情報や作成した動作レベル記述などを、処理部３０に供給する。
【００１４】
記憶部２０は、例えば、ハードディスクなどの記憶装置から構成され、処理部３０が実行する動作プログラムを格納する他、本発明を実現するために必要な種々のデータを記憶する。本実施形態では、動作レベル記述記憶領域２１、ライブラリ記憶領域２２、合成指示記憶領域２３、合成制約記憶領域２４、中間レベル記述記憶領域２５、処理出現数記憶領域２６、ＲＴレベル記述記憶領域２７、などといった記憶領域が記憶部２０内に設けられ、各記憶領域に所定のデータが格納される。
【００１５】
動作レベル記述記憶領域２１は、動作レベル記述を記憶する領域である。図２（Ａ）に、ＳｙｓｔｅｍＣで記述されている動作レベル記述の例を示す。
【００１６】
図１に戻り、ライブラリ記憶領域２２には、演算器、メモリ、入出力端子、マルチプレクサ、レジスタ、デコーダ、論理演算、定数テーブル等の回路構成要素に関する情報がライブラリ情報として登録されている。半導体集積回路のＲＴＬ記述は、ライブラリ記憶領域２２に登録されている回路構成要素で構成する必要がある。
一例として、ライブラリ記憶領域２２に格納されている、回路構成要素の演算器に関するライブラリ情報を図３（Ａ）に示す。この例では、ビット幅が４、６、８、１６ビットで符号がｕｎｓｉｇｎｅｄである４種類の加算器がライブラリ情報として、ライブラリ記憶領域２３に登録されている。即ち、このライブラリ情報に基づくＲＴＬ記述内に加算器を配置する場合には、この４種類の加算器以外の加算器を配置することはできない。
【００１７】
図１に戻り、合成指示記憶領域２３は、動作合成処理に対して設計者等が与える各種の指示情報を記憶する領域である。例えば、面積優先や遅延優先に合成することを指示するような合成回路全体に与える指示情報や、動作レベル記述内の特定の制御文や変数などに与える指示情報等が、合成指示記憶領域２３に記憶される。
【００１８】
なお、上述した、動作レベル記述、ライブラリ情報、および、合成指示情報は、動作合成処理を行う前に回路設計者等によって事前に作成されて各領域に格納されている必要がある。
【００１９】
合成制約記憶領域２４は、動作合成処理でＲＴレベル記述を生成する際に必要となる、演算器やレジスタなどの回路構成要素の種類や数などの制約を示す、合成制約情報を記憶する領域である。なお、この合成制約情報は、ユーザが事前に準備したものではなく、後述する合成制約生成処理によって、作成されるものである。
【００２０】
中間レベル記述記憶領域２５は、動作合成の各工程で生成される記述（中間レベル記述）を記憶する領域である。また、中間レベル記述領域には、後述する合成生成処理において言語レベル最適化した動作レベル記述も格納される。
【００２１】
処理出現数記憶領域２６は、動作レベル記述内の処理をその処理の属性（処理属性）で分類した分類毎にその動作レベル記述内での出現数を記憶する領域である。図３（Ｂ）に、処理出現数記憶領域２６に記憶されている情報の例を示す。
【００２２】
図１に戻り、ＲＴレベル記述記憶領域２７は、動作合成処理によって、動作レベル記述から最終的に生成されるレジスタ転送レベル記述（ＲＴレベル記述）を記憶する領域である。
【００２３】
処理部３０は、ＣＰＵ（Central Processing Unit）やＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等を備え、ＲＯＭをワークエリアとして、ＲＡＭや記憶部２０に格納されている動作プログラムを実行することで、動作合成装置１００の動作を制御する。
【００２４】
処理部３０は、機能的には、動作合成部３１と、合成制約生成部３２とを備える。
【００２５】
動作合成部３１は、ライブラリ記憶領域２２に格納されたライブラリ情報、および、合成指示記憶領域２３に格納された合成指示情報に基づいて、動作レベル記述からＲＴレベル記述を合成する動作合成処理を行う。なお、この動作合成処理は、言語レベル最適化工程、スケジューリング工程、リソースアロケーション工程、バインディング工程、その他の最適化工程等の工程が含まれる。
【００２６】
言語レベル最適化工程は、動作レベル記述に対して、関数呼び出しの解消（インライン展開）や、ループのアンロールや、不要コードの削除などの言語レベルでの最適化を行う工程である。
【００２７】
スケジューリング工程は、最適化された動作レベル記述から、制御とデータの流れを抽出し、どの工程（または状態）で、どのような処理や演算等を実行すべきかを決定する工程である。
【００２８】
リソースアロケーション工程は、回路構成要素の選択を行う工程である。
バインディング工程は、動作レベル記述で表現された各処理に対して、必要なハードウェアリソース（演算器などの回路素子、および、レジスタ等）を割り付ける工程である。
その他の最適化工程は、データパスの最適化等の処理を行う工程である。
【００２９】
なお、動作合成部３１は、上述した各工程で作成される記述（中間レベル記述）を中間レベル記述記憶領域２５に記憶する。また、動作合成部３１は、上述した各工程を経て、最終的に、ＲＴレベル記述を作成して、ＲＴレベル記述記憶部２０に記憶する。
【００３０】
合成制約生成部３２は、言語レベル最適化された動作レベル記述を中間レベル記述記憶領域２５から読み出して解析することにより、該動作レベル記述に含まれる演算、入力、出力等の処理をその処理の属性で分類して、分類毎に、動作レベル記述内での当該処理の出現数を取得し、処理出現数記憶領域２６に格納する。
【００３１】
また、合成制約生成部３２は、処理出現数記憶領域２６に記憶した分類毎の出現数、ライブラリ記憶領域２２に記憶されているライブラリ情報、および／又は合成指示記憶領域２３に格納されている合成指示情報とを照合することで、合成制約情報を生成し、合成制約記憶領域２４へ格納する。
【００３２】
続いて、上記構成の動作合成装置１００による、合成制約生成処理について説明する。なお、予め、動作レベル記述、ライブラリ情報、合成指示情報が、動作レベル記述記憶領域２１、ライブラリ記憶領域２２、合成指示記憶領域２３にそれぞれ格納されているものとする。
【００３３】
ユーザが、動作合成装置１００の入力部１０から合成制約生成処理を行う旨の指示を入力すると、その入力に応答して、処理部３０は、図４に示す合成制約生成処理を開始する。
【００３４】
合成制約生成処理が開始されると、まず、処理部３０の動作合成部３１は、動作レベル記述記憶領域２１と合成指示記憶領域２３とにそれぞれ格納されている動作レベル記述と合成指示情報とを読み出す。そして、動作合成部３１は、読み出した情報に基づいて、動作レベル記述の言語レベルの最適化を行い、最適化した動作レベル記述を、中間レベル記述記憶領域２５に記憶する（ステップＳ１０１）。
【００３５】
例えば、図２（Ａ）に示す動作レベル記述をこのステップＳ１０１の処理対象とした場合には、図２（Ｂ）に示すように、言語レベルの最適化がなされる。この例では、動作レベル記述内のループ制御文Ａ１が、ループの繰り返し回数分だけ展開（アンロール）された、演算処理文Ｂ１〜Ｂ４に置換される。
【００３６】
図４に戻り、続いて、合成制約成部３２は、言語レベルの最適化がなされた動作レベル記述を中間レベル記述記憶領域２５から読み出して解析し、動作レベル記述に含まれる処理をその処理の属性で分類して、分類毎に動作レベル記述内での出現数を取得し、処理出現数記憶領域２６に記憶する（ステップＳ１０２）。
【００３７】
例えば、図２（Ｂ）に示す最適化済の動作レベル記述を、ステップＳ１０２の処理の対象とした場合を考える。この場合、演算処理文Ｂ１〜Ｂ４に対応する処理は、処理種類「加算」、ビット幅「８」、および、符号「ｕｎｓｉｇｎｅｄ」の処理属性を有するものとして１つに分類され、動作レベル記述内での出現数４が特定される。また、演算処理文Ｂ５〜Ｂ８に対応する処理は、ビット幅「４」〜「７」の処理属性を有する処理としてそれぞれ別個に分類され、各分類毎に出現数１が特定される。そして、全体としては、図３（Ｂ）に示すような情報が、処理出現数記憶領域２６に格納される。
【００３８】
図４に戻り、続いて、合成制約生成部３２は、ステップＳ１０２の処理で処理出現数記憶領域２６に記憶した情報とライブラリ記憶領域２２に記憶されているライブラリ情報とに基づいて、動作レベル記述の処理をライブラリ情報に登録されている回路構成要素を用いて実現するうえで必要最低限となる回路構成要素の種類と数を合成制約情報として求め、合成制約記憶領域２４に格納する（ステップＳ１０３）。
なお、合成制約生成部３２は、ステップＳ１０３で、合成指示情報もさらに加えて、合成制約情報を求めてもよい。このようにすることで、合成指示情報に含まれる、合成回路全体に与えるような指示も、作成される合成制約情報に反映されるので、より合成制約情報の精度が増す。
以上で、合成制約生成処理は終了する。
【００３９】
ここで、上述した合成制約情報を求める処理（ステップＳ１０３）の具体例を、図３に示す。
図３（Ａ）は、ライブラリ記憶領域２２に記憶されているライブラリ情報を示した図であり、ビット幅の異なる４種類の加算器が登録されている。
図３（Ｂ）は、処理出現数記憶領域２６に記憶されている情報を示した図であり、ビット幅「４」、「５」、「６」、「７」の加算処理が１つずつ、ビット幅「８」の加算処理が４つの、合計８つの加算処理が、動作レベル回路記述に含まれていることを示している。
【００４０】
この場合、合成制約情報は、以下のようにして求められる。即ち、図３（Ｂ）に示す、出現数が１でビット幅「４」の加算処理を実現するために最低限必要な（即ち、最もビット幅が小さい）、ライブラリに登録されている加算器として、ビット幅「４」の加算器が１個選択される。また、同様に、出現数がそれぞれ１であるビット幅「５」、「６」の加算処理を実現するために最低限必要なライブラリに登録されている加算器として、ビット幅「６」の加算器が２個選択される。また、同様に、出現数が１でビット幅「７」の加算処理、および、出現数が４でビット幅「８」の加算処理を実現するために最低限必要なライブラリに登録されている加算器として、ビット幅「８」の加算器が５個選択される。即ち、図３（Ｃ）に示すような合成制約情報が作成され、合成制約記憶領域２４に記憶されることとなる。
【００４１】
次に、合成指示情報の作成（ステップＳ１０３）において、合成指示情報も用いる場合の具体例を図５に示す。
図５（Ａ）は、ライブラリ記憶領域２２に記憶されているライブラリ情報を示した図であり、ビット幅と符号の異なる６種類の演算器（加算器、減算器、加減算器）が登録されている。
図５（Ｃ）は、図５（Ｂ）に示す言語レベル最適化済動作レベル記述を解析して得られた、処理出現数記憶領域２６に記憶されている情報を示した図である。この図より、ビット幅「８」、「１６」で符号が「unsigned」の加算処理が１つずつ、ビット幅「８」で符号が「unsigned」の減算処理が１つ、ビット幅「１６」で符号が「signed」の加算処理が１つの、合計４つの演算処理が、図５（Ｂ）の動作レベル記述に含まれていることがわかる。
【００４２】
なお、一般的に、加算処理と減算処理とを専用の演算器を使用して実現する場合（即ち、加算処理は加算器、減算処理は減算器を使用して実現する場合）と、加減算両方に対応できる演算器（加減算器）を使用して実現させる場合とでは、図６（Ａ）に示すような、面積と遅延性の違いがあることが知られている。即ち、加算処理と減算処理とを実現する際に、加減算器を使用した方が、専用の演算器を使用した場合に比べて小さい回路面積を実現できるが、遅延性については、加減算器を使用した方が、専用の演算器を使用した場合に比べて、遅延が大きい回路となる。
【００４３】
また、一般的に、符号がsigned、unsignedである演算処理を専用の演算器を使用して実現する場合（即ち、符号signedの演算は符号signedのみに対応する演算器、符号unsignedの演算は符号unsignedのみに対応する演算器を使用して実現する場合）と、符号がsigned、unsignedの両方の演算に対応できる演算器（符号混在演算器）を使用して実現させる場合とでは、図６（Ｂ）に示すような、面積と遅延性の違いがあることが知られている。即ち、符号がsigned、unsignedである演算処理を実現する際に、符号混在演算器を使用した方が、専用の演算器を使用した場合に比べて小さい回路面積を実現できるが、遅延性については、符号混在演算器を使用した方が、専用の演算器を使用した場合に比べて、遅延が大きい回路となる。
【００４４】
このような場合において、合成制約指示情報に、動作合成を「面積優先」で行うことを指示する情報が含まれている場合には、動作合成部は、図５（Ｄ）に示すような、合成制約情報を作成する。即ち、図５（Ｃ）に示す、ビット幅「８」の加算処理を実現するために、最低限必要な（即ち、最もビット幅が小さい）、ライブラリに登録されている演算器は、ビット幅「８」の加算器と加減算器との２種類があるが、「面積優先」であるため、ビット幅「８」の加減算器が選択される。同様に、ビット幅「８」の減算処理を実現するために、最低限必要であり、且つ、「面積優先」に対応した演算器として、ライブラリからビット幅「８」の加減算器が選択される。同様に、ビット幅「１６」で符号「unsigned」の加算処理を実現するために、最低限必要であり、且つ、「面積優先」に対応した演算器として、ビット幅「１６」で符号が「signed,unsigned」である加算器が選択される。同様に、ビット幅「１６」で符号「signed」の加算処理を実現するために、最低限必要であり、且つ、「面積優先」に対応した演算器として、ビット幅「１６」で符号が「signed,unsigned」である加算器が選択される。
【００４５】
また、このような場合において、合成制約指示情報に、動作合成を「遅延優先」で行うことを指示する情報が含まれている場合には、動作合成部は、図５（Ｅ）に示すような、合成制約情報を作成する。即ち、図５（Ｃ）に示す、ビット幅「８」の加算処理を実現するために、最低限必要な（即ち、最もビット幅が小さい）、ライブラリに登録されている演算器は、ビット幅「８」の加算器と加減算器との２種類があるが、「遅延優先」であるため、ビット幅「８」の加算器が選択される。同様に、ビット幅「８」の減算処理を実現するために、最低限必要であり、且つ、「遅延優先」に対応した演算器として、ライブラリからビット幅「８」の減算器が選択される。同様に、ビット幅「１６」で符号「unsigned」の加算処理を実現するために、最低限必要であり、且つ、「遅延優先」に対応した演算器として、ビット幅「１６」で符号が「unsigned」である加算器が選択される。同様に、ビット幅「１６」で符号「signed」の加算処理を実現するために、最低限必要であり、且つ、「面積優先」に対応した演算器として、ビット幅「１６」で符号が「signed」である加算器が選択される。
【００４６】
このように、第１の実施形態に係る動作合成装置１００は、言語レベル最適化した動作レベル記述とライブラリ情報に基づいて合成制約を生成する。また、合成指示情報も合成制約の作成に利用することで、より精度の高い作成を行うことも可能である。
そして、このようにして作成した合成制約情報に基づいて、動作合成装置１００の合成制約生成部３２は、以下、回路設計者等からの指示を受けて、ＲＴＬレベルを作成する。そのため、本実施形態では、事前に合成制約を準備すること無しに、動作合成を行うことができる。
【００４７】
（第２の実施形態）
上記第１の実施形態では、合成制約情報の作成にあたっては、処理の所属属性と言語レベル最適化実現方法とは考慮されない。第２の実施形態では、処理の所属属性と言語レベル最適化実現方法とを考慮に入れて合成制約情報を作成するため、より回路設計者の要求に合致した合成制約情報を生成できる。
【００４８】
第２の実施形態に係る動作合成装置２００を、図７に示す。第２の実施形態に係る動作合成装置２００は、図１に示した動作合成装置１００の記憶部２０から、処理出現数記憶領域２６を削除し、所属別処理出現数記憶領域２８と言語レベル最適化実現方法記憶領域２９とを新たに追加した構成となる。
【００４９】
所属別処理出現数記憶領域２８は、動作レベル記述内の処理をその処理の属性（処理属性）と所属属性とで分類した分類毎の出現数を記憶する領域である。
なお、ここでいう所属属性とは、当該処理が動作レベル記述内でどのような制御ブロックに属しているかを示す情報であり、例えば、当該処理がループ制御文のボディに属しているか、関数内に属しているか等を示す情報である。
【００５０】
言語レベル最適化実現方法記憶領域２９は、動作合成部３１が動作レベル記述を言語レベル最適化した際の最適化の実現方法を示す情報を格納する領域である。一般的な言語レベル最適化の実現方法としては、ループ制御文の展開（アンロール）や、関数呼び出しの解消（インライン展開）等である。
【００５１】
続いて、上記構成の動作合成装置２００による、合成制約生成処理について、図９のフローチャートを参照して説明する。
【００５２】
合成制約生成処理が開始されると、動作合成装置２００の処理部３０の動作合成部３１は、動作レベル記述の言語レベルの最適化を行い、最適化した動作レベル記述を、中間レベル記述記憶領域２５に記憶する（ステップＳ２０１）。なお、この処理は、第１の実施形態の動作合成装置１００の処理（図４；ステップＳ１０１）と実質的に同一な処理である。
【００５３】
例えば、図８（Ａ）に示す動作レベル記述をこのステップＳ１０１の処理対象とした場合には、図８（Ｂ）に示すように、言語レベルの最適化がなされる。この例では、動作レベル記述内のループ制御文Ｃ４が、ループの繰り返し回数分だけ展開（アンロール）された、演算処理文Ｄ４〜Ｄ７に置換される。また、Ｃ２、Ｃ５の関数の呼び出し処理は、呼び出される関数のコードを展開（インライン展開）された、演算処理文Ｄ２、Ｄ８に展開される。
【００５４】
図１０に戻り、続いて、動作合成部３１は、最適化の実現方法の種類毎に、当該実現方法を適用した箇所にＩＤを発行して、該ＩＤと、当該適用した最適化の実現方法の種類を特定する情報（最適化実現方法特定情報）とを対応づけて、言語レベル最適化実現方法記憶領域２９に格納する（ステップＳ２０２）。
【００５５】
この処理ステップＳ２０２を具体例を以下に説明する。
例えば、図８（Ａ）に示す動作レベル記述を、図８（Ｂ）に示すように言語レベル最適化した場合には、合成制約生成部３２は、ループ制御文をアンロールした演算処理文Ｄ４〜Ｄ７に、共通のＩＤ「０１」を発行し、このＩＤ「０１」と最適化実現方法特定情報「ループのアンロール（繰り返し回数４）」とを対応付けて、言語レベル最適化実現方法記憶領域２９に記憶する。また、合成制約生成部３２は、関数をインライン展開した処理Ｄ２、Ｄ８には、共通のＩＤ「０２」を発行し、このＩＤ「０２」と最適化実現方法特定情報「関数のインライン展開（呼び出し回数２）」とを対応付けて、言語レベル最適化実現方法記憶領域２９に記憶する。そして、全体としては、図９（Ｃ）に示すような情報が、言語レベル最適化実現方法記憶領域２９に記憶される。
なお、このステップＳ２０２の処理は、動作レベル記述の言語レベル最適化の処理（ステップＳ２０１）の際に、動作合成部３１が行ってもよい。
【００５６】
図９に戻り、続いて、合成制約生成部３２は、言語レベルの最適化がなされた動作レベル記述を中間レベル記述記憶領域２５から読み出して解析し、言語レベル最適化済動作レベル記述に含まれる処理を処理属性で分類する。さらに、合成制約生成部３２は、言語レベルの最適化がなされる前の動作レベル記述も動作レベル記述記憶領域２１から読み出して解析し、言語レベル最適化済の動作レベル記述内の各処理の、最適化前の動作レベル記述内での所属属性を判別する。そして、合成制約生成部３２は、さきほどの処理属性で分類した処理を所属属性でさらに分類する。そして、合成制約生成部３２は、このようにして処理属性と所属属性とで分類した分類毎に、各処理の言語レベル最適化済の動作レベル記述内での出現数を取得し、所属別処理出現数記憶領域２８に格納する（ステップＳ２０３）。
なお、このステップＳ２０３の処理は、動作レベル記述の言語レベル最適化の処理（ステップＳ２０１）の際に、動作合成部３１が行ってもよい。
また、ステップＳ２０２の処理とステップＳ２０３の処理を順序を逆に行ってもよい。
【００５７】
例えば、図８（Ｂ）に示す最適化済の動作レベル記述を、ステップＳ２０３の処理の対象とした場合を考える。この場合、演算処理文Ｄ１、Ｄ３に対応する処理は、処理種類「加算」、ビット幅「４」、および、符号「ｕｎｓｉｇｎｅｄ」の処理属性、および、所属属性は図８（Ａ）に示す最適化前の動作レベル記述でループなどの処理ブロックには属していないので「無」に分類され、出現数２が特定される。また、演算処理文Ｄ２、Ｄ８は、処理種類「減算」、ビット幅「４」、および、符号「ｕｎｓｉｇｎｅｄ」の処理属性、および、所属属性は図８（Ａ）に示す最適化前の動作レベル記述では関数呼出文Ｃ２、Ｃ５に対応するため「関数」に分類され、その出現数２が特定される。また、演算処理文Ｄ４〜Ｄ７は、処理種類「加算」、ビット幅「８」、および、符号「ｕｎｓｉｇｎｅｄ」の処理属性、および、所属属性は図８（Ａ）に示す最適化前の動作レベル記述ではループ制御文Ｃ４に対応するため「ループ」に分類され、その出現数４が特定される。そして、全体としては、図１０（Ｂ）に示すような情報が、所属別処理出現数記憶領域２８に格納される。
【００５８】
図９に戻り、続いて、合成制約生成部３２は、ステップＳ２０２で言語レベル最適化実現方法記憶領域２９に記憶した最適化実現方法特定情報と、ステップＳ２０３の処理で所属別処理出現数記憶領域２８に記憶した情報と、ライブラリ記憶領域２２に記憶されているライブラリ情報と、合成指示記憶領域２３に記憶されている合成指示情報とに基づいて、動作レベル記述の処理をライブラリ情報に登録されている回路構成要素を用いて実現するうえで、必要最低限となり、且つ、指示情報が示す最適化の種類を反映した、回路構成要素の種類と数とを合成制約情報として求め、合成制約記憶領域２４に格納する（ステップＳ２０４）。
以上で、合成制約生成処理は終了する。
【００５９】
ここで、上述した合成制約情報を求める処理（ステップＳ２０４）の具体例を、図１０に示す。
図１０（Ａ）は、ライブラリ記憶領域２２に記憶されているライブラリ情報を示した図であり、３種類の加算器、減算器が登録されている。
図１０（Ｂ）は、所属別処理出現数記憶領域２８に記憶されている情報を示した図であり、所属属性が「無」の加算処理が２個、所属属性「ループ」の加算処理が４個、所属属性「関数」の減算処理が２個の合計８つの演算処理が、図８（Ｂ）に示す動作レベル記述に含まれていることを示している。
図１０（Ｃ）は、言語レベル最適化実現方法記憶領域２９に記憶されている情報を示した図であり、言語レベル最適化により、ＩＤ「０１」で特定できる処理（図８（Ｂ）の動作記述のＤ４〜Ｄ７の処理）に繰り返し回数４回のループ展開（アンロール）がなされ、また、ＩＤ「０２」で特定できる処理（図８（Ｂ）の動作記述のＤ２、Ｄ８の処理）に呼び出し回数２回の関数のインライン展開がなされたことが示されている。
また、合成指示記憶領域２３には、動作合成処理に対する面積優先合成と遅延優先合成の優先割合を示す情報が記憶可能であり、この例では、「面積優先と遅延優先との優先度の割合を１：１になるように動作合成を行う」ことが合成指示情報記憶領域２３に記憶されている。
【００６０】
この場合、合成制約情報は、以下のようにして求められる。まず、ＩＤ「０１」の処理について着目すると、この処理は、図１０（Ｂ）、図１０（Ｃ）より繰り返し回数は４回で、ループアンロールにより展開された処理は４つであることが分かる。従って、この４つの処理全てに演算器（加算器）を割り当てる、即ち、演算器４個の制約を生成すると、４つの処理全てが同時に各演算器で実行できるため、最大の並列度が達成できるが、面積は演算器４個分の大きいものとなってしまう。一方、この４つの処理に対して、処理を実現可能な最小の構成である演算器１個を制約として生成すると、面積は演算器１個分の最小の面積となるが、４つの処理を１つの演算器で順次実行していく必要があるため、先ほどの４つの演算器を制約とした場合と比べて、４倍の遅延時間となる。ここで、合成指示情報は、「面積優先と遅延優先との優先度の割合を１：１になるように動作合成を行う」ことを指示しているので、この場合、上述した遅延が最小になる状況と、面積が最小になる状況との中間をとり、この４つの処理を実現するのに、演算器（加算器）２個が、合成制約として求まる。
同様に、ＩＤ「０２」の処理について着目すると、この処理は、図１０（Ｂ）、図１０（Ｃ）より呼び出し回数は２回で、インライン展開された処理は２つであることが分かるため、合成指示情報が示す「面積優先と遅延優先との優先度の割合を１：１になるように動作合成を行う」ことを達成するために、この処理を実現するのに、演算器（減算器）１個が、合成制約として求まる。
また、所属属性「無」の処理に対しても、該当の出現数は、図１０（Ｂ）より２個であるため、合成指示情報が示す「面積優先と遅延優先との優先度の割合を１：１になるように動作合成を行う」ことを達成するために、この処理を実現するのに、演算器（加算器）１個が、合成制約として求まる。
以上、まとめると、図１０（Ｄ）に示すような合成制約情報が最終的に作成され、合成制約記憶領域２４に記憶されることとなる。
【００６１】
このように、第２の実施形態に係る動作合成装置１００は、処理の所属属性と言語レベル最適化実現方法とを考慮に入れて、合成制約を生成する。従って、この合成制約を利用して動作合成を行うことにより、回路の設計効率のよりよいＲＴＬ記述を作成することができる。
【００６２】
なお、本発明は、上記実施の形態で示したものに限定されず、様々な変形および応用が可能である。
【００６３】
例えば、本実施形態では、回路構成要素の演算器の処理属性として、「処理種類」、「ビット幅」、「符号」の３つを示したが、これに限ることはなく、ＲＴＬ記述の作成に影響を与える他の属性（例えば、演算器の面積、遅延等）がある場合には、その属性も用いて演算器を分類して、出現数を取得してもよい。
【００６４】
また、本実施形態では、回路構成要素の演算器を例にして、合成制約の生成を説明したが、これに限らず、回路構成要素としては、レジスタ等の記憶要素や入出力端子等にも、本発明を同様に適用可能である。また、その場合には、その回路構成要素に対応した処理属性（例えばレジスタであれば構成ビット数などの処理属性）で、回路構成要素を分類して、その出現数を取得する必要がある。
【００６５】
また、本実施形態では、動作レベル記述の具体例として、図２、図８等に、ＳｙｓｔｅｍＣで記述された動作レベル記述を示したが、これに限らず、Ｃ言語等のプログラミング言語や、他のＨＤＬ（Hardware Description Language）等を用いた動作レベル記述にも、本発明は適用可能である。
【００６６】
また、本発明の動作合成装置は、専用のハードウェアに限られるものではなく、通常のコンピュータによっても実現することができる。
具体的には、上記実施の形態では、動作合成装置のプログラムが、メモリ等に予め記憶されているものとして説明した。しかし、上述の処理動作を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto-Optical disk）等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータにインストールすることにより、上述の処理を実行するプログラムプロファイリング装置を構成してもよい。
【００６７】
また、プログラムをインターネット等の通信ネットワーク上のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するようにしてもよい。さらに、通信ネットワークを介してプログラムを転送しながら起動実行することによっても、上述の処理を達成することができる。
また、上述の機能を、ＯＳ（Operating System）が分担又はＯＳとアプリケーションの協働により実現する場合等には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
【図面の簡単な説明】
【００６８】
【図１】第1の実施形態に係る動作合成装置の構成を示すブロック図である。
【図２】第1の実施形態において、動作レベル記述を言語最適化する例を示し図である。
【図３】第1の実施形態における、合成制約情報の作成の処理を具体的に説明するための図である。
【図４】第1の実施形態における、合成制約生成処理を説明するためのフローチャートである。
【図５】第1の実施形態における、合成指示情報も用いる場合の、合成制約情報の作成の処理を具体的に説明するための図である。
【図６】演算器の種類によって、面積と遅延性に違いがあることを説明するための図である。
【図７】第２の実施形態に係る動作合成装置の構成を示すブロック図である。
【図８】第２の実施形態において、動作レベル記述を言語最適化する例を示し図である。
【図９】第２の実施形態における、合成制約生成処理を説明するためのフローチャートである。
【図１０】第２の実施形態における、合成制約情報の作成の処理を具体的に説明するための図である。
【符号の説明】
【００６９】
１０  入力部
２０  記憶部
２１  動作レベル記述記憶領域
２２  ライブラリ記憶領域
２３  合成指示記憶領域
２４  合成制約記憶領域
２５  中間レベル記述記憶領域
２６  処理出現数記憶領域
２７  ＲＴレベル記述記憶領域
３０  処理部
３１  動作合成部
３２  合成制約生成部
４０  出力部
１００  動作合成装置
【図１】
0005157534.tif 000002
【図２】
0005157534.tif 000003
【図３】
0005157534.tif 000004
【図４】
0005157534.tif 000005
【図５】
0005157534.tif 000006
【図６】
0005157534.tif 000007
【図７】
0005157534.tif 000008
【図８】
0005157534.tif 000009
【図９】
0005157534.tif 000010
【図１０】
0005157534.tif 000011