(57)【要約】【課題】ハードウェアとソフトウエアとで構成されるシステムの機能シミュレーション対象モデルの修正を容易にする。【解決手段】コンピュータプログラムで作成されるシステムモデル１３は、演算子を多重定義する演算子関数と演算対象の変数とを含み該関数に所定時間を費やす演算コスト関数の呼び出しを含むクラスを宣言するとともにこれら関数を定義するアーキテクチャ定義部３０と、該クラスのオブジェクトを作成する宣言部３２と、該システムの動作を表すためにオブジェクト間の演算を行う処理部３３とを有し、該所定時間はソフトウエア又はハードウエアの演算実行時間に相当し、該システムのアーキテクチャに応じて該所定時間が異なり、該システムのアーキテクチャ変更に対し該処理部の内容を変えずに該所定時間の値を変更する。【選択図】　　　　　図１
2004038390.tif 000002
【特許請求の範囲】
【請求項１】
機能シミュレーション対象の、ハードウェアとソフトウエアとで構成されるシステムモデルをコンピュータプログラムで作成する方法であって、該コンピュータプログラムは、
演算子を多重定義する演算子関数と演算対象の変数とを含み該関数に所定時間を費やす演算コスト関数の呼び出しを含むアーキテクチャクラスを宣言し該演算子関数及び該演算コスト関数を定義するアーキテクチャ定義部と、
該クラスのオブジェクトを作成する宣言部と、
該システムの動作を表すためにオブジェクト間の演算を行う処理部と、
を有し、該所定時間はソフトウエア又はハードウエアの演算実行時間に相当し、該システムのアーキテクチャに応じて該所定時間が異なり、該システムのアーキテクチャ変更に対し該処理部の内容を変えずに該所定時間の値を変更することを特徴とする機能シミュレーション対象モデル作成方法。
【請求項２】
該システムのアーキテクチャに応じて該所定時間が互いに異なる該クラスを同一演算子に対し複数有し、
該システムのアーキテクチャ変更に対し該処理部の内容を変えずに該宣言部の記述を変更することを特徴とする請求項１記載の機能シミュレーション対象モデル作成方法。
【請求項３】
該アーキテクチャ定義部はさらに、該演算コスト関数を含む基本クラスの宣言と、該所定時間を定めるために該基本クラスに対し該演算コスト関数を上書きする、該所定時間の値毎の派生クラスの宣言とを含み、
アーキテクチャに応じた所定時間をもつ演算コスト関数の呼び出しを行うオブジェクトが該宣言部で作成されるように派生クラスのオブジェクトを指定する呼び出し関数指定部をさらに有することを特徴とする請求項１記載の機能シミュレーション対象モデル作成方法。
【請求項４】
該アーキテクチャクラスはさらに、データ転送時間に対応した所定時間を費やす転送コスト関数の呼び出しを含み、
該オブジェクトの間の演算を、データを受信して演算し又はデータを演算して送信する動作に対応させることを特徴とする請求項１乃至３のいずれか１つに記載の機能シミュレーション対象モデル作成方法。
【請求項５】
（ａ）請求項４記載の方法で作成された該システムモデルをシミュレータで所定期間動作させ、動作中に出力される、該使用中のハードウエア構成ブロックの種別を示すデータを記憶装置に格納しておき、
（ｂ）該所定期間経過後に該データを該記憶装置から読み出して、各時刻で使用中のハードウエア構成ブロックの種別と数を求め、
（ｃ）該種別と数とに基づいて該アーキテクチャを評価することを特徴とする機能シミュレーション対象モデル評価方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ハードウェアとソフトウエアとで構成されるシステムの機能シミュレーション対象モデル作成方法及び作成されたモデルの評価方法に関する。
【０００２】
【従来の技術】
例えばワンチップマイクロコンピュータに周辺半導体装置が接続されたシステムを機能設計しこれを評価する場合、従来では図６に示すような処理が行われていた。すなわち、ワンチップマイクロコンピュータのソフトウエアモデル１０と周辺半導体装置のハードウエアモデル１１とを別々にプログラムで作成し、シミュレータ１２によりソフトウエアモデル１０とハードウエアモデル１１とを連動させ、その結果に基づいてシステムを評価し、リーズナブルでなければソフトウエアモデル１０とハードウエアモデル１１とを修正してシミュレーションを再度行なうという動作を繰り返していた。
【０００３】
【発明が解決しようとする課題】
しかしながら、ソフトウエアモデル１０とハードウエアモデル１１とが別体であるため、これらの一方を修正するとそれに合わせて他方を修正しなければならず、煩雑であった。例えば製品価格を下げるためにハードウエアの一部をソフトウエアで置き換える場合、ハードウエアモデル１１を修正し、これに合わせて、ソフトウエアモデル１０を修正しなければならなかった。処理速度が仕様を満たさず、ソフトウエアの一部をハードウエアで置き換える場合についても同様であった。モデルに対しこのような修正が頻繁に行なわれるので、システムの開発期間が長くなる原因となっていた。
【０００４】
本発明の目的は、このような問題点に鑑み、修正が容易な、ハードウェアとソフトウエアとで構成されるシステムの機能シミュレーション対象モデル作成方法及び作成されたモデルの評価方法を提供することにある。
【０００５】
【課題を解決するための手段及びその作用効果】
本発明による、機能シミュレーション対象の、ハードウェアとソフトウエアとで構成されるシステムモデルをコンピュータプログラムで作成する方法の一態様では、該コンピュータプログラムは、
演算子を多重定義する演算子関数と演算対象の変数とを含み該関数に所定時間を費やす演算コスト関数の呼び出しを含むアーキテクチャクラスを宣言し該演算子関数及び該演算コスト関数を定義するアーキテクチャ定義部と、
該クラスのオブジェクトを作成する宣言部と、
該システムの動作を表すためにオブジェクト間の演算を行う処理部と、
を有し、該所定時間はソフトウエア又はハードウエアの演算実行時間に相当し、該システムのアーキテクチャに応じて該所定時間が異なり、該システムのアーキテクチャ変更に対し該処理部の内容を変えずに該所定時間の値を変更する。
【０００６】
この構成によれば、該システムモデルのシミュレーション結果に基づいてハードウエアの一部とソフトウエアの一部を一方から他方へ置き換えたり、ハードウエアの一部又は全部の処理速度を変更したりするアーキテクチャ変更に対し、該処理部の内容を変えずに該所定時間の値を変更すればよいので、該システムモデルの修正が容易である。
【０００７】
本発明による機能シミュレーション対象モデル作成方法の他の態様では、該システムのアーキテクチャに応じて該所定時間が互いに異なる該クラスを同一演算子に対し複数有し、
該システムのアーキテクチャ変更に対し該処理部の内容を変えずに該宣言部の記述を変更する。
【０００８】
この構成によれば、該宣言部の記述を変更することにより処理部での処理時間を変更することができるので、該システムモデルを容易に修正することが可能となる。
【０００９】
本発明による機能シミュレーション対象モデル作成方法のさらに他の態様では、該アーキテクチャ定義部はさらに、該演算コスト関数を含む基本クラスの宣言と、該所定時間を定めるために該基本クラスに対し該演算コスト関数を上書きする、該所定時間の値毎の派生クラスの宣言とを含み、
アーキテクチャに応じた所定時間をもつ演算コスト関数の呼び出しを行うオブジェクトが該宣言部で作成されるように派生クラスのオブジェクトを指定する呼び出し関数指定部をさらに有する。
【００１０】
この構成によれば、１つのクラスを複数の処理時間に対応させることができるので、アーキテクチャ定義部の構成が簡単になる。
【００１１】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【００１２】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態を説明する。
【００１３】
図２は、機能設計対象の、ハードウエアとソフトウエアとからなるシステムの構成例を示す概略ブロック図である。
【００１４】
このシステムは、ワンチップマイクロコンピュータ２０と、その周辺装置とで構成されている。ワンチップマイクロコンピュータ２０は、ＭＰＵ２１にメモリ２２、Ｉ／Ｏインタフェース２３及び２４がバスで接続されている。Ｉ／Ｏインタフェース２３にはハードウエアブロック２５〜２８が接続され、Ｉ／Ｏインタフェース２４にはハードウエアブロック２９が接続されている。
【００１５】
各ハードウエアブロックは、機能ブロックであり、ハードウエアブロックによる処理とソフトウエアによる処理との違いは、処理時間のみである。
【００１６】
このシステムの開発において、機能モデルを作成し、その評価のためにシミュレーションを行なう場合、ワンチップマイクロコンピュータ２０のモデルは、処理時間を考慮した、メモリ２２に格納されるプログラムで表される。ハードウエアブロック２５〜２９も同様に、処理時間を考慮した、それぞれの機能を果たすプログラムで表される。
【００１７】
したがって、システム全体のモデルを１つのプログラムで表してこのプログラムを動作させることにより、シミュレーションを行うことができる。この場合、プログラム中の各処理部はモデル構成部分のハーウエア構成の違いによる実行時間を考慮する必要がある。シミュレーション結果に基づきハードウエアの一部を省略してソフトウエアでその機能を実現したり、逆に、ソフトウエアの一部をハードウエアで置き換えたり、ハードウエアの処理速度を変更したりするする場合には、ソフトウエア又はハードウエアの処理速度に応じて、処理に必要なプログラム実行時間を変更すればよい。並列処理は、ソフトウエアとハードウエアによる処理を区別せずに、マルチタスク処理で表すことができる。マルチタスク処理は、例えば、マルチスレッド方式により実行される。
【００１８】
しかしながら、ワンチップマイクロコンピュータ２０による処理とハードウエアブロック２５〜２９による処理とが混在しているので、プログラムの各部で処理時間を考慮しなければならず、また、モデルの一部修正に対しプログラム全体にわたって処理時間を変更しなければならない。そこで、処理時間の表現方法を工夫して煩雑さを避ける必要がある。
【００１９】
図１は、本発明の原理構成を示すブロック図である。
【００２０】
プログラムで作成された上述のシステムモデル１３は、シミュレータ１２Ａにより動作され、その結果に基づいてシステムを評価し、リーズナブルでなければシステムモデル１３を修正してシミュレーションを行なうという動作を繰り返し行う。
【００２１】
システムモデル１３は、そのアーキテクチャの各要素を抽象的に定義するアーキテクチャ定義ファイル３０と、これを具体化すると共にモデルの動作を表すソースコードファイル３１とからなる。以下においては、プログラム言語がＣ＋＋である場合について説明する。
【００２２】
アーキテクチャ定義ファイル３０は、クラスの宣言と、クラスのメンバー関数の定義とからなる。ソースコードファイル３１は、クラスのオブジェクトを作成するオブジェクト作成部３２と、作成されたオブジェクトに対して処理を行なうデータ処理部３３とからなる。
【００２３】
図３は、アーキテクチャ定義ファイル３０及びソースコードファイル３１のより具体的な構成例を示す。
【００２４】
アーキテクチャ定義ファイル３０は、アーキテクチャ定義部３０１〜３０４を備えている。アーキテクチャ定義部３０１は、３２ビット整数の加算と、その実行に要する時間とを定義するものであり、クラスＩｎｔ３２の宣言と、このクラスのメンバー関数である‘＋’演算子関数の定義とからなる。この関数内では、他の関数ｓｐｅｎｄ＿ｔｉｍｅ（１０）を呼び出している。
【００２５】
ｓｐｅｎｄ＿ｔｉｍｅ（１０）は、シミュレータ１２Ａに対し長さ１０の時間（時間１０）だけ費やす関数であり、この時間はシミュレーションにおける加算実行時間である。加算自体の演算時間は、シミュレータ１２Ａにより０とみなされる。この点は、関数ｓｐｅｎｄ＿ｔｉｍｅ以外の他の処理についても同様である。時間の単位は、シミュレータ１２Ａがシステムモデル１３を動作させる単位であり、マルチスレッド方式によるマルチタスクにおいて、各タスクを単位時間だけ動作させた後に、シミュレーション時間を１だけインクリメントするという処理が繰り返される。
【００２６】
クラスＩｎｔ３２の宣言の具体例は、次の通りである。
2004038390.tif 000003
ソースコードファイル３１のクラスＩｎｔ３２のオブジェクト作成部３２１では、クラスＩｎｔ３２のオブジェクトを作成する。クラスＩｎｔ３２のオブジェクト作成部３２１は、例えば
Ｉｎｔ３２　ｄ，　ｅ，　ｆ；
と記述される。これにより、クラスＩｎｔ３２のオブジェクトｄ、ｅ及びｆが作成される。
【００２７】
データ処理部３３１は作成されたオブジェクトに対するデータ処理であり、例えば
ｄ　＝　ｅ　＋　ｆ；
と記述される。
【００２８】
この加算を実行すると、クラスＩｎｔ３２の定義部３０１により通常の加算が行なわれ、さらにｓｐｅｎｄ＿ｔｉｍｅ（１０）が読み出されるので、これをハードウエアブロックまたはソフトウエアによる加算時間に対応させることができる。
【００２９】
オブジェクト作成後は、どの箇所で該オブジェクトに対し加算演算を行なってもｓｐｅｎｄ＿ｔｉｍｅ（１０）が実行され、ソースコードファイル３１に関数ｓｐｅｎｄ＿ｔｉｍｅを直接記述する必要がない。また、シミュレーション結果に基づいて上述のように処理をハードウエアの一部とソフトウエアの一部を一方から他方へ置き換えたり、ハードウエアの一部又は全部の処理速度を変更したりする場合には、関数ｓｐｅｎｄ＿ｔｉｍｅ（ｘ）の引数値ｘを変えるだけでよい。したがって、モデルの作成及び修正が容易になる。
【００３０】
同様に、アーキテクチャ定義部３０２は、６４ビット整数の加算と、その実行に要する時間とを定義するものであり、クラスＩｎｔ６４の宣言と、このクラスのメンバー関数である‘＋’演算子関数の定義とからなる。この関数内では、関数ｓｐｅｎｄ＿ｔｉｍｅ（２０）を呼び出している。
【００３１】
この引数値がアーキテクチャ定義部３０１のそれと異なるので、アーキテクチャ定義部３０２をアーキテクチャ定義部３０１とは異なるハードウエアブロックの処理に対応させることができる。また、クラスＩｎｔ３２のオブジェクト作成部３２１を、クラスＩｎｔ６４のオブジェクト作成部に変更すれば、データ処理部３３１での処理時間が変わる。したがって、オブジェクト作成部を変更するだけでモデルを容易に修正することが可能となる。
【００３２】
上記同様に、アーキテクチャ定義部３０３は、３２ビット浮動小数点数の乗算とその実行に要する時間とを定義するものであり、アーキテクチャ定義部３０４は、６４ビット浮動小数点数の乗算とその実行に要する時間とを定義するものである。
【００３３】
図３ではクラスＩｎｔ３２のオブジェクト作成部３２１とクラスＦｌｔ３２のオブジェクト作成部３２２とを分離して記述しているが、両オブジェクト作成部を纏めて１ヵ所に記述してもよいことは勿論である。
【００３４】
図３の例では、加算演算に対し異なる引数値ｘのｓｐｅｎｄ＿ｔｉｍｅ（ｘ）を対応させるために、引数値ｘの数だけ同様のクラスを宣言しそのメンバ関数を定義しなければならない。
【００３５】
次に、図４を参照して、１つのクラスＩｎｔ３２の宣言で複数の引数値ｘのｓｐｅｎｄ＿ｔｉｍｅ（ｘ）を間接的かつ選択的に呼び出す場合を説明する。
【００３６】
この場合、クラスＩｎｔ３２とは別に、引数値ｘの異なるｓｐｅｎｄ＿ｔｉｍｅ（ｘ）を呼び出す複数のクラスを宣言しておき、これらのクラスの１つをポインタで指定することにより、１つのクラスＩｎｔ３２の定義で複数の引数値ｘのｓｐｅｎｄ＿ｔｉｍｅ（ｘ）を間接的かつ選択的に呼び出す。
【００３７】
アーキテクチャ定義ファイル３０Ａのアーキテクチャ定義部３０１Ａにおいて、クラスＩｎｔ３２が宣言され、‘＋’演算子関数が定義され、この関数内でポインタを使って基本クラスＡｒｃのメンバ関数ｆ（）を呼び出している。ｆ（）＝０の‘＝０’は仮想関数であることを示している。この関数内には、関数ｓｐｅｎｄ＿ｔｉｍｅ（ｘ）の呼び出しは無く、基本クラスＡｒｃに対する派生クラスＡｒｃ１及びＡｒｃ２の各々において、互いに異なる引数値ｘをもつｓｐｅｎｄ＿ｔｉｍｅ（ｘ）を呼び出している。
【００３８】
ソースコードファイル３１Ａの派生クラス指定・オブジェクト作成部３２１Ａにおいて、基本クラスＡｒｃの静的メンバであるポインタに派生クラスＡｒｃ２のアドレスを格納することにより派生クラスＡｒｃ２を指定し、クラスＩｎｔ３２のオブジェクトを作成する。これにより、ソースコードファイル３１Ａのデータ処理部３３１での加算において、ｓｐｅｎｄ＿ｔｉｍｅ（４０）が実行される。
【００３９】
アーキテクチャ定義部３０１Ａの具体例は次の通りである。
2004038390.tif 000004
上記関数Ｉｎｔ３２＿Ａｄｄ＿Ｃｏｓｔ（）は、図４中の関数ｆ（）に対応している。
【００４０】
基本クラスＡｒｃの宣言部４１の具体例は次の通りである。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
ｃｌａｓｓ　Ｔａｓｋ　｛
ｓｔａｔｉｃ　Ｔａｓｋ＊　ｃｒｎｔ＿ｔａｓｋ（）；／＊　シミュレーションモデルがタスク実現に利用するスレッドの管理機能（互いに並列に実行されるタスクを実現するための機能）が提供　＊／
2004038390.tif 000005
上記具体例において、ｓｔｄ：：ｍａｐ＜　Ｔａｓｋ＊，　Ａｒｃｈ＊　＞　ｔａｓｋ＿ａｒｃｈ＿ｍａｐは、Ｔａｓｋクラスあるいはその派生クラスオブジェクトへのポインタと、Ａｒｃｈクラスあるいはその派生クラスオブジェクトへのポインタとの関連を格納するテーブルであり、各タスクがある時点で利用しているアーキテクチャを記録する。
【００４１】
ｔａｓｋ＿ａｒｃｈ＿ｍａｐ（Ｔａｓｋ：：ｃｒｎｔ＿ｔａｓｋ（））　＝　ａｒｃｈは、これを実行しているタスクをスレッド管理機能から入手し、そのタスクとａｒｃｈで示すアーキテクチャとの関連をテーブルに格納することを意味している。
【００４２】
派生クラスＡｒｃ１の宣言部４２及び派生クラスＡｒｃ２の宣言部４３の具体例は次の通りである。
2004038390.tif 000006
クラスＩｎｔ３２のオブジェクト作成部３２１の具体例は次の通りである。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Ａｒｃｈ１　Ａ；
Ａｒｃｈ：：ｕｓｅ＿ａｒｃｈ（＆Ａ）；
Ｉｎｔ３２　ｄ，ｅ，ｆ；
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
データ処理部３３１の具体例は次の通りである。
【００４３】
ｄ　＝　ｅ　＋　ｆ；
次に、他の具体例を説明する。
【００４４】
以上の例を拡張して、データ処理部３３に演算式を記述するだけで、データを受信し演算する処理又はデータを演算しその結果を転送する処理、例えば図２のハードウエアブロック２６と２７との間、ハードウエアブロック２５と２８の間、又は、ハードウエアブロック２５と２９との間で所定量のデータを送受しその後で演算を行う処理を表すことができる。この場合、演算子関数において、どのハードウエアブロック間であるかにより異なるデータ送受時間に対応したｓｐｅｎｄ＿ｔｉｍｅ（ｘ）を呼び出す。引数値ｘは、予め設定しておいたＡｒｃｈ間の関連から得るためのテーブルに格納している。以下にその具体例を示す。
【００４５】
アーキテクチャ定義ファイル３０１Ａのクラス宣言部の具体例は次の通りである。
2004038390.tif 000007
2004038390.tif 000008
上記具体例において、‘＝’演算子関数ｏｐｅｒａｔｏｒ＝は、左辺値の存在するＡｒｃｈを最新のＡｒｃｈに設定することを意味している。これにより、＝の左辺のオブジェクトが、それを呼び出したアーキテクチャに設定される。
【００４６】
ｓｔｄ：：ｍａｐ＜　Ａｒｃｈ＊，　ｉｎｔ　＞　ｔｒａｎｓｆｅｒ＿ｃｏｓｔ＿ｔａｂｌｅは、各アーキテクチャ（ハードウエアブロック）毎に持っている、他アーキテクチャとの間の通信コスト（通信時間）を格納するテーブルであり、Ａｒｃｈクラスあるいはその派生クラスオブジェクトへのポインタを与えることで通信コストを得ることができる。
【００４７】
ｔｒａｎｓｆｅｒ＿ｃｏｓｔ＿ｔａｂｌｅ［ａ］　＝　ｃは、各アーキテクチャ毎に持っている、他アーキテクチャとの間の通信コスト（通信時間）格納テーブルに対し、アーキテクチャａとの通信コストがｃであることを設定している。
【００４８】
ｃｒｎｔ＿ａｒｃｈ（）は、Ａｒｃｈクラスの静的メンバ関数であり、それを呼び出したタスクをスレッド管理機能から得、それとＡｒｃｈクラスの静的メンバであるｔａｓｋ＿ａｒｃｈ＿ｍａｐとから、呼び出したタスクがその時点で利用しているアーキテクチャを得るために用いる。
【００４９】
データ処理部３３１の具体例は次の通りである。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Ａｒｃｈ１　Ａ；
Ａｒｃｈ２　Ｂ；
Ｂ．Ｓｅｔ＿Ｔｒａｎｓ＿Ｃｏｓｔ（＆Ａ，　１００）；
Ａｒｃｈ：：ｕｓｅ＿ａｒｃｈ（＆Ａ）；
Ｉｎｔ３２　ｄ，ｅ；
ｄ　＝　１００；
Ａｒｃｈ：：ｕｓｅ＿ａｒｃｈ（＆Ｂ）；
ｅ　＝　ｄ　＋　２０；
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
上記具体例において、Ｂ．Ｓｅｔ＿Ｔｒａｎｓ＿Ｃｏｓｔ（＆Ａ，　１００）は、通信コストテーブルに、アーキテクチャＢのアーキテクチャＡとの通信コストが１００であることを設定している。
【００５０】
次に、システムモデル１３の評価方法について説明する。
【００５１】
システムモデル１３には、互いに並列処理されるタスクが記述されており、シミュレータ１２Ａはこれに基づいてマルチタスクを実行するシミュレーションを行う。モデルのソースコードファイル３１において、各ハードウエアブロックの動作開始及び終了時点でそのブロック名をメモリに格納しておき、シミュレーション終了後にこれを読み出すことにより図５に示すような並列処理結果が得られる。
【００５２】
図５中のＡ〜Ｃは、図２中のハードウエアブロックに記載した記号であり、例えばブロックＡの矩形はブロックＡの動作期間を示している。ブロックＡ〜Ｃの同時刻最大使用数はそれぞれ２、２及び１であり、ブロックのＡ〜Ｃのハードウエア価格をそれぞれ例えば１００、２０００及び１０とすると、周辺装置の価格見積値は１００×２＋２０００×２＋１０×１＝４２１０となる。この価格と、処理時間２５の要求値に対する％とから、システムの構成がリーズナブルであるかどうかを評価することができる。
【００５３】
また、ブロックＡ〜Ｃの使用電力をそれぞれ例えば１０Ｗ、２００Ｗ及び１Ｗとすると、システムの最大使用電力見積値は４００Ｗとなり、これと、処理時間２５の要求値に対する％とから、システムの構成がリーズナブルであるかどうかを評価することができる。最大使用電力の替わりに、平均電力を用いてもよい。
【００５４】
以上の説明から明らかなように、本発明には以下の付記が含まれる。
【００５５】
（付記１）機能シミュレーション対象の、ハードウェアとソフトウエアとで構成されるシステムモデルをコンピュータプログラムで作成する方法であって、該コンピュータプログラムは、
演算子を多重定義する演算子関数と演算対象の変数とを含み該関数に所定時間を費やす演算コスト関数の呼び出しを含むアーキテクチャクラスを宣言し該演算子関数及び該演算コスト関数を定義するアーキテクチャ定義部と、
該クラスのオブジェクトを作成する宣言部と、
該システムの動作を表すためにオブジェクト間の演算を行う処理部と、
を有し、該所定時間はソフトウエア又はハードウエアの演算実行時間に相当し、該システムのアーキテクチャに応じて該所定時間が異なり、該システムのアーキテクチャ変更に対し該処理部の内容を変えずに該所定時間の値を変更することを特徴とする機能シミュレーション対象モデル作成方法。（１）
（付記２）該システムのアーキテクチャに応じて該所定時間が互いに異なる該クラスを同一演算子に対し複数有し、
該システムのアーキテクチャ変更に対し該処理部の内容を変えずに該宣言部の記述を変更することを特徴とする付記１記載の機能シミュレーション対象モデル作成方法。（２）
（付記３）該アーキテクチャ定義部はさらに、該演算コスト関数を含む基本クラスの宣言と、該所定時間を定めるために該基本クラスに対し該演算コスト関数を上書きする、該所定時間の値毎の派生クラスの宣言とを含み、
アーキテクチャに応じた所定時間をもつ演算コスト関数の呼び出しを行うオブジェクトが該宣言部で作成されるように派生クラスのオブジェクトを指定する呼び出し関数指定部をさらに有することを特徴とする付記１記載の機能シミュレーション対象モデル作成方法。（３）
（付記４）該アーキテクチャクラスはさらに、データ転送時間に対応した所定時間を費やす転送コスト関数の呼び出しを含み、
該オブジェクトの間の演算を、データを受信して演算し又はデータを演算して送信する動作に対応させることを特徴とする付記１乃至３のいずれか１つに記載の機能シミュレーション対象モデル作成方法。（４）
（付記５）該プログラムの言語はＣ＋＋であることを特徴とする付記１乃至４のいずれか１つに記載の機能シミュレーション対象モデル作成方法。
【００５６】
（付記６）該コンピュータプログラムは、並列処理される複数のタスクを有することを特徴とする付記１乃至５のいずれか１つに記載の機能シミュレーション対象モデル作成方法。
【００５７】
（付記７）各タスクは、使用中のハードウエア構成ブロックの種別を示すデータを出力するコードを含むことを特徴とする付記６記載の機能シミュレーション対象モデル作成方法。
【００５８】
（付記８）（ａ）付記７記載の方法で作成された該システムモデルをシミュレータで所定期間動作させ、動作中に出力される、該使用中のハードウエア構成ブロックの種別を示すデータを記憶装置に格納しておき、
（ｂ）該所定期間経過後に該データを該記憶装置から読み出して、各時刻で使用中のハードウエア構成ブロックの種別と数を求め、
（ｃ）該種別と数とに基づいて該アーキテクチャを評価することを特徴とする機能シミュレーション対象モデル評価方法。（５）
（付記９）該ステップ（ｃ）では、同時に使用される同種ハードウエア構成ブロックの最大個数を求め、ハードウエア構成ブロックの種別毎の価格と該種別のハードウエア構成ブロックの同時使用最大個数との積の総和を該システムのハードウェア価格と見積もることを特徴とする付記８記載の機能シミュレーション対象モデル評価方法。
【００５９】
（付記１０）該記憶装置には、ハードウエア構成ブロックの種別毎の消費電力値が格納されており、
該ステップ（ｃ）では、各時刻で使用されているハードウエア構成ブロックの種別と個数と消費電力値とに基づいて該ハードウェアの消費電力を評価値として見積もることを特徴とする付記８記載の機能シミュレーション対象モデル評価方法。
【図面の簡単な説明】
【図１】本発明の、機能設計されたハードウエアとソフトウエアとからなるシステムモデルの評価説明図である。
【図２】該ハードウエアとソフトウエアとからなるシステムの構成例を示す概略ブロック図である。
【図３】アーキテクチャ定義ファイル及びソースコードファイルのより具体的な構成例を示す図である。
【図４】演算子関数を含む１つのクラスで複数の引数値ｘの関数ｓｐｅｎｄ＿ｔｉｍｅ（ｘ）を間接的かつ選択的に呼び出す場合を説明する図である。
【図５】マルチタスク実行結果に対するモデル評価説明図である。
【図６】従来の、機能設計されたハードウエアとソフトウエアとからなるシステムモデルの評価説明図である。
【符号の説明】
１０　ソフトウエアモデル
１１　ハードウエアモデル
１２、１２Ａ　シミュレータ
１３　システムモデル
２０　ワンチップマイクロコンピュータ
２１　ＭＰＵ
２２　メモリ
２３、２４　Ｉ／Ｏインタフェース
２５〜２９　ハードウエアブロック
３０、３０Ａ　アーキテクチャ定義ファイル
３１、３１Ａ　ソースコードファイル
３２　オブジェクト作成部
３３　データ処理部
３０１、３０１Ａ　クラスＩｎｔ３２の定義部
３０２　クラスＩｎｔ６４の定義部
３０３　クラスＦｌｔ３２の定義部
３０４　クラスＦｌｔ６４の定義部
３２１　クラスＩｎｔ３２のオブジェクト作成部
３２１Ａ　派生クラス指定及びクラスＩｎｔ３２のオブジェクト作成部
３２２　クラスＦｌｔ３２のオブジェクト作成部
３３１、３３２　データ処理部
４１　基本クラスＡｒｃの定義部
４２　派生クラスＡｒｃ１の定義部
４３　派生クラスＡｒｃ２の定義部
【図１】
2004038390.tif 000009
【図２】
2004038390.tif 000010
【図３】
2004038390.tif 000011
【図４】
2004038390.tif 000012
【図５】
2004038390.tif 000013
【図６】
2004038390.tif 000014