(57)【特許請求の範囲】
【請求項１】
ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力する解析部と、
前記解析部から出力された前記抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを、演算式レイテンシとして記憶部に保管するレイテンシ保管部と、
前記演算式レイテンシとレイテンシ閾値とを比較し、前記演算式レイテンシがレイテンシ閾値以上の場合に、前記抽出演算式をテーブル化の対象であるテーブル化演算式と判定し、前記抽出演算式を判定結果として出力する判定部と
を備えた設計支援装置。
【請求項２】
前記解析部は、
前記演算式に含まれる変数の数が変数閾値以下である場合に、前記演算式を前記抽出演算式として出力する請求項１に記載の設計支援装置。
【請求項３】
前記解析部は、
前記演算式が特定の演算を含む場合に、前記演算式を前記抽出演算式として出力する請求項１又は２に記載の設計支援装置。
【請求項４】
前記解析部は、
前記演算式に含まれる演算子の数が演算子閾値以上である場合に、前記演算式を前記抽出演算式として出力する請求項１から３のいずれか１項に記載の設計支援装置。
【請求項５】
前記設計支援装置は、入力装置を備え、
前記記憶部は、
前記入力装置を介して入力された前記回数閾値を記憶すると共に、前記入力装置を介して入力された前記レイテンシ閾値を記憶する請求項１から４のいずれか１項に記載の設計支援装置。
【請求項６】
前記設計支援装置は、入力装置を備え、
前記記憶部は、
前記入力装置を介して入力された前記変数閾値を記憶する請求項２に記載の設計支援装置。
【請求項７】
前記設計支援装置は、入力装置を備え、
前記記憶部は、
前記入力装置を介して入力された前記特定の演算を記憶する請求項３に記載の設計支援装置。
【請求項８】
前記設計支援装置は、入力装置を備え、
前記記憶部は、
前記入力装置を介して入力された前記演算子閾値を記憶する請求項４に記載の設計支援装置。
【請求項９】
解析部が、ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力し、
レイテンシ保管部が、前記解析部から出力された前記抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを、演算式レイテンシとして記憶部に保持し、
判定部が、前記演算式レイテンシとレイテンシ閾値とを比較し、前記演算式レイテンシがレイテンシ閾値以上の場合に、前記抽出演算式をテーブル化の対象であるテーブル化演算式と判定し、前記抽出演算式を判定結果として出力する設計支援方法。
【請求項１０】
ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力する解析処理と、
前記解析処理により出力された前記抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを、演算式レイテンシとして記憶部に保管するレイテンシ保管処理と、
前記演算式レイテンシとレイテンシ閾値とを比較し、前記演算式レイテンシがレイテンシ閾値以上の場合に、前記抽出演算式をテーブル化の対象であるテーブル化演算式と判定し、前記抽出演算式を判定結果として出力する判定処理と
をコンピュータに実行させる設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路の設計を支援する設計支援装置、設計支援方法及び設計支援プログラムに関する。
【背景技術】
【０００２】
従来の半導体集積回路の設計では、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）といったハードウェア記述言語を用いて、レジスタ（フリップフロップ）間の組み合わせ回路の動作を記述していた。近年では、集積回路の回路規模が増大しており、ハードウェア記述言語を用いた設計では多大な設計時間を要する。そこで、ハードウェア記述言語よりも抽象度が高いＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語といった高位言語を用いて設計を行い、ＲＴＬを自動的に生成する技術が提唱されている。そして、これを実現するツールが高位合成ツールとして市販されている。
【０００３】
しかし、高位言語の記述は正確な時間概念がないため、演算処理のレイテンシはＲＴＬを生成した後でないと分からない。そして、演算処理のレイテンシが所望のレイテンシを満たしていない場合は、演算処理のうちのどの処理のレイテンシが問題となっているかを解析する必要がある。
【０００４】
特許文献１には、シミュレーション時間を短縮することを目的として、演算子の演算結果をテーブル化することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０７−２００６６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、特許文献１ではシミュレーション時間を短縮することが目的であり、レイテンシを効率的に小さくすることはできないという課題がある。
【０００７】
本発明は、高位言語で記述されたソースコードを解析し、テーブル化することにより効率的にレイテンシを小さくできる演算式を抽出することが可能な設計支援装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る設計支援装置は、
ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力する解析部と、
前記解析部から出力された前記抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを、演算式レイテンシとして記憶部に保管するレイテンシ保管部と、
前記演算式レイテンシがレイテンシ閾値以上の場合に、前記抽出演算式を判定結果として出力する判定部とを備えた。
【発明の効果】
【０００９】
本発明に係る設計支援装置では、解析部が、ループ回数が回数閾値以下である演算式をソースコードから抽出し、前記演算式を抽出演算式として出力し、レイテンシ保管部が、抽出演算式がハードウェア記述言語に変換された変換演算式におけるレイテンシを演算式レイテンシとして記憶部に保管し、判定部が、演算式レイテンシがレイテンシ閾値以上の場合に抽出演算式を判定結果として出力する。よって、テーブル化に適しており、かつ、レイテンシが大きい演算式を的確に抽出することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る設計支援装置１００の構成図。
【図２】実施の形態１に係る設計支援装置１００の設計支援方法５１０及び設計支援プログラム５２０による設計支援処理Ｓ１００のフロー図。
【図３】実施の形態１に係る解析処理Ｓ１２０のフロー図。
【図４】実施の形態１に係るレイテンシ保管処理Ｓ１３０のフロー図。
【図５】実施の形態１に係る判定処理Ｓ１４０のフロー図。
【図６】実施の形態１に係る設計支援装置１００の処理対象であるソースコード１８０の例。
【図７】実施の形態１に係る設計支援装置１００の処理対象であるソースコード１８０の別例。
【図８】実施の形態１に係るテーブル化演算式１８５をテーブル化した図。
【図９】実施の形態１に係るテーブル化演算式１８５をテーブル化する際のプラグマ記述例。
【図１０】実施の形態１の変形例に係る設計支援装置１００ｘの構成図。
【発明を実施するための形態】
【００１１】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、本実施の形態に係る設計支援装置１００の構成について説明する。
本実施の形態において、設計支援装置１００は、コンピュータである。設計支援装置１００は、プロセッサ９１０、記憶装置９２０、入力装置９３０、出力装置９４０といったハードウェアを備える。記憶装置９２０は、補助記憶装置９２１とメモリ９２２とを有する。
【００１２】
設計支援装置１００は、機能構成として、ソースコード取得部１１０と、解析部１２０と、抽出結果保持部１３０と、高位合成部１４０と、判定部１５０と、記憶部１７０とを備える。解析部１２０は、演算式解析部１２１と、ループ解析部１２２と、変数解析部１２３と、特定演算解析部１２４と、演算子解析部１２５とを備える。
以下の説明では、設計支援装置１００におけるソースコード取得部１１０と、解析部１２０と、抽出結果保持部１３０と、高位合成部１４０と、判定部１５０の機能を、設計支援装置１００の「部」の機能という。解析部１２０の機能とは、演算式解析部１２１と、ループ解析部１２２と、変数解析部１２３と、特定演算解析部１２４と、演算子解析部１２５の機能である。
設計支援装置１００の「部」の機能は、ソフトウェアで実現される。
【００１３】
また、記憶部１７０は、記憶装置９２０で実現される。記憶部１７０には、予め入力装置９３０を介して入力された回数閾値１７２、変数閾値１７３、特定の演算１７４、演算子閾値１７５、レイテンシ閾値１７６が記憶されている。また、記憶部１７０には、ソースコード１８０、抽出演算式１８１、演算式レイテンシ１８３、テーブル化演算式１８５が記憶される。演算式レイテンシ１８３は、レイテンシ保管部１８２により記憶部１７０に記憶される。記憶部１７０には、上記の他、ＲＴＬ等が記憶される。
【００１４】
プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ９１０は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１５】
記憶装置９２０は、補助記憶装置９２１及びメモリ９２２を含む。補助記憶装置９２１は、具体的には、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。メモリ９２２は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。本実施の形態では、記憶部１７０は、補助記憶装置９２１により実現される。なお、記憶部１７０は、メモリ９２２により実現されてもよいし、補助記憶装置９２１とメモリ９２２とにより実現されていてもよい。記憶部１７０の実現方法は任意である。
【００１６】
入力装置９３０は、マウス、キーボード、タッチパネルといった入力機器である。なお、設計支援装置１００は、マウス、キーボード、タッチパネルといった入力機器と接続されるポートである入力インタフェースを備えていてもよい。入力インタフェースは、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェースは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。
【００１７】
出力装置９４０は、ディスプレイといった表示機器やプリンタといった出力機器である。出力装置９４０は、高位言語記述や高位合成後のＲＴＬを表示、出力する。なお、設計支援装置１００は、ディスプレイといった表示機器のケーブルが接続されるポートである出力インタフェースを備えていてもよい。出力インタフェースは、具体的には、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００１８】
補助記憶装置９２１には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ９２２にロードされ、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。補助記憶装置９２１には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。ＯＳの少なくとも一部がメモリ９２２にロードされ、プロセッサ９１０はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【００１９】
設計支援装置１００は、１つのプロセッサ９１０のみを備えていてもよいし、複数のプロセッサ９１０を備えていてもよい。複数のプロセッサ９１０が「部」の機能を実現するプログラムを連携して実行してもよい。
【００２０】
「部」の機能による処理の結果を示す情報、データ、信号値、及び、変数値は、補助記憶装置９２１、メモリ９２２、又は、プロセッサ９１０内のレジスタ又はキャッシュメモリに記憶される。なお、図１において、各部と記憶部１７０とを結ぶ矢印は、各部が処理の結果を記憶部１７０に記憶すること、あるいは、各部が記憶部１７０から情報を読み出すことを表している。また、各部を結ぶ矢印は、制御の流れを表している。
【００２１】
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）といった可搬記録媒体に記憶されてもよい。
なお、「部」の機能を実現するプログラムを設計支援プログラムともいう。設計支援プログラムは、「部」として説明している機能を実現するプログラムである。また、設計支援プログラムプロダクトと称されるものは、設計支援プログラムが記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【００２２】
＊＊＊動作の説明＊＊＊
本実施の形態に係る設計支援装置１００の動作について説明する。
図２を用いて、本実施の形態に係る設計支援装置１００の設計支援方法５１０及び設計支援プログラム５２０による設計支援処理Ｓ１００の概要について説明する。
設計支援処理Ｓ１００は、ソースコード取得処理Ｓ１１０と、解析処理Ｓ１２０と、レイテンシ保管処理Ｓ１３０と、判定処理Ｓ１４０とを備える。
【００２３】
ソースコード取得処理Ｓ１１０において、ソースコード取得部１１０は、記憶部１７０に記憶されているソースコード１８０を取り込む。ソースコード１８０は、具体的には、Ｃ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語といった高位言語を用いて回路の動作を記述したソースコードである。ソースコード１８０は、入力装置９３０を介して、ユーザにより入力され記憶部１７０に記憶される。
【００２４】
解析処理Ｓ１２０において、解析部１２０は、ループ回数が回数閾値１７２以下にある演算式をソースコード１８０から抽出する。解析部１２０は、抽出した演算式を抽出演算式１８１として出力する。解析処理Ｓ１１０については後で詳しく説明する。
【００２５】
レイテンシ保管処理Ｓ１３０において、高位合成部１４０は、解析処理Ｓ１２０により出力された抽出演算式１８１をハードウェア記述言語に変換演算式として変換し、変換演算式におけるレイテンシを演算式レイテンシ１８３として出力する。レイテンシ保管部１８２は、抽出演算式１８１がハードウェア記述言語に変換された変換演算式における演算式レイテンシ１８３を、記憶部１７０に記憶する。レイテンシ保管処理Ｓ１３０については後で詳しく説明する。
【００２６】
判定処理Ｓ１４０において、判定部１５０は、演算式レイテンシ１８３がレイテンシ閾値１７６以上の場合に、抽出演算式１８１をテーブル化演算式１８５として出力する。判定処理Ｓ１４０については後で詳しく説明する。
【００２７】
なお、解析処理Ｓ１２０、レイテンシ保管処理Ｓ１３０、判定処理Ｓ１４０は、ソースコード取得処理Ｓ１１０において取り込まれたソースコード１８０の各文について実行される。
【００２８】
＜解析処理Ｓ１２０について＞
図３を用いて、本実施の形態に係る解析処理Ｓ１２０について説明する。
ステップＳ１２１において、解析部１２０の演算式解析部１２１は、ソースコード１８０の文を解析し、等式（＝）を含む演算式があるか否かを判定する。演算式解析部１２１は、文に等式を含む演算式がある場合、ステップＳ１２２に進む。演算式解析部１２１は、文に等式を含む演算式がない場合、処理を終了する。
【００２９】
次に、ステップＳ１２２において、解析部１２０のループ解析部１２２は、演算式解析部１２１により等式を含む演算式であると判定された演算式のループ回数を解析する。ループ解析部１２２は、ｆｏｒループ解析部ともいう。具体的には、ループ解析部１２２は、演算式のループ回数と、記憶部１７０に記憶されている回数閾値１７２とを比較し、ループ回数が回数閾値１７２以下であるか否かを判定する。ループ解析部１２２は、ループ回数が回数閾値１７２以下の場合、ステップＳ１２３に進む。ループ解析部１２２は、ループ回数が回数閾値１７２以下でない場合、処理を終了する。
【００３０】
すなわち、ステップＳ１２１及びステップＳ１２３において、解析部１２０は、ループ回数が回数閾値以下である演算式をソースコード１８０から抽出する。
なお、ループ解析部１２２は、演算式のループ回数を解析することにより、演算式をテーブル化した場合のテーブルサイズを判断してもよい。この場合、記憶部１７０にテーブルのライン数を記憶しておき、演算式のテーブルサイズ（ループ回数）がライン数以下であれば、ステップＳ１２３に進む。
また、記憶部１７０は、入力装置９３０を介して、ユーザから入力された回数閾値１７２を予め記憶する。回数閾値１７２は、ユーザにより指定可能なパラメータである。
【００３１】
次に、ステップＳ１２３において、解析部１２０の変数解析部１２３は、演算式の変数の数を解析する。具体的には、変数解析部１２３は、演算式の変数の数と、記憶部１７０に記憶されている変数閾値１７３とを比較し、演算式の変数の数が変数閾値１７３以下であるか否かを判定する。変数解析部１２３は、演算式の変数の数が変数閾値１７３以下の場合、ステップＳ１２４に進む。変数解析部１２３は、演算式の変数の数が変数閾値１７３以下でない場合、処理を終了する。具体例として変数閾値１７３が１の場合、変数解析部１２３は、ループ解析部１２２で抽出された演算式に対して、変数の数が１の演算式を抽出する。ただし、変数閾値１７３は１に限らない。
記憶部１７０は、入力装置９３０を介して、ユーザから入力された変数閾値１７３を予め記憶する。変数閾値１７３は、ユーザにより指定可能なパラメータである。
【００３２】
次に、ステップＳ１２４において、解析部１２０の特定演算解析部１２４は、演算式に含まれる演算の種類を解析する。具体的には、特定演算解析部１２４は、演算式に含まれる演算と、記憶部１７０に記憶されている特定の演算１７４とを比較する。特定の演算１７４としては、例えば、平方根、指数関数といった演算の種類が設定されている。特定演算解析部１２４は、演算式が特定の演算１７４を含むか否かを判定する。特定演算解析部１２４は、演算式が特定の演算１７４を含む場合、ステップＳ１２５に進む。特定演算解析部１２４は、演算式が特定の演算１７４を含まない場合、処理を終了する。具体的には、特定演算解析部１２４は、変数解析部１２３で変数が１つであると判定された演算式について、特定の演算１７４を含むか否か判定する。
記憶部１７０は、入力装置９３０を介して、ユーザから入力された特定の演算１７４を予め記憶する。特定の演算１７４は、ユーザにより指定可能なパラメータである。
【００３３】
次に、ステップＳ１２５において、解析部１２０の演算子解析部１２５は、演算式に含まれる演算子の数を解析する。具体的には、演算子解析部１２５は、演算式に含まれる演算子の数と、記憶部１７０に記憶されている演算子閾値１７５とを比較する。演算子解析部１２５は、演算式に含まれる演算子の数が演算子閾値１７５以上であるか否かを判定する。演算子解析部１２５は、演算式に含まれる演算子の数が演算子閾値１７５以上である場合、ステップＳ１２６に進む。演算子解析部１２５は、演算式に含まれる演算子の数が演算子閾値１７５以上でない場合、処理を終了する。具体例として演算子閾値１７５が５の場合、演算子解析部１２５は、特定演算解析部１２４で特定の演算１７４を含むと判定された演算式について、演算子の数が５つ以上か否かを判定する。ただし、演算子閾値１７５は５に限らない。
記憶部１７０は、入力装置９３０を介して、ユーザから入力された演算子閾値１７５を予め記憶する。演算子閾値１７５は、ユーザにより指定可能なパラメータである。
【００３４】
ステップＳ１２６において、解析部１２０の演算子解析部１２５は、演算子の数が演算子閾値１７５以上と判定した演算式を抽出演算式１８１として出力する。すなわち、解析部１２０は、等式を含み、かつ、ループ回数が回数閾値１７２以下であり、かつ、変数の数が変数閾値１７３以下であり、かつ、特定の演算１７４を含み、かつ、演算子の数が演算子閾値１７５以上である演算式を抽出し、抽出演算式１８１として出力する。また、抽出結果保持部１３０は、解析部１２０から出力された抽出演算式１８１を記憶部１７０に記憶する。
【００３５】
以上で、解析処理Ｓ１２０についての説明を終わる。解析処理Ｓ１２０により、テーブル化に適している演算式の候補が抽出演算式１８１として抽出される。
【００３６】
＜レイテンシ保管処理Ｓ１３０について＞
図４を用いて、本実施の形態に係るレイテンシ保管処理Ｓ１３０について説明する。
ステップＳ１３１において、高位合成部１４０は、解析処理Ｓ１２０により記憶部１７０に記憶された抽出演算式１８１を読み出す。高位合成部１４０は、高位言語で記述されている抽出演算式１８１を、ハードウェア記述言語に変換する。具体的には、高位合成部１４０は、抽出演算式１８１を高位合成ツールに入力することにより、抽出演算式１８１をハードウェア記述言語に変換する。
ステップＳ１３２において、高位合成部１４０は、ハードウェア記述言語で記載された変換演算式８１０におけるレイテンシを演算式レイテンシ１８３として出力する。高位合成部１４０は、変換演算式８１０と演算式レイテンシ１８３とをレイテンシ情報として出力する。具体的には、高位合成部１４０は、抽出演算式１８１を高位合成ツールに入力し、抽出演算式１８１がハードウェア記述言語で記載された変換演算式８１０と、変換演算式８１０におけるレイテンシである演算式レイテンシ１８３とを出力する。
ステップＳ１３３において、レイテンシ保管部１８２は、抽出演算式１８１がハードウェア記述言語に変換された変換演算式８１０における演算式レイテンシ１８３を、記憶部１７０に記憶する。
【００３７】
以上で、レイテンシ保管処理Ｓ１３０についての説明を終わる。レイテンシ保管処理Ｓ１３０により、テーブル化に適している候補の演算式である抽出演算式１８１のレイテンシが演算式レイテンシ１８３として出力される。
【００３８】
＜判定処理Ｓ１４０について＞
図５を用いて、本実施の形態に係る判定処理Ｓ１４０について説明する。
ステップＳ１４１において、判定部１５０は、記憶部１７０に記憶されている演算式レイテンシ１８３とレイテンシ閾値１７６とを読み出し、演算式レイテンシ１８３とレイテンシ閾値１７６とを比較する。
演算式レイテンシ１８３がレイテンシ閾値１７６以上の場合、処理はステップＳ１４２に進む。
ステップＳ１４２において、判定部１５０は、抽出演算式１８１をテーブル化演算式１８５として出力する。すなわち、判定部１５０は、抽出演算式１８１をテーブル化演算式１８５として記憶部１７０に記憶する。
演算式レイテンシ１８３がレイテンシ閾値１７６より小さい場合、処理を終了する。
【００３９】
記憶部１７０は、入力装置９３０を介して、ユーザから入力されたレイテンシ閾値１７６を予め記憶する。レイテンシ閾値１７６は、ユーザにより指定可能なパラメータである。
【００４０】
以上で、判定処理Ｓ１４０についての説明を終わる。
以上のように、設計支援処理Ｓ１００によれば、テーブル化に適している抽出演算式１８１から、演算式レイテンシ１８３がレイテンシ閾値１７６以上の演算子がテーブル化演算式１８５として抽出される。テーブル化演算式１８５は、判定部１５０の判定処理Ｓ１４０による判定結果１８４である。
【００４１】
次に、図６及び図７を用いて、本実施の形態に係る設計支援装置１００の設計支援処理Ｓ１００を具体例により説明する。
図６及び図７は、ソースコード１８０の具体例を示している。また、回数閾値１７２＝３０、変数閾値１７３＝１、演算子閾値１７５＝５であるものとする。
【００４２】
まず、図６のソースコードの例を用いて、図３の解析処理Ｓ１２０について説明する。
ステップＳ１２１において、演算式解析部１２１は、図６のソースコードから、演算式ｂ［ｉ］＝７＊ｓｑｒｔ（５＊（ｉ＋１）−３）＋１０；を、等式を含む演算式として抽出する。処理はステップＳ１２２に進む。
ステップＳ１２２において、ループ解析部１２２は、演算式のループ回数を解析し、ループ回数（すなわち、テーブルサイズ）は１０であると判定する。ループ解析部１２２は、演算式のループ回数は１０であり、回数閾値１７２は３０であるため、ループ回数≦回数閾値１７２を満たすと判定する。処理はステップＳ１２３に進む。
ステップＳ１２３において、変数解析部１２３は、演算式の変数の数を解析し、変数（演算式中のｉが該当）の数は１個であると判定する。変数解析部１２３は、演算式の変数の数は１であり、変数閾値１７３は１であるため、変数の数≦変数閾値１７３を満たすと判定する。処理はステップＳ１２４に進む。
ステップＳ１２４において、特定演算解析部１２４は、演算式に含まれる演算の種類を解析し、演算式に特定の演算１７４（ここではｓｑｒｔが該当）が含まれると判定する。特定演算解析部１２４は、演算式に特定の演算ｓｑｒｔが含まれると判定したので、処理はステップＳ１２５に進む。
ステップＳ１２５において、演算子解析部１２５は、演算式の演算子を解析し、演算子の数は５個（乗算２個、減算１個、加算１個、平方根１個）と判定する。演算子解析部１２５は、演算子の数は５であり、演算子閾値１７５は５であるため、演算子の数≧演算子閾値１７５を満たすと判定する。演算子解析部１２５は、この演算式ｂ［ｉ］＝７＊ｓｑｒｔ（５＊（ｉ＋１）−３）＋１０；を、抽出演算式１８１として出力する。
【００４３】
次に、図４のレイテンシ保管処理Ｓ１３０による、抽出演算式１８１（ｂ［ｉ］＝７＊ｓｑｒｔ（５＊（ｉ＋１）−３）＋１０；）に対する高位合成の結果、演算式レイテンシ１８３は１０であるとする。
【００４４】
次に、図５の判定処理Ｓ１４０により抽出演算式１８１をテーブル化する対象のテーブル化演算式１８５とするか否かを判定する。ここで、レイテンシ閾値１７６は、５であるものとする。
ステップＳ１４１において、判定部１５０は、演算式レイテンシ１８３が１０であり、レイテンシ閾値１７６が５であるため、演算式レイテンシ１８３≧レイテンシ閾値１７６を満たすと判定する。処理はステップＳ１４２に進む。
ステップＳ１４２において、判定部１５０は、抽出演算式１８１（ｂ［ｉ］＝７＊ｓｑｒｔ（５＊（ｉ＋１）−３）＋１０；）がテーブル化する演算式であると判定し、抽出演算式１８１をテーブル化演算式１８５として記憶部１７０に記憶する。
【００４５】
次に、図７のソースコードの例を用いて、図３の解析処理Ｓ１２０について説明する。
ステップＳ１２１において、演算式解析部１２１は、図７のソースコードから、演算式ｚ［ｘ］［ｙ］＝８＊ｙ＋ｘ；を、等式を含む演算式として抽出する。処理はステップＳ１２２に進む。
ステップＳ１２２において、ループ解析部１２２は、演算式のループ回数を解析し、ループ回数（すなわち、テーブルサイズ）は２００であると判定する。ループ解析部１２２は、演算式のループ回数は２００であり、回数閾値１７２は３０であるため、ループ回数≦回数閾値１７２を満たさないと判定し、処理を終了する。
このように、ループ回数が多すぎる演算式については、テーブル化によるレイテンシの削減が見込めないため、テーブル化する演算子の候補から外している。
【００４６】
図８は、本実施の形態に係るテーブル化演算式１８５をテーブル化した図である。
図８では、図６のソースコードに含まれるテーブル化演算式１８５（ｂ［ｉ］＝７＊ｓｑｒｔ（５＊（ｉ＋１）−３）＋１０；）をテーブル化したものである。テーブル化演算式１８５（ｂ［ｉ］＝７＊ｓｑｒｔ（５＊（ｉ＋１）−３）＋１０；）において、変数ｉの取り得る値（０から９までの整数）の出力値ｂ［ｉ］を算出することにより、図８に示すテーブルが得られる。
【００４７】
設計支援装置１００によりテーブル化演算式１８５が抽出された場合、高位言語の記述において、テーブル化演算式１８５に対してプラグマまたはアトリビュートを付加することにより、高位合成後のＲＴＬがテーブル化される。
図９は、本実施の形態に係るテーブル化演算式１８５をテーブル化する際のプラグマ記述例を示す図である。図９では「＃ｐｒａｇｍａ  ｂ＝ｔａｂｌｅ」をプラグマとしている。
【００４８】
以上で、回路設計において、テーブル化することにより効率的にレイテンシを小さくできるテーブル化演算式１８５を抽出し、抽出したテーブル化演算式１８５をテーブル化する処理についての説明を終わる。
【００４９】
＊＊＊他の構成＊＊＊
本実施の形態では、演算式解析部１２１の処理、ループ解析部１２２の処理、変数解析部１２３の処理、特定演算解析部１２４の処理、演算子解析部１２５の処理の順に処理を行ったが、処理の順番は上記の順番に限らない。
【００５０】
また、本実施の形態では、解析処理Ｓ１２０において、演算式解析部１２１の処理、ループ解析部１２２の処理、変数解析部１２３の処理、特定演算解析部１２４の処理、演算子解析部１２５の処理の全てを実行したが、少なくとも演算式解析部１２１の処理とループ解析部１２２の処理を実行すればよい。
以下に、解析部１２０による解析処理Ｓ１２０のバリエーションについて説明する。
【００５１】
解析部１２０は、ループ回数が回数閾値１７２以下である演算式を抽出演算式１８１として出力する。すなわち、解析部１２０は、解析処理Ｓ１２０において、演算式解析部１２１の処理とループ解析部１２２の処理とを実行する。
【００５２】
また、解析部１２０は、ループ回数が回数閾値１７２以下である演算式を抽出し、この演算式に含まれる変数の数が変数閾値１７３以下である場合に、この演算式を抽出演算式１８１として出力する。すなわち、解析部１２０は、解析処理Ｓ１２０において、演算式解析部１２１の処理とループ解析部１２２の処理と変数解析部１２３の処理とを実行する。
【００５３】
また、解析部１２０は、ループ回数が回数閾値１７２以下である演算式を抽出し、この演算式に含まれる変数の数が変数閾値１７３以下であり、かつ、この演算式が特定の演算を含む場合に、この演算式を抽出演算式１８１として出力する。すなわち、解析部１２０は、解析処理Ｓ１２０において、演算式解析部１２１の処理とループ解析部１２２の処理と変数解析部１２３の処理と特定演算解析部１２４の処理とを実行する。
【００５４】
また、解析部１２０は、ループ回数が回数閾値１７２以下である演算式を抽出し、この演算式に含まれる変数の数が変数閾値１７３以下であり、かつ、この演算式に含まれる演算子の数が演算子閾値１７５以上である場合に、この演算式を抽出演算式１８１として出力する。すなわち、解析部１２０は、解析処理Ｓ１２０において、演算式解析部１２１の処理とループ解析部１２２の処理と演算子解析部１２５の処理とを実行する。
【００５５】
あるいは、解析部１２０は、解析処理Ｓ１２０において、演算式解析部１２１の処理とループ解析部１２２の処理とに加え、変数解析部１２３の処理と特定演算解析部１２４の処理と演算子解析部１２５の処理とをどのように組み合わせて実行しても構わない。
【００５６】
また、設計支援装置１００は、通信装置を備え、通信装置を介して、ユーザから回数閾値１７２、変数閾値１７３、特定の演算１７４、演算子閾値１７５、レイテンシ閾値１７６を受信してもよい。また、設計支援装置１００は、通信装置を介して判定結果１８４を送信してもよい。この場合、通信装置はレシーバとトランスミッタとを備える。具体的には、通信装置は通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。通信装置はデータを通信する通信部として機能する。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
【００５７】
また、本実施の形態では、設計支援装置１００の「部」の機能がソフトウェアで実現されるが、変形例として、設計支援装置１００の「部」の機能がハードウェアで実現されてもよい。
図１０を用いて、本実施の形態の変形例に係る設計支援装置１００ｘの構成について説明する。
図１０に示すように、設計支援装置１００ｘは、処理回路９０９、入力装置９３０、出力装置９４０といったハードウェアを備える。
【００５８】
処理回路９０９は、前述した「部」の機能及び記憶部１７０を実現する専用の電子回路である。処理回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、又は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）である。
【００５９】
「部」の機能は、１つの処理回路９０９で実現されてもよいし、複数の処理回路９０９に分散して実現されてもよい。
【００６０】
別の変形例として、設計支援装置１００の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。即ち、設計支援装置１００の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
【００６１】
プロセッサ９１０、記憶装置９２０、及び、処理回路９０９を、総称して「プロセッシングサーキットリ」という。つまり、設計支援装置１００の構成が図１及び図１０のいずれに示した構成であっても、「部」の機能及び記憶部１７０は、プロセッシングサーキットリにより実現される。
【００６２】
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
【００６３】
＊＊＊本実施の形態の効果の説明＊＊＊
以上のように、本実施の形態に係る設計支援装置１００によれば、演算式のループ回数を解析すると共にレイテンシの大きい演算式を抽出するため、テーブル化をすれば効率的にレイテンシを小さくすることができるテーブル化演算式を的確に抽出することができる。すなわち、本実施の形態に係る設計支援装置１００によれば、ループ回数が多過ぎてテーブル化に適さない演算式はテーブル化演算式１８５から省くことができるので、テーブル化に適した演算式を的確に抽出することができる。
【００６４】
本実施の形態に係る設計支援装置１００によれば、さらに、演算式の変数の数を考慮しているため、テーブル化演算式をより的確に抽出することができる。すなわち、本実施の形態に係る設計支援装置１００によれば、変数の数が多過ぎてテーブル化に適さない演算式はテーブル化演算式１８５から省くことができるので、テーブル化に適した演算式を的確に抽出することができる。
【００６５】
本実施の形態に係る設計支援装置１００によれば、さらに、演算式に含まれる演算の種類を考慮しているため、テーブル化演算式をより的確に抽出することができる。すなわち、本実施の形態に係る設計支援装置１００によれば、特定の演算を含まずテーブル化によるレイテンシの削減が見込めない演算式はテーブル化演算式１８５から省くことができるので、テーブル化に適した演算式を的確に抽出することができる。
【００６６】
本実施の形態に係る設計支援装置１００によれば、さらに、演算式に含まれる演算子の数を考慮しているため、テーブル化演算式をより的確に抽出することができる。すなわち、本実施の形態に係る設計支援装置１００によれば、演算子の数が少なくテーブル化によるレイテンシの削減が見込めない演算式はテーブル化演算式１８５から省くことができるので、テーブル化に適した演算式を的確に抽出することができる。
【００６７】
また、本実施の形態に係る設計支援装置１００によれば、回数閾値１７２、変数閾値１７３、特定の演算１７４、演算子閾値１７５、レイテンシ閾値１７６をユーザにより指定可能なパラメータとしているため、設計対象の回路規模に応じて柔軟に構成を変更することができる。
【００６８】
以上、本発明の実施の形態について説明したが、この実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、設計支援装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、どのような組合せ、あるいは任意のブロック構成で設計支援装置を構成しても構わない。また、設計支援装置は、１つの装置でなく、複数の装置から構成された設計支援システムでもよい。
【００６９】
また、この実施の形態のうち、複数の部分を組合せて実施しても構わない。あるいは、この実施の形態のうち、部分的に実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００７０】
１００，１００ｘ  設計支援装置、１１０  ソースコード取得部、１２０  解析部、１３０  抽出結果保持部、１４０  高位合成部、１５０  判定部、１７０  記憶部、１２１  演算式解析部、１２２  ループ解析部、１２３  変数解析部、１２４  特定演算解析部、１２５  演算子解析部、１７２  回数閾値、１７３  変数閾値、１７４  特定の演算、１７５  演算子閾値、１７６  レイテンシ閾値、１８０  ソースコード、１８１  抽出演算式、１８２  レイテンシ保管部、１８３  演算式レイテンシ、１８４  判定結果、１８５  テーブル化演算式、５１０  設計支援方法、５２０  設計支援プログラム、９０９  処理回路、９１０  プロセッサ、９２０  記憶装置、９２１  補助記憶装置、９２２  メモリ、９３０  入力装置、９４０  出力装置、Ｓ１００  設計支援処理、Ｓ１１０  ソースコード取得処理、Ｓ１２０  解析処理、Ｓ１３０  レイテンシ保管処理、Ｓ１４０  判定処理。
【図１】
0006407181.tif 000002
【図２】
0006407181.tif 000003
【図３】
0006407181.tif 000004
【図４】
0006407181.tif 000005
【図５】
0006407181.tif 000006
【図６】
0006407181.tif 000007
【図７】
0006407181.tif 000008
【図８】
0006407181.tif 000009
【図９】
0006407181.tif 000010
【図１０】
0006407181.tif 000011