(57)【要約】【課題】シミュレーション時間を十分に短縮することができるシミュレーション対象回路の分割方法を提供すること。【解決手段】ネットリストに基づいて、前記シミュレーション対象回路を、複数の部分回路、及び前記複数の部分回路間を結合する複数の結合回路、に分割し、前記シミュレーション対象回路がどのように分割されているかを示す分割後データを生成するステップと、前記分割後データに基づいて、前記複数の結合回路をマージするべきか否かを判定するステップと、前記判定するステップにおける判定結果を、前記分割後データに反映させ、反映後分割データを生成するステップと、前記反映後分割データに基づいて、複数のプロセッサそれぞれが前記シミュレーション対象回路のうちのどの部分のシミュレーションを行うかを示す、分割ネットリストを生成するステップとを具備する。【選択図】図３
2011145753.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、シミュレーション対象回路を示すネットリストを取得するステップと、
コンピュータが、前記ネットリストに基づいて、前記シミュレーション対象回路を、複数の部分回路、及び前記複数の部分回路間を結合する複数の結合回路、に分割し、前記シミュレーション対象回路がどのように分割されているかを示す分割後データを生成するステップと、
コンピュータが、前記分割後データに基づいて、前記複数の結合回路をマージするべきか否かを判定するステップと、
コンピュータが、前記判定するステップにおける判定結果を、前記分割後データに反映させ、反映後分割データを生成するステップと、
コンピュータが、前記反映後分割データに基づいて、複数のプロセッサそれぞれが前記シミュレーション対象回路のうちのどの部分のシミュレーションを行うかを示す、分割ネットリストを生成するステップと、
を具備する
シミュレーション対象回路の分割方法。
【請求項２】
請求項１に記載されたシミュレーション対象回路の分割方法であって、
前記判定するステップは、
前記複数の結合回路の中から、マージ判定対象となる２つの結合回路を、２つのマージ対象回路として選択するステップと、
前記２つのマージ対象回路が分割されている場合について、前記２つのマージ対象回路の動作状態をシミュレーションする際の計算負荷を計算し、その計算結果を示すマージ前データを生成するステップと、
前記２つのマージ対象回路が１つのマージ後回路にマージされた場合について、前記マージ後回路の動作状態をシミュレーションする際の計算負荷を計算し、その計算結果を示すマージ後データを生成するステップと、
前記マージ前データと前記マージ後データとを比較し、比較結果に基づいて、前記２つのマージ対象回路をマージするか否かを決定するステップとを有する
シミュレーション対象回路の分割方法。
【請求項３】
請求項２に記載されたシミュレーション対象回路の分割方法であって、
前記マージ前データを生成するステップは、ガウスの消去法を用いて前記２つのマージ対象回路の動作状態をシミュレーションする際の計算負荷を、前記マージ前データとして計算するステップを備え、
前記マージ後データを生成するステップは、ガウスの消去法を用いて前記マージ後回路の動作状態をシミュレーションする際の計算負荷を、前記マージ後データとして計算するステップを備える
シミュレーション対象回路の分割方法。
【請求項４】
請求項３に記載されたシミュレーション対象回路の分割方法であって、
前記マージ前データとして計算するステップは、
前記２つのマージ対象回路に関して、ガウスの消去法の前進消去処理における計算回数を、マージ前計算回数として求めるステップと、
前記マージ前計算回数に基づいて、前記マージ前データを計算するステップを含み、
前記マージ後データとして計算するステップは、
前記マージ後回路に関して、ガウスの消去法の前進消去処理における計算回数を、マージ後計算回数として求めるステップと、
前記マージ後計算回数に基づいて、前記マージ後データを計算するステップを含む
シミュレーション対象回路の分割方法。
【請求項５】
請求項１乃至４のいずれかに記載されたシミュレーション対象回路の分割方法であって、
前記分割後データを生成するステップは、
分割後の計算負荷を計算するステップと、
前記分割後の計算負荷を計算するステップにおける計算結果に基づいて、分割するか否かを決定するステップとを備える
シミュレーション対象回路の分割方法。
【請求項６】
請求項１乃至５のいずれかに記載されたシミュレーション対象回路の分割方法であって、
前記分割ネットリストを生成するステップは、
前記反映後分割データに基づいて、前記シミュレーション対象回路に含まれる複数の回路要素のシミュレーション処理を前記複数のプロセッサに別々に割り当てたときの計算負荷を計算し、その計算結果を示す並列回路シミュレーションデータを生成するステップと、
前記並列回路シミュレーション結果データに基づいて、前記分割ネットリストを生成するステップとを備える
シミュレーション対象回路の分割方法。
【請求項７】
請求項１乃至６のいずれかに記載されたシミュレーション対象回路の分割方法をコンピュータに実行させる、シミュレーション対象回路の分割プログラム。
【請求項８】
シミュレーション対象回路を示すネットリストを取得するネットリスト取得手段と、
前記ネットリストに基づいて、前記シミュレーション対象回路を、複数の部分回路、及び前記複数の部分回路間を結合する複数の結合回路、に分割し、分割後の前記シミュレーション対象回路がどのように分割されているかを示す分割後データを生成する、分割データ生成手段と、
前記複数の結合回路をマージするべきか否かを判定する、マージ判定手段と、
前記マージ判定手段による判定結果を、前記分割後データに反映させ、反映後分割データを生成する、反映後分割データ生成手段と、
前記反映後分割データに基づいて、複数のプロセッサそれぞれが前記シミュレーション対象回路のうちのどの部分のシミュレーションを行うかを示す、分割ネットリストを生成する、分割ネットリスト生成手段と、
を具備する
シミュレーション対象回路の分割装置。
【請求項９】
請求項８に記載されたシミュレーション対象回路の分割装置であって、
前記マージ判定手段は、
前記複数の結合回路の中から、マージ判定対象となる２つ結合回路を、２つのマージ対象回路として選択する、選択手段と、
前記２つのマージ対象回路が分割されている場合について、前記２つのマージ対象回路の動作状態をシミュレーションする際の計算負荷を計算し、その計算結果を示すマージ前データを生成する、マージ前データ生成手段と、
前記２つのマージ対象回路が１つのマージ後回路にマージされた場合について、前記マージ後回路の動作状態をシミュレーションする際の計算負荷を計算し、その計算結果を示すマージ後データを生成する、マージ後データ生成手段と、
前記マージ前データと前記マージ後データとを比較し、比較結果に基づいて、前記２つのマージ対象回路をマージするか否かを決定する、決定手段とを有する
シミュレーション対象回路の分割装置。
【請求項１０】
請求項９に記載されたシミュレーション対象回路の分割装置であって、
前記マージ前データ生成手段は、ガウスの消去法を用いて前記２つのマージ対象回路の動作状態をシミュレーションする際の計算負荷を、前記マージ前データとして計算し、
前記マージ後データ生成手段は、ガウスの消去法を用いて前記マージ後回路の動作状態をシミュレーションする際の計算負荷を、前記マージ後データとして計算する
シミュレーション対象回路の分割装置。
【請求項１１】
請求項１０に記載されたシミュレーション対象回路の分割装置であって、
前記マージ前データ生成手段は、前記２つのマージ対象回路に関して、ガウスの消去法の前進消去処理における計算回数を、マージ前計算回数として求め、前記マージ前計算回数に基づいて、前記マージ前データを計算し、
前記マージ後データ生成手段は、前記マージ後回路に関して、ガウスの消去法の前進消去処理における計算回数を、マージ後計算回数として求め、前記マージ後計算回数に基づいて、前記マージ後データを計算する
シミュレーション対象回路の分割装置。
【請求項１２】
請求項８乃至１１のいずれかに記載されたシミュレーション対象回路の分割装置であって、
前記分割データ生成手段は、分割後の計算負荷を計算し、前記分割後の計算負荷を計算するステップにおける計算結果に基づいて、分割するか否かを決定する
シミュレーション対象回路の分割装置。
【請求項１３】
請求項８乃至１２のいずれかに記載されたシミュレーション対象回路の分割装置であって、
前記分割ネットリスト生成手段は、前記反映後分割データに基づいて、前記シミュレーション対象回路に含まれる複数の回路要素のシミュレーション処理を前記複数のプロセッサに別々に割り当てたときの計算負荷を計算し、その計算結果を示す並列回路シミュレーションデータを生成し、前記並列回路シミュレーション結果データに基づいて、前記分割ネットリストを生成する
シミュレーション対象回路の分割装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション対象回路の分割方法、シミュレーション対象回路の分割装置、及びシミュレーション対象回路の分割プログラムに関する。
【背景技術】
【０００２】
半導体集積回路（ＬＳＩ；Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の高集積化が進んでいる。ＬＳＩの回路設計を行う場合、設計した回路で所望の動作特性が得られるか否かを検証するために、回路シミュレーションが行われる。
【０００３】
ＬＳＩの回路は、大規模化している。設計対象の回路が大規模であるほど、シミュレーション時間が長くなる。従って、シミュレーション時間を短縮することのできる技術が望まれている。
【０００４】
シミュレーション時間を短縮するために、複数のプロセッサが用いられることがある。この場合、シミュレーション対象となる回路が、複数の回路要素に分割される。複数の回路要素は、複数の部分回路、及び結合回路を含んでいる。複数の部分回路の各々は、トランジスタや抵抗などの素子を含む回路である。結合回路は、複数の部分回路同士を接続する節点である。複数のプロセッサの各々には、個々の回路要素が割り当てられる。各プロセッサは、割り当てられた回路要素に関して、計算を行う。複数のプロセッサによって並列的に計算が行われるため、シミュレーション時間を短縮することが可能である。
【０００５】
関連技術として、特許文献１（特開２００４−１３４６５号公報）に記載された回路分割方法が挙げられる。この回路分割方法では、各部分回路が、複数の部分回路と、それら複数の部分回路同士を接続する節点からなり部分回路間を結合する結合回路とに分割される。更に、分割後のシミュレーション時間の予測値の和、及び部分回路数がプロセッサ数を超えたか否か、に応じて、各部分回路が分割不可であるか又は分割可であるかが判定される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−１３４６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載された回路分割方法によれば、シミュレーション対象の回路が、複数の部分回路と、それら複数の部分回路同士間を結合する結合回路とに分割される。そして、複数の部分回路の各々は、可能であれば、更にその下位の複数の部分回路と、結合回路とに分割されていく。その結果、シミュレーション対象の回路が、上位の結合回路と下位の結合回路とによる階層構造によって表されることがある。図１は、そのようなシミュレーション対象回路の分割状態の一例を示す概略図である。図１に示されるシミュレーション対象回路は、複数の結合回路（Ｃ１〜Ｃ４）、及び複数の部分回路（Ｓ１〜Ｓ５）に分割されている。結合回路Ｃ１の下位には、結合回路Ｃ２及びＣ３が接続されている。結合回路Ｃ３の下位には、更に、結合回路Ｃ４が接続されている。
【０００８】
図１に示される例のような分割状態でシミュレーション計算を行う場合、上位の結合回路に関する計算を行う際に、下位の結合回路に関する計算結果を反映させる処理が必要となる。ここで、上位の結合回路と下位の結合回路との間で、同一の節点が重複することがある。また、各結合回路のシミュレーション時間を抑えるためには、各結合回路に所属する節点の数を抑制することが重要である。その結果、各結合回路には、多数の素子に接続される節点が含まれ易い。多数の素子に接続される節点が上位の結合回路と下位の結合回路とで重複する場合、下位の結合回路に関する計算結果を上位の結合回路に反映させる際の計算負荷が大きくなる。そのため、シミュレーション時間を十分に短縮することができない、という問題点があった。
【課題を解決するための手段】
【０００９】
本発明に係るシミュレーション対象回路の分割方法は、コンピュータが、シミュレーション対象回路を示すネットリストを取得するステップと、コンピュータが、前記ネットリストに基づいて、前記シミュレーション対象回路を、複数の部分回路、及び前記複数の部分回路間を結合する複数の結合回路、に分割し、前記シミュレーション対象回路がどのように分割されているかを示す分割データを生成するステップと、コンピュータが、前記複数の結合回路をマージするべきか否かを判定するステップと、コンピュータが、前記判定するステップにおける判定結果を、前記分割データに反映させ、反映後分割データを生成するステップと、コンピュータが、前記反映後分割データに基づいて、複数のプロセッサそれぞれが前記シミュレーション対象回路のうちのどの部分のシミュレーションを行うかを示す、分割ネットリストを生成するステップとを具備する。
【００１０】
この発明によれば、複数の結合回路をマージすべきか否かが判定される。従って、シミュレーション対象回路を最適に分割することができ、シミュレーション時間を短縮することが可能になる。
【００１１】
本発明に係るシミュレーション回路の分割プログラムは、上述のシミュレーション対象回路の分割方法をコンピュータに実行させるためのプログラムである。
【００１２】
本発明に係るシミュレーション対象回路の分割装置は、シミュレーション対象回路を示すネットリストを取得するネットリスト取得手段と、前記ネットリストに基づいて、前記シミュレーション対象回路を、複数の部分回路、及び前記複数の部分回路間を結合する複数の結合回路、に分割し、前記シミュレーション対象回路がどのように分割されているかを示す分割データを生成する、分割データ生成手段と、前記複数の結合回路をマージするべきか否かを判定する、マージ判定手段と、前記マージ判定手段による判定結果を、前記分割データに反映させ、反映後分割データを生成する、反映後分割データ生成手段と、前記反映後分割データに基づいて、複数のプロセッサそれぞれが前記シミュレーション対象回路のうちのどの部分のシミュレーションを行うかを示す、分割ネットリストを生成する、分割ネットリスト生成手段とを具備する。
【発明の効果】
【００１３】
本発明によれば、シミュレーション時間を短縮することのできる、シミュレーション対象回路の分割方法、シミュレーション対象回路の分割装置、及びシミュレーション対象回路の分割プログラムが提供される。
【図面の簡単な説明】
【００１４】
【図１】シミュレーション対象回路の分割状態の一例を示す概略図である。
【図２】回路シミュレーション装置を示すブロック図である。
【図３】分割装置を示すブロック図である。
【図４】分割データ格納部に格納されたデータの一例を示す概念図である。
【図５Ａ】分割装置の動作方法を示すフローチャートである。
【図５Ｂ】分割装置の動作方法を示すフローチャートである。
【図６】ステップＳ７の動作を詳細に示すフローチャートである。
【図７】ニュートン反復法を用いた回路シミュレーション処理を示すフローチャートである。
【図８】連立１次方程式の係数行列Ａの一例を示す概略図である。
【図９】変換後の係数行列を示す概略図である。
【図１０】前進消去処理を示すフローチャートである。
【図１１Ａ】結合回路Ｃ３に関する係数行列Ｃ３を示す概略図である。
【図１１Ｂ】結合回路Ｃ４に関する係数行列Ｃ４を示す概略図である。
【図１２】マージ後回路の係数行列を示す概略図である。
【図１３】分割後データの一例を示す概念図である。
【図１４Ａ】分割状態の一例を示す概略図である。
【図１４Ｂ】分割状態の一例を示す概略図である。
【図１４Ｃ】分割状態の一例を示す概略図である。
【図１４Ｄ】分割状態の一例を示す概略図である。
【図１４Ｅ】分割状態の一例を示す概略図である。
【図１５】マージ後の分割状態を示す図である。
【発明を実施するための形態】
【００１５】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【００１６】
図２は、本実施形態に係る回路シミュレーション装置１００を示すブロック図である。
【００１７】
回路シミュレーション装置１００は、ネットリスト格納部１０１及び解析結果格納部１０３に接続されている。ネットリスト格納部１０１は、ネットリストを記憶している。ネットリストは、シミュレーション対象回路に含まれる素子の接続関係や、その素子の物理的性質などを示す情報である。ネットリスト格納部１０１は、例えばハードディスクなどにより実現される。回路シミュレーション装置１００は、ネットリスト格納部１０１からネットリストを読み込む。回路シミュレーション装置１００は、ネットリストに基づいて、シミュレーション対象回路の回路シミュレーション計算を行う。回路シミュレーション装置１００は、計算結果を、解析結果格納部１０３に格納する。解析結果格納部１０３は、例えば、ハードディスクなどにより実現される。
【００１８】
回路シミュレーション装置１００は、シミュレーション対象回路の分割装置１０４、分割ネットリスト格納部１０２、及び回路シミュレーション処理部１０５を備えている。回路シミュレーション処理部１０５は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの記録媒体にインストールされたシミュレーション対象回路の分割プログラムにより、実現される。分割ネットリスト格納部１０２は、ハードディスクなどの記憶媒体により、実現される。
【００１９】
回路シミュレーション処理部１０５は、複数のプロセッサを用いて、並列的に、シミュレーション計算をおこなう。分割装置１０４は、複数のプロセッサそれぞれがシミュレーション対象回路のうちのどの部分の計算を行うかを決定する装置である。すなわち、分割装置１０４は、ネットリストに基づいて、シミュレーション対象回路を、複数の回路要素（複数の部分回路及び複数の結合回路）に分割する。そして、シミュレーション対象回路の分割状態を示す分割ネットリストを生成し、分割ネットリスト格納部１０２に格納する。回路シミュレーション処理部１０５は、分割ネットリストに基づいて、各プロセッサに割り当てられる回路要素を決定する。
【００２０】
ここで、シミュレーション時間を短縮するためには、シミュレーション対象回路が適切に分割されていることが重要である。そこで、本実施形態では、分割装置１０４の構成が工夫されている。
【００２１】
図３は、分割装置１０４を示すブロック図である。図３に示されるように、分割装置１０４は、ネットリスト取得部１、分割データ生成部２、マージ判定部３、分割データ格納部４、反映後分割データ生成部５、及び分割ネットリスト生成部６を備えている。このうび、ネットリスト取得部１、分割データ生成部２、マージ判定部３、分割後データ生成部５、及び分割ネットリスト生成部６は、コンピュータにインストールされた、シミュレーション対象回路の分割プログラムによって、実現される。分割データ格納部４は、ハードディスクやＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）などの記憶装置によって実現される。
【００２２】
ネットリスト取得部１は、ネットリスト格納部１０１からネットリストを取得する。
【００２３】
分割データ生成部２は、ネットリストに基づいて、シミュレーション対象回路の分割状態を決定し、その分割状態を示す分割後データを生成する。具体的には、分割データ生成部２は、シミュレーション対象回路を、複数の部分回路、及びそれらを接続する節点である結合回路に分割する。複数の部分回路の各々は、必要に応じて、複数の部分回路と結合回路とに更に分割される。その結果、分割後データ中には、上位の結合回路と下位の結合回路とによる階層構造が含まれることがある。
【００２４】
マージ判定部３は、分割後データに上位の結合回路と下位の結合回路とが存在する場合に、下位の結合回路を上位の結合回路にマージすべきか否かを判定する。マージ判定部３は、選択部３１、マージ前データ生成部３２、マージ後データ生成部３３、及び決定部３４を備えている。選択部３１は、マージ対象となる２つの結合回路を、マージ対象回路として選択する。マージ前データ生成部３２は、２つのマージ対象回路に関する計算を別々のプロセッサに割り当てた場合の計算負荷を、マージ前データとして計算する。マージ後データ生成部３３は、２つのマージ対象回路を一つのマージ後回路にマージして計算を行った場合（１つのプロセッサにより計算を行った場合）の計算負荷を、マージ後データとして計算する。決定部３４は、マージ前データとマージ後データとを比較し、２つのマージ対象回路をマージすべきか否かを決定する。
【００２５】
反映後分割データ生成部５は、マージ判定部３による判定結果を分割後データに反映させ、反映後分割データを生成する。反映後分割データは、必要に応じて、分割データ格納部４に分割データとして格納される。
【００２６】
分割データ格納部４は、分割装置１０４の動作により生じたデータを、分割データとして保存している。図４は、分割データ格納部４に格納されたデータの一例を示す概念図である。図４に示されるように、分割データ格納部４には、複数の分割状態に対応して、複数の分割データが格納されている。各分割データにおいて、シミュレーション対象回路は、少なくとも一の回路要素によって表現されている。図４に示される例では、シミュレーション対象回路は、複数の回路要素（複数の部分回路Ｓ及び複数の結合回路Ｃ）によって表現されている。例えば、分割データＡでは、シミュレーション対象回路が、結合回路Ｃ１０１、結合回路Ｃ１０２、部分回路Ｓ１０３、部分回路Ｓ１０４、及び部分回路Ｓ１０５によって表現されている。また、分割データにおいて、各回路要素には、シミュレーション時間の予測値ｔが対応付けられている。また、各部分回路Ｓには、分割処理が終了したか否かを示す分割終了フラグが対応付けられている。また、各分割データには、複数のプロセッサによって並列的にシミュレーションを行った場合のシミュレーション時間の予測値が、全体シミュレーション時間Ｔｔｏｔａｌとして示されている。更に、分割データ格納部４には、複数の分割データのうちで予測値Ｔｔｏｔａｌが最小である分割データを特定する情報が格納されている。また、Ｔｔｏｔａｌの最小値が、Ｔｍｉｎとして格納されている。
【００２７】
再び図３を参照する。分割ネットリスト生成部６は、分割データ格納部４を参照して、予測値Ｔｔｏｔａｌが最小である分割データを取得し、分割ネットリストとして出力する。分割ネットリストは、分割ネットリスト格納部１０２に格納される。
【００２８】
続いて、分割装置１０４の動作方法について詳述する。図５Ａ及び図５Ｂは、分割装置１０４の動作方法を示すフローチャートである。
【００２９】
分割装置１０４は、ネットリスト取得部１がネットリストを取得することにより、以下の処理を開始する。
【００３０】
まず、分割データ生成部２が、以下のステップＳ１及びＳ２の処理により、初期設定を行う。
【００３１】
ステップＳ１；
まず、分割データ生成部２が、ネットリストに記載されるシミュレーション対象回路全体を１つの部分回路Ｓ０とみなし、初期的な分割データ（初期データ）を生成する。
【００３２】
ステップＳ２；
次いで、分割データ生成部２は、部分回路Ｓ０に対するシミュレーション時間の予測値を計算する。計算結果は、部分回路Ｓ０に予測値ｔとして対応付けられる。また、予測値ｔは、予測値Ｔｔｏｔａｌとして、初期データに反映される。更に、初期データにおいて、部分回路Ｓ０に対する分割終了フラグが、ＯＦＦに設定される。初期データは、分割データ格納部４に格納される。この際、Ｔｍｉｎとして、初期データの予測値Ｔｔｏｔａｌが設定される。
【００３３】
次いで、分割データ生成部３は、初期データを分割前データとして選択する。そして、分割前データに対して、以下のステップＳ３及びＳ４の動作により、分割処理を施す。
【００３４】
ステップＳ３；
分割データ生成部３は、分割前データに記載される回路要素のうち、分割終了フラグがＯＦＦに設定されている部分回路を検索する。さらに、検索結果である部分回路の中から、予測値ｔが最大値（Ｗｉ）である部分回路を、分割対象回路として選択する。分割前データが初期データであれば、部分回路Ｓ０が分割対象回路として検索結果として抽出されることになる。
【００３５】
ステップＳ４；
次いで、分割データ生成部２は、分割対象回路を、２つの下位の部分回路と、これら２つの下位の部分回路を接続する節点である結合回路とに分割する。分割データ生成部２は、この分割状態を示すデータを、分割後データとして生成する。
【００３６】
次いで、分割データ生成部３は、以下のステップＳ５及びＳ６の処理により、分割後データが妥当であるか否かを判定する。
【００３７】
ステップＳ５；
分割データ生成部２は、新たに生じた２つの部分回路、及び結合回路それぞれについて、シミュレーション時間の予測値を計算する。計算結果は、予測値ｔとして、分割後データに反映される。さらに、新たに生じた２つの部分回路、及び結合回路について、予測値ｔの和をＷｊとして求める。
【００３８】
ステップＳ６；
さらに、分割データ生成部２は、予測値ｔの和Ｗｊと、分割前データにおける分割対象回路の予測値ｔ（Ｗｉ）とを比較する。また、分割データ生成部２は、分割後データに含まれる回路要素の数が、予め設定されたプロセッサ数を超えているか否かを判定する。和Ｗｉが予測値Ｗｊより大きく、且つ、回路要素の数がプロセッサ数を超えた場合には、分割後データが妥当ではないと判定される。すなわち、分割対象回路は分割されるべきではない、と判定される。一方、和Ｗｉが予測値Ｗｊ以下である場合、又は、回路要素の数がプロセッサ数を超えていない場合には、分割後データが妥当であると判定される。すなわち、分割対象回路は分割されるべきである、と判定される。
【００３９】
ステップＳ６において、妥当であると判定された場合には、ステップＳ７の処理が行われる。一方、妥当でないと判定された場合、分割データ生成部２は、分割対象回路の分割終了フラグをオンに設定し、分割前データを変更する（ステップＳ１４）。ステップＳ１４の後、分割データ生成部２は、変更された分割前データについて、全ての部分回路の分割終了フラグがオンであるか否かを判定する（ステップＳ１５）。全ての分割終了フラグがオンである場合（ステップＳ１５；Ｙ）には、分割ネットリスト生成部６が、分割データ格納部４を参照する。そして、分割ネットリスト生成部６は、Ｔｍｉｎが対応付けられた分割データを選択し、選択された分割データを分割ネットリストとして出力する（ステップＳ１３）。一方、分割終了フラグがオフである部分回路が存在する場合（ステップＳ１５；Ｎ）には、変更された分割前データを用いて、ステップＳ３以降の処理が繰り返される。
【００４０】
ステップＳ７；
ステップＳ６で分割後データが妥当であると判定された場合、マージ判定部３が、分割後データ中に、マージ可能な２つの結合回路が存在するか否かを判定する。さらに、反映後分割データ生成部３が、マージ判定部３による判定結果を、分割後データに対して反映させ、反映後分割データを生成する。尚、分割前データが初期データである場合、分割後データ中には、結合回路が１つしか存在しない。このような場合には、分割後データがそのまま反映後分割データとして用いられることになる。尚、本ステップにおける処理の詳細は、後述される。
【００４１】
ステップＳ８；
次いで、分割データ生成部２が、反映後分割データに基づいて、各回路要素を各プロセッサに割り当てる。この際、分割データ生成部２は、複数のプロセッサ間でシミュレーション時間の予測値が均等になるように、各回路要素を割り当てる。具体的には、例えばクリティカルパス法（参考文献：「並列処理技術」、笠原博徳著、コロナ社）など用いて、各プロセッサに各回路要素が割り当てられる。
【００４２】
ステップＳ９；
次いで、分割データ生成部２が、ステップＳ８の処理結果に基づいて、複数のプロセッサを用いて並列的にシミュレーション計算が行われた場合におけるシミュレーション時間の予測値Ｔを、計算する（ステップＳ９）。
【００４３】
ステップＳ１０；
次いで、分割データ生成部２は、ステップＳ９で計算された予測値Ｔが、分割データ格納部１０４に格納されているＴｍｉｎより小さいか否かを判定する。
【００４４】
ステップＳ９で計算された予測値Ｔの方が小さい場合（ステップＳ１０；Ｙ）には、次のステップＳ１１の処理が実行される。一方、予測値ＴがＴｍｉｎ以上である場合（ステップＳ１０；Ｎ）には、ステップＳ１６の処理が実行される。ステップＳ１６では、分割前データが反映後分割データに変更される。そして、変更された分割前データを用いて、ステップＳ３以降の処理が繰り返される。
【００４５】
ステップＳ１１；
ステップＳ９で計算された予測値Ｔの方が短い場合（ステップＳ１０；Ｙ）、分割データ生成部２は、分割データ格納部４にアクセスし、ＴｍｉｎをステップＳ９の計算結果である予測値Ｔに更新する。さらに、分割データ生成部２は、反映後分割データを、分割データとして、分割データ格納部４に格納する。
【００４６】
ステップＳ１２；
次いで、分割データ生成部２は、分割後データに記載される全ての部分回路の分割終了フラグがオンであるか否かを判定する。
【００４７】
全ての分割終了フラグがオンである場合（ステップＳ１２；Ｙ）、分割ネットリスト生成部６が分割データ格納部４を参照する。そして、Ｔｍｉｎに対応付けられた分割データを、分割ネットリストとして出力する（ステップＳ１３）。一方、分割終了フラグがオフである部分回路が存在する場合（ステップＳ１２；Ｎ）、分割データ生成部２は、分割前データを、現在の分割後データに変更する。（ステップＳ１７）。そして、変更された分割前データを用いて、ステップＳ３以降の処理が繰り返される。
【００４８】
以上説明した動作により、分割ネットリストが生成され、分割ネットリスト格納部１０２に格納される。尚、分割前データが初期データである場合には、分割後データ中に結合回路が１つしか存在しない。しかしながら、分割処理（ステップＳ４）の動作が複数回実行されれば、分割後データ中に複数の結合回路が含まれることになる。このような場合に、本実施形態によれば、マージ判定部３が、分割後データに対し、２つの結合回路をマージすべきか否かを判定する。そして、必要に応じて、２つの結合回路がマージされる。その結果、分割ネットリストとして、シミュレーション時間が短縮されるような分割状態を示すデータが出力される。これにより、シミュレーション時間を短縮することができる。
【００４９】
以下に、マージ判定部３及び反映後分割データ生成部５の動作を、具体的について説明する。すなわち、ステップＳ７における動作を、詳細に説明する。図６は、ステップＳ７の動作を詳細に示すフローチャートである。
【００５０】
まず、選択部３１が、以下のステップＳ１８〜Ｓ２０の処理により、２つのマージ対象回路を選択する。
【００５１】
ステップＳ１８；
選択部３１は、分割後データ中に含まれる各結合回路について、マージ可能であるか否かの判定を行う順番を決定する。選択部３１は、決定した順番に従って、一つの結合回路を、下位のマージ対象回路として選択する。
【００５２】
ステップＳ１９；
ついで、選択部３１は、ステップＳ１８で選択された下位のマージ対象回路の上位に接続された結合回路を検索する。
【００５３】
ステップＳ２０；
次いで、選択部３１は、ステップＳ１９の検索結果に基づいて、上位の結合回路が存在するか否かを判定する。上位の結合回路が存在した場合には、その上位の結合回路を、上位のマージ対象回路として選択する。これにより、２つのマージ対象回路が選択される。一方、上位の結合回路が存在しなかった場合には、後述されるステップＳ２５の処理が実行される。
【００５４】
２つのマージ対象回路が選択された場合、以下のステップＳ２１以降の処理が実行される。
【００５５】
ステップＳ２１；
マージ前データ生成部３２が、２つのマージ対象回路をマージしない場合について、２つのマージ対象回路のシミュレーションに要する計算負荷を計算する。マージ前データ生成部３２は、この計算結果を示すマージ前データＷｂｅｆｏｒｅを生成する。
【００５６】
ステップＳ２２；
一方、マージ後データ生成部３３は、２つのマージ対象回路を１つのマージ後回路にマージした場合について、マージ後回路のシミュレーションに要する計算負荷を計算する。マージ後データ生成部３２は、この計算結果を示すマージ後データＷａｆｔｅｒを生成する。
【００５７】
ステップＳ２３；
決定部３４が、ＷｂｅｆｏｒｅがＷａｆｔｅｒよりも大きいか否かを判定する。ＷｂｅｆｏｒｅがＷａｆｔｅｒよりも大きい場合、マージした方がよいと判定され、次のステップＳ２４の処理が実行される。一方、ＷｂｅｆｏｒｅがＷａｆｔｅｒ以下である場合には、マージしない方が良いと判定され、ステップＳ２５の処理が実行される。
【００５８】
ステップＳ２４；
一方、ＷｂｅｆｏｒｅがＷａｆｔｅｒよりも大きい場合、反映後分割データ生成部５が、２つのマージ対象回路を一つのマージ後回路にマージする。
【００５９】
ステップＳ２５；
次いで、選択部３１が、全ての結合回路について、ステップＳ１９〜Ｓ２４の処理が終了したか否かを判定する。全ての結合回路について処理が終了していた場合には、反映後分割データ生成部５が、最終的な分割状態を示すデータを、反映後分割データとして生成する。一方、処理が行われていない結合回路が存在する場合には、ステップＳ１８で決定された順番に従って、次の結合回路が下位のマージ対象回路として選択される。そして、ステップＳ１９以降の処理が繰り返される。
【００６０】
ここで、マージ前の計算負荷（マージ前データＷｂｅｆｏｒｅ）及びマージ後の計算負荷（マージ後データＷａｆｔｅｒ）について、一例を挙げて説明する。回路シミュレーションにおける計算負荷は、回路シミュレーションにおける計算方法に依存する。一般的に、回路シミュレーションは、ニュートン反復法を用いて行われる。そこで、以下では、ニュートン反復法を用いた回路シミュレーション処理の一例について説明する。
【００６１】
図７は、ニュートン反復法を用いた回路シミュレーション処理を示すフローチャートである。まず、（分割）ネットリストがコンピュータに読み込まれ、多数個の変数ｘ（例えば、節点の電圧）に関する回路方程式ｆ（ｘ）＝０が作成される。回路方程式ｆ（ｘ）＝０は、連立方程式である（ステップＳ２６）。次いで、回路方程式ｆ（ｘ）＝０が、以下のステップＳ２７〜Ｓ３１に示されるニュートン反復法を用いて、求解される。具体的には、ｘとして任意の初期値ｘ０が設定される（ステップＳ２７）。ついで、素子モデルの計算が行われる。具体的には、ｘ＝ｘ０におけるｆ（ｘ）＝０の接線を示す方程式が、素子モデルとして作成される。すなわち、ｆ’（ｘ０）の傾きを有し、且つ、点（ｘ０、ｆ’（ｘ０））を通る方程式が作成される。この方程式は、多元連立一次方程式として、作成される（ステップＳ２８）。次いで、接線方程式とｘ軸との交点におけるｘの値が、ｘ１として算出される（ステップＳ２９及びＳ３０）。ついで、この値ｘ１とステップＳ２７で設定された初期値ｘ０とが比較され、その差に基づいて収束したか否かが判定される（ステップＳ３１）。収束していない場合、変数ｘとしてｘ１が与えられ、ステップＳ２７以降の処理が繰り返される。一方、収束した場合には、ステップＳ２９及びＳ３０の処理で得られたｘの値が、結果として出力される。
【００６２】
ステップＳ２９及びステップＳ３０における処理方法（多元１次連立方程式を解く方法）は、多数考えられる。但し、回路シミュレーション処理を行う場合には、ガウス消去法が一般的に使用される。以下では、ガウス消去法を用いて多元連立一時方程式を解く方法について説明する。ガウス消去法では、前進消去処理（ステップＳ２９）と、後退代入処理（ステップＳ３０）とが行われる。
【００６３】
１次連立方程式は、係数行列をＡ、求めたい変数をｘ、連立方程式の定数成分をｂとすれば、Ａｘ＝ｂで表わすことができる。図８は、連立１次方程式の係数行列Ａの一例を示す図である。ステップＳ２８において、図８に示されるように、行列サイズがＮである正方行列（Ｎ行Ｎ列の正方行列）が係数行列Ａとして作成されたとする。
【００６４】
前進消去処理（ステップＳ２９）とは、係数行列Ａに含まれる各行列要素を変換する処理である。前進消去処理により、図８に示される係数行列Ａが、図９に示されるような行列に変換される。図１０は、前進消去処理を示すフローチャートである。図１０を参照して、前進消去処理を詳述する。
【００６５】
まず、行番号ｉが、１に設定される（ステップＳ３２）。ついで、列番号ｊが、ｉ＋１（＝２）に設定される（ステップＳ３３）。次いで、値ｒが、ｒ＝ａｊｉ／ａｉｉとして、計算される。ここで、ａｊｉは、ｊ行ｉ列目の行列要素を示し、ａｉｉは、ｉ行ｉ列目の行列要素を示す（ステップＳ３４）。ついで、値ｋが、ｉ＋１（＝２）として設定される（ステップＳ３５）。次に、ｊ行ｋ列目の変換後の行列要素ａ’ｊｋが、「ａ’ｊｋ＝ａｊｋ−ｒ・ａｊｋ」により、計算される（ステップＳ３６）。次いで、ｋがＮに達したか否かが判定される（ステップＳ３７）。ｋがＮに達していない場合には、ｋの値がインクリメントされ、再びＳ３５以降の処理が繰り返される。一方、ｋがＮに達した場合には、定数成分ｂのｊ行目の値ｂｊが変換される。変換後の値ｂｊをｂｊ’とすれば、ｂｊ’は、「ｂｊ−ｒ・ｂｉ」により表される。尚、ｂｉは、ｉ行目の定数成分ｂの値である（ステップＳ３８）。ついで、ｊがＮに達したか否かが判定される（ステップＳ３９）。ｊがＮに達していなければ、ｊがインクリメントされ、再びステップＳ３３以降の動作が繰り返される。一方、ＪがＮに達した場合には、ｉが「Ｎ−１」に達したか否かが判定される（ステップＳ４０）。ｉが「Ｎ−１」に達していない場合、ｉがインクリメントされ、ステップＳ３２以降の動作が繰り返される。ｉが「Ｎ−１」に達している場合、変換処理が終了する。
【００６６】
すなわち、前進消去処理は、１列目からＮ−１列目まで順番にｊ行ｉ列の行列要素を０に変換し、図１０のような係数行列を求める処理である。
【００６７】
一方、後退代入処理（ステップＳ３０）は、変換後の係数行列に基づいて、変数ｘの値を、Ｎ行目から１行目の順番で求めていく処理である。
【００６８】
上述のような計算手法において、素子モデルの計算処理（ステップＳ２８）における計算回数は、シミュレーション対象回路に含まれる素子数に依存する。後退代入処理（ステップＳ３０）における計算回数は、行列サイズＮに依存して線形に増加する。一方、前進消去処理における計算回数は、ステップＳ３４、ステップＳ３６、及びステップＳ３７それぞれにおける計算回数の合計である。前進消去処理の計算回数は、下記式１により、表される。
【００６９】
【数１】
2011145753.tif 000003
なお、上式１において、αは、係数行列Ａ内における非０要素数の密度を表わす係数である。
【００７０】
上記式１より、前進消去処理（ステップＳ２９）における計算回数は、行列サイズＮの約３乗に依存して増加することが理解される。
【００７１】
すなわち、回路シミュレーションに要する時間の大半は、前進消去処理に要する時間である。回路シミュレーションの処理時間は、概ね、前進消去処理における計算回数に依存して決まる。従って、以降の説明では、前進消去処理における計算回数に着目する。
【００７２】
ここで、上位の結合回路に関する計算と下位の結合回路に関する計算とを別々に行う場合について考える。この場合、上位の結合回路に対応する１次連立方程式と、下位の結合回路に対応する１次連立方程式とが、別々に作成される。そして、下位の結合回路に関する前進消去処理が行われ、下位の結合回路に関する係数行列が変換される。さらに、変換された下位の結合回路に関する係数行列が、上位の結合回路に関する係数行列に合算される。すなわち、下位の結合回路の計算結果が、上位の結合回路のシミュレーション計算に反映される。そして、合算後の上位の結合回路の係数行列に対して、前進消去処理が行われる。
【００７３】
シミュレーション対象回路が階層構造を有する場合の前進消去処理について、より詳細に説明する。シミュレーション対象回路が、図１に示した分割状態により分割されている場合について考える。図１に示される例では、シミュレーション対象回路が、部分回路Ｓ１〜Ｓ４、及び結合回路Ｃ１〜Ｃ４に分割されている。ここで、結合回路Ｃ３及びＣ４に着目する。結合回路Ｃ３と結合回路Ｃ４とは、上位の結合回路と下位の結合回路との関係にある。このような場合、結合回路Ｃ３に関する一次連立方程式の係数行列（以下、係数行列Ｃ３）と、結合回路Ｃ４に対応する一次連立方程式の係数行列（以下、係数行列Ｃ４）とが、別々に作成される。
【００７４】
図１１Ａは、結合回路Ｃ３に関する係数行列Ｃ３を示す概略図である。係数行列Ｃ３は、領域Ｄ及び領域Ｅにより表現されている。領域Ｄは、１行〜ＮＤ行及び１列〜ＮＤ列における行列要素領域を示す。ここで、ＮＤは、係数行列Ｃ３の行列計算時に前進消去処理の対象となる行又は列の数を示す。一方、領域Ｅは、ＮＤ＋１行〜ＮＥ行及びＮＤ＋１列〜ＮＥ列の行列要素領域を示す。ＮＥは、上位の結合回路Ｃ２の係数行列Ｃ２と重複する行又は列の数を示す。
【００７５】
図１１Ｂは、結合回路Ｃ４に関する係数行列Ｃ４を示す概略図である。係数行列Ｃ４は、領域Ｆ及びＧによって表現されている。領域Ｆは１行〜ＮＦ行及び１列〜ＮＦ列の行列要素領域を示している。ここで、ＮＦは、係数行列Ｃ４の行列計算時に前進消去処理の対象となる行又は列の数を示す。領域Ｇは、ＮＦ＋１行〜ＮＧ行及びＮＦ＋１列〜ＮＧ列の行列要素領域を示す。ＮＧは、係数行列Ｃ３と重複する行又は列の数を示す。
【００７６】
上位の結合回路Ｃ３と下位の結合回路Ｃ４とは、重複する行列要素を持つ。そのため、前進消去処理時には、まず、係数行列Ｃ４の１〜ＮＦ行目について、前進消去処理が行われる。次いで、行列領域Ｇが、係数行列Ｃ３へ合算される。次いで、係数行列Ｃ３の１〜ＮＤ行目について、前進消去処理が行われる。
【００７７】
ここで、Ｎ行Ｎ列の行列について、１行目からＭ行目（Ｍ＜Ｎ）までの前進消去処理を行った場合の計算回数は、既述の式１より、下記式２で表される。
【００７８】
【数２】
2011145753.tif 000004
【００７９】
また、行列サイズがＮである行列同士を合算する場合、１行列要素について１和算が発生する。従って、行列サイズがＮである行列同士を合算する場合の計算回数は、下記式３で表される。
【００８０】
【数３】
2011145753.tif 000005
【００８１】
上式２及び３から、係数行列Ｃ３及び係数行列Ｃ４の前進消去処理における計算回数は、下記式４によって求めることができる。
【００８２】
【数４】
2011145753.tif 000006
【００８３】
前進消去処理における計算回数は、計算負荷として捉えることができる。すなわち、本実施形態において、マージ前データＷｂｅｆｏｒｅは、上式４を用いて計算することができる。
【００８４】
続いて、結合回路Ｃ４と結合回路Ｃ３とを一つの結合回路（マージ後回路）にマージした場合の計算負荷について説明する。
【００８５】
図１２は、マージ後回路の係数行列を示す概略図である。マージ後回路の係数行列は、領域Ｆ、領域Ｄ、及び領域Ｅによって現される。マージ後回路の係数行列において、行数は「ＮＤ＋ＮＦ＋ＮＥ」であり、列数は「ＮＤ＋ＮＦ＋ＮＥ」である。マージ後回路の係数行列に対する前進消去処理の対象は、１行目から「ＮＤ＋ＮＦ」行目までである。従って、計算回数は、次の式５により求めることができる。すなわち、マージ後データＷａｆｔｅｒは、次の式５により求めることができる。
【００８６】
【数５】
2011145753.tif 000007
【００８７】
以上の説明から、合算しなければならない行数（ＮＥ、ＮＧ）が多い場合には、上位の結合回路と下位の結合回路とを一つにまとめて計算を行った方が、計算回数が少なくなりやすいことがわかる。
【００８８】
例えば、ＮＤ＝１０、ＮＥ＝９０、ＮＦ＝１０、ＮＧ＝９０、α＝０．１であるものとする。この場合、マージ前データＷｂｅｆｏｒｅは、式４より、７３９７．５２と計算される。一方、マージ後データＷａｆｔｅｒは、式５より、７０９１．２８と計算される。従って、マージ判定部３は、上位の結合回路と下位の結合回路とをマージすべきであると判定する。これにより、計算負荷を少なくすることができ、短時間で回路シミュレーションを行うことが可能になる。
【００８９】
尚、Ｗｂｅｆｏｒｅ及びＷａｆｔｅｒの算出方法（図６；ステップＳ２１、Ｓ２２）としては、既述の方法に限定されるものではない。例えば、係数行列を有向グラフにより表現し、有向グラフの経路から計算回数を算出する方法などを用いることも可能である。有向グラフを利用する方法は、例えば、特開平９ー３１９７８４号公報などに開示されている。
【００９０】
続いて、具体例を挙げて、本実施形態による動作をより詳細に説明する。
【００９１】
図１３は、ある時点での分割後データの一例を示す概念図である。シミュレーション対象回路は、結合回路Ｃ１０１〜Ｃ１０９、及び部分回路Ｓ１０１〜Ｓ１１０に分割されている。図６を参照し、この分割後データに対して行われるステップＳ７（図５、図６参照）の動作について説明する。尚、前進消去処理の対象である行列サイズがＮＸと定義され、上位の結合回路へ合算される行列サイズがＮＹとして定義される。各結合回路のＮＸ及びＮＹは、次のような数値であるものとする。結合回路Ｃ１０１（ＮＸ＝３０、ＮＹ＝０）。結合回路Ｃ１０２（ＮＸ＝５０、ＮＹ＝３０）。結合回路Ｃ１０３（ＮＸ＝６０、ＮＹ＝３０）。結合回路Ｃ１０４（ＮＸ＝５０、ＮＹ＝３０）。結合回路Ｃ１０５（ＮＸ＝１０、ＮＹ＝８０）。結合回路Ｃ１０６（ＮＸ＝１５、ＮＹ＝９０）。結合回路Ｃ１０７（ＮＸ＝１０、ＮＹ＝９０）。結合回路Ｃ１０８（ＮＸ＝１０、ＮＹ＝８０）。結合回路Ｃ１０９（ＮＸ＝５、ＮＹ＝９０）。行列中の非０要素の密度を表わす係数α＝０．１とする。以後の説明では、行列サイズＮＸ、ＮＹは（ＮＸ，ＮＹ）という形に簡略化して表現する。
【００９２】
まず、図６に示されるステップＳ１８の処理により、マージ判定を実施する順番が決定される。下位階層に存在する結合回路の方が、上位階層に存在する結合回路よりも、マージされる可能性が高い。従って、順番は、下位階層の結合回路から優先的に決められる。本実施形態では、新しく生成された結合回路に対して優先的にマージ判定が行われるものとする。マージ判定が実施される順番は、Ｃ１０９、Ｃ１０８、Ｃ１０７、Ｃ１０６、Ｃ１０５、Ｃ１０４、Ｃ１０３、Ｃ１０２、及びＣ１０１に決定される。
【００９３】
次いで、ステップＳ１９の処理により、マージ判定の対象となる結合回路の上位にあたる結合回路が検索される。最初に選ばれる結合回路は、Ｃ１０９である。従って、Ｃ１０９の上位にあたる結合回路が検索される。Ｃ１０９の上位にあたる結合回路は、Ｃ１０７である。すなわち、上位の結合回路として、Ｃ１０７が抽出される。
【００９４】
次いで、ステップＳ２０の処理により、上位の結合回路が存在するか否かが判定される。結合回路Ｃ１０９には、上位の結合回路Ｃ１０７が存在する。したがって、２つのマージ対象回路として、Ｃ１０９及びＣ１０７が選択され、次のステップＳ２１の処理が実行される。尚、結合回路Ｃ１０９の行列サイズは（５，９０）であり、結合回路Ｃ１０７の行列サイズは（１０，９０）である。
【００９５】
次に、ステップＳ２１の処理により、計算負荷Ｗｂｅｆｏｒｅが計算される。すなわち、結合回路Ｃ１０９とＣ１０７とが分割されているときの計算回数が、数式４に従って計算される。数式４を用いれば、計算負荷Ｗｂｅｆｏｒｅとして、４７１９．４５が得られる。
【００９６】
次に、ステップＳ２２の処理により、計算負荷Ｗａｆｔｅｒが計算される。結合回路Ｃ１０９とＣ１０７とがマージされた場合の計算回数が、数式５に従って計算される。数式５を用いれば、計算負荷Ｗａｆｔｅｒとして、４１９８．９５が得られる。
【００９７】
次いで、ステップＳ２３の処理により、ＷｂｅｆｏｒｅとＷａｆｔｅｒとの大小関係が比較される。今、ＷｂｅｆｏｒｅはＷａｆｔｅｒより大きいため、マージすべきであると判定され、次のステップＳ２４の処理が実行される。
【００９８】
次いで、ステップＳ２４の処理により、結合回路Ｃ１０９とＣ１０７とがマージされる。図１４Ａは、本ステップの処理後における分割状態を示す図である。図１４Ａに示されるように、結合回路Ｃ１０９がＣ１０７にマージされる。マージ後の結合回路Ｃ１０７に対応する係数行列の行列サイズは、（１５、９０）になる。
【００９９】
次いで、ステップＳ２５の処理が行われる。ステップＳ２５では、結合回路Ｃ１０８、Ｃ１０７、Ｃ１０６、Ｃ１０５、Ｃ１０４、Ｃ１０３、Ｃ１０２、及びＣ１０１について、マージ判定処理が終了していない、と判定される。従って、次のマージ判定の対象として、結合回路Ｃ１０８が選ばれ、再びステップＳ１９以降の処理が繰り返される。すなわち、結合回路Ｃ１０８に対して、ステップＳ１９〜Ｓ２４の処理が施される。結合回路Ｃ１０８に対してステップＳ２４の処理が行われた後の回路の分割状態が、図１４Ｂに示される。図１４Ｂに示されるように、結合回路Ｃ１０８は、上位の結合回路であるＣ１０５にマージされる。
【０１００】
次に、ステップＳ２５の処理が行われる。本ステップでは、結合回路Ｃ１０７、Ｃ１０６、Ｃ１０５、Ｃ１０４、Ｃ１０３、Ｃ１０２、及びＣ１０１について、マージ判定処理が終了していないと判定される。従って、再びステップＳ２５以降の処理が繰り返される。
【０１０１】
次にマージ判定の対象となる回路は、結合回路Ｃ１０７である。結合回路Ｃ１０７に対しては、ステップＳ１９の処理により、上位の結合回路が検索される。そして、上位の結合回路として、結合回路Ｃ１０５が抽出される。ステップＳ２０では、上位の結合回路が存在するか否かが判定される。結合回路Ｃ１０７に対しては、上位の結合回路Ｃ１０５が存在するため、ステップＳ２１の処理が行われる。尚、結合回路Ｃ１０７の行列サイズは（１５，９０）であり、結合回路Ｃ１０５の行列サイズは（２０，８０）である。
【０１０２】
ステップＳ２０では、結合回路Ｃ１０７とＣ１０５が分割されている場合の計算負荷Ｗｂｅｆｏｒｅが、数式４に従って求められる。具体的には、Ｗｂｅｆｏｒｅとして、９７８１．５５という数字が得られる。
【０１０３】
ステップＳ２２では、結合回路Ｃ１０７がＣ１０５にマージされた場合の計算負荷Ｗａｆｔｅｒが、数式５に従って求められる。具体的には、Ｗａｆｔｅｒとして、９８８５．０５という数字が得られる。
【０１０４】
ステップＳ２３では、Ｗｂｅｆｏｒｅ（９７８１．５５）とＷａｆｔｅｒ（９８８５．０５）との大小が比較される。Ｗｂｅｆｏｒｅは、Ｗａｆｔｅｒより小さい為、マージしない方がよいと判定される。従って、ステップＳ２５の処理が実行される。
【０１０５】
ステップＳ２５では、結合回路Ｃ１０６、Ｃ１０５、Ｃ１０４、Ｃ１０３、Ｃ１０２、及びＣ１０１について、マージ判定処理が終了していないと判定される。従って、マージ判定対象として結合回路Ｃ１０６が選択された上で、ステップＳ１９以降の処理が繰り返される。
【０１０６】
結合回路Ｃ１０６は、ステップＳ１９〜Ｓ２４の処理により、結合回路Ｃ１０４にマージされる。図１４Ｃは、結合回路Ｃ１０６がＣ１０４にマージされた後の分割状態を示す図である。
【０１０７】
次いで、ステップＳ２５では、結合回路Ｃ１０５、Ｃ１０４、Ｃ１０３、Ｃ１０２、及びＣ１０１についてのマージ判定処理が終了していないと判定される。従って、マージ判定対象として結合回路Ｃ１０５が選択された上で、ステップＳ１９以降の処理が繰り返される。
【０１０８】
結合回路Ｃ１０５は、ステップＳ１９〜Ｓ２４の処理により、結合回路Ｃ１０２にマージされる。図１４Ｄは、結合回路Ｃ１０５がＣ１０２にマージされた後の分割状態を示す図である。
【０１０９】
次に、ステップＳ２５では、結合回路Ｃ１０４、Ｃ１０３、Ｃ１０２、及びＣ１０１について、マージ判定処理が終了していないと判定される。従って、マージ判定対象として結合回路Ｃ１０４が選択され、ステップＳ１９以降の処理が繰り返される。
【０１１０】
結合回路Ｃ１０４は、ステップＳ１９〜Ｓ２４の処理により、結合回路Ｃ１０３にマージされる。図１４Ｅは、結合回路Ｃ１０４が結合回路Ｃ１０３にマージされた後の分割状態を示す図である。
【０１１１】
次に、ステップＳ２５では、結合回路Ｃ１０３、Ｃ１０２、及びＣ１０１について、マージ判定処理が終了していないと判定される。従って、マージ判定対象としてＣ１０３が選択され、ステップＳ１９以降の処理が繰り返される。
【０１１２】
結合回路Ｃ１０３は、ステップＳ１９〜２４の処理により、結合回路Ｃ１０１にマージされる。図１５は、結合回路Ｃ１０３が結合回路Ｃ１０１にマージされた後の分割状態を示す図である。
【０１１３】
次に、ステップＳ２５において、結合回路Ｃ１０２及びＣ１０１について、マージ判定処理が終了していないと判定される。従って、マージ判定対象としてＣ１０２が選択され、ステップＳ１９以降の処理が繰り返される。
【０１１４】
結合回路Ｃ１０２に対しては、ステップＳ２３の処理において、マージしない方が良いと判定される。従って、結合回路Ｃ１０２が上位の結合回路にマージされることなく、ステップＳ２５の処理が実行される。ステップＳ２５では、結合回路Ｃ１０１についてのマージ判定処理が終了していない。従って、マージ判定対象としてＣ１０１が選択され、ステップＳ１９以降の処理が繰り返される。
【０１１５】
結合回路Ｃ１０１に対しては、ステップＳ２０の処理において、上位の結合回路が存在しない判定される。従って、ステップＳ２０の後に、ステップＳ２５の処理が行われる。ステップＳ２５では、全ての結合回路についてマージ判定処理が終了していると判定される。従って、図１５に示される分割状態を示すデータが、ステップＳ７（図５参照）における結果として出力される。
【０１１６】
以上説明したように、本実施形態によれば、計算回数が少なくても済むように、結合回路同士がマージされる。従って、回路シミュレーション処理に要する時間を短縮することができる。尚、仮に、図１３に示される分割状態を用いた場合に、前進消去処理における計算回数を数式４及び５を使って求めたとする。この場合、図１３に示される分割状態では、結合回路として、Ｃ１０１、Ｃ１０２、Ｃ１０３、Ｃ１０４、Ｃ１０５、Ｃ１０６、Ｃ１０７、Ｃ１０８、及びＣ１０９が存在する。これらの結合回路における計算回数の合計値は、３２７４９．７になる。一方、図１５に示される分割状態では、結合回路として、Ｃ１０１、Ｃ１０２、Ｃ１０７が存在する。これら結合回路における計算回数の合計値は、２２８６３．９になる。従って、本実施形態によれば、前進消去処理時における計算回数を少なくできることが理解される。
【符号の説明】
【０１１７】
１  ネットリスト取得部
２  分割データ生成部
３  マージ判定部
３１  選択部
３２  マージ前データ生成部
３３  マージ後データ生成部
３４  決定部
４  分割データ格納部
５  反映後分割データ生成部
６  分割ネットリスト生成部
１００  回路シミュレーション装置
１０１  記憶媒体（ネットリスト格納部）
１０２  記憶媒体（分割ネットリスト格納部）
１０３  記憶媒体（解析結果格納部）
１０４  シミュレーション対象回路の分割装置（シミュレーション対象回路の分割プログラム）
１０５  回路シミュレーション処理部
【図１】
2011145753.tif 000008
【図２】
2011145753.tif 000009
【図３】
2011145753.tif 000010
【図４】
2011145753.tif 000011
【図５Ａ】
2011145753.tif 000012
【図５Ｂ】
2011145753.tif 000013
【図６】
2011145753.tif 000014
【図７】
2011145753.tif 000015
【図８】
2011145753.tif 000016
【図９】
2011145753.tif 000017
【図１０】
2011145753.tif 000018
【図１１Ａ】
2011145753.tif 000019
【図１１Ｂ】
2011145753.tif 000020
【図１２】
2011145753.tif 000021
【図１３】
2011145753.tif 000022
【図１４Ａ】
2011145753.tif 000023
【図１４Ｂ】
2011145753.tif 000024
【図１４Ｃ】
2011145753.tif 000025
【図１４Ｄ】
2011145753.tif 000026
【図１４Ｅ】
2011145753.tif 000027
【図１５】
2011145753.tif 000028