(57)【要約】本発明は、組み込みシステムをシミュレートするためのコンピューター支援による方法及びデータ処理システムであって、それぞれソフトウェアを設けられる複数のハードウェアコンポーネントをデータ交換のためにデータ交換ネットワークを介して接続し、シミュレーションプログラムにおいて、全てのコンポーネントを、或る量のプロセスを管理する処理ユニットとしてシミュレートし、前記シミュレーションプログラムを用いて、開始時刻を全ての処理ユニットに動的に割り当てて、前記処理ユニットを該処理ユニットの開始時刻に従って動的に連続的にソートし、次の開始時刻を有する前記処理ユニットを、スケジューラーを介してそれぞれ選択し、前記処理ユニットの前記選択に起因して、それぞれのアクティブなプロセスを、対応する基本ブロックグラフから得たプログラムコードの実行によってシミュレートし、該シミュレーションの結果として、前記実行に必要とされる時間及び／又は作用する機能に関する情報を求める、方法及びデータ処理システムに関する。
2012509546.tif 000002
【特許請求の範囲】
【請求項１】
組み込みシステムをシミュレートするためのコンピューター支援による方法であって、それぞれソフトウェアを設けられる複数のハードウェアコンポーネントをデータ交換のためにデータ交換ネットワークを介して接続し、
シミュレーションプログラムにおいて、全てのコンポーネントを、或る量のプロセスを管理する処理ユニットとしてシミュレートし、
前記シミュレーションプログラムを用いて、開始時刻を全ての処理ユニットに動的に割り当て、
前記処理ユニットを該処理ユニットの開始時刻に従って動的に連続的にソートし、
次の開始時刻を有する前記処理ユニットを、スケジューラーを介してそれぞれ選択し、
前記処理ユニットの前記選択に起因して、それぞれのアクティブなプロセスを、対応する基本ブロックグラフから得たプログラムコードの実行によってシミュレートし、該シミュレーションの結果として、前記実行に必要とされる時間及び／又は作用する機能に関する情報を求める、方法。
【請求項２】
全ての処理ユニットにクロックシミュレーションプログラムを割り当て、プロセスの前記実行に必要とされるローカル時刻を、前記クロックシミュレーションプログラムを使用して求める、請求項１に記載の方法。
【請求項３】
前記ローカル時刻を、システム時刻を使用することによって前記開始時刻に変換する、請求項１又は２に記載の方法。
【請求項４】
全てのプロセスを、前記基本ブロックグラフにおいて少なくとも１つの基本ブロックによって記述する、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記基本ブロックに、該基本ブロックの前記実行に必要な実行時間及び／又は該基本ブロックの前記実行によって生成される機能を求めることを可能にする情報を提供する、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記基本ブロックを含む前記基本ブロックグラフを、コンパイラによって前記プログラムコードに変換する、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記シミュレートされた組み込みシステムは、１つ又は複数の階層型スケジューラーを使用する、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記基本ブロックに対応するプログラムコード部の前記実行に続いて、所与のパラメーターに従って、次の処理ユニットが前記スケジューラーによって選択されるべきか否か及び／又は前記アクティブなプロセスが前記選択された処理ユニットに対して継続されるべきか否かを検査する、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記シミュレーションプログラムは、前記処理ユニットを含む第１のシミュレーションプログラム部と、前記実行時間及び／又は前記機能を求める第２のシミュレーションプログラム部とを有する、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記シミュレーションプログラムを、ホストコンピューターであって、該ホストコンピューターのプロセッサは前記組み込みシステムのさらなるプロセッサと同一であるか又は類似している、ホストコンピューター上で実行する、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
コンピュータープログラムであって、該プログラムがコンピューター上で実行されたときに、請求項１〜１０のいずれか１項に記載の全てのステップを実行するのに適したコンピュータープログラムコード手段を備える、コンピュータープログラム。
【請求項１２】
コンピュータープログラム製品であって、該プログラム製品がコンピューター上で実行されたときに、請求項１〜１０のいずれか１項に記載の方法を実行するための、コンピューター可読データキャリア上に記憶されるプログラムコード手段を有する、コンピュータープログラム製品。
【請求項１３】
組み込みシステムをシミュレートするためのデータ処理システムであって、それぞれソフトウェアを設けられる複数のハードウェアコンポーネントがデータ交換のためにデータ交換ネットワークを介して接続され、
シミュレーションプログラムであって、全てのコンポーネントが或る量のプロセスを管理する処理ユニットとしてシミュレートされる、シミュレーションプログラムと、
なお、前記シミュレーションプログラムを用いて、開始時刻が全ての処理ユニットに動的に割り当てられ、
前記処理ユニットを、該処理ユニットの開始時刻に従って動的にソートするソートユニットと、
次の開始時刻を有する前記処理ユニットを選択するためのスケジューラーと、
を備え、
該データ処理システムは、前記処理ユニットの前記選択に起因して、対応する基本ブロックグラフから得たプログラムコードを実行することによって、該データ処理システムに割り当てられるアクティブなプロセスをシミュレートし、該シミュレーションの結果として、前記実行に必要とされる時間及び／又は作用する機能に関する情報が求められる、データ処理システム。
【請求項１４】
全ての処理ユニットがクロックシミュレーションプログラムを割り当てられ、プロセスの前記実行に必要とされるローカル時刻が前記クロックシミュレーションプログラムを使用して求められる、請求項１３に記載のデータ処理システム。
【請求項１５】
前記データ処理システムは、前記システム時刻を使用して前記ローカル時刻を前記開始時刻に変換するように構成される、請求項１３又は１４に記載のデータ処理システム。
【請求項１６】
全てのプロセスは前記基本ブロックグラフ内の少なくとも１つの基本ブロックによって記述される、請求項１３、１４、又は１５に記載のデータ処理システム。
【請求項１７】
前記基本ブロックは、該基本ブロックの前記実行に必要な実行時間及び／又は該基本ブロックの前記実行によって生成される機能を求めることを可能にする情報を提供される、請求項１３〜１６のいずれか１項に記載のデータ処理システム。
【請求項１８】
前記データ処理システムは、前記基本ブロックを含む前記基本ブロックグラフをコンパイラによって前記プログラムコードに変換するように構成される、請求項１３〜１７のいずれか１項に記載のデータ処理システム。
【請求項１９】
前記シミュレートされた組み込みシステムは、１つ又は複数の階層型スケジューラーを使用する、請求項１３〜１８のいずれか１項に記載のデータ処理システム。
【請求項２０】
前記データ処理システムは、前記基本ブロックに対応するプログラムコード部の前記実行に続いて、所与のパラメーターに従って、次の処理ユニットが前記スケジューラーによって選択されるべきか否か及び／又は前記アクティブなプロセスが前記選択された処理ユニットに対して継続されるべきか否かを検査するように構成される、請求項１３〜１９のいずれか１項に記載のデータ処理システム。
【請求項２１】
前記シミュレーションプログラムは、前記処理ユニットを含む第１のシミュレーションプログラム部と、前記実行時間及び／又は前記機能を求める第２のシミュレーションプログラム部とを有する、請求項１３〜２０のいずれか１項に記載のデータ処理システム。
【請求項２２】
前記シミュレーションプログラムは、ホストコンピューターであって、該ホストコンピューターのプロセッサは前記組み込みシステムのさらなるプロセッサと同一であるか又は類似している、ホストコンピューター上で実行される、請求項１３〜２１のいずれか１項に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込みシステムをシミュレートするための、特に組み込みシステムのコンピューター支援によるシミュレーションのための、コンピューター支援による方法又はコンピューター実装された方法及びデータ処理システムに関する。
【背景技術】
【０００２】
組み込みシステムは、或る技術的文脈で統合されるか又は組み込まれたコンピューターである。特にシステムを操作、制御、又はモニタリングするのがコンピューターの仕事である。組み込みシステムは、多くの場合に、達成されるべき技術目標に特に適合される。この目的のために、多くの場合に、部品がデータ交換用のデータバスを介して相互接続される、混合ハードウェア／ソフトウェア実装が選択される。通常、ハードウェア／ソフトウェア実装は、リアルタイム要件を満たさなくてはならない。経済的理由から、計画されたハードウェア／ソフトウェア実装のリアルタイム能力を、実現する前にシミュレートすることが非常に有利である。そのような組み込みシステム又はターゲットシステムのシミュレーションは、通例、いわゆるホストコンピューターにおいて行われる。
【０００３】
組み込みシステムの混合ハードウェア／ソフトウェア実装は、アプリケーションプログラムを実行する１つ又は複数のマイクロプロセッサと、ハードコーディングされたタスクをマイクロプロセッサ及び他のハードウェアユニットと同時に遂行する１つ又は複数のハードウェアユニットとから構成される。アプリケーションプログラムの実現は、ほとんどの場合に同時プロセスに基づいて構築され、ほとんどの場合に環境又は他のマイクロプロセッサ若しくはハードウェアユニットによって引き起こされる中断ルーチンを利用する。マイクロプロセッサにおける同時プロセスの実行順序は、オペレーティングシステムに属するスケジューラーによって決定される。スケジューラーは、所与の判断基準（優先度、時間制限等）に従って、実行準備完了プロセスのセットから次に実行されるプロセスを選択する。たとえばタイムスライシング法を用いて別個のいくつかのアプリケーションプログラムを分離するために、階層スケジューリングシステムが使用されることがますます多くなっている。
【０００４】
組み込みシステムをシミュレートする最も単純な可能性は、ソフトウェアシミュレーションである。ここで、ソースコードは、ホストコンピューターのプロセッサの動作に適した機械コードに変換され、該機械コードは次に該プロセッサ上で実行される。ターゲットシステムの環境パラメーター、たとえばメモリ構成、仮想ポートで読み出し又は書込みを行うことによる入力／出力等を考慮することができる。
【０００５】
しかしながら、多くの場合に、ターゲットシステムのハードウェアもホストコンピューター上でシミュレートされることが必要とされる。この目的のために、それを用いてハードウェアコンポーネント、たとえばプロセッサ、コントローラー等をシミュレートすることができる、いわゆる命令セットシミュレーター（ＩＳＳ）が昨今一般的に使用されている。この目的のために、そのようなＩＳＳは、ホストコンピューター上のそれぞれのハードウェアコンポーネントのために生成された機械コードを実行する。このため、組み込みシステムを対象としたソフトウェアの機能を検査することができる。
【０００６】
現在のところ圧倒的に、解釈実行ＩＳＳがシミュレーションに使用されている。しかしながら、そのようなＩＳＳは、必要とされる変換時間に起因して比較的低速に動作し、結果として組み込みシステムのリアルタイム能力の正確なシミュレーションに適していない。この不利な点を相殺するために、従来技術は、シミュレーション速度が解釈実行ＩＳＳよりも非常に高い、いわゆる静的コンパイルされたＩＳＳも提供する。しかしながら、静的コンパイルされたＩＳＳは、動的プロセスのシミュレーションに関して特に柔軟性がない。これは、組み込みシステムのリアルタイム能力を求める際の精度を考慮すると不利である。
【０００７】
非特許文献１は、バイナリフォーマットではなくオブジェクトフォーマットがシミュレーションにおいて入力される手法を開示している。動的スキップハンドラーを使用することによって、変換時間の低減及び同時に柔軟性の改善を達成することができる。
【０００８】
特許文献１は、シミュレートされたハードウェア上でのアプリケーションプログラムのシミュレーションを記載している。ここで、アプリケーションプログラムは最初に、複数のプログラムセグメントに分割され、タグを与えられる。ホストコンピューター上でのシミュレーション中、それぞれのプログラムセグメントの実行時間を、それらのタグを使用して推定することができる。それらの実行時間を合算することによってアプリケーションプログラムの実行時間全体を推定することができる。
【０００９】
非特許文献２は、シミュレーションを加速するための方法を開示している。静的変換された命令セットアーキテクチャー（ＩＳＡ）に基づいて、従来のＣコードの代わりに特殊な低レベルコード生成インターフェースが定義される。このように生成された中間コードについて、所定の最小数の命令セットを含むが無制限の数の仮想レジスタを含むＲＩＳＣ構造が提案される。動的コンパイルされたＩＳＳと比較して、提案される中間コードを使用することによって他のホストコンピューターへの移植性が可能になる。さらに、ホストコンピューターのリソースを直接操作することが可能である。
【００１０】
非特許文献３は、組み込みシステムにおいて実行時間を推定するための２つの方法を開示している。双方のシステムにおいて、プログラムコードは、実行時間及び他の時間関連情報に関する情報を提供される。
【００１１】
特許文献２は、協調シミュレーション設計システムを開示している。インターフェースを介して相互接続されるモデルベースのプロセスシミュレーターが、ホストシステム上の２つのシミュレーター間の通信をシミュレートする。
【００１２】
全ての従来技術による方法は、特に複数の協調プロセッサを含む複雑なシステムのシミュレーションが可能でないという不利な点を伴う。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】国際公開第０１／３５２２３号
【特許文献２】米国特許第６，２３０，１１４号
【非特許文献】
【００１４】
【非特許文献１】ムーキョン  チョン（Moo-Kyong Chung）、チョンミン  キョン（Chong-Min Kyung）、「柔軟性の増大及びコンパイル時間の低減によるコンパイル済み命令セットシミュレーターの改善（Improvement of Compiled Instruction Set Simulator by IncreasingFlexibility and Reducing Compile Time）」（Proceedings ofthe 15th IEEE International Workshop on Rapid System Prototyping（RSP'04）, 1074-6005/2004 IEEE）
【非特許文献２】ジャンウェン  ジュー（Jianwen Zhu）、ダニエル  Ｄ．ガジャスキー（Daniel D. Gajski）,「超高速命令セットシミュレーター（An Ultra-Fast InstructionSet Simulator）」（IEEE Transactions on very large scaleIntegration (VLSI) Systems, Vol. 10, No. 3, June 2002, 1063-8210/2002 IEEE）
【非特許文献３】ジャワハル  Ｒ．バミー（Jwahar R. Bammi）他、「システムレベル設計ツールにおけるソフトウェア性能推定戦略（Software Performance Estimation Strategies in a System-Level DesignTool）」（CODES 2000, San Diego, CA USA, ACM 20001-58113-268-9/00/05）
【発明の概要】
【発明が解決しようとする課題】
【００１５】
本発明の目的は、従来技術の不利な点を克服することである。特に、組み込みシステムをシミュレートするための方法が提供され、該方法を用いて、特に、複雑な組み込みシステムの機能性及び／又は時間的挙動を、精度を改善してシミュレートすることができる。本発明のさらなる目的は、本方法がホストコンピューター上のターゲットシステムの可能な限り単純なマッピングを可能にすることである。
【００１６】
本発明のさらなる目的によれば、階層型のスケジューリング方法を用いた、複雑な組み込みシステムの効率的なシミュレーションが可能である。
【００１７】
この目的は、独立請求項１、１１、１２、及び１３の特徴を用いて達成される。本発明の適切な実施の形態は、従属請求項の特徴によってもたらされる。
【課題を解決するための手段】
【００１８】
本発明によれば、組み込みシステムをシミュレートするためのコンピューター支援による方法であって、それぞれソフトウェアを設けられる複数のハードウェアコンポーネントをデータ交換のためにデータ交換ネットワークを介して接続し、
シミュレーションプログラムにおいて、全てのコンポーネントを、或る量のプロセスを管理する処理ユニットとしてシミュレートし、
前記シミュレーションプログラムを用いて、開始時刻を全ての処理ユニットに動的に割り当て、
前記処理ユニットを該処理ユニットの開始時刻に従って動的に連続的にソートし、
次の実行時刻を有する前記処理ユニットを、スケジューラーを介してそれぞれ選択し、
前記処理ユニットの前記選択に起因して、それぞれのアクティブなプロセスを、対応する基本ブロックグラフから導出されるプログラムコードの実行によってシミュレートし、該シミュレーションの結果として、前記実行に必要とされる時間及び／又はそれにより作用する機能に関する情報を求める、方法が提案される。
【００１９】
提案される方法は、組み込みシステム、特に複雑な組み込みシステムのリアルタイム能力に関する正確な予測を提供することを可能にする。
【００２０】
本発明によれば、「処理ユニット」は、それぞれのコンポーネントのハードウェア及びソフトウェア双方がマッピングされるプログラム部である。全ての処理ユニットは一般的な処理ユニットプログラム構造から導出される。そのような処理ユニットプログラム構造は、たとえば環境パラメーター等を記憶するためのテーブルを含む。
【００２１】
用語「開始時刻」は、処理ユニットが選択され、第１のスケジューラーによってアクティベートされる時点を意味する。その結果、処理ユニット上のアクティブなプロセスが実行される。開始時刻はシミュレーションプログラムおいて与えられるアルゴリズムを介して処理ユニットに動的に割り当てられる。開始時刻は、処理ユニットのセット内で、それぞれの処理ユニットが別の位置をとるように、シミュレーションプログラムの実行中に置き換えることができる。
【００２２】
本発明によれば、「プロセス」は、たとえばタスク、スレッド、オペレーティングシステムプロセス、割込みサービスルーチン（ＩＳＲ）であり、シミュレートされているプロセッサ上のシミュレーションプログラムにおいてシミュレートされる。
【００２３】
「基本ブロック」（ＢＢ）は、プログラムの命令シーケンスの一部であり、後続の命令の最大シーケンスが含まれる。シーケンスは、第１の命令の実行の後に、シーケンスの全ての他の命令が必ず実行されなくてはならないように規定される。
【００２４】
シミュレーションプログラムをセットアップするために、プロセスは基本ブロックグラフの形態で提示される。全てのプロセスは１つ又は複数の基本ブロックを含むことができる。
【００２５】
本発明によれば、用語「シミュレーションプログラム」はコンピュータープログラムを意味し、これはシミュレートされている組み込みシステムとは異なる「ホストコンピューター」上で実行される。
【００２６】
好ましい実施の形態によれば、全ての処理ユニットはクロックシミュレーションプログラムを割り当てられ、プロセスの実行に必要なローカル時刻は、クロックシミュレーションプログラムを使用して求められる。提案されるクロックシミュレーションプログラムを取り込むことによって、特に現実的なシミュレーションが可能になる。全ての処理ユニットは該処理ユニット自体の時間特性環境においてシミュレートされる。適切なクロックシミュレーションプログラムが従来技術、たとえば国際公開第０２／２１２６１号から既知である。それぞれの処理ユニットのためにシミュレートされたクロックを使用したプロセスの実行は、「ローカル時刻」又は時間セグメントを供給する。有利な実施の形態によれば、ローカル時刻はシステム時刻を使用することによって開始時刻に変換される。このようにして求められた開始時刻は、処理ユニットのローカル時刻環境を考慮に入れている。これによって、提案される方法の精度、特に提案される方法を用いてシミュレートされる組み込みシステムのリアルタイム能力を求める精度がさらに高まる。
【００２７】
さらに有利な実施の形態では、組み込みシステムの階層型スケジューラーの構造は、シミュレーションプログラムにおいて、スケジューラープログラム構造の等価な階層によってマッピングされる。該スケジューラープログラム構造は、組み込みシステムのプロセスの割り当てられたプログラム構造を管理すると共に、組み込みシステムにおけるスケジューラーと同じようにスケージュール決定を行う。利点として、スケジューラーは全てのシミュレーションサイクルにおいて、割り当てられた処理ユニットのプロセスリストに基づいて新たな決定を行うのではなく、スケジューラーによって管理されているプロセスの状態を変更するとき及び／又はＴＤＭＡスケジューリングによって規定された時刻にのみ新たな決定を行える。
【００２８】
適切には、全てのプロセスは基本ブロックグラフ内の少なくとも１つの基本ブロックによって記述される。基本ブロックは、該基本ブロックの実行に必要な実行時間を求めることを可能にする情報及び／又は基本ブロックの実行によって生成される機能を適切に提供される。シミュレーションプログラムの生成のために、基本ブロックを含む基本ブロックグラフは、続いて、コンパイラによってプログラムコードに変換される。これは、プログラムコードが、以前に付加された情報を含むことを意味する。このため、シミュレーションの行程をプロセスの全てについて正確に再現することができる。結果として、シミュレートされる実行プログラムを最適化することができるか否か、及びできる場合、どこでできるのかが迅速にかつ簡単にわかることができる。利点として、基本ブロックに対応するプログラムコード部の実行に続いて、所与のパラメーターに従って、スケジューラーによって処理ユニットリストから次の処理ユニットが選択されるべきか否か、及び／又はアクティブなプロセスが選択された処理ユニット上で継続されるべきか否かが検査できる。
【００２９】
有利な実施の形態によれば、シミュレーションプログラムは、処理ユニットを含む第１のプログラム部と、実行時間及び／又は機能を求める第２のプログラム部とを有する。第１のプログラム部は、シミュレートされる組み込みシステムに関する情報を含む。該情報は、シミュレートされる全ての組み込みシステムについて新しく生成されなくてはならない。第２のプログラム部は、シミュレーションプログラムの実行及び制御用であるが、特に実行時間及び／又は機能を求めるためのものである。第２のプログラム部は、シミュレートされるそれぞれの組み込みシステムに適合される必要はない。
【００３０】
特に単純なタイプの方法によれば、シミュレーションプログラムは、ホストコンピューターであって、該ホストコンピューターのプロセッサが組み込みシステムのさらなるプロセッサと同一であるか類似している、ホストコンピューター上で実行される。この場合、シミュレーションプログラムの基本を成すシミュレーションモデルは、単に、シミュレートされるアプリケーションプログラムをホストコンピューターに変換することによって生成することができる。当然、本発明の方法は、ホストコンピューターであって、該ホストコンピューターのプロセッサが組み込みシステムの１つ又は複数のプロセッサと異なる、ホストコンピューター上で実行することもできる。
【００３１】
提案される方法では、組み込みシステムのコンポーネントは処理ユニットとしてマッピングされる。このため、提案される方法は、全てのコンポーネントが複数のシミュレーションプログラム部によってシミュレートされる、これまでに既知の方法よりはるかに高速に実行することができる。シミュレーションプログラム部はＩＳＳ、及びコントローラーをシミュレートするシミュレーションプログラム部である。シミュレーションプログラム部間で相互データ交換が行われ、これによって実行速度が低減される。そのような相互データ交換は、本発明による処理ユニットにおいて発生しない。
【００３２】
さらに、組み込みシステムをシミュレートするためのデータ処理システムであって、それぞれソフトウェアを設けられる複数のハードウェアコンポーネントがデータを交換するためにデータ交換ネットワークを介して接続され、シミュレーションプログラムであって、全てのコンポーネントが或る量のプロセスを管理する処理ユニットとしてシミュレートされる、シミュレーションプログラムと、なお、前記シミュレーションプログラムを用いて、全ての処理ユニットが開始時刻を動的に割り当てられ、前記処理ユニットを、該処理ユニットの開始時刻に従って動的にソートするソートユニットと、次の開始時刻を有する前記処理ユニットを選択するためのスケジューラーと、を備え、該データ処理システムは、前記処理ユニットの前記選択に起因して、対応する基本ブロックグラフから導出されるプログラムコードの実行によって、該データ処理システムに割り当てられるアクティブなプロセスをシミュレートし、該シミュレーションの結果として、前記実行に必要とされる時間及び／又は作用する機能に関する情報が求められる、データ処理システムが提案される。
【００３３】
以下において、本発明の実施形態が、図面と共に詳細にさらに説明される。
【図面の簡単な説明】
【００３４】
【図１】本発明によるシミュレーションプログラムの基本的な生成ステップの概観を示す図である。
【図２】本発明によるシミュレーションプログラムのアーキテクチャーの概観を示す図である。
【図３】本発明による方法の機能の図である。
【図４】現在実行中のプロセスによるシミュレートされたプロセスアクティベーションの行程の図である。
【発明を実施するための形態】
【００３５】
図１は、シミュレーションプログラムを生成するための基本的なステップを示している。
【００３６】
たとえば所与のアプリケーションプログラム１−４のソースリスト、処理ユニットのパラメーターファイル１−５、組み込みシステムに含まれるさらなるハードウェアコンポーネント１−６の挙動モデル、及びシミュレートされる組み込みシステムを記述するプロジェクトファイル１−２から、シミュレーションプログラムを生成してホストシステム１−１上で組み込みシステムをシミュレートするために、事前分析１−３において、オブジェクトコードの形式の第１のシミュレーションプログラム部又はシミュレーションモデル１−８がホストシステム１−１（コンパイラ１−７）に提供される。シミュレーションモデル１−８は、最終的に、バインダー１−９によって、固定シミュレーションプログラム部１−１０を用いて、実行可能なプログラム１−１１に結びつけられ、ホストシステム１−１上で実行される。実行シミュレーション１−１２の結果は、レポート１−１３、シミュレーショントレース１−１４、又はシステムの挙動を表示するためのグラフィック図１−１５とすることができる。シミュレーションモデル１−８は、大量の情報、記述ブロック、及び構成データを含み、それらはホストシステム１−１のストレージ内のオブジェクトのリスト又はデータ構造からの事前分析において適切に構築される。オブジェクトのプロパティ及び機能は、オブジェクトの属性及びメソッドとしてマッピングすることができる。
【００３７】
図２から分かるように、シミュレーションプログラムは特に以下のエレメントを含む。
【００３８】
処理ユニットリスト２−１は組み込みシステムの全ての処理ユニット２−２を含む。処理ユニットリスト２−１は、たとえば処理ユニット２−２のプロジェクトファイル又はパラメーター２−３におけるターゲットシステムの記述、及び場合によっては活動化しているハードウェアコンポーネントの挙動モデルから構築することができる。ハードウェアコンポーネントの挙動モデルからさらなるプロセスを導出し補うことができる。処理ユニット２−２のそれぞれについて現在のプロセスイベント２−７が求められる。
【００３９】
処理ユニット２−２のプロセス２−６、２−１０、２−１１ごとに又は複数若しくは全てのプロセスについて対応する基本ブロック２−８が存在する。基本ブロックグラフ２−８は、アセンブラーコードシーケンスの分析によって、基本ブロック２−１２が頂点として示されると共に、基本ブロック間の機能遷移がエッジとして示されるように形成される。基本ブロックグラフ２−８はプロセスを複数の基本ブロックに分割する。基本ブロック２−１２の実行に必要とされる時間は、統計的に頂点から求めることができる。プロセスの動的挙動は、シミュレーションプログラムによって、基本ブロックグラフ２−８のエッジから求めることができる。
【００４０】
基本ブロックグラフ２−８を確立すると、プロセスのそれぞれの実行時間の静的比率（static proportion）を有するリスト２−９がコンパイルされる。プロセスの分析されたアセンブラーコードから、複数の基本ブロック２−１２に分割される機能的に同一のホストソースコードが同時に生成され、該ホストコードはホストコンパイラを使用することによってオブジェクトコードに変換され、シミュレーションプログラムの機能部分を形成する。
【００４１】
処理ユニットのプロパティ２−３は、組み込みシステムに対応するシミュレーションモデルの構築のためのデータを含む。該データはスケジューラー２−４及び２−５の階層構造、スケジューリングのタイプ、及びスケジューリング方法、たとえば「先着順」、「優先度ベース」、又は「ラウンドロビン」等の選択に関する。さらに、データは、メモリ構造及びメモリ管理のシミュレートに関する情報を含むことができる。
【００４２】
好ましい実施形態によれば、シミュレーションモデルは、アプリケーションプログラムが組み込みシステムのアセンブラーコードとして、該組み込みシステムのコンパイルされた命令セットシミュレーター（ＩＳＳ）を用いて実行されるように生成することができる。ここで、環境パラメーターのリストの形態の組み込みシステムの変形形態をシミュレーションモデルにおいて考慮することができる。さらに、シミュレーションモデルは、ハードウェア及びこのハードウェア上のアプリケーションプログラムの個々の部分実行又は全ての部分実行の実行時間を有するファイルによって補うことができる。このファイルから、組み込みシステムの時間的挙動をシミュレーションから再構築及び計算することができる。ＩＳＳは、仮想ＩＳＳによって置き換えることもできる。仮想ＩＳＳは、組み込みシステムのデータシート、組み込みシステムハードウェア仕様書若しくはＶＨＤＬコード、又は同様の文書からの技術情報に基づいて生成される。アプリケーションプログラムは、組み込みシステムのデータシート、ハードウェア仕様書若しくはＶＨＤＬコード、又は同様の文書からの技術情報に基づいて、シミュレーションモデルのためのホストソースコードとして手作業でプログラミングすることができる。
【００４３】
さらなる変形形態によれば、アプリケーションプログラムは複数の組み込みシステム上で実行することもできる。この場合、シミュレーションモデルは、複雑な前処理プログラム、様々なアプリケーションプログラムモジュールが、それぞれの組み込みシステムに対応するコンパイルされたＩＳＳ上で実行されるように生成することができる。ターゲットシステム及びそれらのターゲットシステムを接続する通信システムの変形形態を、シミュレーションモデルにおいて環境パラメーターのリストによって考慮することができる。
【００４４】
図３は、シミュレーションサイクルの方法ステップを示している。シミュレーションコア３−１内で実行されているスケジューラー３−４は、処理ユニットがその開始時刻に従ってソートされたリスト３−２から、次の開始時刻を有する上記処理ユニット３−３を選択する（ステップ３−ａ）。続いて、選択された処理ユニットのアクティブなプロセスが実行され、これは処理結果３−５において参照される（３−ｂ）（３−ｃ）。
【００４５】
アクティブなプロセス３−１０の実行のために、基本ブロックグラフ３−６において、対応する基本ブロック３−７のプログラムコード選択が実行される（３−ｄ）（３−ｅ）。基本ブロックの実行に続いて、プロセスイベント３−５内の次の基本ブロックが更新される（３−ｆ）。続いて、更新されたスケジューリングプロセスが、次に変更されるシステム状態及び時間経過を考慮して必要であるか否かがテストされる。更新されたスケジューリングプロセスは、基本ブロックグラフ３−６の実行によって現在シミュレートされているプロセスが終了若しくはディアクティベート（非活動化）されたか、又は同じ処理ユニット３−３又は別の処理ユニット３−３上の別のプロセスがアクティベート（活動化）若しくはディアクティベートされたときにのみ、処理ユニット３−３において必要である。この場合、それぞれの処理ユニットの開始時刻が更新される（３−ｇ）。その後、シミュレーションサイクルが新たに開始する。
【００４６】
図４は、方法ステップをより詳細に説明する。この方法ステップは、現在シミュレートされているプロセスが別のプロセスをアクティベートするときに発生する。リスト４−１に記憶されている処理ユニット４−２は、プロセスイベント４−３のみでなく、スケジューラーの階層構造も参照する。図示される例では、該階層構造は、下位スケジューラー４−５及びプロセス４−６を管理するスケジューラー４−４から構成される。スケジューラー４−５自体はプロセス４−７及びプロセス４−８を管理する。ここで、シミュレーションコアは、プロセス４−８の基本ブロックグラフ４−９においてプロセスイベント４−３によって参照される頂点４−１０を実行する（ステップ４−ａ）。このシミュレーションステップにおいて、シミュレートされた方式で実行されるアプリケーションプログラムによって、プロセス４−６がアクティベートされる。このアクティベーションはプロセス４−６に渡され（４−ｂ）、プロセス４−６は次にスケジューラー４−４に通知する（４−ｃ）。次に、スケジューラー４−４は、これまでアクティブだったプロセス４−８又はその上位スケジューラー４−５を、アクティベーションによって入れ替えなくてはならないか否かをテストする。これが当てはまる場合、処理ユニット４−２は通知され（４−ｄ）、次にプロセスイベント４−３を新たなプロセス４−６によって更新する（４−ｅ）。しかしながら、スケジューラー４−４が、プロセス入れ替えが一切発生する必要がないと判定する場合、処理ユニット４−２は通知されず、プロセスイベント４−３は変更されないままである。これは、古いアクティブなプロセス４−８が継続することを意味する。
【００４７】
シミュレーションプログラムにおいて、実際のシステムの各コンポーネントのソフトウェア及びハードウェア間のインタラクションのシミュレーションは、ターゲットシステムの場合にそうであるように、ハードウェアのレジスタへのシミュレートされたアクセスによって発生する。そのようなアクセスは、ターゲットシステムにおけるハードウェアの内部状態を変更する。シミュレーションプログラムにおいて、ハードウェアの状態におけるそのような変更を、対応するプロセスのアクティベーションによってシミュレートすることができる。次に、シミュレートされたハードウェアのさらなる機能的挙動及び時間的挙動を、シミュレートされたソフトウェアの時間的挙動及び機能的挙動から独立して実行することができる。
【００４８】
ターゲットシステムにおいて、いくつかのハードウェアコンポーネントの相互作用は、電気信号の交換によって発生する。シミュレーションプログラムにおいて、シミュレーション速度を増加するために、電気ゲージが複雑なデータパッケージの形態で抽出及びマッピングされる。
【００４９】
本発明は、図面及び対応する説明を用いて詳細に説明及び記載されているが、この描写及び詳細な説明は説明的で例示的なものであり、本発明を限定するものではない。当然ながら、当業者であれば、以下の特許請求の範囲の範囲を越えることなく、変形及び変更を行うことができる。特に、本発明は、様々な態様及び／又は実施形態に関して上記で言及するか又は示された特徴の任意の組み合わせを用いた実施形態も含む。
【００５０】
本発明はまた、図面における個々の特徴が、他の特徴に関連して示される場合であっても、かつ／又は上記で言及されない場合であっても、それらの個々の特徴を含む。
【００５１】
さらに、用語「含む、備える（comprise）」及びその派生語は、他の要素又はステップを除外しない。加えて、不定冠詞「a（n）」及びその派生語は、複数を除外しない。特許請求の範囲において言及されるいくつかの特徴の機能は、ユニットによって遂行することができる。特徴又は値と関連する用語「基本的に（basically）」、「約（about）」、「実質的に（approximately）」等は、特に、厳密にその特徴又は値も規定する。特許請求項における全ての参照符号は、特許請求の範囲の範囲を限定するものとして理解されない。
【符号の説明】
【００５２】
図１の参照符合のリスト
１−１  ホストシステム
１−２  プロジェクトファイル
１−３  事前分析
１−４  アプリケーションプログラム
１−５  プロセッサモデルライブラリ
１−６  ＨＷコンポーネントライブラリ
１−７  コンパイラ
１−８  第１のシミュレーションプログラム部のオブジェクトコード
１−９  バインダー
１−１０  シミュレーターコアのライブラリ
１−１１  実行可能なシミュレーションコード
１−１２  実行シミュレーション
１−１３  結果報告
１−１４  シミュレーショントレース
１−１５  組み込みシステムの動的挙動の描写を有する図
図２の参照符合のリスト
２−１  処理ユニットリスト
２−２  処理ユニット
２−３  処理ユニットのプロパティ
２−４  上位スケジューラー
２−５  下位スケジューラー
２−６  プロセス
２−７  プロセスイベント
２−８  基本ブロックグラフ
２−９  基本ブロック頂点の静的実行時間を有するテーブル
２−１０、２−１１  プロセス
２−１２  基本ブロック
図３の参照符合のリスト
３−１  シミュレーションコア
３−２  処理ユニットリスト
３−３  処理ユニット
３−４  スケジューラー
３−５  プロセスイベント
３−６  基本ブロックグラフ
３−７、３−８  基本ブロック
３−９  選択された処理ユニット
３−１０  選択されたプロセス
（３−ａ）．．．（３−ｇ）  方法ステップ
図４の参照符合のリスト
４−１  処理ユニットリスト
４−２  処理ユニット
４−３  プロセスイベント
４−４、４−５  スケジューラー
４−６、４−７、４−８  プロセス
４−９  基本ブロックグラフ
４−１０、４−１１  基本ブロック
（４−ａ）．．．（４−ｅ）  方法ステップ
【図１】
2012509546.tif 000003
【図２】
2012509546.tif 000004
【図３】
2012509546.tif 000005
【図４】
2012509546.tif 000006
【国際調査報告】
2012509546.tif 000007
2012509546.tif 000008
2012509546.tif 000009
2012509546.tif 000010
2012509546.tif 000011
2012509546.tif 000012