(57)【特許請求の範囲】
【請求項１】
シミュレーション対象の装置が有する複数の構成要素の動作をそれぞれシミュレーションする複数のシミュレータと、前記複数のシミュレータを相互に接続し、該複数のシミュレータ間で信号を伝達する接続手段とを備え、前記複数のシミュレータを連携して動作させることにより前記シミュレーション対象の装置の動作をシミュレーションする情報処理装置であって、
前記接続手段は、
接続された各シミュレータからシミュレーションで出力される信号と、各信号を識別するために各シミュレータにおいて固有に割り当てられる第１信号識別情報と、各信号を識別するために前記接続手段において固有に割り当てられる第２信号識別情報とを含む信号情報を保持する保持手段と、
前記複数のシミュレータの何れかから、第１信号識別情報を付加した信号が新たに出力されると、当該出力された信号を識別するための第２信号識別情報を、前記保持手段に保持されている前記信号情報から取得する取得手段と、
前記複数のシミュレータのうち、前記取得された第２信号識別情報によって識別される信号の伝達対象のシミュレータを、予め保持された管理情報を用いて特定する特定手段と、
前記特定されたシミュレータについて、前記保持手段に保持されている信号を前記新たに出力された信号に更新する更新手段と、
前記更新された信号を前記特定されたシミュレータに対して、前記更新手段によって更新されたタイミングから直ぐに通知するか否かを判定する判定手段と、
前記更新された信号を直ぐに通知すると判定された場合には、該更新された信号を通知し、前記更新された信号を直ぐに通知しないと判定された場合には、前記特定されたシミュレータが処理可能なタイミングで該更新された信号を通知する通知手段と
を備えることを特徴とする情報処理装置。
【請求項２】
各シミュレータは、
前記保持手段に保持されている信号を処理可能なタイミングになると、前記接続手段に対して該保持されている信号の通知を要求する要求手段をさらに備え、
前記通知手段は、
前記特定されたシミュレータに対して前記更新された信号を直ぐに通知しないと判定された場合には、前記要求手段による要求に応じて、前記保持手段に保持されている信号を前記特定されたシミュレータへ通知すること
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記接続手段は、
ユーザによって設定された前記複数のシミュレータ間で信号を伝達するための配線情報から、前記接続手段において固有の第２信号識別情報と、第２信号識別情報の各々が割り当てられる信号の伝達対象のシミュレータと、を対応付けた前記管理情報を生成する生成手段をさらに備えることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記通知手段は、
前記更新された信号について、前記保持手段に保持された信号のフォーマットと、通知対象のシミュレータで処理可能な信号のフォーマットとが異なる場合には、該更新された信号のフォーマットを該通知対象のシミュレータで処理可能なフォーマットに変換して通知すること
を特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記信号情報は、
前記接続手段に接続されたシミュレータにおいて各信号のデータが格納されるメモリ領域上のアドレス情報と、各信号に割り当てられた第２信号識別情報との対応情報をさらに含み、
前記通知手段は、
前記更新された信号に対応する前記信号情報に含まれるアドレス情報によって特定されるメモリ領域のデータを更新する指示情報とともに、前記更新された信号を前記特定されたシミュレータへ通知すること
を特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
シミュレーション対象の装置が有する複数の構成要素の動作をそれぞれシミュレーションする複数のシミュレータと、前記複数のシミュレータを相互に接続し、該複数のシミュレータ間で信号を伝達する接続手段とを備え、前記複数のシミュレータを連携して動作させることにより前記シミュレーション対象の装置の動作をシミュレーションする情報処理装置の制御方法であって、
前記接続手段において、
保持手段が、接続された各シミュレータからシミュレーションで出力される信号と、各信号を識別するために各シミュレータにおいて固有に割り当てられる第１信号識別情報と、各信号を識別するために前記接続手段において固有に割り当てられる第２信号識別情報とを含む信号情報を保持する保持工程と、
取得手段が、前記複数のシミュレータの何れかから、第１信号識別情報を付加した信号が新たに出力されると、当該出力された信号を識別するための第２信号識別情報を、前記保持手段によって保持されている前記信号情報から取得する取得工程と、
特定手段が、前記複数のシミュレータのうち、前記取得された第２信号識別情報によって識別される信号の伝達対象のシミュレータを、予め保持された管理情報を用いて特定する特定工程と、
更新手段が、前記特定されたシミュレータについて、前記保持手段によって保持されている信号を前記新たに出力された信号に更新する更新工程と、
判定手段が、前記更新された信号を前記特定されたシミュレータに対して、前記更新工程において更新されたタイミングから直ぐに通知するか否かを判定する判定工程と、
通知手段が、前記更新された信号を直ぐに通知すると判定された場合には、該更新された信号を通知し、前記更新された信号を直ぐに通知しないと判定された場合には、前記特定されたシミュレータが処理可能なタイミングで該更新された信号を通知する通知工程と
を含むことを特徴とする情報処理装置の制御方法。
【請求項７】
請求項６に記載の情報処理装置の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びその制御方法に関するものである。
【背景技術】
【０００２】
画像形成装置等に組み込まれる制御ソフトウェアを実際に実機に組み込む前にその動作を検証するためには、コンピュータ等の情報処理装置を用いたシミュレーションを実行する必要がある。このようなシミュレーションを実現するために、それぞれが異なる機能を模擬する複数のシミュレータを組み合わせて、それらを連携して動作させることによって、１つのシミュレータを構築することがある。
【０００３】
このように異なるシミュレータを連携して動作させてシミュレーションを実行するためには、各シミュレータ内で扱う信号の変化を相互に連動させることが必要である。例えば、ある機械装置におけるＣＰＵの動作を模擬するシミュレータと、当該ＣＰＵによる制御対象のユニットを模擬するメカシミュレータとを組み合わせる場合には、それらのシミュレータ間で伝達される制御信号がその一例として挙げられる。具体的には、ＣＰＵシミュレータにおける制御信号がメインモータの駆動を指示する信号値に変化した場合に、メカシミュレータにおける制御信号の信号値もメインモータの駆動を示す値に変化させる必要がある。これにより、メカシミュレータは、当該制御信号の信号値の変化に応じて当該モータの駆動状態を変化させるシミュレーションを実行する。
【０００４】
異なる複数のシミュレータを組み合わせて、それらを連携して動作させるシミュレーションシステムにおいて、複数のシミュレータ間で信号をやりとりする手法としては、例えば、特許文献１及び２の手法が提案されている。特許文献１では、複数のシミュレータがアクセス可能な共通データ領域を統合シミュレーションシステム内に設け、当該共通データ領域を介して複数のシミュレータ間で信号の授受を行うとともに、各シミュレータのシミュレーション時刻を同期させる手法が提案されている。
【０００５】
また、特許文献２では、イベントとアクションとの関連を予め定義するとともに、複数のシミュレータを接続するシミュレータ接続部が、当該定義に基づいて各シミュレータにアクションを指示する手法が提案されている。当該シミュレータ接続部は、イベント通知に応じて、当該イベント通知に関連して定義されたアクションを実行するように、当該定義情報に定められたシミュレータへ指示する。例えば、イベントをあるシミュレータにおける信号値の変化、アクションを別のシミュレータにおける信号値の変更と定義することによって、異なるシミュレータ間で信号値の変化を連動させることができ、複数のシミュレータを連携して動作させることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−３５０５４９号公報
【特許文献２】特開平１１−３２７９５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の従来技術には、以下のような問題がある。例えば、特許文献１及び２の何れの手法においても、複数のシミュレータを接続し、連携させるために、各シミュレータにおいて他のシミュレータとの接続用の外部インタフェースの仕様を合わせる必要がある。このため、各シミュレータにおける外部インタフェースの仕様が異なる場合には、複数のシミュレータを接続し、連携させることが困難である。
【０００８】
さらに、特許文献２の手法では、シミュレータ接続部は、何れかのシミュレータから信号の変化を示す情報を受信するごとに、当該信号を使用する他のシミュレータに対して、当該他のシミュレータの状況と無関係に、受信した当該情報を伝達する。この場合、受信側のシミュレータが当該信号を参照しないタイミングであるにもかかわらず情報が送信されると、当該受信側のシミュレータの負荷が増大し、シミュレーション速度が低下するおそれがある。
【０００９】
本発明は、上述の問題に鑑みてなされたものであり、複数のシミュレータを連携してシミュレーションを行う場合に、各シミュレータの外部インタフェースの仕様の自由度を保持しつつ、シミュレーション速度の低下を防止する情報処理装置を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明は、例えば、情報処理装置として実現できる。情報処理装置は、シミュレーション対象の装置が有する複数の構成要素の動作をそれぞれシミュレーションする複数のシミュレータと、複数のシミュレータを相互に接続し、複数のシミュレータ間で信号を伝達する接続手段とを備え、複数のシミュレータを連携して動作させることによりシミュレーション対象の装置の動作をシミュレーションする情報処理装置であって、接続手段は、接続された各シミュレータからシミュレーションで出力される信号と、各信号を識別するために各シミュレータにおいて固有に割り当てられる第１信号識別情報と、各信号を識別するために接続手段において固有に割り当てられる第２信号識別情報とを含む信号情報を保持する保持手段と、複数のシミュレータの何れかから、第１信号識別情報を付加した信号が新たに出力されると、当該出力された信号を識別するための第２信号識別情報を、保持手段に保持されている信号情報から取得する取得手段と、複数のシミュレータのうち、取得された第２信号識別情報によって識別される信号の伝達対象のシミュレータを、予め保持された管理情報を用いて特定する特定手段と、特定されたシミュレータについて、保持手段に保持されている信号を新たに出力された信号に更新する更新手段と、更新された信号を特定されたシミュレータに対して、更新手段によって更新されたタイミングから直ぐに通知するか否かを判定する判定手段と、更新された信号を直ぐに通知すると判定された場合には、更新された信号を通知し、更新された信号を直ぐに通知しないと判定された場合には、特定されたシミュレータが処理可能なタイミングで、更新された信号を通知する通知手段とを備えることを特徴する。
【発明の効果】
【００１１】
本発明によれば、例えば、複数のシミュレータを連携してシミュレーションを行う場合に、各シミュレータの外部インタフェースの仕様の自由度を保持しつつ、シミュレーション速度の低下を防止する情報処理装置を提供できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態に係るシミュレーションシステム１００の機能的なブロック図の一例である。
【図２】第１の実施形態に係るシミュレーションシステム１００が実装される情報処理装置２００の機能的なブロック図の一例である。
【図３】第１の実施形態に係るシミュレーションシステム１００によるシミュレーション対象の画像形成装置３００に関する概略的な断面図の一例である。
【図４】第１の実施形態に係るシミュレーションシステム１００によるシミュレーション対象の画像形成装置３００に関する機能的なブロック図の一例である。
【図５】第１の実施形態に係る配線定義情報１２４の一例を示す図である。
【図６】第１の実施形態に係るＣＰＵシミュレータ１０２における外部への通知内容及び外部からの指示内容の一例を示す図である。
【図７】第１の実施形態に係る用紙搬送シミュレータ１０３における外部への通知内容及び外部からの指示内容の一例を示す図である。
【図８】第１の実施形態に係る用紙搬送シミュレータ１０３によるシミュレーション結果の画面表示の一例を示す図である。
【図９】第１の実施形態に係るプロセスユニットシミュレータ１０４及び画像シミュレータ１０５における外部への通知内容及び外部からの指示内容の一例を示す図である。
【図１０】第１の実施形態に係る信号管理情報１１８の内容の一例を示す図である。
【図１１】第１の実施形態に係る各シミュレータに対応する信号情報１１３〜１１６の内容の一例を示す図である。
【図１２】第１の実施形態に係る信号管理部１１７による信号伝達処理の手順を示すフローチャートである。
【図１３】第１の実施形態に係る各シミュレータＩ／Ｆ１０７〜１１０による信号伝達処理の手順を示すフローチャートである。
【図１４】第１の実施形態に係るＣＰＵシミュレータ１０２用のシミュレータＩ／Ｆ１０７によるリードイベントに対する処理手順を示すフローチャートである。
【図１５】第２の実施形態に係るシミュレータＩ／Ｆ１０７が保持する信号情報１１３に含まれる仮想メモリ情報の内容の一例を示す図である。
【図１６】第２の実施形態に係るＣＰＵシミュレータ１０２用のシミュレータＩ／Ｆ１０７によるリードイベントに対する処理手順を示すフローチャートである。
【図１７】図１０に示す信号管理情報１１８の変形例を示す図である。
【発明を実施するための形態】
【００１３】
以下に本発明の一実施形態を示す。以下で説明される実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の実施形態によって限定されるわけではない。
【００１４】
［第１の実施形態］
＜情報処理装置２００の構成＞
以下では、図１乃至図１４を参照して、本発明における第１の実施形態について説明する。まず、図２を参照して、本実施形態に係る情報処理装置２００の構成例について説明する。情報処理装置２００は、例えば、パーソナルコンピュータやワークステーション等のコンピュータシステムとして実現できる。なお、本発明に係るシミュレーションシステムは、情報処理装置２００で実行されるプログラムとして実現される。
【００１５】
中央演算処理装置（ＣＰＵ２０１）は、バス２２０を介して情報処理装置２００内の各ユニット（２０２〜２０９）にアクセスしてそれらの動作を制御する。ＲＯＭ２０２は、ＣＰＵ２０１からバス２２０を介してアクセス可能な読み出し専用メモリである。ＲＡＭ２０３は、読み書き可能なメモリである。入力インタフェース２０４は、キーボード、マウス、タブレット等の入力装置２０５を介してユーザからの入力を受け付ける。出力インタフェース２０６は、出力装置２０７に対してデータの表示や出力を行うためのインタフェースである。出力装置２０７は、ＣＲＴ、ＬＣＤ等の表示装置２０７ａ、プリンタ、プロッタ等の出力装置２０７ｂを含む。外部記憶装置インタフェース２０８は、外部記憶装置２１０に対するデータの入出力を行うインタフェースである。外部記憶装置２１０は、ハードディスク（ＨＤＤ）２０９の他に、ＦＤ、ＣＤ‐ＲＯＭ、ＭＯ、ＣＦ等でもよい。ＨＤＤ２０９を含む外部記憶装置２１０には、本発明に係るシミュレーションシステムの各機能を情報処理装置２００上で実現するための処理プログラム２０９ａが格納される。外部記憶装置２１０には、さらに、シミュレーション対象となる装置の情報を含むシミュレーション用の各種の設定データ２０９ｂ、及びシミュレーション対象の装置に実際に組み込まれる制御用のソフトウェア（ファームウェア）２０９ｃが格納される。
【００１６】
本実施形態において、情報処理装置２００においてシミュレーションが実行される際には、処理プログラム２０９ａ、各種の設定データ２０９ｂ、及びファームウェア２０９ｃが外部記憶装置２１０からＲＡＭ２０３にロードされる。ＣＰＵ２０１はＲＡＭ２０３にロードされたこれらのデータを用いて、後述するシミュレーションを実行する。
【００１７】
＜シミュレーション対象の画像形成装置３００の構成＞
次に、図３を参照して、本実施形態に係るシミュレーションシステムによるシミュレーション対象となる電子写真方式の画像形成装置３００の概略的な構成について説明する。画像形成装置３００は、イエロー、マゼンタ、シアン、ブラックの各色のトナー画像が形成される像担持体として、４個の感光ドラム３０３ａ、３０３ｂ、３０３ｃ、３０３ｄ（３０３ａ〜ｄ）を備える。感光ドラム３０３ａ〜ｄは直列に配置され、各感光ドラム３０３ａ〜ｄの周囲には、１次帯電器３０４ａ〜ｄ、現像器３０６ａ〜ｄ及びクリーニング装置３０７ａ〜ｄがそれぞれ配置される。また、各感光ドラム３０３ａ〜ｄの上方には、露光装置３０５ａ〜ｄが配置される。一方で、各感光ドラム３０３ａ〜ｄの下方には、中間転写ベルト（ＩＴＢ）３０１が配置される。
【００１８】
ＩＴＢ３０１は、ＩＴＢを駆動するローラ３０８、３０９、３１０の周囲に張設されるとともに、これらのローラの駆動によって感光ドラム３０３ａ〜ｄと略同速で矢印方向に回転する。ＩＴＢ３０１は、感光ドラム３０３ａ〜ｄと各１次転写ローラ３０２ａ〜ｄとによって挟持される。また、画像形成装置３００は、用紙格納カセット３１２、ピックアップローラ３１３、レジ搬送ローラ３１４、及びレジセンサ３１５から成る給紙搬送機構を備える。さらに、画像形成装置３００は、レジ搬送ローラ３１４の下流に、ＩＴＢ３０１と当接する２次転写ローラ３１６、及び定着装置３１７から成る印字搬送機構、並びに排紙ローラ３１８、及び排紙トレイ３１９から成る排紙搬送機構を備える。
【００１９】
次に、図４を参照して、画像形成装置３００の画像形成に係る各ブロックの機能について説明する。画像形成装置３００は、画像形成機能を制御するプリンタ主制御部４０１と、画像データを生成するビデオコントローラ４０２とを備える。プリンタ主制御部４０１は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ゲート素子等を備える。なお、プリンタ主制御部４０１による主要な制御は、プリンタ主制御部４０１内部のＲＯＭに格納された制御用のソフトウェア（ファームウェア）を、ＣＰＵがＲＡＭに読み出して実行することによって実現される。
【００２０】
また、画像形成装置３００は、メインモータ４０４、ピックアップソレノイド４０６、レジクラッチ４０７、定着排紙モータ４０３といった各種のアクチュエータを備える。さらに、画像形成装置３００は、図３に示した定着装置３１７に加えてプロセスユニット４０５を備える。ここで、定着排紙モータ４０３は、定着装置３１７の定着ローラ４１０、排紙ローラ３１８の駆動源である。一方、メインモータ４０４は、ピックアップローラ３１３、レジ搬送ローラ３１４、２次転写ローラ３１６、及びプロセスユニット４０５のメカ機構４１５の駆動源である。プリンタ主制御部４０１は、定着排紙モータ４０３及びメインモータ４０４の駆動を制御するとともに、ピックアップソレノイド４０６及びレジクラッチ４０７の動作を制御する。これにより、プリンタ主制御部４０１は、各種ローラの動作を介して用紙搬送動作を制御する。
【００２１】
定着装置３１７は、定着ローラ４１０を加熱するメインヒータ４０８、サブヒータ４０９、並びに、ＩＴＢ３０１に形成されたトナー画像が転写された用紙を加熱及び加圧する定着ローラ４１０を備える。定着装置３１７は、定着ローラ４１０の表面温度を検出する複数の温度センサ４１１、４１２（中央温度センサ４１１、端部温度センサ４１２）をさらに備える。
【００２２】
プロセスユニット４０５は、光学ユニット４１３、高圧ユニット４１４、及びメカ機構４１５を備える。光学ユニット４１３は、感光ドラム３０３ａ〜ｄ、１次帯電器３０４ａ〜ｄ、現像器３０６ａ〜ｄ、露光装置３０５ａ〜ｄ、ＩＴＢ３０１、１次転写ローラ３０２ａ〜ｄ、２次転写ローラ３１６の各装置に光学的な作用を発生させる。一方で、高圧ユニット４１４は、これらの各装置に電気的な作用を発生させる。メカ機構４１５は、これらの各装置に機械的な駆動を与える。
【００２３】
＜画像形成装置３００の動作＞
次に、上記の画像形成装置３００における画像形成の概略的な手順について説明する。画像形成装置３００において画像形成を行う場合、プリンタ主制御部４０１は、光学ユニット４１３における画像の副走査方向（用紙の搬送方向）の同期信号である垂直同期信号（／ＴＯＰ信号）を所定のタイミングでビデオコントローラ４０２へ出力する。また、プリンタ主制御部４０１は、光学ユニット４１３における画像の主走査方向の同期信号である水平同期信号（／ＢＤ信号）を所定のタイミングでビデオコントローラ４０２へ出力する。これらの同期信号に基づいて、ビデオコントローラ４０２は画像信号をプリンタ主制御部４０１へ出力する。例えば、ビデオコントローラ４０２は、／ＴＯＰ信号を基準として、当該／ＴＯＰ信号を出力した後に所定のタイミングにおいて、各色の画像信号をプリンタ主制御部４０１に対して出力する。プリンタ主制御部４０１は、／ＴＯＰ信号に同期してプロセスユニット４０５を制御することによって、露光、現像、１次転写等の周知の画像形成プロセスを順次実施させる。これにより、ＩＴＢ３０１上にトナー画像が形成される。
【００２４】
プリンタ主制御部４０１は、さらに、各アクチュエータを制御することによって、用紙３１１の搬送を制御する。具体的には、プリンタ主制御部４０１は、用紙格納カセット３１２から用紙を給紙した後、レジセンサ３１５に用紙先端が達したことを検知すると、当該タイミングにおいて用紙３１１を一時的に停止させる。プリンタ主制御部４０１は、／ＴＯＰ信号を基準とした所定のタイミングにおいて、レジセンサ３１５の位置に停止した用紙３１１の２次転写部への給送を開始する。これにより、プリンタ主制御部４０１は、２次転写部において、ＩＴＢ３０１に形成されたトナー画像を用紙３１１上の所定の位置に転写させる。さらに、プリンタ主制御部４０１は、温度センサ４１１、４１２による温度の検知結果に基づいて２つのヒータ４０８、４０９を制御することによって、定着ローラ４１０の温度を定着用の所定温度に制御する。その後、プリンタ主制御部４０１は、トナー画像が２次転写された用紙３１１を定着装置３１７に給送して、当該トナー画像を用紙３１１上に定着させる制御を行う。
【００２５】
以下で説明するように、本実施形態に係るシミュレーションシステムは、画像形成装置３００におけるプリンタ主制御部４０１のＣＰＵ（以下では、情報処理装置２００のＣＰＵ２０１と区別するために、「ターゲットＣＰＵ」と称する。）で実行されるファームウェアの動作を検証及び評価するためのシミュレーションシステムである。具体的には、当該シミュレーションシステムは、当該ファームウェアによる命令の実行、当該命令の実行に応じた用紙の搬送、及び画像形成のための各負荷の動作を、情報処理装置２００上で模擬する。また、当該シミュレーションシステムは、実機と同様に、各負荷から当該ファームウェアに対してフィードバック信号を返す動作についても模擬する。
【００２６】
＜シミュレーションシステム１００の構成＞
次に、図１を参照して、情報処理装置２００で実現されるシミュレーションシステム１００の機能的な構成の一例について説明する。本実施形態において、シミュレーションシステム１００は、画像形成装置３００の各部を模擬する複数のシミュレータとして、ＣＰＵシミュレータ１０２、用紙搬送シミュレータ１０３、プロセスユニットシミュレータ１０４、及び画像シミュレータ１０５を有する。さらに、シミュレーションシステム１００は、これら複数のシミュレータを接続し、それらを連携して動作させるシミュレータ接続部１０１を有する。
【００２７】
本実施形態において、シミュレーションシステム１００は、上記のように、画像形成装置３００の構成要素のそれぞれに対応する個別のシミュレータを有する。これは、画像形成装置３００の構成要素ごとに、シミュレータの目的及び実現方式が異なるためである。このような構成は、画像形成装置３００のファームウェアの動作の検証用及び評価用のシミュレータとして、その作成、運用及び保守の何れの観点からも合理的である。
【００２８】
シミュレータ接続部１０１は、異なる機能に対応した複数のシミュレータを接続し、連携して動作させることによって、情報処理装置２００上で１つのシミュレーションシステムとしてそれらを動作させる役割を有する。シミュレータ接続部１０１は、コア部１０６と、各シミュレータが接続されるＩ／Ｆ（ＣＰＵシミュレータ１０２用のシミュレータＩ／Ｆ１０７、用紙搬送シミュレータ１０３用のシミュレータＩ／Ｆ１０８、プロセスユニットシミュレータ１０４用のシミュレータＩ／Ｆ１０９、及び画像シミュレータ１０５用のシミュレータＩ／Ｆ１１０）とを有する。
【００２９】
コア部１０６は、同期モジュール１１１と配線モジュール１１２とを有する。配線モジュール１１２は、信号管理部１１７を有するとともに、信号管理部１１７によって管理される信号管理情報１１８を保持する。また、シミュレータＩ／Ｆ１０７〜１１０は、それぞれ、各シミュレータに対応する信号情報１１３〜１１６を保持する。これらの信号管理情報１１８及び信号情報１１３〜１１６については後述する。
【００３０】
本実施形態では、シミュレーションを実行する際に、ＣＰＵシミュレータ１０２、用紙搬送シミュレータ１０３、プロセスユニットシミュレータ１０４、及び画像シミュレータ１０５は、情報処理装置２００上でそれぞれ独立したプロセスとして実行される。これらの複数のシミュレータは、シミュレータ接続部１０１を介して他のシミュレータと接続するための外部Ｉ／Ｆ１１９〜１２２を有し、これらはそれぞれ異なる仕様を有していてもよい。また、本実施形態では、シミュレータ接続部１０１は、マルチスレッド構成を有する。このため、シミュレータ接続部１０１におけるコア部１０６及びシミュレータＩ／Ｆ１０７〜１１０による処理は、情報処理装置２００において別々のスレッドとして並列に実行され得る。
【００３１】
なお、外部記憶装置２１０に格納された設定データ２０９ｂには、シミュレーションシステム１００におけるシミュレーションの実行に必要な定義情報としてユーザによって予め設定される、シミュレータ構成定義情報１２３と配線定義情報１２４とが含まれる。シミュレータ構成定義情報１２３は、シミュレータ接続部１０１に接続される複数のシミュレータ（１０２〜１０５）の構成に関する定義情報である。また、配線定義情報１２４は、シミュレータ接続部１０１に接続されるシミュレータ間で信号を伝達するために使用される信号線の、シミュレータ間の配線情報を定義したものである。
【００３２】
＜シミュレーションシステム１００の動作＞
次に、情報処理装置２００において実行されるシミュレーションシステム１００の各部の動作について説明する。以下では、シミュレータ接続部１０１、ＣＰＵシミュレータ１０２、用紙搬送シミュレータ１０３、プロセスユニットシミュレータ１０４、画像シミュレータ１０５の機能及び動作について順に説明する。
【００３３】
（シミュレータ接続部１０１）
シミュレータ接続部１０１は、各種のシミュレータを相互に接続するとともに、それらを１つのシミュレーションシステム１００として連携して動作させる。これにより情報処理装置２００は、シミュレーション対象の画像形成装置３００の動作をシミュレーションする。シミュレータ接続部１０１において、コア部１０６は、ＣＰＵシミュレータ１０２、用紙搬送シミュレータ１０３、プロセスユニットシミュレータ１０４、及び画像シミュレータ１０５の間におけるデータ伝送処理及び同期処理に関する基本的な制御を行う。コア部１０６は、同期モジュール１１１と配線モジュール１１２とを用いてこれらの制御を実現する。また、シミュレータＩ／Ｆ１０７〜１１０は、コア部１０６と各シミュレータとを接続するためのインタフェースである。具体的には、シミュレータＩ／Ｆ１０７〜１１０の各々は、接続対象のシミュレータとの間で当該シミュレータの外部Ｉ／Ｆの仕様に適合した接続処理を行う。その一方で、シミュレータＩ／Ｆ１０７〜１１０の各々は、コア部１０６との間で全てのシミュレータＩ／Ｆにおいて共通の仕様に基づく接続処理を行う。
【００３４】
これらのシミュレータＩ／Ｆ用のプログラムは、処理プログラム２０９ａに含まれるシミュレータＩ／Ｆライブラリとして外部記憶装置２１０に予め格納されている。このシミュレータＩ／Ｆライブラリは、シミュレーションシステム１００を構成するシミュレータごとに用意され、ダイナミックリンクライブラリ（ＤＬＬ）として提供される。このように、シミュレータ接続部１０１に対して接続するシミュレータに対応したシミュレータＩ／Ｆライブラリを用意することによって、必要に応じて新たなシミュレータをシミュレーションシステム１００に組み込むことが可能である。
【００３５】
同期モジュール１１１は、シミュレータＩ／Ｆ１０７〜１１０から通知される情報（インターバル通知）に基づいて、シミュレーションシステム１００上の１単位時間間隔で、各シミュレータの動作を同期させる制御を実行する。ここで、本実施形態において、シミュレーションシステム１００に含まれる複数のシミュレータ１０２〜１０５は、シミュレータごとに固有の時間管理の下で、シミュレーション上の単位時間ごとに所定のシミュレーションを実行するように動作する。即ち、各シミュレータはそれぞれ固有の仮想時間で動作する。例えば、用紙搬送シミュレータにおいて、画像形成装置における２００ｍｍ／秒の速度の用紙搬送状態をシミュレーションする場合、２００ｍｍ分の用紙移動シミュレーションに対して仮想時間を１秒進める。この場合、用紙搬送シミュレータにおける仮想時間の進行は、２００ｍｍ分の用紙移動シミュレーションに要するコンピュータシステムの処理時間には関係ない。すなわち、仮想時間の進行は、実世界におけるシミュレーション対象物の動作とその動作に要する時間の関係によって決まる。そして、同じ仮想時間分のシミュレーション実行に要する処理時間はシミュレータごとに異なる。このため、これら複数のシミュレータを１つのシミュレーションシステムとして連携して動作させるために、各シミュレータは単位時間ごとに外部と同期処理を行い、同期モジュール１１１は各シミュレータの仮想時間を共通の仮想時間に同期させる処理を実行する。なお、同期モジュール１１１による同期処理は、公知の手法により実現し得るため、その詳細な説明は省略する。
【００３６】
配線モジュール１１２は、予め設定された配線定義情報１２４に基づいて、シミュレータＩ／Ｆ１０７〜１１０と連携して複数のシミュレータ間における信号値の伝達処理を制御する。ここで、シミュレータ間で伝送される信号（仮想信号）は、外部記憶装置２１０に格納された設定データ２０９ｂに含まれる配線定義情報１２４として予め定義されている。以下では、図５に示す表を参照して、この配線定義情報１２４における定義書式及び定義内容の一例について説明する。
【００３７】
配線定義情報１２４には、図５に示すように、仮想信号名、データサイズ、信号種別、及び初期値に加えて、各シミュレータ内で当該信号を識別（特定）するために必要な信号識別情報、Ｉ／Ｏ、論理等が含まれる。図５において、「仮想信号名」は、信号名を示す文字列として定義される。ただし、当該文字列は、配線モジュール１１２内では信号ごとに固有の数値（信号ＩＤ）に変換されて取り扱われる。「データサイズ」は、各信号のデータサイズをビット数で表す。「信号種別」は、各信号の種別を表し、Ｂはビット情報、Ｄはデジタル多値情報、及びＡはアナログ（浮動小数点）情報として定義される。また、「初期値」は、シミュレーション開始時における各信号の初期値を表す。ここで、図５において各数値表現に使用されている「０ｘ」は１６進数表記を示し、Ｃ言語の書式に準じている。なお、それ以外の数値表現は１０進数表記を示す。本実施形態における各定義書式の設定は１０進数及び１６進数のみ使用することが可能であり、数値表現の文字列の先頭に「０」が付加されている場合も８進数ではなく１０進数による定義を表す。
【００３８】
上記の各仮想信号を識別するための信号識別情報の定義は、図５に示すようにシミュレータごとに異なる。例えば、ＣＰＵシミュレータ１０２では「アドレス」及び「ｂｉｔ」、用紙搬送シミュレータ１０３では「種別」及び「個別ＩＤ（種別ごとのＩＤ）」、プロセスユニットシミュレータ１０４では「情報ＩＤ」、画像シミュレータ１０５では「機能ＩＤ」を用いて定義される。
【００３９】
ＣＰＵシミュレータ１０２における「アドレス」には、ＣＰＵシミュレータ１０２における仮想アドレス（即ち、ターゲットＣＰＵにおけるアドレスマップ上のアドレス）が定義される。また、「ｂｉｔ」は、信号種別がＢ（ビット情報）である場合にのみ有効な定義であり、アドレス内のビット位置が定義される。用紙搬送シミュレータ１０３における「種別」及び「個別ＩＤ」には、用紙搬送シミュレータ１０３内の各構成要素のモデルに関する定義情報として予め設定された情報が用いられる。図５では、「種別」には各モデルの種別を示す文字列が、「個別ＩＤ」には当該モデルごとに設定された固有の数値が定義される。
【００４０】
プロセスユニットシミュレータ１０４における「情報ＩＤ」には、プロセスユニットシミュレータ１０４の定義情報として別途設定されている、プロセスユニットシミュレータ１０４の入出力情報（信号）ごとに固有の数値がＩＤとして定義される。また、画像シミュレータ１０５における「機能ＩＤ」には、画像シミュレータ１０５の定義情報として別途設定された、画像シミュレータ１０５の機能ごとに固有の数値がＩＤとして定義される。
【００４１】
各シミュレータの「Ｉ／Ｏ」には、各シミュレータにおける各信号の入出力について、入力はＩ、出力はＯとして定義される。また、「論理」には、各シミュレータにおける各信号の論理が定義され、正論理は１、負論理は０の数値で定義される。例えば、「レジ紙有りセンサ」が１で紙有りを示す場合は正論理、０で紙有りを示す場合は負論理となる。なお、「論理」は、「信号種別」がＢ（ビット情報）である場合にのみ有効な定義である。シミュレータごとの論理に対応した仮想信号の論理変換は、シミュレータＩ／Ｆ１０７〜１１０の各々によって行われる。なお、上記の配線定義情報１２４は、各定義の文字列情報を区切り文字（スペース、タブ、改行等）で区切ったテキスト形式のファイルとして外部記憶装置２１０内に予め保存され得る。
【００４２】
なお、「２次転写高圧レベル確定」信号について、ＣＰＵシミュレータ１０２及びプロセスユニットシミュレータ１０４の「Ｉ／Ｏ」には、当該信号が双方向信号であることを示す「Ｂ」が設定されている。図５に定義された各信号の信号線は、基本的に信号をシミュレータ間で一方向に伝達可能であるが、双方向信号である信号線については、シミュレータ間で信号を双方向に伝達することができる。
【００４３】
このように、配線定義情報１２４に含まれる各シミュレータ内で使用される信号の定義情報は、シミュレータの仕様の相違に起因して、同一の信号であってもシミュレータごとに異なる。各シミュレータに対応する定義情報には、接続されるシミュレータにおいて固有の定義情報が含まれており、これらの情報の定義書式はシミュレータごとに設定される。シミュレーションシステム１００におけるシミュレーションに際し、配線モジュール１１２は、配線定義情報１２４を読み込んで、当該情報から信号管理情報１１８を生成するとともに、各シミュレータＩ／Ｆに対して、仮想信号名‐信号ＩＤ対応情報を伝達する。各シミュレータＩ／Ｆは、受け取った当該対応情報と、配線定義情報１２４とから、後述する信号情報１１３〜１１６を生成する。このような処理により、シミュレーションシステム１００は、新たなシミュレータを容易に組み込むことが可能である。なお、配線モジュール１１２が保持する信号管理情報１１８、各シミュレータＩ／Ｆが保持する信号情報１１３〜１１６、及び、シミュレータ間における仮想信号値の伝達処理の詳細については後述する。
【００４４】
（ＣＰＵシミュレータ１０２）
ＣＰＵシミュレータ１０２は、ターゲットＣＰＵの動作を情報処理装置２００上で模擬するシミュレータである。具体的には、ＣＰＵシミュレータ１０２は、外部記憶装置２１０に格納された対象装置（画像形成装置３００）のファームウェア２０９ｃをＲＡＭ２０３にロードする。また、ＣＰＵシミュレータ１０２は、ファームウェア２０９ｃに従ってＲＡＭ２０３上に擬似的に定義された、ターゲットＣＰＵのレジスタ、メモリ、入出力信号の読み出しや書き込み、各種演算等を実行する。さらに、ＣＰＵシミュレータ１０２は、これらの命令の実行とともに、ターゲットＣＰＵにおいて進行する実行サイクル数を計算する。
【００４５】
ここで、ＣＰＵシミュレータ１０２は、ファームウェア命令のシミュレーションを、コンピュータシステム上でのシミュレーション実行時間（実時間）と異なる仮想時間の下で実行する。ＣＰＵシミュレータ１０２における仮想時間は、ファームウェア命令をシミュレーションするごとに算出されるターゲットＣＰＵの実行サイクル数とターゲットＣＰＵの動作周波数によって求められる。
【００４６】
ＣＰＵシミュレータ１０２は、シミュレーションの実行に伴って発生するイベントの内容を、外部Ｉ／Ｆ１１９を介して外部へ通知するとともに、各種の指示を、当該Ｉ／Ｆを介して外部から受け付ける。以下では、図６を参照して、ＣＰＵシミュレータ１０２が外部Ｉ／Ｆ１１９を介してシミュレータ接続部１０１との間で送受信する情報の一例について説明する。図６（ａ）は、ＣＰＵシミュレータ１０２から外部Ｉ／Ｆ１１９を介してシミュレータ接続部１０１へ通知されるイベントの内容の一例を示す。ＣＰＵシミュレータ１０２は、６０２に示す発生条件が満たされると、６０１に示すイベントが発生したことを、６０３を通知内容として外部へ通知する。
【００４７】
例えば、「シミュレーション開始」及び「シミュレーション終了」は、ユーザによる操作、又は外部からの指示により、ＣＰＵシミュレータ１０２がシミュレーションの実行を開始及び終了した際に発生するイベントである。これらのイベントの発生に伴って、ＣＰＵシミュレータ１０２は、外部に対してシミュレーションの開始又は終了を通知内容６０３として通知する。
【００４８】
また、「リードアクセス」及び「ライトアクセス」は、ファームウェアのシミュレーションの実行により、所定の仮想アドレス（ターゲットＣＰＵ上のアドレス）領域からデータの読み出し及び当該領域へデータの書込みが行われる場合に発生するイベントである。（以下では、これらのイベントを「リードイベント」及び「ライトイベント」とも称する。）これらのイベントは、対象となる仮想アドレス領域に対するリード命令の実行直前、又はライト命令の実行直後に発生する。これらの発生に伴って、ＣＰＵシミュレータ１０２は、外部Ｉ／Ｆ１１９を介して外部に対してイベントの発生、読出し又は書込み対象のアドレス及びサイズ、及び読み出される値又は書き込まれる値が通知される。なお、リードイベント又はライトイベントの対象となる仮想アドレス領域としては、メモリ、アドレス空間上にマッピングされたレジスタ（ＣＰＵ周辺回路の制御レジスタ等）が一例として挙げられる。なお、配線定義情報１２４に含まれるＣＰＵシミュレータ１０２用の信号識別情報は、このような仮想アドレス領域のマッピングに従って定義される。
【００４９】
「割込み」は、外部からの指示に応じて割込みのシミュレーション実行を開始した際に発生するイベントである。当該イベントは、ファームウェアの割込みハンドラの処理開始直前にイベントが発生する。当該イベントの発生に伴って外部Ｉ／Ｆ１１９を介して外部に対して、割り込みイベントの発生と当該割込みの番号とが通知される。ここで、割込み番号は、ターゲットＣＰＵの有する各種の割込みの各々に対して予め定義された番号である。
【００５０】
「所定サイクル数実行（タイマイベント）」は、ファームウェアの実行命令シミュレーションに伴ってカウントされるターゲットＣＰＵ上の総実行サイクル数が、外部から指定されたサイクル数に到達した場合に発生するイベントである。１つの命令の実行中にサイクル数が指定値に到達した場合には、実行中の命令のシミュレーション終了後に当該イベントが発生する。当該イベントの発生に伴って外部Ｉ／Ｆ１１９を介して外部に対して、タイマイベントの発生とタイマイベント番号とが通知される。ここで、タイマイベント番号とは、タイマイベントの発生条件を指定する際にイベントごとに指定される番号である。
【００５１】
本実施形態に係るＣＰＵシミュレータ１０２は、上記の各イベントの発生を外部に通知すると、ファームウェアのシミュレーションの実行を一時的に停止する。さらに、ＣＰＵシミュレータ１０２は、外部からの実行再開指示を待って、当該シミュレーションの実行を再開する。
【００５２】
次に、図６（ｂ）は、ＣＰＵシミュレータ１０２が外部Ｉ／Ｆ１１９を介して外部から受け付ける指示の一例を示す。ここで、ＣＰＵシミュレータ１０２は、６１２を指示内容として指定情報６１３を含む指示６１１を、外部Ｉ／Ｆ１１９を介して外部から受け付ける。「シミュレーション開始」、「シミュレーション終了」、「シミュレーション一時停止」及び「シミュレーション再開」の各指示を外部Ｉ／Ｆ１１９を介して受け付けると、ＣＰＵシミュレータ１０２は、当該指示に応じた動作を実行する。「リードイベント領域指定」及び「ライトイベント領域指定」指示は、リードイベント及びライトイベントの対象となる仮想アドレス領域を指定する指示であり、当該指示により、対象となる仮想アドレス及びデータサイズが指定される。
【００５３】
「所定領域読出し」指示は、仮想アドレス領域の値の読出しを要求する指示であり、当該指示により、対象となる仮想アドレス、読出しサイズ、読み出したデータを格納する領域が指定される。ＣＰＵシミュレータ１０２は、当該指示を受け付けると、指定された仮想アドレスから指定されたサイズのデータを読み出して、指定された格納領域に書き込む。また、「所定領域書込み」指示は、仮想アドレス領域に値の書込みを要求する指示であり、当該指示により、対象となる仮想アドレス、書込みサイズ、書込み値が指定される。ＣＰＵシミュレータ１０２は、当該指示を受け付けると、指定された値を、指定された仮想アドレスに指定されたサイズで書き込む。
【００５４】
「レジスタ読出し」指示は、指定された仮想レジスタの値の読出しを要求する指示であり、当該指示により、対象となるレジスタＩＤが指定される。ここで、レジスタＩＤは、ターゲットＣＰＵが有するレジスタの各々に対してＣＰＵシミュレータ１０２が割り当てる固有の識別情報である。ＣＰＵシミュレータ１０２は、当該指示を受け付けると、レジスタＩＤによって指定された仮想レジスタの値を外部に通知する。
【００５５】
「レジスタ書込み」指示は、指定された仮想レジスタへの値の書込みを要求する指示であり、当該指示により、対象となるレジスタＩＤと書込み値が指定される。ＣＰＵシミュレータ１０２は、当該指示を受け付けると、レジスタＩＤによって指定された仮想レジスタの値を指定された値に変更する。
【００５６】
なお、本実施形態に係るＣＰＵシミュレータ１０２に対する「レジスタ読出し」及び「レジスタ書込み」指示によって指定されるレジスタは、ターゲットＣＰＵの内部に含まれるレジスタ（アドレスマップ上に定義されないレジスタ）である。このため、ＣＰＵシミュレータ１０２からアドレスマップ上に定義される周辺回路の制御レジスタ等へのアクセスは、「所定領域読出し」及び「所定領域書込み」指示に応じて行われる。
【００５７】
（用紙搬送シミュレータ１０３）
次に、用紙搬送シミュレータ１０３は、モータ、アクチュエータ、センサ等を含む画像形成装置３００の用紙搬送機構の動作と、電子写真方式で形成される画像（トナー像）の搬送を情報処理装置２００上で模擬するシミュレータである。具体的には、用紙搬送シミュレータ１０３は、シミュレーション結果を表示装置２０７ａ上に２次元又は３次元のグラフィックとして表示できるとともに、シミュレーション結果のセンサ情報を外部Ｉ／Ｆ１２０を介して外部に出力できる。また、用紙搬送シミュレータ１０３は、外部Ｉ／Ｆ１２０を介して外部から入力さえる各種の指示に応じてシミュレーションを実行することを前提としているため、外部のＣＰＵシミュレータ１０２や画像シミュレータ１０５と連携してシミュレーションを実行する。
【００５８】
以下では、用紙搬送シミュレータ１０３による具体的な処理について説明する。用紙搬送シミュレータ１０３は、予め設定された時間を１単位時間として、仮想時間上の当該単位時間ごとにモータ及びアクチュエータに関する仮想信号値を、外部Ｉ／Ｆ１２０を介して取得し、これらの動作に関する指定を行う。また、用紙搬送シミュレータ１０３は、プロセスユニットシミュレータ１０４によるシミュレーションに基づく画像形成部の画像形成状態を、外部Ｉ／Ｆ１２０を介して取得する。さらに、用紙搬送シミュレータ１０３は、モータ及びアクチュエータに関する指定した動作と、予め設定されたモータ、アクチュエータ、機構部品、用紙、及びセンサの相互作用に関する定義情報とに基づいて、単位時間経過後のそれらの状態を解析する。
【００５９】
さらに、用紙搬送シミュレータ１０３は、上記の解析処理が終了するごとに、仮想時間を１単位時間進めた上で、当該解析結果を用いて表示装置２０７ａ上のグラフィック表示を更新するとともに、外部Ｉ／Ｆ１２０を介してセンサ状態を外部へ通知する。これらの解析処理に関する情報、グラフィック表示用の画像形成装置３００の情報、及び各種初期設定情報については、設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納されている。なお、用紙搬送シミュレータ１０３において、解析の単位時間は、外部のシミュレータとの間で仮想時間の同期をとるための時間単位としても用いられる。即ち、用紙搬送シミュレータ１０３は、１単位時間のシミュレーションを実行するごとに、外部のシミュレータとの同期処理を行う。
【００６０】
以下では、図７を参照して、用紙搬送シミュレータ１０３が外部Ｉ／Ｆ１２０を介してシミュレータ接続部１０１との間で送受信する情報の一例について説明する。図７（ａ）は、用紙搬送シミュレータ１０３から外部Ｉ／Ｆ１２０を介してシミュレータ接続部１０１へ通知されるイベントの内容の一例を示す。用紙搬送シミュレータ１０３は、７０２に示す発生条件が満たされると、７０１に示すイベントが発生したことを、７０３を通知内容として外部へ通知する。
【００６１】
「シミュレーション開始」及び「シミュレーション終了」は、ユーザによる操作、又は外部からの指示により、用紙搬送シミュレータ１０３がシミュレーションの実行を開始及び終了した際に発生するイベントである。これらのイベントの発生に伴って、用紙搬送シミュレータ１０３は、外部に対してシミュレーションの開始又は終了を通知内容７０３として通知する。
【００６２】
「同期待ち」は、１単位時間の解析処理を終了して同期待ち状態になった際に発生するイベントである。当該イベントの発生に伴って、用紙搬送シミュレータ１０３は、外部Ｉ／Ｆ１２０を介して外部に対して、同期待ち状態の発生と、当該時点におけるの用紙搬送シミュレータ１０３内の仮想時刻が通知される。「センサ状態変化」は、１単位時間の解析処理の結果、センサとして定義されたモデルの状態が変化した場合に発生するイベントである。当該イベントの発生に伴って、用紙搬送シミュレータ１０３は、外部Ｉ／Ｆ１２０を介して外部に対して、センサ状態の変化が発生したことと、当該変化後のセンサのＩＤ及びセンサ状態情報とを通知する。
【００６３】
次に、図７（ｂ）は、用紙搬送シミュレータ１０３が外部Ｉ／Ｆ１２０を介して外部から受け付ける指示の一例を示す。用紙搬送シミュレータ１０３は、７１２を指示内容として指定情報７１３を含む指示７１１を、外部Ｉ／Ｆ１２０を介して外部から受け付ける。用紙搬送シミュレータ１０３は、「シミュレーション開始」、「シミュレーション終了」の各指示を外部Ｉ／Ｆ１２０を介して受け付けると、当該指示に応じた動作を実行する。また、「単位時間処理実行」は、同期待ち状態を解除して単位時間処理を実行する指示であり、用紙搬送シミュレータ１０３は、外部Ｉ／Ｆ１２０を介して当該指示を受信すると、指示に応じた動作を実行する。なお、本実施形態に係る用紙搬送シミュレータ１０３において、実行中のシミュレーションが同期待ち状態となるのは、１単位時間処理の実行が終了した場合である。
【００６４】
「モータ動作」指示は、モータ動作を指定する指示であり、当該指示により、モータＩＤと次の１単位時間におけるモータの動作（駆動／停止）とが指定される。ここで、モータＩＤは、用紙搬送シミュレータ１０３に定義されたモータモデルの各々に対して予め固有に割り当てられる識別情報である。モータモデルとモータＩＤとの関連付けに関する情報や、各モータの駆動時の速度情報は、ユーザがシミュレーションシステム１００に対して画像形成装置３００の構成を定義する際に設定される。また、設定された情報は、設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納されている。
【００６５】
「ソレノイド動作」指示は、ソレノイド動作を指定する指示である、当該指示により、ソレノイドＩＤと次の１単位時間におけるソレノイドの動作（駆動／停止）とが指定される。ここで、ソレノイドＩＤは、用紙搬送シミュレータ１０３に定義されたソレノイドモデルの各々に対して予め固有に割り当てられる識別情報である。ソレノイドモデルとソレノイドＩＤとの関連付けに関する情報は、設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納されている。
【００６６】
「クラッチ動作」指示は、クラッチ動作を指定する指示であり、当該指示により、クラッチＩＤと次の１単位時間におけるクラッチの動作（駆動／停止）が指定される。ここで、クラッチＩＤは、用紙搬送シミュレータ１０３に定義されたクラッチモデルの各々に対して予め固有に割り当てられる識別情報である。クラッチモデルとクラッチＩＤとの関連付けに関する情報は、設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納されている。
【００６７】
用紙搬送シミュレータ１０３は、同期待ち状態において上記の「モータ動作」指示を受け付けた場合には、指定されたモータＩＤのモータモデルが、次の１単位時間において指定された動作状態であると判断し、当該次の１単位時間における各構成要素の動作を解析する。また、用紙搬送シミュレータ１０３は、同期待ち状態以外の状態において「モータ動作」指示を受け付けた場合には、当該指示を無視する。なお、用紙搬送シミュレータ１０３は、「ソレノイド動作」及び「クラッチ動作」指示を受け付けた場合についても、これと同様に動作する。
【００６８】
また、「画像形成状態」指示は、予め指定された画像形成位置における画像形成の状態を指定する指示である。ここで、画像形成位置とは、画像シミュレータ１０５によるシミュレーション結果のグラフィック表示において画像が形成される位置として任意に設定され得る位置である。この画像形成位置は、用紙搬送シミュレータ１０３が、形成された画像と用紙との位置関係をグラフィック表示から求めるための基準となる。当該指定は、後述する画像シミュレータ１０５によるシミュレーション結果に基づいて行われる。用紙搬送シミュレータ１０３は、同期待ち状態で「画像形成状態」指示を受け付けると、次の１単位時間では、予め指定された画像形成位置における画像形成状態が当該指示によって指定された状態であると判断する。これにより、用紙搬送シミュレータ１０３は、当該１単位時間の経過後のグラフィック表示において画像を描画する範囲を設定する。一方で、用紙搬送シミュレータ１０３は、同期待ち状態以外の状態で画像形成状態の指示を受けると、当該指示を無視する。
【００６９】
次に、図８に、本実施形態に係る用紙搬送シミュレータ１０３によるシミュレーション結果の２次元グラフィック表示の一例を示す。図８には、排紙トレイ１００１、用紙搬送ローラ１００２、モータ１００３、用紙搬送路１００４、感光ドラム１００５、ＩＴＢ１００６及びＩＴＢ駆動ローラで構成されるＩＴＢユニット、センサ１００７、クラッチ１００８、ソレノイド１００９、給紙トレイ１０１０、画像（トナー画像範囲）１０１１、及び、用紙１０１２が、視覚的に確認できるようにグラフィック表示された様子を示している。ここで、ローラ１００２、モータ１００３、感光ドラム１００５に相当する円内に示される直線は、ユーザが回転状態を確認できるようにするための表示であり、それらの回転動作に伴って当該直線の描画角度が変化する。
【００７０】
また、図８に示す例において、予め指定される画像形成位置は、感光ドラム１００５とＩＴＢ１００６との接点の位置（位置１０２０）として定義される。用紙搬送シミュレータ１０３によるシミュレーションにおいて、外部Ｉ／Ｆ１２０を介した指示により、画像形成状態が非画像形成中から画像形成中に変化したタイミングで、当該画像形成位置において画像１０１１の先端が発生する。また、外部Ｉ／Ｆ１２０を介した指示により、画像形成状態が画像形成中から非画像形成中に変化したタイミングで、当該画像形成位置において画像１０１１の後端が発生する。さらに、画像１０１１は、ＩＴＢ１００６の動作に応じてＩＴＢ１００６上を２次転写位置１０２１まで移動する。
【００７１】
一方、用紙１０１２は、用紙搬送ローラ１００２の動作に応じて給紙トレイ１０１０から排紙トレイまでを用紙搬送路１００４に添って２次転写位置１０２１まで移動する。２次転写位置において、画像１０１１と用紙１０１２とに重なりが発生すると、画像１０１１が用紙１０１２へ転写されたことを示すために、画像１０１１と用紙１０１２の表示が重なる。その状態で、用紙１０１２は、画像１０１１とともに、用紙搬送ローラ１００２の動作に応じて用紙搬送路１００４に添って排紙トレイ１００１まで移動する。なお、センサ１００７、クラッチ１００８、ソレノイド１００９は、動作状態と停止状態とを確認できるように、状態に応じて表示色が変化してもよい。
【００７２】
（プロセスユニットシミュレータ１０４）
次に、プロセスユニットシミュレータ１０４は、定着装置３１７及びプロセスユニット４０５の動作を情報処理装置２００上で模擬するシミュレータである。具体的には、プロセスユニットシミュレータ１０４は、画像形成装置３００のターゲットＣＰＵから定着装置３１７及びプロセスユニット４０５への制御信号に応じて、ターゲットＣＰＵへ戻されるフィードバック信号を模擬するとともに、画像シミュレータ１０５に対して電子写真プロセスの動作状態を通知する。
【００７３】
定着装置及びプロセスユニットの構成は、画像形成装置の機種ごとに異なる。プロセスユニットシミュレータ１０４には、外部とのシミュレーション情報のやり取り及び同期処理のために外部Ｉ／Ｆのみが標準で用意される。プロセスユニットシミュレータ１０４は、所定の文法でシミュレーション動作を記述した命令文（以下では、「プロセスマクロ」と称する。）に従って、具体的なシミュレーション処理を実行する。
【００７４】
このプロセスマクロは、テキスト形式のファイルとして対象機種ごとにユーザによって作成され、設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納される。プロセスユニットシミュレータ１０４は、シミュレーションの実行を開始すると、プロセスマクロを含むプロセスマクロファイルを外部記憶装置２１０からＲＡＭ２０３へ読み込んで、当該ファイルに記述された命令を解釈する。さらに、プロセスユニットシミュレータ１０４は、解釈した命令に従って、各種のプロセスユニットの動作をシミュレーションする。
【００７５】
具体的には、プロセスユニットシミュレータ１０４は、プロセスマクロに含まれる命令に従って、外部Ｉ／Ｆ１２１を介して外部から受けとったデータを読み込むとともに、所定の処理を実行して外部Ｉ／Ｆ１２１を介して外部にデータを出力する。例えば、定着装置３１７の温度状態を模擬する場合、プロセスマクロには、プロセスユニットシミュレータ１０４が以下の処理を実行するための記述が含まれる。
【００７６】
プロセスユニットシミュレータ１０４は、メインヒータ４０８及びサブヒータ４０９の駆動状態を示す情報と、定着排紙モータ４０３の駆動状態を示す情報と、定着ローラ部における用紙の有無を示す情報とを、仮想時間上の１単位時間ごとに外部Ｉ／Ｆ１２１を介して受信する。次に、プロセスユニットシミュレータ１０４は、単位時間ごとの処理の実行を開始すると、所定の演算式に基づき、メインヒータ及びサブヒータ駆動状態の変化の履歴情報から１単位時間後の温度センサ４１１、４１２の基本温度値を求める。さらに、プロセスユニットシミュレータ１０４は、定着排紙モータの駆動状態、定着ローラ部の用紙の有無に応じて各温度センサの温度値を補正する。その後、外部Ｉ／Ｆ１２１を介して温度センサ４１１、４１２の温度値に関する情報を外部に出力する。なお、他の各種のプロセスユニットについても同様に、ユーザによって記述されたプロセスマクロの内容に応じたシミュレーション処理が実行される。プロセスユニットシミュレータ１０４は、プロセスマクロに記述された全てのプロセスユニットに関する１単位時間分のシミュレーション処理の終了後、仮想時間を１単位時間進めた上で、外部のシミュレータとの同期処理を行う。
【００７７】
上述のように、プロセスユニットシミュレータ１０４における入出力情報は、プロセスマクロごとに変化する。このため、ユーザによって作成されるプロセスマクロに合わせて、プロセスユニットシミュレータ１０４によって扱われる入出力情報に関する定義情報が作成される。この定義情報は、情報ＩＤ、データサイズ、信号種別（ビット／デジタル／アナログ）から成り、プロセスマクロファイルと関連付けられた入出力定義ファイルに定義され、設定データ２０９ｂの１つとして外部記憶装置２１０に格納される。なお、プロセスユニットシミュレータ１０４は、予め用意された入出力モジュールに対して情報ＩＤを指定することによって、プロセスマクロを使用した情報の入出力を行う。また、配線定義情報１２４に含まれるプロセスユニットシミュレータの信号識別情報は、上述のように、この情報ＩＤに従って定義される。
【００７８】
以下では、図９を参照して、プロセスユニットシミュレータ１０４が外部Ｉ／Ｆ１２１を介してシミュレータ接続部１０１との間で送受信する情報の一例について説明する。図９（ａ）は、プロセスユニットシミュレータ１０４から外部Ｉ／Ｆ１２１を介してシミュレータ接続部１０１へ通知されるイベントの内容の一例を示す。プロセスユニットシミュレータ１０４は、９０２に示す発生条件が満たされると、９０１に示すイベントが発生したことを、９０３を通知内容として外部へ通知する。
【００７９】
ここで、図９（ａ）における「シミュレーション開始」、「シミュレーション終了」及び「同期待ち」については、図７（ａ）の用紙搬送シミュレータ１０３における場合と同様である。また、「出力状態変化」は、入出力情報の定義において、プロセスユニットシミュレータ１０４の出力情報として定義された情報に変化が生じた場合に発生するイベントである。当該イベントの発生に伴って、プロセスユニットシミュレータ１０４は、外部Ｉ／Ｆ１２１を介して外部に対して、当該出力情報に変化が生じたこと、当該変化が生じた情報情報ＩＤ、及び変化後の値を通知する。
【００８０】
次に、図９（ｂ）は、プロセスユニットシミュレータ１０４の外部Ｉ／Ｆ１２１を介して外部から受け付ける指示の一例を示す。プロセスユニットシミュレータ１０４は、９１２を指示内容として指定情報９１３を含む指示９１１を、外部Ｉ／Ｆ１２１を介して外部から受け付ける。同図において、「シミュレーション開始」、「シミュレーション終了」、及び「単位時間処理実行」指示については、図７（ｂ）の用紙搬送シミュレータ１０３における場合と同様である。
【００８１】
「入力情報」指示は、プロセスユニットシミュレータ１０４に対する入力情報の値を指定する指示であり、当該指示により、情報ＩＤと入力情報の設定値とが指定される。プロセスユニットシミュレータ１０４は、シミュレーションの実行停止状態においては当該指示を受けても無視する。一方で、プロセスユニットシミュレータ１０４は、同期待ち状態、及び１単位時間のシミュレーション処理の実行中に当該指示を受けると、当該指示を受け付ける。なお、当該指示により指定された入力情報がシミュレーションに反映されるタイミングは、プロセスマクロに記述された処理に依存する。
【００８２】
（画像シミュレータ１０５）
次に、画像シミュレータ１０５は、プロセスユニット４０５の画像形成状態を解析するシミュレータである。ここで、シミュレーション対象の画像形成装置３００においては、露光、現像、１次転写、２次転写といった画像形成プロセスが、画像形成装置３００上の異なる位置で異なるタイミングで実行されることにより、画像が段階的に形成される。画像形成装置３００では、形成途中の画像が装置内を移動しつつ、画像形成プロセスが進行し、最終的に形成されたトナー画像は、ＩＴＢ３０１と２次転写ローラ３１６の接点において用紙上に転写される。本実施形態に係る画像シミュレータ１０５は、上記のように、段階的に形成される画像の画像形成装置３００内における位置とその形成状態（形成の段階）とを解析する。
【００８３】
画像シミュレータ１０５による解析は、外部Ｉ／Ｆ１２２を介して外部システムから入力される信号情報に応じてシミュレーションが実行されることを前提として行われる。外部から入力される情報には、プロセスユニット４０５に対する光学ユニット、高圧ユニットの制御情報、及びメカ機構の制御情報が含まれる。さらに、画像シミュレータ１０５による解析は、予め定義されたプロセスの種類ごとの画像形成可能条件、メカ構成位置、速度確定条件といった電子写真プロセスの定義に基づいて行われる。なお、画像シミュレータ１０５は、外部からの電子写真プロセス制御信号の取得及び画像形成状態の解析を、予め設定された単位時間ごとに実行する。そして、画像シミュレータ１０５は、１単位時間分の画像形成状態の解析終了後、仮想時間を１単位時間進めた上で、外部のシミュレータとの同期処理を行う。
【００８４】
この電子写真プロセスの定義情報は、設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納されている。画像シミュレータ１０５は、各種の電子写真プロセス制御信号の値の変化のタイミング及びその変化値に基づいて、上記の解析を実行する。さらに、画像シミュレータ１０５は、解析対象の位置として外部Ｉ／Ｆ１２２を介して外部から指定された位置において、画像形成状態が変化した際に、当該画像形成状態に関する情報を解析の結果として外部へ出力する。
【００８５】
ここで、発明の理解を容易にするために、画像シミュレータ１０５において扱われる画像や装置構成に関連する「位置」の概念に関して説明する。シミュレーション対象の画像形成装置３００では、上記のように画像形成プロセスが段階的に実行される。画像形成装置３００内において画像形成プロセスが実行される具体的な位置は、図３によれば、感光ドラム３０３ａ〜ｄ上の、露光装置３０５ａ〜ｄからのレーザ光照射位置、１次帯電器３０４ａ〜ｄ及び現像器３０６ａ〜ｄと感光ドラム３０３ａ〜ｄとの当接部、１次転写ローラ３０２ａ〜ｄ及び２次転写ローラ３１６とＩＴＢ３０１との当接部である。これに対して、画像シミュレータ１０５において扱われる「位置」とは、この画像形成プロセスにおいて形成される画像が、当該プロセスの実行に伴って移動する経路上の位置を意味し、所定の基準位置からの相対距離とステーション情報とで表すことができる。
【００８６】
基準位置は、形成される画像が移動する経路上で予め定義された位置であり、基準位置情報とともに設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納されている。また、ステーション情報は、当該経路上において、イエロー、マゼンタ、シアン、ブラックの各色のトナー画像が１次転写されるまでの経路が相互に異なるために、当該異なる範囲で位置を特定するための情報である。なお、ステーション情報として、以下では、イエロー、マゼンタ、シアン、ブラックの各ステーション情報をＹ、Ｍ、Ｃ、Ｂｋ、１次転写以下の共通パスのステーション情報をＰとして表現している。
【００８７】
次に、上述の「位置」に関して、図３を一例として具体的に説明する。図３では、イエローの露光位置を基準位置３２１として定義している。これにより、イエローの露光位置（図３の３２１）は、その距離及びステーション情報に関して［距離：０ｍｍ，ステーション：Ｙ］と表される。ここで、基準位置３２１からイエローの感光ドラム面に沿ってイエローの１次転写位置３２３を経て、ＩＴＢに沿ってブラックの１次転写位置３２３に至る距離を２００ｍｍとする。その場合、ブラックの１次転写位置（図３の３２２）は［距離：２００ｍｍ，ステーション：Ｐ］と表される。
【００８８】
また、イエローの１次帯電位置（図３の３２４）は、イエローの１次帯電位置３２４と基準位置３２１との距離が２０ｍｍとすると、［距離：−２０ｍｍ，ステーション：Ｙ］と表される。なお、距離がマイナスの数値で表現されているのは、位置３２４が基準位置３２１よりも画像形成方向に沿って上流に位置するためである。さらに、マゼンタの現像位置（図３の３２５）は、基準位置３２１からマゼンタの１次転写位置３２６までの距離を１００ｍｍ、１次転写位置３２６からマゼンタの現像位置３２５までの距離を３０ｍｍとすると［距離：７０ｍｍ，ステーション：Ｍ］と表される。
【００８９】
以下では、再び図９を参照して、画像シミュレータ１０５が外部Ｉ／Ｆ１２２を介してシミュレータ接続部１０１との間で送受信する情報の一例について説明する。図９（ｃ）は、画像シミュレータ１０５から外部Ｉ／Ｆ１２２を介してシミュレータ接続部１０１へ通知されるイベントの内容の一例を示す。画像シミュレータ１０５は、９２２に示す発生条件が満たされると、９２１に示すイベントが発生したことを、９２３を通知内容として外部へ通知する。
ここで、図９（ｃ）における「シミュレーション開始」、「シミュレーション終了」及び「同期待ち」については、図７（ａ）の用紙搬送シミュレータ１０３、及び図９（ａ）のプロセスユニットシミュレータ１０４における場合と同様である。「画像形成状態変化」は、１単位時間の解析処理の結果、図９（ｄ）の「画像状態情報報知位置」指示によって指定された位置において画像形成状態に変化があった場合に発生するイベントである。当該イベントの発生に伴って、画像シミュレータ１０５は、外部Ｉ／Ｆ１２２を介して外部に対して、画像形成状態に変化が発生したこと、対象位置、及び、当該対象位置の画像状態情報が通知される。ここで、画像状態情報は、画像シミュレータ１０５が解析する画像形成状態ごとに定義されたコードを用いて表され、画像形成状態とコードとの関係については設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納されている。
【００９０】
次に、図９（ｄ）は、画像シミュレータ１０５の外部Ｉ／Ｆ１２２を介して外部から受け付ける指示の一例を示す。画像シミュレータ１０５は、９３２を指示内容として指定情報９３３を含む指示９３１を、外部Ｉ／Ｆ１２２を介して外部から受け付ける。同図において、「シミュレーション開始」、「シミュレーション終了」、及び「単位時間処理実行」指示については、図７（ｂ）の用紙搬送シミュレータ１０３、及び図９（ｂ）のプロセスユニットシミュレータ１０４における場合と同様である。「電子写真プロセス制御状態」指示は、電子写真プロセスの制御状態を指定する指示であり、当該指示により機能ＩＤ及び制御値が指定される。ここで、指定される制御状態としては、プロセスユニット４０５の光学ユニット４１３、高圧ユニット４１４、メカ機構４１５の有する各機能の制御状態（高圧出力レベル、ドラム動作状態等）が一例として挙げられる。また、機能ＩＤは、画像シミュレータ１０５において、プロセスユニット４０５の有する各機能に対して、予め固有に定義されるの識別情報である。各機能と機能ＩＤとの関連付け情報は、設定データ２０９ｂとして情報処理装置２００の外部記憶装置２１０に格納されている。なお、配線定義情報１２４に含まれる画像シミュレータの信号識別情報は、当該機能ＩＤに従って定義される。
【００９１】
画像シミュレータ１０５は、同期待ち状態で「電子写真プロセス制御情報」指示を受け付けると、それまでのシミュレーションの履歴と指定された制御値とに基づいて、１単位時間後の画像形成装置３００上の画像形成位置と画像の形成状態とを解析する。また、画像シミュレータ１０５は、同期待ち状態以外の状態で電子写真プロセス制御情報の指示を受け付けると、当該指示を無視する。
【００９２】
「画像状態情報報知位置」指示は、画像シミュレータ１０５による解析結果である画像状態情報を外部へ報知する位置を、画像シミュレータ１０５に対して指定する指示であり、当該指示により、画像形成装置３００の画像形成プロセス上の位置が指定される。当該位置は、基準位置からの相対距離とステーション情報とを用いて指定する。画像シミュレータ１０５は、同期待ち状態で当該指示を受け付けると、指定された位置を画像形成状態の報知対象の位置とする。画像シミュレータ１０５では、それ以降のシミュレーションの実行結果において、指定位置の画像状態が変化した場合に、当該指示に従って「画像形成状態変化」イベントが発生する。一方で、画像シミュレータ１０５は、同期待ち状態以外の状態で画像状態情報報知位置要求の指示を受けると、指示を無視する。
【００９３】
＜複数のシミュレータ間の信号伝達処理＞
上述のように、シミュレーションシステム１００において、シミュレータ接続部１０１に対して接続される各シミュレータは、異なる機能を有し、かつ、異なる外部インタフェース仕様を有する。シミュレーションシステム１００において、このような複数のシミュレータ間で信号を伝達するためには、各シミュレータにおける外部インタフェースの仕様をシミュレータ接続部１０１における外部インタフェースの仕様と合わせる必要がある。このため、各シミュレータの外部インタフェースの仕様の自由度を保持し、当該仕様に変更を加えることなく信号の伝達を実現するには、各シミュレータが接続されるシミュレータ接続部１０１において信号を伝達するために何らかの処理が必要となる。
【００９４】
より具体的には、各シミュレータは、その内部で扱う信号に対して当該シミュレータにおいて固有の識別情報を割り当てて管理するのが一般的である。このため、シミュレータ間で信号を適切に伝達するためには、シミュレータ接続部１０１は、あるシミュレータで識別情報を固有に割り当てられた信号について、別のシミュレータで固有に割り当てられた識別情報を特定し、伝達対象のシミュレータへ信号値を伝達することが必要である。
【００９５】
また、シミュレータ接続部１０１は、何れかのシミュレータにおいて信号の信号値が変化した場合、変化後の信号値を、当該信号を使用する他のシミュレータに対して伝達する。その際、信号の変化が生じるたびに信号の伝達処理を実行すると、受信側のシミュレータの状況によっては当該信号を必要としないタイミングに当該信号が伝達されてしまい、受信側のシミュレータにおける負荷を不必要に増大させてしまうおそれがある。それにより、シミュレーションシステム１００全体のシミュレーション速度の低下を招くおそれがある。一方で、シミュレータ接続部１０１から各シミュレータに対して信号値の変化を能動的に通知するのではなく、各シミュレータが、各シミュレータ接続部１０１に保持された信号値の変化を監視して、当該信号値を取得する場合も想定され得る。しかしながら、その場合には、各シミュレータにおける処理負荷が増大し、上記と同様、シミュレーション速度の低下を招くおそれがある。
【００９６】
そこで、本実施形態では、シミュレータ接続部１０１は、各シミュレータで各信号に固有に割り当てられる信号識別情報と、シミュレータ接続部１０１で各信号を扱うために固有に割り当てる信号識別情報とを対応付ける信号情報１１３〜１１６を、各シミュレータＩ／Ｆ１０７〜１１０に保持する。さらに、シミュレータ接続部１０１は、シミュレータ間の各信号線の配線情報に基づいて、各信号の伝達対象のシミュレータを特定するために使用する信号管理情報１１８を保持する。シミュレータ接続部１０１は、これらの情報を使用して、シミュレータ間で信号を適切に伝達することを可能にする。以下では、これらの信号管理情報１１８、及び信号情報１１３〜１１６と、それらを用いた信号伝達処理についてより詳細に説明する。
【００９７】
（信号管理情報１１８）
図１０を参照して、配線モジュール１１２内で保持される信号管理情報１１８の一例について説明する。この信号管理情報１１８は、シミュレータ起動後の初期化処理において配線定義情報１２４に基づいて信号管理部１１７によって生成される。信号管理情報１１８には、図１０に示すように、信号ＩＤ及びデータサイズとともに、各シミュレータの入力信号の対応情報が定義される。なお、図１０では説明の便宜のために、各信号ＩＤに対応して仮想信号名を表記しているが、実際に生成される信号管理情報１１８には、仮想信号名は含まれず、仮想信号名から変換された信号ＩＤが含まれる。また、信号管理情報１１８には、信号種別情報は含まれない。これは、信号管理部１１７が、シミュレータＩ／Ｆ間の信号の伝達を行う際に、所定サイズのビットパターンデータをそのまま伝達し、信号の種別を識別しないためである。
【００９８】
信号管理部１１７は、各シミュレータを識別情報（シミュレータＩＤ）によって識別するとともに、当該識別情報を用いてシミュレータ間で信号を伝達する。シミュレータＩＤは、シミュレータ接続部１０１に接続された各シミュレータに固有に割り当てられる数値であり、信号管理情報１１８に含まれる。シミュレータＩＤには、例えば、配線定義情報１２４に含まれるシミュレータの定義順に異なる数値が設定される。本実施形態では、図５に示す配線定義情報１２４に基づいて、ＣＰＵシミュレータ１０２、用紙搬送シミュレータ１０３、プロセスユニットシミュレータ１０４、画像シミュレータ１０５に対して順に、０、１、２、３をシミュレータＩＤとして割り当てている。なお、シミュレータＩ／Ｆ１０７〜１１０も、それぞれ配線定義情報１２４に基づいてシミュレータＩＤを生成するとともに、当該シミュレータＩＤを用いて、信号管理部１１７との間の信号の伝達を実行する。
【００９９】
図１０の信号管理情報１１８には、信号ＩＤごとに、各シミュレータについて「０」又は「１」の値が定義されている。ここで、「１」が定義されている場合には、当該信号ＩＤに対応する信号が当該シミュレータに対する入力信号として定義されている。一方で、「０」が定義されている場合には、当該信号ＩＤに対応する信号が当該シミュレータに対して入力信号として定義されていないか、あるいは、当該シミュレータにおいて信号自体が定義されていない。なお、図１０において、信号ＩＤ：４２の「２次転写高圧レベル確定」信号は、ＣＰＵシミュレータ１０２（シミュレータ：０）とプロセスユニットシミュレータ１０４（シミュレータ：２）との間における双方向信号である。このため、それらのシミュレータに対応するデータには「１」が定義されており、何れのシミュレータに対しても入力信号として定義されている。信号管理情報１１８をこのように定義することにより、シミュレーションシステム１００において双方向信号に関する信号の伝達を実現することができる。
【０１００】
（信号情報１１３〜１１６）
次に、図１１を参照して、シミュレータＩ／Ｆ１０７〜１１０内でそれぞれ保持される信号情報１１３〜１１６について説明する。この信号情報１１３〜１１６は、シミュレータ起動後の初期化処理において各シミュレータＩ／Ｆ１０７〜１１０によってそれぞれ生成される。ここで、シミュレータＩ／Ｆ１０７〜１１０は、配線モジュール１１２から受信する仮想信号名−信号ＩＤ対応情報と配線定義情報１２４とから信号情報１１３〜１１６を生成する。なお、図１１（ａ）〜（ｄ）に示す何れの情報も、数値情報として信号情報１１３〜１１６に含まれる。
【０１０１】
図１１（ａ）〜（ｄ）に示すように、各シミュレータに対応する信号情報１１３〜１１６には、各信号ＩＤについて定義された「Ｉ／Ｏ」、「データサイズ」、「論理」、「初期値」、及び「信号値」が共通に含まれる。また、ＣＰＵシミュレータ１０２に対応する信号情報１１３を除く信号情報１１４〜１１６には、「信号種別」が共通に含まれる。本実施形態において「信号種別」には、ビット情報及びデジタル多値情報について０、アナログ情報について１が設定されている。このように「信号種別」が信号情報１１３にのみ含まれていないのは、ＣＰＵシミュレータ１０２のシミュレーション対象のターゲットＣＰＵによって扱われるデータ（信号値）がデジタル値であるためである。また、信号情報１１３〜１１６に含まれる各定義は、配線定義情報１２４（図５）に含まれる同一名称の各定義に対応する。
【０１０２】
なお、図１１において、Ｉ／Ｏは、対応するシミュレータにおいて入力信号及び出力信号として定義されている信号について、それぞれ１及び０が設定されている。双方向信号として定義されている信号についてのＩ／Ｏには１が設定される。また、対応するシミュレータにおいて入力信号及び出力信号の何れにも使用されず、未定義の信号については、Ｉ／Ｏに「−１」が設定されている。さらに、図１１において「＊」と表示されている部分は何らの値も設定されていない不定値を表し、これらはシミュレーションにおいて参照されることはない。
【０１０３】
「信号値」には、シミュレーションシステム１００におけるシミュレーション開始時に、信号情報１１３〜１１６に含まれる「初期値」が「信号値」に設定される。この「信号値」は、シミュレーションの進行に伴って各シミュレータ内で変化する信号値が保存されることで更新される。また、信号情報１１３〜１１６には、「信号値」の各々に対応して、各信号を識別するために各シミュレータにおいて固有に割り当てられる信号識別情報と、シミュレータ接続部１０１において固有に割り当てられる信号識別情報（信号ＩＤ）とが含まれる。以下では、図１１を参照して、各信号を識別するために各シミュレータにおいて固有に割り当てられる信号識別情報について説明する。
【０１０４】
シミュレータＩ／Ｆ１０７内で保持される、ＣＰＵシミュレータ１０２に対応する信号情報１１３（図１１（ａ））には、ＣＰＵシミュレータ１０２によって固有に割り当てられる信号識別情報として「アドレス」及び「ｂｉｔ」が含まれる。また、用紙搬送シミュレータＩ／Ｆ１０８内で保持される、用紙搬送シミュレータ１０３に対応する信号情報１１４（図１１（ｂ））には、用紙搬送シミュレータ１０３によって固有に割り当てられる信号識別情報として「モデル識別値」及び「個別ＩＤ」が含まれる。これらの「モデル識別値」及び「個別ＩＤ」は配線定義情報１２４（図５）に含まれる定義と基本的に同一であるが、「モデル識別値」は、センサ：１、モータ：２、ソレノイド：３、クラッチ：４、画像：５のように「種別」に応じて数値データ化されている。
【０１０５】
プロセスユニットシミュレータＩ／Ｆ１０９内で保持される、プロセスユニットシミュレータ１０４に対応する信号情報１１５（図１１（ｃ））には、当該シミュレータによって固有に割り当てられる信号識別情報として「情報ＩＤ」が含まれる。また、画像シミュレータＩ／Ｆ１１０内で保持される、画像シミュレータ１０５に対応する信号情報１１６（図１１（ｄ））には、当該シミュレータによって固有に割り当てられる信号識別情報として「機能ＩＤ」が含まれる。
【０１０６】
（シミュレータ間の信号伝達処理）
次に、シミュレータ間で信号伝達を行うための、信号管理部１１７と各シミュレータＩ／Ｆ１０７〜１１０との間のインタフェースについて説明する。信号管理部１１７は、各シミュレータＩ／Ｆから信号出力通知を受け付けるインタフェースを有する。各シミュレータＩ／Ｆ１０７〜１１０は、対応するシミュレータからの出力信号の変化を、信号出力通知機能によって信号管理部１１７へ通知する。当該信号出力通知機能によって通知される内容は、例えば、シミュレータＩＤ、信号ＩＤ、信号値、サイズである。
【０１０７】
一方、各シミュレータＩ／Ｆ１０７〜１１０は、信号管理部１１７から信号値の通知を受け付けるインタフェースを有する。信号管理部１１７は、信号値の通知に応じて、対応するシミュレータへ当該信号値を通知する。当該通知によって通知される内容は、例えば、シミュレータＩＤ、信号ＩＤ、信号値、サイズである。各シミュレータＩ／Ｆ１０７〜１１０は、当該通知を受けると、信号情報１１３〜１１６に含まれる、対応する信号の信号値を指定された値に更新する。以下では、信号管理部１１７及び各シミュレータＩ／Ｆ１０７〜１１０による信号伝達処理について、より詳細に説明する。
【０１０８】
（信号管理部１１７による信号伝達処理）
次に、図１２を参照して、シミュレータ接続部１０１内の信号管理部１１７による信号伝達処理の手順について説明する。まず、Ｓ２００１で、信号管理部１１７は、シミュレーションシステム１００によるシミュレーションが開始され、各シミュレータの初期化処理が開始されると、信号管理情報１１８を生成する。上述のように、信号管理情報１１８は、外部記憶装置２１０に格納された配線定義情報１２４に基づいて生成される。その後、信号管理部１１７は、Ｓ２００２で、仮想信号名と、生成した信号管理情報１１８に含まれる信号ＩＤとの対応情報を、各シミュレータＩ／Ｆ１０７〜１１０へ通知する。その後、処理がＳ２００３へ移行する。
【０１０９】
Ｓ２００３で、信号管理部１１７は、シミュレータＩ／Ｆ１０７〜１１０の何れかから、対応するシミュレータから信号が出力されたことを信号管理部１１７へ通知する信号出力通知を受信したか否かを判定する。ここで、信号管理部１１７は、当該通知を受信していないと判定する限り、当該判定処理を繰り返すことで、当該通知を受信するまで待機する。一方で、信号管理部１１７は、当該通知を受信したと判定すると、Ｓ２００４の処理へ移行する。なお、本実施形態において、この信号出力通知には、図１１に示す信号情報１１３〜１１６に含まれる情報のうち、信号ＩＤ、信号値、データサイズが含まれる。
【０１１０】
Ｓ２００４で、信号管理部１１７は、シミュレータＩ／Ｆ１０７〜１１０の何れかからの信号出力通知によって、当該通知に含まれる信号ＩＤ、信号値、及びデータサイズとを取得する。続いて、信号管理部１１７は、Ｓ２００５で、受信した信号出力通知対応するシミュレータから出力された信号の、１つ以上の伝達対象のシミュレータを、信号管理情報１１８を用いて特定する。即ち、信号管理部１１７は、当該信号を入力信号として有するシミュレータを、信号管理情報１１８を参照して特定する。図１０に示す信号管理情報１１８の場合、取得した信号ＩＤに対応する値として「１」を有するシミュレータが、伝達対象のシミュレータに対応する。従って、信号管理部１１７は、信号管理情報１１８から伝達対象のシミュレータのシミュレータＩＤを特定する。次に、Ｓ２００６で、信号管理部１１７は、特定したシミュレータＩＤに対応するシミュレータＩ／Ｆに対して、信号ＩＤ、信号値、及びデータサイズを通知する。なお、当該通知を受信したシミュレータＩ／Ｆは、以下で説明する図１３のＳ２１１０以降の処理を実行する。
【０１１１】
以上の処理により、信号管理部１１７は、シミュレータＩ／Ｆ間の信号伝達処理を終了してＳ２００３へ処理を戻すとともに、再び何れかのシミュレータＩ／Ｆから信号出力通知を受信するまで待機する。また、信号管理部１１７は、Ｓ２００３〜Ｓ２００６の処理を、シミュレーションシステム１００におけるシミュレーションが終了するまでの間、実行し続ける。
【０１１２】
（各シミュレータＩ／Ｆ１０７〜１１０による信号伝達処理）
次に、図１３を参照して、シミュレータ接続部１０１内の各シミュレータＩ／Ｆ１０７〜１１０による信号伝達処理について説明する。なお、ここではＣＰＵシミュレータ１０２用のシミュレータＩ／Ｆ１０７について説明するが、他のシミュレータＩ／Ｆ１０８〜１１０についても同様である。
【０１１３】
まず、Ｓ２１０１で、シミュレータＩ／Ｆ１０７は、シミュレーションシステム１００によるシミュレーションが開始され、ＣＰＵシミュレータ１０２の初期化処理が開始されると、信号管理部１１７からＳ２００２（図１２）の処理で通知される対応情報を取得する。さらに、Ｓ２１０２で、シミュレータＩ／Ｆ１０７は、取得した対応情報を用いて信号情報１１３を生成する。その後、処理がＳ２１０３へ移行する。
【０１１４】
Ｓ２１０３及びＳ２１０９で、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２及び信号管理部１１７の何れかから信号を受信するまで待機する。具体的には、シミュレータＩ／Ｆ１０７は、まず、Ｓ２１０３で、ＣＰＵシミュレータ１０２から信号出力通知を受信したか否かを判定する。ＣＰＵシミュレータ１０２の場合、当該信号出力通知は、図６（ａ）に示す「ライトアクセス」イベント（ライトイベント）による通知に相当する。なお、シミュレータＩ／Ｆ１０８、１０９、１１０の場合、当該信号出力通知は、「センサ状態変化」イベント（図７（ａ））、「出力状態変化」イベント（図９（ａ））、及び「画像状態変化」イベント（図９（ｃ））による通知にそれぞれ相当する。
【０１１５】
Ｓ２１０３で、ＣＰＵシミュレータ１０２は、信号出力通知を受信したと判定した場合、処理をＳ２１０４へ移行する一方で、受信していないと判定した場合、処理をＳ２１０９へ移行する。Ｓ２１０９で、シミュレータＩ／Ｆ１０７は、信号管理部１１７から（図１２のＳ２００６の処理に基づいて）信号出力通知を受信したか否かを判定する。ここで、シミュレータＩ／Ｆ１０７は、信号出力通知を受信したと判定した場合、処理をＳ２１１０へ移行する一方で、受信していないと判定した場合、処理をＳ２１０３へ移行して、これらの判定処理を繰り返す。
【０１１６】
Ｓ２１０３でＣＰＵシミュレータ１０２から信号出力通知を受信した場合、シミュレータＩ／Ｆ１０７は以下の処理を実行する。まず、Ｓ２１０４で、シミュレータＩ／Ｆ１０７は、当該通知に含まれる信号値と当該信号値に付加された信号識別情報（第１信号識別情報）とを取得する。ここで、当該信号識別情報は、ＣＰＵシミュレータ１０２において各信号を識別するために、各信号に対して固有に割り当てられる識別情報であり、上述したように本実施形態では「アドレス」及び「ｂｉｔ」がこれに相当する。その後、処理をＳ２１０５へ移行する。
【０１１７】
Ｓ２１０５で、シミュレータＩ／Ｆ１０７は、信号情報１１３から、ＣＰＵシミュレータ１０２において固有に割り当てられた信号識別情報を有する信号を検索する。ここで、ＣＰＵシミュレータ１０２からは、信号識別情報としてアドレス情報のみ提供されるのに対して、ＣＰＵシミュレータ１０２内では、ビット情報（サイズが１の情報）として、同一アドレスの複数の信号が定義される場合がある。このため、シミュレータＩ／Ｆ１０７は、Ｓ２１０５において、当該信号識別情報（アドレス）を有する全ての信号を検索する。なお、ＣＰＵシミュレータ１０２以外のシミュレータについては、シミュレータＩ／Ｆ１０８〜１１０は、対応するシミュレータから通知される信号識別情報を有する信号を一意に特定することができる。
【０１１８】
シミュレータＩ／Ｆ１０７は、Ｓ２１０６で、当該検索により、当該信号識別情報に対応する信号が存在するか否か判定する。ここで、シミュレータＩ／Ｆ１０７は、対応する信号が存在しないと判定した場合には、処理をＳ２１０９へ移行する一方で、存在すると判定した場合には、Ｓ２１０７へ移行する。
【０１１９】
Ｓ２１０７で、シミュレータＩ／Ｆ１０７は、検索した信号の信号ＩＤを、シミュレータＩ／Ｆ１０７が保持する信号情報１１３から取得する。ここで、信号ＩＤは、シミュレータ接続部１０１において各信号に対して固有に割り当てられる信号識別情報（第２信号識別情報）に相当する。さらに、Ｓ２１０８で、シミュレータＩ／Ｆ１０７は、信号ＩＤ、信号値、及びデータサイズを含む信号出力通知を信号管理部１１７へ通知して、処理をＳ２１０３へ移行する。これにより、信号管理部１１７は、Ｓ２００３（図１２）で当該通知を受信して、Ｓ２００４以下の処理を実行する。
【０１２０】
一方で、シミュレータＩ／Ｆ１０７は、Ｓ２１０９で信号管理部１１７から信号出力通知を受信したと判定した場合、以下の処理を実行する。Ｓ２１１０で、シミュレータＩ／Ｆ１０７は、当該通知によって指定されたシミュレータＩＤと、自らに接続されたシミュレータのシミュレータＩＤとが一致するか否か判定する。ここで、シミュレータＩ／Ｆ１０７は、これらのＩＤが一致しない判定した場合には、当該通知を無視してＳ２１０３へ移行し、再び信号管理部１１７又はＣＰＵシミュレータ１０２からの信号出力通知を待機する。一方で、シミュレータＩ／Ｆ１０７は、これらのＩＤが一致すると判定した場合には、Ｓ２１１１へ移行する。
【０１２１】
Ｓ２１１１で、シミュレータＩ／Ｆ１０７は、信号情報１１３内に保持された信号値のうち、信号出力通知で指定された信号ＩＤを有する信号の信号値を、通知された信号値に更新する。さらに、Ｓ２１１２で、シミュレータＩ／Ｆ１０７は、当該信号が、信号値を更新したタイミングにおいてその信号値を直ぐにＣＰＵシミュレータ１０２に通知することが必要な信号（即通知信号）であるか否かを判定する。これは、シミュレータから対応するシミュレータＩ／Ｆに対して、更新された信号値を取得するイベントが発生しない場合には、そのようなシミュレータに対して、更新された信号値を通知する必要があるために行われる。この場合、信号情報１１３〜１１６に含まれる信号の信号値に変化が生じるごとに、シミュレータＩ／Ｆから対応するシミュレータへ信号値が通知されることになる。
【０１２２】
本実施形態では、ＣＰＵシミュレータ１０２以外のシミュレータに対しては、信号値の変化のタイミングにおいて対応するシミュレータＩ／Ｆから更新された信号値を直ぐに通知する。一方で、ＣＰＵシミュレータ１０２に対しては、ＣＰＵシミュレータ１０２において当該信号を処理可能な、シミュレーションの状況に応じた最適なタイミングにおいて通知すればよい。本実施形態では、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２が更新された信号値を必要とするリードイベントが発生した場合に、信号情報１１３から必要な信号値を読み出してＣＰＵシミュレータ１０２へ通知する。これにより、不適切なタイミングにおいてシミュレータＩ／Ｆ１０７からＣＰＵシミュレータ１０２に対して信号値の通知を行うことによってシミュレーション速度が低下することを防止することが可能になる。なお、信号変化のタイミングにおいて、更新された信号の信号値を各シミュレータ対して通知するか否かについては、シミュレータ接続部１０１へ接続されるシミュレータごとに予めシミュレータ構成定義情報１２３に設定されている。
【０１２３】
Ｓ２１１２で、各シミュレータＩ／Ｆは、更新対象の信号が即通知信号である場合には、Ｓ２１１３へ移行し、更新後の信号値を対応するシミュレータへ通知する一方で、即通知信号でない場合には、Ｓ２１１４へ移行する。ここで、上記のようにシミュレータＩ／Ｆ１０７については、Ｓ２１１４へ移行する。Ｓ２１１４で、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２において信号を処理可能な、シミュレーションの状況に応じた最適なタイミング（即ち、リードイベント発生時）に、更新後の信号値を当該シミュレータへ通知する。Ｓ２１１３又はＳ２１１４における処理の後、処理がＳ２１０３へ戻る。以上の処理により、何れかのシミュレータから出力された信号の信号値を、当該信号を入力信号とするシミュレータに対して伝達することができる。
【０１２４】
＜ＣＰＵシミュレータ１０２のリードイベントに対する処理＞
上述のように、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２からリードイベントが発生した場合にＣＰＵシミュレータ１０２に対して更新後の信号値を通知する。その際、シミュレータ接続部１０１における信号のフォーマットと、信号の通知対象のシミュレータにおける信号のフォーマットとが異なる場合には、当該信号のフォーマットを通知対象のシミュレータにおけるフォーマットに変換して通知する必要がある。以下では、図１４を参照して、シミュレータＩ／Ｆ１０７におけるリードイベントに対する信号伝達処理について説明する。なお、他のシミュレータＩ／Ｆ１０８〜１１０においても、シミュレータ接続部１０１及び通知対象のシミュレータにおける信号フォーマットが異なる場合には、同様の処理が必要となる。ここでは、シミュレータＩ／Ｆ１０７及びＣＰＵシミュレータ１０２における処理について一例として説明する。
【０１２５】
まず、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２からリードイベントが通知されると、Ｓ２２０１で、読出しアドレス、読出しサイズ、及び、読出し値を取得する。次に、Ｓ２２０２で、シミュレータＩ／Ｆ１０７は、信号情報１１３を参照して、取得した読出しアドレスに一致するアドレスを有する信号を検索する。なお、信号情報１１３には読出しアドレスに一致する複数のアドレスが存在する可能性もある。このため、シミュレータＩ／Ｆ１０７は、信号情報１１３に含まれるすべての信号のアドレスを検索するとともに、アドレスが一致した全ての信号を抽出する。
【０１２６】
その後、Ｓ２２０３で、シミュレータＩ／Ｆ１０７は、読出しアドレスに一致したアドレスを有する信号が存在するか否かを判定する。ここで、シミュレータＩ／Ｆ１０７は、一致したアドレスが存在しないと判定した場合には、処理を終了する一方で、存在すると判定した場合には、Ｓ２２０４へ移行する。なお、リードイベント通知により指定された読出しサイズが信号情報１１３に設定された各信号のデータサイズよりも大きい場合には、「読出しアドレス」〜「読出しアドレス＋読出しサイズ」の範囲のアドレスにおいて、アドレスの比較を行う。また、読出しサイズが信号情報１１３に設定された各信号のデータサイズよりも小さい場合には、「読出しアドレス」〜「読出しアドレス＋仮想信号のデータサイズ」の範囲のアドレスにおいて、アドレスの比較を行う。なお、このようなアドレスの検索処理は、リードイベントだけでなく、ライトイベントの通知がなされた場合にも同様に行われる。
【０１２７】
Ｓ２２０４で、シミュレータＩ／Ｆ１０２は、Ｓ２２０２で抽出した全ての信号について、信号情報１１３のｂｉｔ情報、データサイズ情報、及び信号値と、Ｓ２２０１で取得した読出しサイズ、及び読出し値とに基づいて、ＣＰＵシミュレータ１０２における仮想アドレス領域のデータの更新用のデータを生成する。具体的には、生成されたデータには、取得した全ての信号ＩＤのアドレス、ｂｉｔ、信号値に関する情報が含まれる。
【０１２８】
ここで、シミュレータＩ／Ｆ１０７は、信号の通知対象のＣＰＵシミュレータ１０２における信号のフォーマットに合わせて、通知する信号のフォーマットを変換する。例えば、シミュレータ接続部１０１における仮想信号のデータサイズと、ＣＰＵシミュレータ１０２におけるデータサイズとが異なる場合、シミュレータＩ／Ｆ１０７は通知する信号のデータサイズを変換する。また、シミュレータ接続部１０１とＣＰＵシミュレータ１０２とでエンディアンが異なる場合、シミュレータＩ／Ｆ１０７は通知する信号のエンディアンを変換する。
【０１２９】
その後、シミュレータＩ／Ｆ１０７は、信号フォーマットの変換後の信号をＣＰＵシミュレータ１０２に対して通知する。ＣＰＵシミュレータ１０２は、対応する信号の信号値を通知された信号値に更新するとともに、当該信号値を参照してシミュレーションを実行する。以上により、シミュレータＩ／Ｆ１０７は、ライトイベントに応じた信号伝達処理を終了する。
【０１３０】
＜具体例＞
次に、上述した本実施形態に係るシミュレーションシステム１００を構成する複数のシミュレータ間の信号伝達処理の具体例として、メインモータ駆動信号及びレジ紙有りセンサ信号に関する処理について説明する。
【０１３１】
（メインモータ駆動信号の場合）
まず、ＣＰＵシミュレータ１０２からシミュレータＩ／Ｆ１０７に対してライトイベントが通知される。これにより、シミュレータＩ／Ｆ１０７は、当該ライトイベントによる値の書込みが行なわれる仮想アドレス領域を認識する。即ち、シミュレータＩ／Ｆ１０７は、当該通知で指定された仮想アドレス及びビット情報によって特定される仮想アドレス領域へ、指定された値の書込みが行なわれることで、当該仮想アドレス領域に対応する信号の信号値が変更されることを認識する。ここでは、一例として仮想アドレス：０ｘ０００３、ビット：０、及び値：１が当該通知で指定されているものとする。次に、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２用の信号情報１１３（図１１（ａ））から、仮想アドレス及びビット情報を信号識別情報として有する信号を検索することにより、信号ＩＤ：５を取得する。その後、シミュレータＩ／Ｆ１０７は、信号ＩＤ：５と値：１とを信号出力通知として信号管理部１１７へ通知する。
【０１３２】
次に、信号管理部１１７は、シミュレータＩ／Ｆ１０７から受信した信号出力通知で指定された信号ＩＤ：５を有する信号を入力信号とするシミュレータを、信号管理情報１１８から特定する。これにより、信号管理部１１７は、信号の伝達対象のシミュレータを特定する。この場合、信号管理部１１７は、信号管理情報１１８（図１０）から信号ＩＤ：５の信号を入力信号とするシミュレータＩＤ：１及び２を取得する。さらに、信号管理部１１７は、これらのシミュレータＩＤのシミュレータ（用紙搬送シミュレータ１０３、プロセスユニットシミュレータ１０４）に対応するシミュレータＩ／Ｆ１０８、１０９へ信号出力通知を発行する。
【０１３３】
次に、シミュレータＩ／Ｆ１０８、１０９は、信号管理部１１７から受信した信号出力通知に従って、各々が保持する信号情報１１４、１１５を更新する。具体的には、当該通知に含まれる信号ＩＤ：５を有する信号の信号値を、値１に更新する。さらに、シミュレータＩ／Ｆ１０８、１０９は、変更後の信号値を、接続先のシミュレータである用紙搬送シミュレータ１０３、プロセスユニットシミュレータ１０４へそれぞれ通知する。
【０１３４】
（レジ紙有りセンサ信号の場合）
まず、用紙搬送シミュレータ１０３からシミュレータＩ／Ｆ１０８に対してセンサ信号変化イベントの発生が通知される。当該通知により、シミュレータＩ／Ｆ１０８は、例えばセンサＩＤ：１（モデル識別値：０、個別ＩＤ：１）を信号識別情報として有する信号の信号値が、値：１に変化したことを認識する。すると、シミュレータＩ／Ｆ１０８は、信号情報１１４（図１１（ｂ））から当該信号識別情報を有する信号の信号ＩＤ（信号ＩＤ：３）を検索する。その後、シミュレータＩ／Ｆ１０８は、取得した信号ＩＤ：３と値：１とを信号出力通知として信号管理部１１７へ通知する。
【０１３５】
次に、信号管理部１１７は、シミュレータＩ／Ｆ１０８から受信した信号出力通知で指定された信号ＩＤ：３を有する信号を入力信号とするシミュレータ（シミュレータＩＤ：０のＣＰＵシミュレータ１０２）を特定する。さらに、信号管理部１１７は、シミュレータＩＤ：０のＣＰＵシミュレータ１０２に対応するシミュレータＩ／Ｆ１０７へ、信号ＩＤ：０、信号値：１の信号出力通知を発行する。
【０１３６】
次に、シミュレータＩ／Ｆ１０７は、信号管理部１１７から受信した信号出力通知に従って、信号情報１１３を更新する。具体的には、当該通知に含まれる信号ＩＤ：３を有する信号の信号値を、当該通知に含まれる値：１に更新する。その後、シミュレータＩ／Ｆ１０７は、上述したようにＣＰＵシミュレータ１０２からの、アドレス０ｘ０００００２へのリードイベントが発生すると、更新後の信号値をＣＰＵシミュレータ１０２へ通知し、データの更新を指示する。
【０１３７】
以上説明したように、本実施形態に係る情報処理装置２００において、シミュレータ接続部１０１は、接続された複数のシミュレータの各々に対応して、各シミュレータから出力される信号と、当該信号に割り当てられる識別情報とを含む信号情報を保持する。当該信号情報には、各シミュレータから出力される信号と、各信号を識別するために、各シミュレータ及びシミュレータ接続部１０１においてそれぞれ固有に割り当てられる信号識別情報とが含まれる。シミュレータ接続部１０１は、さらに、信号の伝達対象のシミュレータを特定するための、信号の配線情報を管理する信号管理情報を保持する。シミュレータ接続部１０１は、何れかのシミュレータから、そのシミュレータにおいて固有の第１信号識別情報が付加された信号が出力されると、当該信号を識別するためのシミュレーション接続部１０１において固有の第２信号識別情報を信号情報から取得する。さらに、シミュレータ接続部１０１は、当該信号の伝達対象のシミュレータを、信号管理情報を用いて特定するとともに、出力された信号値で、特定したシミュレータに対応する信号情報に含まれる信号値を更新する。その後、シミュレータ接続部１０１は、信号の伝達対象のシミュレータに応じて、当該信号をシミュレータへ通知するタイミングを判定し、判定したタイミングで当該信号を通知する。
【０１３８】
以上の処理により、本実施形態に係る情報処理装置２００は、各シミュレータにおける外部との接続用インタフェースの仕様の自由度を保持しつつ、異なる仕様のシミュレータ間で信号を適切に伝達することができる。また、情報処理装置２００は、各シミュレータからの出力信号を、特定した伝達対象のシミュレータに対してのみ伝達するため、異なるプロセスで実行される複数のシミュレータについてプロセス間通信の頻度を低減できるとともに、効率的なシミュレーションを実現できる。
【０１３９】
また、情報処理装置２００では、シミュレータ接続部１０１に保持された信号値の変化を各シミュレータが常時監視する必要もないため、シミュレーションの負荷を低減することができる。さらに、シミュレータ接続部１０１が、各シミュレータにおいて信号を処理可能なタイミングにおいて信号値をシミュレータへ通知するため、シミュレータにおけるシミュレーションの状況に応じた通知が可能である。このため、シミュレーション接続部１０１から各シミュレータに対する信号値の通知に伴うシミュレーション負荷の増大を防止するとともに、シミュレーション速度の低下を防止することができる。
【０１４０】
なお、上述の実施形態については、種々の変形が可能である。例えば、各シミュレータＩ／Ｆ１０７〜１１０が保持する信号情報１１３〜１１６を、例えば、コア部１０６内や配線モジュール１１２内に保持させてもよい。その場合も、上述の効果と同等の効果を得ることができる。また、信号管理部１１７は、図１７に示すように、信号管理情報１１８を、シミュレータごとに異なる別々の情報として管理してもよい。図１７では、シミュレータごとに、入力信号として定義された信号のみが各信号管理情報に含まれている。これにより、例えば、多数の入力信号が何れかのシミュレータに偏って定義されている場合、信号管理情報を参照（検索）する際の負荷を軽減し、シミュレーションの実行効率を向上させることができる。
【０１４１】
［第２の実施形態］
第１の実施形態において、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２からのリードイベントやライトイベントに応じて、通知されたアドレス（信号識別情報）に対応する信号ＩＤを信号情報１１３から検索する必要がある。その場合、信号情報１１３には同一のアドレスに対応する複数の信号が存在する可能性があるため、シミュレータＩ／Ｆ１０７は、常に信号情報１１３の全領域にわたってアドレスの検索を行う必要がある。さらに、ＣＰＵシミュレータ１０２におけるメモリへのアクセスサイズと、シミュレータ接続部１０１におけるメモリへのアクセスサイズとが異なる場合、当該サイズの相違を考慮してアドレスの比較を行う必要があるため、比較処理が複雑化するおそれがある。
【０１４２】
そこで、第２の実施形態においては、ＣＰＵシミュレータ１０２に対応するシミュレータＩ／Ｆ１０７が、第１の実施形態に係る信号情報１１３の中に、ＣＰＵシミュレータ１０２における仮想メモリのアドレス情報と、信号ＩＤとの対応情報をさらに保持する。当該情報を利用することにより、シミュレータＩ／Ｆ１０７における、ＣＰＵシミュレータ１０２によるリードイベント及びライトイベントに対する信号伝達処理を簡略化している。なお、以下では、説明の簡略化を目的として、第１の実施形態と異なる部分についてのみ説明する。
【０１４３】
本実施形態に係るシミュレーションシステム１００の構成は図１と基本的に同様であるが、ＣＰＵシミュレータ１０２に対応するシミュレータＩ／Ｆ１０７が保持する信号情報１１３に含まれる情報に相違がある。本実施形態において、信号情報１１３は、第１の実施形態において図１０に例示した情報に加えて、ＣＰＵシミュレータ１０２の仮想メモリに関する情報（仮想メモリ情報）を含むことを特徴とする。
【０１４４】
ここで、図１５を参照して、信号情報１１３に含まれる仮想メモリ情報１５０１について説明する。本実施形態において、仮想メモリ情報１５０１は、ＣＰＵシミュレータ１０２で使用される仮想メモリのメモリ領域上のアドレス情報と、各アドレス領域のデータと、各アドレス領域に対応する信号の信号ＩＤとの対応情報である。図１５に一例として示す仮想メモリ情報１５０１では、各アドレス情報に対して１５個の信号ＩＤ情報を対応付けることが可能であるが、対応付ける信号ＩＤの個数は適宜変更可能である。
【０１４５】
仮想メモリ情報１５０１は、第１の実施形態における信号情報１１３の生成と同様に、シミュレータ起動後の初期化処理において、シミュレータＩ／Ｆ１０７によって生成される。具体的には、シミュレータＩ／Ｆ１０７は、各アドレス領域に対して定義された全ての信号ＩＤを各アドレス領域に対応付けることにより、仮想メモリ情報１５０１を生成する。なお、アドレス領域に対応する信号ＩＤが存在しない場合には、図１６に示すように「−１」が対応情報として設定される。
【０１４６】
次に、仮想メモリ情報１５０１を使用した信号伝達処理について説明する。本実施形態において、信号管理部１１７による信号伝達処理は第１の実施形態（図１２）と同様であるため、その説明を省略する。また、各シミュレータＩ／Ｆ１０７〜１１０による信号伝達処理も第１の実施形態（図１２）と基本的に同様であるので、異なる部分についてのみ以下で説明する。
【０１４７】
本実施形態で、シミュレータＩ／Ｆ１０７は、図１２のＳ２１０５において信号情報１１３から信号識別情報を検索する際に、仮想メモリ情報１５０１を参照して、ＣＰＵシミュレータ１０２において固有に割り当てられた信号識別情報（アドレス）を検索する。また、本実施形態では、シミュレータＩ／Ｆ１０７は、Ｓ２１１１で、仮想メモリ情報１５０１を参照し、信号出力通知で指定された信号ＩＤに対応するアドレス領域のデータを、通知された信号値に更新する。さらに、Ｓ２１１４において、シミュレータＩ／Ｆ１０７は、仮想メモリ情報１５０１を参照して得た信号値をＣＰＵシミュレータ１０２へ通知する。
【０１４８】
次に、図１６を参照して、仮想メモリ情報１５０１を使用した、ＣＰＵシミュレータ１０２のリードイベントに対する処理について説明する。まず、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２からリードイベントが通知されると、Ｓ２６０１で、読出しアドレス、読出しサイズ、及び、読出し値を取得する。次に、Ｓ２６０２で、シミュレータＩ／Ｆ１０７は、仮想メモリ情報１５０１を参照して、取得した読出しアドレスに対応するデータを取得する。さらに、Ｓ２６０３で、シミュレータＩ／Ｆ１０７は、ＣＰＵシミュレータ１０２の外部Ｉ／Ｆ１２０からの指示に応じて、ＣＰＵシミュレータ１０２へ当該データを通知する。その際、シミュレータＩ／Ｆ１０７は、Ｓ２６０１で取得した読出しアドレス及び読出しサイズに相当するＣＰＵシミュレータ１０２のアドレス領域へのデータの更新を、ＣＰＵシミュレータ１０２に対して指示する指示情報とともに、データを通知する。以上により、シミュレータＩ／Ｆ１０７は、ライトイベントに応じた信号伝達処理を終了する。
【０１４９】
以上の処理により、本実施形態に係る情報処理装置２００は、シミュレータＩ／Ｆ１０７におけるアドレス情報の検索処理を簡略化することができ、ＣＰＵシミュレータ１０２に対する信号伝達処理をより高速に実行することが可能になる。これにより、シミュレーションシステム１００におけるシミュレーションの実行を、第１の実施形態よりもさらに高速化することができる。
【０１５０】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005448768.tif 000002
【図２】
0005448768.tif 000003
【図３】
0005448768.tif 000004
【図４】
0005448768.tif 000005
【図５】
0005448768.tif 000006
【図６】
0005448768.tif 000007
【図７】
0005448768.tif 000008
【図８】
0005448768.tif 000009
【図９】
0005448768.tif 000010
【図１０】
0005448768.tif 000011
【図１１】
0005448768.tif 000012
【図１２】
0005448768.tif 000013
【図１３】
0005448768.tif 000014
【図１４】
0005448768.tif 000015
【図１５】
0005448768.tif 000016
【図１６】
0005448768.tif 000017
【図１７】
0005448768.tif 000018