"パイプライン構造を有する半導体集積回路用のプログラムデバッグ装置であって、複数の命令からなるプログラムの実行時間を測定するカウンタと、ブレークが発生する直前に実行された前記命令を特定する情報を保持するブレーク前情報保持手段と、前記ブレークの終了後に再実行される前記命令を特定する情報を保持する再実行開始情報保持手段と、前記ブレーク前情報保持手段及び前記再実行開始情報保持手段により保持された情報に基づいて、前記ブレークが発生していない通常時において前記直前に実行された命令と前記再実行される命令とが連続して実行される場合に要する実行時間を推定し、当該推定された実行時間に基づいて前記ブレークにより前記命令が無効にされたことに起因する誤差を補正するための補正値を生成する測定誤差演算手段と、を有するプログラムデバッグ装置。前記測定誤差演算手段は、前記通常時において前記直前に実行された命令と前記再実行される命令とが連続して実行される場合に要する第1の実行時間と、前記直前に実行された命令及び前記再実行される命令をそれぞれ単独で実行した場合に要する第2の実行時間とを算出し、前記第2の実行時間と前記第1の実行時間との差を前記補正値とする、請求項1に記載のプログラムデバッグ装置。前記カウンタは、前記実行時間の実測値から前記補正値を減算した値を最終的な前記実行時間として出力する、請求項2に記載のプログラムデバッグ装置。パイプライン構造を有する半導体集積回路用のプログラムデバッグ方法であって、複数の命令からなるプログラムの実行時間を測定するカウントステップと、ブレークが発生する直前に実行された前記命令を特定する情報を保持するブレーク前情報保持ステップと、前記ブレークの終了後に再実行される前記命令を特定する情報を保持する再実行開始情報保持ステップと、前記ブレーク前情報保持ステップ及び前記再実行開始情報保持ステップにより保持された情報に基づいて、前記ブレークが発生していない通常時において前記直前に実行された命令と前記再実行される命令とが連続して実行される場合に要する実行時間を推定し、当該推定された実行時間に基づいて前記ブレークにより前記命令が無効にされたことに起因する誤差を補正するための補正値を生成する測定誤差演算ステップと、を有するプログラムデバッグ方法。コンピュータに、請求項4に記載の方法を実行させるためのプログラム。上記パイプライン処理は、マイクロコンピュータ全体の実行効率を向上させる。しかしながら、上記高速動作が可能な装置の機能、性能の向上に伴い、マイクロコンピュータ上で動作するプログラム開発も複雑になってきている。特に、ハードウェア及びソフトウェアを含めたシステム検証は、一般的にエミュレータ等のプログラムデバッグ装置を用いた検証以降、デバッグと称すにより行われる。特に、プログラム実行とハードウェア制御との関係が強い部分の性能検証は非常に難しい。特定の条件でのプログラム実行時間が、システム全体のパフォーマンスに大きく影響してしまう場合がある。例えば、データの受信よりもプログラムの実行時間が多くかかってしまう場合には、データの受信が待たされることにより、パフォーマンスが低下する。このような問題に対処するために、通常のプログラムデバッグ装置はプログラムの実行時間を測定する機能を有している。しかしながら、通常、エミュレーション機能はマイクロコンピュータ外部で実現するものであり、正確な実行時間を得ることができないことが多い。図5は、一般的なプログラムデバッグ装置101を例示している。プログラムデバッグ装置101は、被測定プログラムの開始アドレス及び終了アドレスを設定し保持するためのアドレス設定保持部102、プログラムカウンタ103、被測定プログラムが実行中であることを検出する被測定プログラム検出部104、割込み処理が実行中であることを検出する割込み処理検出部105、基準クロック発生器106、カウンタ107、及び表示部108を有する。アドレス設定保持部102は、メンテナンスパネル111、アドレス設定回路112、アドレスレジスタA113、及びアドレスレジスタB114からなる。被測定プログラム検出部104は、比較回路A117、比較回路B118、フリップフロップ119、及びANDゲート120を有する。割込み処理検出部105は、フリップフロップ121,122,123及びNORゲート124を有する。表示部108は、表示制御回路127及びメンテナンスパネル111を有する。以下に、上記プログラムデバッグ装置101の動作を説明する。メンテナンスパネル111のスイッチ操作により、被測定プログラムの開始アドレス及び終了アドレスを設定する。これらの両アドレスは、それぞれアドレスレジスタA113及びアドレスレジスタB114に保持される。計算機が実行状態になり、プログラムカウンタ103の内容がアドレスレジスタA113の内容と一致した時、比較回路A117が信号を出力する。これにより、カウンタ107がクリアされると共にフリップフロップ119をセットされる。また、カウンタ107は、カウントイネーブルとなり、基準クロック発生器106が出力するクロックをカウントし始める。その後、プログラムカウンタ103の内容がアドレスレジスタB114の内容と一致した時、比較回路B118が信号を出力する。これにより、フリップフロップ119がリセットされると共にカウンタ107がカウントを停止する。また、カウント値が表示制御回路127に転送され、メンテナンスパネル111上に表示される。ユーザは、この表示を目視することにより、プログラムの実行時間を知ることができる。割込み処理検出部105のフリップフロップ121,122,123は、プログラムでアクセスできるものであり、割込み処理の中で開始時セットし終了時リセットするものである。その目的は、被測定プログラムが割込みにより中断されている間、カウンタ107のカウント動作を中止させることである。例えば、発生した割込みに対応する割込み処理の実行が開始すると、上記のように例えばフリップフロップ121がセットされ、NORゲート124の出力が論理0となり、カウンタ107のカウントが中止する。プログラム実行中に発生するブレークは一種の割込み処理であるため、上記構成及び動作によりブレーク中の時間を除いた実行時間を測定することが可能となる。しかしながら、多段のパイプライン構造を有するマイクロコンピュータのプログラム実行時間の測定を、上記のようなエミュレータ等を使用したプログラムデバッグ装置により測定し、ブレークが発生した場合には、測定結果に誤差が含まれるという問題がある。図6及び図7は、上記プログラムデバッグ装置101におけるパイプライン処理の流れを例示している。本例は、三段パイプライン構造の場合である。基準クロック発生器106は、パイプラインの各ステージが1クロックカウントとなるようにCPUクロックと同じ周波数で動作し、パイプライン制御により同時に複数の命令が実行される。図中nは、実行時間測定のためのクロックカウントである。命令A~Eは、nの進行に合わせて順番に実行される。各命令の実行は、パイプラインのステージ毎に行われる。すなわち、IFインストラクションフェッチステージは命令フェッチであり、IDインストラクションデコードステージにおいて命令のデコード及びアドレスの計算が行われ、MEMメモリアクセスステージにおいてデコードされた命令の実行及び対象となるアドレスへのアクセスが実行される。1命令の実行は、1クロック単位でIF→ID→MEMの順で実行される。図6は、プログラム実行時間測定時にブレークが発生しない場合のパイプライン処理の流れを例示している。命令Aは、クロックCLKがnの時にIFステージ、n1の時にIDステージ、n2の時にMEMステージを実行する。命令Bは、パイプライン処理として命令を先読みするために、CLKがn1の時にIFステージ、n2の時にIDステージ、n3の時にMEMステージを実行する。同様に命令C~Eは、パイプライン処理として命令を先読みするため、CLKを1クロックずらして命令フェッチを行う。本例においては、命令A~Eの実行に要する時間は、n~n6の7クロックとなる。図7は、プログラム実行時間測定時にブレークが発生した場合のパイプライン処理の流れを例示している。本例においては、命令Bの実行後であって命令CのIDステージ直後に、プログラムデバッグ装置によりプログラムの実行を停止させるブレークが発行されている。これにより、時間測定が停止:STOPし、エミュレータモードブレーク状態:BREAKとなり、プログラムデバッグ装置内において特定の処理が行われた後、プログラムが再実行して時間測定が再開:STARTされる。ここで、命令CはCLKのn2,n3において既にIF→IDを読み込み済であり、命令Dはn3においてIFステージを読み込み済である。しかしながら、ブレークの発行により、これらの命令C及び命令Dの読み込みは無効となる。BREAK中は、プログラムデバッグ装置の機能により実行時間の測定が停止する。プログラムの再実行はn4から開始され、実行時間の測定はSTARTから再開される。この時、ブレーク時に無効になった命令Cから再実行が開始される。そのため、命令A~Eの実行に要する時間は、n~n8の9クロックとなる。このように、プログラム実行時間の測定結果に2クロック分の誤差が生ずる。本発明の第1の態様は、パイプライン構造を有する半導体集積回路用のプログラムデバッグ装置であって、複数の命令からなるプログラムの実行時間を測定するカウンタと、ブレークが発生する直前に実行された前記命令を特定する情報を保持するブレーク前情報保持部と、前記ブレークの終了後に再実行される前記命令を特定する情報を保持する再実行開始情報保持部と、前記ブレーク前情報保持部及び前記再実行開始情報保持部により保持された情報に基づいて、前記ブレークが発生していない通常時において前記直前に実行された命令と前記再実行される命令とが連続して実行される場合に要する実行時間を推定し、当該推定された実行時間に基づいて前記ブレークにより前記命令が無効にされたことに起因する誤差を補正するための補正値を生成する測定誤差演算部とを有するものである。本発明の第2の態様は、パイプライン構造を有する半導体集積回路用のプログラムデバッグ方法であって、複数の命令からなるプログラムの実行時間を測定するカウントステップと、ブレークが発生する直前に実行された前記命令を特定する情報を保持するブレーク前情報保持ステップと、前記ブレークの終了後に再実行される前記命令を特定する情報を保持する再実行開始情報保持ステップと、前記ブレーク前情報保持ステップ及び前記再実行開始情報保持ステップにより保持された情報に基づいて、前記ブレークが発生していない通常時において前記直前に実行された命令と前記再実行される命令とが連続して実行される場合に要する実行時間を推定し、当該推定された実行時間に基づいて前記ブレークにより前記命令が無効にされたことに起因する誤差を補正するための補正値を生成する測定誤差演算ステップとを有するものである。本発明の第3の態様は、コンピュータに、上記第2の態様に記載の方法を実行させるためのプログラムである。上記態様によれば、プログラムの実行時間の測定中にブレークが発生した場合に、当該ブレークが発生する直前に実行された命令を特定する情報及び当該ブレークの終了後に再実行される命令を特定する情報に基づいて、ブレークにより幾つかの命令が無効にされたことに起因する誤差が補正される。本発明によれば、ブレークがどのようなタイミングで発生しても、自動的に適切な補正値を設定することが可能となる。これにより、ブレークが発生した場合であっても、プログラムの実行時間を正確に測定することが可能となる。実施の形態1以下、図面を参照して本発明の実施の形態について説明する。図1は、本発明の実施の形態1に係るプログラムデバッグ装置1の基本的な構成を示している。プログラムデバッグ装置1は、パイプライン構造を有する半導体集積回路のデバッグを支援するためのものであり、カウンタ2、ブレーク前情報保持部3、再実行開始情報保持部4、及び測定誤差演算部5を有する。カウンタ2は、複数の命令からなるプログラムの実行時間を測定する。ブレーク前情報保持部3は、ブレークが発生する直前に実行された命令を特定する情報を保持する。再実行開始情報保持部4は、ブレークの終了後に再実行される命令を特定する情報を保持する。測定誤差演算部5は、ブレーク前情報保持部3及び再実行開始情報保持4により保持された情報に基づいて、ブレークが発生していない通常時において上記直前に実行された命令と上記再実行される命令とが連続して実行される場合に要する実行時間を推定し、当該推定された実行時間に基づいてブレークにより命令が無効にされたことに起因する誤差を補正するための補正値を生成する。上記構成により、プログラムの実行時間の測定中にブレークが発生した場合に、当該ブレークが発生する直前に実行された命令を特定する情報及び当該ブレークの終了後に再実行される命令を特定する情報に基づいて、ブレークにより幾つかの命令が無効にされたことに起因する誤差が補正される。これにより、ブレークがどのようなタイミングで発生しても、自動的に適切な補正値を設定することが可能となり、プログラムの実行時間を正確に測定することが可能となる。図2は、上記プログラムデバッグ装置1の具体的な構成を示している。プログラムデバッグ装置1は、被測定プログラムの実行を行ない、その実行時間を測定するエミュレータ11と、プログラム作成を補助してエミュレータ11の制御を行ない、実行結果を表示するデバッガ12とを有する。エミュレータ11は、被測定プログラムの開始アドレス及び終了アドレスを保持するアドレス設定保持部21と、プログラム実行中の命令アドレスを保持するプログラムカウンタ22と、被測定プログラムが実行中であることを検出する被測定プログラム検出部23と、実行時間を測定するカウンタ2と、ブレーク処理が実行中であることを検出するブレーク処理検出部25と、時間測定のために基準となるクロックを発生する基準クロック発生器26とを有する。アドレス設定保持部21は、被測定プログラムの開始アドレスを保持するアドレスレジスタA31と、被測定プログラムの終了アドレスを保持するアドレスレジスタB32とを有する。アドレスレジスタA31は、アドレス設定部35により設定され測定開始アドレスを保持し、比較回路A36により参照される。同様に、アドレスレジスタB32は、アドレス設定部35により設定され測定終了アドレスを保持し、比較回路B37により参照される。被測定プログラム検出部23は、アドレスレジスタA31とプログラムカウンタ22との比較を行う比較回路A36と、アドレスレジスタB32とプログラムカウンタ22との比較を行う比較回路B37と、フリップフロップ38と、ANDゲート39とを有する。比較回路A36は、アドレスレジスタA31とプログラムカウンタ22とを比較し、比較結果をフリップフロップ38及びカウンタ2へ出力する。比較回路B37は、アドレスレジスタB32とプログラムカウンタ22とを比較し、比較結果をフリップフロップ38及び表示制御部42へ出力する。フリップフロップ38は、比較回路A36及び比較回路B37からの比較結果を入力とし、ANDゲート39へ計測信号43を出力する。ANDゲート39は、フリップフロップ38及びフリップフロップ46からの信号を入力とし、カウンタ2のENBL信号として出力する。ブレーク処理検出部25は、ブレーク処理の開始時にリセットされ終了時にセットされるフリップフロップ46を有する。フリップフロップ46の出力は、ブレーク信号47としてANDゲート39へ出力される。デバッガ12は、被測定プログラムの範囲設定や実行時間の測定結果を表示するユーザインターフェース49と、ユーザインターフェース49で指定された被測定プログラムの開始アドレスと終了アドレスをアドレスレジスタA31及びアドレスレジスタB32に設定するアドレス設定部35と、被測定プログラムの実行後に測定結果をユーザインターフェース49に表示させる表示制御部42と、測定結果の保存や測定結果の誤差を算出しカウンタ2のカウント値を書き換える時間測定処理部50とを有する。ユーザインターフェース49は、操作者により行われる被測定プログラムの開始アドレス及び終了アドレスの指定、表示制御部42からの入力による測定結果の表示、及び操作者により行われるカウント保存部107に保存されている測定結果の消去を行う。アドレス設定部35は、ユーザインターフェース49からのアドレス情報を入力とし、アドレスレジスタA31及びアドレスレジスタB32に対し、被測定プログラムの開始アドレス及び終了アドレスの設定を行う。表示制御部42は、カウント保存部51に保存された過去のカウント値から現在のカウント値をユーザインターフェース49に表示させる。時間測定処理部50は、カウント保存部51、ブレーク前情報保持部3、再実行開始情報保持部4、及び測定誤差演算部5を有する。カウント保存部51は、カウンタ2のカウント値と比較回路B37の比較結果とを入力とし、カウント値を保存し、表示制御部42を介してユーザインターフェース49に当該カウント値を測定結果として表示する。また、カウント保存部51は、ユーザインターフェース49から保存したカウント値のクリア指示が入力されると、保存しているカウント値をクリアする。ブレーク前情報保持部3は、ブレーク前に実行した命令とアドレスを保持する。再実行開始情報保持部4は、ブレーク後の再実行時に実行する命令とアドレスを保持する。測定誤差演算部5は、ブレーク前情報保持部3及び再実行開始情報保持部4で保持される命令及びアドレスを入力とし、ブレーク前後の命令及びアドレスからブレークにより生じる測定誤差を算出し、算出した誤差を補正値としてカウンタ2へ出力する。図3は、上記プログラムデバッグ装置1におけるプログラム実行時間測定の補正動作を示している。時間測定処理部50は、ブレーク前にプログラムの実行時間測定をしていたかを判断しS101、測定していた場合YESにはステップS102に進み、測定していなかった場合NOにはステップS107に進む。ステップS102において、最後に実行したアドレスと該アドレスの命令をブレーク前情報保持部3にブレーク前情報として保存する。次に、ブレーク後において、時間測定処理部50は、プログラムの再実行によりブレーク前のプログラムの実行時間測定を継続するか否かを判断しS103、継続して実行時間を測定する場合YESにはステップS104に進み、実行時間の測定を停止する場合NOにはステップS107に進む。ステップS104において、プログラムの再実行を開始するアドレスと該アドレスの命令を再実行開始情報保持部4に保存する。次に、ステップS105において、時間測定処理部50は、ステップS102及びステップS104でそれぞれ保存した上記最後に実行した命令及び上記再実行される命令を連続して実行するのに要するクロック数N1を、測定誤差演算部5によるシミュレーションにより算出する。また、時間測定処理部50は、ステップS102で保存した命令を単独で実行した場合に要するクロック数と、ステップS104で保存した命令を単独で実行した場合に要するクロック数との合計クロック数N2を、測定誤差演算部5によるシミュレーションにより算出する。なお、当該シミュレーションは、通常時におけるパイプラインの実行と同等の演算を行うものであることが好ましい。更に、時間測定処理部50は、ブレークにより発生した測定誤差Tを、下記式1により算出する。T=N2-N11更にまた、時間測定処理部50は、カウンタ2の現在のカウント値を、当該カウント値から上記測定誤差Tを減算したカウント値に書き換えるステップS106。その後、エミュレータ11は、被測定プログラムの実行を再開するステップS107。図4は、上記プログラムデバッグ装置1における実行時間の測定時のタイミングを例示している。同図において、プログラムの実行時間を測定するための開始停止を指示する計測信号43図2参照、プログラムデバッグ装置1の指示によるブレーク信号47、及びカウンタ2のカウント値の変化が示されている。ブレーク信号47は、ロウアクティブである。計測信号43は、測定開始でハイになり、測定停止でロウになる。カウンタ2は、測定開始からカウントを開始し、測定停止でカウントを0に戻す。本例は、任意の2つのアドレスをそれぞれアドレスレジスタA31及びアドレスレジスタB32に設定し、2つのアドレス区間を繰り返すプログラムを実行した場合を示している。カウンタ2に入力される基準クロックは、CPUクロックと同じ周波数であり、パイプラインの各ステージを実行するとカウンタ2のカウント値は1ずつ増加する。プログラム実行時間測定区間で実行される命令を、命令A~Eとする。最初に、ブレーク信号47がロウからハイに変わり、プログラムの実行をR1より開始する。プログラムが1度目の実行時間測定区間S1~E1を通過した場合、アドレスレジスタA31に保持された測定開始アドレスとプログラムカウンタ22の値が一致することにより、計測信号43がハイに変化する。この時、命令AのIFステージの実行からカウンタ14が1ずつカウントされ、測定区間の最後の命令EのMEMステージの実行完了まで7カウントを計測する。この7カウントが測定値M1となる。この時、アドレスレジスタB32に保持された測定終了アドレスとプログラムカウンタ22との値が一致することにより、計測信号43がロウに変化する。その後、プログラムが2度目の実行時間測定区間S2~E2を通過する。本例においては、当該区間においてブレークが発生する。当該ブレークは、上述した図7に示す場合と同様であり、本発明特有の構成時間測定処理部50等を有しない場合には、9カウントとなる。しかしながら、本実施の形態においては、当該区間S2~E2における最終的な測定値M2は、上記時間測定処理部50の補正動作により、区間S1~E1の場合と同様に、7カウントとなる。以下に、当該補正動作について説明する。区間S2~E2においては、ブレーク区間B2~R2でプログラムの実行を再開する直前の期間Wtにおいて、図3のフローチャートに従い誤差の補正が行われる。本例は、ブレーク後に継続してプログラム実行をさせる場合を該当するため、ステップS101の判定においてYESが選択され、ステップS102においてブレーク前に実行した命令及びアドレスがブレーク前情報保持部3に保存される。次に、プログラムを継続して実行させるため、再実行を開始するアドレス及びアドレス内の命令を再実行開始情報保持部4に保存するステップS104。次に、ステップS102及びステップS104において保存した命令及びアドレスを、測定誤差演算部5に入力し、上述のようにシミュレーションによりクロック数N1,N2を算出する。なお、当該シミュレーションを行う手段は、パイプラインの合計クロック数を求めることができる演算器であれば、特にパイプラインシミュレータでなくても良い。次に、上記式1により測定誤差Tを算出しステップS105、カウンタ2の現在のカウント値から測定誤差Tを差し引き、カウンタ2に上書き保存するステップS106。ここで、ステップS102においてブレーク前情報保持部3に保存された命令は命令Bであり、ステップS104において再実行開始情報保持部4に保存された命令は命令Cである。通常時に命令B及び命令Cを連続して実行した場合のクロック数N1は4である。また、命令Bだけを実行するのに要するクロック数は3であり、命令Cだけを実行するのに要するクロック数は3であり、これらの合計クロック数N2は6である。従って、式1により、測定誤差T=6-4=2となる。そして、ブレーク状態におけるカウント値は4であるため、この値から測定誤差T=2を差し引いた値である2を、カウンタ2の現在の値として上書きするS106。その後、ブレーク信号47がハイになり、R2よりプログラムの実行が再開するステップS107。その後、E2に到達し、アドレスレジスタB32に保持された測定終了アドレス及びプログラムカウンタ22の値が一致すると計測信号43はロウになり、最終的な測定結果として7カウント測定値M2が出力される。以上のように、本実施の形態に係るプログラムデバッグ装置1によれば、プログラムの実行時間の測定中にブレークが発生した場合に、当該ブレークが発生する直前に実行された命令を特定する情報及び当該ブレークの終了後に再実行される命令を特定する情報に基づいて、ブレークにより幾つかの命令が無効にされたことに起因する誤差が補正される。これにより、ブレークがどのようなタイミングで発生しても、自動的に適切な補正値を設定することが可能となり、プログラムの実行時間を正確に測定することが可能となる。なお、本発明は上記実施の形態に限られるものではなく、趣旨を逸脱しない範囲で適宜変更することが可能なものである。"