(57)【要約】複数の埋め込まれたメモリを有する集積回路においてデータトレースを実行するための技術が記載される。集積回路内のトレースモジュールは、複数のメモリのメモリアクセスのためのトレースデータのパケットを形成する。トレースモジュールは、複数のデータキャプチャ装置（メモリ毎に１つ）とトレースストリーム発生器を含む。各データキャプチャ装置は、レジスタ、比較器、アドレス圧縮器、データ圧縮器およびパケット化器を含む。レジスタは関連するメモリの従前のメモリアクセスのためのアドレスを記憶する。比較器は、現在のメモリアクセスのためのアドレスをレジスタに記憶されたアドレスと比較する。アドレス圧縮器とデータ圧縮器は、現在のメモリアクセスのために、それぞれアドレスとデータの圧縮を実行する。パケット化器は、現在のメモリアクセスのためのトレースデータのパケットを形成する。トレースストリーム発生器は、すべてのデータキャプチャ装置からのトレースデータパケットを含むストリームを発生する。
2007537547.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリと、
前記複数のメモリのメモリアクセスのためのトレースデータのパケットを形成するように機能的に作用するトレースモジュールであって、各トレースデータパケットは、アドレスとデータおよび前記特定のメモリのためのメモリ識別子を含むトレースモジュールと、
を備えた集積回路。
【請求項２】
前記トレースモジュールは、前記複数のメモリの各々に対して１つのデータキャプチャ装置の割合で複数のデータキャプチャ装置を含み、各データキャプチャ装置は、前記データキャプチャ装置に関連する前記メモリのメモリアクセスのためのトレースデータパケットを形成するように機能的に作用する、請求項１の集積回路。
【請求項３】
前記トレースモジュールはさらに、前記複数のデータキャプチャ装置からのトレースデータパケットを含むトレースデータストリームを発生するように機能的に作用するトレースストリーム発生器を含む、請求項２の集積回路。
【請求項４】
各データキャプチャ装置は、
前記関連メモリの従前のメモリアクセスのためのアドレスを記憶するように機能的に作用するレジスタと、
前記関連するメモリの現在のメモリアクセスのためのアドレスを前記レジスタ内に記憶されたアドレスと比較するように機能的に作用する比較器と、
を含む、請求項２の集積回路。
【請求項５】
各データキャプチャ装置はさらに前記比較器の出力に基づいて前記関連するメモリの前記現在のメモリアクセスのための圧縮されたアドレスを発生するように機能的に作用するアドレス圧縮器を含み、前記現在のメモリアクセスのための前記トレースデータパケットは前記圧縮されたアドレスを含む、請求項４の集積回路。
【請求項６】
各データキャプチャユニットは、前記関連するメモリの前記現在のメモリアクセスのためのアドレスを、前記現在のメモリアクセスのための前記トレースデータパケットから削除するように機能的に作用する、請求項４の集積回路。
【請求項７】
各データキャプチャ装置は、前記関連するメモリの現在のメモリアクセスのためのデータを圧縮するように機能的に作用するデータ圧縮器を含み、前記現在のメモリアクセスのための前記トレースデータパケットは前記圧縮されたデータを含む、請求項２の集積回路。
【請求項８】
前記データ圧縮器は、前記現在のメモリアクセスのための前記データ内のリーディングゼロまたはリーディングサインビットを除去するように機能的に作用する、請求項７の集積回路。
【請求項９】
各データキャプチャ装置は、前記関連するメモリの現在のメモリアクセスのためのトレースデータパケットを形成するように機能的に作用するパケット化器を含み、前記トレースデータパケットは、前記関連するメモリの現在のメモリアクセスのための前記アドレスとデータおよび前記関連するメモリのメモリ識別子を含む、請求項２の集積回路。
【請求項１０】
各トレースデータパケットは、メモリ識別子のためのフィールドを含む、請求項１の集積回路。
【請求項１１】
各トレースデータパケットは、可変サイズを有するアドレスフィールドを含む、請求項１の集積回路。
【請求項１２】
各トレースデータパケットは、前記アドレスフィールドのサイズを示す少なくとも１つのフィールドを含む、請求項１１の集積回路。
【請求項１３】
各トレースデータパケットは、可変サイズを有するデータフィールドを含む、請求項１の集積回路。
【請求項１４】
少なくとも３つの独立してアクセス可能なメモリを備えた、請求項１の集積回路。
【請求項１５】
前記複数のメモリに動作可能なように接続されたデジタルシグナルプロセッサー（ＤＳＰ）をさらに備えた、請求項１の集積回路。
【請求項１６】
前記複数のメモリは前記ＤＳＰのためのデータを記憶するように機能的に作用する、請求項１５の集積回路。
【請求項１７】
前記複数のメモリは１つの命令を介して同時にアクセス可能である、請求項１の集積回路。
【請求項１８】
各メモリが独立してアクセス可能な複数のメモリと、
前記複数のメモリのメモリアドレスのためのトレースデータのパケットを形成する手段であって、各トレースデータパケットは、特定のメモリのメモリアクセスのためのアドレスとデータおよび前記特定のメモリのためのメモリ識別子を含む、手段と、
を備えた集積回路。
【請求項１９】
前記トレースデータのパケットを形成する手段は、各メモリのメモリアクセスのためのアドレスを独立して圧縮する手段を含む、請求項１８の集積回路。
【請求項２０】
複数の独立してアクセス可能なメモリを有する集積回路のためのデータトレースを実行するための方法において、
前記集積回路内の第１のメモリのメモリアクセスのためのトレースデータの第１のパケットを形成することであって、前記第１のトレースデータパケットは、前記第１のメモリのメモリアクセスのための第１のアドレスとデータおよび前記第１のメモリのための第１のメモリ識別子を含むことと、
前記集積回路内の第２のメモリのメモリアクセスのためのトレースデータの第２のパケットを形成することであって、前記第２のトレースデータパケットは、前記第２のメモリのメモリアクセスのための第２のアドレスとデータおよび前記第２のメモリのための第２のメモリ識別子を含むことと、
を備えた方法。
【請求項２１】
前記トレースデータの第１のパケットを形成することは、
前記第１のメモリの従前のメモリアクセスのためのアドレスを記憶することと、
前記第１のアドレスを前記記憶されたアドレスと比較することと、
を備えた、請求項２０の方法。
【請求項２２】
前記トレースデータの第１のパケットを形成することは、前記比較からの出力に基づいて前記第１のメモリの前記メモリアクセスのための圧縮されたアドレスを発生することを含み、前記第１のトレースデータパケットは、前記圧縮されたアドレスを含む、請求項２１の方法。
【請求項２３】
前記トレースデータの第１のパケットを形成することは、前記第１のメモリの前記メモリアクセスのためのデータを圧縮することを含み、前記第１のトレースデータパケットは、前記第１のメモリのための前記圧縮されたデータを含む、請求項２０の方法。
【請求項２４】
前記第１および第２のトレースデータパケットを含むトレースデータストリームを発生することをさらに備えた、請求項２０の方法。
【請求項２５】
各メモリが独立してアクセス可能な複数のメモリと、
各メモリに対して１つのレジスタが設けられた複数のレジスタであって、各レジスタは、前記レジスタに関連するメモリの従前のメモリアクセスのためのアドレスを記憶するように機能的に作用する、複数のレジスタと、
選択されたメモリの現在のメモリアクセスのためのアドレスを前記選択されたメモリの前記レジスタ内に記憶された前記アドレスと比較する比較器であって、前記選択されたメモリは前記複数のメモリの１つである、比較器と、
前記比較器からの比較結果に基づいて前記選択されたメモリの前記現在のメモリアクセスのための圧縮されたアドレスを発生するように機能的に作用するアドレス圧縮器と、
を備えた集積回路。
【請求項２６】
前記選択されたメモリの前記現在のメモリアクセスのためのトレースデータパケットを形成するように機能的に作用するパケット化器であって、前記データパケットは、前記選択されたメモリの前記現在のメモリアクセスのための前記圧縮されたアドレスとデータを含む、パケット化器をさらに備えた、請求項２５の集積回路。
【請求項２７】
前記選択されたメモリの前記現在のメモリアクセスのためのデータを圧縮するように機能的に作用するデータ圧縮器をさらに備え、前記選択されたメモリの前記現在のメモリアクセスのための前記トレースデータパケットは、前記圧縮されたデータを含む、請求項２６の集積回路。
【請求項２８】
前記複数のメモリに動作可能なように接続されたデジタルシグナルプロセッサー（ＤＳＰ）をさらに備え、前記複数のメモリは、前記ＤＳＰのためのデータを記憶するように動作可能である、請求項２５の集積回路。
【請求項２９】
全アドレスはＦのアドレスビットを含み、前記圧縮されたアドレスは、Ｓの可能な表示の１つを用いて表され、ＳはＦ未満であり、各表示は、異なる数のアドレスビットに関連している、請求項２５の集積回路。
【請求項３０】
各メモリが独立してアクセス可能な複数のメモリと、
各メモリに対して１つのデータキャプチャ装置の割合で設けられた複数のデータキャプチャ装置であって、各データキャプチャ装置は、
前記データキャプチャ装置に関連する前記メモリの従前のメモリアクセスのためのアドレスを記憶するように機能的に作用するレジスタと、
前記関連するメモリの現在のメモリアクセスのためのアドレスを前記レジスタ内に記憶された前記アドレスと比較するように機能的に作用する比較器と、
前記比較器からの比較結果に基づいて前記現在のメモリアクセスのための圧縮されたアドレスを発生するように機能的に作用するアドレス圧縮器と、
を含む複数のデータキャプチャ装置と、
を備えた集積回路。
【請求項３１】
各メモリが独立してアクセス可能な複数のメモリと、
前記複数のメモリの各々の従前のメモリアクセスのためのアドレスを記憶する手段と、
前記選択されたメモリの現在のメモリアクセスのためのアドレスを前記選択されたメモリのための前記記憶されたアドレスと比較する手段であって、前記選択されたメモリは前記複数のメモリの１つである、手段と、
比較結果に基づいて前記選択されたメモリの前記現在のメモリアクセスのための圧縮されたアドレスを発生する手段と、
を備えた集積回路。
【請求項３２】
前記選択されたメモリの前記現在のメモリアクセスのためのトレースデータパケットを形成する手段であって、前記トレースデータパケットは、前記選択されたメモリの前記現在のメモリアクセスのための前記圧縮されたアドレスおよびデータを含む、手段をさらに備えた、請求項３１の集積回路。
【請求項３３】
複数の独立してアクセス可能なメモリを有した集積回路のためのデータトレースを実行する方法において、
前記集積回路内の前記複数のメモリの各々の従前のメモリアクセスのためのアドレスを記憶することと、
選択されたメモリの現在のメモリアクセスのためのアドレスを、前記選択されたメモリのための前記記憶されたアドレスと比較することであって、前記選択されたメモリは、前記複数のメモリの１つであることと、
比較結果に基づいて前記選択されたメモリの前記現在のメモリアクセスのための圧縮されたアドレスを発生することと、
を備えた方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一般に集積回路に関し、特に複数のメモリを有した集積回路を試験し、デバッグするためのデータトレースおよびアドレストレースを圧縮するための技術に関する。
【背景技術】
【０００２】
集積回路（ＩＣ）製造技術における継続的改善は、ますます複雑化された集積回路をさまざまなアプリケーションに対して製造可能にした。例えば、システムオンチップ（ＳＯＣ）装置は、マイクロプロセッサー、メモリ、および他の処理装置を含んでいてもよい。これらはすべて単一の集積回路上に埋め込まれている。マイクロプロセッサーは種々の機能を実行してもよくおよび／または処理装置を制御する。処理装置は特定の計算タスクを実行するように設計されてもよい。メモリは、マイクロプロセッサーと処理装置のためのコードとデータを記憶してもよい。これらのすべての回路ブロックを単一の集積回路上に集積することはコストを低減し、信頼性を改善する。
【０００３】
複雑な集積回路を開発する上での重要な観点は、集積回路内の様々な回路ブロックを試験し、デバッグすることである。集積回路をデバッグするために一般に使用されている技術はリアルタイムトレースである。これはプログラム／命令トレースとデータトレースを含む。プログラムとレースは、集積回路内のプロセッサーにより実行されるコードのラインの捕捉（キャプチャ）を指し、データトレースは、プロセッサーによりアクセスされるデータの捕捉を指す。リアルタイムトレースは、実行時間速度で集積回路内の命令およびデータアクセスを捕捉し見せる能力をユーザー／開発者に与える。これは、ユーザー／開発者が、ハードウエア内のバグおよび／または、例えばハードウエアとコード間の予測できない相互作用がある状況においてのみ生じるあいまいなバグのようなコードを見つけ出すのに役立つ。
【０００４】
リアルタイムトレース能力は、通常、集積回路内に埋め込まれたトレースモジュールとトレースポートにより与えられる。トレースモジュールは典型的に、ユーザー／開発者がどの命令およびデータを捕捉し報告させるかを可能にする設定可能なフィルターとトリガーロジックを含む。捕捉された情報はしばしば圧縮されトレースポートを介してチップ外部に置かれた解析ツールに供給される。通常、トレースモジュールは、集積回路内の単一メモリまたは統合されたデータメモリのためのデータトレースしかサポートしない。
【発明の概要】
【０００５】
複数の埋め込まれたメモリを有した集積回路においてデータトレースを実行するための技術がここに記載される。これらの技術は、各メモリに対して別個にデータトレースを実行する。従って、トレースにより捕捉されたトレースデータに対してより高度な圧縮を達成することができる。一般に、トレースデータは、メモリアドレスおよびデータ、プログラムカウンター値、時間基準、および集積回路を試験しデバッグするのに有用かもしれない任意の他の情報を含んでいてもよい。各メモリのためのトレースデータは、そのメモリに割り当てられたメモリ識別子に基づいて適切に識別される。
【０００６】
一実施形態は、集積回路に複数のメモリとトレースモジュールを与える。各メモリは他のメモリに対して独立にアクセス可能であり、複数のメモリは同時にアクセスしてもよい。トレースモジュールは、各メモリアクセスに対して１つのトレースデータパケットの割合で、複数のメモリのメモリアクセスのためのトレースデータのパケットを形成する。各トレースデータパケットはアドレスおよび／または特定のメモリのメモリアクセスのためのデータおよびそのメモリのためのメモリ識別子を含む。
【０００７】
一実施形態において、トレースモジュールは、複数のデータキャプチャ装置、トレースストリーム発生器およびバッファを含む。各メモリに対して１つのデータキャプチャ装置が設けられる。各データキャプチャ装置は、アドレスレジスタ、アドレス比較器、アドレス圧縮器、データ圧縮器、およびパケット化器を含む。アドレスレジスタは関連するメモリの従前のメモリアクセスのためのアドレスを記憶する。アドレス比較器は、関連するメモリの現在のメモリアクセスの従前のメモリアクセスのためのアドレスを、レジスタに記憶されたアドレスと比較する。アドレス圧縮器は、アドレス比較器からの出力に基づいて、現在のメモリアクセスのためのアドレス圧縮を実行し、現在のメモリアクセスのための圧縮されたアドレスを発生する。データ圧縮器は、現在のメモリアクセスのためのデータ圧縮を実行する。パケット化器は、関連するメモリの現在のメモリアクセスのためのトレースデータパケットを実行する。トレースストリーム発生器は、複数のデータキャプチャ装置からトレースデータパケットを受信し、これらのパケットを含むトレースデータストリームを発生する。
【０００８】
各トレースデータパケットは、（１）メモリ識別子のためのフィールド、（２）可変サイズを有するアドレスフィールド、（３）アドレスフィールドサイズを示す少なくとも１つのフィールド、（４）可変サイズを有するデータフィールド、（５）データフィールドサイズを示すフィールド、および（６）恐らく他のフィールドを含んでいてもよい。種々のパケットフォーマットが以下に記載される。各トレースデータパケットは、（１）非圧縮されたアドレス、圧縮されたアドレス、またはヌルアドレス、（２）非圧縮されたデータ、圧縮されたデータ、またはヌルデータ、および（３）メモリ識別子のような他の情報を含んでいてもよい。
【０００９】
集積回路はさらに１つ以上のデジタルシグナルプロセッサー（ＤＳＰｓ）、マイクロプロセッサー、コントローラー等を含んでいてもよい。ＤＳＰ（複数の場合もある）のためのデータを記憶するために複数のメモリが使用されてもよい。
【００１０】
この発明の種々の観点および実施形態は、以下にさらに詳細に記載される。
【発明を実施するための最良の形態】
【００１１】
この発明の特徴と性質は、類似の参照文字が全体にわたって対応して識別する図面と共に理解するとき以下に記載された詳細な説明からより明白になるであろう。
【００１２】
「例示」という用語はここでは、例、インスタンス、または例証として機能することを意味するために使用される。「例示」としてここに記載される任意の実施形態または設計は必ずしも他の実施形態または設計に対して好適であるまたは利点があると解釈されない。
【００１３】
図１は、複数の埋め込まれたメモリを有し、試験とデバッグのためのトレース能力を有する集積回路１００のブロック図を示す。集積回路１００は、マイクロプロセッサー１１０、デジタルシグナルプロセッサー（ＤＳＰ）１２０、およびダイレクトメモリアクセス（ＤＭＡ）コントローラー１３０のような複数の埋め込まれたプロセッサーとコントローラーを含む。マイクロプロセッサー１１０は、集積回路１００のための汎用処理を実行し、縮小命令セットコンピューター（ＲＩＳＣ）またはあるその他のタイプのマイクロプロセッサーを用いて実施してもよい。ＤＳＰ１２０は、数学的な計算を非常に迅速に実行するように具体的に設計された特殊化したプロセッサーである。ＤＳＰ１２０は、乗累算装置（ＭＡＣＣｓ）、算術論理演算ユニット（ＡＬＵｓ）等のような種々の処理装置を含む。ＤＭＡコントローラー１３０は、ＤＳＰ１２０と集積回路１００の外部の他の処理装置との間のリアルタイム高レートデータ交換を処理する。簡単のために、マイクロプロセッサー１１０、ＤＳＰ１２０と、ＤＭＡコントローラー１３０との間の相互接続は図１には示されない。一般に集積回路１００は任意の数のおよび任意のタイプのプロセッサーおよびコントローラーを含んでいてもよい。
【００１４】
マイクロプロセッサー１１０は、「ハーバード」（Harvard）アーキテクチャーを実施する。このアーキテクチャーは、それぞれ命令とデータを記憶するために別個の命令メモリ１１４とデータメモリ１１６を使用する。メモリコントローラー１１２は、マイクロプロセッサー１１０にメモリ１１４および１１６からの必要な命令とデータを与える。ＤＳＰ１２０は、「スーパーハーバード」アーキテクチャーを実施する。このアーキテクチャーは命令を記憶するために別個の命令メモリ１２４を使用し、データを記憶するために複数のデータメモリ１２６ａ乃至１２６ｃを使用する。メモリ１２６ａ、１２６ｂ、および１２６ｃは、また、それぞれデータメモリＡ、Ｂ、Ｃとして示される。メモリコントローラー１２２はＤＳＰ１２０にメモリ１２４および１２６から必要な命令およびデータを与える。ＤＭＡコントローラー１３０はまたデータ交換のためにメモリコントローラー１２２とインターフェースする。一般に、集積回路１００内のプロセッサーおよびコントローラーは、任意のタイプのメモリアーキテクチャーを実施してもよい。さらに、集積回路１００は、任意の数のメモリを含んでいてもよい。
【００１５】
集積回路１００内の各メモリは、命令／データを記憶／検索するために個々にアクセスされてもよい独立したメモリである。各メモリは関連するメモリコントローラーにより管理される。また、各メモリは、メモリバンク、メモリキャッシュ、またはあるその他の用語で呼ばれる。一般的に、集積回路は、データを記憶するための単一メモリまたは統合メモリを含む。単一データメモリは、典型的に一度に特定数（例えば、４つ）のデータのバイトを得るためにアクセスすることができる。複数のデータメモリは、例えば、並列演算、より高いスループット、およびより大きな記憶柔軟性のような種々の利点を得るために使用されてもよい。例えば、異なる種類のデータは、異なるメモリに記憶してもよいし、ＤＳＰは、別個のメモリを利用して異なる種類のデータの並列負荷を達成することができる。これらの複数のデータメモリは、別個のアドレス発生装置、別個のメモリバス、別個のメモリの同時データアクセスを実行することができる命令、独立したデータ幅等を使用してもよい点において複数のデータメモリは統合メモリとは異なる。
【００１６】
集積回路１００はさらにトレースモジュール１４０、トレースポート１４２、およびＪＴＡＧ（Joint Test Action Group）ポート１３８を含み、これらは集合的に集積回路のための試験とデバッグ能力を与える。以下に記載するように、トレースモジュール１４０は、マイクロプロセッサー１１０、ＤＳＰ１２０、およびＤＭＡコントローラー１３０の内部バスを監視するために使用される種々の回路ブロックを含む。トレースモジュール１４０は、集積回路１００の試験とデバッグを容易にするためにプロセッサー１１０と１２０およびコントローラー１３０の状態に関する情報を捕捉することができる。さらに、トレースモジュール１４０は、「おしつけがましくない」方法で、すなわちプロセッサーとコントローラーの性能にいかなる負荷も与えずに情報を捕捉することができるので、これらの装置は全速で動作することができる。トレースモジュール１４０は、トレースポート１４２を介してトレースデータストリームとして捕捉した情報を供給する。ＪＴＡＧポート１３８は、集積回路内にトレースモジュールおよび恐らくプロセッサーとコントローラーを構成するために使用される。簡単のためにＪＴＡＧポート１３８と、プロセッサーとコントローラーとの間の相互接続は図１には示されていない。
【００１７】
解析ツール１９０は、インターフェースモジュール１８０を介して集積回路１００とインターフェースする。解析ツール１９０は、コンピューターシステム、ロジックアナライザー等であってもよく、ハードウエア、ソフトウエアまたはそれらの組み合わせで実施してもよい。集積回路１００を試験またはデバッグしているユーザー／開発者は、解析ツール１９０、インターフェースモジュール１８０、およびＪＴＡＧポート１３８を介してトレースモジュール１４０を構成することができる。ユーザー／開発者は、トレースポート１４２およびインターフェースモジュール１８０を介して、トレースモジュール１４０により捕捉された情報を含むトレースデータストリームを受信する。ユーザー／開発者は、解析ツール１９０を用いて捕捉された情報を見ることができそして解析することができる。
【００１８】
図２は、トレースモジュール１４０の一実施形態のブロック図を示す。トレースモジュール１４０は、それぞれマイクロプロセッサー１１０、ＤＳＰ１２０、およびＤＭＡコントローラー１３０のための３つのトレースデータキャプチャ装置２１０ａ、２１０ｂ、２１０ｃ、トレースストリーム発生器２５０およびバッファ２６０を含む。以下に記載するように、各トレースデータキャプチャ装置２１０は、それぞれのプロセッサーまたはコントローラーのためのトレースデータを捕捉し、トレースデータのパケットを供給する。
【００１９】
トレースストリーム発生器２５０は、すべてのトレースデータキャプチャ装置２１０からのトレースデータパケットを受信し、これらのパケットを含むトレースデータストリームを発生する。従って、この単一トレースデータストリームは、集積回路１００内のすべてのメモリの命令とメモリアクセスのためのトレースデータを保持する。バッファ２６０は、トレースストリーム発生器２５０からのトレースデータを記憶し、トリガーされると記憶されたデータを供給する。バッファ２６０は以下のトリガー機構に基づいてトレースデータで充填してもよい。
【００２０】
・一致後のトレース−バッファ２６０は、トリガーパケットが受信されるとトレースデータで一杯になる。
【００２１】
・一致前のトレース−バッファ２６０は、トリガーパケットが受信されるまでトレースデータで連続的に一杯になる
・中央におけるトレース−バッファ２６０は、トリガーパケットが受信されるまでトレースデータで一杯になり、トリガーパケットを受信した後、特定の数のトレースデータエントリで一杯になる。
【００２２】
一般に、トレースモジュールの設計は、例えば、集積回路内に埋め込まれたプロセッサーとコントローラーの数とタイプ、これらのプロセッサーとコントローラーに関連するメモリ、所望のデバッグ能力等のような種々の因子に依存してもよい。
【００２３】
図３Ａは、単一のメモリを有した一般的な集積回路のためのデータアクセス３１０の例示シーケンスを示す。各データアクセスは、メモリアドレスとそのアドレスにおける対応するデータに関連する。データトレースの場合、トレースモジュールは、各メモリアクセスのためのアドレスとデータの両方を受信し、関連のある情報を捕捉し、メモリアクセスのためのトレースデータパケットを発生する。トレースモジュールは典型的にトレースデータパケットに含ませる情報量を低減するためにアドレスおよび／またはデータに対して圧縮を実行する。
【００２４】
図３Ｂは、データトレースのためにしばしば使用されるアドレス圧縮技術を図解する。このアドレス圧縮技術は、連続したメモリアクセスがしばしばすぐそばのメモリロケーションに対して成されるという仮定に基づいている。この場合、各メモリアクセスのためのアドレスは、従前のメモリアクセスのためのアドレスと、ほんの少数の低位のまたはより重要でない有効ビットにおいて、異なっていてもよい。アドレスレジスタを用いて最後のメモリアクセスのためのアドレスを記憶する。現在のメモリアクセスのためのアドレスは、最後のメモリアクセスのための記憶されたアドレスと比較され、（全体の現在のアドレスの代わりに）記憶されたアドレスと異なる現在のアドレス内の低位ビットのみがトレースデータパケットに含まれる。
【００２５】
実施を簡略化するために、トレースデータパケットは、ある数のアドレスビット（例えば、以下に記載する例示とレースデータパケット設計の場合、５、１２、または１８アドレスビット）を保持するように設計してもよい。この場合、異なる低位のビットの数に基づいて最も少ない可能な数のアドレスビットがトレースデータパケットに含まれる。例えば、３つの低位のアドレスビットが異なるなら、上で示した例示設計の場合、トレースデータパケットは、５つの提示アドレスビットを含むだろう。実際には、圧縮されたアドレスは、異なる低位ビットの数に依存して５ビット、１２ビットまたは１８ビットに量子化される。最後のメモリアクセスのアドレスを記憶するために単一レジスタを使用することは、単一メモリを有した集積回路に対して適切なアドレス圧縮性能を与える。
【００２６】
図３Ｃは、複数のメモリを有した集積回路（例えば、３つのデータメモリ１２６ａ、１２６ｂ、１２６ｃを有した集積回路の場合）のためのデータアクセス３３０の例示シーケンスを示す。複数のメモリは、例えば、複数の算術および／または論理演算を含んでいてもよい単一ＤＳＰ命令に対してデータを検索または記憶するために同時にアクセスされてもよい。各メモリのためのデータアクセスは、メモリアドレスおよびそのアドレスにおける対応するデータに関連する。複数のメモリは独立してアクセスされてもよいので、これらのメモリのためのアドレスは、互いに近づいていなくてもよく、またはなんらかの方法で相関していなくてもよい。この場合、複数のメモリのアドレス圧縮のために単一メモリアドレスを記憶するために単一アドレスレジスタを用いることは、これらのメモリのためのアドレスが広範囲に異なるなら、粗末な圧縮性能を与えるであろう。一例として、メモリＡ、Ｂ、およびＣのための現在のアドレスは、それぞれ１００、５０００、１００００であってよい。１つのアドレスレジスタが利用可能なら、このレジスタは、最初に１００のメモリＡアドレスを記憶するであろう。このアドレスは、次に５０００のメモリＢアドレスの圧縮のために使用され、５０００のメモリＢアドレスは次に、１００００のメモリＣアドレスの圧縮のために使用され、１００００のメモリＣアドレスは、次のメモリアクセスのためのメモリＡアドレスの圧縮のために使用され、以下同様である。以上のように、複数のメモリに対して単一のアドレスレジスタを使用することは、アドレス圧縮性能が劣るかもしれない。
【００２７】
複数のメモリを有した集積回路の改善されたアドレス圧縮性能を得るために、複数のアドレスレジスタを使用してもよい。メモリ毎に１つのアドレスレジスタが使用され、各レジスタは、関連するメモリの最後のメモリアクセスのアドレスを記憶する。各メモリの現在のメモリアクセスのためのアドレスは、そのメモリのためのレジスタに記憶されたアドレスと比較される。上の例の場合、レジスタＡ、Ｂ、およびＣは、それぞれメモリＡ、Ｂ、Ｃの現在のメモリアクセスに対してそれぞれ１００、５０００、および１００００のアドレスを記憶するであろう。次のメモリアクセスの場合、メモリＡのためのアドレスは、レジスタＡに記憶されたアドレスと比較され、メモリＢのアドレスは、レジスタＢに記憶されたアドレスと比較され、メモリＣのためのアドレスは、レジスタＣに記憶されたアドレスと比較される。これらの複数のメモリの各々のための連続したメモリアクセスがすぐそばのメモリロケーションに成されるなら、これは単一メモリ集積回路に使用される基本仮定だが、複数のメモリを有した集積回路に対して、良好なアドレス圧縮性能を達成することができる。
【００２８】
図４は、ＤＳＰ１２０のためのトレースデータキャプチャ装置２１０ｂの一実施形態のブロック図を示す。装置２１０ｂは、それぞれデータメモリ１２６ａ、１２６ｂ、１２６ｃのための３つのデータキャプチャ装置４１０ａ、４１０ｂ、４１０ｃ、および命令メモリ１２４のための命令キャプチャ装置４１２を含む。各データキャプチャ装置４１０は、圧縮装置４２０、パケット化器４３０、およびフィルター４４０を含む。
【００２９】
データメモリ１２６ａのためのデータキャプチャ装置４１０ａ内において、圧縮装置４２０ａは、メモリ１２６ａの現在のメモリアクセスのためのアドレスと対応するデータ（これは、それぞれmemA_addrおよびmemA_dataとして示される）を受信する。現在のアドレス、memA_addrは、アドレスレジスタ４２２ａに記憶され、またアドレス比較器４２４ａに供給される。比較器４２４ａはまたデータメモリ１２６ａの従前のメモリアクセスのためのレジスタ４２２ａからの記憶されたアドレスを受信し、現在のアドレスを記憶されたアドレスと比較し、比較結果をアドレス圧縮器４２６ａに供給する。アドレス圧縮器４２６ａは、記憶されたアドレスと異なる現在のアドレスにおける低位アドレスの数および現在のメモリアクセスのためのトレースデータパケットに含まれるアドレスビットの最小数（Ｎ）を決定する。また、アドレス圧縮はバイパスされてもよい。アドレス圧縮器４２６ａは、パケット化器４３０ａに、現在のアドレスまたは圧縮されていない現在のアドレスにＮの低位のビットを含む圧縮されたアドレスを供給する。
【００３０】
データ圧縮器４２８ａは、現在のメモリアクセスのためのデータに対して圧縮を実行する。データ圧縮は様々な方法で行なわれてもよい。例えば、データ内のリーディングゼロは除去してもよい。他の例として、現在のメモリアクセスのためのデータは、アドレス比較の場合と同様に、従前のメモリアクセスのためのデータと比較してもよく、差のみが送られる。他の何らかの例は（１）データ内のすべてのゼロの除去、および（２）例えばユーザー選択を介してトレースされるデータの演繹的知識に依存して、データ幅を８ビット、１６ビットまたはその他の所定数のビットに制約することを含む。また、データ圧縮もバイパスされてよい。データ圧縮器４２８ａは圧縮されたまたは非圧縮されたデータをパケット化器４３０ａに供給する。
【００３１】
パケット化器４３０ａは、アドレス圧縮器４２６ａから圧縮されたまたは非圧縮されたデータを受信し、データ圧縮器４２８ａから圧縮されたまたは非圧縮されたデータを受信する。以下に記載するように、パケット化器４３０ａは、メモリ１２６ａの現在のメモリアクセスのためのトレースデータパケットを形成する。フィルター４４０ａは、データトレースのためにユーザー制御されたフィルタリングを提供する。従って、チップ外部で送信されるトレースデータ量は最小にすることができる。例えば、トレースは、（１）アドレスの特定レンジ内のメモリアクセスに対してのみ、（２）ある特定の条件が合うなら、および／または（３）その他の基準に基づいて実行してもよい。フィルター４４０ａはメモリ１２６ａに対してフィルターされたトレースデータ（例えば、フィルタリング基準を満足するトレースデータパケット）を供給する。
【００３２】
図４は、メモリ１２６ａのためのデータキャプチャ装置４１０ａの特定の実施形態を示す。他の２つのデータキャプチャ装置４１０ｂおよび４１０Ｃは、それぞれメモリ１２６ｂおよび１２６ｃのメモリアクセスのためのアドレスおよびデータ圧縮、パケット化、およびフィルタリングを実行する。命令キャプチャ装置４１２は、データキャプチャ装置４１０と同じに実施してもよいし、異なって実施してもよい。
【００３３】
一般に、アドレスおよびデータ圧縮、パケット化、およびフィルタリングは、種々の方法で、および恐らく図４に示されるそれとは異なるオーダーで実行されてもよい。例えば、フィルタリングは圧縮に先立って行なわれてもよい。図４に示されるように、３つの異なるアドレスレジスタ４２２ａ、４２２ｂ、４２２ｃを用いてそれぞれデータメモリ１２６ａ、１２６ｂ、および１２６ｃの最新のメモリアクセスのためのアドレスを記憶する。これは、３つのデータメモリの独立したアドレス圧縮を可能にさせる。
【００３４】
図４は、データメモリ毎にトレースデータを捕捉するために別個のデータキャプチャ装置４１０が使用される。また、単一のデータキャプチャ装置は、例えば、時間分割多重化（ＴＤＭ）の方法ですべてのデータメモリのためにトレースデータを捕捉してもよい。この単一データキャプチャ装置は、（１）各メモリの従前のメモリアクセスのためのアドレスを記憶するために別個のレジスタを用いて、および（２）各メモリの現在のメモリアドレスのためのアドレスをそのメモリのための記憶されたアドレスと比較することにより、データメモリの各々に対して独立してアドレス圧縮を実行することができる。
【００３５】
図５Ａ乃至図５Ｄは、トレースデータパケットのための４つの例示フォーマットを示す。これらの例示フォーマットは、全アドレスが１８ビットを含む、（２）与えられたメモリアドレスのための全データまたは非圧縮されたデータが３２ビットを含む、および（３）３つのデータメモリが利用可能である特定の設計のためである。４つの可能なフォーマットの１つにおける１つのトレースデータパケットは、与えられたデータメモリの各メモリアクセスのために実行されてもよい。
【００３６】
図５Ａは全アドレスのためのパケットフォーマット５０２を示す。フォーマットは８バイトを含む。バイト０は、（１）トレースデータパケットを示すために「００１０」のバイナリ値を含む４ビットフィールドを保持し、（２）パケット内のデータフィールドのサイズを示す２ビットＤＳフィールドを保持し、（３）トレースデータパケットを示すために「１０」のバイナリ値を含む２ビットフィールドを保持する。この実施形態の場合、トレースデータパケットは、４ビットフィールドの場合「００１０」の値により示され、最も右側の２ビットフィールドの場合「１０」の値により示される。また、トレースデータパケットを示すために、他のビットパターンおよび／または他の手段を用いてもよい。一実施形態において、ＤＳフィールドは、それぞれ０バイト、１バイト、２バイトまたは４バイトのデータフィールドサイズのための「００」、「０１」、「１０」、「１１」のバイナリ値を含む。「００」、「０１」、「１０」のバイナリ値は、圧縮されたデータのためのＤＳフィールドのために使用されてもよく、「１１」のバイナリ値は、非圧縮されたデータのために使用されてもよい。バイト１は、（１）アドレスの他のバイトがパケットに含まれることを示すために「１」のバイナリ値を含む１ビットフィールドを保持し、（２）アドレス（すなわち、アドレスビット０乃至４）の５つの最低次ビットを含む５ビットのアドレスフィールドを保持し、および（３）パケットが関係する特定のデータメモリを示す２ビットＭＢフィールドを保持する。一実施形態において、ＭＢフィールドは、それぞれデータメモリＡ，Ｂ、Ｃのための「００」、「０１」、「１０」のバイナリ値を含む。従って、ＭＢフィールドはアクセスされる特定のデータメモリのためのメモリ識別子を保持する。
【００３７】
バイト２は、アドレスの他のバイトがパケットに含まれることを示すために「１」のバイナリ値を含む１ビットフィールドを保持し、（２）アドレスの７つの中位ビット（すなわち、ビット５乃至１１）を含む７ビットアドレスフィールドを保持する。バイト３は、（１）「００」のバイナリ値を含む２ビットフィールドを保持し、（２）アドレスの６つの最高次ビットを含む６ビットのアドレスフィールド（すなわち、アドレスビット１２乃至１７）を保持する。この例において、ＤＳ＝１１であり、バイト５乃至８は示されたアドレスにおいてデータのための４バイトデータフィールドを保持する。
【００３８】
図５Ｂは、１２ビット部分アドレスのためのパケットフォーマット５０４を示す。
【００３９】
フォーマット５０４は７バイトを含む。フォーマット５０４のためのバイト０および１は、図５Ａのフォーマット５０２のためのバイト０および１と同じである。バイト２は、（１）アドレスのバイトはこれ以上パケットに含まれないことを示す「０」のバイナリ値を保持し、（２）アドレスの７つの中位ビットを含む７ビットのアドレスフィールドを保持する。この例において、ＤＳ＝１１であり、バイト３乃至８は４バイトデータフィールドを保持する。
【００４０】
図５Ｃは５ビット部分アドレスのためのパケットフォーマット５０６を示す。フォーマット５０６は６バイトを含む。フォーマット５０６のためのバイト０は、図５Ａのフォーマット５０２のためのバイト０と同じである。バイト１は、（１）アドレスのバイトはこれ以上パケットに含まれないことを示す「０」のバイナリ値を含む１ビットフィールドを保持し、（２）アドレスの５つの最低次ビットを含む５ビットアドレスフィールドを保持し、（３）２ビットＭＢフィールドを保持する。この例において、ＤＳ＝１１であり、バイト２乃至５は４バイトデータフィールドを保持する。
【００４１】
図５Ｄはアドレス無しの場合のパケットフォーマット５０８を示す。フォーマット５０８も６バイトを含む。フォーマット５０８のためのバイト０は図５Ａのフォーマット５０２のためのバイト０と同じである。バイト１は、（１）アドレスのバイトがこれ以上パケットに含まれないことを示すために「０」のバイナリ値を含む１ビットフィールドを保持し、（２）アドレスがトレースデータパケットに含まれないことを示すために「０００００」のバイナリ値を含む５ビットアドレスフィールドを保持し、（３）２ビットＭＢフィールドを保持する。この例において、ＤＳ＝１１であり、バイト２乃至５は４バイトデータフィールドを保持する。
【００４２】
パケットフォーマット５０２、５０４、５０６の場合、アドレスバイトの最上位（最も左の）ビットは、他のアドレスバイトがパケットに含まれることを示す。また、他の機構を使用してトレースデータパケット内のアドレスのサイズを示してもよく、これはこの発明の範囲内である。
【００４３】
図５Ａ乃至５Ｄはトレースデータパケットのための４つの例示フォーマットを示す。図５Ａ乃至５Ｄに記載された一般概念は、任意の数のメモリに対して、他のサイズのアドレスとデータを有した他の設計をカバーするように拡張されてもよい、等である。一般に、任意の数のパケットフォーマットが定義されてもよい。各パケットフォーマットは、任意の数の任意のタイプのフィールドを含んでいてもよく、各フィールドは、任意の数のビットを含んでいてもよい。また、フィールドは、図５Ａ乃至５Ｄに示される構成とは異なって構成されていてもよい。トレースデータパケットは、パケットが関係する特定のメモリまたはメモリバンクを示すための機構を含む。図５Ａ乃至５Ｄに示すように、指定されたデータフィールドがデータメモリを示すために使用されるなら、このフィールドのサイズは、集積回路内のデータメモリの数に基づいて決定されてもよい。また、トレースデータパケットは、パケット内に含まれるアドレスのサイズを示すための機構（例えば、各アドレスバイト内の指定されたビット）を含む。
【００４４】
図１および２を参照すると、トレースストリーム発生器２５０は、すべてのトレースデータキャプチャ装置２１０からのトレースデータパケットを含むトレースデータストリームを発生する。各トレースデータパケットは、パケットが関係する特定のメモリのためのメモリ識別子を有したフィールドを含む。解析ツール１９０内のトレース解凍器は、トレースデータストリーム内のトレースデータパケットを、これらのパケット内に含まれるメモリ識別子に基づいて、メモリ毎に１つのサブストリームの割合で複数のサブストリームに逆解凍することができる。
【００４５】
図６は、複数の（例えば、３つの）独立してアクセス可能なメモリを有した集積回路のためのデータトレースを実行するためのプロセス６００のフロー図を示す。最初に、アクセスされるメモリが識別され、メモリＸとし示される。この場合Ｘは、図１および４に示される例示設計のためのＡ、Ｂ、またはＣであってよい（ブロック６１０）。
【００４６】
メモリＸのデータトレースの場合、メモリＸの従前のメモリアクセスのための記憶されたアドレスは、メモリＸのために使用されるアドレスレジスタＸから検索される（ブロック６２０）。メモリＸの現在のメモリアクセスのための現在のアドレスはアドレスレジスタＸに同時に記憶される（ブロック６２２）。現在のアドレスは、例えば２つのアドレスに対してイクスクルーシブＯＲ（ＸＯＲ）演算を実行することにより、メモリＸのための記憶されたアドレスと比較される（ブロック６２４）。比較の結果に基づいて、アドレス圧縮が現在のアドレスに対して実行され、メモリＸのメモリアクセスのための圧縮されたアドレスを得てもよい（ブロック６２６）。また、データ圧縮は、メモリＸの現在のメモリアクセスのために実行されてもよい（ブロック６２８）。トレースデータパケットは、メモリＸの現在のメモリアクセスのために実行される（ブロック６３０）。このトレースデータパケットは、（１）メモリＸのためのメモリ識別子、（２）現在のメモリアクセスのための全アドレス、圧縮されたアドレスまたはヌルアドレス、（３）現在のメモリアクセスのための圧縮されたデータ、非圧縮されたデータまたはヌルデータを含む。
【００４７】
ブロック６２０乃至６３０の処理は、例えばそのメモリに割り当てられたデータキャプチャ装置によりメモリ毎に別個に実行されてもよい。トレースデータストリームは、すべてのメモリのメモリアクセスのためのトレースデータパケットで発生される（ブロック６３２）トレースデータストリームはトリガーされるとバッファされチップ外部に供給される（ブロック６３４）。
【００４８】
ここに記載されるデータトレース技術は、複数のメモリを有する集積回路のためのトレースデータの効率的な圧縮を可能にする。図１に示されるように、集積回路は、１つ以上の埋め込まれたＤＳＰｓを有していてもよい。ＤＳＰは典型的により大きなデータアクセス能力のために複数のデータメモリを利用し、可変長命令を使用し、しばしば（例えばデジタルフィルターに対し）堅固なループを実行する。ここに記載されたデータトレース技術は、有利に使用して１つ以上の埋め込まれたＤＳＰｓを有した集積回路をデバッグしてもよい。
【００４９】
一般に、ここに記載されたデータトレース技術は、複数のメモリを有する任意の集積回路のために使用されてもよい。そのような集積回路は、１つ以上の埋め込まれたマイクロプロセッサー、１つ以上のＤＳＰｓ、および／または（例えば、図１に示すように）他のコントローラーを含んでいてもよい。複数のメモリを有した集積回路は、一般に無線通信装置（例えば、携帯電話）、パーソナルデジタルアシスタンス（ＰＤＡｓ）、および他の電子装置に使用される。また、ここに記載されたデータトレース技術は、無線通信、コンピューティング、ネットワーク等のような種々のエンドアプリケーションのために使用されてもよい。
【００５０】
ここに記載されたデータトレース技術は、ハードウエア、ソフトウエア、またはそれらの組み合わせで実施してもよい。ハードウエアで実施する場合、データトレースをサポートするために使用される装置（例えば、トレースモジュール１４０、トレースポート１４２、およびＪＴＡＧポート１３８）は、集積回路、特定用途向け集積回路（ＡＳＩＣ）、デジタルシグナル処理装置（ＤＳＰＤ）、プログラマブルロジック装置）（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等内に埋め込まれたハードウエアを用いて実施してもよい。また、データトレースは、ここに記載された機能を実行するコードに基づいてまたはコードと共に実行されてもよい。ファームウエアコードはメモリ（例えば、図１のメモリ１２４）に記憶されプロセッサーまたは処理装置（例えばトレースモジュール）により実行されてもよい。
【００５１】
開示された実施形態の上述の記載は、当業者がこの発明を製作または使用することを可能にするために提供される。これらの実施形態に対する種々の変更は当業者に容易に明白であり、ここに定義される包括的原理は、この発明の精神または範囲から逸脱することなく他の実施形態に適用してもよい。従って、この発明は、ここに示される実施形態に限定することを意図したものではなく、ここに開示された原理と新規な特徴に一致する最も広い範囲が許容されるべきである。
【図面の簡単な説明】
【００５２】
【図１】図１は複数の埋め込まれたメモリを有するとともに試験およびデバッグのためのトレース能力を有する集積回路を示す。
【図２】図２はトレースモジュールのブロック図を示す。
【図３Ａ】図３Ａは単一のメモリを有する一般的な集積回路のためのデータアクセスを示す。
【図３Ｂ】図３Ｂはデータトレースのためのアドレス圧縮技術を図解する。
【図３Ｃ】図３Ｃは、複数のメモリを有した集積回路のためのデータアクセスを示す。
【図４】図４は、ＤＳＰのためのトレースデータキャプチャ装置のブロック図を示す。
【図５Ａ】図５Ａは例示トレースデータパケットを示す。
【図５Ｂ】図５Ｂは例示トレースデータパケットを示す。
【図５Ｃ】図５Ｃは例示トレースデータパケットを示す。
【図５Ｄ】図５Ｄは例示トレースデータパケットを示す。
【図６】図６は、複数（例えば３つ）の独立してアクセス可能なメモリを有する集積回路のためのデータトレースを実行するプロセスを示す。
【図１】
2007537547.tif 000003
【図２】
2007537547.tif 000004
【図３Ａ】
2007537547.tif 000005
【図３Ｂ】
2007537547.tif 000006
【図３Ｃ】
2007537547.tif 000007
【図４】
2007537547.tif 000008
【図５Ａ】
2007537547.tif 000009
【図５Ｂ】
2007537547.tif 000010
【図５Ｃ】
2007537547.tif 000011
【図５Ｄ】
2007537547.tif 000012
【図６】
2007537547.tif 000013
【国際調査報告】
2007537547.tif 000014
2007537547.tif 000015