説明

論理シミュレーション方法および論理シミュレーション装置

【課題】論理シミュレーションに要する時間を削減する。
【解決手段】RTL記述の論理シミュレーション結果とゲートレベルの論理シミュレーション結果とが一致しているか否かを判定する。そして、判定結果が不一致であった場合に、RTL記述の論理シミュレーション結果情報とゲートレベルの論理シミュレーション結果情報の不一致箇所を抽出する。抽出した不一致ポイントに基づき、ゲートレベルの論理シミュレーション結果情報をRTL記述の論理シミュレーション結果情報に強制代入記述を作成する。その強制代入記述を含むForceファイルに基づき再度ゲートレベルの論理シミュレーションを実施する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、論理シミュレーション方法および論理シミュレーション装置に関し、特に、論理回路の動作を検証する論理シミュレーション方法および論理シミュレーション装置に関する。
【背景技術】
【0002】
LSIを新規に開発する場合、機能設計、論理設計、レイアウト設計などの設計工程を経た後、製造工程に移行して製造される。LSIの設計に誤りがあったときには、その設計の誤りを修正するために、多大な時間と手間を費やすことになる。設計の誤りを早い段階で発見するため、設計対象(設計記述)が正しいかどうかを検証する「設計検証」と呼ばれる処理が必要となる。その設計検証のうち、論理設計レベルで検証を行うものを論理検証と呼んでいる。論理検証を実現する技術として、論理シミュレーション技術が知られている。論理シミュレーション技術は、論理回路の動作をシミュレーションして期待値と同じかどうか検証する技術である。
【0003】
LSIの大規模化や多機能化、また、論理圧縮の高度化などが進むにつれて、開発段階におけるLSIの論理シミュレーションの重要性が高まってきている。そのような大規模なLSIの論理シミュレーションを行う時に、不定伝播が多く発生するという不具合が発生することがあった。また、テストパターンの効率も悪くなり、不定値の検出率も低くなってしまうという不具合が発生することがあった。それに伴い、効率の良い検出率の高いテストパターンの作成と、不定伝播を起こさないシミュレーション技術の要求が高まってきた。そのような要求に対応して、ゲートシミュレーション結果の不定値を確定させる技術が知られている(例えば、特許文献1、2参照)。
【0004】
特許文献1(特開2008−158652号公報)には、RTLモデルシミュレーションと、ゲートモデルシミュレーション結果の不一致を取り除く事ができるゲートモデルシミュレーションに関する技術が記載されている。
【0005】
図1は、特許文献1に記載された検証対象のRTLレベルモデルを示した図である。特許文献1に記載の技術では、RTLレベルモデルのようなRTL記述を論理シミュレーションして論理シミュレーション結果(文献では時刻1での信号c、dの値)を求めている。RTL記述の論理シミュレーション結果から、RTL記述の時刻1での信号c、dの値は、どちらも“0”となる。次に、論理合成ツールを用いて、図1のRTL記述を論理合成してゲートレベルモデルを作成する。そして、特許文献1に記載の技術に係る論理シミュレーション方法を用いて、当該ゲートレベルモデルを論理シミュレーションして論理シミュレーション結果(ここでは時刻1での信号c、dの値)を求めている。
【0006】
ここで、特許文献1に記載の技術に係る論理シミュレーション方法を、当該ゲートレベルモデルに適用した場合に、当該ゲートレベルモデルがどのような動作をするか(即ちどのような論理シミュレーション結果が得られるか)を、図2の当該ゲートレベルモデルの回路図を用いて説明する。
【0007】
図2は、特許文献1に記載の技術におけるRTLレベルモデルを論理合成して得られたゲートレベルモデルを示した図である。図2のゲートレベルモデルの回路Rは、AND回路R1、R3と、NOT回路R2、R4と、OR回路R5と、Dフリップフロップ回路R6とで構成されている。AND回路R1は、一方の入力部にDフリップフロップ回路R6の出力信号dが供給され、他方の入力部にNOT回路R2を介して外部からの信号bが供給されている。また、Dフリップフロップ回路R6は、出力部から信号cを出力する。
【0008】
AND回路R3は、一方の入力部にDフリップフロップ回路R6の出力信号dが供給され、他方の入力部にNOT回路R4を介してAND回路R1の出力信号cが供給されている。また、AND回路R3は、出力部から信号eを出力する。OR回路R5は、一方の入力部に外部からの信号aが供給され、他方の入力部にAND回路R3の出力信号eが供給されている。また、OR回路R5は、出力部から信号fを出力する。
【0009】
Dフリップフロップ回路R6は、入力部DにOR回路R5の出力信号fが供給され、入力部Tにクロック信号CLKが供給されている。また、Dフリップフロップ回路R6は、入力部Dに供給された入力信号fを、入力部Tに供給されたクロック信号CLKに応じて遅延させて、出力部Qから信号dとして出力する。
図2の信号a、bおよびクロック信号CLKの入力条件は、時刻0の初期状態では、各信号a、bの値はそれぞれ“0”であり、Dフロップフロップ回路R6には、時刻1でクロック信号CLKが供給されるものとする。また、以下に示す式中の=は等号、∧は論理積、+は論理和、〜は値の反転を示す記号であり、Xは、〜X=Xの関係を満たす不定値であり、0、1は、〜1=0、〜0=1を満たす真理値である。
【0010】
図2のゲートレベルモデルの回路Rでは、まず時刻0では、クロック信号CLKが供給されていないため、信号dは不定値“X”となる。
次に信号cの値は、下記の計算により不定値“X”になる。
c=d∧(〜b)
=X∧(〜0)(∵時刻0でb=0)
=X∧1 (∵〜0=1)
=X (∵式1)。
【0011】
次に信号eの値は、下記の計算により“0”になる。
e=d∧(〜c)
=X∧(“〜X”) (∵上記の計算結果c=X)
=0 (∵式2)。
【0012】
次に信号fの値は、下記の計算により“0”になる。
f=a+e
=0+0 (∵時刻0でa=0且つ上記の計算結果e=0)
=0 (∵式3)。
【0013】
次に時刻1でクロック信号CLKが供給されると、信号dの値は、d=f=0より“0”になる。
従って時刻1以降での信号cの値は、下記の計算により“0”になる。
c=d∧(〜b)
=0∧(〜0) (∵時刻1でb=0)
=0∧1 (∵〜0=1)
=0 (∵式4)。
【0014】
以上の様に、時刻1での信号c、dの値は、どちらも“0”となる。そして次に、上記で求めたRTL記述の論理シミュレーション結果(時刻1での信号c、dの値)とゲートレベルモデルの論理シミュレーション結果(時刻1での信号c、dの値)とを比較し、一致すれば、ゲートレベルモデルはRTL記述と等価なものと判定され、一致しなければ、ゲートレベルモデルはRTL記述と等価なものでないと判定される。
【0015】
ここでは、RTL記述の論理シミュレーション結果は、時刻1でc=d=0であり、ゲートレベルモデルの論理シミュレーション結果も、時刻1でc=d=0であり、両者は一致するので、ゲートレベルモデルはRTL記述と等価なものと判定される。
【0016】
以上の様に、特許文献1に開示された論理シミュレーション方法によれば、論理回路が不定値を出力するフリップフロップ回路を1つ含む場合に、AND回路およびOR回路の演算でその不定値が適切に扱われるので、不定値伝播に関する、RTL記述とゲートレベルモデルとの論理シミュレーション結果の不一致を取り除く事ができる。
【0017】
また、特許文献2(特開2009−070274号公報)には、期待値を出力するための入力パラメータの組み合わせを簡単かつ効率的に求めることにより、検証作業の効率化を図るための技術が開示されている。その特許文献2に記載の検証支援装置では、テストパターン生成部により、テストパターンを生成してシミュレーションを実行している。また、期待値判定部により期待値判定を行っている。このとき、未出力の期待値がある場合には、関連度表に基づいて変更後のテストパラメータTP、tpを生成し、シミュレーションを実行して期待値判定をおこなっている。期待値どおりの出力値がある場合には、“期待値を出力する入力パラメータP−iの組み合わせ”を出力している。そして、テストパラメータ生成部に与えることにより、テストパラメータTPを生成する。このテストパラメータTPをRTLシミュレータに与えることにより、期待値どおりの値を出力するシミュレーション結果を得ている。
【先行技術文献】
【特許文献】
【0018】
【特許文献1】特開2008−158652号公報
【特許文献2】特開2009−070274号公報
【発明の概要】
【発明が解決しようとする課題】
【0019】
特許文献1に記載の技術では、上述したように、不定値、その不定値の反転信号、真理値“0”、真理値“1”の4個の数値間のブール代数関係を取り扱い、論理シミュレーションを行っている。そして、RTL記述とネットリストとの論理シミュレーション結果の不一致を取り除き、不定値伝播をなくしている。
【0020】
従って、通常論理シミュレーションでは、記憶する必要がある信号線の状態は、“0”、“1”、不定値“X”の3状態であるが、特許文献1に記載の技術では3状態に加えて、不定値“X”状態の信号の論理を記憶する必要がある。つまり、特許文献1に記載の技術では“0”、“1”、不定値“X”、不定値“〜X”の4状態の論理計算を行う必要がある。さらに、計算対象の複数の信号線の状態が不定値“X”の時は、対象の信号線同士の片方を反転させて論理一致を計算する必要がある。そのため通常の論理シミュレーションに比べて、大幅に計算時間が増加するという問題があった。また、特許文献2に記載の技術も、特許文献1に記載の技術と同様に、通常の論理シミュレーションに比べて、大幅に計算時間が増加するという問題があった。
【課題を解決するための手段】
【0021】
以下に、[発明を実施するための形態]で使用される番号を用いて、[課題を解決するための手段]を説明する。これらの番号は、[特許請求の範囲]の記載と[発明を実施するための形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
【0022】
上記の課題を解決するために、RTL記述の論理シミュレーション結果とゲートレベルの論理シミュレーション結果とが一致しているか否かを判定する。そして、判定結果が不一致であった場合に、RTL記述の論理シミュレーション結果情報とゲートレベルの論理シミュレーション結果情報の不一致箇所を抽出する。抽出した不一致ポイントに基づき、ゲートレベルの論理シミュレーション結果情報をRTL記述の論理シミュレーション結果情報に強制代入記述を作成する。その強制代入記述を含むForceファイルに基づき再度ゲートレベルの論理シミュレーションを実施する。
【発明の効果】
【0023】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、不定伝播の無い論理シミュレーションに必要な時間を削減するという効果がある。
具体的には、検出したゲートレベルモデルの出力不一致フリップフロップに対し、強制的にRTLレベルモデルのフリップフロップが保持している値を代入し、3状態(“0”、”1”、不定値“X”)の入力信号の論理計算を行う論理シミュレーションを行っている。そのため、不定値“X“状態が供給されている論理素子がある場合、従来技術に比べ論理計算の回数が少なくなり、最終的な論理計算に掛かる時間を削減することが可能となる。
【図面の簡単な説明】
【0024】
【図1】図1は、検証対象のRTLレベルモデルを示した図である。
【図2】図2は、RTLレベルモデルを論理合成して得られたゲートレベルモデルを示した図である。
【図3】図3は、本実施形態の論理シミュレーションシステム85の構成を例示するシステム構成図である。
【図4】図4は、本実施形態のコンピュータ装置83の構成を例示するブロック図である。
【図5】図5は、本実施形態のシミュレーションツール38の構成を例示するブロック図である。
【図6】図6は、本実施形態のファイル格納部35の構成を例示するブロック図である。
【図7】図7は、本実施形態におけるシミュレーション対象のゲートレベルモデルの回路の構成を例示する回路図である。
【図8】図8は、本実施形態の論理シミュレーションシステム85の動作を例示するフローチャートである。
【図9】図9は、RTLシミュレーション工程の動作を例示するタイミングチャートである。
【図10】図10は、RTLシミュレーションのダンプファイル6の構成を例示するテーブルである。
【図11】図11は、ゲートシミュレーション工程の動作を例示するタイミングチャートである。
【図12】図12は、ゲートシミュレーションのダンプファイル7の構成を例示するテーブルである。
【図13】図13は、不一致ポイントファイル8の構成を例示するテーブルである。
【図14】図14は、ゲートレベルシミュレーション工程の動作を例示するタイミングチャートである。
【図15】図15は、第2実施形態のシミュレーションツール38の構成を例示するブロック図である。
【図16】図16は、第2実施形態の論理シミュレーション方法を例示するフローチャートである。
【発明を実施するための形態】
【0025】
以下、本発明の実施の形態を図面に基づいて説明する。なお、実施の形態を説明するための図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0026】
図3は、本本実施形態の論理シミュレーションシステム85の構成を例示するシステム構成図である。論理シミュレーションシステム85は、サーバ80と記録媒体81とネットワーク82とコンピュータ装置83を備えている。また、コンピュータ装置83は記憶装置を備えている。
【0027】
記録媒体81は、論理シミュレーションプログラムを格納する。その記録媒体81は、サーバ80に保持されている。サーバ80は、インターネットなどのネットワーク82を介して、エンジニアリングワークステーション等のコンピュータ装置83に接続される。記録媒体81に格納されている論理シミュレーションプログラムは、ネットワーク82を介してコンピュータ装置83にダウンロードされる。
【0028】
ダウンロードされた論理シミュレーションプログラムは、コンピュータ装置83のローカルなハードディスク、あるいは、メモリなどの記憶装置にストアされる。論理シミュレーションプログラムは、コンピュータ装置83の記憶装置に格納されているRTLレベルモデル、ゲートレベルモデルの論理接続情報を元に、コンピュータ装置83に供給されたRTLレベルモデルとゲートレベルモデルのマッチング情報にしたがって、論理計算処理を行う。また、論理シミュレーションプログラムは、中間データとなるダンプポイント情報を参照して、最終処理結果となる不定伝播の無いシミュレーション結果を生成する。生成された不定伝播の無いシミュレーション結果は、コンピュータ装置83の記憶装置に保持される。なお、本実施形態の論理シミュレーションシステム85において、コンピュータ装置83に外部記憶装置を接続し、その外部記憶装置に各ファイルを格納する構成であってもよい。
【0029】
図4は、ダウンロードされた論理シミュレーションプログラムを保持しているコンピュータ装置83の構成を例示するブロック図である。図4に示されているように、コンピュータ装置83は、コンピュータ装置本体86と、入力装置87と、出力装置88とを備えている。
【0030】
コンピュータ装置本体86は、コンピュータプログラムに示される手順に従って情報処理を高速に行う。本実施形態のコンピュータ装置本体86は、論理しミューレータとしての機能を提供する。コンピュータ装置本体86は、入力、記憶、演算、制御および出力の機能を備えている。入力装置87は、マウスやキーボードなどに代表されるマンマシンインターフェースである。入力装置87は、ユーザの操作に応答して、コンピュータ装置本体86へデータを入力する。出力装置88は、液晶ディスプレイやプリンターなどに代表されるマンマシンインターフェースである。出力装置88は、コンピュータ装置本体86の処理結果を、ユーザに認識できる形式で出力する。上述のコンピュータ装置本体86は、演算処理部31と、情報記憶部32とを備え、それらは、バス33を介して接続されている。
【0031】
演算処理部31は、コンピュータ装置本体86に備えられた各種装置の制御やデータ処理を実行する。演算処理部31は、コンピュータ装置本体86が入力装置87を介して受け取ったデータを解釈して演算し、その演算結果を出力装置88などで出力する。情報記憶部32は、RAMやハードディスクなどに代表されるデータを記憶するための装置である。コンピュータ装置本体86は、外部ネットワークを介して他の機器とデータ通信するための通信処理装置を備えていてもよい。
【0032】
上述の情報記憶部32は、論理シミュレーションプログラム34と、ファイル格納部35とを保持している。論理シミュレーションプログラム34は、半導体集積回路の設計を、コンピュータシステムを用いて自動的に行うためのソフトウェアである。ファイル格納部35は、半導体集積回路を設計するために必要な情報を保持している。
【0033】
論理シミュレーションプログラム34には、コンピュータ装置83を、論理合成ツール36として機能させるための手順が示されている。また、論理シミュレーションプログラム34には、コンピュータ装置83を、形式検証ツール37として機能させるための手順が示されている。さらに、論理シミュレーションプログラム34には、コンピュータ装置83を、シミュレーションツール38として機能させるための手順が示されている。
【0034】
図5は、本実施形態のシミュレーションツール38の構成を例示するブロック図である。シミュレーションツール38は、ダンプ情報生成部41と、RTLシミュレーション部42と、ゲートシミュレーション部43と、比較部44と、不一致ポイント生成部45と、Forceファイル生成部46とを備えている。
【0035】
図6は、本実施形態のファイル格納部35の構成を例示するブロック図である。ファイル格納部35は、RTLレベルモデル1と、合成制約情報ファイル2と、ゲートレベルモデル3と、マッチング情報ファイル4と、ダンプポイント情報ファイル5と、RTLシミュレーションのダンプファイル6と、ゲートシミュレーションのダンプファイル7と、不一致ポイントファイル8と、Forceファイル9と、論理シミュレーション結果ファイル10とを保持している。
【0036】
本実施形態の論理シミュレーションシステム85において、コンピュータ装置83が論理合成ツール36として機能するとき、その論理合成ツール36は、上述のファイル格納部35から、検証対象のRTLレベルモデル1と、合成制約情報ファイル2を入力として受け取る。その論理合成ツール36は、検証対象のRTLレベルモデル1と、合成制約情報ファイル2に基づいて、検証対象のゲートレベルモデル3を論理合成する。また、コンピュータ装置83が形式検証ツール37として機能するとき、その形式検証ツール37は、検証対象のRTLレベルモデル1と、検証対象のゲートレベルモデル3とを、入力して受け取る。その形式検証ツール37は、受け取った検証対象のRTLレベルモデル1と、検証対象のゲートレベルモデル3とに基づいて、各々のフリップフロップの対応を表したマッチング情報ファイル4を作成する。さらに、コンピュータ装置83がシミュレーションツール38として機能するとき、そのシミュレーションツール38は、マッチング情報ファイル4を入力として受け取り、そのマッチング情報ファイル4に基づいて論理シミュレーション結果ファイル10を出力する。
【0037】
本実施形態の論理シミュレーションシステム85において、コンピュータ装置83がシミュレーションツール38として機能するとき、そのシミュレーションツール38のダンプ情報生成部41は、マッチング情報ファイル4を入力として受け取り、そのマッチング情報ファイル4に基づいてダンプポイント情報ファイル5を出力する。そのシミュレーションツール38のRTLシミュレーション部42は、ダンプポイント情報ファイル5を入力として受け取り、検証対象のRTLレベルモデル1のフリップフロップの値をダンプしたRTLシミュレーションのダンプファイル6を出力する。
【0038】
シミュレーションツール38のゲートシミュレーション部43は、ダンプポイント情報ファイル5を入力として受け取り、検証対象のゲートレベルモデル3のフリップフロップの値をダンプしたゲートシミュレーションのダンプファイル7を出力する。そのシミュレーションツール38の比較部44は、RTLシミュレーションのダンプファイル6とゲートシミュレーションのダンプファイル7を入力として受け取り、不一致が在るか無いかの判断を行う。
【0039】
シミュレーションツール38の不一致ポイント生成部45は、不一致が在る場合、不一致ポイントファイル8を出力する。そのシミュレーションツール38のForceファイル生成部46は、不一致ポイントファイル8を入力として受け取り、検証対象のゲートレベルモデル3のフリップフロップに、値を強制代入するアサーション記述のForceファイル9を出力する。上述のゲートシミュレーション部43は、ゲートレベルモデル3と、Forceファイル9を入力として受け取り、論理シミュレーション結果ファイル10を出力する。また、そのゲートシミュレーション部43は、RTLシミュレーションのダンプファイル6とゲートシミュレーションのダンプファイル7とに不一致が無い場合、ゲートレベルモデル3を入力として受け取り、論理シミュレーション結果ファイル10を出力する。
【0040】
図7は、本実施形態におけるシミュレーション対象のゲートレベルモデルの回路の構成を例示する回路図である。図7に示されているように、そのゲートレベルモデルの回路は、AND回路R1と、NOT回路R2と、AND回路R3と、NOT回路R4と、OR回路R5と、Dフリップフロップ回路R6とを備えている。また、そのゲートレベルモデルの回路は、入力信号aと、入力信号bと、出力信号cと、信号dと、信号eと、信号fと、信号gと、信号hと、クロック信号CLKとに対応して動作する。
【0041】
入力信号aは、OR回路R5に供給されている。入力信号bは、NOT回路R2に供給されている。クロック信号CLKは、Dフリップフロップ回路R6のクロック端子に供給されている。Dフリップフロップ回路R6は、信号dを出力している。信号dは、AND回路R1とAND回路R3に供給されている。NOT回路R2は、信号gを出力している。信号gは、AND回路R1に供給されている。AND回路R1は、出力信号cを出力している。出力信号cは、NOT回路R4に供給されている。NOT回路R4は信号hを出力している。信号hは、AND回路R3に供給されている。AND回路R3は、信号eを出力している。信号eは、OR回路R5に供給されている。OR回路R5は、信号fを出力している。信号fは、Dフリップフロップ回路R6のデータ端子に供給されている。
【0042】
以下に、本実施形態に論理シミュレーションシステム85の動作について説明を行う。なお、以下の説明においては、本願発明の理解を容易にするために、検証対象のRTLレベルモデル1が、上述の図1に示されるようなRTL記述の場合を例示する。図8は、本実施形態の論理シミュレーションシステム85の動作を例示するフローチャートである。ステップS1において、検証対象のRTLレベルモデル1と、合成制約情報ファイル2を入力して、検証対象のゲートレベルモデル3を出力する
【0043】
ステップS2において、検証対象のRTLレベルモデル1と、検証対象のゲートレベルモデル3とを入力として受け取り、形式検証工程を実行する。この時、各々のフリップフロップの対応を表したマッチング情報ファイル4が作成される。
【0044】
ステップS3において、ステップS2の形式検証工程を実行することによって得られたRTLレベルモデルとゲートレベルモデルのマッチング情報ファイル4を使用して、ダンプ情報を生成する。ステップS3のダンプ情報生成工程では、検証対象のゲートレベルモデル3のそれぞれのフリップフロップが保持している値をダンプするようなアサーション記述であるダンプポイント情報ファイル5を作成する。また、そのダンプ情報生成工程では、検証対象のゲートレベルモデル3のフリップフロップが入力信号の値をサンプリングした直後に、値をダンプするようなアサーション記述であるダンプポイント情報ファイル5を作成する。
【0045】
ステップS4において、ダンプポイント情報ファイル5を入力として受け取り、RTLシミュレーションを実行して、検証対象のRTLレベルモデル1内のフリップフロップが保持している値とシミュレーション時刻をダンプした、RTLシミュレーションのダンプファイル6を作成する。
【0046】
図9は、検証対象のRTLレベルモデル1が、上述の図1に示されるようなRTL記述の場合の、ステップS4におけるRTLシミュレーション工程の動作を例示するタイミングチャートである。
【0047】
シミュレーション開始時刻T0では、クロック信号CLKに“0”、入力信号aに不定値“X”、入力信号bに不定値“X”が供給され、レジスタdに不定値“X”が設定される。その入力と設定が行われた事により内部信号である、assign宣言された信号Yが不定値“X”に、出力信号cが不定値“X”になる。
【0048】
シミュレーション時刻T1では、クロック信号CLKに“1”が供給される。シミュレーション時刻T2では、入力信号aに“0”が供給される。シミュレーション時刻T3では、クロック信号CLKに“0”が供給される。シミュレーション時刻T4では、入力信号bに“0”が供給される。その入力が行われた事により内部信号である、assign宣言された信号Yの出力が“0”になる。シミュレーション時刻T5では、クロック信号CLKに“1”が供給される。その入力が行われた事により内部信号である、レジスタdの出力が“0”に、出力信号cが“0”になる。
【0049】
図10は、RTLシミュレーションのダンプファイル6の構成を例示するテーブルである。本実施形態のRTLシミュレーションのダンプファイル6は、検証対象のゲートレベルモデル3のDフリップフロップ回路R6の名前と、値をサンプリングしたシミュレーション時刻と、Dフリップフロップ回路R6に対応する検証対象のRTLレベルモデル1のレジスタdの値を備えている。
【0050】
図8に戻り、ステップS5において、ダンプポイント情報ファイル5を入力し、ゲートシミュレーションを実行し、検証対象のゲートレベルモデル3のフリップフロップが保持している値とシミュレーション時刻をダンプした、ゲートシミュレーションのダンプファイル7を作成する。ステップS5では、RTL記述を論理合成して得られた図7に例示するゲートレベルモデルに対応したシミュレーションを実行する。
【0051】
図11は、ステップS5のゲートシミュレーション工程の動作を例示するタイミングチャートである。シミュレーション開始時刻T0では、クロック信号CLKに“0”、入力信号aに不定値“X”、入力信号bに不定値“X”が供給され、信号dに不定値“X”が設定される。その入力と設定が行われた事により内部信号である、信号eが不定値“X”に、信号fが不定値“X”に、信号gが不定値“X”に、信号hが不定値“X”になり、出力信号cが不定値“X”になる。
【0052】
シミュレーション時刻T1では、クロック信号CLKに“1”が供給される。この時Dフリップフロップ回路R6は、信号fの値不定値“X”をサンプリングするので、ゲートシミュレーションのダンプファイル7にDフリップフロップ回路R6の名前“R6”が出力され、サンプリングした時刻T1が出力され、Dフリップフロップ回路R6が保持している値である不定値“X”が出力される。また、RTLシミュレーションのダンプファイル6にもDフリップフロップ回路R6の名前“R6”が出力され、サンプリングした時刻T1が出力され、Dフリップフロップ回路R6に対応するRTLレベルモデル1のレジスタdの値不定値“X”が出力される。
【0053】
シミュレーション時刻T2では、入力信号aに“0”が供給される。シミュレーション時刻T3では、クロック信号CLKに“0”が供給される。シミュレーション時刻T4では、入力信号bに“0”が供給される。その入力と設定が行われた事により内部信号である、信号gが“1”になる。
【0054】
シミュレーション時刻T5では、クロック信号CLKに“1”が供給される。シミュレーション時刻T5の時もDフリップフロップ回路R6は、信号fの値不定値“X”をサンプリングするので、ゲートシミュレーションのダンプファイル7にDフリップフロップ回路の名前“R6”が出力され、サンプリングした時刻T5が出力され、Dフリップフロップ回路R6が保持している値である値不定値“X”が出力される。またRTLシミュレーションのダンプファイル6にもDフリップフロップ回路R6の名前“R6”が出力され、サンプリングした時刻T5が出力され、Dフリップフロップ回路R6に対応するRTLレベルモデル1のレジスタdの値“0”が出力される。
【0055】
図12は、ゲートシミュレーションのダンプファイル7の構成を例示するテーブルである。本実施形態のゲートシミュレーションのダンプファイル7は、ゲートレベルモデル3のDフリップフロップ回路R6の名前と、値をサンプリングしたシミュレーション時刻と、Dフリップフロップ回路R6の値を備えている。
【0056】
図8に戻り、ステップS6において、RTLシミュレーションのダンプファイル6とゲートシミュレーションのダンプファイル7を比較する。不一致が在った場合は、処理はステップS7に進む。不一致が無かった場合は、処理はステップS10に進む。
【0057】
ステップS7において、ゲートシミュレーションのダンプファイル7のフリップフロップの値が不定状態で、且つ、RTLシミュレーションのダンプファイル6の対応する同時刻、同フリップフロップの値が不定状態でない場合に、ゲートシミュレーションのダンプファイル7およびRTLシミュレーションのダンプファイル6に格納されているフリップフロップの名前(識別子)および時間を用いて、不一致ポイントファイル8を作成する。
【0058】
図13は、不一致ポイントファイル8の構成を例示するテーブルである。不一致ポイントファイル8は、ゲートレベルモデル3のDフリップフロップ回路R6の名前と、値をサンプリングしたシミュレーション時刻と、Dフリップフロップ回路R6の値と、Dフリップフロップ回路R6に対応するRTLレベルモデル1のレジスタdの値とを備えている。不一致ポイントファイル8には、Dフリップフロップ回路R6の値が不定値“X”状態で、RTLレベルモデル1のレジスタdの値が“0”であるシミュレーション時刻T5のみであることが示されている。
【0059】
図8に戻り、ステップS8において、不一致ポイントファイル8に基づいて、シミュレーション時刻T5から最小シミュレーション時間の間だけ、強制的に検証対象のゲートレベルモデル3内のフリップフロップが保持している値を、RTLレベルモデル1内の対応する同時刻、同フリップフロップが保持している値に強制代入するために、アサーション記述であるForceファイル9を作成する。
【0060】
ステップS9において、検証対象のゲートレベルモデル3に、Forceファイル9を加えてシミュレーションを実行する。その実行結果を不定伝播の無いシミュレーション結果として、論理シミュレーション結果ファイル10を生成する。
【0061】
図14は、ステップS9におけるゲートレベルシミュレーション工程の動作を例示するタイミングチャートである。シミュレーション開始時刻T0では、クロック信号CLKに“0”、入力信号aに不定値“X”、入力信号bに不定値“X”が供給され、R6の出力dに不定値“X”が設定される。その入力と設定が行われた事により、内部信号である信号eが、不定値“X”に、信号fが、不定値“X”に、信号gが、不定値“X”に、信号hが、不定値“X”になり、出力信号cが不定値“X”になる。
【0062】
シミュレーション時刻T1では、クロック信号CLKに“1”が供給される。シミュレーション時刻T2では、入力信号aに“0”が供給される。シミュレーション時刻T3では、クロック信号CLKに“0”が供給される。シミュレーション時刻T4では、入力信号bに“0”が供給される。その入力と設定が行われた事により内部信号である、信号gが“1”になる。
【0063】
シミュレーション時刻T5では、クロック信号CLKに“1”が供給され、Dフリップフロップ回路R6の保持している値に“0”が強制代入され、信号dに“0”が設定される。その入力と強制代入が行われた事により内部信号である、信号eが“0”に、信号fが“0”に、信号hが“1”になり、出力信号cが“0”になる。
【0064】
図8に戻り、ステップS10において、上述のステップS6での判断の結果、RTLシミュレーションのダンプファイル6とゲートシミュレーションのダンプファイル7との不一致が無かった場合は、検証対象のゲートレベルモデル3を入力としてシミュレーション実行し、不定伝播の無いシミュレーション結果を示す論理シミュレーション結果ファイル10を作成する。
【0065】
上述してきたように、本実施形態の論理シミュレーションシステム85は、ゲートレベルモデルに含まれるフリップフロップが保持している値が不定で、対応するRTLレベルモデルの保持している値が不定で無いことを検出する。そして、その検出したゲートレベルモデルの出力不一致フリップフロップに対し、強制的にRTLレベルモデルのフリップフロップが保持している値を代入する。本実施形態の論理シミュレーションシステム85は、このような構成・動作に基づいて、3状態(“0”、“1”、不定値“X”)の入力信号の論理計算を行っている。その結果、不定伝播の無いシミュレーション結果を作成することが可能となる。
【0066】
[比較例]
以下に、本願発明の作用効果について、上述の特許文献に記載された技術との比較に基づいて説明を行う。上述した特許文献に記載された技術では、4状態(“0”、“1”、不定値“X”、不定値“〜X”)の入力信号の論理計算を行うのに加え、複数の入力信号が不定値“X”状態の場合、対象の信号線同士の片方を反転させて論理一致を計算する必要がある。
【0067】
その為、一致比較を行う信号の伝播経路上の信号と論理を記憶しておき、計算時に呼び出す必要がある。したがって従来の3状態(“0”、“1”、不定値“X”)の入力信号の論理計算を行うのみの場合に比べ、記憶装置への書き込み、信号の演算一致比較回数が増える。
【0068】
以下に、特許文献1に記載の技術の論理シミュレーション時間について説明を行う。特許文献1に記載の技術における論理シミュレーション時間は、下記(1)式に基づいて算出することができる。
“論理シミュレーション時間”
=“論理計算ステップ数”ד1ステップ当たりの時間”…(1)
【0069】
ここで、論理シミュレーション時間とは、不定伝播の無いシミュレーション結果を得る為に行った論理シミュレーションの総実行時間である。また、論理計算ステップ数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数である。また1ステップ当たりの時間とは、論理演算器が1命令実行するのに必要な時間である。その論理計算ステップ数は、以下の(2)式によって算出される。

“論理計算ステップ数”
=“4状態の論理計算回数”×(“1回の論理計算当たりのステップ数”)
+“一致比較回数”×(“1回の一致比較回数当たりのステップ数”)
+“書き込み回数”×(“1回の書き込み回数当たりのステップ数”)…(2)
【0070】
4状態の論理計算回数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数の内の、4状態の論理計算の為に実行された命令数である。一致比較回数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数の内の、値が不定値“X”の信号同士の論理一致を判定する為に実行された命令数である。書き込み回数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数の内の、値が不定値“X”の信号の論理情報を記憶する為に実行された命令数である。
【0071】
ここで、本実施形態の論理シミュレーション時間について説明を行う。本実施形態では、3状態(“0”、“1”、不定値“X”)の入力信号の論理計算を行うのみで良い。なお、本実施形態では、RTLレベルモデルの論理素子も含めて論理計算を行うので、ゲートレベルモデルの論理計算を行うのみの場合に比べ、論理計算が実行される素子が増える。本実施形態の論理シミュレーション時間は、以下の式によって示される。

“論理シミュレーション時間”
=“論理計算ステップ数”ד1ステップ当たりの時間”…(3)

“論理計算ステップ数”
=“3状態の論理計算回数”ד1回の論理計算当たりのステップ数”…(4)
【0072】
3状態の論理計算回数とは、論理演算器が不定伝播の無いシミュレーション結果を得る論理シミュレーションで実行した総命令数の内の、3状態の論理計算の為に実行された命令数である。

“3状態の論理計算回数”
=(“イベントドリブンで実行されるゲートレベルモデルの論理計算回数”
דシミュレーション実行回数”)
+“イベントドリブンで実行されるRTLレベルモデルの論理計算回数”…(5)
【0073】
以下に、上述の式に基づいた論理シミュレーション時間の算出について説明を行う。以下では、図2(または図7)のゲートレベルモデルに対応した論理シミュレーションに要する時間について説明を行う。ここで、
シミュレーション開始から出力信号Cが”0”になるまで、1回の論理計算当たりのステップ数、1回の一致比較回数当たりのステップ数、1回の書き込み回数当たりのステップ数、および、1ステップ当たりの時間が、下記のようになるものとする。

1回の論理計算当たりのステップ数=1
1回の一致比較回数当たりのステップ数=1
1回の書き込み回数当たりのステップ数=1
1ステップ当たりの時間=10[ns]
4状態、3状態両方の論理計算はともに、2×2[bit]の計算なので1回の論理計算当たりのステップ数は同じになる。
【0074】
図2のゲートレベルモデルを、特許文献1に記載の技術でシミュレーションした時は、最初に入力信号aと入力信号bの値を不定値“X”にし、クロック信号CLKを“0”にし、Dフリップフロップ回路R6の保持している値を不定値“X”にし、信号dの値を不定値“X”にする為に、論理計算を5回行う。
【0075】
このとき、入力信号aと入力信号bと信号dが供給されているNOT回路R2とAND回路R1とAND回路R3とOR回路R5は、入力が変化している。各入力が変化しているので、NOT回路R2とAND回路R1とAND回路R3とOR回路R5の出力である出力信号cと信号eと信号fと信号gを更新する為に、4回論理計算をする。
【0076】
また、信号gが変化したので、信号gが供給されているAND回路R1で論理計算を1回する。加えて、出力が不定値“X”で複数の入力が不定値“X”のAND回路R1とAND回路R3とOR回路R5で、片方の入力ともう一方の入力の論理が反転関係である事を検出する為に、11回一致比較を行う。
【0077】
また、一致比較を行う為に、不定値“X”状態の信号、出力信号cと信号eと信号fと信号gと信号hの論理を追加情報として記憶装置に37回に分けて書き込む。
【0078】
次に入力信号aの値を“0”にする論理計算を1回行う。その後、入力信号aが変化して影響を受けるOR回路R5で論理計算を1回行う。そして、信号fの論理を追加情報として記憶装置に13回に分けて書き込む。
【0079】
次に入力信号bの値を“0”にする論理計算を1回行う。その後、入力信号bが変化して影響を受けるAND回路R1とNOT回路R2とAND回路R3とNOT回路R4とOR回路R5で論理計算を6回行う。また、AND回路R3で一致比較を3回行う。そして、出力信号cと信号eと信号fと信号gと信号hの論理を追加情報として記憶装置に10回に分けて書き込む。
【0080】
次にクロック信号CLKの値を“1”にする論理計算を1回行う。その後、クロック信号CLKが変化して影響を受けるAND回路R1とAND回路R3とNOT回路R4とDフリップフロップ回路R6で論理計算を5回行う。そして、出力信号cと信号hの論理を追加情報として記憶装置に2回に分けて書き込む。
【0081】
上述のように、図2のゲートレベルモデルをシミュレーションした時は、論理計算が25回、一致比較が14回、書き込みが62回行われる。図2のゲートレベルモデルを特許文献1に記載の技術でシミュレーションした時の論理計算ステップ数は、(2)式から、101ステップになる。
101(論理計算ステップ数)
=25(4状態の論理計算回数)×1(1回の論理計算当たりのステップ数)
+14(一致比較回数)×1(1回の一致比較回数当たりのステップ数)
+62(書き込み回数)×1(1回の書き込み回数当たりのステップ数)
【0082】
したがって、特許文献1に記載の技術で必要な計算時間は、上述の(1)式から、
1010=101×10[ns]
となる。
【0083】
本実施形態の論理シミュレーションシステム85において、合成制約情報ファイル2とゲートレベルモデル3とに基づいてシミュレーションする時は、2回シミュレーションを行う。1回目のシミュレーションでは、最初に入力信号aと入力信号bの値を不定値“X”にし、クロック信号CLKを“0”にし、Dフリップフロップ回路R6の保持している値を不定値“X”にし、信号dの値を不定値“X”にする為に論理計算を5回行う。
【0084】
加えてRTLレベルモデルのレジスタdの値を不定値“X”にする為に論理計算を1回行う。次に入力信号aと入力信号bと信号dが供給されているNOT回路R2とAND回路R1とAND回路R3とOR回路R5は、入力が変化したので、NOT回路R2とAND回路R1とAND回路R3とOR回路R5の出力である出力信号cと信号eと信号fと信号gを更新する為に4回論理計算をする
【0085】
また、信号gが変化したので、信号gが供給されているAND回路R1で論理計算を1回する。加えてRTLレベルモデルのassign宣言された信号Y、assign宣言された信号cで論理計算を2回行う。
【0086】
次に、入力信号aの値を“0”にする論理計算を1回行う。その後、入力信号aが変化して影響を受けるOR回路R5で論理計算を1回行う。加えてRTLレベルモデルのassign宣言された信号Yで論理計算を1回行う。
【0087】
次に、入力信号bの値を“0”にする論理計算を1回行う。その後、入力信号bが変化して影響を受けるAND回路R1とNOT回路R2とAND回路R3とNOT回路R4で論理計算を4回行う。加えてRTLレベルモデルのassign宣言された信号Y、assign宣言された信号cで論理計算を2回行う。
【0088】
次に、クロック信号CLKの値を“1”にする論理計算を1回行う。その後、クロック信号CLKが変化して影響を受けるAND回路R1とAND回路R3とNOT回路R4とDフリップフロップ回路R6で論理計算を5回行う。加えてRTLレベルモデルのレジスタd、assign宣言された信号Y、assign宣言された信号cで論理計算を3回行う。また、Dフリップフロップ回路R6の保持している値と、RTLレベルモデルのレジスタdの値をダンプする論理計算を1回行う。
【0089】
2回目のシミュレーションでは、最初に入力信号aと入力信号bの値を不定値“X”にし、クロック信号CLKを“0”にし、Dフリップフロップ回路R6の保持している値を不定値“X”にし、信号dの値を不定値“X”にする論理計算を5回行う。
【0090】
このとき、入力信号aと入力信号bと信号dが供給されているNOT回路R2とAND回路R1とAND回路R3とOR回路R5は、入力が変化している。各入力が変化したので、NOT回路R2とAND回路R1とAND回路R3とOR回路R5の出力である出力信号cと信号eと信号fと信号gを更新する為に、4回論理計算をする。また、信号gが変化したので、信号gが供給されているAND回路R1で論理計算を1回する。
【0091】
次に、入力信号aの値を“0”にする論理計算を1回行う。その後、入力信号aが変化して影響を受けるOR回路R5で論理計算を1回行う。次に、入力信号bの値を“0”にする論理計算を1回行う。その後、入力信号bが変化して影響を受けるAND回路R1とNOT回路R2とAND回路R3とNOT回路R4で論理計算を4回行う。
【0092】
次に、クロック信号CLKの値を“1”にする論理計算を1回行う。その後、クロック信号CLKが変化して影響を受けるAND回路R1とAND回路R3とNOT回路R4とDフリップフロップ回路R6で論理計算を5回行う。加えてR6の保持している値に“0”を強制代入する論理計算を1回と強制代入を停止する論理計算を1回行う。
【0093】
図7のゲートレベルモデルと、図7のゲートレベルモデルと論理等価のRTLレベルモデルを、本実施形態の論理シミュレーションシステム85でシミュレーションした時は、1回目のシミュレーション中にイベントドリブンで実行されるゲートレベルモデルの論理計算回数は23回である。2回目のシミュレーション中にイベントドリブンで実行されるゲートレベルモデルの論理計算回数も23回である。1回目と2回目のシミュレーション中にイベントドリブンで実行されるRTLレベルモデルの論理計算回数は12回である。
【0094】
したがって、本実施形態のシミュレーションした時のステップ数は、(4)式、(5)式から、58ステップになる。

58(論理計算ステップ数)
=58(3状態の論理計算回数)×1(1回の論理計算当たりのステップ数)

58(3状態の論理計算回数)
=(23(イベントドリブンで実行されるゲートレベルモデルの論理計算回数
×2(シミュレーション実行回数))
+12(イベントドリブンで実行されるRTLレベルモデルの論理計算回数)
【0095】
よって、本実施形態で必要な計算時間は、(3)式から、
580=58×10[ns]
となる。この比較例に示されるように、本実施形態の論理シミュレーションシステム85に要するシミュレーション時間は、特許文献1に記載の技術と比較して、
57[%]≒(580÷1010)
程度の時間短縮になる。
【0096】
上述した式からわかる通り、不定値“X”状態が供給されている論理素子がある場合、本実施形態の論理シミュレーションシステム85は、論理計算の回数が少なくなって、論理計算に掛かる時間を減らすことができる。その為、不定伝播の無い論理シミュレーションに必要な時間を削減する効果がある。
【0097】
[第2実施形態]
以下に、本願発明の第2実施形態について説明を行う。その第2実施形態は、RTLレベルモデル1とゲートレベルモデル3とのフリップフロップの値を比較する処理と、ゲートレベルモデルのフリップフロップが保持している値を、対応するRTLレベルモデルのフリップフロップが保持している値と強制的に同じにする処理とを、同じシミュレーションで行う。その為、1回の論理計算のみのシミュレーションで、不定伝播の無いシミュレーション結果を得ることが可能となっている。それによって、シミュレーション時間を削減する事が出来る。
【0098】
図15は、第2実施形態のシミュレーションツール38の構成を例示するブロック図である。第2実施形態のシミュレーションツール38は、RTLシミュレーション部42と、ゲートシミュレーション部43と、アサーション記述生成部51と、フリップフロップ値比較部52と、Force処理部53とを備えている。RTLシミュレーション部42とゲートシミュレーション部43は、第1実施形態と同様の構成・動作を備えている。
【0099】
アサーション記述生成部51は、フリップフロップが保持している値をチェックするためのアサーション記述を生成する機能とフリップフロップ値を代入するためのアサーション記述を生成する機能を備えている。そのアサーション記述生成部51には、RTLレベルモデルとゲートレベルモデルのマッチング情報であるマッチング情報ファイル4が供給される。
【0100】
上述したようにアサーション記述生成部51には、フリップフロップが保持している値をチェックするためのアサーション記述を生成する機能とフリップフロップ値を代入するためのアサーション記述を生成する機能が含まれている。
【0101】
フリップフロップが保持している値をチェックするアサーション記述を生成する機能は、マッチング情報ファイル4に基づいて、検証対象のRTLレベルモデル1と検証対象のゲートレベルモデル3のフリップフロップの値を、ゲートレベルモデル3のフリップフロップが値をサンプリングするタイミングでチェックするアサーション記述を生成する。フリップフロップ値比較部52は、そのアサーション記述に基づいて、ゲートレベルモデル、RTLレベルモデルのフリップフロップの値の比較を実行する。
【0102】
フリップフロップ値を代入するアサーション記述を生成する機能は、ゲートレベルモデル、RTLレベルモデルのフリップフロップの値を比較した比較結果に基づいて、検証対象のゲートレベルモデル3のフリップフロップが不定状態で、対応する検証対象のRTLレベルモデル1のフリップフロップが不定状態でない場合を特定するためのアサーション記述を生成する。その場合、Force処理部53は、検証対象のゲートレベルモデル3のフリップフロップに、対応する検証対象のRTLレベルモデル1のフリップフロップの値を強制代入するForce処理を実行する。
【0103】
図16は、本発明の第2実施形態の論理シミュレーション方法を例示するフローチャートである。ステップS11において、第2実施形態のシミュレーションツール38は、検証対象のRTLレベルモデル1と検証対象のゲートレベルモデル3とRTLレベルモデルとゲートレベルモデルのマッチング情報であるマッチング情報ファイル4を入力として受け取る。シミュレーションツール38は、ステップS2の形式検証工程の時に得られるマッチング情報ファイル4を、アサーション記述生成部51に供給する。
【0104】
ステップS12において、検証対象のゲートレベルモデル3のフリップフロップが入力信号の値をサンプリングした直後に、それぞれのフリップフロップが保持している値をチェックするアサーション記述を生成する。
【0105】
ステップS13において、ゲートレベルモデルのフリップフロップが保持している値が不定で、対応するRTLレベルモデルのフリップフロップが保持している値が不定で無い場合を特定するアサーション記述を生成する。
【0106】
ステップS4において、RTLシミュレーションに、検証対象のRTLレベルモデル1を供給し、そのシミュレーション結果をフリップフロップ値比較部52に渡す。ステップS5において、ゲートシミュレーションに、検証対象のゲートレベルモデル3を供給し、そのシミュレーション結果をフリップフロップ値比較部52に渡す。
【0107】
ステップS14において、フリップフロップ値比較部52は、ゲート、RTLのフリップフロップの値比較処理を実行する。その比較結果において、検証対象のゲートレベルモデル3のフリップフロップが不定状態で、対応する検証対象のRTLレベルモデル1のフリップフロップが不定状態でない場合、処理はステップS15に進む。このとき、不一致が無かった場合は、処理はステップSにもどり、その後処理は終了する。
【0108】
ステップS15において、Force処理を実行する。Force処理部53は、その最小シミュレーション時間の間だけ、強制的にゲートレベルモデルのフリップフロップが保持している値を、対応するRTLレベルモデルのフリップフロップが保持している値と同じにする。
【0109】
[比較例]
以下に、第2実施形態の比較例について説明を行う。本実施形態で例示したゲートレベルモデルとRTLレベルモデルを、シミュレーションした時のステップ数は上述の(4)式、(5)式から、35ステップになる。

35(論理計算ステップ数)=
35(3状態の論理計算回数)×1(1回の論理計算当たりのステップ数)

35(3状態の論理計算回数)=
(23(イベントドリブンで実行されるゲートレベルモデルの論理計算回数
×1(シミュレーション実行回数))
+12(イベントドリブンで実行されるRTLレベルモデルの論理計算回数)
【0110】
よって、第2実施形態で必要な計算時間は、上述の(3)式から、
350=35×10 [ns]
となる。このように、第2実施形態の論理シミュレーションシステム85は、必要な計算時間が従来と比較して
35[%] ≒ (350÷1010)
程度になる。
【0111】
以上、本願発明の実施の形態を具体的に説明した。本願発明は上述の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。また、上述の複数の実施形態は、その構成・動作に矛盾が生じない範囲において組み合わせて実施することが可能である。
【符号の説明】
【0112】
1…RTLレベルモデル
2…合成制約情報ファイル
3…ゲートレベルモデル
4…マッチング情報ファイル
5…ダンプポイント情報ファイル
6…RTLシミュレーションのダンプファイル
7…ゲートシミュレーションのダンプファイル
8…不一致ポイントファイル
9…Forceファイル
10…論理シミュレーション結果ファイル
11…シミュレーション部
21…ゲート、RTLのフリップフロップの値比較
22…Force処理
23…シミュレーション部
31…演算処理部
32…情報記憶部
33…バス
34…論理シミュレーションプログラム
35…ファイル格納部
36…論理合成ツール
37…形式検証ツール
38…シミュレーションツール
41…ダンプ情報生成部
42…RTLシミュレーション部
43…ゲートシミュレーション部
44…比較部
45…不一致ポイント生成部
46…Forceファイル生成部
51…アサーション記述生成部
52…フリップフロップ値比較部
53…Force処理部
80…サーバ
81…記録媒体
82…ネットワーク
83…コンピュータ装置
85…論理シミュレーションシステム
86…コンピュータ装置本体
87…入力装置
88…出力装置
a…入力信号
b…入力信号
c…出力信号
d…信号
e…信号
f…信号
g…信号
h…信号
CLK…クロック信号
R…ゲートレベルモデルの回路
R1…AND回路
R2…NOT回路
R3…AND回路
R4…NOT回路
R5…OR回路
R6…Dフリップフロップ回路

【特許請求の範囲】
【請求項1】
RTL記述に対して論理シミュレーションを行って論理シミュレーション結果を得る工程と、
前記RTL記述を論理合成してゲートレベルモデルを作成する工程と、
前記ゲートレベルモデルに対して、ゲートレベルの論理シミュレーション結果を得る工程と、
前記RTL記述の前記論理シミュレーション結果と前記ゲートレベルの前記論理シミュレーション結果とが一致しているか否かを判定する工程と、
前記判定結果が不一致であった場合に、前記RTL記述の前記論理シミュレーション結果情報と前記ゲートレベルの前記論理シミュレーション結果情報の不一致箇所を抽出する不一致ポイント工程と、
前記不一致ポイント工程の結果に基づき、前記ゲートレベルの前記論理シミュレーション結果情報を前記RTL記述の前記論理シミュレーション結果情報に強制代入記述を作成するForceファイル生成工程と、
前記Forceファイル生成工程の結果に基づき再度ゲートレベルの論理シミュレーションを実施することを特徴とする
論理シミュレーション方法。
【請求項2】
請求項1に記載の論理シミュレーション方法において、
前記強制代入は、不一致ポイント発生時から最小シミュレーション時間の間だけ、ゲートレベルモデルの記述をRTLレベルモデルの対応する記述に強制的に代入することを特徴とする
論理シミュレーション方法。
【請求項3】
請求項1または2に記載の論理シミュレーション方法において、
前記強制代入する情報は、前記ゲートレベルモデルの前記論理シミュレーション結果と、
前記RTL記述の前記論理シミュレーション結果で不一致が発生したフリップフロップの情報であることを特徴とする
論理シミュレーション方法。
【請求項4】
RTL記述を論理合成してゲートレベルモデルを作成する工程と、
前記RTL記述とゲートレベルモデルのフリップフロップの対応データを使用して、ゲートレベルモデルに含まれるフリップフロップが入力信号をサンプリングした直後にRTL記述に含まれるフリップフロップが保持している値と、
ゲートレベルモデルに含まれるフリップフロップが保持している値をチェックして強制的にRTLレベルモデルのフリップフロップが保持している値をゲートレベルモデルのフリップフロップに代入するアサーション記述を生成する工程と、
前記RTL記述とゲートレベルモデルとアサーション記述の論理シミュレーションを実施することを特徴とする
論理シミュレーション方法。
【請求項5】
RTL記述と、前記RTL記述を論理合成して生成するゲートレベルモデルとを入力とする入力部と、
前記RTL記述に対して論理シミュレーションを行って論理シミュレーション結果と、前記ゲートレベルモデルに対して、ゲートレベルの論理シミュレーション結果を得る論理シミュレーション部と、
前記RTL記述の前記論理シミュレーション結果と前記ゲートレベルの前記論理シミュレーション結果とが一致しているか否かを判定する判定部と、
前記判定結果が不一致であった場合に、前記RTL記述の前記論理シミュレーション結果情報と前記ゲートレベルモデルの前記論理シミュレーション結果情報の不一致箇所を抽出する不一致ポイント抽出部と、
前記不一致ポイント工程の結果に基づき、前記ゲートレベルの前記論理シミュレーション結果情報を前記RTL記述の前記論理シミュレーション結果情報に強制代入記述を作成するForceファイル生成部と、
前記Forceファイル生成工程の結果に基づき再度ゲートレベルの論理シミュレーションを実施するシミュレーション部を備えたことを特徴とする
論理シミュレーション装置。
【請求項6】
検証対象のRTLレベルモデルと合成制約情報とを入力として受け取り、検証対象のゲートレベルモデルを論理合成する論理合成ツールと、
前記検証対象のRTLレベルモデルと前記検証対象のゲートレベルモデルとに基づいて、各々のフリップフロップの対応を表したマッチング情報ファイルを生成する形式検証ツールと、
前記マッチング情報ファイルを受け取り、前記マッチング情報ファイル4に基づいて論理シミュレーション結果ファイルを出力するシミュレーションツールと
を具備し、
前記シミュレーションツールは、
前記マッチング情報ファイル受け取り、前記マッチング情報ファイルに基づいてダンプポイント情報ファイルを生成するダンプ情報生成部と、
前記ダンプポイント情報ファイルを受け取り、前記検証対象のRTLレベルモデルのフリップフロップの値をダンプしたRTLシミュレーションダンプファイルを生成するRTLシミュレーション部と、
前記ダンプポイント情報ファイル受け取り、前記検証対象のゲートレベルモデルのフリップフロップの値をダンプしたゲートシミュレーションダンプファイルを生成するゲートシミュレーション部と、
前記RTLシミュレーションダンプファイルと前記ゲートシミュレーションダンプファイルとを受け取り、不一致が在るか無いかの判断を行う比較部と、
前記比較部の比較結果に基づいて、前記RTLシミュレーションダンプファイルと前記ゲートシミュレーションダンプファイルとに不一致が在る場合、不一致ポイントファイルを生成する不一致ポイント生成部と、
前記不一致ポイントファイル受け取り、前記検証対象のゲートレベルモデルのフリップフロップに、値を強制代入するアサーション記述のForceファイルを生成するForceファイル生成部と
を備える
論理シミュレーション装置。
【請求項7】
請求項6に記載の論理シミュレーション装置において、
前記ゲートシミュレーション部は、
前記Forceファイルを受け取り、前記Forceファイルと前記検証対象のゲートレベルモデルとに基づいたシミュレーションを実行して論理シミュレーション結果ファイルを生成する。
論理シミュレーション装置。
【請求項8】
請求項7に記載の論理シミュレーション装置において、
前記ゲートシミュレーション部は、
前記RTLシミュレーションダンプファイルと前記ゲートシミュレーションダンプファイル7とに不一致が無い場合、前記Forceファイルに依存することなく、記検証対象のゲートレベルモデルとに基づいたシミュレーションを実行して論理シミュレーション結果ファイルを生成する
論理シミュレーション装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−160145(P2012−160145A)
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願番号】特願2011−21353(P2011−21353)
【出願日】平成23年2月3日(2011.2.3)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】