(57)【特許請求の範囲】
【請求項１】
複数のセルを相互に接続してなる半導体集積回路について、個々のセルごとに、そのセル自身によって生じる固有遅延値ｔ０と、所定の遅延因子を示すパラメータＰを引数とする関数ｆ（Ｐ）とを定義し、個々のセルごとの遅延時間Ｔを、前記固有遅延値ｔ０と前記関数ｆ（Ｐ）との和として求め、この遅延時間Ｔを用いて論理シミュレーションを行う方法において、
個々のセルについて、前記パラメータＰのとるべき全範囲にわたって共通の固有遅延値ｔ０を定義し、この固有遅延値ｔ０を収容した第１のセルライブラリを作成する第１の段階と、
前記パラメータＰのとるべき範囲を複数ｎ個の領域に分割し、ｉ番目（１≦ｉ≦ｎ）の領域についてのセルの遅延時間Ｔｉが、Ｔｉ＝ｔ０ｉ＋ｆｉ（Ｐ）なる演算に基づいて定まるように、個々のセルごとに、それぞれｎ組の固有遅延値ｔ０ｉおよび関数ｆｉ（Ｐ）を定義し、これらｎ組の固有遅延値ｔ０ｉおよび関数ｆｉ（Ｐ）を収容した第２のセルライブラリを作成する第２の段階と、
半導体集積回路を構成する個々のセルについて、それぞれ適用すべきパラメータＰを決定し、決定したパラメータＰに基づいて、前記第２のセルライブラリから特定の固有遅延値ｔ０ｉおよび関数ｆｉ（Ｐ）を選択し、前記第１のセルライブラリ内の固有遅延値ｔ０を用いて、ｔｅ＝ｆｉ（Ｐ）＋（ｔ０ｉ−ｔ０）なる演算によって状態依存遅延値ｔｅを求める第３の段階と、
各セルごとに一義的に定義されている固有遅延値を用いて演算を行うように設計されているシミュレータ装置に対して、前段階で求めた状態依存遅延値ｔｅと前記第１のセルライブラリ内の固有遅延値ｔ０との和をセルの遅延時間Ｔとして与え、論理シミュレーションを実行する第４の段階と、
を有することを特徴とする集積回路の論理シミュレーション方法。
【請求項２】
請求項１に記載の論理シミュレーション方法において、
パラメータＰを、複数ｍ個の遅延因子に関するｍ組の値ｐ１，ｐ２，…，ｐｍによって構成し、このｍ組の各値をそれぞれ座標軸にとったｍ次元空間を定義し、このｍ次元空間を複数ｎ個の領域に分割し、ｉ番目（１≦ｉ≦ｎ）の領域についての関数として、ｍ組の値ｐ１，ｐ２，…，ｐｍを引数とした関数ｆｉ（ｐ１，ｐ２，…，ｐｍ）を定義するようにしたことを特徴とする集積回路の論理シミュレーション方法。
【請求項３】
複数のセルを相互に接続してなる半導体集積回路について、個々のセルごとに、そのセル自身によって生じる固有遅延値ｔ０と、所定の遅延因子を示すパラメータ値Ｐおよびこのパラメータ値Ｐに対する依存係数ｋとを定義し、個々のセルごとの遅延時間Ｔを、前記固有遅延値ｔ０と、前記パラメータ値Ｐおよび依存係数ｋとの積ｋ・Ｐからなる状態依存遅延値ｔｅと、の和として求め、この遅延時間Ｔを用いて論理シミュレーションを行う方法において、
個々のセルについて、前記パラメータＰのとるべき全範囲にわたって共通の固有遅延値ｔ０を定義し、この固有遅延値ｔ０を収容した第１のセルライブラリを作成する第１の段階と、
前記パラメータ値Ｐのとるべき範囲を複数ｎ個の領域に分割し、パラメータ値Ｐがｉ番目（１≦ｉ≦ｎ）の領域に属する場合の遅延時間Ｔｉが、Ｔｉ＝ｔ０ｉ＋ｋｉ・Ｐなる演算に基づいて定まるように、個々のセルごとに、それぞれｎ組の固有遅延値ｔ０ｉおよび依存係数ｋｉを定義し、これらｎ組の固有遅延値ｔ０ｉおよび依存係数ｋｉを収容した第２のセルライブラリを作成する第２の段階と、
半導体集積回路を構成する個々のセルについて、それぞれ適用すべきパラメータ値Ｐを決定し、決定したパラメータ値Ｐに基づいて、前記第２のセルライブラリから特定の固有遅延値ｔ０ｉおよび依存係数ｋｉを選択し、前記第１のセルライブラリ内の固有遅延値ｔ０を用いて、ｔｅ＝ｋｉ・Ｐ＋（ｔ０ｉ−ｔ０）なる演算によって状態依存遅延値ｔｅを求める第３の段階と、
各セルごとに一義的に定義されている固有遅延値を用いて演算を行うように設計されているシミュレータ装置に対して、前段階で求めた状態依存遅延値ｔｅと前記第１のセルライブラリ内の固有遅延値ｔ０との和をそのセルについての遅延時間Ｔとして与え、論理シミュレーションを実行する第４の段階と、
を有することを特徴とする集積回路の論理シミュレーション方法。
【請求項４】
請求項１〜３のいずれかに記載の論理シミュレーション方法において、
第１のセルライブラリ内の固有遅延値ｔ０を、第２のセルライブラリ内にも収容するようにし、第３の段階における状態依存遅延値ｔｅの演算を、第２のセルライブラリのみを用いて行うようにしたことを特徴とする集積回路の論理シミュレーション方法。
【請求項５】
請求項１〜４のいずれかに記載の論理シミュレーション方法において、
所定の遅延因子を示すパラメータ値Ｐとして、個々のセルの出力負荷容量ＣＬを用いるようにし、セル間の配線に基づく遅延値を状態依存遅延値ｔｅとして定義することを特徴とする集積回路の論理シミュレーション方法。
【請求項６】
請求項１〜４のいずれかに記載の論理シミュレーション方法において、
所定の遅延因子を示すパラメータ値Ｐとして、個々のセルへの入力波形の歪みを示す値を用いるようにし、この入力波形の歪みに基づく遅延値を状態依存遅延値ｔｅとして定義することを特徴とする集積回路の論理シミュレーション方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は集積回路の論理シミュレーション方法に関し、特に、複数のセルを相互に接続してなる半導体集積回路について、個々のセルごとに、そのセル自身によって生じる固有遅延値と、所定の遅延因子に基づいて発生する状態依存遅延値とを考慮して論理シミュレーションを行う方法に関する。
【０００２】
【従来の技術】
半導体集積回路を設計する場合、設計段階の集積回路に対して論理シミュレーションを実行し、その結果に基づいて必要な設計変更を施し、変更後の集積回路について再び論理シミュレーションを実行する、という過程を繰り返すことにより、回路の最適化が図られる。こうして最適化された回路図が得られたら、この回路図に基づいて、集積回路マスクパターンが設計される。そして、このマスクパターンに含まれる個々の図形から、配線に付随する抵抗値Ｒや容量値Ｃなどを求め、これらの値に基づいて実遅延時間を演算により求め、再び論理シミュレーションを行って動作検証を行うことになる。
【０００３】
通常、半導体集積回路は、複数のセルによって構成されており、論理シミュレーションにおける遅延時間の算出は、個々のセルごとに行われる。各セルについての種々の情報は、セルライブラリとして用意されており、遅延時間に関する情報もこのセルライブラリに収容されている。シミュレータ装置は、セルライブラリ内に用意された遅延時間に関する情報を参照して、個々のセルについての遅延時間を決定し、論理シミュレーションを実行することになる。
【０００４】
ところで、個々のセルについて実際に生じる遅延時間Ｔは、そのセル自身によって生じる遅延値（以下、固有遅延値ｔ０と呼ぶ）と、所定の遅延因子によって生じる遅延値（以下、状態依存遅延値ｔｅと呼ぶ）との和として取り扱われている。ここで、セルの固有遅延値ｔ０は、そのセルの出力負荷容量（そのセルの後段に接続される配線の容量）や、そのセルに与えられる入力信号波形の歪み（いわゆる波形なまり）といった要素を一切考慮しないセル自身の固有の遅延値である。したがって、１つのセルを単独で取り出した場合には、この固有遅延値ｔ０は、適切な遅延時間を示すことになる。ところが、複数のセルを相互に接続してなる集積回路では、固有遅延値ｔ０の他に状態依存遅延値ｔｅを考慮しなければ、適切な遅延時間を求めることができず、個々のセルについての遅延時間Ｔは、固有遅延値ｔ０と状態依存遅延値ｔｅとの和として求められることになる。ここで、固有遅延値ｔ０は、個々のセルに固有の一定値になるが、状態依存遅延値ｔｅは、遅延因子を示すパラメータ値Ｐの関数となる。通常、所定の依存係数ｋを用いたｔｅ＝ｋ・Ｐなる線形関数が定義される。したがって、個々のセルについての遅延時間Ｔは、Ｔ＝ｔ０＋ｋ・Ｐなる式で表わされることになる。たとえば、遅延因子を示すパラメータ値Ｐとして、出力負荷容量ＣＬを用いた場合、個々のセルについての遅延時間Ｔは、Ｔ＝ｔ０＋ｋ・ＣＬなる式で表わされる。
【０００５】
このように、実際の集積回路内の個々のセルについての遅延時間Ｔを求めるためには、そのセルについての固有遅延値ｔ０と状態依存遅延値ｔｅとが必要になる。ここで、固有遅延値ｔ０は、セルライブラリ内の遅延情報として予め用意しておくことができるが、状態依存遅延値ｔｅは、出力負荷容量や入力波形の歪みといった遅延因子によって変動するために、セルライブラリ内に予め用意しておくことはできない。このため、実際の集積回路の回路図が確定した段階で、その集積回路を構成する個々のセルごとに遅延因子を示すパラメータ値Ｐを定め、状態依存遅延値ｔｅを演算によって求める作業が必要になる。通常、この演算はディレイカリキュレータ装置を用いて行われる。たとえば、遅延因子を示すパラメータとして、出力負荷容量を用いた場合は、セル後段の配線についての寄生容量ＣＬに基づいて、状態依存遅延値ｔｅが演算されることになる。なお、この寄生容量ＣＬの値は、マスクパターンが既に設計されている段階では、そのマスクパターンを構成する配線図形から求めることができるが、マスクパターンの設計前の段階では、標準的な容量値が用いられる。
【０００６】
結局、シミュレータ装置は、セルライブラリから得られる固有遅延値ｔ０と、ディレイカリキュレータ装置から与えられる状態依存遅延値ｔｅとに基づいて、個々のセルごとの遅延時間Ｔを求めることができるので、個々のセル内部の動作をシミュレートする必要がなくなり、演算負担が軽減されることになる。
【０００７】
【発明が解決しようとする課題】
集積回路の微細化、大規模化の需要は益々高まってきており、より高精度な論理シミュレーションが要求されるようになってきている。特に、個々のセルの出力負荷容量や入力波形歪みといった遅延因子に基づく状態依存遅延値ｔｅを正確に考慮した論理シミュレーションが望まれるようになってきている。ところが、従来の論理シミュレーションでは、上述したように、各セルの状態依存遅延値ｔｅは、遅延因子を示すパラメータ値Ｐのとるべき全範囲について、所定の依存係数ｋを用いたｔｅ＝ｋ・Ｐなる単一の線形関数で定義されているため、精度の高い遅延時間を求めることができないという問題がある。すなわち、実際には、状態依存遅延値ｔｅを求めるための依存係数ｋは、パラメータ値Ｐのとるべき全範囲について一定ではなく、個々の領域ごとに異なるのにもかかわらず、従来は、全範囲についてほぼ平均的な依存係数ｋを適用する近似的な手法を採っていたため、高精度な論理シミュレーションを行うことができなかったのである。
【０００８】
そこで本発明は、個々のセルについての遅延時間をより高精度に求めることができる集積回路の論理シミュレーション方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
(1)   本発明の第１の態様は、複数のセルを相互に接続してなる半導体集積回路について、個々のセルごとに、そのセル自身によって生じる固有遅延値ｔ０と、所定の遅延因子を示すパラメータＰを引数とする関数ｆ（Ｐ）とを定義し、個々のセルごとの遅延時間Ｔを、固有遅延値ｔ０と関数ｆ（Ｐ）との和として求め、この遅延時間Ｔを用いて論理シミュレーションを行う方法において、
個々のセルについて、パラメータＰのとるべき全範囲にわたって共通の固有遅延値ｔ０を定義し、この固有遅延値ｔ０を収容した第１のセルライブラリを作成する第１の段階と、
パラメータＰのとるべき範囲を複数ｎ個の領域に分割し、ｉ番目（１≦ｉ≦ｎ）の領域についてのセルの遅延時間Ｔｉが、Ｔｉ＝ｔ０ｉ＋ｆｉ（Ｐ）なる演算に基づいて定まるように、個々のセルごとに、それぞれｎ組の固有遅延値ｔ０ｉおよび関数ｆｉ（Ｐ）を定義し、これらｎ組の固有遅延値ｔ０ｉおよび関数ｆｉ（Ｐ）を収容した第２のセルライブラリを作成する第２の段階と、
半導体集積回路を構成する個々のセルについて、それぞれ適用すべきパラメータＰを決定し、決定したパラメータＰに基づいて、第２のセルライブラリから特定の固有遅延値ｔ０ｉおよび関数ｆｉ（Ｐ）を選択し、第１のセルライブラリ内の固有遅延値ｔ０を用いて、ｔｅ＝ｆｉ（Ｐ）＋（ｔ０ｉ−ｔ０）なる演算によって状態依存遅延値ｔｅを求める第３の段階と、
各セルごとに一義的に定義されている固有遅延値を用いて演算を行うように設計されているシミュレータ装置に対して、前段階で求めた状態依存遅延値ｔｅと第１のセルライブラリ内の固有遅延値ｔ０との和をセルの遅延時間Ｔとして与え、論理シミュレーションを実行する第４の段階と、
を行うようにしたものである。
【００１０】
(2)   本発明の第２の態様は、上述の第１の態様に係る論理シミュレーション方法において、
パラメータＰを、複数ｍ個の遅延因子に関するｍ組の値ｐ１，ｐ２，…，ｐｍによって構成し、このｍ組の各値をそれぞれ座標軸にとったｍ次元空間を定義し、このｍ次元空間を複数ｎ個の領域に分割し、ｉ番目（１≦ｉ≦ｎ）の領域についての関数として、ｍ組の値ｐ１，ｐ２，…，ｐｍを引数とした関数ｆｉ（ｐ１，ｐ２，…，ｐｍ）を定義するようにしたものである。
【００１１】
(3)   本発明の第３の態様は、複数のセルを相互に接続してなる半導体集積回路について、個々のセルごとに、そのセル自身によって生じる固有遅延値ｔ０と、所定の遅延因子を示すパラメータ値Ｐおよびこのパラメータ値Ｐに対する依存係数ｋとを定義し、個々のセルごとの遅延時間Ｔを、固有遅延値ｔ０と、パラメータ値Ｐおよび依存係数ｋとの積ｋ・Ｐからなる状態依存遅延値ｔｅと、の和として求め、この遅延時間Ｔを用いて論理シミュレーションを行う集積回路の論理シミュレーション方法において、
個々のセルについて、パラメータＰのとるべき全範囲にわたって共通の固有遅延値ｔ０を定義し、この固有遅延値ｔ０を収容した第１のセルライブラリを作成する第１の段階と、
パラメータ値Ｐのとるべき範囲を複数ｎ個の領域に分割し、パラメータ値Ｐがｉ番目（１≦ｉ≦ｎ）の領域に属する場合の遅延時間Ｔｉが、Ｔｉ＝ｔ０ｉ＋ｋｉ・Ｐなる演算に基づいて定まるように、個々のセルごとに、それぞれｎ組の固有遅延値ｔ０ｉおよび依存係数ｋｉを定義し、これらｎ組の固有遅延値ｔ０ｉおよび依存係数ｋｉを収容した第２のセルライブラリを作成する第２の段階と、
半導体集積回路を構成する個々のセルについて、それぞれ適用すべきパラメータ値Ｐを決定し、決定したパラメータ値Ｐに基づいて、第２のセルライブラリから特定の固有遅延値ｔ０ｉおよび依存係数ｋｉを選択し、第１のセルライブラリ内の固有遅延値ｔ０を用いて、ｔｅ＝ｋｉ・Ｐ＋（ｔ０ｉ−ｔ０）なる演算によって状態依存遅延値ｔｅを求める第３の段階と、
各セルごとに一義的に定義されている固有遅延値を用いて演算を行うように設計されているシミュレータ装置に対して、前段階で求めた状態依存遅延値ｔｅと第１のセルライブラリ内の固有遅延値ｔ０との和をそのセルについての遅延時間Ｔとして与え、論理シミュレーションを実行する第４の段階と、
を行うようにしたものである。
【００１２】
(4)   本発明の第４の態様は、上述の第１〜第３の態様に係る集積回路の論理シミュレーション方法において、
第１のセルライブラリ内の固有遅延値ｔ０を、第２のセルライブラリ内にも収容するようにし、第３の段階における状態依存遅延値ｔｅの演算を、第２のセルライブラリのみを用いて行うようにしたものである。
【００１３】
(5)   本発明の第５の態様は、上述の第１〜第４の態様に係る集積回路の論理シミュレーション方法において、
所定の遅延因子を示すパラメータ値Ｐとして、個々のセルの出力負荷容量ＣＬを用いるようにし、セル間の配線に基づく遅延値を状態依存遅延値ｔｅとして定義するようにしたものである。
【００１４】
(6)   本発明の第６の態様は、上述の第１〜第４の態様に係る集積回路の論理シミュレーション方法において、
所定の遅延因子を示すパラメータ値Ｐとして、個々のセルへの入力波形の歪みを示す値を用いるようにし、この入力波形の歪みに基づく遅延値を状態依存遅延値ｔｅとして定義するようにしたものである。
【００１５】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。
【００１６】
§１．  従来の回路設計および論理シミュレーション方法
はじめに、説明の便宜上、従来の一般的な集積回路の設計および論理シミュレーションの基本手順を図１の流れ図に基づいて述べる。まず、ステップＳ１において、半導体集積回路の構成部品となる個々のセルについてのセルマスクパターンａが準備される。続くステップＳ２では、このセルマスクパターンａに基づいて、このセルの動作特性を示す情報をもったセルライブラリｂが作成される。具体的には、セルライブラリｂを作成するために、次のような処理が行われる。まず、セルマスクパターンａに基づいて、そのセル内の回路素子を認識し、それらの図形寸法から素子サイズ、抵抗値あるいは容量値などの素子パラメータを算出する。更に、これら各回路素子の相互接続関係を記述したネットリストを抽出し、このネットリストを用いて回路シミュレーションを実行してセル内の動作特性を求める。
【００１７】
ここでは、図２に示すような単純なセルを例にとって、より具体的な説明を行うことにする。このセルは、「ＩＮＶ」なる名称をもったセルであり、単一のインバータ素子のみから構成され、１つの入力端子Ｉおよび１つの出力端子Ｏを有するセルである（図では、各端子をＸ印で示してある）。もちろん、通常の一般的なセルは、より多数の回路素子から構成されているが、ここでは説明の便宜上、このような単純なセル「ＩＮＶ」について以下の説明を行うことにする。ステップＳ１で準備されるセルマスクパターンａは、たとえば、このセル「ＩＮＶ」の場合、インバータを構成するトランジスタなどの回路素子の図形パターンになる。ステップＳ２では、この図形パターンに基づいて、個々のトランジスタ素子のサイズ、抵抗値あるいは容量値などが算出され、個々のトランジスタ素子の相互接続関係を示すネットリストが抽出される。そして、このネットリストを利用して回路シミュレーションが実行され、このセルの動作特性、すなわち遅延時間Ｔが求められる。
【００１８】
既に述べたように、あるセルについての遅延時間Ｔは、そのセル自身によって生じる遅延値（固有遅延値ｔ０）と、所定の遅延因子によって生じる遅延値（状態依存遅延値ｔｅ）との和として取り扱われる。遅延因子として機能する要素としては、そのセルの出力負荷容量（そのセルの後段に接続される配線の容量）や、そのセルに与えられる入力信号波形の歪み（いわゆる波形なまり）などがあげられる。なお、以下の説明では、便宜上、出力負荷容量を代表的な遅延因子として取り上げ、遅延因子を示すパラメータ値Ｐとして出力負荷容量の容量値ＣＬを例にとることにするが、本発明における遅延因子は、出力負荷容量に限定されるものではない。
【００１９】
図３は、図２に示すセル「ＩＮＶ」の後段に、出力負荷容量ＣＬを接続した状態を示す回路図である。この出力負荷容量ＣＬは、セル「ＩＮＶ」と次段のセルとを相互接続する配線に付随する寄生容量に相当するものであり、この出力負荷容量ＣＬの容量値ＣＬ（ここでは、容量素子自身も、その容量値も、同じ記号ＣＬで表わすことにする）の大きさによって、セル「ＩＮＶ」についての遅延時間Ｔは変化することになる。図４は、出力負荷容量ＣＬとセル「ＩＮＶ」についての遅延時間Ｔとの関係を示すグラフである。このグラフに示されているように、セル「ＩＮＶ」についての遅延時間Ｔは、Ｔ＝ｔ０＋ｋ・ＣＬなる線形関数で近似できる。ここでは、右辺第１項を、固有遅延値ｔ０と呼び、右辺第２項を、状態依存遅延値ｔｅと呼ぶことにする。固有遅延値ｔ０は、セル「ＩＮＶ」自身によって生じる遅延値であり、図４のグラフにおけるＴ軸（縦軸）についての切片値を示すものである。一方、状態依存遅延値ｔｅは、所定の依存係数ｋと出力負荷容量ＣＬとの積ｋ・ＣＬで定義され、依存係数ｋは図４のグラフの傾きを示すものである。
【００２０】
ステップＳ２で実施される回路シミュレーションでは、図４に示すようなグラフが求められ、その結果、図５に示すような遅延情報がセル「ＩＮＶ」のセルライブラリｂ内に用意される。図５に示す例では、セル名「ＩＮＶ」に続いて、このセルの固有遅延値ｔ０＝１．０（ｎｓ）と、出力負荷容量依存係数ｋ＝１．０（ｎｓ／ｐＦ）という具体的な数値が示されている。実際には、多数のセルのそれぞれについて、この図５に示すような遅延情報が求められ、セルライブラリｂが作成されることになる。
【００２１】
続いて、ステップＳ３において、集積回路の回路図を作成する作業が行われる。すなわち、回路の設計者は、セルライブラリｂ内に用意された多数のセルを組み合わせることにより所望の集積回路を構築する。別言すれば、この回路図を作成する作業は、多数のセル間の相互接続関係を規定する作業ということになる。通常、このセル間の相互接続関係は、階層構造をもったネットリストという形式で表現される。そこで、続くステップＳ４では、この回路図についての階層展開処理が行われ、階層構造をもたない回路図（個々のセルを相互接続してなる回路図）が得られることになる。ここでは、図２に示すセル「ＩＮＶ」を２組直列接続することによって、図６に示すようなＴＯＰなる最上位階層で示される集積回路が構成されたものとして、以下の説明を続けることにする。この図６に示すＴＯＰなる階層で示される集積回路は、インスタンス名「Ｘ１」および「Ｘ２」が付与された２組のセル「ＩＮＶ」のみから構成された単純な回路であるが、実際の集積回路は、多重階層で表現された多数のセルの相互接続によって構成されることになる。
【００２２】
こうして個々のセルレベルにまで展開された回路図が得られると、ステップＳ５において、セル間配線についての配線遅延時間が算出される。この配線遅延時間は、前述した状態依存遅延値ｔｅに相当するものであり、ディレイカリキュレータ装置によって求められる。図７は、図６に示す回路図において、各セルの後段の配線部分の寄生容量（出力負荷容量）を示す容量素子を付記したものである。この例では、インスタンス名「Ｘ１」なるセルの後段には、出力負荷容量ＣＬ１が接続されており、インスタンス名「Ｘ２」なるセルの後段には、出力負荷容量ＣＬ２が接続されている。これらの各出力負荷容量の値は、セル間配線のマスクパターンが作成されている段階であれば、そのマスクパターンの図形寸法に基づいて演算することができるが、セル間配線のマスクパターンがまだ作成されていない段階であれば、各セルの後段に接続する標準的なセル間配線の容量値として設定することができる。ここでは、図７に示す出力負荷容量ＣＬ１については、標準的なセル間配線層の容量値として０．５ｐＦなる容量値が設定され、出力負荷容量ＣＬ２については、集積回路の出力端子ＯＵＴへの標準的な配線層の容量値として２ｐＦなる容量値が設定されたものとする。
【００２３】
ディレイカリキュレータ装置は、このように、個々の配線層についての具体的な容量値を設定した上で、図５に示すようなセルライブラリ内の遅延情報に基づいて、各経路ごとの配線遅延値（状態依存遅延値ｔｅ）を求める演算を行う。すなわち、セルＸ１の出力端子ＯからセルＸ２の入力端子Ｉに至るまでの経路（出力負荷容量ＣＬ１に対応する経路）については、配線遅延値ｔｅ＝ｋ・ＣＬ１＝１．０＊０．５＝０．５（ｎｓ）が求まり、セルＸ２の出力端子Ｏから集積回路の出力端子ＯＵＴに至るまでの経路（出力負荷容量ＣＬ２に対応する経路）については、配線遅延値ｔｅ＝ｋ・ＣＬ２＝１．０＊２．０＝２．０（ｎｓ）が求まる。図８は、このようにして求められた各経路ごとの配線遅延値を示す図表である。こうしてディレイカリキュレータ装置によって求まった配線遅延値は、図１に示すように、配線遅延情報ｃとして出力される。
【００２４】
最後に、ステップＳ６において、論理シミュレーションが行われる。すなわち、シミュレータ装置に対して、ステップＳ２で作成されたセルライブラリｂと、ステップＳ５で作成した配線遅延情報ｃとを与えると、集積回路全体についてのトータルの遅延時間を求めるシミュレーションが実行される。もっとも、この論理シミュレーションでは、個々のセルを構成する各回路素子内の電気信号の流れが実際にシミュレートされるわけではなく、個々のセルの固有の遅延時間については、セルライブラリｂによって与えられる固有遅延値ｔ０を用い、セル間配線層に起因した遅延時間については、配線遅延情報ｃによって与えられる配線遅延値（状態依存遅延値ｔｅ）を用い、模擬的なシミュレートが行われるだけである。図７に示す集積回路の場合、セルＸ１およびセルＸ２についての固有遅延値ｔ０は、セルライブラリｂ内に定義されているとおり、いずれも１．０（ｎｓ）であり（図５参照）、セルＸ１の出力端子ＯからセルＸ２の入力端子Ｉに至るまでの経路についての配線遅延値ｔｅは０．５（ｎｓ）であり、セルＸ２の出力端子Ｏから集積回路の出力端子ＯＵＴに至るまでの経路についての配線遅延値ｔｅは２．０（ｎｓ）であるから（図８参照）、結局、集積回路全体の遅延時間は、１．０＋０．５＋１．０＋２．０＝４．５（ｎｓ）となる。
【００２５】
§２．  従来方法の問題点とその改善方法
上述の例では、図４のグラフに示すように、各セルについての遅延時間Ｔを、Ｔ＝ｔ０（固有遅延値）＋ｋ・ＣＬ（状態依存遅延値）なる線形関数に近似させて取り扱っているが、より精度の高い結果を得るためには、このような単一の線形関数による近似では不十分である。本願発明者は、出力負荷容量や入力波形の歪みといった一般的な遅延因子に関しては、この遅延因子を示すパラメータ値Ｐのとるべき範囲を複数ｎ個の領域に分割し、各領域ごとに異なる依存係数ｋを設定すると、より精度の高い結果を得ることができることを見出だした。実用上は、ｎ＝２に設定し、パラメータ値Ｐについての座標軸を、所定の閾値を境にして、閾値未満の領域と閾値以上の領域とに分割し、各領域ごとにそれぞれ異なる依存係数ｋを設定するようにすれば十分である。
【００２６】
図９は、出力負荷容量ＣＬをパラメータ値Ｐとして用いたときの、出力負荷容量ＣＬと遅延時間Ｔとの関係を示すグラフである。図に一点鎖線で示すグラフは、図４に示した従来のグラフであり、横軸の全領域にわたって共通の依存係数ｋを用い、
Ｔ＝ｔ０＋ｋ・ＣＬ                          (1)
なる線形関数で遅延時間Ｔを一義的に定義したものである。これに対して、図に実線で示すグラフは、出力負荷容量値ＣＬＸを閾値として、横軸を２つの領域に分割し、各領域ごとに異なる依存係数を用いて遅延時間Ｔを定義したものであり、遅延時間Ｔは、
Ｔ＝ｔ０１＋ｋ１・ＣＬ  （ＣＬ＜ＣＬＸ）    (2)
Ｔ＝ｔ０２＋ｋ２・ＣＬ  （ＣＬ≧ＣＬＸ）    (3)
なる関数で定義されることになる。出力負荷容量や入力波形の歪みといった一般的な遅延因子に関しては、図９に実線で示す関数を用いた方がより正確な遅延時間Ｔを表現することが可能になる。従来は、出力負荷容量ＣＬの全領域にわたって共通の依存係数ｋ（全領域にわたる平均的な係数値）を用いていたため、図９に一点鎖線で示すように、本来の遅延時間Ｔに対してかなりの誤差が生じていたことになる。
【００２７】
このように、本発明の基本的な手法は、パラメータ値Ｐの領域ごとにそれぞれ異なる依存係数ｋを設定するという点にある。しかしながら、この手法を従来の論理シミュレーションプロセスにそのまま取り入れることはできない。たとえば、図１の流れ図に示す従来の手順において、ステップＳ５における配線遅延時間の算出処理では、上述した式(1) の右辺第２項「ｋ・ＣＬ」によって配線遅延値（状態依存遅延値ｔｅ）を算出していた。この算出処理に、本発明の基本的な手法をそのまま取り入れるのであれば、式(1) の代わりに、式(2) もしくは式(3) を用いて「ｋ１・ＣＬ」もしくは「ｋ２・ＣＬ」によって配線遅延値（状態依存遅延値ｔｅ）を算出することになる。ところが、配線遅延値の算出に式(2) もしくは式(3) を用いてしまうと、ステップＳ６の論理シミュレーションにおいても、式(2) 内の固有遅延値ｔ０１もしくは式(3) 内の固有遅延値ｔ０２を用いる必要がある。たとえば、ある特定のセルについて、ステップＳ５における配線遅延時間を、式(2) を用いた「ｋ１・ＣＬ」なる演算で求めた場合、ステップＳ６の論理シミュレーションでは、この特定のセルについての固有遅延値として式(2) 内の固有遅延値ｔ０２を用いる必要がある。
【００２８】
図９に示されているように、各式における固有遅延値ｔ０，ｔ０１，ｔ０２は、各グラフの遅延時間軸Ｔの切片値に相当するものであり、いずれの式を適用するかによって用いるべき固有遅延値の値はそれぞれ異なることになる。このため、ステップＳ５において、出力負荷容量ＣＬの値に応じて異なる式を適用して配線遅延値を算出した場合には、ステップＳ６においても、それぞれ異なる固有遅延値を用いた演算を行う必要がある。ところが、ステップＳ６の論理シミュレーションを実行するシミュレータ装置は、セルライブラリｂ内の固有遅延値（各セルごとに一義的に定義されている）を用いて演算を行うように設計されているため、複数とおりの固有遅延値を用いた演算を行うことはできない。このような問題を解決するために、シミュレータ装置のプログラムを書き替えて、複数とおりの固有遅延値を用いた演算を実行する機能を付加することも可能である。しかしながら、本発明では、より単純な方法でこのような問題を解決し、従来のシミュレータ装置に何ら改変を施すことなく、上述した本発明の基本的な手法を取り込むことができるようにしている。以下、この方法を具体例に即して説明する。
【００２９】
§３．  本発明に係る論理シミュレーション方法
図１０は、本発明に係る集積回路の設計および論理シミュレーションの基本手順を示す流れ図である。まず、ステップＳ１１において、半導体集積回路の構成部品となる個々のセルについてのセルマスクパターンａが準備される（このステップＳ１１は、図１の流れ図のステップＳ１と同様である）。続くステップＳ１２では、このセルマスクパターンａに基づいて、このセルの動作特性を示す情報をもったセルライブラリが作成される。ただし、図１のステップＳ２とは異なり、このステップＳ１２では、第１のセルライブラリｂ１と第２のセルライブラリｂ２との２つのライブラリが作成される。
【００３０】
第１のセルライブラリｂ１は、図１の流れ図のステップＳ２で作成されるセルライブラリｂと同一のものであり、たとえば、図２に示すセル「ＩＮＶ」については、図５に示すような遅延情報をもった第１のセルライブラリｂ１が作成されることになる（もっとも、本発明では、第１のセルライブラリｂ１内の出力負荷容量依存係数ｋの値は不要である）。ここで、この第１のセルライブラリｂ１内の固有遅延値ｔ０は、出力負荷容量ＣＬのとるべき全範囲にわたって共通の値となり、この値は、最終的にシミュレータ装置においてそのまま利用されることになる。
【００３１】
一方、第２のセルライブラリｂ２は、出力負荷容量ＣＬのとるべき範囲を複数ｎ個の領域に分割し、ＣＬがｉ番目（１≦ｉ≦ｎ）の領域に属する場合の遅延時間Ｔｉが、Ｔｉ＝ｔ０ｉ＋ｋｉ・ＣＬなる演算に基づいて定まるように、個々のセルごとに、それぞれｎ組の固有遅延値ｔ０ｉおよび依存係数ｋｉを定義し、これらｎ組の固有遅延値ｔ０ｉおよび依存係数ｋｉを収容したものである。ここに示す例では、前述したように、出力負荷容量ＣＬのとるべき範囲を２個の領域に分割し（ｎ＝２）、
Ｔ＝ｔ０１＋ｋ１・ＣＬ  （ＣＬ＜ＣＬＸ）    (2)
Ｔ＝ｔ０２＋ｋ２・ＣＬ  （ＣＬ≧ＣＬＸ）    (3)
なる演算式によって遅延時間Ｔを求めるようにしている。したがって、第２のセルライブラリｂ２内には、上記式(2) および式(3) に基づいて、固有遅延値ｔ０１，ｔ０２と、依存係数ｋ１，ｋ２とが収容されることになる。
【００３２】
これを、より具体的な数値を用いた例で示そう。たとえば、出力負荷容量ＣＬと遅延時間Ｔとの関係が図１１の実線で表わされるようなセルを考える。この例では、ＣＬ＝１．０（ｐＦ）を閾値として２つの領域が定義されており、各領域ごとに異なった固有遅延値および依存係数が定義されている。すなわち、ＣＬ＜１．０の領域では、
Ｔ＝ｔ０１＋ｋ１・ＣＬ＝１．２＋０．５＊ＣＬ    (4)
なる式が定義され、ＣＬ≧１．０の領域では、
Ｔ＝ｔ０２＋ｋ２・ＣＬ＝０．２＋１．５＊ＣＬ    (5)
なる式が定義されている。
【００３３】
この図１１の実線で表わされるような動作特性をもったセルについて、従来は、図１１に一点鎖線で示すように、出力負荷容量ＣＬの全範囲にわたっての近似直線を当てはめ、
Ｔ＝ｔ０＋ｋ・ＣＬ＝１．０＋１．０＊ＣＬ        (6)
なる単一の線形近似式を定義していた。したがって、第１のセルライブラリｂ１内のセル「ＩＮＶ」の遅延情報としては、この式(6) に対応した固有遅延値ｔ０＝１．０（ｎｓ）と、出力負荷容量依存係数ｋ＝１．０（ｎｓ／ｐＦ）とが収容されることになる。図１２(a) は、この第１のセルライブラリｂ１内に収容された遅延情報のフォーマットの一例を示す図である。これに対して、第２のセルライブラリｂ２内のセル「ＩＮＶ」の遅延情報としては、前述の式(4) ，(5) に対応した固有遅延値ｔ０１＝１．２（ｎｓ），ｔ０２＝０．２（ｎｓ）と、出力負荷容量依存係数ｋ１＝０．５（ｎｓ／ｐＦ），ｋ２＝１．５（ｎｓ／ｐＦ）とが収容されることになる。図１２(b) は、この第２のセルライブラリｂ２内に収容された遅延情報のフォーマットの一例を示す図である。ここに示す例では、第２のセルライブラリｂ２内に、各固有遅延値ｔ０１，ｔ０２および各係数ｋ１，ｋ２が、それぞれ出力負荷容量の条件（「１ｐＦ未満」または「１ｐＦ以上」）とともに収容されており、また、第１のセルライブラリｂ１内の固有遅延値ｔ０の値（この例では、１．０（ｎｓ））も併せて収容されている。
【００３４】
こうして、ステップＳ１２において、第１のセルライブラリｂ１および第２のセルライブラリｂ２が作成されると、続くステップＳ１３において、集積回路の回路図を作成する作業が行われ、ステップＳ１４において、回路図の階層展開が行われる。これらの各処理は、図１に示すステップＳ３およびステップＳ４の処理と同一であり、ここでは説明を省略する。
【００３５】
階層展開により、個々のセルレベルにまで展開された回路図が得られると、ステップＳ１５において、セル間配線についての配線遅延時間が、ディレイカリキュレータ装置によって求められる。このステップＳ１５の処理は、図１のステップＳ５の処理とほぼ同じであるが、第１のセルライブラリｂ１の代わりに、第２のセルライブラリｂ２内の遅延情報を用いた演算が行われる点が異なる。すなわち、図７に示す例において、セルＸ１の出力端子ＯからセルＸ２の入力端子Ｉに至るまでの経路（出力負荷容量ＣＬ１に対応する経路：以下、第１の経路と呼ぶ）については、出力負荷容量ＣＬ１＝０．５ｐＦであるから、図１２(b) に示す第２のセルライブラリ内の遅延情報を参照すると、出力負荷容量が１ｐＦ未満という条件が適用され、依存係数ｋ１＝０．５（ｎｓ／ｐＦ）を用いた演算により、配線遅延値ｔｅ＝ｋ１・ＣＬ１＝０．５＊０．５＝０．２５（ｎｓ）なる値が得られることになる。同様に、セルＸ２の出力端子Ｏから集積回路の出力端子ＯＵＴに至るまでの経路（出力負荷容量ＣＬ２に対応する経路：以下、第２の経路と呼ぶ）については、出力負荷容量ＣＬ２＝２．０ｐＦであるから、図１２(b) に示す第２のセルライブラリ内の遅延情報を参照すると、出力負荷容量が１ｐＦ以上という条件が適用され、依存係数ｋ２＝１．５（ｎｓ／ｐＦ）を用いた演算により、配線遅延値ｔｅ＝ｋ２・ＣＬ２＝１．５＊２．０＝３．０（ｎｓ）なる値が得られることになる。
【００３６】
図１３は、こうして得られた各経路についての配線遅延値を示す図表である。図８に示す図表と比較すると、各値にかなりの差があることがわかる。このように、図８に示す配線遅延値に比べ、図１３に示す配線遅延値はより精度の高い値になっている。しかしながら、この図１３に示す配線遅延値をそのまま配線遅延情報として出力し、これを論理シミュレーションに用いることは好ましくない。§２においても述べたように、出力負荷容量ＣＬの領域により異なる依存係数ｋを設定すると、グラフのＴ軸切片値も異なることになるので、論理シミュレーションを行う上で、各領域ごとに異なる固有遅延値を採用しなければならなくなるためである。
【００３７】
たとえば、図１３に示す例では、第１の経路についての配線遅延値として０．２５（ｎｓ）、第２の経路についての配線遅延値として３．０（ｎｓ）なる値がそれぞれ得られているが、これらの値は、それぞれ異なる固有遅延値を採用することを前提として得られた値である。したがって、第１の経路について０．２５（ｎｓ）なる配線遅延値を採るのであれば、第１のセルＸ１の固有遅延値としては、ｔ０１＝１．２（ｎｓ）なる値（図１１の実線上のＴ軸切片値）を採り、第２の経路について３．０（ｎｓ）なる配線遅延値を採るのであれば、第２のセルＸ２の固有遅延値としては、ｔ０２＝０．２（ｎｓ）なる値（図１１の破線上のＴ軸切片値）を採る必要がある。しかしながら、従来から利用されている一般的なシミュレータ装置は、１つのセルについて１つの固有遅延値が定義されていることを前提とした処理を行うため、同一の「ＩＮＶ」なるセルについて、ｔ０１＝１．２（ｎｓ）なる第１の固有遅延値と、ｔ０２＝０．２（ｎｓ）なる第２の固有遅延値とを、集積回路内の遅延因子を考慮して使い分けるという処理を行うことはできず、第１のセルライブラリｂ１内に設定された共通の固有遅延値ｔ０＝１．０（ｎｓ）を用いた処理を行わざるを得ない。
【００３８】
そこで本発明では、ステップＳ１５において配線遅延時間を算出する段階で、固有遅延値ｔ０との差を補正する処理を行うようにしている。すなわち、第１の経路については、出力負荷容量が１ｐＦ未満という条件が適用されているので、本来は、ｔ０１＝１．２（ｎｓ）なる第１の固有遅延値を用いる必要があるので、この第１の固有遅延値ｔ０１と、第１のセルライブラリｂ１内に設定された共通の固有遅延値ｔ０との差（ｔ０１−ｔ０）＝１．２−１．０＝０．２（ｎｓ）を求め、この差を補正値として、図１３に示す配線遅延値０．２５（ｎｓ）に加えることにより、補正後の配線遅延値０．４５（ｎｓ）を求める。同様に、第２の経路については、出力負荷容量が１ｐＦ以上という条件が適用されているので、本来は、ｔ０２＝０．２（ｎｓ）なる第２の固有遅延値を用いる必要があるので、この第２の固有遅延値ｔ０２と、第１のセルライブラリｂ１内に設定された共通の固有遅延値ｔ０との差（ｔ０２−ｔ０）＝０．２−１．０＝−０．８（ｎｓ）を求め、この差を補正値として、図１３に示す配線遅延値３．０（ｎｓ）に加えることにより、補正後の配線遅延値２．２（ｎｓ）を求める。図１４は、こうして得られた補正後の配線遅延値を示す図表である。
【００３９】
結局、ステップＳ１５では、ディレイカリキュレータ装置を用いて、個々の経路について、次のような演算が行われることになる。まず、その経路の出力負荷容量ＣＬが１ｐＦ未満か、１ｐＦ以上かを判断する。そして、１ｐＦ未満の場合には、
ｔｅ＝ｋ１・ＣＬ＋（ｔ０１−ｔ０）              (7)
なる式に基づいて、配線遅延値ｔｅを求める。逆に、１ｐＦ以上の場合には、
ｔｅ＝ｋ２・ＣＬ＋（ｔ０２−ｔ０）              (8)
なる式に基づいて、配線遅延値ｔｅを求める。上述の具体例の場合、第１の経路については、出力負荷容量ＣＬ１＝０．５ｐＦ（１ｐＦ未満）なので、式(7) を適用して、
ｔｅ＝０．５＊０．５＋（１．２−１．０）＝０．４５
なる演算が行われ、第２の経路については、出力負荷容量ＣＬ２＝２．０ｐＦ（１ｐＦ以上）なので、式(8) を適用して、
ｔｅ＝１．５＊２．０＋（０．２−１．０）＝２．２
なる演算が行われ、最終的に、図１４に示すような補正後の配線遅延値が得られることになる。ステップＳ１５で作成される配線遅延情報ｃ＊は、各配線について、このような補正後の配線遅延値を収容したものである。なお、ここに示す例では、図１２(b) に示すように、第２のセルライブラリｂ２内に、第１のセルライブラリｂ１内の固有遅延値ｔ０の値も収容するようにしているので、ディレイカリキュレータ装置を用いてステップＳ１５の演算処理を行う上では、第２のセルライブラリｂ２のみを用いるだけで十分である。もちろん、このステップＳ１５の処理において、第１のセルライブラリｂ１を参照して固有遅延値ｔ０の値を得るようにするのであれば、第２のセルライブラリｂ２内に固有遅延値ｔ０の値を収容しておく必要はない。
【００４０】
最後に、ステップＳ１６において、論理シミュレーションが行われる。すなわち、シミュレータ装置に対して、ステップＳ１２で作成された第１のセルライブラリｂ１と、ステップＳ１５で作成した配線遅延情報ｃ＊とを与えると、集積回路全体についてのトータルの遅延時間を求めるシミュレーションが実行される。このシミュレーションは、図１の手順におけるステップＳ６のシミュレーションと同一である。すなわち、図７に示す集積回路の場合、セルＸ１およびセルＸ２についての固有遅延値としては、第１のセルライブラリｂ１内に定義されている共通の固有遅延値ｔ０が用いられる。図５に示すように、この共通の固有遅延値ｔ０＝１．０（ｎｓ）である。また、図１４に示すとおり、第１の経路についての補正後の配線遅延値ｔｅは０．４５（ｎｓ）であり、第２の経路についての補正後の配線遅延値ｔｅは２．２（ｎｓ）であるから、結局、集積回路全体の遅延時間は、
１．０＋０．４５＋１．０＋２．２＝４．６５（ｎｓ）    (9)
となる。
【００４１】
上述の演算式(9) の左辺を構成する各項は、必ずしも理論的には正しい意味合いをもった数値ではない。式(9) に対応した正しい意味合いをもった演算式を記述すると、次に示す式(10)のようになる。
【００４２】
１．２＋０．２５＋０．２＋３．０＝４．６５（ｎｓ）    (10)
この式(10)における左辺第１項は、図１２(a) に示すように、出力負荷容量が１ｐＦ未満という条件における固有遅延値ｔ０１の値であり、左辺第２項は、同条件における依存係数ｋ１と出力負荷容量ＣＬ１との積（０．５＊０．５）であり、これら２項は、セルＸ１についての固有遅延値および状態依存遅延値を示すものである。同様に、左辺第３項は、図１２(a) に示すように、出力負荷容量が１ｐＦ以上という条件における固有遅延値ｔ０２の値であり、左辺第４項は、同条件における依存係数ｋ２と出力負荷容量ＣＬ２との積（２．０＊１．５）であり、これら２項は、セルＸ２についての固有遅延値および状態依存遅延値を示すものである。これに対し、式(9) の左辺各項は、必ずしも理論的な正しい意味合いをもつ数値にはなっていない。しかしながら、式(9) を用いた演算を行えば、同一のセルについては、第１のセルライブラリｂ１内に収容されている共通の固有遅延値ｔ０（左辺第１項および第３項）を用いることができるので、従来のシミュレータ装置をそのまま利用することが可能になる。しかも、式(9) を用いた演算結果は、式(10)を用いた演算結果と同じになり、正しい演算結果が得られることになる。
【００４３】
§４．  複数のパラメータ値を用いる場合への拡張
以上、本発明を図示する実施形態に基づいて説明したが、本発明はこの実施形態に限定されるものではなく、この他にも種々の形態で実施可能である。特に、上述の実施形態では、遅延因子を示すパラメータ値Ｐとして出力負荷容量、すなわち、セル後段に接続される配線についての寄生容量値を用いているが、パラメータ値Ｐとしては、この他にも、たとえば、各セルの入力信号波形の歪みを示す値などを用いることも可能である。
【００４４】
また、本発明は、遅延因子を示す複数のパラメータ値を用いる場合にも適用可能である。たとえば、第１の遅延因子を示すパラメータ値ｐ１として、セル後段に接続される出力負荷容量値を用い、第２の遅延因子を示すパラメータ値ｐ２として、セルの入力信号波形の歪みを示す値を用いた場合を考える。この場合、遅延因子を示すパラメータＰは、２つのパラメータ値ｐ１，ｐ２から構成されることになり、これら２つのパラメータ値を引数とする関数ｆ（ｐ１，ｐ２）を定義することにより、１つのセルについての遅延時間Ｔは、固有遅延値ｔ０とこの関数ｆ（ｐ１，ｐ２）との和として定義されることになる。ここで、パラメータ値ｐ１をＸ軸上にとり、パラメータ値ｐ２をＹ軸上にとり、遅延時間ＴをＺ軸上にとれば、Ｔ＝ｔ０＋ｆ（ｐ１，ｐ２）なる式で定義される遅延時間Ｔは、このＸＹＺ三次元空間において面で表される関数になる。
【００４５】
このように、２つのパラメータ値ｐ１，ｐ２を用いたシミュレーションに本発明を適用する場合には、次のような手法をとればよい。まず、ＸＹ平面（ｐ１・ｐ２平面）を複数ｎ個の領域に分割し、各領域ごとにそれぞれ別個の関数を用いて各セルの遅延時間Ｔを定義する。すなわち、ｉ番目（１≦ｉ≦ｎ）の領域についてのセルの遅延時間Ｔｉが、Ｔｉ＝ｔ０ｉ＋ｆｉ（ｐ１，ｐ２）なる演算に基づいて定まるように、合計ｎ組の固有遅延値ｔ０１，ｔ０２，…，ｔ０ｉ，…，ｔ０ｎと、合計ｎ組の関数ｆ１（ｐ１，ｐ２），ｆ２（ｐ１，ｐ２），…，ｆｉ（ｐ１，ｐ２），…，ｆｎ（ｐ１，ｐ２）とを、個々のセルごとに定義し、これらｎ組の固有遅延値ｔ０ｉおよび関数ｆｉ（ｐ１，ｐ２）を収容した第２のセルライブラリを作成する。なお、第１のセルライブラリには、従来どおり、１つのセルについて１つの固有遅延値ｔ０のみが定義されている。
【００４６】
続いて、半導体集積回路を構成する個々のセルについて、それぞれ適用すべき一対のパラメータ値ｐ１，ｐ２を決定し、決定した一対のパラメータ値の組み合わせが、ＸＹ平面（ｐ１・ｐ２平面）上のどの領域に所属するかを特定する。たとえば、ｉ番目の領域に所属する場合には、第２のセルライブラリから、このｉ番目の領域について定義された固有遅延値ｔ０ｉおよび関数ｆｉ（ｐ１，ｐ２）を選択し、第１のセルライブラリ内の固有遅延値ｔ０を用いて、ｔｅ＝ｆｉ（ｐ１，ｐ２）＋（ｔ０ｉ−ｔ０）なる演算によって状態依存遅延値ｔｅを求める。そして、こうして求めた状態依存遅延値ｔｅと第１のセルライブラリ内の固有遅延値ｔ０との和をそのセルの遅延時間Ｔとして、論理シミュレーションを実行すればよい。もちろん、第１のセルライブラリ内の固有遅延値ｔ０を、第２のセルライブラリ内にも収容するようにしておけば、状態依存遅延値ｔｅの演算を、第２のセルライブラリのみを用いて行うようにすることも可能である。
【００４７】
以上、パラメータＰとして、２つのパラメータ値ｐ１，ｐ２を用いる例を述べたが、本発明は、パラメータＰを、複数ｍ個の遅延因子に関するｍ個のパラメータ値ｐ１，ｐ２，…，ｐｍによって構成する一般的な場合にも拡張して適用可能である。この場合には、このｍ個の各パラメータ値をそれぞれ座標軸にとったｍ次元空間を定義し、このｍ次元空間を複数ｎ個の領域に分割し、ｉ番目（１≦ｉ≦ｎ）の領域についての関数として、ｍ組の値ｐ１，ｐ２，…，ｐｍを引数とした関数ｆｉ（ｐ１，ｐ２，…，ｐｍ）を定義するようにすればよい。
【００４８】
結局、本発明の第１の要点は、パラメータＰ（単一のパラメータ値によって表されるパラメータでもよいし、複数のパラメータ値の組み合わせによって表されるパラメータでもよい）のとるべき範囲を複数ｎ個の領域に分割し、各領域ごとに、それぞれ異なる関数を適用して遅延時間の算出を行い、より精度の高い論理シミュレーションを行うことにある。そこで、ｎ個の分割領域のうちのｉ番目の分割領域についての遅延時間Ｔｉを、Ｔｉ＝ｔ０ｉ＋ｆｉ（Ｐ）なる式で定義できるように、それぞれｎ組の固有遅延値ｔ０ｉおよび関数ｆｉ（Ｐ）を定義し（１≦ｉ≦ｎ）、これら固有遅延値ｔ０ｉおよび関数ｆｉ（Ｐ）によって第２のセルライブラリを作成する。原理的には、この第２のセルライブラリを用いて、各セルの実際の遅延時間を求めることが可能である。たとえば、実際の半導体集積回路を構成する具体的なセルＣについての実際のパラメータＰがｉ番目の領域に属していた場合には、第２のセルライブラリから得られるｉ番目の固有遅延値ｔ０ｉを、このセルＣ自身によって生じる固有遅延値とし、同じく第２のセルライブラリから得られるｉ番目の関数ｆｉ（Ｐ）の値を、このセルＣについての状態依存遅延値とし、このセルＣについての全遅延時間Ｔｉを、Ｔｉ＝ｔ０ｉ＋ｆｉ（Ｐ）なる和として求めることができる。
【００４９】
しかしながら、従来から利用されているシミュレータ装置をそのまま利用したシミュレーションを実行できるようにするためには、セル自身によって生じる固有遅延値としては、第１のライブラリ内に用意された単一の値ｔ０（パラメータＰのとるべき範囲にかかわらず共通の値）を用いる必要がある。そこで、（ｔ０ｉ−ｔ０）なる差分を加味した状態依存遅延値ｔｅを、ｔｅ＝ｆｉ（Ｐ）＋（ｔ０ｉ−ｔ０）なる式で定義し、差分を補正するようにしている。これが本発明の第２の要点である。したがって、本発明によれば、シミュレータ装置による演算では、従来と同様に、第１のセルライブラリ内の固有遅延値ｔ０が用いられるが、ディレイカリキュレータ装置による演算では、上述した補正後の状態依存遅延値ｔｅ＝ｆｉ（Ｐ）＋（ｔ０ｉ−ｔ０）が用いられることになり、最終的に、このセルについてのトータルな遅延時間Ｔｉとしては、Ｔｉ＝ｔ０＋ｔｅ＝ｔ０ｉ＋ｆｉ（Ｐ）なる値が得られることになり、前述の第１の要点で述べた所期の遅延値を得ることが可能になる。
【００５０】
結局、上述した第１の要点と第２の要点とを組み合わせることにより、従来から利用されているシミュレータ装置をそのまま利用しつつ、各セルについて得られる遅延時間の精度を高めることが可能になる。
【００５１】
【発明の効果】
以上のとおり本発明に係る集積回路の論理シミュレーション方法によれば、従来から利用されているシミュレータ装置をそのまま利用して、個々のセルについての遅延時間をより高精度に求めることができるようになる。
【図面の簡単な説明】
【図１】従来の一般的な集積回路の設計および論理シミュレーションの基本手順を示す流れ図である。
【図２】図１に示す手順で利用されるセル「ＩＮＶ」の一例を示す回路図である。
【図３】図２に示すセル「ＩＮＶ」の後段に、出力負荷容量ＣＬを接続した状態を示す回路図である。
【図４】図３に示す回路において、出力負荷容量ＣＬと遅延時間Ｔとの関係を示すグラフである。
【図５】図４に示すグラフに基づいてセルライブラリ内に用意される遅延情報を示す図表である。
【図６】図２に示すセルを組み合わせて構成された集積回路の一例を示す回路図である。
【図７】図６に示す回路において、各セルの後段の配線部分の寄生容量（出力負荷容量）を示す容量素子を付記した回路図である。
【図８】図１に示す手順のステップＳ５において得られた各経路についての配線遅延値を示す図表である。
【図９】出力負荷容量ＣＬをパラメータ値Ｐとして用いたときの、出力負荷容量ＣＬと遅延時間Ｔとの関係を示すグラフである。
【図１０】本発明に係る集積回路の設計および論理シミュレーションの基本手順を示す流れ図である。
【図１１】出力負荷容量ＣＬをパラメータ値Ｐとして用いたときの、出力負荷容量ＣＬと遅延時間Ｔとの関係を具体的な数値で示すグラフである。
【図１２】図１０のステップＳ１２で作成される第１のセルライブラリｂ１および第２のセルライブラリｂ２に収容された遅延情報のフォーマット例を示す図である。
【図１３】図１０に示す手順のステップＳ１５において得られた各経路についての補正前の配線遅延値を示す図表である。
【図１４】図１０に示す手順のステップＳ１５において得られた各経路についての補正後の配線遅延値を示す図表である。
【符号の説明】
ａ…セルマスクパターン
ｂ…セルライブラリ
ｂ１…第１のセルライブラリ
ｂ２…第２のセルライブラリ
ｃ，ｃ＊…配線遅延情報
ｔ０，ｔ０１，ｔ０２…セルの固定遅延値
ｋ，ｋ１，ｋ２…出力負荷容量依存係数
ＣＬ，ＣＬ１，ＣＬ２…出力負荷容量
ＣＬＸ…出力負荷容量の閾値
ＩＮＶ…インバータ素子，セル名
Ｔ…１つのセルについての遅延時間
ＴＯＰ…半導体集積回路の最上位階層
Ｘ１，Ｘ２…セルのインスタンス名
【図１】
0003964483.tif 000002
【図２】
0003964483.tif 000003
【図３】
0003964483.tif 000004
【図４】
0003964483.tif 000005
【図５】
0003964483.tif 000006
【図６】
0003964483.tif 000007
【図７】
0003964483.tif 000008
【図８】
0003964483.tif 000009
【図９】
0003964483.tif 000010
【図１０】
0003964483.tif 000011
【図１１】
0003964483.tif 000012
【図１２】
0003964483.tif 000013
【図１３】
0003964483.tif 000014
【図１４】
0003964483.tif 000015