(57)【要約】【課題】入力信号の信号の持続時間の影響を加味した素子遅延値を設定し、信号の持続時間によって素子遅延値が変動する状況においても精度の高い論理シミュレーションを実現する。【解決手段】本発明は、論理回路の論理ゲートに供給される入力信号の持続時間と素子遅延値情報とを関連付けた信号持続時間遅延ファイルを格納する記憶装置と、シミュレーション時に論理ゲートに供給される入力信号の持続時間に基づいて、信号持続時間遅延ファイルを参照し入力信号の持続時間に対応する素子遅延値情報を抽出し、抽出された素子遅延値情報に基づいて論理回路の論理シミュレーションを実行するシミュレータ部とを具備する論理シミュレータである。【選択図】図６
2009134500.tif 000002
【特許請求の範囲】
【請求項１】
論理回路の論理ゲートに供給される入力信号の持続時間を示す第１信号持続時間情報と、第１素子遅延値を示す第１素子遅延値情報とを関連付けた信号持続時間遅延ファイルを格納する記憶装置と、
シミュレーション時に前記論理ゲートに供給される入力信号の持続時間を示す第２信号持続時間情報に基づいて、前記信号持続時間遅延ファイルを参照し前記第２信号持続時間情報に対応する前記第１信号持続時間に関連付けられた第１素子遅延値情報を抽出し、抽出された前記第１素子遅延値情報に基づいて前記論理回路の論理シミュレーションを実行するシミュレータ部と
を具備する
論理シミュレータ。
【請求項２】
請求項１に記載の論理シミュレータであって、
前記信号持続時間遅延ファイルは、
前記第１信号持続時間情報が、持続時間の範囲を示す範囲情報を含み、
前記第１素子遅延値情報が、前記範囲情報と前記第２信号持続時間情報とに基づき前記第１素子遅延値を算出する数式を示す数式情報を含む
論理シミュレータ。
【請求項３】
請求項２に記載の論理シミュレータであって、
前記信号持続時間遅延ファイルは、
前記論理ゲートを特定する論理ゲート情報と、前記論理ゲートの出力信号の変化がどの入力信号の変化に基づくかを示す遅延パス情報とを更に前記第１信号持続時間情報と前記第１素子遅延値情報とに関連付けて格納し、
前記範囲情報及び前記数式情報は、前記論理ゲート情報と前記遅延パス情報とに基づき決定される
論理シミュレータ。
【請求項４】
請求項１乃至３の何れか一項に記載の論理シミュレータであって、
前記記憶装置は、
前記論理ゲートに供給される入力信号の供給状態を示す供給状態情報と、第２素子遅延値を示す第２素子遅延値情報とを関連付けた供給状態遅延ファイル
を更に格納し、
前記供給状態遅延ファイルは、
前記供給状態情報が、論理ゲートに含まれる複数の入力端子の内、検証対象の入力信号を除いた残りの入力端子の各々の入力信号の供給状態を示す隣接供給状態情報
を含む
論理シミュレータ。
【請求項５】
請求項４に記載の論理シミュレータであって、
前記供給状態は入力信号の電圧を示す
論理シミュレータ。
【請求項６】
請求項１乃至３の何れか一項に記載の論理シミュレータであって、
前記信号持続時間遅延ファイルは、
前記論理ゲートに供給される入力信号の供給状態を示す供給状態情報と、第２素子遅延値を示す第２素子遅延値情報とを関連付けて格納し、更に前記論理ゲートに含まれる複数の入力端子の内、検証対象の入力信号を除いた残りの入力端子の各々の入力信号の供給状態を示す隣接供給状態情報を前記第１信号持続時間情報及び前記第１素子遅延値情報並びに第２素子遅延値に関連付けて格納する
論理シミュレータ。
【請求項７】
請求項６に記載の論理シミュレータであって、
前記供給状態は入力信号の電圧を示す
論理シミュレータ。
【請求項８】
（ａ）論理回路の論理ゲートに供給される入力信号の持続時間を示す第１信号持続時間情報と、第１素子遅延値を示す第１素子遅延値情報とを関連付けるステップと、
（ｂ）シミュレーション時に前記論理ゲートに供給される入力信号の持続時間を示す第２信号持続時間情報に基づいて、前記信号持続時間遅延ファイルを参照し前記第２信号持続時間情報に対応する前記第１信号持続時間に関連付けられた第１素子遅延値情報を抽出し、抽出された前記第１素子遅延値情報に基づいて前記論理回路の論理シミュレーションを実行するステップと
を具備する
論理シミュレーション方法。
【請求項９】
請求項８に記載の論理シミュレーション方法であって、
前記ステップ（ａ）は、
（ａ１）前記第１信号持続時間情報が、持続時間の範囲を示すステップと、
（ａ２）前記第１素子遅延値情報が、前記ステップ（ａ１）と前記第２信号持続時間情報とに基づき前記第１素子遅延値を算出する数式を示すステップと
を含む
論理シミュレーション方法。
【請求項１０】
請求項９に記載の論理シミュレーション方法であって、
前記ステップ（ａ）は、
（ａ３）前記論理ゲートを特定するステップと、
（ａ４）前記論理ゲートの出力信号の変化がどの入力信号の変化に基づくかを示すステップとを含み
更に前記ステップ（ａ３）及び（ａ４）は、前記ステップ（ａ）の前記第１信号持続時間情報と前記第１素子遅延値情報とに関連付けられ、
前記ステップ（ａ１）及び前記ステップ（ａ２）は、前記ステップ（ａ３）と前記ステップ（ａ４）とに基づき決定される
論理シミュレーション方法。
【請求項１１】
請求項８乃至１０の何れか一項に記載の論理シミュレーション方法であって、
（ｃ）前記論理ゲートに供給される入力信号の供給状態を示す供給状態情報と、第２素子遅延値を示す第２素子遅延値情報とを関連付けるステップ
を更に備え
前記ステップ（ｃ）は、
（ｃ１）前記供給状態情報が、論理ゲートに含まれる複数の入力端子の内、検証対象の入力信号を除いた残りの入力端子の各々の入力信号の供給状態を示すステップ
を含む
論理シミュレーション方法。
【請求項１２】
請求項１１に記載の論理シミュレーション方法であって、
前記供給状態は入力信号の電圧を示す
論理シミュレーション方法。
【請求項１３】
請求項８乃至１０の何れか一項に記載の論理シミュレーション方法であって、
前記ステップ（ａ）は、
（ａ５）前記論理ゲートに供給される入力信号の供給状態を示す供給状態情報と、第２素子遅延値を示す第２素子遅延値情報とを関連付けるステップと、
（ａ６）前記論理ゲートに含まれる複数の入力端子の内、検証対象の入力信号を除いた残りの入力端子の各々の入力信号の供給状態を示すステップと
を含み
前記ステップ（ａ６）は、前記第１信号持続時間情報及び前記第１素子遅延値情報並びに第２素子遅延値に関連付けられる
論理シミュレーション方法。
【請求項１４】
請求項１３に記載の論理シミュレーション方法であって、
前記供給状態は入力信号の電圧を示す
論理シミュレーション方法。
【請求項１５】
請求項８乃至１４の何れか一項に記載の方法をコンピュータに実行させる
論理シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の論理動作のシミュレーションを実行する論理シミュレータ及び論理シミュレーション方法に関する。
【背景技術】
【０００２】
半導体集積回路の開発において、論理設計の早期に不具合を見出す論理シミュレータは大変重要な役割を担う。そして論理回路の遅延量に基づく論理シミュレータが広く使用されている。近年、半導体集積回路の高密度化、大規模化に伴い更なる高速動作の実現に向け高精度な論理シミュレーションが強く望まれてきている。論理シミュレーションには様々な方法があるが、素子遅延時間や配線遅延時間の見積り方法の例として特許文献１が提案されている。
【０００３】
図１は、特許文献１の論理シミュレータの構成を示す。特許文献１の論理シミュレータは、論理記述部１と、コンパイラ２と、遅延ライブラリ３と、遅延計算部４と、遅延ファイル５と、論理記述オブジェクト部６と、シミュレーション部７と、シミュレーション結果８とを備える。論理記述部１は、検証対象の論理回路の記述を保持する。コンパイラ２は、論記記述部１の論理記述をオブジェクト形式に変換する。遅延ライブラリ３は、配線遅延値計算用の複数の遅延係数データを登録する。遅延係数データは、論理回路の複数の論理ゲートの各々毎かつ各々の論理ゲートの出力端子毎の負荷容量に対応する。更に、遅延係数データは論理ゲートの複数の入力信号の各々の供給状態に対応する。遅延計算部４は、複数の遅延係数データと負荷容量との供給に対応して異なる複数の配線遅延値を計算する。遅延ファイル５は、配線遅延値を登録する。論理記述オブジェクト部６は、コンパイルした論理記述部１の記述内容に遅延ファイル５が供給する配線遅延値を付加したオブジェクトを登録する。シミュレータ部７は、オブジェクトの供給を受ける。更に、検証対象ゲートの出力信号に遅延時間を設定し、論理シミュレーションを行う。シミュレーション結果８は、シミュレーション結果を格納する。
【０００４】
更に、論理記述オブジェクト部６は、論理ゲートの出力論理および遅延時間を定義する入力定義部を備える。入力定義部は、論理ゲートの出力論理及び遅延時間を定義する。論理ゲートの出力論理及び遅延時間は、論理回路を構成する各々の論理ゲートの複数の入力端子に供給される複数の入力信号の各々の供給状態に対応している。
【０００５】
図２は、論理記述オブジェクト部６のブロック図である。論理記述オブジェクト部６は、Ｆ／Ｉテーブル６−１と、Ｆ／Ｏテーブル６−２と、論理テーブル６−３と、素子遅延テーブル６−４と、配線遅延テーブル６−５とを備える。Ｆ／Ｉテーブル６−１は、入力信号供給元の論理ゲートの名称および入力端子名を登録する。Ｆ／Ｏテーブル６−２は、出力信号供給先の論理ゲートの名称および出力端子名を登録する。論理テーブル６−３は、入力端子の状態ｆ（ＩＮ１、ＩＮ２、・・・）により決まる出力値を保持する。素子遅延テーブル６−４は、論理ゲート毎の回路素子固有の遅延値を保持する。回路素子固有の遅延値は、入力端子の状態ｆ（ＩＮ１、ＩＮ２、・・・）に依存して異なる。配線遅延テーブル６−５は、論理ゲート毎の出力端子対応の配線遅延値を登録する。配線遅延値は、入力端子の状態ｆ（ＩＮ１、ＩＮ２、・・・）に依存して異なる。
【０００６】
論理記述部１は、コンパイラ２でコンパイルされる。コンパイルされた論理記述は、遅延ファイル５が付加されて、論理記述オブジェクト部６に登録される。遅延ファイル５は、１つの機能の１つの出力端子毎に、入力端子の状態（ｆ（ＩＮ１，ＩＮ２，…））の各々毎の配線遅延値が登録されている。遅延ファイル５の配線遅延値ＴＤは、遅延計算部４において検証対象ゲートの遅延係数データＲと出力負荷容量ＣＬとを乗算して求める。遅延係数データＲは、遅延ライブラリ３から供給される。出力負荷容量ＣＬは、論理記述部１から供給される。遅延ライブラリ３は、１つの機能の１つの出力端子毎に、入力端子の状態ｆ（ＮＩ１，ＩＮ２，…）の各々毎の遅延係数データが定義されている。遅延ライブラリ３にＮ種の入力状態に対応したＮ種の遅延係数データＲ１〜ＲＮが定義されている場合、遅延ファイル５はＮ種の配線遅延値ＴＤ１〜ＴＤＮを登録する。
【０００７】
次に、図３を参照して従来例の動作について説明する。特許文献１の論理シミュレータは、時刻ｔ＝０においてある入力信号に変化が発生する（以降、イベントと称する。出力信号が変化する場合も同様）と（ステップＰ１）、イベントを取出す（ステップＰ２）。次に、イベントを伝搬し（ステップＰ３）、論理動作を行う（ステップＳ４）。更に、遅延時間を設定し（ステップＳ５）、イベントを登録する（ステップＰ６）。そしてシミュレーション終了判定を行う（ステップＰ７）。論理動作（ステップＳ４）では、まず入力信号の他の入力信号の状態ｆ（ＩＮ１、ＩＮ２、・・・）（以下ｆ（ＩＮｉ））をＦ／Ｉテーブル６１に基づき調べる（ステップＳ４−１）。次に論理テーブル６３に基づき、状態ｆ（ＩＮｉ）に対応する素子遅延値Ｄｉおよび配線遅延値ＴＤｉを選択する（ステップＳ４−２）。これら素子遅延値Ｄｉおよび配線遅延値ＴＤｉを加算し（ステップＳ４−３）、この加算値（Ｄｉ＋ＴＤｉ）を遅延時間として設定する（ステップＳ５）。イベント登録（ステップＰ６）を時刻Ｄｉ＋ＴＤｉ後に行う。
【０００８】
以上説明したように、特許文献１の論理シミュレータは、複数の入力信号の供給状態により配線遅延値が異なるＣＭＯＳ複合ゲート回路などを高精度にシミュレーション出来る効果がある。
【０００９】
【特許文献１】特許第２７２３０１９号（特開平７−１８２３８２）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述した特許文献１は、入力端子の入力信号の供給状態によって複数の遅延値を持たせることを実現している。つまり遅延パス情報（検証する論理回路の複数の論理ゲート毎の出力端子の出力信号の変化が、どの入力端子の入力信号の変化に基づくかを示す情報）を元に論理テーブル６−３と素子遅延テーブル６−４とから、入力信号の供給状態ｆ（ＩＮｉ）に対する素子遅延値Ｄｉを選択するようになっている。そして選択した素子遅延値Ｄｉと配線遅延値ＴＤｉとを加算し遅延時間として設定する。しかし本発明者は、入力信号の供給状態だけでなく、入力信号の持続時間を示す信号持続時間も素子遅延値に影響している事実に着目した。以降、信号持続時間は入力幅と称する。入力幅は、検証する論理回路の複数の論理ゲートの複数の入力端子の各々で、供給される入力信号の信号変化から次の信号変化までの時刻間を示す。即ち、入力幅は入力信号の遷移タイミングの間隔を表す。近年、半導体集積回路の動作は高速になっており、入力幅の遅延値への影響は大きく、この影響を考慮した論理シミュレーションが必要となっている。しかし、特許文献１は入力信号の入力幅の影響を加味していない。
【００１１】
図４は、入力幅と素子遅延値の関係を示したデバイス動作の例を示したものである。横軸は、入力幅Ｗ（ｎｓ）を表す。縦軸は、素子遅延値Ｄ（ｎｓ）を表す。デバイスに対して入力幅が影響しないほど十分に大きい場合、このデバイスの素子遅延値は一定値１ｎｓを示すと仮定する。即ち、この１ｎｓは入力幅を加味しない素子遅延値を表す。図中のＷ１は入力幅が１ｎｓよりも小さい持続時間の範囲を示す。Ｗ２は入力幅が１ｎｓよりも大きい持続時間の範囲を示す。図４より、入力幅が影響しないほど十分に大きい場合のＷ２の範囲では、素子遅延値は１ｎｓという一定値を取ることが分かる。しかしＷ１の範囲では入力幅の大小によって素子遅延値が異なる特性を有することが分かる。この現象を、近年の素子動作の高速化で考慮することが必要となった。特許文献１は、入力幅によりダイナミックに素子遅延値が変動する複数の素子遅延値を扱う論理シミュレーションに対応出来ていない。つまり、実際のデバイス動作を厳密には実現出来ず、ダイナミックに素子遅延値が変動する動作を含んだ製品設計に対応出来ない問題がある。
【課題を解決するための手段】
【００１２】
本発明は、論理回路の論理ゲートに供給される入力信号の持続時間を示す第１信号持続時間情報と、第１素子遅延値を示す第１素子遅延値情報とを関連付けた信号持続時間遅延ファイルを格納する記憶装置と、シミュレーション時に論理ゲートに供給される入力信号の持続時間を示す第２信号持続時間情報に基づいて、信号持続時間遅延ファイルを参照し第２信号持続時間情報に対応する第１信号持続時間に関連付けられた第１素子遅延値情報を抽出し、抽出された第１素子遅延値情報に基づいて前記論理回路の論理シミュレーションを実行するシミュレータ部とを具備する論理シミュレータである。
【発明の効果】
【００１３】
本発明の論理シミュレータは、入力幅の影響を加味した素子遅延値を設定出来る。即ち、入力幅によって素子遅延値が変動する状況においても精度の高い論理シミュレーションが可能となる。
【発明を実施するための最良の形態】
【００１４】
本発明の論理シミュレータの実施形態について図面を参照し説明する。
【００１５】
図５は本発明の論理シミュレータの実施形態における、ハードウエア構成例を示すブロック図である。図５に示すように、本発明の実施形態に係る論理シミュレーターは、ＣＰＵ１０（Ｃｅｎｔａｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理装置）と、ハードディスクやメモリ等からなる記憶装置２０と、キーボードやマウスからなる入力装置３０と、ディスプレイなどの出力装置４０と、各装置を接続するバス５０とを備えるコンピュータシステムで動作する。
【００１６】
ＣＰＵ１０は、記憶装置２０に保存された本発明の論理シミュレータに係る演算処理及び制御処理を行う。記憶装置２０は、本発明に係る各機能、手段をＣＤ−ＲＯＭやＤＶＤ等のコンピュータ読み取り可能な記録媒体から読み取られたプログラムや、入力装置３０から入力されたプログラム等を実行可能な形式で格納する。さらに記憶装置２０は、ＣＰＵ１０の演算時に作業領域として使用される。
【００１７】
図６は、本発明の論理シミュレータの一実施例である実施例１を示すブロック図を示したものである。本発明の論理シミュレータは、入力端子の入力信号の入力幅に基づいて、検証する論理回路の論理ゲート毎に素子遅延値を決定する。入力幅は、入力信号の信号の持続時間を示す信号持続時間の情報である。入力幅は、検証する論理回路の複数の論理ゲートの複数の入力端子の各々で、供給される入力信号の信号変化から次の信号変化までの時刻間を表す。即ち、入力幅は入力信号の遷移タイミングの間隔を表す。
【００１８】
図７は、入力幅を示したタイムチャートの一例である。図中（ａ）の入力幅は、入力信号の電圧の変化が立ち上がり時刻（ｔ１）から、立ち下り時刻（ｔ２）までを表す。図中（ｂ）の入力幅は、入力信号の電圧の変化が立ち下がり時刻（ｔ３）から、立ち上がり時刻（ｔ４）までを表す。本発明において、入力幅は図７の（ａ）及び（ｂ）のどちらでも良いとする。図７の（ｃ）は、理想波形以外の歪んだ波形の一例を表す。この場合の入力幅は、入力信号の電圧の変化が立ち上がり変化の時刻（ｔ５）から、立ち下り変化の時刻（ｔ６）までを表す。しきい値を任意に設定し、入力幅が算出できることを示している。
【００１９】
本発明の論理シミュレータは入出力信号の供給状態に基づき配線遅延値を決定する。得られた素子遅延値と配線遅延値とを加算し、検証対象の論理回路の遅延値とする。入出力信号の供給状態とは、電圧、温度、製造工程中に発生する様々なプロセスのばらつきなどを示す。
【００２０】
本発明の論理シミュレータは、論理記述ファイル１００と、入力幅遅延ファイルＦ１と、シミュレータ部２００−１と、シミュレーション結果３００とを具備する。入力信号の持続時間と素子遅延値とを関連付けた信号持続時間遅延ファイルは、入力幅遅延ファイルＦ１と称す。こられらは記憶装置２０に格納される。入力信号の伝搬に係る情報及びシミュレーションに係る入力信号の情報は、論理記述ファイル１００に格納される。
【００２１】
論理記述ファイル１００は検証する論理回路の論理記述を示す。シミュレータ部２００−１は、論理記述、入出力信号の供給状態、負荷容量などを論理記述ファイル１００から抽出する。入力幅遅延ファイルＦ１は、複数の論理ゲート毎に複数の素子遅延値情報を示す数式情報（固定値含む）を保持する。それら素子遅延値情報は、入力端子の入力信号の入力幅の大小に対応している。入力幅の大小は、入力信号の信号が持続する時間の範囲で分類される。シミュレータ部２００−１は、検証する論理回路の論理ゲートに対応する素子遅延値情報を示す数式情報（固定値含む）を、入力幅遅延ファイルＦ１から取得する。そして、シミュレータ部２００−１は検証する論理回路の複数のゲート毎に素子遅延値を決定する。またシミュレータ部２００−１は、配線遅延値を決定する。例えば特許文献１にある技術と同様に、配線遅延値は遅延係数データと負荷容量とを計算して求める。遅延係数データは、複数の入力端子の複数の入力信号の供給状態と出力信号の供給状態に対応し複数存在する。入出力信号の供給状態とは電圧、温度、製造工程中に発生する様々なプロセスのばらつきなどを意味する。負荷容量は論理記述ファイル１００から提供される。遅延係数データの入手方法は、特許文献１と同様にシミュレータ部２００−１の外部ファイルを参照する方法と、シミュレータ部２００−１内に予め保持する方法のどちらでも良いとする。決定した素子遅延値と配線遅延値とを加算し遅延値（Ｄｉ＋ＴＤｉ）とする。シミュレータ部２００−１は、遅延値（Ｄｉ＋ＴＤｉ）を出力端子の出力信号情報に設定し論理シミュレーションを実行する。シミュレーション結果３００はシミュレーション結果を格納する。
【００２２】
図８は、入力幅遅延ファイルＦ１の構成例を示したものである。
本発明の論理シミュレータは、入力幅という時間の概念を遅延変動の条件に取り入れた入力幅遅延ファイルＦ１を定義する。入力幅遅延ファイルＦ１は、論理ゲート毎及び遅延パス情報毎に入力幅に関連付けられた素子遅延値情報を定義する。
【００２３】
入力幅遅延ファイルＦ１は、ブロック名Ｆ１１と、遅延パス情報Ｆ１２と、入力幅の範囲情報Ｆ１３と、素子遅延値情報を示す数式情報（固定値含む）Ｆ１４及びＦ１５を備える。ブロック名Ｆ１１は、検証する論理回路の論理ゲートの名称を示す。即ち、入力幅遅延ファイルＦ１は、複数の論理ゲート（ブロック名Ｆ１１）を保持している。遅延パス情報Ｆ１２は、出力端子の出力変化がどの入力端子の入力信号変化によるものであるかを示す。即ち入力端子の入力信号の変化と出力端子の出力信号の変化の対応関係を表している。入力幅遅延ファイルＦ１は、複数の遅延パス情報Ｆ１２を保持している。入力幅の範囲情報Ｆ１３は、入力信号の持続時間の範囲を示す。素子遅延値情報を示す数式情報（固定値含む）Ｆ１４及びＦ１５は、入力幅の範囲情報Ｆ１３に対応し、素子遅延値を算出するための情報である。算出された素子遅延値は、論理ミュレーションを実行する際に出力端子の出力信号情報に設定する。入力幅の範囲情報Ｆ１３と、素子遅延値情報を示す数式情報Ｆ１４及びＦ１５にあるＷは、入力端子の入力信号の入力幅を表す。Ｗには、論理シミュレーション時に算出された入力幅が代入される。Ｆ１４及びＦ１５にあるＴＰＤ（ｎｓ）は、回路が安定した後の入力幅が十分大きいときの素子遅延値情報を表し、素子遅延値情報が数値で与えられる場合を示す。ＴＰＤ（ｎｓ）及びＴＰＤ１０は、論理ゲート（ブロック名Ｆ１１）毎、遅延パス情報Ｆ１２毎に固有の値である。
【００２４】
図９は、図８の入力幅と素子遅延値の関係の一例を示したグラフである。横軸は、入力幅Ｗ（ｎｓ）を表す。縦軸は、素子遅延値Ｄ（ｎｓ）を表す。ＴＰＤ（ｎｓ）は回路が安定した後の素子遅延値を表す。
Ｔ１として示した入力幅の範囲は、入力幅が短すぎて入力端子の入力信号の変化がスレッシュホールド電圧に満たないため、実現するデバイス動作において信号変化と見なす出力変化が無いことを表す。図９の例では、Ｔ１は０．４×ＴＰＤ（ｎｓ）未満と定義し、そのとき素子遅延値はＥｒｒｏｒと定義する。図８では、入力幅がＴ１の範囲はＬ１として示す。そして素子遅延値（Ｆ１４及びＦ１５）はＥｒｒｏｒと定義する。
Ｔ２として示した入力幅の範囲は、入力端子の入力信号の変化がスレッシュホールド電圧以上となる入力幅から、素子遅延値がＴＰＤ×０．８（ｎｓ）未満となる入力幅までの範囲を表す。図９の例では、Ｔ２は０．４×ＴＰＤ（ｎｓ）以上で、０．５×ＴＰＤ（ｎｓ）未満として定義する。図８では、入力幅がＴ２の範囲はＬ２として示す。そして素子遅延値は数式で与えられる。素子遅延値を示す数式は、入力幅の大小により変動した素子遅延値をデバイス動作に近い直線で近似している。この数式に実際に算出した入力幅を代入すると、入力幅が考慮されたより正確な素子遅延値が決定出来る。
Ｔ３として示した入力幅の範囲は、素子遅延値がＴＰＤ×０．８（ｎｓ）以上となる入力幅から、回路が安定する素子遅延値ＴＰＤ（ｎｓ）未満までの範囲を表す。図９の例では、Ｔ３は０．５×ＴＰＤ（ｎｓ）以上、ＴＰＤ（ｎｓ）未満として定義する。図８では、入力幅がＴ３の範囲はＬ３として示す。素子遅延値を示す数式は、Ｔ２同様に入力幅の大小により変動した素子遅延値をデバイス動作に近い直線で近似している。この数式に実際に算出した入力幅を代入すると、入力幅が考慮されたより正確な素子遅延値が決定出来る。
Ｔ４として示した入力幅の範囲は、回路が安定した後、素子遅延値が一定となった入力幅を表す。図９の例では、Ｔ４は１×ＴＰＤ（ｎｓ）以上として定義する。図８では、入力幅がＴ４の範囲はＬ４として示す。素子遅延値は、実現しようとするデバイス動作上で一定であるため、論理シミュレーション上でも数値ＴＰＤ（ｎｓ）に決定する。
【００２５】
図１０は、シミュレータ部２００−１の構成を示したものである。
シミュレータ部２００−１は、イベント取り出し部２１０と、イベント伝搬部２２０と、論理動作部２３１と、遅延時間設定部２４０と、イベント登録部２５０と、イベント発生時刻保持部２６０と、シミュレーション終了判定部２７０と、時間設定部２８０とを備える。
【００２６】
イベント取り出し部２１０は、検証する論理回路の論理ゲート毎に、入力端子の入力信号に変化が発生すると、入力信号をイベントとして取り出す。入力信号は、論理記述ファイル１００からシミュレーション用に提供される。イベント伝搬部２２０は、取り出したイベントを伝搬する。伝搬に係る情報は、論理記述ファイル１００に含まれている。イベント伝搬部２２０は、論理記述ファイル１００に基づきシミュレーションに係る、論理ゲート情報、遅延パス情報などを論理動作部２３１へ提供する。論理動作部２３１は、論理ゲート毎に素子遅延値と配線遅延値をそれぞれ決定する。更に、素子遅延値と配線遅延値を加算して、検証する論理回路の論理ゲート毎の遅延値を決定する。素子遅延値は入力端子の入力信号の入力幅の大小に対応して決定される。配線遅延値は入出力信号の供給状態に対応して決定される。遅延時間設定部２４０は、論理動作部２３１で決定した遅延値を検証する論理回路の論理ゲート毎に設定する。イベント登録部２５０は、伝搬されたイベントを登録する。イベント発生時刻保持部２６０は、イベント発生時刻を保持する。シミュレーション終了判定部２７０は、論理シミュレーションの終了を判定する。時間設定部２８０は、論理シミュレーションが終了でない場合、イベント発生時刻をｔ＝０とすると時刻ｔに１を足す（ｔ＝ｔ＋１）。
【００２７】
図１１は、論理動作部２３１の構成を示したものである。
論理動作部２３１は、入力幅計算部２３１−１と、素子遅延値決定部２３１−２と、配線遅延値決定部２３０−１と、遅延値演算部２３０−２とを含む。
【００２８】
入力幅計算部２３１−１は、入力端子の入力信号に基づき入力幅を計算する。素子遅延値決定部２３１−２は、計算した入力幅に関連付けられた素子遅延値情報に基づき、素子遅延値を入力幅遅延ファイルＦ１から決定する。素子遅延値情報は数式情報（固定値含む）で与えられている。数値（固定値）の場合はその値を素子遅延値とする。数式の場合は演算値を素子遅延値として決定する。配線遅延値決定部２３０−１は、配線遅延値を遅延係数データと負荷容量とを計算して求める。配線遅延値は、複数の入力端子にそれぞれ供給される複数の入力信号の供給状態に対応している。遅延係数データは、複数の入力端子の複数の入力信号の供給状態と出力信号の供給状態に対応し複数存在する。入出力信号の供給状態とは電圧、温度、製造工程中に発生する様々なプロセスのばらつきなどを意味する。遅延係数データは、特許文献１と同様にシミュレータ部２００−１の外部ファイルを参照する方法と、シミュレータ部２００−１内に予め保持する方法のどちらでも良いとする。負荷容量は論理記述ファイル１００から提供される。遅延値演算部２３０−２は、決定した素子遅延値と配線遅延値とを加算し、検証する論理回路の論理ゲートの遅延値とする。
【００２９】
図１２は、本発明の論理シミュレータの処理動作を示すフローチャートである。
時刻ｔ＝０において、論理ゲートのある入力端子の入力信号に変化が発生（イベントと称する。出力信号が変化する場合も同様）すると（ステップＰ１０）、イベント取り出し部２１０は、この入力信号をイベントとして取り出す（ステップＰ２０）。入力信号は、論理記述ファイル１００からシミュレーション用に提供される。イベント伝搬部２２０は、取り出したイベントを伝搬する（ステップＰ３０）。伝搬に係る情報は、論理記述ファイル１００に含まれている。イベント伝搬部２２０は、論理記述ファイル１００に基づきシミュレーションに係る、論理ゲート情報（ブロック名Ｆ１１）、遅延パス情報Ｆ１２などを論理動作部２３１へ提供する。論理動作部２３１は、論理ゲート毎の遅延値を決定する（ステップＳ４０）。論理ゲート毎の遅延値の求め方は、まず入力幅計算部２３１−１が、論理記述ファイル１００から提供される論理ゲート情報（ブロック名Ｆ１１）及び入力幅の範囲情報Ｆ１３などに基づき、入力信号の入力幅を求める（ステップＳ４０−１）。次に素子遅延値決定部２３１−２が、イベント伝搬部２２０から提供される遅延パス情報Ｆ１２などに基づき、論理ゲート毎の入力幅遅延ファイルＦ１から、入力幅に対応した素子遅延値を決定する（ステップＳ４０−２）。更に、配線遅延値決定部２３０−１が、遅延係数データと負荷容量とに基づき配線遅延値を計算する。そして、遅延値演算部２３０−２が、素子遅延値と配線遅延値を加算して論理ゲート毎の遅延値として決定する（ステップＳ４０−３）。遅延時間設定部２４０は、論理動作部２３１で決定した遅延値を遅延時間として出力信号に設定する（ステップＳ５０）。イベント登録部２５０は、発生したイベントをシミュレータ２００−１に登録する（ステップＰ６０）。イベント発生時刻保持部２６０は、シミュレータ２００−１にイベント発生時刻を保持する（ステップＰ７０）。シミュレーション終了判定部２７０は、論理シミュレーションの終了判定を行う（ステップＰ８０）。論理シミュレーションの終了判定において論理シミュレーションが終了ではない場合は、時刻ｔに１を加える（ステップＰ９０）。論理シミュレーションが終了でない場合とは、論理記述ファイル１００から提供される論理シミュレーション用の信号が全て入出力されていない状態を表す。
【００３０】
図１３は、論理動作部２３１の動作を更に詳細に示したものである。
入力幅計算部２３１−１が入力信号の入力幅を計算するステップ（ステップＳ４０−１）と、素子遅延値決定部２３１−２が入力幅に基づいた素子遅延値を決定するステップ（ステップＳ４０−２）と、配線遅延決定部２３０−１が入力信号の入力状態に基づき配線遅延値を決定するステップと、遅延値演算部２３０−２が決定した素子遅延値と配線遅延値を加算し、検証対象の論理ゲートの遅延値を決定するステップ（ステップＳ４０−３）との詳細を説明する。
【００３１】
ステップＳ４０−１について説明する。入力幅計算部２３１−１は、イベントとして検出された入力信号について、イベント伝搬部２２０から提供された論理ゲート情報（ブロック名Ｆ１１）に基づき入力信号の入力幅の範囲情報Ｆ１３（入力幅の条件）が入力幅遅延ファイルＦ１に存在しているかを判定する（ステップＣ１）。入力幅計算部２３１−１は、入力幅の条件が存在する場合に、前回のイベント発生時刻と今回のイベント発生時刻との時刻間差から入力幅を計算する（ステップＣ２）。入力幅の条件が存在しない場合は、次のステップ（ステップＳ４０−２）を実行する。入力幅計算部２３１−１は、対象となる論理ゲートに対応した入力幅遅延ファイルＦ１を参照する。そして、得られた入力幅Ｗを入力幅遅延ファイルＦ１の入力幅の範囲情報Ｆ１３へ代入する（ステップＣ３）。入力幅の範囲情報Ｆ１３は、入力幅Ｗの大小により素子遅延値情報を示す数式情報（固定値含む）Ｆ１４及びＦ１５が変わることを表したものである。
【００３２】
ステップＳ４０−２について説明する。素子遅延値決定部２３１−２は、入力幅計算部２３１−１が入力幅Ｗを代入した入力幅の範囲情報Ｆ１３の中で、入力幅の範囲情報Ｆ１３に該当する遅延パス情報Ｆ１２を検索する（ステップＣ４）。前述入力幅計算部２３１−１において入力幅の範囲情報Ｆ１３（入力幅の条件）がない場合も同様に遅延パス情報Ｆ１２を検索する（ステップＣ４）。素子遅延値決定部２３１−２は、遅延パス情報Ｆ１２が存在しない場合に素子遅延値を０に決定する（ステップＣ６、ステップＣ９）。
素子遅延値決定部２３１−２は、入力幅の範囲情報Ｆ１３が該当する遅延パス情報Ｆ１２に対応する素子遅延値情報を示す数式情報（固定値含む）Ｆ１４及びＦ１５が、数式又は数値（固定値）であるかを判定する（ステップＣ５）。数式で与えられている場合、素子遅延値決定部２３１−２は、入力幅Ｗを代入した数式の計算値を素子遅延値に決定する（ステップＣ７、ステップＣ９）（図８のＬ１、Ｌ２、Ｌ３）。数値で与えられている場合は、数値を素子遅延値に決定する（ステップＣ８、ステップＣ９）（図８のＬ４）。入力幅の範囲情報Ｆ１３がなく、遅延パス情報Ｆ１２が設定されている場合は数値（固定値）を素子遅延値とする（図８のＬ５）。
【００３３】
ステップＳ４０−３について説明する。配線遅延決定部２３０−１は、入出力信号の供給状態に対応した配線遅延値を算出する。遅延値演算部２３０−２は、素子遅延値決定部２３１−２で決定した素子遅延値と、配線遅延値決定部２３０−１で計算した入出力信号の供給状態に対応した配線遅延値とを加え、各論理ゲートの遅延値に決定する。
【００３４】
特許文献１の論理シミュレータは、図９で表されるような入力信号の入力幅の変化に対して、素子遅延値が変化することを表現出来なかった。本発明の論理シミュレータは、入力幅を遅延変動の条件に取り入れ、素子遅延値情報を示す数式情報（固定値）を入力幅遅延ファイルＦ１内に定義している。即ち、本発明の論理シミュレータは各論理ゲートの入力幅毎に入力幅遅延ファイルＦ１から素子遅延値情報を示す数式情報（固定値含む）を取得することで、論理回路の論理シミュレーションをこれまで以上に正確に実行可能となった。
【００３５】
図１４は、本発明の一実施例である実施例２を示すブロック図である。
本発明の実施例２の論理シミュレータは、実施例１の論理シミュレータに更に遅延ファイルＦ２を加えている。複数の入力端子の複数の入力信号の供給状態と、固定素子遅延情報とに関連付けられた供給状態遅延ファイルを遅延ファイルＦ２と称す。実施例２は、入力幅遅延ファイルＦ１に設定された入力幅に基づく素子遅延値と、遅延ファイルＦ２に設定された複数の入力端子の複数の入力信号の供給状態に基づく固定素子遅延値情報とから素子遅延値を選択出来ることを実現する。
【００３６】
実施例２の論理シミュレータは、論理記述ファイル１００と、入力幅遅延ファイルＦ１と、遅延ファイルＦ２と、シミュレータ部２００−２と、シミュレーション結果３００とを具備する。これらは記憶装置２０に格納される。実施例２の論理シミュレータは、論理記述ファイル１００と入力幅遅延ファイルＦ１とシミュレーション結果３００との構成は実施例１と同様である。
【００３７】
論理記述ファイル１００は検証する論理回路の論理記述を示す。シミュレータ部２００−２は、論理記述、入出力信号の供給状態、負荷容量などを論理記述ファイル１００から抽出する。入力幅遅延ファイルＦ１は、複数の論理ゲート毎及び遅延バス情報毎に入力幅の大小に対応した複数の素子遅延値情報を示す数式情報（固定値）を保持する。遅延ファイルＦ２は、複数の論理ゲートの各々の固有の複数の固定素子遅延値情報を持つ。それら固定素子素子遅延値情報は、論理ゲートの検証している入力端子の入力信号の供給状態に対応している。更にそれら固定素子遅延値情報は、論理ゲートに含まれる複数の入力端子の内、検証対象の入力端子の入力信号を除く、その論理ゲートの残りの複数の入力端子の複数の入力信号の各々の供給状態に対応する固定素子遅延値情報を含む。シミュレータ部２００−２は、入力幅遅延ファイルＦ１及び遅延ファイルＦ２から素子遅延値情報を示す数式情報（固定素子遅延値情報含む）を取得する。そして、シミュレータ部２００−２は、検証する論理回路の複数の論理ゲート毎の素子遅延値を計算する。またシミュレータ部２００−２は、複数の入出力端子の複数の入出力信号の供給状態に対応した遅延係数データと、論理記述ファイル１００から提供される負荷容量とに基づき配線遅延値を算出する。遅延係数データの入手方法は、実施例１と同様にシミュレータ部２００−２の外部ファイルを参照する方法と、シミュレータ部２００−２内に予め保持する方法のどちらでも良いとする。更に、シミュレータ部２００−２は出力信号情報に決定した素子遅延値と配線遅延値とを加算した遅延値（Ｄｉ＋ＴＤｉ）を設定し論理シミュレーションを行う。シミュレーション結果３００はシミュレーション結果を格納する。
【００３８】
図１５は実施例２の遅延ファイルＦ２の構成例である。
遅延ファイルＦ２は、ブロック名Ｆ２１と、遅延パス情報Ｆ２２と、供給状態の条件式Ｆ２３と、固定素子遅延値情報Ｆ２４及びＦ２５を備える。ブロック名Ｆ２１は、検証する論理回路の論理ゲートの名称を示す。遅延パス情報Ｆ２２は、出力端子の出力変化がどの入力端子の入力信号変化によるものであるかを示す。即ち、遅延ファイルＦ２は複数の論理ゲート（ブロック名Ｆ２１）と、複数の遅延パス情報Ｆ２２とを保持している。遅延ファイルＦ２は、入力信号の供給状態に対応して参照する。供給状態の条件式Ｆ２３は、論理ゲートに含まれる複数の入力端子の内、検証対象の入力端子の入力信号を除く、その論理ゲートの残りの複数の入力端子の複数の入力信号の各々の供給状態を示す。固定素子遅延値情報Ｆ２４及びＦ２５は、供給状態の条件式Ｆ２３に対応した、固定値の素子遅延値である。
【００３９】
図１６は、本発明の実施例２の遅延ファイルＦ２を構成するための一シンボル図である。シンボル図は、入力端子にＰＯＣという論理には直接関係のない仮想的な端子を含む。つまり、遅延ファイルＦ２は、論理ゲートに含まれる複数の入力端子の内、検証対象の入力端子の入力信号を除く、その論理ゲートの残りの複数の入力端子の複数の入力信号の各々の供給状態を加味出来ることを表す。図１５のＬ１０は、入力端子ＰＯＣの信号状態が０の時の素子遅延値を設定可能であることを示す。同様にＬ１１は、入力端子ＰＯＣの信号状態が１の時の素子遅延値を設定可能であることを示す。ここで０及び１は入力信号の供給状態の一例である。固定素子遅延値情報Ｆ２３及びＦ２４のＴＰＤ１とＴＰＤ２とはそれぞれ異なる固定値である素子遅延値を示す。
【００４０】
シミュレータ部２００−２は、シミュレータ部２００−１の論理動作部２３１を論理動作部２３２へ変更している。それ以外は、図１０の構成と同じである。
【００４１】
図１７は、論理動作部２３２の構成を示したものである。
論理動作部２３２は、入力信号供給調査部２３２−１と、素子遅延値選択部２３２−２と、遅延パス情報検索部２３２−３と、素子遅延値決定部２３２−４と、入力幅計算部２３１−１と、素子遅延値決定部２３１−２と、配線遅延値決定部２３０−１と、遅延値演算部２３０−２とを備える。
【００４２】
入力信号供給調査部２３２−１は、イベント伝搬部２２０から提供された論理ゲート情報及び遅延パス情報などに基づき、検証対象の論理ゲートの全ての入力端子の入力信号の供給状態を調査する。そして、検証する論理ゲートの入力信号の供給状態に対応する遅延ファイルＦ２を参照する。素子遅延値選択部２３２−２は、検証する入力信号の供給状態に基づき、論理ゲートの固定素子遅延値情報を遅延ファイルＦ２から選択する。遅延パス情報検索部２３２−３は、イベント伝搬部２２０から提供された論理ゲート情報及び遅延パス情報などに基づき入力信号に対応する遅延パス情報を遅延ファイルＦ１から検索する。素子遅延値決定部２３２−４は、遅延パス情報検索部２３２−３において該当遅延パス情報がない場合、遅延ファイルＦ２から選択した固定素子遅延値情報に決定する。遅延パス情報検索部２３２−３において該当遅延パス情報がある場合は、入力幅計算部２３２−１及び素子遅延値決定部２３１−２に係る処理によって素子遅延値情報を示す数式情報に基づき素子遅延値を決定する。遅延値演算部２３０−２は、決定した素子遅延値と、実施例１同様に配線遅延値決定部２３０−１に基づく配線遅延値とを加算し遅延値を算出する。
【００４３】
図１８は、本発明の論理シミュレータの実施例２の処理動作を示すフローチャートである。実施例２は、実施例１と比較すると論理動作（ステップＳ４１）が異なる。それ以外は実施例１と同様である。入力信号は、論理記述ファイル１００からシミュレーション用に提供される。イベント伝搬部２２０は、取り出したイベントを伝搬する（ステップＰ３０）。伝搬に係る情報は、論理記述ファイル１００に含まれている。イベント伝搬部２２０は、論理記述ファイル１００に基づきシミュレーションに係る、論理ゲート情報（ブロック名Ｆ１１、Ｆ２１）、遅延パス情報Ｆ１２、Ｆ２２などを論理動作部２３２へ提供する。論理動作部２３２は、論理ゲート毎の遅延値を決定する（ステップＳ４１）。入力信号供給調査部２３２−１は、検証対象の論理ゲートの全ての入力端子の入力信号の供給状態を調べる（ステップＳ４１−１）。そして、検証する論理ゲートの入力信号の供給状態に対応する遅延ファイルＦ２を参照する。素子遅延値選択部２３２−２は、遅延ファイルＦ２を参照し固定素子遅延値情報Ｆ２４及びＦ２５を選択する（ステップＳ４１−２）。選択する固定素子遅延値情報Ｆ２４及びＦ２５は、検証する入力端子の入力信号の供給状態及び論理ゲートに含まれる複数の入力端子の内、検証対象の入力端子の入力信号を除く、その論理ゲートの残りの複数の入力端子の複数の入力信号の各々の供給状態に基づいている。遅延パス情報検索部２３２−３は、イベント伝搬部２２０から提供された論理ゲート情報（ブロック名Ｆ１１）及び遅延パス情報Ｆ１２などに基づき入力信号に対応する遅延パス情報Ｆ１２が、入力幅遅延ファイルＦ１に存在するかを判定する（ステップＳ４１−３）。遅延パス情報Ｆ１２が存在する場合は、実施例１同様に入力幅に基づいた素子遅延値情報を示す数式情報（固定値含む）Ｆ１４及びＦ１５を算出し、検証する論理回路の素子遅延値に決定する（ステップＳ４０−１、ステップＳ４０−２）。入力幅遅延ファイルＦ１に遅延パス情報Ｆ１２が存在しない場合は、素子遅延値決定部２３２−４は、遅延ファイルＦ２から選択した固定素子遅延値情報Ｆ２４及びＦ２５を検証する論理ゲートの素子遅延値に決定する。
遅延値演算部２３０−２は、入力幅遅延ファイルＦ１又は遅延ファイルＦ２に基づき決定した素子遅延値と、配線遅延値決定部２３０−１で決定した配線遅延値とを加える（ステップＳ４０−３）。以下動作は実施例１同様である。
【００４４】
図１９は、実施例２の論理動作部２３２（ステップＳ４１）の動作を更に詳細に示したものである。
【００４５】
入力信号供給調査部２３２−１が入力端子の入力信号の供給状態を調べるステップ（ステップＳ４１−１）と、素子遅延値選択部２３２−２が遅延ファイルＦ２から入力端子の入力信号の供給状態に対応した素子遅延値を選択するステップ（ステップＳ４１−２）の詳細を説明する。入力信号は、論理記述ファイル１００からシミュレーション用に提供される。
【００４６】
入力信号供給調査部２３２−１は、論理ゲート情報（ブロック名Ｆ１１、Ｆ２１）、遅延パス情報Ｆ１２、Ｆ２２、入力信号の供給状態などをイベント伝搬部２２０から抽出する。そして、検証する入力信号の供給状態、論理ゲート情報（ブロック名Ｆ２１）に対応する遅延ファイルＦ２を参照し、該当する遅延パス情報Ｆ２２が遅延ファイルＦ２に存在するかを判定する（ステップＣ１０）。遅延パス情報Ｆ２２が存在する場合、入力信号供給調査部２３２−１はステップＣ１１を実行する。遅延パス情報が存在しない場合、素子遅延値選択部２３２−２は取得する素子遅延値がないため素子遅延値を０と選択する（ステップＣ１４）。入力信号供給調査部２３２−１は、検証対象の論理ゲートの全ての入力端子の入力信号の供給状態を調査する。そして供給状態の条件式Ｆ２３が、参照した遅延ファイルＦ２に存在するかを判定する（ステップＣ１１）。供給状態の条件式Ｆ２３が存在する場合、入力信号供給調査部２３２−１は、論理ゲートに含まれる複数の入力端子の内、検証対象の入力端子の入力信号を除く、その論理ゲートの残りの複数の入力端子の複数の入力信号の各々の供給状態を、選択した遅延ファイルＦ２の供給状態の条件式Ｆ２３に代入する（ステップＣ１２）（図１５のＬ１０、Ｌ１１）。供給状態の条件式Ｆ２３が存在しない場合、素子遅延値選択部２３２−２は、遅延パス情報に定義されている固定素子遅延値情報Ｆ２４及びＦ２５を参照した遅延ファイルＦ２から入手し素子遅延値として選択する（ステップＣ１５）（図１５のＬ１２）。
素子遅延値選択部２３２−２は、供給状態の条件式Ｆ２３に代入（ステップＣ１２）後、代入した条件式が成立する遅延パス情報が存在するかを判定する（ステップＣ１３）。遅延パス情報が存在する場合、素子遅延値選択部２３２−２は、該当する遅延パス情報に基づき固定素子遅延値情報Ｆ２４及びＦ２５を入手し素子遅延値として選択する（ステップＣ１６）。論理ゲートに含まれる複数の入力端子の内、検証対象の入力端子の入力信号を除く、複数の入力端子の複数の入力信号の各々の供給状態の全てを供給状態の条件式Ｆ２３へ代入することで、対応する遅延パスＦ２２が存在しなくなる場合は、取得する固定素子遅延値情報Ｆ２４及びＦ２５がないため素子遅延値を０と選択する（ステップＣ１７）。
【００４７】
入力端子の入力信号の供給状態に対応した固定素子遅延値情報を遅延ファイルＦ２より選択した後、遅延パス情報検索部２３２−３は、入力端子の入力信号に該当する遅延パス情報Ｆ１２が入力幅遅延ファイルＦ１に存在するかを判定する（ステップＳ４１−３）。遅延パス情報Ｆ１２が存在する場合、入力幅計算部２３１−１及び素子遅延値決定部２３１−２は、実施例１同様に入力幅遅延ファイルＦ１から入力幅に基づいて素子遅延値情報を示す数式情報Ｆ１４及びＦ１５を算出し素子遅延値を取得する（ステップＳ４０−１、ステップＳ４０−２）。遅延パス情報Ｆ１２が存在しない場合、素子遅延決定部２３２−４は遅延ファイルＦ２から選択した素子遅延値に決定する（ステップＣ１８）。
【００４８】
実施例２は、入力幅遅延ファイルＦ１及び遅延ファイルＦ２の２つの遅延情報を備える。そして、それぞれから素子遅延値を取得可能である。即ち、入力信号の供給状態と入力幅との２つの条件に基づき、異なる複数の遅延値を設定する論理シミュレーションを実行可能となった。実デバイス遅延動作において、複数の入力端子の複数の入力信号の供給状態に柔軟に対応出来る高精度なシミュレーションを達成することが出来る。
【００４９】
図２０は、本発明の一実施例である実施例３を示すブロック図である。
本発明の実施例３の論理シミュレータは、実施例１及び実施例２の論理シミュレータの入力幅遅延ファイルＦ１と遅延ファイルＦ２とを遅延条件ファイルＦ３に変更したものである。実施例３において入力信号の持続時間と素子遅延値とを関連付けた信号持続時間遅延ファイルは、遅延条件ファイルＦ３と称す。実施例３は、入力端子の入力信号の入力幅及び供給状態に基づく素子遅延値の決定をより簡潔に行うことを実現する。
【００５０】
実施例３の論理シミュレータは、論理記述ファイル１００と、遅延条件ファイルＦ３と、シミュレータ部２００−３と、シミュレーション結果３００とを具備する。これらは記憶装置２０に格納される。実施例３の論理シミュレータは、論理記述ファイル１００及びシミュレーション結果３００の構成は実施例１及び実施例２と同様である。
【００５１】
論理記述ファイル１００は検証する論理回路の論理記述を示す。シミュレータ部２００−３は、論理記述、入出力信号の供給状態、負荷容量などを論理記述ファイル１００から抽出する。遅延条件ファイルＦ３は、複数の入力端子の複数の入力信号の入力幅と供給状態とに基づく素子遅延値情報を保持する。シミュレータ部２００−３は、論理記述ファイル１００から提供される論理記述と入出力端子の入出力信号の供給状態と負荷容量などと、遅延条件ファイルＦ３から提供される素子遅延値情報とに基づき、検証する論理回路の複数の論理ゲート毎の素子遅延値を計算する。またシミュレータ部２００−３は、複数の入力端子の複数の入力信号の供給状態及び出力信号の供給状態に対応した遅延係数データと、論理記述ファイル１００から提供される負荷容量とに基づき配線遅延値を算出する。遅延係数データは、実施例１及び実施例２と同様にシミュレータ部２００−３の外部ファイルを参照する方法と、シミュレータ部２００−３内に予め保持する方法のどちらでも良いとする。更に、出力端子の出力信号情報に決定した素子遅延値と配線遅延値とを加算した遅延値（Ｄｉ＋ＴＤｉ）を設定し論理シミュレーションを実行する。シミュレーション結果３００はシミュレーション結果を格納する。
【００５２】
図２１は実施例３の遅延条件ファイルＦ３の構成例である。
遅延条件ファイルＦ３は、ブロック名Ｆ３１と、遅延パス情報Ｆ３２と、入力幅・供給状態の条件式Ｆ３３と、素子遅延値情報を示す数式情報（固定値含む）Ｆ３４及びＦ３５とを備える。ブロック名Ｆ３１は、検証する論理回路の論理ゲートの名称を示す。遅延パス情報Ｆ３２は、出力端子の出力変化がどの入力端子の入力信号変化によるものであるかを示す。即ち、遅延条件ファイルＦ３は複数の論理ゲート（ブロック名Ｆ３１）と、複数の遅延パス情報Ｆ３２とを保持している。入力幅・供給状態の条件式Ｆ３３は、入力端子の入力信号の入力幅及び供給状態に基づき遅延値が切替わる条件を表す。入力信号の供給状態は、検証する論理ゲートの複数の入力端子の複数の入力信号の状態を含む。素子遅延値情報を示す数式情報（固定値含む）Ｆ３４及びＦ３５は、入力幅・供給状態の条件式Ｆ３３に対応した素子遅延値を保持する。素子遅延値情報を示す数式情報（固定値含む）Ｆ３４及びＦ３５は、論理シミュレーションを実行する際に、出力端子の出力信号情報に設定する。
【００５３】
素子遅延値情報を示す数式情報（固定値含む）Ｆ３４及びＦ３５に示すＴＰＤ４〜ＴＰＤ８は、それぞれ異なる固定遅延値情報を表す。図１６のブロック図同様に、入力端子ＰＯＣという論理には直接関係のない端子を持つ場合に、Ｌ２１、Ｌ２２、Ｌ２３は入力端子ＰＯＣの信号状態が０の時の素子遅延値を表す。Ｌ２４、Ｌ２５、Ｌ２６は入力端子ＰＯＣの信号状態が１の時の素子遅延値を表す。つまり、Ｌ２１〜Ｌ２３およびＬ２４〜Ｌ２６は、入力信号の入力幅に対応する素子遅延値を算出可能とし、且つ論理には直接関係のない入力端子の素子遅延値への影響を含んでいる。Ｌ２０は、入力幅が短いため素子遅延値情報を示す数式情報（固定値含む）Ｆ３４及びＦ３５はＥｒｒｏｒとなっているが、論理には直接関係のない入力端子ＰＯＣの影響を加味している。即ち、実施例３は入力幅に基づき素子遅延値を求める状況において、論理ゲートに含まれる複数の入力端子の内、検証対象の入力端子の入力信号を除く、その論理ゲートの残りの複数の入力端子の複数の入力信号の各々の供給状態を加味することで、より精度の良いシミュレーションを可能にした。Ｌ２７およびＬ２８は、入力幅の範囲情報がなく、入力端子の入力信号の供給状態と、論理には直接関係のない入力端子の入力信号の供給状態とが与えられている場合の記述である。Ｌ２９は、検証する入力端子の入力信号の供給状態のみが与えられる場合の記述である。以上より、遅延条件ファイルＦ３は入力幅遅延ファイルＦ１及び遅延ファイルＦ２の遅延動作を表すことを可能にする。
【００５４】
シミュレータ部２００−３は、シミュレータ部２００−１及びシミュレータ部２００−２の論理動作部２３１及び論理動作部２３２を論理動作部２３２へ変更している。それ以外は、図１０の構成と同じである。
【００５５】
図２２は、論理動作部２３３の構成を示したものである。
論理動作部２３３は、入力幅計算部２３１−１と、入力信号供給調査部２３３−１と、素子遅延値決定部２３３−２と、配線遅延値決定部２３０−１と、遅延値演算部２３０−２とを備える。
【００５６】
入力幅計算部２３１−１は、検証する論理ゲートの入力端子の入力信号に基づき入力幅を計算する。入力信号供給調査部２３３−１は、イベント伝搬部２２０から提供された論理ゲート情報及び遅延パス情報などに基づき、検証対象となる論理ゲートの全ての入力端子の入力信号の供給状態を調査する。そして、検証対象の入力信号の供給状態に対応した遅延条件ファイルＦ３を参照する。素子遅延値決定部２３３−２は、入力端子の入力信号の入力幅及び供給状態に基づいた素子遅延値を、参照した入力幅遅延ファイルＦ３から決定する。配線遅延値決定部２３０−１は、実施例１及び実施例２と同様に配線遅延値を算出する。遅延値演算部２３０−２は、決定した素子遅延値と配線遅延値とを加算し、遅延値を算出する。
【００５７】
図２３は、本発明論理シミュレータの実施例３の処理動作を示すフローチャートである。実施例１及び実施例２と比較すると論理動作部２３３（ステップＳ４２）を変更している。それ以外は実施例１及び実施例２と同様である。入力信号は、論理記述ファイル１００からシミュレーション用に提供される。イベント伝搬部２２０は、取り出したイベントを伝搬する（ステップＰ３０）。伝搬に係る情報は、論理記述ファイル１００に含まれている。イベント伝搬部２２０は、論理記述ファイル１００に基づきシミュレーションに係る、論理ゲート情報、遅延パス情報などを論理動作部２３３へ提供する。論理動作部２３３は、論理ゲート毎の遅延値を決定する（ステップＳ４２）。入力信号計算部２３１−１は、入力信号に基づき入力幅を計算する（ステップＳ４０−１）。入力信号供給調査部２３３−１は、検証対象となる論理ゲートの全ての入力端子の入力信号の供給状態を調べる（ステップＳ４２−１）。検証する入力信号の供給状態、論理ゲート情報（ブロック名Ｆ３１）、遅延パス情報Ｆ３２、入力幅・供給状態の条件式Ｆ３３に対応する遅延条件ファイルＦ３を参照する。素子遅延値値決定部２３３−２は、参照する遅延条件ファイルＦ３に基づき素子遅延値情報を示す数式情報（固定値含む）Ｆ３４及びＦ３５を選択する（ステップＳ４２−２）。入力幅Ｗが計算されていない場合は、検証する入力端子の入力信号の供給状態に基づく固定素子遅延値情報を選択する（図２１のＬ２７〜Ｌ２９）。そして前述入力端子（ＰＯＣ）の複数の入力信号の供給状態に対応する、固定素子遅延値情報を決定する（図２１のＬ２７、Ｌ２８）。また、前述入力端子（ＰＯＣ）の条件がない場合は、検証する入力信号の供給状態から固定素子遅延値情報を決定する（図２１のＬ２９）。遅延値演算部２３０−２は、遅延条件ファイルＦ３に基づき決定した素子遅延値と、配線遅延値決定部２３０−１で決定した配線遅延値とを加える（ステップＳ４０−３）。以下動作は実施例１及び実施例２と同様である。
【００５８】
遅延条件ファイルＦ３は、入力幅遅延ファイルＦ１と遅延ファイルＦ２の内容を同時使用する効果をもたらす。実施例３は、検証する入力端子の入力信号の入力幅に基づいて素子遅延値を設定する方法と、検証する入力端子の入力信号の供給状態に基づいての素子遅延値を設定する方法とを１つのファイルで可能にしている。更に、それら２つの方法に論理ゲートに含まれる複数の入力端子の内、検証対象の入力端子の入力信号を除く、その論理ゲートの残りの複数の入力端子の複数の入力信号の各々の供給状態の影響を加味することも可能にしている。即ち、実施例１と実施例２の効果を合わせ持ち、更に簡潔に精度良く論理シミュレーションを実行することが出来るようになった。また、実施例３は入力ファイルが１つになることで、入力幅遅延ファイルＦ１と遅延ファイルＦ２の２つのファイルを作成する処理が軽減される。よって論理シミュレーション実行時に入力幅遅延ファイルＦ１と遅延ファイルＦ２との両方から素子遅延値を取得する処理が１つに集約されるため開発工数を削減出来る効果も得られる。
【００５９】
実施例１〜３で説明したように、本発明は小さい入力幅にも対応した遅延値を設定可能とし、高精度な論理シミュレーションの実現に至った。また、特許文献１と比較して動作周波数の入力幅が小さい信号に対応出来るため、テストパタン上で高い動作周波数の設定が可能である。
【図面の簡単な説明】
【００６０】
【図１】図１は、特許文献１の論理シミュレータである。
【図２】図２は、特許文献１の論理シミュレータの構成要素の一つである、論理記述オブジェクト部６のブロック図である。
【図３】図３は、特許文献１の論理シミュレーションの処理動作を示すフローチャートである。
【図４】図４は、入力幅と素子遅延値の関係を示したグラフである。
【図５】図５は、本発明の論理シミュレータおよび論理シミュレーションにおけるハードウエア構成例を示すブロック図である。
【図６】図６は、本発明の論理シミュレータの一実施例である実施例１を示したブロック図である。
【図７】図７は、入力端子の入力信号の入力幅を示したタイミングチャートである。
【図８】図８は、本発明の論理シミュレータの一実施例である実施例１の入力幅遅延ファイルＦ１の構成例を示す図である。
【図９】図９は、入力幅と素子遅延時間の関係の一例を示したグラフである。
【図１０】図１０は、本発明の論理シミュレータのシミュレータ部２００−１の構成を示す図である。
【図１１】図１１は、本発明の論理シミュレータのシミュレータ部２００−１の論理動作部２３１の構成を示す図である。
【図１２】図１２は、本発明の論理シミュレーションの一実施例である実施例１の処理動作を示すフローチャートである。
【図１３】図１３は、本発明の論理シミュレーションの一実施例である実施例１の処理動作の詳細を示したフローチャートである。
【図１４】図１４は、本発明の論理シミュレータの一実施例である実施例２を示したブロック図である。
【図１５】図１５は、本発明の論理シミュレータの一実施例である実施例２の遅延ファイルＦ２の構成例を示す図である。
【図１６】図１６は、遅延ファイルＦ２を構成するための一シンボル図である。
【図１７】図１７は、本発明の論理シミュレータのシミュレータ部２００−２の論理動作部２３２の構成を示す図である。
【図１８】図１８は、本発明の論理シミュレーションの一実施例である実施例２の処理動作を示すフローチャートである。
【図１９】図１９は、本発明の論理シミュレーションの一実施例である実施例２の処理動作の詳細を示したフローチャートである。
【図２０】図２０は、本発明の論理シミュレータの一実施例である実施例３を示すブロック図である。
【図２１】図２１は、本発明の論理シミュレータの一実施例である実施例３の遅延条件ファイルＦ３の構成例を示す図である。
【図２２】図２２は、本発明の論理シミュレータのシミュレータ部２００−３の論理動作部２３３の構成を示す図である。
【図２３】図２３は、本発明の論理シミュレータの一実施例である実施例３の処理動作を示したフローチャートである。
【符号の説明】
【００６１】
１          論理記述部
２          コンパイラ
３          遅延ライブラリ
４          遅延計算部
５          遅延ファイル
６          論理記述オブジェクト部
６−１      Ｆ／Ｉテーブル
６−２      Ｆ／Ｏテーブル
６−３      論理テーブル
６−４      素子遅延テーブル
６−５      配線遅延テーブル
７          シミュレータ部
８          シミュレーション結果
１０        ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ；中央演算処理装置）
２０        記憶装置
３０        入力装置
４０        出力装置
５０        バス
１００      論理記述ファイル
２００−１  シミュレータ部
２００−２  シミュレータ部
２００−３  シミュレータ部
２１０      イベント取り出し部
２２０      イベント伝搬部
２３０−１  配線遅延値決定部
２３０−２  遅延値演算部
２３１      論理動作部
２３１−１  入力幅計算部
２３１−２  素子遅延値決定部
２３２      論理動作部
２３２−１  入力信号供給調査部
２３２−２  素子遅延値選択部
２３２−３  遅延パス情報検索部
２３２−４  素子遅延値決定部
２３３      論理動作部
２３３−１  入力信号供給調査部
２３３−２  素子遅延値決定部
２４０      遅延時間設定部
２５０      イベント登録部
２６０      イベント発生時刻保持部
２７０      シミュレーション終了判定部
２８０      時間設定部
３００      シミュレーション結果
Ｆ１        入力幅遅延ファイル
Ｆ２        遅延ファイル
Ｆ３        遅延条件ファイル
【図１】
2009134500.tif 000003
【図２】
2009134500.tif 000004
【図３】
2009134500.tif 000005
【図４】
2009134500.tif 000006
【図５】
2009134500.tif 000007
【図６】
2009134500.tif 000008
【図７】
2009134500.tif 000009
【図８】
2009134500.tif 000010
【図９】
2009134500.tif 000011
【図１０】
2009134500.tif 000012
【図１１】
2009134500.tif 000013
【図１２】
2009134500.tif 000014
【図１３】
2009134500.tif 000015
【図１４】
2009134500.tif 000016
【図１５】
2009134500.tif 000017
【図１６】
2009134500.tif 000018
【図１７】
2009134500.tif 000019
【図１８】
2009134500.tif 000020
【図１９】
2009134500.tif 000021
【図２０】
2009134500.tif 000022
【図２１】
2009134500.tif 000023
【図２２】
2009134500.tif 000024
【図２３】
2009134500.tif 000025