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