(57)【要約】【課題】回路記述を検証するための検証パターンの作成効率を向上させる。【解決手段】変数変化順序解析部（０７０１）は、検証対象回路のアルゴリズムを検証するためのパターンを解析する。変数対アドレス解析部（０７０４）は、検証対象回路内のレジスタのアドレスと変数との関係を解析する。変数対入力ピン解析部（０７０７）は、検証対象回路のＨＷソースコードを解析する。テストパターン生成部（０７１１）は、ＨＷソースコード検証環境が使用するタスクが記述されるタスクライブラリ（０７０９）と、タスクライブラリに記述されるタスクを起動するタイミングが記述されるトリガ情報（０７１０）と、変数変化順序解析部（０７０１）と変数対アドレス解析部（０７０４）と変数対入力ピン解析部（０７０７）との解析結果とを解析して、ＨＷソースコード検証環境がＨＷソースコードを検証するためのパターンを生成する。【選択図】図７
2014232472.tif 000002
【特許請求の範囲】
【請求項１】
検証対象である検証対象回路のアルゴリズムが記述されるアルゴリズムソースコードに含まれる、前記検証対象回路のアルゴリズムを検証するためのパターンであるアルゴリズム検証パターンを解析するアルゴリズム検証パターン解析部と、
前記アルゴリズムソースコード内の前記検証対象回路のアルゴリズムが記述されているアルゴリズム記述を動作合成可能な記述に変更して生成された、前記検証対象回路のＨＷ（Ｈａｒｄｗａｒｅ）ソースコードを解析するＨＷソースコード解析部と、
前記ＨＷソースコードを検証するＨＷソースコード検証環境が前記ＨＷソースコードを検証する際に使用するタスクが記述されるタスクライブラリと、前記タスクライブラリに記述されるタスクを起動するタイミングが記述されるトリガ情報と、前記アルゴリズム検証パターン解析部の解析結果であるアルゴリズム検証パターン解析結果情報と、前記ＨＷソースコード解析部の解析結果であるＨＷソースコード解析結果情報とを解析して、前記ＨＷソースコード検証環境が前記ＨＷソースコードを検証するためのパターンであるＨＷソースコード検証パターンを生成するＨＷソースコード検証パターン生成部とを有することを特徴とする情報処理装置。
【請求項２】
前記アルゴリズム検証パターン解析部は、
前記アルゴリズム記述に含まれる変数に値を代入する手順が記述されているアルゴリズム検証パターンを解析し、変数と変数に代入される代入値との対が代入の順序に沿って記述されるアルゴリズム検証パターン解析結果情報を生成し、
前記ＨＷソースコード解析部は、
前記検証対象回路の入力ピンの識別子が前記アルゴリズム記述に含まれる変数と対応付けられているＨＷソースコードを解析し、前記ＨＷソースコードにおいて対応付けられている変数と入力ピンの識別子との対が記述されるＨＷソースコード解析結果情報を生成し、
前記ＨＷソースコード検証パターン生成部は、
前記アルゴリズム検証パターン解析結果情報と前記ＨＷソースコード解析結果情報とを解析し、対になっている変数が共通している入力ピンの識別子と代入値とを対応付けて、入力ピンの識別子と代入値との対が代入の順序に沿って記述されるＨＷソースコード検証パターンを生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ＨＷソースコード解析部は、
前記検証対象回路の入力ピンの識別子が前記アルゴリズム記述に含まれる変数と対応付けられ、更に、前記タスクライブラリに記述されるタスクが前記アルゴリズム記述に含まれる変数と対応付けられているＨＷソースコードを解析し、前記ＨＷソースコードにおいて対応付けられている変数と入力ピンの識別子との対が記述され、更に、前記ＨＷソースコードにおいて対応付けられている変数とタスクとの対が記述されるＨＷソースコード解析結果情報を生成し、
前記情報処理装置は、更に、
前記アルゴリズム記述に含まれる変数と、前記ＨＷソースコード検証環境がアクセスする前記検証対象回路内の記憶領域のアドレスとの対が記述される変数アドレス関係情報を生成する変数アドレス関係情報生成部を有し、
前記ＨＷソースコード検証パターン生成部は、
前記アルゴリズム検証パターン解析結果情報と前記ＨＷソースコード解析結果情報と前記変数アドレス関係情報とを解析し、
対になっている変数が共通している入力ピンの識別子と代入値とを対応付け、
対になっている変数が共通しているタスクとアドレスと代入値とを対応付け、
入力ピンの識別子と代入値との対と、タスクとアドレスと代入値との組とが、代入の順序に沿って記述されるＨＷソースコード検証パターンを生成することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記ＨＷソースコード解析部は、
前記タスクライブラリに記述される、前記ＨＷソースコード検証環境から前記検証対象回路内の記憶領域に値がライトされるライトタスクが前記アルゴリズム記述に含まれる変数と対応付けられて記述されているＨＷソースコードを解析し、
前記ＨＷソースコードにおいて対応付けられている変数とライトタスクとの対が記述されるＨＷソースコード解析結果情報を生成し、
前記変数アドレス関係情報生成部は、
前記アルゴリズム記述に含まれる変数と、前記ＨＷソースコード検証環境がライトタスクの実行の際に値をライトする、前記検証対象回路内の記憶領域のアドレスとの対が記述される変数アドレス関係情報を生成し、
前記ＨＷソースコード検証パターン生成部は、
対になっている変数が共通しているライトタスクとアドレスと代入値とを対応付け、
入力ピンの識別子と代入値との対と、ライトタスクとアドレスと代入値との組とが、代入の順序に沿って記述されるＨＷソースコード検証パターンを生成することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記ＨＷソースコード検証パターン生成部は、
前記トリガ情報に記述されるタイミングにて所定の入力信号の入力を待つことが記述されるＨＷソースコード検証パターンを生成することを特徴とする請求項１〜４のいずれかに記載の情報処理装置。 
【請求項６】
コンピュータが、検証対象である検証対象回路のアルゴリズムが記述されるアルゴリズムソースコードに含まれる、前記検証対象回路のアルゴリズムを検証するためのパターンであるアルゴリズム検証パターンを解析するアルゴリズム検証パターン解析ステップと、
前記コンピュータが、前記アルゴリズムソースコード内の前記検証対象回路のアルゴリズムが記述されているアルゴリズム記述を動作合成可能な記述に変更して生成された、前記検証対象回路のＨＷ（Ｈａｒｄｗａｒｅ）ソースコードを解析するＨＷソースコード解析ステップと、
前記コンピュータが、前記ＨＷソースコードを検証するＨＷソースコード検証環境が前記ＨＷソースコードを検証する際に使用するタスクが記述されるタスクライブラリと、前記タスクライブラリに記述されるタスクを起動するタイミングが記述されるトリガ情報と、前記アルゴリズム検証パターン解析ステップの解析結果であるアルゴリズム検証パターン解析結果情報と、前記ＨＷソースコード解析ステップの解析結果であるＨＷソースコード解析結果情報とを解析して、前記ＨＷソースコード検証環境が前記ＨＷソースコードを検証するためのパターンであるＨＷソースコード検証パターンを生成するＨＷソースコード検証パターン生成ステップとを有することを特徴とする情報処理方法。
【請求項７】
コンピュータを、請求項１に記載された情報処理装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路の検証に用いられる検証パターンを生成する技術に関する。
【背景技術】
【０００２】
ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の大規模化に伴い、ＬＳＩの設計を効率的に行うため、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を用いたサイクルレベル記述による設計ではなく、Ｃ言語を用いた動作レベル記述でＬＳＩを設計する設計手法が用いられている。
この場合、ＬＳＩを設計するＨＷ（Ｈａｒｄｗａｒｅ）設計者は、Ｃ言語などの汎用プログラミング言語を用い、設計対象のＨＷ動作の中核となるアルゴリズム記述を行なって、そのアルゴリズムの正当性を確認する。
その後、ＳｙｓｔｅｍＣなどのシステム設計言語を用いて、上記アルゴリズムを実現する回路を設計（記述）する。
そして、アルゴリズム記述の出力結果と回路記述の出力結果を比較して、回路記述の正当性を確認する。
【０００３】
しかしながら、前記アルゴリズム記述と、回路記述では、同じアルゴリズム、同じ記述言語を用いているにも関わらず、同じ検証パターンを使ってその記述の正当性を確認することが出来ない。
なぜならば、回路記述には実際の“物”に実装するための情報、例えば、入出力ピンの定義や、回路が所定の速度で動作するための遅延情報、および、周辺回路とのハンドシェイクを行うためのプロトコル記述など、アルゴリズムとは直接関係の無い時間概念を含んだ動作記述が追加されており、アルゴリズムを検証する検証パターンだけでは回路記述を動かすための情報が不足し、回路記述を動かすことが出来ないためである。
従って、アルゴリズムの正当性を確認することと、回路記述の正当性を確認することは似たような作業でありながら全く別物であり、似たような作業を２度行うことになるため、回路設計の設計効率を低下させる要因となっている。
【０００４】
上記のような問題を解決するため、特許文献１では、アルゴリズム記述と回路記述で共通する変数のペアを抽出し、この抽出結果をもとに変数のペアの値を比較・監視する検証環境を自動生成することで、設計効率の向上を図る手法が記述されている。
また、特許文献２では、回路設計に用いた設計仕様書と検証仕様、レジスタの種類、ＩＦ（Ｉｎｔｅｒｆａｃｅ）、ＦＩＦＯ（ＦｉｒｓｔＩｎ  ＦｉｒｓｔＯｕｔ）段数、バス幅などの情報が記載された検証手法ＤＢから、回路設計の正当性を確認する検証パターンを自動生成する手法が記述されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３０９６６６号公報
【特許文献２】特開２０１１−５３７６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の手法及び特許文献２の手法のいずれも、回路記述の正当性を確認する検証パターンは人手、あるいは、自動生成できるものの、検証パターンのひな形はやはり人手で作成する必要があり、回路記述の正当性を確認する検証パターンの作成効率は必ずしも高いとはいえない。
【０００７】
本発明は、このような事情に鑑みたものであり、回路記述の正当性を検証するための検証パターンの作成効率を向上させることを主な目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る情報処理装置は、
検証対象である検証対象回路のアルゴリズムが記述されるアルゴリズムソースコードに含まれる、前記検証対象回路のアルゴリズムを検証するためのパターンであるアルゴリズム検証パターンを解析するアルゴリズム検証パターン解析部と、
前記アルゴリズムソースコード内の前記検証対象回路のアルゴリズムが記述されているアルゴリズム記述を動作合成可能な記述に変更して生成された、前記検証対象回路のＨＷ（Ｈａｒｄｗａｒｅ）ソースコードを解析するＨＷソースコード解析部と、
前記ＨＷソースコードを検証するＨＷソースコード検証環境が前記ＨＷソースコードを検証する際に使用するタスクが記述されるタスクライブラリと、前記タスクライブラリに記述されるタスクを起動するタイミングが記述されるトリガ情報と、前記アルゴリズム検証パターン解析部の解析結果であるアルゴリズム検証パターン解析結果情報と、前記ＨＷソースコード解析部の解析結果であるＨＷソースコード解析結果情報とを解析して、前記ＨＷソースコード検証環境が前記ＨＷソースコードを検証するためのパターンであるＨＷソースコード検証パターンを生成するＨＷソースコード検証パターン生成部とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、アルゴリズム検証パターンを生成すれば、直ちにＨＷソースコードを検証するためのＨＷソースコード検証パターンを生成することが可能なので、検証効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るアルゴリズムモデルの例を示す図。
【図２】実施の形態１に係るアルゴリズムをＣ言語で記述したソースコードの例を示す図。
【図３】実施の形態１に係る回路モデルの例を示す図。
【図４】実施の形態１に係るアルゴリズムをＳｙｓｔｅｍＣで記述したソースコードの例を示す図。
【図５】実施の形態１に係る回路モデルを検証するための検証環境の例を示す図。
【図６】実施の形態１に係るタスクライブラリの例を示す図。
【図７】実施の形態１に係るハードウェア検証支援装置の構成例を示す図。
【図８】実施の形態１に係る変数変化順序情報の例を示す図。
【図９】実施の形態１に係る変数対アドレス対応情報の例を示す図。
【図１０】実施の形態１に係る変数対入力ピン対応情報の例を示す図。
【図１１】実施の形態１に係るトリガ情報の例を示す図。
【図１２】実施の形態１に係るＳｙｓｔｅｍＣ検証パターンの例を示す図。
【図１３】実施の形態１に係るテストベンチが生成する波形の例を示す図。
【図１４】実施の形態１に係るテストベンチ用のソースコードの例を示す図。
【図１５】実施の形態１に係るテストベンチ用のソースコードの例を示す図。
【図１６】実施の形態１に係る変数変化順序解析部の動作例を示すフローチャート図。
【図１７】実施の形態１に係る変数対入力ピン解析部の動作例を示すフローチャート図。
【図１８】実施の形態１に係るテストパターン生成部の動作例を示すフローチャート図。
【図１９】実施の形態１に係るハードウェア検証支援装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１１】
実施の形態１．
本実施の形態では、アルゴリズム記述の正当性を確認するためのアルゴリズム検証パターンと、回路記述を検証するための検証環境で定義される検証タスク情報、および信号のトリガ情報から、回路記述の正当性を確認するためのテストパターンを自動生成することで、回路記述用の検証パターン作成効率を向上させる構成を説明する。
【００１２】
本実施の形態では、非常に簡単なアルゴリズムモデルを用いて説明を行う。
これは、説明の簡明化のために簡単なアルゴリズムモデルを用いるのであって、発明の適用対象を限定するものではない。
【００１３】
図１に、本実施の形態で用いる検証対象回路のアルゴリズムモデル（０１００）を示す。
図１に示すように、このアルゴリズムモデル（０１００）は、関数ｆｕｎｃＡ（０１０１）が含まれ、関数ｆｕｎｃＡ（０１０１）の入力として、変数Ａ（０１０２）と変数Ｂ（０１０３）、出力として変数Ｚ（０１０４）、また、ｆｕｎｃＡ（０１０１）のパラメータ変数として変数Ｊ（０１０５）および変数Ｋ（０１０６）が定義されている。
【００１４】
図２は、図１で示したアルゴリズムモデル（０１００）を具体的にＣ言語で記述したアルゴリズムソースコード（０２００）を示す。
図２に示すとおり、ｍａｉｎ関数で、ｆｏｒループ内にｆｕｎｃＡ（０１０１）の検証パターン（符号０２０１の範囲）を記述している。
【００１５】
図３は、図１で示したアルゴリズムモデル（０１００）を回路記述に修正した場合の回路モデル（０３００）を示す。
図３に示すように、この回路モデル（０３００）は関数ｆｕｎｃＡ（０３０１）を含む。
また、関数ｆｕｎｃＡ（０３０１）の入力として変数Ａ（０３０２）および変数Ｂ（０３０３）、出力として変数Ｚ（０３０４）が定義されている。
更に、変数Ａ、Ｂに値を入力するための入力ピンＰｉｎＡ（０３０７）、ＰｉｎＢ（０３０８）、出力変数Ｚ（０３０４）の値を出力するピンＰｉｎＺ（０３０９）が定義されている。
更に、変数Ｊ、Ｋに値を設定するための外部ＩＦ（Ｉｎｔｅｒｆａｃｅ）としてＣＰＵバスＩＦ（０３１０）および、クロックピン、リセットピン（０３１１）が定義されている。
ここで、ＰｉｎＡ、ＰｉｎＢ、ＰｉｎＺは例えば３２ｂｉｔの幅を持つ入力ピンまたは出力ピンで、ＣＰＵバスＩＦは例えば制御信号として、アクセスリクエストピン、ライトイネーブルピン、アドレスピン、ライトデータピン、リードデータピンを持つ。
【００１６】
図４は、図３で示した回路モデル（０３００）を具体的にＳｙｓｔｅｍＣで記述したＨＷソースコード（０４００）を示す。
つまり、ＨＷソースコード（０４００）は、図２のアルゴリズムソースコード（０２００）内の検証対象回路のアルゴリズムが記述されているアルゴリズム記述を動作合成可能な記述に変更して生成された、検証対象回路のＨＷソースコードである。
図４の符号０４０１の記述では、ＰｉｎＡとＰｉｎＢが、ｆｕｎｃＡと対応付けられている。
ｆｕｎｃＡは、図２の符号０２０２の記述では、変数Ａと変数Ｂに対応付けられている。
このように、ＨＷソースコード（０４００）では、図２の符号０２０２の記述を介して、入力ピンの識別子（ＰｉｎＡとＰｉｎＢ）が変数（ＡとＢ）に対応付けられている。
【００１７】
図５は、図３で示した回路モデル（０３００）を検証するための検証環境の構成を示す。
ＨＷソースコード検証環境であるテストベンチ（０５００）の出力する信号により、回路モデル（０３００）の入力ピンが様々な組み合わせで駆動されて、回路モデル（０３００）が検証される。
また、テストベンチ（０５００）は外部からの入力信号ｅｎ（０５０２）により、回路モデル（０３００）に対して出力する信号のタイミングを制御できる構造となっている。
テストベンチ（０５００）は、入力ピンＰｉｎＡ（０３０７）から変数Ａ（０３０２）の値を回路モデル（０３００）に与える動作、入力ピンＰｉｎＢ（０３０８）から変数Ｂ（０３０３）の値を与える動作、ＣＰＵバスＩＦ（０３１０）から変数Ｊ（０３０５）の値及び変数Ｋ（０３０６）の値を回路モデル（０３００）内のレジスタに書き込む動作をエミュレートする。
【００１８】
テストベンチ（０５００）は、図１４及び図１５に示すテストベンチ用ソースコード１４０１〜１４０３を実行して、回路モデル（０３００）のＨＷソースコード（０４００）の正当性を検証する。
図１４の１４０２に示すように、後述するハードウェア検証支援装置によりＳｙｓｔｅｍＣ検証パターンが生成されると、このＳｙｓｔｅｍＣ検証パターンがテストベンチ用ソースコードに挿入される。
テストベンチ（０５００）は、ＳｙｓｔｅｍＣ検証パターンを含めてテストベンチ用ソースコードを実行して、回路モデル（０３００）のＨＷソースコード（０４００）の正当性を検証する。
【００１９】
また、図６に示すように、テストベンチ（０５００）はＣＰＵバスＩＦ（０３１０）のように複数の信号が順番に、または同時に駆動することで意味を持つような信号群を操作するための関数をタスクライブラリ（０６００）として持つ。
図６に示す例ではタスクライブラリ（０６００）に含まれるタスクとして、ｃｐｕｂｕｓ＿ｗｒｉｔｅ（０６０１）タスクとｃｐｕｂｕｓ＿ｒｅａｄ（０６０２）タスクがあり、ｃｐｕｂｕｓ＿ｗｒｉｔｅ（０６０１）タスクは、０６０３に示すようにＣＰＵバスＩＦに含まれる信号を駆動しながら、タスクの引き数（ａｄｄｒとｗｄａｔ）をアドレス信号、ライトデータ信号にそれぞれ代入している。
【００２０】
以上を用いて、アルゴリズム検証パターンから、ＨＷソースコードの検証パターンを生成する構成を説明する。
なお、ＨＷソースコードの検証パターンは、ＨＷソースコード検証パターン又は回路記述検証パターンともいう。
【００２１】
図７は、アルゴリズムＣ検証パターン（０７００）から回路記述検証パターン（図中のＳｙｓｔｅｍＣ検証パターン（０７１２））を生成するハードウェア検証支援装置（０７０）を示している。
【００２２】
ハードウェア検証支援装置（０７０）は、変数変化順序解析部（０７０１）、変数対アドレス解析部（０７０４）、変数対入力ピン解析部（０７０７）及びテストパターン生成部（０７１１）を有する。
【００２３】
変数変化順序解析部（０７０１）は、アルゴリズムＣ検証パターン（０７００）を解析する。
アルゴリズムＣ検証パターン（０７００）は、図２に示したアルゴリズムソースコード（０２００）内の検証パターン（図２の符号０２０１の範囲）である。
図２に示したように、アルゴリズムＣ検証パターン（０７００）には、アルゴリズムソースコード（０２００）内のアルゴリズム記述（図２の符号０２００内でｆｕｎｃＡの動作を定義している記述）に含まれる変数Ａ、Ｂ、Ｊ、Ｋに値を代入する手順が記述されている。
変数変化順序解析部（０７０１）は、アルゴリズムＣ検証パターン（０７００）を解析して、各変数と各変数に代入される代入値との対が代入の順序に沿って記述される変数変化順序情報（０７０２）を生成する。
変数変化順序情報（０７０２）は、例えば、図８に示す情報である。
図８に示すように、変数変化順序情報（０７０２）では、変数、Ａ、Ｂ、Ｊ、Ｋの値が代入の順序に沿って記述されている。
変数変化順序解析部（０７０１）は、アルゴリズム検証パターン解析部の例に相当する。
また、変数変化順序情報（０７０２）は、アルゴリズム検証パターン解析結果情報の例に相当する。
【００２４】
変数対アドレス解析部（０７０４）は、アルゴリズム記述に含まれる変数Ｊ、Ｋと、テストベンチ（０５００）がＣＰＵバスＩＦ（０３１０）を用いてアクセスするレジスタのアドレスとの対が記述される変数対アドレス対応情報（０７０５）を生成する。
変数対アドレス対応情報（０７０５）は、例えば、図９に示す情報である。
図９において、１及び２はレジスタのアドレスを表し、Ｊ及びＫは変数Ｊ及び変数Ｋを表す。
つまり、変数Ｊの値は、レジスタの１番のアドレスにライトされ、変数Ｋの値は、レジスタの２番のアドレスにライトされる。
変数対アドレス解析部（０７０４）は、ＳｙｓｔｅｍＣアドレスマップ（０７０３）から変数対アドレス対応情報（０７０５）を生成する。
変数対アドレス解析部（０７０４）は、変数アドレス関係情報生成部の例に相当する。
また、変数対アドレス対応情報（０７０５）は変数アドレス関係情報の例に相当する。
【００２５】
変数対入力ピン解析部（０７０７）は、図４に示したＨＷソースコード（０４００）であるＳｙｓｔｅｍＣソースコード（０７０６）を解析し、変数対入力ピン対応情報（０７０８）を生成する。
変数対入力ピン対応情報（０７０８）は、例えば、図１０に示す情報である。
図１０において、Ａ及びＢは変数Ａ及び変数Ｂを表し、ＰｉｎＡ及びＰｉｎＢは入力ピンＰｉｎＡ及び入力ピンＰｉｎＢを表す。
このように、変数対入力ピン対応情報（０７０８）には、変数と入力ピンの識別子との対が記述される。
また、図１０において、Ｊ及びＫは変数Ｊ及び変数Ｋを表し、２つのｃｐｕｂｕｓは、図６のタスクライブラリ（０６００）に示されているタスクｃｐｕｂｕｓ＿ｗｒｉｔｅ（ａｄｄｒ，ｗｄａｔ）を表す。
このように、変数対入力ピン対応情報（０７０８）は、変数とタスクライブラリに記述されるライトタスクとの対が記述される。
変数対入力ピン解析部（０７０７）は、ＨＷソースコード解析部の例に相当する。
また、変数対入力ピン対応情報（０７０８）は、ＨＷソースコード解析結果情報の例に相当する。
【００２６】
テストパターン生成部（０７１１）は、変数変化順序情報（０７０２）、変数対アドレス対応情報（０７０５）、変数対入力ピン対応情報（０７０８）、タスクライブラリ（０７０９）及びトリガ情報（０７１０）を用いて、ＳｙｓｔｅｍＣ検証パターン（０７１２）を生成する。
ＳｙｓｔｅｍＣ検証パターン（０７１２）は、例えば図１２の右側の情報である。
なお、図１２の左側には、理解を容易にするために、変数変化順序情報（０７０２）を記述している。
変数変化順序情報（０７０２）は、図８に示したものと同じである。
テストパターン生成部（０７１１）の動作及びＳｙｓｔｅｍＣ検証パターン（０７１２）の詳細は、後述する。
【００２７】
次に、本実施の形態に係るハードウェア検証支援装置（０７０）の動作例を説明する。
なお、図１６は、変数変化順序解析部（０７０１）の動作例を示すフローチャートであり、図１７は、変数対入力ピン解析部（０７０７）の動作例を示すフローチャートであり、図１８は、テストパターン生成部（０７１１）の動作例を示すフローチャートである。
【００２８】
まず、変数変化順序解析部（０７０１）が、アルゴリズムＣ検証パターン（０７００）を入力する（図１６のＳ１６０１）。
【００２９】
変数変化順序解析部（０７０１）は、次に、アルゴリズムＣ検証パターン（０７００）に従って各変数の代入値を代入の順に所定の記憶領域に記憶する（Ｓ１６０２）。
図２の例では、変数変化順序解析部（０７０１）は、変数Ａ、Ｂ、Ｊ、Ｋの代入値を代入順に記憶する。
【００３０】
変数変化順序解析部（０７０１）は、次に、Ｓ１６０２で記憶した変数ごとの代入値を代入の順序に従って記述して、変数変化順序情報（０７０２）を生成する（Ｓ１６０３）。
以上の手順により、変数変化順序解析部（０７０１）は、図８に例示する変数変化順序情報（０７０２）を生成する。
【００３１】
また、変数対アドレス解析部（０７０４）が、ＳｙｓｔｅｍＣアドレスマップ（０７０３）を入力し、ＳｙｓｔｅｍＣアドレスマップ（０７０３）から図９に例示する変数対アドレス対応情報（０７０５）を生成する。
ここで、ＳｙｓｔｅｍＣアドレスマップ（０７０３）とは、アルゴリズムモデルが組み込まれるシステムで定義されるシステムのアドレスマップを指す。
【００３２】
また、変数対入力ピン解析部（０７０７）が、アルゴリズムＣ検証パターン（０７００）とＳｙｓｔｅｍＣソースコード（０７０６）を入力する（図１７のＳ１７０１）。
【００３３】
変数対入力ピン解析部（０７０７）は、次に、アルゴリズムＣ検証パターン（０７００）ＳｙｓｔｅｍＣソースコード（０７０６）を検索し、変数と入力ピンの識別子との関係が表される記述を検出する（Ｓ１７０２）。
図２及び図４の例では、変数対入力ピン解析部（０７０７）は、符号０４０１の記述と符号０２０２の記述、符号０４０２の記述を抽出する。
【００３４】
次に、変数対入力ピン解析部（０７０７）は、変数対入力ピン対応情報（０７０８）を生成する（Ｓ１７０３）。
より具体的には、変数対入力ピン解析部（０７０７）は、符号０４０１の記述と符号０２０２の記述とから図１０の「Ａ：ＰｉｎＡ」と「Ｂ：ＰｉｎＢ」を生成し、符号０４０２の記述から図１０の「Ｊ：ｃｐｕｂｕｓ」と「Ｋ：ｃｐｕｂｕｓ」を生成する。
【００３５】
変数変化順序情報（０７０２）、変数対アドレス対応情報（０７０５）、変数対入力ピン対応情報（０７０８）が生成されると、テストパターン生成部（０７１１）がこれらの情報を入力する（図１８のＳ１８０１）。
【００３６】
次に、テストパターン生成部（０７１１）は、タスクライブラリ（０７０９）及びトリガ情報（０７１０）を入力する（Ｓ１８０２）。
タスクライブラリ（０７０９）は、図６に示したように、テストベンチ（０５００）で定義されるタスクライブラリ（０６００）をハードウェア検証支援装置（０７０）が読み込める形にデータベース化したものである。
トリガ情報（０７１０）は、変数変化順序情報（０７０２）に示される値のうちの特定の値が代入されるタイミングを規定する情報である。
トリガ情報（０７１０）は、例えば、図１１に示すように、代入の値と、そのトリガとなる信号を対にしてリスト化したものである。
図１１の例ではＡ＝５が代入されるタイミングは、ｅｎ信号のアサート時を意味している。
なお、トリガ情報（０７１０）は図１１のリストをテストパターン生成部（０７１１）が読み込める形にデータベース化したものである。
【００３７】
次に、テストパターン生成部（０７１１）は、変数対入力ピン対応情報（０７０８）に基づき、変数変化順序情報（０７０２）内の変数を用いた記述を、入力ピンの識別子を用いた記述に置換する（Ｓ１８０３）。
具体的には、図１２に示すように、変数変化順序情報（０７０２）内の変数Ａへの代入は、ＰｉｎＡへの代入に、変数Ｂへの代入はＰｉｎＢへの代入に置き換えられる（図１２の（１））。
【００３８】
また、テストパターン生成部（０７１１）は、変数対アドレス対応情報（０７０５）及び変数対入力ピン対応情報（０７０８）に基づき、変数変化順序情報（０７０２）内の変数を用いた記述を、ライトタスクとアドレスと代入値の識別子を用いた記述に置換する（Ｓ１８０４）。
つまり、ＣＰＵバスＩＦ（０３１０）への代入は、変数対アドレス対応情報（０７０５）及び変数対入力ピン対応情報（０７０８）により、ＣＰＵバスＩＦ（０３１０）を操作するタスクライブラリを用いた代入に置き換えられる。
具体的には、図１２に示すように、変数変化順序情報（０７０２）内のＪ＝５は、ｃｐｕｂｕｓ＿ｗｒｉｔｅ（１，５）に、Ｋ＝１０は、ｃｐｕｂｕｓ＿ｗｒｉｔｅ（２，１０）に置き換えられる（図１２の（２））。
なお、ｃｐｕｂｕｓ＿ｗｒｉｔｅ（１，５）における「１」は、図９に示されるアドレスである「１」に対応し、「５」は変数Ｊの代入値である「５」に対応する。
同様に、ｃｐｕｂｕｓ＿ｗｒｉｔｅ（２，１０）における「２」は、図９に示されるアドレスである「２」に対応し、「１０」は変数Ｋの代入値である「１０」に対応する。
【００３９】
次に、テストパターン生成部（０７１１）は、トリガ情報（０７１０）に基づき、変数変化順序情報（０７０２）に待機指示記述を挿入する（Ｓ１８０５）。
待機指示記述は、トリガ情報（０７１０）に記述されるタイミングにて所定の入力信号の入力を待つ旨の記述である。
具体的には、トリガ情報（０７１０）により、Ａ＝５を代入するタイミングの直前に、ｅｎ信号の立ち上がりを待つ待機指示記述が挿入される（図１２の（３））。
【００４０】
最後に、テストパターン生成部（０７１１）は、以上の手順にて変更された変数変化順序情報（０７０２）を、ＳｙｓｔｅｍＣ検証パターン（０７１２）として出力する（Ｓ１８０６）。
【００４１】
この結果、テストベンチ用ソースコード（図１４、図１５）に、ＳｙｓｔｅｍＣ検証パターン（０７１２）を挿入することができる。
テストベンチ（０５００）は、ＳｙｓｔｅｍＣ検証パターン（０７１２）が挿入された後のテストベンチ用ソースコードの実行ファイルを実行して、図１３に示すような波形を生成する。
そして、図１３の波形を用いて、図３で示した回路モデル（０３００）を検証することが可能となる。
【００４２】
このように、本実施の形態によれば、アルゴリズムＣの検証に用いる検証パターンから、回路モデルを検証するための検証パターンを自動的に生成することが可能となる。
このため、アルゴリズムの正当性を確認する検証パターンを作れば、直ちに回路モデルの正当性を検証するパターンを生成することが可能となるので、従来の検証手法に比較して回路モデルの検証効率を向上させることができる。
【００４３】
以上、本実施の形態では、アルゴリズムが記述されたアルゴリズムソースコードを検証するアルゴリズム検証パターンから、アルゴリズム記述を元に作成され動作合成可能な記述に変更されたＨＷソースコードを検証するＨＷソースコード検証パターンを自動的に生成するハードウェア検証支援装置を説明した。
【００４４】
より具体的には、
アルゴリズム検証パターンを解析するアルゴリズム検証パターン解析部と、
ＨＷソースコードを解析するＨＷソースコード解析部と、
アルゴリズム検証パターン解析部の解析結果、ＨＷソースコード解析部の解析結果、ＨＷソースコードを検証するＨＷソースコード検証環境で使用される検証タスクライブラリ、検証タスクライブラリに含まれる検証タスクを起動するタイミングを記述したトリガ情報から、ＨＷソースコードを検証するＨＷソースコード検証パターンを自動生成するＨＷソースコード検証パターン生成部を備えたハードウェア検証支援装置を説明した。
【００４５】
また、アルゴリズム検証パターン解析部が、アルゴリズム検証パターンから、検証パターン内でアルゴリズムソースを動作させるために使用している変数群と、それら変数群の変数に対してどのような値がどのような順番で代入されたかを解析し、その解析結果を出力することを説明した。
【００４６】
また、ＨＷソースコード解析部が、ＨＷソースコードに記述される入力ピンと、入力ピンで制御される変数群、および、ＨＷソースコードに記述されるアドレスマップと、アドレスマップに対応する変数群を解析し、その解析結果を出力することを説明した。
【００４７】
最後に、本実施の形態に示したハードウェア検証支援装置（０７０）のハードウェア構成例を図１９を参照して説明する。
ハードウェア検証支援装置（０７０）はコンピュータであり、ハードウェア検証支援装置（０７０）の各要素をプログラムで実現することができる。
ハードウェア検証支援装置（０７０）のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００４８】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。
主記憶装置９０３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、例えばＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
【００４９】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、図７に示す「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、図７に示す「〜部」の機能を実現するプログラムを実行する。
また、アプリケーション１０８も外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１により実行される。
また、本実施の形態の説明において、「〜の判断」、「〜の解析」、「〜の抽出」、「〜の特定」、「〜の置換」、「〜の挿入」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置９０３にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置９０３にファイルとして記憶されてもよい。
【００５０】
なお、図１９の構成は、あくまでもハードウェア検証支援装置（０７０）のハードウェア構成の一例を示すものであり、ハードウェア検証支援装置（０７０）のハードウェア構成は図１９に記載の構成に限らず、他の構成であってもよい。
【００５１】
また、本実施の形態に示す手順により、本発明に係る情報処理方法を実現可能である。
【符号の説明】
【００５２】
０７０  ハードウェア検証支援装置、０１００  アルゴリズムモデル、０２００  アルゴリズムソースコード、０３００  回路モデル、０４００  ＨＷソースコード、０５００  テストベンチ、０６００  タスクライブラリ、０７００  アルゴリズムＣ検証パターン、０７０１  変数変化順序解析部、０７０２  変数変化順序情報、０７０３  ＳｙｓｔｅｍＣアドレスマップ、０７０４  変数対アドレス解析部、０７０５  変数対アドレス対応情報、０７０６  ＳｙｓｔｅｍＣソースコード、０７０７  変数対入力ピン解析部、０７０８  変数対入力ピン対応情報、０７０９  タスクライブラリ、０７１０  トリガ情報、０７１１  テストパターン生成部。
【図１】
2014232472.tif 000003
【図２】
2014232472.tif 000004
【図３】
2014232472.tif 000005
【図４】
2014232472.tif 000006
【図５】
2014232472.tif 000007
【図６】
2014232472.tif 000008
【図７】
2014232472.tif 000009
【図８】
2014232472.tif 000010
【図９】
2014232472.tif 000011
【図１０】
2014232472.tif 000012
【図１１】
2014232472.tif 000013
【図１２】
2014232472.tif 000014
【図１３】
2014232472.tif 000015
【図１４】
2014232472.tif 000016
【図１５】
2014232472.tif 000017
【図１６】
2014232472.tif 000018
【図１７】
2014232472.tif 000019
【図１８】
2014232472.tif 000020
【図１９】
2014232472.tif 000021