(57)【要約】【課題】論理シミュレーションに要する時間を削減する。【解決手段】ＲＴＬ記述の論理シミュレーション結果とゲートレベルの論理シミュレーション結果とが一致しているか否かを判定する。そして、判定結果が不一致であった場合に、ＲＴＬ記述の論理シミュレーション結果情報とゲートレベルの論理シミュレーション結果情報の不一致箇所を抽出する。抽出した不一致ポイントに基づき、ゲートレベルの論理シミュレーション結果情報をＲＴＬ記述の論理シミュレーション結果情報に強制代入記述を作成する。その強制代入記述を含むＦｏｒｃｅファイルに基づき再度ゲートレベルの論理シミュレーションを実施する。【選択図】図８
2012160145.tif 000002
【特許請求の範囲】
【請求項１】
ＲＴＬ記述に対して論理シミュレーションを行って論理シミュレーション結果を得る工程と、
前記ＲＴＬ記述を論理合成してゲートレベルモデルを作成する工程と、
前記ゲートレベルモデルに対して、ゲートレベルの論理シミュレーション結果を得る工程と、
前記ＲＴＬ記述の前記論理シミュレーション結果と前記ゲートレベルの前記論理シミュレーション結果とが一致しているか否かを判定する工程と、
前記判定結果が不一致であった場合に、前記ＲＴＬ記述の前記論理シミュレーション結果情報と前記ゲートレベルの前記論理シミュレーション結果情報の不一致箇所を抽出する不一致ポイント工程と、
前記不一致ポイント工程の結果に基づき、前記ゲートレベルの前記論理シミュレーション結果情報を前記ＲＴＬ記述の前記論理シミュレーション結果情報に強制代入記述を作成するＦｏｒｃｅファイル生成工程と、
前記Ｆｏｒｃｅファイル生成工程の結果に基づき再度ゲートレベルの論理シミュレーションを実施することを特徴とする
論理シミュレーション方法。
【請求項２】
請求項１に記載の論理シミュレーション方法において、
前記強制代入は、不一致ポイント発生時から最小シミュレーション時間の間だけ、ゲートレベルモデルの記述をＲＴＬレベルモデルの対応する記述に強制的に代入することを特徴とする
論理シミュレーション方法。
【請求項３】
請求項１または２に記載の論理シミュレーション方法において、
前記強制代入する情報は、前記ゲートレベルモデルの前記論理シミュレーション結果と、
前記ＲＴＬ記述の前記論理シミュレーション結果で不一致が発生したフリップフロップの情報であることを特徴とする
論理シミュレーション方法。
【請求項４】
ＲＴＬ記述を論理合成してゲートレベルモデルを作成する工程と、
前記ＲＴＬ記述とゲートレベルモデルのフリップフロップの対応データを使用して、ゲートレベルモデルに含まれるフリップフロップが入力信号をサンプリングした直後にＲＴＬ記述に含まれるフリップフロップが保持している値と、
ゲートレベルモデルに含まれるフリップフロップが保持している値をチェックして強制的にＲＴＬレベルモデルのフリップフロップが保持している値をゲートレベルモデルのフリップフロップに代入するアサーション記述を生成する工程と、
前記ＲＴＬ記述とゲートレベルモデルとアサーション記述の論理シミュレーションを実施することを特徴とする
論理シミュレーション方法。
【請求項５】
ＲＴＬ記述と、前記ＲＴＬ記述を論理合成して生成するゲートレベルモデルとを入力とする入力部と、
前記ＲＴＬ記述に対して論理シミュレーションを行って論理シミュレーション結果と、前記ゲートレベルモデルに対して、ゲートレベルの論理シミュレーション結果を得る論理シミュレーション部と、
前記ＲＴＬ記述の前記論理シミュレーション結果と前記ゲートレベルの前記論理シミュレーション結果とが一致しているか否かを判定する判定部と、
前記判定結果が不一致であった場合に、前記ＲＴＬ記述の前記論理シミュレーション結果情報と前記ゲートレベルモデルの前記論理シミュレーション結果情報の不一致箇所を抽出する不一致ポイント抽出部と、
前記不一致ポイント工程の結果に基づき、前記ゲートレベルの前記論理シミュレーション結果情報を前記ＲＴＬ記述の前記論理シミュレーション結果情報に強制代入記述を作成するＦｏｒｃｅファイル生成部と、
前記Ｆｏｒｃｅファイル生成工程の結果に基づき再度ゲートレベルの論理シミュレーションを実施するシミュレーション部を備えたことを特徴とする
論理シミュレーション装置。
【請求項６】
検証対象のＲＴＬレベルモデルと合成制約情報とを入力として受け取り、検証対象のゲートレベルモデルを論理合成する論理合成ツールと、
前記検証対象のＲＴＬレベルモデルと前記検証対象のゲートレベルモデルとに基づいて、各々のフリップフロップの対応を表したマッチング情報ファイルを生成する形式検証ツールと、
前記マッチング情報ファイルを受け取り、前記マッチング情報ファイル４に基づいて論理シミュレーション結果ファイルを出力するシミュレーションツールと
を具備し、
前記シミュレーションツールは、
前記マッチング情報ファイル受け取り、前記マッチング情報ファイルに基づいてダンプポイント情報ファイルを生成するダンプ情報生成部と、
前記ダンプポイント情報ファイルを受け取り、前記検証対象のＲＴＬレベルモデルのフリップフロップの値をダンプしたＲＴＬシミュレーションダンプファイルを生成するＲＴＬシミュレーション部と、
前記ダンプポイント情報ファイル受け取り、前記検証対象のゲートレベルモデルのフリップフロップの値をダンプしたゲートシミュレーションダンプファイルを生成するゲートシミュレーション部と、
前記ＲＴＬシミュレーションダンプファイルと前記ゲートシミュレーションダンプファイルとを受け取り、不一致が在るか無いかの判断を行う比較部と、
前記比較部の比較結果に基づいて、前記ＲＴＬシミュレーションダンプファイルと前記ゲートシミュレーションダンプファイルとに不一致が在る場合、不一致ポイントファイルを生成する不一致ポイント生成部と、
前記不一致ポイントファイル受け取り、前記検証対象のゲートレベルモデルのフリップフロップに、値を強制代入するアサーション記述のＦｏｒｃｅファイルを生成するＦｏｒｃｅファイル生成部と
を備える
論理シミュレーション装置。
【請求項７】
請求項６に記載の論理シミュレーション装置において、
前記ゲートシミュレーション部は、
前記Ｆｏｒｃｅファイルを受け取り、前記Ｆｏｒｃｅファイルと前記検証対象のゲートレベルモデルとに基づいたシミュレーションを実行して論理シミュレーション結果ファイルを生成する。
論理シミュレーション装置。
【請求項８】
請求項７に記載の論理シミュレーション装置において、
前記ゲートシミュレーション部は、
前記ＲＴＬシミュレーションダンプファイルと前記ゲートシミュレーションダンプファイル７とに不一致が無い場合、前記Ｆｏｒｃｅファイルに依存することなく、記検証対象のゲートレベルモデルとに基づいたシミュレーションを実行して論理シミュレーション結果ファイルを生成する
論理シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理シミュレーション方法および論理シミュレーション装置に関し、特に、論理回路の動作を検証する論理シミュレーション方法および論理シミュレーション装置に関する。
【背景技術】
【０００２】
ＬＳＩを新規に開発する場合、機能設計、論理設計、レイアウト設計などの設計工程を経た後、製造工程に移行して製造される。ＬＳＩの設計に誤りがあったときには、その設計の誤りを修正するために、多大な時間と手間を費やすことになる。設計の誤りを早い段階で発見するため、設計対象（設計記述）が正しいかどうかを検証する「設計検証」と呼ばれる処理が必要となる。その設計検証のうち、論理設計レベルで検証を行うものを論理検証と呼んでいる。論理検証を実現する技術として、論理シミュレーション技術が知られている。論理シミュレーション技術は、論理回路の動作をシミュレーションして期待値と同じかどうか検証する技術である。
【０００３】
ＬＳＩの大規模化や多機能化、また、論理圧縮の高度化などが進むにつれて、開発段階におけるＬＳＩの論理シミュレーションの重要性が高まってきている。そのような大規模なＬＳＩの論理シミュレーションを行う時に、不定伝播が多く発生するという不具合が発生することがあった。また、テストパターンの効率も悪くなり、不定値の検出率も低くなってしまうという不具合が発生することがあった。それに伴い、効率の良い検出率の高いテストパターンの作成と、不定伝播を起こさないシミュレーション技術の要求が高まってきた。そのような要求に対応して、ゲートシミュレーション結果の不定値を確定させる技術が知られている（例えば、特許文献１、２参照）。
【０００４】
特許文献１（特開２００８−１５８６５２号公報）には、ＲＴＬモデルシミュレーションと、ゲートモデルシミュレーション結果の不一致を取り除く事ができるゲートモデルシミュレーションに関する技術が記載されている。
【０００５】
図１は、特許文献１に記載された検証対象のＲＴＬレベルモデルを示した図である。特許文献１に記載の技術では、ＲＴＬレベルモデルのようなＲＴＬ記述を論理シミュレーションして論理シミュレーション結果（文献では時刻１での信号ｃ、ｄの値）を求めている。ＲＴＬ記述の論理シミュレーション結果から、ＲＴＬ記述の時刻１での信号ｃ、ｄの値は、どちらも“０”となる。次に、論理合成ツールを用いて、図１のＲＴＬ記述を論理合成してゲートレベルモデルを作成する。そして、特許文献１に記載の技術に係る論理シミュレーション方法を用いて、当該ゲートレベルモデルを論理シミュレーションして論理シミュレーション結果（ここでは時刻１での信号ｃ、ｄの値）を求めている。
【０００６】
ここで、特許文献１に記載の技術に係る論理シミュレーション方法を、当該ゲートレベルモデルに適用した場合に、当該ゲートレベルモデルがどのような動作をするか（即ちどのような論理シミュレーション結果が得られるか）を、図２の当該ゲートレベルモデルの回路図を用いて説明する。
【０００７】
図２は、特許文献１に記載の技術におけるＲＴＬレベルモデルを論理合成して得られたゲートレベルモデルを示した図である。図２のゲートレベルモデルの回路Ｒは、ＡＮＤ回路Ｒ１、Ｒ３と、ＮＯＴ回路Ｒ２、Ｒ４と、ＯＲ回路Ｒ５と、Ｄフリップフロップ回路Ｒ６とで構成されている。ＡＮＤ回路Ｒ１は、一方の入力部にＤフリップフロップ回路Ｒ６の出力信号ｄが供給され、他方の入力部にＮＯＴ回路Ｒ２を介して外部からの信号ｂが供給されている。また、Ｄフリップフロップ回路Ｒ６は、出力部から信号ｃを出力する。
【０００８】
ＡＮＤ回路Ｒ３は、一方の入力部にＤフリップフロップ回路Ｒ６の出力信号ｄが供給され、他方の入力部にＮＯＴ回路Ｒ４を介してＡＮＤ回路Ｒ１の出力信号ｃが供給されている。また、ＡＮＤ回路Ｒ３は、出力部から信号ｅを出力する。ＯＲ回路Ｒ５は、一方の入力部に外部からの信号ａが供給され、他方の入力部にＡＮＤ回路Ｒ３の出力信号ｅが供給されている。また、ＯＲ回路Ｒ５は、出力部から信号ｆを出力する。
【０００９】
Ｄフリップフロップ回路Ｒ６は、入力部ＤにＯＲ回路Ｒ５の出力信号ｆが供給され、入力部Ｔにクロック信号ＣＬＫが供給されている。また、Ｄフリップフロップ回路Ｒ６は、入力部Ｄに供給された入力信号ｆを、入力部Ｔに供給されたクロック信号ＣＬＫに応じて遅延させて、出力部Ｑから信号ｄとして出力する。
図２の信号ａ、ｂおよびクロック信号ＣＬＫの入力条件は、時刻０の初期状態では、各信号ａ、ｂの値はそれぞれ“０”であり、Ｄフロップフロップ回路Ｒ６には、時刻１でクロック信号ＣＬＫが供給されるものとする。また、以下に示す式中の＝は等号、∧は論理積、＋は論理和、〜は値の反転を示す記号であり、Ｘは、〜Ｘ＝Ｘの関係を満たす不定値であり、０、１は、〜１＝０、〜０＝１を満たす真理値である。
【００１０】
図２のゲートレベルモデルの回路Ｒでは、まず時刻０では、クロック信号ＣＬＫが供給されていないため、信号ｄは不定値“Ｘ”となる。
次に信号ｃの値は、下記の計算により不定値“Ｘ”になる。
ｃ＝ｄ∧（〜ｂ）
＝Ｘ∧（〜０）（∵時刻０でｂ＝０）
＝Ｘ∧１  （∵〜０＝１）
＝Ｘ  （∵式１）。
【００１１】
次に信号ｅの値は、下記の計算により“０”になる。
ｅ＝ｄ∧（〜ｃ）
＝Ｘ∧（“〜Ｘ”）  （∵上記の計算結果ｃ＝Ｘ）
＝０  （∵式２）。
【００１２】
次に信号ｆの値は、下記の計算により“０”になる。
ｆ＝ａ＋ｅ
＝０＋０  （∵時刻０でａ＝０且つ上記の計算結果ｅ＝０）
＝０  （∵式３）。
【００１３】
次に時刻１でクロック信号ＣＬＫが供給されると、信号ｄの値は、ｄ＝ｆ＝０より“０”になる。
従って時刻１以降での信号ｃの値は、下記の計算により“０”になる。
ｃ＝ｄ∧（〜ｂ）
＝０∧（〜０）  （∵時刻１でｂ＝０）
＝０∧１  （∵〜０＝１）
＝０  （∵式４）。
【００１４】
以上の様に、時刻１での信号ｃ、ｄの値は、どちらも“０”となる。そして次に、上記で求めたＲＴＬ記述の論理シミュレーション結果（時刻１での信号ｃ、ｄの値）とゲートレベルモデルの論理シミュレーション結果（時刻１での信号ｃ、ｄの値）とを比較し、一致すれば、ゲートレベルモデルはＲＴＬ記述と等価なものと判定され、一致しなければ、ゲートレベルモデルはＲＴＬ記述と等価なものでないと判定される。
【００１５】
ここでは、ＲＴＬ記述の論理シミュレーション結果は、時刻１でｃ＝ｄ＝０であり、ゲートレベルモデルの論理シミュレーション結果も、時刻１でｃ＝ｄ＝０であり、両者は一致するので、ゲートレベルモデルはＲＴＬ記述と等価なものと判定される。
【００１６】
以上の様に、特許文献１に開示された論理シミュレーション方法によれば、論理回路が不定値を出力するフリップフロップ回路を１つ含む場合に、ＡＮＤ回路およびＯＲ回路の演算でその不定値が適切に扱われるので、不定値伝播に関する、ＲＴＬ記述とゲートレベルモデルとの論理シミュレーション結果の不一致を取り除く事ができる。
【００１７】
また、特許文献２（特開２００９−０７０２７４号公報）には、期待値を出力するための入力パラメータの組み合わせを簡単かつ効率的に求めることにより、検証作業の効率化を図るための技術が開示されている。その特許文献２に記載の検証支援装置では、テストパターン生成部により、テストパターンを生成してシミュレーションを実行している。また、期待値判定部により期待値判定を行っている。このとき、未出力の期待値がある場合には、関連度表に基づいて変更後のテストパラメータＴＰｋ、ｔｐｋを生成し、シミュレーションを実行して期待値判定をおこなっている。期待値どおりの出力値がある場合には、“期待値を出力する入力パラメータＰ−ｉの組み合わせ”を出力している。そして、テストパラメータ生成部に与えることにより、テストパラメータＴＰを生成する。このテストパラメータＴＰをＲＴＬシミュレータに与えることにより、期待値どおりの値を出力するシミュレーション結果を得ている。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００８−１５８６５２号公報
【特許文献２】特開２００９−０７０２７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
特許文献１に記載の技術では、上述したように、不定値、その不定値の反転信号、真理値“０”、真理値“１”の４個の数値間のブール代数関係を取り扱い、論理シミュレーションを行っている。そして、ＲＴＬ記述とネットリストとの論理シミュレーション結果の不一致を取り除き、不定値伝播をなくしている。
【００２０】
従って、通常論理シミュレーションでは、記憶する必要がある信号線の状態は、“０”、“１”、不定値“Ｘ”の３状態であるが、特許文献１に記載の技術では３状態に加えて、不定値“Ｘ”状態の信号の論理を記憶する必要がある。つまり、特許文献１に記載の技術では“０”、“１”、不定値“Ｘ”、不定値“〜Ｘ”の４状態の論理計算を行う必要がある。さらに、計算対象の複数の信号線の状態が不定値“Ｘ”の時は、対象の信号線同士の片方を反転させて論理一致を計算する必要がある。そのため通常の論理シミュレーションに比べて、大幅に計算時間が増加するという問題があった。また、特許文献２に記載の技術も、特許文献１に記載の技術と同様に、通常の論理シミュレーションに比べて、大幅に計算時間が増加するという問題があった。
【課題を解決するための手段】
【００２１】
以下に、［発明を実施するための形態］で使用される番号を用いて、［課題を解決するための手段］を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００２２】
上記の課題を解決するために、ＲＴＬ記述の論理シミュレーション結果とゲートレベルの論理シミュレーション結果とが一致しているか否かを判定する。そして、判定結果が不一致であった場合に、ＲＴＬ記述の論理シミュレーション結果情報とゲートレベルの論理シミュレーション結果情報の不一致箇所を抽出する。抽出した不一致ポイントに基づき、ゲートレベルの論理シミュレーション結果情報をＲＴＬ記述の論理シミュレーション結果情報に強制代入記述を作成する。その強制代入記述を含むＦｏｒｃｅファイルに基づき再度ゲートレベルの論理シミュレーションを実施する。
【発明の効果】
【００２３】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、不定伝播の無い論理シミュレーションに必要な時間を削減するという効果がある。
具体的には、検出したゲートレベルモデルの出力不一致フリップフロップに対し、強制的にＲＴＬレベルモデルのフリップフロップが保持している値を代入し、３状態（“０”、”１”、不定値“Ｘ”）の入力信号の論理計算を行う論理シミュレーションを行っている。そのため、不定値“Ｘ“状態が供給されている論理素子がある場合、従来技術に比べ論理計算の回数が少なくなり、最終的な論理計算に掛かる時間を削減することが可能となる。
【図面の簡単な説明】
【００２４】
【図１】図１は、検証対象のＲＴＬレベルモデルを示した図である。
【図２】図２は、ＲＴＬレベルモデルを論理合成して得られたゲートレベルモデルを示した図である。
【図３】図３は、本実施形態の論理シミュレーションシステム８５の構成を例示するシステム構成図である。
【図４】図４は、本実施形態のコンピュータ装置８３の構成を例示するブロック図である。
【図５】図５は、本実施形態のシミュレーションツール３８の構成を例示するブロック図である。
【図６】図６は、本実施形態のファイル格納部３５の構成を例示するブロック図である。
【図７】図７は、本実施形態におけるシミュレーション対象のゲートレベルモデルの回路の構成を例示する回路図である。
【図８】図８は、本実施形態の論理シミュレーションシステム８５の動作を例示するフローチャートである。
【図９】図９は、ＲＴＬシミュレーション工程の動作を例示するタイミングチャートである。
【図１０】図１０は、ＲＴＬシミュレーションのダンプファイル６の構成を例示するテーブルである。
【図１１】図１１は、ゲートシミュレーション工程の動作を例示するタイミングチャートである。
【図１２】図１２は、ゲートシミュレーションのダンプファイル７の構成を例示するテーブルである。
【図１３】図１３は、不一致ポイントファイル８の構成を例示するテーブルである。
【図１４】図１４は、ゲートレベルシミュレーション工程の動作を例示するタイミングチャートである。
【図１５】図１５は、第２実施形態のシミュレーションツール３８の構成を例示するブロック図である。
【図１６】図１６は、第２実施形態の論理シミュレーション方法を例示するフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態を図面に基づいて説明する。なお、実施の形態を説明するための図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２６】
図３は、本本実施形態の論理シミュレーションシステム８５の構成を例示するシステム構成図である。論理シミュレーションシステム８５は、サーバ８０と記録媒体８１とネットワーク８２とコンピュータ装置８３を備えている。また、コンピュータ装置８３は記憶装置を備えている。
【００２７】
記録媒体８１は、論理シミュレーションプログラムを格納する。その記録媒体８１は、サーバ８０に保持されている。サーバ８０は、インターネットなどのネットワーク８２を介して、エンジニアリングワークステーション等のコンピュータ装置８３に接続される。記録媒体８１に格納されている論理シミュレーションプログラムは、ネットワーク８２を介してコンピュータ装置８３にダウンロードされる。
【００２８】
ダウンロードされた論理シミュレーションプログラムは、コンピュータ装置８３のローカルなハードディスク、あるいは、メモリなどの記憶装置にストアされる。論理シミュレーションプログラムは、コンピュータ装置８３の記憶装置に格納されているＲＴＬレベルモデル、ゲートレベルモデルの論理接続情報を元に、コンピュータ装置８３に供給されたＲＴＬレベルモデルとゲートレベルモデルのマッチング情報にしたがって、論理計算処理を行う。また、論理シミュレーションプログラムは、中間データとなるダンプポイント情報を参照して、最終処理結果となる不定伝播の無いシミュレーション結果を生成する。生成された不定伝播の無いシミュレーション結果は、コンピュータ装置８３の記憶装置に保持される。なお、本実施形態の論理シミュレーションシステム８５において、コンピュータ装置８３に外部記憶装置を接続し、その外部記憶装置に各ファイルを格納する構成であってもよい。
【００２９】
図４は、ダウンロードされた論理シミュレーションプログラムを保持しているコンピュータ装置８３の構成を例示するブロック図である。図４に示されているように、コンピュータ装置８３は、コンピュータ装置本体８６と、入力装置８７と、出力装置８８とを備えている。
【００３０】
コンピュータ装置本体８６は、コンピュータプログラムに示される手順に従って情報処理を高速に行う。本実施形態のコンピュータ装置本体８６は、論理しミューレータとしての機能を提供する。コンピュータ装置本体８６は、入力、記憶、演算、制御および出力の機能を備えている。入力装置８７は、マウスやキーボードなどに代表されるマンマシンインターフェースである。入力装置８７は、ユーザの操作に応答して、コンピュータ装置本体８６へデータを入力する。出力装置８８は、液晶ディスプレイやプリンターなどに代表されるマンマシンインターフェースである。出力装置８８は、コンピュータ装置本体８６の処理結果を、ユーザに認識できる形式で出力する。上述のコンピュータ装置本体８６は、演算処理部３１と、情報記憶部３２とを備え、それらは、バス３３を介して接続されている。
【００３１】
演算処理部３１は、コンピュータ装置本体８６に備えられた各種装置の制御やデータ処理を実行する。演算処理部３１は、コンピュータ装置本体８６が入力装置８７を介して受け取ったデータを解釈して演算し、その演算結果を出力装置８８などで出力する。情報記憶部３２は、ＲＡＭやハードディスクなどに代表されるデータを記憶するための装置である。コンピュータ装置本体８６は、外部ネットワークを介して他の機器とデータ通信するための通信処理装置を備えていてもよい。
【００３２】
上述の情報記憶部３２は、論理シミュレーションプログラム３４と、ファイル格納部３５とを保持している。論理シミュレーションプログラム３４は、半導体集積回路の設計を、コンピュータシステムを用いて自動的に行うためのソフトウェアである。ファイル格納部３５は、半導体集積回路を設計するために必要な情報を保持している。
【００３３】
論理シミュレーションプログラム３４には、コンピュータ装置８３を、論理合成ツール３６として機能させるための手順が示されている。また、論理シミュレーションプログラム３４には、コンピュータ装置８３を、形式検証ツール３７として機能させるための手順が示されている。さらに、論理シミュレーションプログラム３４には、コンピュータ装置８３を、シミュレーションツール３８として機能させるための手順が示されている。
【００３４】
図５は、本実施形態のシミュレーションツール３８の構成を例示するブロック図である。シミュレーションツール３８は、ダンプ情報生成部４１と、ＲＴＬシミュレーション部４２と、ゲートシミュレーション部４３と、比較部４４と、不一致ポイント生成部４５と、Ｆｏｒｃｅファイル生成部４６とを備えている。
【００３５】
図６は、本実施形態のファイル格納部３５の構成を例示するブロック図である。ファイル格納部３５は、ＲＴＬレベルモデル１と、合成制約情報ファイル２と、ゲートレベルモデル３と、マッチング情報ファイル４と、ダンプポイント情報ファイル５と、ＲＴＬシミュレーションのダンプファイル６と、ゲートシミュレーションのダンプファイル７と、不一致ポイントファイル８と、Ｆｏｒｃｅファイル９と、論理シミュレーション結果ファイル１０とを保持している。
【００３６】
本実施形態の論理シミュレーションシステム８５において、コンピュータ装置８３が論理合成ツール３６として機能するとき、その論理合成ツール３６は、上述のファイル格納部３５から、検証対象のＲＴＬレベルモデル１と、合成制約情報ファイル２を入力として受け取る。その論理合成ツール３６は、検証対象のＲＴＬレベルモデル１と、合成制約情報ファイル２に基づいて、検証対象のゲートレベルモデル３を論理合成する。また、コンピュータ装置８３が形式検証ツール３７として機能するとき、その形式検証ツール３７は、検証対象のＲＴＬレベルモデル１と、検証対象のゲートレベルモデル３とを、入力して受け取る。その形式検証ツール３７は、受け取った検証対象のＲＴＬレベルモデル１と、検証対象のゲートレベルモデル３とに基づいて、各々のフリップフロップの対応を表したマッチング情報ファイル４を作成する。さらに、コンピュータ装置８３がシミュレーションツール３８として機能するとき、そのシミュレーションツール３８は、マッチング情報ファイル４を入力として受け取り、そのマッチング情報ファイル４に基づいて論理シミュレーション結果ファイル１０を出力する。
【００３７】
本実施形態の論理シミュレーションシステム８５において、コンピュータ装置８３がシミュレーションツール３８として機能するとき、そのシミュレーションツール３８のダンプ情報生成部４１は、マッチング情報ファイル４を入力として受け取り、そのマッチング情報ファイル４に基づいてダンプポイント情報ファイル５を出力する。そのシミュレーションツール３８のＲＴＬシミュレーション部４２は、ダンプポイント情報ファイル５を入力として受け取り、検証対象のＲＴＬレベルモデル１のフリップフロップの値をダンプしたＲＴＬシミュレーションのダンプファイル６を出力する。
【００３８】
シミュレーションツール３８のゲートシミュレーション部４３は、ダンプポイント情報ファイル５を入力として受け取り、検証対象のゲートレベルモデル３のフリップフロップの値をダンプしたゲートシミュレーションのダンプファイル７を出力する。そのシミュレーションツール３８の比較部４４は、ＲＴＬシミュレーションのダンプファイル６とゲートシミュレーションのダンプファイル７を入力として受け取り、不一致が在るか無いかの判断を行う。
【００３９】
シミュレーションツール３８の不一致ポイント生成部４５は、不一致が在る場合、不一致ポイントファイル８を出力する。そのシミュレーションツール３８のＦｏｒｃｅファイル生成部４６は、不一致ポイントファイル８を入力として受け取り、検証対象のゲートレベルモデル３のフリップフロップに、値を強制代入するアサーション記述のＦｏｒｃｅファイル９を出力する。上述のゲートシミュレーション部４３は、ゲートレベルモデル３と、Ｆｏｒｃｅファイル９を入力として受け取り、論理シミュレーション結果ファイル１０を出力する。また、そのゲートシミュレーション部４３は、ＲＴＬシミュレーションのダンプファイル６とゲートシミュレーションのダンプファイル７とに不一致が無い場合、ゲートレベルモデル３を入力として受け取り、論理シミュレーション結果ファイル１０を出力する。
【００４０】
図７は、本実施形態におけるシミュレーション対象のゲートレベルモデルの回路の構成を例示する回路図である。図７に示されているように、そのゲートレベルモデルの回路は、ＡＮＤ回路Ｒ１と、ＮＯＴ回路Ｒ２と、ＡＮＤ回路Ｒ３と、ＮＯＴ回路Ｒ４と、ＯＲ回路Ｒ５と、Ｄフリップフロップ回路Ｒ６とを備えている。また、そのゲートレベルモデルの回路は、入力信号ａと、入力信号ｂと、出力信号ｃと、信号ｄと、信号ｅと、信号ｆと、信号ｇと、信号ｈと、クロック信号ＣＬＫとに対応して動作する。
【００４１】
入力信号ａは、ＯＲ回路Ｒ５に供給されている。入力信号ｂは、ＮＯＴ回路Ｒ２に供給されている。クロック信号ＣＬＫは、Ｄフリップフロップ回路Ｒ６のクロック端子に供給されている。Ｄフリップフロップ回路Ｒ６は、信号ｄを出力している。信号ｄは、ＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３に供給されている。ＮＯＴ回路Ｒ２は、信号ｇを出力している。信号ｇは、ＡＮＤ回路Ｒ１に供給されている。ＡＮＤ回路Ｒ１は、出力信号ｃを出力している。出力信号ｃは、ＮＯＴ回路Ｒ４に供給されている。ＮＯＴ回路Ｒ４は信号ｈを出力している。信号ｈは、ＡＮＤ回路Ｒ３に供給されている。ＡＮＤ回路Ｒ３は、信号ｅを出力している。信号ｅは、ＯＲ回路Ｒ５に供給されている。ＯＲ回路Ｒ５は、信号ｆを出力している。信号ｆは、Ｄフリップフロップ回路Ｒ６のデータ端子に供給されている。
【００４２】
以下に、本実施形態に論理シミュレーションシステム８５の動作について説明を行う。なお、以下の説明においては、本願発明の理解を容易にするために、検証対象のＲＴＬレベルモデル１が、上述の図１に示されるようなＲＴＬ記述の場合を例示する。図８は、本実施形態の論理シミュレーションシステム８５の動作を例示するフローチャートである。ステップＳ１において、検証対象のＲＴＬレベルモデル１と、合成制約情報ファイル２を入力して、検証対象のゲートレベルモデル３を出力する
【００４３】
ステップＳ２において、検証対象のＲＴＬレベルモデル１と、検証対象のゲートレベルモデル３とを入力として受け取り、形式検証工程を実行する。この時、各々のフリップフロップの対応を表したマッチング情報ファイル４が作成される。
【００４４】
ステップＳ３において、ステップＳ２の形式検証工程を実行することによって得られたＲＴＬレベルモデルとゲートレベルモデルのマッチング情報ファイル４を使用して、ダンプ情報を生成する。ステップＳ３のダンプ情報生成工程では、検証対象のゲートレベルモデル３のそれぞれのフリップフロップが保持している値をダンプするようなアサーション記述であるダンプポイント情報ファイル５を作成する。また、そのダンプ情報生成工程では、検証対象のゲートレベルモデル３のフリップフロップが入力信号の値をサンプリングした直後に、値をダンプするようなアサーション記述であるダンプポイント情報ファイル５を作成する。
【００４５】
ステップＳ４において、ダンプポイント情報ファイル５を入力として受け取り、ＲＴＬシミュレーションを実行して、検証対象のＲＴＬレベルモデル１内のフリップフロップが保持している値とシミュレーション時刻をダンプした、ＲＴＬシミュレーションのダンプファイル６を作成する。
【００４６】
図９は、検証対象のＲＴＬレベルモデル１が、上述の図１に示されるようなＲＴＬ記述の場合の、ステップＳ４におけるＲＴＬシミュレーション工程の動作を例示するタイミングチャートである。
【００４７】
シミュレーション開始時刻Ｔ０では、クロック信号ＣＬＫに“０”、入力信号ａに不定値“Ｘ”、入力信号ｂに不定値“Ｘ”が供給され、レジスタｄに不定値“Ｘ”が設定される。その入力と設定が行われた事により内部信号である、ａｓｓｉｇｎ宣言された信号Ｙが不定値“Ｘ”に、出力信号ｃが不定値“Ｘ”になる。
【００４８】
シミュレーション時刻Ｔ１では、クロック信号ＣＬＫに“１”が供給される。シミュレーション時刻Ｔ２では、入力信号ａに“０”が供給される。シミュレーション時刻Ｔ３では、クロック信号ＣＬＫに“０”が供給される。シミュレーション時刻Ｔ４では、入力信号ｂに“０”が供給される。その入力が行われた事により内部信号である、ａｓｓｉｇｎ宣言された信号Ｙの出力が“０”になる。シミュレーション時刻Ｔ５では、クロック信号ＣＬＫに“１”が供給される。その入力が行われた事により内部信号である、レジスタｄの出力が“０”に、出力信号ｃが“０”になる。
【００４９】
図１０は、ＲＴＬシミュレーションのダンプファイル６の構成を例示するテーブルである。本実施形態のＲＴＬシミュレーションのダンプファイル６は、検証対象のゲートレベルモデル３のＤフリップフロップ回路Ｒ６の名前と、値をサンプリングしたシミュレーション時刻と、Ｄフリップフロップ回路Ｒ６に対応する検証対象のＲＴＬレベルモデル１のレジスタｄの値を備えている。
【００５０】
図８に戻り、ステップＳ５において、ダンプポイント情報ファイル５を入力し、ゲートシミュレーションを実行し、検証対象のゲートレベルモデル３のフリップフロップが保持している値とシミュレーション時刻をダンプした、ゲートシミュレーションのダンプファイル７を作成する。ステップＳ５では、ＲＴＬ記述を論理合成して得られた図７に例示するゲートレベルモデルに対応したシミュレーションを実行する。
【００５１】
図１１は、ステップＳ５のゲートシミュレーション工程の動作を例示するタイミングチャートである。シミュレーション開始時刻Ｔ０では、クロック信号ＣＬＫに“０”、入力信号ａに不定値“Ｘ”、入力信号ｂに不定値“Ｘ”が供給され、信号ｄに不定値“Ｘ”が設定される。その入力と設定が行われた事により内部信号である、信号ｅが不定値“Ｘ”に、信号ｆが不定値“Ｘ”に、信号ｇが不定値“Ｘ”に、信号ｈが不定値“Ｘ”になり、出力信号ｃが不定値“Ｘ”になる。
【００５２】
シミュレーション時刻Ｔ１では、クロック信号ＣＬＫに“１”が供給される。この時Ｄフリップフロップ回路Ｒ６は、信号ｆの値不定値“Ｘ”をサンプリングするので、ゲートシミュレーションのダンプファイル７にＤフリップフロップ回路Ｒ６の名前“Ｒ６”が出力され、サンプリングした時刻Ｔ１が出力され、Ｄフリップフロップ回路Ｒ６が保持している値である不定値“Ｘ”が出力される。また、ＲＴＬシミュレーションのダンプファイル６にもＤフリップフロップ回路Ｒ６の名前“Ｒ６”が出力され、サンプリングした時刻Ｔ１が出力され、Ｄフリップフロップ回路Ｒ６に対応するＲＴＬレベルモデル１のレジスタｄの値不定値“Ｘ”が出力される。
【００５３】
シミュレーション時刻Ｔ２では、入力信号ａに“０”が供給される。シミュレーション時刻Ｔ３では、クロック信号ＣＬＫに“０”が供給される。シミュレーション時刻Ｔ４では、入力信号ｂに“０”が供給される。その入力と設定が行われた事により内部信号である、信号ｇが“１”になる。
【００５４】
シミュレーション時刻Ｔ５では、クロック信号ＣＬＫに“１”が供給される。シミュレーション時刻Ｔ５の時もＤフリップフロップ回路Ｒ６は、信号ｆの値不定値“Ｘ”をサンプリングするので、ゲートシミュレーションのダンプファイル７にＤフリップフロップ回路の名前“Ｒ６”が出力され、サンプリングした時刻Ｔ５が出力され、Ｄフリップフロップ回路Ｒ６が保持している値である値不定値“Ｘ”が出力される。またＲＴＬシミュレーションのダンプファイル６にもＤフリップフロップ回路Ｒ６の名前“Ｒ６”が出力され、サンプリングした時刻Ｔ５が出力され、Ｄフリップフロップ回路Ｒ６に対応するＲＴＬレベルモデル１のレジスタｄの値“０”が出力される。
【００５５】
図１２は、ゲートシミュレーションのダンプファイル７の構成を例示するテーブルである。本実施形態のゲートシミュレーションのダンプファイル７は、ゲートレベルモデル３のＤフリップフロップ回路Ｒ６の名前と、値をサンプリングしたシミュレーション時刻と、Ｄフリップフロップ回路Ｒ６の値を備えている。
【００５６】
図８に戻り、ステップＳ６において、ＲＴＬシミュレーションのダンプファイル６とゲートシミュレーションのダンプファイル７を比較する。不一致が在った場合は、処理はステップＳ７に進む。不一致が無かった場合は、処理はステップＳ１０に進む。
【００５７】
ステップＳ７において、ゲートシミュレーションのダンプファイル７のフリップフロップの値が不定状態で、且つ、ＲＴＬシミュレーションのダンプファイル６の対応する同時刻、同フリップフロップの値が不定状態でない場合に、ゲートシミュレーションのダンプファイル７およびＲＴＬシミュレーションのダンプファイル６に格納されているフリップフロップの名前（識別子）および時間を用いて、不一致ポイントファイル８を作成する。
【００５８】
図１３は、不一致ポイントファイル８の構成を例示するテーブルである。不一致ポイントファイル８は、ゲートレベルモデル３のＤフリップフロップ回路Ｒ６の名前と、値をサンプリングしたシミュレーション時刻と、Ｄフリップフロップ回路Ｒ６の値と、Ｄフリップフロップ回路Ｒ６に対応するＲＴＬレベルモデル１のレジスタｄの値とを備えている。不一致ポイントファイル８には、Ｄフリップフロップ回路Ｒ６の値が不定値“Ｘ”状態で、ＲＴＬレベルモデル１のレジスタｄの値が“０”であるシミュレーション時刻Ｔ５のみであることが示されている。
【００５９】
図８に戻り、ステップＳ８において、不一致ポイントファイル８に基づいて、シミュレーション時刻Ｔ５から最小シミュレーション時間の間だけ、強制的に検証対象のゲートレベルモデル３内のフリップフロップが保持している値を、ＲＴＬレベルモデル１内の対応する同時刻、同フリップフロップが保持している値に強制代入するために、アサーション記述であるＦｏｒｃｅファイル９を作成する。
【００６０】
ステップＳ９において、検証対象のゲートレベルモデル３に、Ｆｏｒｃｅファイル９を加えてシミュレーションを実行する。その実行結果を不定伝播の無いシミュレーション結果として、論理シミュレーション結果ファイル１０を生成する。
【００６１】
図１４は、ステップＳ９におけるゲートレベルシミュレーション工程の動作を例示するタイミングチャートである。シミュレーション開始時刻Ｔ０では、クロック信号ＣＬＫに“０”、入力信号ａに不定値“Ｘ”、入力信号ｂに不定値“Ｘ”が供給され、Ｒ６の出力ｄに不定値“Ｘ”が設定される。その入力と設定が行われた事により、内部信号である信号ｅが、不定値“Ｘ”に、信号ｆが、不定値“Ｘ”に、信号ｇが、不定値“Ｘ”に、信号ｈが、不定値“Ｘ”になり、出力信号ｃが不定値“Ｘ”になる。
【００６２】
シミュレーション時刻Ｔ１では、クロック信号ＣＬＫに“１”が供給される。シミュレーション時刻Ｔ２では、入力信号ａに“０”が供給される。シミュレーション時刻Ｔ３では、クロック信号ＣＬＫに“０”が供給される。シミュレーション時刻Ｔ４では、入力信号ｂに“０”が供給される。その入力と設定が行われた事により内部信号である、信号ｇが“１”になる。
【００６３】
シミュレーション時刻Ｔ５では、クロック信号ＣＬＫに“１”が供給され、Ｄフリップフロップ回路Ｒ６の保持している値に“０”が強制代入され、信号ｄに“０”が設定される。その入力と強制代入が行われた事により内部信号である、信号ｅが“０”に、信号ｆが“０”に、信号ｈが“１”になり、出力信号ｃが“０”になる。
【００６４】
図８に戻り、ステップＳ１０において、上述のステップＳ６での判断の結果、ＲＴＬシミュレーションのダンプファイル６とゲートシミュレーションのダンプファイル７との不一致が無かった場合は、検証対象のゲートレベルモデル３を入力としてシミュレーション実行し、不定伝播の無いシミュレーション結果を示す論理シミュレーション結果ファイル１０を作成する。
【００６５】
上述してきたように、本実施形態の論理シミュレーションシステム８５は、ゲートレベルモデルに含まれるフリップフロップが保持している値が不定で、対応するＲＴＬレベルモデルの保持している値が不定で無いことを検出する。そして、その検出したゲートレベルモデルの出力不一致フリップフロップに対し、強制的にＲＴＬレベルモデルのフリップフロップが保持している値を代入する。本実施形態の論理シミュレーションシステム８５は、このような構成・動作に基づいて、３状態（“０”、“１”、不定値“Ｘ”）の入力信号の論理計算を行っている。その結果、不定伝播の無いシミュレーション結果を作成することが可能となる。
【００６６】
［比較例］
以下に、本願発明の作用効果について、上述の特許文献に記載された技術との比較に基づいて説明を行う。上述した特許文献に記載された技術では、４状態（“０”、“１”、不定値“Ｘ”、不定値“〜Ｘ”）の入力信号の論理計算を行うのに加え、複数の入力信号が不定値“Ｘ”状態の場合、対象の信号線同士の片方を反転させて論理一致を計算する必要がある。
【００６７】
その為、一致比較を行う信号の伝播経路上の信号と論理を記憶しておき、計算時に呼び出す必要がある。したがって従来の３状態（“０”、“１”、不定値“Ｘ”）の入力信号の論理計算を行うのみの場合に比べ、記憶装置への書き込み、信号の演算一致比較回数が増える。
【００６８】
以下に、特許文献１に記載の技術の論理シミュレーション時間について説明を行う。特許文献１に記載の技術における論理シミュレーション時間は、下記（１）式に基づいて算出することができる。
“論理シミュレーション時間”
＝“論理計算ステップ数”×“１ステップ当たりの時間”…（１）
【００６９】
ここで、論理シミュレーション時間とは、不定伝播の無いシミュレーション結果を得る為に行った論理シミュレーションの総実行時間である。また、論理計算ステップ数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数である。また１ステップ当たりの時間とは、論理演算器が１命令実行するのに必要な時間である。その論理計算ステップ数は、以下の（２）式によって算出される。
“論理計算ステップ数”
＝“４状態の論理計算回数”×（“１回の論理計算当たりのステップ数”）
＋“一致比較回数”×（“１回の一致比較回数当たりのステップ数”）
＋“書き込み回数”×（“１回の書き込み回数当たりのステップ数”）…（２）
【００７０】
４状態の論理計算回数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数の内の、４状態の論理計算の為に実行された命令数である。一致比較回数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数の内の、値が不定値“Ｘ”の信号同士の論理一致を判定する為に実行された命令数である。書き込み回数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数の内の、値が不定値“Ｘ”の信号の論理情報を記憶する為に実行された命令数である。
【００７１】
ここで、本実施形態の論理シミュレーション時間について説明を行う。本実施形態では、３状態（“０”、“１”、不定値“Ｘ”）の入力信号の論理計算を行うのみで良い。なお、本実施形態では、ＲＴＬレベルモデルの論理素子も含めて論理計算を行うので、ゲートレベルモデルの論理計算を行うのみの場合に比べ、論理計算が実行される素子が増える。本実施形態の論理シミュレーション時間は、以下の式によって示される。
“論理シミュレーション時間”
＝“論理計算ステップ数”×“１ステップ当たりの時間”…（３）
“論理計算ステップ数”
＝“３状態の論理計算回数”×“１回の論理計算当たりのステップ数”…（４）
【００７２】
３状態の論理計算回数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数の内の、３状態の論理計算の為に実行された命令数である。
“３状態の論理計算回数”
＝（“イベントドリブンで実行されるゲートレベルモデルの論理計算回数”
×“シミュレーション実行回数”）
＋“イベントドリブンで実行されるＲＴＬレベルモデルの論理計算回数”…（５）
【００７３】
以下に、上述の式に基づいた論理シミュレーション時間の算出について説明を行う。以下では、図２（または図７）のゲートレベルモデルに対応した論理シミュレーションに要する時間について説明を行う。ここで、
シミュレーション開始から出力信号Ｃが”０”になるまで、１回の論理計算当たりのステップ数、１回の一致比較回数当たりのステップ数、１回の書き込み回数当たりのステップ数、および、１ステップ当たりの時間が、下記のようになるものとする。
１回の論理計算当たりのステップ数＝１
１回の一致比較回数当たりのステップ数＝１
１回の書き込み回数当たりのステップ数＝１
１ステップ当たりの時間＝１０［ｎｓ］
４状態、３状態両方の論理計算はともに、２×２［ｂｉｔ］の計算なので１回の論理計算当たりのステップ数は同じになる。
【００７４】
図２のゲートレベルモデルを、特許文献１に記載の技術でシミュレーションした時は、最初に入力信号ａと入力信号ｂの値を不定値“Ｘ”にし、クロック信号ＣＬＫを“０”にし、Ｄフリップフロップ回路Ｒ６の保持している値を不定値“Ｘ”にし、信号ｄの値を不定値“Ｘ”にする為に、論理計算を５回行う。
【００７５】
このとき、入力信号ａと入力信号ｂと信号ｄが供給されているＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＯＲ回路Ｒ５は、入力が変化している。各入力が変化しているので、ＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＯＲ回路Ｒ５の出力である出力信号ｃと信号ｅと信号ｆと信号ｇを更新する為に、４回論理計算をする。
【００７６】
また、信号ｇが変化したので、信号ｇが供給されているＡＮＤ回路Ｒ１で論理計算を１回する。加えて、出力が不定値“Ｘ”で複数の入力が不定値“Ｘ”のＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＯＲ回路Ｒ５で、片方の入力ともう一方の入力の論理が反転関係である事を検出する為に、１１回一致比較を行う。
【００７７】
また、一致比較を行う為に、不定値“Ｘ”状態の信号、出力信号ｃと信号ｅと信号ｆと信号ｇと信号ｈの論理を追加情報として記憶装置に３７回に分けて書き込む。
【００７８】
次に入力信号ａの値を“０”にする論理計算を１回行う。その後、入力信号ａが変化して影響を受けるＯＲ回路Ｒ５で論理計算を１回行う。そして、信号ｆの論理を追加情報として記憶装置に１３回に分けて書き込む。
【００７９】
次に入力信号ｂの値を“０”にする論理計算を１回行う。その後、入力信号ｂが変化して影響を受けるＡＮＤ回路Ｒ１とＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ３とＮＯＴ回路Ｒ４とＯＲ回路Ｒ５で論理計算を６回行う。また、ＡＮＤ回路Ｒ３で一致比較を３回行う。そして、出力信号ｃと信号ｅと信号ｆと信号ｇと信号ｈの論理を追加情報として記憶装置に１０回に分けて書き込む。
【００８０】
次にクロック信号ＣＬＫの値を“１”にする論理計算を１回行う。その後、クロック信号ＣＬＫが変化して影響を受けるＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＮＯＴ回路Ｒ４とＤフリップフロップ回路Ｒ６で論理計算を５回行う。そして、出力信号ｃと信号ｈの論理を追加情報として記憶装置に２回に分けて書き込む。
【００８１】
上述のように、図２のゲートレベルモデルをシミュレーションした時は、論理計算が２５回、一致比較が１４回、書き込みが６２回行われる。図２のゲートレベルモデルを特許文献１に記載の技術でシミュレーションした時の論理計算ステップ数は、（２）式から、１０１ステップになる。
１０１（論理計算ステップ数）
＝２５（４状態の論理計算回数）×１（１回の論理計算当たりのステップ数）
＋１４（一致比較回数）×１（１回の一致比較回数当たりのステップ数）
＋６２（書き込み回数）×１（１回の書き込み回数当たりのステップ数）
【００８２】
したがって、特許文献１に記載の技術で必要な計算時間は、上述の（１）式から、
１０１０＝１０１×１０［ｎｓ］
となる。
【００８３】
本実施形態の論理シミュレーションシステム８５において、合成制約情報ファイル２とゲートレベルモデル３とに基づいてシミュレーションする時は、２回シミュレーションを行う。１回目のシミュレーションでは、最初に入力信号ａと入力信号ｂの値を不定値“Ｘ”にし、クロック信号ＣＬＫを“０”にし、Ｄフリップフロップ回路Ｒ６の保持している値を不定値“Ｘ”にし、信号ｄの値を不定値“Ｘ”にする為に論理計算を５回行う。
【００８４】
加えてＲＴＬレベルモデルのレジスタｄの値を不定値“Ｘ”にする為に論理計算を１回行う。次に入力信号ａと入力信号ｂと信号ｄが供給されているＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＯＲ回路Ｒ５は、入力が変化したので、ＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＯＲ回路Ｒ５の出力である出力信号ｃと信号ｅと信号ｆと信号ｇを更新する為に４回論理計算をする
【００８５】
また、信号ｇが変化したので、信号ｇが供給されているＡＮＤ回路Ｒ１で論理計算を１回する。加えてＲＴＬレベルモデルのａｓｓｉｇｎ宣言された信号Ｙ、ａｓｓｉｇｎ宣言された信号ｃで論理計算を２回行う。
【００８６】
次に、入力信号ａの値を“０”にする論理計算を１回行う。その後、入力信号ａが変化して影響を受けるＯＲ回路Ｒ５で論理計算を１回行う。加えてＲＴＬレベルモデルのａｓｓｉｇｎ宣言された信号Ｙで論理計算を１回行う。
【００８７】
次に、入力信号ｂの値を“０”にする論理計算を１回行う。その後、入力信号ｂが変化して影響を受けるＡＮＤ回路Ｒ１とＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ３とＮＯＴ回路Ｒ４で論理計算を４回行う。加えてＲＴＬレベルモデルのａｓｓｉｇｎ宣言された信号Ｙ、ａｓｓｉｇｎ宣言された信号ｃで論理計算を２回行う。
【００８８】
次に、クロック信号ＣＬＫの値を“１”にする論理計算を１回行う。その後、クロック信号ＣＬＫが変化して影響を受けるＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＮＯＴ回路Ｒ４とＤフリップフロップ回路Ｒ６で論理計算を５回行う。加えてＲＴＬレベルモデルのレジスタｄ、ａｓｓｉｇｎ宣言された信号Ｙ、ａｓｓｉｇｎ宣言された信号ｃで論理計算を３回行う。また、Ｄフリップフロップ回路Ｒ６の保持している値と、ＲＴＬレベルモデルのレジスタｄの値をダンプする論理計算を１回行う。
【００８９】
２回目のシミュレーションでは、最初に入力信号ａと入力信号ｂの値を不定値“Ｘ”にし、クロック信号ＣＬＫを“０”にし、Ｄフリップフロップ回路Ｒ６の保持している値を不定値“Ｘ”にし、信号ｄの値を不定値“Ｘ”にする論理計算を５回行う。
【００９０】
このとき、入力信号ａと入力信号ｂと信号ｄが供給されているＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＯＲ回路Ｒ５は、入力が変化している。各入力が変化したので、ＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＯＲ回路Ｒ５の出力である出力信号ｃと信号ｅと信号ｆと信号ｇを更新する為に、４回論理計算をする。また、信号ｇが変化したので、信号ｇが供給されているＡＮＤ回路Ｒ１で論理計算を１回する。
【００９１】
次に、入力信号ａの値を“０”にする論理計算を１回行う。その後、入力信号ａが変化して影響を受けるＯＲ回路Ｒ５で論理計算を１回行う。次に、入力信号ｂの値を“０”にする論理計算を１回行う。その後、入力信号ｂが変化して影響を受けるＡＮＤ回路Ｒ１とＮＯＴ回路Ｒ２とＡＮＤ回路Ｒ３とＮＯＴ回路Ｒ４で論理計算を４回行う。
【００９２】
次に、クロック信号ＣＬＫの値を“１”にする論理計算を１回行う。その後、クロック信号ＣＬＫが変化して影響を受けるＡＮＤ回路Ｒ１とＡＮＤ回路Ｒ３とＮＯＴ回路Ｒ４とＤフリップフロップ回路Ｒ６で論理計算を５回行う。加えてＲ６の保持している値に“０”を強制代入する論理計算を１回と強制代入を停止する論理計算を１回行う。
【００９３】
図７のゲートレベルモデルと、図７のゲートレベルモデルと論理等価のＲＴＬレベルモデルを、本実施形態の論理シミュレーションシステム８５でシミュレーションした時は、１回目のシミュレーション中にイベントドリブンで実行されるゲートレベルモデルの論理計算回数は２３回である。２回目のシミュレーション中にイベントドリブンで実行されるゲートレベルモデルの論理計算回数も２３回である。１回目と２回目のシミュレーション中にイベントドリブンで実行されるＲＴＬレベルモデルの論理計算回数は１２回である。
【００９４】
したがって、本実施形態のシミュレーションした時のステップ数は、（４）式、（５）式から、５８ステップになる。
５８（論理計算ステップ数）
＝５８（３状態の論理計算回数）×１（１回の論理計算当たりのステップ数）
５８（３状態の論理計算回数）
＝（２３（イベントドリブンで実行されるゲートレベルモデルの論理計算回数
×２（シミュレーション実行回数））
＋１２（イベントドリブンで実行されるＲＴＬレベルモデルの論理計算回数）
【００９５】
よって、本実施形態で必要な計算時間は、（３）式から、
５８０＝５８×１０［ｎｓ］
となる。この比較例に示されるように、本実施形態の論理シミュレーションシステム８５に要するシミュレーション時間は、特許文献１に記載の技術と比較して、
５７［％］≒（５８０÷１０１０）
程度の時間短縮になる。
【００９６】
上述した式からわかる通り、不定値“Ｘ”状態が供給されている論理素子がある場合、本実施形態の論理シミュレーションシステム８５は、論理計算の回数が少なくなって、論理計算に掛かる時間を減らすことができる。その為、不定伝播の無い論理シミュレーションに必要な時間を削減する効果がある。
【００９７】
［第２実施形態］
以下に、本願発明の第２実施形態について説明を行う。その第２実施形態は、ＲＴＬレベルモデル１とゲートレベルモデル３とのフリップフロップの値を比較する処理と、ゲートレベルモデルのフリップフロップが保持している値を、対応するＲＴＬレベルモデルのフリップフロップが保持している値と強制的に同じにする処理とを、同じシミュレーションで行う。その為、１回の論理計算のみのシミュレーションで、不定伝播の無いシミュレーション結果を得ることが可能となっている。それによって、シミュレーション時間を削減する事が出来る。
【００９８】
図１５は、第２実施形態のシミュレーションツール３８の構成を例示するブロック図である。第２実施形態のシミュレーションツール３８は、ＲＴＬシミュレーション部４２と、ゲートシミュレーション部４３と、アサーション記述生成部５１と、フリップフロップ値比較部５２と、Ｆｏｒｃｅ処理部５３とを備えている。ＲＴＬシミュレーション部４２とゲートシミュレーション部４３は、第１実施形態と同様の構成・動作を備えている。
【００９９】
アサーション記述生成部５１は、フリップフロップが保持している値をチェックするためのアサーション記述を生成する機能とフリップフロップ値を代入するためのアサーション記述を生成する機能を備えている。そのアサーション記述生成部５１には、ＲＴＬレベルモデルとゲートレベルモデルのマッチング情報であるマッチング情報ファイル４が供給される。
【０１００】
上述したようにアサーション記述生成部５１には、フリップフロップが保持している値をチェックするためのアサーション記述を生成する機能とフリップフロップ値を代入するためのアサーション記述を生成する機能が含まれている。
【０１０１】
フリップフロップが保持している値をチェックするアサーション記述を生成する機能は、マッチング情報ファイル４に基づいて、検証対象のＲＴＬレベルモデル１と検証対象のゲートレベルモデル３のフリップフロップの値を、ゲートレベルモデル３のフリップフロップが値をサンプリングするタイミングでチェックするアサーション記述を生成する。フリップフロップ値比較部５２は、そのアサーション記述に基づいて、ゲートレベルモデル、ＲＴＬレベルモデルのフリップフロップの値の比較を実行する。
【０１０２】
フリップフロップ値を代入するアサーション記述を生成する機能は、ゲートレベルモデル、ＲＴＬレベルモデルのフリップフロップの値を比較した比較結果に基づいて、検証対象のゲートレベルモデル３のフリップフロップが不定状態で、対応する検証対象のＲＴＬレベルモデル１のフリップフロップが不定状態でない場合を特定するためのアサーション記述を生成する。その場合、Ｆｏｒｃｅ処理部５３は、検証対象のゲートレベルモデル３のフリップフロップに、対応する検証対象のＲＴＬレベルモデル１のフリップフロップの値を強制代入するＦｏｒｃｅ処理を実行する。
【０１０３】
図１６は、本発明の第２実施形態の論理シミュレーション方法を例示するフローチャートである。ステップＳ１１において、第２実施形態のシミュレーションツール３８は、検証対象のＲＴＬレベルモデル１と検証対象のゲートレベルモデル３とＲＴＬレベルモデルとゲートレベルモデルのマッチング情報であるマッチング情報ファイル４を入力として受け取る。シミュレーションツール３８は、ステップＳ２の形式検証工程の時に得られるマッチング情報ファイル４を、アサーション記述生成部５１に供給する。
【０１０４】
ステップＳ１２において、検証対象のゲートレベルモデル３のフリップフロップが入力信号の値をサンプリングした直後に、それぞれのフリップフロップが保持している値をチェックするアサーション記述を生成する。
【０１０５】
ステップＳ１３において、ゲートレベルモデルのフリップフロップが保持している値が不定で、対応するＲＴＬレベルモデルのフリップフロップが保持している値が不定で無い場合を特定するアサーション記述を生成する。
【０１０６】
ステップＳ４において、ＲＴＬシミュレーションに、検証対象のＲＴＬレベルモデル１を供給し、そのシミュレーション結果をフリップフロップ値比較部５２に渡す。ステップＳ５において、ゲートシミュレーションに、検証対象のゲートレベルモデル３を供給し、そのシミュレーション結果をフリップフロップ値比較部５２に渡す。
【０１０７】
ステップＳ１４において、フリップフロップ値比較部５２は、ゲート、ＲＴＬのフリップフロップの値比較処理を実行する。その比較結果において、検証対象のゲートレベルモデル３のフリップフロップが不定状態で、対応する検証対象のＲＴＬレベルモデル１のフリップフロップが不定状態でない場合、処理はステップＳ１５に進む。このとき、不一致が無かった場合は、処理はステップＳにもどり、その後処理は終了する。
【０１０８】
ステップＳ１５において、Ｆｏｒｃｅ処理を実行する。Ｆｏｒｃｅ処理部５３は、その最小シミュレーション時間の間だけ、強制的にゲートレベルモデルのフリップフロップが保持している値を、対応するＲＴＬレベルモデルのフリップフロップが保持している値と同じにする。
【０１０９】
［比較例］
以下に、第２実施形態の比較例について説明を行う。本実施形態で例示したゲートレベルモデルとＲＴＬレベルモデルを、シミュレーションした時のステップ数は上述の（４）式、（５）式から、３５ステップになる。
３５（論理計算ステップ数）＝
３５（３状態の論理計算回数）×１（１回の論理計算当たりのステップ数）
３５（３状態の論理計算回数）＝
（２３（イベントドリブンで実行されるゲートレベルモデルの論理計算回数
×１（シミュレーション実行回数））
＋１２（イベントドリブンで実行されるＲＴＬレベルモデルの論理計算回数）
【０１１０】
よって、第２実施形態で必要な計算時間は、上述の（３）式から、
３５０＝３５×１０  ［ｎｓ］
となる。このように、第２実施形態の論理シミュレーションシステム８５は、必要な計算時間が従来と比較して
３５［％］  ≒  （３５０÷１０１０）
程度になる。
【０１１１】
以上、本願発明の実施の形態を具体的に説明した。本願発明は上述の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。また、上述の複数の実施形態は、その構成・動作に矛盾が生じない範囲において組み合わせて実施することが可能である。
【符号の説明】
【０１１２】
１…ＲＴＬレベルモデル
２…合成制約情報ファイル
３…ゲートレベルモデル
４…マッチング情報ファイル
５…ダンプポイント情報ファイル
６…ＲＴＬシミュレーションのダンプファイル
７…ゲートシミュレーションのダンプファイル
８…不一致ポイントファイル
９…Ｆｏｒｃｅファイル
１０…論理シミュレーション結果ファイル
１１…シミュレーション部
２１…ゲート、ＲＴＬのフリップフロップの値比較
２２…Ｆｏｒｃｅ処理
２３…シミュレーション部
３１…演算処理部
３２…情報記憶部
３３…バス
３４…論理シミュレーションプログラム
３５…ファイル格納部
３６…論理合成ツール
３７…形式検証ツール
３８…シミュレーションツール
４１…ダンプ情報生成部
４２…ＲＴＬシミュレーション部
４３…ゲートシミュレーション部
４４…比較部
４５…不一致ポイント生成部
４６…Ｆｏｒｃｅファイル生成部
５１…アサーション記述生成部
５２…フリップフロップ値比較部
５３…Ｆｏｒｃｅ処理部
８０…サーバ
８１…記録媒体
８２…ネットワーク
８３…コンピュータ装置
８５…論理シミュレーションシステム
８６…コンピュータ装置本体
８７…入力装置
８８…出力装置
ａ…入力信号
ｂ…入力信号
ｃ…出力信号
ｄ…信号
ｅ…信号
ｆ…信号
ｇ…信号
ｈ…信号
ＣＬＫ…クロック信号
Ｒ…ゲートレベルモデルの回路
Ｒ１…ＡＮＤ回路
Ｒ２…ＮＯＴ回路
Ｒ３…ＡＮＤ回路
Ｒ４…ＮＯＴ回路
Ｒ５…ＯＲ回路
Ｒ６…Ｄフリップフロップ回路
【図１】
2012160145.tif 000003
【図２】
2012160145.tif 000004
【図３】
2012160145.tif 000005
【図４】
2012160145.tif 000006
【図５】
2012160145.tif 000007
【図６】
2012160145.tif 000008
【図７】
2012160145.tif 000009
【図８】
2012160145.tif 000010
【図９】
2012160145.tif 000011
【図１０】
2012160145.tif 000012
【図１１】
2012160145.tif 000013
【図１２】
2012160145.tif 000014
【図１３】
2012160145.tif 000015
【図１４】
2012160145.tif 000016
【図１５】
2012160145.tif 000017
【図１６】
2012160145.tif 000018