(57)【要約】【課題】  従来は、取得したモニタ信号に基づいてソフトウェアのデバッグとハードウェアの動作解析を効率的に行うことはできなかった【解決手段】  プログラムの実行を行うＣＰＵ３と、半導体集積回路の内部信号をモニタ信号として取得するモニタ部４と、を備え、モニタ部４は、ＣＰＵ３がプログラムの実行を開始するときＣＰＵ３から与えられるモニタ開始信号を受けて、ＬＳＩ１の内部信号をモニタ信号として取得する動作を開始し、ＣＰＵ３がプログラムの実行を停止するときＣＰＵ３から与えられるモニタ停止信号を受けて、ＬＳＩ１の内部信号をモニタ信号として取得する動作を停止する。【選択図】    図１
2008071227.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行を行う演算処理部と、
半導体集積回路の内部信号をモニタ信号として取得するモニタ部と、を備え、
前記モニタ部は、
前記演算処理部が前記プログラムの実行を開始するとき前記演算処理部から与えられるモニタ開始信号を受けて、半導体集積回路の内部信号をモニタ信号として取得する動作を開始し、
前記演算処理部が前記プログラムの実行を停止するとき記演算処理部から与えられるモニタ停止信号を受けて、半導体集積回路の内部信号をモニタ信号として取得する動作を停止する、半導体集積回路。
【請求項２】
前記モニタ部は、前記モニタ開始信号及び前記モニタ停止信号を、前記演算処理部から前記モニタ部に与えられる第１ステータス信号の信号レベルの変化によって検出することを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記演算処理部は、前記モニタ部により取得される前記モニタ信号がトリガ条件を満足したとき前記モニタ部から与えられるブレーク信号を受けて、前記プログラムの実行を停止することを特徴とする請求項１記載の半導体集積回路。
【請求項４】
前記演算処理部は、前記ブレーク信号を、前記モニタ部から前記演算処理部に与えられる第２ステータス信号の信号レベルの変化によって検出することを特徴とする請求項３記載の半導体集積回路
【請求項５】
前記トリガ条件は、前記演算処理部が前記プログラムを実行する前に、あらかじめ前記モニタ部に設定されることを特徴とする請求項３記載の半導体集積回路。
【請求項６】
前記モニタ部は、
前記内部信号が与えられる第１インターフェイス部と、
前記モニタ信号が書き込まれるトレースメモリ部と、
前記内部信号を前記モニタ信号として前記トレースメモリ部に書き込むかどうかを制御するモニタ制御部と、
を備えることを特徴とする請求項１記載の半導体集積回路。
【請求項７】
前記モニタ部は、
前記トレースメモリ部に蓄積された前記モニタ信号を出力するための第２インターフェイス部を、さらに備えることを特徴とする請求項６記載の半導体集積回路。
【請求項８】
前記モニタ部は、
前記内部信号が与えられる第１インターフェイス部と、
前記モニタ信号が書き込まれるトレースメモリ部と、
前記内部信号を前記モニタ信号として前記トレースメモリ部に書き込むかどうかを制御するとともに、取得される前記モニタ信号がトリガ条件を満足したとき、前記演算処理部に前記ブレーク信号を与えるモニタ制御部と、
を備えることを特徴とする請求項３記載の半導体集積回路。
【請求項９】
前記演算処理部は、
当該演算処理部が前記プログラムの実行を開始するときに、前記モニタ開始信号を前記モニタ部に与え、当該演算処理部が前記プログラムの実行を停止するときに、前記モニタ停止信号を前記モニタ部に与えるデバッグ制御部を備えることを特徴とする請求項１記載の半導体集積回路。
【請求項１０】
前記モニタ部は、前記半導体集積回路の前記内部信号を前記モニタ信号として取得するとき、当該モニタ部に含まれるトレースメモリ部に前記モニタ信号を書き込むことを特徴とする請求項１の半導体集積回路。
【請求項１１】
プログラムの実行を行う演算処理部と、
半導体集積回路の内部信号をモニタ信号として取得するモニタ部と、を備え、
前記モニタ部は、
前記演算処理部が前記プログラムの実行を行っている状態を示すアクティブステータス信号を、前記演算処理部から与えられている間、半導体集積回路の内部信号をモニタ信号として取得し、
前記演算処理部が前記プログラムの実行を行っていない状態を示すノンアクティブステータス信号を、前記演算処理部から与えられている間、半導体集積回路の内部信号をモニタ信号として取得しない、半導体集積回路。
【請求項１２】
前記アクティブステータス信号は、前記演算処理部から前記モニタ部に与えられる第１ステータス信号の第１の信号レベルであり、
前記ノンアクティブステータス信号は、前記演算処理部から前記モニタ部に与えられる第１ステータス信号の第２の信号レベルであることを特徴とする請求項１１記載の半導体集積回路。
【請求項１３】
前記演算処理部は、前記モニタ部により取得される前記モニタ信号がトリガ条件を満足したとき前記モニタ部から与えられるブレーク信号を受けて、前記プログラムの実行を停止することを特徴とする請求項１１記載の半導体集積回路。
【請求項１４】
前記演算処理部は、前記ブレーク信号を、前記モニタ部から前記演算処理部に与えられる第２ステータス信号の信号レベルの変化によって検出することを特徴とする請求項１３記載の半導体集積回路
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関する。
【背景技術】
【０００２】
近年、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の高機能化の進展が著しい。これに伴って、ソフトウェアのデバッグとハードウェアの動作解析を効率的に行う手法が求められている。例えば、特許文献１では、ＭＰＵ（マイクロプロセッサ）の内部信号とＬＳＩの周辺回路の内部信号とを選択的に出力することでデバック効率を向上させている。
【０００３】
ところで、ＭＰＵがプログラムを実行することに伴って、ＬＳＩの内部信号（例えば、周辺回路の内部信号）は変化する。ＭＰＵがある命令を実行したとき、ＬＳＩの内部信号がどのように変化したのかということを調べるためには、実行した命令と、その時に取得した内部信号との対応関係を明らかにすることが必要となる。すなわち、実行した命令と、その取得した内部信号との対応づけがなされていないと、取得した内部信号から、その時に実行された命令がどれなのか、を調べることに労力が必要となる場合がある。
【０００４】
例えば、ＭＰＵが繰り返し同じ命令を実行する場合には、取得されるモニタ信号が何回目の命令に対応するのかを調べることが容易ではない場合がある。
【０００５】
特許文献１では、ＬＳＩの構成として、ＭＰＵによるプログラムの実行と、周辺回路からのモニタ信号の取得とが対応づけられていないため、上述したように、取得したモニタ信号に基づいて、ソフトウェアのデバッグとハードウェアの動作解析とを効率的に行うことはできなかった。
【特許文献１】特開２００２−２４２０１
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述のように、取得したモニタ信号に基づいてソフトウェアのデバッグとハードウェアの動作解析を効率的に行うことはできなかった。
【課題を解決するための手段】
【０００７】
本発明にかかる半導体集積回路は、プログラムの実行を行う演算処理部と、半導体集積回路の内部信号をモニタ信号として取得するモニタ部と、を備え、前記モニタ部は、前記演算処理部が前記プログラムの実行を開始するとき前記演算処理部から与えられるモニタ開始信号を受けて、半導体集積回路の内部信号をモニタ信号として取得する動作を開始し、前記演算処理部が前記プログラムの実行を停止するとき記演算処理部から与えられるモニタ停止信号を受けて、半導体集積回路の内部信号をモニタ信号として取得する動作を停止する。
【０００８】
本発明にかかる半導体集積回路は、プログラムの実行を行う演算処理部と、半導体集積回路の内部信号をモニタ信号として取得するモニタ部と、を備え、前記モニタ部は、前記演算処理部が前記プログラムの実行を行っている状態を示すアクティブステータス信号を、前記演算処理部から与えられている間、半導体集積回路の内部信号をモニタ信号として取得し、前記演算処理部が前記プログラムの実行を行っていない状態を示すノンアクティブステータス信号を、前記演算処理部から与えられている間、半導体集積回路の内部信号をモニタ信号として取得しない。
【０００９】
モニタ部は、演算処理部がプログラムの実行をしている期間に対応して、半導体集積回路の内部信号をモニタ信号として取得する。従って、実行されるプログラムと取得されるモニタ信号とを対応づけることが容易にできる。例えば、不必要な信号を取得することを抑制することができ、効率的な解析を実現できる。
【発明の効果】
【００１０】
取得したモニタ信号に基づいてソフトウェアのデバッグとハードウェアの動作解析を効率的に行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を用いて、本発明の実施の形態について説明する。尚、図面は簡略的なものであって、本発明の技術的範囲を狭めるように解釈してはならない。また、同一の要素には同一の符号を付し、重複する説明は省略するものとする。
【００１２】
[第１の実施の形態]
図１に本実施の形態にかかる半導体集積回路１（ＬＳＩ１）を含むデバックシステム１００を示す。図１に示すように、デバックシステム１００は、ＬＳＩ１と外部計算装置２とを有する。外部計算装置２には、プログラムのバグの発見を支援するソフトウェア（デバッガー）がインストールされている。
システム開発担当者は、デバッガーを使用して、検査対象となるプログラム（テストプログラム）をＬＳＩ１にダウンロードさせる。また、デバッガーを使用して、ＬＳＩ１に観察対象とするモニタ信号を設定したり、ＬＳＩ１に保持されているモニタ信号を取得したりする。
【００１３】
図２に示すように、外部計算装置２には、表示装置２０が接続されている。取得したモニタ信号に基づく波形（モニタ波形）は、表示装置２０に表示される。システム開発担当者は、この表示装置２０に表示されたモニタ波形を用いて、プログラムのバグの発見又はＬＳＩ１の動作解析を行う。
【００１４】
図１に戻り説明する。ＬＳＩ１は、ＣＰＵ（演算処理部）３、モニタ部４、周辺回路５、メモリ部６、システムバス７、通信バス８、通信ポート９を備える。
【００１５】
外部計算装置２は、ＬＳＩ１の通信ポート９に接続される。外部計算装置２にインストールされたデバッガーにより、ＬＳＩ１に検査用のプログラムがダウンロードされる。検査用のプログラムは、ＬＳＩ１に含まれるメモリ部６に記憶される。
【００１６】
システム開発担当者は、デバッガーを用いて、ＬＳＩ１の内部信号のうち、どの内部信号をモニタ信号として取得するのかを、あらかじめ後述するモニタ制御部１４に設定する。ここでは、周辺回路５から与えられる内部信号はモニタ信号ＭＳ１として、システムバス７から与えられる内部信号はモニタ信号ＭＳ２として、ＣＰＵ３から与えられる内部信号はモニタ信号ＭＳ３として設定される。なお、モニタ信号として取得するＬＳＩ１の内部信号の数は任意である。
【００１７】
ＣＰＵ３は、デバッガーから与えられるプログラムの実行命令に基づいて、メモリ部６に記憶されたプログラムを実行する。また、ＣＰＵ３は、デバッガーから与えられるプログラムの停止命令に基づいて、メモリ部６に記憶されたプログラムの実行を停止する。なお、メモリ部６に記憶されるプログラムは、デバッガーによって書き換えられることが可能である。従って、ＣＰＵ３は、デバッガーによって書き換えられたプログラムを実行することもある。
【００１８】
ＣＰＵ３は、プログラムカウンタ（ＰＣ）、アキュムレータ、各種レジスタを含む（尚、図１において、いずれも図示されていない）。そして、ＣＰＵ３は、デバッグ制御部（ＤＣＵ）１０をさらに含む。
【００１９】
本実施形態においては、デバッグ制御部１０は、ＣＰＵ３がプログラムの実行をしているか、又は実行をしていないかを検出する。そして、デバッグ制御部１０からモニタ部４に、ＣＰＵ３によるプログラムの実行状態に応じた信号レベルの第１ステータス信号が与えられる。尚、ここでは、第１ステータス信号は、ハイレベル（ＨＩＧＨ）とローレベル（ＬＯＷ）の２つの信号レベルを持つデジタル信号である。
【００２０】
モニタ部４は、モニタＩ／Ｆ１１（第１インターフェイス部１１）、トレースメモリ部１２、通信Ｉ／Ｆ１３（第２インターフェイス部１３）、モニタ制御部１４を含む。
【００２１】
モニタＩ／Ｆ１１には、ＬＳＩ１の内部信号が与えられる。ここで与えられるＬＳＩ１の内部信号は、周辺回路５から与えられる内部信号、システムバス７から与えられる内部信号、ＣＰＵ３から与えられる内部信号である。また、モニタＩ／Ｆ１１には、デバッグ制御部１０から第１ステータス信号も与えられる。
【００２２】
モニタ制御部１４は、デバッガーから設定された条件に従って、モニタＩ／Ｆ１１に与えられる内部信号をモニタ信号としてトレースメモリ部１２に書き込むかどうかを制御する。上述のとおり、モニタＩ／Ｆ１１に与えられる内部信号のうち、どれをモニタ信号として取得するか（トレースメモリ部１２に書き込むか）は、あらかじめデバッガーにより、モニタ制御部１４に設定される。
【００２３】
また、モニタ制御部１４は、モニタＩ／Ｆ１１に与えられる第１ステータス信号に基づいてモニタ信号を取得するかどうか（モニタ信号をトレースメモリ部１２に書き込むかどうか）も制御する。
【００２４】
尚、モニタＩ／Ｆ１１は、通信Ｉ／Ｆ１３に接続され、デバッガーと通信することができるように構成される。
【００２５】
通信Ｉ／Ｆ１３は、モニタＩ／Ｆ１１、トレースメモリ部１２に接続される。また、通信Ｉ／Ｆ１３は、通信バス８に接続される。すなわち、通信Ｉ／Ｆ１３は、モニタ部４とデバッガーとの間の通信インターフェイスを構成する。具体的には、トレースメモリ部１２に記憶されたモニタ信号は、通信Ｉ／Ｆ１３を介して、通信バス８に読み出される。そして、通信バス８に出力されたモニタ信号は、通信ポート９を介して、外部計算装置２に読み出される。
【００２６】
システムバス７は、データの伝送路であって、ＣＰＵ３、周辺回路５、メモリ部６を接続する。通信バス８は、データの伝送路であって、ＣＰＵ３、通信ポート９、モニタ部４を接続する。
【００２７】
ＬＳＩ１に含まれるＣＰＵ３及びモニタ部４は、共通の通信ポート９を介して、共通のデバッガーにより制御される。よって、効率的にプログラムのバグの発見又はＬＳＩ１の動作解析を行うことができる。
【００２８】
本実施形態においては、ＣＰＵ３がプログラムの実行を開始するとき、ＣＰＵ３のデバッグ制御部１０により、第１ステータス信号の信号レベルが、ハイレベルからローレベルに変更される。そして、ＣＰＵ３がプログラムを実行している期間、第１ステータス信号はローレベルに維持される。
【００２９】
また、ＣＰＵ３がプログラムの実行を停止するとき、デバッグ制御部１０により、第１ステータス信号の信号レベルが、ローレベルからハイレベルに変更される。そして、ＣＰＵ３が再びプログラムの実行を開始するまで、第１ステータス信号はハイレベルに維持される。
【００３０】
上述のとおり、第１ステータス信号は、ＣＰＵ３のデバッグ制御部１０からモニタ部４に与えられる。そして、デバッグ制御部１０によって、第１ステータス信号がハイレベルからローレベルに変更されるとき、モニタ部４は、モニタ信号（ＭＳ１〜ＭＳ３）の取得を開始する。
【００３１】
すなわち、デバッグ制御部１０は、第１ステータス信号をハイレベルからローレベルに変化させることで、モニタ部４に、モニタ信号の取得を開始するタイミングを連絡する。換言すると、第１ステータス信号の信号レベルの立下りは、モニタ部４によるモニタ信号の取得を開始させる「モニタ開始信号」である。
【００３２】
「モニタ開始信号」は、デバッグ制御部１０がＣＰＵ３によるプログラムの実行開始を検出したとき、デバッグ制御部１０からモニタ部４に与えられる。従って、モニタ部４によるモニタ信号の取得の開始時点は、ＣＰＵ３によるプログラムの実行の開始時点と実質的に等しく設定される。
なお、ここでいう「実質的に」とは、ＬＳＩ１の内部基準クロックを基準として、多少のクロックずれがあっても良いことを意味する。
【００３３】
ＣＰＵ３のデバッグ制御部１０によって、第１ステータス信号がローレベルからハイレベルに変更されるとき、モニタ部４は、モニタ信号（ＭＳ１〜ＭＳ３）の取得を停止する。
【００３４】
すなわち、デバッグ制御部１０は、第１ステータス信号をローレベルからハイレベルに変化させることで、モニタ部４に、モニタ信号の取得を停止するタイミングを連絡する。換言すると、第１ステータス信号の信号レベルの立ち上がりは、モニタ部４によるモニタ信号の取得を停止させる「モニタ停止信号」である。
【００３５】
「モニタ停止信号」は、デバッグ制御部１０がＣＰＵ３によるプログラムの実行停止を検出したときに、デバッグ制御部１０からモニタ部４に与えられる。従って、モニタ部４によるモニタ信号の取得の停止時点は、ＣＰＵ３によるプログラムの実行の停止時点と実質的に等しく設定される。
なお、ここでいう「実質的に」とは、ＬＳＩ１の内部基準クロックを基準として、多少のクロックずれがあっても良いことを意味する。
【００３６】
上述のように、デバッグ制御部１０は、ＣＰＵ３によるプログラムの実行開始に同期してモニタ開始信号をモニタ部４に与え、ＣＰＵ３によるプログラムの実行停止に同期してモニタ停止信号をモニタ部４に与える。デバッグ制御部１０からモニタ部４にモニタ開始信号が与えられ、その後、デバッグ制御部１０からモニタ部４にモニタ停止信号が与えられるまでの間、デバッグ制御部１０からモニタ部４には、ローレベルの第１ステータス信号が与えられる。
【００３７】
この点を換言すると、デバッグ制御部１０は、ＣＰＵ３がプログラムを実行している期間（プログラム実行期間）、ローレベルの第１ステータス信号（アクティブステータス信号）をモニタ部４に与える。また、デバッグ制御部１０は、ＣＰＵ３がプログラムを実行していない期間（プログラム非実行期間）、ハイレベルの第１ステータス信号（ノンアクティブステータス信号）をモニタ部４に与える。
【００３８】
モニタ部４は、デバッグ制御部１０から、ローレベルの第１ステータス信号を与えられている間は、モニタ信号を取得する。他方、モニタ部４は、デバッグ制御部１０から、ハイレベルの第１ステータス信号を与えられている間は、モニタ信号を取得しない。よって、デバッグ制御部１０から与えられる第１ステータス信号の信号レベルに基づいて、モニタ部４によるモニタ信号の取得をするか又は取得をしないかが決定される。
【００３９】
このような構成によって、簡易に、ＣＰＵ３は、モニタ部４に対して、ＣＰＵ３がプログラムの実行を開始した時点と、ＣＰＵ３がプログラムの実行を停止した時点とを知らせることができる。そして、モニタ部４は、ＣＰＵ３によるプログラムの実行開始又は実行停止に同期して、ＬＳＩ１の内部信号をモニタ信号として取得する動作を開始又は停止する。
【００４０】
また、このような構成によって、簡易に、ＣＰＵ３は、モニタ部４に対して、ＣＰＵ３がプログラムの実行をしている期間と、ＣＰＵ３がプログラムの実行を停止している期間とを知らせることができる。そして、モニタ部４は、ＣＰＵ３によるプログラムの実行期間又はプログラムの実行停止期間に対応して、ＬＳＩ１の内部信号をモニタ信号として取得する又はモニタ信号として取得しない。
【００４１】
ここで図３のタイミングチャートを用いて、本実施形態にかかるＬＳＩ１の動作について説明する。なお、説明に際して、図４乃至図９もあわせて参照する。
【００４２】
時刻ｔ１では、図４に示すように、「プログラムのダウンロード」と「モニタ設定」が行われる。すなわち、検査対象となるプログラム（テストプログラム）は、デバッガーからＬＳＩ１にダウンロードされる。また、デバッガーから与えられるコマンド（モニタ設定コマンド）によって、モニタ制御部１４に、モニタ信号として取得される内部信号が設定される。なお、プログラムは、メモリ部６に格納される。また、このとき、第１ステータス信号はハイレベルである。
【００４３】
時刻ｔ２では、図５に示すように、「プログラムの実行」が開始する。すなわち、デバッガーからＣＰＵ３にプログラムの実行を開始するコマンド（スタートコマンド）が与えられる。ＣＰＵ３は、デバッガーからの指示に基づいて、メモリ部６に格納されたプログラムの実行を開始する。このとき、第１ステータス信号はハイレベルである。
【００４４】
時刻ｔ３では、「第１ステータス信号」の信号レベルが変化する。すなわち、デバッグ制御部１０は、ＣＰＵ３がプログラムの実行を開始することを検出すると、第１ステータス信号をハイレベルからローレベルに変化させる。第１ステータス信号がハイレベルからローレベルに変更されることによって、信号レベルの立下りが発生する。
【００４５】
時刻ｔ４では、図６に示すように、「モニタ信号の取得」が開始する。すなわち、モニタ制御部１４は、上述のように、第１ステータス信号がハイレベルからローレベルに変化したこと（信号レベルの立下り）を検出すると、上述の「モニタ設定」により特定されたＬＳＩ１の内部信号をモニタ信号（ＭＳ１〜ＭＳ３）として取得することを開始する。モニタ信号として取得される内部信号は、トレースメモリ部１２に書き込まれる（これを、図６では、模式的に矢印Ｗｒｉｔｅで示す）。従って、モニタ信号を取得することは、トレースメモリ部１２に書き込むことと等しい。
【００４６】
上述したように、本実施形態では、次のようにモニタ信号として取得する内部信号が設定されている。すなわち、図６に明示的に示すように、モニタ部４は、周辺回路５の内部信号をモニタ信号ＭＳ１として取得し、システムバス７の内部信号をモニタ信号ＭＳ２として取得し、ＣＰＵ３の内部信号をモニタ信号ＭＳ３として取得する。モニタＩ／Ｆ１１に入力されるモニタ信号ＭＳ１〜ＭＳ３は、矢印ｗｒｉｔｅで示すように、トレースメモリ部１２に書き込まれる。
【００４７】
尚、時刻ｔ３は、時刻ｔ２と実質的に同じタイミングである。すなわち、「プログラムの実行」が開始されるタイミングと実質的に同じタイミングで「第１ステータス信号」が変化する。また、時刻ｔ４は、時刻ｔ３と実質的に同じタイミングである。すなわち、「第１ステータス信号」の信号レベルの変化と実質的に同じタイミングで「モニタ信号の取得」が開始される。従って、「プログラムの実行」の開始時点と「モニタ信号の取得」の開始時点とは、実質的に同じタイミングである。
【００４８】
時刻ｔ５では、図７に示すように、「プログラムの実行」が停止される。すなわち、デバッガーからＣＰＵ３にプログラムの実行を停止するコマンド（ストップコマンド）が与えられる。ＣＰＵ３は、デバッガーからの指示に従って、プログラムの実行を停止する。
【００４９】
時刻ｔ６では、「第１ステータス信号」の信号レベルが変化する。すなわち、デバッグ制御部１０は、ＣＰＵ３がプログラムの実行を停止することを検出すると、第１ステータス信号をローレベルからハイレベルに変化させる。
【００５０】
時刻ｔ７では、「モニタ信号の取得」が停止する。すなわち、モニタ制御部１４は、第１ステータス信号がローレベルからハイレベルに変化したこと（信号レベルの立ち上がり）を検出すると、ＬＳＩ１の内部信号をモニタ信号として取得することを停止する。
【００５１】
尚、時刻ｔ６は、時刻ｔ５と実質的に同じタイミングである。また、時刻ｔ７は、時刻ｔ６と実質的に同じタイミングである。すなわち、「プログラムの実行」が停止されるタイミングと、「第１ステータス信号」の信号レベルが変化するタイミングは、実質的に同じタイミングである。また、「第１ステータス信号」の信号レベルが変化するタイミングと「プログラムの実行」が停止されるタイミングとは、実質的に同じタイミングである。従って、「プログラムの実行」が停止するタイミングと「モニタ信号の取得」が停止するタイミングとは、実質的に同じタイミングである。
【００５２】
時刻ｔ８では、「モニタ信号の読み出し」が行われる。すなわち、デバッガーからモニタ部４及びＣＰＵ３に対して、これらに蓄積された信号を読み出すためのコマンド（リードコマンド）が与えられる。そして、モニタ部４のトレースメモリ部１２に蓄積されたモニタ信号及びＣＰＵ３に含まれる各種レジスタに蓄積された信号は、外部計算装置２に読み込まれる。そして、デバッガーによる処理によって、外部計算装置２に接続される表示部２０にモニタ信号の波形が表示される。
【００５３】
上述の説明から明らかなように、デバッグ制御部１０は、ＣＰＵ３がプログラムの実行を開始する時点で、第１ステータス信号をハイレベルからローレベルに変更する。すなわち、デバッグ制御部１０は、第１ステータス信号の信号レベルを変化させることで、ＣＰＵ３がプログラムの実行を開始したことをモニタ制御部１４に連絡する。
【００５４】
モニタ部４のモニタ制御部１４は、ＣＰＵ３のデバッグ制御部１０から与えられる第１ステータス信号の信号レベルの立下り（モニタ開始信号）に基づいて、ＣＰＵ３がプログラムの実行を開始したことを検出する。そして、ＬＳＩ１の内部信号をモニタ信号として取得する動作を開始する。
【００５５】
また、上述の説明から明らかなように、デバッグ制御部１０は、ＣＰＵ３がプログラムの実行を停止する時点で、第１ステータス信号をローレベルからハイレベルに変更する。すなわち、デバッグ制御部１０は、第１ステータス信号の信号レベルを変化させることで、ＣＰＵ３がプログラムの実行を停止したことをモニタ制御部１４に連絡する。
【００５６】
モニタ部４のモニタ制御部１４は、ＣＰＵ３のデバッグ制御部１０から与えられる第１ステータス信号の信号レベルの立ち上がり（モニタ停止信号）に基づいて、ＣＰＵ３がプログラムの実行を停止したことを検出する。そして、ＬＳＩ１の内部信号をモニタ信号として取得する動作を停止する。
【００５７】
また、上述の説明から明らかなように、デバッグ制御部１０により、ＣＰＵ３がプログラムの実行をしている期間に対応して、第１ステータス信号はローレベルに維持される。また、デバッグ制御部１０により、ＣＰＵ３がプログラムの実行を停止している期間に対応して、第１ステータス信号はハイレベルに維持される。これによって、第１ステータス信号の信号レベルがローレベル（第１の信号レベル）である期間には、モニタ部４はモニタ信号を取得し（モニタ信号を取得する動作を継続し）、第１ステータス信号の信号レベルがハイレベル（第２の信号レベル）である期間には、モニタ部４はモニタ信号を取得しない（モニタ信号を取得しない動作を継続する）。
【００５８】
ＣＰＵ３は、検査用のプログラムを実行するときに、他のプログラム（例えば、デバック支援用のプログラム）も実行するときがある。従って、モニタ部４は、他のプログラムの実行に起因する内部信号も、モニタ信号として取得してしまうことが起こりうる。不必要な内部信号をモニタ信号として取得してしまうと、テストプログラムのデバッグやＬＳＩ１の動作解析を効率的に行うことが妨げられる。
【００５９】
本実施形態によれば、上述のように、モニタ部４は、ＣＰＵ３がプログラムの実行をしている期間に対応して、ＬＳＩ１の内部信号をモニタ信号として取得する。従って、プログラムの解析のために不必要なモニタ信号を取得することは抑制され、効率的なプログラムのデバッグ又はハードウェアの動作解析を実現することができる。
【００６０】
[第２の実施の形態]
図８に本実施の形態にかかる半導体集積回路５０（ＬＳＩ５０）を含むデバックシステム２００を示す。なお、冒頭に述べたように、重複する説明は省略するものとする。
【００６１】
第１の実施の形態と異なる点は、モニタ部４からＣＰＵ３に対して第２ステータス信号が与えられる点である。第２ステータス信号は、第１ステータス信号と同様に、ハイレベルとローレベルの２つの信号レベルを有するデジタル信号である。
【００６２】
モニタ制御部１４は、取得したあるモニタ信号が設定済みのトリガ条件を満足したとき、第２ステータス信号の信号レベルを変化させることにより、デバッグ制御部１０に対してブレーク信号を与える。そして、ＣＰＵ３は、ブレーク信号を受けて、プログラムの実行を停止する。なお、トリガ条件は、ＣＰＵ３がプログラムの実行を開始する前にあらかじめデバッガーによってモニタ制御部１４に設定される。
【００６３】
以下、図９のタイミングチャートに基づいて、この異なる点について説明する。
【００６４】
時刻ｔ１では、第１の実施の形態と同様に、「プログラムのダウンロード」と「モニタ設定」が行われる。本実施の形態においては、このほか、「トリガ条件の設定」が行われる。すなわち、デバッガーから所定のコマンドがモニタ制御部１４に与えられ、トリガ条件がモニタ制御部１４に設定される。例えば、あるモニタ信号がローレベルからハイレベルに変化したときの信号レベルの立ち上がりをトリガ条件として設定してもよい。なお、このとき、第２ステータス信号は、ローレベルである。
【００６５】
時刻ｔ２では、第１の実施の形態と同様に、「プログラムの実行」が開始する。また、時刻ｔ３では、第１の実施の形態と同様に、「ステータス信号」が変化する。時刻ｔ４では、第１の実施の形態と同様に、「モニタ信号の取得」が開始する。第１の実施の形態と同様に、時刻ｔ３は時刻ｔ２と実質的に同じタイミングであり、時刻ｔ４は時刻ｔ３と実質的に同じタイミングである。従って、「プログラムの実行」が開始するタイミングと「モニタ信号の取得」が開始するタイミングは、実質的に同じタイミングである。また、いずれのときも、第２ステータス信号は、ローレベルである。
【００６６】
本実施形態においては、時刻ｔ５で、「トリガ条件」が満足される。すなわち、モニタ制御部１４は、取得したモニタ信号が、設定済みのトリガ条件を満足したことを検出する。
【００６７】
そして、本実施形態においては、時刻ｔ６で、「第２ステータス信号」の信号レベルが変化する。すなわち、モニタ制御部１４は、時刻ｔ５で、取得されたモニタ信号がトリガ条件を満足したことを検出すると、第２ステータス信号の信号レベルをローレベルからハイレベルに変更する。モニタ制御部１４は、第２ステータス信号の信号レベルをローレベルからハイレベルに変更することで、取得されたモニタ信号がトリガ条件を満足したことＣＰＵ３のデバッグ制御部１０に連絡する。すなわち、第２ステータス信号の信号レベルの立ち上がり（信号レベルの変化）は、ＣＰＵ３によるプログラムの実行を停止させる信号（ブレーク信号）である。図１０に、モニタ制御部１４からデバッグ制御部１０に与えられるブレーク信号を模式的に示す。
【００６８】
時刻ｔ７で、「プログラムの実行」が停止される。すなわち、デバッグ制御部１０は、第２ステータス信号がローレベルからハイレベルに変化したこと（ブレーク信号を受けたこと）を検出すると、プログラムの実行を停止するようにＣＰＵ３を制御する。そして、ＣＰＵ３は、プログラムの実行を停止する。
【００６９】
時刻ｔ８では、第１の実施の形態と同様に、「第１ステータス信号」の信号レベルが変化する。すなわち、デバッグ制御部１０は、ＣＰＵ３がプログラムの実行を停止することを検出すると、第１ステータス信号をローレベルからハイレベルに変化させる。
【００７０】
時刻ｔ９では、第１の実施の形態と同様に、「モニタ信号の取得」が停止する。すなわち、モニタ制御部１４は、第１ステータス信号がローレベルからハイレベルに変化したこと（信号レベルの立ち上がり）を検出すると、ＬＳＩ１の内部信号をモニタ信号として取得することを停止する。
【００７１】
なお、時刻ｔ６は、時刻ｔ５と実質的に同じタイミングである。すなわち、「トリガ条件」が満足されたタイミングと、「第２ステータス信号」の信号レベルが変化するタイミングとは、実質的に同じタイミングである。また、時刻ｔ７は、時刻ｔ６と実質的に同じタイミングである。従って、「第２ステータス信号」の信号レベルが変化したタイミングと、「プログラムの実行」が停止するタイミングは、実質的に同じタイミングである。
【００７２】
また、時刻ｔ８は、時刻ｔ７と実質的に同じタイミングである。すなわち、「第１ステータス信号」の信号レベルが変化するタイミングと、「プログラムの実行」が停止するタイミングとは実質的に同じタイミングである。同様に、時刻ｔ９は、時刻ｔ８と実質的に同じタイミングである。すなわち、「モニタ信号の取得」が停止するタイミングと、「第１ステータス信号」の信号レベルが変化するタイミングとは、実質的に同じタイミングである。従って、「プログラムの実行」が停止するタイミングと、「モニタ信号の取得」が停止するタイミングとは、実質的に同じタイミングである。
【００７３】
時刻ｔ１０では、第１の実施の形態と同様に、「信号の読み出し」が行われる。すなわち、デバッガーからモニタ部４及びＣＰＵ３に対して、これらに蓄積された信号を読み出すためのコマンド（リードコマンド）が与えられる。そして、モニタ部４のトレースメモリ部１２に蓄積されたモニタ信号と、ＣＰＵ３に含まれる各種レジスタに蓄積された信号とは、外部計算装置２に読み込まれる。そして、デバッガーによる処理によって、外部計算装置２に接続される表示部２０にモニタ信号の波形が表示される。
【００７４】
上述した説明から明らかなように、モニタ制御部１４は、取得するモニタ信号がトリガ条件を満足したとき、第２ステータス信号をローレベルからハイレベルに変更する。すなわち、モニタ制御部１４は、第２ステータス信号の信号レベルを変化させることで、モニタ信号がトリガ条件を満足したことをデバッグ制御部１０に連絡する。
【００７５】
ＣＰＵ３のデバッグ制御部１０は、モニタ部４のモニタ制御部１４から与えられる第２ステータス信号の信号レベルの立ち上がりに基づいて、ＣＰＵ３によるプログラムの実行を停止させる。上述のように、第２ステータス信号の信号レベルの立ち上がり（信号レベルの変化）は、ＣＰＵ３によるプログラムの実行を停止させるためのブレーク信号である。
【００７６】
このように本実施の形態では、モニタ信号がトリガ条件を満足したタイミングに同期して、ＣＰＵ３によるプログラムの実行が停止する。そして、第１の実施の形態と同様に、ＣＰＵ３によるプログラムの実行の停止に同期して、モニタ部４によるＬＳＩ１の内部信号をモニタ信号として取得する動作が停止する。従って、取得するモニタ信号の変化に起因してプログラムの実行及びモニタ信号の取得を停止させることができる。これによって、特にハードウェアの動作解析を効率的に行うことができる。
【００７７】
本発明の技術的範囲は、上述の実施の形態に限定されない。すなわち、モニタ開始信号やモニタ停止信号は、２ビット以上のコマンド信号であっても良い。同様に、ブレーク信号も、２ビット以上のコマンド信号であってもよい。
【００７８】
また、言うまでもなく、上述の実施例にように１つのＣＰＵでＬＳＩを構成する必要はなく、複数のＣＰＵを用いてＬＳＩを構成してもよい。
【図面の簡単な説明】
【００７９】
【図１】第１の実施の形態にかかるＬＳＩ１の構成を説明するための図である。
【図２】デバッガーに関する概略的な説明図である。
【図３】ＬＳＩ１の動作を説明するためのタイミングチャートである。
【図４】図３の時刻ｔ１で行われる処理に関する概略的な説明図である。
【図５】図３の時刻ｔ２で行われる処理に関する概略的な説明図である。
【図６】図３の時刻ｔ４で行われる処理に関する概略的な説明図である。
【図７】図３の時刻ｔ５で行われる処理に関する概略的な説明図である。
【図８】第２の実施の形態にかかるＬＳＩ５０の構成を説明するための図である。
【図９】ＬＳＩ５０の動作を説明するためのタイミングチャートである。
【図１０】図９の時刻ｔ６で行われる処理に関する概略的な説明図である。
【符号の説明】
【００８０】
１    半導体集積回路
２    外部計算装置
３    ＣＰＵ
４    モニタ部
５    周辺回路
６    メモリ部
７    システムバス
８    通信バス
９    通信ポート
１０    デバッグ制御部
１１    モニタＩ／Ｆ
１２    トレースメモリ部
１３    通信Ｉ／Ｆ
１４    モニタ制御部
ＭＳ１-ＭＳ３    モニタ信号
【図１】
2008071227.tif 000003
【図２】
2008071227.tif 000004
【図３】
2008071227.tif 000005
【図４】
2008071227.tif 000006
【図５】
2008071227.tif 000007
【図６】
2008071227.tif 000008
【図７】
2008071227.tif 000009
【図８】
2008071227.tif 000010
【図９】
2008071227.tif 000011
【図１０】
2008071227.tif 000012