(57)【要約】【課題】  寄生素子を含む集積回路のシミュレーションの収束性を向上させることのできるシミュレーション方法を提供することを目的とする。【解決手段】  寄生素子を含まない回路情報により全ノードの電圧値、電流値を計算し、この計算した過程で電圧値、電流値が安定しているノードを求め、このノードに対して寄生素子を付加して回路情報を再構成し、前記回路情報の再構成前の計算結果を再構成後の初期値として全ノードの電圧値、電流値の計算を行い、ノードに対して徐々に寄生素子を付加し、最終的に全ての寄生素子を含む回路情報で全ノードの電圧値、電流値を求める。この方法によれば、寄生素子を回路情報に徐々に挿入しながら全ノードの電圧値、電流値を計算するとき、回路情報の再構成前の計算結果を再構成後の初期値として計算を継続することによりノードに対して解に近い初期値を与えることができ、収束性を向上できる。【選択図】      図１
2006172233.tif 000002
【特許請求の範囲】
【請求項１】
寄生素子を含む回路のシミュレーション方法であって、
前記寄生素子を含まない回路情報に於ける複数のノードについて電圧値、電流値の計算を繰り返し行う近似計算を行い、この近似計算の過程、或いは１つ前の近似計算の過程で得られた電圧値、電流値が収束条件を満たしているノードを求め、このノードに対して寄生素子を付加して回路情報を再構成し、前記回路情報の再構成前の計算結果を再構成後の初期値として全ノードの電圧値、電流値の近似計算を再度行うこと
を特徴とするシミュレーション方法。
【請求項２】
前記回路情報の全てのノードが前記収束条件を満たすまで、前記近似計算を繰り返し行うこと
を特徴とする請求項１記載のシミュレーション方法。
【請求項３】
寄生素子を含む回路のシミュレーション方法であって、
前記寄生素子を含まない回路情報をそれぞれ構成する素子名、素子に接続するノード名、素子パラメータからなるネットリストと、前記寄生素子を含む回路をそれぞれ構成する素子および寄生素子名、素子および寄生素子に接続するノード名、素子および寄生素子のパラメータからなるネットリストより、前記寄生素子を追加する前後でのノード名の変更内容を作成し、ノード名変更情報として記憶する工程と、
前記寄生素子を含む回路情報のネットリストより、ノードに対して接続する前記寄生素子の内容を作成し、寄生素子情報として記憶する工程と、
前記寄生素子を含まない回路情報に於ける複数のノードに対して電圧値、電流値の計算を繰り返し行う近似計算を行い、前記複数のノードの電圧値、電流値の計算結果を記憶する第１計算工程と
を有し、
前記近似計算の過程で収束条件に基づき、電圧値、電流値が安定しているノードを寄生素子が挿入可能と判断する挿入判定工程と、
前記寄生素子を挿入可能と判断したノードに対して前記ノード名変更情報から情報を取得し、そのノード名を寄生素子の挿入後のノード名に変更するノード名変更工程と、
前記寄生素子を挿入可能と判断したノードに前記寄生素子情報から接続する寄生素子を挿入する寄生素子挿入工程と、
前記寄生素子挿入工程において寄生素子を挿入することで増えたノードに対して、記憶した寄生素子挿入前のノードの電圧の計算結果を、寄生素子を挿入後の回路方程式の初期値として設定し、その他のノードは記憶している同じノードの電圧の計算結果を初期値として設定する初期値設定工程と、
全ノードに対して電圧値、電流値の計算を繰り返し行う近似計算を行い、前記全ノードの電圧値、電流値の計算結果を記憶する第２計算工程と、
を有し、
全てのノードに対する寄生素子の挿入が完了するまで、前記挿入判定工程、前記ノード名変更工程、前記寄生素子挿入工程、前記初期値設定工程、および前記第２計算工程を繰り返すこと
を特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の回路設計において用いられる回路のシミュレーション方法に関するものである。
【背景技術】
【０００２】
近年、集積回路の高集積化に伴って、微細化が進み配線の抵抗成分などの寄生素子が回路特性に影響を与えている。そのため集積回路を開発する過程において、実際に集積回路を製造する前に、電算機上で回路上に存在する寄生素子を含む回路で動作を確認する必要がある。そのため回路シミュレーションを実施している。
【０００３】
回路の寄生素子の例を図８（ａ）（ｂ）に基づいて説明する。
図８（ａ）は寄生素子を含まない回路である。つまり回路設計における理想化された状態の回路構成であり、バイポーラトランジスタＱ１、Ｑ２と抵抗Ｒ１、Ｒ２、Ｒ３で構成されている。そしてバイポーラトランジスタＱ１のエミッタとバイポーラトランジスタＱ２のベースと抵抗Ｒ１の一端がノードｎｏｄｅ１、バイポーラトランジスタＱ２のコレクタと抵抗Ｒ２の一端がノードｎｏｄｅ２、バイポーラトランジスタＱ２のエミッタと抵抗Ｒ３の一端がノードｎｏｄｅ３で接続されている。またバイポーラトランジスタＱ１のコレクタにノードｎｏｄｅ9991、ベースにノードｎｏｄｅ9995、抵抗Ｒ１の他端にノードｎｏｄｅ9992、抵抗Ｒ２の他端にノードｎｏｄｅ9993、抵抗Ｒ３の他端にノードｎｏｄｅ9994が接続されている。
【０００４】
図８（ｂ）は寄生素子を含む回路である。回路設計における理想化された状態の回路構成にノードの抵抗成分を考慮にいれた回路構成であり、バイポーラトランジスタＱ１、Ｑ２と抵抗Ｒ１、Ｒ２、Ｒ３と、寄生素子を考慮するための抵抗Ｒ１１，Ｒ１２，Ｒ１３，Ｒ１４，Ｒ１５で構成されている。なお、寄生素子を付加するため、寄生素子を挿入するノード名をノード名＿数字に変更し、寄生素子を接続しているものとしている。また寄生素子を含まない回路において接続していない２点間のノードに対して寄生の抵抗は挿入しないものとしている。この寄生素子を含む回路では、ｎｏｄｅ１が切断される代わりにバイポーラトランジスタＱ１のエミッタと抵抗Ｒ１１がｎｏｄｅ１＿１で接続され、抵抗Ｒ１と抵抗Ｒ１２がｎｏｄｅ１＿２で接続され、バイポーラトランジスタＱ２のベースと抵抗Ｒ１３がｎｏｄｅ１＿３で接続され、抵抗Ｒ１１と抵抗Ｒ１２と抵抗Ｒ１３がｎｏｄｅ１＿４で接続されている。同様にバイポーラトランジスタＱ２のコレクタと抵抗Ｒ１４がｎｏｄｅ２＿２で接続され、抵抗Ｒ２と抵抗Ｒ１４がｎｏｄｅ２＿１で接続され、バイポーラトランジスタＱ２のエミッタと抵抗Ｒ１５がｎｏｄｅ３＿１で接続され、抵抗Ｒ３と抵抗Ｒ１５がｎｏｄｅ３＿２で接続されている。このようにノードに付加する寄生の抵抗はｎｏｄｅ１のように複数追加される場合もあれば、ｎｏｄｅ２のように１つのみ追加される場合もある。
【０００５】
寄生素子を考慮にいれた動作を確認するためには、寄生素子を含む回路構成で回路シミュレーションを行う必要がある。回路シミュレーション方法としては、ＳＰＩＣＥ（Ｓｉｍｕｌａｔｉｏｎ  Ｐｒｏｇｒａｍ  ｗｉｔｈ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  Ｅｍｐｈａｓｉｓ）が一般的である。
【０００６】
前記ＳＰＩＣＥで使用される回路のネットリストを説明する。
図９（ａ）に図８（ａ）の寄生素子を含まない回路のネットリストを示す。１行に素子名、素子に接続するノード名、素子パラメータが定義されている。例えば抵抗Ｒ１はノード名ｎｏｄｅ１、ｎｏｄｅ９９９２が接続しているのでＲ１  ｎｏｄｅ１  ｎｏｄｅ９９９２  １Ｋとなり、素子パラメータとして抵抗値１Ｋが設定されている。またバイポーラトランジスタＱ２はノード名ｎｏｄｅ２、ｎｏｄｅ１、ｎｏｄｅ３が接続しているのでＱ２  ｎｏｄｅ２  ｎｏｄｅ１  ｎｏｄｅ３  ＮＰＮとなり、１番目に接続しているノード名ｎｏｄｅ２はコレクト端子に、２番目に接続しているノード名ｎｏｄｅ１はベース端子に、３番目に接続しているノード名ｎｏｄｅ３はエミッタ端子に接続する。また素子パラメータとしてモデル名ＮＰＮが設定されている。接続しているノード名が一致する素子同士はそのノードで接続している。例えばバイポーラトランジスタＱ１に接続している３番目のノード名と、バイポーラトランジスタＱ２に接続している２番目のノード名と、抵抗Ｒ１に接続している１番目のノード名が一致しているためノードｎｏｄｅ１で接続していることがわかる。このようにネットリストはバイポーラトランジスタＱ１，Ｑ２と抵抗Ｒ１，Ｒ２，Ｒ３の情報が存在し、図８（ａ）の寄生素子を含まない回路と同じ素子と接続関係を表している。
【０００７】
図９（ｂ）に図８（ｂ）の寄生素子を含む回路のネットリストを示す。寄生素子を含まない回路のネットリストと同じくバイポーラトランジスタＱ１，Ｑ２と抵抗Ｒ１，Ｒ２，Ｒ３が存在し、寄生素子を含まない回路のネットリストに存在しない寄生の抵抗Ｒ１１，Ｒ１２，Ｒ１３，Ｒ１４，Ｒ１５が追加されている。寄生素子を含む回路のネットリストは寄生素子を含まない回路のネットリストに含まれている素子名と素子に接続するノードの順番をそのまま利用する。寄生素子を付加するため、寄生素子を挿入するノード名をノード名＿数字に変更し、寄生素子を接続しているものとしている。また変更後のノード名をノード名＿数字に統一することでノード名が変更されているかどうかを判断でき、寄生素子がどのノードに付加するか判断できる。例えば、寄生素子を含まない回路ではバイポーラトランジスタＱ１に接続しているノードの３番目と、バイポーラトランジスタＱ２に接続しているノードの２番目と、抵抗Ｒ１に接続しているノードの１番目がｎｏｄｅ１で接続しているが、寄生素子を含む回路の場合はｎｏｄｅ１が切断される代わりにノードｎｏｄｅ１＿１、ｎｏｄｅ１＿２、ｎｏｄｅ１＿３、ｎｏｄｅ１＿４を追加する。そしてバイポーラトランジスタＱ１に接続しているノードの３番目と抵抗Ｒ１１をｎｏｄｅ１＿１で接続し、抵抗Ｒ１と抵抗Ｒ１２をｎｏｄｅ１＿２で接続し、バイポーラトランジスタＱ２に接続しているノードの２番目と抵抗Ｒ１３をｎｏｄｅ１＿３で接続し、抵抗Ｒ１１とＲ１２とＲ１３をｎｏｄｅ１＿４で接続している。
【０００８】
図１０は前記ＳＰＩＣＥのＤＣ動作点解析の処理フロー図を示す。
まず収束条件である電圧値と電流値の許容範囲を設定する（ステップ−１０００）。次にノードの電圧値の初期値を設定する（ステップ−１０１０）。次に寄生素子を考慮した（寄生素子を含む）回路のネットリスト｛例えば、図９（ｂ）｝を読み込む（ステップ−１０２０）。次に全ノードの電圧値、電流値を計算する（ステップ−１０３０）。次に全ノードの電圧値、電流値が収束条件を満たしているか判断し（ステップ−１０４０）、収束していない場合は、ステップ−１０３０の処理に戻る。収束している場合は、シミュレーションを終了する。
【０００９】
計算方法としてはＮｅｗｔｏｎ−Ｒａｐｈｓｏｎ法などの近似アルゴリズムを用いる。全ノードの電圧値、電流値の計算を行う過程において回路方程式を近似アルゴリズムでｉ回繰り返し計算した時のノードｊの電圧の結果をＶｊｉとすると、ノードｊに対する収束条件は、
｜Ｖｊｉ−Ｖｊ（ｉ−１）｜≦許容値
すなわち、前回の計算によるノードｊの電圧Ｖｊ（ｉ−１）との差が許容範囲以内かで判断する。またｉ回繰り返し計算した時の端子ｋに流れる電流の結果をＩｋｉとすると、端子ｋに対する収束条件は、
｜Ｉｋｉ−Ｉｋ（ｉ−１）｜≦許容値
すなわち、前回の計算によるノードｊの電流Ｉｋ（ｉ−１）との差が許容範囲以内かで判断する。そして全ノードの電圧値、電流値が収束条件を満たすまで繰り返し計算する。
【００１０】
また、集積回路の回路動作検証方法として、例えば特許文献１には過渡解析で解析時間毎に寄生素子を考慮にいれるかいれないか切り替え回路動作を検証する技術が提案されている。以下、この技術を図１１の処理フローに基づいて説明する。
【００１１】
まず、図９（ａ）に示す、寄生素子を含まない回路のネットリストを読み込む（ステップ−１１００）。次に寄生を含まない回路の全ノードの電圧値、電流値を計算する（ステップ−１１０５）。次にｔ＝ｔ＋Δｔで解析時間を進める（ステップ−１１０８）。
【００１２】
次に解析時間が寄生素子を考慮に入れて詳細に解析する開始時間に達したか判断し（ステップ−１１１０）、詳細に解析する開始時間に達していない場合は、ステップ−１１０５の処理に戻る。
【００１３】
詳細に解析する開始時間に達した場合は、計算した解析結果を、寄生素子を含む回路の過渡解析のための新たな回路方程式の計算における初期値として受け渡す（ステップ−１１１５）。次に図９（ｂ）に示す、寄生素子を含む回路のネットリストを読み込む（ステップ−１１２０）。次に寄生を含む回路の全ノードの電圧値、電流値を計算する（ステップ−１１２５）。次にｔ＝ｔ＋Δｔで解析時間を進める（ステップ−１１２８）。次に解析時間が寄生素子を考慮に入れて詳細に解析する終了時間に達したか判断し（ステップ−１１３０）、詳細に解析する終了時間に達していない場合は、ステップ−１１２５の処理に戻る。
【００１４】
詳細に解析する終了時間に達した場合は、計算した解析結果を、寄生素子を含まない回路の過渡解析のための新たな回路方程式の計算における初期値として受け渡す（ステップ−１１３５）。次に図９（ａ）に示す、寄生を含まない回路のネットリストを読み込む（ステップ−１１４０）。次に寄生を含まない回路の全ノードの電圧値、電流値を計算する（ステップ−１１４５）。次に解析時間が解析終了時間に達したか判断し（ステップ−１１５０）、解析終了時間に達していない場合はステップ−１１００の処理に戻る。解析終了時間に達した場合はシミュレーションを終了する。
【００１５】
これにより過渡解析で解析時間毎に寄生素子を考慮にいれるかいれないか切り替えることにより回路シミュレーションを高速化できる。
【特許文献１】特開２００１−３５７０９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、前記ＳＰＩＣＥでは、寄生素子を考慮に入れた回路では回路規模が大きくなり、電圧値、電流値の計算が複雑になるため収束条件を満たさないノードが残ってしまう場合がある。
【００１７】
また特許文献１の過渡解析で解析時間毎に寄生素子を考慮にいれるかいれないか判断し回路動作を検証する技術は、一度に全寄生素子を追加する手法であるため回路構成が大きく変化する可能性があり、また寄生素子を含まない回路の解を、寄生素子を含む回路の解析の初期値として与えるが、寄生素子を挿入する際に増えたノードに対して初期値を与えることができないため、収束条件を満たさないノードが残ってしまう場合がある。
【００１８】
そこで、本発明は、寄生素子を含む集積回路のシミュレーションの収束性を向上できるシミュレーション方法を提供することを目的としたものである。
【課題を解決するための手段】
【００１９】
前述した目的を達成するために、本発明のうち請求項１に記載の発明は、寄生素子を含む回路のシミュレーション方法であって、前記寄生素子を含まない回路情報に於ける複数のノードについて電圧値、電流値の計算を繰り返し行う近似計算を行い、この近似計算の過程、或いは１つ前の近似計算の過程で得られた電圧値、電流値が収束条件を満たしているノードを求め、このノードに対して寄生素子を付加して回路情報を再構成し、前記回路情報の再構成前の計算結果を再構成後の初期値として全ノードの電圧値、電流値の近似計算を再度行うことを特徴とするものである。
【００２０】
上記方法によれば、寄生素子を含まない回路情報に基づく近似計算を行い、収束性の良いノードに対して寄生素子を付加し、かつ解に近い初期値を与えて、全てのノードの再計算するため、寄生素子を含む大規模な回路のシミュレーションの収束性が向上する。
【００２１】
また、請求項１の構成に加えて、回路情報の全てのノードが収束条件を満たすまで近似計算を繰り返し行ってもよい。
また請求項３に記載の発明は、寄生素子を含む回路のシミュレーション方法であって、前記寄生素子を含まない回路情報をそれぞれ構成する素子名、素子に接続するノード名、素子パラメータからなるネットリストと、前記寄生素子を含む回路をそれぞれ構成する素子および寄生素子名、素子および寄生素子に接続するノード名、素子および寄生素子のパラメータからなるネットリストより、前記寄生素子を追加する前後でのノード名の変更内容を作成し、ノード名変更情報として記憶する工程と、前記寄生素子を含む回路情報のネットリストより、ノードに対して接続する前記寄生素子の内容を作成し、寄生素子情報として記憶する工程と、前記寄生素子を含まない回路情報に於ける複数のノードに対して電圧値、電流値の計算を繰り返し行う近似計算を行い、前記複数のノードの電圧値、電流値の計算結果を記憶する第１計算工程とを有し、前記近似計算の過程で収束条件に基づき、電圧値、電流値が安定しているノードを寄生素子が挿入可能と判断する挿入判定工程と、前記寄生素子を挿入可能と判断したノードに対して前記ノード名変更情報から情報を取得し、そのノード名を寄生素子の挿入後のノード名に変更するノード名変更工程と、前記寄生素子を挿入可能と判断したノードに前記寄生素子情報から接続する寄生素子を挿入する寄生素子挿入工程と、前記寄生素子挿入工程において寄生素子を挿入することで増えたノードに対して、記憶した寄生素子挿入前のノードの電圧の計算結果を、寄生素子を挿入後の回路方程式の初期値として設定し、その他のノードは記憶している同じノードの電圧の計算結果を初期値として設定する初期値設定工程と、全ノードに対して電圧値、電流値の計算を繰り返し行う近似計算を行い、前記全ノードの電圧値、電流値の計算結果を記憶する第２計算工程とを有し、全てのノードに対する寄生素子の挿入が完了するまで、前記挿入判定工程、前記ノード名変更工程、前記寄生素子挿入工程、前記初期値設定工程、および前記第２計算工程を繰り返すことを特徴とするものである。
【発明の効果】
【００２２】
本発明のシミュレーション方法は、解析中に寄生素子を回路情報に徐々に挿入しながら解析を行うとき、回路の再構成前の解析結果を再構成後の初期値として解析を継続することにより、ノードに対して解に近い初期値を与えることができ、寄生素子を含む大規模な回路に対してもシミュレーションの収束性を向上させることが可能になる、という効果を有している。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を、図面を参照しながら説明する。
図１は本発明の実施の形態における寄生素子を含むシミュレーション方法を説明する処理フローチャートである。
【００２４】
なお、回路の全ノードの電圧値、電流値の計算を行う課程において、回路方程式を解くためにＮｅｗｔｏｎ−Ｒａｐｈｓｏｎ法などの近似アルゴリズムを利用する。例えば図７の電圧Ｖの１つに簡略化した回路方程式ｆ（Ｖ）＝０のグラフを用いて近似アルゴリズムを説明すると、近似アルゴリズムをｉ回繰り返し計算した時の電圧の解をＶｉとすると収束条件は、
｜Ｖｉ−Ｖ（ｉ−１）｜≦許容値
すなわち許容範囲以内となる。電圧の収束結果から遠い初期値ＶＡ０の場合、初期値ＶＡ０による回路方程式ｆ（Ｖ）の接線ＬＡ１とｆ＝０の接点から電圧Ｖの１回目の結果ＶＡ１を計算する。次にＶＡ１による回路方程式ｆ（Ｖ）の接線ＬＡ２とｆ＝０の接点から電圧Ｖの２回目の結果ＶＡ２を計算する。このように電圧の収束結果から遠い初期値を与えることで、ｆ（Ｖ）の接線とｆ＝０の接点が電圧Ｖの解に近づかないため収束しない場合がある。電圧の収束結果に近い初期値ＶＢ０の場合、初期値ＶＢ０による回路方程式ｆ（Ｖ）の接線ＬＢ１とｆ＝０の接点から電圧Ｖの１回目の結果ＶＢ１を計算する。次に結果ＶＢ１による回路方程式ｆ（Ｖ）の接線ＬＢ２とｆ＝０の接点から電圧Ｖの２回目の結果ＶＢ２を計算する。このように電圧の収束結果に近い初期値を与えることで、ｆ（Ｖ）の接線とｆ＝０の接点が電圧Ｖの収束結果に近づく方に進むため収束しやすくなる。このように初期値によって収束のしやすさが変わってくる。
【００２５】
本発明では、寄生素子を含まない回路情報で解析を行い、徐々に寄生素子を回路情報に付加して回路を再構成していきながら、最終的に寄生素子を含む回路情報で解析を行い、回路の再構成前の解析結果を再構成後の初期値として解析することで収束性を向上させる。
【００２６】
図８の回路と図９の回路ネットリストを参照しながら、本発明の実施の形態に係わるシミュレーション方法について説明する。
まず、寄生素子の挿入条件を設定する処理を実行する（ステップ−１００）。Ｎｅｗｔｏｎ−Ｒａｐｈｓｏｎ法などの近似アルゴリズムの収束条件の許容範囲を設定して、寄生素子を挿入する挿入条件とし、ノードの収束状態を判定する。例えば、１つ前の計算結果と今回の計算結果との差を求めて、或る許容範囲に入れば収束していると判定する。近似アルゴリズムでｉ回繰り返した時のノードｊの電圧の結果をＶｊｉとし、ＶｊｉとＶｊ（ｉ−１）を比較したときの最大値をＶｍａｘとし、相対誤差をｒｅｌｔｏｌ、電圧の絶対誤差をｖａｂｓｔｏｌとすると、ノードｊに対する寄生素子の挿入条件は、
｜Ｖｊｉ−Ｖｊ（ｉ−１）｜＜ｒｅｌｔｏｌ×Ｖｍａｘ＋ｖａｂｓｔｏｌ
となる。収束していないノードは近似アルゴリズムで繰り返した時の計算結果の変動が大きく、ノードに寄生素子を挿入した場合、ノードの電圧、電流の計算が複雑になるため、より計算結果の変動が大きくなる。しかし収束しているノードは近似アルゴリズムで繰り返した時の計算結果の変動が小さく安定しているため、ノードに寄生素子を挿入した場合、ノードの電圧、電流の計算が複雑になるが、寄生素子を挿入前の結果を寄生素子の両端に接続しているノードの初期値として利用することで収束しやすくできる。設定として例えば、
相対誤差ｒｅｌｔｏｌ＝１ｅ−３，電圧値の絶対誤差ｖａｂｓｔｏｌ＝１ｅ−６
をメモリに格納する。
【００２７】
次に図９（ａ）の寄生素子を含まない回路のネットリストと、図９（ｂ）の寄生素子を含む回路のネットリストから、寄生素子を追加する前後でのノード名の変更内容を作成し、寄生素子を挿入するためのノード名変更情報として記憶し（ステップ−１０５）、続いて、寄生素子を含む回路のネットリストより、ノードに対して接続する寄生素子の内容を作成し、ノードに付加する寄生素子情報として記憶する（ステップ−１１０）。
【００２８】
図２に、上記ステップ−１０５（ノード名変更情報の作成をする処理）の詳細な処理フローチャートを示す。
まずｈ、ｉ、ｊ、ｋ、の初期値を設定するためｈ、ｉ、ｊ、ｋ、の初期値をそれぞれ１にする（ステップ−２００）。次に寄生素子を含まない回路のネットリスト｛例えば図９（ａ）｝を読み込みメモリに格納する（ステップ−２０５）。次に寄生素子を含まない回路のネットリストのｊ行目を読み込み、素子名、素子に接続している全てのノード名を取得する（ステップ−２１０）。例えば図９（ａ）の寄生素子を含まない回路のネットリストから素子名Ｑ２、素子に接続しているノード名ｎｏｄｅ２  ｎｏｄｅ１  ｎｏｄｅ３を取得する。
【００２９】
次に素子に接続している全ノード数をｍとする（ステップ−２１５）。例えば素子Ｑ２の場合、ｍ＝３となる。
次に素子名と素子に接続しているｉ番目のノード名を取得し、ノード名変更情報として１列目にノード名、２列目に素子名、３列目に素子に接続しているノードの順番として、メモリに保存する（ステップ−２２０）。例えば素子Ｑ２に接続している１番目のノードの場合、１列目にｎｏｄｅ２、２列目にＱ２、３列目に１となる。次にｉ＝ｍか判断し（ステップ−２２５）、ｉ＜ｍの場合はｉ＝ｉ＋１（ステップ−２３０）を行い、処理（ステップ−２２０）に戻る。ｉ＝ｍの場合はｉ＝１に初期化する（ステップ−２３５）。
【００３０】
次に寄生を含まない回路のネットリストが最終行であるか判断し（ステップ−２４０）、最終行でない場合はｊ＝ｊ＋１（ステップ−２４３）を行い、ステップ−２１０の処理に戻る。上記ステップ−２１０〜２４３により、図３（ａ）に示す、前段階のノード名変更情報が形成される。
【００３１】
寄生を含まない回路のネットリストが最終行である場合、次に寄生素子を含む回路のネットリスト｛例えば図９（ｂ）｝のｋ行目を読み込み（ステップ−２４５）、素子名と素子に接続している全てのノード名を取得する（ステップ−２５０）。
【００３２】
次に上記作成した前段階のノード名変更情報のｈ行目を読み込み、素子名と素子に接続しているノードの順番を取得する（ステップ−２５３）。次にこのｈ行目のノード名変更情報の素子名と寄生素子を含む回路のネットリストのｋ行目の素子名と比較し（ステップ−２５４）、一致しない場合はｈ＝ｈ＋１（ステップ−２５５）を行い、ステップ−２５３の処理に戻る。一致する場合は、ｈ行目のノード名変更情報から素子に接続しているノードの順番ｎを取得し、寄生素子を含む回路のネットリストのｋ行目からｎ番目のノード名を取得する（ステップ−２５６）。次にｈ行目のノード名変更情報にｎ番目のノード名を寄生素子を挿入後のノード名として追加する（ステップ−２５８）。寄生素子を含むネットリストが最終行であるか判断し（ステップ−２６０）、最終行でない場合はｋ＝ｋ＋１（１２６３）を行い、ステップ−２４５の処理に戻る。最終行の場合はノード名変更情報を正常終了する。
【００３３】
図３（ｂ）にノード名変更情報を示す。１列目にノード名、２列目に素子名、３列目に素子に接続しているノードの順番、４列目に寄生素子を挿入後のノード名を示す。例えば、ノード名ｎｏｄｅ１に寄生素子を挿入する場合、メモリに格納している回路情報から抵抗Ｒ１に接続している１番目のノード名をｎｏｄｅ１＿２、バイポーラトランジスタＱ１に接続している３番目のノード名をｎｏｄｅ１＿１、バイポーラトランジスタＱ２に接続している２番目のノード名をｎｏｄｅ１＿３に変更する。
【００３４】
図４に、上記ステップ−１１０（ノードに付加する寄生素子情報の作成をする処理）の詳細な処理フローチャートを示す。
まずｊの初期値を設定するためｊの初期値を１にする（ステップ−４００）。次に寄生素子を含む回路のネットリスト｛例えば図９（ｂ）｝のｊ行目を読み込む（ステップ−４１０）。次に寄生素子を含む回路のネットリストのｊ行目から素子名、素子に接続しているノード名、素子パラメータを取得する（ステップ−４２０）。抵抗の場合、寄生の抵抗か確認のため両端に接続しているノード名が両方とも変更後のノード名であるか判断し（ステップ−４３０）、変更後のノード名でない場合はｊ＝ｊ＋１（ステップ−４４０）を行い、ステップ−４１０の処理に戻る。両方とも変更後のノード名である場合、ノード名から挿入するノード名を取得する（ステップ−４５０）。例えば、図９（ｂ）に示す抵抗Ｒ１１はｎｏｄｅ１＿１とｎｏｄｅ１＿４に接続しているため、ｎｏｄｅ１に挿入された寄生の抵抗と判断し、挿入するノード名ｎｏｄｅ１を取得する。次に１列目に挿入するノード名、２列目以降に素子名、素子に接続しているノード名、素子パラメータをメモリに格納し、ノードに付加する寄生素子情報を作成する（ステップ−４６０）。次に寄生素子を含む回路のネットリストが最終行であるか判断し（ステップ−４７０）、最終行でない場合はｊ＝ｊ＋１（ステップ−４４０）を行い、ステップ−４１０の処理に戻る。
【００３５】
図５にノードに付加する寄生素子情報を示す。１列目に寄生素子の抵抗を挿入するノード名、２列目以降に素子名、素子に接続しているノード名、素子パラメータを示す。例えば１行目の場合、１列目に挿入するノード名ｎｏｄｅ１、２列目に素子名Ｒ１１、３列目に素子に接続しているノード名ｎｏｄｅ１＿１とｎｏｄｅ１＿４、４列目に素子パラメータとして抵抗値５０を設定することを示している。
【００３６】
図１のフローチャートの説明に戻る。
上記ステップ−１１０に続いて、寄生素子を含まない回路の複数のノードの電圧値及び電流値の計算を繰り返し行う近似計算を行い（回路の解析を行い）、複数のノードの電圧値、電流値の計算結果を記憶する第１計算工程（寄生素子を含まない回路中の複数のノードの電圧値及び電流値の近似計算を行う処理）を実行する（ステップ−１１５）。
【００３７】
次にステップ−１００において、すなわち回路に対して全ノードの電圧値、電流値の計算を行う過程において、シミュレーションの近似計算の過程で設定した収束条件（寄生素子の挿入条件）に基づき、ノード毎に電圧値、電流値が安定しているノードを判断し、寄生素子が挿入可能と判断する挿入判定工程（ノード毎に寄生素子の挿入条件を満たしているか判断する処理）を実行する（ステップ−１２０）。
【００３８】
続いて、寄生素子を挿入可能と判断したノードに対して前記ノード名変更情報から情報を取得し、そのノード名を寄生素子の挿入後のノード名にし（ノード名変更工程）、前記寄生素子を挿入可能と判断したノードに前記寄生素子情報から接続する寄生素子を挿入し、回路を再構成する寄生素子挿入工程（条件を満たしているノードに対して寄生素子を挿入し回路を再構成する処理）を実行する（ステップ−１２５）。
【００３９】
次に、前記寄生素子挿入工程において寄生素子を挿入することで増えたノードに対して、記憶した寄生素子中の挿入前のノードの電圧の計算結果を、寄生素子を挿入後の回路情報の初期値として設定し、その他のノードは記憶している同じノードの電圧の計算結果を初期値として設定する初期値設定工程（全ノードの電圧値及び電流値の計算の初期値を作成する処理）を実行する（ステップ−１３０）。全ノードの電圧値は再構成された回路の初期値として利用するためメモリに格納する。
【００４０】
寄生素子の挿入条件を満たすノードの電圧値はノード名変更情報から寄生素子を挿入時に変更するノード名を取得し、寄生素子を挿入時に変更するノードの初期値とする。例えばノード名ｎｏｄｅ３が挿入条件を満たした場合、ノード名ｎｏｄｅ３の電圧値を取得し、ノード名変更情報からノード名ｎｏｄｅ３が寄生素子を挿入時に変更するノード名ｎｏｄｅ３＿１，ｎｏｄｅ３＿２を取得し、ノード名ｎｏｄｅ３の電圧値をノード名ｎｏｄｅ３＿１，ｎｏｄｅ３＿２の初期値とする。
【００４１】
次に各ノードの初期値を利用し、回路中の全ノードの電圧値及び電流値の計算を繰り返し行う近似計算を行い（回路の解析を行い）、全ノードの電圧値、電流値の計算結果を記憶する第２計算工程を実行する（ステップ−１３５）。
【００４２】
次に全ノードが収束しているか判断する処理を実行する（ステップ−１４０）。収束していない場合はステップ−１２０の処理｛挿入判定工程（ノード毎に寄生素子の挿入条件を満たしているか判断する処理）｝に戻る。全ノードが収束していると判断する場合、寄生素子の挿入が完了しているかどうかの判断の処理を実行し（ステップ−１４５）、挿入が完了していない場合は、ステップ−１２０の処理に戻る。
【００４３】
上記ステップによる回路の再構成の流れを、図６を参照しながら説明する。
まず図６（ａ）の寄生素子を含まない回路で全ノードの電圧値、電流値を計算する。その結果ノード名ｎｏｄｅ３が挿入条件を満たしたとする。次にノード名変更情報の１列目からノード名ｎｏｄｅ３が一致する情報を取得する。ここでは素子名Ｒ３に接続している１番目のノード名をｎｏｄｅ３＿２に変更する情報と、素子名Ｑ２に接続している３番目のノード名をｎｏｄｅ３＿１に変更する情報を取得する。次に寄生素子を挿入するため処理でメモリに格納した回路情報のノード名を変更する。ここでは素子名Ｒ３に接続している１番目のノード名をｎｏｄｅ３からｎｏｄｅ３＿２に変更し、素子名Ｑ２に接続している３番目のノード名をｎｏｄｅ３からｎｏｄｅ３＿１に変更する。次にノードに付加する寄生素子情報の１列目からノード名ｎｏｄｅ３が一致する２列目以降の素子名、素子に接続しているノード名、素子パラメータを取得する。ここでは抵抗Ｒ１５、素子に接続しているノード名ｎｏｄｅ３＿１、ｎｏｄｅ３＿２、素子パラメータとして抵抗値５０を取得する。次に処理でメモリに格納した回路情報に抵抗Ｒ１５の素子名、素子に接続しているノード名、素子パラメータを追加し、図６（ｂ）の回路構成にする。
【００４４】
次にノード名ｎｏｄｅ３の電圧値を図６（ｂ）の回路構成のノード名ｎｏｄｅ３＿１およびｎｏｄｅ３＿２の初期値としてメモリに格納する。また挿入条件を満たしていないノードは図６（ｂ）の回路構成のノード名と一致するため、同じノード名の初期値としてメモリに格納する。これにより図６（ｂ）の回路構成の全ノードに初期値を設定することができる。
【００４５】
次に図６（ｂ）の回路構成で全ノードに初期値を設定し、全ノードの電圧値、電流値を計算する。その結果ノード名ｎｏｄｅ２が挿入条件を満たしたとする。次にノード名変更情報の１列目からノード名ｎｏｄｅ２が一致する情報を取得し、処理でメモリに格納した回路情報のノード名を変更する。ここでは素子名Ｒ２に接続している２番目のノード名をｎｏｄｅ２からｎｏｄｅ２＿１に変更し、素子名Ｑ２に接続している１番目のノード名をｎｏｄｅ２からｎｏｄｅ２＿２に変更する。次にノードに付加する寄生素子情報の１列目からノード名ｎｏｄｅ２が一致する２列目以降の素子名、素子に接続しているノード名、素子パラメータを取得し、処理でメモリに格納した回路情報に追加する。ここでは抵抗Ｒ１４、素子に接続しているノード名ｎｏｄｅ２＿１、ｎｏｄｅ２＿２、素子パラメータとして抵抗値５０を取得し、処理でメモリに格納した回路情報に追加し、図６（ｃ）の回路構成にする。
【００４６】
次にノード名ｎｏｄｅ２の電圧値を図６（ｃ）の回路構成のノード名ｎｏｄｅ２＿１およびｎｏｄｅ２＿２の初期値としてメモリに格納する。また挿入条件を満たしていないノード又は挿入後のノードは図６（ｃ）の回路構成のノード名と一致するため、同じノード名の初期値としてメモリに格納する。これにより図６（ｃ）の回路構成の全ノードに初期値を設定することができる。
【００４７】
次に図６（ｃ）の回路で全ノードに初期値を設定し、全ノードの電圧値、電流値を計算する。その結果ノード名ｎｏｄｅ１が挿入条件を満たしたとする。次にノード名変更情報の１列目からノード名ｎｏｄｅ１が一致する情報を取得し、処理でメモリに格納した回路情報のノード名を変更する。ここでは素子名Ｒ１に接続している１番目のノード名をｎｏｄｅ１からｎｏｄｅ１＿２に変更し、素子名Ｑ１に接続している３番目ノード名をｎｏｄｅ１からｎｏｄｅ１＿１に変更し、素子名Ｑ２に接続している２番目のノード名をｎｏｄｅ１からｎｏｄｅ１＿３に変更し、次にノードに付加する寄生素子情報の１列目からノード名ｎｏｄｅ１が一致する２列目以降の素子名、素子に接続しているノード名、素子パラメータを取得し、処理でメモリに格納した回路情報に追加する。ここでは抵抗Ｒ１１、素子に接続しているノード名ｎｏｄｅ１＿１、ｎｏｄｅ１＿４、素子パラメータとして抵抗値５０を取得し、抵抗Ｒ１２、素子に接続しているノード名ｎｏｄｅ１＿４、ｎｏｄｅ１＿２、素子パラメータとして抵抗値５０を取得し、抵抗Ｒ１３、素子に接続しているノード名ｎｏｄｅ１＿４、ｎｏｄｅ１＿３、素子パラメータとして抵抗値５０を取得し、処理でメモリに格納した回路情報に追加し、図６（ｄ）の回路構成にする。
【００４８】
次にノード名ｎｏｄｅ１の電圧値を図６（ｄ）の回路構成のノード名ｎｏｄｅ１＿１、ｎｏｄｅ１＿２、ｎｏｄｅ１＿３、ｎｏｄｅ１＿４の初期値としてメモリに格納する。また挿入条件を満たしていないノード又は挿入後のノードは図６（ｄ）の回路構成のノード名と一致するため、同じノード名の初期値としてメモリに格納する。これにより図６（ｄ）の回路構成の全ノードに初期値を設定することができる。最終的に寄生をすべて含む図６（ｄ）の回路構成にして全ノードに初期値を設定し、全ノードの電圧値、電流値を計算し、全ノードが収束するまで繰り返し計算する。
【００４９】
以上のように、解析中に寄生素子を挿入し全ノードに解に近い初期値を設定して全ノードの電圧値および電流値を計算することにより、すなわち解析中に寄生素子を回路情報に徐々に挿入しながら解析を行い、そのとき、回路の再構成前の解析結果を再構成後の初期値として解析を継続することにより、ノードに対して解に近い初期値を与えることができ、収束条件を満たしにくい寄生素子を考慮にいれた大規模な回路でも収束しやすくなり、寄生素子を含む回路のシミュレーションの収束性を向上できるシミュレーション方法を提供することができる。
【００５０】
なお、本実施の形態では、寄生素子を抵抗としているが、抵抗に限ることはなく、他の素子、例えばコンデンサなどであってもよい。
また本実施の形態では、近似計算の過程で得られた電圧値、電流値が収束条件を満たしているノードを求めているが、１つ前の近似計算の過程で得られた電圧値、電流値が収束条件を満たしているノードを求めるようにすることも可能である。
【産業上の利用可能性】
【００５１】
本発明にかかるシミュレーション方法は、寄生素子を含む回路のシミュレーションの収束性を向上でき、さらに高集積化が進む集積回路のシミュレーションに有用である。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施の形態における寄生素子を含むシミュレーション方法の処理フローチャートである。
【図２】図１におけるノード名変更情報を作成する処理の詳細なフローチャートである。
【図３】ノード名変更情報を示す図である。
【図４】図１における寄生素子情報を作成する処理の詳細なフローチャートである。
【図５】寄生素子情報を示す図である。
【図６】回路の再構成の流れを示す順に示す回路図である。
【図７】電圧Ｖの１つに簡略化した回路方程式ｆ（Ｖ）＝０のグラフである。
【図８】（ａ）寄生素子を含まない回路図、（ｂ）寄生素子を含む回路図である。
【図９】（ａ）寄生素子を含まない回路のネットリスト、（ｂ）寄生素子を含む回路のネットリストである。
【図１０】ＳＰＩＣＥのＤＣ動作点解析の処理フローチャートである。
【図１１】過渡解析で解析時間毎に寄生素子を考慮にいれるかいれないか切り替え回路動作検証する技術の処理フローチャートである。
【符号の説明】
【００５３】
Ｑ１  バイポーラトランジスタ
Ｑ２  バイポーラトランジスタ
Ｒ１  抵抗
Ｒ２  抵抗
Ｒ３  抵抗
Ｒ１１  寄生の抵抗（寄生素子の一例）
Ｒ１２  寄生の抵抗（寄生素子の一例）
Ｒ１３  寄生の抵抗（寄生素子の一例）
Ｒ１４  寄生の抵抗（寄生素子の一例）
Ｒ１５  寄生の抵抗（寄生素子の一例）
【図１】
2006172233.tif 000003
【図２】
2006172233.tif 000004
【図３】
2006172233.tif 000005
【図４】
2006172233.tif 000006
【図５】
2006172233.tif 000007
【図６】
2006172233.tif 000008
【図７】
2006172233.tif 000009
【図８】
2006172233.tif 000010
【図９】
2006172233.tif 000011
【図１０】
2006172233.tif 000012
【図１１】
2006172233.tif 000013