(57)【特許請求の範囲】
【請求項１】
外部入力信号に応じて動作する制御回路と、
前記制御回路に制御されたアクセスにより所定の命令の外部からの入力が可能な命令レジスタと、
前記命令レジスタの内容をデコードする命令デコーダと、
前記制御回路に制御されたアクセスによりその内容の外部への出力が可能であり、実行されるべきプログラムアドレスを生成するプログラムカウンタと、
前記プログラムカウンタの値に従ってアクセスされるプログラムメモリと
を備え、
前記プログラムメモリは、特定の処理の終了後に所定のアドレス以降のアドレスを実行しない一時休止処理を含むプログラムを格納しており、
前記所定の命令が前記命令デコーダによりデコードされた場合に前記制御回路が前記プログラムカウンタをアクセスしてその値を外部へ出力させることにより、前記一時休止処理のアドレスが出力された場合に前記特定の処理の終了が検知されるべくなしてあることを特徴とするデバッグ装置。
【請求項２】
プログラムメモリに格納されている一時休止処理は、特定の処理の終了後に所定のアドレス間をループするプログラムであることを特徴とする請求項１記載のデバッグ装置。
【請求項３】
プログラムメモリに格納されている一時休止処理は、特定の処理の終了後に特定のアドレスでプログラムの実行を待機するプログラムであることを特徴とする請求項１記載のデバッグ装置。
【請求項４】
制御回路に制御されたアクセスにより外部から入力された信号の値の保持が可能な第１のレジスタと、
前記第１のレジスタに保持された信号値を任意のタイミングで外部から入力される信号に同期して保持し、この値に従って一時休止処理を解除する第２のレジスタと
を備えたことを特徴とする請求項１記載のデバッグ装置。
【請求項５】
制御回路に制御されたアクセスによりその内容の外部への出力が可能であると共に、複数の記憶手段と接続可能な転送レジスタを備え、
プログラムメモリは、前記転送レジスタと接続可能な複数の記憶手段の内の少なくとも一部と前記転送レジスタとの間の転送プログラムを格納しており、
所定の命令が命令デコーダによりデコードされた場合に前記制御回路が前記転送レジスタをアクセスしてその値を外部へ出力させることにより、前記転送レジスタと接続可能な複数の記憶手段の内の少なくとも一部の内容の外部への出力を可能になしてあることを特徴とする請求項１記載のデバッグ装置。
【請求項６】
プログラムメモリの一部に、転送レジスタと接続し、プログラムカウンタの値によりアクセス可能であり且つ書き込み，読み出し可能な領域を有し、
制御回路の制御により転送レジスタをアクセスすることにより、前記書き込み，読み出し可能なプログラムメモリに外部から任意のプログラムの書き込みを可能になしてあることを特徴とする請求項５記載のデバッグ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデバッグ装置、即ちハードウェア上でプログラムがプログラマの意図通りに動作するか否かを検証する（デバッグする）ためのデバッグ装置に関し、特にJTAGに準拠したデバッグ装置に関する。
【０００２】
【従来の技術】
従来のデバッグ装置の一例としてJTAG(Joint Test Action Group) がIEEE標準1149.1として定めているテストアーキテクチャ及びテストインタフェイスに準拠したテストアクセスポート(Test Access Port:TAP)コントローラを用いたデバッグ装置が知られている。なお、「JTAG」とは本来はテスト容易化設計手法の標準化のための組織のことであるが、今日ではこの組織が標準化したテストインタフェイスの仕様もJTAGと通称されている。
【０００３】
そのような技術を利用したデバッグ装置の一例としてモトローラ社製の DSP161Xシリーズの LSIチップに内蔵されているテスト＆デバッグ装置の構成を図14のブロック図に示す。
【０００４】
図14において、参照符号１はJTAGがIEEE標準1149.1として定めているテストアーキテクチャ及びテストインタフェイスに準拠したテストアクセスポート(Test Access Port:TAP)コントローラ（以下、 TAPコントローラと言う）を示している。この TAPコントローラ１は、外部から入力端子54に与えられる TCK(Test ClocK)信号, 入力端子55に与えられる TMS(Test Mode Select)信号及び入力端子53に与えられるTRST(Test ReSeT)信号に従って、所定の状態遷移を行なう（詳細は図２参照）。この TAPコントローラ１の状態遷移と後述する命令デコーダ３による命令コードのデコード結果の信号とに従って生成される制御信号は後述する命令レジスタ２, フラグレジスタ５，転送レジスタ６，コントロールレジスタ16, マルチプレクサ８に与えられている。
【０００５】
命令レジスタ２は外部からのＮビットのシリアル入力であるTDI(Test Data Input)信号の入力端子51とＮビットの外部へのシリアル出力である TDO(Test Data Output)信号の出力端子52との間に構成されるJTAGにより定められているプロトコルによりアクセス可能なＮビットのスキャンパス上に位置している。なお、以下の説明では、JTAGにより定められているプロトコルによりアクセスすることをJTAGアクセスと言う。そして、命令レジスタ２は外部から TDI信号として入力されたテスト命令をこのスキャンパスを経由して格納する。なお、 TDI信号の入力端子51と TDO信号の入力端子52との間に構成されるスキャンパス上にはこの命令レジスタ２の他にフラグレジスタ５, 転送レジスタ６及びコントロールレジスタ16が位置している。
【０００６】
命令デコーダ３は、命令レジスタ２の内容、即ち命令レジスタ２に格納されている命令コードをデコードし、その結果得られた信号を TAPコントローラ１に与える。この命令デコーダ３がデコードする命令は、IEEE標準の1149.1(1990)で定義されている３種類の必須命令の他にテスト及びデバッグに必要なプライベート命令をもサポートしている。
【０００７】
フラグレジスタ５は、上述のJTAGアクセス可能なＮビットのスキャンパスを通じてアクセス可能であり、チップ内部の状態を記憶する。このフラグレジスタ５は複数ビット幅であり、たとえば JINT(JTAG割り込み), PINT(JTAG割り込みステイタス) 等の割り込みフラグ, 演算結果のキャリー, オーバフロー等のフラグを含む。
【０００８】
転送レジスタ６は、前述のJTAGアクセス可能なＮビットのスキャンパスを通じてアクセス可能であり、外部からJTAGアクセスを行なうことにより、内部のレジスタ，メモリへのアクセスが可能である。具体的には、転送レジスタ６は後述するプログラムメモリ９, 内部レジスタ10及び内部メモリ11と相互にデータの転送が可能であり、その制御は後述するコントロールレジスタ16により司られる。
【０００９】
マルチプレクサ８は、Ｎビットのスキャンパス出力の内の一つ、即ち命令レジスタ２，フラグレジスタ５，転送レジスタ６，コントロールレジスタ16の出力の内の一つを TAPコントローラ１の制御により選択し、 TDO信号としてシリアル出力する。
【００１０】
プログラムメモリ９は、前述の如く転送レジスタ６との間でデータの転送が可能であり、このチップが実行すべきプログラムを格納する。
【００１１】
内部レジスタ10はチップ内に通常備えられている一つまたは複数個のレジスタであり、前述の如く転送レジスタ６との間でデータの転送が可能である。内部メモリ11はチップ内に通常備えられている一つまたは複数個のメモリであり、前述の如く転送レジスタ６との間でデータの転送が可能である。
【００１２】
コントロールレジスタ16は、プログラムメモリ９, 内部レジスタ10, 内部メモリ11の内のいずれかと転送レジスタ６との接続を制御する。このコントロールレジスタ16の制御により、転送レジスタ６からプログラムメモリ９, 内部レジスタ10または内部メモリ11へデータが転送され、またプログラムメモリ９, 内部レジスタ10または内部メモリ11からデータが転送レジスタ６へ転送される。
【００１３】
参照符号17は割り込み制御部を示している。この割り込み制御部17は、上述のコントロールレジスタ16による転送レジスタ６とプログラムメモリ９, 内部レジスタ10, 内部メモリ11との間の転送の際の同期をとるための割り込み制御を司る。具体的には、割り込み制御部17はフラグレジスタ５から与えられるJINT信号に基づいてチップの動作を停止し、転送レジスタ６の内容をプログラムメモリ９, 内部レジスタ10, 内部メモリ11のいずれかへ転送し、また逆にプログラムメモリ９, 内部レジスタ10, 内部メモリ11のいずれかの内容を転送レジスタ６へ転送し、その後にPINT信号をセットする。
【００１４】
以上のような従来のデバッグ装置の動作は以下の如くである。まず、チップ外部から内部へのデータの書き込みの際の動作について説明する。
【００１５】
命令レジスタ２に書き込み命令の設定を、コントロールレジスタ16に書き込み先がプログラムメモリ９，内部レジスタ10, 内部メモリ11のいずれであるかの設定をそれぞれチップ外部からJTAGアクセスにより行なう。書き込むべきデータを転送レジスタ６にチップ外部からJTAGアクセスにより設定し、設定終了後にフラグレジスタ５のJINTフラグの設定をチップ外部からJTAGアクセスにより行なう。JINTフラグが設定されたことにより、割り込み制御部17はチップの動作を停止させ、転送レジスタ６の内容をコントロールレジスタ16に設定されている転送先、即ちプログラムメモリ９, 内部レジスタ10, 内部メモリ11のいずれかへ転送する。以上により、書き込み動作が完了する。
【００１６】
次に、チップ内部から外部へのデータの読み出しの際の動作について説明する。
【００１７】
命令レジスタ２に読み出し命令の設定を、コントロールレジスタ16に読み出し元がプログラムメモリ９, 内部レジスタ10, 内部メモリ11のいずれであるかの設定をそれぞれチップ外部からJTAGアクセスを用いて行なう。フラグレジスタ５のJINTフラグの設定をチップ外部からJTAGアクセスにより行なう。JINTフラグが設定されたことにより、割り込み制御部17はチップの動作を停止させ、コントロールレジスタ16に設されているデータ転送元の内容を転送レジスタ６へ転送させる。このデータ転送が終了すると、割り込み制御部17はPINTフラグを設定する。次に、外部からJTAGアクセスを用いてフラグレジスタ５の内容をモニタすることによりPINTフラグのセットを確認した後、JTAGアクセスを用いて転送レジスタ６の内容をチップ外部へ読み出す。以上により、読み出し動作が完了する。
【００１８】
【発明が解決しようとする課題】
ところで、上述のような従来のデバッグ装置においては以下の二点の問題点が課題として考えられる。第一は、データの書き込み，読み出しに際して、転送レジスタ６にプログラムメモリ９，内部レジスタ10，内部メモリ11のいずれを接続するかをハードウェア（コントロールレジスタ16）で設定しているため、ハードウェア資源の増大を招来している。更に、上述の接続の組み合わせに応じてそのハードウェア（コントロールレジスタ16）のビット幅を拡大する必要があるため、より一層のハードウェア資源の増大を招来している。
【００１９】
第二は、データ読み出し時に、レジスタ，メモリから転送レジスタ６へのデータ転送終了の検知に専用のハードウェア (割り込み制御部17) が必要であるために、上述同様にハードウェア資源の増大を招来し、しかもその制御が複雑である。
【００２０】
本発明はこのような事情に鑑みてなされたものであり、テスト及びデバッグに必要なハードウェア資源の増大を抑制し、しかもデータの書き込み先，読み出し元をソフトウェアで設定することにより、柔軟な設定を可能としたデバッグ装置の提供を目的とする。
【００２１】
【課題を解決するための手段】
本発明に係るデバッグ装置は、基本的には、外部入力信号に応じて動作する制御回路と、制御回路に制御されたアクセスにより所定の命令の外部からの入力が可能な命令レジスタと、命令レジスタの内容をデコードする命令デコーダと、制御回路に制御されたアクセスによりその内容の外部への出力が可能であり、実行されるべきプログラムアドレスを生成するプログラムカウンタと、プログラムカウンタの値に従ってアクセスされるプログラムメモリとを備え、プログラムメモリは、特定の処理の終了後に所定のアドレス以降のアドレスを実行しない一時休止処理を含むプログラムを格納していることを特徴とする。そして、所定の命令が命令デコーダによりデコードされた場合に制御回路がプログラムカウンタをアクセスしてその値を外部へ出力させることにより、一時休止処理のアドレスが出力された場合に特定の処理の終了が検知される。
【００２２】
また、本発明に係るデバッグ装置は、上述の基本構成を実現するために、プログラムメモリに格納されている一時休止処理が、特定の処理の終了後に所定のアドレス間をループするプログラムであること、または特定の処理の終了後に特定のアドレスでプログラムの実行を待機するプログラムであることを特徴とする。従って、特定の処理が終了した後は所定のアドレス間をループするプログラムまたはプログラムの実行を待機するプログラムのアドレスが外部へ出力されるので、特定の処理の終了が検知される。
【００２３】
また、本発明に係るデバッグ装置は、制御回路に制御されたアクセスにより外部から入力された信号の値の保持が可能な第１のレジスタ（DINTレジスタ）と、第１のレジスタ（DINTレジスタ）に保持された信号値を任意のタイミングで外部から入力される信号に同期して保持し、この値に従って一時休止処理を解除する第２のレジスタ（フラグレジスタ）とを備えたことを特徴とする。これにより、特定の処理が終了した後に一旦プログラムの実行が停止するが、その後にプログラムを再実行することが可能になる。
【００２４】
また更に、本発明に係るデバッグ装置は、制御回路に制御されたアクセスによりその内容の外部への出力が可能であると共に、複数の記憶手段（内部レジスタ，内部メモリ）と接続可能な転送レジスタを備え、プログラムメモリは、転送レジスタと接続可能な複数の記憶手段（内部レジスタ，内部メモリ）の内の少なくとも一部と転送レジスタとの間の転送プログラムを格納していることを特徴とする。そして、所定の命令が命令デコーダによりデコードされた場合に制御回路が転送レジスタをアクセスしてその値を外部へ出力させることにより、転送レジスタと接続可能な複数の記憶手段（内部レジスタ，内部メモリ）の内の少なくとも一部の内容の外部への出力が可能になる。
【００２５】
更に、本発明に係るデバッグ装置は、プログラムメモリの一部に、転送レジスタと接続し、プログラムカウンタの値によりアクセス可能であり且つ書き込み，読み出し可能な領域を有していることを特徴とする。従って、制御回路の制御により転送レジスタをアクセスすることにより、書き込み，読み出し可能なプログラムメモリ(RAM領域) に外部から任意のプログラムの書き込みが可能になる。具体的には、デバッグ対象のレジスタ, メモリ等と転送レジスタとの間の転送プログラムを外部から書き込み，読み出し可能なプログラムメモリ(RAM領域) に書き込むことにより、デバッグ対象を任意に選択することが可能になる。
【００２６】
【発明の実施の形態】
〔実施の形態１〕
以下、本発明をその実施の形態を示す図面に基づいて詳述する。図１は本発明に係るデバッグ装置の一構成例を示すブロック図であり、 LSIチップとして集積した場合に本発明のデバッグ装置を実現する場合に最小限必要な構成要素が示されている。
【００２７】
図１において、参照符号１はJTAGがIEEE標準1149.1で定めているテストアーキテクチャ及びテストインタフェイスに準拠したテストアクセスポート(TAP:Test Access Port)コントローラ（以下、 TAPコントローラと言う）を示している。この TAPコントローラ１は制御回路として機能し、外部から入力端子54に与えられるTCK(Test Clock) 信号, 入力端子55に与えられるTMS(Test Mode Select) 信号及び入力端子53に与えられるTRST(Test ReSet)信号に従って、後述する図２の状態遷移図に示されているように状態遷移する。そして、この TAPコントローラ１による遷移状態と後述する命令デコーダ３による命令コードのデコード結果の信号に従って生成される制御信号は後述する命令レジスタ２, DINTレジスタ４, 転送レジスタ６, プログラムカウンタ７, マルチプレクサ８に与えられている。
【００２８】
命令レジスタ２はＮビットの外部からのシリアル入力であるTDI(Test Data Input)信号の入力端子51とＮビットの外部へのシリアル出力であるTDO(Test Data Output) 信号の出力端子52との間に構成されるJTAGにより定められているプロトコルによりアクセス可能なＮビットのスキャンパス上に位置している。なお、以下の説明では、JTAGにより定められているプロトコルによりアクセスすることをJTAGアクセスと言う。そして、命令レジスタ２は、外部から TDI信号として入力されたテスト命令をこのスキャンパスを経由して格納する。なお、 TDI信号の入力端子51と TDO信号の出力端子52との間に構成されるスキャンパス上にはこの命令レジスタ２の他にDINTレジスタ４, 転送レジスタ６及びプログラムカウンタ７が位置している。
【００２９】
命令デコーダ３は、命令レジスタ２の内容、即ち命令レジスタ２に格納されている命令コードをデコードし、その結果得られた信号を TAPコントローラ１に与える。この命令デコーダ３がデコードする命令には、IEEE標準の1149.1(1990)で定義されている３種類の必須命令の他にテスト及びデバッグに必要なプライベート命令も含まれている。
【００３０】
DINTレジスタ４は第１のレジスタとして機能し、JTAGアクセス可能なＮビットのスキャンパスを通じてアクセス可能であり、外部からJTAGアクセスを行なうことによりPCブレイク信号であるデバッガ割り込み(DINT)信号を入力して保持する。このDINTレジスタ４に保持されたDINT信号は後述する２入力の論理和ゲート (ORゲート) 14に与えられている。
【００３１】
参照符号５はチップ内部の状態を記憶するための第２のレジスタとして機能するフラグレジスタを示している。このフラグレジスタ５には上述の論理和ゲート14の論理和出力信号が与えられている。論理和ゲート14にはチップ外部から入力端子56に入力されるピン入力信号DINTと前述のDINTレジスタ４の出力信号とが入力されている。なお、フラグレジスタ５はローカルバス13を介して転送レジスタ６及びプログラムカウンタ７と接続されている。
【００３２】
転送レジスタ６は、上述のJTAGアクセス可能なＮビットのスキャンパスを通じてアクセス可能である。換言すれば、外部から転送レジスタ６に対してJTAGアクセスを行なうことにより、転送レジスタ６を経由して内部のレジスタ，メモリへのアクセスが可能である。具体的には、転送レジスタ６は後述するプログラムメモリ９, 内部レジスタ10及び内部メモリ11とは内部バス12を介して相互に接続されており、更にフラグレジスタ５及びプログラムカウンタ７ともローカルバス13を介して相互に接続されている。なお、内部バス12は入出力ポート15とも接続されている。
【００３３】
プログラムカウンタ７は、JTAGアクセス可能なＮビットのスキャンパスを通じてアクセス可能であり、プログラムメモリ９から読み出されるべき命令コードのアドレスを生成して保持する。
【００３４】
マルチプレクサ８は、Ｎビットのスキャンパス出力の内の一つ、即ち命令レジスタ２，DINTレジスタ４，転送レジスタ６及びプログラムカウンタ７の出力の内の一つを TAPコントローラ１の制御により選択し、 TDO信号としてシリアル出力する。
【００３５】
プログラムメモリ９は、前述の如く、内部バス12を介して転送レジスタ６との間でデータの転送が可能であり、このチップが実行すべきプログラムを格納する。なお、プログラムメモリ９は本質的にはROM であるが、書き込み，読み出し可能な領域としての RAM領域91が設けられている。
【００３６】
内部レジスタ10はチップ内に通常備えられている一つまたは複数個のレジスタであり、前述の如く、内部バス12を介して転送レジスタ６との間でデータの転送が可能である。内部メモリ11はチップ内に通常備えられている一つまたは複数個のメモリであり、前述の如く、内部バス12を介して転送レジスタ６との間でデータの転送が可能である。
【００３７】
次に、上述の本発明のデバッグ装置の構成要素の入力信号及び出力信号について説明する。
【００３８】
TCK(Test ClocK)信号は TAPコントローラ１への入力信号であり、テストアクセスポート用のクロック信号である。 TMS(Test Mode Select)信号は TAPコントローラ１への入力信号であり、 TAPコントローラ１の状態遷移を制御する。TDI(Test Data Input)信号は命令レジスタ２及びJTAGアクセス可能なスキャンパスを有するテストデータレジスタ (DINTレジスタ４, 転送レジスタ６, プログラムカウンタ７等、以下、テストデータレジスタ４, ６, ７等と言う) へのシリアル入力信号である。
【００３９】
TDO(Test Data Output) 信号は命令レジスタ２及びJTAGアクセス可能なスキャンパスを有するテストデータレジスタ４, ６, ７等からのシリアル出力信号である。TRST(Test ReSeT)信号は TAPコントローラ１への入力信号であり、 TAPコントローラ１のリセット入力信号である。ピン入力DINT信号は論理和ゲート14への入力信号であり、デバッガ割り込み入力信号である。PCブレイクDINT信号はDINTレジスタ４への入力信号であり、プログラムメモリ９に設定されたブレイクポイントによるブレイク条件成立時に”１”になる信号である。
【００４０】
なお、これらの TAPコントローラ１への入出力信号は実際にはいずれも図示されていないホストコンピュータから入力され、ホストコンピュータへ出力される。
【００４１】
次に、上述の図１に示されている本発明のデバッグ装置の各構成要素について、より具体的に説明する。
【００４２】
TAPコントローラ１は TCK信号のクロックの全ての立ち上がりエッジにおける TMS信号の値に従って状態遷移を行ない、図２に示されている16の状態の内のいずれかの状態をとる。命令レジスタ２及びテストデータレジスタ４, ６, ７等の回路は TCK信号のクロックの立ち上がりと立ち下がりとの両方のエッジで動作する。以下、 TAPコントローラ１による状態遷移の個々の状態について、以下に具体的に説明する。
【００４３】
＊Test-Logic-Reset状態
リセット状態。この状態ではチップの通常の動作は妨げられない。 TAPコントローラ１がこの状態へ遷移する際には、命令レジスタ２の出力ラッチ (図３参照) に強制的にBYPASS命令(b'11111) がロードされる。なお、命令レジスタ２, DINTレジスタ４, 転送レジスタ６, プログラムカウンタ７の詳細な構成に関しては後述する。また、「b'」は２進表示であることを示し、本実施の形態においては命令コードは５ビットである。 TAPコントローラ１は初期状態には拘らず、TRST信号がアサートされるか、または TMS信号が TCK信号の５クロックの期間以上にわたってb'1 に維持されるとこのTest-Logic-Reset状態へ遷移し、その後は TMS信号がb'1 を維持する限りはこのTest-Logic-Reset状態を保持する。但し、 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると、 TAPコントローラ１はRun-Test/Idle 状態へ遷移する。
【００４４】
＊Run-Test/Idle 状態
テスト命令実行状態。この状態ではスキャン動作は行なわれず、命令レジスタ２に保持された命令に従って指定された動作が実行される。この状態では命令は変化しない。 TAPコントローラ１は TMS信号がb'0 を維持する限りはこの状態を保持する。 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると、 TAPコントローラ１はSelect-DR-Scan状態へ遷移する。なお、「DR」はテストデータレジスタ４, ６, ７等を表している。
【００４５】
＊Select-DR-Scan状態
他の状態へ遷移するためのテンポラリ状態。テストデータレジスタ４, ６, ７等はそれまでの値を保持する。この状態では命令は変化しない。この状態では TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１は Captur-DR状態へ遷移し、命令で指定されたテストデータレジスタ４, ６, ７等のスキャン動作が開始される。 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はSelect-IR-Scan状態へ遷移する。なお、「IR」は命令レジスタ２を表している。
【００４６】
＊Select-IR-Scan状態
他の状態へ遷移するためのテンポラリ状態。テストデータレジスタ４, ６, ７等はそれまでの値を保持する。この状態では命令は変化しない。この状態では TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１は Captur-IR状態へ遷移し、命令レジスタ２のスキャン動作が開始される。 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１は前述のTest-Logic-Reset状態へ遷移する。
【００４７】
＊ Captur-DR状態
テストデータレジスタ４, ６, ７等のシフトレジスタ段に外部から値を取り込む状態。 TCK信号のクロックの立ち上がりエッジにおいて、現在の命令で指定されたいずれかのテストデータレジスタ４, ６, ７等にそのパラレル入力ポートからデータがロードされる。指定されたテストデータレジスタ４, ６, ７等がパラレル入力ポートを有していない場合、または命令でパラレル入力が指示されない場合にはテストデータレジスタ４, ６, ７等はそれまでの値を保持する。この状態では命令は変化しない。この状態では、 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１はShift-DR状態へ遷移し、 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はExit1-DR状態へ遷移する。
【００４８】
＊Shift-DR状態
テストデータレジスタ４, ６, ７等のスキャン動作を行なう状態。現在の命令で指定されたいずれかのテストデータレジスタ４, ６, ７等が TDI信号の入力端子51と TDO信号の出力端子52との間に構成されるスキャンパスに接続され、 TCK信号のクロックの立ち上がりエッジ毎にデータが１ビットずつシリアル出力方向へシフトされる。この状態では命令は変化しない。 TAPコントローラ１は TMS信号がb'0 を維持する限りはこの状態を保持する。 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はExit1-DR状態へ遷移する。
【００４９】
＊Exit1-DR状態
他の状態へ遷移するためのテンポラリ状態。テストデータレジスタ４, ６, ７等はそれまでの値を保持する。この状態では命令は変化しない。この状態では、 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１は Update-DR状態へ遷移してスキャンプロセスを終了する。 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１はPause-DR状態へ遷移する。
【００５０】
＊Pause-DR状態
テストデータレジスタ４, ６, ７等のシフト動作を一時的に停止させる状態。テストデータレジスタ４, ６, ７等はそれまでの値を保持する。この状態では命令は変化しない。 TAPコントローラ１は TMS信号がb'0 を維持する限りはこの状態を保持する。 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はExit2-DR状態へ遷移する。
【００５１】
＊Exit2-DR状態
他の状態へ遷移するためのテンポラリ状態。テストデータレジスタ４, ６, ７等はそれまでの値を保持する。この状態では命令は変化しない。この状態では、 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はスキャンプロセスを終了して Update-DR状態へ遷移する。 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１は前述のShift-DR状態へ遷移する。
【００５２】
＊ Update-DR状態
テストデータレジスタ４, ６, ７等の出力ラッチを更新する状態。 TCK信号のクロックの立ち下がりエッジにおいてテストデータレジスタ４, ６, ７等のシフトレジスタからパラレル出力ラッチへデータが転送されるが、シフトレジスタはそれまでの値を保持する。テストデータレジスタ４, ６, ７等のパラレル出力ラッチはテストデータレジスタ４, ６, ７等がスキャン動作を行なっている間にパラレル出力の値が変化しないようにするために備えられている。この状態では命令は変化しない。この状態で TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１は前述のSelect-DR-Scan状態へ遷移し、 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１は前述のRun-Test/Idle 状態へ遷移する。
【００５３】
＊ Captur-IR状態
命令レジスタ２のシフトレジスタ段に固定値を取り込む状態。本実施の形態では、 TCK信号のクロックの立ち上がりエッジにおいて命令レジスタ２のパラレル入力ポートから固定値b'00001 がロードされる。この状態ではテストデータレジスタ４, ６, ７等はそれまでの値を保持し、命令は変化しない。この状態では、 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１はShift-IR状態へ遷移し、 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はExit1-IR状態へ遷移する。
【００５４】
＊Shift-IR状態
命令レジスタ２のスキャン動作を行なう状態。命令レジスタ２が TDI信号の入力端子51と TDO信号の出力端子52との間に構成されるスキャンパスに接続され、 TCK信号のクロックの立ち上がりエッジ毎にデータが１ビットずつシリアル出力方向へシフトされる。この状態ではテストデータレジスタ４, ６, ７等はそれまでの値を保持し、命令は変化しない。 TAPコントローラ１は TMS信号がb'0 を維持する限りはこの状態を保持する。 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はExit1-IR状態へ遷移する。
【００５５】
＊Exit1-IR状態
他の状態へ遷移するためのテンポラリ状態。命令レジスタ２はそれまでの値を保持する。この状態ではテストデータレジスタ４, ６, ７等はそれまでの値を保持し、命令は変化しない。この状態では、 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１は Update-IR状態へ遷移してスキャンプロセスを終了する。 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１はPause-IR状態へ遷移する。
【００５６】
＊Pause-IR状態
命令レジスタ２のシフト動作を一時的に停止する状態。命令レジスタ２はそれまでの値を保持する。この状態ではテストデータレジスタ４, ６, ７等はそれまでの値を保持し、命令は変化しない。 TAPコントローラ１は TMS信号がb'0 を維持する限りはこの状態を保持する。 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はExit2-IR状態へ遷移する。
【００５７】
＊Exit2-IR状態
他の状態へ遷移するためのテンポラリ状態。命令レジスタ２はそれまでの値を保持する。この状態ではテストデータレジスタ４, ６, ７等はそれまでの値を保持し、命令は変化しない。この状態では、 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１はスキャンプロセスを終了して Update-IR状態へ遷移する。 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１は前述のShift-IR状態へ遷移する。
【００５８】
＊ Update-IR状態
命令レジスタ２の出力ラッチを更新する状態。 TCK信号のクロックの立ち下がりエッジにおいて命令レジスタ２のシフトレジスタからパラレル出力ラッチへデータが転送される。命令レジスタ２の出力ラッチに新しい命令がラッチされるとそれが現在の命令になる。この状態ではテストデータレジスタ４, ６, ７等はそれまでの値を保持する。この状態では、 TCK信号のクロックの立ち上がりエッジにおいてb'1 の TMS信号が入力されると TAPコントローラ１は前述のSelect-DR-Scan状態へ遷移し、 TCK信号のクロックの立ち上がりエッジにおいてb'0 の TMS信号が入力されると TAPコントローラ１は前述のRun-Test/Idle 状態へ遷移する。
【００５９】
以上の16状態の内のいずれかを TAPコントローラ１はとるが、それらの内のPuase-DR状態及びPuase-IR状態は命令レジスタ２またはテストデータレジスタ４, ６, ７等にデータをシフトインしている間に一時的に動作を停止させるために必要であり、たとえば自動テスト装置(Automatic Test Equipment)がディスクからメモリに長いテストシーケンスをロードするような場合に必要である。
【００６０】
TAPコントローラ１はテストのために３種類の基本的な動作を行なう。その３種類の動作とは信号入力(Update-DR),実行(Run-Test/Idle),結果取り込み(Captur-DR) の各状態である。但し、これらのテスト動作は全てのテストにおいて全てが必ずしも必要ということではない。
【００６１】
マルチプレクサ８内の TDO信号出力のためのドライバは TAPコントローラ１がShift-IR状態またはShift-DR状態である場合にのみb'1 またはb'0 をドライブし、その他の状態である場合にはハイインピーダンス状態になる。
【００６２】
次に命令レジスタ２の構成について、その一構成例を示す図３のブロック図を参照して説明する。本実施の形態では、命令レジスタ２は全体としては各１ビット分のセルを下位ビット側のシリアル出力を上位ビット側のシリアル入力へそれぞれ接続することにより５ビット幅のレジスタとして構成されており、大きくはパラレル入力, シリアル入力及びシリアル出力を有するシフトレジスタ段と、パラレル出力を有し、現在実行中の命令を保持する出力ラッチとの二段構成を採っている。
【００６３】
命令レジスタ２を構成する個々のセルの内部構成は同一であり、図３のブロック図に参照符号200 にて示されている。具体的には、命令レジスタ２の各セル200 のシフトレジスタ段はマルチプレクサ231 とフリップフロップ232 とで構成され、出力ラッチはフリップフロップ233 で構成されている。シフトレジスタ段を構成するマルチプレクサ231 はパラレル入力及びシリアル入力を有し、 Shift/#Captur信号、即ち TAPコントローラ１がShift-DR状態またはShift-IR状態において出力する Shift信号と、 TAPコントローラ１が Captur-DR状態または Captur-IR状態において出力する信号の反転信号である #Captur信号に応じていずれかをフリップフロップ232 へ出力する。フリップフロップ232 は、 TCK信号をトリガ信号としてマルチプレクサ231 の出力信号をラッチし、シリアル出力として次段のセルまたは TDO信号として外部へ出力する。フリップフロップ233 は、 Update-IR信号をトリガ信号としてフリップフロップ232 の出力をラッチし、それを命令デコーダ３へパラレル出力する。
【００６４】
従って、 TDI信号が命令レジスタ２の初段のセル200 のマルチプレクサ231 へ入力されてフリップフロップ232 からの出力信号が次段のセル200 のマルチプレクサ231 に入力される動作が反復されて、というようにして最終段のセル200 のフリップフロップ232 からの出力信号が TDO信号としてマルチプレクサ８へ出力される。また、各セル200 のフリップフロップ233 からの出力は５ビットのパラレル出力として命令デコーダ３に入力される。
【００６５】
このような構成の命令レジスタ２では、初段のセル200 へのシリアル入力と最終段のセル200 からのシリアル出力が図１の TDI信号の入力端子51と TDO信号の出力端子52 (マルチプレクサ８) との間で５ビットシリアルのスキャンパスを形成する。そして、このようなスキャンパスでは、 TAPコントローラ１がShift-IR状態に遷移した後の TCK信号のクロックの立ち上がりに同期して各セル200 が順次データを転送する。各セル200 のマルチプレクサ231 へのパラレル入力からは TAPコントローラ１が Captur-IR状態に遷移した後の TCK信号のクロックの立ち上がりに同期して固定値b'00001 の各ビットがロードされる。なお、この固定値はb'1 がLSB であり、最終段のセル200 にロードされる。各セル200 のシフトレジスタ段のフリップフロップ232 に保持された命令コードのビットは TAPコントローラ１が Update-IR状態である場合の TCK信号のクロックの立ち下がりに同期して出力ラッチを構成するフリップフロップ233 へ転送される。また、各セル200 のパラレル出力ラッチには TAPコントローラ１がTest-Logic-Reset状態に遷移した場合にリセットされて TCK信号のクロックの立ち下がりに同期してb'11111(BYPASS命令) がセットされ、TRST信号がアサートされた場合は TCK信号のクロックとは非同期にb'11111(BYPASS命令) がセットされる。
【００６６】
以上のような TAPコントローラ１の各状態における命令レジスタ２の動作を図４の一覧図にまとめて示す。
【００６７】
命令デコーダ３がデコードする命令は、IEEE標準1149.1(1990)で定義されている３つの必須の命令以外にも４つのプライベート命令をサポートする。テスト命令は全て５ビットのコードを有し、各命令のビットパターンと使用するスキャンレジスタとを図５の一覧図に示す。なお、図５においては、命令コードは16進表示されている。なお、以下の説明では、16進表示であることをh'で示す。
【００６８】
図５に示されている命令の内のBYPASS命令 (命令コードh'1F),SAMPLE/PRELOAD命令 (命令コードh'02) 及びEXTEST命令 (命令コードh'00) が必須命令であるが、本発明とは直接の関係は無いのでそれらの詳細は省略する。なお、BYPASS命令はバイパスレジスタを動作させる必須の標準命令であり、SAMPLE/PRELOAD命令とEXTEST命令とはバウンダリスキャンレジスタを動作させる必須の標準命令であってバウンダリスキャンレジスタ命令と呼ばれる。
【００６９】
本発明に特有な命令は、 SETDINT命令 (命令コードh'16),RD＿PC命令 (命令コードh'0C),RD＿Trans 命令 (命令コードh'0E) 及びWR＿Trans 命令 (命令コードh'0F) である。 SETDINT命令 (命令コードh'16) はプログラムのデバッグ時にデバッガとモニタプログラムとのコミュニケーションを行なうための命令である。RD＿PC命令 (命令コードh'0C) はプログラムカウンタ７のラッチの出力をサンプリングするための命令である。RD＿Trans 命令 (命令コードh'0E),及びWR＿Trans 命令 (命令コードh'0F) はそれぞれ転送レジスタ６に対するサンプリング, 書き込みを行なう命令である。以上の４つのプライベート命令の使用方法の詳細に関しては本発明のデバッグ装置の動作説明の際に説明する。
【００７０】
図６はDINTレジスタ４の構成例を示すブロック図である。DINTレジスタ４は１ビットレジスタであり、図１の TDI信号とDINT信号とを入力し、 Shift/#Captur信号によりいずれかを出力するマルチプレクサ431 と、このマルチプレクサ431 の出力信号を TCK信号をトリガ信号としてラッチするフリップフロップ432 と、論理積ゲート436 の出力信号をトリガ信号としてフリップフロップ432 の出力信号をラッチするフリップフロップ433 と、フリップフロップ433 の出力信号とDINT信号とを入力し、 SETDINT信号によりいずれかを出力するマルチプレクサ434 と、 SETDINT信号と Update-DR信号とを入力する上述の論理積ゲート436 とで構成されている。
【００７１】
マルチプレクサ431 へのシリアル入力は図１の TDI信号であり、これがフリップフロップ432 に一旦ラッチされた後に出力信号としてマルチプレクサ８へシリアル出力されるとにより、１ビットのスキャンパスが形成される。このスキャンパスでは、 TAPコントローラ１がShift-DR状態に遷移した後の TCK信号のクロックの立ち上がりに同期して、マルチプレクサ431 へのシリアル入力からのデータをフリップフロップ432 が取り込み、シリアル出力へデータ転送する。一方、DINT入力からは、 TAPコントローラ１が Captur-DR状態に遷移した後の TCK信号のクロックの立ち上がりに同期して、図１のPCブレイクDINT信号をフリップフロップ432 が取り込み、シリアル出力へデータ転送する。更に、フリップフロップ433,マルチプレクサ434,論理積ゲート436 によって、 SETDINT命令で TAPコントローラ１が Update-DR状態である場合の TCK信号のクロックの立ち下がりに同期して、フリップフロップ432 の値がフリップフロップ433 に取り込まれ、マルチプレクサ434 のDINT出力から図１の論理和ゲート14へ出力される。 SETDINT命令以外の場合には、DINT出力へは図１のPCブレイクDINTの値が出力される。
【００７２】
フラグレジスタ５は、一般的なコンピュータのそれと同様に、 LSIチップ内部の種々の状態を格納する複数ビット幅のレジスタである。この種々の状態には、演算結果のキャリー, オーバフロー等のフラグが含まれる他、本実施の形態に関連するDINT (デバッガ割り込み) 等の割り込み等の必要な状態の数に応じたビット幅が必要である。本実施の形態においてはこれらの内のDINTの１ビットのみが関係する。DINTビットは、ローカルバス13にも接続されており、DINTレジスタ４によるアクセス以外にローカル  バス13を介したアクセスも可能である。
【００７３】
図７は転送レジスタ６の１ビット分のセルの構成例を示すブロック図である。転送レジスタ６はJTAGアクセスが可能であり、ローカルバス13及び内部バス12に接続されているため、転送レジスタ６に対してチップ外部からJTAGアクセスすることにより、ローカルバス13及び内部バス12に接続される全てのチップ内部のレジスタ, メモリのアクセスがチップ外部から可能になる。
【００７４】
転送レジスタ６の各１ビット分のセル600 は、パラレルデータを保持するデータラッチ630,シリアルデータを保持するシフトレジスタ段 (フリップフロップ632)及びシリアルデータをデータラッチ630 へ転送する出力ラッチ (フリップフロップ633)のラッチ類と、マルチプレクサ631, 634, 635 及び論理積ゲート636 とで構成される。
【００７５】
マルチプレクサ635 にはパラレル入力とマルチプレクサ634 の出力とを入力し、WR＿Trans 命令により TAPコントローラ１が出力するWR＿Trans 信号に応じていずれかをデータラッチ630 へ出力する。マルチプレクサ631 にはデータラッチ630 の保持値とシリアル入力とが入力され、 Shift/#Captur信号に応じていずれかを出力する。フリップフロップ632 は TCK信号にをトリガとしてマルチプレクサ631 の出力をラッチしてシリアル出力として出力する。フリップフロップ633 は論理積ゲート636 の出力信号をトリガとしてフリップフロップ632 のシリアル出力をラッチして出力する。マルチプレクサ634 にはフリップフロップ633 の出力信号とデータラッチ630 の保持値とが入力され、WR＿Trans 命令により TAPコントローラ１が出力するWR＿Trans 信号に応じていずれかをマルチプレクサ635 へ出力する。なお、論理積ゲート636 にはWR＿Trans 信号とUpdate-DR 状態において TAPコントローラ１が出力するUpdate-DR 信号とが入力される。
【００７６】
本実施の形態の転送レジスタ６は図７に示されているセル600 を各ビットとする16ビットのレジスタである。各セル600 は、下位ビット側のフリップフロップ632 のシリアル出力が上位ビット側のマルチプレクサ631 のシリアル入力にそれぞれ接続されることにより16ビット幅に構成され、図１に示されているように、 TDI信号の入力端子51と TDO信号の出力端子62 (マルチプレクサ８) との間で16ビットのスキャンパスを形成する。
【００７７】
このスキャンパスでは、マルチプレクサ631 及びフリップフロップ632 によって、 TAPコントローラ１がShift-DR状態に遷移した後の TCK信号のクロックの立ち上がりに同期して、マルチプレクサ631 のシリアル入力からフリップフロップ632 のシリアル出力へデータが転送されると同時にフリップフロップ632 の出力データがフリップフロップ632 に取り込まれる。データラッチ630 の出力であるパラレル出力からは、 TAPコントローラ１が Captur-DR状態に遷移した後の TCK信号のクロックの立ち上がりに同期して、データラッチ630 の保持値がマルチプレクサ631 を経由してフリップフロップ632 にロードされる。フリップフロップ633,マルチプレクサ634,論理積ゲート636,マルチプレクサ635 によって、フリップフロップ632 に保持されている値はWR＿Trans 命令で TAPコントローラ１が Update-DR状態である場合の TCK信号のクロックの立ち下がりに同期してフリップフロップ633 に取り込まれ、マルチプレクサ634 及び635 を経由してデータラッチ630 に入力される。WR＿Trans 命令以外の場合には、 TDI信号であるパラレル入力がマルチプレクサ635 経由してデータラッチ630 に入力される。
【００７８】
図８はプログラムカウンタ７の１ビット分のセルの構成例を示すブロック図である。プログラムカウンタ７は、その機能に関しては一般的なコンピュータのそれと同様に、インクリメント, ジャンプ, ループ等の機能を有しており、このカウント値 (PC値) をアクセスアドレスとしてプログラムメモリ９をアクセスすることにより、命令コードが出力される。但し、本発明においては、プログラムカウンタ７の本来の機能は重要ではなく、プログラムカウンタ７の値がJTAGアクセス可能であり、チップ外部からモニタ可能であることが重要である。
【００７９】
本実施の形態のプログラムカウンタ７は図８に示されているセル700 を各ビットとする16ビットのレジスタである。プログラムカウンタ７の各セル700 は、インクリメント, ジャンプ, ループ等の処理後のパラレルデータを保持するデータラッチ730 及びシリアルデータを保持するシフトレジスタ段 (フリップフロップ732)のラッチ類と、マルチプレクサ731 とで構成されている。
【００８０】
データラッチ730 にはパラレル入力が入力され、マルチプレクサ731 にはデータラッチ730 の保持値とシリアル入力とが入力され、 #Shift/Captur信号、即ち TAPコントローラ１がShift-DR状態またはShift-IR状態において出力する信号の反転信号である#Shift信号と、 TAPコントローラ１が Captur-DR状態または Captur-IR状態において出力するCaptur信号に応じていずれかをフリップフロップ232 へ出力する。フリップフロップ732 は TCK信号をトリガとしてマルチプレクサ731 の出力信号をラッチしてシリアル出力として出力する。
【００８１】
そして、各セル700 は、下位ビット側のフリップフロップ732 のシリアル出力が上位ビット側のマルチプレクサ731 のシリアル入力にそれぞれ接続されることにより16ビット幅に構成され、図１に示されているように、 TDI信号の入力端子51と TDO信号の出力端子52 (マルチプレクサ８) との間で16ビットのスキャンパスを形成する。
【００８２】
このスキャンパスでは、マルチプレクサ731 及びフリップフロップ732 によって、 TAPコントローラ１がShift-DR状態に遷移した後の TCK信号のクロックの立ち上がりに同期して、マルチプレクサ731 のシリアル入力からフリップフロップ732 のシリアル出力へデータが転送されると同時にフリップフロップ732 がデータを取り込む。データラッチ730 の出力であるパラレル出力からは、 Captur-DR状態に遷移した後の TCK信号のクロックの立ち上がりに同期して、データラッチ730 の値がフリップフロップ732 へロードされる。
【００８３】
マルチプレクサ８は、 TAPコントローラ１がShift-IR状態及びShift-DR状態である場合にのみハイレベルまたはローレベルの信号、換言すればb'1 またはb'0 の信号をドライブする。マルチプレクサ８は、 TAPコントローラ１がShift-IR状態である場合には、命令レジスタ２の最終段のシリアル出力を選択して TDO信号として出力する。また、マルチプレクサ８は、 TAPコントローラ１がShift-DR状態でああり、且つ SETDINT命令が実行される場合にはDINTレジスタ４のシリアル出力を選択し、RD＿PC命令が実行される場合にはプログラムカウンタ７の最終段のシリアル出力を選択し、RD＿Trans 命令, WR＿Trans 命令が実行される場合には転送レジスタ６最終段のシリアル出力を選択し、それぞれ TDO信号として出力する。なお、 TAPコントローラ１がその他の状態である場合には、マルチプレクサ８はハイインピーダンス状態となる。
【００８４】
プログラムメモリ９は、その機能に関しては一般的なコンピュータのそれと同様に、コンピュータが処理を実行する際に必要なプログラムの命令コードを格納するメモリであり、プログラムカウンタ７が指示するアドレス値に従って命令コードを格納する。但し、本発明のデバッグ装置においては、図９のフローチャートに示されているモニタプログラムがプログラムメモリ９の特定の位置に格納されている必要がある。
【００８５】
この図９に示されているモニタプログラムは、フラグレジスタ５のDINTビットにb'1 がセットされた場合、換言すればDINT割り込みが発生した場合に実行される。これは、フラグレジスタ５のDINTビットにb'1 がセットされた場合に、プログラムカウンタ７のPC値をモニタプログラムの先頭番地にジャンプさせることで容易に実現可能である。但し、ジャンプする前のアドレスをなんらかの記憶手段に記憶しておき、そのアドレスへモニタプログラム実行後のリターン時に戻れるようにしておくこと、いわゆるコンテキストロード／リストアも必要である。更に、このDINT割り込みの発生によるモニタプログラムの実行開始時点からリターンするまでの期間は、フラグレジスタ５またはプログラムカウンタ７が多重のDINT割り込みを受け付けないように機構的な工夫をする必要がある。
【００８６】
内部レジスタ10は、内部バス12を介して転送レジスタ６と接続する複数個のレジスタである。プログラムにより転送レジスタ６との間でデータの転送が可能である。
【００８７】
内部メモリ11は、内部バス12を介して転送レジスタ６と接続する複数個のメモリである。プログラムにより転送レジスタ６との間でデータの転送が可能である。
【００８８】
内部バス12は、転送レジスタ６をプログラムメモリ９, 内部レジスタ10及び内部メモリ11と接続している。ローカルバス13は、転送レジスタ６をフラグレジスタ５及びプログラムカウンタ７と接続している。
【００８９】
論理和ゲート14は、チップ外部から設定されるピン入力DINT信号とDINTレジスタ３の出力信号との論理和演算を行なう論理ゲートであり、その結果はフラグレジスタ５に与えられている。
【００９０】
入出力ポート15は、内部バス12と接続しており、図１に示されている本発明のデバッグ装置の LSIチップ外部のメモリ等を接続することが可能である。入出力ポート15により、プログラムによる転送レジスタ６と LSIチップ外部のメモリ等との間でのデータの転送が可能である。
【００９１】
以上のように構成された本発明のデバッグ装置の動作について以下に説明する。なお、本実施の形態は、上述の構成を最低限有する LSIチップと、この LSIチップとTDI, TDO, TCK, TMS, (TRST)の４本(5本) の信号線で接続されるホストコンピュータとからなるデバッグ装置のハンドシェイクに関するものであり、以下の動作の説明では、図１に示されている本発明のデバッグ装置にホストコンピュータが接続された構成を前提とする。また、ホストコンピュータに関しては、TDI, TDO, TCK, TMS, (TRST)信号のプロトコルが、JTAGで定められているIEEE1149.1標準に準拠していれば、換言すればJTAGアクセス可能であれば特に限定されるものではない。
【００９２】
まず、図１に示されている本発明のデバッグ装置にホストコンピュータからどのようにして命令を設定し、それがどのように実行されるかについて、前述の４つのプライベート命令に関して説明する。なお、命令の設定手順はいずれの命令に関しても同様である。前述の図２の状態遷移図において、 TAPコントローラ１が下記の状態遷移を行なうようにホストコンピュータが TMS信号をその値を変化させつつ TAPコントローラ１に入力する。このホストコンピュータから TAPコントローラ１へ入力された TMS信号の値は、 TCK信号のクロックの立ち上がりに同期して TAPコントローラ１にサンプルされる。
【００９３】
Test-Logic-Reset  →  Run-Test/Idle   →  Select-DR-Scan  →  Select-IR-Scan  →   Captur-IR  →  Shift-IR  →  …  →  Shift-IR  →  Exit1-IR  →  Update-IR   →  Run-Test/Idle   →  …
【００９４】
このような状態遷移において、 TAPコントローラ１が Captur-IR状態である間の TCK信号のクロックの立ち上がりに同期して、命令レジスタ２のシフトレジスタ段 (図３に示されている命令レジスタ２の各セル200 のフリップフロップ232)に５ビットの固定値b'00001 の各ビットがパラレルにロードされる。次のShift-IR状態は、命令レジスタ２のビット幅に対応する回数が反復される。
【００９５】
本実施の形態では命令レジスタ２のビット幅は前述の如く５ビットであるため、ホストコンピュータが TAPコントローラ１に対して５回連続してb'0 の TMS信号を与えることにより、 TAPコントローラ１がShift-IR状態を５回反復する状態遷移を行なう。この際、ホストコンピュータは、命令コードをその LSBから順に TDI信号として TAPコントローラ１に入力する。具体的には、図３において、命令レジスタ２へ TDI信号として初段のセル200 にシリアル入力されたデータが各セル200 のフリップフロップ232 を介して順次シリアル出力から次段のセル200 のフリップフロップ232 へ出力される。その結果、最終段のセル200 から TDO信号としてb'00001 がシリアル出力される。
【００９６】
そして、上述のShift-IR状態が５回反復された後はホストコンピュータはb'1 の TMS信号を２回連続して出力する。これにより、 TAPコントローラ１はExit1-IR状態を経て Update-IR状態に遷移する。 TAPコントローラ１が Update-IR状態である間の TCK信号のクロックの立ち下がりに同期して命令レジスタ２では、各セル200 のシリアルラッチ（フリップフロップ232)にラッチされているデータ(TDI信号として入力されたデータ) がパラレル出力ラッチ (フリップフロップ233)へデータ転送されてラッチされることにより、命令の設定が完了する。
【００９７】
このようにして命令レジスタ２に設定された命令は命令デコーダ３へ送られてデコードされ、 TAPコントローラ１の状態遷移に同期して、スキャンパスの選択, テストデータレジスタ４, ６, ７等への書き込み／読み出しの指定, マルチプレクサ８での TDO信号出力の選択, それぞれに必要な信号の生成が行なわれる。以下、前述の４つのプライベート命令が設定されている場合の動作について具体的に説明する。
【００９８】
命令レジスタ２に SETDINT命令が設定された場合にはスキャンパスとしてDINTレジスタ４が選択される。そして、 TAPコントローラ１が以下の状態遷移を行なうようにホストコンピュータが TMS信号をその値を変化させつつ TAPコントローラ１に入力する。なお、以下の説明ではすべて、 TMS信号と TCK信号のクロックのタイミングに関しては前述の命令設定の場合と同様である。
【００９９】
Run-Test/Idle   →  Select-DR-Scan  →   Captur-DR  →  Shift-DR  →  Exit1-DR  →  Update-DR   →  Run-Test/Idle →  …
【０１００】
このような状態遷移において、 TAPコントローラ１が Captur-DR状態である間の TCK信号のクロックの立ち上がりに同期して、図６に示されているDINT入力 (PCブレイクDINT入力) の値がDINTレジスタ４のフリップフロップ432 にロードされる。Shift-DR状態では、DINTレジスタ４をDINT状態にセットするために、ホストコンピュータから TDI信号としてb'1 が入力される。DINTレジスタ４は１ビット幅であるため、Shift-DRの遷移回数は１回である。この際、 TDO信号としては現在のDINTの値が出力される。
【０１０１】
上述の Captur-DR状態から更にShift-DR状態, Exit1-DR状態を経て状態遷移が進んで TAPコントローラ１が Update-DR状態である間の TCK信号のクロックの立ち下がりに同期して、DINTレジスタ４では、シリアルラッチ (フリップフロップ432)にラッチされているデータ(TDIから入力されたデータ) がパラレル出力ラッチ (フリップフロップ433)へデータ転送され、図１に示されている論理和ゲート14を経てフラグレジスタ５へ送られる。これにより、フラグレジスタ５のDINTフラグがセットされる。
【０１０２】
命令レジスタ２にRD＿PC命令が設定された場合にはスキャンパスとしてプログラムカウンタ７が選択される。そして TAPコントローラ１が以下の状態遷移を行なうようにホストコンピュータが TMS信号をその値を変化させつつ TAPコントローラ１に入力する。
【０１０３】
Run-Test/Idle   →  Select-DR-Scan  →   Captur-DR  →  Shift-DR (16回) →  Exit1-DR  →  Update-DR   →  Run-Test/Idle   →  …
【０１０４】
このような状態遷移において、 TAPコントローラ１が Captur-DR状態である間の TCK信号のクロックの立ち上がりに同期して、その時点のプログラムカウンタ７の値 (PC値) がシリアルラッチにロードされる。具体的には、図８に示されている各セル700 において、データラッチ730 の値がマルチプレクサ731 を介してフリップフロップ732 にロードされる動作が、プログラムカウンタ７は16ビット幅であるため、16個のセル700 のシリアルに接続された16個のシリアルレジスタ (フリップフロップ732)に対して同時に実行される。
【０１０５】
上述の Captur-DR状態の次のShift-DR状態においてはプログラムカウンタ７に対する書き込みは出来ないので、ホストコンピュータは TDI信号として暫定値h'ffffを出力してプログラムカウンタ７に入力する。但し、この暫定値がどのような値であっても動作には影響しない。そして、Shift-DR状態が16回反復されることにより、先の Captur-DR状態においてプログラムカウンタ７の各セル700 のフリップフロップ732 にロードされていた16ビットのプログラムカウンタ７の値が LSB側から TDO信号としてシリアル出力される。なお、 Update-IR状態では何も起こらない。
【０１０６】
命令レジスタ２にRD＿Trans 命令が設定された場合にはスキャンパスとして転送レジスタ６が選択される。そして、 TAPコントローラ１が以下の状態遷移を行なうようにホストコンピュータが TMS信号をその値を変化させつつ TAPコントローラ１に入力する。
【０１０７】
Run-Test/Idle   →  Select-DR-Scan  →   Captur-DR  →  Shift-DR (16回) →  Exit1-DR  →  Update-DR   →  Run-Test/Idle   →  …
【０１０８】
このような状態遷移において、 TAPコントローラ１が Captur-DR状態である間の TCK信号のクロックの立ち上がりに同期して、その時点の転送レジスタ６の値がシリアルラッチにロードされる。具体的には、図７に示されている各セル600 において、データラッチ630 の値がマルチプレクサ631 を介してフリップフロップ632 にロードされる動作が、転送レジスタ６は16ビット幅であるため、シリアルに接続された16個のシリアルレジスタに対して同時に実行される。
【０１０９】
RD＿Trans 命令が実行される場合、上述の状態遷移中のShift-DR状態では転送レジスタ６に対する書き込みは行なわないので、ホストコンピュータは TDI信号として暫定値h'ffffを出力して転送レジスタ６に入力する。但し、この暫定値がどのような値であっても動作には影響しない。そして、Shift-DR状態が16回反復されることにより、先の Captur-DR状態において転送レジスタ６の各セル600 のフリップフロップ632 にロードされていた16ビットの値が LSB側から TDO信号としてシリアル出力される。なお、 Update-IR状態では何も起こらない。
【０１１０】
命令レジスタ２にWR＿Trans 命令が設定された場合にも、上述のDR-Trans命令の場合と同様に、スキャンパスとして転送レジスタ６が選択される。そして、 TAPコントローラ１が以下の状態遷移を行なうようにホストコンピュータが TMS信号をその値を変化させつつ TAPコントローラ１に入力する。
【０１１１】
Run-Test/Idle   →  Select-DR-Scan  →   Captur-DR  →  Shift-DR (16回) →  Exit1-DR  →  Update-DR   →  Run-Test/Idle   →  …
【０１１２】
このような状態遷移において、 TAPコントローラ１が Captur-DR状態である間の TCK信号のクロックの立ち上がりに同期して、その時点の転送レジスタ６の値がシリアルラッチにロードされる。具体的には、図７に示されている各セル600 において、データラッチ630 の値がマルチプレクサ631 を介してフリップフロップ632 にロードされる動作が、転送レジスタ６は16ビット幅であるため、シリアルに接続された16個のシリアルレジスタに対して同時に実行される。
【０１１３】
上述の Captur-DR状態から次に状態遷移が進んで TAPコントローラ１がShift-DR状態である間は、ホストコンピュータから転送レジスタ６に任意の値を TDI信号として入力することが可能である。この際、16ビットの入力値の LSB側から入力される。一方、Shift-DR状態が16回反復されることにより、先の Captur-DR状態において転送レジスタ６の各セル600 のフリップフロップ632 にロードされていた値が LSB側から TDO信号としてシリアル出力される。
【０１１４】
上述のShift-DR状態から更に状態遷移が進んでExit1-DR状態を経て TAPコントローラ１が Update-DR状態である間の TCK信号のクロックの立ち下がりに同期して、転送レジスタ６ではシリアルラッチにあるデータ(TDI信号として入力されたデータ) がパラレル出力ラッチへデータ転送され、転送レジスタ６にセットされる。具体的には、図７においてフリップフロップ632 にラッチされたデータがフリップフロップ633 にラッチされ、更にその出力がマルチプレクサ634,マルチプレクサ635 を経てデータラッチ630 にラッチされる。この動作は16ビット分のラッチ全てに対して同時に実行される。
【０１１５】
本発明のデバッグ装置は上述の４つのプライベート命令を用いてデバッグを行なうが、以下にその詳細を説明する。ところで、一般的にデバッグ装置ではデバッグ対象の LSIチップ内部のレジスタ, メモリの読み出し／書き込みの指定, ブレイクポイント（デバッグを行なうためにプログラムの実行を停止させるPC値) の設定等を行なう必要がある。この際、デバッグ対象の LSIチップとデバッグを行なうホストコンピュータとの間でハンドシェイクを行なう必要がある。
【０１１６】
LSIチップの動作中においてフラグレジスタ５のDINTフラグがセットされると、プログラムカウンタ７の値 (PC値) は、図９にフローチャートが示されているモニタプログラムが格納されている先頭番地にセットされ、モニタプログラムが実行される。DINTフラグがセットされる条件としては以下の３条件がある。
【０１１７】
第１の条件： LSIチップのピン入力DINTにb'1 がセットされた場合
第２の条件：PC値によりブレイクした場合
第３の条件： SETDINT命令を実行した場合
【０１１８】
但し、上述の３条件の内の第２の条件は、プログラムメモリ９の特定アドレスを実行した (実行しようとした) 場合を検知してブレイクさせる条件であり、本発明とは直接の関係は無いので、その詳細に関しては省略する。
【０１１９】
図９において、モニタプログラムが実行されるとまず最初の手順として、デバッグの実行により破壊される可能性があるレジスタ内容を予め退避させるためのコンテキスセーブが行なわれる (ステップS11)。その後の手順は、転送レジスタ６への書き込みであるか、読み出しであるか、またはモニタプログラムの終了であるかによって異なる。この条件分岐をモニタプログラムで処理するためには、後述するCHCK＿DINTルーチン (ステップS12)を実行した後、所望の処理を記述したプログラムの先頭アドレスをホストコンピュータから転送レジスタ６に書き込み、その値をプログラムカウンタ(PC)７へ転送する (ステップS13)。これにより所望の処理を記述したアドレスへ処理がジャンプする。
【０１２０】
まず、転送レジスタ６への書き込みの場合の処理について説明する。この処理は、上述の条件分岐の際にも用いられる。基本的には、所望の値をWR＿Trans 命令を用いてホストコンピュータから LSIチップに対して書き込めばよいが、 LSIチップ側の状態を検知し、適宜のタイミングで書き込む必要がある。このタイミング同期のとり方が図11に示されている。
【０１２１】
図11に示されているように、ホストコンピュータは、WR＿Trans 命令を実行する前に、RD＿PC命令を発行 (ステップS21)して LSIチップの実行プログラムアドレスを観測する。一方、 LSIチップ側では、上述の図９に示されているようなモニタプログラムを実行しているので、モニタプログラム内の一時休止処理であるCHCK＿DINTルーチンに処理が移される (ステップS14)。このCHCK＿DINTルーチン (ステップS100) は、図10のフローチャートに示されているように２つのループで構成されており、最初のループ (ステップS101) がDINT→b'0 待ちであり、次のループ (ステップS102) がDINT→b'1 待ちである。CHCK＿DINTルーチン (ステップS100) はプログラムメモリ内の固定番地に割り付けられているので、 LSIチップ外部 (ホストコンピュータ) からは、実行中のPC値をRD＿PC命令により観測することで、いずれのループを実行しているかを検知することができる。
【０１２２】
モニタプログラムにおいて、最初のDINT→b'0 待ちループは、フラグレジスタ５のDINTフラグがb'0 になれば解除される。モニタプログラム実行中においては、 SETDINT命令以外の命令発行でDINTフラグはクリアされるので、ホストコンピュータからのRD＿PC命令発行により解除され、次のDINT→b'1 待ちループに入る。DINT→b'1 待ちループは、フラグレジスタ５のDINTフラグがb'1 になれば解除される。モニタプログラム実行中においては、 SETDINT命令の命令発行でDINTフラグはセットされ、DINT→b'1 待ちループは解除される。つまり、モニタプログラムは、ホストコンピュータから SETDINT命令が発行されるまでDINT→b'1 待ちループを反復することにより事実上は停止していることになる。
【０１２３】
ホストコンピュータはRD＿PC命令により LSIチップの実行PC値を観測し、モニタプログラムがDINT→b'1 待ちループで停止していることを確認した後、WR＿Trans 命令 (ステップS23)により転送レジスタ６へ所望の値を書き込む。
【０１２４】
ホストコンピュータは転送レジスタ６への所望の値の書き込み終了後、DINT→b'1 待ちループで停止しているモニタプログラムに対して、ループ解除→再スタートさせるために SETDINT命令を発行する (ステップS24)。モニタプログラムはホストコンピュータからの SETDINT命令により、DINT→b'1 待ちループを解除し、プログラムメモリに記述された次の処理を続行する。転送レジスタ６に対する書き込み終了後のモニタプログラムの処理としては、転送レジスタ６に接続するバス (内部バス12, ローカルバス13) を介して転送レジスタ６から転送可能なレジスタやメモリへ転送する処理が考えられる (ステップS15)。
【０１２５】
これらの処理に必要なプログラムは予めモニタプログラムとして、プログラムメモリ９に格納されている。そのようなプログラムがプログラムメモリ９に格納されていない場合でも、プログラムメモリの RAM領域91へ転送レジスタ６の内容を転送する処理がモニタプログラムに用意されていれば、ホストコンピュータからの転送レジスタ６への書き込み処理を行なうことによりモニタプログラムの追加も可能である。
【０１２６】
次に、転送レジスタ６からの読み出しの場合の処理について説明する。基本的には、RD＿Trans 命令を用いてホストコンピュータが転送レジスタ６の値を読めばよいが、 LSIチップ側の状態を検知し、適宜のタイミングで読み出す必要がある。このタイミング同期のとり方が図12に示されている。
【０１２７】
図12に示されているように、ホストコンピュータは、RD＿Trans 命令を実行する前に、RD＿PC命令を発行 (ステップS31)して LSIチップの実行プログラムアドレスを観測する。一方、 LSIチップ側では、上述の図９のようなモニタプログラムを実行しているので、転送レジスタ６へ転送する処理 (ステップS16)を実行した後、モニタプログラム内のCHCK＿DINTルーチン (ステップS17)に処理が移される。転送レジスタ６へ転送する処理は、転送レジスタ６に接続するバス (内部バス12, ローカルバス13) を介して転送レジスタ６へ転送出来るレジスタ, メモリから転送する処理が考えられる。
【０１２８】
これらの処理に必要なプログラムは予めモニタプログラムとしてプログラムメモリに格納されている。そのようなプログラムがプログラムメモリ９に格納されていない場合でも、プログラムメモリの RAM領域91へ転送レジスタ６の内容を転送する処理がモニタプログラムに用意されていれば、ホストコンピュータからの転送レジスタ６への書き込み処理を行なうことにより、モニタプログラムの追加も可能である。
【０１２９】
ホストコンピュータはRD＿PC命令 (ステップS31)により LSIチップの実行PC値を観測し、モニタプログラムがDINT→b'1 待ちループで停止していることを確認した後 (ステップS32)、RD＿Trans 命令 (ステップS33)により転送レジスタ６から値を読み出す。ホストコンピュータは転送レジスタ６からの読み出し終了後、DINT→b'1 待ちループで停止しているモニタプログラムに対して、ループ解除→再スタートさせるために SETDINT命令を発行する (ステップS34)。モニタプログラムはホストコンピュータからの SETDINT命令により、DINT→b'1 待ちループを解除しプログラムメモリに記述された次の処理を続行する。
【０１３０】
以上に説明した転送レジスタ６への書き込み／読み出しの処理の組み合せにより、転送レジスタ６と接続する全てのレジスタ／メモリ (プログラムメモリ９, 内部レジスタ10, 内部メモリ11等) への書き込み／読み出しが可能となる。以上の説明でも少し触れたが、全てのレジスタ／メモリへの書き込み／読み出しを可能とするためには、転送レジスタ６と全てのレジスタ／メモリ間の転送処理をモニタプログラムで用意しておく必要がある。しかし、プログラムメモリ９の RAM領域91へ転送レジスタ６の内容を転送する処理がモニタプログラムに用意されていれば、それらのホストコンピュータからの転送レジスタ６への書き込み処理によりモニタプログラムの追加も可能となる。
【０１３１】
これらの一連の処理が終了すれば、モニタプログラムは終了し、モニタプログラム実行時にコンテキストセーブしたレジスタ内容を元の状態にリストアし (ステップS18)、モニタプログラム実行前の番地へリターンする。モニタプログラムの終了方法は、ホストコンピュータからの転送レジスタ６への書き込み処理より、転送レジスタ６へモニタプログラム内のコンテキストリストアルーチンの先頭アドレスを書き込む。モニタプログラムは、処理の切れ目においては転送レジスタ６の内容をプログラムカウンタ７へ転送するようにプログラムされているため、転送レジスタ６に書き込まれたアドレスへジャンプする。この場合、コンテキストリストアルーチンへジャンプし、モニタプログラムからリターンできる。
【０１３２】
〔実施の形態２〕
上述の実施の形態１におけるプログラムメモリ９に格納されたモニタプログラム (図９, 図11, 図12) のCHCK＿DINTルーチン (図10) は、２つのループで構成されている。この処理は実施の形態１のようにプログラムのループ実行による実現手法の他に、特定アドレスで処理を停止するホールト命令によっても実現可能である。
【０１３３】
この場合のホールト解除のモードとして、DINT=b'0解除及びDINT=b'1解除の２つのモードが必要である。図10のCHCK＿DINTルーチンの最初のループにDINT=b'0解除モードのホールト命令を、２つ目のループにDINT=b'1解除モードのホールト命令を、それぞれ用いることで、実施の形態１と同様の動作が実現できる。そのようなホールト命令による場合のフローチャートを図13に示す。
【０１３４】
図13において、このCHCK＿DINTルーチン (ステップS200) は、２つのホールト命令で構成されており、最初のホールト命令 (ステップS201) がDINT＝b'0 解除であり、次のホールト命令 (ステップS202) がDINT＝b'1 解除である。CHCK＿DINTルーチン (ステップS200) はプログラムメモリ内の固定番地に割り付けられているので、 LSIチップ外部 (ホストコンピュータ) からは、実行中のPC値をRD＿PC命令により観測することで、いずれのホールト命令を実行しているかを検知することができる。
【０１３５】
なお、上述の各実施の形態においては命令レジスタ２，命令デコーダ３，DINTレジスタ４，フラグレジスタ５，転送レジスタ６，プログラムカウンタ７等のビット幅について具体的な数値が挙げられているが、それらに限定されるものではない。また、上記各実施の形態においては、本発明のデバッグ装置がホストコンピュータに接続されている例が示されているが、JTAGアクセス可能な装置であればホストコンピュータに限定されるものではない。
【０１３６】
【発明の効果】
以上に詳述したように、本発明のデバッグ装置によれば、データの書き込み，読み出しに際して、転送メモリにいずれのレジスタ, メモリ (転送レジスタにプログラムメモリ，内部レジスタ，内部メモリ等) を接続するかをモニタプログラムにより行なうため、専用のハードウェアを必要とせず、且つ転送元, 先の変更, 拡張が容易で柔軟なデバッグ装置が実現可能になるという効果がある。
【０１３７】
また、データの読み出しに際して、転送メモリへのレジスタ, メモリ (転送レジスタにプログラムメモリ，内部レジスタ，内部メモリ等) からのデータ転送終了検知をプログラムカウンタの値のモニタリングにより実現できるため、専用の複雑なハードウェアを必要としない。
【０１３８】
また、一旦プログラムの実行が停止した後にプログラムを再実行することが可能になる。
【０１３９】
また更に、転送レジスタと接続可能な複数の記憶手段（内部レジスタ，内部メモリ）の内の少なくとも一部の内容の外部への出力が可能になる。
【０１４０】
更に、書き込み，読み出し可能なプログラムメモリ(RAM領域) に外部から任意のプログラムの書き込みが可能であるため、デバッグ対象のレジスタ, メモリ等と転送レジスタとの間の転送プログラムを外部から書き込み，読み出し可能なプログラムメモリ(RAM領域) に書き込むことにより、デバッグ対象を任意に選択することが可能になる。
【図面の簡単な説明】
【図１】  本発明のデバッグ装置の一構成例を示すブロック図である。
【図２】  本発明のデバッグ装置の TAPコントローラの遷移状態を示す状態遷移図である。
【図３】  本発明のデバッグ装置の命令レジスタを構成する各ビットのセルの構成例を示すブロック図である。
【図４】  本発明のデバッグ装置の命令レジスタの動作をまとめた一覧図である。
【図５】  本発明野デバッグ装置により使用される命令の一覧図である。
【図６】  本発明のデバッグ装置のDINTレジスタの構成例を示すブロック図である。
【図７】  本発明のデバッグ装置の転送レジスタを構成する各ビットのセルの構成例を示すブロック図である。
【図８】  本発明のデバッグ装置のプログラムカウンタを構成する各ビットのセルの構成例を示すブロック図である。
【図９】  本発明のデバッグ装置のモニタプログラムのフローチャートである。
【図１０】  本発明のデバッグ装置のモニタプログラムの実施の形態１によるCHCK＿DINTルーチンのフローチャートである。
【図１１】  本発明のデバッグ装置の転送レジスタへの書き込み処理のフローチャートである。
【図１２】  本発明のデバッグ装置の転送レジスタからの読み出し処理のフローチャートである。
【図１３】  本発明のデバッグ装置のモニタプログラムの実施の形態２によるCHCK＿DINTルーチンのフローチャートである。
【図１４】  従来のデバッグ装置の一構成例を示すブロック図である。
【符号の説明】
１   TAPコントローラ、２  命令レジスタ、３  命令デコーダ、４  DINTレジスタ、５  フラグレジスタ、６  転送レジスタ、７  プログラムカウンタ、
９  プログラムメモリ、10  内部レジスタ、11  内部メモリ、91 RAM領域。
【図１】
0003698478.tif 000002
【図２】
0003698478.tif 000003
【図３】
0003698478.tif 000004
【図４】
0003698478.tif 000005
【図５】
0003698478.tif 000006
【図６】
0003698478.tif 000007
【図７】
0003698478.tif 000008
【図８】
0003698478.tif 000009
【図９】
0003698478.tif 000010
【図１０】
0003698478.tif 000011
【図１１】
0003698478.tif 000012
【図１２】
0003698478.tif 000013
【図１３】
0003698478.tif 000014
【図１４】
0003698478.tif 000015