(57)【要約】【課題】ハードウェアと連帯して動作するソフトウェアの検証及び不具合の発見が容易なシミュレーション装置及びシミュレーションを提供する。【解決手段】ハードウェアの動作をハードウェア情報として記述し仮想的に実行するハードウェアシミュレータ３と、ハードウェアシミュレータ３と処理データの受け渡しを行いハードウェアを動作させるためのソフトウェアを実行するソフトウェアシミュレータ２と、ハードウェアシミュレータ３とソフトウェアシミュレータ２との間で送受信された処理データ及び処理データに付随する情報を格納するデータ記憶装置５０とを具備するシミュレーション装置。【選択図】　　　図１
2004145830.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアの一部又は全ての動作をハードウェア情報として記述し仮想的に実行するハードウェアシミュレータと、
前記ハードウェアシミュレータと処理データの受け渡しを行い、前記ハードウェアを動作させるためのソフトウェアを実行するソフトウェアシミュレータと、前記ハードウェアシミュレータと前記ソフトウェアシミュレータとの間で送受信された前記処理データ及び前記処理データに付随する情報を格納するデータ記憶装置
とを具備することを特徴とするシミュレーション装置。
【請求項２】
前記ハードウェアシミュレータと前記ソフトウェアシミュレータに外部から入力データを入力する入力手段と、
前記ハードウェアシミュレータにおける処理により変化する前記ハードウェアの状態を表示する出力手段
とを具備することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記ハードウェアシミュレータは、
前記入力データから前記ハードウェアシミュレータ内で解読できる形式の実行データを生成するデータ生成手段と、
前記ハードウェア情報に基づき前記実行データを解読し、処理し、前記実行データから処理データを生成し、必要に応じて前記ソフトウェアシミュレータへ前記処理データを送信する実行手段と、
前記実行手段における処理結果に基づき、前記出力手段へ前記ハードウェアの状態を出力する表示手段
とを具備することを特徴とする請求項１又は２に記載のシミュレーション装置。
【請求項４】
前記ソフトウェアシミュレータは、
前記ハードウェアシミュレータから送信された前記処理データ及び前記データ記憶装置に格納されている情報のいずれかに基づき、前記ソフトウェアの命令を命令単位で実行する命令セットシミュレータと、
前記処理データ及び前記処理データに付随する情報を格納データとして前記データ記憶装置に格納する記録手段と、
前記命令セットシミュレータでは、前記ハードウェアシミュレータから受け取る前記処理データを利用するのか、前記データ記憶装置に格納されている前記格納データを利用するのかを判断する選択手段と、
前記データ記憶装置に格納されている前記格納データを参照する参照手段
とを具備することを特徴とする請求項１又は２のいずれか１項記載のシミュレーション装置。
【請求項５】
前記処理データに付随する情報は、処理結果、ソフトウェアの状態、プログラムカウンタのいずれか１つを少なくとも有することを特徴とする請求項１乃至４のいずれか１項記載のシミュレーション装置。
【請求項６】
ハードウェアの一部又は全ての動作をハードウェア情報として記述し、ハードウェアシミュレータで仮想的に実行するステップと、
前記ハードウェアシミュレータと前記ハードウェアを動作させるためのソフトウェアを実行するソフトウェアシミュレータとの間で処理データの受け渡しを行うステップと、
受け渡された処理データを同期し、前記ソフトウェアシミュレータは前記ソフトウェアを実行するステップと、
前記ハードウェアシミュレータと前記ソフトウェアシミュレータとの間で送受信された前記処理データ及び前記処理データに付随する情報をデータ記憶装置に格納するステップ
とを有することを特徴とするシミュレーション方法。
【請求項７】
前記入力データに基づき、前記ハードウェアシミュレータ内で解読できる形式の実行データを生成するステップと、
前記ハードウェア情報に基づいて前記実行データを解読及び処理し、必要に応じて前記ソフトウェアシミュレータへデータを送信するステップと、
前記実行データを処理した結果、前記ハードウェアの状態を出力手段に表示するステップ
とを更に有することを特徴とする請求項６記載のシミュレーション方法。
【請求項８】
前記入力データ又は前記ハードウェアシミュレータから送信された前記処理データに基づき、前記ソフトウェアの命令を命令単位で実行するステップと、
前記処理データ及び前記処理データに付随する情報を格納データとして前記データ記憶装置に格納するステップと、
前記ハードウェアシミュレータから受け取る前記処理データを利用するのか、前記データ記憶装置に格納されている前記格納データを利用するのかを判断する判断するステップ
とを更に有することを特徴とする請求項６又は７のいずれか１項記載のシミュレーション方法。
【請求項９】
前記処理データに付随する情報は、処理結果、ソフトウェアの状態、プログラムカウンタのいずれか１つを少なくとも有することを特徴とする請求項６乃至８のいずれか１項記載のシミュレーション方法。
【請求項１０】
前記データ記憶装置に格納されている前記格納データを参照するステップを更に有することを特徴とする請求項８記載のシミュレーション方法。
【請求項１１】
ハードウェアシミュレータと、ソフトウェアシミュレータと、データ記憶装置と、からなり、ハードウェアとソフトウェアとから構成される装置を試験するシミュレーション装置を制御するためのプログラムであって、前記ハードウェアの一部又は全ての動作をハードウェア情報として記述し、ハードウェアシミュレータで仮想的に実行する命令と、
前記ハードウェアシミュレータと処理データの受け渡しを行い、ソフトウェアシミュレータで前記ソフトウェアを実行する命令と、
前記ハードウェアシミュレータと前記ソフトウェアシミュレータとの間で送受信された前記処理データ及び前記処理データに付随する情報をデータ記憶装置に格納する命令
とをシミュレーション装置に実行させることを特徴とするシミュレーションプログラム。
【請求項１２】
前記入力データに基づき、前記ハードウェアシミュレータ内で解読できる形式の実行データを生成する命令と、
前記ハードウェア情報に基づいて前記実行データを解読及び処理し、必要に応じて前記ソフトウェアシミュレータへデータを送信する命令と、
前記実行データを処理した結果、前記ハードウェアの状態を出力手段に表示する命令
とを更にシミュレーション装置に実行させることを特徴とする請求項１１記載のシミュレーションプログラム。
【請求項１３】
前記入力データ又は前記ハードウェアシミュレータから送信された前記処理データに基づき、前記ソフトウェアの命令を命令単位で実行する命令と、
前記処理データ及び前記処理データに付随する情報を格納データとして前記データ記憶装置に格納する命令と、
前記ハードウェアシミュレータから受け取る前記処理データを利用するのか、前記データ記憶装置に格納されている前記格納データを利用するのかを判断する判断する命令
とを更にシミュレーション装置に実行させることを特徴とする請求項１１記載のシミュレーションプログラム。
【請求項１４】
前記処理データに付随する情報は、処理結果、ソフトウェアの状態、プログラムカウンタのいずれか１つを少なくとも有することを特徴とする請求項１１乃至１３のいずれか１項記載のシミュレーションプログラム。
【請求項１５】
前記データ記憶装置に格納されている前記格納データを参照する命令を更にシミュレーション装置に実行させることを特徴とする請求項１３記載のシミュレーションプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ等の演算処理システムにおけるハードウェアとソフトウェアを試験するためのシミュレシミュレーション装置、シミュレーション方法及びシミュレーションプログラムに関する。
【０００２】
【従来の技術】
家電製品、事務機器、情報端末機器などにおいて一般的に利用されているシステムは、主にハードウェアとこのハードウェアを動作させるためのソフトウェアから構成されている。このようなソフトウェアは、ＣＰＵ上で動作するプログラムであり、入力ボタンや表示画面やモーターなどのハードウェアを制御するものである。そのため、ソフトウェアの開発には、ハードウェアと連帯して動作確認のための試験を行う必要があるが、ハードウェアが未完成の場合、ソフトウェアの試験を行うことは困難である。そこで、ハードウェアをコンピュータ上で仮想的（等価的）に構築し、ハードウェアシミュレータとしてソフトウェアシミュレータと連動して試験を行う技術が知られている。
【０００３】
従来、ハードウェアシミュレータがソフトウェアシミュレータへ渡すデータ列の記録は、ハードウェアシミュレータが行っていた。たとえば、特許文献１に記載されるシミュレーション装置は、ソフトウェアシミュレータとハードウェアシミュレータとを有しており、これらのシミュレータを同期させてデータの受け渡しを行い、システム全体の試験を行うシミュレーション装置である。更に、このハードウェアシミュレータは、ソフトウェアシミュレータへ渡すデータ列をデータ記憶装置へ記録する機能を有しており、データ記憶装置に記録されたデータ列を記録された時と同じタイミングでソフトウェアシミュレータへデータを渡す機能を有している。
【０００４】
ハードウェアシミュレータがソフトウェアシミュレータへ渡すデータ列の記録は、図１３に示すように、まず、ステップＳ２０１において、ソフトウェアシミュレータ１０２の時刻１７５とシミュレーション時刻１７６とを同期させる。次に、ステップＳ２０２において、入力データ１７４をハードウェアシミュレータ１０３へ渡すと、ハードウェアシミュレータ１０３は入力データ１７４を処理する。次に、ステップＳ２０３において、ハードウェアシミュレータ１０３がシミュレーション時刻１７６を参照する。また、ステップＳ２０４において、ハードウェアシミュレータ１０３は、図１４に示すような、「シミュレーション時刻」、「要求処理」、入力データ１７４を処理した「値」、ソフトウェアシミュレータ１０２へ渡すべき「アドレス」等の情報からなるデータ１９０をデータ記憶装置１５０に記録する。そして、ステップＳ２０５において、ソフトウェアシミュレータ１０２へ、入力データ１７４を処理した値とアドレス等の情報を渡す。
【０００５】
また、図１５に示すように、従来技術において、同一のデータ列におけるソフトウェアの試験を再現するためには、まず、ステップＳ２１１において、ソフトウェアシミュレータ１０２の時刻１７５とシミュレーション時刻１７６とが同期しているかどうか判断する。そして、ソフトウェアシミュレータ１０２の時刻１７５とシミュレーション時刻１７６とが同期している場合は、ステップＳ２１２において、ハードウェアシミュレータ１０３がシミュレーション時刻１７６を参照する。更に、ステップＳ２１３において、データ記憶装置１５０に格納されているデータ１９０を参照する。そして、シミュレーション時刻１７６とデータ１９０中に記録しておいたシミュレーション時刻とが等しい場合は、ステップＳ２１４において、データ１９０をソフトウェアシミュレータ１０２へ渡すことにより、実現している。
【０００６】
【特許文献１】
特開平１０−１６１９０６号公報
【０００７】
【発明が解決しようとする課題】
しかし、従来のシミュレーション装置では、同一のタイミングを持つデータ列に対するシステムの不具合を再現することはできるが、データ列のどのデータに対してシステムの不具合が生じたのかを特定することは困難である。たとえば、図１４に示すように、データＡ、データＢ及びデータＣがハードウェアシミュレータ１０３からソフトウェアシミュレータ１０２へそれぞれの時刻で渡され、データＡ、データＢ、データＣからなるデータ列から処理を行うソフトウェアの試験を想定してみた場合、処理結果がユーザの意図したものと異なり、ソフトウェアに問題がないとすると、データＡ、データＢ、データＣのうち少なくとも１つのデータに問題があると考えられる。しかし、従来のシミュレーション装置では、データＡ、データＢ、データＣを再現することは可能であるが、問題のあるデータを特定するためには、各データ及び各データに対するソフトウェアシミュレータ１０２の処理を再度実行し直して確認しなければならないという問題点があった。
【０００８】
さらに、同一のタイミングを持つデータ列を用いて、繰り返しソフトウェアの試験を行う場合、同一のデータ列であるにもかかわらず、そのデータ列をソフトウェアシミュレータ１０２へ渡すため、ハードウェアシミュレータ１０３の作動が必要となってしまう。そのため、ハードウェアシミュレータ１０３は、ソフトウェアシミュレータ１０２と同期をとって作動しているため、ソフトウェアシミュレータ１０２が単体でシミュレーションを実行するよりも余計な時間がかかるという問題点があった。
【０００９】
本発明は上述の如き従来の課題を解決するためになされたもので、その目的は、コンピュータ等の演算処理システムのハードウェアとソフトウェアを試験する際に、不具合の原因となるデータを特定することが容易なシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを提供することである。
【００１０】
本発明のその他の目的は、ハードウェアシミュレータの作動を軽減することができ、システム全体のシミュレーションを高速に実行することができるシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを提供することである。
【００１１】
本発明のその他の目的は、ソフトウェアの試験を効率よく行うことができるシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを提供することである。
【００１２】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の特徴は、ハードウェアの一部又は全ての動作をハードウェア情報として記述し仮想的に実行するハードウェアシミュレータと、ハードウェアシミュレータと処理データの受け渡しを行い、ハードウェアを動作させるためのソフトウェアを実行するソフトウェアシミュレータと、ハードウェアシミュレータとソフトウェアシミュレータとの間で送受信された処理データ及び処理データに付随する情報を格納するデータ記憶装置とを具備するシミュレーション装置としたことである。
【００１３】
ここで、「処理データに付随する情報」とは、処理データの処理結果、処理データを受け取った時のシミュレーション時刻、処理データを受け取った時のプログラムカウンタ、及び処理データを受け取った時のソフトウェアの状態（プログラムの割り込みマスク状態等）等の情報のことをいう。
【００１４】
本発明の第１の特徴に係るシミュレーション装置では、コンピュータ等の演算処理システムのハードウェアとソフトウェアを試験する際に、不具合の原因となるデータを特定することが容易なシミュレーション装置を提供することができる。また、本発明の第１の特徴に係るシミュレーション装置では、ハードウェアシミュレータの作動を軽減することができ、システム全体のシミュレーションを高速に実行することができるシミュレーション装置を提供することができる。
【００１５】
本発明の第２の特徴は、（イ）ハードウェアの一部又は全ての動作をハードウェア情報として記述し、ハードウェアシミュレータで仮想的に実行するステップ、（ロ）ハードウェアシミュレータとハードウェアを動作させるためのソフトウェアを実行するソフトウェアシミュレータとの間で処理データの受け渡しを行うステップ、（ハ）受け渡された処理データを同期し、ソフトウェアシミュレータはソフトウェアを実行するステップ、（ニ）ハードウェアシミュレータとソフトウェアシミュレータとの間で送受信された処理データ及び処理データに付随する情報をデータ記憶装置に格納するステップとからなるシミュレーション方法としたことである。
【００１６】
本発明の第２の特徴に係るシミュレーション方法では、コンピュータ等の演算処理システムのハードウェアとソフトウェアを試験する際に、不具合の原因となるデータを特定することが容易なシミュレーション方法を提供することができる。更に、本発明の第２の特徴に係るシミュレーション方法では、ソフトウェアの試験を効率よく行うことができるシミュレーション方法を提供することができる。
【００１７】
本発明の第３の特徴は、ハードウェアシミュレータと、ソフトウェアシミュレータと、データ記憶装置と、からなり、ハードウェアとソフトウェアとから構成される装置を試験するシミュレーション装置を制御するためのプログラムであって、（イ）ハードウェアの一部又は全ての動作をハードウェア情報として記述し、ハードウェアシミュレータで仮想的に実行する命令と、（ロ）ハードウェアシミュレータと処理データの受け渡しを行い、ソフトウェアシミュレータでソフトウェアを実行する命令と、（ハ）ハードウェアシミュレータとソフトウェアシミュレータとの間で送受信された処理データ及び処理データに付随する情報をデータ記憶装置に格納する命令とをシミュレーション装置に実行させるシミュレーションプログラムとしたことである。
【００１８】
本発明の第３の特徴に係るシミュレーションプログラムでは、コンピュータ等の演算処理システムのハードウェアとソフトウェアを試験する際に、不具合の原因となるデータを特定することが容易なシミュレーションプログラムを提供することができる。更に、本発明の第２の特徴に係るシミュレーション方法では、ソフトウェアの試験を効率よく行うことができるシミュレーションプログラムを提供することができる。
【００１９】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
【００２０】
（シミュレーション装置の構成）
図１に示すように、本発明の実施の形態に係るシミュレーション装置は、ソフトウェアシミュレータ２と、ハードウェアシミュレータ３と、入力装置４１と、データ記憶装置５０とから構成される。ソフトウェアシミュレータ２は、設計の対象となるシステムのソフトウェアをシミュレート（試験）するものであって、命令セットシミュレータ２１と、選択手段２２と、記録手段２３と、参照手段２４とから構成される。命令セットシミュレータ２１は、プログラムを命令単位で実行するものであり、入力装置４１で入力されたＣＰＵ情報８２に基づいてＣＰＵの機能をシミュレーション装置で実現する。選択手段２２は、入力装置４１からの入力データに基づき、命令セットシミュレータ２１を作動させてソフトウェアを試験（シミュレート）する際に、ハードウェアシミュレータ３から受け取る処理データを利用するのか、データ記憶装置５０に格納されている格納データを利用するのかを選択する。例えば、図１０に示すような選択画面７０において、「データ記録」若しくは「データ参照」のいずれか１つが選択されると、入力装置４１を介して選択された情報を取得し、選択手段２２は、ハードウェアシミュレータ３から受け取る処理データを利用するのか、データ記憶装置５０に格納されている格納データを用いるのかを選択する。
【００２１】
記録手段２３は、ハードウェアを制御するために処理データや処理データに付随する情報の受け渡しを行う際に、処理データ及び処理データに付随する情報を記録する。たとえば、選択手段２２において、ハードウェアシミュレータ３から受け取る処理データを利用することが選択されている場合に、記録手段２３は、ハードウェアシミュレータ３から渡される処理データの有無をチェックし、もし処理データがあれば、処理データに付随する情報に基づいて処理データの処理を行う。更に、記録手段２３は、（ａ）ハードウェアシミュレータ３から受け取った処理データの値、（ｂ）受け取った処理データに付随する情報、（ｃ）受け取った処理データの処理結果、（ｄ）処理データを受け取った時のシミュレーション時刻、（ｅ）処理データを受け取った時のプログラムカウンタ、（ｆ）処理データを受け取った時のプログラムの割り込みマスク状態等をデータ記憶装置５０に記録する。ここで「処理結果」とは、例えば、受け取った処理データをメモリアドレスに正しく格納できたかどうかといったものを指す。また、「ソフトウェアの状態」とは、例えば、受け取った時刻におけるソフトウェアプログラムの割り込みマスク状態等を意味する。また、「ハードウェア制御命令」とは、ハードウェア制御用の入出力レジスタへのデータの書き込みや読み込み等の処理命令を意味する。たとえば、図９に示すように、表示画面の表示を更新するためのレジスタとして、ＬＣＤＵＰＤＡＴＥレジスタがアドレス「０ｘＦＦＦＦＦＥ２０」に割り当ててあり、ステップＳ１２１において、プログラムによってこのレジスタに「０１」が書き込まれると、ソフトウェアシミュレータ２は、ステップＳ１２２において、データ値「０１」とアドレス「０ｘＦＦＦＦＦＥ２０」とをハードウェアシミュレータ３へ渡す。
【００２２】
参照手段２４は、データ記録装置５０に格納されている格納データ（処理データおよび処理データに付随する情報）を参照する。選択手段２２において、データ記憶装置５０に格納されている格納データを利用することが選択されている場合に、参照手段２４は、データ記憶装置５０に格納されている処理データのシミュレーション時刻をチェックし、命令セットシミュレータ２１のシミュレーション時刻と一致する場合、格納データ（処理データ及び処理データに付随する情報）を取り出す。そして、命令セットシミュレータ２１が処理データに付随する情報に基づき、処理データの処理を行う。たとえば、図７に示すように、データ記憶装置５０に格納されている格納データ（処理データ及び処理データに付随する情報）９０ａのシミュレーション時刻が「１００」であり、現在のシミュレーション時刻が「１００」である場合、データ記憶装置５０に格納されている処理データの値「１」と、処理データに付随する情報として処理データの格納アドレス「０ｘＦＦＦＦＦＥ００」と、処理データに付随する情報として命令セットシミュレータ２１に要求される処理が「書き込み」処理であるという情報を取り出す。そして、命令セットシミュレータ２１は、アドレス「０ｘＦＦＦＦＦＥ００」に値「１」を書き込む。
【００２３】
ハードウェアシミュレータ３は、ハードウェアの一部あるいは全てをＰＣ上に仮想的に用意するものであって、実行手段３１と、表示手段３２と、データ生成手段３３とから構成される。本発明の実施の形態に係るシミュレーション装置は、ハードウェアシミュレータ３とソフトウェアシミュレータ２との間で必要な処理データを送受信させることにより、ハードウェアとソフトウェアとの動作検証を進めていくものである。実行手段３１は、ハードウェア情報８３に基づいて、入力装置４１から入力された入力データを処理し、必要に応じて処理した処理データをソフトウェアシミュレータへ送信する。表示手段３２は、表示画面（液晶画面）、入力ボタン、ＬＥＤランプなどのハードウェア部品の状態を出力装置４２に出力する。例えば、入力された入力データの処理状況によってＬＥＤランプが点灯状態になった場合、点灯したＬＥＤランプが液晶ディスプレイ（出力装置）に表示（出力）される。また、入力された入力データの処理状況によって液晶ディスプレイに表示された画像が更新された場合、更新された画像を表示する。データ生成手段３３は、液晶ディスプレイに表示されたハードウェア状態に対してなされる入力装置４１からの操作により、実行手段３１へ送信する実行データを生成する。たとえば、図１１に示すように、表示画面７３に表示されているボタンをマウス等でクリックすることによって、ボタンが押されたことを示す実効データを生成する。
【００２４】
入力装置４１は、キーボード、マウス、ＯＣＲ等の認識装置、イメージスキャナ等の図形入力装置、音声認識装置等の特殊入力装置などにより構成される。出力装置４２は、液晶ディスプレイ、ＣＲＴディスプレイ等の表示装置、インクジェットプリンタ、レーザープリンタなどの印刷装置等によりそれぞれ構成される。
【００２５】
データ記憶装置５０は、ハードウェアシミュレータ３から受け取った処理データの値と、受け取った処理データに付随する情報（処理データの処理結果、処理データを受け取った時のシミュレーション時刻、処理データを受け取った時のプログラムカウンタ、及び処理データを受け取った時のプログラムの割り込みマスク状態等）とを格納する。なお、データ記憶装置５０は、例えば、コンピュータの外部メモリ装置、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどの記録媒体に記録されている。ここで記録媒体とは、具体的には、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯディスク、カセットテープ、オープンリールテープなどが含まれる。なお、データ記憶装置５０は、ソフトウェアシミュレータ２の内部に収納されていても良く、外部記憶装置として接続されていても良い。
【００２６】
次に、図２から図１２を用いて、本発明の実施の形態に係るシミュレーション方法について、ユーザー、ハードウェアシミュレータ３、ソフトウェアシミュレータ２に分けて処理フローを説明する。
【００２７】
（ユーザー）
（イ）ユーザーは、まず、図２のステップＳ５１において、出力装置４２に表示されている画面を閲覧する。次に、ステップＳ５２において、ハードウェア情報８３を入力する。たとえば、表示画面のハードウェア情報８３として、画像データを読み込むメモリアドレスを「０ｘＦＦＦＦＦ０００」とし、画像データの更新条件として、「０ｘＦＦＦＦＦＥ００」に「１」が書き込まれた場合として設定する。更に、画面上に表示された入力ボタンのハードウェア情報８３として、入力ボタンがおされた場合、「０ｘＦＦＦＦＦＥ１０」に「１」を書き込み、割り込み番号「３」の割り込みを発生させる処理を要求するものとして設定する。
【００２８】
（ロ）また、予め設定されているソフトウェアシミュレータ２のソフトウェアプログラムの処理フローは、図４及び図５に示すように、ステップＳ２１からステップＳ１２に戻る、あるいはステップＳ３７からステップＳ３１に戻る無限ループになっている。そこで、割り込み番号３の割り込みを受けた場合、その割り込み処理の内部で、アドレス「０ｘＦＦＦＦＦＥ１０」に格納されたデータの値が「１」であると、あらかじめメモリアドレスに格納された画像データをデコードして、メモリアドレス「０ｘＦＦＦＦＦ０００」に転送し、アドレス「０ｘＦＦＦＦＦＥ１０」に「１」を書き込む処理が設定されている。更に、ユーザーは、シミュレーション形態として「データ記録」又は「データ参照」を選択する。
【００２９】
（ハ）次に、ステップＳ５３において、ユーザーが入力装置４１を用いて、図１１の表示画面７３に表示されている入力ボタンをマウスでクリックする等して操作し、ハードウェアシミュレータ３又はソフトウェアシミュレータ２へ送信する。このステップＳ５３は、図１１のステップＳ１３１に対応する。
【００３０】
（ハードウェアシミュレータ）
次に、図３及び図１１を参照して、図１に示すハードウェアシミュレータ３の処理フローについて説明する。
【００３１】
（イ）図１１のステップＳ１３１でユーザーが入力データをハードウェアシミュレータ３へ送信すると、ハードウェアシミュレータ３は、ステップＳ１３２において、ハードウェア情報８３を取得し、図３のステップＳ４１において、実行手段３１に渡すための実行データをデータ生成手段３３を用いて生成する。次に、ステップＳ４２において、実行手段３１は、データ生成手段３３で生成された実行データを読み込み、ステップＳ４３において解読し、ステップＳ４４において実行する。
【００３２】
（ロ）次に、ステップＳ４５において、実行手段３１は、実行結果がソフトウェア制御命令であるか否かを判断する。ソフトウェア制御命令である場合は、ステップＳ４６において、実行結果をソフトウェアシミュレータ２へ送信し、図４のソフトウェアシミュレータ２における処理フローへ進む。たとえば、図１１のステップＳ１３３において、ハードウェアシミュレータ３は、データ格納アドレス「０ｘＦＦＦＦＦＥ１０」と、データ値「１」と、書き込み要求処理と、割り込み番号「３」と、割り込みを発生させる要求処理を処理データとしてソフトウェアシミュレータ２へ渡す。実行結果がソフトウェア制御命令ではない場合は、ステップＳ４７において、実行結果を出力装置４２へ送信し、出力装置４２において、実行結果が表示等される。
【００３３】
（ソフトウェアシミュレータ）
次に、図４を参照し、ソフトウェアシミュレータ２の処理フローについて説明する。
【００３４】
（イ）まず、図２のステップＳ５３又は図６のステップＳ１０１において、入力装置４１を介して入力された入力データ８４がハードウェアシミュレータ３へ渡されると、ハードウェアシミュレータ３は、図３のステップＳ４１〜Ｓ４４において、入力データ８４を処理し、ステップＳ４６又は図６のステップＳ１０２において、ハードウェアシミュレータ３はソフトウェアシミュレータ２へ入力データ８４の処理結果や、入力データ８４に対する処理要求等の処理データを送信する。
【００３５】
（ロ）すると、ソフトウェアシミュレータ２は、図４のステップＳ１１において、選択手段２２を用いて、受け取った処理データ（ハードウェアシミュレータ３の実行結果）のシミュレーション形態をチェックする。シミュレーション形態が「データ参照」である場合は、図５のステップＳ３１の処理へ進む。
【００３６】
ここで、シミュレーション形態がデータ参照である場合とは、ソフトウェアシミュレータ２が、データ記憶装置５０に格納されている格納データ（処理データ及び処理データに付随する情報等）を使用する場合である。また、シミュレーション形態がデータ記録である場合は、ステップＳ１２の処理へ進む。シミュレーション形態がデータ記録である場合とは、ソフトウェアシミュレータ２が、ハードウェアシミュレータ３から処理データを受け取って使用し、受け取った処理データを命令セットシミュレータ２１における実行結果等と共にデータ記録媒体５０に格納する場合である。
【００３７】
（データ記録フロー）
（イ）まず、シミュレーション形態が「データ記録」であった場合、図４のステップＳ１２において、ハードウェアシミュレータ３から受信した処理データを読み込み、ステップＳ１３において、データを解読し、ステップＳ１４において、解読結果に基づき命令を実行する。
【００３８】
（ロ）次に、ステップＳ１５において、命令セットシミュレータ２１は、ステップＳ１４で実行した命令がハードウェア制御命令であるか否かを判断する。ハードウェア制御命令でない場合は、ステップＳ１８の処理へ進む。ハードウェア制御命令である場合、命令セットシミュレータ２１は、ステップＳ１６において、ハードウェアシミュレータ３へステップＳ１４で実行した処理データ（命令）と、処理データ（命令）に付属する情報をハードウェアシミュレータ３へ送信する。そして、ハードウェアシミュレータ３へ送信した情報を、ステップＳ１７において、記録手段２３がデータ記憶装置５０へ格納する。
【００３９】
（ハ）次に、ステップＳ１８において、ハードウェアシミュレータ３から渡された処理データ又は入力装置４１から入力された入力データ８４の有無を判断する。処理データ又は入力データ８４がない場合は、ステップＳ２１の処理へ進む。
【００４０】
（ニ）処理データ又は入力データ８４がある場合は、ステップＳ１９において、命令セットシミュレータ２１は、処理データ又は入力データ８４の処理を実行する。そして、ステップＳ２０において、図６のステップＳ１０３に示すように、記録手段２３を用いて、現在の時刻と、受け取った処理データと、受け取った処理データの処理結果、現在の時刻におけるソフトウェアの状態等の情報をデータ記憶装置５０へ格納する。たとえば、図１２に示すように、シミュレーション時刻が「２００」であり、プログラムカウンタが「０ｘ１２３０」であり、割り込みマスク状態が割り込み禁止であり、アドレス「０ｘＦＦＦＦＦＥ１０」への書き込みが正常終了したとする。このような場合、記録手段２３は、データ記憶装置５０へデータ９０ｂを格納する。
【００４１】
（ホ）次に、ステップＳ２１において、プログラムカウンタとシミュレーション時刻のカウントを行う。そして、ステップＳ１２からステップＳ２１までの処理は、ソフトウエアシミュレータ２外部の入力手段４１によりシミュレーションを終了する信号が送信されるまで繰り返す。
【００４２】
このように、ユーザー、ハードウェアシミュレータ３、ソフトウェアシミュレータ２の処理フローから、シミュレーションを実行したユーザーは、表示画面上で入力ボタンを押したにも関わらず、表示画面上に画像データが表示されないことを確認した場合、システムの不具合を発見したことになる。
【００４３】
システムの不具合を発見した場合、ユーザは、シミュレーションを中段し、データ記憶装置５０に記録されている格納データのデータ列を参照する。たとえば、格納データのデータ列には、割り込み要求処理がハードウェアシミュレータからソフトウェアシミュレータへ通知されたが、ソフトウェアの状態が割り込み禁止状態であったということ等が確認されると、ソフトウェアプログラムの不具合が原因であることが考えられる。たとえば、プログラムの初期化ルーチンの際に、割り込み許可の設定を忘れていた場合は、ユーザーは割り込み状態を許可するようにソフトウェア・プログラムを修正することができる。
【００４４】
（データ参照フロー）
（イ）図４のステップＳ１１において、シミュレーション形態が「データ参照」であると判断された場合、図５のステップＳ３１の処理へ進む。そして、ステップＳ３１において、命令セットシミュレータ２１は、ハードウェアシミュレータ３から受信したデータを読み込む。更に、命令セットシミュレータ２１は、ステップＳ３２において、読み込んだデータを解読し、ステップＳ３３において、解読した命令を実行する。
【００４５】
（ロ）次に、ステップＳ３４において、図８のステップＳ１１１に示すように、参照手段２４は、データ記憶装置５０を参照し、データ記憶装置５０に格納されている格納データ（処理データ及び処理データに付随する情報）のシミュレーション時刻と、現在のシミュレーション時刻７５とが一致するか否かを判断する。一致しない場合は、ステップＳ３７の処理へ進む。一致する場合は、ステップＳ３５において、データ記憶装置５０に格納されている格納データを読み込み、ステップＳ３６において、読み込んだ格納データの処理を行う。たとえば、シミュレーション時刻が「１００」である場合、参照手段２４は、データ記憶装置５０の読み込みポインタが示す位置のデータ列を参照する。データ記憶装置５０に格納されているデータが図１２に示すようなものである場合、シミュレーション時刻は「２００」であるため、このデータ列は無視される。
【００４６】
シミュレーション時刻が「２００」のとき、参照手段２４は、データ記憶装置５０の格納データを参照し、シミュレーション時刻が一致するため、このデータ列を取り出して処理を行う。図１２に示すような格納データ９０ｂが格納されている場合は、アドレス「０ｘＦＦＦＦＦＥ１０」に「１」を書き込み、割り込み番号「３」の割り込み要求を発生させる。
【００４７】
（ハ）次に、ステップＳ３７において、ソフトウエアシミュレータ２は、プログラムカウンタとシミュレーション時刻のカウントを行う。そして、プログラムのサイズに応じて、ステップＳ３１からステップＳ３７の処理を繰り返す。このとき、ソフトウェアの状態として割り込みが禁止されている状態である場合は、割り込み処理は行われないため、割り込み処理として画像データのデコードが設定されている場合は、画像データのデコード処理は行われない。割り込み処理が禁止されていない場合は、割り込み処理が行われる。たとえば、図１２に示すように、割り込み番号３の割り込み要求があり、割り込み許可になっている場合は、割り込み処理を行い、アドレス「０ｘＦＦＦＦＦＥ１０」に格納されている処理データの値が「１」であるため、画像データをデコードし、メモリアドレス「０ｘＦＦＦＦＦ０００」にデータを転送し、アドレス「０ｘＦＦＦＦＦＥ００」に「１」を書き込む。そして、アドレス「０ｘＦＦＦＦＦＥ００」に「１」を書き込む処理は、ハードウェア制御に関する命令であるため、処理データの値「１」とアドレス「０ｘＦＦＦＦＦＥ００」をハードウェアシミュレータ３へ渡す。ハードウェアシミュレータ３は、処理データの値「１」と、アドレス「０ｘＦＦＦＦＦＥ００」を受け取ると、ハードウェア情報８３に基づき、アドレス「０ｘＦＦＦＦＦ０００」から画像データを取り出し、この画像データを処理し、表示手段３２を用いて、表示画面に画像を表示する。
【００４８】
このように、本発明の実施の形態に係るシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを用いれば、システムのシミュレーションに不具合が生じた場合、データ記憶装置５０に格納された格納データ（処理データ及び処理データに付随する情報）を確認することによって、原因を特定することができ、効率良くシステムのシミュレーションを行うことができる。
【００４９】
また、本発明の実施の形態に係るシミュレーション装置、シミュレーション方法及びシミュレーションプログラムによれば、シミュレーション形態が「データ参照」の場合、シミュレーションを実行したユーザが操作をしなくても、シミュレーション形態が「データ記録」の場合と同一のシミュレーションを行うことができる。
【００５０】
更に、本発明の実施の形態に係るシミュレーション装置、シミュレーション方法及びシミュレーションプログラムによれば、ソフトウェアシミュレータ２がデータ記憶装置５０に格納されている格納データを直接参照するため、ハードウェアシミュレータ３の処理が軽減され、システム全体のシミュレーション速度を高速に実行することができる。
【００５１】
また、本発明の実施の形態に係るシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを用いれば、ユーザーは、任意の時刻に入力データを生成することが出来、シミュレーションを効率良く実行することができる。
【００５２】
（その他の実施の形態）
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面は、この発明を限定するものであると理解すべきではない。この開示から、当業者には様々な代替実施の形態、実施例、及び製造工程技術が明らかとなろう。
【００５３】
本発明の実施の形態に係るシミュレーション装置、シミュレーション方法及びシミュレーションプログラムは、コンピュータ読み取り可能な記録媒体に保存しても良い。そして、シミュレーションを行う際には、この記録媒体又はプログラムをコンピュータシステムに読み込ませ、コンピュータシステム内のメモリ等の記憶部にプログラムを格納し、シミュレーションプログラムを演算装置で実行することにより、本発明のシミュレーション装置、及びシミュレーション方法を実現することができる。ここで、記録媒体とは、例えば、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのプログラム記録することができるようなコンピュータ読み取り可能な記録媒体等が含まれる。
【００５４】
また、本発明の実施の形態に係るシミュレーション装置において、ハードウェアシミュレータ及びソフトウェアシミュレータは、同一のシミュレーション装置に具備されてもよく、別々のシミュレーション装置に具備されても良い。
【００５５】
本発明はここでは記載していない様々な実施の形態などを含むことは勿論である。従って、本発明の技術的な範囲は上記説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【００５６】
【発明の効果】
本発明によれば、入力されたデータと入力されたデータに対するソフトウェアによる処理情報とをソフトウェアシミュレータがデータ記録装置に格納するため、入力データに対してソフトウェアが行った処理の検証や不具合の発見が容易なシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを提供することができる。
【００５７】
本発明によれば、ソフトウェアシミュレータがデータ記録装置に格納されたデータを利用することによって、ハードウェアシミュレータの作動を軽減することができ、同一のデータ列に対するシミュレーションを高速に実行するシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを提供することができる。
【００５８】
本発明によれば、ハードウェアシミュレータを操作することによって、ソフトウェアシミュレータへ与える様々なデータを容易に作成することができるため、ソフトウェアのシミュレーション（試験）を効率よく行うシミュレーション装置、シミュレーション方法及びシミュレーションプログラムを提供することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るシミュレーション装置の構成を示す概念図である。
【図２】本発明の実施の形態に係るシミュレーション方法のユーザー側における処理のフロー図である。
【図３】本発明の実施の形態に係るシミュレーション方法のハードウェアシミュレータ側における処理のフロー図である。
【図４】本発明の実施の形態に係るシミュレーション方法のソフトウェアシミュレータ側における処理のフロー図（その１）である。
【図５】本発明の実施の形態に係るシミュレーション方法のソフトウェアシミュレータ側における処理のフロー図（その２）である。
【図６】本発明の実施の形態に係るシミュレーション方法の概念図（その１）である。
【図７】本発明の実施の形態に係るデータ記憶装置に格納されている情報（その１）の一例である。
【図８】本発明の実施の形態に係るシミュレーション方法の概念図（その２）である。
【図９】本発明の実施の形態に係るシミュレーション方法の概念図（その３）である。
【図１０】本発明の実施の形態に係るユーザー表示画面（その１）の一例である。
【図１１】本発明の実施の形態に係るシミュレーション方法の概念図（その４）である。
【図１２】本発明の実施の形態に係るデータ記憶装置に格納されている情報（その２）の一例である。
【図１３】従来のシミュレーション方法の概念図（その１）である。
【図１４】従来のシミュレーション装置において格納される情報の一例である。
【図１５】従来のシミュレーション方法の概念図（その２）である。
【符号の説明】
２　ソフトウェアシミュレータ
３　ハードウェアシミュレータ
２１　命令セットシミュレータ
２２　選択手段
２３　記録手段
２４　参照手段
３１　実行手段
３２　表示手段
３３　データ生成手段
４１　入力装置
４２　出力装置
５０　データ記憶装置
７０　画面
７３　入力画面
７５　時刻
８２　ＣＰＵ情報
８３　ハードウェア情報
８４　入力データ
９０、９３　情報
９１　メモリ
１０２　ソフトウェアシミュレータ
１０３　ハードウェアシミュレータ
１５０　データ記憶装置
１７４　入力データ
１７５　時刻
１７６　シミュレーション時刻
１９０　データ
【図１】
2004145830.tif 000003
【図２】
2004145830.tif 000004
【図３】
2004145830.tif 000005
【図４】
2004145830.tif 000006
【図５】
2004145830.tif 000007
【図６】
2004145830.tif 000008
【図７】
2004145830.tif 000009
【図８】
2004145830.tif 000010
【図９】
2004145830.tif 000011
【図１０】
2004145830.tif 000012
【図１１】
2004145830.tif 000013
【図１２】
2004145830.tif 000014
【図１３】
2004145830.tif 000015
【図１４】
2004145830.tif 000016
【図１５】
2004145830.tif 000017