JP2017027288A - ソフトハード協調解析装置およびソフトハード協調解析装置用のプログラム - Google Patents
ソフトハード協調解析装置およびソフトハード協調解析装置用のプログラム Download PDFInfo
- Publication number
- JP2017027288A JP2017027288A JP2015144038A JP2015144038A JP2017027288A JP 2017027288 A JP2017027288 A JP 2017027288A JP 2015144038 A JP2015144038 A JP 2015144038A JP 2015144038 A JP2015144038 A JP 2015144038A JP 2017027288 A JP2017027288 A JP 2017027288A
- Authority
- JP
- Japan
- Prior art keywords
- time
- waveform information
- hardware
- software
- time scale
- 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
- Debugging And Monitoring (AREA)
Abstract
【課題】ソフトウェアとハードウェアの協調解析において、どの時点でどの関数が実行されているかを示す情報A中で単位として使用される時間スケールと、エミュレーションにおいてハードウェアの端子の信号等がどの時点でどのような値になっているかの情報B中で単位として使用される時間スケールとが、異なっている場合でも、情報Aと情報Bを同じ時間軸上で表せるようにする。【解決手段】ソフトウェア波形情報において第1の時間スケールの値が表されており、ハードウェア波形情報に第2の時間スケールの値が表されており、ソフトハード協調解析装置が、これら第1、第2の時間スケールの値を用いることで、共通の時間スケールを用いて、各関数の実行、非実行の区別およびエミュレーションにより発生したハードウェアを通る入出力信号の値を表す統合波形情報を生成する。【選択図】図9
Description
本発明は、ソフトハード協調解析装置およびソフトハード協調解析装置用のプログラムに関するものである。
従来、設計したハードウェア(例えばマイクロコンピュータ)の検証を行う際、ハードウェアの解析と当該ハードウェアで実行されるソフトウェアの解析の両方が独立に行われていた。
これに対し、特許文献1では、ソフトウェアとハードウェアの協調解析を目的として、オブジェクトコードのアドレス範囲とそのアドレス領域に格納されている関数とを対応付けるアドレスマップを、コンパイラによって自動的に生成し、取得したアドレスマップの内容とハードウェアから通知された実行アドレスの値とを比較し、どの時点でどの関数が実行されているかを示す情報Aを特定する技術が開示されている。
また、ハードウェアの検証においては、当該ハードウェアによる上記オブジェクトコードの実行を模擬するエミュレーションにおいて、当該ハードウェアの端子の信号値等がどの時点でどのような値になっているかの情報Bが出力されることが知られている。
本願発明者は、上記情報Aと情報Bを同じ時間軸上で表すことを着想した。しかし、上記のような従来技術では、どの時点でどの関数が実行されているかを示す情報中で単位として使用される時間スケールと、上記エミュレーションにおいてハードウェアの端子の信号値等がどの時点でどのような値になっているかの情報中で単位として使用される時間スケールとが、異なっている場合がある。そのような場合は、上記情報Aと情報Bを同じ時間軸上で表すことに困難性が伴う。
本発明は上記点に鑑み、ソフトウェアとハードウェアの協調解析において、どの時点でどの関数が実行されているかを示す情報A中で単位として使用される時間スケールと、エミュレーションにおいてハードウェア内の端子の信号等がどの時点でどのような値になっているかの情報B中で単位として使用される時間スケールとが、異なっている場合でも、情報Aと情報Bを同じ時間軸上で表せるようにすることを目的とする。
上記目的を達成するための請求項1に記載の発明は、所定のハードウェアによるソフトウェアのオブジェクトコード(122a)の実行を模擬するエミュレーションにおいて、第1の時間スケールを単位として表された一連の第1種タイムカウントのどの範囲で、前記ソフトウェアのソースコードに記述された所定の関数が実行されたかを示す関数トレース情報(126)を、記憶媒体から読み出し、読み出した前記関数トレース情報に基づいて、前記一連の第1種タイムカウントの各々における前記関数の実行、非実行の区別が表されると共に前記第1の時間スケールの値が表されたソフトウェア波形情報(127)を生成して記憶媒体に記録するソフトウェア波形情報生成手段(164)と、前記第1の時間スケールと異なる第2の時間スケールを単位として表された一連の第2種タイムカウントの各々において前記エミュレーションにより前記ハードウェアの端子を通った入出力信号の値が表されると共に前記第2の時間スケールの値が表されたハードウェア波形情報(125)を記憶媒体から読み出すと共に、前記ソフトウェア波形情報を記憶媒体から読み出す波形情報読み出し手段(210、220)と、読み出された前記ソフトウェア波形情報中の前記第1の時間スケールの値と読み出された前記ハードウェア波形情報中の前記第2の時間スケールの値とに基づいて、共通の時間スケールを単位として表された一連の共通タイムカウントの各々における前記関数の実行、非実行の区別が表されると共に、前記一連の共通タイムカウントの各々において前記エミュレーションにより前記ハードウェアの端子を通った入出力信号の値が表される統合波形情報(128)を生成して記憶媒体に記録する統合手段(240、250、260、270、280)と、を有することを特徴とするソフトハード協調解析装置である。
このように、ソフトウェア波形情報において第1の時間スケールの値が表されており、ハードウェア波形情報に第2の時間スケールの値が表されており、統合手段は、これら第1、第2の時間スケールの値を用いることで、共通の時間スケールを用いて、関数の実行、非実行の区別およびエミュレーションにより発生したハードウェアを通る入出力信号の値を表す統合波形情報を生成することができる。
なお、上記および特許請求の範囲における括弧内の符号は、特許請求の範囲に記載された用語と後述の実施形態に記載される当該用語を例示する具体物等との対応関係を示すものである。
以下、本発明の一実施形態について説明する。本実施形態に係るソフトハード協調解析装置1(以下、単に解析装置1という)は、図1に示すように、ROM11、フラッシュメモリ12、RAM13、操作部14、ディスプレイ15、演算回路16を備えている。
ROM11は、演算回路16が実行するプログラム等が記録された書き込み不可能な不揮発性記憶媒体である。フラッシュメモリ12は、演算回路16が実行するプログラムおよび種々のデータが記録される書き込み可能な不揮発性記憶媒体である。RAM13は、演算回路16が作業領域として用いる書き込み可能な揮発性記憶媒体である。操作部14は、解析装置1のユーザの入力操作を受け付ける装置(例えば、キーボード、タッチパネルメカニカルスイッチ)である。ディスプレイ15は、ユーザに画像を表示する装置である。演算回路16は、ROM11またはフラッシュメモリ12に記録されたプログラムを実行することで、種々の処理を実現する。
具体的には、演算回路16は、ROM11またはフラッシュメモリ12に記録されたプログラムを実行することで、図2に示すように、コンパイラ161、ハードウェアエミュレータ162、関数トレース情報生成処理163、波形情報生成処理164、波形マージ処理165、表示処理166を実行する。
また、図2に示すように、フラッシュメモリ12には、ソースコード121、マイコンモデル122、マップ情報123、CPU実行ログ124、ハードウェア波形情報125、関数トレース情報126、ソフトウェア波形情報127、統合波形情報128が記録されるようになっている。
ソースコード121は、解析対象のマイクロコンピュータ(ハードウェアの一例に相当する)において実行されるソフトウェアのソースコードである。
マイコンモデル122は、ハードウェア記述言語(例えばSystemC)によって記述された特定のマイクロコンピュータのモデルを含むデータである。このマイコンモデル122には、マイクロコンピュータのモデルのみならず、このマクロコンピュータに接続されるセンサ、アクチュエータに対する入出力情報のデータも含まれている。
このマイコンモデル122によって記述されるマイクロコンピュータは、特定のCPU、RAM、ROM、割り込みコントローラ(図2中ではINTCと記載)、タイマ、入出力ポート(図2中では単にポートと記載)、UART等を備える。
また、当該マイクロコンピュータのROM中に、当該マイクロコンピュータのCPUが実行するための上記ソフトウェアのオブジェクトコード122aが記憶されているように、マイコンモデル122は記述されている。
マップ情報123、CPU実行ログ124、ハードウェア波形情報125、関数トレース情報126、ソフトウェア波形情報127、統合波形情報128については後述する。
なお、図2中の矢印は、処理161〜166においてどのデータが入力されてどのデータを生成するかを表すものである。例えば、コンパイラ161においてはソースコード121が入力されたオブジェクトコード122aおよびマップ情報123が生成される。
以上のような構成の解析装置1の作動について、図3を用いて以下説明する。
まず、解析装置1のユーザは、操作部14に対して所定のコンパイル開始操作を行う。すると演算回路16は、コンパイラ161の実行を開始し、コンパイラ161において、あらかじめフラッシュメモリ12に記録されているソースコード121をコンパイルしてオブジェクトコード122a(図3においては.objと記している)を生成する。
更に演算回路16はコンパイラ161において、フラッシュメモリ12にあらかじめ記録されているマイコンモデル122中のROMに、生成したオブジェクトコード122aが記録されているように、当該マイコンモデル122を書き換える。
更に演算回路16はコンパイラ161において、ソースコード121に記述された複数個の関数の各々について、オブジェクトコード122a中で当該関数に該当する部分のアドレス範囲を特定する。そして、当該複数個の関数と当該特定した複数個のアドレス範囲とを対応付けたマップ情報123(図3においては.mapと記している)をフラッシュメモリ12に記録する。図4に、マップ情報123のデータ構造例を示す。この例では、main関数、int1関数、portC関数のそれぞれは、オブジェクトコード122a中のアドレス範囲R1〜R2、R3〜R4、R5〜R6の部分に該当する。
次に、解析装置1のユーザは、操作部14に対して所定のエミュレーション開始操作を行う。すると演算回路16は、ハードウェアエミュレータ162の実行を開始する。そして演算回路16は、ハードウェアエミュレータ162において、上述の通りオブジェクトコード122aが追加されたマイコンモデル122が表すマイクロコンピュータによるオブジェクトコード122aの実行を模擬するエミュレーションを行う。
このようなハードウェアエミュレータ162は、例えば、マイコンモデル122がハードウェア記述言語であるSystemCによって作成されている場合は、上述の通りオブジェクトコード122aが追加されたマイコンモデル122をC++コンパイラでコンパイルされて生成されたオブジェクトコードが、該当する。また、ハードウェアエミュレータ162は、周知のRTLシミュレーションが記述されたオブジェクトコードが該当する。
また、ハードウェアエミュレータ162において演算回路16は、入出力ポートおよびUARTからアクチュエータへの信号出力、入出力ポートおよびUARTへのセンサからの信号入力も模擬する。
また、ハードウェアエミュレータ162において演算回路16は、上記エミュレーションの結果としてCPU実行ログ124(図3ではLogと記している)を生成してフラッシュメモリ12に記録する。
CPU実行ログ124は、図5に示すように、エミュレーションにおいてマイコンモデル122中のCPUが実行するオブジェクトコード122a中のアドレスと、そのアドレスが実行されるタイムカウントとの対応関係を時間順に複数個表すデータである。
このタイムカウントは、1ナノ秒という時間スケール(第1の時間スケールの一例に相当する)を単位として経時的に増加する一連の第1種タイムカウント(例えば、1ns、3ns、5ns、7ns、…という一連のタイムカウント)のうちの値である。
CPU実行ログ124中の各タイムカウントは、単位(1ns)付きで表されているので、CPU実行ログ124は時間スケールの情報も含んでいる。
なお、ある時点においてマイコンモデル122中のCPUが実行するオブジェクトコード122a中のアドレスは、その時点におけるCPU内のプログラムカウンタの値から得られる。
また、ハードウェアエミュレータ162において演算回路16は、上記エミュレーションの結果としてハードウェア波形情報125を生成してフラッシュメモリ12に記録する。
ハードウェア波形情報125は、図6に示すように、周知のVCD(Value change dump)フォーマットで記載されており、時間スケール表示部125a、記号定義部125b、および複数個の経時変化部125cを含んでいる。なお図6では、簡単のため、1つの経時変化部125cのみが表され、他の経時変化部は表示が省略されている。
時間スケール表示部125aは、経時変化部125cにおいて表示されるタイムカウントの単位に相当する時間スケール(図6の例では1ピコ秒)を表す部分である。
記号定義部125bは、上述のエミュレーションによって発生したマイクロコンピュータ内の端子(ポート、UART、割り込み端子等)の名称と、当該名称に割り当てられた記号との対応関係が複数個表されている。
より具体的には、記号定義部125bは、上記端子と1対1に対応する複数個のレコードを有している。1つのレコードは図6では1行で表されている。そして、各レコードは、データ長表示部251、記号名表示部252、端子名表示部253を有している。データ長表示部251は、所属先のレコードに対応する端子のデータ長をビット数で表す。記号名表示部252は、所属先のレコードに対応する端子に割り当てられる記号名を表す。端子名表示部253は所属先のレコードに対応する端子の名称を表す。同じハードウェア波形情報125中で、端子の名称および記号の名称いずれも重複なしで例えばランダムに割り当てられている。
経時変化部125cは、タイムカウント部254および、上記端子と1対1に対応する複数個のレコードを有している。タイムカウント部254は、所属先のレコードに対応する時点のタイムカウントを表している。
このタイムカウントは、1ピコ秒という時間スケール(第2の時間スケールの一例に相当する)を単位として経時的に増加する一連の第2種タイムカウント(例えば、1000ps、2000ps、3000ps、4000ps、…という一連のタイムカウント)のうちの1つの値である。
経時変化部125c中の各レコードは図6では1行で表されている。そして、各レコードは、データ値表示部255、記号名表示部256を有している。データ値表示部255は、同じ経時変化部125cに所属するタイムカウント部254が示す時点(すなわちタイムカウント)における、所属先のレコードに対応する端子を通る入出力信号の値を表している。記号名表示部256は、所属先のレコードに対応する端子に割り当てられた記号を表している。
このように、ハードウェア波形情報125では、第2の時間スケールを単位として表された一連の第2種タイムカウント(ピコ秒を単位とする一連のタイムカウント)の各々において上記エミュレーションにより発生したマイクロコンピュータ内の各端子を通る入出力信号の値が表されると共に当該第2の時間スケールの値が表されている。
次に、解析装置1のユーザは、操作部14に対して所定の関数トレース情報生成開始操作を行う。すると演算回路16は、関数トレース情報生成処理163の実行を開始する。
演算回路16は、関数トレース情報生成処理163において、マップ情報123およびCPU実行ログ124をフラッシュメモリ12からRAM13に読み出し、読み出したマップ情報123およびCPU実行ログ124に基づいて関数トレース情報126を生成し、生成した関数トレース情報126をフラッシュメモリ12に記録する。
具体的には、演算回路16は、CPU実行ログ124中の複数のアドレス(一連の第1種タイムカウントの一例に相当する)の個々について、当該アドレスがマップ情報123中の複数のアドレス範囲のうちどのアドレス範囲に包含されるか特定する。そして、特定したアドレス範囲に関数トレース情報126で対応付けられている関数名と、当該アドレスにマップ情報123で対応付けられているタイムカウントを対応付ける。
例えば、図5中のアドレスdが図4中のアドレス範囲R3〜R4に含まれている場合、当該アドレス範囲R3〜R4に対応する関数名int1が、当該アドレスdに対応するタイムカウントD[ns]に対応付けられる。
そして、上記のようにして得られた一連のタイムカウントと複数個の関数との対応関係のすべてを、図7に例示するような関数トレース情報126として生成し、フラッシュメモリ12に記録する。
このようにして得られた関数トレース情報126は、上記エミュレーションにおいて、第1の時間スケールを単位として表された一連の第1種タイムカウントのどの部分でどの関数が実行されたかを示す。
次に、解析装置1のユーザは、操作部14に対して所定の波形情報生成開始操作を行う。すると演算回路16は、波形情報生成処理164の実行を開始する。
演算回路16は、関数トレース情報生成処理163において、フラッシュメモリ12から関数トレース情報126をRAM13に読み出し、読み出した関数トレース情報126に基づいてソフトウェア波形情報127を生成し、生成したソフトウェア波形情報127をフラッシュメモリ12に記録する。
具体的には、演算回路16は、関数トレース情報126中の情報に基づいて、図8に示すように、上述の一連の第1種タイムカウントの各々における各関数の実行、非実行の区別が表されると共に第1の時間スケールの値が表されたソフトウェア波形情報を生成する。
ソフトウェア波形情報127は、図8に示すように、ハードウェア波形情報125と同じ形式の周知のVCD(Value change dump)フォーマットで記載されており、時間スケール表示部127a、記号定義部127b、および複数個の経時変化部127cを含んでいる。なお図8では、簡単のため、1つの経時変化部127cのみが表され、他の経時変化部は表示が省略されている。
時間スケール表示部127aは、経時変化部127cにおいて表示されるタイムカウントの単位に相当する時間スケール(図8の例では1ナノ秒)を表す部分である。
記号定義部127bは、関数トレース情報126中の名称と、当該名称に割り当てられた記号との対応関係が複数個表されている。
より具体的には、記号定義部127bは、上記関数と1対1に対応する複数個のレコードを有している。1つのレコードは図8では1行で表されている。そして、各レコードは、データ長表示部271、記号名表示部272、関数名表示部273を有している。データ長表示部271は、所属先のレコードに対応する関数の実行、非実行のデータのデータ長をビット数で表す。記号名表示部272は、所属先のレコードに対応する関数に割り当てられる記号名を表す。関数名表示部273は所属先のレコードに対応する関数の名称を表す。同じハードウェア波形情報125中で、関数の名称および記号の名称いずれも重複なしで例えばランダムに割り当てられている。
経時変化部127cは、タイムカウント部274および、上記関数名と1対1に対応する複数個のレコードを有している。タイムカウント部274は、所属先のレコードに対応する時点のタイムカウントを表している。
このタイムカウントは、1ナノ秒という時間スケール(第1の時間スケールの一例に相当する)を単位として経時的に増加する一連の第1種タイムカウントのうちの1つの値である。
経時変化部127c中の各レコードは図8では1行で表されている。そして、各レコードは、データ値表示部275、記号名表示部276を有している。データ値表示部275は、同じ経時変化部127cに所属するタイムカウント部274が示す時点(すなわちタイムカウント)における、所属先のレコードに対応する関数の実行の有無を表している。より具体的には、当該データ値表示部275の値は、対応する関数を実行していれば1の値、実行していなければ0の値となっている。記号名表示部276は、所属先のレコードに対応する関数に割り当てられた記号を表している。
このように、ソフトウェア波形情報127では、第1の時間スケールを単位として表された一連の第1種タイムカウント(ナノ秒を単位とする一連のタイムカウント)の各々における各関数の実行、非実行の区別が表されると共に当該第1の時間スケールの値が表されている。
次に、解析装置1のユーザは、操作部14に対して所定の波形マージ開始操作を行う。すると演算回路16は、波形マージ処理165の処理を実行する。
演算回路16は、波形マージ処理165において、ハードウェア波形情報125およびソフトウェア波形情報127に基づいて統合波形情報128を生成し、生成した統合波形情報128をフラッシュメモリ12に記録する。
図9に、波形マージ処理165の詳細を示す。演算回路16は、波形マージ処理165において、まずステップ210で、フラッシュメモリ12からハードウェア波形情報125をRAM13に読み出し、続くステップ220で、フラッシュメモリ12からソフトウェア波形情報127を読み出す。
続いてステップ230では、ハードウェア波形情報125の記号定義部125bに含まれる全レコードから端子名表示部253を抽出し、また、ソフトウェア波形情報127の記号定義部127bに含まれる全レコードから関数名表示部273を抽出する。そして、抽出した端子名表示部253中の端子名(例えばUART_1)のすべてと抽出した関数名表示部273中の関数名(例えばf3)のすべてとの間で、名称の重複が1組でもあるか否かを判定する。
ソフトウェア波形情報127中の関数名はソースコード121の作成者によって決められ、ハードウェア波形情報125中の端子名はマイコンモデル122の作成者によって決められるので、重複が発生しない場合も発生する場合もある。重複が1組もなければ、ステップ240に進む。
重複が1組以上あれば、重複している各組において、重複している端子名と関数名のどちらか一方をRAM13中で変更することで、それらの重複を解消する。例えば、重複している組の関数名の方を、重複相手の端子名とも、読み出された他のすべての変数名とも、読み出された他のすべての関数名とも異なるよう、変更する。このような処理によって端子名と関数名の間の重複がなくなると、ステップ240に進む。
続いてステップ240では、ハードウェア波形情報125の記号定義部125bに含まれる全レコードから記号名表示部252を抽出し、また、ソフトウェア波形情報127の記号定義部127bに含まれる全レコードから記号名表示部272を抽出する。そして、抽出した端子名表示部253中の記号名(例えばa58)のすべてと抽出した記号名表示部272中の記号名(例えばf3)のすべてとの間で、名称の重複が1組でもあるか否かを判定する。
ソフトウェア波形情報127中の記号名は波形情報生成処理164において自動的に決められ、ハードウェア波形情報125中の記号名はハードウェアエミュレータ162において自動的に決められるので、重複が発生しない場合も発生する場合もある。重複が1組もなければ、ステップ250に進む。
重複が1組以上あれば、重複している各組において、重複しているハードウェア波形情報125中の記号名とソフトウェア波形情報127中の記号名のどちらか一方をRAM13中で変更することで、それらの重複を解消する。例えば、重複している組のソフトウェア波形情報127中の記号名の方を、重複相手の記号名とも、読み出された他のすべての記号名とも異なるよう、変更する。このような処理によって記号名と記号名の間の重複がなくなると、ステップ250に進む。
ステップ250では、読み出したハードウェア波形情報125中の時間スケール表示部125aが示す時間スケール(第2の時間スケールの一例に相当する)と、読み出したソフトウェア波形情報127中の時間スケール表示部127aが示す時間スケール(第1の時間スケールの一例に相当する)とを比較し、前者の時間スケールを後者の時間スケールで除算したスケール比を算出する。
上記の例では、第1の時間スケールがナノ秒で、第2の時間スケールがピコ秒となっているので、スケール比は1/1000である。
続いてステップ260では、ステップ250で算出したスケール比に基づいて、共通の時間スケール(以下、共通時間スケールという)を決定する。そして決定した共通時間スケールを単位として、ハードウェア波形情報125の経時変化部125cおよびソフトウェア波形情報127の経時変化部127cをRAM13中で配列変数化する。配列変数は、周知の通り、インデックスで区別された複数の要素を含む変数である。以下、インデックスおよび要素と称するのは、RAM13中に割り当てられた1つの配列変数のインデックスおよび要素である。
共通時間スケールの詳細な決定方法は、以下の通りである、スケール比が1の場合は、第1、第2の時間スケールが同じなので、その時間スケールを共通時間スケールとして決定する。スケール比が1未満の場合は、第2の時間スケールの方が細かい(すなわち、短い)ので、第2の時間スケールを共通時間スケールとして決定する。スケール比が1より大きいの場合は、第1の時間スケールの方が細かい(すなわち、短い)ので、第1の時間スケールを共通時間スケールとして決定する。つまり、細かい方の時間スケールを、共通時間スケールとして決定する。
配列変数化の方法は、以下の(1)〜(3)の通りである。
(1)スケール比が1の場合は、ハードウェア波形情報125中のすべての経時変化部125cおよびソフトウェア波形情報127中のすべての経時変化部127cの各々に対して、以下の処理[1a]を行う。
[1a]当該経時変化部中のタイムカウント部の値を特定し、特定した値と同じインデックスを有する要素に、当該経時変化部中のすべて(すなわち、タイムカウント部および全レコード)を追加する。
このように、演算回路16は、処理[1a]を、経時変化部125c、127cのすべてに対して行う。これにより1つの配列変数内で、経時変化部125c、127cの各々が、共通時間スケールを単位として表された共通タイムカウントと値が同じインデックスを有する要素に、含まれる。
(2)スケール比が1未満の場合は、ハードウェア波形情報125中のすべての経時変化部125cの各々に対して、以下の処理[2a]を行う。
[2a]当該経時変化部125c中のタイムカウント部の値を特定し、特定した値と同じインデックスを有する要素に、当該経時変化部125c中のすべて(すなわち、タイムカウント部および全レコード)を追加する。
そして更に、ソフトウェア波形情報127中のすべての経時変化部127cの各々に対して、以下の処理[2b]、[2c]を行う。
[2b]当該経時変化部127c中のタイムカウント部の値を、上記スケール比で除算する。除算後の値は、共通時間スケールを単位とした表された値になる。
[2c]上記[2b]の除算結果の値と同じインデックスを有する要素に、当該経時変化部127c中のタイムカウント部以外のすべて(すなわち、全レコード)を追加する。
このように、演算回路16は、処理[2a]を、経時変化部125cのすべてに対して行い、処理[2b]、[2c]を、経時変化部127cのすべてに対して行う。これにより、1つの配列変数内で、経時変化部125c、127cの各々が、共通時間スケールを単位として表された共通タイムカウントと値が同じインデックスを有する要素に、含まれる。
(3)スケール比が1より大きい場合は、ハードウェア波形情報125中のすべての経時変化部125cの各々に対して、以下の処理[3a]、[3b]を行う。
[3a]当該経時変化部125c中のタイムカウント部の値に、上記スケール比を乗算する。乗算後の値は、共通時間スケールを単位とした表された値になる。
[3b]上記[3a]の乗算結果の値と同じインデックスを有する要素に、当該経時変化部125c中のタイムカウント部以外のすべて(すなわち、全レコード)を追加する。
そして更に、ソフトウェア波形情報127中のすべての経時変化部127cの各々に対して、以下の処理[2c]を行う。
[3c]当該経時変化部127c中のタイムカウント部の値を特定し、特定した値と同じインデックスを有する要素に、当該経時変化部127c中のタイムカウント部以外のすべて(すなわち、全レコード)を追加する。
このように、演算回路16は、処理[3a]、[3b]を、経時変化部125cのすべてに対して行い、処理[3c]を、経時変化部127cのすべてに対して行う。これにより、1つの配列変数内で、経時変化部125c、127cの各々が、共通時間スケールを単位として表された共通タイムカウントと値が同じインデックスを有する要素に、含まれる。なお、上記の処理(1)〜(3)では、ハードウェア波形情報125の経時変化部125cおよびソフトウェア波形情報127の経時変化部127cのうち同じ時点のデータは、同じ1つの要素に含まれる。
以上のように、ステップ260では、ソフトウェア波形情報127および統合波形情報128の経時変化部125c、127cが、共通時間スケールを単位として表された一連の共通タイムカウントと同等のインデックスを有する1つの配列変数に、まとめて格納される。
続いてステップ270では、ハードウェア波形情報125およびソフトウェア波形情報127を、RAM13中で結合して統合波形情報128を作成する。
統合波形情報128のデータフォーマットは、ハードウェア波形情報125、ソフトウェア波形情報127と同じ形式の周知のVCD(Value change dump)フォーマットとする。
統合波形情報128を作成するため、演算回路16は、まず、時間スケール表示部125a、127aと同じ形式の統合時間スケール表示部をRAM13中に生成する。この統合時間スケール表示部の値は、共通時間スケールとする。
続いて演算回路16は、記号定義部125b、127bと同じ形式の統合記号定義部をRAM13中に生成する。この統合記号定義部には、記号定義部125b、127bに含まれていたレコードをすべて含める。
続いて演算回路16は、経時変化部125c、127cと同じ統合経時変化部を生成する。演算回路16は、上述の配列変数の各要素のうち、ステップ260でデータが追加された要素を、インデックスの小さい順に、この統合経時変化部に含める。
そして演算回路16は、これら統合時間スケール表示部、統合記号定義部、統合経時変化部を、この順に並べたデータを、統合波形情報128とする。
続いてステップ280では、ステップ270で生成した統合波形情報128を、フラッシュメモリ12に記録する。
このように、演算回路16は、波形マージ処理165のステップ240〜280において、ソフトウェア波形情報127中の第1の時間スケールの値とハードウェア波形情報125中の第2の時間スケールの値とに基づいて共通時間スケールを特定する(ステップ250、260)。そして、当該共通時間スケールを単位として表された一連の共通タイムカウントの各々における各関数の実行、非実行の区別が表されると共に、一連の共通タイムカウントの各々におけるエミュレーションにより発生した端子を通る入出力信号の値が表される統合波形情報128を生成して記憶媒体に記録する(ステップ270、280)。
次に、解析装置1のユーザは、操作部14に対して所定の波形表示操作を行う。すると演算回路16は、表示処理166の処理を実行する。演算回路16は、表示処理166において、フラッシュメモリ12から統合波形情報128を読み出し、読み出した統合波形情報128の内容を、ディスプレイ15に表示する。
このときディスプレイ15に表示される画像の例を図10に示す。図10は、横軸を時間として、各時点における端子の信号内容よび関数の実行、非実行の経時変化を表している。
具体的には図10では、時点t1から時点t2までの期間においてマイクロコンピュータの外部からUARTの端子UART_Sにおいて信号が入力されその入力に応じてt2からt3の期間にUARTから割込みコントローラに対して割込み信号301が通知される。その結果、その後の時点t3からt4の期間において、割り込みコントローラの端子INTC_1に割り込みベクタが発生されCPUが割込み処理の準備を開始する。そしてその結果、時点t4から時点t5までの期間に割り込み関数int1が実行され、その結果、時点t5から時点t6までの期間にポート制御関数PortCが実行される。そして、ポート制御関数PortCの制御の結果、時点t6から時点t7までの期間にポートのPORT_1端子からマイクロコンピュータの外部に信号が出力される。そしてその後、時点t8において、UARTの端子UART_Sにから再度信号が入力され始める。この画像を見た解析装置1のユーザは、時点t7から時点t8までの期間300の長さで、時間的余裕を確認することができる。
このような表示により、解析装置1のユーザは、マイクロコンピュータの端子(UART_S、INTC_1、PORT_1)の状態と関数(int1、PortC)の実行状態を同じ画面で一覧することができる。
以上説明した通り、本実施形態の解析装置1は、波形マージ処理165において、ソフトウェア波形情報127中の第1の時間スケールの値とハードウェア波形情報125中の第2の時間スケールの値とに基づいて、共通の時間スケールを単位として表された一連の共通タイムカウントの各々における各関数の実行、非実行の区別が表されると共に、一連の共通タイムカウントの各々においてエミュレーションによりマイクロコンピュータの端子を通った入出力信号の値が表される統合波形情報128を生成して記憶媒体に記録する(ステップ240、250、260、270、280)。
このように、ソフトウェア波形情報127において第1の時間スケールの値が表されており、ハードウェア波形情報125に第2の時間スケールの値が表されており、解析装置1が、これら第1、第2の時間スケールの値を用いることで、共通の時間スケールを用いて、各関数の実行、非実行の区別およびエミュレーションにより発生したハードウェアを通る入出力信号の値を表す統合波形情報を生成することができる。
また、演算回路16は、第1の時間スケールの値を、ハードウェアエミュレータ162のエミュレーションを実行する主体(すなわち、演算回路16自体)から、当該エミュレーションの結果として出力するデータ(すなわち、CPU実行ログ124)から取得する。このようになっていることで、第1の時間スケールを最も直接的な方法で取得することができる。
また、解析装置1は、ソフトウェア波形情報127中の関数の名称とハードウェア波形情報125中の端子の名称の間に重複がある場合は、重複している端子名と関数名のどちらか一方を変更することで、その重複を解消した後、統合波形情報を生成する(ステップ230)。このように、統合波形情報128を生成する前に端子名と関数名の重複を解消することで、統合波形情報内におけるデータ不整合の発生可能性を低減することができる。
また、共通の時間スケールは、第1の時間スケールおよび第2の時間スケールのうち、短い方と同じである。このようになっていることで、ハードウェア波形情報125とソフトウェア波形情報127の時間分解能のどちらも損なうことなく統合波形情報128に反映することができる。
なお、本実施形態においては、解析装置1の演算回路16が、波形情報生成処理164を実行することでソフトウェア波形情報生成手段の一例として機能し、波形マージ処理165のステップ210、220を実行することで波形情報読み出し手段の一例として機能し、ステップ240、250、260、270、280を実行することで統合手段の一例として機能する。
(他の実施形態)
なお、本発明は上記した実施形態に限定されるものではなく、特許請求の範囲に記載した範囲内において適宜変更が可能である。また、また、上記実施形態において、実施形態を構成する要素は、特に必須であると明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。また、上記実施形態において、実施形態の構成要素の個数、数値、量、範囲等の数値が言及されている場合、特に必須であると明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではない。特に、ある量について複数個の値が例示されている場合、特に別記した場合および原理的に明らかに不可能な場合を除き、それら複数個の値の間の値を採用することも可能である。また、上記実施形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に特定の形状、位置関係等に限定される場合等を除き、その形状、位置関係等に限定されるものではない。また、本発明は、上記実施形態に対する以下のような変形例も許容される。なお、以下の変形例は、それぞれ独立に、上記実施形態に適用および不適用を選択できる。すなわち、以下の変形例のうち明らかに矛盾する組み合わせを除く任意の組み合わせを、上記実施形態に適用することができる。
なお、本発明は上記した実施形態に限定されるものではなく、特許請求の範囲に記載した範囲内において適宜変更が可能である。また、また、上記実施形態において、実施形態を構成する要素は、特に必須であると明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。また、上記実施形態において、実施形態の構成要素の個数、数値、量、範囲等の数値が言及されている場合、特に必須であると明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではない。特に、ある量について複数個の値が例示されている場合、特に別記した場合および原理的に明らかに不可能な場合を除き、それら複数個の値の間の値を採用することも可能である。また、上記実施形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に特定の形状、位置関係等に限定される場合等を除き、その形状、位置関係等に限定されるものではない。また、本発明は、上記実施形態に対する以下のような変形例も許容される。なお、以下の変形例は、それぞれ独立に、上記実施形態に適用および不適用を選択できる。すなわち、以下の変形例のうち明らかに矛盾する組み合わせを除く任意の組み合わせを、上記実施形態に適用することができる。
(変形例1)
上記実施形態では、ハードウェアエミュレータ162というソフトウェアを演算回路16が実行することによってマイクロコンピュータのエミュレーションが実現されている。しかし、エミュレーションはこのようなソフトウェア的な方法ではなく、ハードウェア的に実現されていてもよい。例えば、当該マイクロコンピュータの回路構成と同等の回路構成が実現するようプログラムされたFPGAによって、エミュレーションが実現されていてもよいし、あるいは当該マイクロコンピュータをエミュレーションする周知のICE(In−Circuit Emulator)によって実現されていてもよい。
上記実施形態では、ハードウェアエミュレータ162というソフトウェアを演算回路16が実行することによってマイクロコンピュータのエミュレーションが実現されている。しかし、エミュレーションはこのようなソフトウェア的な方法ではなく、ハードウェア的に実現されていてもよい。例えば、当該マイクロコンピュータの回路構成と同等の回路構成が実現するようプログラムされたFPGAによって、エミュレーションが実現されていてもよいし、あるいは当該マイクロコンピュータをエミュレーションする周知のICE(In−Circuit Emulator)によって実現されていてもよい。
(変形例2)
上記実施形態では、演算回路16は、ハードウェアエミュレータ162のエミュレーションを実行する主体(すなわち、演算回路16自体)が、当該エミュレーションの結果として出力するデータ(すなわち、CPU実行ログ124)から、第1の時間スケールの値を取得する。
上記実施形態では、演算回路16は、ハードウェアエミュレータ162のエミュレーションを実行する主体(すなわち、演算回路16自体)が、当該エミュレーションの結果として出力するデータ(すなわち、CPU実行ログ124)から、第1の時間スケールの値を取得する。
しかし、必ずしもこのようになっておらずともよく、例えば、演算回路16中のクロックの1単位を第1の時間スケールとして取得するようになっていてもよい。この場合、取得される第1の時間スケールは、例えばROM11中にあらかじめ記録されている。
この場合、演算回路16は、CPU実行ログ124として、プログラムカウンタの値のみを時々刻々とリアルタイムで取得し、ある時点において取得したプログラムカウンタの値と当該時点の自機のクロックのカウント値とを対応付けることで、一連の第1種タイムカウントを特定することができる。
(変形例3)
上記実施形態では、第1の時間スケールがナノ秒で、第2の時間スケールがピコ秒になっている。しかし、第1の時間スケールと第2の時間スケールの対応関係は、必ずしもこのような例に限らない。第1の時間スケールと第2の時間スケールが異なる場合があれば、上記実施形態の処理を行うことに意義がある。
上記実施形態では、第1の時間スケールがナノ秒で、第2の時間スケールがピコ秒になっている。しかし、第1の時間スケールと第2の時間スケールの対応関係は、必ずしもこのような例に限らない。第1の時間スケールと第2の時間スケールが異なる場合があれば、上記実施形態の処理を行うことに意義がある。
1 ソフトハード解析装置
16 演算回路
161 コンパイラ
162 ハードウェアエミュレータ
163 関数トレース情報生成処理
164 波形情報生成処理
165 波形マージ処理
16 演算回路
161 コンパイラ
162 ハードウェアエミュレータ
163 関数トレース情報生成処理
164 波形情報生成処理
165 波形マージ処理
Claims (4)
- 所定のハードウェアによるソフトウェアのオブジェクトコード(122a)の実行を模擬するエミュレーションにおいて、第1の時間スケールを単位として表された一連の第1種タイムカウントのどの範囲で、前記ソフトウェアのソースコードに記述された所定の関数が実行されたかを示す関数トレース情報(126)を、記憶媒体から読み出し、読み出した前記関数トレース情報に基づいて、前記一連の第1種タイムカウントの各々における前記関数の実行、非実行の区別が表されると共に前記第1の時間スケールの値が表されたソフトウェア波形情報(127)を生成して記憶媒体に記録するソフトウェア波形情報生成手段(164)と、
前記第1の時間スケールと異なる第2の時間スケールを単位として表された一連の第2種タイムカウントの各々において前記エミュレーションにより前記ハードウェアの端子を通った入出力信号の値が表されると共に前記第2の時間スケールの値が表されたハードウェア波形情報(125)を記憶媒体から読み出すと共に、前記ソフトウェア波形情報を記憶媒体から読み出す波形情報読み出し手段(210、220)と、
読み出された前記ソフトウェア波形情報中の前記第1の時間スケールの値と読み出された前記ハードウェア波形情報中の前記第2の時間スケールの値とに基づいて、共通の時間スケールを単位として表された一連の共通タイムカウントの各々における前記関数の実行、非実行の区別が表されると共に、前記一連の共通タイムカウントの各々において前記エミュレーションにより前記ハードウェアの端子を通った入出力信号の値が表される統合波形情報(128)を生成して記憶媒体に記録する統合手段(240、250、260、270、280)と、を有することを特徴とするソフトハード協調解析装置。 - 前記ソフトウェア波形情報生成手段は、前記エミュレーションを実行する主体が前記エミュレーションの結果として出力したデータ(124)から、前記第1の時間スケールの値を取得することを特徴とする請求項1に記載のソフトハード協調解析装置。
- 前記統合手段は、前記ソフトウェア波形情報中の関数の名称と前記ハードウェア波形情報中の端子の名称の間に重複がある場合は、重複している端子名と関数名のどちらか一方を変更することで、その重複を解消した後、前記統合波形情報を生成することを特徴とする請求項1または2に記載のソフトハード協調解析装置。
- 前記共通の時間スケールは、前記第1の時間スケールおよび前記第2の時間スケールのうち、短い方と同じであることを特徴とする請求項1ないし3のいずれか1つに記載のソフトハード協調解析装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015144038A JP2017027288A (ja) | 2015-07-21 | 2015-07-21 | ソフトハード協調解析装置およびソフトハード協調解析装置用のプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015144038A JP2017027288A (ja) | 2015-07-21 | 2015-07-21 | ソフトハード協調解析装置およびソフトハード協調解析装置用のプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017027288A true JP2017027288A (ja) | 2017-02-02 |
Family
ID=57946548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015144038A Pending JP2017027288A (ja) | 2015-07-21 | 2015-07-21 | ソフトハード協調解析装置およびソフトハード協調解析装置用のプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017027288A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117194276A (zh) * | 2023-11-06 | 2023-12-08 | 沐曦集成电路(上海)有限公司 | 芯片软硬件联合仿真调试系统 |
-
2015
- 2015-07-21 JP JP2015144038A patent/JP2017027288A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117194276A (zh) * | 2023-11-06 | 2023-12-08 | 沐曦集成电路(上海)有限公司 | 芯片软硬件联合仿真调试系统 |
CN117194276B (zh) * | 2023-11-06 | 2024-01-23 | 沐曦集成电路(上海)有限公司 | 芯片软硬件联合仿真调试系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6448195B2 (ja) | ランタイムにfpgaの信号値にランダムにアクセスするための方法、データ処理装置、コンピュータプログラム、ディジタル記憶媒体及びfpgaビルドの実施方法 | |
KR100808257B1 (ko) | 임베디드 시스템 프로토타입 개발 지원 장치 및 방법 | |
CN114662427B (zh) | 一种逻辑系统设计的调试方法及设备 | |
CN112444731B (zh) | 芯片测试方法、装置、处理器芯片及服务器 | |
JP2017084082A (ja) | シミュレーション装置、試験シナリオファイル作成方法、及び試験シナリオファイルを用いた試験方法 | |
JP5552300B2 (ja) | 接続機器シミュレータのシーケンス制御装置、方法、及びプログラム | |
CN109726063B (zh) | 一种基于指令行为对Verilog实现的MIPS处理器的自动化评判方法 | |
JP6763153B2 (ja) | ハードウェア/ソフトウェア協調検証装置およびハードウェア/ソフトウェア協調検証方法 | |
JP4175953B2 (ja) | 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体 | |
JP2007334812A (ja) | シミュレータ及びシミュレーション方法 | |
JP2009140388A (ja) | 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置 | |
JP2017027288A (ja) | ソフトハード協調解析装置およびソフトハード協調解析装置用のプログラム | |
JP4293562B2 (ja) | ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体 | |
US10579761B1 (en) | Method and system for reconstructing a graph presentation of a previously executed verification test | |
Goli et al. | Through the looking glass: Automated design understanding of SystemC-based VPs at the ESL | |
US10223077B2 (en) | Determination of signals for readback from FPGA | |
Sprott et al. | Navigating the functional coverage black hole: be more effective at functional coverage modeling | |
JP2018026067A (ja) | シミュレーション装置および同装置における接続情報生成方法 | |
CN113065302B (zh) | 用于仿真逻辑系统设计的方法、仿真器及可读存储介质 | |
Stroud | AUSIM: Auburn University SIMulator-Version L2. 2 | |
JP6620653B2 (ja) | プラント監視制御システム用エミュレータ | |
US20060178863A1 (en) | Combining and representing signals of a hardware simulation device and elements of a program listing | |
Lisonbee | Assessing the Impact of a Source Level Optimization Utility for Embedded Systems | |
JP2011164860A (ja) | 検証装置及び検証プログラム | |
Stehno | Real-time systems design with PEP |