(57)【要約】【課題】  論理シミュレーションにおいて不定値が及ぼす悪影響を緩和する。【解決手段】  １つの論理回路を２つの異なるレベルにて記述した高位レベル回路２０中のノードＯと低位レベル回路２１中のノードＦとの対応を決定し、論理シミュレーションにおいてノードＯの期待値が“１”であり、ノードＦが不定値（Ｘ）であることから、期待値エラーノード２２の発生が検知されると、ノードＦの不定値（Ｘ）の原因となる不定値ノードＣに“０”と“１”を代入して、それぞれ論理シミュレーションを実施し、いずれの場合もノードＦが“１”という同一の値を持つことを確認したうえ、期待値エラーノード（不定値ノード）２２の値を固定値“１”に書き換える。これにより、ノードＯとノードＦとの間の期待値エラーが解消し、論理シミュレーションの継続実行が可能になる。【選択図】  図７
2006331212.tif 000002
【特許請求の範囲】
【請求項１】
論理回路の論理シミュレーションにおいて、
前記論理回路中の記憶素子又は出力端子にて不定値を持つ着目ノードを検出する第１の工程と、
前記着目ノードの論理を決定する回路要素からなり、かつ前記論理回路中の記憶素子又は入力端子を入力とするコーン部にて、当該コーン部中の全ノードからなるノード集合を検出する第２の工程と、
前記ノード集合の中で不定値を持つノードに対して０と１の全ての組み合わせの値を代入して論理シミュレーションを実施する第３の工程と、
前記着目ノードの値が前記全ての組み合わせの値に対して同一の値となる場合には、当該同一の値を前記着目ノードの不定値に代えて当該着目ノードの期待値とする第４の工程とを備えたことを特徴とする論理シミュレーション方法。
【請求項２】
請求項１記載の論理シミュレーション方法において、
前記第３の工程は、前記ノード集合の中で不定値を持つノードのうち前記着目ノードの不定値の発生原因となるノードをバックトレースにより特定し、当該特定したノードのみに対して０と１の全ての組み合わせの値を代入する工程を有することを特徴とする論理シミュレーション方法。
【請求項３】
請求項１記載の論理シミュレーション方法において、
前記第３の工程は、前記ノード集合の中で不定値を持つノードのうち前記コーン部の入力となる記憶素子又は入力端子のノードのみに対して０と１の全ての組み合わせの値を代入する工程を有することを特徴とする論理シミュレーション方法。
【請求項４】
請求項１記載の論理シミュレーション方法において、
前記第３の工程は、前記ノード集合の中で不定値を持つ全てのノードに対して０と１の全ての組み合わせの値を代入する工程を有することを特徴とする論理シミュレーション方法。
【請求項５】
論理回路の論理シミュレーションにおいて、
前記論理回路を２つの異なるレベルにて記述した高位レベル回路と低位レベル回路との各々に含まれる記憶素子又は出力端子の対応を決定する第１の工程と、
前記第１の工程によって対応付けられた前記高位レベル回路の記憶素子又は出力端子の期待値が固定値であり、かつ前記低位レベル回路の記憶素子又は出力端子の期待値が不定値である着目ノードを検出する第２の工程と、
前記低位レベル回路にて前記着目ノードの論理を決定する回路要素からなり、かつ前記低位レベル回路中の記憶素子又は入力端子を入力とするコーン部にて、当該コーン部中の全ノードからなるノード集合を検出する第３の工程と、
前記ノード集合の中で不定値を持つノードに対して０と１の全ての組み合わせの値を代入して論理シミュレーションを実施する第４の工程と、
前記低位レベル回路にて前記着目ノードの値が前記全ての組み合わせの値に対して同一の値となる場合には、当該同一の値を前記低位レベル回路における前記着目ノードの不定値に代えて当該着目ノードの期待値とする第５の工程とを備えたことを特徴とする論理シミュレーション方法。
【請求項６】
請求項５記載の論理シミュレーション方法において、
前記第４の工程は、前記ノード集合の中で不定値を持つノードのうち前記低位レベル回路における前記着目ノードの不定値の発生原因となるノードをバックトレースにより特定し、当該特定したノードのみに対して０と１の全ての組み合わせの値を代入する工程を有することを特徴とする論理シミュレーション方法。
【請求項７】
請求項５記載の論理シミュレーション方法において、
前記第４の工程は、前記ノード集合の中で不定値を持つノードのうち前記低位レベル回路にて前記コーン部の入力となる記憶素子又は入力端子のノードのみに対して０と１の全ての組み合わせの値を代入する工程を有することを特徴とする論理シミュレーション方法。
【請求項８】
請求項５記載の論理シミュレーション方法において、
前記第４の工程は、前記ノード集合の中で不定値を持つ全てのノードに対して０と１の全ての組み合わせの値を代入する工程を有することを特徴とする論理シミュレーション方法。
【請求項９】
請求項５〜８のいずれか１項に記載の論理シミュレーション方法において、
前記高位レベル回路における前記着目ノードの固定の期待値と、前記第５の工程によって書き換えられた前記低位レベル回路における前記着目ノードの期待値とが合致することを確認する第６の工程を更に備えたことを特徴とする論理シミュレーション方法。
【請求項１０】
論理回路の論理シミュレーション装置であって、
前記論理回路中の記憶素子又は出力端子にて不定値を持つ着目ノードを検出するための第１の手段と、
前記着目ノードの論理を決定する回路要素からなり、かつ前記論理回路中の記憶素子又は入力端子を入力とするコーン部にて、当該コーン部中の全ノードからなるノード集合を検出するための第２の手段と、
前記ノード集合の中で不定値を持つノードに対して０と１の全ての組み合わせの値を代入して論理シミュレーションを実施するための第３の手段と、
前記着目ノードの値が前記全ての組み合わせの値に対して同一の値となる場合には、当該同一の値を前記着目ノードの不定値に代えて当該着目ノードの期待値とするための第４の手段とを備えたことを特徴とする論理シミュレーション装置。
【請求項１１】
論理回路の論理シミュレーション装置であって、
前記論理回路を２つの異なるレベルにて記述した高位レベル回路と低位レベル回路との各々に含まれる記憶素子又は出力端子の対応を決定するための第１の手段と、
前記第１の手段によって対応付けられた前記高位レベル回路の記憶素子又は出力端子の期待値が固定値であり、かつ前記低位レベル回路の記憶素子又は出力端子の期待値が不定値である着目ノードを検出するための第２の手段と、
前記低位レベル回路にて前記着目ノードの論理を決定する回路要素からなり、かつ前記低位レベル回路中の記憶素子又は入力端子を入力とするコーン部にて、当該コーン部中の全ノードからなるノード集合を検出するための第３の手段と、
前記ノード集合の中で不定値を持つノードに対して０と１の全ての組み合わせの値を代入して論理シミュレーションを実施するための第４の手段と、
前記低位レベル回路にて前記着目ノードの値が前記全ての組み合わせの値に対して同一の値となる場合には、当該同一の値を前記低位レベル回路における前記着目ノードの不定値に代えて当該着目ノードの期待値とするための第５の手段とを備えたことを特徴とする論理シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路の動作を検証する論理シミュレーション方法及びその装置に関するものである。
【背景技術】
【０００２】
従来の論理シミュレーションでは、論理シミュレーション実行中にあるノードに論理動作上の不定値が発生すると、このノードの論理値を入力とする論理素子も不定値を出力してしまうため、論理シミュレーションの続行が不可能となり、論理シミュレーションを停止しなければならないという問題があった。また、入力信号パターンを変更して再度論理シミュレーションを実行し直すことが必要で、論理シミュレーションの実行時間が増加するという問題もあった。
【０００３】
そこで、ある従来技術によれば、論理シミュレーション実行中に不定値の発生を検出した場合、論理シミュレーション結果が期待値に合致するように不定値検出ノードを論理値“０”（Ｌ：Ｌｏｗ）又は論理値“１”（Ｈ：Ｈｉｇｈ）に固定するようにしていた（特許文献１参照）。
【特許文献１】特開平５−４６６９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
１つの論理回路を２つの異なるレベルにて記述した高位レベル回路と低位レベル回路とにおいて、これらが同一の機能を有する回路であるにもかかわらず、不定値の影響で動作が異なるという問題が発生することがある。例えば、高位レベル回路で固定値“１”を持つノードに対応する低位レベル回路のノードが不定値となることがある。
【０００５】
本発明の目的は、論理シミュレーションにおいて不定値が及ぼす悪影響を緩和することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明の第１の論理シミュレーション方法は、論理回路の論理シミュレーションにおいて、前記論理回路中の記憶素子又は出力端子にて不定値を持つ着目ノードを検出する第１の工程と、前記着目ノードの論理を決定する回路要素からなり、かつ前記論理回路中の記憶素子又は入力端子を入力とするコーン部にて、当該コーン部中の全ノードからなるノード集合を検出する第２の工程と、前記ノード集合の中で不定値を持つノードに対して０と１の全ての組み合わせの値を代入して論理シミュレーションを実施する第３の工程と、前記着目ノードの値が前記全ての組み合わせの値に対して同一の値となる場合には、当該同一の値を前記着目ノードの不定値に代えて当該着目ノードの期待値とする第４の工程とを備えることとしたものである。
【０００７】
また、本発明の第２の論理シミュレーション方法は、論理回路の論理シミュレーションにおいて、前記論理回路を２つの異なるレベルにて記述した高位レベル回路と低位レベル回路との各々に含まれる記憶素子又は出力端子の対応を決定する第１の工程と、前記第１の工程によって対応付けられた前記高位レベル回路の記憶素子又は出力端子の期待値が固定値であり、かつ前記低位レベル回路の記憶素子又は出力端子の期待値が不定値である着目ノードを検出する第２の工程と、前記低位レベル回路にて前記着目ノードの論理を決定する回路要素からなり、かつ前記低位レベル回路中の記憶素子又は入力端子を入力とするコーン部にて、当該コーン部中の全ノードからなるノード集合を検出する第３の工程と、前記ノード集合の中で不定値を持つノードに対して０と１の全ての組み合わせの値を代入して論理シミュレーションを実施する第４の工程と、前記低位レベル回路にて前記着目ノードの値が前記全ての組み合わせの値に対して同一の値となる場合には、当該同一の値を前記低位レベル回路における前記着目ノードの不定値に代えて当該着目ノードの期待値とする第５の工程とを備えることとしたものである。
【発明の効果】
【０００８】
本発明によれば、論理シミュレーションにおいて不定値が及ぼす悪影響が緩和されて、論理シミュレーションの継続した実行が保証でき、シミュレーション時間を削減することができる効果がある。
【０００９】
また、高位レベル回路と低位レベル回路との間での不定値が原因の期待値エラーを回避することができ、論理シミュレーション時間の削減と高品質な低位レベル回路を実現できる効果がある。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明に係る論理シミュレーション装置のハードウェア構成例を示すブロックである。図１において、２７はキーボードであり、文字キー、数字キー、機能指示キー等を備えていて各種キー入力を行う。２８はマウスであり、マウスカーソルの示す位置データを入力する。これらキーボード２７及びマウス２８等の入力装置によって、入力された論理回路の論理シミュレーションをするためのテストパターンを作成する際の指示、論理シミュレーション実行の指示、論理シミュレーション結果を比較検証する際の指示等の入力を行う。２９は処理装置であり、ＣＰＵ、メモリ（ＲＯＭ及びＲＡＭ）等からなるマイクロコンピュータであって、この装置全体の制御を司るとともに、論理回路を論理シミュレーションするための論理演算の処理、論理シミュレーション結果を記憶装置３０にファイル形式で記憶させる処理、記憶装置３０に記憶されている論理シミュレーション結果を内部メモリに読み込む処理、論理シミュレーション結果を比較検証する際の処理、論理シミュレーション結果や比較検証の結果等を表示装置３１に表示させるための処理等を行う。記憶装置３０は、ＨＤＤ（ハードディスク装置）等であって、論理回路や、論理回路の論理シミュレーション結果等を記憶する。表示装置３１は、ＣＲＴ、ＬＣＤ等のディスプレイ装置であって、論理シミュレーション結果や比較検証の結果及び各種メッセージ等を表示する。
【００１１】
さて、論理シミュレーションは、論理積（ＡＮＤ）、論理和（ＯＲ）、排他的論理和（Ｅｘ−ＯＲ）、マルチプレクサ（ＭＵＸ）等の真理値表をもとに実行される。図２（ａ）にＡＮＤ素子、図２（ｂ）にＯＲ素子、図２（ｃ）にＥｘ−ＯＲ素子、図２（ｄ）にＭＵＸ素子のそれぞれ真理値表を示す。これらの図中の「Ｘ」は不定値を表す。
【００１２】
《第１の実施形態》
図３は、本発明を適用する第１の回路例の模式図である。図３において、１７は論理シミュレーション中のあるステップで不定値（Ｘ）が検出されたノード（着目ノード）である。１８は、不定値検出ノード１７の論理を決定するコーン部である。コーン部１８の中で、ノードＣ、Ｄ、Ｅ、Ｆ、Ｈ、Ｋが不定値（Ｘ）を持つノードである。ノードＡ、Ｂは固定値“１”である。
【００１３】
さて、図２（ｄ）に示したＭＵＸでは、Ｓ端子に不定値（Ｘ）が入力されても、入力端子Ａ及びＢに“１”が入力されていれば、出力端子Ｙは“１”となる。しかし、図３中のＡＮＤとＯＲとインバータとで構成されたＭＵＸ回路は、図２（ｄ）のＭＵＸと同じ機能を有するが、ノードＣに不定値（Ｘ）が入力された場合は、ノードＡ及びＢに“１”が入力されている場合でも、ノードＦは不定値（Ｘ）となる。このようにあるノードに不定値（Ｘ）が発生すると、このノードの論理値を入力とする論理素子も不定値（Ｘ）を出力してしまうため、論理シミュレーションが暴走してしまい続行不可能となってしまう。
【００１４】
そこで、本発明の第１の実施形態によれば、図３においてノードＦの不定値（Ｘ）の原因となる不定値ノードＣに“０”と“１”を代入して、それぞれ論理シミュレーションを実施し、いずれの場合もノードＦが“１”という同一の値を持つことを確認したうえ、不定値検出ノード１７の値を固定値“１”に書き換えることとする。
【００１５】
図４は、このような処理を可能にするための、本発明の第１の実施形態に係る論理シミュレーション方法のフローチャートである。図４において、１は論理回路図及び入力信号パターンを入力する工程であり、２は工程１で入力された情報をもとに論理シミュレーションのステップ実行を行う工程である。ここでステップ実行とは、１サイクル分の論理シミュレーションを行うことを意味する。５は記憶素子（ＦＦ）又は出力端子において不定値（Ｘ）が発生したノードの集合Ψ１を検出する工程であり、６は不定値検出ノード集合Ψ１に属する各ノードの論理を決定するための、コーン部１８の入力となる記憶素子又は入力端子までのノードの集合Φ１を検出する工程である。１２は工程６により検出されたノード集合Φ１の中で、不定値（Ｘ）の発生原因となるノード集合をバックトレースにより検出する工程であり、８は工程１２で検出されたノード集合に対して、０と１の全ての組み合わせの値を代入して論理シミュレーションをする工程である。９は、不定値検出ノード集合Ψ１に属するノードの値が前記全ての組み合わせの値に対して同一の値であるかを判定する工程である。３２は、不定値検出ノード１７の値を合致した期待値に書き換える工程である。３は全てのイベントが完了したかどうかを判定し、論理シミュレーションを終了する工程であり、４は論理シミュレーション結果及びメッセージを出力する工程である。
【００１６】
まず、図３の論理回路図及び論理回路図に入力する信号パターンが入力される（工程１）。次に、入力された論理回路図及び論理回路図に入力する信号パターンを用いて、論理シミュレーションのステップ実行が行われる（工程２）。ステップ実行が完了すると、記憶素子又は出力端子において不定値（Ｘ）が発生したかどうかを検出する工程５に進む。ここで不定値（Ｘ）が検出されない場合は、全てのイベントが完了したかどうかの判定を行う工程３に進む。全てのイベントが完了していない場合には、工程２に戻り、再度論理シミュレーションのステップ実行（工程２）を行う。工程５において不定値（Ｘ）が検出されない場合は、以下工程２→５→３→２と繰り返し、全てのイベントが完了した時点で、工程３から工程４に進み、論理シミュレーションの結果及びメッセージを出力し、論理シミュレーションを終了する。
【００１７】
ある繰り返しサイクル中の工程５において、図３に示したようにノード１７に不定値（Ｘ）が検出されると、この不定値検出ノード１７の論理を決定するコーン部１８のノード集合Φ１（ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ、Ｋ）を検出する工程６に進む。このとき、前述のとおりノードＣ、Ｄ、Ｅ、Ｆ、Ｈ、Ｋは不定値（Ｘ）であり、ノードＡ、Ｂは固定値“１”であったとする。工程６が完了し、ノード集合Φ１が検出されると、ノード集合Φ１の中で不定値検出ノード１７の不定値（Ｘ）の発生原因となるノード集合をバックトレースにより検出する工程１２に進む。ここで、ノード１７の不定値（Ｘ）の発生原因となるノード集合のバックトレースによる検出は、不定値（Ｘ）を持つノードを駆動する論理素子の入力端子の中で不定値（Ｘ）を持つノードを検出する工程を繰り返し、ノード１７の不定値（Ｘ）の発生原因となる論理素子、又はコーン部１８の入力となる記憶素子又は入力端子を特定することにより行う。具体的には、図３の不定値（Ｘ）を持つノードＦを駆動する論理素子の入力であるノードＤ、Ｅ（ノードＤ、Ｅは不定値）を検出し、これらノードＤ、Ｅを駆動する論理素子の入力であるノードＡ、Ｂ、Ｃの中で不定値（Ｘ）であるノードＣを特定する。
【００１８】
次に、工程１２にて検出されたノード集合に対して、０と１の全ての組み合わせの値を代入して論理シミュレーションをする工程８に進む。具体的には、ノードＣに“０”と“１”を代入して、それぞれ論理シミュレーションのステップ実行を行う。ここで、ノードＡ、Ｂは固定値“１”であるので、ノードＣが“０”の場合は、ノードＤは“０”、ノードＥは“１”となり、ノードＦは“１”となる。一方、ノードＣが“１”の場合は、ノードＤは“１”、ノードＥは“０”となり、ノードＦはこの場合も“１”となる。次に、不定値検出ノード集合Ψ１に属するノードの値が前記全ての組み合わせの値に対して同一の値であるかを判定する工程９に進む。本例では、工程８で全ての組み合わせの値に対してノードＦが“１”という同一の値を持ったことから、工程３２に進んで不定値検出ノード１７の値を固定値“１”に書き換えた後、工程３に進む。もし、工程９でノードＦが同一の値を持たないことが判明したら、工程３２を飛ばして工程３に進む。
【００１９】
以上のように論理シミュレーションを実施することによって、不定値（Ｘ）が発生しても論理シミュレーションの継続実行ができ、論理シミュレーションの実行時間を削減することができる。
【００２０】
なお、図５の工程１０に示すように、コーン部１８の不定値ノードのうち、“０”と“１”を代入するノードを、当該コーン部１８の入力となる記憶素子又は入力端子のノードに限定することとしてもよい。上記のように不定値の発生原因をバックトレースにより検出する工程１２に比べて、工程１０における検出アルゴリズムは簡単であるという利点がある。また、図６の工程１１に示すように、コーン部１８中の全ての不定値ノードに“０”と“１”を代入することとしてもよい。
【００２１】
《第２の実施形態》
図７は本発明を適用する第２の回路例の模式図であり、図８は図７中の高位レベル回路２０のＲＴＬ（Register Transfer Level）記述を表す図である。図７において、高位レベル回路２０は、図８のＲＴＬ記述を模式的に示したものである。２１は、当該高位レベル回路２０を論理合成することで得られる低位レベル回路（ゲートレベル・ネットリスト）である。高位レベル回路２０中のＭＵＸが、低位レベル回路２１では図３に示したようなＡＮＤとＯＲとインバータとで構成された回路に変換されている。２２は、論理シミュレーション中のある工程で、高位レベル回路２０の記憶素子又は出力端子の期待値が固定値（０又は１）である一方、低位レベル回路２１の記憶素子又は出力端子の期待値が不定値（Ｘ）となってしまった期待値エラーノード（着目ノード）である。２３は期待値エラーノード２２の論理を決定する高位レベル回路２０のコーン部であり、２４は期待値エラーノード２２の論理を決定する低位レベル回路２１のコーン部である。高位レベル回路のコーン部２３の中で、ノードＮ、Ｑ、Ｙが不定値（Ｘ）を持つノードである。ノードＬ、Ｍ、Ｏは固定値“１”である。また低位レベル回路のコーン部２４の中で、ノードＣ、Ｄ、Ｅ、Ｆ、Ｈ、Ｋが不定値（Ｘ）を持つノードである。ノードＡ、Ｂは固定値“１”である。
【００２２】
さて、上記のように１つの論理回路を２つの異なるレベルにて記述した高位レベル回路２０と低位レベル回路２１とにおいて、これらが同一の機能を有する回路であるにもかかわらず、不定値（Ｘ）の影響で動作が異なるという問題が発生する。具体的には、ＲＴＬとネットリストで出力端子の期待値が異なるという問題が発生する。このようにＲＴＬとネットリストで期待値エラーが発生した場合、不定値が発生しない入力パターンに変更するか、ネットリスト中のＡＮＤとＯＲとインバータとで構成されたＭＵＸ回路を、図２（ｄ）の機能を持つ１つの論理セルに修正する等、期待値エラーの発生を回避する必要があり、設計工数が増加する。また、一般的に図２（ｄ）の機能を持つ１つの論理セルよりも、ＡＮＤとＯＲとインバータとで構成されたＭＵＸ回路の方が高速であるので、前者に修正すると性能の劣化を招いてしまう。
【００２３】
そこで、本発明の第２の実施形態によれば、図７においてノードＦの不定値（Ｘ）の原因となる不定値ノードＣに“０”と“１”を代入して、それぞれ論理シミュレーションを実施し、いずれの場合もノードＦが“１”という同一の値を持つことを確認したうえ、期待値エラーノード（不定値ノード）２２の値を固定値“１”に書き換えることとする。これにより、ノードＯとノードＦとの間の期待値エラーが解消する。
【００２４】
図９は、このような処理を可能にするための、本発明の第２の実施形態に係る論理シミュレーション方法のフローチャートである。図９において、１３は高位レベル回路図、低位レベル回路図及び入力信号パターンを入力する工程であり、１４は工程１３で入力された高位レベル回路２０と低位レベル回路２１とに含まれる記憶素子又は出力端子の対応を決定する工程である。１５は、工程１４によって対応付けられた高位レベル回路２０の記憶素子又は出力端子の期待値と、低位レベル回路２１の記憶素子又は出力端子の期待値とが一致しないノードの集合Ψ２を検出する工程である。１６は、ノード集合Ψ２に属する各ノードの論理を決定するための、低位レベル回路のコーン部２４の入力となる記憶素子又は入力端子までのノードの集合Φ２を検出する工程であり、１２は工程１６により検出されたノード集合Φ２の中で、不定値（Ｘ）の発生原因となるノード集合をバックトレースにより検出する工程である。他の工程２、３、４、８、９、３２は図４と同様なので、説明を省略する。
【００２５】
まず、図７の高位レベル回路図、低位レベル回路図及び信号パターンが入力される（工程１３）。次に、入力された高位レベル回路図と低位レベル回路図との記憶素子又は出力端子の対応が決定される（工程１４）。次に、入力された高位レベル回路図、低位レベル回路図及び入力信号パターンを用いて、高位レベル回路２０と低位レベル回路２１とのそれぞれにおいて、論理シミュレーションのステップ実行が行われる（工程２）。ステップ実行が完了すると、高位レベル回路２０の記憶素子又は出力端子の期待値と、低位レベル回路２１の記憶素子又は出力端子の期待値とが一致しないノードを期待値エラーノード２２として検出する工程１５に進む。工程１５で期待値エラーノードが検出されない場合は、全てのイベントが完了したかどうかの判定を行う工程３に進む。全てのイベントが完了していない場合には、工程２に戻り、再度論理シミュレーションのステップ実行（工程２）を行う。工程１５において期待値エラーノードが検出されない場合は、以下工程２→１５→３→２と繰り返し、全てのイベントが完了した時点で、工程３から工程４に進み、論理シミュレーションの結果及びメッセージを出力し、論理シミュレーションを終了する。
【００２６】
ある繰り返しサイクル中の工程１５において、図７に示したように期待値エラーノード２２が検出されたものとする。このとき、前述のとおり高位レベル回路２０のノードＮ、Ｑ、Ｙと、低位レベル回路２１のノードＣ、Ｄ、Ｅ、Ｆ、Ｈ、Ｋとは不定値（Ｘ）であり、高位レベル回路２０のＬ、Ｍ、Ｏと、低位レベル回路２１のノードＡ、Ｂとは固定値“１”であったとする。なお、図２（ｄ）から判るとおり、高位レベル回路２０中のＭＵＸでは、ノードＮに不定値（Ｘ）が入力されても、ノードＬ及びＭに“１”が入力されているのでノードＯは“１”である。
【００２７】
期待値エラーノード２２に低位レベル回路２１で不定値（Ｘ）が検出されると、この期待値エラーノード２２の論理を決定するコーン部２４のノード集合Φ２（Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ、Ｋ）を検出する工程１６に進む。工程１６が完了し、ノード集合Φ２が検出されると、このノード集合Φ２の中で、期待値エラーノード２２の不定値（Ｘ）の発生原因となるノード集合をバックトレースにより検出する工程１２に進む。ここでのバックトレースによる検出方法は、第１の実施形態と同様である。具体的には、図７の不定値（Ｘ）を持つノードＦを駆動する論理素子の入力であるノードＤ、Ｅ（ノードＤ、Ｅは不定値）を検出し、これらノードＤ、Ｅを駆動する論理素子の入力であるノードＡ、Ｂ、Ｃの中で不定値（Ｘ）であるノードＣを特定するのである。
【００２８】
次に、工程１２にて検出されたノード集合に対して、０と１の全ての組み合わせの値を代入して論理シミュレーションをする工程８に進む。具体的には、ノードＣに“０”と“１”を代入して、それぞれ論理シミュレーションのステップ実行を行う。ここで、ノードＡ、Ｂは固定値“１”であるので、ノードＣが“０”の場合は、ノードＤは“０”、ノードＥは“１”となり、ノードＦは“１”となる。一方、ノードＣが“１”の場合は、ノードＤは“１”、ノードＥは“０”となり、ノードＦはこの場合も“１”となる。次に、期待値エラーノード集合Ψ２に属するノードの値が前記全ての組み合わせの値に対して同一の値であるかを判定する工程９に進む。本例では、工程８で全ての組み合わせの値に対してノードＦが“１”という同一の値を持ったことから、工程３２に進んで低位レベル回路２１の期待値エラーノード（不定値ノード）２２の値を固定値“１”に書き換えた後、工程３に進む。もし、工程９でノードＦが同一の値を持たないことが判明したら、工程３２を飛ばして工程３に進む。
【００２９】
なお、工程３２における書き換えによりノード２２における期待値エラーが解消したことを更に確認するようにしてもよい。つまり、高位レベル回路２０における着目ノード２２の固定の期待値と、工程３２によって書き換えられた低位レベル回路２１における着目ノード２２の期待値とが合致することを確認するのである。図７の例では両期待値が“１”で合致しているので、エラーが解消している。
【００３０】
以上のように論理シミュレーションを実施することによって、不定値（Ｘ）が発生しても論理シミュレーションの継続実行ができると同時に、高位レベル回路２０と低位レベル回路２１との期待値エラーを回避することが可能となり、論理シミュレーションの実行時間を削減することができる。
【００３１】
なお、図１０の工程１０に示すように、低位レベル回路のコーン部２４中の不定値ノードのうち、“０”と“１”を代入するノードを、当該コーン部２４の入力となる記憶素子又は入力端子のノードに限定することとしてもよい。上記のように不定値の発生原因をバックトレースにより検出する工程１２に比べて、工程１０における検出アルゴリズムは簡単であるという利点がある。また、図１１の工程１１に示すように、低位レベル回路のコーン部２４中の全ての不定値ノードに“０”と“１”を代入することとしてもよい。
【産業上の利用可能性】
【００３２】
以上説明してきたとおり、本発明に係る論理シミュレーション方法及びその装置は、入力パターンの変更や、低位レベル回路の修正を不必要とする効果を有し、半導体装置の短期間設計及び高性能化を実現する技術等として有用である。
【図面の簡単な説明】
【００３３】
【図１】本発明に係る論理シミュレーション装置のハードウェア構成例を示すブロックである。
【図２】（ａ）はＡＮＤ素子、（ｂ）はＯＲ素子、（ｃ）はＥｘ−ＯＲ素子、（ｄ）はＭＵＸ素子のそれぞれ真理値表である。
【図３】本発明を適用する第１の回路例の模式図である。
【図４】本発明の第１の実施形態に係る論理シミュレーション方法のフローチャートである。
【図５】図４の変形例を示すフローチャートである。
【図６】図４の他の変形例を示すフローチャートである。
【図７】本発明を適用する第２の回路例の模式図である。
【図８】図７中の高位レベル回路のＲＴＬ記述を表す図である。
【図９】本発明の第２の実施形態に係る論理シミュレーション方法のフローチャートである。
【図１０】図９の変形例を示すフローチャートである。
【図１１】図９の他の変形例を示すフローチャートである。
【符号の説明】
【００３４】
１７  不定値検出ノード（着目ノード）
１８  コーン部
２０  高位レベル回路
２１  低位レベル回路
２２  期待値エラーノード（着目ノード）
２３  高位レベル回路のコーン部
２４  低位レベル回路のコーン部
【図１】
2006331212.tif 000003
【図２】
2006331212.tif 000004
【図３】
2006331212.tif 000005
【図４】
2006331212.tif 000006
【図５】
2006331212.tif 000007
【図６】
2006331212.tif 000008
【図７】
2006331212.tif 000009
【図８】
2006331212.tif 000010
【図９】
2006331212.tif 000011
【図１０】
2006331212.tif 000012
【図１１】
2006331212.tif 000013