(57)【要約】【課題】デバッグ効率を向上させるデバッグ装置、デバッグ方法を提供する。【解決手段】デバッグ装置は、命令実行部（３２）と、レジスタ（２４）と、トレースメモリ（２２）と、バス制御部（３８）とを具備する。命令実行部（３２）は、プログラムコードを実行してアクセスするアドレスをバス（ＩＢＵＳ／ＰＢＵＳ）に出力する。このプログラムコードはデバッグに使用される専用のデバッグコードを含み、命令実行部（３２）はデバッグコードを実行していることを示す制御信号（ダミーリード実行信号）を出力する。レジスタ（２４）は、ホスト装置（１０）によって設定されるアドレスを保持する。トレースメモリ（２２）は、バス（ＰＢＵＳ）の状態を示すデータを蓄積する。バス制御部（３８）は、制御信号（ＤＳＴＢ）がアクティブのときに、レジスタ（２４）に設定されるアドレスを命令実行部（３２）が出力するアドレスの代わりに前記バスに出力する。【選択図】図１
2012088839.tif 000002
【特許請求の範囲】
【請求項１】
プログラムコードを実行してアクセスするアドレスをバスに出力する命令実行部と、前記プログラムコードはデバッグに使用される専用のデバッグコードを含み、前記命令実行部は前記デバッグコードを実行していることを示す制御信号を出力し、
ホスト装置によって設定されるアドレスを保持するレジスタと、
前記バスの状態を示すデータを蓄積するトレースメモリと、
前記制御信号がアクティブのときに、前記レジスタに設定されるアドレスを前記命令実行部が出力するアドレスの代わりに前記バスに出力するバス制御部と
を具備する
デバッグ装置。
【請求項２】
前記バス制御部は、前記命令実行部から出力されるアドレスと、前記レジスタから出力されるアドレスとを入力し、前記制御信号がアクティブのときに前記レジスタから出力されるアドレスを選択して前記バスに出力する選択回路を備える
請求項１に記載のデバッグ装置。
【請求項３】
前記レジスタは複数のアドレスを保持し、前記命令実行部が前記デバッグコードを実行するときに前記複数のアドレスのうちの対応するアドレスを出力する
請求項１または請求項２に記載のデバッグ装置。
【請求項４】
前記トレースメモリは、前記制御信号の状態を前記バスの状態を示すデータとともに蓄積し、前記命令実行部が前記デバッグコードを実行しているときのデータであることを示す
請求項１から請求項３のいずれかに記載のデバッグ装置。
【請求項５】
前記ホスト装置が前記レジスタに値を設定しているとき、前記デバッグコードが実行されると、前記トレースメモリは前記バスの状態を示すデータの代わりに所定の値を格納する
請求項１から請求項４のいずれかに記載のデバッグ装置。
【請求項６】
前記ホスト装置が前記レジスタに値を設定しているとき、前記デバッグコードが実行されると、前記バス制御部は所定の値をアドレスとして前記バスに出力する
請求項１から請求項５のいずれかに記載のデバッグ装置。
【請求項７】
前記ホスト装置は、前記命令実行部の実行状態にかかわらずに前記レジスタに所望のアドレスを設定する
請求項１から請求項６のいずれかに記載のデバッグ装置。
【請求項８】
プログラムコードを実行してアクセスするアドレスを命令実行部からバスに出力するステップと、
前記プログラムコードはデバッグに使用される専用のデバッグコードを含み、前記デバッグコードを実行していることを示す制御信号を出力するステップと、
ホスト装置によってアドレスをレジスタに設定するステップと、
前記バスの状態を示すデータをトレースメモリに蓄積するステップと、
前記制御信号がアクティブのときに前記レジスタに設定されるアドレスを前記命令実行部から出力されるアドレスの代わりに前記バスに出力するステップと
を具備する
デバッグ方法。
【請求項９】
前記代わりに前記バスに出力するステップは、前記命令実行部から出力されるアドレスと、前記レジスタから出力されるアドレスとを入力する選択回路によって、前記制御信号がアクティブのときに前記レジスタから出力されるアドレスを選択して前記バスに出力するステップを備える
請求項８に記載のデバッグ方法。
【請求項１０】
レジスタに設定するステップは、
前記レジスタが複数のアドレスを保持するステップと、
前記命令実行部が前記デバッグコードを実行するときに前記複数のアドレスのうちの対応するアドレスを出力するステップと
を備える
請求項８または請求項９に記載のデバッグ方法。
【請求項１１】
トレースメモリに蓄積するステップは、前記制御信号の状態を前記バスの状態を示すデータとともに前記トレースメモリに蓄積するステップを備え、
前記命令実行部が前記デバッグコードを実行しているときのデータであることを示す
請求項８から請求項１０のいずれかに記載のデバッグ方法。
【請求項１２】
トレースメモリに蓄積するステップは、前記ホスト装置が前記レジスタに値を設定しているとき、前記デバッグコードが実行されると、前記バスの状態を示すデータの代わりに所定の値を前記トレースメモリに格納するステップを備える
請求項８から請求項１１のいずれかに記載のデバッグ方法。
【請求項１３】
代わりに前記バスに出力するステップは、前記ホスト装置が前記レジスタに値を設定しているとき、前記デバッグコードが実行されると、前記バス制御部は所定の値をアドレスとして前記バスに出力するステップを備える
請求項８から請求項１２のいずれかに記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インサーキットエミュレータを用いてソフトウェアをデバッグするデバッグ装置、デバッグ方法に関する。
【背景技術】
【０００２】
近年、半導体集積回路の大規模化に伴い、半導体集積回路に実装されている機能も複雑になり、制御するための実行プログラムは増大化の一途をたどる。その実行プログラムは、インサーキットエミュレータ等を用いてデバッグされることが多く、デバッグするための時間も増加している。その流れの中で正式にリリースされる実行プログラムそのものを用い、プログラムの実行を停めずに半導体集積回路内のリソース状態を得て、プログラム検証を行なう要求がますます強くなっている。
【０００３】
特開２００９−１５７８７４号公報に記載の情報処理装置は、デバッグコードを含むプログラムを実行する命令実行部と、命令実行部から出力されるアクセス信号を入力し、アクセス信号に含まれる論理アドレスに基づいて外部バスにアクセスを切り替えるアクセス切替部とを備える。アクセス切替部は、デバッグ設定に基づいて、デバッグコードの実行に応じて命令実行部から出力されるアクセス信号を外部バスへアクセスするか否かを切り替える。
【０００４】
この装置では、確認すべきデータを読み出す命令を実行されるプログラムコードの中に予め埋め込んでおく必要がある。したがって、確認すべきデータが格納されているアドレスを変えるときには、実行されるプログラムコードの中に埋め込まれている確認すべきデータを読み出す命令を書き換える必要がある。すなわち、確認すべきデータが格納されているアドレスを変えるたびに実行されるプログラムコードの入れ替えが発生する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１５７８７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、デバッグ効率を向上させるデバッグ装置、デバッグ方法を提供する。
【課題を解決するための手段】
【０００７】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００８】
本発明の観点では、デバッグ装置は、命令実行部（３２）と、レジスタ（２４）と、トレースメモリ（２２）と、バス制御部（３８）とを具備する。命令実行部（３２）は、プログラムコードを実行してアクセスするアドレスをバス（ＩＢＵＳ／ＰＢＵＳ）に出力する。このプログラムコードはデバッグに使用される専用のデバッグコードを含み、命令実行部（３２）はデバッグコードを実行していることを示す制御信号（ダミーリード実行信号）を出力する。レジスタ（２４）は、ホスト装置（１０）によって設定されるアドレスを保持する。トレースメモリ（２２）は、バス（ＰＢＵＳ）の状態を示すデータを蓄積する。バス制御部（３８）は、制御信号（ＤＳＴＢ）がアクティブのときに、レジスタ（２４）に設定されるアドレスを命令実行部（３２）が出力するアドレスの代わりに前記バスに出力する。
【０００９】
本発明の他の観点では、デバッグ方法は、デバッグに使用される専用のデバッグコードを含むプログラムコードを実行してアクセスするアドレスを命令実行部（３２）からバス（ＩＢＵＳ／ＰＢＵＳ）に出力するステップと、デバッグコードを実行していることを示す制御信号（ダミーリード実行信号）を出力するステップと、ホスト装置（１０）によってアドレスをレジスタ（２４）に設定するステップと、バス（ＰＢＵＳ）の状態を示すデータをトレースメモリ（２２）に蓄積するステップと、制御信号（ＤＳＴＢ）がアクティブのときにレジスタ（２４）に設定されるアドレスを命令実行部（３２）から出力されるアドレスの代わりにバス（ＰＢＵＳ）に出力するステップとを具備する。
【発明の効果】
【００１０】
本発明によれば、デバッグ効率を向上させるデバッグ装置、デバッグ方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係るデバッグシステム、デバッグ装置の構成を示す図である。
【図２】アドレス切り替えを説明する図である。
【図３】ライト命令実行時の信号を示すタイミング図である。
【図４】リード命令、ダミーリード命令実行時の信号を示すタイミング図である。
【図５】デバッグ用アドレスレジスタの設定変更時の信号を示すタイミング図である。
【発明を実施するための形態】
【００１２】
図面を参照して本発明の実施の形態を説明する。
【００１３】
図１は、本発明の実施の形態に係るデバッグシステム及びデバッグ装置の構成を示す図である。デバッグシステムは、デバッグ装置２０と、ホスト装置１０とを具備する。デバッグ装置２０は、デバッグされる実行プログラム（ユーザプログラム）を実行する。デバッグ装置２０は、デバッガ等のデバッグ用ソフトウェア（以降、デバッガと称す）が実装されるホスト装置１０に接続される。
【００１４】
ホスト装置１０は、デバッグ装置２０のホストＩＦ部２６と接続され、ホストＩＦ部２６を介してデバッガからの指示をデバッグ装置２０に送り、デバッグ装置２０からの応答を受け取る。デバッガは、受け取った応答内容を整えてデバッグするユーザに提示する。ホスト装置１０は、パーソナルコンピュータ等に例示される情報処理装置であり、マンマシンインタフェースとして表示装置、キーボードやマウス等の入力装置、データを蓄積する記憶装置等を有する。
【００１５】
デバッグ装置２０は、ＣＰＵ３０、トレースメモリ２２、ホストＩＦ部２６、デバッグ用アドレスレジスタ２４を具備する。ＣＰＵ３０は、命令実行部３２、バスコントロールユニット（ＢＣＵ）３４、周辺マクロ・内部メモリ部３６、周辺バス制御部３８を備える。デバッグ装置２０は、通常の実行命令に加え、デバッグ用の命令を備える。ここでは、デバッグ用の命令の１つをダミーリード命令と称する。
【００１６】
ホストＩＦ部２６は、ホスト装置１０上で動作するデバッガからの指示をデバッグ装置２０に伝え、その指示に対するデバッグ装置１０からの応答をデバッガ（ホスト装置１０）に伝える。また、ホストＩＦ部２６は、トレースメモリ２２に蓄積されたトレースデータを読み出してデバッガ（ホスト装置１０）に転送する。さらに、ホストＩＦ部２６は、デバッグ用アドレスレジスタ２４にデバッガ（ホスト装置１０）から指示されたアドレスを書き込む。
【００１７】
命令実行部３２は、バスコントロールユニット３４を介して内部バスＩＢＵＳに接続され、アドレスの設定、データの読み書きを行う。命令実行部３２は、周辺マクロ・内部メモリ部３６及びレースメモリ２２に対してリードストローブＲＳＴＢ、ライトストローブＷＳＴＢを出力する。命令実行部３２は、プログラムの実行に伴って、読み出し動作のときにリードストローブＲＳＴＢ、書き込み動作のときライトストローブＷＳＴＢをアクティブにする。また、命令実行部３２は、周辺バス制御部３８及びトレースメモリ２２に対してダミーリード実行信号ＤＳＴＢを出力する。デバッグ用の命令であるダミーリード命令が実行されているとき、命令実行部３２はダミーリード実行信号ＤＳＴＢをアクティブにする。
【００１８】
バスコントロールユニット（ＢＣＵ）３４は、命令実行部３２がリード命令を実行するとき、その読み出し対象のアドレスを内部バスＩＢＵＳに出力する。バスコントロールユニット３４は、リード命令に応答して周辺マクロ・内部メモリ部３６から周辺バス制御部３８を介して内部バスＩＢＵＳに出力されるデータを取り込んで命令実行部３２に渡す。命令実行部３２がライト命令を実行するとき、バスコントロールユニット（ＢＣＵ）３４は、書き込み対象のアドレスおよび書き込みデータを内部バスＩＢＵＳに出力する。周辺マクロ・内部メモリ部３６は、ライト命令に応答してバス上に出力されたデータを指定されるアドレスに書き込む。
【００１９】
周辺マクロ・内部メモリ部３６は、リードストローブＲＳＴＢ、ライトストローブＷＳＴＢに応答して、接続される周辺バスＰＢＵＳによって設定されるアドレスに対するデータの読み書きを行う。
【００２０】
周辺バス制御部３８は、内部バスＩＢＵＳと周辺バスＰＢＵＳとを接続する。ダミーリード実行信号ＤＳＴＢがアクティブのとき、すなわちダミーリード命令が実行されているときは、周辺バス制御部３８は、内部バスＩＢＵＳに示されるアドレスの代わりにデバッグ用アドレスレジスタ２４に設定されているアドレスを周辺バスＰＢＵＳに出力する。周辺バス制御部３８は、図２に示されるように、入力側に内部バスＩＢＵＳ及びデバッグ用アドレスレジスタ２４が接続され、出力側に周辺バスＰＢＵＳが接続される選択回路３９を備える。ダミーリード実行信号ＤＳＴＢがインアクティブのとき、すなわち通常の命令を実行するときは内部バスＩＢＵＳのアドレスを選択して周辺バスＰＢＵＳに出力する。ダミーリード実行信号ＤＳＴＢがアクティブのとき、選択回路３９は、デバッグ用アドレスレジスタ２４が出力するアドレス情報信号ＡＤＲを選択して周辺バスＰＢＵＳに出力する。
【００２１】
デバッグ用アドレスレジスタ２４は、ホストＩＦ部２６を介してホスト装置１０から指示されるアドレス情報を保持し、周辺バス制御部３８に供給する。また、デバッグ用アドレスレジスタ２４の内容が書き換わるとき（同じデータが書き込まれるときも含む）、デバッグ用アドレスレジスタ２４は、デバッグ用アドレス設定信号ＳＥＴＡＤをアクティブにしてトレースメモリ２２に不正なデータが蓄積されることを防止する。このとき、デバッグ用アドレス設定信号ＳＥＴＡＤがアクティブであることを示す所定の値をトレースメモリ２２に格納することが好ましい。
【００２２】
トレースメモリ２２は、ＣＰＵ３０がユーザプログラムを実行するときのアドレスやデータを蓄積する。すなわち、トレースメモリ２２は、リードストローブＲＳＴＢ、ライトストローブＷＳＴＢに応答して、周辺バスＰＢＵＳの状態及びダミーリード実行信号ＤＳＴＢの状態をトレースデータとして取り込んで蓄積する。また、デバッグ用アドレス設定信号ＳＥＴＡＤがアクティブのときにダミーリード命令が実行されると、トレースメモリ２２は、デバッグ用アドレスレジスタ２４が書き換え中であることを示すデータを格納し、不正なデータが保持されることを防止する。蓄積されたトレースデータは、ホスト装置１０の読み出し指示信号ＲＤＭＤに基づいてトレースデータ信号ＴＤＲとして読み出され、ホストＩＦ部２６を介してホスト装置１０に送られる。ホスト装置１０上のデバッガは、ホストＩＦ部２６を介してトレースメモリ２２に蓄積されたデータを読み出し、ユーザプログラムの実行履歴としてアクセスアドレスおよびデータを表示する。
【００２３】
デバッグ用アドレスレジスタ２４は、ユーザプログラム実行中に確認対象となるアドレスを保持するレジスタである。ユーザは、ホスト装置１０上のデバッガを操作し、ホストＩＦ部２６を経由してデバッグ用アドレスレジスタ２４に任意のアドレスを設定する。設定が行われている期間は、デバッグ用アドレス設定信号ＳＥＴＡＤがアクティブになる。すなわち、図５に示されるように、タイミングＴａにおいて、ホスト装置１０からアドレス設定の指示があると、ホストＩＦ部２６はデバッグ用アドレスレジスタ２４に設定信号ＡＤＲｉｎ（設定値：ＡＤ１）を供給し（図５（ｃ））、デバッグ用アドレスレジスタ２４は設定値ＡＤ１を設定するとともにデバッグ用アドレス設定信号ＳＥＴＡＤをアクティブにする（図５（ｅ））。
【００２４】
命令実行部３２がダミーリード命令を実行してダミーリード実行信号ＤＴＳＢがアクティブになっているタイミングＴｂにおいて、ホスト装置１０からアドレス設定の指示があると、ホストＩＦ部２６はデバッグ用アドレスレジスタ２４に設定信号ＡＤＲｉｎ（設定値：ＡＤ２）を供給する（図５（ｃ））。このとき、デバッグ用アドレスレジスタ２４はダミーリード命令実行後すなわちダミーリード実行信号ＤＴＳＢがインアクティブになってからタイミングＴｃに設定値ＡＤ２を設定するとともにデバッグ用アドレス設定信号ＳＥＴＡＤをアクティブにする（図５（ｅ））。
【００２５】
また、デバッグ用アドレスレジスタ２４が設定変更中であるタイミングＴｄにダミーリード命令が実行されると次のように動作する。ホスト装置１０からアドレス設定の指示によって、ホストＩＦ部２６がデバッグ用アドレスレジスタ２４に設定信号ＡＤＲｉｎ（設定値：ＡＤ３）を供給し（図５（ｃ））、デバッグ用アドレスレジスタ２４は設定値ＡＤ３を設定しデバッグ用アドレス設定信号ＳＥＴＡＤをアクティブ（図５（ｅ））にする（タイミングＴｄ）。ダミーリード実行信号ＤＳＴＢがアクティブになると、ダミーリード命令の実行が完了してダミーリード実行信号ＤＳＴＢがインアクティブになるまで（タイミングＴｅ）、デバッグ用アドレス設定信号ＳＥＴＡＤをアクティブにしてトレースメモリ２２が誤動作を防止する。このとき、周辺バス制御部３８は、周辺マクロ・内部メモリ部３６にリードアクセスがあっても影響がないように、所定の値（例えば、デバッグ用アドレスレジスタ２４の初期値）を出力する。
【００２６】
デバッグ用アドレスレジスタ２４の初期値は、例えば、０ｘＦＦＦＦ番地のように、任意の周辺マクロ・内部メモリ部３６のアドレスに設定される。なお、“０ｘ”は１６進数表記を示す。また、デバッグ用アドレスレジスタ２４は、複数持つことが可能であり、複数の確認対象アドレスに対して履歴を残すことが可能である。その場合、複数の対象アドレスのそれぞれに対応するダミーリード命令が用意されることが好ましい。
【００２７】
ライト命令を実行するとき、命令実行部３２は、図３に示されるように、バスコントロールユニット３４を介して内部バスＩＢＵＳに対して書き込みのアドレス（ＩＢＵＳ＿ＡＤ）を出力し（図３（ａ））、ライトストローブＷＳＴＢをアクティブにする（図３（ｃ））。周辺バス制御部３８は、内部バスＩＢＵＳの状態を周辺バスＰＢＵＳに反映させ、周辺マクロ・内部メモリ部３６に出力する（図３（ｄ））。周辺マクロ・内部メモリ部３６は、周辺バスＰＢＵＳに指定された書き込みアドレスにデータを書き込む。このとき、トレースメモリ２２は、周辺バスＰＢＵＳの状態を取り込んで蓄積する。
【００２８】
また、リード命令を実行するとき、命令実行部３２は、図４に示されるように、内部バスＩＢＵＳにアドレス情報（ＩＢＵＳ＿ＡＤ：図４（ａ））を設定し、リードストローブＲＳＴＢ（図４（ｃ））をアクティブにする。周辺バス制御部３８は、内部バスＩＢＵＳのアドレス情報を周辺バスＰＢＵＳ（図４（ｅ））に出力し、周辺マクロ・内部メモリ部３６に示す。周辺マクロ・内部メモリ部３６は、示されたアドレス情報に基づいて該当するデータを周辺バスＰＢＵＳに出力する。命令実行部３２は、周辺バス制御部３８、バスコントロールユニット３４を介して出力されたデータを取り込む。このとき、トレースメモリ２２は、周辺バスＰＢＵＳの状態を取り込んで蓄積する。また、命令実行部３２は、リード命令を実行するときと同じシーケンスにしたがって実行すべき命令コードをフェッチするため、トレースメモリ２２は、命令コードのフェッチの状態も蓄積することができる。
【００２９】
ここで、デバッグ装置２０のＣＰＵ３０は、命令コードとして、通常処理の命令コードのほかに、デバッグ用のダミーリード命令と称する命令コードを有する。ダミーリード命令の場合、通常のリード命令と同じように、命令実行部３２は、内部バスＩＢＵＳにアドレス情報（ＩＢＵＳ＿ＡＤ：図４（ａ））を設定し、リードストローブＲＳＴＢ（図４（ｃ））をアクティブにする。さらに、命令実行部３２は、ダミーリード実行信号ＤＳＴＢをアクティブにし、周辺バス制御部３８およびトレースメモリ２２にダミーリード命令を実行していることを示す。このときの命令実行部３２から出力されるアドレス情報は、実効的に使用されないため、予め定められた値でも、その前に出力していたアドレス情報でもよい。
【００３０】
周辺バス制御部３８は、内部バスＩＢＵＳに出力されたアドレス情報（ＩＢＵＳ＿ＡＤ）の代わりに、デバッグ用アドレスレジスタ２４が出力するアドレス情報信号ＡＤＲに基づくアドレス情報（ＡＤＲ＿ＡＤ）を周辺バスＰＢＵＳに出力する（図４（ｅ））。周辺マクロ・内部メモリ部３６は、示されたアドレス情報に基づいて、該当するデータを周辺バスＰＢＵＳに出力する。実行されている命令がダミーリード命令であるため、命令実行部３２は、周辺バスＰＢＵＳに出力されたデータを無視する。トレースメモリ２２は、周辺バスＰＢＵＳの状態を取り込み、実行履歴として蓄積する。
【００３１】
このように、ダミーリード命令は、周辺マクロ・内部メモリ部３６にとっては通常のリード命令と変わらず、命令実行部３２の内部では読み出したデータを参照せず、命令実行部３２の内部状態に影響を与えない。すなわち、ダミーリード命令によってトレースメモリ２２は、命令実行部３２に影響を与えずに周辺マクロ・内部メモリ部３６の指定されたアドレスに対応するデータを蓄積することができる。そのアドレスは、デバッグ用アドレスレジスタ２４に設定されているため、ホスト装置１０によってデバッグ用アドレスレジスタ２４の設定値を変えることにより、自由に設定することができる。
【００３２】
ダミーリード命令を使ったユーザプログラム例およびトレースメモリ２２に蓄積されたデータの表示例を以下に示す。ここでは、デバッグ用アドレスレジスタ２４にアドレスとして０ｘＦＦ００番地を設定した場合を示す。
【００３３】
〔ユーザプログラム記載例〕
ＬＯＯＰ：ＮＯＰ                ；Ｎｏ  Ｏｐｅｒａｔｉｏｎ
ＤｕｍｍｙＲｅａｄ    ；追加したダミーリード命令
ＢＲ  ！ＬＯＯＰ      ；Ｂｒａｎｃｈ  Ｔｏ  ＬＯＯＰ
【００３４】
〔トレースメモリ２２に蓄積されたデータの表示例〕
ＬＮ  ＥＸ  ＳＴ  ＡＤＤＲ  Ｄａｔａ        Ｉｎｓｔ
−−＋−−＋−−＋−−−−＋−−−−−−−＋−−−−−−−−−−−−−−
１０    ０    Ｆ  ０１００  ００            ＬＯＯＰ：ＮＯＰ
１１    １    Ｒ  ＦＦ００  ０１                      ＤｕｍｍｙＲｅａｄ
１２    ０    Ｆ  ０１０２  ＦＥ０１００              ＢＲ  ！ＬＯＯＰ
１３    ０    Ｆ  ０１００  ００            ＬＯＯＰ：ＮＯＰ
１４    １    Ｒ  ＦＦ００  ０３                      ＤｕｍｍｙＲｅａｄ
１５    ０    Ｆ  ０１０２  ＦＥ０１００              ＢＲ  ！ＬＯＯＰ
１６    ０    Ｆ  ０１００  ００            ＬＯＯＰ：ＮＯＰ
１７    １    Ｒ  ＦＦ００  ０５                      ＤｕｍｍｙＲｅａｄ
１８    ０    Ｆ  ０１０２  ＦＥ０１００              ＢＲ  ！ＬＯＯＰ
：
【００３５】
ここで、“ＬＮ”部分は、トレース表示時のライン番号を示す。“ＥＸ”部分は、ダミーリード命令を実行したときのステータスを示し、ダミーリード命令実行時には“１”になる。“ＳＴ”部分は、アクセス状態を示しており、“Ｆ”が命令フェッチ、“Ｒ”がリード、“Ｗ”がライトを示す。“ＡＤＤＲ”部分は、実行アドレスであり、ダミーリード命令実行時にはデバッグ用アドレスレジスタ２４の設定データがアドレスとして示される。“Ｄａｔａ”部分は、ＣＰＵ３０が命令フェッチ、あるいはリード／ライトするときの周辺バスＰＢＵＳ上に示されるデータを示し、ダミーリード命令の実行時はデバッグ用アドレスレジスタ２４に設定される周辺マクロ・内部メモリ部３６のアドレスを示すデータとなる。“Ｉｎｓｔ”部分は、実行される命令を示す。
【００３６】
上記のユーザプログラム記載例として記載されたダミーリード命令は、デバッグのための専用命令であり、ユーザプログラムがデバッグではなく実働システムに組み込まれて動作する場合には、リードストローブＲＳＴＢ、ダミーリード実行信号ＳＤＴＢがアクティブになるだけであり、半導体集積回路外部に影響を与えるような信号出力等はない。
【００３７】
次に、上記ユーザプログラム記載例の実行中に、デバッグ用アドレスレジスタ２４の設定を変更した場合のトレース結果例を以下に示す。この例では、デバッグ用アドレスレジスタ２４の設定データは、０ｘＦＦ００番地から０ｘＦＦ１０番地に変更される。その変更設定の最中にダミーリード命令が実行された例を示す。
【００３８】
〔デバッグ用アドレスレジスタ２４の設定を変更した場合〕
ＬＮ  ＥＸ  ＳＴ  ＡＤＤＲ  Ｄａｔａ        Ｉｎｓｔ
−−＋−−＋−−＋−−−−＋−−−−−−−＋−−−−−−−−−−−−−−
２０    ０    Ｆ  ０１００  ００            ＬＯＯＰ：ＮＯＰ
２１    １    Ｒ  ＦＦ００  ０１                      ＤｕｍｍｙＲｅａｄ
２２    ０    Ｆ  ０１０２  ＦＥ０１００              ＢＲ  ！ＬＯＯＰ
２３    ０    Ｆ  ０１００  ００            ＬＯＯＰ：ＮＯＰ
２４    １    Ｒ  ＸＸＸＸ  ＸＸ                      ＤｕｍｍｙＲｅａｄ
２５    ０    Ｆ  ０１０２  ＦＥ０１００              ＢＲ  ！ＬＯＯＰ
２６    ０    Ｆ  ０１００  ００            ＬＯＯＰ：ＮＯＰ
２７    １    Ｒ  ＦＦ１０  ＡＢ                      ＤｕｍｍｙＲｅａｄ
２８    ０    Ｆ  ０１０２  ＦＥ０１００              ＢＲ  ！ＬＯＯＰ
：
【００３９】
上記例では、２４行目でデバッグ用アドレスレジスタ２４の設定が変更されている。ダミーリード命令を実行したときのステータスが“１”であるが、設定変更中のためにトレースメモリ２２には周辺バスＰＢＵＳの状態は格納されず、ＸＸ表示になることが示される。デバッグ用アドレスレジスタ２４が変更された後、２７行目でダミーリード命令を実行したときには、リードされるアドレスが０ｘＦＦ１０番地になり、そのアドレスに対応するデータがリードされたことを示す。
【００４０】
このように、確認すべきデータのアドレスがデバッグ用アドレスレジスタに格納されているため、確認すべきデータを変更する場合にはこのレジスタの値を変更するだけで良い。したがって、ユーザプログラムを変更せずに所望のアドレスのデータを読み出すことができる。
【００４１】
また、挿入されるダミーリード命令の位置を変える必要がなければ、ユーザプログラムの変更を行うこともなく、ユーザプログラムを入れ替えずにデバッグをすることができる。さらに、ダミーリード命令を挿入するだけで確認すべきデータの取得ができるため、デバッグ用に追加される命令コードは最小限で済む。
【００４２】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００４３】
１０  ホスト装置
２０  デバッグ装置
２２  トレースメモリ
２４  デバッグ用アドレスレジスタ
２６  ホストＩＦ部
３０  ＣＰＵ
３２  命令実行部
３４  バスコントロールユニット
３６  周辺マクロ・内部メモリ部
３８  周辺バス制御部
３９  選択回路
【図１】
2012088839.tif 000003
【図２】
2012088839.tif 000004
【図３】
2012088839.tif 000005
【図４】
2012088839.tif 000006
【図５】
2012088839.tif 000007