(57)【特許請求の範囲】
【請求項１】
対応した共通主入力及び対応した共通主出力の集合を備えた第１及び第２の回路が等価であるかどうかを判定するコンピュータで実現される方法であって、
上記第１の回路を第１のブール関数として表現し、
上記第２の回路を第２のブール関数として表現し、
排他的論理和演算された第１及び第２のブール関数の対応する主出力により、第１及び第２のブール関数で形成されるブール空間を表現し、
上記ブール空間に対する二分決定グラフを用意し、上記二分決定グラフは少なくともいくつかのノードのブール空間を表現する擬似変数を有し、上記いくつかのノードは擬似変数で表現され、上記擬似変数は分解点に１対１に対応し、
各分解点について構築しようとする二分決定グラフのサイズが、コンピュータのメモリ使用量に関するプリセット限界を超える場合、上記ブール空間を第１の分割部分(p1)及び第１の分割部分に直交する第２の分割部分(p2)で表現し、上記第１の分割部分(p1)は分解点に関する第１の二分決定グラフ(Bh)と複数の二分決定グラフの合成後に得られた第２の二分決定グラフ(Fh=1)との合成で表現され、
上記第１の分解部分(p1)についての二分決定グラフのサイズが、上記プリセット限界を越えない場合、合成された順序付二分決定グラフ(OBDD)を作成し、上記第1の分割部分(p1)の二分決定グラフのサイズが、上記プリセット限界を超える場合、上記第1の分割部分(p1)の二分決定グラフを上記第１及び第２の二分決定グラフの記号論理積による記号列で表現し、該記号列をメモリに記憶し、上記第１及び第２の二分決定グラフの記号論理積は、該第１及び第２の二分決定グラフについての論理積を実際には実行しないが該論理積と等価な結果をもたらす関数を表現し、
記憶された上記記号列に含まれる二分決定グラフを順に合成し、
合成結果の表現するブール空間がゼロとして評価される場合に、上記第１及び第２の回路が等価であることを判定する
ことを特徴とする方法。
【請求項２】
二分決定グラフが構築された少なくとも１個の上記第１の分割部分は第１の主入力の順序を有し、
二分決定グラフが構築された少なくとも１個の上記第２の分割部分は第２の主入力の順序を有する、請求項１記載の方法。
【請求項３】
二分決定グラフが構築された少なくとも１個の上記第１の分割部分は第１のプロセッサによって構築され、
二分決定グラフが構築された少なくとも１個の上記第２の分割部分は第２のプロセッサによって構築される、請求項２記載の方法。
【請求項４】
二分決定グラフが構築された少なくとも１個の上記第１の分割部分、及び、二分決定グラフが構築された少なくとも１個の上記第２の分割部分は、上記第１のプロセッサ及び上記第２のプロセッサによって並行に構築される、請求項３記載の方法。
【請求項５】
上記メモリ使用量に関するプリセット限界はコンピュータに利用可能なメモリの量を定数値で分割することにより決定される、請求項２記載の方法。
【請求項６】
上記メモリ使用量に関するプリセット限界は、前の二分決定グラフのサイズに定数値を乗算することにより決定される、請求項２記載の方法。
【請求項７】
上記記号列に含まれる二分決定グラフを合成する順番は、多数の要素を合成する前に、より少ない数の要素を合成するようにスケジューリングする、請求項１記載の方法。
【請求項８】
上記記号列に含まれる二分決定グラフを合成する順番に従って、最小の共通サポート要素を合成する前に、最大の共通サポート要素を合成するようにスケジューリングされる請求項１記載の方法。
【請求項９】
論理ゲートのトポロジーと対応した主入力及び対応した主出力とを有する、予備的及び最終的なディジタル設計内容を検証する、コンピュータで実現される方法であって、
論理ゲートのトポロジーを有するモノリシック回路を形成するため、上記予備的及び上記最終的なディジタル設計内容に関する上記対応した主出力を排他的論理和演算し、
上記論理ゲートのトポロジー内の点に対する二分決定グラフを順番に構築し、
上記二分決定グラフのサイズがコンピュータのメモリ使用量に関するプリセット限界を超えたとき、上記トポロジー内の点に対する二分決定グラフの構築を停止し該点を分解点としてマークし、
二分決定グラフのサイズが上記プリセット限界を超えたために構築されなかった二分決定グラフの代わりに、分岐点に１対１に対応する擬似変数を用意し、上記モノリシック回路の出力を、少なくとも１つの擬似変数を含む二分決定グラフで表現し、
上記少なくとも１つの擬似変数を含む二分決定グラフを、第１の分割部分(P1)及び第１の分割部分に直交する第２の分割部分(P2)で表現し、上記第１の分割部分は分解点に関する第１の二分決定グラフ(Bh)と複数の二分決定グラフの合成後に得られた第２の二分決定グラフ(Fh=1)との合成として表現され、
上記第１の分割部分(p1)の二分決定グラフのサイズがプリセット限界を超えなかった場合、上記第１の分割部分(p1)について順序付二分決定グラフ(OBDD)を作成し、上記第1の分割部分の二分決定グラフのサイズが上記プリセット限界を超えた場合、上記第１の分割部分(p1)を上記第１及び上記第２の二分決定グラフの記号論理積による記号列で表現し、該記号列をメモリに記憶し、上記第１及び第２の二分決定グラフの記号論理積は、該第１及び第２の二分決定グラフについての論理積を実際には実行しないが該論理積と等価な結果をもたらす関数を表現し、
記憶された上記記号列に含まれる二分決定グラフを順に合成し、
合成結果の表現するブール空間がゼロとして評価される場合に、上記第１及び第２の回路が等価であることを判定する
ことを特徴とする方法。
【請求項１０】
上記モノリシック回路の出力は二分決定グラフの複数の擬似変数により表現される請求項９記載の方法。
【請求項１１】
上記擬似変数を含む二分決定グラフを更なる分割に分割する請求項１０記載の方法。
【請求項１２】
上記第１の分割部分は少なくとも１個の分解点を含む請求項９記載の方法。
【請求項１３】
対応した共通主入力及び対応した共通主出力の集合を備えた第１及び第２の回路が等価であるかどうかを判定するコンピュータシステムであって、
上記第１の回路を第１のブール関数として表現する手段と、
上記第２の回路を第２のブール関数として表現する手段と、
上記第１及び第２のブール関数の対応した主出力を排他的論理和演算することによりブール空間を表現する手段と、
上記ブール空間に対する二分決定グラフを構築する手段であって、上記二分決定グラフは少なくともいくつかのノードのブール空間を表現する擬似変数を有し、上記いくつかのノードは擬似変数で表現され、擬似変数は分解点に１対１に対応する手段と、
構築しようとする二分決定グラフのサイズがコンピュータのメモリ使用量に関するプリセット限界を超える場合に、上記ブール空間を第１の分割部分(p1)及び第２の分割部分(p2)で表現する手段であって、上記第１の分割部分(p1)は、分解点に関する第１の二分決定グラフ(Bh)と複数の二分決定グラフの合成後に得られた第２の二分決定グラフ(Fh=1)との合成により表現される手段と、
上記第１の分割部分(p1)についての二分決定グラフのサイズが上記プリセット限界を越えなかった場合、上記第１の分割部分(p1)についての順序付二分決定グラフ(OBDD)を作成し、上記第１の分割部分(p1)についての二分決定グラフのサイズが上記プリセット限界を超える場合、上記第1の分割部分の二分決定グラフを、上記第１及び第２の二分決定グラフの記号論理積による記号列で表現し、該記号列をメモリに記憶する手段であって、上記第１及び第２の二分決定グラフの記号論理積は、該第１及び第２の二分決定グラフについての論理積を実際には実行しないが該論理積と等価な結果をもたらす関数を表現する手段と、
上記記号列に含まれる二分決定グラフを順に合成し、合成結果の表現するブール空間がゼロとして評価される場合に、上記第１及び第２の回路が等価であることを判定する手段と、
を含むことを特徴とするコンピュータシステム。
【請求項１４】
上記判定する手段は、複数のプロセッサを含む請求項１３記載のコンピュータシステム。
【請求項１５】
上記複数のプロセッサは、上記第１及び第２の分割部分がゼロとして評価されるか否かを並行して判定する請求項１４記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にコンピュータ支援設計（ＣＡＤ）システム及び方法に係わり、特に、ディジタル回路の設計並びに検証用のコンピュータ支援設計システム及び方法に関する。
【０００２】
【従来の技術】
ディジタル回路及び他の複雑なディジタルシステムのコンピュータ支援設計は広く普及している。コンピュータ支援設計において、回路及びシステムは、通常、階層的な形で設計される。回路又はシステムの要求条件は回路又はシステムの抽象モデルに定義される。抽象モデルは、次に多数の中間段階に変換される。中間段階には、屡々、ブロック構造行動設計を表現するレジスタ・トランスファ・レベル・モデルと、システムの論理レベル記述である構造モデルとが含まれる。最終的に、トランジスタ網リスト、並びに、回路又はシステムの物理配置が得られる。
【０００３】
回路又はシステムの設計は、概括的な要求条件レベルから下位の詳細な物理設計レベルまで進められ、その間に多数の中間段階が介在する。一連の各設計レベルは、回路又はシステムが設計要求条件に一致し続けていることを保証するため試験或いは検証される。ある設計レベルの誤りが別の設計レベルが終わるまで訂正されない場合、このような誤りを訂正するために要するコストは著しく増加するので、設計レベル毎に検証することが非常に望ましい。そのため、各設計レベルを要求条件に対して試験することが重要である。各設計レベルが要求条件に対して試験される際に、この作業は、各設計レベルを前の設計レベルと比較する作業に分けられる。このような後続のレベルと直前のレベルとの試験が行われると、屡々、後続の各レベルは先行のレベルの最適化に過ぎないことが直観的に分かる。従って、回路設計の試験又は検証は、回路又はシステムの一連の作成の下位互換性の検査と類似していると考えられる。
【０００４】
二分決定グラフ（ＢＤＤ）は、ＣＡＤに関連した問題を解法するため使用される。上記問題の中には、合成問題、ディジタルシステム検証、プロトコル検証、及び、回路の正当性の概括的な検証が含まれる。例えば、図１には、第１のＯＲゲート１１、第２のＯＲゲート１３及びＡＮＤゲート１５を含む回路が示されている。第１のＯＲゲート１１は入力Ｎ１及びＮ２を有する。第２のＯＲゲート１３は入力Ｎ２及びＮ３を有し、入力Ｎ２は二つのＯＲゲートの間で共用される。ＯＲゲート１１及び１３の出力はＡＮＤゲート１５に供給される。このとき、ＡＮＤゲート１５の出力は、ブール関数
N6=(N1 OR N2) AND (N2 OR N3)
によって表現される。
【０００５】
この回路の二分決定グラフＢＤＤは図２に示されている。ＢＤＤは、節点とも称される頂点と、分枝とにより構成される。更なる分枝が延びていない頂点は終端頂点と称される。この二分決定グラフは、各入力がＢＤＤの一つのレベルだけに出現するように制限されているので、順序付二分決定グラフ（ＯＢＤＤ）である。この二分決定グラフは、図３に示されるように既約順序付二分決定グラフ（ＲＯＢＤＤ）に既約させてもよい。順序付二分決定グラフを既約する規則は従来技術において公知である。この規則は、ある種の節点が節点の分枝を節点若しくは節点の補集合と交換することにより除去できることを認めることによって、冗長若しくは同型節点を除去する。既約順序付二分決定グラフは、ユニーク、即ち、標準形である点が重要である。従って、二つの順序付二分決定グラフが同一の既約順序付二分決定グラフに既約されるとき、これらの順序付二分決定グラフによって表現された回路は等価である。
【０００６】
殆どのアプリケーションでは、既約順序付二分決定グラフは、参考のため引用したR. E. Bryantによる論文”Graph-Based Algorithms For Boolean Function Manipulation”, IEEE Trans. Computer C-35(8), 667-691, August 1986に記載されたApply 手続のある種の変形を用いて構成される。Apply 手続を用いると、ゲートｇに対する既約順序付二分決定グラフはゲートｇの入力の既約順序付二分決定グラフの記号操作によって合成される。所定の回路に対し、回路のゲートは、所望の出力ゲートの既約順序付二分決定グラフが構成されるまで、深さ優先（縦型）で処理される。
【０００７】
ＶＬＳＩのＣＡＤ並びに他のコンピュータ科学の分野における多数の問題は、ブール関数を用いて定式化することができる。従って、既約順序付二分決定グラフは等価性検査を行うため有効である。しかし、コンピュータ支援解法及び等価性検査を行う際の中心的課題は、等価性検査が効率的に行えるように簡潔なブール関数の表現法を見つけることである。既約順序付二分決定グラフは効率的に操作することが可能であり、上記の如く標準形である。殆どの実際的な関数の場合に、既約順序付二分決定グラフは、サイズ（メモリ空間）及び計算時間の両方の点で経済的である。そのため、既約順序付二分決定グラフは種々のＣＡＤ問題を解決するための選択候補のブール表現法として頻繁に使用される。
【０００８】
しかし、既約順序付二分決定グラフは常に経済的であるとは限らない。実際的な関心のある大半の場合に、ブール関数によって記述された回路又はシステムを表現する既約順序付二分決定グラフは、回路又はシステムへの主入力の数に指数関数的な関係のある空間を必要とする。このため、等価性の解法はＮＰ困難問題になる。メモリ或いは計算時間の両方の面に関して大きい空間が要求されるため、既約順序付二分決定グラフを用いて解法することができる問題の複雑さに制約が課される。
【０００９】
種々の方法が既約順序付二分決定グラフの経済性を改良するため提案されている。その中の一部の方法は経済性を改良するが、既約順序付二分決定グラフの標準性と操作性を維持しない。かかる方法は既約順序付二分決定グラフの適用可能性を縮小する。標準性及び操作性を維持する別の方法は、唯一の起点を根元とする単一グラフとして全ブール空間に亘る関数を表現する。しかし、単一グラフは、メモリ又は時間のいずれかの制約が充足されないようなサイズの既約順序付二分決定グラフを必要とする。
【００１０】
既約順序付二分決定グラフのサイズを縮小する方法が提案されている。既約順序付二分決定グラフのサイズは変数の順序に強く依存する。従って、既約順序付二分決定グラフのサイズを縮小する変数順序を決定する多数のアルゴリズムが提案されている。しかし、一部のブール関数に対し、利用可能な程度に充分に小さいサイズの既約順序付二分決定グラフが得られる変数順序が存在しない場合や、そのような変数順序を効率的に見つけられない場合が起こり得る。
【００１１】
既約順序付二分決定グラフの空間及び時間の必要量は、全体的な順序付けの要求条件を緩和することにより削減してもよい。フリー二分決定グラフ（ＦＢＤＤ）は、このような解決策の一例である。フリー二分決定グラフは、変数が起点から終端までの所定の経路内で１回だけ出現し、異なる経路は別の変数順序をもつことができる二分決定グラフである。
【００１２】
更に経済的なブール関数の表現を獲得するための別の手法は、節点に関連した機能分割を変更することである。一般的に、二分決定グラフ分割は関数ｆが、
【００１３】
【外１】
0004028107.tif 000002
【００１４】
として表現されるシャノンの展開、又は、シャノンの展開から導かれるApply 法のような方法に基づく。他の分割は、リード・マラーの展開、若しくは、機能決定グラフ（ＦＤＤ）のような展開のハイブリッド的使用を含み、或いは、順序付きクロネッカー機能分割グラフ（ＯＫＦＤＤ）が使用される。しかし、上記の方法は何れも唯一の起点を根元とする単一グラフとして全ブール空間に亘る関数を表現する。そのため、上記の方法はメモリ及び時間の制約の問題が未解決のままである。
【００１５】
また、殆どの設計、特に、順序回路の設計は、適切に検証できない。一般的に、テストスイートがこのような設計を試験するため準備される。テストスイートは、設計の主入力に対する割当ての組合せが変更される多数のテストケースを含む。主入力に対する割当ての一つの組合せは入力ベクトルを形成する。フリップフロップのような順序素子を有する設計を試験するため使用される入力ベクトルの系列は、テストベクトルを形成する。
【００１６】
【発明が解決しようとする課題】
テストスイートは、屡々、試験中の設計に関する専門知識を備えたエンジニアによって用意される。従って、テストスイートは有用なテストデバイスである。しかし、テストスイートは、設計の状態若しくはブール空間の非常に僅かな部分しか試験しない。相当の数の主入力又は実現可能性のあるテストベクトルを備えた設計に対し、テストスイートは、特定の関心のある入力ベクトル又はテストベクトルの十分な部分の試験を行わない。
【００１７】
本発明は、ディジタル回路及びシステムのブール空間表現の窓を用いる二分決定グラフベースの検証技術によって検証することができないタイプのディジタル回路及びシステムを評価する方法並びにシステムの提供を目的とする。
【００１８】
【課題を解決するための手段】
本発明の好ましい一実施例において、ディジタル回路又はシステムはブール空間を形成するブール関数として表現される。ブール空間は分割に細分され、分割は再帰的に更なる分割に細分される。二分決定グラフを形成するには非常に大きい分割は、分割を形成するため合成可能な要素又は元を有する分解分割記号列を用いて表現される。これらの要素又は元は予定された順序で合成される。一部の合成の結果が零である場合、分解分割記号列も零になる。かくして、一部の下位組合せが零を生じる場合、全ての要素又は元を合成する必要はないので、分解分割記号列によって表現された分割の評価を行える。
【００１９】
従って、本発明は、第１の回路と第２の回路の等価性を検証する方法及びシステムを提供する。第１の回路及び第２の回路は、対応した主入力及び主出力の集合を有する。第１の回路及び第２の回路はブール関数として表現され、ブール空間は対応したブール関数の出力を排他的論理和することによって表現される。ブール空間に対する分解二分決定グラフを構築する際に、合成によって得られた二分決定グラフがコンピュータメモリ使用量に関して所定の制約を超えたとき、ブール空間は分解点の合成中に分割される。合成によって得られた全ての分割が零であるならば、回路は等価であると判定される。
【００２０】
また、本発明は、回路、システム並びに回路及びシステムの設計を部分的に検証できるようにする際に使用するサンプリング方法を提供する。回路、システム又は設計の状態空間は、多数の分割に細分される。これらの分割は、回路、システム又は設計用のテストスイートを解析する方法を含む幾つかの方法を用いて形成される。更に、中間二分決定グラフがメモリ使用量に関する所定の制約を超える場合に、この二分決定グラフは評価された状態空間の零終端頂点及び他の分割で置換することが可能である。
【００２１】
【発明の実施の形態】
以下、本発明の上記特徴及び他の特徴が容易に認められるように、添付図面を参照して本発明の実施例を詳細に説明する。
I.  概要説明
本発明の回路又はシステムを検証する方法及びシステムによれば、回路又はシステムを表現するブール論理空間の分割が分解点における合成によって行われる。各合成は、ブール空間を二つの別個の分割に細分する。合成は、シャノンの式と、二分決定グラフに関する機能的制約とを用いて行われる。かくして、各分割はブール空間の論理和部分を表現する。
【００２２】
第１の回路が第２の回路と等価であるか否かを判定する際に、二つの回路の各主出力は排他的論理和（ＸＯＲ）演算で合成される。全てのＸＯＲ演算の出力が常に零と一致するとき、二つの回路は等価である。従って、完全なブール空間は、第１の回路の表現形式Ｆと、第２の回路の表現形式Ｇとにより構成され、両者の主出力はＸＯＲ演算で合成される。このように、等価である表現形式ＦとＧとによって表現された回路に対し、Ｆ  ＸＯＲ  Ｇ  で表されるブール空間は常に零でなければならない。ブール空間  Ｆ  ＸＯＲ  Ｇ  が幾つかの論理和分割に分割されるとき、各分割は、零であるべき完全なブール空間  Ｆ  ＸＯＲ  Ｇ  に対し、零に一致しなければならない。このように、順序付二分決定グラフは、別個の分割毎に作成され、各順序付二分決定グラフは、順序付二分決定グラフが零に既約するかどうか、即ち、零に一致する単一の終端頂点だけを含むかどうかを判定すべく検査される。全ての分割が零に既約される場合、Ｆ  ＸＯＲ  Ｇ  は零に既約し、表現形式Ｆ及び表現形式Ｇは等価な回路を表現する。
【００２３】
或いは、表現形式Ｆ及び表現形式Ｇを別々に操作し、次に、得られた既約順序付二分決定グラフを比較してもよい。
分割された既約順序付二分決定グラフの使用は、一部のブール空間しか表現しない１個の既約順序付二分決定グラフだけが常にメモリに収納されるべきことを意味する。分割された各既約順序付二分決定グラフはモノリシック既約順序付二分決定グラフよりも小さいので、時間及びメモリ空間の制約のために従来技術では解決することが困難な別のクラスの問題を解決できるようになる。また、分割された各既約順序付二分決定グラフは等価である回路に対し零に既約する必要があるので、分割された既約順序付二分決定グラフが零に既約しないことが判明した時点で処理が直ちに停止される。その上、各既約順序付二分決定グラフの変数順序は異なることが許されるので、個別の既約順序付二分決定グラフのサイズが更に縮小される。
【００２４】
分割は分解点を合成することによって形成される。分解点は多数の方法で見つけられる。点が既に分かっている等価的な点であるならば、分割は等価的な順序付二分決定グラフを用いて分解点に形成される。
また、分解点は爆発原理に基づいて判定される。モノリシック順序付二分決定グラフは、一般的に、Apply 手続を用いて主出力に向かう主入力から作成される。モノリシック順序付二分決定グラフの作成は、主入力に関して主出力を表現するモノリシック順序付二分決定グラフが得られるまで続けられる。この処理中に、節点に関する順序付二分決定グラフがメモリ使用量に関して爆発する場合、その点は分解点としてマークされ、擬似変数に変わる。主出力に近い方の順序付二分決定グラフを作成する際に、この擬似変数が、元々使用される筈の順序付二分決定グラフの代わりに使用される。擬似変数ｂを利用する二分決定グラフは図９に示されている。
【００２５】
ｎ個のゲート又は節点を有する回路表現形式に対する分解二分決定グラフを構築する過程で分解点を判定する処理が図１３に示されている。ステップ１３０において、カウンタは第１の主入力に設定される。ステップ１３１では、全てのゲート若しくは節点に対し二分決定グラフＢＤＤの構築が試行されたかどうかが判定される。ステップ１３２において、サイズに関して二分決定グラフＢＤＤの爆発が起こるまで、各ゲート若しくは節点毎に中間二分決定グラフが構築される。このような爆発が生じたとき、ステップ１３４において、ゲート若しくは節点が分解点としてマークされ、ステップ１３５において、分解点としてマークされたゲート若しくは節点に対する二分決定グラフの擬似変数が挿入される。
【００２６】
このような処理には少なくとも二つの利点がある。第１に節点に関し二分決定グラフを構築する必要が無くなる。即ち、メモリに関して爆発した中間二分決定グラフは後の処理に必要ではない。一例として、最終的な二分決定グラフよりもサイズの大きい中間二分決定グラフを有する簡単な回路は図４に示されている。この簡単な回路は、ＯＲゲート３１とＡＮＤゲート３３とを含む。ＯＲゲートは入力Ｎ１０及びＮ１１を有する。ＯＲゲートの出力Ｎ１２はＡＮＤゲートに供給され、ＡＮＤゲートの別の入力はＮ１１である。また、ＡＮＤゲートの出力はＮ１３である。入力Ｎ１０に対する二分決定グラフは図５に示されているように、終端頂点への２本の分枝を備えた節点１２を含む。入力Ｎ１１に対する二分決定グラフも同様な形であり、図６に示されている。Ｎ１２に対する二分決定グラフは図７に示され、２個の節点を含む。しかし、Ｎ１３に対する二分決定グラフは、図８に示される如く、１個だけの節点を有し、N13=(N10 OR N11) AND N11  と考えられるとき、簡潔に、N13 = N11 である。そのため、回路に対する最終的な二分決定グラフは少なくとも１個の中間二分決定グラフよりも小さく、中間二分決定グラフを構築する必要はない。
【００２７】
それにも係わらず、標準形であり、かつ、解析が容易な目的関数（例えば、出力関数）の表現形式を構築する必要がある。この場合に、二分決定グラフの爆発を回避するため、二分決定グラフは分解点の合成中に分割され得る。かくして、図１０及び１１には、図９の二分決定グラフの擬似変数ｂを合成することによって得られた二つの分割が示されている。このような分割二分決定グラフは、分割の和である二分決定グラフよりもサイズが小さいので、メモリ又は時間の量を減少させる必要がある。
【００２８】
図１２には、分割技術を用いた回路１及び回路２の回路検証方法の概要が示されている。同図において、Ｃは回路１及び回路２の合成を表し、Ｆは回路Ｃを表現するブール関数である。ステップ１２０において、主入力から主出力までの分解集合に対するＣの分解が行われる。ステップ１２２において、関数Ｆは主入力と擬似変数の合成によって表現される。ステップ１２４において、関数Ｆの表現形式が作成され、分割順序付二分決定グラフに分割される。ステップ１２６において、零に一致しない順序付二分決定グラフが得られたかどうかが判定される。零に一致する順序付二分決定グラフが得られなかった場合、ステップ１２７において、回路１と回路２は等価ではないことが宣言される。それ以外の場合、ステップ１２８において、回路１と回路２は等価であることが宣言される。
【００２９】
分割毎に二分決定グラフが生成される。分割に別の分解点が含まれる場合、更なる分割を行うことが必要である。各分割自体は、二つの論理和ブール空間に分割してもよく、各サブ分割は論理和ブール空間に更に分割される。かくして、ブール空間は、多数の小規模の順序付二分決定グラフに分割される。
一部の分割は、非常に大規模であるため二分決定グラフを構築できない場合がある。しかし、分割は分解分割記号列によって形成される。分解分割記号列は、論理和された要素又は元の記号列である。特定の分割が多数の上位レベルの分割を再帰的に分割する結果として形成される場合、この記号列は多数の要素を含む。要素が零である結果と論理和された場合、記号列、即ち、分割も零である。
【００３０】
従って、分解分割記号列を作成する順序は、予定された順序を用いて実現される。例えば、ｆ＝ａ，ｂ，ｃ，ｄ，ｅであり、ａ，ｂ，ｃ，ｄ，ｅがシステム若しくは回路トポロジーの一部分を表す全てブール関数であるとき、ｆの分割された既約順序付二分決定グラフを作成する問題を考える。好ましい一実施例において、ブール関数ａ，ｂ，ｃ，ｄ，ｅは、（節点の数に関して表現された）サイズと、相互に余分なサポートの最小値を有する程度とに従って格付けされる。この格付けは、最小サイズの要素及び余分なサポートをもつ要素が先に合成される要素の合成スケジュールを決定する。以下、上記の内容、並びに、別の詳細について十分に説明する。
【００３１】
II. 分割既約順序付二分決定グラフ
Ａ．  定義
ｎ個の入力Ｘn ＝｛ｘ1 ，．．．，ｘn ｝に関してブール関数ｆ：Ｂn →Ｂが定義された場合を考える。ブール関数ｆの分割既約順序付二分決定グラフ表現形式Ｘf は以下の通り定義される。
【００３２】
定義１．  Ｘn に関して定義されたブール関数ｆ：Ｂn →Ｂが与えられると、ｆの分割既約順序付二分決定グラフ表現形式Ｘf は、ｋ個の関数の組の集合
Ｘf ＝｛（ｗ1 ，ｆ1 ）．．．，（ｗk , ｆk ）｝
として表され、ここで、
【００３３】
【外２】
0004028107.tif 000003
【００３４】
は、Ｘn に関して定義され、以下の条件を満たす。
【００３５】
【外３】
0004028107.tif 000004
【００３６】
なお、＋及び∧はブール演算子ＯＲ及びＡＮＤを表す。集合｛ｗ1 ，．．．，ｗk ｝はＷとして表される。各ｗi は窓関数と称される。直観的に、窓関数ｗi は、ｆが定義されているブール空間の一部を表現する。各ペア
【００３７】
【外４】
0004028107.tif 000005
【００３８】
は、関数ｆの分割を表す。ここで、用語“分割（パーティション）”は、分割が論理和であることを要求する従来の意味とは違う意味で使用される。定義１の条件１−３に加えて、
ｉ≠ｊに対し、ｗi ∧ｗj ＝０
であるならば、分割は直交し、各
【００３９】
【外５】
0004028107.tif 000006
【００４０】
は従来の意味の分割、即ち、直和分割である。
定義１の条件１は、各分割が他の分割の変数順序とは異なる場合、及び、異ならない場合がある関連した変数順序をもつことを意味する。条件２は、ｗi が全ブール空間を被覆することを意味する。条件３は、
【００４１】
【外６】
0004028107.tif 000007
【００４２】
が、ｗi によって被覆されたブール空間に関するｆと同じであることを意味する。一般的に、各
【００４３】
【外７】
0004028107.tif 000008
【００４４】
は、ｗi ∧ｆi として表現可能であり、ｆi の値はｗi によって被覆されていないブール空間の部分に対しドントケアである。既約順序付二分決定グラフＦのサイズは、｜Ｆ｜によって示される。そのため、｜Ｘf ｜によって示される全ての分割のサイズの合計は、
【００４５】
【数１】
0004028107.tif 000009
【００４６】
によって与えられる。条件２及び３から、直ちに、
【００４７】
【数２】
0004028107.tif 000010
【００４８】
のように表される。ｆが
【００４９】
【外８】
0004028107.tif 000011
【００５０】
の論理和として表現されるタイプの分割は、論理和分割と称される。論理積分割は、上記の定義の双対形式として定義される。即ち、ｉ番目の分割が、
【００５１】
【外９】
0004028107.tif 000012
【００５２】
により与えられるとき、定義１の条件２は、
ｗ1 ∧．．．∧ｗk ＝０
になり、条件３は、
【００５３】
【数３】
0004028107.tif 000013
【００５４】
になる。この場合、
【００５５】
【数４】
0004028107.tif 000014
【００５６】
である。
Ｂ．  分割既約順序付二分決定グラフの標準形
各位置ｉに関して、集合Ｗ＝｛ｗ1 ，．．．，ｗk ｝及び順序πi が与えられたとき、分割既約順序付二分決定グラフ表現形式は標準形である。所定の関数ｆと、ｆの所定の分割既約順序付二分決定グラフ表現形式
【００５７】
【数５】
0004028107.tif 000015
【００５８】
に対し、
【００５９】
【外１０】
0004028107.tif 000016
【００６０】
はユニークである。各
【００６１】
【外１１】
0004028107.tif 000017
【００６２】
は（所定の順序πi に対し）標準形である既約順序付二分決定グラフとして表現されるので、分割既約順序付二分決定グラフ表現形式は標準形である。
ブール空間の分割がＷ＝｛ｗ1 ，．．．，ｗk ｝の場合に、分割既約順序付二分決定グラフ表現形式に関する基本ブール演算（例えば、ＮＯＴ，ＡＮＤ，ＯＲ）の実行の漸近的計算量は、既約順序付二分決定グラフの場合と同様にオペランドのサイズの多項式である。従って、表現形式の経済性は操作の効率に関して全く負担にならない。実際上、分割既約順序付二分決定グラフは、一般的にモノリシック既約順序付二分決定グラフよりも小さいので、各分割は別々に操作することが可能であり、その操作は非常に効率的である。
【００６３】
参考のため引用したA. Narayan他による“Partitioned-ROBDDs -- A Compact, Canonical end Effciently Manipulable Representation of Boolean Functions", ICCAD, November 1996に記載されているように、ｆ及びｇを二つのブール関数とし、
【００６４】
【数６】
0004028107.tif 000018
【００６５】
が定義１の条件１−３を満たす夫々の分割既約順序付二分決定グラフである場合を考える。また、Ｘf 及びＸg の両方のｉ番目の分割は同じ変数順序πi を有すると仮定する。このとき、以下のように表される。
【００６６】
【外１２】
0004028107.tif 000019
【００６７】
Ｃ．  演算の計算量
二つの既約順序付二分決定グラフＦ及びＧが与えられた場合、次の演算
【００６８】
【外１３】
0004028107.tif 000020
【００６９】
で実行できる。分割既約順序付二分決定グラフの場合、異なる分割は、別々に操作され、
【００７０】
【外１４】
0004028107.tif 000021
【００７１】
である。メモリ内には同時に１個の分割しか存在すべきではないので、
【００７２】
【外１５】
0004028107.tif 000022
【００７３】
によって与えられる。また、既約順序付二分決定グラフと同様に、関数ｆの充足集合のサイズは、直交分割既約順序付二分決定グラフに対し、オーダーＯ（｜Ｘf ｜）で計算され得る。
D.  存在記号化
基本的なブール演算の他に、順序回路の形式的な検証に広範囲に使用される別の有用な演算は存在記号（∃x ｆ）演算である。関数ｆ（∃x ｆ）からの変数ｘの存在記号は、
【００７４】
【数７】
0004028107.tif 000023
【００７５】
によって与えられる。分割既約順序付二分決定グラフ表現形式において、余因子は、Ｘに関して、
【００７６】
【外１６】
0004028107.tif 000024
【００７７】
を余因子化すること、即ち、
【００７８】
【数８】
0004028107.tif 000025
【００７９】
により簡単に得られる。しかし、余因子化演算を実行した後、正及び負の余因子は異なる窓関数
【外１７】
0004028107.tif 000026
を有し、論理和は分割に基づいて直接行えない。この問題は定量化されるべき変数に依存しない窓関数を選択した場合には生じない。存在記号化は以下の通り行われる。
Ｘf ＝｛（ｗi ，ｆi ）｜１≦ｉ≦ｋ｝が、
１≦ｉ≦ｋに対し、∃x ｗi ＝ｗi 
となるようなｆの分割既約順序付二分決定グラフであるとするならば、
Ｘ∃x ｆ＝｛（ｗi ，∃x ｆi ）｜１≦ｉ≦ｋ｝
は、∃x ｆの分割既約順序付二分決定グラフ表現形式である。
【００８０】
頻繁に使用される別の重要な演算は、∀x ｆと表記されるｆからのＸの全称記号である。全称記号の十分条件は、窓関数が限定されるべき変数と独立である上に、直交していることである。全称記号化は以下の通り行われる。
１≦ｉ，ｊ≦ｋ  かつ  ｉ≠ｊ  に対し、
∀x ｗi ＝ｗi かつ  ｗi ∧ｗj ＝０
となるようなｆの分割既約順序付二分決定グラフ表現形式を
Ｘf ＝｛（ｗi ，ｆi ）｜１≦ｉ≦ｋ｝
とする。このとき、
ｘ∀x ｆ＝｛（ｗi ，ｆi ）｜１≦ｉ≦ｋ｝
は、∀x ｆの分割既約順序付二分決定グラフ表現形式である。
【００８１】
III.  分割既約順序付二分決定グラフを構築するための発見的手法
分割既約順序付二分決定グラフの性能は、関数をコンパクトに表現することができるブール空間の分割の生成に決定的に依存する。このようなブール空間の分割を分割既約順序付二分決定グラフに関して見つける問題は、モノリシック既約順序付二分決定グラフに関して優れた変数順序を見つける問題と同様に中心的な課題である。以下、コンパクトな直交分割既約順序付二分決定グラフを作成する際に効率的なある種の単純な発見的手法を説明する。以下の説明ではブールのネットリストモデルを使用しているが、この技術は汎用的であり、ブール演算の任意のシーケンスに適用することができる。
【００８２】
所与の関数Ｆは最初に分解され、関数Ｆの分割既約順序付二分決定グラフのための窓関数はＦに対する分解された二分決定グラフを解析することによって得られる。窓の個数は先験的若しくは動的に決定される。窓ｗi が決定された後、窓ｗi に対応する分割既約順序付二分決定グラフは、窓ｗi に対応したブール空間内でＦを作成することにより獲得される。
【００８３】
Ａ．  分解表現の作成
Ｘn ＝｛ｘ1 ，．．．，ｘn ｝に関してブール関数ｆ：Ｂn →Ｂが定義された場合、分解戦略は、既約順序付二分決定グラフ演算のシーケンス中に、既約順序付二分決定グラフのサイズの増加に基づいて新しい変数を導入することである。新しい変数は、ある種の演算に起因して不相応な程度で既約順序付二分決定グラフ・マネージャ内の節点の総数が増加するときに導入される。例えば、既約順序付二分決定グラフＲ1 及びＲ2 上で演算Ｒ＝Ｒ1 ＋Ｒ2 を実行するときに、Ｒが非常に大きくなるならば、この演算は行われない。その代わりに、新しい変数であるψ1 及びψ2 が導入され、Ｒはψ1 ＋ψ2 のように表現される。分解点に対応した既約順序付二分決定グラフを収容する別個のアレイが保持される。ψ1 及びψ2 に対応したＲ1 及びＲ2 がこのアレイに追加される。このように、困難な関数的操作の手続は、後の段階に延期される。ブールの簡単化に起因して、これらの中の殆どのケースは最終的な結果に生ずることが無く、特に、最終的なメモリ必要量が、参考として引用したJ. Jain 他による文献“Decomposition Techniques for Efficient ROBDD Construnction”, LNCS, Formal Methods in CAD 96, Springer-Verlag, November, 1996 に記載されているようなピーク中間必要量よりも著しく少ない場合に、上記ケースは最終的な結果に生じない。
【００８４】
好ましい一実施例において、メモリ爆発の検査は、マネージャ・サイズが所定の閾値よりも大きい場合に限り行われる。また、分解点は、既約順序付二分決定グラフが別の閾値を超えるまで成長したときに追加される。これによって、分解点自体はかなり大きい既約順序付二分決定グラフを有しないことが保証される。たとえ簡単なサイズベースの分解スキームでも、分割既約順序付二分決定グラフの潜在能力を実証するため非常に効果的に働く。
【００８５】
分解段階の最後に、分解表現形式が獲得される。関数ｆの分解表現形式は、
ｆd （Ψ，Ｘ）
のように表され、
Ψ＝｛ψ1 ，．．．，ψk ｝
は、回路の分解集合と称され、ψi ∈Ψ  は分解点である。
【００８６】
Ψbdd ＝｛ψ1bdd，．．．，ψkbdd｝
が分解点の既約順序付二分決定グラフを収容するアレイを表現する場合、即ち、
ψj ≠ψi 
であるとき、主入力変数並びに（可能であれば）他のψj ∈Ψ  に関して、
ψi ∈Ψ
が対応した既約順序付二分決定グラフ
ψ1bdd∈Ψbdd 
を有する場合を想定する。同様に、ψibddw のアレイはΨbddwi によって表現される。ｆd （Ψ，Ｘ）におけるψi の合成は、
ｆd （Ψ，Ｘ）．（ψi ←ψibdd）
によって表現され、但し、
【００８７】
【数９】
0004028107.tif 000027
【００８８】
である。ｆd （Ψ，Ｘ）におけるΨのベクトル合成は、
ｆd （Ψ；Ｘ）．（Ψ←ψbdd ）
によって示され、ψi のｆd への順次の合成を表現する。
Ｂ．  分解表現の分割
１．  所与のｗi に対するｆの作成
窓関数ｗi 、分解表現ｆd （Ψ，Ｘ）、及び、ｆの既約順序付二分決定グラフアレイΨbdd が与えられた場合、ｆ1 ＝ｗ1 ∧ｆi を表現する既約順序付二分決定グラフがｆよりも小さくなるようなｆi が望ましい。以下の観察が適切である。
【００８９】
観察１：
ｆi ＝ｆdwi （Ψ，Ｘ）（Ψ←ψbdd ）  及び
ｆ＝ｆd （Ψ，Ｘ）（Ψ←ψbdd ）
を仮定する。ｗi が主入力上でキューブである場合、ｆd 及びｆの任意の変数順序に対し、
｜ｆi ｜≦｜ｆ｜
である。
【００９０】
証明：
【００９１】
【数１０】
0004028107.tif 000028
【００９２】
を仮定する。ｗi が主入力だけに依存する場合、余因子化及び合成の順序は変更することができる。したがって、
【００９３】
【数１１】
0004028107.tif 000029
【００９４】
である。この結果として、
【００９５】
【数１２】
0004028107.tif 000030
【００９６】
が得られる。ｗi がキューブである場合、
【００９７】
【数１３】
0004028107.tif 000031
【００９８】
であり、したがって、
｜ｆi ｜≦｜ｆ｜
である。次に、
【００９９】
【外１８】
0004028107.tif 000032
【０１００】
によって表現されるとする。
【０１０１】
【外１９】
0004028107.tif 000033
【０１０２】
を合成することにより、分割関数を作成することができ、
【０１０３】
【数１４】
0004028107.tif 000034
【０１０４】
が形成される。窓関数ｗi の集合が与えられた場合、ｆの分割既約順序付二分決定グラフＸｆは、
【０１０５】
【数１５】
0004028107.tif 000035
【０１０６】
により与えられる。上記の定義が定義１．の全ての条件を満たすかどうかは簡単に検査できる。ｗi がキューブである場合、ｆi はｆに対する既約順序付二分決定グラフよりも小さいサイズを有することが保証される。また、ｋがｗi のリテラルの個数であるとき、ｗi を表現する既約順序付二分決定グラフはｋ個の内部節点を有する。ｗi と
【０１０７】
【外２０】
0004028107.tif 000036
【０１０８】
は、分離的（ディスジョイント）サポートを有するので、
【０１０９】
【数１６】
0004028107.tif 000037
【０１１０】
が得られる。また、ｆi の構築中の中間結果は、ｆの構築中の中間結果よりもサイズが小さいので、中間ピークメモリ必要量は削減される。
観察１は、ｆ及びｆi が異なる変数順序を有し得るときに動的変数再配列が行われる場合には成立しないことに注意する必要がある。しかし、実際上、動的変数再配列は分割の際に小さいグラフ上で行われるので、非常に効率的であると考えられる。窓関数がキューブよりも複雑な主入力の関数である場合でさえ、
【０１１１】
【数１７】
0004028107.tif 000038
【０１１２】
が使用される。但し、
【０１１３】
【外２１】
0004028107.tif 000039
【０１１４】
はｗi 上のｆの一般化余因子である。ｗi 上のｆの一般化余因子は、通常、ｆよりも遙かに小さい、しかし、ｉ番目の分割既約順序付二分決定グラフのサイズの場合、
【０１１５】
【外２２】
0004028107.tif 000040
【０１１６】
は、最悪のケースでオーダーＯ（｜ｗi ｜｜ｆi ｜）になり得る。これを避けるため、一般的な窓関数を使用する間に小さいｗi を使用する。
２．  窓関数の選定
優れた窓関数を獲得する方法は、先験的選定及び「爆発」ベース選定の二つのカテゴリに分類される。
【０１１７】
ａ．  先験的分割法
先験的分割法は分割のため所定数の主入力を使用する。そのため、分割がｋ個の主入力に関して行われる場合、２k 個の分割が上記変数の全ての二値割当に対応して作成される。例えば、分割がｘ1 及びｘ2 に関して行われる場合、４個の分割
【０１１８】
【外２３】
0004028107.tif 000041
【０１１９】
が作成される。これらの分割既約順序付二分決定グラフはモノリシック既約順序付二分決定グラフよりも小さくなることが保証される。所定の時間にメモリに存在すべき分割は１個に限られるので、メモリ必要量は常に少なく、このメモリ削減量は大きいので、全ての分割を処理するため要する時間も全体的に削減される。
【０１２０】
分割のための変数を選定する場合、別の分割を別々に作成する場合に生ずる冗長性を最小限に抑えると共に、実現される分割を最大限にする変数を選定することが望ましい。変数ｘに関して関数ｆを分割するコストは、
ｃｏｓｔx （ｆ）＝α［ｐx （ｆ）］＋β［ｒx （ｆ）］
のように定義され、ｐx （ｆ）は、
【０１２１】
【数１８】
0004028107.tif 000042
【０１２２】
によって与えられる分割ファクタであり、ｒx （ｆ）は、
【０１２３】
【数１９】
0004028107.tif 000043
【０１２４】
によって与えられる冗長性ファクタである。
分割ファクタは最悪の二つの分割を示すので、分割ファクタは小さい方がよい。同様に、冗長性ファクタは二つの分割を作成するため関係する総作業を意味するので、冗長性ファクタは小さい方がよい。全体的なコストが小さくなる変数ｘが分割のため選定される。所定の関数Ｆのベクトル及び変数ｘに対し、分割のコストは、
【０１２５】
【数２０】
0004028107.tif 000044
【０１２６】
のように定義される。主入力ＰＩはｆd 及びψを分割するコストが増加する順序に並べられる。ユーザによって指定された所定の数ｋを用いて、最良のｋ個の主入力が選定される。類似したコスト関数は、分割既約順序付二分決定グラフを作成するため、主入力変数だけではなく、主入力ＰＩに関して表現された
【０１２７】
【外２４】
0004028107.tif 000045
【０１２８】
のような擬似変数を選定することが可能である。この場合、余因子演算は、非キューブの窓関数に対する一般化余因子演算になる。このように全ての主入力ＰＩがｆd 及びψを分割するコストに従って格付けされているタイプの選定は、静的分割選定と称される。
動的分割戦略は、最良の主入力ＰＩ（即ち、ｘ）がｆd 及びΨに基づいて選定され、引き続く主入力が、一方の分割中のｆd 及びΨと、別の分割中の
【０１２９】
【外２５】
0004028107.tif 000046
【０１３０】
に基づいて機能的に選定される分割である。動的分割は、指数関数的な個数の余因子を必要とするため、コスト高になり得る。このコストは、関心のある値だけが、
【０１３１】
【外２６】
0004028107.tif 000047
【０１３２】
のサイズであるという事実を利用することによって多少削減できる。
【０１３３】
【外２７】
0004028107.tif 000048
【０１３４】
の値に関する上限は、ｆd の既約順序付二分決定グラフをトラバース（横断）し、ｘに対応した変数ｉｄを備えた節点を見つけると分枝ｘ＝１を選ぶ。このような形で既約順序付二分決定グラフをトラバースすることによって獲得された二分決定グラフは既約されないので、この方法では正確なカウントが得られない。この方法の利点は、新しい節点を作成する必要がないこと、並びに、トラバースが高速に行えることである。
【０１３５】
ｂ．  爆発ベース分割法
爆発ベース分割法の場合、ｆd 中の
【０１３６】
【外２８】
0004028107.tif 000049
【０１３７】
は、連続的に合成される。グラフのサイズが一部の合成（例えば、ψj ）に対して急激に増大する場合、窓関数ｗは現在の
【０１３８】
【外２９】
0004028107.tif 000050
【０１３９】
に基づいて選定される。窓関数は、主入力ＰＩ及びその補集合、或いは、主入力に関して表現され、非常に小さいサイズをもつある種の
【０１４０】
【外３０】
0004028107.tif 000051
【０１４１】
及びその補集合のいずれかである。窓関数ｗが獲得された後、二つの分割
【０１４２】
【外３１】
0004028107.tif 000052
【０１４３】
が作成される。爆発ベース分割ルーチンは上記の分割毎に再帰的に呼び出される。
等価性検査を行うべき二つの回路Ａ及びＢを想定する。回路Ａ及びＢは、対応した主出力Ｆ1 及びＦ2 を有する。等価性を示すためには、
【０１４４】
【数２１】
0004028107.tif 000053
【０１４５】
が真であることが必要である。この式が真であるか否かを判定するため、Ｆに対する二分決定グラフが内部等価点のカットセットを用いて構築される。この処理において、多数の出力は、等価ゲートの最近傍カットセットμi ＝｛ψi ，．．．，ψk ｝に関してそれらの二分決定グラフを作成するだけで等価であることが宣言され得る。この処理は、Ｆに関する出力二分決定グラフがμi を用いて容易に作成でき、出力二分決定グラフがブールの０に既約するとき、非常に有効である。即ち、Ｆ1 とＦ2 は機能的に等価であることが示される。しかし、二分決定グラフＦ（μ1 ）が非常に大きく、構築できない場合がある。また、場合によってはＦ（μ1 ）が０に既約しないので、この場合、二分決定グラフは、主入力と先行のカットセットμi の間に収まる別のカットセットμj に関して合成する必要がある。この合成処理中に、二分決定グラフは、Ｆ1 、Ｆ2 の等価性が解明される前に爆発する可能性がある。二分決定グラフ分割戦略は、基本的に、上記の通り通常の方法では成功し得ない場合に非常に重要な戦略として利用できる点で有利である。
【０１４６】
二分決定グラフ分割戦略は、一方で、Ｆ（μi ）をＦ（μj ）に合成し、グラフサイズがある種の合成（例えば、ゲートψj に対応した二分決定グラフ）に対して急激に増大する場合に、合成結果がある制限を超えたとき分割を行う。この制限を選定するため、幾つかのサイズ関連パラメータの知識が二分決定グラフＦ（μi ）のＦ（μj ）への合成の処理中に保存される。これらのパラメータを説明するため、１≦ｈ≦ｋであり、集合｛ψ1 ，．．．，ψk ｝からのｈ個の二分決定グラフが既に合成されている場合を想定する。例えば、二分決定グラフの合成される順序がψ変数の指数の増加順であるとする。即ち、二分決定グラフは、ψ1 ，ψ2 ，．．．，ψh の順に合成される。カットセットψi に関して作成されたψの二分決定グラフは、ψi （μj ）のように表される。二分決定グラフを分割すべきときを動的に決定するルーチンDYNAMIC ＿BDD ＿PARTITION （動的ＢＤＤ分割）を以下に説明する。
【０１４７】
手続(Procedure: DYNAMIC ＿BDD ＿PARTITION)
１．ORIG＿SIZEは、カットセットμj に関して表現された最初のＦ（μj ）のＢＤＤサイズである。
２．COMPOSED＿ARGUMENT＿SIZEは、ＢＤＤ  Ｆ（μj ）内で合成された各ＢＤＤ  ψ1 （μj ），ψ2 （μj ），．．．，ψn （μj ）の合計である。
【０１４８】
３．TOTAL ＿INPUT ＿SIZE = COMPOSED ＿ARGUMENT＿SIZE + ORIG ＿SIZE
４．FINAL ＿SIZEは、ｈ個の各点ψ1 ，ψ2 ，．．．，ψh が連続的に合成された後、獲得されるＢＤＤ  Ｆ（μj ）の「最終的な」サイズである。このＢＤＤは、Ｆh のように表される。また、PREVIOUS＿SIZEは、ｈ−１個のポイントを合成した後のＦ（μj ）のサイズを表す。
【０１４９】
分割法が呼び出されるのは以下の場合である。
（Ａ）FINAL ＿SIZE  > COMPOSED＿ARGUMENT＿SIZE * BLOW ＿UP＿FACTOR
ここで BLOW ＿UP＿FACTは、所与の装置で利用可能な空間に従って変更可能であるが、好ましい実施例では１０である。
（Ｂ）FINAL ＿SIZE >  PREVIOUS＿SIZE * BLOW ＿UP＿FACTOR/NUM
好ましい実施例では、NUM は２である。また、好ましい実施例において、この規準は、合成中にＢＤＤが爆発する場合だけに使用され、分解表現の形成中には使用されない。
【０１５０】
（Ｃ）FINAL ＿SIZE > PRE＿SET ＿MEMORY＿LIMIT
さらに、分割法は、FINAL ＿SIZEが利用可能なメモリのプリセット限界よりも大きい場合に呼び出される。
分割表現を形成中にＢＤＤ爆発を判定する手続は、図１４に示されている。分解表現を形成する際に、ブール演算ゲートの出力に対するＢＤＤは、ゲートへの入力のＢＤＤ上でブール演算を実行することにより形成される。図１４の手続に示されているように、Ｂ3 はゲートの出力に対するＢＤＤであり、Ｂ1 及びＢ2 はゲートの入力に対するＢＤＤである。ステップ１４０において、Ｂ3 のサイズがメモリ使用量に対するプリセット閾値限界よりも大きいかどうかが判定される。ステップ１４１において、Ｂ3 のサイズがＢ1 のサイズとＢ2 のサイズの和の量の定数（BLOW＿UP＿DECOMPOSITION 定数）倍よりも大きいかどうかが判定される。ステップ１４０或いはステップ１５１のいずれかの条件が真であるならば、中間ＢＤＤ爆発変数INTERMEDIATE＿BDD ＿BLOWUPは、ステップ１４２において１にセットされる。それ以外の場合、変数INTERMEDIATE＿BDD ＿BLOWUPは、ステップ１４３において０にセットされる。
【０１５１】
３．等価点分割法
上記方法は、ネットワーク全体を検証する問題を簡単化するため構造的かつ機能的技術の組合せを用いる内部対応関係の抽出及び使用に基づく技術に適用される。上記の対応関係は、機能的な等価性だけでもよく、或いは、内部節点間の間接含意でもよい。
【０１５２】
この検証方法のフローは、参考のため引用した米国特許出願第０８／８５７，９１６号に記載されている。上記技術の一部の大筋は以下のように要約することができる。
１．二つの所与の回路の内部ゲート／出力ゲートの間で簡単な等価性を判定する。等価的なゲートは併合される。より詳細には、共通擬似変数が全ての等価的な（相補的な）ゲートペアの両方の要素に対し導入される。
【０１５３】
２．シミュレーションを用いて結果として得られた回路中の潜在的に等価的な節点を計算する。
３．潜在的に等価的なゲートの中で本当に等価性のあるゲートを決定する。二つの回路の間で等価的なゲートは併合される。
４．前のステップで決定された内部等価性を用いて出力の等価性を推定する。
【０１５４】
２個のゲートが等価（反転）であることが検出されたため併合される毎に、これらのゲートは等価（反転）ゲートとしてマークされる。このようなゲートには、ＢＤＤ構築中に擬似変数が導入される。より詳細には、参考のため引用された米国特許出願第０８／８５７，９１６号及び米国特許第５，６４９，１６５号に記載されているように、このようなゲートのカットセットが作成される。シミュレーション中に、潜在的に等価的な節点の個数は非常に少ないことが判定された場合、或いは、ＢＤＤの構築中にＢＤＤの爆発が発生した場合、ＢＤＤサイズが検査され続け得るように付加的な分解点が導入される。分解点は、参考のため引用された J. Jain他による“Decomposition Techniques for Efficient ROBDD Construction", LNCS, Formal Methods in CAD 96, Spring-Verlag に記載されているような機能的分解手続を用いて導入され得る。かくして、分解点には、機能的分解点と、所与の回路のペアの中で等価（反転）であると判定された点とが含まれる。
【０１５５】
IV.   分割操作
Ａ．  合成
分割法が呼び出された後、グラフは以下の通り分解されたままに維持される。ＢＤＤパッケージ内の合成は、if-then-else文（ＩＴＥ）演算を用いて行われる。しかし、最後のＩＴＥ（合成）演算は行われず、最後の演算は以下の通り分解される。Ψh 分割法が呼び出された場合を想定する。以下の説明におけるシンボルを簡単化するため、ＢＤＤψh （μj ）はＢj と表記する。合成の数学的表現は以下の通りである。
【０１５６】
【数２２】
0004028107.tif 000054
【０１５７】
Ｂh ∧Ｆh=1 は所与の関数Ｆのある分割（ｐ1 ）を表現し、
【０１５８】
【外３２】
0004028107.tif 000055
【０１５９】
は関数Ｆの別の分割（ｐ2 ）を表現する。両方の分割は機能的に直交している。上記の各分割は独立した関数であると考えられ、上記の分解及び分割処理は再び再帰的に実行されるが、Ｆ（μi ）は、Ｂh ∧Ｆh=1 によって置換される。
任意の分割、例えば、分割ｐ1 に対し、ＢＤＤ  Ｂh ∧Ｆh=1 が爆発を伴うことなく計算できるならば、合成された順序付ＢＤＤ（ＯＢＤＤ）が作成される。さもなければ、ｐ1 は、ＢＤＤ  Ｂh とＢＤＤ  Ｆh=1 との間の記号論理積によって表現される。これは、分解分割記号列であり、後続のDYNAMIC ＿BDD ＿PARTITION() の再帰的呼出はこの分解分割記号列上で作用する。そこで、ｐ1 から得られたＯＢＤＤ内の残りのｋ−ｈ個のＢＤＤψh=1 ，．．．，ψk 、或いは、その分割記号列が合成される。
【０１６０】
次に、ある種のＢＤＤψq （μj ）の合成に起因して、分解分割記号列に関して分割法が呼び出されるとき、ψq （μj ）のＢＤＤとの記号論理積と、ψq （μj ）の合成が行われた分解分割記号列（論理積ブール表現）も必要とされる。かくして、分解分割記号列の長さが成長する。任意の分枝に沿った繰り返しの終了時に、結果的に生じた分解分割記号列は、ＢＤＤのアレイ（Ａd ）の要素として記憶される。このアレイの各要素は、このアレイの他の全ての要素と直交する。
【０１６１】
二つのＢＤＤ  Ｂ１とＢ２の間の記号論理積は、実際の論理積を実行するのではなく、将来の先のある点まで結果を延期する。このため、Ｂ１とＢ２の間の実際の論理積である新しいＢＤＤ  Ｂ３を作成する代わりに、記号論理積アレイ  symbolic＿conjunction ＿array Ａ1 が作成される。Ａ1 には、３個の別々の要素：ＢＤＤ  Ｂ１、ＢＤＤ  Ｂ２及び論理積演算が含まれる。記号論理積アレイＡ1 は関数を明示的に表現し、この関数ｆ（Ａ1 ）は実際にＢ１とＢ２の間でＡＮＤ演算を実行することにより得られる関数と等価的である。
【０１６２】
次に、あるＢＤＤ  Ｂ４をＡ1 ＝［Ｂ１，Ｂ２，ＡＮＤ］によって表現された関数と論理積する必要がある場合、Ａ2 ＝［Ｂ１，Ｂ２，Ｂ４，ＡＮＤ］である結果を生成する。このように、記号論理積アレイの長さは成長する。また、記号論理積アレイＡ1 にＧが含まれる場合、計算結果として記号論理積アレイＡnew ＝［Ｂ１（Ｂ１内で合成されたＧ），Ｂ２（Ｂ２内で合成されたＧ），ＡＮＤ］が得られ、ここで、Ｂ１（Ｂ１内で合成されたＧ）は、ＢＤＤ  Ｂ１内でＢＤＤＧを合成することを意味する。
【０１６３】
図１６には、分解分割記号列αが既に存在する場合に、分解分割記号列（以下、ＤＰＳと略記する場合がある）に対する手続のフローチャートが示されている。分解分割記号列αは、擬似変数ｇ及びＢＤＤ（ｇ）を含む。ステップ１６０において、ＢＤＤ  Ｂa がＢＤＤ（ｇ）と、ｇが１である場合のＤＰＳ  αとの記号論理積に一致するとき（Ｂa ＝ＢＤＤ（ｇ）∧ＤＰＳ（α）g=0 ）、ＢＤＤ  Ｂa が爆発したかどうかが判定される。爆発が発生していないとき、ＤＰＳ  αa は、ステップ１６１において、ＢＤＤ  Ｂa と一致するようにセットされる（ＤＰＳ  αa ＝ＢＤＤ  Ｂa ）。爆発が発生したとき、ステップ１６２において、ＤＰＳ  αa は、ＢＤＤ（ｇ）と、ｇが１である場合のＤＰＳ  αとの記号論理積に一致するようセットされる（αa ＝ＢＤＤ（ｇ）∧ＤＰＳ（α））。ＤＰＳ  αb は、ステップ１６３、１６４及び１６５において、ＢＤＤ（ｇ）の代わりに、
【０１６４】
【外３３】
0004028107.tif 000056
【０１６５】
と、ｇが０に一致する場合のＤＰＳ  α及びｇが１に一致する場合のＤＰＳ  αとを用いて同様に決定される。
記憶された分解分割記号列は、種々のψq （μj ）と、部分的に合成されたＦ（μj ）と一致するＢＤＤとの論理積である。関数Ｆがブールの０に一致するとき、このアレイの各要素は全て０でなければならない。これは、いずれかの分割が合成されたとき、ブールの０を結果的に生ずる必要があることを意味する。各分割はＢＤＤの記号論理積である。そのため、分割ｐi は、
ｐi ＝ｆ1 ∧ｆ2 ∧．．．ｆm ∧Ｆr 
のようなｍ個のＢＤＤの論理積として表現される。各ｆi は、合成によって爆発を生じたある分解点のＢＤＤである。Ｆr は、ｋ個全部のＢＤＤが合成された後に残されるＢＤＤである。
【０１６６】
アレイＡd の中から要素ｐi が獲得とされた後、カットセット（μi ）が主入力に対応せず、かつ、検証問題に対する回答が未だ獲得されていない場合、動的ＢＤＤ分割手続DYNAMIC ＿BDD ＿PARTITION() が使用され、ｐ1 が別のカットセット（μt ）に合成される。カットセット（μt ）はカットセット（μi ）と主入力との間で選定される。この処理は、分解分割記号列ＤＰＳ内のすべてのＢＤＤが主入力変数に関して表現されるまで続けられる。
【０１６７】
かくして、実質的に上記の処理が図１５に示されている。同図において、分解分割記号列は存在するが、主入力に関して表現されていない。ステップ１５０において、分解点の合成が行われる。ステップ１５１では、結果として得られた合成ＢＤＤが爆発するかどうかを判定するため検査される。ステップ１５１及び１５２においてそれぞれ判定されるように、得られた合成ＢＤＤが爆発せず、ＢＤＤが不充分である場合、合成の処理は他の点に対して繰り返される。ＢＤＤが満足できる場合、比較中の回路は等価的ではない。しかし、ＢＤＤが爆発するとき、２個の分解分割記号列がステップ１５３で作成される。ステップ１５４において、２個の分解分割記号列が主入力に関して表現されているかどうかが判定される。検査によって、主入力に関して表現された分解分割記号列が何れも０に一致しないことが判明した場合、比較中のシステムは等価ではない。処理は、全ての分割が０であると判定されるか、或いは、比較中の回路が等価であると宣言されるまで繰り返される。
【０１６８】
図１７には、主入力に関して記述された分解分割記号列を検査する処理のフローチャートが示されている。ステップ１７０において、分解分割記号列に合成のスケジュールが立てられる。以下では、多数の適当なスケジューリング技術が説明されるが、要素の合成順序をスケジューリングするため何れの技術を使用してもよい。ステップ１７１では、分解分割記号列の全ての要素の検査が終了したかどうかが判定される。未だ終了していない場合、ステップ１７２において、分解分割記号列の別の要素が合成のスケジュールに従って合成される。合成の結果は、結果が零であるか否かを判定するためステップ１７３において検査される。結果が零である場合、分解分割記号列によって表現された分割は、ステップ１７４において零であることが宣言される。分解分割記号列の全ての要素が合成され、零の結果が得られなかった場合、分割分解記号列によって表現された分割は、ステップ１７５において非零であると宣言される。
【０１６９】
Ｂ．  等価性検査
次のステップは、二分決定グラフＢＤＤ
ｐi ＝ｆ1 ∧ｆ2 ∧．．．ｆm ∧Ｆr 
がブールの０であるかどうかを検査するステップである。この判定を行う際に二つの手続が使用される。
【０１７０】
手続１．  SCHEDULING＿PROCEDURE():  スケジューリング手続ルーチンは、ブールＡＮＤ演算をより高速に計算するような形にＢＤＤを並べる。合成の要素ｆ1 , ｆ2 ，．．．，ｆm をスケジューリングする方法を以下に説明する。
手続２．  LEARNING＿METHOD():   分解分割記号列は、分解分割記号列中のＢＤＤのサイズの合計があまり大きくない場合に回路に割り付けられる。参考のため引用したMukherjee 他による論文“VERIFUL:  Verification using Functional Learning”,EDAC 1995及びJ. Jain 他による論文“Advanced Verification Techniques Based on Learning”,DAC 1995 に記載されている方法、或いは、米国特許出願第０８／８５７，９１６号明細書に記載された技術は、この分割によって表現されるブール関数が０であるか否かを検出するため使用される。
【０１７１】
１．  スケジューリングスキーム
まず、
【０１７２】
【数２３】
0004028107.tif 000057
【０１７３】
である場合を考える。また、ｇi に対応したｂi と、Ｓ＝｛ｂ1 ，ｂ2 ，．．．，ｂn ｝を想定する。ここでの目的は、同時に２個ずつ、Ｓにおいて上記の如くのＢＤＤの演算を行うことによって既約順序付二分決定グラフＲＯＢＤＤ（ｆ）を計算することである。
以下の全てのスケジューリングスキームは、各ステップで、演算結果
【０１７４】
【数２４】
0004028107.tif 000058
【０１７５】
が小さくなるように、Ｓから２個のＲＯＢＤＤのＢi 及びＢj を選択する点で貪欲である。次に、Ｂi 及びＢj はＳから削除され、Ｂ（ｉ，ｊ）がＳに追加される。このステップは、｜Ｓ｜＝１になるまで繰り返される。
ＢＤＤのペアｂi 、ｂj と、ブール演算
【０１７６】
【外３４】
0004028107.tif 000059
【０１７７】
とが与えられた場合、結果として得られる最悪ケースのサイズのオーダーは、
Ｏ（｜ｂi ｜｜ｂj ｜）
であることが公知である。したがって、サイズベースの方式は、結果として得られるＢＤＤができるだけ小さくなるように２個の最小ＢＤＤであるｂi 及びｂj を選択する。
【０１７８】
ある状況下では、サイズだけに基づくＢＤＤの順序付けは十分ではない。２個の最小ＢＤＤのｂi 及びｂj が
【０１７９】
【数２５】
0004028107.tif 000060
【０１８０】
のようになる可能性がある。しかし、僅かに大きく、論理積サポート集合を有するＢＤＤ  ｂk 及びｂm が選択される場合、更に小さい中間ＢＤＤが獲得される。
次のＢＤＤは、演算が実行された後、非常に少ない余分な変数だけを導入するように選択される。換言すると、第１のＢＤＤ（ｂi ）は最小サポートを有し、第２のＢＤＤ（ｂj ）は、残りの全てのＢＤＤの中で、第１のＢＤＤからの最小エクストラサポートを有する。エクストラサポートは、（ｂi ）と比較して、
【０１８１】
【数２６】
0004028107.tif 000061
【０１８２】
のサポートに導入される付加的な変数の個数である。これは、ｓｕｐ（ｂi ）がｂi のサポート集合を表す場合に、
｜ｓｕｐ（ｂj ）−ｓｕｐ（ｂi ）｜
と一致する。
かくして、第１のＢＤＤ  ｂi が最小サイズ化ＢＤＤであるとき、次のスケジューリング順序が使用される。
【０１８３】
１．第２のＢＤＤ  ｂj はｂi と最大サポートを共用するＢＤＤである。
２．第２のＢＤＤ  ｂj はｂi に関して最小エクストラサポートを有するＢＤＤである。
３．集合Ｓの残りのＢＤＤは、Ｌsize及びＬsup のサイズ及びエクストラサポートによって格付けされる。最小ランク（サイズ又はエクストラサポート）を有するＢＤＤは、リストの前方にある。次に、非常に少数（例えば３個）のＢＤＤがＬsize及びＬsup の先頭から選択される。ｂi との陽的ＡＮＤ演算が上記の各ＢＤＤ上で実行される。最小サイズを生じるＢＤＤは所望のｂj である。
【０１８４】
２．合成の順序
窓関数を選択し、
【０１８５】
【外３５】
0004028107.tif 000062
【０１８６】
によって与えられるｉ番目の分割に対する分解表現を作成した後、最終ステップで、
【０１８７】
【外３６】
0004028107.tif 000063
【０１８８】
を合成する。所定の変数順序に対し、最終的なＲＯＢＤＤのサイズは一定であるが、中間メモリ必要量及び合成に要する時間は、分解点が合成される順序の強関数である。
ｆd に合成され得る候補変数毎に、結果の合成ＲＯＢＤＤのサイズを評価するコストが割り当てられる。最小コスト評価の変数が合成される。サポート集合サイズに基づく簡単なコスト関数は、実際上巧く機能する。したがって、合成後に、ＲＯＢＤＤのサポート集合のサイズの増加が最も小さい分解変数が選択される。各ステップで、合成の候補は、他の何れのΨbdd ｓの中に現れない上記の分解点に制限される。これは、参照のため引用した  A. Narayan他による“Study of Composition Schemes for Mixed Apply/Compose Based Construction of ROBDDs ”,Intl.Conf. on VLSI Design, January 1996  に記載されているように分解変数がｆd 内で１回だけ合成されればよいことを保証する。
【０１８９】
V.  アプリケーション
Ａ．  組合せ的検証
分割ＲＯＢＤＤは、２個の組合せ回路の等価性を検査するため直接適用され得る。二つの回路ｆ及びｇの夫々の出力は、単一の回路を得るためＸＯＲゲートによって組み合わされる。分割ＲＯＢＤＤは、得られた回路が充足しているかどうかを検査するため使用される。これは、全ての分割に対し、
【０１９０】
【数２７】
0004028107.tif 000064
【０１９１】
を検査するだけでよい。実際上、この技術は、ＲＯＢＤＤを採用する殆どの含意ベースの組合せ検証方法の最後の過程として容易に使用され得る。かかる方法は、参考のため引用したJ. Jain 他による“Advanced Verification Techniques Based on Learning”, DAC, p.420-426, 1995  並びに、S. Reddy他による“Novel Verification Framework Combining Structural and OBDD Methods in a Synthesis Environment ”, DAC, p.414-419, 1995に記載されている。検証は、いずれかの窓関数ｗi において、関数
【０１９２】
【外３７】
0004028107.tif 000065
【０１９３】
が充足していることが判明した場合、全ての分割を処理しなくても終了させることが可能である。
二つの回路を検証する別の方法は、等価性を確率的に検査することである。このような方法は、参考のため引用したM. Blum 他による“Equivalance of Free Boolean Graphs Can Be Decided Probabilistically in Polynomial Time”, Information Processing Letters, 10:80-82, March 1980  並びに  J. Jain 他による“Probabilistic Verification of Boolean Functions ”, Formal Methods in System Design, 1, July 1992 に記載されている。確率的検証の場合、関数ｆの極小項毎に、入力変数へのある種のランダム整数割当てｐの下で整数値に変換される。次に、全ての整数値は、ｆに対するハッシュ符号Ｈp(f)を獲得するため算術的に加算される。無視できる誤識別率で、
ｆ≡ｇ  iff   Ｈp （ｆ）＝Ｈp （ｇ）
が断定される。直和分割の場合、共通の極小項を共有する二つの分割は存在しない。したがって、各分割は別々にハッシュ化することができ、それらのハッシュ符号がＨp （ｆ）を獲得するため加算される。これは、Ｈp （ｆ）＝Ｈp （ｇ）であり、ｆ及びｇが分割され、かつ、別々にされているかどうかを検査することを意味する。
【０１９４】
【外３８】
0004028107.tif 000066
【０１９５】
の両方は、同時にメモりに存在する必要はない。また、ｆ及びｇの両方が同じ窓関数を有する必要はない。
Ｂ．  順序ＦＳＭ検証
ＲＯＢＤＤを使用する順序回路検証の重要なステップは、可到達性解析である。可到達性解析は、一般にモデル検査(Model Checking)と称され、モデル検査手続は、参考のため引用したK. L. McMillanによる“Symbolic Model Checking ”, Klumer Academic Publishers 1993 並びに  E. M. Clarke他による“Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Specifications ”, 8 TOPLAS 244-263 (1986) に記載されている。可到達性解析は、システムが初期状態から開始して到達し得る状態の集合を計算する。現在の到達した状態の集合をＲ（ｓ）、現在の状態変数ｓを次の状態変数ｓ’に関係付けるシステムの遷移関係をＴ（ｓ，ｓ’）とすると、次の状態の集合Ｎ（ｓ’）は、以下の式：
【０１９６】
【数２８】
0004028107.tif 000067
【０１９７】
を用いて評価される。次の状態の集合は、現在の状態の集合に追加され、上記の計算は定点に到達するまで繰り返される。この定点はシステムの到達可能な状態の集合を表現する。
殆どの場合に、遷移関係Ｔ（ｓ，ｓ’）を表現するＲＯＢＤＤは非常に大きくなる。これらの場合を取り扱うことは、個別のラッチの遷移関係Ｔ（ｓ，ｓ’）ｓ2 が（ある種のＴi ｓの可能なクラスタリングを用いて）別々に表現されている分割遷移関係において有用である。分割遷移関係の利用は、参考のため引用したJ. R. Burch 他による“Symbolic Model Checking: 1020 States and Beyond ”, Information and Computation, 98(2):142-170, 1992に記載されている。論理積形及び論理和形の二つのタイプの分割遷移関係について説明されている。かかる分割において、遷移関係は、
Ｔ（ｓ，ｓ’）＝
Ｔ1 （ｓ，ｓ’）∧．．．∧Ｔi （ｓ，ｓ’）∧．．．∧Ｔm （ｓ，ｓ’）
によって与えられ、各Ｔi は別個のＲＯＢＤＤとして表現される。このタイプの分割は論理積形分割既約順序付二分決定グラフの特殊ケースである。本発明の分割は、Ｔi が必ずしも個別のラッチに対応しなくてもよいので、非常に汎用的である。また、論理積形分割遷移関係の有効性は、存在記号が論理積の全体に亘って拡がっていないので制限される。最悪の場合、全てのＴi が現在の状態変数だけに依存するならば、論理積形分割遷移は使用できない。
【０１９８】
存在記号が分割全体に拡がる論理和形分割の方が興味深い。本発明によれば、所与のシステムに対する基本的な遷移モデルに制限を加えることなく遷移関係を論理和形分割することが可能である。本発明の場合、
【０１９９】
【数２９】
0004028107.tif 000068
【０２００】
となるような任意のｆi の集合が遷移関係を表現するため使用され得る。次の状態の集合は以下の式：
【０２０１】
【数３０】
0004028107.tif 000069
【０２０２】
を用いて評価され得る。この計算は、１≦ｉ≦ｋのとき、メモリ内に１個の
【０２０３】
【外３９】
0004028107.tif 000070
【０２０４】
だけを保持することにより実行できる。上記の計算において、ｆi に対応する窓関数は必要ではないことに注意する必要がある。
部分検証は、屡々検証不能になることがある順序回路を検証するために有効である。本発明の方法及びシステムを用いることにより、かかる順序回路に関する重要な情報が得られる。
【０２０５】
Ｃ．  分割を利用する部分検証
一部の回路の又はシステムの表現は分割既約順序付二分決定グラフを用いてもコンパクトに表現できない場合がある。このような場合、関数の重要な部分が全体的に構築される。例えば、２５６個の分割中の１３２個を構築することができる回路によって、プログラム実行が時間的資源の制約に起因して中止になる前に、真理値表の薬５２％を解析することが可能になる。一方、モノリシック既約順序付二分決定グラフを使用する場合、プログラム実行は有用な部分的な情報を少しも与えることなく中止になる。また、シミュレーション技術は、回路又はシステムの所与の関数表現を被覆する際に不適切である。設計に過誤が多い場合、誤りのある極小項は２個以上の分割に分布し、数個の分割を処理するだけで検出され得る可能性が高い。かくして、殆どの場合に、回路又はシステム中の誤りは、１乃至２個の分割を構築することにより検出され得る。
【０２０６】
このサンプリング方法は、組合せ形、順序形、或いは、これらの混合形の信号設計の全ての設計に適用され得る。一般的に、与えられた回路は、その状態空間の分割を作成し、分割内の設計の機能性だけを解析することによって簡単化される。
回路は分割ベクトルを当てはめることにより分割され、設計は各分割ベクトル毎に検証される。これらのベクトルは、所与の回路又はシステムの入力変数若しくは内部変数での部分割当てである。部分割当てとは、全ての変数ではなく、一部の変数への割当てを意味する。分割ベクトルは、回路がより小さい真理値表を有するように回路又はシステムを簡単化する。かくして、得られた分割システムは、モデル検査若しくは組合せ検証技術を用いて検証することが容易になる。
【０２０７】
形式的な方法を用いて検証できない非常に複雑な設計の場合、選択されるベクトルの個数は、サンプリングが計算資源に関して非常にコスト高にならないように充分に減少される。しかし、分割が実行される変数の個数は充分にあるので、各分割は所与の回路の形式的な検証が実現できる程度に充分に小さくなる。一例として、１０００個のフリップフロップと、１００個の入力変数をもち、じゅうらいのＢＤＤベース法を用いて検証することが非常に困難である順序回路の場合、１００個の分割が２０個の変数を用いて形成される。回路は、回路のブール空間の分割を検査することによって部分的に検証される。
【０２０８】
固定数の分割ベクトルは、A. Narayan他による“Partitioned-ROBDDs  --  A Compact, Canonical and Efficiently Manipulable Representation of Boolean Fuctions ”, ICCAD, November 1996  に記載されるような冗長性及び平衡性の規準に基づく分割(splitting) 変数選択法を用いて自動的に選定してもよい。特に、Ｒ個（例えば、２０個）の変数に関する分割を行いたい場合、分割変数選択法は、所与の順序回路の組合せ表現に適用され、Ｒ個の最良の変数が冗長性及び平衡性のコスト関数に基づいて自動的に得られる。換言すると、望ましい個数Ｚ個の分割は、上記のＲ個の変数上でＺ（但し、Ｚ≦２R ）回のブール割当てを（例えば、ランダムに）生成することによって作成することができる。これらのＲ回の部分割当ては遷移関係の適用毎に繰り返されるか、又は、Ｚ回の割当ては、所定のＲ個の変数に関する異なる若しくはランダムな割当てを生成することによって次の遷移関係の適用中に変更してもよい。これらのＲ個の変数は次の遷移関係の適用中に変化しても構わない。
【０２０９】
別の実施例において、ユーザは、所与の設計を検証するため使用される手動生成されたテストスイートから入力ベクトルを選択してもよい。殆どの設計にはこのようなテストスイートが設けられる。入力ベクトルの部分集合のある種の割当ては、設計に重大であることが分かっている。しかし、テストスイートは、残りの割り当てられていない変数の可能性のある全部の組合せを含むとは限らないので、一部の変数に対する割当てが与えられた場合に、設計の正しさを検証できない。本発明のシステム及び方法は、本明細書中に開示した分割技術を用いることによってこのような検証が行える。
【０２１０】
試験中の設計分野のエンジニアの専門知識が直接又は間接に利用される。エンジニア又は設計者の知識は、設計者のような明示的なガイダンスに従ってテストベクトルを選択することによって直接使用することができる。明示的なガイダンスは、遷移関係の適用若しくはＢＤＤ爆発時にサンプリング陽に使用するベクトルの選択の形を取る場合がある。設計者はＱ個の入力変数、典型的に検証用のサンプルを作成する制御変数を与える。ある数Ｚに対し、所望の個数の分割は、Ｑ個の変数上でＺ（但し、Ｚ≦２Q ）回のブール割当てを（例えば、ランダムに）生成することによって作成することができる。
【０２１１】
エンジニア又は設計者の知識は間接的に利用してもよい。手動生成された設計用テストスイートは分割ベクトルを決定するため解析され得る。特に、テストスイート内の全てのテストベクトルは、ファイル中に順序付きの形式で書き込まれ得る。ｋ個の最も一般的な部分割当てのシーケンスをテストスイート中に使用し、これらをサンプリングのため利用することができる。この場合、ある“部分割当てのシーケンス”が異なるテストベクトルの間で共通している場合、かかるシーケンスはサンプリング法のための優れた候補である。説明の便宜上、部分割当てのシーケンスである記号列ＳＴＲは、入力変数に割り当てられた入力組合せから得られ、以下の通り記述されることに注意する必要がある。
【０２１２】
partial ＿i がｉ番目の部分割当てを示すとき、
STR = partial ＿1  <from-time-frame-1>; partial ＿2 <from-time-frame-2>;  ...;  partial ＿m <from-time-frame-m>
上記のpartial ＿1 は、（次節で説明するように）回路を第１の遷移関係の適用に制限するため使用され、partial ＿2 は、第２の遷移関係の適用の際に使用され、以下同様である。Ｎ個のこのような記号列をSTR ＿1, STR＿2, STR＿3, ..., STR ＿N を集める。個数Ｎの選定は、対話的、かつ、所与のシステムの複雑さに完全に依存してもよい。例えば、１０００個のフリップフロップをもつ殆どの現在のシステムの場合、Ｎは５乃至１００の範囲内に収まると考えられる。形式的検証は、各回路Ｃi が上記並びに以下に説明する部分割当てを用いて制限された設計を表す場合に、簡単化された回路Ｃ1 ，Ｃ2 ，Ｃ3 ，．．．，ＣN の集合を検証するＮ回の異なる形式的検証をＮ回別個に実行することにより行われる。
【０２１３】
テストスイートが最初に入力変数の部分集合上の部分割当てだけに含まれる状況では、所与のテストスイート内で最も頻繁に現れる変数を見つけることができる。Ｐ個（例えば、２０個）の変数に関する分割が望まれる場合、テストスイート内でＰ個の最も共通に出現する変数が探索される。ある数Ｚに対し、所望の個数の分割は、Ｐ個の変数上でＺ（但し、Ｚ≦２P ）回のブール割当てを（例えば、ランダムに）生成することによって作成することができる。したがって、ユーザの望み次第で、選択された“部分割当てのシーケンス”のシーケンス長を、ｋが１でもよい整数を表す場合に、第１のｋ個の時間フレームに制限することが可能である。
【０２１４】
また、設計及び設計の階層の再帰的な試験が屡々行われる。このため、設計の前のテストで誤りを生じたことが判明したベクトルは適当な分割ベクトルを形成する。
Ｎ個のベクトルのシーケンスが以下のように表される場合を考える。
[V1=0, V2=1]; [V1=0, V3=1]; [V3=1; V4=1]; ...;[ Ｎ番目のシーケンス]
また、順序回路Ｍは数個の同一の組合せ回路Ｃの連結である場合を想定する。
【０２１５】
この連結が連結順に順番に回路Ｃの次の状態変数を回路Ｃの現在の状態変数に接続することによって行われることは公知である。すなわち、順序回路Ｍは、各Ｃi が同一の組合せ回路のコピーを表すとき、
M = C1 <connected-to> C2 <connected-to> C3 ...
のように表現される。かくして、時間フレーム３の回路は回路Ｃ3 として参照される。
【０２１６】
次に、状態空間トラバース検証法の適用中に、Ｖ1 ＝０、Ｖ2 ＝１と設定することにより、所与の設計を初期的に制限する。このように制限された場合、遷移関係の適用後に、ある状態Ｓ1 に到達する。状態Ｓ1 に到達後、Ｖ 1＝０、Ｖ3 ＝１が設定され、遷移関係が適用されて状態Ｓ2 に到達する。状態Ｓ2 に到達した後、Ｖ3 ＝１、Ｖ4 ＝１が設定され、状態Ｓ3 に到達するように遷移関係が適用される。この手続は状態Ｓn に到達するまで繰り返される。かくして、状態がＳN によって獲得される状態に対し、システムの全特性が検証できる。
【０２１７】
また、一部の遷移関係の適用の際に、状態空間Ｓi を表現するＢＤＤが爆発した場合、このＢＤＤは、手動（対話的）により多くの入力変数に値を与える（拘束する）ことによって、或いは、到達した状態空間の一部を放棄することによって分割される。このような分割後に、ＢＤＤベース解析をこれ以上続けられない、或いは、固定点に到達したという理由のため計算を終了する決定がなされるまで到達性解析が続けられる。
【０２１８】
このような方法で、所与の設計の機能性の制限された一部だけを検証することによって、非常に大きい空間状態の中のより大きい部分が処理される。分割既約順序付二分決定グラフは、空間的／時間的資源、すなわち、機能性被覆に顕著な制御性が得られる。かくして、検証実験の成功は、分解のパラメータ及び作成されるべき分割の個数を変更することによって保証され得る。
【０２１９】
Ｄ．  フィルタアプローチにおける用途
本発明の分割検証技術は、米国特許出願第０８／８５７，９１６号明細書に記載されたフィルターアプローチにも適用される。フィルタアプローチは、回路又はシステムを検証するため通信試験／検証技術の組合せを利用する。本質的に、より簡単かつ高速である技術の方が回路を検証又は変更するため最初に使用される。簡単かつ高速である技術の方がこの回路を検証できない場合、この技術の適用結果がより複雑かつコスト高である検証技術に渡される。最も巧妙な技術とは、充分な時間及びメモりが与えられた場合に、他の検証技術の助けを借りることなく回路を検証することができる技術である。このような枠組みにおいて、本発明の分割二分決定グラフ技術はコア技術である。
【０２２０】
Ｅ．  既約順序付二分決定グラフパッケージの並列実装
本発明のシステム及び方法は、既約順序付二分決定グラフを構築するため必要とされる資源を超１次的（若しくは指数関数的）に減少させる。また、各分割は独立であり、極小の計算オーバーヘッドで異なるプロセッサ上にスケジューリングすることができる。各分割は別々に順序付けられ、動的再配列の全能力を利用することができる。
【０２２１】
【発明の効果】
上記説明した通り、本発明によれば、ブールの回路及びシステムの検証の際に多数の零点が得られる。従来検証できなかった多数の回路及びシステムの等価性を検査することができる。
上記の通り、幾つかの特定の実施例を参照して本発明の説明を行ったが、当業者は種々の付加的な変形及び変更をなし得ることは明らかである。そこで、本発明は実施例に記載された態様以外の態様でも実施できることに注意する必要がある。したがって、本発明の実施例は全ての点に関して制限ではなく例示であり、本発明の範囲は上記実施例の説明ではなく特許請求の範囲の記載によって示されるていると考えられるべきである。
【図面の簡単な説明】
【図１】ディジタル論理回路のトポロジーを説明する論理設計図である。
【図２】図１に示された回路の二分決定グラフである。
【図３】図２に示された二分決定グラフの既約二分決定グラフである。
【図４】ディジタル論理回路のトポロジーを説明する論理設計図である。
【図５】図４に示された回路の入力ワイヤＮ１０に対する二分決定グラフである。
【図６】図４に示された回路の入力ワイヤＮ１１に対する二分決定グラフである。
【図７】図４に示された回路の入力ワイヤＮ１２に対する二分決定グラフである。
【図８】図４に示された回路の出力ワイヤＮ１３に対する二分決定グラフである。
【図９】擬似変数を組み込む二分決定グラフである。
【図１０】図９の二分決定グラフの第１の分割二分決定グラフである。
【図１１】図９の二分決定グラフの第２の分割二分決定グラフである。
【図１２】本発明の分割検証技術の上位レベルフローチャートである。
【図１３】本発明の分解点の判定方法を説明するフローチャートである。
【図１４】本発明の分解表現を構築する間に二分決定グラフの爆発を判定する技術を説明するフローチャートである。
【図１５】本発明の検証及び分解分割記号列形成技術を説明するフローチャートである。
【図１６】本発明の分解分割記号列検査技術を説明するフローチャートである。
【図１７】本発明の分解分割記号列組合せ技術を説明するフローチャートである。
【図１】
0004028107.tif 000071
【図２】
0004028107.tif 000072
【図３】
0004028107.tif 000073
【図４】
0004028107.tif 000074
【図５】
0004028107.tif 000075
【図６】
0004028107.tif 000076
【図７】
0004028107.tif 000077
【図８】
0004028107.tif 000078
【図９】
0004028107.tif 000079
【図１０】
0004028107.tif 000080
【図１１】
0004028107.tif 000081
【図１２】
0004028107.tif 000082
【図１３】
0004028107.tif 000083
【図１４】
0004028107.tif 000084
【図１５】
0004028107.tif 000085
【図１６】
0004028107.tif 000086
【図１７】
0004028107.tif 000087