(57)【特許請求の範囲】
【請求項１】
少なくともメモリ（ＳＰＥ）と、入出力側インタフェース（ＩＯＳ）と、プロセッサ（ＣＰＵ）とを備えたプロセッサユニット（ＰＲＺＥ）を用いて、技術システムの予め設定された特性と第１の特性とを比較する方法において、当該第１の特性は、第１の仮定部と第１の証明部を含んでおり、前記予め設定された特性のうちの少なくとも１つは、予め設定された仮定部と予め設定された証明部を含んでおり、
少なくとも２つの比較方法が設けられており、
ａ）前記プロセッサ（ＣＰＵ）が、該少なくとも２つの比較方法の各々を用いて、前記技術システムの前記予め設定された特性のブール関数と前記第１の特性のブール関数との比較を行うステップと、
ｂ）前記プロセッサ（ＣＰＵ）が、該比較の結果が決定されるまで、前記少なくとも２つの比較方法を予め設定された順番で処理するステップとを備えた方法。
【請求項２】
比較の結果は、技術システムの特性と第１の特性との同一性又は相違である、請求項１記載の方法。
【請求項３】
少なくとも２つの比較方法は次の比較方法からの少なくとも１つを含んでいる、すなわち、
ａ）ＳＡＴ比較法、
ｂ）シミュレーション法、
ｃ）ＢＤＤ法、
ｄ）ＡＴＰＧ法、
ｅ）内部等価点に基づく方法
からの少なくとも１つを含んでいる、請求項１〜２のうちの１項記載の方法。
【請求項４】
ＢＤＤ法はとりわけＲＯＢＤＤ法である、請求項３記載の方法。
【請求項５】
ＲＯＢＤＤ法は、ブール関数を表すグラフにおける葉又は断面に関して実施される、請求項４記載の方法。
【請求項６】
技術システムは回路である、請求項１〜５のうちの１項記載の方法。
【請求項７】
前記回路はデジタル回路である、請求項６記載の方法。
【請求項８】
技術システムは有限オートマトンとして表される、請求項１〜７のうちの１項記載の方法。
【請求項９】
第１の特性はブール関数として表される、請求項１〜８のうちの１項記載の方法。
【請求項１０】
第１の特性によって予め設定された時間間隔に亘る技術システムの挙動が記述される、請求項１〜９のうちの１項記載の方法。
【請求項１１】
各比較方法に対して、供給すべきリソース及び/又は自由に使用できる時間に対する閾値が設定され、該閾値を上回ることによってその都度の比較方法は不成功として終了される、請求項１〜１０のうちの１項記載の方法。
【請求項１２】
最も多くの比較を解決することができた比較方法がまず最初に呼び出されることによって、実施すべき比較方法の順番が適合される、請求項１〜１１のうちの１項記載の方法。
【請求項１３】
比較結果に基づいて少なくとも１つの技術システムの設計、適合又は制御が実施される、請求項１〜１２のうちの１項記載の方法。
【請求項１４】
既に呼び出された比較方法の副作用によって比較が簡略化される、請求項１〜１３のうちの１項記載の方法。
【請求項１５】
少なくともメモリ（ＳＰＥ）と、入出力側インタフェース（ＩＯＳ）と、プロセッサ（ＣＰＵ）と、前記プロセッサ（ＣＰＵ）によって読み取り可能なプログラムを備えた、技術システムの予め設定された特性と第１の特性とを比較するための装置であって、当該第１の特性は、第１の仮定部と第１の証明部を含んでおり、前記予め設定された特性のうちの少なくとも１つは、予め設定された仮定部と予め設定された証明部を含んでおり、少なくとも２つの比較方法が設けられており、
前記プログラムが、前記プロセッサ（ＣＰＵ）を、
ａ）該少なくとも２つの比較方法の各々を用いて、前記技術システムの前記予め設定された特性のブール関数と前記第１の特性のブール関数との比較をする手段、
ｂ）該比較の結果が決定されるまで、前記少なくとも２つの比較方法を予め設定された順番で処理する手段として機能させる装置。
【発明の詳細な説明】
【０００１】
本発明は、技術システムの予め設定された特性と第１の特性とを比較するための方法及び装置に関する。
【０００２】
モデルチェッキング（(model checking) ＭＣ）は、技術システムの特性を所定の方法で検証する（verify）ための技術である。これまでは技術システムにおける使用の際には折に触れて大きな複雑性問題（状態爆発問題（state explosion problem））が生じてきた。この問題のために、検証すべきシステムから分析にとって重要でありかつ実際的に検証可能な部分を取り出して解決するために非常な努力が払われている。この場合でさえもしばしば検証は既存のリソースリミット（計算パワー、メモリ所要面積）により挫折する。
【０００３】
[１]から２分決定グラフ（binary decision diagram BDD）を用いて２つの回路の比較が実施されることが公知である。とりわけ、この場合、高い複雑性のデジタル回路に焦点を合わせ、これらのデジタル回路が互いに比較され乃至は構造的な類似性がもとめられる（組み合わせ回路検証）。
【０００４】
組み合わせ回路検証の第１のアプローチは、テストパターンを生成し比較すべき回路に適用することによって関数的な含意（implication）を発生しようと試みる（ＡＴＰＧ法）。この場合、２つの比較すべき出力値の間の排他的論理和関数に論理１が割り当てられないことを証明するという目的が追求される。
【０００５】
組み合わせ回路検証のための他のアプローチはブール関数の標準記述に基づく。このような標準記述はＢＤＤ又はＢＤＤの特別な変形、例えば既約順序付きＢＤＤ（reduced ordered BDD）（ＲＯＢＤＤ）、特に[２]を参照、によって示される。ＢＤＤの特別な問題はその指数関数的に増大するメモリ所要面積である。
【０００６】
いわゆるＳＡＴ比較方法（ＳＡＴ比較器；ＳＡＴ＝"充足可能性（Satisfiability）"）が[３]、[４]又は[７]から公知である。このＳＡＴ比較方法は次のことによって優れている。すなわち、
【０００７】
【数１】
0004418591.tif 000002
【０００８】
の形式の任意のブール記法に対してシステマティックに解を探索する。全探索空間の探索をし尽くし、解が見つからない場合には、この基礎となるブール問題は解けない。
【０００９】
本発明の課題は、技術システムの予め設定された特性と第１の特性とを比較し、とりわけこの比較問題の自動的な解決が保証されることである。
【００１０】
上記の課題は独立請求項の構成により解決される。本発明の実施形態は従属請求項から得られる。
【００１１】
上記課題の解決のために、技術システムの予め設定された特性と第１の特性とを比較するための方法が示され、少なくとも２つの比較方法が設けられており、これら少なくとも２つの比較方法の各々が技術システムの予め設定された特性と第１の特性との比較を実施する。この比較の結果が決定されるまで、これら少なくとも２つの比較方法は予め設定された順番で処理される。
【００１２】
この場合、とりわけ有利には、自動的に異なる比較方法が処理される。
【００１３】
本発明の実施形態では、比較の結果は技術システムの特性と第１の特性との同一性又は相違である。
【００１４】
とりわけただ１つの相違が発見されるやいなや、比較は中断される。
【００１５】
本発明の他の実施形態では、同一性に基づいて第１の特性が技術システムによって検証される。
【００１６】
少なくとも２つの比較方法はとりわけ次の比較方法のうちの２つである、すなわち、
ａ）ＳＡＴ比較法、
ｂ）シミュレーション法、
ｃ）ＢＤＤ法、
ｄ）ＡＴＰＧ法、
ｅ）内部等価点（interne Aequivalenzpunkte）に基づく方法、
のうちの２つである。
【００１７】
とりわけ、ＢＤＤ法はとりわけＲＯＢＤＤ法である。さらに、ＲＯＢＤＤ法はその葉又は断面（Schnittebene）に関して実施される。
【００１８】
技術システムは回路、とりわけ電気的デジタル回路である。
【００１９】
さらに、比較の少なくとも一部分を実施することができ、中間結果が比較全体の複雑性を低減する。このように低減された複雑性によって、本来は比較全体においては挫折した比較方法によって結果が得られる。
【００２０】
さらに、最後まで実施できなかった比較方法の中間結果はさらに別の比較方法において利用することができる（副作用の利用）。よって、中断されたＢＤＤ比較法が（この場合には比較全体の）解決すべき問題を示すための端緒を提供する。これは他の比較方法において中間結果として取り上げられる。このことは計算時間及び/又はメモリ占有面積の節減を結果的に生じる。
【００２１】
比較が非同一性という結果を出した場合、有利にはユーザが非同一性の理由をもとめることができるための診断情報が示される。
【００２２】
実施形態の枠内では、技術システムは有限オートマトンとして記述される。さらに、第１の特性はブール関数として示される。付加的に、この第１の特性によって技術システムの挙動は予め設定された時間間隔に亘って記述される。
【００２３】
デジタル回路はますます大きくなる。従って、正確な挙動のテストはより複雑になり、より時間コストが高くなり、さらにより高価になる。よって、実際の大きさの回路に対するＭＣは重要な経済的なファクタである。本発明の方法及び所属の装置によってこの技術の操作性はユーザにとって大幅に簡素化される。ここで記述するアプローチはハードウェア設計には限定されず、ソフトウェアの検証のためにも使用できる。ただしこのソフトウェアの挙動は有利には有限オートマトンによって記述可能である（例えばＳＤＬプログラム、プロトコル）。
【００２４】
本発明のアプローチにおいてはハイブリッドベリファイア（ein hybrider Beweiser）、すなわち複数の比較方法を有するプロセスが、検証課題を解決するために使用される。ハイブリッドベリファイアは多数の部分ベリファイア（個々の比較方法）を含むフレームである。ハイブリッドベリファイアは部分ベリファイアの作動方法を調整する。目的は、様々なベリファイアを使用することによって１つのベリファイアだけでは解決できないであろう検証課題を解決することである。いずれの部分ベリファイアも与えられた検証課題を解決できない場合には、この検証課題は分解される。このため、各部分ベリファイアに下位課題が委ねられる。これらの下位課題を各部分ベリファイアはリソースの設定の下で処理することができる。所属のリソースの割り当てに対する閾値を上回る場合には、ベリファイアはその処理を中断する。ハイブリッドベリファイアは、この場合下位課題が他の部分ベリファイアによって処理されるべきか、リソースを高めるべきか又は他の下位課題を続行するべきかを判定する。
【００２５】
他の実施形態の枠内において、各比較方法に対して、供給すべきリソース（例えばメモリ所要面積又は計算パワー）及び/又は比較方法の実施のために使用できる時間に対する閾値が設定され、この閾値を上回るとその都度の比較方法は不成功として終了される。
【００２６】
また、実施形態では、実施すべき比較方法の順番がダイナミックに適合される。これは、有利には、どの比較方法が最も多くの結果を決定したかが記録され、この「最良」の比較方法が未来の比較に対して最初に使用されることによって行われる。相応して、「２番目に最良の」比較方法、「３番目に最良の」比較方法等々を有する順番のソートが行われる。
【００２７】
技術システムの設計、適合又は制御を実施するために、比較結果が使用される。
【００２８】
とりわけ、回路シミュレーションにおいて、上記の比較の結果がポジティブであるならば、予め設定された記述形式がこの回路の製造プロセスを開始することによって、この上記の比較の結果が直接的に置換される。
【００２９】
さらに、本発明の課題を解決するために、技術システムの予め設定された特性と第１の特性とを比較するための装置が示され、この装置はプロセッサユニットを有し、プロセッサユニットは次のように構成されている、すなわち、
ａ）少なくとも２つの比較方法が設けられており、これらの少なくとも２つの比較方法の各々が技術システムの予め設定された特性と第１の特性との比較を実施でき、
ｂ）この比較の結果が決定されるまで、これらの少なくとも２つの比較方法は予め設定された順番で処理される。
【００３０】
この装置は、とりわけ本発明の方法又は前述の実施形態を実施するのに適している。
【００３１】
本発明の実施例を次に図面に基づいて図示し、説明する。
【００３２】
図１は、ハイブリッドベリファイアの作動方法に対するフローチャートである。
【００３３】
図２は、ハイブリッドベリファイアの部分としての基本ベリファイアの選択に対するフローチャートである。
【００３４】
図３は、内部等価点に対するベリファイアに対するフローチャートである。
【００３５】
図４は、完全なシミュレーションの実施を示すフローチャートである。
【００３６】
図５は、ＲＯＢＤＤ検証方法のステップを有するフローチャートである。
【００３７】
図６は、プロセッサユニットである。
【００３８】
モデルチェッキングにおける方法はとりわけ次のようなものである：
・技術システムは有限オートマトンとして表される；
・特性は有限時間間隔に亘るこの技術システムの挙動を記述する；
・この特性はブール関数として表される；
・検証課題はブール関数の同一性の証明に還元される；
・２つのブール関数の同一性はハイブリッド比較器によって解かれる。
【００３９】
特性
特性は予め設定された有限個の時点に亘る技術システムの挙動を記述する（＝有限時間間隔に亘る不変性）。
【００４０】
原子ステートメント（ＡＡ）の集合から出発して、可能な特性言語が定義される。基本ステートメント（ＥＡ）（状態表現）はＡＡの任意のブーリアン結合である。
【００４１】
次にｔは任意の固定時点とする。特性はこの時点を基準にして定式化される。
【００４２】
時点ｔ+ｋにおける基本ステートメント（ＥＡｋ）（時間状態表現；ｋは０より大きい整数）は
ａｔ  ｔ+ｋ：ＥＡ                                                （２）
の形態の表現である。（ｎ個の時点に亘る）特性は有限に多くの時間付き基本ステートメント
ＥＡｋ ただしｋ＜ｎ                                              （３）
のブーリアン結合である。特性を（より良好に）構造化するために、仮定部（assume）及び証明部（prove）に分ける。これは含意
ａｓｓｕｍｅ⇒ｐｒｏｖｅ                                        （４）
と同じ意味である。
【００４３】
特性の例：
assume: at t+0: not reset and at t+1: not reset;
prove  : at t+0: request implies at t+1: acknowledge
この場合、" reset "、" request "、" acknowledge "が原子ステートメントである。この特性は、前提" not reset "の下で、（時点０における）" request "が１タイムステップ後で" acknowledge "と応えられることを表現している。
【００４４】
セマンティクス
次に、とりわけ有限オートマトンとして示すことができる技術システムが考察される。このようなシステムは、例えば（VHDLプログラム又はＥＤＩＦネットワークリストの形式の）回路である。決定性有限オートマトンは
（Ｓ，Ｉ，Ｔ，ＭＡＡ，Ｐ）                                      （５）
形式の５項組である。ただしここで、
Ｓ                              状態の有限集合
Ｉ                              入力シンボルの有限集合
Ｔ⊆Ｓ×Ｉ×Ｓ                  遷移関係
ＭＡＡ                          原子ステートメント（ＡＡ）の有限集合
Ｐ：Ｓ×Ｉ→べき集合（ＭＡＡ）  評価関数
である。
【００４５】
評価関数Ｐは、どの原子ステートメント（ＡＡ）が１つの状態において充足されているかを示す。
【００４６】
特性Ｅの特性関数χＥを取り決める。この特性関数χＥは、特性Ｅの妥当性を決定するために使用される。
【００４７】
ＡＡは原子ステートメントとし、Ｂ＝｛０，１｝はブール集合とする。特性関数χＥは
χＡＡ：Ｓ×Ｉ→Ｂ                                              （６）
により定義され、ただしここで、ＡＡ∈Ｐ(ｓ，ｉ)の場合、すなわちＡＡが(ｓ，ｉ)において充足されている場合に限ってχＡＡ(ｓ，ｉ)＝１である。さらに、
ＥＡ＝Ｂ(ＡＡ１,...,ＡＡｍ)                                       （７）
が原子ステートメントのブーリアン結合（すなわち、基本ステートメント）とする。従って、次式が定義される：
χＥＡ＝Ｂ (χＡＡ１,...,χＡＡｍ)                               （８）
次に、複数の状態に関するステートメントを考察する。次式
σ＝（（ｓ０，ｉ０）,...,（ｓｎ-１，ｉｎ-１））∈（Ｓ×Ｉ）ｎ        （９）
及び
σｋ＝（ｓｋ，ｉｋ）                                            （１０）
が成り立ち、Ｅはｎ時点に亘る特性とする。特性関数χＥは関数
χＥ：（Ｓ×Ｉ）ｎ→Ｂ                                        （１１）
であり、ただしここで
Ｅ＝ＥＡｋ                                                    （１３）
が基本ステートメントである場合に
χＥ（σ）＝χＥＡ（σｋ）                                    （１２）
であり、さらに、
【００４８】
【数２】
0004418591.tif 000003
【００４９】
が基本ステートメントのブーリアン結合である場合に
【００５０】
【数３】
0004418591.tif 000004
【００５１】
である。
【００５２】
（ｎ時点に亘る）特性はオートマトンの（長さｎの）パスを介して解釈される。
【００５３】
χＴ：Ｓ×Ｉ×Ｓ→Ｂ                                          （１６）
は遷移関係Ｔの特性関数とする。ｓｋ＋１がｓｋの次の状態とする場合、すなわち
（ｓｋ，ｉｋ，ｓｋ＋１）∈Ｔ                                      （１７）
又は
χＴ（ｓｋ，ｉｋ，ｓｋ＋１）＝１ ただし k＝0,1,...,n-2（n≧2）      （１８）
が成り立つ場合、σは長さｎのパスを意味する。ここから次式が得られる：
【００５４】
【数４】
0004418591.tif 000005
【００５５】
ｎ時点に亘る特性Ｅは、長さｎの全てのパスσに対して
（χＰｆａｄ⇒χＥ）(σ)＝１                                    （２０）
が成り立つ場合に限り、満たされる。
【００５６】
この特性Ｅに対する反例は割り当てσ０であり、この結果、
（χＰｆａｄ∧ｎｏｔχＥ）(σ０)＝１                            （２１）
が成り立つ。
【００５７】
以下に挙げる方法は式（１１）による任意の関数に適用される。この特性言語は、特性を記述するために、ただ１つの可能なインスタンスを表示する。同様に、より強力な言語を定義するために、定義域（Ｓ×Ｉ）ｎを、例えば、（Ｓ×Ｉ）ｎ×Ｓに拡張することができるだろう。
【００５８】
次にこの有限オートマトンのバイナリコーディングから出発する。すなわち、Ｓ＝Ｂｕ、Ｉ＝Ｂｖ    ただしu,v≧０                          （２２）
従って、検証（verification）は一定の関数１とブール関数との同一性の証明に還元される。
【００５９】
特別なケース：組み合わせ比較
組み合わせ比較では出力を有する２つの決定性有限オートマトンが互いに比較される。これらのオートマトンは例えば２つのデジタル回路を表す。出力を有する決定性有限オートマトンは５項組の
（Ｓ，Ｉ，Ｏ，δ，λ）                                      （２３）
ただし、
Ｓ                              状態の有限集合
Ｉ                              入力シンボルの有限集合
Ｏ                              出力シンボルの有限集合
δ：Ｓ×Ｉ→Ｓ                  遷移関数
λ：Ｓ×Ｉ→Ｏ                  出力関数
である。
【００６０】
ここで
Ｍｉ＝（Ｓｉ，Ｉｉ，Ｏｉ，δｉ，λｉ）ただしi＝１，２              （２４）
が出力を有する２つの決定性有限オートマトンとする。Ｍ１、Ｍ２の共通のコーディングを全単射
【００６１】
【数５】
0004418591.tif 000006
【００６２】
と解釈する。ただしここで「ｂｉｊ」は全単射を示す。
【００６３】
全てのｓ∈Ｓ１、ｉ∈Ｉ１に対して
【００６４】
【数６】
0004418591.tif 000007
【００６５】
が成り立つ場合に限って、これらのオートマトンＭ１、Ｍ２は式（２５）による共通のコーディングに関して組み合わせ的等価であると呼ぶ。
【００６６】
Ｓ１＝Ｓ２＝Ｓ、Ｉ１＝Ｉ２＝Ｉ、Ｏ１＝Ｏ２＝Ｏ                    （２８）
の同定の後で、ここから全てのｓ∈Ｓ１、ｉ∈Ｉ１に対して条件
δ１（ｓ，ｉ）＝δ２（ｓ，ｉ）                                  （２９）
及び
λ１（ｓ，ｉ）＝λ２（ｓ，ｉ）                                  （３０）
が得られる。Ｓ，Ｉ，Ｏのバイナリコーディングはこれをブール関数の間の（有限個の）幾つかの同一性関係に移す。
【００６７】
ベリファイア（Beweiser/verifier）
ここで
Ｆ１ｊ，Ｆ２ｊ，ｊ＝1,2,...,n                                      （３１）
をブール関数とする。
【００６８】
「Ｆ１ｊ ≡Ｆ２ｊ がｊ＝1,2,...,nに対して成り立つか？」            （３２）
という問題を処理するためには様々な方法（比較方法）がある。この場合、各方法は固有の長所と短所を有する。このような方法の適切な選択を利用することによって個々の方法の短所が除去され、これにより解決アプローチのロバスト性が明らかに向上される。これらの方法をオーバーラップして適用することによって、各々個別の方法によって可能であるよりも明らかに大きなシステムが比較できる。
【００６９】
第１のステップでは式（３１）の関数は非巡回的有向グラフによって表示される。このグラフ構造には、部分ベリファイアとも呼ばれる個々の方法が適用される。
【００７０】
非巡回的有向グラフは節点の集合Ｋ及び有向辺の集合（⊆Ｋ×Ｋ）であり、これらの有向辺はそれぞれ２つの節点を互いに結びつけている。このグラフは閉路を持たない。有向辺が節点ｋ１を節点ｋ２に結びつけている場合には、節点ｋ２は節点ｋ１の子と呼ぶ。葉は、辺が出ていかない節点である。根は、辺が入ってこない節点である。有向辺は上から下へ経過し、この結果、このグラフにおいて根は最上部にあり、葉は最下部にある。
【００７１】
グラフのベース（断面（Schnittebene）とも言う）とは、「根から葉への各パスはベースの節点を通過する」という特性を有する節点の部分集合である。例えば、全ての葉の集合はベースを形成する。[５]にはベースを決定できるアルゴリズムが記述されている。
【００７２】
ｋをグラフ構造Ｇにおける１つの節点とする。いわゆるｋの従属円錐（cone of influence）は、節点ｋはＧｋに所属し、１つの節点ｋ’を有し、ｋ’の全ての子もＧｋに所属する、ということが成り立つＧの最小下位構造Ｇｋである。
【００７３】
次の解釈によって非巡回的有向グラフはブール関数を表す：葉とは異なる節点ｋの各々にブール演算ｏｐｋを割り当てる。節点ｋの子はｏｐｋのオペランドである。葉（根）はブール演算のアーギュメント（値）を表す。葉は値０又は値１を有する定数でもよい。このグラフ構造の各節点はブール関数Ｂｏｏｌｅｋを表し、このブール関数Ｂｏｏｌｅｋは１次入力に依存する。ブール関数をグラフとして示すことは標準的ではない。すなわち、一般的には多数の異なる表示が存在するのである。同一のブール関数を表す節点は等価であると呼ぶ。
【００７４】
コンパクトに表示するために、辺にマーキングしてもよい。この結果、結合価１の演算、例えばｎｏｔをシンボル化することができる。例えば、[１]では結合価２のａｎｄ演算だけが節点に許可される。この（１価の）ｎｏｔ演算は辺のマーキングによって示される。
【００７５】
このグラフの構成の際にハッシュ表を介して節点の一意性を保証する。このグラフの各々の変化（つまり２つ又は複数の異なる等価節点の統合）の後で、複数回現れる同一の節点をまとめる。従って、節点の一意性が得られる。このプロセスは再ハッシュ（rehashing）と呼ぶ。
【００７６】
ベリファイアの課題は、基礎となるグラフを問題（３２）が解けるまで簡略化することである：この方法の異なるフェーズにおいて、同一の関数を表す節点、すなわち等価な節点が決定される。次いでこれらの節点の中から代表点として１つの節点を選択する。他の全ての節点はこの代表点により置き換えられる。このプロセスは冗長節点の除去と呼ぶ。除去のすぐ後でその都度再ハッシュを実施する。
【００７７】
例えば、２つの異なる節点ｋ１、ｋ２に対する同一性
Ｂｏｏｌｅｋ１＝Ｂｏｏｌｅｋ２                                    （３３）
を検証するための各検証ステップの開始の際に、まず最初に関与する節点の"cone of influence"が決定され、次いでこの"cone of influence"に基づいてさらに計算が行われる。
【００７８】
次に、インプリメンテーションにおいて利用される方法/ベリファイアの可能な選択が行われる。これらは、
・完全なシミュレーション、
・（葉に関する）ＲＯＢＤＤ法、
・（断面に関する）ＲＯＢＤＤ法、
・ＡＴＰＧ法（自動テストパターン生成）、
・ＳＡＴ法（ブーリアン充足可能性アルゴリズム）、
・内部等価点に対するベリファイア、
である。
【００７９】
個々のベリファイア/方法について以下において詳しく説明する。
【００８０】
シミュレーション
このシミュレーション（[６]を参照）は葉から根へと行われる：まず最初に各葉に値０又は１を割り当てる。節点ｋの各々の子に値が割り当てられた場合、この節点ｋの値を演算ｏｐｋを用いて決定する。
【００８１】
ＲＯＢＤＤＳ
ＲＯＢＤＤ（reduced ordered binary decision diagrams、( [２]を参照)はブール関数を非巡回的グラフとして表示する。アーギュメントの所与の置換、変数順序付けのためにこの表示は一意的である。この変数順序付けは多くのケースにおいてグラフの大きさに対して重要である。ブール関数をＲＯＢＤＤとして（メモリとランタイムの既存の制約を考慮しつつ）表示することが可能であるならば、この表示の一意性の理由から、異なる技術システムの同一性の問題はすぐに解決される。この方法の成功はブール関数及び選択された変数順序付けに依存する。
【００８２】
グラフＧの根に対するＲＯＢＤＤの計算はグラフＧのベース（断面）から出発し、根の方向に進む。まず最初に、各ベース節点にＢＤＤ変数を割り当てる。これは重要な意味を持つ。なぜなら、とりわけこの割り当てによって変数順序付けが決まってしまうからである。ＲＯＢＤＤが節点ｋの全ての子に対して計算されると、節点ｋのＲＯＢＤＤが発生される。ＲＯＢＤＤの大きさが予め設定された制限を上回ると、このＲＯＢＤＤ生成は中断される。（ [１]では節点に新たな変数を割り当て、さらに計算する。）
ＲＯＢＤＤはブール関数に対する一連の類似の表示の代表格である（例えば[２]を参照）。そこで引用された表示の各々はここでも使用できる。
【００８３】
ハイブリッドベリファイア
ステートメント（３２）を判定するために、ブール関数（３１）が非巡回的有向グラフＧによって表示される。各関数ＦｉｊにはこのグラフＧにおいて１つの節点ｋｉｊが存在し、この節点ｋｉｊがＦｉｊを表現する。式Ｆ１ｊ ≡Ｆ２ｊは、このグラフＧの葉と相応の節点対（ｋ１ｊ，ｋ２ｊ）との間隔に関してソートされる。ハイブリッドベリファイアが、葉の近傍の節点対から初めて次々と各節点対（ｋ１ｊ，ｋ２ｊ）に対して呼び出される。
【００８４】
図１にはハイブリッドベリファイアが図示されている。ベリファイアへの入力としてグラフＧの２つの節点ｋ１，ｋ２が使用される（図１のブロック１参照）。目標は、節点ｋ１，ｋ２によって表される関数Ｂｏｏｌｅｋ１，Ｂｏｏｌｅｋ２が同一であるかどうか、すなわち
Ｂｏｏｌｅｋ１≡Ｂｏｏｌｅｋ２                                （３４）
が成り立つかどうかを判定することである。このグラフＧはグローバルなデータ構造を示し、このグローバルなデータ構造に各部分ベリファイア（基本ベリファイア、ブロック１０２及び図２参照）はアクセスできる。
【００８５】
部分ベリファイアは、グラフＧを等価節点の統合によって段階的に簡略化することを試み、この結果、最後には完全なシミュレーションを用いて式（３４）が検証されるか又は否定される。
【００８６】
以下において、グラフＧのｋ１，ｋ２の"cone of influence"をＣＯＩ（ｋ１，ｋ２）と呼ぶ。
【００８７】
図１のブロック１０２の中の部分ベリファイアが成功に至らない場合には、ブロック１０３で内部等価点に対する検証方法が行われる（図３参照）。個々のベリファイアは、結果「偽」１０４、すなわち比較すべき技術システムは異なるを、システムが同一の場合には「真」１０６を、このベリファイアが結果に至らない場合には「未決」１０５を送出する。
【００８８】
次にハイブリッドベリファイアの個々の実行ステップを示して説明する。
【００８９】
ステップ１：完全なシミュレーション、図２、ブロック２０１及び図４参照：「小さな」ＣＯＩ（ｋ１，ｋ２）（ブロック４０１参照）に対して：全ての可能な値割り当てがシミュレートされ、これに基づいて、これらが式（３４）を充足するか否かがテストされる（ブロック４０２）。
【００９０】
ステップ２：葉に関するＲＯＢＤＤ、ブロック２０２参照：
ベースとしてＣＯＩ（ｋ１，ｋ２）の全ての葉の集合が選択される。所定の大きさに至るまでＣＯＩ（ｋ１，ｋ２）についてＲＯＢＤＤを計算する。ＣＯＩ（ｋ１，ｋ２）において冗長節点が存在する場合、すなわち同一のＲＯＢＤＤ表示を有する節点が生じる場合、これらの冗長節点が除去される。さらに、ステップ２が繰り返される。
【００９１】
ステップ３：断面に関するＲＯＢＤＤ、ブロック２０３及び図５参照：
根の「近傍」の節点ｋ１，ｋ２の集合をベースとして選択する（[５]を参照）。所定の大きさに至るまでＣＯＩ（ｋ１，ｋ２）についてＲＯＢＤＤを計算する（ブロック５０１参照）。ＣＯＩ（ｋ１，ｋ２）において冗長節点が存在する場合、すなわち同一のＲＯＢＤＤ表示を有する節点が生じる場合、これらの冗長節点が除去される（ブロック５０２参照）。
【００９２】
選択されたベースが葉だけから成るのではない場合（ブロック５０３）、見出された否定は偽でありうる。なぜなら、ベース節点は互いに依存しうるからである（偽の否定（false negatives））。
【００９３】
ベースを葉の方向にシフトすることによってステップ３を繰り返す（ブロック５０４参照）。
【００９４】
ＲＯＢＤＤの計算があまりにも大きくなり、式（３４）が検証されるか又はこのベースが完全に葉から構成されて初めて、ステップ３が終了される（ブロック５０５及び５０６を参照）。
【００９５】
ステップ４：ＡＴＰＧ、ブロック２０４参照：
ブール関数が値０をとるか又は値１をとるかの問い乃至は２つのブール関数の同一性の問いが自動テストパターン生成（automatic test pattern generation＝ＡＴＰＧ）の領域における問題として定式化される。
【００９６】
ステップ５：ＳＡＴ、ブロック２０５参照：
ステートメント（３４）を連言標準形（conjunctive normal form）に変え、ＳＡＴベリファイア（例えば[３]又は[４]）に委ねる。
【００９７】
ステップ６；内部等価点に対するベリファイア、ブロック１０３及び図３参照：
ステップ６.１：（ＲＰＳ＝ランダムパターンシミュレーション）：
グラフ構造Ｇの節点が同値類に分割される（ブロック３０１参照）：分割｛Ｋ｝から出発してシミュレーションステップによって既存の分割を細分する。この場合、類ＡＫは２つの部分類ＡＫ０、ＡＫ１に分解される。ただし、ＡＫｉは、シミュレーションによって値ｉが割り当てられる全ての節点の集合∈ＡＫを表す。このシミュレーションは葉の値割り当てのために乱数発生器を使用する（ランダムパターンシミュレーション＝ＲＰＳ）。この細分ステップは複数回行われる。
【００９８】
同値類は潜在的に同一の関数を表す節点の集合を表す。異なる同値類の中の節点は同一の関数を表し得ない。
【００９９】
ステップ６.２：
次々に全ての潜在的に等価な節点対が実際に等価であるか検査される。すなわち、これらが同一のブール関数を表しているか検査される（ブロック３０２、３０３及び３０４参照）。
【０１００】
葉の「すぐ近傍」にあるそれぞれまだ処理されていない潜在的に等価な節点対（ｕ１，ｕ２）が検出される（ブロック３０５参照）。この節点対（ｕ１，ｕ２）に対してステップ１〜５が実施される（ブロック３０６参照）。この後で３つの結果のうちの１つが生じる、すなわち、
ａ．この節点対（ｕ１，ｕ２）は実際に等価である：節点は冗長であり、除去されうる（ブロック３０７参照）。
【０１０１】
ｂ．この節点対（ｕ１，ｕ２）は等価ではない：２つの関数ｂｏｏｌｅｕ１とｂｏｏｌｅｕ２とが異なっている変数の割り当て（ｕ１，ｕ２の"cone of influence"の葉）が見出された。グラフＧの残りの葉に対する乱数値の割り当ての後で、このグラフＧがシミュレートされ、これまでの同値類分解が細分化される。これは潜在的に等価な節点対の個数を減少させる（ブロック３０８参照）。
【０１０２】
ｃ．等価検証は複雑性限界のために判定できない：次の節点対が検査される。
【０１０３】
潜在的に等価な節点対の各々の検査の後で、本来の節点対（ｋ１，ｋ２）が等価であるかテストされる。そうでない場合には、最後のステップで節点対（ｋ１，ｋ２）がテストされる。
【０１０４】
図６にはプロセッサユニットＰＲＺＥが図示されている。このプロセッサユニットＰＲＺＥはプロセッサＣＰＵ、メモリＳＰＥ及び入力/出力側インターフェースＩＯＳを含む。この入力/出力側インターフェースＩＯＳはインターフェースＩＦＣを介して様々に利用される：グラフィックインターフェースを介して出力がモニタＭＯＮにおいて可視化され及び/又はプリンタＰＲＴに出力される。入力はマウスＭＡＳ又はキーボードＴＡＳＴを介して行われる。またプロセッサユニットＰＲＺＥはデータバスＢＵＳを自由に使用できる。このデータバスＢＵＳはメモリＭＥＭ、プロセッサＣＰＵ及び入力/出力側インターフェースＩＯＳ接続を保証する。さらに、データバスＢＵＳには付加的なコンポーネントが接続でき、例えば付加的なメモリ、データメモリ（固定ディスク）又はスキャナが接続できる。
【０１０５】
【外１】
0004418591.tif 000008
【図面の簡単な説明】
【図１】  ハイブリッドベリファイアの作動方法に対するフローチャートである。
【図２】  ハイブリッドベリファイアの部分としての基本ベリファイアの選択に対するフローチャートである。
【図３】  内部等価点に対するベリファイアに対するフローチャートである。
【図４】  完全なシミュレーションの実施を示すフローチャートである。
【図５】  ＲＯＢＤＤ検証方法のステップを有するフローチャートである。
【図６】  プロセッサユニットである。
【符号の説明】
ＰＲＺＥ  プロセッサユニット
ＣＰＵ  プロセッサ
ＳＰＥ  メモリ
ＭＥＭ  メモリ
ＩＯＳ  入力/出力側インターフェース
ＩＦＣ  インターフェース
ＭＯＮ  モニタ
ＰＲＴ  プリンタ
ＭＡＳ  マウス
ＴＡＳＴ  キーボード
ＢＵＳ  データバス
【図１】
0004418591.tif 000009
【図２】
0004418591.tif 000010
【図３】
0004418591.tif 000011
【図４】
0004418591.tif 000012
【図５】
0004418591.tif 000013
【図６】
0004418591.tif 000014