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