(57)【要約】［課題］パラメータをパラメータのままＲＴ記述に残すごとができ、かつ適切な最適化が可能な動作合成装置、動作合成方法、及びプログラムを提供する。［解決手段］抽象度の高い回路仕様が記述された動作レベル記述を入力する入力装置と、動作合成用の内部表現に変換し、この動作レベル記述に含まれるパラメータを複数に分類し、この分類に応じてパラメータを変数または定数として扱うデータ処理装置と、動作レベル記述及び各パラメータを記憶する記憶装置と、ＲＴ記述を出力する出力装置と、を備えた。
2010110194.tif 000002
【特許請求の範囲】
【請求項１】
抽象度の高い回路仕様が記述された動作レベル記述を入力する入力装置と、
前記動作レベル記述を動作合成用の内部表現に変換し、前記動作レベル記述に含まれるパラメータを複数に分類し、該分類の結果に応じ、前記パラメータの値を定数または変数として扱うデータ処理装置と、
前記動作レベル記述及び各パラメータを記憶する記憶装置と、
前記ＲＴ記述を出力する出力装置と、
を備えたことを特徴とする動作合成装置。
【請求項２】
前記データ処理装置は、分類されたパラメータごとに個別に内部構造の正規化処理を行い、内部構造のループ及び関数を正規化し、ＣＤＦＧに変換し、生成されたＣＤＦＧに対して、スケジューリング手段を適用し、バインディング処理を行い、ＲＴレベル記述を生成すると共に、前記分類により、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータを最大値の定数値に定数化し、前記ＲＴレベル記述の前に定数化したパラメータを変数に戻すパラメータ変数化処理を行うことを特徴とする請求項１記載の動作合成装置。
【請求項３】
前記データ処理装置は、分類されたパラメータごとに個別に内部構造の正規化処理を行い、内部構造のループ及び関数を正規化し、ＣＤＦＧに変換し、生成されたＣＤＦＧに対して、スケジューリング手段を適用し、バインディング処理を行い、ＲＴレベル記述を生成すると共に、元々のパラメータ名を記録するように設定し、パラメータの取り得る値で特化するものとして合成することになったパラメータ使用箇所について、パラメータを各々の値に特化し、パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行うことを特徴とする請求項１記載の動作合成装置。
【請求項４】
前記データ処理装置は、パラメータごとに個別に内部構造の正規化処理を行い、内部構造のループ及び関数を正規化し、ＣＤＦＧに変換し、生成されたＣＤＦＧに対して、スケジューリング手段を適用し、バインディング処理を行い、ＲＴレベル記述を生成すると共に、分類されたパラメータのうち、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータを最大値の定数値に定数化すると共に、元々のパラメータ名を記録するように設定し、パラメータの取り得る値で特化するものとして合成することになったパラメータ使用箇所について、パラメータを各々の値に特化し、パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行い、定数化したパラメータを変数に戻すパラメータ変数化処理を行うことを特徴とする請求項１記載の動作合成装置。
【請求項５】
抽象度の高い回路仕様が記述された動作レベル記述を言語解析手段が、言語解析処理により、動作合成用の内部表現に変換し、前記動作レベル記述に含まれるパラメータを複数に分類し、
パラメータ定数化手段が、分類されたパラメータのうち、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータ定数化処理により、パラメータを最大値の定数値に置き換えると共に、元々のパラメータ名を記録するように設定し、
パラメータ特化手段が、パラメータの取り得る値で特化するものとして合成することになったパラメータ使用箇所について、パラメータ特化処理により、パラメータを各々の値に特化し、
内部構造正規化手段が、特化したパラメータごとに個別に内部構造の正規化処理を行い、内部構造のループ及び関数を正規化し、
ＣＤＦＧ生成手段が、ＣＤＦＧ生成処理によりＣＤＦＧに変換し、
バインディング手段が、生成されたＣＤＦＧに対して、スケジューリング手段を適用し、バインディング処理を行ない、
パラメータマージ手段が、パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行ない、
パラメータ変数化手段が、定数化したパラメータを変数に戻すパラメータ変数化を行ない、
ＲＴ記述生成手段が、ＲＴレベル記述生成処理により、ＲＴレベル記述を生成することを特徴とする動作合成方法。
【請求項６】
前記複数に分類するに際して、パラメータ分類処理により、パラメータは、変数のまま扱うもの、パラメータの取り得る値の最大値とみなしてパラメータの値を合成するもの、パラメータの取り得る値で特化するもの、の３種類に分類することを特徴とする請求項５記載の動作合成方法。
【請求項７】
前記パラメータ分類処理は複数のプロセッサで時間的に並列に実行するか、または、単一のプロセッサで順次実行することを特徴とする請求項６記載の動作合成方法。
【請求項８】
前記取り得る値の最大値とみなしてパラメータの値を合成したパラメータについては、もとのパラメータに復帰させるパラメータ変数化処理を行うことを特徴とする請求項６記載の動作合成方法。
【請求項９】
コンピュータを、抽象度の高い回路仕様が記述された動作レベル記述を言語解析処理により、動作合成用の内部表現に変換し、前記動作レベル記述に含まれるパラメータを複数に分類する手段、分類されたパラメータのうち、パラメータの取り得る値の最大値とみなしてパラメータの値を合成することになったパラメータ使用箇所について、パラメータ定数化処理により、パラメータを最大値の定数値に置き換えると共に、元々のパラメータ名を記録するように設定する手段、パラメータの取り得る値で特化するものとしてパラメータの値を合成することになったパラメータ使用箇所について、パラメータ特化処理により、パラメータを各々の値に特化する手段、特化したパラメータごとに個別に内部構造の正規化処理を行い、内部構造のループ及び関数を正規化する手段、ＣＤＦＧ生成処理によりＣＤＦＧに変換し、生成されたＣＤＦＧに対して、スケジューリング手段を適用し、バインディング処理を行う手段、パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行う手段、定数化したパラメータを変数に戻すパラメータ変数化を行う手段、ＲＴレベル記述生成処理により、ＲＴレベル記述を生成する手段、として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作合成装置、動作合成方法、及びプログラムに関する。
【背景技術】
【０００２】
動作合成システムは、集積回路の設計に使用される。
関連する動作合成システムは、言語解析手段（装置）と、内部構造正規化手段（装置）と、ＣＤＦＧ生成手段（装置）と、スケジューリング手段（装置）と、バインディング手段（装置）と、ＲＴ記述生成手段（装置）と、で構成されている。
ここで、ＣＤＦＧは、Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈの略であり、データ構造の一種である。また、ＲＴは、Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒの略で回路記述の一種である。また、スケジューリングとは、各処理を行うサイクルを決めることである。また、バインディングとは、各処理の演算やメモリアクセスに関し、実際にどの演算器やメモリを使用するかを決めることである。
このような構成を有する動作合成システムは次のように動作する。
この動作合成システムは、このシステムの入力装置から与えられた動作記述を解析し、関数・ループなどの構造をＣＤＦＧ生成のために正規化する。さらに、その動作合成システムは、正規化後にＣＤＦＧを生成してから、スケジューリング、バインディングと進み、必要に応じてこれらの工程を複数回繰り返した上で、ＲＴ記述を生成する。
この種の動作合成システムでは、最終的なＬＳＩ回路上で定数として扱われるようなパラメータに関しては、入力装置から動作合成システムへの入力段階で定数パラメータとみなし、動作合成システム側はそのパラメータの値を定数として最適化するのが通常であった。逆に、ユーザが動作合成完了後まで、パラメータのまま残したいと所望するパラメータがその中に含まれる場合には、すべてのパラメータを変数として扱うほかはなく、その結果、最適化が著しく抑制されていた。尚、ＬＳＩは、Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎの略であり、大規模集積回路を意味する。
この種の動作合成システムに関連する技術が特開２００１−３５０８０９号公報（以下、特許公報１という）、特開２００６−０７９２２６号公報（以下、特許文献２という）に開示されている。特許文献１に記載の発明は、自己同期型のパイプライン制御を採用したデータ駆動型情報処理装置の設計方法に関する発明である。具体的に説明するとこの発明は、設計上のパラメータを一般的に記述した、ライブラリファイルを準備するステップと、設計上のパラメータの各々についてパラメータ値を設定するステップと、レジスタトランスファレベル設計記述を作成するステップとを含む方法に関する発明である。
特許文献１に記載の発明によれば、設計者は、設計仕様に適合したレジスタトランスファレベル設計記述を自動的に作成でき、設計期間を短縮することができるのに加え、多種多様な仕様にも容易に対処して設計を行なうことができるとしている。
特許文献２に記載の発明は、ハードウェア記述言語合成ツール及びそれを利用した集積回路の設計方法に関する発明である。具体的に説明するとこの発明は、プログラムを解析する手順と、命令コードを、プロセッサソフトウエアファイルに変換する手順と、プロセッサハードウエアファイルとプロセッサソフトウエアファイルとを出力する手順とをコンピュータに実行させるというコンピュータプログラムに関する発明である。
特許文献２に記載の発明によれば、アセンブリレベル言語プログラムの命令コードはハードウエアコンポーネントに対応しているので、アセンブリレベル言語プログラムであれば、１対１で、ハードウェア記述言語で記述したハードウェア設計ファイルに置き換えることができるので、利用者にとって実用的であるとしている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述した、本発明に関連する技術では、動作合成で入力装置がパラメータを動作合成システムに与えたとき、このパラメータをすべて定数として扱うか、またはすべて変数として扱う、以外に選択肢はない。したがって、両方の扱いを必要とする場合には、上述の関連技術は、最適化を促進することができなかった、という問題がある。
その理由は、上述した動作合成では、内部で扱う値は定数または変数のみに限定されていたため、パラメータだけを特別に扱う手法が発明されていなかったためである。
そこで、本発明の目的は、パラメータをパラメータのままＲＴ記述に残すことができ、かつ適切な最適化が可能な動作合成装置、動作合成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００４】
本発明の装置は、抽象度の高い回路仕様が記述された動作レベル記述を入力する入力装置と、この動作レベル記述を動作合成用の内部表現に変換し、この動作レベル記述に含まれているパラメータを複数に分類し、該分類の結果に応じ、前記パラメータの値を定数または変数として扱うデータ処理装置と、
前記動作レベル記述及び各パラメータを記憶する記憶装置と、
前記ＲＴ記述を出力する出力装置と、を備えたことを特徴とする。
ここで、内部表現とは、動作レベルの回路記述を解析した結果を抽象構文木（ａｂｓｔｒａｃｔ  ｓｙｎｔａｘ  ｔｒｅｅ：ＡＳＴ）やＣＤＦＧと呼ばれるデータ構造で保存する際の表現を示している。
本発明の方法は、利用者が準備した抽象度の高い回路仕様が記述された動作レベル記述を、言語解析手段が、前記動作レベル記述を言語解析処理により、動作合成用の内部表現に変換し、パラメータ分類手段が、この動作レベル記述に含まれているパラメータを複数に分類し、パラメータ定数化手段が、分類されたパラメータのうち、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータ定数化処理により、パラメータを最大値の定数値に置き換えると共に、元々のパラメータ名が記録されるように設定し、パラメータ特化手段が、パラメータの取り得る値で特化するものとして合成することになったパラメータ使用箇所について、パラメータ特化処理により、パラメータを各々の値に特化し、内部構造正規化手段が、特化したパラメータごとに個別に内部構造の正規化処理を行い、内部構造のループ及び関数を正規化し、ＣＤＦＧ生成手段が、ＣＤＦＧ生成処理によりＣＤＦＧに変換し、バインディング手段が生成されたＣＤＦＧに対して、スケジューリング手段を適用し、バインディング処理を行ない、パラメータマージ手段が、パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行ない、パラメータ変数化手段が、定数化したパラメータを変数に戻すパラメータ変数化を行ない、ＲＴ記述生成手段が、ＲＴレベル記述生成処理により、ＲＴレベル記述を生成することを特徴とする。
本発明のプログラムは、コンピュータを、利用者が準備した抽象度の高い回路仕様が記述された動作レベル記述を言語解析処理により、動作合成用の内部表現に変換し、この動作レベル記述に含まれているパラメータを複数に分類する手段、分類されたパラメータのうち、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータ定数化処理により、パラメータを最大値の定数値に置き換えると共に、元々のパラメータ名が記録されるように設定する手段、パラメータの取り得る値で特化するものとして合成することになったパラメータ使用箇所について、パラメータ特化処理により、パラメータを各々の値に特化する手段、特化したパラメータごとに個別に内部構造の正規化処理を行い、内部構造のループ及び関数を正規化する手段、ＣＤＦＧ生成処理によりＣＤＦＧに変換し、生成されたＣＤＦＧに対して、スケジューリング手段を適用し、バインディング処理を行う手段、パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行う手段、定数化したパラメータを変数に戻すパラメータ変数化を行う手段、ＲＴレベル記述生成処理により、ＲＴレベル記述を生成する手段、として機能させることを特徴とする。
【発明の効果】
【０００５】
本発明によれば、パラメータをパラメータのままＲＴ記述に残すことができ、かつ適切な最適化が可能な動作合成装置、動作合成方法、及びプログラムの提供を実現することができる。
【図面の簡単な説明】
【０００６】
【図１】本発明に係る動作合成装置の一実施の形態を示すブロック図である。
【図２】図１に示した動作合成装置の動作を説明するためのフローチャートの一例である。
【図３】本発明に係る動作合成装置の他の実施の形態を示すブロック図である。
【図４】本発明に係る動作合成装置の他の実施の形態を示すブロック図である。
【図５】本発明に係る動作合成装置の他の実施の形態を示すブロック図である。
【図６】図３に示した動作合成装置の動作を説明するためのフローチャートの一例である。
【図７】図４に示した動作合成装置の動作を説明するためのフローチャートの一例である。
【図８】図５に示した動作合成装置の動作を説明するためのフローチャートの一例である。
【発明を実施するための形態】
【０００７】
＜構  成＞
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
図１は、本発明に係る動作合成装置の一実施の形態を示すブロック図である。
図１を参照すると、本動作合成装置は、プログラム制御により動作するデータ処理装置２と、入力装置１と、記憶装置３と、出力装置４と、を備えている。
入力装置１としては、例えば、キーボード、マウス、ポインティングデバイスが挙げられる。
データ処理装置２は、言語解析部２ａ、パラメータ分類部２ｂ、内部構造正規化部２ｅ、パラメータ定数化部２ｃ、パラメータ特化部２ｄ、ＣＤＦＧ生成部２ｆ、スケジューリング部２ｇ、バインディング部２ｈ、パラメータマージ部２ｉ、パラメータ変数化部２ｊ、及びＲＴ記述生成部２ｋを含む。
記憶装置３としては、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ：ハードディスク）やフラッシュメモリが挙げられる。
出力装置４としては、例えば、液晶表示装置、プラズマディスプレイ、プリンタ、プロッタ等が挙げられる。
これら言語解析部２ａ〜ＲＴ記述生成部２ｋは、ソフトウェアで構成されており、それぞれつぎのように動作する。
言語解析部２ａは、入力装置１により与えられたパラメータを含んだ動作レベル記述を解析し、内部表現に変換する。ここで言語とは、たとえば、設計パラメータの動作レベルを記述したソフトウェア言語（動作レベル記述とも言う）である。パラメータは、たとえば、定数または変数として扱われる、ＬＳＩ設計上のパラメータである。
パラメータ分類部２ｂは、言語解析部２ａにより与えられた動作記述の内部表現、パラメータ、およびユーザによるパラメータの処理方法指定を考慮して、パラメータを、変数のまま扱うもの、パラメータの取り得る値の最大値とみなして合成するもの、パラメータの取り得る値で特化するもの、の３種類に分類する。
パラメータ定数化部２ｃは、パラメータ分類部２ｂにより、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所を、最大値の定数値に置き換えると共に、元々のパラメータ名が記録されるように設定する。
パラメータ特化部２ｄでは、パラメータ分類部２ｂにより、パラメータの取り得る値で特化すると決められたパラメータ使用箇所について、実際に、複数の取り得る値で特化した内部表現（または内部構造とも言う）を各々作成する。
内部構造正規化部２ｅは、パラメータ特化部２ｄでパラメータを特化した各々の内部表現のそれぞれに対し、関数やループなどに相当する部分を適宜展開する処理などによって、正規化する。
ＣＤＦＧ生成部２ｆは、正規化された各々の内部表現をＣＤＦＧ（コントロールデータフローグラフ）に変換する。
スケジューリング部２ｇは、ＣＤＦＧ生成部２ｆにより生成された各々のＣＤＦＧ上で、リソースや入出力をスケジューリングする。
バインディング部２ｈは、スケジューリング部２ｇを繰り返して実現されたスケジューリング結果に基づいて、演算器などのリソースを割り当てる。
パラメータマージ部２ｉは、パラメータ特化部２ｄでパラメータの取り得る値ごとに特化して、それぞれのパラメータ値に基づいてバインディング部２ｈでバインディングまで実施されたものをパラメータの値で分岐するようにマージする。
パラメータ変数化部２ｊは，パラメータ定数化部２ｃで最大値の定数に変換したパラメータを元のパラメータに復元する。さらにパラメータ変数化部２ｊは、その結果に基づき、ＲＴ記述生成部２ｋでＲＴ記述を生成し、出力装置４に出力する。
各々の処理手段は、必要に応じてシステムの記憶装置３に属するシステム内部表現記憶部３ａに対して、変換結果の書き出しおよび読み込みを行う。
＜動  作＞
次に、図２を参照して本実施形態の全体の動作について詳細に説明する。
図２は、図１に示した動作合成装置の動作を説明するためのフローチャートの一例である。
まず、利用者はＣ言語などの抽象度の高い回路仕様が記述されている動作レベル記述を用意する（図２のブロックＡ１）。この動作記述は、本発明の実施の形態の対象となる、パラメータを含む記述であるものとする。
次に言語解析部２ａはＡ１の動作レベル記述を言語解析処理（図２のブロックＡ２）により、動作合成用の内部表現に変換する。変換された内部表現はＡＳＴ（抽象構文木）などのデータ構造で表現される。
次に、パラメータ分類部２ｂはパラメータ分類処理（図２のブロックＡ３）により、動作レベル記述におけるパラメータを、変数のまま扱うもの、パラメータの取り得る値の最大値とみなして合成するもの、パラメータの取り得る値で特化するもの、の３種類に分類する。分類されたパラメータのうち、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータ定数化部２ｃはパラメータ定数化処理（図２のブロックＡ４）を実行する。すなわち、パラメータ定数化部２ｃは、パラメータを最大値の定数値に置き換えると共に、元々のパラメータ名を記録するように設定する。さらに、パラメータの取り得る値で特化するものとして合成することになったパラメータの使用箇所について、パラメータ特化部２ｄは、パラメータ特化処理（図２のブロックＡ５）を行う。すなわち、パラメータ特化部２ｄは、それぞれのパラメータの使用箇所に対し、パラメータを実際に複数の取り得る値で特化した、内部表現（内部構造）を生成する。以降は、特化したパラメータごとに、個別に、内部構造正規化部２ｅ、ＣＤＦＧ生成部２ｆ、スケジューリング部２ｇ、バインディング部２ｈが、それぞれの処理を実行する。この処理の実行は、複数のプロセッサで時間的に並列に実行することも、単一のプロセッサで順次実行することも可能である。これら内部構造正規化部２ｅ、ＣＤＦＧ生成部２ｆ、スケジューリング部２ｇ、バインディング部２ｈにおける処理をこの順番に説明する。
内部構造正規化部２ｅは、パラメータ特化部２ｄで生成された内部構造に対し正規化処理（図２のブロックＡ６）を行い、内部構造のループや関数などを正規化する。
次に、ＣＤＦＧ生成部２ｆは、ＣＤＦＧ生成処理（図２のブロックＡ７）により、正規化された内部構造をＣＤＦＧに変換する。次に、生成されたＣＤＦＧに対して、スケジューリング部２ｇがスケジューリング（図２のブロックＡ８）し、バインディング部２ｈが、バインディング処理（図２のブロックＡ９）を行う。すなわち、バインディング部２ｈは、スケジューリング部２ｇでのスケジューリング結果に基づいて、それぞれ正規化された内部構造に対して演算器などのリソースを割り当てる。
ひきつづいて、パラメータマージ部２ｉが、パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて、パラメータの値で分岐させるパラメータマージ処理（図２のブロックＡ１０）を行う。
パラメータ定数化部２ｃでのパラメータ定数化処理により、パラメータを最大値により定数化したものについて、パラメータ変数化部２ｊは、もとのパラメータに復帰させるパラメータ変数化処理（図２のブロックＡ１１）を行う。
最後に、ＲＴ記述生成部２ｋはＲＴレベル記述生成処理（図２のブロックＡ１２）により、ＲＴレベル記述を生成する（図２のブロックＡ１３）。
＜実施の形態の効果＞
次に、本実施の形態の効果について説明する。
本実施の形態では、パラメータを変数、最大値による定数、特化した定数に分類し、変換することにより、動作合成システムにおける主処理である、スケジューリング・バインディングなどへのパラメータの処理の違いによる影響を最小限に抑えつつ、本発明の目的である、回路性能の低下を抑制しながら、動作記述におけるパラメータをＲＴレベル記述に反映する、という目的を達成できる効果がある。その理由は、パラメータ分類部が動作レベル記述に含まれるパラメータを複数に分類し、この分類の結果に応じて、データ処理装置がＲＴ記述を出力するからである。
なお、本発明の実施の形態では、パラメータに関する処理を、内部構造の正規化の前段と、バインディング処理の後段に置くことで実現している。しかし、本発明の実施の形態は、動作合成の実現方法に応じて、言語解析手段、内部構造正規化手段、ＣＤＦＧ生成手段、スケジューリング手段など別の手段の一部としてパラメータに関する処理を実現することも可能である。また、本発明の実施の形態は、上記の複数の手段の一部として、複数の処理位置でパラメータに関する処理を実現することも可能である。
＜プログラム及び記憶媒体＞
以上で説明した本発明にかかる動作合成装置は、コンピュータで処理を実行させるプログラムによって実現されている。コンピュータとしては、例えばパーソナルコンピュータやワークステーションなどの汎用的なものが挙げられるが、本発明はこれに限定されるものではない。一例として、上述した実施形態に係る動作合成装置を、ソフトウェアプログラムをコンピュータにおいて実行することによって実現する場合について以下に説明する。
コンピュータを、
（１）利用者が準備した、抽象度の高い回路仕様が記述された、動作レベル記述を言語解析処理により、動作合成用の内部表現に変換し、複数に分類する手段、
（２）分類されたパラメータのうち、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータ定数化処理により、パラメータを最大値の定数値に置き換えると共に、元々のパラメータ名を記録するように設定する手段、
（３）パラメータの取り得る値で特化するものとして合成することになったパラメータ使用箇所について、パラメータ特化処理により、パラメータを各々の値に特化する手段、
（４）特化したパラメータごとに個別に内部構造の正規化処理を行い、内部構造のループ及び関数を正規化する手段、
（５）ＣＤＦＧ生成処理によりＣＤＦＧに変換し、生成されたＣＤＦＧに対して、スケジューリング手段を適用し、バインディング処理を行う手段、
（６）パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行う手段、
（７）定数化したパラメータを変数に戻すパラメータ変数化を行う手段、
（８）ＲＴレベル記述生成処理により、ＲＴレベル記述を生成する手段、
として機能させるためのプログラムが挙げられる。
これにより、プログラムが実行可能なコンピュータ環境さえあれば、どこにおいても本発明にかかる動作合成装置を実現することができる。
このようなプログラムは、コンピュータに読み取り可能な記憶媒体に記憶されていてもよい。
ここで、記憶媒体としては、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（ＣＤ−Ｒｅｃｏｒｄａｂｌｅ）などのコンピュータで読み取り可能な記憶媒体、フラッシュメモリ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（強誘電体メモリ）等の半導体メモリやＨＤＤが挙げられる。
上述した実施の形態では、パラメータが、最大値とみなして合成するものと、パラメータの取り得る値ごとに特化して実行するものとに分類される場合について説明した。具体的には、データ処理装置は、分類されたパラメータのうち、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータを最大値の定数値に定数化している。  この時、データ処理装置は元々のパラメータ名を記録するように設定している。  データ処理装置は、パラメータの取り得る値で特化するものとして合成することになったパラメータ使用箇所について、パラメータを各々の値に特化し、パラメータの値ごとに特化して実行している。データ処理装置は、これらの、特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行なっている。最後に、データ処理装置は、定数化したパラメータを変数に戻すパラメータ変数化処理を行なっている。
上述した実施の形態は、本発明の好適な実施の形態の一例を示すものであり、本発明はそれに限定されることなく、その要旨を逸脱しない範囲内において、種々変形実施が可能である。以下に他の実施形態について説明する。
図３は、本発明に係る動作合成装置の他の実施の形態を示すブロック図である。
図４は、本発明に係る動作合成装置の他の実施の形態を示すブロック図である。
図５は、本発明に係る動作合成装置の他の実施の形態を示すブロック図である。
図６は、図３に示した動作合成装置の動作を説明するためのフローチャートの一例である。
図７は、図４示した動作合成装置の動作を説明するためのフローチャートの一例である。
図８は、図５に示した動作合成装置の動作を説明するためのフローチャートの一例である。
本発明は、これらの図３〜８にて説明される以下の（ａ）〜（ｃ）の実施形態のいずれであってもよい。
（ａ）分類されたパラメータのうち、パラメータの取り得る値の最大値とみなして合成することになったパラメータ使用箇所について、パラメータを最大値の定数値に定数化し、定数化したパラメータを変数に戻すパラメータ変数化処理を行う（図４、図７）、
（ｂ）元々のパラメータ名を記録するように設定し、パラメータの取り得る値で特化するものとして合成することになったパラメータ使用箇所について、パラメータを各々の値に特化し、パラメータの値ごとに特化して実行されたバインディング処理結果をまとめて分岐させるパラメータマージ処理を行う（図３、図６）、
（ｃ）（ａ）及び（ｂ）のいずれも行わない（図５、図８）。
次に、具体的な例を用いて本発明を実施するための最良の形態の動作を説明する。
以下の記述例１〜１７では、動作記述はＳｙｓｔｅｍＣ言語による記法に準じ、ＲＴ記述はＶｅｒｉｌｏｇ  ＨＤＬの記法に準ずるものとする。
ここで、設計者は、＃ｐｒａｇｍａ  ＰＡＲＡＭＥＴＥＲ（Ｎ）
により、ＰＡＲＡＭＥＴＥＲの引数（この場合Ｎ）がパラメータであることを指定できるものとし、＃ｐｒａｇｍａ  ＰＡＲＡＭＥＴＥＲ（Ｎ；０−３，５，７−８，１０）などのように値の取り得る範囲および離散値を指定できるものとする。この場合、０，１，２，３，５，７，８，１０が取り得るパラメータの値となる。  パラメータで指定した値は、設計対象の回路において、比較や代入、演算で使われる他、主に配列のワード長（要素数）や変数のビット幅、ループの実行回数などに使われる。
記述例１は、本発明の実施の形態の動作合成装置の入力装置１に入力される、配列のワード長にパラメータを用いた場合の動作記述の一例である。
記述例１
2010110194.tif 000003
データ処理装置２が、記述例１に示したパラメータを変数として扱って合成した場合、ＲＴ記述生成部２ｋは、最終的なＶｅｒｉｌｏｇ  ＨＤＬとして、記述例２のように、Ｎをｐａｒａｍｅｔｅｒ（パラメータ）とした合成結果を発生する。
記述例２
2010110194.tif 000004
2010110194.tif 000005
記述例２は、記述例１に示した動作合成装置による変換結果例の一つである。
また、データ処理装置２が記述例１に示したパラメータを、パラメータの範囲での最大値としてみなして合成した場合、Ｎ＝８として扱う。したがって、パラメータ定数化部２ｃは記述例１を記述例３のように設定し、最終的にパラメータ変数化部２ｊはＶｅｒｉｌｏｇ  ＨＤＬで（は）、８をＮに戻す。この結果、ＲＴ記述生成部２ｋは記述例４を発生する。
記述例３
2010110194.tif 000006
記述例４
2010110194.tif 000007
記述例３は、図１に示した動作合成装置による変換途中例の一つであり、記述例４は、図１に示した動作合成装置による変換結果例の一つである。
パラメータの取り得る値で特化した場合、パラメータ特化部２ｄは、記述例１を記述例５のような３種類のパターンとみなし、データ処理装置２がこの３種類のパターンのそれぞれを合成することになる。
記述例５
2010110194.tif 000008
記述例５は、図１に示した動作合成装置による変換途中例の一つである。
パラメータマージ部２ｉが、パラメータをマージした後、ＲＴ記述生成部２ｋが最終的なＶｅｒｉｌｏｇ  ＨＤＬとして、記述例６に示すようなＲＴ記述を発生する。
記述例６
2010110194.tif 000009
記述例６では、Ｎの値に応じて、ｐａｒａｍｅｔｅｒではなく‘ｄｅｆｉｎｅする値を変えることになる。記述例６は、図１に示した動作合成装置による変換結果例の一つである。
記述例７は、本発明の実施の形態の動作合成装置の入力装置１に入力される、変数のビット幅にパラメータを用いた場合の動作記述の一例である。
記述例７
2010110194.tif 000010
すなわち、記述例７は、図１に示した動作合成装置の入力となる動作記述の一例である。データ処理装置２が、記述例７に示したパラメータを変数として扱って合成した場合、ＲＴ記述生成部２ｋは、最終的なＶｅｒｉｌｏｇＨＤＬとして、記述例８のように、Ｎをｐａｒａｍｅｔｅｒとした合成結果となる。
記述例８
2010110194.tif 000011
2010110194.tif 000012
記述例８は、図１に示した動作合成装置による変換結果例の一つである。
また、記述例７の加算器ＩＮＳＴ＿ＡＤＤは、Ｎの値を書き換えることによってビット幅ＢＩＴＷがこの値で置き換えられる。このように、ｐａｒａｍｅｔｅｒでビット幅を調整可能な加算器とすることにより、パラメータごとに効率的な回路を生成可能となる。
また、データ処理装置２が記述例７に示したパラメータを、パラメータの範囲での最大値としてみなして合成した場合、Ｎ＝８として扱うため、パラメータ定数化部２ｃが記述例７を記述例９のようにみなし、最終的にパラメータ変数化部２ｉがＶｅｒｉｌｏｇ  ＨＤＬで、８をＮに戻して、ＲＴ記述生成部２ｋは記述例１０を発生する。
記述例９
2010110194.tif 000013
記述例１０
2010110194.tif 000014
2010110194.tif 000015
記述例９は、図１に示した動作合成装置による変換途中例の一つであり、
記述例１０は、図１に示した動作合成装置による変換結果例の一つである。
この場合、８がパラメータであったという情報を合成中にどこまで伝播させるかにより、Ｎの影響を受ける範囲が変わることになる。
記述例１０では、変数のビット幅そのものだけをＮでの制御可能範囲とした例であるため、加算器のビット幅はＮの最大値８に依存したものになっている。
また、パラメータの取り得る値で特化した場合、パラメータ特化部２ｄは、記述例７を記述例１１のように３種類のパターンとみなし、データ処理装置がこの３種類のパターンのそれぞれを合成することになる。
記述例１１
2010110194.tif 000016
2010110194.tif 000017
記述例１１は、図１に示した動作合成装置による変換途中例の一つである。
パラメータマージ部２ｉが、パラメータをマージした後、ＲＴ記述生成部２ｋが最終的なＶｅｒｉｌｏｇ  ＨＤＬとして（では）、記述例１２のようなＲＴ記述を発生する。
記述例１２
2010110194.tif 000018
2010110194.tif 000019
2010110194.tif 000020
記述例１２は、図１に示した動作合成装置による変換結果例の一つである。記述例１２において、Ｎの値に応じて特化して合成した結果のうち、同じ部分を一共有化して出力しているが、共有化は必須ではないため、全文をばらばらに出して、‘ｉｆｄｅｆで切り替えることも可能である。
記述例１３は、本発明の動作合成装置の入力装置に入力される、ループの実行回数にパラメータを用いた場合の動作記述の一例である。
記述例１３
2010110194.tif 000021
データ処理装置２が、記述例１３に示したパラメータを変数として扱って合成した場合、記述例１４のように、ループの実行回数の取り得る値ごとに条件を付加してループを展開することができ、ＲＴ記述生成部２ｋは、最終的なＶｅｒｉｌｏｇ  ＨＤＬとして、記述例１５のように、Ｎをｐａｒａｍｅｔｅｒとした合成結果を発生する。
記述例１４
2010110194.tif 000022
記述例１３は、図１に示した動作合成装置の入力となる動作記述の一例であり、記述例１４は、図１に示した動作合成装置による変換途中例の一つである。記述例１５は、図１に示した動作合成装置による変換結果例の一つである。
記述例１５
2010110194.tif 000023
一方、パラメータの範囲での最大値とした合成は、ループの実行回数など制御論理にパラメータが関わるときは不可能であるためこの手法を選択することはできない。パラメータの取り得る値で特化した場合、データ処理装置２は、記述例１３を記述例１６のように３種類のパターンとみなし、パラメータ特化部２ｄがこの３種類のパターンのそれぞれを合成することになる。そして、パラメータマージ部２ｉが、パラメータをマージした後、ＲＴ記述生成部２ｋが最終的なＶｅｒｉｌｏｇＨＤＬとして、記述例１７に示すようなＲＴ記述を発生する。
記述例１６
2010110194.tif 000024
記述例１７
2010110194.tif 000025
2010110194.tif 000026
記述例１６は、図１に示した動作合成装置による変換途中例の一つである。記述例１７は、図１に示した動作合成装置による変換結果例の一つである。
このように、本実施形態の動作合成システムは、言語解析部と、内部構造正規化部と、ＣＤＦＧ生成部と、スケジューリング部と、バインディング部と、ＲＴ記述生成部とを備える。このような構成を採用し、パラメータを使用箇所に応じて、１）変数として扱い、同じパラメータを用いている変数同士などで適宜共有する、２）パラメータの範囲の最大値とみなして合成し、合成後にパラメータに戻す、３）パラメータの取り得る値に特化した回路を別個に合成して、その部分をＶｅｒｉｌｏｇ  ＨＤＬの‘ｉｆｄｅｆディレクティブなどで切り替える、などの合成方法を選択することにより、本発明の目的を達成することができる。
本実施形態によれば、合成された回路の再利用性が高まる。
その理由は、一般的な動作合成装置は、動作合成後の回路で、ビット幅などのパラメータを変更した場合、パラメータを合成されたＲＴ記述にも変数として保持することで回路の品質を犠牲にするか、パラメータを変更して、再度、動作合成を実施することが求められていたのに対し、本実施形態では、ＲＴ記述上で、パラメータを変更するだけで、回路品質の犠牲を抑えつつ、再度、動作合成を実施することを避けられるためである。
ここで、上述した実施形態に係る動作合成システムと、特許文献との相違点について述べる。特許文献１に記載の発明は、パケットデータ幅、メモリタイプ、メモリ容量、並列データパス数など、予め決められた範囲の対象しかパラメタライズできない。これに対し、本実施形態は、図１のパラメータ分類部２ｂ、パラメータ定数化部２ｃ、パラメータ特化部２ｄ、パラメータマージ部２ｉ、及びパラメータ変数化部２ｊの後処理により、パラメータを動作合成で利用して最適化した上で、さらに最終出力であるＲＴ記述でもパラメータを変更する余地がある機構となっている点で特許文献１に記載の発明と相違する。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、２００９年３月２４日に出願された日本出願特願２００９−０７２３０１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０００８】
本発明によれば、抽象度の高い動作レベルの回路記述から抽象度の低い回路記述を合成する動作合成装置に適用できる。
【符号の説明】
【０００９】
１    入力装置
２    データ処理装置
２ａ    言語解析部
２ｂ    パラメータ分類部
２ｃ    パラメータ定数化部
２ｄ    パラメータ特化部
２ｅ    内部構造正規化部
２ｆ    ＣＤＦＧ生成部
２ｇ    スケジューリング部
２ｈ    バインディング部
２ｉ    パラメータマージ部
２ｊ    パラメータ変数化部
２ｋ    ＲＴ記述生成部
３    記憶装置
３ａ    システム内部表現記憶部
４    出力装置
【図１】
2010110194.tif 000027
【図２】
2010110194.tif 000028
【図３】
2010110194.tif 000029
【図４】
2010110194.tif 000030
【図５】
2010110194.tif 000031
【図６】
2010110194.tif 000032
【図７】
2010110194.tif 000033
【図８】
2010110194.tif 000034
【国際調査報告】
2010110194.tif 000035
2010110194.tif 000036
2010110194.tif 000037
2010110194.tif 000038