電子回路の階層的次数ランキングされたシミュレーション
【課題】集積回路設計をシミュレートする方法を提供する。
【解決手段】本発明の方法では、ネットリストにおけるノードのノード次数ランキングを決定することができる。ネットリストの回路は、ノード次数ランキングに基づいて静的及び動的電流駆動方式でパーティショニングされることができる。ノード次数パーティショニングに基づいて階層データ構造が構築されることができる。一実施形態では、シミュレーション最適化のために中間ノード次数を動的に結合することができる。その後、回路を1若しくは複数の結合された中間ノード次数に基づいて再パーティショニングすることができる。階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成することができる。次数ランキングされた階層エンジンについての解析を行うことができる。この時点で、解析に基づいてIC設計のシミュレーションデータがエクスポートされることができる。
【解決手段】本発明の方法では、ネットリストにおけるノードのノード次数ランキングを決定することができる。ネットリストの回路は、ノード次数ランキングに基づいて静的及び動的電流駆動方式でパーティショニングされることができる。ノード次数パーティショニングに基づいて階層データ構造が構築されることができる。一実施形態では、シミュレーション最適化のために中間ノード次数を動的に結合することができる。その後、回路を1若しくは複数の結合された中間ノード次数に基づいて再パーティショニングすることができる。階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成することができる。次数ランキングされた階層エンジンについての解析を行うことができる。この時点で、解析に基づいてIC設計のシミュレーションデータがエクスポートされることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複雑な大型集積回路設計のシミュレーションに関し、詳細には、回路のノード(節点)をそれらのノードトポロジー及び物理学(ノード次数及び節点間結合関係の両方を含む)に基づいて求解及び積分し、それによって、集積回路設計のより高速、より正確、より安定な全体シミュレーションを保証することに関する。
【背景技術】
【0002】
今日の集積回路(IC)設計は、望まれる機能性が増えたせいでますます複雑になっている。さらに、ずっと小さなテクノロジーノード、例えば45nm以細のテクノロジーノードは、100nmでは必要なかった設計変更を必要とし得る。これらの要因のため、適切な回路性能を保証するためにこれらのICの正確なシミュレーションが必要である。
【0003】
シミュレーション中に、回路挙動を近似する簡易化モデルを提供するような線形ネットワークの簡略化(linear network reduction:LNR)を用いることができる。実際に、LNRなしでは、典型的なIC設計の標的行列は非常に大きいので、ポスト・レイアウト回路のシミュレーションは、DC解析(これは、回路の動作点を決定する、すなわち回路内の動的要素の初期条件(時間=0)を定義する)及びTR解析(これは、時間=0から始まり、複数のクロック周期を経るような過渡/時間領域(タイムドメイン)を用いる)を極端に遅くする。残念ながら、LNRは、例えば45nmの電流テクノロジーノードにおいて、深刻な問題を有している。後述するように、これらの問題は、著しい不正確さ及び不安定性すらもたらしかねない。
【0004】
回路を、複数のノード及びエッジからなるグラフを用いて表すことができ、ここで、エッジはデバイスの効果的モデルであり、ノードはエッジ同士を結ぶことに留意されたい。図1Aは、ノードA、B及びCと、エッジRAB、RBC及びRACを有する簡単な3ノード回路のグラフを示す。図1Bは、Δ−Y変換を用いて作られることができる等価4ノード回路のグラフを示し、4ノード回路は、ノードA、B、C及びD並びにエッジRAD、RCD及びRBDを含む。
【0005】
とりわけ、ノード/エッジグラフにキルヒホッフの法則を適用することができる。例えば、キルヒホッフの電流則(KCL)は、任意の回路ノード(節点)から流出及び流入する全ての電流の代数和が0であると述べている。それゆえ、図1Aまたは1Bを参照すると、ノードBに流入する電流はノードBから流出する電流と等しい。従って、KCLは節点方程式として記述される。他方では、キルヒホッフの電圧則(KVL)は、任意の閉回路を一巡するときの電位差すなわち電圧の有向和は0でなければならないと述べている。それゆえ、図1AのノードA、B及びCによって形成されるループの電圧の合計は0に等しい。従って、KVLはループ方程式として記述される。シミュレーションは、各クロック周期でKCL及びKVLの両方の方程式を解こうと試みる。
【0006】
SPICE(Simulation program with IC emphasis:集積回路に重点を置いたシミュレーションプログラム)は、動作点で線形モデルを効果的に構築し、その後、1つの行列方程式すなわちAx=b(ここで、「A」はグラフを代表する結合行列であり、「x」は節点電圧、枝電圧及び枝電流を表す未知数であり、「b」は図2に示す理想的なソースによって与えられる既知の列ベクトルである)を構築する。行列「A」は、KCL(線形)方程式、KVL(線形)方程式、及びI−V(電流−電圧)(非線形)方程式を含むことができる。図2に示す行列方程式の代わりに、修正節点解析(MNA)を用いることもできることに留意されたい。このMNAアプローチは、例えば非特許文献1に記載されている。とりわけ、MNAアプローチもまた、図2に関連して説明したのと同じデメリットを示す行列方程式を含む。回路シミュレーションの分野の当業者は様々な行列方程式を理解しているので、本明細書ではそれらについてこれ以上詳細に説明しない。分かりやすいので、図2に示す行列方程式を用いて説明する。
【0007】
一般的に、線形方程式は、一次より高次のゼロに等しい導関数を有するのに対し、非線形方程式は、参考のために以下に示すような、テイラー級数によって表される一次より高次の非ゼロ導関数を有し、このことはシミュレーションの分野の当業者に知られている。
【数1】
ここで、n!はnの階乗を意味し、f(n)は点aで評価されたfのn番目の導関数を意味する(fの0番目の導関数はfと定義される)(ここで(x−a)0及び0!は1と定義される)。Ax=bを解くために、1つの直接的な方法はx=A−1bである。回路シミュレーションのための別の、より典型的な方法は、収束を必要とする反復アプローチである。
【0008】
残念ながら、行列内の線形方程式と非線形方程式の混合は、線形方程式のための不要な行列計算を生じさせる。すなわち、非線形要素について解くには、線形要素について解くよりも多くの反復が必要とされる。行列に非線形要素が表れていたら、線形要素は、高次非線形要素(すなわちその挙動を正確に記述するために対応する導関数の最高の数を有する非線形要素)に対して行われるのと同じ数だけ反復される。用いられる単一行列と、当該行列における線形/非線形混合及びそれに不可欠な反復のために、SPICEは、典型的には比較的少ない回路を有するIC(例えば100,000個以下のゲートを有するIC)をシミュレートするために用いられる。
【0009】
FastSPICEは、大型の非常に複雑なIC(例えば100万個以上のゲートを有するIC)のシミュレーションを高速化する手法である。この目標を達成するために、FastSPICEは、設計を複数の部分にパーティショニングし、それによって複数の行列の使用を可能にする。例示的なFastSPICEインプリメンテーションは、図3A及び図3Bに示されている。例えば、図3Aは、領域1、2及び3を含む従来の平坦な構造を示す。この場合は、元の行列が、回路トポロジー及び根底にあるデバイス物理に基づいていくつかの弱く結合された領域に分けられるが、それらは半独立的方法で求解される。回路領域同士の結合は、行列解法の外部の様々な手法によって再導入される。この平坦な構造を用いたシノプシス社(Synopsys, Inc.)が提供する例示的なシミュレーション製品には、NanoSim(登録商標)及びXATMが含まれる。図3Bは、例示的な簡易化した階層構造を示し、ここで、サブ回路1はサブ回路2及び3を含み、サブ回路3はサブ回路4を含む。この場合は、行列ソルバーが、基礎回路の階層設計を反映する行列構造内の繰り返しパターンを利用しようと試みる。この階層構造を用いたシノプシス社が提供する例示的なシミュレーション製品には、HSIM(登録商標)が含まれる。残念ながら、いずれのインプリメンテーションに対しても、領域/サブ回路における線形/非線形デバイスとノードの混合は、(ちょうど単一行列と同様に)著しい不正確さをもたらしかねない。さらに、結合は領域/サブ回路間で生じる場合があり、それによって、さらなるモデリング(及びシミュレーション時間)またはリスクを増加させるシミュレーションの不正確さが要求される。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】"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
【発明の概要】
【発明が解決しようとする課題】
【0011】
従って、線形及び非線形の両要素を含む大型の複雑なICに対する正確なシミュレーションを提供する改良型の手法の必要が生じている。
【課題を解決するための手段】
【0012】
集積回路設計をシミュレートする方法が提供される。この方法では、ネットリスト中の複数のノードのノード次数ランキング(次数の大きさの順位)を決定することができる。その後、ノード次数ランキングに基づいてネットリストの回路をパーティショニングすることができる。「ノード次数」なる語は、所定の導関数比の最大値、例えば、特徴付けられているノードに接続する各デバイスから、Vに関するI(V)の導関数に基づく導関数比(DC静的挙動の場合)またはdV/dtに関するI(V,dV/dt,t)の導関数に基づく導関数比(動的過渡挙動の場合)の最大値に比例するものとして定義されることができる。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば(∂2I/∂V2)/(∂I/∂V)、(∂2I/∂(dV/dt)∂V)/(∂I/∂V)または(∂2I/∂(dV/dt)2)/(∂I/∂V)などに基づく場合がある。
【0013】
とりわけ、このパーティショニングを、各ノードのトポロジー及び物理学に基づいて行うこともできる。ノードのトポロジー及び物理学は、ノード次数と、一定のバイアス(例えば0からVDD)下で最大電流画定がされた特定のトランジスタモデルなどのモデルを介してのそれ自身のノードと隣のノードとの結合とを含むことができる。
【0014】
ノード次数パーティショニングに基づいて階層データ構造が構築されることができる。一実施形態では、シミュレーションの最適化のために中間ノード次数が動的に結合されることができる。その後、回路は、小さな領域を持つより高いレベルのノード次数ランキングと大きな領域を持つより低いレベルのノード次数ランキングとのトレードオフを決定する費用関数を使って、1若しくは複数の結合された中間ノード次数に基づいて再パーティショニングされることができる。階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成することができる。次数ランキングされた階層エンジンについての解析を行うことができる。この時点で、解析に基づいてIC設計のシミュレーションデータがエクスポートされることができる。
【0015】
一実施形態では、回路のパーティショニングステップは、回路における1対のノード間の結合を決定するステップを含むことができる。結合を決定するステップは、2つのノード間のコンダクタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、2つのノードが同じ次数を有しかつコンダクタンスが所定の値より大きいときに、2つのノードを同じ領域に配置するステップを含むことができる。別の実施形態では、結合を決定するステップは、2つのノード間のキャパシタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、2つのノードが同じ次数を有しかつキャパシタンスが所定の値より大きいときに、2つのノードを同じ領域に配置するステップを含むことができる。
【0016】
シミュレーションでは、パーティショニングされた領域は、静的電流駆動方式によって決定されるタイムスロットの数でスケジューリングされることができる。動的電流駆動方式は、同じタイムスロットに対してスケジューリングされた領域のための求解の順序を決定することができる。一実施形態では、求解は、最上位(トップ)から最下位(ボトム)へ(ここで、「最上位」は最高の非線形性すなわち最高ノード次数を示し、「最下位」は最低の非線形性(最高の線形性)すなわち最低ノード次数を示す)、次に最下位から最上位へ進む。より低い次数を持つ各領域はポートの挙動について解き、その上にあるより高い次数を持つ領域に情報をフィードバックする。
【0017】
一実施形態では、集積回路設計をシミュレートするためのコンピュータ実行可能な命令を格納するコンピュータ読み取り可能な媒体についても説明されている。これらのコンピュータ実行可能な命令は、コンピュータによって実行されるとき、上記のステップを行う。
【図面の簡単な説明】
【0018】
【図1A】簡単な3ノード回路のグラフを示す。
【図1B】図1Aのものと等価な4ノード回路のグラフを示す。
【図2】回路グラフを表すことができるSPICE行列方程式を示す。
【図3A】例示的なFastSPICEインプリメンテーションを示す。
【図3B】例示的なFastSPICEインプリメンテーションを示す。
【図4A】ノード電流対バイアスの例示的な形状を示す。
【図4B】ノード電流対バイアスの例示的な形状を示す。
【図4C】ノード電流対バイアスの例示的な形状を示す。
【図4D】ノード電流対バイアスの例示的な形状を示す。
【図5A】そのノードが特定された簡易回路を示す。
【図5B】それぞれのランキングが決定された図5Aの特定されたノードを示す。
【図5C】決定されたノードランキング及びノード間の結合に基づく図5Bの簡易回路のパーティショニングを示す。
【図5D】決定されたノードランキング及びノード間の結合に基づく図5Bの簡易回路のパーティショニングを示す。
【図5E】図5Dのパーティショニングされた回路の例示的なスケジューリングを示す。
【図6】ソフトウェアコーディング形式の、次数ランキングされた階層の別の描写を示す。
【図7】階層的次数ランキングを含む例示的なシミュレーションフローを示す。
【図8】例示的なデジタルASIC設計フローを簡略化して説明するための図を示す。
【発明を実施するための形態】
【0019】
今日の大部分の標準IC設計は様々なコンポーネントを含み、それらの挙動は、線形、一次非線形及び高次非線形であるものとして特徴付けられ得る。ICシミュレータにおける現在のパーティショニング・アルゴリズムは、回路トポロジー及び結合強度に基づいてパーティショニングを行う。それゆえ、結果として生じるパーティションは、通常、ノード並びに線形及び非線形デバイスの両方を含み、そのことがシミュレーション処理及び時間を著しく増加させる。
【0020】
さらに、ますます多くの設計は同じIC上にデジタル回路とアナログ回路の両方を装備している(混合信号技術と呼ばれる)。これらの混合信号回路は、典型的には、複数の高次非線形要素を含む(ここで、非線形要素の次数が高ければ高いほど、その挙動を正確に定義するためにより多くの導関数が必要とされる)。とりわけ、一次導関数について解くには、典型的に、正確な結果を得るために大きなステップ(デルタ値)を用いるが、高次導関数について解くには、典型的に、正確な結果を得るためにより小さなステップを用いる。残念ながら、シミュレータツールは、一次導関数と高次導関数のもともとのステップの違いと折り合いをつけるようにはなっていない場合がある。
【0021】
具体的には、より小さなステップサイズの使用を選ぶシミュレータツールは、シミュレーション時間がかなり増加するが、より大きなステップサイズの使用を選ぶシミュレータツールは、正確さを犠牲にしてシミュレーション不安定性のリスクを冒す。この問題を解決するために、一部のシミュレーションツールには、シミュレーション性能を向上させるためのモデル次数減少アルゴリズムが含まれる。残念ながら、これらのアルゴリズムは著しい不正確さ及び不安定性を導入しかねない。
【0022】
改良型シミュレーション手法の一態様に従って、シミュレーションの正確さ及び性能を向上させるためにノード次数を有利には用いることができる。具体的には、以下に詳細に述べるように、この手法は、ノード非線形性の異なる次数を用いて回路ブロックをパーティショニングすることができる。このパーティショニングに基づいて、階層的求解及び積分を安定的に行うことができる。
【0023】
ネットリストは、IC設計のデバイス及びそれらのデバイスの接続性を、ネットを用いて記述したものであることに留意されたい。ネットリストは、階層的または平坦なものであることができる。階層ネットリストは、回路のより高いレベルの抽象化を可能にさせるために「プリミティブ」(すなわち不可分なインスタンス)及びサブ回路(すなわち複数のプリミティブを含む)を含むことができる。対照的に、平坦なネットリストはプリミティブのみを含む。
【0024】
一実施形態では、次数ランキングされたパーティショニングを単純化するために、階層ネットリストとして提供されるIC設計は、先ず、付随する精度ロスなしで最適化され(図1Bから図1Aに変わるように)、次に概略的に(局所的または全体的に)平坦にされることができる。先ず、各ノードは「ノード次数」を割り当てられ、ネットリスト中のノードの全セットは同じ(または近い)次数を有するグループにパーティショニングされることができる。本明細書において、「ノード次数」なる語は、導関数比の最大値、例えば、特徴付けられているノードに接続する各デバイスから、Vに関するI(V)の導関数に基づく導関数比(DC静的挙動に基づく)またはdV/dtに関するI(V,dV/dt,t)の導関数に基づく導関数比(動的過渡挙動に基づく)の最大値に比例するものとして定義されることができる。
【0025】
DC静的挙動(すなわちt=0)に関して、0からXまでの値の範囲(ここで、Xは、VDDなどの最大電圧Vである)を用いたデバイスモデルのスイープを行い(それで「Vに関する」なる語を冠する)、最大所定の導関数比を決定することができることに留意されたい。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば(∂2I/∂V2)/(∂I/∂V)などに基づく場合がある。
【0026】
対照的に、動的過渡挙動に関して、タイムステップを変えて経時的に0からXまでの電圧変化の範囲(ここで、Xは、VDDなどの最大電圧Vである)を用いたデバイスモデルのスイープを行い(それで「dV/dtに関する」なる語を冠する)、最大所定の導関数比を決定することができる。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば(∂2I/∂(dV/dt)∂V)/(∂I/∂V)または(∂2I/∂(dV/dt)2)/(∂I/∂V)などに基づく場合がある。
【0027】
パーティショニングは、各ノードのトポロジー及び物理学に基づいてさらに最適化され得、それらは回路内のノード間の物理的または機能的な関係を決定する任意の数の因子を含むことができる。特に興味深い例は、ノードそれ自体と回路内の任意の他のノードとの結合の度合いである。結合を決定するステップは、2つのノード間のコンダクタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、2つのノードが同じ次数を有しかつコンダクタンスが所定の値より大きいときに、2つのノードを同じ領域に配置するステップか、あるいは、それらが同じ次数であっても、コンダクタンスが所定の値よりも小さいような別々のパーティション・ノードに分けるステップを含むことができる。別の実施形態では、結合を決定するステップは、2つのノード間のキャパシタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、2つのノードが同じ次数を有しかつキャパシタンスが所定の値より大きいときに、2つのノードを同じ領域に配置するステップか、あるいは、それらが同じ次数であっても、キャパシタンスが所定の値よりも小さいような別々のパーティション・ノードに分けるステップを含むことができる。
【0028】
図4A〜図4Dは、バイアスに対する線形または非線形ノード電流の例示的な形状を示す。本明細書において、「線形ノード」なる語は、一般的に、線形デバイスにしか接していないか何にも接していないノードとして特徴付けられることができるが、「非線形ノード」なる語は、一般的に、非線形電流チャネルを介して少なくとも1つの非線形デバイスに接しているノードとして特徴付けられることができる。例えば、図4Aの形状401は、例えば抵抗に結合された線形ノード(i=gvとして表される一般的な電流。ここで「i」は電流、「g」はコンダクタンス、「v」は電圧/バイアスである)を示す。線(line)の二次導関数は0であるので、それは当然なことながら線形であることに留意されたい。対照的に、図4Bの形状402は、例えばバイポーラ接合トランジスタ(BJT)に結合された非線形ノード(i=fBJT(v)として表される一般的な電流。ここで「f(v)」は電圧/バイアスの関数を指す)を示す。図4Cの形状403は、例えばダイオードに結合された非線形ノード(i=cevとして表される一般的な電流。ここで「c」は定数であり、「e」は指数関数を指す)を示す。図4Dの形状404は、例えばMOSFET(金属酸化膜半導体電界効果トランジスタ)のドレインまたはソースに結合された非線形ノード(i(ドレイン−ソース)=fMOSFET(v)として表される一般的な例としての電流。ここで「f(v)」は電圧/バイアスの関数を指す)を示す。
【0029】
(次数,{結合})(ここで{}は回路内の解析されたノードと任意の他の隣接ノードの間から/への1組の最大電流(のうちの或る電流)を示す)を用いたパーティショニングの目的は、行列中の全てのノードが同じ(または近い)次数を有しかつ予め定義された物理的相互関係を有することを保証することである。次数ランキングされたパーティショニングに基づき、改良された階層構造が構築されることができる。
【0030】
図5Aは、トランジスタ、抵抗及びダイオード(例示的なプリミティブ)並びにそれらの相互接続を含む簡易回路を示す。図5Aのノード500は円を用いて示されている。改良されたパーティショニングの一態様に従って、ノード500の次数が特定(identify)されることができる。この実施形態では、最低次数には線形ノードしか含まれない。別の実施形態では、ノード次数のランキングは、線形及び非線形の両ノードを有する最低次数を含むことができる。
【0031】
図5Bには、最低/0次ノード501(例えばノード501A〜501D)が黒い三角形で示され、一次ノード502(1組の非線形ノード)(例えばノード502A〜502I)が黒い円で示され、二次ノード503(一次ノード502よりも高次の所定の導関数を必要とする別の組の非線形ノード)(例えばノード503A〜503B)が黒い四角形で示されている。
【0032】
図5Bに示す回路のパーティショニングは、静的駆動方式及びその後に動的駆動方式を用いて行われることができ、これはノード次数によって制御される。静的電流駆動方式は、チャンネル接続に基づいてノードをグループ化することができる。一実施形態では、静的電流駆動方式は、先ず、同次ノード次数の駆動のみ(driver-only)のサブ回路と同次ノード次数の被駆動のみのサブ回路を特定することができる。例えば、図5Cを参照すると、領域512は0次ノードを有する駆動のみのサブ回路であるのに対し、領域515は一次ノードを有する被駆動のみのサブ回路である(VDDとVSSの間に接続されたインバータを有するが、簡単にするために図示せず)。静的電流駆動方式は、電流依存性に基づいて他の全てのサブ回路をグループ化することができるが、ノード次数は無視する。このように、領域512及び515に加えて、静的電流駆動方式は、領域521及び522を作り出すことができる。
【0033】
以下にさらに詳細に述べるように、静的電流駆動方式によって作り出される領域(図5Cに示す回路における4つの領域)は、(図5Eに関連して説明される)回路を解析するために用いられるタイムスロットの数を有利に決定することができる。領域512/515と領域521/522を区別するために、領域521及び522は(2以上のノード次数を持つ駆動及び被駆動の両方の特性を含むので)ハイブリッド領域と呼ばれる。
【0034】
動的電流駆動方式は、ノード次数に基づいて、ハイブリッド領域すなわち領域521及び522をさらに分けることができる。例えば、図5Dを参照すると、領域521は領域511及び514に分けられることができ、このとき領域511は一次ノードのみを有し、領域514は0次ノードのみを有する。同様に、領域522は領域513及び516に分けられることができ、このとき領域513は一次ノードのみを有し、領域516は二次ノードのみを有する。それゆえ、動的電流駆動方式を用いた後、図5Bを参照すると、領域511は3つのノード502A、502B及び502Cを含み、領域512は2つのノード501A及び501Bを含み、領域513は3つのノード502D、502E及び502Fを含み、領域514は2つのノード501C及び501Dを含み、領域515は3つのノード502G、502H及び502Iを含み、領域516は2つのノード503A及び503Bを含む。
【0035】
図5Eは、(静的電流駆動方式によって決定されるような)4つのタイムスロット1〜4を用いた領域511〜516を含む次数ランキングされた階層構造の解析/シミュレーションの例示的なスケジュール530(すなわち解析のためのこれらの領域のスケジューリング)を示す。スケジュール530において各領域511〜516の優先度の決定は、動的電流駆動方式を用いて行われることができる。とりわけ、静的電流駆動方式によって画定される各領域(図5Cを参照)は、タイムスロット1〜4のうちの1つにおいて解析されることができる。
【0036】
本発明の一態様に従って、スケジューリング優先度は、領域内のノード次数及び電流ドライバに基づく場合がある。例えば、図5Dでは、領域512は、領域511及び513の両方でデバイスを駆動する。具体的には、領域512内のノードは、トランジスタのためのゲートバイアスしか供給しないので、駆動のみの領域における静的電流ドライバとして特徴付けられることができる(ここで、静的電流ドライバでないノードは、当然に動的電流ドライバである)。さらに、領域512を流れる電流は、他の領域に依存しない。領域512は、その静的電流ドライバと、他の領域からの独立性に基づき、(ノード次数に関係なく)最も高い優先度を有し、従ってタイムスロット1内でスケジューリングされることができる。
【0037】
一般的に、スロット指定に関して、別の領域のデバイスを駆動する高次ノード領域は、別の領域のデバイスを駆動する低次ノード領域より前に求解される。従って、図5Dでは、領域516(これは残りの領域511、513、514、515及び516のうち最高次ノードを有する)タイムスロット2内で解析されるべきである。上記したように、1つのハイブリッド領域内の複数の領域は、同じタイムスロット内で解析される。従って、領域516及び513は、タイムスロット2内で求解されることができる。
【0038】
一実施形態では、ハイブリッド領域におけるスケジューリング優先度は、次のステップを用いて(例示的なハイブリッド領域として領域513及び516を用いて)決定されることができる。これらのステップ(階層的解法を含む)を、ハイブリッド領域内の任意の2つ1組の隣接領域に対して用い、スケジューリング優先度を決定することができることに留意されたい。
【0039】
電流動作点で領域513の線形化モデルを構築し、そこでは領域513と領域516の間の部分にかかる負荷を計算するためにシュアー補行列が用いられる。
【0040】
N>1に対して、行列内の領域513の代わりとしてステップ1の線形化モデルをインポートする領域516のニュートン・ラフソン(NR)反復法を解く。
【0041】
M(1<M<N)に対して、求めたばかりの領域516の解を境界条件として用いて領域513のNR反復法を解く。
【0042】
領域513に非線形要素が含まれるならば(この場合は含まれる)、全てのノードで収束が達成されるまで全過程を反復する。スケジューリング優先度は、収束後に領域に対して達成される正確さに基づいて決定される。すなわち、より高い正確さを与えるスケジューリング優先度が選ばれる。
【0043】
個々の計算として、線形化モデルを構築し、シュアー補行列を用い、ニュートン・ラフソン反復法を解き、収束を達成することは、当業者に知られているので、本明細書では詳細に説明していないことに留意されたい。
【0044】
この時点で、領域511は、残りの領域511、514及び515の最高次ノードを有するので、タイムスロット3内で求解されるべきである。上記したように、1つのハイブリッド領域内の領域は同じタイムスロットで解析される。従って、領域511及び514は、タイムスロット3内で求解されることができる。領域511と領域514の間の解析の次数は、領域513及び516に関して述べたのと同じ手法を用いて決定されることができることに留意されたい。この場合は、領域511は領域514より前に求解されるべきであることが決定される。ハイブリッド領域に関して、高次のノードを有する領域が低次のノードを有する領域より前に解析されると考えられるが、この一般化は間違っていることがある。従って、好適実施形態では、求解の次数は上記した階層的解法を用いて決定される。
【0045】
この時点で、領域515のみが残っているので、領域515はタイムスロット4内で解析のために求解されることができる。静的電流駆動方式によって示されるように、領域515は被駆動のみの領域であるので、領域515は、回路内で領域515を駆動する任意の領域の後に実行されるべきである。
【0046】
この実施形態では、最上位から最下位へ、そして最下位から最上位へ解析が行われる(図5Dは最上位から最下位への解析を示している)。「最上位から最下位へ」の表記は、それらを駆動している他の低次ノード領域を除いて最初に解析されている高次ノード領域を指すことに留意されたい。対照的に、「最下位から最上位へ」の表記は、それらが他の高次ノード領域を駆動している点を除いて最初に解析されている低次ノード領域を指す。
【0047】
図6は、ソフトウェアコーディング形式の、次数ランキングされた階層600の別の描写を示す。具体的には、次数ランキングされた階層600は、4つの次数(各次数は異なるフィルパターン(fill pattern)を有する)を含む。ノード610、611、612及び613は次数3であり、ノード620、621、622及び623は次数2であり、ノード630、631、632及び633は次数1であり、ノード640、641及び642は次数0である。この特定の回路構成では、ノード610はノード620を駆動し、ノード620は同様にノード630を駆動し、ノード630は同様にノード640を駆動する。
【0048】
上記したように、ノードのトポロジー及び物理学は「次数」及び「結合」に関する情報を提供し、ここで次数は特定のノードの固有特性を決定し、結合は、1若しくは複数の隣接ノードが、これらのノード間の閾値より上のコンダクタンスまたはキャパシタンスに基づき解析されたノードとして同じパーティションに含まれることができるか否かを決定する。一般的に、少なくとも所定の結合閾値を有する同じ次数を持つノードを同じパーティションに配置することができる。次数ランキングされた階層600は、垂直コネクタ650を用いて、データが駆動ノードと被駆動ノード間で共有されることができることを示すことに留意されたい。一実施形態では、各パーティションにおいてデータ共有すなわち同型マッチングが生じる場合もある。
【0049】
図7は、上記した階層的次数ランキングを含む例示的なシミュレーションフロー700を示す。ステップ710では、ネットリストが正しい手順で解析される(すなわちパーシングされる)。ステップ720では、利用可能な命令及び選択をパーシングすることができる。ステップ740では、パーシングされたネットリスト、命令及び選択の結果を用いて、フロントエンド・データベース、モデル及び回路の接続性をセットアップすることができる。回路のサイズのために、ステップ740は従来のデータベース階層(すなわち最適化された階層ネットリスト)を生成する回路最適化も含むことが好ましい。一実施形態では、ステップ740は、平坦なフロントエンド・データベース・セットアップ(ここで、「フロントエンド」は、エンジンセットアップより前の全てのプロセス、例えばネットリストのパーシング、モデルセットアップ、回路接続性セットアップ、最適化セットアップを指す)を用いて、または階層的フロントエンド・データベース・セットアップを用いて、または部分的に平坦な階層的フロントエンド・データベース・セットアップを用いて、この最適化された階層ネットリストを平坦化するステップを含むこともできる。最適化された階層ネットリストを用いて、ステップ750は、次に、次数ランキングされた階層エンジンのセットアップを提供する。次数ランキングされた階層エンジンを用いて、ステップ760は、DC解析、AC解析及び過渡解析を行うができる。ステップ770は、この解析の結果をシミュレーションデータとしてエクスポートすることができる。
【0050】
ステップ750は、次の例示的なステップを含むことができる。ステップ751は、回路におけるノードのノード次数ランキングを決定することができる。一実施形態では、この決定には、最大所定の導関数比を見つけるステップが含まれる場合があり、それについては上記されている。ステップ752は、電流ノード次数並びにノードのトポロジー及び物理学(静的電流駆動方式及びその後に動的電流駆動方式の使用を含む)に基づいて、回路をパーティショニングすることができる。ステップ753は、パーティショニングに基づいて階層データ構造を構築することができる。この階層データ構造は最適化されたデータベース階層(これはノード次数を区別しない)とかなり異なることに留意されたい。シミュレーション手法700の一実施形態では、最適化されたデータベース階層(ステップ740で生成される)は、ノード次数ランキングされた階層データ構造によって格納され得ない回路に関連する情報を格納するように保持されることができる。それゆえ、ステップ760は、ステップ740及び750の両方によって生成される情報を利用して実行されることができる。
【0051】
ステップ754は、システムの最適化のために特定の中間次数を動的に結合することができる。一実施形態では、ステップ754は、各ノード次数に関連するノードの数を決定し、各パーティション内のノードの数がより均一に分配されるように特定の次数を結合するステップを含むことができる。例えば、10個の次数が、かなり違う数のノードを持つパーティションを生じさせるならば、ステップ754は、特定の隣接する次数同士(例えば2番目と3番目の次数または9番目と10番目の次数)を結合してパーティション内のノードをより良好に分配し、それによってシステム効率を上げることができる(例えばステップ730及び760において)。
【0052】
次数の分割及び結合はステップ754で実行されることができることに留意されたい。例えば、3つの次数が、かなり違う数のノードを持つパーティションを生じさせるならば、ステップ754は、パーティション内のノードをより良好に分配するように特定の次数を分割する(より多くの次数を効果的に作り出す)ことができる。それゆえ、ステップ752の「パーティショニング」(すなわち、1つのピースからの全てのノードを仮定して、そのピースを特定の数の複数のピースに分ける)は、「結合」(すなわち、各ノードがピースであると仮定して、特定の複数のピースを結合してより少ない数の複数のピースを形成する)として特徴付けられることもできる。とりわけ、最終結果は同じ、すなわち最適化された次数ランキングされた階層型データベースである。
【0053】
換言すれば、ステップ751における次数ランキングの最初の定義を用いて、次数ランキングが回路の最適化されたパーティショニングをもたらすかどうかを決定するためにステップ752及び753が実行される。ステップ754は、回路をより良好にパーティショニングし、シミュレーション効率を最大にするために、現在の次数ランキングが再定義されるようにする。ステップ752〜754は、所定の最適化が実現されるまで繰り返されることができる。一実施形態では、所定の費用関数を用いて、性能効率の値を求める各領域の費用をバランスすることができる。ステップ755は、最適化された階層データ構造及び階層エンジンを用いて求解及び積分を行うことができる。とりわけ、この求解は、異なるパーティションに対して別々の行列を用いて行われることができる。それゆえ、各行列は特定のノード次数に向けられることができ、それが計算精度及び効率を上げる。
【0054】
ステップ730は、システム効率を上げるためにステップ760のいくつかのジョブを並行して行うことができることに留意されたい。実際に、上記したノードランキングされた階層的パーティションは、当然に並列計算に適している。例えば、同じノード次数を有する領域は、並行して解析(DC、AC、過渡)されることができる。さらに、階層的パーティションは、典型的には、より高次のランキングされた次数を持つノードに対して密行列を生じさせる。有利には、並行行列ソルバーは、疎行列よりも密行列で効率的に働く。
【0055】
さらに、ステップ755中に行われる積分は、次数ランキングされた階層データ構造から恩恵を受けることもできることに留意されたい。具体的には、積分の効率は、積分法が信号の次数に如何によく合うかと関連付けることができる。実際の回路では、信号の挙動は、シミュレーションによってのみならず、信号パスにおける負荷の次数によっても決定される。純粋な線形負荷は元の信号にそれ以上の非線形性を導入しないが、高次負荷を持つパスは元の信号に複雑さを加える。従って、低次ネットワークノードに低次積分法を適用することができかつ高次ネットワークノードに高次積分法を適用することができるときには、積分は、より著しく効果的である場合がある。
【0056】
図8は、例示的なデジタルASIC設計フローを簡略化して説明するための図である。上側の段において、プロセスは製品企画(ステップ800)より開始し、EDAソフトウェア設計プロセスを実行する(ステップ810)。設計が終了すると、テープアウトを行う(イベント840)。テープアウト後、製造プロセス(ステップ850)、パッケージング及び組立プロセス(ステップ860)を実施し、最終的に、完成品チップが得られる(結果870)。
【0057】
EDAソフトウェア設計プロセス(ステップ810)は、実際には複数のステップ812〜830から構成されており、簡略化のために直線的に示している。実際のASIC設計プロセスでは、特定の設計は、所定の試験に合格するまでステップを逆戻りしなければならないこともある。同様に、任意の実際の設計プロセスでは、これらのステップは、異なる順序及び組み合わせで行われることがある。従って、この説明は、特定のASICのための具体的な或いは推奨する設計フローとしてよりも、むしろ背景説明(context)及び一般的な説明のために提供される。EDAソフトウェア設計プロセス(ステップ810)を構成するステップを簡単に説明する。
【0058】
システム設計(ステップ812):設計者は、実装したい機能性を記述し、what−ifプランニングを実施して機能性改良や費用確認などを行うことができる。ハードウェア−ソフトウェア・アーキテクチャ・パーティショニングは、このステップで行うことができる。このステップで使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Model Architect、Saber、System Studio、及びDesignWare(登録商標)などの製品が含まれる。
【0059】
論理設計及び機能性の検証(ステップ814):このステップでは、システム内のモジュールのためのVHDLまたはVerilogコードを書き込み、その設計を機能性の精度について検査する。より具体的には、設計を検査することによって、正しい出力を生成することを保証する。このステップで使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、VCS、VERA、DesignWare(登録商標)、Magellan、Formality、ESP、及びLEDAなどの製品が含まれる。
【0060】
合成及び試験のための設計(ステップ816):このステップでは、VHDL/Verilogをネットリストに変換する。ネットリストは、目的の技術のために最適化することができる。加えて、完成品チップの検査を可能とする試験の設計及び実装を行う。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Design Compiler(登録商標)、Power Compiler、Tetramax、及びDesignWare(登録商標)などの製品が含まれる。
【0061】
ネットリスト検証(ステップ818):このステップでは、ネットリストを、タイミング制約との適合性及びVHDL/Verilogソースコードとの対応性について検査する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Formality、PrimeTime、及びVCSなどの製品が含まれる。
【0062】
設計プランニング(ステップ820):このステップでは、チップの全体フロアプランを作成し、タイミング及び最上位ルーティングについて解析する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Astro及びIC Compilerなどの製品が含まれる。
【0063】
物理的な実装(ステップ822):このステップでは、配置(回路素子の位置決め)及びルーティング(回路素子の接続)を行う。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Astro及びIC Compilerなどの製品が含まれる。
【0064】
解析及び抽出(ステップ824):このステップでは、回路機能をトランジスタレベルで検証し、これによりwhat−if解析による改良を可能にする。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、AstroRail、PrimeRail、Primetime、及びStar RC/XTなどの製品が含まれる。
【0065】
物理的な検証(ステップ826):このステップでは、様々なチェック機能を実行し、製造、電気的な結果、リソグラフィックの結果、及び回路構成について正確性を保証する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Herculesなどの製品が含まれる。
【0066】
分解能向上(ステップ828):このステップでは、レイアウトの幾何学的操作を行い、設計の製造可能性を改善する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Proteus、ProteusAF、及びPSMGenなどの製品が含まれる。
【0067】
マスクデータ準備(ステップ830):このステップでは、完成品チップを作成するのに使用するリソグラフィーのために、マスク作成用の「テープアウト」データを提供する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、CATS(登録商標)シリーズの製品が含まれる。
【0068】
本発明は、データ保存システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、且つそれらに対してデータ及び命令を送信するように接続された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行する1若しくは複数のコンピュータプログラムに有利に実装することができる。各コンピュータプログラムは、高次手続き型またはオブジェクト指向型プログラミング言語で、或いは所望に応じてアセンブリ言語または機械語で実装することができる。いずれにせよ、その言語は、コンパイラ型言語又はインタープリタ型言語である。適切なプロセッサには、例えば、汎用マイクロプロセッサ及び特定用途向けマイクロプロセッサの両者のほか、他の種類のマイクロコントローラが含まれる。一般的に、プロセッサは、読み出し専用メモリ及び/またはランダムアクセスメモリから命令及びデータを受信する。一般的に、コンピュータは、データファイルの保存用として1若しくは複数の大容量記憶装置を有しており、その大容量記憶装置には、磁気ディスク(例えば、内蔵されたハードディスク及びリムーバブルディスク)、光磁気ディスク、及び光ディスクが含まれる。コンピュータプログラム命令及びデータを具体的に実施するのに適合する記憶装置には、全ての形態の不揮発性メモリ(例えば、EPROM、EEPROMなどの半導体メモリ装置、及びフラッシュメモリ装置)、磁気ディスク(例えば、内蔵されたハードディスク及びリムーバブルディスク)、光磁気ディスク、及びCD−ROMディスクが含まれる。前述したいずれのものも、特定用途向け集積回路(ASIC)により補足することができる又はそれに組み込むことができる。
【0069】
上記した次数ランキングされた階層エンジンは、任意のシミュレーションツール、すなわちプレ・レイアウト及びポスト・レイアウト・シミュレーションの両方で用いられることができることに留意されたい。従って、図8に関して、次数ランキングされた階層エンジンは、ステップ818〜826のいずれにおいて用いられることもできる。シノプシス社が提供する現行の例示的なシミュレーションツールには、HSIM(登録商標)、Nanosim(登録商標)、StarSIMTM、XATM及びHSPICE(登録商標)が含まれる。有利には、次数ランキングされた階層エンジンは、ポスト・レイアウト・シミュレーションの正確さにプレ・レイアウト・シミュレーション性能を与える。例えば、最低次ノード(例えば線形ノード)は求解に1回の反復しか必要とせず、高次ノードの各セットは、適切な数の反復を用いて正確さを保証するので、精度ロスが付随するLNRは不要である。さらに、プレ・レイアウト・シミュレーションは、典型的に、比較的少ないノードを含むので、求解する行列はそれ相応に小さいことに留意されたい。対照的に、ポスト・レイアウト・シミュレーションは、典型的に、多くのノードを含むので、求解する行列はそれ相応に大きい。次数ランキングされた階層エンジンは、次数ランキングされたノードセットにおいてこれらのノードを壊し、それによって解くべき行列が比較的小さいことを保証する。従って、上記したノード次数シミュレーション手法は、システムリソースの効率的利用を保証する。LNRの別の問題は、I(V,dV/dt,t)の一次(線形)の近似値が、一次よりも高次の次数において正確さの制御を不能にしていることである。
【0070】
さらに、上記で簡単に述べたように、求解された行列内の一様な次数を持つノードは、DC解析及び過渡解析中のより大きな安定性を保証する。具体的には、DC動作点を計算する際、最初の推測は収束から外れており、ほとんどの状況下で、最初の推測は収束半径内にない。対照的に、過渡計算は、最後の収束点に基づいて次の収束点を捜し、ほとんどの状況では、最後の収束点は収束半径内にある。「ブローアップ(blow-up)」は、DCと過渡収束推測の間のどこかにある推測(ステップ)を用いることによって、同じ行列内で異なる次数を持つ可動ノードの競争によって通常は生じる。有利には、DC解析または過渡解析のいずれかにおいて、同じ次数(または非常に近い次数)のノードのみを有する行列を用いることによって、迅速かつ安定的に収束を達成することができる。
【0071】
上記した次数ランキングされた階層は、同型マッチング及びマルチレート・イベントドリブン・スケジューリングを実装する利点を有することにも留意されたい。「同型マッチング」なる語は、回路トポロジー共有及び物理状態共有の両方を含むデータ共有を提供する。同じ次数を持つ領域は、回路トポロジー及び物理状態を共有する可能性がより高い。「マルチレート・イベントドリブン・スケジューリング」なる語は、領域間の評価レート(またはタイムステップ)は異なる場合があり、イベント(事象)によって駆動されることを意味する。換言すれば、ドライバと負荷の関係を有する「静的電流駆動」フロー下では、ドライバが変化しなければ、それらの負荷は一定期間にわたって潜在的であり、従って負荷の状態がアップデートされる必要がない。その上、「マルチレート」なる語は、領域が、評価される固定されたタイムステップをとる必要がなく、2つの連続する評価間のタイムステップ長さが、領域内の信号及びitsドライバ信号の活動によって決定されることも意味する。1つの領域において同じ現在の次数を有する一様なモデルは、より正確にその次のタイムステップを予測する。
【0072】
本発明の事例的な実施形態について添付の図面を参照して説明してきたが、本発明はこれらの実施形態のみに制限されるものではないことは理解されよう。これらは、包括的なものでも、本発明を開示されたまさにその形に制限使用とするものでもない。そのようなものとして、多くの変更形態及び変形形態がすぐに分かるであろう。従って、本発明の範囲は、以下の請求項及びそれらに相当するものによって画定されるものとする。
【技術分野】
【0001】
本発明は、複雑な大型集積回路設計のシミュレーションに関し、詳細には、回路のノード(節点)をそれらのノードトポロジー及び物理学(ノード次数及び節点間結合関係の両方を含む)に基づいて求解及び積分し、それによって、集積回路設計のより高速、より正確、より安定な全体シミュレーションを保証することに関する。
【背景技術】
【0002】
今日の集積回路(IC)設計は、望まれる機能性が増えたせいでますます複雑になっている。さらに、ずっと小さなテクノロジーノード、例えば45nm以細のテクノロジーノードは、100nmでは必要なかった設計変更を必要とし得る。これらの要因のため、適切な回路性能を保証するためにこれらのICの正確なシミュレーションが必要である。
【0003】
シミュレーション中に、回路挙動を近似する簡易化モデルを提供するような線形ネットワークの簡略化(linear network reduction:LNR)を用いることができる。実際に、LNRなしでは、典型的なIC設計の標的行列は非常に大きいので、ポスト・レイアウト回路のシミュレーションは、DC解析(これは、回路の動作点を決定する、すなわち回路内の動的要素の初期条件(時間=0)を定義する)及びTR解析(これは、時間=0から始まり、複数のクロック周期を経るような過渡/時間領域(タイムドメイン)を用いる)を極端に遅くする。残念ながら、LNRは、例えば45nmの電流テクノロジーノードにおいて、深刻な問題を有している。後述するように、これらの問題は、著しい不正確さ及び不安定性すらもたらしかねない。
【0004】
回路を、複数のノード及びエッジからなるグラフを用いて表すことができ、ここで、エッジはデバイスの効果的モデルであり、ノードはエッジ同士を結ぶことに留意されたい。図1Aは、ノードA、B及びCと、エッジRAB、RBC及びRACを有する簡単な3ノード回路のグラフを示す。図1Bは、Δ−Y変換を用いて作られることができる等価4ノード回路のグラフを示し、4ノード回路は、ノードA、B、C及びD並びにエッジRAD、RCD及びRBDを含む。
【0005】
とりわけ、ノード/エッジグラフにキルヒホッフの法則を適用することができる。例えば、キルヒホッフの電流則(KCL)は、任意の回路ノード(節点)から流出及び流入する全ての電流の代数和が0であると述べている。それゆえ、図1Aまたは1Bを参照すると、ノードBに流入する電流はノードBから流出する電流と等しい。従って、KCLは節点方程式として記述される。他方では、キルヒホッフの電圧則(KVL)は、任意の閉回路を一巡するときの電位差すなわち電圧の有向和は0でなければならないと述べている。それゆえ、図1AのノードA、B及びCによって形成されるループの電圧の合計は0に等しい。従って、KVLはループ方程式として記述される。シミュレーションは、各クロック周期でKCL及びKVLの両方の方程式を解こうと試みる。
【0006】
SPICE(Simulation program with IC emphasis:集積回路に重点を置いたシミュレーションプログラム)は、動作点で線形モデルを効果的に構築し、その後、1つの行列方程式すなわちAx=b(ここで、「A」はグラフを代表する結合行列であり、「x」は節点電圧、枝電圧及び枝電流を表す未知数であり、「b」は図2に示す理想的なソースによって与えられる既知の列ベクトルである)を構築する。行列「A」は、KCL(線形)方程式、KVL(線形)方程式、及びI−V(電流−電圧)(非線形)方程式を含むことができる。図2に示す行列方程式の代わりに、修正節点解析(MNA)を用いることもできることに留意されたい。このMNAアプローチは、例えば非特許文献1に記載されている。とりわけ、MNAアプローチもまた、図2に関連して説明したのと同じデメリットを示す行列方程式を含む。回路シミュレーションの分野の当業者は様々な行列方程式を理解しているので、本明細書ではそれらについてこれ以上詳細に説明しない。分かりやすいので、図2に示す行列方程式を用いて説明する。
【0007】
一般的に、線形方程式は、一次より高次のゼロに等しい導関数を有するのに対し、非線形方程式は、参考のために以下に示すような、テイラー級数によって表される一次より高次の非ゼロ導関数を有し、このことはシミュレーションの分野の当業者に知られている。
【数1】
ここで、n!はnの階乗を意味し、f(n)は点aで評価されたfのn番目の導関数を意味する(fの0番目の導関数はfと定義される)(ここで(x−a)0及び0!は1と定義される)。Ax=bを解くために、1つの直接的な方法はx=A−1bである。回路シミュレーションのための別の、より典型的な方法は、収束を必要とする反復アプローチである。
【0008】
残念ながら、行列内の線形方程式と非線形方程式の混合は、線形方程式のための不要な行列計算を生じさせる。すなわち、非線形要素について解くには、線形要素について解くよりも多くの反復が必要とされる。行列に非線形要素が表れていたら、線形要素は、高次非線形要素(すなわちその挙動を正確に記述するために対応する導関数の最高の数を有する非線形要素)に対して行われるのと同じ数だけ反復される。用いられる単一行列と、当該行列における線形/非線形混合及びそれに不可欠な反復のために、SPICEは、典型的には比較的少ない回路を有するIC(例えば100,000個以下のゲートを有するIC)をシミュレートするために用いられる。
【0009】
FastSPICEは、大型の非常に複雑なIC(例えば100万個以上のゲートを有するIC)のシミュレーションを高速化する手法である。この目標を達成するために、FastSPICEは、設計を複数の部分にパーティショニングし、それによって複数の行列の使用を可能にする。例示的なFastSPICEインプリメンテーションは、図3A及び図3Bに示されている。例えば、図3Aは、領域1、2及び3を含む従来の平坦な構造を示す。この場合は、元の行列が、回路トポロジー及び根底にあるデバイス物理に基づいていくつかの弱く結合された領域に分けられるが、それらは半独立的方法で求解される。回路領域同士の結合は、行列解法の外部の様々な手法によって再導入される。この平坦な構造を用いたシノプシス社(Synopsys, Inc.)が提供する例示的なシミュレーション製品には、NanoSim(登録商標)及びXATMが含まれる。図3Bは、例示的な簡易化した階層構造を示し、ここで、サブ回路1はサブ回路2及び3を含み、サブ回路3はサブ回路4を含む。この場合は、行列ソルバーが、基礎回路の階層設計を反映する行列構造内の繰り返しパターンを利用しようと試みる。この階層構造を用いたシノプシス社が提供する例示的なシミュレーション製品には、HSIM(登録商標)が含まれる。残念ながら、いずれのインプリメンテーションに対しても、領域/サブ回路における線形/非線形デバイスとノードの混合は、(ちょうど単一行列と同様に)著しい不正確さをもたらしかねない。さらに、結合は領域/サブ回路間で生じる場合があり、それによって、さらなるモデリング(及びシミュレーション時間)またはリスクを増加させるシミュレーションの不正確さが要求される。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】"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
【発明の概要】
【発明が解決しようとする課題】
【0011】
従って、線形及び非線形の両要素を含む大型の複雑なICに対する正確なシミュレーションを提供する改良型の手法の必要が生じている。
【課題を解決するための手段】
【0012】
集積回路設計をシミュレートする方法が提供される。この方法では、ネットリスト中の複数のノードのノード次数ランキング(次数の大きさの順位)を決定することができる。その後、ノード次数ランキングに基づいてネットリストの回路をパーティショニングすることができる。「ノード次数」なる語は、所定の導関数比の最大値、例えば、特徴付けられているノードに接続する各デバイスから、Vに関するI(V)の導関数に基づく導関数比(DC静的挙動の場合)またはdV/dtに関するI(V,dV/dt,t)の導関数に基づく導関数比(動的過渡挙動の場合)の最大値に比例するものとして定義されることができる。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば(∂2I/∂V2)/(∂I/∂V)、(∂2I/∂(dV/dt)∂V)/(∂I/∂V)または(∂2I/∂(dV/dt)2)/(∂I/∂V)などに基づく場合がある。
【0013】
とりわけ、このパーティショニングを、各ノードのトポロジー及び物理学に基づいて行うこともできる。ノードのトポロジー及び物理学は、ノード次数と、一定のバイアス(例えば0からVDD)下で最大電流画定がされた特定のトランジスタモデルなどのモデルを介してのそれ自身のノードと隣のノードとの結合とを含むことができる。
【0014】
ノード次数パーティショニングに基づいて階層データ構造が構築されることができる。一実施形態では、シミュレーションの最適化のために中間ノード次数が動的に結合されることができる。その後、回路は、小さな領域を持つより高いレベルのノード次数ランキングと大きな領域を持つより低いレベルのノード次数ランキングとのトレードオフを決定する費用関数を使って、1若しくは複数の結合された中間ノード次数に基づいて再パーティショニングされることができる。階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成することができる。次数ランキングされた階層エンジンについての解析を行うことができる。この時点で、解析に基づいてIC設計のシミュレーションデータがエクスポートされることができる。
【0015】
一実施形態では、回路のパーティショニングステップは、回路における1対のノード間の結合を決定するステップを含むことができる。結合を決定するステップは、2つのノード間のコンダクタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、2つのノードが同じ次数を有しかつコンダクタンスが所定の値より大きいときに、2つのノードを同じ領域に配置するステップを含むことができる。別の実施形態では、結合を決定するステップは、2つのノード間のキャパシタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、2つのノードが同じ次数を有しかつキャパシタンスが所定の値より大きいときに、2つのノードを同じ領域に配置するステップを含むことができる。
【0016】
シミュレーションでは、パーティショニングされた領域は、静的電流駆動方式によって決定されるタイムスロットの数でスケジューリングされることができる。動的電流駆動方式は、同じタイムスロットに対してスケジューリングされた領域のための求解の順序を決定することができる。一実施形態では、求解は、最上位(トップ)から最下位(ボトム)へ(ここで、「最上位」は最高の非線形性すなわち最高ノード次数を示し、「最下位」は最低の非線形性(最高の線形性)すなわち最低ノード次数を示す)、次に最下位から最上位へ進む。より低い次数を持つ各領域はポートの挙動について解き、その上にあるより高い次数を持つ領域に情報をフィードバックする。
【0017】
一実施形態では、集積回路設計をシミュレートするためのコンピュータ実行可能な命令を格納するコンピュータ読み取り可能な媒体についても説明されている。これらのコンピュータ実行可能な命令は、コンピュータによって実行されるとき、上記のステップを行う。
【図面の簡単な説明】
【0018】
【図1A】簡単な3ノード回路のグラフを示す。
【図1B】図1Aのものと等価な4ノード回路のグラフを示す。
【図2】回路グラフを表すことができるSPICE行列方程式を示す。
【図3A】例示的なFastSPICEインプリメンテーションを示す。
【図3B】例示的なFastSPICEインプリメンテーションを示す。
【図4A】ノード電流対バイアスの例示的な形状を示す。
【図4B】ノード電流対バイアスの例示的な形状を示す。
【図4C】ノード電流対バイアスの例示的な形状を示す。
【図4D】ノード電流対バイアスの例示的な形状を示す。
【図5A】そのノードが特定された簡易回路を示す。
【図5B】それぞれのランキングが決定された図5Aの特定されたノードを示す。
【図5C】決定されたノードランキング及びノード間の結合に基づく図5Bの簡易回路のパーティショニングを示す。
【図5D】決定されたノードランキング及びノード間の結合に基づく図5Bの簡易回路のパーティショニングを示す。
【図5E】図5Dのパーティショニングされた回路の例示的なスケジューリングを示す。
【図6】ソフトウェアコーディング形式の、次数ランキングされた階層の別の描写を示す。
【図7】階層的次数ランキングを含む例示的なシミュレーションフローを示す。
【図8】例示的なデジタルASIC設計フローを簡略化して説明するための図を示す。
【発明を実施するための形態】
【0019】
今日の大部分の標準IC設計は様々なコンポーネントを含み、それらの挙動は、線形、一次非線形及び高次非線形であるものとして特徴付けられ得る。ICシミュレータにおける現在のパーティショニング・アルゴリズムは、回路トポロジー及び結合強度に基づいてパーティショニングを行う。それゆえ、結果として生じるパーティションは、通常、ノード並びに線形及び非線形デバイスの両方を含み、そのことがシミュレーション処理及び時間を著しく増加させる。
【0020】
さらに、ますます多くの設計は同じIC上にデジタル回路とアナログ回路の両方を装備している(混合信号技術と呼ばれる)。これらの混合信号回路は、典型的には、複数の高次非線形要素を含む(ここで、非線形要素の次数が高ければ高いほど、その挙動を正確に定義するためにより多くの導関数が必要とされる)。とりわけ、一次導関数について解くには、典型的に、正確な結果を得るために大きなステップ(デルタ値)を用いるが、高次導関数について解くには、典型的に、正確な結果を得るためにより小さなステップを用いる。残念ながら、シミュレータツールは、一次導関数と高次導関数のもともとのステップの違いと折り合いをつけるようにはなっていない場合がある。
【0021】
具体的には、より小さなステップサイズの使用を選ぶシミュレータツールは、シミュレーション時間がかなり増加するが、より大きなステップサイズの使用を選ぶシミュレータツールは、正確さを犠牲にしてシミュレーション不安定性のリスクを冒す。この問題を解決するために、一部のシミュレーションツールには、シミュレーション性能を向上させるためのモデル次数減少アルゴリズムが含まれる。残念ながら、これらのアルゴリズムは著しい不正確さ及び不安定性を導入しかねない。
【0022】
改良型シミュレーション手法の一態様に従って、シミュレーションの正確さ及び性能を向上させるためにノード次数を有利には用いることができる。具体的には、以下に詳細に述べるように、この手法は、ノード非線形性の異なる次数を用いて回路ブロックをパーティショニングすることができる。このパーティショニングに基づいて、階層的求解及び積分を安定的に行うことができる。
【0023】
ネットリストは、IC設計のデバイス及びそれらのデバイスの接続性を、ネットを用いて記述したものであることに留意されたい。ネットリストは、階層的または平坦なものであることができる。階層ネットリストは、回路のより高いレベルの抽象化を可能にさせるために「プリミティブ」(すなわち不可分なインスタンス)及びサブ回路(すなわち複数のプリミティブを含む)を含むことができる。対照的に、平坦なネットリストはプリミティブのみを含む。
【0024】
一実施形態では、次数ランキングされたパーティショニングを単純化するために、階層ネットリストとして提供されるIC設計は、先ず、付随する精度ロスなしで最適化され(図1Bから図1Aに変わるように)、次に概略的に(局所的または全体的に)平坦にされることができる。先ず、各ノードは「ノード次数」を割り当てられ、ネットリスト中のノードの全セットは同じ(または近い)次数を有するグループにパーティショニングされることができる。本明細書において、「ノード次数」なる語は、導関数比の最大値、例えば、特徴付けられているノードに接続する各デバイスから、Vに関するI(V)の導関数に基づく導関数比(DC静的挙動に基づく)またはdV/dtに関するI(V,dV/dt,t)の導関数に基づく導関数比(動的過渡挙動に基づく)の最大値に比例するものとして定義されることができる。
【0025】
DC静的挙動(すなわちt=0)に関して、0からXまでの値の範囲(ここで、Xは、VDDなどの最大電圧Vである)を用いたデバイスモデルのスイープを行い(それで「Vに関する」なる語を冠する)、最大所定の導関数比を決定することができることに留意されたい。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば(∂2I/∂V2)/(∂I/∂V)などに基づく場合がある。
【0026】
対照的に、動的過渡挙動に関して、タイムステップを変えて経時的に0からXまでの電圧変化の範囲(ここで、Xは、VDDなどの最大電圧Vである)を用いたデバイスモデルのスイープを行い(それで「dV/dtに関する」なる語を冠する)、最大所定の導関数比を決定することができる。一実施形態では、所定の導関数比は、二次導関数を一次導関数で除したもの、例えば(∂2I/∂(dV/dt)∂V)/(∂I/∂V)または(∂2I/∂(dV/dt)2)/(∂I/∂V)などに基づく場合がある。
【0027】
パーティショニングは、各ノードのトポロジー及び物理学に基づいてさらに最適化され得、それらは回路内のノード間の物理的または機能的な関係を決定する任意の数の因子を含むことができる。特に興味深い例は、ノードそれ自体と回路内の任意の他のノードとの結合の度合いである。結合を決定するステップは、2つのノード間のコンダクタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、2つのノードが同じ次数を有しかつコンダクタンスが所定の値より大きいときに、2つのノードを同じ領域に配置するステップか、あるいは、それらが同じ次数であっても、コンダクタンスが所定の値よりも小さいような別々のパーティション・ノードに分けるステップを含むことができる。別の実施形態では、結合を決定するステップは、2つのノード間のキャパシタンスを決定するステップを含むことができる。この場合は、パーティショニングするステップは、2つのノードが同じ次数を有しかつキャパシタンスが所定の値より大きいときに、2つのノードを同じ領域に配置するステップか、あるいは、それらが同じ次数であっても、キャパシタンスが所定の値よりも小さいような別々のパーティション・ノードに分けるステップを含むことができる。
【0028】
図4A〜図4Dは、バイアスに対する線形または非線形ノード電流の例示的な形状を示す。本明細書において、「線形ノード」なる語は、一般的に、線形デバイスにしか接していないか何にも接していないノードとして特徴付けられることができるが、「非線形ノード」なる語は、一般的に、非線形電流チャネルを介して少なくとも1つの非線形デバイスに接しているノードとして特徴付けられることができる。例えば、図4Aの形状401は、例えば抵抗に結合された線形ノード(i=gvとして表される一般的な電流。ここで「i」は電流、「g」はコンダクタンス、「v」は電圧/バイアスである)を示す。線(line)の二次導関数は0であるので、それは当然なことながら線形であることに留意されたい。対照的に、図4Bの形状402は、例えばバイポーラ接合トランジスタ(BJT)に結合された非線形ノード(i=fBJT(v)として表される一般的な電流。ここで「f(v)」は電圧/バイアスの関数を指す)を示す。図4Cの形状403は、例えばダイオードに結合された非線形ノード(i=cevとして表される一般的な電流。ここで「c」は定数であり、「e」は指数関数を指す)を示す。図4Dの形状404は、例えばMOSFET(金属酸化膜半導体電界効果トランジスタ)のドレインまたはソースに結合された非線形ノード(i(ドレイン−ソース)=fMOSFET(v)として表される一般的な例としての電流。ここで「f(v)」は電圧/バイアスの関数を指す)を示す。
【0029】
(次数,{結合})(ここで{}は回路内の解析されたノードと任意の他の隣接ノードの間から/への1組の最大電流(のうちの或る電流)を示す)を用いたパーティショニングの目的は、行列中の全てのノードが同じ(または近い)次数を有しかつ予め定義された物理的相互関係を有することを保証することである。次数ランキングされたパーティショニングに基づき、改良された階層構造が構築されることができる。
【0030】
図5Aは、トランジスタ、抵抗及びダイオード(例示的なプリミティブ)並びにそれらの相互接続を含む簡易回路を示す。図5Aのノード500は円を用いて示されている。改良されたパーティショニングの一態様に従って、ノード500の次数が特定(identify)されることができる。この実施形態では、最低次数には線形ノードしか含まれない。別の実施形態では、ノード次数のランキングは、線形及び非線形の両ノードを有する最低次数を含むことができる。
【0031】
図5Bには、最低/0次ノード501(例えばノード501A〜501D)が黒い三角形で示され、一次ノード502(1組の非線形ノード)(例えばノード502A〜502I)が黒い円で示され、二次ノード503(一次ノード502よりも高次の所定の導関数を必要とする別の組の非線形ノード)(例えばノード503A〜503B)が黒い四角形で示されている。
【0032】
図5Bに示す回路のパーティショニングは、静的駆動方式及びその後に動的駆動方式を用いて行われることができ、これはノード次数によって制御される。静的電流駆動方式は、チャンネル接続に基づいてノードをグループ化することができる。一実施形態では、静的電流駆動方式は、先ず、同次ノード次数の駆動のみ(driver-only)のサブ回路と同次ノード次数の被駆動のみのサブ回路を特定することができる。例えば、図5Cを参照すると、領域512は0次ノードを有する駆動のみのサブ回路であるのに対し、領域515は一次ノードを有する被駆動のみのサブ回路である(VDDとVSSの間に接続されたインバータを有するが、簡単にするために図示せず)。静的電流駆動方式は、電流依存性に基づいて他の全てのサブ回路をグループ化することができるが、ノード次数は無視する。このように、領域512及び515に加えて、静的電流駆動方式は、領域521及び522を作り出すことができる。
【0033】
以下にさらに詳細に述べるように、静的電流駆動方式によって作り出される領域(図5Cに示す回路における4つの領域)は、(図5Eに関連して説明される)回路を解析するために用いられるタイムスロットの数を有利に決定することができる。領域512/515と領域521/522を区別するために、領域521及び522は(2以上のノード次数を持つ駆動及び被駆動の両方の特性を含むので)ハイブリッド領域と呼ばれる。
【0034】
動的電流駆動方式は、ノード次数に基づいて、ハイブリッド領域すなわち領域521及び522をさらに分けることができる。例えば、図5Dを参照すると、領域521は領域511及び514に分けられることができ、このとき領域511は一次ノードのみを有し、領域514は0次ノードのみを有する。同様に、領域522は領域513及び516に分けられることができ、このとき領域513は一次ノードのみを有し、領域516は二次ノードのみを有する。それゆえ、動的電流駆動方式を用いた後、図5Bを参照すると、領域511は3つのノード502A、502B及び502Cを含み、領域512は2つのノード501A及び501Bを含み、領域513は3つのノード502D、502E及び502Fを含み、領域514は2つのノード501C及び501Dを含み、領域515は3つのノード502G、502H及び502Iを含み、領域516は2つのノード503A及び503Bを含む。
【0035】
図5Eは、(静的電流駆動方式によって決定されるような)4つのタイムスロット1〜4を用いた領域511〜516を含む次数ランキングされた階層構造の解析/シミュレーションの例示的なスケジュール530(すなわち解析のためのこれらの領域のスケジューリング)を示す。スケジュール530において各領域511〜516の優先度の決定は、動的電流駆動方式を用いて行われることができる。とりわけ、静的電流駆動方式によって画定される各領域(図5Cを参照)は、タイムスロット1〜4のうちの1つにおいて解析されることができる。
【0036】
本発明の一態様に従って、スケジューリング優先度は、領域内のノード次数及び電流ドライバに基づく場合がある。例えば、図5Dでは、領域512は、領域511及び513の両方でデバイスを駆動する。具体的には、領域512内のノードは、トランジスタのためのゲートバイアスしか供給しないので、駆動のみの領域における静的電流ドライバとして特徴付けられることができる(ここで、静的電流ドライバでないノードは、当然に動的電流ドライバである)。さらに、領域512を流れる電流は、他の領域に依存しない。領域512は、その静的電流ドライバと、他の領域からの独立性に基づき、(ノード次数に関係なく)最も高い優先度を有し、従ってタイムスロット1内でスケジューリングされることができる。
【0037】
一般的に、スロット指定に関して、別の領域のデバイスを駆動する高次ノード領域は、別の領域のデバイスを駆動する低次ノード領域より前に求解される。従って、図5Dでは、領域516(これは残りの領域511、513、514、515及び516のうち最高次ノードを有する)タイムスロット2内で解析されるべきである。上記したように、1つのハイブリッド領域内の複数の領域は、同じタイムスロット内で解析される。従って、領域516及び513は、タイムスロット2内で求解されることができる。
【0038】
一実施形態では、ハイブリッド領域におけるスケジューリング優先度は、次のステップを用いて(例示的なハイブリッド領域として領域513及び516を用いて)決定されることができる。これらのステップ(階層的解法を含む)を、ハイブリッド領域内の任意の2つ1組の隣接領域に対して用い、スケジューリング優先度を決定することができることに留意されたい。
【0039】
電流動作点で領域513の線形化モデルを構築し、そこでは領域513と領域516の間の部分にかかる負荷を計算するためにシュアー補行列が用いられる。
【0040】
N>1に対して、行列内の領域513の代わりとしてステップ1の線形化モデルをインポートする領域516のニュートン・ラフソン(NR)反復法を解く。
【0041】
M(1<M<N)に対して、求めたばかりの領域516の解を境界条件として用いて領域513のNR反復法を解く。
【0042】
領域513に非線形要素が含まれるならば(この場合は含まれる)、全てのノードで収束が達成されるまで全過程を反復する。スケジューリング優先度は、収束後に領域に対して達成される正確さに基づいて決定される。すなわち、より高い正確さを与えるスケジューリング優先度が選ばれる。
【0043】
個々の計算として、線形化モデルを構築し、シュアー補行列を用い、ニュートン・ラフソン反復法を解き、収束を達成することは、当業者に知られているので、本明細書では詳細に説明していないことに留意されたい。
【0044】
この時点で、領域511は、残りの領域511、514及び515の最高次ノードを有するので、タイムスロット3内で求解されるべきである。上記したように、1つのハイブリッド領域内の領域は同じタイムスロットで解析される。従って、領域511及び514は、タイムスロット3内で求解されることができる。領域511と領域514の間の解析の次数は、領域513及び516に関して述べたのと同じ手法を用いて決定されることができることに留意されたい。この場合は、領域511は領域514より前に求解されるべきであることが決定される。ハイブリッド領域に関して、高次のノードを有する領域が低次のノードを有する領域より前に解析されると考えられるが、この一般化は間違っていることがある。従って、好適実施形態では、求解の次数は上記した階層的解法を用いて決定される。
【0045】
この時点で、領域515のみが残っているので、領域515はタイムスロット4内で解析のために求解されることができる。静的電流駆動方式によって示されるように、領域515は被駆動のみの領域であるので、領域515は、回路内で領域515を駆動する任意の領域の後に実行されるべきである。
【0046】
この実施形態では、最上位から最下位へ、そして最下位から最上位へ解析が行われる(図5Dは最上位から最下位への解析を示している)。「最上位から最下位へ」の表記は、それらを駆動している他の低次ノード領域を除いて最初に解析されている高次ノード領域を指すことに留意されたい。対照的に、「最下位から最上位へ」の表記は、それらが他の高次ノード領域を駆動している点を除いて最初に解析されている低次ノード領域を指す。
【0047】
図6は、ソフトウェアコーディング形式の、次数ランキングされた階層600の別の描写を示す。具体的には、次数ランキングされた階層600は、4つの次数(各次数は異なるフィルパターン(fill pattern)を有する)を含む。ノード610、611、612及び613は次数3であり、ノード620、621、622及び623は次数2であり、ノード630、631、632及び633は次数1であり、ノード640、641及び642は次数0である。この特定の回路構成では、ノード610はノード620を駆動し、ノード620は同様にノード630を駆動し、ノード630は同様にノード640を駆動する。
【0048】
上記したように、ノードのトポロジー及び物理学は「次数」及び「結合」に関する情報を提供し、ここで次数は特定のノードの固有特性を決定し、結合は、1若しくは複数の隣接ノードが、これらのノード間の閾値より上のコンダクタンスまたはキャパシタンスに基づき解析されたノードとして同じパーティションに含まれることができるか否かを決定する。一般的に、少なくとも所定の結合閾値を有する同じ次数を持つノードを同じパーティションに配置することができる。次数ランキングされた階層600は、垂直コネクタ650を用いて、データが駆動ノードと被駆動ノード間で共有されることができることを示すことに留意されたい。一実施形態では、各パーティションにおいてデータ共有すなわち同型マッチングが生じる場合もある。
【0049】
図7は、上記した階層的次数ランキングを含む例示的なシミュレーションフロー700を示す。ステップ710では、ネットリストが正しい手順で解析される(すなわちパーシングされる)。ステップ720では、利用可能な命令及び選択をパーシングすることができる。ステップ740では、パーシングされたネットリスト、命令及び選択の結果を用いて、フロントエンド・データベース、モデル及び回路の接続性をセットアップすることができる。回路のサイズのために、ステップ740は従来のデータベース階層(すなわち最適化された階層ネットリスト)を生成する回路最適化も含むことが好ましい。一実施形態では、ステップ740は、平坦なフロントエンド・データベース・セットアップ(ここで、「フロントエンド」は、エンジンセットアップより前の全てのプロセス、例えばネットリストのパーシング、モデルセットアップ、回路接続性セットアップ、最適化セットアップを指す)を用いて、または階層的フロントエンド・データベース・セットアップを用いて、または部分的に平坦な階層的フロントエンド・データベース・セットアップを用いて、この最適化された階層ネットリストを平坦化するステップを含むこともできる。最適化された階層ネットリストを用いて、ステップ750は、次に、次数ランキングされた階層エンジンのセットアップを提供する。次数ランキングされた階層エンジンを用いて、ステップ760は、DC解析、AC解析及び過渡解析を行うができる。ステップ770は、この解析の結果をシミュレーションデータとしてエクスポートすることができる。
【0050】
ステップ750は、次の例示的なステップを含むことができる。ステップ751は、回路におけるノードのノード次数ランキングを決定することができる。一実施形態では、この決定には、最大所定の導関数比を見つけるステップが含まれる場合があり、それについては上記されている。ステップ752は、電流ノード次数並びにノードのトポロジー及び物理学(静的電流駆動方式及びその後に動的電流駆動方式の使用を含む)に基づいて、回路をパーティショニングすることができる。ステップ753は、パーティショニングに基づいて階層データ構造を構築することができる。この階層データ構造は最適化されたデータベース階層(これはノード次数を区別しない)とかなり異なることに留意されたい。シミュレーション手法700の一実施形態では、最適化されたデータベース階層(ステップ740で生成される)は、ノード次数ランキングされた階層データ構造によって格納され得ない回路に関連する情報を格納するように保持されることができる。それゆえ、ステップ760は、ステップ740及び750の両方によって生成される情報を利用して実行されることができる。
【0051】
ステップ754は、システムの最適化のために特定の中間次数を動的に結合することができる。一実施形態では、ステップ754は、各ノード次数に関連するノードの数を決定し、各パーティション内のノードの数がより均一に分配されるように特定の次数を結合するステップを含むことができる。例えば、10個の次数が、かなり違う数のノードを持つパーティションを生じさせるならば、ステップ754は、特定の隣接する次数同士(例えば2番目と3番目の次数または9番目と10番目の次数)を結合してパーティション内のノードをより良好に分配し、それによってシステム効率を上げることができる(例えばステップ730及び760において)。
【0052】
次数の分割及び結合はステップ754で実行されることができることに留意されたい。例えば、3つの次数が、かなり違う数のノードを持つパーティションを生じさせるならば、ステップ754は、パーティション内のノードをより良好に分配するように特定の次数を分割する(より多くの次数を効果的に作り出す)ことができる。それゆえ、ステップ752の「パーティショニング」(すなわち、1つのピースからの全てのノードを仮定して、そのピースを特定の数の複数のピースに分ける)は、「結合」(すなわち、各ノードがピースであると仮定して、特定の複数のピースを結合してより少ない数の複数のピースを形成する)として特徴付けられることもできる。とりわけ、最終結果は同じ、すなわち最適化された次数ランキングされた階層型データベースである。
【0053】
換言すれば、ステップ751における次数ランキングの最初の定義を用いて、次数ランキングが回路の最適化されたパーティショニングをもたらすかどうかを決定するためにステップ752及び753が実行される。ステップ754は、回路をより良好にパーティショニングし、シミュレーション効率を最大にするために、現在の次数ランキングが再定義されるようにする。ステップ752〜754は、所定の最適化が実現されるまで繰り返されることができる。一実施形態では、所定の費用関数を用いて、性能効率の値を求める各領域の費用をバランスすることができる。ステップ755は、最適化された階層データ構造及び階層エンジンを用いて求解及び積分を行うことができる。とりわけ、この求解は、異なるパーティションに対して別々の行列を用いて行われることができる。それゆえ、各行列は特定のノード次数に向けられることができ、それが計算精度及び効率を上げる。
【0054】
ステップ730は、システム効率を上げるためにステップ760のいくつかのジョブを並行して行うことができることに留意されたい。実際に、上記したノードランキングされた階層的パーティションは、当然に並列計算に適している。例えば、同じノード次数を有する領域は、並行して解析(DC、AC、過渡)されることができる。さらに、階層的パーティションは、典型的には、より高次のランキングされた次数を持つノードに対して密行列を生じさせる。有利には、並行行列ソルバーは、疎行列よりも密行列で効率的に働く。
【0055】
さらに、ステップ755中に行われる積分は、次数ランキングされた階層データ構造から恩恵を受けることもできることに留意されたい。具体的には、積分の効率は、積分法が信号の次数に如何によく合うかと関連付けることができる。実際の回路では、信号の挙動は、シミュレーションによってのみならず、信号パスにおける負荷の次数によっても決定される。純粋な線形負荷は元の信号にそれ以上の非線形性を導入しないが、高次負荷を持つパスは元の信号に複雑さを加える。従って、低次ネットワークノードに低次積分法を適用することができかつ高次ネットワークノードに高次積分法を適用することができるときには、積分は、より著しく効果的である場合がある。
【0056】
図8は、例示的なデジタルASIC設計フローを簡略化して説明するための図である。上側の段において、プロセスは製品企画(ステップ800)より開始し、EDAソフトウェア設計プロセスを実行する(ステップ810)。設計が終了すると、テープアウトを行う(イベント840)。テープアウト後、製造プロセス(ステップ850)、パッケージング及び組立プロセス(ステップ860)を実施し、最終的に、完成品チップが得られる(結果870)。
【0057】
EDAソフトウェア設計プロセス(ステップ810)は、実際には複数のステップ812〜830から構成されており、簡略化のために直線的に示している。実際のASIC設計プロセスでは、特定の設計は、所定の試験に合格するまでステップを逆戻りしなければならないこともある。同様に、任意の実際の設計プロセスでは、これらのステップは、異なる順序及び組み合わせで行われることがある。従って、この説明は、特定のASICのための具体的な或いは推奨する設計フローとしてよりも、むしろ背景説明(context)及び一般的な説明のために提供される。EDAソフトウェア設計プロセス(ステップ810)を構成するステップを簡単に説明する。
【0058】
システム設計(ステップ812):設計者は、実装したい機能性を記述し、what−ifプランニングを実施して機能性改良や費用確認などを行うことができる。ハードウェア−ソフトウェア・アーキテクチャ・パーティショニングは、このステップで行うことができる。このステップで使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Model Architect、Saber、System Studio、及びDesignWare(登録商標)などの製品が含まれる。
【0059】
論理設計及び機能性の検証(ステップ814):このステップでは、システム内のモジュールのためのVHDLまたはVerilogコードを書き込み、その設計を機能性の精度について検査する。より具体的には、設計を検査することによって、正しい出力を生成することを保証する。このステップで使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、VCS、VERA、DesignWare(登録商標)、Magellan、Formality、ESP、及びLEDAなどの製品が含まれる。
【0060】
合成及び試験のための設計(ステップ816):このステップでは、VHDL/Verilogをネットリストに変換する。ネットリストは、目的の技術のために最適化することができる。加えて、完成品チップの検査を可能とする試験の設計及び実装を行う。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Design Compiler(登録商標)、Power Compiler、Tetramax、及びDesignWare(登録商標)などの製品が含まれる。
【0061】
ネットリスト検証(ステップ818):このステップでは、ネットリストを、タイミング制約との適合性及びVHDL/Verilogソースコードとの対応性について検査する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Formality、PrimeTime、及びVCSなどの製品が含まれる。
【0062】
設計プランニング(ステップ820):このステップでは、チップの全体フロアプランを作成し、タイミング及び最上位ルーティングについて解析する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Astro及びIC Compilerなどの製品が含まれる。
【0063】
物理的な実装(ステップ822):このステップでは、配置(回路素子の位置決め)及びルーティング(回路素子の接続)を行う。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Astro及びIC Compilerなどの製品が含まれる。
【0064】
解析及び抽出(ステップ824):このステップでは、回路機能をトランジスタレベルで検証し、これによりwhat−if解析による改良を可能にする。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、AstroRail、PrimeRail、Primetime、及びStar RC/XTなどの製品が含まれる。
【0065】
物理的な検証(ステップ826):このステップでは、様々なチェック機能を実行し、製造、電気的な結果、リソグラフィックの結果、及び回路構成について正確性を保証する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Herculesなどの製品が含まれる。
【0066】
分解能向上(ステップ828):このステップでは、レイアウトの幾何学的操作を行い、設計の製造可能性を改善する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Proteus、ProteusAF、及びPSMGenなどの製品が含まれる。
【0067】
マスクデータ準備(ステップ830):このステップでは、完成品チップを作成するのに使用するリソグラフィーのために、マスク作成用の「テープアウト」データを提供する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、CATS(登録商標)シリーズの製品が含まれる。
【0068】
本発明は、データ保存システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、且つそれらに対してデータ及び命令を送信するように接続された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行する1若しくは複数のコンピュータプログラムに有利に実装することができる。各コンピュータプログラムは、高次手続き型またはオブジェクト指向型プログラミング言語で、或いは所望に応じてアセンブリ言語または機械語で実装することができる。いずれにせよ、その言語は、コンパイラ型言語又はインタープリタ型言語である。適切なプロセッサには、例えば、汎用マイクロプロセッサ及び特定用途向けマイクロプロセッサの両者のほか、他の種類のマイクロコントローラが含まれる。一般的に、プロセッサは、読み出し専用メモリ及び/またはランダムアクセスメモリから命令及びデータを受信する。一般的に、コンピュータは、データファイルの保存用として1若しくは複数の大容量記憶装置を有しており、その大容量記憶装置には、磁気ディスク(例えば、内蔵されたハードディスク及びリムーバブルディスク)、光磁気ディスク、及び光ディスクが含まれる。コンピュータプログラム命令及びデータを具体的に実施するのに適合する記憶装置には、全ての形態の不揮発性メモリ(例えば、EPROM、EEPROMなどの半導体メモリ装置、及びフラッシュメモリ装置)、磁気ディスク(例えば、内蔵されたハードディスク及びリムーバブルディスク)、光磁気ディスク、及びCD−ROMディスクが含まれる。前述したいずれのものも、特定用途向け集積回路(ASIC)により補足することができる又はそれに組み込むことができる。
【0069】
上記した次数ランキングされた階層エンジンは、任意のシミュレーションツール、すなわちプレ・レイアウト及びポスト・レイアウト・シミュレーションの両方で用いられることができることに留意されたい。従って、図8に関して、次数ランキングされた階層エンジンは、ステップ818〜826のいずれにおいて用いられることもできる。シノプシス社が提供する現行の例示的なシミュレーションツールには、HSIM(登録商標)、Nanosim(登録商標)、StarSIMTM、XATM及びHSPICE(登録商標)が含まれる。有利には、次数ランキングされた階層エンジンは、ポスト・レイアウト・シミュレーションの正確さにプレ・レイアウト・シミュレーション性能を与える。例えば、最低次ノード(例えば線形ノード)は求解に1回の反復しか必要とせず、高次ノードの各セットは、適切な数の反復を用いて正確さを保証するので、精度ロスが付随するLNRは不要である。さらに、プレ・レイアウト・シミュレーションは、典型的に、比較的少ないノードを含むので、求解する行列はそれ相応に小さいことに留意されたい。対照的に、ポスト・レイアウト・シミュレーションは、典型的に、多くのノードを含むので、求解する行列はそれ相応に大きい。次数ランキングされた階層エンジンは、次数ランキングされたノードセットにおいてこれらのノードを壊し、それによって解くべき行列が比較的小さいことを保証する。従って、上記したノード次数シミュレーション手法は、システムリソースの効率的利用を保証する。LNRの別の問題は、I(V,dV/dt,t)の一次(線形)の近似値が、一次よりも高次の次数において正確さの制御を不能にしていることである。
【0070】
さらに、上記で簡単に述べたように、求解された行列内の一様な次数を持つノードは、DC解析及び過渡解析中のより大きな安定性を保証する。具体的には、DC動作点を計算する際、最初の推測は収束から外れており、ほとんどの状況下で、最初の推測は収束半径内にない。対照的に、過渡計算は、最後の収束点に基づいて次の収束点を捜し、ほとんどの状況では、最後の収束点は収束半径内にある。「ブローアップ(blow-up)」は、DCと過渡収束推測の間のどこかにある推測(ステップ)を用いることによって、同じ行列内で異なる次数を持つ可動ノードの競争によって通常は生じる。有利には、DC解析または過渡解析のいずれかにおいて、同じ次数(または非常に近い次数)のノードのみを有する行列を用いることによって、迅速かつ安定的に収束を達成することができる。
【0071】
上記した次数ランキングされた階層は、同型マッチング及びマルチレート・イベントドリブン・スケジューリングを実装する利点を有することにも留意されたい。「同型マッチング」なる語は、回路トポロジー共有及び物理状態共有の両方を含むデータ共有を提供する。同じ次数を持つ領域は、回路トポロジー及び物理状態を共有する可能性がより高い。「マルチレート・イベントドリブン・スケジューリング」なる語は、領域間の評価レート(またはタイムステップ)は異なる場合があり、イベント(事象)によって駆動されることを意味する。換言すれば、ドライバと負荷の関係を有する「静的電流駆動」フロー下では、ドライバが変化しなければ、それらの負荷は一定期間にわたって潜在的であり、従って負荷の状態がアップデートされる必要がない。その上、「マルチレート」なる語は、領域が、評価される固定されたタイムステップをとる必要がなく、2つの連続する評価間のタイムステップ長さが、領域内の信号及びitsドライバ信号の活動によって決定されることも意味する。1つの領域において同じ現在の次数を有する一様なモデルは、より正確にその次のタイムステップを予測する。
【0072】
本発明の事例的な実施形態について添付の図面を参照して説明してきたが、本発明はこれらの実施形態のみに制限されるものではないことは理解されよう。これらは、包括的なものでも、本発明を開示されたまさにその形に制限使用とするものでもない。そのようなものとして、多くの変更形態及び変形形態がすぐに分かるであろう。従って、本発明の範囲は、以下の請求項及びそれらに相当するものによって画定されるものとする。
【特許請求の範囲】
【請求項1】
集積回路設計をシミュレートする方法であって、
最適化された階層ネットリストにアクセスするステップと、
前記最適化された階層ネットリストにおけるノードのノード次数ランキングを決定するステップと、
前記最適化された階層ネットリストの回路を、静的電流駆動方式により、その後に動的電流駆動方式により、前記ノード次数ランキングに基づいてパーティショニングするステップと、
前記パーティショニングに基づいて階層データ構造を構築するステップと、
前記階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成するステップと、
前記次数ランキングされた階層エンジンについての解析を行うステップと、
前記解析に基づいて前記IC設計のシミュレーションデータをエクスポートするステップとを含むことを特徴とする方法。
【請求項2】
最適化のために中間ノード次数を動的に結合し、少なくとも1つの結合された中間ノード次数に基づいて前記回路を再パーティショニングするステップをさらに含むことを特徴とする請求項1の方法。
【請求項3】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスのDC静的挙動に対し、Vに関するI(V)の導関数を用いることを特徴とする請求項1の方法。
【請求項4】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスの動的過渡挙動に対し、dV/dtに関するI(V,dV/dt,t)の導関数を用いることを特徴とする請求項1の方法。
【請求項5】
前記パーティショニングするステップが、1対のノード間の結合を、静的電流駆動方式及び動的電流駆動方式の両方で決定するステップを含むことを特徴とする請求項1の方法。
【請求項6】
前記結合を決定するステップが、2つのノード間のコンダクタンスを決定するステップを含み、
前記パーティショニングするステップが、前記2つのノードが同じ次数を有しかつ前記コンダクタンスが所定の値より大きいときに、前記2つのノードを同じ領域に配置するステップを含むことを特徴とする請求項1の方法。
【請求項7】
前記結合を決定するステップが、2つのノード間のキャパシタンスを決定するステップを含み、
前記パーティショニングするステップが、前記2つのノードが同じ次数を有しかつ前記キャパシタンスが所定の値より大きいときに、前記2つのノードを同じ領域に配置するステップを含むことを特徴とする請求項1の方法。
【請求項8】
前記解析を行うステップが、DC解析、過渡解析及びAC解析のうちの少なくとも1つを行うステップを含むことを特徴とする請求項1の方法。
【請求項9】
前記解析を行うステップが、DC解析、過渡解析及びAC解析を行うステップを含むことを特徴とする請求項8の方法。
【請求項10】
DC解析、過渡解析及びAC解析のうちの少なくとも2つを並行して行うステップをさらに含むことを特徴とする請求項9の方法。
【請求項11】
集積回路設計をシミュレートするためのコンピュータ実行可能な命令を格納するコンピュータ読み取り可能な媒体であって、コンピュータによって実行されるときに、
最適化された階層ネットリストにアクセスするステップと、
前記最適化された階層ネットリストにおけるノードのノード次数ランキングを決定するステップと、
前記最適化された階層ネットリストの回路を、前記ノード次数ランキングに基づいて、静的電流駆動方式により、その後に動的電流駆動方式により、パーティショニングするステップと、
前記パーティショニングに基づいて階層データ構造を構築するステップと、
前記階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成するステップと、
前記次数ランキングされた階層エンジンについての解析を行うステップと、
前記解析に基づいて前記IC設計のシミュレーションデータをエクスポートするステップとを実行することを特徴とするコンピュータ読み取り可能な媒体。
【請求項12】
最適化のために中間ノード次数を動的に結合し、少なくとも1つの結合された中間ノード次数に基づいて前記回路を再パーティショニングするステップをさらに含むことを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項13】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスのDC静的挙動に対し、Vに関するI(V)の導関数を用いることを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項14】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスの動的過渡挙動に対し、dV/dtに関するI(V,dV/dt,t)の導関数を用いることを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項15】
前記パーティショニングするステップが、1対のノード間の結合を、静的電流駆動方式及び動的電流駆動方式の両方で決定するステップを含むことを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項16】
前記結合を決定するステップが、2つのノード間のコンダクタンスを決定するステップを含み、
前記パーティショニングするステップが、前記2つのノードが同じ次数を有しかつ前記コンダクタンスが所定の値より大きいときに、前記2つのノードを同じ領域に配置するステップを含むことを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項17】
前記結合を決定するステップが、2つのノード間のキャパシタンスを決定するステップを含み、
前記パーティショニングするステップが、前記2つのノードが同じ次数を有しかつ前記キャパシタンスが所定の値より大きいときに、前記2つのノードを同じ領域に配置するステップを含むことを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項1】
集積回路設計をシミュレートする方法であって、
最適化された階層ネットリストにアクセスするステップと、
前記最適化された階層ネットリストにおけるノードのノード次数ランキングを決定するステップと、
前記最適化された階層ネットリストの回路を、静的電流駆動方式により、その後に動的電流駆動方式により、前記ノード次数ランキングに基づいてパーティショニングするステップと、
前記パーティショニングに基づいて階層データ構造を構築するステップと、
前記階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成するステップと、
前記次数ランキングされた階層エンジンについての解析を行うステップと、
前記解析に基づいて前記IC設計のシミュレーションデータをエクスポートするステップとを含むことを特徴とする方法。
【請求項2】
最適化のために中間ノード次数を動的に結合し、少なくとも1つの結合された中間ノード次数に基づいて前記回路を再パーティショニングするステップをさらに含むことを特徴とする請求項1の方法。
【請求項3】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスのDC静的挙動に対し、Vに関するI(V)の導関数を用いることを特徴とする請求項1の方法。
【請求項4】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスの動的過渡挙動に対し、dV/dtに関するI(V,dV/dt,t)の導関数を用いることを特徴とする請求項1の方法。
【請求項5】
前記パーティショニングするステップが、1対のノード間の結合を、静的電流駆動方式及び動的電流駆動方式の両方で決定するステップを含むことを特徴とする請求項1の方法。
【請求項6】
前記結合を決定するステップが、2つのノード間のコンダクタンスを決定するステップを含み、
前記パーティショニングするステップが、前記2つのノードが同じ次数を有しかつ前記コンダクタンスが所定の値より大きいときに、前記2つのノードを同じ領域に配置するステップを含むことを特徴とする請求項1の方法。
【請求項7】
前記結合を決定するステップが、2つのノード間のキャパシタンスを決定するステップを含み、
前記パーティショニングするステップが、前記2つのノードが同じ次数を有しかつ前記キャパシタンスが所定の値より大きいときに、前記2つのノードを同じ領域に配置するステップを含むことを特徴とする請求項1の方法。
【請求項8】
前記解析を行うステップが、DC解析、過渡解析及びAC解析のうちの少なくとも1つを行うステップを含むことを特徴とする請求項1の方法。
【請求項9】
前記解析を行うステップが、DC解析、過渡解析及びAC解析を行うステップを含むことを特徴とする請求項8の方法。
【請求項10】
DC解析、過渡解析及びAC解析のうちの少なくとも2つを並行して行うステップをさらに含むことを特徴とする請求項9の方法。
【請求項11】
集積回路設計をシミュレートするためのコンピュータ実行可能な命令を格納するコンピュータ読み取り可能な媒体であって、コンピュータによって実行されるときに、
最適化された階層ネットリストにアクセスするステップと、
前記最適化された階層ネットリストにおけるノードのノード次数ランキングを決定するステップと、
前記最適化された階層ネットリストの回路を、前記ノード次数ランキングに基づいて、静的電流駆動方式により、その後に動的電流駆動方式により、パーティショニングするステップと、
前記パーティショニングに基づいて階層データ構造を構築するステップと、
前記階層データ構造を用いて求解及び積分を行い、次数ランキングされた階層エンジンを生成するステップと、
前記次数ランキングされた階層エンジンについての解析を行うステップと、
前記解析に基づいて前記IC設計のシミュレーションデータをエクスポートするステップとを実行することを特徴とするコンピュータ読み取り可能な媒体。
【請求項12】
最適化のために中間ノード次数を動的に結合し、少なくとも1つの結合された中間ノード次数に基づいて前記回路を再パーティショニングするステップをさらに含むことを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項13】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスのDC静的挙動に対し、Vに関するI(V)の導関数を用いることを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項14】
前記ノード次数ランキングが、特徴付けられているノードに接続するデバイスの動的過渡挙動に対し、dV/dtに関するI(V,dV/dt,t)の導関数を用いることを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項15】
前記パーティショニングするステップが、1対のノード間の結合を、静的電流駆動方式及び動的電流駆動方式の両方で決定するステップを含むことを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項16】
前記結合を決定するステップが、2つのノード間のコンダクタンスを決定するステップを含み、
前記パーティショニングするステップが、前記2つのノードが同じ次数を有しかつ前記コンダクタンスが所定の値より大きいときに、前記2つのノードを同じ領域に配置するステップを含むことを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【請求項17】
前記結合を決定するステップが、2つのノード間のキャパシタンスを決定するステップを含み、
前記パーティショニングするステップが、前記2つのノードが同じ次数を有しかつ前記キャパシタンスが所定の値より大きいときに、前記2つのノードを同じ領域に配置するステップを含むことを特徴とする請求項11のコンピュータ読み取り可能な媒体。
【図1A】
【図1B】
【図2】
【図3A】
【図3B】
【図4A】
【図4B】
【図4C】
【図4D】
【図5A】
【図5B】
【図5C】
【図5D】
【図5E】
【図6】
【図7】
【図8】
【図1B】
【図2】
【図3A】
【図3B】
【図4A】
【図4B】
【図4C】
【図4D】
【図5A】
【図5B】
【図5C】
【図5D】
【図5E】
【図6】
【図7】
【図8】
【公表番号】特表2011−528839(P2011−528839A)
【公表日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願番号】特願2011−525286(P2011−525286)
【出願日】平成21年9月1日(2009.9.1)
【国際出願番号】PCT/US2009/055630
【国際公開番号】WO2011/014203
【国際公開日】平成23年2月3日(2011.2.3)
【出願人】(509141958)シノプシイス インコーポレイテッド (9)
【Fターム(参考)】
【公表日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願日】平成21年9月1日(2009.9.1)
【国際出願番号】PCT/US2009/055630
【国際公開番号】WO2011/014203
【国際公開日】平成23年2月3日(2011.2.3)
【出願人】(509141958)シノプシイス インコーポレイテッド (9)
【Fターム(参考)】
[ Back to top ]