(58)【調査した分野】(Int.Cl.,DB名)
互いに接続された複数の抵抗を有し第1電圧源が接続された第1抵抗回路と、前記複数の抵抗と同一の接続関係を有する複数の抵抗を有し前記第1電圧源よりも低電圧の第2電圧源が接続された第2抵抗回路と、を有する回路であって、前記第1抵抗回路内の電気的に異なる複数の第1位置と、前記複数の第1位置の各々に対応する前記第2抵抗回路内の複数の第2位置と、がそれぞれ電流源を介して接続された回路を表す回路情報を取得する取得部と、
前記電流源の合計電流値を特定電流値とし、前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を特定抵抗値とした場合における、前記第1電圧源と前記第2電圧源との間の電位差と前記複数の第1位置の各第1電圧値の中から選択した電圧値と前記第2電圧源との間の電位差との第1差分と、前記第2電圧源の電位と前記複数の第2位置の各第2電圧値の中から選択した電圧値との第2差分と、を前記取得部が取得した前記回路情報に基づいて導出する導出部と、
前記導出部が導出した前記第1差分と導出した前記第2差分とから選択した差分と、前記特定電流値と前記特定抵抗値とに基づく電圧値と、の比率に応じた前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を算出する抵抗値算出部と、
を有することを特徴とする算出装置。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、本発明にかかる算出方法、算出プログラム、および算出装置の実施の形態を詳細に説明する。
【0013】
図1は、本実施の形態にかかる算出装置による一動作例を示す説明図である。算出装置100は、設計の対象回路の部分回路であるブロック内の電源配線およびグラウンド配線と等価な回路logic内の各抵抗の値を算出するコンピュータである。例えば、設計の対象回路は、アナログ回路やデジタル回路などを有する半導体集積回路である。算出装置100は、回路logicを示す回路情報を取得する。回路情報は、SPICE(Simulation Program with Integrated Circuit Emphasis)などの回路記述形式によって記述される。
【0014】
具体的に、回路logicは、互いに接続された複数の抵抗を有する第1電圧源pow1が接続された第1抵抗回路R1を有する。第1抵抗回路R1は、抵抗r11と抵抗r12との2つの抵抗を有する。また、回路logicは、複数の抵抗と同一の接続関係を有する複数の抵抗を有する第2電圧源pow2が接続された第2抵抗回路R2を有する。第2抵抗回路R2は、抵抗r21と抵抗r22との2つの抵抗を有する。第2電圧源pow2は、第1電圧源pow1よりも低電圧である。例えば第1電圧源pow1の電圧は、電源電圧であり、第2電圧源pow2の電圧は、グラウンド電圧である。
【0015】
回路logicは、第1抵抗回路R1内の電気的に異なる複数の第1位置と、複数の第1位置の各々に対応する第2抵抗回路R2内の複数の第2位置と、が各々電流源を介して接続される。
図1の例では、複数の第1位置は、第1位置p11と第1位置p12と第1位置p13の3つである。第1位置p12に第1電圧源pow1が接続される。
図1の例では、複数の第2位置は、第2位置p21と第2位置p22と第2位置p23の3つである。第2位置p23に第2電圧源pow2が接続される。第1位置p11と第2位置p21は、電流源cs1を介して接続される。第1位置p12と第2位置p22は、電流源cs2を介して接続される。第1位置p13と第2位置p23は、電流源cs3を介して接続される。
【0016】
算出装置100は、回路情報に、電流源cs1〜cs3の合計電流値を特定電流値I0となるように設定し、第1抵抗回路R1および第2抵抗回路R2の各抵抗の値を特定抵抗値r0になるように設定する。例えば、特定電流値I0を1[A]と特定抵抗値r0を1[Ω]とすることにより、算出装置100による算出時間の短縮化を図ることができる。算出装置100は、特定電流値I0とし、特定抵抗値r0とした場合における、第1電圧源pow1と第2電圧源pow2との間の電位差Vddと、複数の第1位置p11〜p13の各第1電圧値を導出する。また、算出装置100は、特定電流値I0とし、特定抵抗値r0とした場合における、第2電圧源pow2の電圧値と、複数の第2位置p21〜p23の各第2電圧値と、を導出する。
【0017】
そして、算出装置100は、電位差Vddと、各第1電圧値の中から選択した電圧値と、の第1差分ΔVb0_powerを導出する。具体的には、算出装置100は、回路情報に基づいて、SPICEシミュレーションすることにより、第1差分ΔVb0_powerを導出する。また、具体的に、算出装置100は、各第1電圧値の中から電圧値の大きさに基づき電圧値を選択する。例えば、算出装置100は、電位差Vddと、各第1電圧値の中から選択した最も小さい電圧値MinVddと、の第1差分ΔVb0_powerを導出する。電位差Vddは、電圧源pow1が接続される第1位置p12の電圧値と同じである。また、算出装置100は、第2電圧源pow2の電圧値Vgと、各第2電圧値の中から選択した電圧値と、の第2差分ΔVb0_groundを導出する。具体的には、算出装置100は、回路情報に基づいて、SPICEシミュレーションすることにより、第2差分ΔVb0_groundを導出する。また、具体的に、算出装置100は、各第2電圧値の中から電圧値の大きさに基づき電圧値を選択する。例えば、算出装置100は、電圧値Vgと、各第2電圧値の中から選択した最も大きい電圧値MaxVgと、の第2差分ΔVb0_groundを導出する。
【0018】
つぎに、算出装置100は、導出した第1差分ΔVb0_powerと第2差分ΔVb0_groundとから選択した差分ΔVb0と、特定電流値I0と特定抵抗値r0とに基づく電圧値と、の比率βに応じた第1抵抗回路R1および第2抵抗回路R2の各抵抗の値を算出する。選択された差分ΔVb0は、例えば、第1差分ΔVb0_powerと第2差分ΔVb0_groundとのうち大きい方の差分である。例えば、電位差Vddが1.8[V]であり、電圧値MinVddが1.7[V]である場合、第1差分ΔVb0_powerは0.1[V]となる。例えば、電圧値Vgが0[V]であり、電圧値MaxVgが0.2[V]である場合、第2差分ΔVb0_groundは0.2[V]となる。そして、例えば、差分ΔVb0は0.2[V]となる。
【0019】
具体的には、まず、算出装置100は、差分ΔVb0と、特定電流値I0と特定抵抗値r0とに基づく電圧値と、の比率βを算出する。より具体的には、算出装置100は、差分ΔVb0と、特定電流値I0と特定抵抗値r0とに基づく電圧値と、を与えると比率βが得られる第1算出式に、差分ΔVb0と、特定電流値I0と、特定抵抗値r0とを与えることにより、各抵抗の値を算出する。第1算出式は、差分ΔVb0を、特定電流値I0と特定抵抗値r0との乗算結果により除算することにより、比率βを得る。また、上述したように、特定電流値I0を1[A]と特定抵抗値r0を1[Ω]とすることにより、比率βは、差分ΔVb0となるため、算出装置100による算出時間の短縮化を図ることができる。
【0020】
つぎに、具体的には、算出装置100は、閾値ΔVbと特定値Iと比率βを与えると各抵抗の値が得られる第2算出式に、取得した閾値ΔVbと取得した特定値Iと算出した比率βを与えることにより、各抵抗の値を算出する。第2算出式は、閾値ΔVbを、特定値Iと比率βとの乗算結果により除算することにより、各抵抗の値を得る。そして、算出装置100は、第1電圧源pow1と第2電圧源pow2との間の電位差と複数の第1位置p11〜p13の各電圧値との差分の閾値ΔVbと、電流源cs1〜cs3の合計電流値のIと、を取得する。例えば、特定値Iは、ブロックごとに固定の周波数のクロック信号をブロックへ与えた場合のピークの電流値であり、設計仕様などに基づき定められる値である。また、特定値Iは、算出装置100がアクセス可能な記憶装置に記憶される。閾値ΔVbは、許容値として予め設計者によって定められ、算出装置100がアクセス可能な記憶装置に記憶される。そして、算出装置100は、閾値ΔVbと特定値Iと算出した比率βと、に基づく第1抵抗回路R1および第2抵抗回路R2の各抵抗の値を算出する。より具体的には、算出装置100は、閾値ΔVbと特定値Iと比率βを与えると各抵抗の値が得られる第2算出式に、取得した閾値ΔVbと取得した特定値Iと算出した比率βを与えることにより、各抵抗の値を算出する。第2算出式は、閾値ΔVbを、特定値Iと比率βとの乗算結果により除算することにより、各抵抗の値を得る。
【0021】
ここで、第1抵抗回路R1は、ブロック内の電源配線と等価であり、第2抵抗回路R2は、ブロック内のグラウンド配線と等価である。ブロックは、フロアプラン後のノイズ解析の対象回路内の部分回路である。上述したように、対象回路は、アナログ回路やデジタル回路などを有する半導体集積回路である。フロアプランでは詳細な電源配線およびグラウンド配線が行われないため、各抵抗の値は同一とする。
図1によれば、ブロック内の電流値と、電源の電圧値とブロック内の各位置の電圧値との電位差の許容値と、を満たすように、各抵抗の値を決定することができる。これにより、設計者の手間を省くことができる。したがって、設計効率を向上させることができる。
【0022】
(算出装置100のハードウェア構成例)
図2は、実施の形態にかかる算出装置のハードウェア構成例を示すブロック図である。算出装置100は、CPU(Central Processing Unit)201と、ROM(Read Only Memory)202と、RAM(Ramdom Access Memory)203と、ディスクドライブ204と、ディスク205と、を有する。算出装置100は、I/F(Inter Face)206と、入力装置207と、出力装置208と、を有する。また、各部はバス200によってそれぞれ接続される。
【0023】
ここで、CPU201は、算出装置100の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶する。RAM203は、CPU201のワークエリアとして使用される記憶部である。ディスクドライブ204は、CPU201の制御に従ってディスク205に対するデータのリード/ライトを制御する。ディスク205は、ディスクドライブ204の制御で書き込まれたデータを記憶する。ディスク205としては、磁気ディスク、光ディスクなどが挙げられる。
【0024】
I/F206は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、I/F206は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F206には、例えばモデムやLANアダプタなどを採用することができる。
【0025】
入力装置207は、キーボード、マウス、タッチパネルなど設計者の操作により、各種データの入力を行うインターフェースである。また、入力装置207は、カメラから画像や動画を取り込むこともできる。また、入力装置207は、マイクから音声を取り込むこともできる。出力装置208は、CPU201の指示により、データを出力するインターフェースである。出力装置208には、ディスプレイやプリンタが挙げられる。
【0026】
図3は、ノイズ解析におけるデータ入出力例を示す説明図である。上述したように、算出装置100は、抵抗の値を算出するコンピュータであるが、さらに、半導体集積回路のフロアプラン時における基板のノイズ解析を行うコンピュータとする。算出装置100は、チップ情報311と、ブロック情報312と、配線情報313と、を入力として受け付ける。
【0027】
チップ情報311は、フロアプランの対象回路のサイズ、対象回路内の各ブロックや外部端子の配置情報、基板抵抗、配線抵抗、配線容量、Well抵抗、Well容量、外部端子ごとの許容電流密度、外部端子ごとのワイヤボンディングの許容電流密度、配線の許容電流密度などのテクノロジ情報を示す。外部端子については、パッドと称する。ブロック情報312は、ブロックの電流の特定値、最大電圧降下量の許容値、回路種類(例えば、ノイズ源回路、または被ノイズ回路)、ブロックのwell構造、動作周波数を示す。ブロックの電流の特定値と、最大電圧降下量の許容値とについては、
図14にて後述する。配線情報313は、パッドとブロックとの接続情報や配線数を示す。
【0028】
そして、算出装置100は、フロアプランイメージ情報314と、ノイズ解析結果315と、を出力する。フロアプランイメージ情報314は、フロアプランによって得られるブロックの配置位置、パッドの配置位置、ブロックとパッドとの接続関係などを表す情報である。ノイズ解析結果315は、ノイズ解析によって得られるノイズの伝搬マップやノイズ量などを示す。
【0029】
図4は、算出装置によるノイズ解析処理手順例を示すフローチャートである。まず、算出装置100は、設計者の操作によって、仕様検討を行う(ステップS401)。設計者の操作は、入力装置207を介して行われる。仕様検討とは、パッドの数などを決定する処理である。つぎに、算出装置100は、設計者の操作により、ノイズ解析の対象回路のフロアプランを行う(ステップS402)。設計者の操作は、入力装置207を介して行われる。これにより、算出装置100は、フロアプラン情報を作成する。フロアプラン情報は、具体的には、ブロック、パッドなどの配置が決定されたレイアウト情報である。つぎに、算出装置100は、
図5および
図10に示す接続情報1000の作成を行う(ステップS403)。接続情報1000は、パッドからの電源配線またはグラウンド配線を接続可能なブロック内の端子の位置を示す情報である。そして、算出装置100は、パッドごとにパッド電流値が許容値未満となるか否かを判断する(ステップS404)。パッド電流値とは、パッドを流れる電流の総和である。ここでの許容値とは、例えば、パッドごとの許容電流密度に基づく許容電流値、パッドごとのワイヤボンディングの許容電流密度に基づく許容電流値である。
【0030】
パッドごとにパッド電流が許容値未満でないと判断された場合(ステップS404:No)、算出装置100は、設計者の操作によって、ステップS401へ戻り、仕様を修正する。また、パッドごとにパッド電流が許容値未満であると判断された場合(ステップS404:Yes)、算出装置100は、フロアプラン情報に基づいて、基板モデル、ブロックモデル、パッドとブロックとの間の電源配線やブロック内の電源配線およびグラウンド配線などの配線情報と、I/Oリング情報と、などの対象回路を示すネットリストを作成する(ステップS405)。ネットリストは、上述したようなSPICEなどの回路記述形式によって記述される。I/Oリングとは、パッドが設けられる領域に、同一の電位となるパッド間を接続する配線であり、リング状に設けられた配線である。
【0031】
そして、算出装置100は、ネットリストに基づいて、回路シミュレーションを実行することにより、ノイズ解析を行う(ステップS406)。ここでの回路シミュレーションは、SPICEシミュレーションである。そして、算出装置100は、回路シミュレーションの実行結果であるレポートやマップなどを算出装置100がアクセス可能なディスプレイに表示する(ステップS407)。つぎに、算出装置100は、回路シミュレーションの実行結果に基づいて、ノイズ量が許容値未満であるか否かを判断する(ステップS408)。ここでは、算出装置100は、ブロックごとにノイズ量が
図14に示す許容値であるノイズクライテリア未満であるか否かを判断する。具体的には、ノイズ量は、回路シミュレーションによって得られたノイズのピーク値である。ノイズ量が許容値未満でないと判断された場合(ステップS408:No)、算出装置100は、ステップS401へ戻り、設計者の操作によって、仕様を再度検討する。またはノイズ量が許容値未満でないと判断された場合(ステップS408:No)、算出装置100は、ステップS402へ戻り、設計者の操作によって、フロアプランを再度行う。または、ノイズ量が許容値未満であると判断された場合(ステップS408:Yes)、算出装置100は、一連の処理を終了する。
【0032】
図4に示すように、算出装置100は、ノイズ量が許容値未満となるまで、対象回路を表すネットリストを複数回生成する場合がある。フロアプラン情報が作成される都度、ブロックの位置などに変更が生じるため、ブロック内の電源配線およびグラウンド配線と等価な抵抗回路の各抵抗の値が決定される。そのため、本実施の形態のように算出装置100が各抵抗の値を自動で決定することにより、設計者の手間を省くことができる。したがって、ノイズ見積もりの見積もり効率を向上させることができる。
【0033】
(算出装置100の機能的構成例)
図5は、算出装置の機能的構成例を示すブロック図である。ここでは、算出装置100は、ネットリストの作成に関する機能的構成について説明する。算出装置100は、接続情報作成部501と、抵抗値算出部502と、配線幅算出部503と、ネットリスト作成部504と、を有する。
【0034】
接続情報作成部501からネットリスト作成部504までの処理は、例えば、CPU201がアクセス可能なディスク205などの記憶装置に記憶されたシミュレーションプログラムにコーディングされる。そして、CPU201が記憶装置に記憶された計算プログラムを読み出して、計算プログラムにコーディングされている処理を実行する。これにより、接続情報作成部501からネットリスト作成部504までの処理が実現される。また、各部の処理結果は、例えば、RAM203、ディスク205などの記憶装置に記憶される。
【0035】
図6は、フロアプランによって得られるレイアウト情報例を示す説明図である。レイアウト情報600は、対象回路内の部分回路であるブロックおよび対象回路内のパッドの各々について、位置情報を有する。レイアウト情報600は、ブロック名、ブロック基準座標x、ブロック基準座標y、ブロックサイズx、ブロックサイズyのフィールドを有する。ブロックごとに、各フィールドに情報が設定されることにより、レコード(601−1,601−2など)として設定される。レイアウト情報600は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0036】
ブロック名は、ブロック、パッド、Dividerセルのいずれかを示す識別情報である。ブロック基準座標xは、ブロックが配置される位置のx座標である。x座標は、レイアウトにおいて定義されたx軸における座標値である。ブロック基準座標yは、ブロックが配置される位置のy座標である。y座標は、レイアウトにおいて定義されたy軸における座標値である。
【0037】
ブロックサイズxは、x軸方向におけるブロックのサイズである。ブロック基準座標xと、ブロックサイズxと、によって、ブロックのx方向の位置が特定される。ブロックサイズyは、y軸方向におけるブロックのサイズである。ブロック基準座標yと、ブロックサイズyと、によって、ブロックのy方向の位置が特定される。
【0038】
(接続情報1000作成)
接続情報作成部501は、パッド情報800と、ブロック情報700と、に基づいて、パッドからの電源配線またはグラウンド配線を接続可能なブロック内の端子の位置を示す接続情報1000を作成する。
【0039】
図7は、ブロック情報例を示す説明図である。ブロック情報700は、対象回路内の部分回路であるブロックの位置と、接続される電源の情報と、を有する。具体的には、ブロック情報700は、ブロック名、ブロック基準座標x、ブロック基準座標y、ブロックサイズx、ブロックサイズy、Net名のフィールドを有する。ブロックごとに、各フィールドに情報が設定されることにより、レコード(701−1,701−2,701−3など)として設定される。ブロック情報700は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0040】
ブロック名は、ブロックを示す識別情報である。ブロック基準座標xは、ブロックが配置される位置のx座標である。x座標は、レイアウトにおいて定義されたx軸における座標値である。ブロック基準座標yは、ブロックが配置される位置のy座標である。y座標は、レイアウトにおいて定義されたy軸における座標値である。
【0041】
ブロックサイズxは、x軸方向におけるブロックのサイズである。ブロック基準座標xと、ブロックサイズxと、によって、ブロックのx方向の位置が特定される。ブロックサイズyは、y軸方向におけるブロックのサイズである。ブロック基準座標yと、ブロックサイズyと、によって、ブロックのy方向の位置が特定される。Net名は、接続される電源/グラウンドを識別可能な情報である。
【0042】
図8は、パッド情報例を示す説明図である。パッド情報800は、対象回路のパッドの位置と、パッドに接続される電源/グラウンドの情報と、を有する。具体的に、パッド情報800は、パッド名、座標x、座標y、Net名のフィールドを有する。パッドごとに、各フィールドに情報が設定されることにより、レコード(801−1,801−2)として設定される。パッド情報800は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0043】
パッド名は、パッドを識別する識別情報である。座標xはパッドの位置を示すx座標であり、座標yはパッドの位置を示すy座標である。Net名は、接続される電源/グラウンドを識別可能な情報である。
【0044】
図9は、接続情報の作成例を示す説明図である。接続情報作成部501は、パッド情報800とブロック情報700とにより、同一のNet名を有するパッドとブロックとの組み合わせを作成する。例えば、ブロックAnalog01のNet名と、パッドPAD01のNet名とは、AVDであるため、接続情報作成部501は、ブロックAnalog01とパッドPAD01との組み合わせを作成する。また、例えば、ブロックAnalog01のNet名と、パッドPAD02のNet名とは、AVSであるため、接続情報作成部501は、ブロックAnalog01とパッドPAD02との組み合わせを作成する。
【0045】
つぎに、接続情報作成部501は、ブロック内のいずれの位置にパッドからの電源配線またはグラウンド配線を接続させるかを決定する。例えば、ブロック内の端子の位置が予め決まっている場合、接続情報作成部501は、ブロック内の端子の位置を示す端子位置情報と、パッドの位置情報と、Net名と、によってパッドとブロックとの接続関係を示す接続情報を生成する。また、ブロック内の端子位置が予め決まっていない場合、接続情報作成部501は、ブロックとパッドとの間の距離が最短距離となるようにパッドの位置情報と、ブロックの位置情報により、ブロック内の端子の位置を決定する。例えば、ブロックAnalog01とパッドPAD01との組み合わせについては、座標(1,5)をブロック内の端子の位置とする。ブロックAnalog01とパッドPAD02との組み合わせについては、例えば、座標(7,3)をブロック内の端子の位置とする。
【0046】
また、各ブロックが同一の電源について複数の端子を有する場合、接続情報作成部501は、パッドとブロックとの間の距離が短い順にパッドをブロック内の端子数選択し、選択したパッドについてのブロック内の端子の位置を決定する。
【0047】
図10は、接続情報例を示す説明図である。接続情報1000は、ブロック名、Net名、ブロック端子座標x、ブロック端子座標y、パッド座標x、パッド座標yのフィールドを有する。ブロック内の端子ごとに、各フィールドに情報が設定されることにより、レコード(1001−1,1001−2など)として設定される。接続情報1000は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0048】
ブロック名は、ブロックを示す識別情報である。Net名は、ブロック内の端子に接続される電源/グラウンドの識別情報である。ブロック端子座標xは、ブロック内の端子の位置を示す座標xである。ブロック端子座標yは、ブロック内の端子の位置を示す座標yである。パッド座標xは、ブロック内の端子と接続されるパッドの座標xである。パッド座標yは、ブロック内の端子と接続されるパッドの座標yである。接続情報1000は、パッド座標xおよびパッド座標yの代わりに、パッド名を有していてもよい。
【0049】
図11は、接続情報が表す接続関係例を示す説明図である。
図11に示す回路1100は、レイアウト情報600が表すブロックと、レイアウト情報600が表すパッドと、を接続情報1000が表す接続関係に基づいて配置された例である。接続情報1000によって、パッドと、ブロックと、の接続関係を特定可能となり、各ブロックにパッドを介して電源が接続可能であるか否かが判断可能となる。
【0050】
接続情報作成部501は、パッドの各々について、接続情報1000とブロック情報とに基づいて、パッドに流れる電流の総和を求める。総和は、I
PAD<PAD_NAME>で表す。そして、接続情報作成部501は、パッドの許容電流値I
MAX-PAD<PAD_NAME>とワイヤボンディングの許容電流値I
MAX-PAD_PAD1との両方を満たすか否かを判断する。パッドの許容電流値I
MAX-PAD<PAD_NAME>については、例えば、チップ情報311に記憶されたパッドの許容電流密度に基づいて算出可能である。ワイヤボンディングの許容電流値I
MAX-WIRE_BONDING_PAD1については、例えば、チップ情報311に記憶されたワイヤボンディングの許容電流密度に基づいて算出可能である。ここで、例えば、パッドPAD1に流れる電流の総和I
PAD_PAD1と判断例を以下に挙げる。
【0051】
I
PAD_PAD1=I
block1-PAD1+I
block2-PAD1+・・・
I
PAD_PAD1≦I
MAX-PAD_PAD1,I
MAX-WIRE_BONDING_PAD1
【0052】
ここで、総和I
PAD<PAD_NAME>を算出するためのI
block1-PAD1などのパッドブロック間を流れる電流値は、例えば、ブロック情報312に記憶された電流値Iである。また、ブロックに複数のパッドおよび配線が接続される場合、接続情報作成部501は、例えば、ブロック情報312に記憶された電流値Iを複数のパッドの数によって等分割し、等分割した値をパッドブロック間を流れる電流値としてもよい。また、例えば、総和I
PAD<PAD_NAME>がいずれかの許容電流値を満たさないと判断された場合、利用者によって仕様修正を行うことによって、各電源に対応するパッドの数を増やすことにより電流量を低減させることができる。また、例えば、計算装置100は、総和I
PAD<PAD_NAME>がいずれの許容電流値も満たすと判断された場合、抵抗値算出部502によって抵抗値の算出処理を行う。
【0053】
(抵抗値算出)
つぎに、抵抗値算出部502は、フロアプランにおけるパッドとブロックとの間の配線の抵抗値と、フロアプランにおけるブロック内の配線の抵抗値と、を算出する。具体的に、抵抗値算出部502は、ブロック内抵抗値算出部511と、パッドブロック間抵抗値算出部512と、を有する。
【0054】
図12は、配線ネットワークのイメージ例を示す説明図である。
図13は、電位差の分布例を示す説明図である。配線ネットワーク1200は、各電源配線と等価な抵抗によって表すことが可能である。ここで、パッドとブロックとの間の電源配線およびグラウンド配線を、パッドブロック間配線と称する。グラウンド電源が接続されるパッドと、ブロック内の端子との間の配線は、グラウンド配線であり、電源が接続されるパッドと、ブロック内の端子との間の配線は、電源配線である。パッドブロック間配線と等価な抵抗回路をパッドブロック間抵抗と称する。ブロック内の電源配線およびグラウンド配線を、ブロック内配線と称する。ブロック内配線と等価な回路の各抵抗をブロック内抵抗と称する。
【0055】
分布1300に示すように、パッドとの距離が遠い位置であるほど配線の抵抗による電圧降下により、位置の電圧値と、パッドに接続される電源の電圧値との差が大きくなる。また、パッドからブロックまでの配線では、パッドとブロックとの距離に応じて単調に電圧値が減少する。ブロック内では、電源の端子数や当該端子の位置に依存し、パッドの電圧値との電位差が最大となる位置が異なる。ここで、基準となる電圧値との各位置の電位差を電圧降下量と称する。
図12の例の配線ネットワーク1200においては、星印の位置が、電圧降下量が最大となる。
【0056】
ここで、パッドとブロックとの間の電圧降下量と、ブロック内の電圧降下量と、の合計値の許容値をΔVとすると、以下式(1)が成り立つ。
【0058】
ΔVwは、パッドブロック間配線によるパッドの電圧値からの電圧降下量の許容値を示し、ΔVbは、ブロック内配線によるブロック内の端子の電圧値からの最大の電圧降下量の許容値を示す。また、ΔVとΔVbは、設計者によって予め定められた値である。ΔVbは、RAM203やディスク205などの記憶装置に記憶される。ΔVbの具体例は、
図14を用いて後述する。ΔVwとΔVとの比率をαとすると、以下のような式(2)が成り立つ。
【0059】
α=ΔVw/ΔV=ΔVw/(ΔVw+ΔVb)・・・(2)
0<α<1
【0060】
比率αによって、ブロックから基板へのノイズ伝搬量が変化する。比率αは、例えば、経験値などにより設計者によって予め定められた値であり、または設計仕様などに応じて設定される値である。比率αはRAM203やディスク205などの記憶装置に記憶される。例えば、比率αは、0.5である。
【0061】
つぎに、パッドブロック間抵抗値算出部512は、パッドブロック間抵抗の値を算出する。具体的に、パッドブロック間抵抗値算出部512は、パッドブロック間抵抗の値を、電圧降下の許容値ΔVと、チップ情報311に記憶された許容電流密度と、の各々によって算出する。例えば、電圧降下の許容値ΔVによって算出される抵抗の値は、例えば、Rw_irとし、許容電流密度によって算出される抵抗の値Rwは、例えば、Rw_pcとする。例えば、パッドブロック間抵抗値算出部512は、Rw_irを以下式(3)によって算出する。
【0062】
Rw_ir=ΔVw/I=αΔV/I・・・(3)
【0063】
また、上記式(3)は以下のように導出される。
【0064】
ΔVw≧IRw⇔Rw≦ΔVw/I=α×ΔV/I=Rw_ir
【0065】
Iは、ブロックで消費される電流値の基準値である。また、パッドブロック間抵抗値算出部512は、ブロックにおける電源の端子数が複数ある場合は、各パッドについてパッドブロック間抵抗の値を算出する。例えば、ブロック内の電源の端子が複数である場合、各抵抗の値の算出式は以下式(4)のようになり、ブロックの電流値の基準値は、以下式(5)のようになる。
【0066】
Rw_ir1=α×ΔV/I1、Rw_ir2=α×ΔV/I2,・・・,Rw_irm=α×ΔV/Im・・・(4)
I=I1+I2+,・・・,+Im・・・(5)
【0067】
例えば、それぞれのパッドブロック間距離比に応じて、それぞれに流れる電流値の基準値が設定される。パッドブロック間距離比は、例えば、「I1:I2:I3=1/l1:1/l2:1/l3」である。l1、l2、l3はそれぞれのパッドブロック間距離である。
【0068】
また、パッドブロック間抵抗値算出部512は、Rw_pcを以下式(6)によって算出する。
【0070】
ここで、lはパッドとブロックとの間の距離である。式(6)は、以下に示す電流密度の式(7)と抵抗の関係式(8)とに基づいて導出された式である。
【0071】
imax≧I/(w×t)・・・(7)
Rw=ε×l/(w×t)・・・(8)
imax≧(Rw/ρ)×(I/l)⇔Rw≦imax×ρ×l/I=εl/I=Rw_pc
【0072】
ここで、wは配線幅であり、tは配線の厚さである。ρは、配線の抵抗率である。また、εは、以下式(9)によって表される値であり、プロセスによって決まる定数である。
【0074】
そして、パッドブロック間抵抗値算出部512は、算出した2つの抵抗の値のうち、小さい方の値をパッドブロック間抵抗の値Rwとする。
【0075】
図14は、
図3に示すブロック情報例を示す説明図である。ブロック情報312は、各ブロックについて、基板モデルと、特定値Iと、許容値ΔVと、ノイズクライテリアと、を有する。
図14の例では、Well構造や動作周波数などを省略する。具体的には、ブロック情報312は、ブロック名と、基板モデルと、ブロックの電流の特定値と、最大電圧降下量の許容値と、ノイズクライテリアと、のフィールドを有する。各ブロックについて、各フィールドに情報が設定されることにより、レコード(1401−1,1401−2,1401−3など)として記憶される。ブロック情報312は、予めRAM203やディスク205などの記憶装置に記憶される。基板モデルは、ブロックの基板がいずれの基板であるかを示す。ブロックの電流の特定値は、上述したブロック情報312に記憶されてある特定値Iである。最大電圧降下量の許容値は、上述したブロック情報312に記憶されてある許容値ΔVである。ノイズクライテリアは、ノイズの許容量である。ブロックAnalog01であれば、基板モデルがTriple Wellであり、特定値Iが0.01[A]であり、許容値ΔVが0.05[V]であり、ノイズクライテリアが0.05[V]である。例えば、比率αが0.5であれば、許容値ΔVwと許容値ΔVbはそれぞれ0.25である。
【0076】
また、算出されたパッドブロック間抵抗の値Rwは、RAM203やディスク205などの記憶装置に記憶される。例えば、パッドブロック間抵抗の値Rwは、
図15に示すパッドブロック間抵抗情報1500に記憶される。
【0077】
図15は、パッドブロック間抵抗情報例を示す説明図である。パッドブロック間抵抗情報1500は、パッドとブロックとの組み合わせごとに、パッドブロック間抵抗の値を有する。具体的には、パッドブロック間抵抗情報1500は、ブロック名、Net名、ブロック端子座標x、ブロック端子座標y、パッド座標x、パッド座標y、抵抗値のフィールドを有する。パッドとブロックとの組み合わせごとに、各フィールドに情報が設定されることにより、レコード(1501−1,1501−2など)として記憶される。パッドブロック間抵抗情報1500は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0078】
ブロック名、Net名、ブロック端子座標x、ブロック端子座標y、パッド座標x、パッド座標yのフィールドは、それぞれ接続情報1000と同一のフィールドであるため、詳細な説明を省略する。抵抗値は、パッドブロック間抵抗の値である。
【0079】
また、パッドブロック間配線幅算出部522は、パッドブロック間抵抗値算出部512によって算出された抵抗値に基づいて、パッドブロック間配線の幅を算出する。例えば、パッドブロック間配線幅算出部522は、パッドとブロックとの間の距離を、接続情報1000に含まれるブロック内の端子の位置と、パッド位置とに基づいて、算出する。距離は、l1とする。そして、パッドブロック間配線幅算出部522は、以下式(10)によってパッドブロック間配線の幅を算出する。
【0080】
w1=R_s×l1/Rw・・・(10)
【0081】
w1が配線の幅である。R_sは、配線のシート抵抗値であり、予めRAM203やディスク205などの記憶装置に記憶される。また、算出された配線の幅w1は、RAM203やディスク205などの記憶装置に記憶される。
【0082】
つぎに、ブロック内抵抗値算出部511は、ブロック内抵抗の値を算出する。ブロック内抵抗値算出部511は、ブロック内抵抗の値を各ブロックについて、電源とグラウンドの組み合わせごとに算出する。
【0083】
図16は、ブロック内抵抗値算出部の詳細例を示す説明図である。ブロック内抵抗値算出部511は、取得部1601と、導出部1602と、比率算出部1605と、抵抗値算出部1606と、を有する。
【0084】
図17は、回路情報が表す回路例を示す説明図である。取得部1601は、ブロック内配線と等価な抵抗回路を有する回路1700の回路情報540を取得する。取得された回路情報540は、RAM203やディスク205などの記憶装置に記憶される。回路1700は、互いに接続された複数の抵抗を有する第1電圧源pow1が接続された第1抵抗回路R1を有する。また、回路1700は、第1抵抗回路R1が有する複数の抵抗と同一の接続関係を有する複数の抵抗を有する第2電圧源pow2が接続された第2抵抗回路R2を有する。第2電圧源pow2は、第1電圧源pow1よりも低電圧である。例えば、第1電圧源pow1の電圧は、電源電圧であり、第2電圧源pow2の電圧は、グラウンド電圧である。また、回路1700は、第1抵抗回路R1内の電気的に異なる複数の第1位置p11〜p116と、複数の第1位置p11〜p116の各々に対応する第2抵抗回路R2内の複数の第2位置p21〜p216と、が各々電流源cs1〜cs16を介して接続される。
【0085】
図17の例では、第1抵抗回路R1と第2抵抗回路R2は、それぞれメッシュ状に抵抗が接続される。第1抵抗回路R1は、ブロック内の電源配線と等価である。第2抵抗回路R2は、ブロック内のグラウンド配線と等価である。第1抵抗回路R1と第2抵抗回路R2のそれぞれの抵抗の数は、ブロックの大きさに基づいて設計者により決定される。
図17の例では、第1抵抗回路R1と第2抵抗回路R2はそれぞれ24の抵抗を有する。
【0086】
第1電圧源pow1は第1位置p11に接続される。第1電圧源pow1が接続される位置は、パッドからの電源配線が接続されるブロック内の端子の位置に基づいて決定される。第2電圧源pow2は第2位置p216に接続される。第2電圧源pow2が接続される位置は、パッドからのグラウンド配線が接続されるブロック内の端子の位置に基づいて決定される。ブロック内の端子の位置は、接続情報1000によって特定可能である。また、ここでは、例えば、回路情報540は、算出装置100によって自動で作成されてもよいし、設計者の操作によって作成されてもよい。なお、設計者の操作は、入力装置207を介して行われる。
【0087】
導出部1602は、電流源cs1〜cs16の合計電流値を特定電流値とし、第1抵抗回路R1および第2抵抗回路R2の各抵抗の値を特定抵抗値とする。そして、導出部1602は、合計電流値を特定電流値とし、各抵抗の値を特定抵抗値とした場合における、第1電圧源pow1と第2電圧源pow2との間の電位差と、複数の第1位置p11〜p116の各電圧値の中から選択した電圧値と、の第1差分を導出する。また、導出部1602は、第2電圧源pow2の電位と、複数の第2位置p21〜p216の各電圧値の中から選択した電圧値と、の第2差分を導出する。具体的に、導出部1602は、設定部1603と、シミュレーション実行部1604と、を有する。設定部1603は、回路情報540に、電流源cs1〜cs16の合計電流値を特定電流値となるように設定し、第1抵抗回路R1および第2抵抗回路R2の各抵抗の値が特定抵抗値となるように設定する。特定電流値は、I0とし、特定抵抗値は、r0とする。特定電流値I0は、1[A]とし、各電流源cs1〜cs16の電流値は、I0/nとする。nは、第1位置の数である。また、特定抵抗値r0は、1[Ω]とする。これにより、シミュレーションの時間を短縮させることができる。
【0088】
そして、シミュレーション実行部1604は、第1電圧源pow1と第2電圧源pow2との間の電位差と、複数の第1位置p11〜p116の各第1電圧値の中から選択した電圧値と、の第1差分を回路情報540に基づきシミュレーションすることにより導出する。また、シミュレーション実行部1604は、第2電圧源pow2の電位と、複数の第2位置p21〜p216の各第2電圧値の中から選択した電圧値と、の第2差分を回路情報540に基づいてシミュレーションすることにより導出する。ここでのシミュレーションは、SPICEシミュレーションである。
【0089】
第1電圧源pow1と第2電圧源pow2との間の電位差は、複数の第1位置p11〜p116の中で、第1電圧源pow1が接続された第1位置p11の電圧値と同一である。また、シミュレーション実行部1604は、複数の第1位置p11〜p116の各第1電圧値の中から、電圧値の大きさに基づいて電圧値を選択する。例えば、シミュレーショ
ン実行部1604は、複数の第1位置p11〜p116の各電圧値の中から、最も小さい電圧値を選択して第1差分を導出する。ここで、導出された第1差分は、ΔVb0_po
werとする。また、シミュレーション実行部1604は、複数の第2位置p21〜p216の各第2電圧値の中から、電圧値の大きさに基づいて電圧値を選択する。例えば、シミュレーション実行部1604は、複数の第2位置p21〜p216の各電圧値の中から、最も大きい電圧値を選択して第2差分を導出する。ここで、導出された第2差分は、ΔVb0_groundとする。
【0090】
比率算出部1605は、導出された第1差分ΔVb0_powerと導出された第2差分ΔVb0_groundとから選択した差分ΔVb0と、特定電流値と特定抵抗値とに基づく電圧値と、の比率を算出する。差分ΔVb0は、導出された第1差分ΔVb0_powerと導出された第2差分ΔVb0_groundとのうち、差が大きい方である。また、この比率は、後述する第1抵抗回路R1および第2抵抗回路R2の各抵抗の値を算出するための係数となるため、比率を係数βとする。比率算出部1605は、係数βを以下式(11)に基づいて算出する。
【0091】
β=ΔVb0/(I0×r0)・・・(11)
【0092】
上述したように、特定電流値I0は、1[A]とし、特定抵抗値r0は、1[Ω]とすると、式(11)は、式(12)のように表せる。
【0094】
このように、特定電流値I0は、1[A]とし、特定抵抗値r0は、1[Ω]とすることにより、算出装置100に要する算出時間の短縮を図ることができる。
【0095】
抵抗値算出部1606は、最大電圧降下量の閾値と、ブロック内の電流値の基準値と、算出された係数βと、に基づく第1抵抗回路R1および第2抵抗回路R2の各抵抗の値を算出する。最大電圧降下量の閾値は、第1電圧源pow1と第2電圧源pow2との間の電位差と複数の第1位置p11〜p116の各電圧値との差分の閾値であり、および第2電圧源pow2の電位と複数の第2位置p21〜p216の各電圧値との差分の閾値である。具体的には、最大電圧降下量の閾値は上述した許容値ΔVbである。ブロック内の電流値の基準値は、電流源cs1〜cs16の合計電流の特定値Iである。算出された抵抗の値は、rとする。具体的に、抵抗値算出部1606は、以下式(13)に基づいて各抵抗の値rを算出する。
【0096】
r=ΔVb/(I×β)=(ΔVb/ΔVb0)×(1/I)・・・(13)
【0097】
特定値Iは、
図14に示したブロック情報312に含まれる。許容値ΔVbは、
図14に示したブロック情報312に含まれる許容値ΔVと、比率αとに基づいて定まる。具体的には、許容値ΔVbは、「許容値ΔV−許容値ΔV×比率α」である。
【0098】
つぎに、パッドとブロック間の抵抗の値Rwを抵抗の値Rw_pcとした場合、抵抗値算出部1606は、抵抗の値rを補正する。これにより、比率αを保つことができる。例えば、ΔVは以下のように表せる。
【0099】
ΔV=ΔVw+ΔVb
=δ×ΔV0
=δ(ΔVw0+ΔVb0)
【0100】
そこで、抵抗値算出部1606は、抵抗の値rを以下式(14)〜(16)によって補正する。
【0101】
r=δ×r・・・(14)
Rw_ir≦Rw_pcの場合、δ=1・・・(15)
Rw_ir>Rw_pcの場合、δ=Rw_pc/Rw_ir・・・(16)
【0102】
このように、パッドブロック間の配線に電流が大量に流れるようなブロックについて、配線の許容電流値を考慮して、ブロック内抵抗の値rを見積もることができる。
【0103】
算出された抵抗の値rは、RAM203やディスク205などの記憶装置に記憶させる。例えば、抵抗の値rは、
図18に示すブロック内抵抗情報に記憶される。ここで、抵抗の値rについては、電源側とグラウンド側と、で別々に定義してもよい。例えば、電源側の抵抗の値rは、r_powerとし、グラウンド側の抵抗値rは、r_groundとしてもよい。各抵抗値rを以下式(17)と式(18)とに示す。
【0104】
r_power=ΔVb0/ΔVb0_power×(1/I)・・・(17)
r_ground=ΔVb0/ΔVb0_ground×(1/I)・・・(18)
【0105】
図18は、ブロック内抵抗情報例を示す説明図である。ブロック内抵抗情報1800は、電源とグラウンドの組み合わせごとに、ブロック内の電源配線およびグラウンド配線と等価な抵抗の値を有する。具体的には、ブロック内抵抗情報1800は、ブロック名、Net名、ブロック基準座標x、ブロック基準座標y、ブロックサイズx、ブロックサイズy、抵抗値のフィールドを有する。電源とグラウンドの組み合わせごとに、各フィールドに情報が設定されることにより、レコード(1801−1,1801−2など)として記憶される。ブロック内抵抗情報1800は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0106】
ブロック名、Net名、ブロック基準座標x、ブロック基準座標y、ブロックサイズx、ブロックサイズyのフィールドは、それぞれブロック情報700と同一のフィールドであるため、詳細な説明を省略する。抵抗値は、ブロック内抵抗の値rである。
【0107】
また、ブロック内配線幅算出部521は、ブロック内抵抗値算出部511によって算出された抵抗の値rに基づいて、ブロック内の電源配線およびグラウンド配線の幅を算出する。例えば、ブロック内配線幅算出部521は、以下式(19)によってブロック内の配線の幅を算出する。
【0108】
w2=R_s×l2/r・・・(19)
【0109】
l2は、配線の長さであり、第1抵抗回路R1に含まれる各抵抗と等価な電源配線の長さであり、設計者によって予め定められる。メッシュサイズが100[μm]であると、ブロックのサイズが、1000[μm]×200[μm]であれば、ブロックは、10×2の抵抗メッシュによりモデル化される。上述した
図11では、レイアウトされた各ブロックがメッシュサイズに基づいて区切られている。長さl2は、例えば、メッシュサイズに基づいて決定される。上述したように、R_sは、配線のシート抵抗値であり、予めRAM203やディスク205などの記憶装置に記憶される。また、算出された配線の幅w2は、RAM203やディスク205などの記憶装置に記憶される。
【0110】
(算出装置100による抵抗値算出処理手順例を示すフローチャート)
図19は、算出装置による抵抗値算出処理手順例を示すフローチャートである。まず、算出装置100は、ブロック情報700とパッド情報800とに基づいて、接続情報1000を作成する(ステップS1901)。そして、算出装置100は、比率αを取得する(ステップS1902)。算出装置100は、パッドブロック間抵抗の値を算出する(ステップS1903)。そして、算出装置100は、ブロック内抵抗の値を算出する(ステップS1904)。算出装置100は、ブロック内抵抗の値を補正する(ステップS1905)。そして、算出装置100は、配線幅w2を算出し(ステップS1906)、一連の処理を終了する。
【0111】
図20Aは、
図19で示したパッドブロック間抵抗の値の算出処理の詳細な説明を示すフローチャートである。まず、算出装置100は、比率αと許容値ΔVとによって、抵抗の値Rw_irを算出する(ステップS2001)。つぎに、算出装置100は、配線の長さlによって、抵抗の値Rw_pcを算出する(ステップS2002)。
【0112】
そして、算出装置100は、Rw_ir≦Rw_pcであるか否かを判断する(ステップS2003)。Rw_ir≦Rw_pcでないと判断された場合(ステップS2003:No)、算出装置100は、Rw=Rw_pcとする(ステップS2004)。そして、算出装置100は、δ=Rw_pc/Rw_irとし(ステップS2005)、一連の処理を終了する。
【0113】
Rw_ir≦Rw_pcであると判断された場合(ステップS2003:Yes)、算出装置100は、Rw=Rw_irとする(ステップS2006)。そして、算出装置100は、δ=1とし(ステップS2007)、一連の処理を終了する。
【0114】
図20Bは、
図19で示したブロック内抵抗の値の算出処理の詳細な説明を示すフローチャートである。まず、算出装置100は、回路情報540を作成する(ステップS2011)。つぎに、算出装置100は、特定電流値I0と特定抵抗値r0を設定する(ステップS2012)。例えば、算出装置100は、I0=1[A]、r0=1[Ω]とする。
【0115】
算出装置100は、回路情報540に基づくSPICEシミュレーションにより、差分ΔVb0を導出する(ステップS2013)。算出装置100は、係数βを算出する(ステップS2014)。そして、算出装置100は、ブロック内抵抗の値を算出し(ステップS2015)、一連の処理を終了する。
【0116】
つぎに、ネットリスト作成部504は、配線情報と、I/Oリング情報と、を有する電源配線モデルであるネットリスト541を作成する。ネットリスト作成部504は、ブロック配線作成部531と、I/Oリング作成部532と、を有する。配線情報は、上述した回路情報540と、パッドブロック間抵抗を表す回路情報と、を有するネットリストである。例えば、ブロック配線作成部531は、回路情報540に、抵抗の値rを設定し、パッドブロック間抵抗に、抵抗の値Rwを設定した配線情報を生成する。
【0117】
図21は、配線情報例を示す説明図である。配線情報2100では、各抵抗定義に、Net名と、パッドの座標と、ブロック内の端子の座標と、抵抗値と、が含まれる。例えば、抵抗RAVD_01の定義には、「n_AVD_004005 n_AVD_001005 5」が含まれる。「n_AVD_004005」は、Net名がAVDであり、パッドの座標が(x=004,y=005)であることを示す。「n_AVD_001005」は、Net名がAVDであり、ブロック内の端子の座標が(x=001,y=005)であることを示す。そして、「5」は、抵抗RAVD_01の値が5であることを示す。このように抵抗定義に、Net名と座標と、を含めることにより、シミュレーション結果に基づく電圧マップなどの作成を容易化することができる。
【0118】
つぎに、I/Oリング作成部532は、ノイズ解析の対象回路内の複数のパッドの各々について、パッドの位置情報と、対象回路に接続される複数の電源のうち、パッドに接続される電源を示す電源情報と、を有するパッド情報を取得する。具体的に、I/Oリング作成部532は、パッド情報800を取得する。
【0119】
また、I/Oリング作成部532は、複数のパッドが設けられる領域を複数の部分領域に区切るセルの位置情報を取得する。領域を複数の部分領域に区切るセルは、Dividerセルと称する。Dividerセルについては、複数の種類があるが、ここではDividerセルの種類が不明であるため、パッドを経由する電源配線またはグラウンド配線が不明である。例えば、I/Oリング作成部532は、Dividerセルの位置情報として、レイアウト情報600を取得する。
【0120】
図22は、I/Oリング情報の生成例を示す説明図である。I/Oリング作成部532は、レイアウト情報600と、パッド情報800と、に基づいて、領域areaがDividerセルによって区切られる複数の部分領域を示すI/O領域リストを生成する。I/O領域リストは、部分領域ごとの領域情報を有する。領域情報は、各部分領域について、始点を示す始点情報と、終点を示す終点情報と、部分領域に配置されるパッドが接続される電源を示すNet名と、を有する。具体的には、I/Oリング作成部532は、パッド情報800に含まれるレコードと、レイアウト情報600のうちDividerセルがブロック名に設定されたレコードと、を有するI/Oリストを生成する。そして、I/Oリング作成部532は、基準位置に基づいて、I/Oリストをソートする。具体的には、I/Oリング作成部532は、基準位置からパッドが配置される領域を一周するような順にソートする。
【0121】
つぎに、I/Oリング作成部532は、I/Oリストに含まれるレコードを順に選択する。I/Oリング作成部532は、選択したレコードに設定されたモジュール名がDividerである場合、あらたな部分領域を示す領域情報を生成する。そして、I/Oリング作成部532は、生成した領域情報の始点情報を、選択したレコードに含まれる位置情報に設定する。
【0122】
また、選択したレコードに設定されたモジュール名がDividerでない場合、I/Oリング作成部532は、生成した領域情報の終点情報を、選択したレコードに設定された位置情報に設定する。また、選択したレコードに設定されたモジュール名がDividerでない場合、I/Oリング作成部352は、生成した領域情報のNet名に選択したレコードに設定されたNet名が含まれない場合、生成した領域情報のNet名に、選択したレコードに設定されたNet名を追加する。
【0123】
図22(1)に示すように、領域areaが、部分領域a1から部分領域a5に区切られる。
図22(2)に示すように、例えば、部分領域a1の領域情報内のNet名には、VD1と、VSSと、が設定される。例えば、部分領域a2の領域情報内のNet名には、VD1と、VSSと、が設定される。例えば、部分領域a3の領域情報内のNet名には、VSSと、VD2と、が設定される。例えば、部分領域a4の領域情報内のNet名には、VSSが設定される。例えば、部分領域a5の領域情報内のNet名には、VD1と、VSSと、が設定される。
【0124】
I/Oリング作成部532は、部分領域の各々について、部分領域に設けられる電源の配線と等価な1または複数の抵抗を有する回路を表す抵抗情報を生成する。ここでの抵抗情報は、例えば、SPICEなどの回路記述形式によって記述されたネットリストである。具体的には、I/Oリング作成部532は、部分領域の各々について、領域情報内のNet名が表す電源の配線と等価な1または複数の抵抗を有する回路を表す抵抗情報を生成してI/Oリング情報に追加する。
【0125】
そして、I/Oリング作成部532は、隣り合う2つの部分領域aにおいて、設けられるパッドに接続される電源が同一の場合に、隣り合う部分領域a間を接続する電源の配線と等価な1または複数の抵抗を有する回路を表す抵抗情報を生成する。ここでの抵抗情報は、例えば、SPICEなどの回路記述形式によって記述されたネットリストである。
【0126】
具体的には、I/Oリング作成部532は、隣り合う部分領域aについての領域情報に同一のNet名が設定されているか否かを判断する。具体的には、I/Oリング作成部532は、隣り合う部分領域aの組み合わせごとに、領域情報に設定された同一のNet名を特定する。例えば、
図22(3)に示すように、部分領域a1と部分領域a2の組み合わせは、VD1とVSSとが特定される。例えば、
図22(3)に示すように、部分領域a2と部分領域a3の組み合わせは、VSSが特定される。例えば、
図22(3)に示すように、部分領域a3と部分領域a4の組み合わせは、VSSが特定される。例えば、
図22(3)に示すように、部分領域a4と部分領域a5の組み合わせは、VSSが特定される。例えば、
図22(3)に示すように、部分領域a5と部分領域a1の組み合わせは、VD1とVSSが特定される。そして、I/Oリング作成部532は、隣り合う部分領域a間を接続するための特定したNet名が示す電源の配線と等価な1または複数の抵抗を有する回路を表す抵抗情報を生成してI/Oリング情報に追加する。
【0127】
このように生成されたI/Oリング情報が表す回路は、
図22(4)に示すような抵抗回路Rringである。抵抗の数は、上述したモデル化するメッシュサイズと、電源配線またはグラウンド配線の長さと、に基づいて定まり、各抵抗の値は、パッドの回路構成に基づいて定まる。電源配線またはグラウンド配線の長さは、領域情報内の始点情報および終点情報に基づいて算出可能である。パッドの回路構成に基づく抵抗の値は、配線幅とシート抵抗から求められるようにチップ情報311に予め含まれることとする。また、配線幅とシート抵抗がない場合、パッドの回路構成に基づく抵抗の値として、過去のデータなどに基づく概算値がチップ情報311に含まれることとする。
【0128】
そして、ネットリスト作成部504は、配線情報2100と、I/Oリング情報と、に基づいて、対象回路を表すネットリスト541を作成する。
【0129】
(算出装置100によるI/Oリング情報作成手順例を示すフローチャート)
図23および
図24は、I/Oリング情報作成手順例を示すフローチャートである。まず、算出装置100は、レイアウト情報600と、パッド情報800と、を取得する(ステップS2301)。算出装置100は、レイアウト情報600と、パッド情報800と、に基づいて、I/Oリスト2300を作成する(ステップS2302)。ここでは、算出装置100は、例えば、レイアウト情報600のうち、Dividerセルがモジュール名に設定されたレコードと、パッド情報800の各レコードと、を有するI/Oリスト2300を作成する。算出装置100は、基準位置に基づいてI/Oリスト2300をソートする(ステップS2303)。基準位置については、予め設計者によって定められRAM203やディスク205などの記憶装置に記憶される。
【0130】
算出装置100は、I/Oリスト2300のうち、未選択なレコードがあるか否かを判断する(ステップS2304)。未選択なレコードがある場合(ステップS2304:Yes)、算出装置100は、未選択なレコードのうち、先頭から順に1つのレコードを選択する(ステップS2305)。そして、算出装置100は、選択したレコードに設定されたブロック名がDividerでないか否かを判断する(ステップS2306)。選択したレコードに設定されたブロック名がDividerでない場合(ステップS2306:Yes)、算出装置100は、選択したレコードに設定されたNet名が部分領域を示す領域情報内のNet名に設定されているか否かを判断する(ステップS2307)。部分領域を示す領域情報内のNet名に設定されている場合(ステップS2307:Yes)、ステップS2309へ移行する。
【0131】
部分領域を示す領域情報内のNet名に設定されていない場合(ステップS2307:No)、算出装置100は、部分領域を示す領域情報内のNet名に選択したレコードに設定されたNet名を設定する(ステップS2308)。そして、算出装置100は、部分領域を示す領域情報内の終点情報に、選択したレコードに設定された位置情報を設定し(ステップS2309)、ステップS2304へ戻る。レコードに設定された位置情報とは、x座標、y座標である。選択したレコードに設定されたブロック名がDividerである場合(ステップS2306:No)、算出装置100は、あらたな部分領域を示す領域情報を生成する(ステップS2310)。算出装置100は、領域情報内の始点情報にDividerセルの位置情報を設定し(ステップS2311)、ステップS2304へ移行する。位置情報とは、選択されたレコードに設定されたブロック基準座標x、ブロック基準座標yである。
【0132】
未選択なレコードがない場合(ステップS2304:No)、算出装置100は、基準位置に基づいて領域情報をマージしてI/O領域リスト2301を作成する(ステップS2312)。そして、算出装置100は、I/O領域リスト2301のうち、未選択な領域情報があるか否かを判断する(ステップS2401)。未選択な領域情報がある場合(ステップS2401:Yes)、算出装置100は、未選択な領域情報から先頭の領域情報を選択する(ステップS2402)。
【0133】
そして、算出装置100は、領域情報に設定されたNet名のうち、未選択なNet名があるか否かを判断する(ステップS2403)。未選択なNet名がある場合(ステップS2403:Yes)、算出装置100は、領域情報内の始点および終点情報に基づいてNet名が示す電源の配線と等価な抵抗を表すネットリストをI/Oリング情報2400に追加する(ステップS2404)。
【0134】
つぎに、算出装置100は、I/O領域リスト2301内の選択した領域情報のつぎの領域情報に、選択したNet名が設定されているか否かを判断する(ステップS2405)。選択したNet名が設定されていない場合(ステップS2405:No)、ステップS2403へ戻る。選択したNet名が設定されている場合(ステップS2405:Yes)、算出装置100は、選択した領域情報が示す領域と、つぎの領域情報が示す領域との間の選択したNet名が示す電源の配線と等価な抵抗を表すネットリストをI/Oリング情報2400に追加し(ステップS2406)、ステップS2403へ戻る。
【0135】
ステップS2403において、未選択なNet名がない場合(ステップS2403:No)、算出装置100は、ステップS2401へ戻る。ステップS2401において、未選択な領域情報がない場合(ステップS2401:No)、算出装置100は、生成したI/Oリング情報2400を出力し(ステップS2407)、一連の処理を終了する。
【0136】
以上説明したように、本実施の形態にかかる算出装置は、回路内の各抵抗値と電流値とを各特定値とした場合の回路内の最大電圧降下量と、該各特定値と、の比率に応じて該電流値と電圧降下量の各許容値を満たす該各抵抗の値を決定する。これにより、設計者の手間を省くことができ、設計効率の向上を図ることができる。
【0137】
また、回路は、電源配線と等価な第1抵抗回路と、グラウンド配線と等価な第2抵抗回路とを有し、実施の形態にかかる算出装置は、算出した各抵抗の値と、特定の長さと、に基づき電源配線およびグラウンド配線の配線幅を算出する。これにより、算出された配線幅を実際のレイアウト設計時の電源配線およびグラウンド配線の指標にすることができ、設計効率の向上を図ることができる。
【0138】
また、特定電流値を1[A]とし、特定抵抗値を1[Ω]とすることにより、各抵抗の値の算出を容易化でき、実施の形態にかかる算出装置による算出時間の高速化を図ることができる。
【0139】
また、本実施の形態にかかる算出装置は、第1電圧源と第2電圧源との間の電位差と複数の第1位置の各電圧値との差分の閾値と、電流源の合計電流の特定値と、比率と、に基づく各抵抗の値を算出する。これにより、設計効率の向上を図ることができる。
【0140】
また、本実施の形態にかかる算出装置は、パッドと部分回路との間の電源配線と等価な抵抗の値を、パッドと部分回路との間の電位差の閾値と、電源配線の長さと、の各々において算出する。そして、本実施の形態にかかる算出装置は、電位差によって算出した抵抗の値が電源配線の長さによって算出した抵抗の値以上の場合に、回路内の各抵抗の値を算出した2つの抵抗の値の比率によって補正する。これにより、パッドと部分回路との間の電位差の閾値と、各電圧値との差分の閾値と、の比率を変更することなく、部分回路内の各抵抗の値を補正することが可能となる。
【0141】
また、本実施の形態にかかる算出装置は、パッドごとにパッドに流れる総電流値を、パッドと接続される部分回路の電流の特定値に基づき算出する。そして、本実施の形態にかかる算出装置は、算出した総電流値がパッドの許容電流値とワイヤボンディングの許容電流値とのいずれよりも小さい場合に、部分回路ごとの各抵抗の値を算出する処理を行う。このように、各パッドの電流値が各許容電流値を遵守可能な状態にしておいた後に、各抵抗の値が算出されることにより、設計フローのより早い段階で設計仕様の変更を検討することができ、パッド周りのよりよい設計仕様によって設計を行うことができる。したがって、設計効率の向上を図ることができる。
【0142】
また、実施の形態にかかる算出装置は、パッドが配置される領域をDividerセルに基づき部分領域に区切り、隣り合う部分領域に設けられるパッドに接続される電源の種類に基づき、I/Oリングを表すネットリストを作成する。これにより、ネットリストの作成に関する設計者の手間を省くことができ、設計効率の向上を図ることができる。
【0143】
なお、本実施の形態で説明した算出方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。本算出プログラムは、ディスクやUSB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本算出プログラムは、インターネット等のネットワークを介して配布してもよい。
【0144】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0145】
(付記1)コンピュータが、
互いに接続された複数の抵抗を有し第1電圧源が接続された第1抵抗回路と、前記複数の抵抗と同一の接続関係を有する複数の抵抗を有し前記第1電圧源よりも低電圧の第2電圧源が接続された第2抵抗回路と、を有する回路であって、前記第1抵抗回路内の電気的に異なる複数の第1位置と、前記複数の第1位置の各々に対応する前記第2抵抗回路内の複数の第2位置と、がそれぞれ電流源を介して接続された回路を表す回路情報を取得し、
前記電流源の合計電流値を特定電流値とし、前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を特定抵抗値とした場合における、前記第1電圧源と前記第2電圧源との間の電位差と前記複数の第1位置の各第1電圧値の中から選択した電圧値との第1差分と、前記第2電圧源の電位と前記複数の第2位置の各第2電圧値の中から選択した電圧値との第2差分と、を取得した前記回路情報に基づいて導出し、
導出した前記第1差分と導出した前記第2差分とから選択した差分と、前記特定電流値と前記特定抵抗値とに基づく電圧値と、の比率に応じた前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を算出する、
処理を実行することを特徴とする算出方法。
【0146】
(付記2)前記各第1電圧値の中から選択した前記電圧値は、前記各第1電圧値の中の最も小さい電圧値であることを特徴とする付記1に記載の算出方法。
【0147】
(付記3)前記各第2電圧値の中から選択した前記電圧値は、前記各第2電圧値の中の最も大きい電圧値であることを特徴とする付記1または2に記載の算出方法。
【0148】
(付記4)選択した前記差分は、導出した前記第1差分と導出した前記第2差分とのうち、大きい方の差分であることを特徴とする付記1〜3のいずれか一つに記載の算出方法。
【0149】
(付記5)前記第1抵抗回路は、第1電源配線と等価な抵抗回路であり、前記第2抵抗回路は、第2電源配線と等価な抵抗回路であって、
前記コンピュータが、
算出した前記各抵抗の値と、特定長さと、に基づく前記第1電源配線および第2電源配線の配線幅を算出することを特徴とする付記1〜4のいずれか一つに記載の算出方法。
【0150】
(付記6)前記特定電流値を1[A]とし、前記特定抵抗値を1[Ω]とすることを特徴とする付記1〜5のいずれか一つに記載の算出方法。
【0151】
(付記7)前記各抵抗の値を算出する処理では、前記第1電圧源と前記第2電圧源との間の電位差と前記複数の第1位置の各電圧値との差分の閾値と、前記電流源の合計電流の特定値と、前記比率と、に基づく前記各抵抗の値を算出することを特徴とする付記1〜6のいずれか一つに記載の算出方法。
【0152】
(付記8)前記コンピュータが、
前記回路(以下、「部分回路」と称する。)を有する対象回路内の複数の外部端子のうち、前記部分回路と接続される外部端子と、前記部分回路と、の間の電源配線と等価な抵抗の第1値を、前記部分回路と接続される外部端子と前記部分回路との間の電位差の第2閾値によって算出し、前記電源配線と等価な抵抗の第2値を、前記電源配線の長さによって算出する、
処理を実行し、
前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を算出する処理では、さらに、前記第1値が前記第2値以上である場合、前記比率に応じた前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を、前記第1値と前記第2値との比率によって補正することを特徴とする付記7に記載の算出方法。
【0153】
(付記9)前記コンピュータが、
前記回路(以下、「部分回路」と称する。)を有する対象回路内の複数の外部端子のうち前記部分回路が接続される外部端子の各々について、前記外部端子に接続される前記対象回路内の各回路を流れる電流の総和を算出し、
算出した前記総和が、前記外部端子の許容電流値と、前記外部端子に接続されるワイヤボンディングの許容電流値と、のいずれよりも小さいか否かを判断する、
処理を実行し、
前記回路情報を取得する処理では、算出した前記総和がいずれよりも小さい場合に、前記回路情報を取得することを特徴とする付記1〜8のいずれか一つに記載の算出方法。
【0154】
(付記10)前記コンピュータが、
前記回路(以下、「部分回路」と称する。)を有する対象回路内の複数の外部端子の各々について、前記外部端子の位置情報と、前記対象回路に接続される複数の電源のうち、前記外部端子に接続される電源を示す電源情報と、を有する外部端子情報を取得し、
前記複数の外部端子が設けられる領域を区切るセルの位置情報を取得し、
取得した前記外部端子情報と、取得した前記セルの位置情報と、に基づいて、前記領域が区切られた複数の部分領域を示す領域情報を生成し、
前記複数の電源の各々について、生成した前記領域情報が示す前記複数の部分領域の各々に設けられる外部端子について取得した前記外部端子情報に基づいて、前記電源の配線と等価な抵抗回路を表す抵抗情報を生成し、
前記複数の電源の各々について生成した前記抵抗情報と、前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を算出した前記抵抗の値にした前記部分回路を表す前記回路情報と、に基づいて、前記対象回路を表す対象回路情報を生成する、
ことを特徴とする付記1〜9のいずれか一つに記載の算出方法。
【0155】
(付記11)コンピュータに、
互いに接続された複数の抵抗を有し第1電圧源が接続された第1抵抗回路と、前記複数の抵抗と同一の接続関係を有する複数の抵抗を有し前記第1電圧源よりも低電圧の第2電圧源が接続された第2抵抗回路と、を有する回路であって、前記第1抵抗回路内の電気的に異なる複数の第1位置と、前記複数の第1位置の各々に対応する前記第2抵抗回路内の複数の第2位置と、がそれぞれ電流源を介して接続された回路を表す回路情報を取得し、
前記電流源の合計電流値を特定電流値とし、前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を特定抵抗値とした場合における、前記第1電圧源と前記第2電圧源との間の電位差と前記複数の第1位置の各第1電圧値の中から選択した電圧値との第1差分と、前記第2電圧源の電位と前記複数の第2位置の各第2電圧値の中から選択した電圧値との第2差分と、を取得した前記回路情報に基づいて導出し、
導出した前記第1差分と導出した前記第2差分とから選択した差分と、前記特定電流値と前記特定抵抗値とに基づく電圧値と、の比率に応じた前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を算出する、
処理を実行させることを特徴とする算出プログラム。
【0156】
(付記12)互いに接続された複数の抵抗を有し第1電圧源が接続された第1抵抗回路と、前記複数の抵抗と同一の接続関係を有する複数の抵抗を有し前記第1電圧源よりも低電圧の第2電圧源が接続された第2抵抗回路と、を有する回路であって、前記第1抵抗回路内の電気的に異なる複数の第1位置と、前記複数の第1位置の各々に対応する前記第2抵抗回路内の複数の第2位置と、がそれぞれ電流源を介して接続された回路を表す回路情報を取得する取得部と、
前記電流源の合計電流値を特定電流値とし、前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を特定抵抗値とした場合における、前記第1電圧源と前記第2電圧源との間の電位差と前記複数の第1位置の各第1電圧値の中から選択した電圧値との第1差分と、
前記第2電圧源の電位と前記複数の第2位置の各第2電圧値の中から選択した電圧値との第2差分と、を前記取得部が取得した前記回路情報に基づいて導出する導出部と、
前記導出部が導出した前記第1差分と導出した前記第2差分とから選択した差分と、前記特定電流値と前記特定抵抗値とに基づく電圧値と、の比率に応じた前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を算出する抵抗値算出部と、
を有することを特徴とする算出装置。
【0157】
(付記13)互いに接続された複数の抵抗を有し第1電圧源が接続された第1抵抗回路と、前記複数の抵抗と同一の接続関係を有する複数の抵抗を有し前記第1電圧源よりも低電圧の第2電圧源が接続された第2抵抗回路と、を有する回路であって、前記第1抵抗回路内の電気的に異なる複数の第1位置と、前記複数の第1位置の各々に対応する前記第2抵抗回路内の複数の第2位置と、がそれぞれ電流源を介して接続された回路を表す回路情報を取得し、
前記電流源の合計電流値を特定電流値とし、前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を特定抵抗値とした場合における、前記第1電圧源と前記第2電圧源との間の電位差と前記複数の第1位置の各第1電圧値の中から選択した電圧値との第1差分と、前記第2電圧源の電位と前記複数の第2位置の各第2電圧値の中から選択した電圧値との第2差分と、を取得した前記回路情報に基づいて導出し、
導出した前記第1差分と導出した前記第2差分とから選択した差分と、前記特定電流値と前記特定抵抗値とに基づく電圧値と、の比率に応じた前記第1抵抗回路および前記第2抵抗回路の各抵抗の値を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。