[go: up one dir, main page]

JP4472615B2 - プログラマブルデバイスのモデリング方法および装置 - Google Patents

プログラマブルデバイスのモデリング方法および装置 Download PDF

Info

Publication number
JP4472615B2
JP4472615B2 JP2005298175A JP2005298175A JP4472615B2 JP 4472615 B2 JP4472615 B2 JP 4472615B2 JP 2005298175 A JP2005298175 A JP 2005298175A JP 2005298175 A JP2005298175 A JP 2005298175A JP 4472615 B2 JP4472615 B2 JP 4472615B2
Authority
JP
Japan
Prior art keywords
target
simulation
debugger
host
code
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.)
Active
Application number
JP2005298175A
Other languages
English (en)
Other versions
JP2006313521A (ja
Inventor
シュテファン・レオ・アレクサンダー・ピーズ
ヨハネス・ゲオルグ・オバーマン
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2006313521A publication Critical patent/JP2006313521A/ja
Application granted granted Critical
Publication of JP4472615B2 publication Critical patent/JP4472615B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3632Debugging of software of specific synchronisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、電子デバイスのモデリングの分野に関する。より詳細には、本発明はプログラム命令を実行するプログラマブルデバイスのモデリングの分野に関する。
データ処理デバイス、例えば、マイクロプロセッサ、DSP、等のデバイスの動作を評価するために用いることが可能であるモデルを提供することが知られている。そのようなモデルは多くの場合、新たなプログラマブルデバイスの設計および開発の段階で、実際のデバイスを製造する必要なしにそれらのデバイスの性能を評価するために用いられる。また、さらに、プログラマブルデバイスは、それらの上で実行されるように開発された適切なプログラムが必要であり、かつ、実際のデバイスが利用可能となる前に、そのようなプログラムの動作のモデル化が可能であることが好ましい。この方法におけるモデリングは、適切な設計変更によって比較的容易にかつ低コストでそれらの問題を克服することが可能であるように、開発工程の早期に潜在的な問題の特定に役立つ。また、プログラムをそれらが実行されるハードウェアと同時に開発することが可能であることは、全体の開発時間を減少させ、効果的である。
上記の要求条件に取り組むために、英国ケンブリッジのARM社によって開発されたMaxCoreのようなモデリングツールが提供されていることが知られている。そのようなツールは、LISAのような言語で提供されるマイクロプロセッサコアのような新たなプログラマブルデバイスの動作特性の公式な定義を取り入れることが可能であり、かつそのプログラマブルデバイスのサイクル精度モデル(cycle accurate model)を自動的に生成するためにこれを用いることが可能である。このサイクル精度モデルは、シミュレーションされるプログラマブルデバイスの動作を調査するために、高性能汎用コンピュータのようなホストプロセッサ上で実行することが可能であるシミュレーションコードを提供する。この方法において、プログラムコードを実行するために用いられるターゲットデバイスをシミュレーションするために、シミュレーションコードを用いることが知られている。しかし、プログラマブルデバイスのモデルは、それ自体に特定および修正が必要なバグを含む可能性がある。シミュレーションされた実行に用いられるプログラムコードは、同様に特定および修正が必要なバグを含む可能性がある。シミュレーションが実行され、かつ予期しない結果が発生したときにそこに困難が生じ、問題がハードウェアのシミュレーションに存在するのか、シミュレーションされた実行に用いられるプログラムコードに存在するのかを決定することが困難となる可能性がある。特に、プログラムコードを実行するハードウェアをシミュレーションするシミュレーションコードは、欠陥を示す予期しない動作を表わす可能性があり、かつ依然としてハードウェアの動作をシミュレーションするシミュレーションコードの状態から、プログラムコードの実行においてどのポイントに到達したか、および、到達したプログラマブルデバイスのモデル化されたアーキテクチャ上の状態がどのようであったかを決定することは困難である。
1つの実施形態から見て、本発明は、ターゲットプログラムコードを実行するターゲットプログラマブルデバイスのシミュレーションのデバッグ方法を提供し、前記方法は、前記ターゲットプログラムコードを実行する前記ターゲットプログラマブルデバイスの動作をシミュレーションするためにホストプロセッサ上でシミュレーションコードを実行するステップと、前記ホストプロセッサによる前記シミュレーションコードの実行の間に前記ホストプロセッサのホストリソースへのアクセスを提供するシミュレーションホストデバッガを実行するステップと、前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードのシミュレーションされた実行の間に前記ターゲットリソースへのアクセスを提供するターゲットデバイスデバッガを実行するステップとを有し、前記シミュレーションコードは、シミュレーションされる前記ターゲットプログラマブルデバイスのターゲットリソースの現在値の記憶を保持する動作が可能であり、前記シミュレーションホストデバッガおよび前記ターゲットデバイスデバッガの実行は同期され、かつ前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガへの前記ターゲットリソースの返却を引き起こすために、前記シミュレーションコードによって提供される前記ターゲットプログラマブルデバイスのデバッグインタフェースにアクセス要求を送信することによって前記ターゲットリソースにアクセスする。
本技術は、それによってターゲットプログラマブルデバイスをシミュレーションするモデルが正しく構成され、かつ予測されたように動作するか否かに関する評価を可能とするホストシミュレーションリソースへのアクセスとともに、シミュレーションされるターゲットプログラマブルデバイスのアーキテクチャ上の状態に関する情報、および従ってプログラムコードが予測されたように動作するか否かに関する表示を与えるターゲットデバイスリソースとの両方へのアクセスを提供することが可能なシステムを提供する。このホストシミュレーションリソースおよびターゲットデバイスリソースの両方への同時アクセスは、それを介してシミュレーションされたコードによって記憶されたターゲットデバイスリソースがターゲットデバイスデバッガにアクセスおよび送信されることが可能であるシミュレーションコード内のターゲットプログラマブルデバイスのためのデバッグインタフェースの提供によって可能とされる。したがって、シミュレーションコードは、シミュレーションそれ自体の正確さが検査されるように、ホストシミュレーションリソースそれ自身へのアクセスを提供するとともに、プログラムコードの実行に応答してターゲットデバイスの正しい動作の評価において利用するために、ターゲットリソースデータを記憶し、かつターゲットリソースデータへのアクセスを提供する。シミュレーションの動作のこれらの2つの視野の提供は、ターゲットデバイスの正確なモデルをより迅速に開発するために効果的であるとともに、ターゲットデバイスの動作とともにシミュレータの動作をバグがより容易に特定することが可能であるように同時に追跡することを可能とする。
デバッグインタフェースは多くの異なる方法で提供可能であると理解される。可能性がある1つの簡単な例は、シミュレーションコードがターゲットリソースを知られたメモリ位置、または、適切なポインタによって特定される位置に記憶することを確実にし、そして、ターゲットデバイスデバッガが要求されたときにそれらのリソースにアクセス可能とすることである。しかし、より柔軟かつスケーラブルなデバッグインタフェースを提供する好ましい方法は、シミュレーションコード内にターゲットデバイスデバッグアプリケーションプログラムインタフェース(API)を提供し、そのAPIに出力された読み取り要求がシミュレーションコードによって記憶されたターゲットリソースの返却を引き起こすことが可能であるようにすることである。これは、シミュレーションコードがターゲットリソースの記憶を提供するとともにターゲットリソースアクセス要求に応答する方法において大きい自由度を与える。
いくつかの実施形態において、アクセス要求は、シミュレーションホストデバッガを介してターゲットデバイスデバッガからデバッグインタフェースへ送信されるとともに、同じ経路で応答されることが可能である。シミュレーションホストデバッガは、既にシミュレーションコードと通信し、かつ既にアクセス要求を送信するとともに応答結果を受信するための適切なメカニズムを有するので、これはターゲットデバイスデバッガを直接にシミュレーションコードと通信する必要から解放する。
他の状況において効果的である可能性のある他にとるべき実施形態として、シミュレーションコードは、ターゲットデバイスデバッガから直接にアクセス要求を受信するとともに、それらをシミュレーションコードによってシミュレーションされる1つまたは2つ以上のターゲットデバイスのデバッグインタフェースに送信する動作が可能なデバッグサーバを含むことが可能である。
システムの柔軟性を増加させるさらなる考え方のレベルは、シミュレーションホストデバッガを制御する動作が可能なマスタシミュレーションホストデバッガを提供することである。従って、シミュレーションホストデバッガは、本技術が関連する種類のシミュレーションコードであろうと、あるいは何らかの他のコードであろうとプログラムコードをデバッグするための汎用デバッガの形式でより容易に提供することが可能である。本技術に関する固有の特徴とターゲットプログラマブルデバイスのシミュレーションのためのその利用とは、シミュレーションホストデバッガ内で提供される汎用のデバッグに関するオーバーヘッドをそれ自体が有する必要のないマスタシミュレーションホストデバッガ内に含むことが可能である。
また、前記マスタシミュレーションホストデバッガは、シミュレーションの動作とターゲットデバイスの動作とが適切に相互に関連するために、ターゲットデバイスデバッガをマスタシミュレーションホストデバッガと同期させるためにターゲットデバイスデバッガと通信する役割を果たすことも可能である。
前記シミュレーションホストデバッガは、ターゲットデバイスデバッガに入手可能なターゲットリソースが最新に更新されるように、所定参照ポイントに到達したシミュレーションコードに応答して、ターゲットデバイスデバッガにアクセス要求の送信を引き起こさせることが好ましい。適切なデバッグ参照ポイントの例は、シミュレーションコード内のブレークポイント、シミュレーションコード内のウォッチポイント、ターゲットプログラムコード内のブレークポイントまたはターゲットリソース内のウォッチポイントを含む。ターゲットプログラムコード内のブレークポイントとターゲットリソース内のウォッチポイントとは、シミュレーションされるターゲットデバイスがブレークポイントまたはウォッチポイントがセットされた状態をいつ受け入れたかを特定するために動作するターゲットデバイスブレークポイント部分を含むシミュレーションコードそれ自体によって特定される。逆に、シミュレーションホストデバッガは、シミュレーションコードのためのブレークポイントまたはウォッチポイントに対応する適切なポイントにシミュレーションコードがいつ到達したかを特定するためにシミュレーションコードを監視する動作を行う。
マスタシミュレーションホストデバッガを含むシステムの状況において、デバッグ参照ポイントの到達は、そのようなマスタシミュレーションホストデバッガを介してターゲットデバイスデバッガに通知することが可能である。同様に、ターゲットデバイスデバッガによって出力が可能であるシミュレーションコードの実行を制御するコマンドは、マスタシミュレーションホストデバッガを介してシミュレーションコードに送信することが可能である。
監視することが可能であるターゲットリソースの例は、シミュレーションされたターゲットデバイスレジスタ内容データ、シミュレーションされたターゲットデバイスメモリ内容データ、シミュレーションされ実行されたターゲットデバイスプログラムオペコード、シミュレーションされた命令パイプラインデータ、例えば、レジスタスコアボード情報、一時命令記憶装置およびフォワード情報、等である。
ターゲットデバイスデバッガによって読み出されるターゲットリソースは、ターゲットプログラマブルデバイスによるターゲットプログラムコードのシミュレーションされた実行の結果を示すデバッグ情報を提供するために、ターゲットデバイスデバッガによって用いられる。これは、アーキテクチャ上の、またはマイクロアーキテクチャ上の、シミュレーションされるターゲットプログラマブルデバイスの動作の概観を効果的に与えると理解することが可能である。
同様に、ホストリソースは、シミュレーションコードの実行の結果を示すとともに、従ってそのシミュレーションコードのデバッグを可能とするデバッグ情報を提供するために用いることが可能である。
シミュレーションコードは、いくつかの実施形態において、例えば、プロセッサコード、DSPコア、VLIWプロセッサ等を含むことが可能であるSoCのような複数のターゲットプログラマブルデバイスの動作をシミュレーションすることが可能であると理解される。また、シミュレーションコードは、例えば、共有メモリ、キャッシュ、タイマ等のような1つまたは2つ以上の非プログラマブルターゲットデバイスの動作をシミュレーションするために用いることも可能である。
本技術によって可能となるもう1つの好ましい特徴は、ターゲットプログラムコードに関するブレークポイントとシミュレーションコードに関するブレークポイントとを論理的に結合する機能である。従って、ターゲットプログラムコードの属性とシミュレーションコードの属性との組み合わせ(すなわち、そのターゲットプログラマブルデバイスのためのモデルの特定の部分を用いるターゲットプログラマブルデバイスのシミュレーション)は、デバッグイベントを引き起こすために用いることが可能である(例えば、そのような組み合わせが存在するときに発生する問題を調査するためにシステムの状態を検査することができるような停止処理)。
もう1つの実施形態から見て、本発明は、上記技術に従う方法を実行するためにコンピュータを制御する動作が可能なコンピュータプログラムを含むプログラム製品を提供する。
さらなる実施形態から見て、本発明は、ターゲットプログラムコードを実行するターゲットプログラマブルデバイスのシミュレーションのデバッグ装置を提供し、前記装置は、前記ターゲットプログラムコードを実行する前記ターゲットプログラマブルデバイスの動作をシミュレーションするためにシミュレーションコードを実行するホストプロセッサと、前記ホストプロセッサによる前記シミュレーションコードの実行の間に前記ホストプロセッサのホストリソースへのアクセスを提供する動作が可能であるシミュレーションホストデバッガと、前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードのシミュレーションされた実行の間に前記ターゲットリソースへのアクセスを提供する動作が可能であるターゲットデバイスデバッガとを具備し、前記シミュレーションコードは、シミュレーションされる前記ターゲットプログラマブルデバイスのターゲットリソースを記憶する動作が可能であり、前記シミュレーションホストデバッガと前記ターゲットデバイスデバッガの実行は同期され、かつ前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガへの前記ターゲットリソースの返却を引き起こすために、前記シミュレーションコードによって提供される前記ターゲットプログラマブルデバイスのデバッグインタフェースにアクセス要求を送信することによって前記ターゲットリソースにアクセスする。
本発明の上記および他の目的、特徴および効果は、添付図面とともに後述の実施形態の詳細な説明から明らかになる。
図1は、ターゲットプログラムコードを実行するターゲットプログラマブルデバイスをシミュレーションするためのシミュレーションシステムを説明する図である。シミュレーションコード2は、マイクロプロセッサコアのようなターゲットデバイスのサイクル精度モデルを提供するために開発されたものである。シミュレーションコード2は、その上でターゲットプログラマブルデバイスのためのターゲットプログラムコードを実行することが可能である仮想マシンを構成すると判断することができる。シミュレーションされたターゲットプログラマブルデバイス上でのこのターゲットプログラムコードの実行は、ターゲットプログラマブルデバイスをテストすることとターゲットプログラムコードをテストすることとの両方に効果的である。動作において、シミュレーションコード2は、ターゲットプログラマブルデバイスによる実行のためにプログラムメモリ(および恐らく処理されるデータ)の内容を構成するデータとともに提供される。ターゲットデバイスは、実際は、シミュレーションコード内のプログラムコードのラインと、ターゲットデバイスの状態を表わすシミュレーションコードによって記憶されたデータとによって表わされると理解されるが、ターゲットプログラマブルデバイスは、図1の構成要素4として図示されている。
前記シミュレーションコード2は、シミュレーションされるターゲットプログラマブルデバイスのターゲットリソースの現在値の記憶を保持するために動作する。そのようなターゲットリソースの例は、現在のレジスタ値、現在のメモリ値、実行されている現在のプログラムオペレーションコード、命令パイプラインの状態を示す現在のパイプラインデータ、等である。また、シミュレーションコードは、ターゲットプログラマブルデバイス4のサイクル精度の動作をモデル化するシミュレーションコードのために必要なターゲットプログラマブルデバイス4に関する著しくより多くのデータを含みかつ保持する。シミュレーションコード2は、LISAのような機械記述言語から生成され、かつ使用において必要とする。一旦ターゲットプログラマブルデバイスの正しいLISAの記述が生成されると、シミュレーションコードは適切なツールを用いてLISAから生成することが可能である。LISAモデルからのシュミレーションコードの生成は周知技術である。
また、図1には、ターゲットプログラマブルデバイス4に結合されたデバッグインタフェース6が表わされている。このデバッグインタフェースは、ホストプロセッサ内に構成されたメモリ領域とすることが可能である(ホストプロセッサは、典型的に、このシミュレーションを実施するために用いられる高性能ワークステーション、または、より性能が要求されるときにはサーバ設備である)。また、デバッグインタフェース6は、シミュレーションコード2内のアプリケーションプログラムインタフェースの形式で提供することが可能であり、シミュレーションコード2によって受信された要求に応答し、かつシミュレーションコード2によって保持されているターゲットリソースデータの現在のコピーを返却することによってそれらの要求に応答するために動作する。
ターゲットプログラマブルデバイスブレークポイント8は、ターゲットプログラマブルデバイス4が重要であるとして知られる所定状態に到達したときに、図1に示すように各種のデバッガにこれが通知され、かつデバッグアクション、例えば、システムの状態を観察することが可能であるようにシミュレーションを停止する、トレース機能のオン/オフを行う、等が引き起こされるように、シミュレーションコード2によって監視される。
前記シミュレーションコード2は、それ自体、周知のGDBデバッガのようなシミュレーションホストデバッガ10によって制御される。シミュレーションホストデバッガ10は、シミュレーションコード2を実際にはデバッグされるコード以外のものとして扱い、かつそのコードをデバッグするためのリソース、例えば、シミュレーションコード2内の適切なポイントに到達したときに知らせる動作をするブレークポイント機構12を提供する汎用デバッガであることが可能である。シミュレーションホストデバッガ10として使用するために一般的なデバッガを用いることは、実現をより簡単にする。
マスタデバッガ14は、例えば、シミュレーションホストデバッガにコマンドを与え、かつミュレーションホストデバッガ10によって検出され報告されたイベントに応答することによってシミュレーションホストデバッガ10を制御するために設けられる。マスタデバッガ14内には、そのターゲットプログラムコードを実行するターゲットプログラマブルデバイス4を対象とするデバッグ機能へのアクセスを提供し、かつ与えるために用いられるターゲットデバイスデバッガ18とともに、ターゲットプログラマブルデバイス4のシミュレーションのデバッグを制御するために動作するマスタシミュレーションホストデバッガ16が提供される。ターゲットデバイスデバッガ18は、シミュレーションホストデバッガ10を介してシミュレーションコード2内のデバッグインタフェース6に送信されるターゲットリソースアクセス要求を出力する。デバッグインタフェース6は、ターゲットプログラマブルデバイスのためのターゲットリソースの現在のコピーを返却し、そして、ターゲットプログラマブルデバイスのためにターゲットデバイスデバッガの状態を更新することが可能である。ターゲットデバイスデバッガ18内のプログラムブレークポイント20は、到達されるあるプログラムコードポイント、適宜、デバイスオペコードレベルブレークポイントまたはソースプログラムレベルブレークポイントのいずれかに応答することが可能である。単一ソースレベルプログラム命令はいくつかのオペコードに対応付けることが可能であり、かつソースコード命令におけるブレークポイントセットは、そのソース命令が対応付けられる各々のオペコードのための複合ブレークポイントに対応付けることが可能であると理解される。
前記マスタシミュレーションホストデバッガ16は、ターゲットデバイスデバッガ18にシミュレーションコード2の動作におけるポイントが、ターゲットデバイスデバッガ18のためにターゲットリソースの更新を要求することが適切な位置に到達したことをターゲットデバイスデバッガ18に通知する役割を果たす。そのような適切なポイントは、それらがホストシミュレーションコード内に存在するのか、あるいは、そのターゲットプログラムコードが実行されるターゲットデバイスの状態中に存在するのかいずれにせよ、プログラムオペコードの実行境界、到達される関連のあるデバッグ参照ポイント、例えば、検出されたブレークポイント、ウォッチポイント、等であることが可能である。ターゲットデバイスデバッガ18は、シミュレーションを開始および停止するためのコマンド、シミュレーションを通したステップおよび他のコマンドを出力するために用いることができる。これらのコマンドは、マスタシミュレーションホストデバッガ16およびシミュレーションホストデバッガ10を介してシミュレーションコードにシミュレーションコード2の動作を制御するために送信される。シミュレーションコード内のブレークポイント22は、マスタシミュレーションホストデバッガ16内に設定することも可能である。これらのシミュレーションコードブレークポイントは、しかしシミュレーション内のバグ等を生じさせる可能性がある状態を定義する特定のマシンに生成されるリファレンスを参照することが可能である。ブレークポイント22は、両方のイベントが充足されたときまたは他のいくつかの論理的な結合においてのみ引き起こされるデバッグイベントのようなブレークポイント20と論理的に結合することが可能である。
ターゲットデバイスデバッガ18がターゲットリソースにアクセス要求を出力する可能性があるときの例は、ターゲットプログラマブルデバイス4が重要なアーキテクチャ上の状態に到達したターゲットブレークポイント8をシミュレーションコード2が検出したときであり、そしてこれは、デバッグ参照ポイントとして用いられ、かつシミュレーションホストデバッガ10およびマスタシミュレーションホストデバッガ16を介してターゲットデバイスデバッガ18に通知される。すると、ターゲットデバイスデバッガ18は、シミュレーションホストデバッガ10を介してデバッグインタフェース6にターゲットリソースアクセス要求を出力することが可能であり、かつユーザにデバッグ情報を提供するために返却されたターゲットリソース情報に応答することが可能である。典型的なデバッグ情報は、レジスタ内容の表示、実行されたオペコード、シミュレーションされる命令パイプラインの状態、メモリ内容等が可能である。そのようなデバッグ情報とともに、ターゲットプログラムコードは、正しい動作のために解析することが可能であり、かつターゲットプログラマブルデバイス4とのその共通部分は評価されることが可能である。
前記マスタシミュレーションホストデバッガ16は、シミュレーションコード2のデバッグを可能とするためにシミュレーションコード2から読み出されたホストリソースに応答する。そのようなホストリソースの例は、ホストレジスタ内容データ、ホストメモリ内容データおよび実行されるホストプログラムオペコードを含む。従って、ホストシステム(例えば、ターゲットプログラムコードを実行するターゲットプログラマブルデバイスをシミュレーションするワークステーションまたはサーバ設備)の状態は、正確かつ正しい動作のために検査および調査されることが可能である。従って、ホストリソースはシミュレーションコード2の実行の結果を示すデバッグ情報を提供するために用いられる。
図2は第2実施形態を表わす。この実施形態において、並列のターゲットプログラマブルデバイス24、26は、シミュレーションコード28によってシミュレーションされる。非プログラマブルターゲットデバイス30もシュミレーションされる。これらのターゲットデバイスの各々は、シミュレーションコード28内でそのために提供される関連するブレークポイント制御を有する。デバッグサーバ32は、ターゲットデバイスデバッガ34によって生成されたターゲットリソースアクセス要求を受信し、これらを意図されたターゲットデバイス24、26、30の適切なデバッグインタフェースに送信するために動作する。返却されたターゲットリソース情報はデバッグサーバ32を介して送信され、ターゲットデバイスデバッガ34へ戻され、これは対応するターゲットデバイス24、26、30をデバッグするために用いることが可能である。従って、ターゲットデバイスデバッガ34は、特定のターゲットデバイスのターゲットデバイスデバッガに提供する視野を切り換えることが可能である。また、並列のターゲットデバイスデバッガ34は、各々が、それに対応するターゲットデバイス24、26、30に関するデバッグ情報を同時に提供するように動作可能とし、これが、対応するターゲットデバイスデバッガを最新に維持するためにデバッグサーバ32を介したターゲットリソースの回復によって容易であるように提供することが可能である。
図3Aおよび図3Bは、全体のシステム動作における異なるシミュレーションレベルと、これらのレベルの間の関係と、ターゲットまたはホストブレークポイントと、ターゲットまたはホスト同期ポイントとを表わす図である。
図3Aは、時間に対する実行を表わす図である。第1レベル実行部分36、38、40は、ターゲットプログラマブルデバイス4に直接関係する更新を行うとともに処理ステップを実行するシミュレーションコードに対応する。ターゲットプログラマブルデバイスブレークポイント42のリストは、実行部分36、38、40の動作に適用されるデバッグブレークポイントを特定する。所定時刻44、46、48は、物理デバイスまたは物理デバイスのクロック周期の境界としてのその動作におけるブレークポイントに従うならば、やがてそれらのシミュレーションされたターゲットプログラマブルデバイスの動作が割り込まれるポイントに対応し、かつこれらのポイントはターゲットプログラマブルデバイスにおいて予測された動作に対応する。特に、ポイント46は、与えられた命令の終了部の処理と開始部の処理との間の物理デバイスの動作に対応する現在のポイントにおいて発生する。例えば、ターゲットアプリケーションプログラムブレークポイントのための検査が終了部において発生した可能性があるが、シミュレーション周期の開始部において通常行われるようなブレークポイントフラグのクリアが発生しなかった可能性がある。
シミュレーションコード部分50、52は、ターゲットプログラマブルデバイスのモデリングをサポートするホストシステムにおいて実行される処理に対応する。特にこれらのコード部分50、52は、LISAで記載されたターゲットプログラマブルデバイス記述の解釈を含む。ホストブレークポイントの選択は、ターゲットプログラマブルデバイスそれ自体をデバッグすることよりむしろターゲットプログラマブルデバイスのモデルをデバッグするため、このホストシミュレーションコード50、52の動作をデバッグするために提供される。コード部分50、52は、シミュレーションコードの部分を形成するほとんどどのようなホスト命令の間にも、より良い精度(granularity)レベルでブレークポイントに従うことが可能である。
図3Bは、ターゲットプログラマブルデバイスをモデル化するLISAコードの解釈に対応するコード部分50、52とともにシミュレーションされたターゲットプログラマブルデバイスの状態の処理に対応するコード部分36、38、40の代わりの図を表わす。ターゲットプログラマブルデバイスのプログラム実行のデバッグのために、ハードウェアで実現されたときにそのターゲットプログラマブルデバイスの動作となるものに対応する制限された数の固有ターゲット同期ポイントが存在することが分かる。基本的にこれらの固有ターゲット同期ポイントは一連のホストデバイス命令であるが、定義された固有ターゲット同期ポイントよりむしろこれらの命令の1つにおける割り込みの実行は、シミュレーションされた動作とそれらのポイントにおいて固定化された状態とはシリコンの物理的なターゲットプログラマブルデバイスの実際の動作に対応しないため、誤解を招くおそれのある動作を行う可能性がある。上記と対照的に、LISAマシン定義の解釈に対応するコード部分50、52、およびシミュレーションコード内のその他の提供動作は、シミュレーションコードそれ自体をデバッグするためにたいへんよい精度レベルにおいて解釈することが可能である。このよりよい精度レベルは全てのホストプログラム命令において必要であるとは限らないが、例えば、そのような個々のモデリング命令のために、正しい動作と、このシステムの他の構成との相互作用とを確認することが可能であるために、ターゲットプログラマブルデバイスの特定の構成をモデル化することを意図した各々のLISA命令の処理の後に、必要となる可能性がある。
図4は、上記の技術を実現するために用いることが可能である種類の汎用のコンピュータ200を表わす図である。この汎用のコンピュータ200は、中央処理装置202、ランダムアクセスメモリ204、リードオンリメモリ206、ネットワークインタフェースカード208、ハードディスクドライブ210、ディスプレイドライバ212およびモニタ214、および、キーボード218およびマウス220を有するユーザ入出力回路216を含み、これら全てが共通バス222を介して接続されている。動作において中央処理装置202は、ランダムアクセスメモリ204、リードオンリメモリ206およびハードディスクドライブ210のうち1つまたは2つ以上に記憶され、または、ネットワークインタフェースカード208を介した動的にダウンロードされることが可能なコンピュータプログラム命令を実行する。実行された処理結果は、ディスプレイドライバ212およびモニタ214を介してユーザに表示することが可能である。汎用のコンピュータ200の動作を制御するためのユーザ入力は、キーボード218またはマウス220からユーザ入出力回路216を介して受信することが可能である。コンピュータプログラムは、各種の異なるコンピュータ言語で記載することが可能であると理解される。コンピュータプログラムは、記録媒体に記憶され、かつ配布されることが可能であるか、または、汎用のコンピュータ200に動的にダウンロードされることが可能である。適切なコンピュータプログラムの制御のもとで動作するときに、汎用のコンピュータ200は上記の技術を実行することが可能であり、かつ上記の技術を実行するための装置を形成すると判断することが可能である。汎用のコンピュータ200のアーキテクチャは相当に変更することが可能であり、かつ図4は一例に過ぎない。
添付図面を参照して本発明の説明としての実施形態が詳細に記載されているが、本発明はそれらの正確な実施形態に限定されず、かつ添付の特許請求の範囲によって定義された本発明の範囲および思想から逸脱することなく、この技術分野の当業者によって様々に変形することが可能であると解釈されるべきである。
ターゲットプログラムコードを実行するターゲットプログラマブルデバイスのシミュレーションを提供する第1実施形態を説明する図である。 それぞれのターゲットプログラムコードを実行する複数のターゲットプログラマブルデバイスのシミュレーションの第2実施形態を説明する図である。 シミュレーションの実行における図1および図2のシステム内の各種構成要素によって実行される動作を説明する図である。 シミュレーションの実行における図1および図2のシステム内の各種構成要素によって実行される動作を説明する図である。 上記技術を実現するために用いることが可能である種類の汎用のコンピュータを説明する図である。
符号の説明
2、28 シミュレーションコード
4 ターゲットプログラマブルデバイス
6 デバッグインタフェース
8、42 ターゲットプログラマブルデバイスブレークポイント
10 シミュレーションホストデバッガ
12 ブレークポイント機構
14 マスタデバッガ
16 マスタシミュレーションホストデバッガ
18、34 ターゲットデバイスデバッガ
20 プログラムブレークポイント
22 ブレークポイント
24、26 ターゲットプログラマブルデバイス
30 非プログラマブルターゲットデバイス
32 デバッグサーバ
36、38、40 第1レベル実行部分
44、46、48 所定時刻
50、52 シミュレーションコード部分
54 ホストブレークポイント
200 汎用のコンピュータ
202 中央処理装置
204 ランダムアクセスメモリ
206 リードオンリメモリ
208 ネットワークインタフェースカード
210 ハードディスクドライブ
212 ディスプレイドライバ
214 モニタ
216 ユーザ入出力回路
218 キーボード
220 マウス
222 共通バス

Claims (21)

  1. ターゲットプログラムコードを実行するターゲットプログラマブルデバイスをシミュレーションするシミュレーションシステムをデバッグする方法であって、
    前記ターゲットプログラムコードを実行する前記ターゲットプログラマブルデバイスの動作をシミュレーションするために前記シミュレーションシステムのホストプロセッサ上でシミュレーションコードを実行するステップと、
    前記ホストプロセッサによる前記シミュレーションコードの実行の間に前記ホストプロセッサのホストリソースへのアクセスを提供するシミュレーションホストデバッガを動作させるステップと、
    シミュレーションされる前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードの実行の間にターゲットリソースへのアクセスを提供するターゲットデバイスデバッガを動作させるステップとを有し、
    前記シミュレーションコードは、前記ホストプロセッサに、シミュレーションされる前記ターゲットプログラマブルデバイスのターゲットリソースの現在値の記憶を保持し、かつ、前記ターゲットプログラマブルデバイスのデバッグインタフェースを提供する動作を実行させ
    前記シミュレーションホストデバッガおよび前記ターゲットデバイスデバッガの動作は同期され、かつ前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガへの前記ターゲットリソースの返却を引き起こすために、前記デバッグインタフェースにアクセス要求を送信することによって前記ターゲットリソースにアクセスする方法。
  2. 前記デバッグインタフェースは、読み出し要求が前記シミュレーションコードの実行によって記憶された前記ターゲットリソースの返却を引き起こすターゲットデバイスデバッグアプリケーションプログラムインタフェースである請求項1に記載の方法。
  3. 前記アクセス要求が前記シミュレーションホストデバッガに送信されると、前記シミュレーションホストデバッガは、前記デバッグインタフェースを介して前記ターゲットリソースを読み出すとともに前記ターゲットリソースを前記ターゲットデバイスデバッガに返却する請求項1に記載の方法。
  4. 前記シミュレーションコードは、前記ホストプロセッサに、前記アクセス要求を受信し、前記デバッグインタフェースを介して前記ターゲットリソースを読み出し、かつ前記ターゲットリソースを前記ターゲットデバイスデバッガに返却する動作が可能であるデバッグサーバの機能を実現させる請求項1に記載の方法。
  5. マスタシミュレーションホストデバッガは、受信したコマンドに応答して前記シミュレーションホストデバッガを制御する動作が可能である請求項1に記載の方法。
  6. 前記マスタシミュレーションホストデバッガおよび前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガを前記マスタシミュレーションホストデバッガと同期させるために通信する請求項5に記載の方法。
  7. 前記シミュレーションホストデバッガは、デバッグ参照ポイントに到達した前記シミュレーションコードに応答して、前記ターゲットデバイスデバッガに前記アクセス要求の送信を引き起こさせる請求項1に記載の方法。
  8. 前記デバッグ参照ポイントは、前記ターゲットプログラムコード内のブレークポイントセット、前記ターゲットリソース内のウォッチポイントセット、前記シミュレーションコード内のブレークポイント、および、前記ホストリソース内のウォッチポイントセットのうち1つである請求項7に記載の方法。
  9. 前記マスタシミュレーションホストデバッガおよび前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガを前記マスタシミュレーションホストデバッガと同期させるために通信し、かつ前記シミュレーションホストデバッガは、前記マスタシミュレーションホストデバッガに前記デバッグ参照ポイントに到達したことを通知し、かつ前記マスタシミュレーションホストデバッガは、前記ターゲットデバイスデバッガに前記アクセス要求の送信を引き起こすことを通知する請求項7に記載の方法。
  10. 前記ターゲットデバイスデバッガは、前記マスタシミュレーションホストデバッガを介して前記シミュレーションコードの実行を制御するために前記シミュレーションホストデバッガにコマンドを送信する請求項6に記載の方法。
  11. 前記ターゲットリソースは、シミュレーションされたターゲットデバイスレジスタ内容データ、シミュレーションされたターゲットデバイスメモリ内容データ、シミュレーションされ実行されたターゲットデバイスプログラムオペコード、および、シミュレーションされた命令パイプラインデータのうち1つまたは2つ以上である請求項1に記載の方法。
  12. 前記ターゲットデバイスデバッガは、前記ターゲットリソースに応答して、シミュレーションされる前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードの実行の結果を示すデバッグ情報を提供する請求項1に記載の方法。
  13. 前記ホストリソースは、ホストレジスタ内容データ、ホストメモリ内容データ、および、実行されるホストプログラムオペコードのうち1つまたは2つ以上である請求項1に記載の方法。
  14. 前記ホストリソースは、前記シミュレーションコードの実行結果を示すデバッグ情報を提供する請求項1に記載の方法。
  15. 記シミュレーションコードは、前記ホストプロセッサに、各々がターゲットプログラムコードを実行する複数のターゲットプログラマブルデバイスの動作をシミュレーションし、シミュレーションされる前記複数のターゲットプログラマブルデバイスの各々のターゲットリソースを記憶する動作を実行させる請求項1に記載の方法。
  16. 前記ターゲットデバイスデバッガは、シミュレーションされる前記複数のターゲットプログラマブルデバイスの前記各々のターゲットリソースへのアクセスを提供する動作が可能である請求項15に記載の方法。
  17. 記シミュレーションコードは、前記ホストプロセッサに、1つまたは2つ以上の非プログラマブルターゲットデバイスの動作をシミュレーションし、かつ、非プログラマブルターゲットデバイスのシミュレーションされた状態を示す各々のターゲット状態データを記憶する動作を実行させる請求項1に記載の方法。
  18. 前記ターゲットデバイスデバッガは、前記1つまたは2つ以上の非プログラマブルターゲットデバイスの前記各々のターゲット状態データへのアクセスを提供する動作が可能である請求項17に記載の方法。
  19. 前記ターゲットプログラムコード内のブレークポイントセットは、デバッグアクションを引き起こすために前記シミュレーションコード内のブレークポイントセットと論理的に結合される請求項1に記載の方法。
  20. 請求項1に記載の方法を実行するためにコンピュータを制御する動作が可能なコンピュータプログラム。
  21. ターゲットプログラムコードを実行するターゲットプログラマブルデバイスシミュレーションするシミュレーションシステムであって、
    前記ターゲットプログラムコードを実行する前記ターゲットプログラマブルデバイスの動作をシミュレーションするためにシミュレーションコードを実行するホストプロセッサと、
    前記ホストプロセッサによる前記シミュレーションコードの実行の間に前記ホストプロセッサのホストリソースへのアクセスを提供するシミュレーションホストデバッガと、
    シミュレーションされる前記ターゲットプログラマブルデバイスによる前記ターゲットプログラムコードの実行の間にターゲットリソースへのアクセスを提供するターゲットデバイスデバッガとを具備し、
    前記シミュレーションコードは、前記ホストプロセッサに、シミュレーションされる前記ターゲットプログラマブルデバイスのターゲットリソースを記憶し、かつ、前記ターゲットプログラマブルデバイスのデバッグインタフェースを提供する動作を実行させ
    前記シミュレーションホストデバッガと前記ターゲットデバイスデバッガの動作は同期され、かつ前記ターゲットデバイスデバッガは、前記ターゲットデバイスデバッガへの前記ターゲットリソースの返却を引き起こすために、前記デバッグインタフェースにアクセス要求を送信することによって前記ターゲットリソースにアクセスするように構成されたシミュレーションシステム
JP2005298175A 2005-05-05 2005-10-12 プログラマブルデバイスのモデリング方法および装置 Active JP4472615B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0509201A GB2425859A (en) 2005-05-05 2005-05-05 Modelling of programmable devices

Publications (2)

Publication Number Publication Date
JP2006313521A JP2006313521A (ja) 2006-11-16
JP4472615B2 true JP4472615B2 (ja) 2010-06-02

Family

ID=34685142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005298175A Active JP4472615B2 (ja) 2005-05-05 2005-10-12 プログラマブルデバイスのモデリング方法および装置

Country Status (5)

Country Link
US (1) US20060253842A1 (ja)
JP (1) JP4472615B2 (ja)
AU (1) AU2005239681A1 (ja)
DE (1) DE102006019292A1 (ja)
GB (1) GB2425859A (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8136096B1 (en) * 2004-07-23 2012-03-13 Green Hills Software, Inc. Backward post-execution software debugger
US8423959B1 (en) * 2006-12-11 2013-04-16 Synopsys, Inc. Techniques for coordinating and controlling debuggers in a simulation environment
US8683444B1 (en) 2006-12-11 2014-03-25 Synopsys, Inc. System and method of debugging multi-threaded processes
US9317636B1 (en) 2006-12-11 2016-04-19 Synopsys, Inc. System and method for stopping integrated circuit simulation
US8627299B2 (en) 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US20100138811A1 (en) * 2008-12-02 2010-06-03 Qualcomm Incorporated Dynamic Performance Profiling
US8402442B1 (en) * 2009-07-28 2013-03-19 Xilinx, Inc. Common debugger method and system
WO2012044262A1 (en) * 2010-09-30 2012-04-05 The Thailand Research Fund Embedded system design, programming, and simulation architecture
KR101991687B1 (ko) 2012-11-23 2019-06-24 삼성전자 주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템
US10620917B2 (en) * 2014-10-02 2020-04-14 Siemens Aktiengesellschaft Programming automation in a 3D graphical editor with tightly coupled logic and physical simulation
CN109992516B (zh) * 2019-04-03 2022-08-26 寒武纪(西安)集成电路有限公司 一种编程调试方法、装置及相关产品

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680584A (en) * 1991-03-07 1997-10-21 Digital Equipment Corporation Simulator system for code execution and debugging within a multi-architecture environment
US5901315A (en) * 1997-06-13 1999-05-04 International Business Machines Corporation Method for debugging a Java application having native method dynamic load libraries
WO2001095161A2 (en) * 2000-06-02 2001-12-13 Virtio Corporation Method and system for virtual prototyping
US6912708B2 (en) * 2001-06-28 2005-06-28 Sun Microsystems, Inc. Method and apparatus to facilitate debugging a platform-independent virtual machine
JP2003085001A (ja) * 2001-09-12 2003-03-20 Toshiba Corp ソース・コード・デバッガ、デバッグ方法及びデバッグプログラム

Also Published As

Publication number Publication date
GB2425859A (en) 2006-11-08
AU2005239681A1 (en) 2006-11-23
GB0509201D0 (en) 2005-06-15
JP2006313521A (ja) 2006-11-16
DE102006019292A1 (de) 2006-11-23
US20060253842A1 (en) 2006-11-09

Similar Documents

Publication Publication Date Title
US8180620B2 (en) Apparatus and method for performing hardware and software co-verification testing
US7536605B2 (en) Injection of software faults into an operational system
US7409330B2 (en) Method and system for software debugging using a simulator
EP2204738A2 (en) Method and system for performing software verification
JP4472615B2 (ja) プログラマブルデバイスのモデリング方法および装置
US9262299B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
US6212493B1 (en) Profile directed simulation used to target time-critical crossproducts during random vector testing
US9262305B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
US20110289373A1 (en) Electornic Design Emulation Display Tool
US10698805B1 (en) Method and system for profiling performance of a system on chip
US10650174B1 (en) System and method for visualizing event sequences for expressions using both hardware and software state information
Hassan et al. Data flow testing for virtual prototypes
Engblom et al. Full-system simulation from embedded to high-performance systems
TW588238B (en) Program debugging method
Kantrowitz et al. Functional Verification of a Multiple-issue, Pipelined, Superscalar Alpha Processor - the Alpha 21164 CPU Chip
US20030101040A1 (en) Hardware simulation using a test scenario manager
US10579761B1 (en) Method and system for reconstructing a graph presentation of a previously executed verification test
CN117892661A (zh) 一种基于risc-v处理器验证的模拟器比对系统
US11487561B1 (en) Post simulation debug and analysis using a system memory model
US10339229B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
JP2007052783A (ja) データ処理装置のシミュレーション
JP2005353020A (ja) コンピュータプログラムのシミュレーション方式
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
JP2014160421A (ja) ソフトエラー解析装置、エラー情報作成装置
Kolan et al. Post-silicon validation of the ibm power9 processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100202

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100303

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150