(57)【要約】【課題】  設計記述に対するプロパティ記述のカバレッジを早期かつ容易に測定できるようにする。【解決手段】  設計記述データから設計オートマトンを抽出する設計オートマトン抽出部と、設計記述データに対応するプロパティ記述データからプロパティオートマトンを抽出するプロパティオートマトン抽出部と、設計オートマトンの全状態数を計数するとともに、設計オートマトンにおける全状態のうちプロパティオートマトンに合致する合致状態を検出し、その合致状態数を計数する合致状態検出部と、合致状態数と設計オートマトンの全状態数との比を求めることにより、設計記述データに対してプロパティ記述データがどの程度対応しているのかの度合いを表すカバレッジを算出するカバレッジ算出部とを備える。【選択図】    図１
2008269585.tif 000002
【特許請求の範囲】
【請求項１】
設計記述データから、その状態遷移を表す設計オートマトンを抽出する設計オートマトン抽出部と、
前記設計記述データに対応するプロパティ記述データから、その状態遷移を表すプロパティオートマトンを抽出するプロパティオートマトン抽出部と、
前記設計オートマトンの全状態数を計数するとともに、前記設計オートマトンから前記プロパティオートマトンへのオートマトン上の模倣関係の有無により、前記設計オートマトンにおける全状態のうち前記プロパティオートマトンに合致する合致状態を検出し、その合致状態数を計数する合致状態検出部と、
前記合致状態数と前記設計オートマトンの全状態数との比を求めることにより、前記設計記述データに対して前記プロパティ記述データがどの程度対応しているのかの度合いを表す第１のカバレッジを算出するカバレッジ算出部と、を具備するプロパティ記述のカバレッジ測定装置。
【請求項２】
前記合致状態検出部は、前記プロパティオートマトン上の同じ状態を模倣する、前記設計オートマトン上の任意の２状態の間の同値関係に基づき、前記設計オートマトン中の合致状態を同値類に分類し、その同値類数を計数し、
前記カバレッジ算出部は、前記同値類数と前記合致状態数との比を求めることにより第２のカバレッジを算出する請求項１に記載の装置。
【請求項３】
前記カバレッジ算出部は、前記第１のカバレッジと前記第２のカバレッジとの組からなる第３のカバレッジを出力する請求項２に記載の装置。
【請求項４】
前記カバレッジ算出部は、前記同値類数と前記全状態数との比を求めることにより第４のカバレッジを算出する請求項２に記載の装置。
【請求項５】
コンピュータに、
設計記述データから、その状態遷移を表す設計オートマトンを抽出する設計オートマトン抽出手順と、
前記設計記述データに対応するプロパティ記述データから、その状態遷移を表すプロパティオートマトンを抽出するプロパティオートマトン抽出手順と、
前記設計オートマトンの全状態数を計数するとともに、前記設計オートマトンから前記プロパティオートマトンへのオートマトン上の模倣関係の有無により、前記設計オートマトンにおける全状態のうち前記プロパティオートマトンに合致する合致状態を検出し、その合致状態数を計数する合致状態検出手順と、
前記合致状態数と前記設計オートマトンの全状態数との比を求めることにより、前記設計記述データに対してプロパティ記述データがどの程度対応しているのかの度合いを表す第１のカバレッジを算出するカバレッジ算出手順と、を実行させるためのプロパティ記述のカバレッジ測定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩ設計など電子回路を主とするシステムの設計に関し、特にプロパティ記述言語を利用した設計記述の検証に関する。
【背景技術】
【０００２】
電子回路を主とするシステムの設計において、時相論理や正規表現をベースとしたプロパティ記述言語を使ってプロパティ（対象の設計について守られるべき制約）を記述し、そのプロパティ記述を足がかりにして、設計記述の検証を行う方法が盛んに用いられている。
【０００３】
プロパティ記述は、一般に設計の一部について制約を付与するもので、ほとんどの場合は設計記述全体に対して付与されることはない。また、プロパティ記述を使って設計されたシステムの挙動を全て網羅することは、一般的に不可能である。
【０００４】
一方、プロパティ記述を利用して設計記述の検査を行った場合、プロパティ記述が付与された部分の挙動については検査が可能であるが、付与されていない部分の挙動は検査不可能となる。すなわち、プロパティ記述を用いた検査を通過した設計記述の内部は、（１）検査に合格した部分、（２）検査に落第した部分、（３）検査されなかった部分（非活性な記述）、の３種類に分かれることとなる。特に３番目の非活性な記述については、上述のプロパティ記述の特性から混入は不可避であるが、検査に合格した部分との区別がつかないため、非活性記述の存在は、プロパティ記述を用いた検査では本質的な問題である。
【０００５】
特許文献１、２には、テストやシミュレーション等の検査後にテストカバレッジを測定し、これにより得られたカバレッジデータをもとに検査で非活性であった設計のコードを抽出する手法について記載されている。しかし、測定によりカバレッジデータが得られるのはテストやシミュレーション等の設計の後工程であり、またテストによる検査には時間を要する。したがって、設計記述に付与されたプロパティ記述がどれだけ有効であるかは、設計の後工程にならないと推定することができず、推定するにしても、多大な時間を要するという問題点がある。また、プロパティ記述以外に、入力となるテストベンチの与え方に起因して更なる非活性な記述が生まれてしまう問題もある。
【０００６】
特許文献３には、モデル検査と同時に非活性記述を抽出することが記載されている。しかし、この特許文献３に記載された手法はモデルそのものの検査自体に極めて時間がかかるものであり、モデルを構築するための作業工数に少なくとも数日程度は必要である。
【特許文献１】特開２００６−２２１４７３公報
【特許文献２】特開２００２−０９９５８４公報
【特許文献３】特開２００６−１０６８６５公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、設計記述に対するプロパティ記述のカバレッジを早期かつ容易に測定することのできるカバレッジ測定装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一観点に係わるプロパティ記述のカバレッジ測定装置は、設計記述データから、その状態遷移を表す設計オートマトンを抽出する設計オートマトン抽出部と、前記設計記述データに対応するプロパティ記述データから、その状態遷移を表すプロパティオートマトンを抽出するプロパティオートマトン抽出部と、前記設計オートマトンの全状態数を計数するとともに、前記設計オートマトンから前記プロパティオートマトンへのオートマトン上の模倣関係の有無により、前記設計オートマトンにおける全状態のうち前記プロパティオートマトンに合致する合致状態を検出し、その合致状態数を計数する合致状態検出部と、前記合致状態数と前記設計オートマトンの全状態数との比を求めることにより、前記設計記述データに対して前記プロパティ記述データがどの程度対応しているのかの度合いを表す第１のカバレッジを算出するカバレッジ算出部と、を具備する。
【発明の効果】
【０００９】
本発明によれば、テストなどの多大な手間と時間を要する検査を経ることなく、設計記述に対するプロパティ記述のカバレッジを早期かつ容易に測定することができる。したがって、与えられたプロパティ記述が設計記述の検証にどの程度有効かを迅速に判断できるようになり、設計の信頼性を高めるための指標としてプロパティ記述のカバレッジを有効に活用できる。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の一実施形態に係るプロパティ記述のカバレッジ測定装置を示すブロック図である。
【００１１】
本装置は、設計記述２、及び設計記述２に対応するプロパティ記述３を入力する入力部１と、設計記述１から、その状態遷移を表すオートマトンの記述（以下、「設計オートマトン」という。）を抽出する設計オートマトン抽出部４と、プロパティ記述３から、その状態遷移を表すオートマトンの記述（以下、「プロパティオートマトン」という。）を抽出するプロパティオートマトン抽出部５と、設計オートマトン６における全状態のうちプロパティオートマトン７に合致する状態（以下、「合致状態」という。）を検出する合致状態検出部８と、設計オートマトン６の全状態及び合致状態検出部８により検出された合致状態等を記録する状態記録部９と、状態記録部９に記録された情報１０を用いてカバレッジ１２を算出するカバレッジ算出部１１とを具備する。カバレッジ１２は、設計記述２に対してプロパティ記述３がどの程度対応しているのかの度合いを表す指標である。特に本実施形態において、合致状態検出部８はオートマトン上の模倣関係を利用して合致状態の検出を行う。また合致状態検出部８は、模倣関係を利用し、設計オートマトン６中の合致状態を同値類に分割する。
【００１２】
本装置は、汎用的なコンピュータのハードウェア資源を用いて情報処理を行うソフトウェアとして実現することができる。
【００１３】
以上のように構成された本実施形態に係るカバレッジ測定装置の動作を説明する。
【００１４】
まず、入力部１を通じて、設計記述２及びプロパティ記述３が本装置に入力される。例えば設計記述２及びプロパティ記述３は電子的なファイルの形態であり、入力部１はそのようなファイルを開き、設計記述２のデータ及びプロパティ記述のデータ３を読み出す。
【００１５】
次に、設計オートマトン抽出部４は、入力された設計記述２のデータから、その制御フローを示すラベルつきの設計オートマトン６を抽出する。ここでは、設計記述２内の変数の変化を解析する手法により設計オートマトン６を得るものとする。設計オートマトン６の各遷移関係におけるラベルには、その遷移中に行われる信号への代入の列が記載される。
【００１６】
状態間の接続を作成するときは、状態遷移によって変化する変数（信号）を実際に変化させるような代入関係の列がラベルとして与えられる。
【００１７】
図２は、特に設計記述がＶｅｒｉｌｏｇ  ＨＤＬ（ハードウェア記述言語）によって記述されている場合の、設計記述から設計オートマトンを抽出する処理の手順を示すフローチャートである。
【００１８】
設計記述２は、例えばＶｅｒｉｌｏｇ  ＨＤＬで記述されているものとする。その具体例は、後述する図７に示す。
【００１９】
まず、設計記述２において値が代入されている信号を抽出する（ステップＳ１）。次に、全ての信号が取り得る値の組合せを作成し、それぞれを「状態」とする（ステップＳ２）。次に、未処理のａｌｗａｙｓブロックがあるか否かを判定する（ステップＳ３）。未処理のａｌｗａｙｓブロックが存在する場合（ステップＳ３＝＝ＹＥＳ）に、この未処理のａｌｗａｙｓブロックはステップＳ４〜ステップＳ１０に従って処理される。
【００２０】
ステップＳ４において、未処理のａｌｗａｙｓブロックを１つ取得する。このａｌｗａｙｓブロックについて、未処理のｃａｓｅ文があるならばそのｃａｓｅ文の条件節と対応する代入文とを組にする（ステップＳ５，Ｓ６）。また、未処理のｉｆ文があるならばｉｆ文の条件節とｔｈｅｎ節にある各代入文との組を作り、ｉｆ文の条件節の否定とｅｌｓｅ節にある各代入文との組を作る（ステップＳ７，Ｓ８，Ｓ９）さらに、恒真値（ｔｒｕｅ）と各代入文との組を作る（ステップＳ１０）。
【００２１】
未処理のａｌｗａｙｓブロックが全て処理されたならば（ステップＳ３＝＝ＮＯ）、ａｌｗａｙｓ文同士で代入文を１つずつ取り出し、条件節と代入文の組を合成する（ステップＳ１１）。以下、ステップＳ１２〜ステップＳ１６の処理により、条件節と代入文の組を遷移に変換する。
【００２２】
ステップＳ１３では、条件節と代入文の組を１つ抽出する。この抽出された条件節に合致する状態があるか否かをステップＳ１４において判定する。抽出された条件節に合致する状態がある場合（ステップＳ１４＝＝ＹＥＳ）、この合致する状態を遷移元とし、代入文を遷移先とする「遷移」を作成する（ステップＳ１５）。ステップＳ１３において抽出された組について、条件節に合致する状態が存在しない場合（ステップＳ１４＝＝ＮＯ）には、ステップＳ１２に戻る。ステップＳ１５において遷移が作成されたならば、ステップＳ１６において、代入文で得られる信号の状態を遷移先とし、ステップＳ１２に戻る。
【００２３】
最後に、１クロック内で処理される直列の複数遷移を１つにまとめ、設計オートマトン抽出の処理を終了する（ステップＳ１７）。
【００２４】
以上の処理によって得られた設計オートマトン６は状態記録部９に記録される。状態記録部９の内部においては設計オートマトン６中の全状態を列挙したリストが作成される。
【００２５】
一方、プロパティオートマトン抽出部５はプロパティ記述３のデータからプロパティオートマトン７を抽出する。プロパティ記述３は設計記述２に対応している。ここでは、ある変数の値、括弧「（）」、０回以上の繰り返し「＊」、１回以上の繰り返し「＋」の４つの要素から構成される正規表現でプロパティを表現することとする。尚、プロパティ記述３を時相論理により記述してもよい。時相論理で記述された場合、Ｅ．Ｃｌａｒｋｅ  Ｊｒ  「Ｍｏｄｅｌ  Ｃｈｅｃｋｉｎｇ」（ＩＳＢＮ：９７８−０２６２０３２７０４）の４．２節や６．７節に示されるような、タブロー法と呼ばれるアルゴリズムなどを応用して、オートマトンに変換する事ができる。
【００２６】
プロパティ記述３は例えば次のような形式の時相論理式、すなわちＧ（（ｖ＝＝ａ０→Ｘ  ｖ＝＝ｂ０）∧（ｖ＝＝ａ１→Ｘ  ｖ＝＝ｂ１）∧．．．）によって記述することができる。これは、１つの信号に対して、“Ｘ”（次のクロック）と“→”（含意）を用いて値の定義を行うものである。時相論理による論理式を用いる場合のオートマトンへの変換方法は、上記のようにタブロー法を用いる方法があるが、上記のような形式でプロパティが記述されている場合の、該プロパティ記述のオートマトンへの変換方法については後述する。
【００２７】
図３は上述の記法の定義に従って、正規表現で記述されたプロパティ記述からプロパティオートマトンを抽出する処理の手順を示すフローチャートである。
【００２８】
まず、プロパティ記述３を表す文字列の先頭が「（Ｓ）＋」の形式かどうかを判定する（ステップＳ２０）。「（Ｓ）＋」の形式であれば、ステップＳ２１において先頭を「（Ｓ）（Ｓ）＊」の形式に変更し、ステップＳ２５に進む。先頭が「（Ｓ）＋」の形式でないならば、ステップＳ２２に進む。
【００２９】
ステップＳ２２では、プロパティ記述３を表す文字列の先頭が「（Ｓ）＊」の形式かどうかを判定する。先頭が「（Ｓ）＊」の形式であるならば、Ｓに対してオートマトン抽出を行う（ステップＳ２３）。この処理は再帰的に行われる。Ｓについてのオートマトン抽出を終えたら、ステップＳ２４においてＳの終端からＳの始点への遷移を作成し、ステップＳ２６に進む。ステップＳ２２において、先頭が「（Ｓ）＊」の形式でないと判定されたならば、Ｓを持つ「状態」を作成する（ステップＳ２５）。
【００３０】
次に、ステップＳ２６において、後続があるか否かを判定する。後続が無いならばプロパティオートマトン抽出の処理を終える。後続がある場合、この後続に対してオートマトン抽出を行う（ステップＳ２７）。ここでの処理も再帰的に行われる。後続についてのオートマトン抽出を終えたら、先頭の終端から後続の始端への「遷移」を作成し（ステップＳ２８）、プロパティオートマトン抽出の処理を終了する。
【００３１】
設計オートマトン６とプロパティオートマトン７が得られた後、これらは合致状態検出部８に入力される。合致状態検出部８は合致状態の検出を行う。上述したように、合致状態検出部８は、合致状態の検出にオートマトン上の２状態の模倣関係を利用する。ここで、模倣関係（弱い模倣関係）とは次のように定義される。すなわち、「オートマトン上の２状態ｐ，ｑが模倣関係にある（ｑがｐを模倣する）」とは、「ｐから遷移する任意の状態ｐ’に対応して、ｐ→ｐ’の遷移がイベント列αで与えられるとき、ｑにも同様に、ｑからαで遷移する状態ｑ’が存在する。」というものである。
【００３２】
このような模倣関係の定義に沿って、合致状態検出部８は設計オートマトン６上の各状態が模倣するような、プロパティオートマトン７上の状態を合致状態として検出する。このとき、プロパティオートマトン７上の同じ状態を模倣する、設計オートマトン６上の任意の２状態の間に同値関係が成り立っているものとする。この同値関係に基づき、設計オートマトン６中の合致状態を同値類に分類できる。
【００３３】
図４は、模倣関係を用いた合致状態を抽出する処理の手順を示すフローチャートである。
【００３４】
まず、自分自身を遷移元とするような遷移が存在しない状態（無遷移状態）があるかどうかを設計オートマトン６内で探索する（ステップＳ３０）。もしそのような状態が見つかれば、その状態に対して特別なラベルεを持つ、自分自身への遷移（ε遷移）を付加する（ステップＳ３１）。
【００３５】
次に、設計オートマトン６とプロパティオートマトン７のそれぞれについて、遷移関係とラベルの組を抽出する。具体的には、（遷移元状態，遷移先状態，ラベル）の３つ組からなるデータの集合（遷移データ集合）を得る（ステップＳ３２）。
【００３６】
次に、設計オートマトン６とプロパティオートマトン７のそれぞれの遷移データ集合の組合せを計算する（ステップＳ３３）。このとき組み合わせることができるのは、ラベルが等しいような設計オートマトン６の遷移データ（設計遷移データ）と、プロパティオートマトン７の遷移データ（プロパティ遷移データ）である。ここでは、ラベルが等しいかどうかは、設計オートマトン６のラベルで定義された代入関係が、プロパティオートマトン７のラベルで定義された代入関係を満たすかどうか（前者が後者の代入関係を包含しているか）で判別する。もしくは、先に定義したεのラベルについては、もう一方のラベルがどのようなラベルに対しても等しいと判別する。
【００３７】
そして、得られた設計遷移データとプロパティ遷移データの組（遷移データペア）の集合を基に、ステップＳ３４〜Ｓ３７の処理により合致状態集合を計算する。この集合は、実際には、状態記録部９に記録される。合致状態集合の計算のために、例えば図５に示すような仮合致状態木を作成する（ステップＳ３５）。この仮合致状態木作成の処理は再帰的に行われる。
【００３８】
図６は、仮合致状態木作成の処理手順を示すフローチャートである。
【００３９】
まず、遷移データペアのある一つ組を適当に選び出し、仮合致状態木の根ノードに追加する（ステップＳ４０）。また、初めて仮合致状態を作成する最初の時点では、合致状態集合は空にしておく。
【００４０】
次に、リストに追加された組における設計遷移データに記載された、遷移先状態を遷移元状態とする設計遷移データを探し出し、それを含む遷移データペアを全て抽出して、それらの遷移データペアを遷移データペア集合から削除しつつ、根ノードの子ノードとして記録する（ステップＳ４１〜Ｓ４４）。以下、順次に、各子ノードに対しても同様の処理をし、子ノードを追加していく（ステップＳ４５〜Ｓ４８）。この際、既に仮合致状態木に登録されている遷移データペアが再度現れた場合、又は合致状態集合に含まれる状態が設計遷移データの遷移先状態に現れた場合には、そのノードは葉として、それ以上そのノードからの枝は伸ばさない。葉となったノードには葉としての印をつけておく。
【００４１】
こうして、全ての枝を子ノードの方向へたどった先が葉ノードになった時点で、仮合致状態木作成は成功とみなされ（ステップＳ４５）、登録されている全ての遷移データペアに含まれる設計オートマトン６の遷移元状態は合致状態となる。
【００４２】
図４のフローチャートの説明に戻る。以上の処理により仮合致状態木の作成が成功となったら（ステップＳ３６＝＝ＹＥＳ）、これら合致状態を合致状態集合に登録する（ステップＳ３７）。この登録処理は、実際には状態記録部９において、既に記録されている設計オートマトン６の状態にマーキングをすることにより行うものとする。ここでいう「マーキング」とは、各状態に、遷移データペアにて対応していたプロパティオートマトン７の遷移元状態名をタグとして付加する処理とする。ただし、既に同じタグがつけられている場合は、タグ付けの処理を行わない。付加されたタグはソートされ、同じタグの違う順序のタグのつき方がないように行われる。
【００４３】
一方、図６のフローチャートにおいて、全ての枝をたどった先が葉ノードにならないうちに、子ノードに追加すべき遷移データペアの集合が空になった場合は、仮合致状態木作成は失敗とみなされ、合致状態集合には登録しない（ステップＳ４３）。
【００４４】
図５の仮合致状態木は、まだ完成されていない木を示したものである。この図において、下線が引かれているノードが葉ノードを意味している。この木の中で、「（ｒ，ｐ，ｂ）−（ｘ，ｙ，ｂ）」がまだ葉ノードではなく、このノードを選択して処理が続行されることになる。
【００４５】
木の作成が終わった後、遷移データペアの集合が空になっていたら、合致状態抽出処理は終了する（図４のステップＳ３４）。まだ遷移データペアの集合が空でないならば、残されている遷移データペアの１つを根ノードとして、新たに仮合致状態作成木の作成を始める。
【００４６】
こうして得られた合致状態と元の全ての状態を状態記録部９にてカウント（計数）し、これにより合致状態数と全状態数が得られる。
【００４７】
また、以下で説明するカバレッジ１２の内容に応じて、同値類数を計算する処理を行う。同値類かどうかは、上述の処理が終わった後の状態記録部９の各状態に、同じタグの組合せが付けられているか否かによって判定することができる。ここでの処理は次のとおりである。まず、タグがついた状態を１つ取り出し、そのタグの組合せをタグ組合せリストに記録する。その後、次々にタグがついた状態を１つ取り出し、もしタグ組合せリストに同じタグの組合せが記録されていなければ、新たにそのタグの組合せを追加する。一方、同じタグの組み合わせが既に記録されているならば、そのタグについては特に処理を行わない。以上の処理を、全てのタグつき状態に対して行う。
【００４８】
以上の処理を経て、状態記録部９は「全状態数」、「合致状態数」、「同値類数」を含む情報を出力する。この情報を元に、カバレッジ算出部１１はプロパティ記述３のカバレッジ１２を算出する。カバレッジ１２は、具体的には例えば次の４種類の算出方法によって算出することが考えられる。
【００４９】
［カバレッジ１］：（合致状態数）／（全状態数）  
［カバレッジ２］：（同値類数）／（合致状態数）  
［カバレッジ３］：［カバレッジ１］と［カバレッジ２］の値の組  
［カバレッジ４］：（同値類数）／（全状態数）  
上記［カバレッジ１］は、単純に、プロパティ記述３の要件を満たし得る設計オートマトン６上の状態が全体のどれだけを占めているか、という割合である。この割合が低いほど、プロパティ記述３の要件を満たさないか、あるいはプロパティ記述３には無関係の記述（非活性になりうる記述）が多いということになる。
【００５０】
上記［カバレッジ２］は、［カバレッジ１］の補強となる指標である。同じ数の合致状態を持つようなプロパティ記述３であっても、プロパティ記述３の内容如何で、表現されている制約の精密度に差がある。この差は同値類数に現れる。制約が精密でないプロパティ記述３に対しては同値類数が少なく、精密なプロパティ記述３では同値類数が多くなる。
【００５１】
［カバレッジ３］及び［カバレッジ４］は、いずれも［カバレッジ１］と［カバレッジ２］の組合せに係る。［カバレッジ３］は、上記２つのカバレッジをそのまま組にするもので、それぞれの値が高いほど、プロパティ記述３のカバレッジと精度が高まる。［カバレッジ４］は２つの指標の両方の特性を併せ持つスカラー値である。この値が低い場合は、プロパティ記述３のカバレッジが低いか、あるいは精密度が低いかであることが予想できる。
【００５２】
（具体例）
次に具体例として、図７に示すＶｅｒｉｌｏｇ  ＨＤＬ（ハードウェア記述言語）で記述された、ある回路の設計記述２に対し、図８に示すようなプロパティ記述３が付与されているときの、カバレッジの算出例を説明する。図８のプロパティ記述３は図７の設計記述２に対応しており、正規表現で記述されたものである。ちなみに、図８の記述は、「変数ａが１クロック以上０になり続け、次にａが１クロック以上１になり続ける。以上の状態が任意回繰り返される。」という意味である。
【００５３】
図７のＨＤＬ記述から、設計オートマトン抽出部４を通じて図９に示すような設計オートマトン６を得た。状態の中の値は、３桁目がｒｅｓｅｔの値、２桁目がａの値、１桁目がｂの値を示している。但し、図９において、ｒｅｓｅｔへの代入は、見易さのためあえて省いてある。そのため、同じラベルが、同じ状態から同じ状態へ移る複数の遷移に付与されているように見えるが、ｒｅｓｅｔへの代入を加味すれば、実際には別のラベルである。同様に、図８のプロパティ記述から、プロパティオートマトン抽出部５を通じて図１０に示すようなプロパティオートマトン７を得た。
【００５４】
これらから、合致状態検出部８を通じて、次に示す４組の遷移データペアを得た。
【００５５】
（０００，００１，［ａ＜＝０，ｂ＜＝１］）−（ｘ，ｘ，ａ＜＝０）
（００１，０１１，［ａ＜＝１，ｂ＜＝１］）−（ｘ，ｙ，ａ＜＝１）
（０１１，０１０，［ａ＜＝１，ｂ＜＝０］）−（ｙ，ｙ，ａ＜＝１）
（０１０，０００，［ａ＜＝０，ｂ＜＝０］）−（ｙ，ｘ，ａ＜＝０）
合致状態集合は｛０００，００１，０１１，０１０｝である。同値類は、｛０００，００１｝（ｘを模倣する状態）と｛０１０，０１１｝（ｙを模倣する状態）の２つである。
【００５６】
以上から、状態記録部９を通じ、全状態数の値として「６」、合致状態数の値として「４」、同値類数の値として「２」を得た。これらの値を元に、カバレッジ算出部１１を通じて、図１１に示すようなカバレッジを得た。
【００５７】
次に、プロパティ記述３が次のような形式の時相論理式、すなわちＧ（（ｖ＝＝ａ０→Ｘ  ｖ＝＝ｂ０）∧（ｖ＝＝ａ１→Ｘ  ｖ＝＝ｂ１）∧．．．）によって記述される場合の、該プロパティ記述３のオートマトンへの変換方法について説明する。上述したように、この時相論理式は、１つの信号に対して、“Ｘ”（次のクロック）と“→”（含意）を用いて値の定義を行うものである。このようなプロパティをオートマトンに変換するための、プロパティオートマトン抽出部５による処理手順を図１２のフローチャートに示す。すべての変数について以下のステップＳ２〜Ｓ９で示される処理を繰り返す。
【００５８】
（ステップＳ２）ｖが論理式で指定された値を取るような状態を生成する。例えばプロパティ記述がＧ（（ｖ＝＝ａ０→Ｘ  ｖ＝＝ｂ０）∧（ｖ＝＝ａ１→Ｘ  ｖ＝＝ｂ１）で与えられており、かつａ０，ｂ０，ａ１，ｂ１がいずれも違う値である場合には、（ｖ＝＝ａ０），（ｖ＝＝ｂ０），（ｖ＝＝ａ１），（ｖ＝＝ｂ１）という４つの状態が生成される。
【００５９】
（ステップＳ３）選択されたｖが論理式で指定された値を取らない場合の状態（これを「ダミー状態」という。）を追加する。上記の例では、（ｖ！＝ａ０）∧（ｖ０！＝ｂ０）という１つのダミー状態が生成される。
【００６０】
以下、すべての状態について以下のステップＳ４〜Ｓ９で示される処理を繰り返す。
【００６１】
（ステップＳ４）状態を１つ選択し、「ｓ」とする。
【００６２】
（ステップＳ５）選択された状態ｓはダミー状態であるかを判定する。該状態ｓがダミー状態であるならば処理はステップＳ６に進み、ダミー状態ではない場合には処理はステップＳ７に進む。
【００６３】
（ステップＳ６）選択された状態ｓから、該状態ｓ自身を含む全ての状態への遷移を作成する。
【００６４】
（ステップＳ７）選択された状態ｓは含意記号の左辺であるかどうかを判定する。該状態ｓが含意記号の左辺であるならば処理はステップＳ８に進み、含意記号の左辺ではない場合には処理はステップＳ６に進む。
【００６５】
（ステップＳ８）状態ｓから含意記号の右辺の状態への遷移を作成する。
【００６６】
（ステップＳ９）未処理の状態が無くなるまでステップＳ４〜Ｓ９を繰り返す。
【００６７】
合致状態検出部８によって遷移データペアを得る処理は、図４を参照して既に説明したものと基本的には同じである。ただし、ここで重要なことは、合致状態検出部８および状態記録部９の処理のうち、図４のフローチャートのステップＳ３７において登録される合致状態としては、図１２の処理によって判定されたダミー状態に合致するものは対象外とすることである。つまりダミー状態に合致する合致状態は登録しない。
【００６８】
（別の具体例）
別の具体例として、３進カウンタ回路の例を示す。
【００６９】
図１３はその回路に対する設計記述２として、Ｖｅｒｉｌｏｇ  ＨＤＬで記述した一部である。ｒｅｓｅｔが０でない限り、クロック信号が入力される毎に信号ｃｎｔの値が０，１，２と１ずつ加算され、２の次は０となってまた同じ動作を繰り返す。ｒｅｓｅｔが１となる場合は次のクロックでｃｎｔが０になる。この設計記述に対し、図１４に示すようなプロパティ記述３が付与されているとする。このプロパティ記述３は図１３に対応しており、時相論理で記述されたもので、「信号ｃｎｔが２（＝２’ｂ１０）になったら、次のクロックで信号ｃｎｔは必ず０（＝２’ｂ００）になる」を意味する。
【００７０】
図１３の設計記述から、設計オートマトン抽出部４を通じて図１５に示すような設計オートマトン６を得た。状態の中の値は信号ｃｎｔの値を示す。また図１４のプロパティ記述から、プロパティオートマトン抽出部５を通じて図１６に示すようなプロパティオートマトン７を得た。これらから、合致状態検出部８を通じて、次に示す５組の遷移データペアを得た。
【００７１】
（０，１，ｃｌｋ）−（０，Ｎ，−）
（１，２，ｃｌｋ）−（Ｎ，２，−）
（２，０，ｃｌｋ  ｏｒ  ｒｅｓｅｔ）−（２，０，−）
（０，０，ｃｌｋ  ｏｒ  ｒｅｓｅｔ）−（０，０，−）
（１，０，ｃｌｋ  ｏｒ  ｒｅｓｅｔ）−（Ｎ，０，−）
合致状態集合は、ダミー状態に合致する状態１を除いた２状態の集合｛０，２｝である。同値類は、｛０｝（プロパティオートマトンの“０”が模倣する状態）と｛２｝（プロパティオートマトンの“２”が模倣する状態）の２つである。
【００７２】
以上から、状態記録部９を通じ、全状態数の値として「３」、合致状態数の値として「２」、同値類数の値として「２」を得た。これらの値を元に、カバレッジ算出部１１を通じて、図１７に示すようなカバレッジを得た。
【００７３】
以上説明した実施形態によれば、テストなどの多大な手間と時間を要する検査を経ることなく、設計記述２に対するプロパティ記述３のカバレッジ１２を早期かつ容易に測定することができる。したがって、与えられたプロパティ記述３が設計記述２の検証にどの程度有効かを迅速に判断できるようになり、設計の信頼性を高めるための指標としてプロパティ記述３のカバレッジ１２を有効に活用できる。
【００７４】
以上の実施形態では、プロパティは一つであること前提として説明したが、プロパティが複数ある場合に、予め全てのプロパティオートマトンの直積を作成し、各プロパティから得られる同値類分割を重ね合わせて、細分化するように構成してもよい。また、模倣性判定のアルゴリズムについて、様々な効率的アルゴリズムが知られているので、それらを適宜利用してもよい。さらに、仮合致状態リストはツリー構造で処理するのが効率的である。
【００７５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施形態に係るプロパティ記述のカバレッジ測定装置を示すブロック図
【図２】設計記述から設計オートマトンを抽出する処理の手順を示すフローチャート
【図３】プロパティ記述からプロパティオートマトンを抽出する処理の手順を示すフローチャート
【図４】模倣関係を用いた合致状態を抽出する処理の手順を示すフローチャート
【図５】仮合致状態木の一例を示す図
【図６】仮合致状態木作成の処理手順を示すフローチャート
【図７】Ｖｅｒｉｌｏｇ  ＨＤＬによる設計記述の具体例を示す図
【図８】正規表現によるプロパティ記述の具体例を示す図
【図９】設計オートマトンの具体例を示す図
【図１０】プロパティオートマトンの具体例を示す図
【図１１】カバレッジ算出結果を示す図
【図１２】プロパティ記述からオートマトンを抽出する処理の手順を示すフローチャート
【図１３】Ｖｅｒｉｌｏｇ  ＨＤＬによる設計記述の一部の具体例を示す図
【図１４】時相論理によるプロパティ記述の具体例を示す図
【図１５】設計オートマトンの具体例を示す図
【図１６】プロパティオートマトンの具体例を示す図
【図１７】カバレッジ算出結果を示す図
【符号の説明】
【００７７】
１…入力部；
２…設計記述；
３…プロパティ記述；
４…設計オートマトン抽出部；
５…プロパティオートマトン抽出部；
６…設計オートマトン；
７…プロパティオートマトン；
８…合致状態検出部；
９…状態記録部；
１１…カバレッジ算出部；
１２…カバレッジ
【図１】
2008269585.tif 000003
【図２】
2008269585.tif 000004
【図３】
2008269585.tif 000005
【図４】
2008269585.tif 000006
【図５】
2008269585.tif 000007
【図６】
2008269585.tif 000008
【図７】
2008269585.tif 000009
【図８】
2008269585.tif 000010
【図９】
2008269585.tif 000011
【図１０】
2008269585.tif 000012
【図１１】
2008269585.tif 000013
【図１２】
2008269585.tif 000014
【図１３】
2008269585.tif 000015
【図１４】
2008269585.tif 000016
【図１５】
2008269585.tif 000017
【図１６】
2008269585.tif 000018
【図１７】
2008269585.tif 000019