(57)【要約】【課題】複数のＣＰＵを備えた半導体集積回路装置において、回路構成を複雑にせずにシステムクロックが高速になっても動作するデバッグ機能を提供する。【解決手段】それぞれデバッグ機能を有する３以上のＣＰＵと、３以上のＣＰＵのうちデバッグの観測対象とするあらかじめ指定された被観測ＣＰＵのデバッグ観測情報の取得を、デバッグ観測情報の観測タイミング毎に、前記３以上のＣＰＵのうち前記被観測ＣＰＵ以外のＣＰＵを順次観測ＣＰＵに指定して、前記観測ＣＰＵに被観測ＣＰＵが出力するデバッグ観測情報の取得を行わせる観測ＣＰＵ制御部と、を備える。【選択図】図１
2011118823.tif 000002
【特許請求の範囲】
【請求項１】
それぞれデバッグ機能を有する３以上のＣＰＵと、
前記３以上のＣＰＵのうちデバッグの観測対象とするあらかじめ指定された被観測ＣＰＵのデバッグ観測情報の取得を、前記デバッグ観測情報の観測タイミング毎に、前記３以上のＣＰＵのうち前記被観測ＣＰＵ以外のＣＰＵを順次観測ＣＰＵに指定して、前記観測ＣＰＵに被観測ＣＰＵが出力するデバッグ観測情報の取得を行わせる観測ＣＰＵ制御部と、
を備えることを特徴とする半導体集積回路装置。
【請求項２】
前記観測ＣＰＵ制御部は、前記被観測ＣＰＵ以外の前記ＣＰＵの中から前記観測ＣＰＵを各ＣＰＵの状態と各ＣＰＵの観測データ処理に要する処理時間とに基づいて順次指定することを特徴とする請求項１記載の半導体集積回路装置。
【請求項３】
前記観測ＣＰＵ制御部は、前記被観測ＣＰＵ以外の前記ＣＰＵについて、
各ＣＰＵの処理時間をそれぞれ記憶する処理時間保持部と、各ＣＰＵの状態を判定する状態判定部と、を備えることを特徴とする請求項２記載の半導体集積回路装置。
【請求項４】
前記３以上のＣＰＵは、それぞれ、ＣＰＵコアと、デバッグコントロールユニットと、を備え、
前記被観測ＣＰＵのデバッグコントロールユニットは、対応するＣＰＵの内部信号を外部に出力し、
前記観測ＣＰＵに指定されるＣＰＵのデバッグコントロールユニットは、前記外部に出力された内部信号を取得してメモリに記憶させることを特徴とする請求項１乃至３いずれか１項記載の半導体集積回路装置。
【請求項５】
前記ＣＰＵ毎に前記メモリを備えると共に、
前記３以上のＣＰＵ間を相互に接続する信号観測用バスをさらに備え、
前記内部信号が前記信号観測用バスを経由して前記被観測ＣＰＵから前記観測ＣＰＵに送られ、前期観測ＣＰＵに対応する前記メモリに記憶されることを特徴とする請求項４記載の半導体集積回路装置。
【請求項６】
前記各ＣＰＵコアのブログラムの実行と停止を制御するシステムデバッグ制御部と、
前記各デバッグコントロールユニットと前記システムデバッグ制御部とに接続され、対応するデバックコントロールユニットを介して各ＣＰＵコアのプログラムの実行と停止の同期を取るための同期信号を転送するデバッグ用同期バスと、
をさらに備えることを特徴とする請求項４又は５記載の半導体集積回路装置。
【請求項７】
前記各ＣＰＵが、それぞれ取得した前記デバッグ観測情報を記憶するメモリをＣＰＵ毎に設けると共に、
前記観測ＣＰＵ制御部は、前記各メモリのメモリ容量と使用済み容量に応じてメモリ毎に前記デバッグ観測情報を記憶させることが可能な回数を保持する残り観測回数保持部を備え、
前記観測ＣＰＵ制御部は、前記各ＣＰＵの状態と処理時間に加えて各メモリの残り観測回数に基づいて、前記観測ＣＰＵを指定することを特徴とする請求項２又は３記載の半導体集積回路装置。
【請求項８】
前記３以上のＣＰＵが全体でマルチプロセッサシステムを構成していることを特徴とする請求項１乃至７いずれか１項記載の半導体集積回路装置。
【請求項９】
前記被観測ＣＰＵは通常動作時には外部に出力しないデバッグ観測情報を当該ＣＰＵの動作を停止させずにシステムクロック毎に外部へ出力するデバッグ機能を備え、
前記観測ＣＰＵに指定される前記各ＣＰＵは、前記被観測ＣＰＵの動作を停止させずに前記デバッグ観測情報を取得して保存させるデバッグ機能を備えていることを特徴とする請求項１乃至８いずれか１項記載の半導体集積回路装置。
【請求項１０】
請求項１乃至９いずれか１項記載の半導体集積回路装置と、
前記半導体集積回路装置に接続され、前記半導体集積回路装置に対してデバッグ条件を設定してデバッグを開始させると共に、デバッグ終了後に前記デバッグ観測情報を前記半導体集積回路装置から取得して表示させるデバッグコントローラと、
を含むことを特徴とする半導体集積回路装置のデバッグ装置。
【請求項１１】
マルチプロセッサシステムのデバッグ装置であって、
前記マルチプロセッサシステムを構成する複数のＣＰＵのうち、デバッグの観測対象とする被観測ＣＰＵについてデバッグ観測情報を外部に出力するように設定すると共に、残る複数のＣＰＵをそれぞれ前記デバッグ観測情報を取得して保存することができる観測ＣＰＵ候補として設定する手段と、
前記被観測ＣＰＵがデバッグ観測情報を外部に出力する毎に、前記複数の観測ＣＰＵ候補のうち、前記デバッグ観測情報の取得と保存を担当する観測ＣＰＵを、各観測ＣＰＵ候補の状態と前記デバッグ観測情報の保存に要する処理時間とに基づいて指定する観測ＣＰＵ指定手段と、
前記複数の観測ＣＰＵ候補が前記観測ＣＰＵとして保存したデバッグ観測情報を整理して表示する手段と、
を備えることを特徴とするマルチプロセッサシステムのデバッグ装置。
【請求項１２】
前記観測ＣＰＵ指定手段は、前記被観測ＣＰＵがデバッグ観測情報を外部に出力する毎に、前記複数の観測ＣＰＵ候補のうちアイドル状態になる観測ＣＰＵ候補が、一つである場合には当該観測ＣＰＵ候補を前記観測ＣＰＵとして指定し、複数である場合には当該複数の観測ＣＰＵ候補のうち前記デバッグ観測情報の保存に要する処理時間が最も速い観測ＣＰＵ候補を前記観測ＣＰＵとして指定することを特徴とする請求項１１記載のマルチプロセッサシステムのデバッグ装置。
【請求項１３】
マルチプロセッサシステムを内蔵する半導体集積回路装置のデバッグ方法であって、
前記マルチプロセッサシステムを構成する複数のＣＰＵのうち、デバッグ対象とする被観測ＣＰＵを指定すると共に、残る複数のＣＰＵをそれぞれ前記被観測ＣＰＵが出力するデバッグ観測情報を取得して保存することができる観測ＣＰＵ候補として設定する初期設定ステップと、
前記被観測ＣＰＵがデバッグ観測情報を外部に出力する毎に、前記複数の観測ＣＰＵ候補のうち、前記デバッグ観測情報の取得と保存を担当するＣＰＵを、各観測ＣＰＵ候補の状態と前記デバッグ観測情報の保存に要する処理時間とに基づいて観測ＣＰＵとして指定し、前記観測ＣＰＵが前記デバッグ観測情報を保存するデバッグ実行ステップと、
前記各観測ＣＰＵ候補が前記観測ＣＰＵとして保存したデバッグ観測情報を整理して表示するデバッグ結果出力ステップと、
を含むことを特徴とする半導体集積回路装置のデバッグ方法。
【請求項１４】
前記デバッグ実行ステップでは、
前記被観測ＣＰＵが前記デバッグ観測情報を出力する毎に、
前記複数の観測ＣＰＵ候補のうちアイドル状態になる観測ＣＰＵ候補が一つである場合には当該観測ＣＰＵ候補を観測ＣＰＵとして指定し、
アイドル状態になる観測ＣＰＵ候補が複数である場合には当該複数の観測ＣＰＵ候補のうち最も前記処理時間が速い観測ＣＰＵ候補を観測ＣＰＵとして指定する
ことを特徴とする請求項１３記載の半導体集積回路装置のデバッグ方法。
【請求項１５】
前記半導体集積回路装置は前記複数のＣＰＵにそれぞれ対応する複数のメモリを備え、
前記デバッグ実行ステップにおいて、前記観測ＣＰＵとして指定されたＣＰＵは前記複数のメモリのうち対応するメモリに前記デバッグ観測情報を保存し、
前記被観測ＣＰＵが前記デバッグ観測情報を出力する毎に、アイドル状態になる観測ＣＰＵ候補が複数であり、かつ、前記処理時間でも優劣がつけられない場合は、前記デバッグ観測情報を保存するメモリの残り記憶容量が最も多い前記観測ＣＰＵ候補を前記観測ＣＰＵとして指定することを特徴とする請求項１４記載の半導体集積回路装置のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置、そのデバッグ装置及びデバッグ方法、並びに、マルチプロセッサシステムのデバッグ方法に関する。特に、マルチプロセッサシステムを構成する複数のＣＰＵを内蔵する半導体集積回路装置のデバッグに関する。
【背景技術】
【０００２】
複数のＣＰＵを含む半導体集積回路装置において、半導体集積回路装置を実装したシステム（以降、ターゲットシステムと称す）の高機能化による回路規模の増大やモバイル分野等における省電力、高速化に伴い、複雑なデバッグ環境が必要となってきている。
【０００３】
その流れの中で半導体集積回路装置に実装されるＣＰＵ毎にデバッグ用の専用回路（以降、Ｄｅｂｕｇ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：ＤＣＵと称す）を持つことにより、効率良いデバッグを行なうことができる。
【０００４】
特許文献１には、複数のＣＰＵを含む半導体集積回路装置において、ＣＰＵ毎にデバッグ用のＤＣＵを設けるものが記載されている。図１０は、従来の半導体集積回路装置のデバッグ装置の構成図である。
【０００５】
このデバッグ装置は、マルチプロセッサ構成のＬＳＩをデバッグするシステムであり、ＬＳＩ１００とデバッグＰＣ１９０を有している。ＬＳＩ１００とデバッグＰＣ１９０は、デバッグインタフェース（以降、デバッグＩ／Ｆと称す）１４０を介して接続されている。デバッグＩ／Ｆ１４０は、デバッグ専用のインタフェースであり、例えば、ＪＴＡＧなどの低速なシリアル・インタフェースである。
【０００６】
デバッグＰＣ１９０は、例えば、パーソナルコンピュータ等のコンピュータにより構成されている。デバッグＰＣ１９０は、デバッグ制御用のプログラムからなるデバッガ１９１を有しており、ユーザがデバッガ１９１を操作することによりＬＳＩ１００のデバッグが行われる。デバッグＰＣ１９０には、デバッガ用のプログラムがメモリ等に格納されており、このプログラムをＣＰＵが実行することにより、デバッガ１９１の機能が実現される。例えば、デバッガ１９１は、マウス等のユーザインタフェースを介したユーザの操作に応じて、ブレーク条件やトレースポイントの設定、実行開始などのデバッグ用のコマンドをＬＳＩ１００へ出力する。
【０００７】
ＬＳＩ１００は、マルチプロセッサ構成のＬＳＩであり、複数のサブシステム１１０ａ〜１１０ｃ、メモリ１２０及びシステムデバッグ制御部１５０を有している。
【０００８】
サブシステム１１０（サブシステム１１０ａ〜１１０ｃのいずれか）は、単体で特定の機能を有し、それぞれ独立して並列に動作することができる。メモリ１２０は、各サブシステム１１０の動作に必要なプログラムやデータを格納するメモリであり、複数のサブシステム１１０でデータ等を共有する共有メモリである。システムデバッグ制御部１５０は、全てのサブシステム１１０に対してデバッグ制御を行う。システムデバッグ制御部１５０は、デバッグ制御として、ブレーク発生時の同期などのブレーク制御や、各サブシステムからのトレースデータの収集などのトレース制御などを行う。
【０００９】
サブシステム１１０ａ〜１１０ｃのそれぞれには、ＣＰＵコア１１１ａ〜１１１ｃとＤＣＵ（Ｄｅｂｕｇ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：デバッグ制御ユニット）１１２ａ〜１１２ｃ、周辺デバイス１１３ａ〜１１３ｃが設けられている。ＣＰＵコア１１１（ＣＰＵコア１１１ａ〜１１１ｃのいずれか）は、プログラムをメモリ１２０から取得し、取得したプログラムを実行するプログラム実行部である。ＤＣＵ１１２（ＤＣＵ１１２ａ〜１１２ｃのいずれか）は、同じサブシステム内のＣＰＵコア１１１のデバッグ制御を行うＣＰＵデバッグ制御部である。ＤＣＵ１１２は、デバッグ制御として、ブレーク条件の設定やブレーク検出などのブレーク制御、トレースポイントの設定やトレースデータの採取などのトレース制御を行う。周辺デバイス１１３（周辺デバイス１１３ａ〜１１３ｃのいずれか）は、ＤＭＡやキャッシュメモリ等であり、ＣＰＵコア１１１の制御のもとでサブシステム１１０の種々の動作を補助する補助機能部である。周辺デバイス１１３は、ＣＰＵコア１１１と並列に独立して動作し、メモリ１２０にアクセスしたり、サブシステム１１０やＣＰＵコア１１１の内部情報等を更新する。
【００１０】
尚、図１０は、デバッグ時に使用されるバスの接続関係を示しており、通常動作時に使用される接続関係は省略している。
【００１１】
図１０に示されるように、ＬＳＩ１００には、デバッグ時に使用されるバスとして、デバッグ用同期バス１３１、デバッグ用外部バス１３２及びデバッグ用内部バス１３３が設けられている。
【００１２】
デバッグ用同期バス１３１には、ＤＣＵ１１２ａ〜１１２ｃ、周辺デバイス１１３ａ〜１１３ｃ、システムデバッグ制御部１５０のそれぞれが共通に接続されている。デバッグ用同期バス１３１は、各サブシステム１１０におけるブレーク発生時の停止や、停止後の再開の同期をとるための同期信号を転送するためのバスである。デバッグ用同期バス１３１は、システムバスと同様に高速バスである。
【００１３】
デバッグ用外部バス１３２には、ＤＣＵ１１２ａ〜１１２ｃ、システムデバッグ制御部１５０のそれぞれが共通に接続されるとともに、デバッグＩ／Ｆ１４０にも接続されている。デバッグ用外部バス１３２は、デバッグＩ／Ｆ１４０を介して、デバッグＰＣ１９０と、ＤＣＵ１１２又はシステムデバッグ制御部１５０との間で、デバッグ制御用のコマンドやトレースデータ等を転送するためのバスである。デバッグ用外部バス１３２は、デバッグＩ／Ｆ１４０の速度に合わせて低速バスである。
【００１４】
デバッグ用内部バス１３３には、ＤＣＵ１１２ａ〜１１２ｃ、システムデバッグ制御部１５０のそれぞれが共通に接続されている。デバッグ用内部バス１３３は、各ＤＣＵ１１２のトレースデータをシステムデバッグ制御部１５０に転送するためのバスである。デバッグ用内部バス１３３は、ＤＣＵ１１２からトレースデータをできるだけ早く収集するため、例えば、システムバスと同様に高速バスである。
【００１５】
図１１は、従来のＤＣＵ内ＣＰＵトレース制御部の構成図である。サブシステム１１０は、上記のとおり、ＣＰＵコア１１１、ＤＣＵ１１２、周辺デバイス１１３を有している。ＣＰＵコア１１１とＤＣＵ１１２は、プロセッサ１１を構成している。すなわち、サブシステム１１０は、プロセッサ１１と周辺デバイス１１３から構成されている。ＤＣＵ１１２は、図に示されるように、ＣＰＵブレーク制御部２１０、ＣＰＵトレース制御部２２０を有している。
【００１６】
ＣＰＵブレーク制御部２１０は、デバッグモードがブレークモードもしくはオンザフライトレースモードの場合に、１つのＣＰＵコア１１１のブレークに関する制御を行う。ＣＰＵブレーク制御部２１０は、ブレーク条件設定部２１１、ブレーク検出部２１２、停止／再開部２１３を有している。
【００１７】
ブレーク条件設定部２１１は、デバッグＰＣ１９０からの要求にしたがい、ＣＰＵコア１１１にブレーク条件を設定する。このブレーク条件は、ＣＰＵコア１１１のプログラムを一時停止し、通常状態（ＣＰＵコア１１１がプログラムを実行する状態）からブレーク状態（デバッグＰＣ１９０がＣＰＵコア１１１の内部情報を観測できる状態）もしくはトレース状態（ＤＣＵ１１２がＣＰＵコア１１１のトレースデータを採取する状態）に切り替える条件である。例えば、ブレーク条件は、特定のプログラム命令を実行した時や、メモリ１２０の特定のアドレスにアクセスした時などである。
【００１８】
ブレーク検出部２１２は、ＣＰＵコア１１１によるプログラムの実行が設定されたブレーク条件と一致したこと、すなわち、ＣＰＵコア１１１でブレークが発生したことを検出する。ブレーク検出部２１２は、さらに、ブレークの検出をシステムデバッグ制御部１５０へ通知する。
【００１９】
停止／再開部２１３は、システムデバッグ制御部１５０からの要求にしたがい、ＣＰＵコア１１１によるプログラムの実行の停止や再開を制御する。すなわち、停止／再開部２１３は、ＣＰＵコア１１１の動作状態を通常状態からブレーク状態もしくはトレース状態へ切り替えたり、ブレーク状態もしくはトレース状態から通常状態へ切り替えたりする。
【００２０】
ＣＰＵトレース制御部２２０は、デバッグモードがオンザフライトレースモードの場合に、１つのＣＰＵコア１１１のトレースに関する制御を行う。ＣＰＵトレース制御部２２０は、トレースポイント設定部２２１、トレースデータ採取部２２２、トレースデータ保持部２２３を有している。
【００２１】
トレースポイント設定部２２１は、デバッグＰＣ１９０からの要求にしたがい、ＣＰＵコア１１１にトレースポイントを設定する。このトレースポイントは、トレースデータとして採取したいデータを示している。例えば、トレースポイントは、サブシステム１１０内の特定のレジスタや、メモリ１２０の特定のアドレスなどである。
トレースデータ採取部２２２は、ブレークの検出時（トレース状態に遷移した時）、設定されたトレースポイントのデータをトレースデータとして採取する。トレースデータ保持部２２３は、採取したトレースデータを一時的に保持する。例えば、トレースデータ保持部２２３には、トレースデータを１つ保持できる。
【００２２】
周辺デバイス１１３は、図に示されるように、停止／再開部３１０と内部回路３２０を有している。内部回路３２０は、周辺デバイス１１３の機能を実行する回路である。停止／再開部３１０は、システムデバッグ制御部１５０からの要求にしたがい、内部回路３２０の動作の停止や再開を制御する。すなわち、停止／再開部３１０は、内部回路３２０の動作状態を通常状態からブレーク状態もしくはトレース状態へ切り替えたり、ブレーク状態もしくはトレース状態から通常状態へ切り替えたりする。
【００２３】
図１２は、従来のシステムデバッグ制御部の構成図である。図１２に示されるように、システムデバッグ制御部１５０は、システムブレーク制御部４１０とシステムトレース制御部４２０を有している。
【００２４】
システムブレーク制御部４１０は、デバッグモードがブレークモードもしくはオンザフライトレースモードの場合に、全てのＣＰＵコア１１１に対しブレークに関する制御を行う。システムブレーク制御部４１０は、同期情報格納部４１１、ブレーク選択部４１２、再開選択部４１３を有している。
【００２５】
同期情報格納部４１１は、デバッグＰＣ１９０からの要求にしたがい、ブレーク発生時や再開時に同期させるサブシステム１１０（ＣＰＵコア１１１や周辺デバイス１１３）を示す同期情報を格納する。ブレーク選択部４１２は、ＤＣＵ１１２からブレーク通知を受けたとき、すなわち、ブレーク発生時、同期情報格納部４１１の同期情報に基づき、同期して停止させるサブシステム１１０（ＣＰＵコア１１１や周辺デバイス１１３）を選択する。つまり、ブレーク選択部４１２は、ＤＣＵ１１２のブレーク検出部２１２によるブレークの検出に応じて、同期情報格納部４１１により選択されたサブシステム１１０の動作を停止させる停止制御部である。すなわち、ブレーク選択部４１２は、各サブシステム１１０が通常状態からブレーク状態もしくはトレース状態へ切り替わるタイミングを同期させる。
【００２６】
再開選択部４１３は、ブレーク発生後の再開時に、デバッグＰＣ１９０からの要求と同期情報格納部４１１の同期情報に基づき、同期して再開させるサブシステム１１０（ＣＰＵコア１１１や周辺デバイス１１３）を選択する。つまり、再開選択部４１３は、ブレーク選択部４１２によるサブシステム１１０の動作停止後、デバッグＰＣ１９０からの要求に応じて、同期情報格納部４１１により選択されたサブシステム１１０の動作を再開させる再開制御部である。すなわち、再開選択部４１３は、各サブシステム１１０がブレーク状態から通常状態へ切り替わるタイミングを同期させる。
【００２７】
システムトレース制御部４２０は、デバッグモードがオンザフライトレースモードの場合に、全てのＣＰＵコア１１１に対しトレースに関する制御を行う。システムトレース制御部４２０は、トレースデータ収集部４２１、トレースデータ格納部４２２及びトレースデータ出力部４２３を有している。
【００２８】
トレースデータ収集部４２１は、ブレーク発生時、各ＤＣＵ１１２に保持されているトレースデータを収集する。すなわち、トレースデータ収集部４２１は、ブレーク選択部４１２によるサブシステム１１０の動作停止後、停止しトレース状態となっているサブシステム１１０のＤＣＵ１１２から複数のトレースデータを収集する。
【００２９】
トレースデータ格納部４２２は、トレースデータ収集部４２１が収集した複数のトレースデータを格納する。トレースデータ格納部４２２は、デバッグＰＣ１９０によるトレースデータの取得が完了するまでの間、トレースデータを上書きすることなく保持できる程度のメモリ量を有している。トレースデータ格納部４２２は、システムデバッグ制御部１５０の内部に設けられたメモリでもよいし、システムデバッグ制御部１５０の外部のメモリ１２０等であってもよい。トレースデータ出力部４２３は、トレースデータ格納部４２２に格納された複数のトレースデータをまとめて一度に、デバッグＰＣ１９０へ出力する。
【００３０】
特許文献１において、システムトレース制御部４２０とＣＰＵトレース制御部２２０が
ＣＰＵの動作履歴を残すための信号（以降、観測対象の信号と称す）を観測する機能（以降、この機能を持った装置を観測装置と称す）を受け持っている。また、トレースポイント設定部２２１により設定されるトレースポイントが観測対象の信号に相当する。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】特開２００７−１２２５４３号公報
【発明の概要】
【発明が解決しようとする課題】
【００３２】
以下の分析は本発明により与えられる。規模の大きな複数のＣＰＵを含む半導体集積回路装置のデバッグをする場合には、先に機能ブロック毎に割り振られたＣＰＵのデバッグを行い、最後に全機能ブロックを統合して複数ＣＰＵのデバッグを行なう。ＣＰＵのデバッグにおいて、信号の変化点（例えばクロック）単位で観測できることが望まれている。
【００３３】
しかし、特許文献１に記載された従来技術において、観測対象の信号の変化点全てを記録しようとする場合、観測装置を観測対象の信号の変化頻度と同等か、観測対象の信号の変化頻度より速く動作させる必要があるため、高速で動作させることが困難である。
【００３４】
また、観測結果を記憶する極めて高速な専用メモリが新たに必要になる。
【課題を解決するための手段】
【００３５】
本発明の第１の側面による半導体集積回路装置は、それぞれデバッグ機能を有する３以上のＣＰＵと、前記３以上のＣＰＵのうちデバッグの観測対象とするあらかじめ指定された被観測ＣＰＵのデバッグ観測情報の取得を前記デバッグ観測情報の観測タイミング毎に前記３以上のＣＰＵのうち前記被観測ＣＰＵ以外のＣＰＵを順次観測ＣＰＵに指定して前記観測ＣＰＵに被観測ＣＰＵが出力するデバッグ観測情報の取得を行わせる観測ＣＰＵ制御部と、を備える。
【００３６】
本発明の第２の側面による半導体集積回路装置のデバッグ装置は、前記半導体集積回路装置と、前記半導体集積回路装置に接続され、前記半導体集積回路装置に対してデバッグ条件を設定してデバッグを開始させると共に、デバッグ終了後に前記デバッグ観測情報を前記半導体集積回路装置から取得して表示させるデバッグコントローラと、を含む。
【００３７】
本発明の第３の側面によるマルチプロセッサシステムのデバッグ装置は、マルチプロセッサシステムを構成する複数のＣＰＵのうち、デバッグの観測対象とする被観測ＣＰＵについてデバッグ観測情報を外部に出力するように設定すると共に、残る複数のＣＰＵをそれぞれ前記デバッグ観測情報を取得して保存することができる観測ＣＰＵ候補として設定する手段と、前記被観測ＣＰＵがデバッグ観測情報を外部に出力する毎に、前記複数の観測ＣＰＵ候補のうち、前記デバッグ観測情報の取得と保存を担当する観測ＣＰＵを、各観測ＣＰＵ候補の状態と前記デバッグ観測情報の保存に要する処理時間とに基づいて指定する観測ＣＰＵ指定手段と、前記複数の観測ＣＰＵ候補が前記観測ＣＰＵとして保存したデバッグ観測情報を整理して表示する手段と、を備える。
【００３８】
本発明の第４の側面による半導体集積回路装置のデバッグ方法は、マルチプロセッサシステムを内蔵する半導体集積回路装置のデバッグ方法であって、前記マルチプロセッサシステムを構成する複数のＣＰＵのうち、デバッグ対象とする被観測ＣＰＵを指定すると共に、残る複数のＣＰＵをそれぞれ前記被観測ＣＰＵが出力するデバッグ観測情報を取得して保存することができる観測ＣＰＵ候補として設定する初期設定ステップと、前記被観測ＣＰＵがデバッグ観測情報を外部に出力する毎に、前記複数の観測ＣＰＵ候補のうち、前記デバッグ観測情報の取得と保存を担当するＣＰＵを、各観測ＣＰＵ候補の状態と前記デバッグ観測情報の保存に要する処理時間とに基づいて観測ＣＰＵとして指定し、観測ＣＰＵが前記デバッグ観測情報を保存するデバッグ実行ステップと、前記各観測ＣＰＵ候補が前記観測ＣＰＵとして保存したデバッグ観測情報を整理して表示するデバッグ結果出力ステップと、を含む。
【発明の効果】
【００３９】
本発明によれば、複数のＣＰＵのうち、デバッグの観測対象となる観測ＣＰＵのデバッグ観測情報の取得を残りの複数のＣＰＵが順次分担して行うことができるので、デバッグ観測情報を高速に取得する回路の負担を軽減することができる。デバッグ専用の高速メモリを新たに設ける必要もない。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施例による半導体集積回路装置のデバッグ装置全体のシステム構成図である。
【図２】一実施例におけるＣＰＵサブシステムのブロック図である。
【図３】一実施例における信号観測準備処理のフローチャートである。
【図４】一実施例における信号観測実行処理のフローチャートである。
【図５】一実施例における観測ＣＰＵの信号観測データ保存処理のフローチャートである。
【図６】一実施例における観測ＣＰＵ制御部の観測ＣＰＵ選択処理のフローチャートである。
【図７】一実施例における状態判定部によるＣＰＵの状態判定処理のフローチャートである。
【図８】一実施例において信号観測実行中のＣＰＵの状態遷移を示す図である。
【図９】一実施例において観測ＣＰＵ制御部の動作アルゴリズムを説明する図である。
【図１０】特許文献１に記載されている従来の半導体集積回路装置のデバッグ装置の構成図である。
【図１１】特許文献１に記載されている従来のサブシステムの構成図である。
【図１２】特許文献１に記載されている従来のシステムデバッグ制御部の構成図である。
【発明を実施するための形態】
【００４１】
本発明の実施形態について、詳細な実施例の説明に入る前に概要を説明しておく。なお、概要の説明において引用する図面及び図面の符号は実施形態の一例として示すものであり、それにより本発明による実施形態のバリエーションを制限するものではない。
【００４２】
まず、本明細書全体における用語の定義をしておく。本明細書において、「被観測ＣＰＵ」とは、半導体集積回路装置に含まれる複数のＣＰＵのうち、デバッグ対象となるＣＰＵ、特にＣＰＵコアのことをいう。また、「観測ＣＰＵ」とは、半導体集積回路装置に含まれる複数のＣＰＵのうち、「被観測ＣＰＵ」が出力するデバッグ観測情報の取得を行うＣＰＵ、特にＣＰＵコアのことをいう。さらに、「観測ＣＰＵ候補」とは、半導体集積回路装置に含まれる複数のＣＰＵのうち、「観測ＣＰＵ」として指定することが可能なＣＰＵをいう。すなわち、複数の「観測ＣＰＵ候補」の中から選択された「観測ＣＰＵ」が「被観測ＣＰＵ」が出力するデバッグ観測情報の取得を行う。
【００４３】
図１に一例を示すように、本発明による一実施形態の半導体集積回路装置１０は、それぞれデバッグ機能を有する３以上のＣＰＵ（１７０ａ〜１７０ｄ）と、３以上のＣＰＵ（１７０ａ〜１７０ｄ）のうちデバッグの観測対象とするあらかじめ指定された被観測ＣＰＵ１７０ａのデバッグ観測情報の取得を、デバッグ観測情報の観測タイミング毎に、３以上のＣＰＵのうち被観測ＣＰＵ１７０ａ以外のＣＰＵ（１７０ｂ〜１７０ｄ）を順次観測ＣＰＵに指定して、観測ＣＰＵに被観測ＣＰＵＣＰＵ１７０ａが出力するデバッグ観測情報の取得を行わせる観測ＣＰＵ制御部１８０と、を備える。すなわち、デバッグ対象とする被観測ＣＰＵがデバッグ時にデバッグ観測情報を外部に出力するデバッグ機能を備えている。また、観測ＣＰＵは、被観測ＣＰＵが出力するデバッグ観測情報を取得するデバッグ機能を備えている。それにより、観測ＣＰＵ制御部により複数のＣＰＵのうち、被観測ＣＰＵ以外のＣＰＵを順次観測ＣＰＵに指定することにより被観測ＣＰＵが出力するデバッグ観測情報を観測ＣＰＵとして指定されたＣＰＵにより取得することができる。したがって、被観測ＣＰＵの動作を停止させることなく、高速にデバッグ観測情報を取得することができる。
【００４４】
また、観測ＣＰＵ制御部１８０は、被観測ＣＰＵ以外のＣＰＵ（１７０ｂ〜１７０ｄ）の中から観測ＣＰＵを各ＣＰＵの状態（例えばステートマシン）と各ＣＰＵの観測データ処理に要する処理時間（例えば取得したデバッグ観測情報のメモリへの保存に要するクロックサイクル数）とに基づいて順次指定することが好ましい。そのようにすれば、複数のＣＰＵ（１７０ｂ〜１７０ｄ）の性能が異なる場合であっても、観測ＣＰＵの選択を好適に行うことができる。
【００４５】
観測ＣＰＵ制御部１８０は、被観測ＣＰＵ以外のＣＰＵについて、各ＣＰＵの処理時間をそれぞれ記憶する処理時間保持部１８３と、各ＣＰＵの状態を判定する状態判定部１８１と、を備えるものであってもよい。処理時間保持部１８３は各ＣＰＵの処理時間として取得したデバッグ観測情報のメモリへの保存に要するクロックサイクル数を用いるものであってもよい。そのようにすれば、ＣＰＵがアイドル状態になる状態判定にも用いることもできる。また、状態判定部１８１は、ＣＰＵのステートマシンＳＴＭをＣＰＵの状態判定に用いるものであってもよい。
【００４６】
図２に一例を示すように、上記３以上のＣＰＵ（１７０ａ〜１７０ｄ）は、それぞれ、ＣＰＵコア１１４と、デバッグコントロールユニット１６１と、を備え、デバッグ対象とするＣＰＵ１７０ａのデバッグコントロールユニット１６１ａは、対応するＣＰＵ１７０ａの内部信号を外部に出力し、デバッグ観測情報の取得に指定されたＣＰＵ（１７０ｂ〜１７０ｄ）のデバッグコントロールユニット（１６１ｂ〜ｄ）は、外部に出力された内部信号を取得してメモリに記憶させるものであってもよい。
【００４７】
さらに、ＣＰＵ毎にメモリ（１２１ａ〜ｄ）を備えると共に、３以上のＣＰＵ（１２１ａ〜ｄ）間を相互に接続する信号観測用バス１３０をさらに備え、（ＣＰＵ１７０ａの）内部信号が信号観測用バス１３０を経由して被観測ＣＰＵ１７０ａから観測ＣＰＵ（１７０ｂ〜ｄのいずれか）に送られ、観測ＣＰＵに対応するメモリ１２１に記憶されるものとしてもよい。メモリがＣＰＵ毎に設けられているものであれば、デバッグ専用に高速なメモリを設ける必要もない。
【００４８】
各ＣＰＵコアのブログラムの実行と停止を制御するシステムデバッグ制御部１６２と、各デバッグコントロールユニット（１６１ａ〜１６１ｄ）とシステムデバッグ制御部１６２とに接続され、対応するデバックコントロールユニット（１６１ａ〜１６１ｄ）を介して各ＣＰＵコア（１１４ａ〜１１４ｄ）のプログラムの実行と停止の同期を取るための同期信号を転送するデバッグ用同期バス１３５と、をさらに備えることが好ましい。複数のＣＰＵの同期を取ってプログラムの実行と停止を行うことにより、観測ＣＰＵの切り替えと、観測ＣＰＵによるデバッグ観測情報の取得が容易に行えるようになる。
【００４９】
また、各ＣＰＵ（１７０ａ〜１７０ｄ）が、それぞれ取得したデバッグ観測情報を記憶するメモリ（１２１ａ〜１２１ｄ）をＣＰＵ毎に設けると共に、観測ＣＰＵ制御部１８０は、各メモリ（１２１ａ〜１２１ｄ）のメモリ容量と使用済み容量に応じてメモリ毎にデバッグ観測情報を記憶させることが可能な回数を保持する残り観測回数保持部１８２を備え、観測ＣＰＵ制御部１８０は、各ＣＰＵの状態と処理時間に加えて各メモリの残り観測回数に基づいて、観測ＣＰＵを指定するものとしてもよい。デバッグ観測情報の記憶に用いるメモリのうち、いずれかのメモリがオーバーフローすることが考えられる場合は、各メモリの残り観測回数も考慮して観測ＣＰＵを指定することが好ましい。
【００５０】
上記３以上のＣＰＵ（１７０ａ〜１７０ｄ）が全体でマルチプロセッサシステムを構成していることが好ましい。また、被観測ＣＰＵ１７０ａは通常動作時には外部に出力しないデバッグ観測情報を当該ＣＰＵの動作を停止させずにシステムクロック毎に外部へ出力するデバッグ機能を備え、観測ＣＰＵに指定される各ＣＰＵ（１７０ｂ〜１７０ｄ）は、被観測ＣＰＵ１７０ａの動作を停止させずにデバッグ観測情報を取得して保存させるデバッグ機能を備えていることが好ましい。
【００５１】
また、図１に一例を示すように、本発明の一実施形態による半導体集積回路装置１０のデバッグ装置は、上記半導体集積回路装置１０と半導体集積回路装置１０に接続され、半導体集積回路装置１０に対してデバッグ条件を設定してデバッグを開始させると共に、デバッグ終了後にデバッグ観測情報を半導体集積回路装置から取得して表示させるデバッグコントローラ１９と、を含む。なお、デバッグコントローラ１９は、半導体集積回路装置１０に接続できて、半導体集積回路装置１０のデバッグ条件を設定し、デバッグ結果を表示する機能を有するものであれば、どのようなものであってもよい。たとえば、デバッガ等のソフトウェアをインストールしたＰＣであるデバッグＰＣをデバッグコントローラとして用いることができる。
【００５２】
また、図１に一例を示すように、マルチプロセッサシステムのデバッグ装置であって、
マルチプロセッサシステムを構成する複数のＣＰＵのうち、デバッグの観測対象とする被観測ＣＰＵについてデバッグ観測情報を外部に出力するように設定すると共に、残る複数のＣＰＵをそれぞれデバッグ観測情報を取得して保存することができる観測ＣＰＵ候補として設定する手段（１９、１９２、１４、１３４、１６１ａ〜１６１ｄ）と、被観測ＣＰＵがデバッグ観測情報を外部に出力する毎に、複数の観測ＣＰＵ候補のうち、デバッグ観測情報の取得と保存を担当する観測ＣＰＵを、各観測ＣＰＵ候補の状態とデバッグ観測情報の保存に要する処理時間とに基づいて指定する観測ＣＰＵ指定手段１８０と、複数の観測ＣＰＵ候補（１７０ｂ〜１７０ｄ）が観測ＣＰＵとして保存したデバッグ観測情報を整理して表示する手段（１３４、１４、１９、１９２）と、を備える。
【００５３】
図６に一例を示すように、観測ＣＰＵ指定手段１８０は、被観測ＣＰＵ１７１ａがデバッグ観測情報を外部に出力する毎に、複数の観測ＣＰＵ候補（１７１ｂ〜１７１ｄ）のうちアイドル状態になる観測ＣＰＵ候補（１７１ｂ〜１７１ｄ）が、一つである場合には当該観測ＣＰＵ候補を観測ＣＰＵとして指定し、複数である場合には当該複数の観測ＣＰＵ候補（１７１ｂ〜１７１ｄ）のうちデバッグ観測情報の保存に要する処理時間が最も速いデバッグＣＰＵを観測ＣＰＵとして指定することが好ましい。
【００５４】
また、本発明の一実施形態による半導体集積回路装置のデバッグ方法は、マルチプロセッサシステムを内蔵する半導体集積回路装置のデバッグ方法であって、マルチプロセッサシステムを構成する複数のＣＰＵのうち、デバッグ対象とする被観測ＣＰＵを指定すると共に、残る複数のＣＰＵをそれぞれ被観測ＣＰＵが出力するデバッグ観測情報を取得して保存することができる観測ＣＰＵ候補として設定する初期設定ステップ（一例を図３に示す）と、被観測ＣＰＵがデバッグ観測情報を外部に出力する毎に、複数の観測ＣＰＵ候補のうち、デバッグ観測情報の取得と保存を担当するＣＰＵを、各観測ＣＰＵ候補の状態とデバッグ観測情報の保存に要する処理時間とに基づいて観測ＣＰＵとして指定し、観測ＣＰＵがデバッグ観測情報を保存するデバッグ実行ステップ（一例を図４と図６に示す）と、各観測ＣＰＵ候補が観測ＣＰＵとして保存したデバッグ観測情報を整理して表示するデバッグ結果出力ステップ（一例を図４のＳ４０６に示す）と、を含む。
【００５５】
一例を図６に示すように、デバッグ実行ステップでは、被観測ＣＰＵがデバッグ観測情報を出力する毎に、複数の観測ＣＰＵ候補のうちアイドル状態になる観測ＣＰＵ候補が一つである場合には当該観測ＣＰＵ候補を観測ＣＰＵとして指定し（Ｓ６０８）、アイドル状態になる観測ＣＰＵ候補が複数である場合には当該複数の観測ＣＰＵ候補のうち最も処理時間が速い観測ＣＰＵ候補を観測ＣＰＵとして指定する（Ｓ６０９）ことが好ましい。
【００５６】
半導体集積回路装置１０は複数のＣＰＵにそれぞれ対応する複数のメモリ（１２１ａ〜１２１ｄ）を備え、デバッグ実行ステップにおいて、観測ＣＰＵとして指定されたＣＰＵは複数のメモリのうち対応するメモリにデバッグ観測情報を保存し、被観測ＣＰＵがデバッグ観測情報を出力する毎に、アイドル状態になる観測ＣＰＵ候補が複数であり、かつ、処理時間でも優劣がつけられない場合は、デバッグ観測情報を保存するメモリの残り記憶容量が最も多い観測ＣＰＵ候補を観測ＣＰＵとして指定する（図６のＳ６１０）ものであってもよい。メモリがオーバーフローする恐れがある場合には、上記処理が好ましい。
【００５７】
以上で概要の説明を終了し、以下、実施例について、図面を参照して詳しく説明する。
【実施例１】
【００５８】
図１は、実施例１の半導体集積回路装置のデバッグ装置全体のシステム構成図である。
図１に示すデバッグ装置は、マルチプロセッサ構成の半導体集積回路装置（ＬＳＩ）１０をデバッグするデバッグ装置であり、半導体集積回路装置１０とデバッグＰＣ１９で構成され、半導体集積回路装置１０とデバッグＰＣ１９は、デバッグＩ／Ｆ（デバッグインタフェース）１４を介して接続されている。
【００５９】
デバッグＰＣ１９は、デバッガ１９２を実行する為のホストマシン、例えば、パーソナルコンピュータ等のコンピュータである。デバッガ１９２は、半導体集積回路装置１０へデバッグＩ／Ｆ１４を介してデバッグ用コマンド送信と結果の受信を行い、受信したデータをデバッグＰＣ１９に表示する。
【００６０】
半導体集積回路装置１０は、マルチプロセッサ構成のＬＳＩであり、複数のサブシステム１６０ａ〜１６０ｄとシステムデバッグ制御部１６２と観測ＣＰＵ制御部１８０を含んで構成される。なお、図１では、半導体集積回路装置１０の内部構成のうち、デバッグに特に関係がある部分を示している。
【００６１】
サブシステム１６０ａ〜１６０ｄは、それぞれ独立して並列に動作する。サブシステム１６０ａは、ＣＰＵ１７０ａとメモリ１２１ａを含んで構成され、ＣＰＵ１７０ａは、さらにＣＰＵコア１１４ａとＤＣＵ（デバッグコントロールユニット）１６１ａとを含んで構成されている。サブシステム１６０ｂ〜１６０ｄは、サブシステム１６０ａと同様の構成であり、それぞれＣＰＵ１７０ｂ〜１７０ｄと、メモリ１２１ａ〜１２１ｄを含んで構成され、ＣＰＵ１７０ｂ〜１７０ｄは、さらにＣＰＵコア１１４ｂ〜１１４ｄとＤＣＵ１６１ｂ〜１６１ｄとを含んで構成されている。
【００６２】
ＣＰＵ１７０ａは、本実施例では、デバッグ対象とする被観測ＣＰＵであり、デバッグ時にデバッグ対象となるプログラムをメモリ１２１ａから取得してＣＰＵコア１１４ａが実行する。
【００６３】
ＣＰＵ１７０ｂ〜ＣＰＵ１７０ｄは、本実施例では、デバッグ時に被観測ＣＰＵが出力するデバック観測情報を取得する観測ＣＰＵの候補となる観測ＣＰＵ候補である。ＣＰＵ１７０ｂ〜ＣＰＵ１７０ｄは、信号観測時、信号観測データメモリ書き込みプログラム２３０をメモリ１２１ｂ〜１２１ｄから取得して、ＣＰＵコア１１４ｂ〜１１４ｄで実行する。すなわち、実施例１では、ＣＰＵ１７０ｂ〜１７０ｄを信号観測装置として使用する。なお、デバッグ時以外の通常使用時においては、ＣＰＵ１７０ａ〜１７０ｄはそれぞれ、半導体集積回路装置１０の実現する機能の一部を分担するＣＰＵである。また、ＣＰＵ１７０ａ〜１７０ｄのうち、被観測ＣＰＵと観測ＣＰＵ候補は任意に選択できるものとしてよい。ただし、観測ＣＰＵ候補は複数指定することが好ましい。
【００６４】
ＤＣＵ１６１ａは、信号観測出力線２３４ａと信号観測入力線２３５ａを介して信号観測用バス１３０に接続され、被観測ＣＰＵとなるＣＰＵコア１１４ａのデバッグ制御を行ない、プログラムの実行、停止を制御する。
【００６５】
信号観測出力線２３４ａは、ＣＰＵコア１１４ａの内部信号を信号観測用バス１３０へ出力するために用いる。
【００６６】
信号観測入力線２３５ａは、ＣＰＵコア１１４ａを観測装置（観測ＣＰＵ）として使用する場合に、信号観測用バス１３０の信号観測データをＣＰＵコア１１４ａへ入力する為に使用する。なお、実施例１では、ＣＰＵ１７０ａは被観測ＣＰＵとなるので、信号観測入力線２３５ａについてはこれを使用しない。
【００６７】
ＤＣＵ１６１ｂ〜１６１ｄは、それぞれ、ＤＣＵ１６１ａと同様の構成である。また、信号観測出力線２３４ｂ〜２３４ｄ、信号観測入力線２３５ｂ〜２３５ｄが、それぞれ、ＤＣＵ１６１ｂ〜１６１ｄに対して設けられている。
【００６８】
メモリ１２１ａには、被観測ＣＰＵのＣＰＵコア１１４ａの動作に必要なプログラムやデータが格納される。一方、メモリ１２１ｂ〜１２１ｄには、ＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄを観測装置（観測ＣＰＵ）として使用するために信号観測データメモリ書き込みプログラム２３０が格納される。
【００６９】
システムデバッグ制御部１６２は、デバッグ用同期バス１３５を介してＤＣＵ１６１ａ〜ＤＣＵ１６１ｄに接続され、ＤＣＵ１６１ａ〜ＤＣＵ１６１ｄを介してＣＰＵコア１１４ａ〜ＣＰＵコア１１４ｄのプログラムの実行開始と実行停止を制御する。
【００７０】
観測ＣＰＵ制御部１８０は、状態判定部１８１と残り観測回数保持部１８２と処理時間保持部１８３とで構成され、観測ＣＰＵ候補となるＣＰＵコア１１４ｂ〜１１４ｄの中から観測ＣＰＵとなるＣＰＵを選択する。
【００７１】
観測ＣＰＵ  Ｉ／Ｆ（観測ＣＰＵインタフェース）１８４は、システムデバッグ制御部１６２と観測ＣＰＵ制御部１８０を接続する。観測ＣＰＵ  Ｉ／Ｆ（観測ＣＰＵインタフェース）１８４は、観測ＣＰＵ制御部１８０が選択した観測ＣＰＵのシステムデバッグ制御部１６２への通知に用いられると共に、観測ＣＰＵのＣＰＵコア１１４ｂ〜１１４ｄの現在の状態を判定する為に使用する。
【００７２】
状態判定部１８１は、観測ＣＰＵ  Ｉ／Ｆ１８４を介して観測ＣＰＵ候補となる夫々のサブシステム１６０ｂ〜１６０ｄ内のＣＰＵコア１１４ｂ〜１１４ｄを監視して、ＣＰＵコアの現在の状態と次の観測タイミングの状態を判定する。なお、ＣＰＵコアの状態の判定には、ステートマシン（略してＳＴＭ）を用いる。状態判定部１８１は、高速な判定を実現するため、専用のハードウェア回路として設けることができる。
【００７３】
残り観測回数保持部１８２は、観測ＣＰＵ候補となるＣＰＵのＣＰＵコア１１４ｂ〜１１４ｄの信号観測に使用出来るメモリ容量等に合わせて予めデバッグＰＣ１９から最大観測回数を初期値として設定し、観測動作中はシステムデバッグ制御部１６２から観測装置のＣＰＵ動作の開始毎に初期値から−１ずつ減算した結果、得られる残り観測回数を保持する。
【００７４】
処理時間保持部１８３は、各ＣＰＵが観測ＣＰＵとして指定されたときの処理時間に関する情報を保持する。処理時間保持部１８３の情報は、デバック開始前にデバッグＰＣ１９により初期設定される。処理時間保持部１８３には、各ＣＰＵに対応するメモリ１２０ａ〜１２０ｄへの観測データの書き込み処理に要する時間に関するデータを保持する。たとえば、信号観測データをメモリに格納するサイクル数を保持するものとしてもよい。このサイクル数のデータは、後で説明するように、観測ＣＰＵとなるＣＰＵの状態判定、及び観測ＣＰＵの選択に使用する。従って、観測ＣＰＵとなるＣＰＵコアが１１４ｂ〜１１４ｄである場合には、ＣＰＵコア１１４ｂ〜１１４ｄのデータがあれば十分である。
【００７５】
さらに、半導体集積回路装置１０は、デバッグ専用のバスとして、デバッグ用同期バス１３５とデバッグ用外部バス１３４と信号観測用バス１３０とを備えている。半導体集積回路装置１０には、この他に図示しない通常動作時に使用する内部バスがあるが、ここでは説明を省略する。
【００７６】
信号観測用バス１３０は、各ＣＰＵのＤＣＵ１６１ａ〜１６１ｄが接続され、被観測ＣＰＵから観測ＣＰＵへとデバッグ観測情報が伝送に使用される。すなわち、ＣＰＵ１７０ａが被観測ＣＰＵ、ＣＰＵ１７０ｂ〜ｄが観測ＣＰＵ候補に設定された場合、ＤＣＵ１６１ａの信号観測出力線２３４ａから出力される観測信号がＤＣＵ１６１ｂ〜１６１ｄの信号観測入力線２３５ｂ〜２３５ｄへと伝送される。
【００７７】
デバッグ用同期バス１３５は、ＤＣＵ１６１ａ〜１６１ｄとシステムデバッグ制御部１６２に接続され、ＣＰＵコア１１４ａ〜１１４ｄにおけるブレーク発生時の停止や、停止後の再開の同期をとるための同期信号を転送する。
【００７８】
デバッグ用外部バス１３４は、ＤＣＵ１６１ａ〜１６１ｄとシステムデバッグ制御部１６２とデバッグＩ／Ｆ１４に接続され、デバッグＩ／Ｆ１４を介してデバッグＰＣ１９と接続される。デバッグ用外部バス１３４は、デバッグＰＣ１９とＤＣＵ１６１ａ〜１６１ｄ又はシステムデバッグ制御部１６２との間で、デバッグ制御用のコマンドやトレースデータ等の転送に用いられる。
【００７９】
図２は、実施例１におけるサブシステム１６０ａ〜１６０ｄの具体的な構成の一例を示すブロック図である。図２では、符号の末尾のａ〜ｄを省略した符号を用いるが、図１におけるサブシステム１６０ａ〜１６０ｄのどのサブシステムも図２の構成とすることができる。サブシステム１６０は、ＣＰＵ１７０とメモリ１２０を含んで構成される。さらに、ＣＰＵ１７０は、ＣＰＵコア１１４とＤＣＵ１６１を含んで構成される。
【００８０】
ＣＰＵコア１１４は、内部信号出力線２３２と信号観測データ線２３３によりＤＣＵ１６１に接続される。ＤＣＵ１６１は、信号観測出力線２３４と信号観測入力線２３５により信号観測用バス１３０に接続される。メモリ１２１は、ローカルメモリバス２３６を介してＣＰＵコア１１４に接続される。
【００８１】
ＤＣＵ１６１は、ＣＰＵトレース制御部２３７とＣＰＵブレーク制御部２１４とを含んで構成される。ＣＰＵブレーク制御部２１４は、ＣＰＵコア１１４の停止／再開の制御を行う。
【００８２】
ＣＰＵトレース制御部２３７は、信号観測データ保持部２３１を備え、ＣＰＵコア１１４がデバッグ対象ＣＰＵとして使われる場合に内部信号出力線２３２の信号を保持し、観測ＣＰＵとして使用される場合には、信号観測入力線２３５の信号を保持する。すなわち、ＣＰＵトレース制御部２３７は、ＣＰＵ１７０が被観測ＣＰＵに設定された場合には、被観測ＣＰＵ１７０内のＣＰＵコア内部信号の信号観測出力線２３４からの出力を制御する。また、ＣＰＵ１７０が観測ＣＰＵに指定された場合には、信号観測入力線２３５を介して入力される外部信号の取り込みを制御する。
【００８３】
ＤＣＵ１６１は、ＣＰＵコア１１４が被観測ＣＰＵに設定された場合、内部信号出力線２３２を介してＣＰＵコア１１４が出力する内部信号をＣＰＵトレース制御部２３７へ取り込み、その取り込んだＣＰＵコア１１４の内部信号を信号観測出力線２３４を介して信号観測用バス１３０へ出力する。
【００８４】
また、ＣＰＵコア１１４が観測ＣＰＵとなる場合、ＤＣＵ１６１は、信号観測入力線２３５を介して信号観測用バス１３０からサブシステム１６０外の観測信号をＣＰＵトレース制御部２３７へ取り込み、さらに、信号観測データ線２３３を介してＣＰＵコア１１４へその取り込んだ外部の観測信号を出力する。
【００８５】
メモリ１２１は、ＣＰＵコア１１４が観測ＣＰＵ候補として設定された場合、信号観測データメモリ書き込みプログラム２３０を含んで構成される。信号観測データメモリ書き込みプログラム２３０は、顧客のプログラムの代わりに動作する信号観測制御用のプログラムで、信号観測中にＤＣＵ１６１の信号観測データ保持部２３１が保持する信号観測入力線２３５ａから入力した信号の状態を参照してメモリ１２１へ格納する。また、メモリ１２１には、ＣＰＵコア１１４が被観測ＣＰＵとして設定された場合、デバッグ対象となるプログラムが格納される。ＣＰＵコア１１４が被観測ＣＰＵとして設定された場合は、信号観測データメモリ書き込みプログラム２３０は、かならずしも、メモリ１２０に格納しておく必要はない。
【００８６】
次に、実施例１の動作について図面を用いて説明する。図３は、実施例１における信号観測準備処理のフローチャートである。図１と図２に加えて図３も用いて実施例１の動作を説明する。図３では、図１のＣＰＵ１７０ａ〜１７０ｄの４つのＣＰＵのうち、ＣＰＵ１７０ａをデバッグ対象とする被観測ＣＰＵとして設定し、ＣＰＵ１７０ｂ〜１７０ｄを被観測ＣＰＵの内部信号の取得を行う観測ＣＰＵ候補として設定する場合を示す。言い換えるならば、図３の設定により、ＣＰＵ１７０ｂ〜１７０ｄは、ＣＰＵ１７０ａの内部信号を観測する観測装置として初期設定される。
【００８７】
まず、デバッグＰＣ１９は、デバッグ用外部バス１３４を介してＣＰＵコア１１４ａのＤＣＵ１６１ａに接続し、ＤＣＵ１６１ａ内のＣＰＵトレース制御部２３７の信号観測データ保持部２３１のモードレジスタ（図示せず）を内部信号出力モードに設定する（Ｓ３０１）。この設定によりＣＰＵ１７０ａは通常使用時には、外部に出力しないＣＰＵコア１１４ａの内部信号をＤＣＵ１６１ａを介して信号観測用バス１３０へ出力するように設定される。すなわち、ＣＰＵ１７０ａは被観測ＣＰＵとして設定される。
【００８８】
次にデバッグＰＣ１９は、デバッグ用外部バス１３４を介してＣＰＵコア１１４ｂのＤＣＵ１６１ｂに接続し、ＤＣＵ１６１ｂ内のＣＰＵトレース制御部２３７の信号観測データ保持部２３１のモードレジスタ（図示せず）を信号観測モードに設定する。またＣＰＵコア１１４ｃとＣＰＵコア１１４ｄは、ＣＰＵコア１１４ｂと同様の手順で信号観測モードに設定する（Ｓ３０２）。この設定によりＣＰＵ１７０ｂ〜１７０ｄは、信号観測用バスの観測信号についてＤＣＵ１６１ｂ〜ｄを介してＣＰＵコア１１４ｂ〜ｄが取り込めるように設定される。すなわち、ＣＰＵ１７０ｂ〜１７０ｄは観測ＣＰＵ候補として設定される。
【００８９】
次にデバッグＰＣ１９は、デバッグ用外部バス１３４を介して観測ＣＰＵ候補となるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの信号観測データをメモリに格納するサイクル数であるＳＴ期間長を処理時間保持部１８３へそれぞれ設定する（Ｓ３０３）。
【００９０】
次にデバッグＰＣ１９は、デバッグ用外部バス１３４を介して観測ＣＰＵ候補であるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの残り観測回数を残り観測回数保持部１８２へ設定する（Ｓ３０４）。これでデバッグ前の信号観測準備が完了する。
【００９１】
図４は、実施例１における信号観測実行処理のフローチャートである。図４を用いて図１と図２の動作を説明する。デバッグＰＣ１９は、デバッグ用外部バス１３４を介してシステムデバッグ制御部１６２に対して被観測ＣＰＵであるＣＰＵコア１１４ａのプログラム実行開始を指示する。すると、ＣＰＵコア１１４ａはプログラムの実行を開始し、同時にＣＰＵコア１１４ａの内部信号の状態を信号観測出力線２３４ａを介して信号観測用バス１３０へ出力する（Ｓ４０１）。
【００９２】
次に観測ＣＰＵ制御部１８０は、次の観測タイミングに使用する観測ＣＰＵを観測ＣＰＵ候補であるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの中から決定する（Ｓ４０２）。観測ＣＰＵ制御部１８０が観測ＣＰＵ候補の中から観測ＣＰＵを決定するアルゴリズムについては、後で詳しく説明する。
【００９３】
観測ＣＰＵ制御部１８０の決定に基づいてシステムデバッグ制御部１６２は、観測ＣＰＵに対してメモリ１２１に格納された信号観測データメモリ書き込みプログラム２３０の実行を指示し、同時に観測ＣＰＵが信号観測入力線２３５を介して信号観測用バス１３０の信号観測データを参照し、信号観測データ保持部２３１に信号観測データを取り込む（Ｓ４０３）。
【００９４】
観測ＣＰＵは、メモリ１２１に格納された信号観測データメモリ書き込みプログラム２３０を実行し、信号観測データ保持部２３１に取り込まれた信号観測用バス１３０の信号観測データをメモリ１２１へ書き込む（Ｓ４０４）。
【００９５】
その都度、観測ＣＰＵ制御部１８０により指定された観測ＣＰＵは、ステップＳ４０２〜Ｓ４０４の処理を観測処理終了まで繰り返す（Ｓ４０５）。観測終了後はデバッグＰＣ１９でデバッグ用外部バス１３４を介して観測ＣＰＵとして使用したＣＰＵコアであるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄに接続されたメモリ１２１ｂ〜１２１ｄから信号観測データを読み出し、デバッガ１９２にて表示する（Ｓ４０６）。なお、後で詳しく説明するように実施例１では、観測ＣＰＵを観測ＣＰＵ候補であるＣＰＵ１７０ｂ〜１１７０ｄがそれぞれ分担して行っているので、信号観測データは、メモリ１２０ｂ〜１２０ｄに分散して格納されている。従って、デバッガ１９２は、メモリ１２０ｂ〜１２０ｄに分散して格納されている信号観測データを時系列順に並べ替えて表示する。時系列順に並べ替える処理は、信号観測データにクロックサイクル数をタイムスタンプとして同時に記録すること等により比較的簡単に行うことができる。
【００９６】
図５は、実施例１における観測ＣＰＵの信号観測データ保存処理のフローチャートである。信号観測データ保存処理は、観測ＣＰＵに設定されたＣＰＵのＣＰＵコア１１４ｂ〜１１４ｄが信号観測データメモリ書き込みプログラム２３０に基づいて行う。
【００９７】
最初に初期設定として信号観測データメモリ書き込みプログラム２３０に基づいて観測ＣＰＵとなる各ＣＰＵコア１１４ｂ〜１１４ｄは、観測データ用バッファのポインタを０に初期化する（Ｓ５０１）。
【００９８】
次に各ＣＰＵコア１１４ｂ〜１１４ｄは、システムデバッグ制御部１６２から信号観測データメモリ書き込みプログラム２３０の実行の指示があるまで待機状態となる。この状態を状態判定部１８１は、ＩＤＬＥ（アイドル状態、待機状態）と判定する（Ｓ５０２）。
【００９９】
ＩＤＬＥにあるＣＰＵコア１１４ｂ〜１１４ｄのうち、観測ＣＰＵに指定されたＣＰＵコアは、システムデバッグ制御部１６２により信号観測開始を指示されると、信号観測データメモリ書き込みプログラム２３０を実行して、信号観測出力線２３４ａと信号観測用バス１３０を介して信号観測データ保持部２３１に取り込まれたデバッグ対象ＣＰＵであるＣＰＵコア１１４ａの内部信号の状態を読み出す。このとき、状態判定部１８１は観測ＣＰＵのこの状態をＣＡＰと判定する（Ｓ５０３）。
【０１００】
次に観測ＣＰＵは、信号観測データメモリ書き込みプログラム２３０を実行して、観測データ用バッファのポインタが指すメモリ１２１へ信号観測データを書き込む。このとき、状態判定部１８１は、観測ＣＰＵのこの状態をＳＴと判定する（Ｓ５０４）。さらに、観測ＣＰＵは、信号観測データメモリ書き込みプログラム２３０を実行し、観測データ用バッファのポインタをインクリメントする。このとき、状態判定部１８１は観測ＣＰＵのこの状態をＳＴと判定する（Ｓ５０５）。
【０１０１】
信号観測１回分の信号観測データのメモリ書き込み処理は、ステップＳ５０２〜Ｓ５０５を実行することにより終了し、次の観測タイミングまでＩＤＬＥとなる（Ｓ５０２）。すなわち、観測ＣＰＵ候補は、観測ＣＰＵに指定されると、ＩＤＬＥ→ＣＡＰ→ＳＴ→ＩＤＬＥと状態遷移する。ＩＤＬＥに戻ると１回のデバッグ観測情報の取得、保存が終了し、次のデバッグ観測情報の取得を行うことができる。なお、実施例１では、観測ＣＰＵとなるＣＰＵコア１１４ｂ〜１１４ｄのＣＡＰサイクルの長さは１サイクルであるが、ＳＴサイクルの長さは、ＣＰＵコア１１４ｂ〜１１４ｄによってそれぞれ異なる。
【０１０２】
図６は、実施例１における観測ＣＰＵ制御部１８０の観測ＣＰＵ選択処理のフローチャートである。実施例１において、図３のフローチャートにより観測ＣＰＵ候補として設定されたＣＰＵコア１１４ｂ〜１１４ｄの中から、図６のフローチャートの手順により観測ＣＰＵが選択される。
【０１０３】
観測ＣＰＵ制御部１８０は、状態判定部１８１により次の観測タイミングで状態がＩＤＬＥと一致するＣＰＵコアを観測ＣＰＵ候補であるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの中から検索する（Ｓ６０１）。
【０１０４】
次に観測ＣＰＵ制御部１８０は、状態判定部１８１により次の観測タイミングで状態がＩＤＬＥと一致するＣＰＵコアの個数を判定（Ｓ６０２）し、状態がＩＤＬＥと一致するＣＰＵコアが１個だけの場合に観測ＣＰＵ制御部１８０はそのＣＰＵコアを次の観測タイミングの観測ＣＰＵとして決定する（Ｓ６０８）。
【０１０５】
状態がＩＤＬＥと一致するＣＰＵコアが２個以上ある場合は、処理時間保持部１８３が、ＳＴ期間長（信号観測データのメモリへの書き込みに要するサイクル数）が一番小さいＣＰＵコアを状態がＩＤＬＥと一致するＣＰＵコアの中から検索する（Ｓ６０３）。
【０１０６】
観測ＣＰＵ制御部１８０は、ＳＴ期間長が一番小さいＣＰＵコアの個数を処理時間保持部１８３により状態がＩＤＬＥと一致するＣＰＵコアの中から判定する（Ｓ６０４）。
ＳＴ期間長が一番小さいＣＰＵコア１個だけの場合に観測ＣＰＵ制御部１８０は、ＳＴ期間長が一番小さいＣＰＵコアを次の観測タイミングの観測ＣＰＵとして選択する（Ｓ６０９）。
【０１０７】
また、ＳＴ期間長が一番小さいＣＰＵコアが２個以上ある場合に観測ＣＰＵ制御部１８０は、残り観測回数が一番大きいＣＰＵコアを残り観測回数保持部１８２により状態がＩＤＬＥと一致するＣＰＵコアで、かつ、ＳＴ期間長が一番小さいＣＰＵコアの中から検索し観測ＣＰＵとして選択する（Ｓ６０６）。
【０１０８】
もし残り観測回数が一番大きいＣＰＵコアが１個だけの場合、観測ＣＰＵ制御部１８０は、残り観測回数が一番大きいＣＰＵコアを次の観測タイミングの観測ＣＰＵとして選択する（Ｓ６１０）。
【０１０９】
一方、残り観測回数が一番大きいＣＰＵコアが２個以上ある場合は、何れかのＣＰＵコアを観測ＣＰＵとして選択する（Ｓ６０７）。
【０１１０】
図７は、実施例１における状態判定部１８１によるＣＰＵの状態判定処理のフローチャートである。図７と図５を用いて図１の状態判定部１８１の動作を説明する。
【０１１１】
状態判定部１８１は、観測ＣＰＵ候補となるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの現在の状態（ＩＤＬＥ／ＣＡＰ／ＳＴ）から次の観測タイミングの状態を判定する。ＣＰＵコアの次の観測タイミングの状態とは、ＣＰＵコアが次の観測タイミングの観測ＣＰＵに選ばれなかった場合の状態を示す。なお、次の観測タイミングの観測ＣＰＵに選ばれた場合のそのＣＰＵコアの次の状態は、ＣＡＰとなる。
【０１１２】
状態判定部１８１は、まず、ＣＰＵコア１１４の現在の状態がＩＤＬＥと一致するかを確認（Ｓ７０１）する。現在の状態とは信号観測データメモリ書き込みプログラム２３０の実行している処理に対応してステップＳ５０２の時ＩＤＬＥ、ステップＳ５０３の時ＣＡＰ、ステップＳ５０４〜Ｓ５０５の時ＳＴが状態（ステートマシンＳＴＭ）として得られる。現在の状態がＩＤＬＥと一致するならば、次の観測タイミングの状態はＩＤＬＥと判定（Ｓ７０６）し、処理を終了する。
【０１１３】
現在の状態がＩＤＬＥと一致しない場合に状態判定部１８１は、次にＣＰＵコア１１４の現在の状態がＣＡＰと一致するかを確認（Ｓ７０２）し、現在の状態がＣＡＰと一致するならば、次の観測タイミングの状態はＳＴと判定（Ｓ７０７）し、処理を終了する。
【０１１４】
現在の状態がＣＡＰと一致しない場合に状態判定部１８１は、ＣＰＵコア１１４の現在の状態がＳＴと一致するかを確認（Ｓ７０３）し、現在の状態がＳＴと一致しない場合は処理を終了する。
【０１１５】
現在の状態がＳＴと一致する場合は、ＳＴ期間カウンタを＋１する（Ｓ７０９）。
【０１１６】
次に、上記ＳＴ期間カウンタを、処理時間保持部１８３から取り出したＣＰＵコア１１４のＳＴ期間長と比較（Ｓ７０４）し、ＳＴ期間カウンタがＳＴ期間長より大きい場合は次の観測タイミングの状態をＩＤＬＥと判定し、ＳＴ期間カウンタに０を書き込む（Ｓ７０５）。
【０１１７】
ＳＴ期間カウンタがＳＴ期間長と等しいか小さい場合は、次の観測タイミングの状態はＳＴと判定（Ｓ７０８）し処理を終了する。
【０１１８】
図８は、実施例１において信号観測実行中のＣＰＵの状態遷移を示す図である。また、図９は、実施例１において観測ＣＰＵ制御部１８０の動作アルゴリズムを説明する図である。図８と図９を使って実施例１の観測ＣＰＵ制御部１８０の動作アルゴリズム（観測ＣＰＵの選択アルゴリズム）を説明する。
【０１１９】
被観測ＣＰＵのＣＰＵコアであるＣＰＵコア１１４ａの内部信号の状態を示す内部信号出力線２３２は、ＣＬＫの立ち上がりで変化する。また、観測ＣＰＵ候補であるＣＰＵのＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄは、夫々異なるＳＴ期間長で動作する。すなわち、各ＣＰＵの信号観測データのメモリの書き込み処理に要するサイクル数が異なる（ＣＰＵコア１１４ｂ：１サイクル、ＣＰＵコア１１４ｃ：２サイクル、ＣＰＵコア１１４ｄ：３サイクル）。
【０１２０】
図８のｓｔａｒｔサイクルにおいて観測ＣＰＵ制御部１８０は、Ｔ０サイクルに使用する観測ＣＰＵを選択する。図９のステップＳ９００のように観測ＣＰＵ制御部１８０は、状態判定部１８１によりＴ０サイクルに状態がＩＤＬＥと一致するＣＰＵコアを観測ＣＰＵ候補のＣＰＵコアであるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの中から検索する。その結果、ＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄとも次の観測タイミングの状態がＩＤＬＥと一致する判断し、ステップＳ９０１のＳＴ期間長（処理時間）の判定を行う。
【０１２１】
ステップＳ９０１のＳＴ期間長（処理時間）の判定では、観測ＣＰＵ制御部１８０は、処理時間保持部１８３によりＴ０サイクルの判定を行い状態がＩＤＬＥと一致するＣＰＵコアの中でＳＴ期間長が一番小さい（処理時間が最も速い）ＣＰＵコアを検索する。図９では、ＣＰＵコア１１４ｂのＳＴ期間長が１サイクルであるため、ＣＰＵコア１１４ｂをＳＴ期間長が一番小さいＣＰＵコアと判断し、Ｔ０サイクルの観測ＣＰＵとして選択する。
【０１２２】
次に図８のＴ０サイクルに移る。Ｔ０サイクルでは、Ｔ０サイクルの観測ＣＰＵとして選択したＣＰＵコア１１４ｂは、システムデバッグ制御部１６２により信号観測データメモリ書き込みプログラム２３０が実行され、ＣＰＵコア１１４ｂの状態はＣＡＰになる。
同様に図８のＴ０サイクルにおいて観測ＣＰＵ制御部１８０は、Ｔ１サイクルに使用する観測ＣＰＵを選択する。図９のステップＳ９０２に示すように、Ｔ０サイクルにおいて観測ＣＰＵ制御部１８０は、状態判定部１８１によりＴ１サイクルに状態がＩＤＬＥと一致するＣＰＵコアを観測ＣＰＵ候補であるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの中から検索する。観測ＣＰＵ制御部１８０は、ＣＰＵコア１１４ｂのＴ１サイクルの状態がＳＴと一致する事から観測ＣＰＵとして使用中であると判断し、ＣＰＵコア１１４ｃとＣＰＵコア１１４ｄのＴ１サイクルの状態がＩＤＬＥと一致するかの判断を行う。観測ＣＰＵ制御部１８０は、Ｔ１サイクルにおいて２つ以上のＣＰＵコアの状態がＩＤＬＥと一致すると判断し、ステップＳ９０３のＳＴ期間長の判定に移る。
【０１２３】
ステップＳ９０３で、観測ＣＰＵ制御部１８０は、処理時間保持部１８３によりＴ１サイクルを判定して状態がＩＤＬＥと一致するＣＰＵコアの中でＳＴ期間長が一番小さいＣＰＵコアを検索する。図９では、ＣＰＵコア１１４ｃのＳＴ期間長が２サイクルであるため、ＳＴ期間長が一番小さいＣＰＵコアと判断しＣＰＵコア１１４ｃをＴ１サイクルの観測ＣＰＵとして選択する。
【０１２４】
次に図８のＴ１サイクルに移る。Ｔ１サイクルでは、Ｔ１サイクルの観測ＣＰＵとして選択されたＣＰＵコア１１４ｃは、システムデバッグ制御部１６２により信号観測データメモリ書き込みプログラム２３０が実行され、ＣＰＵコア１１４ｃの状態（ＳＴＭ）はＣＡＰになる（Ｓ８０２）。図９のステップ９０４に示すように、観測ＣＰＵ制御部１８０は、Ｔ２サイクルに使用する観測ＣＰＵを選択する。観測ＣＰＵ制御部１８０は、状態判定部１８１によりＴ２サイクルに状態がＩＤＬＥと一致するＣＰＵコアをＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの中から検索する。観測ＣＰＵ制御部１８０は、ＣＰＵコア１１４ｃのＴ２サイクルの状態がＳＴと一致する事から観測ＣＰＵとして使用中であると判断し、ＣＰＵコア１１４ｂとＣＰＵコア１１４ｄのＴ２サイクルの状態がＩＤＬＥと一致するかの判断を行う。その結果、観測ＣＰＵ制御部１８０は、Ｔ２サイクルにおいて２つ以上のＣＰＵコアの状態がＩＤＬＥと一致すると判断し、ステップＳ９０５のＳＴ期間長（処理時間）の判定に移る。
【０１２５】
ステップＳ９０５で、観測ＣＰＵ制御部１８０は、処理時間保持部１８３によりＴ２サイクルを判定して状態がＩＤＬＥと一致するＣＰＵコアの中でＳＴ期間長が一番小さいＣＰＵコアを検索する。図９では、ＣＰＵコア１１４ｂのＳＴ期間長が１サイクルであるため、ＳＴ期間長が一番小さい（処理時間が最も速い）ＣＰＵコアと判断し、ＣＰＵコア１１４ｂをＴ２サイクルの観測ＣＰＵとして選択する。
【０１２６】
次に図８のＴ２サイクルに移る。Ｔ２サイクルでは、観測ＣＰＵとして選択されたＣＰＵコア１１４ｂは、システムデバッグ制御部１６２により信号観測データメモリ書き込みプログラム２３０が実行され、ＣＰＵコア１１４ｂの状態はＣＡＰになる。図９のステップＳ９０６に示すように、観測ＣＰＵ制御部１８０は、Ｔ３サイクルに使用する観測ＣＰＵを選択する。観測ＣＰＵ制御部１８０は、状態判定部１８１によりＴ３サイクルに状態がＩＤＬＥと一致するＣＰＵコアを観測ＣＰＵ候補であるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの中から検索する。観測ＣＰＵ制御部１８０は、ＣＰＵコア１１４ｂとＣＰＵコア１１４ｃのＴ３サイクルの状態がＳＴと一致する事から観測ＣＰＵとして使用中であると判断し、ＣＰＵコア１１４ｄのＴ３サイクルの状態がＩＤＬＥと一致するかの判断を行う。その結果、観測ＣＰＵ制御部１８０は、Ｔ３サイクルにおいてＣＰＵコア１１４ｄの状態がＩＤＬＥと一致すると判断し、ＣＰＵコア１１４ｄをＴ３サイクルの観測ＣＰＵとして選択する。この場合は、ＩＤＬＥと一致するＣＰＵコアが一つであるので、ステップＳ９０１やステップＳ９０３のようなＳＴ期間長（処理時間）の判定は必要ない。
【０１２７】
次に図８のＴ３サイクルに移る。Ｔ３サイクルで、ＣＰＵコア１１４ｄは、システムデバッグ制御部１６２により信号観測データメモリ書き込みプログラム２３０が実行され、ＣＰＵコア１１４ｄの状態はＣＡＰになる。図９のステップＳ９０７に示すように、観測ＣＰＵ制御部１８０は、Ｔ４サイクルに使用する観測ＣＰＵを選択する。観測ＣＰＵ制御部１８０は、状態判定部１８１によりＴ４サイクルに状態がＩＤＬＥと一致するＣＰＵコアをＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの中から検索する。観測ＣＰＵ制御部１８０は、ＣＰＵコア１１４ｄのＴ４サイクルの状態がＳＴと一致する事から観測ＣＰＵとして使用中であると判断し、ＣＰＵコア１１４ｂとＣＰＵコア１１４ｃのＴ４サイクルの状態がＩＤＬＥと一致するかの判断を行う。その結果、観測ＣＰＵ制御部１８０は、Ｔ４サイクルにおいて２つ以上のＣＰＵコアの状態がＩＤＬＥと一致すると判断し、ステップＳ９０８のＳＴ期間長（処理時間）の判定に移る。
【０１２８】
ステップＳ９０８で、観測ＣＰＵ制御部１８０は、処理時間保持部１８３によりＴ４サイクルを判定して状態がＩＤＬＥと一致するＣＰＵコアの中でＳＴ期間長が一番小さいＣＰＵコアを検索する。図９では、ＣＰＵコア１１４ｂのＳＴ期間長が１サイクルであるため、ＳＴ期間長が一番小さい（処理時間が最も速い）ＣＰＵコアと判断し、ＣＰＵコア１１４ｂをＴ２サイクルの観測ＣＰＵとして選択する。
【０１２９】
次に図８のＴ４サイクルに移る。Ｔ４サイクルで、ＣＰＵコア１１４ｂは、システムデバッグ制御部１６２により信号観測データメモリ書き込みプログラム２３０が実行され、ＣＰＵコア１１４ｂの状態はＣＡＰになる。
【０１３０】
以降、図８のＳＴＡＲＴ〜Ｔ４及び図９のステップＳ９００〜Ｓ９０８と同様に、観測ＣＰＵ制御部１８０が状態判定部１８１と残り観測回数保持部１８２と処理時間保持部１８３を使い、次の観測タイミングの観測ＣＰＵを観測ＣＰＵ候補であるＣＰＵコア１１４ｂ〜ＣＰＵコア１１４ｄの中から選択する。
【０１３１】
上記各実施例によれば、複数のＣＰＵを含む半導体集積回路装置用デバッグ装置において、複数の観測ＣＰＵ候補の中から順次観測タイミングの信号観測に使用する観測ＣＰＵを選択する観測ＣＰＵ制御部と、夫々のサブシステム内のＣＰＵコアを監視してＣＰＵコアの現在の状態と次の観測タイミングの状態を判断する状態判定部と、予めデバッグＰＣから設定された各ＣＰＵコアのＳＴ期間長を保持し、上記観測ＣＰＵ制御部がＳＴ期間長の短いＣＰＵコアを優先的に観測ＣＰＵとして選択するための処理時間保持部と、信号観測用に使用する観測ＣＰＵ候補のＣＰＵコアの信号観測に使用出来るメモリ容量等に合わせて予めデバッグＰＣから最大観測回数を初期値として設定し、観測動作中はシステムデバッグ制御部から観測装置の観測動作の開始毎に初期値から−１ずつ減算した結果、得られる残り観測回数を保持するための残り観測回数保持部とを有し、観測ＣＰＵ制御部１８０により実行速度やメモリ容量が異なる観測ＣＰＵ候補を組み合わせて観測装置として並列動作させる事により、観測装置を観測対象の信号の変化頻度より高速に動作させる事無しに信号の変化点全てを対象とした信号観測が可能になるため、デバッグ回路が簡単に構成できる。
【０１３２】
上記各実施例によれば、複数のＣＰＵのうち、デバッグ対象となるＣＰＵを除く、実行速度やメモリ容量が異なる複数のＣＰＵを組み合わせて観測装置として動作させる事により、観測装置を観測対象の信号の変化頻度より高速に動作させる事無しに観測対象の信号の変化点全ての信号観測が可能になる為、デバッグ回路が簡単に構成できる。その理由としては、信号の変化点全ての信号観測を観測ＣＰＵ制御部により状況に応じて異なる組み合わせで観測装置を並列動作させる事で実現している為に、観測装置自身を高速化のための制御回路や高速化しようした場合に必要となる不要な電磁波放射の増加に対するノイズ対策回路や低電圧化による動作マージン減少への対策等の回路が不要となるからである。
【０１３３】
また、上記各実施例によれば、信号観測装置の信号観測データの格納先として専用の記憶装置なしでデバッグ回路を構成できる。その理由としては、マルチプロセッサを構成する複数のＣＰＵのうち、デバッグ対象となる被観測ＣＰＵを除くＣＰＵを観測装置として動作させ、本来プログラムの格納に使用するメモリを信号観測の間だけ信号観測データを記憶するための記憶装置として使用する為である。
【０１３４】
上記各実施例で説明したように本発明による好ましいモード（形態）をさらに列記すると以下のとおりである。
【０１３５】
（モード１）複数のＣＰＵを含む半導体集積回路装置用デバッグ装置において、
複数のデバッグ対象外ＣＰＵの中から順次観測タイミングの信号観測に使用する観測ＣＰＵを選択する観測ＣＰＵ制御部と、
デバッグ対象ＣＰＵにおけるＣＰＵコアの内部信号の出力と観測ＣＰＵにおけるＣＰＵコアの外部信号の入力とＣＰＵコアの停止／再開の制御をするためのＤＣＵと前記ＤＣＵを介して、複数のＣＰＵコアに対してプログラムの実行開始と実行停止を行うシステムデバッグ制御部と前記ＤＣＵを介して、デバッグ対象ＣＰＵのＣＰＵコアの内部信号の状態を観測ＣＰＵへ出力するための信号観測用バスと、
を有することを特徴とする半導体集積回路装置用デバッグ装置。
【０１３６】
（モード２）モード１の観測ＣＰＵ制御部において、
システムデバッグ制御部を介して夫々のＣＰＵコアを監視してＣＰＵコアの現在のＳＴＭと次の観測タイミングのＳＴＭを判定し、前記観測ＣＰＵ制御部が観測タイミングにおいてＳＴＭがＩＤＬＥと合致するＣＰＵコアを優先的に選択するためのＳＴＭ判定回路と、
観測装置として使用するデバッグ対象外ＣＰＵのＣＰＵコアの信号観測に使用出来るメモリ容量等に合わせて予めデバッグＰＣから最大観測回数を初期値として設定し、観測動作中はシステムデバッグ制御部から観測装置のＣＰＵ動作の開始毎に初期値から−１ずつ減算した結果、得られる残り観測回数を保持し、前記観測ＣＰＵ制御部が残り観測回数の多いＣＰＵコアを優先的に観測ＣＰＵとして選択するための残り観測回数保持回路と、
予め設定された各ＣＰＵコアのＳＴ期間長を保持し、前記観測ＣＰＵ制御部がＳＴ期間長の短いＣＰＵコアを優先的に観測ＣＰＵとして選択するためのＳＴ期間保持回路と、
を有することを特徴とする半導体集積回路装置用デバッグ装置。なお、上記「ＳＴＭ判定回路」、「残り観測回数保持回路」「ＳＴ期間保持回路」として図１記載の状態判定部１８１、残り観測回数保持部１８２、観測時間保持部１８３をそれぞれ用いることができる。
【０１３７】
（モード３）モード１のＤＣＵにおいて、
ＣＰＵコア停止／再開の制御を行うＣＰＵブレーク制御部と、
ＣＰＵコアがデバッグ対象ＣＰＵの場合にＣＰＵコアの内部信号をＤＣＵへ入力するための内部信号出力部と、
ＣＰＵコアがデバッグ対象ＣＰＵの場合にＤＣＵから前記信号観測用バスへＣＰＵコアの内部信号を出力するための信号観測出力部と、
ＣＰＵコアが観測ＣＰＵの場合に前記信号観測用バスの信号観測データをＤＣＵへ入力する為に使用する信号観測入力部と、
ＣＰＵコアが観測ＣＰＵの場合にＣＰＵコアへＤＣＵが保持するデバッグ対象ＣＰＵであるＣＰＵコアの内部信号を出力するための信号観測データ出力部と、
デバッグ対象ＣＰＵ内のＣＰＵコア内部信号の出力と観測ＣＰＵにおけるＣＰＵコアの外部信号の入力を制御するためのＣＰＵトレース制御部と、
を有することを特徴とする半導体集積回路装置用デバッグ装置。
【０１３８】
（モード４）モード３のＣＰＵトレース制御部において、
ＣＰＵコアがデバッグ対象ＣＰＵとして使われる場合に前記内部信号出力部の状態を保持し、観測ＣＰＵとして使用される場合には前記信号観測入力部の状態を保持する信号観測データ保持回路を有することを特徴とする半導体集積回路装置用デバッグ装置。
【０１３９】
（モード５）モード１のシステムデバッグ制御部において、
観測ＣＰＵ制御部とシステムデバッグ制御部を接続し、観測ＣＰＵ制御部が選択した観測ＣＰＵのシステムデバッグ制御部への通知と複数のＣＰＵコアの現在のＳＴＭを前記観測ＣＰＵ制御部が判定するために使用する観測ＣＰＵ  Ｉ／Ｆを有することを特徴とする半導体集積回路装置用デバッグ装置。
【０１４０】
（モード６）モード１の半導体集積回路装置用デバッグ装置において、
夫々のサブシステム内のＤＣＵに内部信号出力モードに設定するステップと、
観測装置として使用するデバッグ対象外ＣＰＵのＳＴ期間長をＳＴ期間保持回路に設定するステップと、
観測装置として使用するデバッグ対象外ＣＰＵの残り観測回数を残り観測回数保持回路に設定するステップと、
を有することを特徴とする半導体集積回路装置用デバッグ装置の信号観測方法。
【０１４１】
（モード７）モード１の半導体集積回路装置用デバッグ装置において、
デバッグ対象ＣＰＵのプログラムを実行してデバッグ対象ＣＰＵの内部信号の出力を行うステップと、
観測ＣＰＵ制御部が次の観測タイミングに使用する観測ＣＰＵをデバッグ対象外ＣＰＵから選択するステップと、
観測ＣＰＵのプログラム実行を開始し信号観測データを参照するステップと、
観測ＣＰＵが信号観測データメモリ書き込みプログラムにより信号観測データ保持回路に記録された信号観測データをメモリへ書き込むステップと、
前記デバッグ対象外ＣＰＵから選択するステップから信号観測データをメモリへ書き込むステップまでのステップを観測処理終了まで繰り返すステップと、
観測終了後に信号観測データを表示するステップと、
を有することを特徴とする半導体集積回路装置用デバッグ装置の信号観測方法。
【０１４２】
（モード８）モード１の半導体集積回路装置用デバッグ装置において、
観測ＣＰＵ制御部がＳＴＭ判定回路により次の観測タイミングでＳＴＭがＩＤＬＥと一致するＣＰＵコアをデバッグ対象外ＣＰＵから検索するステップと、
ＳＴＭ判定回路により次の観測タイミングでＳＴＭがＩＤＬＥと一致するＣＰＵコアの１個の場合はＳＴＭがＩＤＬＥと一致するＣＰＵコアを次の観測ＣＰＵとして設定するステップと、
ＳＴＭ判定回路により次の観測タイミングでＳＴＭがＩＤＬＥと一致するＣＰＵコアが２個以上ある場合はＳＴＭがＩＤＬＥと一致するＣＰＵコアの中から検索してＳＴ期間保持回路に格納されているＳＴ期間長が一番小さいＣＰＵコアを次の観測ＣＰＵとして設定するステップと、
前記ＳＴ期間長が一番小さいＣＰＵコアが１個だけの場合は前記ＣＰＵコアを次の観測ＣＰＵとして設定ステップと、
前記ＳＴ期間長が一番小さいＣＰＵコアが２個以上ある場合は残り観測回数保持回路より残り観測回数が一番大きいＣＰＵコアを次の観測ＣＰＵとして設定するステップと、
前記残り観測回数が一番大きいＣＰＵコアが１個だけの場合は残り観測回数が一番大きいＣＰＵコアを次の観測ＣＰＵとして設定するステップと、
前記残り観測回数が一番大きいＣＰＵコアが２個以上ある場合は先に検索されたＣＰＵコアを観測ＣＰＵとして設定するステップと、
を有することを特徴とする半導体集積回路装置用デバッグ装置の信号観測方法。
【０１４３】
（モード９）モード１の半導体集積回路装置用デバッグ装置において、
ＳＴＭ判定回路がＣＰＵコアのＳＴＭがＩＤＬＥ／ＣＡＰ／ＳＴを判別するステップと、
現在のＳＴＭがＩＤＬＥと一致する場合は次の観測タイミングのＳＴＭがＩＤＬＥと判定するステップと、
現在のＳＴＭとＣＡＰが一致する場合は次の観測タイミングのＳＴＭはＳＴと判定するステップと、
現在のＳＴＭとＣＡＰが一致しない場合は現在のＳＴＭとＳＴが一致するかを確認し、一致する場合はＳＴ期間カウンタをインクリメントするステップと、
前記ＳＴ期間カウンタがＳＴ期間保持回路から取り出したＣＰＵコアのＳＴ期間長と比較するステップと、
前記ＳＴ期間カウンタがＳＴ期間長より大きい場合は次の観測タイミングのＳＴＭをＩＤＬＥと判定してＳＴ期間カウンタに０を書き込むステップと、
前記ＳＴ期間カウンタがＳＴ期間長と等しいか小さい場合は次の観測タイミングのＳＴＭをＳＴと判定するステップと、
を有することを特徴とする半導体集積回路装置用デバッグ装置の信号観測方法。
【０１４４】
以上、実施例について説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１４５】
１０：半導体集積回路装置
１１：プロセッサ（従来技術）
１４：デバッグＩ／Ｆ（デバッグインタフェース）
１９：デバッグＰＣ
１００：ＬＳＩ（従来技術）
１１０、１１０ａ〜１１０ｃ：サブシステム（従来技術）
１１１、１１１ａ〜１１１ｃ：ＣＰＵコア（従来技術）
１１２、１１２ａ〜１１２ｃ：ＤＣＵ（従来技術）
１１３、１１３ａ〜１１３ｃ：周辺デバイス（従来技術）
１１４、１１４ａ〜１１４ｄ：ＣＰＵコア
１２０：メモリ（従来技術）
１２１、１２１ａ〜１２１ｄ：メモリ
１３０：信号観測用バス
１３１：デバッグ用同期バス（従来技術）
１３２：デバッグ用外部バス（従来技術）
１３３：デバッグ用内部バス（従来技術）
１３４：デバッグ用外部バス
１３５：デバッグ用同期バス
１４０：デバッグＩ／Ｆ（従来技術）
１５０：システムデバッグ制御部（従来技術）
１６０、１６０ａ〜１６０ｄ：サブシステム
１６１、１６１ａ〜１６１ｄ：ＤＣＵ（デバッグコントロールユニット）
１６２：システムデバッグ制御部
１７０、１７０ａ〜１７０ｄ：ＣＰＵ
１８０：観測ＣＰＵ制御部
１８１：状態判定部
１８２：残り観測回数保持部
１８３：処理時間保持部
１８４：観測ＣＰＵ  Ｉ／Ｆ（観測ＣＰＵインタフェース）
１９０：デバッグＰＣ（従来技術）
１９１：デバッガ（従来技術）
１９２：デバッガ
２１０：ＣＰＵブレーク制御部（従来技術）
２１１：ブレーク条件設定部（従来技術）
２１２：ブレーク検出部（従来技術）
２１３：停止／再開部（従来技術）
２１４：ＣＰＵブレーク制御部
２２０：ＣＰＵトレース制御部（従来技術）
２２１：トレースポイント設定部（従来技術）
２２２：トレースデータ採取部（従来技術）
２２３：トレースデータ保持部（従来技術）
２３０：信号観測データメモリ書き込みプログラム
２３１：信号観測データ保持部
２３２：内部信号出力線
２３３：信号観測データ線
２３４、２３４ａ〜２３４ｄ：信号観測出力線
２３５、２３５ａ〜２３５ｄ：信号観測入力線
２３７：ＣＰＵトレース制御部
３１０：停止／再開部
３２０：内部回路
４１０：システムブレーク制御部（従来技術）
４１１：同期情報格納部（従来技術）
４１２：ブレーク選択部（従来技術）
４１３：再開選択部（従来技術）
４２０：システムトレース制御部（従来技術）
４２１：トレースデータ収集部（従来技術）
４２２：トレースデータ格納部（従来技術）
４２３：トレースデータ出力部（従来技術）
【図１】
2011118823.tif 000003
【図２】
2011118823.tif 000004
【図３】
2011118823.tif 000005
【図４】
2011118823.tif 000006
【図５】
2011118823.tif 000007
【図６】
2011118823.tif 000008
【図７】
2011118823.tif 000009
【図８】
2011118823.tif 000010
【図９】
2011118823.tif 000011
【図１０】
2011118823.tif 000012
【図１１】
2011118823.tif 000013
【図１２】
2011118823.tif 000014