JP2009258857A - デバッグ装置及びデバッグ方法 - Google Patents
デバッグ装置及びデバッグ方法 Download PDFInfo
- Publication number
- JP2009258857A JP2009258857A JP2008104990A JP2008104990A JP2009258857A JP 2009258857 A JP2009258857 A JP 2009258857A JP 2008104990 A JP2008104990 A JP 2008104990A JP 2008104990 A JP2008104990 A JP 2008104990A JP 2009258857 A JP2009258857 A JP 2009258857A
- Authority
- JP
- Japan
- Prior art keywords
- boundary scan
- cpu
- data
- debugging
- scan data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】CPUの暴走の原因を特定することを容易に可能とするデバッグ装置を提供する。
【解決手段】CPU26を含んでバウンダリスキャンを実行可能な半導体チップ91のデバックを行うデバッグ装置21は、CPU26の暴走の原因に関わるバーストリフィル監視ユニット107の動作出力端子を有する半導体チップ91に対してバウンダリスキャンの実行要求を行う。さらに、デバッグ装置21は、バウンダリスキャンの実行要求に応じて出力された半導体チップのバウンダリスキャンデータを取得し、その取得したバーストリフィル監視ユニット107の動作出力端子のバウンダリスキャンデータを時系列に画面上に表示させる。
【選択図】図4
【解決手段】CPU26を含んでバウンダリスキャンを実行可能な半導体チップ91のデバックを行うデバッグ装置21は、CPU26の暴走の原因に関わるバーストリフィル監視ユニット107の動作出力端子を有する半導体チップ91に対してバウンダリスキャンの実行要求を行う。さらに、デバッグ装置21は、バウンダリスキャンの実行要求に応じて出力された半導体チップのバウンダリスキャンデータを取得し、その取得したバーストリフィル監視ユニット107の動作出力端子のバウンダリスキャンデータを時系列に画面上に表示させる。
【選択図】図4
Description
本発明は、デバッグ装置及びデバッグ方法に関し、特に、バウンダリスキャンデータを表示するデバッグ装置及びデバッグ方法に関する。
従来より、SoC(System On Chip)等のシステム開発のためのデバッグ装置が利用されている。例えば、デバッグを行う者(以下、ユーザともいう)は、デバッグ装置に接続したエミュレータを利用して、SoC(System On Chip)のシステムのデバッグを行うことができる。SoC等のシステムにおいてプログラムを実行させ、何らかの異常が発生すると、その異常の原因を追求するためにデバッグが行われる。
例えば、ターゲットシステムの中央処理装置(以下、CPUという)のデータキャッシュリフィルが4ワードに設定されているとする。データリード時にキャッシュヒットしなければリフィルサイクルのバーストアクセスが発生する。このとき、4回のメモリアクセスが生じ、各アクセスに対応するACK(応答)が必要となる。
しかし、データキャッシュリフィルを4ワードと設定し、4回のメモリアクセスに対応する複数のACK(応答)が必要であるにも拘わらず、1回のACKのタイミングで外部デバイスが動作するという、誤った前提でターゲットシステムの設計がされてしまうと、リフィルサイクルのバーストアクセスが発生したとき、外部デバイスではバーストアクセス動作において、ACK待ち状態となってしまう。
このような状態になると、CPUは、キャッシュからデータを得られず、実行中のプログラムは、次の命令実行待ち状態となるため、デバッガによりデバッグすると、CPUがロック状態になっているように見える。
CPUがロック状態となった場合、CPUの暴走の原因を判定するために、ロジックアナライザ等の機器を利用して各種信号の波形を見ることによって行うこともできる。しかし、ロジックアナライザ等の機器を利用する方法には、非常に多くの時間がかかってしまうという問題がある。
デバッグ用のソフトウェアにJTAGのバウンダリスキャン機能を有するものもある(非特許文献1参照)。しかし、バウンダリスキャン結果を表示させことができるが、上述したようなCPUの暴走の判定については考慮されていない。
MITOUJTAGの特徴、URL「http://www.nahitech.com/jtag/mitoujtag.html」
MITOUJTAGの特徴、URL「http://www.nahitech.com/jtag/mitoujtag.html」
そこで、本発明は、CPUの暴走の原因を特定することを容易に可能とするデバッグ装置及びデバッグ方法を提供することを目的とする。
本発明の一態様によれば、CPUを含んでバウンダリスキャンを実行可能な半導体チップのデバックを行うデバッグ装置であって、前記CPUの暴走の原因に関わる回路の動作出力端子を有する前記半導体チップに対して前記バウンダリスキャンの実行要求を行うバウンダリスキャン実行要求部と、前記バウンダリスキャンの実行要求に応じて出力された前記半導体チップのバウンダリスキャンデータを取得するバウンダリスキャンデータ取得部と、前記半導体チップから取得した、前記回路の動作出力端子のバウンダリスキャンデータを時系列に画面上に表示させるバウンダリスキャンデータ表示部と、を有するデバッグ装置を提供することができる。
本発明の一態様によれば、CPUを含んでバウンダリスキャンを実行可能な半導体チップのデバック方法であって、前記半導体チップに、前記CPUの暴走の原因に関わる回路の動作出力端子を設け、デバッガが、前記半導体チップに前記バウンダリスキャンを複数回実行させ、前記バウンダリスキャンにより得られた前記動作出力端子のバウンダリスキャンデータを時系列に表示することを特徴とするデバッグ方法を提供することができる。
本発明によれば、CPUの暴走の原因を特定することを容易に可能とするデバッグ装置及びデバッグ方法を実現することができる。
以下、図面を参照して本発明の実施の形態を説明する。
(構成)
まず図1に基づき、本実施の形態に係わるデバッグシステムの構成を説明する。図1は、本実施の形態に係わるデバッグシステムの構成を示す構成図である。図1は、ターゲットシステムのデバッグ環境の構成を示す。
(構成)
まず図1に基づき、本実施の形態に係わるデバッグシステムの構成を説明する。図1は、本実施の形態に係わるデバッグシステムの構成を示す構成図である。図1は、ターゲットシステムのデバッグ環境の構成を示す。
図1に示すように、デバッグシステム1は、パーソナルコンピュータ(以下、PCという)等のコンピュータであるホストコンピュータ(以下、単にホストという)11と、エミュレータ12と、デバッグ対象であるターゲットCPUを搭載したターゲットシステム13とを含んで構成されている。
ホスト11には、後述するようなバウンダリスキャンデータを記憶するための記憶装置14が接続されている。ホスト11は、内部にデバッグ用のプログラムであるデバッガ21を有しており、デバッグを行うユーザは、ホスト11に接続されたキーボード、マウス等の入力装置(図示せず)を操作して、デバッガ21を起動させて動作させることができる。デバッガ21は、ターゲットボード13上に構成されたターゲットシステム向けのデバッガである。ホスト11は、表示装置22を有し、デバッガ21は、表示装置22の画面上に、各種操作指示を与え、かつ後述するような各種デバッグの結果情報を表示するためグラフィカルカルユーザインターフェース(GUI)を表示する。
ホスト11とエミュレータ12は、所定の通信ライン、ここではUSBのケーブル15により接続されている。そのため、ホスト11とエミュレータ12は、それぞれ、USB接続のためのインタフェースを有している。
エミュレータ12は、コントローラ23と、ホスト11との通信インタフェースであるホストインタフェース24と、ターゲットシステム13との通信インタフェースであるJTAGインタフェース25を有している。ホストインタフェース24は、ホスト11のインタフェース(図示せず)と、ケーブル15を介して接続されている。コントローラ23は、ホスト11とターゲットボード13を制御する。エミュレータ12は、デバッガ21から指示されたCPU26内のデバッグ対象プログラムの実行を制御する機能だけでなく、ターゲットボード13からのバウンダリスキャンデータをデバッガ21へ送信する機能等を有するJTAG対応のエミュレータである。
JTAGインタフェース25は、EJTAGコネクタユニット16を介して、ターゲットシステム13と接続されている。
ターゲットシステム13は、ここでは、ターゲットCPU26が搭載されたターゲットボードである。CPU26は、デバッグサポートユニット(以下、DSUという)31と、JTAGインタフェース32とを含む。ターゲットシステム13のボード上には、CPU26のJTAGインタフェース32用の複数の入出力端子、すなわちピンと接続され、EJTAGコネクタユニット16に接続するためのEJTAGコネクタ33が設けられている。従って、EJTAGコネクタ33は、ターゲットCPU26に内蔵されたJTAGインタフェース32とエミュレータ12間において信号の送受信を行うコネクタである。
DSU31は、バウンダリスキャン対応のデバッグサポートユニットである。ここでは、バウンダリスキャン対応のDSU31を内蔵するCPU26に対する、オン・チップ・デバッグ環境において、デバッガ21は、後述するように、バウンダリスキャンデータをエミュレータ12経由で取得し、バウンダリスキャンデータを表示する。
図2は、図1のデバッガ21の構成を示すブロック図である。デバッガ21は、プログラム実行/停止制御部41と、プログラム表示制御部42と、バウンダリスキャンデータ表示部43と、その他のデバッガ実行制御部44とを含んで構成される。プログラム実行/停止制御部41は、CPU26において実行されるプログラムの実行、停止、再実行、強制停止、等を制御するプログラムである。プログラム表示制御部42は、プログラムのソースコード表示、レジスタのデータ表示、メモリのデータ表示、トレース結果表示、等のデバッグ実行内容及び結果の表示を制御するプログラムである。バウンダリスキャンデータ表示部43は、エミュレータ12から取得したバウンダリスキャンデータを表示する処理を行うプログラムである。その他のデバッガ実行制御部44は、レジスタのデータ表示、メモリのデータ表示、スタックのデータ表示、等のデバッグ実行の設定および実行を制御する処理を行うプログラムである。これらのプログラムは、ユーザの指示により実行される。
図3は、デバッガ画面の例を示す図である。
デバッガ21は種々の機能を有し、その機能に応じた表示を表示装置22の画面上に行う。図3の画面51は、表示装置22の画面上に表示される。画面51上には、各種機能の実行を指示するためのボタン、アイコン等が設けられている。画面51上の各ボタン等は、実行指示部を構成し、各ボタン等を押すことによって、各種機能の実行を指示することができる。
デバッガ21は種々の機能を有し、その機能に応じた表示を表示装置22の画面上に行う。図3の画面51は、表示装置22の画面上に表示される。画面51上には、各種機能の実行を指示するためのボタン、アイコン等が設けられている。画面51上の各ボタン等は、実行指示部を構成し、各ボタン等を押すことによって、各種機能の実行を指示することができる。
図3の画面51には、エミュレータ12を介して接続されたターゲットボード13に対して、デバッグに必要な複数のコマンドのボタンが表示されたコマンド表示部52を有する。
コマンド表示部52における「Step」は、命令をステップ毎に実行させるための機能ボタンである。「Next」は、ソースコード単位で次のソースコードを実行させるための機能ボタンである。「Go」は、プログラムの実行を指示するための機能ボタンである。「Restart」は、プログラムの実行を再スタートさせるための機能ボタンである。「Stop」は、実行中のプログラムを停止させるための機能ボタンである。「Halt」は、実行中のプログラムを強制停止させるための機能ボタンである。「Reg」は、レジスタのデータを表示させるための機能ボタンである。「Mem」は、メモリのデータを表示させるための機能ボタンである。「Remote」は、エミュレータ12を介してターゲットボード13のCPU26と、ホスト11とを接続および切断し、ホスト11からCPU26を遠隔で操作できるようにするための機能ボタンである。従って、「Remote」は、デバッグを行うときに最初に押される。「CPUCheck」は、後述するようにバウンダリスキャンを実行させてバウンダリスキャンデータを表示装置22の画面上に表示させるための機能ボタンである。「Reset」は、CPU26をリセットするための機能ボタンである。
図3の画面51は、実行されるプログラムのソースコードが表示されるコード表示部53と、コマンド実行およびエラー表示部54とを有している。
コード表示部53は、ソースコードを表示し、ソースコードの各行に対応して、プログラムの行番号、所定の記号、等を併せて表示する表示領域である。黒丸55は、ブレークポイントが設定できる行であることを示す記号である。星印56は、プログラムが停止している行を示す記号である。
コマンド実行及びエラー表示部54は、機能ボタンを使わないでコマンドの実行やスクリプトファイルの実行、および発生したエラーの内容を表示するための表示領域である。図3の画面51は、プログラムの実行を行うが、ブレークポイントでプログラムが停止しないためHaltボタンが押されて強制停止が実行され、実行中のプログラムを強制停止させたとき、コマンド実行及びエラー表示部54に示すエラーが発生していることを示している。
コード表示部53は、ソースコードを表示し、ソースコードの各行に対応して、プログラムの行番号、所定の記号、等を併せて表示する表示領域である。黒丸55は、ブレークポイントが設定できる行であることを示す記号である。星印56は、プログラムが停止している行を示す記号である。
コマンド実行及びエラー表示部54は、機能ボタンを使わないでコマンドの実行やスクリプトファイルの実行、および発生したエラーの内容を表示するための表示領域である。図3の画面51は、プログラムの実行を行うが、ブレークポイントでプログラムが停止しないためHaltボタンが押されて強制停止が実行され、実行中のプログラムを強制停止させたとき、コマンド実行及びエラー表示部54に示すエラーが発生していることを示している。
従って、ユーザは、実行させたい機能に対応するボタンを、コマンド表示部52の中から選択することによって、ターゲットボード13のCPU26のデバッグを行うことができる。
図4は、バウンダリスキャンデータを表示する表示画面の例を示す画面である。図3の画面上で、「CPUCheck」ボタンをマウス等でクリックすると、エミュレータ12は、バウンダリスキャンを実行させ、バウンダリスキャンデータを取得し、デバッガ21へバウンダリスキャンデータを出力する。そして、表示装置22の画面上に、図4のような実行結果であるバウンダリスキャンデータが表示される。
図4の画面61は、CPU26のバウンダリスキャンセルに接続された複数の外部ピンの全てあるいは指定された一部についての所定の番号を示すピン番号欄62と、ピン番号欄62の各ピンに対応する、バウンダリスキャンデータを時系列に表示するステータス欄63とを有する。
ステータス欄63には、各ピンについての、0と1のステータスデータが表示され、1はHighを、0はLowを示している。ここでは、デバッガ21から、所定の回数の、ここでは40回の、バウンダリスキャンデータの取得要求が通信によりエミュレータ12へ出力される。その結果、デバッガ21は、各ピンについて、40個のステータスデータを得る。従って、図4は、各ピン毎の時系列のバウンダリスキャンデータを示す。
エミュレータ12は、デバッガ21からのバウンダリスキャンの実行要求に応じて、ターゲットシステム13に対してバウンダリスキャンを実行させ、得られた結果データをデバッガ21へ送信する。
図5は、エミュレータ12がデバッガ21へ送信するときのバウンダリスキャンデータの通信パケットの構成を示す図である。通信パケット71は、スタートコード(START)72,シーケンスコード(SEQ)73,データ部(DATA)74,エンドコード(END)75,サムコード(SUM)76,及びナムコード(NUM)77を含む。スタートコード(START)72は、1バイト長を有し、パケット先頭を示すコードである。シーケンスコード(SEQ)73は、1バイト長を有し、パケット識別とパケット番号を示すコードである。データ部(DATA)74は、15バイト長を有し、バウンダリスキャンデータを含むデータである。エンドコード(END)75は、1バイト長を有し、バケットの終了を表すコードである。サムコード(SUM)は、1バイト長を有し、スタートコードからエンドコードの前までのバイトの加算値を示すデータである。ナムコード(NUM)79は、ナムコード自体のバイト数を含む、データの総バイト数である。
図5に示す通信パケット71が、バウンダリスキャンの実行結果として、エミュレータ12からデバッガ21へ供給される。よって、上述したように、40回のバウンダリスキャンの実行要求、あるいはバウンダリスキャンデータの取得要求、がエミュレータ12に指示されるので、40個の通信パケット71がデバッガ21に送信される。
ホスト11のデバッガ21は、受信した複数の通信パケット71のデータを、記憶装置14に記憶する。
図6は、記憶装置14に記憶されるバウンダリスキャンデータのテーブルデータの例を示す図である。
図6は、記憶装置14に記憶されるバウンダリスキャンデータのテーブルデータの例を示す図である。
1回のバウンダリスキャンデータの取得要求で、図5のデータ部74には、複数のピンの、ここでは115個のピンの、ステータスデータが含まれる。例えば、1回目の実行の結果としてストアされるデータは、図6の点線で示す枠84で囲まれた範囲のデータである。40回の実行の結果、40組のバウンダリスキャンデータが、テーブル81に記憶される。テーブル81は、ピン番号欄82と、各ピンに対応するステータスデータが記憶されるステータス欄83とを含む。すなわち、ステータス欄83には、40回分の通信パケットのデータが時系列に格納される。
図6に示すように、デバッガ21は、エミュレータ12から取得したバウンダリスキャンデータを、ピン番号と、そのピン番号に対応する、40ビットのステータスデータとにより管理する。図4と同様に、ステータスデータにおいて、0はLowを、1はHighを示す。図6のステータス欄83のバウンダリスキャンデータは、図4のステータス欄63のデータと一対一で対応している。
次に、ターゲットシステム13の構成について、説明する。図7は、ターゲットシステム13の構成を示すブロック図である。ターゲットシステム13は、上述したDSU31及びJTAGインタフェース32を含むCPU26と、EJTAGコネクタ33が搭載されたボードである。そのボード上には、さらに、メモリ81及び周辺回路82も搭載されている。
CPU26は、SoC(System on Chip)のシステムチップ91に含まれる。システムチップ91は、メモリ81を制御するメモリコントローラ92と、周辺回路82を制御する周辺回路コントローラ93も含む。従って、システムチップ91は、CPU26を含んで、バウンダリスキャンを実行可能な半導体チップである。
CPU26は、上述したDSU31及びJTAGインタフェース32の他に、ベースコア101と、メモリ管理ユニット(MMU)102と、データキャッシュ103と、命令キャッシュ104と、汎用レジスタ105と、システム制御コプロセッサレジスタ106と、バーストリフィル監視ユニット(以下、バーストリフィル監視部ともいう)107と、ライトバッファユニット108と、アドレスプロテクションユニット109と、グローバルバスインタフェースユニット110と、グローバルバス111とを含む。ベースコア101は、ベースとなるコアCPUである。システム制御コプロセッサレジスタ106は、図示しないコプロセッサを制御するためのレジスタである。CPU26は、グローバルバスインタフェースユニット110を介して、グローバルバス111に接続されている。メモリコントローラ92と周辺回路コントローラ93も、グローバルバス111に接続されている。メモリコントローラ92と周辺回路コントローラ93は、それぞれ、グローバス111経由でコマンド等を受けて、メモリ81と周辺回路82の制御を行う。
DSU(デバッグサポートユニット)31は、オンチップデバッグを実現するための機能ユニットであり、実行、ブレーク、シングルステップ、等のCPU26の実行制御、レジスタ及びメモリの読み書き、等の操作を行う。
バーストリフィル監視ユニット107は、リフィルサイクルのバーストアクセスの発生、メモリアクセス回数、等の監視を行う。バーストリフィル監視ユニット107は、本実施の形態のCPU26において、新たに追加された回路であり、後述するように、CPU26の暴走の原因に関わる回路である。
図8は、JTAGインタフェースの構成を説明するためのブロック図である。JTAGインタフェース32は、バウンダリスキャン機能と、DSU31とエミュレータ12間の通信制御機能の2つの機能をもつインタフェース回路である。バウンダリスキャンは、テストアクセスポート(以下、TAPという)を使用して、集積回路である半導体チップの内部回路のテストをするために、チップの入力あるいは出力のピンとピンとを一筆書きに接続し、テストデータを直列にシフトしながら行われるものである。
JTAGインタフェース32は、ターゲットCPU26内の内部論理回路26aに対してバウンダリスキャンテストを行う時に使用される複数のバウンダリスキャンレジスタ121と、TAP(Test Access Port)コントローラ122とを含んで構成される。SoCのシステムチップ91には、CPU26の内部論理回路26aと外部とを接続するための複数のピンすなわち入力あるいは出力のための端子(以下、入出力端子あるいは端子ともいう)123が設けられている。さらに、システムチップ91には、バウンダリスキャンテスト用のJTAG信号用のピンすなわち入出力端子(以下、端子とも言う)124から128も設けられている。
端子124は、TDI信号の入力端子であり、端子125は、TMS信号の入力端子であり、端子126は、TCK信号の入力端子であり、端子127は、TDO信号の出力端子であり、端子128は、TRST信号の入力端子である。TMS信号は、TAPコントローラ122へのテストモード選択信号、すなわちテストロジックを制御する信号である。TCK信号は、TAPコントローラ122へのクロック信号である。TRST信号は、TAPコントローラ122を非同期に初期化する信号である。TDI信号とTDO信号は、それぞれ、バウンダリスキャンのための、TAPコントローラ122への入力信号と出力信号である。より具体的には、TDI信号は、TAPコントローラ122のテストロジックに命令やデータをシリアル入力するための信号である。TDO信号は、TAPコントローラ122のテストロジックからのデータを出力する信号である。
TAPコントローラ122は、バウンダリスキャンテスト機能を実現するための命令レジスタ131、バイパスレジスタ132、デコーダ133、入力インタフェース134、及び出力インタフェース135を含む。
JTAG信号用の端子124から128は、エミュレータ12とのデータの送受信を行うポートである。従って、ターゲットシステム13とエミュレータ12との間では、5つの信号、すなわち、TCK、TMS、TDI、TDO、TRSTの各信号の送受信が行われる。
また、TAPコントローラ122は、2つのモード、すなわちバウンダリスキャン機能とデバッグサポートユニットの制御機能の2つの機能モードの制御を行う。命令レジスタ131は、シフトレジスタを基本とする4個のセルを含み、命令コードと、その命令コードから制御されるレジスタのデータを格納する。
バウンダリスキャンレジスタ121は、外部の端子と内部論理回路26aとの間に配置されたシフトレジスタである。TAPコントローラ122は、TDI信号用の端子124から入力されたデータをバウンダリスキャンレジスタ121へ取り込んだり、バウンダリスキャンレジスタ121のデータをTDO用の端子127にシフトアウトしたりする制御を行う。
バイパスレジスタ132は1ビット幅で、特定のテストに必要でないバウンダリスキャンチェーン内のデバイスをバイパスできるようにするためのレジスタである。
複数の入出力端子123の中には、CPU26中に設けられたバーストリフィル監視ユニット107の動作をモニタするための動作出力端子すなわち動作出力ピンが含まれている。ここでは、複数の入出力端子123の中で、ピン番号3から5の3つの入出力端子123が、CPUの暴走の原因に関わる回路であるバーストリフィル監視ユニット107に接続された動作出力ピンある、とする。上述したように、バーストリフィル監視ユニット107は、リフィルサイクルのバーストアクセスの発生、メモリアクセス回数、等の監視を行う回路である。従って、バーストリフィル監視ユニット107が、動作していると、ピン番号3から5の3つの入出力端子123に信号が現れる。言い換えると、ピン番号3から5の3つの入出力端子は、バーストリフィル監視ユニット107の動作状態を示す端子である。
図9はバウンダリスキャン順序を示すテーブルデータの例を示す図である。図9は、ピン番号1から115まで順番にバウンダリスキャンが実行されることを示している。バウンダリスキャンを実行するピンの順序の各ビット番号141は、図6のバウンダリスキャンデータテーブルのピン番号82と1対1で対応している。
(動作)
以下、上述したデバッグ環境におけるデバッグシステムの動作を説明する。
上述したように、例えば、CPUでは、キャッシュミス時にデータキャッシュリフィルを4ワードと設定し、外部デバイスでは、4回のメモリアクセスに対応するACK(応答)ではなく1回のACKのタイミングで所定の処理を実行するように誤って設計していた場合、その誤った設計の結果、プログラム実行中にCPUロックが発生する場合がある。そして、そのCPUロックの原因がプログラムの暴走による場合、プログラムが暴走しているときに、CPUを強制停止しても、バーストリフィル監視ユニット107は動作し続ける場合がある。従って、CPUの強制停止後も、バーストリフィル監視ユニット107が動作していれば、ピン番号3から5の動作出力端子には、信号が現れる。
以下、上述したデバッグ環境におけるデバッグシステムの動作を説明する。
上述したように、例えば、CPUでは、キャッシュミス時にデータキャッシュリフィルを4ワードと設定し、外部デバイスでは、4回のメモリアクセスに対応するACK(応答)ではなく1回のACKのタイミングで所定の処理を実行するように誤って設計していた場合、その誤った設計の結果、プログラム実行中にCPUロックが発生する場合がある。そして、そのCPUロックの原因がプログラムの暴走による場合、プログラムが暴走しているときに、CPUを強制停止しても、バーストリフィル監視ユニット107は動作し続ける場合がある。従って、CPUの強制停止後も、バーストリフィル監視ユニット107が動作していれば、ピン番号3から5の動作出力端子には、信号が現れる。
プログラム実行中にCPUロックが発生し、CPUが強制停止された後、ユーザがその原因を追及するために、以下のような操作が行われる。
ユーザは、ホスト11を操作して、SoCのシステムチップ91を含むターゲットシステム13のデバッグを行う。始めに、ユーザは、デバッガ21のプログラムを起動して、図3のデバッガ画面を表示させる。次に、図3のデバッガ画面51のRemoteボタンを押して、ホスト11を、エミュレータ12を経由して、ターゲットシステム13に接続する。そして、ユーザは、Goボタンを押して、CPU26上で実行させる、デバッグ対象のプログラムをターゲットシステム13にダウンロードして、そのプログラムをSoCのシステムチップ91上で実行させる。
そのプログラムの実行の結果,上述した場合、CPUのロック状態が発生する。ユーザは、CPUロックが発生すると、Haltボタンを押して、CPUを強制停止することができる。そして、デバッガ画面51のコマンド実行及びエラー表示部54には、タイムアウトエラーが発生したことを示すメッセージが表示される。
タイムアウトエラーの原因を追求するために、ユーザは、図3のデバッガ画面のCPUCheckボタンを押すことによって、CPU26にバウンダリスキャンを実行させ、得られたバウンダリスキャンデータを表示させる。
図10は、バウンダリスキャンデータの取得をするときのデバッガ21の処理の流れの例を示すフローチャートである。
CPUCheckボタンが押されると、図10の処理が実行される。先ず、デバッガ21は、エミュレータ12へ、システムチップ91に対してバウンダリスキャンの実行要求を行う(ステップS1)。すなわち、ステップS1は、バウンダリスキャンの実行要求を行うバウンダリスキャン実行要求部を構成する。
そして、デバッガ21は、エミュレータ12からバウンダリスキャンデータを取得したか否かを判定する(ステップS2)。バウンダリスキャンデータを取得しなければ、処理は、何もしない。バウンダリスキャンデータを取得すると、ステップS2でYESとなり、取得したバウンダリスキャンデータを記憶装置14の所定の記憶領域にストアする(ステップS3)。
そして、デバッガ21は、バウンダリスキャンデータを所定の回数分だけ取得したか否かを判定する(ステップS4)。バウンダリスキャンデータを所定の回数分だけ取得しなければ、NOとなって処理は、ステップS1へ戻る。ステップS2からS4が、システムチップ91のバウンダリスキャンデータを取得するバウンダリスキャンデータ取得部を構成する。
バウンダリスキャンデータを所定の回数分だけ取得した場合は、ステップS4でYESとなり、図4のバウンダリスキャンデータの画面61を生成し表示する(ステップS5)。ステップS5が、バウンダリスキャンデータ表示部を構成する。
なお、ステップS5を実行すると、デバッガ21は、エミュレータ12へバウンダリスキャンの実行停止要求を送信する。エミュレータ12はEJTAGコネクタ16経由でターゲットシステム13のCPU26へバウンダリスキャンテストの実行停止要求を送信する。JTAGインタフェース32は、バウンダリスキャンテストの実行停止要求を受信すると、TAPコントローラ122はバウンダリスキャンテストの実行を停止し、デバックサポートユニット(DSU)モードに切替える。
ここで、バウンダリスキャンデータの取得をするときのエミュレータ12の処理について説明する。図11は、バウンダリスキャンデータの取得をするときのエミュレータの処理の流れの例を示すフローチャートである。
エミュレータ12は、ホスト11のデバッガ21からバウンダリスキャンデータの実行要求を受信したか否かを判定する(ステップS11)。
エミュレータ12が、バウンダリスキャンデータの実行要求を受信しない場合は、ステップS11でNOとなり、処理は、何もしない。エミュレータ12が、バウンダリスキャンデータの実行要求を受信した場合は、ステップS11でYESとなり、ターゲットシステム13へバウンダリスキャンテストの実行要求をEJTAGコネクタ16経由で送信する(ステップS12)。
CPU26のJTAGインタフェース32では、バウンダリスキャンテストの実行要求を受信すると、TAPコントローラ122は、バウンダリスキャンモードに切替り、バウンダリスキャンテストを実行する。
ここでは、バウンダリスキャンレジスタは115ビット幅とする。TMS信号とTDI信号はTCK信号の立ち上がりエッジでサンプルリングされる。その結果、バウンダリスキャンレジスタが、TDI信号とTDO信号間で接続される。TDO信号はTCK信号の立ち下がりエッジでサンプリングされ、データは直列にスキャンアウトされる。図9のスキャン順序に従って、テストデータが実行される。TAPコントローラ122は、バウンダリスキャンレジスタ121のデータをEJTAGコネクタ16経由でエミュレータ12へ送信する。
エミュレータ12は、バウンダリスキャンデータを取得したか否かを判定し(ステップS13)、バウンダリスキャンデータを取得した場合は、ステップS13でYESとなり、デバッガ21へバウンダリスキャンデータを送信する(ステップS14)。なお、エミュレータ12は、バウンダリスキャンレジスタ121のデータを受信すると、エミュレータ12のバウンダリレジスタ(図示せず)へ格納する。エミュレータ12は、バウンダリスキャンデータを図5の通信パケットのDATA74のフィールドに格納し、デバッガ21へ送信する。デバッガ21は、その通信パケットを受信し、バウンダリスキャンレジスタ121のデータを図6のバウンダリスキャンデータテーブルのステータス欄83へデータを格納する。
上述したように、デバッガ21は、図6のバウンダリスキャンデータテーブルのデータが所定量だけ満たされるまで、エミュレータ12へバウンダリスキャンデータ取得要求の送信をくり返し、バウンダリスキャンデータを取得する。デバッガ21は、図6のバウンダリスキャンデータテーブルのデータが所定回数分だけ得られると、図4のバウンダリスキャンデータ画面61を生成し、バウンダリスキャンデータテーブルのデータを表示装置22の画面上に表示する。
以上の処理が実行されることによって、バウンダリスキャンデータを表示する図4の表示画面61が生成される。図4に示すように、バーストリフィル監視ユニット107の動作出力端子のバウンダリスキャンデータは、バーストリフィル監視ユニット107以外の他の回路の端子のバウンダリスキャンデータと共に、時系列に表示される。
ユーザは、図4の画面61を見ることにより、ピン番号3,4および5以外のピンの出力データは、すべて0(ゼロ)になっているのに対して、ピン番号3,4、および5の出力データだけが変化していることを認識する。すなわち、ユーザは、図4のバウンダリスキャンデータ画面からCPU I/O端子の状態が参照でき、ピン番号3から5に繋がる回路は、CPU26が停止しているにもかかわらず、動作していることがわかる。ピン番号3から5は、バースリフィル監視部107の動作に関するデータであるので、ユーザは、CPUロックの原因が、バーストリフィルに関するもの、すなわちキャッシュミス時のリフィルに関するもの、であると判定して、CPUロックの原因の追求を容易に行える。
上述したように、ユーザは、図3のエラーメッセージと、図4のバウンダリスキャンデータの時系列変化とにより、CPUロックの原因が、バーストリフィルに関するものであって、タイムアウトエラーとなるものである、ということを認識することができる。その結果、ユーザは、CPUロックの原因を、CPUからのACKに関する仕様、コード等を調べる方針を立てることができる。すなわち、CPUがロックした原因、CPUタイムアウトが発生した原因の絞込みを行うことができる。
以上のように、上述した実施の形態にかかるデバッグシステム1によれば、エミュレータ12を利用したSoCシステムのデバッグ環境において、デバッガ21はバウンダリスキャンデータをエミュレータ12経由で取得し、特に、発生したCPUの暴走の原因に関わるバウンダリスキャンデータを表示することができる。よって、CPUロック等の原因の絞込み等、デバッグの時間を短縮することができる。
従来であれば、プログラム実行中にCPUがロックした場合、CPUロックの原因がプログラムの問題なのか、ターゲットシステムの問題なのか、あるいはデバッガ、エミュレータなどの問題なのかを判断するのが難しく、原因を絞る込むための時間がかかった。しかし、上述した本実施の形態によれば、CPUロックの原因を短時間で特定することができる。
そして、CPUロックの原因の絞込みを早くできることは、デバッグ時間の短縮、デバッグの品質の向上等に繋がるものである。
また、このようなデバッグシステム1によれば、ボード、LSIなどの検証などに利用できるため、ハードウェアとソフトウェアの協調デバッグも可能となる。
なお、上述した例では、CPUの暴走の原因となる動作に関わる回路として、バーストリフィル監視部を挙げたが、CPUの暴走の原因となる動作に関わる回路として、PCIバス監視部等の他の回路でもよい。
例えば、PCIバス監視部は、PCIバスのバス権の監視を行う回路である。PCIバスのバス権処理が適切に行われないと、システムのブート時にプログラムがmainのプログラムが実行されずにCPUが暴走する場合がある。すなわち、ブート時に、処理は、mainのプログラムの実行まで到達できずに、CPUが暴走状態となる場合がある。この状態は、例えば、PCIバスのバス権が、ブート時の処理において有効にならず、リセット処理により有効になるように仕様が誤って設定されている場合に生じる。従って、このようなPCIバス監視部状態の動作出力ピンの信号状態をバウンダリスキャンデータとして取得するようにすれば、CPUの暴走の原因がPCIバス権の処理にあるか否かを判定することができる。
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウェアやソフトウェア・ルーチンに1対1には対応しない。従って、本明細書では、以下、実施の形態の各機能を有する仮想的回路ブロック(部)を想定して実施の形態を説明した。また、本実施の形態における各手順の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、CD−ROM等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のデバッグシステムを実現することができる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1 デバッグシステム、11 ホスト、12 エミュレータ、13 ターゲットシステム、14 記憶装置、15 ケーブル、16 EJTAGコネクタユニット、21 デバッガ、22 表示装置、23 コントローラ、24 ホストインターフェース、25、32 JTAGインターフェース、26 CPU、31 DSU、91 システムチップ、111 グローバルバス
Claims (5)
- CPUを含んでバウンダリスキャンを実行可能な半導体チップのデバックを行うデバッグ装置であって、
前記CPUの暴走の原因に関わる回路の動作出力端子を有する前記半導体チップに対して前記バウンダリスキャンの実行要求を行うバウンダリスキャン実行要求部と、
前記バウンダリスキャンの実行要求に応じて出力された前記半導体チップのバウンダリスキャンデータを取得するバウンダリスキャンデータ取得部と、
前記半導体チップから取得した、前記回路の動作出力端子のバウンダリスキャンデータを時系列に画面上に表示させるバウンダリスキャンデータ表示部と、
を有することを特徴とするデバッグ装置。 - 前記回路は、バーストリフィル監視部の回路であることを特徴とする請求項1に記載のデバッグ装置。
- 前記バウンダリスキャンデータ表示部は、前記回路以外の他の回路の端子のバウンダリスキャンデータと共に、前記回路の動作出力端子のバウンダリスキャンデータを時系列に表示することを特徴とする請求項1又は2に記載のデバッグ装置。
- 前記バウンダリスキャン実行要求部は、JTAG対応のエミュレータを介して前記半導体チップに対して前記バウンダリスキャンの実行要求を行うことを特徴とする請求項1から3のいずれか1つに記載のデバッグ装置。
- CPUを含んでバウンダリスキャンを実行可能な半導体チップのデバック方法であって、
前記半導体チップに、前記CPUの暴走の原因に関わる回路の動作出力端子を設け、
デバッガが、前記半導体チップに前記バウンダリスキャンを複数回実行させ、前記バウンダリスキャンにより得られた前記動作出力端子のバウンダリスキャンデータを時系列に表示することを特徴とするデバッグ方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008104990A JP2009258857A (ja) | 2008-04-14 | 2008-04-14 | デバッグ装置及びデバッグ方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008104990A JP2009258857A (ja) | 2008-04-14 | 2008-04-14 | デバッグ装置及びデバッグ方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009258857A true JP2009258857A (ja) | 2009-11-05 |
Family
ID=41386217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008104990A Pending JP2009258857A (ja) | 2008-04-14 | 2008-04-14 | デバッグ装置及びデバッグ方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009258857A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012014303A1 (ja) * | 2010-07-29 | 2012-02-02 | 富士通株式会社 | 半導体集積回路装置、その制御方法及び情報処理装置 |
CN112380119A (zh) * | 2020-11-12 | 2021-02-19 | 上海东软载波微电子有限公司 | 芯片、编程调试器、系统及锁定编程调试入口的方法 |
-
2008
- 2008-04-14 JP JP2008104990A patent/JP2009258857A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012014303A1 (ja) * | 2010-07-29 | 2012-02-02 | 富士通株式会社 | 半導体集積回路装置、その制御方法及び情報処理装置 |
US8667346B2 (en) | 2010-07-29 | 2014-03-04 | Fujitsu Limited | Semiconductor integrated circuit device, method of controlling the semiconductor integrated circuit device and information processing system |
CN112380119A (zh) * | 2020-11-12 | 2021-02-19 | 上海东软载波微电子有限公司 | 芯片、编程调试器、系统及锁定编程调试入口的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9152520B2 (en) | Programmable interface-based validation and debug | |
US6961872B2 (en) | Microcomputer and debugging system | |
US6189140B1 (en) | Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic | |
US6154856A (en) | Debug interface including state machines for timing synchronization and communication | |
US7577876B2 (en) | Debug system for data tracking | |
TWI544410B (zh) | 利用執行單步驟以進行編碼診斷 | |
US7673188B2 (en) | System and method for controlling synchronous functional microprocessor redundancy during test and method for determining results | |
US7873874B2 (en) | System and method for controlling synchronous functional microprocessor redundancy during test and analysis | |
US7404178B2 (en) | ROM-embedded debugging of computer | |
JP4450787B2 (ja) | 半導体集積回路装置 | |
TWI550397B (zh) | 除錯方法及其裝置 | |
WO2006008721A2 (en) | Emulation and debug interfaces for testing an integrated circuit with an asynchronous microcontroller | |
US7313729B2 (en) | Low-cost debugging system with a ROM or RAM emulator | |
US7526756B2 (en) | Address watch breakpoints with basing pointers | |
JP2009258857A (ja) | デバッグ装置及びデバッグ方法 | |
US7360117B1 (en) | In-circuit emulation debugger and method of operation thereof | |
JP6981920B2 (ja) | 半導体装置、およびデバッグ方法 | |
TWI541646B (zh) | 偵錯系統及其控制方法 | |
CN110321171B (zh) | 开机检测装置、系统及其方法 | |
TWI234705B (en) | Detecting method for PCI system | |
Lee et al. | A low-cost SOC debug platform based on on-chip test architectures | |
JP2004101203A (ja) | ロジックlsiの不良解析システム及び不良解析方法 | |
JP2004094451A (ja) | オンチップjtagインタフェース回路およびシステムlsi | |
Banik et al. | System Firmware Debugging | |
JP2009080632A (ja) | 半導体集積回路 |