(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサのエミュレーションの実行の途中で割り込みが発生した場合該割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために、前記エミュレーションを中断した時点のレジスタの値、プログラムカウンタ（ＰＣ）の値およびメモリデータをシミュレータに転送し、前記シミュレータを用いて先行して処理を予測するためにシミュレーションを行うマイクロプロセッサのエミュレーション方法。
【請求項２】
エミュレーションを中断した後のシミュレーション実行時のプログラムカウンタ（ＰＣ）の値の遷移履歴を記憶し、前記シミュレーションが終了した後に前記エミュレーションを中断した時点から再開し、記憶済みの前記ＰＣの値とエミュレーション実行時のＰＣの値とを順次比較し、それらのＰＣの値が不一致であるならばその旨を通知することを特徴とする請求項１記載のマイクロプロセッサのエミュレーション方法。
【請求項３】
シミュレータが不定動作の発生を検知したならばその旨を通知して後続処理のエミュレーションを中止し、他方、前記シミュレータが不定動作の発生を検知しなかったならば、前記シミュレータのシミュレーションの後に後続処理のエミュレーションを割り込み発生による中断が生じるまで継続して実行することを特徴とする請求項１または請求項２記載のマイクロプロセッサのエミュレーション方法。
【請求項４】
マイクロプロセッサの所定の処理のエミュレーションに先行して処理を予測するべく前記所定の処理をシミュレートするためのシミュレータと、エミュレーションの実行の途中で割り込みが発生した際に該割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために前記シミュレータを起動するシミュレータ起動手段と、前記エミュレーションを中断した時点のレジスタの値、プログラムカウンタ（ＰＣ）の値およびメモリデータを前記シミュレータに転送する転送手段とを備えたエミュレータ装置。
【請求項５】
シミュレータにおけるシミュレーション実行時のプログラムカウンタ（ＰＣ）の値の遷移履歴を記憶するための記憶手段と、前記シミュレーションが終了した後に再開された後続処理のエミュレーションを実行する時のＰＣの値と前記記憶手段に記憶されたＰＣの値とを順次比較し、それらのＰＣの値が不一致であるならばその旨を通知するＰＣ値比較手段とを備えたことを特徴とする請求項４記載のエミュレータ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、マイクロプロセッサのプログラム開発の際プログラムの検証やデバッグをするために使用するマイクロプロセッサのエミュレーション方法およびエミュレータ装置に関するものである。
【０００２】
【従来の技術】
図７はマイクロプロセッサのプログラムが割り込み処理を含む場合の、従来のマイクロプロセッサのエミュレーション方法およびエミュレータ装置によるエミュレーション実行の流れと、従来のシミュレータによるシミュレーション実行の流れを示す説明図である。
【０００３】
従来のマイクロプロセッサのプログラム開発においては、プログラムの検証やデバッグ作業の際、このようなエミュレータ装置やシミュレータを必要に応じて使い分けている。従来のエミュレータ装置は、ターゲットシステムに実チップを組み込んだ状態で動作させてエミュレーションを実行し、その動作状態を再現しながらプログラムの検証やデバッグ作業を進めることができるのに対して、従来のシミュレータは、ホスト計算機上などでターゲットであるマイクロプロセッサの動作をソフトウェア（ターゲットプログラム）で模擬して、そのターゲットプログラムの評価を行うように構成されている。すなわち、シミュレータでは、チップの動作およびその周辺の状態をターゲットプログラムでシミュレーションすることによって擬似的に実現しているため、実際のターゲットシステム上で発生する割り込み処理によって生じるターゲットシステムの状態の変化がターゲットプログラムに何らかの変化を与えることはなかった。つまり、従来のエミュレータ装置がターゲットシステムと物理的に接点を有しているのに対し、従来のシミュレータはターゲットシステムとは物理的な接点を有してはいなかった。
【０００４】
従って、図７に示すように、シミュレータでのプログラム実行では、実際のターゲットシステムで発生する割り込み処理を経由した状態を忠実にシミュレーションによって作り出すのは困難であり、プログラムの割り込み処理の発生しないケースの検証やデバッグ作業しかできず、従来、割り込み処理を含めた状態での検証やデバッグ作業はエミュレータ装置を用いて実行していた。
【０００５】
図８はシングルチップマイクロプロセッサのための従来のエミュレータ装置の一例の構成を示すブロック図である。図において、１はターゲットマイクロプロセッサの機能を代行するかまたはターゲットマイクロプロセッサであるエミュレーション用のエミュレーションＣＰＵ、２はエミュレーションＣＰＵ１で実行されデバッグすべきプログラムが格納されるエミュレーションメモリ、３はエミュレーションメモリ２をエミュレーションＣＰＵバス４側に接続するかまたはコントロールＣＰＵバス５側に接続するバス切り替え回路、６はエミュレーションを実行するとともに各種デバッグ機能を備えたエミュレーションコントローラ、７はエミュレーションコントローラ６をコントロールＣＰＵバス５に接続し、エミュレーションコントローラ６と他のユニットとの間の通信を司るエミュレーションコントローラ通信回路、８はバス切り替え回路３等のユニットを制御するためのコントロールＣＰＵである。
【０００６】
次に動作について説明する。
図８に示したように、エミュレーションＣＰＵバス４とコントロールＣＰＵバス５との間にはバス切り替え回路３を経由してエミュレーションメモリ２が接続されている。エミュレーションを実行する際に、まず、コントロールＣＰＵ８がバス切り替え回路３を制御しエミュレーションメモリ２をコントロールＣＰＵバス５側に接続を切り替える。そして、エミュレーションコントローラ６がデバッグするプログラムをコントロールＣＰＵバス５を介してエミュレーションメモリ２に転送する。その後、コントロールＣＰＵ８はエミュレーションメモリ２をエミュレーションＣＰＵバス４側に接続すべくバス切り替え回路３を制御する。さらに、エミュレーションコントローラ６はエミュレーションＣＰＵ１を動作させ、ターゲットマイクロプロセッサの機能をエミュレートする。
【０００７】
ところで、マイクロプロセッサの中には、チップ面積の制限や実行速度確保のために動作チェック処理用の回路を持っておらず、チップ動作仕様にあえて不定動作を含めるものがある。このような不定動作に陥る処理をプログラム中に含めてしまっていた場合、これをエミュレータ装置で実行するとエミュレータ装置でも当然に不定動作となり、中には実行不能に陥りデバッグ作業が続行できなくなる場合がある。他方、実チップを使用して動作を実現しているのではないシミュレータでは、このようなプログラムを実行する場合、チップの持つ不定動作に対してのエラーチェック機能を付加しておくことも可能であるので、もしメインプログラム中に不定動作を起こす不具合があるならば、シミュレータ上でプログラム実行を行うことにより不定動作に陥る処理の検出やデバッグを行うことは可能である。
【０００８】
【発明が解決しようとする課題】
従来のマイクロプロセッサのエミュレーション方法およびエミュレータ装置は以上のように構成されているので、マイクロプロセッサの割り込み処理を含むプログラムをエミュレーションすることは可能ではあるが、不定動作に陥る処理をプログラム中に含めてしまっていた場合、実行不能に陥りデバッグ作業が続行できなくなるという課題があった。
【０００９】
一方、従来のシミュレータを用いれば、メインプログラム中の不定動作に陥る処理の検出やデバッグを行うことは可能であったが、割り込み処理を含むプログラムをそのままシミュレーションすることは不可能であり、その割り込み処理がマイクロプロセッサの不定動作を誘発する原因となる不具合を含むような場合、問題箇所の特定ができないという課題があった。
【００１０】
さらに、従来のマイクロプロセッサのエミュレーション方法およびエミュレータ装置では、マイクロプロセッサのプログラムに問題がなくマイクロプロセッサの命令自体に不具合があるような場合、その不具合の原因の特定が困難であるという課題があった。
【００１１】
この発明は上記のような課題を解決するためになされたもので、マイクロプロセッサの不定動作を誘発するような割り込み処理を含むプログラムをエミュレーションでき問題箇所の特定を行うことが可能なデバッグ環境を提供し得るマイクロプロセッサのエミュレーション方法およびエミュレータ装置を得ることを目的とする。
【００１２】
また、この発明は、マイクロプロセッサの命令自体に不具合がある場合その不具合を検出できるデバッグ環境を提供し得るマイクロプロセッサのエミュレーション方法およびエミュレータ装置を得ることを目的とする。
【００１３】
【課題を解決するための手段】
請求項１記載の発明に係るマイクロプロセッサのエミュレーション方法は、割り込みが発生した場合その割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために、エミュレーションを中断した時点のレジスタの値、プログラムカウンタ（ＰＣ）の値およびメモリデータをシミュレータに転送してシミュレーションを行うものである。
【００１４】
請求項２記載の発明に係るマイクロプロセッサのエミュレーション方法は、エミュレーションを中断した後のシミュレーション実行時のプログラムカウンタ（ＰＣ）の値の遷移履歴を記憶し、シミュレーションが終了した後にエミュレーションを中断した時点から再開し、記憶済みのＰＣの値とエミュレーション実行時のＰＣの値とを順次比較し、それらのＰＣの値が不一致であるならばその旨を通知するものである。
【００１５】
請求項３記載の発明に係るマイクロプロセッサのエミュレーション方法は、シミュレータが不定動作の発生を検知したならばその旨を通知して後続処理のエミュレーションを中止し、他方、シミュレータが不定動作の発生を検知しなかったならば、シミュレータのシミュレーションの後に後続処理のエミュレーションを割り込み発生による中断が生じるまで継続して実行するものである。
【００１６】
請求項４記載の発明に係るエミュレータ装置は、割り込みが発生した際にその割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するためにシミュレータを起動するシミュレータ起動手段と、エミュレーションを中断した時点のレジスタの値、プログラムカウンタ（ＰＣ）の値およびメモリデータをシミュレータに転送する転送手段とを備えたものである。
【００１７】
請求項５記載の発明に係るエミュレータ装置は、シミュレータにおけるシミュレーション実行時のプログラムカウンタ（ＰＣ）の値の遷移履歴を記憶するための記憶手段と、シミュレーションが終了した後に再開された後続処理のエミュレーションを実行する時のＰＣの値と記憶手段に記憶されたＰＣの値とを順次比較し、それらのＰＣの値が不一致であるならばその旨を通知するＰＣ値比較手段とを備えたものである。
【００１８】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の構成を示すブロック図である。図において、１はターゲットマイクロプロセッサの機能を代行するかまたはターゲットマイクロプロセッサ自身であるエミュレーション用のエミュレーションＣＰＵ（マイクロプロセッサ）、２はエミュレーションＣＰＵ１で実行されデバッグすべきプログラムが格納されるエミュレーションメモリ、３はエミュレーションメモリ２をエミュレーションＣＰＵバス４側に接続するかまたはコントロールＣＰＵバス５側に接続するバス切り替え回路、１０はエミュレーションＣＰＵ１の所定の処理のエミュレーションに先行して処理を予測するべくその所定の処理をシミュレーションするためのシミュレータ、６はエミュレーションを実行するとともに各種デバッグ機能を備え、エミュレーションＣＰＵ１が割り込みプログラムを実行した際にその実行の終了を検知してエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するためにシミュレータ１０を起動し、さらに、エミュレーションを中断した時点のエミュレーションＣＰＵ１のレジスタの値、プログラムカウンタ（ＰＣ）の値およびメモリデータをシミュレータ１０に転送し、シミュレータ１０を用いて先行して処理を予測するためにシミュレーションを行うエミュレーションコントローラ（シミュレータ起動手段，転送手段）である。
【００１９】
さらに、７はエミュレーションコントローラ６をコントロールＣＰＵバス５に接続し、エミュレーションコントローラ６と他のユニットとの間の通信を司るエミュレーションコントローラ通信回路、８はコントロールＣＰＵバス５を介してバス切り替え回路３等の他のユニットを制御するコントロールＣＰＵである。なお、好ましくは、エミュレーションコントローラ６をホスト計算機として実現し、シミュレータ１０はホスト計算機上のソフトウェアにより実現することができる。また、シミュレータ起動手段および転送手段はエミュレーションコントローラ６により実現される。
【００２０】
次に動作について説明する。
図２はこの実施の形態１によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置によるエミュレーションに先行して処理を予測する先行処理予測の流れを示すフローチャートである。また、図３は０除算を実行する可能性を有するメインプログラムと、メインプログラムの処理３で０除算を引き起こす原因を作り出す割り込み処理を実行する割り込みプログラムとを含むプログラムの実行の流れを概略的に示す説明図である。以下、０除算の実行動作を不定動作としているマイクロプロセッサにおいて図３に示すようなプログラムを実行した場合の先行処理予測の実施手順について図２および図３を参照しながら説明する。
【００２１】
図３に示すプログラムを作成したプログラマは、メインプログラム中の０除算を実行する可能性を持った処理に関してその存在すら気づいておらず、従って、メインプログラム中に０除算に関するエラーチェック機能を設けていないと仮定する。
【００２２】
メインプログラムが実行され、処理３の実行以前に割り込みが発生し、図３に示すような割り込みプログラムにて、Ｓ＿ＤＡＴＡに０がセットされると、従来のようにこのままエミュレーションを継続して実行した場合、エミュレーションＣＰＵ１は処理３にて０除算を実行してしまい、エミュレータ装置は不定動作に陥ってしまう。
【００２３】
これに対して、この実施の形態１によるエミュレータ装置では、図２の手順によってデバッグを行う。まず、エミュレーションコントローラ６は、ステップＳＴ１において、エミュレーションが終了したか否かを判定し、エミュレーションが終了していないならば、ステップＳＴ２において、エミュレーションが中断したか否かを判定する。上記したように、エミュレーションコントローラ６は、割り込みプログラムの実行終了を検知してエミュレーションを中断する機能を備えており、エミュレーションを一時中断すると、ステップＳＴ２からステップＳＴ３に移行して、シミュレータ１０を起動してエミュレーション実行からシミュレーション実行に切り替えるか否かを判定する。この場合、割り込みプログラム実行によるエミュレーション中断であるので、シミュレータ１０を起動してエミュレーション実行からシミュレーション実行に切り替える。
【００２４】
シミュレーション実行に切り替わるまでは、エミュレータ装置は図３に示すような割り込みプログラムを実行しており、エミュレーションＣＰＵ１は実際のターゲットシステムの状態をふまえた実行経過状態となっており、この実施の形態１によるエミュレータ装置は、シミュレータ１０のみでは実現しえない状態を容易に作りだしている。
【００２５】
次に、エミュレーションコントローラ６は、ステップＳＴ４において、エミュレータ装置のエミュレーションＣＰＵ１のＰＣの値、レジスタの値およびメモリデータをシミュレータ１０に転送する。その後、シミュレータ１０は、上記の割り込みプログラムを経過しその影響も加えられた状態から後続処理を図３に示す処理４を実行するまで継続してシミュレーションする（ステップＳＴ５）。この結果、シミュレータ１０は、後続の処理３の時点で０除算を検出することができる。
【００２６】
もし、問題となる割り込みプログラム以外の割り込みでエミュレーションを中断した場合、シミュレータ１０はエミュレーション中断以降に行うシミュレーションで０除算を検出することはないので、その割り込みが問題の割り込みプログラムを起動する割り込みではないことを容易に認識することができる。このような場合、ステップＳＴ５においてシミュレーションが終了した時に、一時停止状態にあるエミュレーション実行を再開し、問題となる割り込みプログラム実行後にエミュレーションを中断し、上記シミュレーションを繰り返すことにより問題の０除算を検出することが可能である。
【００２７】
以上のように、この実施の形態１によれば、マイクロプロセッサの不定動作を誘発する割り込みプログラムを含むプログラムをエミュレーションし、さらに、シミュレータを用いて、従来エミュレーションのみでは不可能であった不定動作となる処理を先行して実行し問題箇所の特定を行うことが可能なデバッグ環境を提供することができる。このように、この実施の形態１によれば、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【００２８】
実施の形態２．
図４はこの発明の実施の形態２によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の構成を示すブロック図である。図において、上記実施の形態１によるエミュレータ装置と同一の構成要素には図１と同一の符号を付してその説明を省略する。また、図４において、１１はシミュレータ１０がシミュレーションを実行している際にＰＣの値の遷移履歴が記憶される記憶手段としてのＰＣ値履歴格納用ＦＩＦＯバッファ、１２はエミュレーション時のＰＣの値と比較するためにＰＣ値履歴格納用ＦＩＦＯバッファ１１から既に記憶済みのシミュレーション時に実行したＰＣの値を順次読み出すＦＩＦＯバッファ読み出し回路、１３はエミュレーション時に実行するＰＣの値とＰＣ値履歴格納用ＦＩＦＯバッファ１１から読み出したシミュレーション時に実行したＰＣの値とを順次比較し不一致の場合にコントロールＣＰＵ８にその旨を示す情報を送出するＰＣ値比較手段としてのＰＣ値比較回路である。
【００２９】
この発明の実施の形態２によるマイクロプロセッサのエミュレーション方法は、割り込みプログラム実行後に、上記実施の形態１と同様に、エミュレーションを一時中断しシミュレータ１０を起動してシミュレーションを実行し、このシミュレーション実行中に変化するＰＣの値を順次ＰＣ値履歴格納用ＦＩＦＯバッファ１１に記憶し（すなわち、ＰＣの値の遷移履歴を記憶する）、その後、再開したエミュレーション時に実行するＰＣの値とＰＣ値履歴格納用ＦＩＦＯバッファ１１に記憶されたＰＣの値とを順次比較し、これらのＰＣの値の不一致を検出することによりマイクロプロセッサの命令の不具合を検知するものである。すなわち、この実施の形態２は、プログラムには問題がないがマイクロプロセッサの命令に不具合があるために、従来不具合を特定できなかった場合に適用され、その不具合を特定することが可能なマイクロプロセッサのエミュレーション方法を提供するものである。
【００３０】
次に動作について説明する。
図５はこの実施の形態２によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置によるエミュレーションに先行して処理を予測する先行処理予測とその後のエミュレーション時に実行するＰＣの値と先行処理予測した際に既に実行したＰＣの値とを順次比較する比較処理の流れを示すフローチャートである。また、図６はマイクロプロセッサがフラグが正しく変化しない不具合のある命令を有しており、その命令を実行するメインプログラムと、その命令のオペランドＳ＿ＤＡＴＡの値を設定する割り込み処理を実行する割り込みプログラムとを含むプログラムの実行の流れを概略的に示す説明図である。以下、フラグが正しく変化しない不具合のある命令を有しているマイクロプロセッサにおいて図６に示すようなプログラムを実行した場合の先行処理予測および比較処理の実施手順について図５および図６を参照しながら説明する。
【００３１】
図６に示すメインプログラムの処理２におけるＣＭＰ１命令は、Ｓ＿ＤＡＴＡの値に応じてフラグＺＦＬＡＧをＯＮまたはＯＦＦに設定するものである。以下では、割り込みプログラムの実行によりＳ＿ＤＡＴＡに１がセットされることによって、後続の処理３の条件分岐の結果、処理４を実行するはずであったが、ＣＭＰ１命令がフラグＺＦＬＡＧを変化させない不具合を持っていたために、処理４が実行されずに処理５が実行されたとする。また、図６に示すプログラムを作成したプログラマは、ＣＭＰ１命令の不具合を認識しておらず、どの時点で期待通りの処理から外れ、実行結果が期待通りにならなかったのか全く分かっていないものと仮定する。さらに、メインプログラムでは、実行結果が処理４を通過してきたのか処理５を通過してきたのかが全く分からないものと仮定する。
【００３２】
まず、ステップＳＴ１１において、エミュレーションコントローラ６は、ＰＣ値履歴格納用ＦＩＦＯバッファ１１が空か否かを判定し、空ならばステップＳＴ１２に移行する。そして、エミュレーションコントローラ６は、ステップＳＴ１２において、エミュレーションが終了したか否かを判定し、エミュレーションが終了していないならば、ステップＳＴ１３において、エミュレーションが中断したか否かを判定する。上記したように、エミュレーションコントローラ６は、割り込みプログラムの実行終了を検知してエミュレーションを一時中断する機能を備えており、エミュレーションを一時中断すると、ステップＳＴ１３からステップＳＴ１４に移行して、シミュレータ１０を起動してエミュレーション実行からシミュレーション実行に切り替える。シミュレーション実行に切り替わるまでは、エミュレータ装置は図６に示すような割り込みプログラムを実行しており、エミュレーションＣＰＵ１は実際のターゲットシステムの状態をふまえた実行経過状態となっており、この実施の形態２によるエミュレータ装置は、上記実施の形態１と同様に、シミュレータ１０のみでは実現しえない状態を容易に作りだしている。
【００３３】
次に、エミュレーションコントローラ６は、ステップＳＴ１５において、エミュレータ装置のエミュレーションＣＰＵ１のＰＣの値、レジスタの値およびメモリデータをシミュレータ１０に転送する。その後、シミュレータ１０は、上記の割り込みプログラムによる処理を経過しその影響も加えられた状態から後続処理を処理４または処理５を実行するまで継続してシミュレーションする（ステップＳＴ１６，ＳＴ１７）。この際、シミュレータ１０は、変化するＰＣの値を順次メモリ（図示せず）に蓄積し、シミュレーション中に実行したＰＣの値の遷移履歴を格納する。次に、エミュレーションコントローラ６は、ステップＳＴ１８において、シミュレータ１０によるシミュレーション実行を終了して、エミュレーション実行に切り替える際にエミュレータ装置のシミュレーション実行時のＰＣの値の遷移履歴を格納するためのＰＣ値履歴格納用ＦＩＦＯバッファ１１に上記のように蓄積したＰＣの値の遷移履歴データを転送して、ステップＳＴ１１に戻る。
【００３４】
その後、エミュレーションコントローラ６はエミュレーション実行を再開し、さらに、ＰＣ値履歴格納用ＦＩＦＯバッファ１１は空ではないのでステップＳＴ１９に移行し、ＦＩＦＯバッファ読み出し回路１２を用いてＰＣ値履歴格納用ＦＩＦＯバッファ１１からシミュレータ１０によるシミュレーション実行時のＰＣの値を順次読み出して、そのＰＣの値をＰＣ値比較回路１３に転送する。そして、ＰＣ値比較回路１３は、ステップＳＴ２０において、読み出したＰＣの値と現在エミュレーション実行しようとするＰＣの値とを比較し、同一か否かを判定する。もし、読み出したＰＣの値と現在エミュレーション実行しようとするＰＣの値とが不一致であるならば、ＰＣ値比較回路１３は、ステップＳＴ２１において、コントロールＣＰＵ８に割り込み信号を送り、読み出したＰＣの値と現在エミュレーション実行しようとするＰＣの値とが相違することをコントロールＣＰＵ８に通知する。
【００３５】
もし、上記したようにＣＭＰ１命令がフラグＺＦＬＡＧを変化させない不具合を有しているならば、不一致が起こった時点のＰＣの値は図６に示す処理３実行後の時点のものであり、処理３がフラグＺＦＬＡＧの状態による条件分岐であることから、問題の要因となる部分に見当をつけることが可能となる。さらに、その時点でシミュレータ１０は、最後の割り込みプログラム実行後のシミュレーション開始時のＰＣの値、レジスタの値およびメモリデータを保持しているので、最後の割り込みプログラム実行後の状態からのデバッグをシミュレーションにより継続することも可能である。
【００３６】
以上のように、この実施の形態２によれば、マイクロプロセッサの命令に不具合がある場合その不具合を検出可能なデバッグ環境を提供することができる。これにより、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【００３７】
【発明の効果】
以上のように、請求項１記載の発明によれば、マイクロプロセッサのエミュレーション方法を、割り込みが発生した場合その割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために、エミュレーションを中断した時点のレジスタの値、プログラムカウンタ（ＰＣ）の値およびメモリデータをシミュレータに転送してシミュレーションを行うように構成したので、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【００３８】
請求項２記載の発明によれば、マイクロプロセッサのエミュレーション方法を、エミュレーションを中断した後のシミュレーション実行時のプログラムカウンタ（ＰＣ）の値の遷移履歴を記憶し、シミュレーションが終了した後にエミュレーションを中断した時点から再開し、記憶済みのＰＣの値とエミュレーション実行時のＰＣの値とを順次比較し、それらの値が不一致であるならばその旨を通知するように構成したので、マイクロプロセッサの命令に不具合がある場合その不具合を検出可能なデバッグ環境を提供することができる効果がある。これにより、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【００３９】
請求項３記載の発明によれば、マイクロプロセッサのエミュレーション方法を、シミュレータが不定動作の発生を検知したならばその旨を通知して後続処理のエミュレーションを中止し、他方、シミュレータが不定動作の発生を検知しなかったならば、シミュレータのシミュレーションの後に後続処理のエミュレーションを割り込み発生による中断が生じるまで継続して実行するように構成したので、マイクロプロセッサの不定動作を誘発する割り込みプログラムを含むプログラムをエミュレーションし、さらに、シミュレータを用いて、従来エミュレーションのみでは不可能であった不定動作となる処理を先行して実行し問題箇所の特定を行うことが可能なデバッグ環境を提供することができる効果がある。
【００４０】
請求項４記載の発明によれば、エミュレータ装置を、割り込みが発生した際にその割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するためにシミュレータを起動するシミュレータ起動手段と、エミュレーションを中断した時点のレジスタの値、ＰＣの値およびメモリデータをシミュレータに転送する転送手段とを備えるように構成したので、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【００４１】
請求項５記載の発明によれば、エミュレータ装置を、シミュレータにおけるシミュレーション実行時のプログラムカウンタ（ＰＣ）の値の遷移履歴を記憶するための記憶手段と、シミュレーションが終了した後に再開された後続処理のエミュレーションを実行する時のＰＣの値と記憶手段に記憶されたＰＣの値とを順次比較し、それらのＰＣの値が不一致であるならばその旨を通知するＰＣ値比較手段とを備えるように構成したので、マイクロプロセッサの命令に不具合がある場合その不具合を検出可能なデバッグ環境を提供することができる効果がある。これにより、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【図面の簡単な説明】
【図１】  この発明の実施の形態１によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の構成を示すブロック図である。
【図２】  この発明の実施の形態１によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置によるエミュレーションに先行して処理を予測する先行処理予測の流れを示すフローチャートである。
【図３】  この発明の実施の形態１によるマイクロプロセッサのエミュレーション方法の対象となるプログラム例であり、０除算を実行する可能性を有するメインプログラムと、メインプログラムの処理３で０除算を引き起こす原因を作り出す割り込み処理プログラムとを含むプログラムの実行の流れを示す説明図である。
【図４】  この発明の実施の形態２によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の構成を示すブロック図である。
【図５】  この発明の実施の形態２によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置によるエミュレーションに先行して処理を予測する先行処理予測とその後のエミュレーション時にＰＣの値と先行処理予測したＰＣの値と順次比較する比較処理の流れを示すフローチャートである。
【図６】  この発明の実施の形態２によるマイクロプロセッサのエミュレーション方法の対象となるプログラム例であり、フラグが正しく変化しない不具合のある命令を実行するメインプログラムと、その命令のオペランドの値を設定する割り込み処理プログラムとを含むプログラムの実行の流れを示す説明図である。
【図７】  従来のマイクロプロセッサのエミュレーション方法でのエミュレーション実行と従来のシミュレータでのシミュレーション実行との相違を示す説明図である。
【図８】  従来のマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の一例の構成を示すブロック図である。
【符号の説明】
１  エミュレーションＣＰＵ（マイクロプロセッサ）、６  エミュレーションコントローラ（シミュレータ起動手段、転送手段）、１０  シミュレータ、１１ＰＣ値履歴格納用ＦＩＦＯバッファ（記憶手段）、１３  ＰＣ値比較回路（ＰＣ値比較手段）。
【図１】
0003685288.tif 000002
【図２】
0003685288.tif 000003
【図３】
0003685288.tif 000004
【図４】
0003685288.tif 000005
【図５】
0003685288.tif 000006
【図６】
0003685288.tif 000007
【図７】
0003685288.tif 000008
【図８】
0003685288.tif 000009