(57)【要約】【課題】トレースメモリを増大させることなく、デバッグ情報を外部に伝えることができる半導体集積回路を提供する。【解決手段】第１クロックＣ１に同期してイベントを実行しデバッグ情報ｄ１を生成する内部回路１８と、イベントの実イベント値が設定されたトリガイベント値に一致するブレークポイントでトリガーｄ５を発生させるイベント一致比較回路３と、トリガーｄ５により第１クロックＣ１の内部回路１８への出力を停止する第１クロックジェネレータＣＧ１と、トリガーｄ５により第２クロックＣ２を発生させる第２クロックジェネレータＣＧ２と、トリガーｄ５の発生時に生成されたデバッグ情報ｄ１を記憶し記憶したデバッグ情報ｄ１を第２クロックＣ２に同期しながら出力する記憶部１３を有する。【選択図】図１
2007128360.tif 000002
【特許請求の範囲】
【請求項１】
第１クロックに同期してイベントを実行し、デバッグ情報を生成する内部回路と、
前記イベントの実イベント値が設定されたトリガイベント値に一致するブレークポイントで、トリガーを発生させるイベント一致比較回路と、
前記トリガーにより前記第１クロックの前記内部回路への出力を停止する第１クロックジェネレータと、
前記トリガーにより、第２クロックを発生させる第２クロックジェネレータと、
前記トリガーの発生時に生成された前記デバッグ情報を記憶し、記憶した前記デバッグ情報を前記第２クロックに同期しながら出力する記憶部を有することを特徴とする半導体集積回路。
【請求項２】
前記記憶部が、前記デバッグ情報の出力が終了した終了ポイントで終了信号を発生させるカウンタを有し、
前記第２クロックジェネレータが、前記終了信号により前記第２クロックを停止し、
前記第１クロックジェネレータが、前記終了信号により前記第１クロックを再度発生させ、
前記内部回路が、前記第１クロックに同期して前記イベントの実行を継続させることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記トリガーにより前記内部回路の外部回路への外部出力を固定し、前記終了信号により前記外部出力の固定を解除するディセーブル設定回路をさらに有することを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記トリガーにより、前記内部回路を通常動作モードからデバッグモードに変更するモード変更部をさらに有し、
前記内部回路が前記記憶部を含んでおり、前記通常動作モードでは前記デバッグ情報が前記記憶部で記憶され、前記デバッグモードでは前記記憶部がスキャンチェーンを構成し、前記スキャンチェーンが前記デバッグ情報を前記第２クロックに同期しながらスキャンアウトすることを特徴とする請求項１乃至３のいずれか１項に記載の半導体集積回路。
【請求項５】
前記スキャンチェーンが、スキャンアウトされた前記デバッグ情報をスキャンインし、
前記モード変更部が、前記終了信号により前記内部回路を前記通常動作モードに変更すると前記スキャンチェーンが解消されることを特徴とする請求項４に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグが行われる半導体集積回路に関するものである。
【背景技術】
【０００２】
近年の半導体集積回路は、微細化、高速化によりスタックアット（Stack-at）不良だけではなく、トランジション（Transition）不良も増えている。スタックアット不良の場合は、再現性が高く、既存のデバッグシステムを使用すれば半導体集積回路の内部の問題に関するデバッグ情報を外部で観測することが可能であるが、トランジション不良の場合は、実際の半導体集積回路上で、かつ、実際に使用する際の動作スピードでプログラムを動作させた時にしか観測できない問題がある。トランジション不良の場合、トランジション不良が発生してからインサーキットエミュレータ（ICE）でのデバッグ作業に入ったのでは、外部で取得されたデバッグ情報が古く意味をなさず、また、トランジション不良が発生する前にインサーキットエミュレータでのデバッグ作業をした場合、インサーキットエミュレータ側への命令取得のため動作スピードが遅くなり、トランジション不良を再現性良く観測できない。
【０００３】
このため、実際の半導体集積回路を実際に使用する際の動作スピードで動作させながら、インサーキットエミュレータなどを経由せずに、デバッグ情報を外部で観測する必要がある。
【０００４】
半導体集積回路を構成し高速なクロックで動作するプロセッサの内部動作をトレースするためには、半導体集積回路を構成しプロセッサより低速で動作するバスクロックのタイミングに合わせて、プロセッサ外部へデバッグ情報を出力しなければならない。そこで、プロセッサのクロック周期毎に生成されたデバッグ情報を外部へ出力するためには、専用のトレースメモリを用意するなどして、外部にデバッグ情報を出力するまでの間、デバッグ情報をバッファする領域を持つ必要がある（例えば、特許文献１参照。）。そして、バッファされた大量なデバッグ情報をバスクロック周期毎に外部に出力するためには、多ビットの外部端子を利用しなければタイムリーに出力することができない。外部端子のビット数を減らすためには、トレースメモリの容量を大きくする必要があり、チップコストに影響を与える。容量の増大を回避するため、デバッグ情報は可能な限り圧縮して格納すればよいが、この圧縮によりデバッグ効率を落としている実態もあった。
【特許文献１】特開平１１−２１２８２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、トレースメモリを増大させることなく、デバッグ情報を外部に伝えることができる半導体集積回路を提供する。
【課題を解決するための手段】
【０００６】
本願発明の一態様によれば、第１クロックに同期してイベントを実行しデバッグ情報を生成する内部回路と、イベントの実イベント値が設定されたトリガイベント値に一致するブレークポイントでトリガーを発生させるイベント一致比較回路と、トリガーにより第１クロックの内部回路への出力を停止する第１クロックジェネレータと、トリガーにより第２クロックを発生させる第２クロックジェネレータと、トリガーの発生時に生成されたデバッグ情報を記憶し記憶したデバッグ情報を第２クロックに同期しながら出力する記憶部を有することを特徴とする半導体集積回路が提供される。
【発明の効果】
【０００７】
本発明の一態様に係る半導体集積回路によれば、トレースメモリを増大させることなく、デバッグ情報を外部に伝えることができる半導体集積回路を提供できる。
【発明を実施するための最良の形態】
【０００８】
次に、図面を参照して、本発明の実施の形態について説明する。なお、以下では本発明の実施形態を図面に基づいて説明するが、図解のためだけであり、本発明はそれらの図面に限定されるものではない。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。また、図面は模式的なものであり、厚みと平面寸法との関係、各層の厚みの比率等は現実のものとは異なることに留意すべきである。
【実施例１】
【０００９】
図１に示すように、実施例１に係る半導体集積回路１は、プロセッサ２、外部の制御回路１９、第１クロックジェネレータＣＧ１と第２クロックジェネレータＣＧ２を有している。プロセッサ２は、イベント一致比較回路３、プログラムカウンタ（ＰＣ）４、汎用レジスタ（ＧＰＲ）５、パイプライン制御ステージ記憶部６、分岐情報記憶部７、伝送パス８乃至１１、セレクタ１２、デバッグ用シリアル出力バッファ１３、情報制御部１４、ディセーブル設定回路１５と内部回路１８を有している。なお、プロセッサ２が第１クロックジェネレータＣＧ１と第２クロックジェネレータＣＧ２を含んでいても良い。
【００１０】
内部回路１８は、プログラムカウンタ（ＰＣ）４、汎用レジスタ（ＧＰＲ）５、パイプライン制御ステージ記憶部６と分岐情報記憶部７を含んでいても良い。内部回路１８は、プロセッサクロックＣ１に同期してイベントを実行し、デバッグ情報を生成する。デバッグ情報は、プログラムカウンタ４、汎用レジスタ（ＧＰＲ）５、パイプライン制御ステージ記憶部６と分岐情報記憶部７に記憶される。すなわち、デバッグ情報がプログラムカウントであればプログラムカウンタ４に記憶され、デバッグ情報が一般情報であれば汎用レジスタ５に記憶され、デバッグ情報がパイプラインの制御ステージであればパイプライン制御ステージ記憶部６に記憶され、デバッグ情報がステージの分岐情報であれば分岐情報記憶部７に記憶される。
【００１１】
イベント一致比較回路３は、イベントの実イベント値が設定されたトリガイベント値に一致するブレークポイントで、トリガーｄ５を発生させる。
【００１２】
第１クロックジェネレータＣＧ１は、トリガーｄ５によりプロセッサクロックＣ１の内部回路１８への出力を停止する。第１クロックジェネレータＣＧ１は、第１クロック制御部１６、フェイズロックトループ回路ＰＬＬ１と否定論理積ＮＡＮＤ１を有している。第１クロック制御部１６は、図５に示すようなトリガーｄ５をブレークポイント２４において受信すると、ＰＬＬ１制御信号ｄ９は、信号波形に示すようにブレークポイント２４で、１から０に変化する。フェイズロックトループ回路ＰＬＬ１は、プロセッサクロックＣ１の発振源である。否定論理積ＮＡＮＤ１は、ＰＬＬ１の発振信号とＰＬＬ１制御信号ｄ９を入力し、信号波形に示すようなプロセッサクロックＣ１を出力する。ブレークポイント２４前であれば、ＰＬＬ１制御信号ｄ９は１であり、否定論理積ＮＡＮＤ１は、ＰＬＬ１の発振信号の反転をプロセッサクロックＣ１として出力する。ブレークポイント２４後であれば、ＰＬＬ１制御信号ｄ９は０であり、否定論理積ＮＡＮＤ１の出力は１に固定され、ＰＬＬ１の発振信号は出力されない。
【００１３】
図１の第２クロックジェネレータＣＧ２は、トリガーｄ５により、デバッグ情報出力用クロックＣ２を発生させる。第２クロックジェネレータＣＧ２は、第２クロック制御部１７、フェイズロックトループ回路ＰＬＬ２と否定論理積ＮＡＮＤ２を有している。第２クロック制御部１７は、図５に示すようなトリガーｄ５をブレークポイント２４において受信すると、ＰＬＬ２制御信号ｄ１０は、信号波形に示すようにブレークポイント２４で、０から１に変化する。フェイズロックトループ回路ＰＬＬ２は、デバッグ情報出力用クロックＣ２の発振源である。外部に出力されるデバッグ情報の読みとり確率を高めるために、デバッグ情報出力用クロックＣ２の発振周波数は、プロセッサクロックＣ１の発振周波数より小さいことが望ましい。否定論理積ＮＡＮＤ２は、ＰＬＬ２の発振信号とＰＬＬ２制御信号ｄ１０を入力し、信号波形に示すようなデバッグ情報出力用クロックＣ２を出力する。ブレークポイント２４前であれば、ＰＬＬ２制御信号ｄ１０は０であり、否定論理積ＮＡＮＤ２出力Ｃ２は０に固定され、ＰＬＬ２の発振信号は出力されない。ブレークポイント２４後であれば、ＰＬＬ２制御信号ｄ１０は１であり、ＰＬＬ２の発振信号の反転をデバッグ情報出力用クロックＣ２として出力する。尚、第２クロックジェネレータＣＧ２に代えて、水晶発振器等の外部発振器及びこの外部発振器を制御する制御回路を使用してもよい。
【００１４】
情報制御部１４は、デバッグ情報選択信号ｄ４に基づいて、プログラムカウンタ４、汎用レジスタ５、パイプライン制御ステージ記憶部６と分岐情報記憶部７中のどの記憶部に記憶されたデバッグ情報を選択するかの制御を、制御線を介してセレクタ１２に対して行う。
【００１５】
セレクタ１２の入力端子には、プログラムカウンタ４、汎用レジスタ５、パイプライン制御ステージ記憶部６と分岐情報記憶部７にそれぞれ接続する伝送パスが接続する。セレクタ１２は、一つの伝送パスを選択し、選択された伝送パスを介して選択された伝送パスが接続するプログラムカウンタ４、汎用レジスタ５、パイプライン制御ステージ記憶部６と分岐情報記憶部７が、トリガーｄ５発生時に記憶しているデバッグ情報を、選択デバッグ情報ｄ１として、デバッグ用シリアル出力バッファ１３に、トリガーｄ５発生後に送信する。
【００１６】
デバッグ用シリアル出力バッファ１３は、トリガーｄ５の発生時に生成された選択デバッグ情報ｄ１を記憶し、図５のデバッグ情報出力ｄ２の信号波形に示すように、記憶した選択デバッグ情報ｄ１をデバッグ情報出力用クロックＣ２に同期しながら、デバッグ情報出力ｄ２として出力する。
【００１７】
図２に示すように、デバッグ用シリアル出力バッファ１３は、レジスタＱ１乃至Ｑ３とカウンタ２２を有している。選択デバッグ情報ｄ１は、複数の信号線によってパラレルな情報ｄ２１乃至ｄ２３ごとにレジスタＱ１乃至Ｑ３に記憶される。レジスタＱ１乃至Ｑ３はシフトレジスタ２１を構成する。レジスタＱ１乃至Ｑ３にはデバッグ情報出力用クロックＣ２が接続され、デバッグ情報出力ｄ２として、選択デバッグ情報ｄ１がｄ２３−ｄ２２−ｄ２１の順番にシリアルに出力される。カウンタ２２は、デバッグ情報出力ｄ２の出力が終了した終了ポイントで終了信号ｄ３を発生させる。カウンタ２２は、シフトレジスタ２１のレジスタＱ１乃至Ｑ３の段数からあらかじめ出力に要する所要サイクル数を記憶しておき、デバッグ情報出力用クロックＣ２の実サイクル数をカウントして、実サイクル数が所要サイクル数に達したときを終了ポイントにする。
【００１８】
また、デバッグ用シリアル出力バッファ１３は、図３に示すような構成であっても良い。デバッグ用シリアル出力バッファ１３は、レジスタＱ１乃至Ｑ３、セレクタ２３とカウンタ２２を有している。選択デバッグ情報ｄ１は、複数の信号線によってパラレルな情報ｄ２１乃至ｄ２３毎にレジスタＱ１乃至Ｑ３に記憶される。レジスタＱ１乃至Ｑ３の出力端子は、セレクタ２３の入力端子１乃至３に接続される。セレクタ２３は、カウンタ２２のカウントする実サイクル数に一致する番号が割り付けられた入力端子を選択し、選択された入力端子が接続するレジスタＱ１乃至Ｑ３に記憶された情報ｄ２１乃至ｄ２３が出力される。実サイクル数は１ずつ増加するので、デバッグ情報出力ｄ２として、選択デバッグ情報ｄ１がｄ２１−ｄ２２−ｄ２３の順番にシリアルに出力される。カウンタ２２は、同様に終了ポイントで終了信号ｄ３を発生させる。カウンタ２２は、レジスタＱ１乃至Ｑ３の個数をあらかじめ記憶しておき、デバッグ情報出力用クロックＣ２の実サイクル数をカウントして、実サイクル数がレジスタＱ１乃至Ｑ３の個数に達したときを終了ポイントにする。
【００１９】
図５の終了信号ｄ３の信号波形に示すように、終了ポイント２５で、終了信号ｄ３が生成されると、終了信号ｄ３によりＰＬＬ２制御信号ｄ１０が１から０に変化し、第２クロックジェネレータＣＧ２が、デバッグ情報出力用クロックＣ２を停止する。終了信号ｄ３によりＰＬＬ１制御信号ｄ９が０から１に変化し、第１クロックジェネレータがプロセッサクロックＣ１を再度発生させる。そして、内部回路１８がプロセッサクロックＣ１に同期してイベントの実行を継続させる。このことにより、イベント一致比較回路３は、イベントの実イベント値が別途設定されたトリガイベント値に一致する別のブレークポイントで、別のトリガーｄ５を発生させることができる。
【００２０】
ディセーブル設定回路１５は、トリガーｄ５により内部回路１８の外部の制御回路１９への外部出力ｄ７を固定し、終了信号ｄ３により外部出力ｄ７の固定を解除する。ディセーブル設定回路１５は、論理積ＡＮＤを有している。ＡＮＤは外部出力ｄ７とディセーブル信号ｄ６を入力する。図５のディセーブル信号ｄ６の信号波形に示すように、ブレークポイント２４の前後で、ディセーブル信号ｄ６は１から０に変化する。ディセーブル信号ｄ６が１であれば、出力ｄ８は、外部出力ｄ７に等しく、外部出力ｄ７は外部の制御回路１９に実質的に伝達される。一方、ディセーブル信号ｄ６が０であれば、出力ｄ８は０に固定され、外部出力ｄ７は外部の制御回路１９に伝達されない。プログラムカウンタ４、汎用レジスタ５、パイプライン制御ステージ記憶部６と分岐情報記憶部７に記憶されたデバッグ情報は、プロセッサクロックＣ１の停止中は保持されることが、イベントの実行の継続の前提条件である。デバッグ情報の保持のために外部の制御回路１９も含めた状態の保持につとめる必要がある。但し、図１に示す構成に関しては、必ずしも外部の制御回路１９への状態を固定する必要はない。
【００２１】
次に、実施例１に係る半導体集積回路１を用いたデバッグ方法について説明する。
【００２２】
図４に示すように、ステップＳ１で、第１クロックジェネレータＣＧ１がプロセッサクロックＣ１を発生させる。内部回路１８、更には、プロセッサ２が、プロセッサクロックＣ１に同期して動作し、全体のデバッグ情報を生成する。
【００２３】
ステップＳ２で、オペレータが、ブレークポイント２４を発生させるイベントの識別子ｄ１１と、ブレークポイント２４に対応するトリガイベント値ｄ１２を、イベント一致比較回路３に入力する。また、オペレータが、デバッグ可能な全体デバッグ情報からデバッグしたい選択デバッグ情報ｄ１を選択するデバッグ情報選択信号ｄ４を入力する。
【００２４】
ステップＳ３で、イベント一致比較回路３が、オペレータに特定されたイベントにおいて、ブレークポイント２４に対応するトリガイベント値を設定する。
【００２５】
ステップＳ４で、セレクタ１２が、デバッグ情報選択信号ｄ４に基づいて、全体デバッグ情報の伝送パス８乃至１１の中から選択された選択デバッグ情報ｄ１の伝送パスを選択する。
【００２６】
ステップＳ５で、イベント一致比較回路３が、イベントの実イベント値がトリガイベント値に一致するブレークポイント２４の際に、トリガーｄ５を発生させる。
【００２７】
ステップＳ６で、第１クロックジェネレータＣＧ１がトリガーｄ５を受信し、プロセッサクロックＣ１が次のエッジを発生させる前に出力レベルを固定させて、プロセッサクロックＣ１のプロセッサ２への出力を停止する。
【００２８】
ステップＳ７で、デバッグ用シリアル出力バッファ１３は、トリガーｄ５発生時に、プログラムカウンタ４、汎用レジスタ５、パイプライン制御ステージ記憶部６、分岐情報記憶部７において記憶されていた選択デバッグ情報をコピーして記憶する。
【００２９】
ステップＳ８で、ディセーブル設定回路１５が、プロセッサ２の外部の制御回路１９が動作しないように、プロセッサ２の外部の制御回路１９への外部出力ｄ７を固定する。
【００３０】
ステップＳ９で、第２クロックジェネレータＣＧ２が、ブレークポイント２４以降、プロセッサクロックＣ１より低速のデバッグ情報出力用クロックＣ２を発生させる。デバッグ用シリアル出力バッファ１３が、選択デバッグ情報ｄ１をデバッグ情報出力用クロックＣ２に同期しながらプロセッサ２の外部に出力する。オペレータは、選択デバッグ情報ｄ１をデバッグ情報出力ｄ２として取得する。
【００３１】
ステップＳ１０で、第２クロックジェネレータＣＧ２が、選択デバッグ情報ｄ１の出力が終了した終了ポイント２５で、デバッグ情報出力用クロックＣ２を停止させる。
【００３２】
ステップＳ１１で、ディセーブル設定回路１５が、終了ポイント２５以降に、プロセッサ２の外部の制御回路１９への外部出力ｄ７の固定を解除する。
【００３３】
ステップＳ１２で、イベント一致比較回路３が、オペレータに別途特定されたイベントにおいて、別のブレークポイント２４に対応する別のトリガイベント値を設定する。セレクタ１２が、デバッグ情報選択信号ｄ４に基づいて、別途選択された選択デバッグ情報ｄ１の伝送パスを選択する。
【００３４】
ステップＳ１３で、第１クロックジェネレータＣＧ１が、終了ポイント２５以降に、固定された出力レベルからエッジを発生させるように、プロセッサクロックＣ１を再度、発生させる。プロセッサ２が、プロセッサクロックＣ１に同期して動作を継続させる。
【００３５】
ステップＳ１４で、情報制御部１４が、プロセッサ２の動作が終了したか判定する。プロセッサ２の動作が終了していれば、デバッグ方法を終了させる。プロセッサ２の動作が終了していなければ、ステップＳ５に戻る。
【００３６】
実施例１によれば、設定したブレークポイント２４で、トリガーｄ５を発生させて、プロセッサクロックＣ１を停止し、デバッグ用シリアル出力バッファ１３にコピーされた各種デバッグ情報をプロセッサクロックＣ１とは別系統のデバッグ情報出力用クロックＣ２で外部に出力する。出力が終了した終了ポイント２５でプロセッサクロックＣ１を再開すれば、プロセッサクロックＣ１を停止したサイクルがスピード的に問題となっている部分でない限り、実際に使用する動作スピード下と同じ環境で、デバッグ情報を外部で観測することができる。そして、余分なトレースメモリを有することなく、内部のデバッグ情報を引き出すことができる。また、デバッグ情報出力用クロックＣ２を遅くすれば、デバッグ用シリアル出力バッファ前段のセレクタ１２にバッファを介してプログラムカウンタ４、汎用レジスタ５、パイプライン制御ステージ記憶部６と分岐情報記憶部７を接続すれば、デバッグ情報を引き出すことができるので容易に実装できる。
【００３７】
また、実施例１によれば、デバッグ情報の引き出し処理が終了したら、自動的にプロセッサクロックＣ１の停止を解除し、プロセッサ２は動作を再開できるので、解析途中のデバッグ情報をICEの処理を経由することなく、外部で観測することが可能である。
【実施例２】
【００３８】
図６に示すように、実施例２に係る半導体集積回路１は、図１の半導体集積回路１と比較して、第２クロックジェネレータＣＧ２の構造が異なっている。また、複数のプロセッサ２、２９を有しており、新たにプロセッサ２９が加わっている点が異なっている。
【００３９】
第２クロックジェネレータＣＧ２は、分周器２７、２８と否定論理和ＮＯＲを有している。分周器２７、２８は、ＰＬＬ１から出力されるクロックを分周したクロックを出力する。ＮＯＲは、分周されたクロックとＰＬＬ１制御信号ｄ９を入力し、図５の信号波形に示すようなデバッグ情報出力用クロックＣ２を出力する。ブレークポイント２４前であれば、ＰＬＬ１制御信号ｄ９は１であり、ＮＯＲの出力Ｃ２は０に固定され、分周されたＰＬＬ１の発振信号は出力されない。ブレークポイント２４後であれば、ＰＬＬ１制御信号ｄ９は０であり、分周されたＰＬＬ１の発振信号の反転をデバッグ情報出力用クロックＣ２として出力する。ＰＬＬ１を１つだけ用いて、デバッグ情報出力用クロックＣ２の発振周波数を、プロセッサクロックＣ１の発振周波数より小さくすることができる。
【００４０】
プロセッサ２９は、実施例１のプロセッサ２と同じ構造をしている。オペレータは、イベント識別子ｄ４１、トリガイベント値ｄ４２、デバッグ情報選択信号ｄ３４を入力することができる。プロセッサ２９には、プロセッサクロックＣ１とデバッグ情報出力用クロックＣ２が入力される。プロセッサ２９からは、トリガーｄ３５、終了信号ｄ３３、外部出力ｄ３８とデバッグ情報出力ｄ３２が出力される。トリガーｄ３５は、トリガーｄ５と同様に発生し機能する。終了信号ｄ３３も、終了信号ｄ３と同様に発生し機能する。外部出力ｄ３８は、外部出力ｄ８と同様にディセーブルをかけることができる。デバッグ情報出力ｄ３２は、デバッグ情報出力ｄ２と同様に出力されたデバッグ情報である。
【００４１】
複数のプロセッサを有するマルチプロセッサの場合、片方のプロセッサ２、２９だけのトリガーｄ５、ｄ３５がマッチした場合でも、プロセッサクロックＣ１とデバッグ情報出力用クロックＣ２を共有することにより、マッチした時のデバッグ情報ｄ２、ｄ３２を両方同時に出力することが可能である。
【実施例３】
【００４２】
図７に示すように、実施例３に係る半導体集積回路１は、デバッグモードでは、レジスタＱ１乃至Ｑ３で構成されるスキャンチェーンと順序回路３４乃至３６を形成する内部回路を有している。さらに、半導体集積回路１は、イベント一致比較回路３、ディセーブル設定回路１５、モード変更部３１、スキャンイネーブル信号生成部３２、カウンタ２２、第１クロックジェネレータＣＧ１、第２クロックジェネレータＣＧ２とセレクタ３３を有している。
【００４３】
実施例３の半導体集積回路１の実施例１の半導体集積回路１との相違点は、情報制御部１４とセレクタ１２が省略されている点である。レジスタＱ１乃至Ｑ３で構成されるスキャンチェーンは、デバッグ用シリアル出力バッファ１３と、プログラムカウンタ４、汎用レジスタ５、パイプライン制御ステージ記憶部６と分岐情報記憶部７を兼用していると考えられる。すなわち、通常動作モードでは、レジスタＱ１乃至Ｑ３はスキャンチェーンを構成せず汎用レジスタ５等のように機能し、デバッグ情報を記憶する。デバッグモードでは、レジスタＱ１乃至Ｑ３で構成されたスキャンチェーンは、デバッグ用シリアル出力バッファ１３のように機能し、デバッグ情報を出力する。したがって、セレクタ３３は、兼用するレジスタＱ１乃至Ｑ３のクロックをモード毎に切り替えるために用いている。また、図７のカウンタ２２は、図２のカウンタ２２と同様に機能し、デバッグ情報出力用クロックＣ２をカウントして終了信号を出力する。
【００４４】
そして、モード変更部３１は、トリガーｄ５により、内部回路を通常動作モードからデバッグモードに変更する。また、モード変更部３１は、終了信号ｄ３により内部回路を通常動作モードに変更する。
【００４５】
スキャンイネーブル信号生成部３２は、デバッグモードにおいて、スキャンイネーブル信号を出力する。通常動作モードでは、スキャンイネーブル信号は出力されない。
【００４６】
レジスタＱ１乃至Ｑ３は、スキャンイネーブル信号により、スキャンチェーンを構成する。スキャンイネーブル信号が無くなると、スキャンチェーンは解消する。
【００４７】
次に、実施例３に係る半導体集積回路１を用いたデバッグ方法について説明する。
【００４８】
図８に示すように、ステップＳ２１で、第１クロックジェネレータＣＧ１がプロセッサクロックＣ１を発生させる。内部回路が、プロセッサクロックＣ１に同期して、通常動作モードで動作し、デバッグ情報を生成する。レジスタＱ１乃至Ｑ３では、デバッグ情報が記憶される。
【００４９】
ステップＳ２２で、オペレータが、図５のブレークポイント２４を発生させるイベントの識別子ｄ１１と、ブレークポイント２４に対応するトリガイベント値ｄ１２を、イベント一致比較回路３に入力する。
【００５０】
ステップＳ２３で、イベント一致比較回路３が、オペレータに特定されたイベントにおいて、ブレークポイント２４に対応するトリガイベント値ｄ１２を設定する。
【００５１】
ステップＳ２４で、セレクタ３３が、プロセッサクロックＣ１を入力する入力端を選択する。モード変更部３１が、通常動作モードに設定する。
【００５２】
ステップＳ２５で、イベント一致比較回路３が、イベントの実イベント値がトリガイベント値ｄ１２に一致するブレークポイント２４の際に、トリガーｄ５を発生させる。
【００５３】
ステップＳ２６で、第１クロックジェネレータＣＧ１がトリガーｄ５を受信し、プロセッサクロックＣ１が次のエッジを発生させる前に出力レベルを固定させて、プロセッサクロックＣ１の内部回路への出力を停止する。
【００５４】
ステップＳ２７で、レジスタＱ１乃至Ｑ３は、トリガーｄ５発生に記憶していたデバッグ情報を保持する。
【００５５】
ステップＳ２８で、モード変更部３１は、トリガーｄ５により、通常動作モード信号からデバッグモード信号に変更して出力し、内部回路を通常動作モードからデバッグモードに変更する。スキャンイネーブル信号生成部３２は、デバッグモード信号に基づいてスキャンイネーブル信号をレジスタＱ１乃至Ｑ３に送信する。レジスタＱ１乃至Ｑ３はスキャンチェーンを構成する。セレクタ３３が、デバッガ情報出力用クロックＣ２を入力する入力端を選択する。この選択により、図５の変速クロックＣ３に示すように、ブレークポイント２４の前から後でクロックの発振周波数が低下するような変速クロックＣ３を、セレクタ３３は出力することができる。
【００５６】
ステップＳ２９で、ディセーブル設定回路１５が、内部回路の外部の制御回路が動作しないように、内部回路の外部の制御回路への外部出力ｄ８を固定する。
【００５７】
ステップＳ３０で、第２クロックジェネレータＣＧ２が、トリガーｄ５により、プロセッサクロックＣ１より低速のデバッグ情報出力用クロックＣ２を発生させる。レジスタＱ１乃至Ｑ３により構成されたスキャンチェーンが、デバッグ情報出力用クロックＣ２に同期したスキャンアウト（ScanIn）とスキャンアウト（ScanOut）により、デバッグ情報を半導体集積回路１の外部に出力する。この出力により、オペレータはデバッグ情報を取得することができる。また、出力されたデバッグ情報は、出力と同時にスキャンチェーンに戻し、レジスタＱ１乃至Ｑ３に再度、トリガーｄ５発生時のデバッグ情報を再度記憶させ保持させる。具体的には、レジスタＱ１に記憶されていたデバッグ情報は、レジスタＱ１から、Ｑ２、Ｑ３へのスキャンインとスキャンアウトを経て、外部に出力されると共に、再度レジスタＱ１に記憶される。レジスタＱ２に記憶されていたデバッグ情報は、レジスタＱ２から、Ｑ３へのスキャンインとスキャンアウトを経て、外部に出力されると共に、レジスタＱ１へのスキャンインとスキャンアウトを経て、再度レジスタＱ２に記憶される。レジスタＱ３に記憶されていたデバッグ情報は、スキャンアウトを経て、外部に出力されると共に、レジスタＱ１とＱ２へのスキャンインとスキャンアウトを経て、再度レジスタＱ３に記憶される。
【００５８】
ステップＳ３１で、カウンタ２２が、デバッグ情報出力用クロックＣ２をカウントし、このカウント値がスキャンチェーンが有するレジスタＱ１乃至Ｑ３の段数に達する終了ポイントで、終了信号ｄ３を発生させる。
【００５９】
ステップＳ３２で、第２クロックジェネレータＣＧ２が、終了信号ｄ３を受信すると、デバッグ情報出力用クロックＣ２の出力を停止する。
【００６０】
ステップＳ３３で、モード変更部３１は、終了信号ｄ３により、出力をデバッグモード信号から通常動作モード信号に変更する。スキャンイネーブル信号生成部３２は、通常動作モード信号に基づいてスキャンイネーブル信号の送信を停止する。内部回路がデバッグモードから通常動作モードに移行し、スキャンチェーンが解消される。セレクタ３３が、終了信号ｄ３により、プロセッサクロックＣ１を入力する入力端を選択する。イベント一致比較回路３が、トリガイベント値等を再設定する。
【００６１】
ステップＳ３４で、ディセーブル設定回路１５が、終了信号ｄ３により、半導体集積回路１の外部の制御回路への外部出力ｄ８の固定を解除する。
【００６２】
ステップＳ３５で、第１クロックジェネレータＣＧ１が、終了信号ｄ３により、固定された出力レベルからエッジを発生させるように、プロセッサクロックＣ１を再度、発生させる。内部回路が、プロセッサクロックＣ１に同期して、通常動作モードで動作を継続する。図５の変速クロックＣ３に示すように、内部回路を構成するレジスタＱ１乃至Ｑ３に接続する変速クロックＣ３は、終了ポイント２５において、デバッグ情報出力用クロックＣ２の発振周波数からプロセッサクロックＣ１の発振周波数に変調される。
【００６３】
ステップＳ１４で、モード変更部３１が、内部回路の動作が終了したか判定する。内部回路の動作が終了していれば、デバッグ方法を終了させる。内部回路の動作が終了していなければ、ステップＳ２５に戻る。
【００６４】
デバッグモードにおいて、スキャンチェーンを通じて外部で観測しながら、同時にスキャンインを通じてデバッグ情報をスキャンチェーンに戻している。このことにより、スキャンチェーンを構成するレジスタＱ１乃至Ｑ３に記憶されている情報が外部に吐き出た段階で、デバッグモードに遷移する前の状態に戻って記憶されていることになる。したがって、通常動作モードに戻り、次のクロックから内部回路の動作を、停止時の状態からそのまま継続することができる。記憶の状態をデバッグモードに遷移する前の通常状態に自動的に戻すことができるので、時間的な効率をはかることも可能である。もちろん、オペレータは、内部回路のデバッグ情報をシリアル出力であるスキャンアウトから得ることができる。
【００６５】
また、通常動作モードでの高速動作は保障されても、スキャンチェーンまでが高速な状態で動作するとは限らない。低速でしか動作しない場合に備え、また、高速なデバッグ情報出力ｄ２が外部入出力（I/O）回路をスイッチングすることが難しい場合に備え、デバッグモードに入ったら低速なクロックＣ２に自動的に置き換わる仕組みも有している。
【００６６】
スキャンチェーンを構成するレジスタＱ１乃至Ｑ３に記憶されたデバッグ情報を順にシフトさせた場合、レジスタＱ１乃至Ｑ３に接続する順序回路３４乃至３６を通じて、半導体集積回路１の外部出力ｄ８をスイッチングさせてしまう。このスイッチングにより、半導体集積回路１に接続された各種周辺ブロックや、オンボード上の各種チップを誤動作させてしまう危険がある。この危険を回避するために、スキャンシフト時に外部出力ｄ８をディセーブルさせる仕組みも備えている。実施例３ではＡＮＤゲートによりディセーブルしているが、外部出力ｄ８を入出力させる回路によってはラッチ等でブレークポイント前の状態を保持する必要がある。
【００６７】
なお、実施例３のように、デバッグ情報を記憶する記憶部がフリップフロップ（F/F）のようなレジスタであれば、スキャンチェーンを使用することができるが、記憶部がメモリの場合はそうはいかない。メモリの場合は、図３のレジスタＱ１乃至Ｑ３をメモリとし、カウンタ２２とセレクタ２３を転用して、メモリのアドレスやリード信号を順番に選択することにより、デバッグ情報をシリアル出力できる。
【００６８】
実施例３によれば、専用のデバッグ用シリアル出力バッファを用意することなく、既存のスキャンチェーンを利用し、外部へデバッグ情報を出力することが可能なので、追加のピンも用意する必要がない。
【００６９】
実施例１乃至３は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、実施例１乃至３によって本発明の技術的範囲が限定的に解釈されてはならないものである。本発明は、その技術的思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。すなわち、本発明の特許請求の範囲を逸脱しない範囲で、変更・改良や一部転用などが可能であり、これらすべて本発明の請求範囲内に包含されるものである。
【図面の簡単な説明】
【００７０】
【図１】本発明の一実施形態に係る半導体集積回路の構成図である。
【図２】デバッグ用シリアル出力バッファの構成図（その１）である。
【図３】デバッグ用シリアル出力バッファの構成図（その２）である。
【図４】本発明の一実施形態に係る半導体集積回路でのデバッグ方法のフローチャートである。
【図５】デバッグ方法の実施の際の各種信号の波形図である。
【図６】本発明の一実施形態に係る半導体集積回路の構成図である。
【図７】本発明の一実施形態に係る半導体集積回路の構成図である。
【図８】本発明の一実施形態に係る半導体集積回路でのデバッグ方法のフローチャートである。
【符号の説明】
【００７１】
１    半導体集積回路
２    プロセッサ
３    イベント一致比較回路
４    プログラムカウンタ（ＰＣ）
５    汎用レジスタ（ＧＰＲ）
６    パイプライン制御ステージ記憶部
７    分岐情報記憶部
８乃至１１    伝送パス
１２    セレクタ
１３    デバッグ用シリアル出力バッファ
１４    情報制御部
１５    ディセーブル設定回路
１６    第１クロック制御部
１７    第２クロック制御部
１８    内部回路
１９    外部の制御回路
２１    シフトレジスタ
２２    カウンタ
２３    セレクタ
２４    ブレークポイント
２５    終了ポイント
２７、２８    分周器
２９    プロセッサ
３１    モード変更部
３２    スキャンイネーブル信号生成部
３３    セレクタ
３４乃至３６    順序回路
【図１】
2007128360.tif 000003
【図２】
2007128360.tif 000004
【図３】
2007128360.tif 000005
【図４】
2007128360.tif 000006
【図５】
2007128360.tif 000007
【図６】
2007128360.tif 000008
【図７】
2007128360.tif 000009
【図８】
2007128360.tif 000010