(57)【特許請求の範囲】
【請求項１】
一対の回路の全体の等価性を検証し得る性能を有する複数の完全検証技術および一対の回路の一部の等価性を検証し得る性能を有する複数の補助検証技術を含む複数の検証技術を用いて、回路データ構造により表現された組合せ回路を検証するコンピュータ支援回路検証システムであって、
上記複数の検証技術の中から、所要時間及び所要メモリ空間が所定の制約条件に収まる範囲内で回路の等価性を検証し得る能力が低いものから高いものへの順番で検証技術を選択する手段と、
上記回路データ構造の検証結果を決定するか、又は、上記回路データ構造を変更するため、選択された一つの検証技術を実行し、最終的な検証結果を決定するか、又は変更された回路データ構造を次に選択された検証技術へ送る手段と、
所要時間若しくは所要メモリ空間が所定の制限に到達したときに、最終的な検証結果が決定されていれば該最終的な検証結果を提供し、そうでなければ変更された回路データ構造を提供する手段と、
を有するコンピュータ支援回路検証システム。
【請求項２】
一対の回路の全体の等価性を検証し得る性能を有する複数の完全検証技術および一対の回路の一部の等価性を検証し得る性能を有する複数の補助検証技術を含む複数の検証技術を用いて、回路データ構造により表現された組合せ回路を検証するコンピュータ支援回路検証システムにおいて、
上記複数の検証技術の中から、所要時間及び所要メモリ空間が所定の制約条件に収まる範囲内で回路の等価性を検証し得る能力が低いものから高いものへの順番に検証技術を順序付ける手順と、
上記回路データ構造の検証結果を決定するか、又は、上記回路データ構造を変更するため、順序付けられた順番に一つの検証技術を実行する手順と、
所要時間若しくは所要メモリ空間が所定の制限に到達するか、又は、最終的な検証結果が決定されるまで、上記変更された上記回路データ構造を次に実行される検証技術へ渡す手順と、
最終的な検証結果又は変更された回路データ構造を提供する手順と、
を有するコンピュータ支援回路検証方法。
【請求項３】
所要時間と所要メモリ空間の制限が無い場合に一対の回路の等価性を検証し得る完全検証技術、及び、一対の回路の一部だけの等価性を検証し得る補助検証技術を利用し、回路データ構造により表現された組合せ回路を検証するコンピュータ支援回路検証システムにおいて、
上記回路データ構造の検証結果を決定するか、又は、上記回路データ構造を変更するため、上記組合せ回路に対し、上記組合せ回路に類似したベンチマーク回路のサンプル集合についての所要時間及び所要メモリ空間が少ないものから多いものへの順に予め決定された順番に複数の完全検証技術及び複数の補助検証技術を実行し、
最終的な検証結果を決定するか、又は上記変更された回路データ構造を次に実行されるべき完全検証技術又は補助検証技術へ送り、
最終的な検証結果又は結果として変更された回路データ構造を提供する手段を有するコンピュータ支援回路検証システム。
【請求項４】
上記手段は、所定のコンピュータメモリ使用量若しくはコンピュータ実行時間使用量に関する制約に達するか、又は、上記最終的な検証結果が決定されるまで上記完全検証技術及び補助検証技術を順番に実行する、請求項３記載のコンピュータ支援回路検証システム。
【請求項５】
ブール式の全部又は一部の恒真性又は充足可能性を証明し得る性能を有する複数の解析技術を用いて、回路データ構造により表現された組合せ回路を解析するコンピュータ支援回路解析システムであって、
上記複数の解析技術の中から、所要時間及び所要メモリ空間が所定の制約条件に収まる範囲内でブール式の恒真性又は充足可能性を証明し得る能力が低いものから高いものへの順番で解析技術を選択する手段と、
上記回路データ構造の解析結果を決定するか、又は、上記回路データ構造を変更するため、選択された一つの解析技術を実行し、最終的な解析結果を決定するか、又は変更された上記回路データ構造を次に選択された解析技術へ送る手段と、
所要時間若しくは所要メモリ空間が所定の制限に到達するか、又は、最終的な解析結果が決定されたときに、最終的な検証結果が決定されていれば該最終的な検証結果を提供し、そうでなければ変更された回路データ構造を提供する手段と、
を有するコンピュータ支援回路解析システム。
【請求項６】
ブール式の全部又は一部の恒真性又は充足可能性を証明し得る性能を有する複数の解析技術を用いて、回路データ構造により表現された組合せ回路を解析するコンピュータ支援回路解析システムにおいて、
上記複数の解析技術の中から、所要時間及び所要メモリ空間が所定の制約条件に収まる範囲内でブール式の恒真性又は充足可能性を証明し得る能力が低いものから高いものへの順番に解析技術を順序付ける手順と、
上記回路データ構造の解析結果を決定するか、又は、上記回路データ構造を変更するため、順序付けられた順番に一つの解析技術を実行する手順と、
所要時間若しくは所要メモリ空間が所定の制限に到達するか、又は、最終的な解析結果が決定されるまで、上記解析結果又は変更された上記回路データ構造を次に実行される解析技術へ渡す手順と、
最終的な解析結果又は変更された回路データ構造を提供する手順と、
を有するコンピュータ支援回路解析方法。
【請求項７】
所要時間と所要メモリ空間の制限が無い場合にブール式の恒真性又は充足可能性を証明し得る完全解析技術、及び、ブール式の一部だけの恒真性又は充足可能性を証明し得る補助解析技術を利用し、回路データ構造により表現された組合せ回路を解析するコンピュータ支援回路解析システムであって、
上記回路データ構造の解析結果を決定するか、又は、上記回路データ構造を変更するため、上記組合せ回路に対し、上記組合せ回路に類似したベンチマーク回路のサンプル集合についての所要時間及び所要メモリ空間が少ないものから多いものへの順に予め決定された順番に複数の完全解析技術及び複数の補助解析技術を実行し、
最終的な解析結果を決定するか、又は上記変更された回路データ構造を次に実行されるべき完全解析技術又は補助解析技術へ送り、
最終的な解析結果又は結果として変更された回路データ構造を提供する手段を有するコンピュータ支援回路解析システム。
【請求項８】
上記手段は、所定のコンピュータメモリ使用量若しくはコンピュータ実行時間使用量に関する制限に達するか、又は、上記完全解析技術のうちの少なくとも一つが自動パターン生成技術である場合に、バックトラックの回数に関する制限に達するまで、上記完全解析技術及び補助解析技術を順番に実行する、請求項７記載のコンピュータ支援回路解析システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にコンピュータ支援設計（ＣＡＤ）システム及び方法に係わり、特に、ディジタル回路設計及び検証のため使用される方法に関する。
【０００２】
【従来の技術】
複雑なディジタルシステムを巧く設計するためには、意図された機能性に関して実装の正しさを検証することが必要である。従来、設計検証の作業はシミュレーションによって行われる。シミュレーションベース方式の場合、設計者はシステムへの全ての実現可能な入力を表わす完全なテストベクトル集合を作成する必要がある。上記の各テストベクトルに対する出力は設計の正確さを保証するため解析される。この処理は中央処理装置（ＣＰＵ）の時間を著しく集約するので、殆どの実際の状況で設計の正しさを保証するため設計を徹底的にシミュレーションすることは不可能である。
【０００３】
シミュレーションベース方式に起因して、種々の形式的な検証戦略が普及し始めている。これらの方式を利用することにより、全ての実現可能な入力の組合せの元で設計の正確さを保証することが可能になる。
【０００４】
複雑なシステムを設計する処理は、通常、システムの抽象的モデルから始まる。このモデルは、多数のシミュレーションを受けた後、設計の“最高の仕様”になる。この抽象的モデルから、詳細な実装が階層的な手法で導き出される。最初に、抽象的モデルは、設計のブロック構造行動を表わす合成可能な行動レジスタ・トランスファ・モデル（ＲＴＬ）モデルに変換される。この行動ＲＴＬモデルは、次に、システムの論理レベル記述である構造的モデルに変換される。構造的ＲＴＬモデルから、トランジスタのネットリスト及び設計の物理的レイアウトが導出される。
【０００５】
巧く働く設計方法論において、設計過誤を設計サイクルの早期に見つけることが不可欠である。この目標を達成するため、設計の機能性は、前のレベルからの設計仕様に対し設計サイクル階層のあらゆるレベルで検証される。同一設計の異なる実装が等価性を検査するため比較されるこの種の形式的な検証は、実装上の検証として知られている。図１は、従来技術による典型的な検証作業のフローチャートである。検証作業は設計作業と並行している点に注意する必要がある。典型的な検証作業は原仕様に対し第１の実装を検証することにより開始される。実装が成功であると検証された後、その実装は典型的に前の実装を最適化することにより得られる次の実装のための仕様になる。最初又は原設計は、ＲＴＬ設計１０として示され、最適化ＲＴＬ設計１４を生産するため最適化される（ステップ１２）。最適化ＲＴＬは検証１によって最初のＲＴＬに対し検証される（ステップ１６）。最適化ＲＴＬはゲートレベルネットリスト２０を生成するため合成される（ステップ１８）。ゲートレベルネットリスト２０は検証２によって最適化ＲＴＬに対し検証される（ステップ２２）。ゲートレベルネットリスト２０は最適化ネットリスト２６を生成するため最適化される（ステップ２４）。最適化ネットリスト２６は検証３によってゲートレベルネットリスト２０に対し検証される。次に、テスト論理が修正ネットリスト３２を作成するため最適化ネットリスト２６に追加される（ステップ３０）。修正ネットリスト３２は、最終ネットリスト３８を生成するため配置及び経由される（ステップ３６）。最後に、最終ネットリスト３８は検証５によって修正ネットリスト３２に対し検証される（ステップ４０）。
【０００６】
実装検証は、典型的に二つのフェーズで進行する。第１フェーズにおいて、原設計を表わすブールネットワークはＲＴＬ記述又はゲートレベルネットリストから抽出される。第２フェーズにおいて、このブールネットワークの正確さは形式的な方法を用いて検証される。
【０００７】
最近の研究は、２個のブールネットワークの等価性を検証する分野の発展に集中している。より詳しく言うと、研究は、出力が現在の入力だけではなく過去の入力のシーケンスにも依存する順序回路ではなく、組合せ回路、即ち、出力が現在の入力だけに依存する回路の検証に集中している。例えば、二つの設計の対応するラッチが識別され得るとき、ある種の順序検証問題は組合せ検証問題に軽減され得る。一般的な順序回路を検証する方式は存在するが、現在の技術の場合に上記方法を用いて大規模で複雑な回路設計を検証することは実際的ではない。
【０００８】
以下に組合せ照合問題を説明する。２個のブールネットリストが存在する場合、２個の回路の対応した出力が全ての可能な入力に対し一致するか否かが検査される。この問題はＮＰ困難であるので、任意のブール関数を取り扱い得る一般的な解法は存在しそうにない。しかし、実際に回路設計に実装された関数は、ランダムブール関数ではないので、大規模設計を巧く検証し得る種々の方式が開発された。
【０００９】
組合せ等価性検査の作業は、二つの主要なカテゴリに分類され得る。第１のアプローチは、特有の表現（即ち、正準表現）を用いて２個のネットワークの出力関数を表わすことによる。２個の回路は、対応する出力の正準表現が一致する時に限り等価である。最も普及している正準表現は２進決定図（ＢＤＤ）に基づいている。最悪の場合に、上記方法は入力の個数に対し指数関数的に空間を必要とする。
【００１０】
第２のアプローチは、２個の回路の間で等価ポイント及び含意を同定することからなる。この情報を用いることにより、等価性検査の処理は簡単化される。典型的な設計は一連の局部変更により進められるので、殆どの場合に、検証されるべき２個の回路の間に多数の含意がある。上記の含意ベースの方式は、大規模回路を検証する際に巧くゆき、殆どの組合せ検証システムの基礎をなす。
【００１１】
殆どの組合せ検証用の方法は、ＯＢＤＤ、自動テストパターン発生（ＡＴＰＧ）、学習などの単一の“コア”検証方式に基づいている。コア検証方式は、十分な時間及び空間が与えられた場合、単独で回路を検証し、又は、ある種のブール式の恒真性又は充足可能性を証明することができる。コア検証方式は、完全解析方式、即ち、十分な時間及び空間が与えられた場合に単独である種のブール式の恒真性又は充足可能性を証明し得る方式としても知られている。一方、補助解析方式は、単独で使用された場合、十分な時間及び空間が与えられたとしても、全てのブール式ではなく、一部のブール式の恒真性又は充足可能性しか検出できない方式である。
【００１２】
検証問題のＮＰ困難複合性に起因して、単一コア検証方式は広範囲の回路において巧く動作しないと予想される。更に、検証問題の性質は先見的には分からない。この不確実性は、ある種の検証方式において全ての検証問題が（小さいが）より多数の検証問題に分割されるので更に悪化する。
【００１３】
【発明が解決しようとする課題】
従って、一方の検証方式から他方の検証方式に切り替える際のオーバーヘッドを最低限に抑えると共に、先に適用された検証方式の結果を共有しながら種々のコア検証方式を自動的に利用し、かつ、一つ以上の検証方式が成功したときに検証結果が得られる方法が必要である。
【００１４】
【課題を解決するための手段】
本発明は、順番に配置され、検証の結果を判定、又は、回路データ構造を変更し、コンピュータメモリ使用量及び／又はコンピュータ実行時間使用量に関する所定の制約条件集合を超えるまで実行される完全な検証技術集合並びに補助技術集合を有し、回路検証の結果が判定されるまで、最終的な検証結果、又は、結果的に変更された回路データ構造を次の完全な検証技術又は補助技術に提供するフィルタベースド組合せ回路検証システムである。
【００１５】
本発明において、フィルタ集合はディジタル回路設計の検証のため順番に配置される。フィルタは、回路設計の検証に直接的に係る能動フィルタ（例えば、２進決定図（ＢＤＤ）ベースド検証器若しくは自動テストパターン発生（ＡＴＰＧ）ベースド検証器、又は、検証問題を簡単化するため回路に関する情報を収集し若しくは回路構造を変換する受動フィルタ（例えば、ランダムパターンシミュレーション又は回路分割）である。一対の回路を検証する必要がある場合、フィルタアプローチは、最初、メモリ使用必要量が非常に少なく非常に簡単かつ高速な技術を回路に適用する。このステップの後に、消費時間が増加し、その動作のためにより多量のコンピュータメモリを必要とし、能力が徐々に高まる一連の方法が続く。より簡単化した能動フィルタと、より複雑化された能動フィルタとの間において、回路内の潜在的な等価ノードに関する情報が集められ、回路を分割すべきか否かに関し決定がなされる。検証方法論は、検証しやすい回路設計に対し、高価な技術が決して誤用されないように構造化される。この方法は、検証問題が複雑化すると共に適用される検証技術の複雑さを増大させる。
【００１６】
本発明の一実施例において、システムは、（Ａ）製造されたディジタル回路に欠陥が在るか否かの決定、（Ｂ）“タイミング”に関する制約条件の決定、（Ｃ）最小コスト“エンジニアリングチェンジ”解、（Ｄ）（モデル検査方法への応用を含む）順序（時間依存形）回路の正確さの決定、又は、（Ｅ）ディジタル回路特性のようなブール表現のブール充足可能性又はブール恒真性のテストに依存する回路特性の分析を行う。
【００１７】
本発明の一実施例は、順番に配置され、解析結果を判定、又は、回路データ構造を変更する完全な検証技術の集合並びに補助技術の集合を有し、回路解析の結果が判定されるまで、最終的な解析結果、又は、結果的に変更された回路データ構造を次の完全な解析技術に提供するフィルタベースド組合せ回路解析システムである。
【００１８】
本発明は容易に拡張し得る利点があることに注意する必要がある。フィルタ構造は、新しい検証技術を追加することにより拡張又は増強され得る。新しい技術は、新しい技術の強さ、並びに、既にフィルタに収容されている他の技術に関する相対的な強さ又は弱さに依存してフィルタ構造の適当な場所に付加される。例えば、ブール表現図（ＢＥＤ）のような技術は、検証コアのマイクロフィルタ内で自動テストパターン発生（ＡＴＰＧ）検証の後にＢＥＤ技術を追加することにより本発明のフィルタ配置を拡張するため包含される。或いは、ＢＥＤ技術は、マイクロフィルタのスマートカットセットベースド検証の後に実行しても良い。同様に、別の新しい技術が提案又は開発された場合、新しい技術はフィルタ配置の適当な場所に挿入され得る。かくして、検証ソフトウェアシステムの全体を再開発する必要はない。かかる本発明の拡張性は、フィルタ志向型アプローチに対する重要な利点である。
【００１９】
以下の詳細な説明には、本発明を実施するため考えられたベストモードの実例を用いて本発明の実施例が開示、記載されているので、以下の詳細な説明から、本発明の他の実施例が当業者には明らかになる。本発明は他の種々の実施例が可能であり、本発明の細部は、本発明の精神及び範囲を逸脱することなく、種々の明瞭な観点から変更することが可能である。従って、添付図面及び詳細な説明は、本質的に例示的に過ぎず、制限として捉えるべきではない。
【００２０】
【発明の実施の形態】
Ｉ．  検証に対するフィルタ志向型アプローチ
Ａ．  定義
カットセット(Cutset)：ネットワークＮのノードｖの推移的ファンイン(TFI) のカットセットはノードの集合Ｓ＝｛ｖ1 ，ｖ2 ，．．．ｖk ｝であり、主入力からｖへのあらゆるパスは集合Ｓのノードｖi を通過しなければならない。
【００２１】
直接含意(Direct Implication)：回路Ｎのノードにブール値が初期割当てされた場合、ノードの接続性及びその対応した真理表だけを使用して回路Ｎの他のノードでブール値を決定する処理は、直接含意と称される。
【００２２】
間接含意(Indirect Implication)：間接含意は、対偶則を用いない限り直接含意だけでは得られない二つのノードのブール値の間の関係である。間接含意を得る処理は学習と称される。
【００２３】
弱い技術(Weaker Technique)：コンピュータシステムにおいて、技術Ａは技術Ｂよりも弱い技術と称される。検証手続の性能をベンチマークテストするため使用され、本発明による検証のため与えられた回路に類似した回路のサンプル集合を表わすと考えられる回路の経験的試験は、技術Ａの時間的／空間的必要量が技術Ｂの時間的／空間的必要量よりも少なく、技術Ａは技術Ｂよりも多数のケースを解決し得ることを明かす。
【００２４】
完全検証技術(Complete Verification Technique) ：十分な時間及び空間が与えられた場合に単体で一対の回路を検証し得る技術である。
【００２５】
完全解析技術(Complete Analysis Technique) ：十分な時間及び空間が与えられた場合にある種のブール式の恒真性及び充足可能性を証明し得る技術である。補助検証技術(Supporting Verification Technique) ：単独で使用された場合に、合理的な時間及び空間が与えられるならば、一対の回路におけるブール式の全部ではなく一部の検証を検出し得る技術である。
【００２６】
補助解析技術(Supporting Analysis Technique) ：単独で使用された場合に、十分な時間及び空間が与えられるならば、全部ではなく一部のブール式の恒真性又は充足可能性を検出し得る技術である。
【００２７】
回路特性(Circuit Property)：製造されたディジタル回路の欠陥の有無の決定、タイミングに関する制約条件の決定、最小コストエンジニアリングチェンジ解、順列（時間依存形）回路の正確さの決定、又は、ブール表現のブール充足可能性又はブール恒真性のテストに依存するようなあらゆるディジタル回路特性を表わす。
【００２８】
用語ネットワーク及び回路、ゲート及びノード、並びに、（順序付きの２進決定図を表わす）ＯＢＤＤ及びＢＤＤは交換して使用してもよい。
【００２９】
Ｂ．概要
本発明は順番に配置されたフィルタの集合により構成される。フィルタには、（１）回路設計の検証に直接的に関連する能動フィルタ（例えば、ＢＤＤベースド検証器又はＡＴＰＧベースド検証器）と、（２）回路に関する情報を収集し、検証問題を単純化するため回路構造を変換する能動フィルタ（例えば、ランダムパターンシミュレーション若しくは回路分割）の２タイプがある。
【００３０】
１対の回路Ｎ1 、Ｎ2 を検証すべき場合、本発明のフィルタアプローチは、最初に、非常に僅かなメモリ使用量しか必要としない非常に簡単、高速な技術をその回路の対に適用する。これらのステップの後に、動作のためより多くの時間を消費し、屡々より多くのコンピュータメモリを必要とし、徐々に能力が高くなる一連の方法が続けられる。簡単な方の能動フィルタと、複雑な方の能動フィルタとの間に、回路内の潜在的な等価ノードに関する情報を収集し、回路を分割すべきか否かを決定する段が存在する。本発明の検証方法は、学習のような高価な技術を検証しやすい回路設計に決して誤って適用しない。本発明の構造は、検証問題の複雑さに応じて、適用された検証技術の複雑さ（従って、計算コスト）を徐々に増大させる。このように、本発明は全体的な検証性能の緩やかな劣化を許容する。
【００３１】
図２は本発明のフィルタアプローチのフローチャートである。二つのネットワークＮ1 及びＮ2 が与えられた場合、複合ネットワークＮc は、Ｎ1 及びＮ2 の対応した主入力を連結することにより作成される。検証器全体は回路の内部ノードの対を検証することにより進行する。全ての等価ノードは併合される。検証器内の最初の２個のフィルタ、即ち、構造フィルタ及び機能フィルタは、計算コストの小さい高速フィルタである。上記フィルタは、非常に少ない計算コストでＮc 内の簡易な内部等価性を認定する。かかる内部等価性は、次のフィルタによって同様に認定され得る。しかし、次のフィルタを用いてこの内部等価性を識別することは、必要とされる計算資源の点で実質的にコスト高である。次に、機能的に等価であるノードの対を認定するためランダムパターンシミュレーションが使用される。このような候補の数が少ない場合、回路は、より多数の候補を作成し、検証作業を単純化するため分割される。次に、ＢＤＤベースドフィルタ及びＡＴＰＧベースドフィルタが大半の候補を検証するため呼び出される。これらのフィルタは、検証器の検証コア（ＶＣ）により構成される。残りの全ての検証段階は困難であると考えられる。回路を再合成し、全ての大きいＢＤＤを分割する二つのフィルタは、それ自体の検証のため利用される。以下、提案した検証方法論における各フィルタを詳細に説明する。
【００３２】
スタートステップ１００の後、検証されるべきネットワークは、目標とする標的分解を用いてテクノロジー分解される（ステップ１０２）。
【００３３】
分解処理の目的は、多数の等価物の候補が作成されるように回路内の複雑なゲートを単純な原始的（プリミティブ）ゲートの集合に分解することである。問題は連続した別個のフィルタに送られる。各フィルタは異なる検証方法により構成されている。各フィルタは、一部の問題を解法し、系列内の連続的な各フィルタは、典型的に、先行フィルタよりも少ない数の検証問題の解決に取り組む。系列内の最後のフィルタは、残りの全ての問題を解法する。全ての問題が解法された場合、検証処理は系列内のあらゆるポイントで停止される。従来のシステムの場合に、１個、２個、若しくは、高々３個の検証技術（即ち、フィルタ）が検証問題を解法するため使用される。本発明は、検証解を得るために必要に応じて検証問題を多数のフィルタに通す。系列内の検証技術の特定の配置は、最適性能のため非常に重要である。
【００３４】
ステップ１０４において、構造フィルタがネットワークに適用される。ステップ１０６において、機能フィルタがネットワークに適用される。次に、ランダムパターン発生器がネットワークをシミュレーションするため使用される（ステップ１０８）。ステップ１０９において、検証のための内部ゲートの候補リストが枝刈りされる。ステップ１１０において、検証用の候補が非常に少ない場合、ＹＥＳ側のパス１１２が選択され、ステップ１１４に進む。ステップ１１４において、検証される回路はＫ個の区分に分割される。このステップの目標は、回路設計の各区分内のゲート間に、より多くの等価物を作成することである。ステップ１１８乃至１３６が各区分毎に実行される。テストステップ１１０において、検証用の十分な候補が存在する場合、ＮＯ側のパス１１６が選択され、ステップ１１８に進む。処理は各区分毎に検証コアで続けられる（ステップ１１８）。検証コアは、“マクロフィルタ”と称される３個の別々のフィルタにより構成される。これらのフィルタは、ナイーブカットセットベースド検証１２０と、スマートカットセットベースド検証１２２と、ＡＴＰＧベースド検証１２４とを含む。スマートカットセットベースド検証１２２及びＡＴＰＧベースド検証１２４は、解に集まるより効率的な検証を行うためループ配置で処理される。
【００３５】
検査フェーズ１２６の後、ネットワークは検証用再合成により処理される（ステップ１２８）。このステップは、ＯＤＣ及び学習ベースド再合成１３０を含む。ネットワークは次に検証コア１３２の中に送られる。最後に、ネットワークは、ＢＤＤ分割１３６を含む修正検査フェーズ１３４により処理され、検証処理はエンドステップ１３８で終了する。
【００３６】
図４に示された別の実施例において、修正検査フェーズ１３４は、改良型修正検査フェース１３５によって置換される。修正検査フェーズ１３４は、検査フェーズ１２６と同一の処理に関与するが、ＢＤＤが爆発する場合、ＢＤＤはＢＤＤ分割１３６を用いて小さいＢＤＤに細分される。別の有用な実施例として、回路分割（図示しない）は、処理のこの段階でＢＤＤ分割１３６と共に導入しても良い。この組合せは、図４に示される如く改良型修正検査フェーズ１３５と称される。改良型修正検査フェーズ１３５において、修正検査フェーズ１３４に与えられた各検証問題に対し、回路は入力変数又は内部変数を用いる分割によって数個の区分に分割される。次に分割されたかかる回路に対し、ステップ１０８からステップ１３６までの全てのステップが適用される。
【００３７】
図２には、フィルタベースド検証システムの一実施例が記載されているが、数通りの別の構成を実現することができる。例えば、ＯＤＣ及び学習ベースド再合成１３０又は検証フィルタ用再合成１２８を省いても良い。或いは、構造フィルタ１０４及び／又は機能フィルタ１０６は、フィルタ毎に後に適用しても良い。同様に、検証コアフィルタ１２８内の構造を変更し、スマートカットセットベースド検証１２２及びＡＴＰＧベースド検証１２４だけを使用するように、又は、ナイーブカットセットベースド検証１２０と、後続したＡＴＰＧベースド検証１２４と、後続したスマートカットセットベースド検証１２２とを使用するように選択することが可能である。別の方法は、スマートカットセットベースド検証１２２と、ＡＴＰＧベースド検証１２４との間のループを省略する。回路分割は、回路再合成の後に、ＢＤＤ分割と共に使用してもよい。各回路分割毎に、ステップ１１８からステップ１３８までの全てのステップが実行される。修正検査フェーズ１３４は、改良型修正検査フェーズ１３５により置換してもよい。上記フィルタアプローチの幾つかの別の実施例が図３乃至９に記載されている。上記変形例の他に、当業者は成功の程度が変化する種々の明らかな組合せの形でフィルタアプローチの基本ステップを使用する。
【００３８】
充足可能性（ＳＡＴ）の解決は多くのＣＡＤの領域で主要な問題であることは公知である。ＣＡＤの殆どの問題はＳＡＴ問題としてモデル化することができる。本発明は、エンジニアリングチェンジ、合成、配置、及び、強力なＳＡＴ解決器が必要とされる場面に適用可能である。
【００３９】
本発明は、図１０に示される如く、ＳＡＴ問題を解法する解析ツールとして使用することができる。同図に示す如く、スタートステップ２００に続いて、解放されるべきＣＡＤ問題は、ステップ２０４において、図２乃至４に示されたフィルタアプローチを使用して解法される。処理はステップ２０６で終了する。
【００４０】
ＩＩ．標的分解(targeted decomposition)
Ａ．各回路毎に使用する単一分解
ディジタル回路の多レベル最適化の間に、消去、分解、抽出、簡略化及び置換のような数種類の変換が行われる。ある種の変換は、種々のノードを併合又は分離させることにより回路構造に局所的な変化を生じさせる。その結果として、原ネットワークと最適化されたネットワークとの間の多数の対応ポイントは消失する。この内部的対応関係の欠如は、検証問題を非常に困難にする。従って、多くの内部的対応関係が見えるようにネットワークの高速再合成が行われる。この目的のため、単純なテクノロジー分解技術１０２が組み込まれる。５入力以上を有する二つのネットワーク内の複雑なゲートは２レベルのアンド・オア論理ネットワークに分解される。また、１１入力以上を有するアンドゲート及びオアゲートは、夫々アンド木及びオア木に分解される。既存のゲートのグループは、回路内に新しい原始的ゲートを作成するため既存のライブラリに基づいて標的を変更される。この方法は大規模かつ複雑な回路に対し非常に効果的であることが分かっている。
【００４１】
Ｂ．各回路毎に使用する多重分解
二つの回路Ｃ1 とＣ2 の間の“類似性”を増大させ、より検証し易くさせる方法を説明する。この処理は、最初に、与えられた回路の複雑な論理ゲート又は論理ゲートの集合を種々のテクノロジー分解と関連付けることにより動作する。各テクノロジー分解毎に、ある複雑なゲートｇ又はあるゲートの集合を表す原始的ゲートの集合が得られる。あるテクノロジー分解に対応する論理回路は、ローカルゲートマップと称される。多数のローカルゲートマップｇM1，．．．，ｇMkはゲートｇと関連している。このテクノロジー分解処理は所定の回路の対の各回路の全てのゲートに対し繰り返し行われ、多数のローカルゲートマップを各回路の各ゲートと関連付け、かくして得られた回路は多重マップ回路と称される。次に、多重マップ回路の各ゲートはシミュレーションにより評価される。即ち、所定のテクノロジーマップされた両方の回路の各ゲートの各テクノロジー分解はシミュレーションされる。このシミュレーションは、主入力変数に対し行われたブール割り当て（ベクトル）の共通集合を用いることにより行われ、ローカルゲートマップ内の所定のゲートに関する対応するシミュレーション結果（シグネチャー）は、その論理ゲートに格納される。
【００４２】
主入力から始めて、第１の回路の複雑なゲートｇのあるシミュレーションから得られた結果（シグネチャー）は、第２の回路の別の複雑なゲートｈのシミュレーションと比較される。この比較において、回路Ｃ1 のゲートｇのある主のローカルゲートマップｇMi内のゲートに格納されたシミュレーションは、回路Ｃ2 のある種のゲートｈのローカルゲートマップｈMjに格納されたシグネチャーと一致するようなシミュレーションである。ローカルゲートマップｇMi及びｈMjが最大個数の等価／相補形シグネチャーの対を有する場合を想定する。一定のゲートｇ及びｈは対応したテクノロジー分解ｇMi及びｈMjで置換される。かくして、回路は原始的論理ゲートに関して作成される。同一処理は、所定の各ゲートが対応したテクノロジー分解で置換されるまで、又は、適当な置換は不可能であるとの結論が得られるまで残りのゲートに対し繰り返し行われる。従って、２個の変換された回路は、原回路の複雑な各ゲート又はゲートの集合を上記の処理で選択されたような適当なテクノロジー分解で置換することにより原回路Ｃ1 、Ｃ2 から作成される。
【００４３】
フィルタの効率的な性能のため、かかる巧みなテクノロジー分解処理は、以下の条件（１）及び（２）の一方又は両方の条件下で実行することが好ましい。
（１）２個の回路Ｃ1 及びＣ2 は多数の等価／相補形候補対を含まない、及び、（２）等価／相補形候補対が含まれない与えられた２個の回路内に連続的な内部ゲートの大きい集合が存在する。
【００４４】
フィルタベースド検証処理内にある多重分解ベースドテクノロジー分解処理について説明したが、多重分解テクノロジー分解処理はシミュレーション処理が実行された後だけに使用されることを意図している。
【００４５】
ＩＩＩ．サブグラフ同型ベースド構造フィルタ
合成ツールの適用後に回路の構造に生じた変化は屡々局在する。このような場合に、原回路の主要部分はその合成された回路の部分と構造的に一致したままである。直接的な態様で同一構造の情報を利用し得る方法は、モノリシックＯＢＤＤを構築するような明示的な検証方法よりも効率的である。この目的のため、サブグラフの同型の認知に基づく高速方法が構造フィルタ１０４として使用される。フィルタは主入力から主出力までＮc を処理し、同型であるネットワークの部分を識別し、識別された部分はネットワークＮc1を生成するため併合される。
【００４６】
ネットワークの構造的に同型部分を識別するため、以下の方法が使用される。ゲートｇに対し、構造的に同型である候補ノードが識別される。これは以下の通り行われる。Ｆ＝｛ｎ1 ，．．．，ｎk ｝をゲートｇに供給する側のゲートの集合とする。Ｃ＝｛ｐ1 ，．．．，ｐj ｝は隣接したファンインとして集合Ｆ内の全ゲートを有するゲートの集合とする。また、集合Ｃ内の全てのゲートは他のゲートからの供給を受けないとする。集合Ｃはゲートｇとの等価性を検査される候補ゲートの集合を形成する。ゲートｈ∈Ｃがｇと同一の関数を実現するならば、ｇ≡ｈである。ゲートｇ及びｈは併合され、処理はネットワーク内の他の全てのゲートに対し繰り返される。このステップの時間的な複雑さは、Ｏ（｜Ｎc ｜）のオーダである。
【００４７】
ＩＶ．ＯＢＤＤハッシングベースド機能フィルタ
このフィルタは、局部ＯＢＤＤに基づく簡単な機能フィルタ１０６である。ネットワーク内のノードに対するＯＢＤＤは他の内部ノードを構成するカットセットに関して構築される。このフェーズは、Ｎc1内の内部的な等価ノードを識別する。Ｎc1の主入力はネットワーク内のノードに対しＢＤＤを構築する第１のカットセットを形成する。独立したＢＤＤ変数は主入力に割り当てられ、ＢＤＤはＮc1内の内部ノードに対し構築される。好ましい実施例において、ノードは幅優先順に処理される。ノードを処理する他の順序を選択してもよい。ノードは、キーとしてＢＤＤへのポインタを使用してハッシュ表ＢＤＤハッシュにハッシュされる。共有ＢＤＤデータ構造が予めセットされた限界に達したとき、別のＢＤＤは現在のカットセットに基づいて構築されない。全ての等価及び相補ゲートは併合され、併合されたノード及び主入力からなる新しいカットセットが深さ優先トラバーサルにより主入力から選択される。この処理は新しいカットセットに基づいて繰り返される。かくして、回路の各ゲート毎に典型的に、重複するＢＤＤの集合が種々の回路に基づいて構築される。
【００４８】
図１１はＢＤＤ用のハッシング機構を説明する図である。カットセット１はネットワークへの主入力からなる。ノードｎ３、ｎ４及びｎ５用のＢＤＤはカットセット１に関して構築される。ノードｎ４及びｎ５は、カットセット１に関して同一のＢＤＤを有するので、ＢＤＤハッシュの同一衝突チェーンにハッシュする。
【００４９】
２種類の発見的方法、即ち、
（１）共有ＢＤＤデータ構造のサイズに基づく発見的方法、及び、
（２）任意のカットセットを用いてＢＤＤが構築された回路の構造的レベルの数に基づく発見的方法
がいつでもＢＤＤのサイズを制限するため使用される。これらは、既に発見された等価ノードに基づいて新しいカットセットを導入するためにも使用される。等価ノードはネットワークＮc2を生成するため併合される。典型的に、任意の所定の時点に維持される５０，０００個のノードの制限は共有ＢＤＤデータベースに加えられる。任意のカットセットを用いて処理された回路レベルの最大個数は典型的に５である。この技術のフローチャートは図１２に示されている。最大のＢＤＤがＳlimit 個のノード未満であるならば、このステップの時間的複雑さは、固定のＳlimit に対する回路のサイズに線形的な項Ｏ（Ｓlimit ・Ｎc1）よりも少ない。ＢＤＤハッシュ処理は、スタートステップ３００で始まる。ステップ３０２において、複合ネットワークが作成される。次に、ステップ３０６で、主入力に基づく内部ゲートに対するＢＤＤが構築される。テストステップ３０８において、ＢＤＤサイズ限界が超えられないならば、ＮＯ側のパス３１０が選択されステップ３０６に戻る。そうではない場合、ＹＥＳ側のパス３１２が選択されステップ３１４に進み、内部ノードがそのＢＤＤポインタに基づいてハッシュされる。次に、ステップ３１６で、ハッシュ表が等価ノード及び反転ノードを識別並びに併合するため使用される。ステップ３１８において、回路内の全ノードが処理された場合、ＹＥＳ側のパス３２０が選択され、処理はエンドステップ３２２で終了する。そうではない場合、ＮＯ側のパス３２４が選択されステップ３２６へ進み、併合されたノード又は主入力の新しいカットセットが選択される。ステップ３２８において、内部ノード用のＢＤＤが新しいカットセットを用いて構築される。ステップ３３０で、ＢＤＤサイズ限界が超えられた場合、処理はステップ３１４へ進む。そうではない場合、処理はステップ３２８に進む。
【００５０】
このフィルタは、ランダムパターンシミュレーションベースド候補収集ステップ及び逐次合成技術と組み合わされた場合に単独で検証ツールとして使用され得る。かかる検証アプローチのフローチャートは図１３に示されている。スタートステップ３５０に続いて、複合ネットワークがステップ３５２で作成される。次に、ステップ３５４において、ランダムパターンシミュレーションが候補ゲートの全ての対を収容するハッシュ表を作成するため使用される。次に、ステップ３５６において、主入力に基づく内部ゲート用のＢＤＤは構築、ハッシュされる。全ての等価ゲート及び反転ゲートは併合される。テストステップ３５８において、全ての出力（ＰＯ）が検証されたならば、ＹＥＳ側のパス３６０が選択され、ＢＤＤハッシュを用いた検証はエンドステップ３６２で終了する。そうではない場合、ＮＯ側のパス３６６が選択され、逐次合成を用いて偽陰性が除去される。処理はエンドステップ３６２で終了する。
【００５１】
Ｖ．ランダムパターンシミュレーション
このフェーズでは、並列ランダムパターンシミュレーション１０８が機能的に等価である候補ノードを決定するためＮc2上で行われる。各ノードには、シミュレーションの結果を格納するため長さｋのビットベクトル（シグネチャーとも称される）Ｂが割り当てられる。典型的なｋの値は３２である。これは、典型的な３２ビットコンピュータ上の１ワードの記憶容量に対応する。このステップの時間的な複雑さはＯ（ｋ・｜Ｎc2｜）である。回帰ベースドシミュレーションの後、同一シグネチャーを有するノードが機能的等価物の候補として選択される。
【００５２】
内部ゲート対は、両方の回路の各ゲートを各ゲートが到達又は影響する対応した主出力と関連付けることにより、機能的等価性又は機能的相補性が検査される。即ち、各ゲートの推移的ファンアウトコーンに存在する回路出力が決定される。次に、ランダムパターンシミュレーションは、所定の適用されたランダムシミュレーションベクトルの集合に対し各ゲートのシグネチャーを決定するため適用される。同一シグネチャー又は相補シグネチャーのいずれかを有し、かつ、出力リストが交差する各ゲート対は、少なくとも１個の共通対応主出力が推移的ファンアウトコーン内に含まれるように一つに集められる。
【００５３】
ＶＩ．回路は分割されるべきか？
参考として引用した Dr. J. Jain他：“Functional Partitioning For Verification And Related Problems ”, MIT VLSI  Conference 1992 には、検証問題は、ｎ変数関数Ｆの２n ブール空間を分割することにより著しく単純化され得ることが記載されている。この分割は、Ｆの充足可能性集合の互いに素な分割とみなすことができる。かくして、関数Ｆは、少なくとも１個の分割が充足可能で有る場合に限り充足可能である。かかる分割は機能的分割と呼ばれる。回路構造の分割及びＢＤＤ分割に基づくような機能的分割技術の一部は既に開発されている。回路分割は縮小された回路の集合を作成し、ＢＤＤ分割は小さいＢＤＤの集合を作成し、典型的に非常に大形のＢＤＤだけに対して適用される。例えば、変数ｘi ＝０、ｘi ＝１に関して回路Ｃをシミュレーションすることにより、２個の回路分割Ｃxi=0及びＣxi=1が作成される。各回路は別々に解析できるようになる。原ネットワークＮ1 、Ｎ2 を検証するため、Ｎc2の各区分がブール値０に減少するか否かを検証する。
【００５４】
回路分割は、検証される回路のサイズを縮小するだけではなく、以下の数種類の利点を有する。
（１）新しい条件付き等価物が作成される。例えば、あるゲートｇa 、ｇb は変数ｘi ＝０の場合に限り等価である。一方、あるゲートｇc 、ｇd はｘi ＝１の場合に限り等価である。
（２）新しい条件付き学習が作成される。この学習は所定の区分だけに保持される含意である。かかる簡略化は検証問題を著しく容易化し、屡々、検証処理を劇的に高速化させる。
【００５５】
所定の回路Ｎc2に対し機能的区分を作成すべきか否かの決定は、このポイントで行われる。フィルタ構造内のこのステップで考量されるのは、ＢＤＤ分割ではなく回路分割だけであり、ＢＤＤ分割は、現在のアプローチが巨大なＢＤＤを構築することなく二つの所定の回路を検証し得ない場合に限り行われる。
【００５６】
回路を分割すべきか否かを決定するため使用される規準は、潜在的な機能的等価物の候補の密度に基づいている。機能的等価物の個数がＮc2内のゲート総数よりも著しく少ないことが判明した場合、或いは、主出力に最も近い候補の限界が主出力から構造的距離に関して非常に離れている場合、即ち、膨大なノードのバンドが（計算上コスト高の間接含意の抽出を伴うことなく）容易に関連付けられない２個のネットワークに残される場合、２個の回路はブール定数を少数の主入力に割り当てることにより分割される。一般的に、２個の回路の間に充分な数の潜在的等価物が作成されるまで、又は、分割の個数に関する予めセットされた最大限界（典型的に約８）が超過されるまで、分割が行われる。最大の推移的ファンアウトコーンに影響を与える主入力は回路を分離する変数として選択される。
【００５７】
ＶＩＩ．検証コア（ＶＣ）
所定のノード対（ｎ1 ，ｎ2 ）に対し、システムがｎ1 ≡ｎ2 かどうかを解法できない場合、以下の２通りのシナリオを考えることができる。
シナリオ（Ａ）：ｎ1 ≡ｎ2 の場合に、関係を見つけるため、（ｎ1 ，ｎ2 ）のコーン内の内部（入力）ノード（変数）の間の機能的依存性を解析する必要がある。
シナリオ（Ｂ）：ｎ1 ≠ｎ2 の場合に、関係を見つけるため、主入力に関する関数
【００５８】
【外１】
0003858000.tif 000002
に対する充足ベクトルを表現する必要がある。ＢＤＤベースド技術又はＡＴＰＧベースド方法のいずれか一方は、より複雑な解析を実行し、ｎ1 ≡ｎ2 であるか否かを証明するため使用することができる。ＡＴＰＧベースド方法は空間枝刈り方法論であるとみなすことができ、ＯＢＤＤベースド方法は空間コンパクション（関数表現）技術であるとみなされる。そのため、逆の場合があるとしても、ＡＴＰＧベースド方法はｎ1 ≠ｎ2 の場合に最も良く動作し、ＯＢＤＤベースド方法はｎ1 ≡ｎ2 である場合に最も効率的であると考えられる。厳密な回帰ベースドシミュレーションに起因して、大半の候補対（ｎ1 ，ｎ2 ）は実際上機能的に等価であると期待される。従って、検証コアの初期フィルタはＯＢＤＤベースド技術であり、その後にＡＴＰＧベースドアプローチが続く。
【００５９】
Ａ．マクロフィルタの構造
検証プログラムのコアは、有効なタイムアウト及びスペースアウト機構によって厳しく制限された３通りの別々の技術により構成される。その中の二つの技術はループ状に結合され、非常に有効な内部フィルタを構成する。上位レベルフィルタはマクロフィルタと称され、内部フィルタはミクロフィルタと称される。ノードの対は、ランダムパターンシミュレーション１０８により作成された候補リストから取り上げられ、検証コア１１８はノード対が機能的に等価であるか否かを検証するため適用される。等価であることが判明した場合、下位構造レベルを有するノードはネットワークに保持され、もう一方のノードを機能的に置換するため使用される。保持されたノードにはＥＱノードのマークが付けられる。
【００６０】
検証コアは、（１）ナイーブカットセット(Naive Cutset)ベースド検証１２０、（２）スマートカットセットベースド検証１２２、及び、（３）ＡＴＰＧベースド検証１２４の３通りの技術からなる。各技術は固有のタイムアウト限界と関連付けられる。特定の技術が呼び出されてからの経過時間を追跡し、プリセット時間が経過した後、割込を発生するアラーム機構が実装されている。最初の２つの方法は、ＢＤＤベースの技術であり、固有のスペースアウト限界と関連付けられる。ＢＤＤ管理下のノードの総数が予め指定された限界を超過した場合に、割込が発生され、ＢＤＤベースド機構が打ち切られる。ＡＴＰＧベースド方法はバックトラックの回数に制限を設定することにより制御される。バックトラックのプリセット数が超過した場合にＡＴＰＧベースド方法は打ち切られる。スマートカットセットベースド技術及びＡＴＰＧベースド技術はループ状に配置される（マイクロフィルタ）。このループへの連続的な各エントリは、上記二つの技術を大きいタイムアウト及びスペースアウト限界、即ち、高い強度で呼び出す。かくして、検証されるべきノードの対が与えられた場合、二つのコア方法の中の各方法は、もう一方の方法により多くの計算資源を消費する前に、問題を解法するための公平なチャンスを与えられるべきである。この技術は、特に大規模、複雑な回路に関して非常に有効であることが実験により分かった。
【００６１】
Ｂ．ローカルナイーブカットセットベースド検証（ＮＣＶ）
ランダムパターンシミュレーションによって機能的等価物の候補であると判定された２個のノードｎ1 及びｎ2 が与えられた場合、最初に内部ノードのナイーブカットセットλが選択される。ｎ1 ∈λなる各ノードは、主入力又はＥＱノードである。次に、このカットセットは、λ内のノード間の相互機能的依存性を最小限に抑えるため安定化される。λ内の各ノードは、カットセットの他のメンバによって完全にカバーされているか否かを判定するため順番に調べられる。完全にカバーされている場合に、そのノードはカットセットから除去される。例えば、図１４において、初期カットセットλがノード｛ｐ７，ｐ２，ｐ１，ｐ３，ｐ５，ｐ６｝からなる場合を想定する。ノードｐ５は、ノードｐ３及びｐ６によって完全にカバーされている。従って、ノードｐ５はカットセットから除去しても構わない。また、カットセット内のノードがカットセットの１個以上のメンバに機能的に依存し、その依存性が除去されるように別のノードで置換できるならば、置換が行われる。図１４のノードｐ１は機能的にノードｐ２及びｐ３に依存している。ノードｐ１はλの他のいかなるメンバにも依存していないノードｐ４により置換され得る。従って、安定化されたカットセットλは、ノード｛ｐ７，ｐ２，ｐ４，ｐ３，ｐ６｝により構成される。次に、２個のＯＢＤＤ、Ｂ1 及びＢ2 がλs に関して夫々ｎ1 及びｎ2 に対し構築される。Ｂ1 ≡Ｂ2 である場合、ノードｎ1 及びｎ2 は機能的に等価であることが証明される。このフェーズは、ユーザが指定し得るタイムアウト及びスペースアウト限界によって制限される。タイムアウト限界及びスペースアウト限界の典型的な値は、５秒（ＣＰＵ実行時間）及び１０，０００ノードである。
【００６２】
Ｃ．マイクロフィルタ：ローカルスマートカットセットベースド検証（ＳＣＶ）
参考のため引用したMatsunaga,“An Efficient Equivalence Checker For Combinational Circuits", Design Automation Conference (DAC), 1996に記載されているように、ノードｎ1 及びｎ2 が等価であり、ナイーブカットセットλN を用いてＢＤＤを構築することによりその等価を証明できない場合、カットλN 上のカットセット変数間の機能的依存性（ドントケア）はＮＣＶによって適切に説明できないので、このアプローチは失敗する（即ち、偽陰性に到達する）。かかる偽陰性の可能性を低下させるため、カットセットλは、λ内のノードが最小相互機能的依存性を有するように選択される。一方、ｎ1 ≠ｎ2 であり、関係を見つけることができない場合、上記の如く、少なくとも関数
【００６３】
【外２】
0003858000.tif 000003
の一部を主入力変数に関して表現する必要がある。これは、ＡＴＰＧフィルタに適当であり、かつ、機能的依存性を最小限に抑えるため使用されたフィルタ技術が失敗したときにＡＴＰＧフィルタに自動的に渡される作業である。
【００６４】
ノードの集合Ｓが与えられた場合、スマートカットセットを選択する方法は以下の手順で行われる。ＴＦＩs はＳ内の全ノードの推移的ファンイン（ＴＦＩ）のノードの集合を表すことにする。２個のカウンタＣ1 及びＣ2 はＴＦＩs の各ノードと関連付けられる。ｎi ∈ＴＦＩs なる各ノード毎に、カウンタｃi は、ＴＦＩにｎi が存在するＳ内のノードの個数をカウントする。全ての主入力に対するｃ2 の値は、そのｃ1 の値と一致する。隣接したファンインノードであるｆａｎｉｎnjを備えたＴＦＩs 内のｎj である全ての他のノードに対し、ｃ2 が以下の通り計算される。
【００６５】
【数１】
0003858000.tif 000004
次に、スマートカットセットは、集合Ｓから始まり、主入力に向かって進む簡単な深さ優先探索手続によって選択される。深さ優先探索は、ｃ1 ≡ｃ2 なるノードで停止する。初期カットセットλが選択された後、λs を獲得するため安定化される。
【００６６】
次に、ＯＢＤＤはλs に関してＳ内のノードに対し構築される。二つのノードｎ1 及びｎ2 がスマートカットセットを用いて検証されるとき、最初に、ｎ1 及びｎ2 のＯＢＤＤの排他的論理和（ＸＯＲ）が構築される。このＢＤＤが０に縮小する場合、ノードｎ1 及びｎ2 は機能的に等価であることが証明される。そうではない場合、逐次合成と称される技術が使用される。現在のＸＯＲ形ＢＤＤが組み立てられるという点で新しい安定化スマートカットセットを検出する。この逐次合成の処理は、一定回数（典型的に３回）繰り返される。ＢＤＤが０に減少する場合、ｎ1 ≡ｎ2 である。一方、ＢＤＤが主入力変数に関して充足可能になるならば、ｎ1 ≠ｎ2 である。また、スマートカットセットベースド検証はタイムアウト及びスペースアウト機構によって制御される。タイムアウト限界及びスペースアウト限界の典型的な値は、夫々、２０秒（ＣＰＵ実行時間）及び１００，０００ノードである。タイムアウト限界はＳＣＶの次のパスで増加される。スマートカットセットベースド検証がタイムアウト又はスペースアウトに起因して停止する場合、或いは、ｎ1 ≡ｎ2 又は  ｎ1 ≠ｎ2 のいずれであるかを証明できない場合、ＡＴＰＧベースド検証が行われる。
【００６７】
Ｄ．マイクロフィルタ：ＡＴＰＧベースド検証（ＡＶ）
ＡＴＰＧを用いてｎ1 及びｎ2 を検証するため、最初に、ｎ1 及びｎ2 を使用してマイタが作成される。マイタとは、二つの回路の対応する出力の排他的論理和（ＸＯＲ）を取ることにより作成された回路
【００６８】
【外３】
0003858000.tif 000005
である。図１６にはマイタの一例が示されている。同図において、破線は元の回路接続を表わす。新しいＸＯＲゲートが導入され、ＸＯＲゲートの出力は元々ノードｎ1 から給電されていたノードに給電する。次に、ＡＴＰＧツールは、図１６に示される如く、故障スタック・アット・ゼロ（ｓ−ａ−０）をテストするため使用される。故障が冗長である場合、ｎ1 はｎ2 に機能的に一致するか、又は、両者は可観測性ドントケア条件（ＯＤＣ）の下で相互に一致する。このフェースで消費される時間は、ＡＴＰＧ処理で許容されたバックトラックの回数を制限し、タイムアウト機構を作動することにより制御される。ＡＶの最初のパスに対し、バックトラック限界は典型的に５０にセットされる。この限界は後続のパスで増大される。タイムアウト限界は典型的に５０秒にセットされ、同様に後続のパスで増大される。
【００６９】
第１のパスがＳＣＶ及びＡＶを通過した後、ｎ1 及びｎ2 が機能的に等価である、若しくは、機能的に等価ではないのいずれも証明されなかった場合、ＳＣＶ及びＡＶは、より大きいタイムアウト、スペースアウト、及び、バックトラック限界を用いて（マイクロフィルタ内で）繰り返される。かくして、ＶＣはネットワークＮc2を容認し、ネットワークＮc3を生成する。この変換の時間的複雑さは、ＯＢＤＤ及びＡＴＰＧルーチンに設定された空間的限界及び時間的限界に依存するので、完全に制御することができる。
【００７０】
ＶＩＩＩ．検査フェーズ
検査フェーズ１２６において、主出力の対応する対は、それらの等価性を検証しようとして解析される。ネットワークＮc3において、全ての機能的に等価なノードは既に併合され、多数の主出力の等価性ができるだけ先に識別されている。そのため、先行フェーズは、二つの回路を検証するため充分である場合が多い。しかし、ＶＣ単独では検証できない回路が存在する。二つの原回路の間の多数の（容易な）等価ノードは既に得られているので、完全ＢＤＤ構成の問題はかなり簡単化されている。このフェーズにおいて、出力ＢＤＤを構成するため、本発明は、主入力に到達するまで、若しくは、関数が零に達するまで、内部等価ポイントのカットセットに関して出力
【００７１】
【外４】
0003858000.tif 000006
のＯＢＤＤを順番に組み立てる。しかし、本発明のフィルタの原理、及び、計算困難な関数のＯＢＤＤ爆発の留意により示されるように、ＢＤＤ構成は、大きい予めセットされたスペースアウト／タイムアウト限界が超過された後に停止される。
【００７２】
ＩＸ．ＯＤＣ等価性及びＯＤＣ学習ベースド再合成
このステップにおいて、残りの未検証主出力の各対は別々に目標とされる。かかる出力対毎に、新しいネットワークＮhardがその推移的ファンインコーンに対し作成される。このフェーズの目的は、Ｎhardのノードの間でより複雑な関係を見つけ、検証問題が単純化されるように、この関係をＮhardを再合成するため使用することである。選択された出力対に最も近いＥＱノードのカットセットは配置されている。この境界の前方のノードは、アヘッドオフフロンティア（ＡＯＦ）集合を構成する。ＡＯＦの全てのノードは、Ｎc の他のノードと機能的に等価であることが分かっているノードが含まれないようなノードである。このフェーズの目的は、ネットワークのＯＤＣの下で等価又は他のノードと学習関係を有するノードを抽出することである。
【００７３】
Ａ．ＯＤＣ等価性及びＯＤＣ学習候補の同定
最初に、回路は各ノードのシグネチャーを獲得するためランダムにシミュレーションされる。ノードの対は、シミュレーションによって得られたシグネチャーがｋ1 ビットよりも多数のビットで異なるならば、ＯＤＣ等価性の候補である。本例ではｋ1 ＝１である。この数字は、入力スペースの非常に小さい部分に亘る２個のノードの間の機能的な差異が可観測性ドントケアによって屡々マスクされ、主出力で現れないので選択された。ＯＤＣ学習に対する候補の場合、以下の４通りの動作がｎi ，ｎj ∈ＡＯＦなるノードの各対のシグネチャーの間で行われる。
【００７４】
【数２】
0003858000.tif 000007
ここで、ｓｉｇniはノードｎi のシグネチャーを表わす。掲記の最初の演算の結果は、
【００７５】
【外５】
0003858000.tif 000008
である場合に、恒真である。同様に、他の三つの演算は他の３通りの学習の場合に該当する。ＯＤＣ学習のための候補を同定するため、上記の各演算の合成シグネチャーは、全数１のシグネチャー、即ち、各ビットがブール値１であるシグネチャーと比較される。合成シグネチャーがｋ2 個よりも多数のビットで全数１シグネチャーと相違するならば（但し、ｋ2 ＝１が選択されている）、二つのノードはＯＤＣ学習の候補であると考えられる。ＯＤＣ等価性及びＯＤＣ学習に対する候補が見つけられた後、それらの関係を抽出するルーチンが始動される。
【００７６】
Ｂ．ＯＤＣ等価性及びＯＤＣ学習の抽出
ＯＤＣ等価性の抽出はＡＴＰＧベースド検証と同一である。ＯＤＣ学習の抽出は以下に詳説する。ノードｎ1 及びｎ2 がＯＤＣの下で、学習
【００７７】
【外６】
0003858000.tif 000009
の候補であることが分かっている場合を考える。次に、マイタが図１６に示される如く作成される。続いて、ＡＴＰＧツールは、Ｙにおける故障ｓ−ａ−０をテストするため始動される。故障が冗長である場合、
【００７８】
【外７】
0003858000.tif 000010
及び、ｎ1 ∨ｎ2 が回路内でｎ2 を機能的に置換するため使用される。
【００７９】
他の３タイプのＯＤＣ学習は同様な方法で抽出される。かかる再合成は２個の回路の併合を補助し、潜在的に検証問題を単純化し得る。また、再合成は、屡々、ＡＯＦのノード間により多くの機能的等価物を作成する。これらの機能的等価物は検証を更に単純化するため利用され得る。再合成が終了した後、ＶＣ及び検査フェーズは、主出力の単一の対を含むＮhard上で再起動される。検査フェーズの間にＢＤＤサイズが爆発した場合、ＢＤＤ分割が上記の如く起動される。
【００８０】
Ｘ．２進決定図（ＢＤＤ）分割
ＢＤＤ分割は、Ｆの２n ブール空間を互いに素の部分空間に分割し、各部分空間を別々に表現することにより、（非常に大きいモノリシックＢＤＤを有する）困難な関数ＦのＢＤＤを構成する。ＢＤＤの各区分には新しいＢＤＤマネージャが割り当てられるので、個別に記録することが可能である。更なる区分は、ＢＤＤサイズ上の限界に依存して逐次合成の間に動的に作成される。分割はＢＤＤ爆発の問題を著しく解消する。各区分が別個のＢＤＤによって表現されるとき、各ＢＤＤは独立に作成してもよく、与えられた関数の合成表現は“分割”ＯＢＤＤ表現と称される。
【００８１】
Ａ．分割ＲＯＢＤＤの意味：定義
ｎ個の入力Ｘn ＝｛ｘ1 ，．．．，ｘn ｝に関して定義されたブール関数
【００８２】
【外８】
0003858000.tif 000011
を考える。関数ｆの分割ＲＯＢＤＤ表現Ｘf は以下の通り定義される。
【００８３】
Ｘn に関して定義されたブール関数
【００８４】
【外９】
0003858000.tif 000012
が与えられた場合、関数ｆの分割ＲＯＢＤＤ表現Ｘf はｋ個の関数対の集合
【００８５】
【数３】
0003858000.tif 000013
であり、式中、
【００８６】
【外１０】
0003858000.tif 000014
はＸn に関して定義され、以下の条件を充たす。
・条件１．  ｗi 及び
【００８７】
【外１１】
0003858000.tif 000015
は、変数順序πi 、但し、１≦ｊ≦ｋの場合にＲＯＢＤＤとして表現される。
・条件２．  ｗ1 ＋ｗ2 ＋．．．＋ｗk ＝１
・条件３．
【００８８】
【数４】
0003858000.tif 000016
式中、＋又は∧は、夫々ブール論理オア及びアンドを表わす。集合｛ｗ1 ，．．．，ｗk ｝はＷにより示される。
【００８９】
各ｗi はウィンドウ関数と称される。直観的に、ウィンドウ関数ｗi は関数ｆが定義されているブール空間の一部を表わす。各対
【００９０】
【外１２】
0003858000.tif 000017
は、関数ｆの区分を表わす。ここで、用語“区分”は、区分が互いに素であるという従来の意味では使用されていない。条件１乃至３に加えて、
ｗi ∧ｗj ＝０、但し、ｉ≠ｊ
なる条件がある場合、区分は直交している。このとき、明らかに
【００９１】
【外１３】
0003858000.tif 000018
は従来の意味での区分に相当する。
【００９２】
Ｂ．分割ＲＯＢＤＤを構成する方法
分割された縮小順序付き２進決定図（ＲＯＢＤＤ）の性能は、関数がコンパクトに表現されたブール空間の良好な区分を生成する能力に決定的に依存する。ブール空間の良い区分を見つける問題は、分割ＲＯＢＤＤ表現の中心である。以下に、コンパクトな直交した分割ＲＯＢＤＤを生成する際に非常に効果的な簡単な発見的方法を説明する。ブールネットリストは本アプローチで使用されているが、この技術は汎用的であり、任意のブール演算の系列に適用することが可能である。
【００９３】
本ＢＤＤ分割アプローチにおいて、ウィンドウの個数は、先見的又は動的に決定される。ウィンドウｗi が決定された後、ウィンドウに対応する分割ＲＯＢＤＤは、ウィンドウｗi に対応したブール空間内でＦを組み立てることにより得られる。
【００９４】
ある関数Ｆに対しＢＤＤを分割する際に、分解されたＢＤＤ表現（即ち、入力変数の意味ではなく、所定のターゲット関数Ｆに対するＢＤＤを構築する過程で作成された疑似入力変数の意味でのＢＤＤ）に基づいて作業が行われる。Ｆに対する分割ＢＤＤを作成する必要があるならば、区分を生じさせるため分解されたＢＤＤが解析される。分解ポイントψ1 ，．．．，ψk に関してＦに対する分解されたＢＤＤを組み立てることができないので、区分決定が典型的に行われる。Ｆに対し分解されたＢＤＤから分割ＢＤＤを作成し得る３通りの方法があることに注意する必要がある。
（１）入力変数を使用する分割。入力変数の個数は動的に変更してもよく、又は、所定の定数に設定してもよい。
（２）“内部”変数、即ち、入力変数ではない変数を使用する分割。かかる変数は内部ゲートに取り込まれた疑似変数でも構わない。
（３）  上記（１）と（２）の組合せを用いる分割。
【００９５】
本フィルタリングベースド検証処理における時間的なあるポイントで、Ｆの分解された表現ｆd （Ψ，Ｘ）が得られる。ここで、Ψ＝｛ψ1 ，．．．，ψk ｝は、ナイーブカット又はスマートカット処理により分解集合と称され、ψi ∈Ψなる各ψi は分解ポイントである。
【００９６】
【数５】
0003858000.tif 000019
が分解ポイントのＲＯＢＤＤを含む配列を表わす、即ち、ψi ∈Ψなる各ψi が主入力変数、並びに、（できる限り）ψj ≠ψi なる他のψj ∈Ψなるψj に関して、
【００９７】
【外１４】
0003858000.tif 000020
と表される対応したＲＯＢＤＤを有する場合を想定する。同様に、
【００９８】
【外１５】
0003858000.tif 000021
の配列は、
【００９９】
【外１６】
0003858000.tif 000022
によって表される。ｆd （Ψ，Ｘ）におけるψi の合成は、
【０１００】
【外１７】
0003858000.tif 000023
によって表され、但し、
【０１０１】
【数６】
0003858000.tif 000024
である。
【０１０２】
ｆd （Ψ，Ｘ）におけるΨのベクトル合成は、
【０１０３】
【外１８】
0003858000.tif 000025
により表され、ψi のｆd への逐次合成を表現する。
【０１０４】
Ｃ．分解表現の分割
ウィンドウ関数ｗi 、分解表現ｆd （Ψ，Ｘ）、ｆのＲＯＢＤＤ配列Ψbdd が与えられ、
【０１０５】
【数７】
0003858000.tif 000026
を表わすＲＯＢＤＤがｆよりも小さくなるようなｆi を見つける場合を考える。キューブに他ならない全てのｗi はこの要求を充たす。
【０１０６】
ｆd 、Ψbdd 及びｗi が与えられた場合、共通係数
【０１０７】
【外１９】
0003858000.tif 000027
を作成する。次に、
【０１０８】
【外２０】
0003858000.tif 000028
において、
【０１０９】
【外２１】
0003858000.tif 000029
を組み立てることにより、分割関数
【０１１０】
【数８】
0003858000.tif 000030
が得られる。ウィンドウ関数ｗi の集合が与えられた場合、ｆの分割ＲＯＢＤＤｘf は、
【０１１１】
【数９】
0003858000.tif 000031
により与えられる。上記定義が上記条件１．乃至条件３．を充たすことは容易に確かめられる。
【０１１２】
ｗi がキューブの場合、ｆi はｆに対するＲＯＢＤＤよりも小さいサイズを有することが保証される。また、ｗi を表わすＲＯＢＤＤは、ｋがｗi 内の文字数であるとき、ｋ個の内部ノードを有する。ｗi 及び
【０１１３】
【外２２】
0003858000.tif 000032
は、互いに素のサポートを有するため、
【０１１４】
【数１０】
0003858000.tif 000033
である。また、ｆi 構築の各中間結果はｆ構築の中間結果よりも小さくなると共に、中間ピークメモリ要求量が低減される。
【０１１５】
上記考察は、ｆ及びｆi が異なる変数順序を有するとき、動的変数再整列がある場合に成り立たないことに注意する必要がある。しかし、実際上、動的変数再整列は分割の場合により小さいグラフ上で動作するので、おそらくより効率的である。
【０１１６】
ウィンドウ関数がキューブよりも複雑なＰＩの関数である場合でも、
【０１１７】
【数１１】
0003858000.tif 000034
が使用される。ここで、
【０１１８】
【外２３】
0003858000.tif 000035
は、ｗi 上のｆの汎用共通係数である。ｗi 上のｆの汎用共通係数は、一般的にｆよりもかなり小さい。しかし、ｉ番目の分割ＲＯＢＤＤ
【０１１９】
【外２４】
0003858000.tif 000036
は、最悪の場合では
【０１２０】
【外２５】
0003858000.tif 000037
になる可能性がある。これを回避するため、一般的なウィンドウ関数を使用すると共に、小さいｗi を使用する。
【０１２１】
Ｄ．ウィンドウ関数の選定
与えられたウィンドウ関数から分割関数を構成する方法を決定した後、より優れたウィンドウ関数を得るために方法を検査する。上記の方法は、先見的選定と“爆発”ベースド選定の二つのカテゴリに分類される。
【０１２２】
１．先見的分割
この方法において、所定数の主入力（ＰＩ）を分割のため選択する。ｋ個のＰＩ上で分割する場合、この変数の全ての２進割当てに対応した２k 個の区分を作成する。例えば、ｘ1 及びｘ2 上で分割することに決めた場合、４個の区分
【０１２３】
【外２６】
0003858000.tif 000038
が作成される。前節で行った考察から、この種のウィンドウ関数が与えられた場合、モノリシックＲＯＢＤＤよりも小さい分割ＲＯＢＤＤを作成し得ることが分かる。ある時点でメモリに存在すべき区分は１個しかないので、空間的に優れている。メモリの削減量は大きく、同時に全ての区分を処理するため要する時間が全体的に短縮される。
【０１２４】
異なる区分を独立に作成する際に生じる冗長性を最小限に抑えると同時に、実現される分割を最大化する変数、即ち、任意の分割及び獲得アプローチの基本原理の選択を目標とする。このため、変数ｘ上で関数ｆを分割するコストを
【０１２５】
【数１２】
0003858000.tif 000039
として定義する。式中ｐx （ｆ）は分割係数を表し、
【０１２６】
【数１３】
0003858000.tif 000040
によって与えられ、ｒx （ｆ）は冗長性係数を表し、
【０１２７】
【数１４】
0003858000.tif 000041
によって与えられる。
【０１２８】
小さい分割係数は最悪の二つの区分が小さいということを意味するので分割係数は小さいほど優れ、同様に、小さい冗長性係数は二つの区分を作成する際に含まれる全作業が少ないということを意味するので冗長性係数は小さいほど優れていることに注意する必要がある。比較的少ない総コストを有する変数ｘが分割のため選定される。
【０１２９】
関数Ｆ及び変数ｘの所定のベクトルに対し、分割のコストは、
【０１３０】
【数１５】
0003858000.tif 000042
のように定義される。
【０１３１】
全てのＰＩをｆd 及びΨを分割するコストが増加する順序に並べ、最良のｋを選定する（ｋはユーザによって指定された所定の数値である）。類似したコスト関数を使用することにより、分割ＲＯＢＤＤを作成するため、ＰＩ変数だけではなく、ＰＩに関して表現された
【０１３２】
【外２７】
0003858000.tif 000043
のような疑似変数を選定することができる。この場合、共通係数演算は、非キューブ形のウィンドウ関数に対する汎用共通係数動作になる。ｆd 及びΨを分割するコストに従ってランク付けされたこのタイプの選定は、静的分割選定と称される。一方、最良のＰＩ（即ち、ｘ）がｆd 及びΨに基づいて選定され、後続のＰＩが一方の分割において
【０１３３】
【外２８】
0003858000.tif 000044
に、他方の分割において
【０１３４】
【外２９】
0003858000.tif 000045
に基づいて再帰的に選定される動的分割戦略をとることも可能である。動的分割方法は指数関数的な数の共通係数を必要とし、コスト高になる。このコストは、関心のある値が
【０１３５】
【外３０】
0003858000.tif 000046
の共通係数の値だけであるという事実を利用することにより幾分削減され得る。
【０１３６】
【外３１】
0003858000.tif 000047
の値の上限は、ｆd のＲＯＢＤＤをトラバースし、ｘに対応した変数ｉｄを有するノードが見つけられる毎に、ｘ＝１の分岐を取ることにより計算される。ＲＯＢＤＤをこのようにトラバースして得られるＢＤＤは削減されないので、この方法は正確なカウントを与えない。この方法は、新しいノードを作成する必要が無く、かつ、トラバースが高速にできる利点がある。
【０１３７】
また、分割の個数が動的に選定されるような区分の作成を選択することが可能である。この場合、ＢＤＤが爆発する毎に（ＢＤＤ爆発を定量化する方法に関する詳細は戦略２の説明を参照のこと）、ＢＤＤ爆発が回避できると考えられるまで、１ずつインクリメントして選択された分解変数を用いてＢＤＤを動的に分割する。
【０１３８】
２．爆発ベースド分割
この方法では、ｆd の
【０１３９】
【外３２】
0003858000.tif 000048
を逐次的に組み立てる。グラフサイズがある構成（例えば、ψj ）に対し著しく増大する場合、現在の
【０１４０】
【外３３】
0003858000.tif 000049
に基づいてウィンドウ関数ｗを選定する。ウィンドウ関数は、ＰＩ及びその相補形、若しくは、ある
【０１４１】
【外３４】
0003858000.tif 000050
及び、ＰＩだけに関して表現されたその相補形であり、非常にサイズが小さい。ウィンドウ関数ｗが得られた後、二つの区分
【０１４２】
【外３５】
0003858000.tif 000051
を作成し、各区分毎にルーチンを再帰的に呼び出す。
【０１４３】
典型的に、合成後に得られたＢＤＤが、既に合成された全ての先行した分解ＢＤＤの合計と、元の分解されたＢＤＤのサイズとの和よりも１０倍以上大きい場合、爆発ベースド分割の実行が選択される。
【０１４４】
３．先見的変数選択並びに爆発ベースド分割
この戦略では、一定数の分解変数を決定し、爆発ベースド分割を実行し、次に、一定数の主入力変数ベースド分割が行われ、或いは、その逆順の処理が行われる。爆発ベースド分割は主入力並びに疑似変数／分解ポイントの両方を使用することができる。
【０１４５】
Ｅ．合成の順序
ウィンドウ関数を選定し、
【０１４６】
【外３６】
0003858000.tif 000052
によって与えられたｉ番目の分割に対する分解された表現を作成した後、最終的なステップは、
【０１４７】
【外３７】
0003858000.tif 000053
における
【０１４８】
【外３８】
0003858000.tif 000054
即ち、
【０１４９】
【外３９】
0003858000.tif 000055
を合成する。最終的なＲＯＢＤＤサイズは所定の変数順序に対し一定ではあるが、中間メモリ必要量及び合成のための時間は、分解ポイントが合成される順番の強い関数であることが分かる。
【０１５０】
ｆd に合成され得るあらゆる候補変数に対し、結果として合成されたＲＯＢＤＤのサイズを評価するコストが割り当てられる。最小コストを伴う変数が合成される。サポート集合サイズに基づく簡単なコスト関数は、巧く働くことが分かる。従って、合成後にＲＯＢＤＤのサポート集合のサイズの増加量が最も少ない分解変数を選定する。各ステップ毎に、合成用の候補ψを他のいずれのψbdd にも存在しない分解ポイントに制限する。これにより、分解変数はｆd において１回だけ合成されれば足りることが保証される。
【０１５１】
本発明の種々の実施例を具体的に示したが、本発明の範囲及び精神を逸脱することなく形式及び詳細に関する種々の変更をなし得ることは当業者によって認められる。
【０１５２】
本発明の種々の実施例を具体的に示したが、本発明の範囲及び精神を逸脱することなく形式及び詳細に関する種々の変更をなし得ることは当業者によって認められる。
【０１５３】
以上の説明に関して更に以下のような態様が考えられる。
【０１５４】
（付記１）  回路データ構造により表現された組合せ回路を検証するシステムにおいて、
上記組合せ回路に対し、順番に並べられ検証結果を決定又は上記回路データ構造を変更する複数の完全検証技術及び複数の補助検証技術を実行し、
上記検証結果又は上記変更された回路データ構造を、上記順番の後側の完全検証技術又は補助検証技術の中の一つに送り、
最終的な検証結果又は結果として変更された回路データ構造を提供する手段からなるシステム。
【０１５５】
（付記２）  上記手段は、所定のコンピュータメモリ使用量又はコンピュータ実行時間使用量に関する制約集合を超えるまで、若しくは、上記最終的な検証結果が決定されるまで上記完全検証技術及び補助検証技術を実行する付記１記載のシステム。
【０１５６】
（付記３）  回路データ構造により表現された組合せ回路を検証するコンピュータ実装された方法において、
上記組合せ回路に対し、順番に並べられ検証結果を決定又は上記回路データ構造を変更する複数の完全検証技術及び複数の補助検証技術を実行する段階と、
上記検証結果又は上記変更された回路データ構造を、後続の完全検証技術又は補助検証技術の中の一つに供給する段階と、
最終的な検証結果又は結果として変更された回路データ構造が決定されるまで、上記実行する段階及び上記供給する段階を繰り返す段階とからなるコンピュータ実装された方法。
【０１５７】
（付記４）  上記実行する段階及び上記供給する段階は、所定のコンピュータメモリ使用量又はコンピュータ実行時間使用量に関する制約集合を超えるまで、若しくは、上記最終的な検証結果が決定されるまで繰り返される付記３記載のコンピュータ実装された方法。
【０１５８】
（付記５）  上記補助検証技術の中の一つの技術は、ナイーブカットセットに基づく検証技術である付記３記載のコンピュータ実装された方法。
【０１５９】
（付記６）  上記完全検証技術の中の一つの技術は、スマートカットセットに基づく検証技術である付記３記載のコンピュータ実装された方法。
【０１６０】
（付記７）  上記完全検証技術の中の一つの技術は、自動テストパターン生成に基づく検証技術である付記３記載のコンピュータ実装された方法。
【０１６１】
（付記８）  上記完全検証技術の中の第１番目はスマートカットセットに基づく検証技術であり、
上記完全検証技術の中の第２番目は自動テストパターン生成に基づく検証技術であり、
上記スマートカットセットに基づく検証技術を実行し、
引き続き自動テストパターン生成技術を実行し、
最終的な検証結果が決定されるまで、又は、空間、時間、若しくは、上記自動テストパターン生成技術において使用されるバックトラックの回数に関して定められた資源の所定の最大値集合を超えるまで、上記スマートカットセットに基づく検証技術及び上記自動テストパターン生成技術の実行を繰り返す段階を更に有する付記３記載のコンピュータ実装された方法。
【０１６２】
（付記９）  上記順番内の第１の技術は上記順番内の後続の第２の技術よりも弱い技術であり、
技術の強弱は、上記組合せ回路に類似したベンチマーク回路のサンプル集合について経験的に決定され、
上記第１の技術による上記ベンチマーク回路のサンプル集合の検証のための計算時間及びメモリ空間の必要量は、上記第２の技術における必要量よりも少ない付記３記載のコンピュータ実装された方法。
【０１６３】
（付記１０）  上記組合せ回路は別の組合せ回路である複数の区分に分割され、
上記実行する段階及び上記供給する段階は、上記組合せ回路の個別の区分について動作する付記３記載のコンピュータ実装された方法。
【０１６４】
（付記１１）  上記補助検証技術の中の一つの技術はサブグラフ同型に基づく構造フィルタ技術である付記３記載のコンピュータ実装された方法。
【０１６５】
（付記１２）  上記補助検証技術の中の一つの技術はハッシングに基づく機能フィルタ技術である付記３記載のコンピュータ実装された方法。
【０１６６】
（付記１３）  上記補助検証技術の中の一つの技術はランダムパターン生成技術である付記３記載のコンピュータ実装された方法。
【０１６７】
（付記１４）  上記補助検証技術の中の一つの技術は２分決定図（ＢＤＤ）分割技術である付記３記載のコンピュータ実装された方法。
【０１６８】
（付記１５）  上記補助検証技術の中の一つの技術は可観測性ドントケア（ＯＤＣ）及び学習に基づく再合成技術である付記３記載のコンピュータ実装された方法。
【０１６９】
（付記１６）  回路データ構造により表現された組合せ回路を解析するシステムにおいて、
上記組合せ回路に対し、順番に並べられ解析結果を決定又は上記回路データ構造を変更する複数の完全解析技術及び複数の補助解析技術を実行し、
上記解析結果又は上記変更された回路データ構造を、上記順番内の後続の完全解析技術又は補助解析技術の中の一つに送り、
最終的な解析結果又は結果として変更された回路データ構造を提供する手段からなるシステム。
【０１７０】
（付記１７）  上記手段は、所定のコンピュータメモリ使用量、コンピュータ実行時間使用量、又は、少なくとも一つの上記完全解析技術が自動テストパターン生成技術である場合にバックトラックの回数に関する制約集合を超えるまで上記完全解析技術及び補助解析技術を実行する付記１６記載のシステム。
【０１７１】
（付記１８）  上記手段は、上記組合せ回路の欠陥の有無を決定する手段を更に有する付記１６記載のシステム。
【０１７２】
（付記１９）  上記手段は、上記組合せ回路のタイミング制約条件を決定する手段を更に有する付記１６記載のシステム。
【０１７３】
（付記２０）  上記手段は、上記組合せ回路に対する最小コストエンジニアリングチェンジ解を決定する手段を更に有する付記１６記載のシステム。
【０１７４】
（付記２１）  上記手段は、順序回路の正確さを決定する手段を更に有する付記１６記載のシステム。
【０１７５】
（付記２２）  回路データ構造によって表現された組合せ回路を解析するコンピュータ実装された方法において、
上記組合せ回路に対し、順番に並べられ解析結果を決定又は上記回路データ構造を変更する複数の完全解析技術及び複数の補助解析技術を実行する段階と、
上記解析結果又は上記変更された回路データ構造を、後続の上記完全解析技術又は補助解析技術の中の一つに供給する段階と、
最終的な解析結果又は結果として変更された回路データ構造が決定されるまで、上記実行する段階及び上記供給する段階を繰り返す段階とからなるコンピュータ実装された方法。
【０１７６】
（付記２３）  上記実行する段階及び上記供給する段階は、所定のコンピュータメモリ使用量又はコンピュータ実行時間使用量に関する制約集合を超えるまで、若しくは、上記最終的な解析結果が決定されるまで繰り返される付記２２記載のコンピュータ実装された方法。
【０１７７】
（付記２４）  上記順番内の第１の技術は上記順番内の後続の第２の技術よりも弱い技術であり、
技術の強弱は上記組合せ回路に類似したベンチマーク回路のサンプル集合について経験的に決定され、
上記第１の技術による上記ベンチマーク回路のサンプル集合の解析のための計算時間及びメモリ空間の必要量は、上記第２の技術に対する必要量よりも少ない付記２２記載のコンピュータ実装された方法。
【０１７８】
（付記２５）  回路データ構造によって表現された一対の組合せ回路を検証するコンピュータ実装された方法において、
（ａ）候補リストを生成するため、ランダムパターンシミュレーションを用いて、上記回路データ構造をシミュレーションし、
（ｂ）上記回路の一部の上記候補リストを枝刈りし、
（ｃ）上記枝刈りされた候補リストに基づいて、上記組合せ回路を複数の区分に分割し、
（ｄ）少なくともスマートカットセットに基づく検証技術と、自動テストパターン生成検証技術とを含むマクロフィルタを、上記回路データ構造の選択された区分に適用し、
（ｅ）可観測性ドントケア（ＯＤＣ）及び学習に基づく再合成技術を用いて、上記回路データ構造の上記選択された区分を再合成し、
（ｆ）等価性検査用の候補を選択するため上記ランダムパターンシミュレーションを上記回路データ構造の上記再合成された区分に適用し、上記マクロフィルタを上記回路データ構造の上記再合成された区分に適用し、
（ｇ）２分決定図（ＢＤＤ）分割を用いて、上記回路データ構造の上記再合成され選択された区分を検査し、
（ｈ）上記選択された区分に対し、最終的な検証結果又は結果として得られた回路構造データが決定されるまで上記段階（ｄ）、（ｅ）、（ｆ）及び（ｇ）を繰り返し、
（ｉ）上記組合せ回路の全ての区分に対し上記段階（ｄ）、（ｅ）、（ｆ）、（ｇ）及び（ｈ）を繰り返す段階からなるコンピュータ実装された方法。
【０１７９】
（付記２６）  上記シミュレーションする段階（ａ）を行う前に、機能フィルタを上記回路データ構造に適用する段階を更に有する付記２５記載のコンピュータ実装された方法。
【０１８０】
（付記２７）  上記機能フィルタを適用する前に、構造フィルタを上記回路データ構造に適用する段階を更に有する付記２６記載のコンピュータ実装された方法。
【０１８１】
（付記２８）  上記構造フィルタを適用する前に、上記回路データ構造の標的分解を実行する段階を更に有する付記２７記載のコンピュータ実装された方法。
【０１８２】
（付記２９）  上記マクロフィルタを適用する段階（ｆ）は、
スマートカットセットに基づく検証技術を実行し、
引き続き自動テストパターン生成技術を実行し、
最終的な検証結果が上記選択された区分に対し決定されるまで上記スマートカットセットに基づく検証技術及び上記自動テストパターン生成技術の実行を繰り返す段階を有する付記２５記載のコンピュータ実装された方法。
【０１８３】
（付記３０）  上記枝刈りする段階（ｂ）は、
上記回路の各ゲートに対し、各ゲートが影響を与える対応した主出力を関連づける段階と、
適用されたランダムシミュレーションベクトル集合に対し各ゲートのシグネチャーを決定するためランダムパターンシミュレーションを適用する段階と、
上記枝刈りされた候補リストがゲート対のグループを表現するように、同一又は相補的なシグネチャーを有し出力リストが交差する各ゲート対を、機能的等価性又は機能的相補性の次の検査のためのグループに割り当てる段階を有する付記２５記載のコンピュータ実装された方法。
【０１８４】
（付記３１）  回路データ構造によって表現された一対の組合せ回路を解析するコンピュータ実装された方法において、
（ａ）候補リストを生成するため、ランダムパターンシミュレーションを用いて、上記回路データ構造をシミュレーションし、
（ｂ）上記回路の一部の上記候補リストを枝刈りし、
（ｃ）上記枝刈りされた候補リストに基づいて、上記組合せ回路を複数の区分に分割し、
（ｄ）回路解析技術からなるマクロフィルタを、上記回路データ構造の選択された区分に適用し、
（ｅ）可観測性ドントケア（ＯＤＣ）及び学習に基づく再合成技術を用いて、上記回路データ構造の上記選択された区分を再合成し、
（ｆ）等価性検査用の候補を選択するため上記ランダムパターンシミュレーションを上記回路データ構造の上記再合成された区分に適用し、上記マクロフィルタを上記回路データ構造の上記再合成された区分に適用し、
（ｇ）２分決定図（ＢＤＤ）分割を用いて、上記回路データ構造の上記再合成され選択された区分を検査し、
（ｈ）上記選択された区分に対し、最終的な解析結果又は結果として得られた回路構造データが決定されるまで上記段階（ｄ）、（ｅ）、（ｆ）及び（ｇ）を繰り返し、
（ｉ）上記組合せ回路の全ての区分に対し上記段階（ｄ）、（ｅ）、（ｆ）、（ｇ）及び（ｈ）を繰り返す段階からなるコンピュータ実装された方法。
【０１８５】
（付記３２）  上記シミュレーションする段階（ａ）を行う前に、機能フィルタを上記回路データ構造に適用する段階を更に有する付記３１記載のコンピュータ実装された方法。
【０１８６】
（付記３３）  上記機能フィルタを適用する前に、構造フィルタを上記回路データ構造に適用する段階を更に有する付記３２記載のコンピュータ実装された方法。
【０１８７】
（付記３４）  上記構造フィルタを適用する前に、上記回路データ構造の目標とされた分解を実行する段階を更に有する付記３３記載のコンピュータ実装された方法。
【０１８８】
（付記３５）  上記枝刈りする段階（ｂ）は、
上記回路の各ゲートに対し、各ゲートが影響を与える対応した主出力を関連づける段階と、
適用されたランダムシミュレーションベクトル集合に対し各ゲートのシグネチャーを決定するためランダムパターンシミュレーションを適用する段階と、
上記枝刈りされた候補リストがゲート対のグループを表現するように、同一又は相補的シグネチャーを有し出力リストが交差する各ゲート対を、機能的等価性又は機能的相補性の次の検査のためのグループに割り当てる段階と、
を有する付記３１記載のコンピュータ実装された方法。
【０１８９】
（付記３６）  複数の論理ゲートからなる一対の回路の間の類似性を増加させ、上記回路を新しい回路を作成することによってより検証し易くさせる方法において、
(i) 各論理ゲートを上記回路の各対の各ゲート毎に対応するテクノロジー分解の集合と関連付ける段階と、
(ii)上記関連したテクノロジー分解毎に各ゲートのシグネチャーを生成するため、上記関連した各テクノロジー分解に対する上記回路の各論理ゲートを上記回路の主入力変数になされた共通ブール集合割当てによってシミュレーションする段階と、
(iii) 各回路の各論理ゲートを備えた上記テクノロジー分解の一つを、上記二つの分解回路のゲートのシグネチャーが比較されたとき等価性又は相補性シグネチャーを備えた最大個数のゲートの対が獲得されるように、上記テクノロジー分解の適用後に上記二つの回路の原始的論理ゲートが関連したシグネチャーを有するように選択された各テクノロジー分解と関連付ける段階と、
(iv)上記回路の対の各論理ゲートを上記関連付ける段階(iii) で関連付けられたテクノロジー分解で置換することにより、上記原始的論理ゲートに関して上記新しい回路を作成する段階とからなる方法。
【０１９０】
（付記３７）  ワイヤと相互接続された論理ゲートの集合と相互接続された主入力ゲートの集合及び主出力ゲートの集合を有するディジタル回路のトポロジー内で、一つの論理ゲートとの間でアサートされた信号を伝達するワイヤ上の場所であるポイント間で論理的等価性及び反転性を決定するコンピュータ支援設計システムにおいて、
上記ディジタル回路内のゲートのランダムパターンシミュレーションと、各ゲートに格納されたランダムパターンシミュレーション結果のビットベクトルを用いて上記ディジタル回路内のゲートを第１のハッシュ表にハッシングすることとにより、機能的等価性及び機能的反転性状態を検査するため候補ゲートを識別する段階と、
上記主入力ゲートの集合からなる第１のカットを含む上記ディジタル回路内のゲートのカットを選択する段階と、
上記ディジタル回路のカットの前方のゲートに対するカットに関して２分決定図（ＢＤＤ）を構築する段階と、
上記カットのＢＤＤへのポインタを用いて上記ゲートを第２のハッシュ表にハッシングする段階と、
上記第２のハッシュ表の同一場所にハッシュする全てのゲートによって識別されるように、全ての機能的に等価性のゲート及び反転性のゲートを併合する段階とからなるディジタル回路のトポロジー内のポイント間で論理的等価性及び反転性を決定するコンピュータ実装された方法。
【０１９１】
（付記３８）  共有データ構造のサイズに関する所定の限界を超えた場合、又は、単一のカットを用いてＢＤＤが構築された上記ディジタル回路のレベルの数に関する所定の限界に達した場合に、単一のカットに基づいてＢＤＤの構築を停止する段階と、
新しいカットは上記ディジタル回路の上記主出力ゲートから始まり、上記ディジタル回路の上記主入力ゲート又は他の機能的に等価性若しくは機能的に反転性のゲートと既に併合されているゲートのいずれかで終わる上記ディジタル回路の深さ先行トラバーサルにより選択される、カットを選択する段階を繰り返す段階と、
上記カットに関して上記カットの前方のゲートに対するＢＤＤを構築する段階を繰り返す段階と、
上記ゲートのＢＤＤポインタを上記ハッシュ表へのキーとして用いて、上記ディジタル回路の上記ゲートを上記第２のハッシュ表にハッシングする段階を繰り返す段階とを更に有する付記３７記載のコンピュータ実装された方法。
【０１９２】
（付記３９）  上記識別、等価性検査、及び、ハッシングを行う段階は、  未検証主出力ゲートの推移的ファンインコーンを決定する段階と、
等価性又は反転性検査のための候補であって未だ検査されていない上記推移的ファンインコーン内の全てのゲートの対を決定する段階と、
上記未だ検査されていないゲートの対を選択し、選択された未検査ゲートの対から始まり、主入力ゲート又は他の等価性若しくは反転性ゲートと既に併合されているゲートのいずれかで終わる上記回路の深さ先行トラバーサルによりカットを選定する段階と、
上記カットに関して上記選択された未検査ゲートの対に対するＢＤＤを構築する段階と、
排他的論理和ＢＤＤを形成するため、上記ＢＤＤの排他的論理和を作成する段階と、
上記排他的論理和ＢＤＤがブール値０に減少するかどうかを検査し、上記排他的論理和ＢＤＤがブール値０に減少しないとき、別のカットを選定し、排他的論理和ＢＤＤがブール値０に減少するか、又は、カットセットに主入力ゲートだけが含まれるようになるまで、新しい各カットに関して排他的論理和ＢＤＤを逐次的に合成する段階と、
上記排他的論理和ＢＤＤのサイズが予めセットされた限界を超えた場合に上記排他的論理和を逐次的に合成する段階を打ち切る段階と、
偽陰性検証結果を解法するため、上記主入力ゲートに対応する主出力ゲートの対の排他的論理和ＢＤＤを逐次的に合成する段階とからなる付記３７記載のコンピュータ実装された方法。
【０１９３】
【発明の効果】
本発明は容易に拡張し得る利点があることに注意する必要がある。フィルタ構造は、新しい検証技術を追加することにより拡張又は増強され得る。新しい技術は、新しい技術の強さ、並びに、既にフィルタに収容されている他の技術に関する相対的な強さ又は弱さに依存してフィルタ構造の適当な場所に付加される。例えば、ブール表現図（ＢＥＤ）のような技術は、検証コアのマイクロフィルタ内で自動テストパターン発生（ＡＴＰＧ）検証の後にＢＥＤ技術を追加することにより本発明のフィルタ配置を拡張するため包含される。或いは、ＢＥＤ技術は、マイクロフィルタのスマートカットセットベースド検証の後に実行しても良い。同様に、別の新しい技術が提案又は開発された場合、新しい技術はフィルタ配置の適当な場所に挿入され得る。かくして、検証ソフトウェアシステムの全体を再開発する必要はない。かかる本発明の拡張性は、フィルタ志向型アプローチに対する重要な利点である。
【図面の簡単な説明】
【図１】従来技術による典型的な検証作業のフローチャートである。
【図２】本発明のフィルタアプローチのフローチャートである。
【図３】本発明のフィルタアプローチの別の実施例のフローチャートである。
【図４】本発明のフィルタアプローチの別の実施例のフローチャートである。
【図５】本発明のフィルタアプローチの別の実施例のフローチャートである。
【図６】本発明のフィルタアプローチの別の実施例のフローチャートである。
【図７】本発明のフィルタアプローチの別の実施例のフローチャートである。
【図８】本発明のフィルタアプローチの別の実施例のフローチャートである。
【図９】本発明のフィルタアプローチの別の実施例のフローチャートである。
【図１０】充足可能性（ＳＡＴ）問題を解法する解析ツールとして本発明のフィルタアプローチを使用する方法のフローチャートである。
【図１１】ＢＤＤ用ハッシュ機構の説明図である。
【図１２】ＢＤＤハッシュ技術のフローチャートである。
【図１３】ＢＤＤハッシュ技術を使用する検証のフローチャートである。
【図１４】カットセット安定化の説明図である。
【図１５】マイクロフィルタの説明図である。
【図１６】マイタ(miter) の説明図である。
【図１７】ＯＤＣ学習の獲得の説明図である。
【符号の説明】
１０２    標的分解
１０４    構造フィルタ
１０６    機能フィルタ
１０８    ランダムパターンシミュレーション
１０９    候補リスト枝刈り
１１４    回路分割
１１８，１３２    検証コア
１２０    ナイーブカットセットベースド検証
１２２    スマートカットセットベースド検証
１２４    ＡＴＰＧベースド検証
１２６    検査フェーズ
１２８    検証用再合成
１３０    ＯＤＣ及び学習ベースド再合成
１３４    修正検査フェーズ
１３６    ＢＤＤ分割
【図１】
0003858000.tif 000056
【図２】
0003858000.tif 000057
【図３】
0003858000.tif 000058
【図４】
0003858000.tif 000059
【図５】
0003858000.tif 000060
【図６】
0003858000.tif 000061
【図７】
0003858000.tif 000062
【図８】
0003858000.tif 000063
【図９】
0003858000.tif 000064
【図１０】
0003858000.tif 000065
【図１１】
0003858000.tif 000066
【図１２】
0003858000.tif 000067
【図１３】
0003858000.tif 000068
【図１４】
0003858000.tif 000069
【図１５】
0003858000.tif 000070
【図１６】
0003858000.tif 000071
【図１７】
0003858000.tif 000072