(57)【要約】【課題】Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法（ｐｎ接合をダイオードとみなし、仮想コンダクタンスを有する仮想抵抗Ｇｍｉｎを各ダイオードに並列に挿入して求解処理を行い、解が収束すれば、緩和値で除算または減算等の演算を行うことにより仮想コンダクタンスの値を逓減させて、再度、求解処理を行う解法）を行うに際して、回路シミュレーションのオペレーターに緩和値の再設定を強いることのない回路シミュレーション方法、回路シミュレーション装置および回路シミュレーションプログラムを実現する。【解決手段】Ｎｅｗｔｏｎ法等の求解処理（Ｓ３０３〜Ｓ３０５）において解が収束せず、所定の打ち切り条件（Ｓ３０５：例えばＮｅｗｔｏｎ法の反復回数が上限を超えたか否か）が満たされたときに、緩和値１０Ｇｒａｔｅの緩和割合Ｇｒａｔｅ１（ｋ）を変更（Ｓ３０１）して求解処理を再度行う。【選択図】        図３
2004252711.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）回路情報によって特定される回路を対象とした回路網方程式の作成に用いられる仮想コンダクタンス、前記仮想コンダクタンスの変更に用いられる緩和値、および前記回路網方程式の解をコンピュータに入力して、それぞれ所定の初期値に設定するステップと、
（ｂ）前記回路情報に基づいて、前記回路のうち所定条件を満たす箇所に前記仮想コンダクタンスを有する仮想抵抗を導入しつつ、前記回路網方程式を作成するステップと、
（ｃ）前記ステップ（ｂ）において作成された前記回路網方程式について、前記解が収束するまで反復解法を用いて前記コンピュータに演算処理を行わせることにより求解処理を行うステップと、
（ｄ）前記ステップ（ｃ）において前記解が収束するたびに、前記緩和値を用いて前記コンピュータに演算させることにより前記仮想コンダクタンスの値を逓減させて変更し、かつ、収束した前記解を前記反復解法の新たな初期値に採用して前記ステップ（ｂ），（ｃ）を行うステップと、
（ｅ）前記ステップ（ｄ）において前記仮想コンダクタンスの値が第１の所定値以下となったときに、収束した前記解を真値と判断するステップとを含み、
前記ステップ（ｃ）において、前記解が収束せず、かつ、所定の打ち切り条件が満たされたときは、前記ステップ（ａ）において設定した前記緩和値を変更して前記ステップ（ｂ）以降を行う回路シミュレーション方法。
【請求項２】
請求項１に記載の回路シミュレーション方法であって、
前記ステップ（ｄ）において、前記仮想コンダクタンスの値が、前記第１の所定値よりも大きい第２の所定値以下となったときに、前記緩和値を所定の固定値とする回路シミュレーション方法。
【請求項３】
請求項１に記載の回路シミュレーション方法であって、
前記ステップ（ｄ）において、前記緩和値を用いた演算の都度、乱数に基づいて発生させた値により前記緩和値をランダムに変更する回路シミュレーション方法。
【請求項４】
請求項１に記載の回路シミュレーション方法であって、
前記ステップ（ｃ）における前記反復解法は、Ｎｅｗｔｏｎ法、Ｄａｍｐｅｄ−Ｎｅｗｔｏｎ法、ホモトピー法のいずれかである回路シミュレーション方法。
【請求項５】
（ａ）回路情報によって特定される回路を対象とした回路網方程式の作成に用いられる仮想コンダクタンス、前記仮想コンダクタンスの変更に用いられる緩和値、および前記回路網方程式の解をコンピュータに入力して、それぞれ所定の初期値に設定するステップと、
（ｂ）前記回路情報に基づいて、前記回路のうち所定条件を満たす箇所に前記仮想コンダクタンスを有する仮想抵抗を導入しつつ、前記回路網方程式を作成するステップと、
（ｃ）前記ステップ（ｂ）において作成された前記回路網方程式について、前記解が収束するまで反復解法を用いて前記コンピュータに演算処理を行わせることにより求解処理を行うステップと、
（ｄ）前記ステップ（ｃ）において前記解が収束するたびに、前記緩和値を用いて前記コンピュータに演算させることにより前記仮想コンダクタンスの値を逓減させて変更し、かつ、収束した前記解を前記反復解法の新たな初期値に採用して前記ステップ（ｂ），（ｃ）を行うステップと、
（ｅ）前記ステップ（ｄ）において前記仮想コンダクタンスの値が第１の所定値以下となったときに、収束した前記解を真値と判断するステップとを含み、
前記ステップ（ｄ）において、前記緩和値を用いた演算の都度、乱数に基づいて発生させた値により前記緩和値をランダムに変更する回路シミュレーション方法。
【請求項６】
請求項１ないし請求項５のいずれかに記載の回路シミュレーション方法を用いた回路シミュレーション装置であって、
前記コンピュータを備え、
前記コンピュータは、
前記回路情報を記憶するための記憶部と、
請求項１ないし請求項５のいずれかに記載の回路シミュレーション方法のステップ（ａ）乃至（ｅ）を実行する回路網方程式求解部と、
前記回路網方程式求解部におけるシミュレーション結果を出力するための計算結果出力部とを含む回路シミュレーション装置。
【請求項７】
請求項１ないし請求項５のいずれかに記載の回路シミュレーション方法のステップ（ａ）乃至（ｅ）をコンピュータに実行させる回路シミュレーションプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、半導体集積回路の設計工程において用いられる回路シミュレーション方法、回路シミュレーション装置および回路シミュレーションプログラムに関する。
【０００２】
【従来の技術】
半導体集積回路の製造工程は、その回路を設計する設計工程と、設計工程で得られた情報に基づいて回路を半導体装置として実現する半導体プロセス工程とを含んでいる。そして、設計工程においては、半導体集積回路の機能や動作を予測するために、コンピュータを用いた回路シミュレーションが行われる。
【０００３】
回路シミュレーションにおいては、回路網方程式の作成とデバイスモデリングとが行われる。回路網方程式の作成とは、回路内に含まれる素子およびその接続関係の情報に基づいて、回路内各部における電流や電圧の値を解とする方程式を定立することをいう。そして、デバイスモデリングとは、例えばダイオードやトランジスタのような電気特性が非線形であるデバイスを、シミュレーションしやすいモデル（例えば線形モデル）に置き換えることをいう。
【０００４】
なお、この出願の発明に関連する先行技術文献情報としては次のものがある。
【０００５】
【特許文献１】
特開平９−１７９８９５号公報
【特許文献２】
特開平７−２９５９５９号公報
【特許文献３】
特開平１０−１９８６５４号公報
【０００６】
【発明が解決しようとする課題】
例えば上記特許文献１においては、回路網方程式の求解に際し、解の収束状況に応じて、反復解法の一種たるＮｅｗｔｏｎ法やＤａｍｐｅｄ−Ｎｅｗｔｏｎ法等の各種のソルバ（回路網方程式の解を求めるための解法を指す。以下同様）を切り替えつつ回路シミュレーションを行う技術が記載されている。
【０００７】
本願では上記各種ソルバのうち、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法に着目する。上記特許文献１に記載されているように、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法においては、ＭＯＳＦＥＴのソース−基板間等の各部に存在するｐｎ接合をダイオードとみなし、仮想コンダクタンスを有する仮想抵抗をそのダイオードに並列に挿入する。これにより、ｐｎ接合を含む素子の電気特性の非線形性が緩和され、解の収束性が高められる。
【０００８】
また、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法においては、仮想コンダクタンスの値を所定の初期値に設定して、Ｎｅｗｔｏｎ法等の反復解法（ｉｔｅｒａｔｉｏｎ  ｍｅｔｈｏｄ）により求解処理を開始する。そして、解が収束すれば仮想コンダクタンスの値を逓減させて、再度、求解処理を行う。そして、このような処理を繰り返す。
【０００９】
具体的には、一回目の回路シミュレーション時には、仮想コンダクタンスの値をある値に設定し、求解処理により解が収束すれば、２回目の回路シミュレーション時には、仮想コンダクタンスの値を前回よりも小さな値に変更し、再び求解処理を行う。以降、同様にして仮想コンダクタンスの値を減少させ、求解処理を行う。このようにして仮想コンダクタンスを徐々に小さな値へと変化させて、本来の開放状態（仮想抵抗を含まない元の回路構成）へと漸近させてゆく。
【００１０】
さて、従来のＧｍｉｎ−Ｓｔｅｐｐｉｎｇ法においては、仮想コンダクタンスの値を上記のように減少させていたため、以下のような問題があった。
【００１１】
すなわち、仮想コンダクタンスの逓減の具体的手法は、回路シミュレーションのオペレーターによって経験的に決められるものであって、必ずしも適切な逓減手法が採用されるとは限らない。適切な逓減手法が採用されていなければ、徒に計算時間だけが増大し、解が収束しない場合が多い。よって、そのような場合、逓減手法を設定し直して、再度、回路シミュレーションを行う必要があった。
【００１２】
つまり、従来のＧｍｉｎ−Ｓｔｅｐｐｉｎｇ法は、回路シミュレーションのオペレーターに逓減手法の見直しという煩瑣な作業を強いていた。
【００１３】
この発明は上記の事情に鑑みてなされたもので、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法を行うに際して、回路シミュレーションのオペレーターに強いられていた逓減手法の見直しの負担を軽減する回路シミュレーション方法、回路シミュレーション装置および回路シミュレーションプログラムを提供することにある。
【００１４】
【課題を解決するための手段】
請求項１に記載の発明は、（ａ）回路情報によって特定される回路を対象とした回路網方程式の作成に用いられる仮想コンダクタンス、前記仮想コンダクタンスの変更に用いられる緩和値、および前記回路網方程式の解をコンピュータに入力して、それぞれ所定の初期値に設定するステップと、（ｂ）前記回路情報に基づいて、前記回路のうち所定条件を満たす箇所に前記仮想コンダクタンスを有する仮想抵抗を導入しつつ、前記回路網方程式を作成するステップと、（ｃ）前記ステップ（ｂ）において作成された前記回路網方程式について、前記解が収束するまで反復解法を用いて前記コンピュータに演算処理を行わせることにより求解処理を行うステップと、（ｄ）前記ステップ（ｃ）において前記解が収束するたびに、前記緩和値を用いて前記コンピュータに演算させることにより前記仮想コンダクタンスの値を逓減させて変更し、かつ、収束した前記解を前記反復解法の新たな初期値に採用して前記ステップ（ｂ），（ｃ）を行うステップと、（ｅ）前記ステップ（ｄ）において前記仮想コンダクタンスの値が第１の所定値以下となったときに、収束した前記解を真値と判断するステップとを含み、前記ステップ（ｃ）において、前記解が収束せず、かつ、所定の打ち切り条件が満たされたときは、前記ステップ（ａ）において設定した前記緩和値を変更して前記ステップ（ｂ）以降を行う回路シミュレーション方法である。
【００１５】
請求項５に記載の発明は、（ａ）回路情報によって特定される回路を対象とした回路網方程式の作成に用いられる仮想コンダクタンス、前記仮想コンダクタンスの変更に用いられる緩和値、および前記回路網方程式の解をコンピュータに入力して、それぞれ所定の初期値に設定するステップと、（ｂ）前記回路情報に基づいて、前記回路のうち所定条件を満たす箇所に前記仮想コンダクタンスを有する仮想抵抗を導入しつつ、前記回路網方程式を作成するステップと、（ｃ）前記ステップ（ｂ）において作成された前記回路網方程式について、前記解が収束するまで反復解法を用いて前記コンピュータに演算処理を行わせることにより求解処理を行うステップと、（ｄ）前記ステップ（ｃ）において前記解が収束するたびに、前記緩和値を用いて前記コンピュータに演算させることにより前記仮想コンダクタンスの値を逓減させて変更し、かつ、収束した前記解を前記反復解法の新たな初期値に採用して前記ステップ（ｂ），（ｃ）を行うステップと、（ｅ）前記ステップ（ｄ）において前記仮想コンダクタンスの値が第１の所定値以下となったときに、収束した前記解を真値と判断するステップとを含み、前記ステップ（ｄ）において、前記緩和値を用いた演算の都度、乱数に基づいて発生させた値により前記緩和値をランダムに変更する回路シミュレーション方法である。
【００１６】
【発明の実施の形態】
＜実施の形態１＞
本実施の形態は、コンピュータを用いてＧｍｉｎ−Ｓｔｅｐｐｉｎｇ法を行うに際して、反復解法において解が収束せず、かつ、所定の打ち切り条件が満たされたときには、仮想コンダクタンスの逓減に用いる緩和値を変更して求解処理を再度行う回路シミュレーション方法、回路シミュレーション装置および回路シミュレーションプログラムである。
【００１７】
図１は、シミュレーション対象たる回路の一例の一部分を示す図である。図１に示すように、この回路は、例えば抵抗Ｒａ〜ＲｃおよびダイオードＤａを含んでいる。このうちダイオードＤａは、素子としてのダイオードであっても、上述のように、ＭＯＳＦＥＴのソース−基板間等の各部に存在するｐｎ接合をダイオードとみなしたものであっても、いずれでもよい。なお、図１では、抵抗Ｒａ〜Ｒｃの各一端とダイオードＤａのアノードとが、ノードＮａで結合されている。
【００１８】
図２は、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法において回路内の所定箇所に導入される仮想抵抗Ｇｍｉｎを示す図である。図２に示すように、仮想抵抗ＧｍｉｎはダイオードＤａに並列接続となるよう導入される。
【００１９】
図３は、本実施の形態に係る回路シミュレーション装置および回路シミュレーション方法を示す図である。また、図４は、本実施の形態に係る回路シミュレーション装置の詳細構成を示す図である。図３においては、本実施の形態に係る回路シミュレーション装置たるコンピュータが、回路情報記憶部１０、回路網方程式求解部２０および計算結果出力部３０を備えていることが示され、同時に、回路網方程式求解部２０において、ステップＳ３００〜Ｓ３０８を含む本実施の形態に係る回路シミュレーション方法が行われることも示されている。
【００２０】
回路情報記憶部１０は、シミュレーション対象たる回路の情報（回路内に含まれる素子やその接続関係の情報）を記憶したハードディスク等の記憶装置である。
【００２１】
回路網方程式求解部２０は、図４に示すように、入出力インタフェース２０ａ、中央処理装置２０ｂ、ＲＯＭ２０ｃおよびＲＡＭ２０ｄ等で構成される演算処理部であり、ＲＯＭ２０ｃやＲＡＭ２０ｄに格納された所定のソフトウェアプログラムによって動作する。なお、入出力インタフェース２０ａ、ＲＯＭ２０ｃおよびＲＡＭ２０ｄはいずれも中央処理装置２０ｂに接続され、その制御を受ける。また、入出力インタフェース２０ａには回路情報記憶部１０および計算結果出力部３０が接続される。回路網方程式求解部２０は、回路情報記憶部１０から得た回路情報のデータに基づいて例えば連立非線形方程式として回路網方程式を作成する。そして、作成した回路網方程式の求解処理を行う。
【００２２】
計算結果出力部３０は、回路網方程式求解部２０におけるシミュレーション結果を出力するための、ディスプレイやプリンタ等で構成される出力部である。
【００２３】
さて、回路網方程式求解部２０において作成される回路方程式は、下記の式１のように表される。
【００２４】
【数１】
2004252711.tif 000003
【００２５】
ここで、Ｘは各ノードにおける電圧と各ブランチを流れる電流とをパラメータとして含む未知変数である。また、Ｒは未知変数Ｘの各パラメータが実数であることを、ｎはパラメータの個数をそれぞれ示している。また、Ｇｍｉｎは仮想抵抗Ｇｍｉｎにおける仮想コンダクタンスの値を示すパラメータである。
【００２６】
以下に、回路網方程式求解部２０における回路網方程式の作成および求解処理について述べる。なお、図３においては、各ステップにおける処理事項を示すとともに、Ｃ言語表記に基づいた命令式を［  ］中に併記している。
【００２７】
まず、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法における演算に用いる緩和値の変更回数を規定するカウンタｋの値を初期値１に設定する（ステップＳ３００）。なお、緩和値とは、仮想コンダクタンスを減少させる演算に用いられる値のことである。
【００２８】
次に、仮想コンダクタンスＧｍｉｎの緩和因子Ｇｒａｍｐを初期値Ｇｒａｍｐ０に設定する。なお、緩和因子Ｇｒａｍｐとは、１０Ｇｒａｍｐの形で仮想コンダクタンス基準値Ｇｍｉｎ０に乗算されることにより仮想コンダクタンスＧｍｉｎの値を緩和するパラメータのことである。
【００２９】
また、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ処理一回当たりの緩和因子Ｇｒａｍｐの変更回数をカウントするカウンタｊの値を初期値１に設定する。さらに、仮想コンダクタンスＧｍｉｎの緩和割合Ｇｒａｔｅ１（ｋ）を、緩和割合初期値Ｇｒａｔｅ０、カウンタｋおよび緩和割合減少率Ｇｒｉｎｃの各値を用いて設定する（以上、ステップＳ３０１）。なお、緩和割合Ｇｒａｔｅ１（ｋ）は、具体的には図３に示すように、Ｇｒａｔｅ１（ｋ）＝Ｇｒａｔｅ０＋（ｋ−１）×Ｇｒｉｎｃと設定される。
【００３０】
なお、Ｎｅｗｔｏｎ法では未知変数Ｘを順次、更新する。また、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法では仮想コンダクタンスＧｍｉｎの値を逓減させてゆく。よって、上記の式１は、カウンタｊと、Ｎｅｗｔｏｎ法の反復回数を規定するためのカウンタｉとを用いて下記の式２のように表される。
【００３１】
【数２】
2004252711.tif 000004
【００３２】
そこで、仮想コンダクタンスＧｍｉｎ（ｊ）を、仮想コンダクタンス基準値Ｇｍｉｎ０および緩和因子Ｇｒａｍｐの各値を用いて所定の初期値に設定する。そして、カウンタｉの値を初期値１に設定する。また、Ｎｅｗｔｏｎ法における回路網方程式の解（＝未知変数）Ｘを所定の初期値（例えば電圧Ｖ１，Ｖ２，…等）に設定する（以上、ステップＳ３０２）。なお、仮想コンダクタンスＧｍｉｎ（ｊ）は、具体的には図３に示すように、Ｇｍｉｎ（ｊ）＝Ｇｍｉｎ０×１０Ｇｒａｍｐと設定される。
【００３３】
さて、以上の設定を経て、Ｎｅｗｔｏｎ法により上記の式２の作成および求解処理を行う。Ｎｅｗｔｏｎ法では、未知変数Ｘを順次、更新して、下記の式３に基づく演算を行う。なお、式３は繰り返し回数（ｉ＋１）回目の解を示す。また、ステップＳ３０２に示したように、ｉ＝１の場合の解Ｘの初期値は回路シミュレーションのオペレーターが予め設定する。
【００３４】
【数３】
2004252711.tif 000005
【００３５】
すなわち、第ｉ回目の未知変数Ｘの値に基づいて、順次、第ｉ＋１回目の未知変数Ｘの値を求めることにより、式２を満たす真の解に近づけてゆく求解処理が行われる。そして、求められた未知変数Ｘの変化量が予め指定された許容誤差の範囲内に収まれば、未知変数Ｘの解が収束して真値が得られたとみなし、計算を終了する。一方、指定の反復回数に達しても、未知変数Ｘの変化量が許容誤差の範囲内に収まらなければ、所定の打ち切り条件が満たされたとして未知変数Ｘの解が収束せず真値が得られなかったとみなし、計算を終了する。
【００３６】
Ｎｅｗｔｏｎ法による求解処理は上記のごとくであり、図３においてステップＳ３０３〜Ｓ３０５の各工程により実現される。すなわち、まず、回路情報のデータに基づいて式２の作成を行う。そして、式２の左辺中の未知変数Ｘ（ｉ）に第ｉ回目の解（ｉ＝１の場合は初期値）を代入して式３中のＦ（Ｘ（ｉ），Ｇｍｉｎ（ｊ））を計算し、ヤコビアン∂Ｆ／∂Ｘをも計算することにより、第ｉ＋１回目の未知変数Ｘ（ｉ＋１）を計算する（ステップＳ３０３）。
【００３７】
そして、得られた未知変数Ｘ（ｉ＋１）と第ｉ回目の解Ｘ（ｉ）との間の変化量を算出し、その差が回路シミュレーションのオペレーターによって予め設定された許容誤差の範囲内に収まっているかどうかにより、未知変数Ｘ（ｉ＋１）の収束が見られたかどうかを判断する（ステップＳ３０４）。
【００３８】
収束していない場合には、カウンタｉの値をインクリメントし、カウンタｉの値が所定の反復回数ＩＴＬ１を超えていないかどうかの打ち切り条件を判断する（ステップＳ３０５）。そして、超えていなければ再度、ステップＳ３０３に戻り、前回の未知変数Ｘ（ｉ＋１）を式３の未知変数Ｘ（ｉ）に代入し、前回と同様にして未知変数Ｘ（ｉ＋１）を計算する。この繰り返しにより、Ｎｅｗｔｏｎ法による求解処理を行う。
【００３９】
さて、本発明ではＧｍｉｎ−Ｓｔｅｐｐｉｎｇ法を採用するので、ステップＳ３０４にて未知変数Ｘ（ｉ＋１）が収束するたびに、緩和値を用いて演算（具体的には除算）することにより仮想コンダクタンスＧｍｉｎの値を逓減させる。
【００４０】
まず、ステップＳ３０４にて未知変数Ｘ（ｉ＋１）が収束したと判断されると、仮想コンダクタンスＧｍｉｎの値が充分に緩和されているかどうかを判断する（ステップＳ３０６）。具体的には、ステップＳ３０６に示すように、例えば緩和因子Ｇｒａｍｐの値が０．０以下となったかどうかを判定する。
【００４１】
もし、緩和因子Ｇｒａｍｐの値が０．０を上回っておれば、ステップＳ３０２において示したＧｍｉｎ（ｊ）の値が、まだ充分には小さな値となっておらず、減少させる必要がある。これはすなわち、図２において導入した仮想抵抗Ｇｍｉｎのコンダクタンスが充分に小さな値となっておらず、本来の回路構成に付加した仮想抵抗Ｇｍｉｎの影響が未だ残置していることを意味する。
【００４２】
すなわち、ステップＳ３０６でＹｅｓと判断された場合には、カウンタｊの値をインクリメントし、仮想コンダクタンス値Ｇｍｉｎの緩和因子Ｇｒａｍｐの調整を行う（ステップＳ３０７ａ）。
【００４３】
具体的には、ステップＳ３０７ａに示すように、カウンタｋの値に応じた現在の緩和割合Ｇｒａｔｅ１（ｋ）の値をパラメータＧｒａｔｅとし、現在の緩和因子Ｇｒａｍｐの値からパラメータＧｒａｔｅの値を差し引く処理を行って、緩和因子Ｇｒａｍｐの値を減少させる。このことはつまり、ステップＳ３０２において、仮想コンダクタンスの値Ｇｍｉｎ（ｊ）が１０Ｇｒａｔｅという緩和値で除算され、Ｇｍｉｎ（ｊ）の値がＧｍｉｎ０×１０Ｇｒａｍｐ−Ｇｒａｔｅに減少することを意味する。
【００４４】
なお、ここでは、緩和値１０Ｇｒａｔｅで除算することにより仮想コンダクタンスＧｍｉｎの値を逓減させる場合を示したが、逓減手法は除算に限られるものではなく、例えば減算等の他の演算であってもよい。
【００４５】
そして、再度、ステップＳ３０２にてＮｅｗｔｏｎ法のカウンタｉの値を初期値１に設定する。その後、再びステップＳ３０３〜Ｓ３０５を繰り返してＮｅｗｔｏｎ法による求解処理を行う。なお、この求解処理においては、前回のステップＳ３０４にて得られた収束解を新たな初期値として用いる。
【００４６】
そして、前回と同様に、ステップＳ３０４にて未知変数Ｘ（ｉ＋１）が収束すれば、ステップＳ３０６にて緩和因子Ｇｒａｍｐの値が充分に小さな値となっているか、再度、判断する。そして、未だ緩和因子Ｇｒａｍｐの値が小さな値となっていなければ、再度、ステップＳ３０７ａにて緩和因子Ｇｒａｍｐの値を調整し、緩和値１０Ｇｒａｔｅで除算することにより仮想コンダクタンスＧｍｉｎの値を逓減させる。
【００４７】
ここでもし、緩和因子Ｇｒａｍｐの値が０．０以下となれば、ステップＳ３０２において示したＧｍｉｎ（ｊ）の値は、第１の所定値たる仮想コンダクタンス基準値Ｇｍｉｎ０の値以下になっており、充分に小さな値であると判断される。これはすなわち、図２において導入した仮想抵抗Ｇｍｉｎのコンダクタンス値が充分に小さくなっており、本来の回路構成と同視し得る状況下で回路網方程式の解が得られたことを意味する。
【００４８】
よって、緩和因子Ｇｒａｍｐの値が０．０以下であれば、すなわちステップＳ３０６でＮｏと判断された場合には、求解が成功したと判断し、回路網方程式求解部２０はその収束解を真値として計算結果出力部３０に出力する。
【００４９】
さて、本願においては、反復解法において解が収束せず、かつ、所定の打ち切り条件が満たされたときには、仮想コンダクタンスの値の逓減に用いる緩和値を変更して求解処理を再度行う。
【００５０】
すなわち、ステップＳ３０４において未知変数Ｘ（ｉ＋１）が収束せず、かつ、ステップＳ３０５においてＮｅｗｔｏｎ法の反復回数を示すカウンタｉの値が反復回数ＩＴＬ１を超えたという所定の打ち切り条件が満たされたときには、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法の反復回数を示すカウンタｋの値をインクリメントしつつステップＳ３０８に進む。そして、ステップＳ３０８においてカウンタｋの値が所定の反復回数Ｎｕｍｇｒを超えていなければ、ステップＳ３０１に戻り、再度、緩和因子Ｇｒａｍｐを初期値Ｇｒａｍｐ０に設定し、緩和因子Ｇｒａｍｐのカウンタｊの値を初期値１に設定する。
【００５１】
ステップＳ３０１においてはさらに、カウンタｋの値が１つ増加した分だけ前回の緩和割合Ｇｒａｔｅ１（ｋ）の値を増加させる。すなわち、緩和割合減少率Ｇｒｉｎｃの値だけ緩和割合Ｇｒａｔｅ１（ｋ）の値を増加させる。そして、再びステップＳ３０２〜Ｓ３０８の各ステップを繰り返すのである。
【００５２】
なお、ステップＳ３０８でカウンタｋの値が所定の反復回数Ｎｕｍｇｒを超えた場合には、緩和割合Ｇｒａｔｅ１（ｋ）の値を変更しても解の真値が得られなかったと判断して、計算結果出力部に３０にその旨を表示する。
【００５３】
上記の各ステップＳ３００〜Ｓ３０８の各処理は、回路網方程式求解部２０たる演算処理部が行う。具体的には、ステップＳ３００におけるカウンタｋのリセット、ステップＳ３０１におけるＧｒａｍｐ初期化、カウンタｊのリセット、Ｇｒａｔｅ１（ｋ）の設定、ステップＳ３０２におけるＧｍｉｎ（ｊ）の設定、カウンタｉのリセット、ステップＳ３０３〜Ｓ３０５におけるＮｅｗｔｏｎ法求解処理、ステップＳ３０６におけるＧｍｉｎ（ｊ）の緩和判定、ステップＳ３０７ａにおけるＧｍｉｎの緩和因子の調整、ステップＳ３０８におけるＧｍｉｎ−Ｓｔｅｐｐｉｎｇ法の求解失敗判定、のいずれについても回路網方程式求解部２０たる演算処理部内の中央処理装置２０ｂが、ＲＯＭ２０ｃやＲＡＭ２０ｄに格納された所定のプログラムに従って行う。
【００５４】
以上の説明において使用した各パラメータの具体例は、以下のとおりである。すなわち、例えばＧｍｉｎ０＝１×１０−１２［Ｓ（ジーメンス）］、Ｇｒａｍｐ０＝６、Ｇｒａｔｅ０＝１．５、Ｇｒｉｎｃ＝０．１、ＩＴＬ１＝１００［回］、Ｎｕｍｇｒ＝１０［回］と設定すればよい。これらのデータは、予め回路シミュレーションのオペレーターにより設定され、回路情報記憶部１０に記憶されている。
【００５５】
これらの設定値の下では、上記処理は以下のようになる。まず、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法の開始当初（ｋ＝１の場合）においては、Ｇｒａｔｅ１（ｋ）＝Ｇｒａｔｅ０＋（ｋ−１）×Ｇｒｉｎｃ＝１．５＋（１−１）×０．１＝１．５となる（ステップＳ３０１）。また、Ｇｍｉｎ（ｊ）＝Ｇｍｉｎ０×１０Ｇｒａｍｐ＝１×１０−１２×１０６＝１×１０−６と設定される（ステップＳ３０２）。
【００５６】
そして、Ｎｅｗｔｏｎ法で収束解が得られれば、ステップＳ３０６においてＧｒａｍｐ＝６＞０．０と判断され、ステップＳ３０７ａに移る。ステップＳ３０７ａにおいては、ＧｒａｔｅにＧｒａｔｅ１（ｋ）＝１．５の値が代入され、Ｇｒａｍｐの値６からＧｒａｔｅの値１．５が差し引かれる。これにより、Ｇｒａｍｐの値は４．５となる。
【００５７】
次に、ステップＳ３０２に戻るので、Ｇｍｉｎ（ｊ）＝Ｇｍｉｎ０×１０Ｇｒａｍｐ＝１×１０−１２×１０４．５＝１×１０−７．５と設定される。以下、同様にしてＮｅｗｔｏｎ法で収束解が得られた場合には、Ｇｒａｍｐの値は４．５→３．０→１．５→０．０と減少していくので、Ｇｍｉｎ（ｊ）の値も、１×１０−７．５→１×１０−９．０→１×１０−１０．５→１×１０−１２．０と減少する。そして、Ｇｒａｍｐの値が０．０に達したときに、Ｇｍｉｎ（ｊ）の値がその基準値Ｇｍｉｎ０＝１×１０−１２以下となって、そのときの収束解が真値として出力されることになる。
【００５８】
一方、上記処理中で収束解が得られず、かつ、ステップＳ３０５において反復回数がＩＴＬ１＝１００［回］を超えるという所定の打ち切り条件を満たしてしまった場合には、ｋ＝２とされ、ステップＳ３０８にてｋ＝２＜Ｎｕｍｇｒ＝１０［回］と判断された上でステップＳ３０１に戻る。この場合、Ｇｒａｔｅ１（ｋ）＝Ｇｒａｔｅ０＋（ｋ−１）×Ｇｒｉｎｃ＝１．５＋（２−１）×０．１＝１．６となる（ステップＳ３０１）。また、Ｇｍｉｎ（ｊ）については前回と同様１×１０−６と設定される（ステップＳ３０２）。
【００５９】
そして、Ｎｅｗｔｏｎ法で収束解が得られれば、ステップＳ３０６においてＧｒａｍｐ＝６＞０．０と判断され、ステップＳ３０７ａに移る。ステップＳ３０７ａにおいては、ＧｒａｔｅにＧｒａｔｅ１（ｋ）＝１．６の値が代入され、Ｇｒａｍｐの値６からＧｒａｔｅの値１．６が差し引かれる。これにより、Ｇｒａｍｐの値は４．４となる。
【００６０】
次に、ステップＳ３０２に戻るので、Ｇｍｉｎ（ｊ）＝Ｇｍｉｎ０×１０Ｇｒａｍｐ＝１×１０−１２×１０４．４＝１×１０−７．６と設定される。以下、同様にしてＮｅｗｔｏｎ法で収束解が得られた場合には、Ｇｒａｍｐの値は４．４→２．８→１．２→−０．４と減少していくので、Ｇｍｉｎ（ｊ）の値も、１×１０−７．６→１×１０−９．２→１×１０−１０．８→１×１０−１２．４と減少する。そして、Ｇｒａｍｐの値が−０．４に達したときに、Ｇｍｉｎ（ｊ）の値がその基準値Ｇｍｉｎ０＝１×１０−１２以下となって、そのときの収束解が真値として出力されることになる。
【００６１】
このように、上記の数値例においては、ｋ＝１の場合、解が収束するたびに、緩和値１０Ｇｒａｔｅ＝１０１．５で除算することにより仮想コンダクタンスＧｍｉｎの値を逓減させるが、ｋ＝２の場合は、解が収束するたびに、緩和値１０Ｇｒａｔｅ＝１０１．６で除算することにより仮想コンダクタンスＧｍｉｎの値を逓減させる。そして、３回目以降については、緩和値を１０Ｇｒａｔｅ＝１０１．７、１０１．８、１０１．９…として仮想コンダクタンスＧｍｉｎの値を除算することとなる。
【００６２】
すなわち、本実施の形態に係る回路シミュレーション方法および回路シミュレーション装置によれば、仮想コンダクタンスＧｍｉｎの値が充分に小さな値とならず、かつ、解が収束しない場合には、仮想コンダクタンスＧｍｉｎの緩和値が自動的に変更されて再度、回路シミュレーションが行われることになる。
【００６３】
これにより緩和値の再設定という煩瑣な作業を省くことが可能となり、従来、回路シミュレーションのオペレーターに強いられていた逓減手法の見直しの負担が軽減される。また、緩和法により求解処理を行う場合、緩和値を変更することにより求解可能性が拡大することがある。そのため、本実施の形態に係る回路シミュレーション方法および回路シミュレーション装置によれば、回路網方程式の求解処理にて解が求めやすくなる。
【００６４】
なお、本願発明の射程は、本実施の形態に係る回路シミュレーション方法の各ステップをコンピュータに実行させる回路シミュレーションプログラムにも及ぶ。
【００６５】
＜実施の形態２＞
本実施の形態は、実施の形態１に係る回路シミュレーション方法、回路シミュレーション装置および回路シミュレーションプログラムの変形例であって、実施の形態１におけるステップＳ３０７ａにおいて、仮想コンダクタンスＧｍｉｎの値が所定値よりも小さくなったときに、緩和値を所定の固定値に変更しつつ、変更後の緩和値で仮想コンダクタンスの値を逓減させるようにしたものである。
【００６６】
図５は、本実施の形態に係る回路シミュレーション装置および回路シミュレーション方法を示す図である。なお、図５においては、ステップＳ３０７ａがステップＳ３０７ｂに変更されている点以外、装置構成および各ステップは図３と同じである。
【００６７】
ステップＳ３０７ｂについて説明する。図５に示すように、このステップＳ３０７ｂにおいては、緩和因子Ｇｒａｍｐの値が、予め設定したしきい値Ｇｔｒａｎよりも大きいときは、実施の形態１の場合と同様、カウンタｋの値に応じた現在の緩和割合Ｇｒａｔｅ１（ｋ）の値をパラメータＧｒａｔｅとし、現在の緩和因子Ｇｒａｍｐの値からパラメータＧｒａｔｅの値を差し引く処理を行って、緩和因子Ｇｒａｍｐの値を減少させる。
【００６８】
一方、緩和因子Ｇｒａｍｐの値がしきい値Ｇｔｒａｎ以下となったときには、すなわち、仮想コンダクタンスＧｍｉｎの値が、第２の所定値たるＧｍｉｎ０×１０Ｇｔｒａｎ以下となったときには、Ｇｒａｔｅ１（ｋ）の値をパラメータＧｒａｔｅとするのではなく、予め設定した固定緩和割合Ｇｒａｔｅ２をパラメータＧｒａｔｅとし、現在の緩和因子Ｇｒａｍｐの値からパラメータＧｒａｔｅの値を差し引く処理を行って、緩和因子Ｇｒａｍｐの値を減少させる。すなわち、この場合はステップＳ３０１での緩和割合Ｇｒａｔｅ１（ｋ）の再設定を行わない。なお、もちろん第２の所定値たるＧｍｉｎ０×１０Ｇｔｒａｎの値は、仮想コンダクタンス基準値Ｇｍｉｎ０よりも大きく設定される。
【００６９】
これにより、緩和値１０Ｇｒａｔｅの値が所定の固定値１０Ｇｒａｔｅ２に変更され、変更後の緩和値１０Ｇｒａｔｅ２で除算することにより仮想コンダクタンスＧｍｉｎの値が逓減される。なお、ここでも、変更後の緩和値１０Ｇｒａｔｅ２で除算することにより仮想コンダクタンスＧｍｉｎの値を逓減させる場合を示したが、逓減手法は除算に限られるものではなく、減算等の他の演算であってもよい。
【００７０】
その他の点については、実施の形態１に係る回路シミュレーション方法、回路シミュレーション装置および回路シミュレーションプログラムと同様のため、説明を省略する。
【００７１】
なお、しきい値Ｇｔｒａｎおよび固定緩和割合Ｇｒａｔｅ２の具体例は、以下のとおりである。すなわち、例えばＧｔｒａｎ＝４．０、Ｇｒａｔｅ２＝１．０と設定すればよい。これらのデータも、予め回路シミュレーションのオペレーターにより設定され、回路情報記憶部１０に記憶されている。
【００７２】
これらの設定値の下では、実施の形態１にて用いた数値例をも援用すれば、上記処理は以下のようになる。
【００７３】
実施の形態１では、ｋ＝１の場合において、Ｇｒａｍｐの値は６．０→４．５→３．０→１．５→０．０と減少していくので、Ｇｍｉｎ（ｊ）の値も、１×１０−６．０→１×１０−７．５→１×１０−９．０→１×１０−１０．５→１×１０−１２．０と減少していた。しかし、本実施の形態では、Ｇｒａｍｐの値がＧｔｒａｎ＝４．０以下となったときには、ＧｒａｔｅがＧｒａｔｅ２＝１．０に固定されるので、Ｇｒａｍｐの値は６．０→４．５→３．０→２．０→１．０→０．０と減少し、Ｇｍｉｎ（ｊ）の値も、１×１０−６．０→１×１０−７．５→１×１０−９．０→１×１０−１０．０→１×１０−１１．０→１×１０−１２．０と減少することになる。
【００７４】
ｋ＝２の場合も同様に、Ｇｒａｍｐの値がＧｔｒａｎ＝４．０以下となったときにＧｒａｔｅがＧｒａｔｅ２＝１．０に固定されるので、Ｇｒａｍｐの値は６．０→４．４→２．８→１．８→０．８→−０．２と減少し、Ｇｍｉｎ（ｊ）の値も、１×１０−６．０→１×１０−７．６→１×１０−９．２→１×１０−１０．２→１×１０−１１．２→１×１０−１２．２と減少することになる。ｋ＝３以降の場合も同様の処理となる。
【００７５】
本実施の形態によれば、仮想コンダクタンスＧｍｉｎの値が第２の所定値たるＧｍｉｎ０×１０Ｇｔｒａｎ以下となったときには、緩和値１０Ｇｒａｔｅの値を所定の固定値１０Ｇｒａｔｅ２に変更して、変更後の緩和値で除算等の演算を行うことにより仮想コンダクタンスの値Ｇｍｉｎを逓減させ、求解処理を行う。
【００７６】
よって、実施の形態１におけるように、緩和割合Ｇｒａｔｅ１（ｋ）の値を１．５（ｋ＝１の場合）や１．６（ｋ＝２の場合）と設定して、緩和値１０Ｇｒａｔｅの値を大きく設定しておき、一方、固定緩和割合Ｇｒａｔｅ２を１．０と設定して、所定の固定値１０Ｇｒａｔｅ２を小さく設定しておけば、求解処理の初期段階では仮想コンダクタンスの値を大幅に変更して解の追跡効率を上げることができ、一方、真値に近づいた求解処理の最終段階では仮想コンダクタンスの値を細やかに変更して精度よく真値を求めることが可能となる。
【００７７】
＜実施の形態３＞
本実施の形態も、実施の形態１に係る回路シミュレーション方法、回路シミュレーション装置および回路シミュレーションプログラムの変形例であって、実施の形態１におけるステップＳ３０７ａにおいて、乱数に基づいて発生させた値を緩和値に対して演算しつつ、演算後の緩和値で除算等することにより仮想コンダクタンスの値を逓減させるようにしたものである。
【００７８】
図６は、本実施の形態に係る回路シミュレーション装置および回路シミュレーション方法を示す図である。なお、図６においては、ステップＳ３０７ａがステップＳ３０７ｃに変更されている点以外、装置構成および各ステップは図３と同じである。
【００７９】
ステップＳ３０７ｃについて説明する。図６に示すように、このステップＳ３０７ｃにおいては、カウンタｋの値に応じた現在の緩和割合Ｇｒａｔｅ１（ｋ）に、乱数ｒａｎｄ（）を加えた値をパラメータＧｒａｔｅとし、現在の緩和因子Ｇｒａｍｐの値からパラメータＧｒａｔｅの値を差し引く処理を行って、緩和因子Ｇｒａｍｐの値を減少させる。なお、乱数ｒａｎｄ（）は、発生範囲に上下限のない任意の値でもよいが、例えば０≦ｒａｎｄ（）≦１のように所定の範囲内の任意の値と制限してもよい。
【００８０】
このことはつまり、緩和値を用いた演算の都度、ステップＳ３０２において、乱数ｒａｎｄ（）に基づいて発生させた値１０ｒａｎｄ（）を１０Ｇｒａｔｅ１（ｋ）という緩和値に対して乗算しつつ、演算後の緩和値１０Ｇｒａｔｅ１（ｋ）＋ｒａｎｄ（）で除算して仮想コンダクタンスＧｍｉｎ（ｊ）の値を逓減させることを意味する。
【００８１】
なお、上記においては、乱数ｒａｎｄ（）に基づいて発生させた値１０ｒａｎｄ（）を緩和値１０Ｇｒａｔｅ１（ｋ）に対して乗算する場合を示したが、その他にも加算、減算または除算等の演算を行ってもよい。
【００８２】
また、上記においては、演算後の緩和値１０Ｇｒａｔｅ１（ｋ）＋ｒａｎｄ（）で除算することにより仮想コンダクタンスＧｍｉｎの値を逓減させる場合を示したが、逓減手法は除算に限られるものではなく、減算等の他の演算であってもよい。
【００８３】
その他の点については、実施の形態１に係る回路シミュレーション方法、回路シミュレーション装置および回路シミュレーションプログラムと同様のため、説明を省略する。
【００８４】
本実施の形態によれば、乱数ｒａｎｄ（）に基づいて発生させた値１０ｒａｎｄ（）を緩和値１０Ｇｒａｔｅ１（ｋ）に対して演算しつつ、演算後の緩和値１０Ｇｒａｔｅ１（ｋ）＋ｒａｎｄ（）で仮想コンダクタンスＧｍｉｎの値を逓減させる。よって、緩和値をランダムに変更することが可能となり、求解可能性が拡大することがある。
【００８５】
なお、本実施の形態において、カウンタｋのインクリメント、ステップＳ３０８でのカウンタｋの値の判断、およびステップＳ３０１での緩和割合Ｇｒａｔｅ１（ｋ）の再設定、のいずれをも行わないようにしてもよい。その場合、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法における緩和値の再設定を行わないことになる。本実施の形態では、緩和値を用いた演算の都度、乱数に基づいて発生させた値により緩和値をランダムに変更する点に特徴があるので、そのような緩和値の再設定を行わない場合も本願発明の射程に含まれる。
【００８６】
＜変形例＞
上記実施の形態１乃至３においては、ステップＳ３０３〜Ｓ３０５における反復解法としてＮｅｗｔｏｎ法を採用していた。しかしながら、上記特許文献１にてソルバの他の例として挙げられているように、反復解法にはＮｅｗｔｏｎ法の他にもＤａｍｐｅｄ−Ｎｅｗｔｏｎ法やホモトピー法等の手法がある。
【００８７】
よって、上記実施の形態１乃至３において、Ｎｅｗｔｏｎ法に代わって、これらＤａｍｐｅｄ−Ｎｅｗｔｏｎ法やホモトピー法等、他の反復解法を採用してもよい。そうすれば、シミュレーション対象たる回路に適した反復解法を選択することができ、その場合も上記と同様の効果が得られる。
【００８８】
また、上記特許文献１に記載の回路シミュレーション装置においては、選択可能なソルバの一つとして通常のＧｍｉｎ−Ｓｔｅｐｐｉｎｇ法が挙げられているが、通常のＧｍｉｎ−Ｓｔｅｐｐｉｎｇ法に代えて本願に記載のＧｍｉｎ−Ｓｔｅｐｐｉｎｇ法を採用するようにしてもよい。
【００８９】
【発明の効果】
請求項１に記載の発明によれば、反復解法において解が収束せず、かつ、所定の打ち切り条件が満たされたときは、緩和値を変更して求解処理を再度、行う。よって、Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法を行うに際して緩和値を再入力する手間が省け、回路シミュレーションのオペレーターに強いられていた逓減手法の見直しの負担が軽減される。また、緩和法により求解処理を行う場合、緩和値を変更することにより求解可能性が拡大することがある。そのため、請求項１に記載の発明によれば、回路網方程式の求解処理にて解が求めやすくなる。
【００９０】
請求項５に記載の発明によれば、緩和値を用いた演算の都度、乱数に基づいて発生させた値により緩和値をランダムに変更する。よって、求解可能性が拡大することがある。
【図面の簡単な説明】
【図１】シミュレーション対象たる回路の一例の一部分を示す図である。
【図２】Ｇｍｉｎ−Ｓｔｅｐｐｉｎｇ法において回路内の所定箇所に導入される仮想抵抗Ｇｍｉｎを示す図である。
【図３】実施の形態１に係る回路シミュレーション装置および回路シミュレーション方法を示す図である。
【図４】実施の形態１に係る回路シミュレーション装置の詳細構成を示す図である。
【図５】実施の形態２に係る回路シミュレーション装置および回路シミュレーション方法を示す図である。
【図６】実施の形態３に係る回路シミュレーション装置および回路シミュレーション方法を示す図である。
【符号の説明】
１０  回路情報記憶部、２０  回路網方程式求解部、３０  計算結果出力部。
【図１】
2004252711.tif 000006
【図２】
2004252711.tif 000007
【図３】
2004252711.tif 000008
【図４】
2004252711.tif 000009
【図５】
2004252711.tif 000010
【図６】
2004252711.tif 000011