(57)【要約】【課題】回路解析の解析速度を向上することができる回路解析方法、回路解析プログラム、及び回路シミュレーション装置を提供することにある。【解決手段】本発明による回路シミュレーション装置１０は、直接法と反復法のいずれかを、解析対象回路の回路方程式に対応する係数行列の求解方法として選択する解析選択部２２３と、選択された求解方法によって係数行列の解を求める解析処理部２２４、２２５とを具備する。【選択図】図６
2008015841.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いて回路解析を行う方法であって、
解析対象回路に対応するネットリスト情報を取得するステップと、
前記ネットリスト情報に基づき前記解析対象回路の回路方程式に対応する係数行列を作成するステップと、
直接法と反復法のいずれかを、前記係数行列の求解方法として選択する求解方法選択ステップと、
前記選択された求解方法によって前記係数行列の解を求めるステップと、
を具備する
回路解析方法。
【請求項２】
請求項１に記載の回路解析方法において、
前記求解方法選択ステップは、
前記係数行列にフィルインされた行列要素をフィルインパラメータの数ｂとして取得するステップと、
前記フィルインパラメータ数ｂに基づき、前記求解方法を選択するステップと、
を備える
回路解析方法。
【請求項３】
請求項２に記載の回路解析方法において、
前記求解方法選択ステップは、
前記係数行列に基づき、前記係数行列の行列サイズＮと、前記係数行列において前記フィルインパラメータを除く非零要素数ａとを取得するステップと、
前記行列サイズＮと前記フィルインパラメータを除く非零要素数ａと前記非零要素数ｂとに基づき前記求解方法を選択するステップと、
を更に備える
回路解析方法。
【請求項４】
請求項１に記載の回路解析方法において、
前記求解方法選択ステップは、
前記ネットリスト情報に基づき、回路行列を非零要素を辺とする有向グラフとして作成し、各節点に接続する辺からフィルインパラメータ数ｂの予測値を算出するステップと、
前記予測値に基づき、前記求解方法を選択するステップと、
を備える。
回路解析方法。
【請求項５】
請求項４に記載の回路解析方法において、
前記求解方法選択ステップは、
前記ネットリスト情報に基づき、前記係数行列の行列サイズＮと、前記係数行列において前記予測値を除く非零要素数ａとを予想するステップと、
前記前記行列サイズＮと前記予測値を除く非零要素数ａと前記予測値とに基づき前記求解方法を選択するステップと、
を更に備える
回路解析方法。
【請求項６】
請求項３又は５に記載の回路解析方法において、
所定の値である求解方法選択条件Ｆｉｌｌを設定するステップを更に具備し、
前記求解方法選択ステップは、
（ａ＋ｂ）２／（ａ×Ｎ）＞Ｆｉｌｌを満たす場合、前記求解方法として反復法を選択するステップを備える
回路解析方法。
【請求項７】
請求項６に記載の回路解析方法において、
前記求解方法選択ステップは、
（ａ＋ｂ）２／（ａ×Ｎ）＜Ｆｉｌｌを満たす場合、前記求解方法として直接法を選択するステップを備える
回路解析方法。
【請求項８】
請求項１から７いずれか１項に記載の回路解析方法をコンピュータに実行させる
回路解析プログラム。
【請求項９】
直接法と反復法のいずれかを、解析対象回路の回路方程式に対応する係数行列の求解方法として選択する解析選択部と、
前記選択された求解方法によって前記係数行列の解を求める解析処理部と、
を具備する
回路シミュレーション装置。
【請求項１０】
請求項９に記載の回路シミュレーション装置において、
前記解析対象回路に対応するネットリスト情報に基づき前記係数行列を作成する回路行列作成部と、
前記係数行列にフィルインされた行列要素をフィルインパラメータの数ｂとして取得するフィルインパラメータ計数部と、
を更に具備し、
前記解析選択部は、前記フィルインパラメータ数ｂに基づき、前記求解方法を選択する
回路シミュレーション装置。
【請求項１１】
請求項１０に記載の回路シミュレーション装置において、
前記回路行列作成部は、前記係数行列に基づき、前記係数行列の行列サイズＮと、前記係数行列において前記フィルインパラメータを除く非零要素数ａと計数し、
前記解析選択部は、前記行列サイズＮと前記非零要素数ｂとに基づき前記求解方法を選択する
回路シミュレーション装置。
【請求項１２】
請求項９に記載の回路シミュレーション装置において、
前記解析対象回路に対応するネットリスト情報に基づき、前記係数行列にフィルインされる行列要素であるフィルインパラメータ数ｂを予想する計算時間予測処理部を更に具備し、
前記解析選択部は、前記フィルインパラメータ数ｂに基づき、前記求解方法を選択する
回路シミュレーション装置。
【請求項１３】
請求項１２に記載の回路シミュレーション装置において、
前記計算時間予測処理部は、前記ネットリスト情報に基づき、前記係数行列の行列サイズＮと、前記予想されたフィルインパラメータ数を除く非零要素数ａとを予想し、
前記解析選択部は、前記行列サイズＮと前記非零要素数ｂとに基づき前記求解方法を選択する
回路シミュレーション装置。
【請求項１４】
請求項１１又は１３に記載の回路シミュレーション装置において、
所定の値である求解方法選択条件Ｆｉｌｌが設定される記憶装置を更に具備し、
前記解析選択部は、（ａ＋ｂ）２／（ａ×Ｎ）＞Ｆｉｌｌを満たす場合、前記求解方法として反復法を選択し、
前記解析処理部は、反復法によって前記係数行列の求解処理を実行する
回路シミュレーション装置。
【請求項１５】
請求項１４に記載の回路シミュレーション装置において、
前記解析処理部は、（ａ＋ｂ）２／（ａ×Ｎ）＜Ｆｉｌｌを満たす場合、前記求解方法として直接法を選択し、
前記解析処理部は、直接法によって前記係数行列の求解処理を実行する
回路シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路解析方法、回路解析プログラム、及び回路シミュレーション装置に関し、特に回路内にける信号の遅延時間を解析する回路解析方法、回路解析プログラム、及び回路シミュレーション装置に関する。
【背景技術】
【０００２】
回路シミュレータ（ｃｉｒｃｕｉｔ  ｓｉｍｕｌａｔｏｒ）は電子回路のアナログ動作を模擬するＥＤＡ（Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ）ツールである。代表的な回路シミュレータとしてＳＰＩＣＥ（Ｓｉｍｕｌａｔｉｏｎ  Ｐｒｏｇｒａｍ  ｗｉｔｈ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  Ｅｍｐｈａｓｉｓ）がある。回路シミュレータは、回路内におけるトランジスタレベルの接続情報と素子の電気的特性等の情報（ネットリスト）に基づき、回路方程式（１次連立方程式）を作成し、これを解くことで回路内のノード電圧と素子に流れる電流の直流特性、時間応答、及び周波数応答等を出力する。このように、回路シミュレータは、トランジスタレベルの回路設計、特に、フルカスタムＬＳＩやメモリＬＳＩ、アナログＩＣの設計には不可欠なＥＤＡツールである。
【０００３】
回路シミュレータにおける１次連立方程式の求解方法としては、直接法と反復法がある。直接法は、ガウス消去法に代表されるように、ｎ元１次連立方程式からなる係数行列を上三角行列に変換（前進消去処理）し、変換した上三角行列の最下行から順次解を求める（後退代入処理）。反復法は、解に任意の初期値を与え、反復公式により解の精度を改善していき、方程式の近似解を求める方法である。反復法には、定常法（例えばガウス−ザイデル法）や非定常法（例えばＣＧ法：Ｃｏｎｊｕｇａｔｅ  Ｇｒａｄｉｅｎｔ（共役勾配法））がある。
【０００４】
直接法は、基本的にどのような連立方程式に対しても理論的誤差が極めて少ない解を求めることができる。このため、どんな種類のデバイスや回路構成であっても汎用的に適用できる。又、反復法は、丸め誤差が蓄積し易いという問題があったため、現在、連立方程式（係数行列）の求解方法として直接法を採用する回路シミュレータが広く普及している。直接法を採用した回路シミュレータに関連する従来技術が、例えば、特開２００１−２９０７９６号公報（特許文献１参照）、特開平９−３１９７８４号公報（特許文献２参照）、特開平１０−０１１４７５号公報（特許文献３参照）に記載されている。
【０００５】
しかし、最近の研究により反復法の収束性能が飛躍的に向上し、丸め誤差の蓄積が抑えられたことから、反復法を回路シミュレータへ組み込むことが検討されつつある。
【０００６】
【特許文献１】特開２００１−２９０７９６号公報
【特許文献２】特開平９−３１９７８４号公報
【特許文献３】特開平１０−０１１４７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
回路シミュレーションで計算される係数行列は、その行列要素のほとんどが０であるようなスパース行列である。このため、係数行列のサイズが小さいとき、直接法は有効である。すなわち、直接法は、シミュレーション対象の回路規模（素子数）が比較的小さい場合、短い計算時間で正確なシミュレーション結果を得ることができる。しかし、回路規模が大きくなると、係数行列のサイズは大きくなり、メモリ使用量が大幅に増加し、解析時間が長大になる。このため、適用可能な回路規模は、２万〜３万素子程度が実用上の限界と言われている。一方、反復法は、係数行列のサイズが小さいとき、解が求まるまでの反復回数などが原因で直接法に比べ計算時間は長くなる。しかし、反復法では、係数行列へのフィルイン（ｆｉｌｌ−ｉｎ）による非零要素（以下、フィルインパラメータと称す）の追加がないため、直接法のような使用メモリ量の増大は発生しない。このため、回路規模（係数行列のサイズ）が大きい場合、反復法の方が直接法よりも短時間で回路解析を実行することができる。以上のことから、直接法は、小規模回路に対する回路解析に有効であり、反復法は大規模回路に対する回路解析に有効である。
【０００８】
近年、高速動作のＬＳＩを実装したプリント回路基板の設計において、回路シミュレータは不可欠なツールとなってきた。このため、大規模な回路を高速・高精度で解析できる回路シミュレータの重要性は従来にも増して高まってきている。このような大規模回路を高速に解析するためには反復法を回路シミュレータの解析法に適用することが好ましい。
【０００９】
ここで、直接法と反復法による１解析当たりの演算回数と、係数行列のサイズとの関係を示す。係数行列のサイズをＮ、係数行列の中でフィルインパラメータ追加前の非零要素の割合（行列密度）をλ、係数行列の中でフィルインパラメータが占める割合（行列密度）をμとした場合、直接法、反復法による１解析当たりの演算回数は式１及び式２のようになる。ここでは、直接法としてガウス消去法、反復法としてＢｉＣＧｓｔａｂ法が採用されているものとする。
【数１】
2008015841.tif 000003
【数２】
2008015841.tif 000004
ただし、ＩＴＲは、反復回数である。
【００１０】
図１２は、λ＝０．１、ＩＴＲ＝１０００としたときの直接法と反復法による１解析当たりの演算回数と、係数行列のサイズとの関係を示すシミュレーション結果である。図１２を参照して、フィルインパラメータがない場合、すなわちμ＝０の場合、係数行列のサイズが２００００を超えていれば反復法を用いた方が高速に回路シミュレーションを行うことができる。しかし、フィルインパラメータの数はλの値が同じであったとしても非零要素の構成によって大きく変化する。このため、係数行列のサイズが２００００未満であったとしても反復法の方が少ない演算回数で解析できる場合がある。例えば、μ＝０．５のとき、反復法による解析速度が直接法による解析速度を超えるときの係数行列のサイズは５６０である。このように、直接法による回路シミュレーションの計算時間（演算回数）は、係数行列のサイズの大きさだけでは予測することはできない。このため、係数行列のサイズ（回路規模）だけでは直接法と反復法のどちらが高速に回路シミュレーションできるかを正確に予測することは難しい。
【課題を解決するための手段】
【００１１】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を括弧付きで用いて、［課題を解決するための手段］を説明する。この番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明による回路シミュレーション装置（１０）は、直接法と反復法のいずれかを、解析対象回路の回路方程式に対応する係数行列の求解方法として選択する解析選択部（２２３）と、選択された求解方法によって係数行列の解を求める解析処理部（２２４、２２５）とを具備する。
【００１３】
第１の態様に係る回路シミュレーション装置（１０）は、解析対象回路に対応するネットリスト情報（２１）に基づき係数行列を作成する回路行列作成部（２２１）と、係数行列にフィルインされた行列要素をフィルインパラメータの数ｂとして取得するフィルインパラメータ計数部（２２２Ａ）とを更に具備する。解析選択部（２２３）は、フィルインパラメータ数ｂに基づき、求解方法を選択する。直接法による求解処理における演算速度は、フィルインパラメータ数ｂによって変動する。このため、フィルインパラメータ数ｂを考慮して求解方法を選択することで、より演算速度の高い求解方法を正確に選択することが可能となる。
【００１４】
又、回路行列作成部（２２１）は、係数行列に基づき、係数行列の行列サイズＮと、前記係数行列において前記フィルインパラメータを除く非零要素数ａと計数する。解析選択部（２２３）は、行列サイズＮと非零要素数ｂとに基づき求解方法を選択する。具体的には、解析選択部（２２３）は、（ａ＋ｂ）２／（ａ×Ｎ）＞Ｆｉｌｌを満たす場合、前記求解方法として反復法を選択する。この際、解析処理部（２２５）は、反復法によって係数行列の求解処理を実行する。ここで、右辺（Ｆｉｌｌ）は、所定の値である求解方法選択条件（２３）であり、記憶装置（１３）に設定されることが好ましい。更に、解析選択部（２２３）は、（ａ＋ｂ）２／（ａ×Ｎ）＜Ｆｉｌｌを満たす場合、求解方法として直接法を選択する。この際、解析処理部（２２４）は、直接法によって前記係数行列の求解処理を実行する。
【００１５】
第２の実施の形態における回路シミュレーション装置（１０）は、解析対象回路に対応するネットリスト情報（２１）に基づき、係数行列にフィルインされる行列要素であるフィルインパラメータ数ｂを予想する計算時間予測処理部（２２６）を更に具備する。解析選択部（２２３）は、予想されたフィルインパラメータ数ｂに基づき、求解方法を選択する。このため、係数行列を作成せずにフィルインパラメータ数ｂを予測するため、求解方法の選択に要する時間が短縮される。
【００１６】
又、計算時間予測処理部（２２６）は、ネットリスト情報（２１）に基づき、係数行列の行列サイズＮと、予想されたフィルインパラメータ数を除く非零要素数ａとを予想する。解析選択部（２２３）は、行列サイズＮと非零要素数ｂとに基づき求解方法を選択する。具体的には、第１の態様と同様に、計算時間予測処理部（２２６）において予想された各パラメータによって、解析選択部（２２３）は、（ａ＋ｂ）２／（ａ×Ｎ）＞Ｆｉｌｌを満たす場合、前記求解方法として反復法を選択する。この際、解析処理部（２２５）は、反復法によって係数行列の求解処理を実行する。更に、解析選択部（２２３）は、（ａ＋ｂ）２／（ａ×Ｎ）＜Ｆｉｌｌを満たす場合、求解方法として直接法を選択する。この際、解析処理部（２２４）は、直接法によって前記係数行列の求解処理を実行する。
【発明の効果】
【００１７】
本発明による回路解析方法、回路解析プログラム、及び回路シミュレーション装置によれば、回路解析の解析速度を向上することができる。
【００１８】
又、小規模回路から大規模回路までを対象とした回路解析の解析速度を向上することができる。
【００１９】
更に、解析方法として反復法を適用した回路シミュレーション装置が実現できる。
【００２０】
更に、求解方法の種類に関係なく高速な行列演算手法を選択して回路解析が実行できる。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面を参照して、本発明による回路シミュレーション装置の実施の形態を説明する。本実施の形態では、求解方法として直接法及び反復法を用いた回路シミュレータを搭載したコンピュータ装置（以下、回路シミュレーション装置１０と称す）を一例に説明する。尚、図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。
【００２２】
１．第１の実施の形態
第１の実施の形態における回路シミュレーション装置１０は、直接法と反復法とのどちらかを用いて電子回路の解析を行う。この際、回路シミュレーション装置１０は、解析対象の係数行列に加えるフィルインパラメータの数に基づいて、直接法と反復法のうち、より高速演算可能な求解方法を選択して回路解析を実行する。以下、図１から図９を参照して、本発明による回路シミュレーション装置１０の第１の実施の形態を詳細に説明する。
【００２３】
（構成）
図１から図５を参照して、本発明による回路シミュレーション装置の第１の実施の形態における構成を説明する。図１は、本発明による回路シミュレーション装置１０の第１の実施の形態における構成図である。図１を参照して、本発明による回路シミュレーション装置１０は、バス１６を介して相互に接続されるＣＰＵ１１と、ＲＡＭ１２と、記憶装置１３と、入力装置１４と、出力装置１５とを具備する。記憶装置１３はハードディスクやメモリ等の外部記憶装置である。又、入力装置１４は、キーボードやマウス等のユーザによって操作されることで、各種データをＣＰＵ１１や記憶装置１３に出力する。出力装置１５は、モニタやプリンタに例示され、ＣＰＵ１１から出力される回路解析の結果をユーザに対し視認可能に出力する。
【００２４】
ＣＰＵ１１は、入力装置１４からの入力に応答して、記憶装置１３内の回路解析プログラム２２を実行し、回路解析処理を行う。この際、記憶装置１３からの各種データやプログラムはＲＡＭ１２に一時格納され、ＣＰＵ１１は、ＲＡＭ１２内のデータを用いて各種処理を実行する。
【００２５】
記憶装置１３は、ネットリスト２１、回路解析プログラム２２、求解方法選択条件２３を格納している。ネットリスト２１は、回路の接続情報、各素子の特性、解析情報を含んでいる。詳細には、ネットリスト２１は、解析対象の回路を構成する素子の接続や種類、サイズ（素子数）等が記述されたエレメントカードと、その回路を構成する素子のうちで、ダイオードやトランジスタなどの非線形能動素子のデバイスモデルのパラメータと、回路の解析方法を制御する条件情報（初期値等）を含む。回路解析プログラム２２は、ＣＰＵ１１によって実行され、解析対象回路内のノード電圧や素子内電流の遅延時間を解析する。求解方法選択条件２３は、求解方法として直接法と反復法のどちらを選択するかを決めるための条件情報である。本発明による回路シミュレーション装置１０は、直接法、反復法のそれぞれによる係数行列の演算回数を比較して求解方法を選択決定する。反復法による演算回数は、係数行列の求解処理時に与えられる初期値によって変化するため、所定の値が設定される。記憶装置１３は、この所定の値を求解方法選択条件２３として格納する。
【００２６】
回路解析プログラム２２は、回路シミュレーションを実行する回路シミュレータである。回路プログラム２２は、ＣＰＵ１１によって実行されることで、回路行列作成部２２１、フィルインパラメータ計数部２２２Ａ、解析選択部２２３、直接法解析処理部２２４、反復法解析処理部２２５の各機能を実現する。
【００２７】
回路行列作成部２２１は、入力装置１４から入力される条件情報や記憶装置１３内のネットリスト２１に基づき、解析対象の電子回路の回路方程式（係数行列）を生成する。この際、主に修正節点法と呼ばれる回路方程式の定式化方法が用いられる。又、解析式を使ったデバイスモデルが利用される。デバイスモデルは、個々のトランジスタに流れる電流を計算するために、実測した電気特性（電流−電圧特性と容量−電圧特性）がモデル化されたデータファイルである。修正節点法では、回路内のノード電圧や電圧源素子に流れる電流を変数とし、キルヒホッフの電流電圧法則に基づき回路方程式を生成する。このようにして作られた回路方程式は、非線形の連立微分方程式となる。そこで、回路行列作成部２２１は、インプリシット積分法とニュートン反復法を組み合わせて、非線形の連立微分方程式を連立代数方程式に変換し、解析対象回路の回路方程式（係数行列）を得る。詳細には、連立線形方程式はＡｘ＝ｂと表される。ただし、解くべき連立線形方程式がｍ元連立方程式である場合、Ａはｍ行ｍ列の行列、ｘは１行ｍ列の未知数行列、ｂは１行ｍ列の行列を表す。
【００２８】
フィルインパラメータ計数部２２２Ａは、回路行列作成部２２１で作成された係数行列に対し前進消去処理を施し、その過程において係数行列に追加されたフィルインパラメータの数を計数する。
【００２９】
ここで、フィルインパラメータについて説明する。例えば、ガウス消去法における前進消去処理の際、係数行列において元々０であった行列要素（零要素）にある値（非零要素）が入ることがある。この非零要素が追加されることをフィルイン（ｆｉｌｌ−ｉｎ）と呼ぶ。ここでは、フィルインされた非零要素をフィルインパラメータと称す。ここで、前進消去処理とは、係数行列を上三角行列に変換する処理である。例えば係数行列の行列サイズＮが“ｎ”の場合、１列目からｎ−１列目までのｉ行ｊ列（ｉ＜ｊ）の行列要素を順次零要素に変換（行列要素を消去）して上三角行列が生成される。行列要素の消去方法としては、例えばｊ行ｉ列目の要素を零要素に変換する場合、ｉ行目の行列要素にａｊｋ／ａｉｉ（１≦ｋ≦ｎ）を乗じた値をｊ行目の要素から引く処理を行う。例えば、前進消去処理によって図５（ａ）に示すような係数行列（行列サイズＮ＝７）が上三角行列に変換される場合、４行２列の行列要素を削除するときに４行３列の行列要素が非零要素となる。フィルインパラメータ計数部２２２Ａは、零要素から非零要素になった４行３列の行列要素をフィルインパラメータとして認識する。このように図５（ａ）に対し、１列目から６列目まで前進消去処理を行った場合、フィルインパラメータ追加後の係数行列は図５（ｂ）となる。フィルインパラメータ計数部２２２Ａは、図５（ｂ）で追加された行列要素ａ４３、ａ７３、ａ３４、ａ５４、ａ６４、ａ４５、ａ６５、ａ７５、ａ４６、ａ５６、ａ７６、ａ３７、ａ５７、ａ６７をフィルインパラメータとして認識し、その数を計数する。
【００３０】
解析選択部２２３は、後述する計算方法によって直接法による演算回数に基づく値を計算し、その計算結果と解析対象回路に対応する求解方法選択条件２３とを比較して、直接法と反復法のいずれかから最適な求解方法を選択決定する。この際、係数行列におけるフィルインパラメータ数を考慮して直接法による演算回数に基づく値を計算する。
【００３１】
直接法解析処理部２２４は、直接法によって回路行列作成部２２１で作成された係数行列の求解処理を実行し、所望の解析結果を出力する。本実施の形態では、直接法としてガウス消去法が利用される。図３は、直接法解析処理部２２４における前進処理のアルゴリズムの一例である。ここで、Ｎは係数行列のサイズ、ｒｏｗ＿ｅｎｔｒｙは、係数行列の各列で一番先頭にある非零要素のインデックス、ｄｉａｇｏｎａｌ＿ｅｎｔｒｙは、係数行列の各列における対角要素のインデックス、ｃｏｌｕｍｎ＿ｉｎｄｅｘは、各非零要素の行番号、Ａは係数行列である。
【００３２】
反復法解析処理部２２５は、反復法によって回路行列作成部２２１で作成された係数行列の求解処理を実行し、所望の解析結果を出力する。本実施の形態では、反復法としてＢｉＣＧｓｔａｂ法（Ｂｉ−Ｃｏｎｊｕｇａｔｅ  Ｇｒａｄｉｅｎｔ  Ｓｔａｂｉｌｉｚｅｄ：安定化双共役勾配法）が利用される。図４は、反復法解析処理部２２５における求解アルゴリズムの一例である。ここで、Ａは係数行列、ｘ０は初期値ベクトル、ＩＴＲは反復回数である。直接法解析処理部２２４又は反復法解析処理部２２５は、算出される解がネットリストに設定された収束条件を満たすまで、各解析時刻において求解処理を繰り返し実行する。ここで、収束条件とは、上述の求解処理を繰り返し、求められた未知数行列ｘの変位が一定の範囲内に収まることを示す。
【００３３】
以上のように、第１の実施の形態における回路シミュレーション装置１０は、係数行列におけるフィルインパラメータ数を考慮した解析時間に基づく値から係数行列の求解方法を選択する解析選択部２２３を備えている。このため、回路規模に基づいて求解方法を選択するのに比べて、より精度良く高速処理が可能な求解方法を選択できる。
【００３４】
以下に、第１の実施の形態における回路シミュレーション装置１０の求解方法選択動作と、求解方法選択条件２３の詳細を説明する。
【００３５】
（動作）
図６から図９を参照して、本発明による回路シミュレーション装置１０の動作を説明する。図６は、第１の実施の形態における回路シミュレーション装置１０の回路シミュレーション動作を示すフロー図である。先ず、回路行列作成部２２１は、入力装置１４から入力された条件情報に基づき、解析対象回路を特定して、その回路に対応するネットリスト２１を記憶装置１３から取得する（ステップＳ２）。回路行列作成部２２１は、取得したネットリスト２１を用いて連立１次方程式である回路方程式（係数行列）を作成する（ステップＳ４）。この際、回路行列作成部２２１は、作成した係数行列における非零要素の数ａと、係数行列サイズＮを導出する。
【００３６】
フィルインパラメータ計数部２２２Ａは、回路行列作成部２２１で生成された係数行列に対し、前進消去を実施し、フィルインパラメータの数ｂを計数する（ステップＳ６）。解析選択部２２３は、回路行列作成部２２１によって導出された非零要素の数ａ、係数行列のサイズＮ、及びフィルインパラメータ計数部２２２Ａにおいて計数されたフィルインパラメータの数ｂを用いて、係数行列の求解処理における１解析時刻当たりの演算回数を算出する。又、算出した演算回数と求解法選択条件２３とを比較して最適な求解方法を直接法又は反復法から選択する（ステップＳ８）。
【００３７】
解析選択部２２３が、直接法を選択すると、直接法解析処理部２２４が起動し、フィルインパラメータ計数部２２２Ａにおいて前進消去処理された行列式を直接法によって解き、解析対象回路の接点の電位や素子の電流値といった回路特性を解析結果として出力する（ステップＳ１０、Ｓ１４）。図７を参照して、直接法における求解処理の詳細を説明する。直接法解析処理部２２４は、フィルインパラメータ計数部２２２Ａにおいてフィルインパラメータが追加された係数行列に、ネットリストに基づく素子特性を代入する（ステップＳ１０２）。次に、素子特性が代入された係数行列に対し直接法による演算を実行する（ステップＳ１０４）。この際、直接法解析処理部２２４は、算出される解がネットリストに設定された収束条件を満たすまで、ステップＳ１０２及びＳ１０４の処理を繰り返す（ステップＳ１０６）。解が収束すると、その解を出力し、次の解析点（解析時刻）における係数行列の解を演算する（ステップＳ１０８あり、及びＳ１０２からＳ１０６）。設定された全ての解析点において解を算出すると、係数行列の求解処理を終了する（ステップＳ１０８なし）。以上のように、直接法解析処理部２２４は、解析対象回路の係数行列を直接法により解き、各解析点における解析結果を出力する。
【００３８】
解析選択部２２３が、反復法を選択すると、反復法解析処理部２２５が起動し、回路行列作成部２２１において作成された係数行列を反復法によって解き、解析対象回路の接点の電位や素子の電流値といった回路特性を解析結果として出力する（ステップＳ１２、Ｓ１４）。図８を参照して、反復法における求解処理の詳細を説明する。反復法解析処理部２２５は、回路行列作成部２２１において作成された係数行列に、ネットリストに基づく素子特性を代入する（ステップＳ２０２）。次に、素子特性が代入された係数行列に対し直接法による演算を実行する（ステップＳ２０４）。この際、反復法解析処理部２２５は、算出される解がネットリストに設定された収束条件を満たすまで、ステップＳ２０２及びＳ２０４の処理を繰り返す（ステップＳ２０６）。解が収束すると、その解を出力し、次の解析点（解析時刻）における係数行列の解を演算する（ステップＳ２０８あり、及びＳ１０２からＳ１０６）。設定された全ての解析点において解を算出すると、係数行列の求解処理を終了する（ステップＳ１０８なし）。以上のように、反復法解析処理部２２５は、解析対象回路の係数行列を直接法により解き、各解析点における解析結果を出力する。
【００３９】
ここで、解析選択部２２３における解法選択処理の詳細を説明する。求解方法の選択では、直接法による演算回数と反復法による演算回数を比較し、演算回数の少ない求解方法が選択されることが好ましい。このため、上述の式１と式２によって算出される演算回数を比較することが考えられる。一方、近年、解析対象となる電子回路の係数行列のサイズＮは、Ｎ＞＞１であることから、本発明ではＮ＞＞１であると仮定し、式１と式２のそれぞれで最も支配的な項のみに近似した式によって、比較処理が行われる。式１を近似すると式３、式２を近似すると式４となる。
【数３】
2008015841.tif 000005
【数４】
2008015841.tif 000006
【００４０】
係数行列のフィルインパラメータを含まない非零要素の数ａ、フィルインパラメータの数ｂを用いると、式３は式５、式４は式６となる。
【数５】
2008015841.tif 000007
【数６】
2008015841.tif 000008
【００４１】
すなわち、求解方法を選択するための選択式は、式７のようになる。
【数７】
2008015841.tif 000009
解析選択部２２３は、式７において左辺が右辺より大きい場合は反復法を選択し、小さい場合は直接法を選択する。反復回数ＩＴＲは、反復法の性能や与えられる初期値の精度により異なる値となる。このため、式７の右辺に設定する反復回数ＩＴＲは、各解析時刻における反復回数の平均値（平均反復回数）や、後述するような経験則に基づく所定の値が設定される。本実施の形態では、この式７における右辺（反復回数ＩＴＲ×２＝Ｆｉｌｌ）を係数行列の求解法を選択する条件（求解方法選択条件２３）として記憶装置１３に設定される。
【００４２】
行列演算手法である直接法や反復法には複数種の求解方法が存在する。例えば、直接法はガウス消去法の他、ＬＵ分解法、コレスキー分解法等の解法があり、反復法は、ＢｉＣＧｓｔａｂ法の他、ヤコビ法、ガウス・ザイデル法、ＳＯＲ（Ｓｕｃｃｅｓｓｉｖｅ  Ｏｖｅｒ−Ｒｅｌａｘａｔｉｏｎ）法、一般化最小残差法等がある。求解方法を選択する際、式１と式２をそのまま比較するだけでは、直接法としてガウス消去法、反復法としてＢｉＣＧｓｔａｂ法を用いた場合にしか対応できない。しかし、本発明による解析選択部２２３は、式１と式２のそれぞれの最も依存性の高い項を用いて演算回数の比較を行うため、複数種存在する直接法、反復法の求解方法に関係なく高速な行列演算手法（求解方法）を選択することができる。
【００４３】
図９（ａ）、（ｂ）を参照して、求解方法選択条件２３の設定例を説明する。図９（ａ）は、２つの解析対象回路ｄａｔａ１、ｄａｔａ２の係数行列のサイズＮ、フィルインパラメータを含まない非零要素数ａ、フィルインパラメータ数ｂを示す表である。図９（ｂ）は、ｄａｔａ１とｄａｔａ２に対し直接法による回路シミュレーションを実行した場合と、反復法による回路シミュレーションを実行した場合のそれぞれの演算速度を示す表である。図９（ａ）を参照して、ｄａｔａ１の行列サイズＮ（１５１２９１）はｄａｔａ２の行列サイズＮ（８９４６３）より大きい。一方、図９（ｂ）に示されるように、ｄａｔａ１に対しては直接法が反復法より演算速度が速く、ｄａｔａ２に対しては反復法の方が直接法より演算速度が速いことがわかる。すなわち、解析対象回路の行列サイズＮがｄａｔａ１とｄａｔａ２との間にある場合、行列サイズＮの大小関係によって求解方法を選択する手法では、演算速度の遅い求解方法を選択してしまう。
【００４４】
一方、本発明では、図９（ａ）の示すパラメータから式７における左辺を計算すると、ｄａｔａ１は１０．２、ｄａｔａ２は１７６．４となる。この場合、求解方法選択条件２３として１０．２と１７６．４の間の値が設定される。このように求解方法選択条件２３が設定されることで、解析選択部２２３は、行列サイズＮがｄａｔａ１とｄａｔａ２の間にある電子回路に対しても高速演算可能な行列演算手法を正確に選択することができる。
【００４５】
以上のように、第１の実施の形態における回路シミュレーション装置１０は、係数行列の行列サイズＮ、非零要素数ａ、及びフィルインパラメータ数ｂを用いて、高速演算可能な係数行列の求解方法を選択する。すなわち、係数行列に追加されたフィルインパラメータ数に基づいて求解方法を選択する。このため、反復法と直接法のうち、高速に演算可能な求解方法を精度良く選択できる。これにより、直接法と反復法の両手法を適用した回路シミュレータが可能となる。通常、大きな行列サイズのみを解析対象としたシミュレータ（例えばデバイスシミュレータ）では、大規模演算に対して高速に演算可能な反復法のみを適用することができる。しかし、反復法は小規模演算に対しては直接法より演算速度が遅くなる。
【００４６】
回路シミュレータの解析対象となる回路は、大規模回路のみとは限らず小規模回路も含まれるため、反復法のみを利用するよりも、解析対象となる回路規模に応じて直接法と反復法を切り替えて利用する回路シミュレータの登場が期待される。このため、回路シミュレータのような小規模回路から大規模回路までを扱うシミュレータに反復法が適用される場合、解析対象回路に応じて直接法と反復法を切り替えて利用する回路シミュレーション装置が必要とされる。この際、係数行列のサイズだけを考慮して求解方法が選択されると、演算速度の低速な求解方法を選択する場合がある。本発明では、フィルインパラメータ数を考慮して求解方法を選択するため、より正確に高速演算可能な求解方法を選択して解析を実行することができる。このため、従来、適用されていなかった電子回路シミュレータに反復法を適用することが可能となる。
【００４７】
２．第２の実施の形態
第２の実施の形態における回路シミュレーション装置１０は、解析対象回路の係数行列を作成する前に、係数行列の非零要素数とフィルインパラメータ数を予測し、この予測値に基づいて直接法と反復法のどちらかを選択して回路シミュレーションを実行する。以下、図１０及び図１１を参照して、本発明による回路シミュレーション装置１０の第２の実施の形態を説明する。
【００４８】
（構成）
第２の実施の形態における回路シミュレーション装置１０は、第１の実施の形態における回路解析プログラム２２に計算時間予測処理部２２６を更に備える構成である。又、第１の実施の形態におけるフィルインパラメータ計数部２２２Ａに替えてフィルインパラメータ作成部２２２Ｂを備える。フィルインパラメータ作成部２２２Ｂは、係数行列の求解方法として直接法が選択された後に、当該係数行列にフィルインを追加する。計算時間予測処理部２２６は、係数行列の作成前に、解析対象回路の行列回路の行列サイズ、フィルインパラメータを除く非零要素数、フィルインパラメータ数を予測する。詳細には、計算時間予測処理部２２６は、例えば、特開平０９−３１９７８４号公報に記載の技術のように、解析対象回路に対応するネットリスト２１を用いて有向グラフを作成し、この有向グラフにより解析対象回路の行列回路の行列サイズ、フィルインパラメータを除く非零要素数、フィルインパラメータ数を予測する。
【００４９】
第２の実施の形態における解析選択部２２３は、計算時間予測処理部２２６によって予測された値をそれぞれ、行列サイズＮ、非零要素数ａ、フィルインパラメータ数ｂとして式７より高速演算できる求解方法を直接法と反復法から選択する。
【００５０】
（動作）
図１１を参照して、第２の実施の形態における回路シミュレーション装置１０の動作を説明する。図１１は、第２の実施の形態におけるシミュレーション装置１０の回路シミュレーション動作を示すフロー図である。先ず、回路行列作成部２２１は、第１の実施の形態と同様に、入力装置１４から入力された条件情報に基づき、解析対象回路を特定して、その回路に対応するネットリスト２１を記憶装置１３から取得する（ステップＳ２２）。計算時間予測処理部２２６では、取得したネットリスト２１を参照して、解析対象回路の回路行列を、非ゼロ要素ａｉｊの存在を辺（ｊ，ｉ）として表す有向グラフとして表現し、係数行列サイズＮと非零要素数ａを得る。ここで、非ゼロ要素ａｉｊとは、回路行列のｉ行ｊ列にある非零要素ａである。次に、ＬＵ（Ｌｏｗｅｒ／Ｕｐｐｅｒ）分解においてｉ番目の変数を消去する際に更新対象となる辺（ｋ，ｉ）、（ｉ，ｌ）の節点ｋと節点ｌの任意の組み合わせからなる辺（ｋ，ｌ）の集合の中で、回路行列を表す有向グラフに存在しない辺をフィルインパラメータとしてカウントし、有向グラフに追加することでフィルインパラメータ数ｂの予想値を得る（ステップＳ２４）。解析選択部２２３は、計算時間予測処理部２２６において算出された予測値に基づき、第１の実施の形態と同様に、係数行列の求解方法を選択する（ステップＳ２６）。
【００５１】
解析選択部２２３が直接法を選択すると、回路行列作成部２２１は、ステップＳ２２において取得したネットリスト２１を用いて連立１次方程式である回路方程式（係数行列）を作成する（ステップＳ２８）。フィルインパラメータ作成部２２２Ｂは、回路行列作成部２２１で生成された係数行列に対し、前進消去を実施する（ステップＳ２９）。この際、フィルインパラメータが係数行列に追加される。
【００５２】
次に、直接法解析処理部２２４は、ステップＳ２９にて前進消去処理された係数行列を直接法によって解き、解析対象回路の接点の電位や素子の電流値といった回路特性を解析結果として出力する（ステップＳ３０、Ｓ３６）。直接法解析処理部２２４における解析処理の詳細は、第１の実施の形態と同様であるので説明を省略する。
【００５３】
解析選択部２２３が反復法を選択すると、回路行列作成部２２１は、ステップＳ２２において取得したネットリスト２１を用いて連立１次方程式である回路方程式（係数行列）を作成する（ステップＳ３２）。次に、反復法解析処理部２２５は、この係数行列を反復法によって解き、解析対象回路の接点の電位や素子の電流値といった回路特性を解析結果として出力する（ステップＳ３４、Ｓ３６）。反復法解析処理部２２５における解析処理の詳細は、第１の実施の形態と同様であるので説明を省略する。
【００５４】
以上のように、第２の実施の形態における回路シミュレーション装置１０は、係数行列を作成する前に、係数行列の求解方法を選択するために必要なパラメータを予測し、これを用いて求解方法を決定する。このため、フィルインパラメータを生成する前進処理を求解法決定後に実施できるため、求解法決定までの時間が短縮できる。又、反復法が選択使用される場合、不要な前進処理を実行せずに回路シミュレーションを実行することができる。
【００５５】
本発明による回路シミュレーション装置１０は、直接法と反復法のうち、高速な解析手法を自動且つ正確に選択することができる。これにより、演算量の少ない小規模回路から演算量の大きな大規模回路を解析対象とし、且つ高速解析が可能な回路シミュレーション装置を提供することができる。
【００５６】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。第２の実施の形態では、特開平０９−３１９７８４号公報に記載の技術を一例に、計算時間予測処理部２２６は係数行列サイズＮ、非零要素数ａ、フィルインパラメータ数ｂの予想値を得たが、より正確に、又はより高速にこれらの予想値を得ることができればこの方法に限らない。
【図面の簡単な説明】
【００５７】
【図１】図１は、本発明による回路シミュレーション装置の構成を示す構成図である。
【図２】図２は、本発明による回路解析プログラムの第１の実施の形態における構成を示すブロック図である。
【図３】図３は、本発明に係る直接法における前進処理のアルゴリズムの一例である。
【図４】図４は、本発明に係る反復法のアルゴリズムの一例である。
【図５】図５は、前進消去処理にともない係数行列に追加されるフィルインパラメータを説明するための図である。
【図６】図６は、本発明による回路解析処理の第１の実施の形態における動作を示すフローチャートである。
【図７】図７は、本発明による直接法解析処理部における直接法による演算処理の動作を示すフローチャートである。
【図８】図８は、本発明による反復法解析処理部における反復法による演算処理の動作を示すフローチャートである。
【図９】図９は、２つの電子回路について直接法及び反復法による回路解析時間の違いを示すシミュレーション結果の一例である。
【図１０】図１０は、本発明による回路解析プログラムの第２の実施の形態における構成を示すブロック図である。
【図１１】図１１は、本発明による回路解析処理の第２の実施の形態における動作を示すフローチャートである。
【図１２】図１２は、直接法と反復法の行列サイズに対する１解析時刻における演算回数のシミュレーション結果の一例である。
【符号の説明】
【００５８】
１０：回路シミュレーション装置
１１：ＣＰＵ
１２：ＲＡＭ
１３：記憶装置
１４：入力装置
１５：出力装置
２１：ネットリスト
２２：回路解析プログラム
２３：求解方法選択条件
２２１：回路行列作成部
２２２ａ：フィルインパラメータ計数部
２２２ｂ：フィルインパラメータ作成部
２２３：解析選択部
２２４：直接法解析処理部
２２５：反復法解析処理部
２２６：計算時間予測処理部
【図１】
2008015841.tif 000010
【図２】
2008015841.tif 000011
【図３】
2008015841.tif 000012
【図４】
2008015841.tif 000013
【図５】
2008015841.tif 000014
【図６】
2008015841.tif 000015
【図７】
2008015841.tif 000016
【図８】
2008015841.tif 000017
【図９】
2008015841.tif 000018
【図１０】
2008015841.tif 000019
【図１１】
2008015841.tif 000020
【図１２】
2008015841.tif 000021