(57)【特許請求の範囲】
【請求項１】
変更前後の回路記述を入力する入力手段と、
前記入力手段からの前記変更前後の回路記述におけるレジスタの出力及び信号の入出力ノードの配置関係を表すキーポイントの不一致箇所に応じて変更箇所を特定する特定手段を有し、
前記特定手段による特定の結果、前記キーポイントの一致を保証できる回路記述に対して形式検証を行い、前記特定手段による前記特定の結果、前記変更前後の回路記述において前記キーポイントの一致を保証できない回路記述、もしくは前記形式検証により論理的不一致が発生した場合、論理的な変更箇所を含む回路記述に対してはイベントドリブン方式のシミュレーションを利用して回路の機能検証を行う検証機構を備えることを特徴とした半導体集積回路の設計検証装置。
【請求項２】
変更前後の回路記述を入力する入力手段と、
入力された前記回路記述中においてレジスタの出力および信号の入出力ノードの配置関係を表すキーポイントのマッピングを行い、前記変更前と変更後の回路記述の不一致箇所から、最も近くの前記変更前と変更後の回路記述の一致しているキーポイントを外部入出力とし、変更箇所を含む回路部をモジュール化する変更箇所特定手段と、
前記モジュール化した前記変更前と変更後の回路記述中の回路部それぞれに対しイベントドリブン方式のシミュレーションを利用した回路の機能検証を行うシミュレーション検証手段と、
前記モジュール化した各回路部において外部入出力扱いとしたノードのみと前記変更前と変更後の回路記述それぞれに対して形式検証を利用し回路の機能を検証する形式検証手段とを具備し、
前記形式検証手段において、論理的不一致が発生した場合、前記変更前と変更後の回路記述に対し論理的な変更箇所があるとして前記形式検証に伴うコーンのうち前記論理的な変更箇所および前記外部入出力扱いとしたノードを含んだコーンの入出力を外部入出力扱いとして前記論理的な変更箇所を含む回路記述を切り出しモジュール化する機能を有し、このモジュール化した前記変更前と変更後の回路記述中の回路部それぞれの機能が前記シミュレーション検証手段で検証されることを特徴とする半導体集積回路の設計検証装置。
【請求項３】
前記イベントドリブン方式のシミュレーションを利用するため、前記モジュール化された各回路部の入力キーポイントに繰り返し入力されるシミュレーション時間の区切られたランダムなテストベクトルを生成するためのテストベンチ生成手段を含むことを特徴とする請求項２に記載の半導体集積回路の設計検証装置。
【請求項４】
前記シミュレーション検証手段における前記変更後の回路記述に関する期待値を入力できる機能を備え、
前記シミュレーション検証手段からの実際のシミュレーション結果と前記期待値とを比較する比較判定手段を具備することを特徴とする請求項１乃至３いずれか一つに記載の半導体集積回路の設計検証装置。
【請求項５】
前記比較判定手段は、前記シミュレーション検証手段からの実際のシミュレーション結果により、前記変更前と変更後の回路記述に不一致の発生したテストベクトルとこのテストベクトルを用いた前記変更後の回路記述に応じた出力を前記期待値と比較することにより、期待した変更がなされているか否か判定を行うことを特徴とする請求項４に記載の半導体集積回路の設計検証装置。
【請求項６】
前記期待値は、ＲＴレベルの回路記述段階における変更箇所を指定することでその回路記述を解析し、前記変更前と変更後の回路記述で異なる実行結果が得られるテストベクトル（入力信号）とその実行結果から作成することを特徴とする請求項４に記載の半導体集積回路の設計検証装置。
【請求項７】
前記不一致が発生したテストベクトル（入力信号）についてこのテストベクトルを用いた前記変更後の回路記述に関する回路部の出力を新たな期待値として登録できる機能をさらに具備し、前記イベントドリブン方式のシミュレーションの続行を可能とすることを特徴とする請求項５に記載の半導体集積回路の設計検証装置。
【請求項８】
入力手段により変更前後の回路記述を入力し、
特定手段により、前記入力手段により入力された変更前後の回路記述におけるレジスタの出力及び信号の入出力ノードの配置関係を表すキーポイントの不一致箇所に応じて変更箇所を特定し、
検証機構により、前記特定手段による特定の結果、前記キーポイントの一致を保証できる回路記述に対して形式検証を行い、前記特定手段による前記特定の結果、前記変更前後の回路記述において前記キーポイントの一致を保証できない回路記述、もしくは前記形式検証により論理的不一致が発生した場合、論理的な変更箇所を含む回路記述に対してはイベントドリブン方式のシミュレーションを利用して回路の機能検証を行うことを特徴とする半導体集積回路の設計検証方法。
【請求項９】
入力手段により変更前と変更後の回路記述を入力する過程と、
変更特定手段により、前記入力手段により入力された前記回路記述中においてレジスタの出力および信号の入出力ノードの配置関係を表すキーポイントのマッピングを行い、前記変更前と変更後の回路記述の不一致箇所から、最も近くの前記変更前と変更後の回路記述の一致しているキーポイントを外部入出力とし、変更箇所を含む回路部をモジュール化する変更箇所特定過程と、
シミュレーション検証手段により、前記モジュール化した前記変更前と変更後の回路記述中の回路部それぞれに対しイベントドリブン方式のシミュレーションを利用した回路の機能検証を行うシミュレーション検証過程と、
形式検証手段により、前記モジュール化した各回路部において外部入出力扱いとしたノードのみと前記変更前と変更後の回路記述それぞれに対して形式検証を利用し回路の機能を検証する形式検証過程とを具備し、
前記形式検証過程で論理的不一致が発生した場合、論理的変更箇所特定手段により、前記変更前と変更後の回路記述に対し論理的な変更箇所があるとして前記形式検証に伴うコーンのうち前記論理的な変更箇所および前記外部入出力扱いとしたノードを含んだコーンの入出力を外部入出力扱いとして前記論理的な変更箇所を含む回路記述を切り出しモジュール化する論理的変更箇所特定過程を具備し、
前記モジュール化した前記変更前と変更後の回路記述中の回路部それぞれに対し前記シミュレーション検証過程が実行されることを特徴とする半導体集積回路の設計検証方法。
【請求項１０】
期待値入力手段により、前記シミュレーション検証過程における前記変更後の回路記述に関する期待値を入力する過程と、
比較判定手段により、前記シミュレーション検証過程における実際のシミュレーション結果と前記期待値とを比較する比較判定過程とを具備することを特徴とする請求項８又は９に記載の半導体集積回路の設計検証方法。
【請求項１１】
比較判定手段は、前記シミュレーション検証過程において前記変更前と変更後の回路記述に不一致が発生したテストベクトル（入力信号）についてこのテストベクトルを用いた前記変更後の回路記述に関する回路部の出力を新たな期待値として登録し、前記イベントドリブン方式のシミュレーションの続行を可能とする過程とを具備したことを特徴とする請求項１０に記載の半導体集積回路の設計検証方法。
【請求項１２】
コンピュータに、
変更前と変更後の回路記述を入力させる過程と、
前記入力された前記回路記述中においてレジスタの出力および信号の入出力ノードの配置関係を表すキーポイントのマッピングを行わせ、前記変更前と変更後の回路記述の不一致箇所から、最も近くの前記変更前と変更後の回路記述の一致しているキーポイントを外部入出力とし、変更箇所を含む回路部をモジュール化させる変更箇所特定過程と、
前記モジュール化された前記変更前と変更後の回路記述中の回路部それぞれに対しイベントドリブン方式のシミュレーションを利用した回路の機能検証を行わせるシミュレーション検証過程と、
前記モジュール化した各回路部において外部入出力扱いとしたノードのみと前記変更前と変更後の回路記述それぞれに対して形式検証を利用し回路の機能を検証する形式検証過程と、
前記形式検証過程で論理的不一致が発生した場合、前記変更前と変更後の回路記述に対し論理的な変更箇所があるとして前記形式検証に伴うコーンのうち前記論理的な変更箇所および前記外部入出力扱いとしたノードを含んだコーンの入出力を外部入出力扱いとして前記論理的な変更箇所を含む回路記述を切り出してモジュール化させる論理的変更箇所特定過程を具備し、
前記モジュール化された前記変更前と変更後の回路記述中の回路部それぞれに対し前記シミュレーション検証過程を実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項１３】
前記コンピュータに、前記シミュレーション検証過程における前記変更後の回路記述に関する期待値を入力させる過程と、
前記シミュレーション検証過程における実際のシミュレーション結果と前記期待値とを比較させる比較判定過程とを実行させるプログラムを記憶したことを特徴とする請求項１２に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１４】
前記コンピュータに、前記シミュレーション検証過程において前記変更前と変更後の回路記述に不一致が発生したテストベクトル（入力信号）についてこのテストベクトルを用いた前記変更後の回路記述に関する回路部の出力を新たな期待値として登録させ、前記イベントドリブン方式のシミュレーションの続行を可能にする過程とを実行させるプログラムを記憶したことを特徴とする請求項１３に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＳＩの設計検証に係り、特に大規模、複雑な回路の機能検証について、高速で検証確度の高い機能検証が要求される半導体集積回路の設計検証装置、方法及び記憶媒体に関する。
【０００２】
【従来の技術】
半導体集積回路の論理設計段階において、イベントドリブンシミュレータは、イベントが回路を通ってどのように処理されていくかをシミュレーションしていくものである。イベントとは検証対象の回路に対して準備される複数種類の入力信号をいう。
【０００３】
イベントドリブンシミュレータによる機能検証方法は、集積回路の規模が大きくなるほど、扱われるイベントが著しく増加し、シミュレーション時間が膨大となる。この結果、設計期間を長期化させる。
【０００４】
また、イベントドリブンシミュレータは、検証したい動作をするための回路への入力信号の組み合せ（イベント）を設計者が考えなければならない。設計者は、上記イベントを、回路の個々の事象に関しテストベクトルとして作成する。
【０００５】
複雑な機能を有する回路は、その機能を検証する際、全ての事象を網羅したようなテストベクトルを人手で作成することは不可能となってきている。このため、イベントドリブンシミュレータは、大規模で複雑な機能を有する回路に対し、検証確度は低下する傾向にある。
【０００６】
一方、形式検証は、イベントドリブンシミュレータにおける上記問題点を解決する技術として注目されている。形式検証は、設計した回路記述を論理式に変換し、その論理式を用いて機能検証を行う。形式検証は、検証対象の設計回路を反映した論理式から機能検証が行われる（等価性検証機能）ので、テストベクトルが不要であり、検証確度は１００％である。
【０００７】
形式検証は、主に２種類の技法を有する。第１の技法は、回路全体をそのまま論理式に変換する技法である。第２の技法は、回路をコーンと呼ばれる小さい部分に分割し、それぞれのコーン単位で論理式に変換する技法である。図７に、一つのコーンの概念を示す。すなわち、機能ブロック近傍のレジスタ出力、外部入出力を単位に論理式に対応する回路部を検証比較するものである。
【０００８】
上記において、第１の技法は、論理式が大きくなりすぎ、メモリ容量の問題により、大規模集積回路に適用するのは事実上不可能である。また、第２の技法は上記問題を解消し得る。しかし、第２の技法は、コーン単位で検証することが前提となるので、回路に含まれるレジスタ構成が同じでないと、設計検証比較ができないという制約が発生する。
【０００９】
例えば、ＲＴレベル設計（レジスタ転送レベル設計）等、レジスタへ変換される設計入力などのレベル（段階）の上位設計から、ゲートレベルの記述に移行した結果、タイミング調整の必要性からバッファを挿入したい箇所ができたとする。このとき、レジスタ構成を変更せずに設計変更が完了できれば、形式検証による等価性検証機能を利用できる。
【００１０】
すなわち、形式検証は、上位に対して下位の設計回路がある場合、これら２つの回路の等価性を調べるという等価性検証機能を用いるツールである。バグ修正のために機能を変更するような場合、形式検証では、機能の不一致が発生した箇所と、不一致が発生するときの入力の組合わせが出力される。よって、設計者はある程度の変更には対応できる。
【００１１】
しかし、この形式検証は、回路記述を論理的に変換するという特性上、時間の概念が無い。このため、設計者が行った機能変更を既知のものとして検証対象とするような設定を、時間の概念を含めて設定することはできない。
【００１２】
【発明が解決しようとする課題】
形式検証は、等価性検証機能を用いるツールである。従って、設計変更に対処しにくく、現在の設計フローの中では、形式検証の適用可能範囲は限られている。ＲＴレベル設計時は、機能やレジスタ構成の変更が頻繁に行われる。従って、最も機能検証の必要とされるＲＴレベル設計等の上位設計において効果的に導入できない状況にある。
【００１３】
この発明は、上記事情を考慮し、その課題は、上位設計においても形式検証を効果的に導入でき、高速で検証確度の高い機能検証環境を構築する半導体集積回路の設計検証装置、方法及び記憶媒体を提供することにある。
【００１４】
【課題を解決するための手段】
この発明の半導体集積回路の設計検証装置、方法及び記憶媒体は、変更前後の回路記述が入力され、特定手段により、前記入力手段により入力された変更前後の回路記述におけるレジスタの出力及び信号の入出力ノードの配置関係を表すキーポイントの不一致箇所に応じて変更箇所を特定し、前記特定手段による特定の結果、前記キーポイントの一致を保証できる回路記述に対して形式検証を行い、前記特定手段による前記特定の結果、前記変更前後の回路記述において前記キーポイントの一致を保証できない回路記述、もしくは前記形式検証により論理的不一致が発生した場合、論理的な変更箇所を含む回路記述に対してはイベントドリブン方式のシミュレーションを利用して回路の機能検証を行うことを特徴とする。
【００１５】
この発明によれば、検証対象となる半導体集積回路に関し、変更箇所以外は形式検証を利用するので高速な機能検証が実現される。さらに、変更箇所のみを切り出してのイベントドリブン方式のシミュレーションは高速である。よって、大規模な集積回路に対しても高速な機能検証を実現可能とする環境が得られる。
【００１６】
【発明の実施の形態】
図１は、この発明の第１の実施形態に係る半導体集積回路の設計検証方法を示すフローチャートである。この発明の設計検証は、まず、図中少なくとも次の（Ａ），（Ｂ）に示す処理フローが重要である。
【００１７】
（Ａ）  変更前後の回路記述１，２を入力し、不一致箇所に応じて変更箇所を特定する。
すなわち、処理３に示すように、回路記述１，２両者における入出力信号ノードの配置関係を表わすキーポイントのマッピングを行う。変更の程度によって全キーポイントに関してマッピングできる場合もあれば一部できない場合もある。このマッピングにより、不一致箇所が認められれば、不一致箇所に応じて変更箇所への入出力を外部入出力扱いとする。
【００１８】
すなわち、不一致箇所から最も近くの上記変更前後の回路記述の一致しているキーポイントを外部入出力扱いとする。全キーポイントに関して一部がマッピングされていなくても、最も近くのマッピングされている上記変更前後の回路記述の一致しているキーポイントを指定し、外部入出力扱いとすることができる。つまり、変更箇所を含む回路記述部分のみをモジュール化し、変更箇所の特定をする。
【００１９】
また、処理６に示すように、非変更箇所となって、形式検証された回路部のうち、論理的不一致が発生する場合があり、この論理的な変更箇所を含む回路部をモジュール化し、論理的変更箇所の特定をする。
【００２０】
上記処理６では、形式検証に伴うコーンのうち、特定された論理的な変更箇所およびその周辺における形式検証前に外部入出力扱いとしたノードを含むコーンの入出力を外部入出力扱いとして、この論理的な変更箇所を含む回路記述を切り出しモジュール化する。
【００２１】
（Ｂ）  上記変更前後の回路記述１，２においてキーポイントの一致を保証できる回路記述に対して形式検証を行い（処理４，５）、かつ上記キーポイントの一致、もしくは等価性を保証できない回路記述に対してはイベントドリブン方式のシミュレーションを利用して検証を行う（処理７，８，９，１０）。
【００２２】
すなわち、処理４では、前記変更前後の回路記述それぞれに対して形式検証を利用し回路を検証する。このとき、上記処理３でモジュール化した回路部があるなら、各回路部において上記外部入出力扱いとしたノードのみを反映させる。つまり、モジュール化した変更箇所を含む回路部はブラックボックス扱いとしながら、変更前後の回路記述それぞれに対して全体的な形式検証を行う。
【００２３】
処理５では、上記形式検証の結果、すなわち、等価性が判定される。論理的な不一致箇所が無ければ、変更箇所以外の全体の形式検証は等価とみなされる（検証終了（１７））。また、論理的な不一致箇所がある場合は、変更箇所として特定される（処理６）。
【００２４】
処理７では、処理８のイベントドリブン方式のシミュレーションを利用に際し、上述の処理３（さらに必要なら処理６）によりモジュール化された各回路部の入力キーポイントにシミュレーション時間の区切られたランダムなテストベクトル（入力信号）を繰り返し回路に入力するためのテストベンチを生成する。
【００２５】
処理８では、テストベンチに応じて、上記モジュール化された変更前後の各回路部の入力キーポイントにテストベクトル（入力信号）が繰り返し入力され、イベントドリブン方式のシミュレーションを利用したシミュレーション検証を行う。
【００２６】
処理９では、上記モジュール化された変更前後の回路部におけるシミュレーション結果を比較する。そして、処理１０では、上記シミュレーション結果が等価であるか不一致であるかが判定される。この判定で等価と判定されると検証終了である（１７）。
【００２７】
上記実施形態の方法によれば、検証対象となる半導体集積回路に関し、変更箇所以外は形式検証を利用するので高速な機能検証ができる。さらに、変更箇所のみを切り出してのイベントドリブン方式のシミュレーションは高速である。よって、大規模な集積回路に対しても高速な機能検証を実現可能とする。
【００２８】
ＲＴレベルの機能設計においてレジスタ等の機能ブロックが構成されている場合、変更箇所を自動的に判定し、変更された箇所のみ切り出しモジュール化することができる。もちろん変更箇所が複数コーンに隣接していたり重なり合っている場合でも変更箇所を切り出してモジュール化することができる。
【００２９】
すなわち、レジスタ構成の変更されていない回路記述部分は、形式検証によって高速に機能検証が行われる。レジスタを越えて組合せ回路を移動するような場合にも対応できる。
【００３０】
また、上記処理７の利点は次のようである。自動生成されるランダムなテストベクトルを用いることによってテストベクトルの作成ミスによる検証抜けの防止、テストベクトル作成作業の省略をすることができる。
【００３１】
イベントドリブンシミュレータ用のテストベンチを自動生成することによってテストベンチの作成ミスの防止、テストベンチ作成作業の省略に寄与する。さらに、シミュレーション時間を区切ったランダムなテストベクトルを繰り返し入力する方式を用いるので、不一致が発生した際のデバッグ効率を向上させる。
【００３２】
処理８では、変更箇所のみ切り出した小規模な回路に対して自動生成されたランダムなテストベクトルでのシミュレーション検証が行われる。このため、大量なテストベクトルを実行することが可能となり、検証確度を向上させる。
【００３３】
さらに、上で説明した主なフローに付随する各処理について再び図１を参照して説明する。
上記処理９の変更前後のモジュール化された回路部についてのシミュレーション結果の比較において、結果の異なる値になった場合、それが設計者の予測どおりの値となることがある。
【００３４】
処理１１では、このようなシミュレーション結果の予測される期待値を例えば波形表示ツールのＧＵＩ（グラフィック・ユーザ・インタフェイス）を用いて入力する。このような期待値は、例えばＲＴレベルの回路記述段階における変更前後の回路の変更箇所を指定することでその回路記述を解析し、変更前後で異なる実行結果が得られるテストベクトル（入力信号）とその実行結果から作成してもよい。
【００３５】
さらに、処理１２において、上記処理８，９を経た実際のシミュレーション結果から、不一致の発生したテストベクトル（入力信号）とこのテストベクトルを用いた前記変更後の回路の出力を上記期待値と比較する。その後、上述の処理１０につながり、期待した変更がなされているか否か判定が行われる。
【００３６】
また、処理１３では、上述した処理１０のシミュレーション結果の判定を経て、不一致の発生したテストベクトル（入力信号）とその結果出力をファイル出力または波形表示出力する。
【００３７】
さらに処理１４では、上記処理１３において表示された変更前後の回路部の不一致が発生した箇所の確認、判定が行われる。ここでの判定とは、表示された不一致が、設計者の期待したとおりの変更であるかが判断される。
【００３８】
処理１４において、変更が設計者の期待したとおりである場合には、この不一致に至るテストベクトル（入力信号）およびその変更後の回路部の出力を新たな期待値として追加登録し（１５）、イベントドリブンシミュレータでのシミュレーションの続行を可能とする。また、表示された不一致が、設計者の期待したとおりの変更でない場合、シミュレーション結果を参照してデバッグすることになる（１６）。
【００３９】
上記実施形態の方法において、処理９によれば、変更前後の回路でシミュレーション結果を比較することによって、機能を変更した部分のテストベクトルと回路出力のみ選別できる。
【００４０】
また、処理１１によれば、変更箇所の記述を解析し、それに基づいて期待値を作成することにより、期待値の作成ミス、作成抜けを防止する。そして、処理１２によれば、機能変更を行った際、期待値と、変更前後の回路で不一致となったテストベクトル、回路出力を比較することにより、期待した変更のみ実施されたかどうかを自動的に判定できる。
【００４１】
また、処理１３によれば、イベントドリブンシミュレータよりシミュレーション結果の出力を波形表示する機能を持つ。これにより、ＧＵＩを用いたデバッグ環境を提供する。
【００４２】
さらに処理１４、１５によれば、不一致箇所の検証を行うための環境を自動生成することになる。これにより、ケアレスミスや設計者の意図していない機能変更によるバグ検出あるいはバグ混入が防止される。また、期待値の作成ミスを無くし、迅速に期待値の設定を行うことができるのでデバッグ効率が向上する。
【００４３】
図２は、この発明の第２の実施形態に係る半導体集積回路の設計検証装置を示すブロック図である。この設計検証装置は、上記第１の実施形態で示した検証方法のフローを実現する。
【００４４】
データ入力部２１は、変更前後の回路記述（１，２）を入力する。処理部２００中のマッピング変更箇所特定手段２２は、変更前後の回路記述中においてレジスタの出力および信号の入出力に対応したキーポイントのマッピングを行う。不一致箇所がある場合は、不一致箇所から最も近くの一致しているキーポイントを外部入出力とし、変更箇所を含む回路部をモジュール化する。
【００４５】
キーポイントのマッピングは、変更の程度によっては全キーポイントに対し一部がマッピングできなくなることもある。しかし、最も近くのマッピングされている上記変更前後の回路記述の一致しているキーポイントを指定し、外部入出力扱いとすることができる。つまり、変更箇所を含む回路記述部分のみをモジュール化し、変更箇所の特定をする。
【００４６】
処理部２００中の形式検証機構２３は、上記モジュール化した各回路部においては上記外部入出力扱いとしたノードのみを反映させながら前記変更前後のそれぞれに対して形式検証を利用し回路全体を検証する。
【００４７】
ここで、論理的変更箇所特定手段２４は、上記形式検証機構２３で論理的不一致が発生した場合、形式検証に伴うコーンのうち、特定された論理的な変更箇所およびその周辺における形式検証前に外部入出力扱いとしたノードを含んだコーンの入出力を外部入出力扱いとして回路記述を切り出しモジュール化する。
【００４８】
処理部２００中のイベントドリブンシミュレータ２５は、モジュール化された変更前後の回路部それぞれに対し、シミュレーションする。モジュール化された回路部とは、上記マッピング変更箇所特定手段２２によってモジュール化された回路部であり、また、論理的変更箇所特定手段２４によってモジュール化された回路部もあれば加える、
上記シミュレーションは、入力キーポイントにテストベンチに応じてシミュレーション時間の区切られたランダムなテストベクトル（入力信号）を繰り返し入力するイベントドリブン方式のシミュレーションを利用した検証である。
【００４９】
変更前後の回路記述について、上記のシミュレーション結果を比較する比較判定機構２６が設けられる。出力部２７では、この比較判定機構２６により不一致が発生した場合、不一致の発生したテストベクトル（入力信号）とその結果出力を得る。この結果出力は例えばファイル出力や波形表示等モニタ出力である。
【００５０】
さらに、図２中に付随する機能について説明する。
期待値入力手段３１は、シミュレーション結果の予測される期待値を例えば波形表示ツールのＧＵＩ（グラフィック・ユーザ・インタフェイス）を用いて入力する。期待値は、上記に限らず、例えばＲＴレベルの回路記述段階における変更前後の回路の変更箇所を指定することでその回路記述を解析し、変更前後で異なる実行結果が得られるテストベクトル（入力信号）とその実行結果から作成してもよい。
【００５１】
比較判定機構２６は、実際のシミュレーション結果から、不一致の発生したテストベクトル（入力信号）とこのテストベクトルを用いた前記変更後の回路の出力を上記期待値と比較する。すなわち、期待した変更がなされているか否か判定が行われる。
【００５２】
出力部２７では、上述したシミュレーション結果の判定を経て、不一致の発生したテストベクトル（入力信号）とその結果出力をファイル出力または波形表示出力する。
【００５３】
さらに比較判定機構２６では、変更前後の回路部の不一致が発生した箇所の確認、判定が行われる。すなわち、上記表示された不一致が、設計者の期待したとおりの変更である場合には、この不一致に至るテストベクトル（入力信号）およびその変更後の回路部の出力を新たな期待値として追加登録し、イベントドリブンシミュレータでのシミュレーションの続行を可能とする。また、表示された不一致が、設計者の期待したとおりの変更でない場合、シミュレーション結果を参照してデバッグすることになる。
【００５４】
上記実施形態によれば、第１の実施形態と同様の効果を有する。すなわち、検証対象となる半導体集積回路に関し、変更箇所以外は形式検証を利用するので高速な機能検証ができる。さらに、変更箇所のみを切り出してのイベントドリブン方式のシミュレーションは高速である。よって、大規模な集積回路に対しても高速な機能検証を実現可能とする。
【００５５】
ＲＴレベルの機能設計においてレジスタ等の機能ブロックが構成されている場合、変更箇所を自動的に判定し、変更された箇所のみ切り出しモジュール化することができる。もちろん変更箇所が複数コーンに隣接していたり重なり合っている場合でも変更箇所を切り出してモジュール化することができる。
【００５６】
すなわち、レジスタ構成の変更されていない回路記述部分は、形式検証によって高速に機能検証が行われる。レジスタを越えて組合せ回路を移動するような場合にも対応できる。
【００５７】
比較判定機構２６では、変更前後の回路でシミュレーション結果を比較する。これにより、機能を変更した部分のテストベクトルと回路出力のみ選別できる。また、期待値入力手段３１は、期待値の作成は、期待値の作成ミス、作成抜けを防止する。そして、機能変更を行った際、期待値と、変更前後の回路で不一致となったテストベクトル、回路出力を比較することにより、期待した変更のみ実施されたかどうかを自動的に判定できる。
【００５８】
さらに、比較判定機構２６では、不一致箇所の検証を行うための環境を自動生成することになる。これにより、ケアレスミスや設計者の意図していない機能変更によるバグ検出あるいはバグ混入が防止される。また、期待値の作成ミスを無くし、迅速に期待値の設定を行うことができるのでデバッグ効率が向上する。
【００５９】
また、出力部２７は、イベントドリブンシミュレータよりシミュレーション結果の出力を波形表示する機能を持つ。これにより、ＧＵＩを用いたデバッグ環境を提供する。
【００６０】
上記第１、第２の実施形態を踏まえ、この発明の設計検証方法について（ｉ）〜(iii) のケースを例に、より具体的に説明する。なお、図３（ａ），（ｂ）それぞれは、ケース（ii）で用いる変更前の組合せ回路部、変更後の組合せ回路部を示す。図４（ａ），（ｂ）それぞれは、ケース（ii）で用いる変更前回路部の入出力波形、変更後回路部の入出力波形を示す。図５は、ＲＴレベル設計の変更前後のソースコードからの変更箇所の期待値の生成の様子を示す説明図である。図６（ａ），（ｂ）それぞれは、ケース (iii)で用いる変更前の組合せ回路部、変更後の組合せ回路部を示す。
【００６１】
（ｉ）＜レジスタ構成変更：無し、機能変更：無し＞
例：ゲートレベル記述のバッファ挿入、セルの置き換え、タイミングチューニング。
【００６２】
(1)  入力された変更前後の回路記述における全キーポイント（レジスタ出力、外部入出力）に関してマッピングできる（処理３）。
(2)  形式検証実行（処理４）。
上記２つの回路は等価であるというレポート出力（処理５）。
(3)  機能検証終了。
すなわち、上記（ｉ）のケースでは、形式検証のみで所望の設計検証は達成できる。
【００６３】
（ii）＜レジスタ構成変更：無し、機能変更：有り＞
例１：ゲートレベル記述のバッファ挿入、セルの置き換え、タイミングチューニングでバグが混入した場合。
例２：ＲＴレベル記述でレジスタ間の組合せ回路の一部を他のレジスタ間へ移動（リソースシェリング）。
例３：ＲＴレベル記述で組合せ回路記述変更時にバグが混入した場合。
【００６４】
上記各例のうち、例２の場合で説明する。
(1)  入力された変更前後の回路記述における全キーポイント（レジスタ出力、外部入出力）に関してマッピングできる（処理３）。
(2)  形式検証実行（処理４）。
(3)  不一致箇所がレポート出力される。図３では変更前回路の組合わせ回路Ａと変更後回路の組合せ回路Ａ，Ｂ、変更前回路の組合わせ回路Ｂ，Ｃと変更後回路の組合せ回路Ｃの２箇所が機能不一致としてレポート出力される（処理５）。
【００６５】
(4)  複数コーンが不一致であった場合、それらの回路を全て切り出すため、外部入出力信号から順次信号をトレースしていき、論理的不一致点の入出力に最初に至った点を外部入出力とし、回路の切り出しを行う。この図３では、変更前後それぞれの回路部に関し、ノードａ，ｂ，ｅを外部入力、ノードｄ，ｆを外部出力として点線内部の回路を切り出し、モジュール化する（処理６）。
【００６６】
(5)  切り出された回路をイベントドリブンシミュレーションするためのテストベンチと、入力に一定のシミュレーション時間で区切られたランダムな信号を繰り返し入力するシミュレーション記述を作成する。ランダムな信号を入力する際、シミュレーション時間を区切って、繰り返し行う利点は、後でデバッグをする際にテストベクトルを取り扱うのに効率がよいからである（処理７）。
【００６７】
(6)  シミュレーション実行（処理８）。
(7)  切り出した変更前後の２つの回路出力を順次比較する。ｖｃｄファイルやシステムタスクを使用し、シミュレーション時間毎の信号変化をファイル出力させ、比較を行う（処理９）。
【００６８】
(8)  不一致が発生した場合、入力してある期待値があれば、その期待値と比較する。期待値と一致している場合はカバレッジを向上させるためシミュレーションを続ける（処理１２）。期待値は、例えば設計者が変更箇所を認識しており、動作が異なる場合の入出力状態が既知の場合、シミュレーション途中でも登録できる。
【００６９】
(9)  期待値と一致していない、もしくは期待値が入力されていない場合は不一致の発生する際のテストベクトルと出力結果をレポートし、波形表示可能なファイル形式で不一致の発生したランダム入力信号と出力信号を出力する（処理１３）。
【００７０】
(10)  波形表示ツールとテストベンチ、および出力されたテストベクトルを用いてデバッグする。図４の場合、波形表示ツールの比較機能を使用して変更前後の２つの波形を比較すると、斜線部分が不一致箇所であると判定できる。設計者はその波形を見て、設計者の変更のとおりであるかを判断する（処理１４）。
【００７１】
上記判断により結果期待どおりの結果であれば、斜線部分を期待値として登録し（処理１５）、シミュレーションを続行する。確度が十分になったら検証を終了する。期待どおりでなければ、デバッグ作業（処理１６：図示せぬ別フロー）に入る。
【００７２】
ここで、上記のような期待値の入力方法を説明する。例えば、波形表示ツールのＧＵＩを使用し、グラフィカルに入力する技法である。図４の場合は、斜線内の入出力信号ベクトルが期待値となるので、このパターンを予め入力しておく。
【００７３】
また、例えば、ＲＴレベル設計の変更前後のソースコードから変更箇所の期待値を生成する技法である。図５のように、入力記述がＲＴレベルの場合、ソースコードの変更部分をクリックすることで、その変更部分を実行するための条件式を解析し、期待値ベクトルを作成する。
【００７４】
この図５の場合、ｉｆ文の条件式が変更可能であるので、ＣＬＫ立ち上がり時にＩＮＰＵＴ  Ａ＝１かつＩＮＰＵＴ  ＢまたはＣのどちらかが１である場合はＯＵＴＰＵＴ  Ｂがｂになるベクトルを期待値として設定する。
【００７５】
(iii)＜レジスタ構成変更：無し、機能変更：有り＞
例：ＲＴレベル記述でのバグ修正。仕様変更、または高速化のための記述変更。
(1)  入力される変更前後の回路記述においてマッピングできないキーポイントが発生する。複数のコーンで不一致箇所が認められた場合、それらの回路を全て切り出すため、外部入出力信号から順次信号をトレースしていき、マッピングできないキーポイントに最も近いマッピングされているキーポイントを外部入出力として回路を切り出し、モジュール化を行う（処理３）。例えば図６では、ノードａ，ｂを外部入力、ノードｃ，ｄを外部出力として回路を切り出しモジュール化する。
【００７６】
(2)  切り出された回路をイベントドリブンシミュレーションするためのテストベンチと、入力に一定のシミュレーション時間で区切られたランダムな信号を繰り返し入力するシミュレーション記述を作成する。ランダムな信号を入力する際、シミュレーション時間を区切って、繰り返し行う利点は、後でデバッグをする際にテストベクトルを取り扱うのに効率がよいからである（処理７）。
【００７７】
(3)  シミュレーション実行（処理８）。
(4)  切り出した変更前後の２つの回路出力を順次比較する。ｖｃｄファイルやシステムタスクを使用し、シミュレーション時間毎の信号変化をファイル出力させ、比較を行う（処理９）。
【００７８】
(5)  不一致が発生した場合、入力してある期待値があれば、その期待値と比較する。期待値と一致している場合はカバレッジを向上させるためシミュレーションを続ける（処理１２）。期待値は、例えば設計者が変更箇所を認識しており、動作が異なる場合の入出力状態が既知の場合、シミュレーション途中でも登録できる。なお、期待値の入力方法は、上記具体例（ii）で述べたのと同様である。
【００７９】
(6)  期待値と一致していない、もしくは期待値が入力されていない場合は不一致の発生する際のテストベクトルと出力結果をレポートし、波形表示可能なファイル形式で不一致の発生したランダム入力信号と出力信号を出力する（処理１３）。
【００８０】
(7)  波形表示ツールとテストベンチ、および出力されたテストベクトルを用いてデバッグする。例えば、波形表示ツールの比較機能を使用して変更前後の２つの波形を比較し、設計者の期待どおりの結果であれば、必要な部分を期待値として登録し、シミュレーションを続行する（処理１４、１５）。
【００８１】
(8)一方、上記(1)で切り出されモジュール化された回路部への入出力を外部入出力として取り扱う。モジュール化した変更箇所を含む回路部はブラックボックス扱いとしながら、変更前後の回路記述それぞれに対して全体的な形式検証を行う（処理４）。
【００８２】
(9)不一致点がある場合は、上記具体例（ii）における (3)以降の処理と同様の処理を経て検証を終了する。
【００８３】
以上のような設計検証により、検証対象となる半導体集積回路に関し、変更箇所以外は形式検証により高速な機能検証が、さらに、変更箇所のみを切り出して高速にかつ検証確度の高いイベントドリブン方式のシミュレーションが実現できる。
【００８４】
また、コンピュータを動作させるための、少なくとも半導体集積回路の設計検証プログラムを記憶した、コンピュータで読み取り可能な記憶媒体において、前記図１の処理フローに含まれる本発明に係る基本的な設計検証方法がプログラムされているものも本発明の範囲内である。
【００８５】
すなわち、本発明に係る記憶媒体は、変更前後の回路記述を入力させ、不一致箇所に応じて変更箇所を特定させて、変更前後の回路記述においてレジスタの出力及び信号の入出力に対応したキーポイントの一致を保証できる回路記述に対しては形式検証を行うように、また、キーポイントの一致もしくは等価性を保証できない回路記述に対してはイベントドリブン方式のシミュレーションを利用して検証を行うようにプログラムされている。
【００８６】
【発明の効果】
以上、説明したように、この発明によれば、最も機能検証の必要とされるＲＴレベル設計等の上位設計において、形式検証を効果的に導入できる。すなわち、変更前後の回路記述において、変更箇所以外は形式検証を利用するので高速な機能検証ができる。
【００８７】
さらに、変更箇所のみを切り出してのイベントドリブン方式のシミュレーションは高速化、確度向上が可能である。よって、大規模な集積回路に対しても高速で信頼性の高い機能検証環境を実現可能とする半導体集積回路の設計検証装置、方法及び記憶媒体が提供できる。
【図面の簡単な説明】
【図１】この発明の第１の実施形態に係る半導体集積回路の設計検証方法を示すフローチャート。
【図２】この発明の第２の実施形態に係る半導体集積回路の設計検証装置を示すブロック図。
【図３】（ａ），（ｂ）それぞれは、半導体集積回路の設計検証の具体例を説明するための変更前の組合せ回路部、変更後の組合せ回路部を示す第１の回路ブロック図。
【図４】（ａ），（ｂ）それぞれは、半導体集積回路の設計検証の具体例を説明するための変更前回路部の入出力波形、変更後回路部の入出力波形を示すタイミングチャート。
【図５】ＲＴレベル設計の変更前後のソースコードからの変更箇所の期待値の生成の様子を示す説明図。
【図６】（ａ），（ｂ）それぞれは、半導体集積回路の設計検証の具体例を説明するための変更前の組合せ回路部、変更後の組合せ回路部を示す第２の回路ブロック図。
【図７】形式検証におけるコーンを示す概念図。
【符号の説明】
１〜１７…設計検証のための各処理
【図１】
0003825572.tif 000002
【図２】
0003825572.tif 000003
【図３】
0003825572.tif 000004
【図４】
0003825572.tif 000005
【図５】
0003825572.tif 000006
【図６】
0003825572.tif 000007
【図７】
0003825572.tif 000008