(57)【要約】【課題】ハードウェア検証の漏れを防ぎ、バグのないハードウェア設計を実現させること。【解決手段】検証支援装置１００は、まず、検証対象回路のハードウェア記述１０１の中に３つ以上の条件式を含み、かつ、成立条件に排他性があると設定された条件式の組み合わせがあるような条件分岐記述の場合、排他性があると設定された条件式同士の階層関係を解除する。そして、検証支援装置１００は、解除された各条件式について、それぞれ独立した条件分岐記述を作成する。たとえば、条件式Ｂ，Ｃに排他性があると設定されていれば、検証支援装置１００は、条件式Ｂと、条件式Ｃとにそれぞれ独立した条件分岐記述を作成する。その後検証支援装置１００は、作成された条件分岐記述ごとに、アサーション情報１２１を生成する。【選択図】図１
2011108116.tif 000002
【特許請求の範囲】
【請求項１】
検証対象回路のハードウェア記述の中から条件分岐処理を表す条件分岐記述を抽出する記述抽出手順、
前記記述抽出手順によって抽出された条件分岐記述の中に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあるか否かを判断する判断手順、
前記判断手順によって、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあると判断された場合、前記条件分岐記述の中から前記排他性があると設定された条件式の組み合わせを抽出する条件式抽出手順、
前記条件式抽出手順によって抽出された条件式の組み合わせの各条件式を抽出し、当該抽出された各条件式について、前記組み合わせ以外の条件式と階層関係をなす条件分岐記述を前記ハードウェア記述の記述順序にしたがって作成する作成手順、
前記作成手順によって作成された各条件分岐記述において、指定した条件の成立を検証するアサーションを生成する生成手順、
前記生成手順によって生成された各アサーションを前記検証対象回路のアサーション情報として出力する出力手順、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項２】
前記生成手順は、
前記指定された条件として、前記作成手順によって作成された各条件分岐記述の中に含まれている各条件式が、指定された優先度であることを検証するアサーションを生成することを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記コンピュータにおいて、さらに、
前記判断手順によって、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがないと判断された場合、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述を特定する特定手順を実行させ、
前記条件式抽出手順は、
前記特定手順によって特定された条件分岐記述の中から、前記指定した条件が成立する可能性のある条件式の組み合わせを抽出し、
前記生成手順は、
前記条件式抽出手順によって抽出された条件式の組み合わせを含む条件分岐記述において前記指定した条件の成立を検証するアサーションを生成することを特徴とする請求項１または２に記載の検証支援プログラム。
【請求項４】
前記コンピュータにおいて、さらに、
前記ハードウェア記述を、前記検証対象回路内の制御の流れを表すＣＦＧ（Ｃｏｎｔｒｏｌ  Ｆｌｏｗ  Ｇｒａｐｈ）に変換する変換手順を実行させ、
前記記述抽出手順は、
前記変換手順によって変換されたＣＦＧの中から、条件分岐処理を表す条件分岐記述を抽出することを特徴とする請求項１〜３のいずれか一つに記載の検証支援プログラム。
【請求項５】
前記コンピュータにおいて、さらに、
前記出力手順によって出力されたアサーション情報を用いて、前記条件式の組み合わせごとに対応付けられた検証シナリオを実行させた場合の出力値が期待値と等しいか否かに応じて前記検証対象回路を検証する検証手順を実行させることを特徴とする請求項１〜４のいずれか一つに記載の検証支援プログラム。
【請求項６】
検証対象回路のハードウェア記述の中から条件分岐処理を表す条件分岐記述を抽出する記述抽出手段と、
前記記述抽出手段によって抽出された条件分岐記述の中に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあるか否かを判断する判断手段と、
前記判断手段によって、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあると判断された場合、前記条件分岐記述の中から前記排他性があると設定された条件式の組み合わせを抽出する条件式抽出手段と、
前記条件式抽出手段によって抽出された条件式の組み合わせの各条件式を抽出し、当該抽出された各条件式について、前記組み合わせ以外の条件式と階層関係をなす条件分岐記述を前記ハードウェア記述の記述順序にしたがって作成する作成手段と、
前記作成手段によって作成された各条件分岐記述において、指定した条件の成立を検証するアサーションを生成する生成手段と、
前記生成手段によって生成された各アサーションを前記検証対象回路のアサーション情報として出力する出力手段と、
を備えることを特徴とする検証支援装置。
【請求項７】
記述抽出手段と判断手段と条件式抽出手段と作成手段と生成手段と出力手段を備えるコンピュータが、
前記記述抽出手段により、検証対象回路のハードウェア記述の中から条件分岐処理を表す条件分岐記述を抽出する記述抽出工程と、
前記判断手段により、前記記述抽出工程によって抽出された条件分岐記述の中に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあるか否かを判断する判断工程と、
前記条件式抽出手段により、前記判断工程によって、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあると判断された場合、前記条件分岐記述の中から前記排他性があると設定された条件式の組み合わせを抽出する条件式抽出工程と、
前記作成手段により、前記条件式抽出工程によって抽出された条件式の組み合わせの各条件式を抽出し、当該抽出された各条件式について、前記組み合わせ以外の条件式と階層関係をなす条件分岐記述を前記ハードウェア記述の記述順序にしたがって作成する作成工程と、
前記生成手段により、前記作成工程によって作成された各条件分岐記述において、指定した条件の成立を検証するアサーションを生成する生成工程と、
前記出力手段により、前記生成工程によって生成された各アサーションを前記検証対象回路のアサーション情報として出力する出力工程と、
を実行することを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示技術は、ハードウェア設計された検証対象回路に対する検証処理を支援する検証支援プログラム、検証支援装置および検証支援方法に関する。
【背景技術】
【０００２】
従来、所望の機能を実現するためハードウェア（回路）を設計した場合には、実際のハードウェア製造に移行する前段階の処理として設計内容に漏れがないかの論理検証をおこなう作業が必須となる。具体的には、ハードウェアの設計内容に沿った検証シナリオを生成し、この検証シナリオを入力した場合の出力結果を用いて論理検証がおこなわれていた。
【０００３】
また、上述のようにして生成した検証シナリオによる検証処理を客観的に評価するために、検証カバレッジが求められる。検証カバレッジは、検証対象に対するシミュレーション検証のパターンが十分であるか否かの指標を表す情報である。具体的には、たとえば、検証を要するすべてのシミュレーション検証のパターンを母集団とした場合に、実行したシミュレーション検証のパターン数の割合によって求めた網羅率が検証カバレッジとして提供される。この場合、検証カバレッジ（網羅率）が高ければ検証精度も高いと判断される。
【０００４】
ここで問題になるのが、母集団となる“検証を要するシミュレーション検証の全パターン”の抽出の手法である。この母集団に相当するシミュレーション検証の全パターンをカバレッジ基準という。そして、このカバレッジ基準として、実質的に検証に役に立たないパターンを抽出してしまうと、たとえシミュレーション検証の網羅率が高くても実際の検証効率の向上にはつながらない場合がある。
【０００５】
そこで、現在は特定の基準に沿って、網羅的にパターンを抽出するパスカバレッジやコードカバレッジという手法が利用されている。パスカバレッジは、検証対象回路に含まれるレジスタにおいて状態遷移を生じるすべてのパスを検証するためのパターンとする。したがって、パスカバレッジでは、これらのパターンの集合がカバレッジ基準となる。また、コードカバレッジは、ラインカバレッジとも呼ばれ、検証対象回路に相当するソースコードの記述されたレジスタの入出力に関するパスを検証するためのパターンとする。コードカバレッジの場合も、これらのパターンの集合がカバレッジ基準となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１９０２０９号公報
【特許文献２】特開２００６−２０１９８０号公報
【非特許文献】
【０００７】
【非特許文献１】Ｈａｒｒｙ．Ｄ．Ｆｏｓｔｅｒ，他２名「Ａｓｓｅｒｔｉｏｎ−Ｂａｓｅｄ  Ｄｅｓｉｇｎ」（２ｎｄ  Ｅｄｉｔｉｏｎ），「Ｐｒｏｇｒａｍｍｉｎｇ  Ｃｏｄｅ  ｍｅｔｒｉｃｓ」，ｐｐ．１２９−１３０，２００４
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述のようなカバレッジ基準を網羅するような検証シナリオを生成して検証をおこなった場合にも、実際に回路を動作させると、検証漏れによるバグが発生することがあった。これは、上述したカバレッジ基準が１００％となる検証シナリオであっても、回路内部の分岐条件についての検証を見落としてしまっていたことに起因する。
【０００９】
ここで、分岐条件についての検証の見落としが発生する場合について説明する。図１７は、条件分岐ミスの見落とし発生例を示す説明図である。たとえば、実装時の優先度として条件Ａ＞条件Ｂとなった仕様書に準じたハードウェア（回路）設計をおこなう場合、図１７のように、仕様書に準じた正しい記述例１７１０が、設計者による修正ミスなどの何らかの理由によって誤った記述例１７２０に変更されてしまうことがある。正しい記述例１７１０では、条件Ａの判断をおこなうｉｆ文１７１１の内部にさらに条件Ｂの判断をおこなうｉｆ文１７１２が記述されている。
【００１０】
一方、誤った記述例１７２０では、条件Ｂの判断をおこなうｉｆ文１７２１の内部に条件Ａの判断をおこなうｉｆ文１７２２が記述されている。したがって、誤った記述例１７２０では条件Ｂ＞条件Ａとなり、仕様書に指定された実装意図との相違が生じてしまっている。
【００１１】
ところが、上述したカバレッジ基準では、誤った記述例１７２０のような記述ミスは検証されない可能性があった。ここで、図１８は、正しい記述例と誤った記述例とを比較する図表である。この図１８を用いて、正しい記述例１７１０と誤った記述例１７２０を実行させた場合について説明する。
【００１２】
図１８の図表１８００のように、正しい記述例１７１０と誤った記述例１７２０とを比較すると各条件の判別結果Ｙｅｓ／Ｎｏに応じて４通りのパターン１８０１が実行されることになる。これら４通りのパターン１８０１のうち、条件Ａ、条件Ｂが同時に成立（Ｙｅｓとなる状態）しない３通りのパターン１８０２は、正しい記述例１７１０であっても、誤った記述例１７２０であっても、実行される処理内容は等しくなる。一方、条件Ａ、条件Ｂが同時に成立するパターン１８０３の場合のみ、実行される処理内容に相違が生じる。
【００１３】
図１９は、ラインカバレッジ１００％の検証シナリオ例を示す説明図である。ここで、正しい記述例１７１０を検証対象の記述例とする場合、検証シナリオ１９００における条件Ａ、条件Ｂともに不成立のパターン（Ｎｏ，Ｎｏ）では、正しい記述例１７１０の中の最も深い位置の記述（最下層）の処理ｃについて検証がおこなわれる。
【００１４】
また、条件Ｂのみが成立するパターン（Ｎｏ，Ｙｅｓ）では、正しい記述例１７１０の中の処理ｂについて検証がおこなわれる。そして、条件Ａのみが成立するパターン（Ｙｅｓ，Ｎｏ）では、正しい記述例１７１０の中の最も浅い位置の記述の処理ａについての検証がおこなわれる。
【００１５】
したがって、図１９のように、正しい記述例１７１０のすべての記述が検証シナリオのカバー範囲に含まれる。このように、ラインカバレッジの場合、条件Ａ、条件Ｂともに成立するパターン（Ｙｅｓ，Ｙｅｓ）についての検証をおこなわなくとも、網羅率１００％のカバレッジとなってしまう。
【００１６】
また、上述したパスカバレッジをカバレッジ基準とした場合には、正しい記述例１７１０のときには、条件Ａ、条件Ｂともに成立するパターン（Ｙｅｓ，Ｙｅｓ）のパス自体が存在しないため、当然のことながら、カバレッジ基準の母集団から除外されてしまう。したがって、ラインカバレッジと同様に、条件Ａ、条件Ｂともに成立するパターン（Ｙｅｓ，Ｙｅｓ）についての検証をおこなわなくとも、網羅率１００％のカバレッジとなってしまう。
【００１７】
このように、従来のカバレッジ基準では、網羅率１００％となるような検証シナリオを生成したとしても、検証対象回路内部の条件分岐に関するカバレッジすべてが網羅されていない場合もあった。ところが、生成した検証シナリオによって条件分岐に関するカバレッジが網羅されているか否かを確認する技術は提供されていなかった。その結果、図１７にて説明したような誤った記述例１７２０が含まれてしまった場合に、検証処理によって問題点として抽出することができず、バグを含んだハードウェア設計を提供してしまうという問題があった。
【００１８】
さらに、一般的にハードウェア記述に含まれる各処理には、様々な仕様が設定されている。たとえば、条件分岐記述に複数の条件式が含まれている場合には、実行順序の優先度や、条件式同士の排他性などが設定されている。優先度とは、条件式Ａ＞条件式Ｂ＞条件式Ｃというように設定され、上位に設定されている条件式を優先するような実行順序にしなければならない。
【００１９】
また、排他性があるとは、対象となる条件が同時に成立しないことを意味する。たとえば、対象となる条件として条件式Ａ、条件式Ｂが挙げられ、排他性があると設定された場合、条件式Ａと条件式Ｂとは同時に成立しないような処理内容でなければばらない。すなわち、条件式Ａ＝１かつ条件式Ｂ＝１となる処理例は排除される。
【００２０】
以上に挙げたような仕様が設定された場合、漏れのない検証の実現はさらに困難になる。たとえば、条件分岐条件式が３つ以上ある場合であっても、排他性が設定されていない場合であれば、優先度に基づいた実行順序によって各条件式を実行させるような検証シナリオをそれぞれ作成することによって、漏れのない検証が可能となる。しかしながら、条件式同士に排他性があると設定されていると、同時に成立しない場合の検証シナリオが抜けてしまい検証に漏れが生じてしまうという問題があった。
【００２１】
本開示技術は、上述した従来技術による問題点を解消するため、検証が困難な３つ以上の条件式を含み、かつ、排他性のある条件式の組み合わせを含む回路であっても、ハードウェア検証の漏れを防ぎ、バグのないハードウェア設計を実現させる検証支援プログラム、検証支援装置および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【００２２】
上述した課題を解決し、目的を達成するため、本開示技術は、コンピュータにて、検証対象回路のハードウェア記述の中から条件分岐処理を表す条件分岐記述を抽出する処理と、抽出された条件分岐記述の中に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあるか否かを判断する処理と、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあると判断された場合、前記条件分岐記述の中から前記排他性があると設定された条件式の組み合わせを抽出する処理と、抽出された条件式の組み合わせの各条件式を抽出し、当該抽出された各条件式について、前記組み合わせ以外の条件式と階層関係をなす条件分岐記述を前記ハードウェア記述の記述順序にしたがって作成する処理と、作成された各条件分岐記述において、指定した条件の成立を検証するアサーションを生成する処理と、生成された各アサーションを前記検証対象回路のアサーション情報として出力する処理と、を含むことを要件とする。
【発明の効果】
【００２３】
本検証支援プログラム、検証支援装置および検証支援方法によれば、検証が困難な３つ以上の条件式を含み、かつ、排他性のある条件式の組み合わせを含む回路であっても、ハードウェア検証の漏れを防ぎ、バグのないハードウェア設計を実現させることができるという効果を奏する。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態にかかる検証支援処理の一例を示す説明図である。
【図２】３つ以上の条件式を含んだ条件分岐記述の一例を示す説明図である。
【図３】バグモデルの発生例を示す説明図である。
【図４】各バグモデルとアサーションとの関係を示す図表である。
【図５】条件式の排他性を示す図表である。
【図６】排他性のある条件式を含んだ場合の各バグモデルとアサーションとの関係を示す図表である。
【図７】排他性によってバグモデルを検出できない例を示す説明図である。
【図８】排他性のある条件式を含んだ場合の検証例を示す図表である。
【図９】検証支援装置のハードウェア構成を示すブロック図である。
【図１０】検証支援装置の機能的構成を示すブロック図である。
【図１１】検証支援処理の手順を示すフローチャートである。
【図１２】排他性のある条件式の組み合わせの一例を示す説明図である。
【図１３】排他性を考慮した場合の各バグモデルとアサーションとの関係を示す図表である。
【図１４】検証支援装置の実装例を示す説明図である。
【図１５】ｃｏｖｅｒ文を用いたシミュレーション検証の実施例を示す説明図である。
【図１６】シミュレーション結果の出力例を示す図表である。
【図１７】条件分岐ミスの見落とし発生例を示す説明図である。
【図１８】正しい記述例と誤った記述例とを比較する図表である。
【図１９】ラインカバレッジ１００％の検証シナリオ例を示す説明図である。
【発明を実施するための形態】
【００２５】
以下に添付図面を参照して、この発明にかかる検証支援プログラム、検証支援装置および検証支援方法の好適な実施の形態を詳細に説明する。
【００２６】
（実施の形態）
図１は、本実施の形態にかかる検証支援処理の一例を示す説明図である。図１のように、本実施の形態では、検証支援装置１００では、検証対象情報の設計情報１１０として入力されたハードウェア記述１０１と仕様書１０２とを用いて、検証対象回路の検証に関する出力情報１２０を生成する。なお、図１に示したように、出力情報１２０としてアサーション情報１２１と検証結果１２２とを出力している。実際には、検証結果１２２は、検証支援装置１００内に、アサーション情報１２１を用いたシミュレーション検証を実行する機能部を備えている場合にのみ出力可能となる。
【００２７】
本実施の形態にかかる検証支援処理では、ハードウェア記述１０１中から、条件式を含んだ条件分岐記述を抽出して、条件ごとに漏れのない検証を実行するためのアサーション情報を生成する。そこで、まず、条件分岐記述が表す処理内容と、検証漏れが発生する条件について説明する。
【００２８】
＜３つ以上の条件式を含んだ条件分岐記述例＞
図２は、３つ以上の条件式を含んだ条件分岐記述の一例を示す説明図である。図２は、ハードウェア記述１０１において、Ｓｔａｒｔ→Ｅｎｄまでの処理をおこなう際に、３つ以上の条件式（条件式Ａ，Ｂ，Ｃ）を含んだ条件分岐記述の一例である。検証対象回路のハードウェア記述１０１に含まれる条件分岐記述には仕様書１０２によって様々な条件が設定されている。具体的には、図２に例示した条件分岐記述の場合には、「条件式Ａ＞条件式Ｂ＞条件式Ｃ」といった実行順序の優先度が設定されている。
【００２９】
したがって、条件分岐記述に排他性の設定がなされていなければ、単純に下記２つのアサーション情報を生成することによって、条件分岐記述において発生する可能性のあるバグモデルのすべてを検証することができる。
１．ｃｏｖｅｒ（条件式Ａ  ａｎｄ  条件式Ｂ）
２．ｃｏｖｅｒ（！条件式Ａ  ａｎｄ  （条件式Ｂ  ａｎｄ  条件式Ｃ））
【００３０】
図３は、バグモデルの発生例を示す説明図である。図３に例示したバグモデル１〜５は、図２の条件分岐記述において発生する可能性があると想定される条件分岐処理である。従来技術にて説明したように、バグモデル１〜５は設計者による記述ミスによって生じる。したがって、バグモデル１〜５を想定した検証をおこなわなければ、図３に例示したような条件分岐記述における各条件式の実行順序が入れ替わった構成の回路が実装されてしまう恐れがある。
【００３１】
上述のように設計者による記述ミスが生じても、各条件式に排他性が設定されていなければ比較的容易に漏れのない検証を実現することができる。すなわち、バグモデル１〜５が想定されていれば、上記２つのアサーション情報に対応したシミュレーション検証を実行することによって、すべてのバグモデルを漏らすことなく検出することができる。
【００３２】
図４は、各バグモデルとアサーションとの関係を示す図表である。図表４００は、各バグモデルにおける入力と出力との関係を表している。図表４００において、入力側のＡ，Ｂ，Ｃの各値（１／０）は、条件式の判断結果を意味する。一方、出力側の各値（１〜５）は、条件分岐記述を実行した場合の出力値を意味する。したがって、条件分岐記述が正しく実装されていれば、出力値として１〜４のいずれかの値が出力される。
【００３３】
図表４００に示した出力側の各値（１〜５）をみると、いずれのバグモデルによって処理が実行された場合であっても、正しい実装とおなじ出力値を得る場合（４１０の各列）があることがわかる。すなわち、バグモデルにて処理が実行された場合には正しい実装と異なる出力値を得るようなシミュレーション検証を実行しなければ、条件分岐記述にバグが発生していると判別できない。
【００３４】
上記１．２．の２つのアサーション情報に対応したシミュレーション検証は、図表４００において網掛けが施されている４１１の列と４１２の列の処理に相当する。４１１の列の処理ではバグモデル２〜４において正しい実装と異なる出力値が得られ、４１２ではバグモデル１，３，５において正しい実装と異なる出力値が得られる。したがって、２つのアサーション情報に応じたシミュレーション検証を実行すれば、すべてのパターンのバグの存在を判別可能となる。
【００３５】
図５は、条件式の排他性を示す図表である。仕様書１０２には、図表５００のように条件式同士に排他性があると設定されている場合がある。排他性があるとは、図表５００において、５１０の列が表すような条件式Ｂ，Ｃとが同時に成立する「Ｂ＝１かつＣ＝１」の状態は発生しないという制約である。したがって、条件式Ｂ，Ｃは、必ず５２０の各列が表すような状態で実行される。
【００３６】
本実施の形態では、図２〜４にて説明したような３つ以上の条件式が含まれた条件分岐記述に対して、漏れのない検証を実現するに留まらず、さらに、図５のような排他性のある条件式の組み合わせが設定されている場合であっても、漏れのない検証を目的としている。ところが、排他性の設定がなされている場合、上記１．２．の２つのアサーション情報をそのまま適用しても、検証漏れを生じてしまうことがある。
【００３７】
図６は、排他性のある条件式を含んだ場合の各バグモデルとアサーションとの関係を示す図表である。図表６００は、図２に例示した条件式Ａ，Ｂ，Ｃから構成された条件分岐記述において、さらに、図５にて説明したように条件式Ｂ，Ｃに排他性があると設定された場合の各バグモデルにおける入力と出力との関係を表している。
【００３８】
排他性の設定によって、条件式Ｂ，Ｃが同時に成立するような６１０，６２０の各列の処理は実行されない。６２０の列の処理は、上記２．のアサーション情報に対応したシミュレーション検証を実行した場合に得られる出力値であった。ところが、排他性の設定によって出力値を得ることができず、結果として、バグモデル２〜４の発生しか判別できず、他のバグモデルが発生した場合には検証漏れを生じてしまう可能性がある。
【００３９】
図７は、排他性によってバグモデルを検出できない例を示す説明図である。図表７００のように、バグモデル５が誤って実装されてしまった場合、入力値が（Ａ，Ｂ，Ｃ）＝（１，１，１）の場合と、（Ａ，Ｂ，Ｃ）＝（１，０，１）の場合と、（Ａ，Ｂ，Ｃ）＝（０，１，１）の場合でなければ、正しい実装と異なる出力値を得ることができない（バグを判別できない）。
【００４０】
排他性が設定されていない場合は、上記１．のアサーション情報によって得た列７１０の出力値と、上記２．のアサーション情報によって得た列７２０の出力値とを利用して正しい実装と出力値が異なるバグの発生を判別していた。このとき、列７１０の出力値だけでは、バグモデル５と正しい実装との出力値の違いはなく、バグの発生を判別できない。すなわち、上記２つのアサーション情報双方を利用してはじめてすべてのバグモデルの発生の判別が可能となっていた。
【００４１】
図８は、排他性のある条件式を含んだ場合の検証例を示す図表である。上述したように、排他性が設定されている場合、図表６００における列６１０，６２０の出力値を得ることができない。たとえばバグモデル５が発生しているか否かを判別するには、列６１０，６２０以外に正しい実装とバグモデル５との出力値に差異がある処理についてのシミュレーション検証を実行しなければならない。図８の場合、列８００が正しい実装とバグモデル５との出力値に差異がある処理に相当するが、列８００に相当するシミュレーション検証を実行するアサーション情報は提供されていない。
【００４２】
そこで、本実施の形態では、図１に示したように、特に漏れのない検証が困難であった
３つ以上の条件式を含み、かつ、成立条件に排他性があると設定された条件式の組み合わせがあるような条件分岐記述の場合には、排他性があると設定された条件式同士の階層関係を解除し、それぞれ独立した条件分岐記述を作成する。図１では、条件式Ｂ，Ｃに排他性があると設定されているため、条件式Ｂと、条件式Ｃとにそれぞれ独立した条件分岐記述を作成する。その後は、作成された条件分岐記述ごとに、上記１．２．と同様にアサーション情報を生成すればよい。
【００４３】
以上説明したように、本実施の形態では、従来漏れのない検証が困難であった３つ以上の条件式を含み、かつ、排他性があると設定された条件分岐記述が抽出された場合には、排他性がある条件式同士を分離させた条件分岐記述をあらたに作成する。そして、これら作成された各条件分岐記述について、アサーション情報を生成してシミュレーション検証を実行させることによって、漏れのない検証を実現することができる。
【００４４】
以下に、本実施の形態にかかる検証支援処理をおこなう検証支援装置１００の具体的な構成例と処理手順について説明する。
【００４５】
（検証支援装置のハードウェア構成）
つぎに、検証支援装置１００のハードウェア構成について説明する。図９は、検証支援装置のハードウェア構成を示すブロック図である。図９において、検証支援装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３と、磁気ディスクドライブ９０４と、磁気ディスク９０５と、光ディスクドライブ９０６と、光ディスク９０７と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）９０８と、入力デバイス９０９と、出力デバイス９１０と、を備えている。また、各構成部はバス９２０によってそれぞれ接続されている。
【００４６】
ここで、ＣＰＵ９０１は、検証支援装置１００の全体の制御を司る。ＲＯＭ９０２は、ブートプログラムや、検証支援プログラムなどの各種プログラムを記憶している。ＲＡＭ９０３は、ＣＰＵ９０１のワークエリアとして使用される。磁気ディスクドライブ９０４は、ＣＰＵ９０１の制御にしたがって磁気ディスク９０５に対するデータのリード／ライトを制御する。
【００４７】
磁気ディスク９０５は、磁気ディスクドライブ９０４の制御で書き込まれたデータを記憶する。なお、ＲＯＭ９０２には、検証支援プログラムによって生成されたアサーション情報や、アサーション情報と検証シナリオを用いたシミュレーション検証を実行する検証プログラムが記録されていてもよい。このような場合は、検証支援装置１００によって生成したアサーション情報に留まらず、実際の検証結果まで検証者に提供することができる。
【００４８】
光ディスクドライブ９０６は、ＣＰＵ９０１の制御にしたがって光ディスク９０７に対するデータのリード／ライトを制御する。光ディスク９０７は、光ディスクドライブ９０６の制御で書き込まれたデータを記憶したり、光ディスク９０７に記憶されたデータをコンピュータに読み取らせたりする。
【００４９】
通信インターフェース（以下、「Ｉ／Ｆ」と略する）９０８は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク９１１に接続され、このネットワーク９１１を介して他の装置に接続される。そして、通信Ｉ／Ｆ９０８は、ネットワーク９１１と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信Ｉ／Ｆ９０８には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００５０】
入力デバイス９０９は、検証支援装置１００に対しての外部からの入力を受け付ける。
入力デバイス９０９としては、具体的には、キーボード、マウスなどが挙げられる。
【００５１】
キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００５２】
出力デバイス９１０は、検証支援装置１００によって生成された検証シナリオや、検証シナリオによる検証結果などを出力する。出力デバイス９１０としては、具体的には、ディスプレイ、プリンタなどが挙げられる。
【００５３】
ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
【００５４】
（検証支援装置の機能的構成）
図１０は、検証支援装置の機能的構成を示すブロック図である。検証支援装置１００は、記述抽出部１００１と、判断部１００２と、条件式抽出部１００３と、作成部１００４と、生成部１００５と、出力部１００６と、特定部１００７と、変換部１００８と、検証部１００９と、を含む構成である。この制御部となる機能（記述抽出部１００１〜検証部１００９）は、具体的には、たとえば、図９に示したＲＯＭ９０２、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶装置に記憶された検証支援プログラムをＣＰＵ９０１に実行させることにより、または、通信Ｉ／Ｆ９０８により、その機能を実現する。
【００５５】
記述抽出部１００１は、検証対象回路のハードウェア記述１０１の中から条件分岐処理を表す条件分岐記述を抽出する機能を有する。ハードウェア記述１０１は、ぞれぞれ、所定の言語によって記述されており、条件分岐記述は、言語ごとに所定のワードが利用される。したがって、記述抽出部１００１は、入力されたハードウェア記述１０１の言語に応じて、条件分岐記述を表すワードを特定できるため、自動的に条件分岐記述を抽出することができる。なお、抽出された条件分岐記述は、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶される。
【００５６】
判断部１００２は、記述抽出部１００１によって抽出された条件分岐記述の中に所定の条件を満たす条件式が含まれているか否かを判断する機能を有する。具体的には、判断部１００２では、１，３つ以上の条件式が含まれる、２，成立条件に排他性があると設定された条件式の組み合わせがある、という２つの条件を双方とも満たす条件式の有無を判断する。なお、判断結果は、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶される。
【００５７】
条件式抽出部１００３は、判断部１００２によって所定の条件を満たすと判断された条件分岐記述の中から排他性が設定された条件式の組み合わせを抽出する機能を有する。具体的には、条件式抽出部１００３には、判断部１００２によって条件分岐記述に３つ以上の条件式が含まれ、かつ、成立条件に排他性があると設定された条件式の組み合わせがあると判断された条件分岐記述が入力される。
【００５８】
したがって、条件式抽出部１００３は、入力された条件分岐記述の中から排他性があると設定された条件式の組み合わせを抽出する。なお、抽出された条件式の組み合わせの情報は、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶される。
【００５９】
作成部１００４は、指定された条件式を利用した条件分岐記述を作成する機能を有する。具体的には、作成部１００４は、条件式抽出部１００３によって抽出された各条件式について、排他性があると設定された条件式以外の他の条件式と階層関係をなす条件分岐記述を作成する。なお、作成部１００４では、ハードウェア記述１０１の記述順序にしたがって各条件式の階層関係を判断することができる。
【００６０】
したがって、たとえば、図２のような条件式Ａ，Ｂ，Ｃを含んだ条件分岐記述において、条件式Ｂ，Ｃが抽出された場合、作成部１００４は、条件式Ｂ，Ｃとその他の条件式Ａとの階層関係を特定して、あらたに、条件式Ｂについて条件式Ａ，Ｂを含んだ条件分岐記述を作成する。同様に、作成部１００４は条件式Ｃについても条件式Ａ，Ｃを含んだ条件分岐記述を作成する。なお、作成された条件分岐記述は、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶される。
【００６１】
生成部１００５は、作成部１００４によって作成された各条件分岐記述において、指定した条件の成立を検証するアサーションを生成する機能を有する。たとえば、生成部１００５は、指定された条件として、作成部１００４によって作成された各条件分岐記述の中に含まれている各条件式が、指定された優先度であることを検証するアサーションを生成する。
【００６２】
具体的には、生成部１００５は、条件式抽出部１００３によって抽出された条件式が同時に成立したことを検証するｃｏｖｅｒ文をアサーションとして生成する。生成されたアサーションは、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶される。
【００６３】
出力部１００６は、生成部１００５によって生成された各アサーションを検証対象回路のアサーション情報１２１として出力する機能を有する。出力形式としては、たとえば、ディスプレイへの表示、プリンタへの印刷出力、さらに、通信Ｉ／Ｆ９０８による外部装置への送信がある。また、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶することとしてもよい。
【００６４】
以上説明した各機能部は、ハードウェア記述１０１内の３つ以上の条件式を含み、かつ、排他性があると設定された条件式の組み合わせを含んだ条件分岐記述を対象としたアサーション情報１２１の生成を実現する。一方、判断部１００２において、３つ以上の条件式を含み、かつ、排他性があると設定された条件式の組み合わせを含んだ条件分岐記述ではないと判断された場合には、特定部１００７を利用して異なる手順によってアサーション情報１２１を生成する。
【００６５】
特定部１００７は、条件分岐記述の中から所定の関係にある記述を特定する機能を有する。特定部１００７には、判断部１００２によって、３つ以上の条件式が含まれ、かつ、条件式の中に成立条件に排他性があると設定された条件式の組み合わせがないと判断された条件分岐記述が入力される。したがって、特定部１００７は、入力された条件分岐記述の中から、ハードウェア記述１０１の記述順序を参照して、階層関係となる条件分岐記述を特定する。特定された条件分岐記述は、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶される。
【００６６】
特定部１００７によって特定された条件分岐記述は、条件式抽出部１００３に入力される。条件式抽出部１００３では、入力された条件分岐記述の中から指定した条件が成立する可能性のある条件式の組み合わせを抽出する。抽出された条件式の組み合わせは、作成部１００４に入力され、排他性が設定されている場合と同様にアサーション情報１２１の生成に利用される。具体的には、生成部１００５は、抽出された条件式の組み合わせを含む条件分岐記述において指定した条件の成立を検証するアサーションを生成する。
【００６７】
変換部１００８は、ハードウェア記述１０１を、検証対象回路内の制御の流れを表すＣＦＧ（Ｃｏｎｔｒｏｌ  Ｆｌｏｗ  Ｇｒａｐｈ）に変換する機能を有する。ハードウェア記述１０１がＣＦＧに変換された場合、記述抽出部１００１は、ＣＦＧの中から条件分岐処理を表す条件分岐記述を抽出する。ＣＦＧへの変換には各種専用のツールを利用することができる（公知であるため詳しい説明は省略する）。なお、変換後のＣＦＧは、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶される。
【００６８】
検証部１００９は、出力部１００６によって出力されたアサーション情報１２１を用いた検証処理を実行する機能を有する。具体的には、検証部１００９は、生成部１００５によって生成された条件式の組み合わせごとに対応付けられた検証シナリオの出力値が期待値と等しいか否かに応じて検証対象回路を検証する。検証部１００９によって、実行された検証シナリオの実行結果と、出力値と期待値の比較とは、検証結果１２２として出力される。検証結果１２２の出力形式としては、たとえば、ディスプレイへの表示、プリンタへの印刷出力や通信Ｉ／Ｆ９０８による外部装置への送信がある。また、検証結果１２２は、ＲＡＭ９０３、磁気ディスク９０５、光ディスク９０７などの記憶領域に記憶することとしてもよい。
【００６９】
なお、変換部１００８や検証部１００９に相当する機能部は、必須の構成ではなく、検証支援装置１００の外部に用意してもよい。変換部１００８の機能を外部装置にて実現する構成の場合、検証支援装置１００は、外部装置によって変換されたＣＦＧが入力される構成となる。また、検証部１００９も同様に外部装置によって実行する構成であってもよい。検証部１００９を外部に用意した場合、検証支援装置１００の出力情報１２０としてはアサーション情報１２１が出力される。
【００７０】
（検証支援処理の手順）
図１１は、検証支援処理の手順を示すフローチャートである。図１１のフローチャートは、検証対象回路のハードウェア記述１０１から、条件分岐記述を抽出して検証対象回路内の条件式の優先度が仕様に基づいているかを検証するためのアサーション情報を生成する手順を示している。図１１の各処理を実行することによって、従来では、検証漏れの可能性が高かった排他性をもった条件式の組み合わせを含む条件分岐記述であっても、漏れのない検証が可能となるアサーション情報を生成することができる。
【００７１】
図１１において、検証支援装置１００は、まず、記述抽出部１００１において、検証対象回路のハードウェア記述１０１を受け付けたか否かを判断する（ステップＳ１１０１）。ステップ１１０１では、記述抽出部１００１がハードウェア記述１０１を受け付けるまで待機状態となる（ステップＳ１１０１：Ｎｏのループ）。そして、記述抽出部１００１は、ハードウェア記述１０１を受け付けると（ステップＳ１１０１：Ｙｅｓ）、受け付けたハードウェア記述１０１の中から条件分岐記述を抽出する（ステップＳ１１０２）。
【００７２】
なお、検証支援装置１００に変換部１００８が用意されている場合には、まず、変換部１００８によってハードウェア記述１０１を受け付ける。そして、変換部１００８は、受け付けたハードウェア記述１０１をＣＦＧに変換して、記述抽出部１００１に提供する。記述抽出部１００１は、ＣＦＧが提供された場合には、ＣＦＧから条件分岐記述を抽出すればよい。
【００７３】
つぎに、判断部１００２によって、抽出された条件分岐記述が所定の条件を満たすか否かを判断する。具体的には、判断部１００２は、条件分岐記述に含まれている条件式が３つ以上、かつ、排他性が設定されているか否かを判断する（ステップＳ１１０３）。
【００７４】
判断部１００２において、条件式が３つ以上、かつ、排他性が設定されていると判断された場合（ステップＳ１１０３：Ｙｅｓ）、条件式抽出部１００３は、ステップＳ１１０２によって抽出された条件分岐記述の中から排他性が設定されている各条件式を抽出する（ステップＳ１１０４）。
【００７５】
その後、作成部１００４によって、各条件式について、排他性が設定されていない条件式との条件分岐記述を作成する（ステップＳ１１０５）。すなわち、作成部１１０４では、ステップＳ１１０４により抽出された条件式の組み合わせを分離して、残りの条件式と階層関係を持った条件分岐記述をそれぞれ作成する。
【００７６】
つぎに、生成部１００５によって、ステップＳ１１０５によって作成された各条件分岐記述において、指定した条件の成立を検証するアサーションを生成する（ステップＳ１１０６）。最後に、出力部１００６から、ステップＳ１１０６によって生成されたアサーションをアサーション情報１２１として出力して（ステップＳ１１０７）、一連の処理を終了する。
【００７７】
上述した処理では、条件式が３つ以上、かつ、排他性が設定されていると判断された条件分岐記述の検証を目的としたアサーション情報が出力される。一方、ステップＳ１１０３において、判断部１００２が、条件式が３つ以上、かつ、排他性が設定されている条件分岐記述ではないと判断した場合（ステップＳ１１０３：Ｎｏ）、特定部１００７によって、条件分岐記述から階層関係となる条件式を特定する（ステップＳ１１０８）。ステップＳ１１０８にて特定された条件式は、ステップＳ１１０６のアサーションの生成に利用される。
【００７８】
以上説明したように、本実施の形態にかかる検証支援装置１００では、検証漏れの可能性が高かった排他性をもった条件式の組み合わせを含む条件分岐記述であっても、漏れのない検証が可能となるアサーション情報を生成する。したがって、検証精度を向上させることができる。
【００７９】
（実施例）
図１２は、排他性のある条件式の組み合わせの一例を示す説明図である。つぎに、実施例として、図１２に例示したような条件式Ｂ，Ｃとに排他性があると設定された条件分岐記述についてアサーション情報を生成する場合について説明する。
【００８０】
条件式Ｂ，Ｃは、それぞれ分離され、排他性の設定がなされていない条件式Ａと階層関係をなす条件分岐記述が作成される。具体的には、１）条件式Ｂと他の条件式Ａとの組み合わせと、２）条件式Ｃと他の条件式Ａとの組み合わせの条件分岐記述がそれぞれ作成される。
【００８１】
１）条件式Ｂと他の条件式Ａとの組み合わせ
仕様書１０２よりＡ＞Ｂという優先度が設定されている。したがって、優先度を検証するアサーション情報ｉ「ｃｏｖｅｒ（条件式Ａ  ａｎｄ  条件式Ｂ）」が生成される。このアサーション情報ｉによって、バグモデル２，３，４が検出される。
【００８２】
２）条件式Ｃと他の条件式Ａとの組み合わせ
仕様書１０２よりＡ＞Ｃという優先度が設定されている。したがって、優先度を検証するアサーション情報ｉｉ「ｃｏｖｅｒ（条件式Ａ  ａｎｄ  条件式Ｃ）」が生成される。このアサーション情報ｉｉによって、バグモデル３，４，５が検出される。
【００８３】
図１３は、排他性を考慮した場合の各バグモデルとアサーションとの関係を示す図表である。上述したように、図表６００において、６１０，６２０の各列は排他性の設定により得ることができない情報である。そこで、あらたに生成したアサーション情報ｉ，ｉｉに対応したシミュレーション検証を実行することによって、１３００の各列の出力を得ることができる。
【００８４】
具体的には、アサーション情報ｉは（Ａ，Ｂ，Ｃ）＝（１，１，０）の出力値を得ることができるため、バグモデル２〜４の発生を判別することができる。また、アサーション情報ｉｉは（Ａ，Ｂ，Ｃ）＝（１，０，１）の出力値を得ることができるため、バグモデル３〜５の発生を判別することができる。したがって、バグモデル２〜５の検証が網羅される。そして、残ったバグモデル１（１３１０）は条件式Ｂ，Ｃとの排他性の制約によって出力されることはない。結果として、実質すべてのバグモデルの検証が網羅されたこととなる。
【００８５】
＜検証支援装置の実装例＞
図１４は、検証支援装置の実装例を示す説明図である。図１４のように、検証支援装置１００は、ハードウェア記述１０１として、たとえば、組み合わせ回路のハードウェア記述１４０１が入力されると、ＣＦＧ変換が施され（ステップＳ１４１０）、ＣＦＧ１４０２として出力される。
【００８６】
さらに、検証支援装置１００は、ＣＦＧ１４０２を用いて条件分岐判断処理をおこなう。検証支援装置１００は、まず、条件式の排他性を判別する（ステップＳ１４２０）。そして、検証支援装置１００は、判別結果に基づいて、排他性があるか否かを判断する（ステップＳ１４３０）。ステップＳ１４３０において、排他性があると判断された場合（ステップＳ１４３０：Ｙｅｓ）、検証支援装置１００は、排他性ごとに条件式を分離する（ステップＳ１４４０）。
【００８７】
一方、排他性がないと判断された場合（ステップＳ１４３０：Ｎｏ）、検証支援装置１００は、ステップＳ１４６０〜ステップＳ１４９０によって表したアサーション生成処理に移行する。検証支援装置１００は、まず、条件式の組み合わせをすべて抽出して（ステップＳ１４６０）、条件式間の組み合わせ情報１４０６を生成する。
【００８８】
その後、検証支援装置１００は、条件式間の組み合わせ情報１４０６に対して優先度関係の有無を判別し（ステップＳ１４７０）、優先度有りと判別された条件式の組み合わせ（ＡとＢ，ＢとＣ、ＣとＡ、！ＡとＢとＣ）１４０７を抽出する。続いて、検証支援装置１００は、抽出した条件式の組み合わせ１４０７の中から、同時成立の可能性がある条件式の組み合わせを抽出する（ステップＳ１４８０）。ステップＳ１４８０によってＡとＢ、！ＡとＢとＣの条件式１４０８が抽出される。
【００８９】
そして、検証支援装置１００は、抽出された条件式１４０８について、ｃｏｖｅｒ文を生成することによって（ステップＳ１４９０）、優先度検証のアサーション１４０９が生成される。
【００９０】
排他性があると判断された場合（ステップＳ１４３０：Ｙｅｓ）の処理の説明に戻り、ステップＳ１４４０の分離処理によって、条件式Ａ，Ｂ，Ｃを含む条件分岐記述から、条件式Ｂ，Ａを含む条件式１４０３と、条件式Ｃ，Ａを含む条件式１４０４とが作成される。その後、検証支援装置１００は、分離したグループ（１４０３，１４０４）ごとにアサーション生成処理を適用し（ステップＳ１４５０）、優先度検証のアサーション１４０５を生成する。
【００９１】
以上説明したように、実装例では、条件分岐処理によって条件分岐記述が所定の条件（３つ以上の条件式を含み、かつ、排他性があると設定されている）を満たす構成か否かを判断する。したがって、検証対象回路の構成に応じてそれぞれ、検証漏れのないアサーション情報を生成することができる。
【００９２】
＜ｃｏｖｅｒ文を用いたシミュレーション検証＞
図１５は、ｃｏｖｅｒ文を用いたシミュレーション検証の実施例を示す説明図である。検証支援装置１００では、検証対象回路において条件分岐記述を検証するアサーション情報１２１が生成されると、検証対象回路のハードウェア記述１０１と、検証シナリオ１１１、期待値１１２、アサーションを表すｃｏｖｅｒ文記述１１３を用いて、シミュレーション検証をおこなう（ステップＳ１５０１）。
【００９３】
そして、検証支援装置１００は、ステップＳ１５０１によるシミュレーション検証後に、シミュレーション出力が期待値と等しいか否かの判断をおこなう（ステップＳ１５０２）。ステップＳ１５０２によって、シミュレーション出力が期待値１１２と等しいと判断された場合（ステップＳ１５０２：Ｙｅｓ）、検証支援装置１００は、そのままステップＳ１５０３の処理に移行する。一方、検証支援装置１００は、シミュレーション出力が期待値と等しくないと判断された場合（ステップＳ１５０２：Ｎｏ）、ハードウェア記述１０１に期待値１１２通りに動作しない原因となるバグがあると判断する（ステップＳ１５０５）。
【００９４】
検証支援装置１００は、シミュレーション出力が期待値１１２と等しいと判断した場合（ステップＳ１５０２：Ｙｅｓ）には、さらに、ｃｏｖｅｒ文記述１１３の処理が成立するか否かを判断する（ステップＳ１５０３）。そして、検証支援装置１００は、ｃｏｖｅｒ文記述１１３の処理が成立する場合（ステップＳ１５０３：Ｙｅｓ）、検証シナリオ１１１を実行した場合に、同時成立箇所も含めて期待値１１２通りの動作が実行されたと判断する（ステップＳ１５０４）。
【００９５】
一方、ステップＳ１５０３において、ｃｏｖｅｒ文記述１１３の処理が成立しない場合（ステップＳ１５０３：Ｎｏ）、検証支援装置１００は、検証シナリオ１１１を実行した場合に、期待値１１２通りの動作が実行されたが、同時成立箇所は未検証であると判断する（ステップＳ１５０６）。同時成立箇所は未検証であるとは、すなわち、検証シナリオ１１１の不足を意味する。したがって、検証者は、未検証箇所を検証するための検証シナリオ１１１を用意することによって、検証精度を向上させることができる。
【００９６】
図１６は、シミュレーション結果の出力例を示す図表である。図１５にて説明したシミュレーション検証の結果に応じた出力例に応じて、それぞれ図表１６００のように判定される。検証者は、この判定結果を参照して、検証シナリオの漏れを特定し、不足している検証シナリオを補完することによって、真の網羅率１００％となる検証カバレッジを実現することができる。
【００９７】
以上説明したように、検証支援プログラム、検証支援装置および検証支援方法によれば、排他性のある条件式同士をそれぞれ独立させた条件分岐記述を作成して、アサーション情報を生成する。したがって、検証支援装置１００は、発生する可能性のあるバグモデルを残すことなく検出可能となり、高精度な検証を実現することができる。
【００９８】
また、上記技術は、さらに、指定された条件として、検証支援装置１００においてあらたに作成された各条件分岐記述の中に含まれている各条件式が、指定された優先度であることを検証するアサーションを生成する機能を備えることもできる。したがって、検証支援装置１００は、自動的に検証漏れのないシミュレーション検証を実行するためのアサーション情報を生成することができる。
【００９９】
また、上記技術は、さらに、条件分岐記述が所定の条件を満たさない場合には、ハードウェア記述１０１の記述順序を参照して、階層関係となる条件分岐記述を特定してアサーション情報を生成することができる。したがって、検証支援装置１００は、検証対象回路の構成に応じて、最適なアサーション情報を生成するため、高精度な検証が可能となる。
【０１００】
また、上記技術は、さらに、検証対象回路のハードウェア記述１０１を、回路内の制御の流れを表すＣＦＧ（Ｃｏｎｔｒｏｌ  Ｆｌｏｗ  Ｇｒａｐｈ）に変換して、ＣＦＧを対象に条件分岐記述を抽出することもできる。したがって、検証支援装置１００は、ＣＦＧを利用することによってハードウェア記述１０１を対象とする場合に増して、処理負荷が少なく高速に条件分岐記述を抽出することができる。
【０１０１】
また、上記技術は、さらに、抽出された条件式が同時に成立したことを検証するｃｏｖｅｒ文をアサーションとして生成することもできる。したがって、検証支援装置１００は、自動的にアサーション情報を生成することができる。
【０１０２】
また、上記技術は、さらに、出力されたアサーション情報を用いて、検証シナリオを実行させた際の出力値が期待値と等しいか否かを判断する機能を備えることもできる。したがって、検証支援装置１００は、検証対象回路の動作を自動的に検証させることもできる。
【０１０３】
なお、本実施の形態で説明した検証支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。本検証支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検証支援プログラムは、インターネットなどのネットワークを介して配布してもよい。
【０１０４】
また、本実施の形態で説明した検証支援装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した検証支援装置１００の機能（記述抽出部１００１〜検証部１００９をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、検証支援装置１００を製造することができる。
【０１０５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１０６】
（付記１）検証対象回路のハードウェア記述の中から条件分岐処理を表す条件分岐記述を抽出する記述抽出手順、
前記記述抽出手順によって抽出された条件分岐記述の中に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあるか否かを判断する判断手順、
前記判断手順によって、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあると判断された場合、前記条件分岐記述の中から前記排他性があると設定された条件式の組み合わせを抽出する条件式抽出手順、
前記条件式抽出手順によって抽出された条件式の組み合わせの各条件式を抽出し、当該抽出された各条件式について、前記組み合わせ以外の条件式と階層関係をなす条件分岐記述を前記ハードウェア記述の記述順序にしたがって作成する作成手順、
前記作成手順によって作成された各条件分岐記述において、指定した条件の成立を確認するアサーションを生成する生成手順、
前記生成手順によって生成された各アサーションを前記検証対象回路のアサーション情報として出力する出力手順、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【０１０７】
（付記２）前記生成手順は、
前記指定された条件として、前記作成手順によって作成された各条件分岐記述の中に含まれている各条件式が、指定された優先度であることを検証するアサーションを生成することを特徴とする付記１に記載の検証支援プログラム。
【０１０８】
（付記３）前記コンピュータにおいて、さらに、
前記判断手順によって、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがないと判断された場合、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述を特定する特定手順を実行させ、
前記条件式抽出手順は、
前記特定手順によって特定された条件分岐記述の中から、前記指定した条件が成立する可能性のある条件式の組み合わせを抽出し、
前記生成手順は、
前記条件式抽出手順によって抽出された条件式の組み合わせを含む条件分岐記述において前記指定した条件の成立を検証するアサーションを生成することを特徴とする付記１または２に記載の検証支援プログラム。
【０１０９】
（付記４）前記コンピュータにおいて、さらに、
前記ハードウェア記述を、前記検証対象回路内の制御の流れを表すＣＦＧ（Ｃｏｎｔｒｏｌ  Ｆｌｏｗ  Ｇｒａｐｈ）に変換する変換手順を実行させ、
前記記述抽出手順は、
前記変換手順によって変換されたＣＦＧの中から、条件分岐処理を表す条件分岐記述を抽出することを特徴とする付記１〜３のいずれか一つに記載の検証支援プログラム。
【０１１０】
（付記５）前記生成手順は、前記条件式抽出手順によって抽出された各条件式を同時に成立させるｃｏｖｅｒ文をアサーションとして生成することを特徴とする付記１〜４のいずれか一つに記載の検証支援プログラム。
【０１１１】
（付記６）前記コンピュータにおいて、さらに、
前記出力手順によって出力されたアサーション情報を用いて、前記条件式の組み合わせごとに対応付けられた検証シナリオを実行させた場合の出力値が期待値と等しいか否かに応じて前記検証対象回路を検証する検証手順を実行させることを特徴とする付記１〜５のいずれか一つに記載の検証支援プログラム。
【０１１２】
（付記７）検証対象回路のハードウェア記述の中から条件分岐処理を表す条件分岐記述を抽出する記述抽出手段と、
前記記述抽出手段によって抽出された条件分岐記述の中に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあるか否かを判断する判断手段と、
前記判断手段によって、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあると判断された場合、前記条件分岐記述の中から前記排他性があると設定された条件式の組み合わせを抽出する条件式抽出手段と、
前記条件式抽出手段によって抽出された条件式の組み合わせの各条件式を抽出し、当該抽出された各条件式について、前記組み合わせ以外の条件式と階層関係をなす条件分岐記述を前記ハードウェア記述の記述順序にしたがって作成する作成手段と、
前記作成手段によって作成された各条件分岐記述において、指定した条件の成立を検証するアサーションを生成する生成手段と、
前記生成手段によって生成された各アサーションを前記検証対象回路のアサーション情報として出力する出力手段と、
を備えることを特徴とする検証支援装置。
【０１１３】
（付記８）記述抽出手段と判断手段と条件式抽出手段と作成手段と生成手段と出力手段を備えるコンピュータが、
前記記述抽出手段により、検証対象回路のハードウェア記述の中から条件分岐処理を表す条件分岐記述を抽出する記述抽出工程と、
前記判断手段により、前記記述抽出工程によって抽出された条件分岐記述の中に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあるか否かを判断する判断工程と、
前記条件式抽出手段により、前記判断工程によって、前記条件分岐記述に３つ以上の条件式が含まれ、かつ、前記３つ以上の条件式の中に成立条件に排他性があると設定された条件式の組み合わせがあると判断された場合、前記条件分岐記述の中から前記排他性があると設定された条件式の組み合わせを抽出する条件式抽出工程と、
前記作成手段により、前記条件式抽出工程によって抽出された条件式の組み合わせの各条件式を抽出し、当該抽出された各条件式について、前記組み合わせ以外の条件式と階層関係をなす条件分岐記述を前記ハードウェア記述の記述順序にしたがって作成する作成工程と、
前記生成手段により、前記作成工程によって作成された各条件分岐記述において、指定した条件の成立を検証するアサーションを生成する生成工程と、
前記出力手段により、前記生成工程によって生成された各アサーションを前記検証対象回路のアサーション情報として出力する出力工程と、
を実行することを特徴とする検証支援方法。
【符号の説明】
【０１１４】
１００  検証支援装置
１０１  ハードウェア記述
１０２  仕様書
１１１  検証シナリオ
１１２  期待値
１１３  ｃｏｖｅｒ文記述
１２１  アサーション情報
１２２  検証結果
１００１  記述抽出部
１００２  判断部
１００３  条件式抽出部
１００４  作成部
１００５  生成部
１００６  出力部
１００７  特定部
１００８  変換部
１００９  検証部
【図１】
2011108116.tif 000003
【図２】
2011108116.tif 000004
【図３】
2011108116.tif 000005
【図４】
2011108116.tif 000006
【図５】
2011108116.tif 000007
【図６】
2011108116.tif 000008
【図７】
2011108116.tif 000009
【図８】
2011108116.tif 000010
【図９】
2011108116.tif 000011
【図１０】
2011108116.tif 000012
【図１１】
2011108116.tif 000013
【図１２】
2011108116.tif 000014
【図１３】
2011108116.tif 000015
【図１４】
2011108116.tif 000016
【図１５】
2011108116.tif 000017
【図１６】
2011108116.tif 000018
【図１７】
2011108116.tif 000019
【図１８】
2011108116.tif 000020
【図１９】
2011108116.tif 000021