(58)【調査した分野】(Int.Cl.,DB名)
前記トレースバッファは、前記選択情報を、前記選択部により選択された電源電流値に対応する回路ブロックを示す識別情報として、選択された電源電流値とともに保持すること
を特徴とする請求項2記載の半導体集積回路。
【発明を実施するための形態】
【0008】
以下、実施形態を、図面を用いて説明する。
【0009】
図1は、一実施形態におけるデバッグシステムDBGSYSの例を示している。デバッグシステムDBGSYSは、デバッグ対象のユーザシステムUSYSに搭載される半導体集積回路LSIと、外部デバッグ装置EXDBGとを有している。半導体集積回路LSIは、デバッグ対象のユーザ回路である複数の回路ブロックCBLK(CBLK1、CBLK2、CBLK3、...、CBLKn)と、回路ブロックCBLKをデバッグするためのデバッグ回路DBGCとを有している。
【0010】
例えば、ユーザシステムUSYSは、携帯機器等のマイクロコンピュータ応用機器であり、基板に接続されたチップ状態の半導体集積回路LSI、他の複数の半導体チップ、入力装置および出力装置等を有している。なお、回路ブロックCBLKおよびデバッグ回路DBGCは、個別の半導体チップとして形成されてもよい。
【0011】
ユーザシステムUSYSは、主電源電圧MPSを半導体集積回路LSIおよびユーザシステムUSYS上の他の半導体チップに供給するための外部電源端子を有している。
図1において、太い実線は電源線を示している。主電源電圧MPSは、デバッグ回路DBGCの電源領域PSADBGに供給され、さらに、デバッグ回路DBGCの電流計測部MEASを介して電源電圧PS(PS1、PS2、PS3、...、PSn)として各回路ブロックCBLK1−nに供給されている。
【0012】
回路ブロックCBLKは、内部バスに接続されたプロセッサCPU(マイクロコンピュータ)、周辺回路およびメモリ等のいずれかである。ここで、周辺回路は、画像処理マクロ、画像データメモリ、アナログマクロ、I/Oマクロ等である。例えば、プロセッサCPUは、内蔵メモリまたは内部バスに接続されたメモリに格納されたプログラムを実行することで動作し、ユーザシステムUSYS全体の動作を制御する。なお、
図1では、回路ブロックCBLKnにプロセッサCPUを形成しているが、複数の回路ブロックにプロセッサCPUをそれぞれ形成してもよい。各回路ブロックCBLK1−nは、互いに独立した電源電圧PS1−nがそれぞれ供給される電源領域PSA(PSA1、PSA2、PSA3、...PSAn)に形成されている。
【0013】
デバッグ回路DBGCおよび外部デバッグ装置EXDBGは、ユーザシステムUSYSを実際に動作させながら、プロセッサCPUが実行するプログラムをデバッグするエミュレータとして機能する。エミュレータ機能の一部を実現するデバッグ回路DBGCをプロセッサCPUを含む半導体集積回路LSIに搭載することにより、ユーザシステムUSYSを実現するユーザプログラムをプロセッサCPUにより実際に実行しながらデバッグを実施できる。すなわち、オン・チップ・デバッグを実施できる。
【0014】
デバッグ回路DBGCは、ユーザシステムUSYSの開発時に、デバッグインターフェースDBGIFを介して外部デバッグ装置EXDBGからの制御を受けて有効になる。そして、デバッグ回路DBGCは、ユーザシステムUSYSのデバッグを行うデバッグモードにおいて、プロセッサCPUの動作状態をトレースし、プロセッサCPUが実行するプログラムをデバッグするために動作する。
【0015】
デバッグ回路DBGCは、電源領域PSA1−nとは独立した電源領域PSADBGに形成されている。デバッグ回路DBGCは、電流計測部MEAS、選択部SELUおよびトレースバッファTBUFを有している。電流計測部MEASは、電源線PS1−nにそれぞれ接続された電流計AMを有している。各電流計AMは、対応する回路ブロックCBLK1−nに流れる電源電流を計測し、計測した電源電流値PSC(PSC1、PSC2、PSC3、...、PSCn)を選択部SELUに出力する。電源電流値PSC1−nは、回路ブロックCBLK1−nがそれぞれ消費する消費電流を示す。
【0016】
選択部SELUは、選択情報SINFに応じて電源電流値PSC1−nのいずれかを選択し、トレースバッファTBUFに出力する。例えば、選択情報SINFは、外部デバッグ装置EXDBGにより生成される。なお、選択部SELUは、トレース情報TRCINFのビット数が設計仕様を超えない範囲で、複数の電源電流値PSCを選択し、トレースバッファTBUFに同時に出力してもよい。
【0017】
少なくとも1つの電源電流値PSCを選択的にトレースバッファTBUFに供給することにより、プロセッサCPUが実行するプログラムを効率よくデバッグできる。具体的には、一部の回路ブロックCBLKの電源電流が、プログラムの不具合により増加する現象を見つけやすくなる。換言すれば、電源電流の異常を検出することで、プログラムの不具合を見つけやすくできる。この際、回路ブロックCBLK毎に電源電流をトレースできるため、プログラムの不具合個所を特定しやすくなる。
【0018】
トレースバッファTBUFは、選択部SELUからの電源電流値PSCを、プロセッサCPUの実行履歴情報CPUTRCとともに順に保持し、トレース情報TRCINFとして外部デバッグ装置EXDBGに順に出力する。例えば、トレースバッファTBUFは、FIFO(First-In First-Out)メモリとして形成されている。実行履歴情報CPUTRCは、分岐命令等の命令、アクセスデータおよびアクセスアドレス等の少なくともいずれかを含む。
【0019】
外部デバッグ装置EXDBGは、デバッグプログラムDBGPRGに基づいて、デバッグ回路DBGCの動作を制御する。外部デバッグ装置EXDBGは、一般的なICE(In-Circuit Emulator)と同様に、入力装置INから入力された指示に基づいて、プロセッサCPUが実行するプログラムの停止条件やトレース条件を設定する機能を有する。また、外部デバッグ装置EXDBGは、トレース情報TRCINFをディスプレイやプリンタ等の出力装置OUTに出力する機能を有する。なお、入力装置INや出力装置OUTを有するホストコンピュータを、外部デバッグ装置EXDBGに接続してもよい。
【0020】
外部デバッグ装置EXDBGは、トレースバッファTBUFから供給されるプロセッサCPUの実行履歴情報CPUTRCおよび電源電流値PSCをトレース情報TRCINFとして順に保持する。さらに、外部デバッグ装置EXDBGは、入力装置から入力された指示に基づいて、選択情報SINFを生成し、デバッグ回路DBGCに出力する。選択情報SINFは、選択する電源電流値PSCを切り替えるために、プロセッサCPUの実行サイクル毎に生成されてもよい。このとき、電源電流値PSC1−nを時分割でトレースできる。電源電流値PSCを巡回的に選択することで、トレース情報TRCINFのビット数を最小限にしながら、全ての回路ブロックCBLK1−nの電源電流値PSCをトレースできる。
【0021】
この実施形態では、デバッグ回路DBGCは、プロセッサCPUが出力する実行情報からプロセッサCPUの実行状態を監視する。デバッグ回路DBGCは、プロセッサCPUがユーザプログラムを実行中にトレース対象の動作を検出すると、プロセッサCPU実行履歴情報と電源電流値PSCiをトレースバッファTBUFに一時的に格納する。デバッグ回路DBGCは、トレースバッファTBUFに格納したトレースデータを外部デバッグ装置EXDBGに順に出力する。
【0022】
外部デバッグ装置EXDBGは、デバッグ回路DBGCから出力されるトレース情報TRCINFを、内蔵するトレースメモリに蓄積する。そして、外部デバッグ装置EXDBGは、自身が実行するデバッグプログラムにより、トレースメモリ上のトレース情報TRCINFを読み出し、解析し、プロセッサCPUの実行履歴とともに電源電流値PSCiを出力装置OUTに出力する。
【0023】
以上、この実施形態では、デバッグに必要な回路ブロックCBLK1−nの電源電流値PSC1−nの少なくともいずれかを選択してトレースすることで、プロセッサCPUの実行履歴情報CPUTRCとともに保持される情報量を最小限にできる。また、トレースバッファTBUFから出力されるトレース情報TRCINFのビット数を最小限にできる。したがって、回路ブロックCBLK1−nの電源電流値PSC1−nをトレースするときにも、半導体集積回路LSIに形成されるデバッグ用の外部端子数を少なくできる。この結果、デバッグ回路DBGCを含む半導体集積回路LSIのチップサイズを小さくでき、コストを削減できる。
【0024】
図2は、別の実施形態におけるデバッグシステムDBGSYSの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態では、デバッグ回路DBGCが
図1と相違している。また、デバッグシステムDBGSYSは、外部デバッグ装置EXDBGに接続されたホストコンピュータHOSTを有している。半導体集積回路LSIおよびユーザシステムUSYSは、デバッグ回路DBGCが異なることを除き、
図1と同様である。すなわち、回路ブロックCBLK1−nは、内部バスに接続されたプロセッサCPU(マイクロコンピュータ)と、画像処理マクロ、画像データメモリ、アナログマクロ、I/Oマクロ等の周辺回路と、プロセッサCPUが実行するプログラムが格納されているメモリのいずれかである。デバッグ回路DBGC、外部デバッグ装置EXDBGおよびホストコンピュータHOSTは、プロセッサCPUが実行するプログラムをデバッグするエミュレータとして機能する。
【0025】
デバッグ回路DBGCは、電流計測部MEAS(MEAS1、MEAS2、MEAS3、...、MEASn)、選択加算部SADD、選択レジスタSELREG、実行制御部EXECNTおよびトレースバッファTBUFを有している。電流計測部MEAS1−nは、
図1に示した電流計AMをそれぞれ有しており、
図1に示した電流計測部MEASと同じ機能を有している。
【0026】
選択加算部SADDは、各電流計測部MEAS1−nからの電源電流値PSC1−nを受ける。選択加算部SADDは、選択レジスタSELREGからの選択情報SEL(SEL1、SEL2、SEL3、...、SELn)に応じて電源電流値PSC1−nの少なくとも1つを選択する。そして、選択加算部SADDは、選択した電源電流値PSCを加算し、加算結果を電源電流値ISUMとしてトレースバッファTBUFに出力する。
【0027】
選択レジスタSELREGは、外部デバッグ装置EXDBGからの書き込みにより設定され、選択情報SEL1−nを保持する。実行制御部EXECNTは、外部デバッグ装置EXDBGからの制御を受けて、例えば、プロセッサCPUの実行を制御するための信号をプロセッサCPUに出力し、プロセッサCPUに内蔵されるレジスタやメモリに保持されている情報を読み出す。ここで、プロセッサCPUの実行を制御する信号は、プロセッサCPU内のレジスタを読み書きするための制御信号、データ信号およびプロセッサCPUの動作を一時的にホールドするための制御信号等を含む。
【0028】
トレースバッファTBUFは、電源電流値PSCの代わりに電源電流値ISUM(選択された電源電流値PSCの総和)を保持することを除き、
図1に示したトレースバッファTBUFと同様である。トレースバッファTBUFは、保持している電源電流値ISUMおよび実行履歴情報CPUTRCを、トレース情報TRCINFとしてデバッグインターフェースDBGIFを介して外部デバッグ装置EXDBGに順に出力する。特に限定されないが、電源電流値ISUMは、プロセッサCPUが実行する命令毎にトレースバッファTBUFに格納される。換言すれば、選択加算部SADDは、プロセッサCPUの命令サイクル毎に電源電流値ISUMを計算する。これにより、外部デバッグ装置EXDBGは、プロセッサCPUの命令サイクル毎に、指定した回路ブロックCBLKの電源電流値PSCの総和を認識できる。
【0029】
外部デバッグ装置EXDBGは、例えば、デバッグケーブルやユーザシステムUSYSの基板上に取り付けられるコネクタを含むデバッグインターフェースDBGIFを介して半導体集積回路LSIのデバッグ用の外部端子EXTに接続される。なお、
図2では、外部デバッグ装置EXDBGおよび半導体集積回路LSIは、双方向のデバッグインターフェースDBGIFを介して接続されている。しかしながら、トレースバッファTBUFからの単方向のデバッグインターフェースと、実行制御部EXECNTおよび選択レジスタSELREGに接続される双方向のデバッグインターフェースとが、独立に形成されてもよい。
【0030】
外部デバッグ装置EXDBGは、トレースメモリTRCMEMおよびデバッグ制御部DBGCNTを有している。トレースメモリTRCMEMは、トレースバッファTBUFから供給される電源電流値ISUMおよび実行履歴情報CPUTRCをトレース情報TRCINFとして順に保持する。デバッグ制御部DBGCNTは、ホストコンピュータHOSTが実行するデバッグプログラムDBGPRGに基づいて、デバッグ回路DBGCの動作を制御し、トレースメモリTRCMEMに格納されているトレース情報TRCINFをホストコンピュータHOSTに出力する。
【0031】
ホストコンピュータHOSTは、デバッグプログラムDBGPRGを実行することにより、例えば、入力装置INから入力された指示に基づいて外部デバッグ装置EXDBGを制御してデバッグ回路DBGCを動作させる。また、ホストコンピュータHOSTは、トレースメモリTRCMEMに格納されたトレース情報TRCINFを読み出し、ディスプレイやプリンタ等の出力装置OUTに出力する。
【0032】
例えば、デバッグ回路DBGCは、ユーザシステムUSYSの開発時に、デバッグインターフェースDBGIFを介して外部デバッグ装置EXDBGからの制御を受けて有効になる。ユーザシステムUSYSが製品として動作するとき、デバッグインターフェースDBGIFは、オープン状態であり、例えば半導体集積回路LSI上でプルダウンされる。これにより、デバッグ回路DBGCは無効になり、動作が禁止される。電流計測部MEAS1−nは、デバッグ回路DBGCが無効のときに、電源電流値PSCを計測する機能を停止するが、主電源電圧MPSは電流計測部MEAS1−nを介して電源電圧PS1−nとして回路ブロックCBLK1−nに供給される。
【0033】
図3は、
図2に示した選択加算部SADDの例を示している。選択加算部SADDは、選択情報SEL1−nに応じて動作するセレクタISEL(ISEL1、ISEL2、ISEL3、...、ISELn)および加算器n−ADDを有している。各セレクタISELは、対応する選択情報SELが論理1にアサートされているときに対応する電源電流値PSCを選択し、対応する選択情報SELが論理0にネゲートされているときに”0”を示す値を選択し、選択した値を加算器n−ADDに出力する。加算器n−ADDは、全てのセレクタISEL1−nから出力される値を加算し、加算結果を電源電流値ISUMとして出力する。
【0034】
例えば、2つの選択情報SELが論理1のとき、加算器n−ADDは、2つの電流計測部MEASで計測された電源電流値PSCを加算する。5つの選択情報SELが論理1のとき、加算器n−ADDは、5つの電流計測部MEASで計測された電源電流値PSCを加算する。1つの選択情報SELが論理1のとき、加算器n−ADDは、1つの電流計測部MEASで測定された電源電流値PSCを電源電流値ISUMとして出力する。このように、この実施形態では、任意の数の回路ブロックCBLKの電源電流の合計を、電源電流値ISUMとして出力できる。
【0035】
図2に示したデバッグシステムDBGSYSによるユーザシステムUSYSのデバッグでは、選択加算部SADDにより任意の数の回路ブロックCBLKに流れる電源電流の総和をプロセッサCPUの命令サイクル毎にトレースできる。これにより、複数の回路ブロックCBLKの電源電流値PSCを、最小限のビット数のトレース情報TRCINFで外部デバッグ装置EXDBGに出力できる。トレース情報TRCINFを出力するためのビット数を少なくすることで、上述した実施形態と同様に、半導体集積回路LSIに形成されるデバッグ用の外部端子数を少なくでき、半導体集積回路LSIのチップサイズを小さくできる。
【0036】
ユーザシステムUSYSのデバッグにおいて、プロセッサCPUによるユーザプログラムの実行時の電源電流に注目するとき、プロセッサCPUとユーザプログラムを格納しているメモリが電源電流のトレース対象として選択され、電源電流の総和がトレースされる。画像処理時の電源電流に注目するとき、画像処理マクロと画像データメモリが電源電流のトレース対象として選択され、電源電流の総和がトレースされる。全ての回路ブロックCBLK1−nの電源電流に注目するとき、全ての回路ブロックCBLK1−nがトレース対象として選択され、電源電流の総和がトレースされる。これにより、半導体集積回路LSI内において、デバッグ回路DBGCを除く電源電流値の総和を容易にトレースできる。
【0037】
なお、電源電流値PSCが10ビットで表されるとき、8個の回路ブロックCBLKの電源電流値PSCをトレースするために、一般的には80ビットが必要である。これに対して、この実施形態では、加算器n−ADDでの加算時の桁上がり(8個の電源電流値PSCで7ビット)を考慮しても、電源電流値PSCの総和を17ビットで表すことができる。すなわち、電源電流値PSCのトレースに必要なビット数を80ビットから21.3%圧縮できる。
【0038】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、複数の回路ブロックCBLKの電源電流値PSCを、電源電流値ISUMとしてトレースできる。これにより、例えば、8個の回路ブロックCBLKの電源電流値PSCを同時にトレースするときにも、トレース情報TRCINFのビット数を最小限にできる。換言すれば、8個の回路ブロックCBLKの電源電流値PSCを、プロセッサCPUの命令サイクル毎にトレースでき、デバッグの効率を向上できる。
【0039】
図4は、別の実施形態におけるデバッグシステムDBGSYSの例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態では、
図2に示したデバッグ回路DBGCの選択加算部SADDおよび選択レジスタSELREGの代わりに選択部SELUおよびカウンタCOUNTが形成されている。デバッグシステムDBGSYSのその他の構成は、トレースバッファTBUFが保持するトレース情報TRCINFが異なることを除き、
図2と同様である。
【0040】
選択部SELUは、カウンタCOUNTにより生成される選択情報SEL1−nに応じて、電源電流値PSC1−nのいずれかを選択し、選択した電源電流値PSCを電源電流値PSCiとしてトレースバッファTBUFに出力する。例えば、選択部SELUは、カウンタCOUNTから選択情報SEL1が出力されるとき、電源電流値PSC1を選択し、カウンタCOUNTから選択情報SELnが出力されるとき、電源電流値PSCnを選択する。
【0041】
例えば、カウンタCOUNTは、初期化可能なアップカウンタであり、回路ブロックCBLK1−nを示す値を0から順次カウントアップする。そして、カウンタCOUNTは、カウント値がnに達したら0にクリアされ、再度順次カウントアップする。カウンタCOUNTのカウント値は、外部デバッグ装置EXDBGからの制御情報(初期化要求)により0に初期化される。あるいは、カウンタCOUNTのカウント値は、デバッグ回路DBGCに内蔵される設定レジスタに設定される最大カウント値(=n)を利用して、カウンタCOUNT内部で自動的に0に初期化される。
【0042】
カウンタCOUNTは、プロセッサCPUの命令サイクル毎にカウント動作し、選択情報SEL1−nを巡回的に生成する。例えば、カウント動作毎に、アサートされる選択情報SEL1−nが1つずつシフトされ、残りのn−1個の選択情報SELはネゲートされる。これにより、選択部SELUは、プロセッサCPUの命令サイクル毎に、電源電流値PSC1−nを巡回的に選択する。n個の命令サイクルが実行されることで、選択される電源電流値PSC1−nは一巡する。
【0043】
トレースバッファTBUFは、電源電流値ISUMの代わりに、電源電流値PSCiおよび選択された電源電流値PSCiに対応する回路ブロックCBLKを示す識別情報IDを保持することを除き、
図2に示したトレースバッファTBUFと同様である。トレースバッファTBUFは、電源電流値PSCを選択する選択情報SEL(例えば、1からnの数値)を識別情報IDとして保持する。トレースバッファTBUFは、保持している識別情報ID、電源電流値PSCiおよび実行履歴情報CPUTRCを、トレース情報TRCINFとしてデバッグインターフェースDBGIFを介して外部デバッグ装置EXDBGに順に出力する。例えば、ユーザシステムUSYSが8個の回路ブロックCBLKを有するとき、識別情報IDは3ビットである。このため、電源電流値PSCが10ビットで表されるとき、識別情報IDおよび電源電流値PSCiは13ビットで表される。ユーザシステムUSYSが32個の回路ブロックCBLKを有するときにも、識別情報IDは5ビットでよい。このため、回路ブロックCBLKの数が多いときにも、トレース情報TRCINFのビット数が大幅に増えることを防止でき、デバッグに必要な半導体集積回路LSIの外部端子の数を最小限にできる。
【0044】
図5は、
図4に示した選択部SELUの例を示している。選択部SELUは、回路ブロックCBLK1−nに対応するスイッチSW(SW1、SW2、SW3、...、SWn)を有している。各スイッチSWは、対応する選択情報SEL(SEL1−nのいずれか)がアサートされているときにオンし、受けている電源電流値PSC(PSC1−nのいずれか)を電源電流値PSCiとして出力する。この実施形態では、デバッグ回路DBGCの動作時に選択情報SEL1−nの1つが巡回的にアサートされる。このため、電源電流値PSC1−nの1つが電源電流値PSCiとして巡回的に出力される。したがって、n個の命令サイクルが実行されることで、全ての電源電流値PSC1−nをトレースできる。なお、複数の命令サイクル毎に電源電流値PSC1−nの1つを巡回的にトレースしてもよい。
【0045】
なお、この実施形態では、8個の回路ブロックCBLKに必要な識別情報IDは3ビットである。このため、電源電流値PSCが10ビットで表されるとき、13ビットで電源電流値PSCをトレースできる。これは、8個の回路ブロックCBLKの電源電流値PSCを全てトレースするときに必要な80ビットの16.3%である。
【0046】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。特に、回路ブロックCBLK1−nの電源電流が、プロセッサCPUの命令サイクル単位ではほとんど変化しないときに、回路ブロックCBLK1−nの電源電流値PSC1−nを精度よくトレースできる。
【0047】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。