(57)【特許請求の範囲】
【請求項１】
検証対象のターゲットコードを実行するターゲットＣＰＵの動作を模擬するＣＰＵコアシミュレータと、
前記ターゲットＣＰＵの制御対象装置の動作を模擬する装置シミュレータと、
前記ターゲットＣＰＵに対するタイマ部の動作を模擬するタイマシミュレータと、
前記タイマシミュレータの設定から前記ＣＰＵコアシミュレータに発生するタイマイベントの時刻を判定し、前記判定したタイマイベントの時刻までの模擬動作を前記装置シミュレータに指示する指示手段と、
を備えていることを特徴とする情報処理装置。
【請求項２】
前記タイマイベントの発生を判定するための時刻を保持する基準タイマを備えており、
前記指示手段は、
前記タイマシミュレータの設定から、前記ＣＰＵコアシミュレータに発生する各タイマイベントの時刻を示すタイマイベント管理テーブルを維持し、前記装置シミュレータの模擬動作が終了したときの前記装置シミュレータの第１の時刻が、前記タイマイベント管理テーブルの各タイマイベントの一番先の第２の時刻より前である場合には、前記第１の時刻を前記基準タイマに設定し、前記第１の時刻が、前記第２の時刻又は前記第２の時刻より後である場合には、前記第２の時刻を前記基準タイマに設定して、前記タイマイベント管理テーブルから前記第２の時刻を消去するＣＰＵタイマ管理手段と、
前記ＣＰＵコアシミュレータが繰り返し実行する第１の命令を実行した際に、前記タイマイベント管理テーブルの各タイマイベントの一番先の時刻までの模擬動作を前記装置シミュレータに指示する実行管理手段と、
を備えていることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ＣＰＵタイマ管理手段は、前記ＣＰＵコアシミュレータが繰り返し実行する第２の命令に対応する時刻を、前記タイマイベント管理テーブルにタイマイベントの時刻として登録することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記指示手段は、前記判定したタイマイベントの時刻を前記装置シミュレータに通知することを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記装置シミュレータは、前記指示手段からの模擬動作の指示を受けると、所定の単位時間の模擬動作を行い、前記所定の単位時間の模擬動作が終了すると前記指示手段に終了を通知し、
前記指示手段は、前記装置シミュレータの時刻が、前記判定したタイマイベントの時刻以上となるまで前記装置シミュレータに模擬動作の指示を行うことを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項６】
前記装置シミュレータは、模擬動作中に出力信号の変化が生じると模擬動作を終了し、前記変化が生じた時刻及び模擬動作の終了を前記指示手段に通知することを特徴とする請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
請求項１から６のいずれか１項に記載の情報処理装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置への組込みソフトウェアの検証をコンピュータ上で行うためのシミュレーション技術に関する。
【背景技術】
【０００２】
特許文献１は、装置に組み込まれたＣＰＵ（ターゲットＣＰＵ）で動作する組込みソフトウェア（ターゲットコード）の検証のため、コンピュータでシミュレーションを行うことを開示している。以後、シミュレーションを行うコンピュータをホストＰＣと呼ぶ。具体的には、ターゲットＣＰＵの動作を模擬するＣＰＵシミュレータと、ターゲットＣＰＵの制御対象装置の動作を模擬する装置シミュレータをホストＰＣ上で実現し、ＣＰＵシミュレータでターゲットコードを動作させるというものである。
【０００３】
この様なシステムにおいて、各シミュレータが制御対象装置やターゲットＣＰＵの所定時間分の模擬動作を行うのに実際に要した時間は、その所定時間とは異なることになる。以後、各シミュレータの模擬動作に応じて進行する時間を模擬時間と呼び、模擬対象の装置における時刻を模擬時刻と呼ぶ。つまり、例えば、移動速度が時速１０キロメートルである物体の動作をシミュレーションするものとする。この場合、シミュレータは、物体の１０キロメートル分の移動をシミュレーションすると、そのシミュレーションに要した実際の時間に拘わらず、模擬時間を１時間だけ進行させることになる。
【０００４】
ここで、ＣＰＵシミュレータと装置シミュレータの様に複数のシミュレータを有するシステムにおいては、シミュレータ毎に模擬時間の進行度合いが異なる。つまり、模擬時間でＡミリ秒分の模擬動作を行うために実際に必要な時間が、ＣＰＵシミュレータと装置シミュレータでは一般的に異なることとなる。よって、各シミュレータ間の模擬時刻の進行をある粒度で同期させる同期処理が必要となる。
【０００５】
このため特許文献１では、模擬時間軸での所定時間を同期単位時間として、各シミュレータに同期単位時間分の模擬動作を順次実行させることにより同期処理を行っている。また、特許文献２では、各シミュレータを中継するシミュレーションエンジン部を設け、シミュレーションエンジン部が、ターゲットＣＰＵの制御対象装置で発生するイベントに基づき模擬動作を行わせて模擬時間の同期を行っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１７２１２８号公報
【特許文献２】特開２００７−２３３６７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
シミュレーションを行うためには、各シミュレータ間で送受される各種信号等により制御される動作を模擬する必要がある。しかしながら、同期単位時間による同期処理を行う場合、これら信号等の伝達のタイミングは、同期単位時間の範囲でばらつくことになる。その一方で、信号等の伝達が必要なく、各シミュレータが独立して動作できる場合においても同期処理が行われることになる。つまり、あるシミュレータが他のシミュレータと模擬時刻を合わせるために、処理待ちを行わなければならない状態が発生し、処理効率が低下する。
【０００８】
また、特許文献２では、制御対象装置でのイベントをシミュレーションエンジン部が求める構成になっているが、シミュレーションエンジン部で予測不可能なイベントには対応できない。また、各シミュレータが、イベントに対応する模擬動作のみを実行するため、イベントと非同期に進行する模擬動作には対応できない。
【０００９】
本発明は、不要な処理による処理効率の低下を防ぎつつ、必要な精度で模擬時刻の同期を行うことができる情報処理装置と、当該情報処理装置としてコンピュータを機能させるプログラムを提供するものである。
【課題を解決するための手段】
【００１０】
本発明による情報処理装置は、検証対象のターゲットコードを実行するターゲットＣＰＵの動作を模擬するＣＰＵコアシミュレータと、ターゲットＣＰＵの制御対象装置の動作を模擬する装置シミュレータと、ターゲットＣＰＵに対するタイマ部の動作を模擬するタイマシミュレータと、タイマシミュレータの設定からＣＰＵコアシミュレータに発生するタイマイベントの時刻を判定し、判定したタイマイベントの時刻までの模擬動作を装置シミュレータに指示する指示手段と、を備えていることを特徴とする。
【発明の効果】
【００１１】
各シミュレータの模擬時刻を、ＣＰＵシミュレータに対して発生するタイマイベントに合わせて同期させる。これにより、不要な処理による処理効率の低下を防ぎつつ、必要な精度での時刻同期を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態における情報処理装置の構成図。
【図２】情報処理装置の実行環境であるホストＰＣのブロック図。
【図３】情報処理装置のシミュレーション対象装置となり得る画像形成装置の断面図。
【図４】一実施形態における装置シミュレータの模擬動作処理のフローチャート。
【図５】一実施形態におけるタイマイベント管理テーブルを示す図。
【図６】一実施形態における装置シミュレータ管理部での処理のフローチャート。
【図７】例示的な配線定義情報を示す図。
【図８】情報処理装置のシミュレーション対象となる画像形成装置の給紙搬送制御機能の説明図。
【図９】情報処理装置のシミュレーション対象となる画像形成装置の給紙搬送制御機能の説明図。
【図１０】一実施形態におけるタイマ構成を示す図。
【図１１】一実施形態における情報処理装置の動作を示すシーケンス図。
【図１２】一実施形態における情報処理装置の動作を示すシーケンス図。
【図１３】一実施形態における情報処理装置の動作を示すシーケンス図。
【図１４】一実施形態における実行管理部の処理を示すフローチャートである。
【図１５】一実施形態における情報処理装置の構成図。
【図１６】一実施形態におけるタイマイベント管理テーブルを示す図。
【発明を実施するための形態】
【００１３】
（第一実施形態）本発明の第一実施形態について、以下では図面を用いて詳細に説明する。なお、以下の説明において、特に明記しない限り、或いは、文脈から明らかである場合を除き、時間とは模擬時間を意味するものとする。
【００１４】
本実施形態における情報処理装置は、装置に組み込まれたターゲットＣＰＵで動作するプログラムであるターゲットコードを検証するものである。なお、情報処理装置は、パーソナルコンピュータ、ワークステーション等（以下、ホストＰＣと記す）で実行されるプログラムとして実現され得る。
【００１５】
図２は、ホストＰＣのハードウェア構成の概略図である。図２のホストＰＣ２００のＣＰＵ２０１は、バス２１０を介して、ＲＯＭ２０２、ＲＡＭ２０３、入力インタフェース２０４、出力インタフェース２０６、外部記憶装置インタフェース２０８と接続されている。ＣＰＵ２０１は、ＲＯＭ２０２、ＲＡＭ２０３に記憶されたプログラムに従い動作する。また、ＣＰＵ２０１は、入力インタフェース２０４、外部記憶装置インタフェース２０８経由で受け取る外部入力に対する情報処理を行い、結果を出力インタフェース２０６、外部記憶装置インタフェース２０８経由で出力する。入力インタフェース２０４は、キーボード、マウス等の入力装置２０５を介してユーザからの入力を受け取る。出力インタフェース２０６は、ＬＣＤや、プリンタ、プロッタ等の出力装置２０７に対しデータの表示や出力を行う。外部記憶装置インタフェース２０８は、ハードディスクやＣＤ−ＲＯＭ等の外部記憶装置２０９に対するデータの入出力を行う。
【００１６】
ＣＰＵ２０１は、外部記憶装置２０９に保存される設定データ２０９ｂ内のデータを使用して、処理プログラム２０９ａを実行することで、本実施形態による情報処理装置として機能する。なお、検証対象のプログラムであるターゲットコード２０９ｃも外部記憶装置２０９に保存される。なお、外部記憶装置２０９は、図示しないが、ＣＰＵ２０１で動作する基本ソフトウェアであるオペレーティングシステム（以下、ホストＯＳと記す）を保存している。なお、処理プログラム２０９ａは、ホストＯＳ上で動作する。
【００１７】
続いて、本実施形態における情報処理装置について、図１を用いて説明する。図１において、ＣＰＵシミュレータ１０１は、それぞれ、制御対象装置に組み込まれたターゲットＣＰＵの動作を模擬するものである。また、装置シミュレータ１０３は、ターゲットＣＰＵが制御する制御対象装置の動作を模擬するものである。情報処理装置は、さらに、上記各シミュレータ間を接続し、上記各シミュレータ間の動作を協調させるシミュレータ接続部１０２を備えている。なお、ＣＰＵシミュレータ１０１のＣＰＵコアシミュレータ１０４は、ターゲットＣＰＵのコア機能を模擬するものであり、ＣＰＵ周辺回路シミュレータ１０５は、ターゲットＣＰＵの周辺回路を模擬するものである。
【００１８】
ＣＰＵコアシミュレータ１０４のターゲット命令実行部１０８は、ターゲットコードの実行を模擬するものであり、ターゲットコード２０９ｃを解釈して、所定の演算処理や、ＣＰＵ周辺回路シミュレータ１０５へのアクセスを行う。具体的には、例えば、ターゲット命令実行部１０８は、制御対象装置への出力信号の状態をＩ／Ｏシミュレータ１１２に通知する。また、ターゲット命令実行部１０８は、装置シミュレータ１０３が模擬する制御対象装置の例えばセンサ出力の状態等をＩ／Ｏシミュレータ１１２から取得する。さらに、ターゲット命令実行部１０８は、タイマイベントを発生させる必要が有る場合、タイマシミュレータ１１１に必要な通知を行う。つまり、例えば、制御対象装置の所定のセンサ出力の状態が変化したことに応じて所定の時間後に出力信号を変化させなければならない場合、この所定の時間後のタイマイベントをタイマシミュレータ１１１に通知する。
【００１９】
割込み制御部１０９は、ＣＰＵ周辺回路シミュレータ１０５からの割込み要求を受けて、ターゲットＣＰＵの割込み処理を模擬する。すなわち、割込み制御部１０９は、ＣＰＵ周辺回路シミュレータ１０５から要求を受けた割込み番号に応じてターゲットコード上の割込みベクタを参照する。そして、ターゲット命令実行部１０８によるターゲットコード上の命令参照位置を、所定の割込み処理の位置に移行させる。また、割込み制御部１０９は、必要に応じて割込み禁止設定への対応、割込み優先度設定への対応、レジスタバンクの切り換え等、ターゲットＣＰＵの割込み動作仕様に準じた処理を行う。
【００２０】
続いて、ＣＰＵ周辺回路シミュレータ１０５について説明する。ＣＰＵ周辺回路シミュレータ１０５は、タイマ、入出力ポート、アナログデジタル変換器、シリアル通信機能といったＣＰＵ周辺回路の動作を模擬するものである。本実施形態においては、タイマ部のタイマ機能を模擬するタイマシミュレータ１１１、入出力ポートの模擬動作を行うＩ／Ｏシミュレータ１１２を設けている。タイマシミュレータ１１１は、ターゲットＣＰＵの各タイマユニットの設定に応じた個々のタイマの動作を模擬する。さらに、タイマシミュレータ１１１は、各タイマユニットに対する割込み発生条件を監視し、割込み発生条件が成立した場合、割り込要求を、ＣＰＵコアシミュレータ１０４に通知する。なお、タイマシミュレータ１１１の模擬動作における時間進行は基準タイマ１０６の値に従う。
【００２１】
基準タイマ１０６は、タイマシミュレータ１１１をはじめとするＣＰＵ周辺回路シミュレータ１０５における時間進行の基準となるタイマである。なお、基準タイマ１０６の値は、シミュレータ接続部１０２からの設定のみによって値が更新される。なお、インタフェース部１０７は、シミュレータ接続部１０２との各種信号の送受のためのインタフェース機能である。
【００２２】
続いて、装置シミュレータ１０３の説明を行う。なお、本実施形態において、装置シミュレータ１０３は、画像形成装置を模擬するものとする。まず、模擬対象の画像形成装置３０１の概略について、図３を用いて説明する。
【００２３】
カセット３０２に収容されている記録材（シート材）は、ピックアップローラ３０３によりピックアップされ、給紙ローラ３０４により搬送路に送り出される。給紙ローラ３０４の搬送路下流側には、記録材の存在を検出する給紙センサ３０５が設けられている。給紙センサ３０５の下流には、搬送ローラ３０６が配置され、さらにその下流にはレジストローラ３０７が配置されている。レジストローラ３０７は、搬送される記録材の斜行を矯正するものである。レジストローラ３０７の下流には、画像形成前の記録材の位置を確定するため、レジストセンサ３０８が設けられている。レジストセンサ３０８の下流には、レーザスキャナ部３１０からのレーザ光により感光ドラム上にトナー像を形成する画像形成部３０９が配置されている。また、画像形成部３０９の感光ドラムは、通過する記録材にトナー像を転写する。画像形成部３０９の下流には定着器３１１が配置されており、定着器３１１の下流には複数の排紙搬送ローラ３１２が配置されており、その下流に排紙トレイ３１６が配置されている。
【００２４】
装置シミュレータ１０３は、ＣＰＵシミュレータ１０１が出力する仮想信号、つまり、模擬上の信号に応じて用紙搬送、画像形成の状況を解析し、図示しない表示部に表示する。また、装置シミュレータ１０３は、ＣＰＵシミュレータ１０１に、解析した状況を通知する仮想信号を出力する。なお、装置シミュレータ１０３とＣＰＵシミュレータ１０１の仮想信号の交換は、シミュレータ接続部１０２の仮想信号伝達部１１８が行う。
【００２５】
装置シミュレータ１０３のシミュレーション実行部１２０は、シミュレータ接続部１０２から、時間指定と共にシミュレーションの実行指示を受けると、指定された時間分の模擬動作を実行する。そして、指定された時間の模擬が終了すると、シミュレータ接続部１０２に対して、模擬の終了と、その時点の模擬時間を通知する。また、シミュレーション実行部１２０は、指定された時間の到達前に仮想信号の変化があった場合、その時点でシミュレーションを終了する。そして、終了時点の模擬時間、変化があった信号の種別及びその値の情報と共にシミュレーション終了をシミュレータ接続部１０２に通知する。その後、シミュレーション実行部１２０は、シミュレータ接続部１０２からシミュレーションの実行指示を受けると、前回の模擬動作が終了した時点における模擬時間から模擬動作を開始する。
【００２６】
シミュレーション実行部１２０による模擬は、模擬時間軸において、単位時間毎の画像形成装置３０１の動作状態の解析を繰り返すことで行われる。すなわち、シミュレーション実行部１２０は、画像形成装置３０１のある時点の状態から１単位時間後の状態を解析し、その結果を図示しない表示部に画面表示し、ＣＰＵシミュレータへの仮想信号に反映させ、模擬時間を１単位時間進行させる。シミュレーション実行部１２０は、この単位時間毎の解析処理を指定された時間分だけ実行することで、画像形成装置３０１の動作を模擬する。なお、インタフェース部１２１は、シミュレータ接続部１０２との各種信号の送受のためのインタフェース機能である。
【００２７】
続いて、シミュレーション実行部１２０の模擬処理の詳細について、図４のフローチャートを用いて説明する。模擬処理は、シミュレータ接続部１０２からの実行指示により開始する。Ｓ１において、シミュレーション実行部１２０は、シミュレータ接続部１０２からの実行指示に含まれている時間を、保持する現在時刻に加えて終了時刻を設定する。Ｓ２において、シミュレーション実行部１２０は、現在時刻と終了時刻を比較する。現在時刻が終了時刻と同じか、終了時刻より後であれば、シミュレーション実行部１２０は、Ｓ７において、現在時刻と共に模擬動作の終了をシミュレータ接続部１０２に通知する。Ｓ２において、現在時刻が終了時刻に達していなければ、シミュレーション実行部１２０は、Ｓ３において、１単位時間後の画像形成装置３０１の状態を解析し、図示しない表示装置への出力画像を更新すると共に、仮想信号値の変化を設定する。解析終了後、シミュレーション実行部１２０は、Ｓ４において、現在時刻を１単位時間だけ進める。その後、Ｓ５において、シミュレーション実行部１２０は、仮想信号に変化があったかどうかを判定する。仮想信号に変化がなければ、シミュレーション実行部１２０は、Ｓ２に戻って処理を繰り返す。一方、Ｓ５において、仮想信号に変化があると、シミュレーション実行部１２０は、Ｓ６において、模擬動作の終了を、現在時刻、変化した信号種別及びその値と共にシミュレータ接続部１０２に通知する。
【００２８】
次に、シミュレータ接続部１０２について説明する。以下に説明する様に、シミュレータ接続部１０２は、装置シミュレータ１０３における模擬動作を管理し、模擬動作の指示を行う指示部として機能する。ＣＰＵタイマ管理部１１７は、タイマイベント管理テーブル１１９の維持、つまり、生成及び更新を行う。タイマイベント管理テーブル１１９とは、ＣＰＵシミュレータ１０１の模擬動作における確定したタイマイベントの発生タイミングを発生順に保存したものであり、その概要を図５に示す。なお、タイマイベントとは、ＣＰＵ周辺回路によって実行される特定のタイミング（時刻）に対応した処理である。つまり、例えば、タイマユニットによるタイマ割り込み、パルスジェネレータによる指定されたタイミングにおける信号出力、複数チャネルのアナログデジタル変換器の一巡の変換処理終了後の割り込み等である。
【００２９】
なお、タイマイベントの発生有無、及び、その時刻については、ＣＰＵシミュレータ１０１のタイマシミュレータ１１１へのアクセス内容により判断できる。ＣＰＵタイマ管理部１１７は、ＣＰＵシミュレータ１０１に対してタイマイベントが発生する場合、そのタイマイベントをタイマイベント管理テーブル１１９に登録する。なお、ＣＰＵタイマ管理部１１７は、新たなタイマイベントの時刻と、既に登録されているタイマイベントの時刻を比較しタイマイベント管理テーブル１１９への登録イベントが発生時間順に並ぶように登録する。
【００３０】
また、ＣＰＵタイマ管理部１１７は、装置シミュレータ１０３が模擬動作の終了を通知した場合、その通知に含まれる時刻を取得する。そして、ＣＰＵタイマ管理部１１７は、取得した時刻（第１の時刻）と、タイマイベント管理テーブル１１９の先頭、つまり、一番先に発生するタイマイベントの時刻（第２の時刻）とを比較する。取得した時刻が、先頭のタイマイベントの時刻より早い場合、ＣＰＵタイマ管理部１１７は、取得した時刻を、基準タイマ１０６に設定する。それ以外の場合、つまり、取得した時刻が、先頭のタイマイベントの時刻以後の時刻である場合、先頭のタイマイベントの時刻を基準タイマ１０６に設定し、先頭のイベントを消去する。このとき、２番目以降のタイマイベントがあれば順次繰り上げる。ＣＰＵタイマ管理部１１７によって基準タイマ１０６の値が更新されると、タイマシミュレータ１１１は、基準タイマ１０６の変化に応じた模擬動作を行う。
【００３１】
実行管理部１１６は、タイマイベント管理テーブル１１９に応じて、装置シミュレータ１０３の模擬動作を管理する。図６は、実行管理部１１６の処理を示すフローチャートである。なお、実行管理部１１６は、ＣＰＵシミュレータ１０１からの命令実行イベントの通知をトリガに処理を開始する。ＣＰＵシミュレータ１０１は、この命令実行イベント（第１の命令）を適当な間隔で繰り返し実行する。なお、命令実行イベントの間隔は一定である必要はない。本実施形態においては、後述する様に、ウォッチドックタイマリセット命令を命令実行イベントとして使用する。
【００３２】
処理が開始されると、実行管理部１１６は、Ｓ１１でタイマイベント管理テーブル１１９の先頭のタイマイベントの時刻（以下、対象時刻と記す。）と、装置シミュレータ１０３のその時点の時刻（以下、装置時刻と記す。）を比較する。対象時刻が装置時刻以下、つまり、同じか早い場合、実行管理部１１６は、Ｓ１９において、装置時刻と共に、装置シミュレータの模擬処終了をＣＰＵタイマ管理部１１７に通知して処理を終了する。
【００３３】
一方、Ｓ１１で対象時刻が装置時刻よりも大きい場合、実行管理部１１６は、Ｓ１２において、現在の装置時刻と対象時刻との差から装置シミュレータの模擬動作の時間を求める。そして、実行管理部１１６は、Ｓ１３で装置シミュレータ１０３に求めた時間分の模擬動作の実行を指示し、Ｓ１４において、装置シミュレータ１０３からの終了通知を待つ。
【００３４】
実行管理部１１６は、装置シミュレータ１０３から終了通知を受けると、Ｓ１５において、装置シミュレータ１０３の時刻を通知された時刻に更新する。さらに、実行管理部１１６は、Ｓ１６において、装置シミュレータ１０３の出力信号変化の有無を確認する。Ｓ１６で出力信号の変化がない場合、Ｓ１９に進む。一方、Ｓ１６で出力信号の変化がある場合、実行管理部１１６は、Ｓ１７で仮想信号伝達部１１８に発生した信号種別及びその値を通知し、Ｓ１８で仮想信号伝達部１１８の応答を待つ。実行管理部１１６は、Ｓ１８において、仮想信号伝達部１１８からの応答を受けた後にＳ１９に進む。実行管理部１１６は、Ｓ１９において、ＣＰＵタイマ管理部１１７に装置シミュレータ１０３の時刻と共に、装置シミュレータ１０３の模擬処理の終了を通知して処理を終了する。
【００３５】
仮想信号伝達部１１８は、ＣＰＵシミュレータ１０１と装置シミュレータ１０３間の仮想信号の接続を行う。つまり、装置シミュレータ１０３に出力する仮想信号をＩ／Ｏシミュレータ１１２のレジスタから取得して装置シミュレータ１０３に出力する。同様に、装置シミュレータ１０３が出力する仮想信号をＩ／Ｏシミュレータ１１２のレジスタに設定する。仮想信号伝達部１１８が伝達すべき仮想信号は、配線定義情報としてあらかじめ定められている。図７は例示的な配線定義情報である。仮想信号名で特定される仮想信号について、データサイズ、信号種別、初期値が定義されている。なお、信号種別としては、例えば、バイナリ（Ｂ）、デジタル多値（Ｄ）、アナログ（Ａ）等が用いられる。さらに、各仮想信号について、Ｉ／Ｏシミュレータ１１２でのアドレス、ビット位置情報と、入力であるか出力であるかが定義されている。同様に、各仮想信号について、装置シミュレータ１０３での種別及びその識別子（ＩＤ）と、入力であるか出力であるかが定義されている。
【００３６】
続いて、情報処理装置が模擬対象とする画像形成装置３０１におけるカセット３０２からレジストセンサ３０８までの記録材の搬送（以下、給紙搬送と記す。）制御について説明する。
【００３７】
まず、図８及び図９を用いて、画像形成装置３０１の給紙搬送制御に関する制御機能を説明する。図８は、ターゲットＣＰＵ側のＯＳと、各タスクと、各ＣＰＵ周辺回路の関係を示す図である。また、図９は、ターゲットＣＰＵ側の各タスクと、画像形成装置３０１の給紙搬送に係る機構との関係を示す図である。なお、図９において、太破線は駆動力の伝達関係を示している。
【００３８】
図９において、メインモータ８０２は、レジストローラ３０７や、搬送経路においてその下流にある図示しない各要素の駆動源である。メインモータ８０２の駆動力は、レジストローラクラッチ８０４を介してレジストローラ３０７へ伝達される。給紙モータ８０３は、ピックアップローラ３０３、給紙ローラ３０４、給紙センサ３０５、搬送ローラ３０６の駆動源である。給紙モータ８０３の駆動力は、搬送ローラ３０６へは直接伝達され、給紙ローラ３０４へは給紙クラッチ８０５を介して伝達される。また、給紙ローラ３０４に伝達された給紙モータ８０３の回転力は、ベルト８１０を介してピックアップローラ３０３に伝達される。
【００３９】
ピックアップソレノイド８０６は、ピックアップローラ３０３をカセット３０２上に積載された用紙の表面と接離させるためのピックアップ機構を駆動するものである。ピックアップ機構は、ピックアップレバー８０７、ピックアップロッド８０８、ばね８０９から構成されている。ピックアップソレノイド８０６が非通電状態のときは、ばね８０９の力によりピックアップロッド８０８が上方に引っ張られ、ピックアップローラ３０３は用紙と離間する。ピックアップソレノイド８０６が通電状態になると、ピックアップレバー８０７を介してピックアップロッド８０８が下方に引っ張られ、ピックアップローラ３０３が用紙の最上面に接する。
【００４０】
従って、給紙モータ８０３が回転状態で、給紙クラッチ８０５が連結態の時に、ピックアップソレノイド８０６を作動させることにより、カセット３０２から、ピックアップローラ３０３によって給紙ローラ３０４まで用紙が繰り出される。この用紙は、レジストローラ３０７方向に向かって搬送される。
【００４１】
画像形成装置３０１の制御は、画像形成装置３０１に搭載されたターゲットＣＰＵによって行われる。ターゲットＣＰＵの給紙搬送制御に関連する機能として、画像形成制御タスク、搬送停止処理、給紙搬送制御タスク、給紙モータ停止処理、システムタイマ生成処理がある。また、給紙搬送制御に関連するもではないが、ターゲットＣＰＵは、ウォッチドッグタイマ（ＷＤＴ）・クリア処理を実行する。
【００４２】
画像形成制御タスクは、画像形成装置３０１への画像形成指示に応じて画像形成を行うものである。メインモータ８０２は、画像形成部や定着器の駆動源となっているため、画像形成制御タスクは、メインモータ８０２を画像形成開始時に起動し、画像形成終了時に停止する。また、画像形成制御タスクは、１ページの画像形成処理毎に給紙搬送制御タスクに画像形成ジョブ発生を通知する。
【００４３】
給紙搬送制御タスクは、画像形成制御タスクからの画像形成ジョブに応じて、先行紙との紙間をとりながら１枚の用紙に対する給紙搬送制御を行う。給紙搬送制御タスクは、給紙モータ８０３、給紙クラッチ８０５、ピックアップソレノイド８０６を制御してカセット３０２から用紙を送りだす。その後、給紙搬送制御タスクは、給紙センサ３０５で用紙先端が検知された時点でピックアップソレノイドを停止しピックアップローラ３０３を用紙表面から離間させる。その後、給紙搬送制御タスクは、所定の先行紙との紙間調整処理を行いつつレジストセンサ３０８までの用紙搬送を制御し、搬送停止処理を介してレジストセンサ３０８による用紙先端検知によって用紙搬送を停止し、給紙搬送処理を完了する。
【００４４】
搬送停止処理は、レジストセンサ３０８による用紙先端検知に応じて給紙搬送を停止する機能で、外部割込み生成機能に対する割込み設定機能と、外部割込み生成機能からの割込み要求に応じて実行される割込み処理とで構成される。給紙搬送制御タスクは、給紙開始後の所定タイミングにおいて搬送停止処理に対して、処理実行許可通知を出す。これに応じて、搬送停止処理は外部割込み生成機能に対してレジストセンサ３０８の信号入力を外部入力とし、レジストセンサ３０８の信号の紙無しレベルから紙有りレベルへの変化をトリガとする外部割込みを有効とする設定を行う。給紙搬送中の用紙先端がレジストセンサ３０８に到達し、レジストセンサ３０８の信号が紙無しレベルから紙有りレベルに変化すると、外部割込み生成機能は、搬送停止処理の指定に基づき割込み要求を発生させる。この割込み要求に応じて、搬送停止処理の割込み処理が起動される。搬送停止処理の割込み処理では、クラッチ８０４の連結解除と共に給紙モータ停止処理の起動処理を行う。
【００４５】
給紙モータ停止処理は、レジストローラクラッチ８０４の連結解除から所定時間後に給紙モータを停止する処理を行う機能である。具体的には、給紙モータ停止処理は、搬送停止処理から呼び出され、タイマＡに対する割込み設定をおこなう機能と、タイマＡからの割込み要求に応じて実行される割込み処理とで構成される。給紙モータ停止処理は、搬送停止処理から呼び出されるとタイマＡに対して所定時間後に割込みを発生させる設定を行う。そして、タイマＡによる設定時間後の割込み要求に対応する割込み処理において、給紙モータ８０３の停止処理を行った後に、給紙搬送制御タスク８１３に停止処理終了を通知する。
【００４６】
給紙搬送制御タスクは、停止処理終了通知を所定時間以内に受けた場合、正常に給紙搬送が完了したと判断し、画像形成制御タスクに給紙搬送終了を通知する。一方、給紙搬送制御タスクは、所定時間経過までに停止処理終了通知がない場合、ジャム発生と判断し、不図示の状態管理タスクに給紙遅延ジャム発生を通知する。
【００４７】
画像形成制御タスクは、給紙搬送制御タスクからの給紙搬送終了通知を受けた後、所定の画像形成準備が完了した時点で給紙モータを駆動し、クラッチ８０４を連結して用紙に画像を形成するための搬送を開始する。画像形成制御タスクは、搬送開始から所定タイミング後に外部装置へＴＯＰ信号を出力する。外部装置はＴＯＰ信号に同期して画像データを出力するため、ＴＯＰ信号の出力タイミングに対する用紙の搬送位置の精度が用紙上への画像形成位置精度に影響する。従って、搬送開始時の用紙先端位置、すなわち、給紙搬送終了時の用紙の一時停止位置の精度が重要になる。給紙搬送終了時の一時停止処理をレジストセンサ３０８信号に応じた外部割込みで処理するのはこのためである。
【００４８】
また、搬送を開始するため画像形成制御タスクによって給紙モータ８０３が駆動される際に、クラッチ８０５の連結よりも給紙モータ８０３の立ち上がりが遅いと搬送ローラ３０６による用紙の引っ張りが発生し、用紙搬送にずれが生じる恐れがある。給紙搬送終了時にクラッチ８０４の連結解除から時間差をつけて給紙モータ８０３の停止を行うのは、これにより搬送ローラ３０６とレジストローラ３０７の間に用紙のたるみを持たせて、搬送開始時に引っ張りが生じないようにするためである。
【００４９】
システムタイマ生成処理は、ファームウェアの制御において各種タイミングで制御を行うための基準となるシステムタイマを生成する機能で、機能の大部分はタイマＢからの割込み要求によって実行されるタイマ割込み処理として構成される。システムタイマ生成処理はタイマＢに対してシステムタイマの単位時間の間隔でタイマ割込みが発生するように設定し、タイマ割込みの発生毎にシステムタイマをカウントアップする。なお、以下の説明において、システムタイマの単位時間を１０ミリ秒に設定するものとする。
【００５０】
タスクタイマ管理部は、タスク毎に割り当てられるタイマの管理を行い、タスクからの指示に応じてタイマのカウント開始、停止、クリア、タスクタイマイベントの発生通知、タイマカウント値の通知などを行う。タスクタイマ管理部によるタスク毎のタイマ管理はシステムタイマを基準として行われる。給紙搬送制御タスクによる搬送停止処理に対する処理実行許可の通知、給紙遅延ジャム検出は、タスクタイマ管理部に登録した各々のタスクタイマイベントに応じて行っている。
【００５１】
図８の制御構成において、タイマイベントを発生させるＣＰＵ周辺回路の機能はタイマＡとタイマＢである。よって、本実施形態による情報処理装置は、タイマＡ及びＢの制御レジスタに対するアクセスイベントに応じてタイマイベント管理テーブル１１９や、タイマイベント管理テーブル１１９を更新する。
【００５２】
また、図８のＷＤＴリセット回路は、ウォッチドッグタイマと呼ばれる専用のタイマのリセットを行う。なお、ウォッチドッグタイマの値が所定値になるとターゲットＣＰＵのハードウェアリセット処理が開始される。これは、ソフトウェアの暴走対策であり、ソフトウェアが正常に動作している場合、ＷＤＴクリア処理が、ＷＤＴリセット回路を使用してウォッチドッグタイマの値が所定値になる前にリセットを行う。
【００５３】
よって、ＷＤＴクリア処理は、ソフトウェア全体の一連の処理の中で所定時間以内に必ず実行される処理として組み込まれている。なお、タイマ割込み等、ハードウェアから起動される処理の場合、タスク処理が暴走していても定期的に実行される可能性があるため、ＷＤＴクリア処理は、通常、非割込み処理として実装される。
【００５４】
図８のタイマＡ及びタイマＢは、ダウンカウント・リロード方式のタイマである。具体的には、図１０に示す様に、タイマＡ及びＢは、それぞれ、タイマカウンタレジスタ（ＴＣＲ）と、リロードレジスタ（ＴＲＬＲ）と、制御・状態レジスタ（ＴＣＳＲ）を有している。ＴＲＬＲに設定された値は、ＴＣＲに設定され、ＴＣＳＲのカウント許可ビット（ＴＣＥ）が許可を示す値に設定されると、ＴＣＲは、その値を指定周期毎にカウントダウンする。なお、指定周期は、ＴＣＳＲのクロック（分周比）指定（ＣＬＳ）ビットにて指定される。ＴＣＲの値が零からアンダーフローした時点で、タイマは割込み要求を発生させ、ＴＣＳＲのアンダーフロー割込み要求（ＵＦＩＲ）ビットを、割込み要求が発生していることを示す値に設定する。なお、ＴＣＳＲのアンダーフロー割込み許可（ＵＦＩＤ）ビットが割込みを許可しない値である場合には割込みは発生しない。
【００５５】
本実施形態におけるタイマシミュレータ１１１は、上記タイマＡ及びＢの模擬動作を行う。また、ＣＰＵタイマ管理部１１７は、ＣＰＵコアシミュレータ１０４による、各タイマのＴＲＬＲ及びＴＣＳＲへの設定内容によりタイマイベントの発生と、そのタイミング、つまり時刻を判定する。以下の説明において、タイマＡの制御レジスタ名及び制御ビット名には、＿Ａを付与し、タイマＢの制御レジスタ名及び制御ビット名には、＿Ｂを付与して両者を区別する。
【００５６】
以下、図１１から図１３を用いて、情報処理装置の動作を説明する。なお、図１１から図１３において、ＣＰＵ周辺回路シミュレータ１０５における各値は、基準タイマ１０６の値を示している。また、シミュレータ接続部１０２における各値は、タイマイベント管理テーブル１１９の先頭にあるタイマイベントの発生時刻を示している。さらに、装置シミュレータ１０３における各数字は、装置シミュレータ１０３における時間の進行を示している。なお、装置シミュレータ１０３において単一の時刻のみを表示しているのは、装置シミュレータ１０３が模擬動作を行っておらず、よって、時間が進行していないことを意味している。
【００５７】
情報処理装置の動作開始により、ＣＰＵコアシミュレータ１０４は、図１１のＳ１０１において、システムタイマの生成のためにタイマＢに対してタイマ割込み設定を行う。具体的には、ＴＲＬＲ＿Ｂにタイマイベント発生までの時間を設定して、ＵＦＩＥ＿Ｂビットを“許可”に設定後、ＴＣＥ＿Ｂビットを“許可”に設定する。なお、タイマ割込み設定で指定される値は、実際には、タイマイベントが発生するまでのクロック数から１を引いた値、つまり、期間を特定する値であり時刻ではない。しかしながら、説明を簡潔にするため、図１１から図１３の説明においては、期間で設定されるものであっても、時刻を用いて説明する。つまり、Ｓ１０１では、時刻Ｔ０にタイマイベントが発生する様に、ＴＲＬＲ＿Ｂに値が設定されたものとする。
【００５８】
シミュレータ接続部１０２は、ＣＰＵコアシミュレータ１０４によるタイマシミュレータ１１１のアクセスに応じて、Ｓ１０２において、タイマイベントを判定する。この場合、ＵＦＩＥ＿Ｂビット及びＴＣＥ＿Ｂビットが共に“許可”であるため、ＴＲＬＲ＿Ｂの値から時刻Ｔ０にタイマイベントが発生すると判断する。よって、タイマイベント管理テーブル１１９の先頭に、時刻Ｔ０で発生するタイマイベントを登録する。
【００５９】
本実施形態のＣＰＵコアシミュレータ１０４は、一連の主要処理を実行する度に、ＷＤＴクリア処理を実行する。シミュレータ接続部１０２は、Ｓ１０３において発生したＷＤＴクリア処理をトリガとして、Ｓ１０４において、装置シミュレータ１０３に、タイマイベント管理テーブル１１９の先頭のタイマイベント発生時刻までの模擬動作を指示する。つまり、時刻Ｔ０までの模擬動作を指示する。
【００６０】
Ｓ１０５において、装置シミュレータ１０３が時刻Ｔ０までの模擬動作の終了をシミュレータ接続部１０２に通知する。これにより、既に説明した様に、シミュレータ接続部１０２のＣＰＵタイマ管理部１１７は、Ｓ１０６において、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻を基準タイマ１０６に設定する。ＣＰＵ周辺回路シミュレータ１０５のタイマシミュレータ１１１は、基準タイマ１０６の更新により、ＴＣＲ＿Ｂの値から基準タイマ１０６の増加分に対応する値を引く。これにより、アンダーフローが発生するため、ＣＰＵ周辺回路シミュレータ１０５は、Ｓ１０７において、ＣＰＵコアシミュレータ１０４にタイマＢの割込み要求を通知する。これにより、ＣＰＵコアシミュレータ１０４は、例えば、図８を用いて説明したシステムタイマ生成処理の様な、割込み処理を実行する。なお、タイマＢによる割込みは周期的に実行するものであるため、ＣＰＵコアシミュレータ１０４は、Ｓ１０８において、時刻Ｔ１におけるタイマイベントを発生させるためタイマＢに対してタイマ割込み設定を行う。
【００６１】
また、シミュレータ接続部１０２のＣＰＵタイマ管理部１１７は、ＣＰＵコアシミュレータ１０４によるタイマシミュレータ１１１のアクセスに応じて、Ｓ１０９において、タイマイベントを判定する。そして、タイマイベント管理テーブル１１９の先頭に、時刻Ｔ１で発生するタイマイベントを登録する。
【００６２】
続いて、装置シミュレータ１０３が仮想信号の変換により模擬動作を終了した場合について図１２を用いて説明する。図１２の初期状態において、装置シミュレータ１０３は、時刻Ｔ９から時刻Ｔ１１までの模擬動作を指示されているものとする。したがって、基準タイマ１０６の時刻はＴ９であり、タイマイベント管理テーブル１１９の先頭には、時刻Ｔ１１で発生するタイマイベントが登録されている。
【００６３】
ここで、Ｓ２０１において、仮想信号が変化したことにより、装置シミュレータ１０３は模擬動作を終了し、シミュレータ接続部１０２に仮想信号の変化と共に終了時刻Ｔ１０を通知している。これにより、シミュレータ接続部１０２の仮想信号伝達部１１８は、Ｓ２０２において、ＣＰＵ周辺回路シミュレータ１０５に信号変化を通知する。また、時刻Ｔ１０が、タイマイベント管理テーブル１１９の先頭のタイマイベントの時刻Ｔ１１より早いため、シミュレータ接続部１０２のＣＰＵタイマ管理部１１７は、Ｓ２０２において、基準タイマ１０６の値を時刻Ｔ１０に設定する。ＣＰＵ周辺回路シミュレータ１０５は、信号変化に応じて、Ｓ２０３において、ＣＰＵコアシミュレータ１０４に外部割込み要求を行う。
【００６４】
ＣＰＵコアシミュレータ１０４は、通知された信号変化に応答して、Ｓ２０４において、信号の出力を変化させ、この信号出力の変化は、ＣＰＵ周辺回路シミュレータ１０５及びシミュレータ接続部１０２経由で装置シミュレータ１０３に伝達される。さらに、本例において、ＣＰＵコアシミュレータ１０４は、Ｓ２０３により通知された信号の変化により、Ｓ２０５において、タイマＡに対して時刻Ｔ１１’における割込みを設定している。具体的には、ＣＰＵコアシミュレータ１０４は、ＴＲＬＲ＿Ａに時刻Ｔ１１’までの時間を設定して、ＵＦＩＥ＿Ａビットを“許可”に設定後、ＴＣＥ＿Ａビットを“許可”に設定する。なお、時刻Ｔ１１’は、時刻Ｔ１１より後の時刻であるものとする。
【００６５】
シミュレータ接続部１０２は、ＣＰＵコアシミュレータ１０４によるタイマシミュレータ１１１へのアクセスに応じて、Ｓ２０６において、時刻Ｔ１１’におけるタイマイベントを判定し、タイマイベント管理テーブル１１９に登録する。なお、時刻Ｔ１１’は、時刻Ｔ１１より後であるため、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻は時刻Ｔ１１のままである。
【００６６】
Ｓ２０７において、ＣＰＵコアシミュレータ１０４はＷＤＴクリア処理を実行する。シミュレータ接続部１０２は、ＷＤＴクリア処理をトリガとして、Ｓ２０８において、装置シミュレータ１０３に、タイマイベント管理テーブル１１９の先頭のタイマイベント発生時刻までの模擬動作を指示する。つまり、時刻Ｔ１１までの模擬動作を指示する。
【００６７】
Ｓ２０９において、装置シミュレータ１０３が時刻Ｔ１１までの模擬動作の終了をシミュレータ接続部１０２に通知する。これにより、既に説明した様に、シミュレータ接続部１０２のＣＰＵタイマ管理部１１７は、Ｓ２１０において、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻を基準タイマ１０６に設定する。また、タイマイベント管理テーブル１１９の先頭のタイマイベントを削除する。これにより、タイマイベント管理テーブル１１９の先頭のタイマイベントは、Ｓ２０５において設定した時刻Ｔ１１’となる。
【００６８】
ＣＰＵ周辺回路シミュレータ１０５のタイマシミュレータ１１１は、基準タイマ１０６の更新により、図１１のＳ１０７と同様に、Ｓ２１１において、ＣＰＵコアシミュレータ１０４にタイマＢの割込み要求を通知する。これにより、ＣＰＵコアシミュレータ１０４は、タイマＢによる割込み処理を実行し、Ｓ２１１にて、時刻Ｔ１２おけるタイマイベントを発生させるためタイマＢに対してタイマ割込み設定を行う。なお、時刻Ｔ１２は、時刻Ｔ１１’より後の時刻であるものとする。
【００６９】
シミュレータ接続部１０２は、ＣＰＵコアシミュレータ１０４によるタイマシミュレータ１１１へのアクセスに応じて、Ｓ２１３おいて、時刻Ｔ１２におけるタイマイベントを判定し、タイマイベント管理テーブル１１９に登録する。なお、時刻Ｔ１２は、時刻Ｔ１１’より後であるため、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻は時刻Ｔ１１’のままである。
【００７０】
Ｓ２１４において、ＣＰＵコアシミュレータ１０４はＷＤＴクリア処理を実行し、既に説明したのと同様に、シミュレータ接続部１０２は、Ｓ２１５において、装置シミュレータ１０３に、時刻Ｔ１１’までの模擬動作を指示する。
【００７１】
Ｓ２１６において、装置シミュレータ１０３が時刻Ｔ１１’までの模擬動作の終了をシミュレータ接続部１０２に通知する。これにより、既に説明した様に、シミュレータ接続部１０２のＣＰＵタイマ管理部１１７は、Ｓ２１７において、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻を基準タイマ１０６に設定する。また、タイマイベント管理テーブル１１９の先頭のタイマイベントを削除する。これにより、タイマイベント管理テーブル１１９の先頭のタイマイベントは、Ｓ２１３において設定した時刻Ｔ１２となる。ＣＰＵ周辺回路シミュレータ１０５のタイマシミュレータ１１１は、基準タイマ１０６の更新でＴＣＲ＿Ａがアンダーフローすることにより、Ｓ２１８において、ＣＰＵコアシミュレータ１０４にタイマＡの割込み要求を通知する。これにより、ＣＰＵコアシミュレータ１０４は、タイマＡによる割込み処理を実行する。
【００７２】
図１２においては、タイマＡに設定したタイマイベントの発生時刻Ｔ１１’が、時刻Ｔ１１より後の時刻であった。図１３に、タイマＡに設定したタイマイベントの発生時刻Ｔ１１’が、時刻Ｔ１１より前の時刻である場合のシーケンスを示す。
【００７３】
図１３のＳ３０１からＳ３０６までの処理は、図１２のＳ２０１からＳ２０６の処理と同様であり説明は省略する。なお、本例において、時刻Ｔ１１’は、時刻Ｔ１１より前であるため、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻は時刻Ｔ１１’に変更となる。
【００７４】
Ｓ３０７において、ＣＰＵコアシミュレータ１０４はＷＤＴクリア処理を実行する。シミュレータ接続部１０２は、ＷＤＴクリア処理をトリガとして、Ｓ３０８において、装置シミュレータ１０３に、タイマイベント管理テーブル１１９の先頭のタイマイベント発生時刻までの模擬動作を指示する。つまり、時刻Ｔ１１’までの模擬動作を指示する。
【００７５】
Ｓ３０９において、装置シミュレータ１０３が時刻Ｔ１１’までの模擬動作の終了をシミュレータ接続部１０２に通知する。これにより、既に説明した様に、シミュレータ接続部１０２のＣＰＵタイマ管理部１１７は、Ｓ３１０において、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻を基準タイマ１０６に設定する。また、タイマイベント管理テーブル１１９の先頭のタイマイベントを削除する。これにより、タイマイベント管理テーブル１１９の先頭のタイマイベントは時刻Ｔ１１となる。ＣＰＵ周辺回路シミュレータ１０５のタイマシミュレータ１１１は、基準タイマ１０６の更新でＴＣＲ＿Ａがアンダーフローすることにより、Ｓ３１１において、ＣＰＵコアシミュレータ１０４にタイマＡの割込み要求を通知する。これにより、ＣＰＵコアシミュレータ１０４は、タイマＡによる割込み処理を実行する。その後、ＣＰＵコアシミュレータ１０４によるＷＤＴクリア処理をトリガとして、装置シミュレータ１０３は、時刻Ｔ１１までの模擬動作を実行する。
【００７６】
図１２のＳ２０１及びＳ３０１において変化した信号は、例えば、記録材の先端を検出するレジストセンサ３０８の出力信号である。この場合、図１２のＳ２０４及び図１３のＳ３０４においてＣＰＵコアシミュレータ１０４がその変化を通知する信号は、レジストローラクラッチ８０４をオフとする信号である。装置シミュレータ１０３は、ＣＰＵコアシミュレータ１０４から通知された信号の変化については、例えば、次のＷＤＴクリア処理をトリガとする模擬動作に反映させる。装置シミュレータ１０３の模擬動作は、基準タイマ１０６との時間同期が図られているため、実装置に対する正確な模擬動作を実現することができる。また、ＣＰＵコアシミュレータ１０４は、タイマＢを直接読み込むこむこともできる。
【００７７】
なお、上述した実施形態においては、ダウンカウント・リロード方式のタイマを用いていたが、他の種類のタイマであっても良い。
【００７８】
（第二実施形態）第一実施形態において、装置シミュレータ１０３は、シミュレータ接続部１０２が指定する時間分の模擬動作を実行していた。本実施形態において、装置シミュレータ１０３は、予め定めた単位時間分の模擬動作を順に行う。以下、第一実施形態との主な相違点を中心に説明する。
【００７９】
本実施形態において、装置シミュレータ１０３は、シミュレータ接続部１０２から実行指示を受け取る度に、１単位時間の模擬動作を行い、終了後、終了時刻と共に模擬動作の終了をシミュレータ接続部１０２に通知して、待ち状態となる。なお、模擬動作中に仮想信号の値が変化した場合には、仮想信号及びその値並びにその時点の時刻を特定する情報と共に模擬動作の終了をシミュレータ接続部１０２に通知する。
【００８０】
図１４は、本実施形態における実行管理部１１６の処理を示すフローチャートである。図６に示す第一実施形態との相違点は、Ｓ１２の時間算出に対応する処理がないことと、Ｓ１６に対応するＳ２５の分岐先が異なることである。前者の相違点は、本実施形態において、装置シミュレータ１０３は単位時間毎に模擬動作を終了するからである。後者の相違点は、装置シミュレータ１０３は単位時間毎に模擬動作を終了するが、実行管理部１１６は、装置シミュレータ１０３による対象時刻までの模擬動作を管理するためである。つまり、図１４のＳ２５において信号変化がない場合、実行管理部１１６は、Ｓ２１からの処理を、装置時刻が対象時刻を超えるまで繰り返す。
【００８１】
以上、装置シミュレータ１０３については、単位時間毎に同期待ちとなる実行方式とすることができる。
【００８２】
（第三実施形態）第一及び第二実施形態において、実行管理部１１６は、タイマイベントが存在する場合のみ装置シミュレータ１０３に実行指示を行うものであった。しかし、ターゲットコードによっては、タイマイベントが長時間発生しない場合も生じ得る。例えば、ターゲットコードが、非時間同期処理のみを実行している様な場合であり、この場合には制御対象装置との正確な時間同期は必要ないが、制御対象装置の連係動作については模擬する必要がある。
【００８３】
本実施形態においては、非時間同期処理もタイマイベントとして扱うことで、ＣＰＵコアシミュレータ１０４が長時間タイマイベントを設定しない場合においても、装置シミュレータ１０３が模擬動作を実行する様にするものである。
【００８４】
図１５は、本実施形態における情報処理装置の構成図である。図１との相違点は、ＣＰＵシミュレータ１０１にイベント制御部１４２を設け、シミュレータ接続部１０２にＣＰＵシミュレータ実行管理部１４１を設けたことである。
【００８５】
まず、イベント制御部１４２は、ＣＰＵシミュレータ１０１が、信号変化の通知等、シミュレータ接続部１０２に何らかの通知を行う度に、ＣＰＵコアシミュレータ１０４及びＣＰＵ周辺回路シミュレータ１０５の模擬動作を一時停止させる。その後、ＣＰＵシミュレータ実行管理部１４１から、実行再開指示を受けると、ＣＰＵコアシミュレータ１０４及びＣＰＵ周辺回路シミュレータ１０５の模擬動作を再開させる。
【００８６】
また、本実施形態において、ＣＰＵタイマ管理部１１７は、例えば、ＷＤＴクリア処理といった、ＣＰＵコアシミュレータ１０４が繰り返し実行する命令実行イベント（第２の命令）に応じてタイマイベント管理テーブル１１９にタイマイベントを設定する。この特定命令実行イベントよるタイマイベントを、他の通常のタイマイベントと区別するために、本実施形態においてはフラグ情報を使用する。具体的には、図１６に示す様に、本実施形態において、タイマイベント管理テーブル１１９にフラグ情報を追加する。このフラグ情報が、例えば、“１”であると、それは、例えば、特定命令実行イベントであることを示す。
【００８７】
ＣＰＵタイマ管理部１１７は、ＣＰＵコアシミュレータ１０４の特定命令実行イベントが所定の回数実行される毎に、１つの特定命令実行イベントが発生する様にタイマイベント管理テーブル１１９に登録を行う。例えば、ＷＤＴクリア処理が、約１０ｍｓｅｃ間隔で実行される場合、例えば、ＷＤＴクリア処理が５回実行される度に１回の特定命令実行イベントが発生する様に、タイマイベント管理テーブル１１９への登録を行う。なお、時刻は、例えば、現在の模擬時刻に対して５０ｍｓｅｃ後に実行される様にする。他のタイマイベントについては第一実施形態と同様である。
【００８８】
ＣＰＵシミュレータ実行管理部１４１は、ＣＰＵシミュレータ１０１からの各種通知を受けると直ちに実行再開を指示する。ただし、タイマイベント管理テーブル１１９の先頭のタイマイベントが、特定命令実行イベントである場合には、実行再開を指示せず待機する。その後、装置シミュレータ１０３が、この先頭のタイマイベントの時刻までの模擬動作を終了したときに、ＣＰＵシミュレータ実行管理部１４１は、ＣＰＵシミュレータ１０１に対して実行の再開を指示する。
【００８９】
以上の構成により、ＣＰＵコアシミュレータ１０４が長期間タイマイベントを設定しない場合でも、装置シミュレータ１０３の模擬動作を実行する。
【００９０】
以上、シミュレータ接続部１０２は、タイマイベント管理テーブル１１９の内容に基づきタイマイベントの発生時刻までの模擬動作を装置シミュレータ１０３に指示する。この様に、タイマイベントを単位としてＣＰＵコアシミュレータ１０４と、装置シミュレータ１０３との模擬時間の同期を行うことで、必要な精度での時刻同期を維持しつつ、不要な時刻同期処理を防ぐことができる。よって、処理効率の低下を抑えることができる。
【００９１】
具体的には、実行管理部１１６は、ＣＰＵコアシミュレータ１０４が繰り返し実行する、例えば、ＷＤＴクリア処理を実行した際に、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻までの模擬動作を装置シミュレータ１０３に指示する。そして、ＣＰＵタイマ管理部１１７は、装置シミュレータ１０３が模擬動作の終了を通知したとき、その時点の装置シミュレータ１０３の時刻とタイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻を比較する。装置シミュレータ１０３側に信号の変化等のイベントが発生していないのであれば、通常、この時刻はタイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻と同じである。この場合、このタイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻を基準タイマ１０６に設定して、このタイマイベントを発生させる。この時点において、装置シミュレータ１０３と、ＣＰＵコアシミュレータ１０４の時刻は一致、つまり、時刻同期が行われる。一方、装置シミュレータ１０３側に信号の変化等のイベントが発生している場合、装置シミュレータ１０３は、タイマイベント管理テーブル１１９の先頭のタイマイベントの発生時刻より前の時刻を通知する。この場合、基準タイマ１０６には、装置シミュレータ１０３が通知した時刻を設定する。この時点において、装置シミュレータ１０３と、ＣＰＵコアシミュレータ１０４の時刻は一致する。また、ＣＰＵコアシミュレータ１０４は、仮想信号伝達部１１８経由で通知される信号の変換に合わせた処理を開始する。つまり、装置シミュレータ１０３と、ＣＰＵコアシミュレータ１０４の時刻同期が行われる。この様に、不要な時刻同期処理を防ぐことができる。
【００９２】
また、ＣＰＵタイマ管理部１１７は、ＣＰＵコアシミュレータ１０４が繰り返し実行する、例えば、ＷＤＴ処理に対応する時刻を、タイマイベント管理テーブル１１９にタイマイベントとして、その時刻と共に登録する。この構成により、タイマイベントが長期間発生しない様な状況においても、装置シミュレータ１０３とＣＰＵコアシミュレータ１０４の時刻同期を行うことができる。
【図１】
0005814597.tif 000002
【図２】
0005814597.tif 000003
【図３】
0005814597.tif 000004
【図４】
0005814597.tif 000005
【図５】
0005814597.tif 000006
【図６】
0005814597.tif 000007
【図７】
0005814597.tif 000008
【図８】
0005814597.tif 000009
【図９】
0005814597.tif 000010
【図１０】
0005814597.tif 000011
【図１１】
0005814597.tif 000012
【図１２】
0005814597.tif 000013
【図１３】
0005814597.tif 000014
【図１４】
0005814597.tif 000015
【図１５】
0005814597.tif 000016
【図１６】
0005814597.tif 000017