(57)【要約】【課題】非整数型のデータを含む動作記述から、効率的な回路記述を生成する技術を提供する。【解決手段】動作記述変換装置は、動作記述を解析し、該解析の結果として構文木を作成し、前記構文木が、数値データに非整数型のデータを含む非整数型構文木であれば、該非整数型構文木を、全ての数値データが整数型のデータである整数型構文木に変換するとともに、該整数型構文木のうち、変換前に非整数型であった数値データに付随する処理を行う部分を示す情報を補助情報として記憶しておき、前記補助情報に示された部分に対応する回路を、同じ回路を互いに共有する回路の候補として、前記整数型構文木の各部分から生成される複数の回路が同じ回路を共有するように、該整数型構文木を回路記述に変換する。【選択図】図１
2010218217.tif 000002
【特許請求の範囲】
【請求項１】
動作記述を解析し、該解析の結果として構文木を作成する構文木作成手段と、
前記構文木作成手段により作成された前記構文木が、数値データに非整数型のデータを含む非整数型構文木であれば、該非整数型構文木を、全ての数値データが整数型のデータである整数型構文木に変換するとともに、該整数型構文木のうち、変換前に非整数型であった数値データに付随する処理を行う部分を示す情報を補助情報として記憶しておく構文木変換手段と、
前記補助情報に示された部分に対応する回路を、同じ回路を互いに共有する回路の候補として、前記整数型構文木から生成される複数の回路が同じ回路を共有するように、該整数型構文木を回路記述に変換する回路記述生成手段と、
を有する動作記述変換装置。
【請求項２】
前記回路記述生成手段は、前記整数型構文木の各部分を順に回路記述に変換し、それぞれの部分の変換において、該部分が前記補助情報に示された部分であれば、該部分から生成される回路が既に生成した回路を共用できるか否かを判断し、共用できれば共用させる請求項１に記載の動作記述変換装置。
【請求項３】
前記補助情報は、変換前に非整数型であった数値データへの代入処理又は、該数値データに対する演算処理を行う部分を示す情報を含む、請求項２に記載の動作記述変換装置。
【請求項４】
前記同じ回路は、オーバーフロー処理、丸め処理、非整数型を用いた演算、シフト処理のうち、いずれか１以上を実行するための回路である、請求項２又は３に記載の動作記述変換装置。
【請求項５】
前記補助情報は、前記非整数型構文木における各データのデータサイズを示す情報を含み、
前記回路記述生成手段は、前記非整数型構文木の前記部分が処理対象とするデータのデータサイズを、前記判断に用いる、請求項２乃至４のいずれか１項に記載の動作記述変換装置。
【請求項６】
前記回路記述生成手段は、前記部分から生成される回路に、既に生成した回路を共用させるか否かを、該回路を共用するとした場合の回路面積及びスループットのうち、少なくとも一方に基づいて判断する、請求項２乃至５のいずれか１項に記載の動作記述変換装置。
【請求項７】
構文木作成手段が、動作記述を解析し、該解析の結果として構文木を作成し、
前記構文木作成手段により作成された前記構文木が、数値データに非整数型のデータを含む非整数型構文木であれば、構文木変換手段が、該非整数型構文木を、全ての数値データが整数型のデータである整数型構文木に変換するとともに、該整数型構文木のうち、変換前に非整数型であった数値データに付随する処理を行う部分を示す情報を補助情報として記憶しておき、
回路記述生成手段が、前記補助情報に示された部分に対応する回路を、同じ回路を互いに共有する回路の候補として、前記整数型構文木の各部分から生成される複数の回路が同じ回路を共有するように、該整数型構文木を回路記述に変換する、動作記述変換方法。
【請求項８】
コンピュータに、
動作記述を解析し、該解析の結果として構文木を作成する構文木作成手順、
前記構文木作成手順で作成された前記構文木が、数値データに非整数型のデータを含む非整数型構文木であれば、該非整数型構文木を、全ての数値データが整数型のデータである整数型構文木に変換するとともに、該整数型構文木のうち、変換前に非整数型であった数値データに付随する処理を行う部分を示す情報を補助情報として記憶しておく構文木変換手順、
前記補助情報に示された部分に対応する回路を、同じ回路を互いに共有する回路の候補として、前記整数型構文木の各部分から生成される複数の回路が同じ回路を共有するように、該整数型構文木を回路記述に変換する回路記述生成手順、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作記述から論理回路を自動生成する技術に関する。
【背景技術】
【０００２】
Ｃ＋＋言語等で記述された設計回路のアルゴリズム記述（動作記述）から、ＲＴＬ（Register Transfer Language：レジスタ転送レベル）やゲート・レベルの回路記述を生成するために、動作合成技術が利用されている。
【０００３】
例えば、特許文献１に記載された回路設計支援システムは、経路遅延を計算しながら、記述中のアルゴリズムを適切に分割して回路記述を生成している。
【０００４】
また、非特許文献１に記載されたシミュレータは、固定小数点数型データを処理する時のシステムの挙動をシミュレーションするためのライブラリと、整数型データを処理する時のシステムの挙動をシミュレーションするためのライブラリと、を有する。
【０００５】
システム設計者は、このシミュレータに非整数型データを含むアルゴリズム記述を入力し、非整数型に対応するライブラリを使用することにより、非整数型データを処理する時のシステムの挙動を検証できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１２４２７９号公報
【非特許文献】
【０００７】
【非特許文献１】ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ  Ｓｏｃｉｅｔｙ，“ＩＥＥＥ  Ｓｔａｎｄａｒｄ  ＳｙｓｔｅｍＣ  Ｌａｎｇｕａｇｅ  Ｒｅｆｅｒｅｎｃｅ  Ｍａｎｕａｌ”，ＩＥＥＥ標準  １６６６−２００５，ｐｐ．２７８−３１２
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１に記載されたシステムや非特許文献１に記載されたシミュレータを利用すると、非効率的な回路記述が生成されることがあった。
【０００９】
詳細には、回路記述は、整数型のみを扱える演算器に対応した記述なので、整数以外の数値を扱う動作記述がシステムやシミュレータに入力された場合、そのシステム等は、動作記述を構文解析して構文木にした後、その構文木において、非整数型の数値を整数型に変換する必要がある。
【００１０】
ところが、非整数型を整数型に変換した構文木を回路記述に変換すると、その回路記述において、オーバーフロー処理、丸め処理、非整数型を用いた演算やシフト処理など、非整数型データから変換された数値データを処理する際に付随する論理が煩雑に発生する。非整数型を用いた記述量が増大するほど、これらの論理を演算する同じような回路が多数生成されてしまう。この結果、回路面積が増大し、回路記述が非効率的となる問題があった。
【００１１】
本発明は、非整数型のデータを含む動作記述から、効率的な回路記述を生成する技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の動作記述変換装置は、動作記述を解析し、該解析の結果として構文木を作成する構文木作成手段と、前記構文木作成手段により作成された前記構文木が、数値データに非整数型のデータを含む非整数型構文木であれば、該非整数型構文木を、全ての数値データが整数型のデータである整数型構文木に変換するとともに、該整数型構文木のうち、変換前に非整数型であった数値データに付随する処理を行う部分を示す情報を補助情報として記憶しておく構文木変換手段と、前記補助情報に示された部分に対応する回路を、同じ回路を互いに共有する回路の候補として、前記整数型構文木の各部分から生成される複数の回路が同じ回路を共有するように、該整数型構文木を回路記述に変換する回路記述生成手段と、を有する。
【００１３】
本発明の動作記述変換方法は、構文木作成手段が、動作記述を解析し、該解析の結果として構文木を作成し、前記構文木作成手段により作成された前記構文木が、数値データに非整数型のデータを含む非整数型構文木であれば、構文木変換手段が、該非整数型構文木を、全ての数値データが整数型のデータである整数型構文木に変換するとともに、該整数型構文木のうち、変換前に非整数型であった数値データに付随する処理を行う部分を示す情報を補助情報として記憶しておき、回路記述生成手段が、前記補助情報に示された部分に対応する回路を、同じ回路を互いに共有する回路の候補として、前記整数型構文木の各部分から生成される複数の回路が同じ回路を共有するように、該整数型構文木を回路記述に変換する、動作記述変換方法である。
【００１４】
本発明のプログラムは、コンピュータに、動作記述を解析し、該解析の結果として構文木を作成する構文木作成手順、前記構文木作成手順で作成された前記構文木が、数値データに非整数型のデータを含む非整数型構文木であれば、該非整数型構文木を、全ての数値データが整数型のデータである整数型構文木に変換するとともに、該整数型構文木のうち、変換前に非整数型であった数値データに付随する処理を行う部分を示す情報を補助情報として記憶しておく構文木変換手順、前記補助情報に示された部分に対応する回路を、同じ回路を互いに共有する回路の候補として、前記整数型構文木の各部分から生成される複数の回路が同じ回路を共有するように、該整数型構文木を回路記述に変換する回路記述生成手順、を実行させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、動作記述変換装置は、非整数型構文木を整数型構文木に変換し、非整数型であった数値データに付随する処理を行う部分を示す補助情報を記憶しておき、その補助情報に基づいて、整数型構文木の各部分から生成される複数の回路が同じ回路を共有するように、整数型構文木を回路記述に変換するので、回路記述における回路数が削減され、非整数型のデータを含む動作記述から、効率的な回路記述を生成することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の動作合成装置の構成を示すブロック図である。
【図２】本発明の動作記述の一例を示す図である。
【図３】本発明の構文木の構造を示す図である。
【図４】本発明の整数型構文木の構造を示す図である。
【図５】本発明の整数型構文木と補助情報の内容とを表記したプログラムの一例である。
【図６】本発明の回路記述の一例を示す図である。
【図７】本発明の回路記述の一例を示す図である。
【図８】一般的な動作合成装置により生成された回路記述の一例を示す図である。
【図９】本発明の動作合成装置の動作を示すフローチャートである。
【図１０】本発明の回路記述生成処理を示すフローチャートである。
【図１１】本発明の変形例の動作合成システムを示す図である。
【発明を実施するための形態】
【００１７】
本発明を実施するための実施の形態について図面を参照して詳細に説明する。図１は、本実施形態の動作合成装置１の構成を示すブロック図である。動作合成装置１は、動作合成技術を使用することにより、動作記述を回路記述に変換する装置である。同図を参照すると、動作合成装置１は、入力部１０、構文木生成部２０、構文木変換部３０、中間記述記憶部４０、回路記述生成部５０、および出力部６０を有する。
【００１８】
入力部１０は、動作記述１０１を構文木生成部２０に入力する。ここで、動作記述とは、設計対象の回路に実行させる動作（アルゴリズム）をＣ＋＋言語等で記述したプログラムである。
【００１９】
構文木生成部２０は、入力された動作記述１０１を、コンパイラなどを使用して解析し、解析結果を構文木２０１として構文木変換部３０へ出力する。ここで、構文木とは、構文解析の結果をツリー構造で表記したデータである。
【００２０】
構文木変換部３０は、構文木２０１が、非整数型の数値データを含む構文木（以下、「非整数型構文木」という）であるか否かを判断する。
【００２１】
構文木２０１が非整数型構文木であれば、構文木変換部３０は、その構文木を数値データが全て整数型のデータである、整数型構文木３０１に変換する。また、構文木変換部３０は、非整数型構文木（２０１）から整数型構文木３０１への変換において、生成される補助情報４０１として中間記述記憶部４０へ出力する。
【００２２】
ここで、補助情報（４０１）とは、非整数型構文木から整数型構文木への変換において、演算としては失われる情報、または変数としては存在しなくなる情報である。
【００２３】
更に詳細には、補助情報４０１は、整数型構文木のうち、非整数型であった数値データに付随する処理を行う部分を示す情報を含む。
【００２４】
例えば、補助情報（４０１）は、構文木（３０１、４０１）のうち、非整数型データから変換された数値データへの代入処理を行う部分を示す情報、または、非整数型データから変換された数値データに対する演算処理を行う部分を示す情報である。
【００２５】
また、変換前に処理対象とされるデータが固定小数点型または浮動小数点型であった場合、各小数点型データのデータ全体のビット幅（データサイズ）や小数点部のビット数を示す情報が補助情報４０１として記憶される。
【００２６】
回路記述生成部５０は、構文木変換部３０により変換された整数型構文木３０１の各部を処理の順番に従って回路記述に変換し、最終的に回路記述５０１を出力する。ここで、回路記述とはレジスタ転送レベルの回路やゲート・レベルの回路をハードウェア記述言語などで記述したものである。
【００２７】
回路記述生成部５０は、整数型構文木３０１の各部分を順に回路記述に変換していく。回路記述生成部５０は、各部分の変換において、補助情報４０１を参照して、変換により生成され得る回路記述が、非整数型であった数値データへの代入処理、または非整数型であった数値データに対する演算処理のための回路記述であるか否かを判断する。
【００２８】
変換により生成され得る回路記述が、それらの代入処理または演算処理であれば、回路記述生成部５０は、補助情報４０１から、それらの代入処理または演算処理を検索する。そして、回路記述生成部５０は、既に生成した回路記述の中から、検索した代入処理、または演算処理のための回路を抽出する。
【００２９】
回路記述生成部５０は、変換により生成され得る回路と、抽出した回路とが、同じ回路を共有できるか否かを判断する。言い換えれば、回路記述生成部５０は、変換対象の部分を変換することにより生成される回路が、既に生成した回路を供用できるか否かを判断する。
【００３０】
共有可能か否かの判断において、回路記述生成部５０は、非整数型データのデータサイズ、回路面積や、必要なスループットを考慮することもできる。
【００３１】
例えば、８ビットの数値データに対するオーバーフロー処理のための回路と、１６ビットの数値データに対するオーバーフロー処理のための回路とは、扱うことができる数値の最大値が異なるので、これらの回路を共有させると、かえって回路が複雑となることがある。このため、この場合は、回路記述生成部５０は、回路を共有しなくてもよい。
【００３２】
また、回路が共有できる場合であっても、回路の共有により、回路面積は小さくなるが、回路が複雑となる結果、スループットが上昇することもある。そこで、回路記述生成部５０は、共有後の回路面積やスループットの値を考慮して、その回路を共有するか否かを判断することもできる。
【００３３】
同じ回路を共有できる場合、回路記述生成部５０は、既存の回路と、変換対象の部分に対応する回路とに同じ回路を共有させる。この結果、生成される回路記述における回路数が削減される。
【００３４】
回路記述生成部５０は、作成した回路記述５０１を出力部６０に出力する。出力部６０は、作成された回路記述５０１を動作合成装置１の外部へ出力する。
【００３５】
図２は、動作記述１０１の一例を示す図である。同図に示すように、動作記述１０１において、設計対象のハードウェア回路の動作がＣ＋＋言語で記述される。
【００３６】
固定小数点型は、例えば「fixed<x, y>」と記述される。ここで、「ｘ」は、固定小数点型のデータ全体のビット幅、「ｙ」は、そのデータの小数点部のビット数である。
【００３７】
変数「ａ」、「ｂ」、「ｃ」を加算した値を変数「ｘ」に代入する演算は、例えば「ｘ＝ａ＋ｂ＋ｃ」と記述される。このような演算は、例えば、オペレーター・オーバーロード（演算子の多重定義）の手法を用いることにより、実現される。
【００３８】
図３は、構文木２０１の構造を図示したものである。同図に示すように、動作記述１０１内の各文を構文解析した結果は、ツリー構造となる。
【００３９】
図４は、整数型構文木３０１の構造を図示したものである。同図に示すように、固定小数点型のデータが、その小数点部のビット数に応じたシフト処理を行うことにより、整数型のデータに変換されている。また、同図では省略されているが、固定小数点型であった数値データへの代入において、オーバーフロー処理が追加される。
【００４０】
図５は、図４に示した整数型構文木３０１をＣ＋＋言語のプログラムに逆コンパイルし、補助情報４０１の内容を「／＊」〜「＊／」内のコメントとして記載したプログラムである。
【００４１】
処理対象の変数が、固定小数点型から変換された整数型データであれば、変換前のデータ全体のビット幅と小数点部のビット数とを示すコメント（補助情報）が記載される。
【００４２】
例えば、「char a」は、変換前において、データ全体のビット幅が８ビット、小数点部が５ビットの固定小数点型のデータであったので、その変数に対応付けて「変換前の型=fixed<8, 5>」のコメント（補助情報）が記載される。
【００４３】
また、文ごとに、その文の示す処理が固定小数点型データに対応する整数型データへの代入処理、演算処理であれば、その旨のコメント（補助情報）が記載される。
【００４４】
例えば、「s = [ a+ (b << 3+c << 5)] >> 1]」から、「ｘ＝ｓ；｝」までの処理において、「ｂ」、「ｃ」は変換前に固定小数点型データであった整数型データであり、これらを含むデータの演算結果が「ｓ」に代入されることから、「ｓ」も固定小数点型データに対応する整数型データである。このように、この処理は、演算結果を固定小数点型データに対応するデータ（「ｓ」）へ代入する処理なので、「s = [ a+ (b << 3+c << 5)] >> 1]」の直前に、コメント（補助情報）として、「次の文以降は、固定小数点への代入」が記載される。
【００４５】
例えば、「if ( s > 255 )」から、「ｘ＝ｓ；｝」までの処理は、固定小数点型であったデータ「ｓ」を代入する際に、その値が、固定小数点で表現できる数を超えてしまったのであれば、適切な値を代入する処理である。
【００４６】
図６は、変換途中の回路記述５０１の一部を示す図である。同図を参照すると、整数型構文木３０１のうち、「ｔ」を「ｘ」に代入する処理が既に回路記述に変換されている。処理の順番に従って、次に、「ｓ」を「ｘ」に代入する処理が回路に変換される。同図において、破線の部分が、変換により生成される回路である。
【００４７】
図６に示すように、「ｔ」を「ｘ」に代入するための回路記述（既存の回路）と、「ｓ」を「ｘ」に代入するための回路記述（変換により生成される回路）とにおいて、一点鎖線で囲ったオーバーフロー処理を実行する回路が繰り返し発生している。
【００４８】
「ｔ」を「ｘ」に代入する回路と、「ｓ」を「ｘ」に代入する回路とは、出力データ（「ｘ」）が一致し、処理対象のデータ（「ｓ」、「ｔ」、「ｘ」）のデータサイズも一致するので、このオーバーフロー処理に対応する共通の回路を共有することができる。
【００４９】
図７は、両回路に同じ回路を共有させた（効率化した）回路記述５０１の一部を示す図である。同図に示すように、「ｓ」を「ｘ」に代入するための回路記述と、「ｔ」を「ｘ」に代入するための回路記述が、同じ回路（オーバーフロー処理を行う回路）を共有するので、回路記述に記載の回路全体の回路面積が小さくなる。
【００５０】
これに対して、補助情報４０１を参照せずに、整数型構文木３０１を順に回路記述に変換した場合の結果を図８に示す。同図に示すように、固定小数点型データであった数値データを扱う際に付随する論理回路（オーバーフロー処理、丸め処理、非整数型を用いた演算やシフト処理を行う回路など）が繰り返し発生することとなり、非効率な回路記述が生成される。
【００５１】
図８に示した回路記述から、作業者が手作業で、回路数を削減して図７に示したような効率的な回路記述を作成することもできるが、回路記述の規模が膨大となればなるほど、人為的なミスが生じ、作業効率も低くなってしまう。
【００５２】
手作業でなく、動作合成装置などが、自動的に回路数を削減することもできるが、回路記述のうち、どこからどこまでが共有できるかを探索しなくてはならず、更に共有する場合もどのように共有するかを自動的に判定する必要があり、効率化が完了するまでに大量の演算時間がかかる。
【００５３】
本発明では、動作合成装置１は、補助情報４０１を参照して、従来、手作業で効率化していた処理を自動化することができる。また、動作合成装置１は、補助情報４０１を参照することにより、どこまでが共有可能かを高速に検出し、しかも定型的な共有方法を使用できるので、自動で回路記述を効率化する場合においても、補助情報４０１を参照しない装置と比較して高速に効率的な回路記述を生成できる。
【００５４】
次いで、動作合成装置１の動作について説明する。図９は、動作合成装置１の動作を示すフローチャートである。この動作は、動作合成のための所定のアプリケーションが実行されたときに開始する。
【００５５】
構文木生成部２０は、入力部１０で入力された動作記述１０１を読み出す（ステップＳ１）。構文木生成部２０は、その動作記述１０１を構文解析し、構文木２０１を生成する（ステップＳ３）。
【００５６】
構文木変換部３０は、構文木２０１が非整数型構文木であるか否かを判断する（ステップＳ５）。非整数型構文木であれば（ステップＳ５：ＹＥＳ）、構文木変換部３０は、その非整数型構文木を整数型構文木３０１に変換するとともに、中間記述記憶部４０に補助情報４０１を記憶する（ステップＳ７）。
【００５７】
非整数型構文木でない場合（ステップＳ５：ＮＯ）、またはステップＳ７の後、回路記述生成部５０は、回路記述生成処理を実行する（ステップＳ９）。ステップＳ９の後、動作合成装置１は、動作を終了する。
【００５８】
図１０は、回路記述生成処理を示すフローチャートを示す図である。同図を参照すると、回路記述生成部５０は、整数型構文木３０１の各部分を、処理の順番に従って、順に回路記述に変換する（ステップＳ９１）。各部分の変換において、回路記述生成部５０は、補助情報４０１を読み出す（ステップＳ９２）。
【００５９】
回路記述生成部５０は、補助情報４０１を参照して、変換により生成され得る回路が、固定小数点に対応するデータに対する代入処理、または演算処理を行うための回路であるか否かを判断する（ステップＳ９３）。
【００６０】
固定小数点に対応するデータに対する代入処理、または演算処理のための回路であれば（ステップＳ９３：ＹＥＳ）、回路記述生成部５０は、補助情報４０１を検索して、既存の回路記述の中から、それらの代入処理または演算処理を行う回路を抽出する。そして、回路記述生成部５０は、生成され得る回路と抽出した回路とが、同じ回路を共有できるか否かを判断する（ステップＳ９４）。
【００６１】
共有できるのであれば（ステップＳ９４：ＹＥＳ）、回路記述生成部５０は、両回路に、同じ回路を共有させて、効率化した回路記述を出力する（ステップＳ９５）。
【００６２】
変換により生成され得る回路が代入処理、または演算処理のための回路でない場合（ステップＳ９３：ＮＯ）、又は同じ回路を共有できない場合（ステップＳ９４：ＮＯ）、回路記述生成部５０は、新規に、変換対象の部分を回路記述に変換し、新規に出力する（ステップＳ９６）。
【００６３】
ステップＳ９５、またはＳ９６の後、回路記述生成部５０は、全ての整数型構文木３０１が変換されて回路記述５０１が生成されたか否かを判断する（ステップＳ９７）。
【００６４】
全ての整数型構文木３０１が変換されていなければ（ステップＳ９７：ＮＯ）、回路記述生成部５０は、ステップＳ９１に戻る。全ての整数型構文木３０１が変換されたのであれば（ステップＳ９７：ＮＯ）、回路記述生成部５０は、回路記述生成処理を終了する。
【００６５】
なお、本実施形態では、１つの装置が、動作記述の入力処理、構文木の生成処理、構文木の変換処理、回路記述の生成処理、および出力処理を実行する構成としているが、図１１に示すように、これらの処理を行う機能を複数の装置に分散する構成としてもよいのは勿論である。
【００６６】
また、本実施形態では、非整数型データとして、固定小数点型データを例示しているが、非整数型データは、浮動小数点型データであってもよいのは勿論である。
【００６７】
本実施形態では、整数型構文木３０１の各部分を順番に回路記述に変換している。しかし、回路記述生成部５０は、整数型構文木３０１を一括変換して、図８に示したような回路記述を生成し、その後、共有可能な回路に同じ回路を共有させて図７に示したような効率的な回路記述を生成することもできる。
【００６８】
本実施形態では、動作合成装置１は、オーバーフロー処理を実行する回路を共有させているが、オーバーフロー処理に限らず、非整数型データから整数型に変換するために付随する論理であればよく、丸め処理、非整数型を用いた演算やシフト処理を行う回路などを共有させてもよい。
【００６９】
本発明は、動作合成とシミュレーションとを同時に実行可能なプログラムや、組み込み機器向けコンパイラにも適用可能である。本発明は、コンピュータのプロセッサの設計などに適用可能でもある。
【００７０】
以上説明したように、本実施形態においては、動作合成装置１（動作記述変換装置）は、非整数型構文木（２０１）を整数型構文木３０１に変換し、非整数型であった数値データに付随する処理を行う部分を示す補助情報４０１を記憶しておき、その補助情報４０１に基づいて、整数型構文木３０１の各部分から生成される複数の回路が同じ回路を共有するように、該整数型構文木を回路記述５０１に変換するので、回路記述５０１における回路数が削減され、非整数型のデータを含む動作記述から、効率的な回路記述５０１を生成することができる。
【００７１】
この結果、回路記述５０１から生成された回路では、計算数が減少し、入力から出力までのレイテンシ―が削減される。また、回路におけるメモリやレジスタの数が減少するので、回路面積が小さくなる。
【００７２】
加えて、動作合成装置１では、代入や演算がもともと固定小数点の演算や代入であったという補助情報が保持されるため、動作合成装置１は、単に整数の代入文とみなして回路記述に変換した場合よりも、固定小数点の代入に特化した効率の良い回路を生成できる。
【００７３】
また、動作合成装置１は、同じ回路がオーバーフロー処理等を行う回路であれば、共有させるので、特に、オーバーフロー処理などが煩雑に生じる、小数点型データを扱う回路において、回路数を削減するのに適している。
【００７４】
動作合成装置１は、処理対象のデータのデータサイズ、回路面積、およびスループットに基づいて共有可能か否かを判断することにより、非効率的な回路記述の生成を防止できる。
【符号の説明】
【００７５】
１    動作合成装置
１０    入力部
２０    構文木生成部
３０    構文木変換部
４０    中間記述記憶部
５０    回路記述生成部
６０    出力部
１０１    動作記述
２０１    構文木
３０１    整数型構文木
４０１    補助情報
５０１    回路記述
【図１】
2010218217.tif 000003
【図２】
2010218217.tif 000004
【図３】
2010218217.tif 000005
【図４】
2010218217.tif 000006
【図５】
2010218217.tif 000007
【図６】
2010218217.tif 000008
【図７】
2010218217.tif 000009
【図８】
2010218217.tif 000010
【図９】
2010218217.tif 000011
【図１０】
2010218217.tif 000012
【図１１】
2010218217.tif 000013