前記第1格納部は、リングモードでのデータ保持を行うトレースメモリであることを特徴とする請求項1乃至請求項8のいずれか1項に記載のエミュレーションシステム。
前記第2制御部は、前記フィルタリング結果データが前記所定条件を満たしてから一定時間を待ち合わせた後に、前記制御情報を前記エミュレーション装置に送信することを特徴とする請求項1乃至請求項9のいずれか1項に記載のエミュレーションシステム。
前記第1格納部は、リングモードでのデータ保持を行うトレースメモリであることを特徴とする請求項11乃至請求項13のいずれか1項に記載のエミュレーション装置。
CPUの動作を模擬するエミュレーション装置と、前記エミュレーション装置からの転送データを受け取るホスト装置と、を備えるエミュレーションシステムの制御方法であって、
前記エミュレーション装置は、
CPUの処理を模擬して検証対象のプログラムのシミュレーションを実行し、
シミュレーション結果であるトレースデータを第1格納部に格納し、
前記ホスト装置から受信した制御情報に応じて、前記シミュレーション、または前記第1格納部へのトレースデータの書き込み、を制御し、
前記ホスト装置は、
前記トレースデータをフィルタリング条件に従いフィルタリングしたフィルタリング結果データを第2格納部に格納し、
前記フィルタリング結果データが所定条件を満たした場合に、前記制御情報を生成して前記エミュレーション装置に出力する、制御方法。
CPUを模擬してシミュレーションを実行し、実行結果であるトレースデータを第1格納部に格納するエミュレーション装置から転送データを受信するホストコンピュータで実行されるプログラムであって、
前記ホストコンピュータに、
前記トレースデータをフィルタリングしたフィルタリング結果データが、所定条件を満たすか否かを判定する判定ステップと、
前記判定ステップにおいて前記所定条件を満たすと判定された場合に、前記シミュレーションの処理または前記第1格納部への書き込みを制御する制御情報を生成する生成ステップと、
前記制御情報を前記エミュレーション装置に送信する送信ステップと、を実行させる、
プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0008】
一般に、ユーザがトレースデータの全てを詳細に参照する必要があるケースは少ない。多くの場合、ある一部の情報を参照すれば、ユーザは、マイクロコンピュータのデバッグや性能解析に十分に対応可能である。しかし、エラーが生じた場合には、その前後の動作の詳細を的確に把握したい場合が多い。すなわち、通常動作時には必要なトレースデータのみを参照することができ、かつ所定の事象が発生した場合(たとえば異常発生時)には詳細なトレースデータを参照できることが望ましい。
【0009】
特許文献1に記載の長時間トレースシステムでは、インサーキットエミュレータは、全てのトレースデータをホストコンピュータに転送している。そのため、デバッグや性能調査に従事するユーザは、ホストコンピュータ上で全てのトレースデータから所望のデータを検索して参照しなければならない。
【0010】
特許文献2に記載のマイクロコンピュータでは、タスクに関するトレースデータのみを取得可能である。しかしながら、何らかの異常が発生した場合であっても、該当タスクに関するトレースデータのみしか取得できない。
【0011】
すなわち、エミュレーションシステムにおいて、通常動作時には必要なトレースデータのみを参照することができるものの、所定の事象が発生した場合(たとえば異常発生時)に詳細なトレースデータを参照することが出来ないという問題があった。
【課題を解決するための手段】
【0012】
本発明にかかるエミュレーションシステムの一態様は、
CPUの動作を模擬するエミュレーション装置と、前記エミュレーション装置からの転送データを受け取るホスト装置と、を備えるエミュレーションシステムであって、
前記エミュレーション装置は、
CPUの処理を模擬して検証対象のプログラムをシミュレーションする処理部と、
前記処理部が出力するトレースデータを格納する第1格納部と、
前記ホスト装置から受信した制御情報に応じて、前記処理部の処理、または前記第1格納部へのトレースデータの書き込み、を制御する第1制御部と、を備え、
前記ホスト装置は、
前記処理部が出力するトレースデータをフィルタリング条件に従いフィルタリングしたフィルタリング結果データを格納する第2格納部と、
前記フィルタリング結果データが所定条件を満たした場合に、前記制御情報を前記エミュレーション装置に出力する第2制御部と、を備える、ものである。
【0013】
本発明にかかるエミュレーション装置の一態様は、
シミュレーション結果であるトレースデータをホスト装置に転送するエミュレーション装置であって、
CPUの処理を模擬して検証対象のプログラムをシミュレーションする処理部と、
前記処理部が出力するトレースデータを格納する第1格納部と、
前記ホスト装置から受信した制御情報に応じて、前記処理部の処理、または前記第1格納部へのトレースデータの書き込み、を制御する第1制御部と、を備え、
前記制御情報は、前記処理部が出力するトレースデータをフィルタリング条件に従いフィルタリングしたフィルタリング結果データが、所定条件を満たした場合に前記ホスト装置から送信される、ものである。
【0014】
本発明にかかる制御方法の一態様は、
CPUの動作を模擬するエミュレーション装置と、前記エミュレーション装置からの転送データを受け取るホスト装置と、を備えるエミュレーションシステムの制御方法であって、
前記エミュレーション装置は、
CPUの処理を模擬して検証対象のプログラムのシミュレーションを実行し、
シミュレーション結果であるトレースデータを第1格納部に格納し、
前記ホスト装置から受信した制御情報に応じて、前記シミュレーション、または前記第1格納部へのトレースデータの書き込み、を制御し、
前記ホスト装置は、
前記トレースデータをフィルタリング条件に従いフィルタリングしたフィルタリング結果データを第2格納部に格納し、
前記フィルタリング結果データが所定条件を満たした場合に、前記制御情報を前記エミュレーション装置に出力する、ものである。
【0015】
本発明にかかるプログラムに一態様は、
CPUを模擬してシミュレーションを実行し、実行結果であるトレースデータを第1格納部に格納するエミュレーション装置から転送データを受信するホストコンピュータで実行されるプログラムであって、
前記ホストコンピュータに、
前記トレースデータをフィルタリングしたフィルタリング結果データが、所定条件を満たすか否かを判定する判定ステップと、
前記判定ステップにおいて前記所定条件を満たすと判定された場合に、前記シミュレーションの処理または前記第1格納部への書き込みを制御する制御情報を生成する生成ステップと、
前記制御情報を前記エミュレーション装置に送信する送信ステップと、を実行させる、ものである。
【0016】
本発明では、エミュレーション装置内にトレースデータを格納するとともに、所望の条件によりフィルタリング済みのトレースデータ(フィルタリング結果データ)をホスト装置が保持する。これにより、ユーザは、シミュレーションを通常実行している場合には、ホスト装置内のトレースデータ(フィルタリング結果データ)を参照することにより、必要なトレースデータのみを参照することができる。さらに、ホスト装置は、フィルタリング結果データが所定条件(たとえばエラー発生時)を満たした場合にエミュレーション装置におけるシミュレーション処理またはトレースデータの書き込みを制御する。これにより、エミュレーション装置におけるトレースデータの上書き等を禁止できる。上書き等を禁止により、ユーザは、エラー発生時の詳細なトレースデータをエミュレーション装置上で参照することができる。
【発明の効果】
【0017】
本発明では、通常動作時には必要なトレースデータのみを参照することができ、かつ所定の事象が発生した場合(たとえば異常発生時)には詳細なトレースデータを参照することが出来るエミュレーションシステム、エミュレーション装置、エミュレーションシステムの制御方法、プログラムを提供することができる。
【発明を実施するための形態】
【0019】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本実施の形態にかかるエミュレーションシステムの構成を示すブロック図である。当該エミュレーションシステムは、エミュレータ100(エミュレーション装置)と、ホストコンピュータ200(ホスト装置)と、を備える。エミュレータ100は、マイクロコンピュータの機能を実現するインサーキットエミュレータ(ICE)あるいはオンチップデバッグエミュレータである。
【0020】
エミュレータ100は、CPU(Central Processing Unit)シミュレーション部110(処理部)と、トレースメモリ120(第1格納部)と、制御部130(第1制御部)と、フィルタ部140と、ホストインターフェイス150と、を備える。
【0021】
CPUシミュレーション部110には、シミュレーションの対象となるマイクロコンピュータを動作させるためのプログラムが入力される。CPUシミュレーション部110は、当該プログラムを動作させることにより、マイクロコンピュータの動作をシミュレーションする。
【0022】
CPUシミュレーション部110は、シミュレーションの実行結果としてトレースデータを生成する。CPUシミュレーション部110は、例えば図示しないピンの設定、あるいはレジスタ設定により、生成するトレースデータの種別(分岐トレース情報、アクセストレース情報等)を決定する。CPUシミュレーション部110は、生成したトレースデータを、トレース出力部111を介して制御部130及びフィルタ部140に供給する。トレース出力部111は、トレースデータをフィルタ部140及び制御部130に出力するインターフェイスである。
【0023】
トレースメモリ120は、トレースデータを逐次保持していく記憶装置である。トレースメモリ120は、後述するトレースデータ格納部230に比べて小容量である場合が一般的である。トレースメモリ120は、例えば、リングモードで書き込みが可能な記憶装置である。トレースメモリ120の構成の一例を、
図2を参照して説明する。
【0024】
トレースメモリ120には、先頭アドレス(
図2では、アドレス"0x000000")から順にデータが書き込まれる。より詳細には、トレースメモリ120は、先頭アドレスから順にデータが書き込まれるように制御し、最終アドレス(
図2では、アドレス"0xffffff")まで書き込みが終了した場合に、再度先頭アドレスから書き込みが行われるように制御する。すなわち、トレースメモリ120は、容量超過時には古いデータを優先的に新しいデータに更新する、リングモード形式で書込みを行う記憶装置である。なお、トレースメモリ120は、読み出し処理と書き込み処理を同時に実行可能なデュアルポートメモリであってもよく、他の形態のメモリであっても良い。ユーザは、トレースメモリ120に書き込まれたトレースデータを参照することにより、シミュレーションの実行状態を把握する。
【0025】
再び
図1を参照する。制御部130は、トレースメモリ120へのトレースデータの書き込みを制御する。制御部130は、CPUエミュレーション部110によるシミュレーション実行の状態に応じてトレースメモリ130へのデータ書き込みを開始、または停止することができる(セレクショントレース機能)。
【0026】
例えば、CPUエミュレーション部110により、特定番地からの命令実行が行われた場合、制御部130は、トレースメモリ120へのトレースデータ書き込みを開始(または停止)する。また、制御部130は、トレースメモリ120がトレースメモリフル(全容量を使い切った、すなわち空き容量がない)となった場合にもトレースデータの書き込みを停止しても良い。
【0027】
さらに、本実施の形態にかかる制御部130は、ホストコンピュータ200からの制御情報の通知に応じて、トレースメモリ120またはCPUシミュレーション部110の制御を行う。制御情報とは、ホストコンピュータ200に格納されるトレースデータが所定の条件を満たした場合に、発行される情報である。
【0028】
一般的に、制御部130は、ホストコンピュータ200においてエラーの疑いのあるトレースデータが検出された場合に、トレースメモリ120に上書きが生じないように制御する。詳細には、制御部130は、制御情報の通知を受け付けた場合に以下の制御のいずれかを行う。
(1)トレースメモリ120へのトレースデータの書き込みの停止、または書き込み停止の解除
(2)CPUシミュレーション部110によるシミュレーション実行の停止、またはシミュレーション実行の再開
(3)トレース出力部111からのトレースデータの出力の停止、またはトレースデータの出力の再開
【0029】
制御情報は、停止制御を指示する情報(停止制御情報)、または再開制御を指示する情報(再開制御情報)のいずれかの値となる。制御情報が停止制御を指示する情報である場合、制御部130は、(1)トレースメモリ120へのトレースデータの書き込みの停止、(2)CPUシミュレーション部110によるシミュレーション実行の停止、(3)トレース出力部111からのトレースデータの出力の停止、のいずれかの制御を行う。一方、制御情報が再開制御を指示する情報である場合、制御部130は、(1)トレースメモリ120へのトレースデータの書き込みの再開、(2)CPUシミュレーション部110によるシミュレーション実行の再開、(3)トレース出力部111からのトレースデータの出力の再開、のいずれかの制御を行う。
【0030】
ここで、(2)に記載するCPUシミュレーション部110によるシミュレーション実行の停止制御を行う場合、制御情報の通知(エラー発生時等)によって、CPUによるシミュレーションが確実に停止し、ユーザによるトレースメモリ120の参照後に停止箇所からのシミュレーションを再開できる。しかしながら、CPUの動作を止めるように制御するため、他の処理も全て止まってしまう。
【0031】
一方、(1)または(3)に記載する制御を行う場合、トレースメモリ120の更新のみが停止し、CPUシミュレーション部110によるシミュレーション実行が継続してしまう。すなわち、トレースデータが記録されないままシミュレーションが実行されてしまう。しかしながら、CPUのシミュレーション動作が止まらないため、他の処理部に対する影響が少ない。
【0032】
そのため、シミュレーションを行うプログラムの性質等を考慮し、ユーザは、制御部130がどのような制御を行うのかを設定すればよい。
【0033】
ホストコンピュータ200による制御情報の生成の詳細は、
図3等を参照して後述する。
【0034】
フィルタ部140は、設定されたフィルタリング条件を用いて、CPUシミュレーション部110から供給されたトレースデータを順次フィルタリングする。当該フィルタリング条件は、予めユーザによって設定される。フィルタリング条件の一例として、「分岐トレース情報からタスク遷移情報のみを取得する」、「アクセストレース情報から変数遷移に関する情報のみを取得する」等が挙げられる。フィルタ部140は、フィルタリングしたトレースデータ(フィルタリング条件に合致したトレースデータ)を、ホストインターフェイス150を介してホストコンピュータ200に転送する。なお、以下の記載において、フィルタ部140によるフィルタリング処理を行った後のトレースデータを、「フィルタリング結果データ」とも記載する。
【0035】
フィルタ部140は、設定されたフィルタリング条件に合致するトレースデータをすべてフィルタリング結果データとして出力する。よって、フィルタリング条件によっては、CPUシミュレーション部110が出力したトレースデータと、フィルタリング結果データと、が完全に一致する場合がある。また、フィルタリング条件によっては、フィルタリング結果データとして空データが出力される場合がある。
【0036】
ホストインターフェイス150は、ホストコンピュータ200とのデータのやり取りを行うインターフェイスである。ホストインターフェイス150は、フィルタ部140からフィルタリング結果データを受信する。ホストインターフェイス150は、受信したフィルタリング結果データをホストコンピュータ200に順次転送する。なお、ホストインターフェイス150は、例えば内部にFIFO(First In First Out)メモリを有し、トレースデータをFIFOメモリ内に適宜格納し、所定時間経過毎にFIFOメモリ内のトレースデータを転送する。
【0037】
さらに、ホストインターフェイス150は、ホストコンピュータ200からの書き込み制御情報を受信し、受信した書き込み制御情報を制御部130に供給する。
【0038】
ホストコンピュータ200は、ホストインターフェイス210と、制御部220(第2制御部)と、トレースデータ格納部230(第2格納部)と、を備える。ホストコンピュータ200は、図示しないLCD(Liquid Crystal Display)等のディスプレイ装置と接続または一体化され、マウス、キーボード等の入力装置と接続されている。ユーザは、ホストコンピュータ200の入力装置を操作することにより、フィルタリング結果データを適宜参照することができる。
【0039】
ホストインターフェイス210は、エミュレータ100とのデータやり取りのインターフェイスとなる。ホストインターフェイス210は、エミュレータ100からフィルタリング結果データを受信する。ホストインターフェイス210は、受信したフィルタリング結果データを制御部220に転送する。さらに、ホストインターフェイス210は、制御部220から制御情報を受信し、当該制御情報をエミュレータ100に転送する。
【0040】
制御部220は、ホストコンピュータ200の各種制御を行う。制御部220は、受信したフィルタリング結果データをトレースデータ格納部230に格納する。また、制御部220は、トレースデータ格納部230内のフィルタリング結果データが、ユーザにより指定された条件(トリガ条件)を満たした場合に、制御情報を生成する。制御部220は、図示しない記憶部に上述のトリガ条件を保持する。
【0041】
図3を参照して、制御部220の動作、及びトリガ条件の詳細について説明する。
図3は、CPUシミュレーション部110が出力するトレースデータ、フィルタ部140の処理、及び制御部220の動作を示す概念図である。
【0042】
CPUシミュレーション部110は、シミュレーションの実行結果として分岐トレース情報(分岐元アドレス、分岐先アドレス、分岐要因、及び関数遷移先)を出力する。フィルタ部140は、当該分岐トレース情報を予め定められたフィルタリング条件に従ってフィルタリングする。ここで、フィルタリング条件は、分岐要因が"CALLT"である全てのデータを取得するものとする。フィルタ部140は、条件に合致するデータを抽出し、ホストインターフェイス150を介して制御部220にフィルタリング結果データを送信する。
【0043】
制御部220は、トリガ条件を有している。本例では、トリガ条件は、関数遷移が"A、B、C、D、X"の順で生じた場合または"A、X"の順で生じた場合、停止制御情報を送信することが定められている。制御部220は、フィルタリング結果条件が当該トリガ条件(関数遷移が"A、B、C、D、X"の順)を満たしているため、制御情報として停止制御情報を、ホストインターフェイス210を介して制御部130に送信する。
【0044】
なお、トリガ条件は、任意の条件を設定することができる。例えば、「一定時間内に割り込み処理が5回以上発生した」、「所定の関数遷移(たとえば関数遷移(A、B、C))が複数回実行された」等の事象をトリガ条件としても良い。また、当該トリガ条件に対して、停止制御情報だけでなく、再開制御情報を関連付けてもよい。
【0045】
さらに、当該条件に、待ち時間の概念を設けても良い。例えば、トリガ条件に、「関数遷移が"A、B、C、D、X"の順で生じた場合に、"100ms"だけ待ち合わせた後に停止制御情報を送信する」という情報を設定しても良い。この場合、条件を満たした後、一定期間だけトレースメモリ120へのトレースデータの格納が確実に継続される。これにより、エラー発生前の詳細なトレースデータがトレースメモリ120に保存されると共に、エラー発生後の詳細なトレースデータがトレースメモリ120に格納される。すなわち、一定時間待ち合わせを行うことにより、所定の条件を満たした時間の前後の詳細なトレースデータをトレースメモリ120内に格納することができる。
【0046】
再び、
図1を参照して説明する。トレースデータ格納部230は、エミュレータ100から転送されたトレースデータ(すなわちフィルタリング結果データ)を格納する。トレースデータ格納部230は、エミュレータ100が現在実行中のシミュレーションに関するフィルタリング結果データが格納される。トレースデータ格納部230は、例えばデータを電子ファイル形式で保持する。ホストコンピュータ200は、エミュレータ100と比べて大容量のHDD(Hard Disc Drive)を有する。トレースデータ格納部230は、一般的に、トレースメモリ120と比べて大容量のデータを保持することができる。
【0047】
続いて、
図4を参照して、本実施の形態にかかるエミュレーションシステムの動作について説明する。
図4は、本実施の形態にかかるエミュレーションシステムの動作を示すフローチャートである。
【0048】
はじめに、エミュレータ100は、シミュレーションを行う前の各種設定を行う(S11)。そして、エミュレータ100内のCPUシミュレーション部110は、入力されたプログラムを用いて、シミュレーションを実行する(S12)。シミュレーションの実行に応じて、CPUシミュレーション部110は、随時トレースデータを制御部130及びフィルタ部140に出力する(S13)。
【0049】
制御部130は、CPUシミュレーション部110から入力されたトレースデータをトレースメモリ120に書き込む(S14)。フィルタ部140は、CPUシミュレーション部110から入力されたトレースデータに対して、フィルタリング条件に規定されたフィルタリング処理を行う(S15)。そして、フィルタ部140は、フィルタリング結果データ(フィルタ済みのデータ)をホストコンピュータ200に転送する(S16)。
【0050】
ホストコンピュータ200内の制御部220は、転送されたフィルタリング結果データをトレースデータ格納部230に格納する(S17)。これと共に、制御部220は、格納したフィルタリング結果データが、トリガ条件(制御情報を生成するか否かを決定する条件)に合致しているか否かを判定する(S18)。
【0051】
フィルタリング結果データがトリガ条件に合致していた場合、制御部220は、制御情報をエミュレータ100に対して送信する(S18)。制御情報に応じて、エミュレータ100内の制御部130は、トレースメモリ120の書き込み、またはCPUエミュレーション部110の処理、の制御を行う(S14)。
【0052】
CPUシミュレーション部110によるシミュレーション処理が終了した場合またはトレースデータの出力が終了した場合(S19:Yes)、ユーザは、トレースメモリ120からトレースデータを取得するとともに、トレースデータ格納部230からフィルタリング結果データ(フィルタ済みのトレースデータ)を取得する(S20)。
【0053】
続いて、本実施の形態にかかるエミュレーションシステムの効果について説明する。上述したように、エミュレーション装置100は、トレースデータをトレースメモリ120に格納し、ホストコンピュータ200は、トレースデータをフィルタリングしたフィルタリング結果データをトレースデータ格納部230に格納する。ユーザは、トレースデータ格納部230に格納されたデータを参照することにより、所望のデータのみを参照することができる。さらに、エラー等の所定条件を満たす事象が発生した場合に、トレースメモリ120への書き込み、またはエミュレーション装置100内のCPUシミュレーション部110の処理が制御される。これにより、トレースメモリ120の更新が制御(すなわち停止)される。トレースメモリ120の更新が停止されるため、ユーザは、エラー発生直前の詳細データをトレースメモリ120から取得して参照することができる。
【0054】
また、トレースメモリ120の更新が停止されるため、エミュレータ100が備えるトレースメモリ120が容量の大きくないリングモード形式の書き込みを行う記憶装置であっても、ユーザは、エラー発生直前の詳細データを確実に参照することができる。
【0055】
さらに、エミュレータ100は、フィルタリング結果データをホストコンピュータ200に対して送信している。すなわち、エミュレータ100は、転送するデータ量を予め削減して転送処理を行っている。そのため、エミュレータ100の転送負荷を削減することができ、送信するデータが多すぎることによるトレースデータの転送ロスを回避することができる。
【0056】
<実施の形態2>
本発明の実施の形態2にかかるエミュレーションシステムは、ホストコンピュータ200がフィルタリング結果データの比較対象となるリファレンストレースデータを保持することを特徴とする。実施の形態2にかかるエミュレーションシステムについて、実施の形態1と異なる点を中心に説明する。なお、以下の記載において、同一名称、同一符号を付し、特に説明しない処理部については、原則として実施の形態1(他の実施の形態)と同様の処理を行う(実施の形態3以降についても同様である)。
【0057】
図5は、本実施の形態にかかるエミュレーションシステムの構成を示すブロック図である。ホストコンピュータ200は、
図1に記載の構成に加えて、リファレンストレースデータ格納部240(第3格納部)を備える。
【0058】
リファレンストレースデータ格納部240は、トレースデータ格納部230内に格納されたフィルタリング結果データの比較対象となるトレースデータを格納する。好適には、リファレンストレースデータ格納部240は、以前に同一プログラム(または一部のみを修正したプログラム)を基にシミュレーションし、正常に実行が終了した際にエミュレータ100から転送されたフィルタリング結果データを格納する。リファレンストレースデータ格納部240内のフィルタリング結果データは、制御部220から適宜参照される。
【0059】
制御部220は、シミュレーション終了時に、トレースデータ格納部230から適宜フィルタリング結果データを読み出し、読み出したフィルタリング結果データをリファレンストレースデータ格納部240に転送する。制御部220は、転送後にトレースデータ格納部230をクリア(データを削除)する。なお、制御部220は、シミュレーション終了時に、自動的にリファレンストレースデータ格納部240への転送を行うのではなく、GUI(Graphical User Interface)等を介したユーザへの問い合わせを行い、問い合わせの結果に応じて転送処理を行っても良い。
【0060】
制御部220は、リファレンストレースデータ格納部240に格納されたフィルタリング結果データと、トレースデータ格納部230に格納するフィルタリング結果データと、を比較し、その比較結果に応じて制御情報を生成する。以下、
図6を参照して、制御部220による制御情報の生成の例を説明する。
【0061】
図6は、本実施の形態にかかる制御部220の処理を示す概念図である。
図6には、リファレンストレースデータ格納部240に格納されたフィルタリング結果データ、エミュレータ100から転送されたフィルタリング結果データが示されている。エミュレータ100は、フィルタリング結果データを随時転送する。
図6では、
図3と同様に、CPUシミュレーション部110は、シミュレーションの実行結果として分岐トレース情報(分岐元アドレス、分岐先アドレス、分岐要因、及び関数遷移先)を出力し、フィルタ部140は、当該分岐トレース情報のうち分岐要因が"CALLT"である全てのデータを取得する。
【0062】
制御部220は、リファレンストレースデータ格納部240に格納されたフィルタリング結果データと、トレースデータ格納部230に格納するフィルタリング結果データと、に相違点が生じた時点で、制御情報として停止制御情報を生成してエミュレータ100に送信する。ここでは、リファレンストレースデータ格納部240内に、"A、B、C、D、E、F、G"の順序で関数呼び出しが行われたことを示すデータが保持されている。
【0063】
制御部220は、トレースデータ格納部230に格納するフィルタリング結果データと、この関数呼び出しの遷移に相違があるかを検証する。制御部220は、関数遷移"A、B、C、D"までは両者が同一であると判定する。そのため、制御部220は、関数遷移先"D"が記載されたデータの入力時点までは制御情報の生成を行わない。
【0064】
関数遷移先"X"が記載されたデータを受信した場合、制御部220は、リファレンストレースデータ格納部240に格納されたデータの関数遷移とは異なることを検出する。そこで、制御部220は、この検出の時点に停止制御情報を生成する。すなわち、制御部220は、トレースメモリ120の更新が停止するように制御を行う。
【0065】
上記一連の処理により、ユーザは、正常実行時との実行結果の差が生じた直前の詳細なデータを、トレースメモリ120を参照することにより把握することができる。
【0066】
次に、
図7を参照して、リファレンストレースデータ格納部240が複数回のシミュレーションに関するフィルタリング結果データを保持している場合の制御部220の動作を説明する。
図7は、n回のシミュレーションに関するフィルタリング結果データをリファレンストレースデータ格納部240が保持している場合の制御部220の動作を示す概念図である。ここで、各シミュレーションにおいて実行されたプログラムは、完全に同一でなくても良く、デバッグ処理により多少の相違のあるプログラムであっても良い。
【0067】
制御部220は、リファレンストレースデータ格納部240に格納された全てのフィルタリング結果データと、トレースデータ格納部230に格納するフィルタリング結果データと、に相違点が生じた時点で、制御情報として停止制御情報を生成してエミュレータ100に送信する。ここでは、リファレンストレースデータ格納部240内に、"A、B、C、D、E、F、G"、または"A、B、C、D、R、F、G"の順序で関数呼び出しが行われたことを示すデータが保持されている。
【0068】
制御部220は、トレースデータ格納部230に格納するフィルタリング結果データが、リファレンストレースデータ格納部240に格納されたフィルタリング結果データのいずれとも合致しない場合を検出する。制御部220は、関数遷移"A、B、C、D"まではリファレンストレースデータ格納部240に格納されたフィルタリング結果データと同一パターンであると判定する。そのため、制御部220は、関数遷移先"D"が記載されたフィルタリング結果データの入力時点までは制御情報の生成を行わない。
【0069】
関数遷移先"X"が記載されたフィルタリング結果データを受信した場合、制御部220は、リファレンストレースデータ格納部240に格納されたフィルタリング結果データの関数遷移のいずれとも合致しないことを検出する。そこで、制御部220は、この検出の時点に停止制御情報を生成する。すなわち、制御部220は、トレースメモリ120の更新が停止するように制御を行う。
【0070】
上記一連の処理により、制御部220は、これまでのシミュレーションでは一度も実行されなかった動作が生じた場合に、トレースメモリ120の更新を停止できる。これにより、例えば発生確率の極めて低いエラーが発生した場合の詳細データをトレースメモリ120に格納することができる。
【0071】
なお、上述の説明では、制御部220は、リファレンストレースデータ格納部240に格納されていないパターンのフィルタリング結果データが検出された場合に、トレースメモリ120の更新を停止させたが必ずしもこれに限られない。制御部220は、リファレンストレースデータ格納部240に格納されているものの検出回数が非常に少ないフィルタリング結果データと同一のデータパターンが検出された場合にも、トレースメモリ120の更新を停止しても良い。
【0072】
また、制御部220は、ユーザが設定したトリガ条件によるトレースメモリ12の制御と、リファレンストレースデータ格納部240を用いた制御を組み合わせて実行しても良い。
【0073】
続いて、本実施の形態にかかるエミュレーションシステムの効果について記載する。本実施の形態にかかる制御部220は、リファレンストレースデータ格納部240に格納されたデータを用いて、制御情報の生成を行っている。これにより、ユーザは、制御部220に与えるトリガ条件を逐次設定する必要が無くなる。これにより、ユーザによる設定の手間が省けるとともに、設定ミスによるトレースメモリ120の誤制御を防止することができる。
【0074】
なお、上述の説明では、リファレンストレースデータ格納部240には、過去にシミュレーションしたフィルタリング結果データが格納されるものとして説明したが、必ずしもこれに限られない。リファレンストレースデータ格納部240には、他のエミュレーションシステムにおいて実行されたシミュレーションの結果データが格納されてもよい。
【0075】
<実施の形態3>
本実施の形態におけるエミュレーションシステムは、エラー発生時(トレースメモリ120の更新停止時)にトレースメモリ120内のデータをホストコンピュータ200に転送することを特徴とする。本実施の形態にかかるエミュレーションシステムについて、他の実施の形態と異なる点を中心に説明する。
【0076】
図8は、本実施の形態にかかるエミュレーションシステムの構成を示すブロック図である。本実施の形態にかかるエミュレーションシステムは、
図5に示すエミュレーションシステムの構成に加えて、ホストコンピュータ200内にエラートレースデータ格納部250(第4格納部)を有する。
【0077】
エラートレースデータ格納部250は、トレースメモリ120の更新が停止した時点でのトレースメモリ120内のトレースデータのコピーを格納する記憶部である。
【0078】
制御部220は、実施の形態1または実施の形態2と同様の手法でフィルタリング結果データを解析し、所定条件を満たした場合に停止制御情報を制御部130に対して送信する。
【0079】
制御部130は、停止制御情報を受信した場合、トレースメモリ120への書き込みを停止する。なお、制御部130は、上述したようにCPUシミュレーション部110によるシミュレーションの実行停止、またはトレース出力部111によるトレースデータの出力停止の制御を行ってもよい。
【0080】
制御部130は、トレースメモリ120への書き込み停止制御の後に、トレースメモリ120内のトレースデータを全て読み出す。そして、制御部130は、読み出したトレースデータを、ホストインターフェイス150を介してホストコンピュータ200に転送する。この際に、制御部130は、転送するトレースデータがトレースメモリ120の書き込み停止制御後のデータであること、すなわちエラーが生じた直後に更新が停止されたトレースデータ(エラートレースデータ)であることをホストコンピュータ200に通知する。
【0081】
ホストコンピュータ200内の制御部220は、エラートレースデータを受信し、当該データをエラートレースデータ格納部250に格納する。
【0082】
制御部130は、エラートレースデータの転送が終了した時点で、トレースメモリ120への書き込みの停止を解除する。
【0083】
続いて、本実施の形態にかかるエミュレーションシステムの効果について説明する。上述したように、エラートレースデータ格納部250は、トレースメモリ120に格納されていたトレースデータと同一のデータを保持する。すなわち、エラートレースデータ格納部250には、エラー発生直前のトレースデータが格納される。これにより、ホストコンピュータ200内に所望のフィルタリング条件を満たしたトレースデータ(トレースデータ格納部230)、及びエラー発生直前のトレースデータ(エラートレースデータ格納部250)が集約される。ユーザは、ホストコンピュータ200を操作することのみにより、これらのトレースデータの参照が可能となる。
【0084】
さらに、上述のように、エミュレータ100は、トレースメモリ120内のトレースデータをホストコンピュータ200に転送した後に、トレースメモリ120の更新を再開する(または、CPUシミュレーション部110によるシミュレーション実行の再開、またはトレース出力部111によるトレースデータ出力の再開)。これにより、シミュレーションが途中で中断したままの状態となることを防止することができる。
【0085】
さらにまた、エラートレースデータ格納部250には、所定の場合(トリガ条件を満たした場合、またはリファレンストレースデータ格納部240内には存在しないデータパターンが検出された場合)にのみトレースデータが格納される。そのため、ユーザは、エラートレースデータ格納部250内にトレースデータが存在するか否かを判定するのみで、エラーと思われる事象が生じたか否かを容易に判定することができる。
【0086】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【0087】
たとえば、上述の説明では、エミュレータ100がフィルタ部140を備えることとしたが、これに限られず、ホストコンピュータ200がフィルタ部を備えることとしてもよい。当該構成を
図9に示す。エミュレータ100は、トレース出力部111からの出力トレースデータをそのままホストコンピュータ200に送信する。ホストコンピュータ200内のフィルタ部260は、受信したトレースデータを所定のフィルタ条件に従ってフィルタリングする。その他の処理は、実施の形態1と同様である。
【0088】
エミュレータ100内の各処理部(CPUシミュレーション部110、制御部130、フィルタ部140)、及びホストコンピュータ200内の制御部220の処理は、例えば任意のコンピュータ内で動作するプログラムとして実現することが可能である。
【0089】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0090】
ホストコンピュータ200内の制御部220の処理をプログラムとして実行するコンピュータのハードウェア構成の一例を
図10に示す。当該コンピュータは、中央処理装置(CPU, Central Processing Unit)310と、メモリ320と、を含んでいる。CPU310及びメモリ320は、バスを介して補助記憶装置としてのハードディスク装置(HDD)330に接続される。このコンピュータは、典型的には、ユーザ・インターフェース・ハードウェアを備える。ユーザ・インターフェース・ハードウェアとしては、例えば、入力をするためのポインティング・デバイス(マウス、ジョイスティック等)やキーボード等の入力装置340や、視覚データをユーザに提示するための液晶ディスプレイなどの表示装置350がある。ハードディスク装置330等の記憶媒体にはオペレーティングシステムと共同してCPU310等に命令を与え、上述した制御部220の各処理を実施するためのコンピュータ・プログラムを記憶することができる。