機能を記述した機能記述データの解析によるプロファイル情報を得る工程と、前記機能記述データを入力とし生成する電子回路の設計条件を得る工程と、前記プロファイル情報及び前記設計条件に基づいて、電子回路を生成する電子回路生成ツールが解釈できる形態で電子回路を生成する指示情報を生成する工程とを備えることを特徴とする電子回路最適化方法。前記機能記述データの解析によるプロファイル情報は、前記機能記述データを実行することにより取得したものであることを特徴とする請求項1記載の電子回路最適化方法。前記機能記述データの解析によるプロファイル情報は、前記機能記述データのコードカバレッジ、機能カバレッジ、データ依存性、及びデータ局所性のうちの少なくとも1つを含むことを特徴とする請求項1記載の電子回路最適化方法。前記設計条件は、最大ゲート数、動作周波数、消費電力、及び電子回路の実装に使用されるトランジスタのライブラリ情報のうちの少なくとも1つを含むことを特徴とする請求項1記載の電子回路最適化方法。機能を記述した機能記述データの解析によるプロファイル情報を得る手段と、前記機能記述データを入力とし生成する電子回路の設計条件を得る手段と、前記プロファイル情報及び前記設計条件に基づいて、電子回路を生成する電子回路生成ツールが解釈できる形態で電子回路を生成する指示情報を生成する手段とを備えることを特徴とする電子回路最適化装置。機能を記述した機能記述データの解析によるプロファイル情報を得る工程と、前記機能記述データを入力とし生成する電子回路の設計条件を得る工程と、前記プロファイル情報及び前記設計条件に基づいて、電子回路を生成する電子回路生成ツールが解釈できる形態で電子回路を生成する指示情報を生成する工程とをコンピュータに実行させるためのプログラム。しかしながら、前記特許文献1及び前記特許文献2に記載の技術では、機能記述データの各コードのうち実行されていないコードを削除するだけである。よって、機能記述データにおいて少なくとも1回以上実行されたコード記述に関しては、実行頻度の高低にかかわらず同じ条件で電子回路の生成が行われることになる。このため、ほとんど実行されないコードに対し高速化が図られ、結果として消費電力が増大することがある。また、ほとんど実行されないコードの高速化のために電子回路の配線が長くなったり、実装面積が大きくなったりすることで、結果として頻繁に実行されるコードの高速化において満足な結果が得られないことがある。また、前記特許文献3に記載の技術では、機能記述データの仮実行を行い動的に解析を行いながら最適化を行っているが、仮実行を行うコンパイラとその結果を基に実行オブジェクトの変換を行うコンパイラは同一のものである。前記特許文献4に記載の技術においても、取得したプロファイル情報を実行オブジェクトの変換を行ったものと同一のコンパイラに対し入力を行う。このため、一般的に機能記述データの実行を行うシミュレータと、機能記述データから電子回路を生成するツールが分かれている電子回路の設計環境においては適用が困難である。本発明に係る電子回路最適化方法は、機能を記述した機能記述データの解析によるプロファイル情報を得る工程と、前記機能記述データを入力とし生成する電子回路の設計条件を得る工程と、前記プロファイル情報及び前記設計条件に基づいて、電子回路を生成する電子回路生成ツールが解釈できる形態で電子回路を生成する指示情報を生成する工程とを備えることを特徴とする。本発明によれば、機能記述データの解析によるプロファイル情報に基づいて各コードの最適化条件を決定し電子回路の生成を行うことができ、より良好な状態で動作速度実装面積消費電力の平衡を図ることができる。以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施形態は一例に過ぎず、本発明は図示された構成等に限定されるものではない。第1の実施形態本発明の第1の実施形態について説明する。図1は、第1の実施形態に係る電子回路最適化を含む電子回路生成の全体フローを示す図である。図1において、101~106の構成や動作は、図17に示したものと同様である。101は、電子回路の機能を記述した機能記述データである。102は、機能記述データ101の検証に用いるテストベクタである。103はシミュレータである。104は、テストベクタ102による検証結果の判定を行う手段である。105は、シミュレーションの実行により取得したコードカバレッジである。106は、機能記述データ101の検証が十分であるか否かの判定を行う手段である。107は、電子回路設計条件である。電子回路設計条件107には、例えば、電子回路の動作周波数、電子回路生成時の制約条件である最大ゲート数、消費電力、電子回路の実装に使用されるトランジスタのライブラリ情報のうちの少なくとも1つが含まれる。108は、電子回路最適化ツールである。電子回路最適化ツール108についての詳細な説明は、図2に示すフローチャートを用い後述する。電子回路最適化ツール108は、コードカバレッジ105と電子回路設計条件107を入力とし、最適化指示情報109を生成する。110は、電子回路生成ツールである。電子回路生成ツール110は、最適化指示情報109の指示に従い機能記述データ101から電子回路111を生成する。図2は、第1の実施形態における電子回路最適化ツール108の処理手順を示すフローチャートである。電子回路の最適化処理が開始されると、まずステップS200にて、ツール108は、機能記述データ101の構文解析を行う。図3に機能記述データ101の一例を示す。構文解析では、コメント文の排除とデリミタによるトークンの分割と解釈を行い、機能記述を1コード毎に分割する。図3に示した例では、2行目がコメント文であり排除される。また、本例では1行につき1コードの記述を行っているが、1行に複数コード、又は複数行で1コードの記述がなされていることもある。例えば、図3に示した例の5行目と6行目は、Process2ConditionBtrueのように1行に記述される場合がある。この場合には、ツール108が、1行につき1コードへの変換を行う。次に、ステップS201にて、ツール108は、解釈を行った機能記述データ101から複数の条件判断を含む分岐文を基に分岐点の抽出を行い、機能記述データ101を分岐点と処理部に分割しラベルを付けていく。図4に図3に示した機能記述データから分岐点抽出を行い、ラベル付けを行った例を示す。また、分岐文として解釈される構文一覧を表1に示す。例えば、ツール108は、図3に示した例の4行目、if7行目、else13行目、を1つのif構文内での処理であると解釈し、ConditionAで表されている分岐条件を分岐点として抽出を行う。また、ツール108は、同時にラベル分岐1を付ける。また、図3に示した例の5行目は、表1に示される構文とは一致しないため、ツール108は処理部として解釈を行う。また、ツール108は、同時にラベル処理2を付ける。続く6行目も、表1に示される構文とは一致しないため、ツール108は処理部として解釈を行う。ここで、ラベル処理2との間に分岐が存在しないため、ツール108は、6行目はラベル処理2からの一連の処理であると解釈し、同一のラベル処理2を付ける。次に、ステップS202にて、ツール108は、ステップS201において抽出した分岐点を基にフローグラフの作成を行う。図3に例示した機能記述データから作成したフローグラフを図5に示す。フローグラフは、ステップS201において付けたラベルを使用して作成される。例えば、図3に例示した機能記述データに対して付けたラベル分岐1は、図5に示す要素502にあたり、ラベル処理2は、図5に示す要素503にあたる。なお、図5に示す他の各要素についても、例示した機能記述データに対して付けたラベルのそれぞれに対応している。次に、ステップS203にて、ツール108は、ステップS202において作成したフローグラフの縮退を行う。図6に、ステップS203で行うフローグラフ縮退の処理手順を示す。ステップS600にて、ツール108は、ループ処理に係る分岐があるか否かの判定を行う。ループ処理に係る分岐がある場合には、ステップS601にて、ツール108は、ループ内にgoto文等による処理のジャンプがあるか否かの判定を行う。goto文等による処理のジャンプがある場合には、ツール108は、縮退処理を実行せずに終了する。一方、goto文等による処理のジャンプがない場合には、ステップS603にて、ツール108は、ループ前後の処理とループ内の処理を1つのシーケンシャルな処理とみなしてフローグラフの縮退を行う。また、ステップS600での判定の結果、ループ処理に係る分岐がない場合には、ステップS602にて、ツール108は、分岐点における分岐条件が静的に固定されているか否かの判定を行う。分岐条件が静的に固定されている場合には、ツール108は、分岐前の処理と分岐後に実行される処理をシーケンシャルな一連の処理とみなしてフローグラフの縮退を行う。一方、分岐条件が静的に固定されていない場合には、ツール108は、縮退処理を実行せずに終了する。本実施形態で、ループ前後の処理とは、図5に示したフローグラフにおいて分岐2505の前後の処理3504及び処理5507を指し、図4に示した機能記述データでは、8行目の処理3及び12行目の処理5である。ループ内の処理とは、図5に示した処理4506を指し、図4に示した機能記述データでは、10行目の処理4である。また、図5に示した例において、分岐5513の前後の処理8512及び処理10515がループ前後の処理であり、処理9514がループ内の処理である。また、本実施形態で、分岐条件が静的に固定されているとは、図5に示したフローグラフにおいて分岐3508の前の処理2503を指す。図4に示した機能記述データにおいて、5行目及び6行目の処理2では、14行目の分岐3の条件をtrueに固定している。これにより、処理2を実行した後には必ず処理6が実行される。このため、ツール108は、処理2と処理6がシーケンシャルな一連の処理であるとみなし、フローグラフの縮退を行う。図7に縮退処理後のフローグラフを示す。図7に示すフローグラフは、図5に示したフローグラフに対して縮退処理を行ったものである。図7に示すフローグラフでは、図5に示したフローグラフでの分岐2505及び処理4506のグラフが縮退され、処理4705の一つの処理で表されていることがわかる。同様に、図7に示すフローグラフでは、図5に示したフローグラフでの分岐5513及び処理9514のグラフが縮退され、処理9712の一つの処理で表されていることがわかる。また、図5に示したフローグラフでの処理2503は分岐3508へ入力されていたのが、図7に示すフローでの処理2703は、処理6708へ入力されていることがわかる。次に、ステップS204にて、ツール108は、プロファイル情報とステップS203において作成されたフローグラフを基に各分岐点での分岐確率を計算する。ここで、プロファイル情報は、機能記述データのコードカバレッジ、機能カバレッジ、データ依存性、データ局所性の少なくとも1つ以上を含む。また、本実施形態において、分岐確率とは各分岐点での分岐条件の発生確率である。なお、本実施形態では、プロファイル情報として機能記述データ101のコードカバレッジを使用する。そのプロファイル情報の例を図8に示す。例えば、図8に示す例において、4行目のif文に着目する。このif文は、図4に示した例において分岐1として識別されている。分岐1の分岐条件により、それぞれ処理2と処理3が実行される。図8に示す例において、5行目から6行目が処理2にあたり、8行目が処理3にあたる。図8に示すように、分岐1は10回実行されている。また、処理2は3回実行されており、処理3は7回実行されている。これにより、分岐1において分岐条件が真になる確率は30、偽になる確率は70となる。このようにして得られる各分岐点での分岐確率の計算結果をフローグラフへ反映する。図9に、図7に示したフローグラフに対して分岐確率を反映させた例を示す。例えば、図9に示す例において、分岐1902に対し、真になる確率30と偽になる確率70が記録されている。ステップS205にて、ツール108は、図9に示した分岐確率計算後のフローグラフから、各処理の実行確率を計算する。本実施形態において実行確率とは、その処理が実行される割合を示す。例えば、処理1はプログラムの起動後に必ず実行されるので、その実行確率は100となる。また、分岐1後の処理2及び処理3は、入れ子やgoto文等による複雑な処理を含まない単純分岐であるので、その実行確率は分岐確率と一致しそれぞれ30と70になる。例示した機能記述データに係る各処理の実行確率を表2に示す。ステップS206にて、ツール108は、電子回路設計条件107を基に、各処理から電子回路を生成する際の最適化条件を決定するための判定値を算出する。本実施形態においては、判定値以上の実行確率を持つ処理は電子回路を生成する際に高速化を優先するものとし、判定値以下の実行確率を持つ処理は電子回路を生成する際に小面積化を優先するものとする。図10に電子回路設計条件107の例を示す。本実施形態では、電子回路設計条件107として電子回路の動作周波数、電子回路への実装時に使用されるライブラリ情報、電子回路設計時の制約条件となる最大ゲート規模数を用いる。このように、本実施形態における設計条件としては、最大ゲート数、動作周波数、消費電力、電子回路の実装に使用されるトランジスタのライブラリ情報の少なくとも1つ以上を含む。ここで、動作周波数やゲート規模数は、機能記述データ101の複雑度やコード行数により左右される項目である。本実施形態では、簡易的にゲート規模数はコード行数に比例し、動作周波数はコード行数に反比例するものとして説明を行う。動作周波数Fを満たすコード行数KFは、KF=PF/Fと表され、ゲート規模数Gを満たすコード行数KGは、KG=PG×Gと表される。動作周波数及びゲート規模数を同時に満たすコード行数Kは、K=PFPG/F×Gと表すことができる。ここで、PGとPFは電子回路の実装を行うライブラリ毎に決まる係数である。実際のコード行数をkとし前述の数式より得られるコード行数Kとの割合から判定値を算出する。例えば、実際のコード行数と算出したコード行数の差が10以内であれば、動作周波数及びゲート規模数の両者を満たすことが可能であるため50を判定値とする。また、実際のコード行数が算出したコード行数に対し10以上少ない場合は、動作周波数及びゲート規模数の両者を容易に満たすことが可能であると判断し、30を判定値とする。実際のコード行数が算出したコード行数に対し10以上多い場合は、70を判定値とする。本実施形態では、実際のコード行数と算出したコード行数がほぼ一致するものとし、50を判定値とするものとして説明を進める。次に、ステップS207にて、ツール108は、ステップS206において求めた判定値とステップS205において求めた各処理の実行確率に従って、最適化条件を決定する。表3に50を判定値として決定した各処理に係る回路の最適化条件を示す。例えば、表3において処理1は高速化を行うと決定している。これは、表2において処理1の実行確率が100であるからである。また、処理2は小面積化を行うと決定している。処理2の実行確率が30であるからである。ステップS208にて、ツール108は、ステップS207において決定した最適化条件を最適化指示情報109としてファイル出力を行う。図11に、最適化指示情報を出力したファイル例を示す。例えば、処理1に対する最適化指示は高速化であり、処理2に対する最適化指示は小面積化である。これをファイルへ出力すると、図11に示す1行目及び2行目になる。以上説明したように、第1の実施形態によれば、機能記述データに係るシミュレーション実行により取得したプロファイル情報等に基づいて、各処理の最適化条件を決定し電子回路の生成を行うことができる。これにより、より良好な状態で最適化された、動作速度実装面積消費電力の平衡を図った電子回路の生成が可能となる。例えば、プロファイル情報としてコードカバレッジを使用することで、実行頻度に応じて優先すべき最適化条件を与え細かな最適化を行うことが可能となる。本実施形態では、最適化指示情報として高速化優先及び小面積化優先を使用したが、高速化優先と低消費電力化優先に置き換えてもよい。また、電子回路生成に使用するライブラリを指示してもよい。図12に例示するように、低Vt低閾値のトランジスタのライブラリ及び高Vt高閾値のトランジスタのライブラリを指示することにより高速性と消費電力をより良好に満たす回路を生成することが可能である。例えば、例示した機能記述データでの処理1に対しては、低Vtのライブラリの使用を指示することにより高速化を行うことが可能である。また、複数の指示を組み合わせることも可能である。例えば、例示した機能記述データでの処理1に対して、図11に示した1行目の高速化指示と図12に示した低Vtのライブラリの使用指示を同時に行うことも可能である。第2の実施形態次に、本発明の第2の実施形態について説明する。図13は、第2の実施形態における電子回路最適化ツール108の処理手順を示すフローチャートである。図13に示すステップS200~S207の各処理は、図2に示したステップS200~S207の各処理と同様である。また、第2の実施形態においても、第1の実施形態と同様に図3に示した機能記述データを一例に説明する。第2の実施形態では、ステップS1308にて、ツール108は、機能記述データ101の最適化を実施する。ステップS1308での処理は、機能記述データ101内のすべての処理に対して実行される。本実施形態では、ループ処理の高速化を例に説明を行う。ループ処理の高速化としては、ループの展開が一般的である。図14に、ステップS1308で行うループ展開処理のフローチャートを示す。ステップS1400にて、ツール108は、対象の処理の実行確率が判定値以上であるか否かの判定を行う。実行確率が判定値以下の処理であれば、ツール108は、この対象の処理についてのループ展開処理を終了する。ここで判定値は、第1の実施形態と同様に求められるものであり、以下では50を判定値とするものとして説明を進める。例えば、例示した機能記述データでの処理2は、表2に示したように実行確率が30であり判定値以下であるので、処理2についてはステップS1400での判定によりループ展開処理を終了する。次に、ステップS1401にて、ツール108は、対象の処理がループ内の処理であるか否かの判定を行う。ループ内の処理でなければ、ツール108は、この対象の処理についてのループ展開処理を終了する。ループ内の処理であるか否かの判定は、フローグラフ縮退処理S203時の情報を基に行われる。例えば、図5に示したフローグラフにおいて、分岐2505をループの分岐、処理4506をループ内の処理と判断してフローグラフの縮退を行っているが、この情報を基にツール108はループ内の処理であるか否かの判定を行う。例えば、例示した機能記述データでの処理1は、表2に示したように実行確率が100であるが、ループ内の処理ではないので、処理1についてはステップS1401での判定によりループ展開処理を終了する。一方、例示した機能記述データでの処理4は、表2に示したように実行確率が70であり、かつループ内の処理であるので、処理4については次のステップS1402へ進む。次に、ステップS1402にて、ツール108は、ループ回数が固定か否かの判定を行うとともに、ループ回数が展開を行うのに現実的な回数であるか否かの判定を行う。本実施形態では、例えば4回以下を展開するのに現実的なループ回数として判定を行う。本実施形態において、ループの分岐は、図5に示したフローグラフで分岐2505と分岐5513の2箇所に存在している。図3に示した機能記述データにおいて、分岐2505のループ回数は、9行目のCONSTANTで指定されている。CONSTANTは、1行目のdefine文で値が指定されているので、分岐2505のループ回数は固定となる。また、回数は4回であり現実的な回数と判定される。これにより、分岐2505により実行されるループ内の処理である処理4506については、次のステップS1403へ進む。一方、分岐5513のループ回数は、23行目のvariableで指定されている。variableは、22行目でunsignedint型の変数として宣言されており、値が固定されていない変数である。これにより、分岐5513により実行されるループ内の処理である処理9514については、ステップS1402での判定によりループ展開処理を終了する。次に、ステップS1403にて、ツール108は、対象の処理についてgoto文等による制御の移動がないかどうかの判定を行う。goto文等による制御の移動がある場合には、ツール108は、この対象の処理についてのループ展開処理を終了する。例えば、図5に示したフローグラフでの分岐2505のループ内で実行される処理4506にはgoto文等が存在しないため、処理4についてはさらに最適化処理を進める。次に、ステップS1404にて、ツール108は、対象の処理についてサブルーチンコールがないかどうかの判定を行う。サブルーチンがある場合には、ツール108は、この対象の処理についてのループ展開処理を終了する。ここで、図5に示したフローグラフでの処理4506にはサブルーチンコールがないものとして、さらに説明を続ける。ステップS1405にて、ツール108は、対象の処理についてループ展開を実行し、ファイルへの修正を行う。図15にループ展開処理後の機能記述データを示す。図15に示す機能記述データの処理4は、図3に示した機能記述データの10行目にあたる処理である。これを展開すると、図15に示す例での9行目から12行目の処理になる。また、ループ処理の展開を行うと同時に、ラベルの付け替えを実施する。例えば、ループ処理の展開によりfor文が削除されるので、削除されたfor文に対応する分岐ラベルを削除する。例えば、図4に示した例での9行目のラベル分岐2が、図15に示す例では削除されている。また、例えば展開後のループ内の処理に対して展開前のループ内の処理と同一のラベルを付ける。図4に示した例ではラベル処理4は10行目に付けられているが、図15に示す例ではラベル処理4は9行目から12行目へ付け替えられている。機能記述データ101内のすべての処理処理1~処理12に対し、ステップS1308での最適化を実行し、次のステップS1309へ進む。次に、ステップS1309にて、ツール108は、ステップS1308において最適化された機能記述データ101へのpragma文の追加を行う。pragma文により電子回路生成での最適化指示を行う。ステップS1309の処理では、ラベル付けされた各処理の前後にpragma文の追加を行う。なお、最適化指示情報及び判定値は第1の実施形態と同じものとして説明する。ツール108は、機能記述データ101の文頭からpragma文追加の処理を逐次的に行っていく。処理の先頭へ到達すると、その処理の前に最適化の指示を指定するpragma文を挿入し、その処理の最後へ到達すると、挿入した最適化の指示取消を指定するpragma文を挿入する。これを繰り返し、ツール108は、機能記述データの終端までpragma文の挿入処理を実行する。図16にpragma文挿入後の機能記述データの例を示す。例えば、ラベル処理1の処理に対し、3行目及び5行目にpragma文が挿入されている。ラベル処理4の処理に対しては、15行目及び20行目にpragma文が挿入されている。第2の実施形態によれば、機能記述データに係るシミュレーション実行により取得したプロファイル情報等に基づいて、各処理の最適化条件を決定し電子回路の生成を行うことができる。これにより、より良好な状態で最適化された、動作速度実装面積消費電力の平衡を図った電子回路の生成が可能となる。例えば、プロファイル情報としてコードカバレッジを使用することで、実行頻度に応じて優先すべき最適化条件を与え細かな最適化を行うことが可能となる。さらに、機能記述データに対して最適化のための修正を行い、最適化指示をpragma文により与えているため、電子回路生成ツール110が最適化指示情報を解釈できない場合でも、電子回路生成ツール110がエラーにより電子回路の生成を中断することがない。本発明の他の実施形態また、本発明は、以下の処理を実行することによっても実現される。即ち、前述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータまたはCPUやMPU等がプログラムを読み出して実行する処理である。なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。