(57)【要約】【課題】それぞれにプロセッサを含む複数のマイクロコンピュータシステムにおけるプログラムの同時実行をシミュレーションする。【解決手段】システム間同期情報管理手段１０４内に、システムＡシミュレーション部１１１ａのシミュレーション時間の進行を管理するシステムＡ時間管理手段１０５と、システムＢシミュレーション部１１１ａのシミュレーション時間の進行を管理するシステムＡ時間管理手段と、シミュレーション対象のシステムの切換の基準となる基準動作時間を格納する基準動作格納手段１０７とを備え、基準動作時間をシステムＡの１クロック時間で除算して得られるクロック数だけシステムＡシミュレーション部１１１ａのシミュレーションを実行し、次に基準動作時間をシステムＢの１クロック時間で除算して得られるクロック数だけシステムＢシミュレーション部１１１ｂのシミュレーションを実行する。【選択図】　　　図１
2004021904.tif 000002
【特許請求の範囲】
【請求項１】
命令実行シミュレーションするプロセッサシミュレート手段をそれぞれに備える複数のシステムシミュレーション部と、
前記複数のシステムシミュレーション部のそれぞれに対応して設けられシステムシミュレーション部のシミュレーションの進行を管理するシステム時間管理手段と、前記複数のシステムシミュレーション部それぞれの動作クロックの周期にあたる１クロック時間の中で最も大きい１クロック時間以下で且つ最も小さい１クロック時間以上の範囲内で設定された基準動作時間を格納する手段と、を備え、前記基準動作時間毎に前記複数のシステムシミュレーション部のシミュレーション実行の順序を所定の順序に制御するシミュレーション実行管理部と、
を有することを特徴とするシミュレーション装置。
【請求項２】
前記基準動作時間は、前記複数のシステムシミュレーション部のそれぞれの１クロック時間のうち最も小さいものに設定されることを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記基準動作時間は、前記複数のシステムシミュレーション部のそれぞれの１クロック時間のうち最も大きいものに設定されることを特徴とする請求項１に記載のシミュレーション装置。
【請求項４】
命令実行シミュレーションするプロセッサシミュレート手段と、プロセッサシミュレート手段の命令実行に応じて起動される周辺回路の動作をシミュレーションする周辺回路シミュレート手段とをそれぞれに備える複数のシステムシミュレーション部と、
前記複数のシステムシミュレーション部のそれぞれに対応して設けられシステムシミュレーション部のシミュレーションの進行を管理するシステム時間管理手段と、前記複数のシステムシミュレーション部それぞれの動作クロックの周期にあたる１クロック時間の中で最も大きい１クロック時間以下で且つ最も小さい１クロック時間以上の範囲内で設定された基準動作時間を格納する手段と、前記複数のシステムシミュレーション部の周辺回路シミュレート手段の相互間の入出力を制御するバス制御手段とを備え、前記基準動作時間毎に前記複数のシステムシミュレーション部のシミュレーション実行の順序を所定の順序に制御するシミュレーション実行管理部と、
を有することを特徴とするシミュレーション装置。
【請求項５】
前記バス制御手段は仮想共有メモリを有し、
前記複数のシステムシミュレーション部のうち少なくとも２つのシステムシミュレーション部がダイナミック・メモリ・アクセス回路シミュレータと、該ダイナミック・メモリ・アクセス回路と前記バス制御手段との間のデータ送受信手段を備え、
一方のシステムシミュレーション部のダイナミック・メモリ・アクセス回路シミュレータから前記仮想共有メモリにデータを送る動作と他方のシステムシミュレーション部のダイナミック・メモリ・アクセス回路シミュレータが前記仮想共有メモリからデータを受ける動作とをシミュレーションすることによりダイナミック・メモリ・アクセス・プログラムの実行をシミュレーションすることを特徴とするシミュレーション装置。
【請求項６】
前記複数のシステムシミュレーション部のうち少なくとも１つのシステムシミュレーション部が、タイマ回路シミュレータと該タイマ回路シミュレータから前記バス制御手段にタイマ出力情報を送る手段を備え、
前記複数のシステムシミュレーション部のうち他の少なくとも１つのシステムシミュレーション部が、前記バス制御手段から前記タイマ出力情報を取得する同期情報管理手段と前記同期情報管理手段からの出力タイマ情報に基づく動作クロック情報に同期してシミュレーションを行う入出力回路シミュレータとを備えることを特徴とするシミュレーション装置。
【請求項７】
前記基準動作時間は、前記複数のシステムシミュレーション部のそれぞれの１クロック時間のうち最も小さいものに設定されることを特徴とする請求項４，５または６に記載のシミュレーション装置。
【請求項８】
前記基準動作時間は、前記複数のシステムシミュレーション部のそれぞれの１クロック時間のうち最も大きいものに設定されることを特徴とする請求項４，５または６に記載のシミュレーション装置。
【請求項９】
前記所定の順序が、前記複数のシステムシミュレーション部のうち１クロック時間が最も小さいシステムシミュレーション部が最初で１クロック時間の小さい順に１クロック時間が最も大きいシステムシミュレーション部が最後となる順序であること特徴とする請求項４，５または６に記載のシミュレーション装置。
【請求項１０】
複数のシステムでのプログラムの実行をコンピュータを用いてシミュレーションする方法であって、
前記複数のシステムのそれぞれの想定クロック周波数から周期に当たる１クロック時間を算出し最も大きい１クロック時間以下で且つ最も小さい１クロック時間以上の範囲内で基準動作時間を選択して設定する第１の手順と、
前記複数のシステムのそれぞれに対応して設けられた内部時計に記憶された時間に前記基準動作時間を加算する第２の手順と、
前記複数のシステムのそれぞれに対して対応する内部時計に含まれるクロック数だけプログラム実行のシミュレーションを進める第３の手順と、
を有することを特徴とするシミュレーション方法。
【請求項１１】
前記第３の手順は、
内部時計に記憶された時間がシミュレーション対象のシステムの１クロック時間以上であるかを判断する第１のサブステップと、
不足クロック数が記録されていない場合には前記内部時計に含まれるクロック数だけ命令のシミュレーションを進め不足クロック数が記録されている場合には前記内部時計に含まれるクロック数から不足クロック数を差し引いたクロック数だけ命令のシミュレーションを進める第２のサブステップと、
前記第２のサブステップで実行する命令に対してクロック数が不足である場合にはクロック数の不足分を不足クロック数として記憶する第３のサブステップとを備えるステップを有し、
前記ステップを前記複数のシステムに対して所定の順序で行うことを特徴とする請求項１０に記載のシミュレーション方法。
【請求項１２】
前記基準動作時間は、前記複数のシステムのそれぞれの１クロック時間のうち最も小さいものに設定されることを特徴とする請求項１１に記載のシミュレーション方法。
【請求項１３】
前記基準動作時間は、前記複数のシステムのそれぞれの１クロック時間のうち最も大きいものに設定されることを特徴とする請求項１１に記載のシミュレーション方法。
【請求項１４】
前記所定の順序が、前記複数のシステムシのうち１クロック時間が最も小さいシステムが最初で１クロック時間の小さい順に１クロック時間が最も大きいシステムシが最後となる順序であること特徴とする請求項１１記載のシミュレーション方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はプロセッサでのプログラムの実行をシミュレートするソフトウェアのシミュレーション装置に関し、特にそれぞれにプロセッサを含む複数のシステムにおけるプログラムの同時実行をシミュレーションするシミュレーション装置およびシミュレーション方法に関する。
【０００２】
【従来の技術】
従来のマイクロコンピュータのソフトウェアシミュレーション装置が特開２０００−２７６５０２号公報に記載されている。この従来例ではシミュレーション部６１１は、図１９に示すように、プロセッサシミュレート手段６１２と、同期情報管理手段６１４と、プログラム／データメモリ６１５と、外部割込生成手段６１６と、周辺回路シミュレート手段６２１とを備えて構成されている。周辺回路シミュレート手段６２１はその内部に、周辺回路シミュレータ起動／管理手段６１３と、Ｉ／Ｏレジスタメモリ領域６１７と、タイマ回路シミュレータ６１８と、パラレル入出力回路シミュレータ６１９と、シリアル入出力回路シミュレータとを備えている。
【０００３】
このような構成を有する従来のソフトウェアシミュレーション装置のシミュレーション部６１１は次のように動作する。すなわち、プロセッサシミュレート手段６１２は、プログラム／データメモリ６１５からプログラムをロードし、ロードした命令を１ステップ毎に実行する。外部割込生成手段６１６は、割込が入力されたことをプロセッサシミュレート手段６１２に通知する。プロセッサシミュレート手段６１２は、外部割込生成手段６１６から割込が入力されたことが通知されると、割込処理を行う。周辺回路シミュレータ起動／管理手段６１３はマイクロコンピュータの備える周辺回路について周辺回路実行ファイル情報を管理する。また、周辺回路シミュレータ起動／管理手段６１３は、シミュレーション部６１１の起動時に、管理している周辺回路実行ファイル情報をもとに登録されている各周辺回路シミュレータを起動する。同期情報管理手段６１４は、プロセッサシミュレート手段６１２と起動された各周辺回路シミュレータ（パラレル入力回路シミュレータ６１９、シリアル入出力回路シミュレータ６２０およびタイマー回路シミュレータ６１８）に、プロセッサシミュレートの最小タイミング情報であるクロック情報を供給する。シミュレーション部６１１と各周辺回路シミュレータとは、Ｉ／Ｏレジスタメモリ領域６１７を介してデータの入出力を行う。外部との通信は、パラレル入出力回路シミュレータ６１９またはシリアル入出力回路シミュレータ６２０が予め用意された入力データファイル、出力データファイルをオープンすることによりシミュレーションされる。
【０００４】
【発明が解決しようとする課題】
しかし、図１９の従来例は、基本的に単一のプロセッサコアを含むマイクロコンピュータシステムの動作をシミュレーションするものであり、同一周波数でプロセッサコアが動作する複数のマイクロコンピュータシステムのシミュレーションの場合、または異なる周波数でプロセッサコアが動作するが各システムが独立して動作する場合などの特殊な場合のシミュレーションには拡張して適用できる可能性があるものの、異なる動作周波数を持つプロセッサコアをそれぞれに含む複数のシステムの同時動作をシミュレーションすることは実質的に不可能であった。
【０００５】
本発明は上記のような状況を鑑みてなされたものであり、本発明の目的は、異なる動作周波数を持つプロセッサコアをそれぞれに含む複数のシステムの同時動作をシミュレーションできる複数プロセッサの同時シミュレーション装置および同時シミュレーション方法を提供することである。
【０００６】
【課題を解決するための手段】
本発明の第１の発明のシミュレーション装置は、命令実行シミュレーションするプロセッサシミュレート手段をそれぞれに備える複数のシステムシミュレーション部と、前記複数のシステムシミュレーション部のそれぞれに対応して設けられシステムシミュレーション部のシミュレーションの進行を管理するシステム時間管理手段と、前記複数のシステムシミュレーション部それぞれの動作クロックの周期にあたる１クロック時間の中で最も大きい１クロック時間以下で且つ最も小さい１クロック時間以上の範囲内で設定された基準動作時間を格納する手段と、を備え、前記基準動作時間毎に前記複数のシステムシミュレーション部のシミュレーション実行の順序を所定の順序に制御するシミュレーション実行管理部と、を有して構成される。システムシミュレーション部がさらにプロセッサシミュレート手段の命令実行に応じて起動される周辺回路の動作をシミュレーションする周辺回路シミュレート手段を備え、またシミュレーション実行管理部がさらにシステムシミュレーション部の周辺回路シミュレート手段の相互間の入出力を制御するバス制御手段とを備えてもよい。
【０００７】
本発明の第２の発明のシミュレーション方法は、複数のシステムでのプログラムの実行をコンピュータを用いてシミュレーションする方法であって、前記複数のシステムのそれぞれの想定クロック周波数から周期に当たる１クロック時間を算出し最も大きい１クロック時間以下で且つ最も小さい１クロック時間以上の範囲内で基準動作時間を選択して設定する第１の手順と、前記複数のシステムのそれぞれに対応して設けられた内部時計に記憶された時間に前記基準動作時間を加算する第２の手順と、前記複数のシステムのそれぞれに対して対応する内部時計に含まれるクロック数だけプログラム実行のシミュレーションを進める第３の手順と、を有することを特徴とする。前記第３の手順は、内部時計に記憶された時間がシミュレーション対象のシステムの１クロック時間以上であるかを判断する第１のサブステップと、不足クロック数が記録されていない場合には前記内部時計に含まれるクロック数だけ命令のシミュレーションを進め不足クロック数が記録されている場合には前記内部時計に含まれるクロック数から不足クロック数を差し引いたクロック数だけ命令のシミュレーションを進める第２のサブステップと、前記第２のサブステップで実行する命令に対してクロック数が不足である場合にはクロック数の不足分を不足クロック数として記憶する第３のサブステップとを備えるステップを有し、前記ステップを前記複数のシステムに対して所定の順序で行うように構成してもよい。
【０００８】
【発明の実施の形態】
以下、本発明の好ましい実施の形態について添付図面を参照しながら詳細に説明する。なお、以下の説明は、本発明の実施の形態を示すものであり、本発明が以下の説明に限定されて解釈されるものではない。
【０００９】
図１は、本発明のシミュレーション装置の一実施の形態のブロック図である。図１のシミュレーション装置は、それぞれがプロセッサコア、プログラム／データメモリおよび周辺回路を含む２個のマイクロコンピュータシステムの同時動作をシミュレーションするものである。
【００１０】
システムＡシミュレーション部１１１ａは、プロセッサシミュレート手段１１２ａ、同期情報管理手段１１４ａ、プログラム／データメモリ１１５ａ、外部割込生成手段１１６ａおよび周辺回路シミュレート手段１２１ａを備えている。周辺回路シミュレート手段１２１ａは、内部に周辺回路シミュレータ起動／管理手段１１３ａ、タイマ回路シミュレータ１１８ａ、パラレル入出力回路シミュレータ１１９ａ、シリアル入出力回路シミュレータ１２０ａおよびＩ／Ｏレジスタメモリ領域１１７ａを備えている。
【００１１】
同様に、システムＢシミュレーション部１１１ｂは、プロセッサシミュレート手段１１２ｂ、同期情報管理手段１１４ｂ、プログラム／データメモリ１１５ｂ、外部割込生成手段１１６ｂおよび周辺回路シミュレート手段１２１ｂを備えている。周辺回路シミュレート手段１２１ｂは、内部に周辺回路シミュレータ起動／管理手段１１３ｂ、タイマ回路シミュレータ１１８ｂ、パラレル入出力回路シミュレータ１１９ｂ、シリアル入出力回路シミュレータ１２０ｂおよびＩ／Ｏレジスタメモリ領域１１７ｂを備えている。
【００１２】
シミュレーション実行管理部１０２は、システムＡシミュレーション部１１１ａにおけるシミュレーション実行動作およびシステムＢシミュレーション部１１１ｂにおけるシミュレーション実行動作を制御する。シミュレーション実行管理部１０２は、シミュレータ起動手段１０３、システム間同期情報管理手段１０４およびバス制御手段１０８から構成される。
【００１３】
システムＡシミュレーション部１１１ａ内のプロセッサシミュレート手段１１２ａは、シミュレーション実行管理部１０２の制御の下にプログラム／データメモリ１１５ａからプログラムをロードし、ロードした命令を１ステップ毎に実行する。外部割込生成手段１１６ａは、バス制御手段１０８または入力データファイルから割込が入力されたときにこれをプロセッサシミュレート手段１１２ａに通知する。プロセッサシミュレート手段１１２ａは、外部割込生成手段１１６ａから割込が入力されたことが通知されると、割込処理を行う。周辺回路シミュレータ起動／管理手段１１３ａはマイクロコンピュータシステムＡが備える周辺回路について周辺回路実行ファイル情報を管理し、また、システムＡシミュレーション部１１１ａの起動時に、管理している周辺回路実行ファイル情報をもとに登録されている各周辺回路シミュレータを起動する。同期情報管理手段１１４ａは、プロセッサシミュレート手段１１２ａおよび起動された各周辺回路シミュレータ（パラレル入力回路シミュレータ１１９ａ、シリアル入出力回路シミュレータ１２０ａおよびタイマー回路シミュレータ１１８ａ）にクロック情報を供給する。システムＡシミュレーション手段１１１ａと各周辺回路シミュレータとは、Ｉ／Ｏレジスタメモリ領域１１７ａを介してデータの入出力を行う。外部との通信は、予め用意された入力データファイル、出力データファイルを、パラレル入出力回路シミュレータ１１９ａもしくはシリアル入出力回路シミュレータ１２０ａがオープンするか、または、パラレル入出力回路シミュレータ１１９ａもしくはシリアル入出力回路シミュレータ１２０ａがバス制御手段１０８を介してデータを送受信することによりシミュレーションされる。
【００１４】
同様に、システムＢシミュレーション部１１１ｂ内のプロセッサシミュレート手段１１２ｂは、シミュレーション実行管理部１０２の制御の下にプログラム／データメモリ１１５ｂからプログラムをロードし、ロードした命令を１ステップ毎に実行する。外部割込生成手段１１６ｂは、バス制御手段１０８または入力データファイルから割込が入力されたときにこれをプロセッサシミュレート手段１１２ｂに通知する。プロセッサシミュレート手段１１２ｂは、外部割込生成手段１１６ｂから割込が入力されたことが通知されると、割込処理を行う。周辺回路シミュレータ起動／管理手段１１３ｂはマイクロコンピュータシステムＢが備える周辺回路について周辺回路実行ファイル情報を管理し、また、システムＢシミュレーション部１１１ｂの起動時に、管理している周辺回路実行ファイル情報をもとに登録されている各周辺回路シミュレータを起動する。同期情報管理手段１１４ｂは、プロセッサシミュレート手段１１２ｂおよび起動された各周辺回路シミュレータ（パラレル入力回路シミュレータ１１９ｂ、シリアル入出力回路シミュレータ１２０ｂおよびタイマー回路シミュレータ１１８ｂ）にクロック情報を供給する。システムＢシミュレーション手段１１１ｂと各周辺回路シミュレータとは、Ｉ／Ｏレジスタメモリ領域１１７ｂを介してデータの入出力を行う。外部との通信は、予め用意された入力データファイル、出力データファイルを、パラレル入出力回路シミュレータ１１９ｂもしくはシリアル入出力回路シミュレータ１２０ｂがオープンするか、または、パラレル入出力回路シミュレータ１１９ｂもしくはシリアル入出力回路シミュレータ１２０ｂがバス制御手段１０８を介してデータを送受信することによりシミュレーションされる。
【００１５】
なお、本実施例ではシステムＡシミュレーション部１１１ａ内の周辺回路シミュレート部１２１ａに含まれる周辺回路シミュレータとシステムＢシミュレーション部１１１ｂ内の周辺回路シミュレート部１２１ｂに含まれる周辺回路シミュレータとが同一機能のシミュレータを備えているが、説明の簡略化のためであり同一であることに限定されるものではない。
【００１６】
先ず、図１を参照して、本発明のシミュレーション装置の全体の動作の概略について説明する。外部からシミュレータ起動手段１０３に起動指示を送ることによりシミュレーション装置を起動すると、シミュレーション実行管理部１０２はユーザーによって記述された起動情報ファイル１０１をオープンし、起動すべきシステムＡシミュレーション部１１１ａとシステムＢシミュレーション部１１１ｂとを起動し、それぞれの想定動作クロック周波数を知る。また、シミュレーション実行管理部１０２は、バス制御手段１０８から外部割込生成手段１１６ａ，１１６ｂへの出力状態と、バス制御手段１０８とパラレル入出力回路シミュレータ１１９ａおよびシリアル入出力回路シミュレータ１２０ａとの入出力経路と、バス制御手段１０８とパラレル入出力回路シミュレータ１１９ｂおよびシリアル入出力回路シミュレータ１２０ｂとの入出力経路と、を把握する。
【００１７】
次に、システム間同期情報管理手段１０４は、システムＡシミュレーション部１１１ａの想定動作クロック周波数およびシステムＢシミュレーション部１１１ｂの想定動作クロック周波数から想定動作クロックの周期にあたる１クロック時間をそれぞれ算出し、起動情報ファイル１０１で指定された基準動作時間が算出した２つの１クロック時間の範囲内にあれば、指定された基準動作時間を基準動作時間格納手段１０７に格納する。または、小さい方の１クロック時間か大きい方の１クロック時間かの何れかを基準動作時間としてもよい。システムＡ時間管理手段１０５はシステムＡシミュレーション部１１１ａの１クロック時間をシステムＡシミュレーション部１１１ａの想定動作クロック周波数から算出して保有し、システムＢ時間管理手段１０６はシステムＢシミュレーション部１１１ｂの１クロック時間をシステムＢシミュレーション部１１１ｂの想定動作クロック周波数から算出し保有している。
【００１８】
以下、システムＡシミュレーション部１１１ａとシステムＢシミュレーション部１１１ｂのシミュレーションは基準動作時間毎に実行されるが、その際のシミュレーション実行順序として、１クロック時間が小さい方のシステムを先に行い、１クロック時間が大きい方のシステムを後に行うようにシミュレーション実行管理部１０２が制御するように構成しておくことが好ましい。１クロック時間が小さい方のシステムから送られるデータを１クロック時間が大きいシステムが受け取る場合に、１クロック時間が大きい方のシステムを先行してシミュレーションすると本来受け取るべき時刻にデータが送られていない状況が発生しうるからである。
【００１９】
システムＡシミュレーション部１１１ａでのシミュレーションが開始されると、システムＡ時間管理手段１０５は保有しているシステムＡシミュレーション部１１１ａの１クロック時間とシステムＡ時間管理手段１０５内の内部時計に記憶された実行可能時間とを比較し、内部時計の実行可能時間が１クロック時間以上である場合に、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａに対し１クロック進めることを伝える。
【００２０】
１クロック時間分の時間の進行を伝えられた同期情報管理手段１１４ａは、プロセッサシミュレート手段１１２ａに対して１クロック時間分の時間を進行させ、プロセッサシミュレート手段１１２ａはプログラム／データメモリ１１５ａからプログラムをロードし、命令をシミュレートする。続いて、プロセッサシミュレート手段１１２ａは命令の実行に必要なクロック数を同期情報管理手段１１４ａに伝達する。同期情報管理手段１１４ａは命令の実行に必要なクロック数の間、システムＡ時間管理手段１０５から時間の進行を伝えられても何もしない。
【００２１】
プロセッサシミュレート手段１１２ａでプログラムの実行をシミュレートした結果として周辺回路シミュレータの動作が伴う場合には、プロセッサシミュレート手段１１２ａは、周辺回路シミュレート手段１２１ａ内の周辺回路シミュレータ起動／管理手段１１３ａへ該当する周辺回路シミュレータの起動を通知し、Ｉ／Ｏレジスタメモリ領域１１７ａとタイマ回路シミュレータ１１８ａ、パラレル入出力回路シミュレータ１１９ａ、シリアル入出力回路シミュレータ１２０ａの何れかに命令のシミュレーションを要求する。各周辺回路シミュレータからの出力のうち、バス制御手段１０８によって受け入れられるものはバス制御手段１０８が保持し、それ以外の出力は出力データファイルに保持される。また、周辺回路シミュレータへ外部から入力するもののうち、バス制御手段１０８から入力できるものはバス制御手段１０８に入力データを保持し、それ以外のものは入力データファイルから取得する。外部割込生成手段１１６ａはバス制御手段１０８および入力データファイル１５２より割込を受けていることを判断し、プロセッサシミュレート手段１１２ａへ通知する。
【００２２】
次に、システムＡシミュレーション部１１１ａでのシミュレーション実行から同じ時間帯におけるシステムＢシミュレーション部１１１ｂでのシミュレーション実行への切り替わりについて説明する。システムＡシミュレーション部１１１ａの同期情報管理手段１１４ａからシステム間同期情報管理手段１０４にプロセッサシミュレート手段１１２ａにおける命令実行処理が終わったことが通知されると、システムＢ時間管理手段１０６は保有しているシステムＢシミュレーション部１１１ｂの１クロック時間とシステム間同期情報管理手段１０４内の内部時計に記憶された実行可能時間とを比較し、内部時計の実行可能時間が１クロック時間以上である場合に、システムＢシミュレーション部１１１ｂ内の同期情報管理手段１１４ｂに対し１クロック進めることを伝え、１クロック時間分の時間の進行を伝えられた同期情報管理手段１１４ｂは、プロセッサシミュレート手段１１２ｂに対して１クロック時間分の時間を進行させ、プロセッサシミュレート手段１１２ｂはプログラム／データメモリ１１５ｂからプログラムをロードし、命令をシミュレートする。以降は、システムＡシミュレーション部１１１ａについて説明したと同様にな動作がシステムＢシミュレーション部１１１ｂにおいて実行される。
【００２３】
図２は、本実施の形態の動作を説明するために図１に便宜的な変形を加えたブロック図である。全体については簡略化（一部は省略）し、システム間同期情報管理手段１０４の内部構造については図１よりも詳細に示している。システム間同期管理手段１０４は、システムＡ時間管理手段１０５と、システムＢ時間管理手段１０６と、基準動作時間格納手段１０７とを備えている。システムＡ時間管理手段１０５は、マイクロコンピュータシステムＡのプロセッサの１クロック時間を記憶する１クロック時間記憶２０１と、実行可能時間を記憶する内部時計２０２とを有している。同様に、システムＢ時間管理手段１０６は、マイクロコンピュータシステムＢのプロセッサの１クロック時間を記憶する１クロック時間記憶２０３と、実行可能時間を記憶する内部時計２０４とを有している。基準動作時間格納手段１０７には起動情報ファイル１０１に指定された基準動作時間が所定の条件を満たす場合に該基準動作時間が格納される。または、１クロック時間記憶２０１に記憶された１クロック時間と１クロック時間記憶２０３に記憶された１クロック時間とのうちの何れか一方を選択して基準動作時間としてもよい。
【００２４】
図３は、本実施の形態のシミュレーション装置の動作を示すフロー図である。また、図４〜図９はマイクロコンピュータシステムＡのプロセッサが４０ＭＨｚのクロックで動作しマイクロコンピュータシステムＢのプロセッサが２０ＭＨｚのクロックで動作する第１の実施例における図２の各ブロックの状態を示す図である。図２を参照しながら図３のフローにしたがって全体の動作の流れを説明する。その後に、第１の実施例の図４〜図９の各ブロックの状態を参照して本発明のシミュレーション装置の動作を詳細に説明する。なお、図３は、システムＡの想定動作周波数がシステムＢの動作周波数よりも大きいものとしたときのフローである。
【００２５】
先ず、図３のステップＳ１において、シミュレーション装置は、シミュレーション対象のシステム毎に動作周波数から１クロック時間を算出してシステムＡ時間管理手段１０５の１クロック時間記憶２０１およびシステムＢ時間管理手段１０６の１クロック時間記憶２０３に記憶し、また、基準動作時間を基準動作時間格納手段１０７にセットし、各システムに対応する不足クロック数を０に初期化する。次に、ステップＳ２に進み、システムＡ時間管理手段１０５の内部時計２０２およびシステムＢ時間管理手段１０６の内部時計２０４に基準動作時間をそれぞれ加算する。次に、ステップＳ３に進み、システムＡのシミュレーションが実行される。ステップＳ３はサブステップＳ３１〜Ｓ３８を含んでいる。
【００２６】
サブステップＳ３１では、内部時計２０２の記憶する時間がシステムＡの１クロック時間以上か否かを判断する。１クロック時間以上であると判断された場合にはサブステップＳ３２に進む。
【００２７】
サブステップＳ３２では、内部時計２０２に記憶された時間を１クロック時間記憶２０１に記憶された１クロック時間で除算し、商と剰余を算出する。次にサブステップＳ３３に進み、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａに不足クロック数が保持されている場合には得られた商が不足クロック数よりも大きいか否かを判断する。不足クロック数よりも大きいと判断された場合にはサブステップＳ３５に進む。
【００２８】
サブステップＳ３５では、サブステップＳ３２で算出された剰余を内部時計２０２に記憶するとともに、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａに対し命令の実行を指示する。また、同期情報管理手段１１４ａに不足クロック数または余分クロック数が保持されている場合には、（（命令実行に必要なクロック数＋不足クロック数）−（商＋余分クロック数））を算出する。次にサブステップＳ３６に進み、算出された値が負であるか否かを判断する。負であると判断された場合にはサブステップＳ３８に進み商を０にクリアしサブステップＳ３５で算出された値を同期情報管理手段１１４ａに余分クロック数として保持してサブステップＳ３５に戻る。
【００２９】
サブステップＳ３１で内部時計２０２に記憶された時間が基準動作時間未満であると判断された場合にはサブステップＳ３７へ進む。また、サブステップＳ３３で商が不足クロック数以下であると判断された場合にはサブステップＳ３４に進んで同期情報管理手段１１４ａに保持されていた不足クロック数から商を減算した値を新たな不足クロック数として更新してからサブステップＳ３７へ進む。また、サブステップＳ３６で負ではないと判断された場合にはサブステップＳ３７へ進む。サブステップＳ３７では同期情報管理手段１１４ａに不足クロック数を保持してステップＳ３を終える。
【００３０】
次に、ステップＳ４に進み、システムＢのシミュレーションが実行される。ステップＳ４はサブステップＳ４１〜Ｓ４８を含んでいる。
【００３１】
サブステップＳ４１では、内部時計２０４の記憶する時間がシステムＢの１クロック時間以上か否かを判断する。１クロック時間以上であると判断された場合にはサブステップＳ４２に進む。
【００３２】
サブステップＳ４２では、内部時計２０４に記憶された時間を１クロック時間記憶２０３に記憶された１クロック時間で除算し、商と剰余を算出する。次にサブステップＳ４３に進み、システムＢシミュレーション部１１１ｂ内の同期情報管理手段１１４ｂに不足クロック数が保持されている場合には得られた商が不足クロック数よりも大きいか否かを判断する。不足クロック数よりも大きいと判断された場合にはサブステップＳ４５に進む。
【００３３】
サブステップＳ４５では、サブステップＳ４２で算出された剰余を内部時計２０２に記憶するとともに、システムＢシミュレーション部１１１ｂ内の同期情報管理手段１１４ｂに対し命令の実行を指示する。また、同期情報管理手段１１４ｂに不足クロック数または余分クロック数が保持されている場合には、（（命令実行に必要なクロック数＋不足クロック数）−（商＋余分クロック数））を算出する。次にサブステップＳ４６に進み、算出された値が負であるか否かを判断する。負であると判断された場合にはサブステップＳ４８に進み商を０にクリアしサブステップＳ４５で算出された値を同期情報管理手段１１４ｂに余分クロック数として保持してサブステップＳ４５に戻る。
【００３４】
サブステップＳ４１で内部時計２０４に記憶された時間が基準動作時間未満であると判断された場合にはサブステップＳ４７へ進む。また、サブステップＳ４３で商が不足クロック数以下であると判断された場合にはサブステップＳ４４に進んで同期情報管理手段１１４ｂに保持されていた不足クロック数から商を減算した値を新たな不足クロック数として更新してからサブステップＳ４７へ進む。また、サブステップＳ４６で負ではないと判断された場合にはサブステップＳ４７へ進む。サブステップＳ４７では同期情報管理手段１１４ｂに不足クロック数を保持してステップＳ４を終える。
【００３５】
次のステップＳ５では、シミュレーション対象のプログラムについてすべての命令のシミュレーションが完了したか否かを判断する。完了していないと判断された場合にはステップＳ２に戻ってシミュレーションを続行し、完了したと判断された場合にはシミュレーションを終了する。
【００３６】
なお、何らかの理由により、どちらかのシステムが停止状態になった場合には、動作しているシステムのみのシミュレーションを継続する。
【００３７】
図４〜図９の第１の実施例は、想定動作クロック周波数４０ＭＨｚで動作するシステムＡシミュレーション部１１１ａと想定動作クロック周波数２０ＭＨｚで動作するシステムＢシミュレーション部１１１ｂをシミュレーション実行管理部１０２によって同期して動作させ、同時動作の精度を重視して実行した場合の実施例である。
【００３８】
図４を参照して具体的に説明すると、ステップＳ１では、シミュレーション実行管理部１０２は起動情報ファイル１０１を読み込み、システムＡシミュレーション部１１１ａとシステムＢシミュレーション部１１１ａを起動する。システム間同期情報管理手段１０４は、システムＡシミュレーション部１１１ａの想定動作クロック周波数４０ＭＨｚから１クロック時間（２５ｎｓ）を計算しシステムＡ時間管理手段１０５の１クロック時間記憶２０１に記憶する。同様にシステム間同期情報管理手段１０４は、システムＢシミュレーション部１１１ｂの想定動作クロック周波数２０ＭＨｚから１クロック時間（５０ｎｓ）を計算しシステムＢ時間管理手段１０６の１クロック時間記憶２０３に記憶する。また、シミュレーション実行管理部１０２は、同時動作の精度を重視してシミュレーションを実行するために、システムＡ時間管理手段１０５の１クロック時間記憶２０１とシステムＢ時間管理手段１０６の１クロック時間記憶２０３とに記憶されている１クロック時間のうち小さい方の時間すなわち２５ｎｓを選択し、基準動作時間として基準動作時間格納手段１０７に格納する。
【００３９】
ステップＳ２では、シミュレーション実行管理部１０２は、基準動作時間格納手段１０７に格納された基準動作時間分だけシミュレーションを進めることをシステムＡ時間管理手段１０５およびシステムＢ時間管理手段１０６へ伝達し、図４に示すように、システムＡ時間管理手段１０５では内部時計２０２が記憶する値に基準動作時間を加算して記憶し、システムＢ時間管理手段１０６では内部時計２０４が記憶する時間に基準動作時間を加算して記憶する。内部時計２０２，２０４には何れも０が記憶されていたとして、ここでは基準動作時間はシステムＡの１クロック時間と等しい２５ｎｓであるのでそれぞれに２５ｎｓが記憶される。
【００４０】
ステップＳ３ではシステムＡのシミュレーションを行う。サブステップＳ３１でシステムＡ時間管理手段１０５の内部時計２０２に記憶された時間（２５ｎｓ）と１クロック時間記憶２０１に記憶された１クロック時間（２５ｎｓ）とは等しいのでサブステップＳ３２へ進み、商が１で剰余が０となる。サブステップＳ３３では不足クロック数は０であるので、サブステップＳ３５に進み、図５に示すように剰余の０を内部時計２０２に記憶し、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａに対し命令の実行を指示する。
【００４１】
また、サブステップＳ３５では、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａはプロセッサシミュレート手段１１２ａに対し、図５に示すように、命令実行要求を出す。プロセッサシミュレート手段１１２ａはプログラム／データメモリ１１５ａから１命令を読み込んで実行し、その命令実行に必要なクロック数を同期情報管理手段１１４ａへ知らせる。ここでは例えばビット・セットの命令であるＳＥＴ１命令を実行し、ＳＥＴ１命令の実行には３クロックかかるものとする。同期情報管理手段１１４ａは、図５に示すように、周辺回路シミュレート手段１２１ａに３クロック分のＳＥＴ１命令の実行を促し、命令実行クロック数である３から商である１を減算して不足クロックの２を得る。ここで余分クロックがないので、周辺回路シミュレート手段１２１ａが１クロックに不足クロック数の２を加えた３クロック分の動作をシミュレーションする。続いてサブステップ３６で、同期情報管理手段１１４ａが保有する値は負ではないのでサブステップＳ３７に進み、図５に示すように、不足クロック数として２を保持し、基準動作時間分のシミュレーション処理であるステップＳ３の終了をシミュレーション実行管理部１０２に伝える。
【００４２】
続いてステップＳ４に移り、システムＢのシミュレーションを行う。サブステップＳ４１でシステムＢ用時間管理部手段１０６が内部時計２０４に記憶された動作可能時間と１クロック時間記憶２０３の１クロック時間とを比較する。図６に示すように、動作可能時間（２５ｎｓ）が１クロック時間（５０ｎｓ）よりも小さいのでサブステップＳ４７に進んで不足クロック数を０のままとし、基準動作時間分のシミュレーション処理であるステップ４の終了をシミュレーション実行管理部１０２に伝える。
【００４３】
ステップＳ５では、システムＡシミュレーション部１１１ａの同期情報管理手段１１４ａに不足クロック数が保持されているので、命令の実行が完了していないと判断されてステップＳ２に戻り、シミュレーションを続行する。
【００４４】
ステップＳ２では、シミュレーション実行管理部１０２は、基準動作時間格納手段１０７に格納された基準動作時間分だけシミュレーションを進めることをシステムＡ時間管理手段１０５およびシステムＢ時間管理手段１０６へ伝達し、図７に示すように、システムＡ時間管理手段１０５では内部時計２０２が記憶する値に基準動作時間を加算して記憶し、システムＢ時間管理手段１０６では内部時計２０４が記憶する時間に基準動作時間を加算して記憶する。
【００４５】
ステップＳ３に移りシステムＡのシミュレーションを行う。サブステップＳ３１でシステムＡ時間管理手段１０５の内部時計２０２に記憶された時間（２５ｎｓ）と１クロック時間記憶２０１に記憶された１クロック時間（２５ｎｓ）とは等しいのでサブステップＳ３２へ進み、商が１で剰余が０となる。サブステップＳ３３では不足クロック数は０であるので、サブステップＳ３５に進み、剰余の０を、図８に示すように、内部時計２０２に記憶し、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａに対し実行を指示するが、図８のようにシステムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａ不足クロック数が保有されている場合にはプロセッサシミュレート手段１１２ａや周辺回路シミュレート手段１１３ａにはなにも通知しない。したがってプロセッサシミュレート手段１１２ａや周辺回路シミュレート手段１１３ａでの新たな命令の実行はないため、命令クロック数は０、不足クロック数は２、商は１、余分クロック数は０としてサブステップＳ３５で算出される値は１となる。サブステップＳ３６で負ではないのでサブステップＳ３７に進み、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａは不足クロック数として１を新たに保有する。すなわち図８の場合には同期情報管理手段１１４ａの保有する不足クロック数情報は２から１に更新され、基準動作時間分のシミュレーション処理であるステップ３の終了をシミュレーション実行管理部１０２に伝える。
【００４６】
続いてステップＳ４に移り、システムＢのシミュレーションを行う。サブステップＳ４１で、図８に示すように、システムＢ時間管理手段１０６の内部時計２０４に記憶された時間（５０ｎｓ）と１クロック時間記憶２０３に記憶された１クロック時間（５０ｎｓ）とは等しいのでサブステップＳ４２へ進み、商が１で剰余が０となる。サブステップＳ４３では不足クロック数は０であるので、サブステップＳ４５に進み、図９に示すように剰余の０を内部時計２０２に記憶し、システムＢシミュレーション部１１１ｂ内の同期情報管理手段１１４ｂに対し命令の実行を指示する。
【００４７】
システムＢシミュレーション部１１１ｂ内の同期情報管理手段２２４はプロセッサシミュレート手段１１２ｂに対して命令実行要求を出し、プロセッサシミュレート手段１１２ｂは１命令をプログラム／データメモリ１１５ｂから取り込んで実行する。プロセッサシミュレート手段１１２ｂは、命令実行に必要なクロック数を同期情報管理手段２２４へ伝える。ここでは例えばノー・オペレーションの命令であるＮＯＰ命令を実行し、ＮＯＰ命令の実行には１クロックかかるものとする。同期情報管理手段１１４ｂは、図９に示すように、周辺回路シミュレート手段１２１ｂに１クロック分のＮＯＰ命令の実行を促し、命令実行クロック数である１から商である１を減算した値０を不足クロック数として保有する。ここで余分クロックがないので、周辺回路シミュレート手段１２１ｂが１クロックに不足クロック数の０を加えた１クロック分の動作をシミュレーションする。続いてサブステップ４６で、同期情報管理手段１１４ｂが保有する値は負ではないのでサブステップＳ４７に進み、図９に示すように、不足クロック数として０を保持し、基準動作時間分のシミュレーション処理であるステップＳ４の終了をシミュレーション実行管理部１０２に伝える。
【００４８】
続いてステップＳ５に進み、システムＡシミュレーション部１１１ａの同期情報管理手段１１４ａに不足クロック数が保持されているので、命令の実行が完了していないと判断されてステップＳ２に戻り、シミュレーションを続行する。このように動作を繰り返すことにより、本発明のシミュレーション装置は、異なる動作周波数を持つプロセッサコアをそれぞれに含むマイクロコンピュータシステムＡおよびマイクロコンピュータシステムＢの同時動作をシミュレーションすることができる。
【００４９】
次に、図１０〜図１５を参照してシミュレーション速度を優先してシミュレーションを実行する第２の実施例について動作を説明する。第２の実施例では、想定動作クロック周波数１０ＭＨｚで動作するシステムＡシミュレーション部１１１ａと想定動作クロック周波数１ＭＨｚで動作するシステムＢシミュレーション部１１１ｂとを、シミュレーション実行管理部１０２が制御して同時にシミュレーションする。
【００５０】
先ず、ステップＳ１では、シミュレーション実行管理部１０２は起動情報ファイル１０１を読み込み、システムＡシミュレーション部１１１ａとシステムＢシミュレーション部１１１ａを起動する。システム間同期情報管理手段１０４は、システムＡシミュレーション部１１１ａの想定動作クロック周波数１０ＭＨｚから１クロック時間（１００ｎｓ）を計算しシステムＡ時間管理手段１０５の１クロック時間記憶２０１に記憶する。同様にシステム間同期情報管理手段１０４は、システムＢシミュレーション部１１１ｂの想定動作クロック周波数１ＭＨｚから１クロック時間（１０００ｎｓ）を計算しシステムＢ時間管理手段１０６の１クロック時間記憶２０３に記憶する。また、シミュレーション実行管理部１０２は、シミュレーション速度を優先してシミュレーションを実行するために、システムＡ時間管理手段１０５の１クロック時間記憶２０１とシステムＢ時間管理手段１０６の１クロック時間記憶２０３とに記憶されている１クロック時間のうち大きい方の時間すなわち１０００ｎｓを選択し、図１０に示すように、基準動作時間として基準動作時間格納手段１０７に格納する。
【００５１】
ステップＳ２では、シミュレーション実行管理部１０２は、基準動作時間格納手段１０７に格納された基準動作時間分だけシミュレーションを進めることをシステムＡ時間管理手段１０５およびシステムＢ時間管理手段１０６へ伝達し、図１０に示すように、システムＡ時間管理手段１０５では内部時計２０２が記憶する値に基準動作時間を加算して記憶し、システムＢ時間管理手段１０６では内部時計２０４が記憶する時間に基準動作時間を加算して記憶する。内部時計２０２，２０４には何れも０が記憶されていたとして、ここでは基準動作時間はシステムＢの１クロック時間と等しい１０００ｎｓであるのでそれぞれに１０００ｎｓが記憶される。
【００５２】
ステップＳ３ではシステムＡのシミュレーションを行う。サブステップＳ３１でシステムＡ時間管理手段１０５の内部時計２０２に記憶された時間（１０００ｎｓ）と１クロック時間記憶２０１に記憶された１クロック時間（１００ｎｓ）とを比較し前者が大きいのでサブステップＳ３２へ進み、商が１０で剰余が０となる。サブステップＳ３３では不足クロック数は０であるので、サブステップＳ３５に進み、図１１に示すように剰余の０を内部時計２０２に記憶し、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａに対し命令の実行を指示する。
【００５３】
また、サブステップＳ３５では、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａはプロセッサシミュレート手段１１２ａに対し、図１１に示すように、命令実行要求を出す。プロセッサシミュレート手段１１２ａは１命令をプログラム／データメモリ１１５ａから取り込んで実行し、その命令実行に必要なクロック数を同期情報管理手段１１４ａへ知らせる。ここでは例えばビット・セットの命令であるＳＥＴ１命令を実行し、ＳＥＴ１命令の実行には３クロックかかるものとする。同期情報管理手段１１４ａは、図１１に示すように、周辺回路シミュレート手段１２１ａに３クロック分のＳＥＴ１命令の実行を促し、命令実行クロック数である３から商である１０を減算した値（−７）を保有する。サブステップ３６で、同期情報管理手段１１４ａが保有する値は負であるのでサブステップＳ３８に進み、商を０にクリアしたのち、図１１に示すように、余分クロック数として（−７）を保持する。負の符号は余分クロックであることを表す。
【００５４】
同期情報管理手段１１４ａに余分クロック数が保持されているためサブステップＳ３５に戻り、引き続いて同期情報管理手段１１４ａはプロセッサシミュレート手段１１２ａに対し命令実行要求を出す。プロセッサシミュレート手段１１２ａは次の１命令を実行し、その命令実行に必要なクロック数を同期情報管理手段１１４ａへ知らせる。次の命令としてレジスタ間接無条件分岐の命令であるＪＭＰ命令を実行し、ＪＭＰ命令の実行には３クロックかかるものとする。同期情報管理手段１１４ａは、図１２に示すように、ＪＭＰ命令の命令実行クロック数である３から余分クロック数である７を減算して（−４）を得る。続いてサブステップ３６からサブステップ３８に進み、同期情報管理手段１１４ａは、余分クロック数として（−４）を保持する。
【００５５】
同期情報管理手段１１４ａに余分クロック数が保持されているためサブステップＳ３５に戻り、引き続いて同期情報管理手段１１４ａはプロセッサシミュレート手段１１２ａに対し命令実行要求を出す。プロセッサシミュレート手段１１２ａは次の１命令を実行し、その命令実行に必要なクロック数を同期情報管理手段１１４ａへ知らせる。次の命令としてＳＥＴ１命令を実行し、ＳＥＴ１命令の実行には３クロックかかるので、同期情報管理手段１１４ａは、図１３に示すように、ＳＥＴ１命令の命令実行クロック数である３から余分クロック数である４を減算して（−１）を得る。続いてサブステップ３６からサブステップ３８に進み、同期情報管理手段１１４ａは、余分クロック数として（−１）を保持する。
【００５６】
同期情報管理手段１１４ａに余分クロック数が保持されているためサブステップＳ３５に戻り、引き続いて同期情報管理手段１１４ａはプロセッサシミュレート手段１１２ａに対し命令実行要求を出す。プロセッサシミュレート手段１１２ａは次の１命令を実行し、その命令実行に必要なクロック数を同期情報管理手段１１４ａへ知らせる。次の命令として割込ルーチン等からのリターンの命令であるＲＥＴ１命令を実行し、ＲＥＴ１命令の実行には３クロックかかるものとする。同期情報管理手段１１４ａは、図１４に示すように、ＲＥＴ１命令の命令実行クロック数である３から余分クロック数である１を減算して不足クロック数の２を得る。ここで余分クロックがなくなったので周辺回路シミュレート手段がサブステップ３５の商に相当する１０クロックに不足クロック数２を加えた１２クロック分の動作をシミュレーションする。この後、サブステップＳ４６で値が正であるのでサブステップＳ４７に進み、図１４に示すように、システムＡシミュレーション部１１１ａ内の同期情報管理手段１１４ａは不足クロック数として２を保有し、基準動作時間分のシミュレーション処理であるステップ３の終了をシミュレーション実行管理部１０２に伝える。
【００５７】
続いてステップＳ４に移り、システムＢのシミュレーションを行う。サブステップＳ４１で、図１５に示すように、システムＢ時間管理手段１０６の内部時計２０４に記憶された時間（１０００ｎｓ）と１クロック時間記憶２０３に記憶された１クロック時間（１０００ｎｓ）とは等しいのでサブステップＳ４２へ進み、商が１で剰余が０となる。サブステップＳ４３では不足クロック数は０であるので、サブステップＳ４５に進み、図１５に示すように剰余の０を内部時計２０２に記憶し、システムＢシミュレーション部１１１ｂ内の同期情報管理手段１１４ｂに対し命令の実行を指示する。
【００５８】
システムＢシミュレーション部１１１ｂ内の同期情報管理手段２２４はプロセッサシミュレート手段１１２ｂに対して命令実行要求を出し、プロセッサシミュレート手段１１２ｂは１命令をプログラム／データメモリ１１５ｂから取り込んで実行する。プロセッサシミュレート手段１１２ｂは、命令実行に必要なクロック数を同期情報管理手段１１４ｂへ伝える。ここでは例えば次の命令としてＮＯＰ命令であり、ＮＯＰ命令の実行には１クロックかかるものとする。同期情報管理手段１１４ｂは、図１５に示すように、周辺回路シミュレート手段１２１ｂに１クロック分のＮＯＰ命令の実行を促し、命令実行クロック数である１から商である１を減算した値０を不足クロック数として保有する。ここで余分クロックがないので、周辺回路シミュレート手段１２１ｂが１クロックに不足クロック数の０を加えた１クロック分の動作をシミュレーションする。サブステップ４６で、同期情報管理手段１１４ｂが保有する値は負ではないのでサブステップＳ４７に進み、図９に示すように、不足クロック数として０を保持し、基準動作時間分のシミュレーション処理であるステップＳ４の終了をシミュレーション実行管理部１０２に伝える。
【００５９】
続いてステップＳ５に進み、システムＡシミュレーション部１１１ａの同期情報管理手段１１４ａに不足クロック数が保持されているので、命令の実行が完了していないと判断されてステップＳ２に戻り、シミュレーションを続行する。このように動作を繰り返すことにより、第２の実施例においても第１の実施例と同様に、異なる動作周波数を持つプロセッサコアをそれぞれに含むマイクロコンピュータシステムＡおよびマイクロコンピュータシステムＢの同時動作をシミュレーションすることができる。これに加えて、クロック周波数が本実施例と同じ組み合わせのシステムに対して小さい方の１クロック時間を基準動作時間として用いた第１の実施例を適用した場合には図３のステップＳ２〜ステップＳ４を計４回繰り返す必要があるが、本実施例では大きい方の１クロック時間を基準動作時間として実行したため、図３のステップＳ２〜Ｓ４の処理を１回行うだけで同等のシミュレーションを実行できるので、シミュレーション時間を短縮することが可能となる。
【００６０】
次に、第３の実施例について説明する。図１６は、本発明のシミュレーション装置の第３の実施例のブロック図である。図１６のシミュレーション装置は、それぞれがプロセッサコア、プログラム／データメモリおよび周辺回路シミュレータを含む４個のマイクロコンピュータシステムを同時にシミュレーションするものである。
【００６１】
図１６において、システムＡシミュレーション部１１１ａはプロセッサシミュレート手段１１２ａ、同期情報管理手段１１４ａ、プログラム／データメモリ１１５ａ、外部割込生成手段１１６ａ、周辺回路シミュレート手段１２１ａを備えている。同様にシステムＢシミュレーション部１１１ｂはプロセッサシミュレート手段１１２ｂ、同期情報管理手段１１４ｂ、プログラム／データメモリ１１５ｂ、外部割込生成手段１１６ｂ、周辺回路シミュレート手段１２１ｂを備え、システムＣシミュレーション部１１１ｃはプロセッサシミュレート手段１１２ｃ、同期情報管理手段１１４ｃ、プログラム／データメモリ１１５ｃ、外部割込生成手段１１６ｃ、周辺回路シミュレート手段１２１ｃを備え、システムＤシミュレーション部１１１ｄはプロセッサシミュレート手段１１２ｄ、同期情報管理手段１１４ｄ、プログラム／データメモリ１１５ｄ、外部割込生成手段１１６ｄ、周辺回路シミュレート手段１２１ｄを備えている。
【００６２】
シミュレーション実行管理部３０２は、システムＡシミュレーション部１１１ａにおけるシミュレーション実行動作、システムＢシミュレーション部１１１ｂにおけるシミュレーション実行動作、システムＣシミュレーション部１１１ｃにおけるシミュレーション実行動作、システムＤシミュレーション部１１１ｄにおけるシミュレーション実行動作を制御する。シミュレーション実行管理部３０２は、シミュレータ起動手段１０３、システム間同期情報管理手段３０４およびバス制御手段１０８から構成される。システム間同期情報管理手段３０４は、システムＡシミュレーション部１１１ａに対応するシステムＡ時間管理手段１０５と、システムＢシミュレーション部１１１ｂに対応するシステムＢ時間管理手段１０６と、システムＣシミュレーション部１１１ｃに対応するシステムＣ時間管理手段３０５と、システムＤシミュレーション部１１１ｄに対応するシステムＤ時間管理手段３０６とを有している。
【００６３】
本実施例では、同時動作シミュレーションの対象となるシステムが４個となっているが、一般的にはｎ（ｎは２以上の整数）個に拡張可能である。動作については、図３のステップＳ３およびステップＳ４を、それぞれがステップＳ３（またはステップＳ４）と同様のサブステップを有するｎ個のシステムシミュレーションステップに置き換えればよいので、詳細な説明は省略する。なお、好ましくは、ｎ個のシステムに拡張した場合には、シミュレーション実行管理部３０２の制御の下に基準時動作間毎に想定動作周波数が最も大きいシステム（すなわち１クロック時間の最も小さいシステム）から想定動作周波数が最も小さいシステム（すなわち１クロック時間の最も大きいシステム）への順序でシミュレーションするように構成する。
【００６４】
図１６の第３の実施例においても、第１の実施例と同様にシステムＡ〜Ｄのうちの最も小さい１クロック時間を基準動作時間として採用することにより同時動作の精度を重視したシミュレーションを実行してもよく、または、第２の実施例と同様にシステムＡ〜Ｄのうちの最も大きい１クロック時間を基準動作時間として採用することによりシミュレーション速度の向上を優先したシミュレーションを実行してもよい。
【００６５】
次に、本発明の第４の実施例について説明する。図１７は第４の実施例のブロック図である。図１７では、システムＡシミュレーション部４１１ａの周辺回路シミュレート部４２１ａ内にＤＭＡ（ダイレクトメモリアクセス）回路シミュレータ４３２ａを設け、システムＢシミュレーション部４１１ｂの周辺回路シミュレート部４２１ｂ内にＤＭＡ（ダイレクトメモリアクセス）回路シミュレータ４３２ｂを設け、また、バス制御手段４０８内に仮想共有メモリ４３１を設けることにより、システムＡシミュレーション部４１１ａとシステムＢシミュレーション部４１１ｂの高速通信をシミュレーションすることが可能となっている。
【００６６】
起動情報ファイル１０１に仮想共有メモリを使うことを記述して、シミュレーション実行管理部４０２を起動した場合に、バス制御手段４０８内に仮想共有メモリ４３１を用意する。システム間同期情報管理手段１０４のシステムＡ時間管理手段１０５からシステムＡシミュレーション部４１１ａの同期情報管理手段１１４ａにクロック数の通知をした際に、プログラム／データメモリ１１５ａからプロセッサシミュレート手段１１２ａに取り込まれたプログラムがダイレクトメモリアクセスの動作をするプログラムであった場合には、ＤＭＡ回路シミュレータ４３２ａは仮想メモリ共有手段４３１に対して転送を行うメモリの内容を通知する。仮想共有メモリ手段４３１はその内容を保持し、システムＢシミュレーション部４１１ｂの同期情報管理手段１１４ｂにシステム間同期情報管理手段１０４からクロック数（図３のサブステップ４５の商）が通知され、プロセッサシミュレート手段１１２ｂがプログラム／データメモリ１１５ｂからダイレクトメモリアクセスの動作をするプログラムを読んだ場合には、ＤＭＡ回路シミュレータ４３２ｂを通じて仮想共有メモリ手段４３１に保持されているメモリの内容をプログラム／データメモリ１１５ｂに転送する。
【００６７】
次に、本発明の第５の実施例について説明する。図１８は第５の実施例のブロック図である。図１８では、システムＡシミュレーション部５１１ａに搭載されているタイマ回路シミュレータ１１８ａが定期的に発生するタイマ出力をシステムＢシミュレーション部５１１ｂに搭載されているシリアル入出力回路シミュレータ１２０ｂの想定動作クロックとして使用する場合のシミュレーションが可能である。
【００６８】
シミュレーション実行管理部１０２は起動情報ファイル１０１に記述されたシステムＡシミュレーション部５１１ａからの端子出力の接続先がシステムＢシミュレーション部５１１ｂのクロックジェネレータである場合に、バス制御手段１０８の接続先をシステムＢシミュレーション部５１１ｂの同期情報管理手段１１４ｂに設定する。システムＡシミュレーション部５１１ａの周辺回路シミュレート手段５２１ａ内のタイマ回路シミュレータ手段１１８ａにタイマ出力が発生した場合に、タイマ回路シミュレータ手段１１８はシミュレーション実行管理部１０２のバス制御手段１０８へタイマ出力情報を伝達し、バス制御手段１０８はタイマ出力情報を保持する。システムＢシミュレーション部５１１ｂのシミュレーション時に周辺回路シミュレート手段５２１ｂ内のシリアル入出力回路シミュレータ１２０ｂから動作クロックの要求があった場合に、同期情報管理手段１１４ｂはバス制御手段１０８に対して保持している情報の公開を求める。同期情報管理手段１１４ｂは受け取ったタイマ出力情報をシリアル入出力回路シミュレータ手段１２０ｂに伝達し、シリアル入出力回路シミュレータ手段１２０ｂはタイマ出力情報を動作クロックとしてシミュレーションする。
【００６９】
なお、本発明のシミュレーション装置は、シミュレーション実行管理部および複数のシステムシミュレーション部を備える１個の専用のハードウェアとして実現してもよいが、汎用のコンピュータとシミュレーション実行管理部の機能を有するプログラムおよび複数のシステムシミュレーション部のそれぞれの機能を有するプログラムを用いて構成してもよい。さらに、例えば、システムＡシミュレーション部の機能のプログラムとシミュレーション実行管理部の機能のプログラムとをひとつのコンピュータ上に搭載し、システムＢシミュレーション部の機能のプログラムを別のコンピュータに搭載するなど、複数のコンピュータに分散してネットワークを介して接続してもよく、シミュレーション装置をこのように構成することによりさらに高速なシミュレーションを実行することができる。
【００７０】
さらに、起動情報ファイル１０１に、速度優先のシミュレーションを行なうか、または精度優先のシミュレーションを行なうかの情報を組み込むことによって、起動時にシミュレーション実行管理部１０２で起動情報ファイルから読み込んだ情報から判断して、ユーザの希望する精度、速度でシミュレーションを実行することが可能となる。また、速度優先から精度優先に切り替えるタイミングまたは精度優先から速度優先に切り替えるタイミングの情報を追加すれば、速度優先と精度優先のシミュレーションを組み合わせて実行することも可能となる。
【００７１】
【発明の効果】
以上のように、本発明を適用することにより、異なる動作周波数を持つプロセッサコアをそれぞれに含む複数のマイクロコンピュータシステムの同時動作をシミュレーションが可能となる。これにより、異なる動作周波数を持つマイクロコンピュータシステム間でデータ、クロック、割込等の信号の送受信がある場合においても、それぞれのマイクロコンピュータシステムの動作を正しくシミュレーションすることが可能となる。さらに、基準動作時間の設定を調整することにより動作の同時性の精度を重視するか、またはシミュレーション速度を優先するかをシミュレーションの目的に応じて選択することができるので、本発明の利用価値は大きい。
【図面の簡単な説明】
【図１】本発明のシミュレーション装置の一実施の形態のブロック図である。
【図２】本発明の動作を説明するためのブロック図である。
【図３】本発明のシミュレーション装置の動作を示すフロー図である。
【図４】第１の実施例の動作中の各ブロックの状態を示す図である。
【図５】第１の実施例の動作中の各ブロックの状態を示す図である。
【図６】第１の実施例の動作中の各ブロックの状態を示す図である。
【図７】第１の実施例の動作中の各ブロックの状態を示す図である。
【図８】第１の実施例の動作中の各ブロックの状態を示す図である。
【図９】第１の実施例の動作中の各ブロックの状態を示す図である。
【図１０】第２の実施例の動作中の各ブロックの状態を示す図である。
【図１１】第２の実施例の動作中の各ブロックの状態を示す図である。
【図１２】第２の実施例の動作中の各ブロックの状態を示す図である。
【図１３】第２の実施例の動作中の各ブロックの状態を示す図である。
【図１４】第２の実施例の動作中の各ブロックの状態を示す図である。
【図１５】第２の実施例の動作中の各ブロックの状態を示す図である。
【図１６】本発明のシミュレーション装置の第３の実施例のブロック図である。
【図１７】本発明のシミュレーション装置の第４の実施例のブロック図である。
【図１８】本発明のシミュレーション装置の第５の実施例のブロック図である。
【図１９】従来のシミュレーション装置のブロック図である。
【符号の説明】
１０１　　起動情報ファイル
１０２，３０２，４０２　　シミュレーション実行管理部
１０３　　シミュレータ起動手段
１０４，３０４　　システム間同期情報管理手段
１０５，１０６，３０５，３０６　　時間管理手段
１０７　　基準動作時間格納手段
１０８，４０８　　バス制御手段
１１１ａ，１１１ｂ，１１１ｃ，１１１ｄ，４１１ａ，４１１ｂ，５１１ａ，５１１ｂ　　シミュレーション部
１１２ａ，１１２ｂ，１１２ｃ，１１２ｄ　　プロセッサシミュレート手段
１１４ａ，１１４ｂ，１１４ｃ，１１４ｄ　　同期情報管理手段
１１５ａ，１１５ｂ，１１５ｃ，１１５ｄ　　プログラム／データメモリ
１２１ａ，１２１ｂ，１２１ｃ，１２１ｄ，４２１ａ，４２１ｂ，５２１ａ，５２１ｂ　　周辺回路シミュレート手段
【図１】
2004021904.tif 000003
【図２】
2004021904.tif 000004
【図３】
2004021904.tif 000005
【図４】
2004021904.tif 000006
【図５】
2004021904.tif 000007
【図６】
2004021904.tif 000008
【図７】
2004021904.tif 000009
【図８】
2004021904.tif 000010
【図９】
2004021904.tif 000011
【図１０】
2004021904.tif 000012
【図１１】
2004021904.tif 000013
【図１２】
2004021904.tif 000014
【図１３】
2004021904.tif 000015
【図１４】
2004021904.tif 000016
【図１５】
2004021904.tif 000017
【図１６】
2004021904.tif 000018
【図１７】
2004021904.tif 000019
【図１８】
2004021904.tif 000020
【図１９】
2004021904.tif 000021