"演算処理を表す演算モデルに基づき、該演算処理を予め定められたプログラム言語で記述した原ソースコードを生成する原ソースコード生成手段と、予め定められた変換ルールに従い、前記演算処理にて用いられるいずれかの変数に関して、前記演算モデルにおいて設定されている数値を表現するための形式を変換する変換手段と、前記変換手段により変換された前記形式の前記変数を用いた前記演算処理を前記プログラム言語で記述した変換ソースコードを生成する変換ソースコード生成手段と、前記原ソースコードと前記変換ソースコードとを解析し、各ソースコードから生成されたオブジェクトコードに従いCPUが動作する際に生じるハードウェアリソースの消費量がどの程度かを判別する判別手段と、前記判別手段により判別された前記ハードウェアリソースの消費量に関する選択条件に従い、前記原ソースコードと前記変換ソースコードとのうちの一方を選択する選択手段と、を備えることを特徴とするコード生成装置。請求項1に記載のコード生成装置であって、前記ハードウェアリソースの消費量とは、前記ソースコードから生成された前記オブジェクトコードを記憶する際に必要となる記憶容量と、該オブジェクトコードに従いCPUが動作する際に必要となるRAM容量と、該オブジェクトコードに従い動作して前記演算処理を行うCPUに生じる処理負荷のうちの少なくとも一つであること、を特徴とするコード生成装置。請求項1または請求項2に記載のコード生成装置において、前記変換ルールとは、前記変数の前記形式を、該形式により表現される数値の精度、或いは、該形式により表現可能な数値の範囲のうちの少なくとも一方を向上させることができる前記形式に変換するというルールであること、を特徴とするコード生成装置。請求項3に記載のコード生成装置において、前記変換ルールとは、前記演算処理における前記形式が異なる複数の前記変数を用いた演算手順に関して、これらの変数の前記形式を、該形式により表現される数値の精度、或いは、該形式により表現可能な数値の範囲のうちの少なくとも一方を向上させることができる同一の前記形式に変換するというルールであること、を特徴とするコード生成装置。請求項3または請求項4に記載のコード生成装置において、予め定められた精度で小数により数値を表現する前記形式を固定小数点数形式とし、前記変換ルールの一つは、前記演算処理における精度が異なる前記固定小数点数形式の前記変数が複数用いられた前記演算手順に関して、これらの変数の前記形式を、浮動小数点数により数値を表す前記形式に変換するというルールであること、を特徴とするコード生成装置。請求項3から請求項5のうちのいずれか1項に記載のコード生成装置において、予め定められた範囲の整数を表現可能な前記形式を整数形式とし、前記変換ルールの一つは、前記演算処理における表現可能な整数の範囲が異なる前記整数形式の前記変数が複数用いられた前記演算手順に関して、これらの変数の前記形式を、該変数の前記整数形式にて表現可能な整数の範囲を全て含む、同一の整数の範囲を表現可能な前記整数形式に変換するというルールであること、を特徴とするコード生成装置。請求項1から請求項6のうちのいずれか1項に記載のコード生成装置において、前記演算モデルは、前記演算処理の一部を、当該演算処理における手順の集合であって、当該演算モデルに基づき生成される前記ソースコードにおいてサブルーチンとして記述される関数ブロックとして表しており、前記演算手順とは、1または複数の前記関数ブロックにより実現される手順であること、を特徴とするコード生成装置。請求項1から請求項7のうちのいずれか1項に記載のコード生成装置において、ユーザからの指示に応じて前記選択条件を設定する選択条件設定手段を、さらに備えること、を特徴とするコード生成装置。請求項8に記載のコード生成装置において、前記ハードウェアリソースの消費量とは、前記ソースコードから生成された前記オブジェクトコードを記憶する際に必要となる記憶容量であり、前記選択条件として、前記原ソースコードと前記変換ソースコードとから生成されるそれぞれの前記オブジェクトコードの前記記憶容量の差分と、予め定められた判定用閾値とを比較した結果に関する記憶容量条件が設けられており、前記選択条件設定手段は、ユーザからの指示に応じて前記記憶容量条件に係る前記判定用閾値を設定すること、を特徴とするコード生成装置。請求項1から請求項9のうちのいずれか1項に記載のコード生成装置において、前記演算モデルが表す前記演算処理は、1または複数の手順からなる複数のステップから構成されており、前記判別手段は、前記原ソースコードと前記変換ソースコードについて、それぞれ、前記ステップに対応する記述の集合毎に、前記ハードウェアリソースの消費量がどの程度かを個別に判別し、前記選択手段は、前記記述の集合毎に、該記述の集合における前記ハードウェアリソースの消費量に関する前記選択条件に従いいずれかの前記ソースコードを個別に選択すること、を特徴とするコード生成装置。請求項10に記載のコード生成装置において、前記演算モデルは、前記演算処理の一部を、当該演算処理における手順の集合であって、当該演算モデルに基づき生成される前記ソースコードにおいてサブルーチンとして記述される関数ブロックとして表しており、前記ステップは、1または複数の前記関数ブロックから構成されていること、を特徴とするコード生成装置。請求項11に記載のコード生成装置において、ユーザからの指示に応じて、前記ステップに対応する前記関数ブロックを設定するステップ設定手段を、さらに備えること、を特徴とするコード生成装置。請求項1から請求項12のうちのいずれか1項に記載のコード生成装置において、前記変換ソースコード生成手段は、自動変数を用いて前記形式の変換に必要な処理が行われるように記述された前記変換ソースコードを生成すること、を特徴とするコード生成装置。演算処理を表す演算モデルに基づき、該演算処理を予め定められたプログラム言語で記述した原ソースコードを生成する原ソースコード生成手順と、予め定められた変換ルールに従い、前記演算処理にて用いられるいずれかの変数に関して、前記演算モデルにおいて設定されている数値を表現するための形式を変換する変換手順と、前記変換手順にて変換された前記形式の前記変数を用いた前記演算処理を前記プログラム言語で記述した変換ソースコードを生成する変換ソースコード生成手順と、前記原ソースコードと前記変換ソースコードとを解析し、各ソースコードから生成されたオブジェクトコードに従いCPUが動作する際に生じるハードウェアリソースの消費量がどの程度かを判別する判別手順と、前記判別手順にて判別された前記ハードウェアリソースの消費量に関する選択条件に従い、前記原ソースコードと前記変換ソースコードとのうちの一方を選択する選択手順と、をコンピュータに実行させることを特徴とするコード生成プログラム。ところで、プログラミングにおける変数の型として、整数型,浮動小数点数型,固定小数点数型等、様々な種類が設けられている。そして、演算の精度を向上させるためには、より広範囲の数値を表すことができるよう、データ長がより長い変数を用いることや、浮動小数点数型の変数を用いること等が必要となるが、このような変数を用いることで、ROM,RAM容量やCPUの処理負荷等、ハードウェアリソースの消費量が増加してしまう。これに対し、車載装置等の組み込みシステム用のプログラム開発においては、コストに関する要求が厳しく、ハードウェアリソースの消費量に関して厳しい制約が課せられる。本願発明は上記課題に鑑みてなされたものであり、モデルベース開発において、ハードウェアリソースの消費量を抑える上でより好適な変数の形式を容易に見つけ出すことが可能となるコード生成装置等を提供することを目的とする。上記課題に鑑みてなされた請求項1に記載のコード生成装置は、演算処理を表す演算モデルに基づき、該演算処理を予め定められたプログラム言語で記述した原ソースコードを生成する原ソースコード生成手段と、予め定められた変換ルールに従い、演算処理にて用いられるいずれかの変数に関して、演算モデルにおいて設定されている数値を表現するための形式を変換する変換手段と、を備えることを特徴とする。また、該コード生成装置は、変換手段により変換された形式の変数を用いた演算処理をプログラム言語で記述した変換ソースコードを生成する変換ソースコード生成手段と、原ソースコードと変換ソースコードとを解析し、各ソースコードから生成されたオブジェクトコードに従いCPUが動作する際に生じるハードウェアリソースの消費量がどの程度かを判別する判別手段と、判別手段により判別されたハードウェアリソースの消費量に関する選択条件に従い、原ソースコードと変換ソースコードとのうちの一方を選択する選択手段と、備えることを特徴とする。このような構成によれば、形式が異なる変数を用いて同一の演算処理を行う複数のモデルを作成しなくても、一つの演算モデルを作成するのみで、該演算モデルで定義された形式の変数が用いられた原ソースコードと、変換ルールに従い形式が変換された変数が用いられた変換ソースコードとが生成される。そして、選択条件として、例えば、ROM,RAM容量が小さくなるソースコードを選択する、或いは、CPUの処理負荷を抑えることができるソースコードを選択する等といった条件を設けることで、原ソースコードと変換ソースコードのうち、ハードウェアリソースの消費量が小さくなるソースコードが選択される。すなわち、開発者は、変換ルールにより演算モデルで定義されている変数の形式を一括して変えることで、ハードウェアリソースの消費量を低減可能か否か把握することができ、様々な変換ルールを設け、各変換ルールによりハードウェアリソースの消費量を低減可能か否か試すことができる。このため、演算モデルで定義されている個々の変数の形式を再設定し、異なる形式の変数を用いて同一の演算処理を行う複数の演算モデルを作成するという手間のかかる作業を行わなくても、変換ルールを設定するのみで、現状の演算モデルで定義されている変数の形式よりもハードウェアリソースの消費量を低減可能な変数の形式を見つけ出すことができるのである。したがって、請求項1に記載のコード生成装置によれば、モデルベース開発において、ハードウェアリソースの消費量を抑える上でより好適な変数の形式を容易に見つけ出すことが可能となる。なお、請求項2に記載されているように、ハードウェアリソースの消費量とは、ソースコードから生成されたオブジェクトコードを記憶する際に必要となる記憶容量と、該オブジェクトコードに従いCPUが動作する際に必要となるRAM容量と、該オブジェクトコードに従い動作して演算処理を行うCPUに生じる処理負荷のうちの少なくとも一つであっても良い。こうすることにより、ROM,RAM容量が小さく、CPUの性能が低い低コストのハードウェア環境でプログラムを動作させるための変数の形式を見つけ出すことが可能となる。また、変換ルールに従い変数の形式を変換することで演算処理の精度が悪化してしまうとなると、変換ルールの適用により何らかの障害が発生してしまうおそれがある。そこで、請求項3に記載のコード生成装置では、変換ルールとは、変数の形式を、該形式により表現される数値の精度、或いは、該形式により表現可能な数値の範囲のうちの少なくとも一方を向上させることができる形式に変換するというルールとなっている。このような変換ルールに従った変数の形式の変換によれば、演算処理の精度の悪化を防ぐことができ、変換ルールに従い変数の形式を変えた場合であっても、演算モデルで定義された形式の変数を用いた場合と同等以上の性能や品質を得ることができる。このため、演算モデルで定義された形式の変数を用いた場合に得られる性能や品質を維持しながら、ハードウェアリソースの消費量を抑える上でより好適な変数の形式を容易に見つけ出すことが可能となる。しかしながら、闇雲に変数の形式を変えたとしても、ハードウェアリソースの消費量を抑えることができるとは限らず、どのような手順に用いられる変数の形式をどのように変えるかが問題となる。ここで、固定小数点数型,浮動小数点数型等の数値の表現方法が異なる変数や、データ長の異なる変数等、形式が異なる変数を用いて演算を行う際には、各変数の形式を統一する調整処理が必要となるが、モデルベース開発に用いられる従来のコード生成装置として、このような調整処理の記述を自動生成するものが知られている。しかしながら、演算モデルに基づき生成されたソースコードにおいて、上記演算の各段階で不適切に形式を変える手順が記述されてしまうと、調整処理が効率良く行われず、必要以上に命令数が増え、ハードウェアリソースの消費量が過剰に増加してしまうおそれがある。そこで、請求項4に記載のコード生成装置では、変換ルールとは、演算処理における形式が異なる複数の変数を用いた演算手順に関して、これらの変数の形式を、該形式により表現される数値の精度、或いは、該形式により表現可能な数値の範囲のうちの少なくとも一方を向上させることができる同一の形式に変換するというルールとなっている。このようにして変数の形式を変換することで、演算手順に用いられる変数の形式を予め統一することができ、該演算手順の途中で変数の形式を変える手順を記述する必要が無くなるため、ハードウェアリソースの消費量をより一層抑えることができる。また、変数の形式が、数値の精度、或いは、表現可能な数値の範囲のうちの少なくとも一方を向上させる形式に変換されるため、演算手順の精度の悪化を防ぐことができる。このため、請求項4に記載のコード生成装置によれば、演算モデルで定義された形式の変数を用いた場合の性能等を維持しつつ、より効果的にハードウェアリソースの消費量を抑えることができる変数の形式を容易に見つけ出すことが可能となる。また、一般的に、固定小数点数型の変数を用いた演算は、浮動小数点数型の変数を用いた場合よりも演算の精度は低くなるが、その反面、ハードウェアリソースの消費量を抑えることができるというメリットがある。このため、モデルベース開発においても、開発者は、要求される演算精度に基づく許容範囲内で、なるべく固定小数点数型の変数を用いて演算を行うようモデルを記述する。ここで、固定小数点数型の変数においては、該変数の値が1増減する際の該変数が表す数値の変動幅例えば、2バイト長の固定小数点数型の変数ならば、0x000Aが表す数値と0x0009が表す数値の差分の絶対値、以後、重みと記載が固定され、開発者は、固定小数点数型の変数を用いる際には重みを設定する必要がある。そして、重みが異なる複数の固定小数点数型の変数を用いた演算を行う際には、これらの変数の重みを同一にしなければ正しい演算結果を得ることができず、各変数の重みを同一にする調整処理が必要となる。このため、モデルベース開発に用いられる従来のコード生成装置においても、このような調整処理の記述を自動生成するものが知られている。しかしながら、演算モデルに基づき生成されたソースコードにおいて、上記演算の各段階で不適切に重みを変える手順が記述されてしまうと、調整処理が効率良く行われず、必要以上に命令数が増え、ハードウェアリソースの消費量が過剰に増加してしまうおそれがある。そこで、請求項5に記載のコード生成装置では、予め定められた精度で小数により数値を表現する形式を固定小数点数形式とし、変換ルールの一つは、演算処理における精度が異なる固定小数点数形式の変数が複数用いられた演算手順に関して、これらの変数の形式を、浮動小数点数により数値を表す形式に変換するというルールである。このようにして変数の形式を変換することで、演算手順に用いられる変数を予め浮動小数点数型に統一することでき、演算手順の途中で重みを変える手順を記述する必要が無くなる。また、一般的に、浮動小数点数型の変数を用いた演算は、固定小数点数型の変数を用いた場合よりも演算の精度が高くなるため、変換ルールの適用により演算手順の精度が悪化することを防ぐことができる。このため、請求項5に記載のコード生成装置によれば、演算モデルで定義された形式の変数を用いた場合の性能等を維持しつつ、より効果的にハードウェアリソースの消費量を抑えることができる変数の形式を容易に見つけ出すことが可能となる。また、データ長や符号の有無が異なる整数型の変数を複数用いた演算を行う際には、各変数の符号の有無やデータ長を統一する調整処理を行う必要がある。そして、モデルベース開発に用いられる従来のコード生成装置として、このような調整処理の記述を自動生成するものが知られている。しかしながら、演算モデルに基づき生成されたソースコードにおいて、上記演算の各段階で不適切に形式を変える手順が記述されてしまうと、調整処理が効率良く行われず、必要以上に命令数が増え、ハードウェアリソースの消費量が過剰に増加してしまうおそれがある。そこで、請求項6に記載のコード生成装置では、予め定められた範囲の整数を表現可能な形式を整数形式とし、変換ルールの一つは、演算処理における表現可能な整数の範囲が異なる整数形式の変数が複数用いられた演算手順に関して、これらの変数の形式を、該変数の整数形式にて表現可能な整数の範囲を全て含む、同一の整数の範囲を表現可能な整数形式に変換するというルールである。このようにして変数の形式を変換することで、演算手順に用いられる整数型の変数のデータ長や符号の有無を予め統一することができ、演算手順の途中でデータ長等を変える手順を記述する必要が無くなる。また、各変数にて表現可能な整数値の上限値が低下することや、該整数値の下限値が上昇することは無いため、演算手順の精度が悪化することは無い。このため、請求項6に記載のコード生成装置によれば、演算モデルで定義された形式の変数を用いた場合の性能等を維持しつつ、より効果的にハードウェアリソースの消費量を抑えることができる変数の形式を容易に見つけ出すことが可能となる。また、モデルベース開発においては、モデルにおける記述の一部を、プログラミングにおける関数に相当するサブシステム関数ブロックという単位で表すこともでき、関数ブロックを有するモデルに基づき生成されたソースコードにおいては、関数ブロックでの処理はサブルーチンとして記述される。そして、同一の関数ブロック内で行われる複数の演算手順に対し個別に変換ルールが適用され、各演算手順に用いられる変数が異なる形式に統一されてしまった場合には、各演算手順に用いられる変数同士の形式を統一するための調整処理がさらに必要となり、ハードウェアリソースの消費量が増加してしまうおそれがある。そこで、請求項7に記載のコード生成装置は、演算モデルは、演算処理の一部を、当該演算処理における手順の集合であって、当該演算モデルに基づき生成されるソースコードにおいてサブルーチンとして記述される関数ブロックとして表しており、演算手順とは、1または複数の関数ブロックにより実現される手順となっている。このようにして変数の形式を変換することで、サブルーチン単位で変数の形式が統一され、ハードウェアリソースの消費量をより一層抑えることができる。このため、請求項7に記載のコード生成装置によれば、より効果的にハードウェアリソースの消費量を抑えることができる変数の形式を容易に見つけ出すことが可能となる。また、本願発明におけるコード生成装置を用いて開発されるプログラムが動作するハードウェア環境に応じて、原ソースコードと変換ソースコードとを選択する選択条件は異なるものとなることが考えられる。そこで、請求項8に記載のコード生成装置は、ユーザからの指示に応じて選択条件を設定する選択条件設定手段を、さらに備える。こうすることにより、作成されるプログラムが動作するハードウェア環境に応じて最適な選択条件を設けることができ、ハードウェア環境に見合った変数の形式を容易に見つけ出すことが可能となる。また、請求項9に記載されているように、ハードウェアリソースの消費量とは、ソースコードから生成されたオブジェクトコードを記憶する際に必要となる記憶容量であり、選択条件として、原ソースコードと変換ソースコードとから生成されるそれぞれのオブジェクトコードの記憶容量の差分と、予め定められた判定用閾値とを比較した結果に関する記憶容量条件が設けられており、選択条件設定手段は、ユーザからの指示に応じて記憶容量条件に係る判定用閾値を設定しても良い。こうすることにより、ROM容量を十分に低下させることができる変数の形式を容易に見つけ出すことが可能となる。ところで、既に述べたように、モデルベース開発においては、モデルにおける記述の一部を関数ブロックという単位で表すこともでき、このような関数ブロックを適宜用いることで、演算モデルにて記述されている処理の内容をよりわかり易くすることができる。また、上述した変換ルールに従い変数の形式を変えたとしても、該変数を用いて行われる演算の内容等によっては、ハードウェアリソースの消費量が殆ど変化しない場合や、ハードウェアリソースの消費量が増加してしまう場合もある。このため、例えば、変換ルールの適用により得られた変換ソースコード全体としては、ハードウェアリソースの消費量を十分に低減させることができないという場合であっても、特定の部分においては、ハードウェアリソースの消費量を十分に低減させることができるという場合も考えられる。そこで、請求項10に記載のコード生成装置では、演算モデルが表す演算処理は、1または複数の手順からなる複数のステップから構成されており、判別手段は、原ソースコードと変換ソースコードについて、それぞれ、ステップに対応する記述の集合毎に、ハードウェアリソースの消費量がどの程度かを個別に判別し、選択手段は、記述の集合毎に、該記述の集合におけるハードウェアリソースの消費量に関する選択条件に従いいずれかのソースコードを個別に選択する。こうすることにより、開発者は、演算モデルを構成するステップ単位で変換ルールの適用により得られる効果を計ることができ、変換ルールに従い変数の形式を変えるべき箇所を容易に把握することが可能となる。なお、請求項11に記載されているように、演算モデルは、演算処理の一部を、当該演算処理における手順の集合であって、当該演算モデルに基づき生成されるソースコードにおいてサブルーチンとして記述される関数ブロックとして表しており、ステップは、1または複数の関数ブロックから構成されていても良い。こうすることにより、開発者は、演算モデルの関数ブロック単位で変換ルールの適用により得られる効果を計ることができ、変換ルールに従い変数の形式を変えるべき箇所を容易に把握することが可能となる。なお、請求項11に記載されているように、コード生成装置は、ユーザからの指示に応じて、ステップに対応する関数ブロックを設定するステップ設定手段をさらに備えていても良い。こうすることにより、演算モデルにおける関数ブロック単位で、変換ルールの適用により得られる効果を計る範囲を設定することができ、より柔軟に、変換ルールに従い変数の形式を変えるべき箇所を捜すことができる。また、既に述べたように、組み込みシステム用のプログラム開発においては、コストに関する要求が厳しく、ハードウェアリソースの消費量に関して厳しい制約が課せられる。そこで、請求項12に記載のコード生成装置では、変換ソースコード生成手段は、自動変数を用いて形式の変換に必要な処理が行われるように記述された変換ソースコードを生成する。こうすることにより、変数の形式を変える処理を行うための静的変数が確保されず、RAM容量を節約することができる。なお、請求項13には、請求項1に記載のコード生成装置としてコンピュータを動作させるコード生成プログラムについて記載されている。このようなコード生成プログラムを用いることで、モデルベース開発において、ハードウェアリソースの消費量を抑える上でより好適な変数の形式を容易に見つけ出すことが可能となる。以下、本発明の実施形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。[構成の説明]1コード生成装置の構成について図1には、本実施形態におけるコード生成装置として作動する周知のパーソナルコンピュータPC1の構成を示すブロック図が記載されている。図1に記載されているように、PC1は、ディスプレイ10,HDDハードディスクドライブ20,CPU演算装置30,ROM40,RAM50,入力装置60等を備える。ディスプレイ10は、CPU30から受けた映像信号を、ユーザに対して映像として表示する。入力装置60は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をCPU30に出力する。RAM50は読み出し、書き込み可能な揮発性メモリであり、ROM40は読み出し専用の不揮発性メモリであり、HDD20は読み出し、書き込み可能な不揮発性メモリである。ROM40、HDD20には、CPU30が読み出して実行するプログラム等が予め記憶されている。また、HDD20には、後述するモデルが記憶されている。RAM50は、CPU30がROM40,HDD20に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域、及び作業用のデータを一時的に保存するための記憶領域として用いられる。CPU30は、PC1に電源が投入されることによって起動すると、ROM40から所定のブートプログラムを読み出して実行し、このブートプログラムに規定されるオペレーティングシステムOSその他のプログラムをHDD20から読み出して実行することにより、起動処理を行う。起動処理以後、電源が遮断されるまで、CPU30は、入力装置60からの信号や、OSによってあらかじめ定められたスケジュール等に基づいて、HDD20に記録されている各種プログラムをOS上のプロセスとして実行する。また、上記の起動処理及びプロセスにおいて、CPU30は必要に応じて入力装置60から信号の入力を受け付け、また、ディスプレイ10に映像信号を出力し、また、RAM50,HDD20に対してデータの読み出し/書き込みの制御を行う。2コード生成ツールについて次に、PC1にインストールされている本実施形態のコード生成ツールについて説明する。コード生成ツールは、HDD20に保存され、OS上のプロセスとして実行されるアプリケーションの1つであり、PC1は、コード生成ツールを動作させることで、モデルベース開発を行うためのコード生成装置として作動する。なお、該コード生成装置は、車載装置等といった組み込みシステム向けのプログラム開発に用いられることが考えられるが、これに限定されることは無く、あらゆる用途のプログラム開発に用いることができる。コード生成ツールは、OSの仕様に従ったユーザの入力装置60の操作によって起動し、その後ユーザの入力装置60の操作に基づいてモデルからソースコードを生成する。ソースコードとは、例えばC等のプログラミング言語の仕様に則ってプログラム開発者が作成するプログラムの一表現形態である。ソースコードはコンパイラ、リンカ等に入力されることで、CPU等が直接実行できるオブジェクトコードに変換される。なお、オブジェクトコードもプログラムの一表現形態である。モデルとは、ソースコードよりも記述が簡易になり、かつ人による可読性が高くなる目的で定められたモデル言語仕様に基づいて作成されるプログラムの一表現形態である。モデルとしては、例えばSimulink登録商標によって作成されるSimulinkモデルがある。Simulink登録商標モデルが、Matlab登録商標上で動作するRealTimeWorkshop登録商標:以下RTWと記すに入力されることにより、このRTWが当該Simulink登録商標モデルに対応するソースコードを生成する。Simulink登録商標モデルは、ブロックと呼ばれる機能単位の組み合わせからなる集合体として作成される。組み合わせとは、機能単位間の入出力の繋がりをいう。ブロックの具体例としては、例えば入力される2つの数値データの加算をして出力する加算ブロック等がある。また、Simulink登録商標では、変数における数値の表現形式具体的には、例えば、符号の有無や変数のデータ長等により定められる表現可能な数値の範囲や、浮動小数点数,固定小数点数等といった数値を表現する方式等であるデータ形式として、複数の種類が設けられており、モデルでは、ブロックに対して入出力される数値データが保存される変数のデータ形式が定義されている。また、複数のブロックの集合体をサブシステムというブロックの一種として定義することもできる。このサブシステムは、プログラミングにおける関数に相当し、ブロックの中にブロックが含まれるような入れ子構造のブロックの作成も許されており、サブシステムを有するモデルに基づき生成されたソースコードにおいては、サブシステムでの処理はサブルーチンとして記述される。なお、以後、サブシステムのことを関数ブロックとも記載する。また、Simulink登録商標モデル中の各ブロックは、それぞれ属性情報を有することができる。属性情報としては、例えば当該ブロックの名称、入出力するデータの値域定義等がある。本実施形態におけるモデルも、Simulink登録商標モデルと同様にブロックから成り、サブシステムとしてのブロックの記述やブロックの入れ子構造が許され、各ブロックが属性情報を有することができる。また、ブロック或いはサブシステムへの入出力となる数値データが保存される変数のデータ形式を任意に定義することができる。なお、図2には、モデルの一例として、数値を4バイトの固定小数点数により表すデータ形式である固定小数点数形式の変数を用いた演算処理を表す固定小数点数モデル100が記載されている。なお、該固定小数点数モデル100は、関数ブロックを示すものであっても良い。図2に記載されているように、固定小数点数モデル100は、ブロック111~113からなる第一集合体110と、ブロック121~123からなる第二集合体120と、これらの集合体のうちの一方を選択するスイッチ130とを有している。そして、数値データであるUnit8_in_A107の値に応じてスイッチ130により選択された集合体から出力された数値データが、固定小数点数モデル100から出力される数値データint32_out_X140となることを示している。また、各ブロックに接続される結線が数値データの入出力を示しており、ブロックに向かう矢印が付された結線が該ブロックに入力される数値データであり、ブロックを起点とする矢印が付された結線が、該ブロックから出力される数値データである。そして、各結線には、該結線に対応する数値データが保存される変数のデータ形式の定義114~119,124~129がなされている。また、第一集合体110には、数値データであるint32_in_X101~int32_in_Z103が入力される。また、各ブロック111~113は、当該ブロックに入力される数値データの加算を行うことを示しており、入力される各数値データは、対応する結線に定義されたデータ形式の変数に保存された状態で各ブロックにて加算されると共に、加算結果が、対応する結線に定義されたデータ形式の変数に保存された状態で各ブロックから出力されることを示している。一方、第二集合体120には、同様の数値データであるint32_in_X104~int32_in_Z106が入力され、また、各ブロック121~123は、当該ブロックに入力される数値データの減算を行うことを示している。そして、第一集合体110と同様にして、結線に対応するデータ形式の変数に保存された状態で、各ブロックにおいて数値データの入出力がなされる。また、図3には、本実施形態のコード生成ツール200の構成を示すブロック図が記載されている。該コード生成ツール200は、演算処理を表わす演算モデル210に基づき原ソースコードを生成すると共に、該演算モデル210で定義されているものとは異なるデータ形式の変数を用いて同様の演算処理を記述した変換ソースコードを生成するよう構成されている。具体的に説明すると、図3に記載されているように、コード生成ツール200は、その機能面から、原ソースコード生成部220,変換ソースコード生成部230,選択部250,設定部270に分けられる。そして、原ソースコード生成部220は、入力される演算モデル210に基づき、該演算モデルで定義されたデータ形式の変数を用いて演算処理が記述されている原ソースコードを生成する。一方、変換ソースコード生成部230は、予め設定された変換ルール240詳細は後述するに従い演算モデル210におけるいずれかの変数についてデータ形式を変換し、変換したデータ形式の変数を用いた同様の演算処理が記述された変換ソースコードを生成する。なお、変換ソースコードでは、データ形式の変換に必要な処理が自動変数を用いて行われるよう記述される。そして、選択部250は、演算モデル210に基づき生成された原ソースコード,変換ソースコードを解析し、各ソースコードにて記述された演算処理を行う際のハードウェアリソースの消費量がどの程度かを判別すると共に、ハードウェアリソースの消費量に関する選択条件260詳細は後述するに基づき、一方のソースコードを選択する。なお、ハードウェアリソースの消費量とは、例えば、各ソースコードから生成されるオブジェクトコードのサイズや、該オブジェクトコードに従いCPUが動作する際に必要となるRAM容量や、演算処理に必要なCPUの処理負荷等を意味する。さらに、設定部270は、入力装置60を介して受け付けた指示に応じて選択条件260や変換ルール240を設定する。なお、原ソースコード生成部220,変換ソースコード生成部230,選択部250,設定部270の区別は、あくまでもコード生成ツール200の機能面から見た区別であって、必ずしもプログラムとしては分離している必要はない。実際、本実施形態においては、これらは一体のプログラムとして実現される。また、生成されたソースコードは、HDD20に記録されているコンパイラやリンカを実行することによってオブジェクトコードに変換される。3変換ルールについてコード生成装置では、変数のデータ形式として、特定のデータ長の固定小数点数形式や、単精度或いは倍精度の浮動小数点数により数値を表すもの浮動小数点数形式や、特定範囲の整数を表すもの整数形式等が設けられている。なお、本実施形態では、同様の方式で数値を表現するデータ形式であっても、表現可能な数値範囲が異なる場合換言すれば、符号の有無やデータ長等が異なる場合には、データ形式が異なるものとしている。また、固定小数点数形式の変数においては、該変数の値が1増減する際の、該変数が表す数値の変動幅例えば、2バイト長の固定小数点数型の変数ならば、0x000Aが表す数値と0x0009が表す数値の差分の絶対値、以後、重みと記載が固定され、開発者は、固定小数点数形式の変数を用いる際には重みを設定する必要がある。なお、本実施形態では、重みの異なる固定小数点形式の変数は、データ形式が異なるものとしている。そして、異なるデータ形式の変数同士の演算が行われる場合には、各変数のデータ形式を同一にする調整処理が必要となり、コード生成装置は、このような調整処理の記述を自動生成するよう構成されている。しかしながら、演算の各段階で不適切に変数のデータ形式を変える手順が記述されてしまうと、調整処理が効率良く行われず、ハードウェアリソースの消費量が過剰に増加してしまうおそれがある。そこで、異なるデータ形式の変数を用いた演算が行われている関数ブロック等において、これらの変数のデータ形式を予め統一するといった変換ルールにより、ハードウェアリソースの消費量を抑えることができると考えられる。また、変数のデータ形式の統一に際しては、演算モデル210により表される演算処理の精度を落とすことの無いようデータ形式を変換することが必要となる。このため、変数のデータ形式を、元のデータ形式により表される数値の精度、或いは、表現可能な数値の範囲のうちの少なくとも一方を向上させることが可能なデータ形式に変換する変換ルールを設けることが考えられる。このような点を踏まえ、コード生成装置では、以下のような変換ルールが設けられている。まず、第一の変換ルールとして、重みの異なる固定小数点数形式の変数が複数用いられた演算が行われている箇所例えば、関数ブロックにおいて、これらの変数を、同一データ長の浮動小数点数形式に変換するというルールが設けられている。また、第二の変換ルールとして、表現可能な整数の範囲が異なる整数形式の変数が複数用いられた演算が行われている箇所例えば、関数ブロックにおいて、これらの変数のデータ形式を、各変数に係る整数形式で表現可能な整数の範囲を全て含む同一の範囲を表現可能な整数形式に変換するというルールが設けられている。4選択条件について上述したハードウェアリソースの消費量に関する選択条件としては、原ソースコードを用いた場合と変換ソースコードを用いた場合のハードウェアリソースの消費量を比較し、ハードウェアリソースの消費量がより低くなるソースコードを選択するといったものが考えられる。また、これ以外にも、選択条件として、変換ソースコードを用いることでハードウェアリソースの消費量を十分低減させることができる場合には変換ソースコードを選択し、そうでない場合には、原ソースコードを選択するといったものも考えられる。具体的には、選択条件として、例えば、原ソースコードと変換ソースコードに基づき生成される各オブジェクトコードのサイズに関する条件を設定しても良い。すなわち、オブジェクトコードのサイズが小さいソースコードを選択するといった条件でも良いし、原ソースコードに基づくオブジェクトコードのサイズから変換ソースコードに基づくオブジェクトコードのサイズを減算した差分が、所定の判定用閾値を超える場合に、変換ソースコードを選択するといった条件特許請求の範囲の記憶容量条件に相当であっても良い。なお、このような選択条件が設けられる場合には、選択部250は、例えば、各ソースコードに基づきオブジェクトコードを実際に生成し、各オブジェクトコードのサイズを比較することで、各ソースコードの解析を行っても良い。また、設定部270は、開発者からの指示に応じて、上述の判定用閾値を設定するよう構成されていても良い。また、選択条件として、各ソースコードに基づき生成されたオブジェクトコードに従い演算処理を行う際のCPUの処理負荷に関する条件が考えられる。このような場合には、オブジェクトコードのサイズが小さいソースコードを、CPUの処理負荷が低くなるソースコードとみなして選択しても良い。また、選択部250は、各オブジェクトコードに基づき演算処理に必要な命令数を計算し、命令数の少ないオブジェクトコードに対応するソースコードを、CPUの処理負荷が低くなるソースコードとみなして選択しても良い。また、選択条件として、各ソースコードに基づき演算処理を行う際に必要となるRAM使用量に関する条件が考えられる。このような場合には、選択部250は、各ソースコードを解析して演算処理に必要な静的変数や動的変数のサイズを見積り、該サイズの小さいソースコードをRAM使用量が少ないソースコードとして選択しても良い。なお、上述したオブジェクトコードのサイズに基づく条件や、CPUの処理負荷に関する条件や、RAM使用量に基づく条件を組み合わせたものを、選択条件としても良い。[動作の説明]次に、本実施形態のコード生成装置PC1が、演算モデルに基づき原ソースコードと変換ソースコードとを生成すると共に、選択条件に従い一方のソースコードを選択する自動コード生成処理について、図4に記載のフローチャートを用いて説明する。なお、本処理は、入力装置60を介して、開発者が選択した演算モデルからソースコードを生成する旨の指示を受け付けた際に開始される。S305では、CPU30は、開発者により選択された演算モデルを読み込み、S310に処理を移行する。S310では、CPU30は、演算モデルを構成する関数ブロックのうち、ソースコードの生成を行っていないいずれかの関数ブロックを選択し、該関数ブロックに対応する原ソースコードを生成するS315。そして、S320に処理を移行する。S320では、CPU30は、上述した第一,第二の変換ルールに従いデータ形式を変換することで、関数ブロック内で用いられている変数のデータ形式を統一する。そして、S325に処理を移行する。S325では、CPU30は、変換したデータ形式の変数を用いて関数ブロックにより表されている演算を記述した変換ソースコードを生成し、S330に処理を移行する。S330では、CPU30は、原ソースコードと変換ソースコードの解析を行い、各ソースコードを用いた場合のハードウェアリソースの消費量を判別すると共に、解析結果と選択条件とに基づき一方のソースコードを選択するS335。そして、原ソースコードを選択した場合には、S340に処理を移行し、変換ソースコードを選択した場合には、S345に処理を移行する。S340では、CPU30は、選択中の関数ブロックにおいて原ソースコードを選択した旨を示す選択結果情報をRAM50に記憶し、S350に処理を移行する。一方、S345では、CPU30は、選択中の関数ブロックにおいて変換ソースコードを選択した旨を示す選択結果情報をRAM50に記憶し、S350に処理を移行する。S350では、CPU30は、モデルを構成する全ての関数ブロックについて原ソースコード等の生成を行ったか否かを判定し、肯定判定の場合にはS350:Yes、本処理を終了すると共に、否定判定の場合にはS350:No、S310に処理を移行する。なお、CPU30は、RAM50に記憶されている選択結果情報に基づき、各関数ブロックにて原ソースコードと変換ソースコードのどちらが選択条件に合致するものであったかをディスプレイ10を介して提示しても良い。また、選択結果情報に基づき、各関数ブロックについて選択されたソースコードを特定し、特定したソースコードを繋ぎ合わせたものを演算モデルから生成されたソースコードとして生成し、RAM50に記憶しても良い。[具体例について]次に、自動コード生成処理により生成される原ソースコードと変換ソースコードの具体例について説明する。以下の具体例では、自動コード生成処理によりC言語のソースコードが生成されるものとする。まず、先に述べた図2に記載の固定小数点数モデル100からは、図5aに記載の原ソースコード400と、図5bに記載の変換ソースコード410とが生成される。図2に記載されているように、固定小数点数モデル100では、各結線に設けられている定義114~119,124~129として、sfix32_Sp033,sfix32_Sp0031,sfix32_S1p023といった記載がなされている。これらの記載は、各結線に対応する数値データが保存される変数のデータ形式が、それぞれ、重みが0.033,0.0031,1.023である4バイトの固定小数点数形式として定義されていることを示している。すなわち、固定小数点数モデル100では、重みの異なる固定小数点数形式の変数同士の演算が行われるため、これらの変数の重みを統一する調整処理が必要となる。このため、該固定小数点数モデル100に基づき生成される原ソースコード400では、該調整処理原ソースコード400の太字の下線部分が記述される。そして、固定小数点数モデル100には、第一の変換ルールが適用される。第一の変換ルールに基づく変数の変換により、固定小数点数モデル100で定義された固定小数点数形式の変数が単精度の浮動小数点数形式に変換され、変換結果を反映した変換ソースコード410が生成される。変換ソースコード410においても変数のデータ形式を変換する処理が行われるが変換ソースコード410の太字の下線部分、原ソースコード400における調整処理よりも記述量が少ない。このため、変換ソースコード410のほうが、生成されるオブジェクトコードのサイズが小さくなり、ハードウェアリソースの消費量が少なくなると考えられ、自動コード生成処理では変換ソースコード410が選択されると考えられる。なお、原ソースコード400や変換ソースコード410では、固定小数点数モデル100に入力される数値データであるint32_in_X101~int32_in_Z103,int32_in_X104~int32_in_Z107が、変数int32_in_X~int32_in_Zとして記述されている。そして、変換ソースコード410における太字の下線部分が、変数のデータ形式を単精度の浮動小数点数形式に変換する処理となる。該処理では、変数int32_in_X~int32_in_Zが、自動変数として定義された単精度浮動小数点数型の変数であるfloat32_in_X~float32_in_Zに代入されており、自動変数を用いて変数のデータ形式を変換するよう記述されている。また、図6aには、演算モデルの一例として、整数形式の変数を用いた演算処理を行う整数モデル500が記載されている。なお、該整数モデル500もまた、関数ブロックを示すものであっても良い。図6aに記載されているように、整数モデル500は、数値データであるunit8_in_A501~unit8_in_C503を入力とすると共に、数値データであるint32_out_X540を出力とする。また、整数モデル500は、加算を行う加算ブロック510と乗算を行う乗算ブロック520とを有している。そして、整数モデル500では、各ブロックを結ぶ結線に設けられている定義530~534として、uint8,int16,int32といった記載がなされており、これらは、各結線に対応する数値データが格納される変数のデータ形式の定義が、1バイト長で符号無し整数を表す整数形式,2バイト長で符号付整数を表す整数形式,4バイト長で符号付整数を表す整数形式であることを示している。すなわち、整数モデル500では、表現可能な整数の範囲が異なる整数形式の変数同士の演算が行われるため、これらの変数のデータ形式を統一する調整処理が必要となる。このため、該モデルに基づき生成される原ソースコード600では、該調整処理原ソースコード600の太字の下線部分が記述される図6b参照。そして、整数モデル500には、第二の変換ルールが適用される。第二の変換ルールに基づく変数の変換により、変換ソースコード610においては、整数モデル500に入力される数値データであるunit8_in_A501~unit8_in_C503が、予め4バイト長の符号付整数型の変数int32_in_A~int32_in_Cに保存される図6c参照。このため、調整処理が不要となり、変換ソースコード610のほうがオブジェクトコードのサイズが小さくなり、ハードウェアリソースの消費量が低くなるため、自動コード生成処理では、変換ソースコード610が選択されると考えられる。[効果]本実施形態のコード生成装置によれば、演算モデルにて定義されたデータ形式の変数を用いて演算処理を記述した原ソースコードと共に、変換ルールに従いデータ形式が変換された変数を用いて同一の演算処理を記述した変換ソースコードが生成される。そして、サブルーチン単位で原ソースコードと変換ソースコードの解析がなされ、ハードウェアリソースの消費量がより少なくなるソースコードが選択される。このため、演算モデルで定義されている個々の変数のデータ形式を再設定し、変換ルールで指定されたデータ形式の変数が用いられた演算モデルを作成するという手間のかかる作業を行わなくても、様々な変換ルールを設け、各変換ルールによりハードウェアリソースの消費量を低減可能か否か試すことができる。したがって、本実施形態のコード生成装置によれば、モデルベース開発において、ハードウェアリソースの消費量を低減させる上でより好適となる変数の形式を容易に見つけ出すことが可能となる。[他の実施形態]1本実施形態の自動コード生成処理では、演算モデルにおける一の関数ブロック単位で変換ルールが適用されており、第一,第二の変換ルールにより、該関数ブロックで用いられる変数のデータ形式が統一される。しかしながら、これに限定されることは無く、複数の関数ブロック単位で変換ルールが適用されても良いし、関数ブロックとは異なる演算モデルにおける記述の集合単位で変換ルールが適用されても良い。このような場合であっても、同様の効果を得ることができる。さらに、設定部270は、開発者からの指示に応じて、変換ルールが適用される範囲となる関数ブロックの集合や、演算モデルにおける記述の集合を設定しても良い。こうすることにより、より柔軟に変換ルールを適用することができるため、ハードウェアリソースの消費量をより一層抑えることができる変数のデータ形式を見つけ出すことが可能となる。2また、本実施形態の自動コード生成処理では、関数ブロック単位換言すれば、サブルーチン単位で、ソースコードの解析結果と選択条件に基づきソースコードの選択が行われる。しかしながら、これに限定されることは無く、複数の関数ブロック単位でソースコードの選択が行われても良いし、関数ブロックとは異なる演算モデルにおける記述の集合単位でソースコードの選択が行われても良い。また、ソースコード全体におけるハードウェアリソースの消費量に基づき、ソースコード全体を対象として選択が行われても良い。このような場合であっても、同様の効果を得ることができる。なお、このような選択の対象となる範囲が、特許請求の範囲におけるステップに相当する。さらに、設定部270は、開発者からの指示に応じて、ソースコードの選択を行う単位となる関数ブロックの集合や、演算モデルにおける記述の集合を設定しても良い。こうすることにより、より柔軟に、変換ルールの適用により得られる効果を計ることが可能となり、より効果的に、ハードウェアリソースの消費量を抑えることができる変数のデータ形式を見つけ出すことが可能となる。3また、本実施形態では、第一,第二の変換ルールが設けられているが、これら以外にも、次のような変換ルールが設けられていても良い。すなわち、整数形式の変数と固定小数点数形式の変数とが用いられた演算が行われている箇所例えば、関数ブロックにおいて、これらの変数のデータ形式を重みが同一である固定小数点数形式或いは、同一データ長の浮動小数点数形式に変換するといったルールが設けられていても良い。また、整数形式の変数と固定小数点数形式の変数と単精度の浮動小数点数形式の変数が用いられた演算が行われている箇所例えば、関数ブロックにおいて、これらの変数のデータ形式を単精度或いは倍精度の浮動小数点数形式に変換するといったルールが設けられていても良い。また、データ長の異なる固定小数点数形式の変数が複数用いられた演算が行われている箇所例えば、関数ブロックにおいて、これらの変数のデータ形式をデータ長,重みが同一である固定小数点数形式或いは、同一データ長の浮動小数点数形式に変換するといったルールが設けられていても良い。このような変換ルールを適用することで、異なるデータ形式の変数を用いた演算が行われている関数ブロック等において、変数のデータ形式を、数値の精度、或いは、表現可能な数値の範囲のうちの少なくとも一方を向上させることが可能なデータ形式に統一することができ、同様の効果を得ることができる。[特許請求の範囲との対応]上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。本実施形態のコード生成ツール200が、コード生成プログラムに相当する。また、コード生成ツール200の原ソースコード生成部220,変換ソースコード生成部230,選択部250,設定部270として動作するPC1のCPU30が、それぞれ、原ソースコード生成手段,変換手段及び変換ソースコード生成手段,判別手段及び選択手段,選択条件設定手段及びステップ設定手段に相当する。また、自動コード生成処理におけるS315が原ソースコード生成手順に、S320が変換手順に、S325が変換ソースコード生成手順に、S330が判別手順に、S335が選択手順に相当する。"