(57)【要約】【課題】オンチップデバッグ回路のリアルタイムトレース機能を使い、かつトレースデータの圧縮率を高めて、データ欠落を削減することにある。【解決手段】ＣＰＵと、トレースデータを収集可能なトレース回路と、エミュレータを接続可能な外部端子とを設ける。上記トレース回路は、トレースデータを記憶可能な記憶部（３２）と、上記トレースデータの有効ビットを検索し、その検索結果に基づいて上記トレースデータのうち、有効ビットのみを上記エミュレータに出力させる有効ビット検索回路（３６）とを含む。データトレース出力において、データの上位ビットが同一数字の連続であった場合、その連続している部分がマスクされて、有効ビット部分のみがトレース情報として出力される。有効ビット以外のデータは破棄されるため、外部出力されるトレース量が削減される。このため、トレースデータの圧縮率を高めて、データ欠落を削減することができる。【選択図】図１
2010123050.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプログラムを実行可能なＣＰＵと、
ユーザプログラムが上記ＣＰＵで実行された場合のトレースデータを収集可能なトレース回路と、
上記トレースデータを取り込んで上記ユーザプログラムのデバッグを可能とするエミュレータを接続可能な外部端子と、を含む半導体装置であって、
上記トレース回路は、収集されたトレースデータを記憶可能な記憶部と、
上記記憶部内のトレースデータの有効ビットを検索し、その有効ビット検索結果に基づいて上記記憶部内のトレースデータのうち、有効ビットのみを上記エミュレータに出力させるための有効ビット検索回路と、を含み、
上記有効ビット検索回路の有効ビット検索結果に基づいて上記エミュレータに出力されるトレースデータと同一の外部端子を介してステータス情報の外部出力が可能とされ、上記トレースデータとステータス情報とを区別するための同期信号が上記トレースデータとは異なる外部端子を介して上記エミュレータに出力されることを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、さらにはチップデバッグ回路のリアルタイムトレース機能を使い、かつトレースデータの圧縮率を高めて、データ欠落を削減可能なデバッグ機能を備えた半導体装置に関する。
【背景技術】
【０００２】
ミドルレンジ系のマイクロコンピュータにおいては、ソフトウェア開発用に内部情報が全て端子から観測可能なデバッグ専用ＬＳＩが設計されていた。しかし近年では、ミドルレンジ系マイクロコンピュータにおいても、１００ＭＨｚを越えるような高速ＣＰＵ（中央処理装置）が必要になってきており、デバイス性能の問題からデバッグ専用ＬＳＩの設計が困難になりつつある。そこで、量産用ＬＳＩでもデバッグ専用ＬＳＩ並みにデバッグ容易性の高いＬＳＩが求められている。これを解決するために、従来からハイエンド系マイクロコンピュータでは、オンチップデバッグ回路を装備し、リアルタイムトレース機能を使うことで代替していた。
【０００３】
リアルタイムトレース技術としては、出力アドレスと、その前に出力されたアドレスの差分値のみを出力して、デバッグツール側で計算・復元してアドレスを得る方式（例えば特許文献１参照）や、直接分岐命令のように、ソースコード解析を行えば分岐先アドレスが分かるトレースデータに関しては、分岐元アドレスのみ記憶して、分岐先は記憶せず、トレース情報量を削減する方式（例えば特許文献２参照）が知られている。また、特定のアクセスのみ監視・トレースすることで、無駄なトレース出力を省く方式（例えば特許文献３）が知られている。
【０００４】
【特許文献１】特開２００１−１４７８３３号公報
【特許文献２】特開２００２−１７５１９８号公報
【特許文献３】特開２００７−５２６７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のリアルタイムトレース機能によれば、トレースすべきデータが欠落することがあり、特に、ミドルレンジ系では高い品質を求められる自動車などもターゲットにあることから、その改善が強く望まれている。また、上記従来技術によれば、アドレスデータの圧縮はできるものの、データ値を圧縮することができなかったり、対象がアドレスデータのみでかつ、分岐元アドレスの圧縮ができないことが、本願発明者によって見いだされた。さらに、直前の命令が分岐命令で、かつ、現在がフレームポインタ操作であるという特殊状態のみの圧縮方式では、その他の命令列では圧縮できないから、その分、圧縮効果が小さくなってしまう。
【０００６】
本発明の目的は、オンチップデバッグ回路のリアルタイムトレース機能を使い、かつトレースデータの圧縮率を高めて、データ欠落を削減できる技術を提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【０００９】
すなわち、ユーザプログラムを実行可能なＣＰＵと、トレースデータを収集可能なトレース回路と、上記ユーザプログラムのデバッグを可能とするエミュレータを接続可能な外部端子とを設ける。上記トレース回路は、収集されたトレースデータを記憶可能な記憶部と、上記記憶部内のトレースデータの有効ビットを検索し、その有効ビット検索結果に基づいて上記記憶部内のトレースデータのうち、有効ビットのみを上記エミュレータに出力させるための有効ビット検索回路とを含む。データトレース出力において、データの上位ビットが、同一数字の連続であった場合、その連続している部分がマスクされて、有効ビット部分のみがトレース情報として出力される。有効ビット以外のデータは破棄されるため、外部出力されるトレース量が削減される。このため、トレースデータの圧縮率を高めて、データ欠落を削減することができる。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００１１】
すなわち、オンチップデバッグ回路のリアルタイムトレース機能を使い、かつトレースデータの圧縮率を高めて、データ欠落を削減できる技術を提供することができる。
【発明を実施するための最良の形態】
【００１２】
１．代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１３】
〔１〕本発明の代表的な実施の形態に係る半導体装置（３０）は、ユーザプログラムを実行可能なＣＰＵ（３０１）と、ユーザプログラムが上記ＣＰＵで実行された場合のトレースデータを収集可能なデバッグ回路（３１０）と、上記トレースデータを取り込むエミュレータを接続可能な外部端子（４２）とを含む。そして、上記トレース回路は、収集されたトレースデータを記憶可能な記憶部（３２）と、上記記憶部内のトレースデータの有効ビットを検索し、その有効ビット検索結果に基づいて上記記憶部内のトレースデータのうち、有効ビットのみを上記エミュレータに出力させるための有効ビット検索回路（３６）とを含む。さらに、上記有効ビット検索回路の有効ビット検索結果に基づいて上記エミュレータに出力されるトレースデータと同一の外部端子（４２）を介して上記トレースデータ以外の情報の外部出力が可能とされ、上記トレースデータとステータス情報とを区別するための同期信号が上記トレースデータとは異なる外部端子（４１）を介して上記エミュレータに出力される。
【００１４】
上記の構成によれば、上記記憶部内のトレースデータの有効ビットを検索し、その有効ビット検索結果に基づいて上記記憶部内のトレースデータのうち、有効ビットのみを上記エミュレータに出力させることができる。これにより、出力データ量を低減することができるので、データ欠落を削減できる。また、有効ビット検索回路の有効ビット検索結果に基づいて上記エミュレータに出力されるトレースデータと同一の外部端子を介してステータス情報の外部出力が行われるため、外部端子数の低減を図ることができる。
【００１５】
２．実施の形態の説明
次に、実施の形態について更に詳述する。
＜実施の形態１＞
図１２には、本発明にかかる半導体装置の一例とされるマイクロコンピュータが示される。図１２に示されるマイクロコンピュータ３０は、特に制限されないが、ミドルレンジ系のマイクロコンピュータであり、エミュレータ２０が接続される外部端子４１，４２が設けられる。この外部端子４１，４２を介してマイクロコンピュータ３０とエミュレータ２０が互いに信号のやり取り可能に結合される。エミュレータ２０は、パーソナルコンピュータ（ＰＣ）１０に接続される。パーソナルコンピュータ（ＰＣ）１０には、上記マイクロコンピュータ３０で実行されるユーザプログラムのシミュレーションを可能とするシミュレーションプログラム１０１が搭載される。
【００１６】
上記マイクロコンピュータ３０は、特に制限されないが、中央処理装置（ＣＰＵ）３０１、リード・オンリー・メモリ（ＲＯＭ）３０２、ランダム・アクセス・メモリ（ＲＡＭ）３０３、周辺モジュール３０４、ＣＰＵインタフェース（ＣＰＵＩ／Ｆ）３０５、デバッグ用のダイレクト・メモリ・アクセス・コントローラ（ＤＢＧＤＭＡ）３０６、割り込み発行部３０７、イベント検出部３０８、通信部３０９、及びトレース回路３１０を含む。
【００１７】
ＣＰＵ３０１は、デバッグ対象とされるユーザプログラムやデバッグプログラムを実行する。ＲＯＭ３０１には、上記ＣＰＵ３０１で実行されるプログラムや各種データが格納されている。ＲＡＭ３０３は、上記ＣＰＵ３０１での演算処理の作業領域として使用される。周辺モジュールは、例えばシリアル通信を可能とするインタフェースとされ、所定の外部端子を介して外部システムに結合される。ＤＢＧＤＭＡ３０６は、ＲＡＭ３０３内のユーザプログラムデバッグに関する各種情報を通信部３０９経由で外部出力可能とする。割り込み発生部３０７は、通信部３０９やイベント検出部３０８からの割り込み要求を処理し、ＣＰＵ３０１に対してブレーク要求を行う。
【００１８】
このようなマイクロコンピュータにおいて、パーソナルコンピュータ１０上で動作するデバッグツールには、評価対象チップのシミュレータが搭載されており、かつ、ソースコードも全て把握できていている。ヘッダには、後続データに関する基本情報が記録され、このヘッダをデバッグツール側でデコードすることで、何が発生しているのかがツール側でわかり、トレース情報の解析・補完ができるようになる。
【００１９】
図１には、上記トレース回路３１０の構成例が示される。
【００２０】
上記トレース回路３１０は、図１に示されるように、コントローラ３３、先入れ先出しメモリ（ＦＩＦＯ）３２、及び整列回路３５を含む。ＦＩＦＯ３２には、上記ＣＰＵインタフェース３０５を介してトレースデータがコントローラ３３の制御によって書き込まれる。ＦＩＦＯ３２に書き込まれたデータは、コントローラ３３の制御によって読み出され、整列回路３５で所定のフォーマットに整列されてから外部端子４２を介して出力される。コントローラ３３は、有効ビット検索回路３６を含む。この有効ビット検索回路３６は、上記ＦＩＦＯ３２内のトレースデータの有効ビットを検索し、この有効ビット検索結果に基づいて上記ＦＩＦＯ３２内のトレースデータのうち、この有効ビットのみを出力させる。
【００２１】
図２には、上記有効ビット検索回路３６の構成例が示される。
【００２２】
上記有効ビット検索回路３６は、図２に示されるように、一致検出部３６１と、出力サイクル数決定回路３６２とを含む。一致検出部３６１は、複数の排他的論理和ゲート４０１と複数のナンドゲート４０２とが結合されて成る。一致検出部３６１は、データトレース出力において、下位ビットから有効ビット数を検索する。データの上位ビットが、同一数字の連続であった場合、その連続している部分がマスクされて、有効ビット部分のみがトレース情報として出力される。
【００２３】
例えばＦＩＦＯ３２が複数段のバッファを含んで成り、このＦＩＦＯ３２の出力に１段当たり「ｎ」サイクルかかるとして、有効ビット検索回路３６から「ｍ」サイクル分のデータ出力を行ったら次の段にポインタが移るようになっている。つまり、「ｎ−ｍ」サイクル分で出力されるはずのデータは、出力されることなく、ＦＩＦＯ３２において破棄される。
【００２４】
図３には、ＦＩＦＯ３２において破棄されるデータと有効データと有効データ幅の関係が示され、図４には、上記有効ビット出力のタイミングが示される。
【００２５】
クロック信号ＣＬＫの立ち上がりエッジに同期してデータ出力が行われる。ＣＭＤ１は、図４の例では、２バイトデータトレース用識別子とする。この例では３サイクル分の出力なので、１２ｂｉｔ分しかデータが無い。これにより、上位４ｂｉｔが破棄され、その分、外部出力されるトレース量が削減される。つまり、トレース情報が圧縮される。
【００２６】
ここで、本実施形態の上位ビット圧縮の比較対象とされる圧縮方法について説明する。
【００２７】
例えば図５（Ａ）に示されるように、上位２０ビットが全て「０」である場合を考える。トレースデータとそれ以外の情報、例えばステータス情報とを互いに異なる外部端子を介してエミュレータ２０に出力することが考えられるが、その場合には、トレースデータ出力用の外部端子とは別にステータス情報出力用の外部端子が必要となる。例えば図５（Ｂ）に示されるように、ステータス情報が５ｂｉｔ構成であれば、ステータス情報出力用として５ビット分の外部端子が上記トレースデータ出力用の外部端子とは別に確保する必要がある。
【００２８】
これに対して、本実施形態では、図５（Ｃ）に示されるように、ステータス情報とトレースデータとを同一の外部端子を使用して出力するようにすれば、トレースデータとステータス情報とを互いに異なる外部端子を介して出力する場合に比べて外部端子数の低減を図ることができる。尚、ステータス情報とトレースデータとを同一の外部端子を使用して出力する場合、実際に出力されているのがトレースデータであるのか、ステータス情報であるのかを区別するために、同期信号ＳＹＮＣが、上記トレースデータとステータス情報とは異なる外部端子を使って出力される。トレースデータはＳＹＮＣ信号に同期して出力されるため、このＳＹＮＣ信号によって、トレースデータとステータス情報とを区別することができる。ＳＹＮＣ信号は１ビットであるため、ステータス情報を専用端子で外部出力する場合に比べて外部端子数は少なくて済む。同期信号ＳＹＮＣは、図１２の外部端子４１を介して出力され、トレースデータは、図１２の外部端子４２を介して出力される。
【００２９】
本実施形態によれば、以下の作用効果を得ることができる。
【００３０】
一致検出部３６１は、データトレース出力において、下位ビットから有効ビット数を検索する。データの上位ビットが、同一数字の連続であった場合、その連続している部分がマスクされて、有効ビット部分のみがトレース情報として出力される。例えばＦＩＦＯ３２の出力に１段当たり「ｎ」サイクルかかるとして、有効ビット検索回路３６から「ｍ」サイクル分のデータ出力を行ったら次の段にポインタが移るようになっており、「ｎ−ｍ」サイクル分で出力されるはずのデータは、出力されることなく、ＦＩＦＯ３２において破棄されるため、外部出力されるトレース量が削減される。このため、トレースデータの圧縮率を高めて、データ欠落を削減することができる。
＜実施の形態２＞
図６には、上記トレース回路３１０の別の構成例が示される。
【００３１】
図６に示されるトレース回路３１０は、ｎ番地指定レジスタ５１、ｍ番地指定レジスタ５２、アドレス範囲抽出回路５３、アドレス比較回路５４、データマスク回路５５、及びトレース情報生成回路５６を含む。ｎ番地指定レジスタ５１及びｍ番地指定レジスタ５２は、ＣＰＵ３０１によって管理されるトレース出力空間を指定するために設けられる。ｎ番地指定レジスタ５１によってｎ番地を指定することができ、ｍ番地指定レジスタ５２によってｍ番地を指定することができる。アドレス範囲抽出回路５３で、アドレス範囲の抽出が行われ、アドレス比較回路５４でアドレス比較が行われる。このアドレス比較結果に基づいてデータマスク回路５５において、トレースされたリード／ライトデータに対するマスク処理が行われ、トレース情報生成回路５６においてトレース情報が生成される。
【００３２】
上記の構成において、メモリアクセスが発生した場合、そのレジスタで指定される空間へのアクセスのみトレース出力の対象とすることで、出力情報量を削減することができる。また空間を限定することにより、アドレス上位ビットも削減できる効果が得られ、出力するデータそのものも、アドレス情報を削減することが可能になる。このトレース出力空間指定用のレジスタ５１，５２において、例えば図７において６０１で示されるように、ｎ〜ｍ番地の間に対するアクセスに関してのみ、トレースデータの出力を行うように指定をする。具体的には、図８に示されるように、ＣＰＵ３０１によって管理されるメモリ空間として、ＲＯＭ領域、ＲＡＭ領域、ＳＦＲ領域がある場合、これら３空間において、トレースしたい空間を予め指定する。この指定により、アドレス上位ビットの出力は不要とされる。トレースしたい空間として例えばＲＯＭ空間のみを指定すると、上位３ｂｉｔが「０００」のときなので、下位２９ｂｉｔのみの出力で良い。また、トレースしたい空間として例えばＳＦＲ空間を指定すると、上位８ｂｉｔが「１１１１１１１１」のときなので、下位２４ｂｉｔのみの出力で良い。このようにして、トレース情報の圧縮が行われる。
【００３３】
＜実施の形態３＞
図９には、上記トレース回路３１０の別の構成例が示される。
【００３４】
図９に示されるトレース回路３１０は、ＲＯＭ領域終了アドレスレジスタ７１、ＲＯＭ領域先頭アドレスレジスタ７２、アドレス範囲抽出回路７３、アドレス比較回路７４、有効データ判定回路７５、及びトレース情報生成回路７６を含む。ＲＯＭ領域終了アドレスレジスタ７１には、ＲＯＭ領域終了アドレスが設定される。ＲＯＭ領域先頭アドレスレジスタ７２には、ＲＯＭ領域先頭アドレスが設定される。アドレス範囲抽出回路７３によって、アドレス範囲抽出が行われ、アドレス比較器７４において、リードアドレスとの比較が行われる。そして、有効データ判定回路７５において、上記アドレス比較結果に基づいて、有効データの判定、すなわち、リードされたデータがＲＯＭデータであるか否かの判別が行われる。この有効データ判定の結果、ＲＯＭデータとされた時点で、該当データが削除され、後段のトレース情報生成回路７６には伝達されない。このようにして、トレース情報の圧縮が行われる。
【００３５】
このように、ＲＯＭ空間に対するアクセスは、事前にＲＯＭの内容を確認しておくことができるため、レジスタで指定できるＲＯＭ空間指定領域へアクセスがあった場合のトレース情報を、エミュレータもしくはデバッグツール側で、テーブルを参照して予測して、マイクロコンピュータ３０からはデバッグトレース情報を出力しないことで、トレース量を削減することが可能になる。
【００３６】
＜実施の形態４＞
図１０には、上記トレース回路３１０の別の構成例が示される。
【００３７】
図１０に示されるトレース回路３１０は、レジスタ（ＲＥＧ）３１、先入れ先出しメモリ（ＦＩＦＯ）３２、コントローラ３３、圧縮回路３４、及び整列回路３５を含む。レジスタ３１には制御情報が設定される。コントローラ３３は、上記イベント検出部３０８の検出結果、及び上記レジスタ３１の設定情報に従って、圧縮回路３４や整列回路３５の動作を制御する。このようなシステムにおいて、トレース情報を取得する場合、そのトレースデータは、ソースデータからヘッダ・アドレス・データをトレース回路３１０内に取得して、ヘッダの加工、アドレス・データの圧縮を行い、実際のトレースデータとして出力する。
【００３８】
図１１には、図１０の整列回路３５から出力されるデータの出力フォーマット例が示される。
【００３９】
図１１（Ａ）は、トレース元データ（オペランドアクセスの例）であり、図１１（Ｂ）は、同図（Ａ）に対応するフォーマット変換後のトレースデータである。図１１（Ｃ）は、本実施形態によるオペランドアクセスデータであり、図１１（Ｄ）は、本実施形態によるハードウェア例外処理発生時の分岐アドレスが示される。マイクロコンピュータ３０から出力されるトレースデータが、ＲＯＭ空間内であった時、アクセスがあったことのみを示す識別子を１パケット出力するだけで済むため、トレース総量を著しく減少させることができ、オンチップデバッグにおいてもデータ欠落の少ないリアルタイムトレースが可能になる。
【００４０】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【図面の簡単な説明】
【００４１】
【図１】本発明にかかる半導体装置の一例とされるマイクロコンピュータにおけるデバッグ回路の構成例ブロック図である。
【図２】上記デバッグ回路における有効ビット検索回路の構成例ブロック図である。
【図３】上記デバッグ回路において破棄されるデータと有効データと有効データ幅との関係を示す説明図である。
【図４】上記デバッグ回路における有効ビット出力のタイミングを示すタイミング図である。
【図５】本実施形態の上位ビット圧縮とその比較対象とされる圧縮との違いを示すタイミング図である。
【図６】上記デバッグ回路の別の構成例ブロック図である。
【図７】上記マイクロコンピュータに含まれるＣＰＵによって管理されるメモリ空間の説明図である。
【図８】上記マイクロコンピュータに含まれるＣＰＵによって管理されるメモリ空間の説明図である。
【図９】上記デバッグ回路の別の構成例ブロック図である。
【図１０】上記デバッグ回路の別の構成例ブロック図である。
【図１１】上記デバッグ回路における整列回路から出力されるデータの出力フォーマット例説明図である。
【図１２】上記マイクロコンピュータの全体的な構成例及びユーザプログラムのデバッグ環境を示すブロック図である。
【符号の説明】
【００４２】
１０  パーソナルコンピュータ
２０  エミュレータ
３０  マイクロコンピュータ
３３  コントローラ
３５  整列回路
３６  有効ビット検索回路
３０１  ＣＰＵ
３０２  ＲＯＭ
３０３  ＲＡＭ
３０４  周辺モジュール
３０５  ＣＰＵインタフェース
３０６  ＤＢＧＤＭＡ
３０７  割り込み発行部
３０８  イベント検出部
３０９  通信部
３１０  デバッグ回路
３６１  一致検出部
３６２  出力サイクル数決定回路
【図１】
2010123050.tif 000003
【図２】
2010123050.tif 000004
【図３】
2010123050.tif 000005
【図４】
2010123050.tif 000006
【図５】
2010123050.tif 000007
【図６】
2010123050.tif 000008
【図７】
2010123050.tif 000009
【図８】
2010123050.tif 000010
【図９】
2010123050.tif 000011
【図１０】
2010123050.tif 000012
【図１１】
2010123050.tif 000013
【図１２】
2010123050.tif 000014