(57)【特許請求の範囲】
【請求項１】
集積回路の外部に設けられたエミュレーションコントローラに、前記集積回路の内部データ処理活動を駆動する、前記集積回路の内部クロックを示すタイミング情報を提供する方法であって、
前記内部クロックのサイクルを監視するステップと、
各内部クロックに対し内部データ処理活動のオペレーションを監視するステップと、
前記内部クロックの各サイクルに応答して、そのサイクルの間に命令が実行される場合に第１のデジタル状態を有し、そのサイクルの間に何ら命令が実行されない場合に前記第１のデジタル状態とは反対の第２のデジタル状態を有する、対応する単一のデジタルデータビットを生成するステップと、
各々が第１の所定の数のデジタルデータビットを有する、複数のパケットを含むタイミングトレースパケットストリームを形成するステップであって、前記タイミングトレースパケットストリームが、
タイミングパケットを識別する特定のオペレーションコードと、関連するクロックサイクルが発生する時間的順序に対応する所定の順序で前記内部クロックの複数のサイクルに対し前記単一のデジタルデータビットを含む、前記第１の所定の数のデジタルデータビットよりも少ない第２の所定の数のビットと、を有する、タイミングパケットと、
タイミング同期ポイントパケットを識別する特定のオペレーションコードと、同期ＩＤテーブルから供給される同期ＩＤを含む第３の所定の数のビットと、を有する、タイミング同期ポイントパケットと、
を含む、前記形成するステップと、
プログラムカウンタのオペレーションを監視するステップと、
各々が第１の所定の数のデジタルデータビットを有する、複数のパケットを含むＰＣトレースパケットストリームを形成するステップであって、前記ＰＣトレースパケットストリームが、
ＰＣ同期ポイントパケットを識別する特定のオペレーションコードと、ＰＣ同期ポイントパケットタイプを識別するタイプコードと、を有する、ＰＣ同期ポイントパケットと、
特定のオペレーションコードと、同期ＩＤテーブルから供給されてタイミング同期ポイントパケットに含まれるものと同じ同期ＩＤと、を有する、ＰＣ同期ＩＤパケットと、
特定のオペレーションコードを有し、プログラムカウンタの状態に対応するデータを含む、ＰＣトレースデータパケットと、
を含む、前記形成するステップと、
前記タイミングトレースパケットストリームと前記ＰＣトレースパケットストリームとを前記集積回路から前記集積回路の端子を介して前記エミュレーションコントローラに複合パケットストリームとして組み合わせてエクスポートするステップと、
を含む、方法。
【請求項２】
請求項１に記載の方法であって、前記ＰＣ同期ＩＤパケットの特定のオペレーションコードが前記ＰＣトレースデータパケットの特定のオペレーションコードと同じである、方法。
【請求項３】
請求項２に記載の方法であって、前記複合パケットストリームが他のトレースパケットストリームを更に含む、方法。
【請求項４】
集積回路の外部に位置するエミュレーションコントローラに、前記集積回路の内部データ処理活動を駆動する、前記集積回路の内部クロックを示すタイミング情報を提供する装置であって、
プログラムカウンタと、
ＩＤ番号テーブルと、
前記内部クロックを受信するための入力と、各内部クロックに対し内部データ処理活動を示す情報を受信するための入力と、トリガーを受信するための入力と、を有し、前記内部クロックの各サイクルに応答して、そのサイクルの間に命令が実行される場合に第１のデジタル状態を有し、そのサイクルの間に何ら命令が実行されない場合に前記第１のデジタル状態と反対の第２のデジタル状態を有する、対応する単一のデジタルデータビットを生成し、そして、各々が第１の所定の数のデジタルデータビットを有する複数のパケットを含むタイミングトレースパケットストリームを発生する、タイミングトレースパケット発生器であって、
前記タイミングトレースパケットストリームが、
タイミングパケットを識別する特定のオペレーションコードと、関連するクロックサイクルが発生する時間的順序に対応する所定の順序で前記内部クロックの複数のサイクルに対し前記単一のデジタルデータビットを含む、前記第１の所定の数のデジタルデータビットよりも少ない第２の所定の数のビットと、を有する、タイミングパケットと、
タイミング同期ポイントパケットを識別する特定のオペレーションコードと、ＩＤ番号テーブルから供給される同期ＩＤを含む第３の所定の数のビットと、を有する、タイミング同期ポイントパケットと、
を含む、前記タイミングトレースパケット発生器と、
プログラムカウンタの状態を示す情報を受信するための入力と、トリガーを受信するための入力と、を有し、プログラムカウンタとトリガーに応答して、各々が第１の所定の数のデジタルデータを有する、複数のパケットを含むＰＣトレースパケットストリームを発生するように作動する、ＰＣトレースパケット発生器であって、
前記ＰＣトレースパケットストリームが、
ＰＣ同期ポイントパケットを識別する特定のオペレーションコードと、ＰＣ同期ポイントパケットタイプを識別するタイプコードと、を有する、ＰＣ同期ポイントパケットと、
特定のオペレーションコードと、ＩＤ番号テーブルから供給されてダイミング同期ポイントパケットに含まれるものと同じ同期ＩＤと、を有する、ＰＣ同期ＩＤパケットと、
特定のオペレーションコードを有し、プログラムカウンタの状態に対応するデータを含む、ＰＣトレースデータパケットと、
を含む、前記ＰＣトレースパケット発生器と、
前記タイミングトレースパケットストリームと前記ＰＣトレースパケットストリームとを、前記集積回路の端子を介して前記エミュレーションコントローラに、複合パケットストリームとして組み合わせてエクスポートする、ストリーム組み合わせ器と、
を含む、前記装置。
【請求項５】
請求項４に記載の装置であって、前記ＰＣ同期ＩＤパケットのオペレーションコードが前記ＰＣトレースデータパケットのオペレーションコードと同じである、装置。
【請求項６】
請求項５に記載の装置であって、前記ストリーム組み合わせ器が、前記タイミングトレースパケットストリームと前記ＰＣトレースパケットストリームと他のトレースパケットストリームとを前記複合パケットストリームとして組み合わせてエクスポートする、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子データ処理、とくに、電子データ処理装置およびシステムのエミュレーション、シミュレーションおよびテスト機能に関する。
【背景技術】
【０００２】
最新のウェハーリソグラフィーおよび表面実装技術によって、電子回路設計によるシリコン基板およびプリント配線基板の双方の上に、より一層複雑な機能を集積するようになってきた。実装設計の高密度化と配線間隔の縮小によって、デバイスへの物理的なアクセスが損なわれるという残念な結果がもたらされている。設計時にテスト容易化を組み込むことが必要であり、これにより、テストとデバッグ中に、完成した製品の制御と計測の両方が可能となる。製品を出荷する前の最終検査の段階で、すべての製造上の不具合が検出されることが望ましい。このような基本的な要求を達成することは、自動テスト装置によって製品が検査できるように、論理設計段階でテスト性を考慮した設計をすることがなければ、複雑な設計にとっては、大変困難なものとなる。
【０００３】
機能性および製造上の不具合を検査することに加え、アプリケーソンソフトウェア開発では、システムあるいはサブシステムの設計フェーズと同様のレベルのシミュレーション、可観測性および可制御性が求められる。設計のエミュレーション段階では、ＩＣ（集積回路）あるいは複数のＩＣの集合体がソフトウェアプログラムと一体となった、最終装置あるいは最終アプリケーションで、これらＩＣが正しく機能することを確認することが必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
自動車産業、情報通信分野、防衛システム、生命維持システムでＩＣが多量に使用されるようになり、完璧な検査と、広範囲にわたるリアルタイムデバッグの必要性が重要なものとなってきている。
【０００５】
機能テストでは、要求性能に対する適合性を確認するためのテストベクトルを設計者自身が作成する責任をもっているが、このテストは、いまだにテスト方法として広く用いられている。極めて大規模なシステムでは、このテスト方法は、検出可能な不具合の範囲を高いレベルにするたえには、きわめて不十分である。自動的に生成されたテストパタンが、完全なテスト性を保証するために望まれるところであり、可制御性と可観測性こそが、（システムレベルからトランジスタレベルに到るまでの）テストの全範囲を包括する重要な課題となる。
【０００６】
大規模設計での他の問題としては、長い設計時間と、それに伴う実質的なコスト高の問題がある。再利用性を考えた設計の考え方に基づいた、テスト容易化回路、システムおよび設計手法というものを備えることが望ましい。この方法によって、初期装置に組み込まれたテスト容易化回路、シミュレーションおよびエミュレーション回路、およびシステムならびに手法を再利用することにより、後で手掛けられる装置やシステムが、テスト容易性、シミュレーションおよびエミュレーションのためにより安い設計コストで実現できる。事前に仕組まれたテスト容易化、シミュレーションおよびエミュレーションの方法がなければ、実質的な設計時間というものは、その都度のテストパターン作成と変更に多くが費やされてしまう。
【０００７】
たとえ、モジュールを再利用可能なように設計し、そのテストパタンを完全に生成してグレード分けするように、巨大な投資をしても、その後のモジュールの利用が、アプリケーション固有の論理設計に埋もれてしまい、個々の再利用モジュールへのアクセスが困難になったり、不可能になってしまう恐れが多分にある。従って、このような落とし穴にはまることは是非とも避ける必要がある。
【０００８】
ＩＣ設計の進展に伴い、例えば、内部論理の可視性や制御性が損なわれたり、故障の検出範囲や状態の切り替え能力が減少したり、テスト開発・検証により多くの問題を生じたり、さらに設計シミュレーションの複雑度が増したり、ＣＡＤ（計算機支援設計）ツールの止まないコスト増加の問題などが発生する。基板設計では、この影響の副作用としては、レジスタの可視性や制御性が損なわれたり、背系検証でのデバッグとシミュレーションが複雑化したり、多数の回路をひとつのパッケージに集積することにより、物理的に各回路へアクセスすることが困難となるために従来のエミュレーションができなくなったり、基板上の配線の複雑度が増したり、設計ツールや、混合モードでのパッケージ化ならびに生産性を考慮した設計などへのコスト高を招くといったものがあげられる。アプリケーション開発では、いくつかの副作用としては、状態の可視性が損なわれたり、高速エミュレーションが困難になったり、時間領域でのシミュレーションの規模を縮小せざるを得なくなったり、デバッグ作業の複雑度が増したり、エミュレータのコスト高を招くことなどがあげられる。生産の面での副作用としては、可視性や制御性が損なわれたり、テストベクトルとモデルの複雑度が増したり、テストの複雑度が増したり、混合モードでのパッケージ化の必要性、自動テスト装置に依然として７桁台のコスト高を招くこと、より厳しい許容範囲などがあげられる。
【０００９】
スキャンベースのエミュレーションと多重処理によるデバッグを用いたエミュレーション技術は、１０年以上も前に導入されている。１９８８年には、設計時間の短縮への要請と、オンチップ・エミュレーションのために新たに活用可能となった領域によって、従来の回路内エミュレーションからスキャンベースに移行する動きが見られた。設計時間の短縮への要請は、３つの要因によって生じたものである。オンチップメモリのような、より高い集積度が可能になったこと、エミュレーションを実現するロジックによる電気的な浸入を引き起こすクロック周波数の増加、そして、エミュレータの接続性の問題を引き起こすより複雑なパッケージ化である。
【００１０】
現在でも、これらの要因が、形を変えて顕在化し、現在の複雑で高クロック周波数、高集積化設計によって必要となったシステムデバッグ装置を提供できるような、スキャンベース・エミュレータの開発の課題となっている。結果として得られたシステムは、より小型化、高速化、安価なものとなった。これらのシステムは、ますます高密度化した形状で、より高性能なものとなっている。これらの新しいシステムの各々は、迅速なシステム開発のキーとなる、システム動作の監視に逆に影響を及ぼすようになっている。この影響は、「可視化の阻害」と呼ばれるものである。
【００１１】
アプリケーション開発者は、全ての必要なシステム動作についての可視化と制御可能性を志向している。集積化レベルとクロック周波数が相変わらず増加しつづけることにより、時間がたつについて、その可視性と制御可能性が減少する。これらの影響により、可視性と制御可能性について、要求される可視性および制御可能性のレベルと、実際に利用可能なレベルとの間にギャップが生じる結果となる。時間と供にこのギャップは確実に広くなる。アプリケーション開発ツールベンダは、このギャップが広がるスピードをなんとか留めようと努力を続けている。開発ツールソフトウェアと、これに関連するハードウェア機器は、少ない努力で最大の効果をあげる必要もあり、それぞれが異なる方向に発展する宿命にある。
【００１２】
現在の高集積化されたチップ上システム（ＳＯＣ）技術によって、可視性と制御可能性のギャップがより劇的に拡大してしまった。ロジック・アナライザや分割されたプロトタイプシステムのようは従来型のデバッグ手法では、集積化レベルと今日の増加しつづけるクロック周波数に追従することが不可能となっている。
【００１３】
集積化レベルが増加するにつれ、多数のサブシステム機器を接続するシステムバスは、従来型のロジックアナライザに対してこれらのバスへのアクセスを禁止しながら、チップ上を移動する。重要なバスの可視性が限定されたりまったく禁止されることにより、ロジックアナライザのようなツールは、システムの挙動を概観したり、開発中のシステムを制御するのに必要なトリガー機構を提供することに供することができない。アクセスすることができないようなものを制御すること自身が困難となるため、このような可視性が損なわれることに付随して、制御可能性の喪失という問題が起こる。
【００１４】
このような傾向に対処するために、システム設計者等は、これらのバスが露出するように、露出したバスを用いてプロトタイプシステムの構成を可能とするようなシステム要素を構築しながら、設計作業をしてきた。この方式もまた、システムクロック周波数がますます増加の一途を辿ることに対抗するものである。ＣＰＵクロック周波数が増加すると、チップ間のインターフェース速度は、それに追従できなくなる。開発者たちは、チップ間通信速度に遅延を与える補償のために追加されたインターフェースの待ち状態によって、分割されたシステム性能はその集積化された対象物に対して追従しないことに気付いている。ある時点で、この性能上の劣化は、許容しうる限界のレベルに達し、分割されたプロトタイプシステムは、実行可能なデバッグオプションとはなりえなくなる。我々は、アプリケーション開発のためのプラットフォームとして、生産するデバイス自身がその役目を負わなければならないような段階に入ったことになる。
【００１５】
ＣＰＵクロック周波数の増加は、また、他の単純な可視化機構の終焉を加速している。ＣＰＵクロック周波数は、Ｉ／Ｏ状態速度の最大値を上回る恐れがあるため、原形式で情報を出力するための可視化ポートは、もはや、ＣＰＵ速度に追従することができない。オンチップサブシステムもまた、ＣＰＵクロック周波数よりも低速のクロック周波数で駆動される。この方法は、システム設計を簡素化し、電力消費を減少させるために採られるものである。これらの開発は、ＣＰＵ動作の明瞭な概観を提供することに、単純な可視化ポートを信頼して用いることがも、もはやできなくなっていることを意味している。
【００１６】
可視性と制御可能性が損なわれるにつれ、アプリケーションを開発するために用いられる開発ツールは、その生産性を落としてしまっている。また、これらのツールは、可視性と制御可能性を確保するために必要となるツールの複雑度が増すことにより、適用自体が困難になっている。チップ上システムによって生じた、可視性と制御可能性、また利用のし易さの問題は、製品開発サイクルを長期化させる根源となる。
【００１７】
高集積化の傾向は、困難なデバッグ環境を設計者に与えるものとなるため、これは、デバッグ問題への新たな方法が現れることへの希望を提示するものでもある。開発サイクル時間に影響を及ぼす集積度とクロック周波数の増加は、また、これらの影響を解決する機会を生み出すという皮肉な結果をもたらしている。
【００１８】
チップ上のデバッグ機構は、これまでになく実現しやすいものになっている。高速の高性能なチップは、大規模メモリ構造をもち、急激にこの形態が主流となっているため、ＣＰＵとメモリサブシステムを伴うランダム論理に関するシステムコストは、全体のシステムコスト中を占める割合として、パーセント単位で下降している。数百というゲートのコストは、常に低いものであり、これは、ある場合には、現在のチップ設計では無視できる値となる。現在の高密度実装パッケージでの１ピン当たりのコストもまた下落してきており、これにより、より多数のピンをデバッグのために割り当てることが容易になっている。実装可能なゲートとピンの組合せによって、チップ上システムに伴う課題を解決するために必要となるチップ上の新しいデバッグ機構の利用が可能となっている。
【００１９】
生産するデバイスが、アプリケーションデバッグのプラットフォームとしても供用される際には、これらは、市場出荷までの時間を最短化するという目的を果たすための、十分なデバッグ機能を提供しなければならない。デバッグに対する要求は、アプリケーションごとに異なるため、市場出荷までの時間とコストへの要求のバランスをとるために、オンチップデバッグ機構を調整できることが高く望まれる。
【課題を解決するための手段】
【００２０】
これらのオンチップデバッグ機能は、チップの反復コストに影響を及ぼすため、すべての解決策が拡張性を有することが、基本的に重要なものとなる。「必要なものにのみ投資する」という考え方を、オンチップツールの活用のための、指針となる考え方とすべきである。この新しい考え方では、システム構築者は、チップコストに対する制約と製品開発チームのデバックに対する要求とのバランスをとりながら、機能性の他の事項とともに、オンチップデバッグ機構の仕様を定義することができる。
【００２１】
本発明のエミュレーション技術は、上述したようなデバッグの良い面を活用し、可視性と制御可能性のギャップを狭めることを目的としたデバッグ機能の手段を開発者たちに提供する。
【００２２】
このエミュレーション技術は、現在の高集積化された組み込みリアルタイムシステムの複雑なデバッグの問題に対する解決策を提供する。この技術は、現状のエミュレータの特徴点を拡張しながら、上述したような、可視性と制御可能性が損なわれる問題や使い易さについての問題に挑むものである。
【００２３】
本発明のオンチップデバッグ構成部品は、コストとデバッグ機能を最適化するための手段を提供する。このアーキテクチャは、システムコストと市場出荷までの時間について制約を満たすように、コストエミュレーション構成部品あるいは周辺機器の柔軟な組合せを実現するものである。拡張性についての側面によって、採算の合うコストと、性能への影響をある程度限定した形で製造デバイスにこれらのオンチップデバッグ構成部品を組み込むことが可能となる。
【図面の簡単な説明】
【００２４】
【図１】本発明のエミュレーションシステムの実施例の概略を示す図。
【図２】図１のエミュレーションシステムの部分を詳細に示す図。
【図３】本発明によるトレースパケット形式の一例を示す図。
【図４】本発明によるタイミングパケットの一例を示す図。
【図５】本発明によるタイミング同期パケットを示す図。
【図６】本発明によるＰＣ同期ポイントコマンドの部分の一例を示す図。
【図７】本発明によるＰＣ同期ポイントの一例を示す図。
【図８】図２のトレースコレクタの一実施例の関連する部分の概略を示す図。
【図９】本発明によるメモリ参照コマンドの一例を示す図。
【図１０】本発明によるメモリ参照同期ポイントの一例を示す図。
【図１１】図８とともに、図２のトレース収集器のさらに他の実施例の関連する部分の概略を示す図。
【図１２】図８および１１のパケット発生器に供用することができるデータ圧縮器の一例の概略を示す図。
【図１３】図１２のデータコンプレッサによって行うことができる動作の一例を示す図。
【図１４】図１２のデータコンプレッサによって行うことができる動作の一例を示す図。
【図１５】図１２のデータコンプレッサによって行うことができる動作の一例を示す図。
【図１６】図１２のデータコンプレッサによって行うことができる動作の一例を示す図。
【図１７】図１２のデータコンプレッサによって行うことができる動作の一例を示す図。
【図１８】図１２のデータコンプレッサによって行うことができる動作の一例を示す図。
【図１９】図１２のデータコンプレッサによって行うことができる動作の一例を示す図。
【図２０】ターゲットチップからエミュレータにエミュレーション制御データとエミュレーションデータを送出する従来の方法を示す図。
【図２１】図２のトレース収集器とデータ伝送収集器によって行うことができる動作の一例を示す図。
【図２２】Ａは、図２のデータ送出部の一例の関連する部分の概略を示す図であり、Ｂは、図２２Ａの伝送フォーマットの一例の関連する部分の概略を示す図。
【図２３】図２２Ａと図２２Ｂの伝送フォーマットによって行うことができる動作の一例を示す図。
【図２４】図２２Ａと図２２Ｂの伝送フォーマットによって行うことができる動作の一例を示す図。
【図２５】図２２Ａと図２２Ｂの伝送フォーマットによって行うことができる動作の一例を示す図。
【図２６】図２２Ａと図２２Ｂの伝送フォーマットによって行うことができる動作の一例を示す図。
【図２７】図２２Ａと図２２Ｂの伝送フォーマットによって行うことができる動作の一例を示す図。
【発明を実施するための形態】
【００２５】
本発明のエミュレーション、デバッグおよびシミュレーションツールを以下説明する。ここで説明するエミュレーションおよびデバッグの解決策は、オフチップで従来から実行されているデバッグ機能の多くが、もしこれらが開発者のデバッグ装備に留まっているならば、これらを製造デバイスに集積するという前提に基づくものである。デバッグ機能のチップ上への移行をサポートするために、本発明は、オンチップでの適用に適した強力な拡張性のあるデバッグ手段を提供する。この技術は、可視性を損なうことにより引き起こされる、可視性と制御可能性が損なわれる問題や使い易さについての問題に真正面から挑戦する能力を付加しつつ、初期のＪＴＡＧ技術の全ての利点を継承するものである。
【００２６】
４つの重要な構造上の構成要素が、上述した可視性と制御可能性のギャップに関する課題を解決するカギとなる。
１．リアルタイム・エミュレーション（ＲＴＥ）
２．リアルタイム・データ交換（ＲＴＤＸ）
３．トレース
４．高度解析
【００２７】
これらの要素は、表1に示すような、可視性と制御可能性に関する要求について対応するものである。
【００２８】
【表１】
0005519060.tif 000002
【００２９】
リアルタイム・エミュレーション（ＲＴＥ）は、実時間での実行制御（実行、停止、休止等）と、レジスタ／メモリの可視性のための、予め仕込まれた能力の基本的な組を提供する。この要素によって、ユーザは、実時間での割り込みを許しながら、アプリケーションコードをデバッグすることができる。割り込み処理への影響を与えずに、レジスタとメモリへは、実時間でアクセスすることができる。ユーザは、実時間と非実時間の割り込みを区別し、実時間でのデバッグ時のメモリアクセスによって影響を受けることのないコードを記すことができる。この基本的なエミュレーション能力は、２つの単点ハードウェアブレークポイント、単一のデータ観測ポイント、イベントカウンタあるいはデータロギング機構として構成することができるハードウェアを含んでいる。ＥＭＵピン能力は、マルチプロセッサイベント処理のための取りがＩ／Ｏと、単一方向（ターゲットからホストへ向き）データロギング機構とを含んでいる。
【００３０】
ＲＴＤＸTMは、エミュレータホストとターゲットアプリケーションとの間の実時間データ転送を提供する。この要素は、エミュレータによって実装される双方向および単一方向のＤＳＰターゲット／ホスト間データ転送を提供する。ＤＳＰ（あるいはターゲット）アプリケーションは、ホストへ転送されるターゲットデータあるいはホストからの受信データを収集し、一方、（ＤＳＰおよびエミュレータ中の）エミュレータハードウェアは、実際の転送を管理する。いくつかのＲＴＤＸ転送機構がサポートされ、各々は、帯域要求に対するゲートとピンの可用性にトレードオフの関係となる、異なる帯域レベルとピン利用を提供する。
【００３１】
トレースは、アプリケーション動作についての可視性を提供する非侵入性の機構である。トレースは、プログラムフロー、メモリアクセスといったＣＰＵに関する動作と、ＡＳＩＣ状態器械のようなシステムの動作と、データストリームおよびＣＰＵが収集するデータとを監視するために用いられる。ヒストリカルトレース技術は、生産されるデバイスよりも多いピン数をもつ、ロジックアナライザのような収集および特別のエミュレーション（ＳＥ）デバイスを用いている。ロジックアナライザまたは同様のデバイスは、プログラミングインターフェース（フィルタ機構）のような状態器械を用いて、データの原形式を処理する。このトレースモデルは、格納、観測および解析に必要なデータを選択するための外部トリガーとともに出力される全ての活動に依存している。
【００３２】
しかし、既存のロジックアナライザと同種の技術は、高い集積化レベル、クロック周波数の増加およびより複雑度を増したパッケージ化によって損なわれた可視性を向上させる解決策を提供するものではない。このモデルでは、生産されるデバイスは、限られた数のピンによって可視性を向上させなければならない。出力されるデータは、必要とされる出力帯域を落とすために、符号化または圧縮される。記録機構は、出力されたデータを深いトレースメモリ中に積めこむ、純粋な記録デバイスとなる。トレースソフトウェアは、記録されたデータを、システム活動の記録に変換するために用いられる。
【００３３】
高速でのシリアルデータ出力をもつオンチップトレースは、高度解析と組み合わせて、ＳＯＣ設計のための解決策を提供する。トレースは、プログラムフローやメモリアクセスなどのＣＰＵに関連した動作と、ＡＳＩＣ状態機械などのシステム活動と、データストリームやＣＰＵ収集データを監視するために用いられる。これにより、４つの異なる種類のトレースデータが生まれる。
・ＤＳＰコアによって提供されるプログラムフローおよびタイミング（ＰＣトレ  ース）
・ＤＳＰコアまたはチップレベル周辺機器によるメモリデータの参照（データ読  み込み、書き込み）
・アプリケーション固有の信号およびデータ（ＡＳＩＣ活動）
・ＣＰＵ収集データ
【００３４】
トレースデータの４つの種類のためのデータ収集機構は、モジュール化され、所望の帯域に対する要求を満たすために、機能性と、ゲートとピンの間のトレードオフとなっている。
【００３５】
ＲＴＤＸとトレース機能は、同様の、しかし異なる形式の可視性を提供する。これらは、データがどのように収集されるかによって、また、最も効果的と思われる条件によって異なる。これを明確にするために、以下、概説する。
【００３６】
ＲＴＤＸTM（実時間データ交換）は、ＣＰＵによってもたらされる、情報を交換するための解決策であり、交換されるデータは、プログラムフローに関連した明確な挙動を示すものとなっている。例えば、ＲＴＤＸは、ＤＳＰアルゴリズムからの入力または出力バッファを記録することに用いられる。ＲＴＤＸは、データを収集する際に、ＣＰＵの助けを必要とするため、これを行うために一定の、しかし小さいＣＰＵ帯域を必要とする。このように、ＲＴＤＸは、低い反復オーバーヘッドコストで可視性を提供するための、アプリケーション内部の組み込み機構である。
【００３７】
トレースは、極めて高い帯域幅（ＢＷ）データ出力をもつ、ハードウェアによって行われる非侵入型の（バス探索のような）収集機構である。トレースは、極めて高いデータレートでデータを出力する必要がある際や、トレースするべき情報の挙動が未知であったり事実上不規則だったり、あるいはアドレスと関連づけられる場合に用いられる。プログラムフローは、事前に挙動を知ることができない場合の典型例である。この種類の情報を出力するために必要となる帯域幅は高いものである。特定のアドレスのデータトレースは、もう一つの例である。データトレースを出力するために必要な帯域幅は高いものである。
【００３８】
トレースデータは、ターゲットからホストのみ向かう、単一方向性をもっている。ＲＴＤＸの単一方向形式（データロギング）がサポートされているにもかかわらず、ＲＴＤＸは、いずれの方向にもデータを交換することができる。トレースデータ経路は、極めて高い速度の単一方向性ＲＴＤＸ（ＣＰＵ収集トレースデータ）を提供するためにも用いられる。
【００３９】
トレースとＲＴＤＸの高いレベルの特徴を、表２に示す。
【００４０】
【表２】
0005519060.tif 000003
【００４１】
高度解析は、非侵入型のオンチップイベント検出とトリガー生成機構を提供する。高度解析により生成されるトリガー出力は、トレースやＲＴＤＸなど他のインフラ要素を制御する。ヒストリカルトレース技術は、ロジックアナライザ中でのトレースを制御するトリガーを生成したり、実行を中断させるためにデバイスに供給されるトリガーを生成するために、ロジックアナライザに出力されるバス挙動を用いる。これは、通常、生産するデバイス（ＳＥまたは特別のエミュレーションデバイス）よりも多くの数のピンをもつチップを含む。今日のデバイスの集積化レベルとクロック周波数は、完全な可視性をもつバス出力を妨げるものであるため、この解析モデルは、チップ上システム（ＳＯＣ）の段階では、良好に働くものではなかった。
【００４２】
高度解析は、歴史的にオフチップで実現されていたトリガー機能の最も重要な部分を再構成するために、実現可能なオンチップ命令とデータバスコンパレータ、シーケンサおよび状態機械、ならびにイベントカウンタを提供する。この構造上の要素は、イベントを識別し、イベントシーケンスを追跡し、これらのイベントの発生に応じて動作（実行中断、トレースの許可・禁止、カウント、ＲＴＤＸの許可・禁止等）を割り当てる。この能力のためにモジュラー型の構成ブロックは、バス比較器、外部イベント生成器、状態機械あるいは状態シーケンサ、およびトリガ生成器を含んでいる。高度解析システムのモジュラー構成によって、機能性とゲート間のトレードオフとなる。
【００４３】
エミュレータの能力は、以下の４つのエミュレータ要素の相互作用によってもたらされる。
１．デバッガーアプリケーションプログラム
２．ホストコンピュータ
３．エミュレーションコントローラ、および
４．オンチップデバッグ機構
【００４４】
これらの構成要素は、図１に示すように接続されている。ホストコンピュータ１０は、（ホストの外部にある）エミュレーションコントローラ１２に接続され、そのエミュレーションコントローラ（以下、エミュレータあるいはコントローラと称する）はまた、ターゲットシステム１６に接続されている。ユーザは、例えば、テキサスインスツルメンツ社のコード・コンポーザ・スタジオ・プログラムのような、ホストコンピュータ上で動作するデバッガーアプリケーションプログラムによってターゲットアプリケーションを制御する。
【００４５】
典型的なデバッグシステムを、図１に示す。このシステムは、エミュレータ１２によってデバッグ機能にアクセスするホストコンピュータ１０（通常、ＰＣで構成される）を用いる。デバッガアプリケーションプログラムは、ユーザに分かりやすい形式で、ホストコンピュータを介してデバッグ機能を提供する。ユーザの負担を軽減するため、デバッグソフトウェアによって、デバッグ資源が必要に応じて割り当てられる。ソースレベルデバッグは、ユーザから資源の複雑さが見えないようにして、デバッグ資源を利用する。デバッガーは、オンチップトレースとトリガ機構とともに、注目しているチップ挙動を選択、記録し表示する手段を提供する。トレース表示は、トレースログを生成したソースコードに自動的に対応付けられる。エミュレータは、デバッグ制御とトレース記録の機能を提供する。
【００４６】
デバッグ機能（ｆａｃｉｌｉｔｉｅｓ）は、ターゲットチップのＪＴＡＧあるいは同様のシリアルデバッグインターフェースを介した標準的なエミュレータデバッグアクセスを用いてプログラムされる。ピンは非常に貴重であるため、本技術は、シリコン費用の少ない増分によって、トレース、トリガおよび他のデバッグ機能がデバッグピン群を分け合うようにする。固定されたピン形式もサポートされている。ピン選択を分け合うことが選択された際には、トレース出力の帯域幅を最大化するように、各デバッグセッションの最初に（チップがアプリケーションプログラムを実行するように命じられる前に）デバッグピンの利用が決定される。トレース帯域幅は、トレースする最大のピン数をに割り当てることにより、最大化される。
【００４７】
システム内でのデバッグ機能と構成ブロックは、変化する。従って、エミュレータソフトウェアは、その構成を実行時に確立する。この方法は、ハードウェアブロックに対し、構成（ｃｏｎｆｉｇｕｒａｔｉｏｎ）とレジスタ組織（ｏｒｇａｎｉｚａｔｉｏｎ）を扱う一群の制約を満足することを要求する。他の構成要素は、構成ブロックと他の周辺装置をシステムメモリマップに割り当てるためのハードウェア検索機能を提供する。エミュレータソフトウェアは、検索機能を使って、資源を割り当てる。モジュールが割り当てられるアドレスと種類ＩＤは、見つかった各ブロックを一意に識別する。一旦、ＩＤが発見されると、設計データベースを用いて、的確な構成と全てのシステム入出力が決定される。
【００４８】
ホストコンピュータは、通常、少なくとも６４Ｍバイトのメモリを持ち、少なくとも、Ｗｉｎｄｏｗｓ（登録商標）９５、サービスリリース２（ＳＲ２）、Ｗｉｎｄｏｗｓ（登録商標）ＮＴあるいはＷｉｎｄｏｗｓ（登録商標）の最新バージョンを動作させることができるＰＣである。このＰＣは、エミュレータによって要求される、例えば、以下に示す通信インターフェースの一つをサポートする必要がある。
・イーサネット（登録商標）１０Ｔおよび１００Ｔ、ＴＣＰ／ＩＰプロトコル
・ユニバーサルシリアルバス（ＵＳＢ）、リビジョン１．ｘ
・Ｆｉｒｅｗｉｒｅ、ＩＥＥＥ１３９４、および、または
・パラレルポート（ＳＰＰ、ＥＰＰおよびＥＣＰ）
【００４９】
エミュレーションコントローラ１２は、ホストコンピュータ１０とターゲットシステム１６との間のブリッジを提供し、ホストコンピュータ上で動作するデバッガアプリケーションプログラムと、ＤＳＰ（あるいは他のターゲットプロセッサ）１４の上で動作するターゲットアプリケーションの間を通過する全てのデバッグ情報を扱う。
【００５０】
一つのエミュレーター構成の例は、以下の全ての機能をサポートする。
・実時間エミュレーション
・ＲＴＤＸ
・トレース、および
・高度解析
更に、エミュレータ／ターゲット間インターフェースは、以下をサポートする。
・入出力トリガー
・ビットＩ／Ｏ、および
・特別の拡張動作モードの管理
【００５１】
エミュレーションコントローラ１２は、３、４または５ビットのスキャンベースのインターフェイスを介して、実時間エミュレーション機能（実行制御、メモリおよびレジスタアクセス）にアクセスする。ＲＴＣＸ機能には、スキャンによって、または、３つの項帯域幅ＲＴＤＸフォーマットを用いてアクセスされる。入出力トリガーによって、他のシステム構成要素から、チップにデバッグイベントを通知でき、その逆も可能である。
【００５２】
エミュレータ１２は、通信部およびエミュレーション部に分割されている。通信部は、ホスト通信リンクでのホスト１０との通信をサポートし、一方、エミュレーション部は、ターゲットに接続され、ターゲットデバッグ機能とデバイスデバッグポートを管理している。エミュレータ１２は、例えば、前述した工業規格に基づく１５の通信リンクの一つを用いて、ホスト１０と通信する。ホスト／エミュレーター間の接続は、流通している汎用配線技術によって確立される。ホスト／エミュレータ間の分離は、用いられるインターフェースに適用される規格によって定められる。
【００５３】
エミュレーションコントローラ１２は、１７の一本のターゲットケーブルあるいは複数のケーブルを介して、ターゲットシステム１６と通信する。デバッグ、トレースおよびＲＴＤＸ機能は、ターゲットケーブルを共有し、ある場合には、同一のデバイスピンを共有する。ターゲットシステムが、一本のケーブルに収容できないトレース幅を用いる際には、一本以上のターゲットケーブルが必要となる。全てのトレース、ＲＴＤＸおよびデバッグ通信は、このリンクを介して行われる。
【００５４】
図２は、図１のエミュレーションシステム内のトレースシステムの実施例の核心部分の概略を示すものである。図２に示すように、トレースシステムは、ターゲットチップ上に形成されたトリガーサブシステムとトレースサブシステム、エミュレータ中に設けられたトレースレコーダ、およびホストコンピュータ中に設けられた設定および後処理部からなっている。
【００５５】
トリガサブシステムは、例えば、なにがしかの好適な従来手法によって、ハードウェアおよびソフトウェアトリガを識別するために動作する。トレースサブシステムは、トリガサブシステムに接続され、ハードウェアおよび／またはソフトウェアトリガを受信するためのトレース収集部（あるいはトレースコレクター）２１を含んでいる。また、トレースコレクターは、複数の情報源から従来のトレース入力情報（例えば、タイミング情報、プログラムフロー情報、メモリ書き込み情報およびメモリ読み出し情報）を受信し、そこからトレース情報を含むトレースパケットのストリームを生成する。トレースサブシステムは、更に、トレースパケットストリームを受信し、これを、トレース出力ポートからターゲットチップの適切な出力ピン（例えば、デバッグポートまたはシステムバスポート）に出力される伝送パケットのストリームとして、近似的に成形するトレース出力部を含む。伝送パケットのストリームは、ターゲットチップのピン境界から、エミュレータ内のトレースレコーダに配信される。トレースレコーダ（あるいは、トレースレシーバ）は、例えば、一つあるいは複数の（図２に示す付加チャネルを含む）トレースチャネルから供給されるトレースストリームを単に記録するだけの、単純な記録機構である。ホストコンピュータは、記録されたパケットを後で検索し、トレースパケットレコーダでデコードし、デコードされたパケット情報をトレースディスプレーに表示する。
【００５６】
トレースコレクタ２１のいくつかの実施例は、トレース情報を、プログラムカウンタ（ＰＣ）情報、メモリ読み出し情報、メモリ書き込み情報およびタイミング情報として表す１０ビットのエンコーディングを用いる。また、もっと広いエンコーディングも利用可能である。更に、以下で詳説するように、前述で例示した全ての種類の情報は、ターゲットチップの同一のピンを介して、エミュレータのアクセスに伝送される。上述した１０ビットエンコーディングの結果は、１０ビットのパケットとなり、これには、オペレーションコード（ｏｐｃｏｄｅｓ）またはデータ、あるいは、オペレーションコードおよびデータの両方が含まれている。エンコードされたパケットの各々は、送信されている情報の種類を示す１つのオペレーションコードを含んでいる。従って、２ビット長のオペレーションコードについては、エンコードされたパケットの残りの８ビットが、２ビットオペレーションコードに関連するデータを表すものとなる。一方、１０ビットのオペレーションコードを含むエンコードされたパケットは、いかなるデータビットも含むことはない。
【００５７】
多くの場合、付加データを、与えられたオペレーションコードに関連付けることが必要である。例えば、２ビットのオペレーションコードについて、８つの付加ビットのみが現状のパケットでは利用可能である。もし、８つ以上の付加ビットが、所定の情報の通信にとって必要ならば、付加データビットは、以降のパケットに含ませることができ、以下、このパケットをデータパケットあるいは継続パケットと称する。継続パケットは、例えば、その２つの最上位ビットを１０のオペレーションコードを定義するように設定することによって一意に識別される。このオペレーションコードは、以下、継続オペレーションコードと称する。継続パケットに含まれるデータビットは、１０という継続オペレーションコード以外のオペレーションコードを含む、以前のパケットに関連した情報を表す。
【００５８】
オペレーションコード（すなわち、継続オペレーションコード以外の）パケットで始まり、オペレーションコードパケットに続く全ての必要な継続（または、データ）パケットを含むパケット列は、以下、コマンドと称する。初期の非継続オペレーションコードは、コマンドオペレーションコードと称する。コマンドは、０またはそれ以上のパラメータを持っている。各パラメータは、コマンドオペレーションコードに関連したデータの独立した要素である。予期されるパラメータの数は、コマンドオペレーションコードに依存する。コマンドの各パラメータは、一つまたは複数のパケット列としてエンコードされ、その先頭は、「パラメータの開始」オペレーションコードとして識別され、その残りは、継続パケットとなる。
【００５９】
コマンドの解釈は、２つの要因、すなわち、コマンドオペレーションコードとコマンドに含まれるパラメータ数に依存する。言い換えると、例えば、コマンドオペレーションコードパケットは、もし他のコマンドオペレーションパケットがその直後に続くならば一つの意味があり、もしコマンドオペレーションコードパケットの直後に継続パケットが続くならば、まったく別の意味を持つことになる。図３は、本発明によるトレースパケット形式の一例を示すものである。図３に示すように、いくつかのオペレーションコードは、１０ビット長をもち、他のものは１０ビット以下の長さである。１０ビット長以下のオペレーションコードを含むパケットでは、残りのビット（図３では、ｘで示す）は、データ伝送のために用いられる。
【００６０】
図３に示すように、オペレーションコード１１は、タイミング情報パケットを示す。タイミングパケット中の各データ（すなわち、非オペレーションコード）ビットは、ターゲットプロセッサの単一のクロックサイクルを表す。いくつかのタイミングパケットの例を、図４に示す。オペレーションコードの第一ビット（すなわち、最も左側のビット）は、タイミングパケット中に記録された最新クロックサイクルを表し、最終ビット（すなわち、最も右側のビット）は、タイミングパケット中に記録された最古のクロックサイクルを表す。更に、タイミングパケット中の、０というデータビット値は、単一の命令あるいは複数の命令がそのクロックサイクル中に実行されることを表している。タイミングパケット中の、１というデータビット値は、待ち状態が発生し、そのクロックサイクル中にプログラム実行が中断されることを表している。これにより、トレース中の各命令について、サイクルごとの正確なプロファイリングが可能となる。タイミングパケットの例を、図４に示し、その説明を加えた。
【００６１】
いくつかの実施例では、各命令（または、並列命令群）は、単一の０ビットによって表される。もし命令の実行中に、実行中断が発生すると、追加の中断サイクルが、１というビット値で表される。このような実施例では、実行の第一サイクルが、０というビット値で表され、全ての追加のサイクルが、１というビット値で表される。
【００６２】
上述した本発明によるタイミングパケットは、ピン境界から伝送パケットを出力するために用いられるトレース出力クロック（例えば、図２の発振器によるものと仮定すると）が、ターゲットプロセッサコアの内部クロック周波数よりも十分低い同一のクロック周波数（例えば、２００ＭＨｚ）で動作したとしても、エミュレーションシステムが、例えば、３００ＭＨｚから１．２ＧＨｚというターゲットプロセッサのクロック周波数に「追従」できるようにするものである。
【００６３】
ここで再び図２によれば、、トレース発振器２１によって生成されたパケットストリームの任意のポイントで、タイミングパケットを発生させることが可能である。例えば、あるコマンドの中心にタイミングパケットを挿入しても、エミュレータによるそのコマンドの解釈に対して、変化や影響を与えないことが可能となる。例えば、挿入されたタイミングパケットに続くコマンドのデータパケットが、あたかもタイミングパケットが存在しないかのように扱われる。パケットストリーム中の任意のポイントに、このタイミングパケットを挿入する機能は、伝送に先立って、トレース発振器２１中でタイミングパケットが待行列に入ることを有利に避けることができる。
【００６４】
また再び図３によれば、タイミング同期ポイントパケットは、トレースストリーム中のタイミングパケットと、トレースストリーム中の他のトレース情報との関係を示すために用いられる。例えば、図５に示したタイミング同期ポイントは、タイミングパケット中のタイミング情報を、パケットストリームのパケットで伝送中でもあるＰＣトレース情報に対応付けるために用いられる。図５のタイミング同期ポイントは、タイミング同期ヘッダ（すなわち、オペレーションコード）と、本例では、３ビットＰＣ同期ＩＤとを含んでいる。タイミング同期ポイントは、タイミングパケットのストリーム中での位置を記録するために用いられる。同期ポイントは、それがマークするタイミングパケットの前にタイミングパケットストリームに挿入される。タイミングパケットのように、タイミング同期ポイントパケットは、他のコマンドの真中に挿入され、この際、これらの割り込みコマンドのパケットの解釈と干渉しないようになっている。ＰＣ同期ＩＤは、ＰＣトレースパケットのストリームと一体となった対応するＰＣ同期ポイントパケットに対応づけられるために用いられる。
【００６５】
再び、図３によれば、ＰＣ同期ポイントは、ＰＣトレースパケットストリームの様々な状況に応じて用いられる。いくつかの種類のプログラムイベントを表すために、様々な種類のＰＣ同期ポイントがある。例えば、ＰＣ同期ポイントは、周期的に生成されるＰＣおよびタイミングパケット同期ポイントと、ＰＣトレースセグメントの開始もしくはＰＣトレースセグメントの終了をマーク付けするために用いられる。このように、あらゆるＰＣ同期ポイントは、図３に示したオペレーションコードでさえ、図６に示すような付加的な種類コード情報を含んでいる。この種類コード情報は、ＰＣ同期ポイントに対する原因を表している。図６は、例えば、ＰＣトレースストリームの第一ポイント、ＰＣトレースストリームの最終ポイント、周期的に生成される同期ポイントなど、いろいろな理由によって生成される様々な種類のＰＣ同期ポイントの種類コードの例を示している。
【００６６】
図７は、ＰＣ同期ポイントコマンドの例を、更に詳細に示したものである。図７に示すように、ＰＣ同期ポイントコマンドは、ＰＣ同期ポイントオペレーションコードとＰＣ同期ポイントの種類コードを含む第一パケットを含んでいる。最初のコマンドオペレーションコードパケットの後、ＰＣ同期ＩＤを指定するために第一継続パケットが用いられる。このＰＣ同期ＩＤは、最終的には、ＰＣ同期ポイントを、同一のＰＣ同期ＩＤをもつ対応したタイミング同期ポイントと一致させるために、ホストコンピュータによって用いられる。このＰＣ同期ＩＤと同一のパケットは、３ビットの時間インデックスパラメータである。図２のトレース収集器によって生成されたパケットストリームでは、対応するＰＣ同期ポイントが発生している間、タイミング同期ポイントの後の第一タイミングパケットが、タイミングビットを保持し続ける。そのタイミングパケットのビットに対する3ビット時間インデックスポイントは、ＰＣ同期ポイントで指定されたＰＣでの命令実行の第一サイクルを表す。例えば、もし時間インデックス値が０００ならば、タイミング同期ポイントの直後にあるタイミングパケットの全てのビットは、図７のＰＣ同期ポイントの最後の４つのパケットで指定されたＰＣ値の間もしくは後に実行されるサイクルに対応する。
【００６７】
図８は、図２のトレース収集器２１の実施例の主要部分の概略を示すものである。図８のトレース収集器は、タイミングパケットを生成するためのタイミングパケット発生器８１とＰＣトレースパケットを生成するためのＰＣトレースパケット発生器８２を含んでいる。タイミングパケット発生器８１は、ターゲットプロセッサクロックを入力として受け取り、また、実行情報（すなわち、実行もしくは待ち状態）も受け取り、上述のようにタイミングパケットを生成することにより、これらの入力に対して応答する。ＰＣトレースパケット発生器８２は、ＰＣトレースパケットストリームの中に埋め込むためのＰＣアドレスを受け取るＰＣレジスタに接続されている。また、ＰＣトレースパケット発生器８２は、ＰＣトレース動作をいつ開始、停止するか、また、ＰＣトレースパケットストリームの中にＰＣ同期ポイントをいつ生成させるかを指定するトリガー情報も入力する。このトリガー情報は、あらゆる望ましい方法で生成することができるが、タイミングパケット生成器８１へも提供され、ＰＣトレースパケット発生器８２がいつＰＣ同期ポイントを生成するかをタイミングパケット発生器８１が検知できるようになっていて、この検知によって、タイミングパケット発生器８１が対応するタイミング同期ポイントと時間インデックスを生成し、ＰＣ同期ポイントに埋め込むために時間インデックスをＰＣトレースパケット発生器８２に送り出すことが可能となる。
【００６８】
ＰＣ同期ポイントと、それに対応するタイミング同期ポイントが生成される際には、タイミングパケット発生器８１とＰＣトレースパケット発生器８２は、ＰＣ同期ＩＤ番号のテーブル８３にアクセスし、各パケット発生器は、同一のＩＤ番号を取得し、タイミング同期ポイントを一意にＰＣ同期ポイントに対応付けることができる。各々の新しいＰＣとタイミング同期ポイントの組み合わせによって、タイミングパケット発生器８１とＰＣトレースパケット発生器８２は、テーブル８３から新しいＩＤ番号を取得する。
【００６９】
タイミングパケット発生器８１とＰＣトレースパケット発生器８２によって生成されたパケットストリームは、受信したパケットストリームと、他のトレース収集動作から受信した他のすべてのトレースパケットストリームとを組み合わせ、図２のトレース出力部への出力として複合パケットストリームを生成するストリーム組み合わせ器８５に与えられる。上記のように、タイミングパケットとタイミング同期ポイントは、複合パケットストリームの任意のポイントに挿入することができるが、通常は、複合ストリーム中の与えられたコマンドは、他のコマンドのパケットによる割り込みを受けることはない。図３のオペレーションコード情報を用いて、図２のトレースパケットデコーダは、例えば、ＰＣトレースコマンドを、他のコマンドとタイミングパケットから簡単に分離することができる。トレースパケットデコーダは、簡単にタイミング同期ポイントとＰＣ同期ポイントとを検出し、これらのＰＣ同期ＩＤによってこれらを適切に関連付けることができ、これにより、ＰＣトレースストリームを、タイミングストリームに同期させる（すなわち、ターゲットプロセッサのクロックに同期させる）。
【００７０】
図９は、本発明で用いられるパケットシーケンス（コマンド）の一例を示すものであり、メモリ読出しやメモリ書き込みといったメモリ参照について記述したものである。メモリ参照コマンドは、００１１オペレーションコード（図３参照）によって示されている。図９のＬＤ／ＳＴビットは、メモリ参照が、ロード（読み込み）命令なのかストア（書き込み）命令なのかを表す。第一パケットの“データ、アドレス、ＰＣ”部は、例えば、ロードまたはストアのデータ値がコマンドに含まれているか、全ての含まれるデータの容量、メモリ参照のアクセス容量、ロードまたはストアのメモリアドレスがコマンドに含まれているか、さらに、ロードまたはストアに関連するＰＣがネーティブＰＣとして含まれているのか最後のＰＣ同期ポイントからのオフセットとして含まれているのかに関するエンコードされた情報を含んでいる。図９のメモリ参照コマンドの残りのパケットは、ロードもしくはストアされたデータ、ロードまたはストアに関連したデータアドレス、ならびに、ネーティブＰＣアドレス、もしくは最後のＰＣ同期ポイントからのオフセットとして表されるＰＣアドレスを伝送する。
【００７１】
また、図９は、本発明のトレースパケットのフォーマットについての特徴の一例も示している。特に、図３も参照すると、（例えば）０１オペレーションコードは、それが用いられる場面によって、いくつかの異なる意味を持っている。図９にあるように、このオペレーションコードは、コマンド中のパラメータの始まりを示すために用いられる。与えられたコマンドのパラメータの数は、オペレーションコード（例えば、図９のパケット９１の“データ、アドレス、ＰＣ”部）によって特定され、これによりパラメータの始まりを表す０１オペレーションコードの発生が、トレースデコーダで検出される。
【００７２】
一方、０１オペレーションコードが、コマンドの外部に発見された場合には、それは分岐についての情報を伝達するものとなる（図３参照）。１つまたは複数の（オペレーションコード１０）データパケットは、一つの０１オペレーションコードパケットに続く時、０１オペレーションコードパケットとそれに続くデータパケットは、間接的な分岐を表す。それ以外の場合には、０１オペレーションコードパケットは、相対的な分岐を表す。
【００７３】
図１０は、図９に示したようなメモリ参照を、ＰＣトレースによって指定されたプログラムフローと同期させるのに用いられる、メモリ参照同期ポイントパケットを示す。図１０のメモリ参照同期ポイントは、図８のＰＣトレースパケット発生器８２によるＰＣ同期ポイントの生成によって、起動される。図１０のメモリ参照同期ポイントは、メモリ参照同期ポイントを起動したＰＣ同期ポイントの後の複合パケットストリーム中に現れる。さらに、メモリ参照同期ポイントは、メモリ参照同期ポイントを起動したＰＣ同期ポイントに関連する命令を含みこれに続く対応するすべてのメモリ参照パケットの前の複合パケットストリーム中にも現れる。図１０に示すように、メモリ参照同期ポイントパケットは、メモリ参照同期ポイント（図２参照）としてそれ自身を特定するオペレーションコードを含んでおり、さらに、メモリ参照同期ポイントの生成を起こさせたＰＣ同期ポイントのＰＣ同期ＩＤも含んでいる。メモリ参照同期ポイントについては、対応するメモリ参照パケットを発行する必要がなければ、これを発行する必要はなく、対応するメモリ参照パケットシーケンス（例えば、図９に示したシーケンス）の起動の後で発行する。
【００７４】
図１１は、図８と関連して、図２のトレース収集器の更に他の実施例の主要部を示したものである。図１１の実施例は、（図９に図示したような）データ／アドレストレースパケットストリームと（図１０に図示したような）メモリ参照同期ポイントを生成するメモリアクセストレースパケット発生器１１１を含んでいる。図１１のメモリアクセストレースパケット発生器１１１は、入力としてＰＣレジスタと接続し、ターゲットプロセッサコアからデータ／アドレス情報１１２を受け取る。メモリアクセストレースパケット発生器１１１は、また、例えば、メモリアクセストレース動作の開始と終了の時期を指定する、従来の方法で生成されたトリガー情報を受け取る。メモリアクセストレースパケット発生器１１１は、また、８３のＤＣ番号テーブルに接続され、これにより、図１０のメモリ参照同期ポイントに、適切なＰＣ同期ＩＤ番号が提供される。
【００７５】
トリガー情報に応答して、メモリアクセストレースパケット発生器１１１は、データ／アドレス情報１１２から、データ／アドレストレースパケットストリームを生成する。このパケットストリームは、図８のストリーム組み合わせ器８５に入力され、図８の複合パケットストリーム中に埋め込まれる。
【００７６】
また、パケット発生器１１１は、１１５で（すなわち、図８のＰＣトレースパケット発生器８２から）ＰＣ同期パケットの発行を示す情報を受け取る。この１１５からの情報に応答して、メモリアクセストレースパケット発生器１１１は、テーブル８３から現在のＰＣ同期ＩＤ番号を受け取り、（必要に応じ）図１０に図示したようなメモリ参照同期ポイントを生成する。また、ＰＣ同期ポイントの発生は、ＰＣレジスタが更新されるたびにロードされるクロック１１２をクリアする。このように、カウンタ１１２は、最後のＰＣ同期ポイントの後の、新たなＰＣロードの数の記録を逐次更新することができる。従って、カウンタ１１２の計数出力は、現在のＰＣ値が最後のＰＣ同期ポイントからどれだけオフセットしているかを表すＰＣロードの数を示す。このように、ＰＣトレースが動作可能となっている時には、（例えば、図８のＰＣトレースパケット発生器８２からの）信号１１８によって示され、メモリアクセスパケット発生器１１１は、図９に図示したようなコマンド内部で、対応するＰＣを、全体のネイティブＰＣ値ではなくそのオフセット値によって識別することができ、これにより、図９のメモリ参照コマンド内の情報量（すなわち、これに要求される帯域幅） を減少させることができる。ネイティブＰＣ値は、もし、ＰＣトレースが実行無効である場合には、図９のコマンドに含まれる。
【００７７】
図１２は、例えば、図１１のメモリアクセスパケット発生器１１１または図８のＰＣトレースパケット発生器８２に設けられるデータ圧縮器の一実施例の主要部の概略を示したものである。図１２のデータ圧縮器は、入力トレースデータを受け付けるための新データレジスタ１２１と、新しいトレースデータをレジスタ１２１の入力として受信した時に新データレジスタ１２１の現在の内容を受信するための旧データレジスタ１２２とを含んでいる。圧縮マップ発生器１２３は、各々、旧データレジスタ１２２と新データレジスタ１２１に接続された、２つの入力をもっている。符号拡張評価器１２４は、圧縮決定器１２５の入力に接続された一つの入力をもっており、符号拡張評価器１２４は、圧縮決定器１２５のもう一つの入力に接続された出力をもっている。圧縮決定器１２５は、さらに、新データレジスタ１２１に接続された入力をもっている。
【００７８】
符号拡張評価器１２４は、レジスタ１２１中の新トレースデータに応答し、新たに受信されたトレースデータに対して、符号拡張圧縮を適用できるかどうかを判定する。もし適用できるならば、符号拡張評価器１２４は、圧縮決定器１２５に対して適切に信号を送り、符号拡張圧縮が適用できる旨を通知する。圧縮マップ発生器１２３は、レジスタ１２１中の新データのある部分が、旧データレジスタ１２２中に格納されたトレースデータの対応する部分と同一かどうかを判定する。もし同一である場合には、圧縮マップ発生器は、新データのどの部分が旧データの対応する部分と同一であるかを示す圧縮マップを生成する。新データの同一と判定されたすべての部分については、レミュレータに出力する必要はない（図２参照）。圧縮マップは、圧縮決定器１２５に送られる。
【００７９】
圧縮決定器１２５は、圧縮マップ発生器１２３と、もし圧縮が可能なら、どのような圧縮がレジスタ１２１中の新データに適用できるのかを決定する符号拡張評価器１２４の各々の出力に応答して、動作可能となる。もし、なんらかの圧縮が可能な場合には、圧縮決定器１２５は、データレジスタ１２１中の新データに対して、この圧縮処理に適用し、圧縮されたデータを、図２のトレース収集器２１のパケット編成部に出力し、そこで、パケット編成部は、圧縮されたデータを、適切なパケット、例えば、図３に図示したデータ搬送パケット内に埋め込む。一方、データレジスタ１２１中の新データに対して、データ圧縮が適用できない場合には、圧縮決定器１２５は、新データをそのままの圧縮しない形で、パケット編成部へ送る。この有利な点は、圧縮決定器１２５が、符号拡張圧縮のみを用いるのか、圧縮マップ情報のみを用いるのか、あるいは符号拡張圧縮と圧縮マップの両方を用いるのかを選択して制御するところにある。この選択的な制御は、例えば、適切な制御コードをエミュレータによってスキャンし、圧縮決定器１２５に取り込むことにより、実装することができる。
【００８０】
図１３は、ＰＣコマンドに適用される符号拡張圧縮の一例を図示したものである。図１３の例では、バイト０がＰＣの最下位桁であり、バイト１がＰＣの次の最下位桁であり、バイト２がＰＣの次の最下位桁であり、さらにバイト３がＰＣの最上位桁である。なお本例では、オペレーションコードは、説明簡略化のため省略している。バイト０は、通常、パケット１３１で送られ、バイト１は、通常、パケット１３２で送られ、バイト２は、通常パケット１３３で送られ、さらにバイト４は、通常、パケット１３４で送られる。しかし、図１３に示すように、図示したバイト１の条件が満足された場合には、バイト１だけが送られ、図示したバイト２の条件が満足された場合には、バイト２だけが送られ、さらに、図示したバイト３の条件が満足された場合には、バイト３だけが送られる。また、図１３では、“！＝”の表記は、“等しくない”ことを意味する。いくつかの実施例では、図１２の符号拡張評価器１２４は、符号拡張圧縮の適用可能性の判定のため、図１３にその一例を図示した判定基準に従って、新トレースデータを評価することも可能である。
【００８１】
図１４から１８は、図１２のデータ圧縮によって行われる処理の一例を示したものである。図１４から１８の各例では、圧縮決定器は、符号拡張手法か圧縮マップ手法のどちらか一方を利用するように、あるいは、その両方を適用するようにプログラムされている。これらの例では、バイト０から３は、順次、右から左に現れ、最下位桁から最上位桁に向かって、各バイト中のビットは、右から左に進行する。図１４の例では、符号拡張圧縮はバイト１から３に適用可能であるため、バイト０のみが伝送される。パケットデコーダ（図２参照）は、符号拡張圧縮が、現在のバイトに適用されていることを認識している。新データの各バイトが、旧データの対応するバイトと同一であることを示すデータ圧縮アップもまた伝送され、ホスト（図２参照）のパケットデコーダは、新データがすべて旧データと同一であることを認識している。本例では、符号拡張圧縮もしくは圧縮マップのいずれか一方が、１パケット分の情報の伝送を必要としている。ここでは、図１９に一般的なものとして示しているように、圧縮マップは、与えられたコマンドに含ませ、コマンドの初期ヘッダパケットに続く継続パケットとすることが可能である。
【００８２】
図１９では、１９０でのデータヘッダパケットは、上記の図９のパケット９１に対応しており、従って、データ圧縮マップは継続パケット１９２として伝送される。従って、図１９に示すように、データバイト伝送は、図９に示したものと同様に進行する。特に、図１９に示したデータ圧縮マップを考慮すると、このマップは、基本的に１バイト（８ビット）のデータであり、ここでは１というビット値は、対応する新データバイトが、その対応する旧データバイトと同じであるために送信されないことを示し、さらに、０というビット値は、対応する新データバイトが、その対応する旧データバイトとは異なるために送信されることを示している。図１９では、網掛けしたバイトは、データ圧縮アップでの０をあらわし、これらのバイトのみが送信される。図２中のトレースパケットデコーダは、データ圧縮マップを、簡単にデコードでき、以って、どのバイトが伝送されているのか、また、どのバイトが単に複製されるのみで、伝送されていないのかが判定できる。
【００８３】
図１５の例では、新バイト０は、旧バイト０とは異なり、残りの新バイトは、対応する旧バイトと同一である。本例では、符号拡張圧縮が適用可能であり、新バイト０のみが伝送される。トレースデコーダでは、符号拡張圧縮は、待ち受けながらも受信されなかったバイト１から３の全てのバイトに適用するものと仮定している。
【００８４】
図１６の例では、新バイト０のみが、旧データと異なり、新データのバイト１から３に対しては、符号拡張圧縮を適用することはできない。従って、バイト０のみが異なることを示す圧縮マップが、バイト０自身とともに伝送される。
【００８５】
図１７の例では、新バイト０および１が、旧データのバイトと同じであるが、新バイト２および３は、旧データのものとは異なる。さらに、符号拡張圧縮は、新バイト２および３に適用する。本例では、圧縮マップのみが伝送され、新バイト２および３が、これらに対応する旧バイトとは異なることを示す。従って、ホストコンピュータのトレースパケットデコーダは、バイト０および１が旧データからは変化していないことを認識しており、デコーダは、バイト２および３が伝送されてくることを待ち受けていたものの、これらを受信していないため、符号拡張圧縮は、新バイト２および３に適用するものと仮定する。このように、図１７の例では、図１２の圧縮器は、圧縮マップ手法を符号拡張手法とを組み合わせたものと言える。
【００８６】
図１８の例は、図１７の例と同様である。特に、新バイト０および１は、ここでも、旧データと同一であり、新バイト２および３は旧データとは異なり、さらに、符号拡張圧縮が、新バイト２および３に適用される。従って、新バイト２および３が旧データとは異なることを示す圧縮マップは伝送されるが、バイト２および３は伝送されず、トレースデコーダは、符号拡張圧縮が新バイト２および３に適用可能であることを仮定する。
【００８７】
図２０は、エミュレーション制御情報およびエミュレーションデータをターゲットチップからエミュレータに出力する、従来の方法を示したものである。図２０の方法では、デバッグポートの９本のピンが、エミュレーション情報を搬送するために割り当てられ、その５本のピンが、制御情報のために割り当てられ、さらに、その４本のピンがデータに割り当てられている。このように、制御情報とデータとに区別してピンを固定して割り当てることにより、大量のデータ伝送に必要な帯域幅が要求される際（きわめて、普通に起こる状況）や、制御情報のために大量の伝送帯域幅が要求される際（それほど普通とはいえないが、ありえあいことではない状況）のボトルネックを解消することができる。
【００８８】
次に、図２１と、上述した１０ビットのトレースパケット形式（図３参照）に準じると、本発明は、データ中心に伝送を行うのか、あるいは、制御中心に伝送を行うのかといった状況への必要性に応じて、トレース出力帯域幅を割り当てることができるような、レースパケット形式に十分な柔軟性を備えることに利点があることがわかる。例えば、上述した継続パケットでは、制御の２ビットは、データの８ビットとともに提供される。一方、１０ビットの制御情報を不空パケットは、２１０に示されるような必要性に応じて、提供される図２２Ａのパケット２１０は、例えば、図９に関連して上述したパケット９１に対応しており、図２１のパケット２１２は、例えば、図９のデータあるいはアドレスバイト継続パケットに対応している。このように、先に図３で図示したパケット形式は、継続パケットの利用を含むものであり、出力パケットストリーム中の制御とデータの帯域幅の柔軟な割り当てを提供できるという利点があり、これにより、従来技術で問題となっていたボトルネックの多くを解決することができる。
【００８９】
図２２Ａは、図２のトレース出力部の一実施例の主要部を図示したものである。図２２Ａに示すように、トレース出力部は、伝送フォーマッター２２０に接続されたＦＩＦＯバッファを含んでいる。ＦＩＦＯバッファは、ストリーム組み合わせ器８５（図８参照）によって生成された複合トレースストリームを受信する。伝送フォーマッター２２０は、パケットを所望の、例えば、ターゲットチップ上のデバッグポートのピンに配送するピンマネージャー２２４に対して、伝送パケットのストリームを出力する。上述した１０ビットトレースパケットの例に準じると、ストリーム組み合わせ器８５は、１０ビットトレースパケットの複合ストリームを生成する。トレース出力部は、ＦＩＦＯバッファと伝送フォーマッター２２０を含んでおり、複合パケットストリームのトレースパケットを、１０ビットトレースパケットとは異なるビット幅をもつ伝送パケットのストリームに変換する。この伝送パケットストリームは、順次、ターゲットチップのピン境界から、図２のトレースレコーダへ送られる。伝送パケットは、例えば、デバッグポートまたは他のシステムバスポートを介して、トレースレコーダへ配信される。
【００９０】
上記のタイミングパケットを利用することにより、ピン境界からエミュレータに出力される伝送パケットに対応した伝送クロックは、完全に、ターゲットプロセッサ（あるいは、コア）のクロックと独立させることができるという利点がある。従って、例えば、ターゲットプロセッサのクロックが比較的低い場合、例えば、マイクロコンピュータチップで６７ＭＨｚといった場合には、図２２Ａの伝送クロックは、ターゲットプロセッサのクロックよりもはるかに高速なものとすることができる。この伝送クロックは、例えば、エミュレータとターゲットチップとの間のスキャンインターフェースに用いられる従来手法によるスキャンクロックに基づいて生成することも可能であり、このように生成した伝送クロックは、実質的に、６７ＭＨｚというターゲットプロセッサのクロックよりも高速とすることができる。このような状況によって、ターゲットチップの１０本以下のピンを用いて、１０ビットトレースパケットを出力するために必要とされる伝送帯域幅が得られる。例えば、２００ＭＨｚの伝送クロックでは、６７ＭＨｚのターゲットプロセッサクロックに基づくターゲットプロセッサ内部処理に速度を合わせながら、２つの１０ビットトレースパケットを、５つの４ビット伝送パケットあるいは４つの５ビット伝送パケットとして出力することができる。このように、本例では、５本または６本のピンを、他に必要となる機能のために空けておくことができるという利点がある。
【００９１】
図２３Ａは、６つの１０ビットトレースパケットを、１０個の６ビット伝送パケットとして伝送する場合の他の例を示したものである。図２２Ａの伝送クロック周波数は、ターゲットプロセッサのクロック周波数を上回るため、より狭いデータ幅のパケットと、それに伴うより少数のピンを用いて、同じデータ伝送速度を得ることが可能である。例えば、６６．７ＭＨｚのターゲットプロセッサのクロック周波数と、２００ＭＨｚの伝送クロック周波数では、図２および２２のトレース出力部は、３つの１０ビットトレースパケットを、１０個の３−ビット伝送パケットに変換することが可能であり、ストリーム組み合わせ器８５からの１０ビットのトレースパケットのフローに追従することが可能である。
【００９２】
図２３Ｂおよび図２３Ｃは、６つの１０ビットトレースパケットが、５つの１２ビット伝送パケットとして伝送される（図２３Ｂ）動作と、８つの１０ビットトレースパケットが、５つの１６ビット伝送パケットとして伝送される（図２３Ｃ）動作について示したものである。
【００９３】
図２２Ｂは、図２２Ａの伝送フォーマッター２２０の一実施例の主要部の概略を示したものである。図２２Ｂに示されるように、伝送フォーマッター２２０は、ＦＩＦＯバッファからトレースパケットを受信する、現在のパケットレジスタ２２１を含んでいる。また、図２２Ｂに図示した旧パケットレジスタ２２２は、単に、新パケットレジスタ２２１の内容の旧版を格納したものである。トレースパケットの幅が、伝送パケットの幅に均等に分割可能となるように、例えば、２ビットあるいは５ビットの伝送パケット幅と１０ビットのパケット幅とした実施例では、新パケットレジスタ２２１のみが必要とされる。均等に分割する場合には、トレースパケットデータは、単純に新パケットレジスタにロードされ、狭い幅のパケット形式で送出される。
【００９４】
トレースパケット幅が、伝送パケット幅によっては一様に分割されない場合には、２つの連続したトレースパケットは、組み合わせて伝送パケットのいくつかを構成する必要がある。このような、不均等な分割の場合には、追加されたレジスタ、すなわち旧パケットレジスタ２２２を用いる。伝送パケットは、新パケットレジスタの最下位桁からはじまる、新パケットレジスタ２２１の内容から生成される。一つまたは複数の伝送パケットが、新パケットレジスタのビットから生成された後には、新パケットレジスタ内部には、伝送パケット幅よりも小さい幅の多くのビットが残存することになる（すなわち、トレースパケット幅を、伝送パケット幅で割った余り）。このような状況では、新しいトレースパケットが、新パケットレジスタ２２１にロードされる。このロードの後で、新パケットレジスタは、新しいトレースパケットを保持し、最新パケットレジスタ２２２は、新パケットレジスタの直前の内容を保持する。組み合わせ器２２３は、伝送されなかった以前のトレースパケットのビット（新パケットレジスタ２２２に格納されているビット）を、次の伝送パケットを完成させるために必要なだけの数の新パケットレジスタの最下位桁を組み合わせる。
【００９５】
図２４は、１０ビットトレースパケットを６ビットの伝送パケットに変換するための、図２２Ｂの伝送フォーマッターの処理の例を示す。図２４の例では、網掛けした箱は、伝送パケットで伝送されるビットを表し、各々の横線は、一つの、伝送クロックサイクルを表す。まず、最初の６ビット、すなわち、最初の１０ビットトレースパケットの０から５ビットが伝送され、その後、第一トレースパケットの６から９ビットが、第二のトレースパケットの０および１ビットとともに伝送され、また、その後、第二のトレースパケットの２から７ビットが伝送され、次に、第二のトレースパケットの８から９ビットが第三のトレースパケットとともに伝送され、その後に、第三のトレースパケットの４から９ビットが伝送され、その後、最後に、第四のトレースパケットの０から５ビットが伝送される。６ビットの伝送パケットが、直ちに、図２のトレースパケットデコーダによって、１０ビットトレースパケットに再フォーマットされる。
【００９６】
図２５から２７は、図２４と同様に、追加のトレースパケットデータが必要であるが、ＦＩＦＯからは利用可能なデータが得られない場合の、図２２Ａと２２Ｂの伝送フォーマッターにより実行される処理の一例を示したものである。図２５では、完全な６ビット伝送パケットを構成するために、（次のトレースパケットから得られる）十分な量の追加トレースパケットデータが（２５１で）利用可能となるまで、伝送フォーマッターが単純に処理停止している。
【００９７】
図２６は、ＮＯＰトレースパケットをトレースパケットストリームに埋め込み、全ての有効なトレースパケット情報が（２６１で）伝送パケットの中に出力されるまで、出力パケットの伝送を継続することにより、全ての有効なパケット情報を吐き出す際の、他の方法を示すものである。もし、追加のトレースパケット情報が伝送に使える状況になると、伝送は中断する。ＮＯＰは、図２６では、０によって表現されている。一旦、（全てのビットが、０からなる）完全なＮＯＰ伝送パケットが２６２に出力されると、新たな１０ビットのトレースパケットが、２６３で利用可能になるまで、伝送は中断し、これにより、伝送パケットを作るために、このトレースパケットの最初の４ビット（ビット０から３）は、組み込まれたＮＯＰパケットの最後の２ビットと組み合わされる。従って、新しいトレースパケットのビット４から９が、伝送パケットとして２６４に出力され、その後、次のトレースパケットのビット０から５が、伝送パケットとして２６５に出力される。
【００９８】
図２７は、有効なトレーズパケットが伝送のために利用可能とならない間に、ＮＯＰが伝送される場合の、本発明による他の方法を示すものである。図２７の伝送サイクルの最初の３サイクルは、図２６に示した最初の３つの伝送サイクルと同一である。しかし、図２７では、次の有効な伝送パケットが図２７の２７１に到着するまで、ＮＯＰ伝送パケットが、順次、出力され続けている。図２７に示す、サイクル２７１と、それに続く複数のサイクルは、図２６のサイクル２６３とそれに続く複数のサイクルと同一である。
【００９９】
以上のように、本発明の実施例を説明したが、本実施例は、本発明の範囲を限定するものではなく、様々な様態での実施が可能である。
【０１００】
本出願は、２０００年３月２日付け仮出願６０／１８６，３２６（Ｄｏｃｋｅｔ  ＴＩ−３０５２６）、および米国出願番号０９／５１５，０９３として２０００年３月２日付けで最初に出願され、その後２０００年８月１８日に許可された請願により変更され仮出願６０／２１９，３４０（Ｄｏｃｋｅｔ  ＴＩ−３０４９８）のコペンディングのアメリカ特許法第１１９（ｅ）（１）に基づく優先権を主張している。
【符号の説明】
【０１０１】
１０  ホスト
１２  エミュレータ
１４  ＤＳＰ
１５  通信リンク
１６  ターゲットシステム
１７  ターゲットケーブル
【図１】
0005519060.tif 000004
【図２】
0005519060.tif 000005
【図３】
0005519060.tif 000006
【図４】
0005519060.tif 000007
【図５】
0005519060.tif 000008
【図６】
0005519060.tif 000009
【図７】
0005519060.tif 000010
【図８】
0005519060.tif 000011
【図９】
0005519060.tif 000012
【図１０】
0005519060.tif 000013
【図１１】
0005519060.tif 000014
【図１２】
0005519060.tif 000015
【図１３】
0005519060.tif 000016
【図１４】
0005519060.tif 000017
【図１５】
0005519060.tif 000018
【図１６】
0005519060.tif 000019
【図１７】
0005519060.tif 000020
【図１８】
0005519060.tif 000021
【図１９】
0005519060.tif 000022
【図２０】
0005519060.tif 000023
【図２１】
0005519060.tif 000024
【図２２】
0005519060.tif 000025
【図２３】
0005519060.tif 000026
【図２４】
0005519060.tif 000027
【図２５】
0005519060.tif 000028
【図２６】
0005519060.tif 000029
【図２７】
0005519060.tif 000030