説明

検証支援プログラム、検証支援装置、および検証支援方法

【課題】シミュレーション時間の短縮化を効率的におこなうこと。
【解決手段】(A)で示したように、テストシナリオt1,t2では、S0→S1→S3を通る遷移{a,b}が重複している。したがって、本実施の形態では、テストシナリオt1を、“record(S3)”を埋め込んだテストシナリオT1に変換する。そして、テストシナリオt2を、“restore(S3)”を埋め込んだテストシナリオT2に変換する。これにより、テストシナリオt2の短縮化を図る。なお、“record(S3)”は状態S3の記録指示を示しており、“restore(S3)”は状態S3の復元指示を示している。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、回路の検証を支援する検証支援プログラム、検証支援装置、および検証支援方法に関する。
【背景技術】
【0002】
従来から回路シミュレーションのシミュレーション時間を短縮化する技術や、状態遷移表に基づいてテストシナリオを生成する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平9−293093号公報
【特許文献2】特開2001−331544号公報
【特許文献3】特開2006−112852号公報
【特許文献4】特開平5−6272号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述した従来技術では、対象回路の有限状態機械モデルにおいて、どの状態を保存したり復元したりすればよいかが特定できないため、設計者が人手により該当箇所を指定しなければならず、設計者の負担が増大するという問題があった。また、そのような指定は設計者の能力にも依存するため、設計者ごとにばらつきが生じてしまい、シミュレーション時間が適切に短縮できていない場合もあるという問題があった。
【0005】
また、通常は、同じ対象回路であってもテストシナリオと有限状態機械モデルは設計者によりそれぞれ作成されるため、シミュレーションをおこなう前に時間がかかったり、設計者の負担が増大するという問題があった。
【0006】
また、作成されたテストシナリオと有限状態機械モデルとに矛盾が生じた場合、シミュレーションをやり直さなければならず、結果的にシミュレーション時間が増大してしまうという問題があった。さらに、有限状態機械モデルに実質的に同一の遷移パスが異なる遷移パスとして存在していると別々にシミュレーションをしなければならず、結果的にシミュレーション時間が増大してしまうという問題があった。
【0007】
本発明は、上述した従来技術による問題点を解消するため、シミュレーション時間の短縮化を効率的におこなうことができる検証支援プログラム、検証支援装置、および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するため、本検証支援プログラム、検証支援装置、および検証支援方法は、対象回路に関するテストシナリオ群の中から一のテストシナリオを選択し、選択された一のテストシナリオを構成する一連の要素の中から選ばれた一の選択要素による遷移先状態を、前記対象回路に関する有限状態機械モデルの中から検出し、検出された遷移先状態への入力遷移数と前記遷移先状態からの出力遷移数を、前記有限状態機械モデルの中から特定し、特定された前記出力遷移数が前記入力遷移数よりも多い場合、前記遷移先状態を登録/復元対象に決定し、決定された登録/復元対象をデータベースに登録させる登録指示情報を、前記一のテストシナリオ内の前記一の選択要素の次の要素として埋め込むことを要件とする。
【発明の効果】
【0009】
本検証支援プログラム、検証支援装置、および検証支援方法によれば、シミュレーション時間の短縮化を効率的におこなうことができるという効果を奏する。
【図面の簡単な説明】
【0010】
【図1】テストシナリオの短縮化の一例を示す説明図である。
【図2】図1に示した短縮化後のテストシナリオでのシミュレーション時間の比較例を示す説明図である。
【図3】検証支援装置のハードウェア構成を示すブロック図である。
【図4】検証支援装置の機能的構成の一例を示すブロック図である。
【図5】テストシナリオ短縮化処理部の機能的構成を示すブロック図である。
【図6】有限状態機械モデルにおけるテストシナリオ群の埋込前後の関係を示す説明図である。
【図7】テストシナリオ短縮化処理部によるテストシナリオ短縮化処理手順を示すフローチャートである。
【図8】FSM検証処理部の機能的構成を示すブロック図である。
【図9】FSM検証処理部によるFSM検証処理手順を示すフローチャートである。
【図10】登録/復元処理部の機能的構成を示すブロック図である。
【図11】データベースの記憶内容の一例を示す説明図である。
【図12】登録/復元処理部による登録/復元処理手順を示すフローチャート(その1)である。
【図13】登録/復元処理部による登録/復元処理手順を示すフローチャート(その2)である。
【図14】有限状態機械モデルの修正例を示す説明図である。
【図15】検証支援装置の機能的構成の一例を示すブロック図である。
【図16】FSM生成処理部の機能的構成を示すブロック図である。
【図17】FSM生成処理部によるFSM生成処理手順を示すフローチャートである。
【図18】FSM修正処理部および登録/復元処理部の機能的構成を示すブロック図である。
【図19】FSM修正処理部によるFSM修正処理手順を示すフローチャートである。
【図20】登録/復元処理部による登録/復元処理手順を示すフローチャート(その3)である。
【発明を実施するための形態】
【0011】
以下に添付図面を参照して、この発明にかかる検証支援プログラム、検証支援装置、および検証支援方法の好適な実施の形態を詳細に説明する。
【0012】
・実施の形態1
(テストシナリオの短縮化)
まず、本実施の形態1におけるテストシナリオの短縮化について、図1〜図3を用いて説明する。
【0013】
図1は、テストシナリオの短縮化の一例を示す説明図である。図1において、(A)は、対象回路に関する有限状態機械モデル(FSM)100と短縮化前のテストシナリオt1,t2を示している。また、(B)は、有限状態機械モデル100と短縮化後のテストシナリオT1,T2を示している。有限状態機械モデル100において、S#(#は番号)は状態を示しており、矢印は遷移を示している。
【0014】
また、遷移を示す矢印の始端側の状態を「遷移元状態」と称し、矢印(遷移)の終端側の状態を「遷移先状態」と称す。なお、S0は初期状態を示す。本実施の形態で用いられる有限状態機械モデル100は、あくまで一例であり、その内容は対象回路ごとに決められる。
【0015】
また、回路のシミュレーションを例に挙げると、遷移は、対象回路を構成する組み合わせ回路に与えられる入力パターンであり、状態は、対象回路を構成する組み合わせ回路の出力先となるレジスタに保持される値である。したがって、遷移先状態とは、遷移としてある入力パターンが組み合わせ回路に与えられると、組み合わせ回路から出力されレジスタに保持された出力値である。なお、遷移元状態は、遷移される前のレジスタの値である。なお、シミュレーションを実行していない段階なので、状態を示すレジスタの値は、実際の0/1といった値ではなく変数であらわされる。
【0016】
テストシナリオt1は、有限状態機械モデル100において、S0→S1→S3→S6を通る遷移パスであり、t1={a,b,c}である。また、テストシナリオt2は、FSMにおいて、S0→S1→S3→S8を通る遷移パスであり、t2={a,b,d}である。ここで、要素aは(S0→S1)を示す遷移である。要素bは(S1→S3)を示す遷移である。要素cは(S3→S6)を示す遷移である。要素dは(S3→S8)を示す遷移である。
【0017】
(A)で示したように、テストシナリオt1,t2では、S0→S1→S3を通る遷移{a,b}が重複している(Redundancy)。したがって、本実施の形態では、テストシナリオt1を、“record(S3)”を埋め込んだテストシナリオT1に変換する。また、テストシナリオt2を、“restore(S3)”を埋め込んだテストシナリオT2に変換する。これにより、状態S0から状態S3までのシミュレーションはテストシナリオT1のみで実行されるだけとなり、テストシナリオT2など他のテストシナリオでは、状態S0から状態S3までのシミュレーションを実行する必要なない。そのかわりに、状態S3を復元する。これにより、テストシナリオt2の短縮化を図る。なお、“record(S3)”は状態S3の記録指示を示しており、“restore(S3)”は状態S3の復元指示を示している。
【0018】
図2は、図1に示した短縮化後のテストシナリオでのシミュレーション時間の比較例を示す説明図である。図2において、SimTime()は、()内で示されるテストシナリオや遷移パスでシミュレーションをしたときのシミュレーション時間である。たとえば、SimTime(t1)は、テストシナリオt1で対象回路をシミュレーションしたときのシミュレーション時間である。
【0019】
(A)は、図1(A)で示した短縮化前でのシミュレーション時間を示している。テストシナリオt1のシミュレーション時間SimTime(t1)とテストシナリオt2のシミュレーション時間SimTime(t2)を合計したシミュレーション時間では、状態S0から状態S3までの遷移パスのシミュレーション時間SimTime(S0→S3)が重複しているため、2倍の時間がかかっている。
【0020】
(B)は、図1(B)で示した短縮化後のシミュレーション時間を示している。(B)では、テストシナリオがt2からT2に短縮化されたため、SimTime(S0→S3)が重複しておらず、1回分短縮化されている。そのかわりに、(B)では、テストシナリオT1での状態S3の記録時間RecTime(S3)と、テストシナリオT2での状態S3の復元時間ResTime(S3)とが追加される。したがって、この場合、以下の式(1)が成立する場合に、シミュレーション時間が短縮化される。
【0021】
SimTime(S0→S3)>RecTime(S3)+ResTime(S3)
・・・・・・(1)
【0022】
(検証支援装置のハードウェア構成)
図3は、検証支援装置のハードウェア構成を示すブロック図である。図3において、検証支援装置は、CPU(Central Processing Unit)301と、ROM(Read Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、光ディスクドライブ306と、光ディスク307と、ディスプレイ308と、I/F(Interface)309と、キーボード310と、マウス311と、スキャナ312と、プリンタ313と、を備えている。また、各構成部はバス300によってそれぞれ接続されている。
【0023】
ここで、CPU301は、検証支援装置の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御にしたがって磁気ディスク305に対するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
【0024】
光ディスクドライブ306は、CPU301の制御にしたがって光ディスク307に対するデータのリード/ライトを制御する。光ディスク307は、光ディスクドライブ306の制御で書き込まれたデータを記憶したり、光ディスク307に記憶されたデータをコンピュータに読み取らせたりする。
【0025】
ディスプレイ308は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ308は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【0026】
インターフェース(以下、「I/F」と略する。)309は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク314に接続され、このネットワーク314を介して他の装置に接続される。そして、I/F309は、ネットワーク314と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F309には、たとえばモデムやLANアダプタなどを採用することができる。
【0027】
キーボード310は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス311は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【0028】
スキャナ312は、画像を光学的に読み取り、検証支援装置内に画像データを取り込む。なお、スキャナ312は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ313は、画像データや文書データを印刷する。プリンタ313には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【0029】
<検証支援装置の機能的構成>
図4は、検証支援装置の機能的構成の一例を示すブロック図である。検証支援装置400は、テストシナリオ短縮化処理部401と、シミュレーション実行部402と、FSM検証処理部403と、登録/復元処理部404とを備える。テストシナリオ短縮化処理部401〜登録/復元処理部404は、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。
【0030】
より具体的には、テストシナリオ短縮化処理部401〜登録/復元処理部404により、ROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置から読み出されたデータは、RAM303や磁気ディスク305、CPU301内のキャッシュやレジスタに書き込まれる。また、テストシナリオ短縮化処理部401〜登録/復元処理部404により、CPU301が実行した中間的なまたは最終的な実行結果は、ROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置やCPU301内のキャッシュやレジスタに書き込まれる。
【0031】
テストシナリオ短縮化処理部401は、テストシナリオ群tsを構成するテストシナリオ間で重複する遷移パスを消去して短縮化テストシナリオ群Tsとして出力する。テストシナリオ短縮化処理部401の詳細については、図5〜図7を用いて後述する。
【0032】
シミュレーション実行部402は、対象回路のシミュレーションを実行する。具体的には、たとえば、対象回路のハードウェア記述情報(DUT)430を読み込み、対象回路に短縮化テストシナリオ群Tsを構成するテストシナリオを順次与えることで、テストシナリオごとに対象回路のシミュレーションを実行する。
【0033】
FSM検証処理部403は、シミュレーション実行部402によるシミュレーションの実行中に有限状態機械モデル100を検証する。FSM検証処理部403の詳細については、図8および図9を用いて後述する。
【0034】
登録/復元処理部404は、シミュレーション実行部402によるシミュレーションの実行中に、登録/復元対象となった状態をデータベース420に登録したり、データベース420から読み出して復元する。登録/復元処理部404の詳細については、図10〜図13を用いて後述する。
【0035】
<テストシナリオ短縮化処理部401の詳細説明>
(テストシナリオ短縮化処理部401の機能的構成)
図5は、テストシナリオ短縮化処理部401の機能的構成を示すブロック図である。テストシナリオ短縮化処理部401は、選択部501と、検出部502と、遷移数特定部503と、決定部504と、埋込部505と、登録/復元対象判断部506と、を備えている。
【0036】
選択部501は、対象回路に関するテストシナリオ群の中から一のテストシナリオを選択する。具体的には、たとえば、テストシナリオ群tsを構成するn個のテストシナリオt1,t2,…,ti,…,tnから順次選択する。なお、テストシナリオ群tsは、図3に示したROM302,磁気ディスク305などの記憶装置に記憶されている。
【0037】
また、選択部501は、選択テストシナリオを構成する一連の要素(stimulus)の中から順次要素(stimuli)を選択する。テストシナリオは、時系列的に対象回路に与える要素の集合である。たとえば、図1に示したテストシナリオt1={a,b,c}では、a〜cは要素(たとえば、入力パターン)である。したがって、テストシナリオt1では、“a”は(S0→S1)を示し、“b”は(S1→S3)を示し、“c”は(S3→S6)を示す。選択部501では、a→b→cの順に要素を選択する。
【0038】
検出部502は、選択部501によって選択された一のテストシナリオを構成する一連の要素の中から選ばれた一の選択要素による遷移先状態を、対象回路に関する有限状態機械モデル100の中から検出する。上述したテストシナリオt1を例に挙げると、要素aを選択要素とした場合、要素aは状態遷移(S0→S1)であるため、要素aが対象回路に与えられると、対象回路の状態が状態S0から状態S1に遷移する。したがって、検出部502は、要素aによる遷移先状態S1を検出する。すなわち、選択要素が状態遷移(Sj→Sk)の場合、検出部502は、状態Skを遷移先状態として検出することになる。なお、状態Sjは遷移元状態である。
【0039】
遷移数特定部503は、検出部502によって検出された遷移先状態への入力遷移数と遷移先状態からの出力遷移数を、有限状態機械モデル100の中から特定する。ここで、入力遷移数とは、検出遷移先状態を遷移先状態として指定する状態遷移の個数である。また、出力遷移数とは、検出遷移先状態を遷移元状態とした場合の検出遷移先状態からの状態遷移の個数である。
【0040】
たとえば、図1の有限状態機械モデル100において検出遷移先状態を状態S3とする。状態S3は、状態S1からの遷移先状態であり、それ以外の状態から状態遷移されない。したがって、状態S3の入力遷移数は、1である。また、状態S3は、状態S6,S7,S8という3つの状態に遷移する。したがって、状態S3の出力遷移数は、3である。
【0041】
決定部504は、遷移数特定部503によって特定された出力遷移数が入力遷移数よりも多い場合、遷移先状態を登録/復元対象に決定する。ここで、登録/復元対象とは、データベース420に登録され、かつ、データベース420から読み出されて復元される状態(レジスタに保持される値)である。上述した例では、状態S3が検出遷移先状態であるが、状態S3の出力遷移数(3個)は、状態S3の入力遷移数(1個)よりも多いため、状態S3は、図1の(B)に示したように登録/復元対象となる。
【0042】
埋込部505は、決定部504によって決定された登録/復元対象をデータベース420に登録させる登録指示情報を、一のテストシナリオ内の一の選択要素の次の要素として埋め込む。ここで、登録指示情報とは、登録/復元対象となる状態を、データベース420にその状態を登録させる情報である。本実施の形態では、登録/復元対象を状態Siとすると、“record(Si)”を登録指示情報とする。埋込部505は、対象となっているテストシナリオ内において、登録指示情報を、その登録/復元対象に状態遷移させる要素の次の要素に埋め込む。
【0043】
図6は、有限状態機械モデルにおけるテストシナリオ群の埋込前後の関係を示す説明図である。図6において、(A)は、埋込前のテストシナリオ群tsを示しており、(B)は、埋込後の短縮化テストシナリオ群Tsを示している。(C)は、埋込前のテストシナリオ群tsでのシミュレーションの実行内容を示しており、(D)は、埋込後の短縮化テストシナリオ群Tsでのシミュレーションの実行内容を示している。
【0044】
(C)において、テストシナリオt1の状態S3では、出力遷移数が3、入力遷移数が1となる。したがって、埋込部505により、テストシナリオt1の要素bの次の要素として、要素cの前に、“record(S3)”を要素として埋め込む。これにより、テストシナリオt1が、(D)に示したようにテストシナリオT1に変換される。
【0045】
また、図5において、埋込部505は、登録/復元対象をデータベース420から復元させる復元指示情報を、他のテストシナリオを構成する一連の要素の先頭要素から他の選択要素までの要素群に代えて、他のテストシナリオに埋め込む。ここで、復元指示情報とは、登録/復元対象となる状態を、データベース420からその状態を復元させる情報である。
【0046】
本実施の形態では、登録/復元対象を状態Siとすると、“restore(Si)”を復元指示情報とする。埋込部505は、対象となっているテストシナリオ内において、その登録/復元対象までの要素列を削除して、その要素列の代わりに復元指示情報を埋め込む。
【0047】
(A)において、テストシナリオt1,t2では要素列{a,b}が重複しているため、要素bの遷移先状態S3が、テストシナリオT1において、登録指示情報により指定されている。したがって、埋込部505により、テストシナリオt2の初期の要素aから要素bまでの要素列{a,b}を消去して、要素列{a,b}の位置に“restore(S3)”を要素として埋め込む。これにより、テストシナリオt2がテストシナリオT2に変換される。
【0048】
また、図5において、登録/復元対象判断部506は、検出部502によって、一のテストシナリオ以外の他のテストシナリオを構成する一連の要素の中から選ばれた他の選択要素による遷移先状態が、有限状態機械モデルの中から検出された場合、一のテストシナリオにおいて埋込部505によって埋め込まれた登録指示情報が指定する登録/復元対象と一致するか否かを判断する。
【0049】
具体的には、たとえば、図6において、テストシナリオt1がテストシナリオT1に変換された後、未変換のテストシナリオt2が選択された場合、テストシナリオt2の先頭要素aから順次遷移先状態を探索する。そして、探索された状態が、登録指示情報“record(S3)”が指定する登録/復元対象(状態S3)と一致するか否かを判断する。
【0050】
テストシナリオt2では、要素bの遷移先状態S3で登録指示情報“record(S3)”が指定する登録/復元対象(状態S3)と一致する。したがって、図6の(B)に示したように、テストシナリオt2の要素列{a,b}を消去して、要素列{a,b}の位置に“restore(S3)”を要素として埋め込む。
【0051】
したがって、図6の(C)に示したように、従来だと、テストシナリオt1で対象回路のシミュレーションを実行したときに、a→b→cの順で状態遷移し、その後、テストシナリオt2で対象回路のシミュレーションを実行したときに、a→b→dの順で状態遷移した。
【0052】
これに対し、本実施の形態では、図6の(D)に示したように、テストシナリオT1で対象回路のシミュレーションを実行したときに、a→bの順で状態遷移したあと、登録指示情報“record(S3)”により、要素bの遷移先状態S3(でのレジスタの値)をデータベース420に記録する。そして、cにより状態遷移させる。
【0053】
つぎに、テストシナリオT2で対象回路のシミュレーションを実行したときに、テストシナリオt2のように、a→bの順で状態遷移させずに、復元指示情報“restore(S3)”によりデータベース420から状態S3(のレジスタの値)を復元する。その後、要素dにより状態遷移させる。これにより、シミュレーション時間が大幅に短縮されることになる。
【0054】
(テストシナリオ短縮化処理部401によるテストシナリオ短縮化処理)
図7は、テストシナリオ短縮化処理部401によるテストシナリオ短縮化処理手順を示すフローチャートである。まず、テストシナリオ短縮化処理部401は、対象回路に関する有限状態機械モデル100と対象回路に関するテストシナリオ群tsを取得する(ステップS701)。具体的には、テストシナリオ短縮化処理部401は、有限状態機械モデル100と対象回路に関するテストシナリオ群tsを検証支援装置400に読み込ませる。
【0055】
つぎに、テストシナリオ短縮化処理部401は、未選択のテストシナリオがあるか否かを判断する(ステップS702)。未選択のテストシナリオがない場合(ステップS702:No)、テストシナリオ短縮化処理を終了する。一方、未選択のテストシナリオがある場合(ステップS702:Yes)、テストシナリオ短縮化処理部401は、未選択のテストシナリオを選択する(ステップS703)。そして、テストシナリオ短縮化処理部401は、選択テストシナリオの中で、未選択の要素があるか否かを判断する(ステップS704)。
【0056】
未選択の要素がない場合(ステップS704:No)、テストシナリオ短縮化処理部401は、次のテストシナリオを選択させるため、ステップS702に戻る。一方、未選択の要素がある場合(ステップS704:Yes)、テストシナリオ短縮化処理部401は、未選択の要素のうち先頭の要素を選択する(ステップS705)。
【0057】
つぎに、テストシナリオ短縮化処理部401は、選択要素による遷移先状態の入力遷移数と出力遷移数とを検出する(ステップS706)。そして、テストシナリオ短縮化処理部401は、出力遷移数>入力遷移数であるか否かを判断する(ステップS707)。出力遷移数>入力遷移数でない場合(ステップS707:No)、登録/復元の対象外であるため、ステップS704に戻る。一方、出力遷移数>入力遷移数である場合(ステップS707:Yes)、テストシナリオ短縮化処理部401は、遷移先状態が登録/復元対象に設定済みであるか否かを判断する(ステップS708)。
【0058】
たとえば、テストシナリオ短縮化処理部401は、選択済みのテストシナリオ内の登録指示情報により、遷移先状態が指定されているか否かにより判断する。指定されていなければ、設定済みでないことになり、指定されていれば、設定済みとなる。たとえば、選択済みのテストシナリオ内にすでに、“record(S3)”が埋め込まれている場合に、遷移先状態S3は、登録/復元対象に設定済みとなる。
【0059】
そして、設定済みでない場合(ステップS708:No)、テストシナリオ短縮化処理部401は、遷移先状態を登録/復元対象として指定してデータベース420に登録させる登録指示情報を生成する(ステップS709)。そして、テストシナリオ短縮化処理部401は、生成された登録指示情報を選択要素の次の要素との間に追加して(ステップS710)、ステップS704に戻る。
【0060】
一方、ステップS708において、登録/復元対象に設定済みである場合(ステップS708:Yes)、すでに、遷移先状態を指定する登録指示情報が存在する。したがって、テストシナリオ短縮化処理部401は、遷移先状態をデータベース420から復元させる復元指示情報を生成する(ステップS711)。そして、テストシナリオ短縮化処理部401は、遷移先状態までの遷移列を消去して、その位置に生成された復元指示情報を追加する(ステップS712)。このあと、ステップS704に戻る。
【0061】
このようなテストシナリオ短縮化処理により、テストシナリオ群ts(t1,t2,…)が短縮化テストシナリオ群Ts(T1,T2,…)に短縮化されることとなる。
【0062】
<FSM検証処理部403の詳細説明>
(FSM検証処理部403の機能的構成)
つぎに、図4に示したFSM検証処理部403について具体的に説明する。FSM検証処理部403は、対象回路に関する有限状態機械モデル100での状態遷移と実際にシミュレーションを実行したときの状態遷移との同一性を検証する。具体的には、FSM検証処理部403は、対象回路のハードウェア記述情報430に短縮化テストシナリオ群Ts内のテストシナリオを順次与えることでシミュレーションを実行したときの状態遷移が、対象回路に関する有限状態機械モデル100の状態遷移と一致するか否かを検証する。
【0063】
図8は、FSM検証処理部403の機能的構成を示すブロック図である。FSM検証処理部403は、遷移先状態判断部801と、判断結果出力部802とを備えている。
【0064】
遷移先状態判断部801は、対象回路のシミュレーションの実行により対象要素において状態遷移が発生したことによる遷移先状態と、対象回路に関する有限状態機械モデル100における対象要素による遷移先状態とが、一致するか否かを判断する。
【0065】
具体的には、たとえば、テストシナリオT1を与えてシミュレーションを実行している場合、有限状態機械モデル100では、現状態である状態S0の遷移先状態はS1であるのに対し、シミュレーションでの現状態である状態S0の次状態が状態S1であれば、一致すると判断する。一方、次状態が状態S1以外、たとえば、状態S2であれば、不一致と判断する。
【0066】
判断結果出力部802は、遷移先状態判断部801によって判断された判断結果を出力する。判断結果とは、遷移先状態判断部801によってすべて一致した場合には、合格としてレポートを出力する。一方、遷移先状態判断部801によって不一致が発生した場合、シミュレーションの中止指示情報をシミュレーション実行部402に出力する。シミュレーション実行部402は、中止指示情報を受け付けると、シミュレーションを中止する。
【0067】
この場合は、短縮化テストシナリオ群Tsと有限状態機械モデル100との間に不整合が生じているため、設計者は、短縮化テストシナリオ群Ts(またはテストシナリオ群ts)と有限状態機械モデル100の修正を、コンピュータを操作して手作業によりおこなう。そして、修正後に再度、FSM検証処理部403により検証処理をおこなう。
【0068】
(FSM検証処理部403によるFSM検証処理)
図9は、FSM検証処理部403によるFSM検証処理手順を示すフローチャートである。まず、FSM検証処理部403は、シミュレーションの開始を待ち受け(ステップS901:No)、シミュレーションが開始された場合(ステップS901:Yes)、シミュレーションの終了を待ち受ける(ステップS902)。シミュレーションは、問題なく最後まで実行されて終了する場合と、FSM検証処理部403からシミュレーション実行部402に中止指示情報が出力された結果、シミュレーションが終了する場合がある。
【0069】
シミュレーションが終了していない場合(ステップS902:No)、FSM検証処理部403は、シミュレーションでの選択テストシナリオおよびその選択要素をシミュレーション実行部402からの情報により検出する(ステップS903)。そして、FSM検証処理部403は、シミュレーション実行部402からの情報により状態遷移が発生したか否かを判断する(ステップS904)。状態遷移が発生していない場合(ステップS904:No)、ステップS902に戻る。
【0070】
一方、状態遷移が発生した場合(ステップS904:Yes)、FSM検証処理部403は、次状態と有限状態機械モデル100での遷移先状態が一致するか否かを判断する(ステップS905)。一致する場合(ステップS905:Yes)、ステップS902に戻る。一方、不一致である場合(ステップS905:No)、中止指示情報をシミュレーション実行部402に出力して(ステップS906)、ステップS902に戻る。
【0071】
また、ステップS902においてシミュレーションの終了が検出された場合(ステップS902:Yes)、FSM検証処理部403は、検証結果(合格または不合格)のレポートを出力する(ステップS907)。中止指示情報が一度も出力されていない場合は合格を示すレポートを出力する。一方、中止指示情報が出力された場合は、不合格を示すレポートを出力する。
【0072】
このようなFSM検証処理により、それぞれ独立して作成された短縮化テストシナリオ群Tsと有限状態機械モデル100との不整合を自動で検出することができる。また、不整合がない場合(不一致がない場合)は、短縮化テストシナリオ群Tsと有限状態機械モデル100との間で整合性がとれていることを保証することができる。
【0073】
<登録/復元処理部404の詳細説明>
(登録/復元処理部404の機能的構成)
つぎに、図4に示した登録/復元処理部404について具体的に説明する。登録/復元処理部404は、シミュレーションの実行中に、登録/復元対象となる遷移先状態を特定して、遷移先状態(となるレジスタの値)をデータベース420に登録したり、登録された遷移先状態(となるレジスタの値)をデータベース420から読み出して復元する。
【0074】
図10は、登録/復元処理部404の機能的構成を示すブロック図である。登録/復元処理部404は、シナリオ抽出部1001と、判別部1002と、登録部1004と、判定部1003と、復元部1005と、を備えている。
【0075】
シナリオ抽出部1001は、特定の遷移先状態をデータベース420に登録させる登録指示情報が埋め込まれたテストシナリオと、特定の遷移先状態をデータベース420から復元させる復元指示情報が埋め込まれたテストシナリオと、を含むテストシナリオ群の中から、対象回路のシミュレーションに用いる対象テストシナリオを抽出する。
【0076】
具体的には、たとえば、短縮化テストシナリオ群Tsの中から対象回路のシミュレーションに用いる対象テストシナリオを順次抽出する。
【0077】
判別部1002は、シナリオ抽出部1001によって抽出された対象テストシナリオを構成する一連の要素の中から対象回路に対象要素を順次与えて模擬する対象回路のシミュレーションの実行中に、対象要素の種類を判別する。具体的には、たとえば、短縮化テストシナリオ群Tsを構成するテストシナリオには、登録指示情報が埋め込まれているテストシナリオT1や復元指示情報が埋め込まれているテストシナリオT2が存在する。
【0078】
判別部1002は、対象テストシナリオの中から対象回路に与えられた対象要素の種別が、(Sj→Sk)といった遷移をあらわす要素であるか、登録指示情報record(Sk)であるか、復元指示情報restore(Sk)であるかを判別する。
【0079】
登録部1004は、判別部1002により対象要素が登録指示情報であると判別された場合、特定の遷移先状態をデータベース420に登録する。具体的には、たとえば、登録指示情報が“record(Sk)”である場合、状態Sk、すなわち、対象回路内の組み合わせ回路の出力先となるレジスタの値を、状態Skの識別子と関連付けてデータベース420に登録する。
【0080】
図11は、データベース420の記憶内容の一例を示す説明図である。データベース420は、状態名項目とコンテキスト情報項目とを有し、状態ごとにコンテキスト情報が登録される。ここで、コンテキスト情報とは、対象回路内のレジスタを識別する識別子(たとえば、レジスタ名)とレジスタの値である。図11では、状態S3のレジスタr1〜rmの値が登録されている。
【0081】
図10に戻って、判定部1003は、判別部1002により対象要素が登録指示情報であると判別された場合、特定の遷移先状態までのシミュレーション時間とデータベース420からの所定の復元時間とに基づいて、登録部1004により登録すべきか否かを判定する。
【0082】
ここで、特定の遷移先状態までのシミュレーション時間については、シミュレーション実行部402により計測されるものとする。たとえば、状態S0〜Skまでのシミュレーション時間を、SimTime(S0→Sk)とする。また、データベース420への登録時間をRecとし、データベース420からの復元時間をResとする。登録時間Recと復元時間Resはあらかじめ設定される。
【0083】
ここで、特定の遷移先状態Skでの遷移数差分N(Sk)を求める。遷移数差分N(Sk)は、下記式で表現される。
【0084】
N(Sk)=Nout(Sk)−Nin(Sk)・・・・・・・・・・・・・・・(2)
ただし、Nout(Sk)は遷移先状態Skの出力遷移数、Nin(Sk)は遷移先状態Skの入力遷移数である。
【0085】
そして、下記式(3)を満たすことにより、遷移先状態Skをデータベース420に登録すべきであるか否かを判断する。
【0086】
N(Sk)×SimTime(S0→Sk)>Rec+N(Sk)×Res・・・(3)
ただし、N(Sk)>0
【0087】
シミュレーションは通常複数回実行されるため、1回目のシミュレーションでシミュレーション時間が最短となる状態Skを特定し、2回目以降は、最短となる状態SkのSimTime(S0→Sk)を適用する。たとえば、テストシナリオt1〜t3が同一の状態S10を通過する場合、テストシナリオt1〜t3ごとに、SimTime(S0→S10)を計測する。
【0088】
そして、2回目以降のシミュレーションでは、SimTime(S0→S10)が最短となるテストシナリオ(たとえば、テストシナリオt2)のSimTime(S0→S10)を採用する。この場合、上記式(3)は、下記式(4)となる。
【0089】
N(Sk)×Min[SimTime(S0→Sk)]>Rec+N(Sk)×Res
・・・(4)
ただし、N(Sk)>0
【0090】
なお、N(Sk)が大きければ大きいほど、右辺の第2項N(Sk)×Resが大きくなるので、右辺第1項の記録時間Recは無視できる。したがって、N(Sk)があらかじめ設定したしきい値以上となった場合、上記(4)式は下記(5)式になる。
【0091】
Min[SimTime(S0→Sk)]>Res・・・(5)
【0092】
したがって、判定部1003は、式(5)が成立したときは、そのときの遷移先状態をデータベース420に登録すべきと判定し、成立しなかったときは登録すべきでないと判定する。
【0093】
復元部1005は、判別部1002により対象要素が復元指示情報であると判別された場合、特定の遷移先状態をデータベース420から復元する。ここで、復元とは、特定の遷移先状態(のレジスタの値)をデータベース420から読み出して、対象回路内のレジスタに書き込む処理である。本実施の形態は、シミュレーションであるため、モデル化された対象回路のレジスタに、データベース420から読み出したレジスタの値を設定することとなる。
【0094】
具体的には、たとえば、図6の(D)においてテストシナリオT2を与えてシミュレーションした場合に、状態S3までのシミュレーションを実行しなくても状態S3が復元される。このように、特定の遷移先状態を復元することで、特定の遷移先状態までシミュレーションする必要がなく、シミュレーション時間の短縮化を図ることができる。
【0095】
たとえば、特定の遷移先状態Skまでの最短シミュレーション時間Min[SimTime(S0→Sk)]が復元時間Resよりも大きい場合に、その差が、たとえば、1[msec]あったとする。そして、遷移数差分N(Sk)がN(Sk)=1000であったとすると、短縮後では、特定の遷移先状態Skを通るテストシナリオ群について、1000×1[msec]=1[sec]もシミュレーション時間を短縮することができる。
【0096】
(登録/復元処理部404による登録/復元処理)
図12は、登録/復元処理部404による登録/復元処理手順を示すフローチャート(その1)である。まず、登録/復元処理部404は、シミュレーションの開始を待ち受け(ステップS1201:No)、シミュレーションが開始された場合(ステップS1201:Yes)、シミュレーションの終了を待ち受ける(ステップS1202)。シミュレーションは、問題なく最後まで実行されて終了する場合と、FSM検証処理部403からシミュレーション実行部402に中止指示情報が出力された結果、シミュレーションが終了する場合がある。シミュレーションが終了した場合(ステップS1202:Yes)、登録/復元処理は終了する。
【0097】
一方、シミュレーションが終了していない場合(ステップS1202:No)、登録/復元処理部404は、短縮化テストシナリオ群Tsの中から未選択のテストシナリオがあるか否かを判断する(ステップS1203)。未選択のテストシナリオがない場合(ステップS1203:No)、登録/復元処理は終了する。
【0098】
一方、未選択のテストシナリオがある場合(ステップS1203:Yes)、登録/復元処理部404は、未選択のテストシナリオを選択する(ステップS1204)。そして、登録/復元処理部404は、選択テストシナリオ内に未選択の要素があるか否かを判断する(ステップS1205)。未選択の要素がない場合(ステップS1205:No)、選択テストシナリオ内の要素はすべてシミュレーションされたため、ステップS1203に戻る。
【0099】
一方、未選択の要素がある場合(ステップS1205:Yes)、登録/復元処理部404は、未選択の要素を先頭から抽出する(ステップS1206)。そして、登録/復元処理部404は、抽出要素が復元指示情報であるか否かを判断する(ステップS1207)。復元指示情報である場合(ステップS1207:Yes)、登録/復元処理部404は、復元指示情報で指定されている状態のコンテキスト情報をデータベース420から読み出して復元する(ステップS1208)。そして、ステップS1205に戻る。
【0100】
一方、ステップS1207において、復元指示情報でない場合(ステップS1207:No)、図13のステップS1301に移行する。
【0101】
図13は、登録/復元処理部404による登録/復元処理手順を示すフローチャート(その2)である。まず、登録/復元処理部404は、ステップS1206において抽出された抽出要素を対象回路のハードウェア記述情報430に与える(ステップS1301)。これにより、シミュレーション実行部402では、対象回路のシミュレーションが実行される。そして、状態遷移の発生を待ち受ける(ステップS1302)。
【0102】
状態遷移が発生しなかった場合(ステップS1302:No)、末尾の状態に到達したこととなり、シミュレーション実行部402からその旨の通知を受けることになる。この場合は、ステップS1205に戻る。この場合、ステップS1205に戻っても未選択要素がないため、ステップS1203に戻ることになる。なお、現状態から次状態への状態遷移については、状態遷移が発生したものとする。
【0103】
一方、ステップS1302において、状態遷移が発生した場合(ステップS1302:Yes)、登録/復元処理部404は、発生した状態遷移による遷移先状態Skが登録/復元対象であるか否かを判断する(ステップS1303)。具体的には、遷移先状態Skが、すでに他のテストシナリオにおいて登録指示情報で指定されているか否かを判断する。
【0104】
遷移先状態が登録/復元対象でない場合(ステップS1303:No)、ステップS1205に戻る。一方、遷移先状態が登録/復元対象である場合(ステップS1303:Yes)、登録/復元処理部404は、初期状態S0から遷移先状態Skまでのシミュレーション時間をシミュレーション実行部402から取得する(ステップS1304)。そして、登録/復元処理部404は、遷移先状態Skでの遷移数差分N(Sk)に復元時間Resを乗じた値(N(Sk)×Res)が所定のしきい値Tに記録時間Recを乗じた値(T×Rec)以上であるか否かを判断する(ステップS1305)。
【0105】
N(Sk)×Res≧T×Recである場合(ステップS1305:Yes)、登録/復元処理部404は、式(5)を満たすか否かを判断する(ステップS1306)。式(5)を満たさない場合(ステップS1306:No)、ステップS1205に戻る。一方、式(5)を満たす場合(ステップS1306:Yes)、登録/復元処理部404は、遷移先状態Skをコンテキスト情報としてデータベース420に登録し(ステップS1307)、ステップS1205に戻る。
【0106】
一方、ステップS1305において、N(Sk)≧Tでない場合(ステップS1305:No)、登録/復元処理部404は、式(4)を満たすか否かを判断する(ステップS1308)。式(4)を満たさない場合(ステップS1308:No)、ステップS1205に戻る。一方、式(4)を満たす場合(ステップS1308:Yes)、登録/復元処理部404は、遷移先状態Skをコンテキスト情報としてデータベース420に登録し(ステップS1309)、ステップS1205に戻る。
【0107】
このような登録/復元処理によれば、どの状態を復元すればよいかが自動設定されているため、設計者が試行錯誤して登録/復元対象を探す必要はない。したがって、対象回路のシミュレーションを効率的に短縮化することができる。
【0108】
・実施の形態2
つぎに、実施の形態2について説明する。上述した実施の形態1では、設計者が対象回路について、テストシナリオ群tsと有限状態機械モデル100の両方を作成した例について説明したが、テストシナリオ群tsと有限状態機械モデル100との不整合をあらかじめ回避するため、実施の形態2では、テストシナリオ群tsから有限状態機械モデル100を自動生成する。
【0109】
また、自動生成した場合に、同一状態が別々の状態として生成されることがあるため、実施の形態2では、本来同一の状態であるが別々に生成された状態どうしを統合して、有限状態機械モデル100を自動修正する。これにより、修正後の有限状態機械モデル(以下、「修正済FSM」)1400は、修正前に比べて冗長さが低減される。
【0110】
また、統合により、統合された状態は、登録/復元対象になる可能性がある。したがって、データベース420からコンテキスト情報を復元することが可能となるため、シミュレーション時間の短縮化も図ることができる。以下、実施の形態2について説明するが、実施の形態1と同一箇所には同一符号を付し、その説明を省略する。
【0111】
<FSM修正>
図14は、有限状態機械モデル100の修正例を示す説明図である。図14において、(A)は修正前の有限状態機械モデル100を示しており、(B)は修正済FSM1400を示している。
【0112】
なお、(A)の状態での短縮化テストシナリオ群Tsは以下のとおりである。
T1={a,b,c,record(S8),e}
T2={f,g,h,j}
T3={restore(S8),d}
【0113】
また、修正済FSM1400により、短縮化テストシナリオ群Tsを修正すると、以下のとおりである。
T1={a,b,c,record(S8),e}
T2={f,g,p,q}
T3={restore(S8),d}
【0114】
すなわち、状態S9が状態S8に統合されたため、テストシナリオT2の要素h(S4→S9)は、要素p(S4→S8)に修正される。同様に、テストシナリオT2の要素j(S9→S12)は、要素q(S8→S12)に修正される。このように、テストシナリオを修正することで、再度テストシナリオの短縮化をおこなうことができる。たとえば、テストシナリオT2は、データベース420に登録された状態S8を復元することで短縮化することが可能となる。
【0115】
<検証支援装置の機能的構成>
図15は、検証支援装置の機能的構成の一例を示すブロック図である。検証支援装置1500は、FSM生成処理部1501と、テストシナリオ短縮化処理部401と、シミュレーション実行部402と、FSM修正処理部1502と、登録/復元処理部1503とを備える。テストシナリオ短縮化処理部401およびシミュレーション実行部402は、実施の形態1と同一内容であるため説明を省略する。
【0116】
また、FSM生成処理部1501〜登録/復元処理部1503は、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。
【0117】
より具体的には、FSM生成処理部1501〜登録/復元処理部1503により、ROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置から読み出されたデータは、RAM303や磁気ディスク305、CPU301内のキャッシュやレジスタに書き込まれる。また、FSM生成処理部1501〜FSM修正処理部1502により、CPU301が実行した中間的なまたは最終的な実行結果は、ROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置やCPU301内のキャッシュやレジスタに書き込まれる。
【0118】
FSM生成処理部1501は、対象回路に関するテストシナリオ群tsから対象回路に関する有限状態機械モデル100を自動生成する。FSM生成処理部1501の詳細については、図16および図17を用いて後述する。
【0119】
FSM修正処理部1502は、シミュレーション実行部402によるシミュレーションの実行中に、FSM生成処理部1501によって生成された有限状態機械モデル100を、図14に示したように修正する。登録対象となった状態をデータベース420に登録する機能も有する。FSM修正処理部1502の詳細については、図18および図19を用いて後述する。
【0120】
登録/復元処理部1503は、シミュレーションの実行中に、登録/復元対象となる遷移先状態を特定して、遷移先状態(となるレジスタの値)をデータベース420に登録したり、登録された遷移先状態(となるレジスタの値)をデータベース420から読み出して復元する。
【0121】
<FSM生成処理部1501の詳細説明>
(FSM生成処理部1501の機能的構成)
図16は、FSM生成処理部1501の機能的構成を示すブロック図である。FSM生成処理部1501は、更新部1605と、シナリオ抽出部1601と、遷移先状態特定部1602と、中間FSM判断部1603と、設定部1604と、FSM出力部1606とを備えている。
【0122】
更新部1605は、対象回路に関する有限状態機械モデル100に対象状態列が追加されることにより、有限状態機械モデル100を更新する。更新対象となる有限状態機械モデル100を、中間FSM1600と称す。まだ1回も更新されていない中間FSM1600は、対象回路の初期状態S0のみである。
【0123】
そして、中間FSM1600に対象状態列が追加されることで、中間FSM1600が更新される。対象状態列とは、更新前の中間FSM1600には含まれていない状態列である。なお、対象状態列は、設定部1604により設定される。
【0124】
シナリオ抽出部1601は、対象回路に関するテストシナリオ群の中から任意のテストシナリオを抽出する。具体的には、たとえば、テストシナリオ群tsから順次テストシナリオを抽出する。
【0125】
遷移先状態特定部1602は、抽出部によって抽出されたテストシナリオの状態遷移により出現する遷移先状態列を特定する。具体的には、たとえば、抽出テストシナリオの各要素による遷移先状態(レジスタの値。ただし、シミュレーションはまだ実行していないため、実際の0/1といった値ではなく変数でよい。)を検出することとなる。
【0126】
たとえば、選択テストシナリオt1がt1={a,b,c,e}(ただし、a=(S0→S1)、b=(S1→S3)、c=(S3→S8)、e=(S8→S10))とすると、状態遷移列{S0→S1→S3→S8→S10}を特定する。
【0127】
中間FSM判断部1603は、遷移先状態特定部1602によって特定された遷移先状態列が、有限状態機械モデル100に含まれているか否かを判断する。具体的には、最新の中間FSM1600に、遷移先状態特定部1602によって特定された遷移先状態列が含まれているか否かを判断する。たとえば、上述の例において、最新の中間FSM1600が{S0→S1}とすると、状態遷移列{S0→S1→S3→S8→S10}のうち、{S1→S3→S8→S10}が最新の中間FSM1600{S0→S1}に含まれていないと判断する。
【0128】
これに対し、最新の中間FSM1600が{S0→S1→S3→S8→S10→S15}であるとすると、最新の中間FSM1600{S0→S1→S3→S8→S10→S15}に、状態遷移列{S0→S1→S3→S8→S10}が含まれていると判断される。
【0129】
設定部1604は、遷移先状態特定部1602によって特定された遷移先状態列のうち、中間FSM判断部1603によって含まれていないと判断された遷移先状態列を対象状態列に設定して、有限状態機械モデル100に追加させる。具体的には、上述した例では、最新の中間FSM1600{S0→S1}とすると、状態遷移列{S0→S1→S3→S8→S10}のうち、{S1→S3→S8→S10}が最新の中間FSM1600{S0→S1}に含まれていないと判断される。したがって、状態遷移列{S1→S3→S8→S10}を対象状態列に設定する。
【0130】
これにより、更新部1605では、対象状態列{S1→S3→S8→S10}を最新の中間FSM1600{S0→S1}に追加することで、中間FSM1600が更新され、最新の中間FSM1600{S0→S1→S3→S8→S10}となる。
【0131】
FSM出力部1606は、シナリオ抽出部1601により未抽出のテストシナリオがない場合、更新部1605によって更新された最新の有限状態機械モデル100を出力する。具体的には、テストシナリオがすべて抽出されると、もう中間FSM1600は更新する余地がない。したがって、最新の中間FSM1600を、完成された有限状態機械モデル100として出力することとなる。出力された有限状態機械モデル100は、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
【0132】
(FSM生成処理部1501によるFSM生成処理)
図17は、FSM生成処理部1501によるFSM生成処理手順を示すフローチャートである。まず、FSM生成処理部1501は、中間FSM1600として初期状態S0を設定する(ステップS1701)。つぎに、FSM生成処理部1501は、シナリオ抽出部1601により、テストシナリオ群tsの中から未抽出のテストシナリオがあるか否かを判断する(ステップS1702)。未抽出のテストシナリオがある場合(ステップS1702:Yes)、FSM生成処理部1501は、未抽出のテストシナリオを1つ抽出する(ステップS1703)。
【0133】
そして、FSM生成処理部1501は、遷移先状態特定部1602により、抽出テストシナリオから遷移先状態列を特定する(ステップS1704)。このあと、FSM生成処理部1501は、中間FSM判断部1603により、特定された遷移先状態列のうち、最新の中間FSM1600にない状態列が存在するか否かを判断する(ステップS1705)。最新の中間FSM1600にない状態列がない場合(ステップS1705:No)、ステップS1702に戻る。
【0134】
一方、最新の中間FSM1600にない状態列がある場合(ステップS1705:Yes)、FSM生成処理部1501は、設定部1604により、特定された遷移先状態列のうち、最新の中間FSM1600にない状態列を、対象状態列に設定する(ステップS1706)。このあと、FSM生成処理部1501は、更新部1605により、対象状態列を最新の中間FSM1600に追加する(ステップS1707)。これにより、中間FSM1600が更新される。
【0135】
そのあと、ステップS1702に戻る。ステップS1702において、未抽出のテストシナリオがない場合(ステップS1702:No)、FSM生成処理部1501は、FSM出力部1606により、最新の中間FSM1600を、完成された有限状態機械モデル100として出力する(ステップS1708)。
【0136】
このように、FSM生成処理部1501では、テストシナリオ群tsを解析して中間FSM1600に追加することにより、中間FSM1600がいわゆる雪だるま式に大きくなり、テストシナリオ群tsによる状態遷移を網羅する有限状態機械モデル100を生成することができる。
【0137】
<FSM修正処理部1502の詳細説明>
(FSM修正処理部1502の機能的構成)
図18は、FSM修正処理部1502および登録/復元処理部1503の機能的構成を示すブロック図である。FSM修正処理部1502は、シナリオ抽出部1801と、遷移先状態判断部1802と、判断結果出力部1803と、仮決定部1804と、登録済判断部1805と、修正部1806と、修正済FSM出力部1807と、登録部1814と、を備えている。
【0138】
シナリオ抽出部1801は、短縮化テストシナリオ群Tsの中から対象回路のシミュレーションに用いる対象テストシナリオを抽出する。具体的には、たとえば、短縮化テストシナリオ群Tsの中から対象回路のシミュレーションに用いる対象テストシナリオを順次抽出する。対象テストシナリオが抽出されると、シミュレーション実行部402に与えられてシミュレーションが開始する。
【0139】
遷移先状態判断部1802は、対象回路のシミュレーションの実行により対象要素において状態遷移が発生したことによる遷移先状態と、FSM生成処理部1501によって生成された有限状態機械モデル100における対象要素による遷移先状態とが、一致するか否かを判断する。
【0140】
具体的には、たとえば、テストシナリオT1を与えてシミュレーションを実行している場合、現状態S0について有限状態機械モデル100では、状態S0の遷移先状態はS1であるのに対し、シミュレーションでの現状態S0の次状態が状態S1であれば、一致すると判断する。一方、次状態が状態S1以外、たとえば、状態S2であれば、不一致と判断する。
【0141】
判断結果出力部1803は、遷移先状態判断部1802によって判断された判断結果を出力する。遷移先状態判断部1802によって不一致が発生した場合、シミュレーションの中止指示情報をシミュレーション実行部402に出力する。シミュレーション実行部402は、中止指示情報を受け付けると、シミュレーションを中止する。一方、遷移先状態判断部1802によって一致した場合、仮決定部1804を実行する。
【0142】
仮決定部1804は、遷移先状態判断部1802によって一致すると判断された場合、シミュレーションの実行により対象要素において状態遷移が発生したことによる遷移先状態をデータベース420への登録対象に仮決定する。具体的には、たとえば、遷移先状態判断部1802によって一致したときの状態Skを登録対象に仮決定する。
【0143】
登録済判断部1805は、仮決定部1804によって仮決定された登録対象が、データベース420に登録済みか否かを判断する。具体的には、データベース420を参照して、登録対象と同一のコンテキスト情報がデータベース420に登録済であるか否かを判断する。
【0144】
登録部1814は、登録済判断部1805により登録済でないと判断された場合、登録部1814により登録対象をデータベース420に登録することになる。一方、登録済判断部1805により登録済であると判断された場合、コンテキスト情報が同一で状態名が異なる状態がデータベース420に登録済であるため、修正部1806により有限状態機械モデル100の修正を実行する。
【0145】
修正部1806は、登録済判断部1805によって登録済みであると判断された場合、登録対象への遷移元状態を、登録対象と一致する登録済みの遷移先状態への遷移元状態に修正し、登録対象からの遷移先状態を、登録済みの遷移先状態からの遷移先状態に修正する。
【0146】
具体的には、たとえば、図14を例に挙げると、状態S9が登録対象であり、状態S8が状態S9に一致する登録済の状態とする。この場合、状態S9への遷移元状態である状態S4の遷移先を状態S8に設定する。すなわち、遷移hの遷移先を状態S8に変更して、遷移pとする。
【0147】
同様に、状態S9からの遷移先状態S11,S12のうち、状態S11は、状態S8からの遷移先状態でもある。すなわち、状態S9からの遷移iは状態S8からの遷移eに一致するため、遷移iを削除する。また、状態S12に遷移する遷移jの遷移元を状態S9から状態S8に変更し、遷移qとする。修正部1806では、登録済判断部1805から修正指示を受け付ける都度、修正処理を実行する。
【0148】
修正済FSM出力部1807は、修正された修正済FSM1400を出力する。具体的には、たとえば、短縮化テストシナリオ群Ts内のテストシナリオについてすべてシミュレーションが終了した場合、最終的に修正済FSM1400を出力する。修正済FSM1400は、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
【0149】
(FSM修正処理部1502によるFSM修正処理)
図19は、FSM修正処理部1502によるFSM修正処理手順を示すフローチャートである。まず、FSM修正処理部1502は、シミュレーションの開始を待ち受ける(ステップS1901:No)。シミュレーションが開始された場合(ステップS1901:Yes)、FSM修正処理部1502は、シナリオ抽出部1801により、未抽出のテストシナリオがあるか否かを判断する(ステップS1902)。
【0150】
短縮化テストシナリオ群Tsの中で未抽出のテストシナリオがある場合(ステップS1902:Yes)、FSM修正処理部1502は、未抽出のテストシナリオを抽出する(ステップS1903)。これにより、抽出テストシナリオがシミュレーション実行部402に与えられるため、状態遷移が発生することになる。
【0151】
そして、シミュレーション実行部402での状態遷移の発生が検出された場合(ステップS1904:Yes)、FSM修正処理部1502は、発生した状態遷移による遷移先状態と有限状態機械モデル100での遷移先状態とが一致するか否か判断する(ステップS1905)。
【0152】
不一致である場合(ステップS1905:No)、抽出テストシナリオと有限状態機械モデル100との間に齟齬があるため、FSM修正処理部1502は、判断結果出力部1803により、シミュレーション実行部402に対し中止指示情報を出力する(ステップS1906)。これにより、シミュレーション実行部402では、シミュレーションを中止することとなる。
【0153】
一方、ステップS1905において、一致すると判断された場合(ステップS1905:Yes)、FSM修正処理部1502は、仮決定部1804により、シミュレーション実行部402による状態遷移の発生で得られた遷移先状態をデータベース420への登録対象に仮決定する(ステップS1907)。そして、FSM修正処理部1502は、仮決定された登録対象と同一コンテキスト情報の状態がデータベース420に登録済であるか否かを、登録済判断部1805により判断する(ステップS1908)。
【0154】
登録済である場合(ステップS1908:Yes)、FSM修正処理部1502は、修正部1806により有限状態機械モデル100を修正して(ステップS1909)、ステップS1904に戻る。一方、登録済でない場合(ステップS1908:No)、FSM修正処理部1502は、登録対象をデータベース420に登録して(ステップS1910)、ステップS1904に戻る。
【0155】
また、ステップS1904において、状態遷移が発生しなくなった場合(ステップS1904:No)、抽出テストシナリオによるシミュレーションが終了したこととなり、ステップS1902に戻る。ステップS1902において、FSM修正処理部1502は、シナリオ抽出部1801により、未抽出のテストシナリオがない場合(ステップS1902:No)、FSM修正処理を終了する。
【0156】
<登録/復元処理部1503の詳細説明>
(登録/復元処理部1503の機能的構成)
つぎに、図18を用いて、登録/復元処理部1503の機能的構成について説明する。登録/復元処理部1503は、判別部1002と、登録部1814と、判定部1003と、復元部1005と、を備えている。判別部1002、判定部1003および復元部1005については、実施の形態1と同一構成であるため、説明を省略する。
【0157】
判別部1002は、シナリオ抽出部1801によって抽出された対象テストシナリオを構成する一連の要素の中から対象回路に対象要素を順次与えて模擬する対象回路のシミュレーションの実行中に、対象要素の種類を判別する。具体的には、たとえば、短縮化テストシナリオ群Tsを構成するテストシナリオには、登録指示情報が埋め込まれているテストシナリオT1や復元指示情報が埋め込まれているテストシナリオT2が存在する。
【0158】
判別部1002は、対象テストシナリオの中から対象回路に与えられた対象要素の種別が、(Sj→Sk)といった遷移をあらわす要素であるか、登録指示情報record(Sk)であるか、復元指示情報restore(Sk)であるかを判別する。
【0159】
登録部1814は、判別部1002により対象要素が登録指示情報であると判別された場合、特定の遷移先状態をデータベース420に登録する。具体的には、たとえば、登録指示情報が“record(Sk)”である場合、状態Sk、すなわち、対象回路内の組み合わせ回路の出力先となるレジスタの値を、状態Skの識別子と関連付けてデータベース420に登録する。ただし、実施の形態2では、FSM修正処理部1502により登録済となる場合があるため、登録済の場合は、登録しない。
【0160】
(登録/復元処理部1503による登録/復元処理)
つぎに、登録/復元処理部1503による登録/復元処理について説明する。登録/復元処理については、実施の形態1において図12および図13を用いて説明したが、図12の登録/復元処理手順を示すフローチャート(その1)については、実施の形態2においても同一処理であるため、説明を省略する。
【0161】
図20は、登録/復元処理部1503による登録/復元処理手順を示すフローチャート(その3)である。まず、登録/復元処理部1503は、ステップS1206において抽出された抽出要素を対象回路のハードウェア記述情報430に与える(ステップS2001)。これにより、シミュレーション実行部402では、対象回路のシミュレーションが実行される。そして、状態遷移の発生を待ち受ける(ステップS2002)。
【0162】
状態遷移が発生しなかった場合(ステップS2002:No)、末尾の状態に到達したこととなり、シミュレーション実行部402からその旨の通知を受けることになる。この場合は、ステップS1205に戻る。この場合、ステップS1205に戻っても未選択要素がないため、ステップS1203に戻ることになる。なお、現状態から次状態への状態遷移については、状態遷移が発生したものとする。
【0163】
一方、ステップS2002において、状態遷移が発生した場合(ステップS2002:Yes)、登録/復元処理部1503は、発生した状態遷移による遷移先状態Skが登録/復元対象であるか否かを判断する(ステップS2003)。具体的には、遷移先状態Skが、すでに他のテストシナリオにおいて登録指示情報で指定されているか否かを判断する。
【0164】
発生した状態遷移による遷移先状態Skが登録/復元対象でない場合(ステップS2003:No)、ステップS1205に戻る。一方、遷移先状態が登録/復元対象である場合(ステップS2003:Yes)、登録/復元処理部1503は、発生した状態遷移による遷移先状態Skがすでにデータベース420に登録済であるか否かをコンテキスト情報により判断する(ステップS2004)。具体的には、発生した状態遷移による遷移先状態Skに一致するコンテキスト情報がある場合は、登録済、ない場合は未登録と判断される。
【0165】
登録済である場合(ステップS2004:Yes)、ステップS1205に戻る。未登録の場合(ステップS2004:No)、登録/復元処理部1503は、初期状態S0から遷移先状態Skまでのシミュレーション時間をシミュレーション実行部402から取得する(ステップS2005)。そして、登録/復元処理部1503は、遷移先状態Skでの遷移数差分N(Sk)に復元時間Resを乗じた値(N(Sk)×Res)が所定のしきい値Tに記録時間Recを乗じた値(T×Rec)以上であるか否かを判断する(ステップS2006)。
【0166】
N(Sk)×Res≧T×Recである場合(ステップS2006:Yes)、登録/復元処理部1503は、式(5)を満たすか否かを判断する(ステップS2007)。式(5)を満たさない場合(ステップS2007:No)、ステップS1205に戻る。一方、式(5)を満たす場合(ステップS2007:Yes)、登録/復元処理部1503は、遷移先状態Skをコンテキスト情報としてデータベース420に登録し(ステップS2008)、ステップS1205に戻る。
【0167】
一方、ステップS2006において、N(Sk)≧Tでない場合(ステップS2006:No)、登録/復元処理部1503は、式(4)を満たすか否かを判断する(ステップS2009)。式(4)を満たさない場合(ステップS2009:No)、ステップS1205に戻る。一方、式(4)を満たす場合(ステップS2009:Yes)、登録/復元処理部1503は、遷移先状態Skをコンテキスト情報としてデータベース420に登録し(ステップS2010)、ステップS1205に戻る。
【0168】
このような登録/復元処理によれば、FSM修正処理部1502において登録されなかった状態についても復元すればよいかが自動設定されているため、設計者が試行錯誤して登録/復元対象を探す必要はない。したがって、対象回路のシミュレーションを効率的に短縮化することができる。
【0169】
以上説明したように、本実施の形態によれば、一のテストシナリオに登録指示情報を埋め込むことで、シミュレーション実行時に、登録/復元対象となる遷移先状態(対象回路を構成するレジスタの値)をデータベースに登録することができる。したがって、他のテストシナリオでシミュレーションを実行する場合、登録/復元対象に状態遷移したときは、データベースを参照することで、容易に復元することができる。
【0170】
また、データベースに登録された登録/復元対象を復元させる復元指示情報を他のテストシナリオに埋め込んでおくことで、シミュレーション時には、一のテストシナリオと重複するシナリオを実行することなく、データベースを参照するだけで登録/復元対象を復元することができる。このように、短縮化テストシナリオ群を自動生成することができるため、設計者は登録/復元対象を探したりする負担が軽減され、検証期間の短縮化を図ることができる。
【0171】
また、シミュレーションと並列に有限状態機械モデルを検証することができ、検証期間の短縮化を図ることができる。また、有限状態機械モデルと短縮化テストシナリオ群は、それぞれ独自に作成されるため、シミュレーションとFSM検証を並列実行すればその分、不整合を早期発見することができる。
【0172】
また、単に、データベースに状態を登録させるだけではなく、シミュレーション時間の短縮が見込めない場合、すなわち、登録および復元の処理時間よりも、重複したテストシナリオでシミュレーションを実行したほうが時間短縮になる場合には、登録/復元対象を登録しない。このように、時間短縮が可能か否かを詳細に判断することができるため、シミュレーションの効率化を図ることができる。
【0173】
また、有限状態機械モデルとテストシナリオ群は、それぞれ独自に作成されるが、テストシナリオ群を用いて有限状態機械モデルを自動生成することで、人手により作成する場合よりも整合性を保証することができ、検証精度の向上を図ることができる。
【0174】
また、有限状態機械モデルを自動生成した場合、冗長な表現になる場合があるため、シミュレーションの実行に並列して、有限状態機械モデルを修正することで、有限状態機械モデルの最適化を図ることができる。また、修正後の有限状態機械モデルにより短縮化テストシナリオ群の修正を設計者が施すことで、その後、テストシナリオ短縮化処理により、短縮化テストシナリオ群をさらに短縮化することができる。このように、シミュレーション回数を重ねるごとに、テストシナリオが短縮化されるため、シミュレーション時間もより効率的に短縮化することができる。
【0175】
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検証支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【0176】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0177】
(付記1)遷移先状態への入力遷移数と前記遷移先状態からの出力遷移数を、対象回路に関する有限状態機械モデルの中から特定する遷移数特定工程と、
前記遷移数特定工程によって特定された前記出力遷移数が前記入力遷移数よりも多い場合、前記遷移先状態を登録/復元対象に決定する決定工程と、
前記対象回路に関するテストシナリオ群の中の一のテストシナリオを構成する一連の要素の中に前記決定工程によって決定された登録/復元対象に遷移させる第1の要素がある場合、前記登録/復元対象をデータベースに登録させる登録指示情報を、前記一のテストシナリオ内の前記第1の要素の次の要素として埋め込む第1の埋込工程と、
前記テストシナリオ群の中の他のテストシナリオを構成する一連の要素の中に前記登録/復元対象に遷移させる第2の要素がある場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記第2の要素までの要素群に代えて、前記他のテストシナリオに埋め込む第2の埋込工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【0178】
(付記2)前記第2の埋込工程は、
前記第1の埋込工程によって埋め込まれた登録指示情報が指定する前記登録/復元対象に遷移させる第2の要素がある場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記第2の要素までの要素群に代えて、前記他のテストシナリオに埋め込むことを特徴とする付記1に記載の検証支援プログラム。
【0179】
(付記3)特定の遷移先状態をデータベースに登録させる登録指示情報が埋め込まれたテストシナリオと、前記特定の遷移先状態を前記データベースから復元させる復元指示情報が埋め込まれたテストシナリオと、を含むテストシナリオ群の中から、対象回路のシミュレーションに用いる対象テストシナリオを抽出するシナリオ抽出工程と、
前記シナリオ抽出工程によって抽出された対象テストシナリオを構成する一連の要素の中から前記対象回路に対象要素を順次与えて模擬する前記対象回路のシミュレーションの実行中に、前記対象要素の種類を判別する判別工程と、
前記判別工程により前記対象要素が前記登録指示情報であると判別された場合、前記特定の遷移先状態を前記データベースに登録する登録工程と、
前記判別工程により前記対象要素が前記復元指示情報であると判別された場合、前記特定の遷移先状態を前記データベースから復元する復元工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【0180】
(付記4)前記判別工程により前記対象要素が前記登録指示情報であると判別された場合、前記特定の遷移先状態までのシミュレーション時間と前記データベースからの所定の復元時間とに基づいて、前記登録工程により登録すべきか否かを判定する判定工程を前記コンピュータに実行させ、
前記登録工程は、
前記判定工程によって登録すべきであると判定された場合、前記特定の遷移先状態を前記データベースに登録することを特徴とする付記3に記載の検証支援プログラム。
【0181】
(付記5)前記対象回路のシミュレーションの実行により前記対象要素において状態遷移が発生したことによる遷移先状態と、前記対象回路に関する有限状態機械モデルにおける前記対象要素による遷移先状態とが、一致するか否かを判断する遷移先状態判断工程と、
前記遷移先状態判断工程によって判断された判断結果を出力する判断結果出力工程と、
を前記コンピュータに実行させることを特徴とする付記3または4に記載の検証支援プログラム。
【0182】
(付記6)前記判断結果出力工程は、
前記遷移先状態判断工程によって不一致と判断された場合、前記シミュレーションの中止指示情報を前記実行手段に出力することを特徴とする付記5に記載の検証支援プログラム。
【0183】
(付記7)対象回路に関する有限状態機械モデルに対象状態列が追加されることにより、前記有限状態機械モデルを更新する更新工程と、
前記対象回路に関するテストシナリオ群の中から任意のテストシナリオを抽出する抽出工程と、
前記抽出工程によって抽出されたテストシナリオの状態遷移により出現する遷移先状態列を特定する遷移先状態列特定工程と、
前記遷移先状態列特定工程によって特定された遷移先状態列が、前記有限状態機械モデルに含まれているか否かを判断する中間FSM判断工程と、
前記遷移先状態列のうち、前記中間FSM判断工程によって含まれていないと判断された遷移先状態列を前記対象状態列に設定して、前記有限状態機械モデルに追加させる設定工程と、
前記抽出工程による未抽出のテストシナリオがない場合、前記更新工程によって更新された最新の有限状態機械モデルを出力するFSM出力工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【0184】
(付記8)前記テストシナリオ群の中から一のテストシナリオを選択する選択工程と、
前記選択工程によって選択された一のテストシナリオを構成する一連の要素の中から選ばれた一の選択要素による遷移先状態を、前記FSM出力工程によって出力された有限状態機械モデルの中から検出する検出工程と、
前記検出工程によって検出された遷移先状態へ遷移する入力遷移数と前記遷移先状態から遷移する出力遷移数を前記有限状態機械モデルから特定する遷移数特定工程と、
前記遷移数特定工程によって特定された前記出力遷移数が前記入力遷移数よりも多い場合、前記遷移先状態を登録/復元対象に決定する決定工程と、
前記決定工程によって決定された登録/復元対象をデータベースに登録させる登録指示情報を、前記一のテストシナリオ内の前記一の選択要素の次の要素として埋め込む埋込工程と、
をコンピュータに実行させることを特徴とする付記7に記載の検証支援プログラム。
【0185】
(付記9)前記検出工程によって、前記一のテストシナリオ以外の他のテストシナリオを構成する一連の要素の中から選ばれた他の選択要素による遷移先状態が、前記有限状態機械モデルの中から検出された場合、前記一のテストシナリオにおいて前記埋込工程によって埋め込まれた登録指示情報が指定する前記登録/復元対象と一致するか否かを判断する登録/復元対象判断工程を前記コンピュータに実行させ、
前記埋込工程は、
前記登録/復元対象判断工程によって一致すると判断された場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記他の選択要素までの要素群に代えて、前記他のテストシナリオに埋め込むことを特徴とする付記8に記載の検証支援プログラム。
【0186】
(付記10)前記埋込工程によって、特定の遷移先状態をデータベースに登録させる登録指示情報が埋め込まれたテストシナリオと、前記埋込工程によって、前記特定の遷移先状態を前記データベースから復元させる復元指示情報が埋め込まれたテストシナリオと、を含むテストシナリオ群の中から、前記対象回路のシミュレーションに用いる対象テストシナリオを抽出するシナリオ抽出工程と、
前記シナリオ抽出工程によって抽出された対象テストシナリオを構成する一連の要素の中から前記対象回路に対象要素を順次与えて模擬する前記対象回路のシミュレーションの実行中に、当該シミュレーションの実行により前記対象要素において状態遷移が発生したことによる遷移先状態と、前記FSM出力工程によって出力された有限状態機械モデルにおける前記対象要素による遷移先状態とが、一致するか否かを判断する遷移先状態判断工程と、
前記遷移先状態判断工程によって判断された判断結果を出力する判断結果出力工程と、
を前記コンピュータに実行させることを特徴とする付記9に記載の検証支援プログラム。
【0187】
(付記11)前記判断結果出力工程は、
前記遷移先状態判断工程によって不一致と判断された場合、前記シミュレーションの中止指示情報を、前記シミュレーションを実行する実行手段に出力することを特徴とする付記10に記載の検証支援プログラム。
【0188】
(付記12)前記遷移先状態判断工程によって一致すると判断された場合、前記シミュレーションの実行により前記対象要素において状態遷移が発生したことによる遷移先状態を前記データベースへの登録対象に仮決定する仮決定工程と、
前記仮決定工程によって仮決定された登録対象が、前記データベースに登録済みか否かを判断する登録済判断工程と、
前記登録済判断工程によって登録済みでないと判断された場合、前記登録対象を前記データベースに登録する登録工程と、
前記登録済判断工程によって登録済みであると判断された場合、前記登録対象への遷移元状態を、前記登録対象と一致する登録済みの遷移先状態への遷移元状態に修正し、前記登録対象からの遷移先状態を、前記登録済みの遷移先状態からの遷移先状態に修正する修正工程と、
前記修正工程によって修正された修正後の有限状態機械モデルを出力する修正済FSM出力工程と、
を前記コンピュータに実行させることを特徴とする付記10に記載の検証支援プログラム。
【0189】
(付記13)前記対象回路のシミュレーションの実行中に、前記対象要素の種類を判別する判別工程と、
前記判別工程により前記対象要素が前記復元指示情報であると判別された場合、前記特定の遷移先状態を前記データベースから復元する復元工程と、
を前記コンピュータに実行させることを特徴とする付記10〜12のいずれか一つに記載の検証支援プログラム。
【0190】
(付記14)遷移先状態への入力遷移数と前記遷移先状態からの出力遷移数を、対象回路に関する有限状態機械モデルの中から特定する遷移数特定手段と、
前記遷移数特定手段によって特定された前記出力遷移数が前記入力遷移数よりも多い場合、前記遷移先状態を登録/復元対象に決定する決定手段と、
前記対象回路に関するテストシナリオ群の中の一のテストシナリオを構成する一連の要素の中に前記決定手段によって決定された登録/復元対象に遷移させる第1の要素がある場合、前記登録/復元対象をデータベースに登録させる登録指示情報を、前記一のテストシナリオ内の前記第1の要素の次の要素として埋め込む第1の埋込手段と、
前記テストシナリオ群の中の他のテストシナリオを構成する一連の要素の中に前記登録/復元対象に遷移させる第2の要素がある場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記第2の要素までの要素群に代えて、前記他のテストシナリオに埋め込む第2の埋込手段と、
を備えることを特徴とする検証支援装置。
【0191】
(付記15)特定の遷移先状態をデータベースに登録させる登録指示情報が埋め込まれたテストシナリオと、前記特定の遷移先状態を前記データベースから復元させる復元指示情報が埋め込まれたテストシナリオと、を含むテストシナリオ群の中から、対象回路のシミュレーションに用いる対象テストシナリオを抽出するシナリオ抽出手段と、
前記シナリオ抽出手段によって抽出された対象テストシナリオを構成する一連の要素の中から前記対象回路に対象要素を順次与えて模擬する前記対象回路のシミュレーションの実行中に、前記対象要素の種類を判別する判別手段と、
前記判別手段により前記対象要素が前記登録指示情報であると判別された場合、前記特定の遷移先状態を前記データベースに登録する登録手段と、
前記判別手段により前記対象要素が前記復元指示情報であると判別された場合、前記特定の遷移先状態を前記データベースから復元する復元手段と、
を備えることを特徴とする検証支援装置。
【0192】
(付記16)対象回路に関する有限状態機械モデルに対象状態列が追加されることにより、前記有限状態機械モデルを更新する更新手段と、
前記対象回路に関するテストシナリオ群の中から任意のテストシナリオを抽出する抽出手段と、
前記抽出手段によって抽出されたテストシナリオの状態遷移により出現する遷移先状態列を特定する遷移先状態列特定手段と、
前記遷移先状態列特定手段によって特定された遷移先状態列が、前記有限状態機械モデルに含まれているか否かを判断する中間FSM判断手段と、
前記遷移先状態列のうち、前記中間FSM判断手段によって含まれていないと判断された遷移先状態列を前記対象状態列に設定して、前記有限状態機械モデルに追加させる設定手段と、
前記抽出手段による未抽出のテストシナリオがない場合、前記更新手段によって更新された最新の有限状態機械モデルを出力するFSM出力手段と、
を備えることを特徴とする検証支援装置。
【0193】
(付記17)遷移先状態への入力遷移数と前記遷移先状態からの出力遷移数を、対象回路に関する有限状態機械モデルの中から特定する遷移数特定工程と、
前記遷移数特定工程によって特定された前記出力遷移数が前記入力遷移数よりも多い場合、前記遷移先状態を登録/復元対象に決定する決定工程と、
前記対象回路に関するテストシナリオ群の中の一のテストシナリオを構成する一連の要素の中に前記決定工程によって決定された登録/復元対象に遷移させる第1の要素がある場合、前記登録/復元対象をデータベースに登録させる登録指示情報を、前記一のテストシナリオ内の前記第1の要素の次の要素として埋め込む第1の埋込工程と、
前記テストシナリオ群の中の他のテストシナリオを構成する一連の要素の中に前記登録/復元対象に遷移させる第2の要素がある場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記第2の要素までの要素群に代えて、前記他のテストシナリオに埋め込む第2の埋込工程と、
コンピュータが実行することを特徴とする検証支援方法。
【0194】
(付記18)特定の遷移先状態をデータベースに登録させる登録指示情報が埋め込まれたテストシナリオと、前記特定の遷移先状態を前記データベースから復元させる復元指示情報が埋め込まれたテストシナリオと、を含むテストシナリオ群の中から、対象回路のシミュレーションに用いる対象テストシナリオを抽出するシナリオ抽出工程と、
前記シナリオ抽出工程によって抽出された対象テストシナリオを構成する一連の要素の中から前記対象回路に対象要素を順次与えて模擬する前記対象回路のシミュレーションの実行中に、前記対象要素の種類を判別する判別工程と、
前記判別工程により前記対象要素が前記登録指示情報であると判別された場合、前記特定の遷移先状態を前記データベースに登録する登録工程と、
前記判別工程により前記対象要素が前記復元指示情報であると判別された場合、前記特定の遷移先状態を前記データベースから復元する復元工程と、
をコンピュータが実行することを特徴とする検証支援方法。
【0195】
(付記19)対象回路に関する有限状態機械モデルに対象状態列が追加されることにより、前記有限状態機械モデルを更新する更新工程と、
前記対象回路に関するテストシナリオ群の中から任意のテストシナリオを抽出する抽出工程と、
前記抽出工程によって抽出されたテストシナリオの状態遷移により出現する遷移先状態列を特定する遷移先状態列特定工程と、
前記遷移先状態列特定工程によって特定された遷移先状態列が、前記有限状態機械モデルに含まれているか否かを判断する中間FSM判断工程と、
前記遷移先状態列のうち、前記中間FSM判断工程によって含まれていないと判断された遷移先状態列を前記対象状態列に設定して、前記有限状態機械モデルに追加させる設定工程と、
前記抽出工程による未抽出のテストシナリオがない場合、前記更新工程によって更新された最新の有限状態機械モデルを出力するFSM出力工程と、
をコンピュータが実行することを特徴とする検証支援方法。
【符号の説明】
【0196】
100 有限状態機械モデル
400 検証支援装置
401 テストシナリオ短縮化処理部
402 シミュレーション実行部
403 FSM検証処理部
404 登録/復元処理部
420 データベース
1500 検証支援装置
1501 FSM生成処理部
1502 FSM修正処理部
1503 登録/復元処理部
ts テストシナリオ群
Ts 短縮化テストシナリオ群

【特許請求の範囲】
【請求項1】
遷移先状態への入力遷移数と前記遷移先状態からの出力遷移数を、対象回路に関する有限状態機械モデルの中から特定する遷移数特定工程と、
前記遷移数特定工程によって特定された前記出力遷移数が前記入力遷移数よりも多い場合、前記遷移先状態を登録/復元対象に決定する決定工程と、
前記対象回路に関するテストシナリオ群の中の一のテストシナリオを構成する一連の要素の中に前記決定工程によって決定された登録/復元対象に遷移させる第1の要素がある場合、前記登録/復元対象をデータベースに登録させる登録指示情報を、前記一のテストシナリオ内の前記第1の要素の次の要素として埋め込む第1の埋込工程と、
前記テストシナリオ群の中の他のテストシナリオを構成する一連の要素の中に前記登録/復元対象に遷移させる第2の要素がある場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記第2の要素までの要素群に代えて、前記他のテストシナリオに埋め込む第2の埋込工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項2】
前記第2の埋込工程は、
前記第1の埋込工程によって埋め込まれた登録指示情報が指定する前記登録/復元対象に遷移させる第2の要素がある場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記第2の要素までの要素群に代えて、前記他のテストシナリオに埋め込むことを特徴とする請求項1に記載の検証支援プログラム。
【請求項3】
特定の遷移先状態をデータベースに登録させる登録指示情報が埋め込まれたテストシナリオと、前記特定の遷移先状態を前記データベースから復元させる復元指示情報が埋め込まれたテストシナリオと、を含むテストシナリオ群の中から、対象回路のシミュレーションに用いる対象テストシナリオを抽出するシナリオ抽出工程と、
前記シナリオ抽出工程によって抽出された対象テストシナリオを構成する一連の要素の中から前記対象回路に対象要素を順次与えて模擬する前記対象回路のシミュレーションの実行中に、前記対象要素の種類を判別する判別工程と、
前記判別工程により前記対象要素が前記登録指示情報であると判別された場合、前記特定の遷移先状態を前記データベースに登録する登録工程と、
前記判別工程により前記対象要素が前記復元指示情報であると判別された場合、前記特定の遷移先状態を前記データベースから復元する復元工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項4】
前記判別工程により前記対象要素が前記登録指示情報であると判別された場合、前記特定の遷移先状態までのシミュレーション時間と前記データベースからの所定の復元時間とに基づいて、前記登録工程により登録すべきか否かを判定する判定工程を前記コンピュータに実行させ、
前記登録工程は、
前記判定工程によって登録すべきであると判定された場合、前記特定の遷移先状態を前記データベースに登録することを特徴とする請求項3に記載の検証支援プログラム。
【請求項5】
遷移先状態への入力遷移数と前記遷移先状態からの出力遷移数を、対象回路に関する有限状態機械モデルの中から特定する遷移数特定手段と、
前記遷移数特定手段によって特定された前記出力遷移数が前記入力遷移数よりも多い場合、前記遷移先状態を登録/復元対象に決定する決定手段と、
前記対象回路に関するテストシナリオ群の中の一のテストシナリオを構成する一連の要素の中に前記決定手段によって決定された登録/復元対象に遷移させる第1の要素がある場合、前記登録/復元対象をデータベースに登録させる登録指示情報を、前記一のテストシナリオ内の前記第1の要素の次の要素として埋め込む第1の埋込手段と、
前記テストシナリオ群の中の他のテストシナリオを構成する一連の要素の中に前記登録/復元対象に遷移させる第2の要素がある場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記第2の要素までの要素群に代えて、前記他のテストシナリオに埋め込む第2の埋込手段と、
を備えることを特徴とする検証支援装置。
【請求項6】
特定の遷移先状態をデータベースに登録させる登録指示情報が埋め込まれたテストシナリオと、前記特定の遷移先状態を前記データベースから復元させる復元指示情報が埋め込まれたテストシナリオと、を含むテストシナリオ群の中から、対象回路のシミュレーションに用いる対象テストシナリオを抽出するシナリオ抽出手段と、
前記シナリオ抽出手段によって抽出された対象テストシナリオを構成する一連の要素の中から前記対象回路に対象要素を順次与えて模擬する前記対象回路のシミュレーションの実行中に、前記対象要素の種類を判別する判別手段と、
前記判別手段により前記対象要素が前記登録指示情報であると判別された場合、前記特定の遷移先状態を前記データベースに登録する登録手段と、
前記判別手段により前記対象要素が前記復元指示情報であると判別された場合、前記特定の遷移先状態を前記データベースから復元する復元手段と、
を備えることを特徴とする検証支援装置。
【請求項7】
対象回路に関する有限状態機械モデルに対象状態列が追加されることにより、前記有限状態機械モデルを更新する更新手段と、
前記対象回路に関するテストシナリオ群の中から任意のテストシナリオを抽出する抽出手段と、
前記抽出手段によって抽出されたテストシナリオの状態遷移により出現する遷移先状態列を特定する遷移先状態列特定手段と、
前記遷移先状態列特定手段によって特定された遷移先状態列が、前記有限状態機械モデルに含まれているか否かを判断する中間FSM判断手段と、
前記遷移先状態列のうち、前記中間FSM判断手段によって含まれていないと判断された遷移先状態列を前記対象状態列に設定して、前記有限状態機械モデルに追加させる設定手段と、
前記抽出手段による未抽出のテストシナリオがない場合、前記更新手段によって更新された最新の有限状態機械モデルを出力するFSM出力手段と、
を備えることを特徴とする検証支援装置。
【請求項8】
遷移先状態への入力遷移数と前記遷移先状態からの出力遷移数を、対象回路に関する有限状態機械モデルの中から特定する遷移数特定工程と、
前記遷移数特定工程によって特定された前記出力遷移数が前記入力遷移数よりも多い場合、前記遷移先状態を登録/復元対象に決定する決定工程と、
前記対象回路に関するテストシナリオ群の中の一のテストシナリオを構成する一連の要素の中に前記決定工程によって決定された登録/復元対象に遷移させる第1の要素がある場合、前記登録/復元対象をデータベースに登録させる登録指示情報を、前記一のテストシナリオ内の前記第1の要素の次の要素として埋め込む第1の埋込工程と、
前記テストシナリオ群の中の他のテストシナリオを構成する一連の要素の中に前記登録/復元対象に遷移させる第2の要素がある場合、前記登録/復元対象を前記データベースから復元させる復元指示情報を、前記他のテストシナリオを構成する一連の要素の先頭要素から前記第2の要素までの要素群に代えて、前記他のテストシナリオに埋め込む第2の埋込工程と、
をコンピュータが実行することを特徴とする検証支援方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2011−237841(P2011−237841A)
【公開日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願番号】特願2010−105899(P2010−105899)
【出願日】平成22年4月30日(2010.4.30)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】