JP3825572B2 - 半導体集積回路の設計検証装置、方法及び記憶媒体 - Google Patents
半導体集積回路の設計検証装置、方法及び記憶媒体 Download PDFInfo
- Publication number
- JP3825572B2 JP3825572B2 JP00937399A JP937399A JP3825572B2 JP 3825572 B2 JP3825572 B2 JP 3825572B2 JP 00937399 A JP00937399 A JP 00937399A JP 937399 A JP937399 A JP 937399A JP 3825572 B2 JP3825572 B2 JP 3825572B2
- Authority
- JP
- Japan
- Prior art keywords
- change
- circuit
- verification
- input
- output
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
Description
【発明の属する技術分野】
本発明は、LSIの設計検証に係り、特に大規模、複雑な回路の機能検証について、高速で検証確度の高い機能検証が要求される半導体集積回路の設計検証装置、方法及び記憶媒体に関する。
【0002】
【従来の技術】
半導体集積回路の論理設計段階において、イベントドリブンシミュレータは、イベントが回路を通ってどのように処理されていくかをシミュレーションしていくものである。イベントとは検証対象の回路に対して準備される複数種類の入力信号をいう。
【0003】
イベントドリブンシミュレータによる機能検証方法は、集積回路の規模が大きくなるほど、扱われるイベントが著しく増加し、シミュレーション時間が膨大となる。この結果、設計期間を長期化させる。
【0004】
また、イベントドリブンシミュレータは、検証したい動作をするための回路への入力信号の組み合せ(イベント)を設計者が考えなければならない。設計者は、上記イベントを、回路の個々の事象に関しテストベクトルとして作成する。
【0005】
複雑な機能を有する回路は、その機能を検証する際、全ての事象を網羅したようなテストベクトルを人手で作成することは不可能となってきている。このため、イベントドリブンシミュレータは、大規模で複雑な機能を有する回路に対し、検証確度は低下する傾向にある。
【0006】
一方、形式検証は、イベントドリブンシミュレータにおける上記問題点を解決する技術として注目されている。形式検証は、設計した回路記述を論理式に変換し、その論理式を用いて機能検証を行う。形式検証は、検証対象の設計回路を反映した論理式から機能検証が行われる(等価性検証機能)ので、テストベクトルが不要であり、検証確度は100%である。
【0007】
形式検証は、主に2種類の技法を有する。第1の技法は、回路全体をそのまま論理式に変換する技法である。第2の技法は、回路をコーンと呼ばれる小さい部分に分割し、それぞれのコーン単位で論理式に変換する技法である。図7に、一つのコーンの概念を示す。すなわち、機能ブロック近傍のレジスタ出力、外部入出力を単位に論理式に対応する回路部を検証比較するものである。
【0008】
上記において、第1の技法は、論理式が大きくなりすぎ、メモリ容量の問題により、大規模集積回路に適用するのは事実上不可能である。また、第2の技法は上記問題を解消し得る。しかし、第2の技法は、コーン単位で検証することが前提となるので、回路に含まれるレジスタ構成が同じでないと、設計検証比較ができないという制約が発生する。
【0009】
例えば、RTレベル設計(レジスタ転送レベル設計)等、レジスタへ変換される設計入力などのレベル(段階)の上位設計から、ゲートレベルの記述に移行した結果、タイミング調整の必要性からバッファを挿入したい箇所ができたとする。このとき、レジスタ構成を変更せずに設計変更が完了できれば、形式検証による等価性検証機能を利用できる。
【0010】
すなわち、形式検証は、上位に対して下位の設計回路がある場合、これら2つの回路の等価性を調べるという等価性検証機能を用いるツールである。バグ修正のために機能を変更するような場合、形式検証では、機能の不一致が発生した箇所と、不一致が発生するときの入力の組合わせが出力される。よって、設計者はある程度の変更には対応できる。
【0011】
しかし、この形式検証は、回路記述を論理的に変換するという特性上、時間の概念が無い。このため、設計者が行った機能変更を既知のものとして検証対象とするような設定を、時間の概念を含めて設定することはできない。
【0012】
【発明が解決しようとする課題】
形式検証は、等価性検証機能を用いるツールである。従って、設計変更に対処しにくく、現在の設計フローの中では、形式検証の適用可能範囲は限られている。RTレベル設計時は、機能やレジスタ構成の変更が頻繁に行われる。従って、最も機能検証の必要とされるRTレベル設計等の上位設計において効果的に導入できない状況にある。
【0013】
この発明は、上記事情を考慮し、その課題は、上位設計においても形式検証を効果的に導入でき、高速で検証確度の高い機能検証環境を構築する半導体集積回路の設計検証装置、方法及び記憶媒体を提供することにある。
【0014】
【課題を解決するための手段】
この発明の半導体集積回路の設計検証装置、方法及び記憶媒体は、変更前後の回路記述が入力され、特定手段により、前記入力手段により入力された変更前後の回路記述におけるレジスタの出力及び信号の入出力ノードの配置関係を表すキーポイントの不一致箇所に応じて変更箇所を特定し、前記特定手段による特定の結果、前記キーポイントの一致を保証できる回路記述に対して形式検証を行い、前記特定手段による前記特定の結果、前記変更前後の回路記述において前記キーポイントの一致を保証できない回路記述、もしくは前記形式検証により論理的不一致が発生した場合、論理的な変更箇所を含む回路記述に対してはイベントドリブン方式のシミュレーションを利用して回路の機能検証を行うことを特徴とする。
【0015】
この発明によれば、検証対象となる半導体集積回路に関し、変更箇所以外は形式検証を利用するので高速な機能検証が実現される。さらに、変更箇所のみを切り出してのイベントドリブン方式のシミュレーションは高速である。よって、大規模な集積回路に対しても高速な機能検証を実現可能とする環境が得られる。
【0016】
【発明の実施の形態】
図1は、この発明の第1の実施形態に係る半導体集積回路の設計検証方法を示すフローチャートである。この発明の設計検証は、まず、図中少なくとも次の(A),(B)に示す処理フローが重要である。
【0017】
(A) 変更前後の回路記述1,2を入力し、不一致箇所に応じて変更箇所を特定する。
すなわち、処理3に示すように、回路記述1,2両者における入出力信号ノードの配置関係を表わすキーポイントのマッピングを行う。変更の程度によって全キーポイントに関してマッピングできる場合もあれば一部できない場合もある。このマッピングにより、不一致箇所が認められれば、不一致箇所に応じて変更箇所への入出力を外部入出力扱いとする。
【0018】
すなわち、不一致箇所から最も近くの上記変更前後の回路記述の一致しているキーポイントを外部入出力扱いとする。全キーポイントに関して一部がマッピングされていなくても、最も近くのマッピングされている上記変更前後の回路記述の一致しているキーポイントを指定し、外部入出力扱いとすることができる。つまり、変更箇所を含む回路記述部分のみをモジュール化し、変更箇所の特定をする。
【0019】
また、処理6に示すように、非変更箇所となって、形式検証された回路部のうち、論理的不一致が発生する場合があり、この論理的な変更箇所を含む回路部をモジュール化し、論理的変更箇所の特定をする。
【0020】
上記処理6では、形式検証に伴うコーンのうち、特定された論理的な変更箇所およびその周辺における形式検証前に外部入出力扱いとしたノードを含むコーンの入出力を外部入出力扱いとして、この論理的な変更箇所を含む回路記述を切り出しモジュール化する。
【0021】
(B) 上記変更前後の回路記述1,2においてキーポイントの一致を保証できる回路記述に対して形式検証を行い(処理4,5)、かつ上記キーポイントの一致、もしくは等価性を保証できない回路記述に対してはイベントドリブン方式のシミュレーションを利用して検証を行う(処理7,8,9,10)。
【0022】
すなわち、処理4では、前記変更前後の回路記述それぞれに対して形式検証を利用し回路を検証する。このとき、上記処理3でモジュール化した回路部があるなら、各回路部において上記外部入出力扱いとしたノードのみを反映させる。つまり、モジュール化した変更箇所を含む回路部はブラックボックス扱いとしながら、変更前後の回路記述それぞれに対して全体的な形式検証を行う。
【0023】
処理5では、上記形式検証の結果、すなわち、等価性が判定される。論理的な不一致箇所が無ければ、変更箇所以外の全体の形式検証は等価とみなされる(検証終了(17))。また、論理的な不一致箇所がある場合は、変更箇所として特定される(処理6)。
【0024】
処理7では、処理8のイベントドリブン方式のシミュレーションを利用に際し、上述の処理3(さらに必要なら処理6)によりモジュール化された各回路部の入力キーポイントにシミュレーション時間の区切られたランダムなテストベクトル(入力信号)を繰り返し回路に入力するためのテストベンチを生成する。
【0025】
処理8では、テストベンチに応じて、上記モジュール化された変更前後の各回路部の入力キーポイントにテストベクトル(入力信号)が繰り返し入力され、イベントドリブン方式のシミュレーションを利用したシミュレーション検証を行う。
【0026】
処理9では、上記モジュール化された変更前後の回路部におけるシミュレーション結果を比較する。そして、処理10では、上記シミュレーション結果が等価であるか不一致であるかが判定される。この判定で等価と判定されると検証終了である(17)。
【0027】
上記実施形態の方法によれば、検証対象となる半導体集積回路に関し、変更箇所以外は形式検証を利用するので高速な機能検証ができる。さらに、変更箇所のみを切り出してのイベントドリブン方式のシミュレーションは高速である。よって、大規模な集積回路に対しても高速な機能検証を実現可能とする。
【0028】
RTレベルの機能設計においてレジスタ等の機能ブロックが構成されている場合、変更箇所を自動的に判定し、変更された箇所のみ切り出しモジュール化することができる。もちろん変更箇所が複数コーンに隣接していたり重なり合っている場合でも変更箇所を切り出してモジュール化することができる。
【0029】
すなわち、レジスタ構成の変更されていない回路記述部分は、形式検証によって高速に機能検証が行われる。レジスタを越えて組合せ回路を移動するような場合にも対応できる。
【0030】
また、上記処理7の利点は次のようである。自動生成されるランダムなテストベクトルを用いることによってテストベクトルの作成ミスによる検証抜けの防止、テストベクトル作成作業の省略をすることができる。
【0031】
イベントドリブンシミュレータ用のテストベンチを自動生成することによってテストベンチの作成ミスの防止、テストベンチ作成作業の省略に寄与する。さらに、シミュレーション時間を区切ったランダムなテストベクトルを繰り返し入力する方式を用いるので、不一致が発生した際のデバッグ効率を向上させる。
【0032】
処理8では、変更箇所のみ切り出した小規模な回路に対して自動生成されたランダムなテストベクトルでのシミュレーション検証が行われる。このため、大量なテストベクトルを実行することが可能となり、検証確度を向上させる。
【0033】
さらに、上で説明した主なフローに付随する各処理について再び図1を参照して説明する。
上記処理9の変更前後のモジュール化された回路部についてのシミュレーション結果の比較において、結果の異なる値になった場合、それが設計者の予測どおりの値となることがある。
【0034】
処理11では、このようなシミュレーション結果の予測される期待値を例えば波形表示ツールのGUI(グラフィック・ユーザ・インタフェイス)を用いて入力する。このような期待値は、例えばRTレベルの回路記述段階における変更前後の回路の変更箇所を指定することでその回路記述を解析し、変更前後で異なる実行結果が得られるテストベクトル(入力信号)とその実行結果から作成してもよい。
【0035】
さらに、処理12において、上記処理8,9を経た実際のシミュレーション結果から、不一致の発生したテストベクトル(入力信号)とこのテストベクトルを用いた前記変更後の回路の出力を上記期待値と比較する。その後、上述の処理10につながり、期待した変更がなされているか否か判定が行われる。
【0036】
また、処理13では、上述した処理10のシミュレーション結果の判定を経て、不一致の発生したテストベクトル(入力信号)とその結果出力をファイル出力または波形表示出力する。
【0037】
さらに処理14では、上記処理13において表示された変更前後の回路部の不一致が発生した箇所の確認、判定が行われる。ここでの判定とは、表示された不一致が、設計者の期待したとおりの変更であるかが判断される。
【0038】
処理14において、変更が設計者の期待したとおりである場合には、この不一致に至るテストベクトル(入力信号)およびその変更後の回路部の出力を新たな期待値として追加登録し(15)、イベントドリブンシミュレータでのシミュレーションの続行を可能とする。また、表示された不一致が、設計者の期待したとおりの変更でない場合、シミュレーション結果を参照してデバッグすることになる(16)。
【0039】
上記実施形態の方法において、処理9によれば、変更前後の回路でシミュレーション結果を比較することによって、機能を変更した部分のテストベクトルと回路出力のみ選別できる。
【0040】
また、処理11によれば、変更箇所の記述を解析し、それに基づいて期待値を作成することにより、期待値の作成ミス、作成抜けを防止する。そして、処理12によれば、機能変更を行った際、期待値と、変更前後の回路で不一致となったテストベクトル、回路出力を比較することにより、期待した変更のみ実施されたかどうかを自動的に判定できる。
【0041】
また、処理13によれば、イベントドリブンシミュレータよりシミュレーション結果の出力を波形表示する機能を持つ。これにより、GUIを用いたデバッグ環境を提供する。
【0042】
さらに処理14、15によれば、不一致箇所の検証を行うための環境を自動生成することになる。これにより、ケアレスミスや設計者の意図していない機能変更によるバグ検出あるいはバグ混入が防止される。また、期待値の作成ミスを無くし、迅速に期待値の設定を行うことができるのでデバッグ効率が向上する。
【0043】
図2は、この発明の第2の実施形態に係る半導体集積回路の設計検証装置を示すブロック図である。この設計検証装置は、上記第1の実施形態で示した検証方法のフローを実現する。
【0044】
データ入力部21は、変更前後の回路記述(1,2)を入力する。処理部200中のマッピング変更箇所特定手段22は、変更前後の回路記述中においてレジスタの出力および信号の入出力に対応したキーポイントのマッピングを行う。不一致箇所がある場合は、不一致箇所から最も近くの一致しているキーポイントを外部入出力とし、変更箇所を含む回路部をモジュール化する。
【0045】
キーポイントのマッピングは、変更の程度によっては全キーポイントに対し一部がマッピングできなくなることもある。しかし、最も近くのマッピングされている上記変更前後の回路記述の一致しているキーポイントを指定し、外部入出力扱いとすることができる。つまり、変更箇所を含む回路記述部分のみをモジュール化し、変更箇所の特定をする。
【0046】
処理部200中の形式検証機構23は、上記モジュール化した各回路部においては上記外部入出力扱いとしたノードのみを反映させながら前記変更前後のそれぞれに対して形式検証を利用し回路全体を検証する。
【0047】
ここで、論理的変更箇所特定手段24は、上記形式検証機構23で論理的不一致が発生した場合、形式検証に伴うコーンのうち、特定された論理的な変更箇所およびその周辺における形式検証前に外部入出力扱いとしたノードを含んだコーンの入出力を外部入出力扱いとして回路記述を切り出しモジュール化する。
【0048】
処理部200中のイベントドリブンシミュレータ25は、モジュール化された変更前後の回路部それぞれに対し、シミュレーションする。モジュール化された回路部とは、上記マッピング変更箇所特定手段22によってモジュール化された回路部であり、また、論理的変更箇所特定手段24によってモジュール化された回路部もあれば加える、
上記シミュレーションは、入力キーポイントにテストベンチに応じてシミュレーション時間の区切られたランダムなテストベクトル(入力信号)を繰り返し入力するイベントドリブン方式のシミュレーションを利用した検証である。
【0049】
変更前後の回路記述について、上記のシミュレーション結果を比較する比較判定機構26が設けられる。出力部27では、この比較判定機構26により不一致が発生した場合、不一致の発生したテストベクトル(入力信号)とその結果出力を得る。この結果出力は例えばファイル出力や波形表示等モニタ出力である。
【0050】
さらに、図2中に付随する機能について説明する。
期待値入力手段31は、シミュレーション結果の予測される期待値を例えば波形表示ツールのGUI(グラフィック・ユーザ・インタフェイス)を用いて入力する。期待値は、上記に限らず、例えばRTレベルの回路記述段階における変更前後の回路の変更箇所を指定することでその回路記述を解析し、変更前後で異なる実行結果が得られるテストベクトル(入力信号)とその実行結果から作成してもよい。
【0051】
比較判定機構26は、実際のシミュレーション結果から、不一致の発生したテストベクトル(入力信号)とこのテストベクトルを用いた前記変更後の回路の出力を上記期待値と比較する。すなわち、期待した変更がなされているか否か判定が行われる。
【0052】
出力部27では、上述したシミュレーション結果の判定を経て、不一致の発生したテストベクトル(入力信号)とその結果出力をファイル出力または波形表示出力する。
【0053】
さらに比較判定機構26では、変更前後の回路部の不一致が発生した箇所の確認、判定が行われる。すなわち、上記表示された不一致が、設計者の期待したとおりの変更である場合には、この不一致に至るテストベクトル(入力信号)およびその変更後の回路部の出力を新たな期待値として追加登録し、イベントドリブンシミュレータでのシミュレーションの続行を可能とする。また、表示された不一致が、設計者の期待したとおりの変更でない場合、シミュレーション結果を参照してデバッグすることになる。
【0054】
上記実施形態によれば、第1の実施形態と同様の効果を有する。すなわち、検証対象となる半導体集積回路に関し、変更箇所以外は形式検証を利用するので高速な機能検証ができる。さらに、変更箇所のみを切り出してのイベントドリブン方式のシミュレーションは高速である。よって、大規模な集積回路に対しても高速な機能検証を実現可能とする。
【0055】
RTレベルの機能設計においてレジスタ等の機能ブロックが構成されている場合、変更箇所を自動的に判定し、変更された箇所のみ切り出しモジュール化することができる。もちろん変更箇所が複数コーンに隣接していたり重なり合っている場合でも変更箇所を切り出してモジュール化することができる。
【0056】
すなわち、レジスタ構成の変更されていない回路記述部分は、形式検証によって高速に機能検証が行われる。レジスタを越えて組合せ回路を移動するような場合にも対応できる。
【0057】
比較判定機構26では、変更前後の回路でシミュレーション結果を比較する。これにより、機能を変更した部分のテストベクトルと回路出力のみ選別できる。また、期待値入力手段31は、期待値の作成は、期待値の作成ミス、作成抜けを防止する。そして、機能変更を行った際、期待値と、変更前後の回路で不一致となったテストベクトル、回路出力を比較することにより、期待した変更のみ実施されたかどうかを自動的に判定できる。
【0058】
さらに、比較判定機構26では、不一致箇所の検証を行うための環境を自動生成することになる。これにより、ケアレスミスや設計者の意図していない機能変更によるバグ検出あるいはバグ混入が防止される。また、期待値の作成ミスを無くし、迅速に期待値の設定を行うことができるのでデバッグ効率が向上する。
【0059】
また、出力部27は、イベントドリブンシミュレータよりシミュレーション結果の出力を波形表示する機能を持つ。これにより、GUIを用いたデバッグ環境を提供する。
【0060】
上記第1、第2の実施形態を踏まえ、この発明の設計検証方法について(i)〜(iii) のケースを例に、より具体的に説明する。なお、図3(a),(b)それぞれは、ケース(ii)で用いる変更前の組合せ回路部、変更後の組合せ回路部を示す。図4(a),(b)それぞれは、ケース(ii)で用いる変更前回路部の入出力波形、変更後回路部の入出力波形を示す。図5は、RTレベル設計の変更前後のソースコードからの変更箇所の期待値の生成の様子を示す説明図である。図6(a),(b)それぞれは、ケース (iii)で用いる変更前の組合せ回路部、変更後の組合せ回路部を示す。
【0061】
(i)<レジスタ構成変更:無し、機能変更:無し>
例:ゲートレベル記述のバッファ挿入、セルの置き換え、タイミングチューニング。
【0062】
(1) 入力された変更前後の回路記述における全キーポイント(レジスタ出力、外部入出力)に関してマッピングできる(処理3)。
(2) 形式検証実行(処理4)。
上記2つの回路は等価であるというレポート出力(処理5)。
(3) 機能検証終了。
すなわち、上記(i)のケースでは、形式検証のみで所望の設計検証は達成できる。
【0063】
(ii)<レジスタ構成変更:無し、機能変更:有り>
例1:ゲートレベル記述のバッファ挿入、セルの置き換え、タイミングチューニングでバグが混入した場合。
例2:RTレベル記述でレジスタ間の組合せ回路の一部を他のレジスタ間へ移動(リソースシェリング)。
例3:RTレベル記述で組合せ回路記述変更時にバグが混入した場合。
【0064】
上記各例のうち、例2の場合で説明する。
(1) 入力された変更前後の回路記述における全キーポイント(レジスタ出力、外部入出力)に関してマッピングできる(処理3)。
(2) 形式検証実行(処理4)。
(3) 不一致箇所がレポート出力される。図3では変更前回路の組合わせ回路Aと変更後回路の組合せ回路A,B、変更前回路の組合わせ回路B,Cと変更後回路の組合せ回路Cの2箇所が機能不一致としてレポート出力される(処理5)。
【0065】
(4) 複数コーンが不一致であった場合、それらの回路を全て切り出すため、外部入出力信号から順次信号をトレースしていき、論理的不一致点の入出力に最初に至った点を外部入出力とし、回路の切り出しを行う。この図3では、変更前後それぞれの回路部に関し、ノードa,b,eを外部入力、ノードd,fを外部出力として点線内部の回路を切り出し、モジュール化する(処理6)。
【0066】
(5) 切り出された回路をイベントドリブンシミュレーションするためのテストベンチと、入力に一定のシミュレーション時間で区切られたランダムな信号を繰り返し入力するシミュレーション記述を作成する。ランダムな信号を入力する際、シミュレーション時間を区切って、繰り返し行う利点は、後でデバッグをする際にテストベクトルを取り扱うのに効率がよいからである(処理7)。
【0067】
(6) シミュレーション実行(処理8)。
(7) 切り出した変更前後の2つの回路出力を順次比較する。vcdファイルやシステムタスクを使用し、シミュレーション時間毎の信号変化をファイル出力させ、比較を行う(処理9)。
【0068】
(8) 不一致が発生した場合、入力してある期待値があれば、その期待値と比較する。期待値と一致している場合はカバレッジを向上させるためシミュレーションを続ける(処理12)。期待値は、例えば設計者が変更箇所を認識しており、動作が異なる場合の入出力状態が既知の場合、シミュレーション途中でも登録できる。
【0069】
(9) 期待値と一致していない、もしくは期待値が入力されていない場合は不一致の発生する際のテストベクトルと出力結果をレポートし、波形表示可能なファイル形式で不一致の発生したランダム入力信号と出力信号を出力する(処理13)。
【0070】
(10) 波形表示ツールとテストベンチ、および出力されたテストベクトルを用いてデバッグする。図4の場合、波形表示ツールの比較機能を使用して変更前後の2つの波形を比較すると、斜線部分が不一致箇所であると判定できる。設計者はその波形を見て、設計者の変更のとおりであるかを判断する(処理14)。
【0071】
上記判断により結果期待どおりの結果であれば、斜線部分を期待値として登録し(処理15)、シミュレーションを続行する。確度が十分になったら検証を終了する。期待どおりでなければ、デバッグ作業(処理16:図示せぬ別フロー)に入る。
【0072】
ここで、上記のような期待値の入力方法を説明する。例えば、波形表示ツールのGUIを使用し、グラフィカルに入力する技法である。図4の場合は、斜線内の入出力信号ベクトルが期待値となるので、このパターンを予め入力しておく。
【0073】
また、例えば、RTレベル設計の変更前後のソースコードから変更箇所の期待値を生成する技法である。図5のように、入力記述がRTレベルの場合、ソースコードの変更部分をクリックすることで、その変更部分を実行するための条件式を解析し、期待値ベクトルを作成する。
【0074】
この図5の場合、if文の条件式が変更可能であるので、CLK立ち上がり時にINPUT A=1かつINPUT BまたはCのどちらかが1である場合はOUTPUT Bがbになるベクトルを期待値として設定する。
【0075】
(iii)<レジスタ構成変更:無し、機能変更:有り>
例:RTレベル記述でのバグ修正。仕様変更、または高速化のための記述変更。
(1) 入力される変更前後の回路記述においてマッピングできないキーポイントが発生する。複数のコーンで不一致箇所が認められた場合、それらの回路を全て切り出すため、外部入出力信号から順次信号をトレースしていき、マッピングできないキーポイントに最も近いマッピングされているキーポイントを外部入出力として回路を切り出し、モジュール化を行う(処理3)。例えば図6では、ノードa,bを外部入力、ノードc,dを外部出力として回路を切り出しモジュール化する。
【0076】
(2) 切り出された回路をイベントドリブンシミュレーションするためのテストベンチと、入力に一定のシミュレーション時間で区切られたランダムな信号を繰り返し入力するシミュレーション記述を作成する。ランダムな信号を入力する際、シミュレーション時間を区切って、繰り返し行う利点は、後でデバッグをする際にテストベクトルを取り扱うのに効率がよいからである(処理7)。
【0077】
(3) シミュレーション実行(処理8)。
(4) 切り出した変更前後の2つの回路出力を順次比較する。vcdファイルやシステムタスクを使用し、シミュレーション時間毎の信号変化をファイル出力させ、比較を行う(処理9)。
【0078】
(5) 不一致が発生した場合、入力してある期待値があれば、その期待値と比較する。期待値と一致している場合はカバレッジを向上させるためシミュレーションを続ける(処理12)。期待値は、例えば設計者が変更箇所を認識しており、動作が異なる場合の入出力状態が既知の場合、シミュレーション途中でも登録できる。なお、期待値の入力方法は、上記具体例(ii)で述べたのと同様である。
【0079】
(6) 期待値と一致していない、もしくは期待値が入力されていない場合は不一致の発生する際のテストベクトルと出力結果をレポートし、波形表示可能なファイル形式で不一致の発生したランダム入力信号と出力信号を出力する(処理13)。
【0080】
(7) 波形表示ツールとテストベンチ、および出力されたテストベクトルを用いてデバッグする。例えば、波形表示ツールの比較機能を使用して変更前後の2つの波形を比較し、設計者の期待どおりの結果であれば、必要な部分を期待値として登録し、シミュレーションを続行する(処理14、15)。
【0081】
(8)一方、上記(1)で切り出されモジュール化された回路部への入出力を外部入出力として取り扱う。モジュール化した変更箇所を含む回路部はブラックボックス扱いとしながら、変更前後の回路記述それぞれに対して全体的な形式検証を行う(処理4)。
【0082】
(9)不一致点がある場合は、上記具体例(ii)における (3)以降の処理と同様の処理を経て検証を終了する。
【0083】
以上のような設計検証により、検証対象となる半導体集積回路に関し、変更箇所以外は形式検証により高速な機能検証が、さらに、変更箇所のみを切り出して高速にかつ検証確度の高いイベントドリブン方式のシミュレーションが実現できる。
【0084】
また、コンピュータを動作させるための、少なくとも半導体集積回路の設計検証プログラムを記憶した、コンピュータで読み取り可能な記憶媒体において、前記図1の処理フローに含まれる本発明に係る基本的な設計検証方法がプログラムされているものも本発明の範囲内である。
【0085】
すなわち、本発明に係る記憶媒体は、変更前後の回路記述を入力させ、不一致箇所に応じて変更箇所を特定させて、変更前後の回路記述においてレジスタの出力及び信号の入出力に対応したキーポイントの一致を保証できる回路記述に対しては形式検証を行うように、また、キーポイントの一致もしくは等価性を保証できない回路記述に対してはイベントドリブン方式のシミュレーションを利用して検証を行うようにプログラムされている。
【0086】
【発明の効果】
以上、説明したように、この発明によれば、最も機能検証の必要とされるRTレベル設計等の上位設計において、形式検証を効果的に導入できる。すなわち、変更前後の回路記述において、変更箇所以外は形式検証を利用するので高速な機能検証ができる。
【0087】
さらに、変更箇所のみを切り出してのイベントドリブン方式のシミュレーションは高速化、確度向上が可能である。よって、大規模な集積回路に対しても高速で信頼性の高い機能検証環境を実現可能とする半導体集積回路の設計検証装置、方法及び記憶媒体が提供できる。
【図面の簡単な説明】
【図1】この発明の第1の実施形態に係る半導体集積回路の設計検証方法を示すフローチャート。
【図2】この発明の第2の実施形態に係る半導体集積回路の設計検証装置を示すブロック図。
【図3】(a),(b)それぞれは、半導体集積回路の設計検証の具体例を説明するための変更前の組合せ回路部、変更後の組合せ回路部を示す第1の回路ブロック図。
【図4】(a),(b)それぞれは、半導体集積回路の設計検証の具体例を説明するための変更前回路部の入出力波形、変更後回路部の入出力波形を示すタイミングチャート。
【図5】RTレベル設計の変更前後のソースコードからの変更箇所の期待値の生成の様子を示す説明図。
【図6】(a),(b)それぞれは、半導体集積回路の設計検証の具体例を説明するための変更前の組合せ回路部、変更後の組合せ回路部を示す第2の回路ブロック図。
【図7】形式検証におけるコーンを示す概念図。
【符号の説明】
1〜17…設計検証のための各処理
Claims (14)
- 変更前後の回路記述を入力する入力手段と、
前記入力手段からの前記変更前後の回路記述におけるレジスタの出力及び信号の入出力ノードの配置関係を表すキーポイントの不一致箇所に応じて変更箇所を特定する特定手段を有し、
前記特定手段による特定の結果、前記キーポイントの一致を保証できる回路記述に対して形式検証を行い、前記特定手段による前記特定の結果、前記変更前後の回路記述において前記キーポイントの一致を保証できない回路記述、もしくは前記形式検証により論理的不一致が発生した場合、論理的な変更箇所を含む回路記述に対してはイベントドリブン方式のシミュレーションを利用して回路の機能検証を行う検証機構を備えることを特徴とした半導体集積回路の設計検証装置。 - 変更前後の回路記述を入力する入力手段と、
入力された前記回路記述中においてレジスタの出力および信号の入出力ノードの配置関係を表すキーポイントのマッピングを行い、前記変更前と変更後の回路記述の不一致箇所から、最も近くの前記変更前と変更後の回路記述の一致しているキーポイントを外部入出力とし、変更箇所を含む回路部をモジュール化する変更箇所特定手段と、
前記モジュール化した前記変更前と変更後の回路記述中の回路部それぞれに対しイベントドリブン方式のシミュレーションを利用した回路の機能検証を行うシミュレーション検証手段と、
前記モジュール化した各回路部において外部入出力扱いとしたノードのみと前記変更前と変更後の回路記述それぞれに対して形式検証を利用し回路の機能を検証する形式検証手段とを具備し、
前記形式検証手段において、論理的不一致が発生した場合、前記変更前と変更後の回路記述に対し論理的な変更箇所があるとして前記形式検証に伴うコーンのうち前記論理的な変更箇所および前記外部入出力扱いとしたノードを含んだコーンの入出力を外部入出力扱いとして前記論理的な変更箇所を含む回路記述を切り出しモジュール化する機能を有し、このモジュール化した前記変更前と変更後の回路記述中の回路部それぞれの機能が前記シミュレーション検証手段で検証されることを特徴とする半導体集積回路の設計検証装置。 - 前記イベントドリブン方式のシミュレーションを利用するため、前記モジュール化された各回路部の入力キーポイントに繰り返し入力されるシミュレーション時間の区切られたランダムなテストベクトルを生成するためのテストベンチ生成手段を含むことを特徴とする請求項2に記載の半導体集積回路の設計検証装置。
- 前記シミュレーション検証手段における前記変更後の回路記述に関する期待値を入力できる機能を備え、
前記シミュレーション検証手段からの実際のシミュレーション結果と前記期待値とを比較する比較判定手段を具備することを特徴とする請求項1乃至3いずれか一つに記載の半導体集積回路の設計検証装置。 - 前記比較判定手段は、前記シミュレーション検証手段からの実際のシミュレーション結果により、前記変更前と変更後の回路記述に不一致の発生したテストベクトルとこのテストベクトルを用いた前記変更後の回路記述に応じた出力を前記期待値と比較することにより、期待した変更がなされているか否か判定を行うことを特徴とする請求項4に記載の半導体集積回路の設計検証装置。
- 前記期待値は、RTレベルの回路記述段階における変更箇所を指定することでその回路記述を解析し、前記変更前と変更後の回路記述で異なる実行結果が得られるテストベクトル(入力信号)とその実行結果から作成することを特徴とする請求項4に記載の半導体集積回路の設計検証装置。
- 前記不一致が発生したテストベクトル(入力信号)についてこのテストベクトルを用いた前記変更後の回路記述に関する回路部の出力を新たな期待値として登録できる機能をさらに具備し、前記イベントドリブン方式のシミュレーションの続行を可能とすることを特徴とする請求項5に記載の半導体集積回路の設計検証装置。
- 入力手段により変更前後の回路記述を入力し、
特定手段により、前記入力手段により入力された変更前後の回路記述におけるレジスタの出力及び信号の入出力ノードの配置関係を表すキーポイントの不一致箇所に応じて変更箇所を特定し、
検証機構により、前記特定手段による特定の結果、前記キーポイントの一致を保証できる回路記述に対して形式検証を行い、前記特定手段による前記特定の結果、前記変更前後の回路記述において前記キーポイントの一致を保証できない回路記述、もしくは前記形式検証により論理的不一致が発生した場合、論理的な変更箇所を含む回路記述に対してはイベントドリブン方式のシミュレーションを利用して回路の機能検証を行うことを特徴とする半導体集積回路の設計検証方法。 - 入力手段により変更前と変更後の回路記述を入力する過程と、
変更特定手段により、前記入力手段により入力された前記回路記述中においてレジスタの出力および信号の入出力ノードの配置関係を表すキーポイントのマッピングを行い、前記変更前と変更後の回路記述の不一致箇所から、最も近くの前記変更前と変更後の回路記述の一致しているキーポイントを外部入出力とし、変更箇所を含む回路部をモジュール化する変更箇所特定過程と、
シミュレーション検証手段により、前記モジュール化した前記変更前と変更後の回路記述中の回路部それぞれに対しイベントドリブン方式のシミュレーションを利用した回路の機能検証を行うシミュレーション検証過程と、
形式検証手段により、前記モジュール化した各回路部において外部入出力扱いとしたノードのみと前記変更前と変更後の回路記述それぞれに対して形式検証を利用し回路の機能を検証する形式検証過程とを具備し、
前記形式検証過程で論理的不一致が発生した場合、論理的変更箇所特定手段により、前記変更前と変更後の回路記述に対し論理的な変更箇所があるとして前記形式検証に伴うコーンのうち前記論理的な変更箇所および前記外部入出力扱いとしたノードを含んだコーンの入出力を外部入出力扱いとして前記論理的な変更箇所を含む回路記述を切り出しモジュール化する論理的変更箇所特定過程を具備し、
前記モジュール化した前記変更前と変更後の回路記述中の回路部それぞれに対し前記シミュレーション検証過程が実行されることを特徴とする半導体集積回路の設計検証方法。 - 期待値入力手段により、前記シミュレーション検証過程における前記変更後の回路記述に関する期待値を入力する過程と、
比較判定手段により、前記シミュレーション検証過程における実際のシミュレーション結果と前記期待値とを比較する比較判定過程とを具備することを特徴とする請求項8又は9に記載の半導体集積回路の設計検証方法。 - 比較判定手段は、前記シミュレーション検証過程において前記変更前と変更後の回路記述に不一致が発生したテストベクトル(入力信号)についてこのテストベクトルを用いた前記変更後の回路記述に関する回路部の出力を新たな期待値として登録し、前記イベントドリブン方式のシミュレーションの続行を可能とする過程とを具備したことを特徴とする請求項10に記載の半導体集積回路の設計検証方法。
- コンピュータに、
変更前と変更後の回路記述を入力させる過程と、
前記入力された前記回路記述中においてレジスタの出力および信号の入出力ノードの配置関係を表すキーポイントのマッピングを行わせ、前記変更前と変更後の回路記述の不一致箇所から、最も近くの前記変更前と変更後の回路記述の一致しているキーポイントを外部入出力とし、変更箇所を含む回路部をモジュール化させる変更箇所特定過程と、
前記モジュール化された前記変更前と変更後の回路記述中の回路部それぞれに対しイベントドリブン方式のシミュレーションを利用した回路の機能検証を行わせるシミュレーション検証過程と、
前記モジュール化した各回路部において外部入出力扱いとしたノードのみと前記変更前と変更後の回路記述それぞれに対して形式検証を利用し回路の機能を検証する形式検証過程と、
前記形式検証過程で論理的不一致が発生した場合、前記変更前と変更後の回路記述に対し論理的な変更箇所があるとして前記形式検証に伴うコーンのうち前記論理的な変更箇所および前記外部入出力扱いとしたノードを含んだコーンの入出力を外部入出力扱いとして前記論理的な変更箇所を含む回路記述を切り出してモジュール化させる論理的変更箇所特定過程を具備し、
前記モジュール化された前記変更前と変更後の回路記述中の回路部それぞれに対し前記シミュレーション検証過程を実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体。 - 前記コンピュータに、前記シミュレーション検証過程における前記変更後の回路記述に関する期待値を入力させる過程と、
前記シミュレーション検証過程における実際のシミュレーション結果と前記期待値とを比較させる比較判定過程とを実行させるプログラムを記憶したことを特徴とする請求項12に記載のコンピュータ読み取り可能な記憶媒体。 - 前記コンピュータに、前記シミュレーション検証過程において前記変更前と変更後の回路記述に不一致が発生したテストベクトル(入力信号)についてこのテストベクトルを用いた前記変更後の回路記述に関する回路部の出力を新たな期待値として登録させ、前記イベントドリブン方式のシミュレーションの続行を可能にする過程とを実行させるプログラムを記憶したことを特徴とする請求項13に記載のコンピュータ読み取り可能な記憶媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00937399A JP3825572B2 (ja) | 1999-01-18 | 1999-01-18 | 半導体集積回路の設計検証装置、方法及び記憶媒体 |
US09/482,935 US6449750B1 (en) | 1999-01-18 | 2000-01-14 | Design verification device, method and memory media for integrated circuits |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00937399A JP3825572B2 (ja) | 1999-01-18 | 1999-01-18 | 半導体集積回路の設計検証装置、方法及び記憶媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000207440A JP2000207440A (ja) | 2000-07-28 |
JP3825572B2 true JP3825572B2 (ja) | 2006-09-27 |
Family
ID=11718673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP00937399A Expired - Fee Related JP3825572B2 (ja) | 1999-01-18 | 1999-01-18 | 半導体集積回路の設計検証装置、方法及び記憶媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6449750B1 (ja) |
JP (1) | JP3825572B2 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3842489B2 (ja) * | 1999-06-30 | 2006-11-08 | 株式会社東芝 | 回路設計装置、回路設計方法および回路設計プログラムを格納したコンピュータ読み取り可能な記録媒体 |
US6691286B1 (en) * | 2000-10-31 | 2004-02-10 | Synplicity, Inc. | Methods and apparatuses for checking equivalence of circuits |
US6567959B2 (en) * | 2001-03-30 | 2003-05-20 | Intel Corporation | Method and device for verification of VLSI designs |
US6687882B1 (en) * | 2002-01-31 | 2004-02-03 | Synplicity, Inc. | Methods and apparatuses for non-equivalence checking of circuits with subspace |
US6792581B2 (en) | 2002-11-07 | 2004-09-14 | Intel Corporation | Method and apparatus for cut-point frontier selection and for counter-example generation in formal equivalence verification |
JP2004213605A (ja) | 2002-11-15 | 2004-07-29 | Fujitsu Ltd | 論理等価検証装置 |
US7266790B2 (en) * | 2003-03-07 | 2007-09-04 | Cadence Design Systems, Inc. | Method and system for logic equivalence checking |
JP4175953B2 (ja) * | 2003-05-23 | 2008-11-05 | シャープ株式会社 | 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体 |
US7065726B1 (en) * | 2003-05-30 | 2006-06-20 | Jasper Design Automation, Inc. | System and method for guiding and optimizing formal verification for a circuit design |
JP2005321861A (ja) * | 2004-05-06 | 2005-11-17 | Nec Electronics Corp | 機能検証方法 |
CN100365638C (zh) * | 2004-09-03 | 2008-01-30 | 华为技术有限公司 | 一种电路原理图标准化分析方法及装置 |
JP2008262318A (ja) * | 2007-04-11 | 2008-10-30 | Fujitsu Ten Ltd | ソフトウェア評価装置及びその信号モニタ方法 |
US8813006B1 (en) * | 2008-03-26 | 2014-08-19 | Cadence Design Systems, Inc. | Accelerated characterization of circuits for within-die process variations |
JP2011054070A (ja) * | 2009-09-04 | 2011-03-17 | Fujitsu Ltd | 冗長論理回路検出方法及び冗長論理回路検出装置 |
US8423934B1 (en) * | 2010-02-22 | 2013-04-16 | Cadence Design Systems, Inc. | Model validation cockpit |
US8806401B1 (en) | 2013-03-15 | 2014-08-12 | Atrenta, Inc. | System and methods for reasonable functional verification of an integrated circuit design |
CN115422863B (zh) * | 2022-08-31 | 2023-10-10 | 山东启芯软件科技有限公司 | 一种嵌入式的逻辑优化验证流程框架及验证方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4319321A (en) * | 1979-05-11 | 1982-03-09 | The Boeing Company | Transition machine--a general purpose computer |
US4328542A (en) * | 1979-11-07 | 1982-05-04 | The Boeing Company | Secure implementation of transition machine computer |
US5253181A (en) * | 1989-04-27 | 1993-10-12 | Kawasaki Steel Corporation | Programmable one-board computer, and methods of verification of logic circuit and alteration to actual circuit using the programmable one-board computer |
JP3212157B2 (ja) | 1992-09-14 | 2001-09-25 | 株式会社リコー | 論理回路検証装置 |
US5493508A (en) * | 1994-06-01 | 1996-02-20 | Lsi Logic Corporation | Specification and design of complex digital systems |
US6049662A (en) * | 1997-01-27 | 2000-04-11 | International Business Machines Corporation | System and method for model size reduction of an integrated circuit utilizing net invariants |
US6295636B1 (en) * | 1998-02-20 | 2001-09-25 | Lsi Logic Corporation | RTL analysis for improved logic synthesis |
US6148436A (en) * | 1998-03-31 | 2000-11-14 | Synopsys, Inc. | System and method for automatic generation of gate-level descriptions from table-based descriptions for electronic design automation |
US6077305A (en) * | 1998-12-16 | 2000-06-20 | Cadence Design Systems, Inc. | Latch inference using dataflow analysis |
US6279146B1 (en) * | 1999-01-06 | 2001-08-21 | Simutech Corporation | Apparatus and method for verifying a multi-component electronic design |
-
1999
- 1999-01-18 JP JP00937399A patent/JP3825572B2/ja not_active Expired - Fee Related
-
2000
- 2000-01-14 US US09/482,935 patent/US6449750B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000207440A (ja) | 2000-07-28 |
US6449750B1 (en) | 2002-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3825572B2 (ja) | 半導体集積回路の設計検証装置、方法及び記憶媒体 | |
US6754862B1 (en) | Gaining access to internal nodes in a PLD | |
US6385765B1 (en) | Specification and verification for concurrent systems with graphical and textual editors | |
EP1093619B1 (en) | System and method for identifying finite state machines and verifying circuit designs | |
US8560985B1 (en) | Configuration-based merging of coverage data results for functional verification of integrated circuits | |
US8555234B2 (en) | Verification of soft error resilience | |
US7434184B2 (en) | Method for detecting flaws in a functional verification plan | |
US20070005323A1 (en) | System and method of automating the addition of programmable breakpoint hardware to design models | |
JPH11328251A (ja) | モデル検査のための動作環境を自動的に生成する方法 | |
US20070005322A1 (en) | System and method for complex programmable breakpoints using a switching network | |
Goli et al. | Automatic protocol compliance checking of SystemC TLM-2.0 simulation behavior using timed automata | |
CN112286750A (zh) | 一种gpio验证方法、装置、电子设备和介质 | |
US7165231B2 (en) | Method and system for incremental behavioral validation of digital design expressed in hardware description language | |
US20030221173A1 (en) | Method and apparatus for detecting connectivity conditions in a netlist database | |
He et al. | Protocol-inspired hardware testing | |
Copty et al. | Efficient debugging in a formal verification environment | |
WO2006025412A1 (ja) | 論理検証方法、論理モジュールデータ、デバイスデータおよび論理検証装置 | |
US10769332B2 (en) | Automatic simulation failures analysis flow for functional verification | |
Keng et al. | Automated debugging of missing assumptions | |
JP3941336B2 (ja) | 論理回路検証装置 | |
Chang et al. | InVerS: an incremental verification system with circuit similarity metrics and error visualization | |
Ferro et al. | Generation of test programs for the assertion-based verification of TLM models | |
Caba et al. | HALib: Hardware Assertion Library for on-board verification of FPGA-based modules using HLS | |
Jiang et al. | Effective error diagnosis for RTL designs in HDLs | |
US8869080B2 (en) | Automatically identifying resettable flops for digital designs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060307 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060502 |
|
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: 20060627 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060630 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090707 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100707 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110707 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120707 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130707 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |