(57)【要約】      （修正有）【課題】論理シミュレーションに要する時間を低減することのできる、論理シミュレーション装置、及び論理シミュレーション方法を提供する。【解決手段】複数の論理ブロックとそれらの接続関係を示す論理回路図データを取得し、複数の論理ブロックの各々の出力値を求め、出力値データを生成する、シミュレーション部１１と、各論理ブロックの出力値が不定値であるか否かを判定する、不定値検出部１２と、不定値であった場合に、不定値に対して、起源を特定する起源情報と、起源における論理レベルに対して正転であるか反転であるかを示す正反転情報とを付加し、不定値情報データを生成する、不定値情報付加部１３と、各論理ブロックに２つの不定値が入力され、２つの不定値の起源が同じであり、２つの不定値が反転関係であるか否かを判定し、判定結果に基づいて出力値を確定値に書き換え、書き換え後出力値データを生成する、書き換え部１４とを具備する。【選択図】図２
2011180977.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理ブロックとそれらの接続関係を示す論理回路図データを取得し、前記複数の論理ブロックの各々の出力値を求め、前記各論理ブロックの出力値を示す出力値データを生成する、シミュレーション部と、
前記出力値データに基づいて、前記各論理ブロックの出力値が不定値であるか否かを判定する、不定値検出部と、
前記各論理ブロックの出力値が不定値であった場合に、前記不定値に対して、前記不定値の起源を特定する起源情報と、前記起源における論理レベルに対して正転であるか反転であるかを示す正反転情報とを付加し、不定値情報データを生成する、不定値情報付加部と、
前記不定値情報データに基づいて、前記各論理ブロックに２つの不定値が入力され、前記２つの不定値の起源が同じであり、前記２つの不定値が反転関係であるか否かを判定し、判定結果に基づいて前記出力値を確定値に書き換え、書き換え後出力値データを生成する、書き換え部と、
を具備する
論理シミュレーション装置。
【請求項２】
コンピュータにより、複数の論理ブロックとそれらの接続関係を示す論理回路図データを取得し、前記複数の論理ブロックの各々の出力値を求め、前記各論理ブロックの出力値を示す出力値データを生成するステップと、
コンピュータにより、前記出力値データに基づいて、前記各論理ブロックの出力値が不定値であるか否かを判定するステップと、
コンピュータにより、前記各論理ブロックの出力値が不定値であった場合に、前記不定値に対して、前記不定値の起源を特定する起源情報と、前記起源における論理レベルに対して正転であるか反転であるかを示す正反転情報とを付加し、不定値情報データを生成するステップと、
コンピュータにより、前記付与後出力データに基づいて、前記各論理ブロックに２つの不定値が入力され、前記２つの不定値の発生元が同じであり、前記２つの不定値が反転関係にある場合に、前記出力値を確定値に書き換え、書き換え後出力値データを生成するステップと、
を具備する
論理シミュレーション方法。
【請求項３】
請求項２に記載された論理シミュレーション方法をコンピュータにより実現するための、論理シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理シミュレーション装置、及び論理シミュレーション方法に関する。
【背景技術】
【０００２】
ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）を開発する場合、論理シミュレーションによって、設計した回路が検証される。ＬＳＩの高機能化により、回路が複雑化され、大規模化されてきている。ゲートレベルで記述された回路の論理シミュレーションを行う場合、ある論理ブロックの出力値が不定値として判断されることがある。この場合、その論理ブロックの後段に配置された論理ブロックにおいても、出力値が不定値として判断されてしまう。すなわち、上段における論理ブロックで不定値が出力された場合、その不定値が後段へと伝播してしまう。その結果、後段ブロックにおいて、網羅性よく検証を行なうことが困難になる。
【０００３】
関連技術が、特許文献１（特開２００６−３３１２１２）に記載されている。この公報には、１つの論理回路を２つの異なるレベルにて記述した高位レベル回路中のノードＯと低レベル回路中のノードＦとの対応を決定し、論理シミュレーションにおいてノードＯの期待値が１であり、ノードＦが不定値（Ｘ）であることから、期待値エラーノードの発生が検知されると、ノードＦの不定値（Ｘ）の原因となる不定値ノードＣに「０」と「１」を代入して、それぞれ論理シミュレーションを実施し、いずれの場合もノードＦが「１」という同一の値を持つことを確認したうえ、期待値エラーノードの値を固定値「１」に書き換える、ことが記載されている。これにより、ノードＯとノードＦとの間の期待値エラーが解消し、論理シミュレーションの継続実行が可能になる点が記載されている。
【０００４】
他の関連技術が、特許文献２（特開２００８−１５８６５２）に記載されている。この公報には、不定値の反転信号をＡＮＤ回路及びＯＲ回路の演算を規定する代数式に組み込むことにより、不定値、その不定値の反転信号、真理値「０」、真理値「１」の４個の数値間のブール代数関係を正確に取り扱うことを実現する点が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３３１２１２
【特許文献２】特開２００８−１５８６５２
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載された論理シミュレーション方法では、不定値の原因となる不定値ノードＣに対して「０」を設定した場合の論理シミュレーション処理と、不定値ノードＣに対して「１」を設定した場合の論理シミュレーション処理とが行われる。すなわち、論理シミュレーション処理が２回実行される。従って、論理シミュレーションに要する時間が増加してしまう、という問題点があった。
【課題を解決するための手段】
【０００７】
本発明に係る論理シミュレーション装置は、複数の論理ブロックとそれらの接続関係を示す論理回路図データを取得し、前記複数の論理ブロックの各々の出力値を求め、前記各論理ブロックの出力値を示す出力値データを生成する、シミュレーション部と、前記出力値データに基づいて、前記各論理ブロックの出力値が不定値であるか否かを判定する、不定値検出部と、前記各論理ブロックの出力値が不定値であった場合に、前記不定値に対して、前記不定値の起源を特定する起源情報と、前記起源における論理レベルに対して正転であるか反転であるかを示す正反転情報とを付加し、不定値情報データを生成する、不定値情報付加部と、前記付加後出力データに基づいて、前記各論理ブロックに２つの不定値が入力され、前記２つの不定値の発生元が同じであり、前記２つの不定値が反転関係にある場合に、前記出力値を確定値に書き換え、書き換え後出力値データを生成する、書き換え部とを具備する。
【０００８】
本発明に係る論理シミュレーション方法は、コンピュータにより、複数の論理ブロックとそれらの接続関係を示す論理回路図データを取得し、前記複数の論理ブロックの各々の出力値を求め、前記各論理ブロックの出力値を示す出力値データを生成するステップと、コンピュータにより、前記出力値データに基づいて、前記各論理ブロックの出力値が不定値であるか否かを判定するステップと、コンピュータにより、前記各論理ブロックの出力値が不定値であった場合に、前記不定値に対して、前記不定値の起源を特定する起源情報と、前記起源における論理レベルに対して正転であるか反転であるかを示す正反転情報とを付加し、不定値情報データを生成するステップと、コンピュータにより、前記付与後出力データに基づいて、前記各論理ブロックに２つの不定値が入力され、前記２つの不定値の発生元が同じであり、前記２つの不定値が反転関係にある場合に、前記出力値を確定値に書き換え、書き換え後出力値データを生成するステップとを具備する。
【０００９】
本発明に係る論理シミュレーションプログラムは、上述の論理シミュレーション方法をコンピュータにより実現するための、コンピュータプログラムである。
【発明の効果】
【００１０】
本発明によれば、論理シミュレーション時間に要する時間を低減することのできる、論理シミュレーション装置、及び論理シミュレーション方法が提供される。
【図面の簡単な説明】
【００１１】
【図１】論理シミュレーション装置を示す構成図である。
【図２】論理シミュレーション装置を示す機能ブロック図である。
【図３】論理シミュレーション装置の動作方法を示すフローチャートである。
【図４】シミュレーション対象回路の一例を示す構成図である。
【図５Ａ】出力値データの一例を示す概念図である。
【図５Ｂ】不定値情報を示す概念図である。
【図５Ｃ】書き換え後出力値データを示す概念図である。
【発明を実施するための形態】
【００１２】
以下に、図面を参照しつつ、本発明の実施形態について説明する。図１は、本実施形態に係る論理シミュレーション装置１０を示す構成図である。論理シミュレーション装置１０は、処理装置２、表示装置１、記憶装置４、キーボード３、及びマウス５を備えるコンピュータにより、実現される。処理装置２は、図示しないＣＰＵ及びメモリを備えている。記憶装置４には、図示されていないが、シミュレーション対象回路を示す論理回路図データ、及びシミュレーション対象回路に供給される入力信号パターン等が格納されている。処理装置２には、メモリに、論理シミュレーションプログラムがインストールされている。この論理シミュレーション装置１０では、ＣＰＵが論理シミュレーションプログラムを実行することにより、シミュレーション対象回路に対する論理シミュレーションが実行される。論理シミュレーションの結果は、表示装置１に表示される。
【００１３】
図２は、論理シミュレーション装置１０を示す機能ブロック図である。図２に示されるように、論理シミュレーション装置１０は、シミュレーション部１１、不定値検出部１２、不定値情報付加部１３、及び書き換え部１４を備えている。これらは、ＣＰＵが論理シミュレーションプログラムを実行することにより、実現される。
【００１４】
シミュレーション部１１は、記憶装置４から、論理回路図データ、及び入力信号パターンを取得する。ここで、論理回路図データは、シミュレーション対象回路に含まれる複数の論理ブロックと、それらの接続関係を示すデータであるものとする。また、入力信号パターンは、シミュレーション対象回路に入力される信号のパターンを示すデータである。シミュレーション部１１は、入力信号パターンに基づいて、複数の論理ブロックの各々に入力される信号の論理レベルを計算する。そして、各論理ブロックに入力される信号の論理レベルに基づいて、各論理ブロックの出力値を求める。シミュレーション部１１は、各論理ブロックの出力値を示す出力値データを生成する。この際、各論理ブロックの出力値として、不定値が出現することがある。不定値が出現した場合、その不定値が入力される後段の論理ブロックの出力値も、不定値になってしまう。
【００１５】
不定値検出部１２は、出力値データに基づいて、不定値の存在を検出する。そして、検出結果を、不定値情報付加部１３に通知する。
【００１６】
不定値情報付加部１３は、不定値の存在が検出された場合に、不定値に対して、不定値の起源を特定する起源情報と、起源における論理レベルに対して正転であるか反転であるかを示す正反転情報とを付加し、不定値情報データを生成する。
【００１７】
書き換え部１４は、不定値情報データに基づいて、前記各論理ブロックの出力値を書き換える。具体的には、書き換え部１４は、各論理ブロックに対して、２つの不定値が入力されるか否かを判定する。２つの不定値が入力される場合、それら２つの不定値の起源が同一であるか否かを判定する。更に、それら２つの不定値の論理レベルが判定関係にあるか否かを判定する。そして、２つの不定値が入力され、２つの不定値の起源が同一であり、２つの不定値の論理レベルが判定関係にある場合に、その論理ブロックの出力値を確定値に書き換え、書き換え後出力値データを生成する。
【００１８】
続いて、本実施形態に係る論理シミュレーション装置の動作方法について説明する。図３は、論理シミュレーション装置の動作方法を示すフローチャートである。
【００１９】
ステップＳ１；論理回路図および入力信号パターンの読み込み
まず、シミュレーション部１１が、論理回路図データおよび入力信号パターンを取得する。図４は、論理回路図データにより示されるシミュレーション対象回路の一例を示す構成図である。
【００２０】
以下の説明では、本ステップにおいて、この図４に示されるシミュレーション対象回路を示す論理回路図データが取得されるものとして、説明を行なう。図４に示されるように、シミュレーション対象回路は、ゲートレベルで表現されており、複数の論理ブロックとして、複数のフリップフロップＦＦ、複数のＡＮＤ回路、及び複数のＯＲ回路を有しているものとする。図４に示されるように、ＡＮＤ回路４０、ＡＮＤ回路４１、及びＯＲ回路４２により、マルチプレクサ回路１９が構成されている。ＡＮＤ回路４０の一方の入力端は、ノードＡに接続されており、他方の入力端は、ノードＣに接続されている。ＡＮＤ回路４０の出力端は、ノードＤに接続されている。ＡＮＤ回路４１は、一方の入力端にノードＣに供給された信号の反転信号が入力され、他方の入力端にはノードＢに供給された信号が入力されるように構成されている。ＡＮＤ回路４１の出力端は、ノードＥに接続されている。ＯＲ回路４２は、一方の入力端でノードＤに接続され、他方の入力端でノードＥに接続されている。ＯＲ回路４２の出力端は、ノードＦに接続されている。
【００２１】
ステップＳ２；論理シミュレーション
次いで、シミュレーション部１１は、論理回路図データおよび入力信号パターンに基づいて、各論理ブロックの出力値を計算する。そして、シミュレーション部１１は、計算結果を示す出力値データを生成する。
【００２２】
この際、出力値として、不定値が得られることがある。以下の説明では、一例として、ノードＣにおいて、不定値Ｘが発生した場合について説明する。この場合、ノードＣの後段に配置されたＡＮＤ回路４０においても、出力値が不定値になってしまう。同様に、ＡＮＤ回路４１の出力値も、不定値になってしまう。すなわち、ノードＤ及びノードＥにおける出力値は、不定値になる。その結果、ＯＲ回路４２の出力値（ノードＦにおける出力値）も、不定値になる。尚、ノードＡ及びノードＢにおける値は、それぞれ、「１」であるものとする。この場合、出力値データとして、図５Ａに示されるデータが得られる。図５Ａに示されるように、ノードＡ及びノードＢにおける出力値は、それぞれ「１」である。また、ノードＣ、ノードＤ、ノードＥ、及びノードＦにおける出力値は、それぞれ、不定値「Ｘ」である。
【００２３】
ステップＳ３；不定値の検出
続いて、不定値検出部１２が、出力値データを取得する。不定値検出部１２は、出力値データから不定値を検出する。すなわち、各論理ブロックの出力値として、不定値が出力されているか否かを判定する。不定値が検出された場合、不定値検出部１２は検出結果を不定値情報付加部１３に通知し、次のステップＳ６の処理が行われる。不定値が検出されない場合、ステップＳ４の処理が行われる。
【００２４】
ステップＳ６；起源情報を付加
不定値が検出された場合、不定値情報付加部１３は、不定値がどの部分を起源としているかを判別する。不定値の起源は、出力値データと、論理回路図データとに基づいて、判別することができる。出力値データとして図５Ａに示されるデータが得られている場合、ノードＣ〜ノードＦにおける不定値「Ｘ」の起源は、ノードＣであることが判る。そして、不定値情報付加部１３は、不定値である各ノードの出力値に対して、その起源を特定する情報（起源情報）を付加する。
【００２５】
ステップＳ７；付加情報を論理演算
更に、不定値情報付加部１３は、不定値である各ノードの出力値に対して、起源における論理レベルに対して正転になるか反転になるかを求める。例えば、ノードＤにおける値に着目する。ＡＮＤ回路４０には、ノードＡから「１」に対応する信号が入力される。また、ＡＮＤ回路４０には、ノードＣから、不定値Ｘが入力される。そのため、ＡＮＤ回路４０の出力値（ノードＤにおける値）は、起源（ノードＣ）における値に対して正転になることがわかる。一方、ノードＥに着目すれば、ノードＢにおける値が「１」でるため、ＡＮＤ回路４１の出力値（ノードＥにおける値）は、ノードＣにおける値に対して反転になることがわかる。不定値情報付加部１３は、不定値である各ノードの出力値に対して、起源に対して正転であるか反転であるかを示す情報（正反転情報）を付加する。
【００２６】
上述のステップＳ６及びステップＳ７により、不定値に対して起源情報および正反転情報が付加され、不定値情報データが生成される。図５Ｂは、不定値情報を示す概念図である。図５Ｂに示されるように、ノードＣ及びノードＤにおける値は、不定値Ｘ（Ｃ）として示されている。不定値Ｘ（Ｃ）は、起源がノードＣであり、ノードＣにおける値に対して正転の値であることを示している。一方、ノードＥにおける値は、不定値Ｘ（！Ｃ）として示されている。不定値Ｘ（！Ｃ）は、起源がノードＣであり、ノードＣにおける値に対して反転した値であることを示している。
【００２７】
ステップＳ８；相補信号が入力されるか否かの判定
次いで、書き換え部１４が、不定値情報データを取得する。書き換え部１４は、不定値情報データに基づいて、複数の論理ブロックのうち、２つの不定値が入力されるものが存在するか否かを判定する。２つの不定値が入力される場合、それら２つの不定値の起源が同じであるか否かが判定される。更に、それら２つの不定値が、反転関係にあるか否かが判定される。起源が同じであり互いに反転関係にある２つの不定値が論理ブロックに入力される場合、次のステップＳ９の処理が行われる。それ以外の場合、ステップＳ４の処理が行われる。
【００２８】
ステップＳ９；書き換え
起源が同じであり互いに反転関係にある２つの不定値が論理ブロックに入力される場合、書き換え部１４は、その論理ブロックの出力値を確定値に書き換え、書き換え後出力値データを生成する。
【００２９】
図５Ｃは、書き換え後出力値データを示す概念図である。マルチプレクサ回路１９において（図４参照）、ＯＲ回路４２には、ノードＤから不定値Ｘ（Ｃ）が入力される。また、ＯＲ回路４２には、ノードＥから不定値Ｘ（！Ｃ）が入力される。すなわち、ＯＲ回路４２には、同一の起源を有し、反転関係にある２つの不定値が入力される。論理シミュレーションにおいて求められる不定値Ｘは、「０」及び「１」のどちらか一方の値のみを持ち、ハイインピーダンスなどの中間の値を持たない。従って、ＯＲ回路４２において、一方の不定値が「０」である場合には、その反転信号は「１」になる。従って、ＯＲ回路４２の出力値は、常に確定値である“１”を出力することになる。そこで、書き換え部１４は、ＯＲ回路４２の出力値（ノードＦの値）を、確定値「１」に書き換える。
【００３０】
ステップＳ４；終了判定
その後、書き換え部１４は、論理シミュレーションを終了するか否かを判定する。例えば、書き換え部１４は、ステップＳ２の処理が予め設定された回数行われたか否かを判定し、設定された回数に満たない場合には、ステップＳ２以降の処理を繰り返す。設定された回数に達した場合には、次のステップＳ５の処理が行われる。
【００３１】
ステップＳ５；結果の出力
最後に、書き換え部１４は、書き換え後出力値データを論理シミュレーション結果として出力する。具体的には、表示装置１に、論理シミュレーションが終了した旨を示すメッセージと共に、書き換え後出力値データが表示される。
【００３２】
以上説明したように、本実施形態によれば、不定値に対して、その不定値の起源を特定する情報、及び起源における値に対して正転か反転かを示す情報が付加され、不定値情報データが生成される。そして、不定値情報データに基づいて、同一の起源を有し互いに反転関係にある２つの不定値が入力される論理ブロックに対して、出力値が確定値に書き換えられる。これにより、不定値が後段の論理ブロックに伝播してしまうことを防止することができ、１回の論理シミュレーションで不定値を確定値にすることができる。そのため、論理シミュレーションに要する計算回数を低減することができる。
【００３３】
尚、本実施形態では、ＯＲ回路４２の出力値を書き換える場合について説明した。但し、ＯＲ回路に限らず、他の論理ブロック（例えば、ＮＯＲ回路、ＡＮＤ回路、ＮＡＮＤ回路、ＥＸＯＲ回路、ＥＸＮＯＲ回路、及び２ＡＮＤ２ＮＯＲ回路）についても、同一の起源を有する反転関係にある２つの不定値が入力される場合には、出力値を確定値に書き換えることができる。
【符号の説明】
【００３４】
１  表示装置
２  処理装置
３  キーボード
４  記憶装置
５  マウス
１０  論理シミュレーション装置
１１  シミュレーション部
１２  不定値検出部
１３  不定値情報付加部
１４  書き換え部
１９  マルチプレクサ回路
４０  ＡＮＤ回路
４１  ＡＮＤ回路
４２  ＯＲ回路
【図１】
2011180977.tif 000003
【図２】
2011180977.tif 000004
【図３】
2011180977.tif 000005
【図４】
2011180977.tif 000006
【図５Ａ】
2011180977.tif 000007
【図５Ｂ】
2011180977.tif 000008
【図５Ｃ】
2011180977.tif 000009