JP5287427B2 - シンボリックデバッガ、方法およびプログラム - Google Patents

シンボリックデバッガ、方法およびプログラム Download PDF

Info

Publication number
JP5287427B2
JP5287427B2 JP2009082212A JP2009082212A JP5287427B2 JP 5287427 B2 JP5287427 B2 JP 5287427B2 JP 2009082212 A JP2009082212 A JP 2009082212A JP 2009082212 A JP2009082212 A JP 2009082212A JP 5287427 B2 JP5287427 B2 JP 5287427B2
Authority
JP
Japan
Prior art keywords
variable
source program
execution
correspondence
model
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.)
Active
Application number
JP2009082212A
Other languages
English (en)
Other versions
JP2010237759A (ja
Inventor
寿彦 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009082212A priority Critical patent/JP5287427B2/ja
Publication of JP2010237759A publication Critical patent/JP2010237759A/ja
Application granted granted Critical
Publication of JP5287427B2 publication Critical patent/JP5287427B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、ハードウェア設計に用いられるデバッガに関し、特に、ソースコードの実行位置やソースコード上の変数値を表示可能なシンボリックデバッガに関する。
C言語等のプログラム言語あるいはハードウェア記述言語を用いてハードウェアの動作を記述した動作記述からRTL(Register Transfer Level)記述を合成する動作合成システムが知られている。
動作合成システムの一例が、特許文献1に記載されている。この動作合成システムは、CDFG(Control Data Flow Graph)生成手段、スケジューリング手段、アロケーション手段、状態遷移生成手段およびRTL生成手段から構成されている。
CDFG手段は、C言語等の動作記述から、ループ記述であることを識別するためのループ情報を埋め込んだCDFGを生成する。スケジューリング手段は、生成したCDFGに基づいて所望の動作を実行する演算器数とステップ数を決定する。アロケーション手段は、変数や演算にレジスタや演算器を割り当てる。状態遷移生成手段は、スケジューリング時の情報を利用して状態遷移を生成するとともに、ループ記述をパイプライン化するために、パイプラインの制御変数を作成してループ記述をパイプライン動作可能な構成に変更する。RTL生成手段は、生成した状態遷移からRTL記述を生成する。
上記の動作合成システムでは、生成されたRTL記述は、ユーザが記述していないパイプライン制御用の変数を含む。このため、通常のRTL記述(ループ記述のパイプライン化が行われないもの)と同様なデバッグ手法では、プログラムを正確に検証することは困難である。
ソフトウェアのプログラム記述をコンパイラで機械語に変換する場合は、一般に、シンボリックデバッガが使われる。しかし、一般的に、コンパイラの最適化を利用した場合のシンボリックデバッグ機能を保証していないことが多い。例えば、ヒューレット・パッカー社のHP9000シリーズのHP/DDEデバッガのユーザーズ・ガイド(非特許文献1)には、「1つの変数の複数のコピーが存在することもあります。例えばループが最適化される場合です。このような場合、意味のある変数の値を取得するのはほとんど不可能となります。」と記されている。
特許文献2には、パイプライン実行状態を表示可能なソースコードデバッガが記載されている。このソースコードデバッガは、リソース情報獲得手段、リソース情報表示手段、ISS制御手段、パイプライン情報表示手段、およびパイプライン情報獲得手段を有する。
ISS制御手段が、プロセッサの命令セットシミュレータ(ISS)における命令実行を中断させる。次に、リソース情報獲得手段が、ISSから実行中のプログラム(ソースコード)のアドレス情報や命令コード等を取得する。そして、リソース情報表示手段が、アドレス情報や命令コードの編集やプログラムのソースコード上でプログラムカウンタの値に対応する位置への矢印記号の付与等の表示編集処理を行う。
また、パイプライン情報獲得手段が、パイプラインの各ステージで実行中の命令のアドレス情報を取得する。そして、パイプライン情報表示手段が、ソースコード上で各アドレスに対応する位置にそれぞれの命令が実行されるステージに応じたマークを付与する。
特開2008-71089公報 特開2003-85001公報
HP/DDE デバッガ ユーザーズ・ガイド、1996 年 12 月、第8章( HYPERLINK "http://docs.hp.com/ja/B5462-90001/ch08s06.html" http://docs.hp.com/ja/B5462-90001/ch08s06.html)
特許文献1に記載されているような動作合成システムでは、ソースプログラムで書かれた動作記述を自動で並列化するパイプライン処理が行われる。しかし、このパイプライン処理では、ループ文を含む動作記述を自動で並列化する場合に、ソースプログラム上のある変数は、合成後のハードウェア動作中に、複数の値を保持することになる。このような並列化された処理に対して、ユーザが直感的にデバッグすることは困難である。
ソフトウェアの場合、デバッグ時には最適化の処理を停止するなど、コンパイラのオプションを変えることでデバッグする手段が一般的であるが、ハードウェア設計者が、動作合成ツールを使う場合には、並列動作に起因するタイミングの問題など、最終的なハードウェア動作を再現できる形でデバッグすることが必要となるケースも多い。そのような場合、並列化等の最適化を抑止してシンボリックデバッグするという手段を用いることは困難である。
特許文献2に記載のソースコードデバッガにおいては、パイプラインの実行状態(実行中のプログラムのアドレス情報や命令コード等)を付加情報としてステージ別に表示する。これにより、ユーザは、パイプライン中の各命令の実行状況を的確に把握することができる。しかし、このソースコードデバッガも、パイプライン動作の進行状況に応じて、ステージの実行状態や変数の値を表示するようになっていないため、パイプライン処理をユーザが直感的にデバッグすることは困難である。
本発明の目的は、上記問題を解決し、パイプライン処理をユーザが直感的かつ容易にデバッグすることが可能な、シンボリックデバッガ、動作合成デバッグ方法およびプログラムを提供することにある。
上記目的を達成するため、本発明の一態様であるシンボリックデバッガは、ソースプログラムの実行状態を表示する表示手段と、前記ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルを実行するモデル実行手段と、前記モデル実行手段によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて前記表示手段による実行状態の表示を管理する対応関係管理手段と、を有する。前記ハードウェア動作モデルは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されている。前記対応関係管理手段は、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報と、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報とを保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記変数対応情報を参照して、該特定した命令文に用いられた変数の値を前記モデル実行手段による実行結果から取得する。前記表示手段は、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記対応関係管理手段によって取得された値とを関連付けて同一の強調表示形態により表示する。前記対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる。
本発明の別の態様であるシンボリックデバッガは、ソースプログラムの実行状態を表示する表示手段と、前記ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルを実行するモデル実行手段と、前記モデル実行手段によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて前記表示手段による実行状態の表示を制御する対応関係管理手段と、を有する。前記ハードウェア動作モデルは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されている。前記対応関係管理手段は、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定する。前記モデル実行手段は、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、前記特定した命令文に用いられた変数の値を保持する。前記表示手段は、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記モデル実行手段にて保持した値とを関連付けて強調表示により表示する。前記対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる。
本発明の一態様であるシンボリックデバッグ方法は、
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、モデル実行手段が、前記ハードウェア動作モデルを実行し、
対応関係管理手段が、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報と、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報とを保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記変数対応情報を参照して、該特定した命令文に用いられた変数の値を前記モデル実行手段による実行結果から取得し、
表示手段が、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記対応関係管理手段によって取得された値とを関連付けて強調表示により表示し、
前記対応関係管理手段が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させることを特徴とする。
本発明の別の態様であるシンボリックデバッグ方法は、
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、モデル実行手段が、前記ハードウェア動作モデルを実行し、
対応関係管理手段が、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定し、
前記モデル実行手段が、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、前記特定した命令文に用いられた変数の値を保持し、
表示手段が、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記モデル実行手段にて保持した値とを関連付けて強調表示により表示し、
前記対応関係管理手段が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させることを特徴とする。
本発明のプログラムは、
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、前記ハードウェア動作モデルを実行する第1の処理と、
前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を参照して、前記特定した命令文に用いられた変数の値を前記第1の処理における実行結果から取得する第2の処理と、
前記ソースプログラムの実行状態として、前記第2の処理にて特定された命令文の行と、該命令文の変数と、該変数について前記第2の処理によって取得された値とを関連付けて強調表示により表示する第3の処理と、
処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる第4の処理とを、コンピュータに実行させることを特徴とする。
本発明によれば、強調表示のパターンの変化から、どのような順序でパイプライン動作が実行され、その実行過程で変数の値がどのように変化したかを判断することができる。よって、ユーザは、パイプライン処理を直感的かつ容易にデバッグすることができる。
本発明の第1の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。 図1に示す動作合成用シンボリックデバッガにて行われるシンボリックデバッグ処理の一手順を示すフローチャートである。 ソースプログラムの一例を示す模式図である。 図3に示すソースプログラムに基づいて作成されたシミュレーション用のハードウェア動作モデルの一例を示す模式図である。 図3に示すソースプログラムと図4に示すハードウェア動作モデルの間の行対応情報の一例を示す模式図である。 図3に示すソースプログラムと図4に示すハードウェア動作モデルの間の変数対応情報の一例を示す模式図である。 パイプライン動作の進行状況に応じたステージ別強調表示形態の一例を示す模式図である。 パイプライン動作の進行状況に応じたステージ別強調表示形態の別の例を示す模式図である。 パイプライン動作の進行状況に応じた変数のステージ別強調表示形態の一例を示す模式図である。 パイプライン動作の進行状況に応じた変数のステージ別強調表示形態の別の例を示す模式図である。 非パイプライン動作時の表示形態の一例を示す模式図である。 本発明の第2の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。 図12に示す動作合成用シンボリックデバッガにて行われるシンボリックデバッグ処理の一手順を示すフローチャートである。 本発明の他の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。
次に、本発明の実施形態について図面を参照して説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。
図1を参照すると、動作合成用シンボリックデバッガは、プログラム制御により動作するコンピュータ1より構成される。コンピュータ1は、中央処理装置、プロセッサ、データ処理装置等として使用されるものであって、その主要部は、動作合成システム10およびシンボリックデバッガ20からなる。動作合成システム10およびシンボリックデバッガ20はいずれも、プログラムにより実現可能である。
デバック対象であるソースプログラム30が、動作合成システム10およびシンボリックデバッガ20に供給される。ソースプログラム30は、C言語等の高級言語を用いてハードウェアの動作を記述した動作記述(アルゴリズム記述)であって、メモリ上に格納されている。
動作合成システム10は、ソースプログラム30に基づき、合成用ハードウェア記述11、シミュレーション用のハードウェア動作モデル12およびシンボリックデバッガ用情報13を生成する。
ハードウェア動作モデル12は、入力ソースコードにサイクル情報を付加した段階でプログラムコードとして生成される。具体的には、ハードウェア動作モデル12は、当該モデルを複数の基本ブロックに区画するための特定の記述(例えば「Branch」)を含み、それぞれの基本ブロックは、その特定の記述を用いた実行位置保持変数、例えば「BranchID」により識別される。この実行位置保持変数に基づき、ハードウェア動作モデル12を実行した場合の現在の実行位置を特定することができる。また、ソースプログラム30のループ記述を複数のステージからなるパイプライン動作で定義し、このパイプライン動作を、実行位置保持変数により識別される複数の基本ブロックで記述する。このようなハードウェア動作モデル12をコンパイルすることで、シンボリックデバッガ20のモデル実行手段21を実現する。
ハードウェア動作モデル12の生成後、ソースプログラム30を構造記述に変換することで合成用ハードウェア記述11が生成される。
シンボリックデバッガ用情報13は、行対応情報13aおよび変数対応情報13bを含む。行対応情報13aは、ハードウェア動作モデル12の各基本ブロックがソースプログラム30のどの記述行に対応するかを示す第1の行対応情報と、ハードウェア動作モデル12の各ステージがソースプログラム30のどの記述行に対応するかを示す第2の行対応情報とを含む。より具体的には、第1の行対応情報は、実行位置保持変数とソースプログラム30の記述行との対応関係を示し、第2の行対応情報は、ステージ識別番号とソースプログラム30の記述行との対応関係を示す。
さらに、行対応情報13aは、パイプライン動作情報を含む。パイプライン動作情報は、パイプライン動作の開始を示す基本ブロックの実行位置保持変数およびパイプライン動作の終了を示す基本ブロックの実行位置保持変数を含む。現在位置情報(実行位置保持変数)の値が、パイプライン動作の開始の基本ブロックの実行位置保持変数と一致すると、パイプライン動作の開始と判定することができる。現在位置情報(実行位置保持変数)の値が、パイプライン動作の終了の基本ブロックの実行位置保持変数と一致すると、パイプライン動作の終了と判定することができる。
行対応情報13aは、次のように作成することができる。まず、構文解析により、ハードウェア動作モデル12から、当該モデルを複数の基本ブロックに区画する特定の記述(「Branch」)を抽出し、その抽出した特定の記述が、ソースプログラム30のどの命令文(ソースコード行数)に対応するかを調べる。そして、特定の記述を識別する実行位置保持変数(「BranchID」)とそれに対応する命令文の行番号とを対応付けることで行対応情報13aを得る。
変数対応情報13bは、ソースプログラム30上の変数とハードウェア動作モデル12上の変数との対応関係を示す情報と、ハードウェア動作モデル12上の変数と基本ブロックとの対応関係を示す情報と、参照を開始する基本ブロックおよび参照を終える基本ブロックの情報(実行位置保持変数)とを含む。
変数対応情報13bは、次のように作成することができる。まず、ハードウェア動作モデル12の変数(レジスタ代入記述)がどの基本ブロック(「Branch」)に属するかを調べ、また、その変数(レジスタ代入記述)がソースコード上のどの命令文に対応するのかを調べ、その命令文の代入変数が対応するレジスタを参照開始の基本ブロックの情報(「BranchID」)とする。さらに、ハードウェア動作モデル12のレジスタ代入記述からその代入変数の最後の参照記述を取得する。そして、その最後の参照記述がどの基本ブロック(「Branch」)に属するかを調べ、また、その最後の参照記述がソースコード上のどの命令文に対応するのかを調べ、その命令文の代入変数が対応するレジスタを参照終了の基本ブロックの情報(「BranchID」)とする。これらの情報により変数対応情報13bを得る。なお、パイプライン処理については、代入および参照をしたステージの情報を変数対応情報13bに追加する。
シンボリックデバッガ20は、モデル実行手段21、対応関係管理手段22およびGUI(Graphical User Interface)表示手段23からなる。動作合成システム10で生成されたハードウェア動作モデル12は、モデル実行手段21に供給される。動作合成システム10で生成されたシンボリックデバッガ用情報13は、対応関係管理手段22に供給される。
モデル実行手段21は、ハードウェア動作モデル12をコンパイルして実行形式に変換し、その変換されたハードウェア動作モデル12に基づくシミュレーションを実行する。このシミュレーションの実行過程において、モデル実行手段21は、現在の実行位置を特定するための基本ブロックの識別番号(ID番号)を実行位置情報として対応関係管理手段22に供給する。さらに、モデル実行手段21は、パイプライン動作の開始および終了、パイプライン動作状況等の情報を対応関係管理手段22に供給する。
対応関係管理手段22は、動作合成システム10からのシンボリックデバッガ用情報13(行対応情報13a、変数対応情報13b)を保持する。対応関係管理手段22は、シンボリックデバッガ用情報13を参照して、モデル実行手段21から取得した実行位置情報を実行ソースプログラムの行数に変換して、その情報をGUI表示手段23に供給する。また、対応関係管理手段22は、モデル実行手段21から取得したハードウェア動作モデル12上の変数値をソースプログラム30中の変数値に変換し、その情報を保持するとともにGUI表示手段23に供給する。
GUI表示手段23は、対応関係管理手段22から供給された変数値および実行行をGUI表示する。このGUI表示では、例えば、現在実行中の基本ブロックまでの一連の処理に係る複数の基本ブロックに関するデータフローが、時間的な変化を基本ブロック単位(パイプライン動作の場合はステージ単位)で判別可能な表示形態で表示される。
次に、本実施形態の動作合成用シンボリックデバッガに行われるシンボリックデバッグ処理について具体的に説明する。
図2に、そのシンボリックデバッグ処理の一手順を示す。図2を参照すると、まず、ソースプログラム30が、動作合成システム10およびシンボリックデバッガ20に供給される。動作合成システム10が、入力されたソースプログラム30に基づいて、合成用ハードウェア記述11、シミュレーション用のハードウェア動作モデル12およびシンボリックデバッガ用情報13(行対応情報13a、変数対応情報13b)を生成する。
図3に、ソースプログラムの一例を示す。このソースプログラムは、ループ記述を含むものであって、各命令文には、それぞれの行を識別するための行数(行番号)が付与されている。ここでは、ソースプログラムのforループを4ステージ構成でパイプライン化した例が示されている。
図4に、図3に示したソースプログラムに基づいて作成されたシミュレーション用のハードウェア動作モデルの一例を示す。このハードウェア動作モデルは、ソースプログラムの“for”ループを4ステージ構成でパイプライン化した場合の動作モデルである。各ステージの動作モデルは、実行位置保持変数「branchID」により識別される。例えば、「stage1」に対応する基本ブロックは、実行位置保持変数「branchID=1」により識別される。これと同様に、「stage2」、「stage3」、「stage3」の各ステージに対応する基本ブロックはそれぞれ、「branchID=2」、「branchID=3」、「branchID=4」により識別される。
図5に、図3に示したソースプログラムと図4に示したハードウェア動作モデルの間の行対応情報の一例を示す。この行対応情報は、ハードウェア動作モデル上の実行位置保持変数とソースプログラムの記述行との対応関係を示す情報(一般行対応情報)と、ハードウェア動作モデル上のステージ識別番号とソースプログラムの記述行との対応関係を示す情報(ステージ行対応情報)とを含む。さらに、行対応情報は、パイプライン動作情報を含む。パイプライン動作情報は、パイプライン動作開始の基本ブロックを示す実行位置保持変数の値「Loop-start: branchID 1」と、パイプライン動作終了の基本ブロックを示す実行位置保持変数の値「Loop-end: branchID 9」とを含む。
図6に、図3に示したソースプログラムと図4に示したハードウェア動作モデルの間の変数対応情報の一例を示す。変数対応情報は、ソースプログラム上の変数とハードウェア動作モデル上の変数との対応関係を示す情報と、ハードウェア動作モデル上の変数と基本ブロックとの対応関係を示す情報と、参照を開始する基本ブロックおよび参照を終える基本ブロックの情報(実行位置保持変数)とを含む。図6に示す例では、ソースコード中の変数iは、ハードウェア動作モデルの「branchID=1」で、レジスタ「RG_i」の値を持ち、「branchID=2」で、レジスタ「RG_i」の値を持ち、「branchID=3」で、レジスタ「RG_i_1」の値を持つ。変数a、c、d、eについても、「branchID」毎に同様な関係付けがなされている。このような変数対応情報を参照して、「branchID」の値が変わる毎に、変数値の更新を行う。
以下、図1〜図6を参照して動作説明を行う。
シンボリックデバッガ20にて、モデル実行手段21が、動作合成システム10からハードウェア動作モデル12を読み込み、そのハードウェア動作モデル12をコンパイルして実行形式に変換する(図2のステップA0)。
次に、対応関係管理手段22が、動作合成システム10からシンボリックデバッガ用情報13を読み込むとともに、GUI表示手段23が、入力されたソースプログラム30の内容等を含む画面をGUI上に表示する(図2のステップA1)。この表示画面には、デバッグの開始および終了を示すボタン(コマンド入力用ボタン)が用意されており、ユーザは、GUIを通じて、それらボタンのうちの任意のボタンを選択することができる。
次に、GUI表示手段23が、デバッグの開始を示すボタンを選択するためのコマンド入力を受け付けると(図2のステップA2)、モデル実行手段21が、ステップA0で実行形式に変換されたハードウェア動作モデル12に基づくシミュレーションを実行する(図2のステップA3)。具体的には、モデル実行手段21は、図4に示したハードウェア動作モデルに基づくシミュレーションを実行する。
シミュレーション開始後、対応関係管理手段22が、モデル実行手段21から供給される実行位置情報の更新がなされたか否かを判定する(図2のステップA4)。具体的には、図4に示したハードウェア動作モデルにおいて、モデル実行手段21は、「branchID」で識別される基本ブロックの開始時に、開始した基本ブロックの「branchID」の値を実行位置情報として対応関係管理手段22に供給する。対応関係管理手段22は、モデル実行手段21から「branchID」の値を受信すると、実行位置情報の更新がなされたと判定する。実行位置情報の更新がなされるまで、ステップA3の処理を継続する。
実行位置情報の更新がなされた場合は、対応関係管理手段22は、モデル実行手段21から実行位置情報として取得した「branchID」の値を履歴として保持する(図2のステップA5)。そして、対応関係管理手段22は、シンボリックデバッガ用情報13の行対応情報13aに含まれているパイプライン動作情報を参照し、その取得した「branchID」の値により特定される現在実行中の基本ブロックがパイプライン動作範囲内の基本ブロックであるか否かを判定する(図2のステップA6)。
現在実行中の基本ブロックがパイプライン動作範囲内の基本ブロックである場合は、対応関係管理手段22は、モデル実行手段21からパイプライン動作状況を取得する(図2のステップA7)。具体的には、対応関係管理手段22は、シンボリックデバッガ用情報13の行対応情報13aに含まれているステージ行対応情報を参照し、ステップA5で取得した「branchID」の値により特定される現在実行中の基本ブロックのステージがソースコード上のどの行に対応するかを調べる。
次に、対応関係管理手段22は、シンボリックデバッガ用情報13の変数対応情報13bを参照し、ステップA5で取得した「branchID」の値からソースプログラム30中の変数を特定し、その特定した変数に対して、参照開始/参照終了の情報が保持されているか否かを調べる。
具体的には、対応関係管理手段22は、現在位置情報として取得した「branchID」の値が変数対応情報13bの「begin」の「branchID」の値と一致するソースプログラム上の変数の値を取得する。また、対応関係管理手段22は、現在位置情報として取得した「branchID」の値が変数対応情報13bの「end」の「branchID」の値と一致するソースプログラム上の変数について、その値を無効とする。例えば、以下のプログラムにおいて、参照される最後の記述である「out2=x;--(3)」の実行後、変数xの値は無効とされる。
<プログラム>
x=a+b; --(1)
out2=x; --(2)
out2=x; --(3)
…; --(4)
x=c+d; --(5)
次に、対応関係管理手段22は、表示更新のタイミングか否かを判定する(図2のステップA9)。ここでは、1サイクル毎の表示更新を行うものとしており、対応関係管理手段22は、サイクル周期に基づき、表示更新の有無を判定する。なお、表示更新は、別のタイミング、例えばハードウェア動作モデルの1行を実行する毎に実行されてもよい。表示更新のタイミングでない場合は、ステップA3の処理に戻る。
ステップA9で、表示更新のタイミングであると判定された場合は、対応関係管理手段22は、ステップA7で取得したパイプライン動作状況に基づいて、実行位置履歴を更新するとともに、GUI表示手段23にて、実行したソースプログラム行数をGUI上にハイライト表示させるための表示処理を行わせる(図2のステップA10、A11)。また、対応関係管理手段22は、ステップA8で取得した変数値に基づき、GUI表示手段23にて、その変数値をGUI上に表示させるための表示処理を行わせる(図2のステップA12)。変数値が無効である場合は、表示を無効にするための処理(表示を消したり、表示をグレーアウトしたりするなどの処理)を実行する。
表示処理の実行後、対応関係管理手段22は、指定時間が経過した否かの判定を行う(図2のステップA13)。具体的には、対応関係管理手段22は、コマンド入力時点からの時間を計測するタイマーを備え、このタイマーによる計測時間が指定時間に到達した否かを判定する。指定時間を経過した場合は、ステップA2に戻り、指定時間を経過していない場合は、ステップA3に戻る。
ステップA6で、現在実行中の基本ブロックがパイプライン動作範囲内の基本ブロックでない場合は、対応関係管理手段22は、モデル実行手段21から通常動作状況を取得する(図2のステップA14)。具体的には、対応関係管理手段22は、シンボリックデバッガ用情報13の行対応情報13aに含まれている一般行対応情報を参照し、ステップA5で取得した「branchID」の値により特定される現在実行中の基本ブロックがソースコード上のどの行に対応するかを調べる。
次に、対応関係管理手段22は、シンボリックデバッガ用情報13の変数対応情報13bを参照し、ステップA5で取得した「branchID」の値からソースプログラム30中の変数を特定し、その特定した変数に対応するレジスタ値を取得する(図2のステップA15)。
次に、対応関係管理手段22は、表示更新のタイミングか否かを判定する(図2のステップA16)。この判定は、ステップA9の判定と同じである。
ステップA16で、表示更新のタイミングであると判定された場合は、対応関係管理手段22は、ステップA14で取得した通常動作状況に基づいて、実行位置履歴を更新するとともに、GUI表示手段23にて、実行したソースプログラム行数をGUI上にハイライト表示させるための表示処理を行わせる(図2のステップA17、A18)。また、対応関係管理手段22は、ステップA15で取得した変数値に基づき、GUI表示手段23にて、その変数値をGUI上に表示させるための表示処理を行わせる(図2のステップA19)。この表示処理の実行後、ステップA13の判定を行う。
上述したデバッグ処理によれば、対応関係管理手段22が、実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、現在実行中の基本ブロックがパイプライン動作である場合に、行対応情報13aを参照して、現在実行中の基本ブロックに記述されたステージに対応するソースプログラム中の命令文の行を特定するとともに、変数対応情報13bを参照して、該特定した命令文に用いられた変数の値をモデル実行手段21による実行結果から取得する。GUI表示手段23が、ソースプログラムの実行状態として、対応関係管理手段22によって特定された命令文の行と、該命令文の変数と、該変数について対応関係管理手段22によって取得された値とを関連付けて同一の強調表示形態により表示する。そして、対応関係管理手段22が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる。
図7に、パイプライン動作の進行状況に応じたステージ別強調表示形態の一例を示す。この例では、ソースプログラムの命令文の行毎に、パイプライン動作のステージ識別番号が付与されており、現在実行中のステージが同一の強調表示形態で示されている。また、複数の強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる様子が示されている。
例えば、第1乃至第4ステージからなるパイプライン処理において、強調表示のパターンを赤色、黄色、緑色、青色からなる4つの表示色のパターンとする。赤色パターンが現在実行中であることを示す。黄色パターンは1つ前に実行されたものを示し、緑色パターンが2つ前に実行されたものを示し、青色パターンが3つ前に実行されたものを示す。第1ステージから第2ステージに移ると、第2のステージの表示形態が赤色パターンとされ、第1ステージの表示形態は、赤色パターンから黄色パターンに変更される。ユーザは、この強調表示のパターンの変化からどのような順序でパイプライン動作が実行されたかを判断することができる。
図8に、パイプライン動作の進行状況に応じたステージ別強調表示形態の別の例を示す。この例では、ステージ識別番号毎にソースプログラムの命令文が表示されており、それぞれの命令文の実行状況が時間軸とともに示されている。ループカウンタ「i」の値毎に、色分けされている。各ステージにおいて、「i」の値が同一のループ動作については、同一の強調表示形態とされている。例えば、ループカウンタ「i」が「3」のループ動作を青色表示とする場合、4サイクル目に第1ステージが青色表示とされ、5サイクル目に第2ステージが青色表示とされ、6サイクル目に第3ステージが青色表示とされる。この青色表示の変化に基づき、どのような順序でパイプライン動作が実行されたかを判断することができる。
図9に、パイプライン動作の進行状況に応じた変数のステージ別強調表示形態の一例を示す。この例では、ソースプログラムの変数が表示される第1の欄とその変数の値が表示される第2の欄が設けられている。第1の欄において、変数毎にステージ識別番号が付与されている。第2の欄において、変数毎に値が強調表示されるようになっており、その強調表示の形態が、パイプライン動作の進行状況に応じて変化する。同一ステージであっても、変数が複数の値をとる。例えば、「i(stage1)」は「3」および「4」の値をとる。この場合は、「3」と「4」の強調表示は同一の表示パターンで表示される。
図10に、パイプライン動作の進行状況に応じた変数のステージ別強調表示形態の別の例を示す。この例では、ステージ識別番号毎に変数が表示されており、それぞれの変数の値の変化(保持状況)が時間軸とともに示されている。具体的には、ループカウンタ「i」の値毎に、色分けされている。各ステージにおいて、同一のループ動作については、同一の強調表示形態とされている。したがって、強調表示形態の変化に基づき、どのような順序でパイプライン動作が実行されたかを判断することができる。例えば、ループカウンタ「i」が「3」のときのループ動作を青色表示とすると、青色の変数値を追いかけることで、変数の値がどのように変化したを理解することができる。具体的には、第3ステージの「d=a+c;」の結果は、青色表示の「c:8」と「a:5」の加算の結果として「d:13」が得られていることが分かる。このように、各変数が、ソースプログラム上のデータの流れに対応して、どのように値が変化していくかを理解することができる。
図7または図8に示した表示形態と図9または図10に示した表示形態とを連動させることが望ましい。この場合、両表示形態の間において、対応するステージの強調表示のパターンを同じにする。これにより、ユーザは、強調表示のパターンの変化から、どのような順序でパイプライン動作が実行され、その実行過程で変数の値がどのように変化したかを判断することができる。よって、ユーザは、パイプライン処理を直感的かつ容易にデバッグすることができる。
図11に、非パイプライン動作時の表示形態の一例を示す。この例では、現在実行中の基本ブロックに対応するソースプログラム中の命令文の行が強調表示されている。この強調表示により、ユーザは、現在、ソースプログラムのどの命令文が実行されているのかを判断することができる。
図7から図11に示した例において、強調表示のパターンとして、表示色が異なるパターン、網掛け等の面種が異なるパターン、輝度レベルの異なるパターン、これらパターンのうちの2つ以上の組み合わせからなるパターンなどを用いることができる。
(第2の実施形態)
図12は、本発明の第2の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。
本実施形態の動作合成用シンボリックデバッガの主要部は図1に示した構成と基本的に同じであるが、モデル実行手段21および対応関係管理手段22の動作の一部が第1の実施形態と異なる。説明を簡単化するため、以下では、第1の実施形態と異なる部分を中心に説明する。
動作合成システム10は、シミュレーション用のハードウェア動作モデル12をモデル実行手段21に供給するとともに、シンボリックデバッガ用情報13として行対応情報13aを対応関係管理手段22に供給する。
シンボリックデバッガ20では、モデル実行手段21は、ハードウェア動作モデル12をコンパイルして実行形式に変換し、その変換されたハードウェア動作モデル12に基づくシミュレーションを実行する。このシミュレーションの実行過程において、モデル実行手段21は、現在の実行位置を特定するための基本ブロックの識別番号(ID番号)を実行位置情報として対応関係管理手段22に供給する。さらに、モデル実行手段21は、パイプライン動作の開始および終了、パイプライン動作状況等の情報を対応関係管理手段22に供給する。
対応関係管理手段22は、動作合成システム10からのシンボリックデバッガ用情報13(行対応情報13a)を保持する。対応関係管理手段22は、行対応情報13aを参照して、モデル実行手段21から取得した実行位置情報を実行ソースプログラムの行数に変換し、その情報をGUI表示手段23に供給する。また、対応関係管理手段22は、モデル実行手段21から取得した
また、モデル実行手段21は、ソースプログラム30中の変数とハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、ハードウェア動作モデル12上の変数値をソースプログラム30中の変数値に変換し、その情報を保持する。この保持した変数値は、対応関係管理手段22によって特定した命令文に用いられた変数の値として、モデル実行手段21からGUI表示手段23に供給される。
図13に、図12に示した動作合成用シンボリックデバッガにおけるシンボリックデバッグ処理の一手順を示す。図13において、ステップB0〜B7、B14の処理は図2に示したステップA0〜A7、A14の処理と基本的に同じである。
ステップB7でパイプライン動作状況を取得した後、モデル実行手段21が、現在実行中の基本ブロック中の変数の値を保持するとともに、変数対応情報を参照して、その変数に対応するソースプログラム30中の変数を特定し、その特定した変数の値として、保持した値をGUI表示手段23に供給する。
次に、対応関係管理手段22は、表示更新のタイミングか否かを判定する(図13のステップB9)。表示更新のタイミングでない場合は、ステップB3の処理に戻る。
ステップB9で、表示更新のタイミングであると判定された場合は、対応関係管理手段22は、ステップB7で取得したパイプライン動作状況に基づいて、実行位置履歴を更新するとともに、GUI表示手段23にて、実行したソースプログラム行数をGUI上にハイライト表示させるための表示処理を行わせる(図13のステップB10、B11)。GUI表示手段23は、ソースプログラムの実行状態として、対応関係管理手段22によって特定された命令文の行と、該命令文の変数と、該変数についてステップB8で取得した変数値とを関連付けて強調表示により表示する(図2のステップB12)。変数値が無効である場合は、表示を無効にするための処理(表示を消したり、表示をグレーアウトしたりするなどの処理)を実行する。
表示処理の実行後、対応関係管理手段22は、指定時間が経過した否かの判定を行う(図13のステップB13)。指定時間を経過した場合は、ステップB2に戻り、指定時間を経過していない場合は、ステップB3に戻る。
ステップB6で、現在実行中の基本ブロックがパイプライン動作範囲内の基本ブロックでない場合は、対応関係管理手段22は、モデル実行手段21から通常動作状況を取得する(図13のステップB14)。
次に、モデル実行手段21は、現在実行中の基本ブロック中の変数の値を保持するとともに、変数対応情報を参照して、その変数に対応するソースプログラム30中の変数を特定し、その特定した変数の値として、保持した値をGUI表示手段23に供給する(図13のステップB15)。
次に、対応関係管理手段22は、表示更新のタイミングか否かを判定する(図13のステップB16)。この判定は、ステップB9の判定と同じである。
ステップB16で、表示更新のタイミングであると判定された場合は、対応関係管理手段22は、ステップB14で取得した通常動作状況に基づいて、実行位置履歴を更新するとともに、GUI表示手段23にて、実行したソースプログラム行数をGUI上にハイライト表示させるための表示処理を行わせる(図13のステップB17、B18)。GUI表示手段23は、ソースプログラムの実行状態として、対応関係管理手段22によって特定された命令文の行と、該命令文の変数と、該変数についてステップB8で取得した変数値とを関連付けて強調表示により表示する(図13のステップB19)。この表示処理の実行後、ステップB13の判定を行う。
以上のデバッグ処理においても、第1の実施形態の場合と同様な強調表示を行うことが可能である。ユーザは、強調表示のパターンの変化から、どのような順序でパイプライン動作が実行され、その実行過程で変数の値がどのように変化したかを判断することができる。よって、ユーザは、パイプライン処理を直感的かつ容易にデバッグすることができる。
(他の実施形態)
図14は、本発明の他の実施形態であるシンボリックデバッガの構成を示すブロック図である。
図14に示すように、本他の実施形態のシンボリックデバッガは、ソースプログラム40bの実行状態を表示する表示手段43と、ソースプログラム40bをハードウェアの動作として記述したハードウェア動作モデル40aを実行するモデル実行手段41と、モデル実行手段41によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて表示手段43による実行状態の表示を管理する対応関係管理手段42と、を有する。
ハードウェア動作モデル40aは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、ソースプログラム40b中のループ記述に対応する複数のステージからなるパイプライン動作が実行位置保持変数により識別される複数の基本ブロックにより記述されている。
対応関係管理手段42は、パイプライン動作の各ステージとソースプログラム40bの命令文の行との対応関係を示す行対応情報42aと、ソースプログラム40b中の変数とハードウェア動作モデル40a中の変数との対応関係を示す変数対応情報42bとを保持する。対応関係管理手段42は、実行位置保持変数に基づいて現在実行中の基本ブロックを特定する。現在実行中の基本ブロックがパイプライン動作である場合、対応関係管理手段42は、行対応情報42aを参照して、現在実行中の基本ブロックに記述されたステージに対応するソースプログラム40中の命令文の行を特定するとともに、変数対応情報42bを参照して、該特定した命令文に用いられた変数の値をモデル実行手段41による実行結果から取得する。
表示手段43は、液晶ディスプレイ等の表示デバイスを備えるものであって、例えば、第1および第2の実施形態におけるGUI表示手段より構成される。表示手段43は、ソースプログラム40の実行状態として、対応関係管理手段42によって特定された命令文の行と、該命令文の変数と、該変数について対応関係管理手段42によって取得された値とを関連付けて同一の強調表示形態により表示する。
対応関係管理手段42は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる。この強調表示形態として、第1および第2の実施形態における命令文の行や変数の強調表示の形態を用いてもよい。処理の流れを判別可能な複数の異なる強調表示のパターンとは、例えば図7〜図10に示したような表示パターンである。
本他の実施形態においても、第1および第2の実施形態と同様、強調表示のパターンの変化から、どのような順序でパイプライン動作が実行され、その実行過程で変数の値がどのように変化したかを判断することができる。よって、ユーザは、パイプライン処理を直感的かつ容易にデバッグすることができる。
本他の実施形態において、対応関係管理手段42が行対応情報42aを保持し、モデル実行手段41が変数対応情報42bを保持してもよい。この場合は、対応関係管理手段42は、実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックがパイプライン動作である場合に、行対応情報42aを参照して、現在実行中の基本ブロックに記述されたステージに対応するソースプログラム40中の命令文の行を特定する。モデル実行手段41は、変数対応情報42bを参照して、特定した命令文に用いられた変数の値を保持する。表示手段43は、ソースプログラム40の実行状態として、対応関係管理手段42によって特定された命令文の行と、該命令文の変数と、該変数についてモデル実行手段41にて保持した値とを関連付けて強調表示により表示する。そして、対応関係管理手段42は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる。
また、本他の実施形態において、パイプライン動作が複数のループ処理からなる場合に、同一ループ処理において強調表示の形態が同一とされるようにしてもよい。
以上説明した各実施形態のシンボリックデバッガは、プログラムに従って動作するコンピュータにて実現される。この場合、モデル実行手段、対応関係管理手段、表示手段(GUI表示手段など)は、コンピュータがプログラムを実行することで実現することが可能である。プログラムは、CD−ROMやDVD等の記録媒体で提供されてもよく、インターネット等のネットワークを通じて提供されてもよい。
以上説明した本発明のシンボリックデバッガは、動作合成技術を使ってシステムLSIを設計する場面において、設計者の仕様どおりの動作をしないケースに、設計者が記述したソースプログラムを見ながら不正動作する箇所を発見するといった用途に適用できる。また、並列コンパイラの最適化機能を使ったプログラムを作成する際に、設計者の仕様どおりに動作しないケースで、設計者の記述したソースプログラムを見ながら不正動作する箇所を発見するといった用途にも適用可能である。
1 コンピュータ
10 動作合成システム
11 合成用ハードウェア記述
12 ハードウェア動作モデル
13 シンボリックデバッガ用情報
13a 行対応情報
13b 変数対応情報
20 シンボリックデバッガ
21 モデル実行手段
22 対応関係管理手段
23 GUI表示手段
30 ソースプログラム

Claims (7)

  1. ソースプログラムの実行状態を表示する表示手段と、
    前記ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルを実行するモデル実行手段と、
    前記モデル実行手段によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて前記表示手段による実行状態の表示を管理する対応関係管理手段と、を有し、
    前記ハードウェア動作モデルは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、
    前記対応関係管理手段は、
    前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報と、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報とを保持し、
    前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記変数対応情報を参照して、該特定した命令文に用いられた変数の値を前記モデル実行手段による実行結果から取得し、
    前記表示手段は、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記対応関係管理手段によって取得された値とを関連付けて同一の強調表示形態により表示し、
    前記対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる、シンボリックデバッガ。
  2. ソースプログラムの実行状態を表示する表示手段と、
    前記ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルを実行するモデル実行手段と、
    前記モデル実行手段によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて前記表示手段による実行状態の表示を制御する対応関係管理手段と、を有し、
    前記ハードウェア動作モデルは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、
    前記対応関係管理手段は、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定し、
    前記モデル実行手段は、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、前記特定した命令文に用いられた変数の値を保持し、
    前記表示手段は、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記モデル実行手段にて保持した値とを関連付けて強調表示により表示し、
    前記対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる、シンボリックデバッガ。
  3. 前記パイプライン動作が複数のループ処理からなり、同一ループ処理において前記強調表示の形態が同一とされる、請求項1または2に記載のシンボリックデバッガ。
  4. 前記対応関係管理手段は、前記パイプライン動作の開始および終了とされる基本ブロックの実行位置保持変数の値を示すパイプライン情報をさらに保持し、前記現在実行中の基本ブロックの実行位置保持変数の値を前記モデル実行手段から取得し、前記パイプライン情報を参照して、該取得した実行位置保持変数の値に基づいて、前記現在実行中の基本ブロックがパイプライン動作であるか否かを判定する、請求項1から3のいずれか1項に記載のシンボリックデバッガ。
  5. ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、モデル実行手段が、前記ハードウェア動作モデルを実行し、
    対応関係管理手段が、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報と、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報とを保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記変数対応情報を参照して、該特定した命令文に用いられた変数の値を前記モデル実行手段による実行結果から取得し、
    表示手段が、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記対応関係管理手段によって取得された値とを関連付けて強調表示により表示し、
    前記対応関係管理手段が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる、シンボリックデバッグ方法。
  6. ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、モデル実行手段が、前記ハードウェア動作モデルを実行し、
    対応関係管理手段が、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定し、
    前記モデル実行手段が、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、前記特定した命令文に用いられた変数の値を保持し、
    表示手段が、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記モデル実行手段にて保持した値とを関連付けて強調表示により表示し、
    前記対応関係管理手段が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる、シンボリックデバッグ方法。
  7. ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、前記ハードウェア動作モデルを実行する第1の処理と、
    前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を参照して、前記特定した命令文に用いられた変数の値を前記第1の処理における実行結果から取得する第2の処理と、
    前記ソースプログラムの実行状態として、前記第2の処理にて特定された命令文の行と、該命令文の変数と、該変数について前記第2の処理によって取得された値とを関連付けて強調表示により表示する第3の処理と、
    処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる第4の処理とを、コンピュータに実行させるプログラム。
JP2009082212A 2009-03-30 2009-03-30 シンボリックデバッガ、方法およびプログラム Active JP5287427B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009082212A JP5287427B2 (ja) 2009-03-30 2009-03-30 シンボリックデバッガ、方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009082212A JP5287427B2 (ja) 2009-03-30 2009-03-30 シンボリックデバッガ、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2010237759A JP2010237759A (ja) 2010-10-21
JP5287427B2 true JP5287427B2 (ja) 2013-09-11

Family

ID=43092047

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009082212A Active JP5287427B2 (ja) 2009-03-30 2009-03-30 シンボリックデバッガ、方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5287427B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5939478B1 (ja) 2015-05-20 2016-06-22 富士ゼロックス株式会社 情報処理装置およびプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH086815A (ja) * 1994-06-21 1996-01-12 Mitsubishi Electric Corp デバッグ装置、コンパイラ及び統計解析装置
JP2003131902A (ja) * 2001-10-24 2003-05-09 Toshiba Corp ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム
WO2006022204A1 (ja) * 2004-08-23 2006-03-02 Pacific Design Inc. ソースプログラムの分析装置および方法

Also Published As

Publication number Publication date
JP2010237759A (ja) 2010-10-21

Similar Documents

Publication Publication Date Title
JP5648584B2 (ja) ソフトウェアアプリケーションのプロファイリング方法及び装置
US9037595B2 (en) Creating graphical models representing control flow of a program manipulating data resources
US8726226B2 (en) Integrated work lists for engineering project change management
EP3338179B1 (en) Graphical representation of data in a program code editor
US20140365990A1 (en) Software evaluation device and method
US8291372B2 (en) Creating graphical models representing control flow of a program manipulating data resources
JPH0778751B2 (ja) バイアスされた疑似ランダム・テスト・パターンを動的に生成する方法
JP2015043198A (ja) 解析システム、解析方法および解析プログラム
JP6258159B2 (ja) プログラム情報生成システム、方法、及びプログラム
JP2014510960A (ja) ツール・ジェネレータ
JP2011096107A (ja) 並列化方法、システム、及びプログラム
KR101232535B1 (ko) 가상 태스크를 이용한 멀티-코어의 성능 분석용 관계 모델링
Anzt et al. Towards continuous benchmarking: An automated performance evaluation framework for high performance software
JP2013008277A (ja) カバレッジ測定装置、方法およびプログラム
CN110554861B (zh) 具有编译和读取-评估-打印-循环操作的软件开发环境
Brinkmann et al. Task debugging with temanejo
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
JP4770657B2 (ja) パイプライン合成システム、方法及びプログラム
JP5287427B2 (ja) シンボリックデバッガ、方法およびプログラム
JP2005063136A (ja) 半導体集積回路の設計装置、設計方法、及び設計プログラム
JP4898365B2 (ja) 組み込み用プログラム開発装置、及びプログラム自動生成方法
JP2007080049A (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
JP6776914B2 (ja) 並列化方法、並列化ツール
JP4860564B2 (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
Speicher et al. Clone removal in Java programs as a process of stepwise unification

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130424

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130520

R150 Certificate of patent or registration of utility model

Ref document number: 5287427

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150