(57)【要約】【課題】集積回路設計をシミュレートする方法を提供する。【解決手段】本発明の方法では、ネットリストにおけるノードのノード次数ランキングを決定することができる。ネットリストの回路は、ノード次数ランキングに基づいて静的及び動的電流駆動方式でパーティショニングされることができる。ノード次数パーティショニングに基づいて階層データ構造が構築されることができる。一実施形態では、シミュレーション最適化のために中間ノード次数を動的に結合することができる。その後、回路を１若しくは複数の結合された中間ノード次数に基づいて再パーティショニングすることができる。階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成することができる。次数ランキングされた階層エンジンについての解析を行うことができる。この時点で、解析に基づいてＩＣ設計のシミュレーションデータがエクスポートされることができる。【選択図】図６
2011528839.tif 000002
【特許請求の範囲】
【請求項１】
集積回路設計をシミュレートする方法であって、
最適化された階層ネットリストにアクセスするステップと、
前記最適化された階層ネットリストにおけるノードのノード次数ランキングを決定するステップと、
前記最適化された階層ネットリストの回路を、静的電流駆動方式により、その後に動的電流駆動方式により、前記ノード次数ランキングに基づいてパーティショニングするステップと、
前記パーティショニングに基づいて階層データ構造を構築するステップと、
前記階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成するステップと、
前記次数ランキングされた階層エンジンについての解析を行うステップと、
前記解析に基づいて前記ＩＣ設計のシミュレーションデータをエクスポートするステップとを含むことを特徴とする方法。
【請求項２】
最適化のために中間ノード次数を動的に結合し、少なくとも１つの結合された中間ノード次数に基づいて前記回路を再パーティショニングするステップをさらに含むことを特徴とする請求項１の方法。
【請求項３】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスのＤＣ静的挙動に対し、Ｖに関するＩ（Ｖ）の導関数を用いることを特徴とする請求項１の方法。
【請求項４】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスの動的過渡挙動に対し、ｄＶ／ｄｔに関するＩ（Ｖ，ｄＶ／ｄｔ，ｔ）の導関数を用いることを特徴とする請求項１の方法。
【請求項５】
前記パーティショニングするステップが、１対のノード間の結合を、静的電流駆動方式及び動的電流駆動方式の両方で決定するステップを含むことを特徴とする請求項１の方法。
【請求項６】
前記結合を決定するステップが、２つのノード間のコンダクタンスを決定するステップを含み、
前記パーティショニングするステップが、前記２つのノードが同じ次数を有しかつ前記コンダクタンスが所定の値より大きいときに、前記２つのノードを同じ領域に配置するステップを含むことを特徴とする請求項１の方法。
【請求項７】
前記結合を決定するステップが、２つのノード間のキャパシタンスを決定するステップを含み、
前記パーティショニングするステップが、前記２つのノードが同じ次数を有しかつ前記キャパシタンスが所定の値より大きいときに、前記２つのノードを同じ領域に配置するステップを含むことを特徴とする請求項１の方法。
【請求項８】
前記解析を行うステップが、ＤＣ解析、過渡解析及びＡＣ解析のうちの少なくとも１つを行うステップを含むことを特徴とする請求項１の方法。
【請求項９】
前記解析を行うステップが、ＤＣ解析、過渡解析及びＡＣ解析を行うステップを含むことを特徴とする請求項８の方法。
【請求項１０】
ＤＣ解析、過渡解析及びＡＣ解析のうちの少なくとも２つを並行して行うステップをさらに含むことを特徴とする請求項９の方法。
【請求項１１】
集積回路設計をシミュレートするためのコンピュータ実行可能な命令を格納するコンピュータ読み取り可能な媒体であって、コンピュータによって実行されるときに、
最適化された階層ネットリストにアクセスするステップと、
前記最適化された階層ネットリストにおけるノードのノード次数ランキングを決定するステップと、
前記最適化された階層ネットリストの回路を、前記ノード次数ランキングに基づいて、静的電流駆動方式により、その後に動的電流駆動方式により、パーティショニングするステップと、
前記パーティショニングに基づいて階層データ構造を構築するステップと、
前記階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成するステップと、
前記次数ランキングされた階層エンジンについての解析を行うステップと、
前記解析に基づいて前記ＩＣ設計のシミュレーションデータをエクスポートするステップとを実行することを特徴とするコンピュータ読み取り可能な媒体。
【請求項１２】
最適化のために中間ノード次数を動的に結合し、少なくとも１つの結合された中間ノード次数に基づいて前記回路を再パーティショニングするステップをさらに含むことを特徴とする請求項１１のコンピュータ読み取り可能な媒体。
【請求項１３】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスのＤＣ静的挙動に対し、Ｖに関するＩ（Ｖ）の導関数を用いることを特徴とする請求項１１のコンピュータ読み取り可能な媒体。
【請求項１４】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスの動的過渡挙動に対し、ｄＶ／ｄｔに関するＩ（Ｖ，ｄＶ／ｄｔ，ｔ）の導関数を用いることを特徴とする請求項１１のコンピュータ読み取り可能な媒体。
【請求項１５】
前記パーティショニングするステップが、１対のノード間の結合を、静的電流駆動方式及び動的電流駆動方式の両方で決定するステップを含むことを特徴とする請求項１１のコンピュータ読み取り可能な媒体。
【請求項１６】
前記結合を決定するステップが、２つのノード間のコンダクタンスを決定するステップを含み、
前記パーティショニングするステップが、前記２つのノードが同じ次数を有しかつ前記コンダクタンスが所定の値より大きいときに、前記２つのノードを同じ領域に配置するステップを含むことを特徴とする請求項１１のコンピュータ読み取り可能な媒体。
【請求項１７】
前記結合を決定するステップが、２つのノード間のキャパシタンスを決定するステップを含み、
前記パーティショニングするステップが、前記２つのノードが同じ次数を有しかつ前記キャパシタンスが所定の値より大きいときに、前記２つのノードを同じ領域に配置するステップを含むことを特徴とする請求項１１のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複雑な大型集積回路設計のシミュレーションに関し、詳細には、回路のノード（節点）をそれらのノードトポロジー及び物理学（ノード次数及び節点間結合関係の両方を含む）に基づいて求解及び積分し、それによって、集積回路設計のより高速、より正確、より安定な全体シミュレーションを保証することに関する。
【背景技術】
【０００２】
今日の集積回路（ＩＣ）設計は、望まれる機能性が増えたせいでますます複雑になっている。さらに、ずっと小さなテクノロジーノード、例えば４５ｎｍ以細のテクノロジーノードは、１００ｎｍでは必要なかった設計変更を必要とし得る。これらの要因のため、適切な回路性能を保証するためにこれらのＩＣの正確なシミュレーションが必要である。
【０００３】
シミュレーション中に、回路挙動を近似する簡易化モデルを提供するような線形ネットワークの簡略化（linear network reduction：ＬＮＲ）を用いることができる。実際に、ＬＮＲなしでは、典型的なＩＣ設計の標的行列は非常に大きいので、ポスト・レイアウト回路のシミュレーションは、ＤＣ解析（これは、回路の動作点を決定する、すなわち回路内の動的要素の初期条件（時間＝０）を定義する）及びＴＲ解析（これは、時間＝０から始まり、複数のクロック周期を経るような過渡／時間領域（タイムドメイン）を用いる）を極端に遅くする。残念ながら、ＬＮＲは、例えば４５ｎｍの電流テクノロジーノードにおいて、深刻な問題を有している。後述するように、これらの問題は、著しい不正確さ及び不安定性すらもたらしかねない。
【０００４】
回路を、複数のノード及びエッジからなるグラフを用いて表すことができ、ここで、エッジはデバイスの効果的モデルであり、ノードはエッジ同士を結ぶことに留意されたい。図１Ａは、ノードＡ、Ｂ及びＣと、エッジＲＡＢ、ＲＢＣ及びＲＡＣを有する簡単な３ノード回路のグラフを示す。図１Ｂは、Δ−Ｙ変換を用いて作られることができる等価４ノード回路のグラフを示し、４ノード回路は、ノードＡ、Ｂ、Ｃ及びＤ並びにエッジＲＡＤ、ＲＣＤ及びＲＢＤを含む。
【０００５】
とりわけ、ノード／エッジグラフにキルヒホッフの法則を適用することができる。例えば、キルヒホッフの電流則（ＫＣＬ）は、任意の回路ノード（節点）から流出及び流入する全ての電流の代数和が０であると述べている。それゆえ、図１Ａまたは１Ｂを参照すると、ノードＢに流入する電流はノードＢから流出する電流と等しい。従って、ＫＣＬは節点方程式として記述される。他方では、キルヒホッフの電圧則（ＫＶＬ）は、任意の閉回路を一巡するときの電位差すなわち電圧の有向和は０でなければならないと述べている。それゆえ、図１ＡのノードＡ、Ｂ及びＣによって形成されるループの電圧の合計は０に等しい。従って、ＫＶＬはループ方程式として記述される。シミュレーションは、各クロック周期でＫＣＬ及びＫＶＬの両方の方程式を解こうと試みる。
【０００６】
ＳＰＩＣＥ（Simulation program with IC emphasis：集積回路に重点を置いたシミュレーションプログラム）は、動作点で線形モデルを効果的に構築し、その後、１つの行列方程式すなわちＡｘ＝ｂ（ここで、「Ａ」はグラフを代表する結合行列であり、「ｘ」は節点電圧、枝電圧及び枝電流を表す未知数であり、「ｂ」は図２に示す理想的なソースによって与えられる既知の列ベクトルである）を構築する。行列「Ａ」は、ＫＣＬ（線形）方程式、ＫＶＬ（線形）方程式、及びＩ−Ｖ（電流−電圧）（非線形）方程式を含むことができる。図２に示す行列方程式の代わりに、修正節点解析（ＭＮＡ）を用いることもできることに留意されたい。このＭＮＡアプローチは、例えば非特許文献１に記載されている。とりわけ、ＭＮＡアプローチもまた、図２に関連して説明したのと同じデメリットを示す行列方程式を含む。回路シミュレーションの分野の当業者は様々な行列方程式を理解しているので、本明細書ではそれらについてこれ以上詳細に説明しない。分かりやすいので、図２に示す行列方程式を用いて説明する。
【０００７】
一般的に、線形方程式は、一次より高次のゼロに等しい導関数を有するのに対し、非線形方程式は、参考のために以下に示すような、テイラー級数によって表される一次より高次の非ゼロ導関数を有し、このことはシミュレーションの分野の当業者に知られている。
【数１】
2011528839.tif 000003
ここで、ｎ！はｎの階乗を意味し、ｆ（ｎ）は点ａで評価されたｆのｎ番目の導関数を意味する（ｆの０番目の導関数はｆと定義される）（ここで（ｘ−ａ）０及び０！は１と定義される）。Ａｘ＝ｂを解くために、１つの直接的な方法はｘ＝Ａ−１ｂである。回路シミュレーションのための別の、より典型的な方法は、収束を必要とする反復アプローチである。
【０００８】
残念ながら、行列内の線形方程式と非線形方程式の混合は、線形方程式のための不要な行列計算を生じさせる。すなわち、非線形要素について解くには、線形要素について解くよりも多くの反復が必要とされる。行列に非線形要素が表れていたら、線形要素は、高次非線形要素（すなわちその挙動を正確に記述するために対応する導関数の最高の数を有する非線形要素）に対して行われるのと同じ数だけ反復される。用いられる単一行列と、当該行列における線形／非線形混合及びそれに不可欠な反復のために、ＳＰＩＣＥは、典型的には比較的少ない回路を有するＩＣ（例えば１００，０００個以下のゲートを有するＩＣ）をシミュレートするために用いられる。
【０００９】
ＦａｓｔＳＰＩＣＥは、大型の非常に複雑なＩＣ（例えば１００万個以上のゲートを有するＩＣ）のシミュレーションを高速化する手法である。この目標を達成するために、ＦａｓｔＳＰＩＣＥは、設計を複数の部分にパーティショニングし、それによって複数の行列の使用を可能にする。例示的なＦａｓｔＳＰＩＣＥインプリメンテーションは、図３Ａ及び図３Ｂに示されている。例えば、図３Ａは、領域１、２及び３を含む従来の平坦な構造を示す。この場合は、元の行列が、回路トポロジー及び根底にあるデバイス物理に基づいていくつかの弱く結合された領域に分けられるが、それらは半独立的方法で求解される。回路領域同士の結合は、行列解法の外部の様々な手法によって再導入される。この平坦な構造を用いたシノプシス社（Synopsys, Inc.）が提供する例示的なシミュレーション製品には、ＮａｎｏＳｉｍ（登録商標）及びＸＡＴＭが含まれる。図３Ｂは、例示的な簡易化した階層構造を示し、ここで、サブ回路１はサブ回路２及び３を含み、サブ回路３はサブ回路４を含む。この場合は、行列ソルバーが、基礎回路の階層設計を反映する行列構造内の繰り返しパターンを利用しようと試みる。この階層構造を用いたシノプシス社が提供する例示的なシミュレーション製品には、ＨＳＩＭ（登録商標）が含まれる。残念ながら、いずれのインプリメンテーションに対しても、領域／サブ回路における線形／非線形デバイスとノードの混合は、（ちょうど単一行列と同様に）著しい不正確さをもたらしかねない。さらに、結合は領域／サブ回路間で生じる場合があり、それによって、さらなるモデリング（及びシミュレーション時間）またはリスクを増加させるシミュレーションの不正確さが要求される。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】"The Modified Nodal Analysis to Network Analysis", Chung-Wen Ho et al., IEEE Transactions On Circuits And Systems, VOL. CAS-22, NO. 6, June 1975
【発明の概要】
【発明が解決しようとする課題】
【００１１】
従って、線形及び非線形の両要素を含む大型の複雑なＩＣに対する正確なシミュレーションを提供する改良型の手法の必要が生じている。
【課題を解決するための手段】
【００１２】
集積回路設計をシミュレートする方法が提供される。この方法では、ネットリスト中の複数のノードのノード次数ランキング（次数の大きさの順位）を決定することができる。その後、ノード次数ランキングに基づいてネットリストの回路をパーティショニングすることができる。「ノード次数」なる語は、所定の導関数比の最大値、例えば、特徴付けられているノードに接続する各デバイスから、Ｖに関するＩ（Ｖ）の導関数に基づく導関数比（ＤＣ静的挙動の場合）またはｄＶ／ｄｔに関するＩ（Ｖ，ｄＶ／ｄｔ，ｔ）の導関数に基づく導関数比（動的過渡挙動の場合）の最大値に比例するものとして定義されることができる。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば（∂２Ｉ／∂Ｖ２）／（∂Ｉ／∂Ｖ）、（∂２Ｉ／∂（ｄＶ／ｄｔ）∂Ｖ）／（∂Ｉ／∂Ｖ）または（∂２Ｉ／∂（ｄＶ／ｄｔ）２）／（∂Ｉ／∂Ｖ）などに基づく場合がある。
【００１３】
とりわけ、このパーティショニングを、各ノードのトポロジー及び物理学に基づいて行うこともできる。ノードのトポロジー及び物理学は、ノード次数と、一定のバイアス（例えば０からＶＤＤ）下で最大電流画定がされた特定のトランジスタモデルなどのモデルを介してのそれ自身のノードと隣のノードとの結合とを含むことができる。
【００１４】
ノード次数パーティショニングに基づいて階層データ構造が構築されることができる。一実施形態では、シミュレーションの最適化のために中間ノード次数が動的に結合されることができる。その後、回路は、小さな領域を持つより高いレベルのノード次数ランキングと大きな領域を持つより低いレベルのノード次数ランキングとのトレードオフを決定する費用関数を使って、１若しくは複数の結合された中間ノード次数に基づいて再パーティショニングされることができる。階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成することができる。次数ランキングされた階層エンジンについての解析を行うことができる。この時点で、解析に基づいてＩＣ設計のシミュレーションデータがエクスポートされることができる。
【００１５】
一実施形態では、回路のパーティショニングステップは、回路における１対のノード間の結合を決定するステップを含むことができる。結合を決定するステップは、２つのノード間のコンダクタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、２つのノードが同じ次数を有しかつコンダクタンスが所定の値より大きいときに、２つのノードを同じ領域に配置するステップを含むことができる。別の実施形態では、結合を決定するステップは、２つのノード間のキャパシタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、２つのノードが同じ次数を有しかつキャパシタンスが所定の値より大きいときに、２つのノードを同じ領域に配置するステップを含むことができる。
【００１６】
シミュレーションでは、パーティショニングされた領域は、静的電流駆動方式によって決定されるタイムスロットの数でスケジューリングされることができる。動的電流駆動方式は、同じタイムスロットに対してスケジューリングされた領域のための求解の順序を決定することができる。一実施形態では、求解は、最上位（トップ）から最下位（ボトム）へ（ここで、「最上位」は最高の非線形性すなわち最高ノード次数を示し、「最下位」は最低の非線形性（最高の線形性）すなわち最低ノード次数を示す）、次に最下位から最上位へ進む。より低い次数を持つ各領域はポートの挙動について解き、その上にあるより高い次数を持つ領域に情報をフィードバックする。
【００１７】
一実施形態では、集積回路設計をシミュレートするためのコンピュータ実行可能な命令を格納するコンピュータ読み取り可能な媒体についても説明されている。これらのコンピュータ実行可能な命令は、コンピュータによって実行されるとき、上記のステップを行う。
【図面の簡単な説明】
【００１８】
【図１Ａ】簡単な３ノード回路のグラフを示す。
【図１Ｂ】図１Ａのものと等価な４ノード回路のグラフを示す。
【図２】回路グラフを表すことができるＳＰＩＣＥ行列方程式を示す。
【図３Ａ】例示的なＦａｓｔＳＰＩＣＥインプリメンテーションを示す。
【図３Ｂ】例示的なＦａｓｔＳＰＩＣＥインプリメンテーションを示す。
【図４Ａ】ノード電流対バイアスの例示的な形状を示す。
【図４Ｂ】ノード電流対バイアスの例示的な形状を示す。
【図４Ｃ】ノード電流対バイアスの例示的な形状を示す。
【図４Ｄ】ノード電流対バイアスの例示的な形状を示す。
【図５Ａ】そのノードが特定された簡易回路を示す。
【図５Ｂ】それぞれのランキングが決定された図５Ａの特定されたノードを示す。
【図５Ｃ】決定されたノードランキング及びノード間の結合に基づく図５Ｂの簡易回路のパーティショニングを示す。
【図５Ｄ】決定されたノードランキング及びノード間の結合に基づく図５Ｂの簡易回路のパーティショニングを示す。
【図５Ｅ】図５Ｄのパーティショニングされた回路の例示的なスケジューリングを示す。
【図６】ソフトウェアコーディング形式の、次数ランキングされた階層の別の描写を示す。
【図７】階層的次数ランキングを含む例示的なシミュレーションフローを示す。
【図８】例示的なデジタルＡＳＩＣ設計フローを簡略化して説明するための図を示す。
【発明を実施するための形態】
【００１９】
今日の大部分の標準ＩＣ設計は様々なコンポーネントを含み、それらの挙動は、線形、一次非線形及び高次非線形であるものとして特徴付けられ得る。ＩＣシミュレータにおける現在のパーティショニング・アルゴリズムは、回路トポロジー及び結合強度に基づいてパーティショニングを行う。それゆえ、結果として生じるパーティションは、通常、ノード並びに線形及び非線形デバイスの両方を含み、そのことがシミュレーション処理及び時間を著しく増加させる。
【００２０】
さらに、ますます多くの設計は同じＩＣ上にデジタル回路とアナログ回路の両方を装備している（混合信号技術と呼ばれる）。これらの混合信号回路は、典型的には、複数の高次非線形要素を含む（ここで、非線形要素の次数が高ければ高いほど、その挙動を正確に定義するためにより多くの導関数が必要とされる）。とりわけ、一次導関数について解くには、典型的に、正確な結果を得るために大きなステップ（デルタ値）を用いるが、高次導関数について解くには、典型的に、正確な結果を得るためにより小さなステップを用いる。残念ながら、シミュレータツールは、一次導関数と高次導関数のもともとのステップの違いと折り合いをつけるようにはなっていない場合がある。
【００２１】
具体的には、より小さなステップサイズの使用を選ぶシミュレータツールは、シミュレーション時間がかなり増加するが、より大きなステップサイズの使用を選ぶシミュレータツールは、正確さを犠牲にしてシミュレーション不安定性のリスクを冒す。この問題を解決するために、一部のシミュレーションツールには、シミュレーション性能を向上させるためのモデル次数減少アルゴリズムが含まれる。残念ながら、これらのアルゴリズムは著しい不正確さ及び不安定性を導入しかねない。
【００２２】
改良型シミュレーション手法の一態様に従って、シミュレーションの正確さ及び性能を向上させるためにノード次数を有利には用いることができる。具体的には、以下に詳細に述べるように、この手法は、ノード非線形性の異なる次数を用いて回路ブロックをパーティショニングすることができる。このパーティショニングに基づいて、階層的求解及び積分を安定的に行うことができる。
【００２３】
ネットリストは、ＩＣ設計のデバイス及びそれらのデバイスの接続性を、ネットを用いて記述したものであることに留意されたい。ネットリストは、階層的または平坦なものであることができる。階層ネットリストは、回路のより高いレベルの抽象化を可能にさせるために「プリミティブ」（すなわち不可分なインスタンス）及びサブ回路（すなわち複数のプリミティブを含む）を含むことができる。対照的に、平坦なネットリストはプリミティブのみを含む。
【００２４】
一実施形態では、次数ランキングされたパーティショニングを単純化するために、階層ネットリストとして提供されるＩＣ設計は、先ず、付随する精度ロスなしで最適化され（図１Ｂから図１Ａに変わるように）、次に概略的に（局所的または全体的に）平坦にされることができる。先ず、各ノードは「ノード次数」を割り当てられ、ネットリスト中のノードの全セットは同じ（または近い）次数を有するグループにパーティショニングされることができる。本明細書において、「ノード次数」なる語は、導関数比の最大値、例えば、特徴付けられているノードに接続する各デバイスから、Ｖに関するＩ（Ｖ）の導関数に基づく導関数比（ＤＣ静的挙動に基づく）またはｄＶ／ｄｔに関するＩ（Ｖ，ｄＶ／ｄｔ，ｔ）の導関数に基づく導関数比（動的過渡挙動に基づく）の最大値に比例するものとして定義されることができる。
【００２５】
ＤＣ静的挙動（すなわちｔ＝０）に関して、０からＸまでの値の範囲（ここで、Ｘは、ＶＤＤなどの最大電圧Ｖである）を用いたデバイスモデルのスイープを行い（それで「Ｖに関する」なる語を冠する）、最大所定の導関数比を決定することができることに留意されたい。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば（∂２Ｉ／∂Ｖ２）／（∂Ｉ／∂Ｖ）などに基づく場合がある。
【００２６】
対照的に、動的過渡挙動に関して、タイムステップを変えて経時的に０からＸまでの電圧変化の範囲（ここで、Ｘは、ＶＤＤなどの最大電圧Ｖである）を用いたデバイスモデルのスイープを行い（それで「ｄＶ／ｄｔに関する」なる語を冠する）、最大所定の導関数比を決定することができる。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば（∂２Ｉ／∂（ｄＶ／ｄｔ）∂Ｖ）／（∂Ｉ／∂Ｖ）または（∂２Ｉ／∂（ｄＶ／ｄｔ）２）／（∂Ｉ／∂Ｖ）などに基づく場合がある。
【００２７】
パーティショニングは、各ノードのトポロジー及び物理学に基づいてさらに最適化され得、それらは回路内のノード間の物理的または機能的な関係を決定する任意の数の因子を含むことができる。特に興味深い例は、ノードそれ自体と回路内の任意の他のノードとの結合の度合いである。結合を決定するステップは、２つのノード間のコンダクタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、２つのノードが同じ次数を有しかつコンダクタンスが所定の値より大きいときに、２つのノードを同じ領域に配置するステップか、あるいは、それらが同じ次数であっても、コンダクタンスが所定の値よりも小さいような別々のパーティション・ノードに分けるステップを含むことができる。別の実施形態では、結合を決定するステップは、２つのノード間のキャパシタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、２つのノードが同じ次数を有しかつキャパシタンスが所定の値より大きいときに、２つのノードを同じ領域に配置するステップか、あるいは、それらが同じ次数であっても、キャパシタンスが所定の値よりも小さいような別々のパーティション・ノードに分けるステップを含むことができる。
【００２８】
図４Ａ〜図４Ｄは、バイアスに対する線形または非線形ノード電流の例示的な形状を示す。本明細書において、「線形ノード」なる語は、一般的に、線形デバイスにしか接していないか何にも接していないノードとして特徴付けられることができるが、「非線形ノード」なる語は、一般的に、非線形電流チャネルを介して少なくとも１つの非線形デバイスに接しているノードとして特徴付けられることができる。例えば、図４Ａの形状４０１は、例えば抵抗に結合された線形ノード（ｉ＝ｇｖとして表される一般的な電流。ここで「ｉ」は電流、「ｇ」はコンダクタンス、「ｖ」は電圧／バイアスである）を示す。線（line）の二次導関数は０であるので、それは当然なことながら線形であることに留意されたい。対照的に、図４Ｂの形状４０２は、例えばバイポーラ接合トランジスタ（ＢＪＴ）に結合された非線形ノード（ｉ＝ｆＢＪＴ（ｖ）として表される一般的な電流。ここで「ｆ（ｖ）」は電圧／バイアスの関数を指す）を示す。図４Ｃの形状４０３は、例えばダイオードに結合された非線形ノード（ｉ＝ｃｅｖとして表される一般的な電流。ここで「ｃ」は定数であり、「ｅ」は指数関数を指す）を示す。図４Ｄの形状４０４は、例えばＭＯＳＦＥＴ（金属酸化膜半導体電界効果トランジスタ）のドレインまたはソースに結合された非線形ノード（ｉ（ドレイン−ソース）＝ｆＭＯＳＦＥＴ（ｖ）として表される一般的な例としての電流。ここで「ｆ（ｖ）」は電圧／バイアスの関数を指す）を示す。
【００２９】
（次数，｛結合｝）（ここで｛｝は回路内の解析されたノードと任意の他の隣接ノードの間から／への１組の最大電流（のうちの或る電流）を示す）を用いたパーティショニングの目的は、行列中の全てのノードが同じ（または近い）次数を有しかつ予め定義された物理的相互関係を有することを保証することである。次数ランキングされたパーティショニングに基づき、改良された階層構造が構築されることができる。
【００３０】
図５Ａは、トランジスタ、抵抗及びダイオード（例示的なプリミティブ）並びにそれらの相互接続を含む簡易回路を示す。図５Ａのノード５００は円を用いて示されている。改良されたパーティショニングの一態様に従って、ノード５００の次数が特定（identify）されることができる。この実施形態では、最低次数には線形ノードしか含まれない。別の実施形態では、ノード次数のランキングは、線形及び非線形の両ノードを有する最低次数を含むことができる。
【００３１】
図５Ｂには、最低／０次ノード５０１（例えばノード５０１Ａ〜５０１Ｄ）が黒い三角形で示され、一次ノード５０２（１組の非線形ノード）（例えばノード５０２Ａ〜５０２Ｉ）が黒い円で示され、二次ノード５０３（一次ノード５０２よりも高次の所定の導関数を必要とする別の組の非線形ノード）（例えばノード５０３Ａ〜５０３Ｂ）が黒い四角形で示されている。
【００３２】
図５Ｂに示す回路のパーティショニングは、静的駆動方式及びその後に動的駆動方式を用いて行われることができ、これはノード次数によって制御される。静的電流駆動方式は、チャンネル接続に基づいてノードをグループ化することができる。一実施形態では、静的電流駆動方式は、先ず、同次ノード次数の駆動のみ（driver-only）のサブ回路と同次ノード次数の被駆動のみのサブ回路を特定することができる。例えば、図５Ｃを参照すると、領域５１２は０次ノードを有する駆動のみのサブ回路であるのに対し、領域５１５は一次ノードを有する被駆動のみのサブ回路である（ＶＤＤとＶＳＳの間に接続されたインバータを有するが、簡単にするために図示せず）。静的電流駆動方式は、電流依存性に基づいて他の全てのサブ回路をグループ化することができるが、ノード次数は無視する。このように、領域５１２及び５１５に加えて、静的電流駆動方式は、領域５２１及び５２２を作り出すことができる。
【００３３】
以下にさらに詳細に述べるように、静的電流駆動方式によって作り出される領域（図５Ｃに示す回路における４つの領域）は、（図５Ｅに関連して説明される）回路を解析するために用いられるタイムスロットの数を有利に決定することができる。領域５１２／５１５と領域５２１／５２２を区別するために、領域５２１及び５２２は（２以上のノード次数を持つ駆動及び被駆動の両方の特性を含むので）ハイブリッド領域と呼ばれる。
【００３４】
動的電流駆動方式は、ノード次数に基づいて、ハイブリッド領域すなわち領域５２１及び５２２をさらに分けることができる。例えば、図５Ｄを参照すると、領域５２１は領域５１１及び５１４に分けられることができ、このとき領域５１１は一次ノードのみを有し、領域５１４は０次ノードのみを有する。同様に、領域５２２は領域５１３及び５１６に分けられることができ、このとき領域５１３は一次ノードのみを有し、領域５１６は二次ノードのみを有する。それゆえ、動的電流駆動方式を用いた後、図５Ｂを参照すると、領域５１１は３つのノード５０２Ａ、５０２Ｂ及び５０２Ｃを含み、領域５１２は２つのノード５０１Ａ及び５０１Ｂを含み、領域５１３は３つのノード５０２Ｄ、５０２Ｅ及び５０２Ｆを含み、領域５１４は２つのノード５０１Ｃ及び５０１Ｄを含み、領域５１５は３つのノード５０２Ｇ、５０２Ｈ及び５０２Ｉを含み、領域５１６は２つのノード５０３Ａ及び５０３Ｂを含む。
【００３５】
図５Ｅは、（静的電流駆動方式によって決定されるような）４つのタイムスロット１〜４を用いた領域５１１〜５１６を含む次数ランキングされた階層構造の解析／シミュレーションの例示的なスケジュール５３０（すなわち解析のためのこれらの領域のスケジューリング）を示す。スケジュール５３０において各領域５１１〜５１６の優先度の決定は、動的電流駆動方式を用いて行われることができる。とりわけ、静的電流駆動方式によって画定される各領域（図５Ｃを参照）は、タイムスロット１〜４のうちの１つにおいて解析されることができる。
【００３６】
本発明の一態様に従って、スケジューリング優先度は、領域内のノード次数及び電流ドライバに基づく場合がある。例えば、図５Ｄでは、領域５１２は、領域５１１及び５１３の両方でデバイスを駆動する。具体的には、領域５１２内のノードは、トランジスタのためのゲートバイアスしか供給しないので、駆動のみの領域における静的電流ドライバとして特徴付けられることができる（ここで、静的電流ドライバでないノードは、当然に動的電流ドライバである）。さらに、領域５１２を流れる電流は、他の領域に依存しない。領域５１２は、その静的電流ドライバと、他の領域からの独立性に基づき、（ノード次数に関係なく）最も高い優先度を有し、従ってタイムスロット１内でスケジューリングされることができる。
【００３７】
一般的に、スロット指定に関して、別の領域のデバイスを駆動する高次ノード領域は、別の領域のデバイスを駆動する低次ノード領域より前に求解される。従って、図５Ｄでは、領域５１６（これは残りの領域５１１、５１３、５１４、５１５及び５１６のうち最高次ノードを有する）タイムスロット２内で解析されるべきである。上記したように、１つのハイブリッド領域内の複数の領域は、同じタイムスロット内で解析される。従って、領域５１６及び５１３は、タイムスロット２内で求解されることができる。
【００３８】
一実施形態では、ハイブリッド領域におけるスケジューリング優先度は、次のステップを用いて（例示的なハイブリッド領域として領域５１３及び５１６を用いて）決定されることができる。これらのステップ（階層的解法を含む）を、ハイブリッド領域内の任意の２つ１組の隣接領域に対して用い、スケジューリング優先度を決定することができることに留意されたい。
【００３９】
電流動作点で領域５１３の線形化モデルを構築し、そこでは領域５１３と領域５１６の間の部分にかかる負荷を計算するためにシュアー補行列が用いられる。
【００４０】
Ｎ＞１に対して、行列内の領域５１３の代わりとしてステップ１の線形化モデルをインポートする領域５１６のニュートン・ラフソン（ＮＲ）反復法を解く。
【００４１】
Ｍ（１＜Ｍ＜Ｎ）に対して、求めたばかりの領域５１６の解を境界条件として用いて領域５１３のＮＲ反復法を解く。
【００４２】
領域５１３に非線形要素が含まれるならば（この場合は含まれる）、全てのノードで収束が達成されるまで全過程を反復する。スケジューリング優先度は、収束後に領域に対して達成される正確さに基づいて決定される。すなわち、より高い正確さを与えるスケジューリング優先度が選ばれる。
【００４３】
個々の計算として、線形化モデルを構築し、シュアー補行列を用い、ニュートン・ラフソン反復法を解き、収束を達成することは、当業者に知られているので、本明細書では詳細に説明していないことに留意されたい。
【００４４】
この時点で、領域５１１は、残りの領域５１１、５１４及び５１５の最高次ノードを有するので、タイムスロット３内で求解されるべきである。上記したように、１つのハイブリッド領域内の領域は同じタイムスロットで解析される。従って、領域５１１及び５１４は、タイムスロット３内で求解されることができる。領域５１１と領域５１４の間の解析の次数は、領域５１３及び５１６に関して述べたのと同じ手法を用いて決定されることができることに留意されたい。この場合は、領域５１１は領域５１４より前に求解されるべきであることが決定される。ハイブリッド領域に関して、高次のノードを有する領域が低次のノードを有する領域より前に解析されると考えられるが、この一般化は間違っていることがある。従って、好適実施形態では、求解の次数は上記した階層的解法を用いて決定される。
【００４５】
この時点で、領域５１５のみが残っているので、領域５１５はタイムスロット４内で解析のために求解されることができる。静的電流駆動方式によって示されるように、領域５１５は被駆動のみの領域であるので、領域５１５は、回路内で領域５１５を駆動する任意の領域の後に実行されるべきである。
【００４６】
この実施形態では、最上位から最下位へ、そして最下位から最上位へ解析が行われる（図５Ｄは最上位から最下位への解析を示している）。「最上位から最下位へ」の表記は、それらを駆動している他の低次ノード領域を除いて最初に解析されている高次ノード領域を指すことに留意されたい。対照的に、「最下位から最上位へ」の表記は、それらが他の高次ノード領域を駆動している点を除いて最初に解析されている低次ノード領域を指す。
【００４７】
図６は、ソフトウェアコーディング形式の、次数ランキングされた階層６００の別の描写を示す。具体的には、次数ランキングされた階層６００は、４つの次数（各次数は異なるフィルパターン（fill pattern）を有する）を含む。ノード６１０、６１１、６１２及び６１３は次数３であり、ノード６２０、６２１、６２２及び６２３は次数２であり、ノード６３０、６３１、６３２及び６３３は次数１であり、ノード６４０、６４１及び６４２は次数０である。この特定の回路構成では、ノード６１０はノード６２０を駆動し、ノード６２０は同様にノード６３０を駆動し、ノード６３０は同様にノード６４０を駆動する。
【００４８】
上記したように、ノードのトポロジー及び物理学は「次数」及び「結合」に関する情報を提供し、ここで次数は特定のノードの固有特性を決定し、結合は、１若しくは複数の隣接ノードが、これらのノード間の閾値より上のコンダクタンスまたはキャパシタンスに基づき解析されたノードとして同じパーティションに含まれることができるか否かを決定する。一般的に、少なくとも所定の結合閾値を有する同じ次数を持つノードを同じパーティションに配置することができる。次数ランキングされた階層６００は、垂直コネクタ６５０を用いて、データが駆動ノードと被駆動ノード間で共有されることができることを示すことに留意されたい。一実施形態では、各パーティションにおいてデータ共有すなわち同型マッチングが生じる場合もある。
【００４９】
図７は、上記した階層的次数ランキングを含む例示的なシミュレーションフロー７００を示す。ステップ７１０では、ネットリストが正しい手順で解析される（すなわちパーシングされる）。ステップ７２０では、利用可能な命令及び選択をパーシングすることができる。ステップ７４０では、パーシングされたネットリスト、命令及び選択の結果を用いて、フロントエンド・データベース、モデル及び回路の接続性をセットアップすることができる。回路のサイズのために、ステップ７４０は従来のデータベース階層（すなわち最適化された階層ネットリスト）を生成する回路最適化も含むことが好ましい。一実施形態では、ステップ７４０は、平坦なフロントエンド・データベース・セットアップ（ここで、「フロントエンド」は、エンジンセットアップより前の全てのプロセス、例えばネットリストのパーシング、モデルセットアップ、回路接続性セットアップ、最適化セットアップを指す）を用いて、または階層的フロントエンド・データベース・セットアップを用いて、または部分的に平坦な階層的フロントエンド・データベース・セットアップを用いて、この最適化された階層ネットリストを平坦化するステップを含むこともできる。最適化された階層ネットリストを用いて、ステップ７５０は、次に、次数ランキングされた階層エンジンのセットアップを提供する。次数ランキングされた階層エンジンを用いて、ステップ７６０は、ＤＣ解析、ＡＣ解析及び過渡解析を行うができる。ステップ７７０は、この解析の結果をシミュレーションデータとしてエクスポートすることができる。
【００５０】
ステップ７５０は、次の例示的なステップを含むことができる。ステップ７５１は、回路におけるノードのノード次数ランキングを決定することができる。一実施形態では、この決定には、最大所定の導関数比を見つけるステップが含まれる場合があり、それについては上記されている。ステップ７５２は、電流ノード次数並びにノードのトポロジー及び物理学（静的電流駆動方式及びその後に動的電流駆動方式の使用を含む）に基づいて、回路をパーティショニングすることができる。ステップ７５３は、パーティショニングに基づいて階層データ構造を構築することができる。この階層データ構造は最適化されたデータベース階層（これはノード次数を区別しない）とかなり異なることに留意されたい。シミュレーション手法７００の一実施形態では、最適化されたデータベース階層（ステップ７４０で生成される）は、ノード次数ランキングされた階層データ構造によって格納され得ない回路に関連する情報を格納するように保持されることができる。それゆえ、ステップ７６０は、ステップ７４０及び７５０の両方によって生成される情報を利用して実行されることができる。
【００５１】
ステップ７５４は、システムの最適化のために特定の中間次数を動的に結合することができる。一実施形態では、ステップ７５４は、各ノード次数に関連するノードの数を決定し、各パーティション内のノードの数がより均一に分配されるように特定の次数を結合するステップを含むことができる。例えば、１０個の次数が、かなり違う数のノードを持つパーティションを生じさせるならば、ステップ７５４は、特定の隣接する次数同士（例えば２番目と３番目の次数または９番目と１０番目の次数）を結合してパーティション内のノードをより良好に分配し、それによってシステム効率を上げることができる（例えばステップ７３０及び７６０において）。
【００５２】
次数の分割及び結合はステップ７５４で実行されることができることに留意されたい。例えば、３つの次数が、かなり違う数のノードを持つパーティションを生じさせるならば、ステップ７５４は、パーティション内のノードをより良好に分配するように特定の次数を分割する（より多くの次数を効果的に作り出す）ことができる。それゆえ、ステップ７５２の「パーティショニング」（すなわち、１つのピースからの全てのノードを仮定して、そのピースを特定の数の複数のピースに分ける）は、「結合」（すなわち、各ノードがピースであると仮定して、特定の複数のピースを結合してより少ない数の複数のピースを形成する）として特徴付けられることもできる。とりわけ、最終結果は同じ、すなわち最適化された次数ランキングされた階層型データベースである。
【００５３】
換言すれば、ステップ７５１における次数ランキングの最初の定義を用いて、次数ランキングが回路の最適化されたパーティショニングをもたらすかどうかを決定するためにステップ７５２及び７５３が実行される。ステップ７５４は、回路をより良好にパーティショニングし、シミュレーション効率を最大にするために、現在の次数ランキングが再定義されるようにする。ステップ７５２〜７５４は、所定の最適化が実現されるまで繰り返されることができる。一実施形態では、所定の費用関数を用いて、性能効率の値を求める各領域の費用をバランスすることができる。ステップ７５５は、最適化された階層データ構造及び階層エンジンを用いて求解及び積分を行うことができる。とりわけ、この求解は、異なるパーティションに対して別々の行列を用いて行われることができる。それゆえ、各行列は特定のノード次数に向けられることができ、それが計算精度及び効率を上げる。
【００５４】
ステップ７３０は、システム効率を上げるためにステップ７６０のいくつかのジョブを並行して行うことができることに留意されたい。実際に、上記したノードランキングされた階層的パーティションは、当然に並列計算に適している。例えば、同じノード次数を有する領域は、並行して解析（ＤＣ、ＡＣ、過渡）されることができる。さらに、階層的パーティションは、典型的には、より高次のランキングされた次数を持つノードに対して密行列を生じさせる。有利には、並行行列ソルバーは、疎行列よりも密行列で効率的に働く。
【００５５】
さらに、ステップ７５５中に行われる積分は、次数ランキングされた階層データ構造から恩恵を受けることもできることに留意されたい。具体的には、積分の効率は、積分法が信号の次数に如何によく合うかと関連付けることができる。実際の回路では、信号の挙動は、シミュレーションによってのみならず、信号パスにおける負荷の次数によっても決定される。純粋な線形負荷は元の信号にそれ以上の非線形性を導入しないが、高次負荷を持つパスは元の信号に複雑さを加える。従って、低次ネットワークノードに低次積分法を適用することができかつ高次ネットワークノードに高次積分法を適用することができるときには、積分は、より著しく効果的である場合がある。
【００５６】
図８は、例示的なデジタルＡＳＩＣ設計フローを簡略化して説明するための図である。上側の段において、プロセスは製品企画（ステップ８００）より開始し、ＥＤＡソフトウェア設計プロセスを実行する（ステップ８１０）。設計が終了すると、テープアウトを行う（イベント８４０）。テープアウト後、製造プロセス（ステップ８５０）、パッケージング及び組立プロセス（ステップ８６０）を実施し、最終的に、完成品チップが得られる（結果８７０）。
【００５７】
ＥＤＡソフトウェア設計プロセス（ステップ８１０）は、実際には複数のステップ８１２〜８３０から構成されており、簡略化のために直線的に示している。実際のＡＳＩＣ設計プロセスでは、特定の設計は、所定の試験に合格するまでステップを逆戻りしなければならないこともある。同様に、任意の実際の設計プロセスでは、これらのステップは、異なる順序及び組み合わせで行われることがある。従って、この説明は、特定のＡＳＩＣのための具体的な或いは推奨する設計フローとしてよりも、むしろ背景説明（context）及び一般的な説明のために提供される。ＥＤＡソフトウェア設計プロセス（ステップ８１０）を構成するステップを簡単に説明する。
【００５８】
システム設計（ステップ８１２）：設計者は、実装したい機能性を記述し、ｗｈａｔ−ｉｆプランニングを実施して機能性改良や費用確認などを行うことができる。ハードウェア−ソフトウェア・アーキテクチャ・パーティショニングは、このステップで行うことができる。このステップで使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、Ｍｏｄｅｌ Ａｒｃｈｉｔｅｃｔ、Ｓａｂｅｒ、Ｓｙｓｔｅｍ Ｓｔｕｄｉｏ、及びＤｅｓｉｇｎＷａｒｅ（登録商標）などの製品が含まれる。
【００５９】
論理設計及び機能性の検証（ステップ８１４）：このステップでは、システム内のモジュールのためのＶＨＤＬまたはＶｅｒｉｌｏｇコードを書き込み、その設計を機能性の精度について検査する。より具体的には、設計を検査することによって、正しい出力を生成することを保証する。このステップで使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、ＶＣＳ、ＶＥＲＡ、ＤｅｓｉｇｎＷａｒｅ（登録商標）、Ｍａｇｅｌｌａｎ、Ｆｏｒｍａｌｉｔｙ、ＥＳＰ、及びＬＥＤＡなどの製品が含まれる。
【００６０】
合成及び試験のための設計（ステップ８１６）：このステップでは、ＶＨＤＬ／Ｖｅｒｉｌｏｇをネットリストに変換する。ネットリストは、目的の技術のために最適化することができる。加えて、完成品チップの検査を可能とする試験の設計及び実装を行う。このステップにおいて使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、Ｄｅｓｉｇｎ Ｃｏｍｐｉｌｅｒ（登録商標）、Ｐｏｗｅｒ Ｃｏｍｐｉｌｅｒ、Ｔｅｔｒａｍａｘ、及びＤｅｓｉｇｎＷａｒｅ（登録商標）などの製品が含まれる。
【００６１】
ネットリスト検証（ステップ８１８）：このステップでは、ネットリストを、タイミング制約との適合性及びＶＨＤＬ／Ｖｅｒｉｌｏｇソースコードとの対応性について検査する。このステップにおいて使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、Ｆｏｒｍａｌｉｔｙ、ＰｒｉｍｅＴｉｍｅ、及びＶＣＳなどの製品が含まれる。
【００６２】
設計プランニング（ステップ８２０）：このステップでは、チップの全体フロアプランを作成し、タイミング及び最上位ルーティングについて解析する。このステップにおいて使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、Ａｓｔｒｏ及びＩＣ Ｃｏｍｐｉｌｅｒなどの製品が含まれる。
【００６３】
物理的な実装（ステップ８２２）：このステップでは、配置（回路素子の位置決め）及びルーティング（回路素子の接続）を行う。このステップにおいて使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、Ａｓｔｒｏ及びＩＣ Ｃｏｍｐｉｌｅｒなどの製品が含まれる。
【００６４】
解析及び抽出（ステップ８２４）：このステップでは、回路機能をトランジスタレベルで検証し、これによりｗｈａｔ−ｉｆ解析による改良を可能にする。このステップにおいて使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、ＡｓｔｒｏＲａｉｌ、ＰｒｉｍｅＲａｉｌ、Ｐｒｉｍｅｔｉｍｅ、及びＳｔａｒ ＲＣ／ＸＴなどの製品が含まれる。
【００６５】
物理的な検証（ステップ８２６）：このステップでは、様々なチェック機能を実行し、製造、電気的な結果、リソグラフィックの結果、及び回路構成について正確性を保証する。このステップにおいて使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、Ｈｅｒｃｕｌｅｓなどの製品が含まれる。
【００６６】
分解能向上（ステップ８２８）：このステップでは、レイアウトの幾何学的操作を行い、設計の製造可能性を改善する。このステップにおいて使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、Ｐｒｏｔｅｕｓ、ＰｒｏｔｅｕｓＡＦ、及びＰＳＭＧｅｎなどの製品が含まれる。
【００６７】
マスクデータ準備（ステップ８３０）：このステップでは、完成品チップを作成するのに使用するリソグラフィーのために、マスク作成用の「テープアウト」データを提供する。このステップにおいて使用することができるシノプシス社製の例示的なＥＤＡソフトウェア製品には、ＣＡＴＳ（登録商標）シリーズの製品が含まれる。
【００６８】
本発明は、データ保存システム、少なくとも１つの入力装置、及び少なくとも１つの出力装置からデータ及び命令を受信し、且つそれらに対してデータ及び命令を送信するように接続された少なくとも１つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行する１若しくは複数のコンピュータプログラムに有利に実装することができる。各コンピュータプログラムは、高次手続き型またはオブジェクト指向型プログラミング言語で、或いは所望に応じてアセンブリ言語または機械語で実装することができる。いずれにせよ、その言語は、コンパイラ型言語又はインタープリタ型言語である。適切なプロセッサには、例えば、汎用マイクロプロセッサ及び特定用途向けマイクロプロセッサの両者のほか、他の種類のマイクロコントローラが含まれる。一般的に、プロセッサは、読み出し専用メモリ及び／またはランダムアクセスメモリから命令及びデータを受信する。一般的に、コンピュータは、データファイルの保存用として１若しくは複数の大容量記憶装置を有しており、その大容量記憶装置には、磁気ディスク（例えば、内蔵されたハードディスク及びリムーバブルディスク）、光磁気ディスク、及び光ディスクが含まれる。コンピュータプログラム命令及びデータを具体的に実施するのに適合する記憶装置には、全ての形態の不揮発性メモリ（例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの半導体メモリ装置、及びフラッシュメモリ装置）、磁気ディスク（例えば、内蔵されたハードディスク及びリムーバブルディスク）、光磁気ディスク、及びＣＤ−ＲＯＭディスクが含まれる。前述したいずれのものも、特定用途向け集積回路（ＡＳＩＣ）により補足することができる又はそれに組み込むことができる。
【００６９】
上記した次数ランキングされた階層エンジンは、任意のシミュレーションツール、すなわちプレ・レイアウト及びポスト・レイアウト・シミュレーションの両方で用いられることができることに留意されたい。従って、図８に関して、次数ランキングされた階層エンジンは、ステップ８１８〜８２６のいずれにおいて用いられることもできる。シノプシス社が提供する現行の例示的なシミュレーションツールには、ＨＳＩＭ（登録商標）、Ｎａｎｏｓｉｍ（登録商標）、ＳｔａｒＳＩＭＴＭ、ＸＡＴＭ及びＨＳＰＩＣＥ（登録商標）が含まれる。有利には、次数ランキングされた階層エンジンは、ポスト・レイアウト・シミュレーションの正確さにプレ・レイアウト・シミュレーション性能を与える。例えば、最低次ノード（例えば線形ノード）は求解に１回の反復しか必要とせず、高次ノードの各セットは、適切な数の反復を用いて正確さを保証するので、精度ロスが付随するＬＮＲは不要である。さらに、プレ・レイアウト・シミュレーションは、典型的に、比較的少ないノードを含むので、求解する行列はそれ相応に小さいことに留意されたい。対照的に、ポスト・レイアウト・シミュレーションは、典型的に、多くのノードを含むので、求解する行列はそれ相応に大きい。次数ランキングされた階層エンジンは、次数ランキングされたノードセットにおいてこれらのノードを壊し、それによって解くべき行列が比較的小さいことを保証する。従って、上記したノード次数シミュレーション手法は、システムリソースの効率的利用を保証する。ＬＮＲの別の問題は、Ｉ（Ｖ，ｄＶ／ｄｔ，ｔ）の一次（線形）の近似値が、一次よりも高次の次数において正確さの制御を不能にしていることである。
【００７０】
さらに、上記で簡単に述べたように、求解された行列内の一様な次数を持つノードは、ＤＣ解析及び過渡解析中のより大きな安定性を保証する。具体的には、ＤＣ動作点を計算する際、最初の推測は収束から外れており、ほとんどの状況下で、最初の推測は収束半径内にない。対照的に、過渡計算は、最後の収束点に基づいて次の収束点を捜し、ほとんどの状況では、最後の収束点は収束半径内にある。「ブローアップ（blow-up）」は、ＤＣと過渡収束推測の間のどこかにある推測（ステップ）を用いることによって、同じ行列内で異なる次数を持つ可動ノードの競争によって通常は生じる。有利には、ＤＣ解析または過渡解析のいずれかにおいて、同じ次数（または非常に近い次数）のノードのみを有する行列を用いることによって、迅速かつ安定的に収束を達成することができる。
【００７１】
上記した次数ランキングされた階層は、同型マッチング及びマルチレート・イベントドリブン・スケジューリングを実装する利点を有することにも留意されたい。「同型マッチング」なる語は、回路トポロジー共有及び物理状態共有の両方を含むデータ共有を提供する。同じ次数を持つ領域は、回路トポロジー及び物理状態を共有する可能性がより高い。「マルチレート・イベントドリブン・スケジューリング」なる語は、領域間の評価レート（またはタイムステップ）は異なる場合があり、イベント（事象）によって駆動されることを意味する。換言すれば、ドライバと負荷の関係を有する「静的電流駆動」フロー下では、ドライバが変化しなければ、それらの負荷は一定期間にわたって潜在的であり、従って負荷の状態がアップデートされる必要がない。その上、「マルチレート」なる語は、領域が、評価される固定されたタイムステップをとる必要がなく、２つの連続する評価間のタイムステップ長さが、領域内の信号及びitsドライバ信号の活動によって決定されることも意味する。１つの領域において同じ現在の次数を有する一様なモデルは、より正確にその次のタイムステップを予測する。
【００７２】
本発明の事例的な実施形態について添付の図面を参照して説明してきたが、本発明はこれらの実施形態のみに制限されるものではないことは理解されよう。これらは、包括的なものでも、本発明を開示されたまさにその形に制限使用とするものでもない。そのようなものとして、多くの変更形態及び変形形態がすぐに分かるであろう。従って、本発明の範囲は、以下の請求項及びそれらに相当するものによって画定されるものとする。
【図１Ａ】
2011528839.tif 000004
【図１Ｂ】
2011528839.tif 000005
【図２】
2011528839.tif 000006
【図３Ａ】
2011528839.tif 000007
【図３Ｂ】
2011528839.tif 000008
【図４Ａ】
2011528839.tif 000009
【図４Ｂ】
2011528839.tif 000010
【図４Ｃ】
2011528839.tif 000011
【図４Ｄ】
2011528839.tif 000012
【図５Ａ】
2011528839.tif 000013
【図５Ｂ】
2011528839.tif 000014
【図５Ｃ】
2011528839.tif 000015
【図５Ｄ】
2011528839.tif 000016
【図５Ｅ】
2011528839.tif 000017
【図６】
2011528839.tif 000018
【図７】
2011528839.tif 000019
【図８】
2011528839.tif 000020
【国際調査報告】
2011528839.tif 000021
2011528839.tif 000022