JP2006190209A - 検証支援プログラム、記録媒体、検証支援装置、および検証支援方法 - Google Patents

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

Info

Publication number
JP2006190209A
JP2006190209A JP2005003097A JP2005003097A JP2006190209A JP 2006190209 A JP2006190209 A JP 2006190209A JP 2005003097 A JP2005003097 A JP 2005003097A JP 2005003097 A JP2005003097 A JP 2005003097A JP 2006190209 A JP2006190209 A JP 2006190209A
Authority
JP
Japan
Prior art keywords
verification
code coverage
circuit
execution
upper limit
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.)
Granted
Application number
JP2005003097A
Other languages
English (en)
Other versions
JP4217220B2 (ja
Inventor
Hiroaki Iwashita
洋哲 岩下
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 JP2005003097A priority Critical patent/JP4217220B2/ja
Priority to US11/116,283 priority patent/US7464015B2/en
Publication of JP2006190209A publication Critical patent/JP2006190209A/ja
Application granted granted Critical
Publication of JP4217220B2 publication Critical patent/JP4217220B2/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

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)
  • Tests Of Electronic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】コードカバレッジの上限を見積もることにより、検証シナリオの機能に関する検証網羅性の向上を図り、LSIの設計障害の正確かつ効率的な検出を図ること。
【解決手段】検証支援装置200は、取得部201で検証シナリオSが取得された場合、置換部202で検証シナリオS内の可変の値を不定値xに置換する。第1の実行部211で入力パターンPXを用いて論理シミュレーションを実行する。この実行結果から決定部205でコードカバレッジ上限情報CMを生成する。設定部203で検証シナリオS内の可変の値に任意の論理値を与えることによって入力パターンP1,P2を設定する。第2の実行部212で入力パターンP1,P2を用いて論理シミュレーションを実行する。生成部206で入力パターンP1,P2からコードカバレッジCCを生成し、算出部207でコードカバレッジ上限情報CMに対するコードカバレッジCCの達成度を算出する。
【選択図】 図2

Description

この発明は、ハードウェアが正しく論理設計されていることを確認する論理シミュレーションにおける論理検証を支援する検証支援プログラム、記録媒体、検証支援装置、および検証支援方法に関し、特に、シミュレーションパターンが十分であるか否かの指標である検証カバレッジを導出し、そのカバレッジに基づいた論理検証を支援する検証支援プログラム、記録媒体、検証支援装置、および検証支援方法に関する。
従来から、論理シミュレーションのパターンが十分であるか否かの指標である検証カバレッジには、大きく分類して2種類のものが広く使われている。一つは検証対象の外部仕様を基準にしたもので、検証対象が持つべき機能を網羅しようとする「機能カバレッジ」である。
もう一つは検証対象のソースコードを基準にした「コードカバレッジ」である。コードカバレッジとしては、ソースコードのすべての行を実行しようとするラインカバレッジ、ソースコードに記載されたすべての信号線を変化させようとするトグルカバレッジ、ソースコードから有限状態機械(FSM)を決定してその状態や状態遷移を網羅しようとするFSMカバレッジなどが知られている。
また従来から、上述した機能カバレッジやコードカバレッジが用いられている。機能カバレッジを用いた従来例としては、たとえば、特許文献1のカバレッジ算出方法が挙げられる。このカバレッジ算出方法では、カバレッジの基準となるプロパティと実際に実行されたテストパターンとを入力し、プロパティに対応する有効テストパターンがどれだけカバーされたかを算出する。
また、機能カバレッジを計測する方法としては、下記特許文献2の算出方法が挙げられる。論理シミュレーションにおいて機能カバレッジを100%にすることで、外部から見て要求されるすべての機能が一通り正しく実装されているかどうかを確かめることができる。
また、コードカバレッジを用いた従来例としては、特許文献3のカバレッジ方式が挙げられる。このカバレッジ方式は、論理シミュレーション中の信号変化に関する情報を記録し、全信号を動作させる。
特開2004−70457号公報 特開平3−062172号公報 特開昭63−205760号公報
しかしながら、上述した機能カバレッジにおいて外部から見ると区別されないケースでも、実際のハードウェアの内部実装では、サブケースに細分化されて処理されている可能性がある。本来はそれらをすべてカバーするべきであるが、機能カバレッジではそれらの一つをカバーするだけになり、他のサブケースでも機能が正しく実装されているかどうかの検証が十分ではないという問題があった。
たとえば、つぎのような外部仕様を持った論理回路があるとする。
(1)回路は5つの入力端子A,B,C,D,Eと1つの出力端子Fを持つ。
(2)Aの値が0のときは、BとCの2つの入力値に論理関数f1を適用した結果f1(B,C)をFに出力する機能(機能1)を持つ。
(3)Aの値が1のときは、DとEの2つの入力値に論理関数f2を適用した結果f2(D,E)をFに出力する機能(機能2)を持つ。
この外部仕様から、機能カバレッジとして「機能1を実行するパターンと機能2を実行するパターンをそれぞれ1回以上実行する」という基準が考えられる。ところが、この基準では、たとえば機能1を実行する(A,B,C,D,E)=(0,0,0,0,0)と、機能2を実行する(A,B,C,D,E)=(1,0,0,0,0)の2パターンについてシミュレーションするだけで、100%のカバレッジを達成することができる。
これは達成すべき最低限のカバレッジ基準ではあるが、これだけで十分とは考え難い。そこで、より細分化された基準を考えるとすれば、「機能1を実行するパターンをBとCの値のすべての組み合わせについて、機能2を実行するパターンをDとEの値のすべての組み合わせについて実行する」といったものになる。この例の場合は、それも可能であるが、実際の大規模な(内部状態を持ち入力端子数の多い)論理回路では、そのようにすべての組み合わせについて実行することは現実的ではない。したがって、それらの中間的なカバレッジ基準を設定する必要がある。
一方、コードカバレッジを100%にすることでソースコードの実行を一通り確認することができる。しかしながら、検証として意味を持つためには、単に実行するだけではなく最終結果に影響を与える場面で実行する必要があるが、コードカバレッジにはそのような観点からの基準が含まれていなかった。
たとえば、上記の論理回路について具体的に説明する。図22は、上述した論理回路を示す回路図である。図22において、論理回路2200に、コードカバレッジの一種であるトグルカバレッジを導入してみる。トグルカバレッジでは、シミュレーション中に回路上のそれぞれの信号線に値の変化が起こったかどうかが算出基準になる。この例ではA〜Jの10個の信号線があるため、カバレッジの母数は10ということになる。
機能カバレッジを100%にする2パターン(0,0,0,0,0),(1,0,0,0,0)についてシミュレーションすると、図23および図24のシミュレーション結果が得られる。図23および図24は、論理回路2200のシミュレーション結果を示す説明図である。図23および図24において、値が変化した信号線はA,H,Fの3つであり、トグルカバレッジは30%しか達成されていない。そこでパターン(1,1,1,1,1)を追加してシミュレーションすると、図25のシミュレーション結果が得られる。図25は、論理回路2200のシミュレーション結果を示す説明図である。図25においては、残りの信号線の値も変化し、トグルカバレッジ100%を達成することができる。
ところがこの論理回路2200は、A=1のときB、C、Gの値が出力Fに影響を与えない構成になっている。したがって、最後に追加したパターン(1,1,1,1,1)でカバーされたB、C、Gの値変化は検証の役目を果たしていない。このように、機能カバレッジやコードカバレッジを個別に達成しようとするだけでは、上記のような検証漏れを避けることができないという問題があった。
一方で、単純に機能カバレッジとコードカバレッジの組み合わせを網羅しようとすると、組み合わせの中には理論的に達成不可能なものが含まれる可能性があるため、どこまで網羅すれば十分であるかが判断できないという問題があった。したがって、機能カバレッジとコードカバレッジの組み合わせという考え方も実用的ではなかった。
たとえば、前述の例では機能カバレッジの母数が2、トグルカバレッジの母数が10であるから20通りの組み合わせが考えられる。しかしながら、実際には、機能1を実行する際は常にA=0であるため、機能1の実行と信号Aの値変化の組み合わせは達成不可能である。さらにA=0によって信号Iの値も0に固定されるため、機能1の実行と信号線Iの値変化の組み合わせも達成不可能である。同様に、機能1と信号線Jの値変化、機能2と信号線AおよびHの値変化の組み合わせも達成不可能である。実際の大規模回路に対しては、このように一つ一つ確認することは困難であり、現実的ではないという問題があった。
この発明は、上述した従来技術による問題点を解消するため、コードカバレッジの上限を見積もることにより、検証シナリオの機能に関する検証網羅性の向上を図り、LSIの設計障害の正確かつ効率的な検出を図ることができる検証支援プログラム、記録媒体、検証支援装置、および検証支援方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明にかかる検証支援プログラム、記録媒体、検証支援装置、および検証支援方法は、検証対象回路の回路情報と、前記検証対象回路の機能を検証する可変の値を含んだ検証シナリオと、を取得し、取得された検証シナリオを取得された回路情報に与えることによって、前記検証対象回路の論理シミュレーションを実行し、実行された実行結果に基づいて、前記回路情報内において前記可変の値が伝搬した箇所を示すコードカバレッジ上限情報を決定することを特徴とする。
この発明によれば、検証シナリオに含まれているすべての入力パターンを実行した場合に達成可能と想定されるコードカバレッジを網羅することができる。したがって、コードカバレッジ上限情報を、検証対象回路の機能とソースコードの組み合わせパターンをどれだけテストしたかという検証網羅性の評価に用いることができる。
また、前記検証シナリオの可変の値を不定値に置換し、不定値に置換された検証シナリオを前記検証対象回路の回路情報に与えることによって、論理シミュレーションを実行し、前記回路情報内において前記不定値が伝搬した箇所を示すコードカバレッジ上限情報を決定することとしてもよい。
この発明によれば、不定値が伝搬した回路情報内の箇所を示すコードカバレッジ上限情報によって、検証シナリオに含まれているすべての入力パターンを実行した場合に達成可能と想定されるコードカバレッジを網羅することができる。したがって、コードカバレッジ上限情報を、検証対象回路の機能とソースコードの組み合わせパターンをどれだけテストしたかという検証網羅性の評価に用いることができる。
また、前記回路情報として、前記検証対象回路のRTL記述を取得し、前記検証シナリオを前記RTL記述に与えることによって、論理シミュレーションを実行し、前記RTL記述内において前記不定値が伝搬した箇所を示すコードカバレッジ上限情報を決定することとしてもよい。
この発明によれば、回路情報の選択における自由度の向上を図ることができる。したがって、検証網羅性の評価を効率的におこなうことができる。
また、論理シミュレーション中に、前記RTL記述に含まれている条件分岐文において条件不成立となった場合、前記条件分岐文の分岐先となる他の条件分岐文の実行結果を不定値に変換し、変換された不定値を用いて論理シミュレーションを継続実行することとしてもよい。
この発明によれば、回路情報がRTL記述であってもコードカバレッジ上限情報を正確に決定することができる。したがって、コードカバレッジ上限情報を、検証対象回路の機能とソースコードの組み合わせパターンをどれだけテストしたかという検証網羅性の評価に用いることができる。
また、前記RTL記述に条件分岐文がある場合、前記条件分岐文のいずれの分岐先も実行できるように前記RTL記述を変換し、変換されたRTL記述を用いて論理シミュレーションを実行することとしてもよい。
この発明によれば、論理シミュレーション前にあらかじめRTL記述を検証網羅性の評価に適合するように変換することができる。したがって、論理シミュレーションの効率化およびコードカバレッジ上限情報の正確性の向上を図ることができる。
また、前記検証シナリオの可変の値を記号に置換し、記号に置換された検証シナリオを前記検証対象回路の回路情報に与えることによって、論理シミュレーションを実行することとしてもよい。
この発明によれば、論理シミュレーションにおいて記号を用いた論理式によって、伝搬箇所をあらわすことができ、コードカバレッジ上限情報の内容をより正確にあらわすことができる。これにより、検証シナリオに含まれているすべての入力パターンを実行した場合に達成可能と想定されるコードカバレッジをより正確に網羅することができる。したがって、コードカバレッジ上限情報を、検証対象回路の機能とソースコードの組み合わせパターンをどれだけテストしたかという検証網羅性の評価に用いることができる。
また、論理シミュレーション中に、所定数の記号からなる論理式が出現した場合、当該論理式を、当該論理式の記号数よりも少ない数の記号に変換し、変換された記号を用いて論理シミュレーションを継続実行し、前記回路情報内において前記記号が伝搬した箇所を示すコードカバレッジ上限情報を決定することとしてもよい。
この発明によれば、記号を用いた論理シミュレーションの高速化を図ることができる。したがって、コードカバレッジ上限情報を、検証対象回路の機能とソースコードの組み合わせパターンをどれだけテストしたかという検証網羅性の評価に用いることができる。
また、前記検証シナリオの可変の値に任意の論理値を与えることによって入力パターンを設定し、設定された入力パターンを前記回路情報に与えることによって、論理シミュレーションを実行し、その実行結果に基づいて、前記回路情報に関するコードカバレッジを生成し、決定されたコードカバレッジ上限情報に対する、生成されたコードカバレッジの達成度を算出することとしてもよい。
この発明によれば、コードカバレッジ上限情報に対するコードカバレッジの達成度を定量的に算出することができ、コードカバレッジの検証網羅性の判定基準として用いることができる。したがって、検証対象回路の設計障害を効率的に検出することができる。
また、算出された達成度に基づいて、コードカバレッジによる検証網羅性を判定することとしてもよい。
この発明によれば、判定結果からコードカバレッジの検証網羅性を評価することができる。したがって、検証対象回路の設計障害を効率的に検出することができる。
また、判定された判定結果に基づいて、前記検証シナリオの可変の値に前記任意の論理値とは異なる論理値を与えることによって前記入力パターンとは異なる他の入力パターンを設定し、設定された他の入力パターンを前記回路情報に与えることによって、論理シミュレーションを実行し、入力パターンを用いた実行結果と他の入力パターンを用いた実行結果とに基づいて、前記コードカバレッジとは異なる他のコードカバレッジを生成し、前記コードカバレッジ上限情報に対する、生成された他のコードカバレッジの達成度を算出することとしてもよい。
この発明によれば、コードカバレッジを更新して、達成度の上昇を認識することができる。したがって、達成度の上昇から、論理シミュレーションの終了時期を的確に予測することができる。
本発明にかかる検証支援プログラム、記録媒体、検証支援装置、および検証支援方法によれば、コードカバレッジの上限を見積もることにより、検証シナリオの機能に関する検証網羅性の向上を図り、LSIの設計障害の正確かつ効率的な検出を図ることができるという効果を奏する。
以下に添付図面を参照して、この発明にかかる検証支援プログラム、記録媒体、検証支援装置、および検証支援方法の好適な実施の形態を詳細に説明する。
(検証支援装置のハードウェア構成)
まず、この発明の実施の形態にかかる検証支援装置のハードウェア構成について説明する。図1は、この発明の実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。
図1において、検証支援装置は、CPU101と、ROM102と、RAM103と、HDD(ハードディスクドライブ)104と、HD(ハードディスク)105と、FDD(フレキシブルディスクドライブ)106と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)107と、ディスプレイ108と、I/F(インターフェース)109と、キーボード110と、マウス111と、スキャナ112と、プリンタ113と、を備えている。また、各構成部はバス100によってそれぞれ接続されている。
ここで、CPU101は、検証支援装置の全体の制御を司る。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPU101のワークエリアとして使用される。HDD104は、CPU101の制御にしたがってHD105に対するデータのリード/ライトを制御する。HD105は、HDD104の制御で書き込まれたデータを記憶する。
FDD106は、CPU101の制御にしたがってFD107に対するデータのリード/ライトを制御する。FD107は、FDD106の制御で書き込まれたデータを記憶したり、FD107に記憶されたデータを検証支援装置に読み取らせたりする。
また、着脱可能な記録媒体として、FD107のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリーカードなどであってもよい。ディスプレイ108は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ108は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F109は、通信回線を通じてインターネットなどのネットワーク114に接続され、このネットワーク114を介して他の装置に接続される。そして、I/F109は、ネットワーク114と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F109には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード110は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス111は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ112は、画像を光学的に読み取り、検証支援装置内に画像データを取り込む。なお、スキャナ112は、OCR機能を持たせてもよい。また、プリンタ113は、画像データや文書データを印刷する。プリンタ113には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(検証支援装置の機能的構成)
つぎに、この発明の実施の形態にかかる検証支援装置の機能的構成について説明する。図2は、この発明の実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。図2において、検証支援装置200は、取得部201と、置換部202と、設定部203と、実行部204と、決定部205と、生成部206と、算出部207と、判定部208と、変換部209と、から構成されている。
取得部201は、検証対象回路の回路情報と、検証対象回路の機能を検証する可変の値を含んだ検証シナリオSと、を取得する。ここで、検証対象回路とは、検証対象となるLSIなどの論理回路である。また、回路情報とは、検証対象回路に関する情報であり、たとえば、ネットリストやRTL記述などを適用することができる。
図3は、上述した検証対象回路の回路情報の一例を示す説明図である。図3において、回路情報300は、ネットリストを元にしてあらわされており、入力A〜E、出力Fのほか、内部信号線G〜Jを備えている。以下、これらA〜Jを単に「信号線A〜J」と呼ぶ場合もある。
また、検証シナリオSとは、検証対象回路の任意の機能の検証を目的とした入力シミュレーションパターン(以下、単に「入力パターン」という)の集合である。入力パターンとは、具体的には、論理シミュレーションの実行のために回路情報300に与えられる値(パラメータ)の集合であり、少なくとも可変の値が含まれている。また、可変の値とは、「0」または「1」のいずれかの論理値となり得る値である。
たとえば、図3に示した回路情報300においては、検証シナリオSは、下記の通りとなる。なお、b,c,d,eは任意の可変の値である。この検証シナリオSは、入力AがA=0の場合の検証対象回路の機能を検証するシナリオである。
検証シナリオS:
『下記の入力パターンPVを検証対象回路に入力して出力Fを観測することで、当該検証対象回路の機能を検証する。
PV=(A,B,C,D,E)=(0,b,c,d,e)』
なお、取得部201は、図1に示したキーボード110やマウス111を操作したり、ネットワーク114を介して外部のサーバから受信したり、データベースから抽出したりすることで、回路情報300や検証シナリオSを取得することができる。この取得部201は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、または、I/F109によって、その機能を実現する。
また、図2において、置換部202は、検証シナリオSの可変の値を不定値または記号に置換する。具体的には、置換部202は、不定値または記号への置換により、検証シナリオS内の入力パターンを、不定値または記号を含む入力パターンに変更する。
たとえば、上述した検証シナリオSを用いて、不定値に置換する場合を例に挙げて説明すると、置換部202は、検証シナリオSの入力パターン(A,B,C,D,E)=(0,b,c,d,e)について、可変の値(b,c,d,e)を不定値xに置換することにより、下記の入力パターンPXを得る。
PX=(A,B,C,D,E)=(0,x,x,x,x)
また、記号に置換する場合を例に挙げて説明すると、設定部203は、入力パターンPVについて、可変の値(b,c,d,e)を記号(p,q,r,s)に置換することにより、下記の入力パターンPSを得る。
PS=(A,B,C,D,E)=(0,p,q,r,s)
この置換部202は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
また、設定部203は、検証シナリオSの可変の値に任意の論理値を与えることによって入力パターンを設定する。具体的には、設定部203は、検証シナリオSであらわされる入力パターンの集合から、信号変化前後をあらわす具体的な入力パターンを用意する。たとえば、設定部203は、入力パターンPVについて、可変の値(b,c,d,e)を任意の論理値「0」に置換(b=0,c=0,d=0,e=0)することにより、下記の入力パターンP1を得る。
P1=(A,B,C,D,E)=(0,0,0,0,0)
また、入力パターンPVについて、可変の値(b,c,d,e)を任意の論理値「1」に置換(b=1,c=1,d=1,e=1)することにより、下記の入力パターンP2を得る。
P2=(A,B,C,D,E)=(0,1,1,1,1)
すなわち、入力パターンP1は検証対象回路に入力される信号変化前の入力パターンをあらわしており、入力パターンP2は入力パターンP1からの信号変化後の入力パターンをあらわしている。
この設定部203は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
実行部204は、入力パターンを回路情報300に与えることによって論理シミュレーションを実行する。実行部204は、第1の実行部211と第2の実行部212とを備えている。第1の実行部211は、検証シナリオS、具体的には入力パターンPX(またはPS)を回路情報300に与えることによって、検証対象回路の論理シミュレーションを実行する。
また、第2の実行部212は、設定部203によって設定された入力パターンP1,P2を回路情報300に与えることによって、検証対象回路の論理シミュレーションを実行する。この実行部204は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
また、決定部205は、実行部204によって実行された実行結果に基づいて、コードカバレッジ上限情報を決定する。ここで、コードカバレッジ上限情報とは、回路情報300内において任意の値が伝搬した箇所によって示され、検証シナリオSに含まれているすべての入力パターンを実行した場合に達成可能と想定されるコードカバレッジをあらわしている。具体的には、決定部205は、第1の実行部211による論理シミュレーションの実行結果からコードカバレッジ上限情報を決定することができる。このコードカバレッジ上限情報は、検証対象回路の検証網羅性の評価に用いることができる。
たとえば、不定値xを含む入力パターンPXを回路情報300に与えた論理シミュレーションを例に挙げて説明すると、その実行結果は、回路情報300内の信号線に伝搬された値(0,1,x)の集合となる。したがって、実行結果の中から、伝搬された値が不定値xである信号線の集合を抽出する。
より具体的には、図3に示した検証対象回路の回路情報300において、入力パターンPXは、(A,B,C,D,E)=(0,x,x,x,x)であるから、入力B,C,D,Eには不定値xが伝搬している。また、出力Fおよび内部信号線G,Hに不定値xが伝搬し、内部信号線I,Jには伝搬していないとすると、決定部205は、コードカバレッジ上限情報CMを、以下のように決定することができる。
CM=(B,C,D,E,F,G,H)
また、コードカバレッジ上限情報CMは、不定値xが伝搬している信号線の数を集計することによって決定してもよい。上述した例では、不定値xが伝搬している信号線は、B,C,D,E,F,Gであるため、コードカバレッジ上限情報CMは、CM=6と決定される。なお、この決定部205は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
また、生成部206は、第2の実行部212によって実行された実行結果に基づいて、回路情報300に関するコードカバレッジCCを生成する。ここで、コードカバレッジCCについて説明する。コードカバレッジCCとは、検証対象回路のソースコードを基準にしたカバレッジである。コードカバレッジCCとしては、ソースコードのすべての行を実行しようとするラインカバレッジ、ソースコードに記載されたすべての信号線を変化させようとするトグルカバレッジ、ソースコードから有限状態機械(FSM)を決定してその状態や状態遷移を網羅しようとするFSMカバレッジなどが知られている。
コードカバレッジCCは、第2の実行部212において入力パターンP1を与えた場合の論理シミュレーションの実行結果R1と、第2の実行部212において入力パターンP2を与えた場合の論理シミュレーションの実行結果R2とを比較することによって算出される。具体的には、実行結果R1から得られる各信号線A〜Jの値と、実行結果R2から得られる各信号線A〜Jの値と、を比較して、値が変化した信号線の集合を、コードカバレッジCCとする。
たとえば、入力パターンP1を回路情報300に与えたときの実行結果R1が以下の信号線の値の集合であるとする。
R1=(A,B,C,D,E,F,G,H,I,J)
=(0,0,0,0,0,1,0,1,0,0)
同様に、入力パターンP2を回路情報300に与えたときの実行結果R2が以下の信号線の値の集合であるとする。
R2=(A,B,C,D,E,F,G,H,I,J)
=(0,1,1,1,1,0,1,0,0,0)
両者R1,R2を比較すると、値が変化した信号線は、B,C,D,E,F,G,Hである。したがって、この場合のコードカバレッジCCは、以下の通りとなる。
CC=(B,C,D,E,F,G,H)
なお、この生成部206は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
また、算出部207は、決定部205によって決定されたコードカバレッジ上限情報CMに対する、生成部206によって生成されたコードカバレッジCCの達成度を算出する。たとえば、上述したコードカバレッジCCでは、コードカバレッジ上限情報CM内の値の数は「6」、コードカバレッジ上限情報CMの信号変化と一致しているコードカバレッジCCの値の数も「6」であるため、達成度は6/6、すなわち100[%]と算出する。
また、算出部207は、コードカバレッジ上限情報CMが変化した信号線の数によって決定された場合、達成度も、コードカバレッジCCも変化した信号線の数を用いて算出する。上述の例の場合、コードカバレッジ上限情報CMはCM=6であり、コードカバレッジCCの信号線数も6となるため、達成度は6/6、すなわち100[%]と算出することができる。なお、この算出部207は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
また、判定部208は、算出部207によって算出された達成度に基づいて、コードカバレッジCCによる検証網羅性を判定する。具体的には、判定基準となるしきい値(たとえば、100[%])を設定しておき、算出部207によって算出された達成度と比較することで、生成部206によって生成されたコードカバレッジCCが、検証シナリオSの機能を検証するあらゆる入力パターンを与えた場合の実行結果をすべて網羅しているか否かを判定する。
また、判定部208によって検証シナリオSの機能を検証するあらゆる入力パターンを与えた場合の実行結果をすべて網羅していると判定された場合、検証対象回路の設計障害がないと評価することができる。一方、すべて網羅していないと判定された場合、設定部203は、検証シナリオSの可変の値に任意の論理値とは異なる論理値を与えることによって入力パターンP1,P2とは異なる他の入力パターンを設定する。
そして、第2の実行部212は、他の入力パターンを回路情報300に与えることによって、論理シミュレーションを実行し、生成部206は、第2の実行部212によって実行された実行結果に基づいて、コードカバレッジCCとは異なる他のコードカバレッジを生成する。この他のコードカバレッジは、コードカバレッジCCを含んでおり、さらに、他の入力パターンによってあらたに信号変化した値も含んでいる。そして、算出部207は、コードカバレッジ上限情報CMに対する、他のコードカバレッジの達成度を算出することで、前回算出されたコードカバレッジCCの達成度の上昇を図ることができる。
したがって、算出部207によって算出される達成度がしきい値以上になるまで、第2の実行部212に与える入力パターンを自動的に設定して、第2の実行部212による論理シミュレーションを自動的に実行することができる。したがって、達成度の変化を参照することにより、論理シミュレーションの終了時期を的確に判断することができる。
なお、この判定部208は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
また、変換部209は、回路情報300がRTL記述で取得されたとき、第1の実行部211による論理シミュレーション中に、RTL記述に含まれている条件分岐文において条件不成立となった場合、条件分岐文の分岐先となる他の条件分岐文の実行結果を不定値に変換する。具体的には、RTL記述に含まれている条件分岐文の実行結果が不定値xとなった場合、条件分岐文の分岐先となる他の条件分岐文の実行結果を不定値xに変換する。そして、変換されたRTL記述を用いて第1の実行部211による論理シミュレーションを実行する。
すなわち、その分岐先の候補すべてが実行されたと記録することにより、分岐先の実行によって影響を受けるすべての変数に不定値xを代入する変換処理である。たとえば、つ
ぎの文では、Aの値がxであれば(この文全体が実行されたと記録した上で)BにもCに
もxを代入するような動作を実行する。
if(A==1)B<=1;
elseC<=1;
なお、より厳密に、AがxかつBが1でないときだけBにxを代入し、AがxかつCが
1でないときだけCにxを代入するような動作であってもよい。この変換部209では、
変換されたRTL記述を用いて第1の実行部211による論理シミュレーションを実行することにより、回路情報300がRTL記述であっても、その実行結果からコードカバレッジ上限情報CMを正確に決定することができる。
また、変換部209は、回路情報300がRTL記述であり、当該RTL記述に条件分岐文がある場合、条件分岐文のいずれの分岐先も実行できるようにRTL記述を変換することとしてもよい。たとえば、使用する論理シミュレータではVerilog−HDLの文法規約に従った動作、すなわち上の例の場合ifの条件が不成立となりelseの文が実行される動作しか選択できない場合には、else以外の文も選択できるように、あらかじめRTL記述を書き換える。
この変換部209でも、変換されたRTL記述を用いて第3の論理シミュレーションを実行することにより、回路情報300がRTL記述であっても、その実行結果からコードカバレッジ上限情報CMを正確に決定することができる。
また、変換部209は、第1の実行部211において与えられる入力パターンが記号に置換された入力パターンPSであるとき、第1の実行部211による論理シミュレーション中に、所定数の記号からなる論理式が出現した場合、当該論理式を、当該論理式の記号数よりも少ない数の記号に変換する。
具体的には、第1の実行部211による論理シミュレーション中に、入力パターンPSの記号は、AND回路、OR回路、インバータ、NAND回路、NOR回路、EOR回路などの論理回路セルに入力された場合、ブール代数の論理演算によって他の記号や論理式となって伝搬していく。
たとえば、回路情報300内に3入力AND回路が存在する場合、入力(0,p,q)を与えたときの論理シミュレーションの実行結果は0となるが、入力(1,p,q)を与えたときの論理シミュレーションの実行結果はp・qという論理式なる。この場合の論理式内の記号数は2個であるが、値が伝搬するにつれて、記号数が増加する。
このような場合、論理式を構成する記号の数が所定数以上となった場合、別の単一記号に変換することによってその後の計算量を低減することができ、論理シミュレーションの高速化を図ることができる。なお、変換部209は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
(検証支援装置200の検証支援処理手順)
つぎに、この発明の実施の形態にかかる検証支援装置200の検証支援処理手順について説明する。図4は、この発明の実施の形態にかかる検証支援装置200の検証支援処理手順を示すフローチャートである。
図4において、取得部201により、検証シナリオSおよび回路情報300が取得された場合(ステップS401:Yes)、入力パターンPV内の可変の値を、不定値xまたは記号に置換して(ステップS402)、第1の実行部211により、置換によって得られた入力パターンPX(またはPS)を回路情報300に与えて論理シミュレーションを実行する(ステップS403)。そして、この実行結果から、決定部205により、コードカバレッジ上限情報CMを決定する(ステップS404)。
また、設定部203により、入力パターンPVの可変の値に任意の論理値を与えることによって入力パターンP1,P2を設定する(ステップS405)。そして、第2の実行部212により、回路情報300に入力パターンP1,P2を与えて論理シミュレーションを実行する(ステップS406)。
そして、生成部206により、入力パターンP1,P2からコードカバレッジCCを生成し(ステップS407)、算出部207により、コードカバレッジ上限情報CMに対するコードカバレッジCCの達成度を算出する(ステップS408)。そして、算出された達成度がしきい値以上であるか否かを判定する(ステップS409)。
しきい値以上でない場合(ステップS409:No)、ステップS405に移行して、入力パターンの再設定をおこなう。一方、しきい値以上である場合(ステップS409:Yes)、一連の処理を終了する。なお、変換部209による変換処理は、ステップS403の論理シミュレーションの実行中におこなうことができる。
このように、上述した実施の形態によれば、ユーザ(設計者または検証者)は、算出部207によって算出された達成度を用いて、検証網羅性を評価することができる。達成度がしきい値以上である場合、コードカバレッジCCはその検証シナリオSの機能を示すすべての入力パターンを網羅していることとなる。したがって、コードカバレッジCCを適用することにより検証漏れを防止することができ、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
また、達成度がしきい値以上でない場合、コードカバレッジCCがその検証シナリオSの機能を示すすべての入力パターンを網羅していないこととなる。したがって、コードカバレッジ上限情報CMとコードカバレッジCCとの不一致の値の信号線を参照することにより、検証対象回路の設計障害を効率よく検出することができるという効果を奏する。
また、達成度がしきい値以上でない場合、第2の実行部212に与える入力パターンを再設定して、第2の実行部212による論理シミュレーションを実行する。そして、達成度がしきい値以上になるまで自動的に論理シミュレーションを実行することにより、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
つぎに、上述した実施の形態にかかる検証支援装置200の実施例1について説明する。実施例1は、検証シナリオに含まれている可変の値を不定値xに置換する例である。また、コードカバレッジCCとしてトグルカバレッジを用いるため、一例として、図3に示した回路情報300を適用する。
(検証支援装置の概略構成)
まず、実施例1にかかる検証支援装置の概略構成について説明する。図5は、実施例1にかかる検証支援装置の概略構成図である。検証シナリオSは、検証対象回路の機能を検証する。検証シナリオSとしては、図5において、たとえば、下記の検証シナリオS1,S2が挙げられる。
検証シナリオS1:
『下記の入力パターンPV1を入力して出力Fを観測することで、機能F1を検証する。
PV1=(A,B,C,D,E)=(0,b,c,d,e)』
検証シナリオS2:
『下記の入力パターンPV2を入力して出力Fを観測することで、機能F2を検証する。
PV2=(A,B,C,D,E)=(1,b,c,d,e)』
ここで、(b,c,d,e)は「0」または「1」の任意の値を割り当てることができる可変の値である。検証シナリオS1に対して、可変の値(b,c,d,e)に不定値x
を割り当てることにより、不定値xを含む入力パターンPX1を下記の通り設定する。
PX1=(A,B,C,D,E)=(0,x,x,x,x)
そして、この入力パターンPX1を回路情報300に与えることによって、論理シミュレータ501により、3値(0,1,x)の論理シミュレーションを実行する。論理シミ
ュレータ501は、上述した第1の実行部211に相当する。この3値(0,1,x)の
論理シミュレーションの実行結果RX1を図6に示す。図6は、3値(0,1,x)の論
理シミュレーションの実行結果RX1を示す説明図である。図6において、実行結果RX1は、以下の通りとなる。
RX1=(A,B,C,D,E,F,G,H,I,J)
=(0,x,x,x,x,x,x,x,0,0)
この実行結果RX1から、信号線B,C,D,E,F,G,Hに不定値xが伝播したこ
とがわかるため、検証シナリオS1に関するコードカバレッジ上限情報CM1は、以下の通りとなる。
CM1=(B,C,D,E,F,G,H)
すなわち、検証シナリオS1では、この7つの信号線B,C,D,E,F,G,Hに関する信号値変化が達成可能と見積もることができる。同様に、検証シナリオS2についても、入力パターンPX2を下記の通り設定する。
PX2=(A,B,C,D,E)=(1,x,x,x,x)
そして、この入力パターンPX2を回路情報300に与えることによって、論理シミュレータ501により、3値(0,1,x)の論理シミュレーションを実行する。この3値
(0,1,x)の論理シミュレーションの実行結果RX2を図7に示す。図7は、3値(
0,1,x)の論理シミュレーションの実行結果RX2を示す説明図である。図7におい
て、実行結果RX2は、以下の通りとなる。
RX2=(A,B,C,D,E,F,G,H,I,J)
=(1,x,x,x,x,x,x,0,x,x)
この実行結果RX2から、信号線B,C,D,E,F,G,I,Jに不定値xが伝播し
たことがわかるため、コードカバレッジ上限情報CM2は、下記の通りとなる。
CM2=(B,C,D,E,F,G,I,J)
すなわち、検証シナリオS2では、この8つの信号線B,C,D,E,F,G,I,Jに関する信号値変化が達成可能と見積もることができる。
また、実際の検証では、検証シナリオS1,S2の可変の値(b,c,d,e)に「0」または「1」の値を割り当てて具体化することにより、信号値変化が起こりうる入力パターンを設定し、論理シミュレータ502により2値の論理シミュレーションをおこない、実際の信号値変化を観測する。論理シミュレータ502は、上述した第2の実行部212に相当する。
そして、上述したコードカバレッジ上限情報CM1,CM2をどれだけ達成したかで検証の網羅性を評価する。ここで、たとえば、検証シナリオS1に関する具体的な入力パターンP1(P1a,P1b)を下記のように設定する。
[入力パターンP1]
P1a=(0,0,0,0,0)
P1b=(0,1,1,1,1)
入力パターンP1aを用いた2値(0,1)の論理シミュレーションの実行結果R1aを図8に示す。図8は、2値(0,1)の論理シミュレーションの実行結果R1aを示す説明図である。図8において、実行結果R1aは、以下の通りとなる。
R1a=(A,B,C,D,E,F,G,H,I,J)
=(0,0,0,0,0,1,0,1,0,0)
また、入力パターンP1bを用いた2値(0,1)の論理シミュレーションの実行結果R1bを図9に示す。図9は、2値(0,1)の論理シミュレーションの実行結果R1bを示す説明図である。図9において、実行結果R1bは、以下の通りとなる。
R1b=(A,B,C,D,E,F,G,H,I,J)
=(0,1,1,1,1,0,1,0,0,0)
この図8および図9に示した論理シミュレーションの実行結果R1a,R1bを比較すると、検証シナリオS1に関するコードカバレッジCC1は、以下の通りとなる。
CC1=(B,C,D,E,F,G,H)
このコードカバレッジCC1の信号線(B,C,D,E,F,G,H)は、実行結果R1aから実行結果R1bへの信号値変化をあらわしている。このコードカバレッジCC1とコードカバレッジ上限情報CM1とを比較すると、コードカバレッジCC1は、コードカバレッジ上限情報CM1のすべての信号線と一致するため、達成度が100[%]であるということが分かる。したがって、検証シナリオS1に関する基準を達成したことになる。
また、検証シナリオS2についても同様に処理することができる。たとえば、検証シナリオS2に関する具体的な入力パターンP2(P2a,P2b)を下記のように設定する。
[入力パターンP2]
P2a=(0,0,0,0,0)
P2b=(0,1,1,1,1)
そして、入力パターンP2aを用いた2値(0,1)の論理シミュレーションの実行結果R2aを図10に示す。図10は、2値(0,1)の論理シミュレーションの実行結果R2aを示す説明図である。図10において、実行結果R2aは、以下の通りとなる。
R2a=(A,B,C,D,E,F,G,H,I,J)
=(1,0,0,0,0,0,0,0,0,0)
また、入力パターンP2bを用いた2値(0,1)の論理シミュレーションの実行結果R2bを図11に示す。図11は、2値(0,1)の論理シミュレーションの実行結果R2bを示す説明図である。図11において、実行結果R2bは、以下の通りとなる。
R2b=(A,B,C,D,E,F,G,H,I,J)
=(1,1,1,1,1,1,1,0,1,1)
この図10および図11に示した論理シミュレーションの実行結果R2a,R2bを比較すると、検証シナリオS2に関するコードカバレッジCC2は、以下の通りとなる。
CC2=(B,C,D,E,F,G,I,J)
このコードカバレッジCC2の信号線(B,C,D,E,F,G,I,J)は、実行結果R2aから実行結果R2bへの信号値変化をあらわしている。このコードカバレッジCC2とコードカバレッジ上限情報CM2とを比較すると、コードカバレッジCC2は、コードカバレッジ上限情報CM2のすべての信号線と一致するため、達成度が100[%]であるということが分かる。したがって、検証シナリオS2に関するコードカバレッジ上限情報CM2を達成したことになる。
(検証支援装置の検証支援処理手順)
つぎに、上述した実施例1にかかる検証支援装置の検証支援処理手順について説明する。図12−1および図12−2は、実施例1にかかる検証支援装置の検証支援処理手順を示すフローチャートである。
図12−1において、回路情報300が入力された場合(ステップS1201:Yes)、iをi=1にセットする(ステップS1202)。つぎに、検証シナリオSiが入力
された場合(ステップS1203:Yes)、検証シナリオSi内の入力パターンPViの可変の値を、不定値xに置換した入力パターンPXiに設定する(ステップS1204)。
つぎに、回路情報300に入力パターンPXiを与えて3値(0,1,x)の論理シミュレーションを実行し(ステップS1205)、コードカバレッジ上限情報CMiを決定する(ステップS1206)。このあと、検証シナリオSi内の入力パターンPViの可変の値を任意の論理値に置換することによって、入力パターンPi(Pia,Pib)を設定する(ステップS1207)。そして、回路情報300に入力パターンPiaを与えて2値(0,1)の論理シミュレーションを実行する(ステップS1208)。
また、図12−2において、回路情報300に入力パターンPibを与えて2値(0,1)の論理シミュレーションを実行する(ステップS1209)。そして、ステップS1208およびステップS1209の実行結果から、コードカバレッジCCiを生成する(ステップS1210)。そして、コードカバレッジ上限情報CMiに対するコードカバレッジCCiの達成度を算出する(ステップS1211)。
この達成度がしきい値以上である場合(ステップS1212:Yes)、ステップS1214に移行する。一方、達成度がしきい値以上でない場合(ステップS1212:No)、コードカバレッジCCiがその検証シナリオSiの機能を示すすべての入力パターンを網羅していないこととなる。このすべての入力パターンが設定されていない場合(ステップS1213:No)、ステップS1207に移行して、入力パターンPiを再設定する。一方、このすべての入力パターンが設定された場合(ステップS1213:Yes)、ステップS1214に移行する。
また、ステップS1214において、nを検証シナリオの数とすると、i=nである場合(ステップS1214:Yes)、一連の処理を終了する。一方、i=nでない場合(ステップS1214:No)、iをインクリメントして(ステップS1215)、ステップS1203に移行する。これにより、つぎの検証シナリオSiについて検証網羅性を評価することができる。
この実施例1によれば、ユーザ(設計者または検証者)は、コードカバレッジ上限情報CM1に対するコードカバレッジCC1の達成度を用いて、検証網羅性を評価することができる。達成度がしきい値以上である場合、コードカバレッジCC1はその検証シナリオS1の機能を示すすべての入力パターンを網羅していることとなる。したがって、コードカバレッジCC1を適用することにより検証漏れを防止することができ、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
また、達成度がしきい値未満である場合、コードカバレッジCC1がその検証シナリオS1の機能を示すすべての入力パターンを網羅していないこととなる。したがって、コードカバレッジ上限情報CMとコードカバレッジCCとの不一致の値の信号線を参照することにより、検証対象回路の設計障害を効率よく検出することができる。またこれにより、検出された設計障害の数から、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
また、達成度がしきい値以上でない場合、論理シミュレータ502に与える入力パターンを再設定して、論理シミュレータ502による論理シミュレーションを実行する。そして、達成度がしきい値以上になるまで自動的に論理シミュレーションを実行することにより、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
つぎに、実施例2にかかる検証支援装置について説明する。実施例1では、ネットリストを用いた回路情報300を用いているが、実施例2では、回路情報として、RTL(レジスタ転送レベル)記述を用いる例である。これにより、入力する回路情報がネットリストで表現される回路情報300に限定されず汎用性が向上し、検証支援の効率化を図ることができる。なお、検証支援処理の仕組みは、上述した実施例1とほぼ同様である。
(回路情報)
まず、実施例2にかかる回路情報について説明する。図13は、実施例2にかかる回路情報を示す説明図である。図13において、回路情報は、検証対象回路のRTL記述1300によって表現されている。このRTL記述1300は入力信号clkの立ち上がりに同期した同期式順序回路を表現している。
(検証支援装置の概略構成)
つぎに、実施例2にかかる検証支援装置の概略構成について説明する。図14は、実施例2にかかる検証支援装置の概略構成図である。検証シナリオは、図13に示したRTL記述1300で表現されている検証対象回路の機能を検証する。たとえば、検証シナリオとしては、下記の例が挙げられる。
検証シナリオS21:
『最初のサイクル(以下「サイクル1」)に(op,data)=(2’b00,p1)を与え、次のサイクル(以下「サイクル2」)に(op,data)=(2’b01,p2)を与える。』
検証シナリオS22:
『サイクル1に(op,data)=(2’b00,p1)を与え、サイクル2に(op,data)=(2’b10,p2)を与え、その次のサイクル(以下「サイクル3」)に(op,data)=(2’b11,p3)を与える。』
なお、上記検証シナリオS21,S22において、p1〜p3は、検証シナリオS21,S22の可変の値であり、ここでは、任意の8ビットを割り当てることにより、入力パターンを設定することができる。ここでは、サイクル1およびサイクル2に対して、可変の値p1,p2に不定値xを割り当てることで、検証シナリオS21の入力パターンPX
21を、下記のように設定する。
[入力パターンPX21]
サイクル1:(op,data)=(2’b00,p1)
=(2’b00,8’bxxxxxxxx)
サイクル2:(op,data)=(2’b01,p2)
=(2’b01,8’bxxxxxxxx)
そして、論理シミュレータ1401は、RTL記述1300に入力パターンPX21を与えて、論理シミュレーションを実行する。論理シミュレータ1401は、上述した第1の実行部211に相当する。この論理シミュレーションによる実行結果RX21は、実行文が記述された行[013],[015],[018],[021],[025]のうち、検証シナリオS21で実行可能な行[013],[015]である。この検証シナリオS21に関する実行結果RX21([013],[015])が検証シナリオS21に関するコードカバレッジ上限情報CM21([013],[015])となる。
また、検証シナリオS22についても同様に、サイクル1〜3に対して、可変の値p1〜p3に不定値xを割り当てることで、検証シナリオS22の入力パターンPX22を、
下記のように設定する。
[入力パターンPX22]
サイクル1:(op,data)=(2’b00,p1)
=(2’b00,8’bxxxxxxxx)
サイクル2:(op,data)=(2’b10,p2)
=(2’b10,8’bxxxxxxxx)
サイクル3:(op,data)=(2’b11,p3)
=(2’b11,8’bxxxxxxxx)
そして、論理シミュレータ1401は、RTL記述1300に入力パターンPX22を与えて、論理シミュレーションを実行する。この論理シミュレーションによる実行結果RX22は、実行文が記述された行[013],[015],[018],[021],[025]のうち、検証シナリオS22で実行可能な行である。この検証シナリオS22に関する実行結果RX22([013],[018],[021],[025])が、検証シナリオS22に関するコードカバレッジ上限情報CM22([013],[018],[021],[025])となる。
また、論理シミュレータ1402は、RTL記述1300に検証シナリオS21に対する具体的な入力パターンP11を与えて、論理シミュレーションを実行する。論理シミュレータ1402は、上述した第2の実行部212に相当する。ここで、入力パターンP11の一例を示す。
[入力パターンP11]
サイクル1:(op,data)=(2’b00,p1)
=(2’b00,8’b10101010)
サイクル2:(op,data)=(2’b01,p2)
=(2’b01,8’b11001100)
RTL記述1300に入力パターンP11を与えると、サイクル1で行[013]が、サイクル2で行[015]が実行される。これにより、カバーされた行の集合、すなわち、検証シナリオS21に関するコードカバレッジCC21は、下記の通りである。
CC21=([013],[015])
このコードカバレッジCC21とコードカバレッジ上限情報CM21と比較すると、コードカバレッジCC21とすべて一致するため、コードカバレッジCC21の達成度は、2/2、すなわち、100[%]となる。
また、論理シミュレータ1402は、RTL記述1300に検証シナリオS22に対する具体的な入力パターンP12を与えて、論理シミュレーションを実行する。ここで、入力パターンP12aの一例を示す。
[入力パターンP12a]
サイクル1:(op,data)=(2’b00,p1)
=(2’b00,8’b11110000)
サイクル2:(op,data)=(2’b10,p2)
=(2’b10,8’b11111111)
サイクル3:(op,data)=(2’b11,p3)
=(2’b11,8’b01010101)
ここで、この入力パターンP12aをRTL記述1300に与えると、サイクル1で行[013]が、サイクル2で行[021]が実行される。一方、サイクル3ではどの行も実行されない。これにより、カバーされた行の集合、すなわち、検証シナリオS22に関するコードカバレッジCC22aは、下記の通りである。
CC22a=([013],[021])
このコードカバレッジCC22aとコードカバレッジ上限情報CM22と比較すると、コードカバレッジ上限情報CM22は、([013],[018],[021],[025])であるため、コードカバレッジ上限情報CM22中、実行文[013],[021]がカバーされている。したがって、コードカバレッジCC22aの達成度は、2/4、すなわち、50[%]となる。
このことから、達成度が100[%]ではないので、検証シナリオS22については、さらに別の入力パターンを追加する必要がある。ここで、検証シナリオS22に関する他の入力パターンP12bの一例を示す。
[入力パターンP12b]
サイクル1:(op,data)=(2’b00,p1)
=(2’b00,8’b00110011)
サイクル2:(op,data)=(2’b10,p2)
=(2’b10,8’b00000000)
サイクル3:(op,data)=(2’b11,p3)
=(2’b11,8’b00001111)
この入力パターンP12bをRTL記述1300に与えると、サイクル1で行[013]が、サイクル2で行[018]が、サイクル3で行[025]が実行される。これにより、カバーされた行の集合、すなわち、検証シナリオS22に関するコードカバレッジCC22bは、下記の通りである。
CC22b=([013],[018],[025])
したがって、このコードカバレッジCC22bと入力パターンP12aを与えた場合のコードカバレッジCC22aとをあわせると、カバーされた行の集合、すなわち、検証シナリオS22に関するコードカバレッジCC22は、以下の通りとなる。
CC22=([013],[018],[021],[025])
したがって、このコードカバレッジCC22とコードカバレッジ上限情報CM22とを比較すると、コードカバレッジCC22とすべて一致するため、コードカバレッジCC22の達成度は、2/2、すなわち、100[%]となる。
また、変換ツール1410は、この論理シミュレータ1401に特別な動作をおこなわせる。具体的には、RTL記述1300に、ifやcaseなどの条件分岐文で条件式を評価した結果が不定値xになったとき、その分岐先の候補すべてが実行されたと記録して
、分岐先の実行によって影響を受けるすべての変数に不定値xを代入する。たとえば、つ
ぎの文では、Aの値がxであれば(この文全体が実行されたと記録した上で)BにもCに
もxを代入するような動作をおこなわせる。
if(A==1)B<=1;
elseC<=1;
また、より厳密に、AがxかつBが1でないときだけBにxを代入し、AがxかつCが
1でないときだけCにxを代入するような動作であってもよい。なお、変換ツール141
0は、上述した変換部209に相当する。
(検証支援処理手順)
つぎに、この実施例2にかかる検証支援装置の検証支援処理手順について説明する。図15−1および図15−2は、実施例2にかかる検証支援装置の検証支援処理手順を示すフローチャートである。図15−1において、RTL記述1300が入力された場合(ステップS1501:Yes)、iをi=1にセットする(ステップS1502)。つぎに
、検証シナリオS2iが入力された場合(ステップS1503:Yes)、検証シナリオS2i内の可変の値(検証シナリオS21では、p1,p2に相当)を不定値xに置換することによって、入力パターンPX2iを設定する(ステップS1504)。
つぎに、RTL記述1300に入力パターンPX2iを与えて3値(0,1,x)の論理シミュレーションを実行する(ステップS1505)。ここで、RTL記述1300において条件分岐文が検出されない場合(ステップS1506:No)、ステップS1508に移行する。一方、RTL記述1300において条件分岐文が検出された場合(ステップS1506:Yes)、分岐先に不定値xを代入し(ステップS1507)、ステップS1508に移行する。
そして、論理シミュレーションが終了していない場合(ステップS1508:No)、ステップS1506に移行する。一方、論理シミュレーションが終了した場合(ステップS1508:Yes)、図15−2において、コードカバレッジ上限情報CM2iを決定する(ステップS1509)。このあと、検証シナリオS2i内の可変の値を任意の論理値に置換した入力パターンP2iを設定する(ステップS1510)。
そして、RTL記述1300に入力パターンP2iを与えて2値(0,1)の論理シミュレーションを実行し(ステップS1511)、その実行結果から、コードカバレッジCC2iを生成する(ステップS1512)。
そして、コードカバレッジ上限情報CM2iに対するコードカバレッジCC2iの達成度を算出する(ステップS1513)。この達成度がしきい値以上である場合(ステップS1514:Yes)、ステップS1516に移行する。一方、達成度がしきい値以上でない場合(ステップS1514:No)、コードカバレッジCC2iがその検証シナリオS2iの機能を示すすべての入力パターンを網羅していないこととなる。このすべての入力パターンが設定されていない場合(ステップS1515:No)、ステップS1510に移行して、入力パターンP2iを再設定する。一方、このすべての入力パターンが設定された場合(ステップS1515:Yes)、ステップS1516に移行する。
また、ステップS1516において、nを検証シナリオの数とすると、i=nである場合(ステップS1516:Yes)、一連の処理を終了する。一方、i=nでない場合(ステップS1516:No)、iをインクリメントして(ステップS1517)、ステップS1503に移行する。これにより、つぎの検証シナリオS2iについて検証網羅性を評価することができる。
この実施例2によれば、ユーザ(設計者または検証者)は、コードカバレッジ上限情報CM2iに対するコードカバレッジCC2iの達成度を用いて、検証網羅性を評価することができる。達成度がしきい値以上である場合、コードカバレッジCC2iはその検証シナリオS2iの機能を示すすべての入力パターンを網羅していることとなる。したがって、コードカバレッジCC2iを適用することにより検証漏れを防止することができ、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
また、達成度がしきい値未満である場合、コードカバレッジCC2iがその検証シナリオS2iの機能を示すすべての入力パターンを網羅していないこととなる。したがって、コードカバレッジ上限情報CM2iとコードカバレッジCC2iとの不一致の値の信号線を参照することにより、検証対象回路の設計障害を効率よく検出することができる。またこれにより、検出された設計障害の数から、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
また、達成度がしきい値以上でない場合、論理シミュレータ1402に与える入力パターンを再設定して、論理シミュレータ1402による論理シミュレーションを実行する。そして、達成度がしきい値以上になるまで自動的に論理シミュレーションを実行することにより、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
また、回路情報として、RTL記述1300を用いることができるため、回路情報の選択における自由度の向上を図ることができる。したがって、検証網羅性の評価を効率的におこなうことができる。またこれにより、回路情報がRTL記述であってもコードカバレッジ上限情報を正確に決定することができる。
また、上述した変換ツール1410により、使用する論理シミュレータ1401ではVerilog−HDLの文法規約に従った動作、すなわち上述したifの条件が不成立となりelse部分が実行される動作しか選択できない場合には、あらかじめRTL記述1300を書き換える処理をおこなうこととしてもよい。書き換えをおこなった後のRTL記述を図16に示す。図16は、書き換え後のRTL記述を示す説明図である。
図16に示したRTL記述1600において、新しく追加された行が論理シミュレーションの際に実行された場合には、その行に対応する元の一つまたは複数の行が実行されたとみなす。可変部分に「0」または「1」の値を割り当てた実際の検証作業は、通常のシミュレータ動作(元のRTL記述1300)を使用して良い。そして、検証シナリオS21については行[013],[015]を実行したかどうかで検証網羅性を判定し、検証シナリオS22については行[013],[018],[021],[025]を実行したかどうかで検証網羅性を判定する。
つぎに、この実施例2にかかる検証支援装置の他の検証支援処理手順について説明する。図17は、実施例2にかかる検証支援装置の他の検証支援処理手順を示すフローチャートである。図17において、RTL記述1300が入力された場合(ステップS1701:Yes)、RTL記述1300において条件分岐文が検出されたときは(ステップS1702:Yes)、変換ツール1410によりRTL記述1300を書き換える(ステップS1703)。これにより、RTL記述1600を生成する。
一方、ステップS1702において条件分岐文が検出されなかった場合(ステップS1702:No)、または、RTL記述1300の書き換えをおこなった後は、図15−1に示したステップS1502に移行する。
このように、RTL記述1300に条件分岐文がある場合、条件分岐文のいずれの分岐先も実行できるようにRTL記述1300を変換(書き換え)し、変換されたRTL記述1600を用いて論理シミュレーションを実行する。これにより、論理シミュレーション前にあらかじめRTL記述1300を検証網羅性の評価に適合するように変換することができる。したがって、論理シミュレーションの効率化およびコードカバレッジ上限情報の正確性の向上を図ることができる。
つぎに、実施例3にかかる検証支援装置について説明する。図18は、実施例3にかかる検証支援装置の概略構成を示す説明図である。なお、図5に示した構成と同一構成には同一符号を付しその説明を省略する。実施例1では、検証シナリオS1(S2)の可変の値(b,c,d,e)を不定値xに置換して入力パターンPX1(PX2)を設定した。
一方、実施例3では、可変の値(b,c,d,e)を記号(p,q,r,s)に置換して入力パターンPX31,PX32を設定する。そして、論理シミュレーションにおいては、入力パターンPX31,PX32の記号(p,q,r,s)を用いた記号シミュレーションを実行する。これにより、信号伝搬ごとに記号を用いた論理演算をおこなうことができ、正確な伝搬情報を得ることができる。
なお、実施例3では、実施例1で用いた検証シナリオS1,S2と、入力パターンP1,P2と、コードカバレッジCC1,CC2を用いて説明するが、これらの説明に関しては実施例1と同様であるため、実施例3では省略する。まず、実施例3において、検証シナリオS1に関する入力パターンPX31は、以下の通りとなる。
PX31=(0,p,q,r,s)
具体的には、検証シナリオS1において、図3に示した回路情報300に入力パターンPX31を与えて論理シミュレータ501により記号シミュレーションを実行する。その実行結果を図19に示す。図19は、入力パターンPX31を与えた場合の記号シミュレーションの実行結果を示す説明図である。図19において、実行結果RX31は、以下の通りとなる。
Figure 2006190209
この式(1)に示した実行結果RX31から、信号線B,C,D,E,F,G,Hに記号(p,q,r,s)が伝播したことがわかるため、コードカバレッジ上限情報CM31は、下記の通りとなる。
Figure 2006190209
すなわち、検証シナリオS1では、この6つの信号線B,C,D,E,F,G,Hに関する信号値変化が達成可能と見積もることができる。同様に、検証シナリオS2についても、入力パターンPX32を下記の通り設定する。
PX32=(A,B,C,D,E)=(1,p,q,r,s)
そして、この入力パターンPX32を回路情報300に与えることによって、論理シミュレータ501により、記号シミュレーションを実行する。この記号シミュレーションの実行結果RX32を図20に示す。図20は、入力パターンPX32を与えた場合の記号シミュレーションの実行結果RX32を示す説明図である。図20において、実行結果RX32は、以下の通りとなる。
Figure 2006190209
この式(3)に示した実行結果RX32から、信号線B,C,D,E,F,G,I,Jに記号(p,q,r,s)が伝播したことがわかるため、コードカバレッジ上限情報CM32は、下記の通りとなる。
Figure 2006190209
すなわち、検証シナリオS2では、この8つの信号線B,C,D,E,F,G,I,Jに関する信号値変化が達成可能と見積もることができる。
記号シミュレーションによって得られたコードカバレッジ上限情報CM31,CM32は、上述した式(2)および式(4)に示したように、記号によって信号変化をあらわすことができる。したがって、実施例1の不定値xを用いたコードカバレッジ上限情報CM1,CM2よりも正確な情報となり、検証網羅性の向上を図ることができる。
また、図18において、変換ツール1801は、論理シミュレータ501の実行中において、信号線に伝搬した複数の記号から構成される論理式が、所定の記号数以上の論理式となった場合、当該論理式を他の記号に変換する、論理シミュレータ501は変換された記号を用いて記号シミュレーションを実行する。
すなわち、検証対象回路が大規模な回路である場合、論理式が膨大な記号数から構成される場合があり、計算量が増大するため、演算処理時間が長期化する。したがって、この変換ツール1801で単一の記号に変換することにより、計算量の増加を防止し、演算処理を簡素化して演算処理時間の短縮化を図ることができる。
(検証支援処理手順)
つぎに、この実施例3にかかる検証支援処理手順について説明する。図21−1および図21−2は、実施例3にかかる検証支援処理手順を示すフローチャートである。図21−1において、回路情報300が入力された場合(ステップS2101:Yes)、iを
i=1にセットする(ステップS2102)。つぎに、検証シナリオSiが入力された場
合(ステップS2103:Yes)、検証シナリオSi内の入力パターンPViの可変の値を、記号に置換した入力パターンPX3iに設定する(ステップS2104)。
つぎに、回路情報300に入力パターンPX3iを与えて3値(0,1,x)の論理シミュレーション、すなわち記号シミュレーションを実行する(ステップS2105)。記号シミュレーション中に所定の記号数以上の論理式が出現しない場合(ステップS2106:No)、ステップS2108に移行する。
一方、記号シミュレーション中に所定の記号数以上の論理式が出現した場合(ステップS2106:Yes)、変換ツール1801によりその論理式をあらたな記号に変換する(ステップS2107)。そして、ステップS2108において、記号シミュレーションが終了していなければ(ステップS2108:No)、ステップS2106に移行する。
また、ステップS2108において、記号シミュレーションが終了した場合(ステップS2108:Yes)、コードカバレッジ上限情報CM3iを決定する(ステップS2109)。このあと、検証シナリオSi内の入力パターンPViの可変の値を任意の論理値に置換することにより、入力パターンPi(Pia,Pib)を設定する(ステップS2110)。
そして、図21−2において、回路情報300に入力パターンPiaを与えて2値(0,1)の論理シミュレーションを実行し(ステップS2111)、また、回路情報300に入力パターンPibを与えて2値(0,1)の論理シミュレーションを実行する(ステップS2112)。そして、ステップS2111およびステップS2112の実行結果から、コードカバレッジCCiを生成する(ステップS2113)。
そして、コードカバレッジ上限情報CM3iに対するコードカバレッジCCiの達成度を算出する(ステップS2114)。この達成度がしきい値以上である場合(ステップS2115:Yes)、ステップS2117に移行する。一方、達成度がしきい値以上でない場合(ステップS2115:No)、コードカバレッジCCiがその検証シナリオSiの機能を示すすべての入力パターンを網羅していないこととなる。したがって、そのすべての入力パターンが設定されていない場合(ステップS2116:No)、ステップS2110に移行して、入力パターンPiを再設定する。一方、このすべての入力パターンが設定された場合(ステップS2116:Yes)、ステップS2117に移行する。
また、ステップS2117において、nを検証シナリオの数とすると、i=nである場合(ステップS2117:Yes)、一連の処理を終了する。一方、i=nでない場合(ステップS2117:No)、iをインクリメントして(ステップS2118)、ステップS2103に移行する。これにより、つぎの検証シナリオSiについて検証網羅性を評価することができる。
この実施例3によれば、上述した実施例1と同様の作用効果を奏することができる。特に記号シミュレーションにおいて記号を用いた論理式によって、伝搬箇所をあらわすことができ、コードカバレッジ上限情報の内容をより正確にあらわすことができる。これにより、検証シナリオSiに含まれているすべての入力パターンを実行した場合に達成可能と想定されるコードカバレッジをより正確に網羅することができる。また、変換ツール1801を適用することにより、記号シミュレーション中の計算量の増加を防止し、演算処理を簡素化して演算処理時間の短縮化を図ることができる。
以上説明したように、この発明の実施の形態および実施例1〜3にかかる検証支援プログラム、記録媒体、検証支援装置、および検証支援方法によれば、検証シナリオ毎のコードカバレッジ達成度が十分であるかどうかを定量的に評価できるという効果を奏する。これにより、検証シナリオ毎のコードカバレッジ上限情報を、従来の機能カバレッジやコードカバレッジと同様、検証網羅性の判定に利用できるという効果を奏する。
特に、検証シナリオ毎のコードカバレッジは、機能とコードの組み合わせパターンをどれだけテストしたかを示しており、機能カバレッジやコードカバレッジを個別に達成するという基準を使うよりも洩れの少ない検証を実現することができるという効果を奏する。
以上のことから、この発明の検証支援プログラム、記録媒体、検証支援装置、および検証支援方法によれば、コードカバレッジの達成度を見積もることにより、検証シナリオの機能に関する検証網羅性の向上を図り、LSIの設計障害を正確かつ効率的な検出を図ることができるという効果を奏する。またこれにより、論理シミュレーションの終了時期を的確に判断することができるという効果を奏する。
なお、本実施の形態および実施例1〜3で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
(付記1)検証対象回路の回路情報と、前記検証対象回路の機能を検証する可変の値を含んだ検証シナリオと、を取得させる取得工程と、
前記取得工程によって取得された回路情報に前記取得工程によって取得された検証シナリオを与えることによって、論理シミュレーションを実行させる第1の実行工程と、
前記実行工程によって実行された実行結果に基づいて、前記回路情報内において前記可変の値が伝搬した箇所を示すコードカバレッジ上限情報を決定させる決定工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
(付記2)前記検証シナリオの可変の値を不定値に置換させる置換工程をコンピュータに実行させ、
前記第1の実行工程は、
前記置換工程によって不定値に置換された検証シナリオを前記検証対象回路の回路情報に与えることによって、論理シミュレーションを実行させ、
前記決定工程は、
前記回路情報内において前記不定値が伝搬した箇所を示すコードカバレッジ上限情報を決定させることを特徴とする付記1に記載の検証支援プログラム。
(付記3)前記取得工程は、
前記回路情報として、前記検証対象回路のRTL記述を取得させ、
前記第1の実行工程は、
前記検証シナリオを前記RTL記述に与えることによって、論理シミュレーションを実行させ、
前記決定工程は、
前記RTL記述内において前記不定値が伝搬した箇所を示すコードカバレッジ上限情報を決定させることを特徴とする付記2に記載の検証支援プログラム。
(付記4)前記第1の実行工程による論理シミュレーション中に、前記RTL記述に含まれている条件分岐文において条件不成立となった場合、前記条件分岐文の分岐先となる他の条件分岐文の実行結果を不定値に変換させる変換工程をコンピュータに実行させ、
前記第1の実行工程は、
前記変換工程によって変換された不定値を用いて論理シミュレーションを継続実行させることを特徴とする付記3に記載の検証支援プログラム。
(付記5)前記RTL記述に条件分岐文がある場合、前記条件分岐文のいずれの分岐先も実行できるように前記RTL記述を変換させる変換工程をコンピュータに実行させ、
前記第1の実行工程は、
前記検証シナリオを前記変換工程によって変換されたRTL記述に与えることによって、論理シミュレーションを実行させることを特徴とする付記3に記載の検証支援プログラム。
(付記6)前記検証シナリオの可変の値を記号に置換させる置換工程をコンピュータに実行させ、
前記第1の実行工程は、
前記置換工程によって記号に置換された検証シナリオを前記検証対象回路の回路情報に与えることによって、論理シミュレーションを実行させることを特徴とする付記1に記載の検証支援プログラム。
(付記7)前記第1の実行工程による論理シミュレーション中に、所定数の記号からなる論理式が出現した場合、当該論理式を、当該論理式の記号数よりも少ない数の記号に変換する変換工程をコンピュータに実行させ、
前記第1の実行工程は、
前記変換工程によって変換された記号を用いて論理シミュレーションを継続実行させ、
前記決定工程は、
前記回路情報内において前記記号が伝搬した箇所を示すコードカバレッジ上限情報を決定させることを特徴とする付記6に記載の検証支援プログラム。
(付記8)前記検証シナリオの可変の値に任意の論理値を与えることによって入力パターンを設定させる設定工程と、
前記設定工程によって設定された入力パターンを前記回路情報に与えることによって、論理シミュレーションを実行させる第2の実行工程と、
前記第2の実行工程によって実行された実行結果に基づいて、前記回路情報に関するコードカバレッジを生成させる生成工程と、
前記決定工程によって決定されたコードカバレッジ上限情報に対する、前記生成工程によって生成されたコードカバレッジの達成度を算出させる算出工程と、
をコンピュータに実行させることを特徴とする付記1〜7のいずれか一つに記載の検証支援プログラム。
(付記9)前記算出工程によって算出された達成度に基づいて、前記コードカバレッジによる検証網羅性を判定する判定工程をコンピュータに実行させることを特徴とする付記8に記載の検証支援プログラム。
(付記10)前記設定工程は、
前記判定工程によって判定された判定結果に基づいて、前記検証シナリオの可変の値に前記任意の論理値とは異なる論理値を与えることによって前記入力パターンとは異なる他の入力パターンを設定させ、
前記第2の実行工程は、
前記設定工程によって設定された他の入力パターンを前記回路情報に与えることによって、前記検証対象回路の論理シミュレーションを実行させ、
前記生成工程は、
前記第2の実行工程によって前記入力パターンを用いて実行された実行結果と前記第2の実行工程によって前記他の入力パターンを用いて実行された実行結果とに基づいて、前記コードカバレッジとは異なる他のコードカバレッジを生成させ、
前記算出工程は、
前記コードカバレッジ上限情報に対する、前記生成工程によって生成された他のコードカバレッジの達成度を算出させることを特徴とする付記9に記載の検証支援プログラム。
(付記11)付記1〜10のいずれか一つに記載の検証支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
(付記12)検証対象回路の回路情報と、前記検証対象回路の機能を検証する可変の値を含んだ検証シナリオと、を取得する取得手段と、
前記取得手段によって取得された回路情報に前記取得手段によって取得された検証シナリオを与えることによって、論理シミュレーションを実行する実行手段と、
前記実行手段によって実行された実行結果に基づいて、前記回路情報内において前記可変の値が伝搬した箇所を示すコードカバレッジ上限情報を決定する決定手段と、
を備えることを特徴とする検証支援装置。
(付記13)検証対象回路の回路情報と、前記検証対象回路の機能を検証する可変の値を含んだ検証シナリオと、を取得する取得工程と、
前記取得工程によって取得された回路情報に前記取得工程によって取得された検証シナリオを与えることによって、論理シミュレーションを実行する実行工程と、
前記実行工程によって実行された実行結果に基づいて、前記回路情報内において前記可変の値が伝搬した箇所を示すコードカバレッジ上限情報を決定する決定工程と、
を含んだことを特徴とする検証支援方法。
以上のように、本発明にかかる検証支援プログラム、記録媒体、検証支援装置、および検証支援方法は、半導体回路の検証に有用であり、特に、大規模回路の検証に適している。
この発明の実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。 この発明の実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。 検証対象回路の回路情報の一例を示す説明図である。 この発明の実施の形態にかかる検証支援装置の検証支援処理手順を示すフローチャートである。 実施例1にかかる検証支援装置の概略構成を示す説明図である。 3値の論理シミュレーションの実行結果RX1を示す説明図である。 3値の論理シミュレーションの実行結果RX2を示す説明図である。 2値の論理シミュレーションの実行結果R1aを示す説明図である。 2値の論理シミュレーションの実行結果R1bを示す説明図である。 2値の論理シミュレーションの実行結果R2aを示す説明図である。 2値の論理シミュレーションの実行結果R2bを示す説明図である。 実施例1にかかる検証支援装置の検証支援処理手順を示すフローチャート(その1)である。 実施例1にかかる検証支援装置の検証支援処理手順を示すフローチャート(その2)である。 実施例2にかかる回路情報を示す説明図である。 実施例2にかかる検証支援装置の概略構成を示す説明図である。 実施例2にかかる検証支援装置の検証支援処理手順を示すフローチャート(その1)である。 実施例2にかかる検証支援装置の検証支援処理手順を示すフローチャート(その2)である。 書き換え後のRTL記述を示す説明図である。 実施例2にかかる検証支援装置の他の検証支援処理手順を示すフローチャートである。 実施例3にかかる検証支援装置の概略構成を示す説明図である。 入力パターンPX31を与えた場合の記号シミュレーションの実行結果RX31を示す説明図である。 入力パターンPX32を与えた場合の記号シミュレーションの実行結果RX32を示す説明図である。 実施例3にかかる検証支援処理手順を示すフローチャート(その1)である。 実施例3にかかる検証支援処理手順を示すフローチャート(その2)である。 論理回路を示す回路図である。 論理回路のシミュレーション結果(その1)を示す説明図である。 論理回路のシミュレーション結果(その2)を示す説明図である。 論理回路のシミュレーション結果(その3)を示す説明図である。
符号の説明
200 検証支援装置
201 取得部
202 置換部
203 設定部
204 実行部
205 決定部
206 生成部
207 算出部
208 判定部
209 変換部
211 第1の実行部
212 第2の実行部
300 回路情報
CC コードカバレッジ
CM コードカバレッジ上限情報
S 検証シナリオ

Claims (5)

  1. 検証対象回路の回路情報と、前記検証対象回路の機能を検証する可変の値を含んだ検証シナリオと、を取得させる取得工程と、
    前記取得工程によって取得された回路情報に前記取得工程によって取得された検証シナリオを与えることによって、論理シミュレーションを実行させる第1の実行工程と、
    前記第1の実行工程によって実行された実行結果に基づいて、前記回路情報内において前記可変の値が伝搬した箇所を示すコードカバレッジ上限情報を決定させる決定工程と、
    をコンピュータに実行させることを特徴とする検証支援プログラム。
  2. 前記検証シナリオの可変の値に任意の論理値を与えることによって入力パターンを設定させる設定工程と、
    前記設定工程によって設定された入力パターンを前記回路情報に与えることによって、論理シミュレーションを実行させる第2の実行工程と、
    前記第2の実行工程によって実行された実行結果に基づいて、前記回路情報に関するコードカバレッジを生成させる生成工程と、
    前記決定工程によって決定されたコードカバレッジ上限情報に対する、前記生成工程によって生成されたコードカバレッジの達成度を算出させる算出工程と、
    をコンピュータに実行させることを特徴とする請求項1に記載の検証支援プログラム。
  3. 請求項1または2に記載の検証支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
  4. 検証対象回路の回路情報と、前記検証対象回路の機能を検証する可変の値を含んだ検証シナリオと、を取得する取得手段と、
    前記取得手段によって取得された回路情報に前記取得手段によって取得された検証シナリオを与えることによって、論理シミュレーションを実行する実行手段と、
    前記実行手段によって実行された実行結果に基づいて、前記回路情報内において前記可変の値が伝搬した箇所を示すコードカバレッジ上限情報を決定する決定手段と、
    を備えることを特徴とする検証支援装置。
  5. 検証対象回路の回路情報と、前記検証対象回路の機能を検証する可変の値を含んだ検証シナリオと、を取得する取得工程と、
    前記取得工程によって取得された回路情報に前記取得工程によって取得された検証シナリオを与えることによって、論理シミュレーションを実行する実行工程と、
    前記実行工程によって実行された実行結果に基づいて、前記回路情報内において前記可変の値が伝搬した箇所を示すコードカバレッジ上限情報を決定する決定工程と、
    を含んだことを特徴とする検証支援方法。
JP2005003097A 2005-01-07 2005-01-07 検証支援プログラムおよび検証支援装置 Expired - Fee Related JP4217220B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005003097A JP4217220B2 (ja) 2005-01-07 2005-01-07 検証支援プログラムおよび検証支援装置
US11/116,283 US7464015B2 (en) 2005-01-07 2005-04-28 Method and apparatus for supporting verification, and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005003097A JP4217220B2 (ja) 2005-01-07 2005-01-07 検証支援プログラムおよび検証支援装置

Publications (2)

Publication Number Publication Date
JP2006190209A true JP2006190209A (ja) 2006-07-20
JP4217220B2 JP4217220B2 (ja) 2009-01-28

Family

ID=36654342

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005003097A Expired - Fee Related JP4217220B2 (ja) 2005-01-07 2005-01-07 検証支援プログラムおよび検証支援装置

Country Status (2)

Country Link
US (1) US7464015B2 (ja)
JP (1) JP4217220B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779377B2 (en) 2006-09-26 2010-08-17 Fujitsu Limited Method and apparatus for aiding verification of circuit, and computer product
JP2010267722A (ja) * 2009-05-13 2010-11-25 Nuflare Technology Inc 荷電粒子ビーム描画装置及び荷電粒子ビーム描画方法
US7984403B2 (en) 2008-05-19 2011-07-19 Fujitsu Limited Verification supporting system
US8015519B2 (en) 2008-04-30 2011-09-06 Fujitsu Limited Verification supporting apparatus, verification supporting method, and computer product
US8060848B2 (en) 2008-09-26 2011-11-15 Fujitsu Limited Verification support apparatus, verification support method, and computer product
US8099697B2 (en) 2008-09-08 2012-01-17 Fujitsu Limited Hardware logic verification support apparatus, verification support method and computer product
US8584064B2 (en) 2009-11-19 2013-11-12 Fujitsu Limited Verification support apparatus and verification support method to verify target circuit based on hardware description information

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7428715B2 (en) * 2005-10-27 2008-09-23 International Business Machines Corporation Hole query for functional coverage analysis
US7730478B2 (en) 2006-10-04 2010-06-01 Salesforce.Com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
JP5056856B2 (ja) * 2007-10-18 2012-10-24 富士通株式会社 論理回路モデルの検証方法及び装置
US7934183B2 (en) * 2008-04-25 2011-04-26 Synopsys, Inc. Method and apparatus for simulating behavioral constructs using indeterminate values
US8522215B1 (en) 2008-07-14 2013-08-27 The Mathworks, Inc. Coverage analysis for variable size signals
US9418185B2 (en) * 2008-12-19 2016-08-16 Viswanathan Madhavan Thermal modeling of an orthogonal machining process
US8171437B2 (en) * 2009-03-25 2012-05-01 International Business Machines Corporation Automated convergence of ternary simulation by saturation of deep gates
US8554522B2 (en) * 2009-12-16 2013-10-08 International Business Machines Corporation Detection of design redundancy
US8402403B2 (en) * 2009-12-17 2013-03-19 International Business Machines Corporation Verifying a register-transfer level design of an execution unit
US8775150B1 (en) * 2009-12-17 2014-07-08 Cadence Design Systems, Inc. Method and system for providing an implicit unknown value to user enum data constructs in an HDL system to model power shutoff in simulation
US8418119B2 (en) 2011-05-10 2013-04-09 International Business Machines Corporation Logical circuit netlist reduction and model simplification using simulation results containing symbolic values
US8443314B1 (en) 2012-02-23 2013-05-14 International Business Machines Corporation Abstraction level-preserving conversion of flip-flop-inferred hardware description language (HDL) to instantiated HDL
US9146838B2 (en) * 2013-06-03 2015-09-29 The Mathworks, Inc. Code and model coverage as a time series
JP5644899B1 (ja) * 2013-06-14 2014-12-24 日本電気株式会社 回路検証装置、回路検証方法および回路検証プログラム
US10540468B1 (en) 2018-07-11 2020-01-21 International Business Machines Corporation Verification complexity reduction via range-preserving input-to-constant conversion
US11086759B2 (en) * 2018-09-27 2021-08-10 SeaLights Technologies LTD System and method for probe injection for code coverage

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2525393B2 (ja) 1987-02-21 1996-08-21 株式会社日立製作所 論理シミュレ−ションのテストカバレ−ジ方式
JPH0362172A (ja) 1989-07-31 1991-03-18 Hitachi Ltd 論理検証充分性評価方法
JPH07319927A (ja) 1994-05-23 1995-12-08 Hitachi Ltd 論理検証の網羅率測定方式
US6975976B1 (en) * 2000-03-20 2005-12-13 Nec Corporation Property specific testbench generation framework for circuit design validation by guided simulation
JP3822044B2 (ja) * 2000-09-25 2006-09-13 株式会社東芝 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体
US7292970B1 (en) * 2002-04-30 2007-11-06 Unisys Corporation Finding unexercised logic for use in code coverage testing
JP4182202B2 (ja) 2002-08-02 2008-11-19 富士通マイクロエレクトロニクス株式会社 シミュレーション用カバレッジ算出装置及びシミュレーション用カバレッジ算出方法
JP3974048B2 (ja) * 2003-02-06 2007-09-12 株式会社東芝 設計検証システム、設計検証方法及び設計検証プログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779377B2 (en) 2006-09-26 2010-08-17 Fujitsu Limited Method and apparatus for aiding verification of circuit, and computer product
US8015519B2 (en) 2008-04-30 2011-09-06 Fujitsu Limited Verification supporting apparatus, verification supporting method, and computer product
US7984403B2 (en) 2008-05-19 2011-07-19 Fujitsu Limited Verification supporting system
US8312400B2 (en) 2008-05-19 2012-11-13 Fujitsu Limited Verification supporting system
US8099697B2 (en) 2008-09-08 2012-01-17 Fujitsu Limited Hardware logic verification support apparatus, verification support method and computer product
US8060848B2 (en) 2008-09-26 2011-11-15 Fujitsu Limited Verification support apparatus, verification support method, and computer product
JP2010267722A (ja) * 2009-05-13 2010-11-25 Nuflare Technology Inc 荷電粒子ビーム描画装置及び荷電粒子ビーム描画方法
US8584064B2 (en) 2009-11-19 2013-11-12 Fujitsu Limited Verification support apparatus and verification support method to verify target circuit based on hardware description information

Also Published As

Publication number Publication date
US7464015B2 (en) 2008-12-09
US20060155521A1 (en) 2006-07-13
JP4217220B2 (ja) 2009-01-28

Similar Documents

Publication Publication Date Title
JP4217220B2 (ja) 検証支援プログラムおよび検証支援装置
US7958470B1 (en) Method and system for false path analysis
US8302041B1 (en) Implementation flow for electronic circuit designs using choice networks
US8060848B2 (en) Verification support apparatus, verification support method, and computer product
JP4481762B2 (ja) 論理検証装置、論理検証方法、論理検証プログラムおよび記録媒体
US8099697B2 (en) Hardware logic verification support apparatus, verification support method and computer product
CN114880975A (zh) 一种硬件木马的生成方法、系统、设备以及介质
JPWO2006006198A1 (ja) 電力算出装置、電力算出方法、耐タンパ性評価装置及び耐タンパ性評価方法
US8418119B2 (en) Logical circuit netlist reduction and model simplification using simulation results containing symbolic values
JP4355525B2 (ja) 検証支援方法、検証支援プログラムおよび検証支援装置
US10839132B2 (en) Automatic cover point generation based on register transfer level analysis
US8024684B2 (en) Apparatus, method, and computer product for estimating power consumption of LSI
JP5445066B2 (ja) 解析支援プログラム、解析支援装置、および解析支援方法
US8458110B2 (en) Verification support apparatus, verification support method, and computer product
US20090326906A1 (en) Verification support apparatus, verification support method, and computer product
US10666255B1 (en) System and method for compacting X-pessimism fixes for gate-level logic simulation
JP4649356B2 (ja) 消費電力算出プログラム、記録媒体、消費電力算出方法、および消費電力算出装置
US8516419B2 (en) Verification device of semiconductor integrated circuit, verification method of semiconductor integrated circuit, and computer readable medium storing verification program of semiconductor integrated circuit
JP5374937B2 (ja) 電力指標算出プログラム、電力指標算出装置、および電力指標算出方法
JP2006268165A (ja) 集積回路のタイミング解析装置、集積回路のタイミング最適化装置、集積回路のタイミング解析方法、集積回路のタイミング最適化方法、集積回路基板の製造方法、制御プログラムおよび可読記録媒体
WO2004068347A1 (en) Method and apparatus for categorising test scripts
JP4481783B2 (ja) シミュレーションモデル作成装置及びシミュレーション装置とシステム並びに方法とプログラム
JP4891807B2 (ja) 高位合成装置および高位合成方法
JP2008004024A (ja) レイアウト設計プログラム、該プログラムを記録した記録媒体、レイアウト設計装置、およびレイアウト設計方法
JP4747036B2 (ja) Lsi解析プログラム、該プログラムを記録した記録媒体、lsi解析装置、およびlsi解析方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080926

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: 20081104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081107

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111114

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111114

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121114

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121114

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131114

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees