JP4334061B2 - サンプリングベースの順序付き二分決定グラフの変数順序決定方法 - Google Patents
サンプリングベースの順序付き二分決定グラフの変数順序決定方法 Download PDFInfo
- Publication number
- JP4334061B2 JP4334061B2 JP15429199A JP15429199A JP4334061B2 JP 4334061 B2 JP4334061 B2 JP 4334061B2 JP 15429199 A JP15429199 A JP 15429199A JP 15429199 A JP15429199 A JP 15429199A JP 4334061 B2 JP4334061 B2 JP 4334061B2
- Authority
- JP
- Japan
- Prior art keywords
- decision graph
- binary decision
- variable
- variable order
- order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【発明の属する技術分野】
本発明は、超大規模集積回路の設計、テスト及び検証に係わり、特に、順序付二分決定グラフの変数順序を決定するシステム及び方法に関する。
【0002】
【従来の技術】
二分決定グラフ(BDD)は、CADに関連した問題を解法するため使用される。上記問題の中には、合成問題、ディジタルシステム検証、プロトコル検証、及び、回路の正当性の概括的な検証が含まれる。例えば、図1には、第1のORゲート11、第2のORゲート13及びANDゲート15を含む回路が示されている。第1のORゲート11は入力N1及びN2を有する。第2のORゲート13は入力N2及びN3を有し、入力N2は二つのORゲートの間で共用される。ANDゲート15は出力N6を有する。このとき、ANDゲート15の出力N6は、ブール関数
N6=(N1 OR N2) AND (N2 OR N3)
によって表現される。
【0003】
この回路の二分決定グラフBDDは図2に示されている。BDDは、頂点とも称される節点と、分枝とにより構成される。更なる分枝が延びていない節点は終端節点又は端点と称される。この二分決定グラフは、各入力がBDDの一つのレベルだけに出現するように制限されているので、順序付二分決定グラフ(OBDD)である。この二分決定グラフは、図3に示されるように既約順序付二分決定グラフ(ROBDD)に既約させてもよい。順序付二分決定グラフを既約する規則は従来技術において公知である。既約順序付二分決定グラフは、ユニーク、すなわち、標準形である点が重要である。従って、二つの順序付二分決定グラフが同一の既約順序付二分決定グラフに既約されるとき、これらの順序付二分決定グラフによって表現された回路は等価である。
【0004】
殆どのアプリケーションでは、既約順序付二分決定グラフは、参考のため引用したR. E. Bryantによる論文”Graph-Based Algorithms For Boolean Function Manipulation”, IEEE Trans. Computer C-35(8), 667-691, August 1986に記載されたApply 手続のある種の変形を用いて構成される。Apply 手続を用いると、ゲートgに対する既約順序付二分決定グラフはゲートgの入力の既約順序付二分決定グラフの記号操作によって合成される。所定の回路に対し、回路のゲートは、所望の出力ゲートの既約順序付二分決定グラフが構成されるまで、深さ優先(縦型)で処理される。
【0005】
VLSIのCAD並びに他のコンピュータ科学の分野における多数の問題は、ブール関数を用いて定式化することができる。従って、既約順序付二分決定グラフは等価性検査を行うため有効である。しかし、コンピュータ支援解法及び等価性検査を行う際の中心的課題は、等価性検査が効率的に行えるように簡潔なブール関数の表現法を見つけることである。既約順序付二分決定グラフは効率的に操作することが可能であり、上記の如く標準形である。殆どの実際的な関数の場合に、既約順序付二分決定グラフは、サイズ(メモリ空間)及び計算時間の両方の点で経済的である。そのため、既約順序付二分決定グラフは種々のCAD問題を解決するための選択候補のブール表現法として頻繁に使用される。
【0006】
しかし、既約順序付二分決定グラフは常に経済的であるとは限らない。実際的な関心のある大半の場合に、ブール関数によって記述された回路又はシステムを表現する既約順序付二分決定グラフは、回路又はシステムへの主入力(PI)の数に指数関数的な関係のある空間を必要とする。このため、等価性の解法はNP困難問題になる。メモリ或いは計算時間の両方の面に関して大きい空間が要求されるため、既約順序付二分決定グラフを用いて解法することができる問題の複雑さに制約が課される。
【0007】
二分決定グラフのサイズは、とくに、変数が推定される順序に依存する。例えば、ブール関数
a1 ・b1 +a2 ・b2 +a3 ・b3
は、変数順序a1 ,b1 ,a2 ,b2 ,a3 ,b3 を使用する8節点二分決定グラフによって表現され得る。しかし、a1 ,b1 ,a2 ,b2 ,a3 ,b3 の変数順序を使用することにより、16節点を有する二分決定グラフが得られる。優れた変数順序を決定することは重要な問題である。実際上、n!通りの異なる入力変数順序を有するn変数の関数の最適変数順序を決定することは、NP困難問題である。
【0008】
優れた変数順序を決定するための解決法は、静的アプローチと動的アプローチの二つのグループに分類される。静的アプローチの場合、変数順序は決定され、二分決定グラフを構築する処理を通じて使用される。動的アプローチの場合、変数順序は二分決定グラフを構築する間に変化する。
静的アプローチの場合には頻繁に、変数順序が変数の位相的な近似を決定するため深さ優先探索又は幅優先探索を用いて決定される。換言すれば、変数は、回路の構造的記述内で最も自然に分類されたように見える形式で選択される。しかし、静的アプローチは殆どの場合に成功しない。静的な順序付けアプローチが成功しない一つの理由は、適切な関数の解析が行われないことである。
【0009】
動的アプローチは、二分決定グラフが一般的に主入力からはじめて主出力まで節点毎に拡張されて構築されることを利用する。換言すれば、中間二分決定グラフは、最終的に主出力に対する二分決定グラフが構築されるまで、回路の各節点に対し構築される。動的アプローチの場合、変数順序は、ある種の費用関数(結果として得られる二分決定グラフのサイズを表す場合が多い)が最小化されるように、中間節点で入れ替えられる。動的アプローチの一例はシフトに基づくシフトベース式アプローチである。シフトベース式動的順序付けスキームにおいて、変数は順序付けリスト内の各位置に連続的に移動(シフト)される。変数は、次に、変数順序付けの位置が割り当てられ、これにより、最小のグラフサイズが得られる。この処理はグラフ内の各変数に対し繰り返される。
【0010】
しかし、動的変数順序付けアプローチは失敗する場合が多い。一つの問題は、このシフトアプローチが結果的に変数順序付けを生じさせることであり、この結果的に生じた変数順序付けは、動的再順序付けの機構に起因して、実現可能な変数順序付けを小さいサイズの二分決定グラフが得られない変数順序に拘束する。たとえば、シフトベース式動的再順序付けスキームにおいて、変数を変数順序の一方向に関する変数のシフトは、このシフトによって二分決定グラフのサイズが徐々に増大する場合に停止される。このようなスキームの場合、変数、或いは、変数の集合は、本質的に、変数順序内の位置の帯の範囲内に制約される。その理由は、この帯の直ぐ外側の位置が二分決定グラフのサイズを増大させるためである。しかし、変数の非常に大きいシフトを行うことより、ある種の点で、二分決定グラフは、位置の帯の範囲内に制約された変数を用いて実現可能な二分決定グラフよりも著しく小さい二分決定グラフが得られる。かくして、関数及び使用される初期変数順序に依存して、その関数に対する二分決定グラフのサイズは、この関数に対し小さいサイズの二分決定グラフを構築することができるとしても、サイズのローカルミニマムを表現するサイズに抑え込まれ、このサイズは非常に大きいため二分決定グラフを効率的に構築し得ない。その上、シフト式アプローチによって、最終的な小さいサイズの二分決定グラフが得られるとしても、このシフト式アプローチは変数再順序付けを行うためには過剰な量の時間を要する。
【0011】
また、動的再順序付け技術は全てのアプリケーションで利用できるわけではない。例えば、GBDD、IBDD及びXBDDのようなある種の代替的な二分決定グラフ表現は、変数順序が二分決定グラフの構築中に変化しないことを必要とする。さらに、ある種のテスト生成アプリケーション及びSAT解法器は、探索を開始するため使用される入力変数の順序を決定することを重視する。したがって、動的再順序付けパッケージのため良好な静的変数順序を決定する必要性、並びに、良好な初期変数順序を決定する必要性がある。
【0012】
【発明が解決しようとする課題】
本発明は、回路設計を表現しブール空間を形成するブール関数用の二分決定グラフを構築するため変数順序を決定する方法の提供を目的とする。
また、本発明は、回路設計のブール空間を定義するブール関数を表現する二分決定グラフを構築する方法の提供を目的とする。
【0013】
【課題を解決するための手段】
本発明の変数順序を決定する方法は、ブール関数を表現するブール空間のサンプルを形成し、複数のテスト変数順序を用いて上記サンプルに対しテスト二分決定グラフを構築し、上記テスト二分決定グラフのサイズに関する情報を用いて二分決定グラフを構築するための変数順序を決定する。
【0014】
一実施例において、ブール空間のサンプルは部分割当てを用いて形成される。他の実施例において、ブール空間のサンプルは抽象二分決定グラフを用いて形成される。他の実施例において、ブール空間のサンプルは分解された二分決定グラフを用いて作成される。他の実施例において、関数のサンプルは回路のより小さい部分を用いて作成される。
【0015】
ブール部分空間を形成する際に、パラメータはサンプルの形成に影響を与えるため使用される。これらのパラメータには、抽象のため使用される主入力変数の集合に関係するパラメータが含まれ、一実施例において、主入力変数の集合は回路設計の一部分をシミュレーションすることにより決定される。他の実施例において推定されるパラメータは、二分決定グラフが閾値レベルを下回るとき、或いは、二分決定グラフの動作が所与のコンピュータ資源の量を超えるとき、ランダムに判定される分解点の集合である。
【0016】
また、上記本発明による二分決定グラフを構築する方法の一実施例は、ブール空間の複数の部分空間を検査することにより回路設計を前処理し、上記ブール部分空間の検査に基づいて変数順序を決定し、初期変数順序の中の上記変数順序を用いて上記ブール関数を表現する二分決定グラフを構築する。
【0017】
【発明の実施の形態】
以下、本発明の殆どの付随的な特徴は、以下の詳細な説明を参照し、添付図面と共に斟酌することにより、容易に認められると同時により明瞭に理解される。添付図面を通じて、同じ参照記号が付された部品は同じ部品を示す。
I. 概要説明
本発明は、回路又は関数の二分決定グラフを構築するため使用される変数順序を決定するためサンプリング技術を使用する。本発明による処理は、回路又は関数を表現するブール空間のサンプルを取得し、ブール空間のこれらのサンプルに対し良好な変数順序を決定する。ブール空間のサンプルの代わりに、別のアプローチは回路の一部分を使用し、良好な変数順序を決定するためそれらの一部分を解析する。換言すれば、この処理は、多種の変数順序を用いて関数の一部分に対する二分決定グラフを構築し、得られたグラフサイズ又は二分決定グラフと関連した他のパラメータに基づいて、関数又は回路の全体に対する二分決定グラフを構築するため最良の変数順序を選択する。多種の変数順序を用いて、回路又は関数を表現するブール空間の多種の異なる部分に対し、二分決定グラフを構築することにより、良好な変数順序に関する情報が容易かつ直ちに得られる。この処理によって選択された最良の変数順序は、回路全体に対する二分決定グラフを構築するため、静的変数順序、若しくは、動的変数順序処理における初期変数順序として使用される。
【0018】
回路又は関数を表現するブール空間は、1個以上の多種のサンプリング技術を用いてサンプリングされる。サンプリング技術は検査用のブール空間の一部分を選択する。一実施例において、サンプリングは部分割当てを用いてブール空間の窓を作成することにより行われる。部分割当ては、回路への主入力の一部を割り当てられた値に制限する。主入力の一部への値の割当ては回路を簡単化し、値が割り当てられた主入力に依存する主出力に対し二分決定グラフを簡単化する。
【0019】
抽象二分決定グラフは、他の実施例において、回路又は関数を表現するブール空間の窓を設けるため使用される。抽象二分決定グラフの場合、一定の変数に関係した節点は、抽象関数に基づいて等価クラスに分類される。抽象二分決定グラフは、等価クラス全体の代表として等価クラスから1個の節点を選択することにより形成される。
【0020】
他の実施例において、分解二分決定グラフはサンプリング窓を得るため使用される。分解二分決定グラフは、関数又は回路の内部ゲートに疑似変数を導入することにより形成される。この場合、内部ゲートは分解点を形成する。分解点は、回路又は関数に対する疑似主入力として使用される。
本発明の処理は4段階に分割することができる。これらの段階には、推定段階、候補順序段階、テスト段階及び進展段階が含まれる。
【0021】
本発明によるこの処理のフローチャートは図4に示されている。図4に示される如く、ステップ30において推定段階の一部として、この処理は、サンプルとして使用されるべきブール部分空間に関係したパラメータを決定する。一般的に、推定段階において、この処理は、候補変数順序を形成するため初期に作成されるべき分割がどの分割であるか、並びに、その分割の個数を決定する。
【0022】
候補順序段階を表現するステップ50において、この処理は、推定段階中に決定されたブール部分空間の動的再順序付けを使用し、一般的には深さ優先探索によって生成された初期変数順序を使用して二分決定グラフを作成、構築する。各部分空間毎に、この処理は、少なくとも一つの二分決定グラフを構築する。異なる候補変数順序が、異なる部分空間を表現する二分決定グラフ並びに動的再順序付けの影響に起因して構築された二分決定グラフ毎に作成される。
【0023】
ステップ70において、この処理は、テスト段階の一部として、無効な変数順序を退ける。これは、候補順序選択段階で獲得された変数順序、又は、変数順序の部分集合を用いて種々の部分空間に対する二分決定グラフを構築することにより実現される。新しいサンプルに対する二分決定グラフを構築する際に無効な変数順序は除去される。
【0024】
ステップ90における進展段階の一部として、この処理は、先行する段階で与えられた変数順序を改良する。これは、変数順序を別のサンプルに適用し、これらのサンプルに対する二分決定グラフを構築しながら変数順序を動的に再順序付けることにより実現される。進展段階の結果に基づいて、最良の変数順序を表現するサンプリング推定順序が選択される。サンプリング推定順序は、動的再順序付けが存在する場合に、若しくは、静的順序として、最終的な二分決定グラフを構築するための初期順序として使用される。
【0025】
II. 抽象二分決定グラフを使用する方法
抽象二分決定グラフは、関数のためのブール空間の窓(ウィンドウ)若しくは分割を表現する二分決定グラフである。そのため、抽象二分決定グラフは回路設計若しくは関数のブール部分空間を形成するため使用される。抽象二分決定グラフは、同一抽象値を備えた節点が併合される二分決定グラフである。抽象二分決定グラフ、並びに、抽象二分決定グラフの構成法は、参考のため引用されたS. Jha他による文献:Equicalence Checking Using Abstract BDDs, Proceedings of IEEE International Conference on Computer Design: VLSI in Computers & Processors (1997)に記載されている。抽象値は、抽象関数を用いて判定される。抽象関数は、nがブール変数の個数を表し、Dが任意のドメインを表すとき、
h:{0,1}n →D
のように定義される。したがって、二分決定グラフにおいて、所与の変数の全ての発生にユニークなレベルが割り当てられるとき、ユニークなレベル上の節点は、一定の抽象関数によって生成された値に関して複数の等価クラスに分類される。各等価クラスから代表節点が節点の等価クラス全体を表す節点として選択され、この代表節点より下位の二分決定グラフは、節点の等価クラス全体に対する代表グラフとして使用される。一実施例において、グラフのトラバース(横断)中に等価クラス内で最初に到達した節点は代表節点として選択される。整合性のため、抽象が異なるレベルに適用された場合に部分木構造が保存される。同時に、整合性は、異なるレベルで抽象を行う複雑さが抽象関数のドメインのサイズに関する多項式で表されることを保証する。
【0026】
例えば、ブール関数
【0027】
【数1】
【0028】
の二分決定グラフが図5に示されている。図5に示された二分決定グラフは、分枝により接続されたルート、節点及び終端を含む。同図において論理0の分枝は破線で示されている。論理1の分枝は実線で示されている。図5の二分決定グラフはルートR11を有する。ルートR11は節点N11に接続された論理0分枝と、節点N12に接続された論理1分枝とを有する。節点N11は、終端T11に接続された論理0分枝と、節点N13に接続された論理1分枝とを有する。節点N12は、節点N14に接続された論理0分枝と、終端T12に接続された論理1分枝とを有する。節点N13は、終端T11に接続された論理0分枝と、終端T12に接続された論理1分枝とを有する。節点N14は、終端T11に接続された論理1分枝と、終端T12に接続された論理0分枝とを有する。
【0029】
図6は、図5に示された二分決定グラフを均一化した後の二分決定グラフを示す図である。均一化は、均一化される変数レベルの直上のレベルからの各分枝がそのレベル上の節点に達するように、均一化される変数レベルに対し十分な節点を挿入することにより二分決定グラフを変更する。したがって、ルート、節点、終端、破線で示された論理0分枝、及び、実線で示された論理1分枝を有する図6の二分決定グラフは、ルートR21を含む。ルートR21は、節点N21に接続された論理0分枝と、節点N23に接続された論理1分枝とを有する。節点N21は、節点N25に接続された論理0分枝と、節点N27に接続された論理1分枝とを有する。節点N23は、節点N29に接続された論理0分枝と、節点N31に接続された論理1分枝とを有する。節点N25、N27、N29及びN31は、終端T21及びT23に繋がる。節点N25は、終端T21に接続された論理0及び論理1の両方の分枝を有し、節点N31は、終端T23に接続された論理0及び論理1の両方の分枝を有する。節点N27は、終端T21に接続された論理0分枝と、終端T23に接続された論理1分枝とを有する。逆に、節点N29は、終端T23に接続された論理0分枝と、終端T21に接続された論理1分枝とを有する。
【0030】
図7に示された二分決定グラフは、対称性のある抽象関数h=a+bを用いて図6の二分決定グラフを抽象化した後の二分決定グラフである。ab=01及びab=10は、同一の抽象値を有するので、ab=01及びab=10の部分木の中の一方の部分木は捨てられる。したがって、図7において、ルートR51は、節点N51に接続された論理0分枝及び節点N53に接続された論理1分枝を有する。節点N51は、節点N55に接続された論理0分枝及び節点N57に接続された論理1分枝を有する。節点N53は、節点N57に接続された論理0分枝及び節点N61に接続された論理1分枝を有する。節点N55は、終端T51に接続された論理0及び論理1の両方の分枝を含み、同時に、節点N61は、終端T53に接続された論理0及び論理1の両方の分枝を含む。節点N51及び節点N53に接続された節点N57は、終端T51に接続された論理0分枝及び終端T53に接続された論理1分枝を有する。節点N59は、節点N55、N57及びN61と同じレベルにあるが、この二分決定グラフ内の何れの節点にも接続されてない。節点N59は、終端T53に接続された論理0分枝及び終端T51に接続された論理1分枝を有する。
【0031】
図8は、図7の抽象二分決定グラフを既約した後の二分決定グラフを示す図である。既約は、節点を同型部分木と併合し、冗長節点を除去する処理である。したがって、図7において、ルートR71は、節点N71に接続された論理0分枝と、節点N73に接続された論理1分枝とを有する。節点N71は、終端T71に接続された論理0分枝と、節点N75に接続された論理1分枝とを有する。節点N73は、節点N75に接続された論理1分枝と、終端T73に接続された論理1分枝とを有する。節点N71及び節点N73の両方の節点に接続された節点N75は、終端T71に接続された論理0分枝と、終端T73に接続された論理1分枝とを有する。
【0032】
抽象二分決定グラフは窓サンプリング法を実現する方法を提供する。制御変数の集合が与えられた場合、抽象二分決定グラフは一定の抽象関数に従って構築される。制御変数は、回路の主入力から内部ゲートまでの最小深さを考慮して、回路を深さ優先順にトラバースすることにより決定される。かくして、抽象関数は、回路設計内の各節点毎に二分決定グラフの構築中に適用される。しかし、抽象関数は、回路のカットセットを形成する節点のような選択された節点だけに適用される。次に、抽象二分決定グラフは、一実施例では動的再順序付け共に通常の二分決定グラフ演算を用いて主出力に伝搬される。通常、抽象二分決定グラフは、元の二分決定グラフよりもかなり小さい。抽象二分決定グラフの機能性(充足集合)は、与えられた関数(または、その充足集合)の部分集合を獲得する。かくして、抽象二分決定グラフ上の良好な順序は、元の関数に対する二分決定グラフを構築するため有用である可能性が高い。
【0033】
A. 推定段階について
図9は、抽象化の原理を用いて形成された部分空間に対する推定段階サブプロセスのフローチャートである。推定段階サブプロセスは抽象変数及び抽象関数を決定する。ステップ151において、このサブプロセスは、深さ優先探索(DFS)を行う。深さ優先探索、並びに、深さ優先探索を実施する方法は、周知技術である。深さ優先探索により、主入力、すなわち、変数の順序付きリストが得られる。
【0034】
別の形の深さ優先探索を使用してもよい。例えば、他の実施例において、主入力変数の順序付きリストは、プライオリティ深さ優先探索を用いて生成される。深さ優先探索の場合、回路又は関数は、主出力から主入力へトラバースされる。トラバース中に多重入力を備えたゲートが存在した場合、1個の入力が解析を行うことなくさらにトラバースを続ける最初の配線として選択される。プライオリティ深さ優先探索は、ゲートへの多数の入力に優先順位を付ける。プライオリティ深さ優先探索の場合、主入力に最も近いゲートへの入力がトラバースのため選択される。主入力若しくは主出力からの距離は、均一化された回路を用いて決定され、回路若しくは関数の均一化手法は周知技術である。回路設計の主入力から主出力までのパスを均一化することにより、上記の距離は、主入力に最も近い当該入力から主入力までのゲートを計数して決めることができる。
【0035】
ステップ153において、この推定段階サブプロセスは、リスト中の最初のkこの変数に割り当てられた値を用いて回路をシミュレーションする。このようなシミュレーションを実行できる回路シミュレータは、普及し、周知技術である。回路シミュレーションは、抽象化プロセスで使用されるべき変数の個数に関する情報を与える。ステップ153の回路シミュレーション中に、サブプロセスは、特に、回路内に存続するゲートの数を注意することにより、k個の変数に値を割り当てることが回路に与える影響を観察する。ここで、回路内に存続するゲートは、値をk個の変数に割り当てても出力値が完全には決定されないゲートである。
【0036】
ステップ155において、このサブプロセスは、回路内に存続するゲートの個数が部分空間選択のための適当な基準を与えるかどうかを決定する。図9に示されたサブプロセスにおいて、値kの初期選択は、変数の大部分に値が割り当てられるような値である。したがって、回路には非常に少数のゲートしか存続しないと考えられる。kの値が徐々に減少し、値が割り当てられる変数が減少すると共に、回路内に存続するゲートの個数は増加する。図9に示された実施例の場合、部分空間選択のため適切な基準を与えるゲートの個数は、kの値が減少して存続するゲートの個数が劇的に増加したときに、存続しているゲートの個数である。しかし、別の基準を使用してもよく、例えば、予め定められたゲートの個数、予め定められたゲートの割合、或いは、kの値への変更が回路内に存続するゲートの個数に著しい変化を生じさせないときなどの基準が用いられる。或いは、kが零を含む小さい数に初期設定され、漸増させる別の方法でもよい。この別の方法の場合、最終的なkの値は回路のゲート数が著しい減少傾向を示す際のkの値である。部分空間のサイズ、すなわち、適切なゲート数は、本発明の処理を実行する際に使用されるメモリサイズ、処理速度及び処理能力のような物理パラメータに依存する。
【0037】
サブプロセスによって、存続するゲート数が適当ではないことが判定された場合、この処理はステップ157においてkの値を変更する。回路内に存続するゲート数が非常に少ない場合、このサブプロセスはkの値を減少させ、回路内に存続するゲート数が非常に多数である場合、この処理はkの値を増加させる。この処理によって、ステップ155において存続するゲートの個数が適当であると判定された場合、このサブプロセスはステップ159において抽象関数を選択する。
【0038】
直観的に、抽象関数は多数の種々の部分空間によって構成されるべきである。同時に、これらの部分空間は元の回路の性質を反映すべきである。表Iには、5個の潜在的な抽象関数が与えられている。表Iにおいて、P及びPi は素数であり、n、q、p及びkは整数であり、Xi はブール変数である。当業者は、リストに掲載されていない多数の既知の抽象関数を使用することができる。
【0039】
【表1】
【0040】
B. 候補順序選択段階について
候補順序選択段階において、m個の異なる抽象関数が先頭のk個の変数に適用され、抽象二分決定グラフが動的再順序付けをオン状態にして構築される。この処理は、候補変数順序としてのm通りの変数順序を生成する。一実施例において、約2〜3個のサンプルが取り上げられ、上記の変数順序を拒絶、改良するため次の段階で使用される。
【0041】
図10は候補順序段階のサブプロセスのフローチャートである。ステップ51において、このサブプロセスは、推定段階中に識別された抽象関数の中の1個を選択する。ステップ55において、サブプロセスは、上述の如く、抽象関数が適用される制御変数として選択された最初のk個の変数を用いて、選択された抽象関数に対する抽象二分決定グラフを構築する。抽象二分決定グラフの構築は、深さ優先探索によって得られた変数順序を用いて始められ、動的再順序付けを使用して行われる。各抽象二分決定グラフは回路設計を表現する関数の窓又は部分空間を表現する。したがって、動的再順序付けの効果に起因して、各抽象二分決定グラフは、一般的に異なる最終的な変数順序を有し、最終的な変数順序は所与の抽象二分決定グラフを構築する際に使用された最後の変数順序である。各抽象二分決定グラフに対する最終的な変数順序は候補変数順序である。ステップ59において、このサブプロセスは、より多くの抽象関数を検査する必要があるかどうかを決定する。検査されるべき抽象関数が未だ残っている場合、サブプロセスはステップ51に戻り、抽象関数を選択する。さもなければ、このサブプロセスは終了し、呼出元に戻る。
【0042】
C. テスト法
候補順序段階の最後に、この処理はm通りの変数順序を決める。この処理は、x<mである場合に、不充分な変数順序を除去することによりテスト段階で、m通りの編集順序の集合をx通りの変数順序に制限する。これは、付加的な部分空間を構築するため候補変数順序を使用し、得られた二分決定グラフのサイズと、一実施例においては、二分決定グラフを構築するため必要な時間とを検査することにより実現される。
【0043】
回路フィルタスキームについて
この処理の一実施例のテスト段階において、この処理は、回路フィルタスキームを用いてm通りの変数順序の集合から無効な変数順序を削除する。回路フィルタスキームを用いることにより、処理はm個の変数順序の中から1個の変数順序を選択し、動的再順序付けをオフした状態で回路設計若しくはブール空間内のターゲット節点まで二分決定グラフを構築する。ターゲット節点は回路設計内の何れの節点でも構わない。ターゲット節点に対する二分決定グラフは、回路設計若しくは関数のブール部分空間を表現する。したがって、他のブール部分空間の形成方法を利用しても構わない。一実施例において、ターゲット節点は、回路の真ん中のような閾値レベルまでの主入力の間の節点である。他の実施例において、ターゲット節点は、ある閾値レベルにおいて、節点に接続する主入力の数が最も多い節点を見つけることにより選択される。この処理は、回路フィルタスキームを用いて二分決定グラフを構築するので、二分決定グラフが非常に大きくなり始めた場合に、このときの変数順序が無効な変数順序であると判定し、m通りの変数順序の集合からその変数順序を削除する。この処理は、m通りの変数順序の中の一つずつに対し、動的再順序付けをオフにした状態で回路設計若しくはブール空間内でターゲット節点まで二分決定グラフを構築することにより継続する。その結果として、無効な変数順序はm通りの変数順序の集合から削除され、x通りの変数順序が生成される。
【0044】
図11には、回路フィルタスキームのサブプロセスのフローチャートが示されている。このサブプロセスは、ステップ71において変数順序を選択する。また、ステップ73において、このサブプロセスはターゲット節点を選択する。ターゲット節点は、閾値レベルまでの主入力の間の領域の回路内の節点である。詳述すると、図11の処理中、ターゲット節点は最大個数の入力を有する領域内の節点であり、閾値レベルは回路の中間になるように選択される。ターゲット節点がサブプロセスによって識別された後、ステップ77において、ターゲット節点用の二分決定グラフが構築される。この二分決定グラフは、ターゲット節点までの開始点として主入力を用いることにより構築される。二分決定グラフが構築できない場合、ステップ71においてこのサブプロセスによって選択された変数順序は無視される。構築された二分決定グラフが非常に大きい場合、ステップ71においてサブプロセスによって選択された変数順序は無視される。何れの条件も成立せず、かつ、ステップ79において、このサブプロセスが未だ多数の変数順序が存在すると判定した場合、サブプロセスはステップ71に戻る。全ての変数順序がこのサブプロセスによって検査された場合、サブプロセスは呼出元に復帰し、回路フィルタスキームが終了する。
【0045】
回路フィルタスキームは、回路の部分空間を形成し、回路設計のサンプルを形成する回路サンプリング技術であるとみなされる。回路の調査が限定された他の回路サンプリングの方法を実施してもよい。例えば、回路内の一定数のレベルに関して、或いは、単に再順序付けの呼出がある所定のレベルを超えるまで回路の主出力に対する二分決定グラフを構築することは、回路ベース式サンプリングの別の例である。他のサンプリング法と同様に、回路ベース式サンプリング法は、他の全ての段階で使用され、又は、他の全ての段階を使用する。
【0046】
図12には、テスト段階の一般化された処理が示されている。図12のサブプロセスは、多数の部分空間用の二分決定グラフを構築するため各変数順序候補を使用する。大きいサイズの二分決定グラフが得られる変数順序候補は、無効な変数順序として削除される。したがって、ステップ271において、このサブプロセスは候補変数順序を選択する。ステップ273において、サブプロセスは多数の部分空間用の二分決定グラフを構築するため初期変数順序として候補変数順序を使用する。一実施例において、二分決定グラフの構築は動的再順序付けを行うことなく実施される。ステップ275において、サブプロセスは選択された候補変数順序を用いて構築された二分決定グラフを調査し、候補変数順序を用いることにより大きいサイズの二分決定グラフが得られる場合に、候補変数順序リストからこの候補変数順序を削除する。ステップ277において、このサブプロセスは、候補変数順序が未だ残っているかどうかを判定し、候補変数順序が存在する場合に、ステップ271に戻る。候補変数順序が残っていない場合、サブプロセスは呼出元に復帰する。
【0047】
実際上、サンプリングの簡単なバージョンでは、部分空間若しくは選択された部分空間の集合に対する最小サイズの二分決定グラフが得られるランダムに割り当てられた変数順序を用いてテスト段階だけを行えばよい。妥当な時間内に二分決定グラフを構築することができる回路の場合でも、このようなサンプリング技術によれば多数の有利な点が得られる。
【0048】
例えば、(ある種の合成アプリケーションのような)多数のアプリケーションにおいて、ある種の関数Fの二分決定グラフを構築するための時間T_bddは、合成を完了するための総実行時間T_totalの中の非常に僅かな部分である。
しかし、総実行時間T_totalは、二分決定グラフFのサイズに決定的に依存する。かくして、Fに対し良好な変数順序を決定する際にかなりの時間が使用されるとしても(すなわち、T_bddは倍率10で増加するとしても)、総実行時間T_totalは著しく減少するので、変数順序を決定する価値がある。
【0049】
さらに、ある種のアプリケーションの場合、有効な変数順序は、如何なる時にも存在する二分決定グラフの全部の共用表現である二分決定グラフのマネージャに必要とされる。
再順序付けが所与の二分決定グラフマネージャでトリガーされたとき、新しいマネージャの順序はサンプリングプロセスの間に計算され得る。このような場合に、サンプリングされた空間(関数)は、例えば、抽象二分決定グラフ若しくは部分割当てを使用してマネージャに関して直接計算される。
【0050】
また、二分決定グラフマネージャの当該部分(サンプル部分空間)は多数の方法で選択され得る。例えば、部分割当てx1=0,x2=1,X3=0が行われる場合を考える。この割当ては、その割当てによって得られる二分決定グラフがルート変数から発生した多数のパスによって共用された多数の節点を有する場合に、他の割当てよりも好ましいと考えられる。例えば、3個の変数を用いることにより、8通りのパスがルート変数から得られる。5通りのパスが存在する場合、x1=0,x2=1,x3=0の部分グラフに多数のノードが生じる。したがって、この部分空間は、他の部分割当てによって生成された部分空間よりもサンプリングのために適当な部分空間であることがわかる。
【0051】
テストスキームについて
テスト段階の処理の他の実施例において、この処理は、テストスキームを用いることにより、m通りの変数順序の集合から無効な変数順序を削除する。テストスキームを使用することにより、この処理はm通りの変数順序の中から一つの変数順序を選択し、動的再順序付けをオンにした状態で、新しいブール部分空間の集合に対し二分決定グラフを構築する。新しいブール部分空間の集合は、抽象関数を用いて抽象化を実行することにより決定されるが、他の部分空間形成方法を使用しても構わない。この処理は、新しいブール部分空間の集合に対し、m通りの変数順序の中の1個ずつの変数順序を用いて二分決定グラフを構築することにより続けられる。最小サイズの二分決定グラフを生成した変数順序は、この処理によって最良の変数順序であると判定される。
【0052】
平均化スキームについて
テスト段階における処理の他の実施例において、この処理は、平均化スキームを使用してm通りの変数順序から好ましくない変数順序を削除する。平均化スキームを用いることにより、この処理は、最終的な変数順序を生成するためm通りの変数順序を併合する。m通りの変数順序の併合は、平均化関数を用いる処理によって行われる。
【0053】
平均化関数の一実施例は、ブール部分空間の集合に対し、重大な若しくは大きい二分決定グラフを生成する変数順序を、同じブール部分空間の集合に対し小さい二分決定グラフを生成する変数順序に関係付ける関数である。本質的に、より多数のブール部分空間及び変数順序が使用、比較されると共に、より厳密な平均化関数を作成することができる。
【0054】
変数idの有限集合Iに関して、I上の順序は有限集合Iの要素の系列になるように定義され、何れの要素も2回以上現れることがない。i∈uなるI上の順序uに関して、iがu内に現れるとき、i∈uに対し、pos(i,u)はu内におけるiの位置(インデックス)である。
あるtと、0≦r<tなる全てのrに対し、順序ur 及び正整数値の荷重wr が与えられ、i∈Iなる各iに対し、i∈ur なるrが存在する。また、Iの各要素のランクは、以下の通り定義される。尚、各和において、rはi∈ur である値の範囲を変化する。
【0055】
【数2】
【0056】
入力の平均順序はランクの増加順にI内のインデックスとして定義される。
この定義は、荷重wr の種々の選択を用いて多数の平均化関数を定義するため使用される。
候補順序を組み合わせるには多数の選択肢が存在する。例えば、各変数順序は、共通部分文字列が各変数順序に存在する文字列とみなすことが可能である。或いは、平均順序は、文字列として決定され、種々の候補文字列内で共通「部分文字列」が検出される。また、数通りの平均順序は異なる(有効)順序を用いて計算され得る。
【0057】
また、多数の候補順序の集合、或いは、候補順序の部分集合は、他の技術を用いて組み合わせてもよい。このような技術の中の一つは、遺伝的アルゴリズムベースの技術であり、変数順序の集団が与えられ、異なる順序がより良好な順序を得るため組み合わされる。シミュレーティッド・アニーリング式最適化手法は、変数順序を改良するため適用され得る。例えば、部分二分決定グラフは、候補順序を用いて構築することが可能であり、アニーリング処理はより良好な変数順序を決定するため実行される。部分的二分決定グラフ式シミュレーティッド・アニーリングは周知技術であり、参考のため引用されたMercer他による文献、Functional Approaches to Generating Ordering for Efficient Symbolic Representations, 29th ACM/IEEE Design Automation Conference, pp.614-619 (1992)に記載されている。
【0058】
変数順序の集合は、参考のため引用されたFujii 他による文献、Interleaving Based Variable Ordering Methods For Ordered Binary Decision Diagrams, Proceedings of International Conference on Computer Aided Design, pp.38-41, 1993 に記載されているように変数順序の集合を合成する変数インターリーブ法、及び、変数追加法のような他の類似技術を用いて合成することができる。変数順序の集合を合成する別の同様な手法は、参考のため引用されたBei 他による文献、A New Heuristic Algorithm for OBDD Variable Ordering, 98 ASIC on Proceedings, pp.354-357, 1998に記載されているような適応選択的変数順序付け技術である。
【0059】
D. 進展段階について
進展段階において、テスト段階の処理によって発生された変数順序の集合から最良の順序を決定する。変数順序の更なる改良は、例えば、抽象関数又は他の方法を使用することにより形成された独立して選択されたブール部分空間内の回路のブール関数に対する二分決定グラフを構築すると共に、再順序付けパッケージへの初期順序として変数順序を使用することにより実行される。ブール部分空間は、抽象二分決定グラフを用いて抽象化を実行することにより選択される。進展段階の最終的な結果は、最終的な二分決定グラフが構築される最終的な変数順序である。
【0060】
図13には、抽象化を使用する進展段階のサブプロセスのフローチャートが示されている。変数順序は、ステップ91においてこのサブプロセスにより選択される。ステップ95において、サブプロセスは抽象二分決定グラフを構築する。ステップ95で構築された二分決定グラフは、二分決定グラフのサイズが非常に大きいかどうかを判定するためサブプロセスによって検査され、サイズが非常に大きい場合には、変数順序は、小さい二分決定グラフを作成するためサブプロセスによって再順序付けされる。再順序付け後に、二分決定グラフが構築できないか、或いは、そのサイズが依然として大きい場合に、この変数順序は廃棄される。変数順序が廃棄されない場合に、サブプロセスはステップ97において未だ残っている変数順序について検査する。未だ変数順序が存在する場合に、このサブプロセスはステップ91及び95を繰り返し実行する。一部の実施例の場合、この処理は、部分空間を形成する種々の方法、若しくは、単に異なる部分空間を用いて実行される。
【0061】
E. 構築段階について
回路のための二分決定グラフの構築は、進展段階によって生成された最終的な変数順序を使用する処理によって実行される。静的又は動的順序付け処理は、この回路のための最終的な最適二分決定グラフを作成するため初期順序としての最終的な変数順序と共に使用され得る。
【0062】
III. 分解二分決定グラフを使用する方法
分解二分決定グラフは、一部の内部節点が分解点によって置換された二分決定グラフである。最終的な二分決定グラフは、主入力及び分解点変数の両方による表現である。分解二分決定グラフは、1997年11月5日に出願された米国特許出願第08/964,904号明細書に記載され、この米国特許出願明細書は参考のため引用される。回路の分解二分決定グラフ表現は、新しい変数を、分解点と称される内部ゲートに導入し、主入力及び分解点変数の両方を出力に対する二分決定グラフを構築することにより獲得される。Gd (Ψ,X)が原関数の分解二分決定グラフ表現であり、Ψ={ψ1 ,ψ2 ,...,ψk }が関数の分解集合であると仮定する。
【0063】
ψi ∈Ψなる各分解点に対し、主入力に関するψi 並びに、(場合によっては)j<iのときに他のψj ∈Ψの機能性を表現する順序付二分決定グラフ
【0064】
【外1】
【0065】
が存在する。また、
【0066】
【数3】
【0067】
がΨ内の分解点の順序付二分決定グラフを含む配列を表現する場合を想定する。変数ψi は、合成演算:
【0068】
【数4】
【0069】
を用いてGd 内の関数
【0070】
【外2】
【0071】
によって置換してもよい。
別の値が分解集合Ψに割り当てられたとき、別の窓が獲得される。決定論的若しくはランダムに生成されたこれらの割当てに基づいて、原関数は以下のリストに記載された手続きを用いて作成される。
【0072】
【数5】
【0073】
A. 推定
推定段階は、分解点及び分解点値割当てを決定する。分解点は幾つかの方法で決定される。一実施例において、分解点はランダムに追加され、或いは、ブール演算がメモリ若しくは時間の制約を超えた二分決定グラフを生じさせると考えられるときに追加される。この分解点を説明するため、ある種のブール演算
【0074】
【外3】
【0075】
に関して、
【0076】
【数6】
【0077】
を推定する場合を考える。size()が引数関数の二分決定グラフサイズを表す場合に、
size(f)>C×[size(g)+size(h)]
かつ
size(g)>size(h)
であるならば、新しい変数ψi がgに導入される。Cはユーザによって定義されるか、或いは、自動的に設定され得る定数である。さらに、個別の順序付二分決定グラフが所定の閾値をこえるとき、分解点が追加される。かくして、分解点は、
size(f)>閾値限界
である場合に導入される。
【0078】
しかし、最終的な変数順序は分解点変数に関して表現されない。したがって、ブール部分空間は値を分解点変数に割り当てることにより簡単化される。しかし、分解点によって表現されたノードに割り当てられる幾つかの値は、可制御性ドントケア集合に含まれ、このドントケア集合は、所定の回路で生成されないか、若しくは、所定の回路の動作とは無関係な値割当ての集合である。したがって、シミュレーション値が分解点への値割当てを決めるため使用される。
【0079】
図14には、分解ベース式部分空間サンプリングスキーム内で分解点を決定する推定段階のサブプロセスのフローチャートが示される。図14に示されたサブプロセスは分解点を決定する。ステップ171において、サブプロセスは回路内の分解点のランダム数を選択する。ステップ173において、サブプロセスは、回路設計用の二分決定グラフの構築を開始し、主入力から始めて、ゲート毎に二分決定グラフを構築する。二分決定グラフを構築するため使用される初期変数順序は、幅優先探索、深さ優先探索、又は、深さ優先探索のある種の変形を行うことにより獲得される。ステップ175において、このサブプロセスは、二分決定グラフが「爆発中」であるかどうか、すなわち、構築されるべき最終的な二分決定グラフが時間又はメモリの何れかに関してかなり大きいことを示すレートで成長しているかどうかを判定するため、構築中の二分決定グラフを調べる。サブプロセスにおいて、二分決定グラフが爆発中であると判定された場合に、ステップ177でこのサブプロセスは分解点を挿入し、ステップ185においてこのサブプロセスは、挿入された分解点を用いて二分決定グラフの構築を継続する。ステップ175において、二分決定グラフが爆発中ではないと判定された場合に、サブプロセスはステップ179において二分決定グラフサイズを調査する。ステップ179において、二分決定グラフが極めて大きいとサブプロセスにより判定された場合、サブプロセスはステップ177において分解点を挿入し、ステップ185で二分決定グラフの構築を継続する。このサブプロセスのステップ179において、二分決定グラフサイズがあまり大きくないと判定された場合、サブプロセスはランダム分解点が挿入されるべきかどうかを判定する。このサブプロセスにおいて、ランダム分解点が挿入されるべきであると判定された場合、ステップ177で分解点が挿入され、ステップ185において二分決定グラフが構築され続ける。しかし、ランダム分解点が挿入されるべきではないと判定された場合、サブプロセスはステップ185において二分決定グラフを構築し続ける。
【0080】
他の実施例において、推定処理は動的である。動的推定処理において、少数の分解点だけが窓内で選択される。この関数は窓内で合成される。合成中に、二分決定グラフが爆発するとき、二分決定グラフは、合成され続けるべき一つの関数にブール値を割り当てることにより、若しくは、所与の関数内の一部の主入力変数にブール値を割り当てることにより、分割される。或いは、閾値を設定することが可能であり、二分決定グラフは二分決定グラフサイズが閾値を下回るまで分割される。同様に、選択された分解点の個数が窓を非常に小さくさせるとき(すなわち、サンプリングされた二分決定グラフのサイズが非常に小さい場合)、この処理は所与の窓内で選択された分解点の個数を減少させる。
【0081】
図15は、分解ベース式部分空間サンプリングスキームにおける分解点値割当てを決定する推定段階のサブプロセスのフローチャートである。ステップ191において、この処理はテストベクトルを用いて回路設計をシミュレートする。テストベクトルは、図14のサブプロセスと共に使用するため特別に設計されるか、或いは、テストベクトルの組から選択される。ステップ193において、サブプロセスは分解点で使用するための値を決定する。これは、ステップ191におけるサブプロセスによって実行される回路設計シミュレーション結果を検査することにより実行される。各テストベクトルは回路設計の全ての分解点に対し割当ての集合を与える。したがって、実際の回路動作中に生じ得ない分解点値割当ての集合は形成されない。分解点に対応した回路設計の節点で値を検査することにより、回路設計に基づいて回路の動作中に生じない値の割当てを回避することが可能である。このサブプロセスのステップ195において、シミュレーションのための更なるテストベクトルが残されているかどうかが判定される。更なるテストベクトルがシミュレーションのため残されている場合、この処理はステップ191に戻り、更なる割当て値が得られる。更なるテストベクトルが残っていない場合、サブプロセスは復帰する。
【0082】
B. 候補順序選択段階について
図16には、分解部分空間スキームにおける候補順序選択段階のサブプロセスのフローチャートが示されている。ステップ213において、推定段階中に発生された分解点値割当ての集合の中の一つが選択される。実際に分解点に値を割り当てることにより、分解点への関数は、その分解点に対するシャノン展開式の論理1又は論理0の何れかの部分になるように変更される。ステップ213からの分解点割当て並びに分解点を決定する際に推定段階で使用された変数順序を使用することにより、ステップ215において、上記のリストに記載されて手続きを動的再順序付けと共に用いて二分決定グラフが構築される。抽象ベース部分空間と同様に、異なる分解点値を用いて形成された部分空間に対し二分決定グラフを構築する際に使用された最終的な変数順序は、異なる部分空間の動的変数順序の異なる影響に起因して、一般的に異なる。したがって、各最終的な変数順序は、候補ベクトル順序を形成する。このサブプロセスのステップ219において、未だ利用可能な分解点割当てがあるかどうかが判定される。未だ分解点割当てが残っていると判定された場合、サブプロセスはステップ213に進み、分解点に対する別の値割当ての組を選択する。分解点割当てがこれ以上存在しないと判定された場合、このサブプロセスは呼出側に復帰(リターン)する。
【0083】
C. テスト段階について
分解二分決定グラフを使用するテスト段階において、この処理は、候補選択段階から生成された変数順序を使用し、無効であると思われる変数順序を棄却する。サイズの縮小された二分決定グラフがある変数順序を用いて構築された場合に、その変数順序は有効である。大きいサイズの二分決定グラフがその変数順序を用いて構築された場合、その変数順序は無効である。
【0084】
分解二分決定グラフを使用するテスト段階において、候補順序選択段階の処理によって生成された変数順序が使用され、新しい二分決定グラフを構築するため回路設計内で異なる分解点が選択される。この処理によって、異なる分解点を用いる候補順序選択段階の処理によって生成された各変数順序に対し、新しい二分決定グラフが構築され続ける。テスト段階中にこの処理によって生成された二分決定グラフのサイズは、使用される変数順序の有効性又は無効性を決定する。
D. 進展段階について
進展段階では、テスト段階で分解二分決定グラフを使用して生成された変数順序の組から最終若しくは最良の順序が判定される。変数順序の改良は、回路内の他の選択されたブール部分空間のため動的再順序付けを使用して二分決定グラフを構築するため初期順序としてその変数順序を使用することにより実行される。他のブール部分空間は、回路内で他の分解点を選択することにより選ばれる。しかし、他の方法論と同様に、他の部分空間は他の方法を用いて形成され得る。詳述すると、種々の段階で部分空間を選択する方法は、ある程度、他の段階で使用される方法と独立している。最終的に、異なるブール部分空間に対し最小の二分決定グラフを生成する変数順序が選択され、最終的な変数順序とされる。
【0085】
E. 構築段階について
回路に対する二分決定グラフの最終的な構築は、分解二分決定グラフを使用する進展段階によって生成された最終的な変数順序を用いて実行される。静的若しくは動的再順序付けは、回路全体に対し最終的な最適二分決定グラフを生成するため最終的な変数順序と共に再使用され得る。
【0086】
F. 回路サンプリングについて
回路サンプリングにおいて、ブール部分空間は、回路設計又はブール関数を作成するゲート又は節点の部分集合を選択することにより形成される。
IV. 部分割当てを使用する方法論について
部分割当ては回路を部分空間に分割する処理である。主入力の部分集合を選択し、選択された主入力に値を割り当てることにより、主出力からの送出量に影響を与えるゲートの数が制限される。
【0087】
部分割当ては、主入力変数の部分集合のブール割当てである。主入力変数の一部にブール値が割り当てられたとき、主入力に依存した関数によって表現されるブール空間の一部は、サイズが縮小される。したがって、関数の部分空間は部分割当てを用いて作成される。
詳述すると、|J|=kである場合に、変数Jの集合に関する割当て関数は、Jの各要素に1個ずつのk個の文字の連結である。かくして、割当て関数Aは、対応した文字がAにおいて正若しくは負の何れであるかに依存して真又は偽(0又は1)をJの各要素に割り当てる関数である。関数Aは、
J⊆I
に対しJに関する割当てである場合に、集合Iに関する部分割当て関数である。かくして、所定の主入力変数の集合に対し、主入力変数Jの集合は選択され、値が割り当てられる。換言すると、J上のランダムに異なるt個の割当て関数の集合Aが選択される。かくして、関数
S={fa |a∈A}
の集合に対し、Sにおける各関数はfのサンプルである。
【0088】
A. 推定段階について
部分割当てを用いて形成された部分空間のサイズ及び個数は、値が割り当てられた変数の個数と、それらの値に割り当てられた値の組合せとに依存する。したがって、分割ベース式部分空間スキームに対する推定段階中に、上記2項目が決定される。
【0089】
図17は、部分割当てを使用する推定段階のサブプロセスのフローチャートである。ステップ131において、このサブプロセスは、深さ優先探索技術を用いて主入力、すなわち、変数を順序付ける。深さ優先探索並びに深さ優先探索を実行する方法は周知技術である。他の実施例において、プライオリティ深さ優先探索が使用され、当業者は他の方法を使用してもよいことを認めるであろう。ステップ135において、値がk個の多数の変数に割り当てられる。ステップ137において、サブプロセスは多数の二分決定グラフを作成し、k個の変数に値が割り当てられ、少なくとも値の一部は異なる二分決定グラフに対し相違する。ステップ139において、ステップ137において作成された二分決定グラフの平均サイズが妥当であるかどうかが判定される。二分決定グラフのサイズの妥当性は、一方で、上記処理を実行するコンピュータシステムのコンピュータアーキテクチャ制約条件と、この処理を実行するため要する時間とに依存する。作成された二分決定グラフが非常に大きい場合に、サブプロセスのステップ141において値がより多くの変数に割り当てられ(すなわち、変数の数が増加し)、この差ププロセスによってステップ137及びステップ139が繰り返される。作成された二分決定グラフが非常に小さい場合に、このサブプロセスのステップ145において、値がより少ない変数に割り当てられ(すなわち、変数の数が減少し)、ステップ137及びステップ139が繰り返される。二分決定グラフのサイズが妥当である場合、サブプロセスのステップ143において、多数の割当て集合がk個の変数に対し準備される。変数割当て集合は回路毎にテストベクトルから取り出される。他の実施例の場合に、変数割当て集合はランダムに作成される場合がある。ステップ147において、ステップ143の値割当ての集合毎に1個ずつの多数の二分決定グラフが構築される。ステップ149において、サブプロセスは割当てを更に変更し、呼出側に復帰する。一実施例では、ステップ149において、同量の制御性割当て及び非制御性割当てが行われるように割当てが変更される。制御性割当てとは、ANDゲートに入力に零を割り当て、ORゲートの入力に1を割り当てるようなゲートを削除させる割当てである。非制御性割当てとは、制御性割当てと反対の効果を有する割当てである。他の実施例において、割当ては非制御性割当ての個数を最大限にするよう選択されるが、制御性割当てと非制御性割当ての比率はどのような比率でも構わない。また、ステップ149において、サイズが零の二分決定グラフを作成する割当て若しくは割当ての集合の使用を回避することによって割当てが変更される。
【0090】
B. 候補順序選択段階について
部分空間を決定するため並列的な割当てを用いるスキームのための候補選択段階は、他のスキームのための候補選択段階と類似している。換言すれば、各部分割当て集合によって定義された部分空間に対する二分決定グラフを動的再順序付けを用いて構築することにより、異なる候補変数順序が部分空間毎に獲得される。深さ優先探索によって生成されたリスト内の最初のk個の変数は値が割り当てられるが、最初のk個の変数は動的再順序付け処理の一部ではない。したがって、各候補変数順序は、全ての部分空間が最初のk個の変数に対する値割当てを含む場合に、同じ最初のk個の変数を有する。
【0091】
図18には、並列的な割当てを用いる候補順序選択段階のサブプロセスのフローチャートが示されている。ステップ233において、部分割当ての集合が選択され、すなわち、変数の一部に割り当てるための値の集合が選択される。ステップ233で得られた部分的割当てを使用することにより、ステップ235において二分決定グラフが構築される。ステップ239において、利用可能な部分割当てが未だ残っているかどうかが判定される。未だ利用可能な部分割当てが残っていると判定された場合、サブプロセスはステップ233に進み、別の部分割当て集合が選択される。利用可能な部分割当てが残っていないと判定された場合、サブプロセスは復帰する。
【0092】
C. テスト段階について
候補順序段階の最後に、m通りの変数順序が決定される。テスト段階における処理は、m通りの変数順序の中から無効な変数順序を削除することにより、m通りの変数順序の集合をx通りの変数順序に制限する。
テストスキームについて
テスト段階における処理は、候補順序段階の処理によって生成された順序とは異なる順序を使用し、無垢な変数順序を捨てる。この変数順序によって小さいサイズの二分決定グラフが生成される場合、この変数順序は有効であると考えられる。この変数順序によって大きいサイズの二分決定グラフが生成される場合、この変数順序は無効である。
【0093】
部分割当てを使用するテスト段階において、変数順序に異なる値が割り当てられ、次に、二分決定グラフが構築される。二分決定グラフのサイズを検査することにより、変数順序が有効であるか無効であるかが判定される。他の実施例において、異なる変数順序に値が割り当てられ、二分決定グラフが構築される。二分決定グラフのサイズを再度検査することにより、変数順序の有効性若しくは無香性が判定される。
【0094】
D. 進展段階について
部分割当てを使用する進展段階における処理は、テスト段階内の処理によって生成された変数順序の集合から最良の順序を決定する。
この処理によって、新しいブール部分空間の集合に対し、m通りの変数順序の中の一つの変数順序を用いて動的再順序付けをオンにした状態で二分決定グラフが構築される。新しいブール部分空間の集合は、値をブール空間の多数の主入力に割り当てることにより決定される。その結果として、小さい二分決定グラフの集合は繰り返し構築される。この処理は、m通りの変数順序の中の各変数順序についてブール部分空間の集合に対し二分決定グラフを構築することにより続けられる。最小サイズの二分決定グラフを生成する変数順序は、この処理によって最良の変数順序であると判定される。
【0095】
この処理は、深さ優先探索順序から最良変数順序までの最初の数通りの変数を含む。すなわち、割当て関数aに対し、
a∧fa に対する二分決定グラフが構築され、再順序付けされる。変更された最良の変数順序を使用することにより、この処理は、動的再順序付けをオンにした状態でブール部分空間の第2の集合に対する二分決定グラフを構築する。だい2のブール部分空間の集合は、値をブール空間の少数の主入力に割り当てることによって決定される。その結果として、最小サイズの二分決定グラフを生成する変数順序は、この処理によって、回路全体の最終的な二分決定グラフを構築するための最終的な変数順序であると決定される。
【0096】
B. 構築段階について
回路に対する二分決定グラフの最終的な構築は、部分割当てを用いて進展段階で生成された最終的な変数順序を用いて実行される。静的若しくは動的順序付け処理は、回路に対する最終的な最適二分決定グラフを作成するため最終的な変数順序と共に使用される得る。
【0097】
【発明の効果】
IV. 結論
本発明によれば、関数若しくは回路設計を表現するブール空間の部分空間をサンプリングすることにより二分決定グラフを構築するため変数順序を形成するシステム及び方法が実現される。上記の説明では、ある特定の実施例に関して本発明が記載されているが、多数の付加的な変形及び変更をなし得ることは当業者にとって明らかである。したがって、本発明は上記の実施例の説明以外の形で実施することが可能である。本発明の上記の実施例は、本発明の例示であって、本発明を制限するものではなく、本発明の範囲は、上記の実施例の説明ではなく、特許請求の範囲に記載された事項並びにその均等物によって示されることに注意する必要がある。
【図面の簡単な説明】
【図1】ディジタル論理回路のトポロジーを説明する論理設計図である。
【図2】図1に示された回路の機能性を表現する二分決定グラフである。
【図3】図2に示された二分決定グラフの既約二分決定グラフである。
【図4】本発明の処理のフローチャートである。
【図5】論理関数の二分決定グラフである。
【図6】図5に示された論理関数の均一化された二分決定グラフである。
【図7】対称性のある抽象関数を用いて図5の論理関数から得られた抽象二分決定グラフである。
【図8】図5の論理関数の既約抽象二分決定グラフである。
【図9】抽象部分空間を用いる推定段階サブプロセスのフローチャートである。
【図10】抽象部分空間を用いる候補順序選択段階サブプロセスのフローチャートである。
【図11】回路フィルタサブプロセスのフローチャートである。
【図12】テスト段階サブプロセスのフローチャートである。
【図13】進展段階サブプロセスのフローチャートである。
【図14】分解点部分空間を用いる推定段階サブプロセスのフローチャートである。
【図15】分解点値割当てを決定するサブプロセスのフローチャートである。
【図16】候補順序選択段階サブプロセスのフローチャートである。
【図17】部分割当てを用いる推定段階サブプロセスのフローチャートである。
【図18】並列的な割当てを用いる候補順序選択段階のサブプロセスのフローチャートである。
Claims (7)
- コンピュータ支援設計を行うコンピュータが主入力及び主出力の集合を有する回路設計の二分決定グラフ(BDD)を構築するために使用される上記回路設計の変数順序を決定する方法において、上記コンピュータは、
上記回路設計を複数の部分に分割し、
変数順序の集合を用いて上記部分毎に二分決定グラフを構築し、
上記部分毎に上記変数順序の有効性を決定し、
上記部分毎の変数順序から上記回路設計全体の二分決定グラフを構築する段階を有する方法。 - 上記変数順序の有効性は上記変数順序を用いて構築された上記二分決定グラフのサイズに依存して決定される請求項1記載の方法。
- 上記回路設計を複数の部分に分割する段階は、主入力変数の部分集合に値を割り当てた場合に上記回路設計の主出力に影響を与えないゲートを上記回路設計から削除することにより、上記部分毎の二分決定グラフを縮小する段階を有する、請求項1記載の方法。
- 上記二分決定グラフは、変数順序の集合を選択し、上記変数順序の集合を用いて抽象関数の集合を適用することにより構築される、請求項1記載の方法。
- コンピュータ支援設計を行うコンピュータが主入力と少なくとも一つの主出力と内部節点とを有する回路設計を表現する関数の決定グラフを構築するための初期変数順序を決定する方法において、
前記コンピュータは、抽象関数を決定し、複数の内部節点に対する決定グラフを構築し、上記複数の内部節点に対する抽象決定グラフを得るため、上記複数の内部節点に対する上記決定グラフに上記抽象関数を適用し、動的変数再順序付けを用いて、部分的に上記複数の内部節点に対する上記抽象決定グラフに基づく少なくとも一つの主出力に対する抽象決定グラフを構築する段階を有する方法。 - 上記少なくとも一つの主出力に対する上記抽象決定グラフは最終的な変数順序を有し、上記少なくとも一つの主出力に対する決定グラフを構築するため初期変数順序として上記最終的な変数順序を選択する段階を更に有する請求項5記載の方法。
- 上記複数の内部節点は上記回路設計の上記内部節点のカットセットにより構成される請求項5記載の方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8803998P | 1998-06-03 | 1998-06-03 | |
US088039 | 1998-11-05 | ||
US09/187,055 US6389374B1 (en) | 1998-06-03 | 1998-11-05 | OBDD variable ordering using sampling based schemes |
US187055 | 1998-11-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000003373A JP2000003373A (ja) | 2000-01-07 |
JP4334061B2 true JP4334061B2 (ja) | 2009-09-16 |
Family
ID=26778034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15429199A Expired - Fee Related JP4334061B2 (ja) | 1998-06-03 | 1999-06-01 | サンプリングベースの順序付き二分決定グラフの変数順序決定方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6389374B1 (ja) |
JP (1) | JP4334061B2 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9720648D0 (en) * | 1997-09-29 | 1997-11-26 | Sgs Thomson Microelectronics | Method and apparatus for proving system properties |
US6591400B1 (en) * | 2000-09-29 | 2003-07-08 | Intel Corporation | Symbolic variable reduction |
US6609234B2 (en) * | 2001-06-29 | 2003-08-19 | Intel Corporation | Ordering binary decision diagrams used in the formal equivalence verification of digital designs |
US7076416B2 (en) * | 2001-08-20 | 2006-07-11 | Sun Microsystems, Inc. | Method and apparatus for evaluating logic states of design nodes for cycle-based simulation |
US6763505B2 (en) * | 2002-04-04 | 2004-07-13 | International Business Machines Corporation | Apparatus and method for automated use of phase abstraction for enhanced verification of circuit designs |
US6745377B2 (en) * | 2002-04-04 | 2004-06-01 | International Business Machines Corporation | Apparatus and method for representing gated-clock latches for phase abstraction |
US6904578B2 (en) * | 2002-11-13 | 2005-06-07 | Fujitsu Limited | System and method for verifying a plurality of states associated with a target circuit |
US7120569B2 (en) * | 2003-05-19 | 2006-10-10 | Javier Armando Arroyo-Figueroa | Sequential machine for solving boolean satisfiability (SAT) problems in linear time |
US7107553B2 (en) * | 2003-08-18 | 2006-09-12 | Synopsys, Inc. | Method and apparatus for solving constraints |
US7506278B1 (en) | 2005-03-08 | 2009-03-17 | Xilinx, Inc. | Method and apparatus for improving multiplexer implementation on integrated circuits |
US7360181B2 (en) * | 2006-05-10 | 2008-04-15 | International Business Machines Corporation | Enhanced structural redundancy detection |
US9138143B2 (en) | 2010-08-17 | 2015-09-22 | Fujitsu Limited | Annotating medical data represented by characteristic functions |
US9002781B2 (en) | 2010-08-17 | 2015-04-07 | Fujitsu Limited | Annotating environmental data represented by characteristic functions |
US8838523B2 (en) | 2011-09-23 | 2014-09-16 | Fujitsu Limited | Compression threshold analysis of binary decision diagrams |
US9176819B2 (en) | 2011-09-23 | 2015-11-03 | Fujitsu Limited | Detecting sensor malfunctions using compression analysis of binary decision diagrams |
US8909592B2 (en) * | 2011-09-23 | 2014-12-09 | Fujitsu Limited | Combining medical binary decision diagrams to determine data correlations |
US9177247B2 (en) | 2011-09-23 | 2015-11-03 | Fujitsu Limited | Partitioning medical binary decision diagrams for analysis optimization |
US9075908B2 (en) | 2011-09-23 | 2015-07-07 | Fujitsu Limited | Partitioning medical binary decision diagrams for size optimization |
US11010511B2 (en) * | 2018-08-31 | 2021-05-18 | Synopsys, Inc. | Scalable boolean methods in a modern synthesis flow |
CN116663491B (zh) * | 2023-07-26 | 2023-10-13 | 北京云枢创新软件技术有限公司 | 基于bdd求解功能覆盖组条件约束语句的方法、设备和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6086626A (en) * | 1997-05-16 | 2000-07-11 | Fijutsu Limited | Method for verification of combinational circuits using a filtering oriented approach |
US6212669B1 (en) * | 1997-11-05 | 2001-04-03 | Fujitsu Limited | Method for verifying and representing hardware by decomposition and partitioning |
-
1998
- 1998-11-05 US US09/187,055 patent/US6389374B1/en not_active Expired - Lifetime
-
1999
- 1999-06-01 JP JP15429199A patent/JP4334061B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6389374B1 (en) | 2002-05-14 |
JP2000003373A (ja) | 2000-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4334061B2 (ja) | サンプリングベースの順序付き二分決定グラフの変数順序決定方法 | |
JP4028107B2 (ja) | 分解及び分割によるハードウェアの検証並びに表現方法 | |
US7280993B2 (en) | Reachability-based verification of a circuit using one or more multiply rooted binary decision diagrams | |
Green et al. | A fast algorithm for streaming betweenness centrality | |
EP0577298A2 (en) | Verification of systems subject to delay constraints | |
TWI250424B (en) | Method and apparatus for enhancing multiway radix tree | |
JP4418591B2 (ja) | 技術システムの予め設定された特性と第1の特性とを比較するための方法及び装置 | |
US8280836B2 (en) | Converting unordered graphs to oblivious read once ordered graph representation | |
JP2011198126A (ja) | 情報処理装置、情報処理方法およびプログラム | |
US5586125A (en) | Method for generating test vectors for characterizing and verifying the operation of integrated circuits | |
KR100386511B1 (ko) | 입력변수간의 계층화된 상관을사용해서 탐색된 2분결정그래프를 사용한 논리회로의 합성방법 | |
US8418119B2 (en) | Logical circuit netlist reduction and model simplification using simulation results containing symbolic values | |
US5805459A (en) | Method of measuring activity in a digital circuit | |
US7600211B1 (en) | Toggle equivalence preserving logic synthesis | |
Berthelot et al. | An efficient linear time algorithm for scan chain optimization and repartitioning | |
KR101748069B1 (ko) | 동적 그래프 기반의 그래프 요약을 수행하는 장치 및 방법 | |
Hui | Network reliability estimation | |
Kanade et al. | Distance in the Forest Fire Model How far are you from Eve? | |
Costamagna et al. | The Combinational-Complexity Game For Symmetric Functions | |
Dvorak | Bounds on Size of Decision Diagrams. | |
US10169292B2 (en) | String variables reprsentation in solvers | |
Neophytou et al. | Path representation in circuit netlists using linear-sized ZDDs with optimal variable ordering | |
Jabir et al. | GfXpress: A Technique for Synthesis and Optimization of $\hbox {GF}(2^{m}) $ Polynomials | |
Xiao et al. | Model-Guided Synthesis for LTL over Finite Traces | |
BLOM et al. | Analysis of an algorithm for finding perfect matchings in k-regular bipartite graphs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060324 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060414 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080909 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081105 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090113 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090313 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090616 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090623 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120703 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120703 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130703 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |