説明

モデル検査装置、モデル検査方法およびモデル検査プログラム

【課題】状態爆発の問題を回避しつつ、モデル検査の検査対象を拡大すること。
【解決手段】イベントに応じて変化する状態の遷移条件を表形式であらわした状態遷移表に対応する状態遷移情報を取得する取得部と、とりうる状態を各ノードとする木構造の階層ごとに遷移条件を一階論理式化した論理式を状態遷移情報から生成する論理式生成部とを備えるようにモデル検査装置を構成する。また、論理式生成部によって生成された論理式に基づいて充足性モジュロ理論による検査を実行する検査実行部を備えるようにモデル検査装置を構成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、モデル検査装置、モデル検査方法およびモデル検査プログラムに関する。
【背景技術】
【0002】
従来、ハードウェアやソフトウェアから導出されたモデルが、設計仕様を満たすか否かを検査するモデル検査手法が知られている。かかるモデル検査手法では、検査対象となるモデルがとりうる状態ごとに、各状態が設計仕様を満たすか否かを網羅的に検査する。
【0003】
なお、特許文献1には、コンピュータプログラムに対して上記したモデル検査手法を適用する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−123204号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のモデル検査手法には、検査対象となるモデルの状態数や遷移条件項目数が増加すると、モデル検査で使用するメモリ量が爆発的に増加してしまうという問題、すなわち、「状態爆発の問題」があった。
【0006】
また、特許文献1の技術には、モデル検査の検査対象が、コンピュータプログラムに限定されてしまうという問題もあった。すなわち、特許文献1の技術は、独立した人や物をそれぞれモデル化した場合のように、非同期な振る舞いモデルについては、モデル検査の検査対象とすることができなかった。
【0007】
開示の技術は、上記に鑑みてなされたものであって、状態爆発の問題を回避しつつ、モデル検査の検査対象を拡大することができるモデル検査装置、モデル検査方法およびモデル検査プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本願の開示するモデル検査装置は、イベントに応じて変化する状態の遷移条件を表形式であらわした状態遷移表に対応する状態遷移情報を取得する取得部と、前記状態遷移表がとりうる前記状態を各ノードとする木構造の階層ごとに、前記遷移条件を一階論理式化した論理式を前記状態遷移情報から生成する論理式生成部と、前記論理式生成部によって生成された前記論理式に基づいて充足性モジュロ理論による検査を実行する検査実行部とを備える。
【発明の効果】
【0009】
本願の開示するモデル検査装置によれば、状態爆発の問題を回避しつつ、モデル検査の検査対象を拡大することができる。
【図面の簡単な説明】
【0010】
【図1】図1は、本実施例に係るモデル検査手法の説明図である。
【図2】図2は、一階論理式化の説明図である。
【図3】図3は、モデル検査装置の構成を示すブロック図である。
【図4】図4は、状態遷移表の例を示す図である。
【図5】図5は、状態遷移の例を示す図である。
【図6】図6は、モデル検査装置を用いたモデル検査手順の例を示す図である。
【図7】図7は、モデル検査装置が実行する処理手順を示すフローチャートである。
【図8】図8は、モデル検査処理の処理手順を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して、本願の開示するモデル検査装置、モデル検査方法およびモデル検査プログラムの実施例を詳細に説明する。なお、以下に示す実施例における例示で本発明が限定されるものではない。
【0012】
また、以下に示す実施例では、複数の状態遷移表をモデル検査の対象とする場合について説明するが、当然ながら、1つの状態遷移表のみをモデル検査の対象とすることもできる。
【実施例】
【0013】
まず、本実施例に係るモデル検査手法について、図1および図2を用いて説明する。図1は、本実施例に係るモデル検査手法の説明図であり、図2は、一階論理式化の説明図である。
【0014】
図1に示すように、本実施例に係るモデル検査手法は、複数の状態遷移表からなる状態遷移表群を入力として受け取り、各状態遷移表がとりうるすべての「状態」について、あらかじめ定められた検査条件を満たすか否かを網羅的に検査する。なお、「状態」とは、1または複数の状態遷移表に含まれる変数群の各変数値の組み合わせを指す。
【0015】
ここで、本実施例に係るモデル検査手法は、状態の遷移を木構造で表現した場合における、状態階層(以下、単に「階層」と記載する場合もある)ごとに、遷移条件を一階論理式化した論理式を生成する。そして、各階層に対応する論理式ごとに、上記した検査条件を満たすか否かを検査する。
【0016】
かかる一階論理式化について図2を用いて説明しておく。図2の(A)に示したのは、状態の遷移をあらわす木構造である。たとえば、この木構造としては、いわゆるクリプキ構造を用いることができる。
【0017】
図2の(A)には、各「状態」および状態間の「遷移」の例を示しており、各状態を「楕円」、状態から状態への遷移を「矢印」であらわしている。ここで、「状態S0」は、初期状態であり、「状態S1」または「状態S2」へ遷移する。また、「状態S1」は、「状態S3」または「状態S4」へ遷移する。
【0018】
一般的に、モデル検査では、各「状態」が、それぞれ検査条件を満たすか否かを検査するが、各「状態」に対応するデータをメモリへ記憶させる必要がある。このため、検査すべき状態に含まれる要素数や、状態自体の個数が増えると、メモリへ記憶させるべきデータ量は急激に増加する。たとえば、図2の(A)および(B)では、「状態S0」〜「状態S9」の10個の状態を例示しているが、実際の状態の数は、非常に大きいことが通常である。
【0019】
しかしながら、物理的なメモリ量を超えたモデル検査は不可能であるため、検査すべき状態に対応するメモリ量を確保できない場合には、モデル検査自体を行うことができない。また、仮にメモリ量を確保できた場合であっても、モデル検査に要する物理的なコストはかさんでしまう。そして、このような問題は、「状態空間爆発問題」、あるいは、単に「状態爆発の問題」と呼ばれる。
【0020】
そこで、図2の(B)に示すように、本実施例に係るモデル検査手法では、図2の(A)に示した木構造の階層ごとに、1つの階層に含まれるすべての状態に関する遷移条件を一階論理式化することで、1つの論理式としてあらわすこととした。なお、かかる論理式の詳細な内容については後述することとする。
【0021】
また、図2の(B)に示すように、本実施例に係るモデル検査手法では、階層kについて、「k=0」から「k=bd」までの範囲で、それぞれ論理式を生成することとした。ここで、「bd」は、「探索深度」と呼ばれ、この探索深度には任意の深度(階層)を指定することができる。
【0022】
このように、本実施例に係るモデル検査手法によれば、検査すべき状態の個数が非常に多い場合であっても、有限個数の論理式を検査すれば足りるので、上記した「状態爆発の問題」を回避することができる。すなわち、状態空間を縮減することによって、「状態爆発の問題」を回避することができる。また、状態空間の縮減によって検査の高速化を図ることができる。
【0023】
すなわち、図1に示すように、本実施例に係るモデル検査手法は、状態遷移表群の状態階層ごとに遷移条件を一階論理式化し(図1の(A)参照)、論理式(k=0)から論理式(k=bd)までの「bd+1」個の論理式群を生成する。
【0024】
そして、本実施例に係るモデル検査手法は、生成した論理式群と、論理式群が満たすべき性質を示す検査条件とをSMT(Satisfiability Modulo Theories:充足性モジュロ理論)ソルバへ入力する(図1の(B−1)および(B−2)参照)。なお、SMTソルバとしては、一般的に流通している各種SMTソルバを用いることができる。
【0025】
さらに、本実施例に係るモデル検査手法は、SMTソルバの出力に基づいて反例情報を生成し、生成した反例情報を出力する(図1の(C)参照)。ここで、反例とは、検査条件に反する状態およびかかる状態に至る状態の履歴を指す。
【0026】
このように、本実施例に係るモデル検査手法は、状態遷移表をモデル検査の対象としているので、コンピュータプログラムに限らず、非同期な振る舞いモデルをもモデル検査することができる。すなわち、本実施例に係るモデル検査手法は、モデル検査の対象を拡大することができる。
【0027】
また、本実施例に係るモデル検査手法は、状態階層ごとに生成した論理式を用いて有限界モデル検査(BMC:Bounded Model Checked)を行うので、状態爆発の問題を回避するとともに、検査の高速化を図ることができる。
【0028】
次に、図1および図2を用いて説明したモデル検査手法を適用したモデル検査装置の構成について図3を用いて説明する。図3は、モデル検査装置10の構成を示すブロック図である。
【0029】
図3に示すように、モデル検査装置10は、入力部11と、表示部12と、出力部13と、制御部14と、記憶部15とを備える。また、制御部14は、取得部14aと、変換部14bと、論理式生成部14cと、検査部14dとをさらに備えており、記憶部15は、検査条件情報15aと、状態遷移情報15bと、論理式情報15cとを記憶する。
【0030】
入力部11は、キーボードやマウスといった入力デバイス、可搬型記憶媒体のリーダ、他装置との通信を行う通信ボードなどで構成される。また、この入力部11は、受け取ったデータを制御部14へ渡す処理を行う。
【0031】
表示部12は、ディスプレイ装置などの表示デバイスである。この表示部12は、制御部14の検査部14dから渡された検査結果や、検査に用いる条件などを表示する。また、出力部13は、可搬型記憶媒体のライタ、他装置との通信を行う通信ボードなどで構成される。そして、この出力部13は、制御部14の検査部14dから渡された検査結果を可搬型記憶媒体や他装置などに対して出力する処理を行う。
【0032】
制御部14は、モデル検査装置10の全体制御を行う制御部である。取得部14aは、入力部11から受け取ったデータを、記憶部15へ記憶させる処理を行う。具体的には、この取得部14aは、モデル検査において検査対象が満たすべき性質を示す検査条件を、入力部11から受け取った場合には、受け取った検査条件を検査条件情報15aとして記憶部15へ記憶させる。
【0033】
また、取得部14aは、状態遷移表に対応する情報を、入力部11から受け取った場合には、受け取った情報を状態遷移情報15bとして記憶部15へ記憶させる。ここで、この状態遷移情報15bの具体例を説明するために、状態遷移表の例および状態遷移の例について図4および図5を用いて説明しておく。
【0034】
図4は、状態遷移表の例を示す図である。なお、図4の(A)には、状態遷移表STM1を、同じく(B)には、状態遷移表STM2を、それぞれ例示しているが、状態遷移表の個数には、特に、制限はない。
【0035】
図4の(A)および(B)に示すように、状態遷移表は、「イベント」を受け取った場合に、現在の「状態」がどの「状態」へ遷移するか、各種変数がどのように変化するか、どのような「イベント」が発行されるか、を示す「アクション」を定義した情報である。
【0036】
図4の(A)に示す状態遷移表STM1がとりうる「状態」は、「STS11」および「STS12」である。また、状態遷移表STM1が受け取る「イベント」は、「evt11」および「evt12」である。そして、所定の「状態」と、所定の「イベント」とで特定される要素は、「セル」と呼ばれる。
【0037】
たとえば、状態遷移表STM1における現在の状態が「STS11」である場合に、「evt11」を受け取ると、状態は、「STS12」へ遷移する。また、変数aaは、「0」へ変化する。そして、現在の状態が「STS12」である場合に、「evt12」を受け取ると、状態は、「STS11」へ遷移する。
【0038】
また、変数bbには「100」が加算され、変数ccから変数bbを差し引いた値があらたな変数ccの値となる。さらに、状態遷移表STM2に対して「evt21」が発行される。
【0039】
なお、このように、他の状態遷移表へ向けて発行されるイベントは、「外部イベント」と呼ばれる。また、図4の(A)において「/」が記載されたセルは、「状態」と「イベント」との組み合わせはありえるものの、処理を行わない「無視セル」をあらわしている。
【0040】
そして、「×」が記載されたセルは、「状態」と「イベント」との組み合わせがありえない「不可セル」をあらわしている。なお、上記した「アクション」が定義されたセルは、「通常セル」と呼ばれる。
【0041】
次に、状態遷移表STM2について説明する。図4の(B)に示す状態遷移表STM2がとりうる「状態」は、「STS21」および「STS22」である。また、状態遷移表STM2が受け取る「イベント」は、「evt21」および「evt22」である。なお、「evt21」は、図4の(A)に示した状態遷移表STM1から発行される外部イベントである。
【0042】
たとえば、状態遷移表STM2における現在の状態が「STS21」である場合に、「evt21」を受け取ると、状態は、「STS22」へ遷移する。また、変数ccには「200」が加算される。そして、現在の状態が「STS22」である場合に、「evt22」を受け取ると、状態は、「STS21」へ遷移する。また、変数ccは「0」へ変化する。
【0043】
このように、各状態遷移表は、「状態」と「イベント」との組み合わせで特定される「セル」において、遷移先となる「状態」や、各種変数の変化、イベントの発行といったアクション(遷移条件)が定義された情報である。
【0044】
そして、上記した取得部14aは、このような状態遷移表に対応する情報を、あらかじめ定められた所定の形式へ変更することによって状態遷移情報15bを生成し、生成した状態遷移情報15bを記憶部15へ記憶させる。
【0045】
なお、図4の(A)および(B)には、それぞれ独立した状態遷移表を例示したが、状態遷移表におけるセルに、他の状態遷移表を挿入した「入れ子形式」の状態遷移表を用いることとしてもよい。
【0046】
また、図4の(A)および(B)では、「状態」および「イベント」の個数がそれぞれ2個の状態遷移表を例示したが、「状態」の個数、あるいは、「イベント」の個数には、特に、制限はない。
【0047】
次に、状態遷移の例について図5を用いて説明する。図5は、状態遷移の例を示す図である。なお、図5の(A)には、状態遷移の説明に用いる状態遷移表群を、図5の(B)には、状態遷移表における各種変数の初期値を、図5の(C)には、状態遷移の例を、それぞれ示している。
【0048】
以下、図5の(A)に示す3つの状態遷移表(状態遷移表STM1、状態遷移表STM2および状態遷移表STM3)を用いて状態遷移の説明を行う。なお、図5の(A)に示す各状態遷移表では、外部変数aおよび外部変数bを、「イベント」として取り扱う。また、図5の(A)に示すように、各状態遷移表のセルに括弧付きで示した「t1」〜「t9」は、状態間の「遷移」をあらわす。
【0049】
たとえば、状態遷移表STM1における現在の状態(status1)が「s1」である場合に、外部変数aが1と等しければ、状態は「s2」へ、外部変数bは「1」へ、それぞれ更新される。そして、このような遷移は、「t1」とあらわされる。なお、図5の(A)に示す3つの状態遷移表(状態遷移表STM1、状態遷移表STM2および状態遷移表STM3)は、それぞれ、非同期かつ並列に状態遷移を行う独立した状態遷移表である。
【0050】
また、図5の(A)に示した各状態遷移表の各種変数は、図5の(B)に示す初期値へ初期化される。具体的には、外部変数aは「1」へ、外部変数bは「0」へ、状態遷移表STM1の状態(status1)は「s1」へ、それぞれ初期化される。また、状態遷移表STM2の状態(status2)は「s3」へ、状態遷移表STM3の状態(status3)は「s5」へ、それぞれ初期化される。
【0051】
そして、図5の(A)および(B)に示した条件を前提とすると、状態遷移は、図5の(C)のようにあらわされる。
【0052】
すなわち、図5の(C)に示すように、初期状態に相当する「状態S0」では、外部変数a、外部変数b、状態遷移表STM1の状態(status1)、状態遷移表STM2の状態(status2)および状態遷移表STM3の状態(status3)は、それぞれ図5の(B)に示した初期値をとる。
【0053】
ここで、「状態S0」における外部変数bの値は「0」であるが、図5の(A)に示した各状態遷移表の「イベント」には、「b==0」が存在しない。一方、「状態S0」における外部変数aの値は「1」であり、状態遷移表STM1および状態遷移表STM2の「イベント」には、「a==1」が存在する。
【0054】
そして、状態遷移表STM1の状態(status1)は「s1」であるので、「s1」と「a==1」との組み合わせに対応するセルにおける遷移(t1)は可能である。また、状態遷移表STM2の状態(status2)は「s3」であるので、「s3」と「a==1」との組み合わせに対応するセルにおける遷移(t4)も可能である。なお、その他の遷移は不可能であるので、「状態S0」においては、「状態S1」への遷移(t1)と、「状態S2」への遷移(t4)とが発生しうる。
【0055】
そして、「状態S0」から「状態S1」への遷移(t1)に伴い、外部変数bは「1」へ、状態遷移表STM1の状態(status1)は「s2」へ、それぞれ更新される(状態S1における破線の閉領域参照)。また、「状態S0」から「状態S2」への遷移(t4)に伴い、外部変数bは「2」へ、状態遷移表STM2の状態(status2)は「s4」へ、それぞれ更新される(状態S2における破線の閉領域参照)。
【0056】
このように、各状態遷移表がとりうる各「状態」は、各状態遷移表が更新する各種変数の組み合わせとして表現される。また、現在の「状態」は、少なくとも1つの変数が変更されれば、他の「状態」へと「遷移」する。
【0057】
なお、図5の(C)に示すように、「状態S1」においては、遷移(t3)、遷移(t4)および遷移(t8)が発生しうる。また「状態S2」においては、遷移(t1)および遷移(t6)が発生しうる。なお、以下、同様に状態遷移が行われていくことになる。
【0058】
そして、後述する変換部14bは、モデル検査の対象となる状態遷移表(非同期かつ並列に状態遷移を行う状態遷移表群に属する状態遷移表)に対応する状態遷移情報15bを、記憶部15から抽出することになる。なお、図5の(A)には、3個の状態遷移表を例示したが、状態遷移表の個数には、特に、制限はない。
【0059】
図3の説明に戻り、制御部14の説明をつづける。変換部14bは、モデル検査の対象となる状態遷移表に対応する状態遷移情報15bを、記憶部15から抽出するとともに、抽出した状態遷移情報15bを論理式生成部14cへ渡す処理を行う。なお、この変換部14bは、上記した入れ子形式の複数の状態遷移表を、1つの状態遷移表へ展開する処理を併せて行う。
【0060】
ここで、並列に存在する状態遷移表の各単位を「タスク」と呼ぶこととすると、変換部14bは、並列に存在するすべてのタスクにそれぞれ対応する状態遷移情報15bを、記憶部から抽出する。なお、「並列に存在するすべてのタスク」は、「挙動単位」とも呼ばれる。
【0061】
論理式生成部14cは、変換部14bから受け取った状態遷移情報15bを、状態階層ごとに一階論理式化することによって、各階層に対応する論理式をそれぞれ生成する処理を行う。ここで、この論理式生成部14cが、状態遷移情報15bから論理式を生成する生成処理について具体的に説明する。
【0062】
なお、以下に示す論理式においては、「∧」はAND(論理積)を、「∨」はOR(論理和)を示す。また、「∧」を数列としてあらわす場合には「Λ」を、「∨」を数列としてあらわす場合には「V」を、それぞれ用いることとする。なお、「¬」は否定をあらわしている。
【0063】
各状態遷移表を「H」(ただし、iは1以上n以下の整数)、k番目の階層(図2の(B)参照)における各状態遷移表の状態を「statusH[k]」、k番目の階層における全ての変数を「Var(D)[k]」、変数の値を「value(Var(D)[k])」、k番目の階層に対応する論理式をstep[k]とすると、0番目の階層、すなわち、ルート階層の論理式「step[0]」は、
【数1】

であらわされる。なお、「D」は、状態遷移表H〜Hを含んだ状態遷移表デザインを指す。
【0064】
ここで、式(1)は、0番目の階層では、変数群の各変数値に初期値が設定され、すべての状態遷移表Hiにおける状態statusHが0へ初期化されることを示している。
【0065】
次に、通常セルを「c」、k番目の階層における通常セルcの遷移条件を「guards(c)[k]」、k番目の階層における通常セルcから発生するイベントを「event(c)[k]」、通常セルcにおける状態の遷移前の値を「source(c)」とすると、k番目の階層における通常セルcの活性条件「enabled(c)[k]」は、
【数2】

であらわされる。なお、kは、1以上bd以下の整数である。
【0066】
ここで、式(2)は、k番目の階層の通常セルcでアクションの実行が可能となる条件が、k−1番目の階層で3つの条件をすべて満たすことである旨を示している。つまり、k−1番目の階層で、遷移条件を満たし、かつ、イベントがディスパッチされ、かつ、状態遷移表の状態が更新された場合に、k番目の階層の通常セルcにおいてアクションの実行が可能となる。
【0067】
次に、k番目の階層の通常セルcにおいてアクションが実行された結果について説明する。k番目の階層における通常セルcのアクション群を「actions(c)[k]」、通常セルcにおける状態の遷移後の値を「target(c)」とすると、アクションの実行結果「effects(c)[k]」は、
【数3】

であらわされる。
【0068】
ここで、式(3)は、アクション群が実行され、かつ、状態遷移表の状態が遷移後の値へ更新されることが、アクションの実行結果である旨を示している。
【0069】
次に、式(3)に示した「actions(c)[k]」についてさらに詳細に説明する。k番目の階層について、アクション群を構成するm個のステートメントをst[k]、変数を「x」、変数xの母集合を「X」とすると、「actions(c)[k]」は、
【数4】

であらわされる。
【0070】
ここで、式(4)は、m個のステートメントst[k]による操作によって変数xが変更され、かつ、st[k]によって操作されなかった変数xについてはk−1番目の階層とk番目の階層とで変化がないことが、「actions(c)[k]」として定義される旨を示している。
【0071】
そして、上記した式(2)、式(3)および式(4)から、k番目の階層における通常セルc[k]は、
【数5】

であらわされる。なお、「allVar(D)」は、状態遷移表デザインDに含まれる全ての変数であり、変数xは、「allVar(D)」に属している。
【0072】
ここで、式(5)は、k番目の階層における通常セルc[k]が、アクションの実行が可能なセル、または、アクションの実行が不可能なセルからなることをあらわしている。
【0073】
また、式(5)は、アクションの実行が可能なセルについては、アクションの実行結果が反映され、アクションの実行が不可能なセルについては、k−1番目の階層とk番目の階層とで変数xに変化がない旨を併せてあらわしている。
【0074】
次に、外部イベントに関する論理式について説明する。外部変数を「e」とすると、k番目の階層において外部変数「e」を操作する外部イベントによる影響「ext(e)[k]」は、
【数6】

であらわされる。なお、「\{e}」は、外部変数「e」を除く旨をあらわしている。
【0075】
ここで、式(6)は、k−1番目の階層と、k番目の階層とで外部変数eが変化した場合には、外部変数e以外のすべての変数xが不変であり、k−1番目の階層と、k番目の階層とで外部変数eが変化しない場合には、外部変数eを含むすべての変数xが不変である旨をあらわしている。
【0076】
なお、式(6)では、外部変数eが2値変数(Boolean)である場合を例示しているが、外部変数は2値変数には限られない。
【0077】
そして、式(5)におけるc[k]と、式(6)におけるext(e)[k]とを用いると、k番目の階層における論理式「step[k]」は、
【数7】

であらわされる。
【0078】
なお、「c∈Hi.Cnormal」は、式(7)におけるc[k]が、状態遷移表Hにおけるすべての通常セルである旨を、「e∈H.Eexternal」は、同じくext(e)[k]が、状態遷移表Hにおけるすべての外部変数である旨を、それぞれあらわしている。
【0079】
ここで、式(7)は、k番目の階層における論理式「step[k]」が、n個の状態遷移表Hiそれぞれにおける、通常セルc[k]の内部的な遷移と、外部変数eによる外部的な遷移とで定義される旨をあらわしている。
【0080】
論理式生成部14cは、このようにして、変換部14bから受け取った状態遷移情報15bを、状態階層ごとに一階論理式化する。そして、論理式生成部14cは、生成した論理式を、論理式情報15cとして記憶部15へ記憶させる。
【0081】
検査部14dは、各階層に対応する論理式を含む論理式情報15cが、検査条件情報15aに含まれる検査条件に合致するか否かを検査する処理を行う。なお、この検査部14dとしては、一般的に流通している各種SMTソルバを用いることができる。
【0082】
また、検査部14dは、各階層に対応する論理式が、検査条件に反することを検出した場合には、検査条件に反する状態およびかかる状態に至る状態の履歴を反例情報として生成する。そして、検査部14dは、生成した反例情報を、表示部12や出力部13へ出力する。
【0083】
具体的には、検査部14dは、状態遷移表H〜Hを含んだ状態遷移表デザインD、状態遷移表デザインDが満たすべき検査条件ρ、探索深度bdを用いた有限界モデル検査(BMC検査)を行う。そして、かかるBMC検査は、上記した式(7)に示した「step[k]」を用いると、
【数8】

であらわされる。
【0084】
ここで、式(8)は、0番目からbd番目までの各階層kにそれぞれ対応する論理式「step[k]」が、各階層kに対応するいずれかの反例(検査条件ρ[k]の否定)に該当することを検査する旨をあらわしている。なお、検査部14dは、式(8)を用いて検出した反例についての反例情報、すなわち、検査条件ρ[k]に反する状態およびかかる状態に至る状態の履歴を生成する。
【0085】
記憶部15は、ハードディスクドライブや不揮発性メモリといった記憶デバイスである。検査条件情報15aは、取得部14aによって取得される検査条件である。なお、かかる検査条件は、たとえば、操作者の操作に基づき、入力部11を介してモデル検査装置10へ入力される。
【0086】
状態遷移情報15bは、取得部14aによって取得される、1または複数の状態遷移表(たとえば、図4参照)に対応する情報であり、たとえば、操作者の操作に基づき、入力部11を介してモデル検査装置10へ入力される。
【0087】
論理式情報15cは、論理式生成部14cによって生成される論理式群である。具体的には、この論理式情報15cは、並列に動作する状態遷移表群における各状態階層k(0≦k≦bd)にそれぞれ対応する論理式群である(式(7)のstep[k]参照)。
【0088】
次に、モデル検査装置10を用いたモデル検査手順の例について図6を用いて説明する。図6は、モデル検査装置10を用いたモデル検査手順の例を示す図である。なお、図6には、状態遷移表(たとえば、図4参照)を生成する装置である状態遷移表生成装置20を例示しているが、この状態遷移表生成装置20の機能を含んだモデル検査装置10を構成することとしてもよい。
【0089】
図6に示すように、状態遷移表生成装置20は、操作者の設計入力を受け付けると(図6の(1)参照)、状態遷移情報を生成する。そして、状態遷移表生成装置20は、生成した状態遷移情報をモデル検査装置10へ出力する。
【0090】
かかる状態遷移情報を受け取ったモデル検査装置10は、操作者の性質(検査条件)入力を受け付けると(図6の(2)参照)、最終的に、生成した反例情報、すなわち、設計の不具合を、操作者へ報知する(図6(3)参照)。
【0091】
以下、設計の不具合を修正した設計入力(図6の(1)参照)、性質(検査条件)入力(図6の(2)参照)、設計の不具合の報知(図6の(3)参照)が繰り返されることで、最終的に、不具合のない設計を得ることが可能となる。
【0092】
次に、モデル検査装置10が実行する処理手順について図7を用いて説明する。図7は、モデル検査装置10が実行する処理手順を示すフローチャートである。図7に示すように、取得部14aが、すべての状態遷移情報15bを取得すると(ステップS101)、変換部14bは、挙動単位、すなわち、並列して存在するすべてのタスクの状態遷移情報を、状態遷移情報15bから抽出する(ステップS102)。
【0093】
つづいて、論理式生成部14cは、全変数の初期値を設定し(ステップS103)、状態階層ごとに論理式を生成する(ステップS104)。そして、検査部14dは、論理式生成部14cによって生成された論理式および取得部14aによって取得された検査条件に基づいてモデル検査を実行する(ステップS105)。
【0094】
つづいて、検査部14dは、反例解析情報を、表示部12や出力部13へ出力し(ステップS106)、処理を終了する。なお、図7では、1つの挙動単位に含まれる状態遷移表群についてモデル検査を実行する手順について示したが、複数の挙動単位についてモデル検査を行う場合には、図7に示した処理手順を、挙動単位ごとに繰り返せばよい。
【0095】
次に、図7のステップS105に示したモデル検査処理の処理手順について、図8を用いて説明する。図8は、モデル検査処理の処理手順を示すフローチャートである。図8に示すように、検査部14dが、論理式および検査条件の入力を受け付けると(ステップS201)、検査部14dは、各論理式の遷移探索において検査条件に反する状態があるか否かを検査する(ステップS202)。
【0096】
そして、検査条件に反する状態がある場合には(ステップS202,Yes)、検出した状態および検出した状態に至る状態履歴を反例として記録し(ステップS203)、ステップS202以降の処理を繰り返す。なお、かかる記録は、たとえば、記憶部15に対して行えばよい。
【0097】
ここで、検査条件に反する状態がない場合には(ステップS202,No)、処理を終了する。なお、図8では、すべての反例の検出が完了するまでモデル検査処理を繰り返す場合を例示したが、1つの反例を検出し、検出した反例を記録した時点で、モデル検査処理を終了することとしてもよい。
【0098】
上述したように、本実施例では、イベントに応じて変化する状態の遷移条件を表形式であらわした状態遷移表に対応する状態遷移情報を取得する取得部と、とりうる状態を各ノードとする木構造の階層ごとに遷移条件を一階論理式化した論理式を状態遷移情報から生成する論理式生成部とを備えるようにモデル検査装置を構成した。また、本実施例では、論理式生成部によって生成された論理式に基づいて充足性モジュロ理論による検査を実行する検査実行部を備えるようにモデル検査装置を構成した。
【0099】
このように、本実施例に係るモデル検査装置は、状態階層の階層ごとに遷移条件を一階論理式化するので、状態ごとにメモリ領域を用意する必要がない。したがって、本実施例に係るモデル検査装置によれば、メモリ状態爆発の問題を回避することができる。
【0100】
また、本実施例に係るモデル検査装置は、状態遷移表をモデル検査対象とすることとしたので、コンピュータプログラムに限らず、非同期な振る舞いモデルをもモデル検査することが可能となる。したがって、本実施例に係るモデル検査装置によれば、モデル検査の検査対象を拡大することができる。
【0101】
なお、上述した実施例では、1つの状態階層ごとに、1つの論理式を生成する場合について説明したが、生成した論理式を複数の論理式へ分割したうえで、モデル検査を実行することとしてもよい。また、1つの状態階層ごとに、複数の論理式を生成することとしてもよい。
【0102】
また、上記したモデル検査装置などの各装置は、たとえば、コンピュータで構成することができる。この場合、制御部は、CPU(Central Processing Unit)であり、記憶部は、メモリである。また、制御部の各機能は、あらかじめ作成されたプログラムを制御部へロードして実行させることによって実現することができる。
【0103】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な態様は、以上のように表しかつ記述した特定の詳細および代表的な実施例に限定されるものではない。したがって、添付の特許請求の範囲およびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【0104】
10 モデル検査装置
11 入力部
12 表示部
13 出力部
14 制御部
14a 取得部
14b 変換部
14c 論理式生成部
14d 検査部
15 記憶部
15a 検査条件情報
15b 状態遷移情報
15c 論理式情報
20 状態遷移表生成装置

【特許請求の範囲】
【請求項1】
イベントに応じて変化する状態の遷移条件を表形式であらわした状態遷移表に対応する状態遷移情報を取得する取得部と、
前記状態遷移表がとりうる前記状態を各ノードとする木構造の階層ごとに、前記遷移条件を一階論理式化した論理式を前記状態遷移情報から生成する論理式生成部と、
前記論理式生成部によって生成された前記論理式に基づいて充足性モジュロ理論による検査を実行する検査実行部と
を備えることを特徴とするモデル検査装置。
【請求項2】
前記論理式生成部は、
最初の前記階層からあらかじめ指定された前記階層までの前記階層ごとに1つの前記論理式をそれぞれ生成することを特徴とする請求項1に記載のモデル検査装置。
【請求項3】
前記状態遷移情報は、
1つの前記状態遷移表から他の前記状態遷移表へ発行される外部イベントに関する情報を含んでおり、
前記論理式生成部は、
前記外部イベントに関する情報を含んだ前記遷移条件を前記階層ごとに一階論理式化した前記論理式を生成することを特徴とする請求項1または2に記載のモデル検査装置。
【請求項4】
前記検査実行部は、
前記論理式が満たすべき性質を示す検査条件に基づいて前記検査を実行することを特徴とする請求項1、2または3に記載のモデル検査装置。
【請求項5】
イベントに応じて変化する状態の遷移条件を表形式であらわした状態遷移表に対応する状態遷移情報を取得する取得工程と、
前記状態遷移表がとりうる前記状態を各ノードとする木構造の階層ごとに、前記遷移条件を一階論理式化した論理式を前記状態遷移情報から生成する論理式生成工程と、
前記論理式生成工程によって生成された前記論理式に基づいて充足性モジュロ理論による検査を実行する検査実行工程と
を含むことを特徴とするモデル検査方法。
【請求項6】
イベントに応じて変化する状態の遷移条件を表形式であらわした状態遷移表に対応する状態遷移情報を取得する取得手順と、
前記状態遷移表がとりうる前記状態を各ノードとする木構造の階層ごとに、前記遷移条件を一階論理式化した論理式を前記状態遷移情報から生成する論理式生成手順と、
前記論理式生成手順によって生成された前記論理式に基づいて充足性モジュロ理論による検査を実行する検査実行手順と
をコンピュータに実行させることを特徴とするモデル検査プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−155517(P2012−155517A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−13855(P2011−13855)
【出願日】平成23年1月26日(2011.1.26)
【出願人】(504145342)国立大学法人九州大学 (960)
【出願人】(598088871)キャッツ株式会社 (9)
【出願人】(391043332)財団法人福岡県産業・科学技術振興財団 (53)
【Fターム(参考)】