(57)【要約】【課題】プログラムの実行動作に影響を与えることなくＣＰＵ等のリード又はライトデータをモニタする。【解決手段】ＬＳＩは、プログラムを実行する処理部と、リード動作又はライト動作を実行可能な記憶部と、それらに接続された内部バスと、モニタ部（２１）と、を備える。処理部は、リードイネーブル信号（ＲＥ）及びアドレス信号（ＡＤＤ）を内部バスに出力するリードアクセス、又は、ライトデータ（ＷＤ）、ライトイネーブル信号（ＷＥ）及びアドレス信号を内部バスに出力するライトアクセスを実行可能である。記憶部は、リードアクセスに応答してリードデータを内部バスに出力し、ライトアクセスに応答してライトデータを格納する。モニタ部は、設定されたモニタ条件に合致するアクセスがあったとき、内部バスを介して伝送されるリードデータ又はライトデータをラッチする。【選択図】図４
2020140380.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する処理部と、複数のアドレスが割り当てられた複数の記憶領域を有し、リード動作又はライト動作を実行可能な記憶部と、前記処理部及び前記記憶部に接続されたバスと、を備えた半導体装置において、
前記処理部は、前記プログラムに基づき、前記リード動作を許可するリードイネーブル信号及び前記複数のアドレスの何れかを指定するアドレス信号を前記バスに出力することを通じ前記記憶部に前記リード動作を行わせるリードアクセス、又は、ライトデータ、前記ライト動作を許可するライトイネーブル信号及び前記アドレス信号を前記バスに出力することを通じ前記記憶部に前記ライト動作を行わせるライトアクセスを実行可能であり、
前記リードアクセスが行われたとき、前記記憶部は、前記バスを介して前記処理部から入力された前記アドレス信号に応じた記憶領域内のデータをリードデータとして前記バスに出力する前記リード動作を行い、このとき、前記リードデータは前記バスを介して前記処理部に入力され、
前記ライトアクセスが行われたとき、前記記憶部は、前記バスを介して前記処理部から入力された前記アドレス信号に応じた記憶領域に前記ライトデータに応じたデータを格納する前記ライト動作を行い、
当該半導体装置には、前記処理部によるアクセスにおいて、設定されたモニタ条件に合致するアクセスがあったとき、前記バスを介して伝送される前記リードデータ又は前記ライトデータをラッチするモニタ部が更に備えられる
ことを特徴とする半導体装置。
【請求項２】
前記モニタ部は、前記モニタ条件が設定された設定部と、前記処理部によるアクセスが前記モニタ条件に合致するか否かを判定する判定部と、前記処理部によるアクセスが前記モニタ条件に合致する場合に前記リードデータ又は前記ライトデータをラッチするラッチ部と、を有する
ことを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記モニタ条件において、対象アドレス及び対象アクセス種が設定され、
前記判定部は、前記処理部によるアクセスにて指定されるアドレスが前記対象アドレスと一致し、且つ、前記対象アクセス種に適合するアクセスが前記処理部により行われるとき、前記処理部によるアクセスが前記モニタ条件に合致すると判定する
ことを特徴とする請求項２に記載の半導体装置。
【請求項４】
前記対象アクセス種が前記リードアクセスを含んでいる場合、前記対象アドレスに対して前記処理部により前記リードアクセスが行われるときに、前記ラッチ部により前記リードデータがラッチされる
ことを特徴とする請求項３に記載の半導体装置。
【請求項５】
前記対象アクセス種が前記ライトアクセスを含んでいる場合、前記対象アドレスに対して前記処理部により前記ライトアクセスが行われるときに、前記ラッチ部により前記ライトデータがラッチされる
ことを特徴とする請求項３又は４に記載の半導体装置。
【請求項６】
各々にプログラムを実行する第１〜第ｎ処理部から成る処理ブロックと（ｎは２以上の整数）、複数のアドレスが割り当てられた複数の記憶領域を有し、リード動作又はライト動作を実行可能な記憶部と、各処理部及び前記記憶部に接続されたバスと、を備えた半導体装置において、
各処理部は、対応するプログラムに基づき、前記リード動作を許可するリードイネーブル信号及び前記複数のアドレスの何れかを指定するアドレス信号を前記バスに出力することを通じ前記記憶部に前記リード動作を行わせるリードアクセス、又は、ライトデータ、前記ライト動作を許可するライトイネーブル信号及び前記アドレス信号を前記バスに出力することを通じ前記記憶部に前記ライト動作を行わせるライトアクセスを実行可能であり、
第ｉ処理部により前記リードアクセスが行われたとき、前記記憶部は、前記バスを介して前記第ｉ処理部から入力された前記アドレス信号に応じた記憶領域内のデータをリードデータとして前記バスに出力する前記リード動作を行い、このとき、前記リードデータは前記バスを介して前記第ｉ処理部に入力され（ｉは１以上ｎ以下の整数）、
前記第ｉ処理部により前記ライトアクセスが行われたとき、前記記憶部は、前記バスを介して前記第ｉ処理部から入力された前記アドレス信号に応じた記憶領域に前記第ｉ処理部からの前記ライトデータに応じたデータを格納する前記ライト動作を行い、
当該半導体装置には、前記処理ブロックによるアクセスにおいて、設定されたモニタ条件に合致するアクセスがあったとき、前記バスを介して伝送される前記リードデータ又は前記ライトデータをラッチするモニタ部が更に備えられる
ことを特徴とする半導体装置。
【請求項７】
前記モニタ部は、前記モニタ条件が設定された設定部と、前記処理ブロックによるアクセスが前記モニタ条件に合致するか否かを判定する判定部と、前記処理ブロックによるアクセスが前記モニタ条件に合致する場合に前記リードデータ又は前記ライトデータをラッチするラッチ部と、を有する
ことを特徴とする請求項６に記載の半導体装置。
【請求項８】
前記モニタ条件において、前記処理部ごとに対象アドレス及び対象アクセス種が設定されるとともに、何れの処理部のアクセスによるデータを前記ラッチの対象とするが設定され、
前記判定部は、前記第ｉ処理部のアクセスによるデータを前記ラッチの対象とすることが前記モニタ条件にて設定されている状況において、前記第ｉ処理部によるアクセスにて指定されるアドレスが前記第ｉ処理部に対して設定された前記対象アドレスと一致し、且つ、前記第ｉ処理部に対して設定された前記対象アクセス種に適合するアクセスが前記第ｉ処理部により行われるとき、前記処理ブロックによるアクセスが前記モニタ条件に合致すると判定する
ことを特徴とする請求項７に記載の半導体装置。
【請求項９】
前記状況において、前記第ｉ処理部に対して設定された前記対象アクセス種が前記リードアクセスを含んでいる場合、前記第ｉ処理部に対して設定された前記対象アドレスに対し前記第ｉ処理部により前記リードアクセスが行われるときに、前記第ｉ処理部に入力される前記リードデータが前記ラッチ部によりラッチされる
ことを特徴とする請求項８に記載の半導体装置。
【請求項１０】
前記状況において、前記第ｉ処理部に対して設定された前記対象アクセス種が前記ライトアクセスを含んでいる場合、前記第ｉ処理部に対して設定された前記対象アドレスに対し前記第ｉ処理部により前記ライトアクセスが行われるときに、前記第ｉ処理部から出力される前記ライトデータが前記ラッチ部によりラッチされる
ことを特徴とする請求項８又は９に記載の半導体装置。
【請求項１１】
請求項１〜１０の何れかに記載の半導体装置と、
前記半導体装置に接続された外部装置と、を備え、
前記モニタ条件を指定するモニタ条件データが前記外部装置から前記半導体装置に送信され、
前記モニタ部にてラッチされたデータが前記半導体装置から前記外部装置に送信される
ことを特徴とするデバッグシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びデバッグシステムに関する。
【背景技術】
【０００２】
プログラムを実行するＣＰＵ等を備えた半導体装置において、実行されるプログラムを開発する際にデバッグシステムが用いられることが多い。デバッグシステムは、半導体装置内の記憶回路の格納データを表示したり、開発対象のプログラムに対して特定の操作を行う機能を提供したりすることで、プログラムのデバッグ作業を支援する。
【０００３】
図１１にデバッグシステムの構成例を示す。図１１のデバッグシステムは、ＣＰＵを内蔵したＬＳＩである半導体装置９１０と、外部装置９３０と、から成る。半導体装置９１０は、ＣＰＵ９１１、内部バス９１２、ＲＯＭ９１３、ＲＡＭ９１４、レジスタ９１６を内蔵したペリフェラル９１５、及び、デバッグ用回路９１７を備える。ＣＰＵ９１１により実行されるプログラムがデバッグの対象となる。ＣＰＵ９１１は、自身が実行するプログラムに基づき、内部バス９１２を通じ、ＲＯＭ９１３、ＲＡＭ９１４又はレジスタ９１６から値（プログラム又はデータ）を読み取ったり、読み取った値に基づく演算を行って演算結果をＲＡＭ９１４又はレジスタ９１６に対して書き込んだりする。
【０００４】
外部装置９３０は、デバッグソフトウェアが実行されるホストコンピュータや、ホストコンピュータ及び半導体装置９１０間のインターフェース装置などから成る。外部装置９３０は、デバッグ用回路９１７を通じて内部バス９１２にアクセスすることで、ＲＯＭ９１３、ＲＡＭ９１４又はレジスタ９１６等にアクセスすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３７７５４６２号公報
【特許文献２】特開平８−１６１１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＣＰＵ９１１が実行するプログラムのデバッグ作業において、ＣＰＵ９１１がどのような値をレジスタ等から読み取ったのか、又は、どのような値をレジスタ等に書き込んだのかをリアルタイムにモニタ及びトレースしたいという要望がある。一方で、デバッグのために半導体装置９１０に搭載される回路は、本来の半導体装置９１０の動作に関係のないものであるため、なるだけ小規模の回路とされることが望ましく、またプログラムの動作に影響を与えないことが必要とされる。
【０００７】
上述の如く、外部装置９３０は内部バス９１２にアクセスすることでＲＯＭ９１３、ＲＡＭ９１４又はレジスタ９１６等にアクセスすることができるが、このアクセスでは、ＣＰＵ９１１が読み取った値（リードデータ）又は書き込んだ値（ライトデータ）を正しく知ることができない。これは、以下の第１の理由及び第２の理由による。
第１の理由として、ＲＡＭ９１４又はレジスタ９１６等に格納される値は、半導体装置９１０に内蔵される、ＣＰＵ９１１以外のハードウェア（ペリフェラルブロックやＤＭＡコントローラであり、以下、内部ＨＷと称する）によっても更新されうる、という点が挙げられる。
第２の理由として、リードアクセス時とライトアクセス時とで異なる動作を行うＲＡＭ９１４又はレジスタ９１６等が用いられることがある、という点が挙げられる。
【０００８】
ＣＰＵ９１１が読み取った値又は書き込んだ値を正しく知ることができない状況を示す具体例を説明する。説明の具体化のため、モニタの対象となる記憶回路がレジスタであると考え、当該レジスタを対象レジスタと称する。
【０００９】
図１２を参照する。図１２では、対象レジスタの値（格納データ）が内部ＨＷにより次々と更新される状況が示されている。ＣＰＵ９１１は自身が実行するプログラムに基づくタイミングでリードアクセスを行うことで、対象レジスタの値を読み取る。ここでは、タイミングｔＡ１、ｔＡ２、ｔＡ３において、対象レジスタの値としての“１”、“３”、“４”がＣＰＵ９１１により読み取られている。プログラムのデバッグのためには、ＣＰＵ９１１が対象レジスタから順次“１”、“３”、“４”の値を読み取ったことを知る必要がある（又はそれが必要となるケースがある）。外部装置９３０は、定期的なリードアクセスによって対象レジスタの値を一定間隔で知ることができるが、それによって得られるのは対象レジスタの値の時系列変化だけであって、ＣＰＵ９１１が対象レジスタから順次“１”、“３”、“４”の値を読み取ったかどうかは分からない。つまり、ＣＰＵ９１１が対象レジスタから何の値を読み取ったかが不明であるため、デバッグができない又は困難となる。
【００１０】
図１３を参照する。図１３の例では、対象レジスタが８ビット分のレジスタであることが想定されており、１６進数を示す接頭記号“０ｘ”を用いて、対象レジスタの値（格納データ）を表記するものとする。対象レジスタはビットＢ０〜ビットＢ７にて構成され、ビットＢ０〜ビットＢ７の内、ビットＢ０が最下位ビットであって且つビットＢ７が最上位ビットであるものとする。ビットＢｊは要因Ｘｊによる割り込み処理の要求又は状態を示す値を格納する（ここでｊは０以上７以下の整数）。内部ＨＷは、要因Ｘｊによる割り込み処理の実行をＣＰＵ９１１に要求する際、対象レジスタのビットＢｊに“１”をセットする。ＣＰＵ９１１は、対象レジスタのビットＢｊに“１”がセットされているとき、要因Ｘｊによる割り込み処理の実行が要求されていると認識して、要求された割り込み処理を実行し、その実行が完了すると、対象レジスタのビットＢｊをクリアする。ビットＢｊをクリアするとは、ビットＢｊの値を“０”にすることを指す。
【００１１】
図１３に示す状況では、タイミングｔＢ１以前において対象レジスタの値は“０ｘ００”となっている。タイミングｔＢ１において内部ＨＷが対象レジスタのビットＢ０に“１”をセットすることで要因Ｘ０による割り込み処理の実行を要求し、続くタイミングｔＢ２において内部ＨＷが対象レジスタのビットＢ１に“１”をセットすることで要因Ｘ１による割り込み処理の実行を要求する。その後のタイミングｔＢ３において、ＣＰＵ９１１は、リードアクセスを通じて対象レジスタから値“０ｘ０３”を読み取る。図１３の例において、ＣＰＵ９１１は、読み取った値“０ｘ０３”に基づき、まず要因Ｘ０よる割り込み処理を実行し、当該割り込み処理の実行を完了するとタイミングｔＢ４において対象レジスタのビットＢ０をクリアする。対象レジスタの仕様により、ビットＢ０〜Ｂ７の内、ビットＢ０のみをクリアする場合には、ＣＰＵ９１１は“０ｘ０１”をライトする（２進数表記でクリアされるべきビットだけ“１”とする値、即ち“０００００００１ｂ”をライトする）。その後、ＣＰＵ９１１は、要因Ｘ１よる割り込み処理を実行し、当該割り込み処理の実行を完了するとタイミングｔＢ５において対象レジスタのビットＢ１をクリアする。対象レジスタの仕様により、ビットＢ０〜Ｂ７の内、ビットＢ１のみをクリアする場合には、ＣＰＵ９１１は“０ｘ０２”をライトする（２進数表記でクリアされるべきビットだけ“１”とする値、即ち“００００００１０ｂ”をライトする）。
【００１２】
プログラムのデバッグのためには、ＣＰＵ９１１が対象レジスタから“０ｘ０３”をリードし、その後、対象レジスタに順次“０ｘ０１”、“０ｘ０２”をライトしたというＣＰＵ動作を知る必要がある（又はそれが必要となるケースがある）。外部装置９３０は、定期的なリードアクセスによって対象レジスタの値を一定間隔で知ることができるが、それによって得られるのは対象レジスタの値の時系列変化だけである。例えば、定期的なリードアクセスにより対象レジスタの値がタイミングｔＢ３を境に“０ｘ０３”から“０ｘ０２”に変化したことを外部装置９３０にて認識することができる。しかしながら、その変化が、ＣＰＵ９１１のライトによりもたらされたものであるのか、内部ＨＷのライト（内部ＨＷによる割込み処理の要求取り下げ）によりもたらされたものであるのか、外部装置９３０では区別できない。つまり、上記ＣＰＵ動作を知ることができないためデバッグができない又は困難となる。
【００１３】
半導体装置９１０に、ＣＰＵ９１１が複数存在する場合には、更に事情が複雑となる。半導体装置９１０に複数のＣＰＵ９１１として第１ＣＰＵ及び第２ＣＰＵが存在することを想定して、図１４の具体例を説明する。
【００１４】
図１４では、対象レジスタの値（格納データ）が内部ＨＷにより次々と更新される状況が示されている。第１ＣＰＵ及び第２ＣＰＵの夫々は、自身が実行するプログラムに基づくタイミングでリードアクセスを行うことで、対象レジスタの値を読み取る。ここでは、タイミングｔＡ１、ｔＡ２、ｔＡ３において、対象レジスタの値としての“１”、“３”、“４”が第１ＣＰＵにより読み取られ、それとは独立して、タイミングｔＣ１、ｔＣ２、ｔＣ３において、対象レジスタの値としての“２”、“３”、“４”が第２ＣＰＵにより読み取られている。プログラムのデバッグのためには、第１ＣＰＵが対象レジスタから順次“１”、“３”、“４”の値を読み取ったこと、及び、第２ＣＰＵが対象レジスタから順次“２”、“３”、“４”の値を読み取ったことを知る必要がある（又はそれが必要となるケースがある）。外部装置９３０は、定期的なリードアクセスによって対象レジスタの値を一定間隔で知ることができるが、それによって得られるのは対象レジスタの値の時系列変化だけであって、第１ＣＰＵが対象レジスタから順次“１”、“３”、“４”の値を読み取ったかどうか、第２ＣＰＵが対象レジスタから順次“２”、“３”、“４”の値を読み取ったかどうかは分からない。つまり、各ＣＰＵが対象レジスタから何の値を読み取ったかが不明であるため、デバッグができない又は困難となる。
【００１５】
上述の如く、プログラムを実行する処理部（例えばＣＰＵ）が読み取った値（リードデータ）又は書き込んだ値（ライトデータ）をモニタすることは容易では無く、それを実現する技術の開発が期待される。
【００１６】
尚、処理部のリード又はライトデータをトレースするためのトレースメモリを半導体装置内に設けておき、トレースメモリの値を外部装置から読み出すような技術も存在するが、トレースメモリの回路規模は相応に大きいものであるため、半導体装置（例えばＬＳＩ）のコストを大きく増大させる要因となる。また、一旦ハードウェアをブレークした後に（即ちプログラム動作を停止させた後に）、トレースメモリの値を読み出す必要があるため、プログラムを動作させながらリアルタイムでデバッグ作業を行うことができない。
【００１７】
本発明は、プログラムの実行動作に影響を与えることなく且つ簡素な構成でリード又はライトアクセスによるリード又はライトデータをモニタすることを可能とする半導体装置及びデバッグシステムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明に係る半導体装置は、プログラムを実行する処理部と、複数のアドレスが割り当てられた複数の記憶領域を有し、リード動作又はライト動作を実行可能な記憶部と、前記処理部及び前記記憶部に接続されたバスと、を備えた半導体装置において、前記処理部は、前記プログラムに基づき、前記リード動作を許可するリードイネーブル信号及び前記複数のアドレスの何れかを指定するアドレス信号を前記バスに出力することを通じ前記記憶部に前記リード動作を行わせるリードアクセス、又は、ライトデータ、前記ライト動作を許可するライトイネーブル信号及び前記アドレス信号を前記バスに出力することを通じ前記記憶部に前記ライト動作を行わせるライトアクセスを実行可能であり、前記リードアクセスが行われたとき、前記記憶部は、前記バスを介して前記処理部から入力された前記アドレス信号に応じた記憶領域内のデータをリードデータとして前記バスに出力する前記リード動作を行い、このとき、前記リードデータは前記バスを介して前記処理部に入力され、前記ライトアクセスが行われたとき、前記記憶部は、前記バスを介して前記処理部から入力された前記アドレス信号に応じた記憶領域に前記ライトデータに応じたデータを格納する前記ライト動作を行い、当該半導体装置には、前記処理部によるアクセスにおいて、設定されたモニタ条件に合致するアクセスがあったとき、前記バスを介して伝送される前記リードデータ又は前記ライトデータをラッチするモニタ部が更に備えられる構成（第１の構成）である。
【００１９】
上記第１の構成に係る半導体装置において、前記モニタ部は、前記モニタ条件が設定された設定部と、前記処理部によるアクセスが前記モニタ条件に合致するか否かを判定する判定部と、前記処理部によるアクセスが前記モニタ条件に合致する場合に前記リードデータ又は前記ライトデータをラッチするラッチ部と、を有する構成（第２の構成）であっても良い。
【００２０】
上記第２の構成に係る半導体装置において、前記モニタ条件において、対象アドレス及び対象アクセス種が設定され、前記判定部は、前記処理部によるアクセスにて指定されるアドレスが前記対象アドレスと一致し、且つ、前記対象アクセス種に適合するアクセスが前記処理部により行われるとき、前記処理部によるアクセスが前記モニタ条件に合致すると判定する構成（第３の構成）であっても良い。
【００２１】
上記第３の構成に係る半導体装置において、前記対象アクセス種が前記リードアクセスを含んでいる場合、前記対象アドレスに対して前記処理部により前記リードアクセスが行われるときに、前記ラッチ部により前記リードデータがラッチされる構成（第４の構成）であっても良い。
【００２２】
上記第３又は第４の構成に係る半導体装置において、前記対象アクセス種が前記ライトアクセスを含んでいる場合、前記対象アドレスに対して前記処理部により前記ライトアクセスが行われるときに、前記ラッチ部により前記ライトデータがラッチされる構成（第５の構成）であっても良い。
【００２３】
本発明に係る半導体装置は、各々にプログラムを実行する第１〜第ｎ処理部から成る処理ブロックと（ｎは２以上の整数）、複数のアドレスが割り当てられた複数の記憶領域を有し、リード動作又はライト動作を実行可能な記憶部と、各処理部及び前記記憶部に接続されたバスと、を備えた半導体装置において、各処理部は、対応するプログラムに基づき、前記リード動作を許可するリードイネーブル信号及び前記複数のアドレスの何れかを指定するアドレス信号を前記バスに出力することを通じ前記記憶部に前記リード動作を行わせるリードアクセス、又は、ライトデータ、前記ライト動作を許可するライトイネーブル信号及び前記アドレス信号を前記バスに出力することを通じ前記記憶部に前記ライト動作を行わせるライトアクセスを実行可能であり、第ｉ処理部により前記リードアクセスが行われたとき、前記記憶部は、前記バスを介して前記第ｉ処理部から入力された前記アドレス信号に応じた記憶領域内のデータをリードデータとして前記バスに出力する前記リード動作を行い、このとき、前記リードデータは前記バスを介して前記第ｉ処理部に入力され（ｉは１以上ｎ以下の整数）、前記第ｉ処理部により前記ライトアクセスが行われたとき、前記記憶部は、前記バスを介して前記第ｉ処理部から入力された前記アドレス信号に応じた記憶領域に前記第ｉ処理部からの前記ライトデータに応じたデータを格納する前記ライト動作を行い、当該半導体装置には、前記処理ブロックによるアクセスにおいて、設定されたモニタ条件に合致するアクセスがあったとき、前記バスを介して伝送される前記リードデータ又は前記ライトデータをラッチするモニタ部が更に備えられる構成（第６の構成）であっても良い。
【００２４】
上記第６の構成の何れかに係る半導体装置において、前記モニタ部は、前記モニタ条件が設定された設定部と、前記処理ブロックによるアクセスが前記モニタ条件に合致するか否かを判定する判定部と、前記処理ブロックによるアクセスが前記モニタ条件に合致する場合に前記リードデータ又は前記ライトデータをラッチするラッチ部と、を有する構成（第７の構成）であっても良い。
【００２５】
上記第７の構成に係る半導体装置において、前記モニタ条件において、前記処理部ごとに対象アドレス及び対象アクセス種が設定されるとともに、何れの処理部のアクセスによるデータを前記ラッチの対象とするが設定され、前記判定部は、前記第ｉ処理部のアクセスによるデータを前記ラッチの対象とすることが前記モニタ条件にて設定されている状況において、前記第ｉ処理部によるアクセスにて指定されるアドレスが前記第ｉ処理部に対して設定された前記対象アドレスと一致し、且つ、前記第ｉ処理部に対して設定された前記対象アクセス種に適合するアクセスが前記第ｉ処理部により行われるとき、前記処理ブロックによるアクセスが前記モニタ条件に合致すると判定する構成（第８の構成）であっても良い。
【００２６】
上記第８の構成に係る半導体装置において、前記状況において、前記第ｉ処理部に対して設定された前記対象アクセス種が前記リードアクセスを含んでいる場合、前記第ｉ処理部に対して設定された前記対象アドレスに対し前記第ｉ処理部により前記リードアクセスが行われるときに、前記第ｉ処理部に入力される前記リードデータが前記ラッチ部によりラッチされる構成（第９の構成）であっても良い。
【００２７】
上記第８又は第９の構成に係る半導体装置において、前記状況において、前記第ｉ処理部に対して設定された前記対象アクセス種が前記ライトアクセスを含んでいる場合、前記第ｉ処理部に対して設定された前記対象アドレスに対し前記第ｉ処理部により前記ライトアクセスが行われるときに、前記第ｉ処理部から出力される前記ライトデータが前記ラッチ部によりラッチされる構成（第１０の構成）であっても良い。
【００２８】
本発明に係るデバッグシステムは、上記第１〜第１０の構成の何れかに係る半導体装置と、前記半導体装置に接続された外部装置と、を備え、前記モニタ条件を指定するモニタ条件データが前記外部装置から前記半導体装置に送信され、前記モニタ部にてラッチされたデータが前記半導体装置から前記外部装置に送信される構成（第１１の構成）である。
【発明の効果】
【００２９】
本発明によれば、プログラムの実行動作に影響を与えることなく且つ簡素な構成でリード又はライトアクセスによるリード又はライトデータをモニタすることを可能とする半導体装置及びデバッグシステムを提供することが可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１実施形態に係るデバッグシステムの概略構成図である。
【図２】ＬＳＩ内に設けられる記憶部を示す図である。
【図３】本発明の第１実施形態に係り、リードアクセス及びリード動作の説明図（ａ）、ライトアクセス及びライト動作の説明図（ｂ）である。
【図４】本発明の第１実施形態に係るモニタ部の内部構成図である。
【図５】本発明の第２実施形態に係るデバッグシステムの概略構成図である。
【図６】本発明の第２実施形態に係り、リードアクセス及びリード動作の説明図（ａ）、ライトアクセス及びライト動作の説明図（ｂ）である。
【図７】本発明の第２実施形態に係り、リードアクセス及びリード動作の説明図（ａ）、ライトアクセス及びライト動作の説明図（ｂ）である。
【図８】本発明の第２実施形態に係るモニタ部の内部構成図である。
【図９】本発明の第３実施形態に係るモニタ部の一部構成図である。
【図１０】本発明の第３実施形態に係り、ＬＳＩに設けられうる３つのＣＰＵを示す図である。
【図１１】本発明の関連技術に係るデバッグシステムの概略構成図である。
【図１２】図１１のデバッグシステムに係る動作例の説明図である。
【図１３】図１１のデバッグシステムに係る他の動作例の説明図である。
【図１４】図１１のデバッグシステムに係る更に他の動作例の説明図である。
【発明を実施するための形態】
【００３１】
以下、本発明の実施形態の例を、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、情報、信号、物理量、素子又は部位等を参照する記号又は符号を記すことによって、該記号又は符号に対応する情報、信号、物理量、素子又は部位等の名称を省略又は略記することがある。例えば、後述の“４１”によって参照されるモニタ条件設定部は（図４参照）、モニタ条件設定部４１と表記されることもあるし、設定部４１と略記されることもあり得るが、それらは同じものを指す。
【００３２】
＜＜第１実施形態＞＞
本発明の第１実施形態を説明する。図１は、本発明の第１実施形態に係るデバッグシステム１０の概略構成図である。デバッグシステム１０は、ＣＰＵ（Central Processing Unit）を内蔵したＬＳＩ（Large Scale Integration）１１と、外部デバッグ装置１２と、ホストコンピュータ１３（以下、ホストＰＣ１３と称され得る）と、を備える。
【００３３】
半導体装置としてのＬＳＩ１１は、ＣＰＵ（Central Processing Unit）２０、モニタ部２１及び内部バス２２を備える。ＣＰＵ２０は内部バス２２に接続される。ＣＰＵ２０から内部バス２２に出力される信号及びデータ並びに内部バス２２を介してＣＰＵ２０に入力される信号及びデータをモニタ部２１にて受信可能な態様で、モニタ部２１はＣＰＵ２０及び内部バス２２間の配線に接続されている。
【００３４】
ＬＳＩ１１は、内部バス２２に接続される構成要素として、更に、１以上のＲＯＭ（Read only memory）と、１以上のＲＡＭ（Random access memory）と、１以上の周辺回路である１以上のペリフェラルと、を備えている。図１には、１以上のＲＯＭに含まれる１つのＲＯＭとしてＲＯＭ２３が示され、１以上のＲＡＭに含まれる１つのＲＡＭとしてＲＡＭ２４が示され、１以上のペリフェラルに含まれる１つのペリフェラルとしてペリフェラル２５が示されている。以下では、ＲＯＭ、ＲＡＭ及びペリフェラルとしてＲＯＭ２３、ＲＡＭ２４及びペリフェラル２５に注目する。ペリフェラル２５にはレジスタ２６が内蔵されている。
【００３５】
ＣＰＵ２０は、ＬＳＩ１１に設けられたプログラムメモリ（不図示）に格納されたプログラムを実行する。プログラムメモリはＣＰＵ２０に内蔵されていても良い。ＣＰＵ２０は、プログラムの実行時に必要に応じ内部バス２２にアクセスすることで、ＲＯＭ２３、ＲＡＭ２４又はレジスタ２６の格納データを読み込んだり、ＲＡＭ２４又はレジスタ２６にデータを書き込んだりすることができる。
【００３６】
外部デバッグ装置１２は、ＬＳＩ１１に設けられた図示されない端子を介してモニタ部２１に接続され、モニタ部２１とホストＰＣ１３との間のインターフェースとして機能する。外部デバッグ装置１２及びホストＰＣ１３は双方向通信が可能な態様で互いに接続される。ホストＰＣ１３ではデバッグソフトウェア１４が実行されている。デバッグシステム１０のユーザは、デバッグソフトウェア１４が実行されているホストＰＣ１３を操作することで、ＣＰＵ２０が実行するプログラムのデバッグ作業を行うことができる。外部デバッグ装置１２からモニタ部２１に対してモニタ条件データを送信可能であり、モニタ部２１から外部デバッグ装置１２に対してモニタデータを送信可能であるが、それらのデータの詳細については後述される。
【００３７】
図２を参照し、以下では、便宜上、ＬＳＩ１１に設けられた記憶回路であって、ＲＯＭ２３、ＲＡＭ２４及びレジスタ２６を含む記憶回路を記憶部３０と称する。記憶部３０には、所定サイズのデータを格納可能な記憶領域が多数含まれる。記憶部３０に対して所定のアドレス空間が定義されており、記憶部３０を構成する各記憶領域には固有のアドレスが割り当てられる。
【００３８】
ＣＰＵ２０は内部バス２２に対してアクセスすることができる。内部バス２２へのアクセスとして、リードアクセスとライトアクセスがある。内部バス２２へのリードアクセス又はライトアクセスは、換言すれば、内部バス２２を通じた記憶部３０へのリードアクセス又はライトアクセスである。ＲＡＭ２４及びレジスタ２６に対するアクセスはリードアクセス及びライトアクセスの何れかであるが、ＲＯＭ２３に対するアクセスはリードアクセスに限定される。記憶部３０（例えばＲＡＭ２４）は、ＣＰＵ２０からリードアクセスを受けたとき必要なリードデータを内部バス２２を通じてＣＰＵ２０に送るリード動作を行い、ＣＰＵ２０からライトアクセスを受けたときＣＰＵ２０から内部バス２２を通じて送られてきたライトデータに応じたデータを記憶するライト動作を行う。
【００３９】
ＣＰＵ２０は、リードイネーブル信号ＲＥ、ライトイネーブル信号ＷＥ、アドレス信号ＡＤＤ及びライトデータＷＤを内部バス２２に対して出力することができ、内部バス２２を通じてリードデータＲＤの入力を受けることができる。内部バス２２は、信号ＲＥ、ＷＥ及びＡＤＤ並びにデータＲＤ及びＷＤを個別にＣＰＵ２０及び記憶部３０間で伝送するための複数の配線から成る。
【００４０】
ここでは、リードイネーブル信号ＲＥは“１”又は“０”の値をとる１ビット信号であるものとし、“１”のリードイネーブル信号ＲＥはリード動作を許可する信号として機能し、且つ、“０”のリードイネーブル信号ＲＥはリード動作を禁止する信号として機能するものとする。また、ライトイネーブル信号ＷＥも“１”又は“０”の値をとる１ビット信号であるものとし、“１”のライトイネーブル信号ＷＥはライト動作を許可する信号として機能し、且つ、“０”のライトイネーブル信号ＷＥはライト動作を禁止する信号として機能するものとする。アドレス信号ＡＤＤは、記憶部３０内の何れかの記憶領域のアドレスを指定する信号であり、記憶部３０に定義されたアドレス空間の大きさに応じたビット数を有する。リードデータＲＤは、記憶部３０内の何れかの記憶領域に格納されたデータを当該記憶領域から読み出したデータである。ライトデータＷＤは、記憶部３０内の何れかの記憶領域に書き込まれるべきデータである。リードデータＲＤ及びライトデータＷＤの夫々のビット数は任意である（例えば８ビットである）。
【００４１】
図３（ａ）にはＣＰＵ２０によるリードアクセスの様子が示されている。ＣＰＵ２０は、自身が実行するプログラムに基づいてリードアクセスを行うことができる。ＣＰＵ２０は、リードアクセスにおいて、“１”のリードイネーブル信号ＲＥと、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤとを内部バス２２に出力することを通じ、記憶部３０にリード動作を行わせる。リードアクセスに応答するリード動作において、記憶部３０（例えばＲＡＭ２４）は、内部バス２２を介しＣＰＵ２０から入力されたアドレス信号ＡＤＤにより指定されるアドレスの記憶領域の格納データを読み出し、読み出したデータをリードデータＲＤとして内部バス２２に出力する。リード動作により内部バス２２に出力されたリードデータＲＤは、内部バス２２を介してＣＰＵ２０に入力される。
【００４２】
図３（ｂ）にはＣＰＵ２０によるライトアクセスの様子が示されている。ＣＰＵ２０は、自身が実行するプログラムに基づいてライトアクセスを行うことができる。ＣＰＵ２０は、ライトアクセスにおいて、“１”のライトイネーブル信号ＷＥと、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤと、アドレス信号ＡＤＤにより指定されるアドレスの記憶領域に書き込まれるべきライトデータＷＤとを内部バス２２に出力することを通じ、記憶部３０にライト動作を行わせる。ライトアクセスに応答するライト動作において、記憶部３０（例えばＲＡＭ２４）は、内部バス２２を介しＣＰＵ２０から入力されたアドレス信号ＡＤＤにより指定されるアドレスの記憶領域に対し、ＣＰＵ２０からのライトデータＷＤに応じたデータを格納する。ライト動作後における対応する記憶領域の格納データはライトデータＷＤと一致することもあるし、仕様によっては、ライトデータＷＤに基づくデータではあるもののライトデータＷＤとは一致しないこともある。
【００４３】
ＣＰＵ２０が実行するプログラムのデバッグ作業において、特定のアドレスからＣＰＵ２０が読み取ったデータや、ＣＰＵ２０が特定のアドレスに書き込んだデータをモニタ及びトレースしたいという要望がある。モニタ部２１は、このような要望に応えることができる。
【００４４】
図４にモニタ部２１の内部構成を示す。図４のモニタ部２１は、モニタ条件設定部４１、モニタ条件判定部４２、セレクタ４３、ラッチ部４４及びインターフェース４５を備える。
【００４５】
デバッグシステム１０のユーザは、ＣＰＵ２０のプログラムのデバッグ作業を行うに先立ち、ホストＰＣ１３を操作することを通じてモニタ条件を任意に指定することができる。モニタ条件において、モニタされるべきアドレス（以下、対象アドレスと称する）と、モニタされるべきアクセスの種類（以下、対象アクセス種と称する）と、が設定されている。対象アクセス種は、モニタされるべきアクセスが、リードアクセス及びライトアクセスの何れかであるのか、或いは、リードアクセス及びライトアクセスの双方であるのかを規定する。ホストＰＣ１３への操作を通じて指定されたモニタ条件は、外部デバッグ装置１２からモニタ部２１に対しモニタ条件データとして提供される。
【００４６】
モニタ条件設定部４１では、外部デバッグ装置１２から提供されたモニタ条件データに基づき、対象アドレス及び対象アクセス種を含むモニタ条件が設定される。モニタ条件設定部４１は、設定された対象アドレスを示すアドレス設定信号Ａｓｅｔ、設定された対象アクセス種に応じたリード設定信号Ｒｓｅｔ及びライト設定信号Ｗｓｅｔを、モニタ条件判定部４２に対して出力する。リード設定信号Ｒｓｅｔ及びライト設定信号Ｗｓｅｔの夫々は“１”又は“０”の値をとる１ビット信号である。対象アクセス種がリードアクセスを含む場合、リード設定信号Ｒｓｅｔの値は“１”となり、対象アクセス種がリードアクセスを含まない場合、リード設定信号Ｒｓｅｔの値は“０”となる。対象アクセス種がライトアクセスを含む場合、ライト設定信号Ｗｓｅｔの値は“１”となり、対象アクセス種がライトアクセスを含まない場合、ライト設定信号Ｗｓｅｔの値は“０”となる。
【００４７】
モニタ条件判定部４２に対しては、ＣＰＵ２０が内部バス２２に対して出力する信号ＡＤＤ、ＲＥ及びＷＥが入力されると共に、設定部４１からの信号Ａｓｅｔ、Ｒｓｅｔ及びＷｓｅｔが入力される。モニタ条件判定部４２は、これらの信号ＡＤＤ、ＲＥ及びＷＥ並びに信号Ａｓｅｔ、Ｒｓｅｔ及びＷｓｅｔに基づき、ＣＰＵ２０がモニタ条件に合致するアクセスを行っているか否かを判定する。
【００４８】
具体的には、モニタ条件判定部４２は、アドレス判定回路５１及び論理積回路５２〜５５を備える。アドレス判定回路５１は、ＣＰＵ２０から内部バス２２へ出力されるアドレス信号ＡＤＤと設定部４１からのアドレス設定信号Ａｓｅｔとを受け、アドレス信号ＡＤＤにて示されるアドレスとアドレス設定信号Ａｓｅｔにて示される対象アドレスとが一致する場合に“１”の値を有する信号Ｓａを出力し、それらのアドレスが一致しない場合に“０” の値を有する信号Ｓａを出力する。
【００４９】
論理積回路５２は、ＣＰＵ２０から内部バス２２へ出力されるリードイネーブル信号ＲＥと、設定部４１からのリード設定信号Ｒｓｅｔとの論理積を示す信号Ｓｂを出力する。信号Ｓｂは信号ＲＥ及びＲｓｅｔの値が共に“１”であるときにのみ“１”の値を有し、そうでないときには“０”の値を有する。論理積回路５３は、ＣＰＵ２０から内部バス２２へ出力されるライトイネーブル信号ＷＥと、設定部４１からのライト設定信号Ｗｓｅｔとの論理積を示す信号Ｓｃを出力する。信号Ｓｃは信号ＷＥ及びＷｓｅｔの値が共に“１”であるときにのみ“１”の値を有し、そうでないときには“０”の値を有する。論理積回路５４は、信号Ｓａ及びＳｂの論理積を示す信号Ｓｄを出力する。信号Ｓｄは、信号Ｓａ及びＳｂの値が共に“１”であるときにのみ“１”の値を有し、そうでないときには“０”の値を有する。論理積回路５５は、信号Ｓａ及びＳｃの論理積を示す信号Ｓｅを出力する。信号Ｓｅは、信号Ｓａ及びＳｃの値が共に“１”であるときにのみ“１”の値を有し、そうでないときには“０”の値を有する。リードアクセスとライトアクセスが同時に行われることは無いため、信号Ｓｄ及びＳｅが同時に“１”の値を有することは無い。
【００５０】
このように、モニタ条件判定部４２は、ＣＰＵ２０のアクセス（リードアクセス又はライトアクセス）においてアドレス信号ＡＤＤにより指定されるアドレスが対象アドレスと一致し、且つ、対象アクセス種に適合するアクセスがＣＰＵ２０により行われるとき、ＣＰＵ２０によるアクセスがモニタ条件に適合すると判定して、信号Ｓｄ又はＳｅの値を“１”とする。対象アクセス種に適合するアクセスとは、信号Ｓｄの値が“１”であるときにはリードアクセスであり、信号Ｓｅの値が“１”であるときにはライトアクセスである。
【００５１】
セレクタ４３は、ＣＰＵ２０がモニタ条件に合致するアクセスを行っている場合に内部バス２２を通じて伝送されるリードデータＲＤ又はライトデータＷＤをラッチ部４４に対して出力する。ラッチ部４４は入力端子Ｄ及び出力端子Ｑを有する。セレクタ４３の出力データはラッチ部４４の入力端子Ｄに入力される。ラッチ部４４は、ＣＰＵ２０の動作クロックＣＬＫに同期して入力端子Ｄに加わるデータをラッチし（即ち保持し）、ラッチしたデータを出力端子Ｑから出力する。このため、ＣＰＵ２０がモニタ条件に合致するアクセスを行ったとき、内部バス２２を介して伝送されるリードデータＲＤ又はライトデータＷＤ（換言すれば、モニタ条件に合致するアクセスによるリードデータＲＤ又はライトデータＷＤ）がラッチ部４４にてラッチされることになる。
【００５２】
具体的には、セレクタ４３は第１〜第３入力端子及び出力端子を有し、第１入力端子にはラッチ部４４の出力端子Ｑからの出力データが入力され、第２入力端子にはリードデータＲＤが伝送されるべき配線が接続され（リードアクセスの実行時には当該配線にリードデータＲＤが現れる）、第３入力端子にはライトデータＷＤが伝送されるべき配線が接続される（ライトアクセスの実行時には当該配線にライトデータＷＤが現れる）。そして、セレクタ４３は、信号Ｓｄ及びＳｅの値が共に“０”であるときには第１入力端子に加わるデータを選択して出力し、信号Ｓｄの値が“１”であるときには第２入力端子に加わるデータを選択して出力し、信号Ｓｅの値が“１”であるときには第３入力端子に加わるデータを選択して出力する。
【００５３】
このため、対象アクセス種がリードアクセスを含んでいる場合においてモニタ条件に合致するＣＰＵ２０のリードアクセスがあったとき（即ち、ＣＰＵ２０により対象アドレスに対してリードアクセスが行われるとき）、ＣＰＵ２０が内部バス２２を通じて取得するリードデータＲＤと同じリードデータＲＤがセレクタ４３を介しラッチ部４４に入力されてラッチされることになる。
【００５４】
同様に、対象アクセス種がライトアクセスを含んでいる場合においてモニタ条件に合致するＣＰＵ２０のライトアクセスがあったとき（即ち、ＣＰＵ２０により対象アドレスに対してライトアクセスが行われるとき）、ＣＰＵ２０が内部バス２２に対して出力したライトデータＷＤと同じライトデータＷＤがセレクタ４３を介しラッチ部４４に入力されてラッチされることになる。
【００５５】
モニタ条件が合致するアクセスが行われていない場合には、ラッチ部４４の出力データがセレクタ４３の第１入力端子を通じてラッチ部４４の入力端子Ｄに入力されるため、ラッチ部４４にてラッチされるデータに変更は生じない。
【００５６】
ラッチ部４４の出力データはインターフェース４５に与えられる。インターフェース４５は、ラッチ部４４の出力データをモニタデータとして外部デバッグ装置１２に送信する回路である。インターフェース４５及び外部デバッグ装置１２は、ＣＰＵ２０の動作クロックＣＬＫとは非同期のクロックで動作する。デバッグソフトウェア１４は、例えば、ラッチ部４４にてラッチされたデータを、モニタデータとして定期的に読みにいくことで（そのように外部デバッグ装置１２を制御することで）、モニタしたいデータを取り出すことができる。
【００５７】
具体的な例としてケースＣＳＲを想定する。ケースＣＳＲでは、アドレス空間において５０００番地のアドレスが割り当てられた記憶領域からＣＰＵ２０が読み取ったデータをモニタすることが希望されており、ユーザは、当該希望に沿った操作をホストＰＣ１３に与える。これにより、対象アドレスに５０００番地が設定され且つ対象アクセス種にリードアクセスが設定され、結果、５０００番地を示すアドレス設定信号Ａｓｅｔと、“１”のリード設定信号Ｒｓｅｔとが設定部４１から判定部４２に出力される。
【００５８】
ケースＣＳＲにおいて、ＣＰＵ２０が５０００番地のアドレスの記憶領域に対して実際にリードアクセスを行うとき、５０００番地のアドレスを示すアドレス信号ＡＤＤと“１”のリードイネーブル信号ＲＥがＣＰＵ２０から内部バス２２に対して出力されるため、リードアクセスに関するモニタ条件が合致して、信号Ｓｄの値が“１”となり、結果、ＣＰＵ２０が内部バス２２を通じて取得するリードデータＲＤと同じリードデータＲＤがセレクタ４３を介しラッチ部４４に入力されてラッチされる。
【００５９】
他の具体的な例としてケースＣＳＷを想定する。ケースＣＳＷでは、アドレス空間において５０００番地のアドレスが割り当てられた記憶領域に対しＣＰＵ２０が書き込んだデータをモニタすることが希望されており、ユーザは、当該希望に沿った操作をホストＰＣ１３に与える。これにより、対象アドレスに５０００番地が設定され且つ対象アクセス種にライトアクセスが設定され、結果、５０００番地を示すアドレス設定信号Ａｓｅｔと、“１”のライト設定信号Ｗｓｅｔとが設定部４１から判定部４２に出力される。
【００６０】
ケースＣＳＷにおいて、ＣＰＵ２０が５０００番地のアドレスの記憶領域に対して実際にライトアクセスを行うとき、５０００番地のアドレスを示すアドレス信号ＡＤＤと“１”のライトイネーブル信号ＷＥがＣＰＵ２０から内部バス２２に対して出力されるため、ライトアクセスに関するモニタ条件が合致して、信号Ｓｅの値が“１”となり、結果、ＣＰＵ２０が内部バス２２に対して出力するライトデータＷＤと同じライトデータＷＤがセレクタ４３を介しラッチ部４４に入力されてラッチされる。
【００６１】
上述のケースＣＳＲ又はケースＣＳＷにおいて、対象アクセス種がリードアクセス及びライトアクセスの双方を含むか否かは任意であるが、対象アクセス種がリードアクセス及びライトアクセスの双方を含む場合、上述のケースＣＳＲの動作及びケースＣＳＷの動作の双方がモニタ部２１により実現される。
【００６２】
本実施形態によれば、デバッグ作業において、ＣＰＵ２０が記憶部３０から読み出したデータ又は記憶部３０に対して書き込んだデータを正しくモニタ及びトレースすることが可能となる。この実現に際し、ＤＭＡコントローラやトレースメモリを用いる必要は無く（従って回路追加は小規模で済み）、ＣＰＵ２０のアクセスに伴うＣＰＵ２０の入出力信号／データを、いわば横からモニタしているだけであるので、ＣＰＵ２０の動作に一切影響を与えない。
【００６３】
ＬＳＩ１１にモニタ部２１を複数設けるようにしても良く、これにより、複数のアドレスについてのリードデータＲＤ又はライトデータＷＤをモニタすることが可能である。尚、この場合、複数のモニタ部２１間で一部の構成（例えばインターフェース４５）は共用され得て良い。
【００６４】
＜＜第２実施形態＞＞
本発明の第２実施形態を説明する。図５は、本発明の第２実施形態に係るデバッグシステム１０Ａの概略構成図である。デバッグシステム１０Ａは、複数のＣＰＵ（Central Processing Unit）を内蔵したＬＳＩ（Large Scale Integration）１１Ａと、外部デバッグ装置１２と、ホストコンピュータ１３（ホストＰＣ１３）と、を備える。
【００６５】
半導体装置としてのＬＳＩ１１Ａは、ＣＰＵ（Central Processing Unit）２０を複数備えると共に、モニタ部２１Ａ及び内部バス２２を備える。各ＣＰＵ２０は内部バス２２に接続される。ＬＳＩ１１Ａに設けられるＣＰＵ２０の個数は２以上であれば任意であるが、ここでは、ＬＳＩ１１Ａに設けられる２つのＣＰＵ２０に注目し、注目した２つのＣＰＵ２０を特にＣＰＵ２０［１］及びＣＰＵ２０［２］と称する。各ＣＰＵ２０から内部バス２２に出力される信号及びデータ並びに内部バス２２を介して各ＣＰＵ２０に入力される信号及びデータをモニタ部２１Ａにて受信可能な態様で、モニタ部２１ＡはＣＰＵ２０［１］及び内部バス２２間の配線に接続されていると共にＣＰＵ２０［２］及び内部バス２２間の配線に接続されている。
【００６６】
ＬＳＩ１１Ａは、内部バス２２に接続される構成要素として、更に、１以上のＲＯＭ（Read only memory）と、１以上のＲＡＭ（Random access memory）と、１以上の周辺回路である１以上のペリフェラルと、を備えている。図５には、１以上のＲＯＭに含まれる１つのＲＯＭとしてＲＯＭ２３が示され、１以上のＲＡＭに含まれる１つのＲＡＭとしてＲＡＭ２４が示され、１以上のペリフェラルに含まれる１つのペリフェラルとしてペリフェラル２５が示されている。第２実施形態でも第１実施形態と同様に、ＲＯＭ２３、ＲＡＭ２４及びペリフェラル２５に注目する。ペリフェラル２５にはレジスタ２６が内蔵されている。
【００６７】
各ＣＰＵ２０は、ＬＳＩ１１Ａに設けられたプログラムメモリ（不図示）に格納されたプログラムを実行する。プログラムメモリは各ＣＰＵ２０に内蔵されていても良い。各ＣＰＵ２０は、プログラムの実行時に必要に応じ内部バス２２にアクセスすることで、ＲＯＭ２３、ＲＡＭ２４又はレジスタ２６の格納データを読み込んだり、ＲＡＭ２４又はレジスタ２６にデータを書き込んだりすることができる。
【００６８】
第２実施形態における外部デバッグ装置１２及びホストＰＣ１３の機能及び動作は、第１実施形態におけるそれらと同様である。即ち、外部デバッグ装置１２は、ＬＳＩ１１に設けられた図示されない端子を介してモニタ部２１Ａに接続され、モニタ部２１ＡとホストＰＣ１３との間のインターフェースとして機能する。外部デバッグ装置１２及びホストＰＣ１３は双方向通信が可能な態様で互いに接続される。ホストＰＣ１３ではデバッグソフトウェア１４が実行されており、デバッグシステム１０Ａのユーザは、デバッグソフトウェア１４が実行されているホストＰＣ１３を操作することで、各ＣＰＵ２０が実行するプログラムのデバッグ作業を行うことができる。外部デバッグ装置１２からモニタ部２１Ａに対してモニタ条件データを送信可能であり、モニタ部２１Ａから外部デバッグ装置１２に対してモニタデータを送信可能である。
【００６９】
第１実施形態と同様、ＲＯＭ２３、ＲＡＭ２４及びレジスタ２６を含む記憶回路を記憶部３０と称する（図２参照）。但し、第２実施形態の記憶部３０はＬＳＩ１１Ａに設けられたものを指す。上述したように、記憶部３０には、所定サイズのデータを格納可能な記憶領域が多数含まれる。記憶部３０に対して所定のアドレス空間が定義されており、記憶部３０を構成する各記憶領域には固有のアドレスが割り当てられる。
【００７０】
各ＣＰＵ２０は内部バス２２に対して（換言すれば内部バス２２を介し記憶部３０に対して）リードアクセス又はライトアクセスを行うことができる。ＲＡＭ２４及びレジスタ２６に対するアクセスはリードアクセス及びライトアクセスの何れかであるが、ＲＯＭ２３に対するアクセスはリードアクセスに限定される。記憶部３０（例えばＲＡＭ２４）は、ＣＰＵ２０［ｉ］からリードアクセスを受けたとき必要なリードデータを内部バス２２を通じてＣＰＵ２０［ｉ］に送るリード動作を行い、ＣＰＵ２０［ｉ］からライトアクセスを受けたときＣＰＵ２０［ｉ］から内部バス２２を通じて送られてきたライトデータに応じたデータを記憶するライト動作を行う。ここでｉは１又は２である。
【００７１】
各ＣＰＵ２０は、リードイネーブル信号ＲＥ、ライトイネーブル信号ＷＥ、アドレス信号ＡＤＤ及びライトデータＷＤを内部バス２２に対して出力することができ、内部バス２２を通じてリードデータＲＤの入力を受けることができる。内部バス２２は、信号ＲＥ、ＷＥ及びＡＤＤ並びにデータＲＤ及びＷＤを個別に各ＣＰＵ２０及び記憶部３０間で伝送するための複数の配線から成る。
【００７２】
これらの信号及びデータの意義は第１実施形態で述べた通りである  即ちここでは、リードイネーブル信号ＲＥは“１”又は“０”の値をとる１ビット信号であるものとし、“１”のリードイネーブル信号ＲＥはリード動作を許可する信号として機能し、且つ、“０”のリードイネーブル信号ＲＥはリード動作を禁止する信号として機能するものとする。また、ライトイネーブル信号ＷＥも“１”又は“０”の値をとる１ビット信号であるものとし、“１”のライトイネーブル信号ＷＥはライト動作を許可する信号として機能し、且つ、“０”のライトイネーブル信号ＷＥはライト動作を禁止する信号として機能するものとする。アドレス信号ＡＤＤは、記憶部３０内の何れかの記憶領域のアドレスを指定する信号であり、記憶部３０に定義されたアドレス空間の大きさに応じたビット数を有する。リードデータＲＤは、記憶部３０内の何れかの記憶領域に格納されたデータを当該記憶領域から読み出したデータである。ライトデータＷＤは、記憶部３０内の何れかの記憶領域に書き込まれるべきデータである。リードデータＲＤ及びライトデータＷＤの夫々のビット数は任意である（例えば８ビットである）。
【００７３】
以下では、ＣＰＵ２０［ｉ］から内部バス２２に対して出力される信号ＲＥ、ＷＥ、ＡＤＤを、特に夫々、符号ＲＥ［ｉ］、ＷＥ［ｉ］、ＡＤＤ［ｉ］にて参照することがあり、内部バス２２を通じてＣＰＵ２０［ｉ］に入力されるリードデータＲＤ、ＣＰＵ２０［ｉ］から内部バス２２に出力されるライトデータＷＤを、特に夫々、符号ＲＤ［ｉ］、ＷＤ［ｉ］にて参照することがある。
【００７４】
図６（ａ）にはＣＰＵ２０［１］によるリードアクセスの様子が示されている。ＣＰＵ２０［１］は、自身が実行するプログラムに基づいてリードアクセスを行うことができる。ＣＰＵ２０［１］は、リードアクセスにおいて、“１”のリードイネーブル信号ＲＥ［１］と、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤ［１］とを内部バス２２に出力することを通じ、記憶部３０にリード動作を行わせる。ＣＰＵ２０［１］からのリードアクセスに応答するリード動作において、記憶部３０（例えばＲＡＭ２４）は、内部バス２２を介しＣＰＵ２０［１］から入力されたアドレス信号ＡＤＤ［１］により指定されるアドレスの記憶領域の格納データを読み出し、読み出したデータをリードデータＲＤ［１］として内部バス２２に出力する。リード動作により内部バス２２に出力されたリードデータＲＤ［１］は、内部バス２２を介してＣＰＵ２０［１］に入力される。
【００７５】
図６（ｂ）にはＣＰＵ２０［１］によるライトアクセスの様子が示されている。ＣＰＵ２０［１］は、自身が実行するプログラムに基づいてライトアクセスを行うことができる。ＣＰＵ２０［１］は、ライトアクセスにおいて、“１”のライトイネーブル信号ＷＥ［１］と、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤ［１］と、アドレス信号ＡＤＤ［１］により指定されるアドレスの記憶領域に書き込まれるべきライトデータＷＤ［１］とを内部バス２２に出力することを通じ、記憶部３０にライト動作を行わせる。ＣＰＵ２０［１］からのライトアクセスに応答するライト動作において、記憶部３０（例えばＲＡＭ２４）は、内部バス２２を介しＣＰＵ２０［１］から入力されたアドレス信号ＡＤＤ［１］により指定されるアドレスの記憶領域に対し、ＣＰＵ２０［１］からのライトデータＷＤ［１］に応じたデータを格納する。ライト動作後における対応する記憶領域の格納データはライトデータＷＤ［１］と一致することもあるし、仕様によっては、ライトデータＷＤ［１］に基づくデータではあるもののライトデータＷＤ［１］とは一致しないこともある。
【００７６】
図７（ａ）にはＣＰＵ２０［２］によるリードアクセスの様子が示されている。ＣＰＵ２０［２］は、自身が実行するプログラムに基づいてリードアクセスを行うことができる。ＣＰＵ２０［２］は、リードアクセスにおいて、“１”のリードイネーブル信号ＲＥ［２］と、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤ［２］とを内部バス２２に出力することを通じ、記憶部３０にリード動作を行わせる。ＣＰＵ２０［２］からのリードアクセスに応答するリード動作において、記憶部３０（例えばＲＡＭ２４）は、内部バス２２を介しＣＰＵ２０［２］から入力されたアドレス信号ＡＤＤ［２］により指定されるアドレスの記憶領域の格納データを読み出し、読み出したデータをリードデータＲＤ［２］として内部バス２２に出力する。リード動作により内部バス２２に出力されたリードデータＲＤ［２］は、内部バス２２を介してＣＰＵ２０［２］に入力される。
【００７７】
図７（ｂ）にはＣＰＵ２０［２］によるライトアクセスの様子が示されている。ＣＰＵ２０［２］は、自身が実行するプログラムに基づいてライトアクセスを行うことができる。ＣＰＵ２０［２］は、ライトアクセスにおいて、“１”のライトイネーブル信号ＷＥ［２］と、記憶部３０に定義された複数のアドレスの何れかを指定するアドレス信号ＡＤＤ［２］と、アドレス信号ＡＤＤ［２］により指定されるアドレスの記憶領域に書き込まれるべきライトデータＷＤ［２］とを内部バス２２に出力することを通じ、記憶部３０にライト動作を行わせる。ＣＰＵ２０［２］からのライトアクセスに応答するライト動作において、記憶部３０（例えばＲＡＭ２４）は、内部バス２２を介しＣＰＵ２０［２］から入力されたアドレス信号ＡＤＤ［２］により指定されるアドレスの記憶領域に対し、ＣＰＵ２０［２］からのライトデータＷＤ［２］に応じたデータを書き込む。ライト動作後における対応する記憶領域の格納データはライトデータＷＤ［２］と一致することもあるし、仕様によっては、ライトデータＷＤ［２］に基づくデータではあるもののライトデータＷＤ［２］とは一致しないこともある。
【００７８】
尚、ＣＰＵ２０［１］及び２０［２］が同時に内部バス２２に対してアクセス（リードアクセス又はライトアクセス）を行うことが無いように、ＣＰＵ２０［１］及び２０［２］のアクセスタイミングを調整する調停回路（不図示）がＬＳＩ１１Ａに設けられていて良い。
【００７９】
各ＣＰＵ２０が実行するプログラムのデバッグ作業において、特定のアドレスから各ＣＰＵ２０が読み取ったデータや、各ＣＰＵ２０が特定のアドレスに書き込んだデータをモニタ及びトレースしたいという要望がある。モニタ部２１Ａは、第１実施形態と同様の構成を用いることで、このような要望に応えることができる。但し、バスマスタとして機能するＣＰＵが複数あることを考慮した構成を用いる必要がある。
【００８０】
図８にモニタ部２１Ａの内部構成を示す。図８のモニタ部２１Ａは、ＣＰＵ２０［１］に対するモニタ条件設定部４１［１］及びモニタ条件判定部４２［１］と、ＣＰＵ２０［２］に対するモニタ条件設定部４１［２］及びモニタ条件判定部４２［２］と、セレクタ４３Ａ、ラッチ部４４Ａ及びインターフェース４５Ａを備える。
【００８１】
デバッグシステム１０Ａのユーザは、各ＣＰＵ２０のプログラムのデバッグ作業を行うに先立ち、ホストＰＣ１３を操作することを通じてモニタ条件を任意に指定することができる。第２実施形態において、モニタ条件は、複数のＣＰＵ２０（ここではＣＰＵ２０［１］及び２０［２］）から成るＣＰＵブロック（処理ブロック）に対するモニタ条件であり、ＣＰＵ２０［１］に対するモニタ条件とＣＰＵ２０［２］に対するモニタ条件とに細分化して考えることができる。モニタ条件では、ＣＰＵ２０ごとに上述の対象アドレス及び対象アクセス種が設定されることに加えて、何れのＣＰＵ２０のアクセスによるデータをモニタの対象とするかが設定される。モニタの対象とされたデータはラッチ部４４Ａによりラッチされることになるため、モニタの対象はラッチの対象とも言い換えられる。ホストＰＣ１３への操作を通じて指定されたモニタ条件は、外部デバッグ装置１２からモニタ部２１Ａに対しモニタ条件データとして提供される。
【００８２】
モニタ条件設定部４１［１］では、外部デバッグ装置１２から提供されたモニタ条件データに基づき、ＣＰＵ２０［１］に対するモニタ条件が設定される。ＣＰＵ２０［１］に対するモニタ条件は、ＣＰＵ２０［１］に対する対象アドレス及び対象アクセス種を含み、更にＣＰＵ２０［１］のアクセスによるデータをモニタの対象とするか否かを定める。
【００８３】
モニタ条件設定部４１［１］は、モニタ条件データに基づき、ＣＰＵ２０［１］についての対象アドレスを示すアドレス設定信号Ａｓｅｔ［１］と、ＣＰＵ２０［１］についての対象アクセス種に応じたリード設定信号Ｒｓｅｔ［１］及びライト設定信号Ｗｓｅｔ［１］と、ＣＰＵ２０［１］のアクセスによるデータをモニタの対象とするか否かを定めるモニタ要否設定信号Ｍｓｅｔ［１］とを出力する。リード設定信号Ｒｓｅｔ［１］及びライト設定信号Ｗｓｅｔ［１］の夫々は“１”又は“０”の値をとる１ビット信号である。ＣＰＵ２０［１］についての対象アクセス種がリードアクセスを含む場合、リード設定信号Ｒｓｅｔ［１］の値は“１”となり、ＣＰＵ２０［１］についての対象アクセス種がリードアクセスを含まない場合、リード設定信号Ｒｓｅｔ［１］の値は“０”となる。ＣＰＵ２０［１］についての対象アクセス種がライトアクセスを含む場合、ライト設定信号Ｗｓｅｔ［１］の値は“１”となり、ＣＰＵ２０［１］についての対象アクセス種がライトアクセスを含まない場合、ライト設定信号Ｗｓｅｔ［１］の値は“０”となる。ＣＰＵ２０［１］のアクセスによるデータがモニタの対象とされる場合、モニタ要否設定信号Ｍｓｅｔ［１］の値は“１”となり、そうでない場合、モニタ要否設定信号Ｍｓｅｔ［１］の値は“０”となる。
【００８４】
モニタ条件設定部４１［２］についてもモニタ条件設定部４１［１］と同様である。即ち、モニタ条件設定部４１［２］では、外部デバッグ装置１２から提供されたモニタ条件データに基づき、ＣＰＵ２０［２］に対するモニタ条件が設定される。ＣＰＵ２０［２］に対するモニタ条件は、ＣＰＵ２０［２］に対する対象アドレス及び対象アクセス種を含み、更にＣＰＵ２０［２］のアクセスによるデータをモニタの対象とするか否かを定める。
【００８５】
モニタ条件設定部４１［２］は、モニタ条件データに基づき、ＣＰＵ２０［２］についての対象アドレスを示すアドレス設定信号Ａｓｅｔ［２］と、ＣＰＵ２０［２］についての対象アクセス種に応じたリード設定信号Ｒｓｅｔ［２］及びライト設定信号Ｗｓｅｔ［２］と、ＣＰＵ２０［２］のアクセスによるデータをモニタの対象とするか否かを定めるモニタ要否設定信号Ｍｓｅｔ［２］とを出力する。リード設定信号Ｒｓｅｔ［２］及びライト設定信号Ｗｓｅｔ［２］の夫々は“１”又は“０”の値をとる１ビット信号である。ＣＰＵ２０［２］についての対象アクセス種がリードアクセスを含む場合、リード設定信号Ｒｓｅｔ［２］の値は“１”となり、ＣＰＵ２０［２］についての対象アクセス種がリードアクセスを含まない場合、リード設定信号Ｒｓｅｔ［２］の値は“０”となる。ＣＰＵ２０［２］についての対象アクセス種がライトアクセスを含む場合、ライト設定信号Ｗｓｅｔ［２］の値は“１”となり、ＣＰＵ２０［２］についての対象アクセス種がライトアクセスを含まない場合、ライト設定信号Ｗｓｅｔ［２］の値は“０”となる。ＣＰＵ２０［２］のアクセスによるデータがモニタの対象とされる場合、モニタ要否設定信号Ｍｓｅｔ［２］の値は“１”となり、そうでない場合、モニタ要否設定信号Ｍｓｅｔ［２］の値は“０”となる。
【００８６】
モニタ条件判定部４２［１］及び４２［２］は、複数のＣＰＵ２０（ここではＣＰＵ２０［１］及び２０［２］）から成るＣＰＵブロック（処理ブロック）によるアクセスが、設定部４１［１］及び４１［２］に設定されたモニタ条件に合致するか否かを判定する。
モニタ条件判定部４２［１］に対しては、ＣＰＵ２０［１］が内部バス２２に対して出力する信号ＡＤＤ［１］、ＲＥ［１］及びＷＥ［１］が入力されると共に、設定部４１［１］からの信号Ａｓｅｔ［１］、Ｒｓｅｔ［１］、Ｗｓｅｔ［１］及びＭｓｅｔ［１］が入力される。モニタ条件判定部４２［１］は、自身への入力信号に基づき、ＣＰＵ２０［１］がモニタ条件に合致するアクセスを行っているか否かを判定する。同様に、
モニタ条件判定部４２［２］に対しては、ＣＰＵ２０［２］が内部バス２２に対して出力する信号ＡＤＤ［２］、ＲＥ［２］及びＷＥ［２］が入力されると共に、設定部４１［２］からの信号Ａｓｅｔ［２］、Ｒｓｅｔ［２］、Ｗｓｅｔ［２］及びＭｓｅｔ［２］が入力される。モニタ条件判定部４２［２］は、自身への入力信号に基づき、ＣＰＵ２０［２］がモニタ条件に合致するアクセスを行っているか否かを判定する。
【００８７】
モニタ条件判定部４２［１］及び４２［２］の内部構成及び動作自体は互いに同じである。整数値“１”又は“２”を有する変数ｉを用いて、モニタ条件判定部４２［ｉ］の内部構成及び動作について説明する。
【００８８】
モニタ条件判定部４２［ｉ］は、アドレス判定回路５１［ｉ］並びに論理積回路５２［ｉ］、５３［ｉ］、５４［ｉ］及び５５［ｉ］を備える。アドレス判定回路５１［ｉ］は、ＣＰＵ２０［ｉ］から内部バス２２へ出力されるアドレス信号ＡＤＤ［ｉ］と設定部４１［ｉ］からのアドレス設定信号Ａｓｅｔ［ｉ］とを受け、アドレス信号ＡＤＤ［ｉ］にて示されるアドレスとアドレス設定信号Ａｓｅｔ［ｉ］にて示される対象アドレスとが一致する場合に“１” の値を有する信号Ｓａ［ｉ］を出力し、それらのアドレスが一致しない場合に“０” の値を有する信号Ｓａ［ｉ］を出力する。
【００８９】
論理積回路５２［ｉ］は、ＣＰＵ２０［ｉ］から内部バス２２へ出力されるリードイネーブル信号ＲＥ［ｉ］と、設定部４１［ｉ］からのリード設定信号Ｒｓｅｔ［ｉ］との論理積を示す信号Ｓｂ［ｉ］を出力する。信号Ｓｂ［ｉ］は信号ＲＥ［ｉ］及びＲｓｅｔ［ｉ］の値が共に“１”であるときにのみ“１”の値を有し、そうでないときには“０”の値を有する。論理積回路５３［ｉ］は、ＣＰＵ２０［ｉ］から内部バス２２へ出力されるライトイネーブル信号ＷＥ［ｉ］と、設定部４１［ｉ］からのライト設定信号Ｗｓｅｔ［ｉ］との論理積を示す信号Ｓｃ［ｉ］を出力する。信号Ｓｃ［ｉ］は信号ＷＥ［ｉ］及びＷｓｅｔ［ｉ］の値が共に“１”であるときにのみ“１”の値を有し、そうでないときには“０”の値を有する。
【００９０】
論理積回路５４［ｉ］は、信号Ｓａ［ｉ］、Ｓｂ［ｉ］及びＭｓｅｔ［ｉ］の論理積を示す信号Ｓｄ［ｉ］を出力する。信号Ｓｄ［ｉ］は、信号Ｓａ［ｉ］、Ｓｂ［ｉ］及びＭｓｅｔ［ｉ］の値が全て“１”であるときにのみ“１”の値を有し、そうでないときには“０”の値を有する。論理積回路５５［ｉ］は、信号Ｓａ［ｉ］、Ｓｃ［ｉ］及びＭｓｅｔ［ｉ］の論理積を示す信号Ｓｅ［ｉ］を出力する。信号Ｓｅ［ｉ］は、信号Ｓａ［ｉ］、Ｓｃ［ｉ］及びＭｓｅｔ［ｉ］の値が全て“１”であるときにのみ“１”の値を有し、そうでないときには“０”の値を有する。リードアクセスとライトアクセスが同時に行われることは無いため、信号Ｓｄ［ｉ］及びＳｅ［ｉ］が同時に“１”の値を有することは無い。
【００９１】
このように、モニタ条件において、ＣＰＵ２０ごとに対象アドレス及び対象アクセス種が設定されると共に、何れのＣＰＵ２０のアクセスによるデータをモニタの対象とするか（即ちラッチ部４４Ａによるラッチの対象とするか）が設定される。ＣＰＵ２０［ｉ］のアクセスによるデータをモニタの対象とする（即ちラッチ部４４Ａによるラッチの対象とする）ことがモニタ条件にて設定されている状況、即ち信号Ｍｓｅｔ［ｉ］の値が“１”である状況を、便宜上、状況ＳＴ［ｉ］と称する。そうすると、モニタ条件判定部４２［ｉ］は、状況ＳＴ［ｉ］において、ＣＰＵ２０［ｉ］のアクセス（リードアクセス又はライトアクセス）にてアドレス信号ＡＤＤ［ｉ］により指定されるアドレスがＣＰＵ２０［ｉ］に対して設定された対象アドレス（Ａｓｅｔ［ｉ］に対応）と一致し、且つ、ＣＰＵ２０［ｉ］に対して設定された対象アクセス種（Ｒｓｅｔ［ｉ］及びＷｓｅｔ［ｉ］に対応）に適合するアクセスがＣＰＵ２０［ｉ］により行われるとき、ＣＰＵ２０［ｉ］によるアクセスがモニタ条件に適合すると判定して、信号Ｓｄ［ｉ］又はＳｅ［ｉ］の値を“１”とする。対象アクセス種に適合するアクセスとは、信号Ｓｄ［ｉ］の値が“１”であるときにはリードアクセスであり、信号Ｓｅ［ｉ］の値が“１”であるときにはライトアクセスである。
【００９２】
セレクタ４３Ａは、ＣＰＵ２０［ｉ］がモニタ条件に合致するアクセスを行っている場合に内部バス２２を通じて伝送されるリードデータＲＤ［ｉ］又はライトデータＷＤ［ｉ］をラッチ部４４Ａに対して出力する。ラッチ部４４Ａは入力端子Ｄ及び出力端子Ｑを有する。セレクタ４３Ａの出力データはラッチ部４４Ａの入力端子Ｄに入力される。ラッチ部４４Ａは、各ＣＰＵ２０の動作クロックＣＬＫに同期して入力端子Ｄに加わるデータをラッチし（即ち保持し）、ラッチしたデータを出力端子Ｑから出力する。このため、ＣＰＵ２０［ｉ］がモニタ条件に合致するアクセスを行ったとき、内部バス２２を介して伝送されるリードデータＲＤ［ｉ］又はライトデータＷＤ［ｉ］（換言すれば、モニタ条件に合致するアクセスによるリードデータＲＤ［ｉ］又はライトデータＷＤ［ｉ］）がラッチ部４４Ａにてラッチされることになる。尚、ここでは、ＣＰＵ２０［１］及び２０［２］の動作クロックＣＬＫは共通であると仮定している。
【００９３】
具体的には、セレクタ４３Ａは第１〜第５入力端子及び出力端子を有し、
第１入力端子にはラッチ部４４Ａの出力端子Ｑからの出力データが入力され、
第２入力端子にはリードデータＲＤ［１］が伝送されるべき配線が接続され（ＣＰＵ２０［１］のリードアクセスの実行時には当該配線にリードデータＲＤ［１］が現れる）、
第３入力端子にはライトデータＷＤ［１］が伝送されるべき配線が接続され（ＣＰＵ２０［１］のライトアクセスの実行時には当該配線にライトデータＷＤ［１］が現れる）、
第４入力端子にはリードデータＲＤ［２］が伝送されるべき配線が接続され（ＣＰＵ２０［２］のリードアクセスの実行時には当該配線にリードデータＲＤ［２］が現れる）、
第５入力端子にはライトデータＷＤ［２］が伝送されるべき配線が接続される（ＣＰＵ２０［２］のライトアクセスの実行時には当該配線にライトデータＷＤ［２］が現れる）。
【００９４】
そして、セレクタ４３Ａは、信号Ｓｄ［１］、Ｓｅ［１］、Ｓｄ［２］及びＳｅ［２］の値が全て“０”であるときには第１入力端子に加わるデータを選択して出力し、信号Ｓｄ［１］、Ｓｅ［１］、Ｓｄ［２］、Ｓｅ［２］の値が “１”であるときには、夫々、第２、第３、第４、第５入力端子に加わるデータを選択して出力する。尚、内部バス２２に対し複数のアクセスが同時に行われることはないため、信号Ｓｄ［１］、Ｓｅ［１］、Ｓｄ［２］及びＳｅ［２］の内、２以上の信号の値が同時に“１”となることは無い。
【００９５】
故に、上記状況ＳＴ［ｉ］において、ＣＰＵ２０［ｉ］に対して設定された対象アクセス種がリードアクセスを含んでいる場合、ＣＰＵ２０［ｉ］に対して設定された対象アドレスに対しＣＰＵ２０［ｉ］によりリードアクセスが行われるときに、内部バス２２を通じてＣＰＵ２０［ｉ］に入力されるリードデータＲＤ［ｉ］と同じリードデータＲＤ［ｉ］がセレクタ４３Ａを介しラッチ部４４Ａに入力されてラッチされることになる。
【００９６】
同様に、上記状況ＳＴ［ｉ］において、ＣＰＵ２０［ｉ］に対して設定された対象アクセス種がライトアクセスを含んでいる場合、ＣＰＵ２０［ｉ］に対して設定された対象アドレスに対しＣＰＵ２０［ｉ］によりライトアクセスが行われるときに、ＣＰＵ２０［ｉ］が内部バス２２に対して出力したライトデータＷＤ［ｉ］と同じライトデータＷＤ［ｉ］がセレクタ４３Ａを介しラッチ部４４Ａに入力されてラッチされることになる。
【００９７】
モニタ条件が合致するアクセスが行われていない場合には、ラッチ部４４Ａの出力データがセレクタ４３Ａの第１入力端子を通じてラッチ部４４Ａの入力端子Ｄに入力されるため、ラッチ部４４Ａにてラッチされるデータに変更は生じない。
【００９８】
ラッチ部４４Ａの出力データはインターフェース４５Ａに与えられる。インターフェース４５Ａは、ラッチ部４４Ａの出力データをモニタデータとして外部デバッグ装置１２に送信する回路である。インターフェース４５Ａ及び外部デバッグ装置１２は、各ＣＰＵ２０の動作クロックＣＬＫとは非同期のクロックで動作する。デバッグソフトウェア１４は、例えば、ラッチ部４４Ａにてラッチされたデータを、モニタデータとして定期的に読みにいくことで（そのように外部デバッグ装置１２を制御することで）、モニタしたいデータを取り出すことができる。
【００９９】
具体的な例としてケースＣＳＲ［ｉ］を想定する。ケースＣＳＲ［ｉ］では、アドレス空間において５０００番地のアドレスが割り当てられた記憶領域からＣＰＵ２０［ｉ］が読み取ったデータをモニタすることが希望されており、ユーザは、当該希望に沿った操作をホストＰＣ１３に与える。これにより、ＣＰＵ２０［ｉ］のアクセスによるデータがモニタの対象に設定されると共に、ＣＰＵ２０［ｉ］に関して対象アドレスに５０００番地が設定され且つ対象アクセス種にリードアクセスが設定され、結果、５０００番地を示すアドレス設定信号Ａｓｅｔ［ｉ］と、“１”のリード設定信号Ｒｓｅｔ［ｉ］と、“１”のモニタ要否設定信号Ｍｓｅｔ［ｉ］とが設定部４１［ｉ］から判定部４２［ｉ］に出力される。
【０１００】
ケースＣＳＲ［ｉ］において、ＣＰＵ２０［ｉ］が５０００番地のアドレスの記憶領域に対して実際にリードアクセスを行うとき、５０００番地のアドレスを示すアドレス信号ＡＤＤ［ｉ］と“１”のリードイネーブル信号ＲＥ［ｉ］がＣＰＵ２０［ｉ］から内部バス２２に対して出力されるため、リードアクセスに関するモニタ条件が合致して、信号Ｓｄ［ｉ］の値が“１”となり、結果、ＣＰＵ２０［ｉ］が内部バス２２を通じて取得するリードデータＲＤ［ｉ］と同じリードデータＲＤ［ｉ］がセレクタ４３Ａを介しラッチ部４４Ａに入力されてラッチされる。
【０１０１】
他の具体的な例としてケースＣＳＷ［ｉ］を想定する。ケースＣＳＷ［ｉ］では、アドレス空間において５０００番地のアドレスが割り当てられた記憶領域に対しＣＰＵ２０［ｉ］が書き込んだデータをモニタすることが希望されており、ユーザは、当該希望に沿った操作をホストＰＣ１３に与える。これにより、ＣＰＵ２０［ｉ］のアクセスによるデータがモニタの対象に設定されると共に、ＣＰＵ２０［ｉ］に関して対象アドレスに５０００番地が設定され且つ対象アクセス種にライトアクセスが設定され、結果、５０００番地を示すアドレス設定信号Ａｓｅｔ［ｉ］と、“１”のライト設定信号Ｗｓｅｔ［ｉ］と、“１”のモニタ要否設定信号Ｍｓｅｔ［ｉ］とが設定部４１［ｉ］から判定部４２［ｉ］に出力される。
【０１０２】
ケースＣＳＷ［ｉ］において、ＣＰＵ２０［ｉ］が５０００番地のアドレスの記憶領域に対して実際にライトアクセスを行うとき、５０００番地のアドレスを示すアドレス信号ＡＤＤ［ｉ］と“１”のライトイネーブル信号ＷＥ［ｉ］がＣＰＵ２０［ｉ］から内部バス２２に対して出力されるため、ライトアクセスに関するモニタ条件が合致して、信号Ｓｅ［ｉ］の値が“１”となり、結果、ＣＰＵ２０［ｉ］が内部バス２２に対して出力するライトデータＷＤ［ｉ］と同じライトデータＷＤ［ｉ］がセレクタ４３Ａを介しラッチ部４４Ａに入力されてラッチされる。
【０１０３】
上述のケースＣＳＲ［ｉ］又はケースＣＳＷ［ｉ］において、対象アクセス種がリードアクセス及びライトアクセスの双方を含むか否かは任意であるが、対象アクセス種がリードアクセス及びライトアクセスの双方を含む場合、上述のケースＣＳＲ［ｉ］の動作及びケースＣＳＷ［ｉ］の動作の双方がモニタ部２１Ａにより実現される。
【０１０４】
また、ユーザは、ＣＰＵ２０［１］のアクセスによるデータ及びＣＰＵ２０［２］のアクセスによるデータの何れか一方のみをモニタの対象に設定することができるし、それらの双方をモニタの対象に設定することもできる。双方がモニタの対象とされた場合、信号Ｍｓｅｔ［１］及びＭｓｅｔ［２］は共に“１”の値を持つことになる。
【０１０５】
本実施形態によれば、デバッグ作業において、各ＣＰＵ２０が記憶部３０から読み出したデータ又は記憶部３０に対して書き込んだデータを正しくモニタ及びトレースすることが可能となる。この実現に際し、ＤＭＡコントローラやトレースメモリを用いる必要は無く（従って回路追加は小規模で済み）、各ＣＰＵ２０のアクセスに伴う各ＣＰＵ２０の入出力信号／データを、いわば横からモニタしているだけであるので、各ＣＰＵ２０の動作に一切影響を与えない。
【０１０６】
ＬＳＩ１１Ａにモニタ部２１Ａを複数設けるようにしても良く、これにより、複数のアドレスについてのリードデータＲＤ［ｉ］又はライトデータＷＤ［ｉ］をモニタすることが可能である。尚、この場合、複数のモニタ部２１Ａ間で一部の構成（例えばインターフェース４５Ａ）は共用され得て良い。
【０１０７】
＜＜第３実施形態＞＞
本発明の第３実施形態を説明する。第３実施形態では、上述の第１及び第２実施形態に対して適用可能な幾つかの応用技術、変形技術などを説明する。第３実施形態は以下の実施例ＥＸ３＿１〜ＥＸ３＿５を含む。
【０１０８】
［実施例ＥＸ３＿１］
実施例ＥＸ３＿１を説明する。第２実施形態ではＣＰＵ２０［１］及び２０［２］の動作クロックが共通であることを想定したが、ＣＰＵ２０［１］及び２０［２］の動作クロックは互いに異なっていても良い。但し、この場合、図８のラッチ部４４Ａの代わりに図９のラッチ回路７１［１］及び７１［２］をモニタ部２１Ａに設けておくと共に、図８のセレクタ４３Ａの代わりに図９のセレクタ７２［１］及び７２［２］をモニタ部２１Ａに設けておくと良い。これにより、ＣＰＵ２０［ｉ］がモニタ条件に合致するアクセスを行ったとき、内部バス２２を介して伝送されるリードデータＲＤ［ｉ］又はライトデータＷＤ［ｉ］をラッチ回路７１［ｉ］にてラッチすることが可能となる。
【０１０９】
具体的には、ラッチ回路７１［１］及び７１［２］は夫々に入力端子Ｄ及び出力端子Ｑを有する。セレクタ７２［１］の出力データはラッチ回路７１［１］の入力端子Ｄに入力され、セレクタ７２［２］の出力データはラッチ回路７１［２］の入力端子Ｄに入力される。ラッチ回路７１［１］は、ＣＰＵ２０［１］の動作クロックＣＬＫ１に同期して自身の入力端子Ｄに加わるデータをラッチし（即ち保持し）、ラッチしたデータを自身の出力端子Ｑから出力する。ラッチ回路７１［２］は、ＣＰＵ２０［２］の動作クロックＣＬＫ２に同期して自身の入力端子Ｄに加わるデータをラッチし（即ち保持し）、ラッチしたデータを自身の出力端子Ｑから出力する。
【０１１０】
セレクタ７２［１］は第１〜第３入力端子及び出力端子を有する。セレクタ７２［１］において、
第１入力端子にはラッチ回路７１［１］の出力端子Ｑからの出力データが入力され、
第２入力端子にはリードデータＲＤ［１］が伝送されるべき配線が接続され（ＣＰＵ２０［１］のリードアクセスの実行時には当該配線にリードデータＲＤ［１］が現れる）、
第３入力端子にはライトデータＷＤ［１］が伝送されるべき配線が接続される（ＣＰＵ２０［１］のライトアクセスの実行時には当該配線にライトデータＷＤ［１］が現れる）。そして、セレクタ７２［１］は、信号Ｓｄ［１］及びＳｅ［１］の値が共に“０”であるときには第１入力端子に加わるデータを選択して出力し、信号Ｓｄ［１］、Ｓｅ［１］の値が “１”であるときには、夫々、第２、第３入力端子に加わるデータを選択して出力する。
【０１１１】
セレクタ７２［２］は第１〜第３入力端子及び出力端子を有する。セレクタ７２［２］において、
第１入力端子にはラッチ回路７１［２］の出力端子Ｑからの出力データが入力され、
第２入力端子にはリードデータＲＤ［２］が伝送されるべき配線が接続され（ＣＰＵ２０［２］のリードアクセスの実行時には当該配線にリードデータＲＤ［２］が現れる）、
第３入力端子にはライトデータＷＤ［２］が伝送されるべき配線が接続される（ＣＰＵ２０［２］のライトアクセスの実行時には当該配線にライトデータＷＤ［２］が現れる）。そして、セレクタ７２［２］は、信号Ｓｄ［２］及びＳｅ［２］の値が共に“０”であるときには第１入力端子に加わるデータを選択して出力し、信号Ｓｄ［２］、Ｓｅ［２］の値が “１”であるときには、夫々、第２、第３入力端子に加わるデータを選択して出力する。
【０１１２】
［実施例ＥＸ３＿２］
実施例ＥＸ３＿２を説明する。第２実施形態ではＣＰＵ２０の個数が２であることを想定したが、第２実施形態において、ＬＳＩ１１Ａに設けられて内部バス２２へのアクセスを行うＣＰＵ２０の個数は３以上でも良い。ＣＰＵ２０として３つのＣＰＵ２０［１］、２０［２］及び２０［３］が設けられる場合には（図１０参照）、モニタ条件設定部４１［１］及びモニタ条件判定部４２［１］と同じ構成を持つモニタ条件設定部４１［３］及びモニタ条件判定部４２［３］（双方とも不図示）をモニタ部２１Ａに追加して、設定部４１［３］及び判定部４２［３］によりＣＰＵ２０［３］に対するモニタ条件の設定及びモニタ条件の充足／不充足の判定を行えば良い。ＣＰＵ２０の個数が４以上の場合も同様である。
【０１１３】
［実施例ＥＸ３＿３］
実施例ＥＸ３＿３を説明する。第１又は第２実施形態において、ＣＰＵ２０は内部バス２２に対してアクセスを行う処理部の例であるが、本発明において、そのような処理部はＣＰＵに限定されず、内部バス２２に対してアクセスを行う任意の部位が処理部に成り得る。
【０１１４】
［実施例ＥＸ３＿４］
実施例ＥＸ３＿４を説明する。ＬＳＩ１１を構成する各回路素子は半導体集積回路の形態で形成され、当該半導体集積回路を、樹脂にて構成された筐体（パッケージ）内に封入することで半導体装置が構成される。ＬＳＩ１１Ａについても同様である。但し、複数のディスクリート部品を用いてＬＳＩ１１内の回路と同等の回路を構成するようにしても良い。ＬＳＩ１１Ａについても同様である。
【０１１５】
［実施例ＥＸ３＿５］
実施例ＥＸ３＿５を説明する。本発明に係るデバッグシステムは、ＬＳＩ（１１、１１Ａ）にて例示される半導体装置と、半導体装置に接続された外部装置と、を備える。ここにおける外部装置は、図１又は図５の構成においては、外部デバッグ装置１２を指すと解しても良いし、外部デバッグ装置１２及びホストＰＣ１３の双方を含むと解しても良い。
【０１１６】
本発明の実施形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。以上の実施形態は、あくまでも、本発明の実施形態の例であって、本発明ないし各構成要件の用語の意義は、以上の実施形態に記載されたものに制限されるものではない。上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
【符号の説明】
【０１１７】
１０、１０Ａ  デバッグシステム
１１、１１Ａ  ＬＳＩ
１２  外部デバッグ装置
１３  ホストコンピュータ
１４  デバッグソフトウェア
２０、２０［ｉ］  ＣＰＵ
２１、２１Ａ  モニタ部
２２  内部バス
２３  ＲＯＭ
２４  ＲＡＭ
２５  ペリフェラル
２６  レジスタ
３０  記憶部
４１、４１［ｉ］  モニタ条件設定部
４２、４２［ｉ］  モニタ条件判定部
４３、４３Ａ  セレクタ
４４、４４Ａ  ラッチ部
４５、４５Ａ  インターフェース
【図１】
2020140380.tif 000003
【図２】
2020140380.tif 000004
【図３】
2020140380.tif 000005
【図４】
2020140380.tif 000006
【図５】
2020140380.tif 000007
【図６】
2020140380.tif 000008
【図７】
2020140380.tif 000009
【図８】
2020140380.tif 000010
【図９】
2020140380.tif 000011
【図１０】
2020140380.tif 000012
【図１１】
2020140380.tif 000013
【図１２】
2020140380.tif 000014
【図１３】
2020140380.tif 000015
【図１４】
2020140380.tif 000016