(57)【要約】【課題】回路記述から本来備えるべき機能に相当する記述の抜けを検出する。【解決手段】本発明の一態様としての回路設計検証方法は、１つ以上の条件要素を含む複数の条件文を用いて回路を記述した回路記述を入力する入力ステップと、前記回路記述に含まれる各条件文と、前記回路記述に含まれる各条件要素を抽出する抽出ステップと、前記回路に対するテストデータを用いて前記回路記述を実行して、前記条件文が成立したときに各前記条件要素が常に真であったか、常に偽であったか、あるいは真と偽の両方があったかを表す情報を、前記条件文ごとに表したテーブルを生成するテーブル生成ステップと、を備える。【選択図】図２３
2008282351.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の条件要素を含む複数の条件文を用いて回路を記述した回路記述を入力する入力ステップと、
前記回路記述に含まれる各条件文と、前記回路記述に含まれる各条件要素を抽出する抽出ステップと、
前記回路に対するテストデータを用いて前記回路記述を実行して、前記条件文が成立したときに各前記条件要素が常に真であったか、常に偽であったか、あるいは真と偽の両方があったかを表す情報を、前記条件文ごとに表したテーブルを生成するテーブル生成ステップと、
を備えた回路設計検証方法。
【請求項２】
第１の回路を記述した第１の回路記述から生成された第１のテーブルと、前記第１の回路と異なる第２の回路を記述した第２の回路記述から生成された第２のテーブルとを比較する比較ステップをさらに備えたことを特徴とする請求項１に記載の回路設計検証方法。
【請求項３】
前記比較ステップは、前記第１のテーブルと前記第２のテーブルとの間で前記情報が不一致である、条件文と条件要素との組を検出することを特徴とする請求項１または２に記載の回路設計検証方法。
【請求項４】
前記回路記述は、前記複数の条件文の成否に基づいて複数の各状態の遷移を表した状態遷移マシンの記述を含み、
前記抽出ステップは、前記状態遷移マシンの記述に含まれる条件文と条件要素とを抽出し、
前記テーブル生成ステップは、状態の遷移が起こるために成立することが必要な条件文が成立したときに各条件要素が常に真であったか、常に偽であったか、あるいは真と偽の両方があったかを表す情報を、各状態の遷移ごとに表したテーブルを生成することを特徴とする請求項１ないし３のいずれか一項に記載の回路設計検証方法。
【請求項５】
請求項１〜４のいずれか一項に記載の各ステップをコンピュータに実行させるための命令コードが記述された回路設計検証のためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば論理回路を再利用して新たなシステム回路を設計および検証する際に用いて好適な回路設計検証方法および回路設計検証のためのプログラムに関する。
【背景技術】
【０００２】
近年、システムLSI（Large-Scale Integration：大規模集積回路）設計における回路規模増大・短TAT（Turn Around Time）化により、設計・検証のコスト削減、品質向上を図るべく、IP(Interectual Property: 再利用可能な設計資産)や過去の設計資産など回路モジュールの再利用がされている。
【０００３】
再利用されたモジュールが、該再利用されるモジュールと通信するモジュール（たとえば前段のモジュール）に要求されている機能に対応している場合、不具合が発生することはない。しかし、前段のモジュールに新たな機能が追加されるなどの機能変更がなされた場合、その追加された機能が実行されると、その機能に相応する機能が再利用モジュールにないことから不具合が発生する。
【０００４】
以下、不具合の発生について例示する。図１に示す新規開発システム回路において、スレーブ（Slave）３１を再利用モジュール、それ以外のモジュール、すなわちジェネレータ（Generator）３２、マスタ（Master）３３、メモリ（Memory）３４を新規開発モジュールとする。
【０００５】
トランザクションのrequest(要求)/acknowledge(許可)といったハンドシェイクに関し、以前のシステム回路ではサポートしていなかったrequestキャンセル機能が新規開発システム回路ではサポートされたとする。すなわち、図２（Ａ）に示すように、以前のシステム回路では、マスタがreq信号（リクエストを表す信号）を発行した後、スレーブからack信号（許可を表す信号）がアサートされるまでマスタのreq信号はデアサートされなかったが、新規開発システム回路では、図２（Ｂ）に示すように、マスタがreq信号を自らキャンセルするrequestキャンセル機能がサポートされたとする。マスタはキャンセル機能を搭載するものの、再利用されたスレーブはこのキャンセル機能に対応した機能を搭載していないため、不具合が発生することとなる。不具合が発生する過程を、図３を参照しながら説明する。
【０００６】
１．マスタおよびスレーブは、初期のIDLE状態にある。
２．マスタがreq信号をアサート後（S1）、ARBIT状態へ遷移し、スレーブによるack信号のアサート待ちとなる（S2）。
３．スレーブはreq信号のアサートを受け、ARBIT状態へ遷移する（S3）。
４．マスタはreq信号のデアサート後、IDLE状態へ遷移する（S4）(requestキャンセル発生)。
５．スレーブはack信号のアサート後、WAIT_TRANS状態へ遷移し（S5）、データ転送を意味するvalid信号のアサート待ちとなる（S6）。
６．マスタは再びreq信号のアサート後（S7）、ARBIT状態へ遷移し、スレーブによるack信号のアサート待ちとなる（S8）。
７．マスタおよびスレーブは互いに信号のアサートを待ち続けるためにデッドロック状態が発生する(不具合発生)。
【０００７】
本来、新規開発システム回路におけるスレーブの回路記述では、マスタに新たに搭載されたキャンセル機能に対応して、図４に示す破線で囲まれた記述が必要になるが、この記述が抜けてしまっていると、上述した不具合が発生することとなる。なお図４はマスタおよびスレーブの回路記述のうちマスタおよびスレーブの状態遷移を記述した状態遷移記述の一部を示している。従来技術では、上記記述抜けを検出することが困難であり、検証漏れが発生する問題があった。
【０００８】
検証漏れを防ぎ、検証確度を向上する技術として以下のようなカバレッジ計測手法がある。
【０００９】
・コードカバレッジ
コードカバレッジは回路として記述された各コードについて、「このステートメントは実行されたか？」等、コードそのもの実行有無を計測する定義済みのカバレッジ指標である。これはコードとして記述された機能について実行有無の計測に有効である。しかし、記述されていない機能は計測対象外であり、以上のような記述抜けを検出できないことが問題である。
【００１０】
・機能カバレッジ
機能カバレッジは「writeの各バースト長のトランザクションは発生したか？」等、実際の機能の実行有無を計測するユーザ定義のカバレッジ指標である。これはユーザによるカバレッジ定義に抜けが無ければ、機能そのものを計測するため有効である。しかし、ユーザによる定義に抜けがある場合、以上のような記述抜けを自動的に検出できないことが問題である。
【００１１】
なお、回路記述を最適化する技術を記載した文書として特開２００４−３５５１３０号公報がある。これは未実行箇所を自動削除することで最適化を図るものである。特にverilogのfunctionを呼び出すごとにインライン展開して個別に計測、削除を行うものである。ただし、コードの削除をカバレッジ結果に頼っているため、ベクタが十分でなければ、実行され得るコードを削除する可能性がある。本文書に記載された技術は回路記述を最適化するものであり、回路記述から、本来必要な機能の記述の抜けを検出することはできない。
【特許文献１】特開２００４−３５５１３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、回路記述から本来備えるべき機能に相当する記述の抜けを検出することを可能とした回路設計検証方法および回路設計検証のためのプログラムを提供する。
【課題を解決するための手段】
【００１３】
本発明の一態様としての回路設計検証方法は、１つ以上の条件要素を含む複数の条件文を用いて回路を記述した回路記述を入力する入力ステップと、前記回路記述に含まれる各条件文と、前記回路記述に含まれる各条件要素を抽出する抽出ステップと、前記回路に対するテストデータを用いて前記回路記述を実行して、前記条件文が成立したときに各前記条件要素が常に真であったか、常に偽であったか、あるいは真と偽の両方があったかを表す情報を、前記条件文ごとに表したテーブルを生成するテーブル生成ステップと、を備える。
【発明の効果】
【００１４】
本発明により、回路記述から本来備えるべき機能に相当する記述の抜けを検出することが可能になる。
【発明を実施するための最良の形態】
【００１５】
（実施形態１）
図５は本発明の実施形態１としての回路設計検証方法を実行するシステムの構成を示す図である。この回路設計検証方法を実行するための命令コードを記述したプログラムをコンピュータに実行させることにより該システムと同等の機能を実現することも可能である。
【００１６】
検証対象回路(DUT：Device Under Test)の回路記述１が本システムに入力される。
【００１７】
テーブル作成・表示手段２は回路記述１から各条件文と、各条件文に含まれる条件要素（論理式などによって記述された条件記述）を検出し、条件文ごとに該条件文が成立するために満たされることが必要な条件要素の真偽を表したテーブルAを作成および表示する。
【００１８】
カバレッジ値算出・表示手段3は、テーブル作成・表示手段２で作成されたテーブルに基づき、各条件文が成立するために真偽が満たされることが必要な条件要素の数の、全ての条件要素の数に対する割合を表すカバレッジ値を算出し、算出したカバレッジ値を上記テーブルAに書き込み、書き込み後のテーブルAを表示および出力する。
【００１９】
以下、図５のシステムについて具体例を用いて説明する。
【００２０】
本例では、設計・検証者が、状態遷移マシンを有するスレーブの回路記述を入力したとする。図６はこの記述の一部であり、スレーブの状態遷移を条件文の成否によって決める部分である。
【００２１】
設計・検証者が、図６のようなコードを本システムに入力し、該コードはテーブル作成・表示手段２およびカバレッジ値算出・表示手段３によって、以下のように処理される。
【００２２】
（１）テーブル作成・表示手段２は、回路記述１を先頭から走査し、現在の状態(state)と、遷移先の状態(next_state)と、その遷移のための条件文とを抽出する。
【００２３】
（２）（１）で抽出された条件文(入れ子構造の場合、上位の条件文を含む)から、論理和、論理積演算子で区切られた条件記述(サブエクスプレッションあるいは条件要素などと呼ばれる)を検出する。１つの条件文には１つまたは複数の条件要素が含まれる。
【００２４】
（３）（２）で検出された条件要素について、今までの走査で蓄積された条件要素集合と照合し、同一のものがあればその条件要素に対しT(真)、論理が反転している点を除いて同一のものがあればそれに対しF(偽)、全く存在しなければ新たに条件要素集合へ追加し、Tとして記録する。ただし、本例では、２つ以上の異なる「if-else」構造内では同一の条件要素あるいは論理が反転している点を除いて同一の条件要素は含まれないものとする（ただし入れ子構造の場合は除く）。回路記述１における条件文「else if(wr_in_bus==1’b0)」に対して（１）〜（３）を行った例を図７に示す。以降の説明において「1’b0」は１ビットの“０”、「1’b1」は１ビットの“１”、「2’b11」は２ビットの“１１”を意味する
この条件文は入れ子構造になっており、この条件文が成立するためには「wr_in_bus==1’b0」が真（すなわち「wr_in_bus==1’b1」が偽）であることの他に、上位の条件文「if(valid_in_bus==1’b1)」における「valid_in_bus==1’b1」が真であることが必要である。よって（２）では条件要素として、「wr_in_bus==1’b0」と「valid_in_bus==1’b1」との両方が検出される。そして、「valid_in_bus==1’b0」は、条件要素集合に含まれる「valid_in_bus==1’b1」と論理が反転している点を除けば同じであるため、（３）では「valid_in_bus==1’b1」に対してF(偽)が記録される(「valid_in_bus==1’b0」に対してT(真)を記録してもよい)。「wr_in_bus==1’b1」は要素条件集合に既に同一のものが記録されているためT(真)が記録される。この結果に基づき、図８に示すテーブルAのセルを埋める。ここでは、stateが「WAIT_TRANS」でnext_stateが「READ1」の行が埋められる。
【００２５】
（４）全ての状態遷移について（１）〜（３）を行った結果、図８のテーブルAが得られる。T（True）が記述されたセルは、該当する条件文が成立するためには常に、該当する条件要素が真でなければならないことを意味する。同様にF（False）が記述されたセルは、該当する条件文が成立するためには常に、該当する条件要素が偽でなければならないことを意味する。テーブルAに記述された「input」は、該当する信号（たとえばreq,wr_in_bus）が、検証対象回路への入力信号であることを示し、「reg」は、該当する信号（たとえばcount）が検証対象回路内部で用いられるレジスタの値であることを示す。テーブル作成・表示手段２はテーブルAを表示してもよい。この後、このテーブルAにおいてelse項（条件を持たない項、たとえば図８においてWAIT_TRANSからWAIT_TRANSへの遷移の条件文）の遷移を除く各遷移について、その遷移が起こるために真偽が満たされるべき条件要素の数（すなわちその遷移が起こるために成立すべき条件文に対して真偽が満たされるべき条件要素の数）の、全条件要素数に対する割合である指標（条件要素カバレッジ）をカバレッジ値算出・表示手段３において算出し、上記テーブルAに記述する。この結果、テーブルAは図９のようになる。カバレッジ値算出・表示手段３はこのテーブルAを表示する。なお図９のテーブルＡにおける「？」は、設計・検証者に対して、該当するセル（条件要素と遷移（条件文）との組）について、確認（たとえば、真偽を考慮しなくて本当に問題ないか等）を促している。
【００２６】
本実施の形態では、状態遷移記述を対象にテーブルを作成したが、本発明は状態遷移記述のみならず、回路の動作記述など、他の回路記述にも当然に適用可能である。
【００２７】
以上のように、本実施の形態によれば、従来からあった、縦軸にstate、横軸にnext_state、各セルに条件文を表示する方法に比べ、対象としている遷移のために真偽が満たされるべき条件要素（すなわちその遷移が起こるために成立すべき条件文に対して真偽が満たされるべき条件要素）（以下、必要条件要素と称されることがある）と、そうでない条件要素（以下、非条件要素と称されることがある）とが区別されて表示されるため、設計・検証者に条件抜けの発見を促すことが可能となり、検証確度の向上が期待される。 
さらに、条件の抜けと関係の深い「条件文の詳細度合い」（すなわち条件文の成立に対してどれだけ多くの条件要素の真偽成立が影響するか）を条件要素カバレッジとして提示することが可能となり、これによっても検証確度の向上が期待される。
【００２８】
（実施形態２）  
図１０は本発明の実施形態２としての回路設計検証方法を実行するシステムの構成を示す図である。この回路設計検証方法を実行するための命令コードを記述したプログラムをコンピュータに実行させることにより該システムと同等の機能を実現することも可能である。
【００２９】
検証対象回路(DUT)の回路記述と、検証対象回路(DUT)と協調動作する他の回路の回路記述とを含む回路記述（たとえば新規開発回路システム全体の回路記述）１１が本システムに入力される。回路記述１１はたとえばシステム内の各回路の状態遷移記述および各回路の動作記述を含む。さらに検証対象回路（DUT）のテストベンチ記述８と、実施形態１で求められたテーブルAとが本システムに入力される。
【００３０】
モニター用回路記述生成手段４は、テーブルAの各遷移に対応する条件文に対し全ての非条件要素の真偽を計測するためのモニターコードを回路記述１１に挿入して、モニター用回路記述５を生成する。
【００３１】
シミュレーション手段６は、モニター用回路記述５とテストベンチ記述８とを用いてシミュレーションを行う。テストベンチ記述はたとえばテストデータに対応する。
【００３２】
可変性計測・表示手段７は、シミュレーションにより得られた結果（カバレッジ結果）をテーブルAへ追加することによりテーブルB1を得る。可変性計測・表示手段７はテーブルB1を表示する。
【００３３】
以下、図１０のシステムについて具体例を用いて説明する。
【００３４】
設計・検証者あるいは実施形態1のシステムが、回路記述１１、テストベンチ記述８、実施形態１で生成された図８に示すテーブルAを、本システムに入力する。モニター用回路記述生成手段４、シミュレーション手段６および可変性計測・表示手段７によって、以下のような処理がなされる。
【００３５】
（１）モニター用回路記述生成手段４が、回路記述１１をコピーし、テーブルAの各遷移に対応する条件文に対し全ての非条件要素の真偽を計測するためのモニターコード（モニター条件文およびモニター変数）を回路記述１１のコピーに挿入することによりモニター用回路記述５を生成する。このようにして各遷移に対応する条件文が成立する際の非条件要素の真偽)を計測可能なモニター用回路記述５が得られる。モニター用回路記述５を生成する様子を図１１に示す。
【００３６】
（２）シミュレーション手段６は、モニター用回路記述５とテストベンチ記述８とを用いてシミュレーションを実行することにより、各モニター変数の値を求める。つまり、図１２に示すように、条件文の非条件要素に対応する各セルについて、２つのモニター変数（モニター変数cell_n_m_T、モニター変数cell_n_m_F）を求める。
【００３７】
モニター変数cell_n_m_T、モニター変数cell_n_m_Fはそれぞれシミュレーション開始時は全て０に初期化されている。着目するセルに対応する遷移の条件文が成立したときに、該セルに対応する条件要素がシミュレーション中に１度でも真となれば、モニター変数cell_n_m_Tの値は１となり、１度でも偽となればモニター変数cell_n_m_Fの値は１となる。
【００３８】
したがって、シミュレーションの終了後、cell_n_m_Tが１でcell_n_m_Fが０であれば、これは着目するセルに対応する遷移の条件文が成立するとき常に当該セルに対応する条件要素が真であったこと（真偽が不変）を意味する。また、シミュレーションの終了後、cell_n_m_Tが０でcell_n_m_Fが１であれば、これは着目するセルに対応する遷移の条件文が成立するとき常に当該セルに対応する条件要素が偽であったこと（真偽が不変）を意味する。また、シミュレーションの終了後、cell_n_m_Tが１でcell_n_m_Fが１であれば、これは着目するセルに対応する遷移の条件文が成立するとき当該セルに対応する条件要素が真のときと偽のときとの両方があったこと（真偽が可変）を意味する。
【００３９】
（３）可変性計測・表示手段７は、各モニター変数が1ならcover、0ならnot coverとしてテーブルAの該当するセルへ追加する。各セルに対してモニター変数を計測し、これにより図１３に示すテーブルB1を得る。可変性計測・表示手段７はこのテーブルB1を表示する。各セルについてT/F共にcoverのセルは、セルに対応する条件文が成り立つ間（真の間）、該セルに対応する条件要素の真偽が「可変」であることを、T/Fの一方がcover、他方がnot coverのセルは、真偽が「不変」であることを意味する。斜線がほどこされたセル（条件文の必要条件要素のセル）はTまたはFが常に成り立つ必要があるため元々記入されていたTまたはFに対してcoverが与えられる。なおテーブルB1の「Cover or not cover」のフィールドは、各遷移に対応する条件文がシミュレーションの間に少なくとも１回実行されたかどうかを示し、coverは少なくとも１回は実行されたことを、not coverは１回も実行されなかったことを意味する。
【００４０】
以上のように、本実施の形態によれば、各遷移の条件文に対応する必要条件要素が満たすべき真偽のみならず、非条件要素の真偽の可変性（「不変」または「可変」）も表示される。これにより、可変でありながら条件文に含まれていない非条件要素について条件文に含める必要があるかどうかなどの確認を設計・検証者に促すことができ、条件抜けの発見につながる。よって検証確度の向上が期待される。
【００４１】
（実施形態３−１）
図１４は本発明の実施形態３−１としての回路設計検証方法を実行するシステムの構成を示す図である。この回路設計検証方法を実行するための命令コードを記述したプログラムをコンピュータに実行させることにより該システムと同等の機能を実現することも可能である。
【００４２】
検証対象回路(DUT)の回路記述と、検証対象回路と協調動作する他の回路の回路記述とを含む回路記述１１が本システムに入力される。さらに検証対象回路（DUT）の入力信号および内部信号（req,count,valid_in_busなど）に関わる制約条件（たとえば信号が取りうる値の範囲の制約、ある信号の値と他の信号の値との関係に関する制約）をプロパティ言語で表したプロパティ記述（前提記述）９と、実施形態１で求められたテーブルAとが本システムに入力される。
【００４３】
チェック用命題記述生成手段１０は、テーブルAの各遷移に対応する条件文に対し全ての非条件要素の真偽を計測するためのチェック用命題記述１２を生成する。
【００４４】
プロパティチェック手段6は、検証対象回路（DUT）の回路記述に対して、チェック用命題記述１２を用いてプロパティチェックを行う。本例では検証対象回路の回路記述のうち実施形態１で生成したテーブルＡに対応して状態遷移記述を対象にプロパティチェックを行うが、本発明の適用はこれに限定されない。
【００４５】
可変性計測・表示手段１４は、プロパティチェックにより得られた結果（カバレッジ結果）をテーブルAへ追加することによりテーブルB2を得る。可変性計測・表示手段１４はテーブルB2を表示する。
【００４６】
以下、図１４のシステムについて具体例を用いて説明する。
【００４７】
設計・検証者あるいは実施形態1のシステムが、回路記述１１、プロパティ記述（前提記述）９、実施形態１で生成されたテーブルAを入力する。
【００４８】
チェック用命題記述生成手段１０、プロパティチェック手段１３、可変性計測・表示手段１４によって、以下のような処理がなされる。
【００４９】
（１）チェック用命題記述生成手段１０は、テーブルAにおける各遷移に対応する条件文の各非条件要素について、「条件文が真の間は常に真である」「条件文が真の間は常に偽である」という命題を作成し、チェック用命題記述１２へ追加する。この様子を図１５に示す。このようにして、全ての条件文に対し、各非条件要素の真偽の可変性を計測可能な命題が記述されたチェック用命題記述１２を完成させる。
【００５０】
（２）プロパティチェック手段１３は、回路記述１１に対し、チェック用命題記述１２を用いて、プロパティチェックを実行する。
【００５１】
（３）可変性計測・表示手段１４は、図１６のように、それぞれの命題のreal success/failの組み合わせよりcover/not coverを算出し、テーブルAへ追加する。real successは命題が成り立つことを意味し、failは命題が成り立たなかったことを意味する。cell_n_m_Tは、「条件が真の間は常に真である」が成立するときreal success（＝１）となり、成立しないときfail（＝０）となる。cell_n_m_Fは、「条件が真の間は常に偽である」が成立するときreal success（＝１）となり、成立しないときfail（＝０）となる。cell_n_m_T およびcell_n_m_Tの値の組合せにより、各セルについてそれぞれ３通りのカバレッジ結果（cover / not cover）が得られる（図１６の一番下の表を参照）。テーブルAの各セルに対してカバレッジ結果を追加し、これにより図１３と同様なテーブルB2（図示せず）を得る（なお当然ながらプロパティ記述９の内容に応じてテーブルの内容はシミュレーションの場合と異なる）。可変性計測・表示手段１４は、得られたテーブルB2を表示する。
【００５２】
以上のように、本実施の形態によれば、プロパティチェックを用いることで、シミュレーションの場合よりも計算量が多くなり検証時間が増大するものの、シミュレーションのような限られたテストパターンだけでなく、網羅的なチェックが可能となる。
【００５３】
（実施形態３−２）
図１７は本発明の実施形態３−２としての回路設計検証方法を実行するシステムの構成を示す図である。この回路設計検証方法を実行するための命令コードを記述したプログラムをコンピュータに実行させることにより該システムと同等の機能を実現することも可能である。
【００５４】
検証対象回路(DUT)の回路記述と、検証対象回路(DUT)と協調動作する他の回路の回路記述とを含む回路記述１１と、実施形態２のシミュレーションで得られたテーブルB1（図１３参照）と、検証対象回路（DUT）の入力信号および内部信号（req,count,valid_in_busなど）に関わる制約条件（たとえば信号が取りうる値の範囲の制約、ある信号の値と他の信号の値との関係に関する制約）をプロパティ言語で表したプロパティ記述（前提記述）９とが本システムに入力される。
【００５５】
チェック用命題記述生成手段１５は、テーブルAの各遷移に対応する条件文に対しその非条件要素の真偽を計測するためのチェック用命題記述１６を生成する。
【００５６】
プロパティチェック手段１３は、検証対象回路（DUT）の回路記述（実施形態３−１と同様、状態遷移記述を対象とする）に対して、チェック用命題記述１６を用いてプロパティチェックを行う。
【００５７】
可変性計測・表示手段１４は、プロパティチェックにより得られた結果（カバレッジ結果）をテーブルB1へ上書きすることによりテーブルB3を得る。可変性計測・表示手段１４はテーブルB3を表示する。
【００５８】
以下、図１７のシステムについて具体例を用いて説明する。
【００５９】
設計・検証者あるいは実施形態２のシステムが、回路記述１１、実施形態２で生成されたテーブルB1（図１３参照）、プロパティ記述（前提記述）９を入力する。
【００６０】
チェック用命題記述生成手段１５、プロパティチェック手段１３、可変性計測・表示手段１４によって、以下のような処理がなされる。
【００６１】
（１）チェック用命題記述生成手段１５が、テーブルB1において可変性が不変であるセルを選択し、選択したセルに対応する条件文に対し、「その条件文が真の間は常に不変(真または偽)である」という命題記述を生成する。この様子を図１８に示す。
【００６２】
（２）プロパティチェック手段１３は、回路記述１１に対し、チェック用命題記述１５を用いて、プロパティチェックを実行する。
【００６３】
（３）可変性計測・表示手段１４は、図１９のように、各命題のreal success/failに応じて、テーブル B1のセルの内容（cover/not cover）を更新する。命題のチェック結果がreal success（真）であれば、セルの内容をそのままとし、fail（偽）であれば、該セルに対応する条件要素が真の場合と偽の場合の両方があるためT,Fのいずれも coverとする。可変性が不変である全てのセルに対して可変性カバレッジを更新し、これによりテーブルB3を得る。可変性計測・表示手段１４は、テーブルB3を表示する。
【００６４】
以上のように、本実施の形態によれば、実施形態2のシミュレーション後に、可変性が不変であるセルについてのみ、実施形態３−２で説明したプロパティチェックを用いることで、実施形態３−１に比べて、計算量を削減することが可能となる。
【００６５】
（実施形態４）
図２０は本発明の実施形態４としての回路設計検証方法を実行するシステムの構成を示す図である。この回路設計検証方法を実行するための命令コードを記述したプログラムをコンピュータに実行させることにより該システムと同等の機能を実現することも可能である。
【００６６】
実施形態２または３−１または３−２で得られたテーブル(B1 or B2 or B3)が本システムに入力される。
【００６７】
命題自動生成手段１７は、本システムに入力されたテーブル(B1 or B2 or B3)において、可変性が不変であるセルに対してチェック用命題記述１８を生成する。
【００６８】
以下、図２０のシステムについて具体例を用いて説明する。
【００６９】
設計・検証者あるいは実施形態２または３−１または３−２のシステムが、実施形態２または３−１または３−２で生成されたテーブル(B1 or B2 or B3)を入力する。
【００７０】
命題自動生成手段１７によって以下のような処理がなされる。
【００７１】
（１）命題自動生成手段１７が、テーブル(B1 or B2 or B3)において、可変性が不変であるセルを選択する。
【００７２】
（２）選択したセルに対し、「その条件が真の間は常に不変(真または偽)である」という命題記述を生成する。
【００７３】
以上の処理により、可変性が不変のセルに対して、図１８に示したような命題記述が自動生成される。
【００７４】
命題自動生成手段１７によって生成されたチェック用命題記述１８は、検証対象回路（DUT）の機能チェッカー（たとえば図１７のプロパティチェック手段１３）によって利用可能となる。またチェック用命題記述１８は、シミュレーション用のプロパティ記述であるアサーション記述としてシミュレーションでも利用できるため、プロパティチェックツールを使用できない環境下でも利用可能である。これにより検証確度の向上が実現できる。
【００７５】
（実施形態５）
図２１は本発明の実施形態５としての回路設計検証方法を実行するシステムの構成を示す図である。この回路設計検証方法を実行するための命令コードを記述したプログラムをコンピュータに実行させることにより該システムと同等の機能を実現することも可能である。
【００７６】
設計済みのシステム回路における検証対象回路に対し実施形態２または３−１または３−２から得られたテーブルB-aと、新規開発中のシステム回路における検証対象回路に対し実施形態２または３−１または３−２から得られたテーブルB-bとが本システムに入力される。新規開発システム回路の検証対象回路と、設計済みのシステム回路の検証対象回路とは同一であり、検証対象回路以外の回路は全て、新規開発システム回路と設計済みのシステム回路とで異なるとする。つまり、新規開発システム回路の検証対象回路は再利用モジュールに相当するとする。
【００７７】
機能変更箇所検出・表示手段２１は、テーブルB-aとテーブルB-bとを比較し、各セルの可変性の相違を検出し、可変性の相違のある箇所（条件文と条件要素との組）を機能変更箇所として検出し、機能変更箇所検出データ２２を生成する。機能変更箇所検出・表示手段２１は、機能変更箇所検出データ２２を表示する。
【００７８】
以下、図２１のシステムについて具体例を用いて説明する。
【００７９】
設計・検証者あるいは実施形態２または３−１または３−２のシステムが、図１３のテーブルをテーブルB-aとして、図２２のテーブルをテーブルB-bとして入力したとする。
【００８０】
機能変更箇所検出・表示手段２１によって、以下のような処理がなされる。
【００８１】
（１）テーブルB-aおよびテーブルB-bの間で互いに対応するセルのカバレッジ結果(Ta、Fa)および(Tb、Fb)を抽出する。
【００８２】
（２）(Ta、Fa)！=(Tb、Fb)のとき（すなわち不一致のとき）、機能変更箇所として以下のように検出・表示を行う。
A) 不一致：「不変」から「可変」  
(Ta、Fa) =(cover、 not cover)あるいは(not cover、 cover)、(Tb、Fb) =(cover、 cover)の場合、新規開発システム回路において再利用モジュールの機能不足すなわち記述抜けの可能性が高いことを検出する。
B) 不一致：「可変」から「不変」  
(Ta、Fa) =(cover、 cover)、(Tb、Fb) = (cover、 not cover)あるいは(not cover、 cover)の場合、再利用モジュール以外のモジュール（たとえば図１の再利用モジュールの前段のマスタ）において何らかの機能変更がされた可能性が高いことを検出する。
C) 不一致：「不変」から「不変」(反転)
(Ta、Fa) =(cover、 not cover)、(Tb、Fb) = (not cover、 cover)あるいは(Ta、Fa) =(not cover、 cover)、(Tb、Fb) = (cover、 not cover)の場合、再利用モジュール以外のモジュール（たとえば図１の再利用モジュールの前段のマスタ）において何らかの機能変更がされた可能性が高いことを検出する。
【００８３】
以上の処理により、図２３のように機能変更箇所（可変性に相違のある、条件文と条件要素との組）の検出・表示がなされる。この例では、条件文if(count >= 2'b11)あるいはこれのelse項において、設計済みのシステム回路ではreq == 1'b1が常に真であったものが（図１３参照）、新規開発中のシステム回路では偽にも成りうることを示している。このことから新規開発中のシステム回路で再利用されるスレーブモジュールの回路記述においてreq == 1'b1が偽になる条件が抜けているまたは抜けている可能性があることが検出できる。
【００８４】
以上のように、本実施の形態によれば、機能変更箇所検出・表示手段２１によって、従来のカバレッジ方式では検出困難な機能変更箇所を取得できるため、機能不具合を早期に発見することができ、デバッグ時間を大幅に短縮させることができる。これにより、検証確度の向上と検証時間の短縮が実現できる。  
【図面の簡単な説明】
【００８５】
【図１】新規開発システム回路のブロック図
【図２】新規開発システム回路で生じる問題事例を説明する図
【図３】上記問題事例を説明する状態遷移図
【図４】上記問題事例を説明する回路記述を示す図
【図５】本発明の実施形態１としてのシステム構成を示す図
【図６】検証対象回路の回路記述(スレーブの状態遷移記述部)の一例を示す図
【図７】図５のシステムにおけるテーブル作成・表示手段の処理を説明する図
【図８】テーブル作成・表示手段によって生成されたテーブルの一例を示す図
【図９】図５のシステムにおけるカバレッジ値算出・表示手段によって生成されたテーブルの一例を示す図
【図１０】本発明の実施形態２としてのシステム構成を示す図
【図１１】モニター用コードの挿入方法の一例を示す図
【図１２】カバレッジ値算出方法の一例を示す図
【図１３】実施形態２によって生成されたテーブルの一例を示す図
【図１４】本発明の実施形態３−１としてのシステム構成を示す図
【図１５】チェック用命題記述の生成例を示す図
【図１６】カバレッジ値算出方法の一例を示す図
【図１７】本発明の実施形態３−２としてのシステム構成を示す図
【図１８】チェック用命題記述の生成例を示す図
【図１９】カバレッジ算出方法の一例を示す図
【図２０】本発明の実施形態４としてのシステム構成を示す図
【図２１】本発明の実施形態５としてのシステム構成を示す図
【図２２】新規開発システム回路から生成されたテーブルである。
【図２３】設計済みシステム回路と新規開発システム回路との間での機能変更箇所の例を示す図
【符号の説明】
【００８６】
１：回路記述
２：テーブル作成・表示手段
３：カバレッジ値算出・表示手段
４：モニター用回路記述生成手段
５：モニター用回路記述
６：シミュレーション手段
７：可変性計測・表示手段
８：テストベンチ記述
９：プロパティ記述
１０：チェック用命令記述生成手段
１１：回路記述
１２：チェック用命題記述
１３：プロパティチェック手段
１４：可変性計測・表示手段
１５：チェック用命題記述生成手段
１６：チェック用命題記述
１７：命題自動生成手段
１８：チェック用命題記述
２１：機能変更箇所検出・表示手段
２２：機能変更箇所検出データ
Ａ、Ｂ１、Ｂ２、Ｂ３、Ｂ−ａ、Ｂ−ｂ：テーブル
【図１】
2008282351.tif 000003
【図２】
2008282351.tif 000004
【図３】
2008282351.tif 000005
【図４】
2008282351.tif 000006
【図５】
2008282351.tif 000007
【図６】
2008282351.tif 000008
【図７】
2008282351.tif 000009
【図８】
2008282351.tif 000010
【図９】
2008282351.tif 000011
【図１０】
2008282351.tif 000012
【図１１】
2008282351.tif 000013
【図１２】
2008282351.tif 000014
【図１３】
2008282351.tif 000015
【図１４】
2008282351.tif 000016
【図１５】
2008282351.tif 000017
【図１６】
2008282351.tif 000018
【図１７】
2008282351.tif 000019
【図１８】
2008282351.tif 000020
【図１９】
2008282351.tif 000021
【図２０】
2008282351.tif 000022
【図２１】
2008282351.tif 000023
【図２２】
2008282351.tif 000024
【図２３】
2008282351.tif 000025