(57)【要約】      （修正有）【課題】ユーザプログラムコードに基づいたアサーション生成装置及び方法、アサーションを利用したプロセッサ検証装置及び方法を提供する。【解決手段】ユーザプログラムコードに基づいたアサーション生成方法は、少なくとも１つのアサーション生成構文を含むユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を受信する段階１１０と、ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報に基づいて、少なくとも１つのアサーション生成構文によって指定されたユーザプログラムのコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階１３０と、を含みうる。【選択図】図１
2014053011.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、
前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、
を含むユーザプログラムコードに基づいたアサーション生成方法。
【請求項２】
前記少なくとも１つのアサーション生成構文は、
前記ユーザプログラムに含まれた複数のコードのうち、前記プロセッサの動作確認が必要なコードを指定する請求項１に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項３】
前記アサーションを生成する段階は、
前記少なくとも１つのアサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、前記プロセッサの動作確認が必要なコードを判断する段階と、
前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する段階と、
を含む請求項１又は２に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項４】
前記アサーションを生成する段階において、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成する請求項３に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項５】
前記アサーションを生成する段階において、ハードウェア記述言語を用いて前記アサーションを生成する請求項１〜４の何れか一項に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項６】
前記アサーションを生成する段階において、前記少なくとも１つのアサーション生成構文にそれぞれに対応するアサーションを生成する請求項１〜５の何れか一項に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項７】
少なくとも１つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける入力部と、
前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成するアサーション生成部と、
を含むユーザプログラムコードに基づいたアサーション生成装置。
【請求項８】
前記少なくとも１つのアサーション生成構文は、
ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定する請求項７に記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項９】
前記アサーション生成部は、
前記少なくとも１つのアサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断し、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する請求項７又は８に記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項１０】
前記アサーション生成部は、
前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成する請求項９に記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項１１】
前記アサーション生成部は、
ハードウェア記述言語を用いて前記アサーションを生成する請求項７〜１０の何れか一項に記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項１２】
前記アサーション生成部は、
前記少なくとも１つのアサーション生成構文にそれぞれに対応するアサーションを生成する請求項７〜１１の何れか一項に記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項１３】
少なくとも１つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、
前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、
前記コンパイル結果をレジスタ伝送レベルのプロセッサモデルでシミュレーションして、前記プロセッサモデルで前記アサーションに記述された動作が行われるか否かを検証する段階と、
を含むアサーションを利用したプロセッサ検証方法。
【請求項１４】
前記少なくとも１つのアサーション生成構文のそれぞれは、
前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定する請求項１３に記載のアサーションを利用したプロセッサ検証方法。
【請求項１５】
前記アサーションを生成する段階は、
前記アサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断する段階と、
前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する段階と、
を含む請求項１３又は１４に記載のアサーションを利用したプロセッサ検証方法。
【請求項１６】
前記アサーションを生成する段階において、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成する請求項１５に記載のアサーションを利用したプロセッサ検証方法。
【請求項１７】
前記アサーションを生成する段階において、ハードウェア記述言語を用いて前記アサーションを生成する請求項１３〜１６の何れか一項に記載のアサーションを利用したプロセッサ検証方法。
【請求項１８】
前記アサーションを生成する段階において、前記少なくとも１つのアサーション生成構文にそれぞれに対応するアサーションを生成する請求項１３〜１７の何れか一項に記載のアサーションを利用したプロセッサ検証方法。
【請求項１９】
前記シミュレーションする段階において、前記アサーションを前記プロセッサモデルに挿入し、前記コンパイル結果を用いてアサーションが挿入された前記プロセッサモデルをシミュレーションする請求項１３〜１８の何れか一項に記載のアサーションを利用したプロセッサ検証方法。
【請求項２０】
少なくとも１つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける入力部と、
前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成するアサーション生成部と、
前記コンパイル結果をレジスタ伝送レベルのプロセッサモデルでシミュレーションして、前記プロセッサモデルで前記アサーションに記述された動作が行われるか否かを検証する検証部と、
を含むアサーションを利用したプロセッサ検証装置。
【請求項２１】
前記少なくとも１つのアサーション生成構文のそれぞれは、
前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定する請求項２０に記載のアサーションを利用したプロセッサ検証装置。
【請求項２２】
前記アサーション生成部は、
前記少なくとも１つのアサーション生成構文を解釈して、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断し、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する請求項２０又は２１に記載のアサーションを利用したプロセッサ検証装置。
【請求項２３】
前記アサーション生成部は、
前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成する請求項２２に記載のアサーションを利用したプロセッサ検証装置。
【請求項２４】
前記アサーション生成部は、
ハードウェア記述言語を用いて前記アサーションを生成する請求項２０−２２の何れか１項に記載のアサーションを利用したプロセッサ検証装置。
【請求項２５】
前記アサーション生成部は、
前記少なくとも１つのアサーション生成構文にそれぞれに対応するアサーションを生成する請求項２０〜２４の何れか一項に記載のアサーションを利用したプロセッサ検証装置。
【請求項２６】
前記検証部は、
前記アサーションを前記プロセッサモデルに挿入し、前記コンパイル結果を用いてアサーションが挿入された前記プロセッサモデルをシミュレーションする請求項２０〜２５の何れか一項に記載のアサーションを利用したプロセッサ検証装置。
【請求項２７】
ユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を受信する段階と、
ユーザプログラムに含まれた複数のコードからコードを決定するためのアサーション生成構文を解釈する段階と、
前記ユーザプログラムの前記コードが実行される時点を決定する段階と、
前記時点に前記ユーザプログラムの前記コードを実行する機能ブロックを決定する段階と、
前記ユーザプログラムの前記コードが実行される時点にアサーションを生成する段階と、
を含むユーザプログラムコードに基づいたアサーション生成方法。
【請求項２８】
前記コードは、前記プロセッサの動作の確認を要求する請求項２７に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項２９】
前記実行される時点及び前記機能ブロックは、前記ユーザプログラムのコンパイル結果に含まれたスケジュール情報及び前記プロセッサのアーキテクチャー情報に基づいて決定される請求項２７又は２８に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項３０】
前記生成されたアサーションは、前記ユーザプログラムの前記コードが実行される時、前記時点で前記プロセッサの機能ブロックが行わなければならない動作を記述する請求項２７〜２９の何れか一項に記載のユーザプログラムコードに基づいたアサーション生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の例示的な実施形態は、プロセッサ検証のためのアサーション生成及びアサーションを利用したプロセッサ検証等に関する。
【背景技術】
【０００２】
プロセッサの機能検証（ｆｕｎｃｔｉｏｎａｌ  ｖｅｒｉｆｉｃａｔｉｏｎ）は、プロセッサのアーキテクチャー仕様（ａｒｃｈｉｔｅｃｔｕｒｅ  ｓｐｅｃ）とレジスタ伝送レベル（ＲＴＬ：Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）とに設計されたプロセッサが論理的に同じ動作を行うかを検証することである。このために、回帰テスト（ｒｅｇｒｅｓｓｉｏｎ  ｔｅｓｔ）、ランダムテスト（ｒａｎｄｏｍ  ｔｅｓｔ）など多様なテストケース（ｔｅｓｔ  ｃａｓｅ）を、設計されたプロセッサに適用して検証を行っており、十分に多様な設計機能を検証したかを確認するために、テストカバレッジ（ｔｅｓｔ  ｃｏｖｅｒａｇｅ）を測定している。
【０００３】
テストカバレッジは、大きくコードカバレッジ（ｃｏｄｅ  ｃｏｖｅｒａｇｅ）と機能カバレッジ（ｆｕｎｃｔｉｏｎａｌ  ｃｏｖｅｒａｇｅ）とに分けることができる。コードカバレッジは、テストケースを利用したシミュレーション遂行中に設計したコードをどれほど漏らさずによくテストするかを表わす指標である。また、機能カバレッジは、テストケースを利用したシミュレーション遂行中にエンジニアが測定しようとする機能の実行如何に対する指標である。
【０００４】
機能カバレッジは、検証しようとするプロセッサの動作のうち、必ずしも行わなければならない動作、または絶対に起こってはならない動作に対するアサーション（ａｓｓｅｒｔｉｏｎ）を設計して、アサーションの実行如何を測定する方式である。
【０００５】
アサーション基盤検証技法（ＡＢＶ：Ａｓｓｅｒｔｉｏｎ  Ｂａｓｅｄ  Ｖｅｒｉｆｉｃａｔｉｏｎ）は、設計されたプロセッサ検証にアサーションを挿入してシミュレーションを行って、挿入されたアサーションのモニタまたはチェック（ｃｈｅｃｋ）機能を通じてエラー検出地点を容易に探すことができて、検証時間が短縮されるという長所がある。
【０００６】
しかし、アサーションは、ユーザがプロセッサのアーキテクチャー仕様（ｓｐｅｃ）に基盤して設計を行わなければならず、仕様変更時ごとに再設計を行わなければならない。また、設計したアサーションが正しく設計されたかの追加的な検証が必要なので、アサーション設計に多くの時間と人力とが要求される。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、ユーザプログラムコードに基づいたアサーション生成装置及び方法、アサーションを利用したプロセッサ検証装置及び方法を提供することである。
【課題を解決するための手段】
【０００８】
実施の形態によるアサーション生成方法は、
少なくとも１つのアサーション生成構文（ａｓｓｅｒｔｉｏｎ  ｄｉｒｅｃｔｉｖｅ）を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、
前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、
を含むユーザプログラムコードに基づいたアサーション生成方法である。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態によるアサーション生成装置の構成図である。
【図２】本発明の一実施形態によるプロセッサ検証装置の構成図である。
【図３】ユーザプログラムの例示図である。
【図４】図３のユーザプログラムに対するコンパイル結果の例示図である。
【図５】生成されたアサーションの例示図である。
【図６】本発明の一実施形態によるアサーション生成方法のフローチャートである。
【図７】本発明の一実施形態によるアサーション生成方法の詳細フローチャートである。
【図８】本発明の一実施形態によるプロセッサ検証方法のフローチャートである。
【発明を実施するための形態】
【００１０】
＜実施の形態の概要＞
本発明の例示的な実施形態の一態様によれば、ユーザプログラムコードに基づいたアサーション生成方法が提供され、前記方法は、少なくとも１つのアサーション生成構文（ａｓｓｅｒｔｉｏｎ  ｄｉｒｅｃｔｉｖｅ）を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、を含む。
【００１１】
前記少なくとも１つのアサーション生成構文は、前記ユーザプログラムに含まれた複数のコードのうち、前記プロセッサの動作確認が必要なコードを指定することができる。
【００１２】
前記アサーションを生成する段階は、前記少なくとも１つのアサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、前記プロセッサの動作確認が必要なコードを判断する段階と、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する段階と、を含みうる。
【００１３】
前記アサーションを生成する段階は、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成することができる。前記アサーションを生成する段階は、ハードウェア記述言語を用いて前記アサーションを生成することができる。前記アサーションを生成する段階は、前記少なくとも１つのアサーション生成構文にそれぞれに対応するアサーションを生成することができる。
【００１４】
本発明の例示的な実施形態の他の側面によれば、アサーション生成装置が提供され、前記アサーション生成装置は、少なくとも１つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける入力部と、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成するアサーション生成部と、を含む。
【００１５】
前記少なくとも１つのアサーション生成構文は、ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定することができる。
【００１６】
前記アサーション生成部は、前記少なくとも１つのアサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断し、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断することができる。
【００１７】
前記アサーション生成部は、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成することができる。前記アサーション生成部は、ハードウェア記述言語を用いて前記アサーションを生成することができる。前記アサーション生成部は、前記少なくとも１つのアサーション生成構文にそれぞれに対応するアサーションを生成することができる。
【００１８】
本発明の例示的な実施形態の他の態様によれば、プロセッサ検証方法が提供され、前記方法は、少なくとも１つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、前記コンパイル結果をレジスタ伝送レベルのプロセッサモデルでシミュレーションして、前記プロセッサモデルで前記アサーションに記述された動作が行われるか否かを検証する段階と、を含む。
【００１９】
前記少なくとも１つのアサーション生成構文のそれぞれは、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定することができる。
【００２０】
前記アサーションを生成する段階は、前記アサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断する段階と、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する段階と、を含みうる。
【００２１】
前記アサーションを生成する段階は、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成することができる。前記アサーションを生成する段階は、ハードウェア記述言語を用いて前記アサーションを生成することができる。前記アサーションを生成する段階は、前記少なくとも１つのアサーション生成構文にそれぞれに対応するアサーションを生成することができる。
【００２２】
前記シミュレーションする段階は、前記アサーションを前記プロセッサモデルに挿入し、前記コンパイル結果を用いてアサーションが挿入された前記プロセッサモデルをシミュレーションすることができる。
【００２３】
本発明の例示的な実施形態の他の態様によれば、プロセッサ検証装置が提供され、前記プロセッサ検証装置は、少なくとも１つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける入力部と、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成するアサーション生成部と、前記コンパイル結果をレジスタ伝送レベルのプロセッサモデルでシミュレーションして、前記プロセッサモデルで前記アサーションに記述された動作が行われるか否かを検証する検証部と、を含む。
【００２４】
前記少なくとも１つのアサーション生成構文のそれぞれは、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定することができる。
【００２５】
前記アサーション生成部は、前記少なくとも１つのアサーション生成構文を解釈して、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断し、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも１つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断することができる。
【００２６】
前記アサーション生成部は、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成することができる。前記アサーション生成部は、ハードウェア記述言語を用いて前記アサーションを生成することができる。前記アサーション生成部は、前記少なくとも１つのアサーション生成構文にそれぞれに対応するアサーションを生成することができる。
【００２７】
前記検証部は、前記アサーションを前記プロセッサモデルに挿入し、前記コンパイル結果を用いてアサーションが挿入された前記プロセッサモデルをシミュレーションすることができる。
【００２８】
本発明の例示的な実施形態のさらに他の追加的な実施形態によれば、ユーザプログラムコードに基づいたアサーション生成方法は、ユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を受信する段階と、ユーザプログラムに含まれた複数のコードからコードを決定するためのアサーション生成構文を解釈する段階と、前記ユーザプログラムの前記コードが実行される時点を決定する段階と、前記時点に前記ユーザプログラムの前記コードを実行する機能ブロック（ｆｕｎｃｔｉｏｎａｌ  ｂｌｏｃｋ）を決定する段階と、前記ユーザプログラムの前記コードが実行される時点にアサーションを生成する段階と、を含みうる。
【００２９】
＜実施の形態の詳細な説明＞
以下、添付図面を参照して、実施形態を詳しく記述する。
【００３０】
図１は、本発明の一実施形態によるアサーション生成装置１００の構成図である。図１を参照すると、アサーション生成装置１００は、ハードウェア記述言語（ＨＤＬ：Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を用いてレジスタ伝送レベル（ＲＴＬ）にモデリングされたプロセッサの動作を検証するためのアサーションを生成する。
【００３１】
アサーションは、プログラムランタイム中にプロセッサが必ずしも実行しなければならない動作を記述（ｓｔａｔｅｍｅｎｔ）したものである。例えば、アサーションは、必ずしも実行しなければならない動作条件を宣言し、ユーザプログラムランタイム中にプロセッサがアサーションに宣言された動作条件を満足しない時、エラーを出力するように記述されうる。
【００３２】
一方、アサーション生成装置１００は、入力部１１０及びアサーション生成部１３０を含みうる。
【００３３】
入力部１１０は、ユーザプログラム、ユーザプログラムに対するコンパイル結果及び検証対象であるプロセッサのアーキテクチャー情報を入力される（入力を受信する）。ユーザプログラムは、プロセッサの動作検証のために、プログラマーによって任意に作成されたものであって、１つ以上のアサーション生成構文を含みうる。
【００３４】
アサーション生成構文は、ユーザプログラムのコードのうち、検証対象であるプロセッサでの動作確認が必要なコードを指定する。具体的に、ユーザは、ユーザプログラムのコードのうち、検証対象であるプロセッサの動作確認が必要な部分にアサーション生成構文を挿入することによって、アサーション生成を指定することができる。
【００３５】
図３に示された例示的なユーザプログラムを参照すると、アサーション生成構文３００は、ループ遂行カウント値（ｉ）が３である時、‘Ａ［ｉ］＝ｒｅｓｕｌｔ’を行うプロセッサの動作を確認するためのアサーションを生成するように指定する。このようなアサーション生成構文は、１つのユーザプログラム内に１つ以上が挿入されうる。
【００３６】
一方、プロセッサアーキテクチャー情報は、検証対象プロセッサに含まれた機能ブロック数と種類、機能ブロックの間の内部結線及び制御流れなど設計されたプロセッサの構造に関する情報を含みうる。
【００３７】
ユーザプログラムに対するコンパイル結果は、ユーザプログラムを検証対象プロセッサで即時実行できるように、コンパイラによって変換されたバイナリコードを意味する。
【００３８】
一方、アサーション生成部１３０は、入力されたユーザプログラムのソースコード、ユーザプログラムに対するコンパイル結果及びプロセッサのアーキテクチャー情報に基づいてアサーションを生成する。
【００３９】
アサーション生成部１３０は、ユーザプログラムに含まれたアサーション生成構文を解釈して、ユーザプログラムのコードのうち、プロセッサの動作確認が必要なコードを把握することができる。例えば、図３のアサーション生成構文３００の場合、ループ遂行カウント値（ｉ）が３であることを条件として、変数Ａ［ｉ］を保存するプロセッサの機能ブロックに保存された値を確認するためのアサーションを生成しなければならないことを記述している。したがって、アサーション生成部１３０は、アサーション生成構文３００からループ遂行カウント値（ｉ）が３である時、‘Ａ［ｉ］＝ｒｅｓｕｌｔ’を行うプロセッサの動作を確認しなければならないことを把握することができる。
【００４０】
アサーション生成構文３００の解釈のみでは、アサーション生成構文３００によって指定されたコードがプロセッサの如何なる機能ブロックで如何なる時点に実行されるかが分からない。したがって、アサーション生成構文によって指定された動作が、実際のプロセッサで如何に実行されるかを把握するためには、ユーザプログラムに対するコンパイル結果とプロセッサのアーキテクチャー情報とが必要である。
【００４１】
例えば、アサーション生成構文が、ユーザプログラムのコードに含まれた特定の乗算演算を行うプロセッサの動作を確認することを指定している場合、アサーション生成のためには、ユーザプログラムのコンパイル結果に含まれたスケジュール情報及びプロセッサのアーキテクチャー情報から当該乗算演算を実行するプロセッサの機能ブロックの動作と実行サイクルとが把握されなければならない。
【００４２】
してみれば、アサーション生成部１３０は、ユーザプログラムに対するコンパイル結果及びプロセッサアーキテクチャー情報に基づいて、アサーション生成構文によって指定されたプログラムコードを実行しなければならないプロセッサの機能ブロック及び実行時点を判断することができる。さらに、ユーザプログラムに対するコンパイル結果は、ユーザプログラムがプロセッサで即時実行できるように、プロセッサのアーキテクチャーに合わせてスケジューリングされたスケジュール情報を含んでいる。してみれば、このようなスケジューリング情報とプロセッサのアーキテクチャー情報とに基づいて、アサーション生成構文によって指定されたユーザプログラムの特定のコードがプロセッサの如何なる機能ブロックで如何なるサイクルに実行されなければならないかを把握することができる。
【００４３】
具体例として、図３に示されたユーザプログラムは、図４のようにスケジュールされる。図４で、ＦＵ＃００−ＦＵ＃０９は、プロセッサに含まれた機能ユニット（Ｆｕｎｃｔｉｏｎ  Ｕｎｉｔ）を表わし、それぞれの機能ユニットには、それぞれのサイクルで実行するオペレーションが割り当てられる。一方、図４のスケジュール情報でアサーション生成構文３００のループ遂行カウント値が３である時、‘Ａ［ｉ］＝ｒｅｓｕｌｔ’動作は、２２番目のサイクルにＦＵ＃００に割り当てられることが分かる。したがって、アサーション生成部１３０は、図５に示された例のように、ループ遂行カウント値を表わす変数ｉ値がマッピングされたＦＵ＃０５の値が０であれば、ループが始まったと見なす。してみれば、２２サイクル以後にＦＵ＃００に保存された値を確認するアサーションが生成されうる。
【００４４】
一方、ユーザプログラムに挿入されたアサーション生成構文が１つ以上である場合、アサーション生成部１３０は、それぞれのアサーション生成構文に対応するアサーションを生成することができる。
【００４５】
また、アサーション生成部１３０は、例えば、Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＶＨＤＬ、Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ、ＨＤＶＬのようなハードウェア記述言語（ＨＤＬ）を用いてアサーションを生成することができる。
【００４６】
図２は、本発明の一実施形態によるプロセッサ検証装置２３０の構成図である。図２を参照すると、プロセッサ検証装置２３０は、Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＶＨＤＬ（Ｖｈｓｉｃ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、ＨＤＶＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  ａｎｄ  Ｖｅｒｉｆｉｃａｔｉｏｎ  Ｌａｎｇｕａｇｅ）のようなハードウェア記述言語（ＨＤＬ）を用いてレジスタ伝送レベル（ＲＴＬ）でモデリングされたプロセッサの動作を検証するためのものである。
【００４７】
コンパイラ２１０は、プロセッサ検証のためのユーザプログラムの設計されたプロセッサのアーキテクチャーに合わせてユーザプログラムのコードを変換し、プロセッサ内部の機能ブロックにスケジュールして、設計されたプロセッサで実行するバイナリコードを生成する。この際、ユーザプログラムは、少なくとも１つのアサーション生成構文を含みうる。
【００４８】
一方、プロセッサ検証装置２３０は、入力部２３１、アサーション生成部２３３及び検証部２３５を含みうる。
【００４９】
入力部２３１は、ユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報を入力される（入力を受信する）。この際、ユーザプログラムのコンパイル結果は、コンパイラ２１０によって提供されうる。また、ユーザプログラム及びプロセッサアーキテクチャー情報は、ユーザによって入力されうる。
【００５０】
アサーション生成部２３３は、図１に示されたアサーション生成装置１００に対応するものであって、入力部２３１を通じて入力されたユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を用いてアサーションを生成することができる。
【００５１】
この際、アサーションは、Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＶＨＤＬ、Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ、ＨＤＶＬのようなハードウェア記述言語（ＨＤＬ）を用いて生成されうる。
【００５２】
具体的に、アサーション生成部２３３は、ユーザプログラムに含まれたアサーション生成構文を解釈して、ユーザプログラムのコードのうち、プロセッサの動作確認が必要なコードを把握することができる。また、アサーション生成部２３３は、コンパイル結果に含まれたスケジュール情報及びプロセッサアーキテクチャー情報からアサーション生成構文によって指定されたユーザプログラムのコード実行によるプロセッサの動作が、如何なる実行サイクルに如何なる機能ブロックで実行されるかを判断し、プロセッサで行わなければならない動作を記述するアサーションを生成することができる。
【００５３】
一方、検証部２３５は、入力部２３１を通じて入力されたユーザプログラムのコンパイル結果をレジスタ伝送レベルで設計されたプロセッサモデルでシミュレーションして、アサーション生成部２３３から生成されたアサーションに記述された動作が行われるか否かを検証することができる。
【００５４】
具体的に、検証部２３５は、プロセッサ設計階層（Ｐｒｏｃｅｓｓｏｒ  ｄｅｓｉｇｎｈｉｅｒａｒｃｈｙ）情報に基づいて、アサーション生成部２３３から生成されたアサーションをプロセッサモデルに挿入することができる。以後、検証部２３５は、ユーザプログラムに対するコンパイル結果をアサーションが挿入されたプロセッサモデルでシミュレーションすることができる。この際、検証部２３５は、シミュレーション中にアサーションに記述された動作が行われるか否かを確認することによって、プロセッサの動作を検証することができる。
【００５５】
図６は、本発明の一実施形態によるアサーション生成方法のフローチャートである。図６を参照すると、アサーション生成装置１００は、ユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報を入力されうる（６１０）。
【００５６】
この際、ユーザプログラムは、少なくとも１つのアサーション生成構文を含みうる。
【００５７】
一方、アサーション生成装置１００は、ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報に基づいて、アサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成することができる（６２０）。この際、アサーションは、Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＶＨＤＬ、Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ、ＨＤＶＬのようなハードウェア記述言語（ＨＤＬ）を用いて生成されうる。
【００５８】
また、ユーザプログラムに含まれたアサーション生成構文が１つ以上である場合、アサーション生成装置は、それぞれのアサーション生成構文に対応するアサーションを生成することができる（６３０）。
【００５９】
図７は、本発明の一実施形態によるアサーション生成方法の詳細フローチャートである。図７を参照すると、アサーション生成装置１００は、１つ以上のアサーション生成構文を含むユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を受信することができる（７１０）。
【００６０】
アサーション生成装置１００は、アサーション生成構文を解釈して、ユーザプログラムに含まれたコードのうち、プロセッサの動作確認が必要なコードを判断することができる（７３０）。
【００６１】
以後、アサーション生成装置１００は、ユーザプログラムのコンパイル結果に含まれたスケジュール情報及びプロセッサアーキテクチャー情報に基づいて、アサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断することができる（７５０）。
【００６２】
以後、アサーション生成装置１００は、アサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない時点でプロセッサの機能ブロックが行わなければならない動作を記述するアサーションを生成することができる（７７０）。
【００６３】
図８は、本発明の一実施形態によるプロセッサ検証方法のフローチャートである。図８を参照すると、プロセッサ検証装置２３０は、少なくとも１つのアサーション生成構文を含むユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報を入力されうる（８１０）。
【００６４】
以後、プロセッサ検証装置２３０は、入力されたユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報に基づいて、アサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成することができる（８３０）。この際、プロセッサ検証装置２３０は、図７に示された手続きと同じ手続きを通じてアサーションを生成することができる。
【００６５】
また、プロセッサ検証装置２３０は、ハードウェア記述言語を用いてアサーションを生成し、ユーザプログラムが複数のアサーション生成構文を含む場合、プロセッサ検証装置２３０は、それぞれのアサーション生成構文に対応するアサーションを生成することができる。
【００６６】
一方、プロセッサ検証装置２３０は、入力されたユーザプログラムのコンパイル結果をレジスタ伝送レベルで設計されたプロセッサモデルでシミュレーションして、プロセッサモデルでアサーションに記述された動作が行われるか否かを検証することができる（８５０）。
【００６７】
具体的に、プロセッサ検証装置２３０は、生成されたアサーションをプロセッサ設計階層情報に基づいて、プロセッサモデルに挿入することができる。以後、ユーザプログラムのコンパイル結果を用いてアサーションが挿入されたプロセッサモデルをシミュレーションして、アサーションに記述された動作が行われるか否かを確認することによって、プロセッサの動作を検証することができる。
【００６８】
一方、本実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。コンピュータで読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などがあり、また、キャリアウェーブ（例えば、インターネットを介した伝送）の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本実施形態を具現するための機能的な（ｆｕｎｃｔｉｏｎａｌ）プログラム、コード及びコードセグメントは、当該技術分野のプログラマーによって容易に推論されうる。
【００６９】
以上、本発明の実施形態を中心に技術的特徴を説明した。しかし、開示された実施形態は、限定的な観点ではなく、説明的な観点で考慮されなければならず、権利範囲は、前述した説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にあるあらゆる差異点は、権利範囲に含まれたものと解釈しなければならない。
【産業上の利用可能性】
【００７０】
本発明は、ユーザプログラムコードに基づいたアサーション生成装置及び方法、アサーションを利用したプロセッサ検証装置及び方法関連の技術分野に適用可能である。
【符号の説明】
【００７１】
１１０  入力部
１３０  アサーション生成部
２１０  コンパイラ
２３１  入力部
２３３  アサーション生成部
２３５  検証部
【図１】
2014053011.tif 000003
【図２】
2014053011.tif 000004
【図３】
2014053011.tif 000005
【図４】
2014053011.tif 000006
【図５】
2014053011.tif 000007
【図６】
2014053011.tif 000008
【図７】
2014053011.tif 000009
【図８】
2014053011.tif 000010