図1は、目標又はターゲット回路12に関連する複数の状態を検査するシステム10の概略ブロック図を示す。システム10は、アルゴリズム要素16を含む区分化され順序付けられた2進判定図(POBDD)データ構造14を有する。更に、システム10は、境界モデル検査(BMC:bounded model checking)ツール要素20と、PODDデータ構造14と通信する設計情報部24とを含む。システム10は、一般的には、集積回路、ディジタル要素、処理構成要素又は検査手順や処理が行なわれる2進アーキテクチャ内で区分化され、又はそうでなければそれらに関連して動作する。加えて、システム10は、情報又はデータのディジタル処理に関連する任意の装置、部品、ハードウエア、ソフトウエア、オブジェクト又は要素と協働して設けられる。
本発明の教示するところによれば、システム10は、ターゲット回路12の部分空間内に非常に深い深度に到達し得る検査プロセスを提供するよう動作する。POBDDデータ構造14と画像処理及び事前画像処理動作を含む分析とを用いることで、検証的に深い(provenly deep)選択された状態が識別される。これらの状態はBDDフォーマットで表現され、関連する通常形式(CNF:conjunctive normal form)形態としてマッピングされる。CNF形態は、機能強化された検査分析を始める開始状態の集合としてBMCツール要素20に与えられる。BMCツール要素20は、ターゲット回路12に関連する検査プロセスを行なうために(単独の状態からその動作を開始させる代りに)それらの開始状態を利用しながら境界モデル検査動作を実行する。単独の状態は、一般に、主に浅い(predominantly shallow)初期状態を表現する。既に深い開始状態を与えることで、BMCツール要素20は改善された検査結果を得る、というのはそれがターゲット回路12に一層深く達し得るからである。加えて、初期の深い状態は、最適時間間隔でPOBDDデータ構造14を用いて取得され、このことは、検査プロセスに関する効用の観点から非常に有利になる。
システム10は、他の検査及びシミュレーション法よりも顕著に高速な検査構造を与える。これは、部分的には、いくつかの検査手法を統合することに起因し、それらの手法は境界検査動作に関連する開始点を改善するために組み合わせられ得る。ある実施例では、そのような検査法は、大きなシーケンス深度を有する要素にとって特に有利であり得る。
また、システム10はターゲット回路12に関連する到達可能性(reachability)パラメータをも拡張する。ターゲット回路12内の新たな又は未探査の深い状態は、或いは調査されない状態は、システム10ではカバーされない又は網羅されない。所与のターゲット回路の検査を実行するために、深い状態は、一般的には充足可能(SAT)手順で、又は2進判定図(BDD)処理で無視される。システム10はより多くの完備な分析を収容することが可能であり、検査が、回路内で深く実行されることを可能にするが、そこではSATやBDD法は制限される。一般的には、システム10のアーキテクチャは、シミュレーションと、検査手法と、より複合的な又は複雑な分析に不十分な又は不適切な方法との間のギャップを橋渡しするよう動作する。同時に、システム10は、確認手順に関連する待ち時間を顕著に減少させる。
深度は、ユーザが求めるものに依存する正確な深度又は近似的な深度であり得る。近似的な深度は実際の深度に関する単なる上限である。状態の深度を算出するために、以下の動作が実行される。ユーザは一群の状態s_0から始め、所与のウインドウw,w’が想定され、ここでw’はwの相補的な対応物である。s_0を基本集合又はベースセットと呼ぶこととし、以下の動作が実行される:
1. ベースセットに関する画像処理及びs_1の取得;
2. ウインドウw’内でs_1に関する事前画像処理及びプレs_1(w’)の取得;
3. プレs_1(w’)に関する画像処理(ウインドウwの下で)及びs_1’の取得;
4. そのウインドウ外から到達不可能なウインドウwにおける状態集合を反映するs_1”=s_1−s_1’s_1”の算出。s_1”は更なる深度の状態を計算するための新たな開始点(ベースセット)となる。
一般に、ステップ1−4は適切に反復され、徐々により深い状態を与えることが可能である。これは、ウインドウw内で算出されたような所与の深度の状態を考慮に入れている。適切であれば、その深度が何らかの最少の“d”である状態を包含するよう適切に修正されることが可能であり、長さ“d”の経路はあるウインドウから別のものに移る。これは、画像/プレ画像の各ステップの間に深さが更新される集合又はセットを維持することによって達成され得る。何らかの状態の深度の走行数を維持するいくつかの手法が存在し得る。この計算を行なう簡易な方法は、到達可能性が幅優先法(breadth−first manner)で行なわれる場合になされ得るものである。各区分w_1,...,w_kに関し、上記手順が適用され、初期状態から始まる縦横の又は交差する経路(crisscross path)によって得られる場合でさえも、ある状態の実際の深度を反映しながら計算が実行され得る。
ターゲット回路12は、所定の又は意図される機能に従ってそれが動作することを確認するためにテストされる電子的又はディジタル的な対象物である。ターゲット回路12の部分空間の整合性、有効性、又は設計仕様は、POBDDデータ構造14を用いて分析される。ターゲット回路12は、論理ゲート、カウンタ、インバータ、バッファその他適切なデバイスを含む任意の関連回路、部品、又はターゲット回路と共に協働し又は相互作用することの可能なオブジェクトを包含し得る。また、ターゲット回路12は、他の適切な装置、部品、アーキテクチャ、回路配置、ハードウエア、ソフトウエア、オブジェクト又は検査環境下で2進データやディジタル情報を処理することの可能な要素であり得る。ターゲット回路12は何らかの特性を含む(又はそれを実行し得る)ように適切に設計される。「特性(property)」なる語は、本明細書で使用されているように、ターゲット回路12に関連付けられる任意の能力、特徴、操作、動作、又は挙動を包含する。動作時にあっては、それが設計された特性や特徴を保持すること、又は指定された動作を適切に実行することを保証するために、ターゲット回路12は検査され、或いは有効化される。
POBDDデータ構造14は、2進又はディジタル環境でBDD要素の区分化を実行するよう動作し得る要素である。POBDDデータ構造14は、操作に関する論理関数を表現したものである。ここに言及されるように、POBDDデータ構造14は、適切であるならば、区分化され減縮され順序付けられた2進判定図(PROBDD:partitioned reduced order binary decision diagram)又はBDDデータ構造(区分化される可能性はある)を包含し得る。PROBDD及びPOBDDなる語は、可換であり、それらのアプリケーションを説明する際に(場合によっては簡略化のため)適切な様々な形式で一般的に使用される。PBDDデータ構造14は、設計者情報24を受信し、設計者情報24に基づいて第1群の状態を抽出するためにターゲット12に関して予備的分析を行なう。サンプルされた部分空間からの第1群の状態は、BMCツール要素の能力を増大させる或いは強化するために使用され得る。POBDDデータ構造14は、ターゲット回路12に関連して選択された特性を評価するために、アルゴリズム要素16に包含されている1以上のアルゴリズムを起動する。第1群の状態は、BMCツール要素が、ターゲット回路12内に深く伸びることを可能にする。
POBDDは、一般的には正準(canonical)であり、それ故に複合的等価的な検査に使用され得る。POBDDは、シーケンス回路検査用の到達可能性分析に順次適用され得る。可到達状態集合はPOBDDとして表現される。これは、所与の時間間隔の間に対応するメモリ内で1つの区分のみを維持することで、メモリ要請を最小化する。加えて、可到達アルゴリズムを別々に用いて各区分について固定点演算が実行され、そのアルゴリズムは、POBDDデータ構造14により使用されるPOBDDプロトコルに関連して、アルゴリズム要素16内に包含され得る。
POBDDデータ構造14は、一般的には検査処理で使用される他の手法よりも顕著に高速である。更に、POBDDデータ構造14の区分化された構造は、緻密又はコンパクト(compact)であり、より簡易な並列処理を可能にする。加えて、POBDDデータ構造14は、動的な区分化を行ない、メモリの機能低下を回避し、あるアプリケーションではその機能低下は「メモリ暴走又は不具合(memory blowup)」としても言及され得る。POBDDデータ構造14は、ターゲット回路12内の膨大な状態を網羅することができ、更に、相互作用する有限状態マシーンの緩やかに接続された複数セット(loosely coupled sets)に設計内容を分割する。
実施例の動作に関しては、設計者及び製造者は、試験又は検査される特性、特徴、動作又は挙動を識別する何らかのプログラムをターゲット回路12に書いている。特性又は特徴は、それがPOBDDデータ構造14に通知される前に特定の構文で適切に書き込まれる。プログラムはその後にPOBDDデータ構造14に通知され、POBDDデータ構造14はターゲット回路12にて指定された特性を検査する。POBDDデータ構造14は、その後に第1群の状態を生成し、BDDフォーマット内でその第1群を表現し、BMCツール要素20に転送されるようにBDDフォーマットをCNF形態にマッピングする。
CNFは、条項又はクローズ(clause)の論理積であり、クローズは属性値又は属性値の論理和である。{AND,OR}の接続部を有する論理表現は、何らの接続も否定されず、どのAND接続もOR接続によって支配されないならば、論理積の通常形式である。例えば、(色=赤 又は 色=緑)且つ(形状=四角形)は、CNFの形態である。この形式における論理表現は、クローズのANDとして表現され、その各々は1以上のリテラル(literals)のORである。また、CNFの理論は、論理和の論理積としても考えられる。各論理和は、肯定的なリテラル及び否定的なリテラルを含むクローズとして表現され得る。変数は汎用的に定量化される。論理プログラミングの場合には(プロローグ(Prolog)、フリル(Fril)等)、センテンスをコンピュータが収容し得るステートメントに変換し得ることが有利である。ステートメントの論理プログラミングは、ホーンクローズ(horn clause)の形式を採用することができ、そのクローズは特に簡易な構造を有する条件付のセンテンスである。総ての命題の論理センテンスは、論理積の通常形式でのセンテンスに等価であることが示され得る。
アルゴリズム要素16内で選択されたアルゴリズムを起動する又は実行することで、POBDDデータ構造14は、回路アーキテクチャ又はコンフィギュレーションの全体を眺めることなしに、ターゲット回路12内を選択的に深く探査し得る。回路要素全体を眺めることは、検査プロセスを顕著に遅くする。その代りに、アルゴリズム要素16が起動され、深淵形式(deep manner)で複数状態の小部分(部分空間内)を評価するために、ターゲット回路12内の所定の場所が調査される。
アルゴリズム要素16は1以上のアルゴリズムを包含するデータ処理オブジェクトであり、そのアルゴリズムは、特定の又は指定された特性がターゲット回路12内で調査又は検査されることを可能にする。アルゴリズム要素16は、特定の処理要請又は回路配置に従って、POBDDデータ構造14内に包含され、或いはその外部に設けられる。加えて、アルゴリズム要素16は他の外部要素と通信することが可能であり、その外部要素は、ターゲット回路12内の部分空間を検査するために使用される1以上の命令又は特徴を与える。更に、アルゴリズム要素16は、ターゲット回路12に関連する1以上の特性を確認するために、設計者情報24を直接的に受信し得る。また、設計者情報24は、検査プロセスに委ねられる回路又は要素の種別を包含する又は指定し得る。アルゴリズム要素16は、POBDDデータ構造14で実行される検査動作を支援し得る任意の適切なハードウエア、ソフトウエア、オブジェクト、又は要素を包含し得る。
実施例及び教示内容を説明するために、ターゲット回路12の部分空間に関連する選択された特性を検査する場合に使用され得るいくつかのアルゴリズムを更に説明することが有益であろう。論理関数処理のための多くの演算は、OBDDにより表現される関数に関して効率的に実行され得る。例えば、その基本的処理のいくつかは次の通りである:
1.評価。OBDDに関し、f及び入力aに関するGは、その値f(a)を計算する。
2.減縮。OBDDに関し、Gは等価的な減縮されたOBDDを算出する。
3.等価試験。OBDDにより表現される2つの関数が等しいか否かを検査する。
4.充足可能性(satisfiability)問題。問題に含まれるものは次のとおりである:
−充足可能性。OBDDに関し、fを表現するGは、f(a)=1を満たす入力aを見出す、又はそのような入力が存在しないことを出力する。
−SATカウント。OBDDに関し、fを表現するGは、f(a)=1を満たす入力数を計算する。
5.合成(適用とも言及される)。OBDDによって表現される関数f及びgに関し、Gは、G内に
6.置換(交換とも呼ばれる)。
−定数による置換。OBDDにより表現される関数f、変数xi、及び定数c∈{0,1}に関し、f|xi|=cに対するOBDDを計算する。
−関数による置換。OBDDにより表現される関数f及びg、変数xiに関し、f|xi|=gに対するOBDDを計算する。
7.一般的定量化及び実際的な定量化。OBDDにより表現されるf及び変数xiに関し、それぞれ
OBDDパッケージでは、通常的には、減縮したOBDDのみが表現されるように、演算負担軽減は他の演算の中に統合される。OBDDの多くのアプリケーションは、回路として与えられる関数に関する。従って、1つの重要な処理は、回路により与えられる関数についての演算であり、それは通常的にはその回路に関する記号を用いたシミュレーションで実行される。これは、入力変数を表現する関数についてのOBDDが構築されることを意味する。これは容易である、というのは、その関数xiに関するOBDDは、0後継部(0−successor)としての0シンク(0−sink)及び1後継部としての1シンクと共にxiでラベル付けされたノードのみから成るためである。回路はあるトポロジ的順序で評価され(各ゲートは、先行する総てのものが考察された後に考察される)、演算は各ゲートについてなされる。演算は、合成操作を用いて入力での関数を表現するOBDDを結合することによる、出力における関数表現である。
別の可能性は、所与の回路がより大きなブロックを形成することである。そのような場合には、OBDDは、各ブロックによって計算される関数について計算され、関数による処理置換と共にOBDDを結合する。算出されるOBDDの場合には、2つの回路により表現された関数に関し、等価性について回路を検査するためにOBDDに関する等価的な処理が行なわれる。
論理照合のようなアプリケーションでは、考察される関数についての署名(signature)が計算される。署名は、効率的に算出されることの可能な及び異なる関数については異なっているような関数特性である。署名は所与の関数が異なっていることを検出するために使用され得る。非常に簡易な署名は、ある関数の入力を満たす数である。SATカウントの処理は、それを算出するため及び適切であれば他の署名を算出するために使用され得る。
BMCツール要素20は、ターゲット回路12についての境界モデル検査処理を実行するための要素である。BMCツール要素20は、POBDDデータ構造14から情報を受信し、ターゲット回路12に関する検査を実行するためにその情報を使用する。BMCツール要素20は、準正式な(semi−formal)検査法を使用し、更に、POBDDデータ構造14により与えられる第1の状態群を用いることで機能強化され得る。BMCツール要素20は、適切な境界モデル検査を実行するためにSAT技法を使用する。境界モデル検査では、対象とする状態遷移システムが、関心のある状態に到達する状態遷移の有限シーケンスを実現し得る場合に、充足可能な論理構造が構築される。BMCツール要素20は、任意の適切な装置、部品、ハードウエア、ソフトウエア、オブジェクト、又は要素を包含し、それらはターゲット回路12の選択された部分空間が検査又は検証されるように1以上の境界検査処理又は演算を実行し得るものである。
また、BMCツール要素20は、単独の初期状態の代りに第1群の状態を利用し得るように適切に修正され得る。これは、システム10がターゲット回路12内で検証的に深い部分空間に到達することを可能にする。従って、BMCツール要素20内のプログラムの容量は、検証プロセスを改善するように、効率的に強化され得る。BMCプログラムが実行された後で、隣接するセグメントはしらみつぶしに検査され、ターゲット回路12に関する適切なサンプリングがなされるようにする。ターゲット回路12の部分空間をサンプリングすることを継続するか否かの判定は、エンドユーザに委ねられ、又はBMCプログラム属性によって制御される。
教示内容及び実施例を説明するため、POBDD、PROBDD及びBDD処理に関連するいくつかの原理及び概念が以下に与えられる。与えられる説明は、区分化BDD技法に関連する幾分複雑な理論の理解を支援するためのみに行なわれる。その説明は、システム10の任意の要素の動作を限定するように解釈されるべきではない。以下の説明は、例示のみを目的としていること、及びPOBDDデータ構造14により実行され得る又は区分化処理又は検査プロセスに包含される任意の要素で実行され得る他の任意の適切な処理内容を限定するように解釈されるべきでないことを認識することが不可欠である。
区分化ROBDDを説明するために、以下の例を考察することが有益である。n入力Xn={x1,...,xn}について定義される論理関数
を想定する。fの区分化ROBDD表現Xfは次のように定義される:
Xn上で定義される所与の論理関数
に関し、fの区分化ROBDD表現Xfは、k個の関数対の組
であり、Xn上で定義され、以下の条件を満足する:
1.
は、1≦i≦kに関して、可変順序πiを有するPOBDDとして表現される。
2.w1+w2+...+wk=1。
3.1≦i≦kに関して、
この例における+及びΛは、それぞれ論理的な和(OR)及び積(AND)を表現する。集合{w1,...,wk}はWで記される。
各wiは、ウインドウ関数として言及される。直感的には、ウインドウ関数wiは、fが定義されている論理空間の部分を表現し得る。総てのペア
は、関数fの区分化を表現する。この例では、「区分化(partition)」なる語は、複数の区分けが分離しなければならない意味に使用されるものではない(重複しても良い)。(上記に与えられている)条件1−3に加えて、i≠jに関してwiΛwj=0ならば、それらの区分は直交している。
区分化POBDDを構築する場合に、区分化POBDDの実効性又はパフォーマンスは、一般に、その関数がコンパクトに表現され得る論理空間の実効的な区分けを生成する能力に依存する。論理空間の適切な区分けを見出すことは、区分化POBDD表現に関する核心的事項である。ここに説明されるものは発見的な例(example heuristics)であり、それらはコンパクトな直交する区分化POBDDを生成するのに効果的である。提示される手法では論理ネットリスト(netlist)が使用されるが、説明される技法は汎用的であり、任意の代替的な論理演算シーケンスに使用される又は拡張されることが可能である。
BDD区分化法の例では、ウインドウ数が事前に又はその都度(動的に)決定される。ウインドウwiが決定された後に、ウインドウwiに対応する論理空間内でFを構成することで、それに対応する区分化ROBDDが得られる。区分化では、ある関数Fに関するBDD、分解されたBDD再表現物(即ち、入力変数によるものではないが、所与のターゲット関数FについてBDDを構築するプロセスで生成されるいくつかの擬似的な入力変数によるもの)が考察される。Fに関して区分化BDDを作成するために、関連する分解されたBDDが、その区分化を与えるために分析される。この区分化判別は一般的に行なわれる、というのは分解ポイントΨ1,...,Ψkで表現されるFに関して分解されたBDDは構築されないからである。分解されたBDDから、Fに関する区分化BDDは、以下の3つの方法で形成される:
(1)入力変数を用いる区分化。入力変数の数が動的に変更される又は所定の定数に設定され得る。
(2)「内部(internal)」変数を用いる区分化、即ち入力変数でない変数。そのような変数は、内部のゲートで導入される擬似的変数(pseudo−variables)であり得る。
(3)1及び2の適切な組合せを利用する区分化。
目下のフィルタリング形式の検査プロセスにおける任意の所与の時点で、分解された表現はfd(Ψ,X)によって表され、ここで、Ψ={Ψ1,...,Ψk}は分解集合と呼ばれ、典型的には、ナイーブカット(naive cut)又はスマートカット(smart cut)プロセスによって選択された内部カットセットに対応し、
の各々は分解ポイントである。Ψ
bdd={Ψ
1bdd,...,Ψ
kbdd}が、分解ポイントのROBDDを包含する配列又はアレイを表現するものとする、即ち、
の各々が、主要な入力変数に加えて(可能性のある)他の
である。同様に、Ψi
bddwi=の配列はΨi
bddwiによって表現され得る。fd(Ψ,X)におけるΨiの構成[?]は、
により示され、Ψiのfdへの一連の構成を表現する。
所与のウインドウ関数wi、分解表現fd(Ψ,X)及びfのROBDD配列Ψbddの下で、分解表現の区分化を考察する場合に、fiは、fi=wiΛfiを表現するROBDDがfより小さくなるように求められる。立方体だけであるところの総てのwiはこの要請を充足し得ることが、証明され得る。
所与のfd、Ψbdd、及びwisに関し、余因子(cofactor)Ψwi及びfdwiが形成される。FdwiにてΨbddwiを構成することによって、区分化関数fi=fwifi=fwiが得られる。所与の一群のウインドウ関数wiの下で、fの区分化ROBDDxfは、
によって与えられる。上記の定義が定義1の総ての条件を満足するのを確認することは一般に容易である。
wiが立方体であるならば、fiは、fについてのROBDDより小さなサイズを有する。また、wiを表現するROBDDはk個の内部ノードを有し、ここでkはwi内のリテラル数である。wi及びfwiは互いに素の関係(disjoint support)を有するので、
である。また、fiを構成する各々の中間結果は、fを構成するものよりも小さく、中間的なピーク的なメモリ要請も少なくなる。これは、fとfiが異なる変数順序を有する場合であって動的な変数再順列化を行なう場合には成立しない。実際には、動的な変数再順列化は区分化の場合における一層小さなグラフにて処理されるため、それは更に効果的である。
ウインドウ関数がキューブ又は立方体よりも複雑な関数PIである場合には、fi=fwiが使用される。fwiはwiに関するfの一般化された余因子である。wiに関するfの一般化された余因子は、一般的には、fよりも充分に小さい。しかし、想定される例では、i番目の区分化POBDDの大きさ
は、最悪の場合に0(|w
i‖f
i|)であり得る。これを回避するために、一般的なウインドウ関数を用いる場合に、一般的には小さいw
isが使用される。
ウインドウ関数の選択に関し、所与のウインドウ関数から区分化関数を構築する手法を決定した後に、適切なウインドウ関数を取得する方法が評価される。その方法は、2つのカテゴリに分解されることが可能であり、それらは:先験的選択と「探索的(explosion)」選択である。
先験的区分化では、所定数の主要な入力(PIs)が区分化に選択される。‘k’PIsに関する区分化を決定すると、2kの区分けが形成され、それらは変数の2進割当総てに対応する。例えば、x1,x2に関する区分化を決定すると、4つの区分けが形成される:
。この種の所与のウインドウ関数に関し、区分化ROBDDが形成されることが可能であり、それらはモノリシックROBDDより小さいことが保証される。所与の時点で唯1つの区分化がメモリ内に存在することを必要とするので、選択された空間内で成功する可能性が高い。メモリの減縮は大きく、総ての区分化を処理するのに要する時間における全体的な減縮によっても達成される。
別の区分化を形成する際に独立して生じる冗長性を最小化しつつ、達成される区分化を最大化するような変数が選択されるべきである。これは、多くの装置及び攻略法の基本的原理を反映する。変数xに関する関数fを区分化することのコスト(cost)は、
costx(f)=α[px(f)]+β[rx(f)] (2)
により定義され、ここでpx(f)は区分化因子を表現し、
により与えられる。2つの区分化の良好でないものが小さく且つ同様である場合にはより低い区分化因子が有利であり、2つの区分けを作成する際に包含される作業全体が少ないことを示すので、より低い冗長性因子が有利である。より低い全体的なコストを有する変数xが、区分化に選択される。
所与の関数Fのベクトル及び変数xにつき、区分化のコストは、
PIは区分化fd及びΨのそれらのコストに関して増加する順に計数され、最良の‘k’(ここで、‘k’はユーザにより指定された所定の数である)も選択される。同様なコスト関数を利用して、PI変数が選択され、区分化ROBDDを作成するためにPIで表現されるΨibddのような擬似的変数も選択される。この例の場合には、余因子演算は、立方体でないウインドウ関数についての一般化された余因子演算になり得る。この種の選択は、総てのPIがfd及びΨに関するそれらの区分化のコストに従って等級付けされ、静的(static)区分選択と呼ばれる。
或いは、動的区分化法が使用され、最良のPI(例えば、x)がfd及びΨに基づいて選択され、以後のPIは、ある区分におけるfdx及びΨx並びに別の区分におけるfdx及び
に基づいて再帰的に選択される。動的区分化法は余因子の指数を必要とし、場合によってはコスト的に高価で使用できない。関心のある値のみがfd及びΨ
ibddsの余因子のサイズであることを用いて、コストを幾らか減らすことが可能である。|fdx|の上限値は、fdのROBDDを横切り又は検索し、xに対応する変数idを有するノードに遭遇すると常にx=1ブランチをとることによって、算出される。本方法は、この手法でROBDDを横切ることで取得されるBDDが減少しない場合には、正確なカウント値を与えない。そのような実現化の1つの利点は、形成される新たなノードを何ら必要とせず、その横断又は検索が比較的速やかなことである。
区分化は、区分け数が動的に選択されるようになされ得る。ある場合には、BDD不具合の時点毎に、BDD不具合が克服されたと判定されるまで、区分化が、変数を分離しながら動的に実行され、1つの増分で選択される。
区分化を用いる場合に、fd中のΨibddsは連続的に構築される。グラフのサイズがある構成(例えば、Ψj)について顕著に増加する場合には、ウインドウ関数は現在のfd及びΨjbddに準拠して選択される(例えば、w)。ウインドウ関数は、PI及びその相補的なもの、又は何らかのΨkbdd及びその相補的なものあり、その相補的なものはPIによってのみ表現され、より小さなサイズを有する。
ウインドウ関数wが取得されると、2つの区分化(wΛfdw,Ψw)及び
が形成され、区分化の各々における処理又はルーチンは再帰的に呼び出される。一般に、構築後の結果的なBDDが、既に構築された以前に分解されたBDD及び当初の分解されたBDDのサイズ総ての総和より10倍大きい場合には、区分化に基づく探索が実行される。
先験的な変数選択では、区分化に基づく探索に加えて、固定数の分割変数が定められる。固定数の主要な入力変数に準拠する区分化に続く展開的区分化(又はその逆)が実行され得る。展開的区分化は、主要な入力に加えて、擬似的な変数/分離ポイントの双方を使用し得る。
ウインドウ関数を選択し、fdwi及びΨwiにより与えられるi番目の区分けについての分解表現を作成した後で、最終的な段階は、fdwiにてΨwiを構築することであり、即ち、
である。採取的なROBDDサイズは所与の変数の順序に対して定数であるが、中間的なメモリ条件及び構築中の時間は、分解ポイントが構成される順序のストロング関数(strong function)である。fd内で構成され得る候補変数に対して、結果的に構成されるROBDDのサイズを推定するコストが割り当てられる。構築後にROBDDの支持集合のサイズの増加を最小化する分解変数が選択される。各ステップにおいて、候補Ψsは構成に関してそれらの分解ポイントに拘束され、それらのポイントは他の任意のΨ
bddSには存在しないものである。このことは、分解変数はfdにて一度だけ構成される必要性を保証する。
図2は、システム10に含まれる1以上の要素間の例示的な相互作用を示す概略図である。図2は、一群の開始点30a−c、一群のPOBDD要素34a−c、BMC要素38、及びBDD要素40を示す。これらの要素は、概略的に描かれており、システム10に関連する一般的な原理を説明することを意図している。POBDD技法が使用され、画像処理/事前画像処理動作を含む分析が実行され、実証的に深く且つBMCツール要素20に通知される第1の状態群を判別する。POBDD技法は、それを正準形(canonical form)に変換するためにデータ構造上で実行され得る。区分化は、論理空間が個々の部分空間に分解されることを示す。
教示内容を説明するために、POBDD技法に関連して実行されるいくつかの画像処理及び事前画像処理を説明することが有益であろう。関数は、一般に、ある領域を共通する領域に対応付ける。変数はXで表現され、出力はYで表現される。Xの組合せの各々はYに関するいくつかの表現になる。Xの組合せの各々ついて、結果として生じる固有の組合せが存在し、それはその関数を定義し得る。画像は、その関数に関連する所定の操作結果として生成されるものである。ある操作又は処理がその領域に適用され、その結果生じるものが画像である。例えば、複数の状態が用意され、それらの状態から多くの他の状態に到達可能である。ターゲット回路12内では、10個の状態から1000個の状態に到達可能である。その1000個の状態は、10個の状態に関連する画像を反映するものとして考察される。
画像処理は、対応する画像を投影する何らかの写すものを与えるプリズム又は鏡と考えられる。所与の画像に対して、対象物又はオブジェクト及び鏡又はミラーは、その画像を導出するために使用される。オブジェクトは、当初の10個の状態として言及され、ミラーはその処理であり、1000個の状態は画像群である。同様に、事前画像処理が定められる。この例での事前画像処理は、1000個の状態によって表現され得る。その処理もミラーによって表現され、これら2つの変数を用いてオブジェクトが導出される。従って、画像処理の場合に、オブジェクト及びミラーが存在し、その影響又はリフレクション(reflection)が求められる。事前画像処理の場合は、リフレクション及びミラーが存在し、求められるものは、その画像を投影した当初のオブジェクトである。
状態分析における画像処理は、遷移/関連付け処理として言及される。遷移/関連付け処理は、所与の状態空間で可能な遷移を結びつけ、そこでは、対応付け又はリンクが存在しないことに起因して、状態1から状態10へ動くのを禁止する所定の規則が存在する。可能な及び不可能な遷移は、その後に捕捉され得る。そして、ミラー(遷移/関連付け処理)は、そのシステム/回路/状態でどのような遷移が可能であるかを示す。
遷移/関連付け処理に関するあるアプリケーションの後にアクセスされ得るほんのいくつかの状態が存在する。従って、遷移/関連付け処理を適用した後にその地点からより深い深度への移動がもたらされる。同様に、状態1000から、遷移/関連付け処理を用いて当初の状態の値が判別され得る。従って、事前画像処理は所与の状態群について行なわれる。画像は、ミラー(遷移/関連付け処理)によって与えられるような状態のリフレクションである。画像及び/又は事前画像処理法は、ターゲット回路12内で何が深いかを判別するために使用され得る。
教示内容を説明するために与えられる別の例では、ライン1及びライン2が状態であることを想定し、ライン1及びライン2は並行であり、遷移/関連付け要素によって分離されているものとする。ある筋書き又はシナリオでは、ライン2のリフレクションはライン1に関連する情報に影響を及ぼす。しかしながら、一般的に求められるものは、ライン1又はライン2の何れかによって排他的に影響されるもの総てである。画像及び事前画像処理は、ラインの各々から何が受信されたかを判別するために使用され得る。置換プロセスを利用して、ライン1及びライン2に何が含まれているかが判別され得る。残るものは、それらの整合性を維持する真のオブジェクト、競合物(contender)、又は選択肢を示す。この情報により、混乱又はエラーを生じさせるものが何であるかを判別し、そのプロセスに起因する要素を削除することが可能になる。
別の例として、集合1が状態1,2,3を包含する場合を考察する。更に、状態4,5を含む集合2を考える。これら総ての要素は状態10,11に反映される。状態10,11を分析する場合に、状態1,2,3,4,5から到来するリフレクションが与えられる。集合1に関連する分析で4,5を考察するのは不適切である、というのは、これらの要素は集合2に関連するからであることが、理解されるであろう。従って、状態4,5がその集合から除去され、残ったものが集合1からの真正な集合である(状態1,2,3)。集合1,2間の距離は、1単位として識別され得る。集合2と集合0との間の距離は、2単位である。以後同様に計算がなされ、集合1と集合0との間も1単位の距離である。次のステップでは、分析は集合−1にシフトし、そして分析は集合−2に続き、以下同様である。このようにして、情報は帰納的に蓄積され、より大きな距離及び深度をなすために分析が続くようにする。この手順は、状態の検査がターゲット回路12内で深まることを可能にする。
実施例における「より深い(deeper)」という語は、分析されるターゲット回路12に関連付けられる深度パラメータに言及している。所与の状態が到達可能であり、他の状態は事前の作業を最初に行うことなしには到達され得ない。状態は一般的には異なる深度を有する、というのは、ある固定点演算は早期に終了し、別のものは所与の試験回路内に深遠に伸びる。このことは、所与の関数の属性に準拠している。所与の関数は、あるウインドウ又は部分空間の下で、分析が深く伸びて続くように構成される。加えて、実証的に深い状態及び帰納的な状態群が存在し得る。実証的に深い状態は、一般にそれらが深いか否かを判別するために相当の作業量を必要とする。帰納的な状態群は一般的には深度に関して何らの保証も与えない。機能的な状態は(潜在的には速やかに)与えられるが、それらの状態が深いか否かは未知である。従って、それら2つの原理のバランスをとるのが一般的である。適切に検査技法を実行するには、速度も深度も無視され得ない。POBDDデータ構造14を用いることで、潜在的に深いいくつかの状態が計算され、又は所与の状態が「通常的に」深いものとして射影され、これらの状態がサンプリングに関して目標視される。
図2に戻って、BMC要素38は、小規模なサンプリング又は部分空間のセグメントが、固定点に関連して探索されることを可能にする。固定点に到達すると、固定点演算が別の部分空間で実行され得る。複数の部分空間でランダムなサンプリングが実行され、それにより、第1の状態群がPOBDD要素34a−cからBMC要素38に効果的にハンドオフする又は移行することが可能である。第1群の状態を判別した後で、どの部分空間が最も深い深度を有するかを判別する。最も深い深度を有する部分空間について、特定の状態群は、容易に計算される最も深い状態群であることが想定される。これらの状態は、検査環境下の所与の回路に関する一層深い検査を実行する場合の初期状態群として採用するために、BMC要素38に与えられる。BDD要素40は、POBDD及びBMC処理が記述される基盤又はコアプロトコルとして機能する。
POBDDに準拠したBMCは、深く探索する方向を選択する際における「ナビゲート付き進行(Navigated Traversal)」機能を可能にする。システム10は、更に、初期幅探索(BFS:Breadth First Search)と初期深度探索(DFS:Depth First Search)との調整された混合を可能にする、というのも、それが深い状態に(潜在的に選択可能に)到達可能だからである。
また、適切な時間間隔が、試験対象の所与の回路内の複数の部分空間のサンプリングに関連して設けられる。所定の期間は、ターゲット内の様々な部分空間を評価するために用意される。その期間が満了すると、プロセスは停止し、判定が行われる。その期間は、所与の検査プロセスに関連する便宜的な項目又は実際的なパラメータに準拠し得る。指定された期間内で何らの深い状態も見出されなかった場合は、そのプログラムは、より大きなタイムアウト値を含む別のモードで動作し得る。或いは、選択を実行する手法は、既にサンプリングした任意の部分空間(又は空間の種別)が再度訪問されないように変更可能である。深い状態に遭遇することの保証又は確実な証明を与えることで、効率に関する顕著な利益が最小の損失で達成され得る。効率に関するこの利益は、その損失に比較して不釣合いに大きくなり得る。
図3は、ターゲット回路12に関連する1以上の特性を検査する方法に関する一連の例示的ステップを示す概略的フローチャートである。本方法は、設計者がターゲット回路12のような特定の回路を評価する場合であって、検査される必要のある特性に着目する場合に開始される。設計者は、その特定の性質に関し、ターゲット回路12の選択された部分空間が深いことを知っていても知らなくてもよい。BMCツール要素20がターゲット回路12内にかなりの深度まで到達することを可能にするために、POBDDデータ構造14はステップ100にて呼び出される。パラメータはPOBDDデータ構造14に通知され又は与えられ、タイムアウト期間もそのプログラムに用意される。例えば、POBDDデータ構造によって実行されるプログラムは5000秒を超えることができないことが指定され得る。
ステップ102では、POBDDデータ構造14は、部分空間の分割を開始し、選択された深度での探索を可能にする部分空間が識別され得るか否かを判別し、その部分空間は、指定された特性を潜在的に備え又はその特性によって決定される。この手順がその時間間隔内に実行されるならば、その手順は申し分ないものとされる。プログラムがその時間間隔内で実行されなかった場合には、達成した最大深度が表示され得る。或いは、タイムアウト期間が修正され、再度プログラムが実行され得る。別の場合では、部分空間のサンプリング場所は、最適な深度に達するように適切に変更され得る。
ステップ104では、BMCツール要素20は、POBDDデータ構造14により抽出された状態群に関連付けられた情報を受信する。ステップ106では、BMCツール要素20はターゲット回路12内に一層深く進行する、というのは、その要素には改善された開始ポイントが備えられているからである。境界モデル検査は、探索されないもの以外の状態を訪れるために、BMCツール要素20によって実行される。第1データセットに反映されているような改善された一群の開始状態は、BMCツール要素20で実行される検査プロセスの効率を向上させる。ステップ108では、違反した特性に遭遇したことを識別し、或いは、結果的に潜在的に影響される整合性パラメータがBMCルール要素20によって生成され、ターゲット回路12に関連する不完全性や不具合を見分ける。この情報は、製造工程や設計工程に関連する問題点や仕様を修正したり対処したりするために使用される。或いは、その情報や成果は、関連する製品が設計者によって与えられる基準に合致するように対処するために使用され得る。
ランダムサンプリングは、ターゲット回路12に関連する合理的な評価を与える。サンプリングは、他の部分空間がサンプリングされると他のエラーに遭遇するような保証を要しない。実際には、製品設計者又はディジタルシステムオペレータは、所与の検査手順に関連するその目的(scope)及び精度パラメータを定める。
図3に示されるいくつかのステップは、それが適切な場合には変更又は削除されることが可能であり、追加的なステップがフローチャートに付加されることも可能である。これらの変更は、本発明の範囲又は教示内容から逸脱せずに、具体的な検査アーキテクチャや特定の境界モデル検査構成やコンフィギュレーションに準拠するものである。
本発明は、特定の実施例に関連して詳細に説明されているが、システム10は任意の状況に拡張されることが可能であり、その状況では、選択されたタスクを実行する又は指定された特性を包含するように設計又は製造される所与のターゲットについて、検査が行なわれる。更に、システム10によって顕著な柔軟性又はフレキシビリティが得られ、任意の適切な1以上の要素が、それらの動作を向上させる別の要素と置換され得る。例えば、システム10は、BMCツール要素20、POBDDデータ構造14及びアルゴリズム要素16のような具体的な要素を参照しながら説明されてきたが、これらの要素は、それが適切ならば単一の一体的装置内に設けられることも可能であり、又はそれらの機能をもたらす装置と置換されることも可能である。POBDDデータ構造14は、その検査能力を強化するために、他の適切な検査又はシミュレーションプロトコルと共に使用され得る。加えて、設計者情報24は任意の適切な手法でPOBDDデータ構造14に通知され或いは与えられ、BMCツール要素20に、境界モデル検査を実行するのに好都合な開始ポイントが用意されるようにする。
加えて、システム10は1以上の個別素子を参照しながら説明されてきたが、処理動作を向上させるために、追加的な中間的要素がシステム10に設けられることも可能である。例えば、追加的な要素は、BMCツール要素20及びPOBDDデータ構造14間の情報通信に使用され得る。本発明は広範な汎用性の恩恵に浴することが可能であり、これらの要素は様々な中間的処理要素に関連して適切な形式で動作することが可能であり、所与のターゲット要素又はオブジェクトに関する検査手順を支援する。
多くの他の変更、置換、変形、代替及び修正が当業者に明白であり、本発明はそのような変更、置換、変形、代替及び修正の総てを本発明の精神及び特許請求の範囲内に包含することを意図する。更に、本発明は、特許請求の範囲以外の明細書中の記載による一手法に限定されることを意図しない。
図4は、ターゲット回路44に関連するエラー状態を評価するシステム42の概略ブロック図である。システム42は、アルゴリズム要素48を含む区分け順序付け2進判定図(POBDD)データ構造46を包含する。加えて、システム42は補助データ構造50とPOBDDデータ構造46と通信する設計者情報部52とを包含する。システム42は、一般的には、検査手順又はプロセスが実行される任意の集積回路、ディジタル要素、処理構成、又は2進アーキテクチャの中に設けられ又はそれらに関連して動作する。追加的に、システム42は、情報又はデータのディジタル処理に関連する任意の装置、部品、ハードウエア、ソフトウエア、オブジェクト又は要素と協働して設けられ得る。
本発明の教示内容によれば、システム42は、ターゲット回路44内でエラー状態を評価することの可能な検査プロセスに関連する要素を与えるように動作する。補助データ構造50を起動することで、処理される区分けによる計算に関連付けられるトレース(trace)又は記録、1対の区分間で行なわれる通信内容、それら通信の持続時間に関する時間間隔等を維持することができる。これは、エンドユーザが、特定の状態に関連する源(origin)又は血筋(lineage)の正確な記録を維持することを可能にする。この情報を状態のフロンティア(frontier)形式で(即ち、到達可能な各ステップ内で追加される新たな状態)格納及び維持することで、分析に関する全体的な空間的複雑性が最小化される。各ノードはPOBDD演算における状態のフロンティアを表現する。プロセスは、初期状態が達成されるまで反復される。一般に、単一の状態は、支配的な浅い初期状態を表現する。補助データ構造50によって生成される詳細な情報が計算に与えられることに起因して、このプロセスは、検査手順の効用の観点から極めて有利な結果をもたらす。
システム42は、別の検査又はシミュレーション手法よりも極めて高速であり得る。このことは、部分的には、POBDD技法に関連するエラートレースアルゴリズムの統合性(integration)に起因する。増進した速度は、更に、検査手法が、大きなシーケンス深度又は複雑な回路を含む多くの追加的要素について実行されることを可能にする。
また、システム42は、ターゲット回路44に関連するエラー状態を探索する又は識別する際の精度を向上させる。エラー状態に関連する更なる情報を判別することなしに、ターゲット回路44内の不備を見分けることは無意味である。システム42のアーキテクチャは、より正確な経路決定を迅速に行ない得る演算能力を与える。このことは補助データ構造50によるものであり、それは、遭遇するエラー状態に関連するエラー追跡処理を実行するために使用される。
また、システム42は、ターゲット回路44に関連付けられる到達可能性パラメータを拡張することができる。ターゲット回路44内の新たな又は未探査の深い状態(或いは調査されない)は、システム42を用いては網羅されない。深い状態は、一般的には、充足可能性(SAT)手順又は所与のターゲット回路の検査を実行するための2進判定図(BDD)を用いて到達すること又は見出すことは困難である。システム42は、より多くの完備な分析に適合させることが可能であり、その分析は、検査が、SATやBDD法が制限される回路内に深く進行することを可能にする。一般的には、システム42のアーキテクチャは、より多くの効果的な検査プロセスを与えるために、POBDDプロセスとエラートレースプロトコルを結合するよう動作する。同時に、システム42は、探索プロセス中に保持される計算内容に起因して、検査プロセスに関連する待ち時間を顕著に低減させ得る。
追加的に、システム42はエラートレースデータ構造を含み、それは画像処理演算の各一連のステップ(即ち、ある状態群から次のものに進むまで)に要する時間についての情報を付する又は注釈することが可能である。従って、経路を再トレースする際に、そのエラーから初期状態に進む複数の方法が存在する場合に、前進及び後退方向に進むことが実質的に同程度の時間を要するとの前提の下に、その注釈を利用して、おそらくは「より速い」経路を選択することが可能である。従って、エラートレースデータ構造は、任意の情報を付することが可能であり、その情報は、時間、スペース(ピークに加えて平均値)、深度、連結/定量化スケジュールを測定する「良好度基準」、配列統計値(その地点までに再配列化された最大グラフ、再配列化の呼出数)、例えば以前の通信におけるそのノード「n」(状態群)になされた通信数のような後の計算に使用され得る。この情報は、システム42に適切に格納され維持され得る。
ターゲット回路44は、上述した又は意図される機能に従って動作することを確認するために検査されることを求められる電子的又はディジタル的なオブジェクト又は対象物である。ターゲット44内の部分空間に関する整合性、有効性又は設計仕様は、POBDDデータ構造46を用いて分析される。ターゲット回路44は、ターゲット回路44と相互作用することの可能な論理ゲート、カウンタ、インバータ、バッファその他適切な装置、部品、又はオブジェクトを含む任意の関連回路を包含し得る。或いはターゲット回路44は、検査環境下で2進データ又はディジタル情報を処理することの可能な他の適切な装置、部品、アーキテクチャ、回路配置、ハードウエア、ソフトウエア、オブジェクト又は要素であり得る。ターゲット回路44はいくつかの特性を包含する(又はそれを実行することの可能にする)ために特別に設計され得る。本明細書中で使用されているような用語「特性」は、ターゲット回路44に関連する任意の能力、特徴、操作、動作又は挙動を包含する。動作時にあっては、指定された特性又は特徴を維持すること又はそれが上述の動作を適切に実行することを保証するために、ターゲット回路44は検査され又は有効化される。
POBDDデータ構造46は、2進又はディジタル環境でBDD要素の区分化を実行するよう動作し得る要素である。POBDDデータ構造46は、システム42内で操作に関する論理関数を表現する又は生成するものである。ここに言及されるように、POBDDデータ構造46は、適切であるならば、区分化され減縮された配列の2進判定図(PROBDD)又はBDDデータ構造(区分化される可能性はある)を包含し得る。PROBDD及びPOBDDなる語は、可換であり、それらのアプリケーションを説明する際に(場合によっては簡略化のため)適切な様々な形式で一般的に使用される。PBDDデータ構造46は、設計者情報52を受信し、設計者情報52に基づいて状態群を抽出するためにターゲット44に関して予備的分析を行なう。POBDDデータ構造46は、ターゲット回路44に関連して選択された特性を評価するために、アルゴリズム要素48に包含されている1以上のアルゴリズムを起動する。第1群の状態は識別されるので、補助データ構造50は、遭遇するエラー状態に関連する情報を収集するために格納される及び後に呼び出される任意数の計算を実行する。本明細書で使用されているような「エラー状態(erroneous state)」なる語は、ターゲット回路44に包含され得る任意の不具合、グリッチ(glitch)、不完全性、又はエラーを包含する。これは、任意の違反的な挙動、表示されない任意の指定された特徴を包含する。
POBDDは、一般的には正準であり、それ故に複合的等価的な検査に使用され得る。POBDDは、シーケンス回路検査用の到達可能性分析に連続的に適用され得る。可到達状態集合はPOBDDとして表現される。これは、所与の時間間隔の間に対応するメモリ内で1つの区分のみを維持することで、メモリ要請を最小化する。加えて、可到達アルゴリズムを別々に用いて各区分について固定点演算が実行され、そのアルゴリズムは、POBDDデータ構造46により使用されるPOBDDプロトコルに関連して、アルゴリズム要素48内に包含され得る。
実施例の動作に関しては、設計者及び製造者は、試験又は検査される特性、特徴、動作又は挙動を識別する何らかのプログラムをターゲット回路44に書いている。特性又は特徴は、それがPOBDDデータ構造46に通知される前に特定の構文で適切に書き込まれる。プログラムはその後にPOBDDデータ構造46に通知され、POBDDデータ構造46はターゲット回路44にて指定された特性を検査する。POBDDデータ構造46は、その後に状態群を生成し、BDDフォーマット内でその群を表現する。
アルゴリズム要素14内で選択されたアルゴリズムを起動する又は実行することで、POBDDデータ構造46は、回路アーキテクチャ又はコンフィギュレーションの全体を眺めることなしに、ターゲット回路44内を選択的に深く探査し得る。回路要素全体を眺めることは、検査プロセスを顕著に遅くする。その代りに、アルゴリズム要素48が起動され、深淵形式(deep manner)で複数状態の小部分(部分空間内)を評価するために、ターゲット回路44内の所定の場所が調査される。
ターゲット回路44の部分を評価する場合に、POBDDデータ構造46は、ターゲット回路44内に包含されるエラー又はエラー状態を見分ける。これは、ターゲット回路44内の特定の場所を検査する手順の中で最初の部分である。エラーは、ターゲット回路44にとって相応しくない又は不適切な挙動又は特性に関連付けられる。その手順の第2段階では、システム42が、遭遇したエラーに関連付けられる初期ポイントを判別するために使用される。その初期状態に到達するために、経路が判別され、厳密な又は正確なトレースが認識され得る。
エラー状態に関連する判別又は評価は、一般的には2つのセグメント又は部分に分割される。第1セグメントでは、操作に関する論理関数の表現がPOBDDデータ構造46によって与えられる。第2セグメントでは、状態群を計算する演算内容が生成される。状態中のある部分集合から状態中の別の部分集合へ移動するのに採用される経路が判別される。その経路は、初期状態に到達すると終了するものである。加えて、別の部分集合を判別する又はそれに到達するためどの部分集合が使用されたかについての演算がなされ、例えばその処理内容をもたらすのにどの程度の時間を要するか又はこの手順の間にどの程度のメモリが使用されるか等のような別の適切なパラメータも導出され得る。加えて、(上述したような)記述的な注釈がそのような処理の間に行なわれ得る。
初期状態は目標視される、というのは、それがエンドユーザにとって利用可能な状態を表現するからである。ターゲット回路44は一般的にはその回路が電源投入された場合の初期状態を有する。ターゲット回路44がその初期状態から始まり、後にエラーに遭遇する場合に、設計者は、何かが不正確である又はエラー状態が存在することを断定的に確証することを希望する。所与の入力の組合せが与えられ、それは、適用された場合にエラー状態を生み出す又は到達するものであり、不具合的な挙動が表示され又は明確化される。エラー状態が得られると、そのエラー状態から当初の初期状態へ戻る経路がトレースされる。この経路が判別されると、それは、所与のシーケンスを利用して判別された経路と共に処理がなされる場合にそのエラー状態に到達することを、設計者に示す又は明らかにするために使用される。
アルゴリズム要素48は1以上のアルゴリズムを包含するデータ処理オブジェクトであり、そのオブジェクトは具体的な又は指定された特性がターゲット回路44内で探索され又は検査されることを可能にする。また、アルゴリム要素48はターゲット回路44用の計算に関連付けられる1以上のアルゴリズムを包含し得る。これらのアルゴリズムは、補助データ構造50により起動され、且つ例えばエラートレース要素のような適切な処理又はプロトコルを包含する。アルゴリズム要素48は、POBDDデータ構造46内に包含され、又は特定の処理要請に従って外部的なコンフィギュレーションや回路配置に設けられ得る。加えて、アルゴリズム要素48は他の外部要素と通信することが可能であり、その要素はターゲット回路44内の部分空間を検査するのに使用される1以上の命令や特徴を与えるものである。更に、アルゴリズム要素48は、ターゲット回路44に関連する1以上の特性を検査するために、設計者情報52を直接的に受信し得る。また、設計者情報52は、検査プロセスに委ねられる回路や要素の種別を含む又は指定する。アルゴリズム要素48は、POBDDデータ構造46によって実行され得る検査処理を支援するよう動作する任意の適切なハードウエア、ソフトウエア又は要素を包含する。
補助データ構造50は、ターゲット回路44のパラメータに関連する様々な演算を実行するよう動作し得る要素である。補助データ構造50は、アルゴリズム要素48を利用又は起動し、それがターゲット回路44により与えられるデータについて動作する場合に、指定された演算を行なうことが可能であるようにする。補助データ構造50は、ターゲット回路44内で遭遇したエラー状態をトレースする又はたどる。補助データ構造50は、ターゲット回路44に関する1以上の演算を実行することの可能な任意の適切なソフトウエア、ハードウエア、部品、装置、オブジェクト又は要素を包含し得る。加うるに、補助データ構造50は、POBDDデータ構造46内に包含されること又は適切な場合には他の適切な場所に設けられることが可能である。加えて、補助データ構造50は、ターゲット回路44に関する演算を実行するのに使用されるアルゴリズムの部分を包含する。或いは、補助データ構造50はシステム42以外の命令を備え、適切な演算が実行され、エンドユーザに与えられるようにし得る。
動作時にあっては、プログラムはアルゴリズムを含むソフトウエアを用いて書き込まれ、そのソフトウエアはターゲット回路44及びBDDに関する所与のデータ構造を解釈することができる。データ構造は、例えばエラートレースアルゴリズムのようなアルゴリズムによって理解され又は分析され得る。エラートレースアルゴリズムは、ターゲット回路44に関する及び区分けされたBDDに関連するデータ構造を解釈することが可能である。エラートレースアルゴリズムは、一般的には2つの経路を含む。第1の部分はPOBDDデータ構造46に関連し、エラートレースは様々な経路を格納する手法を提供し、エラーのある地点が決定された場合に、初期状態に戻るある経路が形成されるようにする。第2の部分では、複数の経路に遭遇する場合に、エラートレースアルゴリズムがトレースする最適な経路(又は最も効率的な経路)を指示し得る。
別の例では、システム42は、更なる特殊性を有するエラー状態の存在することを判別可能にする。例えば、ゲート構成又は論理(例えば、AND、OR、XOR、及びXNORゲート)が不備である、接続が不適切である、誤った書き込み接続が存在する、又は仕様が誤解されていた若しくは誤って解釈されたような場合である。従って、エラー状態を見出すことに加えて、更なる情報がエラー挙動に関連して導出され得る。初期状態から誤りのある状態へ設計内容を導く又は促す虞のある入力の組合せシーケンスが識別され得る。
設計者は、どの組み合わせが回路の所与の経路に関連付けられているかを知ることができる。この情報に基づいて、設計者は、有効であるものと疑義のあるものを分離する際に、不備のある又は不適切なものに関連し得るものを除去することができる。設計者は、合理的な明瞭性(specificity)と共に、期待に沿う回路部分と指定された又は予定された特性に従わない部分とを判別する。
実施例では、エラートレース演算が補助データ構造50によって行われ、検査手順の第1部分が実行される。POBDDデータ構造46は、一群の状態を捕捉し、それらの除隊に関連する一連の演算を行う(例えば、状態1から状態100)。この演算が行われた後に、状態1乃至状態110に関連付けられる第2の演算がなされ、状態101乃至状態110が新たな状態になり、以前の100個の状態は既知である。新たな10個の状態は、「フロンティア(frontier)」と言及される。新たな10個の状態はBDDとして表現され、ディスク、メモリ又は任意の適切な格納媒体に適切に保存される。あるフラグがこの状態群に付与され、そのフラグは、それらがどの区分に所属するかを説明し、その状態が由来するところを詳述する更なる情報を与え、それらの状態に至るのにどの程度の時間を要するかを説明する。これは、補助データ構造50の動作を反映し、それは、そのような地点にどのようにして到達したか、どのウインドウで処理がなされたか、その地点に至るのにどの程度の時間を要したか、又はどの程度のメモリが消費されたか等のような多数のパラメータに関連付けられる。
補助データ構造50内のエラートレース要素は、格納部に及び演算経路に関する検索に一般的には関連付けられる。その概念は、ツリー内の総ての画像演算を記録しようとする。画像演算は、ソース区分から宛先区分の間に生じ得る。各記録はソースフォーマット内の開始集合を形成する((画像演算(固定点又は通信)及び宛先で演算される画像)。また、この演算機能を解除する機構も包含する。そのようなノードはエラートレースノードと言及される。例示的形態では、エラートレースノードは以下のような画像演算によって付加され得る。画像演算が新たな状態を生成する場合に、それはエラートレースノードに格納される。このノードはその状態に関するBDD、目下のその区分に関する(f)及びウインドウ関数(w)を包含する。また、fの以前の状態を含む区分でのフロンティアに対するポインタを包含する。
補助データ構造50によって実行され得る多くの演算があり得る。以下に詳細に示されるように、例として、演算ステップで格納に関する3つのクラスが設けられる場合を想定する。この3種類は、エラートレース、区分けフロンティア及びエラートレースノードである。エラートレースは、そのセグメント又は演算に関するツリー全体の中のリーフ(leaf)を格納する。一群の到達可能な状態S中の各状態sに関し、ツリーは、その状態sが到達可能な集合Sに最初に付加された場所を包含する。その構造は、到達可能な任意の状態から初期状態に戻る経路を発見するための情報を包含する。形成された各区分けに関し、現在のフロンティアを形成する状態群(その区分に対応するリーフ)が格納される。フロンティアが識別されると、そのフロンティアの各ノードについて、従前のフロンティア選択され、初期状態にトレースして戻るために使用される。
区分けフロンティアは、所与の任意の区分に対する現在のフロンティアを形成する状態群を表現する。フロンティアは一般的にはその区分(他の総ての区分けからの可能な1つ)に最も最近の通信で加えられた状態として定義され、以後最小固定点(run least fixpoint)演算を実行する。上記演算の各々によって導入された状態群は、BDDとして別のエラートレースノードに格納される。従って、区分けフロンティアは、実際の集合郡(即ち、BDD)であり、その理論的結合集合(即ち、BDD結合子)は、その区分けに付加されているが別の区分けとの通信には未だ使用されていないところの到達可能な状態群を表現する。
エラートレースノードは演算ツリーのノードを表現する。エラートレースノードは、画像演算の単一ステップで導入された状態の集合Sに対応するBDDを格納し得る。また、次の情報も格納されることが可能であり、それらは:どのように生成されたか_(その集合Sを得るために行われた演算種別)、prev_(BDDの集合への復帰ポインタ、各々は候補であり、その候補からS中の状態が生成される。‘S’中の各状態はprev_の1つにおける状態のものから生成される。これは、タイプ区分フロンティアのオブジェクトであり)、id_(このノードについての固有数)、フロンティア_(上記のように定められた集合‘S’のBDD表現)、及びウインドウ_(演算画像は、フロム(from)_区分及びトゥ(to)_区分を有する。ウインドウ_はフロム_区分のウインドウ関数である。)である。
エラートレースに加えて(又はそれに関連して)、補助データ構造50は、ターゲット回路44に関連した演算を実行するよう動作し得る任意数の適切なアルゴリズムを包含し得る。これらのアルゴリズムは、例えばアルゴリズム要素48内のように、補助データ構造50内に格納され、又はその外部に設けられる。アルゴリズムは任意数の演算を実行し得る。例えば、格納アルゴリズムは、転送アルゴリズム中にどのトレースが格納されるかを識別するよう実現される。各区分に関し、フロンティアは、フロンティアの現在の集合を一群のBDDとして格納するように取り扱われる。フロンティアはそのような多くのBDDから構成され、それらの内あるものは最新の最小固定点の様々な状態により導入され、別のものは(可能な)他の総ての区分からの最新の通信によって導入される。
このフロンティアでのBDD数は、最悪の場合に、O(M+d_i)として与えられ、ここでMは区分数であり、d_iはi番目の区分における固定点の深度である。対応するグラフに関し、これは、最悪の場合にO(M*(M+d_max))となり、エラートレースデータ構造は情報が注釈付けされ、その情報は、時間、スペース(ピークに加えて平均)、深度、結合性/定量化スケジュールを測定する「良好度基準」、再配列統計値(このポイントまでの再配列化最大グラフ、再配列呼び出し数)又は従前の通信におけるこのノード「n」になされた通信数等のような後の計算に使用され得るものである。固定点の場合に、ソース及びターゲットは同一区分である可能性があり、BDDはその区分に関する管理要素内に格納される。通信の場合には、フロンティアBDDは宛先区分の管理要素に格納され、そのウインドウはソース区分のものに関連する。
また、経路検索アルゴリズムは、補助データ構造50によって実行され又は使用される。初期状態から所与の状態にわたって経路を検索するために、以下のステップが行われる。先ず、その状態を含む演算ツリー中のノードが判別される。一般に、このノード又は少なくともこの集合を包含するフロンティアは、状態sが発見される場合に利用可能である。従って、そのような集合は復帰経路に与えられる。或いは、演算ツリー全体がそのようなノードを判別するためにスキャンされる。第2に、所与のノードN_iの下で、それが従前の区分フロンティアP_{i+1}を有することを判別する。状態s_{i+1}を含むP_{i+1}中のノードN_{i+1}は、状態s_iの従算の単独ステップを包含し、その後に取得される。第3に、回帰(re−curse)がiの連続値と共にステップ2で実行され、あるN_kが演算ツリーのルートノード、即ち初期状態を含むノードになるまで実行される。第4に、経路s_0...s_i...s_kは、良好でない状態sから初期状態に至る経路を表現する。初期状態から必要な状態sへの経路を求めるためにそれは反転され得る。
実施例及び教示内容を説明するのみのために、以下にアルゴリズム実施例に関する詳細が与えられる。以下の説明は、例示目的のためにのみ提示されるものであり、従って補助データ構造50によって実行される(又は使用される)特定のアルゴリズムの用途や柔軟性を限定するように解釈されるべきではない。
これらは一般にエラートレースプロトコル内での相異なる3種類の演算である。第1は、最小固定点である。画像演算が新規状態を生成する場合には、新たなエラートレースノードが形成され、そのノードの従前のポインタがフロンティア群に割り当てられる。このノードは区分化のためのフロンティアに付加され得る。第2種別の演算は区分iからjへの演算である。画像演算が新たな状態を生成する場合には、新たなエラートレースノードが生成され、その従前のポインタは、通信が始まる前に(旧)フロンティア群に割り当てられる。そのようなノードはjのフロンティア群に割り当てられる。第3種の演算は再区分化であり、区分i,r,sを生成する際に区分iと共に使用される。i,r,s各々についてのフロンティアはiのフロンティアに設定される。一般に、形成されることを要する新たなエラートレースノードは何ら存在しない。
更なる説明としての実施例が与えられる。演算ツリーは以下の手法で生成される。初期に1つの区分があるとする。新たな状態が追加されるI演算の1ステップを行う。それは静的に2つの区分に分割され(n=1に起因して、又はn>1m=2に起因して)、それらの区分は1及び2と番号付けされる。両区分は最小固定点で各々2つのステップを有し、即ちそれが分割されるときに何らの新たな状態も付加されない。区分化はその後に通知される。この後に、別の固定点演算がなされる。区分2で不具合が生じ、動的な再区分化によって形成される3つの新規区分となり、2,3,4と番号付けられる。固定点は区分4で実行される。区分4での状態の1つは不具合となり、この状態を戻すようトレースすることが適切である。別の固定点は早期の復帰に起因して一般には実行されない。
図5は、ターゲット回路44に関連するエラー状態を評価する方法に関連する一連のステップ例を示す概略的フローチャートである。本方法はステップ300から始まり、設計者は、ターゲット回路44のような特定の回路を評価し、検査される必要のある何らかの特性に着目している。パラメータはPOBDDデータ構造46に通知又は提供され、タイムアウト時間間隔もそのプログラムに与えられる。例えば、POBDDデータ構造46によって実行されるプログラムが5000秒を超えるべきでないことが指定される。このプロセスがその時間間隔内で実行される場合には、そのプロセスは申し分ないものとされる。プログラムがその時間間隔内に完了しなかった場合には、到達した最大深度が表示される。或いは、タイムアウト期間が修正され、プログラムが再度実行され得る。別の場合には、部分空間サンプリング位置が適切に変更され、最適な深度が達成されるようにする。
ターゲット回路44に関連する情報が受信された後に、1以上のPOBDD処理がステップ302にてPOBDDデータ構造46によって実行される。POBDDデータ構造46は、ターゲット回路44内の部分空間に関連するエラー状態を識別するために、設計者情報52を利用する。ステップ304では、補助データ構造50が、ターゲット回路44に関連する1以上の演算を実行するために選択されたアルゴリズムを起動する。ステップ306では、エラーに関連する経路を識別するための演算処理が利用される。その経路は、エラーに関連する初期状態と識別されたエラー状態との間の相関関係を反映する。ステップ308では、設計者はエラー状態とそれらに関連する経路を識別し、ターゲット回路44内の不完全性又は不具合が解決され又はそれらに対処されるようにする。例えば、この情報は、製造段階又は設計段階に関連する問題又は仕様に対処する又は修正するために使用される。加えて、その情報及び成果は対応する製品に対処するために使用され、それが設計者により提供された基準に合致するようにする。或いは、この情報は任意の他の適切な目的に使用される。
図5に示されるステップのいくつかは変更又は削除されることが可能であり、適切な及び付加的なステップがフローチャートに付加されることも可能である。これらの変更は、本発明の範囲又は教示内容から逸脱せずに、具体的な検査構造、特定のエラートレースプロトコル、回路配置、コンフィギュレーションに準拠することが可能である。
本発明は特定の実施例を参照しながら説明されてきたが、システム42は任意の場面に拡張されることが可能であり、その場面では、選択されたタスクを実行し、指定された特性を有するように設計又は製造された所与のターゲットに関して検査が求められる。更に、システム42によって顕著な柔軟性が与えられ、任意の適切な1以上の要素が、それらの動作を向上させる別の要素と置換され得る。例えば、システム42は、補助データ構造50、POBDDデータ構造46及びアルゴリズム要素48のような具体的な要素を参照しながら説明されてきたが、これらの要素は、それが適切ならば単一の一体的装置内に設けられることも可能であり、又はそれらの機能をもたらす装置と置換されることも可能である。POBDDデータ構造46は、システム42の検査能力を強化するために、他の適切な検査エラートレースプロトコルと共に使用され得る。
加えて、システム42は1以上の個別素子を参照しながら説明されてきたが、処理動作を向上させるために、追加的な中間的要素がシステム42に設けられることも可能である。例えば、追加的な要素は、補助データ構造50及びPOBDDデータ構造46間の情報通信に使用され得る。本発明は広範な汎用性の恩恵に浴することが可能であり、これらの要素は様々な中間的処理要素に関連して適切な形式で動作することが可能であり、所与のターゲット要素又はオブジェクトに関する検査手順を支援する。
図6は、ターゲット回路56に関連する画像処理演算を実行するシステム54の概略ブロック図を示す。システム54は、アルゴリズム要素60を含む区分化され順序付けられた2進判定図(POBDD)データ構造58を有する。更に、システム54は、PODDデータ構造58と通信する設計情報部62とを含み、その情報はエンドユーザにより入力又は検査されるよう求められる特定の情報を反映する。システム54は、一般的には、集積回路、ディジタル要素、処理構成要素又は検査手順や処理が行なわれる2進アーキテクチャ内で区分化され、又はそうでなければそれらに関連して動作する。加えて、システム54は、情報又はデータのディジタル処理に関連する任意の装置、部品、ハードウエア、ソフトウエア、オブジェクト又は要素と協働して設けられる。
本発明の教示内容によれば、システム54は、ターゲット回路56の部分空間内のかなりの深度に達することの可能な検査プロセスを提供する。システム54は、ターゲット回路56に関連する画像演算で局所的な又はローカルな区分けを実行する。画像処理では、結合又は論理積(conjunction)は困難な処理であり、定量化は演算プロセスに関するより簡易なセグメントを表現する。定量化の後に、典型的には、分析に関連するグラフは小さくなる。一般に、データ構造のグラフは所与の関数を表現するために生成され得る。BDDのデータ構造が大きすぎて過剰な情報を所有するような場合には、それは過剰に大きいものと解釈される。そのような場面は局所的な暴走又は不具合として説明される又は言及される。
仮に結合が容易になされ得るならば、全体的な計算の問題も容易にされ得る。区分けされたBDD状のデータ構造(POBDDデータ構造58)を形成することで、論理積の問題点又はボトルネックは効果的に排除され得る。所与のPOBDDの各セグメント(又はリーフ)は、最終的な画像の部分集合(既に完了済みの論理積及び定量化処理を包含する)である。画像の各リーフ又は部分集合は、演算が実行された後に別の管理部に転送される。各リーフは(適切であるならば)別の変数順序を用いて別々に演算され得る。この分離的処理は、主要入力、状態変数又は局所的分解変数等にて実行される。
システム54は共通の順序で画像を分離するよう動作する。この分離は、高価ではない処理を表し、他の検査手法よりも直接的である。論理積/定量化も高速である、というのは、それは一般的に区分けされた構造に関して実行されるからである(別の順序を利用することも可能である)。加えて、各画像の部分集合はそれが完了すると速やかに転送されるので、部分空間の不具合時でさえも、処理は、異なる別の直交する部分空間を既に演算する。これは、システム54が部分的な画像分析に使用されることを可能にする。更にこれは様々な特性の部分的検査を可能にし、それは検査ツール及び手順についての実用的な機能を表現する。
加うるに、システム54は検査基盤又は検査プラットフォームを提供し、それは検査されることが求められる多数の様々なアーキテクチャを収容する。システム54は、検査プロセスにおける任意の種別のBDDを利用する正式な検査ツールを与える。更に、システム54は、画像処理に準拠して非POBDDを並列化するために使用され得る。また、システム54は、可到達性手順の速度を顕著に増進する。そのような速度に関する機能強化は、より迅速な検査ツールを生成することを支援し、特定のニーズによる準正式な検査ツールを生成して支援する。
システム54は検査アーキテクチャを提供し、それは別の検査又はシミュレーション技法よりも顕著に高速である。このことは、部分的には、ローカルな区分化を検査プロセスに統合することに起因する。ある実施例では、そのような検査法は、ターゲット回路56に関連する可到達性パラメータを増長させる。ターゲット回路56内の新規の又は未探査の状態(或いは未調査の状態)は、システム54を用いてより短時間には網羅されない。深い状態は一般的には可充足性(SAT)手順、又は所与の回路の検査を実行するBDD処理を使用する際に無視される。システム54はより多くの完備な分析を収容し、別の手法では制限されてしまうような検査が回路内に深く実行されることを可能にする。
ターゲット回路56は、所定の又は意図される機能に従ってそれが動作することを確認するためにテストされる電子的又はディジタル的な対象物である。ターゲット回路56の部分空間の整合性、有効性、又は設計仕様は、POBDDデータ構造58を用いて分析される。ターゲット回路56は、論理ゲート、カウンタ、インバータ、バッファその他適切なデバイスを含む任意の関連回路、部品、又はターゲット回路56と共に協働し又は相互作用することの可能なオブジェクトを包含し得る。また、ターゲット回路56は、検査環境下で2進データやディジタル情報を処理することの可能な他の適切な装置、部品、アーキテクチャ、回路配置、ハードウエア、ソフトウエア、オブジェクト又は要素であり得る。ターゲット回路56は何らかの特性を含む(又はそれを実行し得る)ように適切に設計される。「特性」なる語は、本明細書で使用されているように、ターゲット回路56に関連付けられる任意の能力、特徴、操作、動作、又は挙動を包含する。動作時にあっては、それが設計された特性や特徴を保持すること、又は指定された動作を適切に実行することを保証するために、ターゲット回路56は検査され、或いは有効化される。
POBDDデータ構造58は、2進又はディジタル環境でBDD要素の区分化を実行するよう動作し得る要素である。POBDDデータ構造58は、操作に関する論理関数を表現したものである。ここに言及されるように、POBDDデータ構造58は、適切であるならば、区分化され減縮され順序付けられた2進判定図(PROBDD)又はBDDデータ構造(区分化され得る)を包含し得る。PROBDD及びPOBDDなる語は、可換であり、それらのアプリケーションを説明する際に(場合によっては簡略化のため)適切な様々な形式で一般的に使用される。PBDDデータ構造58は、設計者情報62を受信し、設計者情報62に基づいて第1群の状態を抽出するためにターゲット56に関して予備的分析を行なう。サンプルされた部分空間からの第1群の状態は、システム54の能力を増大させる或いは強化するために使用され得る。POBDDデータ構造58は、ターゲット回路56に関連して選択された特性を評価するために、アルゴリズム要素60に包含されている1以上のアルゴリズムを起動する。
POBDDは、一般的には正準であり、それ故に複合的等価的な検査に使用され得る。POBDDは、シーケンス回路検査用の到達可能性分析に連続的に適用され得る。可到達状態集合はPOBDDとして表現される。これは、所与の時間間隔の間に対応するメモリ内で1つの区分のみを維持することで、メモリ要請を最小化する。加えて、可到達アルゴリズムを別々に用いて各区分について固定点演算が実行され、そのアルゴリズムは、POBDDデータ構造58により使用されるPOBDDプロトコルに関連して、アルゴリズム要素60内に包含され得る。
POBDDデータ構造58は、一般的には検査処理で使用される他の手法よりも顕著に高速である。更に、POBDDデータ構造58の区分化された構造は、コンパクトであり、より簡易な並列処理を可能にする。加えて、POBDDデータ構造58は、動的な区分化を行ない、メモリの機能低下を回避し、あるアプリケーションではその機能低下は「メモリ暴走」として言及される。POBDDデータ構造58は、ターゲット回路56内の膨大な状態を迅速に網羅することができ、更に、相互作用する有限状態マシーンの緩やかに接続された複数セットに設計内容を分割する。
実施例の動作に関しては、設計者及び製造者は、試験又は検査される特性、特徴、動作又は挙動を識別する何らかのプログラムをターゲット回路56に書いている。特性又は特徴は、それがPOBDDデータ構造58に通知される前に特定の構文で適切に書き込まれる。プログラムはその後にPOBDDデータ構造58に通知され、POBDDデータ構造58はターゲット回路56にて指定された特性を検査する。
アルゴリズム要素60は1以上のアルゴリズムを包含するデータ処理オブジェクトであり、そのアルゴリズムは、特定の又は指定された特性がターゲット回路56内で調査又は検査されることを可能にする。アルゴリズム要素60は、特定の処理要請又は回路配置に従って、POBDDデータ構造58内に包含され、或いはその外部に設けられる。加えて、アルゴリズム要素60は他の外部要素と通信することが可能であり、その外部要素は、ターゲット回路56内の部分空間を検査するために使用される1以上の命令又は特徴を与える。更に、アルゴリズム要素60は、ターゲット回路56に関連する1以上の特性を確認するために、設計者情報62を直接的に受信し得る。また、設計者情報62は、検査プロセスに委ねられる回路又は要素の種別を包含する又は指定し得る。アルゴリズム要素60は、POBDDデータ構造58で実行される検査動作を支援し得る任意の適切なハードウエア、ソフトウエア、オブジェクト、又は要素を包含し得る。一実施例では、アルゴリズム14は、最終的な画像の部分集合として形成される各区分を分析するために使用され得る適切なプロセスを包含する。
実施例の動作では、POBDDデータ構造58は検査プロセスを始めるために起動される。パラメータはPOBDDデータ構造58に通知又は与えられ、時間間隔も所与のプログラム用に選択され得る。ターゲット回路56に関連する可到達性分析を実行するために、遷移関係が構築される。POBDDデータ構造58は、部分空間分割を開始し、選択された深度での調査を可能にする部分空間が見分けられたか否かを判別する。集合のメンバ各々が結合され、不具合が生じる虞が生じる。変数が採用され区分化に委ねられると、それは複数の区分に分割される。それらの区分はリーフとして言及される。POBDDデータ構造58は、最終的画像の部分集合を表現するリーフを含むように提供される。各区分けはそれ自身有効であると考えられ、各々が最終画像の部分を反映し得る。
区分化は選択された変数について注意深く実行され得る。各リーフは(適切であるならば)別々の変数順序を用いて別々に演算され得る(結合及び定量化演算の双方を包含する)。別々の管理部が、各区分又はリーフを分析するために起動され得る。各リーフ(又は区分け)はその特定の属性(例えば、対応する変数順序)に基づいて異なって取り扱われ得るので、特定の区分けに関し、特定のプロセッサ(別の管理部)が設けられる。特定の演算が完了すると、対応するリーフは準備完了又は終了したものとして表示される。従って、各リーフは別々に処理され(及び適切な場合には同時に処理され)、総てのリーフが(分離された)論理和(OR)に結合され、単独の管理部に与えられる。或いは、リーフは別々の機能要素又はエンティティ(entity)として取り残される。所定の複数の区分は1つのBDDに結合され、適切且つ残余のものが全体的な区分けとして押し出される。
この動作は高価でない処理であり、総ての画像が共通順序で分離される(即ち、論理輪がとられる(ORed))。加うるに、画像の各部分集合は、それが完了した時点で転送され、ある部分集合が暴走した又は不具合が生じた場合でさえも、その処理は、異なるものとはされなかった直交する部分集合の計算を既に完了する。この手順は、部分的な画像分析を導出する。この手順に関する更なる詳細は、図7,8を参照しながら以下に説明される。
実施例及び教示内容を説明するために、ターゲット回路56の部分空間に関連する選択された特性を検査する場合に使用され得るいくつかのアルゴリズムを更に説明することが有益であろう。論理関数処理のための多くの演算は、OBDDにより表現される関数に関して効率的に実行され得る。例えば、その基本的処理のいくつかは次の通りである:
1.評価。OBDDに関し、f及び入力aに関するGは、その値f(a)を計算する。
2.減縮。OBDDに関し、Gは等価的な減縮されたOBDDを算出する。
3.等価試験。OBDDにより表現される2つの関数が等しいか否かを検査する。
4.充足可能性問題。問題に含まれるものは次のとおりである:
−充足可能性。OBDDに関し、fを表現するGは、f(a)=1を満たす入力aを見出す、又はそのような入力が存在しないことを出力する。
−SATカウント。OBDDに関し、fを表現するGは、f(a)=1を満たす入力数を計算する。
5.合成(適用としても言及される)。OBDDによって表現される関数f及びgに関し、Gは、G内に
6.置換(交換とも呼ばれる)。
−定数による置換。OBDDにより表現される関数f、変数xi、及び定数c∈{0,1}に関し、f|xi|=cに対するOBDDを計算する。
−関数による置換。OBDDにより表現される関数f及びg、変数xiに関し、f|xi|=gに対するOBDDを計算する。
7.一般的定量化及び実際的な定量化。OBDDにより表現されるf及び変数xiに関し、それぞれ
OBDDパッケージでは、通常的には、減縮したOBDDのみが表現されるように、演算負担軽減は他の演算の中に統合される。OBDDの多くのアプリケーションは、回路として与えられる関数に関する。従って、1つの重要な処理は、回路により与えられる関数についての演算であり、それは通常的にはその回路に関する記号を用いたシミュレーションで実行される。これは、入力変数を表現する関数についてのOBDDが構築されることを意味する。これは容易である、というのは、その関数xiに関するOBDDは、0後継部(0−successor)としての0シンク(0−sink)及び1後継部としての1シンクと共にxiでラベル付けされたノードのみから成るためである。回路はあるトポロジ的順序で評価され(各ゲートは、先行する総てのものが考察された後に考察される)、演算は各ゲートについてなされる。演算は、合成操作を用いて入力での関数を表現するOBDDを結合することによる、出力における関数表現である。
別の可能性は、所与の回路がより大きなブロックを形成することである。そのような場合には、OBDDは、各ブロックによって計算される関数について計算され、関数による処理置換と共にOBDDを結合する。算出されるOBDDの場合には、2つの回路により表現された関数に関し、等価性について回路を検査するためにOBDDに関する等価的な処理が行なわれる。
論理照合のようなアプリケーションでは、考察される関数についての署名が演算される。署名は、効率的に算出されることの可能な及び異なる関数については異なっているような関数特性である。署名は所与の関数が異なっていることを検出するために使用され得る。非常に簡易な署名は、ある関数の入力を満たす数である。SATカウントの処理は、それを算出するため及び適切であれば他の署名を算出するために使用され得る。
図7は、システム54内に包含され得る1以上の素子間の例示的な相互作用を示す概略図である。図7は、例示的な一群の開始点64a−c、一群のPOBDD要素66a−c及びBDD要素68を示す。これらの要素は概念的に表現されており、システム54に関連する一般的な原理を説明することが意図されている。POBDD技法が使用され、そのようなアーキテクチャについて分析が実行される。POBDD要素66a−cは、ターゲット回路56に関するリーフ又は区分を表現する。各々のPOBDD要素34a−cは、BDD要素68に結合され、各々はシステム54に備わる可到達性の分析についての画像処理手順を表現する。可到達成分析は正式な又は準正式な検査でシーケンス回路について実行される。
正式な検査に関し、可到達性の分析はターゲット回路56の所与のセグメントについて実行されることが、一般に適切である。どの状態が初期状態から到達可能であるかについての問い合わせは検査内容を反映する。一般的には、可到達成分析は別の問題をまねく。可到達性分析は、一群の遷移関係を構築すること及びその群のメンバ総てを結合することで実行される。回路に関する主要な入力及び現在の状態変数は、この態様から実在的に定量化され得る。概念的には、論理積が最初に行なわれ、定量化が2番目に実行される。この分析(特に、論理積段階)のグラフは、不具合を起こす又は過剰に大きくなり得る。その不具合に起因して、BDD公式的検査は実用的ではない。システム54は画像のローカルな区分化を行なうことでこれらの問題を回避する。画像演算の問題は、その連結の問題を解決するためにPOBDDデータ構造58を利用しながら解決される。対応するPOBDD構造の各リーフ(POBDD要素66−c)は、最終的な画像の部分集合を表現する。各リーフは、論理積及び定量化の処理の完了を反映する。各リーフ(又はその画像の部分集合)は、演算が完了した後に特定の機能を有する別の管理部に転送される。別の演算は、(適切であるならば)別の変数順序を用いて各リーフについて行なわれる。或いは、それらのリーフが結合され、特定のニーズにより適切にプロセッサに与えられる。適切な区分化は、主要な入力、状態変数又はローカルな分解変数にて実行され得る。
画像は共通の順序で分解され、その分解はターゲット回路56の検査に関する安価な処理を提供する。連結/定量化処理は概して高速である、というのは、それが別の順序で利用され得る区分けされた構造に関して行なわれるからである。また、任意の検査ツールについて、実際の検査が行なわれ且つ特定の機能を提供し得る。
システム54は、高価になる論理積(AND)演算を回避する改善された検査プロセスを提供し得る。AND処理は一般に演算中に不具合を起こすが、定量化後は小さくなる。場合によっては、グラフは、たとえ後に小さくなり得るとしても、画像処理中に非常に大きくなり、検査手順がもはや停止してしまう。システム54はローカル区分化でこれらの困難性を未然に防ぎ、その区分化は顕著に高速であり、実質的に廉価なコストで済み、論理和(OR)機能を起動し得る。
システム54のいくつかの動作を説明するために実施例が与えられる。この内容は説明目的のためのみに使用されるので、この実施例はここに含まれる事項を限定するよう解釈されるべきでないことは、重要である。多くの演算(OR若しくはAND機能又は双方)は、一般的には固定点に到達する前に実行される。例えば、ステップ10及び11の間で不具合が生じる。そして区分化が実行される。問題は、区分化が必要とされることを、BDDが不具合になった後でしか知らされないことである。変数はその不具合を軽減するように選択されるが、不具合が既に生じているので、不具合以前の最後の状態に戻ることは一般に冒険的で困難である。これは、部分的には、演算が可逆的でないことことに起因する。
他のアプリケーションでは、ミクロなステップ(この例ではステップ1乃至9)は一般的には破棄され、これは高価にしてしまうことに留意を要する。システム54は、不具合が論理積(AND)段階にて深刻でないことを見分けることで、そのような浪費を回避する。演算が実行される各時点では、記録が維持される、又はそれらが共に結合される場合に、与えられる監視関数がBDDのクラスタにより示される異常な挙動を記録する。異常な挙動は大きなグラフによって表現され、そのグラフは予測されるものより顕著に大きい。このグラフが過剰に大きい場合は、特定の処理についての演算が始まる。
例えば、クラスタ#79及び#80が、それらが結合される場合に不具合を起こすことが2つのステップにて見出された場合に、コストを得るためにコスト計算が実行される(例えば、グラフ中の変数の順序)。将来的に、クラスタ#79及び#80が不具合を起こすと見受けられるならば、リストを算出するためにコスト計算が(結果の予測に)使用される。その予測リストは適切な区分けを選択するために使用される。
以後の評価における#80及び#81の間で不具合が起こる場合にも、そのような対応がなされる。予測リストは改善され、より多くのクラスタを与えるために、より多くのクラスタが対応する方程式に付加され得る。コスト計算は適切な場所で行なわれる。この予測リストは、実際に不具合が生じる場合の将来的な計算に使用され得る。
複数の区分中ローカルな区分けを単独のBDDにAND処理する間に、任意の2つの不具合に関し、システム54は全体的な又はグローバルな区分けに関する影響を収集するために使用される。動的な区分けの場合には、区分けツリーは均衡している又は不均衡であり得る。所与のツリーに関し、トップレベル変数は‘X’に等しく:0に等しいXはある区分を生成し、1に等しいXは別のものを生成する。これは、動的であり得る付加的な区分けの契機又はそのトリガとなる。予測リストが使用され、可能性のある結果の予測にて生成される。
また、いくつかのウインドウでは(それらを結合することを意図する場合に)、所定のウインドウ(例えば、#1及び#2)が共に包含されるべきことが判別される。分析の終わりには、複雑な一群のBDD結果が生成される。ローカルな予測は、最適な結果を得るために複数区分を共通のウインドウに結合するために使用される。そのような手法は、効率を改善し、BDD処理に付随するコストを減らすように動作し得る。
教示内容を説明するために、POBDD技法に関連して実行されるいくつかの画像処理及び事前画像処理を説明することが有益であろう。関数は、一般に、ある領域を共通する領域に対応付ける。変数はXで表現され、出力はYで表現される。Xの組合せの各々はYに関するいくつかの表現になる。Xの組合せの各々ついて、結果として生じる固有の組合せが存在し、それはその関数を定義し得る。画像は、その関数に関連する所定の操作結果として生成されるものである。ある操作又は処理がその領域に適用され、その結果生じるものが画像である。例えば、複数の状態が用意され、それらの状態から多くの他の状態に到達可能である。ターゲット回路56内では、10個の状態から1000個の状態に到達可能である。その1000個の状態は、10個の状態に関連する画像を反映するものとして考察される。
画像処理は、対応する画像を投影する何らかの写すものを与えるプリズム又は鏡と考えられる。所与の画像に対して、対象物又はオブジェクト及び鏡又はミラーは、その画像を導出するために使用される。オブジェクトは、当初の10個の状態として言及され、ミラーはその処理であり、1000個の状態は画像群である。同様に、事前画像処理が定められる。この例での事前画像処理は、1000個の状態によって表現され得る。その処理もミラーによって表現され、これら2つの変数を用いてオブジェクトが導出される。従って、画像処理の場合に、オブジェクト及びミラーが存在し、その影響又はリフレクションが求められる。事前画像処理の場合は、リフレクション及びミラーが存在し、求められるものは、その画像を投影した当初のオブジェクトである。
状態分析における画像処理は、遷移/関連付け処理として言及される。遷移/関連付け処理は、所与の状態空間で可能な遷移を結びつけ、そこでは、対応付け又はリンクが存在しないことに起因して、状態1から状態10へ動くのを禁止する所定の規則が存在する。可能な及び不可能な遷移は、その後に捕捉され得る。そして、ミラー(遷移/関連付け処理)は、そのシステム/回路/状態でどのような遷移が可能であるかを示す。
遷移/関連付け処理に関するあるアプリケーションの後にアクセスされ得るほんのいくつかの状態が存在する。従って、遷移/関連付け処理を適用した後にその地点からより深い深度への移動がもたらされる。同様に、状態1000から、遷移/関連付け処理を用いて当初の状態の値が判別され得る。従って、事前画像処理は所与の状態群について行なわれる。画像は、ミラー(遷移/関連付け処理)によって与えられるような状態のリフレクションである。画像及び/又は事前画像処理法は、ターゲット回路12内で何が深いかを判別するために使用され得る。
実施例における「より深い(deeper)」という語は、分析されるターゲット回路12に関連付けられる深度パラメータに言及している。所与の状態が到達可能であり、他の状態は事前の作業を最初に行うことなしには到達され得ない。状態は一般的には異なる深度を有する、というのは、ある固定点演算は早期に終了し、別のものは所与の試験回路内に深遠に伸びる。このことは、所与の関数の属性に準拠している。所与の関数は、あるウインドウ又は部分空間の下で、分析が深く伸びて続くように構成される。加えて、実証的に深い状態及び帰納的な状態群が存在し得る。実証的に深い状態は、一般にそれらが深いか否かを判別するために相当の作業量を必要とする。帰納的な状態群は一般的には深度に関して何らの保証も与えない。機能的な状態は(潜在的には速やかに)与えられるが、それらの状態が深いか否かは未知である。従って、それら2つの原理のバランスをとるのが一般的である。適切に検査技法を実行するには、速度も深度も無視され得ない。POBDDデータ構造58を用いることで、潜在的に深いいくつかの状態が計算され、又は所与の状態が「通常的に」深いものとして射影され、これらの状態がサンプリングに関して目標視される。
また、適切な時間間隔が、試験対象の所与の回路内の複数の部分空間のサンプリングに関連して設けられる。所定の期間は、ターゲット内の様々な部分空間を評価するために用意される。その期間が満了すると、プロセスは停止し、判定が行われる。その期間は、所与の検査プロセスに関連する便宜的な項目又は実際的なパラメータに準拠し得る。指定された期間内で何らの深い状態も見出されなかった場合は、そのプログラムは、より大きなタイムアウト値を含む別のモードで動作し得る。或いは、選択を実行する手法は、既にサンプリングした任意の部分空間(又は空間の種別)が再度訪問されないように変更可能である。深い状態に遭遇することの保証又は確実な証明を与えることで、効率に関する顕著な利益が最小の損失で達成され得る。効率に関するこの利益は、その損失に比較して不釣合いに大きくなり得る。
図8は、ターゲット回路56に関連する画像演算を実行する方法に関する一連の例示的ステップを示す概略的フローチャートである。本方法は、設計者がターゲット回路56のような特定の回路を評価する場合であって、検査される必要のある特性に着目する場合に開始される。POBDDデータ構造58はステップ400にて起動される。パラメータがPOBDDデータ構造58に通知され又は与えられ、時間間隔もプログラムに与えられる。例えば、POBDDデータ構造58によって実行されるプログラムは5000秒を超えることができないことが指定され得る。
ステップ402では、可到達性分析を実行するために一群の遷移関係が作成される。ステップ404では、POBDDデータ構造58が部分空間を分割し始め、選択された深度での検査を許容するように部分空間が識別され得るか否かを判別し、その部分空間は割り当てられた特性を与える又はそれによって決定されるものである。この手順がその時間間隔内に実行されるならば、その手順は申し分ないものとされる。プログラムがその時間間隔内で実行されなかった場合には、達成した最大深度が表示され得る。或いは、タイムアウト期間が修正され、再度プログラムが実行され得る。別の場合では、部分空間のサンプリング場所は、最適な深度に達するように適切に変更され得る。
ステップ406では、集合中の各メンバは連結され、それにより不具合が生じ得る。この不具合はこの結合段階で最も生じやすい。ステップ408では、POBDDデータ構造58が起動され、最終的画像の部分集合を表現するリーフを包含する。選択された変数に関して区分けが注意深く行なわれる。選択基準(例えば、アルゴリズム要素60のような任意の適切な場所に含まれる)は、不具合時点でメモリ中のスナップショット(snapshot)を収集又は抽出する。これは、形成されたBDDを全体的及び部分的双方を反映する。この情報は、変数がデータの区分けに関して最良に位置付けられることを判別するように使用される。加うるに、区分けは、例えば主要な入力、状態変数又はローカル分離変数に準拠して実行され得る。従って、変数は、検査プロセスを開始するため使用される、より多くの有利な変数を見分けるために変数の部分集合中から注意深く選択される。
ステップ410では、各リーフが別々に計算される(連結及び提供化の双方)。これは、別々の変数順序(可能であるならば)を利用して実行される。各区分又はリーフを分析するために別々の管理部も使用され得る。いくつかの区分は単独のBDDに結合され、残りは全体的区分として押し出される。これは、高価でない処理を与え、総ての画像が共通の順序で分離される又は論理和がとられる(ORed)。加うるに、画像の各部分集合(又はリーフ)はそれが完了すると速やかに転送される。このことは、(いくつかの部分集合が不具合を有する場合でさえも)、直交する部分集合が、部分的な画像分析を達成することを可能にし、それは困難ではなく;これは検査装置又は設計者にとって有益である。違反した特性に遭遇したことを識別し、或いは、結果的に潜在的に影響される整合性パラメータがシステム54によって生成され、ターゲット回路56に関連する不完全性や不具合を見分ける。この情報は、製造工程や設計工程に関連する問題点や仕様を修正したり対処したりするために使用される。或いは、POBDDデータ構造58によって生成されるその情報や成果は、関連する製品が設計者によって与えられる基準に合致するように対処するために使用され得る。
所与の領域に関するランダムサンプリングは、ターゲット回路56に関連する合理的な評価を与える。サンプリングは、他の部分空間がサンプリングされると他のエラーに遭遇するような保証を要しない。実際には、製品設計者又はディジタルシステムオペレータは、所与の検査手順に関連するその目的及び精度パラメータを定める。
図8に示されるいくつかのステップは、それが適切な場合には変更又は削除されることが可能であり、追加的なステップがフローチャートに付加されることも可能である。これらの変更は、本発明の範囲又は教示内容から逸脱せずに、具体的な検査アーキテクチャや特定の境界モデル検査構成やコンフィギュレーションに準拠するものである。
本発明は、特定の実施例に関連して詳細に説明されているが、システム54は任意の状況に拡張されることが可能であり、その状況では、選択されたタスクを実行する又は指定された特性を包含するように設計又は製造される所与のターゲットについて、検査が行なわれる。更に、システム54によって顕著なフレキシビリティが得られ、任意の適切な1以上の要素が、それらの動作を向上させる別の要素と置換され得る。例えば、システム54は、POBDDデータ構造54及びアルゴリズム要素60のような具体的な要素を参照しながら説明されてきたが、これらの要素は、それが適切ならば単一の一体的装置内に設けられることも可能であり、又はそれらの機能をもたらす装置と置換されることも可能である。POBDDデータ構造58は、その検査能力を強化するために、他の適切な検査又はシミュレーションプロトコルと共に使用され得る。加えて、設計者情報62は任意の適切な手法でPOBDDデータ構造58に通知され或いは与えられる。
加えて、システム54は1以上の個別素子を参照しながら説明されてきたが、処理動作を向上させるために、追加的な中間的要素がシステム54に設けられることも可能である。例えば、追加的な要素は、適切な要素及びPOBDDデータ構造58間の情報通信に使用され得る。本発明は広範な汎用性の恩恵に浴することが可能であり、これらの要素は様々な中間的処理要素に関連して適切な形式で動作することが可能であり、所与のターゲット要素又はオブジェクトに関する検査手順を支援する。
図9は、ターゲット回路72に関連する2進判定図(BDD)を形成するシステム70の概略ブロック図である。システム70はBDDデータ構造74を含み、それは、BDDデータ構造74を構築するよう動作するアルゴリズム76に結合される。加うるに、システム70はBDDデータ構造74の構成に影響する情報を通信するために使用される設計情報部78を含む。設計者情報78は、エンドユーザにより入力され又はテストされるよう求められる特定の情報を反映することができる。システム70は、一般的には、集積回路、ディジタル要素、処理構成要素又はBDD手順や処理が行なわれる2進アーキテクチャ内で区分化され、又はそうでなければそれらに関連して動作する。加えて、システム70は、情報又はデータのディジタル処理に関連する任意の装置、部品、ハードウエア、ソフトウエア、オブジェクト又は要素と協働して設けられる。
本発明の教示内容によれば、システム70は最適な結果を得ることの可能なBDD構築法を与えるよう動作する。システム70はチェックポイント手順(checkpointing procedure)を与え、(所与のグラフに対応するノード数に関連して)2つの閾値が印される又はマークされる。これら閾値は少数又はマイナー閾値と多数又はメジャー閾値とで識別され、適切なBDD管理部はそれら各自のBDDを適切なファイルに(又は任意の適切な格納装置、オブジェクト又は要素を通じて)格納し得る。所与のBDDの構築中にメジャー閾値に到達し、BDDが更に減少され得ない場合には、別のBDDパラメータを包含する複数のBDD作成スクリプトが使用される。そのスクリプトによるBDDが使用され、そのBDDのサイズは許容可能な限界に合致する。このことは、BDDサイズが、例えば合成、検査、等価性検査又はシミュレーションを包含する任意のアプリケーションに対して制御され得ることを可能にする。BDDサイズは、メジャー又はマイナー閾値に対応してそのBDDに関して減少され得る。マイナー閾値を目標視する場合には、より大きなBDDをアドレス指定する必要性はほとんど無い。BDDを減少させるスクリプトが最も使用される。システム70は、リソース消費及び設計者やエンドユーザに関する労力を最小化しつつ、チェックポイントBDD削減が迅速且つ適切に行なわれることを可能にする。
教示内容を説明するために、システム70によって対処され得る、いくつかの問題についての一般的な説明を行なうことが有利であろう。この内容は、例示として与えられ、任意の適切な回路環境に対するシステム70の目的及び用途を制限するように解釈されるべきでないことに留意することが重要である。正式な検査に関し、一般に、装置の初期状態から到達可能な状態を判別するために、可到達成分析が所与の設計内容について行なわれることが必要とされる。また、合成又は等価性検査において、大規模且つ複雑な公式(formula)についての充足可能性が判別される。しかしながら、BDD(一般的には、殆どのアプリケーションについての計算に対する選択された伝達手段(vehicle)を反映する)は、深刻な困難性の被害を被る。
一般的には、所与の演算は連結及び定量化セグメントを含む。定量化の後に、一般的には、分析に関連するグラフは小さくなる。一般に、データ構造のグラフは所与の関数を表現するために生成される。BDDのデータ構造が大きすぎて、過剰な情報を保持するような場合には、それは過剰に大きいものと解釈される。そのような状況はローカルな不具合として説明又は言及される。
(例えば)5百万ノードにわたる結果を生成する任意の分析はBDDを生成し、その分析は非実用的であり、又は各々の再配列化呼出用の許容可能な期間を上回る必要がある。グラフはそのような大きなサイズに到達することから妨げられることは重要である。多くの合成及び検査ツールはBDDを用いる。しかしながら、BDDは非予測性の性質を有する。例えば、ある方法は所与の演算で小さなBDDを生成するが、以後のステップで全体的には非実用的な場合がある。一般に、そのサイズが過剰に大きく、再配列化がBDDを許容可能なサイズに減少させ得ない場合に、BDDアプリケーションは停止又はアボートされる。
システム70はそのようなサイズの問題に対処し、連結又は定量化段階で不具合に関する問題を解決するために使用される。BDDはコンピュータ技術分野でそのような広範な用途を有するので、システム70は例えば合成、検査、等価性検査又はシミュレーションに関連付けられた適切な環境に適用され得る。BDDは特定の形式に構築され得る。許容可能なBDDが構築されると、所与の設計者に関する問題又は課題が解決される。その形式は回路又は別の形態であり、その形態は所与の回路に関して導出され得る。その形態は、それが解決された場合に(その形態に対するBDDを構築する)、アプリケーションが良好に完了したものとして見受けられるようにするものである。従って、適切なBDDを形成することは、そのような場面で優れた成功を収めることを可能にする。
出力を形成する関数(例えば、‘f’)を有する所与の回路に関し、BDDは、アルゴリズム要素76に格納された適切なアルゴリズムを用いて、‘f’が形成されるようにその回路に関して構築される。アルゴリズム要素76はBDDを生成し、その要素はターゲット回路72についての所与の出力に相当する。この意味において、アルゴリズム要素76は、ターゲット回路72内の要素に対応するゲートを構成する。1以上のBDD管理部は対応するプログラム内に包含され、各BDD管理部は所与の回路における総てのBDD中の一部を所有するものとされる。各BDD管理部は総てのBDDにある順序を課し、システム70は選択される管理部を破壊、生成、又は制御/修正する能力を与える。各BDD管理部はその管理部の下で総てのBDDについての責任を有する。
動作時にあっては、BDDが特定の閾値を越えると、総ての選択されたBDD、その特定の地点に関するBDD、ゲート又は動作内容が格納され得る。BDDが形成される場合は常に、それはシーケンス的な又は時系列的なプロセスのものである。例えば、ポイント/ゲートA1,A2はB1を生成するために使用され得る。B1が格納又は識別されると、ポイントA1,A2はB1は破棄又は削除される。同様に、B1は、C1を生成するためにB2と共に使用され、B1,B2は不適当なものになる。そして、選択されたBDDがマッピングされ及び格納され、そのBDDはメジャー及びマイナー閾値ポイントに対応し、B1が識別された後にA1又はA2のようなポイントに消費されないように最適化されるようにする。所与のファイルはメジャー及びマイナー閾値ポイントを包含し、そのファイルは所与のターゲット回路72の評価又は検査に従事するエンドユーザを案内する。
システム70は、エンドユーザ又は設計者が、別のパラメータを用いて所与のアプリケーションを再実行することを可能にし、そのアプリケーションはより有利な結果をもたらし、不具合を回避することが可能である。BDDは一般に不安定であり、パラメータの小さな変化でさえ、関連するグラフを過剰に大きくさせる虞がある。従って、何らかの結果を得るために所与のスクリプト又はパラメータを置換する又は変更する無数の可能性が存在する。ある重要なアプリケーションは実行され、それによりグラフは大きくなり始める。グラフが不具合を生じると、設計者は特定のポイントの記録をとり、グラフの特定のサイズを識別する。そして設計者は以前のBDD(例えば、マイナー閾値におけるBDD)に戻り、その情報を利用して分析を続けることができる。例えば、メジャー閾値はターゲット回路72に関連付けられた所与のBDD中での1千万ノードとして表現され、マイナー閾値は2百万ノードとして与えられることが可能である。従って、設計者は、グラフが1千万(この例でのメジャー閾値)を超える場合には2百万ノードのグラフを利用し、その分析を続けるために別の方法又はスクリプトの仕様を試みることが可能である。そして、以後の試行における2百万転送(forward)から採用される経路は、従前の場合に採用された当初の経路とは異なる。
システム70は、基本的なBDDアルゴリズム、及びアルゴリズムを導出するために使用されるスクリプト内のパラメータを判別するために使用され得る。アルゴリズムはBDDを構築するために使用され、関数(f)は達成されることが求められる対象を表現する。使用されるパラメータは典型的にはスクリプト内に包含され、そのアルゴリズムは別々に包含され、システム70が、全プロセス環境に影響を及ぼすことなしに、分析内容に影響を与える簡易な手法を与えるようにする。従って、メジャー閾値に遭遇すると、処理はマイナー閾値に復帰することができ、且つそのマイナー閾値から、グラフはパラメータ設定に関する所定の修正内容と共に再度開始させられる。例えば、設計者は、変数順序、クラスタサイズ、分解ポイント、変数分離、生成されるウインドウ数、使用されるウインドウ種別、使用される変数又は使用される区分数等に関連するパラメータを調整し得る。そして、修正されたパラメータと共にスクリプトが実行又は使用され、そのスクリプトは以後のグラフに関する一層良好な経路を与えようとする。
動作時にあっては、システム70は、グラフ(BDD)が大き過ぎる場合にフェイルオーバー(failover)機能を与える。所与の関数‘f’が生成されることを要する。しかしながら、‘f’に関連するBDDは過剰に大きくなり得る。以前の試行内容が許容できないグラフを生成した場合に、調査(inquiry)は、どのようにして‘f’を生成するかに対処する。不具合の際に、任意的な地点‘g’(マイナー閾値)に到達し、第2の地点‘h’(メジャー閾値)にも到達し得る。しかし、何らかの異なる手法で‘g’を用いてグラフが再度開始される。そして、BDDに関連する閾値ノードレベルが、グラフの再試行用の開始点として記録され及び使用される。この意味において、システム70は、BDDグラフに関する所与の手法を良好に評価するプラットフォーム又は基盤を提供する。細心の検査又は強化された精査若しくは観察が、それらが形成されるBDDになされる。適切なBDDを形成するために処理を再実行させることで、スクリプト内のパラメータを操作することによって、(所与の関数を有するBDDを形成する際に)成功する機会が増える。
また、システム70は並列処理を確立する機会を与える。マイナーポイントが識別された後に、スクリプト内でいくつかのパラメータを変更する複数の構成又はコンフィギュレーションが構築される。修正されたスクリプトは、それら所与のBDDに関して最適なグラフを得ようとするために、並列的にいくつかの装置を走らせる。そのような機構は、不具合に遭遇しない、装置を良好にアプリケーションを作動させる可能性を顕著に増進する。適切なスクリプトは、そのような最適な結果を生成するために各コンフィギュレーションに使用され得る。
加うるに、システム70は、検査されることが求められる様々な多数のアーキテクチャを収容する基盤又はプラットフォームを与える。システム70はツールを提供し、そのツールは例えば検査プロセスに使用される任意の種別のBDDを構築し得るものである。更に、システム70は、処理を並列化し、且つ到達可能性手順の速度を顕著に増進させるのに有利に使用される。また、BDD形成速度におけるそのような機能強化は、より迅速な検査ツールを形成することも支援し、特定の要請に従う準正式な検査ツールを形成することも支援する。加うるに、BDDアーキテクチャ形成の迅速性は、部分的には、チェックポイント機構に起因し、その機構は、BDDがファイルにマッピングされ、それらが過剰の大きくなる場合に適切に格納されることを可能にする。複数のスクリプト特定のBDD(例えば、所与のBDDにおける複数の変数順序)にて実行されるために招集され得る。任意の特定のスクリプトがBDDのサイズを減らすことが可能な場合には、その他のスクリプトは破棄され、良好なBDDが反復される。検査される特性が非常に臨界的(critical)であるため、検査手法の不具合が容易に又は簡易に許容され得ないような場合に、そのような手法は実用的である。そのような場合には、一群の変数順序、サイズのクラスタ化、定量化スケジュール、変数分離選択肢等は、どの選択が最も効率的であるかを見分けるために使用され得る。不具合演算以前に適切に実行されていた演算に関するスクリプトを実用化することで、小さなBDDに対してでさえも、最適なスクリプトが識別され得る。加うるに、一群のコンピュータが利用可能である場合に、複数の装置が使用され得る。これが特に有利であるのは、BDDは本質的には並列化が困難であるためである。従って、各々の異なる演算の間に、設計内容は複数のウインドウに分割され、各ウインドウは、分散されたクラスタ形式の演算環境下で別々のプロセッサで処理される。
ターゲット回路72は、所与の関数‘f’を有する電子的又はディジタル的なオブジェクトであり、そのオブジェクトはBDDデータ構造74により模擬されるよう求められる。ターゲット回路72は、ターゲット回路72と協働又は相互作用することの可能な、論理ゲート、カウンタ、インバータ、バッファその他適切な装置を包含する任意の関連回路、素子又はオブジェクトを包含し得る。ターゲット回路72は代替的には任意の回路環境下における2進データ又はディジタル情報を処理することの可能な、任意の他の適切な装置、素子、アーキテクチャ、回路配置、ハードウエア、ソフトウエア、オブジェクト又は要素であり得る。ターゲット回路72はいくつかの特性を包含するように(又はそれを実行し得るように)特別に設計され得る。本明細書で使用されているように、「特性」なる語は、ターゲット回路72に関連し得る任意の能力、特徴、処理、動作又は挙動を包含する。動作時にあっては、ターゲット回路72はBDDデータ構造74によって模擬され又は見せかけられ、DDデータ構造74が複数の指定された特性や特徴を実行するようにし、又は指定された動作特性をそれが実行するようにする。
BDDデータ構造74は、アルゴリズム要素76により形成され且つターゲット回路72により関連付けられた所与の関数‘f’を実行する要素である。BDDデータ構造74は、操作に関する論理関数を表現したものである。ここに言及されるように、BDDデータ構造74は、適切であるならば、区分化され(又は区分化され減縮された)順序付けられた2進判定図(POBDD又はPROBDD)又はBDDデータ構造(区分化される可能性はある)を包含し得る。PROBDD及びPOBDDなる語は、可換であり、それらのアプリケーションを説明する際に(場合によっては簡略化のため)適切な様々な形式で一般的に使用される。PBDDデータ構造74は、設計者情報78を受信し、選択されたパラメータ群を包含する所与のスクリプトに従って構築される。
BDDは、一般的には正準であり、それ故に複合的等価的な検査に使用され得る。BDDは、シーケンス回路検査用の到達可能な(可到達)分析に良好に適用され得る。可到達状態集合はBDDとして表現される。これは、所与の時間間隔の間に対応するメモリ内で1つの区分のみを維持することで、メモリ要請を最小化する。加えて、可到達アルゴリズムを別々に用いて各区分について固定点演算が実行され、そのアルゴリズムは、BDDデータ構造により使用されるPOBDDプロトコルに関連して、アルゴリズム要素76内に包含され得る。
実施例の動作に関しては、設計者及び製造者は、BDDデータ構造74によって模擬されることを要する特性、特徴、動作又は挙動を識別する何らかのアルゴリズム又はプログラムを書いている。特性又は特徴は、それがBDDデータ構造74に通知される前に特定の構文で適切に書き込まれる。BDDデータ構造74が形成され、ターゲット回路72に関して指定された特性又は関数を反映するようにプログラムはその後に適切に実行される。
アルゴリズム要素76は1以上のアルゴリズムを包含するデータ処理オブジェクトであり、そのオブジェクトは具体的な又は指定された特性がBDDデータ構造74によって模擬されるのを可能にする。アルゴリズム要素76は1以上のパラメータを包含し得る1以上のスクリプトを含み、そのスクリプトは一層小型のBDDを生成するために修正され得る。アルゴリズム要素76はBDDデータ構造74内に包含され、又は特定の処理要請又は配置形態に従ってそれらの外部に設けられ得る。加えて、スクリプト又はパラメータは、適切であるならば、具体的なニーズに応じて、別々の素子、モジュール又は要素としてアルゴリズム要素76の外部に設けられる。加うるに、アルゴリズム要素76は他の任意の外部素子と通信することが可能であり、その素子はターゲット回路72内の部分空間を検査するために使用される1以上の命令又は特性を与える。更に、アルゴリズム要素76は、ターゲット回路72に関連付けられる1以上の特性を検査するために設計者情報78を直接的に受信し得る。また、設計者情報78は、BDD構築手順に委ねられる回路又はヨウ素の種別を包含する又は指定する。アルゴリズム要素76は、BDDデータ構造74によって実行される検査動作を支援するように動作することの可能な任意の適切なハードウエア、ソフトウエア、オブジェクト又は要素を包含し得る。
実施例及び教示内容を説明するために、ターゲット回路72の部分空間に関連する選択された特性を模擬する場合に使用され得るいくつかのアルゴリズムを更に説明することが有益であろう。論理関数処理のための多くの演算は、OBDDにより表現される関数に関して効率的に実行され得る。例えば、その基本的処理のいくつかは次の通りである:
1.評価。OBDDに関し、f及び入力aに関するGは、その値f(a)を計算する。
2.減縮。OBDDに関し、Gは等価的な減縮されたOBDDを算出する。
3.等価試験。OBDDにより表現される2つの関数が等しいか否かを検査する。
4.充足可能性問題。問題に含まれるものは次のとおりである:
−充足可能性。OBDDに関し、fを表現するGは、f(a)=1を満たす入力aを見出す、又はそのような入力が存在しないことを出力する。
−SATカウント。OBDDに関し、fを表現するGは、f(a)=1を満たす入力数を計算する。
5.合成(適用としても言及される)。OBDDによって表現される関数f及びgに関し、Gは、G内に
6.置換(交換とも呼ばれる)。
−定数による置換。OBDDにより表現される関数f、変数xi、及び定数c∈{0,1}に関し、f|xi|=cに対するOBDDを計算する。
−関数による置換。OBDDにより表現される関数f及びg、変数xiに関し、f|xi|=gに対するOBDDを計算する。
7.一般的定量化及び実際的な定量化。OBDDにより表現されるf及び変数xiに関し、それぞれ
OBDDパッケージでは、通常的には、減縮したOBDDのみが表現されるように、演算負担軽減は他の演算の中に統合される。OBDDの多くのアプリケーションは、回路として与えられる関数に関する。従って、1つの重要な処理は、回路により与えられる関数についての演算であり、それは通常的にはその回路に関する記号を用いたシミュレーションで実行される。これは、入力変数を表現する関数についてのOBDDが構築されることを意味する。これは容易である、というのは、その関数xiに関するOBDDは、0後継部(0−successor)としての0シンク(0−sink)及び1後継部としての1シンクと共にxiでラベル付けされたノードのみから成るためである。回路はあるトポロジ的順序で評価され(各ゲートは、先行する総てのものが考察された後に考察される)、演算は各ゲートについてなされる。演算は、合成操作を用いて入力での関数を表現するOBDDを結合することによる、出力における関数表現である。
別の可能性は、所与の回路がより大きなブロックを形成することである。そのような場合には、OBDDは、各ブロックによって計算される関数について計算され、関数による処理置換と共にOBDDを結合する。算出されるOBDDの場合には、2つの回路により表現された関数に関し、等価性について回路を検査するためにOBDDに関する等価的な処理が行なわれる。
論理照合のようなアプリケーションでは、考察される関数についての署名が計算される。署名は、効率的に算出されることの可能な及び異なる関数については異なっているような関数特性である。署名は所与の関数が異なっていることを検出するために使用され得る。非常に簡易な署名は、ある関数の入力を満たす数である。SATカウントの処理は、それを算出するため及び適切であれば他の署名を算出するために使用され得る。
教示内容及び実施例を説明するため、POBDD、PROBDD及びBDD処理に関連するいくつかの原理及び概念が以下に与えられる。与えられる説明は、区分化BDD技法に関連する幾分複雑な理論の理解を支援するためのみに行なわれる。その説明は、システム70の任意の要素の動作を限定するように解釈されるべきではない。以下の説明は、例示のみを目的としていること、及びPOBDDデータ構造74により実行され得る又はBDD構築プロセスに包含される任意の要素で実行され得る他の任意の適切な処理内容を限定するように解釈されるべきでないことを認識することが不可欠である。
区分化ROBDDを説明するために、以下の例を考察することが有益である。n入力Xn={x1,...,xn}について定義される論理関数
を想定する。fの区分化ROBDD表現Xfは次のように定義される:
Xn上で定義される所与の論理関数
に関し、fの区分化ROBDD表現Xfは、k個の関数対の組
であり、Xn上で定義され、以下の条件を満足する:
1.
は、1≦i≦kに関して、可変順序πiを有するPOBDDとして表現される。
2.w1+w2+...+wk=1。
3.1≦i≦kに関して、
この例における+及びΛは、それぞれ論理的な和(OR)及び積(AND)を表現する。集合{w1,...,wk}はWで記される。
各wiは、ウインドウ関数として言及される。直感的には、ウインドウ関数wiは、fが定義されている論理空間の部分を表現し得る。総てのペア
は、関数fの区分化を表現する。この例では、「区分化」なる語は、複数の区分けが分離しなければならない意味に使用されるものではない。(上記に与えられている)条件1−3に加えて、i≠jに関してwiΛwj=0ならば、それらの区分は直交している。
区分化POBDDを構築する場合に、区分化POBDDの実効性又はパフォーマンスは、一般に、その関数がコンパクトに表現され得る論理空間の実効的な区分けを生成する能力に依存する。論理空間の適切な区分けを見出すことは、区分化POBDD表現に関する核心的事項である。ここに説明されるものは発見的な例であり、それらはコンパクトな直交する区分化POBDDを生成するのに効果的である。提示される手法では論理ネットリストが使用されるが、説明される技法は汎用的であり、任意の代替的な論理演算シーケンスに使用される又は拡張されることが可能である。
BDD区分化法の例では、ウインドウ数が事前に又はその都度動的に決定される。ウインドウwiが決定された後に、ウインドウwiに対応する論理空間内でFを構成することで、それに対応する区分化ROBDDが得られる。区分化では、ある関数Fに関するBDD、分解されたBDD再表現物(即ち、入力変数によるものではないが、所与のターゲット関数FについてBDDを構築するプロセスで生成されるいくつかの擬似的な入力変数によるもの)が考察される。Fに関して区分化BDDを作成するために、関連する分解されたBDDが、その区分化を与えるために分析される。この区分化判別は一般的に行なわれる、というのは分解ポイントΨ1,...,Ψkで表現されるFに関して分解されたBDDは構築されないからである。分解されたBDDから、Fに関する区分化BDDは、以下の3つの方法で形成される:
(1)入力変数を用いる区分化。入力変数の数が動的に変更される又は所定の定数に設定され得る。
(2)「内部」変数を用いる区分化、即ち入力変数でない変数。そのような変数は、内部のゲートで導入される擬似変数であり得る。
(3)1及び2の適切な組合せを利用する区分化。
目下のフィルタリング形式の検査プロセスにおける任意の所与の時点で、分解された表現はfd(Ψ,X)によって表され、ここで、Ψ={Ψ1,...,Ψk}は分解集合と呼ばれ、典型的には、ナイーブカット又はスマートカットプロセスによって選択された内部カットセットに対応し、
の各々は分解ポイントである。Ψ
bdd={Ψ
1bdd,...,Ψ
kbdd}が、分解ポイントのROBDDを包含する配列又はアレイを表現するものとする、即ち、
の各々が、主要な入力変数に加えて(可能性のある)他の
である。同様に、Ψi
bddwi=の配列はΨi
bddwiによって表現され得る。fd(Ψ,X)におけるΨiの構成[?]は、
により示され、Ψiのfdへの一連の構成を表現する。
所与のウインドウ関数wi、分解表現fd(Ψ,X)及びfのROBDD配列Ψbddの下で、分解表現の区分化を考察する場合に、fiは、fi=wiΛfiを表現するROBDDがfより小さくなるように求められる。立方体だけであるところの総てのwiはこの要請を充足し得ることが、証明され得る。
所与のfd、Ψbdd、及びwisに関し、余因子Ψwi及びfdwiが形成される。FdwiにてΨbddwiを構成することによって、区分化関数fi=fwifi=fwiが得られる。所与の一群のウインドウ関数wiの下で、fの区分化ROBDDxfは、
によって与えられる。上記の定義が定義1の総ての条件を満足するのを確認することは一般に容易である。
wiが立方体であるならば、fiは、fについてのROBDDより小さなサイズを有する。また、wiを表現するROBDDはk個の内部ノードを有し、ここでkはwi内のリテラル数である。wi及びfwiは互いに素の関係を有するので、
である。また、fiを構成する各々の中間結果は、fを構成するものよりも小さく、中間的なピーク的なメモリ要請も少なくなる。これは、fとfiが異なる変数順序を有する場合であって動的な変数再順列化を行なう場合には成立しない。実際には、動的な変数再順列化は区分化の場合における一層小さなグラフにて処理されるため、それは更に効果的である。
ウインドウ関数がキューブ又は立方体よりも複雑な関数PIである場合には、fi=fwiが使用される。fwiはwiに関するfの一般化された余因子である。wiに関するfの一般化された余因子は、一般的には、fよりも充分に小さい。しかし、想定される例では、i番目の区分化POBDDの大きさ
は、最悪の場合に0(|w
i‖f
i|)であり得る。これを回避するために、一般的なウインドウ関数を用いる場合に、一般的には小さいw
isが使用される。
ウインドウ関数の選択に関し、所与のウインドウ関数から区分化関数を構築する手法を決定した後に、適切なウインドウ関数を取得する方法が評価される。その方法は、2つのカテゴリに分解されることが可能であり、それらは:先験的選択と「探索的(explosion)」選択である。
先験的区分化では、所定数の主要な入力(PIs)が区分化に選択される。‘k’PIsに関する区分化を決定すると、2kの区分けが形成され、それらは変数の2進割当総てに対応する。例えば、x1,x2に関する区分化を決定すると、4つの区分けが形成される:
。この種の所与のウインドウ関数に関し、区分化ROBDDが形成されることが可能であり、それらはモノリシックROBDDより小さいことが保証される。所与の時点で唯1つの区分化がメモリ内に存在することを必要とするので、選択された空間内で成功する可能性が高い。メモリの減縮は大きく、総ての区分化を処理するのに要する時間における全体的な減縮によっても達成される。
別の区分化を形成する際に独立して生じる冗長性を最小化しつつ、達成される区分化を最大化するような変数が選択されるべきである。これは、多くの装置及び攻略法の基本的原理を反映する。変数xに関する関数fを区分化することのコストは、
costx(f)=α[px(f)]+β[rx(f)] (2)
により定義され、ここでpx(f)は区分化因子を表現し、
により与えられる。2つの区分化の良好でないものが小さく且つ同様である場合にはより低い区分化因子が有利であり、2つの区分けを作成する際に包含される作業全体が少ないことを示すので、より低い冗長性因子が有利である。より低い全体的なコストを有する変数xが、区分化に選択される。
所与の関数Fのベクトル及び変数xにつき、区分化のコストは、
PIは区分化fd及びΨのそれらのコストに関して増加する順に計数され、最良の‘k’(ここで、‘k’はユーザにより指定された所定の数である)も選択される。同様なコスト関数を利用して、PI変数が選択され、区分化ROBDDを作成するためにPIで表現されるΨibddのような擬似的変数も選択される。この例の場合には、余因子演算は、立方体でないウインドウ関数についての一般化された余因子演算になり得る。この種の選択は、総てのPIがfd及びΨに関するそれらの区分化のコストに従って等級付けされ、静的区分選択と呼ばれる。
或いは、動的区分化法が使用され、最良のPI(例えば、x)がfd及びΨに基づいて選択され、以後のPIは、ある区分におけるfdx及びΨx並びに別の区分におけるfdx及び
に基づいて再帰的に選択される。動的区分化法は余因子の指数を必要とし、場合によってはコスト的に高価で使用できない。関心のある値のみがfd及びΨ
ibddsの余因子のサイズであることを用いて、コストを幾らか減らすことが可能である。|fdx|の上限値は、fdのROBDDを横切り又は検索し、xに対応する変数idを有するノードに遭遇すると常にx=1ブランチをとることによって、算出される。本方法は、この手法でROBDDを横切ることで取得されるBDDが減少しない場合には、正確なカウント値を与えない。そのような実現化の1つの利点は、形成される新たなノードを何ら必要とせず、その横断又は検索が比較的速やかなことである。
区分化は、区分け数が動的に選択されるようになされ得る。ある場合には、BDD不具合の時点毎に、BDD不具合が克服されたと判定されるまで、区分化が、変数を分離しながら動的に実行され、1つの増分で選択される。
区分化を用いる場合に、fd中のΨibddsは連続的に構築される。グラフのサイズがある構成(例えば、Ψj)について顕著に増加する場合には、ウインドウ関数は現在のfd及びΨjbddに準拠して選択される(例えば、w)。ウインドウ関数は、PI及びその相補的なもの、又は何らかのΨkbdd及びその相補的なものあり、その相補的なものはPIによってのみ表現され、より小さなサイズを有する。
ウインドウ関数wが取得されると、2つの区分化(wΛfdw,Ψw)及び
が形成され、区分化の各々における処理又はルーチンは再帰的に呼び出される。一般に、構築後の結果的なBDDが、既に構築された以前に分解されたBDD及び当初の分解されたBDDのサイズ総ての総和より10倍大きい場合には、区分化に基づく探索が実行される。
先験的な変数選択では、区分化に基づく探索に加えて、固定数の分割変数が定められる。固定数の主要な入力変数に準拠する区分化に続く展開的区分化(又はその逆)が実行され得る。展開的区分化は、主要な入力に加えて、擬似的な変数/分離ポイントの双方を使用し得る。
ウインドウ関数を選択し、fdwi及びΨwiにより与えられるi番目の区分けについての分解表現を作成した後で、最終的な段階は、fdwiにてΨwiを構築することであり、即ち、
である。採取的なROBDDサイズは所与の変数の順序に対して定数であるが、中間的なメモリ条件及び構築中の時間は、分解ポイントが構成される順序のストロング関数である。fd内で構成され得る候補変数に対して、結果的に構成されるROBDDのサイズを推定するコストが割り当てられる。構築後にROBDDの支持集合のサイズの増加を最小化する分解変数が選択される。各ステップにおいて、候補Ψsは構成に関してそれらの分解ポイントに拘束され、それらのポイントは他の任意のΨ
bddSには存在しないものである。このことは、分解変数はfdにて一度だけ構成される必要性を保証する。
システム70のいくつかの機能を説明する動作例が示される。この情報内容は教示目的のためのみに与えられるので、本実施例が本願の内容を制限するように解釈されるべきでないことは重要である。多くの演算(OR若しくはAND機能又はその双方を包含し得る)は、固定点に達する前に行なわれるのが一般的である。例えば、ディジタル処理のステップ10及び11の間で、不具合が生じている。そして区分化が実行される。問題は、区分化が必要であることを、そのBDDが不具合を起こした後でしか知らされないことである。不具合を減らすように変数が選択され得るが、不具合が既に生じているので、不具合以前に存在した最後の状態に戻ることは一般に冒険的で困難である。このことは、部分的には、演算が可逆的でないことに起因する。この問題を軽減するために、メジャー及びマイナーの閾値を印す技法が用いられ得る。
ミクロステップ(例えば、本事例ではステップ1乃至9)は、別のアプリケーションでは一般的には破棄され、これは高価になる。システム70は、不具合が生じた特定の段階を見分けることでそのような浪費を回避することができる。演算が実行される各時点で、BDDのクラスタにより示される異常な挙動の記録が、それらが結合される場合に維持される。異常な挙動は、予想されるものよりも顕著に大きな大グラフを反映し得る。グラフが大きすぎる場合には、演算はそのプロセス内で識別される保存地点(閾値)で始まる。
教示内容を説明するために、POBDD技法に関連して実行されるいくつかの画像処理及び事前画像処理を説明することが有益であろう。関数は、一般に、ある領域を共通する領域に対応付ける。変数はXで表現され、出力はYで表現される。Xの組合せの各々はYに関するいくつかの表現になる。Xの組合せの各々ついて、結果として生じる固有の組合せが存在し、それはその関数を定義し得る。画像は、その関数に関連する所定の操作結果として生成されるものである。ある操作又は処理がその領域に適用され、その結果生じるものが画像である。例えば、複数の状態が用意され、それらの状態から多くの他の状態に到達可能である。ターゲット回路72内では、10個の状態から1000個の状態に到達可能である。その1000個の状態は、10個の状態に関連する画像を反映するものとして考察される。
画像処理は、対応する画像を投影する何らかの写すものを与えるプリズム又は鏡と考えられる。所与の画像に対して、対象物又はオブジェクト及び鏡又はミラーは、その画像を導出するために使用される。オブジェクトは、当初の10個の状態として言及され、ミラーはその処理であり、1000個の状態は画像群である。同様に、事前画像処理が定められる。この例での事前画像処理は、1000個の状態によって表現され得る。その処理もミラーによって表現され、これら2つの変数を用いてオブジェクトが導出される。従って、画像処理の場合に、オブジェクト及びミラーが存在し、その影響又はリフレクションが求められる。事前画像処理の場合は、リフレクション及びミラーが存在し、求められるものは、その画像を投影した当初のオブジェクトである。
状態分析における画像処理は、遷移/関連付け処理として言及される。遷移/関連付け処理は、所与の状態空間で可能な遷移を結びつけ、そこでは、対応付け又はリンクが存在しないことに起因して、状態1から状態10へ動くのを禁止する所定の規則が存在する。可能な及び不可能な遷移は、その後に捕捉され得る。そして、ミラー(遷移/関連付け処理)は、そのシステム/回路/状態でどのような遷移が可能であるかを示す。
遷移/関連付け処理に関するあるアプリケーションの後にアクセスされ得るほんのいくつかの状態が存在する。従って、遷移/関連付け処理を適用した後にその地点からより深い深度への移動がもたらされる。同様に、状態1000から、遷移/関連付け処理を用いて当初の状態の値が判別され得る。従って、事前画像処理は所与の状態群について行なわれる。画像は、ミラー(遷移/関連付け処理)によって与えられるような状態のリフレクションである。画像及び/又は事前画像処理法は、ターゲット回路12内で何が深いかを判別するために使用され得る。
実施例における「より深い(deeper)」という語は、分析されるターゲット回路72に関連付けられる深度パラメータに言及している。所与の状態が到達可能であり、他の状態は事前の作業を最初に行うことなしには到達され得ない。状態は一般的には異なる深度を有する、というのは、ある固定点演算は早期に終了し、別のものは所与の試験回路内に深遠に伸びる。このことは、所与の関数の属性に準拠している。所与の関数は、あるウインドウ又は部分空間の下で、分析が深く伸びて続くように構成される。加えて、実証的に深い状態及び帰納的な状態群が存在し得る。実証的に深い状態は、一般にそれらが深いか否かを判別するために相当の作業量を必要とする。帰納的な状態群は一般的には深度に関して何らの保証も与えない。機能的な状態は(潜在的には速やかに)与えられるが、それらの状態が深いか否かは未知である。従って、それら2つの原理のバランスをとるのが一般的である。適切に検査技法を実行するには、速度も深度も無視され得ない。POBDDデータ構造74を用いることで、潜在的に深いいくつかの状態が計算され、又は所与の状態が「通常的に」深いものとして射影され、これらの状態がサンプリングに関して目標視される。
図10は、ターゲット回路72に関連するBDDを構築する方法に関する一連のステップ例を示す概略的フローチャートである。本方法はステップ500から始まり、そこでは、設計者がターゲット回路72のような特定の回路を評価し、関数(f)の形成に必要なあるアプリケーションを走らせようとする。ターゲット回路72が評価され、特定のアプリケーションを実行させる要請により、関数が識別される。初期のBDDがステップ502で構築され、それはターゲット回路72の所与の関数に対応する論理関数を反映する。アルゴリズム要素76は選択されたBDDを構築する(又は構築するのを支援する)ために使用される。BDDの構築を試みる場合に、メジャー及びマイナー閾値がステップ504にて識別される。
ステップ506では不具合が生じており、その不具合は過剰に大きなグラフを表現する。ステップ508では、以前の場合からのマイナー閾値が、そのプロセスを再スタートさせるために変更される。ステップ510では、所与のスクリプト内のパラメータが、過剰に大きくない別のBDDを作成するために修正される。最適なスクリプトは並列的な構成を導入するために使用され得る。このことは、ステップ512の並列的な処理にて、複数の装置が最適なスクリプト(又は好適なパラメータ群)を利用することを可能にする。
不具合及びマイナー閾値が識別され、BDD構築プロセスを改善する試みが不成功であった場合には、マイナー閾値でグラフを区分けする選択肢が存在し、そしてその関数についての部分的な情報のみを用いてその遅延から順に処理を行ない得ることに留意を要する。従って、論理空間のm個の区分が形成され、m個の内のいくつか(k個)の区分が選択され(k<m)、その関数についての表現がなされ得る。このことは、問題に対する部分的な解又はソリューションを与え、何も返さないのではなく何らかの答えを返す点で有利である。また、この段階では、所与のエンドユーザ又は設計者は、所与の関数のBDDの構築を完了させる(仮想的な)解又は能力が無いのを把握し得ることに留意を要する。従って、この部分的な構築は、それがなされない場合に比較して有利になる。
図10に示されるステップの一部は、適切であるならば変更又は削除されることが可能であり、追加的なステップがフローチャートに付加されることも可能である。これらの変更は、本発明の目的又は教示内容から逸脱せずに、具体的なBDD構築手法や特定の回路配置やコンフィギュレーションに依存し得る。
本発明は特定の実施例を参照しながら詳細に説明されているが、システム70はある任意の状況に拡張されることが可能であり、その状況では、選択されたタスクを実行するように又は指定された特性を備えるように設計又は製造される所与のターゲット回路、装置、部品又は要素についてBDD構築が求められる。更に、システム70によって顕著なフレキシビリティが得られ、任意の適切な1以上の要素が、それらの動作を向上させる別の要素と置換され得る。例えば、システム70は、BDDデータ構造74及びアルゴリズム要素76のような具体的な要素を参照しながら説明されてきたが、これらの要素は、それが適切ならば単一の一体的装置内に設けられることも可能であり、又はそれらの機能をもたらす装置と置換されることも可能である。BDDデータ構造74は、BDD作成能力を強化するために、他の適切な検査、シミュレーション、合成又は設計プロトコルと共に使用され得る。加えて、設計者情報78は任意の適切な手法でBDDデータ構造74に通知され或いは与えられる。
加えて、システム70は1以上の個別素子を参照しながら説明されてきたが、処理動作を向上させるために、追加的な中間的要素がシステム70に設けられることも可能である。例えば、追加的な要素は、適切な要素及びBDDデータ構造74間の情報通信に使用され得る。本発明は広範な汎用性の恩恵に浴することが可能であり、これらの要素は様々な中間的処理要素に関連して適切な形式で動作することが可能であり、所与のターゲット要素又はオブジェクトに関するBDD構築手順を支援する。
図11は、1以上の区分化されたデータ構造を用いて回路(例えば、ターゲット回路82)内で到達可能な1以上の状態を判別するためのシステム例80を示す。システム80は、アルゴリズム要素86を含む区分化され順序付けられた2進判定図(POBDD)データ構造84を有する。更に、システム80は、境界モデル検査(BMC)ツール要素88と、PODDデータ構造84と通信する設計情報部90のセグメントとを含む。システム80は、一般的には、集積回路、ディジタル要素、処理構成要素又は検査手順や処理が行なわれる2進アーキテクチャ内で区分化され、又はそうでなければそれらに関連して動作する。加えて、システム80は、情報又はデータのディジタル処理に関連する任意の装置、部品、ハードウエア、ソフトウエア、オブジェクト又は要素と協働して設けられる。
システム80は、ターゲット回路82の部分空間内に非常に深い深度に到達し得る検査プロセスを提供するよう動作する。POBDDデータ構造84と画像処理及び事前画像処理動作を含む分析とを用いることで、検証的に深い選択された状態が識別される。これらの状態はBDDフォーマットで表現され、関連する通常形の(CNF)形態としてマッピングされる。CNF形態は、機能強化された検査分析を始める開始状態の集合としてBMCツール要素88に与えられる。BMCツール要素88は、ターゲット回路82に関連する検査プロセスを行なうために(単独の状態からその動作を開始させる代りに)それらの開始状態を利用しながら境界モデル検査動作を実行する。単独の状態は、一般に、主に浅い初期状態を表現する。既に深い開始状態を与えることで、BMCツール要素88は改善された検査結果を得る、というのはそれがターゲット回路82に一層深く達し得るからである。加えて、初期の深い状態は、最適時間間隔でPOBDDデータ構造84を用いて取得され、このことは、検査プロセスに関する効用の観点から非常に有利になる。
システム80は、他の検査及びシミュレーション法よりも顕著に高速な検査構造を与える。これは、部分的には、いくつかの検査手法を統合することに起因し、それらの手法は境界検査動作に関連する開始点を改善するために組み合わせられ得る。ある実施例では、そのような検査法は、大きなシーケンス深度を有する要素にとって特に有利であり得る。
また、システム80はターゲット回路82に関連する可到達性パラメータを拡張し得る。ターゲット回路82内の新規の又は未探査の深い状態は、システム80を用いては網羅されない。システム80は検査が回路内に深く実行されることを可能にし得る。システム80は、検査プロセスに付随する待ち時間の顕著な削減を達成し得る。深度は、ユーザが求めるものに依存して正確な深度又は近似的な深度であり得る。近似的な深度は実際の深度に関する単なる上限である。状態の深度を算出するために、以下の動作が実行される。ユーザは一群の状態s_0から始め、所与のウインドウw,w’が想定され、ここでw’はwの相補的な対応物である。s_0を基本集合又はベースセットと呼ぶこととし、以下の動作が実行される:
1. ベースセットに関する画像処理及びs_1の取得;
2. ウインドウw’内でs_1に関する事前画像処理及びプレs_1(w’)の取得;
3. プレs_1(w’)に関する画像処理(ウインドウwの下で)及びs_1’の取得;
4. そのウインドウ外から到達不可能なウインドウwにおける状態集合を反映するs_1”=s_1−s_1’s_1”の算出。s_1”は更なる深度の状態を計算するための新たな開始点(ベースセット)となる。
一般に、ステップ1−4は適切に反復され、徐々により深い状態を与えることが可能である。これは、ウインドウw内で算出されたような所与の深度の状態を考慮に入れている。適切であれば、その深度が何らかの最少の“d”である状態を包含するよう適切に修正されることが可能であり、長さ“d”の経路はあるウインドウから別のものに移る。これは、画像/プレ画像の各ステップの間に深さが更新される集合又はセットを維持することによって達成され得る。何らかの状態の深度の走行数を維持するいくつかの手法が存在し得る。この計算を行なう簡易な方法は、可到達性が幅優先法で行なわれる場合になされ得るものである。各区分w_1,...,w_kに関し、上記手順が適用され、初期状態から始まる交差経路によって得られる場合でさえも、ある状態の実際の深度を反映しながら計算が実行され得る。
ターゲット回路82は、所定の又は意図される機能に従ってそれが動作することを確認するためにテストされる電子的又はディジタル的な対象物である。ターゲット回路82の部分空間の整合性、有効性、又は設計仕様は、POBDDデータ構造84を用いて分析される。ターゲット回路82は、論理ゲート、カウンタ、インバータ、バッファその他適切なデバイスを含む任意の関連回路、部品、又はターゲット回路82と共に協働し又は相互作用することの可能なオブジェクトを包含し得る。また、ターゲット回路82は、他の適切な装置、部品、アーキテクチャ、回路配置、ハードウエア、ソフトウエア、オブジェクト又は検査環境下で2進データやディジタル情報を処理することの可能な要素であり得る。ターゲット回路82は何らかの特性を含む(又はそれを実行し得る)ように適切に設計される。「特性」なる語は、本明細書で使用されているように、ターゲット回路12に関連付けられる任意の能力、特徴、操作、動作、又は挙動を包含する。動作時にあっては、それが設計された特性や特徴を保持すること、又は指定された動作を適切に実行することを保証するために、ターゲット回路82は検査され、或いは有効化される。
POBDDデータ構造84は、2進又はディジタル環境でBDD要素の区分化を実行するよう動作し得る要素である。POBDDデータ構造84は、操作に関する論理関数を表現したものである。ここに言及されるように、POBDDデータ構造84は、適切であるならば、区分化され減縮された順序付けられた2進判定図(PROBDD)又はBDDデータ構造(区分化される可能性はある)を包含し得る。PROBDD及びPOBDDなる語は、可換であり、それらのアプリケーションを説明する際に(場合によっては簡略化のため)適切な様々な形式で一般的に使用される。PBDDデータ構造84は、設計者情報90を受信し、設計者情報90に基づいて第1群の状態を抽出するためにターゲット82に関して予備的分析を行なう。サンプルされた部分空間からの第1群の状態は、BMCツール要素88の能力を増大させる或いは強化するために使用され得る。POBDDデータ構造84は、ターゲット回路82に関連して選択された特性を評価するために、アルゴリズム要素86に包含されている1以上のアルゴリズムを起動する。第1群の状態は、BMCツール要素88が、ターゲット回路82内に深く伸びることを可能にする。
POBDDは、一般的には正準であり、それ故に複合的等価的な検査に使用され得る。POBDDは、シーケンス回路検査用の到達可能な(可到達)分析に連続的に適用され得る。可到達状態集合はPOBDDとして表現される。これは、所与の時間間隔の間に対応するメモリ内で1つの区分のみを維持することで、メモリ要請を最小化する。加えて、可到達アルゴリズムを別々に用いて各区分について固定点演算が実行され、そのアルゴリズムは、POBDDデータ構造84により使用されるPOBDDプロトコルに関連して、アルゴリズム要素86内に包含され得る。
POBDDデータ構造84は、一般的には検査処理で使用される他の手法よりも顕著に高速である。更に、POBDDデータ構造84の区分化された構造は、コンパクトであり、より簡易な並列処理を可能にする。加えて、POBDDデータ構造84は、動的な区分化を行ない、メモリの機能低下を回避し、あるアプリケーションではその機能低下は「メモリ不具合」としても言及され得る。POBDDデータ構造84は、ターゲット回路82内の膨大な状態を網羅することができ、更に、相互作用する有限状態マシーンの緩やかに接続された複数セットに設計内容を分割する。
実施例の動作に関しては、設計者及び製造者は、試験又は検査される特性、特徴、動作又は挙動を識別する何らかのプログラムをターゲット回路82に書いている。特性又は特徴は、それがPOBDDデータ構造84に通知される前に特定の構文で適切に書き込まれる。プログラムはその後にPOBDDデータ構造84に通知され、POBDDデータ構造84はターゲット回路82にて指定された特性を検査する。POBDDデータ構造84は、その後に第1群の状態を生成し、BDDフォーマット内でその第1群を表現し、BMCツール要素88に転送されるようにBDDフォーマットをCNF形態にマッピングする。
CNFは、クローズの論理積であり、クローズは属性値論理積又は属性値の論理和である。{AND,OR}の接続部を有する論理表現は、何らの接続も否定されず、どのAND接続もOR接続によって支配されないならば、論理積の通常形式である。例えば、(色=赤 又は 色=緑)且つ(形状=四角形)は、CNFでの形態である。この形式における論理表現は、クローズのANDとして表現され、その各々は1以上のリテラルのORである。また、CNFの理論は、論理和の論理積としても考えられる。各論理和は、肯定的なリテラル及び否定的なリテラルを含むクローズとして表現され得る。変数は汎用的に定量化される。論理プログラミングの場合には(プロローグ、フリル等)、センテンスをコンピュータが収容し得るステートメントに変換し得ることが有利である。ステートメントの論理プログラミングは、ホーンクローズの形式を採用することができ、そのクローズは特に簡易な構造を有する条件付のセンテンスである。総ての命題の論理センテンスは、論理積の通常形式でのセンテンスに等価であることが示され得る。
アルゴリズム要素86内で選択されたアルゴリズムを起動する又は実行することで、POBDDデータ構造84は、回路アーキテクチャ又はコンフィギュレーションの全体を眺めることなしに、ターゲット回路82内を選択的に深く探査し得る。回路要素全体を眺めることは、検査プロセスを顕著に遅くする。その代りに、アルゴリズム要素86が起動され、深淵形式で複数状態の小部分(部分空間内)を評価するために、ターゲット回路82内の所定の場所が調査される。
アルゴリズム要素86は1以上のアルゴリズムを包含するデータ処理オブジェクトであり、そのアルゴリズムは、特定の又は指定された特性がターゲット回路82内で調査又は検査されることを可能にする。アルゴリズム要素86は、特定の処理要請又は回路配置に従って、POBDDデータ構造84内に包含され、或いはその外部に設けられる。加えて、アルゴリズム要素86は他の外部要素と通信することが可能であり、その外部要素は、ターゲット回路82内の部分空間を検査するために使用される1以上の命令又は特徴を与える。更に、アルゴリズム要素86は、ターゲット回路82に関連する1以上の特性を確認するために、設計者情報90を直接的に受信し得る。また、設計者情報90は、検査プロセスに委ねられる回路又は要素の種別を包含する又は指定し得る。アルゴリズム要素86は、POBDDデータ構造84で実行される検査動作を支援し得る任意の適切なハードウエア、ソフトウエア、オブジェクト、又は要素を包含し得る。
実施例及び教示内容を説明するために、ターゲット回路82の部分空間に関連する選択された特性を検査する場合に使用され得るいくつかのアルゴリズムを更に説明することが有益であろう。論理関数処理のための多くの演算は、OBDDにより表現される関数に関して効率的に実行され得る。例えば、その基本的処理のいくつかは次の通りである:
1.評価。OBDDに関し、f及び入力aに関するGは、その値f(a)を計算する。
2.減縮。OBDDに関し、Gは等価的な減縮されたOBDDを算出する。
3.等価試験。OBDDにより表現される2つの関数が等しいか否かを検査する。
4.充足可能性問題。問題に含まれるものは次のとおりである:
−充足可能性。OBDDに関し、fを表現するGはf(a)=1を満たす入力aを見出す、又はそのような入力が存在しないことを出力する。
−SATカウント。OBDDに関し、fを表現するGは、f(a)=1を満たす入力数を計算する。
5.合成(適用としても言及される)。OBDDによって表現される関数f及びgに関し、Gは、G内に
6.置換(交換とも呼ばれる)。
−定数による置換。OBDDにより表現される関数f、変数xi、及び定数c∈{0,1}に関し、f|xi|=cに対するOBDDを計算する。
−関数による置換。OBDDにより表現される関数f及びg、変数xiに関し、f|xi|=gに対するOBDDを計算する。
7.一般的定量化及び実際的な定量化。OBDDにより表現されるf及び変数xiに関し、それぞれ
OBDDパッケージでは、通常的には、減縮したOBDDのみが表現されるように、演算負担軽減は他の演算の中に統合される。OBDDの多くのアプリケーションは、回路として与えられる関数に関する。従って、1つの重要な処理は、回路により与えられる関数についての演算であり、それは通常的にはその回路に関する記号を用いたシミュレーションで実行される。これは、入力変数を表現する関数についてのOBDDが構築されることを意味する。これは容易である、というのは、その関数xiに関するOBDDは、0後継部(0−successor)としての0シンク(0−sink)及び1後継部としての1シンクと共にxiでラベル付けされたノードのみから成るためである。回路はあるトポロジ的順序で評価され(各ゲートは、先行する総てのものが考察された後に考察される)、演算は各ゲートについてなされる。演算は、合成操作を用いて入力での関数を表現するOBDDを結合することによる、出力における関数表現である。
別の可能性は、所与の回路がより大きなブロックを形成することである。そのような場合には、OBDDは、各ブロックによって計算される関数について計算され、関数による処理置換と共にOBDDを結合する。算出されるOBDDの場合には、2つの回路により表現された関数に関し、等価性について回路を検査するためにOBDDに関する等価的な処理が行なわれる。
論理照合のようなアプリケーションでは、考察される関数についての署名が計算される。署名は、効率的に算出されることの可能な及び異なる関数については異なっているような関数特性である。署名は所与の関数が異なっていることを検出するために使用され得る。非常に簡易な署名は、ある関数の入力を満たす数である。SATカウントの処理は、それを算出するため及び適切であれば他の署名を算出するために使用され得る。
BMCツール要素88は、ターゲット回路82についての境界モデル検査処理を実行するための要素である。BMCツール要素88は、POBDDデータ構造84から情報を受信し、ターゲット回路82に関する検査を実行するためにその情報を使用する。BMCツール要素88は、形式的な又は準正式な(semi−formal)検査法を使用し、更に、POBDDデータ構造84により与えられる第1の状態群を用いることで機能強化され得る。BMCツール要素88は、適切な境界モデル検査を実行するためにSAT技法を使用する。境界モデル検査では、対象とする状態遷移システムが、関心のある状態に到達する状態遷移の有限シーケンスを実現し得る場合に、充足可能な論理構造が構築される。BMCツール要素88は、任意の適切な装置、部品、ハードウエア、ソフトウエア、オブジェクト、又は要素を包含し、それらはターゲット回路82の選択された部分空間が検査又は検証されるように1以上の境界検査処理又は演算を実行し得るものである。
また、BMCツール要素88は、単独の初期状態の代りに第1群の状態を利用し得るように適切に修正され得る。これは、システム80がターゲット回路82内で検証的に深い部分空間に到達することを可能にする。従って、BMCツール要素88内のプログラムの容量は、検証プロセスを改善するように、効率的に強化され得る。BMCプログラムが実行された後で、隣接するセグメントはしらみつぶしに検査され、ターゲット回路82に関する適切なサンプリングがなされるようにする。ターゲット回路82の部分空間をサンプリングすることを継続するか否かの判定は、エンドユーザに委ねられ、又はBMCプログラム属性によって制御される。
図12は、図11に示されるシステムの要素間に関する例示的な相互作用を示す。図12は、一群の開始点92a−c、一群のPOBDD要素94a−c、BMC要素96、及びBDD要素98を示す。これらの要素は、概略的に描かれており、システム80に関連する一般的な原理を説明することを意図している。POBDD技法が使用され、画像処理/事前画像処理動作を含む分析が実行され、実証的に深く且つBMCツール要素88に通知される第1の状態群を判別する。POBDD技法は、それを正準形に変換するためにデータ構造上で実行され得る。区分化は、論理空間が個々の部分空間に分解されることを示す。
教示内容を説明するために、POBDD技法に関連して実行されるいくつかの画像処理及び事前画像処理を説明することが有益であろう。関数は、一般に、ある領域を共通する領域に対応付ける。変数はXで表現され、出力はYで表現される。Xの組合せの各々はYに関するいくつかの表現になる。Xの組合せの各々ついて、結果として生じる固有の組合せが存在し、それはその関数を定義し得る。画像は、その関数に関連する所定の操作結果として生成されるものである。ある操作又は処理がその領域に適用され、その結果生じるものが画像である。例えば、複数の状態が用意され、それらの状態から多くの他の状態に到達可能である。ターゲット回路82内では、10個の状態から1000個の状態に到達可能である。その1000個の状態は、10個の状態に関連する画像を反映するものとして考察される。
画像処理は、対応する画像を投影する何らかの写すものを与えるプリズム又は鏡と考えられる。所与の画像に対して、対象物又はオブジェクト及び鏡又はミラーは、その画像を導出するために使用される。オブジェクトは、当初の10個の状態として言及され、ミラーはその処理であり、1000個の状態は画像群である。同様に、事前画像処理が定められる。この例での事前画像処理は、1000個の状態によって表現され得る。その処理もミラーによって表現され、これら2つの変数を用いてオブジェクトが導出される。従って、画像処理の場合に、オブジェクト及びミラーが存在し、その影響又はリフレクションが求められる。事前画像処理の場合は、リフレクション及びミラーが存在し、求められるものは、その画像を投影した当初のオブジェクトである。
状態分析における画像処理は、遷移/関連付け処理として言及される。遷移/関連付け処理は、所与の状態空間で可能な遷移を結びつけ、そこでは、対応付け又はリンクが存在しないことに起因して、状態1から状態10へ動くのを禁止する所定の規則が存在する。可能な及び不可能な遷移は、その後に捕捉され得る。そして、ミラー(遷移/関連付け処理)は、そのシステム/回路/状態でどのような遷移が可能であるかを示す。
遷移/関連付け処理に関するあるアプリケーションの後にアクセスされ得るほんのいくつかの状態が存在する。従って、遷移/関連付け処理を適用した後にその地点からより深い深度への移動がもたらされる。同様に、状態1000から、遷移/関連付け処理を用いて当初の状態の値が判別され得る。従って、事前画像処理は所与の状態群について行なわれる。画像は、ミラー(遷移/関連付け処理)によって与えられるような状態のリフレクションである。画像及び/又は事前画像処理法は、ターゲット回路82内で何が深いかを判別するために使用され得る。
教示内容を説明するために与えられる別の例では、ライン1及びライン2が状態であることを想定し、ライン1及びライン2は並行であり、遷移/関連付け要素によって分離されているものとする。ある筋書き又はシナリオでは、ライン2のリフレクションはライン1に関連する情報に影響を及ぼす。しかしながら、一般的に求められるものは、ライン1又はライン2の何れかによって排他的に影響されるもの総てである。画像及び事前画像処理は、ラインの各々から何が受信されたかを判別するために使用され得る。置換プロセスを利用して、ライン1及びライン2に何が含まれているかが判別され得る。残るものは、それらの整合性を維持する真のオブジェクト、競合物又は選択肢を示す。この情報により、混乱又はエラーを生じさせるものが何であるかを判別し、そのプロセスに起因する要素を削除することが可能になる。
別の例として、集合1が状態1,2,3を包含する場合を考察する。更に、状態4,5を含む集合2を考える。これら総ての要素は状態10,11に反映される。状態10,11を分析する場合に、状態1,2,3,4,5から到来するリフレクションが与えられる。集合1に関連する分析で4,5を考察するのは不適切である、というのは、これらの要素は集合2に関連するからであることが、理解されるであろう。従って、状態4,5がその集合から除去され、残ったものが集合1からの真正な集合である(状態1,2,3)。集合1,2間の距離は、1単位として識別され得る。集合2と集合0との間の距離は、2単位である。以後同様に計算がなされ、集合1と集合0との間も1単位の距離である。次のステップでは、分析は集合−1にシフトし、そして分析は集合−2に続き、以下同様である。このようにして、情報は帰納的に蓄積され、より大きな距離及び深度をなすために分析が続くようにする。この手順は、状態の検査がターゲット回路82内で深まることを可能にする。
実施例における「より深い」なる語は、分析されるターゲット回路82に関連付けられる深度パラメータに言及している。所与の状態が到達可能であり、他の状態は事前の作業を最初に行うことなしには到達され得ない。状態は一般的には異なる深度を有する、というのは、ある固定点演算は早期に終了し、別のものは所与の試験回路内に深遠に伸びる。このことは、所与の関数の属性に準拠している。所与の関数は、あるウインドウ又は部分空間の下で、分析が深く伸びて続くように構成される。加えて、実証的に深い状態及び帰納的な状態群が存在し得る。実証的に深い状態は、一般にそれらが深いか否かを判別するために相当の作業量を必要とする。帰納的な状態群は一般的には深度に関して何らの保証も与えない。機能的な状態は(潜在的には速やかに)与えられるが、それらの状態が深いか否かは未知である。従って、それら2つの原理のバランスをとるのが一般的である。適切に検査技法を実行するには、速度も深度も無視され得ない。POBDDデータ構造84を用いることで、潜在的に深いいくつかの状態が計算され、又は所与の状態が「通常的に」深いものとして射影され、これらの状態がサンプリングに関して目標視される。
図12に戻って、BMC要素96は、小規模なサンプリング又は部分空間のセグメントが、固定点に関連して探索されることを可能にする。固定点に到達すると、固定点演算が別の部分空間で実行され得る。複数の部分空間でランダムなサンプリングが実行され、それにより、第1の状態群がPOBDD要素94a−cからBMC要素96に効果的にハンドオフする又は移行することが可能である。第1群の状態を判別した後で、どの部分空間が最も深い深度を有するかを判別する。最も深い深度を有する部分空間について、特定の状態群は、容易に計算される最も深い状態群であることが想定される。これらの状態は、検査環境下の所与の回路に関する一層深い検査を実行する場合の初期状態群として採用するために、BMC要素98に与えられる。BDD要素98は、POBDD及びBMC処理が記述される基盤又はコアプロトコルとして機能する。
POBDDに準拠したBMCは、深く探索する方向を選択する際に「ナビゲート付き進行」機能を可能にする。システム80は、更に、初期幅探索(BFS)と初期深度探索(DFS)との調整された混合を可能にする、というのも、それが深い状態に(潜在的に選択可能に)到達可能だからである。
また、適切な時間間隔が、試験対象の所与の回路内の複数の部分空間のサンプリングに関連して設けられる。所定の期間は、ターゲット内の様々な部分空間を評価するために用意される。その期間が満了すると、プロセスは停止し、判定が行われる。その期間は、所与の検査プロセスに関連する便宜的な項目又は実際的なパラメータに準拠し得る。指定された期間内で何らの深い状態も見出されなかった場合は、そのプログラムは、より大きなタイムアウト値を含む別のモードで動作し得る。或いは、選択を実行する手法は、既にサンプリングした任意の部分空間(又は空間の種別)が再度訪問されないように変更可能である。深い状態に遭遇することの保証又は確実な証明を与えることで、効率に関する顕著な利益が最小の損失で達成され得る。効率に関するこの利益は、その損失に比較して不釣合いに大きくなり得る。
回路の正式な(formal)検査は、到達可能性分析がその回路で実行され、回路の初期状態からどの状態が到達可能であるかを判別することを要し、その分析は、一群の遷移関係(TR)を構築すること及び集合のメンバ又は要素の論理積をとることを包含し得る。総ての主要な入力及び回路の現在の状態変数は、その結果の公式を利用して実際に定量化され得る。到達可能性分析の間に、特に論理積の間に、1以上のグラフが不具合を起こす虞がある。この種の不具合に関連する問題に起因して、BDDに準拠した正式な検査は不適切である。正式な検査は、近似的に100個前後のラッチや他の回路要素を包含する実際のアプリケーションでは制限される虞がある。しかしながら、多くの回路は10000(又はそれ以上)の回路要素を包含する。
回路を処理又はカバーするために、準正式な検査が用いられる。図13は1以上のPOBDDを用いる準正式な検査の例を示す。区分100aは5つの部分空間102を含み、区分100bも5つの部分空間102を含む。部分空間102a内の領域又はカバレッジ104aは、1以上の論理処理を用いて部分空間102f内のカバレッジ104dと結合され、部分空間102b内のカバレッジ104bは1以上の論理処理を用いて部分空間102g内のカバレッジ104eと結合され、部分空間102e内のカバレッジ104cは上述したように1以上の論理処理を用いて部分空間102j内のカバレッジ104fと結合される。部分空間102c,28d,28h,28iは、以下に更に説明されるようにアルゴリズムに従って無視される。特定の実施例では、1以上の改善されたBDD技法が回路に関する適切なカバレッジを設けるために使用される。特定の実施例は準正式な検査に関する2つの一般的な手法を包含する。準正式な検査における第1の一般的手法は優れた又はグリーディな(greedy)探索である。グリーディ探索法に従うと、状態空間が探索される場合に、より大きなBDDは無視されるが、同時に大きな部分空間(可能な限り大きな部分空間でさえあり得る)のカバレッジが多かれ少なかれ最大化される。
大きなBDDを無視することは、望まれない度合いであったとしても、状態空間領域を顕著に減らす。BDDのサイズ(回路を記述するのに要する情報量によって測定され得る)は、そのBDDによって網羅される状態数(又は最少項(minterm))を示すことを要しないので、BDDの密度関数が、状態空間全体の領域に対するBDDの寄与を判別するために使用され得る。特定の実施例では、BDDのサイズはBDDの状態空間領域と釣り合っている。TRの任意的な減縮は、TRが回路内で1以上の遷移を行なうことを妨げる。一方、TRが必要とされない場合には、TRを用いる意味のあるBDD演算は実用的でなくなる。更に、BDDが区分けされる場合に、どの区分が探索されるかを判別することは困難である。
準正式な検査における第2の一般的手法は、設計要約(design abstraction)である。回路の状態の部分集合を探索するため又は回路の初期状態からの状態空間探索を実行するため、準正式な探索が複数のウインドウに向けられる。特定の実施例では、それらのウインドウは回路設計者によってマニュアルで指定される。準正式な検査に適用可能な1以上の状態及び入力制約は、設計者によって指定され又はシミュレーションダンプ(dump)から決定される。
状態空間をカバーするために複数のPOBDDが使用され得る。各POBDDはウインドウに対応し、各々はBDDノード当たりの状態カバレッジ密度によって特徴付けられ及びBDDサイズによって特徴付けられる。BDD演算がより大きな不具合となる1以上のウインドウが印される又はマークされる。1以上のマークされたウインドウは、将来的なポイントで問題を生じる虞がある。ウインドウ内のBDD履歴に基づいて、ウインドウは「簡易(easy)」又は「困難(difficult)」として特徴付けられる。状態空間の複数の部分のカバレッジを促進するグリーディ通信は、状態カバレッジを多少なりとも最大化するために使用され得る。例として、特定の実施例では、複数の区分けの中での通信は次のように優先順位付けされる:(1)より高密度でより簡易な区分からより低密度でより簡易な区分への通信は、第1優先度である;(2)より高密度でより簡易な区分からより高密度でより簡易な区分への通信は、第2優先度である;及び(3)より高密度でより簡易な区分からより低密度でより困難な区分への通信は、第3優先度である。多少なりとも支援されそうにない1以上の通信は最後に選択され得る。
大きなTRを取り扱うために、1以上の区分割当を利用して、TRが構築される前に回路を減縮する。特定の実施例では、別の回路を取り扱うために(全区分より少ないものが構築可能である)、N個の区分の中からM好みが選択され、選択された区分の中で固定点反復及び通信が実行される。1つの選択肢として、生成された新たな一群の状態が、以前に算出した一群の状態の所定のkパーセントより少ない状態を含む場合には、1以上の固定点相互作用が終了する。TRが削減されると又は区分が生成されると、特定の区分から、状態空間の1以上の残余の部分への有意義な遷移が生じるか否かが判別される。BDDはシミュレーションダンプ中で調査済みの状態の部分集合から構築され得る。その後に状態はPOBDD分割可変的発見的方法を利用して区分けされる。1以上の計算済みのウインドウは、1以上の大きなTRを減縮するための割当を作成するために使用される。
図12に戻るに、特定の実施例では、ターゲット回路82の正式な検査は、到達可能性分析がターゲット回路82にて実行され、ターゲット回路82の1以上の初期状態からどの状態が到達可能であるかを判別することを要し、その分析は一群の遷移関係(TR)を構築すること及びその集合のメンバ総ての論理積とることを包含する。総ての主要な入力及びターゲット回路82に関する現在の状態変数は、その結果の公式を利用して実際に定量化され得る。到達可能性分析の間に、特に論理積の間に、1以上のグラフが不具合を起こす虞がある。この種の不具合に関連する問題に起因して、BDDに準拠した正式な検査がその時点で実際的でなくなる。正式な検査は、約100個前後のラッチ又は他の回路要素を包含する回路に対する実用的な用途に制限される。しかしながら、多くの回路は10000(又はそれ以上)の回路要素を包含する。POBDDはBDDサイズを更に小さくするために使用されるが、到達可能性分析を実行するために使用される多くのPOBDD技法は、立方体又はキューブ(cube)を用いる回路の分割を前提とする。キューブは1以上の入力リテラルについての割当内容(入力変数又は状態空間変数)である。また、非拘束又はフリーBDDは、所定の解釈に従って、キューブに準拠した区分けを表現するが、キューブに準拠した区分けは、1以上のウインドウが任意的な関数を利用して生成される区分けに比して実証的に非効率的である。特定の実施例では、到達可能性分析に要する時間を削減するために及び分析を一層空間的に効率的にするために、1以上の任意関数が1以上のウインドウとして使用され得る。これらのBDDは、各ウインドウが別々の根元又はルート変数を有することに起因して、「複数ルートBDD(mulitiply rooted BDD)」と言及される。
特定の実施例は、分解ポイントに準拠した分割変数を識別する。分割ポイントは、(主要変数のキューブ状割当ではなく)1以上の一般的関数を表現し、それら関数の部分的割当も一般的関数となり得るようにする。初期演算及びモデルが分解物及び構成物で表現され得る1以上の関数が処理される。2つの手順が使用され得る。
第1の手順によれば、回路中の各ラッチのBDDが構築される。分解地点は、TRのBDDを構築するために使用され得る。構成手順は主要な変数(入力及び状態変数を包含する)でTRを構築するために使用され得る。TRグラフを構築するために、分解点変数の構成は、TRグラフを不具合にさせる構成が作成されるまで継続される。TRグラフを不具合にさせる構成が何ら作成されなかったならば、最終的なTRは小さく且つ困難な構成は何ら存在しない場合がある。しかし、小さなTRグラフが生じるのは比較的頻繁ではない。TRグラフを不具合にさせる構成が何ら作成されなかった場合に、最終的TRグラフは大きく且つ多数の構成を経由するサイズに達することが可能であり、その構成の各々はTRグラフのサイズに比較的小さな寄与を与える。しかしながら、累積的効果はTRグラフのサイズに関する爆発的増加又は不具合を招き得る。この場合に、発見的な分解はより小数の分解点を生成するために変更される。大きなTRグラフサイズの増加が、小数の構成の後に生じるので、それらは、各々の更生後のTRグラフサイズにて良好な限定された急増となる。
2つの論理和的な区分けが、1以上の標準的なBDD技法を用いてその構成のために生成され得る、及び論理和区分各々が所定の閾値を下回るならば、その区分けは非立方体の区分化ツリー(NCPT:noncube−based partitioning tree)の根元又はルートになる。BDDサイズは、新たに割り当てられたノード数を監視することによって又は別の手法に従って監視され得る。このことは、総てのアトミック(atomic)な処理の後の全検索(traversal)により、TRサイズを測定する必要性を軽減する。TRグラフサイズが所定の閾値を下回らないならば、立方体区分はそのグラフサイズを減らすために使用される。
条規に定められたNCPTの各リーフに関し、分解点が構成され且つ総ての区分けが作成されるまで、従前の2つのステップが再帰的に実行される。TRの各区分けを利用して、到達可能性分析が、固定点に達するまで実行される。上述した区分けは、画像演算中の論理和−定量化の間に導入される。区分P_jから別の区分P_kへ通信するために、1以上の定量化が、区分P_kの一般化された余因子を用いて実行される。区分P_j内の定量化は、「不問(don’t care)」としてP_jの相補的な空間を利用して同様に導出される。これは、一般化された余因子処理を利用してもたらされる。
第2の手順によれば、分解集合d1,d2,...,d_kからの分解点を利用して、他の分解点に関連するBDDサイズを減少させるウインドウを作成する。各BDD、d1,d2,...,d_k更にはTRのBDDに関し、BDD d_jに関する一般化された余因子及び相補的なものが採用される。1以上の適切なBDD d_jは、分解集合から選択される。可能な限り多くの分解点BDDと同程度に減少する分解関数d_jが採用され得る。削減能力は、1以上の手法により、生成されるBDDのバランス及び非冗長性の観点から測定され得る。両者の手順によれば、ウインドウ生成は、到達可能性分析中の特定の時間でのみ実行されることに制限されない。ウインドウ生成は、TRの生成中に加えて1以上の画像処理又はプレ画像処理関数のアプリケーションの際に導出され得る。
以前の区分化手法は、現在の状態変数についての最少キューブ(minterm cube)として規定されるウインドウの利用に一般的には準拠している。この形態で構築される一群のウインドウはツリーに結合され、ツリーの簡易なリーフが1つの区分けを表現し、ツリーに沿う各経路が固有のウインドウを表現する。そのような区分化BDDは非拘束BDDの特殊な場合として取り扱われ、所定の深度を超えるルートのサブツリー総てが共用する変数から許容されない。変数の数が増えるにつれて、BDDの簡潔性は正規のROBDDの漸近的な場合のものに近づく。区分けされたBDDデータ構造によって与えられた非決定性の簡潔性は、立方体の区分けが使用される場合に実際的に失われる。従って、よりコンパクトな表現が、区分化に関する非立方体ウインドウを利用することで生成されることが可能である。状態急増に関連する1以上の問題を分析すること、及びコンパクトな区分けされた表現を作成することは有利である。これは、良好なウインドウ関数を選択することを必要とする。特定の実施例では、区分けの手法は最少キューブに準拠し、即ち、ウインドウはリテラルの論理積として取り扱われ得る。加えて又は代替的に、特定の実施例では、区分け手法は一般化された論理関数に準拠する。
順次的又はシーケンス的な検査では、「構成される(composed)」処理の複合(complexity)は、ROBDDに関する立方体及び区分化BDDに関する四角形である。従って、区分化を利用することで、複数の順次的な組み込まれた構成に関して指数的な利得(gain)が得られる。複数構成処理を区分けする1以上の利点が存在し得る。構成地点で区分けを定めることは1以上の利点を与える、というのは、任意の所与の設計内容更には画像演算についての遷移関係の構成は、組み込まれた関数構造のシーケンスを実行するからである。到達可能性分析は、一般的には、一群の遷移関係を構築し、その集合要素総ての論理積をとることで行なわれ得る。主要な入力及び回路の現在の状態変数は、この公式から実際に定量化され得る。この演算の際に、特に論理積の間にグラフはそのサイズに関して不具合を生じる虞がある。この不具合に起因して、BDDの正式な検査は、大規模な工業的設計に不適切になる虞がある。これらの手順は、数百程度のラッチを備えた回路にしか適用され得ない。しかしながら、工業製品は10000ラッチを、更にはそれ以上を有する。POBDDはBDDサイズを一層小さくするために使用され得る。しかしながら、総ての区分化技法は、立方体を用いて回路を分割することを前提としている(それは、一群のリテラルの割当と入力変数又は状態空間変数とを包含する。)。キューブ状区分化は、非拘束BDDの表現の特殊な場合として解釈され得る。しかしながら、非拘束BDD(及びそのようなキューブ状区分け)は、各ウインドウが任意的な関数を用いて生成される区分化手法よりもコンパクトでないことが知られている。従って、ウインドウとして任意的関数を利用することが望ましい。各ウインドウは別々のルート変数を有するので、この手法で生成されるBDDはルートBDDを乗算する。これは、画像演算(及び到達可能性分析)を高速化し且つよりスペース効率的にする。
分割変数は、分解点に準拠して見出される。分解点は(主要変数のキューブ状割当ではなく)一般的関数を表現するので、そのような関数についての部分的割当も一般的関数になる。従って、初期演算とモデルが分解及び合成で表現され得る関数を処理することが望ましい。特定の実施例では、遷移関係のBDDが以下のように構築される。分解点は遷移関係のBDDを構築するために使用され得る。実際の検査ツールでは、例えば、VIS、総てのBDDは分解点を用いて構築される。分解点変数は、ある構成が不具合になるまで構成される。2つの論理和的な区分が、標準的なBDD技法を用いて所与の構成について作成され、各々の論理和が所定の閾値より低いならば、その区分は非キューブ形式の区分化ツリー(NCPT)のルートとして使用され得る。NCPTの各リーフに関し、総ての分解点が構成され且つ総ての区分が形成されるまで、以前の2つのステップ再帰的に実行される。遷移関係の各区分を用いて、到達可能性分析が固定点に達するまで実行され得る。この区分化は、実際の論理積/定量化が画像演算中に実行される場合でさえも導入され得る。この分析手順は、特定の実施例では、非キューブ形式の重複するPOBDDであるPODDの最もコンパクトな形式を利用する。キューブ形式のPOBDDを利用する場合でさえ良好な結果が得られるので、区分化データ構造に関するこの一般化された形式が用いられる場合には、大きな節約効果が実現される。加えて、一連の分解オペレータで書き表され得る到達可能性分析の計算が、検査され得る。上述の手順では、区分化ウインドウの構成的生成は、遷移関係の構築中に使用される。上記のようにして画像演算が表現される場合には、その技法は画像演算中の動的な再区分化に関する技法になる。BDDが非常に大きくなり得る実際の回路について、メモリ利用を減らすそのような可能性は、1以上の利点をもたらす。そのような複数ルートデータ構造は、特定の実施例におけるキューブ状POBDDに関する指数関数的サイズ削減を与える。
図14は、分散的に演算を行なう1以上の区分けされたデータ構造を用いる、1以上の到達可能な回路状態を判別するシステム例110を示す。上述したように、1以上のPOBDDは、1以上の回路特性を検査するための、(ターゲット回路82のような)回路に到達可能性分析を実行するために使用される。POBDDは正準であり、複合的等価性検査に使用される。1以上のPOBDDを用いる到達可能性分析では、到達可能な状態群がPOBDDによって表現される。メモリ要請は、特定のメモリ装置における唯1つの区分を一度に格納することによって、及びディスクその他の記憶媒体に、現在処理されていない区分を保存することによって減縮される。固定点演算は、到達可能性アルゴリズム及びPOBDDパッケージを利用して、各区分について別々に実行され得る。
システム110は(ターゲット回路82のような)回路に到達可能性分析を実行するために使用され、回路の初期状態から到達可能な状態を見分ける。システム110は、1以上のリンクを用いて互いに接続された複数のコンピュータシステム112を包含し、各リンクには、1以上のコンピュータバス、広域ネットワーク(WAN)、インターネットの部分、若しくは別の有線、光、無線その他のリンクが含まれ得る。システム110は4つの演算システム112を包含するように描かれているが、本発明は2以上の演算システム112を意図している。特定の実施例では、2以上の演算システム112は1以上の共通の要素を互いに共用する。ターゲット回路82に到達可能性分析を実行するために、ターゲット回路82は区分100(又はウインドウ)に論理的に分割され、各区分100は、クラスタ形式の演算環境のような分散された処理環境における演算システム112を用いて処理される。ターゲット回路82の区分100は、論理的な、関数的な又はターゲット回路82の他の部分の表現物である。特定の実施例では、区分100はサイズを変化させ得る(回路を記述するのに要する情報量で測定される)。演算システム112は多かれ少なかれ並列的に区分100を処理する。各区分100は、固定点に到達するまで駆動され、そして1以上の他の区分100と通信する。
システム110は、ターゲット82の到達可能性分析に関連する時間及びメモリ要請を削減し得る。限定ではない1例として、1ギガバイトのランダムアクセスメモリ(RAM)と、到達可能性分析についての32ギガバイトRAMを要する回路とを包含する演算システム112を考察する。ディスクアクセスの低速性に起因してディスクを用いることは実用的ではなく、処理システム単独では到達可能性分析を実行することはできないであろう。その代りに、分析は、32演算システム112内で分散され、各々は1ギガバイトRAMを含み、分析に関連するメモリコストを減らすため及びより高速の走行時間を達成するために多かれ少なかれ並列的に動作する。
特定の実施例では、コンピュータシステム112は、POBDDデータ構造84(アルゴリズム要素86を含む)、BMCツール要素88、設計情報部90、区分100、スケジューラ106(以下に説明される)、及びバージョンテーブル108(これも以下に説明される)。特定のコンピュータシステム112が説明され、特定の形態で特定の要素を包含するように描かれているが、本発明は、任意の適切な形態で任意の適切な要素を包含する任意の適切なコンピュータシステム112を意図している。限定的ではない一例として、特定の実施例では、コンピュータシステム112は、追加的に又は代替的に、POBDDデータ構造84、BMCツール要素88、又は設計情報部90に関する1以上の要素を包含し、上述の検査分析に対する追加的又は代替的な分析を実行する。特定の実施例では、コンピュータシステム112は、POBDDデータ構造84、BMCツール要素88、又は設計情報部90を包含することを要しない。特定の実施例では、システム110における2以上の演算システム112は、互いに同様な素子又は素子の構成を包含しない。処理システム112は、1以上の入力装置、出力装置、格納媒体、プロセッサ及び付随的メモリ装置を包含する1以上のコンピュータシステムに完全に又は部分的に統合され得る。処理システム112は、代替的に、1以上のコンピュータシステムに結合される。
上述したように、ターゲット回路82について到達可能性分析を実行するために、ターゲット回路82は複数の区分100に論理的に分割される。各区分100は、固定点に到達するまで演算システム112にて処理される。固定点に到達すると、コンピュータシステム112は、演算システム112にて実行される分析又は別の演算システム112で実行される1以上の別の分析について、1以上の別の演算システム112と通信を行う。
画像又は事前画像処理は、ある区分内に初期集合があり且つ別の区分内に最終的集合があるように実行されることを要する。この画像処理は、第1の演算システム112により実行され、発見された状態は第2の演算システム112に通知される。第2の演算システムは通知された状態を適切に取り扱う。状態はBDDとして格納され、及び、各BDDはその変数についての順序を有するので、この通信内容に起因して、新たな状態は別の変数順序にある。新たな状態の変数順序は、その結果のBDDサイズでの不具合なしに、第1の演算システム112及び第2の演算システムの区分間で調和させる必要がある。変数順序を劇的に変化させる試みは、BDDサイズに劇的に影響を及ぼし−BDDを相当大きく又は相当小さくする。一群の新たな状態は特定の関心事であるので、特定の実施例は、この受信する区分に付随したメモリ要請の多大な増加を生み出すことなしに、ある区分から別のものへ新たな状態を通信することに関してかなりの利益を与える。
アイドル演算システム時間を減らすために限定された前方(forward)到達可能性分析を利用して、初期状態は複数のウインドウに拡張され、その時間は並列的に動作する演算システムを有することに関連する利得又はゲインを減少させる。区分100内の通信は、各区分100のPOBDDをタグ付けすることによって削減され、通信が望まれる時及び演算システム112を判別され得るようにする。高密度区分100は、1以上の区分100におけるカバレッジを増やすために低密度区分100と通信するように、通信は優先される。1以上の通常的でない大きなBDDを包含する区分100を拒否することで、空間的不具合は減少させることができ、又は特定の実施例では回避することさえ可能であり、特定の実施例では、サンプリングの結果として誤りのない場合に指数的な速度向上をもたらすことができる。
1以上の手順は通信オーバーヘッド及び区分100内での冗長的な演算を減らすために使用されることが可能であり、或いは特定の実施例ではそれを回避することさえ可能である。特定の実施例では、スケジュールアルゴリズムは、区分100の中での通信に関連するコストを減らすために、区分100内での通信の予定を立てる(スケジュール化する)ために使用される。スケジュールアルゴリズムは、並列的な演算環境下でのグリーディ通信を促進する。区分100内の通信に関するあるスケジュールアルゴリズムによれば、各区分100は、(1)区分100内で到達した状態の形式又はバージョンの第1ベクトルと、(2)1以上の別の区分100内で到達した1以上の状態の1以上のバージョンの第2ベクトルとを有する。第1ベクトルは最新(Latest)と記され、第2ベクトルは最終通知(LastCommunicated)と記される。(最終通知[i][j]のような)最終通知の1以上の対角要素は、最少固定点(LFP:least fix point)演算の結果を表現する。スケジューラ106は、区部100及び1以上の別の区分100の間の通信の計画を立てるために使用される。バージョンテーブル108は、1以上の現在必要とされる演算を示し、スケジューラ106は通信をスケジュールするためにバージョンテーブル108にアクセスする。バージョンテーブルは区分100に関する以下の情報を包含する:
・最終通知[i][j]<最新[j]は、区分[i](Partition[i])が区分[j]と通信しなければならないことを示す。
・最終通知[i][j]=最新[j]は、区分[i]が区分[j]により更新され、区分[j]の通信を要しないことを示す。
・最終通知[i][j]<最新[i]は、区分[i]がLFP演算を走らせる必要のあることを示す。
・最終通知[i][j]=最新[i]は、区分[i]が固定点に達したことを示す。
最初に、「最終通知」の全要素がゼロに設定され、「最新」の全要素が1に設定され得る。
LFP演算の結果として又は1以上の他の区分100との通信の結果として、区分100が新たな状態に到達した場合に、区分100は区分100(最新[i]++)の第1ベクトルを増やす。LFP演算又はその通信が良好に完了したならば、区分100の第2ベクトルが更新される(最終通知[i][j]=最新[j])。バージョンテーブル108の行の各要素が「最新」の対応する要素に等しいならば、区分[i]について何らの演算も必要とされず、及びこの条件が総ての区分について真であるならば、固定点に到達している。
演算順序を決定するために、各区分100には、網羅される状態のBDDサイズ及び数に準拠して優先度指標が割り当てられる。この優先度又は別の適切な指標は、固定点に達するために要する時間量を反映し得る。限定ではない一例として、擬似コードにより表現される以下のアルゴリズムが使用され得る:
選択タスク{
小さな(少ないBDDノードの)区分(演算されることを要する)を選ぶ
ある区分と通信することをこの区分が必要とするならば、
通信タスクを起動する(ある区分と通信する)
そうでなければLFPタスクを起動する
}
複数の演算システム112に関連した豊富なリソースに起因して、並列的なPOBDD演算は多大な利点をもたらす。これらの利点は、POBDD演算を通じてエラーを発見することに関して特に顕著である。適性及び不適正の間の非対称性は、これら利点の1以上を与える。以下の例を考察する。5つの区分が存在し、各区分が100このステップを実行しなければならないとする。また、区分5のステップ番号39にバグが存在するとする。順次的な又はシーケンス的な場合には、そのバグを検出するまでに、100*4+39=439ステップが実行される必要がある。これに対して、(各区分に1つの)5つの演算システム112が存在する並列的な場合には、そのバグを検出するまでに39ステップを要する。より多くの区分が存在するならば、POBDD演算の並列化によりもたらされる恩恵は、より顕著になり得る。これは、(現存のROBDDに加えてPOBDD法を包含する)順次的な方法と比較した場合における、並列的なPOBDD法の重要な態様である。
別の例として、区分3のステップ105番にバグがあるとする。1及び5の間で別のメンバであるi及びjについての区分iから区分jへの通信(全部で5*(5−1)=20の通信)は高価であり、そのような演算は100ステップ全体の後に動機付けされる又はトリガを受ける。その代りに、特定の実施例では、1乃至5の区分は最初の100ステップをそれぞれ実行し、(スケジュールに従って)大きな(dense)区分のみが通信を行う。その結果、20個の通信の内8個のみが実行され、区分3はある新たな状態を受信する。4つの更なるステップにて、区分3がバグを発見する(到達可能性について100、通信について1、及び更なる4つが必要とされる。)。従って、演算システム112の1乃至5は独立に100の深さに進行し、20個の通信ステップの内8個のみを実行する。従って、並列的なPOBDDに必要とされる時間全体は、(この例では)近似的に105の処理に必要とされるものである。以前の手法では、5*100=500ステップに対応する演算は、1以上のPOBDDにおける100個の大規模なステップとして、又は1以上の順次的POBDDにおける500個の小規模ステップとして実行された後に、20個全体の通信(又はそれらの等価的なROBDD演算)が続く。これは、プログラムを生かさない傾向にある、というのは、プログラムは、通信処理9乃至12(それに続く、5つの区分各々における100画像の別の集合)の通信処理の困難性に起因して大きなサイズのデータ構造で行き詰まる傾向にあるからである。並列的なPOBDDは実質的な節約効果をもたらす、というのは、(第1の例の場合に)区分3にてエラーが発見されたことを区分3が報告すると直ぐに総ての区分化は104ステップで停止し、他の残りの通信は実行されることを要しないからである。
特定の実施例では、1以上の恩恵を享受するために、冗長的演算及びサンプリング又はトレースセントリック(trace−centric)法が並列的に利用される。N個の演算システム112を並列的に使用することで、実効性をN倍改善することができる。特定の実施例では、そのような改善はN倍より大きくなり得る(非線形利得と言及される)。以下に一例を考察する。8つのウインドウを想定する。また、8つの演算システム112が存在するものとする。8つのウインドウは演算システム112内で分散される。加えて、特定の実施例では、付加的なk*8個の演算システム(例えば、4*8=32)が追加される。従って、各ウインドウについて4つの付加的な演算システム112が存在する。各ウインドウは複数の演算システム112によって取り扱われる。演算システム112は、m1,m2,m3等と記される。ウインドウw1は演算システムm1,m2,m3,m4,m5によって処理され、ウインドウw2は演算システムm6,m7,m8,m9,m10によって処理される、等々である。各ウインドウについて追加的な4つの演算システム112と共に、同一のPOBDDは演算システム112における各ウインドウについて機能的に計算され得るが、各演算システム112は別のパラメータを利用してそのウインドウを処理し得る。従って、例えば、演算システム112m1にて、BDDは第1の変数順序を用いて実行され、演算システム112m2は第2の変数順序を用いて実行される。演算システム112m3では、BDDは第1のクラスタサイズを利用して実行され、演算システム112m2では、BDDは第2のクラスタサイズを利用して実行される。
上述したように、BDDはパラメータに敏感である又は影響を受けやすい。従って、これら5つの実行のうち1つが、デフォルトの当初の選択肢のものと比較して、10倍以上高速であり得る。場合によっては、デフォルトのような場合に、当初の選択肢が最適なものより小さく、そのような利得は100倍以上になり得る。従って、5つの実行の各々は、演算システム112の任意の1つがその演算を終了するまで、演算システム112m1−m5にて継続する。残余の演算システム112は別のウインドウに使用されるように解放される。従って、5つの演算システム112のみが10倍以上の利得を達成するために使用される。加えて、演算システム112は他のウインドウに使用されるように早期に解放され得る。このようにして、非線形利得が与えられる。
POBDDでは任意の区分数が可能なわけではない。8,16,又は32以上の区分は過剰に大き過ぎる、というのは、その区分内で通信が必要とされ、そのような通信はしばしば非効率的だからである。しかしながら、準正式な検査ではこのことは重要でないが(POBDDは準正式な検査についても有利であることを意味する)、正式な検査では、多数の区分を備えることで、問題を生じさせないようにし得る。演算システム112は、特定の実施例では、比較的高価ではないので、比較的多数の演算システム112が比較的多数のウインドウを処理するために使用され得る。この場合に、上記の手法でなく、ウインドウw1−w8及び演算システム112m1−m40が存在する場合には、演算システム112m9−m40は有意義でない。しかしながら、上記の手法によれば、演算システム112は有意義であり、非線形利得を与え得る。特定の実施例では、残余の演算システム112での処理は、それらの実行の1つが他の実行内容より優れていることが判明すると直ぐに終了する。特定の実施例では、これが典型的な状況である。殆どの実行内容に関し、どの演算システム112が最適な演算を行なうかを判別することが可能である。これらの実施例では、5つ総ての演算システム112は同じ時間の長さで使用されることを要しない。例えば、最速の実行内容に100秒かかる場合に、より遅い演算システム112は、例えば100秒後に解放され、これはより高い利得因子を与え得る。
関数表現は、実質的に効率的なモノリシック表現(即ち、ROBDDのような単独のグラフとして)としては大き過ぎることが間々あり、区分化による利益を受け得る。関数表現の区分化分析を実行するために、1以上の以下の質問が問い合せられる:
1.その関数は分離部分空間にいつ分解されるべきか?
2.部分空間はいくつ生成されるべきか?
3.(可能な指数から)どの部分空間が生成されるべきか?
4.表現は処理として生成されるが、処理結果が簡潔ならばどうなるか?
5.そのような表現の部分集合はいつどのようにして単独のグラフに結合されるか?
6.区分化は複数の独立した表現及び処理を生成するが、どの演算順序が使用されるべきか?
これらの問い合わせは実際の区分化処理アルゴリズムにとっては基礎的なものであり、効果的な解が改善された実用的結果をもたらす。特定の実施例は、様々なベンチマーク回路の効率的な分析を可能にする。特定の実施例は以前のPOBDD技法を上回る利益を与える。特定の実施例は到達可能性演算に使用され得る。特定の実施例は、バグや回路設計の他の問題に対処するような業務用アプリケーションに使用され得る。
特定の実施例は相当の区分化のフレキシビリティを与える。特定の実施例では、パリティOBDDがデータ構造に対する機能的パリティノードを導入し、そのノードは、ROBDDが許容するものよりも小さな(おそらくは指数関数的に小さな)関数の表現を許容する。また、(k−IBDD及びk−OBDDのような)他のデータ構造は、区分化する柔軟性を与えるが、パリティOBDDと同程度に実用的ではない。
POBDDはBDDモデルであり、そのモデルは少なくともいくらかの柔軟性を許容し(受け入れモードは論理和である)、複数の変数順序を包含し得る。POBDDの一般的な実証的な(empirical)用途は、各ウインドウが分離した部分空間を表現するのを可能にすることで、実現される。特定の実施例では、POBDDは、シンボルグラフ表現の柔軟性及び処理性の間で実質的なバランスをとる。その結果、POBDDは様々な問題について、受け入れ可能な結果を与える。有限状態マシーン(FSM)の到達可能な状態空間を演算する場合に、POBDDは複数の演算選択肢を与え、これは困難な処理問題であり得る。
到達可能性の問題は、状態空間表現及び状態空間処理を含み、それらは、総ての(又は実質的に総ての)到達可能な状態が探索されるまでになされる、状態空間の一部についての一連の画像演算処理である。特定の実施例は、効率的な部分空間の作成及び画像/固定点演算の実行の双方について改善された実効性を与え得る。
非両立性の関数及びトレースセントリック演算は、柔軟なPOBDD法がどのように使用されるかを説明し及び理解するために使用される。所与の関数に関し、区分化された表現の複数の選択肢が存在し得る。これら選択肢のいくつかは、他のものを上回る1以上の利益を与える。論理設計は、1以上の実質的に異なる性質を有するモジュール又は関数を包含する。結果的に、統合された表現で同一データ構造にてそれらのモジュール又は関数を表現することは非効率的になる虞がある。そのような関数は、多かれ少なかれ互いに非両立的であり、互いを分離することが有利であり得る。以下のような経験的な定義が使用され得る:それら各自の表現の全体が、それら結合された全体としての表現よりもコンパクトである(おそらくは、指数関数的に一層コンパクトである)ならば、一群の関数は非両立的である。ROBDDの観点による関数のシンボル表現を考察する。関数fが、例えば、f1及びf2に分離される場合に、それら各自のROBDDサイズの合計(おそらくは、互いに異なる順序の下で)がfを表現する単独のROBDDのサイズよりも小さいならば、f1及びf2は非両立的である。
区分化の目的は、多くの非両立的な状態空間セグメントを孤立させることである。しかしながら、それらの再表現を構築することなしに、互いに非両立的な2つの関数を見分けることは困難である(又は不可能でさえある)。その結果、関数の静的な分析は、特定の区分化選択肢の有効性を予測するには多かれ少なかれ利用可能でない。特定の実施例では、候補のサブ関数が互いに分利され、多かれ少なかれ最適な順序で独立して表現される場合にそれらの大きさが測定され、それらが互いに非両立的であるか否かが判別される。以下、サブ関数を互いに分離するアルゴリズム、それらのサイズの測定、及びそれら互いの非両立性の当否を判別することについて説明する。
状態空間探索を行なう様々なアルゴリズムは、実効性の点で互いに異なることが間々あり、様々な原理が混合され、動的に代替的な形式で互いに照合される。可能であれば、複数の選択肢を選ぶことで複数の経路を探索することが有利である(これは、例えば、より多くの区分を生成すること、又は区分の処理を止めること、及び第1ウインドウ又は第2ウインドウを選択することを包含し得る)。各選択肢は演算コストに関連付けられる。例として、初期状態及び遷移関係に関し、画像演算及びその後の区分化に関する1以上のステップを実行すること、又は画像演算を実行する前に区分けを生成することが可能である。各々の選択肢は可能な演算の別々のトレースを与える。各選択肢の結果は特定のトレースに関して検査され、特定の方法が選択される。別の例としては、異なる区分化処理スケジュールが選択される場合又はより多くの区分が生成される場合に、空間急増が多かれ少なかれ回避される。
特定の実施例では、先験的な予測がなされる代りに、1以上の特定の選択肢が、必要とされる場合にのみ選択される。様々な手順が、ローカルな状況に準拠して別のアルゴリズムを動機付ける又はそれにトリガを与えるオラクル(oracle)に組み込まれたものと考えられる。これは、各演算ステップにて複数の選択肢からの選択を可能にし、1以上の選択がその演算を通じて動的に形成されるようにする。従って、特定の実施例では、メモリのボトルネック又は問題を克服するいくつかの方法が存在する。これに対して、従前のOBDD法は、部分空間の急増時に許容可能な代替物を(仮にあるとしても)ほとんど与えない。異なる演算段階にてPOBDDアルゴリズム中にインテリジェントな選択肢(例えば、初期グラフ表現、不具合時の動的に増加する区分、及びある部分空間から別の部分空間への通信、又はそのような通信を中断する選択肢のようなもの)を組み込む技法が、以下に説明される。
初期の区分化の際に、BDDサイズ不具合が検出されるまで、到達可能性又はモデル検査ツールが実行される。これは、画像の記号表現の最大サイズとして絶対的に、又は画像処理の前後に到達した状態表現の相対的な比率で測定され得る。特定の実施例では、先験的に選択された閾値因子と共に、後者の手法が採用される。本手法は、従来の区分されない手法よりも区分される手法に設計内容が一層適している場合に1以上の利点をもたらす。表現内容のサイズが初期の非区分化の演算時に急増する場合に(及び不具合が検出される)、多数の区分が作成され、新たな区分けを作成するために、それらはn個の分離変数と、対応する2n個の割当内容に関する余因子とを選択する。特定の実施例では、新たな区分けは、当初の変数順序とは異なる変数順序をそれぞれ有する。
分離変数の選択は、その手法の実効性に影響し得る、生成される区分を判別する。分離変数は、コスト関数を用いて選択される。各変数に関し、コスト関数は、当初グラフのBDDサイズに関連する正及び負の余因子の相対的なBDDサイズを考慮に入れる。相対的なBDDサイズは相対的に均衡させるべきであり、それと同時にそれらBDDサイズの和が当初グラフのBDDサイズに匹敵するべきである。これは、適切なコスト関数を用いて測定される。不具合の出現(及び沈降(subsidence))を判別するためのグラフサイズの測定は、TRのBDDサイズ、画像表現又は双方に関連して行なわれる。TRサイズは多かれ少なかれ不変に維持され得るが、BDDサイズは動的な変数再配列化に起因して実質的に変わる。これらの選択肢の各々について最良の変数が識別され、2つの余因子の全体的なBDDサイズを最小化する変数が選択され、特定の実施例では、その変数は、選択される可能な限りばらばらの2つの区分けを規定する。限定でない一例として、擬似コードで表現される以下のアルゴリズムが使用され得る:
BDDサイズ急増(不具合)が区分化の処理中に検出されると、動的な再区分化のトリガが与えられる。再区分化は、不具合が生成された各区分けにて改善されるまで、1以上の分離変数に準拠して状態空間全体を余因子化(cofactoring)し、その区分を分割することによって、実行される。初期には、その区分けは(上述したように選択される)分離変数を用いて実行される。各々の新規の区分けは、不具合が治まったか否かを把握するために検査される。それが治まっていなければ、その区分けに関して再区分化が実行される。
上述したように、画像演算は代わる代わる構成及び論理積の複数のステップを含む。しばしば、画像演算の中間的ステップの間のBDDサイズにおける不具合は、画像演算が完了する時点までに最終的には治まる一時的な現象である。BDDサイズ不具合が一時的現象である場合に、動的な全体的な(グローバルな)再区分化の起動は、最終的には非常に小さくなる多数の区分けを生成する。従って、特定の画像演算だけのためにローカルに区分を作成し、そして画像演算の終了前にそれらを再結合することが有利である。これらローカルな区分けは、分離変数の以前に生成した順序リストを用いて、余因子化によって生成され得る。非限定的な一例として、擬似コードで表現された以下のアルゴリズムが使用され得る:
以下、困難性に準拠した区分化のスケジューリングに基づく状態空間検索法が説明される。より多くの状態空間が網羅されるにつれて、エラーを捕捉する蓋然性の向上が予想される。従って、より多くの状態空間が速やかに網羅されるならば、いくつものエラーが早期に捕捉され得る。これを行なうために、その区分けの中でどの程度迅速に状態空間が象徴的に(symbolically)網羅されるかという観点から、複数の区分けが特徴付けられ、区分化処理コストで測定され得る。困難度に関するこの特徴付けに関し、処理コストの上昇順に処理する区分けがスケジューリングされ、状態空間は新たな状態が発見される率で増加する手法で探索される。最悪の状況の場合に、総ての区分が処理され、状態空間全体が検索される。これは、例えば、検出可能なエラーが何ら含まれていない回路で起こり得る。
区分を処理するためのスケジューリングコストを割り当てるために使用される1つのメトリックは、密度(density)を用いたスケジューリングである。大きな関数表現サイズ(即ち、BDDサイズ)は、記号検査法で深刻な問題を生じることが間々ある。従来の手法が使用される場合は、大きなBDDサイズは更なる状態空間探索をしばしば制限する。これに対して、区分化法が使用される場合には、大きなBDDサイズは再区分化の契機又はトリガを与え、探索される区分数を増加させる。最悪の場合に、劇的な増加はその区分の探索を断念させてしまう。従って、より多くの且つより高速の状態空間カバレッジを達成するために、より高い状態密度を有する区分が、より低い状態密度を有する区分よりも前に処理される。区分けの密度は、特定の実施例では、その区分で発見された到達可能な状態数の、到達可能な状態を表現するBDDのサイズに対する比率として定められる。この比率は、BDDを用いて到達可能な状態がどのように効率的に表現されるかを測定するために使用される。この比率が大きさに関して規格化されているならば、より大きな密度を有する区分けは「簡易(easy)」であると考えられ、従って低位の処理コストが割り当てられる。
区分を処理するためのスケジューリングコストを割り当てるために使用される別のメトリックは、時間を用いたスケジューリングであり、それは、各区分内で最新の固定点演算に使用された時間を考慮に入れるが、その区分への又はそこからの通信に使用される時間を排除するものである。区分けが充分に探索させるように接近しているならば、僅かな画像演算しか存在せず、従って、その区分への又はそこからの通信に使用される時間は比較的小さくなる。しかしながら、一般に、比較的短い時間的要請に各々が関連する顕著な画像演算数が存在する場合にのみ、時間全体が比較的小さくなる。そのような場合には、区分けにおける画像演算は、「簡易」であると言及され、その区分けは1以上のBDDを利用するような記号的処理に一層相応しい。
その区分けの密度に対する最新の固定点演算にかかった時間の比率は、区分けのコスト関数として使用され得る。このコストが低くなればなるほど早期に、区分けが処理用に予定され、発見することが一層高価になる状態の検索を実際に遅らせる。非限定的な一例として、スケジューリングを含む到達可能性アルゴリズムが以下に説明される:
到達可能性アルゴリズムに対する入力は、遷移関係T及び初期状態Iである。アルゴリズムは、BDDサイズ不具合が検出されるまで、T,Iにて到達可能性についての標準的モノリシックアルゴリズムを走らせる。不具合は以下のパラメータに従って規定され、それらは:(1)画像演算前のBDDサイズに関する、画像演算中のBDDサイズの比率;及び(2)BDDサイズの上限である。モノリシックアルゴリズムが到達可能性アルゴリズムを終了していない場合には、POBDDに準拠した到達可能性演算が利用される。区分けはR,T双方からの情報を用いて作成される。到達可能な状態空間Rは、その後にPOBDDデータ構造Pobdd−Rに変換される。POBDDに準拠した状態検索アルゴリズムで重要なステップは、区分内でLFPを算出することである。他の重要なステップは、1以上の別の区分内で関数の画像を演算することである(ある区分から1以上の他の区分への通信を包含する)。スケジューラは、上述した処理の次のステップを判別するためにその区分を選択するために使用され得る。スケジューラは2つの優先度キューを利用し:上述した処理の各々に関するものである。各区分には、区分けを処理する相対的なコストを表現するコストが割り当てられる。上述したように、コストメトリックは、2つの区分を互いに比較するために使用される。スケジューラは「簡易」な区分を最初にスケジュールしようとする。getLFPList関数は、LFPキューからトップハーフ最少コスト区分(top−half lowest−cost partition)を返す。同様に、getCommList関数は、共通キューからトップハーフ最少コスト区分を返す。このグリーディ手法は、先ず最少コスト区分内で固定点に到達しようとし、その演算は、より高いコスト区分に向けて進行し、最終的に目標の固定点演算を完了する。
特定の実施例では、特性検査のために学習法が使用され、その手法は定数を決定する際の柔軟性を与える。典型的な工業的設計内容は、正式な検査についての何千種もの特性を有する。設計者は総ての特性について速やかに検査することを望む。正式な検査ツールはしばしば多くのパラメータを有し、総ての特性の検査をまかなう単独の設定内容を見出すことが困難になる虞がある。この問題に対処するために、以下の手法が使用され得る。1以上の実験を行ないつつ学習法が開発され、総ての特性が回路規模に従って分類される。これは、1以上の同様の手法で動作するある分類中の総ての特性と共に、比較的小さなクラスの集合になる。特性を分類することに関する設計内容の削減は、類似する回路をもたらし、到達可能性演算はその回路内での同様なステップに続く。このことを考慮すると、各クラス(分類)について最良の設定内容が選択される。特定の実施例では、任意の1以上の以下のステップが使用され得る:
(1)候補集合の設計。上述したクラスの各々から3つの特性が選択される。
(2)候補集合に関する実験からの学習。異なる設定の適用。簡易な特性、困難な特性、中程度に困難な特性について上手く動作する良好な設定内容の集まりが、深い回路での特性検査に見出され、これら総ての設定内容が候補集合に適用される。学習は、実行時間及び総ての実験によるピークノードカウントを選択すること、及び特性の各クラスについて特定の設定内容を選択することからもたらされる結果である。
(3)検査集合の設計。各クラスからランダム的な特性が再び選択され、試験集合に入力される。
(4)以前の学習経験の試験集合への適用。候補集合から選択された総ての良好な設定内容が、選択された試験集合に適用される。
(5)各クラスについての設定内容の決定。最良の設定内容が、上記総ての実験から
各クラスについて選択される。
(6)多かれ少なかれ盲目的にこれらの設定内容を特性の各クラスに適用すること。
正式な検査では、設定内容が良好に動作するならば、それは別の設定内容よりも実質的に良好に動作する。比較的多くの時間が適切な設定内容を決定することに費やされ、この時間は比較的多数の特性の検査に費やされ、検査に費やされる全体的な時間を減らす。上述した学習法は正式な検査法に適用されるように説明されたが、上記の学習法は、具体的な実施例にて、回路に関する1以上の特性を検査する任意の適切な技法に適用され得る。
以前の技法によれば、モデル検査は、論理積/定量化法のような画像演算法を利用しながら、回路を採用することによって及び回路の到達可能な状態空間を判別することによって実行されていた。特性は、演算ツリー論理(CTL)のような論理言語で特定される。そして、計算された到達可能な状態にて、検出される違反についてCTL特性が検査され、その検査は、後方への到達可能性分析を実行することによって達成され得る。これらの技法の1つの欠点は、一方又は双方の方向での到達可能性分析を実行するのが困難であることが間々あることである。
これに対して、特定の実施例では、POBDDが使用される。POBDD技法は空間を区分に分割し、可能な限り各区分内で作業する。実質的に更なる何らの進展もなされない場合には、各区分は互いに相互作用する。この相互作用は「通信」として言及される。特定の実施例では、そのような通信は高価な処理であり、従って頻繁にはなされるべきでない。
特定の実施例では、モデル検査、特にE(fUg)の性質の公式に関して、通信遅延法が使用される。特定の実施例では、区分間の通信を遅延させるための適切な技法が使用される。特定の実施例では、到達可能性における動的な区分けの利用に加えてモデル検査の利用は、不具合が検出された場合により多くの区分けを生成する。特定の実施例では、区分数を減らすための適切な技法が使用される。
命題論理及び実際の暫定的なオペレータEX,EU,EGの論理的な接続により任意のCTL公式を表現することが可能である。そのような表現は、実際的通常形(existential normal form)と言及される。
モデル検査は通常的には2段階で実行される。第1段階では、モデル検査される公式について有限状態マシーンが減縮され、その到達可能性が算出される。第2段階は所与の公式に偽である状態群を算出することを包含する。早期に算出された到達可能な状態は、このステップでの中核的集合(core set)として使用される。
POBDDを包含する記号的BDDデータ構造での論理演算を効率的に行なう演算手順が存在するので、CTL公式のモデル検査は、暫定的なオペレータの記号的アプリケーションに主に関連する。EXqは後方画像(backward image)であり、その方向についての調整内容と共に、到達可能性の際の画像処理と同じ装置を使用する。EpUp(EGpと略す)は、
のオペレータの最少(最大と略す)固定点として伝統的に表現される。
不変量は形式AGpのCTL公式であり、ここでpは命題であり、従って初期の到達可能性演算自身の際に検査され得る。
以前の多くの到達可能性アルゴリズムは、有限状態マシーンの幅優先検索に基づいている。そのアルゴリズムは、現在の状態変数sで表現された一群の初期状態I(s)と、次の一群の状態N(s’)に関連する遷移関係T(s,s’,i)とを入力として取得し、次の状態とは、システムが入力iに基づいてある状態から到達し得るものである。遷移関係T(s,s’,i)は、個々の状態要素についての遷移関係sk ’=fk(s,i)の論理積をとることで得られ、即ち、T(s,s’,i)=Π(sk ’=fk(s,i))である。システムが到達することの可能な所与の一群の状態R(s)の下で、一群の状態N(s’)は、方程式
を用いて算出される。この計算は画像演算として知られている。到達される一群の状態は、(変数s’をsに置換することで得られる)N(s)をR(s)に付加し、固定点に達するまで上記の画像演算ステップを反復的に実行することで算出される。
POBDDに関し、区分jから区分kへの遷移関係Tjkは、Tjk(s,s’,i)=wj(s)wk(s’)T(s,s’,i)のように、Tと各ウインドウ関数との論理積をとることで導出される。PROBDDに準じた検索アルゴリズムは、各自の区分における固定点を演算するために、その内部ループ内でROBDDに準拠したアルゴリズムを使用する。区分けされたROBDD表現 χR={(wj(s),Rj)|1≦j≦k}を考察する。Tjjの下でRjの画像が取得されると、
が得られる。w
j(s’)は定量化される変数に依存しないので、それは実際の定量化から抜き出すことができ、
Tjjの下でのRjの画像は完全に区分j内にある。同様に、Tjlの下でのRjの画像Nlは、完全に区分l内にあり、画像演算は、同じ区分内で演算される画像と、別の区分に通知される画像とで規定され得る。前者は区分画像(ImgPart)と呼ばれ、後者は通信画像(ImgComm)と呼ばれる。同様に、事前画像(preImage)演算の事前区分(prePart)と事前通信(preComm)は、以下の擬似コードを用いて規定され得る:
事前画像(即ち、EX演算)はそれらの統合によって得られる:
通信される画像の計算に2つの手法が可能である:1つの手法によれば、画像は、遷移関係T
jkを利用して、区分jから各区分k≠jへ別々に算出される。或いは、区分jから、
により記される区分jの補集合である論理空間への画像を演算することも可能である。前者は、遷移関係T
jkのBDD表現は充分に小さいが、O(n
2)程度の画像演算を実行しなければならない場合に有利であり得る。特定の実施例では、「通信画像」を規定するために第2の方法が使用される。この方法はO(n)程度の画像演算しか必要としないが、これの各々にはO(n)程度の制限的処理が続く。
形態(modality)EX,EU,EGは、実際的な通常形で任意のCTL式を表現するのに充分である。特に、デッドロック(deadlock)特性
は、CTLに関する最大の固定点非拘束フラグメントで表現され得る。不変性検査及びデッドロックは、設計者にとってしばしば実際上の関心事であるので、特定の態様は最少の固定点オペレータE(pUq)を呼び出す。
「区分画像」及び「通信画像」の2つの画像演算の間には基本的な相違が存在する。imgPart(Rj)は、当初のBDD Rjと同じ区分j内にあり、従ってその計算に関して唯1つの区分がメモリ内にあることを要する。一方、imgComm(Rj)は、j’(即ち、j以外の全区分)への画像を演算し、最終的には総ての画像にアクセスし及び修正する必要がある。このことは、通信に関して2つの事項を生じさせる。第1に、全区分に関する到達済み状態群がアクセスされるべきである。より大規模な設計の場合には、単独の区分のBDDでさえ、百万のノード内で動作し、このことは通常的にはディスクから格納された区分にアクセスすることを意味する。第2に、演算される状態群のBDD変数順序は、新たな状態がターゲット内の到達される集合に加えられる前に、j番目の区分の順序から、そのターゲット区分各々のものに変更されるべきである。大規模な設計では、大きなBDDを再配列化することは高価な処理になる虞がある。
区分内での画像演算ImgPartは、区分間の通信ImgCommに比して比較的安価である。従って、ある区分から別のものへのBDDの転送を減らすために、潜在的に可能な場合は常に、通信画像ImgCommの呼出数を減らすアルゴリズムが使用される。通信前に区分内で反復的に画像通信を実行する利点は、別の手法で捕捉するものよりも早期にエラーが捕捉されることである。ある区分で公式が偽になる場合に、別の区分を更に探索することは不要である。このように、別の手法が必要とするものよりも小さな状態空間部分を探索することによって、エラーを見出すことが可能になる。
非限定的な一例として、以下に、POBDDに関する、区分化を活用するよう設計された改善されたモデル検査アルゴリズムが説明される:
E(pUq)の演算で、preImage演算はアルゴリズムにより行なわれる作業の大部分をなす。preImage全体の中で通信内容を事前に形成するコストは、区分間でBDDを転送すること、そのような転送が可能になる前にBDDを再配列化すること、及び新規状態がpと論理積をとり且つqと論理和をとり得るように格納部から区分を取り出すこと、に要するリソースの観点からは比較的大きい。従って、特定の実施例では、事前通信preImageを呼び出すことは、通信が行われる前に各区分内でローカルに可能な限り多くの画像演算と同程度に実行を遅らせることが可能である。集合E(pUq)を演算するための上述のアルゴリズムは、データ構造の区分化された性質を考慮し得る。各区分は、別の区分がそれぞれ固定点に到達するまで、別の区分とは独立して調査される。そして、区分間の通信が実行される。結果として、1以上の区分が所与の任意の時点でメモリに格納されることを要せず、BDD転送に含まれる通信数、ディスクアクセス数及び変数再配列化呼出数が削減される。
特定の実施例では、検査プロセスが止められるべき時を判別するための技法が使用される。特定の実施例は、準正式な検査が、網羅された状態数と状態が網羅される速度とに準拠した適切な範囲まで実行された時点を判別する。準正式な検査の走行時間は、飽和点(又はニーポイント(knee point))に到達したか否かに基づいて制御され得る。準正式な検査での1つの問題は、検査プロセスが停止される時点を知らないことである。より多くの時間が費やされるべきか? 追加的な時間が追加的な有意のカバレッジを与えるか?
飽和点に達したならば、より多くの時間が費やされたとしても、更なる有益な情報は得られない傾向にある。一方、飽和点に達していないならば、検査プロセスは、特に重要な特性に関連して、継続される。例えば、多くの新たな状態が各時点でカバーされ、何らの設計バグも発見されなかったならば、その準正式な検査プロセスを継続することが望ましい。一方、プログラムが遅延して、新たな状態をカバーするのに過剰に多くの時間がかかるならば(以前のカバレッジに比較して)、そのプログラムをより長く(例えば10時間長く)走らせることは有益ではない(もし利益があるとしてもほとんど無い)。特定の実施例では、簡易な状態総て(又は実質的に総て)が既にカバーされているか否か及び飽和点が到達しているようであるか否かをそのカバーされる状態空間が示すように、カバーされる状態空間は特徴付けられる。
カバーされる状態空間は到達可能性計算ステップに関してプロットされる。1以上の到達可能性演算を利用して検査が実行され、これらの計算の各ステップは設計の初期状態から遠くの状態に到達し得る。例として、到達可能性計算ステップ番号10の終わりには、初期状態から少なくとも10の距離にある状態が到達済みである。Y軸に網羅された状態数、X軸に到達可能性演算ステップ数をプロットし、曲線が当てはめられる。そしてその曲線が分析される。曲線が膝状部(knee)を示すならば、その膝状部は飽和点を示す。任意の適切な曲線プロットソフトウエアが使用され得る。特定の実施例では、ニーポイントに到達してもしなくても良い。ニーポイントに関するリファレンスは曲線に沿うあるポイントを包含し、そこでは曲線がY軸に関する増加をほとんど停止しており、少なくとも幾分平坦になっている。特定の実施例では、以下のような、可能性のある飽和点を見出す技法が使用され得る:準正式な検査モードで、検査プロセスが各特性に関して未だ飽和点に達していなかったならば、その検査プロセスは継続される。そうでなければ、検査プロセスは停止される。
図15は、分散して演算を行なう1以上の区分けされたデータ構造を用いて、回路内の1以上の到達可能な状態を判別する方法例を示す。本方法はステップ600から始まり、ターゲット回路82が複数の区分100に分割される。ステップ602では、区分100が演算システム112にそれぞれ分散される。ステップ604では各区分100が、固定点に達するまで処理さえる。ステップ606では、演算システム112で実行された到達可能性分析に関する情報が、演算システム112内で通信され、その時点で本方法は終了する。上述したように、更なる処理が、通信された情報に基づいて演算システム112における区分100にて実行され得る。図15に示される方法の特定のステップは、特定の順序で行なわれるように説明及び示されているが、本発明は、任意の適切な順序で上述の方法に関する適切なステップが行なわれ得ることを意図する。
図16は、1以上の複数ルート2進判定図を用いる(ターゲット回路82のような)回路の到達可能性検査用の方法例を示す。本方法はステップ700にて始まり、ターゲット回路12のラッチについてPOBDDが生成される。ステップ702では、POBDDのTRがグラフ化される。ステップ704では、POBDDの2つの論理和集合が生成される。ステップ706では、POBDDの各論理和区分が閾値サイズと比較される。ステップ708では、POBDDの論理和区分双方が閾値サイズを下回る場合に、本方法はステップ710に進む。ステップ710では、POBDDがNCPTのルートに割り当てられる。ステップ712では、NCPTの各リーフについて、総ての分解点が構成され、総ての区分が生成される。ステップ714では、到達可能性分析が、NCPTの各リーフの各区分を利用しながら、固定点に達するまで実行され、(固定点に達すると)その時点で本方法は終了する。ステップ708に戻って、POBDDの論理和区分双方が閾値サイズを下回らない場合には、本方法はステップ716に進む。ステップ716ではTRが、キューブ状区分化法を用いて減縮され、再びステップ710に合流する。図16に示される本方法は、ターゲット回路82の複数のラッチ(おそらくは総てのラッチ)について反復され得る。図16に示される方法の特定のステップは、特定の順序で行なわれるように説明及び示されているが、本発明は、任意の適切な順序で上述の方法に関する適切なステップが行なわれ得ることを意図する。
図17は、スケジューリング法を用いて回路の準正式な検査についての方法例を示す。本方法は、ステップ800から始まり、各々が回路の状態空間の区分に対応する複数のPOBDDが生成される。POBDD各々は、上述したように複数の状態及び複数の状態空間を包含する。ステップ802では、各POBDDの密度が判定される。上述したように、POBDDの密度は、そのPOBDD中の状態数及びノード数を反映する。ステップ804では、POBDDが(予め決定される)閾値を超える密度を有する場合に、POBDDは無視される。ステップ806では、無視されていないPOBDDの組又はペアが、スケジュールに従って互いに通信を行い、回路の1以上の到達可能な状態を判別し、その時点で本方法は終了する。非限定的な一例として、特定の実施例では、そのスケジュールに従って、高密度で簡易な区分から低密度で簡易な区分への通信は第1優先度であり;高密度で簡易な区分から高密度で簡易な区分への通信は第2優先度であり;及び高密度で簡易な区分から低密度でより複雑な区分への通信は第3優先度である。図17に示される方法の特定のステップは、特定の順序で行なわれるように説明及び示されているが、本発明は、任意の適切な順序で上述の方法に関する適切なステップが行なわれ得ることを意図する。
本発明は、特定の実施例に関連して詳細に説明されているが、システム80は任意の状況に拡張されることが可能であり、その状況では、選択されたタスクを実行する又は指定された特性を包含するように設計又は製造される所与のターゲットについて、検査が行なわれる。更に、システム80によって顕著なフレキシビリティが得られ、任意の適切な1以上の要素が、それらの動作を向上させる別の要素と置換され得る。例えば、システム80は、BMCツール要素88、POBDDデータ構造84及びアルゴリズム要素86のような具体的な要素を参照しながら説明されてきたが、これらの要素は、それが適切ならば単一の一体的装置内に設けられることも可能であり、又はそれらの機能をもたらす装置と置換されることも可能である。POBDDデータ構造84は、その検査能力を強化するために、他の適切な検査又はシミュレーションプロトコルと共に使用され得る。加えて、設計者情報90は任意の適切な手法でPOBDDデータ構造84に通知され或いは与えられ、BMCツール要素88に、境界モデル検査を実行するのに好都合な開始ポイントが用意されるようにする。
加えて、システム80は1以上の個別素子を参照しながら説明されてきたが、処理動作を向上させるために、追加的な中間的要素がシステム80に設けられることも可能である。例えば、追加的な要素は、BMCツール要素88及びPOBDDデータ構造84間の情報通信に使用され得る。本発明は広範な汎用性の恩恵に浴することが可能であり、これらの要素は様々な中間的処理要素に関連して適切な形式で動作することが可能であり、所与のターゲット要素又はオブジェクトに関する検査手順を支援する。
本発明はいくつかの実施例と共に説明されてきたが、様々な変更、置換、変形、代替及び修正が当業者に示唆され、本発明はそのような変更、置換、変形、代替及び修正の総てを本発明の精神及び特許請求の範囲内に包含することを意図する。いずれにせよ、本発明は、特許請求の範囲に反映されない明細書中の記述には限定されない。
以下、本発明により教示される手段を列挙する。
(付記1)
ターゲット回路に関連する情報を受信するよう動作する区分けされ順序付けられた2進判定図(POBDD)データ構造であって、前記情報は検査されるターゲット回路内の特性を区別し、前記POBDDデータ構造は、前記ターゲット回路内の部分空間に関連する第1深度で第1状態群を生成するために1以上の処理を実行するところのPOBDDデータ構造;及び
前記POBDDデータ構造から前記第1状態群を受信するよう動作する境界モデル検査(BMC)ツール要素であって、前記BMCツール要素は、前記ターゲット回路内の部分空間に関連する第2深度で第2状態群を生成するために、前記第1状態群を利用して1以上の境界モデル検査処理を実行し、前記第1状態群は、前記第2深度が前記第1深度より大きくなるように前記第2状態群に対する基礎として使用されるところのBMCツール要素;
を備えることを特徴とするターゲット回路に関連する特性を検査する装置。
(付記2)
更に:
前記POBDDデータ構造に結合されたアルゴリズム要素を備え、前記アルゴリズム要素は、前記ターゲット回路内に含まれる特性を検査するために実行される1以上のアルゴリズムを包含することを特徴とする付記1記載の装置。
(付記3)
前記第1状態群が、2進判定図(BDD)言語プロトコルに変換され、論理積通常形(CNF)公式に対応付けられ、前記CNF公式は第1状態群として前記BMCツール要素に通知され、前記BMCツール要素は前記第1状態群から前記第2状態群を生成することを特徴とする付記1記載の装置。
(付記4)
1以上の画像処理が、前記第2深度で前記第2状態群を生成するために前記情報に関して実行されることを特徴とする付記1記載の装置。
(付記5)
1以上の事前画像処理が、前記第1深度で前記第1状態群を生成するために前記情報に関して実行されることを特徴とする付記1記載の装置。
(付記6)
前記BMCツール要素が、前記第2深度で前記第2状態群を生成するために1以上の充足可能性(SAT)手順を実行することを特徴とする付記1記載の装置。
(付記7)
前記情報は、前記POBDDデータ構造が前記第1深度で前記第1状態群を生成するために検査を実行することを特徴とする付記1記載の装置。
(付記8)
前記BMCツール要素が、検査される前記特性に関連する整合性パラメータを反映する結果を生成し、前記整合性パラメータは1以上のエラーが前記ターゲット回路内に存在するか否かを区別することを特徴とする付記1記載の装置。
(付記9)
ターゲット回路に関連する情報を受信するステップであって、前記情報は検査されるターゲット回路内の特性を区別するところのステップ;
1以上の区分けされ順序付けられた2進判定図(POBDD)処理を、前記ターゲット回路内の部分空間に関連する第1深度で第1状態群を生成するために前記情報を利用して実行するステップ;及び
前記ターゲット回路内の部分空間に関連する第2深度で第2状態群を生成するために、前記第1状態群を利用して境界モデル検査処理を実行するステップであって、前記第1状態群は、前記第2深度が前記第1深度より大きくなるように前記第2状態群に対する基礎として使用されるところのステップ;
より成ることを特徴とするターゲット回路に関連する特性を検査する方法。
(付記10)
更に:
前記ターゲット回路に関連付けられた特性を検査するために1以上のアルゴリズムを実行するステップより成ることを特徴とする付記9記載の方法。
(付記11)
更に:
2進判定図(BDD)言語プロトコルに前記第1状態群を変換するステップ;及び
前記BDD言語プロトコルを論理積通常形(CNF)公式に対応付けるステップであって、前記CNF公式は第1状態群を反映し、前記第2状態群は前記第1状態群から生成されるところのステップ;
より成ることを特徴とする付記9記載の方法。
(付記12)
前記第2深度で前記第2状態群を生成するために前記情報に関して1以上の画像処理を実行するステップより成ることを特徴とする付記9記載の方法。
(付記13)
前記第1深度で前記第1状態群を生成するために前記情報に関して1以上の事前画像処理を実行するステップより成ることを特徴とする付記9記載の方法。
(付記14)
前記第2深度で前記第2状態群を生成するために1以上の充足可能性(SAT)手順を実行するステップより成ることを特徴とする付記9記載の方法。
(付記15)
前記情報は、前記第1深度で前記第1状態群を生成するための期間を含むことを特徴とする付記9記載の方法。
(付記16)
更に、検査される前記特性に関連する整合性パラメータを反映する結果を生成するステップより成り、前記整合性パラメータは1以上のエラーが前記ターゲット回路内に存在するか否かを区別することを特徴とする付記9記載の方法。
(付記17)
ターゲット回路に関連する情報を受信する手段であって、前記情報は検査されるターゲット回路内の特性を区別するところの手段;
1以上の区分けされ順序付けられた2進判定図(POBDD)処理を、前記ターゲット回路内の部分空間に関連する第1深度で第1状態群を生成するために前記情報を利用して実行する手段;及び
前記ターゲット回路内の部分空間に関連する第2深度で第2状態群を生成するために、前記第1状態群を利用して境界モデル検査処理を実行する手段であって、前記第1状態群は、前記第2深度が前記第1深度より大きくなるように前記第2状態群に対する基礎として使用されるところの手段;
を備えることを特徴とするターゲット回路に関連する特性を検査するシステム。
(付記18)
更に:
前記ターゲット回路に関連付けられた特性を検査するために1以上のアルゴリズムを実行する手段より成ることを特徴とする付記17記載のシステム。
(付記19)
更に:
2進判定図(BDD)言語プロトコルに前記第1状態群を変換する手段;及び
前記BDD言語プロトコルを論理積通常形(CNF)公式に対応付ける手段であって、前記CNF公式は第1状態群を反映し、前記第2状態群は前記第1状態群から生成されるところの手段;
より成ることを特徴とする付記17記載のシステム。
(付記20)
前記第2深度で前記第2状態群を生成するために前記情報に関して1以上の画像処理を実行する手段より成ることを特徴とする付記17記載のシステム。
(付記21)
前記第1深度で前記第1状態群を生成するために前記情報に関して1以上の事前画像処理を実行する手段より成ることを特徴とする付記17記載のシステム。
(付記22)
前記第2深度で前記第2状態群を生成するために1以上の充足可能性(SAT)手順を実行する手段より成ることを特徴とする付記17記載のシステム。
(付記23)
更に、検査される前記特性に関連する整合性パラメータを反映する結果を生成する手段より成り、前記整合性パラメータは1以上のエラーが前記ターゲット回路内に存在するか否かを区別することを特徴とする付記17記載のシステム。
(付記24)
ターゲット回路に関連する特性を検査するためのコンピュータ読み取り可能な媒体であって、
ターゲット回路に関連する情報を受信するステップであって、前記情報は検査されるターゲット回路内の特性を区別するところのステップ;
1以上の区分けされ順序付けられた2進判定図(POBDD)処理を、前記ターゲット回路内の部分空間に関連する第1深度で第1状態群を生成するために前記情報を利用して実行するステップ;及び
前記ターゲット回路内の部分空間に関連する第2深度で第2状態群を生成するために、前記第1状態群を利用して境界モデル検査処理を実行するステップであって、前記第1状態群は、前記第2深度が前記第1深度より大きくなるように前記第2状態群に対する基礎として使用されるところのステップ;
を実行させるコードを含むことを特徴とするコンピュータ読み取り可能な媒体。
(付記25)
更に:
前記ターゲット回路に関連付けられた特性を検査するために1以上のアルゴリズムを実行するステップを実行させるコードを含むことを特徴とする付記24記載の媒体。
(付記26)
更に:
2進判定図(BDD)言語プロトコルに前記第1状態群を変換するステップ;及び
前記BDD言語プロトコルを論理積通常形(CNF)公式に対応付けるステップであって、前記CNF公式は第1状態群を反映し、前記第2状態群は前記第1状態群から生成されるところのステップ;
を実行させるコードを含むことを特徴とする付記24記載の媒体。
(付記27)
前記第2深度で前記第2状態群を生成するために前記情報に関して1以上の画像処理を実行するステップを実行させるコードを含むことを特徴とする付記24記載の媒体。
(付記28)
前記第1深度で前記第1状態群を生成するために前記情報に関して1以上の事前画像処理を実行するステップを実行させるコードを含むことを特徴とする付記24記載の媒体。
(付記29)
前記第2深度で前記第2状態群を生成するために1以上の充足可能性(SAT)手順を実行するステップを実行させるコードを含むことを特徴とする付記24記載の媒体。
(付記30)
更に、検査される前記特性に関連する整合性パラメータを反映する結果を生成するステップであって、前記整合性パラメータは1以上のエラーが前記ターゲット回路内に存在するか否かを区別するところのステップを実行させるコードを含むことを特徴とする付記24記載の媒体。
(付記31)
ターゲット回路に関連する情報を受信するよう動作する区分けされ順序付けられた2進判定図(POBDD)データ構造であって、前記情報は検査されるターゲット回路内の特性を区別し、前記POBDDデータ構造は、前記ターゲット回路内の部分空間に関連するエラー状態を見分けるために1以上の処理を実行するところのPOBDDデータ構造;及び
エラー状態に関連する経路を見分けるよう動作する補助データ構造であって、前記経路は、エラー状態に関連する初期状態と前記POBDDデータ構造でエラーに遭遇した場所との間の関連性を反映するところの補助データ構造;
を備えることを特徴とするターゲット回路に関連するエラー状態を評価する装置。
(付記32)
更に:
前記POBDDデータ構造に結合されたアルゴリズム要素を備え、前記アルゴリズム要素は、前記ターゲット回路に含まれる特性を検査するために実行される1以上のアルゴリズムを包含することを特徴とする付記31記載の装置。
(付記33)
前記アルゴリズム要素が、前記経路を見分けるために前記補助データ構造により起動されるエラートレースアルゴリズムを含むことを特徴とする付記32記載の装置。
(付記34)
前記エラートレースアルゴリズムは、前記エラー状態が判明した場合に前記初期状態が決定され得るように、前記経路に関連付けられるデータを格納させることを特徴とする付記33記載の装置。
(付記35)
前記特性に関連する一群の状態を生成するように前記情報に関して1以上の画像処理が実行されることを特徴とする付記31記載の装置。
(付記36)
前記特性に関連する一群の状態を生成するように前記情報に関して1以上の事前画像処理が実行されることを特徴とする付記35記載の装置。
(付記37)
前記補助データ構造が、前記経路のパラメータに関連付けられる演算を実行し、前記演算内容は:
前記エラー状態に関連する区分け;
前記POBDDデータ構造が前記エラー状態に遭遇した場合に関連する期間;及び
前記エラー状態を判別することに関連するメモリ消費性;
より成る群から選択されることを特徴とする付記31記載の装置。
(付記38)
前記情報は、前記POBDDデータ構造が前記ターゲット回路の検査を実行する期間を含むことを特徴とする付記31記載の装置。
(付記39)
ターゲット回路に関連するエラー状態を評価する方法であって:
前記ターゲット回路に関連する情報を受信するステップであって、前記情報は検査される前記ターゲット回路内の特性を区別するところのステップ;
前記ターゲット回路内の部分空間に関連するエラー状態を見分けるために前記情報を用いて1以上の区分けされ順序付けられた2進判定図(POBDD)処理を実行するステップ;及び
エラー状態に関連する経路を見分けるステップであって、前記経路は、エラー状態に関連する初期状態とエラーに遭遇した場所との間の関連性を反映するところのステップ;
より成ることを特徴とする方法。
(付記40)
更に:
前記ターゲット回路に関連する特性を検査するために1以上のアルゴリズムを実行するステップより成ることを特徴とする付記39記載の方法。
(付記41)
更に:
前記エラー状態に関連する経路を見分けるためにエラートレースアルゴリズムを実行するステップより成ることを特徴とする付記39記載の方法。
(付記42)
更に:
前記特性を検査することに関連する一群の状態を生成するために前記情報について1以上の画像処理を実行するステップより成ることを特徴とする付記39記載の方法。
(付記43)
前記特性を検査することに関連する一群の状態を生成するために前記情報について1以上の事前画像処理を実行することを特徴とする付記42記載の方法。
(付記44)
前記情報が、前記ターゲット回路について検査が実行される期間を含むことを特徴とする付記39記載の方法。
(付記45)
更に:
検査される特性に関連する整合性パラメータを反映する結果を生成するステップより成り、前記整合性パラメータは1以上のエラーが前記ターゲット回路に存在するか否かを区別することを特徴とする付記39記載の方法。
(付記46)
ターゲット回路に関連するエラー状態を評価するシステムであって:
前記ターゲット回路に関連する情報を受信する手段であって、前記情報は検査される前記ターゲット回路内の特性を区別するところの手段;
前記ターゲット回路内の部分空間に関連するエラー状態を見分けるために前記情報を用いて1以上の区分けされ順序付けられた2進判定図(POBDD)処理を実行する手段;及び
エラー状態に関連する経路を見分ける手段であって、前記経路は、エラー状態に関連する初期状態とエラーに遭遇した場所との間の関連性を反映するところの手段;
を備えることを特徴とするシステム。
(付記47)
更に:
前記ターゲット回路に関連する特性を検査するために1以上のアルゴリズムを実行する手段より成ることを特徴とする付記46記載のシステム。
(付記48)
更に:
前記エラー状態に関連する経路を見分けるためにエラートレースアルゴリズムを実行する手段より成ることを特徴とする付記46記載のシステム。
(付記49)
更に:
前記特性を検査することに関連する一群の状態を生成するために前記情報について1以上の画像処理を実行する手段より成ることを特徴とする付記46記載のシステム。
(付記50)
更に:
前記特性を検査することに関連する一群の状態を生成するために前記情報について1以上の事前画像処理を実行する手段より成ることを特徴とする付記49記載のシステム。
(付記51)
更に:
検査される特性に関連する整合性パラメータを反映する結果を生成する手段より成り、前記整合性パラメータは1以上のエラーが前記ターゲット回路に存在するか否かを区別することを特徴とする付記46記載のシステム。
(付記52)
更に:
前記経路のパラメータに関連付けられる演算を実行する手段を備え、前記演算内容は:
前記エラー状態に関連する区分け;
前記POBDDデータ構造が前記エラー状態に遭遇した場合に関連する期間;及び
前記エラー状態を判別することに関連するメモリ消費性;
より成る群から選択されることを特徴とする付記46記載のシステム。
(付記53)
ターゲット回路に関連するエラー状態を評価するためのコンピュータ読み取り可能な媒体であって:
前記ターゲット回路に関連する情報を受信するステップであって、前記情報は検査される前記ターゲット回路内の特性を区別するところのステップ;
前記ターゲット回路内の部分空間に関連するエラー状態を見分けるために前記情報を用いて1以上の区分けされ順序付けられた2進判定図(POBDD)処理を実行するステップ;及び
エラー状態に関連する経路を見分けるステップであって、前記経路は、エラー状態に関連する初期状態とエラーに遭遇した場所との間の関連性を反映するところのステップ;
を実行させるコードを含むことを特徴とするコンピュータ読み取り可能な媒体。
(付記54)
更に:
前記ターゲット回路に関連する特性を検査するために1以上のアルゴリズムを実行させるコードを含むことを特徴とする付記53記載の媒体。
(付記55)
更に:
前記エラー状態に関連する経路を見分けるためにエラートレースアルゴリズムを実行させるコードを含むことを特徴とする付記53記載の媒体。
(付記56)
更に:
前記特性を検査することに関連する一群の状態を生成するために前記情報について1以上の画像処理を実行させるコードを含むことを特徴とする付記53記載の媒体。
(付記57)
前記特性を検査することに関連する一群の状態を生成するために前記情報について1以上の事前画像処理を実行させるコードを含むことを特徴とする付記56記載の媒体。
(付記58)
更に:
検査される特性に関連する整合性パラメータを反映する結果を生成するステップを実行させるコードを含み、前記整合性パラメータは1以上のエラーが前記ターゲット回路に存在するか否かを区別することを特徴とする付記53記載の媒体。
(付記59)
ターゲット回路に関連する特性を検査する装置であって:
ターゲット回路に関連する情報を受信するよう動作する区分けされ順序付けられた2進判定図(POBDD)データ構造より成り、前記情報は検査される前記ターゲット回路内の特性を区別し、前記POBDDデータ構造は、前記ターゲット回路に関連する到達可能性分析を実行する一群の遷移関係を生成するために、1以上の処理を実行することが可能であり、前記POBDDデータ構造は、前記ターゲット回路に関連する画像を、前記POBDDデータ構造によって生成される最終的画像の部分集合をそれぞれ表現する複数のリーフに区分けすることが可能であり、前記POBDDデータ構造は、論理積及び定量化処理の選択された一方又は双方を別々に利用して1以上のリーフについての分析を実行することが可能であることを特徴とする装置。
(付記60)
更に:
前記POBDDデータ構造に結合されたアルゴリズム要素を備え、前記アルゴリズム要素は、前記ターゲット回路内に含まれる特性を検査するために実行される1以上のアルゴリズムを含むことを特徴とする付記59記載の装置。
(付記61)
前記ターゲット回路に関連する主要な入力、状態変数及び局所的分解変数の内で選択されたものに準拠して前記の区分けが実行されることを特徴とする付記59記載の装置。
(付記62)
1以上のリーフが異なる変数順序を用いて別々に演算されることを特徴とする付記59記載の装置。
(付記63)
更に:
複数の管理部を備え、1以上の管理部が複数のリーフの内選択されたものを分析することが可能であり、1以上のリーフが1つのBDDに結合されることが可能であり、1以上のリーフは演算が完了した後に転送され得ることを特徴とする付記59記載の装置。
(付記64)
1以上のリーフに関連する1以上のウインドウを共通のウインドウに結合するために、局所的な区分け(ローカル区分け)が用いられることを特徴とする付記59記載の装置。
(付記65)
1以上のリーフに関連する全体的な区分け(グローバル区分け)を反映する情報を収集するために、局所的な区分けが用いられ、1以上のリーフに関連する追加的な区分を生成するために、動的な区分けが用いられることを特徴とする付記59記載の装置。
(付記66)
前記POBDDデータ構造は演算処理を監視し、不具合が生じた場合に、該不具合に関連する情報が記録され及び以後の時点で用いられるように、且つ1以上のリーフにより異常な挙動が示された場合に、前記情報が、コスト計算を含む予測リストに含まれるようにすることを特徴とする付記59記載の装置。
(付記67)
ターゲット回路に関連する特性を検査する方法であって:
ターゲット回路に関連する情報を受信するステップであって、前記情報は検査される前記ターゲット回路内の特性を区別するところのステップ;
前記ターゲット回路に関連する到達可能性分析を実行する一群の遷移関係を生成するために、1以上の処理を実行するステップ;
前記ターゲット回路に関連する画像を、区分けされ順序付けられた2進判定図(POBDD)データ構造によって生成される最終的画像の部分集合をそれぞれ表現する複数のリーフに区分けするステップ;及び
論理積及び定量化処理の選択された一方又は双方を別々に利用して1以上のリーフについての分析を実行するステップ;
より成ることを特徴とする方法。
(付記68)
更に:
前記ターゲット回路に含まれる特性を検査するために1以上のアルゴリズムを実行するステップより成ることを特徴とする付記67記載の方法。
(付記69)
前記ターゲット回路に関連する主要な入力、状態変数及び局所的な分解変数の内で選択されたものに準拠して、前記の区分けが実行されることを特徴とする付記67記載の方法。
(付記70)
1以上のリーフが異なる変数順序を用いて別々に演算されることを特徴とする付記67記載の方法。
(付記71)
更に:
演算が完了した後に1以上のリーフを転送するステップより成ることを特徴とする付記67記載の方法。
(付記72)
更に:
検査される特性に関連する整合性パラメータを反映する結果を生成するステップより成り、前記整合性パラメータは、前記ターゲット回路に1以上のエラーが有るか否かを区別することを特徴とする付記67記載の方法。
(付記73)
コンピュータ読み取り可能な媒体に含まれる、ターゲット回路に関連する特性を検査させるソフトウエアであって:
ターゲット回路に関連する情報を受信するステップであって、前記情報は検査される前記ターゲット回路内の特性を区別するところのステップ;
前記ターゲット回路に関連する到達可能性分析を実行する一群の遷移関係を生成するために、1以上の処理を実行するステップ;
前記ターゲット回路に関連する画像を、区分けされ順序付けられた2進判定図(POBDD)データ構造によって生成される最終的画像の部分集合をそれぞれ表現する複数のリーフに区分けするステップ;及び
論理積及び定量化処理の選択された一方又は双方を別々に利用して1以上のリーフについての分析を実行するステップ;
を実行させるコンピュータコードより成ることを特徴とするソフトウエア。
(付記74)
更に、前記コードが:
前記ターゲット回路に含まれる特性を検査するために1以上のアルゴリズムを実行させることを特徴とする付記73記載のソフトウエア。
(付記75)
前記ターゲット回路に関連する主要な入力、状態変数及び局所的な分解変数の内で選択されたものに準拠して、前記の区分けが実行されることを特徴とする付記73記載のソフトウエア。
(付記76)
1以上のリーフが異なる変数順序を用いて別々に演算されることを特徴とする付記73記載のソフトウエア。
(付記77)
更に、前記コードが:
演算が完了した後に1以上のリーフを転送するステップを実行させることを特徴とする付記73記載のソフトウエア。
(付記78)
更に、前記コードが:
検査される特性に関連する整合性パラメータを反映する結果を生成するステップを実行させ、前記整合性パラメータは、前記ターゲット回路に1以上のエラーが有るか否かを区別することを特徴とする付記73記載の媒体。
(付記79)
ターゲット回路に関連する特性を検査するシステムであって:
ターゲット回路に関連する情報を受信する手段であって、前記情報は検査される前記ターゲット回路内の特性を区別するところの手段;
前記ターゲット回路に関連する到達可能性分析を実行する一群の遷移関係を生成するために、1以上の処理を実行する手段;
前記ターゲット回路に関連する画像を、区分けされ順序付けられた2進判定図(POBDD)データ構造によって生成される最終的画像の部分集合をそれぞれ表現する複数のリーフに区分けする手段;及び
論理積及び定量化処理の選択された一方又は双方を別々に利用して1以上のリーフについての分析を実行する手段;
を備えることを特徴とするシステム。
(付記80)
更に:
前記ターゲット回路に含まれる特性を検査するために1以上のアルゴリズムを実行する手段より成ることを特徴とする付記79記載のシステム。
(付記81)
更に:
演算が完了した後に1以上のリーフを転送する手段より成ることを特徴とする付記79記載のシステム。
(付記82)
更に:
検査される特性に関連する整合性パラメータを反映する結果を生成する手段より成り、前記整合性パラメータは、前記ターゲット回路に1以上のエラーが有るか否かを区別することを特徴とする付記79記載のシステム。
(付記83)
ターゲット回路に関連する機能を反映するよう動作する第1の2進判定図(BDD)データ構造であって、前記第1のBDDデータ構造は、前記第1のBDDデータ構造がメジャー閾値を超えるような第1のパラメータ群を包む第1スクリプトを利用して構築されるところの第1のBDDデータ構造;及び
前記ターゲット回路に関連する前記機能を反映するよう動作する第2のBDDデータ構造であって、前記第1のパラメータ群の修正を反映する第2のパラメータ群を含む第2スクリプトを利用して構築され、前記修正は、前記第1のBDDデータ構造よりも小さくなるように前記第2のBDDデータ構造のノードレベルに関連するサイズを減縮しようとし、且つ前記第1のBDDデータ構造を構築することに関連して識別されていたマイナー閾値に準拠するところの第2のBDDデータ構造;
を備えることを特徴とする装置。
(付記84)
更に:
1以上のアルゴリズムを含むアルゴリズム要素を備え、前記アルゴリズム要素は、前記第1及び第2のBDDデータ構造を生成するように動作することを特徴とする付記83記載の装置。
(付記85)
前記第1及び第2スクリプトに含まれるパラメータが:
a) 変数順序;
b) クラスタサイズ;
c) 分解点;
d) 分離変数;
e) 区分数;
f) 生成されるウインドウ数;
g) 使用されるウインドウ種別;
h) 使用される変数;
より成る群要素から選択されることを特徴とする付記83記載の装置。
(付記86)
更に:
前記第1及び第2のBDDデータ構造の構築を各々制御するよう動作する第1及び第2のBDD管理部を備え、前記第1及び第2のBDD管理部は、前記第1及び第2のデータ構造の第1及び第2のグラフに各々関連するサイズを制御するために、前記第1及び第2スクリプトを修正するよう動作することを特徴とする付記83記載の装置。
(付記87)
不具合が生じた場合に、前記第1のBDDデータ構造に関連する前記メジャー及びマイナー閾値が、ファイルにマッピングされ及び格納されるように、前記第1のBDDデータ構造が監視され、前記ファイルは前記第1スクリプトに対する修正の基礎として使用されることを特徴とする付記83記載の装置。
(付記88)
更に:
前記ターゲット回路に関連する機能を有する複数の追加的なBDDデータ構造を並列的に構築するために、前記第2スクリプトを使用することが可能な複数のプロセッサを備えることを特徴とする付記83記載の装置。
(付記89)
2進判定図(BDD)を構築する方法であって:
ターゲット回路に関連する機能を反映するよう動作する第1のBDDデータ構造を構築するステップであって、前記第1のBDDデータ構造は、前記第1のBDDデータ構造がメジャー閾値を超えるような第1のパラメータ群を包む第1スクリプトを利用して構築されるところのステップ;及び
前記第1のパラメータ群の修正を反映する第2のパラメータ群を含む第2スクリプトを利用して、第2のBDDデータ構造を構築するステップであって、前記修正は、前記第2のBDDデータ構造のノードレベルに関連するサイズを減縮しようとし、且つ前記第1のBDDデータ構造を構築することに関連して識別されていたマイナー閾値に準拠するところのステップ;
より成ることを特徴とする方法。
(付記90)
更に:
前記第1及び第2のBDDデータ構造を生成するために、1以上のアルゴリズムを実行するステップより成ることを特徴とする付記89記載の方法。
(付記91)
前記第1及び第2スクリプトに含まれるパラメータが:
a) 変数順序;
b) クラスタサイズ;
c) 分解点;
d) 分離変数;
e) 区分数;
f) 生成されるウインドウ数;
g) 使用されるウインドウ種別;
h) 使用される変数;
より成る群要素から選択されることを特徴とする付記89記載の方法。
(付記92)
更に:
前記第1及び第2のデータ構造の第1及び第2のグラフに各々関連するサイズを制御するために、前記第1及び第2スクリプトを修正することで、第1及び第2のBDDデータ構造の構築を制御するステップより成ることを特徴とする付記91記載の方法。
(付記93)
更に:
不具合が生じた場合に、前記第1のBDDデータ構造に関連する前記メジャー及びマイナー閾値が、ファイルにマッピングされ及び格納されるように、前記第1のBDDデータ構造が監視され、前記ファイルは前記第1スクリプトに対する修正の基礎として使用されることを特徴とする付記91記載の方法。
(付記94)
更に:
前記ターゲット回路に関連する機能を有する複数の追加的なBDDデータ構造を並列的に構築するための前記第2スクリプトを使用するために、複数のプロセッサを駆動するステップより成ることを特徴とする付記91記載の方法。
(付記95)
2進判定図(BDD)を構築するためのシステムであって:
ターゲット回路に関連する機能を反映するよう動作する第1のBDDデータ構造を構築する手段であって、前記第1のBDDデータ構造は、前記第1のBDDデータ構造がメジャー閾値を超えるような第1のパラメータ群を包む第1スクリプトを利用して構築されるところの手段;及び
前記第1のパラメータ群の修正を反映する第2のパラメータ群を含む第2スクリプトを利用して、第2のBDDデータ構造を構築する手段であって、前記修正は、前記第2のBDDデータ構造のノードレベルに関連するサイズを最小化しようとし、且つ前記第1のBDDデータ構造を構築することに関連して識別されていたマイナー閾値に準拠するところの手段;
を備えることを特徴とするシステム。
(付記96)
更に:
前記第1及び第2のBDDデータ構造を生成するために、1以上のアルゴリズムを実行する手段を備えることを特徴とする付記95記載のシステム。
(付記97)
前記第1及び第2スクリプトに含まれるパラメータが:
a) 変数順序;
b) クラスタサイズ;
c) 分解点;
d) 分離変数;
e) 区分数;
f) 生成されるウインドウ数;
g) 使用されるウインドウ種別;
h) 使用される変数;
より成る群要素から選択されることを特徴とする付記95記載のシステム。
(付記98)
更に:
前記第1及び第2のデータ構造の第1及び第2のグラフに各々関連するサイズを制御するために、前記第1及び第2スクリプトをそれぞれ修正することで、前記第1及び第2のBDDデータ構造の構築を制御する手段を備えることを特徴とする付記95記載のシステム。
(付記99)
不具合が生じた場合に、前記第1のBDDデータ構造に関連する前記メジャー及びマイナー閾値が、ファイルにマッピングされ及び格納されるように、前記第1のBDDデータ構造が監視され、前記ファイルは前記第1スクリプトに対する修正の基礎として使用されることを特徴とする付記95記載のシステム。
(付記100)
更に:
前記ターゲット回路に関連する機能を有する複数の追加的なBDDデータ構造を並列的に処理する手段を備えることを特徴とする付記95記載のシステム。
(付記101)
コンピュータ読み取り可能な媒体に含まれる、2進判定図(BDD)を構築するためのソフトウエアであって:
ターゲット回路に関連する機能を反映するよう動作する第1のBDDデータ構造を構築するステップであって、前記第1のBDDデータ構造は、前記第1のBDDデータ構造がメジャー閾値を超えるような第1のパラメータ群を包む第1スクリプトを利用して構築されるところのステップ;及び
前記第1のパラメータ群の修正を反映する第2のパラメータ群を含む第2スクリプトを利用して、第2のBDDデータ構造を構築するステップであって、前記修正は、前記第2のBDDデータ構造のノードレベルに関連するサイズを減縮しようとし、且つ前記第1のBDDデータ構造を構築することに関連して識別されていたマイナー閾値に準拠するところのステップ;
を実行させるコードを含むことを特徴とするソフトウエア。
(付記102)
更に:
前記第1及び第2のBDDデータ構造を生成するために、1以上のアルゴリズムを実行させるコードを含むことを特徴とする付記101記載のソフトウエア。
(付記103)
前記第1及び第2スクリプトに含まれるパラメータが:
a) 変数順序;
b) クラスタサイズ;
c) 分解点;
d) 分離変数;
e) 区分数;
f) 生成されるウインドウ数;
g) 使用されるウインドウ種別;
h) 使用される変数;
より成る群要素から選択されることを特徴とする付記101記載のソフトウエア。
(付記104)
更に:
前記第1及び第2のデータ構造の第1及び第2のグラフに関連するサイズを制御するために、前記第1及び第2スクリプトを修正することで、第1及び第2のBDDデータ構造の構築を制御するステップを実行させるコードを含むことを特徴とする付記101記載のソフトウエア。
(付記105)
更に、前記コードは:
不具合が生じた場合に、前記第1のBDDデータ構造に関連する前記メジャー及びマイナー閾値が、ファイルにマッピングされ及び格納されるように、前記第1のBDDデータ構造が監視され、前記ファイルは前記第1スクリプトに対する修正の基礎として使用されるように動作させることを特徴とする付記101記載のソフトウエア。
(付記106)
更に、前記コードは:
前記ターゲット回路の機能を有する複数の追加的なBDDデータ構造を並列的に構築するように動作させることを特徴とする付記101記載のソフトウエア。
(付記107)
分散された演算及び1以上の区分けされたデータ構造を利用して、回路内の1以上の到達可能な状態を判別するシステムであって:
複数の演算システムを備え、前記複数の演算システムの内の第1のものは:
回路の第1区分を受信し、前記第1区分は第1密度を有する第1の2進判定図(BDD)に対応し;
前記第1区分内の固定点に到達するまで、前記第1のBDDを用いて前記第1区分について第1の到達可能性分析を実行し;
前記第1の到達可能性分析の間に、前記第1のBDDのサイズが閾値を超えるならば、前記第1のBDDを破棄し;及び
前記複数の演算システムの内の少なくとも1つの第2のものと通信を行い;
前記複数の演算システムの内の第2のものは前記回路の第2区分を受信し、前記複数の演算システムの内の第2のものは前記第2のBDDを破棄せずに前記第2のBDDについて第2の到達可能性分析を実行することを特徴とするシステム。
(付記108)
複数の演算システムの内の前記第1のものが:
検査される区分内の特性を区別する、前記区分に関連する情報を受信するよう動作する区分けされ順序付けられた2進判定図(POBDD)データ構造であって、前記区分内の部分空間に関連する第1深度で第1の状態群を生成するPOBDDデータ構造;及び
前記POBDDデータ構造からの第1の状態群を受信するよう動作する境界検査(BMC)ツール要素であって、前記区分内の部分空間に関連する第2深度で第2の状態群を生成するために前記第1の状態群を利用して1以上の境界検査処理を実行し、前記第1の状態群は、前記第2深度が前記第1深度より大きくなるように前記第2状態群の基礎として使用されるところのBMCツール要素;
を備えることを特徴とする付記107記載のシステム。
(付記109)
前記複数の演算システムの内の第1のものが、グリーディ通信アルゴリズムに従って通信することが可能であることを特徴とする付記107記載のシステム。
(付記110)
前記複数の演算システムの内の第1のものが、前記第1の到達可能性分析の計算順序に関する情報を通信することが可能であることを特徴とする付記107記載のシステム。
(付記111)
前記複数の演算システムの内の第1のものが、前記演算システムと1以上の他の演算システムとの間の通信の予定を立てるスケジューラを備え、前記スケジューラは、前記演算システムと他の演算システム各自との間の通信状態を反映するバージョンテーブルに結合されることを特徴とする付記107記載のシステム。
(付記112)
前記バージョンテーブルが、前記演算システムによって到達される状態を反映する第1ベクトルと、前記他の演算システムによって到達される1以上の状態についての1以上の形態を反映する第2ベクトルとを有することを特徴とする付記111記載のシステム。
(付記113)
分散された演算及び1以上の区分けされたデータ構造を利用して、回路内の1以上の到達可能な状態を判別する方法であって:
複数の演算システムの内の第1のものにおいて:
回路の第1区分を受信するステップであって、前記第1区分は第1密度を有する第1の2進判定図(BDD)に対応するところのステップ;
前記第1区分内の固定点に到達するまで、前記第1のBDDを用いて前記第1区分について第1の到達可能性分析を実行するステップ;
前記第1の到達可能性分析の間に、前記第1のBDDのサイズが閾値を超えるならば、前記第1のBDDを破棄するステップ;及び
前記複数の演算システムの内の少なくとも1つの第2のものと通信を行うステップであって、前記複数の演算システムの内の第2のものは前記回路の第2区分を受信し、前記複数の演算システムの内の第2のものは前記第2のBDDを破棄せずに前記第2のBDDについて第2の到達可能性分析を実行するところのステップ;
より成ることを特徴とする方法。
(付記114)
複数の演算システムの内の前記第1のものが:
検査される区分内の特性を区別する、前記区分に関連する情報を受信するよう動作する区分けされ順序付けられた2進判定図(POBDD)データ構造であって、前記区分内の部分空間に関連する第1深度で第1の状態群を生成するPOBDDデータ構造;及び
前記POBDDデータ構造からの第1の状態群を受信するよう動作する境界検査(BMC)ツール要素であって、前記区分内の部分空間に関連する第2深度で第2の状態群を生成するために前記第1の状態群を利用して1以上の境界検査処理を実行し、前記第1の状態群は、前記第2深度が前記第1深度より大きくなるように前記第2状態群の基礎として使用されるところのBMCツール要素;
を備えることを特徴とする付記113記載の方法。
(付記115)
グリーディ通信アルゴリズムに従って通信するステップより成ることを特徴とする付記113記載の方法。
(付記116)
前記第1の到達可能性分析の計算順序に関する情報を通信するステップより成ることを特徴とする付記113記載の方法。
(付記117)
前記複数の演算システムの内の第1のものが、前記演算システムと1以上の他の演算システムとの間の通信の予定を立てるスケジューラを備え、前記スケジューラは、前記演算システムと他の演算システム各自との間の通信状態を反映するバージョンテーブルに結合されることを特徴とする付記113記載の方法。
(付記118)
前記バージョンテーブルが、前記演算システムによって到達される状態を反映する第1ベクトルと、前記他の演算システムによって到達される1以上の状態についての1以上の形態を反映する第2ベクトルとを有することを特徴とする付記117記載の方法。
(付記119)
分散された演算及び1以上の区分けされたデータ構造を利用して、回路内の1以上の到達可能な状態を判別するロジックであって、媒体内でエンコードされ:
複数の演算システムの内の第1のものにおいて:
回路の第1区分を受信し、前記第1区分は第1密度を有する第1の2進判定図(BDD)に対応し;
前記第1区分内の固定点に到達するまで、前記第1のBDDを用いて前記第1区分について第1の到達可能性分析を実行し;
前記第1の到達可能性分析の間に、前記第1のBDDのサイズが閾値を超えるならば、前記第1のBDDを破棄し;及び
前記複数の演算システムの内の少なくとも1つの第2のものと通信を行い;
前記複数の演算システムの内の第2のものは前記回路の第2区分を受信し、前記複数の演算システムの内の第2のものは前記第2のBDDを破棄せずに前記第2のBDDについて第2の到達可能性分析を実行することを特徴とするロジック。
(付記120)
検査される区分内の特性を区別する、前記区分に関連する情報を受信するよう動作する区分けされ順序付けられた2進判定図(POBDD)データ構造であって、前記区分内の部分空間に関連する第1深度で第1の状態群を生成するPOBDDデータ構造;及び
前記POBDDデータ構造からの第1の状態群を受信するよう動作する境界検査(BMC)ツール要素であって、前記区分内の部分空間に関連する第2深度で第2の状態群を生成するために前記第1の状態群を利用して1以上の境界検査処理を実行し、前記第1の状態群は、前記第2深度が前記第1深度より大きくなるように前記第2状態群の基礎として使用されるところのBMCツール要素;
を備えることを特徴とする付記119記載のロジック。
(付記121)
グリーディ通信アルゴリズムに従って通信することを特徴とする付記119記載のロジック。
(付記122)
前記第1の到達可能性分析の計算順序に関する情報を通信するよう動作することを特徴とする付記119記載のロジック。
(付記123)
前記演算システムと1以上の他の演算システムとの間の通信の予定を立てるスケジューラを備え、前記スケジューラは、前記演算システムと他の演算システム各自との間の通信状態を反映するバージョンテーブルに結合されることを特徴とする付記119記載のロジック。
(付記124)
前記バージョンテーブルが、前記演算システムによって到達される状態を反映する第1ベクトルと、前記他の演算システムによって到達される1以上の状態についての1以上の形態を反映する第2ベクトルとを有することを特徴とする付記123記載のロジック。
(付記125)
分散された演算及び1以上の区分けされたデータ構造を利用して、回路内の1以上の到達可能な状態を判別するシステムであって:
複数の演算システムの内の第1のものにおいて:
回路の第1区分を受信する手段であって、前記第1区分は第1密度を有する第1の2進判定図(BDD)に対応するところの手段;
前記第1区分内の固定点に到達するまで、前記第1のBDDを用いて前記第1区分について第1の到達可能性分析を実行する手段;
前記第1の到達可能性分析の間に、前記第1のBDDのサイズが閾値を超えるならば、前記第1のBDDを破棄する手段;及び
前記複数の演算システムの内の少なくとも1つの第2のものと通信を行う手段であって、前記複数の演算システムの内の第2のものは前記回路の第2区分を受信し、前記複数の演算システムの内の第2のものは前記第2のBDDを破棄せずに前記第2のBDDについて第2の到達可能性分析を実行するところの手段;
より成ることを特徴とする方法。
(付記126)
1以上の多重ルート2進判定図(BDD)を利用する回路の到達可能性検査のためのシステムであって:
前記回路内の1以上のラッチに対するPOBDDを生成するよう動作する区分けされ順序付けられたBDD(POBDD)モジュール;
遷移関係(TR)モジュール;及び
前記TRの各区分を利用して、1以上の固定点に達するまで到達可能性分析を実行するよう動作する分析モジュール;
を備え、前記遷移関係(TR)モジュールは、各POBDDに対して:
POBDDについての複数の入力及び状態変数を反映するPOBDDに関連するTRをグラフ化し;
POBDDの2つの論理和区分を生成し;
2つの論理和区分を閾値と比較し;
2つの論理和区分が閾値を下回る場合に、複数のリーフより成る非立方体的区分ツリー(NCPT)のルートに前記POBDDを割り当て;及び
前記NCPTの各リーフについて、1以上の分解点を編成し、1以上の区分を生成する;
ことが可能であることを特徴とするシステム。
(付記127)
前記NCPTの各リーフについて、総ての分解点が編成され、総ての区分が生成されることを特徴とする付記126記載のシステム。
(付記128)
POBDDが前記回路内の全ラッチについて生成されることを特徴とする付記126記載のシステム。
(付記129)
TRが不具合になるまで1以上の分解点を構成することで、TRがグラフ化されることを特徴とする付記126記載のシステム。
(付記130)
前記閾値が予め定められた閾値であることを特徴とする付記126記載のシステム。
(付記131)
2つの論理和区分の各々のサイズが閾値と比較され、前記2つの論理和区分の各々のサイズは新たに割り当てられたノード数に従って決定されることを特徴とする付記126記載のシステム。
(付記132)
POBDDを削減するための1以上の立方体的区分化法を利用するために、前記2つの論理和区分が閾値を下回らない場合に、TRモジュールが更に処理可能であることを特徴とする付記126記載のシステム。
(付記133)
第1のPOBDDが、一般化された余因子処理を用いて1以上の他のPOBDDと通信することが可能であることを特徴とする付記126記載のシステム。
(付記134)
1以上の多重ルート2進判定図(BDD)を利用する回路の到達可能性検査のための方法であって:
前記回路内の1以上のラッチに対する区分けされ順序付けられたBDD(POBDD)を生成するステップ;
各POBDDに対して:
POBDDについての複数の入力及び状態変数を反映するPOBDDに関連する遷移関係(TR)をグラフ化し;
POBDDの2つの論理和区分を生成し;
2つの論理和区分を閾値と比較し;
2つの論理和区分が閾値を下回る場合に、複数のリーフより成る非立方体的区分ツリー(NCPT)のルートに前記POBDDを割り当て;及び
前記NCPTの各リーフについて、1以上の分解点を編成し、1以上の区分を生成するステップ;並びに
前記TRの各区分を利用して、1以上の固定点に達するまで到達可能性分析を実行するステップ;
より成ることを特徴とする方法。
(付記135)
前記NCPTの各リーフについて、総ての分解点が編成され、総ての区分が生成されることを特徴とする付記134記載の方法。
(付記136)
POBDDが前記回路内の全ラッチについて生成されることを特徴とする付記134記載の方法。
(付記137)
TRが不具合になるまで1以上の分解点を構成することで、TRがグラフ化されることを特徴とする付記134記載の方法。
(付記138)
前記閾値が予め定められた閾値であることを特徴とする付記134記載の方法。
(付記139)
2つの論理和区分の各々のサイズが閾値と比較され、前記2つの論理和区分の各々のサイズは新たに割り当てられたノード数に従って決定されることを特徴とする付記134記載の方法。
(付記140)
POBDDを削減するために、前記2つの論理和区分が閾値を下回らない場合に、1以上の立方体的区分化法を利用することを特徴とする付記134記載の方法。
(付記141)
第1のPOBDDが、一般化された余因子処理を用いて1以上の他のPOBDDと通信することが可能であることを特徴とする付記134記載の方法。
(付記142)
1以上の多重ルート2進判定図(BDD)を利用する回路の到達可能性検査のためのロジックであって:
前記回路内の1以上のラッチに対する区分けされ順序付けられたBDD(POBDD)を生成し;
各POBDDに対して:
POBDDについての複数の入力及び状態変数を反映するPOBDDに関連する遷移関係(TR)をグラフ化し;
POBDDの2つの論理和区分を生成し;
2つの論理和区分を閾値と比較し;
2つの論理和区分が閾値を下回る場合に、複数のリーフより成る非立方体的区分ツリー(NCPT)のルートに前記POBDDを割り当て;及び
前記NCPTの各リーフについて、1以上の分解点を編成し、1以上の区分を生成し;並びに
前記TRの各区分を利用して、1以上の固定点に達するまで到達可能性分析を実行する;
ことを特徴とするロジック。
(付記143)
前記NCPTの各リーフについて、総ての分解点が編成され、総ての区分が生成されることを特徴とする付記142記載のロジック。
(付記144)
POBDDが前記回路内の全ラッチについて生成されることを特徴とする付記142記載のロジック。
(付記145)
TRが不具合になるまで1以上の分解点を構成することで、TRがグラフ化されることを特徴とする付記142記載のロジック。
(付記146)
前記閾値が予め定められた閾値であることを特徴とする付記142記載のロジック。
(付記147)
2つの論理和区分の各々のサイズが閾値と比較され、前記2つの論理和区分の各々のサイズは新たに割り当てられたノード数に従って決定されることを特徴とする付記142記載のロジック。
(付記148)
POBDDを削減するために、前記2つの論理和区分が閾値を下回らない場合に、1以上の立方体的区分化法を利用することを特徴とする付記142記載のロジック。
(付記149)
第1のPOBDDが、一般化された余因子処理を用いて1以上の他のPOBDDと通信することが可能であることを特徴とする付記142記載のロジック。
(付記150)
1以上の多重ルート2進判定図(BDD)を利用する回路の到達可能性検査のためのシステムであって:
前記回路内の1以上のラッチに対する区分けされ順序付けられたBDD(POBDD)を生成する手段;
各POBDDに対して:
POBDDについての複数の入力及び状態変数を反映するPOBDDに関連する遷移関係(TR)をグラフ化し;
POBDDの2つの論理和区分を生成し;
2つの論理和区分を閾値と比較し;
2つの論理和区分が閾値を下回る場合に、複数のリーフより成る非立方体的区分ツリー(NCPT)のルートに前記POBDDを割り当て;及び
前記NCPTの各リーフについて、1以上の分解点を編成し、1以上の区分を生成する手段;並びに
前記TRの各区分を利用して、1以上の固定点に達するまで到達可能性分析を実行する手段;
を備えることを特徴とするシステム。
(付記151)
スケジュール法を利用して回路を検査するシステムであって:
1以上の区分化され順序付けられた2進判定図(POBDD)を生成するように集合的に動作する1以上のPOBDDモジュールであって、各POBDDは前記回路の状態空間の1以上の区分に対応し、前記区分における状態数及びノード数を有する1以上のPOBDDモジュール;
各POBDDの各区分の処理コストを判別するように集合的に動作する1以上のコストメトリックモジュール;及び
回路の準正式な検査に対するPOBDDの区分けの処理予定を立てるように集合的に動作する1以上のスケジューリングモジュールであって、前記予定は、少なくとも部分的には、POBDDの区分けの判別済み処理コストに準拠するところのスケジューリングモジュール;
を備えることを特徴とするシステム。
(付記152)
各POBDDの区分けの各々の処理コストが、少なくとも部分的に:
前記区分に対応する特定の区分における最新の固定点演算を行なうのに要する時間の長さ;及び
POBDDに対応する特定の区分の密度であって、前記区分内の状態数及びノード数を反映するところの密度;
の比率に準拠することを特徴とする付記151記載のシステム。
(付記153)
各POBDDの区分けの各々の処理コストが、少なくとも部分的に前記区分の密度に準拠しており、前記密度が前記区分におけるPOBDDの状態数及びノード数を反映することを特徴とする付記151記載のシステム。
(付記154)
前記1以上のスケジューリングモジュールが、集合的に:
1以上のPOBDDの1以上の区分の密度と閾値とを比較し;
前記閾値を超える密度を有する1以上の区分を無視し;及び
以下のスケジュールに従って区分に関する1以上の対の間で通信を行なう;
ように動作することが可能であり:
高密度且つ少ノード数の区分と高密度且つ少ノード数の区分との間の通信の前に、高密度且つ少ノード数の区分と低密度且つ少ノード数の区分との間の通信が行なわれ;及び
高密度且つ少ノード数の区分と低密度且つ多ノード数の区分との間の通信の前に、高密度且つ少ノード数の区分と高密度且つ少ノード数の区分との間の通信を行なうことを特徴とする付記153記載のシステム。
(付記155)
飽和点に達するまで、前記回路に関する準正式な検査のためのPOBDDの区分の処理が継続し、前記飽和点は、新たな状態に到達する特定のレートを反映することを特徴とする付記151記載のシステム。
(付記156)
POBDDの区分けの処理の間に、1以上の区分の対の間で1以上の通信が行われ、区分対の少なくとも1つにおける固定点に到達するまで各通信は遅延させられることを特徴とする付記151記載のシステム。
(付記157)
前記回路は、前記POBDDが生成される前に1以上の区分割当を用いて減縮されることを特徴とする付記151記載のシステム。
(付記158)
POBDDを利用して1以上の到達可能な状態を判別するために、固定点反復法が用いられることを特徴とする付記151記載のシステム。
(付記159)
POBDDを利用して到達した新たな状態の第1数が、以前に到達済みの状態の第2数に関する指定された比率より小さい場合に、前記固定点反復法が選択的に終了することを特徴とする付記158記載のシステム。
(付記160)
1以上のPOBDDが、シミュレーションダンプで調査された1以上の状態から生成されることを特徴とする付記151記載のシステム。
(付記161)
POBDDが、POBDD分割可変発見法を用いて生成されることを特徴とする付記151記載のシステム。
(付記162)
前記回路が、準正式検査法又は正式検査法を用いて検査されることを特徴とする付記151記載のシステム。
(付記163)
複数の特定の検査パラメータについての複数の適切な値を判定するために、学習法を利用して回路に関する1以上の特定の特性を検査する方法であって:
回路規模に従って回路の複数の特性の各々を分類するステップ;
前記複数の特性の中から候補特性を選択するステップであって、候補特性群は各特性分類による1以上の特定の特性より成るところのステップ;
前記候補特性群と複数の特定の検査パラメータに関する複数の特定の値とを利用して、前記回路に関する1以上の特定の特性を検査することを試行するステップ;及び
前記候補特性群と複数の特定の検査パラメータに関する複数の特定の値とを利用して、前記回路に関する1以上の特定の特性に関して試みた検査に従って、複数の特定の検査パラメータに関する複数の適切な値を判別するステップ;
より成ることを特徴とする方法。
(付記164)
前記候補特性群が各自の特性分類からの3つの特定の特性を含むことを特徴とする付記163記載の方法。
(付記165)
準正式検査法又は正式検査法が、前記回路に関する1以上の特定の特性を検査するのを試行するために使用されることを特徴とする付記163記載の方法。
(付記166)
複数の特定の検査パラメータについての複数の適切な値を判定するために、学習法を利用して回路に関する1以上の特定の特性を検査する方法であって:
回路に関する複数の特性から複数の特定の特性を選択するステップ;
複数の特定の検査パラメータに関する複数の特定値を利用して、複数の選択された特性の検査を試行するステップ;
複数の特定の検査パラメータに関する複数の特定値を利用することで:
特に、検査するのに非簡易である回路特性の検査を可能にする複数の特定の検査パラメータに関する複数の特定値の第1集合;
特に、検査するのに適度な非容易性を有する回路特性の検査を可能にする複数の特定の検査パラメータに関する複数の特定値の第2集合;及び
特に、検査するのに比較的困難である回路特性の検査を可能にする複数の特定の検査パラメータに関する複数の特定値の第3集合;
を決定するために実行時間及びピークノード数を用いるステップ;
より成ることを特徴とする方法。
(付記167)
正式検査法又は準正式検査法が、前記回路の選択された特性を検査するのを試みるために使用されることを特徴とする付記166記載の方法。
(付記168)
複数の特定の検査パラメータについての複数の適切な値を判定するために、学習法を利用して回路に関する1以上の特定の特性を検査する方法であって:
回路に関する複数の特性から1以上の特定の特性に関する第1集合を選択するステップ;
複数の特定の検査パラメータに関する複数の特定値を利用して、特性に関する第1集合を検査するステップ;
前記回路の複数の特性から1以上の特定の特性に関する第2集合を選択するステップ;及び
複数の特定の検査パラメータに関する複数の特定値の少なくともいくつかを利用して、特性に関する第2集合の検査を試行するステップ;
より成ることを特徴とする方法。
(付記169)
正式検査法又は準正式検査法が、特性に関する第1集合を検査し、特性に関する第2集合の検査を試みるために使用されることを特徴とする付記168記載の方法。
(付記170)
1以上の特定の特性に関する第2集合の選択が、ランダムな選択であることを特徴とする付記168記載の方法。
(付記171)
複数の特定の検査パラメータについての複数の適切な値を判定するために、学習法を利用して回路に関する1以上の特定の特性を検査する方法であって:
回路に関する複数の特性から1以上の特定の特性に関する第1集合を選択するステップ;
複数の特定の検査パラメータに関する複数の特定値を利用して、特性に関する第1集合を検査するステップ;
前記回路の複数の特性から1以上の特定の特性に関する第2集合を選択するステップ;
特性に関する第1集合を検査するために複数の特定の特性パラメータについての複数の特定値の内の特定の1つを選択するステップであって、複数の特定値の内選択されるものは、特に、回路の特性に関する第1集合の検査を可能にするところのステップ;及び
特性に関する第1集合を検査するために使用される複数の特定の検査パラメータの複数の特定値の内選択されたものを利用して、特性に関する第2集合の検査を試行するステップ;
より成ることを特徴とする方法。
(付記172)
正式検査法又は準正式検査法が、特性に関する第1集合を検査し、特性に関する第2集合の検査を試みるために使用されることを特徴とする付記171記載の方法。
(付記173)
1以上の特定の特性に関する第2集合の選択が、ランダムな選択であることを特徴とする付記171記載の方法。
(付記174)
複数の特定の検査パラメータについての複数の適切な値を判定するために、学習法を利用して回路に関する1以上の特定の特性を検査する方法であって:
回路規模に従って回路の複数の特性の各々を分類するステップ;
前記複数の特性の中から候補特性を選択するステップであって、候補特性群は各特性分類による1以上の特定の特性より成るところのステップ;
前記候補特性群と複数の特定の検査パラメータに関する複数の特定の値とを利用して、前記回路に関する1以上の特定の特性を検査することを試行するステップ;及び
特性分類の各々に関し、前記候補特性群と複数の特定の検査パラメータに関する複数の特定の値とを利用して、前記回路に関する1以上の特定の特性に関して試みた検査に従って、複数の特定の検査パラメータに関する複数の適切な値を判別するステップ;
より成ることを特徴とする方法。
(付記175)
正式検査法又は準正式検査法が、特性に関する第1集合を検査し、特性に関する第2集合の検査を試みるために使用されることを特徴とする付記174記載の方法。
(付記176)
複数の特定の検査パラメータについての複数の適切な値を判定するために、学習法を利用して回路に関する1以上の特定の特性を検査する方法であって:
回路規模に従って回路の複数の特性の各々を分類するステップ;
前記複数の特性の中から候補特性群を選択するステップであって、候補特性群は各特性分類による1以上の特定の特性より成るところのステップ;
前記候補特性群と複数の特定の検査パラメータに関する複数の特定の値とを利用して、前記回路に関する1以上の特定の特性を検査することを試行するステップ;
特性分類の各々に関し、前記候補特性群と複数の特定の検査パラメータに関する複数の特定の値とを利用して、前記回路に関する1以上の特定の特性に関して試みた検査に従って、複数の特定の検査パラメータに関する複数の適切な値を判別するステップ;及び
特性分類の全特性を検査するために特性分類に対応する複数の特定の検査パラメータの内複数の適切な値を、特性分類の各々に適用するステップ;
より成ることを特徴とする方法。
(付記177)
正式検査法又は準正式検査法が、候補特性群の検査を試みるために、及び各特性分類の総ての特性を検査するために使用されることを特徴とする付記176記載の方法。
(付記178)
回路検査手順を終了するための方法であって:
回路に関する既に到達済みの1以上の第2状態から、回路に関する1以上の第1状態に達したことに従って、自動手回路検査手順を実行するステップであって、前記第1状態は時間と共に変化するレートで前記回路検査手順によって到達される所のステップ;
第1状態が回路検査手順で到達される特定のレートを反映する飽和点に自動的に到達するステップであって、前記特定のレートは近似的にゼロに等しいところのステップ;及び
飽和点に達したことに応答して、前記回路検査手順を終了するステップ;
より成ることを特徴とする方法。
(付記179)
前記回路検査手順が準正式な回路検査手順又は正式な検査手順であることを特徴とする付記178記載の方法。
(付記180)
回路を検査する方法であって:
回路の状態空間中の1以上の区分を生成するステップであって、各区分はあるサイズを有する表現内容に関連付けられるところのステップ;
前記回路を検査するために生成された区分の表現内容を利用して、生成された各区分の処理を開始するステップ;並びに
前記区分の処理中に、生成された区分の表現内容の1つのサイズが第1閾値を超える場合に:
前記区分から2以上の副次的区分を生成するために使用され得る、コスト関数に従って決定される少なくとも1つの分離変数を決定し;
決定された分離変数を利用して前記区分から、あるサイズを有する表現内容にそれぞれ関連付けられる2以上の副次的区分を生成し、
2以上の副次的区分の各々の処理を開始し;及び
副次的区分の各々の処理中に、前記副次的区分の表現内容のサイズが第2閾値を超える場合に、区分表現内容サイズを制限するために、前記副次的区分から更なる副次的区分を生成するステップ;
より成ることを特徴とする方法。
(付記181)
前記回路を検査するために、正式な検査法又は準正式な検査法が使用されることを特徴とする付記180記載の方法。
(付記182)
1以上の区分けされ順序付けられた2進判定図(POBDD)を生成するステップであって、各々は回路の状態空間内の1以上の区分に対応するところのステップ;
回路を検査するために:
暫定的な様式で表現され得るある公式又は公式の組合せを利用して各自表現され得る1以上の回路特性と回路を比較するモデル検査法;又は
後方到達可能性技法;
に従ってPOBDDの区分を処理するステップ;及び
POBDDの区分の処理中に、区分の少なくとも1対の間で通信を行うステップであっって、該通信は、区分対の内少なくとも一方の区分内で固定点に達するまで遅延される所のステップ;
より成ることを特徴とする回路検査のための方法。
(付記183)
前記回路の検査が、正式な検査又は準正式な検査を含むことを特徴とする付記182記載の方法。
(付記184)
前記暫定的な様式は、EU,EX又はEGを含むことを特徴とする付記182記載の方法。
(付記185)
回路に関する準正式な検査を行なう方法であって:
回路の状態空間に関する1以上の区分を生成するステップ;
準正式な検査手順について1以上の特定の特性を選択するステップであって、前記1以上の特定の特性の各々は:
区分が論理空間内で一様な分布を有すること;又は
前記1以上の区分の内の2以上の間で重複する構造的画像に関連する1以上の分布基準に、その区分が合致していること;
に従って選択されるところのステップ;及び
回路に関する準正式な検査について1以上の選択された特定の区分のみを処理するステップ;
より成ることを特徴とする方法。
(付記186)
回路の検査を行なう方法であって:
回路を検査するために第1回路検査手順を開始するステップであって、前記検査手順は、あるサイズを有する区分けされない順序付けられた2進判定図(OBDD)を用いるところのステップ;並びに
前記第1回路検査手順の間に、区分けされないOBDDのサイズが閾値を超える場合に:
前記題回路検査手順を終了し;
2以上の区分けされたOBDD(POBDD)を生成するために、分離変数発見法に従って、1以上の分離変数を選択し;
区分けされないOBDD及び1以上の選択された分離変数を利用して、前記回路の特定の部分空間にそれぞれ対応する2以上のPOBDDを生成し;及び
前記回路を検査するために第2回路検査手順を開始するステップであって、前記検査手順は、生成された2以上のPOBDDを使用するところのステップ;
より成ることを特徴とする方法。
(付記187)
前記第1及び第2回路検査手順が、正式な検査手順又は準正式な検査手順を含むことを特徴とする付記186記載の方法。
(付記188)
回路を検査する方法であって:
回路を検査するために回路検査手順を開始するステップであって、前記回路検査手順は、複数の回路検査パラメータの内の複数のパラメータ値に従って実行されるところのステップ;
前記回路の状態空間の特定の区分に関連する回路検査手順の演算トレースを調査するステップであって、前記特定の区分は、前記特定の区分のサイズが比較的小さくなるように発見的手法に従って決定されるところのステップ;及び
前記演算トレースの調査結果を用いて、1以上の回路検査パラメータについての1以上の許容可能な値を決定するために、複数の回路検査パラメータの複数の特定値の内あるものの適切性を評価するステップ;
より成ることを特徴とする方法。
(付記189)
前記回路検査手順が、正式な回路検査手順又は準正式な回路検査手順を含むことを特徴とする付記188記載の方法。
(付記190)
前記発見的手法が、分離変数発見法であることを特徴とする付記188記載の方法。
(付記191)
1以上の許容可能な値が決定される1以上の回路検査パラメータが:
前記回路検査手順に関する演算順序パラメータ;
前記回路検査手順のクラスタ化パラメータ;及び
前記回路検査手順の分離変数パラメータ;
の1つ以上より成ることを特徴とする付記188記載の方法。
(付記192)
回路の状態空間についての複数の区分を回路検査手順のために生成するステップであって、各区分は、各自の有するサイズを表現するものにそれぞれ関連付けられる所のステップ;及び
1以上の第2の複数の区分と両立しない1以上の第1の複数の区分を分離するアルゴリズムを利用するステップであって、2つの特定の区分が互いに両立しないのは、前記2つの特定の区分各々の表現するサイズの全体が、前記2つの特定の区分の組合せについての結合された表現の結合サイズよりコンパクトである場合であり、前記アルゴリズムは、
複数の区分に関連付けられる従属的機能候補を互いに分離し;
他の従属的機能候補と独立な従属的機能候補各々を表現し;及び
複数の区分各々の非両立性を判別するために前記従属的機能候補を用いる;
ことによって、1以上の第1の複数の区分を分離するところのステップ;
1以上の分離された第1の複数の区分を用いて前記回路検査手順を実行するステップ;
より成ることを特徴とする回路を検査する方法。
(付記193)
前記回路検査手順が、正式な検査手順又は準正式な検査手順であることを特徴とする付記192記載の方法。
(付記194)
回路を検査する方法であって:
前記回路を検査するために、回路を表現する遷移関係(TR)を生成することを少なくとも試みるステップであって、あるサイズを有する前記TRは前記回路の状態空間に対応するところのステップ;
生成されたTRのサイズが特定の閾値を超えた場合に:
前記TRを、前記状態空間の特定の部分空間に各々が対応する複数のTR区分に機能的に分離し;
前記回路を検査するために、1以上の第1のTR区分を用いて第1の到達可能性分析を実行し;及び
前記第1の到達可能性分析が特定の期間にて特定の状態数に到達しなかった場合に、前記回路を検査するための1以上の第2のTR区分を用いて少なくとも第2の到達可能性分析を実行するステップ;及び
適切な流量地点に到達した場合に前記回路の検査を終了するステップ;
より成ることを特徴とする方法。
(付記195)
前記回路の検査が、正式な検査又は準正式な検査を含むことを特徴とする付記194記載の方法
(付記196)
電子設計アプリケーション(EDA)処理のための方法であって:
EDA処理用のインスタンス(instance)を受信するステップ;
前記インスタンスから、前記インスタンスの機能的又は構造的な区分より成る少なくとも1つの副次的インスタンスを抽出するステップ;
特定のEDA解(solution)を求めるためのEDA処理に従って、前記特定のEDA回路を得るためのEDA処理に特に適用可能な1以上の処理パラメータについての1以上の特定値を用いて副次的インスタンスを処理するステップ;
前記副次的インスタンスの効率的なEDA処理を特に可能にする特定値の内の1以上の特定のものを識別するステップ;及び
前記インスタンスに関する1以上の他の副次的インスタンスを処理するために1以上の識別された値を使用するステップ;
より成ることを特徴とする方法。
(付記197)
前記EDA処理が、正式なEDA処理又は準正式なEDA処理を含むことを特徴とする付記194記載の方法。