JP2008544340A - プログラマブルユニットをエミュレートするための方法およびデバイス - Google Patents

プログラマブルユニットをエミュレートするための方法およびデバイス Download PDF

Info

Publication number
JP2008544340A
JP2008544340A JP2008509439A JP2008509439A JP2008544340A JP 2008544340 A JP2008544340 A JP 2008544340A JP 2008509439 A JP2008509439 A JP 2008509439A JP 2008509439 A JP2008509439 A JP 2008509439A JP 2008544340 A JP2008544340 A JP 2008544340A
Authority
JP
Japan
Prior art keywords
emulation
programmable unit
data
target programmable
cpu
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
JP2008509439A
Other languages
English (en)
Inventor
ランゲ アレクサンダー
ヴァイス アレクサンダー
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.)
Accemic GmbH and Co KG
Original Assignee
Accemic GmbH and Co KG
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 Accemic GmbH and Co KG filed Critical Accemic GmbH and Co KG
Publication of JP2008544340A publication Critical patent/JP2008544340A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

本発明はプログラマブルユニットをエミュレートするための方法および装置に関する。本方法は、ターゲットプログラマブルユニットの本来のCPUクロック信号から導出される信号と、加えて、CPUクロック信号(8)と所定の関係を保ちながら、ターゲットプログラマブルユニットの所与のモデルとプログラムコードとに基づいては計算することのできないデータから成るエミュレーションデータを、通信リンクを介してエミュレーションデバイスに転送するステップを有している。ターゲットプログラマブルユニットは転送されたエミュレーションデータを用いて外部エミュレーションデバイス(1)によりエミュレートされ、エミュレーションから各トレースデータが確認される。本発明はさらに、少なくとも1つのCPUを有するターゲットプログラマブルユニットと、通信リンクとしてのエミュレーションポートを介して外部ユニット(14)としてターゲットプログラマブルユニットに接続されたエミュレーションデバイスとを含んだエミュレーションのための装置にも関する。最後に、本発明はプログラマブルユニットにも関する。

Description

本発明はプログラマブルユニットをエミュレートするための方法およびデバイスに関する。本発明はさらに、少なくとも1つのCPUを有するターゲットプログラマブルユニットと、通信リンクとしてのエミュレーションポートを介して外部ユニットとしてターゲットプログラマブルユニットに接続されたエミュレーションデバイスとを含んだエミュレーションのための装置にも関する。さらに、本発明はプログラマブルユニットにも関する。
以下では、プログラマブルユニットを"PU"、"ターゲットプログラマブルユニット"、または"ターゲットPU"とも呼ぶ。プログラマブルユニットはプロセッサ、マイクロコントローラ、信号プロセッサ、または他の類似のデバイスであってよい。プログラマブルユニットは少なくとも1つの中央処理ユニットを内蔵している。この中央処理ユニットは、命令デコーダ、命令フェッチ、レジスタメモリ、算術論理ユニット(ALU)および/またはパイプラインを含むことができ、以下では"CPU"または"ターゲットCPU"と呼ばれる。
通常、プログラマブルユニットPUはCPUに直接割り当てられたレジスタメモリと呼ばれるメモリを含むことができる。このレジスタメモリは以下で"レジスタバンク"と呼ばれる複数のブロックに分割することができる。それゆえ、メインプログラム、サブプログラム、またはルーチンのような様々なプログラムパーツをそれぞれレジスタバンクに排他的に割り当てることができる。レジスタバンクに排他的に割り当てられたプログラムのすべてのパーツを以下では"コンテキスト"と呼ぶ。
レジスタメモリの部分的または完全なコピーを以下では"レジスタメモリコピー"と呼ぶ。
プログラマブルユニットは通常、データライン、アドレスラインまたは制御ラインのような様々なラインを有しており、これらのラインは通常はバス、転送アドレス、データ、制御信号、およびプログラマブルユニット内の他の関連するアイテムとして、また必要ならばインタフェースデバイスとしても実施される。
1つまたは複数のCPUの他に、PUは例えばDMAコントローラ(Direct Memory Access)のようなメモリへの書込みアクセスを有する1つまたは複数のユニットを含むことができる。これらのユニットは以下では"DMAユニット"と呼ばれる。
1つまたは複数のCPUの他に、PUは例えばMMU(Memory Management Unit)のようなメモリ管理を制御する1つまたは複数のユニットも有することができる。これらのユニットは以下では"MMUユニット"と呼ばれる。
プログラマブルユニットはまた、タイマー、アナログ/デジタル変換器、およびUART(Universal Asynchronous Receiver Transmitter)のような1つまたは複数の周辺ユニットも含むことができる。これらの周辺ユニットは以下では"オンチップ周辺装置"と呼ばれる。
このプログラマブルユニットでは、データを処理するために、または命令を外部デバイスに転送するために、プログラムが実行される。プログラマブルユニットの通常動作時の内部状態とプロセスを観察するため、また必要ならば、変更するために、エミュレータが開発されている。
このようなプログラムをリアルタイム条件下で使用したときのランタイム動作に関する相応する情報は、品質保証とエラー解析の非常に重要な部分である。プログラマブルユニット内で処理または使用されるアドレス、データ、制御信号、状態、イベント、および同様のアイテムは、以下では"トレースデータ"と呼ばれる。
プログラマブルユニットにより実行されるプロセッサ命令のすべて、また、部分的には読み書き動作も、このようなトレースデータセットにキャプチャされ、必要ならば、時刻識別マーク、いわゆるタイムスタンプでラベル付けされる。トレースデータはコードカバレッジと関数およびプロシージャのタイムビヘイビアを解析する(性能解析)。
それぞれのトレースデータを取得するには、いわゆるエミュレータまたはエミュレータデバイスが使用される。
後でプログラマブルユニットの動作解析を可能にために、通常は、以下の情報が必要とされる。
読み込まれたデータ(ロード)
書き込まれたデータ(ストア)
実行された分岐(分岐)
割り込みに基づいたコンテキストの変化
このようなトレースデータを得るために、慣用技術から主に2つの方法が周知である。
1つの方法はボンドアウトチップを用いたいわゆるインサーキットエミュレータと呼ばれるものである。いわゆるボンドアウトチップはこのICEの中に組み込まれており、ボンドアウトチップは基本的にプログラマブルユニットとして動作するが、内部バスと幾つかの付加的なレジスタへの付加的なアクセスを提供する。ICEは要求されたトレースデータをこれらの内部バスから受け取る。
例えばUS 5,515,530では、2つの動作モードを有する集積回路の一部としてインサーキットエミュレータが提示されている。第1モードはリアルタイムイベント評価に使用されるものであり、第2モードは外部エミュレーションデバイスに通信すべきレジスタデータを取得するためのものである。
最終的にプログラマブルユニットが動作することになるターゲットシステムにおいては、通常、このターゲットPUはその支持固定具と、直接またはリボンケーブルを介して接続される相応のエミュレーションデバイスとから取り外されている。エミュレーションデバイスは通常はターゲットCPUと同じタイプのプロセッサを具えた回路基板であり、その上、バッファメモリとインタフェースロジックはエミュレータ側にある。ただし、ターゲットCPUは通常はボンドアウトバージョンのものである。
この方法を使用すれば、プロセッサのすべてのビヘイビアをリアルタイムで記録することができる。
しかしならが、必要とされるスペース要件が比較的高く、また、比較的高い周波数では、対応するエミュレーションデバイスを実行することができない、あるいは少なくとも大きなコストなしには実行することができない。また、ケーブリングも比較的複雑であるため、高い総コストを負わなければならない。実際のプログラマブルユニットはエミュレーションデバイスで置き換えられるので、ターゲットシステムで使用することはできないが、後で再び相応するプログラマブルユニットで置き換えられなければならない。
もう1つの手法は"オンチップトレースポート"と呼ばれるものであり、これはトレースデータを取得するもう1つの方法である。この方法はプログラマブルユニット上で直接トレースデータを取得するための最小限の機能の実現しか必要としない。この最小限の機能は、リアルタイムで内部バス信号の記録を可能にするメモリやその他のコンポーネント、例えばロジックユニットやそれに類したアイテムなど、によって拡張される。
このようにして得られたデータは、例えば、JTAGインタフェース(JTAG = Joint Test Access Group)またはOCDSモジュール(オンチップデバッグサポートモジュール)と専用トレースポートを使用することにより利用可能となる。
トレースポートはプログラマブルユニットに実装され、内部的にデータバスと制御バスとに接続される。トレースポートはボンドアウトチップに比べて遥かに少ないピンしか必要としない。しかし、実際には、リアルタイムトレース能力はトレースポートの帯域幅により制限されるので、プログラマブルユニットのすべてのビヘイビアを完全に記録することは非常に高いコストをかげずには不可能である。したがって、通常は限られたトレースデータしか利用できない。
EP 1 139 220 A2には、集積回路と外部エミュレーションコントローラが記載されている。ターゲットCPUの内部クロックサイクルを表すデジタルビットは、内部クロックのクロックレートとは異なる出力クロックレートでエミュレーションコントローラに転送される。オンチップデバッグ環境が提供されている。このシステムの欠点は集積回路と外部エミュレーションコントローラとの間で必要とされる伝送帯域幅が大きいことである。
したがって、本発明の課題は、公知のトレース方法のそれぞれの利点を維持しつつ、プログラマブルユニットとエミュレーションデバイスとの間の伝送帯域幅を縮小し、低コストでトレースデータの取得が可能となるように、プログラマブルユニットのエミュレーションのための方法およびデバイスを改善することである。
本発明の第1の側面によれば、少なくとも1つのCPUを有するターゲットプログラマブルユニットを、通信リンクを介してターゲットプログラマブルユニットに接続された外部エミュレーションデバイスを用いてエミュレートする方法が提供される。この方法は以下のステップを有している:
予め決められた初期化データを通信リンクを介してエミュレーションデバイスに転送するステップ。エミュレーションを初期化するため、ターゲットプログラマブルユニットはこの初期化データにより自ら初期化する、および/または初期化される;
通信リンクを介してエミュレーションデバイスにターゲットプログラマブルユニット(1)のCPUクロック信号を転送し、また、このCPUクロック信号と所定の関係を保ちながら、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータと、プログラムカウンタに影響を及ぼす外部イベントと、オプションとして、CPUを迂回するデータ転送をトリガするイベントと、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピーと、オプションとして、1つまたは複数のデータタイプ信号を転送するステップ;
外部エミュレーションデバイスにおいて、転送されたエミュレーションデータを用いてターゲットプログラマブルユニットをエミュレートするステップ;
外部エミュレーションデバイスにおいて、エミュレーションから各トレースデータを確認するステップ;
トレースデータを格納および/または出力するステップ。
本発明の第1の側面による方法の背後にある基本的な考え方は、所望のトレースデータを直接ターゲットCPUから取るのではなく、別個の外部エミュレーションデバイス(ED)によってこのターゲットCPUを複製することにより求め、利用可能にするというものである。ターゲットプログラマブルユニットの大量生産されたチップが本発明の方法に従って外部エミュレータと同期する能力を具えていれば、本発明の方法はアプリケーションをデバッグする際に特別な利点を顕わにする。
本発明の方法によって得られる重要な効果は、エミュレーション中にエミュレーションデータをエミュレーションデバイスに転送するための帯域幅が、CPUから完全なトレースデータセットを出力するために要求される帯域幅よりも狭いということである。このことはまたターゲットプログラマブルユニットからのデータ出力を実現するための労力を大幅に減少させ、コストの低減をもたらす。
本発明によれば、少量のデータのみをターゲットCPUからエミュレータに通信するだけでよい、つまり、すべての内部データとプログラムフローを再構成するのに必要なデータのみを通信するだけでよい。他のすべてのシステム応答はプログラムコードによって定められる。従来の方法はすべての読込みデータと書込みデータおよびすべてのジャンプをエミュレータに転送する。それとは対照的に、本発明は限られたデータの転送しか必要としない、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータ、割り込みの発生またはCPUを停止させるイベントのようなプログラムカウンタに影響を及ぼす外部イベント、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および、オプションとして、1つまたは複数のデータタイプ信号の転送しか必要としない。
さらに、CPUクロック信号も、実際のCPUクロック信号の形態で、またはより一般的に、ターゲットプログラマブルユニットの本来のCPUクロック信号から導出された信号の形態で、エミュレーションデバイスに転送される。
要するに、ターゲットプログラマブルユニットの所与のモデルとプログラムコードとに基づいて計算することのできないデータだけが転送される。1つの実施形態では、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだすべてのデータと割り込みを転送するだけで十分である。というのも、予測不能にプログラムフローを変えることができるのはこのデータ/これらのイベントしかないからである。別の実施形態では、例えばDMA転送をトリガするイベントなどの付加的なイベントがターゲットプログラマブルユニットからエミュレーションデバイスに転送される。
このプログラムのターゲットCPUでの実行は、プログラム開始時点におけるプログラムコードのような既知のデータにより、また、さらにはプログラム実行中に既知となるデータおよびイベントにより決定される。
プログラムカウンタに影響を及ぼすイベント、例えば、割り込みの発生やCPUを停止させるイベント、CPUを迂回するデータ転送(DMA転送)をトリガするイベントのようなイベントも、以下ではイベントデータという用語に包摂される。
特定の実施形態では、オプションとして転送されるデータがオプションと見なされていないデータと併せて転送される。このような実施形態については後で説明する。
本明細書では、本発明による転送データの上記リストで触れられているすべての必須データおよびオプショナルデータもエミュレーションデータという用語で包摂される。
このようにして、エミュレーションはCPUのビヘイビアを複製する。そうするために、エミュレーションは例えばターゲットCPUの既知の状態で初期化される。この状態はリセットであってもよい。このことは、EDがCPUからデータを受け取ることにより、エミュレーションがCPUの状態に完全にまたは部分的に一致する状態に置かれることを意味する。このデータを以下では初期化データと呼ぶ。
初期状態と以前に伝達されたプログラムコードとに基づいて、エミュレーションデータとCPUクロックがプログラムのランタイム中にエミュレーションデバイスに伝送される。それゆえ、外部エミュレーションはCPUのプログラム実行をエミュレートすることができる。このエミュレーションの間、エミュレーションデバイスにより、完全なまたは部分的なトレースデータセットへのアクセスが可能になる。
下の表は、ターゲットPUとエミュレーションデバイスとの間で転送されるデータの縮減を、すなわち、従来技術による解決手段に比べて、本発明の方法におけるエミュレーションにはどのデータがあれば十分なのかを視覚化したものである。
Figure 2008544340
表1:ターゲットCPUからの必須出力の比較
上の表における各命令タイプの頻度に関する情報は、David Patterson, John Hennessyによる書籍"Computer Organization and Design"、第3版、Elsevier、2005年により提供される情報に基づいている。
エミュレーションデバイスと通信するためのプログラマブルユニットのインタフェースを以下ではエミュレーションポートと呼ぶ。同じ意味を持つもう1つの用語が"トレースポート"である。
以下では、本発明の方法の有利な実施形態が説明される。明示的に別様に述べられていない限り、実施形態は互いに組み合わせることができる。
1つの有利な実施形態では、CPUクロック信号はターゲットプログラマブルユニットからエミュレーションポートを通ってエミュレーションデバイスに伝送される。このようにして、エミュレーションデバイスはすべての入来エミュレーションデータに例えばタイムスタンプの形で時間情報を割り当てることができる。CPUクロック信号をエミュレーションを介して転送することで、クロック発振器において異なるCPUクロック周波数を切換制御する際の変動によってCPUクロックに生じうる変化を見越して、同期のためのデータをクロック同期して転送することが可能になる。
1つの有利な実施形態では、ターゲットプログラマブルユニットと外部エミュレーションデバイスとの間でのデータ転送は最小限に限定される。この場合、エミュレーションデータを転送するステップは専ら、
ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータ、プログラムカウンタに影響を及ぼす外部イベント、
オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および
オプションとして、1つまたは複数のデータタイプ信号のみを転送することから成る。
このことは、ある実施形態においては、エミュレーションデータの転送がプログラマブルユニットのデータバスからCPUが読み込んだデータとプログラムカウンタに影響を及ぼす外部イベントに限定されることを意味している。別の実施形態では、それに加えて、周期的に作成されるレジスタメモリの完全なまたは部分的なコピーが転送され、さらに別の実施形態では、1つまたは複数のデータタイプ信号が、レジスタメモリの各コピーにさらに加えて転送されるか、または、単に最初に述べた読込みデータと外部イベントに加えて転送される。このように、オプションと見なされたエミュレーションデータは後で説明される特定の実施形態において転送される。
さらに別の実施形態では、ターゲットプログラマブルユニットから一定量のデータを受け取った時点からエミュレーションが実行される。上記一定量のデータはターゲットCPUの既知の状態でエミュレーションを初期化するのに役立つ。前提条件として、エミュレーションは同一のプログラムコードを、有利にはターゲットプログラマブルユニットから受け取った一定量のデータの一部を成すプログラムコードを使用しなければならない。しかし、このプログラムコードとターゲットCPUの既知の状態を規定する別のデータは異なる時点に提供されるものであってよい。以下のエミュレーションプロシージャにおいて、エミュレーションはエミュレーションデータとCPUクロックを受け取ると、エミュレーションのための入力データがターゲットCPUに対する入力データと同一であるかを確認することができ、エミュレーションの状態は正確にターゲットCPUの状態に一致する。このようにして、エミュレーションは直接ターゲットCPUから記録されるうるものと同一のトレース情報を提供する。
データ転送中に必要となるエミュレーションポートへのコネクション数を少なくするために、上記のすべての信号を時間/空間合成し、場合によっては、さらに他のプロシージャによって圧縮してもよい。この例および以下のより具体的な例もそれぞれエミュレーションデバイスにより開始されるようにしてよい。1つの例では、CPUクロック信号はプログラマブルユニットのエミュレーションコントローラおよび/またはターゲットプログラマブルユニットのバッファメモリに転送される。これにより、CPUクロック信号に対して所定の関係を保ちながら、エミュレーションデータをエミュレーションに転送することが可能になる。本明細書では、"エミュレーションコントローラ"という語は"トレースコントローラ"という語と同じ意味で用いられる。
特に、択一的実施形態においては、エミュレーションデータはCPUクロック信号の立下りエッジもしくは立上りエッジとともに転送されるか、または、CPUクロック信号の立下りエッジと立上りエッジの両方とともに転送される。後者の実施形態では、エミュレーションデータは2倍のデータレートで転送されるため、スピードがさらに増す。別の例では、エミュレーションデータの転送中に、エミュレーションデータの転送を駆動するクロック信号の周波数がCPUクロック周波数を超えて引き上げられる。この実施形態はエミュレーションデータの転送を加速する別の方法を構成している。エミュレーションデータの転送を駆動するクロック信号の周波数はCPUクロック信号周波数の倍数としてよい。有利には、エミュレーションデータの転送はCPUクロック信号と同期して行われる。CPUクロック信号は別個のデータラインを介して転送することもできる。これについては、後でLVDS Serdesインタフェースを用いた実施形態に関連して詳細に説明される。
別の実施形態では、転送すべきエミュレーションデータをターゲットCPUの数サイクルにわたって分散させる。
ターゲットプログラマブルユニットは、1つの実施形態では、ターゲットプログラマブルユニットの通信リンクの一部として構成されたエミュレーションポートを標準I/Oポートとして、特に出力ポートとして使用するための動作モードに切り換えられる。この実施形態では、本発明によるエミュレーションデータとCPUクロックの転送には比較的小さな帯域幅しか必要とされないという利点が、ターゲットプログラマブルユニットの標準出力タスクのために残されたエミュレーションポートの転送能力を補助的に使用する際にも利用されている。別のコンテキストにおいてプログラマブルユニットを介してエミュレーションポートを利用することができるようにするために、プログラマブルユニットはエミュレーションポートを汎用出力ポートとしても使用することのできる動作モードに切り替わることができる。これは、専用モードピンをセットしたり、プログラマブルユニット内の制御レジスタにおいてビットをセットすることにより可能である。
有利には、ターゲットCPUのエミュレーションポートとエミュレーションデバイスのエミュレーションポートが双方向動作モードで動作することにより、エミュレーションデータとCPUクロックの転送だけでなく、エミュレーションデバイスによるターゲットCPUの制御も可能になる。この機能は従来技術による幾つかのデバイスにおいてはJTAGインタフェースにより提供されている。しかし、この実施形態では、エミュレーションポートとJTAGインタフェースが同じピンを共用することができるため、チップ上の面積消費が低減される。さらに、この実施形態によれば、ターゲットプログラマブルユニットだけでなく、エミュレーションデバイスも、エミュレーションデータとCPUクロックの転送中にCPUウェイトサイクルの挿入を行うことができる。同様に、プログラマブルユニットのチェックはエミュレーションデバイスによっても可能である。この場合、デバッガはエミュレーションデバイスを介してCPUのアドレスエリアにアクセスすることができ、場合によっては読み書き動作を行うことができる。これらの動作には、RAMおよびI/Oレンジへの読み書き、ブレークポイントの設定、または他の類似の動作が含まれる。ブレークポイントの設定は、予め決められた条件が満たされると、例えば実行中のプログラムのある部分に達するとすぐに、プログラムを中止させるようにCPUに命令する1つの方法である。
エミュレーションデータとCPUクロックはただ1つの共通信号路を介してエミュレーションデバイスに転送することもできる。プログラマブルユニットとエミュレーションデバイスの間で、例えばシリアライズ/デシリアライズを行う低電圧差動ポイントツーポイント接続(LVDS Serdes)のようなシリアルポイントツーポイント接続を介して、それぞれの通信を行うようにしてもよい。LVDS Serdes接続では、一定のクロック周波数がインタフェースに供給されることが必要であることに注意されたい。前に述べたCPUクロックの突然の変化の可能性を考慮して、本発明の1つの実施形態では、CPUクロック周波数よりも高い周波数の外部クロック信号がLVDS Serdesインタフェースに供給される。有利には、この実施形態では、CPUクロックは通常のデータラインを介して転送され、受信端で使用される。
別の実施形態では、本願発明の方法は求めたトレースデータをエミュレーションデバイスによる出力および/または保存の前にフィルタリングするステップを含む。フィルタリングは個々のエミュレーションプロセスの必要に応じて予め決められた基準に従って行われるようにしてよい。
以下では、実施形態の4つの主要グループが示される。第1の主要グループはターゲットプログラマブルユニットのRAMをエミュレートしないオフラインエミュレーションに関している。第2の主要グループはターゲットプログラマブルユニットのRAMのエミュレーションを含んだオフラインエミュレーションに関している。第3の主要グループはターゲットプログラマブルユニットのRAMをエミュレートしないリアルタイムエミュレーションに関している。そして最後に、第4の主要グループはターゲットプログラマブルユニットのRAMのエミュレーションを含んだリアルタイムエミュレーションに関している。
実施形態の第1の主要グループでは、ターゲットプログラマブルユニットのエミュレーションは以前に取得し格納しておいたエミュレーションデータを用いてエミュレーションデバイスによりオフラインで行われる。この実施形態では、有利には、ターゲットプログラマブルユニットから受信したCPUクロック信号は、エミュレーションデバイスにおいて、転送されたエミュレーションデータにある特定の時点(タイムスタンプ)を割り当てるカウンタデバイスを用いてカウントされる。この実施形態では、レジスタメモリのコピー("スナップショット")がエミュレーションデータの一部として転送され、上で述べた他のエミュレーションデータとCPUクロックとともに、エミュレーションデバイスにおいてターゲットCPUの命令の完全な模倣を可能にする。
ターゲットプログラマブルユニットのオフラインエミュレーションは、ターゲットプログラマブルユニットのランダムアクセスメモリ(RAM)のエミュレーション有りでも、または無しでも行うことができる。
ターゲットプログラマブルユニットのRAMをエミュレートせずにオフラインエミュレーションを行う場合には、ターゲットプログラマブルユニットのプログラム実行は、有利には、同じコンテキストのレジスタバンクの完全なコピーが最後に検出された時点に始まるコンテキストレベルの各々に関して、エミュレーションデバイスによりシミュレートされる。したがって、エミュレーションデバイスがターゲットCPUの完全なプログラムフローを検出することができなくてもよい。各コンテキストレベルについて、異なる複数のコンテキストレベルを実行してもよい。こうして、エミュレーションはレジスタメモリコピーで初期化され、レジスタメモリコピーが存在するコンテキストに関して、レジスタメモリコピーが作成された時点から開始することができる。
プログラムの開始よりも後の時点にエミュレーションを始めるためには、プログラマブルユニットはこのような後の時点におけるCPUのステータスをエミュレーションデバイスに知らせなければならない。この目的で、レジスタメモリの、または個々のレジスタバンクの、現在の内容をプログラマブルユニットに格納してもよい。以下では、このレジスタメモリまたは個々のレジスタバンクの現在の内容をレジスタメモリコピーと呼ぶ。その後、このレジスタメモリコピーをエミュレーションデータの一部としてエミュレーションデバイスに転送してもよい。レジスタメモリコピーが完全に出力されると、レジスタメモリの、または個々のレジスタバンクの、有利には現在のレジスタバンクの、新しいコピーが読み込まれ、再び出力される、以下同様。
本発明に従ってプログラム開始後にキャプチャされたレジスタメモリコピーを用いれば、CPUプログラム実行の部分部分をスキップするシミュレーションが可能となり、それにより、各コンテキストレベルについて、関連するコンテキストに割り当てられたレジスタバンクの完全なコピーが最後にキャプチャされた時点にシミュレーションを開始させることが可能になる。
オフラインエミュレーションに対してはタイミング要件は緩いので、ターゲットプログラマブルユニットのCPUは、1つの実施形態では、コンピュータ上で実行されるコンピュータプログラムによってエミュレートされる。このことがハードウェア要件を緩和し、エミュレーションのコストを低減する。
実施形態の第2の主要グループは、ターゲットプログラマブルユニットのオフラインエミュレーション中にターゲットプログラマブルユニットのRAMの一部をエミュレートすることを含んでいる。
この実施形態の利点は、エミュレーションデータの転送がさらに減少し、今や、ターゲットCPUにより非排他的に使用されるメモリエリアから読み込まれたデータに限定されることである。このようなメモリエリアの例として、I/OエリアまたはデュアルポートRAMがある。
この実施形態は有利には下記のステップから成る。
ターゲットプログラマブルユニットにおいて、CPUにより現在読み込まれているデータまたはDMA動作中のデータが、ターゲットプログラマブルユニットのCPU以外の機能単位により書込み可能なターゲットプログラマブルユニットのアドレスから来ているものであるか否かを判定するステップ、次に、
CPUにより読み込まれたデータまたはDMA動作中のデータのうち、ターゲットプログラマブルユニットのCPU以外の機能単位により書込み可能なターゲットプログラマブルユニットのアドレスレンジから来ているもののみをエミュレーションデバイスに転送するステップ。
この実施形態の代替的な実施形態では、ターゲットプログラマブルユニットのCPU以外の機能単位により書込み可能なアドレスレンジは固定して永続的にプリプログラムされているか、または、自由にコンフィギュアされるか、もしくは、部分的に永続的にプログラムされ、部分的に自由にコンフィギュアされる。第1のケースはI/Oエリアにとって有効であり、第2のケースは外部デュアルポートRAMに適している。
RAMエミュレーションを含めるためには、RAMへの書込みアクセスを有するすべての機能単位をCPUエミュレーションに含める必要がある。特に、CPUとDMAコントローラがRAMへの書込みアクセスを有する。
以下では、実施形態の第3および第4の主要グループに共通する実施形態について説明する。
ターゲットプログラマブルユニットのリアルタイムエミュレーションをエミュレーションデバイスで行う際、エミュレーションは有利にはエミュレーションデバイスのプログラマブルロジックモジュールにおいて、例えばフィールドプログラマブルゲートアレイにおいて、またはボンドアウトチップを用いて実施される。両方ともターゲットCPUの機能をエミュレートし、トレースデータを出力側に供給するように構成することができる。
リアルタイムエミュレーションの特別の利点は、エミュレーションデバイスが通常ならばボンドアウトチップ上に実装されるオンチップ周辺装置をまったく含んでいなくてもよいことである。現在では、プログラマブルユニットの所与のCPUコアに関して、様々なオンチップ周辺装置をエミュレートおよびデバッグするために多数のボンドアウトチップが必要とされる。現在のマイクロプロセッサシリーズはおよそ20もの異なるボンドアウトチップを必要とする。
今の実施形態で使用するには、ボンドアウトチップはすべてのマイクロコントローラファミリーに対してそれぞれ異なる周辺装置を有するように製造されなくてもよいので、各マイクロコントローラファミリーのすべてのメンバをサポートするプログラマブルロジックモジュールにおけるインプリメンテーションごとにそれぞれ1つのボンドアウトチップを有するだけで十分である。このように、ログラマブルユニットのリアルタイムエミュレーションのインプリメンテーションをプログラマブルロジックモジュールにロードすることにより、単一のエミュレーションデバイスを用いてターゲットプログラマブルユニットの異なる複数のインプリメンテーションをエミュレートすることができる。
リアルタイムエミュレーションを実行するために、ターゲットCPUはエミュレーションデータとCPUクロックをエミュレーションデバイスに送る。エミュレーションデバイスはトレースデータを確認する。その後、このトレースデータは上で述べたように格納される、または、格納する前にフィルタリングするようにしてもよい。
1つの実施形態では、ターゲットプログラマブルユニットまたはターゲットプログラマブルユニットのCPUは、有効なブレークポイントを検出すると、エミュレーションデバイスまたはターゲットプログラマブルユニットにより停止される。これにより、複雑なブレークポイントをサポートする機構をエミュレーションデバイス内に実現することが可能になる。エミュレーションデバイスでは関連情報の利用が可能となり、プログラマブルユニットを停止させ、またプログラマブルユニットのアドレスおよびデータバスにアクセスする付加的な能力も得られる。
有利には、1つまたは複数のブレークポイントが立てられ、エミュレーションデバイスにより管理される。 1つの実施形態では、すべてのブレークポイントが立てられ、エミュレーションデバイスにより管理される。有効なブレークポイントがエミュレーションデバイスにより検出されると、ターゲットCPUは停止される。プログラマブルユニットのアドレスおよびデータバスへのアクセスは適切なインタフェースを通して、例えばエミュレーションポートを用いて行うことができる。CPU周波数が非常に高い場合には、付加的な措置が必要になることもある。これについては後で論じる。
有利には、ブレークポイント信号は、ターゲットプログラマブルユニットのエミュレーションコントローラ(トレースコントローラ)から、またはエミュレーションデバイスのエミュレーションコントローラから、ターゲットプログラマブルユニットのCPUに転送される。
リアルタイムエミュレーションを提供する別の実施形態では、エミュレーションデバイスは自らのメモリに対して読み書きアクセスを有しており、読出しアクセスの場合には、ターゲットプログラマブルユニットからデータ転送を受け取る。
ターゲットプログラマブルユニットで割り込みが発生した場合、エミュレーションデバイスでは同じ割り込みが同時にまたはCPUクロックオフセットを伴ってトリガされる。
別の実施形態によれば、エミュレーションデバイスのデータセレクタは、エミュレーションデバイスのメモリデバイスからのデータの読出しに、またはターゲットプログラマブルユニットから受け取ったデータの読出しに切り換えられる。
ターゲットプログラマブルユニットのリアルタイムエミュレーションがターゲットプログラマブルユニットのRAMをエミュレートせずに実行される場合(実施形態の第3の主要グループ)には、以下のエミュレーションデータが転送される。
すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータと、プログラムカウンタに影響を及ぼす外部イベントが転送される。
RAMをエミュレートしないオフラインエミュレーション(実施形態の第1の主要グループ)の場合とは対照的に、周期的に作成されるレジスタメモリの完全なまたは部分的なコピーを転送する必要はない。
ターゲットプログラマブルユニットのリアルタイムエミュレーションがターゲットプログラマブルユニットのRAMの一部分または全体をリアルタイムでエミュレートすることを含んでいる場合(実施形態の第4の主要グループ)には、ターゲットプログラマブルユニットの少なくとも1つのRAMの完全なまたは部分的なコピーもまたエミュレーションデバイスで実行される。この実施形態は、有利には、ターゲットプログラマブルユニットの機能単位のうち、ターゲットプログラマブルユニットのRAMに書込みを行う機能単位をエミュレートすることを含む。
プログラマブルユニットが非常に高いCPUクロック周波数でまたは広いCPU読出し帯域幅で動作する場合には、エミュレーションデータを一時的にFIFOメモリに格納すると有利である。
エミュレーションデバイスにおいてターゲットプログラマブルユニットのCPUに対してオフセットをもってブレークポイントがトリガされた場合、エミュレーションデバイスは、ターゲットプログラマブルユニットのCPUがエミュレーションデバイスによって停止された時点までにFIFOメモリに格納されたエミュレーションデータを用いて、ブレークポイント後もエミュレーションを続行する。この実施形態によれば、エミュレーションデバイスは、ブレークポイントの場合でさえ、非常に高いCPUクロック周波数(およそ500MHzおよびそれ以上の周波数範囲)で動作するターゲットプログラマブルユニットと同期を保つ。
本発明の第2の側面によれば、プログラマブルユニットのエミュレーションのための装置が提供される。この装置は少なくとも1つのCPUを有するターゲットプログラマブルユニットとエミュレーションデバイスとを含んでおり、このエミュレーションデバイスは、エミュレーションデータの転送のために、外部ユニットとして、通信リンクとしてのエミュレーションポートを介してターゲットプログラマブルユニットに接続されており、ターゲットプログラマブルユニットのエミュレーションから各トレースデータを確認するように構成されている。エミュレーションデバイスは、少なくとも1つのエミュレーションコントローラと、トレースデータの記憶デバイスおよび/または外部の処理・表示デバイスに接続された出力デバイスを有している。ターゲットプログラマブルユニットは、ターゲットプログラマブルユニットのCPUクロック信号と所定の関係を保ちながら、以下のエミュレーションデータを、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータと、プログラムカウンタに影響を及ぼす外部イベントと、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピーと、オプションとして、1つまたは複数のデータタイプ信号を通信リンクを介してエミュレーションデバイス(4)に転送するように、また、ターゲットプログラマブルユニットからのCPUクロック信号をエミュレーションデバイスに転送するように構成されている。
本発明の第2の側面によるこの装置の利点は、本発明の第1の側面による方法に関して既に説明した利点と一致する。説明と利点については、本発明の方法の文脈において既にほとんど論じられているので、以下の記述は短く止め、種々の実施形態の特徴に焦点を当てる。前と同じように、明示的に別様に述べられていない限り、実施形態の組合せは可能である。
1つの実施形態では、ターゲットプログラマブルユニットは専ら以下のエミュレーションデータのみを、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータ、プログラムカウンタに影響を及ぼす外部イベント、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および、オプションとして、1つまたは複数のデータタイプ信号のみをエミュレーションデバイスに転送するように構成されている。
1つの実施形態では、ターゲットプログラマブルユニットのエミュレーションコントローラは、エミュレーションデータの一部としてデータタイプ信号をエミュレーションポートと、存在するならば、ターゲットプログラマブルユニットの一時記憶用のバッファメモリとにも転送するように構成されている。
別の実施形態では、ターゲットプログラマブルユニットとエミュレーションデバイスは、ターゲットプログラマブルユニットとエミュレーションデバイスとの間に双方向通信を提供するように構成されている。有利には、エミュレーションデバイスはJTAGインタフェースのようなデバッギングインタフェースを有する。このデバッギングインタフェースはJTAGインタフェースとしてよく、有利な実施形態においては、JTAGインタフェースとエミュレーションポートが同じコンタクトピンを共用するように、エミュレーションポートに組み込まれる。
装置は、有利には、選択スイッチによってエミュレーションポート上でのエミュレーションデータの転送を提供する。ここで、選択スイッチは例えばマルチプレクサとして実施することができる。さらに、この選択スイッチ回路に、例えばFIFO(First In First Out)メモリとして実現することのできるバッファメモリを接続してもよい。また、エミュレーションデータを少なくとも部分的に直接エミュレーションデバイスに転送することも可能である。
選択スイッチ回路の制御、少なくともCPUクロック信号および/またはデータバスから読み込んだデータの前処理、割り込みの発生のようなプログラムカウンタに影響を及ぼすイベントおよび/またはCPUを停止させるイベントおよび/またはCPUを迂回するデータ転送(DMA転送)をトリガするイベント、および/またはレジスタバンクコピー、および/またはデータタイプの指標は、ターゲットプログラマブルユニット側でエミュレーションコントローラによって処理される。
別の実施形態では、エミュレーションデバイスはターゲットプログラマブルユニットのプログラムメモリと一致するプログラムメモリを有している。このことは、エミュレーションデバイスのプログラムメモリはターゲットプログラマブルユニットのプログラムメモリと機能的に同等であることを意味している。1つの実施形態では、エミュレーションデバイスのプログラムメモリはターゲットプログラマブルユニットのプログラムメモリとまったく等しい複製である。
別の実施形態では、ターゲットプログラマブルユニットは自らのCPUクロック信号をエミュレーションポートを介してエミュレーションデバイス(4)に送信するように構成されている。
エミュレーションデバイスは、リアルタイムエミュレーションユニットとして、有利には、ボンドアウトチップまたはプログラマブルロジックモジュールの形態のロジックモジュールを有する。相応するエミュレーションデバイスは、通信リンクとしてのエミュレーションポートを介してプログラマブルユニットに接続された外部ユニットとして実施される。エミュレーションデバイスは独自のエミュレーションコントローラを少なくとも1つ有している。
第1の実施例は、以前にプログラマブルユニットから取得して格納しておいたエミュレーションデータを用いて、CPUのエミュレーションをオフラインで行う能力を示したものである。この場合、CPUビヘイビアのシミュレーションは、有利には、例えば、エミュレーションデバイスの一部として、パーソナルコンピュータのような処理・表示デバイス上で実行されるソフトウェアプログラムを用いて行うことができる。相応するトレースデータはこのエミュレーションによって確認され、例えば、外部ユニットへ格納および/または出力される。エミュレーションポートを介してエミュレーションデバイスに転送されるエミュレーションデータに対してある特定の時間割当てを決めるために、EDにおいて適切なカウンタデバイスでCPUクロック信号をカウントしてもよい。この種の時点の割当てはタイムスタンプと呼ばれる。
プログラマブルユニットから送られてきたエミュレーションデータをエミュレーションデバイス内のメモリに、例えばRAM、ハードディスク、または同様の装置に格納することも可能である。このデータはタイムスタンプ付きでもタイムスタンプなしでもよい。
別の実施形態では、エミュレーションデバイスのデジタル出力側が切換え可能な出力側である。デジタル出力側の信号は相応の接続を介してターゲットプログラマブルユニットにフィードバックされる。具体的には、関連する制御レジスタをエミュレーションを介して制御し、エミュレーションデバイスに出力ピンへのアクセスを与えることによって、エミュレーションポートの1つまたは複数のピンを出力ピンとして使用することができる。必要ならば、これらのピンの出力信号をリボンケーブル等を介して近くのプログラマブルユニット転送し返ししてもよい。エミュレーションがアクティブでない場合には、エミュレーションポートをジャンパや同様の装置によって出力信号の回路網に直接接続してもよい。
本発明の別の実施例では、リアルタイムCPUエミュレーションを実行するだけでなく、特にプログラマブルユニットの内部および外部の読み書きメモリ(ここではRAMとも呼ばれる)に関してリアルタイムエミュレーションを実行することも可能である。ターゲットプログラマブルユニット内のアドレスバスラインは、有利には、アドレスコンパレータを介してターゲットプログラマブルユニットのエミュレーションコントローラに接続されている。このアドレスコンパレータは、読み込んだデータがリアルタイムエミュレーションに含まれている機能単位以外の機能単位による書込みモードにおいてもアクセスされるアドレスエリアから来たものであるか否かを、PUエミュレーションコントローラに知らせる。この場合、アドレスコンパレータにおいて評価されるアドレスレンジは、例えばPU内に固定配線された、または自由にコンフィギュア可能なI/Oレンジ、例えばデュアルポートRAMのような外部メモリに対して、永続的にプログラミングされていてもよい。さらに、エミュレーションデータは、I/Oエリア、デュアルポートRAMなどのような、CPUによって(したがってまた恐らくは他のエンティティによっても)非排他的に変更されるストレージエリアから読み込んだデータのみを含んでいる。さらには、このコンテキストでは、それぞれのエミュレーションデバイスがCPUの他にプログラマブルユニットの別の機能単位を、すなわち、各メモリに書込みモードでアクセスすることのできる機能単位を含んでいると有利である。これらの機能単位は、他のCPU、および/または、1つもしくは複数のDMAユニット、および/または、1つもしくは複数のメモリ管理ユニット(MMU)、または類似の装置である。
特にリアルタイムエミュレーションにとっては、デバッグインタフェースを有するエミュレーションデバイスも有利である。
さらに、プログラマブルユニットで実行されるアプリケーションプログラムがエミュレーションポートにより占有されたピンを使用するようにする可能性も残っている。エミュレーションデバイスにおいて、デバッギングプロセス中にエミュレーションポートにより占有される1つまたは複数のピンを制御する制御レジスタのアドレスに、エミュレーションデバイスの1つまたは複数のデジタル出力側を制御する適切な制御レジスタを実現してもよい。リアルタイムエミュレーションがこの制御レジスタに書込みモードでアクセスした場合、これらのピンのビヘイビアはプログラマブルユニットにおける相応するピンと同じである。これらのピンは、エミュレーションデバイスにおいてコピーされた周辺ユニット(パルス幅変調器、ディスプレイドライバなどような)によって、入力側および出力側として動作させることができる。これらの周辺ユニットは制御レジスタにより制御される。
本発明の第3の側面によれば、少なくとも1つのCPUと、エミュレーションデータを外部エミュレーションデバイスに転送するための通信リンクとしてのエミュレーションポートとを持ったターゲットプログラマブルユニットが提供される。ターゲットプログラマブルユニットは、エミュレーションポートにおいて、ターゲットプログラマブルユニット(1)のCPUクロック信号(8)と所定の関係を保ちながら、通信リンクを介してエミュレーションデバイス(4)に転送する以下のエミュレーションデータを、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータと、プログラムカウンタに影響を及ぼす外部イベントと、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピーと、オプションとして、1つまたは複数のデータタイプ信号をエミュレーションポートにおいて供給し、エミュレーションデバイス(4)へ転送する出力としてターゲットプログラマブルユニットからのCPUクロック信号を供給するように構成されている。
以上、ターゲットプログラマブルユニットの実施形態を本発明の第2の側面である装置の実施形態のコンテキストにおいて説明したが、これは本発明の第1の側面である方法の実施形態にも即応する。さらに、有利な実施形態は添付した特許請求の範囲において従属請求項56−69として列挙されている。
本発明の第4の側面によれば、エミュレーションデータを受け取るために外部ターゲットプログラマブルユニット(1)と通信するエミュレーションポート(15)、外部ターゲットプログラマブルユニットに格納されているプログラムコードと機能的に同一のプログラムコードを格納するためのプログラムメモリ、トレースデータの記憶デバイス(11)、および/または外部の処理・表示デバイス(28)に接続された出力デバイスを有するエミュレーションデバイスが提供される。ただし、エミュレーションポートは、ターゲットプログラマブルユニットからのCPUクロック信号を受信し、また、ターゲットプログラマブルユニットのCPUクロック信号と所定の関係を保ちながら、以下のエミュレーションデータを、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータ、プログラムカウンタに影響を及ぼす外部イベント、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および、オプションとして、1つまたは複数のデータタイプ信号を受信するように構成されており、エミュレーションデバイスはさらに、転送されてきたエミュレーションデータとプログラムメモリに格納されているプログラムコードとを用いて外部ターゲットプログラマブルユニットをエミュレートすることにより、エミュレーションから各トレースデータを確認し、トレースデータを格納および/または出力するように構成されている。
以上、本発明に第4の側面であるエミュレーションデバイスの実施形態を本発明の第2の側面である装置のコンテキストにおいて説明したが、これは本発明の第1の側面である方法の実施形態にも即応する。さらに、有利な実施形態は添付した特許請求の範囲において従属請求項71−80として列挙されている。
本発明の第5の側面は、少なくとも1つのCPUを有するターゲットプログラマブルユニットを、このターゲットプログラマブルユニットに通信リンクを介して接続された外部エミュレーションデバイスによってエミュレートする方法により形成される。この方法は、エミュレーションを初期化するために、予め決められた初期化データを通信リンクを介してエミュレーションデバイスに転送するステップと、なお、ターゲットプログラマブルユニットは初期化データによりすでに自ら初期化しているまたは初期化されており、ターゲットプログラマブルユニットの本来のCPUクロック信号から導出される信号と、加えて、CPUクロック信号と所定の関係を保ちながら、ターゲットプログラマブルユニットの所与のモデルとプログラムコードとに基づいては計算することのできないデータから成るエミュレーションデータを、通信リンクを介してエミュレーションデバイスに転送するステップと、外部エミュレーションデバイスにおいて、転送されたエミュレーションデータを用いてターゲットプログラマブルユニットをエミュレートするステップと、エミュレーションから各トレースデータを確認するステップと、トレースデータを格納および/または出力するステップを有している。
以下のセクションでは、図を用いて本発明の有利な実施例をより詳細に説明する。
図1は、本発明によるオフラインエミュレーションのためにプログラマブルユニットをエミュレートする方法および装置のブロック図である。
図2は、RAMエミュレーションを行わないオフラインエミュレーションの1実施形態のブロック図である。
図3は、図2に類似した、RAMエミュレーションなしのアルタイムエミュレーションのブロック図である。
図4は、図3に類似した、RAMエミュレーション付きのリアルタイムエミュレーションのブロック図である。
図5は、図4に類似した、RAMエミュレーションとデバッギングサポート付きのリアルタイムエミュレーションのブロック図である。
図6は、図5に類似した、エミュレーションポートによって使用されるI/Oピンをアプリケーションプログラムが使用できるようにする能力を持ったリアルタイムエミュレーションのブロック図である。
図1は、本発明によるデバイス12のブロック図であり、特に、本発明に従って、データ29がPU1とエミュレーションデバイスED4との間でどのように交換されるか、また、データ30がED4と評価ソフトウェアプログラム13との間でどのように転送されるかを示している。
PU1とED4との間で転送されるデータ29は、CPUから読み出されたデータ、イベントの発生、レジスタメモリまたは個々のレジスタバンクの内容のコピー、現在転送されているデータのタイプ、イベント、状態および類似のアイテムに関する情報の、完全なまたは限定されたセットを含んでいる。さらに、CPUクロック信号も転送される。
データ29の転送はCPU2またはPU1が実行中でもサスペンド中でも行うことができる。
転送されたエミュレーションデータはED4におけるエミュレーションの入力データとして使用され、ED4は部分的なまたは完全なトレースデータセットを作成する。このトレースデータは通信路30を介して評価ソフトウェアプログラム13または同様のプログラムに利用可能となる。
評価ソフトウェアプログラム13はトレースデータを視覚化し、例えばモニタ14に表示することができる。
特に、デバッガソフトウェアプログラムはEDを制御することができるため、通信路30は双方向に確立されうる。
また、EDは特にPUを制御することができるため、通信路29もまた双方向に確立されうる。
図2には、プログラマブルユニット1をエミュレートするための本発明によるデバイス12の第1の実施例が示されている。エミュレーションはこのデバイス12によってRAMエミュレーションなしにオフラインで実行される。エミュレーションはPU1のCPU2でのプログラム実行と同時には実行されず、処理・表示デバイス28内で遅延される。
本発明によれば、PU1は拡張として、PUエミュレーションコントローラ18、レジスタメモリコピー19、特にバッファメモリ51が接続された選択スイッチ回路17、およびエミュレーションポート15を有している。
図2に示されているように、プログラマブルユニット1はCPU2の一部としてレジスタメモリ3を有している。レジスタメモリコピー19はこのレジスタメモリ3の完全なまたは部分的なコピーである。この複製を行うために、ストローブ情報34がPUエミュレーションコントローラ18から出力される。レジスタメモリの内容をレジスタメモリコピーにコピーする時点は、例えばデータタイプ信号42のある種の符号化によって、EDに知らされなければならない。
割り込みの発生および/またはデータアクセスのような種々の情報43がCPU2からPUエミュレーションコントローラ18に転送される。その一方で、これはブレークポイント信号39によってCPUに接続される。CPU2はなおアドレスバス10に接続されている。
選択スイッチ回路17は、データバス7または同様のアイテムとともに、レジスタメモリコピー19を転送するためのラインまたはバス46と、割り込み38の回数および/またはレベルを転送するための他のバスとに接続されている。選択スイッチ回路17はPUエミュレーションコントローラ18によってデータ選択ラインを用いて制御される。その際、データ選択ライン48はデータソースとデータソースのバス帯域幅を選択スイッチ回路17に通知する。
有利には、PUエミュレーションコントローラ18は、データバスによってCPU2から読み込まれたデータよりも高い優先度を有する割り込み38が転送されるように、選択スイッチ回路17を制御する。割り込み38および/または読込みデータの転送準備ができていなければ、レジスタメモリコピー19を最も低い優先度で転送してもよい。
以下の各ラインまたは信号路の同定または区別は通常はデータの転送により処理されるため、データバス7の代わりにデータ7にのみ言及していることに注意されたい。
選択スイッチ回路17はデータライン47を介してエミュレーションポート15に接続されている。バッファメモリ51は、例えばFIFOとして構成されており、選択スイッチ回路17とエミュレーションポート15との間で切り換えられる。
CPUクロック信号8はCPUからPUエミュレーションコントローラ18、バッファメモリ51へ、そしてエミュレーションポート15を介してED4へ伝送される。このCPUクロック信号と所定の関係を保ちながら、PUは選択スイッチ回路17またはバッファメモリ51の出力側のデータをエミュレーションポート15と通信コネクション5を介してエミュレーションデバイス4に転送することができる。ここで、ED4は少なくとも1つの相応するエミュレーション入力側27を有している。
さらに、データタイプ信号42もPUエミュレーションコントローラ18からエミュレーションポート15に出力される。このデータタイプ信号42もバッファメモリ51によって一時的に記憶されることが可能である。
また、例えば専用モードピンをセットすること、またはCPUの制御レジスタのビットをセットすることにより、エミュレーションポート15がED4へのコネクションを持たない通常のI/Oポートとして動作するように、エミュレーションポート15を切り換えることも可能である。
各データは、少なくとも、エミュレーションポート15を通り、シリアライズ/デシリアライズを行う低電圧差動ポイントツーポイント接続21(LVDS Serdes)のような通信コネクション5を介してエミュレーション入力側27に転送される。
オフラインエミュレーションの場合、ED4はデータ入力ユニット4Aとエミュレーションユニット4Bの2つのユニットに分割される。なお、エミュレーションユニット4Bは外部処理・表示デバイス28としてPC内に実現される。
特にCPUクロック信号8やデータタイプ信号42のような、エミュレーション入力側27によってキャプチャされた信号は、例えばEDエミュレーションコントローラ16に供給してよい。ED4はCPUクロック信号8をカウントするカウンタ20を有しているので、エミュレーション入力側27を介して読み込まれたすべてのデータに時間割当てを、すなわち、いわゆるタイムスタンプ35を使用することができる。
エミュレーション入力側27を介して読み込まれた相応するデータには必要ならばタイムスタンプが与えられ、例えばRAM、ハードディスク等として実現されたメモリ6に格納される。
データタイプ36と書込み情報37はEDエミュレーションコントローラ16からメモリ6に転送される。対応するタイムスタンプ35はカウンタ20からメモリ6に転送される。
メモリ6に入力されたデータはエミュレーションユニット4Bに転送され、エミュレーションユニット4BがPUのCPUのビヘイビアを複製し、完全なまたは部分的なトレースデータセットを作成する。これをするために、メモリ6内のデータは、PC28内のソフトウェアとして実現されたオフラインエミュレーションユニット9に転送される。オフラインエミュレーションユニット9により収集されたトレースデータは例えばトレースデータメモリ11に格納されるが、コネクション30を介して評価ソフトウェアプログラム13に転送してもよい。なお、トレースデータメモリ11は、本明細書では、エミュレーションデバイスの記憶デバイスとしても言及されている。この評価ソフトウェアプログラム13は、例えば、デバッギングプロセスの結果をモニタ14上に視覚化することができる。
本発明によるデバイス12の第2の実施例は図3に示されている。この実施例では、リアルタイムエミュレーションが行われる。同時に、レジスタメモリコピー19(図2参照)はもはや不要であるので、PUの構造をより単純かつ低コストなものにすることができる。
この実施例では、特にCPU2は、PUエミュレーションコントローラ18により生成および出力されるブレークポイント信号39および/またはEDエミュレーションコントローラ16により生成および出力されるブレークポイント信号52により停止させることができる。
レジスタメモリコピー19が不要であることに加えて、PUエミュレーションコントローラ18からストローブ情報34を出力すること、ならびに、レジスタメモリコピー19(図2参照)を転送するためのラインまたはバス46を実現することももはや必要ない。
ED4において、PU1のCPU2のビヘイビアが、例えばプログラマブルロジックモジュール23またはボンドアウトチップ24などのリアルタイムエミュレーションユニット41によって複製される。これをするために、リアルタイムエミュレーションユニット41はアドレスバス31とプログラムデータバス32とともにプログラムメモリ33に接続されている。プログラムメモリ33内には、CPU2のプログラムメモリ内にあるのと同じプログラムコードが、特に部分的にまたは完全に存在している。
CPUクロック信号8はCPU2によってエミュレーション入力側27とそれぞれの通信コネクション5を介してED4に転送され、ED4のリアルタイムエミュレーションユニット41に供給される。
EDエミュレーションコントローラ16は受信したデータタイプ信号42および/またはCPUクロック信号8をデマルチプレクサ40の制御に使用する。なお、デマルチプレクサ40は、特に、CPU2の読込みデータ49またはCPU2において発生した割り込み回数38のいずれかをリアルタイムエミュレーションユニット41の利用に供するものである。
リアルタイムエミュレーションユニット41のデータバスはRAM44への書込みアクセス(コネクション26参照)を有している。この実施例ではRAM44は読み出されないので、RAM44を実施する必要はない。完全なトレースデータセットを生成するには、RAM44への書込みデータアクセス26しか必要ない。
データバスへの読込みアクセス25により、デマルチプレクサ40から読み出される49べきデータの受信が可能になる。
CPU2の機能はリアルタイムエミュレーションユニット41において複製され、相応するトレースデータが完全にまたは所定の基準に従ってフィルタリングされ、トレースデータメモリ11に格納される、または、評価ソフトウェアプログラム13に直接出力される。この評価ソフトウェアプログラム13は、有利には、処理・表示ユニット28において実行され、デバッギングプロセスの結果をモニタ14上に視覚化する。なお、処理・表示ユニットは例えばPCであってよい。
ED4において、PUのオンチップ周辺装置の複製は部分的に不要とすることができる。例えばプログラマブルロジックモジュールを使用することによって、単一のEDを用いて少なくとも1つのマイクロコントローラファミリーの所望の数の様々なターゲットCPUをエミュレートすることが可能になる。リアルタイムCPUエミュレーションの関連するインプリメンテーションをプログラマブルロジックモジュールにロードしてもよい。
本発明によるデバイス12の第3の実施例は図4に示されている。この実施例は、図3に示されている実施例をPU1のRAMをエミュレートする能力で、したがってまた、PU1とED4との間で転送されるエミュレーションに必要なデータの量を低減する能力で、拡張したものである。
関連するED4は、メモリへの書込みアクセス、特に、1つもしくは複数のCPUおよび/または1つもしくは複数のDMAユニットおよび/または1つもしくは複数のMMUユニットへの書込みアクセスを有することのできる、相応するリアルタイムエミュレーションのためのすべての機能単位を含むものとなろう。
RAMエミュレーション有りのリアルタイムエミュレーションの場合、PU1のRAMの内容が信頼できる明示的な初期化またはそれに類したものによって予めはっきりと決められていなければ、初期的にRAMの表現も静的情報としてED4に転送される。ED4のRAM44はこの表現で初期化される。
RAMエミュレーション有りのオンラインエミュレーションの場合、アドレスバス10とPUエミュレーションコントローラ18との間に付加的なアドレスコンパレータ22が接続されていることの結果として、本発明によるデバイス12のPUの関連する構造は図3に示されている構造とは異なっている。アドレスコンパレータ22は、データバス7で現在読み込まれているデータが、EDのリアルタイムエミュレーションユニット41内に含まれている機能単位がどれも書込みアクセスを有していないようなアドレスレンジからのものであるか否かを示す。
リアルタイムエミュレーションユニット41内に含まれている機能単位のみが書込みアクセスを有するアドレスレンジから読み出されたデータは、この実施例では、もはやED4に転送しなくてよい。関連するアドレスレンジは永続的にプログラムされたもの、および/または自由にコンフィギュア可能なものであってもよい。
さらに、プログラマブルユニット1の構造も図3に関連して説明されたデバイス12と一致している。
この実施例では、ED4はさらに、リアルタイムエミュレーションユニット41から読み出されるデータ25のソースを決定するデータセレクタ50を有している。リアルタイムエミュレーションユニット41内に含まれている機能単位のみが書込みアクセスを有するアドレスレンジに置かれたデータへの読込みアクセスを、データタイプ信号42がEDエミュレーションコントローラ16に示す、または、エミュレーションが自動的に検出すると、EDエミュレーションコントローラ16は、リアルタイムエミュレーションユニット41がEDのRAM44からデータを読み出すように、データセレクタ50を切り換える。
リアルタイムエミュレーションユニット41内に含まれている機能単位以外の機能単位が書込みアクセスを有するアドレスレンジに置かれたデータへの読込みアクセスを、データタイプ信号42がEDエミュレーションコントローラ16に示す、または、エミュレーションが自動的に検出すると、EDエミュレーションコントローラ16は、リアルタイムエミュレーションユニット41がPUによって受信されたデータを読み出すように、データセレクタ50を切り換える。
本発明によるデバイス12の第4の実施例は図5に示されている。この実施例は図3または図4に示されている実施例を複雑なブレークポイントをセットする能力で拡張したものである。
本発明に従えば、例えばプログラム実行のブレークポイントにおいていくつかの値をチェックするために、プログラム実行に割り込むいくつかのブレークポイントをサポートすることが可能である。これらのブレークポイントをサポートするためにターゲットCPU上で実施されるかも知れないメカニズムに加えて、特に複雑なブレークポイントをサポートするために、エミュレーションデバイス4によって別のメカニズムを形成してもよい。エミュレーションデバイスはCPUを停止し、CPU2のアドレスバスおよびデータバス10,7にアクセスすることができる。
エミュレーションデバイス4はデバッギングインタフェース45を有している。このデバッギングインタフェース45はブレークポイントを検出するために使用されるものであり、評価ソフトウェアプログラムによって制御される。有効なブレークポイントが検出されると、PUのCPUとエミュレートされたCPU23,24はブレークポイント信号52によって停止される。
本発明によるデバイス12の第5の実施例は図6に示されている。この実施例では、エミュレーションポート15により占有されたPU1のピンをPU1において実行されるアプリケーションプログラムで使用するというオプションにより、図3、図4、または図5に示されている実施例が拡張されている。
ED4内では、デバッギングプロセス中にエミュレーションポート15によって占有される1つまたは複数のピンを制御する制御レジスタのアドレスに、ED4の1つまたは複数のデジタル出力側55を制御する適切な制御レジスタ54が実現されている。リアルタイムエミュレーションユニット41がこの制御レジスタ54への書込みアクセスを有しているならば、EDピン55のビヘイビアは対応するPUピンと同じである。
ピン55は入力側または複合入出力側としても動作することができ、この場合には、ピン55の入力信号を転送するためのデータ伝送はCPU2上で実現されなければならない。簡単のために、このデータ転送は図6には図示されていない。
ピン55は、EDにおいてコピーされる周辺ユニット(パルス幅変調器、ディスプレイドライバなどような)によって、入力側および出力側として動作させることもできる。これらの周辺ユニットは制御レジスタ54により制御される。
PUのピン55の信号を例えばリボンケーブルを介して送り返し、これらの信号をPUの近傍でPUを支持する回路基板に供給することも可能である。ジャンパまたは同様のものを使用して、エミュレーションポート15とピン55を切り換えてもよい。
エミュレーションポート15がEDとの通信に使用される場合には、接続されたネットワークは出力側55を通して制御される。接続されたネットワークをエミュレーションポート15の関連するピンから切り離すために、ジャンパまたは同様のものを使用してもよい。デバッギングプロセスが完了し、エミュレーションポート15がPUに対して使用可能になっていれば、接続されたネットワークはエミュレーションポート15の該当するピンに直接接続することができる。これをするために、例えばCPUの制御レジスタの専用モードピンまたはビットをセットすることによって、エミュレーションポート15を通常のI/Oポートとして構成してもよい。
簡単のためにPU1の他のすべてのオンチップ周辺装置は図2−6に図示されていることに注意されたい。
PU1とED4からのデータ転送時間により時間遅延と相応のCPUクロックオフセットが生じうるが、このことはエミュレーションと入手したトレースデータの評価の際に考慮されなければならない。特に、実施例(図5参照)で説明されているように複雑なブレークポイントが設定されている場合には、生じうる時間オフセットを相応に考慮しなければならない。
本発明のすべての実施例において、例えば、CPUクロック信号の立上りエッジまたは立下りエッジのときに該当するデータの転送を行うならば、あるいは、クロック周波数を上げる、または、転送すべきデータを複数のCPUサイクルにわたって分散し、データ量が大きくなり過ぎたら、相応するCPUウェイトサイクルを挿入するようにすれば、エミュレーションポートへのコネクション数を減らすことが可能である。
以下では、エミュレーションポートのデザインに関して、特定の例を挙げて説明する。以下に示す式はすべての設計タスクに対して一般的に適用されるものではなく、示された例に限定されるものであることに注意されたい。
実際のマイクロコントローラのほとんどは、I/Oコンポーネントへの著しく低速のインタフェースとともに、高速CPUと高速メモリインタフェースを提供する。エミュレーションポートがCPUクロックに基づいて2倍のデータレートで動作するならば、同期データを出力するのに必要なピンの量は次のように推定することができる。
Figure 2008544340
ここで、nは必要とされるピンの数であり、sはステータスビット(ターゲットに固有の、割り込み状態、バスウェイトフラグ、DMA状態、DMAチャネル数)の数であり、wはI/Oアクセスのバス帯域幅であり、cはCPU読出し命令1つ当たりのクロックサイクルとDMA読出し動作1つ当たりのクロックサイクルとの最小値である。
この式を説明するために、3つの典型的な例を以下に示す。第1の例は8ビットマイクロコントローラであり、これについて、エミュレーションインタフェースを実現するのに必要な付加的なハードウェアの量も示す。
Figure 2008544340
第2の例はDSP機能が付加された16ビットマイクロコントローラである。
Figure 2008544340
最後に、周辺アクセスには16ビットしか使用しない32ビットマイクロコントローラの例を示す。
Figure 2008544340
CPUのI/O読出し帯域幅が比較的大きい場合には、エミュレーションインタフェースによって転送されるべきデータストリームをFIFOでバッファしてよい。この場合、I/Oロード動作の統計的頻度が実際に必要とされる帯域幅を決定する。この統計的効果をより明瞭にするには、命令タイプの統計的分布を示した表1を参照されたい。
所要帯域幅は(他のそれほど支配的でないファクタの中から)命令セットとFEPOのサイズとに依存しており、以下の式により推定することができる。
Figure 2008544340
ここで、drはプログラマブルユニットからエミュレータへのデータ転送レートであり、fはCPU周波数であり、lioはI/Oロード命令のパーセンテージであり、cはロード命令1つ当たりの必要最小サイクルである。
次の2つの計算は所要帯域幅の基準フレームとして与えられているだけである。第1の式は60MHzでの16ビットマイクロコントローラを特徴付けるものである。
Figure 2008544340
第2の例は200MHzでの32ビットマイクロコントローラを特徴付けるものである。
Figure 2008544340
これらの帯域幅は、組込トレースモジュールでトレースデータを連続的に抽出するために必須のデータ転送レートをはるかに下回っている。
もちろん、実際のインプリメンテーションでは、どのようなFIFOオーバーフローも以下の方法により防止されなければならない。
I/O読出しアクセスが頻繁な場合に、コンパイラによりNOPを自動挿入する。
FIFOオーバーフローが差し迫ったら、CPUを休止させる。
本出願の優先権主張の基礎となる出願EP 05 009 621は参照により全体として本出願に取り込まれている。
本出願中の用語を解釈する際、以下の用語は、本出願の優先権主張の基礎となる本出願人による出願EP 05 009 621における対応する用語と同じ意味を有するものとして解釈されなければならない。
Figure 2008544340
本発明によるオフラインエミュレーションのためにプログラマブルユニットをエミュレートする方法および装置のブロック図である。 RAMエミュレーションを行わないオフラインエミュレーションの1実施形態のブロック図である。 図2に類似した、RAMエミュレーションなしのアルタイムエミュレーションのブロック図である。 図3に類似した、RAMエミュレーション付きのリアルタイムエミュレーションのブロック図である。 図4に類似した、RAMエミュレーションとデバッギングサポート付きのリアルタイムエミュレーションのブロック図である。 図5に類似した、エミュレーションポートによって使用されるI/Oピンをアプリケーションプログラムが使用できるようにする能力を持ったリアルタイムエミュレーションのブロック図である。

Claims (85)

  1. ターゲットプログラマブルユニット(1)を外部エミュレーションデバイス(4)によりエミュレートする方法において、ターゲットプログラマブルユニットは少なくとも1つのCPU(2)を有しており、外部エミュレーションデバイスは通信リンク(5)によりターゲットプログラマブルユニットに接続されており、該エミュレーション方法は以下の諸ステップ、すなわち、エミュレーションを初期化するために、予め決められた初期化データを通信リンク(5)を介してエミュレーションデバイス(4)に転送するステップ、なお、ターゲットプログラマブルユニット(1)は前記初期化データによりすでに自ら初期化しているまたは初期化されており、通信リンクを介してエミュレーションデバイスにターゲットプログラマブルユニット(1)のCPUクロック信号を転送し、また、該CPUクロック信号(8)と所定の関係を保ちながら、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータと、プログラムカウンタに影響を及ぼす外部イベントと、オプションとして、CPUを迂回するデータ転送をトリガするイベントと、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピーと、オプションとして、1つまたは複数のデータタイプ信号を転送するステップ、外部エミュレーションデバイスにおいて、転送されたエミュレーションデータを用いてターゲットプログラマブルユニット(1)をエミュレートするステップ、外部エミュレーションデバイスにおいてエミュレーションから各トレースデータを確認するステップ、および、トレースデータを格納および/または出力するステップを有することを特徴とする、ターゲットプログラマブルユニット(1)を外部エミュレーションデバイス(4)によりエミュレートする方法。
  2. 前記CPUクロック信号(8)または本来のCPUクロック信号から導出される信号のいずれかをターゲットプログラマブルユニット(1)からエミュレーションポート(15)を介してエミュレーションデバイス(4)に転送する、請求項1記載の方法。
  3. エミュレーションデータを転送するステップが専ら、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータ、プログラムカウンタに影響を及ぼす外部イベント、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および、オプションとして、1つまたは複数のデータタイプ信号のみを転送することから成る、請求項1記載の方法。
  4. エミュレーションはターゲットプログラマブルユニットから一定量のデータを受け取った時点から実行される、請求項1から3のいずれか1項記載の方法。
  5. CPUクロック信号(8)をプログラマブルユニットのエミュレーションコントローラ(18)および/またはターゲットプログラマブルユニット(1)のバッファメモリ(51)に転送する、請求項1から4のいずれか1項記載の方法。
  6. エミュレーションデータをCPUクロック信号(8)の立下りエッジもしくは立上りエッジとともに転送するか、または、CPUクロック信号(8)の立下りエッジと立上りエッジの両方とともに転送する、請求項1から5のいずれか1項記載の方法。
  7. エミュレーションデータの転送を駆動するクロック周波数をエミュレーションデータの転送中にCPUクロック周波数を超えて上昇させる、請求項1から6のいずれか1項記載の方法。
  8. 転送すべきエミュレーションデータをターゲットCPU(2)の数サイクルにわたって分散させる、請求項1から7のいずれか1項記載の方法。
  9. エミュレーションデータの転送中に、ターゲットプログラマブルユニットまたはエミュレーションデバイスにより、CPUウェイトサイクルの挿入を制御する、請求項1から8のいずれか1項記載の方法。
  10. ターゲットプログラマブルユニット(1)を、ターゲットプログラマブルユニットの通信リンク(5)の一部として構成されたエミュレーションポート(15)を標準出力ポートとして使用するための動作モードに切り換える、ただし、切り換えはエミュレーションポートの全体またはエミュレーションポートのピンのサブセットに対して適用される、請求項1から9のいずれか1項記載の方法。
  11. JTAGインタフェースと共同でエミュレーションポートのコンタクトピンを使用する、請求項10記載の方法。
  12. RAMが初めに完全に初期化されていなければ、プログラムメモリの部分的なまたは完全なコピーおよび/またはターゲットプログラマブルユニット(1)のRAMの部分的なまたは完全なコピーをエミュレーションデバイス(4)に転送する、請求項1から11のいずれか1項記載の方法。
  13. 受け取ったエミュレーションデータをエミュレーションデバイス(4)の記憶デバイス(6)に格納する、請求項1から12のいずれか1項記載の方法。
  14. 求めたトレースデータをエミュレーションデバイス(4)による出力および/または保存の前にフィルタリングするステップを含む、請求項1から13のいずれか1項記載の方法。
  15. ターゲットプログラマブルユニット(1)のエミュレーションを以前に取得し格納したエミュレーションデータを用いてエミュレーションデバイスによりオフラインで行う、請求項1から14のいずれか1項記載の方法。
  16. 転送されたエミュレーションデータにある特定の時点を割り当てるために、エミュレーションデバイス(4)において、カウンタデバイス(20)を用いてCPUクロック信号(8)をカウントする、請求項1から15のいずれか1項記載の方法。
  17. ターゲットプログラマブルユニットのランダムアクセスメモリをエミュレートせずに、ターゲットプログラマブルユニットのエミュレーションを行う、請求項15または16記載の方法。
  18. ターゲットプログラマブルユニット(1)のプログラム実行は、同じコンテキストのレジスタバンク(3)の完全なコピーが最後に検出された時点に始まる各コンテキストレベルについて、エミュレーションデバイス(4)によりシミュレートされる、請求項1から17のいずれか1項記載の方法。
  19. ターゲットプログラマブルユニットのCPUをコンピュータ上で実行されるコンピュータプログラムによりエミュレートする、請求項14から18のいずれか1項記載の方法。
  20. ターゲットプログラマブルユニットのエミュレーションは、ターゲットプログラマブルユニットのRAMの一部またはターゲットプログラマブルユニットのRAM全体をエミュレートすることを含む、請求項15記載の方法。
  21. ターゲットプログラマブルユニットにおいて、CPUにより現在読み込まれているデータまたはDMA動作中のデータが、ターゲットプログラマブルユニット(1)のCPU以外の機能単位により書込み可能なターゲットプログラマブルユニットのアドレスレンジから来ているものであるか否かを判定するステップと、続いて、CPUにより読み込まれたデータまたはDMA動作中のデータのうち、ターゲットプログラマブルユニット(1)のCPU以外の機能単位により書込み可能なターゲットプログラマブルユニットのアドレスレンジから来ているもののみをエミュレーションデバイス(4)に転送するステップを含む、請求項1から20のいずれか1項記載の方法。
  22. ターゲットプログラマブルユニットのCPU以外の機能単位により書込み可能なアドレスレンジは固定して永続的にプリプログラムされているか、または、自由にコンフィギュアされるか、もしくは、部分的に永続的にプログラムされ、部分的に自由にコンフィギュアされる、請求項21記載の方法。
  23. エミュレーションデバイス(4)においてリアルタイムでエミュレーションを行う、請求項1から14のいずれか1項記載の方法。
  24. リアルタイムエミュレーションを実行するために、ターゲットプログラマブルユニット(1)のCPU(2)の相応のインプリメンテーションをエミュレーションデバイス(4)のプログラマブルロジックモジュールにロードする、請求項23記載の方法。
  25. 有効なブレークポイントが検出されたら、ターゲットプログラマブルユニット(1)またはターゲットプログラマブルユニットのCPU(2)をエミュレーションデバイス(4)またはターゲットプログラマブルユニット(1)により停止する、請求項1から24のいずれか1項記載の方法。
  26. 1つまたは複数のブレークポイントを立て、エミュレーションデバイス(4)により管理する、請求項1から25のいずれか1項記載の方法。
  27. ブレークポイント信号(39,52)を、ターゲットプログラマブルユニットのエミュレーションコントローラ(18)から、またはエミュレーションデバイス(16)のエミュレーションコントローラから、ターゲットプログラマブルユニット(1)のCPU(2)に転送する、請求項1から26のいずれか1項記載の方法。
  28. エミュレーションデバイス(4)はターゲットプログラマブルユニットを停止した後にターゲットプログラマブルユニット(1)のアドレスバスとデータバス(10,7)にアクセスする、請求項23から27のいずれか1項記載の方法。
  29. リアルタイムエミュレーションにおいて、エミュレーションデバイスは自らのメモリに対して読み書きアクセスを有しており、読出しアクセスの場合には、ターゲットプログラマブルユニット(1)から転送されたデータを受け取る、請求項23から28のいずれか1項記載の方法。
  30. ターゲットプログラマブルユニット(1)においてイベントが発生すると、同じイベントがエミュレーションデバイスにおいて同時にまたはオフセットを伴ってトリガされる、請求項23から29のいずれか1項記載の方法。
  31. エミュレーションデバイス(4)のデータセレクタ(50)は、エミュレーションデバイス(4)のメモリデバイスからのデータの読出しに、またはターゲットプログラマブルユニット(1)のデータ(49)の読出しに切り換えられる、請求項1から30のいずれか1項記載の方法。
  32. ターゲットプログラマブルユニットのRAMをエミュレートせずにターゲットプログラマブルユニットのリアルタイムエミュレーションを行う、請求項23から31のいずれか1項記載の方法。
  33. 専ら以下のエミュレーションデータのみが転送される、すなわち、プログラマブルユニットのデータバスからCPUが読み込んだデータと、プログラムカウンタに影響を及ぼす外部イベントのみが転送される、請求項32記載の方法。
  34. ターゲットプログラマブルユニットのリアルタイムエミュレーションが、ターゲットプログラマブルユニットのRAMの一部または全体をリアルタイムでエミュレートすることを含む、請求項23から32のいずれか1項記載の方法。
  35. リアルタイムエミュレーションの際に、ターゲットプログラマブルユニット(1)の少なくとも1つのRAMの完全なまたは部分的なコピーもエミュレーションデバイス(4)において実行する、請求項23から34のいずれか1項記載の方法。
  36. ターゲットプログラマブルユニットの機能単位のうち、ターゲットプログラマブルユニット(1)のRAMに書込みを行う機能単位をエミュレートする、請求項35記載の方法。
  37. エミュレーションデータをターゲットプログラマブルユニットのエミュレーションコントローラのFIFOメモリに一時的に格納し、エミュレーションデバイスにおいてブレークポイントがオフセットをもってトリガされた場合には、エミュレーションデバイスは、ターゲットプログラマブルユニットのCPUがエミュレーションデバイスによって停止された時点までにFIFOメモリに格納されたエミュレーションデータを用いて、ブレークポイント後もエミュレーションを続行する、請求項1から36のいずれか1項記載の方法。
  38. プログラマブルユニットをエミュレートするための装置において、該装置は、少なくとも1つのCPU(2)を有するターゲットプログラマブルユニット(1)と、エミュレーションデータの転送のために通信リンク(5)としてのエミュレーションポート(15)を介してターゲットプログラマブルユニット(1)に外部ユニット(14)として接続されたエミュレーションデバイス(4)とを有しており、また、ターゲットプログラマブルユニットのエミュレーションから各トレースデータを確認するように構成されており、エミュレーションデバイス(4)は少なくとも1つのエミュレーションコントローラ(16)と、トレースデータの記憶デバイスおよび/または外部の処理・表示デバイスに接続された出力デバイスとを有しており、ターゲットプログラマブルユニットは、ターゲットプログラマブルユニットのCPUクロック信号(8)と所定の関係を保ちながら、以下のエミュレーションデータを、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータと、プログラムカウンタに影響を及ぼす外部イベントと、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピーと、オプションとして、1つまたは複数のデータタイプ信号を、通信リンク(5)を介してエミュレーションデバイス(4)に転送するように、また、ターゲットプログラマブルユニットからのCPU信号をエミュレーションデバイス(4)に転送するように構成されている、ことを特徴とするプログラマブルユニットをエミュレートするための装置。
  39. ターゲットプログラマブルユニットは専ら以下のエミュレーションデータを、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータ、プログラムカウンタに影響を及ぼす外部イベント、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および、オプションとして、1つまたは複数のデータタイプ信号のみを、エミュレーションデバイスに転送するように構成されている、請求項38記載の装置。
  40. ターゲットプログラマブルユニットのエミュレーションコントローラ(18)は、エミュレーションデータの一部としてデータタイプ信号(42)をエミュレーションポート(15)と、存在するならば、ターゲットプログラマブルユニット(1)のバッファメモリ(51)とにも転送するように構成されている、請求項38または39記載の装置。
  41. ターゲットプログラマブルユニット(1)とエミュレーションデバイス(4)との間に双方向通信を提供するように構成されている、請求項38から40のいずれか1項記載の装置。
  42. エミュレーションデバイス(4)がデバッギングインタフェース(25)を有している、請求項38から41のいずれか1項記載の装置。
  43. エミュレーションデバイス(4)はターゲットプログラマブルユニット(1)のプログラムメモリと一致するプログラムメモリ(33)を有している、請求項38から42のいずれか1項記載の装置。
  44. デバッギングまたはエミュレーションのために、エミュレーションポート無しのターゲットプログラマブルユニット(1)の代わりに、エミュレーションポート(15)付きのターゲットプログラマブルユニット(1)をターゲットシステムに挿入することができる、請求項38から43のいずれか1項記載の装置。
  45. エミュレーションデバイス(4)は切換可能データセレクタ(50)を有しており、該切換可能データセレクタは、エミュレーションデバイス(4)のRAM(44)からデータを読み出すため、または、ターゲットプログラマブルユニット(1)から受け取ったデータを読み込むために接続することができる、請求項38から44のいずれか1項記載の装置。
  46. ターゲットプログラマブルユニット(1)は自らのCPUクロック信号(8)をエミュレーションポート(15)を介してエミュレーションデバイス(4)に転送するように構成されている、請求項38から45のいずれか1項記載の装置。
  47. エミュレーションデバイス(4)は、リアルタイムエミュレーションユニット(41)として、ボンドアウトチップまたはプログラマブルロジックモジュール(23)の形態のロジックモジュールを有している、請求項38から46のいずれか1項記載の装置。
  48. エミュレーションデバイスは、リアルタイムエミュレーションユニット(41)として、アドレスバス(31)および/またはプログラムメモリ(33)および/またはプログラムデータバス(32)に接続されている、請求項38から44のいずれか1項記載の装置。
  49. エミュレーションデバイス(4)はデマルチプレクサデバイス(40)を有している、請求項38から48のいずれか1項記載の装置。
  50. エミュレーションデバイス(4)の1つまたは複数のデジタル出力側(55)および/またはターゲットプログラマブルユニット(1)からコピーされたエミュレーションデバイス(4)内の周辺ユニットを制御する制御レジスタ(54)がエミュレーションデバイス(4)に実装されている、請求項38から48のいずれか1項記載の装置。
  51. エミュレーションデバイス(4)のデジタル出力側(55)は出力側として切換可能であり、デジタル出力側(55)の信号は相応のコネクションを介してターゲットプログラマブルユニット(1)にフィードバックすることができる、請求項38から50のいずれか1項記載の装置。
  52. ターゲットプログラマブルユニット(1)内のアドレスバスライン(20)はアドレスコンパレータ(22)を介してターゲットプログラマブルユニットのエミュレーションコントローラ(18)に接続されている、請求項38から51のいずれか1項記載の装置。
  53. エミュレーションデバイスは、リアルタイムエミュレーションユニット(41)として、データバスを介してRAM(44)に接続されている、請求項38から52のいずれか1項記載の装置。
  54. ターゲットプログラマブルユニットのエミュレーションポートは出力側にFIFOメモリを有しており、エミュレーションコントローラ(18)はFIFOメモリに格納されているエミュレーションデータをエミュレーションデバイスに転送するように構成されている、請求項38から53のいずれか1項記載の装置。
  55. エミュレーションデバイスは、ターゲットプログラマブルユニットのエミュレーションコントローラとエミュレーションデバイスのランダムアクセスメモリとに接続された入力側と、エミュレーションデバイスのCPUに接続された出力側を有するタイムマルチプレクサを有しており、該タイムマルチプレクサは、入力側で受信した信号を時間多重された出力信号の形態で供給するように構成されている、請求項38から54のいずれか1項記載の装置。
  56. ターゲットプログラマブルユニット側とエミュレーションデバイス側とにそれぞれJTAGインタフェースを有する、請求項38から55のいずれか1項記載の装置。
  57. 少なくとも1つのCPU(2)と、エミュレーションデータを外部エミュレーションデバイス(1)に転送するための通信リンク(5)としてのエミュレーションポート(15)を有するターゲットプログラマブルユニット(1)において、該ターゲットプログラマブルユニットは、ターゲットプログラマブルユニット(1)のCPUクロック信号(8)と所定の関係を保ちながら、通信リンク(5)を介してエミュレーションデバイス(4)に出力される以下のエミュレーションデータを、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータと、プログラムカウンタに影響を及ぼす外部イベントと、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピーと、オプションとして、1つまたは複数のデータタイプ信号をエミュレーションポートにおいて供給するように、また、エミュレーションデバイス(4)に転送される出力としてターゲットプログラマブルユニットからのCPUクロック信号を供給するように構成されている、ことを特徴とするターゲットプログラマブルユニット(1)。
  58. 専ら以下のエミュレーションデータのみを、すなわち、ターゲットプログラマブルユニットのデータバスからCPUが読み込んだデータ、プログラムカウンタに影響を及ぼす外部イベント、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および、オプションとして、1つまたは複数のデータタイプ信号のみを、エミュレーションデバイス(4)に転送するように構成されている、請求項57記載のターゲットプログラマブルユニット。
  59. エミュレーションデータをCPUクロック信号(8)の立下りエッジもしくは立上りエッジとともに転送するか、または、CPUクロック信号(8)の立下りエッジと立上りエッジの両方とともに転送するように構成されている、請求項57または58記載のターゲットプログラマブルユニット(1)。
  60. エミュレーションデータの転送を駆動するためにCPUクロック周波数を超えて引き上げられた周波数でクロック信号を発生させるように構成されている、請求項57から59のいずれか1項記載のターゲットプログラマブルユニット(1)。
  61. エミュレーションデータをターゲットCPU(2)の数サイクルにわたって転送されるように分散させるように構成されている、請求項57から60のいずれか1項記載のターゲットプログラマブルユニット(1)。
  62. エミュレーションポート(15)を標準I/Oポートとして使用するための動作モードに切り替わるように構成されている、請求項57から61のいずれか1項記載のターゲットプログラマブルユニット(1)。
  63. デバッギングまたはエミュレーションのために、エミュレーションポート無しのターゲットプログラマブルユニット(1)の代わりに、エミュレーションポート(15)付きでターゲットシステムに挿入することができる、請求項57から62のいずれか1項記載のターゲットプログラマブルユニット(1)。
  64. RAMが初めに完全に初期化されていない場合には、プログラムメモリの部分的なまたは完全なコピーおよび/またはターゲットプログラマブルユニット(1)のRAMの部分的なまたは完全なコピーをエミュレーションデバイス(4)に転送するように構成されている、請求項57から63のいずれか1項記載のターゲットプログラマブルユニット(1)。
  65. 現在読み込まれているデータが、ターゲットプログラマブルユニット(1)のCPU以外の機能単位により書込み可能なターゲットプログラマブルユニットのRAMのアドレスレンジから来ているものであるか否かを判定し、ターゲットプログラマブルユニット(1)のCPU以外の機能単位により書込み可能なターゲットプログラマブルユニットのアドレスレンジから来ているエミュレーションデータのみをエミュレーションデバイス(4)に転送するように構成されている、請求項57から64のいずれか1項記載のターゲットプログラマブルユニット(1)。
  66. エミュレーションポートを通るエミュレーションデータの流れを制御するように構成されたエミュレーションコントローラ(18)を有している、請求項57から65のいずれか1項記載のターゲットプログラマブルユニット(1)。
  67. エミュレーションコントローラ(18)は、データタイプ信号(42)をエミュレーションポート(15)と、存在するならば、ターゲットプログラマブルユニット(1)のバッファメモリ(51)とにも転送するように構成されている、請求項57から66のいずれか1項記載のターゲットプログラマブルユニット(1)。
  68. ターゲットプログラマブルユニット(1)とエミュレーションデバイス(4)との間に双方向通信を提供するように構成されている、請求項57から67のいずれか1項記載のターゲットプログラマブルユニット。
  69. 自らのCPUクロック信号(8)をエミュレーションポート(15)を介してエミュレーションデバイス(4)に送信するように構成されている、請求項57から68のいずれか1項記載のターゲットプログラマブルユニット。
  70. ターゲットプログラマブルユニット(1)内のアドレスバスライン(20)はアドレスコンパレータ(22)を介してエミュレーションコントローラ(18)に接続されている、請求項57から69のいずれか1項記載のターゲットプログラマブルユニット。
  71. エミュレーションコントローラは出力側にFIFOメモリを有しており、ブレークポイントの発生後、FIFOメモリが空になるまで、FIFOメモリに格納されているエミュレーションデータをエミュレーションデバイスに転送し続けるように構成されている、請求項57から70のいずれか1項記載のターゲットプログラマブルユニット。
  72. エミュレーションコントローラに接続されたJTAGインタフェースを有しており、該JTAGインタフェースは、エミュレーションコントローラからイネーブル信号を受信すると、JTAG標準に従ってJTAG出力データを供給するように構成されている、請求項57から71のいずれか1項記載のターゲットプログラマブルユニット。
  73. エミュレーションデータを受け取るために外部ターゲットプログラマブルユニット(1)と通信するエミュレーションポート(15)、外部ターゲットプログラマブルユニットに格納されているプログラムコードと機能的に同一のプログラムコードを格納するためのプログラムメモリ、トレースデータの記憶デバイス(11)、および/または外部の処理・表示デバイス(28)に接続された出力デバイスを有するエミュレーションデバイスにおいて、エミュレーションポートは、ターゲットプログラマブルユニットからのCPUクロック信号を受信し、また、ターゲットプログラマブルユニットのCPUクロック信号と所定の関係を保ちながら、以下のエミュレーションデータを、すなわち、ターゲットプログラマブルユニットのデータバスから外部ターゲットプログラマブルユニットのCPUが読み込んだデータ、プログラムカウンタに影響を及ぼす外部イベント、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および、オプションとして、1つまたは複数のデータタイプ信号を受信するように構成されており、エミュレーションデバイスはさらに、転送されてきたエミュレーションデータとプログラムメモリに格納されているプログラムコードとを用いて外部ターゲットプログラマブルユニット(1)をエミュレートし、受信したエミュレーションデータに基づいてエミュレーションから各トレースデータを確認し、トレースデータを格納および/または出力するように構成されていることを特徴とする、エミュレーションデバイス。
  74. 専ら受信した以下のエミュレーションデータのみに基づいて、すなわち、ターゲットプログラマブルユニットのデータバスから外部ターゲットプログラマブルユニットのCPUが読み込んだデータ、プログラムカウンタに影響を及ぼす外部イベント、オプションとして、周期的に作成されるレジスタメモリの完全なまたは部分的なコピー、および、オプションとして、1つまたは複数のデータタイプ信号のみに基づいて、エミュレーションからトレースデータを確認するように構成されている、請求項73記載のエミュレーションデバイス。
  75. デバッギングインタフェースを有する、請求項73または74記載のエミュレーションデバイス。
  76. エミュレーションデバイス(4)は、エミュレーションデバイス(4)のRAM(44)からデータを読み出すため、または、ターゲットプログラマブルユニット(1)から受け取ったデータを読み込むために接続することのできる切換可能データセレクタ(50)を有している、請求項73から75のいずれか1項記載のエミュレーションデバイス。
  77. エミュレーションデバイス(4)が、リアルタイムエミュレーションユニット(41)として、ボンドアウトチップまたはプログラマブルロジックモジュール(23)の形態のロジックモジュールを有している、請求項73から76のいずれか1項記載のエミュレーションデバイス。
  78. エミュレーションデバイスが、リアルタイムエミュレーションユニット(41)として、アドレスバス(31)および/またはプログラムメモリ(33)および/またはプログラムデータバス(32)に接続されている、請求項73から77のいずれか1項記載のエミュレーションデバイス。
  79. デマルチプレクサデバイス(40)を有する、請求項73から78のいずれか1項記載のエミュレーションデバイス。
  80. エミュレーションデバイス(4)の1つまたは複数のデジタル出力側(55)および/または外部ターゲットプログラマブルユニット(1)からコピーされたエミュレーションデバイス(4)内の周辺ユニットを制御する制御レジスタ(54)がエミュレーションデバイス(4)に実装されている、請求項73から79のいずれか1項記載のエミュレーションデバイス。
  81. エミュレーションデバイス(4)のデジタル出力側(55)は出力側として切換可能であり、デジタル出力側(55)の信号は相応のコネクションを介してターゲットプログラマブルユニット(1)にフィードバックすることができる、請求項73か80のいずれか1項記載のエミュレーションデバイス。
  82. リアルタイムエミュレーションユニット(41)として、データバスを介してRAM(44)に接続されている、請求項73から81のいずれか1項記載のエミュレーションデバイス。
  83. ターゲットプログラマブルユニットのエミュレーションコントローラとエミュレーションデバイスのランダムアクセスメモリとに接続された入力側と、エミュレーションデバイスのCPUに接続された出力側を有するタイムマルチプレクサを有しており、該タイムマルチプレクサは入力側で受信した信号を時間多重された出力信号の形態で供給するように構成されている、請求項73から82のいずれか1項記載のエミュレーションデバイス。
  84. エミュレーションポートと共用されるJTAGインタフェースを有する、請求項73から83のいずれか1項記載のエミュレーションデバイス。
  85. ターゲットプログラマブルユニット(1)を外部エミュレーションデバイス(4)によりエミュレートする方法において、ターゲットプログラマブルユニットは少なくとも1つのCPU(2)を有しており、外部エミュレーションデバイスは通信リンク(5)によりターゲットプログラマブルユニットに接続されており、該エミュレーション方法は以下の諸ステップ、すなわち、エミュレーションを初期化するために、予め決められた初期化データを通信リンクを介してエミュレーションデバイスに転送するステップと、なお、ターゲットプログラマブルユニットは初期化データによりすでに自ら初期化しているまたは初期化されており、ターゲットプログラマブルユニットの本来のCPUクロック信号から導出される信号と、加えて、CPUクロック信号(8)と所定の関係を保ちながら、ターゲットプログラマブルユニットの所与のモデルとプログラムコードとに基づいては計算することのできないデータから成るエミュレーションデータを、通信リンクを介してエミュレーションデバイスに転送するステップと、転送されたエミュレーションデータを用いてターゲットプログラマブルユニットをエミュレートするステップと、エミュレーションから各トレースデータを確認するステップと、トレースデータを格納および/または出力するステップを有していることを特徴とする、ターゲットプログラマブルユニット(1)を外部エミュレーションデバイス(4)によりエミュレートする方法。
JP2008509439A 2005-05-02 2006-05-02 プログラマブルユニットをエミュレートするための方法およびデバイス Withdrawn JP2008544340A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP05009621A EP1720100B1 (de) 2005-05-02 2005-05-02 Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
PCT/EP2006/061986 WO2006117377A1 (en) 2005-05-02 2006-05-02 Procedure and device for emulating a programmable unit

Publications (1)

Publication Number Publication Date
JP2008544340A true JP2008544340A (ja) 2008-12-04

Family

ID=35058138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008509439A Withdrawn JP2008544340A (ja) 2005-05-02 2006-05-02 プログラマブルユニットをエミュレートするための方法およびデバイス

Country Status (7)

Country Link
US (1) US20090106604A1 (ja)
EP (1) EP1720100B1 (ja)
JP (1) JP2008544340A (ja)
CN (1) CN101198936A (ja)
AT (1) ATE367607T1 (ja)
DE (1) DE502005001065D1 (ja)
WO (1) WO2006117377A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751031B2 (en) * 2004-02-06 2014-06-10 Zircore, Llc System and method for mass custom manufacturing of dental crowns and crown components
US7870307B2 (en) * 2006-01-30 2011-01-11 Sony Computer Entertainment Inc. DMA and graphics interface emulation
WO2007098805A1 (en) * 2006-02-28 2007-09-07 Mentor Graphics Corp. Monitoring physical parameters in an emulation environment
JP2009009325A (ja) * 2007-06-27 2009-01-15 Tokushu Denshi Kairo Kk Icエミュレーション装置およびicエミュレーション方法
US7983893B2 (en) * 2008-01-08 2011-07-19 Mentor Graphics Corporation Fault support in an emulation environment
US7930165B2 (en) 2008-02-07 2011-04-19 Accemic Gmbh & Co. Kg Procedure and device for emulating a programmable unit providing system integrity control
US8214195B2 (en) * 2008-03-21 2012-07-03 Mentor Graphics Corporation Testing in a hardware emulation environment
US20090248390A1 (en) * 2008-03-31 2009-10-01 Eric Durand Trace debugging in a hardware emulation environment
US7974725B2 (en) * 2009-01-06 2011-07-05 GM Global Technology Operations LLC Integrated testing system and method for validation of a manufacturing automation system
US9069918B2 (en) * 2009-06-12 2015-06-30 Cadence Design Systems, Inc. System and method implementing full-rate writes for simulation acceleration
CN102298112B (zh) * 2011-05-05 2016-06-01 中兴通讯股份有限公司 一种可编程逻辑器件的测试方法及系统
US9535817B2 (en) * 2011-06-10 2017-01-03 Microsoft Technology Licensing, Llc Application development environment for portable electronic devices
CN102323903B (zh) * 2011-08-19 2013-10-02 深圳市芯海科技有限公司 Soc芯片仿真系统及方法
JP2013181837A (ja) * 2012-03-01 2013-09-12 Canon Inc 撮像装置
DE102014219709A1 (de) * 2014-09-29 2016-03-31 Siemens Aktiengesellschaft Verfahren zur Kraftwerkssimulation für Test- und Schulungszwecke mittels einer verteilten Simulationshardware
US9823996B2 (en) * 2015-03-12 2017-11-21 Landis+Gyr Innovations, Inc. Debugging code for controlling intelligent devices using log data from executed object code
US9798649B1 (en) 2016-05-04 2017-10-24 Landis+Gyr Innovations, Inc. Debugging code controlling resource-constrained intelligent devices contemporaneously with executing object code
CN108107750B (zh) * 2017-11-29 2023-10-20 国网宁夏电力有限公司电力科学研究院 一种电力系统仿真的实时io数据处理方法及系统
TWI821414B (zh) * 2018-09-25 2023-11-11 美商新思科技股份有限公司 一種用於仿真系統之控制塊及其電路與製作方法
US11169895B2 (en) * 2020-01-27 2021-11-09 International Business Machines Corporation Emulation latch to capture state
CN114861425B (zh) * 2022-04-25 2023-02-28 南方电网科学研究院有限责任公司 电网仿真的数据通信时间计算方法、系统及中央处理器

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720778A (en) * 1985-01-31 1988-01-19 Hewlett Packard Company Software debugging analyzer
US6760866B2 (en) * 1987-06-02 2004-07-06 Texas Instruments Incorporated Process of operating a processor with domains and clocks
US20040193957A1 (en) * 1989-07-31 2004-09-30 Swoboda Gary L. Emulation devices, systems and methods utilizing state machines
JPH04229337A (ja) * 1990-12-27 1992-08-18 Hitachi Ltd エミュレータ
US5515530A (en) * 1993-12-22 1996-05-07 Intel Corporation Method and apparatus for asynchronous, bi-directional communication between first and second logic elements having a fixed priority arbitrator
US5819065A (en) * 1995-06-28 1998-10-06 Quickturn Design Systems, Inc. System and method for emulating memory
GB9805479D0 (en) * 1998-03-13 1998-05-13 Sgs Thomson Microelectronics Microcomputer
EP0992916A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
US6928403B2 (en) * 2000-03-02 2005-08-09 Texas Instruments Incorporated Automatic detection of connectivity between an emulator and a target device
EP1139220B1 (en) * 2000-03-02 2017-10-25 Texas Instruments Incorporated Obtaining and exporting on-chip data processor trace and timing information
US7171542B1 (en) * 2000-06-19 2007-01-30 Silicon Labs Cp, Inc. Reconfigurable interface for coupling functional input/output blocks to limited number of i/o pins
US6675334B2 (en) * 2001-05-31 2004-01-06 Texas Instruments Incorporated Apparatus and method for multi-cycle memory access mapped to JTAG finite state machine with external flag for hardware emulation
US7103008B2 (en) * 2001-07-02 2006-09-05 Conexant, Inc. Communications system using rings architecture
US6948155B2 (en) * 2002-11-22 2005-09-20 Texas Instruments Incorporated Little offset in multicycle event maintaining cycle accurate tracing of stop events
US20050268195A1 (en) * 2004-04-29 2005-12-01 Lund Morten W Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems

Also Published As

Publication number Publication date
EP1720100A1 (de) 2006-11-08
CN101198936A (zh) 2008-06-11
DE502005001065D1 (de) 2007-08-30
US20090106604A1 (en) 2009-04-23
WO2006117377A1 (en) 2006-11-09
ATE367607T1 (de) 2007-08-15
EP1720100B1 (de) 2007-07-18

Similar Documents

Publication Publication Date Title
JP2008544340A (ja) プログラマブルユニットをエミュレートするための方法およびデバイス
US6175914B1 (en) Processor including a combined parallel debug and trace port and a serial port
US5978902A (en) Debug interface including operating system access of a serial/parallel debug port
US6041406A (en) Parallel and serial debug port on a processor
US9158661B2 (en) Enhanced debugging for embedded devices
US6591369B1 (en) System and method for communicating with an integrated circuit
US6094729A (en) Debug interface including a compact trace record storage
US6189140B1 (en) Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic
US6779145B1 (en) System and method for communicating with an integrated circuit
US9384108B2 (en) Functional built-in self test for a chip
US7010722B2 (en) Embedded symmetric multiprocessor system debug
US20030056154A1 (en) System and method for communicating with an integrated circuit
US7581139B2 (en) Distinguishing between two classes of trace information
KR20190107183A (ko) 프로토콜 디버그를 위해 실패에 대해 트래픽을 실시간으로 캡처하는 기법
JPH02287635A (ja) マイクロコンピュータ,マイクロプロセッサおよびコア・プロセッサ集積回路用デバッグ周辺装置
US6665816B1 (en) Data shift register
US7913118B2 (en) In-circuit debugging system and related method
JP2008507025A (ja) 集積回路テスト用エミュレーション及びデバッグインターフェイス
US20060218384A1 (en) Emulation Pause and Reset Tracing of Multiple Sync Points Pointing to Different Addresses
Fidalgo et al. Real time fault injection using a modified debugging infrastructure
CN100533401C (zh) 测试具有异步微控制器的集成电路的仿真和调试接口
Fidalgo et al. A modified debugging infrastructure to assist real time fault injection campaigns
KR20070035570A (ko) 에뮬레이션 및 디버그 시스템, 집적 회로 목표 장치 및에뮬레이션 방법
WO2003034226A2 (en) Debugging of processors
GB2380827A (en) Debugging of processors using two separate event detectors

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090423

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100204