本発明を実施するための形態について、以下では図面を用いて詳細に説明する。
(第一実施形態)本発明による情報処理装置は、例えば、パーソナルコンピュータ、ワークステーション等(以下、まとめてコンピュータシステムと記す。)で実行されるプログラムによって実現される。図1に示す様に、コンピュータシステム200は、プログラムの実行処理を行う中央処理装置(CPU)201を備えている。CPU201は、バス210経由で、読み出し専用メモリ(ROM)202や読み書き可能なメモリ(RAM)203にアクセス可能となっている。バス210には、さらに、キーボード、マウス、タブレットなどの入力装置205からデータを受け取るための入力インタフェース204が設けられている。また、CRT、LCD、プリンタ、プロッタ等の出力装置207にデータを受け渡すための出力インタフェース206もバス210に接続されている。また、外部記憶インタフェース208は、ハードディスクやCD−ROM等の外部記憶装置209に対するデータの入出力を行うものである。外部記憶装置209は、本発明による情報処理装置としてコンピュータシステムを機能させるための処理プログラム209aを保存している。さらに、外部記憶装置209は、各種設定データ209bと、模擬対象の装置で動作する制御ソフトウェア(ファームウェア)209cを保存している。
続いて、一実施形態として、本発明による情報処理装置が模擬する電子写真装置について説明する。図2の電子写真装置300は、イエロー、マゼンタ、シアン、ブラックの各色のトナー像が形成される4個の像担持体303a〜dを備えている。像担持体303a〜dは、いわゆる、感光ドラムであり、直列に配置される。1次帯電器304a〜dは、像担持体303a〜dを帯電し、露光装置305a〜dは、像担持体303a〜dに静電潜像を形成し、現像器306a〜dは、静電潜像を現像する。また、クリーニング装置307a〜dは、像担持体303a〜dの残留トナーを除去するためのものである。
感光ドラム303a〜dの下方には、中間転写ベルト301が配置される。中間転写ベルト301は、中間転写ベルトを駆動するローラ308〜310の周りに張設され、感光ドラム303a〜dと略同速で矢印方向に回転する。中間転写ベルト301は、感光ドラム303a〜dと各1次転写ローラ302a〜dによって挟持される。また、電子写真装置300は、用紙格納カセット312、ピックアップローラ313、レジストセンサ315、レジストローラ314を含む給紙搬送機構を有している。更に、レジストローラ314の下流には、中間転写ベルト301と当接する2次転写ローラ316及び定着装置317を含む印字搬送機構と、排紙ローラ318及び排紙トレイ319を含む排紙搬送機構を有している。
本発明による情報処理装置は、例えば、電子写真装置300の制御を行うファームウェアの検証評価を、電子写真装置300を使用することなく行うことを可能とするものである。図1の処理プログラム209aを実行することにより実現される、本発明による情報処理装置の一形態である電子写真装置シミュレーションシステム500(以後、単にシステムと呼ぶ。)のブロック図を図3に示す。
図3において、CPUシミュレータ502は、実際の電子写真装置300で動作するファームウェアを実行するものである。また、用紙搬送シミュレータ503は、電子写真装置300において記録材を搬送する用紙搬送機能部分を模擬するものである。さらに、プロセスユニットシミュレータ504は、実際の電子写真装置300における露光装置、現像装置、定着装置を含む電子写真プロセスユニット機能部分を模擬するものである。なお、図3の簡易シーケンサ603、外部I/F601及び簡易シーケンサI/F602は第三実施形態での構成要素であり、本実施形態において説明は省略する。
各シミュレータ502〜504は、それぞれ独立したプロセスであり、それぞれ、他の機能と接続するための外部I/F515〜517を備えている。また、シミュレータ接続部501は、各シミュレータと接続するためのシミュレータI/F506〜508を備えている。なお、シミュレータ接続部501は、マルチスレッド構成となっており、コア部505、CPUシミュレータI/F506、用紙搬送シミュレータI/F507、プロセスユニットシミュレータI/F508は各々別スレッドとして並列に処理が行われる。
シミュレータI/F506〜508は、それぞれ、接続先のシミュレータの外部I/Fに適合した接続処理を行うが、コア部505とは共通の仕様に基づいて接続処理を行う。つまり、シミュレータI/F506〜508は接続処理の変換を提供する。各シミュレータI/F506〜508を実現するプログラムは、外部記憶装置209の処理プログラム209a内にI/Fライブラリとして格納されている。I/Fライブラリはシステムを構成する各シミュレータに応じて用意されるもので、ダイナミックリンクライブラリ(dll)として提供される。この様に構成することで、本実施形態に示すシミュレータ502〜504以外の様々なシミュレータを容易にシステム500に組み込むことが可能になる。
なお、図3において外部記憶装置209は、図1の設定データ209bに対応するシミュレータ構成定義情報518と同期定義情報519を保持している。
コア部505の同期モジュール509は、各シミュレータ502〜503の模擬時刻を同期させるものである。同期モジュール509による同期処理の詳細は後述する。また、配線モジュール510は、予め設定された配線定義情報に基づき、各シミュレータ502〜504間の仮想信号の伝送処理を行う。ここで、仮想信号とはシミュレータ502〜504間で等価として扱われる信号のことである。例えば、CPUシミュレータ502のモータ制御信号の仮想ポートと、用紙搬送シミュレータ503が模擬するモータの動作設定情報は等価である。具体的には、CPUシミュレータ502によるシミュレーションの結果、モータ制御信号の仮想ポートがモータ駆動を示す値に変化したとする。この場合、用紙搬送シミュレータ503のモータモデルの動作設定情報もメインモータ駆動を示す値にならなければならない。配線モジュール510は、仮想信号をシミュレータ間において伝達し、全シミュレータでの処理を同期させるものである。
CPUシミュレータ502は、外部記憶装置209に格納された電子写真装置300のファームウェア209cをRAM203にロードしてファームウェアプログラムを実行する。具体的には、RAM203上に擬似的に定義されたターゲットCPUのレジスタ、メモリ、入出力信号の読み出し、書き込みと各種演算を実行する。また、命令実行とともにターゲットCPUにおいて進行する実行サイクル数を計算し、総実行サイクル数を更新する。この総実行サイクル数が、CPUシミュレータ502における模擬時刻となる。
CPUシミュレータ502は、模擬処理中に各種イベントが発生すると、模擬処理を一時停止し、発生したイベントを外部I/F515を介してシミュレータ接続部501に通知する。また、CPUシミュレータ502は、シミュレータ接続部501から各種指示を受け付ける。
図19は、CPUシミュレータ502が、外部に通知するイベントの例である。開始イベントは、オペレータによる操作、又は、外部からの指示により模擬処理の実行を開始したときに発生するイベントである。終了イベントは、オペレータによる操作、又は、外部からの指示により模擬処理が終了したときに発生するイベントである。リードアクセス・イベントは、ファームウェアの実行により所定の仮想アドレス(ターゲットCPU上のアドレス)領域からデータの読出しが行われる場合に発生するイベントである。このイベントは、所定領域からのリード命令実行直前に発生する。ここで、イベント発生の対象となる仮想アドレス領域は、外部からの指示により予め指定された領域である。リードアクセス・イベントでは、リード対象のアドレス、読み出しサイズ、読み出し値、総実行サイクル数が通知される。
ライトアクセス・イベントは、ファームウェアの実行により所定の仮想アドレス領域へのデータの書込みが行われる場合に発生するイベントである。このイベントは、所定領域へのライト命令実行直後に発生する。ここで、イベント発生の対象となる仮想アドレス領域は、外部からの指示により予め指定された領域である。ライトアクセス・イベントでは、書き込みアドレス、書き込みサイズ、書き込み値、総実行サイクル数が通知される。
なお、リードアクセス及びライトアクセスの各イベントの対象となる仮想アドレス領域は、メモリ、入出力信号、アドレス空間上にマッピングされたレジスタ(CPU周辺回路の制御レジスタ等)である。
割り込みイベントは、外部からの指示に応じて割込み処理の模擬を開始したときに発生するイベントである。このイベントは、ファームウェアの割込みハンドラの処理開始直前に発生する。割り込みイベントでは、発生した割込みの番号(割り込み番号)、総実行サイクル数が通知される。ここで、割込み番号はターゲットCPUにおいて、予め定義された番号で、外部から割込みを指示する際には、割込み番号によって割込みの種別を指定する。
タイマ・イベント(指定サイクル数到達イベント)は、ファームウェアの実行に伴いカウントされるターゲットCPU上の総実行サイクル数が、指定されたサイクル数に到達した場合に発生するイベントである。ただし、指定されたサイクル数の到達が1命令実行途中にあたる場合には、当該命令の模擬終了後に、このタイマ・イベントは発生する。タイマ・イベントでは、タイマ・イベント番号と総実行サイクル数が通知される。ここで、タイマ・イベント番号はタイマ・イベント発生条件を指定する際にタイマ・イベント毎に指定される番号である。
CPUシミュレータ502は、イベントを外部に通知した場合、シミュレーションを一時停止して指示待ち状態となる。そして、シミュレータ接続部501から再開指示を受けた場合、シミュレーションを再開する。
図20は、CPUシミュレータ502が、シミュレータ接続部501から受け取る指示の例である。開始指示は、模擬実行開始の指示である。CPUシミュレータ502は、終了状態において開始指示を受けると指示待ち状態になる。終了指示は、模擬終了の指示である。CPUシミュレータ502は、模擬処理中、又は、指示待ち状態であるときに終了指示を受けると、シミュレータ接続部501に模擬終了を通知する。なお、模擬処理中である場合には、このとき、指示待ち状態に遷移する。その後、シミュレータ接続部501から再開指示を受けたときに終了処理を行い終了状態に遷移する。
一時停止指示は、模擬処理の一時停止の指示である。CPUシミュレータ502は、模擬処理中に一時停止指示を受信すると、模擬処理を停止して、指示待ち状態に遷移する。なお、CPUシミュレータ502は、各イベントを通知したときにも、指示待ち状態に遷移する。なお、CPUシミュレータ502は、指示待ち状態において再開指示を受け取ると、停止していた模擬処理を再開する。
リードイベント領域指定指示は、リードイベント発生の対象となる仮想アドレス領域を指定するものである。具体的には、対象となる仮想アドレスとデータサイズを指定する。ライトイベント領域指定指示は、ライトイベント発生の対象となる仮想アドレス領域を指定するものであり、対象となる仮想アドレスとデータサイズを指定する。
所定領域読出し指示は、仮想アドレス領域の値の読出しを要求するもので、対象となる仮想アドレス、読出しサイズ、読み出したデータを格納する領域を指定する。CPUシミュレータ502は、本指示を受けると、指定された仮想アドレスから指定されたサイズのデータを読み出し、指定された格納領域に書き込む。所定領域書込み指示は、仮想アドレス領域に値の書込みを要求するもので、対象となる仮想アドレス、書込みサイズ、書込み値を指定する。CPUシミュレータ502は、本指示を受けると、指定された値を、指定された仮想アドレスに指定されたサイズで書き込む。
レジスタ読出し指示は、指定された仮想レジスタの値の読出しを要求するもので、対象となるレジスタIDを指定する。ここで、レジスタIDは、CPUシミュレータ502がターゲットCPUの持つレジスタ各々に固有の番号を対応付けて定義したものである。CPUシミュレータ502は本指示を受けるとIDによって指定された仮想レジスタの値を外部に報知する。レジスタ書込み指示は、指定された仮想レジスタへの値の書込みを要求するもので、対象となるレジスタIDと書込み値を指定する。CPUシミュレータ502は本指示を受けるとIDによって指定された仮想レジスタの値を指定された値に変更する。
なお、レジスタ読出し/書込み指示で対象とするレジスタは、ターゲットCPUの内部のレジスタ(アドレスマップ上に定義されないレジスタ)である。なお、アドレスマップ上で定義される、周辺回路の制御レジスタ等へのアクセスは、所定領域読出し/書込み指示により対応する。
割込み発生指示は、ファームウェアの処理において割込みを要求するものであり、割込み番号を指定する。ここで、割込み番号は、CPUシミュレータ502がターゲットCPUの持つ割込み各々に固有の番号を対応付けて定義したものである。CPUシミュレータ502は、本指示を受けると割込み番号によって指定された割込み処理を実行する。タイマ・イベント発生指示は、指定された総実行サイクル数でタイマ・イベントの発生を指示するもので、タイマ・イベント番号と総実行サイクル数を指定する。
用紙搬送シミュレータ503は、モータ、アクチュエータ、センサを含む電子写真装置300の用紙搬送機構を構成する各種機構部品、機構部品により搬送される用紙の動作を模擬する。用紙搬送シミュレータ503は、機構部品や用紙の動作を出力装置207の表示装置に表示すると共に、模擬処理の結果として、センサ情報をシミュレータ接続部501に出力する。
用紙搬送シミュレータ503は、処理単位時間毎に、模擬対象である用紙搬送機構の動作に関する指定をシミュレータ接続部501から取得する。そして、用紙搬送機構の各構成要素間の相互作用に関する定義と、指定された動作から、処理単位時間経過時の各構成要素の状態を解析する。用紙搬送シミュレータ503は、解析が終了する度に表示装置の表示を更新し、かつ、センサ状態をシミュレータ接続部501に出力する。なお、これら処理のための上記相互作用に関する定義や、初期状態に関する情報は、シミュレータ構成定義情報518に含まれている。
なお、用紙搬送シミュレータ503の処理単位時間は、例えば、5ミリ秒、10ミリ秒、20ミリ秒から選択できる。処理単位時間の選択は、同期定義情報519に選択する処理単位時間を示すデータを追加することにより行う。
図21(a)は、用紙搬送シミュレータ503が、外部に通知するイベントの例である。開始及び終了イベントは、CPUシミュレータ502と同じである。指示待ちイベントは、処理単位時間が経過して指示待ち状態になったときに発生するイベントである。指示待ちイベントでは、その時点における用紙搬送シミュレータ503の模擬時刻が通知される。
センサ状態変化イベントは、センサとして定義されたモデルの状態が変化した場合に発生するイベントである。センサ状態変化イベントでは、変化したセンサのID、センサ状態情報が通知される。ここで、センサIDは、用紙搬送シミュレータ503に定義されたセンサモデルに対して予め付与されたものである。センサモデルとセンサIDの関連付け情報は、設定データ209bに含まれている。
図21(b)は、用紙搬送シミュレータ503が、シミュレータ接続部501から受け取る指示の例である。開始指示は、模擬処理の実行開始の指示である。用紙搬送シミュレータ503は、終了状態であるときに開始指示を受けると、指示待ち状態になる。終了指示は、模擬処理終了の指示である。用紙搬送シミュレータ503は、終了指示を受けると模擬処理を終了して終了状態になる。
再開指示は、処理単位時間分の模擬処理の実行指示である。用紙搬送シミュレータ503は、指示待ち状態で再開指示を受けると、処理単位時間分の模擬処理を行い、その後、指示待ち状態に遷移する。
モータ動作指示は、モータ動作を指定するもので、モータIDと模擬処理におけるモータの動作(駆動/停止)を指定する。ここで、モータIDは、用紙搬送シミュレータ503に定義されたモータモデルに対して予め付与したものである。また、各モータの駆動時の速度情報も、予め設定されて外部記憶装置209に格納されている。用紙搬送シミュレータ503は、モータ動作の指定を受けると、指定に従って次の模擬処理におけるモータモデルの動作を決め、各構成要素の動きを解析する。
ソレノイド動作指示は、ソレノイド動作を指定するもので、ソレノイドIDと次の模擬処理におけるソレノイドの動作(駆動/停止)を指定する。ここで、ソレノイドIDは、用紙搬送シミュレータ503に定義されたソレノイドモデルに対して予め付与されたものである。用紙搬送シミュレータ503は、ソレノイド動作の指定を受けると、指定に従って次の模擬処理におけるレノイドモデルの動作を決め、各構成要素の動きを解析する。
クラッチ動作指示は、クラッチ動作を指定するもので、クラッチIDと次の模擬処理におけるクラッチの動作(駆動/停止)を指定する。ここで、クラッチIDは、用紙搬送シミュレータ503に定義されたクラッチモデルに対して予め付与されたものである。用紙搬送シミュレータ503は、クラッチ動作の指定を受けると、指定に従って次の模擬処理のクラッチモデルの動作を決め、各構成要素の動きを解析する。
プロセスユニットシミュレータ504は、電子写真プロセスユニットを模擬するものであるが、電子写真プロセスユニットの構成は、電子写真装置の機種毎に異なる。これに対応するため、プロセスユニットシミュレータ504の動作は、処理単位時間に実行すべき動作を記述した命令文(以下、プロセスマクロと呼ぶ)により制御される。プロセスマクロは、対象とする電子写真装置の機種毎に用意する。プロセスマクロは、シミュレータ構成定義情報518の一部として外部記憶装置209に格納される。
例えば、定着装置のシミュレーションの場合、処理単位時間毎に、定着装置内のヒータ及び排紙モータの状態、定着ローラ部の用紙の有無についての情報を受け取る。その後、受け取った情報と所定の演算式に基づき、定着装置内の温度センサの検出温度を求め、検出温度の情報を出力する。
プロセスユニットシミュレータ504は、例えば、1ミリ秒、2ミリ秒、4ミリ秒から処理単位時間を選択できる。使用する処理単位時間の選択は、用紙搬送シミュレータ503と同じである。
プロセスユニットシミュレータ504で発生するイベントや、プロセスユニットシミュレータ504に対する指示は、対象とする電子写真装置300による異なる。このため、プロセスユニットシミュレータ504に対するプロセスマクロ毎に定義情報を作成する。定義情報は、情報ID、データサイズ、データ種別(ビット/デジタル/アナログ)からなり、シミュレータ構成定義情報518として外部記憶装置209に格納される。
図22(a)は、プロセスユニットシミュレータ504が、シミュレータ接続部501に通知するイベントの例である。開始、終了及び指示待ちイベントは、用紙搬送シミュレータ503と同じである。出力情報変化イベントは、定義情報で定義された情報が変化した時に発生するイベントである。出力情報変化イベントでは、変化した情報のID、変化後の値が通知される。
図22(b)は、プロセスユニットシミュレータ504が、シミュレータ接続部501を介して受け取る指示の例である。開始、終了及び再開指示は、用紙搬送シミュレータ503と同じである。入力情報指示は、定義情報で定義された情報の値を指定するもので、情報IDと設定値を指定する。
上記システム500の様に、複数のシミュレータを連携させる構成においては、模擬時間の進行度合いの異なるシミュレータ間で、模擬時刻の同期を行う必要がある。本実施形態においては、各シミュレータの処理単位時間の最大値を同期単位時間に設定し、基準時刻を進める単位である進行単位時間を同期単位時間と等しくする。具体的には、総てのシミュレータは、その模擬時刻が基準時刻以上となるまで模擬処理を行い、基準時刻と同じ又は基準時刻を超えたところで処理を停止する。総てのシミュレータの模擬時刻が基準時刻以上となった場合、この基準時刻を同期単位時間(=進行単位時間)だけ進め、次の処理を行う。以下に、詳細を説明する。
まず、図3の同期モジュール509について説明する。基準時刻保持部512は、システム500の模擬時刻の基準となる基準時刻を保持するものである。同期管理情報保持部513は、各シミュレータ502〜504の同期処理状態を管理するための同期管理情報を保持している。
図24(a)は、本実施形態での同期管理情報を示している。図24(a)に示す様に、同期管理情報は、シミュレータ502〜504に付与されたシミュレータIDと、シミュレータ502〜504の同期状態との関係を示すものである。なお、“対象外”は、対応するシミュレータIDが付与されたシミュレータが利用されていないことを示しいている。
なお、シミュレータIDは、シミュレータ構成定義情報518に基づき、配線モジュール510が各シミュレータに付与する識別子である。配線モジュール510は、システム500の起動時に各シミュレータのシミュレータIDを決定し、対応するシミュレータI/F506〜508に対して決定したシミュレータIDを通知する。各シミュレータI/F506〜508は、コア部505への通知情報に、通知されたシミュレータIDを付加する。コア部505は、シミュレータIDにより、通知を出したシミュレータI/F506〜508を識別する。また、コア部505は、各シミュレータI/F506〜508への通知に際して、通知先のシミュレータIDを付加する。各シミュレータI/F506〜508は、シミュレータIDにより、自身への通知を判別する。
時間情報保持部514は、システム500における同期単位時間を保持し、同期実行管理部511は、システム500全体の同期処理を実行する。以下、図4のフローチャートを用いて同期実行管理部511での処理を説明する。
まず、S101において、同期実行管理部511は、管理情報、つまり、基準時刻及び同期管理情報を初期化する。具体的には、基準時刻を0に設定し、配線モジュール510から通知を受けたシミュレータIDの同期状態情報を“未終了”に、それ以外のシミュレータIDの同期状態情報を“対象外”に設定する。また、総てのシミュレータの、模擬時刻を0に設定する。さらに、同期実行管理部511は、各シミュレータの処理単位時間を同期定義情報519から取得し、その一番大きい値を、同期単位時間として時間情報保持部514に設定する。なお、各シミュレータの処理単位時間以上の値、つまり、処理単位時間の最大値以上の値を同期単位時間とすることもできる。
S102において、同期実行管理部511は、基準時刻を同期単位時間だけ進め、S103において、全シミュレータに再開指示を通知する。その後、S104において、同期実行管理部511は、各シミュレータI/F506〜508からの時刻更新通知を待つ。各シミュレータI/F506〜508は、例えば、対応するシミュレータ502〜504から総実行サイクル数や、模擬時刻を含むイベント通知を受け取った場合、同期実行管理部511に時刻更新通知を行う。
同期実行管理部511は、S105において、対象シミュレータのシミュレータID及び模擬時刻を取得する。なお、対象シミュレータとは、S104における時刻更新通知の元となったイベントが発生したシミュレータである。同期実行管理部511は、S106において、基準時刻とS105で取得した模擬時刻を比較する。比較の結果、模擬時刻が基準時刻に達していない場合、同期実行管理部511は、S110において、対象シミュレータに再開指示を行う。つまり、模擬時刻が基準時刻より遅れている場合には、S110の処理を行う。一方、模擬時刻が基準時刻以上である場合、同期実行管理部511は、対象シミュレータの同期単位時間における処理が終了したと判断する。したがって、同期実行管理部511は、S107において、対象シミュレータに対応する同期状態情報を“終了”に設定する。
同期実行管理部511は、S108において、総てのシミュレータの同期状態情報が“終了”となっているか否かを判定する。なお、同期状態情報が“対象外”であるシミュレータは判定の対象外である。総てのシミュレータの同期状態情報が“終了”ではない場合、同期実行管理部511は、総てのシミュレータの同期状態情報が“終了”となるまで上述した処理を繰り返す。また、総てのシミュレータの同期状態情報が“終了”である場合、同期実行管理部511は、S109において、総てのシミュレータの同期状態情報を“未終了”に設定し、これにより1つの同期単位時間における処理が終了する。その後、同期実行管理部511は、次の同期単位時間の処理としてS102から上述した処理を開始する。
続いて、用紙搬送シミュレータI/F507における同期処理を説明する。図5のS201において、シミュレータI/F507は、配線モジュール510から、対応するシミュレータのシミュレータIDを取得する。つまり、本例においては、用紙搬送シミュレータ503のシミュレータIDを取得する。S202において、シミュレータI/F507は、対応シミュレータに開始指示を行う。これにより、用紙搬送シミュレータ503は、指示待ち状態に遷移する。
次に、シミュレータI/F507は、S203において、同期実行管理部511からの再開指示を待つ。再開指示を受け取ると、シミュレータI/F507は、S204において、用紙搬送シミュレータ503に再開指示を行う。用紙搬送シミュレータ503は、再開指示に応じて、処理単位時間分の模擬を行う。用紙搬送シミュレータ503は、処理単位時間の模擬処理の終了に伴い、指示待ちイベントをシミュレータI/F507に通知して、指示待ち状態に遷移する。
シミュレータI/F507は、S205において、用紙搬送シミュレータ503からのイベントの発生を待つ。用紙搬送シミュレータ503からイベント通知を受けると、シミュレータI/F507は、S206において、受け取ったイベントが終了イベントであるか否かを判定する。終了イベントである場合、シミュレータI/F507は処理を終了する。そうでない場合、シミュレータI/F507は、S207において、受け取ったイベントが指示待ちイベントであるか否かを判定する。指示待ちイベントではない場合、処理は、S205に戻る。一方、指示待ちイベントの場合、シミュレータI/F507は、S208においてイベントの通知に含まれている模擬時刻を取得する。その後、シミュレータI/F507は、S209において、同期実行管理部511に時刻更新を通知する。なお、同期実行管理部511には、用紙搬送シミュレータ503のシミュレータIDと、S208で取得した模擬時刻も通知する。
なお、プロセスユニットシミュレータI/F508における同期処理は、図5の用紙搬送シミュレータ503をプロセスユニットシミュレータ504に読み替えればよく、その詳細についての説明は省略する。
続いて、CPUシミュレータI/F506における同期処理の説明を行う。図6のS301から303の処理は、図5のS201〜S203の処理に対応するものであり説明は省略する。シミュレータI/F506は、S304において、CPUシミュレータ502の処理単位時間に対応する総実行サイクル数を求めて、タイマ・イベント設定指示によりCPUシミュレータ502に、タイマ・イベントの発生間隔を設定する。
本実施形態においては、CPUシミュレータ502のタイマ・イベントにより模擬時間軸における一定間隔でイベントを発生させることで、確実な同期を保証している。なお、処理単位時間は利用者によってあらかじめ指定され、同期定義情報519に格納されている。ただし、CPUシミュレータ502が通知するイベントにおいて、総実行サイクル数を含むものは、総て他のシミュレータとの同期のためのイベントとして使用可能である。S305において、シミュレータI/F506は、同期実行管理部511からの通知により、CPUシミュレータ502に再開指示を行う。その後、シミュレータI/F506は、S306において、CPUシミュレータ502からのイベント発生を待つ。
CPUシミュレータ502からイベント通知を受けると、CPUシミュレータI/F506は、S307において、通知されたイベントが終了イベントであるか否かを判定する。終了イベントである場合、CPUシミュレータ502及びCPUシミュレータI/F506は処理を終了する。そうでない場合、シミュレータI/F506は、同期実行管理部511にCPUシミュレータ502のシミュレータID、模擬時刻と共に時刻更新を通知してS303に戻る。
続いて、各シミュレータ間の時刻同期動作について説明する。例えば、用紙搬送シミュレータ503の処理単位時間を5ミリ秒、プロセスユニットシミュレータ504の処理単位時間を4ミリ秒であるものとする。この場合、同期単位時間は、値の大きい5ミリ秒となり、CPUシミュレータ502のタイマ・イベントは、同期単位時間である5ミリ秒間隔で発生する様に設定される。図7は、同期単位時間が5ミリ秒である場合において、時刻1000ミリ秒から1005ミリ秒の各構成要素における処理を示している。また、図8は、時刻1005ミリ秒から1010ミリ秒の同期単位時間における各構成要素における処理を示している。図7及び8において、縦方向の実線矢印は、各シミュレータが処理を行っている状態を、破線は、各シミュレータが指示待ち状態であることを示している。また、横方向の矢印は、各シミュレータ502〜504と、対応するシミュレータI/F506〜508との間、及び、各シミュレータI/F506〜508と同期実行管理部511との間の情報伝達を示している。
図7に示す様に、同期単位時間の開始時において、CPUシミュレータ502の模擬時刻は1000.0001ミリ秒である。また、用紙搬送シミュレータ503及びプロセスユニットシミュレータ504の模擬時刻は1000ミリ秒となっている。
図7に示す様に、同期実行管理部511は、基準時刻の値を同期単位時間だけ進めて1005ミリ秒に更新する。その後、同期実行管理部511は、各シミュレータI/F506〜508経由で各シミュレータ502〜504に再開指示を行う。
各シミュレータI/F506〜508は、対応するシミュレータからのイベント通知に含まれる模擬時刻を同期実行管理部511に通知する。同期実行管理部511は、通知された模擬時刻と基準時刻を比較する。通知された模擬時刻が、基準時刻以降の時刻である場合、同期実行管理部511は、対応するシミュレータの同期状態情報を“終了”に変更する。変更により、総てのシミュレータの同期状態情報が“終了”となった場合、同期モジュール509は、同期単位時間における処理が終了したと判断し、次の同期単位時間における処理を開始する。
図7においては、用紙搬送シミュレータ503は、処理単位時間の模擬を1回だけ実行したところで模擬時刻が1005ミリ秒となり同期終了している。また、プロセスユニットシミュレータ504は、処理単位時間の模擬を2回実行したところで模擬時刻が1008ミリ秒となり同期終了している。さらに、CPUシミュレータ502は、タイマ・イベント発生により1005.0003msで同期終了している。なお、CPUシミュレータ502のタイマ・イベントは、ターゲットCPUの1命令実行の途中では発生しないためイベント発生時刻には端数が発生する。図7においては、CPUシミュレータ502の同期終了により、同期実行管理部511は、次の同期単位時間における処理のため、タイマ・イベント設定指示により、基準時刻を1010msに進めている。また、図8においては、用紙搬送シミュレータ503が処理単位時間の模擬を1回だけ実行したところで模擬時刻が1010ミリ秒となり同期終了している。さらに、プロセスユニットシミュレータ504が処理単位時間の模擬を1回だけ実行したところで模擬時刻が1012ミリ秒となり同期終了している。
例えば、本実施形態を、図18にて説明したのと同じ構成に対して適用した場合の様子を図9に示す。図9において、各シミュレータの白枠内の数字は模擬時刻である。なお、模擬時刻を示すために、時間方向の長さは、その値と比例させていない。図18と同じく、網がけ領域は模擬処理を実行している状態を、つまり、模擬時間が進行している期間を表している。なお、同期単位時間は、3つのシミュレータの処理単位時間の最大値である10ミリ秒となる。
同期実行管理部511は、同期単位時間の処理の最初に基準時刻を同期単位時間である10ミリ秒だけ進める様に更新する。そして、各シミュレータが処理単位時間の模擬を行う度に、同期実行管理部511は、各シミュレータの模擬時刻と基準時刻を比較する。図9では基準時刻10ミリ秒に更新したときの同期処理において、ソフトウェアデバッガ、ハードウェアモデル、メカシミュレータが、それぞれ、4単位、2単位、1単位分の模擬を行っている。この処理を順次繰り返すことにより、模擬時間10ミリ秒単位で全シミュレータの時刻同期が行われることになる。
以上の構成により、模擬時間の進行度合いが異なるシミュレータ間において、より高精度に時刻を同期させることができる。
(第二実施形態)第一実施形態は、各シミュレータの処理単位時間の最大値以上の値を同期単位時間とするものであった。しかし、シミュレータの組合せによっては、より高精度の時刻同期が必要な場合がある。つまり、より短い間隔での同期が必要な場合がある。本実施形態においては同期単位時間を複数設け、これにより、高精度な時刻同期が必要なシミュレータにも対応するものである。なお、複数の同期単位時間は、各シミュレータの処理単位時間の最大値以下の値とすることが好ましい。
本実施形態において、図3の時間情報保持部514は、複数の同期単位時間を保持している。なお、各シミュレータ502〜504と同期単位時間の対応は、利用者があらかじめ選択して、同期定義情報519として保存したものである。さらに、本実施形態において、図3の同期管理情報保持部513は、図24(b)に示す同期管理情報を保持する。
第一実施形態との違いは、同期段階情報を有することである。同期段階情報は、対応するシミュレータが、どの同期単位時間に従うかを示す情報である。
以下、本実施形態における同期実行管理部511での処理を説明する。なお、本実施形態においては、基準時刻を進める単位である進行単位時間を、各同期単位時間の最大公約数とする。よって、進行単位時間を先に決定している場合、利用者が予め設定する複数の同期単位時間は、この進行単位時間の整数倍に設定する。図10のS401において、同期実行管理部511は、管理情報の初期化を行う。図4のS101の処理と同様であるが、本実施形態において、同期実行管理部511は、同期定義情報519から複数の同期単位時間を取得して時間情報保持部514に保存する。また、同期実行管理部511は、取得した同期単位時間の最大公約数を進行単位時間として時間情報保持部514に保存する。さらに、同期実行管理部511は、各同期単位時間とシミュレータとの対応関係を、同期管理情報保持部513に設定する。
同期実行管理部511は、S402で基準時刻を進行単位時間だけ進め、S403において、基準時刻が複数の同期単位時間のいずれかの倍数であるか否かを判定する。いずれの倍数でもない場合にはS402に戻る。いずれかの倍数である場合、S404において、同期実行管理部511は、基準に適合するシミュレータに再開指示を行う。ここで、基準に適合するシミュレータとは、基準時刻がその同期単位時間の倍数となっているシミュレータである。例えば、3つのシミュレータの同期単位時間が、それぞれ、2ミリ秒、10ミリ秒、30ミリ秒であり、基準時刻が1000ミリであるものとする。この場合、同期単位時間が2ミリ秒及び10ミリ秒のシミュレータが、基準に適合するシミュレータである。以後の処理は、処理の対象とするシミュレータが、基準に適合するシミュレータ(同期対象シミュレータ)となる以外は、図1の対応する処理と同様であり、詳細な説明は省略する。ただし、S407において時刻更新通知のあったシミュレータが同期対象シミュレータであるかどうかを判定し、同期対象シミュレータでない場合にはS405に戻る処理が加わっている。
なお、本実施形態における各シミュレータI/F506〜508の処理は、第一実施形態と同様であり説明は省略する。
以上の構成により、各シミュレータの条件に応じた最適な同期間隔での同期処理が可能となる。
(第三実施形態)第一実施形態及び第二実施形態において、各シミュレータには、処理単位時間が予め設定されている。しかし、処理単位時間はシミュレータにより大きく異なる場合がある。本実施形態は、その様な場合においても、同期処理を可能とするものである。本実施形態においては、図3の簡易シーケンサ603を含む総ての構成要素を使用する。つまり、第一実施形態の構成に対して、外部I/F601を含む簡易シーケンサ603を追加し、シミュレータ接続部501に管理シーケンサI/F602を設けた構成となっている。まず、本実施形態で追加された要素である、簡易シーケンサ603及び管理シーケンサI/F602について説明する。
簡易シーケンサ603は、出力信号の変化とその発生条件を定義するシーケンスデータに従い、対象機能の所定の信号変化を模擬するものである。シーケンスデータは、利用者が用意し、シミュレータ構成定義情報518の一部として外部記憶装置209に保存される。簡易シーケンサ603は、シミュレーションの実行開始と共に、シーケンスデータデータを読み込み、定義された出力信号発生条件に従って所定の信号変化を発生させ外部に出力する。
例えば、簡易シーケンサ603が、電子写真装置300の給紙に関する制御を行う給紙制御部の機能を模擬するように構成されているものとする。つまり、給紙制御部に関しては、簡易シーケンサ603によって外部仕様上の動作のみを模擬する。まず、模擬対象の給紙制御部におけるシーケンスを説明する。
図11において、信号名の後の(出)は、給紙制御部からの出力信号を、(入)は給紙制御部への入力信号を示している。給紙制御部は、給紙開始指示を、電子写真装置300の全体を制御する主制御部からシリアルコマンドで受けると、給紙モータ駆動信号を“H”(駆動)レベルに設定する。設定してから400ミリ秒後、給紙制御部は、ピックアップソレノイド駆動信号、レジストクラッチ駆動信号を“H”(駆動)レベルに設定する。さらに、100ミリ秒後、給紙制御部は、ピックアップソレノイド駆動信号を“L”(停止)レベルに設定する。レジストセンサが、用紙の先端を検出すると、レジストセンサ信号が立ち上がり、これにより、給紙制御部は、レジストクラッチ駆動信号を“L”(停止)レベルに設定し、給紙完了をシリアルステータス信号で主制御部に通知する。その後、搬送トリガの入力を検出すると、給紙制御部は、レジストクラッチ駆動信号を“H”レベルに設定する。その後、レジストセンサ信号の立下りを検出すると、給紙制御部は、レジクストラッチ駆動信号を“L”レベルに設定し、500ミリ秒後に給紙モータ駆動信号を“L”(停止)レベルする。
図12は、図11の制御シーケンスを、簡易シーケンサ603のシーケンスデータとして設定した例である。図では説明のために表形式で示しているが、実際のシーケンスデータは、図に示す内容を所定の書式に従って記述したものである。シーケンスデータは、複数の処理を含み、各処理は、“処理番号”と、“処理”と、“信号名”と、“データ”と、“待ち条件”の各フィールドで規定される。
処理番号フィールドは、処理の番号を示し、簡易シーケンサ603は、“処理移行”処理を除き、処理番号が示す順に処理を実行する。
処理フィールドは処理内容を示し、“信号変化待ち”と、“時間待ち”と、“信号出力”と、“処理移行”処理の4種類が定義されている。信号変化待ち処理は、待ち条件フィールドで規定される待ち条件に適合するまで、所定の入力信号の変化を待つ処理である。待ち条件としては、“指定値に変化”、“立ち上がりエッジ検出”、“立下りエッジ検出”が定義されている。簡易シーケンサ603は、信号変化待ち処理において、待ち条件が“指定値に変化”である場合には、信号名フィールドで指定された信号が、データ・フィールドで指定された値になるまで待つ。また、待ち条件が、“立ち上りエッジ検出”である場合には、信号名フィールドで指定された信号が、“L”から“H”に変化するまで待つ。同様に、待ち条件が、“立下りエッジ検出”である場合には、信号名フィールドで指定された信号が、“H”から“L”に変化するまで待つ。いずれの場合においても、待ち条件を満たした場合、簡易シーケンサ603は、次の処理を実行する。
時間待ち処理は、模擬時間軸での時間経過を待つ処理である。待ち条件としては、“指定時間経過”と、図示していない“指定時刻到達”が定義される。簡易シーケンサ603は、時間待ち処理において、待ち条件が指定時間経過である場合には、単に、指定された時間が進行したことをシミュレータ接続部501に通知する。つまり、実際に指定時間だけ待機することは行わない。同様に、待ち条件が指定時刻到達である場合には、単に、指定時刻に到達した旨をシミュレータ接続部501に通知する。その後、簡易シーケンサ603は、次の処理を実行する。
信号出力処理は、信号変化の出力処理である。簡易シーケンサ603は、信号出力処理において、データ・フィールドの値を、信号名フィールドの信号で出力したことをシミュレータ接続部501に通知する。
処理移行処理は、所定の処理への移行を示す。簡易シーケンサ603は、処理移行処理において、データ・フィールドの処理番号の処理に移行する。
図23(a)は、簡易シーケンサ603が、外部I/F601を介してシミュレータ接続部501に通知するイベントの例である。開始及び終了イベントは図19と同様である。指示待ちイベントは、シーケンスデータの1つの処理(処理番号1つ分の処理)の終了毎に発生するイベントである。時間経過及び到達イベントは、既に説明した時間待ち処理の実行時に発生するイベントである。さらに、出力信号変化イベントは、既に説明した信号出力処理で発生するイベントである。より詳しくは、シミュレータ構成定義情報518の入出力信号定義で簡易シーケンサ603の出力信号として定義された信号が変化した時に発生するイベントである。
図23(b)は、簡易シーケンサ603が、シミュレータ接続部501から受け取る指示の例である。開始及び終了指示は、既に説明した各シミュレータのものと同じであり説明は省略する。再開指示は、簡易シーケンサ603にシーケンスデータの1つの処理を実行させるものである。簡易シーケンサ603は、指示待ち状態で再開指示を受けると、シーケンスデータの1つの処理を実行し、処理実行後に指示待ち状態になる。入力信号指示は、入出力信号定義で簡易シーケンサ603の入力信号として定義された信号の値を指定するもので、信号IDと設定値を含んでいる。簡易シーケンサ603は、入力信号指定指示を受け取ると、指定された信号IDの信号値変化に基づきシーケンスデータの処理を実行する。
上記構成において、図12のシーケンスデータに対する簡易シーケンサ603での処理を以下に説明する。
簡易シーケンサ603は、シミュレータ接続部501から再開指示を受けると、処理番号0の処理を読み取り、シリアルコマンド信号の変化待ち状態となる。この状態で、シミュレータ接続部501からシリアルコマンドで給紙開始指示を示すデータを受け取ると、指示待ちイベントをシミュレータ接続部501に通知して指示待ち状態となる。続いて、シミュレータ接続部501から再開指示を受けると、処理番号1の処理を読み取り、出力信号変化イベントにより、給紙モータ駆動信号が“H”となったことをシミュレータ接続部501に通知する。その後、簡易シーケンサ603は、指示待ちイベントをシミュレータ接続部501に通知する。続いて、シミュレータ接続部501から、再開指示を受けると、処理番号2の処理を読み取り、時間経過イベントで、シミュレータ接続部501に400ミリ秒の時間経過を通知する。その後、簡易シーケンサ603は、指示待ちイベントをシミュレータ接続部501に通知する。以上の様に、簡易シーケンサ603は、シーケンスデータに従い処理を進めてゆく。
簡易シーケンサ603において、1つの処理により進行する模擬時間は不定であり、シーケンスデータにより異なることとなる。したがって、本実施形態においては、同期単位時間を処理単位時間に拘わらず、あらかじめ任意の方法にて決定し、同期定義情報519として設定しておく。
また、本実施形態において、同期管理情報保持部513は、図24(c)に示す同期管理情報を使用する。図24(c)に示す様に、同期管理情報は、シミュレータIDに対応するシミュレータの同期状態情報と模擬時刻を示すものとなっている。なお、模擬時刻は、同期実行管理部511が各シミュレータからの通知に基づき更新する。
続いて、本実施形態での同期実行管理部511による同期処理を説明する。図13のS501において、同期実行管理部511は、管理情報の初期化を行う。具体的には、基準時刻、同期管理情報の模擬時刻を総て0に設定する。また、同期管理情報の同期状態情報は、図4のS101にて説明したのと同様に初期化を行う。また、同期定義情報519から同期単位時間を読み込んで時間情報保持部514に設定する。なお、本実施形態においては、第一実施形態と同様に進行単位時間は同期単位時間と等しい。
次に、S502において、同期実行管理部511は、基準時刻を同期単位時間だけ進め、S503において、各シミュレータの模擬時刻と基準時刻を比較する。S504において、同期実行管理部511は、模擬時刻が基準時刻に満たないものについて同期管理情報内の同期状態情報を“未終了”に設定する。以後の処理は、図4のS103〜S110と同様であるので説明は省略する。さらに、各シミュレータI/F506〜508における同期処理も、第一実施形態と同じであり説明は省略する。
また、簡易シーケンサ603における同期処理は、図5の対象シミュレータを簡易シーケンサ603と読み替え、S207において通知されたイベントが図23(a)の時間経過又は時刻到達であるか否かの判定に変更したものである。なお、通知されたイベントが時間経過又は時刻到達である場合は、S208に進み、そうでなければ、S205に戻ることになる。
また、簡易シーケンサ603は、時刻経過イベントにおいては経過時間のみを通知する。よって、簡易シーケンサI/F602は、簡易シーケンサ603から取得する経過時間を簡易シーケンサI/F602内で管理している時刻情報に変換した上で、同期実行管理部511に通知する。以下に、詳細を説明する。
図14のS601において、簡易シーケンサI/F602は、時刻情報を初期化、つまり時刻情報に0を設定する。次に、S602において、簡易シーケンサI/F602は、配線モジュール510からの入力信号の変更要求があるか否かを確認する。変更要求があれば、S603において、簡易シーケンサI/F602は、同期モジュール509より時刻情報を取得し、S604において、時刻情報を取得した値に変更する。S603において変更要求が無い場合、簡易シーケンサI/F602は、S605において、簡易シーケンサ603からの通知があるか否かを確認する。通知がある場合、S606において、簡易シーケンサI/F602は、時間経過イベントであるか否かを確認する。時間経過イベントであれば、簡易シーケンサI/F602は、S607において、経過時間を管理している時刻に加算する。また、時間経過通知でなければ、簡易シーケンサI/F602は、S608において、時刻到達イベントであるか否かを確認する。時刻到達イベントであれば、簡易シーケンサI/F602は、S609において、管理している時刻情報を通知された時刻の値に変更する。簡易シーケンサI/F602は、以上の処理を繰り返して簡易シーケンサ603の時刻情報を管理する。
続いて、本実施形態での各ミュレータ間の時刻同期動作を図15及び図16により説明する。なお、図16は図15の続きを示すものである。図15の処理開始時点において、基準時刻は1000ミリ秒であり、CPUシミュレータ502の模擬時刻は1000.0001ミリ秒である。また、用紙搬送シミュレータ503、プロセスユニットシミュレータ504及び簡易シーケンサ603の模擬時刻は共に1000ミリ秒である。なお、用紙搬送シミュレータ503の処理単位時間は10ミリ秒、プロセスユニットシミュレータ504の処理単位時間は1ミリ秒であるものとする。また、同期単位時間は2ミリ秒に設定されており、CPUシミュレータ502のタイマ・イベントは、同期単位時間と同じ2ミリ秒に設定されているものとする。なお、図15及び図16の表現方法は、図7及び8と同じである。
同期実行管理部511は、最初に基準時刻を同期単位時間だけ進め、1002ミリ秒とする。続いて、同期管理情報の各シミュレータの模擬時刻と基準時刻を比較する。同期実行管理部511は、模擬時刻が基準時刻に達していないシミュレータに対して再開指示を行う。その後、同期実行管理部511は、各シミュレータからの時刻更新通知毎に、通知された模擬時刻を同期管理情報として記録し、さらに、基準時刻と比較する。模擬時刻が、基準時刻に追いつく、又は追い越している場合には、対応するシミュレータの同期が終了したものと判断して同期管理情報を更新する。
本例では、用紙搬送シミュレータが処理単位時間の処理を1回実行した段階で模擬時刻1010ミリ秒となり同期終了状態となっている。また、簡易シーケンサは、200ミリ秒の時間待ち処理により模擬時刻が1200ミリ秒となり同期終了状態となっている。さらに、プロセスユニットシミュレータ504が、処理単位時間の処理を2回実行した段階で模擬時刻が1002ミリ秒となり同期終了状態となっている。さらに、CPUシミュレータ502は、タイマ・イベント発生時に模擬時刻が1002.0002ミリ秒であり、その時点で同期終了状態となっている。
次に、同期実行管理部511は、基準時刻の値を1004msecに進め、同期管理情報を参照して、各シミュレータの模擬時刻と基準時刻を比較する。図16に示す様に、用紙搬送シミュレータ503及び簡易シーケンサ603の模擬時刻は基準時刻を超えているためこの時点で同期終了状態となる。従って、同期実行管理部511は、CPUシミュレータ502とプロセスユニットシミュレータ504に対して再開指示を行う。
用紙搬送シミュレータ503は、基準時刻が1012ミリ秒になるまで指示待ち状態のままとなる。同様に、簡易シーケンサ603は、基準時刻が1202ミリ秒になるまで指示待ち状態のままとなる。
本実施形態においては、例えば、同期単位時間を小さな値に設定することにより、シミュレータ間の時刻同期精度を上げることができる。
例えば、本実施形態を、図18にて説明したのと同じ構成に対して適用した場合の様子を図17に示す。図17の表現方法は、図9と同じである。図17は、同期単位時間を1ミリ秒に設定した場合を示している。なお、ソフトウェアデバッガ、ハードウェアモデル及びメカシミュレータの処理単位時間は、それぞれ、3ミリ秒、5ミリ秒及び10ミリ秒である。
図17に示す様に、同期実行管理部511が、基準時刻を1ミリ秒に進めた段階で、総てのシミュレータの模擬時刻は0ミリ秒であるため、総てのシミュレータに対して再開指示が行われる。各シミュレータが、処理単位時間分の模擬を終了した段階で、基準時刻0ミリ秒から1ミリ秒の同期処理が終了する。続いて、同期実行管理部511が、基準時刻を2ミリ秒に進める。しかしながら、この時点においてソフトウェアデバッガ、ハードウェアモデル及びメカシミュレータの模擬時刻は、それぞれ、3ミリ秒、5ミリ秒及び10ミリ秒であり、総ての、基準時刻以上である。したがって、基準時刻1ミリ秒から2ミリ秒の同期処理においては、再開指示はいずれのシミュレータにも行われない。
その後、図17に示す様に、ソフトウェアデバッガに対しては、基準時刻4ミリ秒と、基準時刻7ミリ秒と、基準時刻10ミリ秒の同期処理において再開指示が行われる。また、ハードウェアモデルに対しては、基準時刻6ミリ秒と、基準時刻11ミリ秒の同期処理において再開指示が行われる。さらに、メカシミュレータに対しては、基準時刻11ミリ秒の同期処理において再開指示が行われる。以上の処理を繰り返すことで、同期単位時間である1ミリ秒を単位として模擬時刻の同期が行われる。
なお、図17においては、総てのシミュレータの処理単位時間よりも小さな同期単位時間を使用していたが、同期単位時間は処理単位時間より大きい値であっても良い。以上の構成により、簡易シーケンサ603の様な、処理単位時間を定義できないシミュレータが存在する場合であっても、精度よく、各シミュレータ間の時刻同期を実現することができる。
以上、シミュレータ接続部501が、全シミュレータが基準時刻以後の時刻となるまで、各シミュレータに模擬処理を実行させる。全シミュレータから通知された時刻情報が基準時刻以後の時刻になった場合、シミュレータ接続部501は、基準時刻を進行単位時間だけ進める様に更新し、時刻情報が、更新後の基準時刻に達していない総てのシミュレータに再開指示を行う。この処理を繰り返すことで、各シミュレータの模擬処理における時刻同期を、各シミュレータの処理効率を低下させることなく実現することができる。特に、処理単位時間が設定できないシミュレータが存在している場合においても、精度よく、各シミュレータ間の時刻同期を実現することができる。
また、各シミュレータに処理単位時間が設定されている場合には、進行単位時間を、各シミュレータの処理単位時間の最も大きい値に設定する。これにより、進行単位時間を処理単位時間の最小公倍数とする従来技術と比較して、より細かな単位で時刻同期処理を実行することができる。また、各シミュレータの処理待ち時間を減少させることができる。
なお、各シミュレータに同期単位時間を設定し、進行単位時間は、各同期単位時間の最大公約数とする。さらに、シミュレータ接続手段は、基準時刻を進行単位時間だけ進めた際に、同期単位時間が基準時刻の約数であるシミュレータのみに再開指示を行う。この構成により、各シミュレータ間での必要な同期間隔が異なるものであったとしても、各シミュレータの条件に応じた最適な同期間隔での同期処理が可能となる。
さらに、複数のシミュレータの1つは、模擬対象装置で動作するファームウェアの実行模擬するシミュレータとする。これにより、模擬対象装置のファームウェアのデバッグを、実際の装置を使用することなく行うことが可能になる。