(57)【要約】【課題】収束までに要するニュートン反復法の反復回数を減らすこと。【解決手段】回路シミュレーションシステムは、回路データ、解析条件データ、及び出力データを格納する格納手段と、前記回路データと前記解析条件データを前記格納手段から読み出し、求解処理のための初期値と収束条件を設定する初期値設定手段と、前記回路データに基づいて電圧変数と電流変数の各々に対して回路方程式を生成し、前記初期値を用いて前記求解処理を実行して解を求める処理手段と、前記電圧変数に関してのみ前記解が前記収束条件を満たすか否かの収束判定を行う収束判定手段と、前記収束条件を満たすと判定されたとき、前記解を前記出力データ内に格納する出力手段と、前記収束条件を満たさないと判定されたとき、前記解を前記初期値として前記求解処理を実行して解を求めるように前記処理手段を制御する反復制御手段とを具備する。【選択図】図６
2009157623.tif 000002
【特許請求の範囲】
【請求項１】
回路データ、解析条件データ、及び出力データを格納する格納手段と、
前記回路データと前記解析条件データを前記格納手段から読み出し、求解処理のための初期値と収束条件を設定する初期値設定手段と、
前記回路データに基づいて電圧変数と電流変数の各々に対して回路方程式を生成し、前記初期値を用いて前記求解処理を実行して解を求める処理手段と、
前記電圧変数に関してのみ前記解が前記収束条件を満たすか否かの収束判定を行う収束判定手段と、
前記収束条件を満たすと判定されたとき、前記解を前記出力データ内に格納する出力手段と、
前記収束条件を満たさないと判定されたとき、前記解を前記初期値として前記求解処理を実行して解を求めるように前記処理手段を制御する反復制御手段と
を具備する
回路シミュレーションシステム。
【請求項２】
請求項１に記載の回路シミュレーションシステムにおいて、
複数の解析点のうち現在の解析点が前記電圧変数の変化点の近傍であるか否かを判定する近傍判定手段と、
前記現在の解析点が前記電圧変数の変化点の近傍であると判定されたとき、前記電圧変数に加えて、前記電流変数についても前記収束判定を行うように前記収束判定手段を制御する収束判定制御手段と
を更に具備する
回路シミュレーションシステム。
【請求項３】
請求項２に記載の回路シミュレーションシステムにおいて、
前記格納手段は、収束判定ステップ数データを格納し、
前記近傍判定手段は、前記収束判定ステップ数データと前記電圧変数の変化点とから前記現在の解析点が前記電流変数においても前記収束判定を行うべき前記変化点の近傍であるか否かを判定する
回路シミュレーションシステム。
【請求項４】
請求項２に記載の回路シミュレーションシステムにおいて、
前記電流変数について前期収束判定を行うべき前記変化点の近傍を、前記電圧変数の変化の割合によって自動的に調整する調整手段
を更に具備する
回路シミュレーションシステム。
【請求項５】
回路データと解析条件データを格納手段から読み出して、求解処理のための初期値と収束条件を設定するステップと、
前記回路データに基づいて電圧変数と電流変数の各々に対して回路方程式を生成するステップと、
前記初期値を用いて前記求解処理を実行して解を求める求解ステップと、
前記電圧変数に関してのみ前記解が前記収束条件を満たすか否かの収束判定を行うステップと、
前記収束条件を満たすと判定されたとき、前記解を出力データとして前記格納手段に格納するステップと、
前記収束条件を満たさないと判定されたとき、前記解を前記初期値として前記求解ステップと前記収束判定を行うステップを実行するステップと
を具備する
回路シミュレーション方法。
【請求項６】
請求項５に記載の回路シミュレーション方法において、
複数の解析点のうち現在の解析点が前記電圧変数の変化点の近傍であるか否かを判定するステップと、
前記現在の解析点が前記電圧変数の変化点の近傍であると判定されたとき、前記電圧変数に加えて、前記電流変数についても前記収束判定を行うステップと
を更に具備する
回路シミュレーション方法。
【請求項７】
請求項６に記載の回路シミュレーション方法において、
前記近傍であるか否かを判定するステップは、
ユーザにより指定された収束判定ステップ数データと前記電圧変数の変化点とから前記現在の解析点が前記電流変数においても前記収束判定を行うべき前記変化点の近傍であるか否かを判定するステップを具備する
回路シミュレーション方法。
【請求項８】
請求項６に記載の回路シミュレーション方法において、
前記電流変数について前期収束判定を行うべき前記変化点の近傍を、前記電圧変数の変化の割合によって自動的に調整するステップ
を更に具備する
回路シミュレーション方法。
【請求項９】
回路データと解析条件データを格納部から読み出し、求解処理のための初期値と収束条件を設定する初期値設定機能と、
前記回路データに基づいて電圧変数と電流変数の各々に対して回路方程式を生成し、前記初期値を用いて前記求解処理を実行して解を求める処理機能と、
前記電圧変数に関してのみ前記解が前記収束条件を満たすか否かの収束判定を行う収束判定機能と、
前記収束条件を満たすと判定されたとき、前記解を前記出力データ内に格納する出力機能と、
前記収束条件を満たさないと判定されたとき、前記解を前記初期値として前記求解処理を実行して解を求めるように前記処理機能を制御する反復制御機能と
を実現するための、計算機読み取り可能な回路シミュレーションプログラム。
【請求項１０】
請求項９に記載の回路シミュレーションプログラムにおいて、
複数の解析点のうち現在の解析点が前記電圧変数の変化点の近傍であるか否かを判定する近傍判定機能と、
前記現在の解析点が前記電圧変数の変化点の近傍であると判定されたとき、前記電圧変数に加えて、前記電流変数についても前記収束判定を行うように前記収束判定手段を制御する収束判定制御機能と
を更に実現するための、計算機読み取り可能な
回路シミュレーションプログラム。
【請求項１１】
請求項１０に記載の回路シミュレーションプログラムにおいて、
ユーザにより指定された収束判定ステップ数データと前記電圧変数の変化点とから前記現在の解析点が前記電流変数においても前記収束判定を行うべき前記変化点の近傍であるか否かを判定する機能
を更に実現するための、計算機読み取り可能な
回路シミュレーションプログラム。
【請求項１２】
請求項１０に記載の回路シミュレーションプログラムにおいて、
前記電流変数について前期収束判定を行うべき前記変化点の近傍を、前記電圧変数の変化の割合によって自動的に調整する調整機能
を更に実現するための、計算機読み取り可能な
回路シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の回路シミュレーションに関し、特に半導体集積回路の設計工程における回路シミュレーション方法、それに使用される回路シミュレーションシステム、および回路シミュレーションプログラムに関する。
【背景技術】
【０００２】
近年、半導体集積回路は大規模化してきており、半導体集積回路の設計・開発において電気回路の解析に要する時間が増大してきている。その電気回路の解析には回路シミュレーションプログラムが必要であり、例えばＳＰＩＣＥという回路シミュレーションプログラムがしばしば使用されている。このＳＰＩＣＥにおける解析手法は、すでに公知の技術であり、Ｗｅｂ  Ｓｉｔｅでも一般に公開されている技術（非特許文献１）であり、フロー図としての出典は無いが、ＳＰＩＣＥのソースコードは公開されている。
【０００３】
ＳＰＩＣＥを用いて回路を高速に解析する回路シミュレーション方法が、例えば特開平１０−２２２５５５号公報（特許文献１）、特開平１１−１１０４２０号公報（特許文献２）、特開２００６−１３３９９４号公報（特許文献３）に開示されている。特開平１０−２２２５５５号公報では、対象回路が複数の部分回路に分割されて解析され、特開平１１−１１０４２０号公報では、精度パラメータを変化させて、事前に解析が行なわれる。特開２００６−１３３９９４号公報は、電流値と電圧値のいずれか一方を算出すると言っている。
【０００４】
ＳＰＩＣＥに代表される回路シミュレーションプログラムにおいては、キルヒホッフの電圧則、電流則に基づき、その対象回路を表わすデータから、回路の接続関係を表す回路方程式が作成され、その方程式が行列として表現され、行列の演算を行うことで対象回路が解析される。つまり、回路に含まれる素子およびその接続関係の情報に基づいて、回路内の各部における節点の電圧（＝電圧変数）や素子を流れる電流（＝電流変数）の値を解（＝未知変数）Ｘとする方程式Ｆ（Ｘ）＝０が定められる。
【０００５】
回路方程式の求解においては、一般的には、ニュートン反復法等の反復解法が利用されている。ニュートン反復法による反復解法とは、反復回数を規定する変数をｉとすると、反復の第（ｉ−１）回目の未知変数Ｘ（ｉ−１）の値を用いて、第ｉ回目の未知変数Ｘ（ｉ）の値を、これを繰り返すことにより、方程式Ｆ（Ｘ）＝０を満たす真の解の近似解を求める手法である。求められた未知変数Ｘの変化量が予め指定された精度の許容範囲内に収まることを収束といい、そのとき解が求められたとして処理が終了する。
【０００６】
図４は、従来の回路シミュレーションシステムの構成を示すブロック図である。図４を参照して、従来の回路シミュレーションシステムは、記憶部１と、解析処理部２と、計算結果出力部７とを備えている。
【０００７】
記憶部１は、ハードディスク等に例示され、入出力インターフェース４に接続される。記憶部１には、回路に含まれる素子やその接続関係を示した情報等の回路構成を特定するための情報である回路データ１０と、解析開始時刻や解析終了時刻などの解析を行なうための設定情報である解析条件データ２０が記憶されている。また、解析結果が波形データ４０として記憶部１に格納される。
【０００８】
解析処理部２は、ＣＰＵ３と入出力インターフェース４とＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５と及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６とを有する。解析処理部２は、ＲＯＭ５に格納された回路シミュレーションプログラムがＣＰＵ３経由でＲＡＭ６に読み込まれてＣＰＵ３により実行される。実行結果は入出力インターフェース４を介して記憶部１に格納され、計算結果出力部に出力される。
【０００９】
計算結果出力部７は、ディスプレイやプリンタ、及びファイルシステム等に例示され、入出力インターフェース４に接続され、解析処理部２における解析結果を出力する。
【００１０】
次に、従来の回路シミュレーションシステムの動作方法を説明する。図１は、従来の回路シミュレーション方法を示すフローチャートである。
【００１１】
まず、回路シミュレーションが始められる（ステップＳ１００）。
回路データ１０と解析条件データ２０は、記憶部１より読み出される（ステップＳ１０１）。上記のように、回路データは、回路の構成を特定する情報であり、例えば、回路に含まれる素子やその接続関係などを示す情報である。また、解析条件データは、解析を行なうための設定情報であり、例えば、精度の許容範囲などを示す情報を含んでいる。
【００１２】
次に、ニュートン反復法の初期値が設定される。また、ニュートン反復法の反復回数を示すカウンタ変数ｉが１にセットされる（ステップＳ１０２）。
【００１３】
入力された回路データ１０に基づいて回路方程式が作成され、ニュートン反復法により回路方程式を近似的に解く近似求解処理が行われる（ステップＳ１０３）。回路方程式の求解処理は行列計算であり、回路規模が大きいほど行列の規模も増大し、演算回数は指数的に多くなる。具体的には、回路行列を三角行列の積に分解するＬＵ（Ｌｏｗｅｒ／Ｕｐｐｅｒ）分解において、変数を消去するときの更新演算回数であり、一般的に行列サイズの３乗のオーダで増えることがわかっている。
【００１４】
近似求解処理において求められた回路方程式の解が、反復計算によって収束したかが判定される（ステップＳ１０４）。収束判定処理結果に基づいて、条件分岐が行なわれる（ステップＳ１０５）。
【００１５】
収束したと判断された場合（ステップＳ１０５でＹｅｓ）、回路方程式の解が、解析値として記憶部１に波形データ４０として保存される（ステップＳ１０８）。その後、処理は終了となる（ステップＳ１０９）。
【００１６】
収束していない場合（ステップＳ１０５でＮｏ）、カウンタ変数ｉが、既定の反復回数ＩＴＬ１を上回っているかどうかが判定される（ステップＳ１０６）。上限を超えている場合（ステップＳ１０６でＹｅｓ）、エラーと判定され、処理は終了する（ステップＳ１０７）。上限を超えていない場合（ステップＳ１０６でＮｏ）、ステップＳ１１３が実行される。
【００１７】
ステップＳ１１３では、カウンタ変数ｉが１だけインクリメントされ（ステップＳ１１３）、処理フローは、再びステップＳ１０３へ戻る。前回のステップＳ１０３で計算された値が初期値として代入され、前回と同様にして求解処理が行われる。
【００１８】
従って、求解に要する演算回数とは、以下のように表わすことができる。
（求解に要する演算回数）
＝（ニュートン反復法の反復１回当たりの演算回数）×（収束までに要する反復回数）
ニュートン反復法１回あたりの演算回数は、ステップＳ１０３で求まり、収束までに要するニュートン反復法の反復回数は、ステップＳ１０８の時点のカウンタ変数ｉの値として求まり、求解に要する演算回数はこれらの積で表すことができる。求解に要する演算回数が回路シミュレーション時間を左右する。
【００１９】
図２は、図１のステップＳ１０４の収束判定処理を詳細に示すフローチャートである。
まず、ステップＳ１０４の処理が開始される（ステップＳ５００）と、収束変数フラグｅｆｌｇが０に初期化される（ステップＳ５０９）。収束変数フラグｅｆｌｇは、未知変数Ｘの各変数の値において、収束していない変数があるかを示しており、収束変数フラグｅｆｌｇが「１」の場合、未知変数Ｘに含まれる１つ以上の変数が収束していない状態であることを表わし、変数フラグがｅｆｌｇが「０」の場合、すべての変数が収束している状態であることを表わしている。
【００２０】
次に、未知変数Ｘに含まれる全ての変数に対して、以下の処理が行われる。
各回路方程式の変数である未知変数Ｘに含まれる変数ｘについて、現在の解ｘ（ｉ）と、前回の解ｘ（ｉ−１）の値との差分が、許容範囲内であるか否かについて、全ての変数に渡って評価される（ステップＳ５０１）。
【００２１】
収束していない場合は、未知変数Ｘの中に非収束の変数が存在すると判定し、収束変数フラグｅｆｌｇが「１」に設定される（ステップＳ５０７）。
【００２２】
その後、未判定の変数があるかを判定する（ステップＳ５０２）。未判定の変数がある場合（ステップＳ５０２でＹｅｓ）、次の変数が評価される（ステップＳ５０８）。これを繰り返すことで、未知変数Ｘに含まれる全ての変数について順番に収束判定がなされる。
【００２３】
未判定の変数がない場合（ステップＳ５０２でＮｏ）、収束判定が終了する（ステップＳ５０４）。
【００２４】
図３は、収束判定結果を示す表である。図３において「ｉ」はニュートン反復法のカウンタ変数の値を表している。「Ｖ」、「Ｉ」は、未知変数の集合Ｘに含まれる電圧変数の集合をＶ（Ｖ＝｛ｘｖ｜ｘｖは電圧変数であり、かつＸはｘｖを含む｝）、電流変数の集合をＩ（Ｉ＝｛ｘｉ｜ｘｉは電圧変数であり、かつＸはｘｉを含む｝）と置いたとき、各集合における全要素について、「○」は収束している場合、「×」は収束していない場合を表している。また、ここで、ＸはＶとＩの論理和である。「判定」、ステップＳ１０４の収束判定結果を示している。
【００２５】
まず、図１のステップＳ１０３において、ニュートン反復法のカウンタ変数ｉが反復回数の上限ＩＴＬ１を超えていない値（ｎ−１）（ｎは自然数）まで変数集合Ｖ、Ｉは非収束である。このとき、カウンタ変数ｉがｎにインクリメントされたとき、すなわち、これからｎ回目の反復処理を行おうとしているとき、図３のＶ、Ｉの集合は非収束である。ステップＳ１０３で、回路方程式の作成と、（ｎ−１）回目の解を初期値としたニュートン反復法による求解処理が行われる。
【００２６】
次に、ステップＳ１０４において、Ｘｎ−Ｘ（ｎ−１）の値が許容範囲内に収まっているか、すなわち未知変数Ｘに含まれる変数ｘについて、現在の解ｘ（ｉ）と前回の解ｘ（ｉ−１）の値との差分が、許容範囲内であるかが判定される。ここで、図３の集合Ｖは収束しているが、集合Ｉは収束していないので、ステップＳ１０４は非収束と判定される。このため、再び、（ｎ＋１）回目以降反復処理が実行される。こうして、集合Ｖ、集合Ｉに含まれる解が全て収束するまで、ニュートン反復法が繰り返し実行され、求解までに要する反復回数は、ｍ（ｎ＜ｍ）となる。
【００２７】
ステップＳ１０４における収束判定により、ステップＳ１０３での求解処理が繰り返され、電圧変数が収束していてもすべての変数が収束するまで求解処理と判定処理が繰り返えされる。
以上のように、従来の回路シミュレーション方法では、収束判定を求める解や変数の変化に対し、予め決められた判定が行なわれるので、反復回数が増加し、回路規模に依存して回路シミュレーション時間が増大するという問題がある。
【００２８】
【特許文献１】特開平１０−２２２５５５号公報
【特許文献２】特開平１１−１１０４２０号公報
【特許文献３】特開２００６−１３３９９４号公報
【非特許文献１】ｈｔｔｐ：／／ｅｍｂｅｄｄｅｄ．ｅｅｃｓ．ｂｅｒｋｅｌｅｙ．ｅｄｕ／ｐｕｂｓ／ｄｏｗｎｌｏａｄｓ／ｓｐｉｃｅ／ｉｎｄｅｘ．ｈｔｍ
【発明の開示】
【発明が解決しようとする課題】
【００２９】
したがって、未知変数Ｘに対して、変数の解に応じて収束判定の方法を変えることにより、収束までに要するニュートン反復法の反復回数が減らされ、全体として求解に要する演算回数が減らされた回路シミュレーション方法、そのための回路シミュレーションシステム、および回路シミュレーションプログラムが望まれている。
【課題を解決するための手段】
【００３０】
以下に、［発明の実施の形態］で使用する番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、[特許請求の範囲]の記載と発明の実施の形態の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００３１】
本発明の第１実施例では、回路シミュレーションシステムは、回路データ（１０）、解析条件データ（２０）、及び出力データ（４０）を格納する格納手段（１）と、前記回路データ（１０）と前記解析条件データ（２０）を前記格納手段（１）から読み出し、求解処理のための初期値と収束条件を設定する初期値設定手段（２）と、前記回路データに基づいて電圧変数と電流変数の各々に対して回路方程式を生成し、前記初期値を用いて前記求解処理を実行して解を求める処理手段（２）と、前記電圧変数に関してのみ前記解が前記収束条件を満たすか否かの収束判定を行う収束判定手段（２）と、前記収束条件を満たすと判定されたとき、前記解を前記出力データ（４０）内に格納する出力手段（２）と、前記収束条件を満たさないと判定されたとき、前記解を前記初期値として前記求解処理を実行して解を求めるように前記処理手段（２）を制御する反復制御手段（２）とを具備する。
【００３２】
本発明の第２実施例では、回路シミュレーション方法は、回路データ（１０）と解析条件データ（２０）を格納手段（１）から読み出して、求解処理のための初期値と収束条件を設定するステップと、前記回路データ（１０）に基づいて電圧変数と電流変数の各々に対して回路方程式を生成するステップと、前記初期値を用いて前記求解処理を実行して解を求める求解ステップと、前記電圧変数に関してのみ前記解が前記収束条件を満たすか否かの収束判定を行うステップと、前記収束条件を満たすと判定されたとき、前記解を出力データ（４０）として前記格納手段に格納するステップと、前記収束条件を満たさないと判定されたとき、前記解を前記初期値として前記求解ステップと前記収束判定を行うステップを実行するステップとを具備する。
【００３３】
本発明の第３実施例では、計算機読み取り可能な回路シミュレーションプログラムは、回路データと解析条件データを格納部から読み出し、求解処理のための初期値と収束条件を設定する初期値設定機能と、前記回路データに基づいて電圧変数と電流変数の各々に対して回路方程式を生成し、前記初期値を用いて前記求解処理を実行して解を求める処理機能と、前記電圧変数に関してのみ前記解が前記収束条件を満たすか否かの収束判定を行う収束判定機能と、前記収束条件を満たすと判定されたとき、前記解を前記出力データ内に格納する出力機能と、前記収束条件を満たさないと判定されたとき、前記解を前記初期値として前記求解処理を実行して解を求めるように前記処理機能を制御する反復制御機能とを実現するためのものである。
【発明の効果】
【００３４】
以上のように、本発明では、未知変数Ｘに対して、収束判定を変数の解に応じて判定方法を変えることにより、収束までに要するニュートン反復法の反復回数を減らし、全体として求解に要する演算回数を減らす回路シミュレーション方法、回路シミュレーションシステムおよび回路シミュレーションプログラムが提供される。
【発明を実施するための最良の形態】
【００３５】
以下に添付図面を参照して、本発明の実施形態による回路シミュレーション方法とそのためのシステムについて説明する。
図４は、本発明による回路シミュレーションシステムの概略構成例を示すブロック図である。この概略構成は、従来のシステム構成図と同等である。図４を参照して、従来の回路シミュレーションシステムは、記憶部１と、解析処理部２と、計算結果出力部７とを備えている。
【００３６】
記憶部１は、ハードディスク等に例示され、入出力インターフェース４に接続される。記憶部１には、回路に含まれる素子やその接続関係を示した情報等の回路構成を特定するための情報である回路データ１０と、解析開始時刻や解析終了時刻などの情報等の解析を行なうための設定情報である解析条件データ２０が記憶されている。
【００３７】
回路データ１０は、素子の情報とその素子が接続する節点の情報を含んでいる。例えば、v1という1[v]の電圧源素子がn1とn2の節点に接続しているというような情報である。解析条件データ２０は、許容範囲を示す値を含んでいる。例えば、誤差許容値であるreltol、電圧絶対誤差許容値であるvntolというパラメータなどを含み、それらに基づいて「許容範囲」が決定される。
【００３８】
解析処理部２は、ＣＰＵ３と入出力インターフェース４とＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５と及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６とを有する。解析処理部２は、ＲＯＭ５に格納された回路シミュレーションプログラムがＣＰＵ３経由でＲＡＭ６に読み込まれてＣＰＵ３により実行されることで実現される。実行結果は入出力インターフェース４を介して記憶部１に波形データ４０として格納され、計算結果出力部７に出力される。
【００３９】
計算結果出力部７は、ディスプレイやプリンタ、及びファイルシステム等に例示され、解析処理部２の入出力インターフェース４に接続され、解析処理部２における解析結果を出力する。
【００４０】
次に、従来の回路シミュレーションシステムの動作方法を説明する。図５は、本発明の第１実施形態において、回路シミュレーション方法を示すフローチャートである。
図５を参照して、回路データ＆解析条件読み込み処理（ステップＳ３０１）、ニュートン反復法初期値設定処理（ステップＳ３０２）、回路方程式作成＆求解処理（ステップＳ３０３）、収束判定処理（ステップＳ３０４）、収束判定結果による条件分岐（ステップＳ３０５）、反復回数の上限判定（ステップＳ３０６）、エラー処理（ステップＳ３０７）、解析結果出力部（ステップＳ３０８）、ニュートン反復法のカウンタ変数をインクリメントする処理（ステップＳ３１３）を有している。
【００４１】
図５に示すフローチャートを参照して、本発明の第１実施形態に係る回路シミュレーション方法の手順を説明する。まず、ＣＰＵ３は、回路シミュレーションプログラムを記憶部１から読み出し、ＲＡＭ３に格納して、実行することにより回路シミュレーションが始められる（ステップＳ３００）。記憶部１から回路データ１０と解析条件データ２０が読み出される（ステップＳ３０１）。
【００４２】
次に、解析条件データに基づいてニュートン反復法の初期値が設定される。また、ニュートン反復法の反復回数を示すカウンタ変数ｉに１がセットされる（ステップＳ３０２）。入力された回路データ１０に基づいて、回路方程式が作成されてその係数が行列としてＲＡＭ３に展開され、回路方程式の解を求める求解処理が行なわれる（ステップＳ３０３）。求解処理は、全ての変数について実行される。
【００４３】
ステップＳ３０３において求められた回路方程式の解が、解析条件データに基づいて予め決められた収束判定値以内であるか否かに基づいて反復計算によって収束したか否かが判定される（ステップＳ３０４）。この判定処理は、ニュートン反復法の反復ごとに毎回実施される。但し、反復の２回目以降は、前回の解と今回の解の差が収束判定値以内であるか否かに基づいて行われる。収束判定結果に基づいて条件分岐が行なわれる（ステップＳ３０５）。具体的には、ステップＳ３０４において設定された変数フラグｅｆｌｇが「０」であるか否かが判定される。
【００４４】
収束したと判断された場合、回路方程式の解が、解析値として波形データ４０に保存され（ステップＳ３０８）、処理は終了となる（ステップＳ３０９）。
収束していない場合、ニュートン反復法のカウンタ変数ｉが、解析条件データに基づいて予め決められた反復回数ＩＴＬ１を上回っているかどうかが判定される（ステップＳ３０６）。上限を超えていない場合、カウンタ変数ｉをインクリメントし（ステップＳ３１３）、処理フローは再びステップＳ３０３へ戻り、前回のステップＳ３０３で計算された値が初期値として代入され、前回と同様にして求解処理が行われる。
【００４５】
図６は、図５のステップＳ３０４の収束判定処理の詳細に示すフローチャートである。
まずステップＳ３０４の処理が開始される（ステップＳ５００）と、変数フラグｅｆｌｇが「０」に初期化される（ステップＳ５０９）。変数フラグｅｆｌｇは、未知変数Ｘの各変数が、収束しているのか否かを示す。変数負ラブｅｆｌｇが「１」の場合、未知変数Ｘに含まれる１つ以上の変数が収束していないことを表わし、ｅｆｌｇが「０」の場合、すべての変数が収束していることを表わしている。
【００４６】
未知変数Ｘに含まれる全ての変数に対して、以下の処理が行われる。
まず、現在の変数が電流変数であるか否かが判定され（ステップＳ５０５）、電流変数でない場合、収束判定が行われる（ステップＳ５０１）。
【００４７】
収束していない場合は、未知変数Ｘの中に非収束の変数があると判定し、変数フラグｅｆｌｇが「１」に設定される（ステップＳ５０７）。続いてステップＳ５０２が実行される。一方、電流変数である場合、ステップＳ５０２が実行される。
【００４８】
ステップＳ５０２では、未判定の変数が存在するか否かが判定される。未判定の変数が存在する場合（ステップＳ５０２でＹｅｓ）、次の変数が選択され（ステップＳ５０８）、処理フローは、ステップＳ５０５に戻り、次の変数について判定が実行される。これを繰り返すことで、未知変数Ｘに含まれる全ての変数について順番に収束判定がなされる。
未判定の変数がない場合（ステップＳ５０２でＮｏ）、収束判定が終了する（ステップＳ５０４）。
従って、未知変数Ｘに対して、変数に応じて収束判定方法が変わることになる。
【００４９】
図７は、本実施形態に係る回路シミュレーション方法における収束判定結果を示す表である。図７は、図３に示される従来の回路シミュレーション方法の収束判定結果に対して、本実施形態に係る回路シミュレーション方法を実行した場合の結果であり、図３と図７は、同じ回路について解析を行なっている。
まず、図５における、ステップＳ３０３において、ニュートン反復法のカウンタ変数ｉが反復回数の上限ＩＴＬ１を超えていない「ｎ」（自然数）という値になっている状態とする。すなわち、これからｎ回目の反復処理が行われるとき、図３における場合と同様に、集合Ｖ，Ｉは非収束である。
【００５０】
ステップＳ３０３で、回路方程式の作成とｎ−１回目の解を初期値としたニュートン反復法による求解処理が行われる。
次に、ステップＳ３０４において、｜Ｘｎ−Ｘ（ｎ−１）｜が許容範囲内に収まっているか、すなわち未知変数Ｘに含まれる変数ｘについて、現在の解ｘ（ｉ）と、前回の解ｘ（ｉ−１）の値との差分が、許容範囲内であるかが判定される。ただし、ステップＳ５０５により収束判定の対象は電圧変数のみとなる。このため、収束したかどうかは集合Ｖにより決まる。ここで、図７の通り、集合Ｖは収束しているので、ステップＳ３０４は収束と判定され、求解までに要するニュートン反復法の反復回数はｎ（ｎ＜ｍ）ということになる。
【００５１】
このように求解までに要するニュートン反復法の反復回数は、ｍ回より少ないｎ回となっている。求解までに要する演算回数は、ニュートン反復法の反復１回あたりの平均演算回数と、求解までに要する反復回数の積で表現出来るため、第１実施形態に係る回路シミュレーション方法は、従来技術に比べて、ｎ／ｍ（ｎ＜ｍ）倍となる。
【００５２】
次に、図１０は、本発明の第２実施形態による回路シミュレーション方法の手順を示すフローチャートである。本発明の第２実施形態による回路シミュレーションシステムの構成は、図４に示される構成例と同様である。第２実施形態は、更に回路シミュレーションにおいて過渡解析を行なう。
図８、図９を参照して過渡解析について説明する。図８は、過渡解析結果の波形図であり、横軸は時刻、縦軸は電圧を表わす。解析点２０１を結ぶ過渡動作波形２０２が示されている。
過渡解析は、ある指定されたノードでの時間領域の応答特性を解析するものであり、回路シミュレーション方法が、離散時間毎に解析開始時間から解析終了時間まで行なわれる。離散時間、解析開始時間、解析終了時間は、解析条件データに基づいて設定される。ある時刻Ｔ１の解析点において回路方程式の解が収束すると、次の時刻としてＴ２が選ばれ、再び回路方程式の求解処理が行なわれる。少ない反復回数で求解処理を行うために、時刻Ｔ２の求解処理においては、時刻Ｔ１の解から予測された値をニュートン反復法の初期値として使用している。
【００５３】
過渡解析の実行時間である過渡解析終了時刻までに要する演算回数は、ある解析点に関してニュートン反復法の反復１回あたりの演算回数と求解までに要する反復回数の積が、１解析点あたりの演算回数となり、その１解析点あたりの平均演算回数と、解析点数の積が、過渡解析の求解に要する演算回数となる。
【００５４】
図９は、電流波形のスパイク形状を示す波形図であり、電圧変数の解析点２１１を結ぶことで電圧波形２１３が示されている。同様に、電流変数の解析点２１２を結ぶことで電流波形２１４が示されている。スパイク形状とは、電圧波形２１３が急峻に変化する時刻Ｔ３からＴ４、Ｔ５への時間遷移において、電流変数の解析点２１２が、現実には起こりえない大きな値として出力される電流波形２１４のことであり、電流波形の精度が低い。ある時刻におけるニュートン反復法の初期値は、前の時刻の解であり、変化が緩い解析点については、電流変数の解は十分に収束するが、変化が急峻な解析点については、電流変数の解が十分に収束していないまま、解析結果として出力されてしまうためにスパイク状波形が現れる。
【００５５】
図１０は、ＣＰＵ３が回路シミュレーションプログラムを実行することにより実現される回路シミュレーション方法のフローチャートである。図５の第１実施形態における回路シミュレーションシステムの動作を示すフローチャートにおいて、ステップＳ３１０、ステップＳ３１２が追加され、ステップＳ３０４がステップＳ３０４ａに置換されている。その他の処理は共通しているため、同じ符号を付してある。
【００５６】
図１０において、ステップＳ３１０は、ある解析点における求解が成功し、解析結果を出力したあとに実施される。ステップＳ３１０では、現在の解析時刻が予め決められた解析終了時刻に達しているか否かが判定され、解析終了時刻に達している場合、処理フローは終了される（ステップＳ３０９）。まだ解析終了時刻に達していない場合、解析時刻が次の解析点に設定され、処理フローはステップＳ３０２に戻る。
【００５７】
また、ステップＳ３１２では、現在の解析時刻が滑らかな変化点ではなく、折れ点であるかが判定される。折れ点とは、回路内に存在する複数の電圧源において、電圧値が変化するように指定された時刻を意味する。次に、図１１に示すフローチャートを参照し、図１０のステップＳ３１２の詳細を説明する。
【００５８】
ステップＳ３１２は、解析時刻ごとに一度実施される（ステップＳ６００）。
まず、ステップＳ６０１にて、現在の解析時刻が電圧変化点の近傍にあるのか否かが、回路内のすべての電圧源に渡って調べられる。近傍という判定基準を定義しているが、電圧変化点から数えて予め決められた個数（収束判定ステップ数Ｎｓｔｅｐとする）の解析時刻を対象とする。収束判定ステップ数Ｎｓｔｅｐは、予め回路シミュレーションプログラム内部に設定される変数であり、収束判定ステップが実行される毎に決定される。
【００５９】
次に、ステップＳ６０１での判定結果に基づいて、近傍変数フラグｃｆｌｇの設定が行なわれる。近傍変数フラグｃｆｌｇは、現在の解析時刻が折れ点の近傍にあるか否かを示している。近傍変数フラグｃｆｌｇが「１」の場合の現在の解析時刻は、回路内のいづれかの電圧源の電圧が変化点近傍にある。また近傍変数フラグｃｆｌｇが「０」の場合の現在の解析時刻は、回路内のすべての電圧源の電圧が変化点近傍にないことを示す。
ステップＳ６０１でＹｅｓと判定された場合、近傍変数フラグｃｆｌｇが「１」に設定される（ステップＳ６０５）。また、ステップＳ６０１でＮｏと判定された場合、近傍変数フラグｃｆｌｇは「０」に設定される（ステップＳ６０４）。
変数フラグｃｆｌｇの設定が終了すると処理が終了（ステップＳ６０２）する。
【００６０】
図１２は、収束判定処理（ステップＳ３０４ａ）の詳細を示し、ニュートン反復法の反復ごとに毎回実施される。ステップＳ３０４ａでは、ステップＳ３０４に対して、ステップＳ５０６が追加されている。
現在の変数が電流変数と判定された場合（ステップＳ５０５でＹｅｓ）、近傍変数フラグｃｆｌｇが「１」かどうかが判定される（ステップＳ５０６）。近傍変数フラグｃｆｌｇが「１」の場合、収束判定（ステップＳ５０１）が実行される。従って、図１１のステップＳ６０１において、現在の解析時刻が電圧変化点の近傍にあると判定された場合は、電流変数が図１２のステップＳ５０６にて収束判定対象とされる。一方、解析時刻が電圧変化点の近傍以外では、第1実施形態と同様に、電流変数の収束判定は実施されない。
【００６１】
上述したとおり本発明の第２実施形態では、電圧変化点の近傍以外の変化が緩い解析点については、電流変数の収束判定が実施されず、変化が急峻な解析点については、電圧変数、電流変数共に収束判定が実施される。したがって第２実施形態は、図１３に示す解析時刻Ｔ３、Ｔ４、及びＴ５において、電流波形２１４がスパイク形状にならないことがわかる。上述したように、第２実施形態では電流波形の精度が向上する。
【００６２】
図１４は、第３実施形態による回路シミュレーション方法の手順を示すフローチャートである。図１４は、図１０の第２実施形態におけるフローチャートにおいて、ステップＳ３０１がステップＳ３０１ａに置換され、ユーザが与えた収束判定ステップ数５０から、収束判定ステップ数Ｎｓｔｅｐが取得される。その他のステップは同じであるので、同じ符号が付されている。したがって、第３実施形態では、回路データ１０に依存して収束判定ステップ数Ｎｓｔｅｐを調整することが可能になる。
【００６３】
図１５に示すフローチャートを参照して、第４実施形態による回路シミュレーション方法の手順を説明する。図１５は、折れ点判定処理（ステップＳ３１２ａ）を含み、これは第２実施形態における折れ点判定処理（図１０のステップＳ３１２）を改良したものである。図１６は、ステップＳ３１２ａを詳細に示すフローチャートであり、図１１のフローチャートにおいて、電圧変化角度計算処理（ステップＳ６０３）が追加されている。その他の処理ステップは同じであるので、同じ符号を付してある。
【００６４】
電圧変化角度計算処理（ステップＳ６０３）では、図１１のステップＳ６０１において収束判定ステップ数Ｎｓｔｅｐが、回路シミュレーションプログラム内部で予め設定されている値であり、固定値である。これに対して、第４実施形態においては、電圧源の電圧変化の割合（角度）に基づいて、収束判定ステップ数Ｎｓｔｅｐが算出される処理（ステップＳ６０３）が追加され、電圧変化の割合（角度）によって調整された収束判定ステップ数Ｎｓｔｅｐが設定される。
【００６５】
したがって、第４実施形態では、入力される回路データにおける電圧変化の割合（角度）に依存して自動で収束判定ステップ数が調整される。このため、ユーザが収束判定ステップ数を意識する必要が無くなり、またスパイクが発生しないような緩い電圧変化に対しては、電流変数の収束判定が行われない。以上説明したように、本発明によれば以下の効果をもたらされる。
【００６６】
従来技術では、求解までに要するニュートン反復法の反復回数は、ｎ［回］よりも大きいｍ［回］となっている。求解までに要する演算回数は、ニュートン反復法の反復１回あたりの平均演算回数と、求解までに要する反復回数の積で表現出来る。本実施の形態に係る回路シミュレーション方法は、従来技術に比べて、ｎ／ｍ倍となるためニュートン反復法の反復回数を削減し、解析処理を高速化できる。
【００６７】
電圧変化点における、電流波形のスパイク形状が是正されるため、電流波形の精度向上ができる。過渡解析におけるＮｅｗｔｏｎ反復法では、未知変数Ｘの初期値を、前解析点の解とするため、ニュートン反復法は求めるべき解に十分近い初期値を与えると、少ない反復回数の段階で、電流値は収束するため、電圧変化点の近傍以外の変化が緩い解析点については、異常な値になる問題は起こらない。
【図面の簡単な説明】
【００６８】
【図１】図１は、従来技術の回路シミュレーション方法におけるフローチャートである。
【図２】図２は、従来技術の回路シミュレーション方法における、収束判定処理を詳細に表したフローチャートである。
【図３】図３は、従来技術の回路シミュレーション方法における、収束判定結果の表である。
【図４】図４は、従来技術の回路シミュレーションプログラムを実行するためのシステム構成図である。
【図５】図５は、本発明の第１実施形態に係る回路シミュレーションプログラムにおけるフローチャートである。
【図６】図６は、本発明の第１実施形態に係る回路シミュレーションプログラムにおける収束判定処理を詳細に表したフローチャートである。
【図７】図７は、本発明の第１実施形態に係る回路シミュレーション方法における、収束判定結果の表である。
【図８】図８は、過渡解析による回路シミュレーションの解析結果の波形図である。
【図９】図９は、電流変数の収束判定を省略したときに発生しうる、電流波形のスパイク形状を表した波形図である。
【図１０】図１０は、本発明の第２実施形態に係る回路シミュレーションプログラムにおける、過渡解析の処理フローチャートの図である。
【図１１】図１１は、本発明の第２実施形態に係る回路シミュレーションプログラムにおける、折れ点判定処理を詳細に表したフローチャートである。
【図１２】図１２は、本発明の第２実施形態に係る回路シミュレーションプログラムにおける、収束判定処理を詳細に表したフローチャートである。
【図１３】図１３は、本発明の第２実施形態に係る回路シミュレーション方法が、精度を向上していることを表した波形図である。
【図１４】図１４は、本発明の第３実施形態に係る回路シミュレーションプログラムにおける、過渡解析のフローチャートである。
【図１５】図１５は、本発明の第４実施形態に係る回路シミュレーションプログラムにおける、過渡解析のフローチャートである。
【図１６】図１６は、本発明の第４実施形態に係る回路シミュレーションプログラムにおける、折れ点判定処理を詳細に表したフローチャートである。
【符号の説明】
【００６９】
１：記憶部、
２：解析処理部、
３：ＣＰＵ、
４：入出力インタフェース、
５：ＲＯＭ、
６：ＲＡＭ、
７：計算結果出力部、
１０：回路データ、
２０：解析条件データ、
３０、３１、３２、３３、３４：解析処理部、
４０：波形データ、
５０：収束判定ステップ数、
Ｔ１〜Ｔ５：解析時刻、
２０１、２１１、２１２：解析点、
２０２、２１３、２１４：過渡解析波形、
【図１】
2009157623.tif 000003
【図２】
2009157623.tif 000004
【図３】
2009157623.tif 000005
【図４】
2009157623.tif 000006
【図５】
2009157623.tif 000007
【図６】
2009157623.tif 000008
【図７】
2009157623.tif 000009
【図８】
2009157623.tif 000010
【図９】
2009157623.tif 000011
【図１０】
2009157623.tif 000012
【図１１】
2009157623.tif 000013
【図１２】
2009157623.tif 000014
【図１３】
2009157623.tif 000015
【図１４】
2009157623.tif 000016
【図１５】
2009157623.tif 000017
【図１６】
2009157623.tif 000018