(57)【要約】  【課題】  デバッグシステムに接続することによりエミュレーションシステムを実現する半導体集積回路において、デバッグのために要する回路規模をあまり大きくすることなく、外部との間で通信を行うための端子数を低減する。  【解決手段】  この半導体集積回路は、外部との間で信号を送受信するための第１の端子Ｐ３と、外部に信号を送信するための第２及び第３の端子Ｐ２及びＰ１と、第１及び第２の選択回路６１及び６２と、第１の端子を介して外部から受信した第１の信号に基づいてデバッグモードの開始を検出して、デバッグ可能な状態にあることを表す第２の信号及びクロック信号を第２及び第３の端子にそれぞれ供給するように選択回路を制御し、第１の信号に基づいてデバッグモードの終了を検出して、第２及び第３の端子を他の回路に接続するように選択回路を制御するＣＰＵ１２とを具備する。【選択図】  図１
2007034881.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵを内蔵し、デバッグシステムに接続することによりエミュレーションシステムを実現することが可能な半導体集積回路であって、
前記半導体集積回路と外部との間で信号を送受信するための第１の端子と、
前記半導体集積回路から外部に信号を送信するための第２の端子及び第３の端子と、
前記ＣＰＵにおいて生成される信号を前記第２の端子に選択的に供給する第１の選択回路と、
前記半導体集積回路において用いられるクロック信号を前記第３の端子に選択的に供給する第２の選択回路と、
前記第１の端子を介して外部から受信した第１の信号に基づいてデバッグモードの開始を検出して、デバッグ可能な状態にあることを表す第２の信号及びクロック信号を前記第２及び第３の端子にそれぞれ供給するように前記第１及び第２の選択回路を制御すると共に、第１の信号に基づいてデバッグモードの終了を検出して、前記第２及び第３の端子を前記半導体集積回路に内蔵されている他の回路に接続するように前記第１及び第２の選択回路を制御する前記ＣＰＵと、
を具備する半導体集積回路。
【請求項２】
前記ＣＰＵが、デバッグモードにおいてデバッグ用モニタプログラムに含まれている命令を実行して得られたデータを、前記第１の端子を介して外部に送信する、請求項１記載の半導体集積回路。
【請求項３】
前記第１及び第２の選択回路が、デバッグモードが終了したときに、前記第２の端子及び第３の端子を前記半導体集積回路に内蔵されている汎用入出力レジスタに接続する、請求項１又は２記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵを内蔵する半導体集積回路であって、デバッグシステムに接続することにより当該半導体集積回路自体を用いたエミュレーションシステムを実現することが可能な半導体集積回路に関する。
【背景技術】
【０００２】
近年、ゲーム装置、カーナビゲーションシステム、プリンタ、携帯情報端末等の電子機器に組み込まれ、ＣＰＵを始めとする複数の処理機能を１つのチップに組み込んだシステムオンチップと呼ばれる半導体集積回路に対する需要が高まっている。このような半導体集積回路は、通常、ターゲットシステムを構成するユーザボードに実装される。そして、このターゲットシステムを動作させるソフトウェアのデバッグ作業を行うために、イン−サーキット・エミュレータ（ＩＣＥ：登録商標）と呼ばれるソフトウェア開発支援システム（デバッグシステム）が広く使用されている。このようなデバッグ作業において、ユーザは、ＩＣＥを用いてプログラムのバグを見つけ出し、フラッシュメモリ等に格納されているプログラムを修正して書き換える。
【０００３】
一般的に、マイクロコンピュータを用いたターゲットシステムのデバッグにおいては、ＣＰＵ置き換え型と呼ばれるＩＣＥが主流を占めていた。ＣＰＵ置き換え型ＩＣＥにおいては、デバッグ時に、ターゲットシステムからマイクロコンピュータを取り外して、その代わりにデバッグツールのプローブを接続し、デバッグツールがマイクロコンピュータの動作をエミュレート（模倣）することによりデバッグを行う。
【０００４】
しかしながら、ＣＰＵ置き換え型ＩＣＥによれば、マイクロコンピュータのピン数が多くなると、プローブや配線の数が増加してしまうという欠点があった。そのため、マイクロコンピュータの高速動作をエミュレートすることは困難である。また、マイクロコンピュータをターゲットシステムに実装して動作させる実動作時と、デバッグツールがマイクロコンピュータの動作をエミュレートするデバッグ時との間で、ターゲットシステムの動作環境が変化してしまう。
【０００５】
そこで、このようなＣＰＵ置き換え型ＩＣＥの欠点を解消するために、モニタプログラム実装型ＩＣＥが用いられるようになった。モニタプログラム実装型ＩＣＥにおいては、ターゲットシステムに実装されているメモリにモニタプログラムが格納され、マイクロコンピュータがモニタプログラムを実行することによってデバッグが行われる。
【０００６】
しかしながら、モニタプログラム実装型ＩＣＥによれば、プログラムのロード、ＧＯ、ステップ実行、メモリのリード・ライト、内部レジスタのリード・ライト、ブレークポイントの設定・解除を含む全てのデバッグコマンドを実行する機能を、モニタプログラムに持たせる必要があった。従って、モニタプログラムの命令コードサイズが非常に大きくなって、ユーザが自由に使用できるメモリ領域が減ってしまうという問題があった。
【０００７】
一方、モニタＲＯＭ方式と呼ばれるデバッグ方式も開発されている。モニタＲＯＭ方式においては、ターゲットシステム毎に、通信インタフェースとして通信専用入出力ポートが設定され、ポートアドレスやポートのビット線毎に機能が割り付けられ、ホストシステム側の汎用通信インタフェースとターゲットシステム側の通信専用入出力ポートとの間でデバッグコマンドやデバッグデータを交換するための通信プロトコル及び通信ソフトが、ターゲットシステムとホストシステムとの双方において設計される。
【０００８】
しかしながら、ホストシステムとターゲットシステムとの間で通信を行うために、ターゲットシステムに実装される半導体集積回路において、通常は使用されないデバッグ専用端子の数が増加して、ユーザボードの設計難易度が上昇し、それに伴って信頼性が低下してしまう。また、開発コストの上昇や、開発期間の増大等の問題が生じる。
【０００９】
関連する技術として、下記の特許文献１には、ユーザターゲットシステム上のマイクロプロセッサにデバッグ機能を備えることによって、ユーザターゲットシステムとデバッガとの接続に要する信号を削減したデバッグシステムが開示されている。マイクロプロセッサは、プロセッサコアとデバッグモジュールから構成される。プロセッサコアは、プロセッサバスを介してメモリやＩ／Ｏにアクセスし、プログラムを実行する。また、プロセッサコアは、内部デバッグインタフェースとプロセッサバスによって、デバッグモジュールに接続されている。デバッグモジュールは、外部デバッグインタフェースによって、デバッガに接続されている。しかしながら、デバッグモジュールの規模が大きく、また、特許文献１の図２に示されているように、マイクロプロセッサのデバッグモジュールとデバッガとの間で通信される信号の数は６つであり、マイクロプロセッサの端子数をさらに低減することが望まれる。
【００１０】
下記の特許文献２には、オンチップデバッグ機能を備え、ユーザモード及びデバッグモードを有するマイクロコンピュータが開示されている。このマイクロコンピュータは、ＣＰＵと、オンチップデバッグ部と、強制ブレーク制御部と、クロック生成部とを含んでいる。オンチップデバッグ部は、デバッグモード時に、デバッグツールとの間でデバッグ情報の送受信を行い、デバッグ用プログラムを実行して種々のデバッグ処理を行う。また、マイクロコンピュータは、デバッグ用端子として、２つの端子ＳＩＯＤ及びＢＣＬＫを有している。特許文献２によれば、マイクロプロセッサの端子数は減るものの、図８に示されているミニモニタＲＡＭやミニモニタＲＯＭを始め、デバッグのために要する回路規模が大きくなってしまう。
【特許文献１】特開平８−２５５０９６号公報（第６−７頁、図１、図２）
【特許文献２】特開平１１−２８２７１９号公報（第３−５頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
そこで、上記の点に鑑み、本発明は、ＣＰＵを内蔵する半導体集積回路であって、デバッグシステムに接続することにより当該半導体集積回路自体を用いたエミュレーションシステムを実現することが可能な半導体集積回路において、デバッグのために要する回路規模をあまり大きくすることなく、外部との間で通信を行うための端子数を低減することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の１つの観点に係る半導体集積回路は、ＣＰＵを内蔵し、デバッグシステムに接続することによりエミュレーションシステムを実現することが可能な半導体集積回路であって、半導体集積回路と外部との間で信号を送受信するための第１の端子と、半導体集積回路から外部に信号を送信するための第２の端子及び第３の端子と、ＣＰＵにおいて生成される信号を第２の端子に選択的に供給する第１の選択回路と、半導体集積回路において用いられるクロック信号を第３の端子に選択的に供給する第２の選択回路と、第１の端子を介して外部から受信した第１の信号に基づいてデバッグモードの開始を検出して、デバッグ可能な状態にあることを表す第２の信号及びクロック信号を第２及び第３の端子にそれぞれ供給するように第１及び第２の選択回路を制御すると共に、第１の信号に基づいてデバッグモードの終了を検出して、第２及び第３の端子を半導体集積回路に内蔵されている他の回路に接続するように第１及び第２の選択回路を制御するＣＰＵとを具備する。
【００１３】
ここで、ＣＰＵが、デバッグモードにおいてデバッグ用モニタプログラムに含まれている命令を実行して得られたデータを、第１の端子を介して外部に送信するようにしても良い。また、第１及び第２の選択回路が、デバッグモードが終了したときに、第２の端子及び第３の端子を半導体集積回路に内蔵されている汎用入出力レジスタに接続するようにしても良い。
【発明の効果】
【００１４】
本発明によれば、ＣＰＵが、第１の端子を介して外部から受信した第１の信号に基づいてデバッグモードの開始又は終了を検出して第２及び第３の端子の接続を変更するように第１及び第２の選択回路を制御することにより、デバッグのために要する回路規模をあまり大きくすることなく、外部との間で通信を行うための端子数を低減することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図１は、本発明の一実施形態に係る半導体集積回路をデバッグシステムと共に示すブロック図である。半導体集積回路１０は、複数の処理機能を１つのチップに組み込んだシステムオンチップと呼ばれるものであり、クロックリセットコントローラ１１と、ＣＰＵ（中央処理装置）１２と、ユーザプログラム等を格納するメモリ１３と、ＵＳＢ端子を介して外部と接続を行うためのＵＳＢインタフェース１４と、画像処理を行う画像処理部１５と、液晶ディスプレイ等の表示モジュール５０を制御する表示制御部１６と、汎用（ジェネラルパーパス）の信号を入出力するために用いられるレジスタ等のＧＰＩＯ回路１７と、ＧＰＩＯ回路１７に接続されたメモリ１８及びＤＡＣ（ディジタル／アナログ変換器）１９等の汎用回路と、外部接続端子Ｐ１及びＰ２の接続を切り換えるための選択回路６１及び６２とを内蔵している。各部１２〜１７は、バスラインを介して互いに接続されている。
【００１６】
クロックリセットコントローラ１１は、外部からクロック信号とリセット信号を受信して、これらの信号に基づいてＣＰＵ１２の動作を制御する。ＣＰＵ１２は、システムの動作に必要な場合に、メモリ１３に格納されているユーザプログラムに基づいて動作すると共に、デバッグコマンドの内容等を格納するデバッグモニタＲＯＭ１２ａを有しており、デバッグシステム２０によるデバッグの対象となる。
【００１７】
デバッグモード以外の通常動作モードにおいては、選択回路６１及び６２が、外部接続端子Ｐ１及びＰ２をＧＰＩＯ回路１７に接続するので、外部接続端子Ｐ１及びＰ２は、ＧＰＩＯ回路１７において使用される信号ＧＰＩＯ１及びＧＰＩＯ２を送信又は受信するために用いられる。一方、デバッグモードにおいては、選択回路６１及び６２が、クロック信号ＤＣＬＫ及び状態信号ＤＳＴ２を外部接続端子Ｐ１及びＰ２にそれぞれ供給するように接続を変更するので、外部接続端子Ｐ１及びＰ２は、クロック信号ＤＣＬＫ及び状態信号ＤＳＴ２を送信するために用いられる。
【００１８】
デバッグモードにおいて、半導体集積回路１０は、外部接続端子Ｐ１〜Ｐ３及び接地端子ＰＧを介して、デバッグシステム２０に接続される。半導体集積回路１０は、デバッグシステム２０に対して、クロック信号ＤＣＬＫを端子Ｐ１から送信し、ＣＰＵ１２の状態を表す状態信号ＤＳＴ２を端子Ｐ２から送信すると共に、デバッグシステム２０との間で、双方向通信用の端子Ｐ３及び双方向通信ラインＤＳＩＯを介して各種の信号を送受信する。
【００１９】
デバッグを開始する際に、デバッグシステム２０は、ＣＰＵ１２をデバッグモードに移行させるためのモード信号を、双方向通信ラインＤＳＩＯを介して半導体集積回路１０に送信すると共に、半導体集積回路１０から状態信号ＤＳＴ２を受信する。ＣＰＵ１２がデバッグ可能な状態にある場合には、デバッグシステム２０が、デバッグ用モニタプログラムに含まれている命令をＣＰＵ１２に実行させ、その結果得られたデータを、双方向通信ラインＤＳＩＯを介して半導体集積回路１０から受信する。
【００２０】
デバッグシステム２０は、ＣＰＵ１２との間で信号の送受信を行うためのデバッグツール３０と、デバッグツール３０にＲＳ２３２Ｃインタフェース及びパラレルインタフェース又はＵＳＢインタフェースを介して接続され、ターゲットとなるＣＰＵ１２において実行されるユーザプログラムのデバッグを行うホストコンピュータ（デバッガ）４０とによって構成される。
【００２１】
デバッグツール３０は、実行制御部３１と、ターゲットメモリ書き込み部３２とを含んでいる。また、ホストコンピュータ４０は、プログラム情報格納部４１と、プログラム情報書き込み部４２とを含んでいる。
【００２２】
ターゲットメモリ書き込み部３２は、半導体集積回路１０のメモリ１３にプログラムをロードしたり、メモリ１３内のプログラムを書き換えたりする機能を有し、半導体集積回路１０のメモリ１３に書き込むデータを、双方向通信ラインＤＳＩＯを介して送信する。
【００２３】
ホストコンピュータ４０のプログラム情報格納部４１は、半導体集積回路１０のメモリ１３に格納されるユーザプログラムと同一のプログラムの機械語コード列を格納する。また、プログラム情報書き込み部４２は、半導体集積回路１０のメモリ１３にロードしたユーザプログラムと同一のプログラムをプログラム情報格納部４１にロードしたり、半導体集積回路１０のメモリ１３に格納されているプログラムコードを読み出してプログラム情報格納部４１に書き込んだり、プログラム情報格納部４１に格納されているプログラムを、半導体集積回路１０のメモリ１３にロードしたユーザプログラムと同じ内容になるように書き換えたりする。
【００２４】
図２は、本発明の一実施形態において用いられる選択回路を示す回路図であり、（ａ）は選択回路６１を示し、（ｂ）は選択回路６２を示している。
選択回路６１は、制御信号に従って、外部との接続を行うための端子Ｐ１に、ＧＰＩＯ回路１７において用いられる信号ＧＰＩＯ１、又は、デバッグ用のクロック信号ＤＣＬＫを選択的に供給する。また、端子Ｐ１は、抵抗Ｒ１を介して電源電位ＶＤＤに接続されており、フローティング状態とならないようにプルアップされている。
【００２５】
選択回路６２は、制御信号に従って、外部との接続を行うための端子Ｐ２に、ＧＰＩＯ回路１７において用いられる信号ＧＰＩＯ２、又は、デバッグ用の状態信号ＤＳＴ２を選択的に供給する。また、端子Ｐ２は、抵抗Ｒ２を介して電源電位ＶＤＤに接続されており、フローティング状態とならないようにプルアップされている。
【００２６】
ＣＰＵ１２は、端子Ｐ３を介して受信したモード信号に基づいてデバッグモードの開始を検出すると、クロック信号ＤＣＬＫ、及び、デバッグ可能な状態にあることを表す状態信号ＤＳＴ２を、端子Ｐ１及びＰ２にそれぞれ供給するように、制御信号を活性化して選択回路６１及び６２を制御する。一方、ＣＰＵ１２は、端子Ｐ３を介して受信したモード信号に基づいてデバッグモードの終了を検出すると、端子Ｐ１及びＰ２をＧＰＩＯ回路に接続するように、制御信号を非活性化して選択回路６１及び６２を制御する。
【００２７】
このように、端子の接続を切り換える選択回路６１及び６２を設けて、これらをＣＰＵ１２によって制御することにより、デバッグモードにおいて必要となる端子Ｐ１〜Ｐ３の内で、端子Ｐ１及びＰ２については、通常動作モードにおいて他の目的のために有効利用することにより、半導体集積回路に設けるピンの数が増加することを防いでいる。
【００２８】
次に、本発明の一実施形態に係る半導体集積回路の動作について、図１及び図３を参照しながら説明する。図３は、本発明の一実施形態に係る半導体集積回路の動作を説明するためのタイミングチャートである。
【００２９】
通常動作モードにおいは、双方向通信ラインＤＳＩＯ及び端子Ｐ３を介してデバッグシステム２０からＣＰＵ１２に送信されるモード信号がハイレベルになっている。ＣＰＵ１２は、モード信号に基づいて通常動作モードであることを認識し、制御信号を非活性化することにより、端子Ｐ１及びＰ２をＧＰＩＯ回路に接続するように選択回路６１及び６２を制御する。これにより、端子Ｐ１及びＰ２は、システムオンチップにおける様々な目的のための入出力端子として利用される。
【００３０】
ＣＰＵ１２において実行されるユーザプログラムのデバッグを行う際には、ホストコンピュータ４０の制御の下で、デバッグツール３０の実行制御部３１が、所定の期間Ｔにおいてモード信号をローレベルとし、双方向通信ラインＤＳＩＯを介してＣＰＵ１２に送信する。ここで、所定の期間Ｔは、ＣＰＵ１２が通常のデータと区別してモード信号を認識できるようなビット長に相当する期間とする。
【００３１】
ＣＰＵ１２は、受信したモード信号に基づいてデバッグモードの開始を検出し、制御信号を活性化することにより、クロック信号ＤＣＬＫ、及び、デバッグ可能な状態にあることを表すローレベルの状態信号ＤＳＴ２を、端子Ｐ１及びＰ２にそれぞれ供給するように、選択回路６１及び６２を制御する。
【００３２】
デバッグツール３０の実行制御部３１は、ローレベルの状態信号ＤＳＴ２を受信して、ホストコンピュータ４０にその結果を報告する。ホストコンピュータ４０は、状態信号ＤＳＴ２に基づいてＣＰＵ１２がデバッグ可能な状態にあることを確認して、処理をデバッグモードに切り替え、デバッグシステム２０がデバッグモードに入る。
【００３３】
デバッグモードにおいては、ＣＰＵ１２が、デバッグ用モニタプログラムに含まれている命令を実行し、デバッグツール３０やホストコンピュータ４０との間で通信を行い、ホストコンピュータ４０の制御下に移行することとなる。この時、半導体集積回路１０内においてＣＰＵ１２にバスラインを介して接続されているメモリやレジスタが、ホストコンピュータから参照可能となり、デバッグを行うことが可能となる。
【００３４】
デバッグを終了する際には、ホストコンピュータ４０の制御の下で、デバッグツール３０の実行制御部３１が、所定の期間においてモード信号をハイレベルにして、双方向通信ラインＤＳＩＯを介してＣＰＵ１２に送信する。
【００３５】
ＣＰＵ１２は、受信したモード信号に基づいてデバッグモードの終了を検出すると、制御信号を非活性化することにより、端子Ｐ１及びＰ２をＧＰＩＯ回路１７に接続するように選択回路６１及び６２を制御する。
【００３６】
以上の動作により、デバッグモードにおいては、半導体集積回路１０に設けられている３つの端子Ｐ１〜Ｐ３をデバッグ用に使用することができる。また、通常動作モードにおいては、デバッグモードに移行するためのモード信号を受信するときのために端子Ｐ３を割り当てておき、その他の２つの端子Ｐ１及びＰ２をＧＰＩＯ回路１７に接続して様々な目的に使用することができる。このように、デバッグ専用端子の数を低減することによって、パッケージ全体のピン数を低減し、半導体集積回路やユーザボードの信頼性を向上させたり、開発コストや開発期間を削減することが可能となる。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施形態に係る半導体集積回路をデバッグシステムと共に示す図。
【図２】本発明の一実施形態において用いられる選択回路を示す回路図。
【図３】本発明の一実施形態に係る半導体集積回路の動作を示すタイミングチャート。
【符号の説明】
【００３８】
１０  システムオンチップ、  １１  クロックリセットコントローラ、  １２  ＣＰＵ、  １３  メモリ、  １４  ＵＳＢインタフェース、  １５  画像処理部、  １６  表示制御部、  １７  ＧＰＩＯ回路、  １８  メモリ、  １９  ＤＡＣ、  ２０  デバッグシステム、  ３０  デバッグツール、  ３１  実行制御部、  ３２  ターゲットメモリ書き込み部、  ４０  ホストコンピュータ、  ４１  プログラム情報格納部、  ４２  プログラム情報書き込み部、  ５０  表示モジュール、  ６１、６２  選択回路
【図１】
2007034881.tif 000003
【図２】
2007034881.tif 000004
【図３】
2007034881.tif 000005