(57)【要約】【課題】半導体装置の内部資源の状態をモニタするときのアクセス効率を向上する。【解決手段】ＤＣＵ制御部は、デバッグ装置から可変長ビット転送を行なう全二重通信のシリアルインタフェースを介して送信され、所望のアクセス先をアクセスするときの条件を示すアクセス条件を受信する。アクセス条件は、第１データ長の第１アクセス条件部分と、それを除く第２アクセス条件部分とに分解される。第１レジスタは第２アクセス条件部分を保持する。結合部は、受信する第１アクセス条件部分と第１レジスタに保持される第２アクセス条件部分とを結合してアクセス条件を再生する。第２レジスタは、アクセス先をアクセスして読み出される読み出しデータを保持する。ＤＣＵ制御部は、第２レジスタに保持される読み出しデータをデバッグ装置に送信すると同時に次のアクセス先をアクセスするときの条件を示すアクセス条件のうちの第１アクセス条件部分を受信する。【選択図】図８
2013210750.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ装置から可変長ビット転送を行なう全二重通信のシリアルインタフェースを介して送信され、所望のアクセス先をアクセスするときの条件を示すアクセス条件を受信するＤＣＵ制御部と、前記アクセス条件は第１データ長の第１アクセス条件部分と、前記アクセス条件のうちの前記第１アクセス条件部分を除く第２アクセス条件部分とに分解され、
前記第２アクセス条件部分を保持する第１レジスタと、
受信する前記第１アクセス条件部分と、前記第１レジスタに保持される前記第２アクセス条件部分とを結合して前記アクセス条件を再生する結合部と、
再生される前記アクセス条件に基づいて、前記アクセス先をアクセスして読み出される読み出しデータを保持する第２レジスタと
を具備し、
前記ＤＣＵ制御部は、前記第２レジスタに保持される読み出しデータを前記デバッグ装置に送信すると同時に次のアクセス先をアクセスするときの条件を示す前記アクセス条件のうちの前記第１アクセス条件部分を受信する
半導体装置。
【請求項２】
前記第１データ長は、前記読み出しデータのデータ長以下である
請求項１に記載の半導体装置。
【請求項３】
前記ＤＣＵ制御部は、予め転送される前記第２アクセス条件部分を受信して前記デバッグ装置から指示される前記第１レジスタに格納する
請求項１または請求項２に記載の半導体装置。
【請求項４】
前記第１レジスタは複数のレジスタを含み、
前記第１アクセス条件部分は、前記複数のレジスタのうちの使用するレジスタを指定する情報を含む
請求項１から請求項３のいずれかに記載の半導体装置。
【請求項５】
前記ＤＣＵ制御部は、受信した前記アクセス条件に含まれる前記第２アクセス条件部分を前記第１レジスタに自動的に格納する
請求項１または請求項２に記載の半導体装置。
【請求項６】
所望のアクセス先をアクセスするときの条件を示すアクセス条件を、可変長ビット転送を行なう全二重通信のシリアルインタフェースを介して半導体装置のＤＣＵ制御部に送信する送受信部と、前記アクセス条件は第１データ長の第１アクセス条件部分と、前記アクセス条件のうちの前記第１アクセス条件部分を除く第２アクセス条件部分とに分解され、前記第２アクセス条件部分は前記半導体装置の第１レジスタに格納され、前記半導体装置は、送信された前記第１アクセス条件部分と、前記第１レジスタに保持される前記第２アクセス条件部分とを結合部によって結合して前記アクセス条件を再生し、再生された前記アクセス条件に基づいて、前記アクセス先をアクセスして読み出される読み出しデータを第２レジスタに格納し、
ユーザの指示に基づいて前記アクセス条件を生成して前記送受信部に送るデバッガと
を具備し、
前記送受信部は、次のアクセス先をアクセスするときの条件を示す前記アクセス条件のうちの前記第１アクセス条件部分を前記半導体装置に送信すると同時に前記第２レジスタに格納される前記アクセス条件によって指示されるデータ長のデータを受信する
デバッグ装置。
【請求項７】
前記第１データ長は、前記読み出しデータのデータ長以下である
請求項６に記載のデバッグ装置。
【請求項８】
前記送受信部は、前記第１レジスタを指示して前記第２アクセス条件部分を予め転送し、前記第１レジスタに格納させる
請求項６または請求項７に記載のデバッグ装置。
【請求項９】
前記第１レジスタは複数のレジスタを含み、
前記第１アクセス条件部分は、前記複数のレジスタのうちの使用するレジスタを指定する情報を含む
請求項６から請求項８のいずれかに記載のデバッグ装置。
【請求項１０】
前記第１レジスタに格納される前記第２アクセス条件部分を示す情報を格納するアクセス条件テーブルを備える
請求項６から請求項９のいずれかに記載のデバッグ装置。
【請求項１１】
前記送受信部は、前記第１レジスタが前記アクセス条件に含まれる前記第２アクセス条件部分を自動的に格納するように、始めに前記アクセス条件を送信し、前記第２レジスタに格納されるデータを受信しつつ、次のアクセス先をアクセスするときの条件を示す前記アクセス条件のうちの前記第１アクセス条件部分を送信する
請求項６または請求項７に記載のデバッグ装置。
【請求項１２】
請求項１に記載の半導体装置と、
請求項６に記載のデバッグ装置と
を具備し、
前記半導体装置を前記デバッグ装置によりデバッグする
デバッグシステム。
【請求項１３】
請求項２に記載の半導体装置と、
請求項７に記載のデバッグ装置と
を具備し、
前記半導体装置を前記デバッグ装置によりデバッグする
デバッグシステム。
【請求項１４】
請求項３に記載の半導体装置と、
請求項８に記載のデバッグ装置と
を具備し、
前記半導体装置を前記デバッグ装置によりデバッグする
デバッグシステム。
【請求項１５】
請求項４に記載の半導体装置と、
請求項９に記載のデバッグ装置と
を具備し、
前記半導体装置を前記デバッグ装置によりデバッグする
デバッグシステム。
【請求項１６】
請求項５に記載の半導体装置と、
請求項１１に記載のデバッグ装置と
を具備し、
前記半導体装置を前記デバッグ装置によりデバッグする
デバッグシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグシステムに関し、特にシリアルインタフェースを用いてデバッグする半導体装置、デバッグ装置に関する。
【背景技術】
【０００２】
外部から通信インタフェースを介して指定したアクセス条件（対象コア、アドレス、サイズ等）により、内部資源（ＲＡＭ、ＲＯＭ、周辺レジスタ、など）を観測可能なＲＡＭモニタ機能を搭載したマイクロコントローラ（ＭＣＵ：ＭｉｃｒｏＣｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）が存在する。
【０００３】
ＭＣＵを搭載する製品の開発者は、目的の性能を実現するため、ＭＣＵの内部資源（主にＲＡＭ）に散在する各種データ（途中の計算結果など）を観測して、各種パラメータの最適化を実施する。例えば、エンジンの燃料噴射量を決めるパラメータを調整する場合、各種温度／センサー値等を観測してパラメータを最適化する。開発者は、このような調整を所定の処理時間内に行なわなければならない。すなわち、ＲＡＭモニタ機能は、ある一定の処理時間内に短時間で処理することが要求される。
【０００４】
特開２００４−１３２８９号公報には、マイクロコントローラのオンチップデバッグ方法が開示されている。このデバッグ方法では、マイクロコントローラは、外部とのデータの送受信を行う外部インタフェース端子群と、データ送受信部と、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によりアクセスする対象ハードウェアのアドレスを記憶するアドレスレジスタと、ＤＭＡにより読み込み或いは書き込みを行うためのレジスタと、ＤＭＡの開始を制御する制御フラグと、ＤＭＡのタイミング制御部とを備えたＤＭＡコントローラとを備え、かつ、ＤＭＡコントローラ内部の制御フラグがＤＭＡによるアクセス開始を示している時に、ＤＭＡコントローラ内部のＤＭＡのタイミング制御部による制御の下に、内蔵されたＲＡＭ或いはレジスタに対してアクセスし、マイクロコントローラの外部にデータを読み出し或いは外部からデータを書き込むようにする。
【０００５】
このような方法では、端子数を削減するためにシリアルインタフェースが外部との通信インタフェースに採用されることが多い。その場合、最も簡便なデータ転送方法は、半二重通信による転送であるが、転送効率を上げることはできない。転送効率を向上するため、例えば、特開平１１−３２８１０３号公報に開示されるように、全二重通信を行なって、リードデータと次のアクセス条件（対象コア、アドレス、サイズ、等）を示すデータとを並行して転送することが行われる。
【０００６】
特開平１１−３２８１０３号公報に開示される技術は、バス接続によるデバイス装置及びその接続方法であるが、マスターユニットは、メモリユニットに対してデジタルデータの読み書き（転送）を指示する。メモリユニットは、マスターユニットに対してスレーブユニットとして動作してデータを保存するもので、保存されたデータを区別するために３２ビットワードのアドレス空間を持つ。マスターユニットは、アドレス指定信号用の信号線を介して、データ転送を開始するアドレス指定信号をメモリユニットにシリアルで送出する。また、マスターユニットは、３２ビットワードデータ信号用の信号線を介して、３２ビットワードデータ信号をメモリユニットに転送する。全二重通信によりリードデータと次のアクセス条件（対象コア、アドレス、サイズ、等）を並行して転送が行われ、転送効率向上が図られる。
【０００７】
また、特開２００２−６３７９１号公報には、バスの使用効率を改善しかつデータ転送効率を改善する技術が開示されている。半導体記憶装置は、書込データ、制御信号およびアドレス信号を受ける複数の入力端子、および読出データを出力するための少なくとも１つの出力端子を備える。書込データおよび読出データのビット数は互いに異なり、バスの使用効率を改善しかつデータ転送効率を改善する。
【０００８】
さらに、特開平５−３３４１８２号公報には、中央制御装置とメモリ間でデータの転送を行う場合におけるデータ転送システムに関する技術が開示されている。このデータ転送システムは、中央制御装置とメモリ管理装置間、及びメモリ管理装置とメモリとが制御バス、アドレスバス及びデータバスを介して相互接続され、中央制御装置とメモリ間でデータ転送を行う。メモリ管理装置内に、中央制御装置から送られてくるデータ転送要求の種類を判別すると共に、全体の動作を制御するコントローラと、メモリ３ら中央制御装置に対してデータのバースト転送を行う時にメモリに対するアドレスを発生させるアドレスカウンタと、データを一時的に保持するデータバッファとが設けられ、バスのデータ転送効率を向上させる。
【０００９】
このように、デバッグ作業では、複数の観測データが散在していることが多く、リードアクセス毎に異なるアクセス条件（対象コア、アドレス、サイズ等）を転送しなければならない。アクセス条件として対象コア、アドレス、サイズ等を設定する必要があるが、アクセス条件の長さはリードデータの長さより長い場合が多い。したがって、次のアクセス条件を示すデータの転送データ長がリードデータの転送データ長より長い場合、次のアクセス条件のみが転送されてリードデータが転送されない期間があり、リードデータの転送効率が低下する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−０１３２８９号公報
【特許文献２】特開平１１−３２８１０３号公報
【特許文献３】特開２００２−６３７９１号公報
【特許文献４】特開平５−３３４１８２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
マイクロコントローラ等の半導体装置の内部資源の状態をモニタするときのアクセス効率を向上する半導体装置、デバッグ装置、デバッグシステムを提供する。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
一実施の形態によれば、半導体装置は、ＤＣＵ制御部と、第１レジスタと、結合部と、第２レジスタとを具備する。ＤＣＵ制御部は、デバッグ装置から可変長ビット転送を行なう全二重通信のシリアルインタフェースを介して送信され、所望のアクセス先をアクセスするときの条件を示すアクセス条件を受信する。アクセス条件はアクセスして読み書きされるデータのデータ長を示すデータサイズ情報を含み、第１データ長の第１アクセス条件部分と、アクセス条件のうちの前記第１アクセス条件部分を除く第２アクセス条件部分とに分解される。第１レジスタは、第２アクセス条件部分を保持する。結合部は、受信する第１アクセス条件部分と、第１レジスタに保持される第２アクセス条件部分とを結合してアクセス条件を再生する。第２レジスタは、再生されるアクセス条件に基づいて、アクセス先をアクセスして読み出される読み出しデータを保持する。ＤＣＵ制御部は、第２レジスタに保持される読み出しデータをデバッグ装置に送信すると同時に次のアクセス先をアクセスするときの条件を示すアクセス条件のうちの第１アクセス条件部分を受信する。
【００１３】
また、一実施の形態によれば、デバッグ装置は、送受信部と、デバッガとを具備する。送受信部は、所望のアクセス先をアクセスするときの条件を示すアクセス条件を、可変長ビット転送を行なう全二重通信のシリアルインタフェースを介して半導体装置のＤＣＵ制御部に送信する。アクセス条件は、アクセスして読み書きされるデータのデータ長を示すデータサイズ情報を含み、第１データ長の第１アクセス条件部分と、アクセス条件のうちの第１アクセス条件部分を除く第２アクセス条件部分とに分解される。第２アクセス条件部分は、半導体装置の第１レジスタに格納され、半導体装置は、送信された第１アクセス条件部分と、第１レジスタに保持される第２アクセス条件部分とを結合部によって結合してアクセス条件を再生し、再生されたアクセス条件に基づいて、アクセス先をアクセスして読み出される読み出しデータを第２レジスタに格納する。デバッガは、ユーザの指示に基づいてアクセス条件を生成して送受信部に送る。送受信部は、次のアクセス先をアクセスするときの条件を示すアクセス条件のうちの第１アクセス条件部分を半導体装置に送信すると同時に第２レジスタに格納されるデータサイズ情報によって指示されるデータ長のデータを受信する。
【００１４】
さらに、一実施の形態によれば、デバッグシステムは、上記の半導体装置と、デバッグ装置とを具備し、半導体装置をデバッグ装置によりデバッグする。
【発明の効果】
【００１５】
前記一実施の形態によれば、アクセス効率を向上する半導体装置、デバッグ装置、デバッグシステムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施の形態に係るデバッグシステムの構成を示す図である。
【図２】図２は、ＴＡＰコントローラの状態遷移を示す図である。
【図３】図３は、ＩＲ転送、ＤＲ転送のタイミングを示すタイミング図である。
【図４】図４は、ターゲット装置のデバッグ制御部の構成を示す図である。
【図５】図５は、各データのデータフォーマットを示す図である。
【図６】図６は、エミュレータの動作を説明するフロー図である。
【図７】図７は、デバッグ制御部内の動作を説明するためのタイミング図である。
【図８】図８は、Ｃレジスタを有する条件保持部を備えるデバッグ制御部４０の構成を示す図である。
【図９】図９は、Ｃレジスタを有する場合における各データのデータフォーマットを示す図である。
【図１０Ａ】図１０Ａは、Ｃレジスタを有する場合のエミュレータの動作を説明するフロー図である。
【図１０Ｂ】図１０Ｂは、Ｃレジスタを有する場合のエミュレータの動作を説明するフロー図である。
【図１１】図１１は、Ｃレジスタを有する場合のデバッグ制御部内の動作を説明するためのタイミング図である。
【図１２】図１２は、複数のＣレジスタを有する場合のデバッグ制御部の構成を示す図である。
【図１３】図１３は、複数のＣレジスタを有する場合における各データのデータフォーマットを示す図である。
【図１４Ａ】図１４Ａは、複数のＣレジスタを有する場合のエミュレータの動作を説明するフロー図である。
【図１４Ｂ】図１４Ｂは、複数のＣレジスタを有する場合のエミュレータの動作を説明するフロー図である。
【図１５】図１５は、複数のＣレジスタに値を設定するときのデバッグ制御部内の動作を説明するためのタイミング図である。
【図１６】図１６は、複数のＣレジスタを有するときのデバッグ制御部内のデータ読み出し動作を説明するためのタイミング図である。
【図１７】図１７は、Ｃレジスタに自動的に値を設定するデバッグ制御部の構成を示す図である。
【図１８】図１８は、自動的に値を設定するＣレジスタを有するときのデバッグ制御部内の動作を説明するためのタイミング図である。
【発明を実施するための形態】
【００１７】
図面を参照して実施の形態を説明する。
【００１８】
図１は、実施の形態に係るデバッグシステムの構成を示すブロック図である。デバッグシステムは、主にマンマシンインタフェースを担うホスト装置１０と、ホスト装置１０とターゲット装置３０との間に配置されて両者のインタフェースの違いを吸収するエミュレータ２０と、デバッグ対象であるターゲット装置３０とを備える。ホスト装置１０は、キーボードやマウス等を含む入力装置１２と、デバッガ１８を搭載するホスト装置本体１４と、ディスプレイ等を含む出力装置１６とを備える。ホスト装置１０単体、あるいは、ホスト装置１０とエミュレータ２０との組をデバッグ装置と称する。エミュレータ２０は、アダプタと称することもある。
【００１９】
デバッガ１８は、ターゲット装置３０内で実行されるプログラムの不具合所謂バグを発見して修正するデバッグ作業を支援するソフトウェアであり、後述するアクセス条件テーブル１９を備えることが好ましい。ホスト装置１０の対ターゲット装置３０への入出力のインタフェースは、ＵＳＢインタフェースやＲＳ−２３２Ｃ等の汎用シリアルインタフェースが用いられることが多い。
【００２０】
ターゲット装置３０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メモリ（ＭＥＭ）３４、周辺入出力部（Ｉ／Ｏ）３６等を備えるマイクロコントローラユニット（ＭＣＵ）であり、デバッグするときに機能するデバッグ制御部（ＤＣＵ）４０をさらに備える。ＣＰＵ３２、メモリ３４、周辺入出力部３６、デバッグ制御部４０の間は、バスにより接続され、データの送受を行なう。ターゲット装置３０をデバッグするときに機能するデバッグ制御部４０の入出力インタフェースは、論理的にはＭＣＵ毎に異なるが、電気的には最近ＬＳＩの試験に用いられるＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）インタフェースが用いられることが多くなってきている。エミュレータ２０は、ホスト装置１０とターゲット装置３０とのインタフェースを変換するように動作する。エミュレータ２０を介在することにより、ターゲット装置３０は、通常動作時に使用しないことが多い汎用シリアルインタフェースを有する必要がなく、物理的にもコスト的にも最適化可能となる。なお、アクセス条件テーブル１９は、エミュレータ２０にあってもよい。
【００２１】
ここで、ＪＴＡＧインタフェースについて説明する。ＪＴＡＧは、バウンダリスキャンの仕様であり、ＪＴＡＧインタフェースは、可変長シリアルインタフェースである。バウンダリスキャンではＴＡＰ（Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｐｏｒｔ）と呼ばれるテスト専用端子が使われる。ＴＡＰは、通常、ＴＣＫ、ＴＤＩ、ＴＭＳ、ＴＤＯの４本の必須な信号線が接続される端子を備える。ＴＤＩはデータ入力、ＴＤＯはデータ出力、ＴＣＫはクロック入力、ＴＭＳはＴＡＰコントローラの遷移制御に用いられる。これらの信号線を用いてバウンダリスキャンテストするときに、インタフェース、テスト動作を制御する回路はＴＡＰコントローラと称される。
【００２２】
図２は、そのＴＡＰコントローラの状態遷移を示す図である。図中、実線は、信号ＴＭＳが“０”を示すときの遷移を示し、破線は、信号ＴＭＳが“１”を示すときの遷移を示す。各状態には名称が付与され、その末尾が“−ＤＲ”であるデータレジスタを制御する状態ＳＤ１〜ＳＤ７と、末尾が“−ＩＲ”である命令レジスタを制御する状態ＳＲ１〜ＳＲ７とに大きく区分される。それぞれ対象のレジスタが異なるだけで基本的な動作は同じであり、データレジスタの内容を入出力するＤＲ転送、命令レジスタの内容を入出力するＩＲ転送が行なわれる。状態ＳＳ０および状態ＳＳ１は、リセット状態（待機状態）および動作開始状態を示す。
【００２３】
図３は、ＩＲ転送、ＤＲ転送のタイミングを示すタイミング図である。クロック信号ＴＣＫ（図３（ａ））の立ち下がりに同期して信号ＴＭＳが値を確定し（図３（ｂ））、ＴＡＰコントローラはクロック信号ＴＣＫの立ち上がりに同期して信号ＴＭＳの値を取り込む（図３（ｃ））。取り込まれた信号ＴＭＳの値に基づいて、図２に示される状態遷移図のように状態を遷移する（図３（ｄ））。
【００２４】
ＴＡＰコントローラは、信号ＴＭＳが“１”を連続して示して待機状態（ＳＳ０）にあるとき、信号ＴＭＳが“０”を示すことによって開始状態ＳＳ１に遷移する。その後、信号ＴＭＳが“１”を示すことによってＴＡＰコントローラは、状態ＳＤ１に遷移し、さらに信号ＴＭＳが“１”を示すことによって状態ＳＲ１に遷移する。ここで信号ＴＭＳが“０”を示して状態ＳＲ２に遷移し、命令レジスタの内容を転送するＩＲ転送が開始される。状態ＳＲ２では、命令レジスタの内容がシフトレジスタに転送される（図３（ｇ）〜（ｈ））。図３（ｇ）〜（ｈ）は、シフトレジスタの内容を示す。図３（ｇ）は、シフトレジスタのＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を示し、図３（ｈ）はシフトレジスタのＬＳＢ（Ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を示す。信号ＴＤＩが示す値（図３（ｆ））は、シフトレジスタのＭＳＢに取り込まれ、シフトレジスタのＬＳＢが示す値は、信号ＴＤＯとして出力される（図３（ｉ））。状態ＳＲ３である間、シフトレジスタはクロック信号ＴＣＫに応答してＭＳＢからＬＳＢに向かってデータをシフトし、信号ＴＤＩの値を取り込み、ＬＳＢのデータを信号ＴＤＯに出力する。状態ＳＲ７において、シフトレジスタの内容が命令レジスタに転送されて命令レジスタの内容が置き換わる。ここでは、命令レジスタは、８ビットであり、８ビットのデータが信号ＴＤＩから取り込まれ、命令レジスタに設定されていたデータが、信号ＴＤＯとして出力される。すなわち、シフトレジスタを介して命令レジスタの古い内容が新しい内容に置き換えられる。これによって、命令レジスタに格納されるコードが示す命令が実行されることになる。
【００２５】
ＤＲ転送も同様であるが、状態ＳＳ１、状態ＳＤ１の後、信号ＴＭＳが１クロック周期だけで“０”に戻るとＤＲ転送が開始される。また、通常データレジスタに設定されるデータのデータ長は、命令レジスタに設定されるデータのデータ長より長い。図３では３２ビット長の場合について、途中経過を省略して示される。動作は、レジスタの違い、ビット長の違いがあるものの、ＩＲ転送と同じであるため、詳細な説明は省略する。ＤＲ転送の際、信号ＴＤＯとして出力するデータをシフトレジスタに送るレジスタ、および、信号ＴＤＩに基づいてシフトレジスタに取り込まれるデータを送られるレジスタは、命令レジスタに設定された値（コード）に基づいて決められる。そのため、信号ＴＤＩとして入力されるデータのデータ長と、信号ＴＤＯとして出力されるデータのデータ長とは異なることがある。送信データおよび受信データのデータ長が同じであれば、送信と受信とが同時に進行し、効率のよいデータ転送が行なわれる。しかし、データ長が異なる場合には、短いデータ長の送受信処理は、長いデータ長の送受信が終了するまで待機することになり、効率は低下する。
【００２６】
図４は、エミュレータ２０とターゲット装置３０との間のインタフェースにＪＴＡＧインタフェースを用いるターゲット装置３０のデバッグ制御部４０の構成を示す図である。デバッグ制御部４０は、前述のように、ターゲット装置３０のＣＰＵ３２、メモリ３４、周辺入出力部３６が接続されるバスと、エミュレータ２０との間に配置される。ここでは、ターゲット装置３０のデータをエミュレータ２０に送る動作に関連する部分が示され、他の部分は図示を省略する。
【００２７】
デバッグ制御部４０は、ＤＣＵ制御部４１０と、条件保持部４２０と、バスアクセス部（ＢＡＣＣ）４３０と、リードデータ部４４０とを備える。ＤＣＵ制御部４１０は、状態管理部４１１と、シフトレジスタ（Ｓｒｅｇ）４１２と、命令レジスタ（ＩＲ）４１３と、デコーダ４１４とを備える。条件保持部４２０は、前述のデータレジスタの一つであるＡレジスタ（Ａｒｅｇ）４２８を備える。リードデータ部４４０は、前述のデータレジスタの一つであるＤレジスタ（Ｄｒｅｇ）４４２を備える。
【００２８】
状態管理部４１１は、前述のＴＡＰコントローラが拡張され、デバッグ用のレジスタをアクセスできるようになった回路である。したがって、図２に示されるように、信号ＴＭＳに基づいて、動作状態を遷移させてデバッグ制御部４０の動作を管理制御する。すなわち、管理する状態と信号ＴＭＳの値とに基づいて、信号ＳＬＯＡＤ、信号ＩＲＳＥＴ、信号ＤＲＳＥＴ等を出力する。信号ＳＬＯＡＤは、指定されるレジスタの値をシフトレジスタ４１２に設定指示する信号であり、状態ＳＤ２または状態ＳＲ２においてアクティブになる。そのときに選択されているレジスタの内容が並列データとしてシフトレジスタ４１２に取り込まれる。信号ＩＲＳＥＴは、シフトレジスタ４１２に取り込んだデータを命令レジスタ４１３に設定指示する信号であり、状態ＳＲ７においてアクティブになる。信号ＤＲＳＥＴは、シフトレジスタ４１２に取り込んだデータを命令レジスタ４１３に設定されて選択されるデータレジスタに設定指示する信号であり、状態ＳＤ７においてアクティブになる。信号ＤＲＳＥＴはデコーダ４１４に供給され、デコーダ４１４は命令レジスタ４１３の出力をデコードし、信号ＤＲＳＥＴに示されるタイミングで、指示されるデータレジスタに対する信号（ここでは信号ＢＴＲＧ、信号ＡＳＥＴ）をアクティブにする。これによって各種動作が指示される。なお、アクティブになる信号のタイミングは、信号ＤＲＳＥＴがアクティブになるタイミングと同じである必要はなく、それぞれの動作に応じて前後する。
【００２９】
シフトレジスタ４１２は、信号ＴＤＩにより示されるシリアルデータを取り込むと共に、設定されているデータをシリアルデータとして信号ＴＤＯに出力する。また、シフトレジスタ４１２は、状態管理部４１１の指示を示す信号ＳＬＯＡＤに応答して各データレジスタ、命令レジスタ４１３の出力をパラレルに取り込む。また、シフトレジスタ４１２は、取り込まれたデータをパラレルに各データレジスタ、命令レジスタ４１３に供給する。
【００３０】
命令レジスタ４１３は、信号ＩＲＳＥＴに応答してシフトレジスタ４１２から出力されるデータを取り込んで保持する。命令レジスタ４１３に保持されるデータは、デコーダ４１４に供給される。デコーダ４１４は、命令レジスタ４１３の出力をデコードし、信号ＤＲＳＥＴに応答してデコード出力をアクティブにする。
【００３１】
条件保持部４２０のＡレジスタ４２８は、バスを介してターゲット装置３０内をアクセスするための条件を保持する。すなわち、Ａレジスタ４２８は、メモリ３４等のアドレスや、メモリ３４等を含むコアの指定、読み出し／書き込みの指定等々の条件を信号ＡＳＥＴに応答してシフトレジスタ４１２から取り込んで保持し、バスアクセス部４３０に信号ＡＤＲＳとして供給する。
【００３２】
バスアクセス部４３０は、条件保持部４２０から供給されるアクセス条件に基づいて、バスを介してターゲット装置３０内をアクセスする。アクセス（データ読み出し）の結果が整うと、バスアクセス部４３０は、読み出しデータを信号ＲＤＤＴに示して信号ＤＳＥＴをアクティブにする。リードデータ部４４０のＤレジスタ４４２は、信号ＲＤＤＴに示されるデータを信号ＤＳＥＴに応答して取り込む。Ｄレジスタ４４２は、保持するデータをシフトレジスタ４１２に供給する。
【００３３】
Ａレジスタに保持されるアクセス条件を示すデータは、図５（ａ）に示されるように、ここでは３９ビット長のデータである。すなわち、メモリ３４等のアドレスを示すアドレス部ＡＤＲは３２ビット長、アクセスが読み出しか書き込みかを示すアクセスタイプＲＷは１ビット長（図５（ｃ））、アクセスするデータのサイズを示すアクセスサイズＳＺは２ビット長（図５（ｄ））、ターゲットコアを指定するアクセスターゲットコアＭＡＰは４ビット長（図５（ｅ））である。したがって、このアクセス条件を保持するＡレジスタ４２８は、３９ビットのデータを保持することができる。このアクセス条件により読み出されるデータ、すなわち、ターゲット装置３０からエミュレータ２０に転送されるデータは、図５（ｂ）に示されるように、最大３２ビット長であり、アクセスサイズＳＺに指定される８ビット長、１６ビット長、３２ビット長のいずれかとなる。したがって、Ｄレジスタ４４２は、３２ビットのデータを保持することができる。
【００３４】
エミュレータ２０は、ホスト装置１０からの指示に基づいて、図６に示されるように、ターゲット装置３０のデバッグ制御部４０にコマンドを送り、リードデータを受け取る。
【００３５】
まず、エミュレータ２０は、アクセス条件を設定するために、ＩＲ転送により命令レジスタ４１３にＡレジスタ選択を指示する（図６ステップＳ４１０）。すなわち、エミュレータ２０は、Ａレジスタ４２８にアクセス条件を書き込むように、Ａレジスタ４２８選択設定を示すコードをコマンドとして信号ＴＤＩによりデバッグ制御部４０に転送する。このとき信号ＴＤＯには、命令レジスタ４１３に保持されている値が出力されるが、エミュレータ２０は無視する。この場合のＡレジスタ４２８選択設定を示すコードは、ＤＲ転送により信号ＴＤＩからＡレジスタ４２８にアクセス条件を設定すると同時に、信号ＴＤＯからＤレジスタ４４２のデータを出力するコードを示している。
【００３６】
命令レジスタ４１３にデータレジスタの設定が終わると、エミュレータ２０は、ＤＲ転送によりアクセス条件を示すデータをＡレジスタ４２８に送る（図６ステップＳ４２０）。信号ＴＤＩには、アクセス条件を示すデータが入力され、信号ＴＤＯには、そのときＤレジスタ４４２に格納されているデータが出力される。このデータは、意味をもたないのでエミュレータ２０は無視する。
【００３７】
Ａレジスタ４２８にアクセス条件が設定されると、デバッグ制御部４０では、デコーダ４１４から信号ＢＴＲＧがアクティブになってバスアクセス部４３０が起動される。バスアクセス部４３０は、Ａレジスタ４２８に指定されるアクセス条件に基づいてバスを介してターゲット装置３０内をアクセスし、データを読み出す。読み出したデータは信号ＲＤＤＴとしてＤレジスタ４４２に供給され、Ｄレジスタ４４２は、バスアクセス部４３０から出力される信号ＤＳＥＴに応答して読み出しデータを取り込む。エミュレータ２０は、この一連の読み出し動作の終了を待つ（図６ステップＳ４３０）。
【００３８】
読み出しが完了する時間が経過すると、エミュレータ２０は、ＤＲ転送によって次のアクセス条件を転送するとともに、信号ＴＤＯに出力される読み出しデータを取り込む（図６ステップＳ４４０）。エミュレータ２０はこれを順次繰り返して連続的にリードデータを取り込むことができる。
【００３９】
図７は、デバッグ制御部４０内の動作を説明するためのタイミング図である。
【００４０】
エミュレータ２０がデバッグ制御部４０に、Ａレジスタ４２８の選択指示を示すコマンド（ＳＥＴ＿ＩＲ＝Ａｒｅｇ）を発行する。すなわち、エミュレータ２０は、ＩＲ転送で信号ＴＤＩにＡレジスタ選択を示すデータを出力する（図７（ａ））。シフトレジスタ４１２は、信号ＴＤＩに示されるＡレジスタ選択を示すデータをクロック信号ＴＣＫに応答して取り込む（図７（ｂ））。このとき、信号ＴＤＯには、シフトレジスタ４１２にセットされていたデータ（ここでは命令レジスタ４１３の内容）が出力されるが、エミュレータ２０は、そのデータを無視する。シフトレジスタ４１２にＡレジスタ４２８を選択設定するコマンドが揃うと（状態ＳＲ７）、状態管理部４１１は、信号ＩＲＳＥＴをアクティブにし、Ａレジスタ４２８を選択設定するコマンドが命令レジスタ４１３に格納される（図７（ｄ））。
【００４１】
エミュレータ２０は、続いてＡレジスタ４２８に設定するデータａ１すなわちアクセス条件を示すデータを送る（ＳＥＴ＿ＤＲ＝ａ１，ＲＥＡＤ＿ＤＲＤ）。このコマンドは、同時にＤレジスタ４４２に格納されているデータを読み出すことも示している。シフトレジスタ４１２は、そのときに設定されているデータを信号ＴＤＯとして出力しつつ、アクセス条件を示すデータａ１を受信する（図７（ｂ））。データａ１は、図５（ａ）に示されるように、３９ビットである。信号ＴＤＯに示されるデータは、エミュレータ２０によって無視される（図７（ｃ））。
【００４２】
アクセス条件を示すデータａ１が揃うと（状態ＳＤ７）、状態管理部４１１は、信号ＤＲＳＥＴをアクティブにし、デコーダ４１４は、命令レジスタ４１３の出力をデコードして信号ＡＳＥＴをアクティブにする。したがって、シフトレジスタ４１２に格納されるデータａ１は、Ａレジスタ４２８に取り込まれる（図７（ｅ））。デコーダ４１４は、これと同時あるいは所定の時間後、信号ＢＴＲＧをアクティブにしてバスアクセス部４３０を起動する。バスアクセス部４３０は、Ａレジスタ４２８に格納されるアクセス条件（ａ１）に基づいてバスを介してターゲット装置３０内をアクセスする。所定のデータが読み出されると、バスアクセス部４３０は、読み出したデータ（ｄ１）を信号ＲＤＤＴに示し、信号ＤＳＥＴをアクティブにする。Ｄレジスタ４４２は、信号ＲＤＤＴに示されるデータｄ１をラッチする（図７（ｆ））。
【００４３】
エミュレータ２０が次のアクセス条件を示すデータを送るとき（ＳＥＴ＿ＤＲ＝ａ２，ＲＥＡＤ＿ＤＲＤ）、状態ＳＤ２になると状態管理部４１１は、信号ＳＬＯＡＤをアクティブにする。シフトレジスタ４１２は、Ｄレジスタ４４２に格納されているデータを取り込む（図７（ｂ）（ｆ））。アクセス条件を示すデータａ２がエミュレータ２０から信号ＴＤＩとして送信されるとき、デバッグ制御部４０は、アクセス条件（データａ１）によって指示されるアクセス先から読み出したデータｄ１を信号ＴＤＯとして送信する。すなわち、シフトレジスタ４１２は、信号ＴＤＩに示されるデータａ２を取り込みつつ、並列に格納されたデータｄ１を直列データに変換して信号ＴＤＯに出力する。エミュレータ２０は、信号ＴＤＯに示されるデータｄ１を取り込み、データａ１によって示されるアクセス条件によって読み出した結果を得る。以降アクセス条件を変えてあるいは変えないでエミュレータ２０はターゲット装置３０内のアクセス先からデータを読み出すことができる。
【００４４】
アクセス条件を示すデータのデータ長（ビット数）と、アクセス結果を示すデータのデータ長（ビット数）とが等しい場合は、シフトレジスタ４１２を介して効率よくデータの交換ができる。しかし、図５に示されるように、アクセス条件を示すデータが３９ビットであるのに対して、読み出しデータが３２ビット、１６ビット、８ビットである。そのため、ターゲット装置３０からデータを転送し終わった後もエミュレータ２０はアクセス条件を示すデータを転送していることになる。すなわち、転送効率が低下する。
【００４５】
通常のデバッグ作業では、アクセス条件は、全くランダムに変わることはなく、メモリ３４の領域の一定の範囲等を繰り返しアクセスすることが多い。したがって、アクセス条件を示すデータの変化が少ない部分を予め設定しておき、アクセス条件を示すデータの変化する部分を毎回転送することにより、エミュレータ２０からターゲット装置３０に頻繁に転送するデータのデータ長を短くすることができる。
【００４６】
図８は、そのような条件保持部４２１を備えるデバッグ制御部４０の構成を示す図である。
【００４７】
条件保持部４２１は、アクセス条件を保持するＡレジスタ４２８の代りにＢレジスタ１１６と、Ｃレジスタ１１４とを備え、Ｂレジスタ１１６およびＣレジスタ１１４に保持されるデータに基づいてアクセス条件を生成する結合部１１０をさらに備える。したがって、デコーダ４１４は、Ａレジスタ４２８にデータのラッチを指示する信号ＡＳＥＴの代りに、Ｂレジスタ１１６にデータのラッチを指示する信号ＢＳＥＴと、Ｃレジスタ１１４にデータのラッチを指示する信号ＣＳＥＴとを出力する。他の構成は、図４に示されるデバッグ制御部４０と同じであり、詳細な説明は省略される。
【００４８】
エミュレータ２０とデバッグ制御部４０との間で授受されるデータのフォーマットは、図９に示されるように、Ａレジスタ４２８に格納されるアクセス条件Ａ（図９（ａ））は、Ｂレジスタ１１６に格納されるアクセス条件Ｂ（図９（ｃ））と、Ｃレジスタ１１４に格納されるアクセス条件Ｃ（図９（ｄ））とに分解される。すなわち、アクセス条件Ｃとして、メモリ３４等のアドレスを示すアドレス部ＡＤＲＡ（３２ビット）のうちの上位７ビットであるアドレス部ＡＤＲＣが取り出され、Ｃレジスタ１１４に格納される。アクセス条件Ｂとして、アドレス部ＡＤＲＡのうちのアドレス部ＡＤＲＣを除いた部分、すなわちアクセス条件ＡのアクセスタイプＲＷ、アクセスサイズＳＺ、アクセスターゲットコアＭＡＰと、アドレス部ＡＤＲＡのうちの下位２５ビットを示すアドレス部ＡＤＲＢとを含む３２ビットがＢレジスタ１１６に格納される。
【００４９】
結合部１１０は、Ｂレジスタ１１６に保持されているアクセスタイプＲＷ、アクセスサイズＳＺ、アクセスターゲットコアＭＡＰをビット３８−３２の位置に、Ｃレジスタ１１４に保持されているアドレス部ＡＤＲＣをビット３１−２５の位置に、Ｂレジスタ１１６に保持されるアドレス部ＡＤＲＢをビット２４−０の位置に配置してアクセス条件Ａのフォーマットを再生し、バスアクセス部４３０に出力する。したがって、アクセス条件Ｃに変化が無ければ、アクセスの度にＣレジスタ１１４に値を設定する必要はなくなる。エミュレータ２０は、アクセス条件Ｃの範囲内をアクセスするときはアクセス条件Ｂをデバッグ制御部４０に送信すると所望のアクセス結果を示すデータを得ることができる。このとき、エミュレータ２０あるいはホスト装置１０は、Ｃレジスタ１１４に保持されている値をアクセス条件テーブル１９に保持することが好ましい。ここでは、エミュレータ２０がアクセス条件テーブル１９を備えるとして以下の動作説明を行なう。
【００５０】
エミュレータ２０は、図１０Ａ、図１０Ｂに示されるように、デバッグ制御部４０に対してコマンドを送り、リードデータを受け取る。
【００５１】
エミュレータ２０は、ホスト装置１０から指示されるアクセス条件Ａを図９に示されるように、アクセス条件Ｂとアクセス条件Ｃとに分解し（図１０ＡステップＳ１２２）、アクセス条件Ｃをアクセス条件テーブル１９に書き込んで更新する（図１０ＡステップＳ１２４）。アクセス条件Ｃを送るため、エミュレータ２０は、ＩＲ転送によってＣレジスタ１１４を選択する。すなわち信号ＴＤＩには“Ｃレジスタの設定”を示す値が出力される（図１０ＡステップＳ１３２）。続いて、ＤＲ転送によってＣレジスタ１１４に設定する値が送られ、アクセス条件ＣがＣレジスタ１１４に設定される（図１０ＡステップＳ１３４）。このとき、信号ＴＤＩに７ビットのデータが出力される。信号ＴＤＯにより示されるデータは無視される。
【００５２】
さらに、エミュレータ２０は、アクセス条件Ｂを送るため、ＩＲ転送によってＢレジスタ１１６を選択する。信号ＴＤＩには“Ｂレジスタの設定”を示す値が出力される（図１０ＡステップＳ１４２）。続いて、ＤＲ転送によってＢレジスタ１１６に設定する値が送られ、アクセス条件ＢがＢレジスタ１１６に設定される（図１０ＡステップＳ１４４）。このとき、信号ＴＤＩに３２ビットのデータが出力され、信号ＴＤＯにより示されるデータは無視される。
【００５３】
Ｃレジスタ１１４およびＢレジスタ１１６にアクセス条件が設定されると、結合部１１０は、アクセス条件を示す信号ＡＤＲＳを生成してバスアクセス部４３０に出力する。バスアクセス部４３０は、バスを介してターゲット装置３０内をアクセスし、所望のデータを取り込む。
【００５４】
Ｄレジスタ４４２がそのアクセス結果を示すデータを格納するまで、すなわち、デバッグ制御部４０がリードアクセスを完了するまで、エミュレータ２０は待機しつつ（図１０ＢステップＳ１５２）、次のアクセス条件Ａをアクセス条件Ｂおよびアクセス条件Ｃに分解する（図１０ＢステップＳ１５４）。エミュレータ２０は、この次のアクセス条件Ｃと、アクセス条件テーブル１９に格納されている値とを比較する（図１０ＢステップＳ１５６）。
【００５５】
一致しているときには（図１０ＢステップＳ１５６−一致）、Ｃレジスタ１１４に設定されているアクセス条件Ｃがそのまま使用できる。エミュレータ２０は、ＤＲ転送によってＢレジスタ１１６に次のアクセス条件Ｂを示すデータを信号ＴＤＩに出力しつつ、信号ＴＤＯに示されるアクセス結果であるリードデータを取り込む（図１０ＢステップＳ１６４）。エミュレータ２０は、アクセス条件Ｂを送り終わると、ステップＳ１５２に戻り、次のリードアクセスの完了を待つ。アクセス条件Ｃが一致している間は、連続的にリードアクセスが繰り返される。
【００５６】
不一致の場合（図１０ＢステップＳ１５６−不一致）、次のアクセス条件ＣとしてＣレジスタ１１４に格納されているデータが使えないため、エミュレータ２０はアクセス結果を取り込んで一旦この連続アクセスのシーケンスを取り止める。すなわち、エミュレータ２０は、次のアクセス条件Ｂとして例えば前回と同じアクセス条件Ｂ等のダミーデータを信号ＴＤＩとして出力しつつ、信号ＴＤＯに示されるアクセス結果であるリードデータを取り込む（図１０ＢステップＳ１６６）。リードデータを取り込み終わると、ステップＳ１２２に戻り、アクセス条件Ｃの設定から始める。
【００５７】
ターゲット装置３０内の観測すべきデータが散在し、リードアクセス毎にアクセス条件が異なる場合でも、複数のリードアクセス毎に個別設定が必要な部分と、複数のリードアクセスで共通設定が可能な部分とに分割できる。例えば、観測データは、一定領域内（主にＲＡＭ領域内）で散在していることが多く、アドレスの上位側部分は共通設定が可能である。すなわち、アクセス条件Ａ（対象コアを示すアクセスターゲットコアＭＡＰ、アドレス部ＡＤＲ、アクセスサイズＳＺ等）をリードデータ長以下で且つ個別設定が必要なアクセス条件Ｂ（ＲＷ、ＭＡＰ、ＳＺ、ＡＤＲＢ）とそれ以外の共通設定が可能なアクセス条件Ｃ（ＡＤＲＣ）に分割することが可能である。アクセス条件Ｃは、更新が必要なときのみ転送されてデバッグ制御部４０の内部で保持される。これによって、通常は、リードデータ長以下のアクセス条件Ｂのみをリードデータと並行して転送することにより、リードデータが転送されない期間を短縮することができる。
【００５８】
デバッグ制御部４０は、アクセス条件Ｂが転送されると、保持しているアクセス条件Ｃとを連結してアクセス条件Ａを生成し、ホスト装置１０が所望するリードアクセスを行うことができる。このように、アクセス条件Ａは、リードデータ長以下で且つ個別設定が必要なアクセス条件Ｂと、共通設定可能なアクセス条件Ｃとに分割される。共通設定可能なアクセス条件Ｃは、更新が必要な時のみ転送し、通常は、リードアクセス毎にアクセス条件Ｂのみリードデータと並行して転送することができる。アクセス条件のみが転送されてリードデータが転送されない期間を短縮することができるため、リードデータの転送効率が向上する。
【００５９】
図１１に、このときのデバッグ制御部４０の動作を示すタイミング図が示される。
【００６０】
エミュレータ２０は、デバッグ制御部４０にＣレジスタ１１４の選択指示を示すコマンド（ＳＥＴ＿ＩＲ＝Ｃｒｅｇ）を発行する。すなわち、信号ＴＤＩにＩＲ転送でＣレジスタ選択を示すデータを出力する（図１１（ａ））。シフトレジスタ４１２は、信号ＴＤＩに示されるＣレジスタ選択を示すデータをクロック信号ＴＣＫに応答して取り込む（図１１（ｂ））。このとき、信号ＴＤＯには、シフトレジスタ４１２に格納されているデータが出力されるが、エミュレータ２０は、そのデータを無視する。Ｃレジスタ１１４を選択設定するコマンドがシフトレジスタ４１２に揃うと（状態ＳＲ７）、状態管理部４１１は、信号ＩＲＳＥＴをアクティブにし、Ｃレジスタ１１４を選択設定するコマンドが命令レジスタ４１３に格納される（図１１（ｄ））。
【００６１】
エミュレータ２０は、続いてＣレジスタ１１４に設定するデータｃ１すなわちアクセス条件Ｃを示すデータを送る（ＳＥＴ＿ＤＲ＝ｃ１）。シフトレジスタ４１２は、そのときに設定されているデータを信号ＴＤＯとして出力しつつ、アクセス条件Ｃを示すデータｃ１を受信する（図１１（ｂ））。データｃ１は、図９に示されるように、７ビットである。このときエミュレータ２０は信号ＴＤＯに示されるデータを無視する（図１１（ｃ））。アクセス条件Ｃを示すデータｃ１が揃うと（状態ＳＤ７）、状態管理部４１１は、信号ＤＲＳＥＴをアクティブにし、デコーダ４１４は、命令レジスタ４１３の出力をデコードして信号ＣＳＥＴをアクティブにする。したがって、シフトレジスタ４１２に格納されるデータｃ１は、Ｃレジスタ１１４に取り込まれる（図１１（ｅ））。
【００６２】
次に、エミュレータ２０は、デバッグ制御部４０にＢレジスタ１１６の選択指示を示すコマンド（ＳＥＴ＿ＩＲ＝Ｂｒｅｇ）を発行し、信号ＴＤＩにＩＲ転送でＢレジスタ選択を示すデータを出力する（図１１（ａ））。シフトレジスタ４１２は、信号ＴＤＩに示されるＢレジスタ選択を示すデータをクロック信号ＴＣＫに応答して取り込む（図１１（ｂ））。このとき、信号ＴＤＯには、シフトレジスタ４１２にセットされていたデータが出力されるが、エミュレータ２０は、そのデータを無視する。シフトレジスタ４１２にＢレジスタ１１６を選択設定するコマンドが揃うと（状態ＳＲ７）、状態管理部４１１は、信号ＩＲＳＥＴをアクティブにし、Ｂレジスタ１１６を選択設定するコマンドが命令レジスタ４１３に格納される（図１１（ｄ））。
【００６３】
エミュレータ２０は、続いてＢレジスタ１１６に設定するデータｂ１すなわちアクセス条件Ｂを示すデータを送る（ＳＥＴ＿ＤＲ＝ｂ１，ＲＥＡＤ＿ＤＲＤ）。このコマンドは、同時にＤレジスタ４４２に格納されているデータを読み出すことも示している。シフトレジスタ４１２は、そのときに設定されているデータを信号ＴＤＯとして出力しつつ、アクセス条件Ｂを示すデータｂ１を受信する（図１１（ｂ））。データｂ１は、図９に示されるように、３２ビットである。このときの信号ＴＤＯに示されるデータをエミュレータ２０は無視する（図１１（ｃ））。アクセス条件Ｂを示すデータｂ１が揃うと（状態ＳＤ７）、状態管理部４１１は、信号ＤＲＳＥＴをアクティブにし、デコーダ４１４は、命令レジスタ４１３の出力をデコードして信号ＢＳＥＴをアクティブにする。したがって、シフトレジスタ４１２に格納されるデータｂ１は、Ｂレジスタ１１６に取り込まれる（図１１（ｆ））。
【００６４】
デコーダ４１４は、これと同時あるいは所定の時間後、信号ＢＴＲＧをアクティブにしてバスアクセス部４３０を起動する。一方、結合部１１０は、Ｃレジスタ１１４の出力と、Ｂレジスタ１１６の出力とを結合してアクセス条件Ａ（ａ１）を再生し、信号ＡＤＲＳとしてバスアクセス部４３０に供給する。アクセス条件Ａを示すデータａ１は、図９に示されるように、３９ビットである。バスアクセス部４３０は、信号ＡＤＲＳによって供給されるアクセス条件Ａを示すデータａ１に基づいて、バスを介してターゲット装置３０内をアクセスする。所定のデータが読み出されると、バスアクセス部４３０は、読み出したデータ（ｄ１）を信号ＲＤＤＴに示し、信号ＤＳＥＴをアクティブにする。Ｄレジスタ４４２は、信号ＲＤＤＴに示されるデータｄ１をラッチする（図１１（ｇ））。
【００６５】
エミュレータ２０が次のアクセス条件Ｂを示すデータを送るとき（ＳＥＴ＿ＤＲ＝ｂ２，ＲＥＡＤ＿ＤＲＤ）、状態ＳＤ２になると状態管理部４１１は、信号ＳＬＯＡＤをアクティブにする。シフトレジスタ４１２は、Ｄレジスタ４４２に格納されているデータを取り込む（図１１（ｂ）（ｇ））。アクセス条件を示すデータｂ２がエミュレータ２０から信号ＴＤＩとして送信されるとき、デバッグ制御部４０は、アクセス条件Ｂ（データｂ１）およびアクセス条件Ｃ（データｃ１）を結合したアクセス条件Ａ（データａ１）によって指示されるアクセス先から読み出したデータｄ１を信号ＴＤＯとして送信する。すなわち、シフトレジスタ４１２は、信号ＴＤＩに示されるデータｂ２を取り込みつつ、並列に格納されたデータｄ１を直列データに変換して信号ＴＤＯに出力する。エミュレータ２０は、信号ＴＤＯに示されるデータｄ１を取り込み、アクセス条件Ｂ（データｂ１）およびアクセス条件Ｃ（データｃ１）を結合したアクセス条件Ａ（データａ１）によって示されるアクセス条件によって読み出した結果を得る。このとき、エミュレータ２０から送信されるアクセス条件Ｂを示すデータと、デバッグ制御部４０から送信される読み出しデータとは同じデータ長（３２ビット）であり、転送時間に無駄はない。以降、アクセス条件Ｂを変えてあるいは変えないでエミュレータ２０はターゲット装置３０内のアクセス先からデータを順次読み出すことができる。
【００６６】
このように、アクセス条件Ｂを示すデータのデータ長（ビット数）と、アクセス結果を示すデータのデータ長（ビット数）とが等しくなり、シフトレジスタ４１２を介して効率よくデータの交換ができる。アクセス先が大きく変化する場合には、Ｃレジスタ１１４に新しい値を設定することになるため、メモリダンプ等の連続アドレスのアクセスのときにより効果がある。
【００６７】
ここでは、Ｂレジスタ１１６は３２ビット長として説明したが、アクセスサイズが１６ビットであることが多い場合には、Ｂレジスタ１１６を１６ビット長にし、Ｃレジスタ１１４を２３ビット長にしてもよい。他のビット長とすることもできる。アクセス条件Ｂにアクセスサイズを示す情報を含める場合、Ｃレジスタ１１４にアクセス条件Ｃの最大長のデータ（ここでは３１ビット＝アクセス条件Ａ（３９ビット）−リードデータ最小長（８ビット））を設定しておき、アクセス毎に使用するデータ長を切換えることも可能である。また、上記では、アクセス条件Ａのうちアドレス部ＡＤＲをアクセス条件Ｂ（ＡＤＲＢ）とアクセス条件Ｃ（ＡＤＲＣ）に分割して説明したが、アクセス条件Ａの他の条件（対象コアを示すアクセスターゲットコアＭＡＰ、アクセスサイズＳＺ等）も分割して或い分割せずにアクセス条件Ｃに含めることが可能である。さらに、上記では、シフトレジスタ４１２からＢレジスタ１１６にデータを設定した後に、結合部１２０においてアクセス条件Ａを再生すると説明されたが、結合部１２０は、シフトレジスタ４１２の出力とＣレジスタ１１４の出力とに基づいてアクセス条件Ａを再生し、結合部１２０の出力であるアクセス条件Ａを保持するレジスタを設けてもよい。
【００６８】
図１２は、上記のアクセス条件Ｃを複数保持することができるデバッグ制御部４０の構成を示す図である。
【００６９】
このデバッグ制御部４０は、図８に示されるデバッグ制御部４０の条件保持部４２１が、複数のアクセス条件Ｃを保持できるように複数のＣレジスタ、ここでは４個のＣレジスタ、すなわちＣ１レジスタ１２１、Ｃ２レジスタ１２２、Ｃ３レジスタ（図示省略）およびＣ４レジスタ（図示省略）を有する条件保持部４２２に置き換わる。アクセス条件Ｂを保持するＢレジスタ１２６の一部は、複数のＣレジスタ１２１〜１２２のうちの１つを指定するデータを保持する。条件保持部４２２は、複数のＣレジスタ１２１〜１２２のうちの指定されるレジスタから出力されるアクセス条件Ｃを示すデータを選択する選択部１２３を備える。また、デコーダ４１４は、複数のＣレジスタを制御できるように、ここでは４個のＣレジスタにデータをラッチするための信号４本、Ｃ１レジスタ１２１にデータをラッチするための信号Ｃ１ＳＥＴ、Ｃ２レジスタ１２２にデータをラッチするための信号Ｃ２ＳＥＴ、Ｃ３レジスタにデータをラッチするための信号Ｃ３ＳＥＴ（図示省略）、Ｃ４レジスタにデータをラッチするための信号Ｃ４ＳＥＴ（図示省略）を出力する。他は、図８に示されるデバッグ制御部４０と同じであり、詳細な説明は省略される。
【００７０】
エミュレータ２０とデバッグ制御部４０との間で授受されるデータのフォーマットは、図１３に示されるように、複数のＣレジスタ１２１〜１２２を選択するフィールドを備える。すなわち、アクセス条件Ｃとして、メモリ３４等のアドレスを示すアドレス部ＡＤＲＡ（３２ビット）のうちの上位９ビットであるアドレス部ＡＤＲＣが分離され、複数のＣレジスタ１２１〜１２２に格納される。アクセス条件Ｂとして、アドレス部ＡＤＲＡのうちのアドレス部ＡＤＲＣを除いた部分と、複数のＣレジスタ１２１〜１２２のうちの１つを選択する選択条件部ＳＥＬとがＢレジスタ１２６に格納される。すなわち、アクセス条件Ｂは、アクセスタイプＲＷ（１ビット）、アクセスサイズＳＺ（２ビット）、アクセスターゲットコアＭＡＰ（４ビット）と、アドレス部ＡＤＲＡのうちの下位２３ビットを示すアドレス部ＡＤＲＢと、選択条件部ＳＥＬ（２ビット）とを含み、３２ビットである。
【００７１】
選択部１２３は、Ｂレジスタ１２６に格納される選択条件部ＳＥＬの値に基づいて、複数のＣレジスタ１２１〜１２２の出力のうちの１つを選択し、結合部１２０に供給する。結合部１２０は、Ｂレジスタ１２６に保持されているアクセスタイプＲＷ、アクセスサイズＳＺ、アクセスターゲットコアＭＡＰをビット３８−３２の位置に、選択部１２３から供給されるアクセス条件Ｃを示すアドレス部ＡＤＲＣをビット３１−２３の位置に、Ｂレジスタ１２６に保持されるアドレス部ＡＤＲＢをビット２２−０の位置に配置してアクセス条件Ａのフォーマットを再生し、バスアクセス部４３０に出力する。したがって、アクセス条件Ｃが複数のＣレジスタ１２１〜１２２に保持されている限り、アクセスの度に複数のＣレジスタ１２１〜１２２に値を設定する必要はなくなる。エミュレータ２０は、複数のＣレジスタ１２１〜１２２に保持されているアクセス条件Ｃの範囲内をアクセスするときはアクセス条件Ｂをデバッグ制御部４０に送信することにより、所望のアクセス結果を示すデータを得ることができる。このとき、エミュレータ２０あるいはホスト装置１０は、複数のＣレジスタ１２１〜１２２に保持されている値をアクセス条件テーブル１９に保持することが好ましい。ここでは、エミュレータ２０がアクセス条件テーブル１９を備えるとして以下の動作説明を行なう。
【００７２】
エミュレータ２０は、図１４Ａ、１４Ｂに示されるように、デバッグ制御部４０に対してコマンドを送り、リードデータを受け取る。
【００７３】
エミュレータ２０は、アクセス条件テーブル１９を初期化する（図１４ＡステップＳ２１０）。アクセス条件テーブル１９に設定される初期値は、複数のＣレジスタ１２１〜１２２の初期値であることが好ましい。複数のＣレジスタ１２１〜１２２が初期化されない場合には、アクセス条件テーブル１９に設定される初期値は、アクセスする可能性のない実在しない領域を示す値であることが好ましい。初期値は、同一の値でもよい。ここでは、エミュレータ２０が複数のＣレジスタ１２１〜１２２に値を設定してからアクセス条件Ｃとして使用するため、この初期値は、ここでデバッグ制御部４０に設定しなくてもよい。テーブル更新ポインタＸを初期化する（図１４ＡステップＳ２１２）。テーブル更新ポインタＸは、アクセス条件Ｃを設定するアクセス条件テーブル１９の位置を示し、初期設定によりアクセス条件テーブル１９の先頭を示す。
【００７４】
エミュレータ２０は、ホスト装置１０から指示されるアクセス条件Ａを図１３に示されるように、アクセス条件Ｂとアクセス条件Ｃとに分解する（図１４ＡステップＳ２１４）。このアクセス条件Ｃがアクセス条件テーブル１９に格納されている値と一致するものがあるか比較する（図１４ＡステップＳ２１６）。一致するもの（ここではｙに一致したものとする）があれば（図１４ＡステップＳ２１６−一致（ｙ））、そのアクセス条件Ｃを示す値を格納しているレジスタを示す値Ｃ（ｙ）をアクセス条件Ｂの選択条件部ＳＥＬに設定する。
【００７５】
一致するものが無い場合（図１４ＡステップＳ２１６−全テーブル不一致）、アクセス条件Ｃを送るため、エミュレータ２０は、テーブル更新ポインタＸによって示される、例えばＣ１レジスタ１２１を“アクセス条件Ｃを設定するレジスタ”に選び、ＩＲ転送によってＣ１レジスタ１２１を選択する。信号ＴＤＩには“Ｃ１レジスタの設定”を示す値が出力される（図１４ＡステップＳ２２２）。続いて、ＤＲ転送によってＣ１レジスタ１２１に設定する新たなアクセス条件Ｃを示す値が送られ、Ｃ１レジスタ１２１は新たなアクセス条件Ｃを示す値を保持する（図１４ＡステップＳ２２４）。新たなアクセス条件Ｃをアクセス条件テーブル１９のテーブル更新ポインタＸによって示される位置に書き込んで更新する（図１４ＡステップＳ２４２）。これでテーブル更新ポインタＸによって示されるＣ（ｘ）レジスタ１２ｘがアクセス条件Ｃを示す値を格納するレジスタとなり、そのレジスタを示す値Ｃ（ｘ）をアクセス条件Ｂの選択条件部ＳＥＬに設定する（図１４ＡステップＳ２４４）。エミュレータ２０は、次の新たなアクセス条件Ｃの入力に備えてテーブル更新ポインタＸを更新する（図１４ＡステップＳ２４６）。
【００７６】
選択条件部ＳＥＬの設定が終わると、エミュレータ２０は、アクセス条件Ｂを送るため、ＩＲ転送によってＢレジスタ１２６を選択する。信号ＴＤＩには“Ｂレジスタの設定”を示す値が出力される（図１４ＢステップＳ２５２）。続いて、ＤＲ転送によってＢレジスタ１２６に設定する値が送られ、アクセス条件ＢがＢレジスタ１２６に設定される（図１４ＢステップＳ２５４）。このアクセス条件Ｂには、複数のＣレジスタ１２１〜１２２のうちの１つを選択する情報（選択条件部ＳＥＬ）を含んでいる。このとき、信号ＴＤＩに３２ビットのデータが出力され、信号ＴＤＯにより示されるデータは無視される。
【００７７】
Ｃ１レジスタ１２１およびＢレジスタ１２６にアクセス条件が設定されると、選択部１２３は、Ｂレジスタ１２６の選択条件部ＳＥＬの値に基づいて、Ｃ１レジスタ１２１の値を選択して結合部１２０に出力する。結合部１２０は、アクセス条件を示す信号ＡＤＲＳを生成してバスアクセス部４３０に出力する。バスアクセス部４３０は、バスを介してターゲット装置３０内をアクセスし、所望のデータを取り込む。
【００７８】
Ｄレジスタ４４２がそのアクセス結果を示すデータを格納するまで、すなわち、デバッグ制御部４０がリードアクセスを完了するまで、エミュレータ２０は待機しつつ（図１４ＢステップＳ２６２）、次のアクセス条件Ａをアクセス条件Ｂおよびアクセス条件Ｃに分解する（図１４ＢステップＳ２６４）。エミュレータ２０は、この次のアクセス条件Ｃと、アクセス条件テーブル１９に格納されている値とを比較する（図１４ＢステップＳ２６６）。
【００７９】
一致するものがあるときには（図１４ＢステップＳ２６６−一致（ｙ））、複数のＣレジスタ１２１〜１２２のいずれかに設定されているアクセス条件Ｃがそのまま使用できるものとしてエミュレータ２０は、そのＣ（ｙ）レジスタ１２ｙを示す値Ｃ（ｙ）を選択条件部ＳＥＬに設定する（図１４ＢステップＳ２７２）。エミュレータ２０は、ＤＲ転送によってＢレジスタ１２６に次のアクセス条件Ｂを示すデータを信号ＴＤＩに出力しつつ、信号ＴＤＯに示されるアクセス結果であるリードデータを取り込む（図１４ＢステップＳ２７４）。エミュレータ２０は、アクセス条件Ｂを送り終わると、ステップＳ２６２に戻り、次のリードアクセスの完了を待つ。アクセス条件Ｃが一致するものがある間は、連続的にリードアクセスが繰り返される。
【００８０】
不一致の場合（図１４ＢステップＳ２６６−全テーブル不一致）、次のアクセス条件Ｃとして複数のＣレジスタ１２１〜１２２に格納されているデータが使えないため、エミュレータ２０はアクセス結果を取り込んで一旦この連続アクセスのシーケンスを取り止める。すなわち、エミュレータ２０は、次のアクセス条件Ｂとして例えば前回と同じアクセス条件Ｂ等のダミーデータを信号ＴＤＩとして出力しつつ、信号ＴＤＯに示されるアクセス結果であるリードデータを取り込む（図１４ＢステップＳ２７６）。リードデータを取り込み終わると、ステップＳ２２２（図１４Ａ）に戻り、アクセス条件Ｃの設定から始める。
【００８１】
このように、アクセス条件Ｃを複数有することにより、アクセス条件Ｃに該当するアクセス条件が頻繁に変わっても複数のアクセス条件Ｃの中から該当するアクセス条件を選択することができる。そのため、交互にアクセス範囲を変える時などに複数のＣレジスタ１２１〜１２２に新たに値を設定する機会が少なくなり、より効率的にターゲット装置３０をリードアクセスすることができる。
【００８２】
図１５、図１６に、このときのデバッグ制御部４０の動作を示すタイミング図が示される。
【００８３】
図１５は、Ｃ１レジスタ１２１、Ｃ２レジスタ１２２にそれぞれアクセス条件Ｃを示すデータｃ１、ｃ２を設定する動作を示す。エミュレータ２０は、デバッグ制御部４０にＣ１レジスタ１２１の選択指示を示すコマンド（ＳＥＴ＿ＩＲ＝Ｃ１ｒｅｇ）を発行する。すなわち、エミュレータ２０は、信号ＴＤＩにＩＲ転送でＣ１レジスタ選択を示すデータを出力する（図１５（ａ））。シフトレジスタ４１２は、信号ＴＤＩに示されるＣ１レジスタ選択を示すデータをクロック信号ＴＣＫに応答して取り込む（図１５（ｂ））。このとき、信号ＴＤＯには、シフトレジスタ４１２にセットされていたデータが出力されるが、エミュレータ２０では、そのデータは無視される。Ｃ１レジスタ１２１を選択設定するコマンドがシフトレジスタ４１２に揃うと（状態ＳＲ７）、状態管理部４１１は、信号ＩＲＳＥＴをアクティブにし、Ｃ１レジスタ１２１を選択設定するコマンドが命令レジスタ４１３に格納される（図１５（ｄ））。
【００８４】
エミュレータ２０は、続いてＣ１レジスタ１２１に設定するデータｃ１すなわちアクセス条件Ｃを示すデータを送る（ＳＥＴ＿ＤＲ＝ｃ１）。シフトレジスタ４１２は、そのときに設定されているデータを信号ＴＤＯとして出力しつつ、アクセス条件Ｃを示すデータｃ１を受信する（図１５（ｂ））。データｃ１は、図１３に示されるように、９ビットである。信号ＴＤＯに示されるデータは無意味であり、エミュレータ２０は無視する（図１５（ｃ））。アクセス条件Ｃを示すデータｃ１が揃うと（状態ＳＤ７）、状態管理部４１１は、信号ＤＲＳＥＴをアクティブにし、デコーダ４１４は、命令レジスタ４１３の出力をデコードして信号Ｃ１ＳＥＴをアクティブにする。したがって、シフトレジスタ４１２に格納されるデータｃ１は、Ｃ１レジスタ１２１に取り込まれる（図１５（ｅ））。
【００８５】
次に、エミュレータ２０は、デバッグ制御部４０にＣ２レジスタ１２２の選択指示を示すコマンド（ＳＥＴ＿ＩＲ＝Ｃ２ｒｅｇ）を発行する。すなわち、エミュレータ２０は、信号ＴＤＩにＩＲ転送でＣ２レジスタ選択を示すデータを出力する（図１５（ａ））。シフトレジスタ４１２は、信号ＴＤＩに示されるＣ２レジスタ選択を示すデータをクロック信号ＴＣＫに応答して取り込む（図１５（ｂ））。このとき、信号ＴＤＯには、シフトレジスタ４１２にセットされていたデータが出力されるが、エミュレータ２０では、そのデータは無視される。Ｃ２レジスタ１２２を選択設定するコマンドがシフトレジスタ４１２に揃うと（状態ＳＲ７）、状態管理部４１１は、信号ＩＲＳＥＴをアクティブにし、Ｃ２レジスタ１２２を選択設定するコマンドが命令レジスタ４１３に格納される（図１５（ｄ））。
【００８６】
エミュレータ２０は、続いてＣ２レジスタ１２２に設定するデータｃ２すなわちアクセス条件Ｃを示すデータを送る（ＳＥＴ＿ＤＲ＝ｃ２）。シフトレジスタ４１２は、そのときに設定されているデータを信号ＴＤＯとして出力しつつ、アクセス条件Ｃを示すデータｃ２を受信する（図１５（ｂ））。データｃ２は、図１３に示されるように、９ビットである。信号ＴＤＯに示されるデータは無意味であるのでエミュレータ２０は無視する（図１５（ｃ））。アクセス条件Ｃを示すデータｃ２が揃うと（状態ＳＤ７）、状態管理部４１１は、信号ＤＲＳＥＴをアクティブにし、デコーダ４１４は、命令レジスタ４１３の出力をデコードして信号Ｃ２ＳＥＴをアクティブにする。したがって、シフトレジスタ４１２に格納されるデータｃ２は、Ｃ２レジスタ１２２に取り込まれる（図１５（ｆ））。
【００８７】
このように、アクセス条件Ｃを保持する複数のＣレジスタ１２１〜１２２は順次設定される。ここでは、Ｃ１レジスタ１２１、Ｃ２レジスタ１２２を連続的に設定したが、新しいアクセス条件Ｃが生成される毎に設定してもよい。また、３個以上のレジスタに設定する場合も同じ手順で設定することができる。
【００８８】
図１６は、複数のＣレジスタ１２１〜１２２を使用してターゲット装置３０内からデータを読み出す動作を示す。
【００８９】
エミュレータ２０は、デバッグ制御部４０にＢレジスタ１２６の選択指示を示すコマンド（ＳＥＴ＿ＩＲ＝Ｂｒｅｇ）を発行する。すなわち、信号ＴＤＩにＩＲ転送でＢレジスタ選択を示すデータを出力する（図１６（ａ））。シフトレジスタ４１２は、信号ＴＤＩに示されるＢレジスタ選択を示すデータをクロック信号ＴＣＫに応答して取り込む（図１６（ｂ））。このとき、信号ＴＤＯには、シフトレジスタ４１２にセットされていたデータが出力されるが、エミュレータ２０では、そのデータは無視される。Ｂレジスタ１２６を選択設定するコマンドがシフトレジスタ４１２に揃うと（状態ＳＲ７）、状態管理部４１１は、信号ＩＲＳＥＴをアクティブにし、Ｂレジスタ１２６を選択設定するコマンドが命令レジスタ４１３に格納される（図１６（ｄ））。
【００９０】
エミュレータ２０は、続いてＢレジスタ１２６に設定するデータ（ｃ１＋ｂ１）を送る（ＳＥＴ＿ＤＲ＝ｃ１＋ｂ１，ＲＥＡＤ＿ＤＲＤ）。データ（ｃ１＋ｂ１）は、Ｃ１レジスタ１２１に設定されるアクセス条件Ｃを使用することを示す選択条件部ＳＥＬを有するアクセス条件Ｂを示す。このコマンドは、同時にＤレジスタ４４２に格納されているデータを読み出すことも示している。シフトレジスタ４１２は、そのときに設定されているデータを信号ＴＤＯとして出力しつつ、Ｂレジスタ１２６に設定するデータ（ｃ１＋ｂ１）を受信する（図１６（ｂ））。アクセス条件Ｂとして送られるデータ（ｃ１＋ｂ１）は、図１３に示されるように、３２ビットである。このとき信号ＴＤＯに示されるデータは無意味であるのでエミュレータ２０は無視する（図１６（ｃ））。アクセス条件Ｂを示すデータ（ｃ１＋ｂ１）が揃うと（状態ＳＤ７）、状態管理部４１１は、信号ＤＲＳＥＴをアクティブにし、デコーダ４１４は、命令レジスタ４１３の出力をデコードして信号ＢＳＥＴをアクティブにする。したがって、シフトレジスタ４１２に格納されるデータ（ｃ１＋ｂ１）は、Ｂレジスタ１２６に取り込まれる（図１６（ｇ））。
【００９１】
選択部１２３は、Ｂレジスタ１２６に設定された選択条件部ＳＥＬのデータに基づいて、Ｃ１レジスタ１２１の出力を選択し、結合部１２０にアクセス条件Ｃとして供給する。結合部１２０は、選択部１２３の出力であるＣ１レジスタ１２１に保持されるデータと、Ｂレジスタ１２６に保持されるデータとを結合してアクセス条件Ａ（ａ１）を再生し、信号ＡＤＲＳとしてバスアクセス部４３０に供給する。デコーダ４１４は、これと同時あるいは所定の時間後、信号ＢＴＲＧをアクティブにしてバスアクセス部４３０を起動する。アクセス条件Ａを示すデータａ１は、図１３に示されるように、３９ビットである。バスアクセス部４３０は、信号ＡＤＲＳによって供給されるアクセス条件Ａを示すデータａ１に基づいて、バスを介してターゲット装置３０内をアクセスする。所定のデータが読み出されると、バスアクセス部４３０は、読み出したデータ（ｄ１）を信号ＲＤＤＴに示し、信号ＤＳＥＴをアクティブにする。Ｄレジスタ４４２は、信号ＲＤＤＴに示されるデータｄ１をラッチする（図１６（ｈ））。
【００９２】
エミュレータ２０が次のアクセス条件Ｂを示すデータを送るとき（ＳＥＴ＿ＤＲ＝ｃ２＋ｂ２，ＲＥＡＤ＿ＤＲＤ）、状態ＳＤ２になると状態管理部４１１は、信号ＳＬＯＡＤをアクティブにする。シフトレジスタ４１２は、Ｄレジスタ４４２に格納されているデータを取り込む（図１６（ｂ）（ｈ））。アクセス条件を示すデータ（ｃ２＋ｂ２）がエミュレータ２０から信号ＴＤＩとして送信されるとき、デバッグ制御部４０は、アクセス条件Ｂ（データ（ｃ１＋ｂ１））およびアクセス条件Ｃ（データｃ１）を結合したアクセス条件Ａ（データａ１）によって指示されるアクセス先から読み出したデータｄ１を信号ＴＤＯとして送信する。すなわち、シフトレジスタ４１２は、信号ＴＤＩに示されるデータ（ｃ２＋ｂ２）を取り込みつつ、並列に格納されたデータｄ１を直列に変換して信号ＴＤＯに出力する。エミュレータ２０は、信号ＴＤＯに示されるデータｄ１を取り込み、アクセス条件Ｂ（データ（ｃ１＋ｂ１））およびアクセス条件Ｃ（データｃ１）を結合したアクセス条件Ａ（データａ１）によって示されるアクセス条件によって読み出した結果を得る。このとき、エミュレータ２０から送信されるアクセス条件Ｂを示すデータと、デバッグ制御部４０から送信される読み出しデータとは同じデータ長（３２ビット）であり、転送時間に無駄はない。以降、アクセス条件Ｂを変えてあるいは変えないでエミュレータ２０はターゲット装置３０内のアクセス先からデータを順次読み出すことができる。
【００９３】
さらに、エミュレータ２０が次のアクセス条件Ｂを示すデータを送るとき（ＳＥＴ＿ＤＲ＝ｃ１＋ｂ３，ＲＥＡＤ＿ＤＲＤ）、状態ＳＤ２になると状態管理部４１１は、信号ＳＬＯＡＤをアクティブにする。シフトレジスタ４１２は、Ｄレジスタ４４２に格納されているデータを取り込む（図１６（ｂ）（ｈ））。アクセス条件を示すデータ（ｃ１＋ｂ３）がエミュレータ２０から信号ＴＤＩとして送信されるとき、デバッグ制御部４０は、アクセス条件Ｂ（データ（ｃ２＋ｂ２））およびアクセス条件Ｃ（データｃ２）を結合したアクセス条件Ａ（データａ２）によって指示されるアクセス先から読み出したデータｄ２を信号ＴＤＯとして送信する。すなわち、シフトレジスタ４１２は、信号ＴＤＩに示されるデータ（ｃ１＋ｂ３）を取り込みつつ、並列に格納されたデータｄ２を直列に変換して信号ＴＤＯに出力する。エミュレータ２０は、信号ＴＤＯに示されるデータｄ２を取り込み、アクセス条件Ｂ（データ（ｃ２＋ｂ２））およびアクセス条件Ｃ（データｃ２）を結合したアクセス条件Ａ（データａ２）によって示されるアクセス条件によって読み出した結果を得る。アクセス条件Ｃが複数のＣレジスタ１２１〜１２２に保持されている条件であれば、新たにＣ１レジスタ１２１、Ｃ２レジスタ１２２に設定する必要はない。したがって、データリード動作においてアクセス条件Ｃを設定するためのデータ転送を削減することができ、より効率的にデータ転送をすることができる。
【００９４】
このように、アクセス条件Ｃを保持するＣレジスタに予め条件を設定しておくことにより、効率よくデータ転送できる。連続的にアクセスする場合、アクセス条件Ｃを自動的に設定することもできる。図１７に自動的にアクセス条件Ｃを設定するデバッグ制御部４０の構成を示す。
【００９５】
図１７に示されるデバッグ制御部４０は、リードデータ部４４０、ＤＣＵ制御部４１０、バスアクセス部４３０、条件保持部４２３を備え、リードデータ部４４０、ＤＣＵ制御部４１０、バスアクセス部４３０は、他のデバッグ制御部４０と同じである。条件保持部４２３は、アクセス条件Ｂを保持するＢレジスタ１３６と、アクセス条件Ｃを保持するＣレジスタ１３４と、結合部１３０と、Ｃレジスタ１３４にデータを設定するか否かを決定するためのフラグ部１３７と論理回路１３５とを備える。このデバッグ制御部４０には、リードアクセスする際にまずアクセス条件Ａが送られ、その後連続的にリードアクセスする毎にリードデータのデータサイズと同じサイズのアクセス条件Ｂが送られる。
【００９６】
Ｂレジスタ１３６は、前述のＢレジスタ１１６、１２６と同じように、アクセス条件Ａのうちの可変部分を示すアクセス条件Ｂを保持する。Ｃレジスタ１３４は、アクセス条件Ａのうちの固定部分を示すアクセス条件Ｃを保持する。フラグ部１３７は、状態管理部４１１から出力される信号ＩＲＳＥＴ、ＤＲＳＥＴに基づいて、Ｃレジスタ１３４にアクセス条件Ｃを設定するか否かを判定し、その結果を論理回路１３５および結合部１３０に示す。ここでは、ＩＲ転送によって信号ＩＲＳＥＴがアクティブになった後、１回目のＤＲ転送でアクセス条件Ａが送られ、２回目以降のＤＲ転送でアクセス条件Ｂが送られるものとする。したがって、フラグ部１３７は、信号ＩＲＳＥＴがアクティブを示すとセットされ、信号ＤＲＳＥＴがアクティブからインアクティブになるとリセットされるフラグ情報を有する。このフラグ情報は、ＩＲ転送があった後の１回目のＤＲ転送ではセットされており、１回目のＤＲ転送が終わるとリセットされる。
【００９７】
論理回路１３５は、フラグ部１３７がセットされているときに、Ｂレジスタ１３６に値を設定する信号ＢＳＥＴがアクティブになると、Ｃレジスタ１３４に値を設定する信号ＣＳＥＴをアクティブにする。Ｂレジスタ１３６は、アクセス条件Ａの転送時、アクセス条件Ｂの転送時共に値が設定される。Ｃレジスタ１３４は、初回のアクセス条件Ａの転送時のみ値（アクセス条件Ｃ）がセットされる。Ｃレジスタ１３４は、アクセスサイズＳＺを示すフィールドを有し、そのフィールドに格納されるアクセスサイズＳＺにより示されるデータサイズを示す情報は、結合部１３０に供給される。
【００９８】
結合部１３０は、Ｂレジスタ１３６に格納されるデータと、Ｃレジスタ１３４に格納されるデータとを所定の位置に配置して結合し、アクセス条件Ａを示す信号ＡＤＲＳとしてバスアクセス部４３０に供給する。フラグ部１３７が初回のＤＲ転送（アクセス条件Ａ）を示すとき、結合部１３０は、転送されたアクセス条件Ａをバスアクセス部４３０に供給する。フラグ部１３７が２回目以降のＤＲ転送（アクセス条件Ｂ）を示すとき、結合部１３０は、Ｃレジスタ１３４から供給されるデータサイズを示す情報に基づいて、Ｂレジスタ１３６に格納されるデータと、Ｃレジスタに格納されるデータとを所定の位置に配置してアクセス条件Ａを再生する。
【００９９】
アクセス条件Ａを再生した後の処理は前述と同様である。次のアクセス条件Ｂは、初回のアクセス条件Ａに示されるデータサイズになるように短縮処理され、エミュレータ２０から転送される。それと並行して、デバッグ制御部４０からターゲット装置３０内をアクセスした結果を示すデータが同じデータサイズでエミュレータ２０に転送される。したがって、効率的にデータ転送を行なうことができる。
【０１００】
図１８に、このときのデバッグ制御部４０の動作を示すタイミング図が示される。
【０１０１】
エミュレータ２０は、デバッグ制御部４０に初回のアクセス条件Ａを設定するために、Ｂレジスタ１３６の選択設定を示すコマンド（ＳＥＴ＿ＩＲ＝Ｂｒｅｇ）を発行する。すなわち、エミュレータ２０は、信号ＴＤＩにＩＲ転送でＢレジスタ選択を示すデータを出力する（図１８（ａ））。シフトレジスタ４１２は、信号ＴＤＩに示されるＢレジスタ選択を示すデータをクロック信号ＴＣＫに応答して取り込む（図１８（ｂ））。このとき、信号ＴＤＯには、シフトレジスタ４１２にセットされていたデータが出力されるが、エミュレータ２０では、そのデータは無視される。シフトレジスタ４１２にＢレジスタ１３６を選択設定するコマンドが揃うと（状態ＳＲ７）、状態管理部４１１は、信号ＩＲＳＥＴをアクティブにし、Ｂレジスタ１３６を選択設定するコマンドが命令レジスタ４１３に格納される（図１８（ｄ））。このとき、フラグ部１３７は、信号ＩＲＳＥＴがアクティブになることからセットされ、Ｂレジスタ１３６にアクセス条件Ｂを設定するときにＣレジスタ１３４にアクセス条件Ｃを同時に設定するように信号を出力する。
【０１０２】
エミュレータ２０は、続いてアクセス条件Ａを示すデータａ１すなわちアクセス条件Ｂを示すデータｂ１とアクセス条件Ｃを示すデータｃ１とを含むアクセス条件を示すデータを送る（ＳＥＴ＿ＤＲ＝ａ１，ＲＥＡＤ＿ＤＲＤ）。このコマンドは、同時にＤレジスタ４４２に格納されているデータを読み出すことも示している。シフトレジスタ４１２は、そのときに設定されているデータを信号ＴＤＯとして出力しつつ、アクセス条件を示すデータａ１を受信する（図１８（ｂ））。データａ１は、図９（ａ）に示されるように、３９ビットである。信号ＴＤＯに示されるデータは無意味であるのでエミュレータ２０は無視する（図１８（ｃ））。
【０１０３】
アクセス条件を示すデータａ１が揃うと（状態ＳＤ７）、状態管理部４１１は、信号ＤＲＳＥＴをアクティブにし、デコーダ４１４は、命令レジスタ４１３の出力をデコードして信号ＢＳＥＴをアクティブにする。したがって、シフトレジスタ４１２に格納されるデータａ１のうちのアクセス条件Ｂを示すデータｂ１は、Ｂレジスタ１３６に取り込まれる（図１８（ｆ））。このとき、フラグ部１３７から出力されている信号が初回のアクセス条件設定であることを示しているため、論理回路１３５は信号ＣＳＥＴをアクティブにする。したがって、データａ１のうちのアクセス条件Ｃを示すデータｃ１は、Ｃレジスタ１３４に取り込まれる（図１８（ｅ））。結合部１３０は、Ｂレジスタ１３６およびＣレジスタ１３４の出力に基づいて、アクセス条件Ａ（ａ１）を再生し、ターゲット装置３０内のアクセス先を示すデータａ１をバスアクセス部４３０に供給する。
【０１０４】
デコーダ４１４は、これと同時あるいは所定の時間後、信号ＢＴＲＧをアクティブにしてバスアクセス部４３０を起動する。バスアクセス部４３０は、供給されるアクセス条件Ａ（ａ１）に基づいて、バスを介してターゲット装置３０内をアクセスする。所定のデータが読み出されると、バスアクセス部４３０は、読み出したデータ（ｄ１）を信号ＲＤＤＴに示し、信号ＤＳＥＴをアクティブにする。Ｄレジスタ４４２は、信号ＲＤＤＴに示されるデータｄ１をラッチする（図１８（ｇ））。
【０１０５】
エミュレータ２０は、アクセス条件Ａとしてデータａ１をデバッグ制御部４０に転送しているため、次のアクセス条件として、アクセス条件Ａに示されるアクセスサイズのアクセス条件Ｂを準備する。ここでは、アクセス条件Ｂは例えば図９（ｃ）に示されるように、３２ビットである。エミュレータ２０が次のアクセス条件を示すデータｂ２を送るとき（ＳＥＴ＿ＤＲ＝ｂ２，ＲＥＡＤ＿ＤＲＤ）、状態ＳＤ２になると状態管理部４１１は、信号ＳＬＯＡＤをアクティブにする。シフトレジスタ４１２は、Ｄレジスタ４４２に格納されているデータを取り込む（図１８（ｂ）（ｇ））。Ｄレジスタ４４２に格納されているデータｄ１は３２ビットである。アクセス条件Ｂを示すデータｂ２がエミュレータ２０から信号ＴＤＩとして送信されるとき、デバッグ制御部４０は、アクセス条件（データａ１）によって指示されるアクセス先から読み出したデータｄ１を信号ＴＤＯとして送信する。すなわち、シフトレジスタ４１２は、信号ＴＤＩに示されるデータｂ２を取り込みつつ、並列に格納されたデータｄ１を直列に変換して信号ＴＤＯに出力する。エミュレータ２０は、信号ＴＤＯに示されるデータｄ１を取り込み、データａ１によって示されるアクセス条件によって読み出した結果を得る。このとき、エミュレータ２０から送信されるアクセス条件Ｂを示すデータ（ｂ２）と、デバッグ制御部４０から送信される読み出しデータ（ｄ１）とは同じデータ長（３２ビット）であり、転送時間に無駄はない。以降、アクセス条件Ｃが変わらなければ、そのままアクセス条件Ｂを変えてあるいは変えないでエミュレータ２０はターゲット装置３０内のアクセス先からデータを読み出すことができる。アクセス条件Ｃを変えるときは、再度ＩＲ転送によってＢレジスタ選択を行なえばよい。
【０１０６】
このように、アクセス条件Ｂを示すデータのデータ長（ビット数）と、アクセス結果を示すデータのデータ長（ビット数）とが等しくなり、シフトレジスタ４１２を介して効率よくデータの交換ができ、メモリダンプ等の連続アドレスのアクセスのときにより効果がある。
【０１０７】
Ｃレジスタ１３４に格納されるデータのデータサイズが固定であれば、結合部１３０にデータの配置を決めるためのデータサイズを示す情報を供給しなくてもよい。また、結合部１３０は、Ｂレジスタ１３６に格納されるデータと、Ｃレジスタ１３４に格納されるデータとを毎回同じ配列で結合するため、フラグ部１３７からの情報が無くても結合処理はできる。
【０１０８】
ここでは、アクセス条件Ａをアクセス条件Ｂ、Ｃに分解する処理をエミュレータ２０において行なうように説明したが、ホスト装置１０において行なうこともできる。その場合には、アクセス条件テーブル１９は、ホスト装置１０が管理することになる。また、各データレジスタの指定もホスト装置１０で行ない、エミュレータ２０は、電気的なインタフェースの変換を行なって、ターゲット装置３０をアクセスすることになる。
【０１０９】
このように、アクセス条件Ａを、リードデータ長以下で且つ個別設定が必要なアクセス条件Ｂと、それ以外の共通設定可能なアクセス条件Ｃに分割し、共通設定可能なアクセス条件Ｃは更新が必要な時のみ転送する。アクセス条件Ｃが変わらない場合には、リードアクセス毎にリードデータ長以下の個別設定が必要なアクセス条件Ｂのみリードデータと並行して転送する。これにより、アクセス条件のみが転送されてリードデータが転送されない期間を短縮することができる。したがって、リードデータの転送効率が向上する。
【０１１０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【０１１１】
１０  ホスト装置
１２  入力装置
１４  ホスト装置本体
１６  出力装置
１８  デバッガ
１９  アクセス条件テーブル
２０  エミュレータ
３０  ターゲット装置
３２  ＣＰＵ
３４  メモリ
３６  周辺入出力部
４０  デバッグ制御部
１１０、１２０、１３０  結合部
１１４  Ｃレジスタ
１１６、１２６、１３６  Ｂレジスタ
１２１  Ｃ１レジスタ
１２２  Ｃ２レジスタ
１２３  選択部
１３４  Ｃレジスタ
１３５  論理回路
１３７  フラグ部
４１０  ＤＣＵ制御部
４１１  状態管理部
４１２  シフトレジスタ
４１３  命令レジスタ
４１４  デコーダ
４２０、４２１、４２２、４２３  条件保持部
４２８  Ａレジスタ
４３０  バスアクセス部
４４０  リードデータ部
４４２  Ｄレジスタ
【図１】
2013210750.tif 000003
【図２】
2013210750.tif 000004
【図３】
2013210750.tif 000005
【図４】
2013210750.tif 000006
【図５】
2013210750.tif 000007
【図６】
2013210750.tif 000008
【図７】
2013210750.tif 000009
【図８】
2013210750.tif 000010
【図９】
2013210750.tif 000011
【図１０Ａ】
2013210750.tif 000012
【図１０Ｂ】
2013210750.tif 000013
【図１１】
2013210750.tif 000014
【図１２】
2013210750.tif 000015
【図１３】
2013210750.tif 000016
【図１４Ａ】
2013210750.tif 000017
【図１４Ｂ】
2013210750.tif 000018
【図１５】
2013210750.tif 000019
【図１６】
2013210750.tif 000020
【図１７】
2013210750.tif 000021
【図１８】
2013210750.tif 000022