(57)【特許請求の範囲】
【請求項１】
オン−チップ機能回路と、
使用可能にされるとき前記オン−チップ機能回路を監視するように接続される複数の診断ユニットであって、各々異なる診断機能を有し、前記オン−チップ機能回路からの信号と各診断ユニットの各診断レジスタ内に保持されるデータとを比較して各々異なるトリガ状態を検出する複数の診断ユニットと、
前記複数の診断ユニットのうちの１つからトリガ状態を示す信号を受信するように配列され、前記複数の診断ユニットの各々異なるトリガ状態の所定のシーケンスが検出されるように前記診断ユニットの別の１つがトリガ状態を監視するよう使用可能とするため前記診断ユニットの別の１つにイネーブル信号を開始するトリガシーケンス制御回路と、
を含んで構成された単一チップ集積回路装置。
【請求項２】
前記トリガシーケンス制御回路が各診断ユニットに接続される制御ユニットを含んで構成される請求項１記載の単一チップ集積回路装置。
【請求項３】
前記トリガシーケンス制御回路が前記診断ユニットとそれぞれ接続し共通のトリガバスと接続する複数の分散型回路を含んで構成される請求項１記載の単一チップ集積回路装置。
【請求項４】
前記機能回路がＣＰＵである請求項１から３のいずれか１つに記載の単一チップ集積回路装置。
【請求項５】
前記診断ユニットの１つが、ブレークポイントアドレスを保持し、ＣＰＵによって実行されるべき次の命令がブレークポイントアドレスとマッチした時にＣＰＵの次の動作を中断する信号を出すように動作可能であるブレークポイントユニットであり、前記診断機能の一つが、ＣＰＵによって実行されるべき次の命令がブレークポイントアドレスとマッチするか否かを診断する機能である請求項４記載の単一チップ集積回路装置。
【請求項６】
前記診断ユニットの１つが、それぞれ上側ブレークポイントアドレスと下側ブレークポイントアドレスとを保持して、その間のＣＰＵによる通常作動が中断される第１及び第２ブレークポイントレジスタを有するブレークポイントレンジユニットであり、前記ブレークポイントレンジユニットは実行される次の命令が下側ブレークポイントアドレスと上側ブレークポイントアドレスとの間にある時にＣＰＵの通常作動を中断するブレークポイント信号を出すように動作可能であり、前記診断機能の一つが、実行される次の命令が下側ブレークポイントアドレスと上側ブレークポイントアドレスとの間にあるか否かを診断する機能である請求項４または５記載の単一チップ集積回路装置。
【請求項７】
前記診断ユニットの１つが、ＣＰＵによって実行されるアドレスを監視して、前記アドレス内の不連続に応じて、前記アドレスのうち選択されたアドレスをトレースストレージ位置に記憶させる命令トレースコントローラであり、前記診断機能の一つが、ＣＰＵによって実行されるアドレス内の不連続を診断する機能である請求項４、５または６記載の単一チップ集積回路装置。
【請求項８】
複数の診断ユニットが、オン−チップ機能回路を監視し、
前記複数の診断ユニットが、前記オン−チップ機能回路からの信号と記憶されたデータとを比較することであって、
第一の所定の診断機能を有する第一の診断ユニットが、第一のトリガ状態を検出し、
第一の診断ユニットが、前記第一のトリガ状態を示す信号をトリガシーケンス制御回路に送信し、
前記トリガシーケンス制御回路が、第一の診断ユニットの第一トリガ状態を検出するとき、第二の異なる所定の診断機能を有する第二の診断ユニットにイネーブル信号を開始し、
前記第二の診断ユニットが、第二の異なるトリガ状態を検出する、
ことを含む、前記比較すること、
前記トリガシーケンス制御回路が、前記異なる複数の診断ユニットの各々異なるトリガ状態の所定のシーケンスが検出されたとき、トリガメッセージを発生する、
ことを含んで構成されるトリガシーケンシング制御方法。
【請求項９】
前記比較が、ブレークポイントアドレスを保持し、ＣＰＵによって実行されるべき次の命令がブレークポイントアドレスとマッチするとＣＰＵの通常作動を中断する信号を出すように動作可能なブレークポイントユニットによって実行され、前記複数の診断ユニットの一つが前記ブレークポイントユニットである請求項８記載のトリガシーケンシング制御方法。
【請求項１０】
前記比較が、それぞれ上側ブレークポイントアドレスと下側ブレークポイントアドレスとを保持して、その間のＣＰＵによる通常作動が中断される第１及び第２ブレークポイントレジスタを有するブレークポイントレンジユニットによって実行され、前記ブレークポイントレンジユニットは実行される次の命令が下側ブレークポイントアドレスと上側ブレークポイントアドレスとの間にある時にＣＰＵの通常作動を中断するブレークポイント信号を出すように動作可能であり、前記複数の診断ユニットの一つが前記ブレークポイントレンジユニットである請求項８または９記載のトリガシーケンシング制御方法。
【請求項１１】
前記比較が、ＣＰＵによって実行されるアドレスを監視して、前記アドレス内の不連続に応じて、前記アドレスのうちの選択されたアドレスをトレースストレージ位置で記憶させる命令トレースコントローラによって実行され、前記複数の診断ユニットの一つが前記命令トレースコントローラである請求項８、９または１０に記載のトリガシーケンシング制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はトリガシーケンシングの提供に関する。特に、本発明はトリガシーケンシングが実行される単一チップ集積回路装置に関する。
【０００２】
【従来の技術及び発明が解決しようとする課題】
回路ボードレベルで利用可能な信号がロジック状態アナライザ装置によって監視できる。このようなロジック状態アナライザ装置は、ボードレベルで利用可能な数百の信号を監視できる。これらの信号は、メモリバス等の機能の部分であり、ボードレベルでの解析のために特に生成された信号、または、チップの外部ピン接続点として作られた信号でよい。ロジック状態アナライザは、トリガとして監視される選択された数の信号上の特定パターンを処理することができる。ロジック状態アナライザは、トリガが発生したことに気づいただけであっても、このトリガを使用して任意の動作を行うことができる。いくつかのトリガを考慮して、ロジック状態アナライザは、また、ボードレベルに複素シーケンスのトリガ事象を構築できる。
【０００３】
しかしながら、ロジック状態アナライザはボードレベル信号の監視にのみ制限され、チップ内に埋没している信号へのアクセスができない。
【０００４】
【課題を解決するための手段】
本発明によれば、
オン−チップ機能回路と、
前記オン−チップ機能回路を監視するように接続される複数の診断ユニットであって、前記オン−チップ機能回路からの信号と診断ユニットの各診断レジスタ内に保持されるデータとを比較して各トリガ状態を検出する複数の診断ユニットと、
前記トリガ状態を受信するように配列され、前記トリガ状態の所定のシーケンスが検出された時にトリガメッセージを開始するトリガシーケンス制御回路と、を含んで構成された単一チップ集積回路装置が提供される。
【０００５】
このように、トリガシーケンシングコントローラが、任意の数のオン−チップ診断ブロックとともにチップ上に組み込まれる。診断ブロックは、オン−チップ信号の数を観察し、これらを任意の方法でプログラム可能な内容を有するレジスタと比較することによって、任意のトリガを検出するのに使用できる任意のユニットでよい。
【０００６】
１つの実施の形態において、トリガシーケンシングコントローラの機能が分散されて、複数の診断ユニットを接続するトリガバスを備えた前記複数の診断ユニットのそれぞれに併合される。これにより、オン−チップ集積回路に適したモジュールによる容易に拡張可能なアプローチができる。
モジュールから構成されるトリガシーケンス制御回路は調整可能であり、いずれのモジュールも、他のモジュールより大きな制御力或いは支配力を持たず、必要に応じて付加モジュールを追加できる。
【０００７】
トリガシーケンス制御回路は、結果として結合された機能が、任意の診断目的のために使用される結果としての任意のトリガ事象をもたらす複素シーケンスのトリガ事象を構築する機能なるように、同様の能力を有する他のブロックと対話できる。
トリガシーケンス制御回路は、一定の診断回路とそれぞれ接続し共通のトリガバスと接続する複数の分散型回路を含んで構成される。
【０００８】
前記診断ユニットの１つは、ブレークポイントアドレスを保持し、ＣＰＵによって実行されるべき次の命令がブレークポイントアドレスとマッチするとＣＰＵの通常作動を中断する信号を出すように動作可能なブレークポイントユニットでよい。
診断ユニットの１つは、それぞれ上側ブレークポイントアドレスと下側ブレークポイントアドレスを保持して、その間のＣＰＵによる通常作動を中断できる第１及び第２のブレークポイントレジスタを有するブレークポイントレンジユニットでよく、このブレークポイントレンジユニットは、実行される次の命令が下側ブレークポイントアドレスと上側ブレークポイントアドレスとの間にある時にＣＰＵの通常作動を中断するブレークポイント信号を出すように作動可能である。
【０００９】
診断ユニットは、ＣＰＵによって実行されるアドレスを監視して、前記アドレスのうち選択されたアドレスを前記アドレス内の不連続に依存するトレースストレージ位置に記憶させる命令トレースコントローラを含んで構成できる。
【００１０】
【発明の実施の形態】
本発明を更に理解し、どのように実施するかを添付の図面を参照して説明する。
図１は、テストアクセスポート（ＴＡＰ）コントローラ４とチップ境界スキャンチェイン１０とを有する集積回路２を概略的に示す。ＴＡＰコントローラ４は、ライン１４上のテストクロック信号ＴＣＫと、ライン１６上のテストモード選択信号ＴＭＳと、ライン１８上のテストデータ入力信号ＴＤＩと、ライン２２上のテストリセット入力信号ＴＲＳＴ＊と、をオフ−チップから受信する。ＴＡＰコントローラ４は、ライン２０上のテストデータ出力信号ＴＤＯをオフ−チップに出力する。ＴＡＰコントローラ４はまた、ライン１２上の装置識別子信号ＤＥＶＩＣＥＩＤを受信する。図１において、装置識別子信号ＤＥＶＩＣＥＩＤは、集積回路内でアースに接続された信号ライン１２として示される。信号ライン１２はマルチビットワイヤでよく、また、装置識別子信号ＤＥＶＩＣＥＩＤは集積回路上またはオフ−チップ上のいずれかから発生できる。信号ライン１２がマルチビットワイヤの場合には、各ビットがチップ上の低レベルロジックまたは高レベルロジックのいずれかに接続される。ＴＡＰコントローラ４は、ライン２８上のスキャンデータ入力信号ＳＣＡＮＩＮと、ライン３８上のテストクロック信号ＴＥＳＴＣＬＫと、ライン２４上のスキャンテストモードＳＣＡＮＭＯＤＥの選択を示す信号と、をライン２６上の診断モードＤＩＡＧＭＯＤＥの選択を示す信号と、をオン−チップ回路に出力する。チップ境界スキャンチェイン１０は、ライン２８上のスキャンデータ入力信号ＳＣＡＮＩＮと、ライン２４上のスキャンテストモード信号ＳＣＡＮＭＯＤＥと、を入力として受信し、ライン３４上のスキャンデータ出力信号ＳＣＡＮＯＵＴをＴＡＰコントローラ４に出力する。本発明では、ライン２８上のスキャンデータ入力信号ＳＣＡＮＩＮはまた、後述するように、診断のためにオン−チップソース／宛先ロジックに接続される。本発明では、ソース／宛先ロジックは、入力信号ＤＩＡＧＳＣＡＮＯＵＴをライン３６上でＴＡＰコントローラ４に供給する。
【００１１】
以下に詳細に説明する図５は、ソース／宛先ロジックを構成する構成要素を示す。ソース／宛先ロジックは、少なくともオン−チップバスシステムに接続されるプロセッサであり、オン−チップバスシステムはこれに接続されたオン−チップメモリを有する。オフ−チップメモリもまたこのようなバスシステムに直接接続できる。オン−チップソース／宛先ロジックはまた、ＤＭＡエンジン又はＥＭＩインタフェースを備えた他の機能回路を持つ。
【００１２】
ＴＡＰコントローラ４は、標準演算に必要であり且つ本発明で要求される回路ブロックを備えて図２に概略的に示される。図２を参照すると、ＴＡＰコントローラ４はその基本形式において、ステートマシン５０と、ＩＤレジスタ４２と、命令レジスタ４４と、命令デコーダ４６と、バイパスラッチ４８と、データマルチプレクサ５２と、命令／データマルチプレクサ５４と、ラッチ５６と、インバータ６０と、を含んで構成される。命令レジスタ４４は、ライン１８上のテストデータ入力信号ＴＤＩを受信し、バス６２への並列命令とライン７６上への直列出力とを発生し、また、ライン８２上の命令制御入力信号を受信する。命令デコーダ４６は、バス６２上の並列命令とライン８４上のデコーダ制御入力信号とを受信して、信号ＳＣＡＮＭＯＤＥ及び信号ＤＩＡＧＭＯＤＥをライン２４及び２６それぞれに、また、ライン７０上に並列データマルチプレクサ選択信号を発生する。バイパスラッチ４８は、ライン１８上のテストデータ入力信号ＴＤＩを受信し、ライン７２上に出力信号を発生する。ＩＤレジスタ４２は、ライン１２上の並列の信号ＤＥＶＩＣＥＩＤを受信し、ライン６８上に直列の装置識別子出力信号を発生する。データマルチプレクサ５２は、ライン６８上のＩＤレジスタ４２の出力信号と、ライン７２上のバイパスラッチ４８の出力信号と、ライン３４上の信号ＳＣＡＮＯＵＴと、ライン３６上の信号ＤＩＡＧＳＣＡＮＯＵＴと、ライン７０上のデータマルチプレクサ選択信号と、を受信する。データマルチプレクサ５２は、ライン７４上に出力を発生する。命令／データマルチプレクサ５４は、ライン７６上の直列出力と、ライン７４上のデータマルチプレクサの出力と、ライン７８上の命令／データマルチプレクサ選択信号と、を受信する。命令／データマルチプレクサ５４は、ライン８０上に出力を発生する。ラッチ５６は、ライン８０上の命令／データマルチプレクサ５４の出力を受信し、ライン２０上にテストデータ出力信号ＴＤＯを発生する。ステートマシン５０は、ライン１６上の信号ＴＭＳと、ライン２２上の信号ＴＲＳＴ＊と、を受信する。ステートマシン５０は、ライン７８への命令／データマルチプレクサ選択信号と、ライン８２への命令制御入力信号と、ライン８４へのデコーダ制御入力信号と、を発生する。ＩＤレジスタ４２、命令レジスタ４４、命令デコーダ４６、バイパスラッチ４８、ステートマシン５０、及びデータコンバータ５７は、それぞれライン１４上のテストクロック信号ＴＣＫを受信する。ラッチ５６は、ライン６４上のインバータ６０を介して反転されたテストクロック信号ＴＣＫを受信する。テストクロック信号ＴＣＫとテストデータ入力信号ＴＤＩは、ライン３８の出力ＴＥＳＴＣＬＫ及びライン２８の出力ＳＣＡＮＩＮとしてそれぞれ直接接続される。
【００１３】
集積回路２のテストを実行する際のＴＡＰコントローラ４の作動は、ＩＥＥＥ１１４９．１−１９９０に詳細に説明されている。本質的に、有限長さのスキャンチェインは、チップ境界スキャンチェイン１０によって形成されるチェインのように集積回路上で形成される。
ＴＡＰコントローラ４は、ＩＥＥＥ基準１１４９．１−１９９０によって定義される同期有限ステートマシンである。ＩＥＥＥ基準１１４９．１−１９９０は、集積回路に含むことのできるテストロジックを定義して、集積回路間の相互接続のテスト、集積回路自体のテスト、集積回路の通常作動中における回路動作の監視又は修正の標準的な方法を提供する。
【００１４】
集積回路２の通常作動中、ＴＡＰコントローラ４は、リセット状態にあり、その入力と出力は全て非作動である。ＩＥＥＥ基準１１４９．１−１９９０によるテストアクセスポートを使用したテストを実行する場合、ＴＡＰコントローラは前記基準の定義に従って作動する。このようなテストモードでは、ＴＡＰコントローラ４は少なくとも１つの作動のテストモードを選択できる。１つの可能なテストモードはスキャンテストモードであり、これはライン２４上の信号ＳＣＡＮＭＯＤＥを設定することにより選択される。スキャンテストモードでは、集積回路２上のスキャンチェインがテストのために選択される。本実施形態において、チップ境界スキャンチェイン１０が信号ＳＣＡＮＭＯＤＥによって選択される。このようなスキャンテストは、単にスキャンチェインの一端にデータを入力し、同一データがスキャンチェインの他端で出力されることを確認するためにチェックをすることを含む。或いは、オン−チップの機能ロジックに入力されるデータをスキャンし、１以上のクロックサイクルでチップを機能的にクロックして、機能ロジックの出力をスキャンするような、より複雑なスキャン操作を実行できる。オン−チップの任意の接続点または回路をテスト用に接続してスキャンチェインを形成できる。チップ境界スキャンチェイン１０は、テストモードで制御されて集積回路２の全ての入力／出力ポートを接続する一連のフリップフロップである。このようなスキャンテスティングの完全な理解はＩＥＥＥ基準１１４９．１−１９９０を参照することから求められる。スキャンテスティングをどのように実行するかの特定の例として、ヨーロッパ特許出願公開第０６９８８９０号、第０７０２２３９号、第０７０２２４０号、第０７０２２４１号、第０７０２２４２号、第０７０２２４３号、第０７０９６８８号が挙げられる。
【００１５】
ＩＥＥＥ基準１１４９．１−１９９０のテストアクセスポートを使用する公知のテストモードの特徴は、スキャンチェインが有限の長さか又は閉ループであること、また、テストデータ出力信号ＴＤＯがテストデータ入力信号ＴＤＩに依存するとともに、テストデータ入力信号との時間関係を持つことである。
本実施形態では、作動の診断モードは、ＩＥＥＥ基準１１４９．１−１９９０と一致するオン−チップのソース／宛先ロジックの診断手順を実行するために提供される。このような診断テストモードでは、テストデータ出力信号ＴＤＯはテストデータ入力信号ＴＤＩに依存しないので、このテストデータ入力信号との時間関係を持たない。テストデータ入力信号ＴＤＩとテストデータ出力信号ＴＤＯとの間のチェインは、無限の長さまたは開ループであると考えられる。診断モードでは、ＴＡＰコントローラ４は、全ての正常な機能を提供しながら、付加的に全二重の、フロー制御された、束縛されない直列データを、これがデータの形式であるとは気づかずに伝える転送エージェントとして作動する。逆に、ＴＡＰコントローラ４は、通常はどんなフロー制御もせずに選択されたテストチェインを通過する単一のデータストリームを処理する。
【００１６】
テストモードにおけるＴＡＰコントローラ４の作動の大要を、図１及び図２を参照して説明する。図２においては、信号ＳＣＡＮＩＮはテストデータ入力信号ＴＤＩに直接接続しているが、一定の状況では、信号ＳＣＡＮＩＮは信号ＴＤＩの修正バージョンであってもよい。同様に、テストクロック信号ＴＥＳＴＣＬＫはテストクロック信号ＴＣＫに直接接続しているが、一定の状況では、信号ＴＣＫの修正バージョンであることが要求される。
【００１７】
作動のテストモードでは、テストデータ入力信号ＴＤＩとテストモード選択信号ＴＭＳは、テストクロック信号ＴＣＫの制御下でＴＡＰコントローラ４に直列形式で供給される。ステートマシン５０は、テストクロック信号ＴＣＫの各動作エッジでテストモード選択信号ＴＭＳの値に作用して、ＩＥＥＥ基準１１４９．１−１９９０によって定義されるようにその状態を反復させる。テストリセット信号ＴＲＳＴ＊は、ＩＥＥＥ基準１１４９．１−１９９０に応じた低ロジック状態にある時、ＴＡＰコントローラ４の非同期初期化を提供する。
【００１８】
命令レジスタ４４は、テストクロック信号ＴＣＫによってクロックされて、ステートマシン５０からのライン８２上の命令制御入力信号の制御下でテストデータ入力信号ＴＤＩから直列形式で命令をロードする。命令が、命令レジスタ４４内に直列にロードされると、この命令は、ステートマシン５０からのライン８４上のデコーダ制御入力信号の制御下で、命令バス６２を経由して命令デコーダ４６に並列に転送される。ここで記憶された命令に従って、命令デコーダ４６は、実行されるのがスキャンテストか或いは診断テストかに応じて信号ＳＣＡＮＭＯＤＥまたは信号ＤＩＡＧＭＯＤＥのいずれか一方を設定する。命令レジスタ４４及び命令デコーダ４６のローディングは、ＩＥＥＥ基準１１４９．１−１９９０に従ってステートマシン５０により制御される。命令デコーダ４６によってデコードされた命令に応じて、また、以下に更に説明するように、命令デコーダ４６のライン７０上の並列出力は、データマルチプレクサ５２を制御して、その入力の１つを出力ライン７４に接続する。同様に、ステートマシン５０のライン７８上の出力は、命令／データマルチプレクサ５２を制御して、その入力の１つをライン８０上の出力に接続する。
【００１９】
ＩＤレジスタ４２は、ライン１２上の並列の信号ＤＥＶＩＣＥＩＤを受信する。ＩＤレジスタ４２は、チップ識別子を記憶し、そのチップ識別子は、ＩＤレジスタ４２からライン６８を介してテストデータ出力信号ＴＤＯにスキャンされる。チップ識別子は集積回路２を識別する。
一つの作動モードにおいて、命令デコーダ４６によってデコードされた命令は、マルチプレクサ５２が制御されてライン６８上のその入力をライン７４上のその出力に接続し、また、命令／データマルチプレクサ５４が制御されてライン７４上のその入力をライン８０上のその出力に接続する場合に、装置の一致を単に出力するものでよい。そして、装置の一致は信号ＴＤＯとして直列に出力される。
【００２０】
作動の別のモードでは、ライン７６上の直列出力が命令／データマルチプレクサ５４によりライン８０に接続される場合に、テストデータ出力信号ＴＤＯに現行命令を出力することが要求される。
テスト作動の一つのモードでは、特定の集積回路２のＴＡＰコントローラ４がテストデータ入力信号ＴＤＩをテストデータ出力信号ＴＤＯに接続することだけが要求される。この作動モードでは、データマルチプレクサ５２が制御されてライン７２上のバイパスラッチ４８の出力をライン７４上の出力に接続し、命令／データマルチプレクサ５４が制御されてライン７４をライン８０上の出力に接続する。このように、テストデータ入力信号ＴＤＩは、ラッチ５６を介してテストデータ出力信号ＴＤＯに接続される。
【００２１】
ラッチ５６は単に、テストデータ出力信号ＴＤＯの時間制御をして、この信号がテストクロック信号ＴＣＫの立ち下がりエッジに同期できるようにするためにだけ設けられたフリップフロップである。
実行されるテストモードがスキャンテストモードの場合、命令デコーダ４６が信号ＳＣＡＮＭＯＤＥを設定する。データマルチプレクサ５２が命令デコーダ４６により制御されて、信号ＳＣＡＮＯＵＴを出力ライン７４に接続する。命令／データマルチプレクサ５４もまた制御されてライン７４をライン８０に接続して、信号ＳＣＡＮＯＵＴをテストデータ出力信号ＴＤＯとして出力する。このようなスキャンテストモード中では、テストデータは、テストデータ入力信号ＴＤＩと直接接続する信号ＳＣＡＮＩＮ上の選択されたスキャンチェイン内にスキャンされる。スキャンテスティング、特に境界スキャンテスティングは、ＩＥＥＥ基準１１４９．１−１９９０に十分に説明されている。実行されるテストに応じた付加制御信号が選択スキャンチェインに供給されて必要なテスト作動を実行する必要がある。
【００２２】
本実施形態では、命令デコーダ４６がライン２６上の信号ＤＩＡＧＭＯＤＥを設定する場合に診断モードに入る。更に、データマルチプレクサ５２が制御されてライン３６上の信号ＤＩＡＧＳＣＡＮＯＵＴをライン７４上の出力に接続する。これは、命令／データマルチプレクサ５４を介してライン８０に、またラッチ５６を介してテストデータ出力信号ＴＤＯに順次接続される。
【００２３】
診断モードにおいて、テストデータ入力信号ＴＤＩとテストデータ出力信号ＴＤＯとの間の直列データフローは、スキャンテストモードに対抗するものとしての無限の長さのシフトレジスタを通ると考えられる。このモードにおいて直列データフローは有限の長さのシフトレジスタ（シフトレジスタチェイン）を通る。診断モードでは、テストデータ入力信号ＴＤＩとしてテストアクセスポート内にシフトされた一連のビットパターンは、テストデータ出力信号としてテストアクセスポートの外にシフトされた一連のビットパターンに反映されない。診断データの通信は、ホストからターゲットへ及びターゲットからホストへ（読み出し及び書き込み）のメモリアクセス要求、ＣＰＵレジスタの状態情報、メモリアクセス要求に応答してホストメモリまたはターゲットメモリから読み出されたデータ、ＣＰＵレジスタ内にロードするための状態データ、及びターゲットＣＰＵによってアクセスされるメモリアドレスに関する情報を含む。このように、診断モードは、データの非割り込みモニタリングまたはデータの割り込みローディングを含む。
【００２４】
診断モードにおいて、テストアクセスポート内にシフトされた直列データは、任意の所望の手段、例えば、データチャンクを表す開始ビット及び停止ビットでエンコードできる単一方向直列データストリームである。同様に、テストアクセスポートを介してシフトアウトされたデータは、任意の所望の手段、例えば、データチャンクを表す開始ビット及び停止ビットでエンコードできる１方向直列データストリームである。通常、シフトインされたデータ及びシフトアウトされたデータは、同様の方法でエンコードされる。１方向入力及び出力データストリームは、全二重の２方向直列通信を可能にするために同時に使用される。一連の直列データビットは情報バイトを構成できる。
【００２５】
本実施形態において、通常テストモードに加えて作動の診断モードが提供されると、集積回路２には、図３に示すように、ＴＡＰコントローラ４とオン−チップソース／宛先ロジックとの間をインタフェースするデータアダプタ９０が備えられる。データアダプタ９０は、ＴＡＰコントローラ４からの入力として、ライン２８上のスキャンデータ入力信号ＳＣＡＮＩＮと、ライン３８上のテストクロック信号ＴＥＳＴＣＬＫと、ライン２６上の診断モードＤＩＡＧＭＯＤＥの選択を示す信号と、を受信する。データアダプタ９０は、ＴＡＰコントローラ４にライン３６上の信号ＤＩＡＧＳＣＡＮＯＵＴを出力する。データアダプタ９０は、ライン９２上の送信データバスＴＸＤＡＴＡのオン−チップソース／宛先ロジックからデータを受信し、ライン９４上の受信データバスＲＸＤＡＴＡのオン−チップソース／宛先ロジックにデータを出力する。データアダプタ９０は、ライン９６上の送信有効信号ＴＸＶＡＬＩＤを入力し、ライン９８上の送信肯定応答信号ＴＸＡＣＫを出力する。両信号は、送信データバスＴＸＤＡＴＡに関連する制御信号である。データアダプタ９０は、ライン１００上の受信有効信号ＲＸＶＡＬＩＤを出力し、ライン１０２上の受信肯定応答信号ＲＸＡＣＫを入力する。両信号は、受信データバスＲＸＤＡＴＡに関連する制御信号である。
【００２６】
データアダプタ９０は、受信シフトレジスタ１１４と、受信バッファ１１６と、受信制御ロジック１１０と、受信フロー制御状態フリップフロップ１２０と、送信フロー制御状態フリップフロップ１２４と、送信シフトレジスタ１１８と、送信制御ロジック１１２と、を含んで構成される。受信シフトレジスタ１１４は、ライン２８上の信号ＳＣＡＮＩＮと受信制御ロジック１１０からのライン１２６上の制御信号とを受信し、バス１３０上に並列データを出力して受信バッファ１１６への入力を形成する。受信バッファ１１６は、更に受信制御ロジック１１０からのライン１２８上の制御信号を受信し、ライン９４上に受信データバス信号ＲＸＤＡＴＡを発生する。受信制御ロジック１１０は、更にライン１００上に信号ＲＸＶＡＬＩＤを発生し、ライン１０２上の信号ＲＸＡＣＫを受信し、ライン２６上の信号ＤＩＡＧＭＯＤＥを受信し、ライン１３４及び１３２上に信号ＳＴＡＲＴＤＡＴＡ及びＡＣＫＲＸをそれぞれ発生する。受信フロー制御状態フリップフロップ１２０は、信号ＳＴＡＲＴＤＡＴＡとライン１３６上の信号ＴＸＳＥＮＤＡＣＫとを受信し、送信制御ロジック１１２への信号ＲＸＳＥＮＤＡＣＫをライン１４２上に出力する。送信フロー制御状態フリップフロップ１２４は、信号ＡＣＫＲＸとライン１３８上の信号ＴＸＳＥＮＤＢＹＴＥとを受信し、送信制御ロジック１１２への信号ＴＸＷＡＩＴＡＣＫをライン１４０上に出力する。送信制御ロジック１１２は、更にライン２６上の信号ＤＩＡＧＭＯＤＥとライン９６上の信号ＴＸＶＡＬＩＤとを受信し、信号ＴＸＡＣＫをライン９８上に、送信シフトレジスタ１１８への制御信号をライン１４４上に、並列信号ＳＥＲＣＯＮＴを送信シフトレジスタ１１８に出力する。送信シフトレジスタ１１８は、更にライン９２上の並列データバスＴＸＤＡＴＡを受信し、ライン３６上に信号ＤＩＡＧＳＣＡＮＯＵＴを出力する。
【００２７】
図にはその接続は示されてはいないが、データアダプタ９０には任意にオン−チップシステムクロックからの入力が供給される。データアダプタとオン−チップソース／宛先ロジックとの間のデータ及び制御信号が、オン−チップソース／宛先ロジックのクロックと同期する必要がある場合には、システムクロックは同期実行のために使用できる。データアダプタ９０は、信号ＴＥＳＴＣＬＫ（信号ＴＣＫから引き出された）によってクロックされたＴＡＰコントローラからソース／宛先ロジックの内部機能のクロック環境まで、また、ソース／宛先ロジックのクロック環境から信号ＴＥＳＴＣＬＫによってクロックされたＴＡＰコントローラまでの直列データの同期を実行する。図には示されていないが、ＴＡＰコントローラ４は任意にスキャンイネーブル信号をデータアダプタ９０に供給してもよい。このようなスキャンイネーブル信号は、ＴＡＰコントローラがテストデータ出力信号ＴＤＯへのデータ出力用スキャンパスを選択したことを示す。
【００２８】
データアダプタ９０は、ＴＡＰコントローラ４を介したオフ−チップからの１方向直列データをオン−チップソース／宛先ロジックで使用するのにより適したフォーマットに変換する。逆に、データアダプタ９０は、オン−チップソース／宛先ロジックにより供給されるデータフォーマットを１方向直列データに変換する。好ましい実施形態においては、並列８ビット又はバイトの形式でデータをオン−チップソース／宛先ロジックに供給するのが望ましい。しかしながら、特に受信データバスＲＸＤＡＴＡ及び送信データバスＴＸＢＵＳは、１バイト幅よりも１ビット幅のみでもよい。また、受信及び送信データバスＲＸＢＵＳとＴＸＢＵＳは、複数バイト幅のバスであってもよい。
【００２９】
データアダプタ９０は、受信及び送信の両データの「フロー制御」の機能を実行する。直列データは、受信端部がこのデータを受信できる容量を有してデータ損失または低下を防止する時は、ＴＡＰコントローラ４を（どちらの方向でも）単に通過するだけである。受信端部がより多くのデータを受信する用意があることの通信は、そのような情報を反対方向に送信することにより実行される。これはフロー制御プロトコルを構成する。本実施形態におけるデータアダプタ９０は、オン−チップソース／宛先ロジックとの通信のために１方向直列データの並列フォーマットへの変換を提供する。このように、フロー制御プロトコルはまた、データアダプタ９０とオン−チップソース／宛先ロジックとの間で必要である。
【００３０】
このように、このフロー制御は２つの境界、ＴＡＰコントローラ４とデータアダプタ９０との間の境界、及びデータアダプタ９０とこのデータアダプタ９０がインタフェースするオン−チップソース／宛先ロジックとの間の境界、を越えて実行される。
ＴＡＰコントローラ４とデータアダプタ９０との間のフロー制御を提供するには、テストデータ入力信号ＴＤＩライン及びテストデータ出力信号ライン上の１方向データが、図４(a) に示されるような開始及び停止ビットでエンコードされる。ビットフロー制御プロトコルは、２つの開始ビットＳ１及びＳ２、１つの停止ビットＥ１で信号を送るゼロ復帰方式（ＲＴＺ）である。開始ビットと停止ビットとの間にはデータのバイトが含まれる。このフォーマットの直列データは、ＴＡＰコントローラ４のテストデータ入力信号ＴＤＩからライン２８上の信号ＳＣＡＮＩＮまで通過してデータアダプタ９０に入力される。データアダプタ９０の受信制御ロジック１１０は、直列データ信号ＳＣＡＮＩＮを受信する。受信制御信号が２つの連続した直列ビットを開始ビットＳ１及びＳ２として認識すると、受信シフトレジスタ１１４がライン１２６上で制御されて、データバイトを内部で形成する次の連続した８ビットを直列にロードする。
【００３１】
２つの連続した開始ビットＳ１及びＳ２に応答して、受信制御ロジック１１０はまた、受信フロー制御状態フリップフロップ１２０を設定するライン１３４上の信号ＳＴＡＲＴＤＡＴＡを設定する。設定されると、受信フロー制御状態フリップフロップ１２０は、順次、ライン１４２上の信号ＲＸＳＥＮＤＡＣＫを設定し、この信号により、送信制御ロジック１１２は、図４(b) に示される形式でテストデータ出力信号ＴＤＯに肯定応答信号を送る。この肯定応答信号は、開始肯定応答ビットＡＣＫと停止ビットＥ１のみを含んで構成される。これらのビットは、ライン１４４上の信号の制御下でライン１５０上の信号ＳＥＲＣＯＮＴとして送信シフトレジスタ１１８に並列に直接ロードされ、信号ＤＩＡＧＳＣＡＮＯＵＴとして、図４(b) の直列形式で送信シフトレジスタ１１８から出力される。肯定応答信号が送られると、送信制御ロジック１１２は、ライン１３６上に信号ＴＸＳＥＮＤＡＣＫを設定して、受信フロー制御状態フリップフロップをリセットし、信号ＲＸＳＥＮＤＡＣＫをリセットする。
【００３２】
本実施形態で使用されるフロー制御プロトコルによれば、信号ＳＥＲＣＯＮＴは、開始ビットＳ１とＳ２及び停止ビットＥ１とを送信シフトレジスタ１１８内に直接ロードするのを許可する３ビット信号である。ＴＡＰコントローラ４を介して出力され、オン−チップソース／宛先ロジックによって示されるデータバイトが送信データバスＴＸＤＡＴＡ上に現れると、このデータバイトは送信制御ロジック１１２の制御下で送信シフトレジスタ１１８内に並列にロードされ、送信制御ロジック１１２は、図４(a) に示されるフォーマットの信号を直列にシフトする前に、信号ＳＥＲＣＯＮＴを形成する開始ビットＳ１、Ｓ２及び停止ビットＥ１を送信シフトレジスタ内の適宜なビット位置に直接ロードする。肯定応答信号を送ると、送信制御ロジック１１２は単一の開始ビットと停止ビットを送信シフトレジスタ１１８内に直接ロードしてから、それらを全て直列にシフトする。
【００３３】
受信制御ロジック１１０が信号ＳＣＡＮＩＮの停止ビットＥ１を受信すると、データバイトは受信シフトレジスタ１１４内にロードされ、受信制御ロジック１１０の制御下でデータバイトはバス１３０上を受信シフトレジスタ１１４から受信バッファ１１６まで転送される。データバイトが受信バッファ１１６内にロードされると、このデータバイトは、ライン１００上の信号ＲＸＶＡＬＩＤも設定する受信制御ロジック１１０の制御下でバスＲＸＤＡＴＡ上に出力される。信号ＲＸＶＡＬＩＤに応答して、オン−チップソース／宛先ロジックはＲＸＢＵＳ上のデータバイトを受け入れ、この受信をライン１０２上の信号ＲＸＡＣＫを設定することによって示す。信号ＲＸＡＣＫに応答して、受信制御ロジック１１０は、信号ＲＸＶＡＬＩＤをリセットし、受信シフトレジスタ１１４内に別のデータバイトがある場合は、信号ＲＡＶＡＬＩＤを再度設定する前にこれを受信バッファ１１６に転送する。
【００３４】
受信バッファ１１６が好ましい実施形態において提供される。これは、データの受信をオーバーラップする公知のトークンを２つの開始ビットが受信されるとすぐに送信させ、また、連続したバイトを、各バイトの間にどんな隙間もなしに転送させることによって、効果的なデータ転送速度を維持する。データバッファリングもまた送信側に設けることができる。
【００３５】
オン−チップソース／宛先ロジックは、データバイトをＴＸＤＡＴＡバス９２上のデータアダプタ９０に並列に転送する。オン−チップソース／宛先ロジックが、転送されるデータバイトを有している時は、ライン９６上の信号ＴＸＶＡＬＩＤが設定される。信号ＴＸＶＡＬＩＤが設定されるのに応答して、送信制御ロジック１１２が、ライン１４４を介して送信シフトレジスタ１１８を制御してＴＸＤＡＴＡバス上のデータバイトを並列にロードする。更に、ライン１５０を使用して、送信制御ロジック１１２は、適宜な開始ビットＳ１とＳ２及び停止ビットＥ１を送信シフトレジスタ１１８内にロードする。そして、再びライン１４４を介した送信制御ロジック１１２の制御下で、２つの開始ビットと１つの停止ビットを含むデータバイトが信号ＤＩＡＧＳＣＡＮＯＵＴとして送信シフトレジスタ１１８から外に直列にシフトされ、これはＴＡＰコントローラ４を介して信号ＴＤＯに接続される。バスＴＸＤＡＴＡ上のデータバイトがシフトレジスタ内にロードされると、送信制御ロジック１１２は、ライン９８上に信号ＴＸＡＣＫを設定してオン−チップソース／宛先ロジックへのデータバイトの受信の肯定応答をする。そして、オン−チップソース／宛先ロジックは別のデータバイトを送信できる。データバッファリングが、必要に応じて送信シフトレジスタ１１８と関連して提供される。
【００３６】
送信シフトレジスタ１１８が送信制御ロジック１１２に制御されて、図４(a) に示される形式の直列データを出力すると、送信制御ロジック１１２はまた、ライン１３８上に信号ＴＸＳＥＮＤＢＹＴＥを設定し、この信号は送信フロー制御状態フリップフロップ１２４を設定する。この信号に応答して、送信フロー制御状態フリップフロップ１２４はライン１４０上に信号ＴＸＷＡＩＴＡＣＫを設定する。信号ＴＸＷＡＩＴＡＣＫが設定されると、データバイトが受信されたことをオン−チップソース／宛先ロジックが肯定応答するのを送信制御ロジック１１２は待つ。オン−チップソース／宛先ロジックは送信データバイトをうまく受信すると、図４(b) に示されるタイプの肯定応答信号をテストデータ入力信号ＴＤＩに送る。ライン２８上の信号ＳＣＡＮＩＮのような肯定応答信号を受信すると、受信制御ロジック１１０は、ライン１３２上に信号ＡＣＫＲＸを設定して、送信フロー制御状態フリップフロップ１２４をリセットさせ、結果として信号ＴＸＷＡＩＴＡＣＫをリセットさせる。そして、送信制御ロジック１１２は、オン−チップソース／宛先ロジックからの次の並列データバイトの受信及び送信のための準備をする。
【００３７】
図５は、ホストメモリとターゲットメモリとの間の接続を確立するのにどのようにデータアダプタ９０を使用するかを系統図形式で示す。集積回路２は、相互の間をオフ−チップで通信し、また、上記信号を使用してオン−チップで回路と通信する、ＴＡＰコントローラ４とデータアダプタ９０とを含んで構成される。図５において、上述の信号に相当する信号には同様の参照符号を使用する。図５から明らかなように、集積回路２はまた、メモリバスアダプタ１６０と、ターゲットＣＰＵ１６２と、オン−チップメモリ１６４と、を含んで構成される。集積回路２には、ターゲットＣＰＵ１６２及びオン−チップメモリ１６４とインタフェースするメモリバス１６６が備えられる。メモリバス１６６はまた、オフ−チップメモリ１７４に接続する。オフ−チップのテストアクセスポート信号ＴＣＫ、ＴＭＳ、ＴＤＩ、ＴＤＯ及びＴＲＳＴ＊が、ＴＡＰコントローライニシャライザ１７６に接続しており、このＴＡＰコントローライニシャライザ１７６は、それ自体別のデータアダプタ１８０からライン１７８上の直列データ入力信号ＳＥＲＩＮを受信し、データアダプタ１８０へライン１７９上の直列データ出力信号ＳＥＲＯＵＴを出力する。この別のデータアダプタ１８０は、ライン１９０、１８８及び１８６上の信号ＥＸＴＲＸＤＡＴＡ、ＥＸＴＲＸＶＡＬＩＤ及びＥＸＴＴＸＡＣＫを、別のメモリバスアダプタ１９４に出力し、ライン１８４、１８２及び１９２上の信号ＥＸＴＴＸＤＡＴＡ、ＥＸＴＴＸＶＡＬＩＤ及びＥＸＴＲＸＡＣＫをメモリバスアダプタ１９４から受信する。メモリバスアダプタ１９４は外部メモリバス１９８に接続される。ホストＣＰＵ２００は、外部メモリバス１９８に接続され、別のオフ−チップメモリ２０２も外部メモリバス１９８に接続される。
【００３８】
ＴＡＰコントローライニシャライザ１７６は、テストモードか診断モードのいずれかの作動用のＴＡＰコントローラ４を構成する。メモリバスアダプタ１６０，１９４は、バスＲＸＤＡＴＡ上の並列データをオン−チップソース／宛先ロジックと通信するのにより適宜なメッセージフォーマットに調整する。このため、メモリバスアダプタはメッセージコンバータであって、本出願人による特許出願に開示されるタイプのメッセージコンバータである。メモリバスアダプタはまた、オン−チップソース／宛先ソースのメッセージフォーマットをバスＴＸＤＡＴＡの送信用の並列データバイトに変換する。
【００３９】
図５の構成は種々の診断手順に使用できる。オン−チップ及びオフ−チップ直列リンクが集積回路２とホストＣＰＵ２００との間の種々の異なるタイプの診断データの通信を可能にする。
ホストＣＰＵ２００は、オン−チップバスシステム１６６を使用してオン−チップメモリ１６４またはオフ−チップメモリ１７４にアクセスできるが、これにはターゲットＣＰＵ１６２を必要としない。このためには、ホストＣＰＵによりなされたメモリアクセス要求が、オフ−チップメモリバスアダプタ１９４と、データアダプタ１８０と、ＴＡＰコントローライニシャライザ１７６と、オン−チップＴＡＰコントローラ４と、データアダプタ９０と、メモリバスアダプタ１６０と、を含んで構成されるインタフェース回路を介して、ここに述べられる種々の変換を行って送信できる。同様に、オン−チップメモリ１６４またはオフ−チップメモリ１７４から読み出されたデータは、オン−チップバスシステム１６６とインタフェース回路とを介してホストＣＰＵに戻ることができる。逆に、ターゲットＣＰＵが、ホストＣＰＵに関連したオフ−チップメモリ２０２とアクセスできる。ホストＣＰＵ２００に関連したオフ−チップメモリ２０２から読み出されたデータも、同様にインタフェース回路を介して戻ることができる。
【００４０】
また、ターゲットＣＰＵが診断目的のために監視される。例えば、それ自体のメモリへのそのアクセスがオン−チップ回路によって監視され、アクセスされたメモリアドレスに関する情報がインタフェース回路を使用してホストＣＰＵに送信される。更に、ターゲットＣＰＵは、その状態を示す構成レジスタを含むか又はアクセスできる。これらのレジスタの内容に関する情報はオフ−チップでインタフェース回路を使用してホストＣＰＵに送信される。逆に、特定状態情報がこれらのレジスタ内にロードされてホストＣＰＵの命令下でターゲットＣＰＵの状況に影響を与える。
【００４１】
このように、ここで述べられるインタフェース回路は、ホストからターゲットへのまたターゲットからホストへの（読み出し及び書き込み）メモリアクセス要求、ＣＰＵレジスタの状態情報、メモリアクセス要求に応答したホストメモリまたはターゲットメモリからの読み出しデータ、ＣＰＵレジスタ内へロードするための状況データ及びターゲットＣＰＵによりアクセスされるメモリアドレスに関する情報を含む診断データの通信を可能にする。
【００４２】
このように、インタフェース回路は、以下の診断上の機能を回路内に提供できる。
リアルタイムの診断手順の実行機能、即ち、ターゲットＣＰＵがリアルタイムで作動すると同時に、その作動に割り込まずに診断手順を行う。特に、メモリバスの監視とターゲットメモリへのアクセスが、ターゲットＣＰＵを必要とせずにホストＣＰＵにより行える。
【００４３】
ホストＣＰＵからターゲットメモリ及び構成レジスタへのアクセス。
ターゲットＣＰＵからホストメモリへのアクセス。
ホストプロセッサからＣＰＵのブーティング操作を実行する機能を含む、ターゲットＣＰＵ及びサブシステムの制御。
本実施形態では、テストデータ入力信号ＴＤＩとテストデータ出力信号ＴＤＯ上の作動の診断モードにおけるテストアクセスポート内及び外へシフトされる１方向直列データストリームは、メッセージ形式の情報である。このようなメッセージは、ホストＣＰＵまたはターゲットＣＰＵによって開始される。デバッギング環境において、ホストＣＰＵは、オン−チップソース／宛先ロジックの割り込み又は非割り込み診断を実行できる。或いは、診断モードにおいて、このようなメッセージは、ターゲットＣＰＵによって開始できる。
【００４４】
図５のメモリバスアダプタ１６０は、チップに入力されるメッセージを、オン−チップソース／宛先ロジックによって使用するための制御情報、アドレス及びデータに変換する。本実施形態では、各メッセージは複数のバイトで構成されるパケットである。前述のように、データアダプタ９０は入力する直列データを並列バイトに変換し、出力するバイトを直列データに変換する。メモリバスアダプタ１６０は、入力するメッセージをデコードして、オン−チップソース／宛先ロジックに制御情報、アドレス情報及びデータ情報を供給する。同様に、メモリバスアダプタ１６０は、オン−チップソース／宛先ロジックからの制御情報、アドレス情報及びデータ情報を、データアダプタに並列で送信されたメッセージにエンコードする。
【００４５】
本実施形態において、開始される２つのタイプのメッセージと、応答として発生する２つのタイプのメッセージがある。開始される２つのタイプのメッセージは、特定メモリ位置に特定データを書き込むためのメモリ書き込み要求「ｐｏｋｅ」と、特定メモリ位置からデータを読み出すためのメモリ読み出し要求「ｐｅｅｋ」とである。レスポンスとして発生する２つのタイプのメッセージは、メモリ読み出し要求に応答して読み出しデータを戻す「ｐｅｅｋｅｄ」メッセージと、後述の「ｔｒｉｇｇｅｒｅｄ」メッセージとである。各メッセージの第１のバイトは、ヘッダバイトであり、４つのメッセージの各々の構成は図６に示される。ヘッダバイトは、パケットの性質を識別するパケット識別子を構成する。
【００４６】
第１の２ビットのヘッダバイトは、メッセージのタイプ、即ち、メッセージが「ｐｏｋｅ」、「ｐｅｅｋ」、「ｐｅｅｋｅｄ」又は「ｔｒｉｇｇｅｒｅｄ」メッセージかどうか、を識別するタイプ識別子である。以下の６ビットのヘッダバイトは、ヘッダバイトに続き前記メッセージに関連するワード数を識別して、パケットの長さを識別する長さ識別子として機能する。或いは、以下に詳細に説明するように、これらの６ビットは理由識別子として機能できる。図７は本実施形態による４つのタイプのメッセージの各々の構成を示す。図７(a) は「ｐｏｋｅ」ヘッダバイト００＋ＷＯＲＤＣＯＵＮＴを含んで構成される「ｐｏｋｅ」メッセージを示し、アドレスワードが続き、更に少なくとも１つのデータワードが続く。図７(b) は「ｐｅｅｋ」ヘッダバイト０１＋ＷＯＲＤＣＯＵＮＴを含んで構成される「ｐｅｅｋ」メッセージであり、アドレスワードが続く。図７(C) は「ｐｅｅｋｅｄ」ヘッダバイト１０＋ＷＯＲＤＣＯＵＮＴを含んで構成される「ｐｅｅｋｅｄ」メッセージであり、少なくとも１つのデータワードが続く。図７(d) は「ｔｒｉｇｇｅｒｅｄ」ヘッダバイト１１＋ＲＥＡＳＯＮのみを含む「ｔｒｉｇｇｅｒｅｄ」メッセージである。４つのタイプのメッセージの各々の操作は以下に詳細に説明する。
【００４７】
上記のように、メモリバスアダプタ１６０は、メッセージコンバータとして機能し、以下に説明される。図８は、本実施形態によるメッセージコンバータ１６０のブロック図である。既に詳細に説明したように、メッセージコンバータ１６０は、データアダプタ９０からライン９４上の受信データバスＲＸＤＡＴＡの情報バイトを受信し、ライン９２上の送信データバスＴＸＤＡＴＡの情報バイトをデータアダプタ９０に送信する。更に、上述のように、メッセージコンバータ１６０は、データアダプタからのライン１００及び９８上の信号ＲＸＶＡＬＩＤ及びＴＸＡＣＫのそれぞれを受信し、ライン１０２及び９６上に信号ＲＸＡＣＫ及びＴＸＶＡＬＩＤのそれぞれをデータアダプタに発生する。また、メッセージコンバータ１６０は、３つのメモリバスポート、即ち、メモリスレーブバス２２０、メモリマスタバス２２２及びメモリモニタバス２２６を介してオン−チップソース／宛先ロジックとインタフェースする。メッセージコンバータ１６０はさらに、診断バス２３４を介してオン−チップソース／宛先ロジックとインタフェースする。更に、メッセージコンバータ１６０は、ライン２３６上のシステム信号ＳＹＳＴＥＭを受信する。
【００４８】
メモリスレーブバス２２０、メモリマスタバス２２２、メモリモニタバス２２６及び診断バス２３４は、それぞれ１方向バスとして図８に示される。しかしながら、各バスは、図８の矢印で示されるのとは反対の方向の信号を含む。図８において使用される規則は、バスの矢印方向が要求がなされる方向を反映することである。図９は、特に各バスに含まれる信号を示す。
【００４９】
図９を参照すると、各バスは、複数のＡＤＤＲＥＳＳ信号３５０と、複数のＷＲＩＴＥ＿ＤＡＴＡ信号３５２と、複数のＲＥＡＤ＿ＤＡＴＡ信号３５４と、１つのＲＥＱＵＥＳＴ信号３５６と、１つのＧＲＡＮＴ信号３５８と、１つのＶＡＬＩＤ信号３６０と、を含む。各バスは、図示されない関連する他の制御信号、即ち、読み出し書き込み制御信号を有する。図９から明らかなように、ＡＤＤＲＥＳＳ信号３５０とＷＲＩＴＥ＿ＤＡＴＡ信号３５２とＲＥＱＵＥＳＴ信号３５６とは、全て１方向に伝達され、ＲＥＡＤ＿ＤＡＴＡ信号３５４とＧＲＡＮＴ信号３５８とＶＡＬＩＤ信号３６０とは、反対方向に伝達される。しかしながら、メモリモニタバス２２６において、ＲＥＡＤ＿ＤＡＴＡ信号３５４とＧＲＡＮＴ信号３５８もまた、ＡＤＤＲＥＳＳ信号３５０、ＷＲＩＴＥ＿ＤＡＴＡ信号３５２、ＲＥＱＵＥＳＴ信号３５６と同じ方向に伝達できることは言うまでもない。ＶＡＬＩＤ信号３６０は、メモリモニタバス２２６には接続されない。
【００５０】
メモリマスタバス２２２は、オフ−チップホストＣＰＵによって駆動されてメモリアクセス要求をターゲットＣＰＵメモリ領域につくり、また、診断機能によっても駆動できる。メモリスレーブバス２２０は、ターゲットＣＰＵによって駆動されてオフ−チップメモリまたは診断機能にメモリアクセス要求をつくる。メモリモニタバス２２６は、メモリスレーブバス２２０と同じオン−チップ信号に接続され、診断機能により使用されてどのターゲットＣＰＵがスレーブバスを使用するかを確認（非割り込み）する固定通路バスである。診断バス２３４は、メモリバスというよりはレジスタアドレスバスであり、診断機能により発生する「ｔｒｉｇｇｅｒｅｄ」事象を伝達すると同時に、オン−チップ診断機能からの読み出し及びオン−チップ診断機能への書き込みを実行できる。診断バスはまた、診断機能からのメモリアクセス（メモリマスタバスを介したローカルオン−チップ／オフ−チップメモリへのまたはデータアダプタを介したリモートホストメモリへの）を開始するのに使用される。
【００５１】
状態信号が、ターゲットＣＰＵから診断機能を介してメッセージコンバータに供給される。これらの信号は、命令ポインタが有効である時を示す制御信号を備えた命令ポインタ等のターゲットＣＰＵ進行情報を含む。ホストＣＰＵは、命令ポインタを監視してターゲットＣＰＵが何をしているかを判定する。状態信号はまた、ＣＰＵの作動状態に関する付加的な情報を提供する多面的な個別の制御信号を含む他のターゲットＣＰＵ状態信号を含む。状態は、診断バスの「ｒｅｇｉｓｔｅｒ」読み出しによりアクセスされる。命令ポインタもまた異なるレジスタアドレスからではあるが、「ｒｅｇｉｓｔｅｒ」読み出しによりアクセスできる。
【００５２】
オン−チップソース／宛先ロジックのステータスに関連する他の情報は、オン−チップレジスタに関連する情報等のステータス信号として含まれるが、このような情報は、一般的には診断目的のためのオン−チップ機能のいくつかの抽出を含むレジスタから引き出されるだけである。機能信号は任意の非割り込みオン−チップ診断機能、例えば、診断情報及び制御の抽出を容易にする任意のレジスタ、に接続できる。
【００５３】
メモリマスタバスは、オン−チップのアドレスバスと、書き込みバスと、読み出しバスと、関連する制御信号とに接続される。メモリマスタバスは、オン−チップメモリ１６４、オフ−チップメモリ１７４及び構成レジスタ等のメモリバスを介してアクセス可能な任意の他のリソースを含むターゲットメモリスペース内の範囲に、ホストＣＰＵ及び診断機能がアクセスできるように使用される。
【００５４】
個別のバスポートにオン−チップソース／宛先ロジックとの種々の接続点を設けるよりも、それらの間を識別する適宜な制御信号を使用して、いくつかのバスを組合せることができる。例えば、メモリバス書き込みデータと読み出しデータとは、共通のメモリデータバスに組合される。メモリアドレスはメモリデータに組合される。メモリスレーブバスはメモリマスタバスに組合される。このような選択肢は、実行、領域及び他の要素間の実行トレードオフを表す。
【００５５】
ライン２３６上のシステム信号は、システムサービスに接続点を提供する。このようなシステムサービスは、例えば、クロッキング、電源、リセット、テストである。
メッセージコンバータ１６０は、データアダプタによって直列ビットフォーマットから直列バイトフォーマットに変換された連続した情報バイトを受信し、ヘッダバイトを読み出してその内部に伝えられるメッセージを決定する。このようにメッセージコンバータ１６０は、入力するメッセージを解釈して必要な作動を実行する。この必要な動作には、ホストに戻される情報を選択すること、又は、メッセージコンバータに接続されるバスのうちの適宜な１つを介してメモリアクセスを開始してデータを読み出すか書き込むことが含まれる。メッセージコンバータ１６０はまた、メッセージプロトコルに従ってオン−チップバスから受信した並列データをオフ−チップ送信用のメッセージに編集する。これには、ヘッダバイトを並列データとアドレスバイトとに配分して、入力するデータ、アドレス及び制御信号に応じてメッセージの性質を定義することが含まれる。図８のメッセージコンバータ１６０の作動と図６及び７のメッセージプロトコルとを図１０を参照して詳細に説明する。
【００５６】
図１０は、本実施形態によるメッセージコンバータ１６０を示す。メッセージコンバータ１６０は、ヘッダレジスタ２４０と、アドレスレジスタ２４２と、データレジスタ２４４と、減分制御２４６と、増分制御２４８と、シフト制御２５０と、ステートマシン２５２と、バス選択及び指定ロジック２５４と、を含んで構成される。メッセージコンバータ１６０には、全ての制御信号を伝達するための内部制御バス２５８と、内部情報バス２５６と、が備えられる。内部制御バス２５８は、ステートマシン２５２に接続し、ステートマシン２５２への及びステートマシン２５２からのフロー制御信号ＲＸＶＡＬＩＤ、ＲＸＡＣＫ、ＴＸＶＡＬＩＤ及びＴＸＡＣＫを伝達する。内部制御バス２５８は更に、ライン２６０上の減分制御信号を減分制御２４６に、ライン２６２上の増分制御信号を増分制御２４８に、ライン２６４上のシフト制御信号をシフト制御２５０に、ライン２６６上のヘッダ制御信号をヘッダレジスタ２４０に、ライン２６８上のアドレス制御信号をアドレスレジスタ２４２に、ライン２７０上のデータ制御信号をデータレジスタ２４４に、また、ライン２７２上の選択及び指定制御信号をバス選択及び指定ロジック２５４に伝達する。ヘッダレジスタ２４０は、減分制御２４６からライン２４１上の制御信号を受信し、アドレスレジスタ２４２は、増分制御２４８からライン２４３上の制御信号を受信し、また、データレジスタ２４４は、シフト制御２５０からライン２４５上の制御信号を受信する。情報バス２５６は、受信データバイトＲＸＤＡＴＡをヘッダレジスタ２４０、アドレスレジスタ２４２、データレジスタ２４４及びバス選択及び指定ロジック２５４に伝達する。また、情報バス２５６は、バス選択及び指定ロジック２５４、データレジスタ２４４、アドレスレジスタ２４２及びヘッダレジスタ２４０からの出力を送信データ信号ＴＸＤＡＴＡに伝達する。バス選択及び指定ロジック２５４は、メモリスレーブバス２２０、メモリマスタバス２２２、メモリモニタバス２２６及び診断バス２３４の１つへの或いはこれらの１つからの情報バス２５６上の情報を指定し、その情報は、本実施形態ではバイト幅のものである。
【００５７】
図１０の実施形態において、システム信号２３６は、ヘッダレジスタ２４０と、アドレスレジスタ２４２と、データレジスタ２４４と、ステートマシン２５２とをクロックするのに使用されるライン２８０上のクロック信号を提供するだけである。メッセージコンバータ１６０の作動を、予測される種々のメッセージタイプについて以下に説明する。
【００５８】
ホストＣＰＵが「ｐｏｋｅ」を開始すると、図７(a) に示される形式の直列メッセージが、集積回路2 のテストアクセスポートで受信され、続いて、受信データバスＲＸＤＡＴＡ上でデータアダプタ９０によって並列の情報バイトの形式で出力される。受信データバスＲＸＤＡＴＡ上の各並列情報バイトを出力すると、データアダプタ９０は、ライン１００上で信号ＲＸＶＡＬＩＤを設定する。ライン１００上の信号ＲＸＶＡＬＩＤに応答して、メッセージコンバータ１６０のステートマシン２５２は、受信データバスＲＸＤＡＴＡの情報バイトをメッセージコンバータ１６０内にロードし、ライン１０２上に信号ＲＸＡＣＫを設定して情報バイトの受信を肯定応答する。信号ＲＸＶＡＬＩＤを設定してメッセージの第１の情報バイトを示すデータアダプタ９０に応答して、ステートマシン２５２は、ライン２６６を介してヘッダレジスタ２４０を制御し、受信データバスＲＸＤＡＴＡの情報バイトを内部情報バス２５６を介してヘッダレジスタ２４０内にロードする。そして、ステートマシン２５２は、ヘッダレジスタ２４０内にロードされたバイトのうちの少なくとも２つの重要なビットを検索して、どのタイプのメッセージが入力するのかを決定する。この場合、ステートマシン２５２は、受信したバイトの少なくとも２つの重要なビットを００として識別し、「ｐｏｋｅ」メッセージに対応するとして入力メッセージを識別する。ホストＣＰＵによって開始された「ｐｏｋｅ」メッセージは、ホストＣＰＵがターゲットＣＰＵメモリ領域内に特定アドレスで挿入しようとするデータを含む。ヘッダレジスタ２４０に記憶されたヘッダバイトと関連するワードカウントは、メッセージ内のデータワード数のカウントである。ステートマシン２５２は、ライン２６８を介してアドレスレジスタ２４２を制御して、受信データバスＲＸＤＡＴＡ上で受信される次の４バイトを、情報バス２５６を介してアドレスレジスタ２４２内にロードする。この４バイトはアドレスワードを形成する。アドレスワードがアドレスレジスタ２４２内にロードされると、受信データバスＲＸＤＡＴＡで受信される第１のデータワードを形成する次の４バイトが、制御ライン２７０を介してステートマシン２５２の制御下でデータレジスタ２４４内にロードされる。そして、ステートマシン２５２は、ライン２７２を介してバス選択及び指定ロジック２５４を制御してアドレスレジスタ２４２とデータレジスタ２４４の内容をメモリマスタバス２２２に出力する。
【００５９】
アドレスレジスタとデータレジスタの内容をメモリマスタバス２２２に出力すると、ステートマシン２５２は、前記バスに関連する書き込み制御信号と、メモリマスタバスに関連するライン３５６上の要求信号とを設定する。アクセスされるターゲットＣＰＵのメモリスペースに関連するメモリアービタは、要求されたメモリアクセスが進行できることを判定すると、メモリマスタバスに関連するライン３５８上の許可（ＧＲＡＮＴ）信号を宣言する。より高い優先順位の要求者（例えばＣＰＵ）が要求を出さずに前回アクセスを完了した場合、メッセージコンバータ１６０は低優先順位を持ってもよい。要求及び許可の信号セットは、各データワード転送毎に要求される。
【００６０】
メモリアクセス後、ヘッダレジスタ２４０に含まれるワードカウントが１ではない場合（本実施形態では、１はゼロのワードカウントを示す）、アドレスレジスタ２４２は、制御ライン２４３を介して増分制御２４８によって増分され、別のワード情報がデータレジスタ２４４内にロードされる。更に、レジスタ２４４へのデータワードのローディング後、アドレスレジスタ２４２内に記憶されたアドレス及びデータレジスタ２４４内に記憶されたデータは、書き込み制御信号及び要求信号が設定されるのとともにメモリマスタバス上に出力され、また、データレジスタ２４４内に含まれるデータワードがアドレスレジスタ２４２内に含まれるアドレスに書き込まれる。その肯定応答は、メモリマスタバス上に許可信号を設定するメモリアービタによって確認される。この一連のアドレスレジスタ２４２の増分とデータレジスタ２４４内への４バイト情報のローディングは、ヘッダレジスタ２４０に含まれるワードカウントが１と同じ、即ち、データワードが残らない、状態になるまで継続する。
【００６１】
ホストＣＰＵが「ｐｅｅｋ」を開始すると、図７(b) に示される形式の直列メッセージが集積回路２のテストアクセスポートで受信され、続いて受信データバスＲＸＤＡＴＡ上のデータアダプタ９０によって並列情報バイト形式で出力される。信号ＲＡＶＡＬＩＤを設定して第１の情報バイトを示すデータアダプタ９０に応答して、ステートマシン２５２はヘッダレジスタ２４０を制御してその内部に情報バイトをロードする。そして、ステートマシン２５２はその内部にロードされたバイトのうち少なくとも２つの重要なビットを検索して、どのメッセージが入力するかを判定するが、この場合、受信したバイトのうち少なくとも２つの重要なビットを０１として識別し、入力するメッセージを「ｐｅｅｋ」メッセージに対応するものとして識別する。ホストＣＰＵによって開始される「ｐｅｅｋ」メッセージはターゲットＣＰＵメモリ領域内にアドレスを含み、その内容はホストＣＰＵが検索する。
【００６２】
ステートマシン２５２が、その内部に含まれる第１の２ビットのヘッダバイトを０１として識別することにより、ヘッダレジスタ２４０内にロードされた「ｐｅｅｋ」メッセージを識別すると、ステートマシン２５２は、ヘッダバイトの第１の２ビットを「ｐｅｅｋｅｄ」ヘッダ用の適宜なビット、即ち、１０に対応するように変化させて、この変化させたヘッダバイトを送信データバスに送信してヘッダレジスタ内に記憶されたワードカウントをそのまま含むホストＣＰＵに戻し、図７（c)に示される形式の戻された「ｐｅｅｋｅｄ」メッセージのヘッダバイトを形成する。言い換えれば、「ｐｅｅｋ」ヘッダバイトは「ｐｅｅｋｅｄ」ヘッダバイトとして、そのままのワードカウントと０１から１０に変化した少なくとも２つの重要なビットとともに戻される。受信データバスＲＸＤＡＴＡ上で受信された次の４バイト情報がアドレスレジスタ２４２内にロードされてアドレスワードを形成する。ステートマシン２５２は、ライン２７２を介して選択及び指定ロジック２５４を制御し、メモリマスタバスに関連する読み出し制御信号の設定と、メモリマスタバスに関連する要求信号が設定されるのと、を連係して、アドレスレジスタ２４２に含まれるアドレスワードをメモリマスタバス２２２上に出力する。
【００６３】
設定される要求信号に応答して、アクセスされるターゲットＣＰＵのメモリスペースに連絡するメモリアービタが、要求されたアクセスが進行できることを判定すると、アービタはメモリマスタバスに関連する許可信号を設定する。メモリマスタバス上のアドレス出力に関連する実際のメモリ位置がアクセスされ、その内部に記憶されたデータがメモリマスタバスの読み出しデータバス上に出力されると、アービタはメモリマスタバスに関連する信号ＶＡＬＩＤを設定してデータがホストＣＰＵに返送される用意ができていることを示す。設定される信号ＶＡＬＩＤに応答して、ステートマシン２５２は、ライン２７２を介してバス選択及び指定制御ロジックを制御してメモリマスタバスの読み出しデータバス上のデータをデータレジスタ２４４内にロードする。データレジスタ２４４内にロードされたデータワードは、内部情報バス２５６を介して送信データバスＴＸＤＡＴＡ上に一度に１バイトずつシフトアウトされて、ホストＣＰＵに返送される。要求、許可及び有効の信号のセットが転送される各データワード毎に必要である。
【００６４】
データレジスタ２４４内にロードされたデータワードがホストＣＰＵにシフトバックされた後、ステートマシン２５２はライン２６０を介して減分制御２４６を制御し、制御ライン２４１を介してヘッダレジスタ２４０に含まれるワードカウントを１だけ減少させる。ワードカウントが１ではない場合、増分制御２４８がライン２６２を介してステートマシン２５２によって制御されて、制御ライン２４３を介してアドレスレジスタ２４２に含まれるアドレスを増加し、このアドレスが再びバス選択及び指定ロジック２５４によって設定された要求信号及び読み出し制御信号とともにメモリマスタバス２２２上に出力される。このように、ターゲットＣＰＵメモリ領域内の次の連続したメモリ位置が読み出され、その内容がメッセージコンバータ１６０のデータレジスタ２４４内に書き込まれる。また、このデータワードは１バイトずつ送信データバスＴＸＤＡＴＡ上でホストＣＰＵにシフトアウトされ、ヘッダレジスタ内のワードカウントが再び１だけ減少される。ヘッダレジスタ２４０に含まれるワードカウントが０と同じ、即ちデータワードが残らない状態になるまで、このサイクルが繰り返される。
【００６５】
ターゲットＣＰＵは、「ｐｏｋｅ」又は「ｐｅｅｋ」メッセージを開始してホストＣＰＵ２００のメモリスペースからデータを書き込むかまたは読み出す。ターゲットＣＰＵ領域のメモリスレーブバス２２０とその関連制御信号を監視し、読み出しまたは書き込み制御信号に関連して、ターゲットＣＰＵによるアドレスバス上のアドレス出力がターゲットＣＰＵではなくホストＣＰＵのアドレス範囲内であることを識別するステートマシン２５２によって、ターゲットＣＰＵによる「ｐｏｋｅ」メッセージまたは「ｐｅｅｋ」メッセージの開始が認識される。複数ワードの「ｐｅｅｋ」メッセージ及び「ｐｏｋｅ」メッセージを実行する上記のようなターゲットＣＰＵにより開始される「ｐｏｋｅ」メッセージ及び「ｐｅｅｋ」メッセージに対して、ターゲットＣＰＵは単一ワードの「ｐｅｅｋ」メッセージ及び「ｐｏｋｅ」メッセージのみを実行できる。
【００６６】
ターゲットＣＰＵが「ｐｏｋｅ」メッセージを開始すると、これは、メモリスレーブバスの書き込みデータバスに関連する書き込み信号と、設定されるメモリスレーブバスに関連する要求信号とを識別するステートマシン２５２によって認識される。また、ステートマシン２５２は、メモリスレーブバスによって要求される書き込みデータと関連するアドレスがターゲットＣＰＵ領域のメモリ範囲の外側であることを認識する。この状況に応じて、ステートマシン２５２は、図６(a) に示されるような予め記憶された「ｐｏｋｅ」ヘッダバイトを制御ライン２６６を介してヘッダレジスタ２４０内に直接ロードする。このような「ｐｏｋｅ」ヘッダバイトは１つのデータワードを示すワードカウントを持つ。そして、メモリスレーブバスのアドレスデータバス上のアドレスワードはバス選択及び指定ロジック２５４を介して、ステートマシン２５２の制御下でアドレスレジスタ２４２内にロードされ、メモリスレーブバスの書き込みデータバス上の書き込みデータも同様にデータアダプタ１６０のデータレジスタ２４４内にロードされる。そして、ステートマシン２５２の制御下で、ヘッダレジスタ２４０内の「ｐｏｋｅ」バイトは、送信データバスＴＸＤＡＴＡ上を通ってホストＣＰＵに出力され、アドレスレジスタ２４２に含まれる４バイトアドレスとデータレジスタ２４４に含まれる４バイトデータが続く。
【００６７】
同様に、要求信号とターゲットＣＰＵ領域のアドレス範囲の外側のメモリスレーブバスのアドレスバス上のアドレスとに関連して読み出し信号をメモリスレーブバス上で識別するステートマシン２５２に応答して、ステートマシン２５２は、「ｐｅｅｋ」ヘッダバイトに相当する図６(b) に示されるヘッダバイトをヘッダレジスタ２４０内にロードする。この場合、ヘッダバイトは１つのワードカウントを含む、即ち、データワードがないことを示す。同様に、上述のように、ステートマシン２５２はまた、データアダプタ１６０を制御してメモリスレーブバスのアドレスバス上のアドレスをアドレスレジスタ２４２内にロードする。そして、ヘッダレジスタ２４０に含まれるヘッダバイトは、送信データバスＴＸＤＡＴＡ上に出力され、アドレスレジスタ２４２に記憶された４つの連続したバイトが続く。
【００６８】
この段階で、メッセージコンバータ１６０は、開始されたターゲット「ｐｅｅｋ」メッセージで終了するが、ターゲットＣＰＵはメモリスレーブバス２２０上の信号ＶＡＬＩＤを受信していない。結果として、ターゲットＣＰＵは「ｓｔｕｃｋ」（即ち、固定されたかまたは継続して待機中）であり、何もしていない（停止または他の中断ではない）。しかしながら、メッセージコンバータ１６０は「ｓｔｕｃｋ」ではなく、その他の活動（ＣＰＵが「ｓｔｕｃｋ」なので開始されたターゲット「ｐｅｅｋ」メッセージまたは「ｐｏｋｅ」メッセージを受信しないが）を進行する位置にいる。
【００６９】
このように、メッセージコンバータがメモリアクセスメッセージをオフ−チップホストプロセッサに送信すると、後続のメッセージまたは要求を自由に処理できる。
ターゲットＣＰＵにより開始された「ｐｏｋｅ」メッセージまたは「ｐｅｅｋ」メッセージに応答して、ホストＣＰＵは「ｐｅｅｋｅｄ」メッセージで応答する。ホストＣＰＵからの「ｐｅｅｋｅｄ」メッセージの受信は、図６(c) の構成に対応するヘッダレジスタ内のヘッダバイトを認識するステートマシン２５２によって識別される。受信データバスＲＸＤＡＴＡからの次の４バイトの情報がデータレジスタ２４４内にシフトされ、その内部にロードされたデータワードが、設定されるメモリスレーブバスと連絡する信号ＶＡＬＩＤと関連して、ステートマシン２５２の制御下で、ターゲットＣＰＵ領域のメモリスレーブバス２２０のデータバスに、バス選択及び指定制御ロジック２５４によって転送されるので、ターゲットＣＰＵのメモリスペースと連絡するメモリアービタに、「ｐｅｅｋ」要求によって要求されたデータが利用可能であることを表示する。ターゲットＣＰＵは単一ワード「ｐｅｅｋ」を開始するだけなので、ホストＣＰＵからの「ｐｅｅｋｅｄ」メッセージは単一データワードのみを含む。ターゲットＣＰＵが信号ＶＡＬＩＤを受信すると、「ｓｔｕｃｋ」ではなくなる。
【００７０】
メモリスレーブバス２２０は、ターゲットＣＰＵによって使用されて、メッセージコンバータ１６０を介してホストＣＰＵによってアクセスされるオン−チップ診断機能にアクセスする。これは開始されたターゲット「ｐｅｅｋ」／「ｐｏｋｅ」に使用するのと同じバスであり、アドレス範囲は、これがオン−チップ診断機能へのアクセスかどうか判定する。ターゲットＣＰＵによってメモリスレーブバス２２０上で開始される任意の作動に応答して、ステートマシン２５２はライン２７２を介してバス選択及び指定ロジック２５４を制御しメモリスレーブバス２２０上の任意の情報または制御信号を診断バス２３４に転送する。
【００７１】
図１１を参照すると、図８及び図１０のメッセージコンバータ１６０と、オン−チップソース／宛先ロジックまたはターゲット領域とホストＣＰＵと、の間の相互接続が概略的に示される。図５を参照して前述したように、集積回路２は、ＴＡＰコントローラ４と、データアダプタ９０と、ＣＰＵレジスタ１６３を有するターゲットＣＰＵ１６２と、オン−チップメモリ１６４と、を含んで構成される。加えて、図１１の集積回路２は、診断レジスタ３０１を有する診断機能回路３００と、メモリキャッシュ３０２と、外部メモリインタフェースコントローラ３０４と、図１０で詳細に説明したメッセージコンバータ１６０と、を含んで構成される。図１１において、ホストＣＰＵ２００がホスト通信アダプタ３０８を介して集積回路２のＴＡＰコントローラ４とインタフェースすることが示されている。本実施形態において、ホスト通信アダプタ３０８は、ＴＡＰコントローライニシャライザ１７６と、データアダプタ１８０と、図５において説明したメモリバスアダプタ１９４と、を含んで構成される。また、ホスト通信アダプタ３０８は、ホストＣＰＵ２００からまたはホストＣＰＵ２００へのメッセージを変換するための集積回路２に設けられたメッセージコンバータ１６０と同等のメッセージコンバータを有する。更に、図１１を参照すると、メッセージコンバータ１６０が診断バス２３４を介して診断機能回路３００と通信するのがわかる。診断機能回路３００とターゲットＣＰＵ１６２とは、バス３１０を介して相互に通信する。メッセージコンバータ１６０のメモリモニタバス２２６とメモリスレーブバス２２０は、ターゲットＣＰＵとメモリキャッシュ３０２との間の共通バス３１２と接続する。また、ターゲットＣＰＵとメモリキャッシュ３０２とは、ＣＰＵ命令−取り出しバス３１４を介して相互接続する。メッセージコンバータ１６０上のメモリマスタバス２２２は、オン−チップソース／宛先ロジックのメモリバス１６６に順次接続するメモリキャッシュ３０２に接続する。図５を参照して前述したように、メモリバス１６６はオン−チップメモリ１６４に接続する。また、メモリバス１６６は、外部メモリインタフェースコントローラ３０４と接続し、その外部メモリインターフェースコントローラ３０４は、オフ−チップメモリ１７４とインタフェースするオフ−チップメモリバス３１６にオン−チップソース／宛先ロジックメモリバス１６６をインタフェースする。
【００７２】
図１１の構成は、オン−チップソース／宛先ロジックとホストＣＰＵとの間でメッセージを送信することによって種々の診断手順を実行するのに使用できる。診断バス２３４は、診断機能回路３００の診断レジスタ３０１への又は診断レジスタ３０１からの読み出し及び書き込みを可能にするとともに、トリガ事象を発生させる。ターゲットＣＰＵに関連する制御情報は、診断機能回路３００から読み出される。ターゲットＣＰＵに関連する命令ポインタと他の制御信号は、診断機能回路３００の診断レジスタ３０１に記憶される。命令ポインタは、診断レジスタ３０１の一つに連続して複写され、診断バス２３４上の要求によってアクセスされる。ターゲットＣＰＵの状態を検索するには、診断機能回路３００の診断レジスタ３０１の一つを検索する必要がある。診断レジスタ３０１は、例えば、ＳＴＡＬＬ ＡＴ ＩＮＴＥＲＲＵＰＴ ＰＯＩＮＴ、ＴＲＡＰ ＡＴ ＩＮＴＥＲＲＲＵＰＴ ＰＯＩＮＴ等の、ターゲットＣＰＵの種々の制御信号を記憶できる。これらの信号は特定のワイヤを介してＣＰＵに伝達される。
【００７３】
前述のように、ホストＣＰＵがメモリマスタバス２２２を介してターゲットＣＰＵメモリスペース内のメモリ位置に書き込みができるのと同様の方法で、ホストＣＰＵは、診断バス２３４を介して診断機能回路３００内のレジスタに書き込みができる。診断機能回路３００のレジスタに書き込みをするホストＣＰＵに応答して、トリガされた事象が発生する。このトリガ事象は、トリガ事象を識別する理由コードに関連する要求信号を識別するステートマシン２５２によってメッセージコンバータ１６０内で検出される。要求信号に応答して、ステートマシン２５２は、トリガ事象に関連する理由コードを、トリガヘッダバイトを識別する２ビット１１とともに、ヘッダレジスタ２４０内にロードする。そして、ヘッダレジスタ２４０に記憶されたトリガヘッダバイトが送信データバスＴＸＤＡＴＡ上をターゲットＣＰＵに出力される。
【００７４】
上記のように、ターゲットＣＰＵ自体が、メモリモニタバス２２６と診断バス２３４とを介して診断機能回路３００にアクセスできる。同様に、ターゲットＣＰＵが診断機能回路に書き込みをすると、この書き込みに応答してトリガ事象が発生して、ステートマシン２５２がヘッダレジスタ２４０に含まれるトリガヘッダバイトを出力してターゲットＣＰＵに戻す。ステートマシン２５２は、診断バス２３４上の書き込みがターゲットＣＰＵによって行われたかまたはホストＣＰＵによって行われたかを記憶し、トリガ事象を正しい宛先に返送する。
【００７５】
図１１に示された環境で実行される本実施形態によるメッセージコンバータは、テストアクセスポートからのブート、ホットプラグ挿入及びホストとターゲットの同期化等の種々の高レベルの診断特徴を維持できる。
このように、本実施形態によれば、集積回路に挿入され、限定されたピンカウントを介してホストＣＰＵとオン−チップソース／宛先ロジックとの間の通信を提供するメッセージコンバータが設けられる。このコンバータは、種々のオン−チップリソースへのアクセスを有する。これらのリソースのうちのいくつかは単に監視されるだけであり、他は制御されるかまたは監視及び制御される。任意のリソースの監視は非割り込みであり、チップ機能の実行または待機に何の影響も与えない。これは診断目的には理想的である。メッセージコンバータは、受信メッセージの解釈と、送信メッセージの編集と、オン−チップソース／宛先ロジックへのまたはオン−チップソース／宛先ロジックからの情報の選択または指示との機能を実行する。メッセージコンバータは、オン−チップ機能のいずれからも独立して作動するので、何らかの割り込み作動の実行が指示されるまで或いは指示されなければ非割り込みである。
【００７６】
図１１を参照すると、その構成は、メモリキャッシュ３０２を取り除き、共通バス３１２とＣＰＵ命令取り出しバス３１４とをメモリバス１６６に直接接続することによって応用されてもよい。更に、この構成は、付加的なマスタまたはメモリバス１６６に接続されたオン−チップの自律機能を有するようにも応用できる。さらにまた、ターゲットＣＰＵ１６２は取り除くことができ、メモリスレーブバス２２０とメモリマスタバス２２２とメモリモニタバス２２６とをメモリバス１６６に直接接続できる。
【００７７】
以下の実施の形態によれば、診断機能回路３００はトリガシーケンシングコントローラを有する。図１２を参照して説明する。図１２は、２つの診断ユニット４０２、４０４とトリガシーケンシングコントローラ４００とを含んで構成される診断機能回路３００を示す。各診断ユニット４０２、４０４は、各トリガ接続点４０６、４０８を介してトリガシーケンシングコントローラ４００に接続される。各診断ユニット４０２、４０４のオン−チップ回路の残り部分との相互接続は個々の診断ユニットの機能に依存する。診断バス２３４が図１２に示され、通常は診断機能回路３００に接続され、また、診断ユニット４０２、４０４のそれぞれまたは一方に接続することもでき、トリガシーケンシングコントローラに接続することもできる。図１２に示される具体例では、診断ユニット４０２はバス３１０を介してターゲットＣＰＵ１６２に接続され、診断ユニット４０４はバス４１０を介してメモリバス１６６に接続される。
【００７８】
上記のように、各診断ユニット４０２、４０４の相互接続は個々の診断ユニットの性質に依存する。更に、診断機能回路３００は図１２に示された２つの診断ユニットより多くの診断ユニットを含んで構成することができ、各診断ユニットはここに記載した本発明の実施の形態によりトリガシーケンシングコントローラ４００に接続される。
【００７９】
診断機能回路３００の各診断ユニットは、例えば、１９９６年１２月１９日出願の英国特許出願第９６２６３６７．８号に記載の命令トレースコントローラ、１９９６年１２月１９日出願の英国特許出願第９６２６４０１．５号に記載のブレークポイントユニット、或いは、１９９６年１２月１９日出願の英国特許出願第９６２６４１２．２号に記載のブレークポイントレンジユニットでよい。命令トレースコントローラは、ＣＰＵによって実行されるアドレスを監視して、前記アドレス内の不連続に応じて、トレースストレージ位置に前記アドレスのうち選択されたアドレスを記憶させるように動作可能である。このように、命令トレースコントローラは、付加的な外部ピンを必要とせずに、リアルタイムで、命令トレースを収集できる。ブレークポイントユニットは、ＣＰＵが通常実行するはずの次の命令の代わりに、一連の命令（いわゆる「トラップ命令」）をＣＰＵに取り出させて実行させるブレークポイント信号を発生する。或いは、ブレークポイント信号は、診断手順が行われている間にＣＰＵが何らかの別の命令を実行するのを防止することもできる。ブレークポイントユニットはブレークポイントアドレスを保持するとともに、ＣＰＵによって実行されるべき次の命令がブレークポイントアドレスとマッチした時に、ＣＰＵの通常作動を中断する信号をだすように動作可能である。ブレークポイントレンジユニットは、レンジ内（又は外）の値を有する命令ポインタに応答してブレークポインティングを開始させることができる。ブレークポイントレンジユニットは、それぞれ上側ブレークポイントアドレスと下側ブレークポイントアドレスを保持し、その間でＣＰＵの通常作動が中断される第１及び第２のブレークポイントレジスタを有する。ブレークポイントレンジユニットは、次に実行される命令が下側ブレークポイントアドレスと上側ブレークポイントアドレスとの間にある時には、ＣＰＵの通常作動を中断するブレークポイント信号を出すように動作可能である。
【００８０】
診断ユニットは選択されたオン−チップ信号を観察して状態を検出するのに使用される。診断ユニットが命令トレースコントローラ、ブレークポイントユニット又はブレークポイントレンジユニットの場合には、診断ユニットが検出する状態は、その機能を使用可能にする適宜な状態である。或いは、診断ユニットはオン−チップ信号の数を観察して、これらの信号を任意の方法でプログラム可能な内容を持つレジスタと比較するように接続できる。
【００８１】
図１２の配列では、各診断ユニット４０２、４０４は、それぞれの状態の検出に応じて、各トリガ接続点４０６、４０８を介したトリガシーケンシングコントローラ４００へのトリガ信号をセットする。以下に更に説明するように、トリガシーケンシングコントローラ４００は、診断機能回路３００の特定の１つ又は複数の診断ユニットに応答して、診断機能回路３００の特定の１つ又は複数の診断ユニットがそれぞれの状態の検出に応答して、即ち、一連のトリガ信号に応答して、トリガ信号を発生できるようにする。
【００８２】
図１２の配列において、トリガシーケンシングコントローラ４００が一連のトリガ信号に応答して診断バス２３４及び前記バスが上記のように接続されたメッセージコンバータ１６０を介してトリガメッセージを開始するように、トリガシーケンシングコントローラ４００を診断バス２３４に接続することができる。トリガメッセージの開始に加えて、トリガシーケンシングコントローラ４００は診断ユニット４０２、４０４の一方又は両方を使用可能にできる。
【００８３】
図１３は、図１２のトリガシーケンシングコントローラ４００が分散された別の実施の形態を示す。この実施の形態において、診断機能回路の各診断ユニット４５０、４５２は図１２のトリガシーケンシングコントローラ４００の機能部分を分担し、各接続点４５６、４５８を介してトリガバス４５４に接続される。図１３のその他の接続は図１２と同様である。図１３に示される分散型トリガシーケンシングコントローラの動作を図１４を参照して説明する。
【００８４】
図１４は図１３の診断ユニット４５０を示す。図１４に示された例において、この特定の診断ユニットは、ターゲットＣＰＵ１６２に接続されたバス３１０に接続されるとともに診断バス２３４に接続される診断機能ロジック４６０を有する。診断ユニット４５０の機能を実行する診断機能ロジック４６０に加えて、トリガシーケンシングを実行する分散型トリガシーケンシングコントローラロジック回路４６２が設けられる。
【００８５】
分散型トリガシーケンシングコントローラロジック回路４６２は、制御ロジック４６４、イネーブル比較ロジック４６６、ディスエーブル比較ロジック４６８、使用可能ビット４７０、トリガビット４７２、反復可能ビット４７４、イネーブル状態レジスタ４７６及びディスエーブル状態レジスタ４７８を有する。使用可能ビット４７０、トリガビット４７２、反復可能ビット４７４、イネーブル状態レジスタ４７６及びディスエーブル状態レジスタ４７８は全て診断機能回路３００の診断レジスタ３０１の役割を行う。
【００８６】
使用可能ビット４７０、トリガビット４７２、反復可能ビット４７４、イネーブル状態レジスタ４７６及びディスエーブル状態レジスタ４７８は全て、図１４においてビットをロードして読み出す診断バス２３４に接続して示される。この特定の実施の形態において、診断バス２３４はこのために使用されるものであるが、データのローディング及びアクセシングが可能な任意のバスをこの目的に使用することができる。
【００８７】
制御ロジックはライン４８０上の信号ＥＮＡＢＬＥＤを診断機能ロジック４６０に出力し、ライン４８２上の信号ＣＯＮＤＩＴＩＯＮ ＤＥＴＥＣＴを診断機能ロジック４６０から受信する。制御ロジックは２方向信号ライン４８４、４８６、４８８のそれぞれを介して使用可能ビット４７０、トリガビット４７２及び反復可能ビット４７４のそれぞれに接続される。イネーブル比較ロジック４６６はバス４９０上のイネーブル状態レジスタ４７６及びトリガバス４５６の内容を受信して、ライン４９２上の信号ＥＮＡＢＬＥを制御ロジック４６４に出力する。ディスエーブル比較ロジック４６８はバス４９４上のディスエーブル状態レジスタ４７８及びトリガバス４５６の内容を受信して、ライン４９６上の信号ＤＩＳＡＢＬＥを制御ロジック４６４に出力する。制御ロジック４６４は、トリガバス４５６の一部を構成するライン４６７上の信号ＴＲＩＧＧＥＲＥＤを出力する。
【００８８】
診断機能ロジック４６０はバス３１０又は２３４を介して選択されたオン−チップ信号に接続されて、選択された状態を検出する。例えば、診断機能ロジック４６０は、バス３１０上のターゲットＣＰＵの命令ポインタを監視するように接続された命令トレースコントローラであってもよい。診断機能ロジック４６０が所望の状態を検出すると、診断機能ロジック４６０に要求される機能動作を実行することに加えて、診断機能ロジック４６０はライン４８２上にＣＯＮＤＩＴＩＯＮ ＤＥＴＥＣＴ信号をセットする。ライン４８２上のＣＯＮＤＩＴＩＯＮ ＤＥＴＥＣＴ信号を受信すると、制御ロジック４６４は２方向ライン４８６を介してトリガビット４７２をセットするとともに、ライン４６７上にＴＲＩＧＧＥＲＥＤ信号をセットする。ライン４６７上のトリガ信号はトリガバス４５６の役割を果たす。トリガバス４５６の各ラインは診断機能回路３００の診断ユニットの１つによって発生するトリガ信号に相当する。このように、診断機能回路３００が２つの診断ユニットを有する図１３に示される特定の実施の形態において、トリガバス４５６は診断ユニット４５０によってライン４６７上に発生するＴＲＩＧＧＥＲＥＤ信号と、診断ユニット４５２によって発生する対応するＴＲＩＧＧＥＲＥＤ信号とを含んで構成される２ビット幅である。しかしながら、トリガバス４５６の幅は診断ユニット４５０の数に依存し、また、診断機能回路３００が複数の診断ユニットを含んで構成される場合、トリガバス４５６は対応する複数のビット幅であることが理解される。このように、図１４を再び参照すると、ライン４６７上のＴＲＩＧＧＥＲＥＤ信号はトリガバス４５６の出力ラインを形成し、トリガバス４５６の他方のラインは診断ユニット４５０に入力してイネーブル比較ロジック４６６及びディスエーブル比較ロジック４６８によって受信される。
【００８９】
イネーブル比較ロジック４６６はトリガバス４５６の全てのビットを受信して、これらをライン４９０上にあるイネーブル状態レジスタ４７６内に記憶された値と比較する。有効な比較がなされた場合、イネーブル比較ロジック４６６はライン４９２上のＥＮＡＢＬＥ信号を制御ロジック４６４に出力する。ライン４９２上のＥＮＡＢＬＥ信号に応答して、制御ロジック４６４は２方向ライン４８４を介して使用可能ビット４７０をセットする。更に、ライン４９２上のＥＮＡＢＬＥ信号に応答して、制御ロジック４６４がライン４８０上のＥＮＡＢＬＥ信号を診断機能ロジック４６０にセットすることによって、診断機能ロジック４６０が診断バス２３４を介してトリガメッセージを開始して機能動作を実行することができる。
【００９０】
同様に、ディスエーブル比較ロジック４６８はトリガバス４５６の全てのビットを受信して、これらのビットをバス４９４上にあるディスエーブル状態レジスタ４７８内に記憶された値と比較する。トリガバスの値がディスエーブル状態レジスタの値とマッチすると、ディスエーブル比較ロジック４６８は制御ロジック４６４へのライン４９６上にＤＩＳＡＢＬＥ信号を発生する。ライン４９６上のＤＩＳＡＢＬＥ信号に応答して、制御ロジック４６４は２方向ライン４８４を介して使用可能ビット４７０をリセットし、ライン４８０上にＥＮＡＢＬＥ信号をセットする。使用可能ビット４７０はまた、診断バス２３４を介して、或いは、論理回路４６２を制御するトリガシーケンスの記憶素子をロードしまた記憶素子にアクセスするのに使用される他の適宜なバスを介して、直接にセット及びリセットできる。
【００９１】
このように、診断ユニットの診断機能ロジック４６０はトリガメッセージを開始して、他のユニットがセットしたトリガ出力に応答して診断機能回路３００のこれらの他の診断ユニットに応じた機能を実行できる。同様に、図１４の診断ユニット４５０の診断機能ロジック４６０の動作は、トリガ信号の発生によって、他の診断ユニットの機能ロジックを使用可能とする。
【００９２】
分散型トリガシーケンシングコントローラ論理回路４６２は反復可能な方法で動作できるので、ライン４８２上の信号ＣＯＮＤＩＴＩＯＮ ＤＥＴＥＣＴによって各状態の検出がセットされるのに続いて、トリガビット４７２が次の状態検出のための次のクロックサイクルでクリアされる。反復可能な動作は反復可能ビット４７４がセットされたかどうかによって制御される。反復可能ビットがセットされていない場合、トリガビットが一旦セットされると、診断バス２３４を介してリセットされるまで「ｓｔｕｃｋ」である。
【００９３】
イネーブル比較ロジック４６６及びディスエーブル比較ロジック４６８により実行される比較は簡単な等価演算であるが、「レジスタ内にセットされる全てのビットのために、対応するビットもまたトリガバス上にセットされる」ような、より適切な比較も使用できる。
上記のことから、診断機能回路３００の各診断ユニットが単一の検出可能な状態に応答可能であることが明らかである。診断ユニットの全体としての収集は、トリガバス及び各診断ユニットのイネーブル状態レジスタ及びディスエーブル状態レジスタによって決定されるような前記バスの特定の状態に応答する各診断ユニットの能力によって提供される相互接続に基づいてより大きな能力を有する。このように、他の診断ユニットが適宜な状態を検出している或いは検出していない間に、トリガメッセージを開始でき、一定回数適宜な状態を検出する他の診断ユニットに応答して特定診断ユニットの機能を使用可能にできるようにトリガシーケンスを構築できる。このように、診断機能回路３００の診断ユニットを結合して複素シーケンスのトリガ事象を構築して任意の診断目的を達成する結果としての任意のトリガ事象を導くことができる。
【図面の簡単な説明】
【図１】本実施形態による接続点を有するテストアクセスポートコントローラを備えた集積回路を示す。
【図２】図１のテストアクセスポートコントローラを示す。
【図３】図２のテストアクセスポートコントローラに接続するための本実施形態によるデータアダプタを示す。
【図４】診断モードにおける図２のテストアクセスポートコントローラを介してオフ−チップ通信されたデータのデータフォーマットを示す。
【図５】図３のデータアダプタの実行を階層形状ブロック図で示す。
【図６】本実施形態によるメッセージのヘッダバイトのフォーマットを示す。
【図７】本実施形態によるメッセージのフォーマットを示す。
【図８】本実施形態によるメッセージコンバータを概略的に示す。
【図９】本実施形態におけるメッセージコンバータに接続されるバスのフォーマットを示す。
【図１０】本実施形態のメッセージコンバータの実行を示す。
【図１１】本実施形態のメッセージコンバータの実行を階層形状ブロック図で示す。』
【図１２】診断ユニットを備えたトリガシーケンシングコントローラの使用を示すブロック図。
【図１３】分散型トリガシーケンシング制御を備えた診断ユニットを示すブロック図。
【図１４】図１３の診断ユニットのブロック図。
【図１】
0004426655.tif 000002
【図２】
0004426655.tif 000003
【図３】
0004426655.tif 000004
【図４】
0004426655.tif 000005
【図５】
0004426655.tif 000006
【図６】
0004426655.tif 000007
【図７】
0004426655.tif 000008
【図８】
0004426655.tif 000009
【図９】
0004426655.tif 000010
【図１０】
0004426655.tif 000011
【図１１】
0004426655.tif 000012
【図１２】
0004426655.tif 000013
【図１３】
0004426655.tif 000014
【図１４】
0004426655.tif 000015