(57)【要約】【課題】動作記述中の変数や式の遷移履歴とハードウェア記述中の信号の遷移履歴を比較して一致していれば、高位合成装置が生成したハードウェア記述中の信号が正しく動作すると判定する動的検証を行う場合に、動作記述中の変数や式に対応したハードウェア記述中の信号の遷移履歴を取得するトレース記述を作成することが困難であるという課題がある。【解決手段】動作記述２１中の変数や式に対応するハードウェア記述中の信号を特定することによって、動作記述２１中のトレース対象に対応したハードウェア記述中の信号の遷移履歴を取得するためのハードウェア記述用トレース記述２３を生成する。【選択図】図１
2006338586.tif 000002
【特許請求の範囲】
【請求項１】
設計対象となる回路の動作を記述した動作記述から、前記動作記述をハードウェア化したハードウェア記述を生成する高位合成方法において、
前記ハードウェア記述内の１つまたは複数の信号の遷移履歴を取得するためのハードウェア記述用トレース記述を生成するハードウェア記述用トレース記述生成工程を備えることを特徴とする高位合成方法。
【請求項２】
前記動作記述内の１つまたは複数の変数または式であるトレース対象の遷移履歴を取得するための動作記述用トレース記述を生成する動作記述用トレース記述生成工程を備える請求項１に記載の高位合成方法。
【請求項３】
前記ハードウェア記述用トレース記述生成工程は、前記動作記述内の１つまたは複数の変数または式であるトレース対象に対応した前記ハードウェア記述内の信号の遷移履歴を取得するための前記ハードウェア記述用トレース記述を生成する請求項１または請求項２に記載の高位合成方法。
【請求項４】
前記ハードウェア記述用トレース記述生成工程は、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果から前記ハードウェア記述用トレース記述を生成する請求項３に記載の高位合成方法。
【請求項５】
前記ハードウェア記述用トレース記述生成工程は、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報と、前記トレース対象と前記ハードウェア記述中の信号との対応関係を示したデータパス対応情報から前記ハードウェア記述用トレース記述を生成する請求項３に記載の高位合成方法。
【請求項６】
前記トレース対象としてリスト化したトレース対象リストを用いる請求項３に記載の高位合成方法。
【請求項７】
前記トレース対象としてリスト化したトレース対象リストを生成するトレース対象リスト生成工程を含む請求項６に記載の高位合成方法。
【請求項８】
前記トレース対象を決定するための参考情報を生成する参考情報生成工程を含む請求項３に記載の高位合成方法。
【請求項９】
前記トレース対象としてリスト化したトレース対象リストは、前記トレース対象を決定するための参考情報に基づいてユーザが選択することで生成される請求項６に記載の高位合成方法。
【請求項１０】
前記トレース対象を自動認識する請求項３に記載の高位合成方法。
【請求項１１】
前記トレース対象リストは、前記動作記述からユーザが前記トレース対象を選択することで生成される請求項６に記載の高位合成方法。
【請求項１２】
前記トレース対象リスト生成工程は、前記トレース対象の遷移履歴を取得するための記述を含む前記動作記述を解析することによって前記トレース対象リストを生成する請求項７に記載の高位合成方法。
【請求項１３】
前記トレース対象リスト生成工程は、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果を解析することによって前記トレース対象リストを生成する請求項７に記載の高位合成方法。
【請求項１４】
前記トレース対象リスト生成工程は、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報を解析することによって前記トレース対象リストを生成する請求項７に記載の高位合成方法。
【請求項１５】
前記参考情報生成工程は、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果から前記参考情報を生成する請求項８に記載の高位合成方法。
【請求項１６】
前記参考情報生成工程は、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報から前記参考情報を生成する請求項８に記載の高位合成方法。
【請求項１７】
前記参考情報生成工程は、前記トレース対象の遷移履歴を取得するための記述を含む前記動作記述から前記参考情報を生成する請求項８に記載の高位合成方法。
【請求項１８】
前記トレース対象の遷移履歴を取得するための記述を含む前記動作記述を解析することによって前記トレース対象を自動認識する請求項１０に記載の高位合成方法。
【請求項１９】
前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果を解析することによって前記トレース対象を自動認識する請求項１０に記載の高位合成方法。
【請求項２０】
前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報を解析することによって前記トレース対象を自動認識する請求項１０に記載の高位合成方法。
【請求項２１】
設計対象となる回路の動作を記述した動作記述から、前記動作記述をハードウェア化したハードウェア記述を生成する高位合成装置において、
前記ハードウェア記述内の１つまたは複数の信号の遷移履歴を取得するためのハードウェア記述用トレース記述を生成するハードウェア記述用トレース記述生成手段を備えることを特徴とする高位合成装置。
【請求項２２】
前記動作記述内の１つまたは複数の変数または式であるトレース対象の遷移履歴を取得するための動作記述用トレース記述を生成する動作記述用トレース記述生成手段を備える請求項２１に記載の高位合成装置。
【請求項２３】
前記ハードウェア記述用トレース記述生成手段は、前記動作記述内の１つまたは複数の変数または式であるトレース対象に対応した前記ハードウェア記述内の信号の遷移履歴を取得するための前記ハードウェア記述用トレース記述を生成する請求項２１または請求項２２に記載の高位合成装置。
【請求項２４】
前記ハードウェア記述用トレース記述生成手段は、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果から前記ハードウェア記述用トレース記述を生成する請求項２３に記載の高位合成装置。
【請求項２５】
前記ハードウェア記述用トレース記述生成手段は、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報と、前記トレース対象と前記ハードウェア記述中の信号との対応関係を示したデータパス対応情報から前記ハードウェア記述用トレース記述を生成する請求項２３に記載の高位合成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作記述からハードウェア記述を合成する高位合成方法にかかわり、特には、高位合成装置を用いた設計環境におけるハードウェア記述の検証の技術に関するものである。
【背景技術】
【０００２】
高位合成方法とは、設計対象となる回路に含まれる複数のプロセス動作を記述した動作記述から、高位合成装置を使ってハードウェア記述言語で記述された論理回路を自動生成する技術である。高位合成方法の詳細については、非特許文献１等に記載されている。
【０００３】
例として、ＡＮＣＩ Ｃ言語で記述された図１７の動作記述を高位合成する場合について説明する。
【０００４】
図１７の動作記述において、変数「ａ」，「ｂ」，「ｃ」は入力である。また、変数「ｄ」，「ｅ」は最終結果を得るまでの途中の演算結果を格納するための変数である。変数「ｂ」には演算した最終結果が代入される。図１７の動作記述中では、まず変数「ａ」と変数「ｂ」の加算を行い、その結果を変数「ｄ」に代入している。さらに、変数「ｃ」と先程の加算結果である変数「ｄ」の乗算を行い、その結果を変数「ｅ」に代入している。さらに、変数「ａ」と先程の乗算結果である変数「ｅ」の加算を行い、その結果を変数「ｂ」に代入している。
【０００５】
＜スケジューリング＞
高位合成において、一般的に動作記述をコントロールデータフローグラフ（ＣＤＦＧ）と呼ぶ演算を実行する順序の依存関係を示したモデルに変換する。そして、高位合成時にユーザが与える面積制約やクロック周波数制約を満たすように、ＣＤＦＧ中に現れる各演算が実行される制御ステップを決定するスケジューリング処理を行う。スケジューリング処理では、ＣＤＦＧ中の演算を表したノードを、データの依存関係と上記制約を満たすように制御ステップに割り当てる。
【０００６】
図１８に、図１７に示す動作記述をスケジューリング処理した結果を示す。図１８において、入力変数「ａ」，「ｂ」は制御ステップ０に割り当てられており、図１７のｄ＝ａ＋ｂの加算と入力変数「ｃ」と図１７のｅ＝ｃ＊ｄの乗算が制御ステップ１に割り当てられており、図１７のｂ＝ａ＋ｅの加算が制御ステップ２に割り当てられ、最終結果となる変数「ｂ」は制御ステップ３に割り当てられている。ＣＤＦＧでは、データの依存する関係を示したデータ依存枝を使って、演算を動作記述の順序に従って結びつけている。図１８のスケジューリング処理結果では、エッジｒ１，ｒ２，ｒ３，ｒ４，ｒ５，ｒ６がデータ依存枝である。
【０００７】
＜アロケーション＞
次に、図１８で得られたスケジューリング処理結果に基づいてアロケーション処理を行う。アロケーション処理では、ハードウェア量を考慮しながら、動作記述の動作を実現する回路構成を決定する。レジスタ転送レベル（ＲＴＬ）の回路は、演算器、レジスタ、入出力ピンの構成要素が必要である。アロケーション処理は、ＣＤＦＧの演算を演算器に、隣接するステップのクロック境界を横切るデータ依存枝をレジスタに、入出力を入出力ピンに割り当てる処理である。
【０００８】
演算器のアロケーション処理では、ＣＤＦＧ中の各演算に対して、それを実行する演算器を割り当てる。ＣＤＦＧに同じ演算が複数あっても、同一の制御ステップ内に存在しない場合には、資源を共有できる。そのため、演算器のアロケーション処理では、図１８で示すＣＤＦＧ中に加算が２回あるが、これら２つの加算は属する制御ステップが互いに異なっているので共通の加算器を割り当てる。１つの乗算に対しては１つの乗算器を割り当てる。
【０００９】
次に、レジスタのアロケーション処理では、クロック境界と交差するデータ依存枝にレジスタを割り当てる。しかし、全てのデータ依存枝をレジスタに割り当てるとハードウェアコストが増大するため、一般的に、各レジスタに対して複数の変数を割り当てることで、レジスタ数を削減する。
【００１０】
動作記述中の変数や式をレジスタに割り当てる場合に、ライフタイム情報を利用する。ライフタイム情報とは、ハードウェア記述中の信号に対応した動作記述中の変数や式がハードウェア記述の演算で使用される時間を示したものである。ライフタイムが重ならない、つまり同時に使用される可能性がない変数や式は、同じレジスタに割り当てることができる。
【００１１】
図１９は、図１８のスケジューリング処理を行ったＣＤＦＧ中の変数や式をライフタイムの開始時刻順に並べた結果である。変数「ａ」は制御ステップ０から制御ステップ２までの時区間で使用され、変数「ｂ」は制御ステップ０から制御ステップ１の時区間と、制御ステップ２から制御ステップ３の各時区間で使用され、変数「ｃ」は制御ステップ１の時区間で使用され、変数「ｄ」は制御ステップ１の時区間で使用され、変数「ｅ」は制御ステップ１から制御ステップ２の時区間で使用される。これらの変数の内、クロック境界を横切る変数をレジスタに割り当てる必要がある。図１９では、クロック境界を横切る変数は、変数「ａ」，「ｂ」，「ｅ」である。
【００１２】
ライフタイム情報を順に調べながらライフタイムが重ならない限り、レジスタに変数を割り当てていく。図２０に、図１９のライフタイム情報に基づいてレジスタを割り当てた結果であるレジスタ割り当て結果を示す。制御ステップ１においては、変数「ａ」を第１のレジスタに、変数「ｂ」を第２のレジスタに割り当てている。制御ステップ２においては、変数「ａ」を制御ステップ１に引き続いて第１のレジスタに割り当て、制御ステップ１での加算と乗算結果を保持する変数「ｅ」を第２のレジスタに割り当てている。ここで、変数「ｃ」は制御ステップ１にて外部から直接入力され、また、変数「ｄ」は演算の一時的な途中結果であるため、クロック境界を横切っておらず（図１９参照）、レジスタに割り当てない。制御ステップ３においては、演算の最終結果となる変数「ｂ」を第１のレジスタに割り当てている。
【００１３】
＜データパス生成＞
次に、アロケーション処理後、データパスの生成を行い、ＣＤＦＧに対応した回路のパスを生成する。生成したデータパスを図２１に示す。図２１に示したデータパスでは、１つの加算器３８と１つの乗算器３９を生成している。また第１のレジスタ３６、第２のレジスタ３７を生成している。
【００１４】
さらに、図１８に示したＣＤＦＧ中の３つの入力「ａ」，「ｂ」，「ｃ」に対して、それぞれ図２１のデータパスに示した入力ピン３１，３２，３３を割り当て、図１８に示したＣＤＦＧ中の出力「ｂ」に対して、出力ピン４０を生成している。
【００１５】
演算器やレジスタが共有化される場合には、マルチプレクサを生成し、演算器やレジスタへの入力パスを選択できるようにする必要がある。第１のレジスタ３６に対しては、第１のマルチプレクサ３４を生成し、第２のレジスタ３７に対しては第２のマルチプレクサ３５を生成する。
【００１６】
データパス生成では、生成した演算器とレジスタと入出力ポートとマルチプレクサを相互に配線する。図１８のＣＤＦＧ中のデータ依存枝に対応するように、生成した構成要素を接続する。例えば、図１８のＣＤＦＧの入力「ａ」からデータ依存枝ｒ１を通り、加算演算に入力されるＣＤＦＧ上のパスに対応するデータパスは、入力ピン３１から第１のマルチプレクサ３４を通り第１のレジスタ３６へのパスになる。同様に全てのデータ依存枝に対応したデータパスを生成する。
【００１７】
図２２に図１８で示したデータ依存枝と図２１に示すデータパスとの対応関係を示したデータパス対応情報を示す。図２２は、図１８のデータ依存枝ｒ１，ｒ２，ｒ３，ｒ４，ｒ５，ｒ６が、図２１のデータパスｐ１，ｐ２，ｐ３，ｐ４，ｐ５，ｐ６にそれぞれ対応することを示している。
【００１８】
＜ステートマシンの生成＞
次に、各制御ステップでレジスタに格納される値をマルチプレクサ３４，３５にて適切に選択することができるように、図２１に示すステートマシン４１を生成する。
【００１９】
高位合成では、以上の処理により動作記述を実現するハードウェア記述を生成する。高位合成にて生成されたハードウェア記述は、上述した処理を通して生成される。
【００２０】
ところが、動作記述が正しく記述されていても、合成過程で高位合成装置に起因した不具合がハードウェア記述に入る可能性があり得る。また、高位合成装置に与える制約の人為的な設定ミスにより、意図しない記述が生成される可能性もある。そのため、生成されたハードウェア記述を検証する必要がある。高位合成装置が生成したハードウェア記述の動的検証に関して、動作記述用のテストベクタからハードウェア記述用のテストベクタを生成する方法が特許文献１に記載されている。高位合成により生成されたハードウェア記述の動的検証を行う場合、一般的には、動作記述とハードウェア記述のそれぞれに対してテストパターンを与えたシミュレーションを行い、それらのインターフェース部分のトレース結果を比較することで検証を行うが、比較で不一致が発生したとき、ハードウェア記述中の不具合を特定するのに時間がかかるという課題がある。
【特許文献１】特許第３３７３６４１号公報（特開平７−２５４００８号公報）
【非特許文献１】「Ｈｉｇｈ−Ｌｅｖｅｌ  Ｓｙｎｔｈｅｓｉｓ」  Ｋｌｕｗｅｒ  Ａｃａｄｅｍｉｃ  Ｐｕｂｌｉｓｈｅｒｓ刊
【発明の開示】
【発明が解決しようとする課題】
【００２１】
従来、高位合成装置が生成したハードウェア記述の動的検証を行う場合、動作記述とハードウェア記述のそれぞれに対してテストパターンを与えたシミュレーションを実施し、それらインターフェース部分の出力信号の遷移履歴を比較することで、高位合成装置が正しくハードウェア記述を生成することを検証する。
【００２２】
インターフェース部分の出力信号の遷移履歴を比較して不一致が発生した場合、不一致が発生した原因を探る必要が出てくる。その場合、不一致が発生したシミュレーション上の時刻から遡って、ハードウェア記述の演算ミスがある箇所を特定しなければならない。しかし、ハードウェア記述の演算ミスにより演算処理の誤りが発生していても、その誤りによる影響がすぐにハードウェア記述の出力信号の遷移履歴に現われない場合がある。つまり、演算処理の誤りが発生する時刻において、ハードウェア記述のインターフェース部分の遷移履歴と動作記述のインターフェース部分の遷移履歴が一致する場合があり、インターフェース部分の遷移履歴だけからでは、ハードウェア記述の演算ミスが発生する時刻を特定するのが困難になる。そのため、ハードウェア記述中の内部信号の遷移履歴と、ハードウェア記述中の内部信号に対応する動作記述中の変数や式の遷移履歴とを比較して、それらが不一致を起こしている箇所から、演算処理のミスがあるハードウェア記述の箇所を特定する手がかりとする。
【００２３】
しかし、高位合成装置において、動作記述からハードウェア記述を生成する場合、動作記述を修正したり、クロック制約や面積制約等の設計者が合成時に設定する各種制約を変更することによって、動作記述中の変数や式がハードウェア記述中の信号に割り当てられる結果に違いが生じる。つまり、動作記述や制約条件に変更を加えて再合成した場合には、動作記述中の変数や式とハードウェア記述中の信号の対応関係が作り変えられる。その場合、改めて、遷移履歴を取得したい動作記述中の変数に対応するハードウェア記述中の信号を特定しなくてはならなくなる。
【００２４】
以上のように、高位合成における動的検証は、動作記述中の変数や式の遷移履歴とハードウェア記述中の信号の遷移履歴を比較して、一致していれば、高位合成装置が生成したハードウェア記述中の信号が正しく動作すると判定するものである。そして、この動的検証を行う場合に、動作記述中の変数や式がハードウェア記述中のどの信号に対応しているかを特定することが難しいために、トレース記述、すなわち、動作記述中の変数や式に対応したハードウェア記述中の信号の遷移履歴を取得する等のためのトレース記述を作成することが困難であるという課題がある。
【００２５】
本発明は上記のような従来技術の問題点に鑑みて、前記のトレース記述（動作記述中の変数や式に対応したハードウェア記述中の信号の遷移履歴を取得するための記述等）を生成する高位合成装置を提供することを目的にしたものである。
【課題を解決するための手段】
【００２６】
この目的を達成するために、本発明の高位合成装置は、ハードウェア記述用トレース記述生成手段を備えている。また、動作記述用トレース記述生成手段を備えている。
【００２７】
ハードウェア記述用トレース記述生成手段は、ハードウェア記述中のハードウェアを構成する部品の名前を示した信号の遷移履歴を取得するためのハードウェア記述用トレース記述を生成する手段である。
【００２８】
また、動作記述用トレース記述生成手段は、動作記述中のトレース対象の遷移履歴を取得するための動作記述用トレース記述を生成する手段である。
【００２９】
また、ハードウェア記述用トレース記述生成手段は、動作記述中のトレース対象に対応するハードウェア記述中の信号を特定することで、動作記述中のトレース対象に対応するハードウェア記述中の信号の遷移履歴を取得するためのハードウェア記述用トレース記述を作成する。ここで、トレース対象とは、動作記述中の変数あるいは式である。
【００３０】
ハードウェア記述用トレース記述生成手段は、遷移履歴を取得する動作記述中のトレース対象が、ハードウェア記述中のレジスタに割り当てられている場合およびレジスタに割り当てられない場合でも、ハードウェア記述用トレース記述を生成することが可能である。
【００３１】
また、ハードウェア記述用トレース記述を生成するためには、トレース対象を選択しなければならない。そこで、トレース対象をリスト化したトレース対象リストを高位合成装置に与える。ここで、トレース対象リストは高位合成装置の外部から与えられるトレース対象を示したリストであればいかなるものでもよい。トレース対象リストは、具体的には、例えばユーザが動作記述からトレース対象を選択することで生成したリストや、あるいはユーザが参考情報からトレース対象を選択することで生成したリスト等である。
【００３２】
ここで、参考情報は高位合成装置が備えた参考情報生成手段により生成される。参考情報生成手段は、動作記述やレジスタ割り当て結果やライフタイム情報等のような、トレース対象の情報を含む記述であれば、如何なる記述からでも参考情報を生成することができる。
【００３３】
参考情報は、具体的には、例えば演算の最終結果が格納されたレジスタに対応するトレース対象を示した情報や、トレース対象に演算結果が代入される回数を示した情報や、動作記述中のトレース対象に対応するハードウェア記述中の信号を示した情報、さらには、レジスタ割り当て結果やライフタイム情報そのものであり、トレース対象を決定するための情報であればいかなるものでよい。
【００３４】
また、高位合成装置は、トレース対象としてリスト化したトレース対象リストを生成するトレース対象リスト生成手段を備えている。トレース対象リスト生成手段は、レジスタ割り当て結果やライフタイム情報や動作記述等のようなトレース対象の情報を含む記述を解析することで、トレース対象リストを生成する。
【００３５】
また、高位合成装置は、動作記述やレジスタ割り当て結果やライフタイム情報等のようなトレース対象の情報を含む記述を解析することで、遷移履歴を取得するトレース対象を自動的に認識することができる。
【００３６】
以上、本発明の概要を説明したが、以下に、より詳しいレベルで本発明の構成を展開する。
【００３７】
本発明による高位合成方法は、設計対象となる回路の動作を記述した動作記述から、前記動作記述をハードウェア化したハードウェア記述を生成する高位合成方法において、前記ハードウェア記述内の１つまたは複数の信号の遷移履歴を取得するためのハードウェア記述用トレース記述を生成するハードウェア記述用トレース記述生成工程を備えるものである。
【００３８】
これに対応して、本発明による高位合成装置は、設計対象となる回路の動作を記述した動作記述から、前記動作記述をハードウェア化したハードウェア記述を生成する高位合成装置において、前記ハードウェア記述内の１つまたは複数の信号の遷移履歴を取得するためのハードウェア記述用トレース記述を生成するハードウェア記述用トレース記述生成手段を備えるものである。
【００３９】
上記の高位合成方法において好ましい態様は、前記動作記述内の１つまたは複数の変数または式であるトレース対象の遷移履歴を取得するための動作記述用トレース記述を生成する動作記述用トレース記述生成工程を備える態様である。
【００４０】
これに対応して、上記の高位合成装置において好ましい態様は、前記動作記述内の１つまたは複数の変数または式であるトレース対象の遷移履歴を取得するための動作記述用トレース記述を生成する動作記述用トレース記述生成手段を備える態様である。
【００４１】
さらに、上記の高位合成方法において、前記ハードウェア記述用トレース記述生成工程には次のようないくつかの好ましい態様がある。
【００４２】
すなわち、前記ハードウェア記述用トレース記述生成工程は、前記動作記述内の１つまたは複数の変数または式であるトレース対象に対応した前記ハードウェア記述内の信号の遷移履歴を取得するための前記ハードウェア記述用トレース記述を生成するという態様である。
【００４３】
これに対応して、上記の高位合成装置では、前記ハードウェア記述用トレース記述生成手段は、前記動作記述内の１つまたは複数の変数または式であるトレース対象に対応した前記ハードウェア記述内の信号の遷移履歴を取得するための前記ハードウェア記述用トレース記述を生成するという態様である。
【００４４】
また、前記ハードウェア記述用トレース記述生成工程は、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果から前記ハードウェア記述用トレース記述を生成するという態様である。
【００４５】
これに対応して、上記の高位合成装置では、前記ハードウェア記述用トレース記述生成手段は、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果から前記ハードウェア記述用トレース記述を生成するという態様である。
【００４６】
また、前記ハードウェア記述用トレース記述生成工程は、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報と、前記トレース対象と前記ハードウェア記述中の信号との対応関係を示したデータパス対応情報から前記ハードウェア記述用トレース記述を生成するという態様である。
【００４７】
これに対応して、上記の高位合成装置では、前記ハードウェア記述用トレース記述生成手段は、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報と、前記トレース対象と前記ハードウェア記述中の信号との対応関係を示したデータパス対応情報から前記ハードウェア記述用トレース記述を生成するという態様である。
【００４８】
そして、上記の高位合成方法において、前記トレース対象としてリスト化したトレース対象リストを用いる。この場合に、前記トレース対象としてリスト化したトレース対象リストを生成するトレース対象リスト生成工程を含むものとする。
【００４９】
また、前記トレース対象を決定するための参考情報を生成する参考情報生成工程を含むものとする。
【００５０】
また、前記トレース対象としてリスト化したトレース対象リストは、前記トレース対象を決定するための参考情報に基づいてユーザが選択することで生成されるものとする。
【００５１】
また、前記トレース対象を自動認識するものとする。
【００５２】
また、前記トレース対象リストは、前記動作記述からユーザが前記トレース対象を選択することで生成されるものとする。
【００５３】
また、前記トレース対象リスト生成工程は、前記トレース対象の遷移履歴を取得するための記述を含む前記動作記述を解析することによって前記トレース対象リストを生成するものとする。
【００５４】
また、前記トレース対象リスト生成工程は、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果を解析することによって前記トレース対象リストを生成するものとする。
【００５５】
また、前記トレース対象リスト生成工程は、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報を解析することによって前記トレース対象リストを生成するものとする。
【００５６】
また、前記参考情報生成工程は、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果から前記参考情報を生成するものとする。
【００５７】
また、前記参考情報生成工程は、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報から前記参考情報を生成するものとする。
【００５８】
また、前記参考情報生成工程は、前記トレース対象の遷移履歴を取得するための記述を含む前記動作記述から前記参考情報を生成するものとする。
【００５９】
また、前記トレース対象の遷移履歴を取得するための記述を含む前記動作記述を解析することによって前記トレース対象を自動認識するものとする。
【００６０】
また、前記ハードウェア記述内に含まれるレジスタに割り当てられた前記トレース対象と前記レジスタの対応を示したレジスタ割り当て結果を解析することによって前記トレース対象を自動認識するものとする。
【００６１】
また、前記ハードウェア記述中の信号に対応した前記トレース対象が前記ハードウェア記述の演算で使用される時間を示したライフタイム情報を解析することによって前記トレース対象を自動認識するものとする。
【発明の効果】
【００６２】
高位合成により生成されたハードウェア記述中の信号が正しく動作するかの動的検証を行う場合、動作記述中のトレース対象がハードウェア記述中のどの信号に対応しているかを特定することが難しく、ハードウェア記述用トレース記述を作成することが困難である、というのが従来技術の問題であった。
【００６３】
これに対して、上記のように構成された本発明によれば、動作記述中のトレース対象に対応するハードウェア記述中の信号を特定することによって、前記ハードウェア記述中の信号の遷移履歴を取得するためのハードウェア記述用トレース記述を生成する。これにより、上記従来技術の問題を解決できるので、デバックの効率が向上する。
【００６４】
また、本発明によれば、動作記述用トレース記述とハードウェア記述用トレース記述を自動生成することができるので、これまでトレース記述を人手で作成していたのに比べて、検証環境を構築する時間を削減する効果がある。また、トレース記述の生成に人手が介在しないため、バグが入らないという効果がある。
【００６５】
また、動作記述が正しく動作しているか確認するために、動作記述中にはトレース記述が記述されていることがある。動作記述中のトレース記述は、遷移履歴を取得したいトレース対象を示している。本発明では、トレース記述を含む動作記述を解析する手段を有しており、高位合成装置に遷移履歴を取得したいトレース対象を明示しなくとも、トレース記述が記述してある動作記述から、直接、ハードウェア記述用トレース記述を生成することができるので、検証環境の構築に費やす時間を削減する効果がある。
【００６６】
また、高位合成装置が動作記述からハードウェア記述を生成するときに生成するレジスタ割り当て結果やライフタイム情報等のようなトレース対象が示されているものを用いて、検証の観点から有効なトレース対象を自動的に選択することによって、ユーザがトレース対象を選択する工数を削減することができるため、検証の効率を向上できる。
【００６７】
また、ユーザが動作記述中のトレース対象を選択する場合には、動作記述中の全てのトレース対象から特定のトレース対象を選択することになるが、動作記述の規模が大きくなると、動作記述中のトレース対象も膨大になり、その中から特定のトレース対象を選択することが困難になる。そこで、本発明では、レジスタ割り当て結果やライフタイム情報や動作記述等のようなトレース対象が示されているものから、トレース対象に関する参考情報を生成する。ユーザは遷移履歴を取得したいトレース対象を選択するときに、その参考情報を選択の補助として用いることができるので、トレース対象を選択することを容易にする効果がある。
【００６８】
さらに、変数に加えて、動作記述中の式もトレースすることができ、動作記述の記述形式に依存せずに、あらゆる演算結果をトレースすることができるので、検証の効率を高める効果がある。
【発明を実施するための最良の形態】
【００６９】
以下、本発明にかかわる高位合成装置の実施の形態を図面に基づいて詳細に説明する。動作記述用トレース記述は、動作記述中のトレース対象の遷移履歴を取得するための記述である。また、ハードウェア記述用トレース記述は、トレース対象に対応するハードウェア記述中の信号の遷移履歴を取得するための記述である。本発明の実施の形態では、高位合成装置が動作記述用トレース記述とハードウェア記述用トレース記述を生成する方法を示す。簡単な動作記述を用いて以下に説明する。
【００７０】
＜実施の形態１＞
本発明の実施の形態１にかかわる高位合成方法は、ユーザが選択した動作記述中のトレース対象に対応するハードウェア記述中のレジスタを特定し、ハードウェア記述用トレース記述を生成する方法である。
【００７１】
図１は、本発明の実施の形態１における高位合成装置の構成を示す概念図である。図１において、高位合成装置Ａ１は、ハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３を備えている。ハードウェア記述用トレース記述生成手段１２は、レジスタ割り当て結果１１とトレース対象リスト２２からハードウェア記述用トレース記述２３を生成する。ここで、トレース対象リスト２２は、ユーザが動作記述２１からトレース対象を選択することで生成する。レジスタ割り当て結果１１は、レジスタに割り当てられたトレース対象とハードウェア記述中のレジスタとの対応を示す情報である。さらに、動作記述用トレース記述生成手段１３は、動作記述２１とトレース対象リスト２２から動作記述用トレース記述２４を生成する。
【００７２】
動作記述２１とトレース対象リスト２２とレジスタ割り当て結果１１は、コンピュータ装置がアクセス可能な記憶領域に格納される。コンピュータ装置は、記憶領域にアクセスし、内部ＣＰＵを用いてハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３の処理を行い、生成したハードウェア記述用トレース記述２３と動作記述用トレース記述２４を再び前記記憶領域へ出力する。
【００７３】
以下、動作記述２１として図１７に示す動作記述（ｄ＝ａ＋ｂ；ｅ＝ｃ＊ｄ；ｂ＝ａ＋ｅ）を例にして説明する。ここで、ユーザは遷移履歴を取得するトレース対象として、図１７に示した動作記述中の変数「ｅ」を選択するものとする。しかし、変数「ｅ」に限定されるものではなく、ユーザは動作記述２１中の全てのトレース対象を選択することができる。レジスタ割り当て結果１１の例として図２０を参照する。これは、図１９のライフタイム情報から高位合成装置が作成するレジスタ割り当て結果である。図２０のレジスタ割り当て結果が作成される過程は従来技術にて説明した。
【００７４】
動作記述２１中のトレース対象の遷移履歴を取得するためには、トレース対象に対応するハードウェア記述中の信号を特定する必要がある。レジスタ割り当て結果１１を参照することで、変数「ｅ」に対応するレジスタと、そのレジスタに値が格納される制御ステップを知ることができる。図２０に示したレジスタ割り当て結果から、変数「ｅ」は制御ステップ２において第２のレジスタ３７に格納される。
【００７５】
次に、ハードウェア記述用トレース記述生成手段１２では、制御ステップ２において第２のレジスタ３７に格納される変数「ｅ」の遷移履歴を取得するためのトレース記述を生成する。
【００７６】
例として変数「ｅ」をトレースするためにハードウェア記述用トレース記述生成手段１２が生成したハードウェア記述用トレース記述２３を図２に示す。図２に示すハードウェア記述用トレース記述２３の一例では、記述言語としてＶｅｒｉｌｏｇ−ＨＤＬ言語を用いた。
【００７７】
図２の「ａｌｗａｙｓ＠（  ｐｏｓｅｄｇｅ  ｃｌｏｃｋ  ）  ｂｅｇｉｎ」中の「ｃｌｏｃｋ」はハードウェア記述中のクロック信号を表しており、「ｉｆ（ｓｔｅｐ  ＝＝  ２）  ｂｅｇｉｎ」の「ｓｔｅｐ」は制御ステップを表しており、「＄ｄｉｓｐｌａｙ（“ｅ＝％ｄ＼ｎ”，ｒｅｇ２）；」は動作記述２１中の変数「ｅ」に対応する第２のレジスタ３７に格納されている値の遷移履歴を出力することを表している。つまり、制御ステップ２において第２のレジスタ３７に格納される変数「ｅ」の遷移履歴を取得する記述となっている。
【００７８】
なお、ハードウェア記述用トレース記述２３は、高位合成装置Ａ１が生成するハードウェア記述に付加した形態で高位合成装置Ａ１に出力させることもできるし、ハードウェア記述に付加せずに分離させた記述として高位合成装置Ａ１に出力させることもできる。
【００７９】
さらに、動作記述用トレース記述生成手段１３では、変数「ｅ」の遷移履歴を取得するための動作記述用トレース記述２４を生成する。例として、図３に動作記述用トレース記述２４を付加した動作記述２１を示す。図３に示す動作記述用トレース記述２４の一例では、記述言語としてＡＮＣＩ Ｃ言語を用いた。図１７に示した動作記述に対して、図３に示す動作記述２１は「ｐｒｉｎｔｆ（“ｅ＝％ｄ＼ｎ”ｅ）；」の記述を最終行に付加している。
【００８０】
さらに、ハードウェア記述用トレース記述生成手段１２は、変数以外にも、式に対応するハードウェア記述中のレジスタの遷移履歴を取得するハードウェア記述用トレース記述２３を生成する。また、動作記述用トレース記述生成手段１３は、変数以外にも、式の遷移履歴を取得する動作記述用トレース記述２４を生成する。
【００８１】
図４に示したＡＮＣＩ Ｃ言語で記述された動作記述２１を例として、式の遷移履歴を取得するためのトレース記述を生成する方法を説明する。
【００８２】
図４の動作記述２１は、図１７の動作記述と同じ演算を行っている。このため、図４の動作記述２１のスケジューリング処理結果は図１８に示したスケジューリング処理結果と全く同じになる。これにより、図１９に示したライフタイム情報を導いたのと同様にして、図４に示した動作記述２１におけるライフタイム情報を作成する。図４に示した動作記述２１から作成されたライフタイム情報を図５に示す。さらに、図５に示したライフタイム情報から求めたレジスタ割り当て結果１１を図６に示す。
【００８３】
以上により、図６に示すレジスタ割り当て結果１１には、レジスタに割り当てられた変数ばかりでなくレジスタに割り当てられた式を示すことができる。これにより、レジスタ割り当て結果１１から式が割り当てられたレジスタと、そのレジスタにデータが保持される制御ステップを特定することか可能となる。そして、ハードウェア記述用トレース記述生成手段１２は、動作記述２１中の式に対応したハードウェア記述中のレジスタの遷移履歴を取得するためのハードウェア記述用トレース記述２３を生成し、動作記述用トレース記述生成手段１３は、動作記述２１中の式の遷移履歴を取得するための動作記述用トレース記述２４を生成する。
【００８４】
例として、遷移履歴を取得するトレース対象として、式「ｃ＊（ａ＋ｂ）」を選択する場合について説明する。図６に示したレジスタ割り当て結果１１より、この式が制御ステップ２において第２のレジスタ３７に格納されることを特定できる。よって、ハードウェア記述用トレース記述生成手段１２は、図２に示した記述と同じハードウェア記述用トレース記述２３を生成する。
【００８５】
また、動作記述用トレース記述生成手段１３が生成する動作記述用トレース記述２４を含んだ動作記述２１を図７に示す。図７に示す動作記述用トレース記述２４の一例では、記述言語としてＡＮＣＩ Ｃ言語を用いた。図７に示した動作記述２１では図４に示した動作記述２１に対して、式「ｃ＊（ａ＋ｂ）」の遷移履歴を取得するための記述を付加してある。
【００８６】
以上、これまで簡単な動作記述２１を例に説明したが、分枝やループを含む複雑な動作記述２１に対しても、同様にトレース対象の遷移履歴を取得するためのハードウェア記述用トレース記述２３を生成することが可能である。
【００８７】
＜実施の形態２＞
本発明の実施の形態２にかかわる高位合成方法は、トレース対象に関する参考情報に基づいてユーザが遷移履歴を取得するトレース対象を選択して、ハードウェア記述用トレース記述を生成する方法である。
【００８８】
図８は、本発明の実施の形態２における高位合成装置の構成を示す概念図である。図８において、高位合成装置Ａ２は、ハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３と参考情報生成手段１４を備えている。参考情報生成手段１４は、レジスタ割り当て結果１１を用いてトレース対象を決定するための候補となる参考情報２５を生成する。その中からユーザがトレース対象を選択することでトレース対象リスト２２を生成する。ハードウェア記述用トレース記述生成手段１２は、トレース対象リスト２２とレジスタ割り当て結果１１からハードウェア記述用トレース記述２３を生成する。また、動作記述用トレース記述生成手段１３は、動作記述２１とトレース対象リスト２２から動作記述用トレース記述２４を生成する。
【００８９】
動作記述２１とトレース対象リスト２２とレジスタ割り当て結果１１と参考情報２５は、コンピュータ装置がアクセス可能な記憶領域に格納されている。コンピュータ装置は、記憶領域にアクセスし、内部ＣＰＵを用いてハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３と参考情報生成手段１４の処理を行い、生成したハードウェア記述用トレース記述２３と動作記述用トレース記述２４を再び前記記憶領域へ出力する。
【００９０】
以下、動作記述２１として図１７に示す動作記述（ｄ＝ａ＋ｂ；ｅ＝ｃ＊ｄ；ｂ＝ａ＋ｅ）を例にして説明する。
【００９１】
参考情報生成手段１４は、図２０に示したレジスタ割り当て結果を用いて、各レジスタに最後に割り当てられたトレース対象を示した参考情報２５を生成する。図９に、図２０に示したレジスタ割り当て結果を用いて参考情報生成手段１４が生成した参考情報２５の一例を示す。ここでは、図２０のレジスタ割り当て結果より、第１のレジスタ３６の最終の制御ステップ３に割り当てられている変数「ｂ」と、第２のレジスタ３７の最終の制御ステップ２に割り当てられている変数「ｅ」を参考情報２５として抽出する。各レジスタの最終の制御ステップに割り当てられたトレース対象の遷移履歴を確認することにより、一連の演算処理後に演算が正しく行われたことを確認することができる。ユーザはこの参考情報２５に基づいてトレース対象を選択して、トレース対象リスト２２を生成する。
【００９２】
ここでは、参考情報生成手段１４は、一例として、レジスタ割り当て結果１１を用いて、各レジスタに最後に割り当てられたトレース対象を示した参考情報２５を生成する例を説明した。しかし、参考情報生成手段１４は、レジスタ割り当て結果１１以外にも、動作記述２１やライフタイム情報等のようなトレース対象の情報を含む記述から、トレース対象を決定するための参考情報２５を生成できる。
【００９３】
なお、参考情報２５は、トレース対象を決定するための情報であればいかなるものでよく、例えば、各制御ステップにおいてトレース対象がレジスタに割り当てられた回数を示した情報や、動作記述２１中のトレース対象に対応するハードウェア記述中の信号を示した情報や、さらには、レジスタの割り当て結果や、ライフタイム情報そのものでもよい。
【００９４】
トレース対象リスト２２を作成した後に、ハードウェア記述用トレース記述生成手段１２は、トレース対象リスト２２とレジスタ割り当て結果１１からハードウェア記述用トレース記述２３を生成する。ハードウェア記述用トレース記述２３および動作記述用トレース記述２４を生成する手順については実施の形態１で説明したので、ここでは省略する。
【００９５】
＜実施の形態３＞
本発明の実施の形態３にかかわる高位合成方法は、トレース対象の遷移履歴を取得するための記述を含む動作記述２１を解析することによってハードウェア記述用トレース記述を生成する方法である。
【００９６】
図１０は、本発明の実施の形態３における高位合成装置の構成を示す概念図である。図１０において、高位合成装置Ａ３は、ハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３とトレース対象リスト生成手段１５を備えている。トレース対象リスト生成手段１５は、トレース対象の遷移履歴を取得するためのトレース記述を含む動作記述２１を解析してトレース対象リスト２２を生成する。ハードウェア記述用トレース記述生成手段１２は、トレース対象リスト２２とレジスタ割り当て結果１１からハードウェア記述用トレース記述２３を生成する。また、動作記述用トレース記述生成手段１３は、トレース対象リスト２２と動作記述２１から動作記述用トレース記述２４を生成する。
【００９７】
動作記述２１とトレース対象リスト２２とレジスタ割り当て結果１１は、コンピュータ装置がアクセス可能な記憶領域に格納される。コンピュータ装置は、記憶領域にアクセスし、内部ＣＰＵを用いてハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３とトレース対象リスト生成手段１５の処理を行い、生成したハードウェア記述用トレース記述２３と動作記述用トレース記述２４を再び前記記憶領域へ出力する。
【００９８】
実施の形態３について、例としてＡＮＣＩ Ｃ言語で記述された図１１に示すトレース記述が記述された動作記述２１を使って説明する。
【００９９】
図１１に示した動作記述２１では、特定のトレース対象の遷移履歴を取得するために、トレース対象の値を標準出力している。図１１の動作記述２１では、図１７の動作記述に対して、変数の値を標準出力する記述（３行目）のみ書き加えており、全く同じ演算を行っている。図１１で書き加えた記述は、「ｐｒｉｎｔｆ（"ｅ＝％ｄ＼ｎ"，ｅ）；」の部分である。
【０１００】
トレース対象リスト生成手段１５が図１１の動作記述２１を解析する方法を図１２に示したフローチャートを使って説明する。まず、動作記述２１から１行だけ取り出す（Ｓ１）。次に、取り出した１行がトレース対象の遷移履歴を取得するためのトレース記述であるか解析する（Ｓ２）。解析した結果から、トレース対象の遷移履歴を取得するトレース記述であるかを判断する（Ｓ３）。トレース記述である場合には、そのトレース対象をトレース対象リスト２２に加える（Ｓ４）。次に、動作記述２１を最終行までスキャンしたかを確認する（Ｓ５）。最終行までスキャンしていなければ、（Ｓ１）の処理に戻り、再び動作記述２１を１行取り出す。以上の処理を最終行まで行った場合には、終了する。図１１の動作記述２１を解析した結果、変数「ｅ」がトレース対象リスト２２に追加される。
【０１０１】
なお、トレース対象リスト生成手段１５は、図１１に示した動作記述２１中のトレース記述（３行目）に限定されず、トレース対象の遷移履歴を取得するためのトレース記述であれば、いかなる記述でも解析可能であるものとする。
【０１０２】
ハードウェア記述用トレース記述生成手段１２は、トレース対象リスト生成手段１５が生成したトレース対象リスト２２とレジスタ割り当て結果１１からハードウェア記述用トレース記述２３を生成する。
【０１０３】
ハードウェア記述用トレース記述生成手段１２がハードウェア記述用トレース記述２３を生成する手順については実施の形態１で説明したので、ここでは省略する。
【０１０４】
さらに、動作記述２１中に式をトレース対象として記述されている場合もあり得る。この場合にも、トレース対象リスト生成手段１５にて動作記述２１を解析し、遷移履歴を取得すべき式を抽出することが可能である。
【０１０５】
なお、図１０では高位合成装置Ａ３がトレース対象リスト２２を出力しているが、出力しなくとも、高位合成装置Ａ３の内部で遷移履歴を取得すべきトレース対象を自動認識して、ハードウェア記述用トレース記述生成手段１２は、認識したトレース対象に対応するハードウェア記述中の信号のハードウェア記述用トレース記述２３を生成することが可能である。
【０１０６】
さらに、トレース対象リスト生成手段１５は、動作記述２１以外に、レジスタ割り当て結果１１やライフタイム情報等のようなトレース対象の情報を含むいかなる記述からでも、それを解析することで、トレース対象を抽出することが可能である。
【０１０７】
＜実施の形態４＞
本発明の実施の形態４にかかわる高位合成方法は、レジスタ割り当て結果を解析することでトレース対象を特定し、ハードウェア記述用トレース記述を生成する方法である。
【０１０８】
図１３は、本発明の実施の形態４における高位合成装置の構成を示す概念図である。図１３において、高位合成装置Ａ４は、ハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３とトレース対象リスト生成手段１５を備えている。トレース対象リスト生成手段１５は、レジスタ割り当て結果１１を解析することでトレース対象リスト２２を生成する。ハードウェア記述用トレース記述生成手段１２は、トレース対象リスト２２とレジスタ割り当て結果１１からハードウェア記述用トレース記述２３を生成する。また、動作記述用トレース記述生成手段１３は、トレース対象リスト２２と動作記述２１から動作記述用トレース記述２４を生成する。
【０１０９】
動作記述２１とトレース対象リスト２２とレジスタ割り当て結果１１は、コンピュータ装置がアクセス可能な記憶領域に格納される。コンピュータ装置は、記憶領域にアクセスし、内部ＣＰＵを用いてハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３とトレース対象リスト生成手段１５の処理を行い、生成したハードウェア記述用トレース記述２３と動作記述用トレース記述２４を再び前記記憶領域へ出力する。
【０１１０】
不具合箇所を効率的に特定するためには、適切なトレース対象を選択する必要がある。動作記述２１の一連の演算処理を行う度に、最終結果が格納されるトレース対象の遷移履歴を取得することで、不具合箇所を迅速に特定することが可能になる。もし処理で誤りが発生した場合、演算の最終結果は誤った結果が得られる。そのため、最終結果が格納されるトレース対象の遷移履歴を取得することで、演算処理を行う度に演算が正しく行われたか確認することができる。
【０１１１】
そこで、トレース対象リスト生成手段１５は、レジスタ割り当て結果１１から演算の最終結果を格納するトレース対象を抽出し、トレース対象リスト２２を生成する。なお、トレース対象リスト生成手段１５が抽出するトレース対象は、効率的に検証を行うものであれはいかなるものでもよく、ここでは一例として演算の最終結果を格納するトレース対象を挙げている。
【０１１２】
以下、動作記述２１として図１７に示す動作記述（ｄ＝ａ＋ｂ；ｅ＝ｃ＊ｄ；ｂ＝ａ＋ｅ）を例にして説明する。
【０１１３】
トレース対象リスト生成手段１５は、図２０に示したレジスタ割り当て結果を解析する。図２０で示したレジスタ割り当て結果において、変数「ｂ」は、制御ステップ３にて、第１のレジスタ３６に演算の最終結果が格納される。よって、トレース対象リスト生成手段１５は、遷移履歴を取得するトレース対象として変数「ｂ」を抽出し、トレース対象リスト２２を生成する。
【０１１４】
ハードウェア記述用トレース記述生成手段１２は、トレース対象リスト２２とレジスタ割り当て結果１１からハードウェア記述用トレース記述２３を生成する。ハードウェア記述用トレース記述２３および動作記述用トレース記述２４を生成する手順については実施の形態１で説明したので、ここでは省略する。
【０１１５】
さらに、レジスタ割り当て結果１１において、変数の他に式がレジスタに割り当てられる場合もある。この場合にも、トレース対象リスト生成手段１５は、レジスタ割り当て結果１１を解析して、遷移履歴を取得すべき式を抽出することが可能である。
【０１１６】
さらに、トレース対象リスト生成手段１５は、レジスタ割り当て結果１１以外に、動作記述２１やライフタイム情報等のようなトレース対象の情報を含むいかなる記述からでも、それを解析することでトレース対象を抽出することが可能である。
【０１１７】
なお、図１３では高位合成装置Ａ４がトレース対象リスト２２を出力しているが、出力しなくとも、高位合成装置Ａ４の内部で遷移履歴を取得すべきトレース対象を自動認識して、ハードウェア記述用トレース記述生成手段１２は、認識したトレース対象とレジスタ割り当て結果１１からハードウェア記述用トレース記述２３を生成することが可能である。
【０１１８】
＜実施の形態５＞
これまで、レジスタに割り当てられるトレース対象に対応するハードウェア記述用トレース記述を生成する場合について説明したが、全てのトレース対象がレジスタに割り当てられない場合もあり得る。高位合成におけるスケジューリング処理では、ユーザが高位合成時に設定するクロック制約等の各種制約条件を満たすように、制御ステップ内に複数の演算を割り当てる。ＣＤＦＧにおいて、クロック境界を横切るデータ依存枝はレジスタに割り当てられるが、クロック境界を横切らずに制御ステップ内に存在する演算間を結びつけるデータ依存枝は一般にレジスタに割り当てられない。
【０１１９】
そこで、本発明の実施の形態５では、レジスタに割り当てられないトレース対象に対応するハードウェア記述中の信号を特定し、ハードウェア記述用トレース記述を生成する方法を示す。
【０１２０】
図１４は、本発明の実施の形態５にかかわる高位合成装置の構成を示す概念図である。図１４において、高位合成装置Ａ５は、ハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３を備えている。ハードウェア記述用トレース記述生成手段１２は、トレース対象リスト２２とデータパス対応情報１７とライフタイム情報１６からハードウェア記述用トレース記述２３を生成する。また、動作記述用トレース記述生成手段１３は、動作記述２１とトレース対象リスト２２から動作記述用トレース記述２４を生成する。
【０１２１】
動作記述２１とトレース対象リスト２２とライフタイム情報１６とデータパス対応情報１７は、コンピュータ装置がアクセス可能な記憶領域に格納される。コンピュータ装置は、記憶領域にアクセスし、内部ＣＰＵを用いてハードウェア記述用トレース記述生成手段１２と動作記述用トレース記述生成手段１３の処理を行い、生成したハードウェア記述用トレース記述２３と動作記述用トレース記述２４を再び前記記憶領域へ出力する。
【０１２２】
トレース対象がレジスタに割り当てられない場合に、そのトレース対象に対応するハードウェア記述用トレース記述２３を生成する方法を、図１７に示す動作記述（ｄ＝ａ＋ｂ；ｅ＝ｃ＊ｄ；ｂ＝ａ＋ｅ）を例にして説明する。ここでは、一例として、変数「ｄ」を、遷移履歴を取得するトレース対象として選択した場合について説明する。
【０１２３】
図１９で示したライフタイム情報では、変数「ｄ」は、クロック境界を横切らず、レジスタに割り当てられない変数である。図１７に示した動作記述から、図１９に示したライフタイム情報が生成される過程は従来技術にて説明した。
【０１２４】
一般に高位合成では、ＣＤＦＧ中のデータ依存枝とハードウェア中のデータパスとの対応関係が成り立つ。高位合成装置Ａ５が合成時に生成するデータ依存枝とデータパスとの対応関係を示すデータパス対応情報を図２２に示した。図１７に示した動作記述から、図２２に示したデータパス対応情報が生成される過程は従来技術にて説明した。図２２に示したデータパス対応情報には、図１８のＣＤＦＧにおけるデータ依存枝と、図２１のデータパスとの対応関係が示されている。図２２で示したデータパス対応情報は、図１８で示すＣＤＦＧのデータ依存枝ｒ１，ｒ２，ｒ３，ｒ４，ｒ５，ｒ６が、図２１で示すデータパスｐ１，ｐ２，ｐ３，ｐ４，ｐ５，ｐ６にそれぞれ対応していることを示している。ここで、変数「ｄ」は、図１８で示したＣＤＦＧのデータ依存枝ｒ３に対応している。よって、図２２に示したデータパス対応情報より、変数「ｄ」に対応するデータパスは、図５中のデータパスｐ３に対応している。よって、レジスタに割り当てられない変数であっても、対応するデータパスをデータパス対応情報１７から特定することが可能である。
【０１２５】
さらに、ライフタイム情報１６より、変数「ｄ」に対応する図２１中のデータパスｐ３の遷移履歴を取得する制御ステップを特定することが可能である。図１９に示したライフタイム情報では、変数「ｄ」は制御ステップ１に存在し、この制御ステップで遷移履歴を取得する必要がある。
【０１２６】
以上より、図２１中のデータパスｐ３に対応するハードウェア記述中の信号を、制御ステップ１の時点で取得することで、変数「ｄ」に対応するハードウェア記述中の信号の遷移履歴を取得することができる。ハードウェア記述用トレース記述生成手段１２が生成したハードウェア記述用トレース記述２３の一例を図１５に示す。なお、図１５では、記述言語としてＶｅｒｉｌｏｇ−ＨＤＬ言語を用いている。ここで、図１５中の信号「ｗｉｒｅ＿ｄ」は図２１中のデータパスｐ３に対応するハードウェア記述中の信号とする。図１５で示したハードウェア記述用トレース記述２３は、制御ステップ１の時点で、信号「ｗｉｒｅ＿ｄ」上のデータを出力する機能を持つ。
【０１２７】
また、動作記述用トレース記述生成手段１３が生成する変数「ｄ」の遷移履歴を取得するための動作記述用トレース記述２４を含んだ動作記述２１の一例を図１６に示す。図１６に示した動作記述２１では、記述言語としてＡＮＣＩ Ｃ言語を用いている。図１６に示した動作記述２１では、変数「ｄ」の遷移履歴を取得するためのトレース記述「ｐｒｉｎｔｆ（“ｄ＝％ｄ＼ｎ”，ｄ）」を動作記述２１の最終行に付加している。
【０１２８】
なお、ハードウェア記述用トレース記述生成手段１２は、レジスタに割り当てられない変数以外にも、レジスタに割り当てられない式に対応するハードウェア記述中の信号の遷移履歴を取得するためのハードウェア記述用トレース記述２３を生成することが可能である。また、動作記述用トレース記述生成手段１３は、変数以外にも、式の遷移履歴を取得する動作記述用トレース記述２４を生成することが可能である。
【０１２９】
なお、図１４では、トレース対象リスト２２は高位合成装置Ａ５の外部から与えているが、遷移履歴を取得するべきトレース対象は高位合成装置Ａ５の内部で認識させることも可能である。ハードウェア記述用トレース記述生成手段１２は、認識したトレース対象とライフタイム情報１６とデータパス対応情報１７からハードウェア記述用トレース記述２３を生成することが可能である。
【産業上の利用可能性】
【０１３０】
本発明の技術は、ハードウェア記述用トレース記述生成手段と動作記述用トレース記述生成手段を備え、高位合成装置が生成したハードウェア記述の動的検証等に有用である。
【図面の簡単な説明】
【０１３１】
【図１】本発明の実施の形態１における高位合成装置の構成を示す概念図
【図２】本発明の実施の形態１におけるハードウェア記述用トレース記述の一例を示す図
【図３】本発明の実施の形態１における動作記述用トレース記述の一例を示す図
【図４】本発明の実施の形態１における多くの演算が１行で記述される動作記述の一例を示す図
【図５】本発明の実施の形態１における式のライフタイム情報の一例を示す図
【図６】本発明の実施の形態１における式とレジスタの対応を表すレジスタ割り当て結果を示す図
【図７】本発明の実施の形態１における式の遷移履歴を取得するための動作記述用トレース記述の一例を示す図
【図８】本発明の実施の形態２における高位合成装置の構成を示す概念図
【図９】本発明の実施の形態２における参考情報を示す図
【図１０】本発明の実施の形態３における高位合成装置の構成を示す概念図
【図１１】本発明の実施の形態３におけるトレース対象の遷移履歴を取得するためのトレース記述を含んだ動作記述の一例を示す図
【図１２】本発明の実施の形態３におけるトレース対象リスト生成手段の動作を示すフローチャート
【図１３】本発明の実施の形態４における高位合成装置の構成を示す概念図
【図１４】本発明の実施の形態５における高位合成装置の構成を示す概念図
【図１５】本発明の実施の形態５におけるハードウェア記述用トレース記述の一例を示す図
【図１６】本発明の実施の形態５における動作記述用トレース記述の一例を示す図
【図１７】高位合成における動作記述の一例を示す図
【図１８】高位合成におけるスケジューリング処理の一例を示す図
【図１９】高位合成におけるライフタイム情報の一例を示す図
【図２０】高位合成におけるレジスタ割り当て結果の一例を示す図
【図２１】高位合成におけるデータパス生成結果の一例を示す図
【図２２】高位合成におけるデータパス対応情報の一例を示す図
【符号の説明】
【０１３２】
Ａ１〜Ａ５  高位合成装置
１１  レジスタ割り当て結果
１２  ハードウェア記述用トレース記述生成手段
１３  動作記述用トレース記述生成手段
１４  参考情報生成手段
１５  トレース対象リスト生成手段
１６  ライフタイム情報
１７  データパス対応情報
２１  動作記述
２２  トレース対象リスト
２３  ハードウェア記述用トレース記述
２４  動作記述用トレース記述
２５  参考情報
【図１】
2006338586.tif 000003
【図２】
2006338586.tif 000004
【図３】
2006338586.tif 000005
【図４】
2006338586.tif 000006
【図５】
2006338586.tif 000007
【図６】
2006338586.tif 000008
【図７】
2006338586.tif 000009
【図８】
2006338586.tif 000010
【図９】
2006338586.tif 000011
【図１０】
2006338586.tif 000012
【図１１】
2006338586.tif 000013
【図１２】
2006338586.tif 000014
【図１３】
2006338586.tif 000015
【図１４】
2006338586.tif 000016
【図１５】
2006338586.tif 000017
【図１６】
2006338586.tif 000018
【図１７】
2006338586.tif 000019
【図１８】
2006338586.tif 000020
【図１９】
2006338586.tif 000021
【図２０】
2006338586.tif 000022
【図２１】
2006338586.tif 000023
【図２２】
2006338586.tif 000024