(57)【要約】  【課題】半導体集積回路の設計におけるクロックスキューのばらつきに対するシミュレーションを、クロックツリー全体をシミュレーションするのと等価で且つ効率的（現実的）な回路規模で行なえるようにする。  【解決手段】全体乱数列生成部１０２は、製造ばらつきとして回路全体の全体乱数列１１４を生成し、信号パス乱数列抽出部１０３は、回路全体を分割して作った部分回路に用いる信号パス乱数列１１５を全体乱数列１１４から抽出する。回路シミュレーション部１０４は、各部分回路と対応する信号パス乱数列１１５を用いてモンテカルロ解析を実行して、所望の回路特性分布１１７を得る。これにより、分割された回路特性分布同士の間に相関関係を維持できる上に、クロックスキュー分布計算等に用いることができると共に、回路シミュレーション対象の回路規模を小さくすることができる。【選択図】      図１
2006146345.tif 000002
【特許請求の範囲】
【請求項１】
製造ばらつきを考慮した回路特性のばらつきを回路シミュレーションにより算出する半導体集積回路の設計方法であって、
複数の回路素子を含む回路の各回路素子に対して、製造ばらつきの指標となる全体乱数列を生成する工程（ａ）と、
前記回路を複数の部分回路に分割する工程（ｂ）と、
分割された前記部分回路ごとに、前記全体乱数列から前記各部分回路と対応する乱数列を部分回路乱数列として抽出する工程（ｃ）と、
抽出された前記部分回路乱数列を用いて、モンテカルロ法により回路シミュレーションを行なうことにより、前記部分回路ごとに遅延分布を算出する工程（ｄ）と備えていることを特徴とする半導体集積回路の設計方法。
【請求項２】
前記工程（ａ）において、前記製造ばらつきの指標には、任意のばらつきを用いることを特徴とする請求項１に記載の半導体集積回路の設計方法。
【請求項３】
前記工程（ａ）において、前記製造ばらつきの指標には、任意のばらつきと配置環境で決定されるシステマティックばらつきとを用いることを特徴とする請求項１に記載の半導体集積回路の設計方法。
【請求項４】
前記回路は複数の信号パスを有し、
前記工程（ｂ）において、前記各部分回路は、前記複数の信号パスを該信号パスごとに分割することを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路の設計方法。
【請求項５】
前記回路は複数の回路ブロックからなり、
前記工程（ｂ）において、前記各部分回路は、前記複数の回路ブロックを該回路ブロックごとに分割することを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路の設計方法。
【請求項６】
前記回路は複数の信号パスを有し、
前記工程（ｂ）において、前記各部分回路は、前記複数の信号パスを該パスごとに接続されている負荷を含めて分割することを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路の設計方法。
【請求項７】
前記負荷は前記各部分回路に接続されているファンアウトゲートであることを特徴とする請求項６に記載の半導体集積回路の設計方法。
【請求項８】
前記負荷は前記各部分回路に接続されているフリップフロップ回路であることを特徴とする請求項６に記載の半導体集積回路の設計方法。
【請求項９】
前記工程（ｂ）において、前記各部分回路は、該部分回路ごとに寄生する寄生素子を含めて分割することを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路の設計方法。
【請求項１０】
前記工程（ｂ）は、前記寄生素子に対して製造ばらつきの指標となる乱数列を付与する工程を含むことを特徴とする請求項９に記載の半導体集積回路の設計方法。
【請求項１１】
前記回路は前記回路素子がそれぞれがツリー状に接続された複数のクロック回路であり、前記各部分回路は少なくとも１つの信号パスを含む回路であり、
前記工程（ｄ）は、前記信号パスごとにパス遅延分布を算出する工程を含み、
前記工程（ｄ）よりも後に、前記工程（ｄ）で求められた前記パス遅延分布からクロックスキュー分布を算出する工程（ｅ）をさらに備えていることを特徴とする請求項１〜１０のいずれか１項に記載の半導体集積回路の設計方法。
【請求項１２】
前記工程（ｅ）は、前記複数のクロック回路が有する複数の出力端子のうちのいずれか２つの出力端子間で信号パスを共有する度合いを表わす信号経路共通度合いを算出する工程を含み、
前記クロックスキュー分布を算出する際の前記各出力端子同士の組合せとして、前記信号経路共通度合いが小さい出力端子を優先して組み合わせることを特徴とする請求項１１に記載の半導体集積回路の設計方法。
【請求項１３】
それぞれがツリー状に接続された複数の回路素子を有するクロック回路における、製造ばらつきを考慮したクロックスキューのばらつきを回路シミュレーションにより算出する半導体集積回路の設計方法であって、
前記クロック回路は、前記複数の回路素子同士の接続情報を信号パスとして記述した複数のクロック回路記述として表わされ、
前記各回路素子に対して、製造ばらつきの指標となる全体乱数列を生成する工程（ａ）と、
前記複数のクロック回路記述を前記信号パス単位に分割する工程（ｂ）と、
分割された前記クロック回路記述ごとに、前記全体乱数列から前記分割された各クロック回路記述と対応する乱数列を信号パス乱数列として抽出する工程（ｃ）と、
分割された前記各クロック回路記述と、抽出された前記信号パス乱数列とを用いて、モンテカルロ法により回路シミュレーションを行なうことにより、前記信号パスごとにパス遅延分布を算出する工程（ｄ）と、
算出されたパス遅延分布同士から遅延差の分布であるクロックスキュー分布を算出する工程（ｅ）とを備えていることを特徴とする半導体集積回路の設計方法。
【請求項１４】
製造ばらつきを考慮した回路特性のばらつきを回路シミュレーションにより算出する半導体集積回路の設計装置であって、
複数の回路素子を含む回路の各回路素子に対して、製造ばらつきの指標となる全体乱数列を生成する全体乱数列生成手段と、
前記回路を複数の部分回路に分割する回路分割手段と、
分割された前記部分回路ごとに、前記全体乱数列から前記各部分回路と対応する乱数列を部分回路乱数列として抽出する乱数列抽出手段と、
抽出された前記部分回路乱数列を用いて、モンテカルロ法により回路シミュレーションを行なうことにより、前記部分回路ごとに遅延分布を算出する回路シミュレーション手段と備えていることを特徴とする半導体集積回路の設計装置。
【請求項１５】
それぞれがツリー状に接続された複数の回路素子を有するクロック回路における、製造ばらつきを考慮したクロックスキューのばらつきを回路シミュレーションにより算出する半導体集積回路の設計装置であって、
前記クロック回路は、前記複数の回路素子同士の接続情報を信号パスとして記述した複数のクロック回路記述として表わされ、
前記各回路素子に対して、製造ばらつきの指標となる全体乱数列を生成する全体乱数列生成手段と、
前記複数のクロック回路記述を前記信号パス単位に分割する回路記述分割手段と、
分割された前記クロック回路記述ごとに、前記全体乱数列から前記分割された各クロック回路記述と対応する乱数列を信号パス乱数列として抽出するパス乱数列抽出手段と、
分割された前記各クロック回路記述と、抽出された前記信号パス乱数列とを用いて、モンテカルロ法により回路シミュレーションを行なうことにより、前記信号パスごとにパス遅延分布を算出する回路シミュレーション手段と、
算出されたパス遅延分布同士から遅延差の分布であるクロックスキュー分布を算出するクロックスキュー分布算出手段とを備えていることを特徴とする半導体集積回路の設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法及びその設計装置に関し、特にシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等の設計を行なう際に、製造上のばらつきに起因する回路特性とりわけクロック回路特性のばらつきを評価する回路シミュレーションを行なう半導体集積回路の設計方法及びその設計装置に関する。
【背景技術】
【０００２】
近年、製造技術の発達と共に、トランジスタの微細化が進展し、その集積度が急速に向上してきたため、例えばＣＭＩＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｉｎｓｕｌａｔｏｒ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）半導体集積回路（以下、ＬＳＩと称す。）には種々多様な機能を組み込むことができるようになってきている。
【０００３】
このようなＬＳＩを開発する際には、通常、回路シミュレーションが用いられる。回路シミュレーションは、回路の動作をコンピュータのソフトウエア上で仮想的に再現する技術であり、回路設計時には、回路の最適化及び動作確認等の目的で広く用いられている。種々ある中の代表的な回路シミュレーションソフトウエア（以後、回路シミュレータと称す。）には、米国Ｓｙｎｏｐｓｙｓ社のＨＳＰＩＣＥや、米国Ｎａｓｓｄａ社のＨＳＩＭがある。
【０００４】
ところで、回路設計においては、設計余裕すなわち設計マージンが設けられるのが一般的である。設計マージンとは、回路特性に影響を与える種々の要因を受けたとしても、回路が正常に動作するように、あらかじめ設計時に見込む余裕のことである。設計マージンに考慮すべき要因にはさまざまあるが、製造時のばらつき及びゆらぎをもその要因に含める必要がある。製造ばらつきには、例えば、リソグラフィ工程や研磨工程で生じる加工寸法のばらつきや、ドーパント密度の粗密等の材質のばらつきがある。製造ばらつきが生じると、回路中のトランジスタや配線の特性も変動してしまい、その結果、トランジスタや配線から構成されるＬＳＩの特性も変動する。微細化が急速に進むなか、製造ばらつきの回路特性への影響がますます顕著になってきている。
【０００５】
ＬＳＩは種々の回路特性が仕様を満たすように設計され、とりわけ回路のタイミング設計には注意が払われる。回路を信号が伝わる際には一般に信号伝搬遅延が生じるが、この信号伝搬遅延が仕様を満たすように設計される。
【０００６】
クロック信号はＬＳＩの内部動作を同期させる信号であり、該クロック信号を供給するクロック回路のタイミング設計には最も注意が払われる。
【０００７】
図３３にクロック回路の一例を示す。入力端子Ｉからクロック木（ツリー）と呼ばれる回路を経由して、出力端子Ｏ１〜Ｏ４にクロック信号が供給される。通常、出力端子Ｏ１〜Ｏ４はフリップフロップに接続される。入力端子Ｉから各出力端子Ｏ１〜Ｏ４にまでクロック信号が通過する際には遅延が生じ、各出力端子Ｏ１〜Ｏ４における遅延差がクロックスキュー（以下、単にスキューと称す。）である。スキューが大きいと回路の誤動作を起こす原因となることから、設計マージンに相当するスキューの許容範囲を設定しておき、設計時にその許容範囲を満たしているか否かを検証することがタイミング設計工程では行なわれている。
【０００８】
スキューの検証は、簡単には、クロック信号経路の遅延の標準値に所定の係数値を乗じた遅延のワースト（最悪）値を各クロックの出力端子ごとに求め、それらワースト遅延同士の間の差をスキューとして計算し、計算されたスキューが許容範囲に収まっているか否かを確認するという方法が採られる。しかしながら、この検証方法は、製造ばらつきによるスキューへの影響を前記の係数値を介して近似的に且つ一律に組み込んでいるに過ぎない。
【０００９】
製造ばらつきのクロックスキューへの影響をより高精度に解析する方法が望まれるが、それには前述した回路シミュレータを用いて詳細に解析して検証する方法が考えられる。ＬＳＩを製造する際には、たとえ製造ばらつきが生じたとしても回路の正常動作を保証する設計を高精度に行なう必要があるからである。
【００１０】
ところで、製造ばらつきを考慮した統計的な回路シミュレーション方法として、モンテカルロ法が知られている。モンテカルロ法は、端的にいうと、製造ばらつきを与える入力変数に対して特定の確率分布に従って発生させた乱数値を用い、その乱数値ごとに通常の解析を繰り返して実施すると共に解析された結果を総合することにより、出力変数の確率分布を得るという解析手法である。得られた出力変数の確率分布から、回路設計者は回路の動作範囲を検討する。付与する乱数の個数（反復数）を十分に大きくすれば、非常に精度が高い確率分布を得られる解析手法である。
【００１１】
このモンテカルロ法に基づく回路シミュレーションによりクロックツリー回路の解析を行なうと、各出力端子における遅延が乱数ごとに求まる。
【００１２】
クロック出力端子ｊ，ｋ間に生じるスキューは、出力端子ｊにおける遅延をｔpdjされる。
【００１３】
Δｔ＝ｔpdj −ｔpdk   ………（１）
この式（１）により、乱数ごとに且つクロック出力端子の組合せペアごとにスキューを計算し、各計算結果を総合してヒストグラムを描く等して確率分布を求めると、製造ばらつきに起因するスキュー分布を得ることができる。
【００１４】
以下、従来のクロック回路特性のばらつきを評価する半導体集積回路の設計方法には、例えば下記に挙げる３つの特許文献がある。
【００１５】
特許文献１は、クロックスキューを低減できるクロックツリー回路を構成するクロック信号の分配方法であり、各出力端子における伝搬遅延時間が互いに等しくなるように、調整用のバッファを選択的に用いてクロックツリー回路を構成している。しかしながら、特許文献１には、ツリー状のクロックを扱い且つスキューを算出する工程は含まれてはいるものの、製造要因によるばらつきは考慮されておらず、その上、統計的な回路解析も行なわれていない。
【００１６】
特許文献２には、クロックツリー回路の製造ばらつきを考慮したスキュー検証方法が記載されている。クロックツリー回路における信号経路ごとの遅延に、製造ばらつきを表わす所定の係数を乗じてスキューの検証に用いるという構成は示しているものの、統計的な回路解析は行なわれていない。
【００１７】
また、特許文献３は、クロックツリー回路に含まれるバッファを構成するトランジスタのゲート長を、他の論理回路に含まれるトランジスタのゲート長よりも長くする。これにより、クロックツリー回路の製造ばらつきによるゲート長の寸法ずれに対する感度を他の論理回路よりも抑制することによって、結果的にスキューをも低減しようとしている。この特許文献３の発明においても、統計的な回路解析は行なわれていない。
【特許文献１】特許第２８２８０４１号公報
【特許文献２】特許第２９６７７５９号公報
【特許文献３】特開２００１−２１０７１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
その上、前記従来の半導体集積回路の設計方法においては、クロックツリー回路の全体でモンテカルロ法による回路シミュレーションを反復して実行する必要がある。クロックツリー回路の規模がますます増大する現状において、そのような大規模な解析は、処理スピード及び記憶容量等のシミュレーション環境、すなわちコンピュータ資源への要求を非常に高くすることになるため、スキュー分布を高精度に求めるニーズは高いにもかかわらず実現は困難である。
【００１９】
前記に鑑み、本発明は、半導体集積回路の設計におけるクロックスキューのばらつきに対するシミュレーションを、クロックツリー全体をシミュレーションするのと等価で且つ効率的に、すなわち現実的な回路規模で行なえるようにすることを目的とする。
【課題を解決するための手段】
【００２０】
前記の目的を達成するため、本発明は、半導体集積回路の設計方法及びその設計装置を、まず、設計対象とする回路に含まれる回路素子のすべてに対して製造ばらつきの指標となる全体乱数列を生成し、且つ該回路を複数の部分回路に分割する。続いて、分割された部分回路ごとに、全体乱数列から各部分回路と対応する部分回路乱数列に対して、モンテカルロ法により回路シミュレーションを行なう構成とする。
【００２１】
具体的に、本発明に係る第１の半導体集積回路の設計方法は、製造ばらつきを考慮した回路特性のばらつきを回路シミュレーションにより算出する半導体集積回路の設計方法を対象とし、複数の回路素子を含む回路の各回路素子に対して製造ばらつきの指標となる全体乱数列を生成する工程（ａ）と、回路を複数の部分回路に分割する工程（ｂ）と、分割された部分回路ごとに、全体乱数列から各部分回路と対応する乱数列を部分回路乱数列として抽出する工程（ｃ）と、抽出された部分回路乱数列を用いて、モンテカルロ法により回路シミュレーションを行なうことにより、部分回路ごとに遅延分布を算出する工程（ｄ）と備えていることを特徴とする。
【００２２】
第１の半導体集積回路の設計方法によると、複数の回路素子を含む回路の各回路素子に対して製造ばらつきの指標となる全体乱数列を生成すると共に、回路を複数の部分回路に分割し、その後、分割された部分回路ごとに、全体乱数列から各部分回路と対応する乱数列を部分回路乱数列として抽出する。すなわち、設計対象である回路を分割してモンテカルロ解析を行なう際に用いる製造ばらつきを与える乱数に、回路全体の解析に必要な乱数列から抽出した部分乱数を用いるため、分割された各部分回路同士の関係を維持したまま各部分回路の解析を行なうことができる。その結果、回路全体のシミュレーションと等価な解析を部分回路ごとの遅延分布を算出することによって現実的な時間内で行なえるようになる。その上、設計対象である回路を部分回路に分割することから、小規模な回路シミュレーションを並列に処理することも可能となるので、その場合には、スループットがさらに向上する。
【００２３】
第１の半導体集積回路の設計方法は、工程（ａ）において、製造ばらつきの指標には、任意のばらつき（ランダムばらつき）を用いることが好ましい。
【００２４】
また、第１の半導体集積回路の設計方法は、工程（ａ）において、製造ばらつきの指標には、任意のばらつきと配置環境で決定されるシステマティックばらつきとを用いることが好ましい。
【００２５】
第１の半導体集積回路の設計方法において、回路は複数の信号パスを有し、工程（ｂ）において、各部分回路は複数の信号パスを該信号パスごとに分割することが好ましい。
【００２６】
第１の半導体集積回路の設計方法において、回路は複数の回路ブロックからなり、工程（ｂ）において、各部分回路は複数の回路ブロックを該回路ブロックごとに分割することが好ましい。
【００２７】
第１の半導体集積回路の設計方法において、回路は複数の信号パスを有し、工程（ｂ）において、各部分回路は、複数の信号パスを該パスごとに接続されている負荷を含めて分割することが好ましい。
【００２８】
この場合に、負荷は各部分回路に接続されているファンアウトゲートであることが好ましい。
【００２９】
まら、この場合に、負荷は各部分回路に接続されているフリップフロップ回路であることが好ましい。
【００３０】
第１の半導体集積回路の設計方法は、工程（ｂ）において、各部分回路は、該部分回路ごとに寄生する寄生素子を含めて分割することが好ましい。
【００３１】
この場合に、工程（ｂ）は、寄生素子に対して製造ばらつきの指標となる乱数列を付与する工程を含むことが好ましい。
【００３２】
第１の半導体集積回路の設計方法において、回路は回路素子がそれぞれがツリー状に接続された複数のクロック回路であり、各部分回路は少なくとも１つの信号パスを含む回路であり、工程（ｄ）は、信号パスごとにパス遅延分布を算出する工程を含み、第１の設計方法は、工程（ｄ）よりも後に、工程（ｄ）で求められたパス遅延分布からクロックスキュー分布を算出する工程（ｅ）をさらに備えていることが好ましい。
【００３３】
この場合に、工程（ｅ）は、複数のクロック回路が有する複数の出力端子のうちのいずれか２つの出力端子間で信号パスを共有する度合いを表わす信号経路共通度合いを算出する工程を含み、クロックスキュー分布を算出する際の各出力端子同士の組合せとして、信号経路共通度合いが小さい出力端子を優先して組み合わせることが好ましい。
【００３４】
本発明に係る第２の半導体集積回路の設計方法は、それぞれがツリー状に接続された複数の回路素子を有するクロック回路における、製造ばらつきを考慮したクロックスキューのばらつきを回路シミュレーションにより算出する半導体集積回路の設計方法を対象とし、クロック回路は複数の回路素子同士の接続情報を信号パスとして記述した複数のクロック回路記述として表わされ、各回路素子に対して製造ばらつきの指標となる全体乱数列を生成する工程（ａ）と、複数のクロック回路記述を信号パス単位に分割する工程（ｂ）と、分割されたクロック回路記述ごとに、全体乱数列から分割された各クロック回路記述と対応する乱数列を信号パス乱数列として抽出する工程（ｃ）と、分割された各クロック回路記述と、抽出された信号パス乱数列とを用いて、モンテカルロ法により回路シミュレーションを行なうことにより、信号パスごとにパス遅延分布を算出する工程（ｄ）と、算出されたパス遅延分布同士から遅延差の分布であるクロックスキュー分布を算出する工程（ｅ）とを備えていることを特徴とする。
【００３５】
第２の半導体集積回路の設計方法によると、各回路素子に対して製造ばらつきの指標となる全体乱数列を生成すると共に、複数のクロック回路記述を信号パス単位に分割し、その後、分割されたクロック回路記述ごとに、全体乱数列から分割された各クロック回路記述と対応する乱数列を信号パス乱数列として抽出する。すなわち、設計対象であるクロック回路を分割してモンテカルロ解析を行なう際に用いる製造ばらつきを与える乱数に、クロック回路全体の解析に必要な乱数列から抽出した部分乱数を用いるため、分割された各クロック回路記述同士の関係を維持したまま各クロック回路記述の解析を行なうことができるので、クロック回路全体のシミュレーションと等価な解析を、分割されたクロック回路記述ごとの遅延分布を算出することによって現実的な時間内で行なえるようになる。その上、設計対象であるクロック回路を複数のクロック回路記述に分割することから、小規模な回路シミュレーションを並列に処理することも可能となるので、その場合には、スループットをさらに向上させることができる。
【００３６】
本発明に係る第１の半導体集積回路の設計装置は、製造ばらつきを考慮した回路特性のばらつきを回路シミュレーションにより算出する半導体集積回路の設計装置を対象とし、複数の回路素子を含む回路の各回路素子に対して、製造ばらつきの指標となる全体乱数列を生成する全体乱数列生成手段と、回路を複数の部分回路に分割する回路分割手段と、分割された部分回路ごとに、全体乱数列から各部分回路と対応する乱数列を部分回路乱数列として抽出する乱数列抽出手段と、抽出された部分回路乱数列を用いて、モンテカルロ法により回路シミュレーションを行なうことにより、部分回路ごとに遅延分布を算出する回路シミュレーション手段と備えていることを特徴とする。
【００３７】
第１の半導体集積回路の設計装置によると、全体乱数列生成手段は、複数の回路素子を含む回路の各回路素子に対して製造ばらつきの指標となる全体乱数列を生成し、回路分割手段は回路を複数の部分回路に分割し、乱数列抽出手段は、分割された部分回路ごとに全体乱数列から各部分回路と対応する乱数列を部分回路乱数列として抽出する。従って、回路シミュレーション手段は、部分回路ごとに遅延分布を算出できるため、分割された各部分回路同士の関係を維持したまま各部分回路の解析を行なうことができるので、回路全体のシミュレーションと等価な解析を、部分回路ごとに遅延分布を算出することによって現実的な時間内で行なえるようになる。
【００３８】
本発明に係る第２の半導体集積回路の設計装置は、それぞれがツリー状に接続された複数の回路素子を有するクロック回路における、製造ばらつきを考慮したクロックスキューのばらつきを回路シミュレーションにより算出する半導体集積回路の設計装置を対象とし、クロック回路は複数の回路素子同士の接続情報を信号パスとして記述した複数のクロック回路記述として表わされ、各回路素子に対して製造ばらつきの指標となる全体乱数列を生成する全体乱数列生成手段と、複数のクロック回路記述を信号パス単位に分割する回路記述分割手段と、分割されたクロック回路記述ごとに全体乱数列から分割された各クロック回路記述と対応する乱数列を信号パス乱数列として抽出するパス乱数列抽出手段と、分割された各クロック回路記述と抽出された信号パス乱数列とを用いて、モンテカルロ法により回路シミュレーションを行なうことにより、信号パスごとにパス遅延分布を算出する回路シミュレーション手段と、算出されたパス遅延分布同士から遅延差の分布であるクロックスキュー分布を算出するクロックスキュー分布算出手段とを備えていることを特徴とする。
【００３９】
第２の半導体集積回路の設計装置によると、全体乱数列生成手段は、各回路素子に対して製造ばらつきの指標となる全体乱数列を生成し、回路記述分割手段は、複数のクロック回路記述を信号パス単位に分割し、パス乱数列抽出手段は、分割されたクロック回路記述ごとに全体乱数列から分割された各クロック回路記述と対応する乱数列を信号パス乱数列として抽出する。従って、回路シミュレーション手段は、分割されたクロック回路記述ごとに遅延分布を算出できるため、分割された各クロック回路記述同士の関係を維持したまま各クロック回路記述の解析を行なうことができるので、クロック回路全体のシミュレーションと等価な解析を、分割されたクロック回路記述ごとに遅延分布を算出することによって現実的な時間内で行なえるようになる。
【発明の効果】
【００４０】
本発明に係る半導体集積回路の設計方法及びその設計装置によると、分割された部分回路ごとの小規模な回路シミュレーションを、回路全体でシミュレーションする場合と同一の関係を維持したまま行なうことにより、回路素子の遅延分布を効率的に算出することができ、その結果、高精度なクロックスキューばらつきを現実的に時間内で計算できるようになる。
【発明を実施するための最良の形態】
【００４１】
（第１の実施形態）
本発明の第１の実施形態に係る半導体集積回路の設計装置について図面を参照しながら説明する。第１の実施形態においては、ＣＭＩＳトランジスタのうちのＣＭＯＳトランジスタの製造ばらつきを回路特性の変動要因とする回路シミュレーション装置及び回路シミュレーション方法について説明する。
【００４２】
図１は本発明の第１の実施形態に係る回路シミュレーション装置のブロック構成を示している。図１に示すように、第１の実施形態に係る回路シミュレーション装置１００は、回路記述分割部１０１と、全体乱数列生成部１０２と、信号パス乱数列抽出部１０３と、回路シミュレーション部１０４と、クロックスキュー分布算出部１０５とを有している。
【００４３】
回路記述分割部１０１は、図３３に示したような回路シミュレーションの対象であるクロックツリー回路の回路記述であるネットリスト１１１を読み込み、読み込んだネットリスト１１１を分割した分割後ネットリスト１１３を出力する。
【００４４】
全体乱数列生成部１０２は、クロックツリー回路のネットリスト１１１と製造ばらつき情報１１２とを読み込み、読み込んだネットリスト１１１及び製造ばらつき情報１１２から全体乱数列１１４を生成して出力する。
【００４５】
信号パス乱数列抽出部１０３は、分割後ネットリスト１１３と全体乱数列１１４とを読み込み、読み込んだ全体乱数列１１４から、分割後ネットリスト１１３と対応する乱数列を抽出した信号パス乱数列１１５を生成して出力する。
【００４６】
回路シミュレーション部１０４は、信号パス乱数列１１５、分割後ネットリスト１１３及び後述する所定のパラメータ１１６を読み込んでモンテカルロ法によるシミュレーションを行なって、分割された信号パスごとに信号パス遅延分布１１７を生成して出力する。
【００４７】
クロックスキュー分布算出部１０５は、信号パス遅延分布１１７を読み込んで、信号パスごとの遅延差の分布（ばらつき）であるクロックスキュー分布結果１１８を生成して出力する。
【００４８】
図２は図１における分割後ネットリスト１１３からクロックスキュー分布結果１１８までの生成されたデータの流れを視覚的に表現しなおしたデータフロー図である。
【００４９】
また、図３は第１の実施形態に係る回路シミュレーション装置をコンピュータシステムとして組み込んだ実装例を模式的に示している。図３に示すように、端末コンピュータ２０１は、メインコンピュータ２０２とネットワーク２０３を介して接続されている。
【００５０】
端末コンピュータ２０１とメインコンピュータ２０２とには、ＣＰＵ（central processing unit）、ＲＡＭ（random access memory）、ＲＯＭ（read only memory）、ハードディスク装置及びインタフェース機器等が内蔵された一般的な構成でよく、詳細な動作の説明は省略する。
【００５１】
図１に示した回路シミュレーション装置１００は、図４に示す処理フローに従って処理を行なう。メインコンピュータ２０２には、図４に示す処理フローのソフトウェアプログラム２０４と、図１に示した各データであるクロックツリーネットリスト１１１、製造ばらつき情報１１２、分割後ネットリスト１１３、全体乱数列１１４、信号パス乱数列１１５及びパラメータ１１６と、解析結果である信号パス遅延分布１１７及びクロックスキュー分布結果１１８とが記憶装置に格納される。
【００５２】
ユーザは、端末コンピュータ２０１を操作してメインコンピュータ２０２に解析の実行を指示すると、図４に示す各工程に沿ってメインコンピュータ２０２上でタイミング解析が実行される。そこで、ユーザは、生成された信号パス遅延分布１１７及びクロックスキュー分布結果１１８を端末コンピュータ２０１からネットワーク２０３を経由してアクセスし、出力装置に出力して参照することができる。
【００５３】
以下、図４に示す第１の実施形態に係るシミュレーション方法を説明する。
【００５４】
（全体乱数列生成工程Ｓ１）
まず、全体乱数列生成工程Ｓ１について説明する。
【００５５】
ここでは、図３３に示すようなクロックツリー回路が製造ばらつきによって、信号伝搬タイミングにばらつきが生じる場合のシミュレーションを行なう。図３３において、回路セルＣ１はバッファであり、回路セルＣ２〜Ｃ７はインバータである。入力端子Ｉから入力された信号は分岐点Ｊ１〜Ｊ３を経て出力端子Ｏ１〜Ｏ４に到達する。インバータＣ２〜Ｃ７は、図３４に示すようなＰＭＯＳトランジスタＰ１とＮＭＯＳトランジスタＮ１とからなるＣＭＯＳであり、バッファＣ１は、図３５に示すような、それぞれＰＭＯＳトランジスタＰ１，Ｐ２及びＮＭＯＳトランジスタＮ１，Ｎ２とからなる２組のＣＭＯＳインバータが直列に接続されて構成されている。
【００５６】
クロックツリー回路全体の製造ばらつきであるトータルの製造ばらつきσトータルは、以下の式（２）に示すように、チップ内成分σチッフ゜内とチップ外成分σチッフ゜外とに分離される。ここで、σトータルはトータルの製造ばらつきの標準偏差である。チップ外ばらつき成分σチッフ゜外は、チップ内では一様であるとされ、これには、ロット間のばらつき、ウエハ間のばらつき及びチップ間のばらつき等が含まれる。チップ内ばらつき成分σチッフ゜内は、ＬＳＩを構成するトランジスタごと及び配線ごとに変動するばらつきである。このように、トータルの製造ばらつきσトータルにはそれぞれ挙動が異なるばらつき成分が含まれている。
【００５７】
σトータル＝√（σチッフ゜外2 ＋σチッフ゜内2 ）  ………（２）
第１の実施形態においても、製造ばらつきがこれらのチップ内ばらつき成分σチッフ゜内と、チップ外ばらつき成分σチッフ゜外との２種類からなると想定する。簡単化のため、どちらも正規分布に従うとすれば、トータルの製造ばらつきσトータルは上記の式（２）のような関係で表わされる。
【００５８】
図１において、全体乱数列生成部１０２は、まず、図３３に示したようなクロックツリー回路のネットリスト１１１と製造ばらつき情報１１２とを読み込む。ここでのネットリスト１１１は、クロックツリー回路全体の接続情報である。ネットリスト１１１及び後述するパラメータ１１６は、例えば、米国Ａｖａｎｔ！  Ｃｏｒｐｏｒａｔｉｏｎ社発行の「Ｓｔａｒ  Ｈｓｐｉｃｅ  Ｍａｎｕａｌ（Ｒｅｌｅａｓｅ  ２０００．２，Ｍａｙ  ２０００）」に具体的な記載がなされている。ネットリスト１１１には、ＭＯＳトランジスタのサイズ及び接続情報が含まれており、図３３に示すクロックツリー回路のネットリストの場合は、１６個のトランジスタの各サイズ及び各接続情報が記述されることになる。
【００５９】
第１の実施形態においては、製造ばらつきの要因として、ＭＯＳトランジスタのゲート長における製造ばらつきを考える。製造ばらつき情報１１２には、各ＭＯＳトランジスタのゲート長について、前述したチップ内ばらつき成分σチッフ゜内及びチップ外ばらつき成分σチッフ゜外という２種類のばらつき成分情報が格納される。
【００６０】
全体乱数列生成部１０２は、ネットリスト１１１中のすべてのトランジスタに対して、ゲート長のチップ内ばらつき及びチップ外ばらつきに相当する乱数値を、所定の数すなわちモンテカルロ解析の反復回数（１〜Ｎ；Ｎは正の整数。）だけ生成する。反復回数Ｎは回路シミュレーションの回数となり、反復回数Ｎは得たい分布の精度との兼ね合いからあらかじめ任意に設定しておけばよい。
【００６１】
ここでは、ゲート長Ｌのばらつきの平均値をμL とし、その標準偏差をσチッフ゜内及びσチッフ゜外とする正規分布Ｎ［μL ，σチッフ゜内2 ］とＮ［μL ，σチッフ゜外2 ］とにそれぞれ従うものと仮定する。実際に乱数を生成する分布は、製造ばらつき情報１１２のチップ外ばらつき成分σチッフ゜外とチップ内ばらつき成分σチッフ゜内とを参照して、それらの分布の形状に合わせて生成する。このときの分布は、チップ外ばらつき成分の分布はＮ［０，σチッフ゜外2 ］であり、チップ内ばらつき成分の分布はＮ［０，σチッフ゜内2 ］である。平均値を０としてあるのは、ばらつき分だけを平均値μL に重畳させるためである。
【００６２】
図５は製造ばらつき情報１１２に格納されているチップ内ばらつき成分σチッフ゜内とチップ外ばらつき成分σチッフ゜外とに基づいて、図３３に示すクロックツリー回路に対して生成した全体乱数列１１４の一例である。ここで、各乱数セット１〜Ｎには、クロックツリー回路中のすべてのトランジスタに対するゲート長のチップ内及びチップ外のばらつき成分が乱数として与えられている。チップ内及びチップ外のばらつき成分の分布は、チップ外ばらつき成分σチッフ゜外については、回路の全体にわたって共通の値となるため、１つの乱数セット内では同一の値となる。チップ内ばらつき成分σチッフ゜内はトランジスタごとにばらつくため、トランジスタごとに値が異なっている。図５の右列には、ゲート長Ｌのばらつきの平均値μL を９０ｎｍとしたときのトータルのゲート長を表わしている。
【００６３】
（回路記述分解工程Ｓ２）
次に、図４に示す回路記述分割工程Ｓ２について説明する。
【００６４】
図１において、回路記述分割部１０１は、ネットリスト１１１を読み込み、分割後ネットリスト１１３を生成して出力する。
【００６５】
図３３に示すクロックツリー回路の場合には、該クロックツリー回路の全体のネットリスト１１１は、図６（ａ）に示すように記述されている。図３４に示したインバータ及びバッファを、図７（ａ）及び図７（ｂ）に示すようなトランジスタレベルで記述しておく。図６（ａ）においては、１つ上の階層すなわちゲートレベルで回路セルの接続関係を表わしている。
【００６６】
前述したＨＳＰＩＣＥの文法に習うと、図６（ａ）の上部に付した注釈に示すように、セル番号は行頭がＸで始まる書式となり、セル番号の後には各回路セルのサブサーキットの定義で決めた順に、入力信号、出力信号、電源名、グラウンド名及びセル名等が記述される。
【００６７】
回路記述分割部１０１は、ネットリスト１１１から回路シミュレーションを実行する実行単位ごとに信号パスを決定し、各信号パスを記述する部分のみを選択的に抽出する。第１の実施形態においては、１つの入力端子とそれと接続される複数の出力端子のうちの１つとからなる入出力端子の対ごとに１つの信号経路が決定されるため、その１つの信号経路を信号パスとする。
【００６８】
図８は図３３に示す全体回路から信号パスごとに分割された回路群を示している。この例では、４つの信号パスＡ〜Ｄ、すなわち、入力端子Ｉと出力端子Ｏ１との間に回路セルＣ１，Ｃ２，Ｃ４を含む信号パスＡ、入力端子Ｉと出力端子Ｏ２との間に回路セルＣ１，Ｃ２，Ｃ５を含む信号パスＢ、入力端子Ｉと出力端子Ｏ３との間に回路セルＣ１，Ｃ３，Ｃ６を含む信号パスＣ、及び入力端子Ｉと出力端子Ｏ４との間に回路セルＣ１，Ｃ３，Ｃ７を含む信号パスＤに分割される。
【００６９】
従って、分割後ネットリスト１１３は、図６（ｂ）、図６（ｃ）、図６（ｄ）及び図６（ｅ）に示すように、信号パスＡ〜Ｄごとに抽出されたネットリストが格納される。すなわち、図２における分割後ネットリスト１１３に示すように、信号パスごとの回路記述が格納される。
【００７０】
なお、全体乱数列生成工程Ｓ１と回路記述分割工程Ｓ２との順序は問われず、いずれの工程を先に行なってもよい。
【００７１】
（信号パス乱数列抽出工程Ｓ３）
次に、図４に示す信号パス乱数列抽出工程Ｓ３について説明する。
【００７２】
図１において、信号パス乱数列抽出部１０３は、分割後ネットリスト１１３と全体乱数列１１４とを読み込む。
【００７３】
ここでは、回路記述分割工程Ｓ２において分割された信号パスＡについて説明する。図６（ｂ）に示す信号パスＡを表わす分割後ネットリスト１１３から、信号パスＡを構成する回路セルがＣ１，Ｃ２，Ｃ４であることが分かるため、信号パス乱数列抽出部１０３は、全体乱数列１１４から回路セルＣ１，Ｃ２，Ｃ４に対応する部分だけを信号パス乱数列として図９のように選択して抽出する。その結果、図９に示す乱数列は、信号パスＡのみを含むモンテカルロ解析に必要な乱数列のみから構成されることになる。次に、他の信号パスＢ，Ｃ，Ｄについても同様に選択的に抽出して、信号パス乱数列１１５に格納する。これにより、図２における信号パス乱数列１１５に示すように、信号パスごとの乱数列が格納される。また、信号パスＣについては、図１０のような乱数列が得られる。
【００７４】
ここで、図９と図１０とを比べると、当然ではあるが、同一の回路セルＣ１については同一の乱数が抽出されていることが分かり、図９と図１０との乱数列が互いに無関係に生成されていないことは明白である。
【００７５】
（回路シミュレーション工程Ｓ４）
次に、図４に示す回路シミュレーション工程Ｓ４について説明する。
【００７６】
まず、図１において、回路シミュレーション部１０４は、信号パス乱数列１１５、分割後ネットリスト１１３及びパラメータ１１６を読み込む。ここで、パラメータ１１６には、製造プロセスにより決定されるプロセス情報及び回路シミュレータに内蔵されているトランジスタの電気的特性をモデル化した数式中の任意定数等が含まれる。
【００７７】
製造ばらつきを考慮する前のネットリストは、例えば図７（ａ）のようにトランジスタレベルで記述される。各行はそれぞれトランジスタを表わし、左から識別番号（例えばＭＰ１）、４つの端子（例えばＳＰ１，ＧＰ１，ＤＰ１，ＢＰ１）、使用するパラメータ名（例えばＰＭＯＤＥＬ）、ゲート長Ｌ及びゲート幅Ｗが記述されている。この状態では、ゲート長Ｌはすべてのトランジスタにおいて同一の値の９０ｎｍである。但し、図７（ａ）においては９０ｎと表記されている。
【００７８】
製造ばらつきとして、ネットリスト中の被変動変数であるゲート長Ｌに対し、チップ内及びチップ外という２種類のばらつき成分を変数化して加える。第１の実施形態においては、これら２種類のばらつき成分の重畳で表現するモデルとしている。この目的で、図７（ａ）のネットリストに対し、図７（ｂ）に示すように、ゲート長部分の記述に２種類のばらつき成分の変数を導入して数式で表現する。ここで、ｄＬｅはチップ外ばらつき成分を表わし、ｄＬｐｉ及びｄＬｎｉはそれぞれトランジスタＭＮ１，ＭＰ１におけるチップ内ばらつき成分を表わしている。前述したように、チップ外ばらつき成分はトランジスタによらず同一であり、一方、チップ内ばらつき成分はトランジスタごとに異なる。
【００７９】
次に、読み込んだ信号パス乱数列１１５から、図９及び図１０に示すような解析対象の信号パスの乱数列が選択される。続いて、選択された乱数のセットごとに、信号パス乱数列１１５から所定の乱数が図７（ｂ）に示したｄＬｅ，ｄＬｐｉ，ｄＬｎｉにそれぞれ与えられて、各トランジスタのゲート長Ｌが決定される。
【００８０】
続いて、乱数セットごとにばらついた状態のゲート長を含むネットリストに基づいて、回路シミュレーション部１０４は、モンテカルロ法により各信号パスに対して所定の回数のＮ回の回路シミュレーションを行なって解析する。得られたデータは、信号パス遅延分布１１７に格納される。
【００８１】
第１の実施形態に係る回路シミュレーションにおいては、与えられたゲート長の分布に応じたドレイン電流分布が中間的に計算され、さらにそのドレイン電流分布に応じたクロックツリー回路の信号パスごとの信号伝搬遅延分布が求められていることに等しい。
【００８２】
以上の処理を、すべての信号パスについて順次実行すると、図１１に示すように、乱数セットごとの各信号パス遅延がテーブル化された信号パス遅延分布１１７が得られる。すなわち、図２における信号パス遅延分布１１７に示すように、信号パスごとに計算された信号パス遅延分布が格納される。
【００８３】
（クロックスキュー分布算出工程Ｓ５）
次に、図４に示すクロックスキュー分布算出工程Ｓ５について説明する。
【００８４】
まず、図１において、クロックスキュー分布算出部１０５は、信号パス遅延分布１１７を読み込む。読み込んだ信号パス遅延分布１１７から、乱数セットごとに各出力端子間の遅延差をスキューとして前述した式（１）により算出し、その算出結果を図１２に示すようなテーブル化されたデータとして、クロックスキュー分布結果１１８に出力する。すなわち、図２におけるクロックスキュー分布結果１１８に示すように、出力端子間ごとに算出されたスキュー分布が格納される。
【００８５】
以上説明したように、第１の実施形態においては、例えば図３３に示すようなクロックツリー回路を複数の信号パスに分割してモンテカルロ解析を行なう際に用いる製造ばらつきを与える乱数に、クロックツリー回路全体の解析に必要な乱数列から抽出した部分乱数を用いる。このため、信号パスごとのパス解析が無関係ではなくなり、関係を維持したまま解析することが可能となる。その結果、得られた遅延分布からクロックスキューを高精度に算出することができる。同時に、第１の実施形態においては、信号パス程度の規模で回路シミュレーションを実行できるコンピュータ資源を有しさえすれば、高精度なスキュー計算ができるようになるという効果もある。また、小規模で多数の回路シミュレーションを実行することが可能となることから、複数の回路シミュレーションを並列に実行するいわゆる並列処理にも適する。
【００８６】
なお、第１の実施形態において、図５に示した全体乱数列を生成する際には、互いに相関関係を有する乱数を用いてもよい。図１３（ａ）及び図１３（ｂ）は互いに相関関係を有する乱数を用いる例を示している。図１３（ａ）は、２つのトランジスタＭＮ１，ＭＮ２の各ゲート長にチップ内ばらつきを与える際に、無相関乱数（相関係数ρ＝０）を与えた例である。これに対し、図１３（ｂ）は、２つのトランジスタ同士に相関乱数（相関係数ρ＝０．９）を与えた例である。あらかじめ製造ばらつき情報１１２にばらつき成分間の相関係数等の相関情報を格納しておき、全体乱数列生成部１０２が参照するようにしておけば良い。この場合も、以降の処理としては、本実施形態で説明した処理フローと同一でよい。
【００８７】
なお、第１の実施形態は一例を示したに過ぎず、本発明は、実際にはさまざまな形態を取り得る。例えば、ここではゲート長のみを製造ばらつきの被変動変数として選択したが、他の変数すなわち、ゲート幅、閾値電圧又はゲート酸化膜（ゲート絶縁膜）の膜厚等を選択してもよい。
【００８８】
また、第１の実施形態においては、製造ばらつきをチップ内ばらつきとチップ外ばらつきとの２種類に分けて扱ったが、必要に応じてこのばらつき成分の種類を増減してもよい。その場合、例えば３種類であれば、図７（ｂ）に示した回路ネットリスト中のゲート長の記述を、以下に示す式（３）のようにすれば良い。ここで、Ｌtyp はばらつきを持たせない場合のゲート長であり、ここでは例えば９０ｎｍである。
【００８９】
Ｌ＝Ｌtyp ＋Ｌ成分1 ＋Ｌ成分2 ＋Ｌ成分3   ………（３）
また、製造ばらつきには、乱数を用いて付与するランダムばらつき成分以外にも、回路セル固有又は回路セルの配置環境で決定されるシステマティックなばらつき成分を含めてもよい。具体的には、ある回路セルのトランジスタはゲート長は９０ｎｍを中心として分布しているが、他の回路セルのトランジスタでは９５ｎｍを中心として分布するような場合、すなわち＋５ｎｍのシステマティックばらつきを含めるような場合である。このような場合は、対象となるトランジスタについて、図７（ｂ）の９０ｎｍを９５ｎｍとして、その他の回路記述は同一の処理を行なえばよい。
【００９０】
さらに、第１の実施形態においては、ばらつきが正規分布を取ることを仮定したが、任意の分布としてもよい。この場合は、製造ばらつき情報１１２には、各ばらつき成分の任意分布の情報を含めておく。
【００９１】
また、第１の実施形態は、回路シミュレーション部１０４が各信号パスの遅延のみを算出する構成を採ったが、これに限られず、信号波形も製造ばらつきの影響によりばらつくことから、各信号パスの出力端子における信号波形を算出する構成であってもよい。なぜなら、クロックの設計仕様にクロック信号波形、例えば波形の傾き及びスルーレート等をも規定する場合には、製造ばらつきに起因するクロック信号の波形の傾きの分布情報は設計上有用だからである。
【００９２】
さらには、次のような変形例も可能である。
【００９３】
第１の実施形態においては、複数の信号パスの出力端子における組合せごとの遅延差からスキューを求める例を説明したが、複数の信号パスの該パスごとの遅延を算出した後、クロックツリー回路全体でスキューを求めてもよい。
【００９４】
具体的には、クロックスキュー分布算出部１０５が、図１１に示す分割された信号パスごとの信号パス遅延から、図１４に示すような乱数セットごとの信号パス遅延値の全信号パスについての最大値と最小値を計算し、得られた最大値と最小値との差からクロックツリー回路全体としてのスキューを計算する。このようにすると、得られる精度は劣化するものの、複数の信号パスの出力端子における組合せごとの遅延差を算出する工程を省略できるため、スループットを向上することができる。
【００９５】
なお、第１の実施形態においては、シミュレーション対象をクロックツリー回路としたが、シミュレーション対象はクロックツリー回路に限られず、ツリー状に接続された複数のロジック回路をシミュレーション対象としてもよい。
【００９６】
（第２の実施形態）
以下、本発明の第２の実施形態に係る半導体集積回路の設計装置及びその動作について図面を参照しながら説明する。なお、本実施形態においても、ＣＭＯＳトランジスタにおける製造ばらつきを扱う。
【００９７】
第２の実施形態に係る設計装置の構成は、図１に示す第１の実施形態に係る設計装置と同等であり、その動作の相違点は、回路記述分割部１０１が信号パス単位で設計対象の回路を分割する代わりに、該回路を複数の信号経路を有するブロック単位で分割する点である。
【００９８】
次に、第２の実施形態に係る半導体集積回路の設計装置の動作を説明する。全体乱数列生成工程Ｓ１は、第１の実施形態と同一であるため説明を省略する。
【００９９】
（回路記述分割工程Ｓ２）
図４に示す回路記述分割工程Ｓ２について説明する。
【０１００】
図１において、回路記述分割部１０１は、ネットリスト１１１を読み込み、分割後ネットリスト１１３を生成して出力する。続いて、回路記述分割部１０１は、読み込んだネットリスト１１１から、回路シミュレーションの一単位とする複数の信号パスを含む回路ブロックをそれぞれ決定し、決定した各回路ブロックを記述する部分だけを抽出する。第２の実施形態においては、入出力端子の対ごとに信号パスが１つずつ決まるため、２つの信号パスを１つの回路ブロックと定義する。
【０１０１】
図１５は図３３に示すクロックツリー回路の全体構成から２つ回路ブロックＢ１，Ｂ２に分割された部分回路を示している。図１５に示すように、回路ブロックＢ１には２つの信号パスとして、図８の信号パスＡに相当する入力端子Ｉと出力端子Ｏ１との間の第１のパスと、図８の信号パスＢに相当する入力端子Ｉと出力端子Ｏ２との間の第２のパスが含まれる。同様に、回路ブロックＢ２には２つの信号パスとして、図８の信号パスＣに相当する入力端子Ｉと出力端子Ｏ３との間の第３のパスと、図８の信号パスＤに相当する入力端子Ｉと出力端子Ｏ４との間の第４のパスが含まれる。より詳細には、回路ブロックＢ１は回路セルＣ１，Ｃ２，Ｃ４，Ｃ５からなり、回路ブロックＢ２は回路セルＣ１，Ｃ３，Ｃ６，Ｃ７からなる。従って、分割後ネットリスト１１３には、回路ブロックＢ１と対応した図１６（ａ）に示す第１のネットリストと、回路ブロックＢ２と対応した図１６（ｂ）に示す第２のネットリストとが抽出されて格納される。
【０１０２】
（信号パス乱数列抽出工程Ｓ３）
次に、図４に示す信号パス乱数列抽出工程Ｓ３について説明する。
【０１０３】
図１において、信号パス乱数列抽出部１０３は、分割後ネットリスト１１３と全体乱数列１１４とを読み込む。
【０１０４】
ここでは、回路記述分割工程Ｓ２において分割された回路ブロックＢ１について説明する。図１６（ａ）に示す分割された回路ブロックＢ１を表わす分割後ネットリスト１１３から、回路ブロックＢ１を構成する回路セルがＣ１，Ｃ２，Ｃ４，Ｃ５であることが分かるため、信号パス乱数列抽出部１０３は、全体乱数列１１４から回路セルＣ１，Ｃ２，Ｃ４，Ｃ５に対応する部分だけを信号パス乱数列として、図１７（ａ）に示すように選択して抽出する。その結果、図１７（ａ）に示す乱数列は、回路ブロックＢ１のみを含むモンテカルロ解析に必要な乱数列のみから構成されることになる。次に、他の回路ブロックＢ２についても同様に選択的に抽出して、信号パス乱数列１１５に格納する。これにより、回路ブロックＢ２についても、図１７（ｂ）に示す乱数列を得られる。
【０１０５】
ここで、図１７（ａ）と図１７（ｂ）とを比べると、当然であるが、同一の回路セルＣ１については同一の乱数が抽出されていることが分かり、図１７（ａ）と図１７（ｂ）との乱数列が互いに無関係には生成されていないことが分かる。
【０１０６】
（回路シミュレーション工程Ｓ４）
次に、図４に示す回路シミュレーション工程Ｓ４について説明する。
【０１０７】
回路シミュレーション工程Ｓ４の第１の実施形態との相違点は、回路シミュレーションを実行する実行単位が、信号パスではなく回路ブロックである点である。そこで、図１に示す回路シミュレーション部１０４は、信号パス乱数列１１５から所望の回路ブロックの乱数列を読み出し、分割後ネットリスト１１３から所望の回路ブロックのネットリストを読み出す。さらに、プロセス情報等を含むパラメータ１１６を読み込んだ後、回路シミュレーション部１０４は、モンテカルロ法により各回路ブロックに対して所定の回数のＮ回の回路シミュレーションを行なって解析する。その後、得られたデータから、回路ブロックＢ１，Ｂ２ごとの２本の信号パスの遅延をそれぞれ算出して、信号パス遅延分布１１７に出力する。これにより、回路ブロックＢ１においては、図１１に示す信号パスＡ，Ｂの遅延がそれぞれ計算され、また、回路ブロックＢ２においては、図１１に示す信号パスＣ，Ｄの遅延がそれぞれ計算される。
【０１０８】
次のクロックスキュー分布算出工程Ｓ５は第１の実施形態と同一であるため説明を省略する。
【０１０９】
このように、第２の実施形態においては、例えば図３３に示すようなクロックツリー回路を複数の信号パスからなる回路ブロック単位に分割した後、第１の実施形態と同様にモンテカルロ解析を行なう。その結果、ユーザが有するコンピュータ資源に最適な回路規模での解析を行なうことができる。また、複数の信号パスの遅延が一回の遅延分布解析から求まるため、少なくとも１つの回路ブロックに含まれる信号パス同士の間のスキュー分布は、他の回路ブロックの解析を待たずして算出することが可能となる。
【０１１０】
なお、第２の実施形態においては、回路ブロック中の信号パス数を２つとしたが、これの限られず、回路ブロックごとに信号パス数が同一である必要はなく、任意の信号パス数を含めてもよい。
【０１１１】
（第３の実施形態）
以下、本発明の第３の実施形態に係る半導体集積回路の設計装置及びその動作について図面を参照しながら説明する。なお、本実施形態においても、ＣＭＯＳトランジスタにおける製造ばらつきを扱う。
【０１１２】
第３の実施形態に係る設計装置の構成は、図１に示す第１の実施形態に係る設計装置と同等であり、その動作の相違点は、回路記述分割部１０１が、信号経路（信号パス）に電気的に接続されているファンアウトゲートまでを含めた信号パス単位で分割する点である。
【０１１３】
第３の実施形態においては、設計対象であるクロックツリー回路として、図１８に示すようなフリップフロップＦＦ１〜ＦＦ４を含む回路を用いる。クロックツリー回路の出力端子には、一般にフリップフロップと接続されることが多いからである。
【０１１４】
図１８に示すように、各フリップフロップＦＦ１〜ＦＦ４は、クロック端子Ｃ、データ端子Ｄ、出力端子Ｑ及び反転出力端子ＮＱを有し、クロックツリー回路の出力端子Ｏ１〜Ｏ４はそれぞれフリップフロップＦＦ１〜ＦＦ４のクロック端子Ｃと接続されている。ここでは、データ端子Ｄ、出力端子Ｑ及び反転出力端子ＮＱと接続される回路は省略している。
【０１１５】
次に、第３の実施形態に係る半導体集積回路の設計装置の動作を説明する。
【０１１６】
（全体乱数列生成工程Ｓ１）
第３の実施形態に係る全体乱数列生成工程Ｓ１は、各フリップフロップＦＦ１〜ＦＦ４に対しても乱数を生成する点が第１の実施形態と異なる。
【０１１７】
図１９は第３の実施形態に係る全体乱数列１１４を表わしている。図１９に示すように、各フリップフロップＦＦ１〜ＦＦ４にはｎ個のトランジスタＴｒｉ（ｉ＝１〜ｎ、ｎは正の整数。）が含まれているとすると、各乱数セットのフリップフロップごとに、ゲート長のチップ内ばらつきの乱数もｎ個（ｄＬｉ、ｉ＝１〜ｎ）が生成される。但し、チップ外ばらつきの乱数は第１の実施形態と同じく、乱数セットごとに生成される。図１９においては、各フリップフロップＦＦ１〜ＦＦ４のチップ内ばらつきの乱数値を省略している。
【０１１８】
（回路記述分割工程Ｓ２）
次に、図４に示す回路記述分割工程Ｓ２について説明する。
【０１１９】
図１において、回路記述分割部１０１は、ネットリスト１１１を読み込み、分割後ネットリスト１１３を出力する。設計対象が図１８に示すクロックツリー回路の場合は、クロックツリー回路全体のネットリスト１１１は図２０（ａ）のように記述される。図２０（ａ）において、ＸＣ１〜ＸＣ７における記述内容は図６（ａ）と同一である。また、図２０（ａ）における下から４行のＸＦＦ１〜ＸＦＦ４はフリップフロップＦＦ１〜ＦＦ４を表わし、フリップフロップごとに４つの信号端子Ｏ１，Ｄ１，Ｑ１，ＮＱ１等、電源ＶＤＤ、グラウンドＧＮＤ及びセル名ＦＦとが記述されている。
【０１２０】
続いて、回路記述分割部１０１は、読み込んだネットリスト１１１から、回路シミュレーションの一単位とする信号パスを決定し、各信号パスを記述する部分だけを抽出する。第３の実施形態においては、入出力端子の対ごとに信号経路が１つ決まるため、その信号経路を信号パスとする。
【０１２１】
図２１は図１８に示すクロックツリー回路の全体構成から信号パスごとに分割された部分回路を示している。図２１に示すように、４つの信号パスとして、入力端子Ｉと出力端子Ｏ１との間の信号パスＡと、入力端子Ｉと出力端子Ｏ２との間の信号パスＢと、入力端子Ｉと出力端子Ｏ３との間の信号パスＣと、入力端子Ｉと出力端子Ｏ４との間の信号パスＤとに分割されている。信号パスＡは回路セルＣ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，ＦＦ１からなり、信号パスＢは回路セルＣ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，ＦＦ２からなり、信号パスＣは回路セルＣ１，Ｃ２，Ｃ３，Ｃ６，Ｃ７，ＦＦ３からなり、信号パスＤは回路セルＣ１，Ｃ２，Ｃ３，Ｃ６，Ｃ７，ＦＦ４からなる。ここでは、信号パスＡに含まれる回路セルＣ３，Ｃ５，ＦＦ１と、信号パスＢに含まれる回路セルＣ３，Ｃ４，ＦＦ２と、信号パスＣに含まれる回路セルＣ２，Ｃ７，ＦＦ３と、信号パスＤに含まれる回路セルＣ２，Ｃ６，ＦＦ４とは信号経路に電気的に接続されているファンアウトゲートである。従って、分割後ネットリスト１１３には、図２０（ｂ）、図２０（ｃ）、図２０（ｄ）及び図２０（ｅ）に示すように、信号パスごとに抽出されたネットリストが格納される。
【０１２２】
（信号パス乱数列抽出工程Ｓ３）
次に、図４に示す信号パス乱数列抽出工程Ｓ３について説明する。
【０１２３】
図１において、信号パス乱数列抽出部１０３は、分割後ネットリスト１１３と全体乱数列１１４とを読み込む。
【０１２４】
ここでは、回路記述分割工程Ｓ２において分割された信号パスＡについて説明する。図２０（ｂ）に示す分割された信号パスＡを表わす分割後ネットリスト１１３から、信号パスＡを構成する回路セルがＣ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，ＦＦ１であることが分かるため、信号パス乱数列抽出部１０３は、図１９に示す全体乱数列１１４から回路セルＣ１，Ｃ２，Ｃ３、Ｃ４，Ｃ５，ＦＦ１に対応する部分だけを信号パス乱数列として図２２のように選択して抽出する。その結果、図２２に示す乱数列は、信号パスＡのみを含むモンテカルロ解析に必要な乱数列のみから構成されることになる。次に、他の信号パスＢ，Ｃ，Ｄについてもそれぞれ同様に選択的に抽出して、信号パス乱数列１１５に格納する。第３の実施形態においても、信号パスごとに抽出した各乱数列は互いの関係が維持されている。
【０１２５】
（回路シミュレーション工程Ｓ４）
第３の実施形態に係る回路シミュレーション工程Ｓ４は、分割された信号パスに接続されているファンアウトゲートに対しても製造ばらつきである乱数を与えながら回路シミュレーションを実行する。例えば、信号パスＡの場合は、ファンアウトゲートＣ３，Ｃ５，ＦＦ１に対しても信号パス乱数列１１５から所定の乱数値を読み出して付与した後、回路シミュレーションを行なう。ここで、入力端子Ｉと出力端子Ｏ１との間の遅延を測定する処理は第１の実施形態と同一である。但し、ファンアウトゲートを接続した状態でシミュレーションを行なうため、各ファンアウトゲートが有する入力容量をも含め製造ばらつきの影響を受けて変動するシミュレーションを実施することができる。なぜなら、ゲート長がばらつくとトランジスタのゲート容量がばらつき、その結果、回路セルの入力容量もばらつくからである。第１の実施形態で用いた図８に示す信号パスＡにおいては、回路セルＣ１が駆動する回路セルはＣ２のみであったが、本実施形態の図２１に示す信号パスＡにおいては、回路セルＣ１が駆動する回路セルはＣ２とＣ３とであり、回路セルＣ１にとっては回路セルＣ３の入力容量も負荷となる。これと同様に、回路セルＣ２にとっては回路セルＣ５も負荷となり、また、回路Ｃ４にとってはフリップフロップＦＦ１も負荷となる。
【０１２６】
次のクロックスキュー分布算出工程Ｓ５は第１の実施形態と同一であるため説明を省略する。
【０１２７】
このように、第３の実施形態においては、第１の実施形態で得られる効果に加え、クロックツリー回路を信号パスごとに分割してモンテカルロ解析を行なう際に、ファンアウトゲートまでを含めて分割するため、より実際のＬＳＩの回路動作に近い条件下での高精度な遅延とスキューとの算出が可能となる。
【０１２８】
なお、第３の実施形態においては、ファンアウトゲートは、図２１に示すように、各接続点Ｊ１〜Ｊ３から後段の１段先までしか含めていない。例えば、図２１に示す信号パスＡの接続点Ｊ１については、回路セルＣ３が一段分だけ接続されている。
【０１２９】
しかしながら、さらに高精度なシミュレーションを行ないたい場合は、複数段先までを含めるようにしてもよい。例えば、図２１に示す信号パスＡの接続点Ｊ１において、回路セルＣ３の出力端子に２段以上の回路セルを接続する構成でもよい。その場合は、ファンアウトゲートが有するミラー容量が製造ばらつきで変動する際の遅延に与える影響までをも考慮した高精度なシミュレーションが可能となる。
【０１３０】
また、第３の実施形態においては、フリップフロップＦＦに含まれるすべてのトランジスタについてばらつかせる構成としているが、フリップフロップＦＦのクロック端子に接続されているトランジスタのみをばらつかせる構成でもよい。
【０１３１】
（第４の実施形態）
以下、本発明の第４の実施形態に係る半導体集積回路の設計装置及びその動作について図面を参照しながら説明する。なお、本実施形態においても、ＣＭＯＳトランジスタにおける製造ばらつきを扱う。
【０１３２】
第４の実施形態に係る設計装置の構成は、図１に示す第１の実施形態に係る設計装置と同等であり、その動作の相違点は、設計対象とするクロックツリー回路として、図２３に示すように、例えば配線寄生素子Ｗ１〜Ｗ３を含むクロックツリー回路を用いる点である。各配線寄生素子Ｗ１〜Ｗ３には複雑な配線ネットワークも考えられる。ここでは、簡単化のために、図２４に示すような単純な配線抵抗Ｒwireと配線容量Ｃwireとを１つずつ含む構成を仮定する。これは、トランジスタだけではなく、配線もまた製造ばらつきの影響により変動することを想定している。
【０１３３】
（全体乱数列生成工程Ｓ１）
第３の実施形態に係る全体乱数列生成工程Ｓ１は、クロックツリー回路を構成する回路セルだけでなく、配線寄生素子に対してもそれぞれ乱数を生成する点が第１の実施形態と異なる。
【０１３４】
図２５は第４の実施形態に係る全体乱数列１１４を表わしている。図２５に示すように、配線寄生素子Ｗ１〜Ｗ３には、配線抵抗Ｒwire及び配線容量Ｃwireが１つずつ含まれているため、配線抵抗Ｒwire及び配線容量Ｃwireのそれぞれについて、チップ外ばらつき及びチップ内ばらつきを乱数により生成する。ここでは、配線寄生素子Ｗ１における配線抵抗Ｒwire及び配線容量Ｃwireの中心値はそれぞれ２００Ω，３００ｆＦとし、配線寄生素子Ｗ２における配線抵抗Ｒwire及び配線容量Ｃwireの中心値はそれぞれ１００Ω，１５０ｆＦとし、配線寄生素子Ｗ３における配線抵抗Ｒwire及び配線容量Ｃwireの中心値はそれぞれ３００Ω，４５０ｆＦとしている。
【０１３５】
配線寄生素子Ｗ１〜Ｗ３に付与されるチップ外ばらつきの乱数値は、第１の実施形態と同様に、乱数セットごとに生成される。一方、配線寄生素子におけるチップ内ばらつきの乱数値は配線抵抗Ｒwireごと又は配線容量Ｃwireごとに生成される。なお、全体乱数列生成部１０２が読み込む製造ばらつき情報１１２には、あらかじめ配線寄生素子のばらつき情報（標準偏差等）を格納しておく。
【０１３６】
（回路記述分割工程Ｓ２）
次に、図４に示す回路記述分割工程Ｓ２について説明する。
【０１３７】
図１において、回路記述分割部１０１は、ネットリスト１１１を読み込み、分割後ネットリスト１１３を出力する。設計対象が図２３に示すクロックツリー回路の場合は、クロックツリー回路全体のネットリスト１１１は図２６（ａ）のように記述される。図２６（ａ）において、ＸＣ１〜ＸＣ７における記述内容は図６（ａ）と同一である。また、図２６（ａ）における下から３行のＸＷ１〜ＸＷ３は３つの配線寄生素子Ｗ１〜Ｗ３を表わし、配線寄生素子ごとに入力端子Ｊ１等、出力端子Ｊ２等、グラウンドＧＮＤ及び寄生素子名Ｗ１等が記述されている。各配線寄生素子を構成するサブサーキットは、配線寄生素子ごとに決定される配線抵抗値及び配線容量値とから、図２４に示すようにあらかじめ記述して定義しておく。
【０１３８】
続いて、回路記述分割部１０１は、読み込んだネットリスト１１１から、回路シミュレーションの一単位とする信号パスを決定し、各信号パスを記述する部分だけを抽出する。第４の実施形態においては、入出力端子の対ごとに信号経路が１つ決まるため、その信号経路を信号パスとする。
【０１３９】
図２７は図２３に示すクロックツリー回路の全体構成から信号パスごとに分割された部分回路を示している。図２７に示すように、４つの信号パスとして、入力端子Ｉと出力端子Ｏ１との間の信号パスＡと、入力端子Ｉと出力端子Ｏ２との間の信号パスＢと、入力端子Ｉと出力端子Ｏ３との間の信号パスＣと、入力端子Ｉと出力端子Ｏ４との間の信号パスＤとに分割されている。信号パスＡは回路セルＣ１，Ｃ２，Ｃ４，Ｗ１，Ｗ２からなり、信号パスＢは回路セルＣ１，Ｃ２，Ｃ５，Ｗ１，Ｗ２からなり、信号パスＣは回路セルＣ１，Ｃ３，Ｃ６，Ｗ１，Ｗ３からなり、信号パスＤは回路セルＣ１，Ｃ３，Ｃ７，Ｗ１，Ｗ３からなる。従って、分割後ネットリスト１１３には、図２６（ｂ）、図２６（ｃ）、図２６（ｄ）及び図２６（ｅ）に示すように、信号パスごとに抽出されたネットリストが格納される。
【０１４０】
（信号パス乱数列抽出工程Ｓ３）
次に、図４に示す信号パス乱数列抽出工程Ｓ３について説明する。
【０１４１】
図１において、信号パス乱数列抽出部１０３は、分割後ネットリスト１１３と全体乱数列１１４とを読み込む。
【０１４２】
ここでは、回路記述分割工程Ｓ２において分割された信号パスＡについて説明する。図２６（ｂ）に示す分割された信号パスＡを表わす分割後ネットリスト１１３から、信号パスＡを構成する回路セルがＣ１，Ｃ２，Ｃ４，Ｗ１，Ｗ２であることが分かるため、信号パス乱数列抽出部１０３は、図２５に示す全体乱数列１１４から回路セルＣ１，Ｃ２，Ｃ４，Ｗ１，Ｗ２に対応する部分だけを信号パス乱数列として図２８のように選択して抽出する。その結果、図２８に示す乱数列は、信号パスＡのみを含むモンテカルロ解析に必要な乱数列のみから構成されることになる。次に、他の信号パスＢ，Ｃ，Ｄについてもそれぞれ同様に選択的に抽出して、信号パス乱数列１１５に格納する。第４の実施形態においても、信号パスごとに抽出した各乱数列は互いの関係が維持されている。
【０１４３】
（回路シミュレーション工程Ｓ４）
第４の実施形態に係る回路シミュレーション工程Ｓ４は、分割された信号パスに寄生する配線寄生素子に対しても製造ばらつきである乱数を与えながら回路シミュレーションを実行する。例えば、信号パスＡの場合は、配線寄生素子Ｗ１，Ｗ２に対しても信号パス乱数列１１５から所定の乱数値を読み出して付与した後、回路シミュレーションを行なう。ここで、入力端子Ｉと出力端子Ｏ１との間の遅延を測定する処理は第１の実施形態と同一である。但し、配線寄生素子Ｗ１〜Ｗ３を接続した状態でシミュレーションを行なうため、各配線をも含め製造ばらつきの影響を受けて変動するシミュレーションを実施することができる。
【０１４４】
次のクロックスキュー分布算出工程Ｓ５は第１の実施形態と同一であるため説明を省略する。
【０１４５】
このように、第４の実施形態においては、第１の実施形態の効果に加え、クロックツリー回路を信号パスごとに分割してモンテカルロ解析を行なう際に、配線寄生素子までを含めて分割するため、より実際のＬＳＩ内部の状況に近い状態での高精度な遅延とスキューとの算出が可能となる。
【０１４６】
なお、第２〜第４の実施形態をそれぞれ個別に説明したが、これら各実施形態の少なくとも２つを任意に組み合わせて実施することも可能である。
【０１４７】
（第５の実施形態）
以下、本発明の第５の実施形態に係る半導体集積回路の設計装置及びその動作について図面を参照しながら説明する。なお、本実施形態においても、ＣＭＯＳトランジスタにおける製造ばらつきを扱う。
【０１４８】
第５実施形態に係る設計装置の構成は、図１に示す第１の実施形態に係る設計装置と同等である。その動作の相違点は、クロックスキュー分布算出部１０５が、設計対象であるクロックツリー回路における複数の出力端子からの出力信号のすべての組合せについてスキュー分布を計算する代わりに、クロックツリー回路の出力端子同士が信号経路を共有する度合いを表わす信号経路共通度合いを評価し、その評価結果に基づいてスキュー分布を算出する点である。
【０１４９】
従って、第５の実施形態に係る全体乱数列生成工程Ｓ１、回路記述分割工程Ｓ２、信号パス乱数列抽出工程Ｓ３及び回路シミュレーション工程Ｓ４の処理は、第１の実施形態と同一の処理であるため説明を省略する。
【０１５０】
ここでは、図２９に示すクロックツリー回路のスキューを算出する場合を説明する。図２９においては、クロックツリー回路を構成する各回路セルＣ１、Ｃ２等を簡略化して示している。
【０１５１】
第５の実施形態に係るクロックスキュー分布算出工程Ｓ５は、前述したように、前工程の回路シミュレーション工程Ｓ４において算出された信号パス遅延分布１１７を参照することにより、信号パスの出力端子の組合せごとにスキューを計算することができる。このとき、特にスキューの値が大きい組合せから計算できることが回路設計上は望ましい。
【０１５２】
そこで、本実施形態においては、信号パスにおける一の出力端子から他の出力端子に至る経路上の回路セルの個数を評価対象とする。例えば、図２９において、出力端子Ｏ１から出力端子Ｏ２に至る信号経路には３個の回路セルＣ８，Ｃ４，Ｃ９が含まれ、出力端子Ｏ１から出力端子Ｏ４に至る信号経路には５個の回路セルＣ８，Ｃ４，Ｃ２，Ｃ５，Ｃ１１が含まれ、出力端子Ｏ１から出力端子Ｏ８に至る信号経路には７個の回路セルＣ８，Ｃ４，Ｃ２，Ｃ１，Ｃ３，Ｃ７，Ｃ１５が含まれる。このように、出力端子の組合せでセル数は異なる。ここでは、各信号経路に含まれるセル数を信号経路共通度合いの指標とする。従って、２つの出力端子間の信号経路に含まれるセル数が少ないということは、信号パスにおける入力端子から出力端子までの回路セル、すなわち信号経路の多くが共有されていることに対応し、信号経路共通度合いが強い信号パスであることを示している。例えば、出力端子Ｏ１から出力端子Ｏ２までの間は、入力端子Ｉから回路セルＣ４までのパスが共有されている。
【０１５３】
これに対し、２つの出力端子間の信号経路に含まれるセル数が多いということは、信号パスの入力端子から出力端子までの回路セル、すなわち信号経路の多くが共有されていないことに対応し、信号経路共通度合いが弱い信号パスであることを示している。例えば、出力端子Ｏ１から出力端子Ｏ８までの間は、入力Ｉ端子から回路セルＣ１までのパスしか共有されていない。
【０１５４】
スキューは、２つの出力信号同士における遅延の差であり、スキュー分布は、２つの遅延の差の分布である。このため、元になる遅延分布間の相関の強弱によってスキュー分布は異なることになる。例えば、図３０（ａ）における、２軸上の正規分布に示すように、信号パスＸの遅延分布及び信号パスＹの遅延分布を例に採ると、これらの遅延分布同士の間の相関の程度によって散布図形状（ここでは、散布図の外形のみ示す。）が異なることになる。さらに、スキュー分布は、図３０（ｂ）に示すように相関が強いと幅が狭い分布となり、相関が弱いと幅が広がった分布となる。
【０１５５】
従って、信号経路共通度合いが強い、すなわち出力端子間で信号経路の多くが共有されている場合は、遅延分布同士の相関は強くなる。逆に、信号経路共通度合いが弱い、すなわち出力端子間で信号経路の多くが共有されていない場合は、遅延分布同士の間の相関は弱くなる。言い換えれば、信号経路共通度合いが弱くなる程、スキュー分布が広がることになる。スキュー分布がより広がる場合がスキューが大きい場合とみなせることから、信号経路共通度合いによってスキューの大小関係を評価することができる。
【０１５６】
図３１の処理フローに示すように、第５の実施形態に係るクロックスキュー分布算出部１０５は、まず、図２９に示すクロックツリー回路における各出力端子Ｏ１〜Ｏ８の組合せについて、サブ工程Ｓ５ａにおいて、前述した方法で信号経路共通度合いの評価を行ない、次に、サブ工程Ｓ５ｂにおいて、信号経路共通度合いの大きさ（＝セル数）で降順にソートし、その後、サブ工程Ｓ５ｃにおいて、ソートされた組合せからクロックスキュー分布を算出する。これにより、回路設計上のニーズが高い情報である、スキューが大きいシミュレーション結果を最初に得ることができる。
【０１５７】
（第５の実施形態の一変形例）
なお、一変形例として、設計対象のクロックツリー回路が良く知られているＨ型等の対称的な構造を有している場合には、さらに次のような簡略化を意図したクロックスキュー分布算出工程Ｓ５を実施することができる。
【０１５８】
図３２の処理フローに示すように、まず、サブ工程Ｓ５ｄにおいて、信号経路共通度合いの種類（クロックツリー回路の構造）を調べ、次に、サブ工程Ｓ５ｅにおいて、信号経路共通度合いの種類ごとにスキュー分布を計算する。本変形例においては、バランストクロックツリーとも呼ばれるクロックツリー構造の対称性から、信号経路共通度合いが同一の出力端子の組合せではスキューも同一になると考える。
【０１５９】
従って、信号経路共通度合いの種類ごとに代表させる部分回路すなわち信号パスを決めて、代表となる信号パスのみをシミュレーションすれば良い。例えば、信号経路共通度合いが３セルの場合は、入力Ｉ端子から出力端子Ｏ１までの信号パスと入力端子Ｉから出力端子Ｏ２までの信号パスとを代表回路としてシミュレーションすれば良い。
【０１６０】
他にも信号経路共通度合いが３セルになる組合せはあるが、シミュレーション結果は同一となるため、これら２パスだけを代表的に解析すればよいことになる。信号経路共通度合いが５セル又は７セルの場合も同様である。この方法によると、スキューの計算量を大幅に削減することができる。
【０１６１】
また、サブ工程Ｓ５ｄである信号経路共通度合いの種類の評価は、クロックスキュー分布算出工程Ｓ５に含めずに、前工程に含めることも可能である。例えば、回路記述分割工程Ｓ２にサブ工程Ｓ５ｄを含めると、それ以降の工程Ｓ３，Ｓ４，Ｓ５が、信号経路共通度合いで認識された種類の信号パスのみの処理で済むことになり、さらに計算量を削減することができる。
【産業上の利用可能性】
【０１６２】
本発明に係る半導体集積回路の設計方法及びその設計装置は、分割された部分回路ごとの小規模な回路シミュレーションを、回路全体でシミュレーションする場合と同一の関係を維持したまま行なうことにより、回路素子の遅延分布を効率的に算出することができ、高精度なクロックスキューばらつきを現実的に時間内で計算できるという効果を有し、クロック回路特性のばらつき（クロックスキュー）を評価する回路シミュレーションを行なう半導体集積回路の設計方法及びその設計装置等に有用である。
【図面の簡単な説明】
【０１６３】
【図１】本発明の第１の実施形態に係る半導体集積回路の設計装置（回路シミュレーション装置）を示すブロック構成図である。
【図２】本発明の第１の実施形態に係る半導体集積回路の設計装置の一部とデータフローとを示す模式図である。
【図３】本発明の第１の実施形態に係る半導体集積回路の設計装置をコンピュータシステム上に実装した状態の一例を示す模式図である。
【図４】本発明の第１の実施形態に係る半導体集積回路の設計方法（回路シミュレーション方法）を示すフローチャートである。
【図５】本発明の第１の実施形態に係る半導体集積回路の設計装置のシミュレーション対象であるクロックツリー回路に対して生成した全体乱数列を示すデータである。
【図６】（ａ）〜（ｅ）は本発明の第１の実施形態に係るクロックツリー回路におけるネットリストを示し、（ａ）はクロックツリー回路全体のネットリストであり、（ｂ）〜（ｅ）は各信号パスのネットリストである。
【図７】（ａ）は本発明の第１の実施形態に係るクロックツリー回路に含まれるトランジスタのネットリストであり、（ｂ）は該ネットリストにトランジスタのゲート長のばらつきを付与した例を示す図である。
【図８】本発明の第１の実施形態に係る半導体集積回路の設計装置のシミュレーション対象であるクロックツリー回路を分割した各信号パス群を示す回路図である。
【図９】図５に示す全体乱数列から抽出された信号パスＡに付与する乱数列を示すデータである。
【図１０】図５に示す全体乱数列から抽出された信号パスＣに付与する乱数列を示すデータである。
【図１１】本発明の第１の実施形態に係る分割された各信号パスに対する乱数セットごとの信号パス遅延の解析結果を表わすデータである。
【図１２】本発明の第１の実施形態に係る分割された各信号パスに対する乱数セットごとのスキューの算出結果を表わすデータである。
【図１３】（ａ）及び（ｂ）は本発明の第１の実施形態に係るシミュレーション対象である回路素子に付与する乱数に相関関係を持たせる場合を説明するグラフを示し、（ａ）はゲート長のばらつきに相関関係を持たせない無相関乱数を示すグラフであり、（ｂ）はゲート長のばらつきに相関関係を持たせた相関乱数を示すグラフである。
【図１４】本発明の第１の実施形態の一変形例に係る半導体集積回路の設計方法における乱数セットごとのクロックツリー回路全体のスキューの算出結果を表わすデータである。
【図１５】本発明の第２の実施形態に係る半導体集積回路の設計装置のシミュレーション対象であるクロックツリー回路を回路ブロック単位で分割した部分回路を示す回路図である。
【図１６】（ａ）及び（ｂ）は本発明の第２の実施形態に係る分割されたクロックツリー回路におけるネットリストを示し、（ａ）は回路ブロックＢ１のネットリストであり、（ｂ）は回路ブロックＢ２のネットリストである。
【図１７】（ａ）及び（ｂ）は本発明の第２の実施形態に係るクロックツリー回路における回路ブロックごとに付与する乱数列を示すデータであり、（ａ）は回路ブロックＢ１用の乱数列であり、（ｂ）は回路ブロックＢ２用の乱数列である。
【図１８】本発明の第３の実施形態に係る半導体集積回路の設計装置のシミュレーション対象であるフリップフロップを含むクロックツリー回路を示す回路図である。
【図１９】本発明の第３の実施形態に係る半導体集積回路の設計装置のシミュレーション対象であるクロックツリー回路に対して生成した全体乱数列を示すデータである。
【図２０】（ａ）〜（ｅ）は本発明の第３の実施形態に係るクロックツリー回路におけるネットリストを示し、（ａ）はクロックツリー回路の全体のネットリストであり、（ｂ）〜（ｅ）はフリップフロップを含む各信号パスのネットリストである。
【図２１】本発明の第３の実施形態に係る半導体集積回路の設計装置のシミュレーション対象であるフリップフロップを含むクロックツリー回路を分割した信号パス群を示す回路図である。
【図２２】図１９に示す全体乱数列から抽出された信号パスＡに付与する乱数列を示すデータである。
【図２３】本発明の第４の実施形態に係る半導体集積回路の設計装置のシミュレーション対象である配線寄生素子を含むクロックツリー回路を示す回路図である。
【図２４】図２３に示す配線寄生素子の一例を示す回路図である。
【図２５】本発明の第４の実施形態に係る半導体集積回路の設計装置のシミュレーション対象であるクロックツリー回路に対して生成した全体乱数列を示すデータである。
【図２６】（ａ）〜（ｅ）は本発明の第４の実施形態に係るクロックツリー回路におけるネットリストを示し、（ａ）はクロックツリー回路の全体のネットリストであり、（ｂ）〜（ｅ）は配線寄生素子を含む各信号パスのネットリストである。
【図２７】本発明の第４の実施形態に係る半導体集積回路の設計装置のシミュレーション対象である配線寄生素子を含むクロックツリー回路を分割した信号パス群を示す回路図である。
【図２８】図２５に示す全体乱数列から抽出された信号パスＡに付与する乱数列を示すデータである。
【図２９】本発明の第５の実施形態に係る半導体集積回路の設計装置のシミュレーション対象であるクロックツリー回路を示す模式的な回路図である。
【図３０】（ａ）及び（ｂ）は本発明の第５の実施形態に係る半導体集積回路の設計方法のシミュレーション方法に用いるパス遅延同士の相関の強弱を示し、（ａ）は遅延分布同士の間の相関の強弱を表わすグラフであり、（ｂ）は相関の強弱によるスキュー分布を表わすグラフである。
【図３１】本発明の第５の実施形態に係る半導体集積回路の設計方法におけるクロックスキュー分布算出工程を示す処理フローである。
【図３２】本発明の第５の実施形態の一変形例に係る半導体集積回路の設計方法におけるクロックスキュー分布算出工程を示す処理フローである。
【図３３】クロックツリー回路の一例を示す回路図である。
【図３４】トランジスタレベルのインバータを示す回路図である。
【図３５】トランジスタレベルのバッファを示す回路図である。
【符号の説明】
【０１６４】
１００    回路シミュレーション装置
１０１    回路記述分割部
１０２    全体乱数列生成部
１０３    信号パス乱数列抽出部
１０４    回路シミュレーション部
１０５    クロックスキュー分布算出部
Ｃ１〜Ｃ１５  回路セル
Ｎ１，Ｎ２    ＮチャネルＭＯＳトランジスタ
Ｐ１，Ｐ２    ＰチャネルＭＯＳトランジスタ
ＦＦ１〜ＦＦ４  フリップフロップ
Ｗ１〜Ｗ３    配線寄生素子
２０１    端末コンピュータ
２０２    メインコンピュータ
２０３    ネットワーク
【図１】
2006146345.tif 000003
【図２】
2006146345.tif 000004
【図３】
2006146345.tif 000005
【図４】
2006146345.tif 000006
【図５】
2006146345.tif 000007
【図６】
2006146345.tif 000008
【図７】
2006146345.tif 000009
【図８】
2006146345.tif 000010
【図９】
2006146345.tif 000011
【図１０】
2006146345.tif 000012
【図１１】
2006146345.tif 000013
【図１２】
2006146345.tif 000014
【図１３】
2006146345.tif 000015
【図１４】
2006146345.tif 000016
【図１５】
2006146345.tif 000017
【図１６】
2006146345.tif 000018
【図１７】
2006146345.tif 000019
【図１８】
2006146345.tif 000020
【図１９】
2006146345.tif 000021
【図２０】
2006146345.tif 000022
【図２１】
2006146345.tif 000023
【図２２】
2006146345.tif 000024
【図２３】
2006146345.tif 000025
【図２４】
2006146345.tif 000026
【図２５】
2006146345.tif 000027
【図２６】
2006146345.tif 000028
【図２７】
2006146345.tif 000029
【図２８】
2006146345.tif 000030
【図２９】
2006146345.tif 000031
【図３０】
2006146345.tif 000032
【図３１】
2006146345.tif 000033
【図３２】
2006146345.tif 000034
【図３３】
2006146345.tif 000035
【図３４】
2006146345.tif 000036
【図３５】
2006146345.tif 000037