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

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

Info

Publication number
JP5287058B2
JP5287058B2 JP2008229674A JP2008229674A JP5287058B2 JP 5287058 B2 JP5287058 B2 JP 5287058B2 JP 2008229674 A JP2008229674 A JP 2008229674A JP 2008229674 A JP2008229674 A JP 2008229674A JP 5287058 B2 JP5287058 B2 JP 5287058B2
Authority
JP
Japan
Prior art keywords
description
combination
conditional branch
verification
descriptions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008229674A
Other languages
English (en)
Other versions
JP2010066787A (ja
Inventor
明男 松田
亮介 大石
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008229674A priority Critical patent/JP5287058B2/ja
Priority to US12/484,762 priority patent/US8099697B2/en
Publication of JP2010066787A publication Critical patent/JP2010066787A/ja
Application granted granted Critical
Publication of JP5287058B2 publication Critical patent/JP5287058B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

この発明は、ハードウェア設計された検証対象回路に対する検証処理を支援する検証支援プログラム、検証支援装置および検証支援方法に関する。
従来、所望の機能を実現するためハードウェア(回路)を設計した場合には、実際のハードウェア製造に移行する前段階の処理として設計内容に漏れがないかの論理検証をおこなう作業が必須となる。具体的には、ハードウェアの設計内容に沿った検証シナリオを生成し、この検証シナリオを入力した場合の出力結果を用いて論理検証がおこなわれていた。
また、上述のようにして生成した検証シナリオによる検証処理を客観的に評価するために、検証カバレッジが求められる。検証カバレッジは、検証対象に対するシミュレーションのパターンが十分であるか否かの指標をあらわす情報である。具体的には、たとえば、検証を要するすべてのシミュレーションのパターンを母集団とした場合に、実行したシミュレーションのパターン数の割合によって求めた網羅率が検証カバレッジとして提供される。この場合、検証カバレッジ(網羅率)が高ければ検証精度も高いと判断される。
ここで問題になるのが、母集団となる“検証を要するシミュレーションの全パターン”の抽出の手法である。この母集団に相当するシミュレーションの全パターンをカバレッジ基準という。そして、このカバレッジ基準として、実質的に検証に役に立たないパターンを抽出してしまうと、たとえシミュレーションの網羅率が高くても実際の検証効率の向上にはつながらない場合がある。
そこで、現在は特定の基準に沿って、網羅的にパターンを抽出するパスカバレッジやコードカバレッジという手法が利用されている。パスカバレッジは、検証対象回路に含まれるレジスタにおいて状態遷移を生じるすべてのパスを検証するためのパターンとする。したがって、パスカバレッジでは、これらのパターンの集合がカバレッジ基準となる。また、コードカバレッジは、ラインカバレッジとも呼ばれ、検証対象回路に相当するソースコードの記述されたレジスタの入出力に関するパスを検証するためのパターンとする。コードカバレッジの場合も、これらのパターンの集合がカバレッジ基準となる。
特開2006−190209号公報 特開2006−201980号公報 Harry.D.Foster,他2名「Assertion−Based Design」(2nd Edition),「Programming Code metrics」,pp.129−130,2004
しかしながら、上述のようなカバレッジ基準を網羅するような検証シナリオを生成して検証をおこなった場合にも、実際に回路を動作させると、検証漏れによるバグが発生することがあった。これは、上述したカバレッジ基準が100%となる検証シナリオであっても、回路内部の分岐条件についての検証を見落としてしまっていたことに起因する。
ここで、分岐条件についての検証の見落としが発生する場合について説明する。図20は、条件分岐ミスの見落とし発生例を示す説明図である。たとえば、実装時の優先度として条件A>条件Bとなった仕様書に準じたハードウェア(回路)設計をおこなう場合、図20のように、仕様書に準じた正しい記述例2010が、設計者による修正ミスなどの何らかの理由によって誤った記述例2020に変更されてしまうことがある。正しい記述例2010では、条件Aの判断をおこなうif文2011の内部にさらに条件Bの判断をおこなうif文2012が記述されている。
一方、誤った記述例2020では、条件Bの判断をおこなうif文2021の内部に条件Aの判断をおこなうif文2022が記述されている。したがって、誤った記述例2020では条件B>条件Aとなり、仕様書に指定された実装意図との相違が生じてしまっている。
ところが、上述したカバレッジ基準では、誤った記述例2020のような記述ミスは検証されない可能性があった。ここで、図21は、正しい記述例と誤った記述例とを比較する図表である。この図21を用いて、正しい記述例2010と誤った記述例2020を実行させた場合について説明する。
図21の図表2100のように、正しい記述例2010と誤った記述例2020とを比較すると各条件の判別結果Yes/Noに応じて4通りのパターン2101が実行されることになる。これら4通りのパターン2101のうち、条件A、条件Bが同時に成立(Yesとなる状態)しない3通りのパターン2102は、正しい記述例2010であっても、誤った記述例2020であっても、実行される処理内容は等しくなる。一方、条件A、条件Bが同時に成立するパターン2103の場合のみ、実行される処理内容に相違が生じる。
ここで、図22は、ラインカバレッジ100%の検証シナリオ例を示す説明図である。ここで、正しい記述例2010を検証対象の記述例とする場合、検証シナリオ2200における条件A、条件Bともに不成立のパターン(No,No)では、正しい記述例2010の中の最も深い位置の記述(最下層)の処理cについて検証がおこなわれる。
また、条件Bのみが成立するパターン(No,Yes)では、正しい記述例2010の中の処理bについて検証がおこなわれる。そして、条件Aのみが成立するパターン(Yes,No)では、正しい記述例2010の中の最も浅い位置の記述の処理aについての検証がおこなわれる。
したがって、図22のように、正しい記述例2010のすべての記述が検証シナリオのカバー範囲に含まれる。このように、ラインカバレッジの場合、条件A、条件Bともに成立するパターン(Yes,Yes)についての検証をおこなわなくとも、網羅率100%のカバレッジとなってしまう。
また、上述したパスカバレッジをカバレッジ基準とした場合には、正しい記述例2010のときには、条件A、条件Bともに成立するパターン(Yes,Yes)のパス自体が存在しないため、当然のことながら、カバレッジ基準の母集団から除外されてしまう。したがって、ラインカバレッジと同様に、条件A、条件Bともに成立するパターン(Yes,Yes)についての検証をおこなわなくとも、網羅率100%のカバレッジとなってしまう。
このように、従来のカバレッジ基準では、網羅率100%となるような検証シナリオを生成したとしても、検証対象回路内部の条件分岐に関するカバレッジすべてが網羅されていない場合もあった。
ところが、生成した検証シナリオによって条件分岐に関するカバレッジが網羅されているか否かを確認する技術は提供されていなかった。その結果、図20にて説明したような誤った記述例2020が含まれてしまった場合に、検証処理によって問題点として抽出することができず、バグを含んだハードウェア設計を提供してしまうという問題があった。
この発明は、上述した従来技術による問題点を解消し、複数の条件分岐を含むハードウェアの検証漏れを防ぎ、バグないハードウェア設計を実現させる検証支援プログラム、検証支援装置および検証支援方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この検証支援プログラム、検証支援装置および検証支援方法は、検証対象となる組み合わせ回路のハードウェア記述の入力を受け付ける処理と、受け付けられたハードウェア記述の中から条件分岐処理をあらわす条件分岐記述を抽出する処理と、抽出された条件分岐記述の中から、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述の組み合わせを特定する処理と、特定された条件分岐記述の組み合わせの中から、指定した条件が少なくとも2つ以上同時に成立する可能性のある組み合わせを抽出する処理と、抽出された組み合わせに含まれている条件分岐記述において前記指定した条件を成立させるシミュレーションプログラムを生成する処理と、生成された各組み合わせのシミュレーションプログラムを前記検証対象となる組み合わせ回路のアサーション情報として出力する処理と、を含むことを要件とする。
この検証支援プログラム、検証支援装置および検証支援方法によれば、検証対象となるハードウェア記述に含まれている条件分岐の組み合わせにおいて、指定された条件を成立させるアサーション情報(シミュレーションプログラム)が出力される。したがって、検証漏れの可能性のある条件を指定してアサーション情報を出力させれば、このアサーション情報を利用してシミュレーション検証を実行させ、実行結果から検証漏れの可能性のある条件の検証が網羅されているか否かを確認することができる。
この検証支援プログラム、検証支援装置および検証支援方法によれば、ハードウェア設計の検証精度を向上させるため、複数の条件分岐を含むハードウェアの検証漏れを防ぎ、バグないハードウェア設計を実現させるという効果を奏する。
以下に添付図面を参照して、この検証支援プログラム、検証支援装置および検証支援方法の好適な実施の形態を詳細に説明する。この検証支援プログラム、検証支援装置および検証支援方法では、検証対象となる組み合わせ回路に含まれる条件分岐について、検証者が指定した条件を満たす処理を実行させるためのシミュレーションプログラム(アサーション)を生成する。このシミュレーションプログラムを実行させることによって、検証シナリオによって指定した条件を満たす処理が実行されているか否かを判断することができ、検証漏れによるバグの発生を回避することができる。
(検証支援処理の概要)
まず、本実施の形態にかかる検証支援処理の概要について説明する。図1は、本実施の形態にかかる検証支援処理の概要を示す説明図である。検証支援装置100は、検証対象となる組み合わせ回路記述601を受け付けると、この組み合わせ回路記述601に含まれる条件分岐の組み合わせを抽出する(ステップS110)。そして、検証シナリオ101によって各組み合わせに関するすべての実行パターンを検証しているか否かを判断するためのアサーション情報を生成する(ステップS120)。
ここで、図2は、ハードウェア設計における条件判定ミスの発生例を示す説明図である。通常、設計者は、仕様書に基づいてハードウェア設計をおこなうため、正しい記述例210が作成される。その後、設計者は、ハードウェア設計をより効率的なものに改善しようと、記述内容を変更することがある。
具体的には、クロック数の制約やディレイ調整を目的として、記述が示す処理の順序や階層関係を入れ換えることがある。たとえば、正しい記述例210において、処理a211が処理負荷の軽い加算処理であり、処理b212が処理負荷の重い除算処理である場合、設計者は、処理負荷の重い処理b212を先に判断して記述全体のクリティカルパスを短くしようとする。ここで述べている処理負荷が重い軽いとは、処理を完了させるのに必要とするクロック数の多少を意味する。したがって、処理負荷の重い処理であれば、クロック数も多く、処理完了に時間がかかる。
そこで、設計者は、処理負荷の軽い処理b212の判断を先に実行させることで、総クロック数を節約しようとする。正しい記述例210の場合には、処理a211の処理負荷が軽いため、処理負荷の重い処理b212を含む条件Bの判断を先に実行し、つぎに条件Aの判断を実行させればクリティカルパスへの影響を与えることなく、短いクロック数ですべての処理を完了させられる。記述の内容によっては、内部の処理の順序を入れ換えても、そのまま仕様通りの機能を実現できる場合もある。しかしながら、正しい記述例210の条件Aと条件Bとを入れ換えた場合は、仕様通りの機能とならない誤った記述例220となってしまう。
ここで、誤った記述例220のように、処理負荷の重い処理b212を先に判断するために条件Aと条件Bとの記述順序を入れ換えると、条件A=条件B=Yes(条件A、条件Bともに成立する)という分岐例は発生しないと勘違いしてしまうことがある。これは、正しい記述例210の場合には、条件A=条件B=Yesとなる分岐例が発生しなかったためである。
ところが、誤った記述例220へと記述を変更してしまった場合には、条件A、条件Bが同時に成立するパターンを検証しなければ、条件判定ミスについての検証が漏れてしまう。そこで、本実施の形態の場合、検証者は、図1にて説明したステップS110において、条件A、条件Bが同時に成立する条件分岐の組み合わせを抽出するように設定する。
そして、ステップS110にて抽出した条件A、条件Bが同時に成立するアサーション情報、すなわち、条件A、条件Bが同時に成立するようなシミュレーションプログラムを生成する。ここでいう、シミュレーションプログラムの生成とは、たとえば、条件A=Yesかつ条件B=Yesとなるcover文を生成することによって実現される。また、cover文以外にも条件A、条件Bが同時に成立するようなシミュレーションを実現する記述であれば、利用するプログラム言語は特に限定されない。したがって、ハードウェア記述との親和性や、設計環境に応じて選択すればよい。このようにして生成されたcover文を実行させることによって、検証対象となるハードウェアに検証者が指定した条件分岐が実行される。
したがって、このアサーション情報を実行した結果、指定した条件分岐が成立したか否かに応じて、検証者が指定した条件分岐(ここでは、条件A、条件Bが同時に成立する条件分岐)に関する検証がおこなわれているか否かを判断することができる。検証者が指定した条件分岐の検証がおこなわれていなければ、この検証漏れとなっていた条件分岐に関する検証を実行することで、真の網羅率100%の検証カバレッジとなる。
(アサーション情報の生成対象)
以下には、図1にて説明した本実施の形態にかかる検証支援処理を実現する検証支援装置100と処理手順について説明する。まず、図3は、検証支援処理におけるアサーション情報の生成対象を示す説明図である。以下、説明する検証支援処理では、図3のように、正しい記述例210において、条件分岐(条件Aと条件B)を入れ換えることによって出力結果が変わるif文(if〜else if)を対象としたアサーション情報300が生成される。当然のことながら、記述例の内容が異なれば、検証者は、アサーション情報300の生成対象として異なる条件分岐を指定することもできる。
なお、本実施の形態にかかる検証支援処理の場合、どのようなハードウェア記述の場合であっても、複数の条件分岐が含まれるケースがアサーション情報の生成対象となる。ただし、設計者が、個別に条件分岐の優先度を指定している場合には、その指定内容に準じる。たとえば、優先度の指定とは“priority”のキーワードが含まれているif文などである。また、優先度の指定とは別に、ハードウェア記述の中の複数の条件分岐が同時に成立しないことがはじめから明らかである旨の指示が明記されている箇所についてもアサーション情報の生成対象外となる。
(検証支援装置のハードウェア構成)
つぎに、検証支援装置100のハードウェア構成について説明する。図4は、検証支援装置のハードウェア構成を示すブロック図である。図4において、検証支援装置100は、CPU(Central Processing Unit)401と、ROM(Read‐Only Memory)402と、RAM(Random Access Memory)403と、磁気ディスクドライブ404と、磁気ディスク405と、光ディスクドライブ406と、光ディスク407と、通信I/F(Interface)408と、入力デバイス409と、出力デバイス410と、を備えている。また、各構成部はバス420によってそれぞれ接続されている。
ここで、CPU401は、検証支援装置100の全体の制御を司る。ROM402は、ブートプログラムや、検証支援プログラムなどの各種プログラムを記憶している。RAM403は、CPU401のワークエリアとして使用される。磁気ディスクドライブ404は、CPU401の制御にしたがって磁気ディスク405に対するデータのリード/ライトを制御する。磁気ディスク405は、磁気ディスクドライブ404の制御で書き込まれたデータを記憶する。なお、ROM402には、検証支援プログラムによって生成されたアサーション情報や、アサーション情報と検証シナリオを用いた検証シミュレーションを実行する検証プログラムが記録されていてもよい。このような場合は、検証支援装置100によって生成したアサーション情報に留まらず、実際の検証結果まで検証者に提供することができる。
光ディスクドライブ406は、CPU401の制御にしたがって光ディスク407に対するデータのリード/ライトを制御する。光ディスク407は、光ディスクドライブ406の制御で書き込まれたデータを記憶したり、光ディスク407に記憶されたデータをコンピュータに読み取らせたりする。
通信インターフェース(以下、「I/F」と略する)408は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク411に接続され、このネットワーク411を介して他の装置に接続される。そして、通信I/F408は、ネットワーク411と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信I/F408には、たとえばモデムやLANアダプタなどを採用することができる。
入力デバイス409は、検証支援装置100に対しての外部からの入力を受け付ける。入力デバイス409としては、具体的には、キーボード、マウスなどが挙げられる。
キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
出力デバイス410は、検証支援装置100によって生成された検証シナリオや、検証シナリオによる検証結果などを出力する。出力デバイス410としては、具体的には、ディスプレイ、プリンタなどが挙げられる。
ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
(検証支援装置の機能的構成)
つぎに、検証支援装置100の機能的構成について説明する。図5は、検証支援装置の機能的構成を示すブロック図である。検証支援装置100は、受付部501と、記述抽出部502と、特定部503と、組み合わせ抽出部504と、生成部505と、出力部506と、変換部507と、削除部508と、を含む構成である。この制御部となる機能(受付部501〜削除部508)は、具体的には、たとえば、図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶された検証プログラムをCPU401に実行させることにより、または、通信I/F408を介して接続された他の装置に実行させることにより、その機能を実現する。
受付部501は、検証対象となる組み合わせ回路のハードウェア記述の入力を受け付ける。したがって、ここでは、図1にて説明した組み合わせ回路記述601が検証対象となる組み合わせ回路のハードウェア記述として入力され、受付部501は、これを受け付ける。なお、受け付けられたハードウェア記述は、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶される。
記述抽出部502は、受付部501によって受け付けられたハードウェア記述の中から条件分岐処理をあらわす条件分岐記述を抽出する。なお、抽出された条件分岐記述は、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶される。
特定部503は、記述抽出部502によって抽出された条件分岐記述の中から、ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述の組み合わせを特定する。階層関係になっている条件分岐記述とは、たとえば、図2の正しい記述例210の条件Aとその下位層に記述されている条件Bとの組み合わせである。当然のことながら、抽出された条件分岐のうち、階層関係をもつ組み合わせが複数ある場合は、これら複数の組み合わせをすべて特定する。また、条件A−条件Bといった2層の他にさらに、上位もしくは下位に条件分岐がある場合には、3層または4層の組み合わせが特定される。
また、特定部503は、受付部501によって、ハードウェア記述に含まれる複数の条件分岐について、他の条件分岐と比較した実行優先度をあらわす優先度情報を受け付けた場合には、この優先度情報に基づいて、階層関係となる条件分岐記述の組み合わせを特定してもよい。優先度情報とは、条件分岐の階層関係をあらわす情報であり、たとえば、条件Aが条件Bよりも上位に記述されている場合には、条件A>条件Bと設定されている。特定部503は、条件A>条件Bという優先度情報を受け付けると、条件Aと条件Bとの階層関係を特定して出力することができる。なお、いずれの手法によって特定された組み合わせも、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶される。
組み合わせ抽出部504は、特定部503によって特定された条件分岐記述の組み合わせの中から、指定した条件が成立する可能性のある組み合わせを抽出する。ここで、検証者が指定した条件は、条件分岐がすべて成立する条件であるため、特定部503によって特定された条件分岐記述の組み合わせのうち、すべてがYesとなる可能性のある組み合わせを抽出する。なお、抽出された組み合わせは、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶される。
生成部505は、組み合わせ抽出部504によって抽出された組み合わせに含まれている条件分岐記述において、指定した条件を成立させるシミュレーションプログラムを生成する。ここでは、上述したように、条件分岐がすべて成立する条件が指定されているため、抽出された組み合わせ同士がすべてYesとなるシミュレーションプログラムを生成する。ここで生成するシミュレーションプログラムは、上述の条件を成立させるものであれば、どのようなプログラムを用いてもよい。なお、生成されたシミュレーションプログラムは、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶される。
出力部506は、生成部505によって生成された各組み合わせのシミュレーションプログラムを検証対象となる組み合わせ回路のアサーション情報として出力する。すなわち、抽出した組み合わせごとに、この組み合わせを同時に成立させるシミュレーションプログラムが対応付けられている。出力形式としては、たとえば、ディスプレイへの表示、プリンタへの印刷出力、通信I/F408による外部装置への送信がある。また、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶することとしてもよい。
以上説明した機能部501〜506は、本実施の形態にかかる検証支援処理を実現するための、必要最小限の構成となる。検証支援装置100では、上述したアサーション生成処理を高速に実現するための機能部として、変換部507と、削除部508とが用意されている。
変換部507は、受付部501によって受け付けられたハードウェア記述を、前記検証対象となる組み合わせ回路の制御の流れをあらわすCFG(Control Flow Graph)に変換する。変換部507によって、変換されたCFGは、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶される。また、変換部507によってハードウェア記述がCFGに変換された場合、特定部503は、CFGの中から、並列に接続されている条件分岐記述同士を階層関係となる条件分岐記述の組み合わせとして特定すればよい。このように変換部507を用意してCFGに変換することによって、容易に階層関係となる条件分岐記述の組み合わせを特定することができる。
削除部508は、特定部503によって特定された条件分岐記述の組み合わせの中から、あらかじめ指定された条件分岐記述の組み合わせを削除する。したがって、削除部508からは、削除後の条件分岐記述の組み合わせが出力され、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶される。削除部508を利用した場合、組み合わせ抽出部504には、削除部508によって特定の組み合わせが削除された後の条件分岐記述の組み合わせが入力され、これらの組み合わせの中から、指定した条件が成立する可能性のある組み合わせを抽出する。このように、削除部508を用意することによって、組み合わせ抽出部504にとって抽出対象となる組み合わせの数を削減できるため、組み合わせ抽出部504の処理負荷を軽減させることができる。
検証支援装置100は、以上説明した機能部によって従来検証漏れの可能性があった条件分岐の検証の実行有無を確認するためのアサーション情報を生成する。このアサーション情報を用いて、従来の検証装置によって検証対象となる組み合わせ回路の検証をおこなってもよいし、検証支援装置100にさらに、検証を実行するための機能部を設けてアサーション情報を用いた検証を実現してもよい。したがって、以下には、検証支援装置100に、図5にて説明したアサーション生成までの機能部と、生成したアサーション情報を用いて検証を実行する機能部との双方を備えた場合における一連の処理手順について説明する。
図6は、検証支援装置によって実行される処理を示す説明図である。図6のように、検証支援装置100には、アサーション生成処理部610と、検証処理部620とが含まれている。アサーション生成処理部610は、図5にて説明した指定された条件を成立させるためのアサーション情報を生成する処理をおこなう機能部である。また、検証処理部620は、アサーション生成処理部610によって生成されたアサーション情報を用いて、指定された条件に関する検証が実行されているか否かを判断する機能部である。以下、各機能部610,620の処理手順について順番に説明する。
<アサーション生成処理部>
まず、検証支援装置100によって実行される処理のうち、アサーション生成処理部610によって実行される処理について詳しく説明する。アサーション生成処理部610では、大きく分けて条件分岐抽出する処理(ステップS611)と、アサーション情報を生成する処理(ステップS612)とが含まれる。
(条件分岐抽出処理の手順)
まず、図6にて説明したアサーション生成処理610における条件分岐を抽出する処理(ステップS611)の手順について説明する。図7は、分岐条件抽出処理の詳細な手順を示すフローチャートである。図7のフローチャートにおいて、まず、組み合わせ回路記述601が入力されたか否かを判断する(ステップS701)。ここで、組み合わせ回路記述601が入力されるまで待ち(ステップS701:Noのループ)、組み合わせ回路記述601が入力されると(ステップS701:Yes)、入力された組み合わせ回路記述601をCFGに変換する(ステップS702)。
ここで、CFGへの変換について説明する。図8は、CFGの変換例を示す説明図である。CFG(Control Flow Graph)とは、ハードウェア記述の制御の流れをあらわすグラフである。したがって、CFG800は、検証支援装置100に入力された組み合わせ回路記述601における先頭(●)から末尾(◎)までの制御の流れを反映している。組み合わせ回路記述601をCFGに変換することによって、各条件分岐同士の階層関係が明確になり、階層関係になっている条件分岐の組み合わせの特定が容易になる。
図7の説明に戻り、ステップS702において、変換されたCFGから条件分岐の全組み合わせを抽出する(ステップS703)。そして、ステップS703において抽出した全組み合わせのうち、階層関係になっている組み合わせを特定する(ステップS704)。階層関係とは、CFGにおいて条件分岐同士が直列に接続されている状態を意味する。したがって、図8に例示したCFG800の場合は、AとB、AとBとE、AとC、AとD、BとEとが階層関係になっていると特定される。そして、ステップS704によって特定された各組み合わせは、条件分岐情報602として出力され(ステップS705)、一連の条件分岐抽出処理を終了する。
(アサーション生成処理の手順)
つぎに、図6にて説明したアサーション生成処理部610におけるアサーション情報を生成する処理(ステップS612)の手順について説明する。図9は、アサーション生成処理の詳細な手順を示すフローチャートである。図9のフローチャートにおいて、まず、条件分岐情報602が入力されたか否かを判断する(ステップS901)。このステップS901では、図7にて説明した条件分岐抽出処理によって抽出された条件分岐情報602が入力されたか否かによって判断がおこなわれる。
ステップS901において、条件分岐情報602が入力されるまで待ち(ステップS901:Noのループ)、条件分岐情報602が入力されると(ステップS901:Yes)、つぎに、入力された条件分岐情報602に含まれている各組み合わせのうち、同時成立の可能性のある組み合わせを抽出する(ステップS902)。そして、ステップS902にて抽出した組み合わせから各条件を同時成立させるcover文を生成すると(ステップS903)、最後に、各組み合わせとcover文との情報をアサーション情報603として出力し(ステップS904)、一連のアサーション生成処理を終了する。
なお、検証対象となる組み合わせ回路がCFG800のような記述の場合、下記のようなアサーション情報が生成される。
・AとB:cover(AandB)
・AとC:cover(AandC)
・AとBとE:cover(AandBandE)
・BとE:cover(BandE)
(拡張処理:削除条件の採用)
また、上述した検証支援装置100に拡張処理を加えることによって、処理負荷を軽減させることができる。検証支援装置100の拡張処理としては、条件分岐の組み合わせの中から明らかに同時に成立しない条件分岐の組み合わせを削除する処理がある。この処理は、上述した条件分岐を抽出する処理(ステップS611)と、アサーション情報を生成する処理(ステップS612)との間に挿入され、条件分岐情報602の入力をトリガに実行される。
図10は、削除条件を用いた拡張処理の手順を示すフローチャートである。図10のフローチャートにおいて、条件分岐情報602の入力後、まず、削除条件を受け付けたか否かを判断する(ステップS1001)。ここで、削除条件を受け付けた場合(ステップS1001:Yes)、拡張処理を利用すると判断され、まず、入力された条件分岐情報602に含まれる条件分岐の組み合わせのうち、削除条件に該当する分岐条件を含む組み合わせを削除する(ステップS1002)。
ここで、図11は、削除条件の記述例を示す説明図である。ステップS1001では、検証者からの削除条件を受け付けるが、この削除条件としては、たとえば、同時成立しない記述例1100などが入力される。この他にも、個別に削除する組み合わせを指定して削除させてもよい。
なお、ステップS1001において、削除条件が受け付けられなかった場合(ステップS1001:No)、拡張処理を利用しないと判断され、そのまま、ステップS612の処理に移行する。そして、ステップS1002によって削除処理が終了した条件分岐の組み合わせを条件分岐情報602として出力して(ステップS1003)、ステップS612の処理に移行する。
このように、アサーション情報603の生成処理に移行する前段の処理によって、条件分岐情報602から、同時成立する可能性のない組み合わせはあらかじめ削除されるためより効率的に同時成立する可能性のある組み合わせを特定することができる。
(アサーション情報を用いた検証)
アサーション生成処理部610によって生成されたアサーション情報603を用いて検証対象回路の検証をおこなう検証処理部620について説明する。図6に示すように、検証処理部620は、アサーション生成処理部610によって生成されたアサーション情報603から検証したい条件分岐の組み合わせについてのcover文記述604が抽出される。そして、検証対象回路の組み合わせ回路記述601と、検証シナリオ605と、検証シナリオ605に応じた期待値606とを用いてシミュレーション検証が実行される(ステップS621)。
そして、ステップS621の検証結果からcover文記述604が成立しているか否かを判断する(ステップS622)。ここで、cover文記述604が成立している(ステップS622:Yes)と判断された場合は、複数の条件分岐が同時に成立する箇所を含めて期待値通りの動作をしたと判断される(ステップS623)。この判断は、すなわち、必要な検証シナリオをすべて有している状態であることを意味している。
一方、cover文記述604が成立していない(ステップS622:No)と判断された場合は、期待値通りに動作するが、条件分岐が同時に成立する箇所については未検証状態であると判断される(ステップS624)。これは、検証シナリオが不足していることを意味する。したがって、ステップS624と判断された場合には、検証漏れがあるため、検証者は、複数の条件分岐が同時に成立する場合の検証シナリオを追加するなど、適宜処理をおこなうことができる。
図12は、cover文を用いたシミュレーション検証を示す図表である。図表1200には、上述したシミュレーション検証の結果に応じた検証対象回路の検証状態があらわされている。なお、期待値とシミュレーションによる出力とが不一致の場合には、組み合わせ回路記述601自体に期待値通り動作しないバグが存在すると判断される。したがって、検証者は、このバグを解消するための処理をおこなうことができる。
このように、本実施の形態にかかる検証支援装置100では、従来のラインカバレッジやパスカバレッジによって網羅率100%となるような検証シナリオであっても依然として解決していなかった検証漏れを、条件分岐における特定の状態成立に着目することで、検出することができる。
(実行例)
つぎに、具体的な数値を挙げた場合の実行例について説明する。まず、図13−1は、検証対象回路の仕様例を示す図表である。そして、図13−2は、正しい実装例を示す説明図である。図13−1の図表1300に示した仕様例のように、検証対象回路は、入力Xを3で割った時の余りの値に応じてa,b,cのいずれかの値を出力する処理をおこなう。
そして、図13−2に示す記述1320は、図表1300の仕様に基づいて記述された正しい実装例である。仕様にしたがい、条件Aの下位に条件Bを配置している。また、記述1320におけるラインカバレッジ100%となる検証シナリオは下記のようになる。
1,入力:X=2 期待値:[A=1,B=0,Y=a]
2,入力:X=1 期待値:[A=0,B=1,Y=b]
3,入力:X=0 期待値:[A=0,B=0,Y=c]
その後、設計者は、検証対象回路の処理効率を挙げようと、誤りに気づかずに、記述を一部修正した誤った実装例にしたとする。図14は、誤った実装例を示す説明図である。図14の記述1400のように、条件Bの内部の処理を先に実行させるため、条件Aと条件Bとの階層関係が入れ換わっている。しかしながら、記述1400は、出力Yの値は、期待値に等しくなるため、誤った実装であっても結果的には記述1320の正しい実装と同じ出力となる。
このように、図表1300の仕様を反映する場合であれば、記述1320であっても、記述1400であっても出力に変化がないため、問題はないが、仕様が変更された場合に、実装の誤りによる問題が顕在化してくることがある。図15−1は、仕様の変更例を示す図表である。設計者が記述1400のまま、検証対象回路の仕様を図表1500に変更するようなことがある。図表1500のように、変更後の仕様では、入力Xを4で割った余りの値に応じてa,b,cのいずれかの値を出力する処理をおこなう。なお、仕様変更後も、上記の検証シナリオを用いることによってラインカバレッジ100%となるため、検証シナリオもそのまま流用される。
そして、図15−2は、仕様変更後の実装例を示す説明図である。図14にて説明した誤った実装を引き継いでいるため、記述1520は、条件Aと条件Bとの階層関係が入れ換わったままである。しかしながら、仕様変更後は、内部値A,Bが同時に成立(A=1かつB=1)する条件が発生する。上述したように、検証シナリオも、仕様変更前のものを引き継いでいるため、内部値A,Bが同時に成立する検証シナリオが漏れてしまっている。たとえば、入力X=3の場合、期待値は[A=1,B=1,Y=a]となるはずが、該当する検証シナリオが用意されていない。また、記述1520にそのまま入力X=3が入力されると、Y=bというバグ(期待値はY=a)が、検証されずにそのまま出力されてしまう。
そこで、記述1520について、アサーションを生成して検証漏れがあるか否かを確認する必要がある。図16は、仕様変更後の組み合わせ回路のCGF変換を示す説明図である。図7にて説明したように、組み合わせ回路記述(ここでは記述1520)の入力を受け付けると、分岐条件(条件1,2)を抽出してCFG1600に変換する。CFG1600に変換後は、図8にて説明したようにCFGから直列に接続されている条件同士が階層関係になっている条件分岐の組み合わせを特定する。
そして、記述1520において、条件1,2が同時に成立する条件のアサーション情報を生成する。記述1520の場合、アサーション情報として、条件1,2が同時に成立するcover(条件1and条件2)が生成される。そして、図17は、cover文を用いたシミュレーション検証の実施例を示す図表である。記述1520についてアサーション情報が生成されると、検証対象回路の記述1520と、検証シナリオ605、期待値606、アサーション情報から抽出したcover文記述604(ここでは、[cover(条件1and条件2)])を用いて、シミュレーション検証をおこなう(ステップS621)。
なお、ステップS621によるシミュレーション検証は、図6にて説明したシミュレーション検証と同様の処理であるが、図6の処理に、ステップS621の処理後、シミュレーション出力が期待値と等しいか否かの判断を(ステップS630)を追加してもよい。このステップS630によって、シミュレーション出力が期待値と等しいと判断された場合(ステップS630:Yes)、そのままステップS622の処理に移行し、シミュレーション出力が期待値と等しくないと判断された場合(ステップS630:No)、記述1520に期待値通りに動作しない原因となるバグが有ると判断される(ステップS632)。なお、ステップS622以降の処理は図6にて説明したため、ここでは省略する。
そして、図18は、シミュレーション結果の出力例を示す図表である。図17にて説明したシミュレーション検証の結果に応じた出力例に応じて、それぞれ図表1800のように判定される。検証者は、この判定結果を参照して、検証シナリオの漏れを特定し、不足している検証シナリオを補完することによって、真の網羅率100%となる検証カバレッジを実現することができる。
(case文のif文への置き換え処理)
つぎに、case文のif文への置き換え処理について説明する。上述したアサーション生成処理では、検証対象となる組み合わせ回路の記述からif文を検索してcover文を生成している。しかしながら、実際には、同様の条件分岐をあらわす場合であっても、case文によって記述されている場合がある。図19は、case文のif文への置き換え処理を示す説明図である。図19のように、case文をif文へ置き換え、置き換え後の組み合わせ回路記述を検証支援装置100に入力することによって、if文と同様に、条件分岐を抽出することができる。
以上説明したように、本実施の形態によれば、検証者が指定した条件分岐が検証されているか否かを確認するためのアサーションを生成する。具体的には、入力された組み合わせ回路記述から、階層関係になっている条件分岐の組み合わせを抽出し、これら抽出した組み合わせが指定した条件を成立させるためのシミュレーションプログラムを生成して、このシミュレーションプログラムの成立状態に応じて検証の有無を判断することができる。結果として、従来の検証カバレッジでは漏れてしまっていた条件分岐に関する検証も網羅可能となり、ハードウェア設計の検証精度をより向上させることができる。
また、検証支援装置100では、アサーション情報を生成する機能と、生成したアサーション情報を用いてシミュレーション検証をおこなう機能との双方を搭載した構成になっているが、アサーション情報を生成する機能のみを搭載した装置であってもよい。検証支援装置100によって生成したアサーション情報を他の検証装置によってどのように利用させてもよい。
なお、本実施の形態で説明した検証支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
また、本実施の形態で説明した検証支援装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した検証支援装置100の機能(受付部501〜削除部508)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、検証支援装置100を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータを、
検証対象となる組み合わせ回路のハードウェア記述の入力を受け付ける受付手段、
前記受付手段によって受け付けられたハードウェア記述の中から条件分岐処理をあらわす条件分岐記述を抽出する記述抽出手段、
前記記述抽出手段によって抽出された条件分岐記述の中から、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述の組み合わせを特定する特定手段、
前記特定手段によって特定された条件分岐記述の組み合わせの中から、指定した条件が少なくとも2つ以上同時に成立する可能性のある組み合わせを抽出する組み合わせ抽出手段、
前記組み合わせ抽出手段によって抽出された組み合わせに含まれている条件分岐記述において前記指定した条件を成立させるシミュレーションプログラムを生成する生成手段、
前記生成手段によって生成された各組み合わせのシミュレーションプログラムを前記検証対象となる組み合わせ回路のアサーション情報として出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
(付記2)前記コンピュータを、さらに、
前記受付手段によって受け付けられたハードウェア記述を、前記検証対象となる組み合わせ回路の制御の流れをあらわすCFG(Control Flow Graph)に変換する変換手段として機能させ、
前記特定手段は、前記変換手段によって変換されたCFGの中から、直列に接続されている条件分岐記述同士を階層関係となる条件分岐記述の組み合わせとして特定することを特徴とする付記1に記載の検証支援プログラム。
(付記3)前記特定手段は、前記受付手段によって、前記条件分岐記述を他の条件分岐と比較した実行優先度をあらわす優先度情報が受け付けられた場合、当該優先度情報に基づいて、階層関係となる条件分岐記述の組み合わせを特定することを特徴とする付記1または2に記載の検証支援プログラム。
(付記4)前記コンピュータを、さらに、
前記特定手段によって特定された条件分岐記述の組み合わせの中から、あらかじめ指定された条件分岐記述の組み合わせを削除する削除手段として機能させ、
前記組み合わせ抽出手段は、前記削除手段によって特定の組み合わせが削除された後の条件分岐記述の組み合わせの中から、前記指定した条件が成立する可能性のある組み合わせを抽出することを特徴とする付記1〜3のいずれか一つに記載の検証支援プログラム。
(付記5)前記生成手段は、前記組み合わせ抽出手段によって抽出された組み合わせに含まれている条件分岐記述を同時に成立させるcover文をシミュレーションプログラムとして生成することを特徴とする付記1〜4のいずれか一つに記載の検証支援プログラム。
(付記6)前記コンピュータを、さらに、
前記出力手段によって出力されたアサーション情報を用いて、組み合わせごとに対応付けられたシミュレーションプログラムを実行させた場合の出力値が期待値と等しいか否かに応じて前記検証対象となる組み合わせ回路を検証する検証支援プログラム。
(付記7)検証対象となる組み合わせ回路のハードウェア記述の入力を受け付ける受付手段と、
前記受付手段によって受け付けられたハードウェア記述の中から条件分岐処理をあらわす条件分岐記述を抽出する記述抽出手段と、
前記記述抽出手段によって抽出された条件分岐記述の中から、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述の組み合わせを特定する特定手段と、
前記特定手段によって特定された条件分岐記述の組み合わせの中から、指定した条件が少なくとも2つ以上同時に成立する可能性のある組み合わせを抽出する組み合わせ抽出手段と、
前記組み合わせ抽出手段によって抽出された組み合わせに含まれている条件分岐記述において前記指定した条件を成立させるシミュレーションプログラムを生成する生成手段と、
前記生成手段によって生成された各組み合わせのシミュレーションプログラムを前記検証対象となる組み合わせ回路のアサーション情報として出力する出力手段と、
を備えることを特徴とする検証支援装置。
(付記8)入力装置、出力装置および記憶装置を備えるコンピュータが、
検証対象となる組み合わせ回路のハードウェア記述の入力を前記入力装置から受け付けて前記記憶装置に記憶する受付工程と、
前記受付工程によって受け付けられたハードウェア記述の中から条件分岐処理をあらわす条件分岐記述を抽出する記述抽出工程と、
前記記述抽出工程によって抽出された条件分岐記述の中から、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述の組み合わせを特定する特定工程と、
前記特定工程によって特定された条件分岐記述の組み合わせの中から、指定した条件が少なくとも2つ以上同時に成立する可能性のある組み合わせを抽出する組み合わせ抽出工程と、
前記組み合わせ抽出工程によって抽出された組み合わせに含まれている条件分岐記述において前記指定した条件を成立させるシミュレーションプログラムを生成して前記記憶装置に記憶する生成工程と、
前記記憶装置に記憶された各組み合わせのシミュレーションプログラムを、前記検証対象となる組み合わせ回路のアサーション情報として前記出力装置に出力する出力工程と、
を実行することを特徴とする検証支援方法。
本実施の形態にかかる検証支援処理の概要を示す説明図である。 ハードウェア設計における条件分岐ミスの発生例を示す説明図である。 検証支援処理におけるアサーション情報の生成対象を示す説明図である。 検証支援装置のハードウェア構成を示すブロック図である。 検証支援装置の機能的構成を示すブロック図である。 検証支援装置によって実行される処理を示す説明図である。 分岐条件抽出処理の詳細な手順を示すフローチャートである。 CFGの変換例を示す説明図である。 アサーション生成処理の詳細な手順を示すフローチャートである。 削除条件を用いた拡張処理の手順を示すフローチャートである。 削除条件の記述例を示す説明図である。 cvore文を用いたシミュレーション検証を示す図表である。 検証対象回路の仕様例を示す図表である。 正しい実装例を示す説明図である。 誤った実装例を示す説明図である。 仕様の変更例を示す図表である。 仕様変更後の実装例を示す説明図である。 仕様変更後の組み合わせ回路のCGF変換を示す説明図である。 cvore文を用いたシミュレーション検証の実施例を示す図表である。 シミュレーション結果の出力例を示す図表である。 case文のif文への置き換え処理を示す説明図である。 条件分岐ミスの見落とし発生例を示す説明図である。 正しい記述例と誤った記述例とを比較する図表である。 ラインカバレッジ100%の検証シナリオ例を示す説明図である。
符号の説明
100 検証支援装置
101 検証シナリオ
501 受付部
502 記述抽出部
503 特定部
504 組み合わせ抽出部
505 生成部
506 出力部
507 変換部
508 削除部
601 組み合わせ回路記述
602 条件分岐情報
603 アサーション情報
604 cover文記述
605 検証シナリオ
606 期待値
610 アサーション生成処理部
620 検証処理部

Claims (5)

  1. コンピュータを、
    検証対象となる組み合わせ回路のハードウェア記述の入力を受け付ける受付手段、
    前記受付手段によって受け付けられたハードウェア記述の中から条件分岐処理をあらわす条件分岐記述を抽出する記述抽出手段、
    前記記述抽出手段によって抽出された条件分岐記述の中から、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述の組み合わせを特定する特定手段、
    前記特定手段によって特定された条件分岐記述の組み合わせの中から、指定した条件が少なくとも2つ以上同時に成立する可能性のある組み合わせを抽出する組み合わせ抽出手段、
    前記組み合わせ抽出手段によって抽出された組み合わせに含まれている条件分岐記述において前記指定した条件を成立させるシミュレーションプログラムを生成する生成手段、
    前記生成手段によって生成された各組み合わせのシミュレーションプログラムを前記検証対象となる組み合わせ回路のアサーション情報として出力する出力手段、
    として機能させることを特徴とする検証支援プログラム。
  2. 前記コンピュータを、さらに、
    前記受付手段によって受け付けられたハードウェア記述を、前記検証対象となる組み合わせ回路の制御の流れをあらわすCFG(Control Flow Graph)に変換する変換手段として機能させ、
    前記特定手段は、前記変換手段によって変換されたCFGの中から、直列に接続されている条件分岐記述同士を階層関係となる条件分岐記述の組み合わせとして特定することを特徴とする請求項1に記載の検証支援プログラム。
  3. 前記コンピュータを、さらに、
    前記特定手段によって特定された条件分岐記述の組み合わせの中から、あらかじめ指定された条件分岐記述の組み合わせを削除する削除手段として機能させ、
    前記組み合わせ抽出手段は、前記削除手段によって特定の組み合わせが削除された後の条件分岐記述の組み合わせの中から、前記指定した条件が成立する可能性のある組み合わせを抽出することを特徴とする請求項1または2に記載の検証支援プログラム。
  4. 検証対象となる組み合わせ回路のハードウェア記述の入力を受け付ける受付手段と、
    前記受付手段によって受け付けられたハードウェア記述の中から条件分岐処理をあらわす条件分岐記述を抽出する記述抽出手段と、
    前記記述抽出手段によって抽出された条件分岐記述の中から、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述の組み合わせを特定する特定手段と、
    前記特定手段によって特定された条件分岐記述の組み合わせの中から、指定した条件が少なくとも2つ以上同時に成立する可能性のある組み合わせを抽出する組み合わせ抽出手段と、
    前記組み合わせ抽出手段によって抽出された組み合わせに含まれている条件分岐記述において前記指定した条件を成立させるシミュレーションプログラムを生成する生成手段と、
    前記生成手段によって生成された各組み合わせのシミュレーションプログラムを前記検証対象となる組み合わせ回路のアサーション情報として出力する出力手段と、
    を備えることを特徴とする検証支援装置。
  5. 入力装置、出力装置および記憶装置を備えるコンピュータが、
    検証対象となる組み合わせ回路のハードウェア記述の入力を前記入力装置から受け付けて前記記憶装置に記憶する受付工程と、
    前記受付工程によって受け付けられたハードウェア記述の中から条件分岐処理をあらわす条件分岐記述を抽出する記述抽出工程と、
    前記記述抽出工程によって抽出された条件分岐記述の中から、前記ハードウェア記述の記述順序を参照して、階層関係となる条件分岐記述の組み合わせを特定する特定工程と、
    前記特定工程によって特定された条件分岐記述の組み合わせの中から、指定した条件が少なくとも2つ以上同時に成立する可能性のある組み合わせを抽出する組み合わせ抽出工程と、
    前記組み合わせ抽出工程によって抽出された組み合わせに含まれている条件分岐記述において前記指定した条件を成立させるシミュレーションプログラムを生成して前記記憶装置に記憶する生成工程と、
    前記記憶装置に記憶された各組み合わせのシミュレーションプログラムを、前記検証対象となる組み合わせ回路のアサーション情報として前記出力装置に出力する出力工程と、
    を実行することを特徴とする検証支援方法。
JP2008229674A 2008-09-08 2008-09-08 検証支援プログラム、検証支援装置および検証支援方法 Expired - Fee Related JP5287058B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008229674A JP5287058B2 (ja) 2008-09-08 2008-09-08 検証支援プログラム、検証支援装置および検証支援方法
US12/484,762 US8099697B2 (en) 2008-09-08 2009-06-15 Hardware logic verification support apparatus, verification support method and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008229674A JP5287058B2 (ja) 2008-09-08 2008-09-08 検証支援プログラム、検証支援装置および検証支援方法

Publications (2)

Publication Number Publication Date
JP2010066787A JP2010066787A (ja) 2010-03-25
JP5287058B2 true JP5287058B2 (ja) 2013-09-11

Family

ID=41800244

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008229674A Expired - Fee Related JP5287058B2 (ja) 2008-09-08 2008-09-08 検証支援プログラム、検証支援装置および検証支援方法

Country Status (2)

Country Link
US (1) US8099697B2 (ja)
JP (1) JP5287058B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8561026B2 (en) * 2007-11-27 2013-10-15 International Business Machines Corporation Method, apparatus and computer program for facilitating the improvement of a user interface
JP5287092B2 (ja) * 2008-09-26 2013-09-11 富士通株式会社 検証支援プログラム、検証支援装置および検証支援方法
US8645923B1 (en) * 2008-10-31 2014-02-04 Symantec Corporation Enforcing expected control flow in program execution
JP5267434B2 (ja) * 2009-11-19 2013-08-21 富士通株式会社 検証支援プログラム、検証支援装置および検証支援方法
US8676966B2 (en) * 2009-12-28 2014-03-18 International Business Machines Corporation Detecting and monitoring server side states during web application scanning
JP5640790B2 (ja) * 2011-02-10 2014-12-17 富士通株式会社 検証支援プログラム、検証支援装置、および検証支援方法
US20220147617A1 (en) * 2019-03-19 2022-05-12 Nec Corporation Information processing apparatus, information processing method, and storage medium

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319927A (ja) * 1994-05-23 1995-12-08 Hitachi Ltd 論理検証の網羅率測定方式
JPH08202741A (ja) * 1995-01-30 1996-08-09 Ricoh Co Ltd 機能設計支援装置及び機能設計支援方法
JPH10254930A (ja) * 1997-03-11 1998-09-25 Matsushita Electric Ind Co Ltd 半導体素子の機能検証装置及びその機能検証方法
US6816825B1 (en) * 1999-06-18 2004-11-09 Nec Corporation Simulation vector generation from HDL descriptions for observability-enhanced statement coverage
JP4080644B2 (ja) * 1999-06-29 2008-04-23 株式会社東芝 論理回路の検証カバレッジ評価方法
US7158993B1 (en) * 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US7072818B1 (en) * 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
JP4255079B2 (ja) * 2004-09-30 2009-04-15 株式会社リコー アサーション生成システムと回路検証システムおよびプログラムならびにアサーション生成方法
JP2006106865A (ja) * 2004-09-30 2006-04-20 Nec Corp 論理回路設計検証装置および方法、プログラム
JP4165712B2 (ja) * 2004-11-10 2008-10-15 シャープ株式会社 データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体
JP4217220B2 (ja) * 2005-01-07 2009-01-28 富士通株式会社 検証支援プログラムおよび検証支援装置
JP2006201980A (ja) 2005-01-19 2006-08-03 Fujitsu Ltd カバレッジ評価装置、カバレッジ評価方法、カバレッジ評価プログラム、および記録媒体
US7861226B1 (en) * 2006-03-16 2010-12-28 Avaya Inc. Constraint solver to code based test data generation for improving software reliability and security
US9021446B2 (en) * 2006-06-28 2015-04-28 Oracle America, Inc. Uncoverage tool
WO2008039964A1 (en) * 2006-09-28 2008-04-03 Nec Laboratories America, Inc. Software testing using machine learning
JP2008097504A (ja) * 2006-10-16 2008-04-24 Toshiba Corp 動作命題の生成システム及び検証システム
JP4445517B2 (ja) * 2007-05-14 2010-04-07 株式会社東芝 回路設計検証方法および回路設計検証のためのプログラム
JP4946651B2 (ja) * 2007-06-15 2012-06-06 富士通株式会社 仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法
US7934183B2 (en) * 2008-04-25 2011-04-26 Synopsys, Inc. Method and apparatus for simulating behavioral constructs using indeterminate values

Also Published As

Publication number Publication date
US8099697B2 (en) 2012-01-17
US20100064266A1 (en) 2010-03-11
JP2010066787A (ja) 2010-03-25

Similar Documents

Publication Publication Date Title
JP5287058B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法
JP5267434B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法
JP5287092B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法
US9990458B2 (en) Generic design rule checking (DRC) test case extraction
JP4657912B2 (ja) 設計装置および設計方法とそのプログラム
JP5163350B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法
JP2006350420A (ja) レイアウト検証用ルールファイルのテスト装置、テスト方法及びテストプログラム
JP4861734B2 (ja) 故障解析プログラム、該プログラムを記録した記録媒体、故障解析方法、および故障解析装置
JP5040758B2 (ja) シミュレーション装置、シミュレーション方法及びプログラム
JP2006106865A (ja) 論理回路設計検証装置および方法、プログラム
JP5050985B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法
US8458110B2 (en) Verification support apparatus, verification support method, and computer product
JPWO2006025412A1 (ja) 論理検証方法、論理モジュールデータ、デバイスデータおよび論理検証装置
JP4881769B2 (ja) 半導体集積回路設計支援装置、半導体集積回路設計支援方法、半導体集積回路設計支援プログラム
US20120209583A1 (en) Computer product, verification support apparatus, and verification support method
JP2006252489A (ja) 検証支援装置、検証支援方法、検証支援プログラム、および記録媒体
JP6089982B2 (ja) 単語入力プログラム、情報処理装置及び単語入力方法
JP5370257B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法
JP5799589B2 (ja) 検証方法及び検証プログラム
JP2006250651A (ja) テストパターン生成支援装置、テストパターン生成支援方法、テストパターン生成支援プログラム、および記録媒体
US8990747B2 (en) Logical Verification Apparatus and Method
US8782579B2 (en) Connection verification method, recording medium thereof, and connection verification apparatus
JP5899711B2 (ja) データフロー検証支援装置およびデータフロー検証支援方法
JP2010054402A (ja) 回路試験装置、回路試験プログラムおよび回路試験方法
JP2006221473A (ja) 論理検証装置、論理検証方法および論理検証プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110613

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121112

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130520

R150 Certificate of patent or registration of utility model

Ref document number: 5287058

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees