(57)【特許請求の範囲】
【請求項１】
複数の論理ゲートを組み合わせてなる組み合わせ論理回路について、入力信号波形と出力信号波形とからなる解析用波形を生成する方法であって、
前記論理回路について、入力信号パターンと出力信号パターンとの対応関係を示す真理値表を作成する第１の段階と、
１つの入力信号パターンを１節点に対応させ、前記真理値表内の複数の入力信号パターンを複数の節点として表現し、互いのハミング距離が１であり、かつ、前記真理値表において対応づけられた出力信号パターンが互いに異なる、という２条件を満たす一対の節点間に、一方から他方へ向かう遷移路と他方から一方へ向かう遷移路とからなる方向性をもった一対の遷移路を定義し、これらの遷移路によって互いに結合された一群の節点からなるグループを構成する第２の段階と、
定義されたすべての遷移路を順方向にたどりながら、前記グループを構成するすべての節点を通る一巡経路を求める第３の段階と、
前記一巡経路に沿った節点の順に、入力信号パターンを遷移させることにより入力信号波形を生成し、前記真理値表に基づいて、生成した入力信号波形に対応する出力信号波形を生成する第４の段階と、
を有することを特徴とする組み合わせ論理回路における解析用波形生成方法。
【請求項２】
請求項１に記載の解析用波形生成方法において、一巡経路を求める第３の段階で、
処理対象節点から隣接節点へ向かう未登録遷移路がない場合にはこの処理を直ちに完了し、処理対象節点から隣接節点へ向かう未登録遷移路がある場合には、この未登録遷移路を登録し、前記隣接節点が過去に処理対象になったことがなければ下記（ａ）  ，（ｂ）  の２つの作業を実行した後に前記隣接節点から前記処理対象節点へ戻る遷移路を登録し、前記隣接節点が過去に処理対象になったことがあれば下記（ａ）  ，（ｂ）  の２つの作業を実行せずに前記隣接節点から前記処理対象節点へ戻る遷移路を登録する、
という処理を、任意の節点から始めて再帰的に全節点について行い、登録された遷移路を登録順に結合することにより一巡経路を求めるようにしたことを特徴とする組み合わせ論理回路における解析用波形生成方法、
（ａ）  前記隣接節点から前記処理対象節点へ向かう未登録遷移路を消去する作業、
（ｂ）  前記隣接節点を新たな処理対象として前記処理を再帰的に実行する作業。
【請求項３】
請求項１または２に記載の解析用波形生成方法において、第２の段階で互いに独立した複数のグループが構成された場合に、
個々のグループごとに第３の段階を実行してそれぞれ一巡経路を求め、１つのグループ内の特定の１節点と別なグループ内の特定の１節点とを相互に接続するグループ間遷移路を定義することにより、個々のグループが所定の順序で一列に接続されるようにし、全グループに属するすべての節点を通る統括一巡経路を求めるようにし、
第４の段階では、前記統括一巡経路に沿った節点の順に、入力信号パターンを遷移させることにより入力信号波形を生成し、真理値表に基づいて、生成した入力信号波形に対応する出力信号波形を生成するようにしたことを特徴とする組み合わせ論理回路における解析用波形生成方法。
【請求項４】
請求項３に記載の解析用波形生成方法において、統括一巡経路を求める処理を行う際に、
任意のグループを１つ選択し、この選択したグループに属する各節点の中から、最も小さいハミング距離で他のグループに属する節点とグループ間遷移路で接続できるものを決定し、
１本のグループ間遷移路もしくは複数本連結されたグループ間遷移路の両端点を構成する一対の節点のうち、最も小さいハミング距離で他の未接続グループに属する節点と新たなグループ間遷移路で接続できるものを決定し、この新たなグループ間遷移路を一方の端点に連結する、という処理を、全グループ間がグループ間遷移路によって連結されるまで繰り返し実行し、
すべての一巡経路とすべてのグループ間遷移路とにより、統括一巡経路を構成するようにしたことを特徴とする組み合わせ論理回路における解析用波形生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理回路における解析用波形生成方法に関し、特に、複数の論理ゲートを組み合わせてなる組み合わせ論理回路について、入力信号波形と出力信号波形とからなる解析用波形を生成する方法に関する。
【０００２】
【従来の技術】
半導体回路の製造技術の発達により、回路の集積度は益々向上してきており、膨大な数の論理ゲートを集積化して複雑な機能を実現したＬＳＩが普及するに至っている。一般に論理回路は、ＡＮＤゲート、ＯＲゲートなどの単純な論理ゲートを多数組み合わせてなる組み合わせ論理回路と、フリップフロップなどの要素を組み入れた順序回路と、に大別できる。順序回路の動作は、前段階の論理状態に左右されるため、その解析には過去の論理動作に関する情報が必要となるが、組み合わせ論理回路の動作は、過去の論理状態には依存せず、入力信号として与えた論理パターンに基づいて、出力信号の論理パターンが一義的に決定できる。このため、入力信号パターンと出力信号パターンとの関係を示す真理値表を定義することができ、組み合わせ論理回路の論理動作は、すべてこの真理値表によって表現することができる。
【０００３】
新たにＬＳＩ論理回路を設計した場合、この設計対象となる論理回路が正常に動作するか否かの論理解析を行う必要がある。論理レベルでは正しい設計が行われていたとしても、論理ゲートを実際のトランジスタ素子などで実現すると、各部の寄生容量や寄生抵抗などの影響により、信号が歪んだり遅延が生じたりするため、正しい論理動作が行われない場合があるからである。このような論理解析は、通常、論理シミュレータを用いた検証という形で行われる。すなわち、所定の入力信号波形をこの論理回路に与えた場合に、論理レベルでの正しい出力信号波形が得られるかを、シミュレーションによって求めるのである。このようなシミュレーションによる解析を行うには、入力信号波形と出力信号波形との組み合わせからなる解析用波形が必要になる。
【０００４】
このように、組み合わせ論理回路における解析用波形は、入力信号波形と出力信号波形とによって構成される。もちろん、理論的には、どのような解析用波形を作成してもかまわないのであるが、効率良い検証を行うために、実用上は次の２つの条件を満たすような解析用波形を作成するのが一般的である。
【０００５】
まず、第１の条件は、入力信号波形が１ビットずつ変化してゆくという条件である。たとえば、３ビットの入力信号をもった論理回路の場合、入力信号が（０００）→（００１）→（０１１）→（１１１）というように変化してゆく波形は、前後のパターンを比べると、３ビットのうちのいずれか１ビットだけが変化しているので、この第１の条件を満足していることになる。ところが、（０００）→（０１１）→（１００）というように変化する信号波形は、この第１の条件を満足していない。シミュレーションによる検証を行う上では、ある出力ビットの変化が、どの入力ビットの変化に起因して生じたのかを特定する必要があるので、複数の入力ビットが同時に変化するような信号波形は好ましくないのである。
【０００６】
第２の条件は、入力信号の変化により、出力信号に必ず何らかの変化が生じるようにするという条件である。たとえば、上述したように、入力信号を（０００）→（００１）→（０１１）→（１１１）というように変化させたとしても、出力信号に何ら変化が生じないようでは検証の意味がなくなる。入力信号を変化させることにより、出力信号にも論理的に正しい変化が生じているか否かを調べることが検証の本来の目的であるから、出力信号に変化が生じなければ、入力信号を変化させても意味のある検証結果は得られない。
【０００７】
【発明が解決しようとする課題】
上述したように、効率的な検証を行うためには、できるだけ上記２条件を満足した解析用波形を作成する必要がある。ところが、従来は、このような解析用波形を試行錯誤を行いながら作成していた。このような試行錯誤による作成方法は、小規模な論理回路の場合には問題はないが、大規模な論理回路の場合には、作業負担が大きくなり効率的ではない。論理回路の入力信号のビット数（すなわち、論理回路の入力端子数）をｍとした場合、入力信号パターンは２ｍとおりのバリエーションをもつことになり、ｍの数が増えれば増えるほど、入力信号パターンの数は指数的に増加することになる。このように、入力信号パターンが膨大なバリエーションをもつ場合、従来の試行錯誤による方法では、最適な解析用波形を作成するために、多大な時間と労力が必要になる。
【０００８】
そこで本発明は、組み合わせ論理回路における解析用波形を効率良く生成する方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
（１）    本発明の第１の態様は、複数の論理ゲートを組み合わせてなる組み合わせ論理回路について、入力信号波形と出力信号波形とからなる解析用波形を生成する方法において、
この論理回路について、入力信号パターンと出力信号パターンとの対応関係を示す真理値表を作成する第１の段階と、
１つの入力信号パターンを１節点に対応させ、真理値表内の複数の入力信号パターンを複数の節点として表現し、互いのハミング距離が１であり、かつ、真理値表において対応づけられた出力信号パターンが互いに異なる、という２条件を満たす一対の節点間に、一方から他方へ向かう遷移路と他方から一方へ向かう遷移路とからなる方向性をもった一対の遷移路を定義し、これらの遷移路によって互いに結合された一群の節点からなるグループを構成する第２の段階と、
定義されたすべての遷移路を順方向にたどりながら、グループを構成するすべての節点を通る一巡経路を求める第３の段階と、
この一巡経路に沿った節点の順に、入力信号パターンを遷移させることにより入力信号波形を生成し、真理値表に基づいて、生成した入力信号波形に対応する出力信号波形を生成する第４の段階と、
を行うようにしたものである。
【００１０】
（２）    本発明の第２の態様は、上述の第１の態様に係る解析用波形生成方法において、一巡経路を求める第３の段階で、
処理対象節点から隣接節点へ向かう未登録遷移路がない場合にはこの処理を直ちに完了し、処理対象節点から隣接節点へ向かう未登録遷移路がある場合には、この未登録遷移路を登録し、隣接節点が過去に処理対象になったことがなければ下記（ａ）  ，（ｂ）  の２つの作業を実行した後に隣接節点から処理対象節点へ戻る遷移路を登録し、隣接節点が過去に処理対象になったことがあれば下記（ａ）  ，（ｂ）  の２つの作業を実行せずに隣接節点から処理対象節点へ戻る遷移路を登録する、という処理を、任意の節点から始めて再帰的に全節点について行い、登録された遷移路を登録順に結合することにより一巡経路を求めるようにしたものである。
（ａ）  隣接節点から処理対象節点へ向かう未登録遷移路を消去する作業
（ｂ）  隣接節点を新たな処理対象としてこの処理を再帰的に実行する作業
（３）    本発明の第３の態様は、上述の第１または第２の態様に係る解析用波形生成方法において、第２の段階で互いに独立した複数のグループが構成された場合に、
個々のグループごとに第３の段階を実行してそれぞれ一巡経路を求め、１つのグループ内の特定の１節点と別なグループ内の特定の１節点とを相互に接続するグループ間遷移路を定義することにより、個々のグループが所定の順序で一列に接続されるようにし、全グループに属するすべての節点を通る統括一巡経路を求めるようにし、
第４の段階では、統括一巡経路に沿った節点の順に、入力信号パターンを遷移させることにより入力信号波形を生成し、真理値表に基づいて、生成した入力信号波形に対応する出力信号波形を生成するようにしたものである。
【００１１】
（４）    本発明の第４の態様は、上述の第３の態様に係る解析用波形生成方法において、統括一巡経路を求める処理を行う際に、
任意のグループを１つ選択し、この選択したグループに属する各節点の中から、最も小さいハミング距離で他のグループに属する節点とグループ間遷移路で接続できるものを決定し、
１本のグループ間遷移路もしくは複数本連結されたグループ間遷移路の両端点を構成する一対の節点のうち、最も小さいハミング距離で他の未接続グループに属する節点と新たなグループ間遷移路で接続できるものを決定し、この新たなグループ間遷移路を一方の端点に連結する、という処理を、全グループ間がグループ間遷移路によって連結されるまで繰り返し実行し、
すべての一巡経路とすべてのグループ間遷移路とにより、統括一巡経路を構成するようにしたものである。
【００１２】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。
【００１３】
§１．  一般的な論理回路と解析用波形との関係
ここでは、説明の便宜上、図１に示すような論理回路を考える（実用的な観点から見れば、この回路の論理動作は、必ずしも意味のあるものではないが、本発明の説明を容易にするため、ここではこの論理回路を例にとって以下の説明を行う）。この論理回路は、三入力ＡＮＤゲート１、二入力Ｅｘ−ＯＲゲート２、二入力ＯＲゲート３、二入力ＯＲゲート４、の４つの論理ゲートから構成され、３ビットからなる入力信号ＡＢＣを受け入れて、１ビットからなる出力信号Ｑを出力する機能を有する。この論理回路の真理値表を図２に示す。この真理値表は、８とおりの入力信号パターン▲１▼〜▲８▼のそれぞれに対応して得られる出力信号パターンを示すものである。たとえば、入力信号パターン▲１▼は、「０００」なる３ビットのパターンからなり、この入力信号パターン▲１▼に対して、「０」なる１ビットの出力信号パターンが得られている。このような真理値表は、個々の入力信号パターンごとに、それぞれ各ビットを与えたときの各論理ゲートの論理動作を追ってゆくことにより得ることができる。
【００１４】
さて、このような論理回路の設計を行った場合、その論理動作の検証を行うための解析が必要になる。この解析は、通常、図３に示すような解析波形を用いた論理シミュレーションによって行われる。図３に示す解析用波形は、入力信号波形Ａ，Ｂ，Ｃと出力信号波形Ｑとによって構成されており、図１に示す論理回路に、入力信号波形Ａ，Ｂ，Ｃを与えると、出力信号波形Ｑの出力が期待されることを示している。もちろん、実際の論理回路では、トランジスタ素子、寄生容量素子、寄生抵抗素子などの影響により、入力信号波形は伝播途中で波形が歪んだり遅延が生じたりするため、この解析用波形に示すとおりの結果が得られるわけではない。この解析用波形はあくまでも、この回路の論理レベルでの動作を記述したものである。したがって、出力信号波形Ｑは、図２に示す真理値表に基づいて一義的に定まり、図３の下欄に示したパターン番号は、この真理値表に示す入力パターンの番号に対応している。
【００１５】
論理シミュレータを用いた論理動作の解析は、図３に示す入力信号波形Ａ，Ｂ，Ｃを図１に示す回路に与えたときに、期待どおりの出力信号波形Ｑが得られることを確認することによって行われる。このような解析を効率的に行うためには、既に述べたように、次の２つの条件を満たすような解析用波形を用いる必要がある。すなわち、第１の条件は、入力信号波形が１ビットずつ変化してゆくという条件であり、第２の条件は、入力信号の変化により、出力信号に必ず何らかの変化が生じるようにするという条件である。図３に例示した解析用波形は、この２つの条件をともに満足した波形となっている。
【００１６】
たとえば、第１の条件について調べてみると、パターン▲１▼→▲２▼への変化時点では、入力信号Ｃのみが「０→１」に変化しており、続くパターン▲２▼→▲４▼への変化時点では、入力信号Ｂのみが「０→１」に変化しており、次のパターン▲４▼→▲８▼への変化時点では、入力信号Ａのみが「０→１」に変化している。このように、３ビットの入力信号Ａ，Ｂ，Ｃは、常に１ビットずつ変化しており、同じタイミングで２ビット以上が変化することはない。シミュレーションによる検証を行う上では、出力信号の変化が、どの入力ビットの変化に起因して生じたのかを特定する必要があるので、このように入力信号波形を１ビットずつ変化させるようにするという第１の条件は重要である。
【００１７】
図３に例示した解析用波形は、第２の条件も満足している。すなわち、出力信号波形Ｑに着目すれば、入力信号のパターン番号が変わるたびに、「０→１」もしくは「１→０」に変化しており、入力信号の変化により、出力信号には必ず何らかの変化が生じるようになっている。論理シミュレーションによる検証は、入力信号を変化させることにより、出力信号にも論理的に正しい変化が生じているか否かを調べることを本来の目的とするものであるから、このように出力信号の変化を前提として入力信号を変化させるようにしなければ意味のある検証結果は得られない。なお、図１に例示した論理回路では、出力信号波形が１ビットの出力信号Ｑの波形のみによって構成されているので、必然的に出力信号Ｑが「０→１→０→１→０……」と交互に変化するような結果になっているが、実際の回路では、より多数のビットからなる出力信号が得られるのが一般的であり、この場合、入力信号の変化により、少なくとも出力信号のいずれか１ビットが変化すれば足りる。
【００１８】
このように、効率的な検証を行うためには、できるだけ上記２条件を満足した解析用波形を作成する必要がある。ところが、従来は、このような解析用波形を試行錯誤を行いながら作成していたため、論理回路の規模が大きくなればなるほど、作業負担が指数的に増大するという問題があることは既に述べたとおりである。現在実用されている複雑な機能をもった論理回路は、図１に示すような単純な構成ではなく、膨大な数の論理ゲートから構成され、入力信号パターンも膨大な数になる。このような大規模な論理回路について、上記２条件を満足する解析用波形を生成するために、従来においても、いくつかの有用な手法がいくつか提案されているが、いずれも演算負担が大きく、また、有限時間内に解が得られないケースもある。本発明は、このような問題を解決するための新たな手法を提案するものであり、解は必ず有限時間内に得られることになる。
【００１９】
§２．  本発明の基本原理
本発明に係る方法では、１つの入力信号パターンは１つの節点として表現され、入力信号パターンの変化は、この節点間を結ぶ方向性をもった遷移路として表現される。たとえば、図３に示す解析用波形は、図４に示すような節点間遷移図によって表わされることになる。この遷移図では、個々の楕円が個々の節点を表し、個々の矢印が方向性をもった遷移路を表している。また、各節点内に記された３ビットの数値は、３ビットの入力信号Ａ，Ｂ，Ｃの論理値を示し、８とおりの入力信号パターン▲１▼〜▲８▼のいずれかに対応することになる。たとえば、図４における左上の節点「０００」は入力信号パターン▲１▼に対応し、その右側の節点「００１」は入力信号パターン▲２▼に対応し、その次の節点「０１１」は入力信号パターン▲４▼に対応している。また、右下に示した最後の節点「１００」から左上に示した最初の節点「０００」に向けて遷移路が描かれており、全節点はループ状に結ばれているが、これは、周期的な解析用波形が得られることを示している。
【００２０】
以上のように、この図４に示す節点間遷移図は、入力信号波形Ａ，Ｂ，Ｃと等価である。しかも、入力信号波形Ａ，Ｂ，Ｃが得られれば、図２に示す真理値表を参照することによって、出力信号波形Ｑを一義的に得ることができるので、結局、図４に示す節点間遷移図から、一義的に、図３に示す解析用波形を生成することができる。本発明の基本思想は、このような節点間遷移図に基づいて解析用波形を生成する点にある。
【００２１】
図５は、本発明に係る解析用波形生成方法の基本手順を示す流れ図である。以下、この流れ図に沿って、本発明の手順を詳述する。まず、ステップＳ１において、対象となる論理回路の入力信号パターンと出力信号パターンとの対応関係を示す真理値表を作成する。たとえば、図１に示す論理回路の場合、図２に示すような真理値表が作成されることになる。このような真理値表の作成方法については、既に種々の方法が公知であるため、ここでは説明は省略する。
【００２２】
続くステップＳ２において、各入力信号パターンを１節点に対応させ、各節点間に遷移路を定義して一群の節点からなるグループを構成する。具体的には、図２の真理値表内の８個の入力信号パターン▲１▼〜▲８▼を、それぞれ節点として表現し、各節点間に一対の遷移路を定義してゆくことになる。ただし、遷移路は、次の２条件を満たす節点間のみに定義される。すなわち、第１の条件は、互いのハミング距離が１であるという条件であり、第２の条件は、真理値表において対応づけられた出力信号パターンが互いに異なる、という条件である。ここで、「ハミング距離」とは、２つのビットパターンについて、論理値が異なるビットがいくつあるかを示す指数である。たとえば、図２の真理値表に示されている８種類の入力信号パターン▲１▼〜▲８▼についてのハミング距離を検討すると、パターン▲１▼とパターン▲２▼とのハミング距離は、入力信号Ｃのみが異なるので１であり、パターン▲２▼とパターン▲３▼とのハミング距離は、入力信号Ｂ，Ｃが異なるので２であり、パターン▲４▼とパターン▲５▼とのハミング距離は、全入力信号が異なるので３である。
【００２３】
このような２条件を満たす一対の節点がみつかると、この一対の節点間に、双方向の遷移路（一方から他方へ向かう遷移路と他方から一方へ向かう遷移路とからなる方向性をもった一対の遷移路）が定義される。そして、これらの遷移路によって互いに結合された一群の節点からなるグループが構成される。このような方法によりグループを構成する具体的な方法を、図６から図８に示す。
【００２４】
まず、図６に示すように、真理値表の先頭の節点「０００」に着目する。続いて、この節点「０００」について、ハミング距離が１である節点をすべて列挙する。ある特定の節点についてハミング距離が１であるような節点は、もとの節点の各ビットをそれぞれ反転させることにより容易に得られる。たとえば、節点「０００」については、１ビット目、２ビット目、３ビット目をそれぞれ反転させることにより、節点「１００」、節点「０１０」、節点「００１」が得られる。こうして、ハミング距離が１である節点が列挙されたら、続いて、これらの列挙された節点についての出力信号パターンがもとの節点についての出力信号パターンと異なっているか否かを判断する。上述の例の場合、もとの節点「０００」（入力信号パターン▲１▼）に対応する出力信号Ｑの値は、図２の真理値表に示されているように「０」であり、列挙された節点「１００」（入力信号パターン▲５▼）、節点「０１０」（入力信号パターン▲３▼）、節点「００１」（入力信号パターン▲２▼）に対応する出力信号Ｑの値は、図２の真理値表に示されているようにいずれも「１」である。よって、もとの節点「０００」に対して、列挙された節点「１００」、「０１０」、「００１」は、いずれも上述の２条件を満たしていることになる。
【００２５】
そこで、図７に示すように、これら３つの節点「１００」、「０１０」、「００１」を、もとの節点「０００」に隣接する位置に配置し、それぞれの節点間に一対の遷移路（図の矢印）を定義する。こうして、１つの節点「０００」に着目して、いくつかの隣接節点「１００」，「０１０」，「００１」がみつかったら、続いて、残りの未着目節点についても全く同様の処理を施す。たとえば、節点「００１」を新たな着目節点とすれば、この節点「００１」に対して上述の２条件を満足する節点として、節点「０００」の他に新たな節点「０１１」がみつかる。更にこの節点「０１１」を新たな着目節点とすれば、この節点「０１１」に対して上述の２条件を満足する節点として、節点「００１」の他に新たな節点「１１１」と既存の節点「０１０」とがみつかる。このようにして、各節点に対して、それぞれ上述の２条件を満足する節点をみつけ、両節点間に一対の矢印で示される遷移路を定義してゆけば、最終的に、図８に示すように、互いに遷移路によって結合された一群の節点からなるグループが構成されることになる。
【００２６】
実は、図４に示した節点間遷移図は、この図８に示されている６つの節点間の遷移を所定の順序で示したものに他ならない。すなわち、図８に示されているすべての遷移路（矢印）を順方向（矢印の示す方向）にたどりながら、このグループ内の全節点を通る一巡経路を求めることができれば、その一巡経路は、図４の節点間遷移図を示すものになる。図５の流れ図におけるステップＳ３の処理は、このような一巡経路を求めるための処理である。こうして、一巡経路が得られたら、ステップＳ４において、この一巡経路に沿った節点の順に、入力信号パターンを遷移させることにより入力信号波形を生成し、真理値表に基づいて、生成した入力信号波形に対応する出力信号波形を生成する処理が実行され、目的の解析用波形が得られることになる。別言すれば、図４に示す節点間遷移図と図２に示す真理値表とに基づいて、図３に示す解析用波形が生成されることになる。
【００２７】
§３．  一巡経路を求める具体的な手法
以上、図５の流れ図に基づいて、本発明の基本原理を説明したが、ここでは、この流れ図におけるステップＳ３の処理、すなわち、ステップＳ２において定義されたすべての遷移路を順方向にたどりながら、グループ内の全節点をとおる一巡経路を求める処理の具体的な手法を説明する。この一巡経路は、いわば「一筆書き」によって各節点を結ぶ手法によって求めることができる。たとえば、図８に示す例では、６つの節点が矢印（遷移路）によって結ばれているが、個々の節点に出入りする矢印の数はいずれも偶数本である。上述したように、ステップＳ２におけるグループ構成処理は、隣接する節点間に向きの異なる一対の遷移路を定義することによって行われているので、個々の節点に出入りする矢印の数は必ず偶数本となる。「一筆書き」に関するオイラーの定理によれば、このような場合、任意の節点を起点とした「一筆書き」の経路が必ず存在し、起点と終点とは同一の節点になる。したがって、上述したステップＳ２の処理によって構成されたグループについては、理論的に必ず一巡経路が求まることになる。
【００２８】
ここでは、このような一巡経路を求める具体的な手法の一例を、図９の流れ図を参照して説明する。ここに例示する手法では、所定の処理を再帰的に繰り返し実行する必要がある。図９に示す流れ図は、このように何回も繰り返し実行される再帰的処理の１回分の手順を示すものであり、任意の処理対象節点（Ｎ）について実行される処理を記述したものである。ここでは、このように、任意の処理対象節点（Ｎ）について実行される処理を処理（Ｎ）と呼ぶことにする。
【００２９】
まず、ステップＳ３１において、隣接節点（Ｎ＋１）へ向かう未登録遷移路があるか否かを判断する。たとえば、図８に示す節点「０００」が処理対象節点（Ｎ）である場合は、節点「１００」，「０１０」，「００１」のいずれか任意の１つが、隣接節点（Ｎ＋１）に該当し、これら隣接節点に向かう矢印が、未登録遷移路ということになる。なお、ここで「未登録」とは、後述する登録処理が行われていない状態を示し、初期段階ではすべての遷移路が未登録遷移路である。このステップＳ３１において、隣接節点（Ｎ＋１）へ向かう未登録遷移路がないと判断された場合には、この処理対象節点（Ｎ）についての処理（Ｎ）は直ちに終了する。
【００３０】
一方、隣接節点（Ｎ＋１）へ向かう未登録遷移路があると判断された場合には、この未登録遷移路がステップＳ３２において登録される。そして、続くステップＳ３３において、隣接節点（Ｎ＋１）は過去に処理対象になったか否かが判断される。別言すれば、過去にこの隣接節点（Ｎ＋１）を処理対象節点とした処理（Ｎ＋１）が行われ、現在もその再帰的な処理中であるか否かが判断される。ここで否定的な判断がなされると、後続するステップＳ３４において作業（ａ）  が実行され、更に、ステップＳ３５において作業（ｂ）  が実行されることになる。作業（ａ）  は、隣接節点（Ｎ＋１）から処理対象節点（Ｎ）へ向かう未登録遷移路を消去する作業であり、図で説明すれば、隣接節点（Ｎ＋１）から処理対象節点（Ｎ）に向けた矢印が消されることになる。続く作業（ｂ）  は、隣接節点（Ｎ＋１）を新たな処理対象として再帰的な処理（Ｎ＋１）を実行する作業である。この再帰的な処理（Ｎ＋１）は、処理対象節点が節点（Ｎ）ではなく節点（Ｎ＋１）になる点以外は、この図９に示す全処理手順と全く同じ処理である。すなわち、ステップＳ３５の作業（ｂ）  において、図９に示す処理（Ｎ）全体が再帰的に呼び出されることになる。
【００３１】
こうして、ステップＳ３５における再帰処理が完了するか、あるいは、ステップＳ３３において肯定的な判断がされると、ステップＳ３６において、隣接節点（Ｎ＋１）から処理対象節点（Ｎ）へ向かう遷移路が登録され、処理は最初のステップＳ３１へと戻ることになる。なお、ステップＳ３４，Ｓ３５を経てステップＳ３６が実行される場合は、ステップＳ３４において一度消去した「隣接節点（Ｎ＋１）から処理対象節点（Ｎ）へ向かう未登録遷移路」を、ステップＳ３６において復活させてから登録することになる。このように、ステップＳ３４において一度消去しておきながら、ステップＳ３６においてこれを復活させて登録する理由は、ステップＳ３５の再帰的な処理において、「隣接節点（Ｎ＋１）から処理対象節点（Ｎ）へ向かう未登録遷移路」を見えなくし、節点（Ｎ＋１）についての必要な処理が完了するまでは、節点（Ｎ）へ戻ってくることのないようにするための措置である。
【００３２】
この図９に示す処理を、任意の節点から始めて再帰的に全節点について行い、登録された遷移路を登録順に結合すれば、目的とする一巡経路を得ることができる。以下、その実例として、図８に示す６つの節点に図９の処理を適用した場合を示そう。
【００３３】
最初の処理対象節点（Ｎ）としては、６つの節点のいずれを選んでもかまわない。ここでは、節点「０００」を最初の処理対象節点（Ｎ）とした場合の例を説明する。まず、ステップＳ３１において、隣接節点（Ｎ＋１）へ向かう未登録遷移路の有無が判断される。図１０に示すように、このような未登録遷移路としては、遷移路Ｔａ，Ｔｂ，Ｔｃの３本が存在する。このように複数の該当遷移路が存在する場合には、そのいずれを選択してもかまわない。ここでは、遷移路Ｔｃを選択したものとして、以下の説明を続けることにする。すなわち、節点「０００」が処理対象節点（Ｎ）に該当し、節点「００１」が隣接節点（Ｎ＋１）に該当することになる。
【００３４】
続くステップＳ３２では、この未登録遷移路Ｔｃに対する登録が行われる。ここでは、この遷移路Ｔｃが遷移路Ｔ１として登録されたものとしよう。図１０において太線矢印で示す遷移路Ｔ１は、このようにして登録された遷移路を示す。以下、説明の便宜上、未登録の遷移路は細線矢印で示し、登録済の遷移路は太線矢印で示すこととし、登録済の遷移路については、その登録順にＴ１，Ｔ２，Ｔ３，…と符号をつけて呼ぶことにする。また、節点については、図９の処理対象となったことのある節点を太線楕円で示すことにする。
【００３５】
次のステップＳ３３では、隣接節点（Ｎ＋１）が過去に処理対象となったか否かが判断される。現時点での隣接節点（Ｎ＋１）は、図１０に示す節点「００１」であり、この節点は細線楕円で示されているとおり、過去に処理対象となったことはない。そこで、ステップＳ３３においては否定的な判断がなされ、ステップＳ３４における作業（ａ）  が実施される。すなわち、隣接節点（Ｎ＋１）から処理対象節点（Ｎ）へ向かう未登録遷移路が消去されることになる。結局、図１１に示すように、隣接節点「００１」から処理対象節点「０００」へ向かう細線矢印が消去されることになる。
【００３６】
続くステップＳ３５では、隣接節点（Ｎ＋１）を新たな処理対象とする再帰的な処理（Ｎ＋１）が実行される。すなわち、今度は、節点「００１」を処理対象節点として、図９に示す処理全体が再帰的に呼び出されることになる。図１１において、節点「００１」を太線楕円で示してあるのは、この節点「００１」を処理対象とする処理が実行されたことを示している。もっとも、この再帰的に呼び出した処理は、節点「０００」を処理対象とする処理におけるステップＳ３５の作業（ｂ）  にすぎないので、再帰的な呼び出し処理が終了した後は、ステップＳ３６へと進むことになる。ちなみに、このステップＳ３６の処理では、隣接節点（Ｎ＋１）から処理対象節点（Ｎ）に向かう遷移路が登録されるので、図１１において消去された遷移路が復活し登録されることになる（後述する図２３のプロセス）。
【００３７】
さて、ここでは、節点「００１」を新たな処理対象節点として、図９に示す処理が再帰的に呼び出されたものとして、実施される処理作業を追ってみよう。まず、ステップＳ３１において、隣接節点（Ｎ＋１）へ向かう未登録遷移路の有無が判断される。図１１に示すように、節点「００１」から隣接節点へ向かう未登録遷移路は遷移路Ｔｄだけである。そこで、ステップＳ３２において、この遷移路Ｔｄが遷移路Ｔ２として登録されることになる。図１２はこのときの状態を示す。続くステップＳ３３では、隣接節点「０１１」が過去に処理対象となったか否かが判断される。図１２に細線楕円で示されているように、節点「０１１」はまだ処理対象になったことはないので、ステップＳ３３においては否定的な判断がなされ、ステップＳ３４における作業（ａ）  が実施される。すなわち、図１３に示すように、隣接節点「０１１」から処理対象節点「００１」へ向かう未登録遷移路が消去されることになる。そして、続くステップＳ３５では、隣接節点「０１１」を新たな処理対象とする再帰的な処理が実行される。
【００３８】
こうして、節点「０１１」を新たな処理対象節点とする処理が再帰的に呼び出されると、まず、ステップＳ３１において、節点「０１１」から隣接節点へ向かう未登録遷移路の有無が判断される。図１３に示すように、節点「０１１」から隣接節点へ向かう未登録遷移路には遷移路Ｔｅと遷移路Ｔｆとがある。いずれを選択してもかまわないが、ここでは、遷移路Ｔｅを選択し、節点「１１１」を隣接節点としたものとして説明を続ける。ステップＳ３２では、遷移路Ｔｅが遷移路Ｔ３として登録されることになる。図１４はこのときの状態を示す。続くステップＳ３３では、隣接節点「１１１」が過去に処理対象となったか否かが判断される。図１４に細線楕円で示されているように、節点「１１１」はまだ処理対象になったことはないので、ステップＳ３３においては否定的な判断がなされ、ステップＳ３４における作業（ａ）  が実施される。すなわち、図１５に示すように、隣接節点「１１１」から処理対象節点「０１１」へ向かう未登録遷移路が消去されることになる。そして、続くステップＳ３５では、隣接節点「１１１」を新たな処理対象とする再帰的な処理が実行される。
【００３９】
節点「１１１」を新たな処理対象節点とする処理が再帰的に呼び出されると、まず、ステップＳ３１において、節点「１１１」から隣接節点へ向かう未登録遷移路の有無が判断される。図１５に示すように、節点「１１１」から隣接節点へ向かう未登録遷移路はない。そこで、この節点「１１１」を処理対象節点とする処理は直ちに終了する。この終了した処理は、前段階の節点「０１１」を処理対象節点とする処理におけるステップＳ３５の作業（ｂ）  の終了に対応するので、続いて、ステップＳ３６が実行されることになる。すなわち、隣接節点「１１１」から処理対象節点「０１１」へ向かう遷移路が遷移路Ｔ４として登録される（一度消去されていたのが、復活登録されることになる）。図１６はこのときの状態を示す。
【００４０】
こうして、ステップＳ３６が完了すると、再びステップＳ３１へと戻ることになる。すなわち、まず、ステップＳ３１において、節点「０１１」から隣接節点へ向かう未登録遷移路の有無が判断される。図１６に示すように、節点「０１１」から隣接節点へ向かう未登録遷移路は遷移路Ｔｆだけである。そこで、ステップＳ３２において、この遷移路Ｔｆが遷移路Ｔ５として登録されることになる。図１７はこのときの状態を示す。続くステップＳ３３では、隣接節点「０１０」が過去に処理対象となったか否かが判断される。図１７に細線楕円で示されているように、節点「０１０」はまだ処理対象になったことはないので、ステップＳ３３においては否定的な判断がなされ、ステップＳ３４における作業（ａ）  が実施される。すなわち、図１８に示すように、隣接節点「０１０」から処理対象節点「０１１」へ向かう未登録遷移路が消去されることになる。そして、続くステップＳ３５では、隣接節点「０１０」を新たな処理対象とする再帰的な処理が実行される。
【００４１】
節点「０１０」を新たな処理対象節点とする処理が再帰的に呼び出されると、まず、ステップＳ３１において、節点「０１０」から隣接節点へ向かう未登録遷移路の有無が判断される。図１８に示すように、節点「０１０」から隣接節点へ向かう未登録遷移路は遷移路Ｔｇだけである。そこで、ステップＳ３２において、この遷移路Ｔｇが遷移路Ｔ６として登録されることになる。図１９はこのときの状態を示す。続くステップＳ３３では、隣接節点「０００」が過去に処理対象となったか否かが判断される。図１９に太線楕円で示されているように、節点「０００」は既に処理対象になったことがある（正確に言えば、現在行っている節点「０１０」を処理対象節点とする処理は、節点「０００」を処理対象節点とする処理の中での何重もの入れ子になった再帰的な呼び出し処理に相当する）。そこで、ステップＳ３３においては肯定的な判断がなされ、直ちに、ステップＳ３６へ進むことになる。ステップＳ３６では、隣接節点「０００」から処理対象節点「０１０」へ向かう遷移路Ｔｈが遷移路Ｔ７として登録される。図２０はこのときの状態を示す。
【００４２】
こうして、ステップＳ３６が完了すると、再びステップＳ３１へと戻ることになる。すなわち、まず、ステップＳ３１において、節点「０１０」から隣接節点へ向かう未登録遷移路の有無が判断される。図２０に示すように、節点「０１０」から隣接節点へ向かう未登録遷移路はない。そこで、この節点「０１０」を処理対象節点とする処理は直ちに終了する。この終了した処理は、前段階の節点「０１１」を処理対象節点とする処理におけるステップＳ３５の作業（ｂ）  の終了に対応するので、続いて、ステップＳ３６が実行されることになる。すなわち、隣接節点「０１０」から処理対象節点「０１１」へ向かう遷移路が遷移路Ｔ８として登録される（一度消去されていたのが、復活登録されることになる）。図２１はこのときの状態を示す。
【００４３】
現時点での処理対象節点は、節点「０１１」であり、処理は再びステップＳ３１へと戻ることになる。そして、ステップＳ３１において、節点「０１１」から隣接節点へ向かう未登録遷移路の有無が判断される。図２１に示すように、節点「０１１」から隣接節点へ向かう未登録遷移路はない。そこで、この節点「０１１」を処理対象節点とする処理は直ちに終了する。この終了した処理は、前段階の節点「００１」を処理対象節点とする処理におけるステップＳ３５の作業（ｂ）  の終了に対応するので、続いて、ステップＳ３６が実行されることになる。すなわち、隣接節点「０１１」から処理対象節点「００１」へ向かう遷移路が遷移路Ｔ９として登録される（一度消去されていたのが、復活登録されることになる）。図２２はこのときの状態を示す。
【００４４】
こうして、処理対象節点が節点「００１」に戻ると、処理は再びステップＳ３１へと戻る。そして、ステップＳ３１において、節点「００１」から隣接節点へ向かう未登録遷移路の有無が判断される。図２２に示すように、節点「００１」から隣接節点へ向かう未登録遷移路はない。そこで、この節点「００１」を処理対象節点とする処理は直ちに終了する。この終了した処理は、最初の段階の節点「０００」を処理対象節点とする処理におけるステップＳ３５の作業（ｂ）  の終了に対応するので、続いて、ステップＳ３６が実行されることになる。すなわち、隣接節点「００１」から処理対象節点「０００」へ向かう遷移路が遷移路Ｔ１０として登録される（一度消去されていたのが、復活登録されることになる）。図２３はこのときの状態を示す。
【００４５】
この図２３に示す状態において、処理は再び最初の節点「０００」についての処理に戻ってきたことになる。そして、ステップＳ３１からの処理が繰り返し実行され、節点「０００」から隣接節点へ向かう未登録遷移路の有無が判断される。図２３に示すように、節点「０００」から隣接節点へ向かう未登録遷移路としては、遷移路Ｔｉがまだ残っている。そこで、この遷移路Ｔｉが遷移路Ｔ１１として登録されることになる。図２４はこのときの状態を示す。続くステップＳ３３では、隣接節点「１００」が過去に処理対象となったか否かが判断される。図２４に細線楕円で示されているように、節点「１００」はまだ処理対象になったことはないので、ステップＳ３３においては否定的な判断がなされ、ステップＳ３４における作業（ａ）  が実施される。すなわち、図２５に示すように、隣接節点「１００」から処理対象節点「０００」へ向かう未登録遷移路が消去されることになる。そして、続くステップＳ３５では、隣接節点「１００」を新たな処理対象とする再帰的な処理が実行される。
【００４６】
節点「１００」を新たな処理対象節点とする処理が再帰的に呼び出されると、まず、ステップＳ３１において、節点「１００」から隣接節点へ向かう未登録遷移路の有無が判断される。図２５に示すように、節点「１００」から隣接節点へ向かう未登録遷移路はない。そこで、この節点「１００」を処理対象節点とする処理は直ちに終了する。この終了した処理は、前段階の節点「０００」を処理対象節点とする処理におけるステップＳ３５の作業（ｂ）  の終了に対応するので、続いて、ステップＳ３６が実行されることになる。すなわち、隣接節点「１００」から処理対象節点「０００」へ向かう遷移路が遷移路Ｔ１２として登録される（一度消去されていたのが、復活登録されることになる）。図２６はこのときの状態を示す。
【００４７】
かくして、処理は再び最初の節点「０００」についてのステップＳ３１の処理に戻ることになる。ところが、図２６に示すように、節点「０００」から隣接節点へ向かう未登録遷移路はもはや存在しない。そこで、この節点「０００」を処理対象節点とする処理は終了する。以上の作業により、節点「０００」を最初の処理対象として選択して実行した再帰的な処理がすべて完了したことになる。すなわち、図２６に太線矢印で示されている登録済の遷移路Ｔ１〜Ｔ１２をその登録順にたどってゆけば、全節点を通る一巡経路が得られることになり、この一巡経路にしたがって各節点名を記述してゆけば、図４に示す節点間遷移図が得られることになる。
【００４８】
§４．  複数のグループが構成される場合
本発明の基本原理は、図５の流れ図を参照しながら既に説明したように、ステップＳ１において、真理値表（図２）を作成し、ステップＳ２において、遷移路で結合された一群の節点からなるグループ（図８）を構成し、ステップＳ３において、すべての遷移路をたどる一巡経路（図２６）を求め、ステップＳ４において、この一巡経路および真理値表に基づいて解析用波形（図３）を生成する、という手順により解析用波形を得る点にある。ただ、これまでは、ステップＳ２の処理によって、単一のグループのみが構成される例を用いて説明を行ってきたが、実際に用いられている複雑な論理回路の場合、ステップＳ２の処理によって、複数のグループが構成されるのが一般的である。ここでは、このように複数のグループが構成された場合の取り扱いについて述べる。
【００４９】
これまでの説明では、図１に示す単純な論理回路を例にとり、図８に示すようなグループが構成されることを述べた。しかしながら、この図８に示されている節点は、図２の真理値表に示されているすべての入力信号パターンに対応するものにはなっていない。すなわち、図２の真理値表に示されている８種類の入力信号パターン▲１▼〜▲８▼のうち、入力信号パターン▲６▼（節点「１０１」に対応）と入力信号パターン▲７▼（節点「１１０」に対応）とは、図８には示されていない。これは、この２つの節点が、ステップＳ２に示されている２つの条件を満足するようなペアを組むべき節点をもたないためである。たとえば、節点「１０１」に対して、ハミング距離が１である節点としては、節点「００１」，節点「１１１」，節点「１００」の３つが存在するが、いずれも出力信号Ｑの論理値は「１」と同一になるため、「出力信号パターンが互いに異なる」という２番目の条件を満たしていない。節点「１１０」も同様である。このため、これらの２つの節点を敢えて図に示すと、図２７のように孤立した節点として表わされることになる。
【００５０】
こうして、孤立した節点も１つの独立したグループを構成するものとして取り扱うとすれば、図２７に破線で示すように、グループＧ１，Ｇ２，Ｇ３の３つのグループが構成されることになる。もっとも、通常は、このような孤立した節点を無視して解析用波形を生成しても大きな支障は生じることがない。実際、図３に示した解析用波形は、この孤立した節点「１０１」および「１１０」を無視した波形であり、この波形図には、パターン▲６▼，▲７▼は現れない。必要な場合には、図３に示す波形を生成した後、手作業によって、パターン▲６▼，▲７▼を適当な箇所に挿入することができる。もちろん、このような挿入を行えば、入力信号が必ず１ビットずつ変化し、かつ、出力信号に必ず変化が生じるという条件は完全には満たされなくなる。
【００５１】
このように、完全に孤立した節点が生じた場合には、上述したように、これを無視して解析用波形を生成したり、後に手作業で追加したりすれば十分である。ところが、実用上の多くの論理回路（通常、図１に示す論理回路に比べれば、はるかに複雑な回路になる）の場合、ステップＳ２における処理により、それぞれが複数の節点からなる複数の実質的なグループが構成されるのが一般的である。このように、ステップＳ２において、複数の実質的なグループが構成された場合、個々のグループごとにステップＳ３の処理を行い、個々のグループごとにそれぞれ一巡経路を求めるようにすればよい。図２８は、このようにして、４つのグループＧ１〜Ｇ４について、それぞれ一巡経路が求められた例を示す概念図である。ここで、ａ〜ｚの符号が付された点は、個々の節点を示しており、これらを結ぶ円は、各グループごとの一巡経路を示している。別言すれば、図２８において、破線で囲まれた部分は、それぞれが図４に示す節点間遷移図に相当するものになる。したがって、たとえば、グループＧ１内の節点ａとｂとは、互いにハミング距離が１であり、かつ、出力信号パターンが互いに異なるという２条件を満足しており、いずれのグループ内においても、一巡経路で連結されている任意の節点は、この２条件を満足していることになる。
【００５２】
しかしながら、このように別個独立した４つのグループＧ１〜Ｇ４のそれぞれに基づいて解析用波形を生成すると、４組のバラバラな波形が生成され好ましくない。そこで、最終的に１つのまとまった解析用波形を生成するために、図２９に示すように、各グループを接続するためのグループ間遷移路ＴＴ１，ＴＴ２，ＴＴ３を定義し、全グループを相互に連結し、統括一巡経路を構成する。この図２９に示す例では、節点ｄとｎとの間にグループ間遷移路ＴＴ１を定義し、節点ｎとｚとの間にグループ間遷移路ＴＴ２を定義し、節点ｚとｋとの間にグループ間遷移路ＴＴ３を定義することにより、全体として１本の統括一巡経路が構成されている。すなわち、この統括一巡経路上には、節点ｄ−ｅ−ｆ−ｇ−ｈ−ａ−ｂ−ｃ−ｄ＝ｎ−ｏ−ｐ−ｑ−ｒ−ｓ−ｎ＝ｚ−ｔ−ｕ−ｖ−ｗ−ｘ−ｙ−ｚ＝ｋ−ｊ−ｉ−ｍ−ｌ−ｋがこの順に並ぶことになる（ここで、−はグループ内の遷移路を示し、＝はグループ間遷移路を示す）。更に、節点ｋとｄとの間にグループ間遷移路ＴＴ４を定義したとすれば、全体がループ状に閉じた統括一巡経路を形成することができる。
【００５３】
このような統括一巡経路が形成できれば、この統括一巡経路に沿った節点の順に、入力信号パターンを遷移させれば、目的となる入力信号波形を生成することができ、この入力信号波形に対応する出力信号波形を真理値表に基づいて生成することができる。
【００５４】
図３０は、このように、複数のグループが構成される場合の本発明の処理手順を示す流れ図である。前述した図５に示す流れ図と、この図３０に示す流れ図との相違は、後者では、ステップＳ２において最終的に複数のグループが構成される点と、ステップＳ３において各グループごとにそれぞれ別個独立した一巡経路が求められる点と、ステップＳ３とＳ４との間に、各グループを接続するグループ間遷移路を連結することにより統括一巡経路を構成するステップＳ５が挿入される点と、ステップＳ４においてこの統括一巡経路に基づいて入力信号波形が生成される点である。
【００５５】
§５．  統括一巡経路を形成する具体的な手法
ここでは、図３０の流れ図におけるステップＳ５の処理、すなわち、統括一巡経路を求める処理の具体的な手法を説明する。図２８に示す例のように、４つのグループＧ１〜Ｇ４が構成されている場合に統括一巡経路を形成するには、図２９に示すように、各グループ間を連結するためのグループ間遷移路ＴＴ１，ＴＴ２，ＴＴ３を定義すればよい。別言すれば、ステップＳ５の統括一巡経路を求める処理は、実質的には、グループ間遷移路を定義する処理ということになる。
【００５６】
グループ間遷移路は、一方のグループ内の節点と他方のグループ内の節点とを連結する遷移路であるから、ランダムに選んだ任意の節点同士を連結する遷移路であれば、どのような遷移路であっても、一応、グループ間遷移路としての機能を果たすことができる。しかしながら、最終的に生成される解析用波形として、なるべく最適化したものを得るためには、グループ間遷移路として、できるだけハミング距離が小さい節点間を連結する遷移路を採用するのが好ましい。図２９において形成されている統括一巡経路上には、上述したように、節点ｄ−ｅ−ｆ−ｇ−ｈ−ａ−ｂ−ｃ−ｄ＝ｎ−ｏ−ｐ−ｑ−ｒ−ｓ−ｎ＝ｚ−ｔ−ｕ−ｖ−ｗ−ｘ−ｙ−ｚ＝ｋ−ｊ−ｉ−ｍ−ｌ−ｋが、この順に並んでいるが、ここで、−はグループ内の遷移路でありハミング距離１の節点間の遷移路となっている。そこで、＝で示されるグループ間遷移路も、できれば、ハミング距離１の節点間の遷移路となるようにするのが好ましい。しかし、実際には、すべてのグループ間遷移路までもハミング距離１とすることは困難であるから、現実的には、できるだけハミング距離の小さなグループ間遷移路を選択することになる。
【００５７】
このようなグループ間遷移路の選択方法の一例を、図３１の流れ図に基づいて説明する。ここに示す方法によって選択されたグループ間遷移路は、厳密な意味では、ハミング距離が最小となる最も理想的な組み合わせには、必ずしもならないかもしれないが、この方法によれば、比較的単純な演算負担で、理想に近い組み合わせを得ることが可能である。
【００５８】
まず、ステップＳ４１において、任意のグループを１つ選択する。たとえば、図２８に示す例において、グループＧ１が選択されたものとしよう。続く、ステップＳ４２では、選択されたグループ内の各節点の中から、最も小さいハミング距離で、他のグループと接続できるものを１つ決定し、この決定した節点と相手方の節点とをグループ間遷移路によって接続する。具体的には、たとえば、まずハミング距離の設定値として初期値１を設定し、グループＧ１内の節点ａと、他のグループの個々の節点とのハミング距離を調べ、設定値に等しい１となるものがあるか否かを探索する。節点ａについてそのような他のグループの節点がみつからなかったら、次に、節点ｂについて同様の探索を行う。こうして、節点ｃ，ｄ，ｅ，ｆ，ｇ，ｈについても同様の探索を行ってゆき、条件を満たす節点の組み合わせが１対でもみつかったら、そこで探索を中断し、この１対の節点の間にグループ間遷移路を定義する。節点ｈについての探索を行っても、該当する節点対がみつからなかった場合には、ハミング距離の設定値を２に増加させ、同様の処理を行う。こうして、設定値を１ずつ順に増加させて同様の処理を行ってゆけば、必ず条件に該当する節点対がみつかることになる。
【００５９】
なお、ある節点Ａに対して、ハミング距離がＨである他の節点を探索するには、節点ＡのビットパターンのうちのＨ個のビットを反転させてできるビットパターンをすべて生成し、この生成したビットパターンと同一のビットパターンをもつ節点を探し出せばよい。
【００６０】
ここでは、たとえば、設定値を２として、節点ｄについての探索を実行中に、他のグループの節点ｎが条件を満たす節点としてみつかったものとする。この場合、節点対ｄ−ｎ間のハミング距離は２ということになる。もちろん、ハミング距離が２となるような節点対は他にも存在するかもしれないが、この方法では、最初にみつかった節点対ｄ−ｎの間にグループ間遷移路を定義する。かくして、グループＧ１とＧ３とは、図２９に示すグループ間遷移路ＴＴ１によって連結されることになる（図２９に示すグループ間遷移路ＴＴ２，ＴＴ３は、まだこの段階では定義されていない）。
【００６１】
続いて、ステップＳ４３において、ステップＳ４２において決定された両節点を端点リストに入れる処理が行われる。この端点リストは、現段階までに定義されている１本のグループ間遷移路もしくは複数本連結されたグループ間遷移路の両端点を構成する一対の節点を示すリストである。上述の例の場合、現段階までに定義されている１本のグループ間遷移路ＴＴ１の両節点ｄ，ｎが端点リストに入れられることになる。
【００６２】
次に、ステップＳ４４において、全グループが接続されたと判断されるまで、ステップＳ４５およびステップＳ４６の処理が繰り返し実行されることになる。すなわち、まず、ステップＳ４５において、端点リスト内の節点の中から、最も小さいハミング距離で他の未接続グループと接続できるものを決定し、この決定した節点と相手方の節点とをグループ間遷移路によって接続する。こうして、新たなグループ間遷移路を接続することにより、端点に変更が生じるので、ステップＳ４６において、端点リストの更新を行う。
【００６３】
このステップＳ４５，Ｓ４６の処理は、図２９の実例を参照すると理解しやすい。いま、ステップＳ４２において、グループ間遷移路ＴＴ１が定義され、ステップＳ４３において、節点ｄ，ｎが端点リストに入れられた状態において、ステップＳ４４を経てステップＳ４５が実行されたものとしよう。この場合、端点リストにある節点ｄ，ｎの中から、最も小さいハミング距離で、他のグループと接続できるものが１つ決定され、この決定した節点と相手方の節点とが新たなグループ間遷移路によって接続されることになる。具体的には、やはり、ハミング距離の設定値として初期値１を設定し、端点リスト内の一方の節点ｄと、他のグループの個々の節点とのハミング距離を調べ、設定値に等しい１となるものがあるか否かを探索する。節点ｄについてそのような他のグループの節点がみつからなかったら、次に、端点リスト内のもう一方の節点ｎについて同様の探索を行う。節点ｎについてもそのような相手方の節点がみつからなかったら、今度は、ハミング距離の設定値を２に増加させ、同様の処理を行う。こうして、設定値を１ずつ順に増加させて同様の処理を行ってゆけば、必ず条件に該当する節点対がみつかることになる。
【００６４】
ここでは、たとえば、設定値を３として、節点ｎについての探索を実行中に、他のグループの節点ｚが条件を満たす節点としてみつかったものとする。この場合、節点対ｎ−ｚ間のハミング距離は３ということになる。こうして、節点対ｎ−ｚの間に新たなグループ間遷移路ＴＴ２が定義されることになる。このように、グループ間遷移路ＴＴ２が定義された段階では、もはや節点ｎは端点ではなくなっているので、現段階までに定義されている２本の連結されたグループ間遷移路（ＴＴ１＋ＴＴ２）の両端点を構成する一対の節点ｄ，ｚが新たな端点リストのメンバーとなる。そこで、ステップＳ４６では、新たな端点リストのメンバーを、節点ｄ，ｚに書き直す更新処理が実行される。
【００６５】
続いて、再び、ステップＳ４４を経てステップＳ４５が実行されたものとしよう。この場合、端点リストにある節点ｄ，ｚの中から、最も小さいハミング距離で、他のグループと接続できるものが１つ決定され、この決定した節点と相手方の節点とが新たなグループ間遷移路によって接続されることになる。ここでは、たとえば、設定値を２として、節点ｚについての探索を実行中に、他のグループの節点ｋが条件を満たす節点としてみつかったものとする。この場合、節点対ｚ−ｋ間のハミング距離は２ということになる。こうして、節点対ｚ−ｋの間に新たなグループ間遷移路ＴＴ３が定義されることになる。このように、グループ間遷移路ＴＴ３が定義された段階では、もはや節点ｚは端点ではなくなっているので、現段階までに定義されている３本の連結されたグループ間遷移路（ＴＴ１＋ＴＴ２＋ＴＴ３）の両端点を構成する一対の節点ｄ，ｋが新たな端点リストのメンバーとなる。そこで、ステップＳ４６では、新たな端点リストのメンバーを、節点ｄ，ｋに書き直す更新処理が実行される。
【００６６】
ここで、再びステップＳ４４に戻るが、この時点で既に全グループが接続された状態となっている。よって、この図３１に示す処理は、ここで終了し、最終的に、図２９に示すような３本のグループ間遷移路ＴＴ１，ＴＴ２、ＴＴ３が得られることになる。
【００６７】
最後に、上述した方法によって、統括一巡経路を求めた結果を例示しておく。たとえば、図３２に示すような３つのグループＧ１，Ｇ２，Ｇ３が構成されていた場合を考える。この場合、たとえば、図３３に示すように、グループＧ１内の節点「０００１」とグループＧ２内の節点「１１１１」とをグループ間遷移路ＴＴａで連結し、更に、このグループＧ２内の節点「１１１１」とグループＧ３内の節点「１１００」とをグループ間遷移路ＴＴｂで連結したとする。このようなランダムな連結を行うと、グループ間遷移路ＴＴａのハミング距離は３となり、グループ間遷移路ＴＴｂのハミング距離は２となるので、グループ間遷移路の合計ハミング距離は５となる。これに対して、上述した図３１の流れ図に基づく処理を行ってグループ間遷移路を定義すると、図３４に示すような結果が得られる。すなわち、グループＧ１内の節点「００００」とグループＧ３内の節点「０１００」とがグループ間遷移路ＴＴｃで連結され、このグループＧ３内の節点「０１００」とグループＧ２内の節点「０１１１」とがグループ間遷移路ＴＴｄで連結される。この場合、グループ間遷移路ＴＴｃのハミング距離は１となり、グループ間遷移路ＴＴｄのハミング距離は２となるので、グループ間遷移路の合計ハミング距離は３となり、図３３に示す例よりも短くなる。
【００６８】
なお、上述の説明では、各グループが複数の節点を有する場合を例にとったが、たとえば、図２７に示すように、孤立した節点のみを有するグループＧ２，Ｇ３についても、図３１の流れ図に基づく処理を行い、これら孤立した節点をも含んだ統括一巡経路を形成することも可能である。
【００６９】
【発明の効果】
以上のとおり本発明に係る解析用波形生成方法によれば、組み合わせ論理回路における解析用波形を効率良く生成することが可能になる。
【図面の簡単な説明】
【図１】単純な論理回路の一例を示す回路図である。
【図２】図１に示す論理回路の真理値表を示す図である。
【図３】図１に示す論理回路の解析に用いられる解析用波形の一例を示す波形図である。
【図４】図３に示す解析用波形に対応する節点間遷移図である。
【図５】本発明に係る解析用波形生成方法の基本手順を示す流れ図である。
【図６】図５に示す流れ図におけるステップＳ２の工程の第１段階の状態を示す図である。
【図７】図５に示す流れ図におけるステップＳ２の工程の第２段階の状態を示す図である。
【図８】図５に示す流れ図におけるステップＳ２の工程の第３段階の状態を示す図である。
【図９】図５に示す流れ図におけるステップＳ３の一巡経路を求める具体的な手法の一例を示す流れ図である。
【図１０】節点「０００」を処理対象節点としたときの図９に示すステップＳ３２を実行した状態を示す図である。
【図１１】節点「０００」を処理対象節点としたときの図９に示すステップＳ３４，Ｓ３５を実行した状態を示す図である。
【図１２】節点「００１」を処理対象節点としたときの図９に示すステップＳ３２を実行した状態を示す図である。
【図１３】節点「００１」を処理対象節点としたときの図９に示すステップＳ３４，Ｓ３５を実行した状態を示す図である。
【図１４】節点「０１１」を処理対象節点としたときの図９に示すステップＳ３２を実行した状態を示す図である。
【図１５】節点「０１１」を処理対象節点としたときの図９に示すステップＳ３４，Ｓ３５を実行した状態を示す図である。
【図１６】節点「０１１」を処理対象節点としたときの図９に示すステップＳ３６を実行した状態を示す図である。
【図１７】節点「０１１」を処理対象節点としたときの図９に示すステップＳ３２を実行した状態を示す図である。
【図１８】節点「０１１」を処理対象節点としたときの図９に示すステップＳ３４，Ｓ３５を実行した状態を示す図である。
【図１９】節点「０１０」を処理対象節点としたときの図９に示すステップＳ３２を実行した状態を示す図である。
【図２０】節点「０１０」を処理対象節点としたときの図９に示すステップＳ３６を実行した状態を示す図である。
【図２１】節点「０１１」を処理対象節点としたときの図９に示すステップＳ３６を実行した状態を示す図である。
【図２２】節点「００１」を処理対象節点としたときの図９に示すステップＳ３６を実行した状態を示す図である。
【図２３】節点「０００」を処理対象節点としたときの図９に示すステップＳ３６を実行した状態を示す図である。
【図２４】節点「０００」を処理対象節点としたときの図９に示すステップＳ３２を実行した状態を示す図である。
【図２５】節点「０００」を処理対象節点としたときの図９に示すステップＳ３４，Ｓ３５を実行した状態を示す図である。
【図２６】節点「０００」を処理対象節点としたときの図９に示すステップＳ３６を実行した状態を示す図である。
【図２７】孤立した節点を含むグループ構成を示す図である。
【図２８】複数のグループについてそれぞれ一巡経路が形成された状態を示す図である。
【図２９】図２８に示す４つのグループを接続するために、グループ間遷移路ＴＴ１，ＴＴ２，ＴＴ３を定義した状態を示す図である。
【図３０】複数のグループが構成される場合の本発明に係る解析用波形生成方法の基本手順を示す流れ図である。
【図３１】図３０に示す流れ図におけるステップＳ５の統括一巡経路を求める具体的な手法の一例を示す流れ図である。
【図３２】それぞれが複数の節点を含む３つのグループ構成の一例を示す図である。
【図３３】図３２に示す３つのグループを接続するためのグループ間遷移路の一例を示す図である。
【図３４】図３２に示す３つのグループについて、図３１の流れ図に示す手法を適用して定義されたグループ間遷移路の一例を示す図である。
【符号の説明】
１〜４…論理ゲート
Ａ〜Ｃ…入力信号
Ｇ１〜Ｇ４…グループ
Ｑ…出力信号
Ｔ１〜Ｔ１２…登録済遷移路
Ｔａ〜Ｔｉ…未登録遷移路
ＴＴ１〜ＴＴ３…グループ間遷移路
ＴＴａ〜ＴＴｄ…グループ間遷移路
ａ〜ｚ…節点
【図１】
0003597635.tif 000002
【図２】
0003597635.tif 000003
【図３】
0003597635.tif 000004
【図４】
0003597635.tif 000005
【図５】
0003597635.tif 000006
【図６】
0003597635.tif 000007
【図７】
0003597635.tif 000008
【図８】
0003597635.tif 000009
【図９】
0003597635.tif 000010
【図１０】
0003597635.tif 000011
【図１１】
0003597635.tif 000012
【図１２】
0003597635.tif 000013
【図１３】
0003597635.tif 000014
【図１４】
0003597635.tif 000015
【図１５】
0003597635.tif 000016
【図１６】
0003597635.tif 000017
【図１７】
0003597635.tif 000018
【図１８】
0003597635.tif 000019
【図１９】
0003597635.tif 000020
【図２０】
0003597635.tif 000021
【図２１】
0003597635.tif 000022
【図２２】
0003597635.tif 000023
【図２３】
0003597635.tif 000024
【図２４】
0003597635.tif 000025
【図２５】
0003597635.tif 000026
【図２６】
0003597635.tif 000027
【図２７】
0003597635.tif 000028
【図２８】
0003597635.tif 000029
【図２９】
0003597635.tif 000030
【図３０】
0003597635.tif 000031
【図３１】
0003597635.tif 000032
【図３２】
0003597635.tif 000033
【図３３】
0003597635.tif 000034
【図３４】
0003597635.tif 000035