(57)【特許請求の範囲】
【請求項１】
電気回路の比較方法において、
ａ）オートマトン形成手段により、第１の回路の表現が第１のオートマトンによりまえもって与えられ、
ｂ）該オートマトン形成手段により、第２の回路の表現が第２のオートマトンによりまえもって与えられ、
ｃ）入出力変数対応づけ手段により、第１のオートマトンの入力変数と第２のオートマトンの入力変数との対応づけ、および第１のオートマトンの出力変数と第２のオートマトンの出力変数との対応づけがまえもって与えられ、
ｄ）前記入出力変数対応づけ手段により、前記の第１のオートマトンと第２のオートマトンの状態変数が含まれている基本集合が形成され、
ｅ）分解手段により、該基本集合におけるまえもって定められた分解に基づき、
（１）該分解の各状態変数ごとに、状態変数と入力変数と出力変数との間にどのようなデータ依存性が存在するのかについて調べるステップが実行され、各状態変数ごとに状態変数の状態遷移関数が依存する状態変数と入力変数が求められ、各状態変数ごとに状態変数に依存する状態変数と出力変数が求められ、
（２）前記分解手段により、ステップ（１）に従い同じデータ依存性により定められている状態変数を、前記分解における１つのグループにまとめるステップと、
（３）すべての状態変数についてステップ（２）が実行され、前記分解における１つのグループを反復的にさらに別のサブグループに分けることにより前記分解の精密化を求めるステップが実行されて、
ｆ）状態変数対応づけ手段により、個々のグループの状態変数が互いに対応づけられ、
ｇ）比較手段により、オートマトンの基礎を成す両方の回路が、求められた対応づけに基づき比較されることを特徴とする、
電気回路の比較方法。
【請求項２】
前記分解手段により、
ａ）分解の精密化が新たな分解としてセットされ、
ｂ）さらに反復を行ってももはや精密化が得られなくなるまで、前記ステップ（１）が続けられるようにして、
反復が実行される、請求項１記載の方法。
【請求項３】
前記入出力変数対応づけ手段により、入力変数と状態変数の所定の値の割り当てのために、状態変数の基礎を成す状態遷移関数に基づき状態変数の同じ値の割り当てが得られたときには、付加的に複数の状態変数が１つのグループにまとめられる、請求項１または２記載の方法。
【請求項４】
前記分解手段により、第１のオートマトンと第２のオートマトンのそれぞれ異なる個数の状態変数をもつ２つのグループを１つのグループにまとめることにより、誤りのある精密化が補正される、請求項１から３のいずれか１項記載の方法。
【請求項５】
前記比較手段により、第１のオートマトンと第２のオートマトンが結合されて１つの生成オートマトンが形成され、互いに対応づけられている状態変数を順番に配置することで変数の順序が求められる、請求項１から４のいずれか１項記載の方法。
【請求項６】
前記比較手段により、前記変数の順序によって２進の決定図における状態変数の順番を求めることで、両方の回路のシーケンシャルな比較が実行される、請求項５記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、電気回路を互いに比較する方法に関する。
【０００２】
ディジタル回路の設計においては、製造開始前の品質保証のために開発時間全体の３０％〜７０％が必要とされる。品質保証において集中的なシミュレーションにより、回路内のエラーを発見するようにしている。シミュレーション完了後もディジタル回路の動作特性の一部分だけが検査されるので、誤った設計が製造に入るのを常に考慮しなければならない。製造を開始してから気がつく電気回路の矛盾ないしは間違いや、それに続いて行われる補正のためには、時間およびコストのかかるセットアップ作業が必要となる。
【０００３】
品質保証によって、１つの回路のための回路設計の種々のフェーズの記述フォームが同じ入出力特性をもつようにすべきである。この場合、（ディジタル）回路をブール入出力値と状態値をもつ有限オートマトンとして表すのが一般的である（文献［１］参照）。回路設計の種々のフェーズにおける記述フォームを互いに比較すると、それにより記述フォームの基礎となっている回路が比較される。
【０００４】
モデル生成において、個々の設計ステップにより生じる回路が有限オートマトンにマッピングされる。次に、オートマトンの入出力がどのように対応づけられているが求められる（インプット／アウトプットマッチング）。この対応づけに関して、オートマトンにおいて等しい入力値が同じ出力へ導かれているかが調べられる。これが該当しなければ、ユーザに対しエラーの分析を行わせることのできる診断が行われる。
【０００５】
文献［２］から、１つの製造機械つまり２つのオートマトンの組み合わせを簡単にすることを目的とした方法が知られている。この場合、すべての状態遷移関数の集合が調べられ、達成可能な状態の集合で同じ動作をする関数の部分集合に分解される。互いに類似したオートマトンの場合、それらの部分集合は２つのオートマトンから等しい個数の部分集合を有しており、しかも２元であり、したがってそこから状態変数の対応づけが生じることになる。この方法の欠点は、両方のオートマトン間の差によって使用可能な結果が得られなくなってしまうことである。論理的に互いに結びついている２つの状態遷移関数が異なっていると、適正な対応づけができない。
【０００６】
状態符号化とは、オートマトンのかたちで回路を表現することであり、そのオートマトンは状態および状態遷移関数を有している。
【０００７】
２つの回路の構造的な比較とは、両方の回路の状態符号化が同じ形式で行われていることを前提として、回路を表す結合ロジックを比較することである。
【０００８】
シーケンシャルな比較にあたって、２つの回路の同じ入出力動作が照合され、その際、個々の回路はそれぞれ異なる状態符号化を有する可能性がある。
【０００９】
構造的に同じオートマトンは等しい状態符号化を有しており、構造的に類似したオートマトンはほぼ等しい状態符号化を有している。
【００１０】
分解（Zerlegung, Decomposition）とは以下では、互いに共通の要素のない複数の集合から成る１つの集合のことである。グループは分解ないしディコンポジションの１つのエレメントの要素であって、さらにこの要素は１つの集合を表している。部分分解は１つの分解の部分集合である。（１つの分解の）精密化とはその字句から、分解の「いっそう細かい分割」であることがわかる。個々で示した関係を手短な実例に基づき説明する。
【００１１】
基本集合：            ｛ａ，ｂ，ｃ，ｄ，ｅ｝
分解：                ｛｛ａ，ｂ｝，｛ｃ，ｄ｝，｛ｅ｝｝
グループ              ｛ａ，ｂ｝または｛ｃ，ｄ｝または｛ｅ｝
部分分解：    たとえば｛｛ａ，ｂ｝｛ｅ｝｝または
｛｛ａ，ｂ｝｝または
｛｛ｃ，ｄ｝｛ｅ｝｝
精密化：              ｛｛ａ｝，｛ｂ｝，｛ｃ，ｄ｝，｛ｅ｝｝
本発明の課題は、電気回路の比較方法において、設計プロセスを完全には成し遂げる必要がなく、電気回路を記述するオートマトンの状態遷移関数の抽象化に基づき、それぞれ異なるが構造的に類似したオートマトンにおいて効率的な比較を行えるようにすることである。
【００１２】
この課題は、独立請求項に記載の特徴により解決される。
【００１３】
本発明は電気回路を比較する方法に関するものであり、この場合、第１の回路は第１のオートマトンにより表され、第２の回路は第２のオートマトンにより表される。第１のオートマトンの入力変数と出力変数は、第２のオートマトンの対応する入力変数と出力変数にマッピングされる。基本集合には、第１のオートマトンと第２のオートマトンの状態変数が含まれている。この基本集合の分解に基づき、
（１）分解の各状態変数ごとに、状態変数と入力変数と出力変数との間にどのようなデータの依存性が存在するのかについて調べるステップ（この場合、１つのグループの状態変数は区別できない）と、
（２）ステップ（１）に従い同じデータ依存性により定められている状態変数を、分解における１つのグループにまとめるステップと、
（３）すべての状態変数についてステップ（２）を実行し、分解の精密化を求めるステップ
が実行される。
【００１４】
精密化の１つのグループにおける状態変数が互いに対応づけられ、オートマトンの基礎を成す電気回路の比較が求められた対応づけに基づき実行される。
【００１５】
それぞれ有限オートマトンにより表される互いに比較するステップは、両方のオートマトンにおけるそれぞれ１つの状態変数を互いにペアとして対応づけることにあり、これによってどの状態遷移関数を比較すべきであるか、およびどの状態変数を比較にあたり照合すべきであるかについて定められる（構造的な比較）。
【００１６】
シーケンシャルな比較のためには所定の変数順序が必要であり、つまり状態変数を表記して処理する順番が必要であるが、この順番によってシーケンシャルな比較の煩雑さがかなり決まってしまう。本発明による方法を用いて変数の順序を決めると、シーケンシャルな比較にかかる実行時間が劇的に低減されるし、用意すべきメモリスペースに対する要求が著しく小さくなる。
【００１７】
本発明の１つの実施形態によれば、この方法の反復は、分解の精密化を新たな分解としてセットし、次の反復によっても分解の精密化がもはや求められなくなるまでステップ（１）を続けることによって実行される。
【００１８】
有利には１つのグループ内に、第１および第２のオートマトンの同じ個数の状態変数が設けられている。このグループはその場合、バランスがとれていると呼ばれる。マッチンググループは２要素のバランスのとれたグループである。有利には反復的なこの方法の適用の最後に複数のマッチンググループが得られたならば、その結果として個々のマッチンググループ内に含まれている状態変数の一義的な対応づけが得られるようになる。
【００１９】
さらに別の実施形態によれば、分解の精密化が以下の可能性のうち少なくとも１つによって達成される。すなわち、
ａ）サポート法によって各状態変数ｘごとに、状態変数ｘの状態遷移関数が依存している状態変数と入力変数を求める。
【００２０】
ｂ）逆サポート法によって各状態変数ごとに、状態変数に依存している状態変数と出力変数を求める。
【００２１】
ここで付言しておくと、基本集合は有利には両方のオートマトンのすべての状態変数を含んでいる。個々のオートマトンに関して、各状態変数ｘごとにそのオートマトンにおける他の状態変数との依存性が求められる。データ依存図に基づき可能な表示が行われる。このデータ依存図は、個々のオートマトンの各状態変数のためのノードと、ノードｕがノードｖのサポート内にあるとき、ノードｕからノードｖへの矢印を有している。これとは逆に、ノードｖはノードｕの逆サポート内にある。
【００２２】
さらに本発明の１つの実施形態によれば、付加的にシミュレーション法に基づき精密化が形成され、これは有利には偶然に形成される入力変数と出力変数の値の割り当てに基づき、状態変数の基礎を成す状態遷移関数の同じ値の割り当てが求められる。
【００２３】
本発明の別の実施形態によれば、粗野化法に基づき分解の誤った特定の精密化が補正され、この場合、第１のオートマトンと第２のオートマトンのそれぞれ異なる個数の状態変数をもつグループが１つのグループにまとめられる。
【００２４】
一般に粗野化法により、分解におけるバランスのとれていないグループ（そこでは比較すべき２つのオートマトンの状態変数の対応づけを行えない）に対し反対に作用する。
【００２５】
本発明の付加的な実施形態の枠内で、両方のオートマトンが互いにシーケンシャルに比較される。まさにこのようなシーケンシャルな比較において有利であるのは、比較すべきオートマトンが構造的に類似していることである。シーケンシャルな比較は、第１および第２のオートマトンを互いに結合して１つの生成オートマトンを形成することによって行われる。第１のオートマトンにも第２のオートマトンにも入力信号が加えられ、第１および第２のオートマトンにおいて結果として生じた出力信号が互いに比較される。有利には、この種の比較はＥＸＯＲ結合によって実行され、これによれば両方のオートマトンの出力信号の異なることが出力値「０」（つまり「偽」）によって表される。
【００２６】
シーケンシャルな比較にあたり、有利には２進の決定図（Binary Decision Diagramms = BDD）が用いられる（文献［３］も参照）。変数の順序によってＢＤＤ内において、どのような順番で変数が出されるかが決定される。変数の順序により、ＢＤＤがメモリをどの程度要求するのか、およびどのくらいの期間でそれを処理可能であるのかがかなり決まってしまう。
【００２７】
変数の順序を求めるために本発明による方法を適用することができる。したがって状態変数の求められた対応づけに応じて変数の順序が求められ、その際、互いに対応づけられた状態変数が相前後して配置される。
【００２８】
従属請求項には本発明の実施形態が示されている。
【００２９】
次に、図面を参照しながら本発明の実施例について詳しく説明する。
【００３０】
図１は、回路設計の様々なステップを表すブロック図である。
【００３１】
図２は、２つの回路を比較するステップを示すブロック図である。
【００３２】
図３は、２つの状態依存図をもつ第１の略図である。
【００３３】
図４は、２つの状態依存図をもつ第２の略図である。
【００３４】
図５は、第１および第２のオートマトンをもつ生成オートマトンを表す略図である。
【００３５】
図１には、回路設計の様々な段階（フェーズとも称する）を表すブロック図が描かれている。１つの回路は様々なかたちで記述することができる。ステップ１０１において、レジスタ平面に回路が記述される（英語：Register-Transfer-Level = RTL）。第１の合成ステップ１０４において第１のネットリスト１０２が、第２の合成ステップにおいて第２のネットリストが生成される。このようなネットリストは様々な記号で表現される。ファイナルネットリスト１０３において、製品における回路が与えられる。
【００３６】
ステップ１０４，１０５，１０９には有利にはロジックの最適化が含まれており、この場合、最適化後のフリップフロップの個数は最適化前のフリップフロップの個数と等しい。さらに有利にはいわゆる「スキャンパス」が回路に挿入され、これによりあとで生成されるコンポーネント（チップ）のテストが可能になる。また、一般にコンポーネントのためのベースクロックが相応に分割され、したがってコンポーネントの様々な個所でベースクロックを良好な品質で得ることができる（"Clock-Tree）。
【００３７】
設計プロセス中、回路は複数のフェーズを経ることになり、その際、ＲＴＬ記述１０１からそれ相応のファイナルネットリスト１０３が生成されるまでに、数ヶ月が経過する。たとえばエラーが突然発生したなどの理由で、設計プロセス中にＲＴＬ記述に対し変更がなされると、それによってネットリスト１０２，１０８に対したいていは重大な影響が及ぼされ、つまりはファイナルネットリスト１０３にも重大な影響を及ぼされる。本発明によれば殊に、設計プロセス全体を新たに実行しなおすのを避けることができるようになり、ひいては莫大な時間の浪費を最小限に抑えることができるようになる。
【００３８】
ＲＴＬ記述１０１、ネットリスト１０２，１０８もファイナルネットリスト１０３も、ただ１つの回路における独自の記述を成す。実際に同じ回路を個々の記述によってきちんと表すことができるようにする目的で、各記述が互いに比較される。ＲＴＬ記述１０１とネットリスト１０２，１０８との間ではいわゆる合成比較１０６が実行され、ネットリスト１０２と１０８の間または１０２と１０３の間ではいわゆるネットリスト比較１０７が実行される。個々の記述の基礎を成す回路が互いに比較され、形式上の照合に基づき相違点がみつけられる。
【００３９】
基本的に、個々のプロセスステップ各々を他のプロセスステップと比較することができ、つまり各記述フォームを他の各々の記述フォームと比較することができる。
【００４０】
各記述は、入力変数と出力変数をもつ類似のブールオートマトン（Boolesche Automaten）を基礎としている。それらのオートマトンのうちの２つを互いに比較する場合、第１のオートマトンの入力変数を第２のオートマトンの入力変数にマッピングし、相応に第１のオートマトンの出力変数を第２のオートマトンの出力変数にマッピングすることである。さらに各オートマトンには多数の状態変数が存在し、それらの動作が状態遷移関数によって記述される。さらに本発明の別の目的は、第１のオートマトンの状態変数を第２のオートマトンの状態変数に対応づけることであり、その際、第１のオートマトンの個々の状態変数各々ができるかぎり第２のオートマトンの状態変数に対応づけられるようにする。状態変数の一対の比較により、２つのオートマトンの照合が可能となる。
【００４１】
ブール有限オートマトンはその動作に関して、種々の記述１０１，１０２，１０８または１０３において大きな差を有していない。その理由は、（理想的な状況では）たしかに同じ回路が記述されているからである。本発明では殊に、状態変数の意味を推定できるようにし、各オートマトン間の状態変数の対応づけを確立できるようにする目的で、状態依存図が用いられる。実例として図３および図４には、このような状態依存図が示されている。
【００４２】
ここでは記号と記述が採用されており、それらは本発明の説明のために以下で重要なものである。
【００４３】
２つの集合ＡとＢについて、
Ａ＋Ｂは和集合
Ａ＊Ｂは交差（積集合）
Ａ−Ｂは差集合
｛｝は空集合
を表す。
【００４４】
互いに共通の要素のない空でない集合を集合Ｍの分解Ｚと称し、互いに共通の要素のない空でないそれらの集合の合同によりＭが得られる。Ｚから成る１つの要素を以下では、Ｚから成るグループと称する。集合Ｍにおける分解Ｚの精密化Ｚ′は、Ｚ′の各エレメントがＺから成るグループの（場合によっては仮の）部分集合である、という特性をもつＭの分解である。
【００４５】
Ｍの分解Ｚの部分集合Ｕに関するＭの部分集合Ａのファクタリング化Ａ／Ｕとは、Aの要素を含むＵから成るグループの集合である。
【００４６】
実例：
Ｚ＝｛｛１，２｝，｛３，４，５｝，｛６，７，８｝｝
U＝｛｛１，２｝、｛３，４，５｝｝
Ａ＝｛１，６，７｝
これにより、
Ａ／Ｕ＝｛｛１，２｝｝が得られる。
【００４７】
ブール有限オートマトンは以下のことにより特徴づけられている。すなわち、−その入力変数（供給変数とも称する）の集合Ｉ
−その状態変数の集合Ｓ
−集合Ｓに属するブール状態遷移関数、これにより集合Ｂ**（Ｓ*Ｉ）がＢ**Ｓに従いマッピングされる
−その出力変数（送出変数とも称する）の集合Ｏ
−集合Ｏに属するブール出力関数、これにより集合Ｂ**（Ｓ＋Ｉ）がＢ**Ｏに従いマッピングされる
−初期状態の集合ＩＮＩＴ、これはＢ**Ｓの部分集合である。
【００４８】
以下では、２つのオートマトンの状態変数、入力変数および出力変数がそれぞれ異なるかたちで既知であることを前提とする。ここでＳは、２つのオートマトンの状態変数の集合のものである。変数の集合は、オートマトンの各々から同じ数の変数が得られるとき、バランスがとられているという。マッチンググループは、バランスのとれた２要素の集合である。
【００４９】
本発明によれば、２つのオートマトンにおけるすべての状態の集合Ｓの連続的な精密化が行われる。その際、個々の分解は、対応づけられる可能性のある状態変数が常に同じグループ内に位置するように構成すべきである。一義的な対応づけは、マッチンググループにより定められる。
【００５０】
まずはじめに、両方のオートマトンの入力変数と出力変数が互いに対応づけられる。一方のオートマトンにおいて入力変数と出力変数が、他方のオートマトンにおけるそれぞれ対応づけられた入力変数と出力変数と置き換えられる。
【００５１】
この方法は、Ｓからの適切な初期分解Ｚ0で始められる。有利にはこの目的で、慣用的な分解｛Ｓ｝が用いられる。この方法により、一連の分解Ｚ0，Ｚ1，Ｚ2，．．．が定められる。その際、Ｚi+1は一般にＺiの精密化であり、これはあとで説明する方法に基づき計算される。
【００５２】
精密化方法はサポート法（Suportmethode）、逆サポート法（inverse Supportmethode）ならびにシミュレーション法（Simulationsmethode）である。どの精密化法をどの順序で用いるかは、個々の適用事例に依存する。分解Ｚiがマッチンググループだけから成るか、またはさらに後続の精密化ステップを行っても真の精密化が得られなければ、この方法は終了する。
【００５３】
サポート法の場合には各状態変数ｘについて、それらの状態遷移関数がどの状態変数と入力変数に依存しているのかが求められる。この集合Ｄ（ｘ）をｘのサポートＤ（ｘ）と称する。サポートＤ（ｘ）は、その中で１つのグループの変数が区別できなくなるように修正され、これは分解Ｚiにおける各グループについて正確に１つの代表を求め、サポートＤ（ｘ）内の各変数をそれらの代表により置き換えることによって行われる。新たな分解において２つの状態変数は、それらの修正されたサポートが等しく、かつそれらが分解Ｚiの同じグループ内で得られたたときに、正確に同じグループ内に入る。
【００５４】
逆サポート法はサポート法と類似しており、ここでは状態変数ｘのサポートＤ（ｘ）の代わりに状態変数ｘの逆サポートＲ（ｘ）を求めるだけである。これは、状態変数ｘに依存する関数をもつようなすべての状態変数および出力変数の集合に対応する。
【００５５】
シミュレーション法により、有利には偶然に、１つのグループの要素が常に同じ値をもつようなすべての入力変数と状態変数のための複数の値の割り当てが求められる。その際、各状態変数ごとにこの値の割り当てのもとでそれらの状態遷移関数の結果が計算される。新たな分解において２つの状態変数は、この結果が等しく、すでに事前に同じグループ内にあったならば、正確に同じグループに入る。
【００５６】
すべての精密化法に共通するのは、それらが各状態変数ごとになんらかの情報を計算し、その計算においてＺiのグループの各要素の区別がないことである。したがって、構造的に等価である２つのオートマトンからの互いに対応する２つの状態変数は引き離されない。
【００５７】
次に、分解Ｚiからどのようにしてそれぞれ次の分解Ｚi+1を計算するのかについて詳しく説明する。
【００５８】
サポート法
Ｉがすべての入力変数の集合であり、ＩＭが入力変数のマッピングに対応するＩ（= Inputmatching）の分解であるとき、Ｙ＝ＩＭ＋ＺiはＩ＋Ｓの分解である。
【００５９】
UはＹの部分集合を表す。さらにＧは、マッチンググループではないＺiのグループである。各状態変数ｘごとに、その状態遷移関数のサポートＤが求められる。この場合、Ｇは次のようにして分割される。すなわち、ファクタリングＤ／Ｕが同じである状態変数が同じサブグループ内にあり、ファクタリングＤ／Ｕの異なる状態変数が異なるサブグループ内にあるように分割される。これは、マッチンググループではないＺiの各グループＧについて実行される。Ｚi+1は、このようにして得られたすべてのサブグループと、Ｚiのすべてのマッチンググループから成る。
【００６０】
Ｕの正確な選定は、有利にはユーザの手に委ねたままである。Ｕを選定するための可能性は、Ｙのマッチンググループの部分集合、バランスのとれたＹのグループの部分集合、または集合Ｙ全体である。
【００６１】
逆サポート法
Ｏはすべての出力変数の集合を表し、ＯＭは出力変数の対応づけに相応するマッチンググループの分解を表す（= Outputmatching）。さらにＸ＝ＯＭ＋ＺiはＯ＋Ｓの分解である。ＵはＸの部分集合である。Ｏの選定のために上述の判定基準が有効である。
【００６２】
Ｇは、マッチンググループではないＺiのグループである。Ｇから成る各状態変数ｘごとに、サポートｘの現れる状態変数と出力変数の集合Ｒが求められる。Ｇは次のようにして分割される。すなわち、ファクタリングＲ／Ｕの同じ状態変数が同じサブグループ内にあり、ファクタリングＲ／Ｕの異なる状態変数が異なるサブグループ内にあるように分割される。これは、マッチンググループではないＺiから成るすべてのＧについて実行される。Ｚi+1は、これにより得られるすべてのサブグループと、Ｚiのマッチンググループから成る。
【００６３】
代表によるインプリメント
サポート方法のインプリメントによれば、ファクタリングＤ／Ｕは集合の集合により表されるのではなく、代表の集合により表される。この目的でＵに対し代表集合Ｖが求められ、すなわちＵの各グループから正確に１つの要素を含む集合が求められる。Ｄ／Ｕの代表表現を得るためには、サポートＤから各要素ａを調べれば十分である。ａを含むグループがＵの中にあれば、ａはこのグループの代表により置き換えられ、そうでなければ消去される。
【００６４】
この方法を以下で形式的に記述するために、プログラム言語ＰＡＳＣＬに類似した擬似コードを利用する。この場合、有利には以下の言語構造が用いられる：
：＝    変数の割り当て
for each x in M do    集合Ｍの全要素を処理するループ命令
exists v such that Cond(v)    ｖについて Cond (v) を満たす値が存在すれば真となり、その値がｖに割り当てられる
choose any y from M    集合Ｍの任意の要素をｙに割り当てる
choose＿subset    分解の部分集合Ｕを選出するための関数
choose＿representant    グループの代表を決める
is＿matching＿group(G)    マッチンググループＧに対して真、そうでなければ偽
{}    空集合を表す
support(x)    状態変数ｘのサポートを求める
【００６５】
【外１】
0004044732.tif 000002
【００６６】
【外２】
0004044732.tif 000003
【００６７】
これと同じようにして逆サポート法がインプリメントされる。
【００６８】
択一的なインプリメンテーション
逆サポート法に関して以下で説明する択一的なインプリメンテーションによれば、逆サポートの明示的な決定が避けられる。Ｕの各グループごとに、サポートＤ（Ｍ）がＭの要素のサポートの結合として求められる。マッチンググループではないＺiの各グループは、Ｕの各ＭについてｘとｙがともにＤ（Ｍ）内にあるかまたはそれらの一方がその中にないことが成り立つとき、Ｇの２つの要素ｘとｙが同じサブグループ内に入るように分割される。そうでなければ、それらが異なるサブグループに含まれているようにする。やはりＺi+1には、そのようにして生じたすべてのサブグループとＺiのマッチンググループが含まれる。
【００６９】
プログラム２には、この方法の実現可能なインプリメンテーションが示されている。この場合、上述の同じ表記が有効である。ただし、
matching＿groups(Z)    Ｚのマッチンググループの集合を表す
【００７０】
【外３】
0004044732.tif 000004
【００７１】
この択一的なインプリメンテーションは、状態変数ｘが逆サポートＲ（ｙ）内にあるとき、ｙが正確に状態変数ｘのサポートＤ（ｘ）内にあることを基礎としている。これによりＵの各Ｍについて、Ｄ（Ｍ）のｘはＲ（Ｘ）／ＵのＭと同等である。択一的なインプリメンテーションによれば２つの状態変数ｘとｙは、それらがＺiの同じグループ内にあり、各Ｄ（Ｍ）がそれらのうち両方を含むかまたは１つも含まないとき、すなわちＲ（ｘ）／ＵとＲ（ｙ）／ＵがともにＭを含んでいるかまたはＭを含んでいないとき、Ｚi+1の同じグループ内にとどまる。したがってＲ（ｘ）とＲ（）／Ｕも等しい。なぜならば、それらはＵの部分集合でなければならないからである。これとは逆に、少なくとも１つのＭが存在していればＺiのグループのｘとｙが分離され、その結果、これら２つの状態変数のうち一方がＤ（Ｍ）内にあり他方はないようになる。このときＭはファクタ集合Ｒ（ｘ）／ＵとＲ（ｙ）／Ｕの一方にしか含まれておらず、Ｒ（ｘ）／ＵないしＲ（ｙ）／Ｕはそれぞれ異なる。このため分割Ｚi+1は、やはり逆サポート法を適用して得られたものと同じである。
【００７２】
このインプリメンテーションと同じようにして、逆サポートを用いたサポート法もインプリメントできる。
【００７３】
シミュレーション法
上述の取り決めのように、Ｙ＝ＩＭ＋ＺiはＩ＋Ｓの分解とみなされる。ｘは状態変数であり、ｆxは対応する状態遷移関数である。Ｐは状態変数と入力変数の値の割り当ての集合であり、これはｙの同じグループからの変数に同じ値が割り当てられるように選定される。Ｐは一般に、すべての可能な割り当ての小さい選択だけになる。殊に、集合Ｐはランダムに求めることができる。
【００７４】
マッチンググループでないＺiの各グループＧはサブグループに分割され、その結果、Ｇの２つの要素ｘとｙは、それらの状態遷移関数ｆxとｆyがＰのすべての値の割り当てについて同じ値を供給するとき、正確に同じサブグループ内に入るようになる。Ｚi+1はやはり、このようにして得られたサブグループとＺiのマッチンググループにより形成される。
【００７５】
プログラム３には、シミュレーション法のインプリメンテーションが示されている。ここでも上述の表現があてはまるが付加的に以下のことを表す。すなわち、
Ｐ    シミュレーション刺激つまりほとんど任意のテスト割り当ての集合を表す
ｆx（ｖ）    ｘの状態遷移関数を値割り当てｖに適用することを表す
generate＿patterns(Y)    集合Ｐを定める、ただし、Ｙのグループのすべての変数について値の割り当てを等しくすべきであるため、Ｙがパラメータして渡される
【００７６】
【外４】
0004044732.tif 000005
【００７７】
粗野化法
粗野化法により、オートマトンが構造的にはたしかに類似しているが同じではないときに生じる可能性のある誤りのある分割が補正される。ここでは基本的に、先行の精密化ステップで生じたバランスのとれていないグループを再びまとめるようにする。この目的で、事前に計算された分解Ｚk、ただしｋ≦ｉ、を求める必要があり、これは基準分解として用いられる。そして粗野化法によりＺkの各グループＧごとに、Ｇの部分集合であるＺi内のバランスのとれていないサブグループが求められる。バランスのとれていないこれらのサブグループが統合されて、Ｚi+1の１つのグループが形成される。しかもＺi+1には、Ｚiのバランスのとれたすべてのグループが含まれているようにする。ここで望ましいのは、バランスのとれた付加的なグループあるいはそれどころかマッチンググループが統合により生じることである。
【００７８】
どの基準分解を選択するかは、個々の事例に任されている。とはいうものの、できるかぎり小さいグループを含むとともに対応する状態変数が同じグループ内にあることを前提とすることのできる分解を選択すべきである。有利には分解Ｚkとして、先行の粗野化方法の結果が求められる。
【００７９】
結果
理想的な事例では、最後に計算された分解Ｚがはっきりしたマッチンググループからの分解Ｚから成り、それらから状態変数の対応づけがじかに判明する。
【００８０】
バランスのとれていないグループまたは２つよりも多い要素をもつグループが残されたままになる可能性がある。その原因は一方では、分割に用いられる方法が実際の状態遷移関数と出力関数を度外視する点にあるかもしれない。このような抽象化によって、正確な対応づけ（英語：Matching）のために必要とされる情報が失われる。他方、回路に冗長性が生じている可能性がある。たとえば２つのオートマトンが、理想的な状態遷移関数をもつそれぞれ２つの互いに対応づけられるべき状態変数ｘ、ｙおよびｘ′，ｙ′をもち、ｘ、ｙないしはｘ′，ｙ′が共通に存在するかまたは他方の変数のサポート内にまったく存在しない場合、この方法はすべての４つの状態変数を含むグループの存在する分解によって終了する。なぜならば、状態遷移関数は分割のためにいかなる情報も供給しないからである。
【００８１】
考えられる３番目の原因は、オートマトンはたしかに類似しているけれども、いくつかの状態を対応づけることができないと識別される点にある。
【００８２】
シーケンシャルな比較に関して、結果の分解Ｚがマッチンググループでないグループを含んでいれば、障害を受けない。比較的小さいオートマトンのための変数の順序ないしはオーダとほぼ一致している比較的大きなオートマトンのために新たな変数の順序ないしはオーダを求めるために、Ｚはたいてい十分に精緻である。精確には求められないこの変数の順序へ置き換えることによっても、比較的大きいオートマトンはたいてい小さくなる。
【００８３】
構造的な比較にあたり、障害を及ぼすグループ内の状態変数を比較から排除する必要があり、あるいは分解をさらに調べる必要がある。このようにしてさらに調べることは、ユーザが付加的な入力をしたり状態変数の名前に基づき対応づけを下したりすることによって行うことができる。
【００８４】
図２には、２つの回路を比較するステップを有するブロック図が示されている。
【００８５】
ステップ２０１において、２つの回路が有限オートマトンによって表される。有利にはこのためにブールオートマトンが使用される。
【００８６】
ステップ２０２において、第１のオートマトンの入力変数が第２のオートマトンの入力変数にマッピングされ（Inputmatching）、第１のオートマトンの出力変数が第２のオートマトンの出力変数にマッピングされる（Outputmatcing）（入力変数と出力変数の対応づけ）。
【００８７】
ステップ２０３において、初期分解Ｓ0がまえもって定められる。ステップ２０４において、この初期分解の精密化が行われる。さらに問い合わせによって（ステップ２０５参照）、分解の別の精密化を求めることができるかが判定される。これが該当しなければ、求められた精密化に基づき精密化により求められた分解の特定のグループに従って状態変数が対応づけられ（ステップ２０６参照）、ステップ２０７において該当する対応づけに基づき回路が比較される。ステップ２０５における問い合わせにおいて、別の精密化を求めることができると判明したならば、この方法は反復的にステップ２０４によって続けられ、したがって次の精密化が求められる。
【００８８】
実例：
サポート法および逆サポート法の例
図３には、２つの状態依存図３０１，３０２が示されており、これらは２つの回路を比較する方法に従い相違点について調べられる。
【００８９】
状態依存図３０１は、各状態変数のためのノードと、ｕがｖのサポート内にあるときのノードｕからノードｖへの矢印を有している。以下では、
ｉ１，ｉ２    第１のオートマトンの入力変数
ｉ１′,ｉ２′    第２のオートマトンの入力変数
ｓ１，ｓ２，ｓ３，ｓ４    第１のオートマトンの状態変数
ｓ１′，ｓ２′，ｓ３′，ｓ４′    第２のオートマトンの状態変数
ｏ１，ｏ２    第１のオートマトンの出力変数
ｏ１′，ｏ２′    第２のオートマトンの出力変数
サポート法を使用することで、状態依存図から以下のサポートを読み取ることができる：
Ｄ1＝｛ｉ１｝，Ｄ2＝｛ｉ１，ｉ２｝，Ｄ3＝｛ｓ１，ｓ２｝，Ｄ4＝｛ｓ１，ｓ２｝
（第２のオートマトンについて類似）
この場合、状態変数の分解
Ｚ0＝｛｛ｓ１，ｓ２，ｓ３，ｓ４，ｓ１′，ｓ２′，ｓ３′，ｓ４′｝｝
から出発し、すなわち、
Ｙ0＝｛｛ｉ１，ｉ１′｝，｛ｉ２，ｉ２′｝，｛ｓ１，ｓ２，ｓ３，ｓ４，ｓ１′，ｓ２′，ｓ３′，ｓ４′｝｝
Ｕ0＝Ｙ0が成り立ち、｛ｉ１，ｉ２，ｓ１｝はＵ0の代表集合となる。その際、
Ｄ1／Ｕ0＝Ｄ1′／Ｕ0＝｛ｉ１｝，
Ｄ2／Ｕ0＝Ｄ2′／Ｕ0＝｛ｉ１，ｉ２｝，
Ｄ3／Ｕ0＝Ｄ3′／Ｕ0＝｛ｓ１｝，
Ｄ4／Ｕ0＝Ｄ4′／Ｕ0＝｛ｓ１｝
となる。
【００９０】
新たな分解Ｚ1により、
Ｚ1＝｛｛ｓ１，ｓ１′｝，｛ｓ２，ｓ２′｝，｛ｓ３，ｓ４，ｓ３′，ｓ４′｝｝
サポート法を新たに適用して、
Ｙ1＝｛｛ｉ１，ｉ１′｝，｛ｉ２，ｉ２′｝，｛ｓ１，ｓ１′｝，｛ｓ２，ｓ２′｝，｛ｓ３，ｓ４，ｓ３′，ｓ４′｝｝
およびＵ1＝Ｙ1および代表集合｛ｉ１，ｉ２，ｓ１，ｓ２，ｓ３｝によって、
Ｄ1／Ｕ1＝Ｄ1′／Ｕ1＝｛ｉ１｝，
Ｄ2／Ｕ1＝Ｄ2′／Ｕ1＝｛ｉ１，ｉ２｝，
Ｄ3／Ｕ1＝Ｄ3′／Ｕ1＝｛ｓ１，ｓ２｝，
Ｄ4／Ｕ1＝Ｄ4′／Ｕ1＝｛ｓ１，ｓ２｝
となる。
【００９１】
その結果、Ｚ1の付加的な精密化は生じない。すでにサポート法の第２の適用によっても付加的な精密化が行われない点が、この実例の特殊性である。
【００９２】
Ｚ1から出発して逆サポート法に基づきさらに精密化を行うことができる。この場合、
Ｒ1＝｛ｓ３，ｓ４｝，
Ｒ2＝｛ｓ３，ｓ４｝，
Ｒ3＝｛ｏ１｝
Ｒ4＝｛ｏ２｝
が成り立つ。
【００９３】
Ｚ1について、状態変数の分解と出力変数は、
Ｘ1＝｛｛ｏ１，ｏ１′｝，｛ｏ２，ｏ２′｝，｛ｓ１，ｓ１′｝，｛ｓ２，ｓ２′｝，｛ｓ３，ｓ４，ｓ３′，ｓ４′｝｝
となる。
【００９４】
代表集合Ｖ＝｛ｏ１，ｏ２，ｓ１，ｓ２，ｓ３｝について、
Ｒ1／Ｘ1＝Ｒ1′／Ｘ1＝｛ｓ３｝，
Ｒ2／Ｘ1＝Ｒ2′／Ｘ1＝｛ｓ３｝，
Ｒ3／Ｘ1＝Ｒ3′／Ｘ1＝｛ｏ１｝，
Ｒ4／Ｘ1＝Ｒ4′／Ｘ1＝｛ｏ２｝
となり、その結果、Ｚ1が精密化されて、
Ｚ2＝｛｛ｓ１，ｓ１′｝，｛ｓ２，ｓ２′｝，｛ｓ３，ｓ３′｝，｛ｓ４，ｓ４′｝｝
となる。
【００９５】
これにより対応づけが一義的に定められ、マッチンググループが生じる。
【００９６】
粗野化法の実例
次に、粗野化法の実例として図４を参照する。図４には２つの状態依存図４０１，４０２が描かれており、これらは構造的に等価ではない。
【００９７】
サポート法の第１の適用は、上述の図３の実例のように進行する。たしかにここではＤ4′＝｛ｓ２′｝（上述のように｛ｓ１′，ｓ２′｝ではない）が成り立つが、この相違点はＵ0によるファクタリングによって補償される。これにより、上述のようにＺ1が生じる。しかしサポート法が新たに適用されると、
Ｄ1／Ｕ1＝Ｄ1′／Ｕ1＝｛ｉ１｝，
Ｄ2／Ｕ1＝Ｄ2′／Ｕ1＝｛ｉ１，ｉ２｝，
Ｄ3／Ｕ1＝Ｄ2′／Ｕ1＝｛ｓ１，ｓ２｝，
Ｄ4／Ｕ1＝｛ｓ１，ｓ２｝しかしＤ4′／Ｙ1＝｛ｓ２｝
が成り立ち、その結果、Ｚ2のためのグループ｛ｓ３，ｓ３′，ｓ４，ｓ４′｝はまずはじめにサブグループ｛ｓ３，ｓ３′，ｓ４｝および｛ｓ４′｝に分割されるようことになる。しかし粗野化法（ただしｋ＝１）によって、サブグループが再びまとめられる。これにより、もともと対応関係にある状態変数ｓ４とｓ４′が分離されてしまうのが避けられる。逆サポート法の適用後、再び一義的な対応づけを下すことができる。
【００９８】
インプリメント例
先に定義した表記に加えて以下が適用される：
Support＿Methode(Z,X)
Inverse＿Support＿Methode(Z,X)
Simulations＿Methode(Z)
Vergroeberungsschritt(Z,Z＿Ref)
これらは（上記にて詳述したような）個々の方法の適用を表す。サポート法と逆サポート法の場合、Ｕをどのように求めるかがＸで表される：
X=total    分解のすべてのグループを使うようにする；
X=matcing    マッチンググループだけを用いるようにする
さらにプログラム４では以下の表記が用いられる：
Z＿Ref    粗野化ステップ（粗野化法）において、どの分解を基準分解Ｚkとして定めるかを表す
completely＿matched(Z)    Ｚのすべてのグループがマッチンググループであるかまたは１つのオートマトンの状態変数だけしか含まないとき、真となる。
【００９９】
プログラム４に示したインプリメンテーションは大きいループであって、これは 'completely＿matched' が満たされたとき、またはこの大きいループにおいてもはや分割（さらに別の分解）を行えないとき、中止される。
【０１００】
個々の方法の適用は、固定点に到達するまで繰り返される。
【０１０１】
【外５】
0004044732.tif 000006
【０１０２】
【外６】
0004044732.tif 000007
【０１０３】
図５には、第１のオートマトンと第２のオートマトンを有する生成オートマトンが示されている。
【０１０４】
それぞれ基礎を成す電気回路を表現している２つのオートマトンのシーケンシャルな比較を実行できるようにする目的で、両方のオートマトン１，２（図５の５０４，５０５参照）が互いに結線され、入力変数が互いに対応づけられ、結果として生じる出力値５０２，５０３が互いに比較されるようにされる。この比較は有利にはＥＸＯＲ結合によって行われ、これは出力値５０２と５０３が等しくないことを論理値「１」で表す。
【０１０５】
シーケンシャルな比較のためには変数のオーダないしは順序［３］が必要とされ、これは本発明による方法のマッチンググループによって得られる。有利には、有限オートマトンの機能はＢＤＤ（文献［３］参照）を用いて表される。
【０１０６】
本明細書においては以下の刊行物を引用した。
【０１０７】
［１］ Prof. Dr. Hans-Jochen Schneider (編集者）: "Lexikon der Informatik und Datenverarbeitung", R. Oldenbourg Verlag Muenchen, 1986, ISBN 3-486-22662-2  ５１〜５４頁
［２］ T. Filkorn: Symbolische Methoden fuer die Verfikation endlicher Zustandssysteme, Dissertation, Institut fuer Informatik an der Technischen Universitaet Muenchen, 1992 ８２〜９７頁
［３］ R. Bryant: Graph-Based Algorithms for Boolean Function Manipulation, IEEE Trans. on Computers, Vol. C-35, No. 8, １９９６年８月、６７７〜６９１頁
【図面の簡単な説明】
【図１】  回路設計の様々なステップを表すブロック図である。
【図２】  ２つの回路を比較するステップを示すブロック図である。
【図３】  ２つの状態依存図をもつ第１の略図である。
【図４】  ２つの状態依存図をもつ第２の略図である。
【図５】  第１および第２のオートマトンをもつ生成オートマトンを表す略図である。
【図１】
0004044732.tif 000008
【図２】
0004044732.tif 000009
【図３】
0004044732.tif 000010
【図４】
0004044732.tif 000011
【図５】
0004044732.tif 000012