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