特許第6352607号(P6352607)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星電子株式会社の特許一覧

特許6352607アサーション生成装置及び方法並びにプロセッサ検証装置及び方法
<>
  • 特許6352607-アサーション生成装置及び方法並びにプロセッサ検証装置及び方法 図000002
  • 特許6352607-アサーション生成装置及び方法並びにプロセッサ検証装置及び方法 図000003
  • 特許6352607-アサーション生成装置及び方法並びにプロセッサ検証装置及び方法 図000004
  • 特許6352607-アサーション生成装置及び方法並びにプロセッサ検証装置及び方法 図000005
  • 特許6352607-アサーション生成装置及び方法並びにプロセッサ検証装置及び方法 図000006
  • 特許6352607-アサーション生成装置及び方法並びにプロセッサ検証装置及び方法 図000007
  • 特許6352607-アサーション生成装置及び方法並びにプロセッサ検証装置及び方法 図000008
  • 特許6352607-アサーション生成装置及び方法並びにプロセッサ検証装置及び方法 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6352607
(24)【登録日】2018年6月15日
(45)【発行日】2018年7月4日
(54)【発明の名称】アサーション生成装置及び方法並びにプロセッサ検証装置及び方法
(51)【国際特許分類】
   G06F 17/50 20060101AFI20180625BHJP
【FI】
   G06F17/50 670G
   G06F17/50 672F
【請求項の数】26
【全頁数】15
(21)【出願番号】特願2013-185979(P2013-185979)
(22)【出願日】2013年9月9日
(65)【公開番号】特開2014-53011(P2014-53011A)
(43)【公開日】2014年3月20日
【審査請求日】2016年9月1日
(31)【優先権主張番号】61/698,050
(32)【優先日】2012年9月7日
(33)【優先権主張国】US
(31)【優先権主張番号】10-2013-0096109
(32)【優先日】2013年8月13日
(33)【優先権主張国】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】丁 鎭 世
(72)【発明者】
【氏名】沈 熙 峻
(72)【発明者】
【氏名】▲ちょう▼ 暎 ▲ちょる▼
(72)【発明者】
【氏名】韓 淵 照
【審査官】 松浦 功
(56)【参考文献】
【文献】 特開2009−009418(JP,A)
【文献】 特開2011−100194(JP,A)
【文献】 特開2006−172113(JP,A)
【文献】 特開2008−047053(JP,A)
【文献】 特開2000−268074(JP,A)
【文献】 特表2007−528553(JP,A)
【文献】 米国特許出願公開第2007/0294647(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/50
(57)【特許請求の範囲】
【請求項1】
アサーション生成装置の入力部が、少なくとも1つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、
前記アサーション生成装置のアサーション生成部が、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、
を含み、前記アサーションはハードウェア記述言語を用いて生成される、ユーザプログラムコードに基づいたアサーション生成方法。
【請求項2】
前記少なくとも1つのアサーション生成構文は、
前記ユーザプログラムに含まれた複数のコードのうち、前記プロセッサの動作確認が必要なコードを指定する請求項1に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項3】
前記アサーションを生成する段階は、
前記少なくとも1つのアサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、前記プロセッサの動作確認が必要なコードを判断する段階と、
前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する段階と、
を含む請求項1又は2に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項4】
前記アサーションを生成する段階において、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成する請求項3に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項5】
前記アサーションを生成する段階において、前記少なくとも1つのアサーション生成構文にそれぞれに対応するアサーションを生成する請求項1〜の何れか一項に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項6】
少なくとも1つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける入力部と、
前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成するアサーション生成部と、
を含み、前記アサーションはハードウェア記述言語を用いて生成される、ユーザプログラムコードに基づいたアサーション生成装置。
【請求項7】
前記少なくとも1つのアサーション生成構文は、
ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定する請求項に記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項8】
前記アサーション生成部は、
前記少なくとも1つのアサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断し、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する請求項又はに記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項9】
前記アサーション生成部は、
前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成する請求項に記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項10】
前記アサーション生成部は、
前記少なくとも1つのアサーション生成構文にそれぞれに対応するアサーションを生成する請求項の何れか一項に記載のユーザプログラムコードに基づいたアサーション生成装置。
【請求項11】
プロセッサ検証装置の入力部が、少なくとも1つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、
前記プロセッサ検証装置のアサーション生成部が、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、
前記プロセッサ検証装置の検証部が、前記コンパイル結果をレジスタ伝送レベルのプロセッサモデルでシミュレーションして、前記プロセッサモデルで前記アサーションに記述された動作が行われるか否かを検証する段階と、
を含み、前記アサーションはハードウェア記述言語を用いて生成される、アサーションを利用したプロセッサ検証方法。
【請求項12】
前記少なくとも1つのアサーション生成構文のそれぞれは、
前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定する請求項11に記載のアサーションを利用したプロセッサ検証方法。
【請求項13】
前記アサーションを生成する段階は、
前記アサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断する段階と、
前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する段階と、
を含む請求項11又は12に記載のアサーションを利用したプロセッサ検証方法。
【請求項14】
前記アサーションを生成する段階において、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成する請求項13に記載のアサーションを利用したプロセッサ検証方法。
【請求項15】
前記アサーションを生成する段階において、前記少なくとも1つのアサーション生成構文にそれぞれに対応するアサーションを生成する請求項1114の何れか一項に記載のアサーションを利用したプロセッサ検証方法。
【請求項16】
前記シミュレーションする段階において、前記アサーションを前記プロセッサモデルに挿入し、前記コンパイル結果を用いてアサーションが挿入された前記プロセッサモデルをシミュレーションする請求項1115の何れか一項に記載のアサーションを利用したプロセッサ検証方法。
【請求項17】
少なくとも1つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける入力部と、
前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成するアサーション生成部と、
前記コンパイル結果をレジスタ伝送レベルのプロセッサモデルでシミュレーションして、前記プロセッサモデルで前記アサーションに記述された動作が行われるか否かを検証する検証部と、
を含み、前記アサーションはハードウェア記述言語を用いて生成される、アサーションを利用したプロセッサ検証装置。
【請求項18】
前記少なくとも1つのアサーション生成構文のそれぞれは、
前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定する請求項17に記載のアサーションを利用したプロセッサ検証装置。
【請求項19】
前記アサーション生成部は、
前記少なくとも1つのアサーション生成構文を解釈して、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断し、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する請求項17又は18に記載のアサーションを利用したプロセッサ検証装置。
【請求項20】
前記アサーション生成部は、
前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成する請求項19に記載のアサーションを利用したプロセッサ検証装置。
【請求項21】
前記アサーション生成部は、
前記少なくとも1つのアサーション生成構文にそれぞれに対応するアサーションを生成する請求項1720の何れか一項に記載のアサーションを利用したプロセッサ検証装置。
【請求項22】
前記検証部は、
前記アサーションを前記プロセッサモデルに挿入し、前記コンパイル結果を用いてアサーションが挿入された前記プロセッサモデルをシミュレーションする請求項1721の何れか一項に記載のアサーションを利用したプロセッサ検証装置。
【請求項23】
アサーション生成装置が実行するアサーション生成方法であって、
ユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を受信する段階と、
ユーザプログラムに含まれた複数のコードからコードを決定するためのアサーション生成構文を解釈する段階と、
前記ユーザプログラムの前記コードが実行される時点を決定する段階と、
前記時点に前記ユーザプログラムの前記コードを実行する機能ブロックを決定する段階と、
前記ユーザプログラムの前記コードが実行される時点にアサーションを生成する段階と、
を含み、前記アサーションはハードウェア記述言語を用いて生成される、ユーザプログラムコードに基づいたアサーション生成方法。
【請求項24】
前記コードは、前記プロセッサの動作の確認を要求する請求項23に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項25】
前記実行される時点及び前記機能ブロックは、前記ユーザプログラムのコンパイル結果に含まれたスケジュール情報及び前記プロセッサのアーキテクチャー情報に基づいて決定される請求項23又は24に記載のユーザプログラムコードに基づいたアサーション生成方法。
【請求項26】
前記生成されたアサーションは、前記ユーザプログラムの前記コードが実行される時、前記時点で前記プロセッサの機能ブロックが行わなければならない動作を記述する請求項2325の何れか一項に記載のユーザプログラムコードに基づいたアサーション生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の例示的な実施形態は、プロセッサ検証のためのアサーション生成及びアサーションを利用したプロセッサ検証等に関する。
【背景技術】
【0002】
プロセッサの機能検証(functional verification)は、プロセッサのアーキテクチャー仕様(architecture spec)とレジスタ伝送レベル(RTL:Register Transfer Level)とに設計されたプロセッサが論理的に同じ動作を行うかを検証することである。このために、回帰テスト(regression test)、ランダムテスト(random test)など多様なテストケース(test case)を、設計されたプロセッサに適用して検証を行っており、十分に多様な設計機能を検証したかを確認するために、テストカバレッジ(test coverage)を測定している。
【0003】
テストカバレッジは、大きくコードカバレッジ(code coverage)と機能カバレッジ(functional coverage)とに分けることができる。コードカバレッジは、テストケースを利用したシミュレーション遂行中に設計したコードをどれほど漏らさずによくテストするかを表わす指標である。また、機能カバレッジは、テストケースを利用したシミュレーション遂行中にエンジニアが測定しようとする機能の実行如何に対する指標である。
【0004】
機能カバレッジは、検証しようとするプロセッサの動作のうち、必ずしも行わなければならない動作、または絶対に起こってはならない動作に対するアサーション(assertion)を設計して、アサーションの実行如何を測定する方式である。
【0005】
アサーション基盤検証技法(ABV:Assertion Based Verification)は、設計されたプロセッサ検証にアサーションを挿入してシミュレーションを行って、挿入されたアサーションのモニタまたはチェック(check)機能を通じてエラー検出地点を容易に探すことができて、検証時間が短縮されるという長所がある。
【0006】
しかし、アサーションは、ユーザがプロセッサのアーキテクチャー仕様(spec)に基盤して設計を行わなければならず、仕様変更時ごとに再設計を行わなければならない。また、設計したアサーションが正しく設計されたかの追加的な検証が必要なので、アサーション設計に多くの時間と人力とが要求される。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、ユーザプログラムコードに基づいたアサーション生成装置及び方法、アサーションを利用したプロセッサ検証装置及び方法を提供することである。
【課題を解決するための手段】
【0008】
実施の形態によるアサーション生成方法は、
少なくとも1つのアサーション生成構文(assertion directive)を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、
前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、
を含むユーザプログラムコードに基づいたアサーション生成方法である。
【図面の簡単な説明】
【0009】
図1】本発明の一実施形態によるアサーション生成装置の構成図である。
図2】本発明の一実施形態によるプロセッサ検証装置の構成図である。
図3】ユーザプログラムの例示図である。
図4図3のユーザプログラムに対するコンパイル結果の例示図である。
図5】生成されたアサーションの例示図である。
図6】本発明の一実施形態によるアサーション生成方法のフローチャートである。
図7】本発明の一実施形態によるアサーション生成方法の詳細フローチャートである。
図8】本発明の一実施形態によるプロセッサ検証方法のフローチャートである。
【発明を実施するための形態】
【0010】
<実施の形態の概要>
本発明の例示的な実施形態の一態様によれば、ユーザプログラムコードに基づいたアサーション生成方法が提供され、前記方法は、少なくとも1つのアサーション生成構文(assertion directive)を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、を含む。
【0011】
前記少なくとも1つのアサーション生成構文は、前記ユーザプログラムに含まれた複数のコードのうち、前記プロセッサの動作確認が必要なコードを指定することができる。
【0012】
前記アサーションを生成する段階は、前記少なくとも1つのアサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、前記プロセッサの動作確認が必要なコードを判断する段階と、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する段階と、を含みうる。
【0013】
前記アサーションを生成する段階は、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成することができる。前記アサーションを生成する段階は、ハードウェア記述言語を用いて前記アサーションを生成することができる。前記アサーションを生成する段階は、前記少なくとも1つのアサーション生成構文にそれぞれに対応するアサーションを生成することができる。
【0014】
本発明の例示的な実施形態の他の側面によれば、アサーション生成装置が提供され、前記アサーション生成装置は、少なくとも1つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける入力部と、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成するアサーション生成部と、を含む。
【0015】
前記少なくとも1つのアサーション生成構文は、ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定することができる。
【0016】
前記アサーション生成部は、前記少なくとも1つのアサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断し、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断することができる。
【0017】
前記アサーション生成部は、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成することができる。前記アサーション生成部は、ハードウェア記述言語を用いて前記アサーションを生成することができる。前記アサーション生成部は、前記少なくとも1つのアサーション生成構文にそれぞれに対応するアサーションを生成することができる。
【0018】
本発明の例示的な実施形態の他の態様によれば、プロセッサ検証方法が提供され、前記方法は、少なくとも1つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける段階と、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成する段階と、前記コンパイル結果をレジスタ伝送レベルのプロセッサモデルでシミュレーションして、前記プロセッサモデルで前記アサーションに記述された動作が行われるか否かを検証する段階と、を含む。
【0019】
前記少なくとも1つのアサーション生成構文のそれぞれは、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定することができる。
【0020】
前記アサーションを生成する段階は、前記アサーション生成構文の解釈に基づいて、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断する段階と、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断する段階と、を含みうる。
【0021】
前記アサーションを生成する段階は、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成することができる。前記アサーションを生成する段階は、ハードウェア記述言語を用いて前記アサーションを生成することができる。前記アサーションを生成する段階は、前記少なくとも1つのアサーション生成構文にそれぞれに対応するアサーションを生成することができる。
【0022】
前記シミュレーションする段階は、前記アサーションを前記プロセッサモデルに挿入し、前記コンパイル結果を用いてアサーションが挿入された前記プロセッサモデルをシミュレーションすることができる。
【0023】
本発明の例示的な実施形態の他の態様によれば、プロセッサ検証装置が提供され、前記プロセッサ検証装置は、少なくとも1つのアサーション生成構文を含むユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報の入力を受ける入力部と、前記コンパイル結果及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成するアサーション生成部と、前記コンパイル結果をレジスタ伝送レベルのプロセッサモデルでシミュレーションして、前記プロセッサモデルで前記アサーションに記述された動作が行われるか否かを検証する検証部と、を含む。
【0024】
前記少なくとも1つのアサーション生成構文のそれぞれは、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを指定することができる。
【0025】
前記アサーション生成部は、前記少なくとも1つのアサーション生成構文を解釈して、前記ユーザプログラムに含まれた複数のコードのうち、プロセッサの動作確認が必要なコードを判断し、前記コンパイル結果に含まれたスケジュール情報及び前記プロセッサアーキテクチャー情報に基づいて、前記少なくとも1つのアサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断することができる。
【0026】
前記アサーション生成部は、前記実行時点で前記機能ブロックが行わなければならない動作を記述するアサーションを生成することができる。前記アサーション生成部は、ハードウェア記述言語を用いて前記アサーションを生成することができる。前記アサーション生成部は、前記少なくとも1つのアサーション生成構文にそれぞれに対応するアサーションを生成することができる。
【0027】
前記検証部は、前記アサーションを前記プロセッサモデルに挿入し、前記コンパイル結果を用いてアサーションが挿入された前記プロセッサモデルをシミュレーションすることができる。
【0028】
本発明の例示的な実施形態のさらに他の追加的な実施形態によれば、ユーザプログラムコードに基づいたアサーション生成方法は、ユーザプログラム、前記ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を受信する段階と、ユーザプログラムに含まれた複数のコードからコードを決定するためのアサーション生成構文を解釈する段階と、前記ユーザプログラムの前記コードが実行される時点を決定する段階と、前記時点に前記ユーザプログラムの前記コードを実行する機能ブロック(functional block)を決定する段階と、前記ユーザプログラムの前記コードが実行される時点にアサーションを生成する段階と、を含みうる。
【0029】
<実施の形態の詳細な説明>
以下、添付図面を参照して、実施形態を詳しく記述する。
【0030】
図1は、本発明の一実施形態によるアサーション生成装置100の構成図である。図1を参照すると、アサーション生成装置100は、ハードウェア記述言語(HDL:Hardware Description Language)を用いてレジスタ伝送レベル(RTL)にモデリングされたプロセッサの動作を検証するためのアサーションを生成する。
【0031】
アサーションは、プログラムランタイム中にプロセッサが必ずしも実行しなければならない動作を記述(statement)したものである。例えば、アサーションは、必ずしも実行しなければならない動作条件を宣言し、ユーザプログラムランタイム中にプロセッサがアサーションに宣言された動作条件を満足しない時、エラーを出力するように記述されうる。
【0032】
一方、アサーション生成装置100は、入力部110及びアサーション生成部130を含みうる。
【0033】
入力部110は、ユーザプログラム、ユーザプログラムに対するコンパイル結果及び検証対象であるプロセッサのアーキテクチャー情報を入力される(入力を受信する)。ユーザプログラムは、プロセッサの動作検証のために、プログラマーによって任意に作成されたものであって、1つ以上のアサーション生成構文を含みうる。
【0034】
アサーション生成構文は、ユーザプログラムのコードのうち、検証対象であるプロセッサでの動作確認が必要なコードを指定する。具体的に、ユーザは、ユーザプログラムのコードのうち、検証対象であるプロセッサの動作確認が必要な部分にアサーション生成構文を挿入することによって、アサーション生成を指定することができる。
【0035】
図3に示された例示的なユーザプログラムを参照すると、アサーション生成構文300は、ループ遂行カウント値(i)が3である時、‘A[i]=result’を行うプロセッサの動作を確認するためのアサーションを生成するように指定する。このようなアサーション生成構文は、1つのユーザプログラム内に1つ以上が挿入されうる。
【0036】
一方、プロセッサアーキテクチャー情報は、検証対象プロセッサに含まれた機能ブロック数と種類、機能ブロックの間の内部結線及び制御流れなど設計されたプロセッサの構造に関する情報を含みうる。
【0037】
ユーザプログラムに対するコンパイル結果は、ユーザプログラムを検証対象プロセッサで即時実行できるように、コンパイラによって変換されたバイナリコードを意味する。
【0038】
一方、アサーション生成部130は、入力されたユーザプログラムのソースコード、ユーザプログラムに対するコンパイル結果及びプロセッサのアーキテクチャー情報に基づいてアサーションを生成する。
【0039】
アサーション生成部130は、ユーザプログラムに含まれたアサーション生成構文を解釈して、ユーザプログラムのコードのうち、プロセッサの動作確認が必要なコードを把握することができる。例えば、図3のアサーション生成構文300の場合、ループ遂行カウント値(i)が3であることを条件として、変数A[i]を保存するプロセッサの機能ブロックに保存された値を確認するためのアサーションを生成しなければならないことを記述している。したがって、アサーション生成部130は、アサーション生成構文300からループ遂行カウント値(i)が3である時、‘A[i]=result’を行うプロセッサの動作を確認しなければならないことを把握することができる。
【0040】
アサーション生成構文300の解釈のみでは、アサーション生成構文300によって指定されたコードがプロセッサの如何なる機能ブロックで如何なる時点に実行されるかが分からない。したがって、アサーション生成構文によって指定された動作が、実際のプロセッサで如何に実行されるかを把握するためには、ユーザプログラムに対するコンパイル結果とプロセッサのアーキテクチャー情報とが必要である。
【0041】
例えば、アサーション生成構文が、ユーザプログラムのコードに含まれた特定の乗算演算を行うプロセッサの動作を確認することを指定している場合、アサーション生成のためには、ユーザプログラムのコンパイル結果に含まれたスケジュール情報及びプロセッサのアーキテクチャー情報から当該乗算演算を実行するプロセッサの機能ブロックの動作と実行サイクルとが把握されなければならない。
【0042】
してみれば、アサーション生成部130は、ユーザプログラムに対するコンパイル結果及びプロセッサアーキテクチャー情報に基づいて、アサーション生成構文によって指定されたプログラムコードを実行しなければならないプロセッサの機能ブロック及び実行時点を判断することができる。さらに、ユーザプログラムに対するコンパイル結果は、ユーザプログラムがプロセッサで即時実行できるように、プロセッサのアーキテクチャーに合わせてスケジューリングされたスケジュール情報を含んでいる。してみれば、このようなスケジューリング情報とプロセッサのアーキテクチャー情報とに基づいて、アサーション生成構文によって指定されたユーザプログラムの特定のコードがプロセッサの如何なる機能ブロックで如何なるサイクルに実行されなければならないかを把握することができる。
【0043】
具体例として、図3に示されたユーザプログラムは、図4のようにスケジュールされる。図4で、FU#00−FU#09は、プロセッサに含まれた機能ユニット(Function Unit)を表わし、それぞれの機能ユニットには、それぞれのサイクルで実行するオペレーションが割り当てられる。一方、図4のスケジュール情報でアサーション生成構文300のループ遂行カウント値が3である時、‘A[i]=result’動作は、22番目のサイクルにFU#00に割り当てられることが分かる。したがって、アサーション生成部130は、図5に示された例のように、ループ遂行カウント値を表わす変数i値がマッピングされたFU#05の値が0であれば、ループが始まったと見なす。してみれば、22サイクル以後にFU#00に保存された値を確認するアサーションが生成されうる。
【0044】
一方、ユーザプログラムに挿入されたアサーション生成構文が1つ以上である場合、アサーション生成部130は、それぞれのアサーション生成構文に対応するアサーションを生成することができる。
【0045】
また、アサーション生成部130は、例えば、System Verilog、Verilog HDL、VHDL、System Verilog、HDVLのようなハードウェア記述言語(HDL)を用いてアサーションを生成することができる。
【0046】
図2は、本発明の一実施形態によるプロセッサ検証装置230の構成図である。図2を参照すると、プロセッサ検証装置230は、System Verilog、Verilog HDL、VHDL(Vhsic Hardware Description Language)、HDVL(Hardware Description and Verification Language)のようなハードウェア記述言語(HDL)を用いてレジスタ伝送レベル(RTL)でモデリングされたプロセッサの動作を検証するためのものである。
【0047】
コンパイラ210は、プロセッサ検証のためのユーザプログラムの設計されたプロセッサのアーキテクチャーに合わせてユーザプログラムのコードを変換し、プロセッサ内部の機能ブロックにスケジュールして、設計されたプロセッサで実行するバイナリコードを生成する。この際、ユーザプログラムは、少なくとも1つのアサーション生成構文を含みうる。
【0048】
一方、プロセッサ検証装置230は、入力部231、アサーション生成部233及び検証部235を含みうる。
【0049】
入力部231は、ユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報を入力される(入力を受信する)。この際、ユーザプログラムのコンパイル結果は、コンパイラ210によって提供されうる。また、ユーザプログラム及びプロセッサアーキテクチャー情報は、ユーザによって入力されうる。
【0050】
アサーション生成部233は、図1に示されたアサーション生成装置100に対応するものであって、入力部231を通じて入力されたユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を用いてアサーションを生成することができる。
【0051】
この際、アサーションは、System Verilog、Verilog HDL、VHDL、System Verilog、HDVLのようなハードウェア記述言語(HDL)を用いて生成されうる。
【0052】
具体的に、アサーション生成部233は、ユーザプログラムに含まれたアサーション生成構文を解釈して、ユーザプログラムのコードのうち、プロセッサの動作確認が必要なコードを把握することができる。また、アサーション生成部233は、コンパイル結果に含まれたスケジュール情報及びプロセッサアーキテクチャー情報からアサーション生成構文によって指定されたユーザプログラムのコード実行によるプロセッサの動作が、如何なる実行サイクルに如何なる機能ブロックで実行されるかを判断し、プロセッサで行わなければならない動作を記述するアサーションを生成することができる。
【0053】
一方、検証部235は、入力部231を通じて入力されたユーザプログラムのコンパイル結果をレジスタ伝送レベルで設計されたプロセッサモデルでシミュレーションして、アサーション生成部233から生成されたアサーションに記述された動作が行われるか否かを検証することができる。
【0054】
具体的に、検証部235は、プロセッサ設計階層(Processor designhierarchy)情報に基づいて、アサーション生成部233から生成されたアサーションをプロセッサモデルに挿入することができる。以後、検証部235は、ユーザプログラムに対するコンパイル結果をアサーションが挿入されたプロセッサモデルでシミュレーションすることができる。この際、検証部235は、シミュレーション中にアサーションに記述された動作が行われるか否かを確認することによって、プロセッサの動作を検証することができる。
【0055】
図6は、本発明の一実施形態によるアサーション生成方法のフローチャートである。図6を参照すると、アサーション生成装置100は、ユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報を入力されうる(610)。
【0056】
この際、ユーザプログラムは、少なくとも1つのアサーション生成構文を含みうる。
【0057】
一方、アサーション生成装置100は、ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報に基づいて、アサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成することができる(620)。この際、アサーションは、System Verilog、Verilog HDL、VHDL、System Verilog、HDVLのようなハードウェア記述言語(HDL)を用いて生成されうる。
【0058】
また、ユーザプログラムに含まれたアサーション生成構文が1つ以上である場合、アサーション生成装置は、それぞれのアサーション生成構文に対応するアサーションを生成することができる(630)。
【0059】
図7は、本発明の一実施形態によるアサーション生成方法の詳細フローチャートである。図7を参照すると、アサーション生成装置100は、1つ以上のアサーション生成構文を含むユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサのアーキテクチャー情報を受信することができる(710)。
【0060】
アサーション生成装置100は、アサーション生成構文を解釈して、ユーザプログラムに含まれたコードのうち、プロセッサの動作確認が必要なコードを判断することができる(730)。
【0061】
以後、アサーション生成装置100は、ユーザプログラムのコンパイル結果に含まれたスケジュール情報及びプロセッサアーキテクチャー情報に基づいて、アサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない実行時点及び機能ブロックを判断することができる(750)。
【0062】
以後、アサーション生成装置100は、アサーション生成構文によって指定されたユーザプログラムコードを実行しなければならない時点でプロセッサの機能ブロックが行わなければならない動作を記述するアサーションを生成することができる(770)。
【0063】
図8は、本発明の一実施形態によるプロセッサ検証方法のフローチャートである。図8を参照すると、プロセッサ検証装置230は、少なくとも1つのアサーション生成構文を含むユーザプログラム、ユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報を入力されうる(810)。
【0064】
以後、プロセッサ検証装置230は、入力されたユーザプログラムのコンパイル結果及びプロセッサアーキテクチャー情報に基づいて、アサーション生成構文によって指定されたユーザプログラムコードによって、プロセッサが行わなければならない動作を記述するアサーションを生成することができる(830)。この際、プロセッサ検証装置230は、図7に示された手続きと同じ手続きを通じてアサーションを生成することができる。
【0065】
また、プロセッサ検証装置230は、ハードウェア記述言語を用いてアサーションを生成し、ユーザプログラムが複数のアサーション生成構文を含む場合、プロセッサ検証装置230は、それぞれのアサーション生成構文に対応するアサーションを生成することができる。
【0066】
一方、プロセッサ検証装置230は、入力されたユーザプログラムのコンパイル結果をレジスタ伝送レベルで設計されたプロセッサモデルでシミュレーションして、プロセッサモデルでアサーションに記述された動作が行われるか否かを検証することができる(850)。
【0067】
具体的に、プロセッサ検証装置230は、生成されたアサーションをプロセッサ設計階層情報に基づいて、プロセッサモデルに挿入することができる。以後、ユーザプログラムのコンパイル結果を用いてアサーションが挿入されたプロセッサモデルをシミュレーションして、アサーションに記述された動作が行われるか否かを確認することによって、プロセッサの動作を検証することができる。
【0068】
一方、本実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。コンピュータで読み取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ保存装置などがあり、また、キャリアウェーブ(例えば、インターネットを介した伝送)の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本実施形態を具現するための機能的な(functional)プログラム、コード及びコードセグメントは、当該技術分野のプログラマーによって容易に推論されうる。
【0069】
以上、本発明の実施形態を中心に技術的特徴を説明した。しかし、開示された実施形態は、限定的な観点ではなく、説明的な観点で考慮されなければならず、権利範囲は、前述した説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にあるあらゆる差異点は、権利範囲に含まれたものと解釈しなければならない。
【産業上の利用可能性】
【0070】
本発明は、ユーザプログラムコードに基づいたアサーション生成装置及び方法、アサーションを利用したプロセッサ検証装置及び方法関連の技術分野に適用可能である。
【符号の説明】
【0071】
110 入力部
130 アサーション生成部
210 コンパイラ
231 入力部
233 アサーション生成部
235 検証部
図1
図2
図3
図4
図5
図6
図7
図8