(57)【要約】【課題】  複数シミュレータの連携システムにおいてシミュレーション速度を低下させずにシミュレータ間の同期を高精度で実現すること。【解決手段】  第１、第２シミュレータ１０１、１０３を連携させたシミュレーションシステムにおいて、第１シミュレータ１０１においてシミュレーションの実行中に所定の事象が発生した場合に、実行中のシミュレーションを中断する。次に、第２シミュレータ１０３を、シミュレーション実行開始時の状態に戻し、第２シミュレータ１０３にシミュレーションを再実行させる。そして、再実行後に、所定の事象の発生を、第２シミュレータにおいて反映させる。【選択図】  図１
2010128722.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ第１、第２仮想時間軸上において第１、第２対象物の動作をシミュレートする第１、第２シミュレータと、
前記第１、第２シミュレータを所定時間毎に同期制御する同期コントローラと、
を備えたシミュレーションシステムであって、
前記第１、第２シミュレータは、それぞれ
前記同期コントローラからの指示に応じてシミュレーションを実行する実行手段を備え、
前記同期コントローラは、
前記第１、第２シミュレータにおいてシミュレーションを実行している間に前記第１シミュレータにおいてシミュレーションの実行中に所定の事象が発生した場合、実行中のシミュレーションを中断するように前記第１シミュレータ及び第２シミュレータに指示する指示手段と、
前記指示手段でシミュレーションの中断を指示した後、前記第２シミュレータを該シミュレーションの実行開始時の状態に戻し、前記第１仮想時間軸上の事象発生時刻に対応する前記第２仮想時間軸上の時刻まで、前記第２シミュレータにシミュレーションを再実行させる再実行手段と、
前記再実行手段による再実行後に、前記所定の事象の発生を、前記第２シミュレータにおいて反映させる反映手段と、
を備えることを特徴とするシミュレーションシステム。
【請求項２】
前記再実行手段は、前記第１仮想時間軸上の事象発生時刻と同じ値をもつ前記第２仮想時間軸上の時刻まで、前記第２シミュレータにシミュレーションを再実行させることを特徴とする請求項１に記載のシミュレーションシステム。
【請求項３】
前記同期コントローラは、
同期を補正するための条件となるトリガ条件を定義する定義手段を更に備え、
前記トリガ条件に合致する場合に、前記所定の事象が発生したと判断することを特徴とする請求項１に記載のシミュレーションシステム。
【請求項４】
前記定義手段は、一つ以上のシミュレーション情報の組合わせで前記トリガ事象を定義することを特徴とする請求項３に記載のシミュレーションシステム。
【請求項５】
前記同期コントローラは、
前記定義手段に対して前記トリガ事象を設定するためのユーザインタフェースを提示する提示手段を更に備えることを特徴とする請求項３に記載のシミュレーションシステム。
【請求項６】
前記第１、第２シミュレータは、それぞれ
シミュレーション実行の結果、何らかの事象が発生した場合に、該事象の内容と、該事象の発生時刻とを前記同期コントローラに送信する送信手段を備え、
前記同期コントローラは、
前記送信手段によって送信された前記事象が、前記定義手段に定義された事象か否かを判定する判定手段を更に備えることを特徴とする請求項３に記載のシミュレーションシステム。
【請求項７】
前記再実行手段は、前記シミュレーションシステムに含まれる全てのシミュレータによるシミュレーションを再実行させることを特徴とする請求項１に記載のシミュレーションシステム。
【請求項８】
前記再実行手段は、前記シミュレーションシステムに含まれるシミュレータの内、前記第１シミュレータ以外のシミュレータによるシミュレーションを再実行させることを特徴とする請求項１に記載のシミュレーションシステム。
【請求項９】
前記第１、第２シミュレータは、それぞれ、
前記同期コントローラからの保存指示に応じて、シミュレーション状態を表わすシミュレーション情報を保存する保存手段を更に備え、
前記同期コントローラは、前記第１、第２シミュレータに対して、シミュレーション実行の指示を行なう前に、前記シミュレーション情報の保存を指示することを特徴とする請求項１に記載のシミュレーションシステム。
【請求項１０】
前記同期コントローラは、
同期を補正するための条件となるトリガ事象を前記所定の事象として定義する定義手段を更に備え、
前記定義手段によって一つ以上の前記トリガ事象が定義されている場合にのみ、前記第１、第２シミュレータに対して、シミュレーション情報の保存を指示することを特徴とする請求項９に記載のシミュレーションシステム。
【請求項１１】
前記第１、第２シミュレータは、それぞれ、シミュレーション状態を表わすシミュレーション情報を保存する保存手段を備え、
前記第１、第２シミュレータは、
前記同期コントローラから、シミュレーションの実行指示を受けた場合に、その時点のシミュレーション情報を前記保存手段に保存した後にシミュレーションを実行することを特徴とする請求項１に記載のシミュレーションシステム。
【請求項１２】
前記第１、第２シミュレータは、シミュレーション状態を表わすシミュレーション情報を保存する保存手段を備え、
前記第１、第２シミュレータは、
シミュレーション実行中に、前記シミュレーション情報に変化があった時点で、変化があったシミュレーション情報のみを前記保存手段に保存することを特徴とする請求項１に記載のシミュレーションシステム。
【請求項１３】
前記第１、第２シミュレータは、シミュレーション状態を表わすシミュレーション情報を保存する保存手段を備え、
前記第１、第２シミュレータは、
シミュレーションの実行終了直後に、その時点のシミュレーション情報を前記保存手段に保存することを特徴とする請求項１に記載のシミュレーションシステム。
【請求項１４】
それぞれ第１、第２仮想時間軸上において第１、第２対象物の動作をシミュレートする第１、第２シミュレータと、
前記第１、第２シミュレータを所定時間毎に同期制御する同期コントローラと、
を用いたシミュレーション方法であって、
前記第１、第２シミュレータが、それぞれ、前記同期コントローラからの指示に応じてシミュレーションを実行する実行ステップと、
前記第１シミュレータにおいてシミュレーションの実行中に所定の事象が発生した場合に、実行中のシミュレーションを中断するように、前記同期コントローラが、前記第１シミュレータ及び第２シミュレータに指示する指示ステップと、
前記第１、第２シミュレータにおいてシミュレーションを実行している間に、前記第１シミュレータにおいて所定の事象が発生した場合に、前記第２シミュレータを、該シミュレーションの実行開始時の状態に戻し、前記第１仮想時間軸上の事象発生時刻に対応する前記第２仮想時間軸上の時刻まで、前記第２シミュレータにシミュレーションを再実行させる再実行ステップと、
前記再実行ステップによる再実行後に、前記所定の事象の発生を、前記第２シミュレータにおいて反映させる反映ステップと、
を含むことを特徴とするシミュレーション方法。
【請求項１５】
コンピュータを、請求項１に記載のシミュレーションシステムとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーションシステム、シミュレーション方法及びプログラムに関するものである。
【背景技術】
【０００２】
従来から、コンピュータシステム上で実行される複数のシミュレータを一つのシステムとして実行させるシミュレーションシステムが知られている（特許文献１、２）。この種のシステムを構成する複数のシミュレータは、それぞれが独自の仮想時間の中でシミュレーションを実行している。このため、このようなシミュレータ複合システムにおいてはシミュレータ間で同期を行なう必要がある。
【０００３】
図９は、特許文献１におけるシミュレータ間の基本的な同期処理を模式的に示す図である。図のＴＳは仮想上の基準同期時間である。各アプリケーションソフトはＴＳ時間の処理実行毎に仮想時間を停止する。全てのアプリケーションソフトは、ＴＳ時間の処理実行を終了した後に一斉に次のＴＳ時間の処理実行を開始する。実線は仮想時間が進行中であることを示し、点線は仮想時間が停止中であることを示す。
【０００４】
特許文献２では、連携動作するシミュレータ間において、同期要求ミュレータが同期対象シミュレータに対して同期時刻を指定し、同期対象シミュレータが同期時刻に到達した時点で同期要求ミュレータが同期対象シミュレータの各種情報等を取得する。
【０００５】
例えば、電子写真方式のプリンタの動作をシミュレーションする場合、感光ドラム上のトナー像形成から２次転写部での用紙上への転写に至る制御を検証するシミュレーションシステムの場合、シミュレータ間の情報伝達の時刻同期を高精度で行う必要がある。
【特許文献１】特開２００５−３３９０２９号公報
【特許文献２】特開２００６−３５０５４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来技術によっては、複数のシミュレータ間において高い精度で時刻同期を得ることは困難である。図１０、１１に基づき従来技術による同期手法について簡単に説明する。図１０、１１におけるレジセンサ信号は、用紙と用紙に転写されるトナー像を同期して搬送するためのレジストローラに用紙が到達したことを検知するレジストセンサ（以下、レジセンサ）からの信号を意味する。また、レジクラッチ信号とは、レジセンサ信号に応じてレジストローラを駆動するためのレジストクラッチ（以下レジクラッチ）を動作させる信号を意味する。
【０００７】
図１０に、特許文献１に記載の同期手法によってシミュレートした場合の動作を模式的に示す。特許文献１に記載の同期手法では一定仮想時間間隔で同期処理を行っている。この方式では同期間隔内では各シミュレータは非同期にシミュレーションを実行する。このため、図１０に示すとおりメカシミュレータ上でシートがレジセンサと干渉する位置に到達した場合に、メカシミュレータ上でのレジセンサ信号変化タイミングと、レジセンサ信号変化がＣＰＵシミュレータ上で認識されるタイミングとの間にはずれが生じる。
【０００８】
この結果として、ファームウェアによるレジクラッチの停止タイミングが遅くなり、メカシミュレータ上でのシート停止位置にずれが生じる。また、同様のことが、レジクラッチ駆動信号をＣＰＵシミュレータからメカシミュレータへ伝達する場合においても発生する。このため、シート停止位置のずれは更に大きくなる。
【０００９】
これに対し、同期間隔をより小さく設定すれが、シミュレータ間の同期精度を向上させることは理論上可能であるが、同期間隔を小さく設定するとシミュレーションシステムにおける一定仮想時間あたりの同期処理の比率が高くなる。その結果、同一仮想時間分のシミュレーションを実行するのに要する実時間が長くなってしまう。すなわち、シミュレーションシステムのパフォーマンス低下を招くことになる。
【００１０】
また、特許文献２に記載の同期手法によっても必要な同期精度を得ることはできない。図１１に、特許文献２に記載の同期手法によってシミュレートした場合の動作を模式的に示す。
【００１１】
特許文献２によれば、同期が必要になった時点（本例ではレジクラッチのＯＮタイミング）で、ＣＰＵシミュレータがメカシミュレータに対して同期を要求するため、同期時刻を指定する。そして、メカシミュレータが同期時刻に到達した時点でＣＰＵシミュレータがメカシミュレータのセンサ情報等を取得する処理を行う。しかし、図１１に示すようにメカシミュレータにおいて、指定された同期時刻以前にシートがレジセンサに到達した場合でも、ＣＰＵシミュレータがレジセンサ信号の値を認識するのは同期時刻の時点となる。このため、ファームウェアがレジセンサによるシート検知を認識してレジクラッチを停止させるタイミングが遅くなる。このようなファームウェアの検証においては、メカシミュレータにおいてモータ、クラッチ、ソレノイド反応時間やローラのシート搬送速度を様々に変化させて検証を行うため、レジセンサにシートが到達するタイミングは様々に変化する。したがって、同期要求時に適切な同期時刻を設定することは困難である。
【００１２】
また、特許文献２によれば、ＣＰＵシミュレータからメカシミュレータに対して同期要求を出しているときに同時にメカシミュレータからＣＰＵシミュレータに同期要求を出すことはできない。このため、事例におけるレジセンサ信号の変化に応じたＣＰＵシミュレータからメカシミュレータへのレジクラッチ信号ＯＦＦの伝達について同期処理の設定を行うことはできない。
【００１３】
本発明は上記従来技術の課題を解決するためになされたもので、その目的とするところは、複数シミュレータの連携システムにおいて、複数のシミュレータを高い精度で同期させることにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、本発明に係るシステムは、
それぞれ第１、第２仮想時間軸上において第１、第２対象物の動作をシミュレートする第１、第２シミュレータと、
前記第１、第２シミュレータを所定時間毎に同期制御する同期コントローラと、
を備えたシミュレーションシステムであって、
前記第１、第２シミュレータは、それぞれ
前記同期コントローラからの指示に応じてシミュレーションを実行する実行手段を備え、
前記同期コントローラは、
前記第１、第２シミュレータにおいてシミュレーションを実行している間に前記第１シミュレータにおいてシミュレーションの実行中に所定の事象が発生した場合、実行中のシミュレーションを中断するように前記第１シミュレータ及び第２シミュレータに指示する指示手段と、
前記指示手段でシミュレーションの中断を指示した後、前記第２シミュレータを該シミュレーションの実行開始時の状態に戻し、前記第１仮想時間軸上の事象発生時刻に対応する前記第２仮想時間軸上の時刻まで、前記第２シミュレータにシミュレーションを再実行させる再実行手段と、
前記再実行手段による再実行後に、前記所定の事象の発生を、前記第２シミュレータにおいて反映させる反映手段と、
を備えることを特徴とする。
【００１５】
上記目的を達成するため、本発明に係る方法は、
それぞれ第１、第２仮想時間軸上において第１、第２対象物の動作をシミュレートする第１、第２シミュレータと、
前記第１、第２シミュレータを所定時間毎に同期制御する同期コントローラと、
を用いたシミュレーション方法であって、
前記第１、第２シミュレータが、それぞれ、前記同期コントローラからの指示に応じてシミュレーションを実行する実行ステップと、
前記第１シミュレータにおいてシミュレーションの実行中に所定の事象が発生した場合に、実行中のシミュレーションを中断するように、前記同期コントローラが、前記第１シミュレータ及び第２シミュレータに指示する指示ステップと、
前記第１、第２シミュレータにおいてシミュレーションを実行している間に、前記第１シミュレータにおいて所定の事象が発生した場合に、前記第２シミュレータを、該シミュレーションの実行開始時の状態に戻し、前記第１仮想時間軸上の事象発生時刻に対応する前記第２仮想時間軸上の時刻まで、前記第２シミュレータにシミュレーションを再実行させる再実行ステップと、
前記再実行ステップによる再実行後に、前記所定の事象の発生を、前記第２シミュレータにおいて反映させる反映ステップと、
を含むことを特徴とする。
【００１６】
上記目的を達成するため、本発明に係るプログラムは、コンピュータを、上記シミュレーションシステムとして機能させる。
【発明の効果】
【００１７】
本発明によれば、複数シミュレータの連携システムにおいて、複数のシミュレータを高い精度で同期させることができる。
【発明を実施するための最良の形態】
【００１８】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００１９】
（第１実施形態）
本発明にかかるシミュレーションシステムの第１実施形態として、パーソナルコンピュータやワークステーション等（以下、まとめてコンピュータシステムと記す）で実行されるプログラムについて説明する。
【００２０】
＜シミュレーション対象装置の構成＞
まず、シミュレーションシステムのシミュレーション対象の一例としてのプリンタの構成を図３、図４を用いて説明する。
【００２１】
図３は、プリンタの概略断面図を示す図である。プリンタ３００は、イエロー、マゼンタ、シアン、ブラックの各色のトナー像が形成される４個の感光ドラム３０３ａ、３０３ｂ、３０３ｃ、３０３ｄを備えている。感光ドラム３０３ａ、３０３ｂ、３０３ｃ、３０３ｄは、ドラム状の電子写真感光体であり、直列に配置される。感光ドラム３０３ａ、３０３ｂ、３０３ｃ、３０３ｄの周囲には、１次帯電器３０４ａ、３０４ｂ、３０４ｃ、３０４ｄ、現像器３０６ａ、３０６ｂ、３０６ｃ、３０６ｄ及びクリーニング装置３０７ａ、３０７ｂ、３０７ｃ、３０７ｄが配置される。
【００２２】
感光ドラム３０３ａ、３０３ｂ、３０３ｃ、３０３ｄの上方には、露光装置３０５ａ、３０５ｂ、３０５ｃ、３０５ｄが配置される。感光ドラム３０３ａ、３０３ｂ、３０３ｃ、３０３ｄの下方には、中間転写ベルト（以下、ＩＴＢ）３０１が配置される。ＩＴＢ３０１は、ローラ３０９、３１０、３１１の周りに張設され、感光ドラム３０３と略同速で矢印方向に回転される。ＩＴＢ３０１は、感光ドラム３０３ａ、３０３ｂ、３０３ｃ、３０３ｄと各１次転写ローラ３０２ａ、３０２ｂ、３０２ｃ、３０２ｄによって挟持される。一方、プリンタ３００は、シート格納カセット３１２、ピックアップローラ３１３、レジセンサ３１５、レジ搬送ローラ３１４からなる給送機構を有している。更に、レジ搬送ローラ３１４の下流にＩＴＢ３０１と当接する２次転写ローラ３１６、定着装置３１７からなる印字搬送機構、排紙ローラ３１８、排紙トレイ３１９からなる排紙搬送機構を有している。
【００２３】
図４に、プリンタ３００の画像形成に関わる駆動制御構成を示す。プリンタ３００は、給送モータ４０４、ピックアップソレノイド４０６、レジクラッチ４０７、定着排紙モータ４０３といったアクチュエータを有している。アクチュエータにより、ピックアップローラ３１３、レジ搬送ローラ３１４、定着装置３１７の定着ローラ、排紙ローラ３１８を駆動する。また、プリンタ３００は画像形成機能として電子写真プロセスユニット４０５、定着装置３１７を有する。そして、各種アクチュエータ、画像形成機能を制御するプリンタ主制御部４０１、画像データを形成するビデオコントローラ４０２を有している。
【００２４】
プリンタ主制御部４０１は、ＣＰＵ、ＲＯＭ、ＲＡＭゲート素子等から構成され、制御の主要部はＲＯＭに書き込まれたソフトウエアで実現されている。
【００２５】
画像形成を行う場合、プリンタ主制御部４０１の制御ソフトウエアは、ビデオコントローラ４０２に対して画像の副走査方向同期信号（副走査方向＝シート搬送方向；以下、副走査方向同期信号をＴＯＰ信号と記す）を出力する。ビデオコントローラ４０２は、ＴＯＰ信号から所定のタイミングで各色の画像信号を出力する。そして、プリンタ主制御部４０１の制御ソフトウエアは、ＴＯＰ信号に同期して電子写真プロセスに従い電子写真プロセスユニット４０５を制御してＩＴＢ３０１上にトナー像を形成する。その一方で、制御ソフトウエアは、各アクチュエータを制御してシート３１１の搬送を制御する。具体的には、制御ソフトウエアは、シート格納カセット３１２からシートを給紙し、レジセンサ３１５にシート先端が達したタイミングでシート３１１を一時停止させる。そして、ＴＯＰ信号から所定のタイミングでシート３１１の２次転写部への送り込みを開始することによって、シート上の正規の位置に画像を転写させる。
【００２６】
プリンタ３００の制御ソフトウエアのような装置組込みソフトウエア（以下、ファームウェアと記す）の検証シミュレーションシステムとして、複数のシミュレータの組合わせによってシステムを構成することが行われている。
【００２７】
このようなプリンタ３００のシミュレータは、例えば３つのシミュレータを組合せることで実現することができる。プリンタ主制御部４０１のＣＰＵをシミュレートするＣＰＵシミュレータ、各種メカ機構をシミュレートするメカシミュレータ、及び、画像形成プロセスに応じた画像形成状態をシミュレートする画像シミュレータである。
【００２８】
しかし、これらシステムを構成する各シミュレータはそれぞれが独自の仮想時間の中でシミュレーションを実行している。このため、このような複数シミュレータの組合わせシステムにおいてはシミュレータ間で時刻を同期させる必要がある。特に、ドラム上のトナー像形成から２次転写部でのシート上への転写に至る制御を検証するシステムの場合、シミュレータ間の情報伝達の時刻同期を高精度で行う必要がある。具体的には、ＴＯＰ信号、レジセンサ信号、レジクラッチ駆動信号、各種電子写真プロセス制御信号等の変化は全てのシミュレータにとって同じ仮想時刻での発生事象として認識される必要がある。そこで以下に、これらの必要性を満たすシミュレーションシステムについて説明する。
【００２９】
＜シミュレーションシステムのハードウェア構成＞
本実施形態に係るシミュレーションシステムを実現可能なコンピュータシステムのハードウエア構成の概略図を図２に示す。図２のコンピュータシステム２００は以下のように構成される。中央処理装置（以下、ＣＰＵと記す）２０１は、バス２１０を介してコンピュータシステム２００の各構成にアクセスし制御する。読み出し専用メモリ（以下、ＲＯＭと記す）２０２は、バス２１０を介してＣＰＵ２０１からアクセス可能な記憶デバイスである。読み書き可能なメモリ（以下、ＲＡＭと記す）２０３はＣＰＵ２０１が実行するプログラムの一時記憶領域を提供する記憶デバイスである。入力インターフェース２０４は、キーボード、マウス、タブレットなどの入力装置２０５を介してユーザからの入力を受け取る。出力インターフェース２０６は、出力装置２０７に対しデータの表示や出力を行う。出力装置２０７は、ＣＲＴ、ＬＣＤなどの表示装置２０７ａ、及びプリンタ、プロッタなど画像形成装置２０７ｂを含む。外部記憶インターフェース２０８は、ハードディスクやＦＤ・ＣＤ−ＲＯＭ・ＭＯ・ＣＦなどの外部記憶装置２０９に対するデータの入出力を行う。外部記憶装置２０９は、シミュレーションシステムの各機能を実現した処理プログラム２０９ａ、シミュレーションの対象となる機器の情報を含む設定データ２０９ｂ及びファームウェア２０９ｃを格納している。
【００３０】
シミュレーションに際しては、ＣＰＵ２０１が、外部記憶装置２０９に格納された処理プログラム２０９ａ、設定データ２０９ｂ及びファームウェア２０９ｃをＲＡＭ２０３にロードし、実行する。
【００３１】
＜シミュレーションシステムのソフトウェア構成＞
図１に、本実施形態におけるシミュレーションシステムのソフトウェア構成を示す。このシミュレーションシステムは、プリンタ主制御部４０１で実行される制御プログラムの精度を検証するために用いられる。例えば、ドラム上のトナー像形成処理から２次転写処理までにおけるプリンタの動作を仮想的に検証する。
【００３２】
シミュレーションシステムは、それぞれ第１、第２仮想時間軸上において第１、第２対象物の動作をシミュレートする第１、第２シミュレータとしてのＣＰＵシミュレータ１０１及びメカシミュレータ１０３を含む。また、画像シミュレータ１０４を含み、更に、これら３つのシミュレータを接続し、ＣＰＵシミュレータ１０１と、メカシミュレータ１０３とを所定時間毎に同期制御する同期コントローラ１０２を含む。
【００３３】
［ＣＰＵシミュレータ］
ＣＰＵシミュレータ１０１はＣＰＵシミュレータインタフェース（以下、ＣＰＵシミュレータＩ／Ｆと記す）１３７を介して同期コントローラ１０２と接続される。、メカシミュレータ１０３は、メカシミュレータインタフェース（以下、メカシミュレータＩ／Ｆと記す）１３８を介して同期コントローラ１０２と接続される。画像シミュレータ１０４は、画像シミュレータインタフェース（以下、画像シミュレータＩ／Ｆと記す）１３９を介して同期コントローラ１０２と接続される。
【００３４】
なお、本実施形態のシミュレーションシステムはプリンタ３００におけるドラム上のトナー像形成から２次転写部でのシートへのトナー像転写に至るまでのプリンタ主制御部４０１の制御ソフトウエアの画像形成制御を検証することを目的とする。このため、定着装置３１７における定着温度変化のシミュレーション機能は有していない。
【００３５】
ＣＰＵシミュレータ１０１は、プリンタ３００のプリンタ主制御部４０１を構成するＣＰＵ（以下、ターゲットＣＰＵと記す）の動作をコンピュータシステム２００上で実現するシミュレータである。ＣＰＵシミュレータ１０１は、ターゲットＣＰＵのアドレス空間に対応した仮想アドレス空間を用意している。仮想アドレス空間とは、ターゲットＣＰＵの管理するアドレス空間上の個々の領域と１対１で対応する領域をコンピュータシステム２００のＲＡＭ２０３上に定義したものである。
【００３６】
ＣＰＵシミュレータ１０１は、対象プログラムコード記憶部１０５、シミュレーション実行部１０６、シミュレーション情報１０７、シミュレーション状態復帰部１０８、シミュレーション情報保存部１０９を含む。シミュレーション情報１０７は、擬似メモリ１１０、擬似Ｉ／Ｏ１１１、擬似レジスタ１１２、実行サイクル数１１３のシミュレーション情報を含む。
【００３７】
対象プログラムコード記憶部１０５は、ターゲットＣＰＵ用にプログラミングされプリンタ主制御部４０１のＲＯＭに書き込まれるプリンタ３００用のファームウェアを取り込み記憶する。以下、特にシミュレーション対象のファームウェアをターゲットファームウェアと呼ぶ。ターゲットファームウェアは、コンピュータシステム２００のハードディスク２０９に格納されているもの（ファームウェア２０９ｃ）をロードする。
【００３８】
シミュレーション実行部１０６は、対象プログラムコード記憶部１０５に読み込まれたターゲットファームウェアの命令を解釈して、コンピュータシステム２００のＣＰＵ２０１上でターゲットファームウェアの制御を擬似実行する。すなわち、シミュレーション実行部１０６は、ターゲットファームウェアの制御プログラムに従い擬似レジスタ１１２、擬似メモリ１１０、擬似Ｉ／Ｏの情報を変更する。更に、シミュレーション実行部１０６は、命令実行シミュレーションの進行に伴い、ターゲットＣＰＵにおける実行サイクル数を計算し、実行サイクル数１１３の情報を変更する。
【００３９】
シミュレーション実行部１０６は、ターゲットファームウェアによるターゲットＣＰＵアドレス空間上の各領域へのアクセス命令にしたがって、当該領域に対応する仮想アドレス空間上の領域にアクセスする。シミュレーション情報を構成する擬似メモリ１１０、擬似Ｉ／Ｏ１１１は、仮想アドレス空間上に定義される情報として実現される。
【００４０】
シミュレーション実行部１０６はユーザインタフェースを有し、ユーザインタフェースを介してシミュレーションの実行、任意のタイミングでの中断、ユーザにより設定された条件での中断、ステップ実行、終了の指示を受け、指示に従った処理を実行する。
【００４１】
また、シミュレーション実行部１０６は外部からＣＰＵシミュレータＩ／Ｆ１３７を介して受け付けたシミュレーション実行における各種指示に応じた処理を実行する機能を有している。シミュレーション実行部１０６は外部からの指示に応じて、仮想アドレス空間上の所定仮想アドレス領域のデータを変更又は報知し、シミュレーションを実行、中断又は終了し、シミュレーション状態を保存又は復帰させ、割込みシミュレーションを実行する。ここで、外部とはユーザ、他のシステムの両方を指す。以下の説明全てにおいて同様である。
【００４２】
シミュレーション状態復帰部１０８は、ＣＰＵシミュレータＩ／Ｆ１３７を介してシミュレーション情報保存指示を受けると、シミュレーション情報１０７の内容をシミュレーション情報保存部１０９に保存する。同様に外部からシミュレーション状態復帰指示を受けると、シミュレーション情報保存部１０９に保存された内容をシミュレーション情報１０７に上書きする。これにより、シミュレーション情報１０７に基づいて実行されるシミュレーション実行部１０６によるシミュレーションの状態はシミュレーション情報保存時の状態に戻る。シミュレーション状態復帰部１０８はＣＰＵシミュレータＩ／Ｆ１３７を介したシミュレーション情報保存指示、シミュレーション状態復帰指示を常時受付け可能である。
【００４３】
ＣＰＵシミュレータＩ／Ｆ１３７は、ＣＰＵシミュレータと外部機能とのインタフェースである。シミュレーション実行部１０６は、予め定義されたシミュレーション実行における各種事象発生時に、シミュレーション実行を中断してＣＰＵシミュレータＩ／Ｆ１３７を介して外部に事象発生を報知する。シミュレーション実行部１０６において報知の対象となる事象は、ターゲットファームウェアによる仮想アドレス領域へのアクセス（読み出し、書き込み）、シミュレーション実行の中断／終了である。
【００４４】
［メカシミュレータ］
メカシミュレータ１０３は、プリンタ３００を構成する各種部品の動作をコンピュータシステム２００上でシミュレートするためのシミュレータで、シミュレーション実行部１４０、メカモデル定義情報１４１、シミュレーション情報１２０を含む。メカシミュレータ１０３は、オペレータによるアクチュエータ信号操作、画像形成開始指示、画像形成終了指示のシーケンスを簡易的に設定し、自動で実行する機能を有し、簡易的なシーケンサによって画像転写シーケンスの確認を行うことができる。
【００４５】
シミュレーション実行部１４０による各種機構部品の動作シミュレーションにおける各種メカモデルの動作状態を示す情報はシミュレーション情報１２０として保持され、各メカモデルの状態変化毎に更新される。シミュレーション情報１２０は、モータ動作情報１２３、ソレノイド動作情報１２４、シート位置情報１２５、センサ状態情報１２６、画像位置情報１２７、シミュレーション時刻１２８を含む。各情報の内容は以下のとおりである。シミュレーション情報は、機構部品毎に定義されたＩＤと関連付けられて保持される。
【００４６】
モータ動作情報：回転速度、回転方向、回転角
ソレノイド動作情報：駆動／停止、動作時間
シート位置情報：先端位置、後端位置
センサ状態情報：センサ信号値
画像位置情報：先端位置、後端位置
シミュレーション時刻：シミュレーション開始からのシミュレーション上の時刻
【００４７】
メカモデル定義情報１４１は、プリンタ３００の機構部品の種類、配置、動作、機構部品間の干渉と連携条件といったメカモデル定義、センサ信号情報、アクチュエータ駆動信号情報、及び、センサモデル、アクチュエータモデルに対する反応時間を定義する。反応時間とは、センサ感知条件の発生からセンサ信号として定義された情報を所定値に変更するまでの仮想時間や、アクチュエータ駆動信号と指定定義された情報の変化をアクチュエータモデルの動作に反映させる遅れ時間を意味する。
【００４８】
メカモデル定義情報１４１は、コンピュータシステム２００のハードディスク２０９の設定データ２０９ｂのひとつとして格納されるユーザ作製の定義ファイルをロードすることで生成される。ユーザ作成定義ファイルの生成部としては、ユーザが所定の書式に従ったテキストファイルを生成する、定義ファイル作成のためのＧＵＩを用意する等の方法が考えられる。
【００４９】
以上のように定義される機構部品の種類としてはモータ、ソレノイド、クラッチ、センサ、シート搬送ローラ等がある。また、プリンタ３００の構成部品ではないもののプリンタのシミュレーションに必要な構成要素としてシート３１１、ＩＴＢ３０１上に形成される画像もメカモデルとして定義される。
【００５０】
各機構部品は同一種類について複数定義を可能にするため、同種の機構部品の定義情報を区別するための機構部品毎の固有のＩＤを定義し、定義情報はＩＤと対応付けて定義される。
【００５１】
シミュレーション実行部１４０は、メカモデル定義情報１４１に定義されたメカモデルの動作をシミュレートするもので、オペレータによる各種シミュレーション操作は、グラフィカルユーザインタフェース（以下、ＧＵＩと記す）を介して行う。
【００５２】
シミュレーション実行部１４０は、上述のメカモデルの動作をコンピュータシステム２００の表示装置２０７ａ上に２次元、又は３次元のグラフィックとして表示する。
【００５３】
シミュレーション状態復帰部１２１は、メカシミュレータＩ／Ｆ１３８を介して外部からシミュレーション情報保存指示を受けると、シミュレーション情報１２０の内容をシミュレーション情報保存部１２２に保存する。同様に外部からシミュレーション状態復帰指示を受けると、シミュレーション情報保存部１２２に保存された内容をシミュレーション情報１２０に上書きする。これにより、シミュレーション情報１２０に基づいて実行されるシミュレーション実行部１４０によるシミュレーションの状態はシミュレーション情報保存時の状態に戻る。シミュレーション状態復帰部１２１はメカシミュレータＩ／Ｆ１３８を介したシミュレーション情報保存指示、シミュレーション状態復帰指示を常時受付け可能である。
【００５４】
メカシミュレータＩ／Ｆ１３８は、メカシミュレータと外部機能とのインタフェースである。シミュレーション実行部１４０は、予め定義されたシミュレーション実行における各種事象発生時に、シミュレーション実行を中断してメカシミュレータＩ／Ｆ１３８を介して外部に事象発生を報知する。ここで、本実施形態のシミュレーション実行部１４０において報知の対象となる事象は、センサ信号値の変化、シミュレーション実行の中断／終了である。また、シミュレーション実行部１４０は外部からメカシミュレータＩ／Ｆ１３８を介して受け付けたシミュレーション実行における各種指示に応じた処理を実行する機能を有している。シミュレーション実行部１４０は、外部からの指示に応じて、各アクチュエータ駆動信号値の外部から指定された値への変更、簡易画像形成シミュレーション機能への画像形成開始指示、画像形成終了指示を実行する。また、外部から指定されたセンサの信号値の報知、所定時間のシミュレーション実行、シミュレーションの中断／終了、シミュレーション状態の保存、シミュレーション状態の復帰を行なう。
【００５５】
［メカシミュレータによる表示］
図５に、本実施形態のメカシミュレータ１０３におけるプリンタ３００の２次元グラフィック表示の例を示す。５０１は排紙トレイ、５０２はシート搬送ローラ、５０３はモータ、５０４はシート搬送路、５０５は感光ドラム、ＩＴＢ及びＩＴＢ駆動ローラで構成されるＩＴＢユニットである。また、５０７はセンサ、５０８はクラッチ、５０９はソレノイド、５１０は給紙トレイ、５１１はトナー画像、５１２はシートをそれぞれ示す。
【００５６】
搬送ローラ５０２、モータ５０３、ドラム５０５を示す画像の円内の直線はオペレータによる回転状態の確認を可能にするための表示で、回転動作とともに描画角度が変化する。
【００５７】
図５ではトナー画像５１１を破線で示しているが、シート５１２と異なる色で表示してもよい。トナー画像５１１は、ＩＴＢ５０６の動作に応じてＩＴＢ５０６上を２次転写位置まで移動し、２次転写位置以降においては搬送ローラ５０２の動作に応じてシート搬送路５０４に添って排紙トレイまで移動する。一方、シート５１２は、搬送ローラ５０２の動作に応じて給紙トレイ５１０から排紙トレイまでをシート搬送路５０４に添って移動する。そして、２次転写位置においてトナー画像５１１とシート５１２に重なりが発生した場合には、トナー画像５１１とシート５１２の表示が重なった状態で表示され排紙トレイ５０１に至る。
【００５８】
また、センサ５０７、クラッチ５０８、ソレノイド５０９は作動状態と停止状態で表示色が変わるようになっている。
【００５９】
メカモデルの動作は図５のＧＵＩを介してオペレータによる直接、間接の機構部品動作指定に応じてシミュレーションされる。オペレータによる直接の機構部品動作指定は、例えば、表示装置２０７ａに表示された機構部品に対してのマウスでのクリック、ドラッグといった操作によって行われる。この場合、シミュレーション実行部１４０はオペレータによって指定されるメカモデルを予め定義された動作に従いグラフィックとして画面上で動作させる。また、オペレータによる間接の機構部品動作指定は、アクチュエータ駆動信号として定義された情報に対するＧＵＩを介した信号値の設定として行われる。この場合、シミュレーション実行部１４０は駆動信号に対応するアクチュエータのメカモデルを予め定義された動作に従いグラフィックとして画面上で動作させる。同時に、アクチュエータとの連結が定義された機構部品をアクチュエータの動作に関連付けて予め定義された動作に従いグラフィックとして画面上で動作させる。
【００６０】
また、シミュレーション実行部１４０による機構部品の動作シミュレーションにおいては機構部品間の干渉、連携定義に従い、関連する全ての機構部品の動作が再現される。これら機構部品の動作は表示装置２０７ａに表示されたグラフィックとして再現されるとともに、機構モデルの動作の結果、センサとして定義された機構モデルにあらかじめ定義された作用が発生すると、作用に応じてセンサ信号を定義された値に変化させる。
【００６１】
以上のようなシミュレーションを図５を用いて説明する。モータ５０３の内の１つの画像内の１点をマウスクリックし、そのまま回転方向にドラッグすることでモータ５０３が回転する。これによりモータモデルに直結された搬送ローラ５０２が定義された減速比にしたがって回転し、搬送ローラ５０２に当接状態として定義されているシート５１２が存在する場合、シート５１２の表示が搬送路に添って移動する。また、シート５１２の移動の結果、センサ５０７の定義位置に干渉状態になった場合、センサ５０７の表示色が変化するとともに定義されたセンサ信号の値が変化する。
【００６２】
更に、シミュレーション実行部１４０は、簡易的な画像形成シミュレーション機能を有している。画像形成シミュレーション機能はＧＵＩを介して設定されるオペレータからの画像形成開始指示に応じてＩＴＢ５０６上に定義される画像形成ポイントをトナー画像５１１の先端として定義する。そして、以降、ＩＴＢ５０６の動作にしたがってＩＴＢ５０６上で移動させる。このとき、画像後端位置の定義はオペレータからの画像形成終了指示まで画像形成ポイントの位置で固定する。次に、簡易画像形成シミュレーション機能は、オペレータからの画像形成終了指示に応じて画像後端位置をＩＴＢ５０６の動作にしたがってＩＴＢ５０６上での移動を開始する。以降、簡易画像形成シミュレーション機能は、ＩＴＢ５０６上、及び、２次転写以降の搬送路上での先端位置、後端位置の移動に伴ってトナー画像５１１をＩＴＢ５０６、シート搬送路５０４に沿って移動させることにより簡易的に画像形成範囲を表示する。なお、本実施形態における画像形成ポイントは第４ステーションの１次転写位置に設定されている。
【００６３】
［画像シミュレータ］
図１の画像シミュレータ１０４は、プリンタ３００による画像形成状態を画像シミュレータＩ／Ｆ１３９を介して外部から入力されるＴＯＰ信号情報、各種プロセス制御信号情報に基づき１次転写完了画像範囲、２次転写画像完了範囲を解析し、表示する。画像シミュレータ１０４は、画像形成機構定義部１２９、シミュレーション実行部１３０を含む。画像シミュレータ１０４におけるシミュレーション状態を示す情報はシミュレーション情報１３１として保持され、ＴＯＰ信号、各プロセス制御信号の状態変化毎に更新される。シミュレーション情報１３１は、プロセス値１３４、プロセス作用位置１３５、プロセス移動速度１３６の他、ＴＯＰ信号情報、制御信号情報、シミュレーション時刻などを含む。
【００６４】
各情報の内容は以下のとおりである。
ＴＯＰ信号：ＴＯＰ信号発生タイミング（２次転写終了又はタイムアウトまで保持される）
プロセス制御信号情報：各プロセス制御信号の最後の変化タイミング、値
シミュレーション時刻：シミュレーション開始からのシミュレーション上の時刻
【００６５】
画像形成機構定義部１２９は、プリンタ３００の画像形成機構定義情報を有している。具体的には、プロセス種別、プロセス毎の画像形成条件、プロセス毎のメカ構成位置（基準位置からの相対距離）、プロセス速度判別パラメータの情報が定義されている。画像形成条件とは各プロセス毎の制御信号について画像形成時に設定されるべき値を定めたものである。なお、露光については画像信号が常時出力されている前提で、画像マスク解除状態を画像形成条件として設定する。
【００６６】
基準位置とは、ＴＯＰ信号の基準となる画像形成プロセス上の位置のことで、プリンタ３００の場合、第１ステーション（イエロー）のドラム上の露光位置となる。すなわち、ＴＯＰ信号と同時にイエローの露光が開始された場合、シート先端にイエローの画像が形成されることになる。また、基準位置からの相対距離とは基準位置と各プロセスの位置関係を示す。例えばプリンタ３００の第３ステーション（シアン）の現像の場合、［第１ステーションの露光〜１次転写の距離＋第１ステーションの１次転写〜第３ステーションの１次転写の距離−第３ステーションの現像〜１次転写の距離］となる。これらの定義はオペレータによりシミュレーションに先立って予め設定される。
【００６７】
画像形成機構定義部１２９は、コンピュータシステム２００のハードディスク２０９の設定データ２０９ｂのひとつとして格納されるユーザ作成の定義ファイルをロードすることで生成される。
【００６８】
シミュレーション実行部１３０は、ＴＯＰ信号タイミングを基準とした各種プロセス制御信号の動作タイミング、画像形成条件、画像形成機構の配置、ＩＴＢ、感光ドラムの周速に基づいて各プロセスの重畳状態を判断する。そして、１次転写画像、２次転写画像の副走査方向における形成状態をコンピュータシステム２００の表示装置２０７ａ上に表示する。シミュレーション実行部１３０において報知の対象となる事象は、１次転写画像の先端発生、１次転写画像の後端発生、２次転写画像の先端発生、２次転写画像の後端発生、シミュレーション実行の中断／終了である。また、シミュレーション実行部１３０は外部から画像シミュレータＩ／Ｆ１３９を介して受け付けたシミュレーション実行における各種指示に応じた処理を実行する機能、ＴＯＰ信号、及び、予め定義されたプロセス制御信号値の指定を受ける機能を有している。シミュレーション実行部１３０は、外部からの指示に応じて、所定仮想時間分のシミュレーション実行、シミュレーションの中断／終了、シミュレーション状態の保存、シミュレーション状態の復帰を行なう。
【００６９】
シミュレーション状態復帰部１３２は、画像シミュレータＩ／Ｆ１３９を介してシミュレーション情報保存指示を受けると、シミュレーション情報１３１の内容をシミュレーション情報保存部１３３に保存する。そして、同様に外部からシミュレーション状態復帰指示を受けると、シミュレーション情報保存部１３３に保存された内容をシミュレーション情報１３１に上書きする。これにより、シミュレーション実行部１３０によるシミュレーションの状態はシミュレーション情報保存時の状態に戻る。シミュレーション状態復帰部１３２は画像シミュレータＩ／Ｆ１３９を介したシミュレーション情報保存指示、シミュレーション状態復帰指示を常時受付け可能である。
【００７０】
画像シミュレータＩ／Ｆ１３９は、画像シミュレータと外部機能とのインタフェースである。シミュレーション実行部１３０は、予め定義されたシミュレーション実行における各種事象発生時に、シミュレーション実行を中断して画像シミュレータＩ／Ｆ１３９を介して外部に事象発生を報知する。
【００７１】
［状態表示］
図６に、本実施形態における画像シミュレータによる画像形成状態の表示例を示す。図のように、１次転写、２次転写それぞれについてＴＯＰ信号タイミングに基づいた画像先端を基準とした副走査方向の画像形成状態を帯状のグラフィックで表示する。本表示例は、図５に示されたような画像形成状態を示すもので、１次転写終了画像が３頁、１次転写形成中画像が１頁、２次転写終了画像が１頁の状態を示す。もし、何れか１つのプロセスでも画像形成条件を満たしていない範囲がある場合、その範囲は帯状のグラフィックが表示されない。
【００７２】
［シミュレータの基本動作］
ＣＰＵシミュレータ１０１、メカシミュレータ１０３、画像シミュレータ１０４の各シミュレータの持つシミュレーション実行部のシミュレーション実行の基本動作は共通である。そこで、以下、図７のフローチャートを使ってシミュレーション実行部の基本動作を説明する。まず、ステップＳ７０１（以下、単にＳ７０１のように記す）でシミュレーションを停止（起動直後は起動時の停止状態を保持）する。Ｓ７０２で外部から外部Ｉ／Ｆを介してシミュレーションの実行指示を受けると、Ｓ７０４でシミュレーション実行時間の指定の有無を確認する。
【００７３】
Ｓ７０４でシミュレーションの実行指示がシミュレーション実行時間の指定を伴う場合、Ｓ７０３でシミュレーションの実行を開始し、Ｓ７０５以下の時間限定シミュレーションに移行する。時間指定を伴わない場合には、Ｓ７０４からＳ７１１進み、既に設定されているシミュレーション実行時間を持っているかどうかをチェックする。
【００７４】
シミュレーション実行指示が時間指定を伴っていない場合でも、既にシミュレーション実行時間指定を受けたシミュレーション実行中で、その間に指定時間実行完了以外の事象発生による中断から再開する場合がある。この場合、引き続き先に指定されたシミュレーション時間分のシミュレーションを継続するために、更に外部からのシミュレーション時間指定無しでシミュレーション実行を指示される場合がある。したがって、Ｓ７１１で既に設定されているシミュレーション時間がある場合には、Ｓ７０３以下の時間限定シミュレーションに進む。シミュレーション時間の設定が無い場合には、Ｓ７１８でシミュレーションの実行を開始し、Ｓ７１２以下の連続実行シミュレーションに進む。時間指定を伴う場合、Ｓ７０５で指定された時間（仮想上の時間）が経過しているかどうかをチェックし、指定時間経過していない場合、Ｓ７０６で仮想時間にしたがって実行されるシミュレーション上の事象（外部に対して報知すべき変化）を確認する。事象が発生した場合、Ｓ７０６からＳ７０７に進み、発生事象を、仮想時間上のタイミング情報とともに同期コントローラ１０２に送信した後、Ｓ７０１に戻ってシミュレーションを停止する。
【００７５】
Ｓ７０６で事象が発生していない場合、Ｓ７０９で外部からのシミュレーション中断指示をチェックし、外部からの中断指示があればＳ７１０でシミュレーションの中断処理を行うとともに外部に対して中断発生とその仮想時間上のタイミングを報知する。そして、Ｓ７０１に戻って仮想時間を停止する。Ｓ７０６で内部事象が発生せず、Ｓ７０９で外部からの中断指示もない場合、Ｓ７０５での指定仮想時間経過までシミュレーションを継続する。そして、Ｓ７０５で指定仮想時間分のシミュレーションを終了した後にＳ７０８で外部にシミュレーションの中断とその仮想時間上のタイミングを報知してＳ７０１に戻り仮想時間を停止する。また、Ｓ７０４で仮想時間の進行指示が時間指定を伴わない場合にはＳ７１２で外部からの終了指示までシミュレーションを継続する。外部から終了指示があるまでの処理Ｓ７１３〜Ｓ７１６は、時間指定時のＳ７０６〜Ｓ７１０と同じである。Ｓ７１２で外部からの終了指示を受けている場合、Ｓ７１７でシミュレーションの終了を外部に報知し、シミュレーションを終了する。
【００７６】
［同期コントローラ］
同期コントローラ１０２は、ＣＰＵシミュレータ１０１、メカシミュレータ１０３、画像シミュレータ１０４を接続し、ひとつのシミュレーションシステムとして連携動作させるもので、同期部１１４と配線部１１５とを含む。同期部１１４は、同期実行管理部１１６、同期時刻補正部１１７、同期補正トリガ定義部１１８を含む。また、配線部１１５は配線定義情報１１９を有している。
【００７７】
配線部１１５は、各シミュレータの扱う情報の中で、シミュレーションシステム上同一の意味を持つ情報を接続し、シミュレータ間で伝達する処理を行う。
【００７８】
配線部１１５は、ユーザによりあらかじめ設定された配線定義情報１１９を基に、周辺シミュレーションツール間を接続する。ここで配線定義情報１１９は、システムを構成するシミュレータ間で同一の意味として取り扱う情報の接続を信号線として扱い、この信号線の設定を一元的に管理している。
【００７９】
図８に配線定義情報１１９の配線定義の一例を示す。図のように、配線定義情報１１９は、各信号線を各シミュレータ上の情報定義と（信号ＩＤ）との関連付けで定義する。図の、（データサイズ）は１つのデータのビット数を示す。ＣＰＵシミュレータの（ｂｉｔ）は１ビットデータ信号の当該アドレス中でのビット位置を示す。各シミュレータの（Ｉ／Ｏ）は各信号のシミュレータにおける入出力の方向を示し、（Ｉ）が入力、（Ｏ）が出力を示す。これらの配線定義情報は実際の配線部のプログラム中ではコード化されたデータとして扱われる。
【００８０】
配線定義情報１１９は、コンピュータシステム２００のハードディスク２０９の設定データ２０９ｂのひとつとして格納されるユーザ作製の定義ファイルをロードすることで生成される。ユーザ作成定義ファイルの生成部としては、ユーザが所定の書式に従ったテキストファイルを生成する、定義ファイル作成のためのＧＵＩを用意する等の方法が考えられる。
【００８１】
配線定義情報１１９によってＣＰＵシミュレータ１０１とメカシミュレータ１０３との間で、アクチュエータ駆動信号、センサ信号が配線定義されている。また、ＣＰＵシミュレータ１０１と画像シミュレータ１０４との間で、ＴＯＰ信号、各電子写真プロセス制御信号、プロセス速度判別パラメータとして電子写真プロセスユニットに関わるモータ駆動信号が配線定義されている。更に、メカシミュレータ１０３と画像シミュレータ１０４との間で、画像形成開始指示として１次転写画像の先端発生、画像形成終了指示として１次転写画像の後端発生が配線定義されている。
【００８２】
配線部１１５は、システムを構成する何れかのシミュレータから情報変化の事象が報知されると、情報と結線された他のシミュレータの情報を配線定義情報から検索し、接続先が定義されている場合にはシミュレータに対してその情報の変更を指示する。また、配線定義情報１１９の（トリガ）に関する処理を行う。
【００８３】
同期部１１４は、各々個別の仮想時刻の概念にしたがってシミュレーションを実行する各シミュレータを、所定時間毎に同期制御する処理を行う。
【００８４】
基本的な仮想時刻同期処理は同期実行管理部１１６によって行われる。同期実行管理部１１６は、基本的な同期処理とともに同期時刻補正部１１７との連携による同期処理を実行する。
【００８５】
ここで、ターゲットファームウェアによる画像形成プロセス制御の検証のためには、各シミュレータの仮想時間上の同期精度を高くする必要がある。このため、本実施形態のシミュレーションシステムにおいては、同期部１１４に同期時刻補正部１１７と同期補正トリガ定義部１１８を有し、伝達精度の必要な事象に対してシミュレータ間の同期時刻補正処理を実行する。これより、高速にシミュレーションを実行しつつ、必要に応じてシミュレータ時刻の連携精度を高める。
【００８６】
［同期制御］
図１２に、本実施形態における同期実行管理部１１６の制御のフローチャートを示す。
【００８７】
Ｓ１２０１で同期時刻補正部１１７に同期処理開始を通知し、Ｓ１２０２で同期時刻補正部１１７からの同期実行準備完了の通知を受けるまで待機する。Ｓ１２０２で同期時刻補正部１１７からの同期実行準備完了通知を受けると、Ｓ１２０３で基準同期時間のシミュレーション実行を各シミュレータに指示する。ここで基準同期時間とは、シミュレーションシステム全体で時刻の同期をとるための時間単位で、システム動作のパラメータとして予めユーザにより設定される値を使用する。ここで各シミュレータに指示されるシミュレーション実行時間は各シミュレータにおけるシミュレーション上の仮想時間が指定される。その後、Ｓ１２０４で同期時刻補正部１１７から全シミュレータの基準同期時間処理終了を通知されるまで待機し、全シミュレータによる指定時刻までのシミュレーション終了の通知を受けるとＳ１２０１に戻り次の１同期分の処理に進む。
【００８８】
図１３に、本実施形態における同期補正トリガ定義部１１８によって定義されたトリガ事象の一例を示す。同期補正トリガは（トリガＩＤ）と関連付けられた（信号ＩＤ）と（信号値）によって定義される。例えば、トリガＩＤ：１の定義は信号ＩＤ：１、すなわち、図８の配線定義情報で示されるＴＯＰ信号で、同信号が値０に変化したことをもって同期補正トリガの発生と定義することを示している。同様に、トリガＩＤ：２はレジセンサの信号値が１に変化、トリガＩＤ:３はレジクラッチ駆動の信号値が０に変化したことを各々同期補正トリガと定義している。同期補正トリガの定義情報は、コンピュータシステム２００のハードディスク２０９の設定データ２０９ｂのひとつとして格納されるユーザ作製の定義ファイルをロードすることで生成される。ユーザ作成定義ファイルの生成部としては、ユーザが所定の書式に従ったテキストファイルを生成する、定義ファイル作成のためのＧＵＩを用意する等の方法が考えられる。
【００８９】
同期補正トリガ定義部１１８は、ユーザ作成の定義ファイルにより信号名、ターゲットファームウェア上のアドレス等によって定義されたトリガとなる信号について、配線定義情報１１９から対応する信号ＩＤを検索する。そして、定義された信号値とともにトリガＩＤに関連付けて定義情報として記憶する。また、同期補正トリガ定義部１１８によるユーザ作成の定義ファイルロードに際して、トリガ条件として定義される信号に対応する配線定義情報１１９中の（トリガ）欄の値を１に設定する。
【００９０】
図１４に、本実施形態における配線部１１５の制御のフローチャートを示す。まず、Ｓ１４０１でシステムを構成する何れかのシミュレータからの事象発生の通知を待ち、事象報知を受けるとＳ１４０２で当該事象が指定仮想時刻までのシミュレーション実行終了事象の報知であるかどうかをチェックする。
【００９１】
Ｓ１４０２で「指定時刻までのシミュレーション実行終了」を示す事象と判断した場合には、Ｓ１４０３に進み同期部１１４に事象発生シミュレータ情報とともに事象の発生を報知し、Ｓ１４０４に進む。他の事象通知の場合には、Ｓ１４０８に進み事象発生を通知してきたシミュレータにシミュレーション再開を指示した後にＳ１４０４に進む。各シミュレータは事象報知の際にシミュレーション動作を中断しているためＳ１４０８の処理が必要になる。
【００９２】
Ｓ１４０４では当該事象がシミュレーション情報変化の事象であるかどうかをチェックし、シミュレーション情報変化の場合、Ｓ１４０５のシミュレータ間情報伝達処理を実行後にＳ１４０６に進む。情報変化で無い場合にはそのままＳ１４０１に戻る。Ｓ１４０５では配線定義情報１１９により当該シミュレーション情報の伝達先を確認し、当該シミュレーション情報の接続先として定義されたシミュレータが存在する場合には、当該シミュレーション情報の変化を該シミュレータに伝達する。
【００９３】
その後、Ｓ１４０６で当該事象がトリガ事象、すなわち、配線定義情報１１９の（トリガ）が１に設定された事象であるかどうかを判定する。本実施形態においては、Ｓ１４０６で変化した情報の信号ＩＤについて配線定義情報１１９のトリガの項目が１であるかどうかのみを判断する。当該信号ＩＤの値がトリガ条件に一致している、すなわち、同期補正トリガ定義部１１８の信号値の項目に一致しているかどうかの判断は、同期時刻補正部１１７によって行っている。しかし、Ｓ１４０６で信号値が条件に一致する判断を行い、同期時刻補正部１１７はその結果の報知を受けて処理を実行する処理によっても同様の作用が得られる。トリガ事象である場合にはＳ１４０７に進み同期部１１４に事象発生シミュレータ情報、事象発生時刻（シミュレーションの仮想時間軸上の時刻）情報とともに事象の発生を報知した後にＳ１４０１に戻り、トリガ事象で無い場合にはそのままＳ１４０１に戻る。
【００９４】
図１５に、本実施形態における同期時刻補正部１１７の制御のフローチャートを示す。Ｓ１５０１で同期実行管理部１１６からの同期処理開始通知を待ち、同期処理開始通知を受けるとＳ１５０２で全シミュレータにシミュレーション情報保存指示を出す。各シミュレータのシミュレーション状態復帰部１０８、１２１、１３２はシミュレーション情報保存指示を常時受け付けている。同期時刻補正部１１７からのシミュレーション情報保存指示を受けると直ちに各々のシミュレーション情報保存部１１９、１２２、１３３にシミュレーション情報を保存する。続いて、同期時刻補正部１１７は、Ｓ１５０３で同期実行管理部１１６に同期実行準備完了を通知する。その後、Ｓ１５０４で配線部１１５からのトリガ事象発生通知を確認する。そして、トリガ事象の発生が無い場合にはＳ１５０９で配線部１１５からの通知（Ｓ１４０３）により全シミュレータが指定時刻までのシミュレーション実行を終了することを確認するまでＳ１５０４、Ｓ１５０９の処理を繰り返す。Ｓ１５０９で全シミュレータの指定時刻までのシミュレーション実行終了を確認した場合には、Ｓ１５１０に進む。Ｓ１５０４で配線部からトリガ事象発生通知を受けた場合には、Ｓ１５０５で発生事象によりトリガ条件が成立したかどうかをチェックする。
【００９５】
ここで、配線部１１５はトリガ条件と指定された情報の変化事象を通知するため、変化の内容、すなわち、変化値がトリガ条件に合致するかどうかをＳ１５０５で判定する。ここで、トリガ条件が成立しない場合にはＳ１５０９に進む。トリガ条件が成立した場合には、Ｓ１５０６でトリガ条件となる事象が発生した事象発生時刻を取得し、全シミュレータに状態復帰を指示した後に、Ｓ１５０７において、取得した事象発生時刻までのシミュレーション実行を全シミュレータに指示する。この場合、それぞれのシミュレータにおいて仮想時間軸は異なるが、同一の値の事象発生時刻を各シミュレータに指定時刻として指示する。その後、Ｓ１５０８で配線部１１５からの通知により全シミュレータが指定時刻までのシミュレーション実行を終了することを確認するまで待機し、全シミュレータによる指定時刻までのシミュレーション終了を確認した後にＳ１５１０に進む。Ｓ１５１０で同期実行管理部１１６に同期時刻までのシミュレーション実行終了を通知してＳ１５０１に戻る。
【００９６】
図１６Ａ、Ｂに、本実施形態の同期処理によりターゲットファームウェアによるレジセンサ３１５におけるシート検知停止処理をシミュレートした場合の動作を模式的に示す。ここで、レジセンサ信号ＯＮの事象が予め同期時刻補正トリガとして設定されているものとする。
【００９７】
図１６Ａのように、ＣＰＵシミュレータ１０１及びメカシミュレータ１０３においてシミュレーションの実行を開始し（Ｓ７０３）、その後、メカシミュレータ１０３において「レジセンサ信号がＯＮに変化する事象」が発生したとする（Ｓ７０６）。この場合、事象内容及び事象発生時刻について、同期コントローラ１０２に通知し（Ｓ７０７）、シミュレーションを停止する（Ｓ７０１）。
【００９８】
これにより、同期時刻補正部１１７は、事象発生時刻を取得し、シミュレータに状態復帰を指示する（Ｓ１５０６）。そして更に、シミュレータに対し、取得した事象発生時刻までのシミュレーション再実行を指示する（Ｓ１５０７）。
【００９９】
図１６Ｂに示すようにＣＰＵシミュレータ１０１及びメカシミュレータ１０３は、レジセンサの信号がＯＮになるまでの時間指定を受けて、遡ってシミュレーションを再実行する（Ｓ７０３）。シミュレーションの再実行後、それぞれのシミュレータにおいて、指定時間の経過に伴い、シミュレーションを停止する（Ｓ７０８→Ｓ７０１）。その状態において、ＣＰＵシミュレータ１０１は、レジセンサ信号を立ち上げ、そのシミュレーション状態を保存する。これにより、レジセンサ信号の立上りについて、ＣＰＵシミュレータ１０１とメカシミュレータ１０３とが同期した状態で次のシミュレーションを実行することが可能となる。
【０１００】
次に、図１６Ｃのように、続いて実行されたシミュレーションにおいて、ＣＰＵシミュレータ１０１のレジクラッチ信号に、立下り事象が発生する。この場合も、図１６Ａ、Ｂで説明した場合と同様に、その事象内容、事象発生時刻を同期コントローラに報知し（Ｓ７０７）、一旦シミュレーションを中断する（Ｓ７０１）。同期時刻補正部１１７は、事象発生時刻を取得し、シミュレータに状態復帰を指示する（Ｓ１５０６）。そして更に、シミュレータに対し、取得した事象発生時刻までのシミュレーション再実行を指示する（Ｓ１５０７）。
【０１０１】
シミュレーション再実行においては、図１６Ｄに示すように、クラッチ信号ＯＦＦまでの時間をそれぞれのシミュレータに設定する。各シミュレータは設定された指定時間までシミュレーションを実行し、その後停止して、メカシミュレータ１０３においてレジクラッチ信号を立ち下げ、シミュレーション状態を保存して次のシミュレーションを実行する。
【０１０２】
以上のように、直前の同期時刻から同事象発生までのシミュレーションを再度実行するため、ＣＰＵシミュレータ１０１はレジセンサ信号の変化を正確なシミュレーション時刻で受け取ることができる。一方で、メカシミュレータ１０３は、レジクラッチ駆動信号の変化を正確なシミュレーション時刻で受け取ることができる。
【０１０３】
図１６では、レジセンサＯＮからレジクラッチＯＦＦまで時間差があるように図示しているが、この時間差が０の場合でも、事象発生まで各シミュレータの同期処理を同期時間０で設定することで、正確な時刻同期を実現することができる。
【０１０４】
２次転写部でのシート上への画像転写位置の検証シミュレーションの例においては伝達についての時刻精度が要求される信号として以下のものが挙げられる。レジセンサ信号、レジクラッチ信号の他に、ＴＯＰ信号、各種電子写真プロセス制御信号、１次転写画像の先端発生（→画像形成開始指示）、１次転写画像の後端発生（→画像形成終了指示）である。これらを同様に同期時刻補正トリガとして設定することで、画像シミュレータ１０４の出力イメージ（図６）にターゲットファームウェアの制御が正しく反映された結果を表示することができる。更に、メカシミュレータ１０３の出力イメージ（図５）上のトナー像とシートの位置関係について、ターゲットファームウェアの制御、画像シミュレータの解析結果が正しく反映されたものを表示することができる。
【０１０５】
つまり、システムを構成するシミュレータ間での時刻同期処理を必要最小限の仮想時刻間隔で行いつつ、必要なシミュレーション情報について情報の変化を仮想時刻上の正確な時刻で伝達することができる。
【０１０６】
なお、本実施形態では配線定義情報１１９として２次転写部でのシート上への画像転写処理に関連する信号のみを例示的に定義しているが、実際のファームウェア検証のためのシミュレーションシステムでは他に多くの信号を定義する必要がある。しかし、これらのうち検証のために時刻同期精度が必要な信号について同期時刻補正トリガとして定義することより、基準同期間隔を比較的大きくとることが可能になる。このため、全体のシミュレーション速度の低下を避けることができる。
【０１０７】
以上のような構成により、高精度のシミュレーションをパフォーマンスを犠牲にすることなく実現できる。
【０１０８】
特に、同期時刻補正部は、シミュレーションシステムを構成する全シミュレータを同期補正対象シミュレータとすることにより、補正対象の同期時刻に至るシミュレーション動作を正確に再現させることができる。
【０１０９】
各シミュレータの状態復帰部は、外部からの状態保存指示に応じて任意の時点でのシミュレーション情報を保存するので、簡単な処理でシステムを構成する各シミュレータのシミュレーション状態復帰を正確に実行できる。
【０１１０】
（第２実施形態）
第１実施形態では、同期時刻補正部１１７による同期時刻補正処理において同期時刻補正トリガとして設定されている事象発生時に全シミュレータに対してシミュレーション状態復帰と同期時刻補正トリガの事象発生までのシミュレーション実行を指示している。
【０１１１】
しかし、同期時刻補正トリガの事象が発生したシミュレータは当該事象発生時刻で停止しているため、シミュレータの再実行は不要と考えられる。
【０１１２】
そこで、本実施形態においては、同期時刻補正部１１７による同期時刻補正処理において同期時刻補正トリガの事象発生シミュレータ以外のシミュレータを対象にシミュレーション状態復帰と同期時刻補正トリガの事象発生までのシミュレーション実行を指示する。
【０１１３】
シミュレーションシステムの構成、同期時刻補正部１１７の処理フロー以外の各機能の処理は第１実施形態と同じであるため説明は省略する。
【０１１４】
図１７に、本実施形態における同期時刻補正部１１７の処理のフローチャートを示す。
【０１１５】
本実施形態における同期時刻補正部１１７の処理のフローチャートは、第１実施形態における同期時刻補正部１１７の処理のフローチャート（図１５）とほぼ同じである。異なる点は、Ｓ１７０６におけるシミュレーション状態復帰指示と、Ｓ１７０７における同期補正トリガ事象発生時刻までのシミュレーション実行指示の対象シミュレータが同期補正トリガ事象発生シミュレータ以外のシミュレータになっていることである。配線部１１５はトリガ事象発生時に事象発生シミュレータの情報を通知する。これにより同期時刻補正部１１７はシミュレーション状態を復帰させ、同期時刻補正トリガの事象発生までシミュレーション実行を指示する対象のシミュレータを判断することができる。
【０１１６】
以上のような同期時刻補正部１１７による処理によって同期時刻補正処理をより効率良く実施することができる。
【０１１７】
（第３実施形態）
第１実施形態では、各シミュレータにおけるシミュレーション状態復帰のためのシミュレーション情報保存処理は、同期実行管理部１１６による１同期分の処理開始前に同期時刻補正部１１７から全シミュレータに対する指示によって行われている。本実施形態においては、シミュレーション情報保存処理を各シミュレータが所定仮想時間のシミュレーション実行を指示される毎に実行するように構成する。
【０１１８】
シミュレーションシステムの構成、各シミュレータのシミュレーション実行部の基本動作フロー、同期実行管理部１１６の処理フロー、同期時刻補正部１１７の処理フロー以外の各機能の処理は第１実施形態と同じであるため説明は省略する。
【０１１９】
図１８に、本実施形態における各シミュレータのシミュレーション実行部の基本動作のフローチャートを示す。第１実施形態と異なるのは、外部からシミュレーション実行時間指定でシミュレーション実行開始を指示された場合、シミュレーション実行に先立ちＳ１８０５においてシミュレーション情報の保存処理を実行することである。図１９に、本実施形態における同期実行管理部１１６の処理のフローチャートを示す。本実施形態における同期実行管理部１１６の処理は、第１実施形態における図１２に比較して簡略化されている。Ｓ１９０１の全シミュレータへの１同期分の処理実行開始指示と、Ｓ１９０２の同期時刻補正部１１７からの全シミュレータのシミュレーション終了通知待ちだけの処理になる。
【０１２０】
図２０に、本実施形態における同期時刻補正部１１７の処理のフローチャートを示す。図２０では、図１５におけるＳ１５０２の各シミュレータに対する情報保存指示、Ｓ１５０３の同期実行管理部１１６に対する同期実行準備完了通知処理がなくなっている。この部分以外は、第１実施形態の図１５と同様であるため、同じ処理については同じ符号を付して説明を省略する。
【０１２１】
以上のように、シミュレーション情報保存処理を各シミュレータが所定仮想時間のシミュレーション実行を指示される毎に実行するように構成することにより、同期部１１４の処理が簡略化される。また、同期処理毎の同期部１１４から各シミュレータへのシミュレーション情報保存指示伝達が不要になるため、シミュレーションをより効率良く実行することができる。
【０１２２】
各シミュレータは同期コントローラからのシミュレーション実行指示に応じてその時点のシミュレーション情報を保存した後にシミュレーションを開始するので、シミュレーション状態復帰処理におけるシミュレータ間の連携処理をより簡潔にできる。
【０１２３】
（第４実施形態）
第３実施形態では、各シミュレータにおけるシミュレーション情報保存処理は、１同期分の処理開始前に当該シミュレータにおける全シミュレータ情報に対して行われた。しかし、シミュレーション情報のサイズが大きい場合に全シミュレーション情報を保存することはシミュレーション実行効率に悪影響を及ぼす恐れがある。
【０１２４】
そこで、本実施形態においては、各シミュレータによるシミュレーション情報保存処理を、シミュレーション実行中に当該シミュレーション情報が変化する時点で変化するシミュレーション情報に対してのみ実行するようにしている。シミュレーションシステムの構成、各シミュレータのシミュレーション実行部の基本動作フロー以外の各機能の処理は第１実施形態と同じであるため説明は省略する。
【０１２５】
図２１に、本実施形態における各シミュレータのシミュレーション実行部の基本動作のフローチャートを示す。
【０１２６】
第３実施形態におけるシミュレーション実行部の処理と異なるのは、指定時間のシミュレーション実行開始時にＳ２１０５において全てのシミュレーション情報を保存するのではなく、シミュレーション実行によって必ず変化する情報のみを保存する点である。Ｓ２１０８においては、シミュレーション実行開始後、各情報に対して最初の情報変化発生時に当該情報の保存を実行する。最初の情報変化時の保存については、更新済みフラグを使用する等、一般的な処理で実現可能である。
【０１２７】
このような処理を、ＣＰＵシミュレータ１０１で説明すると、シミュレーション情報のうち、擬似レジスタ１１２、実行サイクル数１１３の情報についてはシミュレーション実行によって必ず変化が発生するためＳ２１０５において保存される。そして、擬似メモリ１１０、擬似Ｉ／Ｏ１１１の情報についてはシミュレーション実行中に変化が発生した領域についてのみシミュレーション実行前の値を保存する処理をＳ２１０８で実行する。
【０１２８】
以上のように、シミュレーション情報保存処理において、各シミュレータにおいて変化発生時に差分情報のみを保存することで、シミュレーションをより効率良く実行することができる。
【０１２９】
（第５実施形態）
第３実施形態では、各シミュレータにおけるシミュレーション情報保存処理は、１同期分の処理開始前に行われている。
【０１３０】
ここで、同期実行管理部１１６による基本的な同期処理において１基準同期間隔のシミュレーションに必要な実処理時間は、シミュレータの種類、及び、シミュレーションの状態によって異なる。図９に模式的に示すとおり、処理が早く終わったシミュレータは他の全てのシミュレータによる１基準同期間隔の処理が終了するまでシミュレーションを停止して待つことになる。
【０１３１】
そこで、本実施形態においては、各シミュレータによるシミュレーション情報保存処理を１同期分の処理終了後に実行するようにして処理の効率を向上させる。
【０１３２】
シミュレーションシステムの構成、各シミュレータのシミュレーション実行部の基本動作フロー以外の各機能の処理は第１実施形態と同じであるため説明は省略する。
【０１３３】
図２２に、本実施形態における各シミュレータのシミュレーション実行部の基本動作のフローチャートを示す。
【０１３４】
第３実施形態では指定時間のシミュレーション実行開始直後にＳ１８０５においてシミュレーション情報を保存していた。これに対し、本実施形態においては指定仮想時間のシミュレーション実行終了直後にＳ２２０８においてシミュレーション情報を保存し、その後にＳ７０８にて外部にシミュレーションの中断を報知する。
【０１３５】
このように、シミュレーション情報保存処理をシミュレーション終了後に実行することで、所定仮想時間のシミュレーションを終了して他のシミュレータの処理終了待ち状態のシミュレータにおいて待ち時間内でシミュレーション情報の保存が可能になる。この方法によれば、処理時間が長いシミュレータとシミュレーション情報の保存処理時間が長いシミュレータが異なる場合には、シミュレーションシステム全体における処理効率を向上させることができる。特に、シミュレーションシステムの実行環境がマルチＣＰＵ構成の場合のように各シミュレータの処理を完全に並列処理できる場合に、より効果が大きくなる。
【０１３６】
（第６実施形態）
第１実施形態において同期時刻補正部１１７は、基本的な同期処理での一基準同期間隔分のシミュレーション開始時に、必ず全シミュレータに対してシミュレーション情報の保存指示を出すように構成されている。
【０１３７】
しかし、同期補正トリガ定義部１１８に同期補正定義が無い場合には、シミュレーション情報の保存処理は必要の無い処理であり、不要な処理のためにシミュレーションシステム全体のシミュレーション実行に対して負荷を増やすことになる。
【０１３８】
そこで、本発明の第６実施形態においては、同期時刻補正部１１７による同期時刻補正処理において、同期補正トリガ定義部１１８に同期補正定義が無い場合にはシミュレータに対するシミュレーション情報の保存指示を出さない。
【０１３９】
シミュレーションシステムの構成、同期時刻補正部１１７の処理フロー以外の各機能の処理は第１実施形態と同じであるため説明は省略する。
【０１４０】
図２３に、本実施形態における同期時刻補正部１１７の処理のフローチャートを示す。Ｓ２３０１において同期補正トリガ定義部１１８に定義された同期補正トリガが存在するかを確認し、同期補正トリガの定義が存在しない場合にはＳ２３０９の全シミュレータのシミュレーション実行終了待ちに進む。この処理以外は、第１実施形態の図１５と同様であるため、同じ処理については同じ符号を付して説明を省略する。
【０１４１】
以上のような同期時刻補正部１１７による処理によって同期時刻補正処理をより効率良く実施することができる。つまり同期時刻補正部は、同期補正トリガ定義部による同期補正トリガの定義が一つ以上定義されている場合にのみシミュレーション状態の保存を指示するので、不必要な同期時刻補正処理の実行を防ぐことができる。
【０１４２】
（第７実施形態）
第１実施形態では、同期補正トリガ定義部１１８は、コンピュータシステム２００のハードディスク２０９の設定データ２０９ｂのひとつとして格納されるユーザ作製の定義ファイルに基づきトリガ条件を定義するように構成されている。
【０１４３】
しかし、同期時刻補正処理においては、各シミュレータのシミュレーション状態を直前の同期処理開始前まで戻して再実行させることになるため、シミュレーションシステム全体のシミュレーション実行に対して負荷を増やすことになる。その一方で、同一の事象についてシミュレータ間で必要な時刻同期精度が変化する場合がある。すなわち、同じ事象に対して、シミュレータ間で高い時刻同期が必要な状況と比較的粗い時刻同期で十分な状況とが、シミュレーション実行中に変化する場合がある。
【０１４４】
例えば、プリンタ３００におけるレジセンサ３１５の信号について、ターゲットファームウェアの制御の中で高い時刻精度が必要なのはシート搬送制御を実行している期間である。それ以外の、プリンタ立上げ時における機内の残留紙の確認、機内残留紙の自動排紙動作中における紙詰まり確認においてはレジセンサ３１５の信号変化に対するタイミング精度は比較的粗くても問題が無い。或いは、２次転写部へのシート送り込み後の紙詰まり確認等におけるレジセンサ３１５の監視においてはレジセンサ３１５の信号変化に対するタイミング精度は比較的粗くても問題が無い。
【０１４５】
したがって、同期補正トリガ定義部１１８による同期補正トリガをより限定的なものにできれば、シミュレーション上の必要な状況のみで同期時刻補正部１１７による同期時刻補正処理を実行させることができ、より効率的にシミュレーションを実施できる。
【０１４６】
そこで、本実施形態では個々の同期補正トリガを複数のシミュレーション情報の組合わせで定義することで、同期補正トリガ条件を限定するようにしている。
【０１４７】
図２４に、本実施形態における同期補正トリガ定義部１１８によるトリガ定義の一例を示す。第１実施形態における図１３との違いは、（トリガＩＤ）として同じ値の項目が複数設定されていることである。これは、同じ（トリガＩＤ）の項目をひとつのトリガ条件の要素として扱うことを意味し、（トリガＩＤ）が同じ値の項目全てが成立した場合に（トリガＩＤ）のトリガ条件が成立することを定義している。図２４の例では（トリガＩＤ）が２の関連付けられた（信号ＩＤ）７の信号の（信号値）が１で、かつ、（信号ＩＤ）４の信号の（信号値）が１で、かつ、（信号ＩＤ）２の信号の（信号値）が１になったときにトリガ条件が成立することを意味する。
【０１４８】
上記の定義において、配線定義情報１１９の配線定義（図８）での（トリガ）は（トリガＩＤ）に関係なく（信号ＩＤ）で対象になっている全ての信号が１に設定される。
【０１４９】
本実施形態における同期時刻補正部１１７の処理フローは、第１実施形態における図１５のフローチャートと同じである。Ｓ１５０４のトリガ事象発生チェックにおいて図２４の例では（信号ＩＤ）が２、４、７の何れの変化事象発生によってもＳ１５０５に進み、Ｓ１５０５では同一の（トリガＩＤ）の項目の全てが事象発生を示している場合にＳ１５０６に進む。
【０１５０】
以上のような処理により、例えばプリンタ３００のファームウェアの検証システムの事例において、レジセンサ３１５への変化条件に加えて例えばターゲットファームウェア内の画像形成制御中であることを示す変数が所定の値である条件を設定する。これにより、画像形成制御中におけるレジセンサ３１５への変化のときのみ同期時刻補正処理が働くことになり、同期時刻補正処理をより効率良く実施することができる。
【０１５１】
（第８実施形態）
第７実施形態では、個々の同期補正トリガを複数のシミュレーション情報の組合わせで定義することで、同期補正トリガ条件を限定し、不要な同期時刻補正処理を行わないようにしている。
【０１５２】
本実施形態においては、同期補正トリガ定義部１１８が、同期補正トリガ情報を設定し、解除するためのユーザインタフェースを有し、ユーザインタフェースを介して同期補正トリガ定義をシミュレーション実行中にオペレータによって設定、解除する。これにより、より効率的な運用が図れるようにしている。
【０１５３】
図２５に、本実施形態におけるシミュレーションシステムの構成を示す。第１実施形態における図１と、同じ番号の構成は同じ機能を持つが、同期補正トリガ定義部１１８にＧＵＩ１４２を有するところが異なる。
【０１５４】
ＧＵＩ１４２は、ＣＲＴ、ＬＣＤなどの表示装置２０７ａ上に、ユーザによる同期補正トリガの設定画面を提示し、入力装置２０５を使用してユーザが設定したトリガ条件を、入力インターフェース２０４を介して受け取る。
【０１５５】
本実施形態においては、トリガ条件の初期設定は第１実施形態と同様に予め所定の定義ファイルでユーザにより設定されており、設定された定義条件の有効、無効をＧＵＩを介してシミュレーション実行中にユーザが変更できる。
【０１５６】
図２６に、本実施形態における同期補正トリガ定義の有効／無効を指定するための画面表示の例としてＭｉｃｒｏｓｏｆｔ社のオペレーティングシステムであるＷｉｎｄｏｗｓ（登録商標）上でのウインドウ表示の例で示す。
【０１５７】
２６０１はトリガＩＤの表示欄、２６０２は信号名の表示欄、２６０３は条件の表示欄、２６０４は有効／無効を設定するチェックボックス、２６０５は適用ボタン、２６０６はＯＫボタン、２６０７はキャンセルボタンである。
【０１５８】
トリガＩＤ表示欄２６０１は、同期補正トリガ定義部がユーザが用意した定義ファイルから読み取ったトリガ条件を定義する際に設定設定する（トリガＩＤ）を表示する。信号名欄２６０２は、ユーザ定義ファイルにおいてユーザが定義した信号名を表示する。条件欄２６０３は、ユーザ定義ファイルによってトリガ条件として設定された信号の値を表示する。チェックボックス欄２６０４は各同期補正トリガ定義を有効とするかどうかのチェックを設定する。ユーザは設定切換えに際して、マウス等を使用して対象となるトリガ定義のチェックボックスにＧＵＩ上のポインタを移動させマウスクリック等の操作を行うことにより、そのチェックボックスのチェックマークの表示が切換わる。適用ボタン２６０５は、ユーザによってボタン表示個所にポインタの移動がなされマウスクリック等の操作が行われることによってトリガ定義設定の適用を確定させるための表示である。同様の操作により、ＯＫボタン２６０６は、トリガ定義設定の確定と設定ウインドウのクローズの指定を、キャンセルボタン２６０７は設定を適用せずに設定ウインドウのクローズの指定を行わしめるための表示である。
【０１５９】
図２７に、本実施形態における同期補正トリガ定義部１１８によるトリガ定義の一例を示す。第１実施形態における図１３、及び、第７実施形態における図２４との違いは、（有効）情報が追加されていることである。（有効）情報は、ＧＵＩを介してユーザによって設定された結果が、シミュレーション実行中に随時反映されるもので、有効の場合１に設定される。なお、（有効）情報は（信号ＩＤ）毎に値を持つ。同じ値の（トリガＩＤ）に複数の（有効）情報が存在するが、ＧＵＩの設定は（トリガＩＤ）毎に設定されるため、実際の動作上は同一の（トリガＩＤ）についての（有効）情報は全て同じ値に設定される。
【０１６０】
図２８に、本実施形態における同期時刻補正部１１７の処理のフローチャートを示す。第６実施形態においては、Ｓ２３０２で、同期補正トリガ定義の有無によって同期時刻補正処理の実行判断を行ったが、ここではＳ２８０２で有効な同期補正トリガ定義の有無を確認して同期時刻補正処理の実行判断を行っている。
【０１６１】
以上のような同期時刻補正部１１７による処理によって、シミュレーションの実行条件に応じてオペレータが同期補正トリガの有効／無効を切換えることができる。オペレータによる設定で有効な同期補正トリガ定義が存在しない場合には、同期時刻補正処理を実行しないようにできるため、シミュレーションをより効率良く実施することができる。
号をマイコンシミュレータに正確なタイミングで伝達することができる。
【０１６２】
（他の実施形態）
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１６３】
また、上記実施形態中のシミュレーションシステムでは、プリンタの構成及び動作をシミュレートするシステムに特化して説明したが、本発明はこれに限定されるものではない。複数の対象物の動作をシミュレートするための複数のシミュレータと、各シミュレータの動作を同期させる同期コントローラとを含むシステムであれば、如何なる対象物の動作をシミュレートするシステムにも応用できる。
【０１６４】
なお、本発明は、前述した実施形態の機能を実現するプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置が、供給されたプログラムコードを読み出して実行することによっても達成される。したがって、本発明の機能処理をコンピュータで実現するために、コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。
【０１６５】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１６６】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスクがある。また、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【０１６７】
その他、クライアントＰＣのブラウザを用いてインターネットサイトに接続し、本発明に係るプログラムそのもの、若しくは更に自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードするという利用方法もある。また、本発明に係るプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の範疇に含まれる。
【０１６８】
また、本発明に係るプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布してもよい。所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１６９】
また、プログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０１７０】
さらに、ＰＣの機能拡張ユニットに備わるメモリに本発明に係るプログラムが書き込まれ、そのプログラムに基づき、その機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行なう場合も、本発明の範疇に含まれる。
【図面の簡単な説明】
【０１７１】
【図１】本発明に係る第１実施形態のシミュレーションシステムの機能ブロック図。
【図２】第１実施形態のシミュレーションシステムの実行環境であるコンピュータシステムの機能ブロック図。
【図３】第１実施形態のシミュレーションシステムのシミュレーション対象のプリンタの断面図。
【図４】第１実施形態のシミュレーションシステムのシミュレーション対象のプリンタの制御構成図。
【図５】第１実施形態のシミュレーションシステムのメカシミュレータの出力画面の説明図。
【図６】第１実施形態のシミュレーションシステムの画像シミュレータの出力画面の説明図。
【図７】第１実施形態のシミュレーションシステムの各シミュレータの基本制御を示すフローチャート。
【図８】第１実施形態のシミュレーションシステムの配線定義の一例を示す図。
【図９】従来のシミュレータ連携方式における連携動作の模式図。
【図１０】従来のシミュレータ連携方式における装置連携動作の第１の事例を示す図。
【図１１】従来のシミュレータ連携方式における装置連携動作の第２の事例を示す図。
【図１２】第１実施形態における同期実行管理部の制御を示すフローチャート。
【図１３】第１実施形態の同期時刻補正トリガ定義内容を示す図。
【図１４】第１実施形態の配線部の制御を示すフローチャート。
【図１５】第１実施形態の同期時刻補正部の制御を示すフローチャート。
【図１６Ａ】第１実施形態のシミュレータ連携方式における装置連携動作の事例を示す図。
【図１６Ｂ】第１実施形態のシミュレータ連携方式における装置連携動作の事例を示す図。
【図１６Ｃ】第１実施形態のシミュレータ連携方式における装置連携動作の事例を示す図。
【図１６Ｄ】第１実施形態のシミュレータ連携方式における装置連携動作の事例を示す図。
【図１７】第２実施形態の同期時刻補正部の制御を示すフローチャート。
【図１８】第３実施形態のシミュレーションシステムの各シミュレータの基本制御を示すフローチャート。
【図１９】第３実施形態の同期実行管理部の制御を示すフローチャート。
【図２０】第３実施形態の同期時刻補正部の制御を示すフローチャート。
【図２１】第４実施形態のシミュレーションシステムの各シミュレータの基本制御を示すフローチャート。
【図２２】第５実施形態のシミュレーションシステムの各シミュレータの基本制御を示すフローチャート。
【図２３】第６実施形態の同期時刻補正部の制御を示すフローチャート。
【図２４】第７実施形態の同期時刻補正トリガ定義内容を示す図。
【図２５】第８実施形態の装置シミュレーションシステムの機能ブロック図。
【図２６】第８実施形態の同期時刻補正トリガ定義部のＧＵＩの例を示す図。
【図２７】第８実施形態の同期時刻補正トリガ定義内容を示す図。
【図２８】第８実施形態の同期時刻補正部の制御を示すフローチャート。
【符号の説明】
【０１７２】
１０１  ＣＰＵシミュレータ
１０２  同期コントローラ
１０３  メカシミュレータ
１０４  画像シミュレータ
１０６  ＣＰＵシミュレータのシミュレーション実行部
１０７  ＣＰＵシミュレータのシミュレーション情報
１０８  ＣＰＵシミュレータのシミュレーション状態復帰部
１０９  ＣＰＵシミュレータのシミュレーション情報保存部
１１４  同期部
１１５  配線部
１１６  同期実行管理部
１１７  同期時刻補正部
１１８  同期補正トリガ定義部
１１９  配線定義情報
１２０  メカシミュレータのシミュレーション情報
１２１  メカシミュレータのシミュレーション状態復帰部
１２２  メカシミュレータのシミュレーション情報保存部
１３０  画像シミュレータのシミュレーション実行部
１３１  画像シミュレータのシミュレーション情報
１３２  画像シミュレータのシミュレーション状態復帰部
１３３  画像シミュレータのシミュレーション情報保存部
１３７  ＣＰＵシミュレータＩ／Ｆ
１３８  メカシミュレータＩ／Ｆ
１３９  画像シミュレータＩ／Ｆ
１４０  メカシミュレータのシミュレーション実行部
２００  コンピュータシステム
２０１  中央処理装置（ＣＰＵ）
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  入力インターフェース
２０５  入力装置
２０６  出力インターフェース
２０７  出力装置
２０７ａ  表示装置
２０７ｂ  出力装置
２０８  外部記憶装置インターフェース
２０９  外部記憶装置
２０９ａ  処理プログラム
２０９ｂ  設定データ
２０９ｃ  ファームウェア
２１０  バス
【図１】
2010128722.tif 000003
【図２】
2010128722.tif 000004
【図３】
2010128722.tif 000005
【図４】
2010128722.tif 000006
【図５】
2010128722.tif 000007
【図６】
2010128722.tif 000008
【図７】
2010128722.tif 000009
【図８】
2010128722.tif 000010
【図９】
2010128722.tif 000011
【図１０】
2010128722.tif 000012
【図１１】
2010128722.tif 000013
【図１２】
2010128722.tif 000014
【図１３】
2010128722.tif 000015
【図１４】
2010128722.tif 000016
【図１５】
2010128722.tif 000017
【図１６Ａ】
2010128722.tif 000018
【図１６Ｂ】
2010128722.tif 000019
【図１６Ｃ】
2010128722.tif 000020
【図１６Ｄ】
2010128722.tif 000021
【図１７】
2010128722.tif 000022
【図１８】
2010128722.tif 000023
【図１９】
2010128722.tif 000024
【図２０】
2010128722.tif 000025
【図２１】
2010128722.tif 000026
【図２２】
2010128722.tif 000027
【図２３】
2010128722.tif 000028
【図２４】
2010128722.tif 000029
【図２５】
2010128722.tif 000030
【図２６】
2010128722.tif 000031
【図２７】
2010128722.tif 000032
【図２８】
2010128722.tif 000033