(57)【特許請求の範囲】
【請求項１】
模擬対象装置の各機能を模擬する複数のシミュレータと、
進行単位時間を保持し、基準時刻を管理するシミュレータ接続手段と、
を備えており、
各シミュレータは、前記シミュレータ接続手段より再開指示を受けると、模擬処理を実行し、前記シミュレータ接続手段からの指示を待つ指示待ち状態となると、前記シミュレータ接続手段に時刻情報を通知し、
前記シミュレータ接続手段は、シミュレータから通知された時刻情報が前記基準時刻に達していないときは、該シミュレータに前記再開指示を行い、全シミュレータから通知された時刻情報が前記基準時刻、又はそれより後の時刻になると、前記基準時刻を前記進行単位時間だけ進める様に更新し、前記時刻情報が、前記更新した後の基準時刻に達していない総てのシミュレータに前記再開指示を行うことを特徴とする情報処理装置。
【請求項２】
各シミュレータは、模擬処理を行う単位である処理単位時間をシミュレータ毎に独自の値として保持しており、前記再開指示を受けると、前記処理単位時間の模擬処理を行って前記指示待ち状態となり、
前記進行単位時間は、各シミュレータが保持する処理単位時間の内の最長の処理単位時間以上の時間であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
各シミュレータには、同期単位時間が設定されており、
各同期単位時間は、前記進行単位時間の倍数であり、
前記シミュレータ接続手段は、前記基準時刻を前記進行単位時間だけ進める様に更新した際に、更新後の基準時刻を割り切れる同期単位時間が設定されているシミュレータに前記再開指示を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記複数のシミュレータの１つは、前記模擬対象装置で動作するファームウェアの実行を模擬するシミュレータであることを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
請求項１から４のいずれか１項に記載の情報処理装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械装置の組み込みソフトウェアのデバッグのための情報処理装置に関する。
【背景技術】
【０００２】
特許文献１は、機械装置を制御する組み込みソフトウェアのデバッグを、コンピュータシステム上で行う構成を開示している。具体的には、機械部分の動作を模擬するメカシミュレータと、周辺機器部分の動作を模擬するハードウェアモデルと、組み込みソフトウェアが動作するソフトウェアデバッガの３つのシミュレータを協調動作させる構成を開示している。
【０００３】
この様なシステムにおいて、各シミュレータは、対象機能の模擬を行うに当たり、対象機能で進行する時間の管理を行う必要がある。つまり、対象機能のある処理の模擬に実際にかかった時間が１秒であったとしても、その処理を対象機能で行った場合の経過時間が０．５秒である場合、この０．５秒という時間を管理する必要がある。
【０００４】
以後の説明において、模擬時間（模擬経過時間）とは、シミュレータの対象機能で進行する、計算上の経過時間を意味するものとして使用する。また、模擬時刻とは、模擬開始時の時刻を０としたときの模擬時間軸上での時刻を意味するものとして使用する。また、実際の時間は、実時間として参照する。さらに、以後の説明において、実時間として明記している場合と、実時間を指していることが文脈から明らかな場合を除き、時間や期間に関する表現はシミュレータの対象機能で進行する模擬時間軸上での時間を意味するものとする。さらに、以下の説明において、例えば、時刻Ａが時刻Ｂより後の時刻である場合、時刻Ａは時刻Ｂより大きいと表現する。さらに、時刻Ａが時刻Ｂと同じか時刻Ａより後の時刻である場合、つまり、時刻Ａが時刻Ｂ以後の時間である場合を、時刻Ａは時刻Ｂ以上と表現する。
【０００５】
特許文献１は、３つのシミュレータの模擬時刻を、その処理単位時間の最小公倍数の期間で同期させることを開示している。その様子を図１８に示す。ここで、処理単位時間とは、シミュレータが対象機能の模擬を連続して行う模擬時間軸上での時間である。図１８において、ソフトウェアデバッガの処理単位時間は、３ミリ秒である。また、ハードウェアモデルの処理単位時間は、５ミリ秒である。さらに、メカシミュレータの処理単位時間は、１０ミリ秒である。なお、図１８において、斜線の網掛け部分は、対応するシミュレータが模擬処理を行っている状態を示している。また、それ以外の部分は、模擬を行っていない状態であり、対応するシミュレータの模擬時間は停止している。図１８においては、３つのシミュレータの処理単位時間の最小公倍数である３０ミリ秒の周期で、各シミュレータ間の模擬時刻の同期を行っている。つまり、各シミュレータは、３０ミリ秒間の処理を模擬すると、他の総てのシミュレータが同じく３０ミリ秒間の処理を模擬するまで待機している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−３２７９５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、各シミュレータの処理単位時間の最小公倍数を単位として同期を行うものとすると、同期精度が粗くなってしまう。また、状況により模擬時間の進行度合いが変化する場合、適切な同期単位を設定できないことになる。さらに、適正な同期精度を得るために各シミュレータの処理単位時間を統一すると、処理効率の低下を招く恐れがある。例えば、１００ミリ秒単位で変化する機能を模擬する場合において、この模擬に対する処理単位時間を１ミリ秒にすると、模擬対象の動作がさほど変化しないにも係わらず１ミリ秒毎に処理を行わなければならないことになる。
【０００８】
したがって、本発明は、各シミュレータの模擬処理における時刻同期を、各シミュレータの処理効率を低下させることなく実現する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明による情報処理装置は、模擬対象装置の各機能を模擬する複数のシミュレータと、進行単位時間を保持し、基準時刻を管理するシミュレータ接続手段とを備えており、各シミュレータは、シミュレータ接続手段より再開指示を受けると、模擬処理を実行し、シミュレータ接続手段からの指示を待つ指示待ち状態となると、シミュレータ接続手段に時刻情報を通知し、シミュレータ接続手段は、シミュレータから通知された時刻情報が基準時刻に達していないときは、当該シミュレータに再開指示を行い、全シミュレータから通知された時刻情報が基準時刻、又はそれより後の時刻になると、基準時刻を進行単位時間だけ進める様に更新し、時刻情報が、更新した後の基準時刻に達していない総てのシミュレータに前記再開指示を行うことを特徴とする。
【発明の効果】
【００１０】
各シミュレータの時刻が、基準時刻以後の時刻となるまで各シミュレータに模擬処理を実行させ、全シミュレータが基準時刻以後の時刻となった場合に、基準時刻を進行単位時間だけ進める様に更新する。そして、時刻情報が、更新後の基準時刻に達していない総てのシミュレータに再開指示を行う。この処理を繰り返すことで、各シミュレータの待機時間を従来技術より減少させ、よって、各シミュレータの模擬処理における時刻同期を、各シミュレータの処理効率を低下させることなく実現することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明による情報処理装置の実行環境であるコンピュータシステムの機能ブロック図。
【図２】本発明の模擬対象の一形態である電子写真装置の概略的な構成図。
【図３】電子写真装置を模擬する情報処理装置の機能ブロック図。
【図４】同期実行管理部における同期処理のフローチャート。
【図５】用紙搬送シミュレータＩ／Ｆ、プロセスユニットシミュレータＩ／Ｆにおける同期処理のフローチャート。
【図６】ＣＰＵシミュレータＩ／Ｆにおける同期処理のフローチャート。
【図７】第一実施形態での各シミュレータ間の時刻同期処理を示す図。
【図８】第一実施形態での各シミュレータ間の時刻同期処理を示す図。
【図９】従来技術との比較を示す図。
【図１０】第二実施形態における同期実行管理部の同期処理のフローチャート。
【図１１】給紙制御のタイミングチャート。
【図１２】シーケンスデータを示す図。
【図１３】第三実施形態における同期実行管理部の同期処理のフローチャート。
【図１４】簡易シーケンサＩ／Ｆでの時刻管理処理のフローチャート。
【図１５】第三実施形態での各シミュレータ間の時刻同期処理を示す図。
【図１６】第三実施形態での各シミュレータ間の時刻同期処理を示す図。
【図１７】従来技術との比較を示す図。
【図１８】従来技術における時刻同期を説明する図。
【図１９】ＣＰＵシミュレータが通知するイベントを示す図。
【図２０】ＣＰＵシミュレータが受け取る指示を示す図。
【図２１】用紙搬送シミュレータが通知するイベント及び受け取る指示を示す図。
【図２２】プロセスユニットシミュレータが通知するイベント及び受け取る指示を示す図。
【図２３】簡易シーケンサが通知するイベント及び受け取る指示を示す図。
【図２４】各実施形態での同期管理情報を示す図。
【発明を実施するための形態】
【００１２】
本発明を実施するための形態について、以下では図面を用いて詳細に説明する。
【００１３】
（第一実施形態）本発明による情報処理装置は、例えば、パーソナルコンピュータ、ワークステーション等（以下、まとめてコンピュータシステムと記す。）で実行されるプログラムによって実現される。図１に示す様に、コンピュータシステム２００は、プログラムの実行処理を行う中央処理装置（ＣＰＵ）２０１を備えている。ＣＰＵ２０１は、バス２１０経由で、読み出し専用メモリ（ＲＯＭ）２０２や読み書き可能なメモリ（ＲＡＭ）２０３にアクセス可能となっている。バス２１０には、さらに、キーボード、マウス、タブレットなどの入力装置２０５からデータを受け取るための入力インタフェース２０４が設けられている。また、ＣＲＴ、ＬＣＤ、プリンタ、プロッタ等の出力装置２０７にデータを受け渡すための出力インタフェース２０６もバス２１０に接続されている。また、外部記憶インタフェース２０８は、ハードディスクやＣＤ−ＲＯＭ等の外部記憶装置２０９に対するデータの入出力を行うものである。外部記憶装置２０９は、本発明による情報処理装置としてコンピュータシステムを機能させるための処理プログラム２０９ａを保存している。さらに、外部記憶装置２０９は、各種設定データ２０９ｂと、模擬対象の装置で動作する制御ソフトウェア（ファームウェア）２０９ｃを保存している。
【００１４】
続いて、一実施形態として、本発明による情報処理装置が模擬する電子写真装置について説明する。図２の電子写真装置３００は、イエロー、マゼンタ、シアン、ブラックの各色のトナー像が形成される４個の像担持体３０３ａ〜ｄを備えている。像担持体３０３ａ〜ｄは、いわゆる、感光ドラムであり、直列に配置される。１次帯電器３０４ａ〜ｄは、像担持体３０３ａ〜ｄを帯電し、露光装置３０５ａ〜ｄは、像担持体３０３ａ〜ｄに静電潜像を形成し、現像器３０６ａ〜ｄは、静電潜像を現像する。また、クリーニング装置３０７ａ〜ｄは、像担持体３０３ａ〜ｄの残留トナーを除去するためのものである。
【００１５】
感光ドラム３０３ａ〜ｄの下方には、中間転写ベルト３０１が配置される。中間転写ベルト３０１は、中間転写ベルトを駆動するローラ３０８〜３１０の周りに張設され、感光ドラム３０３ａ〜ｄと略同速で矢印方向に回転する。中間転写ベルト３０１は、感光ドラム３０３ａ〜ｄと各１次転写ローラ３０２ａ〜ｄによって挟持される。また、電子写真装置３００は、用紙格納カセット３１２、ピックアップローラ３１３、レジストセンサ３１５、レジストローラ３１４を含む給紙搬送機構を有している。更に、レジストローラ３１４の下流には、中間転写ベルト３０１と当接する２次転写ローラ３１６及び定着装置３１７を含む印字搬送機構と、排紙ローラ３１８及び排紙トレイ３１９を含む排紙搬送機構を有している。
【００１６】
本発明による情報処理装置は、例えば、電子写真装置３００の制御を行うファームウェアの検証評価を、電子写真装置３００を使用することなく行うことを可能とするものである。図１の処理プログラム２０９ａを実行することにより実現される、本発明による情報処理装置の一形態である電子写真装置シミュレーションシステム５００（以後、単にシステムと呼ぶ。）のブロック図を図３に示す。
【００１７】
図３において、ＣＰＵシミュレータ５０２は、実際の電子写真装置３００で動作するファームウェアを実行するものである。また、用紙搬送シミュレータ５０３は、電子写真装置３００において記録材を搬送する用紙搬送機能部分を模擬するものである。さらに、プロセスユニットシミュレータ５０４は、実際の電子写真装置３００における露光装置、現像装置、定着装置を含む電子写真プロセスユニット機能部分を模擬するものである。なお、図３の簡易シーケンサ６０３、外部Ｉ／Ｆ６０１及び簡易シーケンサＩ／Ｆ６０２は第三実施形態での構成要素であり、本実施形態において説明は省略する。
【００１８】
各シミュレータ５０２〜５０４は、それぞれ独立したプロセスであり、それぞれ、他の機能と接続するための外部Ｉ／Ｆ５１５〜５１７を備えている。また、シミュレータ接続部５０１は、各シミュレータと接続するためのシミュレータＩ／Ｆ５０６〜５０８を備えている。なお、シミュレータ接続部５０１は、マルチスレッド構成となっており、コア部５０５、ＣＰＵシミュレータＩ／Ｆ５０６、用紙搬送シミュレータＩ／Ｆ５０７、プロセスユニットシミュレータＩ／Ｆ５０８は各々別スレッドとして並列に処理が行われる。
【００１９】
シミュレータＩ／Ｆ５０６〜５０８は、それぞれ、接続先のシミュレータの外部Ｉ／Ｆに適合した接続処理を行うが、コア部５０５とは共通の仕様に基づいて接続処理を行う。つまり、シミュレータＩ／Ｆ５０６〜５０８は接続処理の変換を提供する。各シミュレータＩ／Ｆ５０６〜５０８を実現するプログラムは、外部記憶装置２０９の処理プログラム２０９ａ内にＩ／Ｆライブラリとして格納されている。Ｉ／Ｆライブラリはシステムを構成する各シミュレータに応じて用意されるもので、ダイナミックリンクライブラリ（ｄｌｌ）として提供される。この様に構成することで、本実施形態に示すシミュレータ５０２〜５０４以外の様々なシミュレータを容易にシステム５００に組み込むことが可能になる。
【００２０】
なお、図３において外部記憶装置２０９は、図１の設定データ２０９ｂに対応するシミュレータ構成定義情報５１８と同期定義情報５１９を保持している。
【００２１】
コア部５０５の同期モジュール５０９は、各シミュレータ５０２〜５０３の模擬時刻を同期させるものである。同期モジュール５０９による同期処理の詳細は後述する。また、配線モジュール５１０は、予め設定された配線定義情報に基づき、各シミュレータ５０２〜５０４間の仮想信号の伝送処理を行う。ここで、仮想信号とはシミュレータ５０２〜５０４間で等価として扱われる信号のことである。例えば、ＣＰＵシミュレータ５０２のモータ制御信号の仮想ポートと、用紙搬送シミュレータ５０３が模擬するモータの動作設定情報は等価である。具体的には、ＣＰＵシミュレータ５０２によるシミュレーションの結果、モータ制御信号の仮想ポートがモータ駆動を示す値に変化したとする。この場合、用紙搬送シミュレータ５０３のモータモデルの動作設定情報もメインモータ駆動を示す値にならなければならない。配線モジュール５１０は、仮想信号をシミュレータ間において伝達し、全シミュレータでの処理を同期させるものである。
【００２２】
ＣＰＵシミュレータ５０２は、外部記憶装置２０９に格納された電子写真装置３００のファームウェア２０９ｃをＲＡＭ２０３にロードしてファームウェアプログラムを実行する。具体的には、ＲＡＭ２０３上に擬似的に定義されたターゲットＣＰＵのレジスタ、メモリ、入出力信号の読み出し、書き込みと各種演算を実行する。また、命令実行とともにターゲットＣＰＵにおいて進行する実行サイクル数を計算し、総実行サイクル数を更新する。この総実行サイクル数が、ＣＰＵシミュレータ５０２における模擬時刻となる。
【００２３】
ＣＰＵシミュレータ５０２は、模擬処理中に各種イベントが発生すると、模擬処理を一時停止し、発生したイベントを外部Ｉ／Ｆ５１５を介してシミュレータ接続部５０１に通知する。また、ＣＰＵシミュレータ５０２は、シミュレータ接続部５０１から各種指示を受け付ける。
【００２４】
図１９は、ＣＰＵシミュレータ５０２が、外部に通知するイベントの例である。開始イベントは、オペレータによる操作、又は、外部からの指示により模擬処理の実行を開始したときに発生するイベントである。終了イベントは、オペレータによる操作、又は、外部からの指示により模擬処理が終了したときに発生するイベントである。リードアクセス・イベントは、ファームウェアの実行により所定の仮想アドレス（ターゲットＣＰＵ上のアドレス）領域からデータの読出しが行われる場合に発生するイベントである。このイベントは、所定領域からのリード命令実行直前に発生する。ここで、イベント発生の対象となる仮想アドレス領域は、外部からの指示により予め指定された領域である。リードアクセス・イベントでは、リード対象のアドレス、読み出しサイズ、読み出し値、総実行サイクル数が通知される。
【００２５】
ライトアクセス・イベントは、ファームウェアの実行により所定の仮想アドレス領域へのデータの書込みが行われる場合に発生するイベントである。このイベントは、所定領域へのライト命令実行直後に発生する。ここで、イベント発生の対象となる仮想アドレス領域は、外部からの指示により予め指定された領域である。ライトアクセス・イベントでは、書き込みアドレス、書き込みサイズ、書き込み値、総実行サイクル数が通知される。
【００２６】
なお、リードアクセス及びライトアクセスの各イベントの対象となる仮想アドレス領域は、メモリ、入出力信号、アドレス空間上にマッピングされたレジスタ（ＣＰＵ周辺回路の制御レジスタ等）である。
【００２７】
割り込みイベントは、外部からの指示に応じて割込み処理の模擬を開始したときに発生するイベントである。このイベントは、ファームウェアの割込みハンドラの処理開始直前に発生する。割り込みイベントでは、発生した割込みの番号（割り込み番号）、総実行サイクル数が通知される。ここで、割込み番号はターゲットＣＰＵにおいて、予め定義された番号で、外部から割込みを指示する際には、割込み番号によって割込みの種別を指定する。
【００２８】
タイマ・イベント（指定サイクル数到達イベント）は、ファームウェアの実行に伴いカウントされるターゲットＣＰＵ上の総実行サイクル数が、指定されたサイクル数に到達した場合に発生するイベントである。ただし、指定されたサイクル数の到達が１命令実行途中にあたる場合には、当該命令の模擬終了後に、このタイマ・イベントは発生する。タイマ・イベントでは、タイマ・イベント番号と総実行サイクル数が通知される。ここで、タイマ・イベント番号はタイマ・イベント発生条件を指定する際にタイマ・イベント毎に指定される番号である。
【００２９】
ＣＰＵシミュレータ５０２は、イベントを外部に通知した場合、シミュレーションを一時停止して指示待ち状態となる。そして、シミュレータ接続部５０１から再開指示を受けた場合、シミュレーションを再開する。
【００３０】
図２０は、ＣＰＵシミュレータ５０２が、シミュレータ接続部５０１から受け取る指示の例である。開始指示は、模擬実行開始の指示である。ＣＰＵシミュレータ５０２は、終了状態において開始指示を受けると指示待ち状態になる。終了指示は、模擬終了の指示である。ＣＰＵシミュレータ５０２は、模擬処理中、又は、指示待ち状態であるときに終了指示を受けると、シミュレータ接続部５０１に模擬終了を通知する。なお、模擬処理中である場合には、このとき、指示待ち状態に遷移する。その後、シミュレータ接続部５０１から再開指示を受けたときに終了処理を行い終了状態に遷移する。
【００３１】
一時停止指示は、模擬処理の一時停止の指示である。ＣＰＵシミュレータ５０２は、模擬処理中に一時停止指示を受信すると、模擬処理を停止して、指示待ち状態に遷移する。なお、ＣＰＵシミュレータ５０２は、各イベントを通知したときにも、指示待ち状態に遷移する。なお、ＣＰＵシミュレータ５０２は、指示待ち状態において再開指示を受け取ると、停止していた模擬処理を再開する。
【００３２】
リードイベント領域指定指示は、リードイベント発生の対象となる仮想アドレス領域を指定するものである。具体的には、対象となる仮想アドレスとデータサイズを指定する。ライトイベント領域指定指示は、ライトイベント発生の対象となる仮想アドレス領域を指定するものであり、対象となる仮想アドレスとデータサイズを指定する。
【００３３】
所定領域読出し指示は、仮想アドレス領域の値の読出しを要求するもので、対象となる仮想アドレス、読出しサイズ、読み出したデータを格納する領域を指定する。ＣＰＵシミュレータ５０２は、本指示を受けると、指定された仮想アドレスから指定されたサイズのデータを読み出し、指定された格納領域に書き込む。所定領域書込み指示は、仮想アドレス領域に値の書込みを要求するもので、対象となる仮想アドレス、書込みサイズ、書込み値を指定する。ＣＰＵシミュレータ５０２は、本指示を受けると、指定された値を、指定された仮想アドレスに指定されたサイズで書き込む。
【００３４】
レジスタ読出し指示は、指定された仮想レジスタの値の読出しを要求するもので、対象となるレジスタＩＤを指定する。ここで、レジスタＩＤは、ＣＰＵシミュレータ５０２がターゲットＣＰＵの持つレジスタ各々に固有の番号を対応付けて定義したものである。ＣＰＵシミュレータ５０２は本指示を受けるとＩＤによって指定された仮想レジスタの値を外部に報知する。レジスタ書込み指示は、指定された仮想レジスタへの値の書込みを要求するもので、対象となるレジスタＩＤと書込み値を指定する。ＣＰＵシミュレータ５０２は本指示を受けるとＩＤによって指定された仮想レジスタの値を指定された値に変更する。
【００３５】
なお、レジスタ読出し／書込み指示で対象とするレジスタは、ターゲットＣＰＵの内部のレジスタ（アドレスマップ上に定義されないレジスタ）である。なお、アドレスマップ上で定義される、周辺回路の制御レジスタ等へのアクセスは、所定領域読出し／書込み指示により対応する。
【００３６】
割込み発生指示は、ファームウェアの処理において割込みを要求するものであり、割込み番号を指定する。ここで、割込み番号は、ＣＰＵシミュレータ５０２がターゲットＣＰＵの持つ割込み各々に固有の番号を対応付けて定義したものである。ＣＰＵシミュレータ５０２は、本指示を受けると割込み番号によって指定された割込み処理を実行する。タイマ・イベント発生指示は、指定された総実行サイクル数でタイマ・イベントの発生を指示するもので、タイマ・イベント番号と総実行サイクル数を指定する。
【００３７】
用紙搬送シミュレータ５０３は、モータ、アクチュエータ、センサを含む電子写真装置３００の用紙搬送機構を構成する各種機構部品、機構部品により搬送される用紙の動作を模擬する。用紙搬送シミュレータ５０３は、機構部品や用紙の動作を出力装置２０７の表示装置に表示すると共に、模擬処理の結果として、センサ情報をシミュレータ接続部５０１に出力する。
【００３８】
用紙搬送シミュレータ５０３は、処理単位時間毎に、模擬対象である用紙搬送機構の動作に関する指定をシミュレータ接続部５０１から取得する。そして、用紙搬送機構の各構成要素間の相互作用に関する定義と、指定された動作から、処理単位時間経過時の各構成要素の状態を解析する。用紙搬送シミュレータ５０３は、解析が終了する度に表示装置の表示を更新し、かつ、センサ状態をシミュレータ接続部５０１に出力する。なお、これら処理のための上記相互作用に関する定義や、初期状態に関する情報は、シミュレータ構成定義情報５１８に含まれている。
【００３９】
なお、用紙搬送シミュレータ５０３の処理単位時間は、例えば、５ミリ秒、１０ミリ秒、２０ミリ秒から選択できる。処理単位時間の選択は、同期定義情報５１９に選択する処理単位時間を示すデータを追加することにより行う。
【００４０】
図２１（ａ）は、用紙搬送シミュレータ５０３が、外部に通知するイベントの例である。開始及び終了イベントは、ＣＰＵシミュレータ５０２と同じである。指示待ちイベントは、処理単位時間が経過して指示待ち状態になったときに発生するイベントである。指示待ちイベントでは、その時点における用紙搬送シミュレータ５０３の模擬時刻が通知される。
【００４１】
センサ状態変化イベントは、センサとして定義されたモデルの状態が変化した場合に発生するイベントである。センサ状態変化イベントでは、変化したセンサのＩＤ、センサ状態情報が通知される。ここで、センサＩＤは、用紙搬送シミュレータ５０３に定義されたセンサモデルに対して予め付与されたものである。センサモデルとセンサＩＤの関連付け情報は、設定データ２０９ｂに含まれている。
【００４２】
図２１（ｂ）は、用紙搬送シミュレータ５０３が、シミュレータ接続部５０１から受け取る指示の例である。開始指示は、模擬処理の実行開始の指示である。用紙搬送シミュレータ５０３は、終了状態であるときに開始指示を受けると、指示待ち状態になる。終了指示は、模擬処理終了の指示である。用紙搬送シミュレータ５０３は、終了指示を受けると模擬処理を終了して終了状態になる。
【００４３】
再開指示は、処理単位時間分の模擬処理の実行指示である。用紙搬送シミュレータ５０３は、指示待ち状態で再開指示を受けると、処理単位時間分の模擬処理を行い、その後、指示待ち状態に遷移する。
【００４４】
モータ動作指示は、モータ動作を指定するもので、モータＩＤと模擬処理におけるモータの動作（駆動／停止）を指定する。ここで、モータＩＤは、用紙搬送シミュレータ５０３に定義されたモータモデルに対して予め付与したものである。また、各モータの駆動時の速度情報も、予め設定されて外部記憶装置２０９に格納されている。用紙搬送シミュレータ５０３は、モータ動作の指定を受けると、指定に従って次の模擬処理におけるモータモデルの動作を決め、各構成要素の動きを解析する。
【００４５】
ソレノイド動作指示は、ソレノイド動作を指定するもので、ソレノイドＩＤと次の模擬処理におけるソレノイドの動作（駆動／停止）を指定する。ここで、ソレノイドＩＤは、用紙搬送シミュレータ５０３に定義されたソレノイドモデルに対して予め付与されたものである。用紙搬送シミュレータ５０３は、ソレノイド動作の指定を受けると、指定に従って次の模擬処理におけるレノイドモデルの動作を決め、各構成要素の動きを解析する。
【００４６】
クラッチ動作指示は、クラッチ動作を指定するもので、クラッチＩＤと次の模擬処理におけるクラッチの動作（駆動／停止）を指定する。ここで、クラッチＩＤは、用紙搬送シミュレータ５０３に定義されたクラッチモデルに対して予め付与されたものである。用紙搬送シミュレータ５０３は、クラッチ動作の指定を受けると、指定に従って次の模擬処理のクラッチモデルの動作を決め、各構成要素の動きを解析する。
【００４７】
プロセスユニットシミュレータ５０４は、電子写真プロセスユニットを模擬するものであるが、電子写真プロセスユニットの構成は、電子写真装置の機種毎に異なる。これに対応するため、プロセスユニットシミュレータ５０４の動作は、処理単位時間に実行すべき動作を記述した命令文（以下、プロセスマクロと呼ぶ）により制御される。プロセスマクロは、対象とする電子写真装置の機種毎に用意する。プロセスマクロは、シミュレータ構成定義情報５１８の一部として外部記憶装置２０９に格納される。
【００４８】
例えば、定着装置のシミュレーションの場合、処理単位時間毎に、定着装置内のヒータ及び排紙モータの状態、定着ローラ部の用紙の有無についての情報を受け取る。その後、受け取った情報と所定の演算式に基づき、定着装置内の温度センサの検出温度を求め、検出温度の情報を出力する。
【００４９】
プロセスユニットシミュレータ５０４は、例えば、１ミリ秒、２ミリ秒、４ミリ秒から処理単位時間を選択できる。使用する処理単位時間の選択は、用紙搬送シミュレータ５０３と同じである。
【００５０】
プロセスユニットシミュレータ５０４で発生するイベントや、プロセスユニットシミュレータ５０４に対する指示は、対象とする電子写真装置３００による異なる。このため、プロセスユニットシミュレータ５０４に対するプロセスマクロ毎に定義情報を作成する。定義情報は、情報ＩＤ、データサイズ、データ種別（ビット／デジタル／アナログ）からなり、シミュレータ構成定義情報５１８として外部記憶装置２０９に格納される。
【００５１】
図２２（ａ）は、プロセスユニットシミュレータ５０４が、シミュレータ接続部５０１に通知するイベントの例である。開始、終了及び指示待ちイベントは、用紙搬送シミュレータ５０３と同じである。出力情報変化イベントは、定義情報で定義された情報が変化した時に発生するイベントである。出力情報変化イベントでは、変化した情報のＩＤ、変化後の値が通知される。
【００５２】
図２２（ｂ）は、プロセスユニットシミュレータ５０４が、シミュレータ接続部５０１を介して受け取る指示の例である。開始、終了及び再開指示は、用紙搬送シミュレータ５０３と同じである。入力情報指示は、定義情報で定義された情報の値を指定するもので、情報ＩＤと設定値を指定する。
【００５３】
上記システム５００の様に、複数のシミュレータを連携させる構成においては、模擬時間の進行度合いの異なるシミュレータ間で、模擬時刻の同期を行う必要がある。本実施形態においては、各シミュレータの処理単位時間の最大値を同期単位時間に設定し、基準時刻を進める単位である進行単位時間を同期単位時間と等しくする。具体的には、総てのシミュレータは、その模擬時刻が基準時刻以上となるまで模擬処理を行い、基準時刻と同じ又は基準時刻を超えたところで処理を停止する。総てのシミュレータの模擬時刻が基準時刻以上となった場合、この基準時刻を同期単位時間（＝進行単位時間）だけ進め、次の処理を行う。以下に、詳細を説明する。
【００５４】
まず、図３の同期モジュール５０９について説明する。基準時刻保持部５１２は、システム５００の模擬時刻の基準となる基準時刻を保持するものである。同期管理情報保持部５１３は、各シミュレータ５０２〜５０４の同期処理状態を管理するための同期管理情報を保持している。
【００５５】
図２４（ａ）は、本実施形態での同期管理情報を示している。図２４（ａ）に示す様に、同期管理情報は、シミュレータ５０２〜５０４に付与されたシミュレータＩＤと、シミュレータ５０２〜５０４の同期状態との関係を示すものである。なお、“対象外”は、対応するシミュレータＩＤが付与されたシミュレータが利用されていないことを示しいている。
【００５６】
なお、シミュレータＩＤは、シミュレータ構成定義情報５１８に基づき、配線モジュール５１０が各シミュレータに付与する識別子である。配線モジュール５１０は、システム５００の起動時に各シミュレータのシミュレータＩＤを決定し、対応するシミュレータＩ／Ｆ５０６〜５０８に対して決定したシミュレータＩＤを通知する。各シミュレータＩ／Ｆ５０６〜５０８は、コア部５０５への通知情報に、通知されたシミュレータＩＤを付加する。コア部５０５は、シミュレータＩＤにより、通知を出したシミュレータＩ／Ｆ５０６〜５０８を識別する。また、コア部５０５は、各シミュレータＩ／Ｆ５０６〜５０８への通知に際して、通知先のシミュレータＩＤを付加する。各シミュレータＩ／Ｆ５０６〜５０８は、シミュレータＩＤにより、自身への通知を判別する。
【００５７】
時間情報保持部５１４は、システム５００における同期単位時間を保持し、同期実行管理部５１１は、システム５００全体の同期処理を実行する。以下、図４のフローチャートを用いて同期実行管理部５１１での処理を説明する。
【００５８】
まず、Ｓ１０１において、同期実行管理部５１１は、管理情報、つまり、基準時刻及び同期管理情報を初期化する。具体的には、基準時刻を０に設定し、配線モジュール５１０から通知を受けたシミュレータＩＤの同期状態情報を“未終了”に、それ以外のシミュレータＩＤの同期状態情報を“対象外”に設定する。また、総てのシミュレータの、模擬時刻を０に設定する。さらに、同期実行管理部５１１は、各シミュレータの処理単位時間を同期定義情報５１９から取得し、その一番大きい値を、同期単位時間として時間情報保持部５１４に設定する。なお、各シミュレータの処理単位時間以上の値、つまり、処理単位時間の最大値以上の値を同期単位時間とすることもできる。
【００５９】
Ｓ１０２において、同期実行管理部５１１は、基準時刻を同期単位時間だけ進め、Ｓ１０３において、全シミュレータに再開指示を通知する。その後、Ｓ１０４において、同期実行管理部５１１は、各シミュレータＩ／Ｆ５０６〜５０８からの時刻更新通知を待つ。各シミュレータＩ／Ｆ５０６〜５０８は、例えば、対応するシミュレータ５０２〜５０４から総実行サイクル数や、模擬時刻を含むイベント通知を受け取った場合、同期実行管理部５１１に時刻更新通知を行う。
【００６０】
同期実行管理部５１１は、Ｓ１０５において、対象シミュレータのシミュレータＩＤ及び模擬時刻を取得する。なお、対象シミュレータとは、Ｓ１０４における時刻更新通知の元となったイベントが発生したシミュレータである。同期実行管理部５１１は、Ｓ１０６において、基準時刻とＳ１０５で取得した模擬時刻を比較する。比較の結果、模擬時刻が基準時刻に達していない場合、同期実行管理部５１１は、Ｓ１１０において、対象シミュレータに再開指示を行う。つまり、模擬時刻が基準時刻より遅れている場合には、Ｓ１１０の処理を行う。一方、模擬時刻が基準時刻以上である場合、同期実行管理部５１１は、対象シミュレータの同期単位時間における処理が終了したと判断する。したがって、同期実行管理部５１１は、Ｓ１０７において、対象シミュレータに対応する同期状態情報を“終了”に設定する。
【００６１】
同期実行管理部５１１は、Ｓ１０８において、総てのシミュレータの同期状態情報が“終了”となっているか否かを判定する。なお、同期状態情報が“対象外”であるシミュレータは判定の対象外である。総てのシミュレータの同期状態情報が“終了”ではない場合、同期実行管理部５１１は、総てのシミュレータの同期状態情報が“終了”となるまで上述した処理を繰り返す。また、総てのシミュレータの同期状態情報が“終了”である場合、同期実行管理部５１１は、Ｓ１０９において、総てのシミュレータの同期状態情報を“未終了”に設定し、これにより１つの同期単位時間における処理が終了する。その後、同期実行管理部５１１は、次の同期単位時間の処理としてＳ１０２から上述した処理を開始する。
【００６２】
続いて、用紙搬送シミュレータＩ／Ｆ５０７における同期処理を説明する。図５のＳ２０１において、シミュレータＩ／Ｆ５０７は、配線モジュール５１０から、対応するシミュレータのシミュレータＩＤを取得する。つまり、本例においては、用紙搬送シミュレータ５０３のシミュレータＩＤを取得する。Ｓ２０２において、シミュレータＩ／Ｆ５０７は、対応シミュレータに開始指示を行う。これにより、用紙搬送シミュレータ５０３は、指示待ち状態に遷移する。
【００６３】
次に、シミュレータＩ／Ｆ５０７は、Ｓ２０３において、同期実行管理部５１１からの再開指示を待つ。再開指示を受け取ると、シミュレータＩ／Ｆ５０７は、Ｓ２０４において、用紙搬送シミュレータ５０３に再開指示を行う。用紙搬送シミュレータ５０３は、再開指示に応じて、処理単位時間分の模擬を行う。用紙搬送シミュレータ５０３は、処理単位時間の模擬処理の終了に伴い、指示待ちイベントをシミュレータＩ／Ｆ５０７に通知して、指示待ち状態に遷移する。
【００６４】
シミュレータＩ／Ｆ５０７は、Ｓ２０５において、用紙搬送シミュレータ５０３からのイベントの発生を待つ。用紙搬送シミュレータ５０３からイベント通知を受けると、シミュレータＩ／Ｆ５０７は、Ｓ２０６において、受け取ったイベントが終了イベントであるか否かを判定する。終了イベントである場合、シミュレータＩ／Ｆ５０７は処理を終了する。そうでない場合、シミュレータＩ／Ｆ５０７は、Ｓ２０７において、受け取ったイベントが指示待ちイベントであるか否かを判定する。指示待ちイベントではない場合、処理は、Ｓ２０５に戻る。一方、指示待ちイベントの場合、シミュレータＩ／Ｆ５０７は、Ｓ２０８においてイベントの通知に含まれている模擬時刻を取得する。その後、シミュレータＩ／Ｆ５０７は、Ｓ２０９において、同期実行管理部５１１に時刻更新を通知する。なお、同期実行管理部５１１には、用紙搬送シミュレータ５０３のシミュレータＩＤと、Ｓ２０８で取得した模擬時刻も通知する。
【００６５】
なお、プロセスユニットシミュレータＩ／Ｆ５０８における同期処理は、図５の用紙搬送シミュレータ５０３をプロセスユニットシミュレータ５０４に読み替えればよく、その詳細についての説明は省略する。
【００６６】
続いて、ＣＰＵシミュレータＩ／Ｆ５０６における同期処理の説明を行う。図６のＳ３０１から３０３の処理は、図５のＳ２０１〜Ｓ２０３の処理に対応するものであり説明は省略する。シミュレータＩ／Ｆ５０６は、Ｓ３０４において、ＣＰＵシミュレータ５０２の処理単位時間に対応する総実行サイクル数を求めて、タイマ・イベント設定指示によりＣＰＵシミュレータ５０２に、タイマ・イベントの発生間隔を設定する。
【００６７】
本実施形態においては、ＣＰＵシミュレータ５０２のタイマ・イベントにより模擬時間軸における一定間隔でイベントを発生させることで、確実な同期を保証している。なお、処理単位時間は利用者によってあらかじめ指定され、同期定義情報５１９に格納されている。ただし、ＣＰＵシミュレータ５０２が通知するイベントにおいて、総実行サイクル数を含むものは、総て他のシミュレータとの同期のためのイベントとして使用可能である。Ｓ３０５において、シミュレータＩ／Ｆ５０６は、同期実行管理部５１１からの通知により、ＣＰＵシミュレータ５０２に再開指示を行う。その後、シミュレータＩ／Ｆ５０６は、Ｓ３０６において、ＣＰＵシミュレータ５０２からのイベント発生を待つ。
【００６８】
ＣＰＵシミュレータ５０２からイベント通知を受けると、ＣＰＵシミュレータＩ／Ｆ５０６は、Ｓ３０７において、通知されたイベントが終了イベントであるか否かを判定する。終了イベントである場合、ＣＰＵシミュレータ５０２及びＣＰＵシミュレータＩ／Ｆ５０６は処理を終了する。そうでない場合、シミュレータＩ／Ｆ５０６は、同期実行管理部５１１にＣＰＵシミュレータ５０２のシミュレータＩＤ、模擬時刻と共に時刻更新を通知してＳ３０３に戻る。
【００６９】
続いて、各シミュレータ間の時刻同期動作について説明する。例えば、用紙搬送シミュレータ５０３の処理単位時間を５ミリ秒、プロセスユニットシミュレータ５０４の処理単位時間を４ミリ秒であるものとする。この場合、同期単位時間は、値の大きい５ミリ秒となり、ＣＰＵシミュレータ５０２のタイマ・イベントは、同期単位時間である５ミリ秒間隔で発生する様に設定される。図７は、同期単位時間が５ミリ秒である場合において、時刻１０００ミリ秒から１００５ミリ秒の各構成要素における処理を示している。また、図８は、時刻１００５ミリ秒から１０１０ミリ秒の同期単位時間における各構成要素における処理を示している。図７及び８において、縦方向の実線矢印は、各シミュレータが処理を行っている状態を、破線は、各シミュレータが指示待ち状態であることを示している。また、横方向の矢印は、各シミュレータ５０２〜５０４と、対応するシミュレータＩ／Ｆ５０６〜５０８との間、及び、各シミュレータＩ／Ｆ５０６〜５０８と同期実行管理部５１１との間の情報伝達を示している。
【００７０】
図７に示す様に、同期単位時間の開始時において、ＣＰＵシミュレータ５０２の模擬時刻は１０００．０００１ミリ秒である。また、用紙搬送シミュレータ５０３及びプロセスユニットシミュレータ５０４の模擬時刻は１０００ミリ秒となっている。
【００７１】
図７に示す様に、同期実行管理部５１１は、基準時刻の値を同期単位時間だけ進めて１００５ミリ秒に更新する。その後、同期実行管理部５１１は、各シミュレータＩ／Ｆ５０６〜５０８経由で各シミュレータ５０２〜５０４に再開指示を行う。
【００７２】
各シミュレータＩ／Ｆ５０６〜５０８は、対応するシミュレータからのイベント通知に含まれる模擬時刻を同期実行管理部５１１に通知する。同期実行管理部５１１は、通知された模擬時刻と基準時刻を比較する。通知された模擬時刻が、基準時刻以降の時刻である場合、同期実行管理部５１１は、対応するシミュレータの同期状態情報を“終了”に変更する。変更により、総てのシミュレータの同期状態情報が“終了”となった場合、同期モジュール５０９は、同期単位時間における処理が終了したと判断し、次の同期単位時間における処理を開始する。
【００７３】
図７においては、用紙搬送シミュレータ５０３は、処理単位時間の模擬を１回だけ実行したところで模擬時刻が１００５ミリ秒となり同期終了している。また、プロセスユニットシミュレータ５０４は、処理単位時間の模擬を２回実行したところで模擬時刻が１００８ミリ秒となり同期終了している。さらに、ＣＰＵシミュレータ５０２は、タイマ・イベント発生により１００５．０００３ｍｓで同期終了している。なお、ＣＰＵシミュレータ５０２のタイマ・イベントは、ターゲットＣＰＵの１命令実行の途中では発生しないためイベント発生時刻には端数が発生する。図７においては、ＣＰＵシミュレータ５０２の同期終了により、同期実行管理部５１１は、次の同期単位時間における処理のため、タイマ・イベント設定指示により、基準時刻を１０１０ｍｓに進めている。また、図８においては、用紙搬送シミュレータ５０３が処理単位時間の模擬を１回だけ実行したところで模擬時刻が１０１０ミリ秒となり同期終了している。さらに、プロセスユニットシミュレータ５０４が処理単位時間の模擬を１回だけ実行したところで模擬時刻が１０１２ミリ秒となり同期終了している。
【００７４】
例えば、本実施形態を、図１８にて説明したのと同じ構成に対して適用した場合の様子を図９に示す。図９において、各シミュレータの白枠内の数字は模擬時刻である。なお、模擬時刻を示すために、時間方向の長さは、その値と比例させていない。図１８と同じく、網がけ領域は模擬処理を実行している状態を、つまり、模擬時間が進行している期間を表している。なお、同期単位時間は、３つのシミュレータの処理単位時間の最大値である１０ミリ秒となる。
【００７５】
同期実行管理部５１１は、同期単位時間の処理の最初に基準時刻を同期単位時間である１０ミリ秒だけ進める様に更新する。そして、各シミュレータが処理単位時間の模擬を行う度に、同期実行管理部５１１は、各シミュレータの模擬時刻と基準時刻を比較する。図９では基準時刻１０ミリ秒に更新したときの同期処理において、ソフトウェアデバッガ、ハードウェアモデル、メカシミュレータが、それぞれ、４単位、２単位、１単位分の模擬を行っている。この処理を順次繰り返すことにより、模擬時間１０ミリ秒単位で全シミュレータの時刻同期が行われることになる。
【００７６】
以上の構成により、模擬時間の進行度合いが異なるシミュレータ間において、より高精度に時刻を同期させることができる。
【００７７】
（第二実施形態）第一実施形態は、各シミュレータの処理単位時間の最大値以上の値を同期単位時間とするものであった。しかし、シミュレータの組合せによっては、より高精度の時刻同期が必要な場合がある。つまり、より短い間隔での同期が必要な場合がある。本実施形態においては同期単位時間を複数設け、これにより、高精度な時刻同期が必要なシミュレータにも対応するものである。なお、複数の同期単位時間は、各シミュレータの処理単位時間の最大値以下の値とすることが好ましい。
【００７８】
本実施形態において、図３の時間情報保持部５１４は、複数の同期単位時間を保持している。なお、各シミュレータ５０２〜５０４と同期単位時間の対応は、利用者があらかじめ選択して、同期定義情報５１９として保存したものである。さらに、本実施形態において、図３の同期管理情報保持部５１３は、図２４（ｂ）に示す同期管理情報を保持する。
【００７９】
第一実施形態との違いは、同期段階情報を有することである。同期段階情報は、対応するシミュレータが、どの同期単位時間に従うかを示す情報である。
【００８０】
以下、本実施形態における同期実行管理部５１１での処理を説明する。なお、本実施形態においては、基準時刻を進める単位である進行単位時間を、各同期単位時間の最大公約数とする。よって、進行単位時間を先に決定している場合、利用者が予め設定する複数の同期単位時間は、この進行単位時間の整数倍に設定する。図１０のＳ４０１において、同期実行管理部５１１は、管理情報の初期化を行う。図４のＳ１０１の処理と同様であるが、本実施形態において、同期実行管理部５１１は、同期定義情報５１９から複数の同期単位時間を取得して時間情報保持部５１４に保存する。また、同期実行管理部５１１は、取得した同期単位時間の最大公約数を進行単位時間として時間情報保持部５１４に保存する。さらに、同期実行管理部５１１は、各同期単位時間とシミュレータとの対応関係を、同期管理情報保持部５１３に設定する。
【００８１】
同期実行管理部５１１は、Ｓ４０２で基準時刻を進行単位時間だけ進め、Ｓ４０３において、基準時刻が複数の同期単位時間のいずれかの倍数であるか否かを判定する。いずれの倍数でもない場合にはＳ４０２に戻る。いずれかの倍数である場合、Ｓ４０４において、同期実行管理部５１１は、基準に適合するシミュレータに再開指示を行う。ここで、基準に適合するシミュレータとは、基準時刻がその同期単位時間の倍数となっているシミュレータである。例えば、３つのシミュレータの同期単位時間が、それぞれ、２ミリ秒、１０ミリ秒、３０ミリ秒であり、基準時刻が１０００ミリであるものとする。この場合、同期単位時間が２ミリ秒及び１０ミリ秒のシミュレータが、基準に適合するシミュレータである。以後の処理は、処理の対象とするシミュレータが、基準に適合するシミュレータ（同期対象シミュレータ）となる以外は、図１の対応する処理と同様であり、詳細な説明は省略する。ただし、Ｓ４０７において時刻更新通知のあったシミュレータが同期対象シミュレータであるかどうかを判定し、同期対象シミュレータでない場合にはＳ４０５に戻る処理が加わっている。
【００８２】
なお、本実施形態における各シミュレータＩ／Ｆ５０６〜５０８の処理は、第一実施形態と同様であり説明は省略する。
【００８３】
以上の構成により、各シミュレータの条件に応じた最適な同期間隔での同期処理が可能となる。
【００８４】
（第三実施形態）第一実施形態及び第二実施形態において、各シミュレータには、処理単位時間が予め設定されている。しかし、処理単位時間はシミュレータにより大きく異なる場合がある。本実施形態は、その様な場合においても、同期処理を可能とするものである。本実施形態においては、図３の簡易シーケンサ６０３を含む総ての構成要素を使用する。つまり、第一実施形態の構成に対して、外部Ｉ／Ｆ６０１を含む簡易シーケンサ６０３を追加し、シミュレータ接続部５０１に管理シーケンサＩ／Ｆ６０２を設けた構成となっている。まず、本実施形態で追加された要素である、簡易シーケンサ６０３及び管理シーケンサＩ／Ｆ６０２について説明する。
【００８５】
簡易シーケンサ６０３は、出力信号の変化とその発生条件を定義するシーケンスデータに従い、対象機能の所定の信号変化を模擬するものである。シーケンスデータは、利用者が用意し、シミュレータ構成定義情報５１８の一部として外部記憶装置２０９に保存される。簡易シーケンサ６０３は、シミュレーションの実行開始と共に、シーケンスデータデータを読み込み、定義された出力信号発生条件に従って所定の信号変化を発生させ外部に出力する。
【００８６】
例えば、簡易シーケンサ６０３が、電子写真装置３００の給紙に関する制御を行う給紙制御部の機能を模擬するように構成されているものとする。つまり、給紙制御部に関しては、簡易シーケンサ６０３によって外部仕様上の動作のみを模擬する。まず、模擬対象の給紙制御部におけるシーケンスを説明する。
【００８７】
図１１において、信号名の後の（出）は、給紙制御部からの出力信号を、（入）は給紙制御部への入力信号を示している。給紙制御部は、給紙開始指示を、電子写真装置３００の全体を制御する主制御部からシリアルコマンドで受けると、給紙モータ駆動信号を“Ｈ”（駆動）レベルに設定する。設定してから４００ミリ秒後、給紙制御部は、ピックアップソレノイド駆動信号、レジストクラッチ駆動信号を“Ｈ”（駆動）レベルに設定する。さらに、１００ミリ秒後、給紙制御部は、ピックアップソレノイド駆動信号を“Ｌ”（停止）レベルに設定する。レジストセンサが、用紙の先端を検出すると、レジストセンサ信号が立ち上がり、これにより、給紙制御部は、レジストクラッチ駆動信号を“Ｌ”（停止）レベルに設定し、給紙完了をシリアルステータス信号で主制御部に通知する。その後、搬送トリガの入力を検出すると、給紙制御部は、レジストクラッチ駆動信号を“Ｈ”レベルに設定する。その後、レジストセンサ信号の立下りを検出すると、給紙制御部は、レジクストラッチ駆動信号を“Ｌ”レベルに設定し、５００ミリ秒後に給紙モータ駆動信号を“Ｌ”（停止）レベルする。
【００８８】
図１２は、図１１の制御シーケンスを、簡易シーケンサ６０３のシーケンスデータとして設定した例である。図では説明のために表形式で示しているが、実際のシーケンスデータは、図に示す内容を所定の書式に従って記述したものである。シーケンスデータは、複数の処理を含み、各処理は、“処理番号”と、“処理”と、“信号名”と、“データ”と、“待ち条件”の各フィールドで規定される。
【００８９】
処理番号フィールドは、処理の番号を示し、簡易シーケンサ６０３は、“処理移行”処理を除き、処理番号が示す順に処理を実行する。
【００９０】
処理フィールドは処理内容を示し、“信号変化待ち”と、“時間待ち”と、“信号出力”と、“処理移行”処理の４種類が定義されている。信号変化待ち処理は、待ち条件フィールドで規定される待ち条件に適合するまで、所定の入力信号の変化を待つ処理である。待ち条件としては、“指定値に変化”、“立ち上がりエッジ検出”、“立下りエッジ検出”が定義されている。簡易シーケンサ６０３は、信号変化待ち処理において、待ち条件が“指定値に変化”である場合には、信号名フィールドで指定された信号が、データ・フィールドで指定された値になるまで待つ。また、待ち条件が、“立ち上りエッジ検出”である場合には、信号名フィールドで指定された信号が、“Ｌ”から“Ｈ”に変化するまで待つ。同様に、待ち条件が、“立下りエッジ検出”である場合には、信号名フィールドで指定された信号が、“Ｈ”から“Ｌ”に変化するまで待つ。いずれの場合においても、待ち条件を満たした場合、簡易シーケンサ６０３は、次の処理を実行する。
【００９１】
時間待ち処理は、模擬時間軸での時間経過を待つ処理である。待ち条件としては、“指定時間経過”と、図示していない“指定時刻到達”が定義される。簡易シーケンサ６０３は、時間待ち処理において、待ち条件が指定時間経過である場合には、単に、指定された時間が進行したことをシミュレータ接続部５０１に通知する。つまり、実際に指定時間だけ待機することは行わない。同様に、待ち条件が指定時刻到達である場合には、単に、指定時刻に到達した旨をシミュレータ接続部５０１に通知する。その後、簡易シーケンサ６０３は、次の処理を実行する。
【００９２】
信号出力処理は、信号変化の出力処理である。簡易シーケンサ６０３は、信号出力処理において、データ・フィールドの値を、信号名フィールドの信号で出力したことをシミュレータ接続部５０１に通知する。
【００９３】
処理移行処理は、所定の処理への移行を示す。簡易シーケンサ６０３は、処理移行処理において、データ・フィールドの処理番号の処理に移行する。
【００９４】
図２３（ａ）は、簡易シーケンサ６０３が、外部Ｉ／Ｆ６０１を介してシミュレータ接続部５０１に通知するイベントの例である。開始及び終了イベントは図１９と同様である。指示待ちイベントは、シーケンスデータの１つの処理（処理番号１つ分の処理）の終了毎に発生するイベントである。時間経過及び到達イベントは、既に説明した時間待ち処理の実行時に発生するイベントである。さらに、出力信号変化イベントは、既に説明した信号出力処理で発生するイベントである。より詳しくは、シミュレータ構成定義情報５１８の入出力信号定義で簡易シーケンサ６０３の出力信号として定義された信号が変化した時に発生するイベントである。
【００９５】
図２３（ｂ）は、簡易シーケンサ６０３が、シミュレータ接続部５０１から受け取る指示の例である。開始及び終了指示は、既に説明した各シミュレータのものと同じであり説明は省略する。再開指示は、簡易シーケンサ６０３にシーケンスデータの１つの処理を実行させるものである。簡易シーケンサ６０３は、指示待ち状態で再開指示を受けると、シーケンスデータの１つの処理を実行し、処理実行後に指示待ち状態になる。入力信号指示は、入出力信号定義で簡易シーケンサ６０３の入力信号として定義された信号の値を指定するもので、信号ＩＤと設定値を含んでいる。簡易シーケンサ６０３は、入力信号指定指示を受け取ると、指定された信号ＩＤの信号値変化に基づきシーケンスデータの処理を実行する。
【００９６】
上記構成において、図１２のシーケンスデータに対する簡易シーケンサ６０３での処理を以下に説明する。
【００９７】
簡易シーケンサ６０３は、シミュレータ接続部５０１から再開指示を受けると、処理番号０の処理を読み取り、シリアルコマンド信号の変化待ち状態となる。この状態で、シミュレータ接続部５０１からシリアルコマンドで給紙開始指示を示すデータを受け取ると、指示待ちイベントをシミュレータ接続部５０１に通知して指示待ち状態となる。続いて、シミュレータ接続部５０１から再開指示を受けると、処理番号１の処理を読み取り、出力信号変化イベントにより、給紙モータ駆動信号が“Ｈ”となったことをシミュレータ接続部５０１に通知する。その後、簡易シーケンサ６０３は、指示待ちイベントをシミュレータ接続部５０１に通知する。続いて、シミュレータ接続部５０１から、再開指示を受けると、処理番号２の処理を読み取り、時間経過イベントで、シミュレータ接続部５０１に４００ミリ秒の時間経過を通知する。その後、簡易シーケンサ６０３は、指示待ちイベントをシミュレータ接続部５０１に通知する。以上の様に、簡易シーケンサ６０３は、シーケンスデータに従い処理を進めてゆく。
【００９８】
簡易シーケンサ６０３において、１つの処理により進行する模擬時間は不定であり、シーケンスデータにより異なることとなる。したがって、本実施形態においては、同期単位時間を処理単位時間に拘わらず、あらかじめ任意の方法にて決定し、同期定義情報５１９として設定しておく。
【００９９】
また、本実施形態において、同期管理情報保持部５１３は、図２４（ｃ）に示す同期管理情報を使用する。図２４（ｃ）に示す様に、同期管理情報は、シミュレータＩＤに対応するシミュレータの同期状態情報と模擬時刻を示すものとなっている。なお、模擬時刻は、同期実行管理部５１１が各シミュレータからの通知に基づき更新する。
【０１００】
続いて、本実施形態での同期実行管理部５１１による同期処理を説明する。図１３のＳ５０１において、同期実行管理部５１１は、管理情報の初期化を行う。具体的には、基準時刻、同期管理情報の模擬時刻を総て０に設定する。また、同期管理情報の同期状態情報は、図４のＳ１０１にて説明したのと同様に初期化を行う。また、同期定義情報５１９から同期単位時間を読み込んで時間情報保持部５１４に設定する。なお、本実施形態においては、第一実施形態と同様に進行単位時間は同期単位時間と等しい。
【０１０１】
次に、Ｓ５０２において、同期実行管理部５１１は、基準時刻を同期単位時間だけ進め、Ｓ５０３において、各シミュレータの模擬時刻と基準時刻を比較する。Ｓ５０４において、同期実行管理部５１１は、模擬時刻が基準時刻に満たないものについて同期管理情報内の同期状態情報を“未終了”に設定する。以後の処理は、図４のＳ１０３〜Ｓ１１０と同様であるので説明は省略する。さらに、各シミュレータＩ／Ｆ５０６〜５０８における同期処理も、第一実施形態と同じであり説明は省略する。
【０１０２】
また、簡易シーケンサ６０３における同期処理は、図５の対象シミュレータを簡易シーケンサ６０３と読み替え、Ｓ２０７において通知されたイベントが図２３（ａ）の時間経過又は時刻到達であるか否かの判定に変更したものである。なお、通知されたイベントが時間経過又は時刻到達である場合は、Ｓ２０８に進み、そうでなければ、Ｓ２０５に戻ることになる。
【０１０３】
また、簡易シーケンサ６０３は、時刻経過イベントにおいては経過時間のみを通知する。よって、簡易シーケンサＩ／Ｆ６０２は、簡易シーケンサ６０３から取得する経過時間を簡易シーケンサＩ／Ｆ６０２内で管理している時刻情報に変換した上で、同期実行管理部５１１に通知する。以下に、詳細を説明する。
【０１０４】
図１４のＳ６０１において、簡易シーケンサＩ／Ｆ６０２は、時刻情報を初期化、つまり時刻情報に０を設定する。次に、Ｓ６０２において、簡易シーケンサＩ／Ｆ６０２は、配線モジュール５１０からの入力信号の変更要求があるか否かを確認する。変更要求があれば、Ｓ６０３において、簡易シーケンサＩ／Ｆ６０２は、同期モジュール５０９より時刻情報を取得し、Ｓ６０４において、時刻情報を取得した値に変更する。Ｓ６０３において変更要求が無い場合、簡易シーケンサＩ／Ｆ６０２は、Ｓ６０５において、簡易シーケンサ６０３からの通知があるか否かを確認する。通知がある場合、Ｓ６０６において、簡易シーケンサＩ／Ｆ６０２は、時間経過イベントであるか否かを確認する。時間経過イベントであれば、簡易シーケンサＩ／Ｆ６０２は、Ｓ６０７において、経過時間を管理している時刻に加算する。また、時間経過通知でなければ、簡易シーケンサＩ／Ｆ６０２は、Ｓ６０８において、時刻到達イベントであるか否かを確認する。時刻到達イベントであれば、簡易シーケンサＩ／Ｆ６０２は、Ｓ６０９において、管理している時刻情報を通知された時刻の値に変更する。簡易シーケンサＩ／Ｆ６０２は、以上の処理を繰り返して簡易シーケンサ６０３の時刻情報を管理する。
【０１０５】
続いて、本実施形態での各ミュレータ間の時刻同期動作を図１５及び図１６により説明する。なお、図１６は図１５の続きを示すものである。図１５の処理開始時点において、基準時刻は１０００ミリ秒であり、ＣＰＵシミュレータ５０２の模擬時刻は１０００．０００１ミリ秒である。また、用紙搬送シミュレータ５０３、プロセスユニットシミュレータ５０４及び簡易シーケンサ６０３の模擬時刻は共に１０００ミリ秒である。なお、用紙搬送シミュレータ５０３の処理単位時間は１０ミリ秒、プロセスユニットシミュレータ５０４の処理単位時間は１ミリ秒であるものとする。また、同期単位時間は２ミリ秒に設定されており、ＣＰＵシミュレータ５０２のタイマ・イベントは、同期単位時間と同じ２ミリ秒に設定されているものとする。なお、図１５及び図１６の表現方法は、図７及び８と同じである。
【０１０６】
同期実行管理部５１１は、最初に基準時刻を同期単位時間だけ進め、１００２ミリ秒とする。続いて、同期管理情報の各シミュレータの模擬時刻と基準時刻を比較する。同期実行管理部５１１は、模擬時刻が基準時刻に達していないシミュレータに対して再開指示を行う。その後、同期実行管理部５１１は、各シミュレータからの時刻更新通知毎に、通知された模擬時刻を同期管理情報として記録し、さらに、基準時刻と比較する。模擬時刻が、基準時刻に追いつく、又は追い越している場合には、対応するシミュレータの同期が終了したものと判断して同期管理情報を更新する。
【０１０７】
本例では、用紙搬送シミュレータが処理単位時間の処理を１回実行した段階で模擬時刻１０１０ミリ秒となり同期終了状態となっている。また、簡易シーケンサは、２００ミリ秒の時間待ち処理により模擬時刻が１２００ミリ秒となり同期終了状態となっている。さらに、プロセスユニットシミュレータ５０４が、処理単位時間の処理を２回実行した段階で模擬時刻が１００２ミリ秒となり同期終了状態となっている。さらに、ＣＰＵシミュレータ５０２は、タイマ・イベント発生時に模擬時刻が１００２．０００２ミリ秒であり、その時点で同期終了状態となっている。
【０１０８】
次に、同期実行管理部５１１は、基準時刻の値を１００４ｍｓｅｃに進め、同期管理情報を参照して、各シミュレータの模擬時刻と基準時刻を比較する。図１６に示す様に、用紙搬送シミュレータ５０３及び簡易シーケンサ６０３の模擬時刻は基準時刻を超えているためこの時点で同期終了状態となる。従って、同期実行管理部５１１は、ＣＰＵシミュレータ５０２とプロセスユニットシミュレータ５０４に対して再開指示を行う。
【０１０９】
用紙搬送シミュレータ５０３は、基準時刻が１０１２ミリ秒になるまで指示待ち状態のままとなる。同様に、簡易シーケンサ６０３は、基準時刻が１２０２ミリ秒になるまで指示待ち状態のままとなる。
【０１１０】
本実施形態においては、例えば、同期単位時間を小さな値に設定することにより、シミュレータ間の時刻同期精度を上げることができる。
【０１１１】
例えば、本実施形態を、図１８にて説明したのと同じ構成に対して適用した場合の様子を図１７に示す。図１７の表現方法は、図９と同じである。図１７は、同期単位時間を１ミリ秒に設定した場合を示している。なお、ソフトウェアデバッガ、ハードウェアモデル及びメカシミュレータの処理単位時間は、それぞれ、３ミリ秒、５ミリ秒及び１０ミリ秒である。
【０１１２】
図１７に示す様に、同期実行管理部５１１が、基準時刻を１ミリ秒に進めた段階で、総てのシミュレータの模擬時刻は０ミリ秒であるため、総てのシミュレータに対して再開指示が行われる。各シミュレータが、処理単位時間分の模擬を終了した段階で、基準時刻０ミリ秒から１ミリ秒の同期処理が終了する。続いて、同期実行管理部５１１が、基準時刻を２ミリ秒に進める。しかしながら、この時点においてソフトウェアデバッガ、ハードウェアモデル及びメカシミュレータの模擬時刻は、それぞれ、３ミリ秒、５ミリ秒及び１０ミリ秒であり、総ての、基準時刻以上である。したがって、基準時刻１ミリ秒から２ミリ秒の同期処理においては、再開指示はいずれのシミュレータにも行われない。
【０１１３】
その後、図１７に示す様に、ソフトウェアデバッガに対しては、基準時刻４ミリ秒と、基準時刻７ミリ秒と、基準時刻１０ミリ秒の同期処理において再開指示が行われる。また、ハードウェアモデルに対しては、基準時刻６ミリ秒と、基準時刻１１ミリ秒の同期処理において再開指示が行われる。さらに、メカシミュレータに対しては、基準時刻１１ミリ秒の同期処理において再開指示が行われる。以上の処理を繰り返すことで、同期単位時間である１ミリ秒を単位として模擬時刻の同期が行われる。
【０１１４】
なお、図１７においては、総てのシミュレータの処理単位時間よりも小さな同期単位時間を使用していたが、同期単位時間は処理単位時間より大きい値であっても良い。以上の構成により、簡易シーケンサ６０３の様な、処理単位時間を定義できないシミュレータが存在する場合であっても、精度よく、各シミュレータ間の時刻同期を実現することができる。
【０１１５】
以上、シミュレータ接続部５０１が、全シミュレータが基準時刻以後の時刻となるまで、各シミュレータに模擬処理を実行させる。全シミュレータから通知された時刻情報が基準時刻以後の時刻になった場合、シミュレータ接続部５０１は、基準時刻を進行単位時間だけ進める様に更新し、時刻情報が、更新後の基準時刻に達していない総てのシミュレータに再開指示を行う。この処理を繰り返すことで、各シミュレータの模擬処理における時刻同期を、各シミュレータの処理効率を低下させることなく実現することができる。特に、処理単位時間が設定できないシミュレータが存在している場合においても、精度よく、各シミュレータ間の時刻同期を実現することができる。
【０１１６】
また、各シミュレータに処理単位時間が設定されている場合には、進行単位時間を、各シミュレータの処理単位時間の最も大きい値に設定する。これにより、進行単位時間を処理単位時間の最小公倍数とする従来技術と比較して、より細かな単位で時刻同期処理を実行することができる。また、各シミュレータの処理待ち時間を減少させることができる。
【０１１７】
なお、各シミュレータに同期単位時間を設定し、進行単位時間は、各同期単位時間の最大公約数とする。さらに、シミュレータ接続手段は、基準時刻を進行単位時間だけ進めた際に、同期単位時間が基準時刻の約数であるシミュレータのみに再開指示を行う。この構成により、各シミュレータ間での必要な同期間隔が異なるものであったとしても、各シミュレータの条件に応じた最適な同期間隔での同期処理が可能となる。
【０１１８】
さらに、複数のシミュレータの１つは、模擬対象装置で動作するファームウェアの実行模擬するシミュレータとする。これにより、模擬対象装置のファームウェアのデバッグを、実際の装置を使用することなく行うことが可能になる。
【図１】
0005686609.tif 000002
【図２】
0005686609.tif 000003
【図３】
0005686609.tif 000004
【図４】
0005686609.tif 000005
【図５】
0005686609.tif 000006
【図６】
0005686609.tif 000007
【図７】
0005686609.tif 000008
【図８】
0005686609.tif 000009
【図９】
0005686609.tif 000010
【図１０】
0005686609.tif 000011
【図１１】
0005686609.tif 000012
【図１２】
0005686609.tif 000013
【図１３】
0005686609.tif 000014
【図１４】
0005686609.tif 000015
【図１５】
0005686609.tif 000016
【図１６】
0005686609.tif 000017
【図１７】
0005686609.tif 000018
【図１８】
0005686609.tif 000019
【図１９】
0005686609.tif 000020
【図２０】
0005686609.tif 000021
【図２１】
0005686609.tif 000022
【図２２】
0005686609.tif 000023
【図２３】
0005686609.tif 000024
【図２４】
0005686609.tif 000025