(57)【要約】【課題】パイプライン処理をユーザが直感的かつ容易にデバッグすることが可能なシンボリックデバッガを提供する。【解決手段】シンボリックデバッガは、表示手段と、ハードウェア動作モデルを実行するモデル実行手段と、その実行状態に応じて表示手段によるソースプログラムの実行状態の表示を管理する対応関係管理手段と、を有する。対応関係管理手段は、現在実行中の基本ブロックに記述されたステージに対応するソースプログラム中の命令文の行を特定し、該特定した命令文に用いられた変数の値をモデル実行手段から取得する。表示手段は、特定された命令文の行、変数、該変数の値を関連付けて同一の強調表示形態により表示する。対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる。【選択図】図１
2010237759.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムの実行状態を表示する表示手段と、
前記ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルを実行するモデル実行手段と、
前記モデル実行手段によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて前記表示手段による実行状態の表示を管理する対応関係管理手段と、を有し、
前記ハードウェア動作モデルは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、
前記対応関係管理手段は、
前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報と、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報とを保持し、
前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記変数対応情報を参照して、該特定した命令文に用いられた変数の値を前記モデル実行手段による実行結果から取得し、
前記表示手段は、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記対応関係管理手段によって取得された値とを関連付けて同一の強調表示形態により表示し、
前記対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる、シンボリックデバッガ。
【請求項２】
ソースプログラムの実行状態を表示する表示手段と、
前記ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルを実行するモデル実行手段と、
前記モデル実行手段によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて前記表示手段による実行状態の表示を制御する対応関係管理手段と、を有し、
前記ハードウェア動作モデルは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、
前記対応関係管理手段は、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定し、
前記モデル実行手段は、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、前記特定した命令文に用いられた変数の値を保持し、
前記表示手段は、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記モデル実行手段にて保持した値とを関連付けて強調表示により表示し、
前記対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる、シンボリックデバッガ。
【請求項３】
前記パイプライン動作が複数のループ処理からなり、同一ループ処理において前記強調表示の形態が同一とされる、請求項１または２に記載のシンボリックデバッガ。
【請求項４】
前記対応関係管理手段は、前記パイプライン動作の開始および終了とされる基本ブロックの実行位置保持変数の値を示すパイプライン情報をさらに保持し、前記現在実行中の基本ブロックの実行位置保持変数の値を前記モデル実行手段から取得し、前記パイプライン情報を参照して、該取得した実行位置保持変数の値に基づいて、前記現在実行中の基本ブロックがパイプライン動作であるか否かを判定する、請求項１から３のいずれか１項に記載のシンボリックデバッガ。
【請求項５】
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、モデル実行手段が、前記ハードウェア動作モデルを実行し、
対応関係管理手段が、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報と、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報とを保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記変数対応情報を参照して、該特定した命令文に用いられた変数の値を前記モデル実行手段による実行結果から取得し、
表示手段が、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記対応関係管理手段によって取得された値とを関連付けて強調表示により表示し、
前記対応関係管理手段が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる、シンボリックデバッグ方法。
【請求項６】
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、モデル実行手段が、前記ハードウェア動作モデルを実行し、
対応関係管理手段が、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定し、
前記モデル実行手段が、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、前記特定した命令文に用いられた変数の値を保持し、
表示手段が、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記モデル実行手段にて保持した値とを関連付けて強調表示により表示し、
前記対応関係管理手段が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる、シンボリックデバッグ方法。
【請求項７】
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、前記ハードウェア動作モデルを実行する第１の処理と、
前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を参照して、前記特定した命令文に用いられた変数の値を前記第１の処理における実行結果から取得する第２の処理と、
前記ソースプログラムの実行状態として、前記第２の処理にて特定された命令文の行と、該命令文の変数と、該変数について前記第２の処理によって取得された値とを関連付けて強調表示により表示する第３の処理と、
処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる第４の処理とを、コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア設計に用いられるデバッガに関し、特に、ソースコードの実行位置やソースコード上の変数値を表示可能なシンボリックデバッガに関する。
【背景技術】
【０００２】
Ｃ言語等のプログラム言語あるいはハードウェア記述言語を用いてハードウェアの動作を記述した動作記述からRTL（Register Transfer Level）記述を合成する動作合成システムが知られている。
【０００３】
動作合成システムの一例が、特許文献１に記載されている。この動作合成システムは、CDFG（Control Data Flow Graph）生成手段、スケジューリング手段、アロケーション手段、状態遷移生成手段およびRTL生成手段から構成されている。
【０００４】
CDFG手段は、Ｃ言語等の動作記述から、ループ記述であることを識別するためのループ情報を埋め込んだCDFGを生成する。スケジューリング手段は、生成したCDFGに基づいて所望の動作を実行する演算器数とステップ数を決定する。アロケーション手段は、変数や演算にレジスタや演算器を割り当てる。状態遷移生成手段は、スケジューリング時の情報を利用して状態遷移を生成するとともに、ループ記述をパイプライン化するために、パイプラインの制御変数を作成してループ記述をパイプライン動作可能な構成に変更する。RTL生成手段は、生成した状態遷移からRTL記述を生成する。
【０００５】
上記の動作合成システムでは、生成されたRTL記述は、ユーザが記述していないパイプライン制御用の変数を含む。このため、通常のRTL記述（ループ記述のパイプライン化が行われないもの）と同様なデバッグ手法では、プログラムを正確に検証することは困難である。
【０００６】
ソフトウェアのプログラム記述をコンパイラで機械語に変換する場合は、一般に、シンボリックデバッガが使われる。しかし、一般的に、コンパイラの最適化を利用した場合のシンボリックデバッグ機能を保証していないことが多い。例えば、ヒューレット・パッカー社のHP9000シリーズのHP/DDEデバッガのユーザーズ・ガイド（非特許文献１）には、「1つの変数の複数のコピーが存在することもあります。例えばループが最適化される場合です。このような場合、意味のある変数の値を取得するのはほとんど不可能となります。」と記されている。
【０００７】
特許文献２には、パイプライン実行状態を表示可能なソースコードデバッガが記載されている。このソースコードデバッガは、リソース情報獲得手段、リソース情報表示手段、ＩＳＳ制御手段、パイプライン情報表示手段、およびパイプライン情報獲得手段を有する。
【０００８】
ＩＳＳ制御手段が、プロセッサの命令セットシミュレータ（ＩＳＳ）における命令実行を中断させる。次に、リソース情報獲得手段が、ＩＳＳから実行中のプログラム（ソースコード）のアドレス情報や命令コード等を取得する。そして、リソース情報表示手段が、アドレス情報や命令コードの編集やプログラムのソースコード上でプログラムカウンタの値に対応する位置への矢印記号の付与等の表示編集処理を行う。
【０００９】
また、パイプライン情報獲得手段が、パイプラインの各ステージで実行中の命令のアドレス情報を取得する。そして、パイプライン情報表示手段が、ソースコード上で各アドレスに対応する位置にそれぞれの命令が実行されるステージに応じたマークを付与する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開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)
【発明の概要】
【発明が解決しようとする課題】
【００１２】
特許文献１に記載されているような動作合成システムでは、ソースプログラムで書かれた動作記述を自動で並列化するパイプライン処理が行われる。しかし、このパイプライン処理では、ループ文を含む動作記述を自動で並列化する場合に、ソースプログラム上のある変数は、合成後のハードウェア動作中に、複数の値を保持することになる。このような並列化された処理に対して、ユーザが直感的にデバッグすることは困難である。
【００１３】
ソフトウェアの場合、デバッグ時には最適化の処理を停止するなど、コンパイラのオプションを変えることでデバッグする手段が一般的であるが、ハードウェア設計者が、動作合成ツールを使う場合には、並列動作に起因するタイミングの問題など、最終的なハードウェア動作を再現できる形でデバッグすることが必要となるケースも多い。そのような場合、並列化等の最適化を抑止してシンボリックデバッグするという手段を用いることは困難である。
【００１４】
特許文献２に記載のソースコードデバッガにおいては、パイプラインの実行状態（実行中のプログラムのアドレス情報や命令コード等）を付加情報としてステージ別に表示する。これにより、ユーザは、パイプライン中の各命令の実行状況を的確に把握することができる。しかし、このソースコードデバッガも、パイプライン動作の進行状況に応じて、ステージの実行状態や変数の値を表示するようになっていないため、パイプライン処理をユーザが直感的にデバッグすることは困難である。
【００１５】
本発明の目的は、上記問題を解決し、パイプライン処理をユーザが直感的かつ容易にデバッグすることが可能な、シンボリックデバッガ、動作合成デバッグ方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、本発明の一態様であるシンボリックデバッガは、ソースプログラムの実行状態を表示する表示手段と、前記ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルを実行するモデル実行手段と、前記モデル実行手段によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて前記表示手段による実行状態の表示を管理する対応関係管理手段と、を有する。前記ハードウェア動作モデルは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されている。前記対応関係管理手段は、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報と、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報とを保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記変数対応情報を参照して、該特定した命令文に用いられた変数の値を前記モデル実行手段による実行結果から取得する。前記表示手段は、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記対応関係管理手段によって取得された値とを関連付けて同一の強調表示形態により表示する。前記対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる。
【００１７】
本発明の別の態様であるシンボリックデバッガは、ソースプログラムの実行状態を表示する表示手段と、前記ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルを実行するモデル実行手段と、前記モデル実行手段によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて前記表示手段による実行状態の表示を制御する対応関係管理手段と、を有する。前記ハードウェア動作モデルは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されている。前記対応関係管理手段は、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定する。前記モデル実行手段は、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、前記特定した命令文に用いられた変数の値を保持する。前記表示手段は、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記モデル実行手段にて保持した値とを関連付けて強調表示により表示する。前記対応関係管理手段は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる。
【００１８】
本発明の一態様であるシンボリックデバッグ方法は、
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、モデル実行手段が、前記ハードウェア動作モデルを実行し、
対応関係管理手段が、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報と、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報とを保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記変数対応情報を参照して、該特定した命令文に用いられた変数の値を前記モデル実行手段による実行結果から取得し、
表示手段が、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記対応関係管理手段によって取得された値とを関連付けて強調表示により表示し、
前記対応関係管理手段が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させることを特徴とする。
【００１９】
本発明の別の態様であるシンボリックデバッグ方法は、
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、モデル実行手段が、前記ハードウェア動作モデルを実行し、
対応関係管理手段が、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を保持し、前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定し、
前記モデル実行手段が、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、前記特定した命令文に用いられた変数の値を保持し、
表示手段が、前記ソースプログラムの実行状態として、前記対応関係管理手段によって特定された命令文の行と、該命令文の変数と、該変数について前記モデル実行手段にて保持した値とを関連付けて強調表示により表示し、
前記対応関係管理手段が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させることを特徴とする。
【００２０】
本発明のプログラムは、
ソースプログラムをハードウェアの動作として記述したハードウェア動作モデルが特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、前記ソースプログラム中のループ記述に対応する複数のステージからなるパイプライン動作が前記実行位置保持変数により識別される複数の基本ブロックにより記述されており、前記ハードウェア動作モデルを実行する第１の処理と、
前記実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックが前記パイプライン動作である場合に、前記複数のステージと前記ソースプログラムの命令文の行との対応関係を示す行対応情報を参照して、前記現在実行中の基本ブロックに記述されたステージに対応する前記ソースプログラム中の命令文の行を特定するとともに、前記ソースプログラム中の変数と前記ハードウェア動作モデル中の変数との対応関係を示す変数対応情報を参照して、前記特定した命令文に用いられた変数の値を前記第１の処理における実行結果から取得する第２の処理と、
前記ソースプログラムの実行状態として、前記第２の処理にて特定された命令文の行と、該命令文の変数と、該変数について前記第２の処理によって取得された値とを関連付けて強調表示により表示する第３の処理と、
処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、前記パイプライン動作の進行状況に応じて前記強調表示形態をステージ別に変化させる第４の処理とを、コンピュータに実行させることを特徴とする。
【発明の効果】
【００２１】
本発明によれば、強調表示のパターンの変化から、どのような順序でパイプライン動作が実行され、その実行過程で変数の値がどのように変化したかを判断することができる。よって、ユーザは、パイプライン処理を直感的かつ容易にデバッグすることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。
【図２】図１に示す動作合成用シンボリックデバッガにて行われるシンボリックデバッグ処理の一手順を示すフローチャートである。
【図３】ソースプログラムの一例を示す模式図である。
【図４】図３に示すソースプログラムに基づいて作成されたシミュレーション用のハードウェア動作モデルの一例を示す模式図である。
【図５】図３に示すソースプログラムと図４に示すハードウェア動作モデルの間の行対応情報の一例を示す模式図である。
【図６】図３に示すソースプログラムと図４に示すハードウェア動作モデルの間の変数対応情報の一例を示す模式図である。
【図７】パイプライン動作の進行状況に応じたステージ別強調表示形態の一例を示す模式図である。
【図８】パイプライン動作の進行状況に応じたステージ別強調表示形態の別の例を示す模式図である。
【図９】パイプライン動作の進行状況に応じた変数のステージ別強調表示形態の一例を示す模式図である。
【図１０】パイプライン動作の進行状況に応じた変数のステージ別強調表示形態の別の例を示す模式図である。
【図１１】非パイプライン動作時の表示形態の一例を示す模式図である。
【図１２】本発明の第２の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。
【図１３】図１２に示す動作合成用シンボリックデバッガにて行われるシンボリックデバッグ処理の一手順を示すフローチャートである。
【図１４】本発明の他の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。
【発明を実施するための形態】
【００２３】
次に、本発明の実施形態について図面を参照して説明する。
【００２４】
（第１の実施形態）
図１は、本発明の第１の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。
【００２５】
図１を参照すると、動作合成用シンボリックデバッガは、プログラム制御により動作するコンピュータ１より構成される。コンピュータ１は、中央処理装置、プロセッサ、データ処理装置等として使用されるものであって、その主要部は、動作合成システム１０およびシンボリックデバッガ２０からなる。動作合成システム１０およびシンボリックデバッガ２０はいずれも、プログラムにより実現可能である。
【００２６】
デバック対象であるソースプログラム３０が、動作合成システム１０およびシンボリックデバッガ２０に供給される。ソースプログラム３０は、Ｃ言語等の高級言語を用いてハードウェアの動作を記述した動作記述（アルゴリズム記述）であって、メモリ上に格納されている。
【００２７】
動作合成システム１０は、ソースプログラム３０に基づき、合成用ハードウェア記述１１、シミュレーション用のハードウェア動作モデル１２およびシンボリックデバッガ用情報１３を生成する。
【００２８】
ハードウェア動作モデル１２は、入力ソースコードにサイクル情報を付加した段階でプログラムコードとして生成される。具体的には、ハードウェア動作モデル１２は、当該モデルを複数の基本ブロックに区画するための特定の記述（例えば「Branch」）を含み、それぞれの基本ブロックは、その特定の記述を用いた実行位置保持変数、例えば「BranchＩＤ」により識別される。この実行位置保持変数に基づき、ハードウェア動作モデル１２を実行した場合の現在の実行位置を特定することができる。また、ソースプログラム３０のループ記述を複数のステージからなるパイプライン動作で定義し、このパイプライン動作を、実行位置保持変数により識別される複数の基本ブロックで記述する。このようなハードウェア動作モデル１２をコンパイルすることで、シンボリックデバッガ２０のモデル実行手段２１を実現する。
【００２９】
ハードウェア動作モデル１２の生成後、ソースプログラム３０を構造記述に変換することで合成用ハードウェア記述１１が生成される。
【００３０】
シンボリックデバッガ用情報１３は、行対応情報１３ａおよび変数対応情報１３ｂを含む。行対応情報１３ａは、ハードウェア動作モデル１２の各基本ブロックがソースプログラム３０のどの記述行に対応するかを示す第１の行対応情報と、ハードウェア動作モデル１２の各ステージがソースプログラム３０のどの記述行に対応するかを示す第２の行対応情報とを含む。より具体的には、第１の行対応情報は、実行位置保持変数とソースプログラム３０の記述行との対応関係を示し、第２の行対応情報は、ステージ識別番号とソースプログラム３０の記述行との対応関係を示す。
【００３１】
さらに、行対応情報１３ａは、パイプライン動作情報を含む。パイプライン動作情報は、パイプライン動作の開始を示す基本ブロックの実行位置保持変数およびパイプライン動作の終了を示す基本ブロックの実行位置保持変数を含む。現在位置情報（実行位置保持変数）の値が、パイプライン動作の開始の基本ブロックの実行位置保持変数と一致すると、パイプライン動作の開始と判定することができる。現在位置情報（実行位置保持変数）の値が、パイプライン動作の終了の基本ブロックの実行位置保持変数と一致すると、パイプライン動作の終了と判定することができる。
【００３２】
行対応情報１３ａは、次のように作成することができる。まず、構文解析により、ハードウェア動作モデル１２から、当該モデルを複数の基本ブロックに区画する特定の記述（「Branch」）を抽出し、その抽出した特定の記述が、ソースプログラム３０のどの命令文（ソースコード行数）に対応するかを調べる。そして、特定の記述を識別する実行位置保持変数（「BranchＩＤ」）とそれに対応する命令文の行番号とを対応付けることで行対応情報１３ａを得る。
【００３３】
変数対応情報１３ｂは、ソースプログラム３０上の変数とハードウェア動作モデル１２上の変数との対応関係を示す情報と、ハードウェア動作モデル１２上の変数と基本ブロックとの対応関係を示す情報と、参照を開始する基本ブロックおよび参照を終える基本ブロックの情報（実行位置保持変数）とを含む。
【００３４】
変数対応情報１３ｂは、次のように作成することができる。まず、ハードウェア動作モデル１２の変数（レジスタ代入記述）がどの基本ブロック（「Branch」）に属するかを調べ、また、その変数（レジスタ代入記述）がソースコード上のどの命令文に対応するのかを調べ、その命令文の代入変数が対応するレジスタを参照開始の基本ブロックの情報（「BranchＩＤ」）とする。さらに、ハードウェア動作モデル１２のレジスタ代入記述からその代入変数の最後の参照記述を取得する。そして、その最後の参照記述がどの基本ブロック（「Branch」）に属するかを調べ、また、その最後の参照記述がソースコード上のどの命令文に対応するのかを調べ、その命令文の代入変数が対応するレジスタを参照終了の基本ブロックの情報（「BranchＩＤ」）とする。これらの情報により変数対応情報１３ｂを得る。なお、パイプライン処理については、代入および参照をしたステージの情報を変数対応情報１３ｂに追加する。
【００３５】
シンボリックデバッガ２０は、モデル実行手段２１、対応関係管理手段２２およびＧＵＩ（Graphical User Interface）表示手段２３からなる。動作合成システム１０で生成されたハードウェア動作モデル１２は、モデル実行手段２１に供給される。動作合成システム１０で生成されたシンボリックデバッガ用情報１３は、対応関係管理手段２２に供給される。
【００３６】
モデル実行手段２１は、ハードウェア動作モデル１２をコンパイルして実行形式に変換し、その変換されたハードウェア動作モデル１２に基づくシミュレーションを実行する。このシミュレーションの実行過程において、モデル実行手段２１は、現在の実行位置を特定するための基本ブロックの識別番号（ＩＤ番号）を実行位置情報として対応関係管理手段２２に供給する。さらに、モデル実行手段２１は、パイプライン動作の開始および終了、パイプライン動作状況等の情報を対応関係管理手段２２に供給する。
【００３７】
対応関係管理手段２２は、動作合成システム１０からのシンボリックデバッガ用情報１３（行対応情報１３ａ、変数対応情報１３ｂ）を保持する。対応関係管理手段２２は、シンボリックデバッガ用情報１３を参照して、モデル実行手段２１から取得した実行位置情報を実行ソースプログラムの行数に変換して、その情報をＧＵＩ表示手段２３に供給する。また、対応関係管理手段２２は、モデル実行手段２１から取得したハードウェア動作モデル１２上の変数値をソースプログラム３０中の変数値に変換し、その情報を保持するとともにＧＵＩ表示手段２３に供給する。
【００３８】
ＧＵＩ表示手段２３は、対応関係管理手段２２から供給された変数値および実行行をＧＵＩ表示する。このＧＵＩ表示では、例えば、現在実行中の基本ブロックまでの一連の処理に係る複数の基本ブロックに関するデータフローが、時間的な変化を基本ブロック単位（パイプライン動作の場合はステージ単位）で判別可能な表示形態で表示される。
【００３９】
次に、本実施形態の動作合成用シンボリックデバッガに行われるシンボリックデバッグ処理について具体的に説明する。
【００４０】
図２に、そのシンボリックデバッグ処理の一手順を示す。図２を参照すると、まず、ソースプログラム３０が、動作合成システム１０およびシンボリックデバッガ２０に供給される。動作合成システム１０が、入力されたソースプログラム３０に基づいて、合成用ハードウェア記述１１、シミュレーション用のハードウェア動作モデル１２およびシンボリックデバッガ用情報１３（行対応情報１３ａ、変数対応情報１３ｂ）を生成する。
【００４１】
図３に、ソースプログラムの一例を示す。このソースプログラムは、ループ記述を含むものであって、各命令文には、それぞれの行を識別するための行数（行番号）が付与されている。ここでは、ソースプログラムのforループを４ステージ構成でパイプライン化した例が示されている。
【００４２】
図４に、図３に示したソースプログラムに基づいて作成されたシミュレーション用のハードウェア動作モデルの一例を示す。このハードウェア動作モデルは、ソースプログラムの“for”ループを４ステージ構成でパイプライン化した場合の動作モデルである。各ステージの動作モデルは、実行位置保持変数「branchＩＤ」により識別される。例えば、「stage１」に対応する基本ブロックは、実行位置保持変数「branchＩＤ＝１」により識別される。これと同様に、「stage２」、「stage３」、「stage３」の各ステージに対応する基本ブロックはそれぞれ、「branchＩＤ＝２」、「branchＩＤ＝３」、「branchＩＤ＝４」により識別される。
【００４３】
図５に、図３に示したソースプログラムと図４に示したハードウェア動作モデルの間の行対応情報の一例を示す。この行対応情報は、ハードウェア動作モデル上の実行位置保持変数とソースプログラムの記述行との対応関係を示す情報（一般行対応情報）と、ハードウェア動作モデル上のステージ識別番号とソースプログラムの記述行との対応関係を示す情報（ステージ行対応情報）とを含む。さらに、行対応情報は、パイプライン動作情報を含む。パイプライン動作情報は、パイプライン動作開始の基本ブロックを示す実行位置保持変数の値「Loop-start: branchＩＤ 1」と、パイプライン動作終了の基本ブロックを示す実行位置保持変数の値「Loop-end: branchＩＤ ９」とを含む。
【００４４】
図６に、図３に示したソースプログラムと図４に示したハードウェア動作モデルの間の変数対応情報の一例を示す。変数対応情報は、ソースプログラム上の変数とハードウェア動作モデル上の変数との対応関係を示す情報と、ハードウェア動作モデル上の変数と基本ブロックとの対応関係を示す情報と、参照を開始する基本ブロックおよび参照を終える基本ブロックの情報（実行位置保持変数）とを含む。図６に示す例では、ソースコード中の変数ｉは、ハードウェア動作モデルの「branchＩＤ＝１」で、レジスタ「ＲＧ_ｉ」の値を持ち、「branchＩＤ＝２」で、レジスタ「ＲＧ_ｉ」の値を持ち、「branchＩＤ＝３」で、レジスタ「ＲＧ_ｉ_１」の値を持つ。変数ａ、ｃ、ｄ、ｅについても、「branchＩＤ」毎に同様な関係付けがなされている。このような変数対応情報を参照して、「branchＩＤ」の値が変わる毎に、変数値の更新を行う。
【００４５】
以下、図１〜図６を参照して動作説明を行う。
【００４６】
シンボリックデバッガ２０にて、モデル実行手段２１が、動作合成システム１０からハードウェア動作モデル１２を読み込み、そのハードウェア動作モデル１２をコンパイルして実行形式に変換する（図２のステップＡ０）。
【００４７】
次に、対応関係管理手段２２が、動作合成システム１０からシンボリックデバッガ用情報１３を読み込むとともに、ＧＵＩ表示手段２３が、入力されたソースプログラム３０の内容等を含む画面をＧＵＩ上に表示する（図２のステップＡ１）。この表示画面には、デバッグの開始および終了を示すボタン（コマンド入力用ボタン）が用意されており、ユーザは、ＧＵＩを通じて、それらボタンのうちの任意のボタンを選択することができる。
【００４８】
次に、ＧＵＩ表示手段２３が、デバッグの開始を示すボタンを選択するためのコマンド入力を受け付けると（図２のステップＡ２）、モデル実行手段２１が、ステップＡ０で実行形式に変換されたハードウェア動作モデル１２に基づくシミュレーションを実行する（図２のステップＡ３）。具体的には、モデル実行手段２１は、図４に示したハードウェア動作モデルに基づくシミュレーションを実行する。
【００４９】
シミュレーション開始後、対応関係管理手段２２が、モデル実行手段２１から供給される実行位置情報の更新がなされたか否かを判定する（図２のステップＡ４）。具体的には、図４に示したハードウェア動作モデルにおいて、モデル実行手段２１は、「branchＩＤ」で識別される基本ブロックの開始時に、開始した基本ブロックの「branchＩＤ」の値を実行位置情報として対応関係管理手段２２に供給する。対応関係管理手段２２は、モデル実行手段２１から「branchＩＤ」の値を受信すると、実行位置情報の更新がなされたと判定する。実行位置情報の更新がなされるまで、ステップＡ３の処理を継続する。
【００５０】
実行位置情報の更新がなされた場合は、対応関係管理手段２２は、モデル実行手段２１から実行位置情報として取得した「branchＩＤ」の値を履歴として保持する(図２のステップＡ５)。そして、対応関係管理手段２２は、シンボリックデバッガ用情報１３の行対応情報１３ａに含まれているパイプライン動作情報を参照し、その取得した「branchＩＤ」の値により特定される現在実行中の基本ブロックがパイプライン動作範囲内の基本ブロックであるか否かを判定する（図２のステップＡ６）。
【００５１】
現在実行中の基本ブロックがパイプライン動作範囲内の基本ブロックである場合は、対応関係管理手段２２は、モデル実行手段２１からパイプライン動作状況を取得する（図２のステップＡ７）。具体的には、対応関係管理手段２２は、シンボリックデバッガ用情報１３の行対応情報１３ａに含まれているステージ行対応情報を参照し、ステップＡ５で取得した「branchＩＤ」の値により特定される現在実行中の基本ブロックのステージがソースコード上のどの行に対応するかを調べる。
【００５２】
次に、対応関係管理手段２２は、シンボリックデバッガ用情報１３の変数対応情報１３ｂを参照し、ステップＡ５で取得した「branchＩＤ」の値からソースプログラム３０中の変数を特定し、その特定した変数に対して、参照開始／参照終了の情報が保持されているか否かを調べる。
【００５３】
具体的には、対応関係管理手段２２は、現在位置情報として取得した「branchＩＤ」の値が変数対応情報１３ｂの「begin」の「branchＩＤ」の値と一致するソースプログラム上の変数の値を取得する。また、対応関係管理手段２２は、現在位置情報として取得した「branchＩＤ」の値が変数対応情報１３ｂの「end」の「branchＩＤ」の値と一致するソースプログラム上の変数について、その値を無効とする。例えば、以下のプログラムにおいて、参照される最後の記述である「out2=x;--(3)」の実行後、変数ｘの値は無効とされる。
＜プログラム＞
x=a+b;   --(1)
out2=x;  --(2)
out2=x;  --(3)
…;      --(4)
x=c+d;   --(5)
次に、対応関係管理手段２２は、表示更新のタイミングか否かを判定する（図２のステップＡ９）。ここでは、１サイクル毎の表示更新を行うものとしており、対応関係管理手段２２は、サイクル周期に基づき、表示更新の有無を判定する。なお、表示更新は、別のタイミング、例えばハードウェア動作モデルの１行を実行する毎に実行されてもよい。表示更新のタイミングでない場合は、ステップＡ３の処理に戻る。
【００５４】
ステップＡ９で、表示更新のタイミングであると判定された場合は、対応関係管理手段２２は、ステップＡ７で取得したパイプライン動作状況に基づいて、実行位置履歴を更新するとともに、ＧＵＩ表示手段２３にて、実行したソースプログラム行数をＧＵＩ上にハイライト表示させるための表示処理を行わせる(図２のステップＡ１０、Ａ１１)。また、対応関係管理手段２２は、ステップＡ８で取得した変数値に基づき、ＧＵＩ表示手段２３にて、その変数値をＧＵＩ上に表示させるための表示処理を行わせる（図２のステップＡ１２）。変数値が無効である場合は、表示を無効にするための処理（表示を消したり、表示をグレーアウトしたりするなどの処理）を実行する。
【００５５】
表示処理の実行後、対応関係管理手段２２は、指定時間が経過した否かの判定を行う（図２のステップＡ１３）。具体的には、対応関係管理手段２２は、コマンド入力時点からの時間を計測するタイマーを備え、このタイマーによる計測時間が指定時間に到達した否かを判定する。指定時間を経過した場合は、ステップＡ２に戻り、指定時間を経過していない場合は、ステップＡ３に戻る。
【００５６】
ステップＡ６で、現在実行中の基本ブロックがパイプライン動作範囲内の基本ブロックでない場合は、対応関係管理手段２２は、モデル実行手段２１から通常動作状況を取得する（図２のステップＡ１４）。具体的には、対応関係管理手段２２は、シンボリックデバッガ用情報１３の行対応情報１３ａに含まれている一般行対応情報を参照し、ステップＡ５で取得した「branchＩＤ」の値により特定される現在実行中の基本ブロックがソースコード上のどの行に対応するかを調べる。
【００５７】
次に、対応関係管理手段２２は、シンボリックデバッガ用情報１３の変数対応情報１３ｂを参照し、ステップＡ５で取得した「branchＩＤ」の値からソースプログラム３０中の変数を特定し、その特定した変数に対応するレジスタ値を取得する（図２のステップＡ１５）。
【００５８】
次に、対応関係管理手段２２は、表示更新のタイミングか否かを判定する（図２のステップＡ１６）。この判定は、ステップＡ９の判定と同じである。
【００５９】
ステップＡ１６で、表示更新のタイミングであると判定された場合は、対応関係管理手段２２は、ステップＡ１４で取得した通常動作状況に基づいて、実行位置履歴を更新するとともに、ＧＵＩ表示手段２３にて、実行したソースプログラム行数をＧＵＩ上にハイライト表示させるための表示処理を行わせる(図２のステップＡ１７、Ａ１８)。また、対応関係管理手段２２は、ステップＡ１５で取得した変数値に基づき、ＧＵＩ表示手段２３にて、その変数値をＧＵＩ上に表示させるための表示処理を行わせる（図２のステップＡ１９）。この表示処理の実行後、ステップＡ１３の判定を行う。
【００６０】
上述したデバッグ処理によれば、対応関係管理手段２２が、実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、現在実行中の基本ブロックがパイプライン動作である場合に、行対応情報１３ａを参照して、現在実行中の基本ブロックに記述されたステージに対応するソースプログラム中の命令文の行を特定するとともに、変数対応情報１３ｂを参照して、該特定した命令文に用いられた変数の値をモデル実行手段２１による実行結果から取得する。ＧＵＩ表示手段２３が、ソースプログラムの実行状態として、対応関係管理手段２２によって特定された命令文の行と、該命令文の変数と、該変数について対応関係管理手段２２によって取得された値とを関連付けて同一の強調表示形態により表示する。そして、対応関係管理手段２２が、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる。
【００６１】
図７に、パイプライン動作の進行状況に応じたステージ別強調表示形態の一例を示す。この例では、ソースプログラムの命令文の行毎に、パイプライン動作のステージ識別番号が付与されており、現在実行中のステージが同一の強調表示形態で示されている。また、複数の強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる様子が示されている。
【００６２】
例えば、第１乃至第４ステージからなるパイプライン処理において、強調表示のパターンを赤色、黄色、緑色、青色からなる４つの表示色のパターンとする。赤色パターンが現在実行中であることを示す。黄色パターンは１つ前に実行されたものを示し、緑色パターンが２つ前に実行されたものを示し、青色パターンが３つ前に実行されたものを示す。第１ステージから第２ステージに移ると、第２のステージの表示形態が赤色パターンとされ、第１ステージの表示形態は、赤色パターンから黄色パターンに変更される。ユーザは、この強調表示のパターンの変化からどのような順序でパイプライン動作が実行されたかを判断することができる。
【００６３】
図８に、パイプライン動作の進行状況に応じたステージ別強調表示形態の別の例を示す。この例では、ステージ識別番号毎にソースプログラムの命令文が表示されており、それぞれの命令文の実行状況が時間軸とともに示されている。ループカウンタ「i」の値毎に、色分けされている。各ステージにおいて、「i」の値が同一のループ動作については、同一の強調表示形態とされている。例えば、ループカウンタ「i」が「3」のループ動作を青色表示とする場合、４サイクル目に第１ステージが青色表示とされ、５サイクル目に第２ステージが青色表示とされ、６サイクル目に第３ステージが青色表示とされる。この青色表示の変化に基づき、どのような順序でパイプライン動作が実行されたかを判断することができる。
【００６４】
図９に、パイプライン動作の進行状況に応じた変数のステージ別強調表示形態の一例を示す。この例では、ソースプログラムの変数が表示される第１の欄とその変数の値が表示される第２の欄が設けられている。第１の欄において、変数毎にステージ識別番号が付与されている。第２の欄において、変数毎に値が強調表示されるようになっており、その強調表示の形態が、パイプライン動作の進行状況に応じて変化する。同一ステージであっても、変数が複数の値をとる。例えば、「i(stage1)」は「３」および「４」の値をとる。この場合は、「３」と「４」の強調表示は同一の表示パターンで表示される。
【００６５】
図１０に、パイプライン動作の進行状況に応じた変数のステージ別強調表示形態の別の例を示す。この例では、ステージ識別番号毎に変数が表示されており、それぞれの変数の値の変化（保持状況）が時間軸とともに示されている。具体的には、ループカウンタ「i」の値毎に、色分けされている。各ステージにおいて、同一のループ動作については、同一の強調表示形態とされている。したがって、強調表示形態の変化に基づき、どのような順序でパイプライン動作が実行されたかを判断することができる。例えば、ループカウンタ「i」が「３」のときのループ動作を青色表示とすると、青色の変数値を追いかけることで、変数の値がどのように変化したを理解することができる。具体的には、第３ステージの「d=a+c;」の結果は、青色表示の「c:8」と「a:5」の加算の結果として「d:13」が得られていることが分かる。このように、各変数が、ソースプログラム上のデータの流れに対応して、どのように値が変化していくかを理解することができる。
【００６６】
図７または図８に示した表示形態と図９または図１０に示した表示形態とを連動させることが望ましい。この場合、両表示形態の間において、対応するステージの強調表示のパターンを同じにする。これにより、ユーザは、強調表示のパターンの変化から、どのような順序でパイプライン動作が実行され、その実行過程で変数の値がどのように変化したかを判断することができる。よって、ユーザは、パイプライン処理を直感的かつ容易にデバッグすることができる。
【００６７】
図１１に、非パイプライン動作時の表示形態の一例を示す。この例では、現在実行中の基本ブロックに対応するソースプログラム中の命令文の行が強調表示されている。この強調表示により、ユーザは、現在、ソースプログラムのどの命令文が実行されているのかを判断することができる。
【００６８】
図７から図１１に示した例において、強調表示のパターンとして、表示色が異なるパターン、網掛け等の面種が異なるパターン、輝度レベルの異なるパターン、これらパターンのうちの２つ以上の組み合わせからなるパターンなどを用いることができる。
【００６９】
（第２の実施形態）
図１２は、本発明の第２の実施形態である動作合成用シンボリックデバッガの構成を示すブロック図である。
【００７０】
本実施形態の動作合成用シンボリックデバッガの主要部は図１に示した構成と基本的に同じであるが、モデル実行手段２１および対応関係管理手段２２の動作の一部が第１の実施形態と異なる。説明を簡単化するため、以下では、第１の実施形態と異なる部分を中心に説明する。
【００７１】
動作合成システム１０は、シミュレーション用のハードウェア動作モデル１２をモデル実行手段２１に供給するとともに、シンボリックデバッガ用情報１３として行対応情報１３ａを対応関係管理手段２２に供給する。
【００７２】
シンボリックデバッガ２０では、モデル実行手段２１は、ハードウェア動作モデル１２をコンパイルして実行形式に変換し、その変換されたハードウェア動作モデル１２に基づくシミュレーションを実行する。このシミュレーションの実行過程において、モデル実行手段２１は、現在の実行位置を特定するための基本ブロックの識別番号（ＩＤ番号）を実行位置情報として対応関係管理手段２２に供給する。さらに、モデル実行手段２１は、パイプライン動作の開始および終了、パイプライン動作状況等の情報を対応関係管理手段２２に供給する。
【００７３】
対応関係管理手段２２は、動作合成システム１０からのシンボリックデバッガ用情報１３（行対応情報１３ａ）を保持する。対応関係管理手段２２は、行対応情報１３ａを参照して、モデル実行手段２１から取得した実行位置情報を実行ソースプログラムの行数に変換し、その情報をＧＵＩ表示手段２３に供給する。また、対応関係管理手段２２は、モデル実行手段２１から取得した
また、モデル実行手段２１は、ソースプログラム３０中の変数とハードウェア動作モデル中の変数との対応関係を示す変数対応情報を保持し、該変数対応情報を参照して、ハードウェア動作モデル１２上の変数値をソースプログラム３０中の変数値に変換し、その情報を保持する。この保持した変数値は、対応関係管理手段２２によって特定した命令文に用いられた変数の値として、モデル実行手段２１からＧＵＩ表示手段２３に供給される。
【００７４】
図１３に、図１２に示した動作合成用シンボリックデバッガにおけるシンボリックデバッグ処理の一手順を示す。図１３において、ステップＢ０〜Ｂ７、Ｂ１４の処理は図２に示したステップＡ０〜Ａ７、Ａ１４の処理と基本的に同じである。
【００７５】
ステップＢ７でパイプライン動作状況を取得した後、モデル実行手段２１が、現在実行中の基本ブロック中の変数の値を保持するとともに、変数対応情報を参照して、その変数に対応するソースプログラム３０中の変数を特定し、その特定した変数の値として、保持した値をＧＵＩ表示手段２３に供給する。
【００７６】
次に、対応関係管理手段２２は、表示更新のタイミングか否かを判定する（図１３のステップＢ９）。表示更新のタイミングでない場合は、ステップＢ３の処理に戻る。
【００７７】
ステップＢ９で、表示更新のタイミングであると判定された場合は、対応関係管理手段２２は、ステップＢ７で取得したパイプライン動作状況に基づいて、実行位置履歴を更新するとともに、ＧＵＩ表示手段２３にて、実行したソースプログラム行数をＧＵＩ上にハイライト表示させるための表示処理を行わせる(図１３のステップＢ１０、Ｂ１１)。ＧＵＩ表示手段２３は、ソースプログラムの実行状態として、対応関係管理手段２２によって特定された命令文の行と、該命令文の変数と、該変数についてステップＢ８で取得した変数値とを関連付けて強調表示により表示する（図２のステップＢ１２）。変数値が無効である場合は、表示を無効にするための処理（表示を消したり、表示をグレーアウトしたりするなどの処理）を実行する。
【００７８】
表示処理の実行後、対応関係管理手段２２は、指定時間が経過した否かの判定を行う（図１３のステップＢ１３）。指定時間を経過した場合は、ステップＢ２に戻り、指定時間を経過していない場合は、ステップＢ３に戻る。
【００７９】
ステップＢ６で、現在実行中の基本ブロックがパイプライン動作範囲内の基本ブロックでない場合は、対応関係管理手段２２は、モデル実行手段２１から通常動作状況を取得する（図１３のステップＢ１４）。
【００８０】
次に、モデル実行手段２１は、現在実行中の基本ブロック中の変数の値を保持するとともに、変数対応情報を参照して、その変数に対応するソースプログラム３０中の変数を特定し、その特定した変数の値として、保持した値をＧＵＩ表示手段２３に供給する（図１３のステップＢ１５）。
【００８１】
次に、対応関係管理手段２２は、表示更新のタイミングか否かを判定する（図１３のステップＢ１６）。この判定は、ステップＢ９の判定と同じである。
【００８２】
ステップＢ１６で、表示更新のタイミングであると判定された場合は、対応関係管理手段２２は、ステップＢ１４で取得した通常動作状況に基づいて、実行位置履歴を更新するとともに、ＧＵＩ表示手段２３にて、実行したソースプログラム行数をＧＵＩ上にハイライト表示させるための表示処理を行わせる(図１３のステップＢ１７、Ｂ１８)。ＧＵＩ表示手段２３は、ソースプログラムの実行状態として、対応関係管理手段２２によって特定された命令文の行と、該命令文の変数と、該変数についてステップＢ８で取得した変数値とを関連付けて強調表示により表示する（図１３のステップＢ１９）。この表示処理の実行後、ステップＢ１３の判定を行う。
【００８３】
以上のデバッグ処理においても、第１の実施形態の場合と同様な強調表示を行うことが可能である。ユーザは、強調表示のパターンの変化から、どのような順序でパイプライン動作が実行され、その実行過程で変数の値がどのように変化したかを判断することができる。よって、ユーザは、パイプライン処理を直感的かつ容易にデバッグすることができる。
【００８４】
（他の実施形態）
図１４は、本発明の他の実施形態であるシンボリックデバッガの構成を示すブロック図である。
【００８５】
図１４に示すように、本他の実施形態のシンボリックデバッガは、ソースプログラム４０ｂの実行状態を表示する表示手段４３と、ソースプログラム４０ｂをハードウェアの動作として記述したハードウェア動作モデル４０ａを実行するモデル実行手段４１と、モデル実行手段４１によるハードウェア動作モデルの実行状態を監視し、該実行状態に応じて表示手段４３による実行状態の表示を管理する対応関係管理手段４２と、を有する。
【００８６】
ハードウェア動作モデル４０ａは、特定の記述を含む実行位置保持変数により識別される複数の基本ブロックからなり、ソースプログラム４０ｂ中のループ記述に対応する複数のステージからなるパイプライン動作が実行位置保持変数により識別される複数の基本ブロックにより記述されている。
【００８７】
対応関係管理手段４２は、パイプライン動作の各ステージとソースプログラム４０ｂの命令文の行との対応関係を示す行対応情報４２ａと、ソースプログラム４０ｂ中の変数とハードウェア動作モデル４０ａ中の変数との対応関係を示す変数対応情報４２ｂとを保持する。対応関係管理手段４２は、実行位置保持変数に基づいて現在実行中の基本ブロックを特定する。現在実行中の基本ブロックがパイプライン動作である場合、対応関係管理手段４２は、行対応情報４２ａを参照して、現在実行中の基本ブロックに記述されたステージに対応するソースプログラム４０中の命令文の行を特定するとともに、変数対応情報４２ｂを参照して、該特定した命令文に用いられた変数の値をモデル実行手段４１による実行結果から取得する。
【００８８】
表示手段４３は、液晶ディスプレイ等の表示デバイスを備えるものであって、例えば、第１および第２の実施形態におけるＧＵＩ表示手段より構成される。表示手段４３は、ソースプログラム４０の実行状態として、対応関係管理手段４２によって特定された命令文の行と、該命令文の変数と、該変数について対応関係管理手段４２によって取得された値とを関連付けて同一の強調表示形態により表示する。
【００８９】
対応関係管理手段４２は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる。この強調表示形態として、第１および第２の実施形態における命令文の行や変数の強調表示の形態を用いてもよい。処理の流れを判別可能な複数の異なる強調表示のパターンとは、例えば図７〜図１０に示したような表示パターンである。
【００９０】
本他の実施形態においても、第１および第２の実施形態と同様、強調表示のパターンの変化から、どのような順序でパイプライン動作が実行され、その実行過程で変数の値がどのように変化したかを判断することができる。よって、ユーザは、パイプライン処理を直感的かつ容易にデバッグすることができる。
【００９１】
本他の実施形態において、対応関係管理手段４２が行対応情報４２ａを保持し、モデル実行手段４１が変数対応情報４２ｂを保持してもよい。この場合は、対応関係管理手段４２は、実行位置保持変数に基づいて現在実行中の基本ブロックを特定し、該現在実行中の基本ブロックがパイプライン動作である場合に、行対応情報４２ａを参照して、現在実行中の基本ブロックに記述されたステージに対応するソースプログラム４０中の命令文の行を特定する。モデル実行手段４１は、変数対応情報４２ｂを参照して、特定した命令文に用いられた変数の値を保持する。表示手段４３は、ソースプログラム４０の実行状態として、対応関係管理手段４２によって特定された命令文の行と、該命令文の変数と、該変数についてモデル実行手段４１にて保持した値とを関連付けて強調表示により表示する。そして、対応関係管理手段４２は、処理の流れを判別可能な複数の異なる強調表示のパターンに基づき、パイプライン動作の進行状況に応じて強調表示形態をステージ別に変化させる。
【００９２】
また、本他の実施形態において、パイプライン動作が複数のループ処理からなる場合に、同一ループ処理において強調表示の形態が同一とされるようにしてもよい。
【００９３】
以上説明した各実施形態のシンボリックデバッガは、プログラムに従って動作するコンピュータにて実現される。この場合、モデル実行手段、対応関係管理手段、表示手段（ＧＵＩ表示手段など）は、コンピュータがプログラムを実行することで実現することが可能である。プログラムは、ＣＤ−ＲＯＭやＤＶＤ等の記録媒体で提供されてもよく、インターネット等のネットワークを通じて提供されてもよい。
【００９４】
以上説明した本発明のシンボリックデバッガは、動作合成技術を使ってシステムLSIを設計する場面において、設計者の仕様どおりの動作をしないケースに、設計者が記述したソースプログラムを見ながら不正動作する箇所を発見するといった用途に適用できる。また、並列コンパイラの最適化機能を使ったプログラムを作成する際に、設計者の仕様どおりに動作しないケースで、設計者の記述したソースプログラムを見ながら不正動作する箇所を発見するといった用途にも適用可能である。
【符号の説明】
【００９５】
１  コンピュータ
１０  動作合成システム
１１  合成用ハードウェア記述
１２  ハードウェア動作モデル
１３  シンボリックデバッガ用情報
１３ａ  行対応情報
１３ｂ  変数対応情報
２０  シンボリックデバッガ
２１  モデル実行手段
２２  対応関係管理手段
２３  ＧＵＩ表示手段
３０  ソースプログラム
【図１】
2010237759.tif 000003
【図２】
2010237759.tif 000004
【図３】
2010237759.tif 000005
【図４】
2010237759.tif 000006
【図５】
2010237759.tif 000007
【図６】
2010237759.tif 000008
【図７】
2010237759.tif 000009
【図８】
2010237759.tif 000010
【図９】
2010237759.tif 000011
【図１０】
2010237759.tif 000012
【図１１】
2010237759.tif 000013
【図１２】
2010237759.tif 000014
【図１３】
2010237759.tif 000015
【図１４】
2010237759.tif 000016