(57)【要約】【課題】演算ごとにビット数を逐一指定しなくても従来の動作合成で発生していた記憶素子や演算器のビット数の冗長な部分を削減することができると共に、最適な論理回路を設計し得るようにする。【解決手段】動作記述変換装置１００は、入出力部２００と、内部に出力値域算出部４０２を有する動作解析部４００とを備える。動作解析部４００は、入力された動作記述を解析して、演算の種類及び演算の入出力値の範囲を含む動作記述に変換する。その際に、演算の種類と入力値の範囲とから演算の出力値の範囲をビット数単位より細かい精度で算出して、入出力部２００へ動作記述を出力する。【選択図】図５
2007156527.tif 000002
【特許請求の範囲】
【請求項１】
入力された動作記述を解析して、演算の種類及び前記演算の入出力値の範囲を含む動作記述に変換する動作記述解析変換手段を有する動作記述変換装置であって、
前記動作記述解析変換手段は、前記演算の種類と前記入力値の範囲とから前記演算の出力値の範囲をビット数単位より細かい精度で算出する算出手段を有することを特徴とする動作記述変換装置。
【請求項２】
前記動作記述解析変換手段は、複数の入力値間の関係を解析して動作記述の変換を行うことを特徴とする請求項１記載の動作記述変換装置。
【請求項３】
前記算出手段は、複数の入力値間の関係を考慮して前記出力値の範囲の算出を行うことを特徴とする請求項１又は２記載の動作記述変換装置。
【請求項４】
前記算出手段は、前記入力値の条件に基づいて前記出力値のビット数の算出を行うことを特徴とする請求項１乃至３のいずれか１項に記載の動作記述変換装置。
【請求項５】
さらに、前記入力値の条件に基づいて算出された前記出力値のビット数が予め指定された出力値のビット数と異なる場合に警告メッセージを発する警告メッセージ発生手段を有することを特徴とする請求項４記載の動作記述変換装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の動作記述変換装置を備えることを特徴とする高位合成装置。
【請求項７】
入力された動作記述を解析して、演算の種類及び前記演算の入出力値の範囲を含む動作記述に変換する動作記述解析変換ステップを有する動作記述変換方法であって、
前記動作記述解析変換ステップは、前記演算の種類と前記入力値の範囲とから前記演算の出力値の範囲をビット数単位より細かい精度で算出する算出ステップを有することを特徴とする動作記述変換方法。
【請求項８】
前記動作記述解析変換ステップは、複数の入力値間の関係を解析して動作記述の変換を行うことを特徴とする請求項７記載の動作記述変換方法。
【請求項９】
前記算出ステップは、複数の入力値間の関係を考慮して前記出力値の範囲の算出を行うことを特徴とする請求項７又は８記載の動作記述変換装置。
【請求項１０】
前記算出ステップは、前記入力値の条件に基づいて前記出力値のビット数の算出を行うことを特徴とする請求項７乃至９のいずれか１項に記載の動作記述変換方法。
【請求項１１】
さらに、前記入力値の条件に基づいて算出された前記出力値のビット数が予め指定された出力値のビット数と異なる場合に警告メッセージを発する警告メッセージ発生ステップを有することを特徴とする請求項１０記載の動作記述変換方法。
【請求項１２】
入力された動作記述を解析して、演算の種類及び前記演算の入出力値の範囲を含む動作記述に変換する動作記述解析変換モジュールをコンピュータに実行させる動作記述変換プログラムであって、
前記動作記述解析変換モジュールは、前記演算の種類と前記入力値の範囲とから前記演算の出力値の範囲をビット数単位より細かい精度で算出する算出モジュールを有することを特徴とする動作記述変換プログラム。
【請求項１３】
請求項１２記載のプログラムを格納するコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作記述変換装置及び方法、プログラム及び記憶媒体、並びに動作記述変換装置を備えた高位合成装置に関する。特に、動作記述の入力によって演算器に必要な最小限のビット数を算出して論理回路を設計する動作記述変換装置及び方法、プログラム及び記憶媒体、並びに動作記述変換装置を備えた高位合成装置に関する。
【背景技術】
【０００２】
従来の高位合成装置においては、演算器の選定はビット数を基準としていた。例えば、図９の動作記述変換装置のデータフロー図において、加算器９０１の出力は、５ビットの入力ａと２ビットの入力ｂのうち大きいほうのビット数（５ビット）に桁上がり１ビットを加えた６ビットである。そして、続く乗算器９０２の出力は２つの入力のビット数６と３の合計で９ビットのように推定していた（例えば、特許文献１，２参照）。
【特許文献１】特開平５−５４０９８号公報
【特許文献２】特開平１０−３２６２９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、図９の例では加算器９０１の出力は最大で３１＋３＝３４であり、よって、乗算器９０２の出力は最大でも３４×７＝２３８であるため、理論上８ビットで十分である。しかしながら、前述のようにビット数に注目しただけでは９ビットとなり、８ビットで十分であることが検出できない。このため、従来は、これを９ビットとして冗長な回路になっていた。
【０００４】
従来の技術においても、出力のビット数を明示すれば最適化された回路を得ることが可能であるが、ひとつひとつ指定するのは煩雑でもあるし、また、間違いも起き易いので自動的な最適化が望ましい。
【０００５】
本発明の目的は、演算ごとにビット数を逐一指定しなくても従来の動作合成で発生していた記憶素子や演算器のビット数の冗長な部分を削減することができると共に、最適な論理回路を設計し得るようにすることである。また、そのための動作記述変換装置及び方法、プログラム及び記憶媒体、並びに動作記述変換装置を備えた高位合成装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１記載の動作記述変換装置は、入力された動作記述を解析して、演算の種類及び前記演算の入出力値の範囲を含む動作記述に変換する動作記述解析変換手段を有する動作記述変換装置であって、前記演算の種類と前記入力値の範囲とから前記演算の出力値の範囲をビット数単位より細かい精度で算出する算出手段を有することを特徴とする。
【０００７】
請求項６記載の高位合成装置は、請求項１乃至５のいずれか１項に記載の動作記述変換装置を備えることを特徴とする。
【０００８】
請求項７記載の動作記述変換方法は、入力された動作記述を解析して、演算の種類及び前記演算の入出力値の範囲を含む動作記述に変換する動作記述解析変換ステップを有する動作記述変換方法であって、前記動作記述解析変換ステップは、前記演算の種類と前記入力値の範囲とから前記演算の出力値の範囲をビット数単位より細かい精度で算出する算出ステップを有することを特徴とする。
【０００９】
請求項１２記載の動作記述変換プログラムは、入力された動作記述を解析して、演算の種類及び前記演算の入出力値の範囲を含む動作記述に変換する動作記述解析変換モジュールをコンピュータに実行させる動作記述変換プログラムであって、前記動作記述解析変換モジュールは、前記演算の種類と前記入力値の範囲とから前記演算の出力値の範囲をビット数単位より細かい精度で算出する算出モジュールを有することを特徴とする。
【００１０】
請求項１３記載の記憶媒体は、請求項１２記載のプログラムを格納することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、入力された動作記述を解析して、演算の種類及び演算の入出力値の範囲を含む動作記述に変換する際に、演算の種類と入力値の範囲とから演算の出力値の範囲をビット数単位より細かい精度で算出する。これにより、演算ごとにビット数を逐一指定しなくても従来の動作合成で発生していた記憶素子や演算器のビット数の冗長な部分を削減することができると共に、最適な論理回路を設計し得る。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を図面を参照しながら詳述する。
【００１３】
図１は、本発明の実施の形態に係る動作記述変換装置の構成を概略的に示す図である。
【００１４】
図１において、動作記述変換装置１００は、動作記述の入力及び出力を行う入出力部２００と、入出力部２００に入力された動作記述を解析すると共に、解析後の動作記述を入出力部２００に出力する動作解析部４００（動作記述解析変換手段）とを備える。
【００１５】
入出力部２００は、入出力端子の記述である入出力指定部２０１と、装置内部で行われる演算を指示する記述である動作指定部２０２とを備え、夫々動作解析部４００と接続されている。
【００１６】
動作解析部４００は、入出力指定部２０１から後述する方法で入力値の範囲を算出すると共に、算出された入力値の範囲を記憶する入力値候補リスト４０１ａを内部に有する入力値域算出部４０１を備える。更に、動作指定部２０２の記述を解析して分解した式と入力値候補リスト４０１ａとに基づいて各演算ごとの出力値の範囲を算出すると共に、算出された出力値の範囲を記憶する出力値候補リスト４０２ａを内部に有する出力値域算出部４０２（算出手段）を備える。入力値域算出部４０１と出力値域算出部４０２とは互いに接続されている。
【００１７】
図２は、図１における入出力部２００の動作記述の実施例を示す図である。
【００１８】
図２における入出力指定部２０１に記述された入力値の範囲は、１行目の入力ａのようにビット数の指定によるもの、２行目及び４行目の入力ｂ及び入力ｄのように最小値と最大値の指定によるもの、３行目の入力ｃのように値を列挙によるものとで指定される。上記入力ａのようにビット数だけの指定で値が明示されていないときは、指定されたビット数で表現可能な最小値と最大値が指定されたものとみなし、上記入力ａでは０以上３１以下の値が指定される。
【００１９】
そして、入力値域算出部４０１は、上記入力ａ〜ｄに基づく入力値の範囲を取得し、入力値候補リスト４０１ａに記憶する。
【００２０】
また、入出力指定部２０１に記述された出力値の範囲は、５行目の出力ｘのようにビット数の指定によって、予め明示してもよい。出力ｘの出力値の範囲を予め明示するのは利便性を高めるためで、設計者の意図した通りに演算が行われているかを確認する助けになる。
【００２１】
そして、出力値域算出部４０２は、上記出力ｘに基づく出力値の範囲を取得し、出力値候補リスト４０２ａに記憶する。さらに、出力値域算出部４０２は、動作指定部２０２に記述された式の解析を行い、中間信号ｔ１，ｔ２を導入して分解した式を入出力部２００に出力する（図３）。
【００２２】
図４は、図２の入出力部２００の動作記述に基づく演算処理のデータフロー図である。
【００２３】
図４において、加算器３０１では、入力ａと入力ｂとから後述する図５の出力値域計算処理を実行し、加算器３０１の出力であると共に、乗算器３０２の入力でもある中間信号ｔ１の値域の範囲を算出する。このとき、入力ａは０以上３１以下の値であり（図３）、入力ｂは１以上３以下の値であるので、その和である中間信号ｔ１の値域は１以上３４以下であると求めることができ、中間信号ｔ１を表現するためには６ビット確保すべきことが分かる。
【００２４】
次いで、乗算器３０２では、中間信号ｔ１と入力ｃとから後述する図５の出力値域計算処理を実行し、乗算器３０２の出力であると共に、加算器３０３の入力でもある中間信号ｔ２の値域の範囲を算出する。このとき、中間信号ｔ１は１以上３４以下の値であり、入力ｃは２，３，５，７のいずれかの値であるので、その積である中間信号ｔ２の値域は２以上２３８以下であると求めることができ、中間信号ｔ２を表現するためには８ビット確保すべきことが分かる。
【００２５】
そして、加算器３０３では、中間信号ｔ２と入力ｄとから後述する図５の出力値域計算処理を実行し、出力ｘの値域の範囲を算出する。このとき、中間信号ｔ２は２以上２３８以下の値であり、入力ｄは０以上２６２以下の値であるので、その和である出力ｘの値域は２以上５００以下であると求めることができる。よって、出力ｘを表現するためには９ビット確保すべきことが分かり、図２において予め指定した出力ｘのビット数と同じであることが確認できる。
【００２６】
図５は、図１における動作解析部４００によって実行される出力値域計算処理の手順を示すフローチャートである。
【００２７】
本処理は、２つの入力１，２における出力値域を代数ｉ，ｊを用いて算出する。
【００２８】
図５において、まず、出力値候補リスト４０２ａを空にして（ステップＳ５０１）、ｉに入力１の最小値を代入し（ステップＳ５０２）、ｉが入力１の入力値候補リスト４０１ａにあるか否かを判別する（ステップＳ５０３）。
【００２９】
ステップＳ５０３の判別の結果、入力値候補リスト４０１ａにあるときは、ｊに入力２の最小値を代入し（ステップＳ５０４）、ｊが入力２の入力値候補リスト４０１ａにあるか否かを判別する（ステップＳ５０５）。
【００３０】
ステップＳ５０５の判別の結果、入力値候補リスト４０１ａにあるときは、ｉとｊの加算や乗算等の演算結果を算出して（ステップＳ５０６）、算出結果を出力値候補リスト４０２ａに記憶する（ステップＳ５０７）。
【００３１】
次いで、ｊにｊ＋１を代入して（ステップＳ５０８）、ｊが入力２の最大値以下であるか否かを判別して（ステップＳ５０９）、ｊが入力２の最大値以下であるときは、ステップＳ５０５の処理へ戻る。
【００３２】
ステップＳ５０９の判別の結果、ｊが入力２の最大値以下でないときは、ｉにｉ＋１を代入して（ステップＳ５１０）、ｉが入力１の最大値以下であるか否かを判別する（ステップＳ５１１）。ｉが入力１の最大値以下であるときは、ステップＳ５０３の処理へ戻り、ｉが入力１の最大値以下でないときは、本処理を終了する。
【００３３】
ステップＳ５０３の判別の結果、ｉが入力１の入力値候補リスト４０１ａにないときは、ステップＳ５１０以降の処理を実行して、インクリメントされたｉが入力１の最大値以下でないときは、本処理を終了する。
【００３４】
ステップＳ５０５の判別の結果、ｊが入力２の入力値候補リスト４０１ａにないときは、ステップＳ５０８以降の処理を実行する。その結果、インクリメントされたｊが入力２の最大値以下でないと共に、インクリメントされたｉが入力１の最大値以下でないときは、本処理を終了する。
【００３５】
本実施の形態では、入力値候補リスト４０１ａに入力値の取り得る全ての値を記憶し、各値について出力値を計算して出力値候補リスト４０２ａに記憶するようにした。上記出力値域計算処理を簡略化するために、入力値候補リスト４０１ａにおいては入力の最小値と最大値、また、出力値候補リスト４０２ａにおいては算出結果の最小値と最大値のみを記憶して、その間の値は全て含まれるとしてもよい。さらに、加算や乗算のように単純な演算では最小値と最大値のみについて演算結果を算出して、出力値域の最小値と最大値を求めるようにしてもよい。
【００３６】
図４及び図５の処理によって、図２の動作記述に含まれる全ての演算の入出力値の範囲を求めることができ、動作解析部４００はこれらの算出結果を図３の記述に反映させて、入出力部２００に出力することができる（図６）。これにより、最適な論理回路を設計し得る。
【００３７】
図７は、図１における入出力部２００の動作記述の他の実施例を示す図である。
【００３８】
本実施例においては、図２の動作記述の５行目のみを異にし、出力端子ｘのビット数が明示されていない。このような動作記述においても、図４及び図５の処理によって、図７の動作記述に含まれる全ての演算の入出力値の範囲を求めることができ、出力端子ｘの値の範囲は２以上５００以下であることが算出できる。よって、動作解析部４００は出力値ｘのビット数と範囲を加えた動作記述を入出力部２００に出力することができる（図８）。これにより、最適な論理回路を設計し得る。
【００３９】
本実施の形態によれば、夫々の演算に対する入力値の範囲から出力値の範囲を求めて必要なビット数を算出するので、演算ごとにビット数を逐一指定しなくても、従来の動作合成で発生していた記憶素子や演算器のビット数の冗長な部分を削減することができる。
【００４０】
また、本実施の形態は、入力値の条件から算出された出力のビット数が出力端子に指定されたビット数と異なる場合に警告メッセージを発する警告メッセージ発生部を備えてもよい。
【００４１】
また、本実施の形態は、独立した動作記述変換装置としての形態のほか、高位合成装置の一工程として組み込む形態でもよく、計算機とソフトウェアの組み合わせによって動作記述変換装置若しくは高位合成装置の機能を実現する形態でもよい。
【００４２】
また、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給する場合を考える。ここで、本発明の目的は、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【００４３】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００４４】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク等を用いることができる。あるいは、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等の光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【００４５】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合だけではない。そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【００４６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた場合を考える。この場合に、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も本発明に含まれる。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施の形態に係る動作記述変換装置の構成を概略的に示す図である。
【図２】図１における入出力部の動作記述の実施例を示す図である。
【図３】図２の入出力部の解析後の動作記述を示す図である。
【図４】図２の入出力部の動作記述に基づく演算処理のデータフロー図である。
【図５】図１における動作解析部によって実行される出力値域計算処理の手順を示すフローチャートである。
【図６】図２の入出力部の図４及び図５の処理の実行後の動作記述を示す図である。
【図７】図１における入出力部の動作記述の他の実施例を示す図である。
【図８】図７の入出力部の図４及び図５の処理の実行後の動作記述を示す図である。
【図９】従来の入出力部の動作記述に基づく演算処理のデータフロー図である。
【符号の説明】
【００４８】
１００  動作記述変換装置
２００  入出力部
２０１  入出力指定部
２０２  動作指定部
４００  動作解析部
４０１  入力値域算出部
４０２  出力値域算出部
【図１】
2007156527.tif 000003
【図２】
2007156527.tif 000004
【図３】
2007156527.tif 000005
【図４】
2007156527.tif 000006
【図５】
2007156527.tif 000007
【図６】
2007156527.tif 000008
【図７】
2007156527.tif 000009
【図８】
2007156527.tif 000010
【図９】
2007156527.tif 000011