JP2001236247A - ソフトウェアシミュレータおよびシミュレーション処理方法 - Google Patents

ソフトウェアシミュレータおよびシミュレーション処理方法

Info

Publication number
JP2001236247A
JP2001236247A JP2000042559A JP2000042559A JP2001236247A JP 2001236247 A JP2001236247 A JP 2001236247A JP 2000042559 A JP2000042559 A JP 2000042559A JP 2000042559 A JP2000042559 A JP 2000042559A JP 2001236247 A JP2001236247 A JP 2001236247A
Authority
JP
Japan
Prior art keywords
simulation
instruction
resource information
resource
trace file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000042559A
Other languages
English (en)
Inventor
Satoshi Arie
聡 有江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Micro Systems Co Ltd
Original Assignee
Renesas Micro Systems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Micro Systems Co Ltd filed Critical Renesas Micro Systems Co Ltd
Priority to JP2000042559A priority Critical patent/JP2001236247A/ja
Publication of JP2001236247A publication Critical patent/JP2001236247A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】ソフトウェアシミュレーションを高速に実行す
る。 【解決手段】本発明のソフトウェアシミュレータ1は、
事前にターゲットプログラムを割り込み入力しない状態
で実行してその命令実行結果を事前トレースファイル8
に保持しておき、次にシミュレータでターゲットプログ
ラムのデバッグを行う際に、シミュレーション対象の命
令が、先立って実行された割り込み処理ルーチンでこの
命令に関連するリソースに書き込みが行われなかった命
令である場合には事前トレースファイル8から読み込ん
だ実行結果でシミュレーションを代替し、割り込み処理
ルーチンで関連するリソースに書き込みが行われた命令
についてのみシミュレーション実行手段11で命令の実
行を実際にシミュレーションする。実際にシミュレーシ
ョンを実行する命令数を削減できるのでシミュレーショ
ン時間を短縮できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソフトウェアシミ
ュレータおよびシミュレーション処理方法に関し、特に
ターゲットプログラムに対して割り込み処理を命令単位
またはクロック単位で効率よく実行できるソフトウェア
シミュレータおよびシミュレーション処理方法に関す
る。
【0002】
【従来の技術】マイコンシステムなどで使用されるソフ
トウェアのデバッグ作業は、ソフトウェアシミュレータ
を用いて対象マイコンのCPUの命令実行を模擬し、タ
ーゲットプログラムの命令単位で割り込みを実行しなが
ら診断し、必要に応じて修正を行うことにより進められ
る。
【0003】図12は、ソフトウェアシミュレータシス
テムの構成を示す図である。ソフトウェアシミュレータ
システムは、ソフトウェアシミュレーションを実行する
ソフトウェアシミュレータ本体121と、CRTなどで
構成され入力コマンドや実行結果を表示する表示装置1
22と、キーボード、マウスなどからなる入力装置12
3と、ターゲットプログラムを格納したCD−ROM1
24をセットして読み込みおよび書き込みを行うCD−
ROMドライブ125と、CD−ROM124からコピ
ーしたターゲットプログラムなどを格納するディスクメ
モリ126で構成されている。ターゲットプログラムの
記憶媒体としてCD−ROMの代わりに磁気ディスク、
光磁気ディスク、磁気テープなどの他の記憶媒体を用い
ることも可能である。
【0004】図13は、従来のソフトウェアシミュレー
タ本体の構成を示す図である。ソフトウェアシミュレー
タ本体121は、命令のシミュレーションを実行するシ
ミュレーション実行手段133と割り込み入力があった
場合に制御を行う割り込み制御手段134とを備えるシ
ミュレーションユニット131と、データ格納リソース
としてプログラムカウンタ(以後PCと略す)135を
含むレジスタ136とメモリ137とを備えるリソース
ユニット132とを有している。ソフトウェアシミュレ
ータは、汎用コンピュータを用いて、リソースユニット
132には汎用コンピュータのメインメモリを当て、シ
ミュレーションユニット131は、汎用コンピュータの
CPUとメモリに格納されたシミュレーション実行およ
び割り込み制御のプログラムとを使用することによって
も実現できる。
【0005】ところで、ソフトウェアシミュレータ本体
121でターゲットプログラムのシミュレーションを実
行する際には、外部から入力装置123を介して割り込
み入力を指示していた。しかし、この方法では入力タイ
ミングを整合することが必要なために、不本意ながらも
同一の命令に対して重複して割り込みが設定されてしま
うなど、割り込みを実行したい箇所で実際に割り込みを
実行することが必ずしも容易ではなかった。そのために
デバッグは非効率的な作業となり、すべての命令につい
て評価するには長い時間を要するという問題があった。
【0006】これを解決する従来例として、特開平9−
282198号公報には、すべての命令に対して均等に
割り込み処理入力の機会を設定することができるソフト
ウェアシミュレータの割り込み制御手段が開示されてい
る。図14は、この割り込み制御手段135のブロック
図である。
【0007】割り込みポイントテーブル141は、ター
ゲットプログラムのそれぞれの命令に対して命令の実行
後に割り込み処理の入力が可能(ON)か否か(OF
F)を示すテーブルであり、割り込み処理の入力が可能
(ON)か否か(OFF)は、関数単位あるいは命令単
位で設定可能である。
【0008】回数カウンタ142は、ターゲットプログ
ラムの命令実行後に割り込み処理が入力された回数を命
令毎にカウントする。それぞれの命令に対応して回数カ
ウンタ142が設けられ、それぞれのカウント値Cn
は、割り込み入力毎に割り込み許可部146によって+
1インクリメントされる。
【0009】巡回カウンタ143は、ターゲットプログ
ラムの全ての命令に対して実行後の割り込み処理が一通
り入力される毎に+1インクリメントされ、割り込み処
理の入力がターゲットプログラムに対して何巡目である
かを示すカウンタである。
【0010】比較部144は、命令の実行後に、この命
令に対応した回数カウンタ142のカウント値Cnと巡
回カウンタ143のカウント値icを比較し、比較結果
を同一条件判別部145および割り込み許可部146に
出力する。
【0011】同一条件判別部145は、すべての命令に
対するそれぞれの回数カウンタ142のカウント値Cn
が、巡回カウンタ143のカウント値ic値と同じにな
ったときに巡回カウンタ143のカウント値icを+1
インクリメントする。
【0012】割り込み許可部146は、比較部4での比
較結果がCn<icであるならばCn値を+1インクリ
メントしてその命令後の割り込みの入力を許可する。
【0013】このように構成することにより、同一の命
令に対して重複して割り込み入力が発生することを防止
し、ターゲットプログラムのなかの割り込みポイントテ
ーブルで指定されたすべての命令に対して、実行後に一
様に割り込み入力することが可能となるので、ターゲッ
トプログラムを命令毎に効率的かつ詳細に試験評価する
ことができる。
【0014】
【発明が解決しようとする課題】しかしながら、上記の
従来例では、ターゲットプログラムのなかの割り込みポ
イントテーブルで指定されたすべての命令に対して、命
令の実行後に割り込みが入力されることになるために、
すでに検証済の命令に対しても命令のシミュレーション
を実際に実行して割り込み入力がなされてしまうので、
シミュレーション時間低減において改善の余地があっ
た。
【0015】一方、第2の従来例として特開平7−44
421号公報には、前回に実行したシミュレーション結
果を登録する登録手段を設け、シミュレーション入力デ
ータが登録手段に登録された関数などと一致する場合
に、登録結果をシミュレーション結果として採用するソ
フトウェアシミュレータが開示されている。この第2の
従来例では、シミュレーションの実行を部分的に省略す
ることができるので、シミュレーション時間の低減に著
しい効果があるものの、登録されたシミュレーション結
果に関係するレジスタ名やメモリアドレスなどのリソー
ス情報の書き換えが割り込み処理によって生じた場合に
は、登録結果を使用することが誤ったリソース情報に基
づくことになり正常なシミュレーション結果ではなくな
るので、割り込みによるリソース情報変更が生じないこ
とが明白な部分にしか適用できないという問題点があっ
た。
【0016】本発明の目的は、第2の実施例の問題点を
改良し、割り込み処理によりリソース情報に変更が生じ
た場合にも正常にシミュレーションを進行して、シミュ
レーションの実行時間を大幅に低減できるるとともに、
各命令に対して片寄り無く一様に割り込み入力が可能な
第1の従来例の技術をも支障なく取り込むことのできる
ソフトウェアシミュレータおよびシミュレーション処理
方法を提供することにある。
【0017】
【課題を解決するための手段】本発明の第1の発明のソ
フトウェアシミュレータは、ターゲットプログラムの命
令のシミュレーションおよび割り込み入力の制御を実行
するシミュレーションユニットと、シミュレーションデ
ータを格納するリソースを有するリソースユニットとを
備えるソフトウェアシミュレータにおいて、ソフトウェ
アシミュレーションに先行して割り込み入力なしの状態
で前記シミュレーションユニットで実行した各命令の事
前シミュレーション結果を格納する事前トレースファイ
ルを操作する手段を有する事前トレースファイル操作ユ
ニットと、実行対象命令に先行して処理された割り込み
ルーチン内で書き込みが行われたリソースに関するリソ
ース情報を保持する割り込みルーチン内使用リソース情
報保持手段と、前記実行対象命令の実行時に前記事前ト
レースファイルから読み込まれた前記実行対象命令のリ
ソース情報と前記割り込みルーチン内使用リソース保持
手段に保持されているリソース情報とを比較対照し一致
するリソース情報があるかを判定するリソース操作ユニ
ットと、第1および第2の状態を有し前記リソース操作
ユニットが一致判定したときには前記第1の状態となる
シミュレートフラグを備え該シミュレートフラグが前記
第2の状態のときには前記実行対象命令の実行結果を前
記事前トレースファイルからの前記事前シミュレーショ
ン結果で代替し前記シミュレートフラグが前記第1の状
態のときには前記シミュレーションユニットで前記実行
対象命令のシミュレーションを実行するように前記シミ
ュレーションユニットを制御する命令実行判定手段とを
さらに備えている。
【0018】第2の発明のシミュレーション処理方法
は、ターゲットプログラムを割り込みのない状態で命令
単位でシミュレーションし事前シミュレーション結果と
して事前トレースファイルへ書き込む事前トレースファ
イル作成処理と、前記事前トレースファイルから読み込
まれた前記実行対象命令のリソース情報と前記実行対象
命令に先行して処理された割り込みルーチン内の命令で
書き込みが発生したリソースのリソース情報とを比較し
て一致するリソース情報があるときには前記実行対象命
令のシミュレーションを実行してシミュレーション結果
とし、一致するリソース情報がないときには前記事前ト
レースファイル内の前記実行対象命令に対応する前記事
前シミュレーション結果をシミュレーション結果とする
第1のステップと、割り込みの入力があったか否かを判
定する第2のステップと、前記第2のステップで割り込
みの入力が無かったと判定された場合にターゲットプロ
グラムの終了か否かを判定しターゲットプログラムの終
了であればデバッグを終了する第3のステップと、前記
第3のステップでターゲットプログラムの終了でない場
合に次の実行対象命令のアドレスを設定して前記第1の
ステップへ移る第4のステップと、前記第2のステップ
で割り込みがあったと判定された場合に割り込みルーチ
ンの命令のシミュレーションを実行してから前記第1の
ステップへ移る第5のステップとを含むターゲットプロ
グラムデバッグ処理とを有している。
【0019】第3の発明のシミュレーション処理方法
は、ソフトウェアシミュレータのシミュレーション処理
方法において、ターゲットプログラムのCPUでの処理
動作を割り込みのない状態でクロック単位でシミュレー
ションし事前シミュレーション結果として事前トレース
ファイルへ書き込む事前トレースファイル作成処理と、
前記事前トレースファイルから読み込まれた現在クロッ
ク時刻でのCPUが参照するリソース情報と前記現在ク
ロック時刻より以前に処理された割り込みルーチン内の
命令で書き込みが発生したリソースのリソース情報とを
比較して一致するリソース情報があるときには前記現在
クロック時刻でのCPUの1クロック分の動作のシミュ
レーションを実行してシミュレーション結果とし、一致
するリソース情報がないときには前記事前トレースファ
イル内の前記現在クロック時刻に対応する前記事前シミ
ュレーション結果をシミュレーション結果とする第1の
ステップと、割り込みの入力があったか否かを判定する
第2のステップと、前記第2のステップで割り込みの入
力が無かったと判定された場合にターゲットプログラム
処理の最後のクロックか否かを判定し前記最後のクロッ
クであればデバッグを終了する第3のステップと、前記
第3のステップで前記最後のクロックでない場合にクロ
ック時刻を1クロック分インクリメントして前記第1の
ステップへ移る第4のステップと、前記第2のステップ
で割り込みがあったと判定された場合に割り込みルーチ
ンのCPU動作のシミュレーションを実行してから前記
第1のステップへ移る第5のステップとを含むターゲッ
トプログラムデバッグ処理とを有している。
【0020】
【発明の実施の形態】本発明のソフトウェアシミュレー
タは、事前にターゲットプログラムを割り込み入力しな
い状態で実行してその命令実行結果を事前トレースファ
イルに保持しておき、次にシミュレータでターゲットプ
ログラムのデバッグを行う際に、シミュレーション対象
の命令が、先立って実行された割り込み処理ルーチンで
この命令に関連するリソースに書き込みが行われなかっ
た命令である場合には事前トレースファイルから読み込
んだ実行結果でシミュレーションを代替し、割り込み処
理ルーチンで関連するリソースに書き込みが行われた命
令についてのみ命令の実行を実際にシミュレーションす
るものである。
【0021】本発明のソフトウェアシミュレータの構成
とシミュレーション処理方法について、詳細に説明す
る。本発明のソフトウェアシミュレータシステムの構成
および機能は、ソフトウェアシミュレータ本体以外は図
12の従来のソフトウェアシミュレータシステムと同一
である。図1は、本発明の一実施の形態のソフトウェア
シミュレータ本体1の構成を示す図である。
【0022】ソフトウェアシミュレータ本体1は、シミ
ュレーションおよび割り込み入力の制御を行うシミュレ
ーションユニット2と、シミュレーションデータを格納
するリソースを有するリソースユニット3と、ターゲッ
トプログラムのデバッグに先行して割り込み入力なしの
状態でターゲットプログラムの各命令のシミュレーショ
ンをシミュレーションユニット2で実行した事前シミュ
レーション結果を格納する事前トレースファイル8を操
作する手段を有する事前トレースファイル操作ユニット
4と、実行対象の命令に先行して処理された割り込みル
ーチン内の命令により書き込みが行われたリソースに関
するレジスタ名またはアドレスなどのリソース情報を予
め保持する割り込みルーチン内使用リソース情報保持手
段5と、実行対象命令の実行時に事前トレースファイル
8から読み込まれた実行対象命令のリソース情報と割り
込みルーチン内使用リソース保持手段5に保持されてい
るリソース情報とを比較対照し一致するリソース情報が
あるかを判定するリソース操作ユニット6と、ONとO
FFの二つの状態を有しリソース操作ユニット6が一致
するリソース情報があると判定したときにはONとなる
シミュレートフラグ20を備え、シミュレートフラグ2
0がOFFのときには実行対象命令の実行結果を事前ト
レースファイル8からの事前シミュレーション結果で代
替し、シミュレートフラグ20がONのときにはシミュ
レーションユニット2で実際にシミュレーションを実行
するように判定してシミュレーションユニット2を制御
する命令実行判定手段7とを備えている。
【0023】シミュレーションユニット2は、図13の
従来のシミュレータ本体と同様に、命令のシミュレーシ
ョンを実際に実行するシミュレーション実行手段11
と、割り込み入力あった場合に制御を行う割り込み制御
手段12とを備えている。ここで、割り込み制御手段1
2として図14の割り込み制御手段135と同様な構成
とすることは容易であり、割り込み入力の設定が片寄り
無く一様にできる点でより好ましい。
【0024】リソースユニット3は、図13の従来のシ
ミュレータ本体と同様に、シミュレーション用のデータ
格納リソースとしてプログラムカウンタ(以後PCと略
す)13を含むレジスタ14とメモリ15とを備える。
【0025】事前トレースファイル操作ユニット4は、
事前に割り込み入力のない状態で実行した各命令の事前
シミュレーション結果を事前トレースファイル8に書き
込む事前トレースファイル書き込み手段17と、事前シ
ミュレーション結果を事前トレースファイル8から読み
込む事前トレースファイル読み込み手段16とを備えて
いる。
【0026】リソース操作ユニット6は、各命令に関係
するシミュレーション用データとデータ格納リソースと
の対応を表すリソース情報を設定するリソース情報設定
手段19と、命令の実行時に事前トレースファイル8か
ら読み込まれた対象命令のリソース情報と割り込みルー
チン内使用リソース保持手段5に保持されているリソー
ス情報とを比較対照し一致するリソース情報があるかを
判定するリソース情報比較判定手段18とを備えてい
る。
【0027】図13の従来のソフトウェアシミュレータ
本体121と同様に、ソフトウェアシミュレータ本体1
は、汎用コンピュータによっても実現できる。リソース
ユニット3および割り込みルーチン内使用リソース情報
保持手段5には汎用コンピュータのメインメモリを当
て、シミュレーションユニット2、事前トレースファイ
ル操作ユニット4、リソース操作ユニット6および命令
実行判定手段7は、汎用コンピュータのCPUとメイン
メモリに格納されたそれぞれの制御プログラムとにより
実現する。事前トレースファイル8は、外部のディスク
メモリ126に設ける。
【0028】次に、本実施の形態におけるシミュレーシ
ョン処理方法について説明する。割り込み処理を使用し
たターゲットプログラムのデバッグのためのシミュレー
ションに先行して、まず、割り込み入力のない状態でタ
ーゲットプログラムの各命令のシミュレーションを実行
し、事前トレースファイル8を作成する。図2は、事前
トレースファイルの作成フロー図である。
【0029】事前トレースファイル8の作成では、ま
ず、ステップ21で、ターゲットプログラムの命令のう
ちPC13の示すアドレスの1命令をシミュレーション
する。PCの値が示す1命令がディスクメモリからリソ
ースユニット3に移され、その命令のシミュレーション
がシミュレーションユニット2で実行される。
【0030】次に、ステップ22で、命令のシミュレー
ション結果(すなわち事前シミュレーション結果)を事
前トレースファイル8へ書き込む。事前シミュレーショ
ン結果の各データは、シミュレーションユニット2から
事前トレースファイル操作ユニット4を介して事前トレ
ースファイル8に書き込まれる。
【0031】次に、ステップ23で、シミュレーション
を実行した命令がターゲットプログラムの最後の命令で
あったか否かを判定し、最後の命令であれば事前トレー
スファイルの作成を終了する。最後の命令でなければス
テップ24に進む。
【0032】ステップ24では、PCの値を次の命令の
アドレスへ変更したのちにステップ21へ制御を移し、
事前トレースファイル8の作成を継続する。図2の処理
により、ターゲットプログラムを割り込み入力しない状
態で実行した場合のトレースファイル8が作成される。
【0033】図3は、事前トレースファイル8に書き込
まれた事前シミュレーション結果のデータ例を示す図で
ある。ターゲットプログラムのそれぞれの命令に対し
て、命令アドレス、命令コード、書き込み対象レジスタ
名、レジスタへの書き込み値、読み込み対象レジスタ
名、書き込み対象メモリアドレスアドレス、メモリへの
書き込み値、読み込み対象メモリアドレス等が、命令毎
にアドレス順に書き込まれる。
【0034】次に、ターゲットプログラムのデバッグ作
業のフローについて詳細に説明する。図4は、本実施の
形態のソフトウェアシミュレータによるターゲットプロ
グラムのデバッグのフロー図である。
【0035】デバッグを開始すると、まず、ステップ4
1で、PC13の値が示すアドレスの1命令のシミュレ
ーション結果を求める。このときに、実際にシミュレー
ションユニット2でシミュレーションを実行してシミュ
レーション結果を得るか、または事前トレースファイル
8に格納された事前シミュレーション結果のデータで代
替するかは、後に図5を参照して説明する。
【0036】次に、ステップ42で、割り込みの入力が
あったか否かを判定する。割り込みの入力が無かった場
合はステップ43へ進み、割り込みがあった場合はステ
ップ45へ進む。
【0037】ステップ43では、ターゲットプログラム
の終了か否かを判定する。ターゲットプログラムの終了
であればデバッグ処理を終了する。ターゲットプログラ
ムの終了でなければステップ44に進む。
【0038】ステップ44では、PC13の値を次の命
令のアドレスへ変更し、シミュレートフラグ20をOF
Fに設定したのちにステップ41へ制御を移し、ターゲ
ットプログラムのデバッグ処理を継続する。
【0039】割り込みが発生してステップ45に進んだ
場合には割り込みルーチンを実行してからステップ41
へ制御を移してターゲットプログラムのデバッグを継続
する。
【0040】図4のデバッグ処理は、本発明特有のステ
ップ41以外は図13の従来のシミュレータを用いての
デバッグ処理と同様であり、ステップ42〜ステップ4
5は、シミュレーションユニット2とリソースユニット
3とで実行される。
【0041】図5は、図4のステップ41の処理の詳細
なフロー図である。このフロー図では命令のシミュレー
ションを実際に実行してシミュレーション結果を得る
か、または事前トレースファイル8に格納された事前シ
ミュレーション結果のデータで代替するかを判定し実行
する。
【0042】まず、サブステップ51において、シミュ
レートフラグ20がONであるかを否か判定する。シミ
ュレートフラグ20は、命令実行判定手段7内に設けら
れ、ONの場合にはシミュレーションユニット2で命令
のシミュレーションを実際に実行し、OFFの場合には
事前トレースファイル8に格納された事前シミュレーシ
ョン結果で代替する。サブステップ51でシミュレート
フラグ20がONの場合にはサブステップ52へ進み、
OFFの場合にはサブステップ53へ進む。
【0043】サブステップ52では、シミュレートフラ
グ20がONであるので、PC13が示すアドレスの命
令に対して実際にシミュレーションを実行してステップ
41を終了する。
【0044】サブステップ53では、シミュレートフラ
グ20はOFFであるので、PC13が示すアドレスの
命令に該当する事前トレースファイル8中の事前シミュ
レーション結果データをリソース操作ユニット6に一旦
読み込む。
【0045】次に、サブステップ54で、シミュレーシ
ョンを実行するにあたって参照するアドレスがこの命令
以前に実行した割り込み処理ルーチンで変更したリソー
スであるか否かを判定する。判定はリソース情報比較判
定手段18が事前トレースファイル8から読み込んだデ
ータから得られる参照アドレスのリソース情報と割り込
みルーチン内使用リソース情報保持手段19に保持され
たりソース情報とを比較対照し、前者が後者に含まれて
いるときには、参照するリソースが割り込み処理ルーチ
ンで変更したリソースであると判定する。サブステップ
54で参照するリソースが変更したリソースであると判
定された場合にはサブステップ56へ進み、参照するリ
ソースが変更したリソースではないと判定された場合に
はサブステップ55へ進む。
【0046】サブステップ55では、事前トレースファ
イルのデータをシミュレーション結果として代替し、命
令の実行に関係するリソースの設定を行ってステップ4
1を終了する。
【0047】サブステップ56では、シミュレートフラ
グ20をONにしてからサブステップ52へ制御を移
す。ここで、シミュレートフラグ20をONにするの
は、参照するリソースがこの命令以前に実行された割り
込みルーチンで書き換えられているので、シミュレーシ
ョン結果を事前トレースファイルに格納してある事前シ
ミュレーション結果で代替することができないからであ
る。
【0048】図6は、図4のステップ45の割り込みル
ーチン実行の詳細なフロー図である。割り込みルーチン
内の命令のシミュレーションは、すべてシミュレーショ
ンユニット2で実際に実行する。
【0049】割り込み入力により割り込みルーチンが起
動されると、まず、サブステップ61においてPC13
の示すアドレスの命令についてシミュレーションを実行
する。
【0050】次に、サブステップ62で、命令のシミュ
レーション実行により書き込みが発生する対象となった
リソースについてのリソース情報を割り込みルーチン内
使用リソース情報保持手段5に格納し保持する。
【0051】次に、サブステップ63で、実行した命令
が割り込みルーチンの最後の命令であったか否かを判定
する。最後の命令であった場合にはサブステップ65へ
進み、最後の命令でなかった場合にはサブステップ64
に進む。
【0052】サブステップ64では、PCの値を次の命
令のアドレスに変更した後にサブステップ61に移り、
割り込み処理を継続する。
【0053】サブステップ65では、割り込み処理が終
了したとみなして図4のターゲットプログラムのデバッ
グフローのステップ41へ制御を移す。
【0054】以上説明した本実施の形態のソフトウェア
シミュレータを用いることにより、ターゲットプログラ
ムのデバッグにおいて、以下の(1)、(2)、(3)
の範囲では、ターゲットプログラムの命令のシミュレー
ションを実際には実行しないで、事前トレースファイル
に格納された事前シミュレーション結果を読み込むこと
で代替することができるので、シミュレーション速度の
著しい向上が得られる。 (1)ターゲットプログラム起動開始から最初の割り込
み入力が発生するまでの範囲。 (2)ターゲットプログラム中で参照するリソースが既
に実行された割り込みルーチンにより変更されていない
場合には、割り込み処理ルーチンからターゲットプログ
ラム本体へ制御が移った箇所から次の割り込み入力が発
生するまでのすべての範囲。 (3)ターゲットプログラム中で参照するリソースが既
に実行された割り込みルーチンにより変更されている場
合には、割り込み処理ルーチンからターゲットプログラ
ム本体へ制御が移った箇所から、変更されたリソースを
参照する命令が現れる箇所までの範囲。
【0055】次に、本発明の第2の実施の形態について
図面を参照して詳細に説明する。第1の実施の形態が命
令単位で割り込み処理を行うものであるのに対して、第
2の実施の形態ではクロック単位で割り込み処理の入力
を行うものである。ソフトウェアシミュレータ本体の構
成としては、第1の実施の形態の構成の図1と同様であ
るが、シミュレーションユニット2がターゲットプログ
ラムを実行するCPUの動作のシミュレーションをクロ
ック単位で行う。本実施の形態においても、割り込み制
御手段として図14の割り込み制御手段135の回数カ
ウンタ、巡回カウンタでのカウント対象を命令からクロ
ックに変更して利用することは容易であり、一様に割り
込みを設定できる点でより好ましい。
【0056】図7は、第2の実施の形態における事前ト
レースファイルの作成フロー図であり、第1の実施の形
態の図2に対応する。
【0057】ステップ71で、ターゲットプログラムの
CPUでの処理動作のシミュレーションを現在のクロッ
ク時刻である現在クロック時刻におけるCPU動作1ク
ロック分だけシミュレーションする。次に、ステップ7
2で、そのシミュレーション結果(すなわち事前シミュ
レーション結果)を事前トレースファイル8へ書き込
む。次に、ステップ23で、クロックがターゲットプロ
グラム処理の最後のクロックであったか否かを判定し、
最後のクロックであれば事前トレースファイルの作成を
終了する。最後のクロックでなければステップ74に進
み、クロック時刻を1クロック分インクリメントしてか
らステップ71へ制御を移し、事前トレースファイル8
の作成を継続する。
【0058】図8は、第2の実施の形態の事前トレース
ファイル8に書き込まれた事前シミュレーション結果の
データ例を示す図である。ターゲットプログラムのそれ
ぞれのクロック時刻に対応して、命令アドレス、書き込
み対象レジスタ名、レジスタへの書き込み値、読み込み
対象レジスタ名、書き込み対象メモリアドレスアドレ
ス、メモリへの書き込み値、読み込み対象メモリアドレ
ス等が書き込まれる。
【0059】図9は、第2の実施の形態によるターゲッ
トプログラムのデバッグのフロー図であり、第1の実施
の形態の図4に対応する。
【0060】ステップ91では、ターゲットプログラム
の現在クロック時間におけるCPU動作1クロック分の
シミュレーション結果を求める。次に、ステップ92
で、割り込みの入力があったか否かを判定する。割り込
みの入力があった場合はステップ95に進み割り込みル
ーチンを実行した後にステップ91に戻る。
【0061】ステップ92で割り込みがなかった場合に
は、ステップ93でターゲットプログラムのデバッグ処
理の最後のクロックであったか否かを判定する。ターゲ
ットプログラムのデバッグ処理の最後のクロックであれ
ばデバッグ処理を終了し、最後のクロックでなければス
テップ94に進み、クロック時刻を1クロック分だけイ
ンクリメントし、シミュレートフラグ20をOFFにし
てステップ91へ制御を移し、ターゲットプログラムの
デバッグ処理を継続する。
【0062】図10は、図9のステップ91の処理の詳
細なフロー図であり、第1の実施の形態の図5に対応す
る。
【0063】まず、サブステップ101において、シミ
ュレートフラグ20がONであるかを否か判定する。シ
ミュレートフラグ20がONの場合にはサブステップ1
02へ進み、OFFの場合にはサブステップ103へ進
む。サブステップ102に進む場合には、現在クロック
時刻におけるCPU動作を1クロック分だけ実際にシミ
ュレーションを実行して処理を終了する。
【0064】サブステップ103に進む場合には、現在
クロック時刻に該当する事前トレースファイルを読み込
み、サブステップ104で、シミュレーションを実行す
るにあたって参照するリソースが現在クロック時刻以前
に実行した割り込み処理ルーチンで変更したリソースで
あるか否かを判定する。参照するリソースが変更したリ
ソースであると判定された場合には、サブステップ10
6へ進みシミュレートフラグ20をONに設定してサブ
ステップ102へ制御を移す。
【0065】参照するリソースが変更したリソースでは
ないと判定された場合には、サブステップ105に進
み、事前トレースファイルのデータをシミュレーション
結果として代替し、関係するリソースの設定を行って処
理を終了して図9のステップ92へ制御を移す。
【0066】図11は、図9のステップ95の割り込み
ルーチン実行の詳細なフロー図であり、第1の実施の形
態の図4に対応する。
【0067】まず、サブステップ111において現在ク
ロック時刻におけるCPU動作の1クロック分だけシミ
ュレーションを実行する。次に、サブステップ112
で、シミュレーション処理により書き込みが発生する対
象となったリソースについてのリソース情報を保持す
る。次に、サブステップ113で、割り込みルーチンの
最後のクロックであったか否かを判定する。割り込みル
ーチンの最後のクロックであった場合にはサブステップ
115へ進み、図9のターゲットプログラムデバッグフ
ローのステップ91に制御を移す。最後のクロックでな
かった場合にはサブステップ114に進みクロック時刻
を1クロック分インクリメントしてからサブステップ1
11に制御を移して割り込み処理を継続する。
【0068】第2の実施の形態においても、第1の実施
形態と同様に事前トレースファイルに格納された事前シ
ミュレーション結果の読み込みによりシミュレーション
の実行を代替することができるので、クロック単位のシ
ミュレーションの大幅な速度向上が可能となる。
【0069】
【発明の効果】以上説明したように、本発明の第1の実
施の形態のソフトウェアシミュレータを用いることによ
り、ターゲットプログラムの命令単位のデバッグにおい
て、以下の(1)、(2)、(3)の範囲では、ターゲ
ットプログラムの命令のシミュレーションを実際には実
行しないで、事前トレースファイルに格納された事前シ
ミュレーション結果を読み込むことで代替することがで
きるので、シミュレーション速度の著しい向上が得られ
る。 (1)ターゲットプログラム起動開始から最初の割り込
み入力が発生するまでの範囲。 (2)ターゲットプログラム中で参照するリソースが既
に実行された割り込みルーチンにより変更されていない
場合には、割り込み処理ルーチンからターゲットプログ
ラム本体へ制御が移った箇所から次の割り込み入力が発
生するまでのすべての範囲。 (3)ターゲットプログラム中で参照するリソースが既
に実行された割り込みルーチンにより変更されている場
合には、割り込み処理ルーチンからターゲットプログラ
ム本体へ制御が移った箇所から、変更されたリソースを
参照する命令が現れる箇所までの範囲。
【0070】また、第2の実施の形態のソフトウェアシ
ミュレータを用いることにより、クロック単位でのクロ
ック時刻毎のデバッグにおいて、第1の実施の形態と同
様に上記(1)〜(3)の範囲で事前トレースファイル
に格納された事前シミュレーション結果の読み込みによ
りシミュレーションの実行を代替するので、シミュレー
ション速度の著しい向上が得られる。
【0071】いずれの実施の形態においても割り込み制
御手段に第1の従来例の技術を容易に適用できるので、
各命令または各クロックに対して片寄り無く一様に割り
込み入力を設定することが可能となる。
【図面の簡単な説明】
【図1】本発明のソフトウェアシミュレータ本体の構成
を示す図である。
【図2】本発明の第1の実施の形態における事前トレー
スファイルの作成フロー図である。
【図3】事前トレースファイルに書き込まれた事前シミ
ュレーション結果のデータ例を示す図である。
【図4】第1の実施の形態のソフトウェアシミュレータ
によるターゲットプログラムのデバッグのフロー図であ
る。
【図5】図4のステップ41の処理の詳細なフロー図で
ある。
【図6】図4のステップ45の割り込みルーチン実行の
詳細なフロー図である。
【図7】本発明の第2の実施の形態における事前トレー
スファイルの作成フロー図である。
【図8】事前トレースファイルに書き込まれた事前シミ
ュレーション結果のデータ例を示す図である。
【図9】第2の実施の形態のソフトウェアシミュレータ
によるターゲットプログラムのデバッグのフロー図であ
る。
【図10】図9のステップ91の処理の詳細なフロー図
である。
【図11】図9のステップ95の割り込みルーチン実行
の詳細なフロー図である。
【図12】ソフトウェアシミュレータシステムの構成を
示す図である。
【図13】従来のソフトウェアシミュレータ本体の構成
を示す図である。
【図14】割り込み制御手段のブロック図である。
【符号の説明】
1,121 ソフトウェアシミュレータ本体 2,131 シミュレーションユニット 3,132 リソースユニット 4 事前トレースファイル操作ユニット 5 割り込みルーチン内使用リソース情報保持手段 6 リソース操作ユニット 7 命令実行判定手段 8 事前トレースファイル 11,133 シミュレーション実行手段 12,134 割り込み制御手段 13,135 プログラムカウンタ(PC) 14,136 レジスタ 15,137 メモリ 16 事前トレースファイル読み込み手段 17 事前トレースファイル書き込み手段 18 リソース情報比較判定手段 19 リソース情報設定手段 20 シミュレートフラグ 122 表示装置 123 入力装置 124 CD−ROM 125 CD−ROMドライブ 126 ディスクメモリ 141 割り込みポイントテーブル 142 回数カウンタ 143 巡回カウンタ 144 比較部 145 同一条件判別部 146 割り込み許可部

Claims (7)

    【特許請求の範囲】 【発明の特徴】
  1. 【請求項1】 ターゲットプログラムの命令のシミュレ
    ーションおよび割り込み入力の制御を実行するシミュレ
    ーションユニットと、シミュレーションデータを格納す
    るリソースを有するリソースユニットとを備えるソフト
    ウェアシミュレータにおいて、 ソフトウェアシミュレーションに先行して割り込み入力
    なしの状態で前記シミュレーションユニットで実行した
    各命令の事前シミュレーション結果を格納する事前トレ
    ースファイルを操作する手段を有する事前トレースファ
    イル操作ユニットと、 実行対象命令に先行して処理された割り込みルーチン内
    で書き込みが行われたリソースに関するリソース情報を
    保持する割り込みルーチン内使用リソース情報保持手段
    と、 前記実行対象命令の実行時に前記事前トレースファイル
    から読み込まれた前記実行対象命令のリソース情報と前
    記割り込みルーチン内使用リソース保持手段に保持され
    ているリソース情報とを比較対照し一致するリソース情
    報があるかを判定するリソース操作ユニットと、 第1および第2の状態を有し前記リソース操作ユニット
    が一致するリソース情報あり判定したときには前記第1
    の状態となるシミュレートフラグを備え該シミュレート
    フラグが前記第2の状態のときには前記実行対象命令の
    実行結果を前記事前トレースファイルからの前記事前シ
    ミュレーション結果で代替し前記シミュレートフラグが
    前記第1の状態のときには前記シミュレーションユニッ
    トで前記実行対象命令のシミュレーションを実行するよ
    うに前記シミュレーションユニットを制御する命令実行
    判定手段とをさらに備えることを特徴とするソフトウェ
    アシミュレータ。
  2. 【請求項2】 前記事前トレースファイル操作ユニット
    が、事前に割り込み入力のない状態で実行した各命令の
    事前シミュレーション結果を事前トレースファイルに書
    き込む事前トレースファイル書き込み手段と、 前記事前シミュレーション結果を事前トレースファイル
    から読み込む事前トレースファイル読み込み手段とを備
    える請求項1記載のソフトウェアシミュレータ。
  3. 【請求項3】 前記リソース操作ユニットが、各命令に
    関係するシミュレーション用データとデータ格納リソー
    スとの対応を表すリソース情報を設定するリソース情報
    設定手段と、 実行対象命令の実行時に事前トレースファイルから読み
    込まれた実行対象命令のリソース情報と割り込みルーチ
    ン内使用リソース保持手段に保持されているリソース情
    報とを比較対照し一致を判定するリソース情報比較判定
    手段とを備える請求項1記載のソフトウェアシミュレー
    タ。
  4. 【請求項4】 ソフトウェアシミュレータのシミュレー
    ション処理方法において、 ターゲットプログラムを割り込みのない状態で命令単位
    でシミュレーションし事前シミュレーション結果として
    事前トレースファイルへ書き込む事前トレースファイル
    作成処理と、 前記事前トレースファイルから読み込まれた前記実行対
    象命令のリソース情報と前記実行対象命令に先行して処
    理された割り込みルーチン内の命令で書き込みが発生し
    たリソースのリソース情報とを比較して一致するリソー
    ス情報があるときには前記実行対象命令のシミュレーシ
    ョンを実行してシミュレーション結果とし、一致するリ
    ソース情報がないときには前記事前トレースファイル内
    の前記実行対象命令に対応する前記事前シミュレーショ
    ン結果をシミュレーション結果とする第1のステップ
    と、 割り込みの入力があったか否かを判定する第2のステッ
    プと、 前記第2のステップで割り込みの入力が無かったと判定
    された場合にターゲットプログラムの終了か否かを判定
    しターゲットプログラムの終了であればデバッグを終了
    する第3のステップと、 前記第3のステップでターゲットプログラムの終了でな
    い場合に次の実行対象命令のアドレスを設定して前記第
    1のステップへ移る第4のステップと、 前記第2のステップで割り込みがあったと判定された場
    合に割り込みルーチンの命令のシミュレーションを実行
    してから前記第1のステップへ移る第5のステップとを
    含むターゲットプログラムデバッグ処理とを有すること
    を特徴とするシミュレーション処理方法。
  5. 【請求項5】 前記第1のステップが、第1および第2
    の状態の二つの状態を有するシミュレートフラグが第1
    の状態であるか第2の状態であるかを判定する第1のサ
    ブステップと、 前記第1のサブステップでシミュレートフラグが第1の
    状態と判定されたときに実行対象命令に対してシミュレ
    ーションを実行することによりシミュレーション結果を
    求めリソースの設定を行って前記第1のステップを終了
    する第2のサブステップと、 前記第1のサブステップでシミュレートフラグが第2の
    状態と判定されたときに前記事前トレースファイル内の
    前記実行対象命令に対応するリソース情報を読み込む第
    3のサブステップと、 前記事前トレースファイルから読み込まれた前記実行対
    象命令のリソース情報と前記実行対象命令に先行して処
    理された割り込みルーチン内の命令で書き込みが発生し
    たリソースのリソース情報とを比較して一致するリソー
    ス情報があるかを判定する第4のサブステップと、 前記第4のサブステップで一致するリソース情報がない
    と判定されたときに事前トレースファイルの実行対象命
    令の事前シミュレーション結果をシミュレーション結果
    として代替し命令の実行に関係するリソースの設定を行
    って前記第1のステップを終了する第5のサブステップ
    と 前記第4のサブステップで一致するリソース情報がある
    と判定されたときにシミュレートフラグを第1の状態に
    してから前記第2のサブステップへ移る第6のサブステ
    ップとを有する請求項4記載のシミュレーション処理方
    法。
  6. 【請求項6】 ソフトウェアシミュレータのシミュレー
    ション処理方法において、 ターゲットプログラムのCPUでの処理動作を割り込み
    のない状態でクロック単位でシミュレーションし事前シ
    ミュレーション結果として事前トレースファイルへ書き
    込む事前トレースファイル作成処理と、 前記事前トレースファイルから読み込まれた現在クロッ
    ク時刻でのCPUが参照するリソース情報と前記現在ク
    ロック時刻より以前に処理された割り込みルーチン内の
    命令で書き込みが発生したリソースのリソース情報とを
    比較して一致するリソース情報があるときには前記現在
    クロック時刻でのCPUの1クロック分の動作のシミュ
    レーションを実行してシミュレーション結果とし、一致
    するリソース情報がないときには前記事前トレースファ
    イル内の前記現在クロック時刻に対応する前記事前シミ
    ュレーション結果をシミュレーション結果とする第1の
    ステップと、 割り込みの入力があったか否かを判定する第2のステッ
    プと、 前記第2のステップで割り込みの入力が無かったと判定
    された場合にターゲットプログラム処理の最後のクロッ
    クか否かを判定し前記最後のクロックであればデバッグ
    を終了する第3のステップと、 前記第3のステップで前記最後のクロックでない場合に
    クロック時刻を1クロック分インクリメントして前記第
    1のステップへ移る第4のステップと、 前記第2のステップで割り込みがあったと判定された場
    合に割り込みルーチンのCPU動作のシミュレーション
    を実行してから前記第1のステップへ移る第5のステッ
    プとを含むターゲットプログラムデバッグ処理とを有す
    ることを特徴とするシミュレーション処理方法。
  7. 【請求項7】 前記第1のステップが、第1および第2
    の状態の二つの状態を有するシミュレートフラグが第1
    の状態であるか第2の状態であるかを判定する第1のサ
    ブステップと、 前記第1のサブステップでシミュレートフラグが第1の
    状態と判定されたときに現在クロック時刻のCPU動作
    のシミュレーションを実行することによりシミュレーシ
    ョン結果を求めリソースの設定を行って前記第1のステ
    ップを終了する第2のサブステップと、 前記第1のサブステップでシミュレートフラグが第2の
    状態と判定されたときに前記事前トレースファイル内の
    現在クロック時刻に対応するリソース情報を読み込む第
    3のサブステップと、 前記事前トレースファイルから読み込まれた現在クロッ
    ク時刻のリソース情報と現在クロック時刻以前に処理さ
    れた割り込みルーチン内の命令で書き込みが発生したリ
    ソースのリソース情報とを比較して一致するリソース情
    報があるかを判定する第4のサブステップと、 前記第4のサブステップで一致するリソース情報がない
    と判定されたときに事前トレースファイルの現在クロッ
    ク時刻のCPU動作の事前シミュレーション結果をシミ
    ュレーション結果として代替し命令の実行に関係するリ
    ソースの設定を行って前記第1のステップを終了する第
    5のサブステップと前記第4のサブステップで一致する
    リソース情報があると判定されたときにシミュレートフ
    ラグを第1の状態にしてから前記第2のサブステップへ
    移る第6のサブステップとを有する請求項6記載のシミ
    ュレーション処理方法。
JP2000042559A 2000-02-21 2000-02-21 ソフトウェアシミュレータおよびシミュレーション処理方法 Withdrawn JP2001236247A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000042559A JP2001236247A (ja) 2000-02-21 2000-02-21 ソフトウェアシミュレータおよびシミュレーション処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000042559A JP2001236247A (ja) 2000-02-21 2000-02-21 ソフトウェアシミュレータおよびシミュレーション処理方法

Publications (1)

Publication Number Publication Date
JP2001236247A true JP2001236247A (ja) 2001-08-31

Family

ID=18565617

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000042559A Withdrawn JP2001236247A (ja) 2000-02-21 2000-02-21 ソフトウェアシミュレータおよびシミュレーション処理方法

Country Status (1)

Country Link
JP (1) JP2001236247A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113486077A (zh) * 2021-06-11 2021-10-08 北京空间飞行器总体设计部 使用实时数据库处理航天器电源系统测试数据的方法
CN114237767A (zh) * 2022-02-24 2022-03-25 西安羚控电子科技有限公司 一种实现多倍速仿真的系统及方法
CN114625108A (zh) * 2022-03-21 2022-06-14 北京经纬恒润科技股份有限公司 一种仿真测试方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113486077A (zh) * 2021-06-11 2021-10-08 北京空间飞行器总体设计部 使用实时数据库处理航天器电源系统测试数据的方法
CN113486077B (zh) * 2021-06-11 2023-08-22 北京空间飞行器总体设计部 使用实时数据库处理航天器电源系统测试数据的方法
CN114237767A (zh) * 2022-02-24 2022-03-25 西安羚控电子科技有限公司 一种实现多倍速仿真的系统及方法
CN114625108A (zh) * 2022-03-21 2022-06-14 北京经纬恒润科技股份有限公司 一种仿真测试方法及装置
CN114625108B (zh) * 2022-03-21 2024-01-30 北京经纬恒润科技股份有限公司 一种仿真测试方法及装置

Similar Documents

Publication Publication Date Title
US6732060B1 (en) System and method for an interface invariant test case
US7266791B2 (en) High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium
US20020072889A1 (en) Efficient array tracing in a logic simulator machine
JP2001236247A (ja) ソフトウェアシミュレータおよびシミュレーション処理方法
CN111813702B (zh) 调试系统、调试方法、设备及计算机可读存储介质
US10445218B2 (en) Execution of graphic workloads on a simulated hardware environment
US5963725A (en) Simulation system and method for microcomputer program
US6829572B2 (en) Method and system for efficiently overriding array net values in a logic simulator machine
JP3214459B2 (ja) シミュレーション方法及び装置
JP2005353020A (ja) コンピュータプログラムのシミュレーション方式
JPH07253909A (ja) マイクロプログラム検証方法
JP2533489B2 (ja) シミユレ−シヨン方式
JP3745968B2 (ja) 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体
JPS6349851A (ja) シミユレ−シヨンシステム
JP2513142B2 (ja) プログラムのシミュレ―タ装置
JPH07219980A (ja) テスト実行方式
JP2990159B1 (ja) デバッガにおけるイベントの管理装置および方法
JP3391688B2 (ja) スーパースカラ動作の検証方法
JP2001256079A (ja) ソフトウェアのデバッグ方法および論理回路のデバッグ方法
JP2632964B2 (ja) 諭理装置の試験処理方式
JPH0367340A (ja) シミュレータ
JPH06318161A (ja) シミュレーションシステムにおける交換機プログラム評価方法
JPS61239345A (ja) I/oシミユレ−タ
JPH0576660B2 (ja)
JPH02294864A (ja) マルチプロセッサシステムシミュレーション方式

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070501