(57)【要約】      （修正有）【課題】問題がハードウェアのシミュレーションに存在するのか、シミュレーションにおける実行に用いられるプログラムコードに存在するのかを決定することを容易にする。【解決手段】シミュレーションホストデバッガ１０は、シミュレーションコード２をデバッグするためのホストリソースへのアクセスを提供する。ターゲットデバイスデバッガ１８は、そのターゲットプログラムコードの実行においてモデル化されたターゲットプログラマブルデバイスの状態を示すターゲットリソース情報を回復するために、シミュレーションコード２内のデバッグインタフェース６にアクセス要求を出力する。この方法において、そのターゲットプログラマブルデバイス上でシミュレーションされた形式で実行されるターゲットプログラムコードとともにターゲットプログラマブルデバイスのシミュレーションの同時デバッグを提供することが可能である。【選択図】図１
2006313521.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットプログラムコードを実行するターゲットプログラマブルデバイスのシミュレーションのデバッグ方法であって、
前記ターゲットプログラムコードを実行する前記ターゲットプログラマブルデバイスの動作をシミュレーションするためにホストプロセッサ上でシミュレーションコードを実行するステップと、
前記ホストプロセッサによる前記シミュレーションコードの実行の間に前記ホストプロセッサのホストリソースへのアクセスを提供するシミュレーションホストデバッガを実行するステップと、
前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードのシミュレーションされる実行の間に前記ターゲットリソースへのアクセスを提供するターゲットデバイスデバッガを実行するステップとを有し、
前記シミュレーションコードは、シミュレーションされる前記ターゲットプログラマブルデバイスのターゲットリソースの現在値の記憶を保持する動作が可能であり、
前記シミュレーションホストデバッガおよび前記ターゲットデバイスデバッガの実行は同期され、かつ前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガへの前記ターゲットリソースの返却を引き起こすために、前記シミュレーションコードによって提供される前記ターゲットプログラマブルデバイスのデバッグインタフェースにアクセス要求を送信することによって前記ターゲットリソースにアクセスするデバッグ方法。
【請求項２】
前記デバッグインタフェースは、読み出し要求が前記シミュレーションコードによって記憶された前記ターゲットリソースの返却を引き起こすターゲットデバイスデバッグアプリケーションプログラムインタフェースである請求項１に記載の方法。
【請求項３】
前記アクセス要求が前記シミュレーションホストデバッガに送信されると、前記シミュレーションホストデバッガは、前記デバッグインタフェースを介して前記ターゲットリソースを読み出すとともに前記ターゲットリソースを前記ターゲットデバイスデバッガに返却する請求項１に記載の方法。
【請求項４】
前記シミュレーションコードは、前記アクセス要求を受信し、前記デバッグインタフェースを介して前記ターゲットリソースを読み出し、かつ前記ターゲットリソースを前記ターゲットデバイスデバッガに返却する動作が可能であるデバッグサーバを含む請求項１に記載の方法。
【請求項５】
マスタシミュレーションホストデバッガは、受信したコマンドに応答して前記シミュレーションホストデバッガを制御する動作が可能である請求項１に記載の方法。
【請求項６】
前記マスタシミュレーションホストデバッガおよび前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガを前記マスタシミュレーションホストデバッガと同期させるために通信する請求項５に記載の方法。
【請求項７】
前記シミュレーションホストデバッガは、デバッグ参照ポイントに到達した前記シミュレーションコードに応答して、前記ターゲットデバイスデバッガに前記アクセス要求の送信を引き起こさせる請求項１に記載の方法。
【請求項８】
前記デバッグ参照ポイントは、前記ターゲットプログラムコード内のブレークポイントセット、前記ターゲットリソース内のウォッチポイントセット、前記シミュレーションコード内のブレークポイント、および、前記ホストリソース内のウォッチポイントセットのうち１つである請求項７に記載の方法。
【請求項９】
前記マスタシミュレーションホストデバッガおよび前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガを前記マスタシミュレーションホストデバッガと同期させるために通信し、かつ前記シミュレーションホストデバッガは、前記マスタシミュレーションホストデバッガに前記デバッグ参照ポイントに到達したことを通知し、かつ前記マスタシミュレーションホストデバッガは、前記ターゲットデバイスデバッガに前記アクセス要求の送信を引き起こすことを通知する請求項７に記載の方法。
【請求項１０】
前記ターゲットデバイスデバッガは、前記マスタシミュレーションホストデバッガを介して前記シミュレーションコードの実行を制御するために前記シミュレーションホストデバッガにコマンドを送信する請求項６に記載の方法。
【請求項１１】
前記ターゲットリソースは、シミュレーションされたターゲットデバイスレジスタ内容データ、シミュレーションされたターゲットデバイスメモリ内容データ、シミュレーションされ実行されたターゲットデバイスプログラムオペコード、および、シミュレーションされた命令パイプラインデータのうち１つまたは２つ以上である請求項１に記載の方法。
【請求項１２】
前記ターゲットデバイスデバッガは、前記ターゲットリソースに応答して、前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードの前記シミュレーションされた実行の結果を示すデバッグ情報を提供する請求項１に記載の方法。
【請求項１３】
前記ホストリソースは、ホストレジスタ内容データ、ホストメモリ内容データ、および、実行されるホストプログラムオペコードのうち１つまたは２つ以上である請求項１に記載の方法。
【請求項１４】
前記ホストリソースは、前記シミュレーションコードの実行結果を示すデバッグ情報を提供する請求項１に記載の方法。
【請求項１５】
前記ホストプロセッサ上で実行される前記シミュレーションコードは、各々がターゲットプログラムコードを実行する複数のターゲットプログラマブルデバイスの動作をシミュレーションし、前記シミュレーションコードは、シミュレーションされる前記複数のターゲットプログラマブルデバイスの各々のターゲットリソースを記憶する動作が可能である請求項１に記載の方法。
【請求項１６】
前記ターゲットデバイスデバッガは、シミュレーションされる前記複数のターゲットプログラマブルデバイスの前記各々のターゲットリソースへのアクセスを提供する動作が可能である請求項１５に記載の方法。
【請求項１７】
前記ホストプロセッサ上で実行される前記シミュレーションコードは、１つまたは２つ以上の非プログラマブルターゲットデバイスの動作をシミュレーションし、前記シミュレーションコードは、非プログラマブルターゲットデバイスのシミュレーションされた状態を示す各々のターゲット状態データを記憶する動作が可能である請求項１に記載の方法。
【請求項１８】
前記ターゲットデバイスデバッガは、前記１つまたは２つ以上の非プログラマブルターゲットデバイスの前記各々のターゲット状態データへのアクセスを提供する動作が可能である請求項１７に記載の方法。
【請求項１９】
前記ターゲットプログラムコード内のブレークポイントセットは、デバッグアクションを引き起こすために前記シミュレーションコード内のブレークポイントセットと論理的に結合される請求項１に記載の方法。
【請求項２０】
請求項１に記載の方法を実行するためにコンピュータを制御する動作が可能なコンピュータプログラムを含むプログラム製品。
【請求項２１】
ターゲットプログラムコードを実行するターゲットプログラマブルデバイスのシミュレーションのデバッグ装置であって、
前記ターゲットプログラムコードを実行する前記ターゲットプログラマブルデバイスの動作をシミュレーションするためにシミュレーションコードを実行するホストプロセッサと、
前記ホストプロセッサによる前記シミュレーションコードの実行の間に前記ホストプロセッサのホストリソースへのアクセスを提供する動作が可能であるシミュレーションホストデバッガと、
前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードのシミュレーションされる実行の間に前記ターゲットリソースへのアクセスを提供する動作が可能であるターゲットデバイスデバッガとを具備し、
前記シミュレーションコードは、シミュレーションされる前記ターゲットプログラマブルデバイスのターゲットリソースを記憶する動作が可能であり、
前記シミュレーションホストデバッガと前記ターゲットデバイスデバッガの実行は同期され、かつ前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガへの前記ターゲットリソースの返却を引き起こすために、前記シミュレーションコードによって提供される前記ターゲットプログラマブルデバイスのデバッグインタフェースにアクセス要求を送信することによって前記ターゲットリソースにアクセスするデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子デバイスのモデリングの分野に関する。より詳細には、本発明はプログラム命令を実行するプログラマブルデバイスのモデリングの分野に関する。
【背景技術】
【０００２】
データ処理デバイス、例えば、マイクロプロセッサ、ＤＳＰ、等のデバイスの動作を評価するために用いることが可能であるモデルを提供することが知られている。そのようなモデルは多くの場合、新たなプログラマブルデバイスの設計および開発の段階で、実際のデバイスを製造する必要なしにそれらのデバイスの性能を評価するために用いられる。また、さらに、プログラマブルデバイスは、それらの上で実行されるように開発された適切なプログラムが必要であり、かつ、実際のデバイスが利用可能となる前に、そのようなプログラムの動作のモデル化が可能であることが好ましい。この方法におけるモデリングは、適切な設計変更によって比較的容易にかつ低コストでそれらの問題を克服することが可能であるように、開発工程の早期に潜在的な問題の特定に役立つ。また、プログラムをそれらが実行されるハードウェアと同時に開発することが可能であることは、全体の開発時間を減少させ、効果的である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の要求条件に取り組むために、英国ケンブリッジのＡＲＭ社によって開発されたＭａｘＣｏｒｅのようなモデリングツールが提供されていることが知られている。そのようなツールは、ＬＩＳＡのような言語で提供されるマイクロプロセッサコアのような新たなプログラマブルデバイスの動作特性の公式な定義を取り入れることが可能であり、かつそのプログラマブルデバイスのサイクル精度モデル（cycle accurate model）を自動的に生成するためにこれを用いることが可能である。このサイクル精度モデルは、シミュレーションされるプログラマブルデバイスの動作を調査するために、高性能汎用コンピュータのようなホストプロセッサ上で実行することが可能であるシミュレーションコードを提供する。この方法において、プログラムコードを実行するために用いられるターゲットデバイスをシミュレーションするために、シミュレーションコードを用いることが知られている。しかし、プログラマブルデバイスのモデルは、それ自体に特定および修正が必要なバグを含む可能性がある。シミュレーションされた実行に用いられるプログラムコードは、同様に特定および修正が必要なバグを含む可能性がある。シミュレーションが実行され、かつ予期しない結果が発生したときにそこに困難が生じ、問題がハードウェアのシミュレーションに存在するのか、シミュレーションされた実行に用いられるプログラムコードに存在するのかを決定することが困難となる可能性がある。特に、プログラムコードを実行するハードウェアをシミュレーションするシミュレーションコードは、欠陥を示す予期しない動作を表わす可能性があり、かつ依然としてハードウェアの動作をシミュレーションするシミュレーションコードの状態から、プログラムコードの実行においてどのポイントに到達したか、および、到達したプログラマブルデバイスのモデル化されたアーキテクチャ上の状態がどのようであったかを決定することは困難である。
【課題を解決するための手段】
【０００４】
１つの実施形態から見て、本発明は、ターゲットプログラムコードを実行するターゲットプログラマブルデバイスのシミュレーションのデバッグ方法を提供し、前記方法は、前記ターゲットプログラムコードを実行する前記ターゲットプログラマブルデバイスの動作をシミュレーションするためにホストプロセッサ上でシミュレーションコードを実行するステップと、前記ホストプロセッサによる前記シミュレーションコードの実行の間に前記ホストプロセッサのホストリソースへのアクセスを提供するシミュレーションホストデバッガを実行するステップと、前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードのシミュレーションされた実行の間に前記ターゲットリソースへのアクセスを提供するターゲットデバイスデバッガを実行するステップとを有し、前記シミュレーションコードは、シミュレーションされる前記ターゲットプログラマブルデバイスのターゲットリソースの現在値の記憶を保持する動作が可能であり、前記シミュレーションホストデバッガおよび前記ターゲットデバイスデバッガの実行は同期され、かつ前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガへの前記ターゲットリソースの返却を引き起こすために、前記シミュレーションコードによって提供される前記ターゲットプログラマブルデバイスのデバッグインタフェースにアクセス要求を送信することによって前記ターゲットリソースにアクセスする。
【０００５】
本技術は、それによってターゲットプログラマブルデバイスをシミュレーションするモデルが正しく構成され、かつ予測されたように動作するか否かに関する評価を可能とするホストシミュレーションリソースへのアクセスとともに、シミュレーションされるターゲットプログラマブルデバイスのアーキテクチャ上の状態に関する情報、および従ってプログラムコードが予測されたように動作するか否かに関する表示を与えるターゲットデバイスリソースとの両方へのアクセスを提供することが可能なシステムを提供する。このホストシミュレーションリソースおよびターゲットデバイスリソースの両方への同時アクセスは、それを介してシミュレーションされたコードによって記憶されたターゲットデバイスリソースがターゲットデバイスデバッガにアクセスおよび送信されることが可能であるシミュレーションコード内のターゲットプログラマブルデバイスのためのデバッグインタフェースの提供によって可能とされる。したがって、シミュレーションコードは、シミュレーションそれ自体の正確さが検査されるように、ホストシミュレーションリソースそれ自身へのアクセスを提供するとともに、プログラムコードの実行に応答してターゲットデバイスの正しい動作の評価において利用するために、ターゲットリソースデータを記憶し、かつターゲットリソースデータへのアクセスを提供する。シミュレーションの動作のこれらの２つの視野の提供は、ターゲットデバイスの正確なモデルをより迅速に開発するために効果的であるとともに、ターゲットデバイスの動作とともにシミュレータの動作をバグがより容易に特定することが可能であるように同時に追跡することを可能とする。
【０００６】
デバッグインタフェースは多くの異なる方法で提供可能であると理解される。可能性がある１つの簡単な例は、シミュレーションコードがターゲットリソースを知られたメモリ位置、または、適切なポインタによって特定される位置に記憶することを確実にし、そして、ターゲットデバイスデバッガが要求されたときにそれらのリソースにアクセス可能とすることである。しかし、より柔軟かつスケーラブルなデバッグインタフェースを提供する好ましい方法は、シミュレーションコード内にターゲットデバイスデバッグアプリケーションプログラムインタフェース（ＡＰＩ）を提供し、そのＡＰＩに出力された読み取り要求がシミュレーションコードによって記憶されたターゲットリソースの返却を引き起こすことが可能であるようにすることである。これは、シミュレーションコードがターゲットリソースの記憶を提供するとともにターゲットリソースアクセス要求に応答する方法において大きい自由度を与える。
【０００７】
いくつかの実施形態において、アクセス要求は、シミュレーションホストデバッガを介してターゲットデバイスデバッガからデバッグインタフェースへ送信されるとともに、同じ経路で応答されることが可能である。シミュレーションホストデバッガは、既にシミュレーションコードと通信し、かつ既にアクセス要求を送信するとともに応答結果を受信するための適切なメカニズムを有するので、これはターゲットデバイスデバッガを直接にシミュレーションコードと通信する必要から解放する。
【０００８】
他の状況において効果的である可能性のある他にとるべき実施形態として、シミュレーションコードは、ターゲットデバイスデバッガから直接にアクセス要求を受信するとともに、それらをシミュレーションコードによってシミュレーションされる１つまたは２つ以上のターゲットデバイスのデバッグインタフェースに送信する動作が可能なデバッグサーバを含むことが可能である。
【０００９】
システムの柔軟性を増加させるさらなる考え方のレベルは、シミュレーションホストデバッガを制御する動作が可能なマスタシミュレーションホストデバッガを提供することである。従って、シミュレーションホストデバッガは、本技術が関連する種類のシミュレーションコードであろうと、あるいは何らかの他のコードであろうとプログラムコードをデバッグするための汎用デバッガの形式でより容易に提供することが可能である。本技術に関する固有の特徴とターゲットプログラマブルデバイスのシミュレーションのためのその利用とは、シミュレーションホストデバッガ内で提供される汎用のデバッグに関するオーバーヘッドをそれ自体が有する必要のないマスタシミュレーションホストデバッガ内に含むことが可能である。
【００１０】
また、前記マスタシミュレーションホストデバッガは、シミュレーションの動作とターゲットデバイスの動作とが適切に相互に関連するために、ターゲットデバイスデバッガをマスタシミュレーションホストデバッガと同期させるためにターゲットデバイスデバッガと通信する役割を果たすことも可能である。
【００１１】
前記シミュレーションホストデバッガは、ターゲットデバイスデバッガに入手可能なターゲットリソースが最新に更新されるように、所定参照ポイントに到達したシミュレーションコードに応答して、ターゲットデバイスデバッガにアクセス要求の送信を引き起こさせることが好ましい。適切なデバッグ参照ポイントの例は、シミュレーションコード内のブレークポイント、シミュレーションコード内のウォッチポイント、ターゲットプログラムコード内のブレークポイントまたはターゲットリソース内のウォッチポイントを含む。ターゲットプログラムコード内のブレークポイントとターゲットリソース内のウォッチポイントとは、シミュレーションされるターゲットデバイスがブレークポイントまたはウォッチポイントがセットされた状態をいつ受け入れたかを特定するために動作するターゲットデバイスブレークポイント部分を含むシミュレーションコードそれ自体によって特定される。逆に、シミュレーションホストデバッガは、シミュレーションコードのためのブレークポイントまたはウォッチポイントに対応する適切なポイントにシミュレーションコードがいつ到達したかを特定するためにシミュレーションコードを監視する動作を行う。
【００１２】
マスタシミュレーションホストデバッガを含むシステムの状況において、デバッグ参照ポイントの到達は、そのようなマスタシミュレーションホストデバッガを介してターゲットデバイスデバッガに通知することが可能である。同様に、ターゲットデバイスデバッガによって出力が可能であるシミュレーションコードの実行を制御するコマンドは、マスタシミュレーションホストデバッガを介してシミュレーションコードに送信することが可能である。
【００１３】
監視することが可能であるターゲットリソースの例は、シミュレーションされたターゲットデバイスレジスタ内容データ、シミュレーションされたターゲットデバイスメモリ内容データ、シミュレーションされ実行されたターゲットデバイスプログラムオペコード、シミュレーションされた命令パイプラインデータ、例えば、レジスタスコアボード情報、一時命令記憶装置およびフォワード情報、等である。
【００１４】
ターゲットデバイスデバッガによって読み出されるターゲットリソースは、ターゲットプログラマブルデバイスによるターゲットプログラムコードのシミュレーションされた実行の結果を示すデバッグ情報を提供するために、ターゲットデバイスデバッガによって用いられる。これは、アーキテクチャ上の、またはマイクロアーキテクチャ上の、シミュレーションされるターゲットプログラマブルデバイスの動作の概観を効果的に与えると理解することが可能である。
【００１５】
同様に、ホストリソースは、シミュレーションコードの実行の結果を示すとともに、従ってそのシミュレーションコードのデバッグを可能とするデバッグ情報を提供するために用いることが可能である。
【００１６】
シミュレーションコードは、いくつかの実施形態において、例えば、プロセッサコード、ＤＳＰコア、ＶＬＩＷプロセッサ等を含むことが可能であるＳｏＣのような複数のターゲットプログラマブルデバイスの動作をシミュレーションすることが可能であると理解される。また、シミュレーションコードは、例えば、共有メモリ、キャッシュ、タイマ等のような１つまたは２つ以上の非プログラマブルターゲットデバイスの動作をシミュレーションするために用いることも可能である。
【００１７】
本技術によって可能となるもう１つの好ましい特徴は、ターゲットプログラムコードに関するブレークポイントとシミュレーションコードに関するブレークポイントとを論理的に結合する機能である。従って、ターゲットプログラムコードの属性とシミュレーションコードの属性との組み合わせ（すなわち、そのターゲットプログラマブルデバイスのためのモデルの特定の部分を用いるターゲットプログラマブルデバイスのシミュレーション）は、デバッグイベントを引き起こすために用いることが可能である（例えば、そのような組み合わせが存在するときに発生する問題を調査するためにシステムの状態を検査することができるような停止処理）。
【００１８】
もう１つの実施形態から見て、本発明は、上記技術に従う方法を実行するためにコンピュータを制御する動作が可能なコンピュータプログラムを含むプログラム製品を提供する。
【００１９】
さらなる実施形態から見て、本発明は、ターゲットプログラムコードを実行するターゲットプログラマブルデバイスのシミュレーションのデバッグ装置を提供し、前記装置は、前記ターゲットプログラムコードを実行する前記ターゲットプログラマブルデバイスの動作をシミュレーションするためにシミュレーションコードを実行するホストプロセッサと、前記ホストプロセッサによる前記シミュレーションコードの実行の間に前記ホストプロセッサのホストリソースへのアクセスを提供する動作が可能であるシミュレーションホストデバッガと、前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードのシミュレーションされた実行の間に前記ターゲットリソースへのアクセスを提供する動作が可能であるターゲットデバイスデバッガとを具備し、前記シミュレーションコードは、シミュレーションされる前記ターゲットプログラマブルデバイスのターゲットリソースを記憶する動作が可能であり、前記シミュレーションホストデバッガと前記ターゲットデバイスデバッガの実行は同期され、かつ前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガへの前記ターゲットリソースの返却を引き起こすために、前記シミュレーションコードによって提供される前記ターゲットプログラマブルデバイスのデバッグインタフェースにアクセス要求を送信することによって前記ターゲットリソースにアクセスする。
【００２０】
本発明の上記および他の目的、特徴および効果は、添付図面とともに後述の実施形態の詳細な説明から明らかになる。
【発明を実施するための最良の形態】
【００２１】
図１は、ターゲットプログラムコードを実行するターゲットプログラマブルデバイスをシミュレーションするためのシミュレーションシステムを説明する図である。シミュレーションコード２は、マイクロプロセッサコアのようなターゲットデバイスのサイクル精度モデルを提供するために開発されたものである。シミュレーションコード２は、その上でターゲットプログラマブルデバイスのためのターゲットプログラムコードを実行することが可能である仮想マシンを構成すると判断することができる。シミュレーションされたターゲットプログラマブルデバイス上でのこのターゲットプログラムコードの実行は、ターゲットプログラマブルデバイスをテストすることとターゲットプログラムコードをテストすることとの両方に効果的である。動作において、シミュレーションコード２は、ターゲットプログラマブルデバイスによる実行のためにプログラムメモリ（および恐らく処理されるデータ）の内容を構成するデータとともに提供される。ターゲットデバイスは、実際は、シミュレーションコード内のプログラムコードのラインと、ターゲットデバイスの状態を表わすシミュレーションコードによって記憶されたデータとによって表わされると理解されるが、ターゲットプログラマブルデバイスは、図１の構成要素４として図示されている。
【００２２】
前記シミュレーションコード２は、シミュレーションされるターゲットプログラマブルデバイスのターゲットリソースの現在値の記憶を保持するために動作する。そのようなターゲットリソースの例は、現在のレジスタ値、現在のメモリ値、実行されている現在のプログラムオペレーションコード、命令パイプラインの状態を示す現在のパイプラインデータ、等である。また、シミュレーションコードは、ターゲットプログラマブルデバイス４のサイクル精度の動作をモデル化するシミュレーションコードのために必要なターゲットプログラマブルデバイス４に関する著しくより多くのデータを含みかつ保持する。シミュレーションコード２は、ＬＩＳＡのような機械記述言語から生成され、かつ使用において必要とする。一旦ターゲットプログラマブルデバイスの正しいＬＩＳＡの記述が生成されると、シミュレーションコードは適切なツールを用いてＬＩＳＡから生成することが可能である。ＬＩＳＡモデルからのシュミレーションコードの生成は周知技術である。
【００２３】
また、図１には、ターゲットプログラマブルデバイス４に結合されたデバッグインタフェース６が表わされている。このデバッグインタフェースは、ホストプロセッサ内に構成されたメモリ領域とすることが可能である（ホストプロセッサは、典型的に、このシミュレーションを実施するために用いられる高性能ワークステーション、または、より性能が要求されるときにはサーバ設備である）。また、デバッグインタフェース６は、シミュレーションコード２内のアプリケーションプログラムインタフェースの形式で提供することが可能であり、シミュレーションコード２によって受信された要求に応答し、かつシミュレーションコード２によって保持されているターゲットリソースデータの現在のコピーを返却することによってそれらの要求に応答するために動作する。
【００２４】
ターゲットプログラマブルデバイスブレークポイント８は、ターゲットプログラマブルデバイス４が重要であるとして知られる所定状態に到達したときに、図１に示すように各種のデバッガにこれが通知され、かつデバッグアクション、例えば、システムの状態を観察することが可能であるようにシミュレーションを停止する、トレース機能のオン／オフを行う、等が引き起こされるように、シミュレーションコード２によって監視される。
【００２５】
前記シミュレーションコード２は、それ自体、周知のＧＤＢデバッガのようなシミュレーションホストデバッガ１０によって制御される。シミュレーションホストデバッガ１０は、シミュレーションコード２を実際にはデバッグされるコード以外のものとして扱い、かつそのコードをデバッグするためのリソース、例えば、シミュレーションコード２内の適切なポイントに到達したときに知らせる動作をするブレークポイント機構１２を提供する汎用デバッガであることが可能である。シミュレーションホストデバッガ１０として使用するために一般的なデバッガを用いることは、実現をより簡単にする。
【００２６】
マスタデバッガ１４は、例えば、シミュレーションホストデバッガにコマンドを与え、かつミュレーションホストデバッガ１０によって検出され報告されたイベントに応答することによってシミュレーションホストデバッガ１０を制御するために設けられる。マスタデバッガ１４内には、そのターゲットプログラムコードを実行するターゲットプログラマブルデバイス４を対象とするデバッグ機能へのアクセスを提供し、かつ与えるために用いられるターゲットデバイスデバッガ１８とともに、ターゲットプログラマブルデバイス４のシミュレーションのデバッグを制御するために動作するマスタシミュレーションホストデバッガ１６が提供される。ターゲットデバイスデバッガ１８は、シミュレーションホストデバッガ１０を介してシミュレーションコード２内のデバッグインタフェース６に送信されるターゲットリソースアクセス要求を出力する。デバッグインタフェース６は、ターゲットプログラマブルデバイスのためのターゲットリソースの現在のコピーを返却し、そして、ターゲットプログラマブルデバイスのためにターゲットデバイスデバッガの状態を更新することが可能である。ターゲットデバイスデバッガ１８内のプログラムブレークポイント２０は、到達されるあるプログラムコードポイント、適宜、デバイスオペコードレベルブレークポイントまたはソースプログラムレベルブレークポイントのいずれかに応答することが可能である。単一ソースレベルプログラム命令はいくつかのオペコードに対応付けることが可能であり、かつソースコード命令におけるブレークポイントセットは、そのソース命令が対応付けられる各々のオペコードのための複合ブレークポイントに対応付けることが可能であると理解される。
【００２７】
前記マスタシミュレーションホストデバッガ１６は、ターゲットデバイスデバッガ１８にシミュレーションコード２の動作におけるポイントが、ターゲットデバイスデバッガ１８のためにターゲットリソースの更新を要求することが適切な位置に到達したことをターゲットデバイスデバッガ１８に通知する役割を果たす。そのような適切なポイントは、それらがホストシミュレーションコード内に存在するのか、あるいは、そのターゲットプログラムコードが実行されるターゲットデバイスの状態中に存在するのかいずれにせよ、プログラムオペコードの実行境界、到達される関連のあるデバッグ参照ポイント、例えば、検出されたブレークポイント、ウォッチポイント、等であることが可能である。ターゲットデバイスデバッガ１８は、シミュレーションを開始および停止するためのコマンド、シミュレーションを通したステップおよび他のコマンドを出力するために用いることができる。これらのコマンドは、マスタシミュレーションホストデバッガ１６およびシミュレーションホストデバッガ１０を介してシミュレーションコードにシミュレーションコード２の動作を制御するために送信される。シミュレーションコード内のブレークポイント２２は、マスタシミュレーションホストデバッガ１６内に設定することも可能である。これらのシミュレーションコードブレークポイントは、しかしシミュレーション内のバグ等を生じさせる可能性がある状態を定義する特定のマシンに生成されるリファレンスを参照することが可能である。ブレークポイント２２は、両方のイベントが充足されたときまたは他のいくつかの論理的な結合においてのみ引き起こされるデバッグイベントのようなブレークポイント２０と論理的に結合することが可能である。
【００２８】
ターゲットデバイスデバッガ１８がターゲットリソースにアクセス要求を出力する可能性があるときの例は、ターゲットプログラマブルデバイス４が重要なアーキテクチャ上の状態に到達したターゲットブレークポイント８をシミュレーションコード２が検出したときであり、そしてこれは、デバッグ参照ポイントとして用いられ、かつシミュレーションホストデバッガ１０およびマスタシミュレーションホストデバッガ１６を介してターゲットデバイスデバッガ１８に通知される。すると、ターゲットデバイスデバッガ１８は、シミュレーションホストデバッガ１０を介してデバッグインタフェース６にターゲットリソースアクセス要求を出力することが可能であり、かつユーザにデバッグ情報を提供するために返却されたターゲットリソース情報に応答することが可能である。典型的なデバッグ情報は、レジスタ内容の表示、実行されたオペコード、シミュレーションされる命令パイプラインの状態、メモリ内容等が可能である。そのようなデバッグ情報とともに、ターゲットプログラムコードは、正しい動作のために解析することが可能であり、かつターゲットプログラマブルデバイス４とのその共通部分は評価されることが可能である。
【００２９】
前記マスタシミュレーションホストデバッガ１６は、シミュレーションコード２のデバッグを可能とするためにシミュレーションコード２から読み出されたホストリソースに応答する。そのようなホストリソースの例は、ホストレジスタ内容データ、ホストメモリ内容データおよび実行されるホストプログラムオペコードを含む。従って、ホストシステム（例えば、ターゲットプログラムコードを実行するターゲットプログラマブルデバイスをシミュレーションするワークステーションまたはサーバ設備）の状態は、正確かつ正しい動作のために検査および調査されることが可能である。従って、ホストリソースはシミュレーションコード２の実行の結果を示すデバッグ情報を提供するために用いられる。
【００３０】
図２は第２実施形態を表わす。この実施形態において、並列のターゲットプログラマブルデバイス２４、２６は、シミュレーションコード２８によってシミュレーションされる。非プログラマブルターゲットデバイス３０もシュミレーションされる。これらのターゲットデバイスの各々は、シミュレーションコード２８内でそのために提供される関連するブレークポイント制御を有する。デバッグサーバ３２は、ターゲットデバイスデバッガ３４によって生成されたターゲットリソースアクセス要求を受信し、これらを意図されたターゲットデバイス２４、２６、３０の適切なデバッグインタフェースに送信するために動作する。返却されたターゲットリソース情報はデバッグサーバ３２を介して送信され、ターゲットデバイスデバッガ３４へ戻され、これは対応するターゲットデバイス２４、２６、３０をデバッグするために用いることが可能である。従って、ターゲットデバイスデバッガ３４は、特定のターゲットデバイスのターゲットデバイスデバッガに提供する視野を切り換えることが可能である。また、並列のターゲットデバイスデバッガ３４は、各々が、それに対応するターゲットデバイス２４、２６、３０に関するデバッグ情報を同時に提供するように動作可能とし、これが、対応するターゲットデバイスデバッガを最新に維持するためにデバッグサーバ３２を介したターゲットリソースの回復によって容易であるように提供することが可能である。
【００３１】
図３Ａおよび図３Ｂは、全体のシステム動作における異なるシミュレーションレベルと、これらのレベルの間の関係と、ターゲットまたはホストブレークポイントと、ターゲットまたはホスト同期ポイントとを表わす図である。
【００３２】
図３Ａは、時間に対する実行を表わす図である。第１レベル実行部分３６、３８、４０は、ターゲットプログラマブルデバイス４に直接関係する更新を行うとともに処理ステップを実行するシミュレーションコードに対応する。ターゲットプログラマブルデバイスブレークポイント４２のリストは、実行部分３６、３８、４０の動作に適用されるデバッグブレークポイントを特定する。所定時刻４４、４６、４８は、物理デバイスまたは物理デバイスのクロック周期の境界としてのその動作におけるブレークポイントに従うならば、やがてそれらのシミュレーションされたターゲットプログラマブルデバイスの動作が割り込まれるポイントに対応し、かつこれらのポイントはターゲットプログラマブルデバイスにおいて予測された動作に対応する。特に、ポイント４６は、与えられた命令の終了部の処理と開始部の処理との間の物理デバイスの動作に対応する現在のポイントにおいて発生する。例えば、ターゲットアプリケーションプログラムブレークポイントのための検査が終了部において発生した可能性があるが、シミュレーション周期の開始部において通常行われるようなブレークポイントフラグのクリアが発生しなかった可能性がある。
【００３３】
シミュレーションコード部分５０、５２は、ターゲットプログラマブルデバイスのモデリングをサポートするホストシステムにおいて実行される処理に対応する。特にこれらのコード部分５０、５２は、ＬＩＳＡで記載されたターゲットプログラマブルデバイス記述の解釈を含む。ホストブレークポイントの選択は、ターゲットプログラマブルデバイスそれ自体をデバッグすることよりむしろターゲットプログラマブルデバイスのモデルをデバッグするため、このホストシミュレーションコード５０、５２の動作をデバッグするために提供される。コード部分５０、５２は、シミュレーションコードの部分を形成するほとんどどのようなホスト命令の間にも、より良い精度（granularity）レベルでブレークポイントに従うことが可能である。
【００３４】
図３Ｂは、ターゲットプログラマブルデバイスをモデル化するＬＩＳＡコードの解釈に対応するコード部分５０、５２とともにシミュレーションされたターゲットプログラマブルデバイスの状態の処理に対応するコード部分３６、３８、４０の代わりの図を表わす。ターゲットプログラマブルデバイスのプログラム実行のデバッグのために、ハードウェアで実現されたときにそのターゲットプログラマブルデバイスの動作となるものに対応する制限された数の固有ターゲット同期ポイントが存在することが分かる。基本的にこれらの固有ターゲット同期ポイントは一連のホストデバイス命令であるが、定義された固有ターゲット同期ポイントよりむしろこれらの命令の１つにおける割り込みの実行は、シミュレーションされた動作とそれらのポイントにおいて固定化された状態とはシリコンの物理的なターゲットプログラマブルデバイスの実際の動作に対応しないため、誤解を招くおそれのある動作を行う可能性がある。上記と対照的に、ＬＩＳＡマシン定義の解釈に対応するコード部分５０、５２、およびシミュレーションコード内のその他の提供動作は、シミュレーションコードそれ自体をデバッグするためにたいへんよい精度レベルにおいて解釈することが可能である。このよりよい精度レベルは全てのホストプログラム命令において必要であるとは限らないが、例えば、そのような個々のモデリング命令のために、正しい動作と、このシステムの他の構成との相互作用とを確認することが可能であるために、ターゲットプログラマブルデバイスの特定の構成をモデル化することを意図した各々のＬＩＳＡ命令の処理の後に、必要となる可能性がある。
【００３５】
図４は、上記の技術を実現するために用いることが可能である種類の汎用のコンピュータ２００を表わす図である。この汎用のコンピュータ２００は、中央処理装置２０２、ランダムアクセスメモリ２０４、リードオンリメモリ２０６、ネットワークインタフェースカード２０８、ハードディスクドライブ２１０、ディスプレイドライバ２１２およびモニタ２１４、および、キーボード２１８およびマウス２２０を有するユーザ入出力回路２１６を含み、これら全てが共通バス２２２を介して接続されている。動作において中央処理装置２０２は、ランダムアクセスメモリ２０４、リードオンリメモリ２０６およびハードディスクドライブ２１０のうち１つまたは２つ以上に記憶され、または、ネットワークインタフェースカード２０８を介した動的にダウンロードされることが可能なコンピュータプログラム命令を実行する。実行された処理結果は、ディスプレイドライバ２１２およびモニタ２１４を介してユーザに表示することが可能である。汎用のコンピュータ２００の動作を制御するためのユーザ入力は、キーボード２１８またはマウス２２０からユーザ入出力回路２１６を介して受信することが可能である。コンピュータプログラムは、各種の異なるコンピュータ言語で記載することが可能であると理解される。コンピュータプログラムは、記録媒体に記憶され、かつ配布されることが可能であるか、または、汎用のコンピュータ２００に動的にダウンロードされることが可能である。適切なコンピュータプログラムの制御のもとで動作するときに、汎用のコンピュータ２００は上記の技術を実行することが可能であり、かつ上記の技術を実行するための装置を形成すると判断することが可能である。汎用のコンピュータ２００のアーキテクチャは相当に変更することが可能であり、かつ図４は一例に過ぎない。
【００３６】
添付図面を参照して本発明の説明としての実施形態が詳細に記載されているが、本発明はそれらの正確な実施形態に限定されず、かつ添付の特許請求の範囲によって定義された本発明の範囲および思想から逸脱することなく、この技術分野の当業者によって様々に変形することが可能であると解釈されるべきである。
【図面の簡単な説明】
【００３７】
【図１】ターゲットプログラムコードを実行するターゲットプログラマブルデバイスのシミュレーションを提供する第１実施形態を説明する図である。
【図２】それぞれのターゲットプログラムコードを実行する複数のターゲットプログラマブルデバイスのシミュレーションの第２実施形態を説明する図である。
【図３Ａ】シミュレーションの実行における図１および図２のシステム内の各種構成要素によって実行される動作を説明する図である。
【図３Ｂ】シミュレーションの実行における図１および図２のシステム内の各種構成要素によって実行される動作を説明する図である。
【図４】上記技術を実現するために用いることが可能である種類の汎用のコンピュータを説明する図である。
【符号の説明】
【００３８】
２、２８  シミュレーションコード
４  ターゲットプログラマブルデバイス
６  デバッグインタフェース
８、４２  ターゲットプログラマブルデバイスブレークポイント
１０  シミュレーションホストデバッガ
１２  ブレークポイント機構
１４  マスタデバッガ
１６  マスタシミュレーションホストデバッガ
１８、３４  ターゲットデバイスデバッガ
２０  プログラムブレークポイント
２２  ブレークポイント
２４、２６  ターゲットプログラマブルデバイス
３０  非プログラマブルターゲットデバイス
３２  デバッグサーバ
３６、３８、４０  第１レベル実行部分
４４、４６、４８  所定時刻
５０、５２  シミュレーションコード部分
５４  ホストブレークポイント
２００  汎用のコンピュータ
２０２  中央処理装置
２０４  ランダムアクセスメモリ
２０６  リードオンリメモリ
２０８  ネットワークインタフェースカード
２１０  ハードディスクドライブ
２１２  ディスプレイドライバ
２１４  モニタ
２１６  ユーザ入出力回路
２１８  キーボード
２２０  マウス
２２２  共通バス
【図１】
2006313521.tif 000003
【図２】
2006313521.tif 000004
【図３Ａ】
2006313521.tif 000005
【図３Ｂ】
2006313521.tif 000006
【図４】
2006313521.tif 000007
【外国語明細書】
2006313521.tif 000008
2006313521.tif 000009
2006313521.tif 000010
2006313521.tif 000011
2006313521.tif 000012
2006313521.tif 000013
2006313521.tif 000014
2006313521.tif 000015
2006313521.tif 000016
2006313521.tif 000017
2006313521.tif 000018
2006313521.tif 000019
2006313521.tif 000020
2006313521.tif 000021
2006313521.tif 000022
2006313521.tif 000023
2006313521.tif 000024
2006313521.tif 000025
2006313521.tif 000026
2006313521.tif 000027
2006313521.tif 000028
2006313521.tif 000029
2006313521.tif 000030
2006313521.tif 000031
2006313521.tif 000032