以下に本発明の一実施形態を示す。以下で説明される実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の実施形態によって限定されるわけではない。
[第1の実施形態]
<情報処理装置200の構成>
以下では、図1乃至図14を参照して、本発明における第1の実施形態について説明する。まず、図2を参照して、本実施形態に係る情報処理装置200の構成例について説明する。情報処理装置200は、例えば、パーソナルコンピュータやワークステーション等のコンピュータシステムとして実現できる。なお、本発明に係るシミュレーションシステムは、情報処理装置200で実行されるプログラムとして実現される。
中央演算処理装置(CPU201)は、バス220を介して情報処理装置200内の各ユニット(202〜209)にアクセスしてそれらの動作を制御する。ROM202は、CPU201からバス220を介してアクセス可能な読み出し専用メモリである。RAM203は、読み書き可能なメモリである。入力インタフェース204は、キーボード、マウス、タブレット等の入力装置205を介してユーザからの入力を受け付ける。出力インタフェース206は、出力装置207に対してデータの表示や出力を行うためのインタフェースである。出力装置207は、CRT、LCD等の表示装置207a、プリンタ、プロッタ等の出力装置207bを含む。外部記憶装置インタフェース208は、外部記憶装置210に対するデータの入出力を行うインタフェースである。外部記憶装置210は、ハードディスク(HDD)209の他に、FD、CD‐ROM、MO、CF等でもよい。HDD209を含む外部記憶装置210には、本発明に係るシミュレーションシステムの各機能を情報処理装置200上で実現するための処理プログラム209aが格納される。外部記憶装置210には、さらに、シミュレーション対象となる装置の情報を含むシミュレーション用の各種の設定データ209b、及びシミュレーション対象の装置に実際に組み込まれる制御用のソフトウェア(ファームウェア)209cが格納される。
本実施形態において、情報処理装置200においてシミュレーションが実行される際には、処理プログラム209a、各種の設定データ209b、及びファームウェア209cが外部記憶装置210からRAM203にロードされる。CPU201はRAM203にロードされたこれらのデータを用いて、後述するシミュレーションを実行する。
<シミュレーション対象の画像形成装置300の構成>
次に、図3を参照して、本実施形態に係るシミュレーションシステムによるシミュレーション対象となる電子写真方式の画像形成装置300の概略的な構成について説明する。画像形成装置300は、イエロー、マゼンタ、シアン、ブラックの各色のトナー画像が形成される像担持体として、4個の感光ドラム303a、303b、303c、303d(303a〜d)を備える。感光ドラム303a〜dは直列に配置され、各感光ドラム303a〜dの周囲には、1次帯電器304a〜d、現像器306a〜d及びクリーニング装置307a〜dがそれぞれ配置される。また、各感光ドラム303a〜dの上方には、露光装置305a〜dが配置される。一方で、各感光ドラム303a〜dの下方には、中間転写ベルト(ITB)301が配置される。
ITB301は、ITBを駆動するローラ308、309、310の周囲に張設されるとともに、これらのローラの駆動によって感光ドラム303a〜dと略同速で矢印方向に回転する。ITB301は、感光ドラム303a〜dと各1次転写ローラ302a〜dとによって挟持される。また、画像形成装置300は、用紙格納カセット312、ピックアップローラ313、レジ搬送ローラ314、及びレジセンサ315から成る給紙搬送機構を備える。さらに、画像形成装置300は、レジ搬送ローラ314の下流に、ITB301と当接する2次転写ローラ316、及び定着装置317から成る印字搬送機構、並びに排紙ローラ318、及び排紙トレイ319から成る排紙搬送機構を備える。
次に、図4を参照して、画像形成装置300の画像形成に係る各ブロックの機能について説明する。画像形成装置300は、画像形成機能を制御するプリンタ主制御部401と、画像データを生成するビデオコントローラ402とを備える。プリンタ主制御部401は、CPU、ROM、RAM、ゲート素子等を備える。なお、プリンタ主制御部401による主要な制御は、プリンタ主制御部401内部のROMに格納された制御用のソフトウェア(ファームウェア)を、CPUがRAMに読み出して実行することによって実現される。
また、画像形成装置300は、メインモータ404、ピックアップソレノイド406、レジクラッチ407、定着排紙モータ403といった各種のアクチュエータを備える。さらに、画像形成装置300は、図3に示した定着装置317に加えてプロセスユニット405を備える。ここで、定着排紙モータ403は、定着装置317の定着ローラ410、排紙ローラ318の駆動源である。一方、メインモータ404は、ピックアップローラ313、レジ搬送ローラ314、2次転写ローラ316、及びプロセスユニット405のメカ機構415の駆動源である。プリンタ主制御部401は、定着排紙モータ403及びメインモータ404の駆動を制御するとともに、ピックアップソレノイド406及びレジクラッチ407の動作を制御する。これにより、プリンタ主制御部401は、各種ローラの動作を介して用紙搬送動作を制御する。
定着装置317は、定着ローラ410を加熱するメインヒータ408、サブヒータ409、並びに、ITB301に形成されたトナー画像が転写された用紙を加熱及び加圧する定着ローラ410を備える。定着装置317は、定着ローラ410の表面温度を検出する複数の温度センサ411、412(中央温度センサ411、端部温度センサ412)をさらに備える。
プロセスユニット405は、光学ユニット413、高圧ユニット414、及びメカ機構415を備える。光学ユニット413は、感光ドラム303a〜d、1次帯電器304a〜d、現像器306a〜d、露光装置305a〜d、ITB301、1次転写ローラ302a〜d、2次転写ローラ316の各装置に光学的な作用を発生させる。一方で、高圧ユニット414は、これらの各装置に電気的な作用を発生させる。メカ機構415は、これらの各装置に機械的な駆動を与える。
<画像形成装置300の動作>
次に、上記の画像形成装置300における画像形成の概略的な手順について説明する。画像形成装置300において画像形成を行う場合、プリンタ主制御部401は、光学ユニット413における画像の副走査方向(用紙の搬送方向)の同期信号である垂直同期信号(/TOP信号)を所定のタイミングでビデオコントローラ402へ出力する。また、プリンタ主制御部401は、光学ユニット413における画像の主走査方向の同期信号である水平同期信号(/BD信号)を所定のタイミングでビデオコントローラ402へ出力する。これらの同期信号に基づいて、ビデオコントローラ402は画像信号をプリンタ主制御部401へ出力する。例えば、ビデオコントローラ402は、/TOP信号を基準として、当該/TOP信号を出力した後に所定のタイミングにおいて、各色の画像信号をプリンタ主制御部401に対して出力する。プリンタ主制御部401は、/TOP信号に同期してプロセスユニット405を制御することによって、露光、現像、1次転写等の周知の画像形成プロセスを順次実施させる。これにより、ITB301上にトナー画像が形成される。
プリンタ主制御部401は、さらに、各アクチュエータを制御することによって、用紙311の搬送を制御する。具体的には、プリンタ主制御部401は、用紙格納カセット312から用紙を給紙した後、レジセンサ315に用紙先端が達したことを検知すると、当該タイミングにおいて用紙311を一時的に停止させる。プリンタ主制御部401は、/TOP信号を基準とした所定のタイミングにおいて、レジセンサ315の位置に停止した用紙311の2次転写部への給送を開始する。これにより、プリンタ主制御部401は、2次転写部において、ITB301に形成されたトナー画像を用紙311上の所定の位置に転写させる。さらに、プリンタ主制御部401は、温度センサ411、412による温度の検知結果に基づいて2つのヒータ408、409を制御することによって、定着ローラ410の温度を定着用の所定温度に制御する。その後、プリンタ主制御部401は、トナー画像が2次転写された用紙311を定着装置317に給送して、当該トナー画像を用紙311上に定着させる制御を行う。
以下で説明するように、本実施形態に係るシミュレーションシステムは、画像形成装置300におけるプリンタ主制御部401のCPU(以下では、情報処理装置200のCPU201と区別するために、「ターゲットCPU」と称する。)で実行されるファームウェアの動作を検証及び評価するためのシミュレーションシステムである。具体的には、当該シミュレーションシステムは、当該ファームウェアによる命令の実行、当該命令の実行に応じた用紙の搬送、及び画像形成のための各負荷の動作を、情報処理装置200上で模擬する。また、当該シミュレーションシステムは、実機と同様に、各負荷から当該ファームウェアに対してフィードバック信号を返す動作についても模擬する。
<シミュレーションシステム100の構成>
次に、図1を参照して、情報処理装置200で実現されるシミュレーションシステム100の機能的な構成の一例について説明する。本実施形態において、シミュレーションシステム100は、画像形成装置300の各部を模擬する複数のシミュレータとして、CPUシミュレータ102、用紙搬送シミュレータ103、プロセスユニットシミュレータ104、及び画像シミュレータ105を有する。さらに、シミュレーションシステム100は、これら複数のシミュレータを接続し、それらを連携して動作させるシミュレータ接続部101を有する。
本実施形態において、シミュレーションシステム100は、上記のように、画像形成装置300の構成要素のそれぞれに対応する個別のシミュレータを有する。これは、画像形成装置300の構成要素ごとに、シミュレータの目的及び実現方式が異なるためである。このような構成は、画像形成装置300のファームウェアの動作の検証用及び評価用のシミュレータとして、その作成、運用及び保守の何れの観点からも合理的である。
シミュレータ接続部101は、異なる機能に対応した複数のシミュレータを接続し、連携して動作させることによって、情報処理装置200上で1つのシミュレーションシステムとしてそれらを動作させる役割を有する。シミュレータ接続部101は、コア部106と、各シミュレータが接続されるI/F(CPUシミュレータ102用のシミュレータI/F107、用紙搬送シミュレータ103用のシミュレータI/F108、プロセスユニットシミュレータ104用のシミュレータI/F109、及び画像シミュレータ105用のシミュレータI/F110)とを有する。
コア部106は、同期モジュール111と配線モジュール112とを有する。配線モジュール112は、信号管理部117を有するとともに、信号管理部117によって管理される信号管理情報118を保持する。また、シミュレータI/F107〜110は、それぞれ、各シミュレータに対応する信号情報113〜116を保持する。これらの信号管理情報118及び信号情報113〜116については後述する。
本実施形態では、シミュレーションを実行する際に、CPUシミュレータ102、用紙搬送シミュレータ103、プロセスユニットシミュレータ104、及び画像シミュレータ105は、情報処理装置200上でそれぞれ独立したプロセスとして実行される。これらの複数のシミュレータは、シミュレータ接続部101を介して他のシミュレータと接続するための外部I/F119〜122を有し、これらはそれぞれ異なる仕様を有していてもよい。また、本実施形態では、シミュレータ接続部101は、マルチスレッド構成を有する。このため、シミュレータ接続部101におけるコア部106及びシミュレータI/F107〜110による処理は、情報処理装置200において別々のスレッドとして並列に実行され得る。
なお、外部記憶装置210に格納された設定データ209bには、シミュレーションシステム100におけるシミュレーションの実行に必要な定義情報としてユーザによって予め設定される、シミュレータ構成定義情報123と配線定義情報124とが含まれる。シミュレータ構成定義情報123は、シミュレータ接続部101に接続される複数のシミュレータ(102〜105)の構成に関する定義情報である。また、配線定義情報124は、シミュレータ接続部101に接続されるシミュレータ間で信号を伝達するために使用される信号線の、シミュレータ間の配線情報を定義したものである。
<シミュレーションシステム100の動作>
次に、情報処理装置200において実行されるシミュレーションシステム100の各部の動作について説明する。以下では、シミュレータ接続部101、CPUシミュレータ102、用紙搬送シミュレータ103、プロセスユニットシミュレータ104、画像シミュレータ105の機能及び動作について順に説明する。
(シミュレータ接続部101)
シミュレータ接続部101は、各種のシミュレータを相互に接続するとともに、それらを1つのシミュレーションシステム100として連携して動作させる。これにより情報処理装置200は、シミュレーション対象の画像形成装置300の動作をシミュレーションする。シミュレータ接続部101において、コア部106は、CPUシミュレータ102、用紙搬送シミュレータ103、プロセスユニットシミュレータ104、及び画像シミュレータ105の間におけるデータ伝送処理及び同期処理に関する基本的な制御を行う。コア部106は、同期モジュール111と配線モジュール112とを用いてこれらの制御を実現する。また、シミュレータI/F107〜110は、コア部106と各シミュレータとを接続するためのインタフェースである。具体的には、シミュレータI/F107〜110の各々は、接続対象のシミュレータとの間で当該シミュレータの外部I/Fの仕様に適合した接続処理を行う。その一方で、シミュレータI/F107〜110の各々は、コア部106との間で全てのシミュレータI/Fにおいて共通の仕様に基づく接続処理を行う。
これらのシミュレータI/F用のプログラムは、処理プログラム209aに含まれるシミュレータI/Fライブラリとして外部記憶装置210に予め格納されている。このシミュレータI/Fライブラリは、シミュレーションシステム100を構成するシミュレータごとに用意され、ダイナミックリンクライブラリ(DLL)として提供される。このように、シミュレータ接続部101に対して接続するシミュレータに対応したシミュレータI/Fライブラリを用意することによって、必要に応じて新たなシミュレータをシミュレーションシステム100に組み込むことが可能である。
同期モジュール111は、シミュレータI/F107〜110から通知される情報(インターバル通知)に基づいて、シミュレーションシステム100上の1単位時間間隔で、各シミュレータの動作を同期させる制御を実行する。ここで、本実施形態において、シミュレーションシステム100に含まれる複数のシミュレータ102〜105は、シミュレータごとに固有の時間管理の下で、シミュレーション上の単位時間ごとに所定のシミュレーションを実行するように動作する。即ち、各シミュレータはそれぞれ固有の仮想時間で動作する。例えば、用紙搬送シミュレータにおいて、画像形成装置における200mm/秒の速度の用紙搬送状態をシミュレーションする場合、200mm分の用紙移動シミュレーションに対して仮想時間を1秒進める。この場合、用紙搬送シミュレータにおける仮想時間の進行は、200mm分の用紙移動シミュレーションに要するコンピュータシステムの処理時間には関係ない。すなわち、仮想時間の進行は、実世界におけるシミュレーション対象物の動作とその動作に要する時間の関係によって決まる。そして、同じ仮想時間分のシミュレーション実行に要する処理時間はシミュレータごとに異なる。このため、これら複数のシミュレータを1つのシミュレーションシステムとして連携して動作させるために、各シミュレータは単位時間ごとに外部と同期処理を行い、同期モジュール111は各シミュレータの仮想時間を共通の仮想時間に同期させる処理を実行する。なお、同期モジュール111による同期処理は、公知の手法により実現し得るため、その詳細な説明は省略する。
配線モジュール112は、予め設定された配線定義情報124に基づいて、シミュレータI/F107〜110と連携して複数のシミュレータ間における信号値の伝達処理を制御する。ここで、シミュレータ間で伝送される信号(仮想信号)は、外部記憶装置210に格納された設定データ209bに含まれる配線定義情報124として予め定義されている。以下では、図5に示す表を参照して、この配線定義情報124における定義書式及び定義内容の一例について説明する。
配線定義情報124には、図5に示すように、仮想信号名、データサイズ、信号種別、及び初期値に加えて、各シミュレータ内で当該信号を識別(特定)するために必要な信号識別情報、I/O、論理等が含まれる。図5において、「仮想信号名」は、信号名を示す文字列として定義される。ただし、当該文字列は、配線モジュール112内では信号ごとに固有の数値(信号ID)に変換されて取り扱われる。「データサイズ」は、各信号のデータサイズをビット数で表す。「信号種別」は、各信号の種別を表し、Bはビット情報、Dはデジタル多値情報、及びAはアナログ(浮動小数点)情報として定義される。また、「初期値」は、シミュレーション開始時における各信号の初期値を表す。ここで、図5において各数値表現に使用されている「0x」は16進数表記を示し、C言語の書式に準じている。なお、それ以外の数値表現は10進数表記を示す。本実施形態における各定義書式の設定は10進数及び16進数のみ使用することが可能であり、数値表現の文字列の先頭に「0」が付加されている場合も8進数ではなく10進数による定義を表す。
上記の各仮想信号を識別するための信号識別情報の定義は、図5に示すようにシミュレータごとに異なる。例えば、CPUシミュレータ102では「アドレス」及び「bit」、用紙搬送シミュレータ103では「種別」及び「個別ID(種別ごとのID)」、プロセスユニットシミュレータ104では「情報ID」、画像シミュレータ105では「機能ID」を用いて定義される。
CPUシミュレータ102における「アドレス」には、CPUシミュレータ102における仮想アドレス(即ち、ターゲットCPUにおけるアドレスマップ上のアドレス)が定義される。また、「bit」は、信号種別がB(ビット情報)である場合にのみ有効な定義であり、アドレス内のビット位置が定義される。用紙搬送シミュレータ103における「種別」及び「個別ID」には、用紙搬送シミュレータ103内の各構成要素のモデルに関する定義情報として予め設定された情報が用いられる。図5では、「種別」には各モデルの種別を示す文字列が、「個別ID」には当該モデルごとに設定された固有の数値が定義される。
プロセスユニットシミュレータ104における「情報ID」には、プロセスユニットシミュレータ104の定義情報として別途設定されている、プロセスユニットシミュレータ104の入出力情報(信号)ごとに固有の数値がIDとして定義される。また、画像シミュレータ105における「機能ID」には、画像シミュレータ105の定義情報として別途設定された、画像シミュレータ105の機能ごとに固有の数値がIDとして定義される。
各シミュレータの「I/O」には、各シミュレータにおける各信号の入出力について、入力はI、出力はOとして定義される。また、「論理」には、各シミュレータにおける各信号の論理が定義され、正論理は1、負論理は0の数値で定義される。例えば、「レジ紙有りセンサ」が1で紙有りを示す場合は正論理、0で紙有りを示す場合は負論理となる。なお、「論理」は、「信号種別」がB(ビット情報)である場合にのみ有効な定義である。シミュレータごとの論理に対応した仮想信号の論理変換は、シミュレータI/F107〜110の各々によって行われる。なお、上記の配線定義情報124は、各定義の文字列情報を区切り文字(スペース、タブ、改行等)で区切ったテキスト形式のファイルとして外部記憶装置210内に予め保存され得る。
なお、「2次転写高圧レベル確定」信号について、CPUシミュレータ102及びプロセスユニットシミュレータ104の「I/O」には、当該信号が双方向信号であることを示す「B」が設定されている。図5に定義された各信号の信号線は、基本的に信号をシミュレータ間で一方向に伝達可能であるが、双方向信号である信号線については、シミュレータ間で信号を双方向に伝達することができる。
このように、配線定義情報124に含まれる各シミュレータ内で使用される信号の定義情報は、シミュレータの仕様の相違に起因して、同一の信号であってもシミュレータごとに異なる。各シミュレータに対応する定義情報には、接続されるシミュレータにおいて固有の定義情報が含まれており、これらの情報の定義書式はシミュレータごとに設定される。シミュレーションシステム100におけるシミュレーションに際し、配線モジュール112は、配線定義情報124を読み込んで、当該情報から信号管理情報118を生成するとともに、各シミュレータI/Fに対して、仮想信号名‐信号ID対応情報を伝達する。各シミュレータI/Fは、受け取った当該対応情報と、配線定義情報124とから、後述する信号情報113〜116を生成する。このような処理により、シミュレーションシステム100は、新たなシミュレータを容易に組み込むことが可能である。なお、配線モジュール112が保持する信号管理情報118、各シミュレータI/Fが保持する信号情報113〜116、及び、シミュレータ間における仮想信号値の伝達処理の詳細については後述する。
(CPUシミュレータ102)
CPUシミュレータ102は、ターゲットCPUの動作を情報処理装置200上で模擬するシミュレータである。具体的には、CPUシミュレータ102は、外部記憶装置210に格納された対象装置(画像形成装置300)のファームウェア209cをRAM203にロードする。また、CPUシミュレータ102は、ファームウェア209cに従ってRAM203上に擬似的に定義された、ターゲットCPUのレジスタ、メモリ、入出力信号の読み出しや書き込み、各種演算等を実行する。さらに、CPUシミュレータ102は、これらの命令の実行とともに、ターゲットCPUにおいて進行する実行サイクル数を計算する。
ここで、CPUシミュレータ102は、ファームウェア命令のシミュレーションを、コンピュータシステム上でのシミュレーション実行時間(実時間)と異なる仮想時間の下で実行する。CPUシミュレータ102における仮想時間は、ファームウェア命令をシミュレーションするごとに算出されるターゲットCPUの実行サイクル数とターゲットCPUの動作周波数によって求められる。
CPUシミュレータ102は、シミュレーションの実行に伴って発生するイベントの内容を、外部I/F119を介して外部へ通知するとともに、各種の指示を、当該I/Fを介して外部から受け付ける。以下では、図6を参照して、CPUシミュレータ102が外部I/F119を介してシミュレータ接続部101との間で送受信する情報の一例について説明する。図6(a)は、CPUシミュレータ102から外部I/F119を介してシミュレータ接続部101へ通知されるイベントの内容の一例を示す。CPUシミュレータ102は、602に示す発生条件が満たされると、601に示すイベントが発生したことを、603を通知内容として外部へ通知する。
例えば、「シミュレーション開始」及び「シミュレーション終了」は、ユーザによる操作、又は外部からの指示により、CPUシミュレータ102がシミュレーションの実行を開始及び終了した際に発生するイベントである。これらのイベントの発生に伴って、CPUシミュレータ102は、外部に対してシミュレーションの開始又は終了を通知内容603として通知する。
また、「リードアクセス」及び「ライトアクセス」は、ファームウェアのシミュレーションの実行により、所定の仮想アドレス(ターゲットCPU上のアドレス)領域からデータの読み出し及び当該領域へデータの書込みが行われる場合に発生するイベントである。(以下では、これらのイベントを「リードイベント」及び「ライトイベント」とも称する。)これらのイベントは、対象となる仮想アドレス領域に対するリード命令の実行直前、又はライト命令の実行直後に発生する。これらの発生に伴って、CPUシミュレータ102は、外部I/F119を介して外部に対してイベントの発生、読出し又は書込み対象のアドレス及びサイズ、及び読み出される値又は書き込まれる値が通知される。なお、リードイベント又はライトイベントの対象となる仮想アドレス領域としては、メモリ、アドレス空間上にマッピングされたレジスタ(CPU周辺回路の制御レジスタ等)が一例として挙げられる。なお、配線定義情報124に含まれるCPUシミュレータ102用の信号識別情報は、このような仮想アドレス領域のマッピングに従って定義される。
「割込み」は、外部からの指示に応じて割込みのシミュレーション実行を開始した際に発生するイベントである。当該イベントは、ファームウェアの割込みハンドラの処理開始直前にイベントが発生する。当該イベントの発生に伴って外部I/F119を介して外部に対して、割り込みイベントの発生と当該割込みの番号とが通知される。ここで、割込み番号は、ターゲットCPUの有する各種の割込みの各々に対して予め定義された番号である。
「所定サイクル数実行(タイマイベント)」は、ファームウェアの実行命令シミュレーションに伴ってカウントされるターゲットCPU上の総実行サイクル数が、外部から指定されたサイクル数に到達した場合に発生するイベントである。1つの命令の実行中にサイクル数が指定値に到達した場合には、実行中の命令のシミュレーション終了後に当該イベントが発生する。当該イベントの発生に伴って外部I/F119を介して外部に対して、タイマイベントの発生とタイマイベント番号とが通知される。ここで、タイマイベント番号とは、タイマイベントの発生条件を指定する際にイベントごとに指定される番号である。
本実施形態に係るCPUシミュレータ102は、上記の各イベントの発生を外部に通知すると、ファームウェアのシミュレーションの実行を一時的に停止する。さらに、CPUシミュレータ102は、外部からの実行再開指示を待って、当該シミュレーションの実行を再開する。
次に、図6(b)は、CPUシミュレータ102が外部I/F119を介して外部から受け付ける指示の一例を示す。ここで、CPUシミュレータ102は、612を指示内容として指定情報613を含む指示611を、外部I/F119を介して外部から受け付ける。「シミュレーション開始」、「シミュレーション終了」、「シミュレーション一時停止」及び「シミュレーション再開」の各指示を外部I/F119を介して受け付けると、CPUシミュレータ102は、当該指示に応じた動作を実行する。「リードイベント領域指定」及び「ライトイベント領域指定」指示は、リードイベント及びライトイベントの対象となる仮想アドレス領域を指定する指示であり、当該指示により、対象となる仮想アドレス及びデータサイズが指定される。
「所定領域読出し」指示は、仮想アドレス領域の値の読出しを要求する指示であり、当該指示により、対象となる仮想アドレス、読出しサイズ、読み出したデータを格納する領域が指定される。CPUシミュレータ102は、当該指示を受け付けると、指定された仮想アドレスから指定されたサイズのデータを読み出して、指定された格納領域に書き込む。また、「所定領域書込み」指示は、仮想アドレス領域に値の書込みを要求する指示であり、当該指示により、対象となる仮想アドレス、書込みサイズ、書込み値が指定される。CPUシミュレータ102は、当該指示を受け付けると、指定された値を、指定された仮想アドレスに指定されたサイズで書き込む。
「レジスタ読出し」指示は、指定された仮想レジスタの値の読出しを要求する指示であり、当該指示により、対象となるレジスタIDが指定される。ここで、レジスタIDは、ターゲットCPUが有するレジスタの各々に対してCPUシミュレータ102が割り当てる固有の識別情報である。CPUシミュレータ102は、当該指示を受け付けると、レジスタIDによって指定された仮想レジスタの値を外部に通知する。
「レジスタ書込み」指示は、指定された仮想レジスタへの値の書込みを要求する指示であり、当該指示により、対象となるレジスタIDと書込み値が指定される。CPUシミュレータ102は、当該指示を受け付けると、レジスタIDによって指定された仮想レジスタの値を指定された値に変更する。
なお、本実施形態に係るCPUシミュレータ102に対する「レジスタ読出し」及び「レジスタ書込み」指示によって指定されるレジスタは、ターゲットCPUの内部に含まれるレジスタ(アドレスマップ上に定義されないレジスタ)である。このため、CPUシミュレータ102からアドレスマップ上に定義される周辺回路の制御レジスタ等へのアクセスは、「所定領域読出し」及び「所定領域書込み」指示に応じて行われる。
(用紙搬送シミュレータ103)
次に、用紙搬送シミュレータ103は、モータ、アクチュエータ、センサ等を含む画像形成装置300の用紙搬送機構の動作と、電子写真方式で形成される画像(トナー像)の搬送を情報処理装置200上で模擬するシミュレータである。具体的には、用紙搬送シミュレータ103は、シミュレーション結果を表示装置207a上に2次元又は3次元のグラフィックとして表示できるとともに、シミュレーション結果のセンサ情報を外部I/F120を介して外部に出力できる。また、用紙搬送シミュレータ103は、外部I/F120を介して外部から入力さえる各種の指示に応じてシミュレーションを実行することを前提としているため、外部のCPUシミュレータ102や画像シミュレータ105と連携してシミュレーションを実行する。
以下では、用紙搬送シミュレータ103による具体的な処理について説明する。用紙搬送シミュレータ103は、予め設定された時間を1単位時間として、仮想時間上の当該単位時間ごとにモータ及びアクチュエータに関する仮想信号値を、外部I/F120を介して取得し、これらの動作に関する指定を行う。また、用紙搬送シミュレータ103は、プロセスユニットシミュレータ104によるシミュレーションに基づく画像形成部の画像形成状態を、外部I/F120を介して取得する。さらに、用紙搬送シミュレータ103は、モータ及びアクチュエータに関する指定した動作と、予め設定されたモータ、アクチュエータ、機構部品、用紙、及びセンサの相互作用に関する定義情報とに基づいて、単位時間経過後のそれらの状態を解析する。
さらに、用紙搬送シミュレータ103は、上記の解析処理が終了するごとに、仮想時間を1単位時間進めた上で、当該解析結果を用いて表示装置207a上のグラフィック表示を更新するとともに、外部I/F120を介してセンサ状態を外部へ通知する。これらの解析処理に関する情報、グラフィック表示用の画像形成装置300の情報、及び各種初期設定情報については、設定データ209bとして情報処理装置200の外部記憶装置210に格納されている。なお、用紙搬送シミュレータ103において、解析の単位時間は、外部のシミュレータとの間で仮想時間の同期をとるための時間単位としても用いられる。即ち、用紙搬送シミュレータ103は、1単位時間のシミュレーションを実行するごとに、外部のシミュレータとの同期処理を行う。
以下では、図7を参照して、用紙搬送シミュレータ103が外部I/F120を介してシミュレータ接続部101との間で送受信する情報の一例について説明する。図7(a)は、用紙搬送シミュレータ103から外部I/F120を介してシミュレータ接続部101へ通知されるイベントの内容の一例を示す。用紙搬送シミュレータ103は、702に示す発生条件が満たされると、701に示すイベントが発生したことを、703を通知内容として外部へ通知する。
「シミュレーション開始」及び「シミュレーション終了」は、ユーザによる操作、又は外部からの指示により、用紙搬送シミュレータ103がシミュレーションの実行を開始及び終了した際に発生するイベントである。これらのイベントの発生に伴って、用紙搬送シミュレータ103は、外部に対してシミュレーションの開始又は終了を通知内容703として通知する。
「同期待ち」は、1単位時間の解析処理を終了して同期待ち状態になった際に発生するイベントである。当該イベントの発生に伴って、用紙搬送シミュレータ103は、外部I/F120を介して外部に対して、同期待ち状態の発生と、当該時点におけるの用紙搬送シミュレータ103内の仮想時刻が通知される。「センサ状態変化」は、1単位時間の解析処理の結果、センサとして定義されたモデルの状態が変化した場合に発生するイベントである。当該イベントの発生に伴って、用紙搬送シミュレータ103は、外部I/F120を介して外部に対して、センサ状態の変化が発生したことと、当該変化後のセンサのID及びセンサ状態情報とを通知する。
次に、図7(b)は、用紙搬送シミュレータ103が外部I/F120を介して外部から受け付ける指示の一例を示す。用紙搬送シミュレータ103は、712を指示内容として指定情報713を含む指示711を、外部I/F120を介して外部から受け付ける。用紙搬送シミュレータ103は、「シミュレーション開始」、「シミュレーション終了」の各指示を外部I/F120を介して受け付けると、当該指示に応じた動作を実行する。また、「単位時間処理実行」は、同期待ち状態を解除して単位時間処理を実行する指示であり、用紙搬送シミュレータ103は、外部I/F120を介して当該指示を受信すると、指示に応じた動作を実行する。なお、本実施形態に係る用紙搬送シミュレータ103において、実行中のシミュレーションが同期待ち状態となるのは、1単位時間処理の実行が終了した場合である。
「モータ動作」指示は、モータ動作を指定する指示であり、当該指示により、モータIDと次の1単位時間におけるモータの動作(駆動/停止)とが指定される。ここで、モータIDは、用紙搬送シミュレータ103に定義されたモータモデルの各々に対して予め固有に割り当てられる識別情報である。モータモデルとモータIDとの関連付けに関する情報や、各モータの駆動時の速度情報は、ユーザがシミュレーションシステム100に対して画像形成装置300の構成を定義する際に設定される。また、設定された情報は、設定データ209bとして情報処理装置200の外部記憶装置210に格納されている。
「ソレノイド動作」指示は、ソレノイド動作を指定する指示である、当該指示により、ソレノイドIDと次の1単位時間におけるソレノイドの動作(駆動/停止)とが指定される。ここで、ソレノイドIDは、用紙搬送シミュレータ103に定義されたソレノイドモデルの各々に対して予め固有に割り当てられる識別情報である。ソレノイドモデルとソレノイドIDとの関連付けに関する情報は、設定データ209bとして情報処理装置200の外部記憶装置210に格納されている。
「クラッチ動作」指示は、クラッチ動作を指定する指示であり、当該指示により、クラッチIDと次の1単位時間におけるクラッチの動作(駆動/停止)が指定される。ここで、クラッチIDは、用紙搬送シミュレータ103に定義されたクラッチモデルの各々に対して予め固有に割り当てられる識別情報である。クラッチモデルとクラッチIDとの関連付けに関する情報は、設定データ209bとして情報処理装置200の外部記憶装置210に格納されている。
用紙搬送シミュレータ103は、同期待ち状態において上記の「モータ動作」指示を受け付けた場合には、指定されたモータIDのモータモデルが、次の1単位時間において指定された動作状態であると判断し、当該次の1単位時間における各構成要素の動作を解析する。また、用紙搬送シミュレータ103は、同期待ち状態以外の状態において「モータ動作」指示を受け付けた場合には、当該指示を無視する。なお、用紙搬送シミュレータ103は、「ソレノイド動作」及び「クラッチ動作」指示を受け付けた場合についても、これと同様に動作する。
また、「画像形成状態」指示は、予め指定された画像形成位置における画像形成の状態を指定する指示である。ここで、画像形成位置とは、画像シミュレータ105によるシミュレーション結果のグラフィック表示において画像が形成される位置として任意に設定され得る位置である。この画像形成位置は、用紙搬送シミュレータ103が、形成された画像と用紙との位置関係をグラフィック表示から求めるための基準となる。当該指定は、後述する画像シミュレータ105によるシミュレーション結果に基づいて行われる。用紙搬送シミュレータ103は、同期待ち状態で「画像形成状態」指示を受け付けると、次の1単位時間では、予め指定された画像形成位置における画像形成状態が当該指示によって指定された状態であると判断する。これにより、用紙搬送シミュレータ103は、当該1単位時間の経過後のグラフィック表示において画像を描画する範囲を設定する。一方で、用紙搬送シミュレータ103は、同期待ち状態以外の状態で画像形成状態の指示を受けると、当該指示を無視する。
次に、図8に、本実施形態に係る用紙搬送シミュレータ103によるシミュレーション結果の2次元グラフィック表示の一例を示す。図8には、排紙トレイ1001、用紙搬送ローラ1002、モータ1003、用紙搬送路1004、感光ドラム1005、ITB1006及びITB駆動ローラで構成されるITBユニット、センサ1007、クラッチ1008、ソレノイド1009、給紙トレイ1010、画像(トナー画像範囲)1011、及び、用紙1012が、視覚的に確認できるようにグラフィック表示された様子を示している。ここで、ローラ1002、モータ1003、感光ドラム1005に相当する円内に示される直線は、ユーザが回転状態を確認できるようにするための表示であり、それらの回転動作に伴って当該直線の描画角度が変化する。
また、図8に示す例において、予め指定される画像形成位置は、感光ドラム1005とITB1006との接点の位置(位置1020)として定義される。用紙搬送シミュレータ103によるシミュレーションにおいて、外部I/F120を介した指示により、画像形成状態が非画像形成中から画像形成中に変化したタイミングで、当該画像形成位置において画像1011の先端が発生する。また、外部I/F120を介した指示により、画像形成状態が画像形成中から非画像形成中に変化したタイミングで、当該画像形成位置において画像1011の後端が発生する。さらに、画像1011は、ITB1006の動作に応じてITB1006上を2次転写位置1021まで移動する。
一方、用紙1012は、用紙搬送ローラ1002の動作に応じて給紙トレイ1010から排紙トレイまでを用紙搬送路1004に添って2次転写位置1021まで移動する。2次転写位置において、画像1011と用紙1012とに重なりが発生すると、画像1011が用紙1012へ転写されたことを示すために、画像1011と用紙1012の表示が重なる。その状態で、用紙1012は、画像1011とともに、用紙搬送ローラ1002の動作に応じて用紙搬送路1004に添って排紙トレイ1001まで移動する。なお、センサ1007、クラッチ1008、ソレノイド1009は、動作状態と停止状態とを確認できるように、状態に応じて表示色が変化してもよい。
(プロセスユニットシミュレータ104)
次に、プロセスユニットシミュレータ104は、定着装置317及びプロセスユニット405の動作を情報処理装置200上で模擬するシミュレータである。具体的には、プロセスユニットシミュレータ104は、画像形成装置300のターゲットCPUから定着装置317及びプロセスユニット405への制御信号に応じて、ターゲットCPUへ戻されるフィードバック信号を模擬するとともに、画像シミュレータ105に対して電子写真プロセスの動作状態を通知する。
定着装置及びプロセスユニットの構成は、画像形成装置の機種ごとに異なる。プロセスユニットシミュレータ104には、外部とのシミュレーション情報のやり取り及び同期処理のために外部I/Fのみが標準で用意される。プロセスユニットシミュレータ104は、所定の文法でシミュレーション動作を記述した命令文(以下では、「プロセスマクロ」と称する。)に従って、具体的なシミュレーション処理を実行する。
このプロセスマクロは、テキスト形式のファイルとして対象機種ごとにユーザによって作成され、設定データ209bとして情報処理装置200の外部記憶装置210に格納される。プロセスユニットシミュレータ104は、シミュレーションの実行を開始すると、プロセスマクロを含むプロセスマクロファイルを外部記憶装置210からRAM203へ読み込んで、当該ファイルに記述された命令を解釈する。さらに、プロセスユニットシミュレータ104は、解釈した命令に従って、各種のプロセスユニットの動作をシミュレーションする。
具体的には、プロセスユニットシミュレータ104は、プロセスマクロに含まれる命令に従って、外部I/F121を介して外部から受けとったデータを読み込むとともに、所定の処理を実行して外部I/F121を介して外部にデータを出力する。例えば、定着装置317の温度状態を模擬する場合、プロセスマクロには、プロセスユニットシミュレータ104が以下の処理を実行するための記述が含まれる。
プロセスユニットシミュレータ104は、メインヒータ408及びサブヒータ409の駆動状態を示す情報と、定着排紙モータ403の駆動状態を示す情報と、定着ローラ部における用紙の有無を示す情報とを、仮想時間上の1単位時間ごとに外部I/F121を介して受信する。次に、プロセスユニットシミュレータ104は、単位時間ごとの処理の実行を開始すると、所定の演算式に基づき、メインヒータ及びサブヒータ駆動状態の変化の履歴情報から1単位時間後の温度センサ411、412の基本温度値を求める。さらに、プロセスユニットシミュレータ104は、定着排紙モータの駆動状態、定着ローラ部の用紙の有無に応じて各温度センサの温度値を補正する。その後、外部I/F121を介して温度センサ411、412の温度値に関する情報を外部に出力する。なお、他の各種のプロセスユニットについても同様に、ユーザによって記述されたプロセスマクロの内容に応じたシミュレーション処理が実行される。プロセスユニットシミュレータ104は、プロセスマクロに記述された全てのプロセスユニットに関する1単位時間分のシミュレーション処理の終了後、仮想時間を1単位時間進めた上で、外部のシミュレータとの同期処理を行う。
上述のように、プロセスユニットシミュレータ104における入出力情報は、プロセスマクロごとに変化する。このため、ユーザによって作成されるプロセスマクロに合わせて、プロセスユニットシミュレータ104によって扱われる入出力情報に関する定義情報が作成される。この定義情報は、情報ID、データサイズ、信号種別(ビット/デジタル/アナログ)から成り、プロセスマクロファイルと関連付けられた入出力定義ファイルに定義され、設定データ209bの1つとして外部記憶装置210に格納される。なお、プロセスユニットシミュレータ104は、予め用意された入出力モジュールに対して情報IDを指定することによって、プロセスマクロを使用した情報の入出力を行う。また、配線定義情報124に含まれるプロセスユニットシミュレータの信号識別情報は、上述のように、この情報IDに従って定義される。
以下では、図9を参照して、プロセスユニットシミュレータ104が外部I/F121を介してシミュレータ接続部101との間で送受信する情報の一例について説明する。図9(a)は、プロセスユニットシミュレータ104から外部I/F121を介してシミュレータ接続部101へ通知されるイベントの内容の一例を示す。プロセスユニットシミュレータ104は、902に示す発生条件が満たされると、901に示すイベントが発生したことを、903を通知内容として外部へ通知する。
ここで、図9(a)における「シミュレーション開始」、「シミュレーション終了」及び「同期待ち」については、図7(a)の用紙搬送シミュレータ103における場合と同様である。また、「出力状態変化」は、入出力情報の定義において、プロセスユニットシミュレータ104の出力情報として定義された情報に変化が生じた場合に発生するイベントである。当該イベントの発生に伴って、プロセスユニットシミュレータ104は、外部I/F121を介して外部に対して、当該出力情報に変化が生じたこと、当該変化が生じた情報情報ID、及び変化後の値を通知する。
次に、図9(b)は、プロセスユニットシミュレータ104の外部I/F121を介して外部から受け付ける指示の一例を示す。プロセスユニットシミュレータ104は、912を指示内容として指定情報913を含む指示911を、外部I/F121を介して外部から受け付ける。同図において、「シミュレーション開始」、「シミュレーション終了」、及び「単位時間処理実行」指示については、図7(b)の用紙搬送シミュレータ103における場合と同様である。
「入力情報」指示は、プロセスユニットシミュレータ104に対する入力情報の値を指定する指示であり、当該指示により、情報IDと入力情報の設定値とが指定される。プロセスユニットシミュレータ104は、シミュレーションの実行停止状態においては当該指示を受けても無視する。一方で、プロセスユニットシミュレータ104は、同期待ち状態、及び1単位時間のシミュレーション処理の実行中に当該指示を受けると、当該指示を受け付ける。なお、当該指示により指定された入力情報がシミュレーションに反映されるタイミングは、プロセスマクロに記述された処理に依存する。
(画像シミュレータ105)
次に、画像シミュレータ105は、プロセスユニット405の画像形成状態を解析するシミュレータである。ここで、シミュレーション対象の画像形成装置300においては、露光、現像、1次転写、2次転写といった画像形成プロセスが、画像形成装置300上の異なる位置で異なるタイミングで実行されることにより、画像が段階的に形成される。画像形成装置300では、形成途中の画像が装置内を移動しつつ、画像形成プロセスが進行し、最終的に形成されたトナー画像は、ITB301と2次転写ローラ316の接点において用紙上に転写される。本実施形態に係る画像シミュレータ105は、上記のように、段階的に形成される画像の画像形成装置300内における位置とその形成状態(形成の段階)とを解析する。
画像シミュレータ105による解析は、外部I/F122を介して外部システムから入力される信号情報に応じてシミュレーションが実行されることを前提として行われる。外部から入力される情報には、プロセスユニット405に対する光学ユニット、高圧ユニットの制御情報、及びメカ機構の制御情報が含まれる。さらに、画像シミュレータ105による解析は、予め定義されたプロセスの種類ごとの画像形成可能条件、メカ構成位置、速度確定条件といった電子写真プロセスの定義に基づいて行われる。なお、画像シミュレータ105は、外部からの電子写真プロセス制御信号の取得及び画像形成状態の解析を、予め設定された単位時間ごとに実行する。そして、画像シミュレータ105は、1単位時間分の画像形成状態の解析終了後、仮想時間を1単位時間進めた上で、外部のシミュレータとの同期処理を行う。
この電子写真プロセスの定義情報は、設定データ209bとして情報処理装置200の外部記憶装置210に格納されている。画像シミュレータ105は、各種の電子写真プロセス制御信号の値の変化のタイミング及びその変化値に基づいて、上記の解析を実行する。さらに、画像シミュレータ105は、解析対象の位置として外部I/F122を介して外部から指定された位置において、画像形成状態が変化した際に、当該画像形成状態に関する情報を解析の結果として外部へ出力する。
ここで、発明の理解を容易にするために、画像シミュレータ105において扱われる画像や装置構成に関連する「位置」の概念に関して説明する。シミュレーション対象の画像形成装置300では、上記のように画像形成プロセスが段階的に実行される。画像形成装置300内において画像形成プロセスが実行される具体的な位置は、図3によれば、感光ドラム303a〜d上の、露光装置305a〜dからのレーザ光照射位置、1次帯電器304a〜d及び現像器306a〜dと感光ドラム303a〜dとの当接部、1次転写ローラ302a〜d及び2次転写ローラ316とITB301との当接部である。これに対して、画像シミュレータ105において扱われる「位置」とは、この画像形成プロセスにおいて形成される画像が、当該プロセスの実行に伴って移動する経路上の位置を意味し、所定の基準位置からの相対距離とステーション情報とで表すことができる。
基準位置は、形成される画像が移動する経路上で予め定義された位置であり、基準位置情報とともに設定データ209bとして情報処理装置200の外部記憶装置210に格納されている。また、ステーション情報は、当該経路上において、イエロー、マゼンタ、シアン、ブラックの各色のトナー画像が1次転写されるまでの経路が相互に異なるために、当該異なる範囲で位置を特定するための情報である。なお、ステーション情報として、以下では、イエロー、マゼンタ、シアン、ブラックの各ステーション情報をY、M、C、Bk、1次転写以下の共通パスのステーション情報をPとして表現している。
次に、上述の「位置」に関して、図3を一例として具体的に説明する。図3では、イエローの露光位置を基準位置321として定義している。これにより、イエローの露光位置(図3の321)は、その距離及びステーション情報に関して[距離:0mm,ステーション:Y]と表される。ここで、基準位置321からイエローの感光ドラム面に沿ってイエローの1次転写位置323を経て、ITBに沿ってブラックの1次転写位置323に至る距離を200mmとする。その場合、ブラックの1次転写位置(図3の322)は[距離:200mm,ステーション:P]と表される。
また、イエローの1次帯電位置(図3の324)は、イエローの1次帯電位置324と基準位置321との距離が20mmとすると、[距離:−20mm,ステーション:Y]と表される。なお、距離がマイナスの数値で表現されているのは、位置324が基準位置321よりも画像形成方向に沿って上流に位置するためである。さらに、マゼンタの現像位置(図3の325)は、基準位置321からマゼンタの1次転写位置326までの距離を100mm、1次転写位置326からマゼンタの現像位置325までの距離を30mmとすると[距離:70mm,ステーション:M]と表される。
以下では、再び図9を参照して、画像シミュレータ105が外部I/F122を介してシミュレータ接続部101との間で送受信する情報の一例について説明する。図9(c)は、画像シミュレータ105から外部I/F122を介してシミュレータ接続部101へ通知されるイベントの内容の一例を示す。画像シミュレータ105は、922に示す発生条件が満たされると、921に示すイベントが発生したことを、923を通知内容として外部へ通知する。
ここで、図9(c)における「シミュレーション開始」、「シミュレーション終了」及び「同期待ち」については、図7(a)の用紙搬送シミュレータ103、及び図9(a)のプロセスユニットシミュレータ104における場合と同様である。「画像形成状態変化」は、1単位時間の解析処理の結果、図9(d)の「画像状態情報報知位置」指示によって指定された位置において画像形成状態に変化があった場合に発生するイベントである。当該イベントの発生に伴って、画像シミュレータ105は、外部I/F122を介して外部に対して、画像形成状態に変化が発生したこと、対象位置、及び、当該対象位置の画像状態情報が通知される。ここで、画像状態情報は、画像シミュレータ105が解析する画像形成状態ごとに定義されたコードを用いて表され、画像形成状態とコードとの関係については設定データ209bとして情報処理装置200の外部記憶装置210に格納されている。
次に、図9(d)は、画像シミュレータ105の外部I/F122を介して外部から受け付ける指示の一例を示す。画像シミュレータ105は、932を指示内容として指定情報933を含む指示931を、外部I/F122を介して外部から受け付ける。同図において、「シミュレーション開始」、「シミュレーション終了」、及び「単位時間処理実行」指示については、図7(b)の用紙搬送シミュレータ103、及び図9(b)のプロセスユニットシミュレータ104における場合と同様である。「電子写真プロセス制御状態」指示は、電子写真プロセスの制御状態を指定する指示であり、当該指示により機能ID及び制御値が指定される。ここで、指定される制御状態としては、プロセスユニット405の光学ユニット413、高圧ユニット414、メカ機構415の有する各機能の制御状態(高圧出力レベル、ドラム動作状態等)が一例として挙げられる。また、機能IDは、画像シミュレータ105において、プロセスユニット405の有する各機能に対して、予め固有に定義されるの識別情報である。各機能と機能IDとの関連付け情報は、設定データ209bとして情報処理装置200の外部記憶装置210に格納されている。なお、配線定義情報124に含まれる画像シミュレータの信号識別情報は、当該機能IDに従って定義される。
画像シミュレータ105は、同期待ち状態で「電子写真プロセス制御情報」指示を受け付けると、それまでのシミュレーションの履歴と指定された制御値とに基づいて、1単位時間後の画像形成装置300上の画像形成位置と画像の形成状態とを解析する。また、画像シミュレータ105は、同期待ち状態以外の状態で電子写真プロセス制御情報の指示を受け付けると、当該指示を無視する。
「画像状態情報報知位置」指示は、画像シミュレータ105による解析結果である画像状態情報を外部へ報知する位置を、画像シミュレータ105に対して指定する指示であり、当該指示により、画像形成装置300の画像形成プロセス上の位置が指定される。当該位置は、基準位置からの相対距離とステーション情報とを用いて指定する。画像シミュレータ105は、同期待ち状態で当該指示を受け付けると、指定された位置を画像形成状態の報知対象の位置とする。画像シミュレータ105では、それ以降のシミュレーションの実行結果において、指定位置の画像状態が変化した場合に、当該指示に従って「画像形成状態変化」イベントが発生する。一方で、画像シミュレータ105は、同期待ち状態以外の状態で画像状態情報報知位置要求の指示を受けると、指示を無視する。
<複数のシミュレータ間の信号伝達処理>
上述のように、シミュレーションシステム100において、シミュレータ接続部101に対して接続される各シミュレータは、異なる機能を有し、かつ、異なる外部インタフェース仕様を有する。シミュレーションシステム100において、このような複数のシミュレータ間で信号を伝達するためには、各シミュレータにおける外部インタフェースの仕様をシミュレータ接続部101における外部インタフェースの仕様と合わせる必要がある。このため、各シミュレータの外部インタフェースの仕様の自由度を保持し、当該仕様に変更を加えることなく信号の伝達を実現するには、各シミュレータが接続されるシミュレータ接続部101において信号を伝達するために何らかの処理が必要となる。
より具体的には、各シミュレータは、その内部で扱う信号に対して当該シミュレータにおいて固有の識別情報を割り当てて管理するのが一般的である。このため、シミュレータ間で信号を適切に伝達するためには、シミュレータ接続部101は、あるシミュレータで識別情報を固有に割り当てられた信号について、別のシミュレータで固有に割り当てられた識別情報を特定し、伝達対象のシミュレータへ信号値を伝達することが必要である。
また、シミュレータ接続部101は、何れかのシミュレータにおいて信号の信号値が変化した場合、変化後の信号値を、当該信号を使用する他のシミュレータに対して伝達する。その際、信号の変化が生じるたびに信号の伝達処理を実行すると、受信側のシミュレータの状況によっては当該信号を必要としないタイミングに当該信号が伝達されてしまい、受信側のシミュレータにおける負荷を不必要に増大させてしまうおそれがある。それにより、シミュレーションシステム100全体のシミュレーション速度の低下を招くおそれがある。一方で、シミュレータ接続部101から各シミュレータに対して信号値の変化を能動的に通知するのではなく、各シミュレータが、各シミュレータ接続部101に保持された信号値の変化を監視して、当該信号値を取得する場合も想定され得る。しかしながら、その場合には、各シミュレータにおける処理負荷が増大し、上記と同様、シミュレーション速度の低下を招くおそれがある。
そこで、本実施形態では、シミュレータ接続部101は、各シミュレータで各信号に固有に割り当てられる信号識別情報と、シミュレータ接続部101で各信号を扱うために固有に割り当てる信号識別情報とを対応付ける信号情報113〜116を、各シミュレータI/F107〜110に保持する。さらに、シミュレータ接続部101は、シミュレータ間の各信号線の配線情報に基づいて、各信号の伝達対象のシミュレータを特定するために使用する信号管理情報118を保持する。シミュレータ接続部101は、これらの情報を使用して、シミュレータ間で信号を適切に伝達することを可能にする。以下では、これらの信号管理情報118、及び信号情報113〜116と、それらを用いた信号伝達処理についてより詳細に説明する。
(信号管理情報118)
図10を参照して、配線モジュール112内で保持される信号管理情報118の一例について説明する。この信号管理情報118は、シミュレータ起動後の初期化処理において配線定義情報124に基づいて信号管理部117によって生成される。信号管理情報118には、図10に示すように、信号ID及びデータサイズとともに、各シミュレータの入力信号の対応情報が定義される。なお、図10では説明の便宜のために、各信号IDに対応して仮想信号名を表記しているが、実際に生成される信号管理情報118には、仮想信号名は含まれず、仮想信号名から変換された信号IDが含まれる。また、信号管理情報118には、信号種別情報は含まれない。これは、信号管理部117が、シミュレータI/F間の信号の伝達を行う際に、所定サイズのビットパターンデータをそのまま伝達し、信号の種別を識別しないためである。
信号管理部117は、各シミュレータを識別情報(シミュレータID)によって識別するとともに、当該識別情報を用いてシミュレータ間で信号を伝達する。シミュレータIDは、シミュレータ接続部101に接続された各シミュレータに固有に割り当てられる数値であり、信号管理情報118に含まれる。シミュレータIDには、例えば、配線定義情報124に含まれるシミュレータの定義順に異なる数値が設定される。本実施形態では、図5に示す配線定義情報124に基づいて、CPUシミュレータ102、用紙搬送シミュレータ103、プロセスユニットシミュレータ104、画像シミュレータ105に対して順に、0、1、2、3をシミュレータIDとして割り当てている。なお、シミュレータI/F107〜110も、それぞれ配線定義情報124に基づいてシミュレータIDを生成するとともに、当該シミュレータIDを用いて、信号管理部117との間の信号の伝達を実行する。
図10の信号管理情報118には、信号IDごとに、各シミュレータについて「0」又は「1」の値が定義されている。ここで、「1」が定義されている場合には、当該信号IDに対応する信号が当該シミュレータに対する入力信号として定義されている。一方で、「0」が定義されている場合には、当該信号IDに対応する信号が当該シミュレータに対して入力信号として定義されていないか、あるいは、当該シミュレータにおいて信号自体が定義されていない。なお、図10において、信号ID:42の「2次転写高圧レベル確定」信号は、CPUシミュレータ102(シミュレータ:0)とプロセスユニットシミュレータ104(シミュレータ:2)との間における双方向信号である。このため、それらのシミュレータに対応するデータには「1」が定義されており、何れのシミュレータに対しても入力信号として定義されている。信号管理情報118をこのように定義することにより、シミュレーションシステム100において双方向信号に関する信号の伝達を実現することができる。
(信号情報113〜116)
次に、図11を参照して、シミュレータI/F107〜110内でそれぞれ保持される信号情報113〜116について説明する。この信号情報113〜116は、シミュレータ起動後の初期化処理において各シミュレータI/F107〜110によってそれぞれ生成される。ここで、シミュレータI/F107〜110は、配線モジュール112から受信する仮想信号名−信号ID対応情報と配線定義情報124とから信号情報113〜116を生成する。なお、図11(a)〜(d)に示す何れの情報も、数値情報として信号情報113〜116に含まれる。
図11(a)〜(d)に示すように、各シミュレータに対応する信号情報113〜116には、各信号IDについて定義された「I/O」、「データサイズ」、「論理」、「初期値」、及び「信号値」が共通に含まれる。また、CPUシミュレータ102に対応する信号情報113を除く信号情報114〜116には、「信号種別」が共通に含まれる。本実施形態において「信号種別」には、ビット情報及びデジタル多値情報について0、アナログ情報について1が設定されている。このように「信号種別」が信号情報113にのみ含まれていないのは、CPUシミュレータ102のシミュレーション対象のターゲットCPUによって扱われるデータ(信号値)がデジタル値であるためである。また、信号情報113〜116に含まれる各定義は、配線定義情報124(図5)に含まれる同一名称の各定義に対応する。
なお、図11において、I/Oは、対応するシミュレータにおいて入力信号及び出力信号として定義されている信号について、それぞれ1及び0が設定されている。双方向信号として定義されている信号についてのI/Oには1が設定される。また、対応するシミュレータにおいて入力信号及び出力信号の何れにも使用されず、未定義の信号については、I/Oに「−1」が設定されている。さらに、図11において「*」と表示されている部分は何らの値も設定されていない不定値を表し、これらはシミュレーションにおいて参照されることはない。
「信号値」には、シミュレーションシステム100におけるシミュレーション開始時に、信号情報113〜116に含まれる「初期値」が「信号値」に設定される。この「信号値」は、シミュレーションの進行に伴って各シミュレータ内で変化する信号値が保存されることで更新される。また、信号情報113〜116には、「信号値」の各々に対応して、各信号を識別するために各シミュレータにおいて固有に割り当てられる信号識別情報と、シミュレータ接続部101において固有に割り当てられる信号識別情報(信号ID)とが含まれる。以下では、図11を参照して、各信号を識別するために各シミュレータにおいて固有に割り当てられる信号識別情報について説明する。
シミュレータI/F107内で保持される、CPUシミュレータ102に対応する信号情報113(図11(a))には、CPUシミュレータ102によって固有に割り当てられる信号識別情報として「アドレス」及び「bit」が含まれる。また、用紙搬送シミュレータI/F108内で保持される、用紙搬送シミュレータ103に対応する信号情報114(図11(b))には、用紙搬送シミュレータ103によって固有に割り当てられる信号識別情報として「モデル識別値」及び「個別ID」が含まれる。これらの「モデル識別値」及び「個別ID」は配線定義情報124(図5)に含まれる定義と基本的に同一であるが、「モデル識別値」は、センサ:1、モータ:2、ソレノイド:3、クラッチ:4、画像:5のように「種別」に応じて数値データ化されている。
プロセスユニットシミュレータI/F109内で保持される、プロセスユニットシミュレータ104に対応する信号情報115(図11(c))には、当該シミュレータによって固有に割り当てられる信号識別情報として「情報ID」が含まれる。また、画像シミュレータI/F110内で保持される、画像シミュレータ105に対応する信号情報116(図11(d))には、当該シミュレータによって固有に割り当てられる信号識別情報として「機能ID」が含まれる。
(シミュレータ間の信号伝達処理)
次に、シミュレータ間で信号伝達を行うための、信号管理部117と各シミュレータI/F107〜110との間のインタフェースについて説明する。信号管理部117は、各シミュレータI/Fから信号出力通知を受け付けるインタフェースを有する。各シミュレータI/F107〜110は、対応するシミュレータからの出力信号の変化を、信号出力通知機能によって信号管理部117へ通知する。当該信号出力通知機能によって通知される内容は、例えば、シミュレータID、信号ID、信号値、サイズである。
一方、各シミュレータI/F107〜110は、信号管理部117から信号値の通知を受け付けるインタフェースを有する。信号管理部117は、信号値の通知に応じて、対応するシミュレータへ当該信号値を通知する。当該通知によって通知される内容は、例えば、シミュレータID、信号ID、信号値、サイズである。各シミュレータI/F107〜110は、当該通知を受けると、信号情報113〜116に含まれる、対応する信号の信号値を指定された値に更新する。以下では、信号管理部117及び各シミュレータI/F107〜110による信号伝達処理について、より詳細に説明する。
(信号管理部117による信号伝達処理)
次に、図12を参照して、シミュレータ接続部101内の信号管理部117による信号伝達処理の手順について説明する。まず、S2001で、信号管理部117は、シミュレーションシステム100によるシミュレーションが開始され、各シミュレータの初期化処理が開始されると、信号管理情報118を生成する。上述のように、信号管理情報118は、外部記憶装置210に格納された配線定義情報124に基づいて生成される。その後、信号管理部117は、S2002で、仮想信号名と、生成した信号管理情報118に含まれる信号IDとの対応情報を、各シミュレータI/F107〜110へ通知する。その後、処理がS2003へ移行する。
S2003で、信号管理部117は、シミュレータI/F107〜110の何れかから、対応するシミュレータから信号が出力されたことを信号管理部117へ通知する信号出力通知を受信したか否かを判定する。ここで、信号管理部117は、当該通知を受信していないと判定する限り、当該判定処理を繰り返すことで、当該通知を受信するまで待機する。一方で、信号管理部117は、当該通知を受信したと判定すると、S2004の処理へ移行する。なお、本実施形態において、この信号出力通知には、図11に示す信号情報113〜116に含まれる情報のうち、信号ID、信号値、データサイズが含まれる。
S2004で、信号管理部117は、シミュレータI/F107〜110の何れかからの信号出力通知によって、当該通知に含まれる信号ID、信号値、及びデータサイズとを取得する。続いて、信号管理部117は、S2005で、受信した信号出力通知対応するシミュレータから出力された信号の、1つ以上の伝達対象のシミュレータを、信号管理情報118を用いて特定する。即ち、信号管理部117は、当該信号を入力信号として有するシミュレータを、信号管理情報118を参照して特定する。図10に示す信号管理情報118の場合、取得した信号IDに対応する値として「1」を有するシミュレータが、伝達対象のシミュレータに対応する。従って、信号管理部117は、信号管理情報118から伝達対象のシミュレータのシミュレータIDを特定する。次に、S2006で、信号管理部117は、特定したシミュレータIDに対応するシミュレータI/Fに対して、信号ID、信号値、及びデータサイズを通知する。なお、当該通知を受信したシミュレータI/Fは、以下で説明する図13のS2110以降の処理を実行する。
以上の処理により、信号管理部117は、シミュレータI/F間の信号伝達処理を終了してS2003へ処理を戻すとともに、再び何れかのシミュレータI/Fから信号出力通知を受信するまで待機する。また、信号管理部117は、S2003〜S2006の処理を、シミュレーションシステム100におけるシミュレーションが終了するまでの間、実行し続ける。
(各シミュレータI/F107〜110による信号伝達処理)
次に、図13を参照して、シミュレータ接続部101内の各シミュレータI/F107〜110による信号伝達処理について説明する。なお、ここではCPUシミュレータ102用のシミュレータI/F107について説明するが、他のシミュレータI/F108〜110についても同様である。
まず、S2101で、シミュレータI/F107は、シミュレーションシステム100によるシミュレーションが開始され、CPUシミュレータ102の初期化処理が開始されると、信号管理部117からS2002(図12)の処理で通知される対応情報を取得する。さらに、S2102で、シミュレータI/F107は、取得した対応情報を用いて信号情報113を生成する。その後、処理がS2103へ移行する。
S2103及びS2109で、シミュレータI/F107は、CPUシミュレータ102及び信号管理部117の何れかから信号を受信するまで待機する。具体的には、シミュレータI/F107は、まず、S2103で、CPUシミュレータ102から信号出力通知を受信したか否かを判定する。CPUシミュレータ102の場合、当該信号出力通知は、図6(a)に示す「ライトアクセス」イベント(ライトイベント)による通知に相当する。なお、シミュレータI/F108、109、110の場合、当該信号出力通知は、「センサ状態変化」イベント(図7(a))、「出力状態変化」イベント(図9(a))、及び「画像状態変化」イベント(図9(c))による通知にそれぞれ相当する。
S2103で、CPUシミュレータ102は、信号出力通知を受信したと判定した場合、処理をS2104へ移行する一方で、受信していないと判定した場合、処理をS2109へ移行する。S2109で、シミュレータI/F107は、信号管理部117から(図12のS2006の処理に基づいて)信号出力通知を受信したか否かを判定する。ここで、シミュレータI/F107は、信号出力通知を受信したと判定した場合、処理をS2110へ移行する一方で、受信していないと判定した場合、処理をS2103へ移行して、これらの判定処理を繰り返す。
S2103でCPUシミュレータ102から信号出力通知を受信した場合、シミュレータI/F107は以下の処理を実行する。まず、S2104で、シミュレータI/F107は、当該通知に含まれる信号値と当該信号値に付加された信号識別情報(第1信号識別情報)とを取得する。ここで、当該信号識別情報は、CPUシミュレータ102において各信号を識別するために、各信号に対して固有に割り当てられる識別情報であり、上述したように本実施形態では「アドレス」及び「bit」がこれに相当する。その後、処理をS2105へ移行する。
S2105で、シミュレータI/F107は、信号情報113から、CPUシミュレータ102において固有に割り当てられた信号識別情報を有する信号を検索する。ここで、CPUシミュレータ102からは、信号識別情報としてアドレス情報のみ提供されるのに対して、CPUシミュレータ102内では、ビット情報(サイズが1の情報)として、同一アドレスの複数の信号が定義される場合がある。このため、シミュレータI/F107は、S2105において、当該信号識別情報(アドレス)を有する全ての信号を検索する。なお、CPUシミュレータ102以外のシミュレータについては、シミュレータI/F108〜110は、対応するシミュレータから通知される信号識別情報を有する信号を一意に特定することができる。
シミュレータI/F107は、S2106で、当該検索により、当該信号識別情報に対応する信号が存在するか否か判定する。ここで、シミュレータI/F107は、対応する信号が存在しないと判定した場合には、処理をS2109へ移行する一方で、存在すると判定した場合には、S2107へ移行する。
S2107で、シミュレータI/F107は、検索した信号の信号IDを、シミュレータI/F107が保持する信号情報113から取得する。ここで、信号IDは、シミュレータ接続部101において各信号に対して固有に割り当てられる信号識別情報(第2信号識別情報)に相当する。さらに、S2108で、シミュレータI/F107は、信号ID、信号値、及びデータサイズを含む信号出力通知を信号管理部117へ通知して、処理をS2103へ移行する。これにより、信号管理部117は、S2003(図12)で当該通知を受信して、S2004以下の処理を実行する。
一方で、シミュレータI/F107は、S2109で信号管理部117から信号出力通知を受信したと判定した場合、以下の処理を実行する。S2110で、シミュレータI/F107は、当該通知によって指定されたシミュレータIDと、自らに接続されたシミュレータのシミュレータIDとが一致するか否か判定する。ここで、シミュレータI/F107は、これらのIDが一致しない判定した場合には、当該通知を無視してS2103へ移行し、再び信号管理部117又はCPUシミュレータ102からの信号出力通知を待機する。一方で、シミュレータI/F107は、これらのIDが一致すると判定した場合には、S2111へ移行する。
S2111で、シミュレータI/F107は、信号情報113内に保持された信号値のうち、信号出力通知で指定された信号IDを有する信号の信号値を、通知された信号値に更新する。さらに、S2112で、シミュレータI/F107は、当該信号が、信号値を更新したタイミングにおいてその信号値を直ぐにCPUシミュレータ102に通知することが必要な信号(即通知信号)であるか否かを判定する。これは、シミュレータから対応するシミュレータI/Fに対して、更新された信号値を取得するイベントが発生しない場合には、そのようなシミュレータに対して、更新された信号値を通知する必要があるために行われる。この場合、信号情報113〜116に含まれる信号の信号値に変化が生じるごとに、シミュレータI/Fから対応するシミュレータへ信号値が通知されることになる。
本実施形態では、CPUシミュレータ102以外のシミュレータに対しては、信号値の変化のタイミングにおいて対応するシミュレータI/Fから更新された信号値を直ぐに通知する。一方で、CPUシミュレータ102に対しては、CPUシミュレータ102において当該信号を処理可能な、シミュレーションの状況に応じた最適なタイミングにおいて通知すればよい。本実施形態では、シミュレータI/F107は、CPUシミュレータ102が更新された信号値を必要とするリードイベントが発生した場合に、信号情報113から必要な信号値を読み出してCPUシミュレータ102へ通知する。これにより、不適切なタイミングにおいてシミュレータI/F107からCPUシミュレータ102に対して信号値の通知を行うことによってシミュレーション速度が低下することを防止することが可能になる。なお、信号変化のタイミングにおいて、更新された信号の信号値を各シミュレータ対して通知するか否かについては、シミュレータ接続部101へ接続されるシミュレータごとに予めシミュレータ構成定義情報123に設定されている。
S2112で、各シミュレータI/Fは、更新対象の信号が即通知信号である場合には、S2113へ移行し、更新後の信号値を対応するシミュレータへ通知する一方で、即通知信号でない場合には、S2114へ移行する。ここで、上記のようにシミュレータI/F107については、S2114へ移行する。S2114で、シミュレータI/F107は、CPUシミュレータ102において信号を処理可能な、シミュレーションの状況に応じた最適なタイミング(即ち、リードイベント発生時)に、更新後の信号値を当該シミュレータへ通知する。S2113又はS2114における処理の後、処理がS2103へ戻る。以上の処理により、何れかのシミュレータから出力された信号の信号値を、当該信号を入力信号とするシミュレータに対して伝達することができる。
<CPUシミュレータ102のリードイベントに対する処理>
上述のように、シミュレータI/F107は、CPUシミュレータ102からリードイベントが発生した場合にCPUシミュレータ102に対して更新後の信号値を通知する。その際、シミュレータ接続部101における信号のフォーマットと、信号の通知対象のシミュレータにおける信号のフォーマットとが異なる場合には、当該信号のフォーマットを通知対象のシミュレータにおけるフォーマットに変換して通知する必要がある。以下では、図14を参照して、シミュレータI/F107におけるリードイベントに対する信号伝達処理について説明する。なお、他のシミュレータI/F108〜110においても、シミュレータ接続部101及び通知対象のシミュレータにおける信号フォーマットが異なる場合には、同様の処理が必要となる。ここでは、シミュレータI/F107及びCPUシミュレータ102における処理について一例として説明する。
まず、シミュレータI/F107は、CPUシミュレータ102からリードイベントが通知されると、S2201で、読出しアドレス、読出しサイズ、及び、読出し値を取得する。次に、S2202で、シミュレータI/F107は、信号情報113を参照して、取得した読出しアドレスに一致するアドレスを有する信号を検索する。なお、信号情報113には読出しアドレスに一致する複数のアドレスが存在する可能性もある。このため、シミュレータI/F107は、信号情報113に含まれるすべての信号のアドレスを検索するとともに、アドレスが一致した全ての信号を抽出する。
その後、S2203で、シミュレータI/F107は、読出しアドレスに一致したアドレスを有する信号が存在するか否かを判定する。ここで、シミュレータI/F107は、一致したアドレスが存在しないと判定した場合には、処理を終了する一方で、存在すると判定した場合には、S2204へ移行する。なお、リードイベント通知により指定された読出しサイズが信号情報113に設定された各信号のデータサイズよりも大きい場合には、「読出しアドレス」〜「読出しアドレス+読出しサイズ」の範囲のアドレスにおいて、アドレスの比較を行う。また、読出しサイズが信号情報113に設定された各信号のデータサイズよりも小さい場合には、「読出しアドレス」〜「読出しアドレス+仮想信号のデータサイズ」の範囲のアドレスにおいて、アドレスの比較を行う。なお、このようなアドレスの検索処理は、リードイベントだけでなく、ライトイベントの通知がなされた場合にも同様に行われる。
S2204で、シミュレータI/F102は、S2202で抽出した全ての信号について、信号情報113のbit情報、データサイズ情報、及び信号値と、S2201で取得した読出しサイズ、及び読出し値とに基づいて、CPUシミュレータ102における仮想アドレス領域のデータの更新用のデータを生成する。具体的には、生成されたデータには、取得した全ての信号IDのアドレス、bit、信号値に関する情報が含まれる。
ここで、シミュレータI/F107は、信号の通知対象のCPUシミュレータ102における信号のフォーマットに合わせて、通知する信号のフォーマットを変換する。例えば、シミュレータ接続部101における仮想信号のデータサイズと、CPUシミュレータ102におけるデータサイズとが異なる場合、シミュレータI/F107は通知する信号のデータサイズを変換する。また、シミュレータ接続部101とCPUシミュレータ102とでエンディアンが異なる場合、シミュレータI/F107は通知する信号のエンディアンを変換する。
その後、シミュレータI/F107は、信号フォーマットの変換後の信号をCPUシミュレータ102に対して通知する。CPUシミュレータ102は、対応する信号の信号値を通知された信号値に更新するとともに、当該信号値を参照してシミュレーションを実行する。以上により、シミュレータI/F107は、ライトイベントに応じた信号伝達処理を終了する。
<具体例>
次に、上述した本実施形態に係るシミュレーションシステム100を構成する複数のシミュレータ間の信号伝達処理の具体例として、メインモータ駆動信号及びレジ紙有りセンサ信号に関する処理について説明する。
(メインモータ駆動信号の場合)
まず、CPUシミュレータ102からシミュレータI/F107に対してライトイベントが通知される。これにより、シミュレータI/F107は、当該ライトイベントによる値の書込みが行なわれる仮想アドレス領域を認識する。即ち、シミュレータI/F107は、当該通知で指定された仮想アドレス及びビット情報によって特定される仮想アドレス領域へ、指定された値の書込みが行なわれることで、当該仮想アドレス領域に対応する信号の信号値が変更されることを認識する。ここでは、一例として仮想アドレス:0x0003、ビット:0、及び値:1が当該通知で指定されているものとする。次に、シミュレータI/F107は、CPUシミュレータ102用の信号情報113(図11(a))から、仮想アドレス及びビット情報を信号識別情報として有する信号を検索することにより、信号ID:5を取得する。その後、シミュレータI/F107は、信号ID:5と値:1とを信号出力通知として信号管理部117へ通知する。
次に、信号管理部117は、シミュレータI/F107から受信した信号出力通知で指定された信号ID:5を有する信号を入力信号とするシミュレータを、信号管理情報118から特定する。これにより、信号管理部117は、信号の伝達対象のシミュレータを特定する。この場合、信号管理部117は、信号管理情報118(図10)から信号ID:5の信号を入力信号とするシミュレータID:1及び2を取得する。さらに、信号管理部117は、これらのシミュレータIDのシミュレータ(用紙搬送シミュレータ103、プロセスユニットシミュレータ104)に対応するシミュレータI/F108、109へ信号出力通知を発行する。
次に、シミュレータI/F108、109は、信号管理部117から受信した信号出力通知に従って、各々が保持する信号情報114、115を更新する。具体的には、当該通知に含まれる信号ID:5を有する信号の信号値を、値1に更新する。さらに、シミュレータI/F108、109は、変更後の信号値を、接続先のシミュレータである用紙搬送シミュレータ103、プロセスユニットシミュレータ104へそれぞれ通知する。
(レジ紙有りセンサ信号の場合)
まず、用紙搬送シミュレータ103からシミュレータI/F108に対してセンサ信号変化イベントの発生が通知される。当該通知により、シミュレータI/F108は、例えばセンサID:1(モデル識別値:0、個別ID:1)を信号識別情報として有する信号の信号値が、値:1に変化したことを認識する。すると、シミュレータI/F108は、信号情報114(図11(b))から当該信号識別情報を有する信号の信号ID(信号ID:3)を検索する。その後、シミュレータI/F108は、取得した信号ID:3と値:1とを信号出力通知として信号管理部117へ通知する。
次に、信号管理部117は、シミュレータI/F108から受信した信号出力通知で指定された信号ID:3を有する信号を入力信号とするシミュレータ(シミュレータID:0のCPUシミュレータ102)を特定する。さらに、信号管理部117は、シミュレータID:0のCPUシミュレータ102に対応するシミュレータI/F107へ、信号ID:0、信号値:1の信号出力通知を発行する。
次に、シミュレータI/F107は、信号管理部117から受信した信号出力通知に従って、信号情報113を更新する。具体的には、当該通知に含まれる信号ID:3を有する信号の信号値を、当該通知に含まれる値:1に更新する。その後、シミュレータI/F107は、上述したようにCPUシミュレータ102からの、アドレス0x000002へのリードイベントが発生すると、更新後の信号値をCPUシミュレータ102へ通知し、データの更新を指示する。
以上説明したように、本実施形態に係る情報処理装置200において、シミュレータ接続部101は、接続された複数のシミュレータの各々に対応して、各シミュレータから出力される信号と、当該信号に割り当てられる識別情報とを含む信号情報を保持する。当該信号情報には、各シミュレータから出力される信号と、各信号を識別するために、各シミュレータ及びシミュレータ接続部101においてそれぞれ固有に割り当てられる信号識別情報とが含まれる。シミュレータ接続部101は、さらに、信号の伝達対象のシミュレータを特定するための、信号の配線情報を管理する信号管理情報を保持する。シミュレータ接続部101は、何れかのシミュレータから、そのシミュレータにおいて固有の第1信号識別情報が付加された信号が出力されると、当該信号を識別するためのシミュレーション接続部101において固有の第2信号識別情報を信号情報から取得する。さらに、シミュレータ接続部101は、当該信号の伝達対象のシミュレータを、信号管理情報を用いて特定するとともに、出力された信号値で、特定したシミュレータに対応する信号情報に含まれる信号値を更新する。その後、シミュレータ接続部101は、信号の伝達対象のシミュレータに応じて、当該信号をシミュレータへ通知するタイミングを判定し、判定したタイミングで当該信号を通知する。
以上の処理により、本実施形態に係る情報処理装置200は、各シミュレータにおける外部との接続用インタフェースの仕様の自由度を保持しつつ、異なる仕様のシミュレータ間で信号を適切に伝達することができる。また、情報処理装置200は、各シミュレータからの出力信号を、特定した伝達対象のシミュレータに対してのみ伝達するため、異なるプロセスで実行される複数のシミュレータについてプロセス間通信の頻度を低減できるとともに、効率的なシミュレーションを実現できる。
また、情報処理装置200では、シミュレータ接続部101に保持された信号値の変化を各シミュレータが常時監視する必要もないため、シミュレーションの負荷を低減することができる。さらに、シミュレータ接続部101が、各シミュレータにおいて信号を処理可能なタイミングにおいて信号値をシミュレータへ通知するため、シミュレータにおけるシミュレーションの状況に応じた通知が可能である。このため、シミュレーション接続部101から各シミュレータに対する信号値の通知に伴うシミュレーション負荷の増大を防止するとともに、シミュレーション速度の低下を防止することができる。
なお、上述の実施形態については、種々の変形が可能である。例えば、各シミュレータI/F107〜110が保持する信号情報113〜116を、例えば、コア部106内や配線モジュール112内に保持させてもよい。その場合も、上述の効果と同等の効果を得ることができる。また、信号管理部117は、図17に示すように、信号管理情報118を、シミュレータごとに異なる別々の情報として管理してもよい。図17では、シミュレータごとに、入力信号として定義された信号のみが各信号管理情報に含まれている。これにより、例えば、多数の入力信号が何れかのシミュレータに偏って定義されている場合、信号管理情報を参照(検索)する際の負荷を軽減し、シミュレーションの実行効率を向上させることができる。
[第2の実施形態]
第1の実施形態において、シミュレータI/F107は、CPUシミュレータ102からのリードイベントやライトイベントに応じて、通知されたアドレス(信号識別情報)に対応する信号IDを信号情報113から検索する必要がある。その場合、信号情報113には同一のアドレスに対応する複数の信号が存在する可能性があるため、シミュレータI/F107は、常に信号情報113の全領域にわたってアドレスの検索を行う必要がある。さらに、CPUシミュレータ102におけるメモリへのアクセスサイズと、シミュレータ接続部101におけるメモリへのアクセスサイズとが異なる場合、当該サイズの相違を考慮してアドレスの比較を行う必要があるため、比較処理が複雑化するおそれがある。
そこで、第2の実施形態においては、CPUシミュレータ102に対応するシミュレータI/F107が、第1の実施形態に係る信号情報113の中に、CPUシミュレータ102における仮想メモリのアドレス情報と、信号IDとの対応情報をさらに保持する。当該情報を利用することにより、シミュレータI/F107における、CPUシミュレータ102によるリードイベント及びライトイベントに対する信号伝達処理を簡略化している。なお、以下では、説明の簡略化を目的として、第1の実施形態と異なる部分についてのみ説明する。
本実施形態に係るシミュレーションシステム100の構成は図1と基本的に同様であるが、CPUシミュレータ102に対応するシミュレータI/F107が保持する信号情報113に含まれる情報に相違がある。本実施形態において、信号情報113は、第1の実施形態において図10に例示した情報に加えて、CPUシミュレータ102の仮想メモリに関する情報(仮想メモリ情報)を含むことを特徴とする。
ここで、図15を参照して、信号情報113に含まれる仮想メモリ情報1501について説明する。本実施形態において、仮想メモリ情報1501は、CPUシミュレータ102で使用される仮想メモリのメモリ領域上のアドレス情報と、各アドレス領域のデータと、各アドレス領域に対応する信号の信号IDとの対応情報である。図15に一例として示す仮想メモリ情報1501では、各アドレス情報に対して15個の信号ID情報を対応付けることが可能であるが、対応付ける信号IDの個数は適宜変更可能である。
仮想メモリ情報1501は、第1の実施形態における信号情報113の生成と同様に、シミュレータ起動後の初期化処理において、シミュレータI/F107によって生成される。具体的には、シミュレータI/F107は、各アドレス領域に対して定義された全ての信号IDを各アドレス領域に対応付けることにより、仮想メモリ情報1501を生成する。なお、アドレス領域に対応する信号IDが存在しない場合には、図16に示すように「−1」が対応情報として設定される。
次に、仮想メモリ情報1501を使用した信号伝達処理について説明する。本実施形態において、信号管理部117による信号伝達処理は第1の実施形態(図12)と同様であるため、その説明を省略する。また、各シミュレータI/F107〜110による信号伝達処理も第1の実施形態(図12)と基本的に同様であるので、異なる部分についてのみ以下で説明する。
本実施形態で、シミュレータI/F107は、図12のS2105において信号情報113から信号識別情報を検索する際に、仮想メモリ情報1501を参照して、CPUシミュレータ102において固有に割り当てられた信号識別情報(アドレス)を検索する。また、本実施形態では、シミュレータI/F107は、S2111で、仮想メモリ情報1501を参照し、信号出力通知で指定された信号IDに対応するアドレス領域のデータを、通知された信号値に更新する。さらに、S2114において、シミュレータI/F107は、仮想メモリ情報1501を参照して得た信号値をCPUシミュレータ102へ通知する。
次に、図16を参照して、仮想メモリ情報1501を使用した、CPUシミュレータ102のリードイベントに対する処理について説明する。まず、シミュレータI/F107は、CPUシミュレータ102からリードイベントが通知されると、S2601で、読出しアドレス、読出しサイズ、及び、読出し値を取得する。次に、S2602で、シミュレータI/F107は、仮想メモリ情報1501を参照して、取得した読出しアドレスに対応するデータを取得する。さらに、S2603で、シミュレータI/F107は、CPUシミュレータ102の外部I/F120からの指示に応じて、CPUシミュレータ102へ当該データを通知する。その際、シミュレータI/F107は、S2601で取得した読出しアドレス及び読出しサイズに相当するCPUシミュレータ102のアドレス領域へのデータの更新を、CPUシミュレータ102に対して指示する指示情報とともに、データを通知する。以上により、シミュレータI/F107は、ライトイベントに応じた信号伝達処理を終了する。
以上の処理により、本実施形態に係る情報処理装置200は、シミュレータI/F107におけるアドレス情報の検索処理を簡略化することができ、CPUシミュレータ102に対する信号伝達処理をより高速に実行することが可能になる。これにより、シミュレーションシステム100におけるシミュレーションの実行を、第1の実施形態よりもさらに高速化することができる。
[その他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。