説明

トレースデータ取得装置、トレースデータ取得装置のトレースデータ取得方法およびデバッグシステム

【課題】LSIの実行を停止させることなく、被試験プログラムを分割せずに、必要なトレースデータを効率良く取得できるようにすることを目的とする。
【解決手段】トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102に基づいて、トレースデータ101の種類を優先度の高い順に選択する。トレースデータ取捨選択部110は、LSIのトレース信号発生源からトレースデータ101を入力し、入力したトレースデータ101が選択種類のトレースデータ101であるか否かを判定する。トレースデータ101が選択種類のトレースデータ101である場合、トレースデータ取捨選択部110はトレースデータ101をトレースデータバッファ120に記憶する。トレースデータ101が選択種類のトレースデータ101でない場合、トレースデータ取捨選択部110はトレースデータ101を破棄する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、LSI(Large Scale Integration)のトレースデータを取得するトレースデータ取得装置、トレースデータ取得装置のトレースデータ取得方法およびデバッグシステムに関するものである。
【背景技術】
【0002】
LSIの大規模化により、複数のチップに実装されていたLSIが一つのチップに実装されるようになった。そして、特別な仕掛けを施さなければ、LSI内部の情報を取得することが出来ない。そのため、LSI内部の情報を取得するための手法が必要である。
その一つの手法として、LSI内部の信号をトレースしてトレースデータをLSI内部のトレースメモリに保存した後、LSIの動作を停止させ、トレースメモリからトレースデータを外部装置等に吸い出す作業を行っていた。
しかし、トレースメモリの容量には限界があるため、被試験プログラムの全てのトレースデータを途切れなく取得することができない。そこで、被試験プログラムを分割し、分割された被試験プログラム毎にトレースデータを取得していた。
【0003】
特許文献1の従来技術は、一連の作業を自動で行うためにトレースメモリの空き容量を監視する。トレースメモリに空きがなくなった場合には、LSIの動作を停止させ、トレースメモリからトレースデータを退避する。そして、トレースメモリのトレースデータを全て退避した後にLSIの動作を再開させ、トレースデータの取得を再開する。
【0004】
また、限られたトレースメモリの容量を活用するため、トレースデータを圧縮回路によって圧縮する手法がある。その一つの手法として、特許文献2の従来技術は、トレースデータを複数の圧縮回路で圧縮し、その中で圧縮率が一番高い圧縮回路で圧縮したデータを選択する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平5−61720号公報
【特許文献2】特開2009−087343号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1の従来技術は、トレースメモリに空きが無くなる度にLSIの動作を停止してトレースデータを退避しなければならないため効率が悪い。また、被試験プログラムを分割して実行した場合、被試験プログラムを分割せずに実行しなければ発見できない不具合を検出することができない。
【0007】
また、特許文献2の従来手法によりトレースデータを効率的に圧縮したとしても、トレースデータを保存するトレースメモリの容量は有限であるため、特許文献1の課題を解決することはできない。
【0008】
本発明は、例えば、LSIの実行を停止させることなく、被試験プログラムを分割せずに、必要なトレースデータを効率良く取得できるようにすることを目的とする。
【課題を解決するための手段】
【0009】
本発明のトレースデータ取得装置は、
種類が異なる複数のデータであって種類毎に優先度が定められた複数のデータそれぞれをトレースデータとして入力するトレースデータ入力部と、
トレースデータを記憶するトレースデータ記憶部と、
前記トレースデータ記憶部の空き容量に基づいて、前記トレースデータ記憶部に記憶するトレースデータの種類を選択種類として優先度の高い順に1種類以上選択するトレースデータ種類選択部と、
前記トレースデータ入力部がトレースデータを入力した場合、前記トレースデータ入力部にトレースデータとして入力された入力データが前記トレースデータ種類選択部により選択された選択種類のトレースデータであるか否かを判定するトレースデータ種類判定部とを備え、
前記トレースデータ記憶部は、前記トレースデータ種類判定部により前記入力データが前記選択種類のトレースデータであると判定された場合に前記入力データを記憶する。
【発明の効果】
【0010】
本発明によれば、例えば、LSIの実行を停止させることなく、被試験プログラムを分割せずに、必要なトレースデータを効率良く取得することができる。
【図面の簡単な説明】
【0011】
【図1】実施の形態1におけるデバッグシステム200の構成図。
【図2】実施の形態1におけるLSIトレースデータ取得装置100の機能構成図。
【図3】実施の形態1におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャート。
【図4】実施の形態1におけるトレースデータ入出力状況分析部140のトレースデータ入出力状況分析処理を示すフローチャート。
【図5】実施の形態1におけるトレースデータ入出力状況分析部140のトレースデータ種類選択処理(S230)の一例を示す概要図。
【図6】実施の形態1におけるトレースデータ入出力状況分析部140のトレースデータ種類選択処理(S230)の一例を示すフローチャート。
【図7】実施の形態2におけるLSIトレースデータ取得装置100の機能構成図。
【図8】実施の形態2におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャート。
【図9】実施の形態3におけるLSIトレースデータ取得装置100の機能構成図。
【図10】実施の形態3におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャート。
【図11】実施の形態4におけるLSIトレースデータ取得装置100の機能構成図。
【図12】実施の形態4におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャート。
【図13】実施の形態5におけるLSIトレースデータ取得装置100の機能構成図。
【図14】実施の形態5におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャート。
【図15】実施の形態5におけるトレースデータ入出力状況分析部140のトレースデータ入出力状況分析処理を示すフローチャート。
【図16】実施の形態5におけるトレースデータ入出力状況分析部140のトレースデータ種類選択処理(S230B)の一例を示すフローチャート。
【図17】実施の形態6におけるLSIトレースデータ取得装置100の機能構成図。
【図18】実施の形態7におけるデバッグシステム200の構成図。
【図19】実施の形態7におけるデバッグ装置220のトレースデータ保存方法を示すフローチャート。
【発明を実施するための形態】
【0012】
実施の形態1.
LSI(Large Scale Integration)内で、バッファの空き容量に応じて取得対象のトレースデータの種類を選択し、選択した種類のトレースデータを取得する形態について説明する。
但し、LSIは、トレースデータを取得する対象装置の一例である。例えば、LSIの代わりにパーソナルコンピュータやサーバ装置などの計算機を対象にして、計算機の内部または外部でトレースデータを取得しても構わない。
【0013】
図1は、実施の形態1におけるデバッグシステム200の構成図である。
デバッグシステム200の構成について、図1に基づいて説明する。
【0014】
デバッグシステム200は、デバッグ対象のLSI210と、LSI210のトレースデータ101に基づいてLSI210の回路またはLSI210で実行するプログラムをデバッグするためのデバッグ装置220とを有する。
【0015】
LSI210は、CPU219(Central Processing Unit)、内部バス212、外部出力インタフェース213、内部メモリ214およびLSIトレースデータ取得装置100を備える。
また、LSI210は、複数のトレース信号発生源211を備える。トレース信号発生源211とは、トレース対象のデータ(トレースデータ)を表すトレース信号を発生(入出力)するハードウェア(例えば、回路)またはソフトウェアのことである。CPU219、内部バス212、外部出力インタフェース213、内部メモリ214をトレース信号発生源211にしてもよい。
【0016】
LSIトレースデータ取得装置100は、各トレース信号発生源211で発生したトレース信号を信号線を介して入力し、入力したトレース信号からトレースデータ101を取得し、取得したトレースデータ101を内部バス212と外部出力インタフェース213とを介してデバッグ装置220に出力する。
但し、外部出力インタフェース213の障害等によりトレースデータ101をデバッグ装置220に出力できない場合、LSIトレースデータ取得装置100はLSI210の内部メモリ214にトレースデータ101を出力する。
【0017】
以下、トレース信号とトレースデータとを総称して「トレースデータ101」という。
【0018】
トレースデータ101には、処理内容(命令)を示すコマンド信号、処理対象のデータ等が記憶されている記憶領域のアドレスを示すアドレス信号、処理対象のデータを示すデータ信号など、複数の種類がある。
実施の形態1において、利用者は、トレースデータ101の種類毎に優先度(重要度)を予め定め、定めた優先度に関する情報(後述する選択方法情報103A)をLSIトレースデータ取得装置100に設定しておくものとする。
【0019】
図2は、実施の形態1におけるLSIトレースデータ取得装置100の機能構成図である。
実施の形態1におけるLSIトレースデータ取得装置100の機能構成について、図2に基づいて説明する。
【0020】
LSIトレースデータ取得装置100(トレースデータ取得装置の一例)は、トレースデータ取捨選択部110、トレースデータバッファ120およびトレースデータ入出力状況分析部140を備える。
【0021】
トレースデータ入出力状況分析部140(トレースデータ種類選択部の一例)は、トレースデータバッファ120の空き容量102に基づいて、トレースデータバッファ120に記憶するトレースデータ101の種類を選択種類として優先度の高い順に1種類以上選択する。
以下、選択種類を示す情報を「選択種類情報103B」という。
【0022】
トレースデータ取捨選択部110(トレースデータ入力部、トレースデータ種類判定部の一例)は、種類が異なる複数のデータであって種類毎に優先度が定められた複数のデータそれぞれをトレースデータ101として入力する。
トレースデータ取捨選択部110は、トレースデータ101を入力した場合、入力したトレースデータ(入力データ)がトレースデータ入出力状況分析部140により選択された選択種類のトレースデータ101であるか否かを判定する。
【0023】
トレースデータバッファ120(トレースデータ記憶部の一例)は、トレースデータ取捨選択部110により入力データが選択種類のトレースデータ101であると判定された場合に入力データを記憶する。
【0024】
例えば、トレースデータ入出力状況分析部140は、以下のように選択種類を選択する。
トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102が大きいほど多くのトレースデータ101の種類を選択種類として選択する。また、トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102が小さいほど少ないトレースデータ101の種類を選択種類として選択する。
トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102と所定の容量閾値とを比較する。トレースデータバッファ120の空き容量102が容量閾値より大きい場合、トレースデータ入出力状況分析部140は、トレースデータ101の選択種類を所定の第1の選択種類数だけ選択する。また、トレースデータバッファ120の空き容量102が容量閾値より小さい場合、トレースデータ入出力状況分析部140は、トレースデータ101の選択種類を第1の選択種類数より少ない所定の第2の選択種類数だけ選択する。
【0025】
LSIトレースデータ取得装置100は、さらに、トレースデータ逐次出力部130とトレースデータ制御レジスタ141とを備える。
【0026】
トレースデータ逐次出力部130は、トレースデータバッファ120に記憶されたトレースデータ101を逐次、デバッグ装置220または内部メモリ214へ出力する。
【0027】
トレースデータ制御レジスタ141は、選択方法情報103A(または、選択方法情報103Aを記憶した記憶領域のアドレス)が設定される記憶部である。
選択方法情報103Aは、トレースデータ入出力状況分析部140にトレースデータ101の種類を選択させる選択条件を示す情報である。
【0028】
LSIトレースデータ取得装置100の「〜部」として説明する構成は「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明する構成は、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
例えば、LSIトレースデータ取得装置100はCPUやメモリを備える。また、「〜部」として説明する機能を実行するプログラムはメモリに記憶され、CPUにより読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【0029】
図3は、実施の形態1におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャートである。
実施の形態1におけるトレースデータ取得方法の処理の流れについて、図3に基づいて説明する。
【0030】
S110において、トレースデータ取捨選択部110は、特定のトレース信号発生源211から出力されたトレースデータ101を入力する。
S110の後、S120に進む。
【0031】
S120において、トレースデータ取捨選択部110は、トレースデータ入出力状況分析部140から選択種類情報103Bを定期的に、または所定のタイミングで取得しているものとする。
選択種類情報103Bは、トレースデータ101の種類を1種類以上示す情報である。
以下、選択種類情報103Bに示されるトレースデータ101の種類を「選択種類」という。
【0032】
トレースデータ取捨選択部110は、トレースデータ入出力状況分析部140から前回取得した選択種類情報103Bを参照する。
そして、トレースデータ取捨選択部110は、S110で入力したトレースデータ101が選択種類情報103Bに示される選択種類と同じ種類のトレースデータ101であるか否かを判定する。
【0033】
例えば、トレースデータ101の所定のデータ位置には、トレースデータ101のデータ種類が設定される。
この場合、トレースデータ取捨選択部110は、トレースデータ101に設定されているデータ種類と選択種類情報103Bに示されている選択種類とを比較して判定を行う。
【0034】
S110で入力したトレースデータ101が選択種類情報103Bに示される選択種類と同じ種類のトレースデータ101である場合(YES)、S130に進む。
S110で入力したトレースデータ101が選択種類情報103Bに示される選択種類と同じ種類のトレースデータ101でない場合(NO)、トレースデータ取捨選択部110はS110で入力したトレースデータ101を破棄し、処理はS110に戻る。
【0035】
S130において、トレースデータ取捨選択部110は、S110で入力したトレースデータ101をトレースデータバッファ120に保存する。
S130の後、S140に進む。
【0036】
S140において、トレースデータ逐次出力部130は、トレースデータバッファ120から先に保存されたトレースデータ101から順番に取得する。
そして、トレースデータ逐次出力部130は、取得したトレースデータ101をLSI210の内部バス212と外部出力インタフェース213とを介してデバッグ装置220に出力する。但し、外部出力インタフェース213の障害等のためトレースデータ101をデバッグ装置220に出力できない場合、トレースデータ逐次出力部130はトレースデータ101をLSI210の内部メモリ214に退避する。
S140の後、S110に戻る。
【0037】
S140でトレースデータ逐次出力部130がトレースデータ101を逐次出力することにより、LSI210の動作を停止させずに、トレースデータ101をデバッグ装置220に出力することができる。
【0038】
しかし、トレースデータ逐次出力部130からデバッグ装置220へのトレースデータ101の出力は外部出力インタフェース213を介して行うため、トレースデータ逐次出力部130から出力されるトレースデータ101の出力速度は速くない。
【0039】
したがって、トレースデータ逐次出力部130から出力できるトレースデータ101の単位時間当たりの出力量は、通常、トレースデータ取捨選択部110に入力される単位時間当たりのトレースデータ101の入力量(発生量)よりも少ない。
このため、全てのトレースデータ101をトレースデータバッファ120に保存してしまうと、トレースデータバッファ120の空き容量が無くなり、重要なトレースデータ101を保存できなくなってしまう。
【0040】
そこで、トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102に基づいて、トレースデータバッファ120に保存するトレースデータ101の種類を選択する。
そして、トレースデータ取捨選択部110は、トレースデータ入出力状況分析部140により選択された選択種類のトレースデータ101だけをトレースデータバッファ120に保存する(S120、S130)。
【0041】
次に、トレースデータ入出力状況分析部140の処理について説明する。
【0042】
図4は、実施の形態1におけるトレースデータ入出力状況分析部140のトレースデータ入出力状況分析処理を示すフローチャートである。
実施の形態1におけるトレースデータ入出力状況分析部140のトレースデータ入出力状況分析処理について、図4に基づいて説明する。
【0043】
S210において、トレースデータ入出力状況分析部140は、トレースデータ制御レジスタ141(または、トレースデータ制御レジスタ141に示されるアドレスで特定される記憶領域)から選択方法情報103Aを取得する。トレースデータ入出力状況分析部140は定期的にまたは所定のタイミングで選択方法情報103Aを取得し直してもよい。
選択方法情報103Aは、トレースデータ101の種類を選択する選択条件を示す情報である。選択方法情報103Aは、利用者によって、トレースデータ制御レジスタ141またはLSIトレースデータ取得装置100のメモリに予め設定されているものとする。
【0044】
例えば、選択方法情報103Aは、トレースデータバッファ120の空き容量102と比較する容量閾値を示す。さらに、選択方法情報103Aは、トレースデータバッファ120の空き容量102と容量閾値との大小関係に対応付けて、選択すべきトレースデータ101の種類を示す。
また例えば、選択方法情報103Aは、トレースデータ101の種類毎に優先度を示す。さらに、選択方法情報103Aは、トレースデータバッファ120の空き容量102と容量閾値との大小関係に対応付けて、選択すべきトレースデータ101の種類の数を示す。
【0045】
S210の後、S220に進む。
【0046】
S220において、トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量を示す情報(空き容量102)を取得する。トレースデータバッファ120の空き容量を示す情報は、トレースデータバッファ120のバッファ管理機能から取得できるものとする。
空き容量を示す情報とは、空き容量のサイズや空き容量の割合などを意味する。実施の形態1において、空き容量を示す情報を「空き容量102」という。
S220の後、S230に進む。
【0047】
S230において、トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102と選択方法情報103Aとに基づいて、トレースデータ101の種類を選択する。
トレースデータバッファ120の空き容量102に基づいてトレースデータ101の種類を選択することにより、トレースデータバッファ120の空き容量102が少なくなっても、重要なトレースデータ101を保存することができる。
S230の詳細については後述する。
S230の後、S240に進む。
【0048】
S240において、トレースデータ入出力状況分析部140は、選択したトレースデータ101の種類を示す選択種類情報103Bを生成し、生成した選択種類情報103Bをトレースデータ取捨選択部110に入力する。
S240の後、S220に戻る。
【0049】
トレースデータ入出力状況分析部140は、S220からS240の処理を定期的に、または所定のタイミングで実行する。
【0050】
図5は、実施の形態1におけるトレースデータ入出力状況分析部140のトレースデータ種類選択処理(S230)の一例を示す概要図である。
トレースデータ入出力状況分析処理(図4参照)で実行するトレースデータ種類選択処理(S230)の一例について、図5に基づいて説明する。
【0051】
例えば、トレースデータ101(トレース信号)の種類には、処理内容(命令)を示すコマンド信号101Aと、処理対象のデータ等が記憶されている記憶領域のアドレスを示すアドレス信号101Bと、処理対象のデータを示すデータ信号101Cとの3種類が存在するものとする。
また、コマンド信号101A、アドレス信号101B、データ信号101Cの順で優先度(重要度)が高いものとする。
【0052】
トレースデータ取捨選択部110は、コマンド信号101Aとアドレス信号101Bとデータ信号101Cとのうち、選択種類情報103Bに示される選択種類と同じ種類のトレースデータ101をトレースデータバッファ120に記憶する。
トレースデータ逐次出力部130は、トレースデータバッファ120からトレースデータ101を記憶順に取得し、取得したトレースデータ101を出力する。
【0053】
トレースデータバッファ120の記憶領域のうちトレースデータ101が記憶されている領域を「利用領域」といい、トレースデータ101が記憶されていない領域を「空き領域」という。
トレースデータバッファ120の空き容量102とは、トレースデータバッファ120の空き領域のサイズまたは割合を意味する。
【0054】
トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102を容量閾値(大)および容量閾値(小)と比較する。
空き容量102が容量閾値(大)より大きい場合、トレースデータ入出力状況分析部140は、全てのトレースデータ101の種類を選択する。
空き容量102が容量閾値(大)より小さく容量閾値(小)より大きい場合、トレースデータ入出力状況分析部140は、優先度が高い種類から順に2つの種類(コマンド信号101A、アドレス信号101B)を選択する。
空き容量102が容量閾値(小)より小さい場合、トレースデータ入出力状況分析部140は、優先度が最も高い種類(コマンド信号101A)を選択する。
【0055】
トレースデータ入出力状況分析部140は、選択したトレースデータ101の種類を示す選択種類情報103Bをトレースデータ取捨選択部110に入力する。
【0056】
図6は、実施の形態1におけるトレースデータ入出力状況分析部140のトレースデータ種類選択処理(S230)の一例を示すフローチャートである。
図5で説明したトレースデータ種類選択処理(S230)のフローチャートについて、図6に基づいて説明する。
【0057】
S231において、トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102と、選択方法情報103Aに示される容量閾値(大)とを大小比較する。
空き容量102が容量閾値(大)以上の場合(YES)、S232に進む。
空き容量102が容量閾値(大)未満の場合(NO)、S233に進む。
【0058】
S232において、トレースデータ入出力状況分析部140は、選択方法情報103Aに基づいて、コマンド信号101Aとアドレス信号101Bとデータ信号101Cとを選択する。
S232により、トレースデータ選択処理(S230)は終了する。
【0059】
S233において、トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102と、選択方法情報103Aに示される容量閾値(小)とを大小比較する。
空き容量102が容量閾値(小)以上の場合(YES)、S234に進む。
空き容量102が容量閾値(小)未満の場合(NO)、S235に進む。
【0060】
S234において、トレースデータ入出力状況分析部140は、選択方法情報103Aに基づいて、コマンド信号101Aとアドレス信号101Bとを選択する。
S234により、トレースデータ選択処理(S230)は終了する。
【0061】
S235において、トレースデータ入出力状況分析部140は、選択方法情報103Aに基づいて、コマンド信号101Aを選択する。
S235により、トレースデータ選択処理(S230)は終了する。
【0062】
図5および図6で説明したトレースデータ種類選択処理(S230)は実施の形態の一例である。
例えば、トレースデータバッファ120の空き容量102と比較する容量閾値の数は、2つではなく、1つ又は3つ以上であってもよい。
また、トレースデータ101の種類は、3種類ではなく、2種類又は4種類以上であってもよい。
【0063】
図5に示すように、空き容量102は利用領域の容量と相補的に対応している。そのため、空き容量102と容量閾値とを比較する代わりに、利用領域の容量と容量閾値とを比較しても構わない。
実施の形態1において、空き容量102と容量閾値とを比較することは、利用領域の容量と容量閾値とを比較することに等しい(但し、大小関係は逆転する)。
【0064】
実施の形態1において、例えば、以下のようなLSIトレースデータ取得装置100について説明した。
【0065】
LSIトレースデータ取得装置100は、トレースデータ取捨選択部110とトレースデータバッファ120とトレースデータ入出力状況分析部140とを備える。
トレースデータ取捨選択部110は、トレースデータ101を取捨選択する。
トレースデータバッファ120は、トレースデータ101を一時的に保存する。
トレースデータ入出力状況分析部140は、トレースデータ101の入出力状況(空き容量102)を分析する。そして、トレースデータ入出力状況分析部140は、トレースデータバッファ120の残容量(空き容量102)に応じて、トレースデータ取捨選択部110を動的に制御する。
【0066】
LSIトレースデータ取得装置100は、さらに、トレースデータ逐次出力部130を備える。
トレースデータ逐次出力部130は、トレースデータバッファ120に保存されているトレースデータ101をトレースデータバッファ120から外部に逐次出力する。
【0067】
LSIトレースデータ取得装置100は、さらに、トレースデータ入出力状況分析部140の動作を制御するためのトレースデータ制御レジスタ141を備える。
【0068】
LSI210のデバッグ作業では、全てのトレース信号発生源211の情報が必要というわけではなく、トレース信号発生源211ごとに必要さの優先度がある。また、トレースデータ101を逐次出力することのできるデータ量はそのときによって変動する。
実施の形態1では、トレースデータバッファ120の入出力状況(空き容量102)を分析することにより、トレースデータ101を適切に取捨選択している。
つまり、トレースデータ101を逐次出力できるデータ量が多いときは多くのトレース信号(トレースデータ101)を取得している。また、トレースデータ101を逐次出力できるデータ量が少ないときは優先度の高い限られたトレース信号のみを選択している。
これにより、LSI210の動作を止めることなく、トレースデータ101を取得することができる。さらに、適切な容量閾値を設定することにより、トレースデータバッファ120の記憶容量を最小限に抑えることができる。つまり、トレースデータバッファ120の記憶容量を削減することができる。
【0069】
LSI210内部に埋め込まれた「性能モニタ」と呼ばれるカウンタを利用してLSI210の性能を測定する方法がある。性能モニタは予め定められたイベントの回数をカウントする。例えば、性能モニタは、演算命令、バスアサート、パイプラインストールなどのイベントをカウントする。
性能モニタのカウント値を読み出すには性能モニタにアクセスする必要がある。しかし、LSI210のCPUを用いて性能モニタにアクセスする場合、性能モニタにアクセスし、性能モニタからカウント値を読み出すためのコードをLSI210のプログラムソースに追加する必要がある。また、LSI210のデバッグやLSI210の性能測定のために性能モニタにアクセスする場合、LSI210のCPUが性能モニタにアクセスすることにより、LSI210の使用環境に影響を与える可能性がある。
実施の形態1では、性能モニタをトレース信号発生源211としてLSIトレースデータ取得装置100に接続すれば、性能モニタのカウント値(トレースデータ101の一例)をLSIトレースデータ取得装置100で取得することができる。つまり、LSI210のプログラムソースにコードを追加する必要がなく、LSI210の使用環境に影響を与えない。
【0070】
実施の形態2.
トレースデータバッファ120により多くの種類のトレースデータ101を保存するために、トレースデータ101を圧縮してトレースデータバッファ120に保存する形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
【0071】
図7は、実施の形態2におけるLSIトレースデータ取得装置100の機能構成図である。
実施の形態2におけるLSIトレースデータ取得装置100の機能構成について、図7に基づいて説明する。
【0072】
LSIトレースデータ取得装置100は、実施の形態1の構成(図2参照)に加えて、圧縮回路150を備える。
【0073】
圧縮回路150(トレースデータ圧縮部の一例)は、トレースデータ取捨選択部110により入力データが選択種類のトレースデータであると判定された場合に入力データを圧縮する。
【0074】
トレースデータバッファ120は、圧縮回路150により圧縮された入力データを記憶する。
【0075】
図8は、実施の形態2におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャートである。
実施の形態2におけるトレースデータ取得方法の処理の流れについて、図8に基づいて説明する。
【0076】
実施の形態1と同じ処理(図3参照)には実施の形態1と同じ処理番号(Sxxx)を付している。
【0077】
S110において、トレースデータ取捨選択部110は、トレースデータ101を入力する。
S110の後、S120に進む。
【0078】
S120において、トレースデータ取捨選択部110は、入力したトレースデータ101が選択種類のトレースデータ101であるか否かを判定する。
入力したトレースデータ101が選択種類のトレースデータ101である場合(YES)、S131に進む。
入力したトレースデータ101が選択種類のトレースデータ101でない場合(NO)、S110に戻る。
【0079】
S131において、圧縮回路150はトレースデータ取捨選択部110からトレースデータ101を入力し、入力したトレースデータ101を所定の圧縮方式で圧縮する。
トレースデータ101を圧縮することにより、トレースデータ101のデータサイズを小さくし、トレースデータバッファ120の空き容量102を増やすことができる。
トレースデータバッファ120の空き容量102が増えた場合、実施の形態1で説明したように(図4から図6参照)、トレースデータ入出力状況分析部140により選択されるトレースデータ101の種類が増える。つまり、より多くの種類のトレースデータ101をトレースデータバッファ120に保存することができる。
【0080】
例えば、圧縮回路150は、ランレングス符号化方式でトレースデータ101を圧縮する。
ランレングス符号化方式では、前回と同じデータが入力された場合にはデータを出力はせず、同じデータが入力された回数をカウントする。また、前回と異なるデータが入力された場合、入力されたデータと前回までのカウント回数とを合わせて出力する。これにより、出力データ量を削減することができる。
このランレングス符号化方式は、トレースデータ101の変化が少ない場合に特に有効である。
【0081】
S131の後、S132に進む。
【0082】
S132において、圧縮回路150は、圧縮したトレースデータ101(圧縮データ104)をトレースデータバッファ120に保存する。
S132の後、S141に進む。
【0083】
S141において、トレースデータ逐次出力部130は、トレースデータバッファ120から圧縮データ104を取得し、取得した圧縮データ104を出力する。
S141の後、S110に戻る。
【0084】
実施の形態2において、圧縮回路150を備えるLSIトレースデータ取得装置100について説明した。
圧縮回路150は、トレースデータ取捨選択部110から発生したトレースデータ101を圧縮する。
トレースデータ取捨選択部110で選択したトレース信号(トレースデータ101)を圧縮回路150により圧縮することにより、トレース信号のトレースデータ量を削減し、より多くのトレース信号を取得することができる。
【0085】
実施の形態3.
複数の圧縮回路を備えることにより、より多くの種類のトレースデータ101をトレースデータバッファ120に保存する形態について説明する。
以下、実施の形態1、2と異なる事項について主に説明する。説明を省略する事項については実施の形態1、2と同様である。
【0086】
図9は、実施の形態3におけるLSIトレースデータ取得装置100の機能構成図である。
実施の形態3におけるLSIトレースデータ取得装置100の機能構成について、図9に基づいて説明する。
【0087】
LSIトレースデータ取得装置100は、実施の形態1の構成(図2参照)に加えて、複数の圧縮回路150、圧縮回路選択部151、圧縮回路分析部152および圧縮回路制御レジスタ153を備える。
【0088】
複数の圧縮回路150は、トレースデータ取捨選択部110により入力データが選択種類のトレースデータ101であると判定された場合に入力データをそれぞれに異なる圧縮方式で圧縮する。
【0089】
圧縮回路分析部152(圧縮データ選択部の一例)は、複数の圧縮回路150により圧縮して得られた複数の入力データのうちいずれかの入力データを選択する。
以下、選択した入力データ(圧縮データ104)を出力した圧縮回路150を「選択回路105B」という。
【0090】
圧縮回路選択部151は、圧縮回路分析部152により選択された入力データをトレースデータバッファ120に記憶する。
【0091】
圧縮回路制御レジスタ153は、圧縮条件情報105A(または、圧縮条件情報105Aを記憶した記憶領域のアドレス)が設定される記憶部である。
圧縮条件情報105Aは、圧縮回路分析部152に圧縮データ104を選択させる選択条件を示す情報である。
【0092】
図10は、実施の形態3におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャートである。
実施の形態3におけるトレースデータ取得方法の処理の流れについて、図10に基づいて説明する。
【0093】
実施の形態1と同じ処理(図3参照)には実施の形態1と同じ処理番号(Sxxx)を付している。
【0094】
S110において、トレースデータ取捨選択部110は、トレースデータ101を入力する。
S110の後、S120に進む。
【0095】
S120において、トレースデータ取捨選択部110は、入力したトレースデータ101が選択種類のトレースデータ101であるか否かを判定する。
入力したトレースデータ101が選択種類のトレースデータ101である場合(YES)、S133に進む。
入力したトレースデータ101が選択種類のトレースデータ101でない場合(NO)、S110に戻る。
【0096】
S133において、複数の圧縮回路150はトレースデータ取捨選択部110からトレースデータ101を入力し、入力したトレースデータ101をそれぞれに異なる圧縮方式で圧縮する。
【0097】
トレースデータ101の圧縮率は圧縮方式によって異なり、また、同じ圧縮方式であってもトレースデータ101のデータ構成によって異なる。
したがって、あるトレースデータ101を他の圧縮方式よりも高い圧縮率で圧縮する圧縮方式が別のトレースデータ101を他の圧縮方式よりも高い圧縮率で圧縮できるとは限らない。
そのため、トレースデータ101を異なる圧縮方式で圧縮する複数の圧縮回路150を備えることにより、トレースデータ101をより高い圧縮率で圧縮することができる。
【0098】
S133の後、S134に進む。
【0099】
S134において、圧縮回路分析部152は、予め、圧縮回路制御レジスタ153(または、圧縮回路制御レジスタ153に示されるアドレスで特定される記憶領域)から圧縮条件情報105Aを取得しているものとする。圧縮回路分析部152は定期的にまたは所定のタイミングで圧縮条件情報105Aを取得し直してもよい。
圧縮回路分析部152は、圧縮条件情報105Aに基づいて、複数の圧縮回路150のうちいずれかの圧縮回路150を選択し、選択した圧縮回路150を示す情報を圧縮回路選択部151に入力する。
実施の形態3において、選択した圧縮回路150を「選択回路105B」という。
【0100】
圧縮条件情報105Aは、圧縮された複数のトレースデータ101(圧縮データ104)のうちいずれかのトレースデータ101を選択する選択条件を示す情報である。圧縮条件情報105Aは、利用者によって、圧縮回路制御レジスタ153またはLSIトレースデータ取得装置100のメモリに予め設定しておく。
【0101】
例えば、圧縮条件情報105Aは、圧縮データ104の選択条件として「データサイズが最小の圧縮データ104(圧縮率が最も高い圧縮回路150)」を指定する。
この場合、圧縮回路分析部152は、複数の圧縮回路150により生成された複数の圧縮データ104のうちデータサイズが最も小さい圧縮データ104を特定し、特定した圧縮データ104を生成した圧縮回路150を選択回路105Bとして選択する。
【0102】
また例えば、圧縮条件情報105Aは、複数の圧縮回路150のうちいずれかの圧縮回路150を指定する。
この場合、圧縮回路分析部152は、圧縮条件情報105Aに指定された圧縮回路150を選択回路105Bとして選択する。
【0103】
S134の後、S135に進む。
【0104】
S135において、圧縮回路選択部151は、複数の圧縮回路150それぞれからトレースデータ101を圧縮した圧縮データ104を入力し、圧縮回路分析部152から選択回路105Bを示す情報を入力する。
そして、圧縮回路選択部151は、複数の圧縮データ104のうち選択回路105Bから入力した圧縮データ104と、選択回路105Bの圧縮方式を示す識別情報とをトレースデータバッファ120に保存する。
S135の後、S141に進む。
【0105】
S141において、トレースデータ逐次出力部130は、トレースデータバッファ120から圧縮データ104と圧縮方式の識別情報とを出力する。
S141の後、S110に戻る。
【0106】
圧縮回路分析部152による圧縮回路150の選択(S134)は、トレースデータ取捨選択部110にトレースデータ101が入力される度に行わずに、定期的または所定のタイミングで行っても構わない。
【0107】
実施の形態3において、例えば、以下のようなLSIトレースデータ取得装置100について説明した。
【0108】
LSIトレースデータ取得装置100は、複数の圧縮回路150と圧縮回路選択部151と圧縮回路制御レジスタ153とを備える。
複数の圧縮回路150は、トレースデータ101を異なる圧縮方式で圧縮する。
圧縮回路選択部151は、圧縮回路150の一つを選択し、選択した圧縮回路150により圧縮されたトレースデータ101をトレースデータバッファ120へ保存する。
圧縮回路制御レジスタ153は、圧縮回路150を選択するために用いる情報を与える。
これにより、単一の圧縮方式でトレースデータ101を圧縮するよりもトレースデータ量を削減し、より多くのトレースデータ101を取得することができる。
【0109】
実施の形態4.
所定のイベントが発生した場合にのみトレースデータ101を保存する形態について説明する。
以下、実施の形態1〜3と異なる事項について主に説明する。説明を省略する事項については実施の形態1〜3と同様である。
【0110】
図11は、実施の形態4におけるLSIトレースデータ取得装置100の機能構成図である。
実施の形態4におけるLSIトレースデータ取得装置100の機能構成について、図11に基づいて説明する。
【0111】
LSIトレースデータ取得装置100は、実施の形態1の構成(図2参照)に加えて、イベント監視部160とイベント制御レジスタ161とを備える。
【0112】
イベント監視部160(イベント判定部の一例)は、所定のイベントが発生したか否かを判定する。
【0113】
トレースデータバッファ120は、イベント監視部160により所定のイベントが発生したと判定され、トレースデータ取捨選択部110により入力データが選択種類のトレースデータ101であると判定された場合に入力データを記憶する。
【0114】
イベント制御レジスタ161は、イベント情報106(または、イベント情報106を記憶した記憶領域のアドレス)が設定される記憶部である。
イベント情報106は、イベント監視部160に判定させるイベントを示す情報である。
【0115】
図12は、実施の形態4におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャートである。
実施の形態4におけるトレースデータ取得方法の処理の流れについて、図12に基づいて説明する。
【0116】
実施の形態1と同じ処理(図3参照)には実施の形態1と同じ処理番号(Sxxx)を付している。
【0117】
S110において、トレースデータ取捨選択部110は、トレースデータ101を入力する。
S110の後、S120に進む。
【0118】
S120において、トレースデータ取捨選択部110は、入力したトレースデータ101が選択種類のトレースデータ101であるか否かを判定する。
入力したトレースデータ101が選択種類のトレースデータ101である場合(YES)、S121に進む。
入力したトレースデータ101が選択種類のトレースデータ101でない場合(NO)、S110に戻る。
【0119】
S121において、イベント監視部160は、トレースデータ取捨選択部110からトレースデータ101を入力する。
【0120】
また、イベント監視部160は、イベント制御レジスタ161(または、イベント制御レジスタ161に示されるアドレスで特定される記憶領域)からイベント情報106を予め取得しているものとする。イベント情報106は、発生したか否かを判定する対象のイベントを示す情報である。実施の形態4において、イベント情報106に示されるイベントを「対象イベント」という。イベント監視部160は定期的にまたは所定のタイミングでイベント情報106を取得し直してもよい。
【0121】
そして、イベント監視部160は、イベント情報106に示される対象イベントが既に発生しているか否かを判定する。
【0122】
イベントとは、コマンドの発生、データの受け渡し、エラーの検出など、LSI210に発生する特定の事象のことである。
実施の形態4において、イベントを示す信号をイベント発生刺激信号という。また、LSI210にイベントが発生した場合、イベントを発生または検出したLSI210の回路がイベント発生刺激信号を出力する。
【0123】
LSI210にイベントが発生した場合、イベント監視部160は、イベントを発生または検出したLSI210の回路からイベント発生刺激信号を入力する。
また、イベント監視部160は、入力したイベント発生刺激信号に示されるイベントがイベント情報106に示される対象イベントであるか否かを判定する。
【0124】
そして、S110で入力したトレースデータ101が対象イベントのイベント発生刺激信号を入力してから最初に入力したトレースデータ101である場合、イベント監視部160は、対象イベントが既に発生していると判定する。
但し、イベント監視部160は、その他の判定条件に従って判定しても構わない。例えば、対象イベントのイベント発生刺激信号を入力してから所定の経過時間が経過していない場合、イベント監視部160は、対象イベントが既に発生していると判定してもよい。また、イベント監視部160は、対象イベントのイベント発生刺激信号を入力してから他のイベント発生刺激信号を入力するまで、対象イベントが既に発生していると判定してもよい。
【0125】
イベント情報106に示される対象イベントが既に発生している場合(YES)、S136に進む。
イベント情報106に示される対象イベントが発生していない場合(NO)、イベント監視部160はトレースデータ101を破棄し、処理はS110に戻る。
【0126】
S136において、イベント監視部160は、トレースデータ101をトレースデータバッファ120に保存する。
S136の後、S140に進む。
【0127】
S140において、トレースデータ逐次出力部130は、トレースデータバッファ120からトレースデータ101を取得し、取得したトレースデータ101を出力する。
S140の後、S110に戻る。
【0128】
実施の形態4において、例えば、以下のようなLSIトレースデータ取得装置100について説明した。
【0129】
LSIトレースデータ取得装置100は、イベント監視部160とイベント制御レジスタ161とを備える。
イベント監視部160は、規定のイベントが発生したときのみ、トレースデータ取捨選択部110から発生したトレースデータ101をトレースデータバッファ120へ保存する。
イベント制御レジスタ161は、トレースデータ101をトレースデータバッファ120へ保存するためのイベントを制御する。
【0130】
実施の形態4において、LSIトレースデータ取得装置100は、実施の形態2と同様に圧縮回路150を備えても構わない。
この場合、圧縮回路150はトレースデータ101を圧縮して得られた圧縮データ104をイベント監視部160に入力し、イベント監視部160は圧縮回路150から入力した圧縮データ104をトレースデータバッファ120に保存する。
【0131】
また、LSIトレースデータ取得装置100は、実施の形態3と同様に、複数の圧縮回路150、圧縮回路選択部151、圧縮回路分析部152および圧縮回路制御レジスタ153を備えても構わない。
この場合、圧縮回路選択部151は選択回路105Bから出力された圧縮データ104と選択回路105Bの圧縮方式を示す識別情報とをイベント監視部160に入力する。そして、イベント監視部160は圧縮回路選択部151から入力した圧縮データ104と圧縮方式の識別情報とをトレースデータバッファ120に保存する。
【0132】
実施の形態5.
トレースデータバッファ120に保存するトレースデータ101の種類を、トレースデータバッファ120に入力(保存)したトレースデータ101の入力量と、トレースデータバッファ120から出力したトレースデータ101の出力量とに基づいて選択する形態について説明する。
以下、実施の形態1〜4と異なる事項について主に説明する。説明を省略する事項については実施の形態1〜4と同様である。
【0133】
図13は、実施の形態5におけるLSIトレースデータ取得装置100の機能構成図である。
実施の形態5におけるLSIトレースデータ取得装置100の機能構成について、図13に基づいて説明する。
【0134】
LSIトレースデータ取得装置100は、実施の形態1の構成(図2参照)に加えて、入力トレースデータ監視部170と出力トレースデータ監視部171とを備える。
【0135】
入力トレースデータ監視部170は、トレースデータバッファ120に記憶されたトレースデータ101の記憶量(入力量)を算出する。
【0136】
出力トレースデータ監視部171は、トレースデータバッファ120から出力されたトレースデータ101の出力量を算出する。
【0137】
トレースデータ入出力状況分析部140は、入力トレースデータ監視部170により算出されたトレースデータ101の記憶量と出力トレースデータ監視部171により算出されたトレースデータ101の出力量とに基づいて、トレースデータバッファ120に記憶するトレースデータ101の種類を選択する。
【0138】
例えば、トレースデータ入出力状況分析部140は、トレースデータ101の記憶量からトレースデータ101の出力量を差し引いた値をトレースデータ入出力差として算出する。
トレースデータ入出力状況分析部140は、算出したトレースデータ入出力差と所定の入出力差閾値とを比較する。
トレースデータ入出力差が入出力差閾値より大きい場合、トレースデータ入出力状況分析部140は、トレースデータ101の選択種類を所定の第1の選択種類数だけ選択する。
トレースデータ入出力差が入出力差閾値より小さい場合、トレースデータ入出力状況分析部140は、トレースデータ101の選択種類を第1の選択種類数より多い所定の第2の選択種類数だけ選択する。
【0139】
図14は、実施の形態5におけるLSIトレースデータ取得装置100のトレースデータ取得方法を示すフローチャートである。
実施の形態5におけるトレースデータ取得方法の処理の流れについて、図14に基づいて説明する。
【0140】
実施の形態1と同じ処理(図3参照)には実施の形態1と同じ処理番号(Sxxx)を付している。
【0141】
S110において、トレースデータ取捨選択部110は、トレースデータ101を入力する。
S110の後、S120に進む。
【0142】
S120において、トレースデータ取捨選択部110は、入力したトレースデータ101が選択種類のトレースデータ101であるか否かを判定する。
入力したトレースデータ101が選択種類のトレースデータ101である場合(YES)、S137に進む。
入力したトレースデータ101が選択種類のトレースデータ101でない場合(NO)、S110に戻る。
【0143】
S137において、入力トレースデータ監視部170は、トレースデータ取捨選択部110からトレースデータ101を入力し、入力したトレースデータ101をトレースデータバッファ120に保存する。
S137の後、S138に進む。
【0144】
S138において、入力トレースデータ監視部170は、トレースデータバッファ120に記憶したトレースデータ101の入力量を算出する。
【0145】
例えば、入力トレースデータ監視部170は、トレースデータ101の総入力量、最大入力量、今回の入力量、平均入力量などをトレースデータ101の入力量として算出する。
トレースデータ101の総入力量とは、それまでにトレースデータバッファ120に記憶したトレースデータ101の合計サイズのことである。「それまで」とは、例えば、LSI210(またはLSIトレースデータ取得装置100)を起動してから算出を行うときまでである。
トレースデータ101の最大入力量とは、それまでにトレースデータバッファ120に記憶したトレースデータ101のうち最も大きいトレースデータ101のデータサイズのことである。
トレースデータ101の今回の入力量とは、S137でトレースデータバッファ120に今回記憶したトレースデータ101のデータサイズのことである。
トレースデータ101の平均入力量とは、それまでにトレースデータバッファ120に記憶したトレースデータ101の単位時間当たりのデータサイズのことである。
【0146】
S138の後、S139に進む。
【0147】
S139において、出力トレースデータ監視部171はトレースデータバッファ120からトレースデータ101を取得し、取得したトレースデータ101をトレースデータ逐次出力部130に出力する。但し、トレースデータバッファ120からトレースデータ逐次出力部130に出力するトレースデータ101のデータ量は、トレースデータ逐次出力部130から出力されるトレースデータ101の出力量に合わせているものとする。
そして、出力トレースデータ監視部171は、トレースデータバッファ120からトレースデータ逐次出力部130に出力したトレースデータ101の出力量を算出する。
【0148】
例えば、出力トレースデータ監視部171は、トレースデータ101の総出力量、最大出力量、今回の出力量、平均出力量、出力可能量などをトレースデータ101の出力量として算出する。
トレースデータ101の総出力量とは、それまでにトレースデータバッファ120から出力したトレースデータ101の合計サイズのことである。「それまで」とは、例えば、LSI210(またはLSIトレースデータ取得装置100)を起動してから算出を行うときまでである。
トレースデータ101の最大出力量とは、それまでにトレースデータバッファ120から出力したトレースデータ101のうち最も大きいトレースデータ101のデータサイズのことである。
トレースデータ101の今回の出力量とは、トレースデータバッファ120から今回出力したトレースデータ101のデータサイズのことである。
トレースデータ101の平均出力量とは、それまでにトレースデータバッファ120から出力したトレースデータ101の単位時間当たりのデータサイズのことである。
トレースデータ101の出力可能量とは、トレースデータ逐次出力部130が単位時間当たりに出力できるトレースデータ101のデータサイズのことである。
【0149】
S139の後、S142に進む。
【0150】
S142において、トレースデータ逐次出力部130は、出力トレースデータ監視部171によりトレースデータバッファ120から出力されたトレースデータ101を出力する。
S142の後、S110に戻る。
【0151】
図15は、実施の形態5におけるトレースデータ入出力状況分析部140のトレースデータ入出力状況分析処理を示すフローチャートである。
実施の形態5におけるトレースデータ入出力状況分析部140のトレースデータ入出力状況分析処理について、図15に基づいて説明する。
【0152】
実施の形態1と同じ処理(図4参照)には実施の形態1と同じ処理番号(Sxxx)を付している。
【0153】
S210において、トレースデータ入出力状況分析部140は、選択方法情報103Aを取得する。
実施の形態5において、選択方法情報103Aは、トレースデータ101の入出力量おに基づいたトレースデータ101の選択条件を示す。
S210の後、S220に進む。
【0154】
S220において、トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量を示す情報(空き容量102)を取得する。
S220の後、S221に進む。
【0155】
S221において、トレースデータ入出力状況分析部140は、入力トレースデータ監視部170から入力量情報107Aを取得し、出力トレースデータ監視部171から出力量情報107Bを取得する。
入力量情報107Aは入力トレースデータ監視部170により算出されたトレースデータ101の入力量を示す情報であり、出力量情報107Bは出力トレースデータ監視部171により算出されたトレースデータ101の出力量を示す情報である。
S221の後、S230Bに進む。
【0156】
S230Bにおいて、トレースデータ入出力状況分析部140は、入力量情報107Aと出力量情報107Bと空き容量102と選択方法情報103Aとに基づいて、トレースデータ101の種類を選択する。
S230Bの具体例について後述する。
S230Bの後、S240に進む。
【0157】
S240において、トレースデータ入出力状況分析部140は、選択したトレースデータ101の種類を示す選択種類情報103Bをトレースデータ取捨選択部110に入力する。
S240の後、S220に戻る。
【0158】
図16は、実施の形態5におけるトレースデータ入出力状況分析部140のトレースデータ種類選択処理(S230B)の一例を示すフローチャートである。
実施の形態5におけるトレースデータ入出力状況分析部140のトレースデータ種類選択処理(S230B)の一例について、図16に基づいて説明する。
【0159】
S231Bにおいて、トレースデータ入出力状況分析部140は、トレースデータバッファ120の空き容量102と、選択方法情報103Aに示される容量閾値とを大小比較する。
空き容量102が容量閾値以上の場合(YES)、S232Bに進む。
空き容量102が容量閾値未満の場合(NO)、S235Bに進む。
【0160】
S232Bにおいて、トレースデータ入出力状況分析部140は、トレースデータ101の平均入力量からトレースデータ101の平均出力量を差し引いた値をトレースデータ入出力差として算出する。トレースデータ101の平均入力量は入力量情報107Aに示される値であり、トレースデータ101の平均出力量は出力量情報107Bに示される値である。
トレースデータ入出力状況分析部140は、算出したトレースデータ入出力差と選択方法情報103Aに示される入出力差閾値(小)とを大小比較する。
トレースデータ入出力差が入出力差閾値(小)以下の場合(YES)、つまり、トレースデータ101の平均入力量とトレースデータ101の平均出力量との差が小さい場合、S233Bに進む。
トレースデータ入出力差が入出力差閾値(小)より大きい場合(NO)、つまり、トレースデータ101の平均入力量とトレースデータ101の平均出力量との差が小さくない場合、S234Bに進む。
【0161】
S233Bにおいて、トレースデータ入出力状況分析部140は、選択種類を優先度の高い順に一つ(または二つ以上の所定数)だけ増やす。但し、現在の選択種類が全ての種類である場合、トレースデータ入出力状況分析部140は選択種類を増やさない。
例えば、現在の選択種類が優先度が最も高いコマンド信号だけである場合、トレースデータ入出力状況分析部140は、優先度が二番目に高いアドレス信号を追加で選択する。この場合、選択種類はコマンド信号とアドレス信号との二種類になる。
S233Bにより、トレースデータ種類選択処理(S230B)は終了する。
【0162】
S234Bにおいて、トレースデータ入出力状況分析部140は、トレースデータ入出力差と選択方法情報103Aに示される入出力差閾値(大)とを大小比較する。
トレースデータ入出力差が入出力差閾値(大)以下の場合(YES)、つまり、トレースデータ101の平均入力量とトレースデータ101の平均出力量との差が小さくも大きくもなく中程度の場合、トレースデータ入出力状況分析部140は選択種類を変更せず、トレースデータ種類選択処理(S230B)は終了する。
トレースデータ入出力差が入出力差閾値(大)より大きいの場合(NO)、つまり、トレースデータ101の平均入力量とトレースデータ101の平均出力量との差が大きい場合、S235Bに進む。
【0163】
S235Bにおいて、トレースデータ入出力状況分析部140は、選択種類を優先度の低い順に一つ(または二つ以上の所定数)だけ減らす。但し、現在の選択種類が1種類だけである場合、トレースデータ入出力状況分析部140は選択種類を減らさない。
例えば、現在の選択種類が全ての種類(コマンド信号、アドレス信号、データ信号)である場合、トレースデータ入出力状況分析部140は、優先度が最も低いデータ信号を選択種類から除外する。この場合、選択種類はコマンド信号とアドレス信号との二種類になる。
S235Bにより、トレースデータ種類選択処理(S230B)は終了する。
【0164】
トレースデータ入出力状況分析部140は、平均入出力量以外のトレースデータ101の入出力量に基づいてトレースデータ101の種類を選択してもよい。
また、トレースデータ入出力状況分析部140は、トレースデータ101の出力量を使わずに、トレースデータ101の入力量に基づいてトレースデータ101の種類を選択してもよい。
また、トレースデータ入出力状況分析部140は、トレースデータ101の入力量を使わずに、トレースデータ101の出力量に基づいてトレースデータ101の種類を選択してもよい。
【0165】
実施の形態5において、例えば、以下のようなLSIトレースデータ取得装置100について説明した。
【0166】
LSIトレースデータ取得装置100は、入力トレースデータ監視部170と出力トレースデータ監視部171とを備える。
入力トレースデータ監視部170は、トレースデータ取捨選択部110からトレースデータバッファ120へ入力されるトレースデータ101を監視する。
出力トレースデータ監視部171は、トレースデータバッファ120から出力されるトレースデータ101を監視する。
【0167】
トレースデータ101の入出力量はLSI210の実行状況により変動する。このため、トレースデータバッファ120の残容量(空き容量102)の情報だけでは、トレースデータ101の選択種類の切り替えが頻繁に発生したり、その逆にトレースデータ101の選択種類の切り替えが十分に行われなかったりする。トレースデータ101の入出力量を利用することにより、トレースデータ101の選択種類をより適切に切り替えることができる。
【0168】
実施の形態5において、LSIトレースデータ取得装置100は、実施の形態2と同様に圧縮回路150を備えても構わない。
この場合、圧縮回路150はトレースデータ101を圧縮して得られた圧縮データ104を入力トレースデータ監視部170に入力し、入力トレースデータ監視部170は圧縮回路150から入力した圧縮データ104をトレースデータバッファ120に保存する。
入力トレースデータ監視部170は圧縮データ104の入力量を算出し、出力トレースデータ監視部171は圧縮データ104の出力量を算出する。
【0169】
また、LSIトレースデータ取得装置100は、実施の形態3と同様に、複数の圧縮回路150、圧縮回路選択部151、圧縮回路分析部152および圧縮回路制御レジスタ153を備えても構わない。
この場合、圧縮回路選択部151は選択回路105Bから出力された圧縮データ104と選択回路105Bの圧縮方式を示す識別情報とを入力トレースデータ監視部170に入力する。そして、入力トレースデータ監視部170は圧縮回路選択部151から入力した圧縮データ104と圧縮方式の識別情報とをトレースデータバッファ120に保存する。
入力トレースデータ監視部170は圧縮データ104(と圧縮方式の識別情報)の入力量を算出し、出力トレースデータ監視部171は圧縮データ104(と圧縮方式の識別情報)の出力量を算出する。
【0170】
また、LSIトレースデータ取得装置100は、実施の形態4と同様に、イベント監視部160とイベント制御レジスタ161とを備えても構わない。
この場合、入力トレースデータ監視部170はイベント監視部160からトレースデータ101(または圧縮データ104)を入力し、入力したトレースデータ101(または圧縮データ104)をトレースデータバッファ120に保存する。
【0171】
実施の形態6.
トレースデータ101を所定の出力先に出力する形態について説明する。
以下、実施の形態1〜5と異なる事項について主に説明する。説明を省略する事項については実施の形態1〜5と同様である。
【0172】
図17は、実施の形態6におけるLSIトレースデータ取得装置100の機能構成図である。
実施の形態6におけるLSIトレースデータ取得装置100の機能構成について、図17に基づいて説明する。
【0173】
LSIトレースデータ取得装置100は、実施の形態1の構成(図2参照)に加えて、逐次出力制御レジスタ131を備える。
【0174】
逐次出力制御レジスタ131は、出力先情報108(または、出力先情報108を記憶した記憶領域のアドレス)が設定される記憶部である。
出力先情報108は、トレースデータ101を出力する出力先を示す情報である。
【0175】
トレースデータ逐次出力部130は、出力先情報108を定期的にまたは所定のタイミングで取得し、取得した出力先情報108に示される出力先にトレースデータ101を出力する。
【0176】
利用者は、出力先情報108を変更することによりトレースデータ101の出力先を変更することができる。
例えば、外部出力インタフェース213に障害が発生した場合、利用者は、出力先情報108に内部メモリ214を指定する。これにより、トレースデータ101をトレースデータバッファ120から内部メモリ214へ退避することができる。
【0177】
LSI210で利用されるPCI Expressなどの汎用インタフェースを外部出力インタフェース213として利用することが考えられる。その場合、従来手法においてデバッグやテスト専用に利用されていた外部ピンを削減することができる。
【0178】
近年のLSI210はネットワークに接続されるケースが多く、ネットワークにより統合された環境で動作することも考えられる。そのようなネットワークに対し、LSI210のトレースデータ101を送信することで、低再現性の不具合に対処することができる。そのためにエラー信号をトレースデータ逐次出力部130より外部出力することも可能である。
また、不揮発性のメモリを内部メモリ214として利用すれば、電源が落ちてもデータが消失せず、エラーの対処が可能になる。
また、逐次出力制御レジスタ131にパスワードなどのセキュリティ情報が設定されていない場合に、トレースデータ101をLSI210の外部へ出力しないように制限してもよい。また、トレースデータ逐次出力部130はトレースデータ101を暗号化して出力してもよい。それにより、LSI210のトレースデータ101を不正に取得しようとする攻撃からトレースデータ101を守り、LSI210の内部の処理情報を隠蔽することができる。
【0179】
実施の形態6において、LSIトレースデータ取得装置100は、実施の形態2または実施の形態3と同様に、トレースデータ101を圧縮しても構わない。
また、LSIトレースデータ取得装置100は、実施の形態4と同様に、特定のイベントが発生した場合にのみトレースデータ101を取得しても構わない。
また、LSIトレースデータ取得装置100は、実施の形態5と同様に、トレースデータ101の入出力量に基づいてトレースデータ101の選択種類を決定しても構わない。
【0180】
実施の形態7.
LSI210内のLSIトレースデータ取得装置100からトレースデータ101を取得し、取得したトレースデータ101に基づいてLSI210をデバッグするデバッグ装置220について説明する。
【0181】
図18は、実施の形態7におけるデバッグシステム200の構成図である。
実施の形態7におけるデバッグ装置220の機能構成について、図18に基づいて説明する。
【0182】
実施の形態7におけるデバッグシステム200は、実施の形態1から実施の形態6で説明したいずれかのLSI210およびLSIトレースデータ取得装置100を有する。
【0183】
デバッグ装置220は、トレースデータ復元部221、入力データ凍結部222、データストレージ223およびデバッグ部224を備える。
【0184】
トレースデータ復元部221(デバッグ入力部の一例)は、LSIトレースデータ取得装置100からトレースデータバッファ120に記憶されたトレースデータ101を入力する。
【0185】
入力データ凍結部222(保存命令入力部の一例)は、データストレージ223に記憶されているトレースデータ101の保存を指定する入力データ凍結通知229(トレースデータ保存命令の一例)を入力する。
【0186】
データストレージ223(デバッグ記憶部の一例)は、トレースデータ101を記憶する記憶領域を有する。
データストレージ223は、新たなトレースデータ101を記憶する記憶領域が不足した場合に過去のトレースデータ101が記憶されている記憶領域に新たなトレースデータ101を上書きする。
データストレージ223は、入力データ凍結部222に入力データ凍結通知229が入力された場合、トレースデータ復元部221に入力された新たなトレースデータ101を記憶しない。
【0187】
デバッグ部224は、データストレージ223に記憶されたトレースデータ101をディスプレイ装置に表示する。
デバッグ部224は、トレースデータ101に基づく利用者の指示をキーボードやマウスなどの入力装置から入力し、利用者の指示に従ってデバッグ処理を行う。
【0188】
デバッグ装置220は、CPU、メモリ、磁気ディスク装置、ディスプレイ装置、入力装置、通信装置などのハードウェア(図示省略)を備える。
デバッグ装置220の「〜部」として説明する構成は「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明する構成は、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。「〜部」として説明する機能を実行するプログラムはメモリに記憶され、CPUにより読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【0189】
図19は、実施の形態7におけるデバッグ装置220のトレースデータ保存方法を示すフローチャートである。
デバッグ装置220が実行するトレースデータ保存方法の処理の流れについて、図19に基づいて説明する。
【0190】
S310において、LSIトレースデータ取得装置100は、実施の形態1から実施の形態6で説明したように、LSI210のトレースデータ101を取得し、取得したトレースデータ101をデバッグ装置220へ出力する。
トレースデータ101は、圧縮された圧縮データであっても暗号化された暗号化データであっても構わない。但し、圧縮方式または暗号化方式が決まっていない場合、LSIトレースデータ取得装置100は、圧縮方式または暗号化方式を示す識別情報をトレースデータ101と共にデバッグ装置220へ出力するものとする。例えば、実施の形態3のLSIトレースデータ取得装置100は圧縮方式を示す識別情報をトレースデータ101と共にデバッグ装置220へ出力する。
S310の後、S320に進む。
【0191】
S320において、トレースデータ復元部221は、LSIトレースデータ取得装置100から出力されたトレースデータ101(および圧縮方式または暗号化方式の識別情報)を入力する。
S320の後、S330に進む。
【0192】
S330において、トレースデータ復元部221は、入力したトレースデータ101を復元する。
例えば、トレースデータ101が圧縮されている場合、トレースデータ復元部221は、トレースデータ101の圧縮方式を圧縮方式の識別情報に基づいて判定し、判定した圧縮方式に対応する解凍方式でトレースデータ101を解凍する。また、トレースデータ101が暗号化されている場合、トレースデータ復元部221は、トレースデータ101の暗号化方式を暗号化方式の識別情報に基づいて判定し、判定した暗号化方式に対応する復号方式でトレースデータ101を復号する。
但し、トレースデータ101が圧縮も暗号化もされていない場合、S330の復元処理は不要である。
S330の後、S340に進む。
【0193】
S340において、入力データ凍結部222は、トレースデータ復元部221から復号されたトレースデータ101を入力する。
また、入力データ凍結部222は、入力データ凍結通知229が入力されたか否かを判定する。
入力データ凍結通知229は、トレースデータ101が記憶されているデータストレージ223の記憶領域を新たなトレースデータ101で上書きすることを禁止する命令である。入力データ凍結通知229は利用者によってデバッグ装置220に入力され、または、LSI210から通知(入力)される。
入力データ凍結通知229が入力された場合(YES)、入力データ凍結部222はトレースデータ101を破棄し、トレースデータ保存方法の処理は終了する。
入力データ凍結通知229が入力されていない場合(NO)、S350に進む。
【0194】
S350において、入力データ凍結部222は、トレースデータ101をデータストレージ223に記憶する。
データストレージ223は、新たなトレースデータ101を記憶する記憶領域が不足した場合に過去のトレースデータ101が記憶されている記憶領域に新たなトレースデータ101を上書きする。このようにデータを循環式に記憶する記憶装置をリングバッファという。
S350により、トレースデータ保存方法の処理は終了する。
【0195】
実施の形態7において、以下のようなデバッグ装置220について説明した。
【0196】
デバッグ装置220は、トレースデータ復元部221、入力データ凍結部222およびデータストレージ223を備える。
トレースデータ復元部221は、トレースデータ101をデバッグなどに利用可能な情報に復元する。
データストレージ223は、復元されたデータを保存する。
入力データ凍結部222は、データストレージ223へのデータの保存を停止させる。
【0197】
例えば、LSI221からエラー発生のイベント信号が入力データ凍結通知229としてデバッグ装置220に通知された場合、新たなトレースデータ101の上書き保存を中止し、LSI221にエラーが発生する前に保存されたトレースデータ101を確保することができる。利用者はトレースデータ101を利用してエラー原因を判断し、LSI210をデバッグする。
【符号の説明】
【0198】
100 LSIトレースデータ取得装置、101 トレースデータ、101A コマンド信号、101B アドレス信号、101C データ信号、102 空き容量、103A 選択方法情報、103B 選択種類情報、104 圧縮データ、105A 圧縮条件情報、105B 選択回路、106 イベント情報、107A 入力量情報、107B 出力量情報、108 出力先情報、110 トレースデータ取捨選択部、120 トレースデータバッファ、130 トレースデータ逐次出力部、131 逐次出力制御レジスタ、140 トレースデータ入出力状況分析部、141 トレースデータ制御レジスタ、150 圧縮回路、151 圧縮回路選択部、152 圧縮回路分析部、153 圧縮回路制御レジスタ、160 イベント監視部、161 イベント制御レジスタ、170 入力トレースデータ監視部、171 出力トレースデータ監視部、200 デバッグシステム、210 LSI、211 トレース信号発生源、212 内部バス、213 外部出力インタフェース、214 内部メモリ、219 CPU、220 デバッグ装置、221 トレースデータ復元部、222 入力データ凍結部、223 データストレージ、224 デバッグ部、229 入力データ凍結通知。

【特許請求の範囲】
【請求項1】
種類が異なる複数のデータであって種類毎に優先度が定められた複数のデータそれぞれをトレースデータとして入力するトレースデータ入力部と、
トレースデータを記憶するトレースデータ記憶部と、
前記トレースデータ記憶部の空き容量に基づいて、前記トレースデータ記憶部に記憶するトレースデータの種類を選択種類として優先度の高い順に1種類以上選択するトレースデータ種類選択部と、
前記トレースデータ入力部がトレースデータを入力した場合、前記トレースデータ入力部にトレースデータとして入力された入力データが前記トレースデータ種類選択部により選択された選択種類のトレースデータであるか否かを判定するトレースデータ種類判定部とを備え、
前記トレースデータ記憶部は、前記トレースデータ種類判定部により前記入力データが前記選択種類のトレースデータであると判定された場合に前記入力データを記憶する
ことを特徴とするトレースデータ取得装置。
【請求項2】
前記トレースデータ種類選択部は、前記トレースデータ記憶部の空き容量が大きいほど多くのトレースデータの種類を選択種類として選択し、前記トレースデータ記憶部の空き容量が小さいほど少ないトレースデータの種類を選択種類として選択する
ことを特徴とする請求項1記載のトレースデータ取得装置。
【請求項3】
前記トレースデータ種類選択部は、前記トレースデータ記憶部の空き容量と所定の容量閾値とを比較し、前記トレースデータ記憶部の空き容量が前記容量閾値より大きい場合、トレースデータの選択種類を所定の第1の選択種類数だけ選択し、前記トレースデータ記憶部の空き容量が前記容量閾値より小さい場合、トレースデータの選択種類を前記第1の選択種類数より少ない所定の第2の選択種類数だけ選択する
ことを特徴とする請求項1記載のトレースデータ取得装置。
【請求項4】
前記トレースデータ取得装置は、さらに、
前記トレースデータ種類判定部により前記入力データが前記選択種類のトレースデータであると判定された場合に前記入力データを圧縮するトレースデータ圧縮部を備え、
前記トレースデータ記憶部は、前記トレースデータ圧縮部により圧縮された入力データを記憶する
ことを特徴とする請求項1から請求項3いずれかに記載のトレースデータ取得装置。
【請求項5】
前記トレースデータ取得装置は、前記トレースデータ種類判定部により前記入力データが前記選択種類のトレースデータであると判定された場合に前記入力データを異なる圧縮方式で圧縮する複数のトレースデータ圧縮部を備え、
前記トレースデータ取得装置は、さらに、
複数のトレースデータ圧縮部により圧縮して得られた複数の入力データのうちいずれかの入力データを選択する圧縮データ選択部を備え、
前記トレースデータ記憶部は、前記圧縮データ選択部により選択された入力データを記憶する
ことを特徴とする請求項4記載のトレースデータ取得装置。
【請求項6】
前記トレースデータ取得装置は、さらに、
所定のイベントが発生したか否かを判定するイベント判定部を備え、
前記トレースデータ記憶部は、前記イベント判定部により所定のイベントが発生したと判定され、前記トレースデータ種類判定部により前記入力データが前記選択種類のトレースデータであると判定された場合に前記入力データを記憶する
ことを特徴とする請求項1から請求項5いずれかに記載のトレースデータ取得装置。
【請求項7】
前記トレースデータ取得装置は、さらに、
前記トレースデータ記憶部に記憶されたトレースデータを所定の出力先へ出力するトレースデータ出力部を備える
ことを特徴とする請求項1から請求項6いずれかに記載のトレースデータ取得装置。
【請求項8】
種類が異なる複数のデータであって種類毎に優先度が定められた複数のデータそれぞれをトレースデータとして入力するトレースデータ入力部と、
トレースデータを記憶するトレースデータ記憶部と、
前記トレースデータ記憶部に記憶されたトレースデータの記憶量に基づいて、前記トレースデータ記憶部に記憶するトレースデータの種類を選択種類として優先度の高い順に1種類以上選択するトレースデータ種類選択部と、
前記トレースデータ入力部がトレースデータを入力した場合、前記トレースデータ入力部にトレースデータとして入力された入力データが前記トレースデータ種類選択部により選択された選択種類のトレースデータであるか否かを判定するトレースデータ種類判定部とを備え、
前記トレースデータ記憶部は、前記トレースデータ種類判定部により前記入力データが前記選択種類のトレースデータであると判定された場合に前記入力データを記憶する
ことを特徴とするトレースデータ取得装置。
【請求項9】
前記トレースデータ取得装置は、さらに、
前記トレースデータ記憶部に記憶されたトレースデータを前記トレースデータ記憶部から出力するトレースデータ出力部を備え、
前記トレースデータ種類選択部は、前記トレースデータ記憶部に記憶されたトレースデータの記憶量と前記トレースデータ記憶部から出力されたトレースデータの出力量とに基づいて、前記トレースデータ記憶部に記憶するトレースデータの種類を選択種類として優先度の高い順に1種類以上選択する
ことを特徴とする請求項8記載のトレースデータ取得装置。
【請求項10】
前記トレースデータ種類選択部は、前記トレースデータの記憶量から前記トレースデータの出力量を差し引いた値をトレースデータ入出力差として算出し、算出したトレースデータ入出力差と所定の入出力差閾値とを比較し、トレースデータ入出力差が入出力差閾値より大きい場合、トレースデータの選択種類を所定の第1の選択種類数だけ選択し、トレースデータ入出力差が入出力差閾値より小さい場合、トレースデータの選択種類を前記第1の選択種類数より多い所定の第2の選択種類数だけ選択する
ことを特徴とする請求項9記載のトレースデータ取得装置。
【請求項11】
トレースデータ入力部が、種類が異なる複数のデータであって種類毎に優先度が定められた複数のデータそれぞれをトレースデータとして入力し、
トレースデータ種類選択部が、トレースデータ記憶部の空き容量に基づいて、前記トレースデータ記憶部に記憶するトレースデータの種類を選択種類として優先度の高い順に1種類以上選択し、
トレースデータ種類判定部が、前記トレースデータ入力部がトレースデータを入力した場合、前記トレースデータ入力部にトレースデータとして入力された入力データが前記トレースデータ種類選択部により選択された選択種類のトレースデータであるか否かを判定し、
前記トレースデータ記憶部が、前記トレースデータ種類判定部により前記入力データが前記選択種類のトレースデータであると判定された場合に前記入力データを記憶する
ことを特徴とするトレースデータ取得装置のトレースデータ取得方法。
【請求項12】
請求項1から請求項10いずれかに記載のトレースデータ取得装置を設けたLSI(Large Scale Integration)と、
前記LSIに接続するデバッグ装置とを備え、
前記デバッグ装置は、
前記トレースデータ取得装置から前記トレースデータ記憶部に記憶されたトレースデータを入力するデバッグ入力部と、
トレースデータを記憶する記憶領域を有するデバッグ記憶部であって、新たなトレースデータを記憶する記憶領域が不足した場合に過去のトレースデータが記憶されている記憶領域に新たなトレースデータを上書きするデバッグ記憶部と、
前記デバッグ記憶部に記憶されているトレースデータの保存を指定するトレースデータ保存命令を入力する保存命令入力部とを備え、
前記デバッグ装置の前記デバッグ記憶部は、前記保存命令入力部に保存命令が入力された場合、前記デバッグ入力部に入力された新たなトレースデータを記憶しない
ことを特徴するデバッグシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2012−88887(P2012−88887A)
【公開日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願番号】特願2010−234342(P2010−234342)
【出願日】平成22年10月19日(2010.10.19)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】