JP5540887B2 - 設計検証プログラム、設計検証方法および設計検証装置 - Google Patents

設計検証プログラム、設計検証方法および設計検証装置 Download PDF

Info

Publication number
JP5540887B2
JP5540887B2 JP2010119167A JP2010119167A JP5540887B2 JP 5540887 B2 JP5540887 B2 JP 5540887B2 JP 2010119167 A JP2010119167 A JP 2010119167A JP 2010119167 A JP2010119167 A JP 2010119167A JP 5540887 B2 JP5540887 B2 JP 5540887B2
Authority
JP
Japan
Prior art keywords
verification
priority
scenario
information
design
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010119167A
Other languages
English (en)
Other versions
JP2011060267A (ja
Inventor
亮介 大石
クマール ムルティ プラヴィーン
ラファエル・カズミチ・モリザワ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2011060267A publication Critical patent/JP2011060267A/ja
Application granted granted Critical
Publication of JP5540887B2 publication Critical patent/JP5540887B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は設計検証プログラム、設計検証方法および設計検証装置に関する。
近年、設計技術の進歩により、ソフトウェアやハードウェアの開発対象が大規模化している。
設計開発時には、開発対象に対する動作検証を行い、開発対象の動作を確認しつつ、設計を進めることが行われている。
前述した開発対象の大規模化により、開発工程全体における検証工程の占める割合が増加する傾向にある。
一方で、納期短縮等による設計期間の短縮化や、工数が当初の見積もりより大きくなる等の理由により、設計期間が足りなくなることはしばしばある。
このため、検証効率の向上のため、例えば、検証工程の検証項目を抽出し、設計期間の短縮化を図る技術が知られている。
米国特許第7275231号明細書 特開2006−85710号公報 特開2004−185592号公報 特開2007−257291号公報
抽出した全ての検証工程についての検証を順不同に実行すると、優先的に検証したい工程が最後の方に存在した場合、エラーを検出するまでに時間がかかり、検証の処理効率が低くなる。
このため、膨大な数の検証工程から検証したい工程を優先的に検証したい場合は、設計者や検証者(ユーザ)の経験により、膨大な数の検証工程から検証を行うための検証手順を選択して検証を行うことが行われている。
しかしながら、設計者や検証者の経験が浅い場合、適切な検証手順の選択を誤る場合があり、誤って選択された検証手順によっては、やはり検証の処理効率が低いという問題がある。
1つの側面では、本発明は、効率的な検証工程の情報を提供することができる設計検証プログラム、設計検証方法および設計検証装置を提供することを目的とする。
第1の案では、設計検証装置は、優先度決定部と、検証順位決定部と、出力部とを有している。優先度決定部は、設計対象の設計仕様が備える処理手順の検証要求に応じて、処理手順を検証する検証用情報の少なくとも1つを選択し、選択した検証用情報が有する処理手順の実行を制約する条件を示すパラメータに応じてパラメータの優先度を決定する。検証順位決定部は、優先度決定部により決定された優先度に基づいて選択された検証用情報の検証順位を決定する。出力部は、優先度決定部により選択された検証用情報を識別する情報を、検証順位を明示して出力する。
効率的な検証工程の情報を提供することができる。
第1の実施の形態の設計検証装置を説明する図である。 第1の実施の形態の設計検証装置を説明する図である。 第2の実施の形態のシステムを示す図である。 第2の実施の形態のLSIの設計仕様の構成を示す図である。 LSIの設計仕様のデータ構造の一例を示す図である。 メッセージ・シーケンス・チャート間の関係と階層構造を説明する図である。 メッセージ・シーケンス・チャートの構成を説明する図である。 メッセージ・シーケンス・チャートの他の例を示す図である。 設計検証装置のハードウェア構成例を示す図である。 設計検証装置の機能を示すブロック図である。 入力されるパラメータ情報を示す図である。 図11に示したパラメータ情報のデータ構造例を示す図である。 設計検証装置の全体処理を示すフローチャートである。 検証用シナリオ生成処理を示すフローチャートである。 検証用シナリオ生成処理を示すフローチャートである。 ラベル付与処理を示すフローチャートである。 シナリオ優先度付与処理を示すフローチャートである。 パラメータ優先度付与処理を示すフローチャートである。 LSIの設計仕様のデータ構造の具体例を示す図である。 メッセージ・シーケンス・チャートの具体例を示す図である。 LSIの設計仕様にラベルを付与する具体例を示す図である。 LSIの設計仕様にラベルを付与する具体例を示す図である。 LSIの設計仕様にラベルを付与する具体例を示す図である。 ラベルを付与したLSIの設計仕様のデータ構造例を示す図である。 LSIの設計仕様にラベルを付与する他の具体例を示す図である。 有限ステートマシンに変換する処理を説明するメッセージ・シーケンス・チャートを示す図である。 図26に示すメッセージ・シーケンス・チャートに関連する状態マトリックスを示す図である。 状態マトリックスに関する状態図を示す図である。 有限ステートマシンにラベルを付与する具体例を示す図である。 有限ステートマシンにラベルの付与が終了したときの状態を示す図である。 状態マトリックスに関する状態図を示す図である。 有限ステートマシンのデータ構造例を示す図である。 検証用シナリオ格納部に格納されている検証用シナリオを示す図である。 優先度が付与された検証用シナリオのデータ構造を示す図である。 優先度が付与された検証用シナリオのデータ構造を示す図である。 パラメータ優先度付与処理の具体例を示す図である。 パラメータ優先度付与処理の具体例を示す図である。 優先順位リストの具体例を示す図である。
以下、実施の形態を、図面を参照して詳細に説明する。
まず、第1の実施の形態の設計検証装置について説明し、その後、第2の実施の形態以降、設計検証装置をより具体的に説明する。
<第1の実施の形態>
図1および図2は、第1の実施の形態の設計検証装置を説明する図である。
実施の形態の設計検証装置1は、生成部1aと、優先度付与部1bと、パラメータ条件格納部1dと、優先度決定部1eと、検証順位決定部1fと、出力部1gとを有している。
生成部1aは、設計対象の設計仕様が備える複数の処理手順(処理のシナリオ)が備える処理単位それぞれに、設計仕様の検証対象となる部位(検証対象部位)を識別する識別情報(ラベル)を関連付けた、検証用情報を生成する。この検証用情報は、処理手順を検証(例えば処理手順の成否を検証)するものである。
ここで、設計対象は、設計検証装置1によるテストおよび検証対象となるハードウェアコンポーネントまたはシステムやソフトウェアモジュールである。
この設計対象の設計仕様は、実装が守るべき約束事を記したものであり、少なくとも1つの機能により実現される。
図1では、機能2aと機能2bとを有する設計仕様2を示している。機能2aは、機能2aを実現する2つの処理手順20aと処理手順20bを有している。
処理手順20aは、機能2aの基本動作についての処理手順であり、処理手順20bは、基本動作に取って替わる代替動作についての処理手順である。
各処理手順20a、20bそれぞれには、処理手順の実行を制約する条件(制約条件)として、事前条件、事後条件、不変条件(の1つまたは複数)が定義されている場合がある。
事前条件とは、機能を実現する一連の操作の実行前に満たすべき(真となる)条件である。
事後条件とは、一連の操作の実行後に満たすべき条件である。
不変条件とは、事後条件が発生するまでの間(一連の操作の実行中)に要求される条件である。
図1では、一例として、基本動作、代替動作ともに事前条件が定義されている。
ところで、処理手順20aは枝構造を有しており、ノードとなる部分に基本動作の実行すべき処理単位が設定されている。この処理単位としては、例えば、機能2aの実現に関わっている全てのオブジェクト間のやり取りを明確にした仕様であるメッセージ・シーケンス・チャート(Message Sequence Chart)等が挙げられる。なお、メッセージ・シーケンス・チャートについては、特許文献1と特許文献2を参照のこと。
処理手順20aと処理手順20bとの関係は、図2に示す構造体3によって示される。
この構造体3を用いることで、設計仕様2をコンパクトに表示することができる。
構造体3は、第1のシーケンス、第2のシーケンス、および、第3のシーケンスと、これら各シーケンス間の関係を示すブランチ(branch)およびマージ(merge)を有している。
各シーケンスのブロックを接続する矢印は、機能が実行される順序を記述する。
処理手順20aは、第1のシーケンス、第2のシーケンスの順番に処理が行われることを示している。
処理手順20bは、第1のシーケンス、第3のシーケンスの順番に処理が行われることを示している。
従って、構造体3は、これら2つの処理手順が第1のシーケンスまで同じ動作を有するが、それ以降の動作は異なっていることを示す。
構造体3のエッジは有向であり、ガード条件が付与されている。
ガード条件は、各シーケンスの終了後、ガード条件が成立すればエッジ先のシーケンスに遷移することを示している。
図2では、第1のシーケンスの処理後、i>0のガード条件が成立すれば、第2のシーケンスに移行する。一方、i<=0のガード条件が成立すれば、第3のシーケンスに移行する。
図1に示す機能2aの場合、生成部1aは、処理手順20a、すなわち、基本動作に対し、処理手順20aが備える第1のシーケンスおよび第2のシーケンスそれぞれに設計仕様の検証対象部位を識別する識別情報を関連付けた検証用情報を生成する。
検証対象部位は、例えば、機能、処理手順、処理単位等が挙げられる。図2では、第1のシーケンス、第2のシーケンスそれぞれに、機能2aを識別する識別情報「機能#1」、処理手順20aを識別する識別情報「基本動作」を関連付ける。
また、生成部1aは、処理手順20b、すなわち、代替動作に対し、処理手順20bが備える第1のシーケンスおよび第3のシーケンスそれぞれに設計仕様の検証対象部位を関連付けた検証用情報を生成する。
図2では、第1のシーケンス、第3のシーケンスそれぞれに、機能2aを識別する識別情報「機能#1」、処理手順20bを識別する識別情報「代替動作」を関連付ける。
この結果、第1のシーケンスには、識別情報「機能#1:基本動作」、「機能#1:代替動作」が関連付けられる。第2のシーケンスには、識別情報「機能#1:基本動作」が関連付けられる。第3のシーケンスには、識別情報「機能#1:代替動作」が関連付けられる。
そして、生成部1aは、同じ識別情報を備えるシーケンスを抽出し、抽出したシーケンスの集合をそれぞれ検証用情報とする。
図2では、識別情報「基本動作」を備える第1のシーケンスおよび第2のシーケンスの集合を1つの検証用情報3aとする。換言すれば、検証用情報3aは、機能2aの基本動作を検証するための情報となる。
また、識別情報「代替動作」を備える第1のシーケンスおよび第3のシーケンスの集合を1つの検証用情報3bとする。換言すれば、検証用情報3bは、機能2aの代替動作を検証するための情報となる。
再び図1に戻って説明する。
優先度付与部1bは、情報4aに応じて、検証用情報3a、3bに処理優先度を付与する。
例えば、図1に示すように、情報4aとして、機能2aの基本動作の処理優先度を代替動作の処理優先度より高くすることを示す「基本動作>代替動作」が入力されたものとする。
この場合、優先度付与部1bは、検証用情報3aに、検証用情報3bより高い優先度「2」を付与する。また、検証用情報3bに優先度「1」を付与する。
なお、本実施の形態では、優先度が付与された検証用情報は、検証用情報格納部1cに格納される。図1では、優先度「2」に検証用情報3aを示す検証用情報#1を関連付けたレコードと、優先度「1」に検証用情報3bを示す検証用情報#2を関連付けたレコードとが検証用情報格納部1cに格納されている。
優先度決定部1eは、情報4bに応じて、検証用情報格納部1cに格納されている検証用情報#1、#2の少なくとも1つを選択する。そして、選択した検証用情報が有する制約条件を示すパラメータに応じてパラメータ毎の優先度を決定する。
例えば、処理手順が1つの関数であるとすると、その関数のインプットの値(関数の引数となる値)を入力することにより、処理手順が実行できる。その入力をパラメータという。
例えば、図1に示すように、情報4bとして、基本動作の事前条件として「P=10」が入力され、代替動作の事前条件として「P=0」が入力されたものとする。
優先度決定部1eは、基本動作の事前条件としての「P=10」に応じて、基本動作を検証する検証用情報3aを選択する。
ここで、パラメータ条件格納部1dには、パラメータに応じて優先度を決定する条件が予め格納されている。例えば、「P=10」については、優先度「2」であることが予め定められている。
従って、優先度決定部1eは、検証用情報3aの事前条件に対する優先度が「2」であることを決定する。
また、優先度決定部1eは、代替動作の事前条件としての「P=0」に応じて、代替動作を検証する検証用情報3bを選択する。
また、パラメータ条件格納部1dには、例えば、「P=0」については、優先度「1」であることが予め定められている。
従って、優先度決定部1eは、検証用情報3bの事前条件に対する優先度が「2」であることを決定する。
検証順位決定部1fは、優先度決定部1eにより決定された優先度に基づいて選択された検証用情報3a、3bの検証順位を決定する。
検証順位の決定方法は特に限定されないが、例えば、検証用情報3a、3bそれぞれの優先度付与部1bによって付与された優先度と、優先度決定部1eによって決定された優先度とを加算する。そして、その加算結果を比較して優先度の合計値が大きい順番(優先度の高い順番)に検証用情報の検証順位とする。
本実施の形態では、検証用情報3aの優先度付与部1bによって付与された優先度「2」と、優先度決定部1eによって決定された優先度「2」とを加算する。そして加算値「4」を得る。また、検証用情報3aの優先度付与部1bによって付与された優先度「1」と、優先度決定部1eによって決定された優先度「1」とを加算する。そして加算値「2」を得る。そして、その加算結果「4」と「2」を比較して優先度の合計値が大きい検証用情報3aを最初の検証順位、検証用情報3bを2番目の検証順位とする。
なお、検証順位の決定方法としては、他にも、検証用情報3a、3bそれぞれの優先度付与部1bによって付与された優先度と、優先度決定部1eによって決定された優先度とを乗算し、その乗算結果を比較して優先度の合計値が大きい順番を検証順位とする方法や、予め定められた関数に従って演算し、その演算結果を比較して優先度の合計値が大きい順番を検証順位とする方法等が挙げられる。
出力部1gは、優先度決定部1eにより選択された検証用情報3a、3bを識別する情報を、検証順位を明示して出力する。
図1では、優先順位「1」に検証用情報3aを示す検証用情報#1を関連付けたレコードと、優先順位「2」に検証用情報3bを示す検証用情報#2を関連付けたレコードとを備える出力結果5を出力する。
このような設計検証装置1によれば、生成部1aが、検証用情報3a、3bを生成し、優先度付与部1bが、設計仕様の複数の検証対象部位およびこれら検証対象部位の処理優先度を示す情報4aに応じて、検証用情報毎に優先度を付与するようにした。
これにより、検証対象の単位に応じて行うべき優先度を容易に把握することができる。
また、優先度決定部1eが、処理手順の制約条件毎に与えられたパラメータを示す情報4bに応じて、優先度を決定し、検証順位決定部1fが、優先度付与部1bによって付与された優先度と優先度決定部1eによって決定された優先度とに基づいて、検証用情報3a、3bそれぞれの検証順位を決定するようにした。
これにより、ユーザは、この検証順位の順に検証用情報を用いて検証対象の検証を行うことにより、効率よく検証を行うことができる。
なお、本実施の形態では、設計検証装置1が、生成部1aおよび優先度付与部1bを備え、優先度が付与された検証用情報を生成した。しかし、これに限らず、設計検証装置1が、他の装置によって生成された、優先度が付与された検証用情報を読み込み、優先度決定部1eが、この検証用情報およびパラメータ条件格納部1dに格納されたパラメータ条件に基づいて優先度を決定するようにしてもよい。この場合、設計検証装置1は、生成部1aおよび優先度付与部1bの機能を省略することができる。
以下、実施の形態をより具体的に説明する。
<第2の実施の形態>
図3は、第2の実施の形態のシステムを示す図である。
システム100は、設計検証装置10と、信号インタフェース200とテスト対象装置300とを有している。
設計検証装置10は、テスト対象装置300が設計仕様に従って動作するか判断するため、設計仕様が備えるシナリオ毎に、これらシナリオを検証するための検証用シナリオを生成する。
そして、設計検証装置10は、検証用シナリオに優先順位を付与する。
さらに、設計検証装置10は、優先順位が付与された検証用シナリオを利用して、テスト対象装置300がこの検証用シナリオに従って動作するか否かを判断するため、信号インタフェース200を介しテスト対象装置300と通信する。
この際、付与した優先順位に従って、検証用シナリオをテスト対象装置300に流す。
信号インタフェース200は、設計検証装置10とテスト対象装置300とを接続するための装置を表す。信号インタフェース200は、設計検証装置10により通信される信号を設計検証装置10による利用に適した信号に変換する。
なお、例えば、設計検証装置10とテスト対象装置300が互換的な信号を使用する場合、信号インタフェース200は省略されてもよい。
テスト対象装置300は、設計検証装置10によるテストおよび検証対象となるハードウェアコンポーネントまたはシステムやソフトウェアモジュールを表す。
テスト対象装置300は、製品開発中に製造される設計プロトタイプであってもよいし、設計検証装置10によって生成されるステートマシン(State Machine)であってもよい。以下、テスト対象装置300がLSI(Large Scale Integration)である場合を例にとって説明する。
<LSIの設計仕様>
図4は、第2の実施の形態のLSIの設計仕様の構成を示す図である。
前述したように、設計仕様とは、実装が守るべき約束事を記したものであり、複数の機能により実現される。
なお、設計仕様は、リスト構造で表現される。このリスト構造は、例えば、XML(Extensible Markup Language)形式で表現される。
各機能ブロック21、22、23には、それぞれ1つの機能が対応付けられている。対応付けられた各機能は、例えば、ソフトウェアにより呼び出されるハードウェアで実現する機能であり、または、ハードウェアに依存するソフトウェアで実現する機能である。
各機能ブロック21、22、23は、それぞれ、1つまたは複数のシナリオブロックを有している。例えば、機能ブロック21は、シナリオブロック21aとシナリオブロック21bとを有している。
各シナリオブロック21a、21bには、それぞれ、1つのシナリオが対応付けられている。対応付けられた各シナリオは、機能の実体であり、呼び出し時の条件により複数存在する。
より詳しくは、シナリオは、機能を実現するために実行される一連の操作を定義するものである。言い換えると、シナリオは、オブジェクト間で送受信されるメッセージの順序および組み合わせを表すものである。
各シナリオブロック21a、21bは、それぞれ、1つまたは複数のメッセージ・シーケンス・チャートブロック(以下、「MSCブロック」という)を有している。例えば、シナリオブロック21aは、MSCブロック211aと、MSCブロック212aとを有している。
MSCブロック211a、212aには、それぞれ、1つのメッセージ・シーケンス・チャートが対応付けられている。
メッセージ・シーケンス・チャートは、シナリオが備えるサブ機能群である。具体的には、メッセージ・シーケンス・チャートは、機能の実現に関わっている全てのオブジェクト間のやり取りを明確にしたものである。このオブジェクトは、LSI20が備える機能や、このLSI20を含むシステムに干渉する外部環境を含む。
<LSIの設計仕様のデータ構造>
次に、LSI20の設計仕様のデータ構造を説明する。
図5は、LSIの設計仕様のデータ構造の一例を示す図である。
前述したように、LSI20の設計仕様は、複数の機能により実現される。図5では、図4に示した設計仕様をツリー構造で示し、そのうちの1つの機能を示している。
各機能それぞれには、制約条件として、事前条件、事後条件、不変条件(の1つまたは複数)が定義されている場合がある。
これら各条件が存在する場合には、その条件が設定される。また、条件が存在しない条件には、「条件なし」が設定される。例えば、事前条件のみが定義されている場合は、事後条件、不変条件は「条件なし」が設定される。
前述したように、機能ブロック21に対応付けられている機能は、シナリオブロック21aに対応付けられているシナリオA1とシナリオブロック21bに対応付けられているシナリオA2とを有している。
シナリオA1、A2は、それぞれ、「基本動作」、「代替動作」、「例外動作」のいずれか1つの属性を有している。その属性が、種類として記載されている。
また、各シナリオA1、A2それぞれには、制約条件として、事前条件、事後条件、不変条件(の1つまたは複数)が定義されている場合がある。これら各条件が存在する場合には、その条件が設定される。また、条件が存在しない条件には、「条件なし」が設定される。
図5では、シナリオA1は、基本動作についてのシナリオであり、事前条件と、事後条件と、不変条件とを有している。
シナリオA2は、シナリオA1に対する代替動作についてのシナリオであり、基本動作と同様に、事前条件と、事後条件と、不変条件とを有している。
MSCブロック211a、212aに対応付けられているメッセージ・シーケンス・チャートは、メッセージ・シーケンス・チャートを識別するための名前(識別名)を有している。MSCブロック211aに対応付けられているメッセージ・シーケンス・チャートの識別名は、「MSC1の動作」であり、MSCブロック212aに対応付けられているメッセージ・シーケンス・チャートの識別名は、「MSC2の動作」である。
メッセージ・シーケンス・チャートは、制約条件として、事前条件、事後条件、不変条件(の1つまたは複数)が定義されている場合がある。これら各条件が存在する場合には、その条件が設定される。また、条件が存在しない場合には、「条件なし」が設定される。
メッセージ・シーケンス・チャート「MSC1の動作」は、事前条件と、不変条件と、事後条件とを有している。
メッセージ・シーケンス・チャート「MSC2の動作」は、事前条件と、不変条件と、事後条件とを有している。
なお、シナリオブロック21bも少なくとも1つのMSCブロックを有しているが、図5ではその図示を省略している。
ところで、LSI20の設計仕様は、複数のメッセージ・シーケンス・チャートを含む単一の有向グラフによって表されてもよいし、単一の平坦化されたメッセージ図によって表されてもよい。
この平坦化されたメッセージ・シーケンス・チャートは、オブジェクト間で通信されるメッセージの順序を示すものである。
さらに、LSI20の設計仕様は、互いに埋め込まれた複数の有向グラフと複数のメッセージ・シーケンス・チャートによって表されてもよい。
図6は、メッセージ・シーケンス・チャート間の関係と階層構造を説明する図である。
本実施の形態では、LSI20の設計仕様は、有向グラフ30によって、階層的に形成されている。
この有向グラフ30を用いることで、LSI20の設計仕様をコンパクトに表示することができる。
前述したように、有向グラフ30は、複数のメッセージ・シーケンス・チャートと、これらメッセージ・シーケンス・チャート間の関係を示すブランチおよびマージを有している。この関係は、メッセージ・シーケンス・チャートを1以上のシーケンスに順序付けするものである。
他方、各メッセージ・シーケンス・チャートは、オブジェクト間の関係を示すものである。メッセージ・シーケンス・チャートは、オブジェクト間で通信されるメッセージを特定し、少なくとも一部のメッセージが通信される順序を示すものである。
有向グラフ30は、将来的なユーザを認証するため、ある機能によって実行される複数の機能の関係を記述する。これら機能は、形状によって表されるメッセージ・シーケンス・チャートによって規定される。各メッセージ・シーケンス・チャートは、機能によって表現されている。各ブロックを接続する矢印は、機能が実行される順序を記述する。
また、有向グラフ30のエッジは有向であり、ガード条件が付与されている場合がある。
図6に示すように、有向グラフ30は、各自がメッセージ・シーケンス・チャート32、メッセージ・シーケンス・チャート33およびhメッセージ・シーケンス・チャート34によって表される独立したメッセージ・シーケンス・チャートによって規定される3つの機能を有している。
ここで、hメッセージ・シーケンス・チャート34は、複数のメッセージ・シーケンス・チャートの階層構造をまとめて表したものである。
初期状態ブロック31は、仮想的な状態であり、エントリポイントを有向グラフ30に提供する。具体的には、どのメッセージ・シーケンス・チャートが最初に「起動」されるかを指定する。
従って、初期状態ブロック31とメッセージ・シーケンス・チャート32との間の矢印は、メッセージ・シーケンス・チャート32に関連するメッセージ・シーケンス・チャートが有向グラフ30へのエントリ後に直面することを示す。
メッセージ・シーケンス・チャート32により表されるメッセージ・シーケンス・チャートに規定されるメッセージの通信後、メッセージ・シーケンス・チャート33またはhメッセージ・シーケンス・チャート34のいずれかに実行が継続される。
従って、有向グラフ30は、2つのシナリオを含む。
1つのシナリオは、初期状態ブロック31、メッセージ・シーケンス・チャート32およびメッセージ・シーケンス・チャート33を介し進行するパスに関する。
他のシナリオは、初期状態ブロック31、メッセージ・シーケンス・チャート32およびhメッセージ・シーケンス・チャート34を介し進行するパスに関する。
従って、有向グラフ30は、これら2つのシナリオがメッセージ・シーケンス・チャート32まで同じ動作を有するが、メッセージ・シーケンス・チャート32からの動作は異なっていることを示す。
有向グラフ30のエッジは有向であり、ガード条件が付与されている。
ガード条件は、メッセージ・シーケンス・チャートに記述されたメッセージのシーケンスの終了後、ガード条件が成立すればエッジ先のメッセージ・シーケンス・チャート、または、その階層内のメッセージ・シーケンス・チャートへ遷移する。
図6では、メッセージ・シーケンス・チャート32の処理後、i>0のガード条件が成立すれば、メッセージ・シーケンス・チャート33に移行する。一方、i<=0のガード条件が成立すれば、hメッセージ・シーケンス・チャート34に移行する。
この情報は、2つのシナリオの共通部分が設計に関する有向グラフ30を完全にテストするのに繰り返される必要はないため、検証および検証目的に有用に利用される。
ここで、有向グラフ30が有する各メッセージ・シーケンス・チャートは、同一のオブジェクト群を利用してもよい。さらに、あるメッセージ・シーケンス・チャートによって規定される各メッセージが、次のメッセージ・シーケンス・チャートがパスに沿って実行可能となる前に実行される必要があるということを示すルールが、有向グラフ30に関連して設けられていてもよい。
次に、メッセージ・シーケンス・チャートの一般的な構成を説明する。
<メッセージ・シーケンス・チャート>
図7は、メッセージ・シーケンス・チャートの構成を説明する図である。
前述したように、メッセージ・シーケンス・チャートは、機能の実現に関わっている全てのオブジェクト間のやり取りを明確にしたものである。
メッセージ・シーケンス・チャートは、LSIが備えるハードウェアブロック、または、システムと干渉する外部環境であるオフジェクトを有している。
図7に示すメッセージ・シーケンス・チャート(MSC)40には、複数のオブジェクトとして、ハードウェア(HW)41、42、43が設けられている。
これらのオブジェクトが生成された後、データ・イベント・メッセージはオブジェクト間で通信されるものとして示される。
このデータ・イベント・メッセージは、ユーザにより指定されるものである。ユーザは当該メッセージがどのオブジェクト間で通信されるか指定することができる。
例えば、ユーザにより、1つのオブジェクトが選択され、その後に図示しないポインティングツールを用いて第2のオブジェクトが選択される。
メッセージ・シーケンス・チャート40の生成時には、送信イベントを有する第1オブジェクトと受信イベントを有する第2オブジェクトからなる示された2つのオブジェクトの間においてデータ・イベント・メッセージが生成される。このようにして、データ・イベント・メッセージm1〜m4の矢印が、メッセージ・シーケンス・チャート40に示されるハードウェア41、42、43間で送受信されるデータ・イベント・メッセージm1〜m4の4個のメッセージを表すよう生成される。
具体的には、オブジェクトライン44、45、46を相互接続する水平矢印は、データ・イベント・メッセージが、オブジェクト間で送受信されることを示す。
各データ・イベント・メッセージは、送信オブジェクトと受信オブジェクトを関連付けている。オブジェクトライン44、45、46とデータ・イベント・メッセージm1〜m4とが交差する位置は、イベントと呼ばれる。
各データ・イベント・メッセージは、送信オブジェクトに関連する送信イベントと、受信オブジェクトに関連する受信イベントを含む。例えば、データ・イベント・メッセージm1は、オブジェクトライン45とオブジェクトライン44とを接続する。
このため、データ・イベント・メッセージm1は、ハードウェア41および送信オブジェクトと、ハードウェア42および受信オブジェクトとを関連付ける。
さらに、データ・イベント・メッセージm1のオブジェクトライン44との交点は送信イベントを生成し、データ・イベント・メッセージm1とオブジェクトライン45との交点は受信イベントを生成する。
ここで、メッセージ・シーケンス・チャートによって特定される関係について、以下の2つのルールが設けられている。
第1のルール:任意のデータ・イベント・メッセージmに対して、送信イベント(s(m))は、対応する受信イベント(r(m))の前に発生する。
従って、s(m)<r(m)となる。
第2のルール:オブジェクトライン上のイベントは、上から下に順序付けされる。
これら2つのルールは、メッセージ・シーケンス・チャートがオブジェクト間で送受信されるデータ・イベント・メッセージの順序を記述することを示している。
例えば、第1のルールにより、メッセージ・シーケンス・チャート40は、データ・イベント・メッセージm1に関する送信イベントが同じメッセージに関する受信イベントの前に発生することを示している。
また、第2のルールにより、メッセージ・シーケンス・チャート40は、データ・イベント・メッセージm2に関する送信イベントが、データ・イベント・メッセージm4に関する受信イベントの前に発生するということを示している。
図7に示すデータ・イベント・メッセージの送信は受信より先に起きる。
ハードウェア41の時間軸ではデータ・イベント・メッセージm1とデータ・イベント・メッセージm2とが、この順番に送信される。その後、データ・イベント・メッセージm4が受信される。
ハードウェア42の時間軸ではデータ・イベント・メッセージm1が受信された後、データ・イベント・メッセージm3が受信される。
ハードウェア43の時間軸ではデータ・イベント・メッセージm2が受信されてから、データ・イベント・メッセージm3とデータ・イベント・メッセージm4とを、この順番に送信する。
ここで、上記ルールは推移的である。例えば、イベントe1がイベントe2(e1<e2)の前に発生し、イベントe2がイベントe3(e2<e3)の前に発生する場合、イベントe1は、イベントe3(e1<e3)の前に発生する。
しかしながら、これら2つのルールは、全てのデータ・イベント・メッセージの間の順序付けされた関係を規定するものではない。
例えば、4つのオブジェクトを含むが、2つのデータ・イベント・メッセージしか含まないメッセージ・シーケンス・チャートを考える。
第1のデータ・イベント・メッセージが第1オブジェクトと第2オブジェクトとの間で送受信され、第2のデータ・イベント・メッセージが第3オブジェクトと第4オブジェクトとの間で送受信される場合、これら2つのデータ・イベント・メッセージの間の順序付けされた関係はこれら2つのルールによっては規定されない。この場合、2つのデータ・イベント・メッセージは任意の順序で発生する。
図7では、ハードウェア42とハードウェア43は時間軸の順序関係を共有しないため、データ・イベント・メッセージm1とデータ・イベント・メッセージm2の受信順序は図7に表現した順序と異なってもかまわない。
ハードウェア41とハードウェア42は時間軸の順序関係を共有しないため、データ・イベント・メッセージm3とデータ・イベント・メッセージm4の受信順序は、図7に表現した順序と異なってもかまわない。
図8は、メッセージ・シーケンス・チャートの他の例を示す図である。
メッセージ・シーケンス・チャート40aには、複数のオブジェクトとして、ハードウェア41、42、43が設けられている。
メッセージ・シーケンス・チャート40aは、同時性制約、タイムアウト制約および同期エッジの3つの(先進的)機能を有している。
同時性制約およびタイムアウト制約については、イベントを包囲するボックスが描画されている。
同時性制約を示すボックス47には、このボックス47がこれらのイベントを同時イベントにグループ化することを示す「simul」がラベル付けされている。
ボックス47は、データ・イベント・メッセージm5とデータ・イベント・メッセージm6に関する送信イベントをグループ化している。
タイムアウト制約を示すボックス48には、タイムアウト制約のタイムアウト値を表す整数がラベル付けされている。
実行がタイムアウト制約に直面すると、示されたタイムアウト期間が経過するまで実行が停止される。時限実行モデルでは、タイムアウト期間が経過して始めて実行が継続する。
従って、データ・イベント・メッセージm7は、ボックス48のラベルに付されている「3」時刻単位後経過した後に、送信される。
同期エッジは、データ・イベント・メッセージの順序を特定するために用いられる。同期エッジの表示は、名前「synch」が同期エッジに利用可能であるという点を除いて、データ・イベント・メッセージと同様に描かれている。
「synch」とラベル付けされたデータ・イベント・メッセージ(以下、「同期メッセージ」という)を利用して、順序付けされた関係を確立する。例えば、ハードウェア42に関する送信イベントと、ハードウェア41に関する受信イベントを含む同期エッジを考える。同期メッセージは、ハードウェア42がデータ・イベント・メッセージm8を受信した後に送信されるものとして示される。同期メッセージは、また、データ・イベント・メッセージm9が送信されるまでにハードウェア41により受信されるものとして示される。
メッセージ・シーケンス・チャート40aによれば、ハードウェア42におけるデータ・イベント・メッセージm8の受信は、ハードウェア41におけるデータ・イベント・メッセージm9の送信前に発生する必要がある。
ここで、同期エッジは関連性のないオブジェクト間の関係を生成する。しかしながら、ある実施例によると、同期エッジによって関連するオブジェクト間において実際にメッセージは送受信されない。
同期メッセージは、データ・イベント・メッセージm7およびデータ・イベント・メッセージm8と、データ・イベント・メッセージm5およびデータ・イベント・メッセージm6とを比較して、これらの間の順序を生成するものではない。
しかしながら、同期メッセージは、データ・イベント・メッセージm7とデータ・イベント・メッセージm8に関する受信イベントの後にデータ・イベント・メッセージm9に関する送信イベントを発生させる。
次に、設計検証装置10の構成を説明する。
<設計検証装置>
図9は、設計検証装置のハードウェア構成例を示す図である。
設計検証装置10は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス109を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、外部補助記憶装置106、インタフェース107および通信インタフェース108が接続されている。
CPU101は、入力インタフェース105、外部補助記憶装置106、インタフェース107および通信インタフェース108から受信した情報を処理するよう動作する。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
HDD103には、OSやアプリケーションプログラムが格納される。また、HDD103内には、XML(Extensible Markup Language)形式で表現されたリスト構造や、プログラムファイルが格納される。
グラフィック処理装置104には、モニタ104aが接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ104aの画面に表示させる。入力インタフェース105には、キーボード105aとマウス105bとが接続されている。入力インタフェース105は、キーボード105aやマウス105bから送られてくる信号を、バス109を介してCPU101に送信する。
外部補助記憶装置106は、記録媒体に書き込まれた情報を読み取ったり、記録媒体に情報を書き込んだりする。外部補助記憶装置106で読み書きが可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、HDD、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
インタフェース107は、設計検証装置10に接続された装置から情報を送受信するよう動作可能なハードウェアである。具体的には、インタフェース107は、信号インタフェース200およびテスト対象装置300と通信する。
通信インタフェース108は、ネットワーク400に接続されている。通信インタフェース108は、ネットワーク400を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。このようなハードウェア構成の設計検証装置10内には、以下のような機能が設けられる。
図10は、設計検証装置の機能を示すブロック図である。
設計検証装置10は、検証用シナリオ生成部11と、検証用シナリオ格納部12と、シナリオ優先度付与部13と、優先度付与済みシナリオ格納部14と、パラメータ優先度付与部15と、優先度ルール格納部16と、パラメータ格納部17と、検証順位決定部18と、出力部19とを有している。
また、図示していないが、設計検証装置10は、他にもメッセージ・シーケンス・チャートを生成するツールや、設計の実現形態の動作を検証するため、メッセージ・シーケンス・チャートに基づくステートマシン(State Machine)を生成するためのツールを有していてもよい。
検証用シナリオ生成部11は、図4および図5にて説明したLSI20の設計仕様のデータに基づいて、シナリオ毎に検証用シナリオを生成する。
ここで、検証用シナリオは、LSI20の設計仕様の各シナリオが備えるメッセージ・シーケンス・チャートそれぞれに設計仕様のラベル(検証対象部位を識別する識別情報)を関連付けた情報である。なお、検証対象部位としては、例えば、機能、シナリオ、メッセージ・シーケンス・チャート等が挙げられる。
この検証用シナリオは、シナリオ優先度付与部13の処理対象となる中間的なデータである。
また、検証用シナリオ生成部11は、検証用シナリオを生成する際に作成するデータを一時記憶する機能も有している。
検証用シナリオ格納部12は、検証用シナリオ生成部11により生成された検証用シナリオを格納する。
シナリオ優先度付与部13は、ユーザにより入力されるパターンを参照し、検証用シナリオに優先度(処理優先度)を付与する。
シナリオ優先度付与部13に入力されるパターンは、項目として識別情報と同様の情報を有している。例えば、機能名、シナリオ名、シナリオの種類(基本動作、代替動作、例外動作)、メッセージ・シーケンス・チャート名、上記の論理的な組み合わせのうちの少なくとも1つを有している。
また、パターンは処理優先度情報を有していてもよい。
処理優先度情報を有するシナリオの種類のパターンの一例としては、例外動作より基本動作を優先するパターン(基本動作>例外動作)等が挙げられる。また、処理優先度情報を有するメッセージ・シーケンス・チャート名のパターンの一例としては、問い合わせより認証成功を優先するパターン(認証成功>問い合わせ)が挙げられる。さらに、認証成功より認証失敗を優先するパターン(認証失敗>認証成功>問い合わせ)等が挙げられる。
優先度付与済みシナリオ格納部14は、シナリオ優先度付与部13によって優先度が付与された検証用シナリオ(以下、「優先度付与済みシナリオ」という)を格納する。優先度付与済みシナリオは、パラメータ優先度付与部15の処理対象となる中間的なデータである。
パラメータ優先度付与部15に入力されるパターンは、項目として、(1)シナリオ、(2)パラメータ情報(パラメータ値の集合)、(3)(1)のシナリオに対する制約条件を有している。入力される1つのシナリオに対し、異なる複数の制約条件を有していてもよい。
パラメータ優先度付与部15は、入力されるパターンに含まれるシナリオの制約条件としてのパラメータ値に優先度を付与する。
また、パラメータ優先度付与部15は、入力されるシナリオに基づいて、当該シナリオを検証する検証用シナリオを特定する。そして、特定した検証用シナリオと、パラメータ値の組み合わせを求める。
以下、パラメータ情報と制約条件について説明する。
<パラメータ情報>
図11は、入力されるパラメータ情報を示す図である。
LSI20の設計仕様には、機能の階層構造とは別個に、事前条件や事後条件を明確に定義するためのパラメータ情報を定義することができる。
LSI20は、変数を割り当てるレジスタとポートを有している。図11では、1つのレジスタおよび1つのポートが有する情報を1つのブロックに示している。
レジスタブロック25a、25bは、それぞれレジスタの情報(レジスタ情報)を有している。
レジスタ情報は、属性として、パラメータ名、型、最大値、最小値、典型値を有している。
パラメータ名は、設計仕様で定義された外部から参照可能なレジスタを識別する名前を示している。例えば、レジスタブロック25aのレジスタ情報のパラメータ名はレジスタ「V」である。
型は、変数の性質を表すデータ型を示している。例えば、レジスタブロック25aのレジスタ情報の型は、「integer」である。
最小値、最大値、典型値は、それぞれ、パラメータを抽出するための条件を示している。
例えば、レジスタブロック25aのレジスタ情報の最小値、最大値は、レジスタ「V」に格納できる最小値、最大値を示している。
例えば、レジスタブロック25aのレジスタ情報の最小値は「0」、最大値は「137」である。
また、典型値は、例えば、ユーザが予め設定した値である。設定するか否かは、ユーザが任意に決定することができる。例えば、レジスタブロック25aのレジスタ情報の典型値は「14」である。また、レジスタブロック25bのレジスタ情報の典型値は未設定(n.a:not applicable)である。
ポートブロック26a、26bは、それぞれ1つのポートの情報(ポート情報)を有している。
ポート情報は、属性として、ポート名、型、最大値、最小値、典型値を有している。
ポート名は、設計仕様で定義された外部から参照可能なポートを識別する名前を示している。例えば、ポートブロック26aのポート情報のパラメータ名はポート「INT1」である。
型は、変数の性質を表すデータ型を示している。例えば、ポートブロック26aのポート情報の型は[0:1]である。
最小値、最大値、典型値は、それぞれ、パラメータを抽出するための条件を示している。
例えば、ポートブロック26aのポート情報の最小値、最大値は、ポート「INT1」に格納できる最小値、最大値を示している。
例えば、ポートブロック26aのポート情報の最小値は「0」、最大値は「3」である。
また、典型値は、例えば、ユーザが予め設定した値である。設定するか否かは、ユーザが任意に決定することができる。例えば、ポートブロック26aのポート情報の典型値は「0」である。また、ポートブロック26bのポート情報のレジスタ情報の典型値は未設定(n.a)である。
図12は、図11に示したパラメータ情報のデータ構造例を示す図である。
パラメータ情報は、例えば、図12に示すデータ構造で与えられる。このパラメータ情報を示すデータ27は、XML形式で表現されている。
記述27aは、レジスタブロック25aに関する記述部分を示している。また、記述27bは、レジスタブロック25bに関する記述部分を示している。また、記述27cは、ポートブロック26aに関する記述部分を示している。また、記述27dは、ポートブロック26bに関する記述部分を示している。
再び図10に戻って説明する。
優先度ルール格納部16は、パラメータ優先度付与部15が優先度を付与するために用いる優先度ルールを格納している。
優先度ルールは、例えば、予め設計者が決定しておくものである。以下、優先度ルールの一例を示す。
典型値は優先度を「1」とする。
典型値が設計仕様で与えられない場合は、中央値(=(最大値+最小値)/2)を典型値とし、優先度を「2」とする。
最大値と最小値は、優先度を「10」とする。
境界値(ビット境界、零等)は、優先度を「4」とする。境界値は、経験上バグが発生することが多い。従って、境界値の優先度を典型値の優先度よりも大きく設定するのが好ましい。なお、ビット境界は、例えば、2ビットであれば「7」と「8」や、「63」と「64」等が挙げられる。
境界値に隣接する値は、優先度を「5」とする。
過去の設計事例でバグが出た値は優先度を「7」とする。
さらに、制御に関わるパラメータ(例えば、割り込み信号等)は、上記優先度の値を「+1」する。また、制御に関わらないパラメータ(例えば、画像のサイズ等)は、上記優先度の値を「−1」する。
パラメータ優先度付与部15は、入力される制約条件とパラメータ情報と優先度ルールとによって、パラメータ値の優先度を決定することができる。
例えば、図11に示すパラメータ情報と、事前条件(制約条件)としてパラメータ値「V=14」とが入力された場合を説明する。
事前条件のパラメータ値「V=14」は、レジスタ「V」の典型値である。従って、このパラメータ値の優先度は「1」となる。
なお、入力されたパラメータ値が、例えばユーザによって優先度ルール格納部16に設定されていないパラメータ値である場合は、例えば、優先度が設定されないパラメータ値の優先度は全て「0」とする、のようなルールを予め決定しておくこともできる。これにより、優先度を定めることができる。例えば、典型値に対して優先度が設定されなかった場合、典型値の優先度を「0」とする。
<制約条件>
前述したように、パターンは、項目として制約条件(事前条件、事後条件、不変条件)の1つまたは複数を有している。
制約条件が与えられたときは、設計検証装置10は、検証用シナリオの優先順位の決定に際し、パターンとして入力された制約条件だけを利用するようにしてもよい。また、メッセージ・シーケンス・チャートに設定されている制約条件と、入力された制約条件の論理式(論理積、論理和等)を利用するようにしてもよい。なお、論理積を利用する場合において、その演算結果に矛盾が生じる場合は、そのパラメータ値と検証用シナリオの組み合わせを優先度付与対象外(検証対象外)とするようにしてもよい。例えば、メッセージ・シーケンス・チャートの事前条件が(x>1)であり、パターンとして与えられた事前条件が(x<1)である場合は、そのメッセージ・シーケンス・チャートを含む検証用シナリオとパラメータ値の組み合わせを優先度付与対象外とするようにしてもよい。事後条件、不変条件についても同様である。
パラメータ格納部17は、各シナリオに対する優先度が付与されたパラメータを格納する。
検証順位決定部18は、優先度付与済みシナリオの優先度と入力されたパラメータ値の優先度とから評価関数を用いて入力されたシナリオおよびパラメータ値の組み合わせの優先順位(検証順位)を決定する。
なお、評価関数としては、例えば、全ての優先度を加算する関数や、加算と乗算を組み合わせた関数等が挙げられる。
例えば、全ての優先度を加算する関数を用いた場合、入力されたシナリオを検証する検証用シナリオに付与された優先度と、入力された制約条件としてのパラメータ値の優先度とを加算して加算結果を取得する。入力されたシナリオが複数存在するときは、シナリオ毎に加算結果を取得する。
また、入力されたシナリオに対する制約条件が複数存在するときは、制約条件毎に加算結果を取得する。
そして、得られた加算結果を比較して優先度の合計値が大きい順番に入力されたシナリオおよびパラメータ値の組み合わせの優先順位(入力されたパラメータ値でのシナリオの優先順位)を決定する。
出力部19は、検証順位決定部18が決定した優先順位の順番に入力されたシナリオおよびパラメータ値の組み合わせを並べる。
そして、出力部19は、優先順位を付与した入力されたシナリオおよびパラメータ値の組み合わせを予め用意されたフォーマットに従って作成したリスト(優先順位リスト)を出力する。
なお、出力部19は、ユーザにより入力されたソート条件に従って入力されたシナリオおよびパラメータ値の組み合わせを並べるようにしてもよい。
次に、設計検証装置10の全体処理を説明する。
図13は、設計検証装置の全体処理を示すフローチャートである。
まず、検証用シナリオ生成部11が、ユーザにより入力されたLSI20の設計仕様に基づいて、検証用シナリオ生成処理を行って検証用シナリオを生成する(ステップS1)。生成した検証用シナリオは、検証用シナリオ格納部12に格納する。
次に、シナリオ優先度付与部13が、ユーザにより入力されたパターンおよび検証用シナリオ格納部12に格納されている検証用シナリオに基づいて、シナリオ優先度付与処理を行って検証用シナリオに優先度を付与する(ステップS2)。優先度付与済みシナリオは、優先度付与済みシナリオ格納部14に格納する。
次に、パラメータ優先度付与部15が、入力されたパラメータ値の優先度を決定する(ステップS3)。そして、決定した優先度をシナリオに関連付けて、パラメータ格納部17に格納する。
次に、検証順位決定部18が、優先順位決定処理を行って優先度付与済みシナリオの優先度とパラメータ値の優先度から入力されたシナリオおよびパラメータ値の組み合わせの優先順位を決定する(ステップS4)。すなわち、全ての組み合わせに対し、優先度を評価関数で計算することにより、最終的な入力されたシナリオおよびパラメータ値の組み合わせの優先順位を算出する。
次に、出力部19が、ソート処理を行って、算出した優先順位の順番に入力されたシナリオおよびパラメータ値の組み合わせを並べる(ステップS5)。
そして、出力部19が、優先順位を付与した入力されたシナリオおよびパラメータ値の組み合わせを、優先順位リストとして出力する(ステップS6)。
以上で、全体処理の説明を終了する。
なお、検証用シナリオ生成処理を予め行って生成した検証用シナリオを検証用シナリオ格納部12に格納しておいて、ユーザによるパターンの入力を待ってシナリオ優先度付与処理以降を行うようにしてもよい。また、ユーザによるパターンの入力時に、検証用シナリオ生成処理を開始するようにしてもよい。
次に、ステップS1に示す検証用シナリオ生成処理を説明する。
図14および図15は、検証用シナリオ生成処理を示すフローチャートである。
まず、LSI20の設計仕様にラベルを付与する(ステップS11)。この処理については、後に詳述する。
次に、ステップS11にて付与された設計仕様において、メッセージ・シーケンス・チャートを備える有向グラフを平坦化(Flatten)する(ステップS12)。具体的には、有向グラフの階層構造を取り払う。
次に、平坦化した有向グラフからメッセージ・シーケンス・チャートを1つ選択する(ステップS13)。
次に、選択したメッセージ・シーケンス・チャートを有限ステートマシン(FSM)に変換する(ステップS14)。これにより、一連のメッセージ・シーケンス・チャートを組み合わせたデータ・イベント・メッセージのやり取りを有限ステートマシンで表現する。この処理については、後に詳述する。
次に、変換された有限ステートマシンの各ステートに、メッセージ・シーケンス・チャートに付されていたラベルを付与する(ステップS15)。
ステップS14およびステップS15の処理により、有限ステートマシンの各ステートにラベルが付与される。各ステートにラベルが付与された有限ステートマシンは、検証用シナリオ生成部11が一時記憶する。
次に、未処理のメッセージ・シーケンス・チャートが存在するか否かを判断する(ステップS16)。
未処理のメッセージ・シーケンス・チャートが存在する場合(ステップS16のYes)、ステップS13に移行して未処理のメッセージ・シーケンス・チャートを選択し、選択したメッセージ・シーケンス・チャートについて、ステップS14以降の処理を引き続き行う。
一方、未処理のメッセージ・シーケンス・チャートが存在しない場合(ステップS16のNo)、ステップS11にてラベルが付与された設計仕様を参照し、設計仕様が備えるメッセージ・シーケンス・チャートを1つ選択する(ステップS17)。
次に、メッセージ・シーケンス・チャートの制約(synchやtimeout等)から、選択したメッセージ・シーケンス・チャートの有限ステートマシンの不要なステートを刈る(ステップS18)。この処理は後に詳述する。
次に、未処理のメッセージ・シーケンス・チャートが存在するか否かを判断する(ステップS19)。
未処理のメッセージ・シーケンス・チャートが存在する場合(ステップS19のYes)、ステップS17に移行し、未処理のメッセージ・シーケンス・チャートを選択する。そして、選択したメッセージ・シーケンス・チャートについてステップS18以降の処理を引き続き行う。
一方、未処理のメッセージ・シーケンス・チャートが存在しない場合(ステップS19のNo)、ステップS11にてラベルが付与されたLSI20の設計仕様を参照し、設計仕様が備える機能を選択する(図15のステップS20)。
次に、選択された機能からシナリオを選択する(ステップS21)。
次に、ステップS15にてラベルが付与された有限ステートマシンから、選択したシナリオと同じラベルを有する有限ステートマシンを抽出する(ステップS22)。
次に、選択したシナリオと同じラベルを有する有限ステートマシンの部分(以下、「部分有限ステートマシン」という)を抽出する(ステップS23)。検証用シナリオ生成部11は、抽出した有限ステートマシンの部分を一時記憶する。
次に、ステップS23にて抽出した有限ステートマシンの部分から検証用シナリオを生成し、生成した検証用シナリオを検証用シナリオ格納部12に格納する(ステップS24)。なお、有限ステートマシンの部分から検証用シナリオを生成する方法は、後に詳述する。
次に、ステップS20にて選択した機能に、未処理のシナリオが存在するか否かを判断する(ステップS25)。
未処理のシナリオが存在する場合(ステップS25のYes)、ステップS21に移行し、未処理のシナリオを選択し、選択したシナリオについてステップS22以降の処理を引き続き行う。
一方、ステップS20にて選択した機能に、未処理のシナリオが存在しない場合(ステップS25のNo)、LSI20の設計仕様に、未処理の機能が存在するか否かを判断する(ステップS26)。
未処理の機能が存在する場合(ステップS26のYes)、ステップS20に移行し、未処理の機能を選択し、選択した機能についてステップS21以降の処理を引き続き行う。
一方、未処理の機能が存在しない場合(ステップS26のNo)、処理を終了する。
以上で、検証用シナリオ生成処理の説明を終了する。
次に、ステップS11のラベルの付与の処理(ラベル付与処理)を詳しく説明する。
図16は、ラベル付与処理を示すフローチャートである。
まず、LSI20の設計仕様を参照し、機能を1つ選択する(ステップS31)。
次に、選択した機能からシナリオを1つ選択する(ステップS32)。
次に、選択したシナリオに付属するメッセージ・シーケンス・チャートを1つ選択する(ステップS33)。
次に、選択したメッセージ・シーケンス・チャートに、ステップS31にて選択した機能名(現在選択されている機能名)およびステップS32にて選択したシナリオ名(現在選択されているシナリオ名)をラベルとして付与する(ステップS34)。また、既にラベルが付与されている場合は、ラベルを追加する。
なお、ラベルには、機能名・シナリオ名に加え、メッセージ・シーケンス・チャート名を付するようにしてもよい。
次に、当該シナリオ内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断する(ステップS35)。
当該シナリオ内に未処理のメッセージ・シーケンス・チャートが存在する場合(ステップS35のYes)、ステップS33に移行し、当該シナリオ内の未処理のメッセージ・シーケンス・チャートを選択し、選択したメッセージ・シーケンス・チャートについてステップS34以降の処理を引き続き行う。
一方、当該シナリオ内に未処理のメッセージ・シーケンス・チャートが存在しない場合(ステップS35のNo)、未処理のシナリオが存在するか否かを判断する(ステップS36)。
未処理のシナリオが存在する場合(ステップS36のYes)、ステップS32に移行し、未処理のシナリオを選択し、選択したシナリオについてステップS33以降の処理を引き続き行う。
一方、未処理のシナリオが存在しない場合(ステップS36のNo)、未処理の機能が存在するか否かを判断する(ステップS37)。
未処理の機能が存在する場合(ステップS37のYes)、ステップS31に移行し、未処理の機能を選択し、選択した機能についてステップS32以降の処理を引き続き行う。
一方、未処理の機能が存在しない場合(ステップS37のNo)、処理を終了する。
以上で、ラベル付与処理の説明を終了する。
次に、図13のステップS2に示すシナリオ優先度付与処理を説明する。
図17は、シナリオ優先度付与処理を示すフローチャートである。
まず、パラメータi=1にセットする(ステップS41)。
次に、入力されたパターンの中から、優先順位の最も低い項目を選択する(ステップS42)。例えば、入力されたパターンが、(基本動作>例外動作)である場合は、例外動作を選択する。
次に、選択した項目を含むラベルが全てのステートに付与されている検証用シナリオを全て取得する(ステップS43)。
次に、取得した全ての検証用シナリオの優先度をiとする(ステップS44)。
次に、パラメータiを更新(i=i+1)する(ステップS45)。
次に、優先順位の項目が残っているか否かを判断する(ステップS46)。
残っている場合(ステップS46のYes)、ステップS42に移行し、未処理の項目のうち最も優先順位の低い項目を選択し、ステップS43以降の処理を引き続き行う。
一方、残っていない場合(ステップS46のNo)、処理を終了する。
以上で、シナリオ優先度付与処理の説明を終了する。
次に、図13のステップS3に示すパラメータ優先度付与処理を説明する。
図18は、パラメータ優先度付与処理を示すフローチャートである。
まず、ユーザにより入力されたパターンに含まれる制約条件として与えられているパラメータ値のパラメータ名を全て抽出する(ステップS51)。
次に、制約条件に違反するパラメータ値と検証用シナリオの組み合わせを優先度付与対象から除外する(ステップS52)。前述したように、例えば、メッセージ・シーケンス・チャートに設定されている制約条件と、制約条件として入力されたパラメータ値の論理積を利用する場合において、その演算結果に矛盾が生じる場合は、入力されたパラメータ値と、そのメッセージ・シーケンス・チャートを含む検証用シナリオの組み合わせを削除する。
次に、ユーザにより入力されたシナリオを検証する検証用シナリオに対し、抽出したパラメータ名に対応するパラメータ値と優先度の組み合わせを求める(ステップS53)。具体的には、パラメータ名に対応するパラメータの最大値、最小値、典型値、境界値等を抽出する。なお、典型値が得られないときは、中央値を抽出する。
そして、抽出した値に前述した優先度ルールを適用して優先度を求める。ここで、優先度ルールが重複して適用される値が存在する場合、優先度が最大のものを適用する。
例えば、最大値が「63」である場合、この値は境界値にも該当する。この場合、最大値の優先度ルールを適用した場合、優先度は「10」であり、境界値の優先度ルールを適用した場合、優先度は「4」である。このため、優先度を「10」とする。その後、処理を終了する。
以上でパラメータ優先度付与処理の説明を終了する。
なお、本実施の形態では、制約条件に違反する検証用シナリオを削除する処理(ステップS52)を、パラメータ名を抽出する処理(ステップS51)とパラメータ値と優先度の組み合わせを求める処理(ステップS53)の間に行うようにした。しかし、これに限らず、当該処理をステップS53の後に行うようにしてもよい。
以下、具体例を用いて設計検証装置10の処理を説明する。
<具体例>
次に、ラベル付与処理の具体例を説明する。
図19は、LSIの設計仕様のデータ構造の具体例を示す図である。
図19に示すLSI20の設計仕様は、ATM(Automatic Teller Machine)取引に関する機能を表している。
この設計仕様は、ATMカードおよびPIN(Personal Identification Number)を用いてATMの将来的なユーザを認証する簡単化された記述を提供する。
具体的には、機能ブロック51にはATM取引開始機能が設定されている。
図19に示すLSI20の設計仕様には、2つのシナリオが用意されている。
第1のシナリオは、機能ブロック51に対応付けられている機能、シナリオブロック51aに対応付けられているシナリオ、シナリオブロック51aに対応付けられているシナリオを実現するための検証用シナリオを開始、進行するパスに関する。
この検証用シナリオは、MSCブロック511a、512aに対応付けられているメッセージ・シーケンス・チャートによって実現される。
ここで、MSCブロック512aに対応付けられているメッセージ・シーケンス・チャートには、事前条件として「0<V<15」が設定されており、事後条件として「INT1=0」が設定されている。
この第1のシナリオは、将来的なユーザによって提供されるPINを受け付けるATMと関連付けされている。
第2のシナリオは、機能ブロック51に対応付けられている機能、シナリオブロック51bに対応付けられているシナリオ、シナリオブロック51bに対応付けられているシナリオを実現するための検証用シナリオを開始、進行するパスに関する。
この検証用シナリオは、MSCブロック511b、512bに対応付けられているメッセージ・シーケンス・チャートによって実現される。
ここで、MSCブロック512bに対応付けられているメッセージ・シーケンス・チャートには、事前条件として「V=0、V≧15」が設定されており、事後条件として「INT1=1or2」が設定されている。
この第2のシナリオは、将来的なユーザによって提供されるPINを拒否するATMと関連付けされている。
以下、第1のシナリオをシナリオ「成功」と言い、第2のシナリオをシナリオ「失敗」という。
図20は、メッセージ・シーケンス・チャートの具体例を示す図である。
図20(a)〜図20(c)は、それぞれ、検証用シナリオに関するメッセージ・シーケンス・チャートを示す図である。
図20(a)に示すメッセージ・シーケンス・チャート40bは、MSCブロック511aに対応付けられているメッセージ・シーケンス・チャートの識別名「問い合わせ」に関するメッセージ・シーケンス・チャート(以下、単にメッセージ・シーケンス・チャート「問い合わせ」という)である。
図20(a)に示すオブジェクトは、ユーザインタフェース(I/F)41a、ATM42aおよびデータベース43aによって表される。
各オブジェクトはまた、ユーザインタフェースライン44a、ATMライン45aおよびデータベースライン46aを含むオブジェクトラインを含む。
前述したルールを利用して、メッセージ・シーケンス・チャート40bは、以下の処理を行う。
まず、ATM42aはカード挿入依頼メッセージ(Insert_Card)をユーザインタフェース41aに送信する(ステップS61)。
カード挿入依頼メッセージの受信後、ユーザインタフェース41aは、カード挿入メッセージ(Card_Inserted)をATM42aに送信する(ステップS62)。
カード挿入メッセージの送信後、ユーザインタフェース41aは、入力されたパスワード(PIN)をATM42aに送信する(ステップS63)。
ATM42aが、パスワードを受信した後、ATM42aは認証依頼(PIN_verify)メッセージをデータベース43aに送信する(ステップS64)。
図20(b)に示すメッセージ・シーケンス・チャート40cは、MSCブロック512aに対応付けられているメッセージ・シーケンス・チャートの識別名「認証成功」に関するメッセージ・シーケンス・チャート(以下、単にメッセージ・シーケンス・チャート「認証成功」という)である。
メッセージ・シーケンス・チャート40cは、ユーザインタフェース41a、ATM42aおよびデータベース43aに関するメッセージ・シーケンス・チャートにおいて用いられる同一のオブジェクトの表示を含む。
前述したルールを利用して、メッセージ・シーケンス・チャート40cは、以下の処理を行う。
すなわち、データベース43aは、「0<V<15」をATM42aに送信する(ステップS65)。ATM42aがユーザデータを受信した後、ATM42aは、メニュー表示をユーザインタフェース41aに送信する(ステップS66)。また、「INT1=0」をユーザインタフェース41aに送信する(ステップS67)。
図20(c)に示すメッセージ・シーケンス・チャート40dは、MSCブロック512bに対応付けられているメッセージ・シーケンス・チャートの識別名「認証失敗」に関するメッセージ・シーケンス・チャート(以下、単にメッセージ・シーケンス・チャート「認証失敗」という)である。
メッセージ・シーケンス・チャート40dは、ユーザインタフェース41a、ATM42aおよびデータベース43aに関連するメッセージ・シーケンス・チャートで用いられる同一のオブジェクトの表現を含む。
前述したルールを利用して、メッセージ・シーケンス・チャート40dは、以下の処理を行う。
データベース43aは、「V=0、V≧15」をATM42aに送信する(ステップS68)。ATM42aがエラーを受信した後、ATM42aは、エラーメッセージをユーザインタフェース41aに送信する(ステップS69)。また、「INT1=1or2」をユーザインタフェース41aに送信する(ステップS70)。
図21〜図23は、LSIの設計仕様にラベルを付与する具体例を示す図である。
まず、LSI20の設計仕様を参照し、機能ブロック51に対応付けられている機能「ATM取引開始」を選択する。
次に、選択した機能からシナリオブロック51aに対応付けられているシナリオ「成功」を選択する。
次に、選択したシナリオ「成功」に対応付けられているメッセージ・シーケンス・チャート「問い合わせ」を選択する。
次に、選択したメッセージ・シーケンス・チャート「問い合わせ」にラベルを付与する。
前述したように、ラベルとして、現在選択されている機能名および現在選択されているシナリオ名を付与する。またラベルは、機能名・シナリオ名:シナリオの種類の順に付与する。従って、図21に示す例では、「ATM取引開始・成功:基本動作」のラベル511a1を付与する。
図21は、ここまでの例を示している。
次に、当該シナリオブロック51a内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断すると、未処理のメッセージ・シーケンス・チャート「認証成功」が存在する。従って、このメッセージ・シーケンス・チャート「認証成功」を選択する。
次に、選択したメッセージ・シーケンス・チャート「認証成功」に「ATM取引開始・成功:基本動作」のラベル512a1を付与する。
次に、当該シナリオブロック51a内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断すると、当該シナリオブロック51a内に未処理のメッセージ・シーケンス・チャートは存在しない。
従って、機能ブロック51内に未処理のシナリオが存在するか否かを判断すると、シナリオブロック51bの未処理のシナリオ「失敗」が存在する。
そこで、このシナリオ「失敗」を選択する。
次に、選択したシナリオ「失敗」に対応付けられているメッセージ・シーケンス・チャート「問い合わせ」を選択する。
次に、選択したメッセージ・シーケンス・チャート「問い合わせ」に「ATM取引開始・失敗:例外動作」のラベルを付与する。ここでは、既にラベル511a1が付与されているので、「ATM取引開始・失敗:例外動作」のラベルをラベル511a1に追加する。
図22ではここまでの例を示している。
次に、当該シナリオ内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断すると、未処理のメッセージ・シーケンス・チャート「認証失敗」が存在する。従って、このメッセージ・シーケンス・チャート「認証失敗」を選択する。
次に、選択したメッセージ・シーケンス・チャート「認証失敗」に「ATM取引開始・失敗:例外動作」のラベル512b1を付与する。
次に、当該シナリオブロック51b内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断すると、当該シナリオブロック51b内に未選択のメッセージ・シーケンス・チャートは存在しない。
従って、機能ブロック51内に未処理のシナリオが存在するか否かを判断すると、未処理のシナリオは存在しない。
従って、処理を終了する。
図23は、ここまでの処理を示している。
図24は、ラベルを付与したLSIの設計仕様のデータ構造例を示す図である。
ラベルを付与したLSI20のデータ60は、XML形式で表現されている。
記述61は、メッセージ・シーケンス・チャート40bに関する記述部分を示している。また、記述62は、メッセージ・シーケンス・チャート40cに関する記述部分を示している。また、記述63は、メッセージ・シーケンス・チャート40dに関する記述部分を示している。
ここで、記述61a、62a、63aは、それぞれ、ラベル付与処理によって追記された行である。ラベル付与処理によって追記された行には、ラベル名であることを識別するXMLタグ<label name>が付されている。また、タグ内の内容は、それぞれ付与されたラベルの内容を示している。
なお、前述したように、ラベルには、機能名・シナリオ名:シナリオの種類に加え、メッセージ・シーケンス・チャート名を付与するようにしてもよい。これにより、優先順位のパターンとしてメッセージ・シーケンス・チャート名が入力された場合においてもシナリオに優先順位を付与することができる。
図25は、LSIの設計仕様にラベルを付与する他の具体例を示す図である。
図25に示すラベル511a1、512a1、512b1には、いずれも機能名・シナリオ名:シナリオの種類に加え、メッセージ・シーケンス・チャート名が付与されている。
次に、ステップS14の、メッセージ・シーケンス・チャートを有限ステートマシンに変換する処理を、具体例を用いて説明する。
図26は、有限ステートマシンに変換する処理を説明するメッセージ・シーケンス・チャートを示す図である。
有向グラフを有限ステートマシンに変換するため、有向グラフの備える各メッセージ・シーケンス・チャートによって規定されるイベントを用いて、有限ステートマシンのステートを特定する。
メッセージ・シーケンス・チャートは可能なイベント順序を規定し、各オブジェクトにおいて完了されたイベントは状態に対応する。例えば、初期状態はいずれのオブジェクトにおいても完了されないイベントに対応する。最終状態は、各オブジェクトにおいて完了した全てのイベントに対応する。
ここで、メッセージ・シーケンス・チャート70を検討すると、メッセージ・シーケンス・チャート70の一部が、オブジェクトの一部のイベント群を考慮することによって有限ステートマシンに投影される。
図26に示すオブジェクトは、送信オブジェクト71、長距離送信オブジェクト72、受信オブジェクト73および長距離受信オブジェクト74によって表される。
例えば、メッセージ・シーケンス・チャート70では、有限ステートマシンが、送信オブジェクト71と受信オブジェクト73に対して生成される。図示されるように、送信オブジェクト71は送信イベントt1〜t5を有している。受信オブジェクト73は、受信イベントr1〜r6を有している。
ここで、送信オブジェクト71と受信オブジェクト73は、メッセージを交換することなく、2つの同期エッジによって関連付けされる。
図27は、図26に示すメッセージ・シーケンス・チャートに関連する状態マトリックスを示す図である。
状態マトリックス80を利用して、有限ステートマシンの生成方法をさらに説明する。
2つのみしかオブジェクトが存在しない場合、メッセージ・シーケンス・チャート70の有限ステートマシンは、2次元の状態マトリックス80として可視化することができる。
状態マトリックス80の各ブロックは、送信オブジェクト71が送信イベントtiを終了させ、受信オブジェクト73が受信イベントrjを終了させた状態に対応している。
このため、状態マトリックス80の各ブロックは、状態(ti,rj)を規定する。
ここで、状態マトリックス80の原点は、左上隅に設けられている。初期状態は、記号⊥を用いて各オブジェクトに対して示される。
状態マトリックス80の左上隅の状態が初期状態であるため、状態遷移は各状態から右下にトレースすることによって特定される。最終状態は、右下隅に示す状態となる。
送信オブジェクト71と受信オブジェクト73とが2つの同期エッジによっては関連付けされていない場合、状態マトリックス80は、(n×m)の完全な2次元の状態マトリックスとなる(ただし、nは、送信オブジェクト71により送信されるメッセージの個数であり、mは、受信オブジェクト73によって受信されるメッセージの個数である)。
しかしながら、メッセージ・シーケンス・チャート70の同期エッジの存在は、状態マトリックス80に示されるような有効な状態の個数を減少させる。
同期エッジにより、状態マトリックス80に示される一部の状態は有効とはならず、2次元マトリックスから「クロスアウト(cross out)」させることが可能である。
例えば、送信イベントt3が送信オブジェクト71から受信オブジェクト73への同期エッジに対応する送信イベントであると仮定する。
受信イベントr3は、同一の同期エッジに関連する対応する受信イベントである。受信イベントr2の後に発生する受信オブジェクト73におけるいずれのイベントも、送信イベントt3の後に発生する必要がある。従って、受信イベントr3〜r6は送信イベントt3の前に発生することはできない。
このオブジェクトを利用して、無効状態に対応する状態マトリックス80の領域81は、クロスアウトされる。同様のオブジェクトを用いて、メッセージ・シーケンス・チャート70の第2同期エッジに関連する領域82をクロスアウトする。
残りのマトリックスは、メッセージ・シーケンス・チャート70を正確に表している。送信イベントt2や受信イベントr1等の状態は、送信オブジェクト71が送信イベントt2を終了させ、受信オブジェクト73が受信イベントr1を終了させた状態を表す。
図28は、状態マトリックスに関する状態図を示す図である。
状態図90に示す1つのステート91は、図27に示した状態マトリックス80の1つの領域に対応している。
ステート91内の値は、状態を示している。
状態図90の各水平方向への遷移は、メッセージの受信に対応している。このため有限ステートマシンによるメッセージの送信として実現される。
同様に、状態図90の各垂直方向への遷移は、メッセージの送信に対応している。このため、有限ステートマシンによるメッセージの受信待機として実現される。
現在、状態図90の水平方向への遷移と垂直方向への遷移の両方が行われうる状態(i,j)であるとき、水平方向への遷移は適切なメッセージを送信することにより行われる。
その後、垂直方向への遷移が予想されるメッセージが受信されたか判断することによって試行される。後者の状態が満たされる場合、垂直方向への遷移が行われてもよく、次の状態は状態(i+1,j+1)となる。
後者の状態が満たされていない場合、水平方向への遷移のみが行われ、次の状態は(i+1,j)となる。
オブジェクトが永久に待機することがないように、メッセージの受信待機中にタイマが利用される。
すなわち、適切なタイムアウト期間後に待機は終了する。垂直または水平のみの遷移しかある状態から行うことができない場合、これらの動作のみが生成される。
遷移方向が生成可能な有限ステートマシンに影響する1つの変数である一方、他の変数はあるステートに関する特定のタイプのイベントである。
例えば、図26に示す送信オブジェクト71と受信オブジェクト73において、オブジェクトラインに関連する各イベントは3つのタイプのうちの1つである。送信オブジェクト71では、これらのタイプはメッセージ送信イベント、タイマ始動イベントおよびタイムアウト信号受信イベントである。
受信オブジェクト73では、これらのタイプは、メッセージ受信イベント、タイマ始動イベントおよびタイムアウト信号受信イベントである。各オブジェクトのこれら3つのタイプのイベントは、有限ステートマシンの各ステートに対して生成されるコードが当該状態の正確な組み合わせに依存するため、有限ステートマシン変換中に考慮される9つの組み合わせを生じさせる。
これらの技術を利用して、有限ステートマシンがメッセージ・シーケンス・チャートに対して生成される。
シナリオに対する有限ステートマシンを生成するため、有限ステートマシンがパスに沿って各メッセージ・シーケンス・チャートに対して生成され、必要に応じて合成される。例えば、1つのメッセージ・シーケンス・チャートの終わりの次の状態は、パスに沿った次のメッセージ・シーケンス・チャートの開始状態となる。
信号および変数宣言の全てを組み合わせることによって、有限ステートマシンを自動的に生成、編集することができる。また、生成、編集された有限ステートマシンを用いてテスト対象装置300の動作をシミュレートすることができる。
次に、ステップS15に示す有限ステートマシンにラベルを付与する処理を具体的に説明する。
図29は、有限ステートマシンにラベルを付与する具体例を示す図である。
まず、前述した方法にて生成した有限ステートマシン90aのステート1つ1つに対し、対応するメッセージ・シーケンス・チャートのデータ・イベント・メッセージをラベルとして付与する。
図29では、メッセージ・シーケンス・チャート「問い合わせ」から有限ステートマシンのステートSt1、St2、St3、St4が生成されている。
ここで、メッセージ・シーケンス・チャート「問い合わせ」には、「・ATM取引開始・成功:基本動作」のラベルと「・ATM取引開始・失敗:例外動作」のラベルが付与されている。
従って、これらステートSt1、St2、St3、St4それぞれにも、「・ATM取引開始・成功:基本動作」のラベルと「・ATM取引開始・失敗:例外動作」のラベルを付与する。
図30は、有限ステートマシンにラベルの付与が終了したときの状態を示す図である。
図30では、メッセージ・シーケンス・チャート「認証成功」からステートSt5、St6が生成されている。
ここで、メッセージ・シーケンス・チャート「認証成功」には、「・ATM取引開始・成功:基本動作」のラベルが付与されている。
従って、これらステートSt5、St6それぞれにも、「・ATM取引開始・成功:基本動作」のラベルを付与する。
また、メッセージ・シーケンス・チャート「認証失敗」からステートSt7、St8が生成されている。
ここで、メッセージ・シーケンス・チャート「認証失敗」には、「・ATM取引開始・失敗:例外動作」のラベルが付与されている。
従って、これらステートSt7、St8それぞれにも、「・ATM取引開始・失敗:例外動作」のラベルを付与する。
次に、ステップS18のメッセージ・シーケンス・チャートの制約から有限ステートマシンの状態を刈る処理を、具体例を用いて説明する。
図31は、状態マトリックスに関する状態図を示す図である。
同期イベントは、実際の動作イベントの部分的順序付けを外部または他の装置により限定するのに利用されているだけであるため、状態図90から削除してもよい。同期イベントを削除することにより、図31に示される簡単化された状態図92が得られる。
図32は、有限ステートマシンのデータ構造例を示す図である。
有限ステートマシンのデータ110は、XML形式で表現されている。
記述110aは、有限ステートマシン90aの識別子に関する記述部分を示している。当該記述110aには、有限ステートマシンであることを識別する有限ステートマシンタグ<fsn name>が付されている。また、タグ内の内容は、それぞれ付与されたラベルの内容を示している。
また、記述111〜118は、それぞれ各ステートSt1〜St8に関する記述部分を示している。
また、記述119は、各ステートSt1〜St8に関する遷移方向を示している。
次に、図19に示すLSI20の設計仕様および図30に示すラベル付与済みの有限ステートマシン90aを用いてシナリオ毎の検証用シナリオを生成する具体例を説明する。
まず、図19に示す設計仕様から機能ブロック51に対応付けられている機能「ATM取引開始」を選択する。
次に、選択した機能「ATM取引開始」からシナリオ「成功」を選択する。
次に、選択したシナリオ「成功」と同じラベルを備える有限ステートマシンを抽出する。
具体的には、図30に示す有限ステートマシン90aを抽出する。
次に、選択したシナリオと同じラベルを持つ有限ステートマシンの部分を抽出する。
図30に示すように、シナリオ「成功」は、「ATM取引開始・成功:基本動作」のラベルを備えているため、このラベルと同じラベルを備えるステートSt1、St2、St3、St4、St5、St6を抽出する。
次に、抽出した有限ステートマシンの部分を、シナリオ「成功」を検証する検証用シナリオとして検証用シナリオ格納部12に格納する。
次に、選択した機能に未処理のシナリオが残っているか否かを判断すると、シナリオ「失敗」が残っている。
従って、選択した機能「ATM取引開始」からシナリオ「失敗」を選択する。
次に、選択したシナリオ「失敗」と同じラベルを備える有限ステートマシンを抽出する。
具体的には、図30に示す有限ステートマシン90aを抽出する。
次に、選択したシナリオと同じラベルを持つ有限ステートマシンの部分を抽出する。
図30に示すように、シナリオ「失敗」は、「ATM取引開始・失敗:例外動作」のラベルを備えているため、このラベルと同じラベルを備えるステートSt1、St2、St3、St4、St7、St8を抽出する。
次に、抽出した部分有限ステートマシンを、シナリオ「失敗」を検証する検証用シナリオとして検証用シナリオ格納部12に格納する。
次に、選択した機能に未処理のシナリオが残っているか否かを判断すると、残っていない。
次に、未処理の機能が残っているか否かを判断すると、残っていない。
従って、処理を終了する。
図33は、検証用シナリオ格納部に格納されている検証用シナリオを示す図である。
図33に示すように、シナリオ「成功」を検証する検証用シナリオSc1およびシナリオ「失敗」を検証する検証用シナリオSc2が格納されている。
次に、検証用シナリオ生成処理におけるステップS24の有限ステートマシンの部分から検証用シナリオを生成する方法を詳しく説明する。
<検証用シナリオの生成>
前述した具体例では、有限ステートマシンの部分から検証用シナリオを容易に作成することができた。
しかしながら、有限ステートマシンの部分のステートがループしている場合等がある。 この場合、検証用シナリオ生成部11は、有限ステートマシンの部分を、いくつかの構成単位に「切断」または分割した、検証用シナリオを生成する。
例えば、有限ステートマシンの部分は、パスにおいて再出現するステートに従って切断されてもよい。代わりに、または加えて、「少なくとも最小数または最大数以下のステートが各検証用シナリオにおいて特定されることを要求する」という制約を有する複数の検証用シナリオに切断されてもよい。
例えば、以下の有限ステートマシンの部分が抽出されたものとする。
St2→St4→St6→St7→St2→St3→St6→St7→St2→St3→St5→St7→St2→St3→St5→St2
有限ステートマシンの部分を分割する1つの論理的方法は、再出現するステートを切断することである。
例えば、ステートSt2は、この長い有限ステートマシンの部分を4つの検証用シナリオに切断するのに利用される。
(1)St2→St4→St6→St7
(2)St2→St3→St6→St7
(3)St2→St3→St5→St7
(4)St2→St3→St5→St2
より長い検証用シナリオを生成するため、検証用シナリオ生成部11は、ステートSt2を用いて切断処理を実行すると共に、各検証用シナリオが少なくとも5つのステートを含むことを要求することができる。
これらの制約を用いて、以下の2つの検証用シナリオが特定される。
(5)St2→St4→St6→St7→St2→St3→St6→St7
(6)St2→St3→St5→St7→St2→St3→St5→St2
次に、シナリオ優先度付与処理の具体例を説明する。
まず、パラメータi=1に設定する。
次に、パターンの中から、優先順位の最も低い項目を選択する。
ここでは、パターンに機能「ATM取引開始」の有するシナリオの基本動作を例外動作よりも優先するパターン(基本動作>例外動作)が設定されているものとする。従って、優先順位の最も低い例外動作をパターンから選択する。
次に、検証用シナリオ格納部12を参照し、例外動作を含むラベルが全てのステートに付与されている検証用シナリオを全て取得する。
図33に示すように、本具体例では、例外動作を含むラベルが全てのステートに付与されている検証用シナリオSc2を取得する。
そして、取得した検証用シナリオSc2の優先度を「(i=)1」に設定する。また、パラメータi=1+1=2とする。
優先順位項目がパターンに残っているか否かを判断すると、まだ残っているので、次に優先順位の低い基本動作を選択する。
次に、検証用シナリオ格納部12を参照し、基本動作を含むラベルが全てのステートに付与されている検証用シナリオを全て取得する。
図33に示すように、本具体例では、基本動作を含むラベルが全てのステートに付与されている検証用シナリオSc1を取得する。
そして、取得した検証用シナリオSc1の優先度を「(i=)2」に設定する。また、パラメータi=2+1=3とする。
優先順位項目が残っているか否かを判断すると、もう残っていないので、処理を終了する。
図34および図35は、優先度が付与された検証用シナリオのデータ構造を示す図である。
図34は、検証用シナリオSc1のデータ構造を示している。
3行目は、<fsm name=“ATM取引開始FSM” type=“scenario” priority=“2”>と記述されている。この「type=“scenario”」が検証用シナリオであることを示している。また、「priority=“2”」が、検証用シナリオSc1の優先度を示している。
図35は、検証用シナリオSc2のデータ構造を示している。
3行目は、<fsm name=“ATM取引開始有限FSM” type=“scenario” priority=“1”>と記述されている。この「type=“scenario”」が検証用シナリオであることを示している。また、「priority=“1”」が、検証用シナリオSc2の優先度を示している。
次に、検証用シナリオSc1、Sc2と、図11に示すレジスタブロック25aおよびポートブロック26aを用いてパラメータ優先度付与処理の具体例を説明する。
図36および図37は、パラメータ優先度付与処理の具体例を示す図である。
具体例では、パターンの項目として、機能「ATM取引開始」が有するシナリオ「成功」およびシナリオ「失敗」が入力されているものとする。
また、具体例では、シナリオブロック51a1に対応付けられているシナリオ「成功」の事前条件としてパラメータ値「V=14」が入力されており、事後条件としてパラメータ値「INT1=0」が入力されている。
また、検証用シナリオ生成処理によって、シナリオ「成功」を検証する検証用シナリオSc1が生成されている。従って、図36では、シナリオブロック51a1が有するMSCブロックとして、検証用シナリオSc1を示す検証用シナリオ:「問い合わせ」「認証成功」に対応するMSCブロック513aを図示している。
また、シナリオブロック51b1に対応付けられているシナリオ「失敗」の事前条件としてパラメータ値「V=137」が入力されており、事後条件としてパラメータ値「INT1=2」が入力されている。
また、検証用シナリオ生成処理によって、シナリオ「失敗」を検証する検証用シナリオSc2が生成されている。従って、図36では、シナリオブロック51b1が有するMSCブロックとして、検証用シナリオSc2を示す検証用シナリオ:「問い合わせ」「認証失敗」に対応するMSCブロック513bを図示している。
また、シナリオブロック51b2に対応付けられているシナリオ「失敗」の事前条件としてパラメータ値「V=0」が入力されており、事後条件としてパラメータ値「INT1=2」が入力されている。
これは、同じシナリオ「失敗」について、異なる事前条件、事後条件が入力されていることを示している。
また、検証用シナリオ生成処理によって、シナリオ「失敗」を検証する検証用シナリオSc2が生成されている。従って、図36では、シナリオブロック51b2が有するMSCブロックとして、検証用シナリオSc2を示す検証用シナリオ:「問い合わせ」「認証失敗」に対応するMSCブロック513bを図示している。
まず、制約条件として与えられているパラメータ値のパラメータ名を全て抽出する。本具体例では、レジスタ「V」およびポート「INT1」を抽出する。
次に、レジスタ「V」およびポート「INT1」に対応するパラメータ値と優先度の組み合わせを生成する。
本具体例では、レジスタ「V」に対応するパラメータ値は、パラメータ値「V=14」、「V=137」、「V=0」である。また、パラメータ名「ポート」に対応するパラメータ値は、パラメータ値「INT1=0」、「INT1=2」、「INT1=2」である。
次に、制約条件に違反する検証用シナリオを除外する処理を行う。
ここで、前述したように、シナリオ「成功」には、事前条件として「0<V<15」、事後条件として「INT1=0」が設定されている。「V=14」と「0<V<15」の論理積を取ると、「V=14」となる。また、「INT1=0」と「INT1=0」の論理積を取ると、「INT1=0」となる。従って、制約条件に違反していないため、当該パラメータと検証用シナリオSc1の組み合わせは除外しない。
また、シナリオ「失敗」には、事前条件として「V=0、V≧15」、事後条件として「INT1=1or2」が設定されている。「V=137」と「V=0、V≧15」の論理積を取ると、「V=137」となる。また、「INT1=2」と「INT1=1or2」の論理積を取ると、「INT1=2」となる。従って、制約条件に違反していないため、当該パラメータと検証用シナリオSc2の組み合わせは除外しない。
さらに、「V=0」と「V=0、V≧15」の論理積を取ると、「V=0」となる。また、「INT1=2」と「INT1=1or2」の論理積を取ると、「INT1=2」となる。従って、制約条件に違反していないため、当該パラメータと検証用シナリオSc2の組み合わせは除外しない。
ここで、レジスタブロック25aおよびポートブロック26aを参照すると、レジスタ「V」に対応するパラメータ値「V=14」は、典型値に一致する。従って、優先度は「1」となる。また、ポート「INT1」に対応するパラメータ値「INT1=0」は、最小値に一致する。従って、優先度は「10」となる。レジスタ「V」に対応するパラメータ値「V=137」は、最大値に一致する。従って、優先度は「10」となる。また、ポート「INT1」に対応するパラメータ値「INT1=2」は、過去の設計事例でバグが発生した値に一致するものとする。この場合、優先度は「7」となる。レジスタ「V」に対応するパラメータ値「V=0」は、最小値に一致する。従って、優先度は「10」となる。また、ポート「INT1」に対応するパラメータ値「INT1=2」は、過去の設計事例でバグが発生した値に一致するものとする。この場合、優先度は「7」となる。
図37は、ここまでの例を示している。
パラメータ値の右側に求められた優先度を図示している。また、図37では、検証用シナリオの右側に、検証用シナリオの優先度も図示している。
次に、優先順位決定処理を行う。
まず、事前条件としてパラメータ値「V=14」が入力されており、事後条件としてパラメータ値「INT1=0」が入力されているシナリオ「成功」について説明する。
ユーザの入力により与えられた検証用シナリオSc1の優先度は「2」である。また、ユーザの入力により与えられた事前条件のパラメータ値「V=14」の優先度は「1」である。事後条件のパラメータ値「INT1=0」の優先度は「10」である。従って、これらを全て加算すると、優先度「13」が得られる。
次に、事前条件としてパラメータ値「V=137」が入力されており、事後条件としてパラメータ値「INT1=2」が入力されているシナリオ「成功」について説明する。
ユーザの入力により与えられた検証用シナリオSc2の優先度は「1」である。また、ユーザの入力により与えられた事前条件のパラメータ値「V=137」の優先度は「10」である。事後条件のパラメータ値「INT1=2」の優先度は「7」である。従って、これらを全て加算すると、優先度「18」が得られる。
次に、シナリオ「失敗」について説明する。
ユーザの入力により与えられた検証用シナリオSc2の優先度は「1」である。また、ユーザの入力により与えられた事前条件のパラメータ値「V=0」の優先度は「10」である。事後条件のパラメータ値「INT1=2」の優先度は「7」である。従って、これらを全て加算すると、優先度「18」が得られる。
次に、出力されるシナリオ名のイメージを説明する。
図38は、優先順位リストの具体例を示す図である。
優先順位リスト19aには、優先順位、シナリオ、検証用シナリオ、パラメータ名、パラメータ値、優先度の欄が設けられている。横方向に並べられた情報同士が互いに関連付けられている。
優先順位の欄には、優先順位を識別する値が設定されている「1」が最も優先順位が高く、「2」、「3」と数が大きくなるに連れ、優先順位は低くなる。
シナリオの欄には、パターンの項目としてユーザによって入力されたシナリオ名が設定されている。
検証用シナリオの欄には、検証対象の検証用シナリオを識別する情報が設定されている。
パラメータ名の欄には、パターンの項目としてユーザによって入力された制約条件としてのパラメータ値に対応するパラメータ名が設定されている。
パラメータ値の欄には、パターンの項目としてユーザによって入力された制約条件としてのパラメータ値が設定されている。
優先度の欄には、検証順位決定部18により決定された優先度が記載されている。
ユーザは、この優先順位リスト19aを参照することにより、入力されたシナリオおよびパラメータ値の組み合わせの優先順位を把握することができる。
以上述べたように、設計検証装置10によれば、LSI20の設計または検証状況に応じたシナリオおよびパラメータ値を入力することで、当該シナリオおよびパラメータ値を効率的に検証できる優先順位リスト19aを提供することができる。
ユーザは、優先順位リスト19aの優先順位の順番に検証用シナリオを検証することにより、ユーザが入力したシナリオに対し、検証漏れや重複検証を抑制することができる。具体的には、シナリオに対し、制約条件を与えているので、重複するシナリオは制約条件を評価した時点で取り除かれる。一方、制約条件を満たす組み合わせについては全て出力されるので漏れがない。
なお、入力されるパターンの項目としては特に限定されないが、例えば以下に示す例が挙げられる。
(1)検証を開始して間もない場合は、シナリオの基本パス、代替パス、例外パスの順に検証用シナリオに優先順位を付けるのが好ましい。従って、パターンの項目として「基本動作>代替動作>例外動作」を入力するのが好ましい。
(2)不具合修正後のリグレッションテストの場合は、不具合を発見したシナリオを最優先に検証し、その次に修正した箇所を直接検証するシナリオを検証し、その他のシナリオを検証するのが好ましい。従って、パターンの項目として「不具合を発見したシナリオ名>修正した箇所を直接検証するシナリオ名>その他のシナリオ名」を入力するのが好ましい。
(3)設計最終段階では、例外ケースを集中的に確認したいことが多い。この場合には、シナリオの例外パスを優先的に検証し、その次に代替パス、基本パスを検証するのが好ましい。従って、パターンの項目として「例外動作>代替動作>基本動作」を入力するのが好ましい。
(4)設計の途中で機能に仕様変更があったとき、その機能が関わる箇所のシナリオを優先的に検証するのが好ましい。従って、パターンの項目として「その機能が関わる箇所のシナリオ」を入力するのが好ましい。
また、検証用シナリオを生成する際、以下の処理を行った。
検証用シナリオ生成部11が、LSI20の設計仕様が備える複数のシナリオが備えるメッセージ・シーケンス・チャートそれぞれにラベルを関連付けた検証用シナリオを生成するようにした。これにより、1つのシナリオが備えるメッセージ・シーケンス・チャートを特定することができる。
そして、メッセージ・シーケンス・チャートから有限ステートマシンの生成を行った。ただし、有限ステートマシンを生成する際、各ステートに対応するメッセージ・シーケンス・チャートのラベルを付与するようにした。これにより、1つのシナリオが備えるステートを特定することができる。
そして、LSI20の設計仕様の各シナリオに対応する有限ステートマシンを抽出し、抽出した各有限ステートマシンの検証用シナリオを生成するようにした。
これにより、入力されるパターンの入力に対応する(設計・検証の段階に応じた)検証用シナリオを生成することができる。
そして、シナリオ優先度付与部13が、ユーザが指定した優先順位のパターンに応じて、検証用シナリオに優先度を付与するようにした。
また、シナリオ優先度付与部13は、パターンに応じて、パターンにより示される検証対象部位に関連する全ての検証用シナリオに同じ優先度を付与するようにした。
これにより、設計検証に用いる全ての検証用シナリオに同じ優先度が付与される。従って、検証漏れをなくすことができるため、処理を簡易なものとすることができる。
また、シナリオ優先度付与部13は、処理優先度情報を有するパターンに応じて、検証用シナリオに処理優先度情報に応じた優先度を付与するようにした。これにより、より細かい優先度を付与する処理を実行できる。
なお、本実施の形態では、検証用シナリオと、パラメータそれぞれの優先度の論理式によって検証順位を決定するにしたが、例えば、パラメータの優先度のみに基づいて検証順位を決定するようにしてもよい。
なお、設計検証装置10が行った処理が、複数の装置によって分散処理されるようにしてもよい。
例えば、1つの装置が、検証用シナリオ生成処理を行って検証用シナリオを生成しておき、他の装置が、その検証用シナリオを用いてシナリオ優先度付与処理以降の処理を行うようにしてもよい。
また、他の例として、1つの装置が、検証用シナリオ生成処理およびシナリオ優先度付与処理を行って優先度が付与された検証用シナリオを生成しておき、他の装置が、その優先度が付与された検証用シナリオを用いてパラメータ優先度付与処理以降の処理を行うようにしてもよい。
以上、本発明の設計検証プログラム、設計検証方法および設計検証装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、設計検証装置10が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
設計検証プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上の第1〜第2の実施の形態に関し、さらに以下の付記を開示する。
(付記1) 設計対象の設計仕様が備える処理手順の検証要求に応じて、前記処理手順を検証する検証用情報の少なくとも1つを選択し、選択した前記検証用情報が有する前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの優先度を決定する優先度決定部と、
前記優先度決定部により決定された優先度に基づいて選択された前記検証用情報の検証順位を決定する検証順位決定部と、
前記優先度決定部により選択された前記検証用情報を識別する情報を、前記検証順位を明示して出力する出力部と、
を有することを特徴とする設計検証装置。
(付記2) 前記優先順位決定部は、前記パラメータと、前記処理手順が備える処理単位の実行を制約する条件との論理式を求め、その結果に応じて前記パラメータの優先度を決定することを特徴とする付記1記載の設計検証装置。
(付記3) 前記パラメータは、前記設計仕様が備えるレジスタまたはポートへの入力値であり、前記優先度決定部は、前記パラメータが前記レジスタまたはポートに応じて予め設定された値に一致する場合、それ以外の値である場合に比べ前記パラメータの優先度を高くすることを特徴とする付記1記載の設計検証装置。
(付記4) 前記処理手順の優先度に応じて前記検証用情報に優先度を付与する優先度付与部をさらに有し、
前記検証順位決定部は、前記優先度付与部によって付与された前記優先度と、前記優先度決定部により決定された前記優先度とに応じて前記検証順位を決定することを特徴とする付記1記載の設計検証装置。
(付記5) 前記検証用情報には、前記処理手順が備える処理単位それぞれに前記設計仕様の検証対象部位を識別する識別情報が関連付けられており、
前記優先度付与部は、前記識別情報に応じて、前記識別情報により示される前記検証対象部位に関連する全ての前記検証用情報に同じ優先度を付与することを特徴とする付記4記載の設計検証装置。
(付記6) 前記優先度付与部は、複数の前記識別情報および前記識別情報により示される前記検証対象部位の処理優先度情報に応じて、前記検証用情報に前記処理優先度情報に応じた前記優先度を付与することを特徴とする付記5記載の設計検証装置。
(付記7) 前記優先度付与部は、前記識別情報の前記検証対象部位を優先的に処理する前記優先度を付与することを特徴とする付記5記載の設計検証装置。
(付記8) 前記検証用情報を生成する生成部をさらに有することを特徴とする付記5記載の設計検証装置。
(付記9) 前記処理単位は、オブジェクト間で送受信される信号の関係を示すシーケンスを備えており、前記生成部は、前記シーケンスそれぞれに、前記識別情報を関連付けることを特徴とする付記8記載の設計検証装置。
(付記10) 前記生成部は、前記シーケンスに対応したステートマシンを生成し、生成した前記ステートマシンのステートそれぞれに当該ステートマシンの元となる前記シーケンスが備える前記識別情報を付与することを特徴とする付記9記載の設計検証装置。
(付記11) 前記識別情報は、前記検証対象部位を示す機能、前記処理手順、前記シーケンスのうちの少なくとも1つの情報を有しており、
前記生成部は、同じ前記識別情報を備える前記ステートマシンを抽出し、抽出した前記ステートマシンの部分を前記検証用情報とすることを特徴とする付記10記載の設計検証装置。
(付記12) 前記シーケンスの制約に基づいて、前記シーケンスそれぞれの処理に対応したステートの数を減らすことを特徴とする付記10記載の設計検証装置。
(付記13) 設計対象の設計仕様が備える処理手順の検証要求に応じて、前記処理手順を検証する検証用情報の少なくとも1つを選択し、選択した前記検証用情報が有する前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの優先度を決定し、
決定された前記優先度に基づいて選択された前記検証用情報の検証順位を決定し、
選択された前記検証用情報を識別する情報を、前記検証順位を明示して出力する、
処理をプロセッサを用いて行うことを特徴とする設計検証方法。
(付記14) コンピュータに、
設計対象の設計仕様が備える処理手順の検証要求に応じて、前記処理手順を検証する検証用情報の少なくとも1つを選択し、選択した前記検証用情報が有する前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの第1の優先度を決定し、
決定した前記第1の優先度に基づいて、選択した前記検証用情報の検証順位を決定し、
選択した前記検証用情報を識別する情報を、前記検証順位を明示して出力する、
処理を該コンピュータが備えるプロセッサを用いて実行させることを特徴とする設計検証プログラム。
1、10 設計検証装置
1a 生成部
1b 優先度付与部
1c 検証用情報格納部
1d パラメータ条件格納部
1e 優先度決定部
1f 検証順位決定部
1g、19a 出力部
2 設計仕様
2a、2b 機能
3 構造体
3a、3b 検証用情報
4a、4b 情報
5 出力結果
11 検証用シナリオ生成部
12 検証用シナリオ格納部
13 シナリオ優先度付与部
14 優先度付与済みシナリオ格納部
15 パラメータ優先度付与部
16 優先度ルール格納部
17 パラメータ格納部
18 検証順位決定部
19a 優先順位リスト
20 LSI
20a、20b 処理手順
21、51 機能ブロック
21a、21b、51a、51b、51a1、51b1、51b2 シナリオブロック
27、60、110 データ
27a〜27d、61〜63、61a〜63a、110a、111〜119 記述
30 有向グラフ
31 初期状態ブロック
32〜34、40、40a〜40e、70 メッセージ・シーケンス・チャート(MSC)
34 hメッセージ・シーケンス・チャート(hMSC)
41、42、43 ハードウェア(HW)
41a ユーザインタフェース
42a ATM
43a データベース
44、45、46 オブジェクトライン
44a ユーザインタフェースライン
45a ATMライン
46a データベースライン
47、48 ボックス
71 送信オブジェクト
72 長距離送信オブジェクト
73 受信オブジェクト
74 長距離受信オブジェクト
80 状態マトリックス
81、82 領域
90、92 状態図
90a 有限ステートマシン
91、St1〜St8 ステート
100 システム
200 信号インタフェース
211a、212a、511a、511b、512a、512b、513a、513b MSCブロック
300 テスト対象装置
400 ネットワーク
511a1、512a1、512b1 ラベル
Sc1、Sc2 検証用シナリオ
e1、e2、e3 イベント
m、m1〜m9 データ・イベント・メッセージ
r1〜r6、rj 受信イベント
t1〜t5、ti 送信イベント

Claims (4)

  1. コンピュータに、
    設計対象の設計仕様が備える処理手順を有し、かつ、前記処理手順を検証する検証用情報に、前記処理手順の優先度に応じて第1の優先度を付与し、
    前記検証用情報の少なくとも1つを選択し、選択した前記検証用情報が有する前記処理手順に含まれており、かつ、前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの第の優先度を決定し、
    前記第1の優先度と前記第の優先度に基づいて、選択した前記検証用情報の検証順位を決定し、
    選択した前記検証用情報を識別する情報を、前記検証順位を明示して出力する、
    処理を実行させる設計検証プログラム。
  2. 前記第の優先を決定する処理では、前記パラメータと、前記処理手順が備える処理単位の実行を制約する条件との論理式を求め、その結果に応じて前記パラメータの前記第の優先度を決定する請求項1記載の設計検証プログラム。
  3. コンピュータが、
    設計対象の設計仕様が備える処理手順を有し、かつ、前記処理手順を検証する検証用情報に、前記処理手順の優先度に応じて第1の優先度を付与し、
    前記検証用情報の少なくとも1つを選択し、選択した前記検証用情報が有する前記処理手順に含まれており、かつ、前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの第2の優先度を決定し、
    前記第1の優先度と前記第2の優先度とに基づいて、選択した前記検証用情報の検証順位を決定し、
    選択した前記検証用情報を識別する情報を、前記検証順位を明示して出力する、
    設計検証方法。
  4. 設計対象の設計仕様が備える処理手順を有し、かつ、前記処理手順を検証する検証用情報に、前記処理手順の優先度に応じて第1の優先度を付与する優先度付与部と
    前記検証用情報の少なくとも1つを選択し、選択した前記検証用情報が有する前記処理手順に含まれており、かつ、前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの第2の優先度を決定する優先度決定部と、
    前記第1の優先度と前記第2の優先度とに基づいて、選択した前記検証用情報の検証順位を決定する検証順位決定部と、
    前記優先度決定部により選択された前記検証用情報を識別する情報を、前記検証順位を明示して出力する出力部と、
    を有する設計検証装置。
JP2010119167A 2009-09-04 2010-05-25 設計検証プログラム、設計検証方法および設計検証装置 Expired - Fee Related JP5540887B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US27227509P 2009-09-04 2009-09-04
US61/272,275 2009-09-04
US12/702,576 2010-02-09
US12/702,576 US8365112B2 (en) 2009-09-04 2010-02-09 Verification apparatus and design verification program

Publications (2)

Publication Number Publication Date
JP2011060267A JP2011060267A (ja) 2011-03-24
JP5540887B2 true JP5540887B2 (ja) 2014-07-02

Family

ID=43648638

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010119167A Expired - Fee Related JP5540887B2 (ja) 2009-09-04 2010-05-25 設計検証プログラム、設計検証方法および設計検証装置

Country Status (2)

Country Link
US (1) US8365112B2 (ja)
JP (1) JP5540887B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI20096394A0 (fi) * 2009-12-23 2009-12-23 Valtion Teknillinen Tunkeutumisen havaitseminen viestintäverkoissa
US8543983B2 (en) * 2010-06-15 2013-09-24 Fujitsu Limited Creating hierarchical message sequence charts for visualizing user-interactive applications
US8943451B2 (en) * 2010-06-23 2015-01-27 Mentor Graphics Corporation Hierarchical finite state machine generation for power state behavior in an electronic design
TW201211808A (en) * 2010-09-10 2012-03-16 Hon Hai Prec Ind Co Ltd System and method for checking electrical rules
US8972785B2 (en) * 2012-07-13 2015-03-03 Freescale Semiconductor, Inc. Classifying processor testcases
WO2014073553A1 (ja) * 2012-11-07 2014-05-15 Necフィールディング株式会社 スケジューリング装置、スケジューリングシステム、スケジューリング方法、及びプログラム
JP6201382B2 (ja) * 2013-04-05 2017-09-27 株式会社ソシオネクスト 論理検証装置及び論理検証方法
US9721058B2 (en) * 2015-04-13 2017-08-01 Synopsys, Inc. System and method for reactive initialization based formal verification of electronic logic design
US10592212B2 (en) 2016-10-21 2020-03-17 Samsung Electronics Co., Ltd. System and method for software development based on procedures

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1040316A (ja) * 1996-07-18 1998-02-13 Toshiba Corp 図式のテスト支援装置及びテスト支援方法
JP2001113993A (ja) 1999-10-18 2001-04-24 Tachi S Co Ltd シート・トラック
JP2001222429A (ja) 2000-02-09 2001-08-17 Fujitsu Ltd テスト項目生成支援装置
JP4355525B2 (ja) 2002-10-09 2009-11-04 富士通マイクロエレクトロニクス株式会社 検証支援方法、検証支援プログラムおよび検証支援装置
US7275231B2 (en) 2004-09-15 2007-09-25 Fujitsu Limited High level validation of designs and products
JP4445480B2 (ja) 2006-03-23 2010-04-07 富士通株式会社 シナリオ生成方法、シナリオ生成プログラム、シナリオ生成装置
US7735051B2 (en) * 2006-08-29 2010-06-08 International Business Machines Corporation Method for replicating and synchronizing a plurality of physical instances with a logical master

Also Published As

Publication number Publication date
US8365112B2 (en) 2013-01-29
JP2011060267A (ja) 2011-03-24
US20110061035A1 (en) 2011-03-10

Similar Documents

Publication Publication Date Title
JP5540887B2 (ja) 設計検証プログラム、設計検証方法および設計検証装置
JP4464665B2 (ja) 高速チップ管理システム
JP4619245B2 (ja) 設計検証方法、装置、論理及びシステム
US6637013B1 (en) Method and system for automating design rule check error correction in a CAD environment
US7454399B2 (en) Application integration system and method using intelligent agents for integrating information access over extended networks
US20030023413A1 (en) Generalized software modeling tool
US7644370B2 (en) Method of componentisation of a graphically defined formula
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
KR100672894B1 (ko) 제품 계열 아키텍처의 표현 및 검증 장치와 그 방법
JP2011165166A (ja) 設計検証装置および設計検証プログラム
US7793271B2 (en) Bi-directional product development process simulation
US8527254B2 (en) Simulator engine development system and simulator engine development method
JP3888621B2 (ja) 文書処理システム、文書処理方法及びプログラム
US6999910B2 (en) Method and apparatus for implementing a metamethodology
US20040167650A1 (en) Partial reprojection method and device in three-dimensional CAD system and computer program
JP2011044131A (ja) 設計検証プログラム、設計検証方法および設計検証装置
JP4140917B2 (ja) 検証作業支援システム及びその方法
US7949509B2 (en) Method and tool for generating simulation case for IC device
US6516306B1 (en) Model checking of message flow diagrams
JP5229223B2 (ja) ワークフロー定義変更プログラムおよびワークフロー定義変更方法
JP2002203086A (ja) ワークフロー管理装置、ワークフロー管理方法およびワークフロー管理プログラムを記録した記録媒体
JP2005222371A (ja) 論理回路の機能検証システムおよび方法
JP5248762B2 (ja) 設計データ依存関係管理装置、設計データ依存関係管理方法及びプログラム
CN103176776A (zh) 创建元模型的系统和/或方法
KR101205377B1 (ko) 일시 접근 권한 부여 시스템 및 이를 이용한 일시 접근 권한 부여 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131022

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140313

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140421

R150 Certificate of patent or registration of utility model

Ref document number: 5540887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees