以下に添付図面を参照して、開示の設計支援方法、設計支援装置、および設計支援プログラムの実施の形態を詳細に説明する。
図1は、本実施の形態にかかる設計支援装置の動作例を示す説明図である。設計支援装置100は、回路設計を支援するコンピュータである。ここで、設計対象回路がアナログ回路である場合の設計処理手順について説明する。設計処理の1番目の処理は、回路トポロジを決定するとともに、素子の特性を表すパラメータを決定する処理である。回路トポロジとは、素子のつなぎ合わせ方を示す。以下、素子のつなぎ合わせ方を示す情報を、回路情報とする。素子の特性を表すパラメータは、抵抗値や容量値といった各素子の特性を表す値である。以下、素子の特性を表すパラメータを、「ばらつきパラメータ」と称する。2番目の処理は、1番目の処理にて決定した回路設計を検証し、仕様を満たすか否かを判断する処理である。
3番目の処理は、2番目の処理にて、仕様を満たすと判断された場合、レイアウト処理を行う処理である。レイアウト処理を行うことにより、回路情報にレイアウト寄生素子が含まれる。レイアウト寄生素子は、例えば、レイアウト配線容量や配線抵抗等である。以下、レイアウト処理を行う前の設計対象回路を、「プレレイアウト回路」と呼称し、レイアウト処理を行った後の設計対象回路を「ポストレイアウト回路」と呼称する。
4番目の処理は、レイアウト後の回路情報に対して、物理検証を行う処理である。物理検証として、例えば、DRC(Design Rule Check)、LVS(Layout Versus Schematic)等がある。
5番目の処理は、物理検証を行った回路情報について、回路の性能値がばらつきの仕様を満たすか否かを判断する処理である。5番目の処理にて、回路の性能値がばらつきの仕様を満たすと判断された回路情報について、製造工程により回路情報に従った回路が製造される。また、ばらつきの仕様を満たすか否かを判断する理由として、プロセスが微細化すると性能がばらつき、ばらつきが大きくなると性能が仕様範囲外となる回路が多くなるので、歩留まりが低下してしまうためである。性能とは、例えば、発振周波数、遅延量といったものである。例えば、シミュレーションで得られる回路の発振周波数の値は1つであるが、実際に製造された回路の発振周波数は、回路ごとに異なる値となり、ばらついた値となる。そこで、5番目の処理を実行することにより、性能値が仕様範囲外となってしまうことを抑えることができる。
性能のばらつきを解析するために、ポストレイアウト回路のばらつきモデルを作成して、性能のばらつきの出所を解明することが行われる。性能のばらつきの出所を解明することにより、歩留まりの改善を図ることができる。ばらつきモデルf()は、関数で表されるモデルであり、例えば、下記(1)式で表すことができる。
Δp=f(Δx1,Δx2,…,Δxn) …(1)
ばらつきモデルf()の具体例としては、例えば、下記(2)式となる。
Δp=a1*Δx1+a2*Δx2+…+an*Δxn …(2)
(2)式は、ばらつきモデルf()が線形モデルである場合を示す。ばらつきモデルf()は、非線形モデルでもよい。例えば、ばらつきモデルf()は、予め用意された非線形モデルを当てはめてもよい。(1)式、(2)式において、pは、ポストレイアウト回路の性能値を示す。x1,x2,…,xnは、ポストレイアウト回路の各々の素子の特性を表すばらつきパラメータ群を示す。a1,a2,…,anは、ポストレイアウト回路をSPICE(Simulation Program with Integrated Circuit Emphasis)等により動作を模擬して得られたサンプリングデータを用いてフィッティングすることにより得られる係数である。動作の模擬は、SPICE等によるシミュレーションを行うことである。以下、動作の模擬を、「シミュレーション」と呼ぶ。また、“Δ”は、下記(3)式を行う演算子とする。
Δx=x−(xの平均値) …(3)
(3)式により、例えば、Δpは、p−(pの平均値)となる。以下、平均値からの差分値を、「偏差」と呼称する。
ばらつきモデルを作成するために、サンプリングデータを得ることになるが、ポストレイアウト回路内の素子の数は膨大であるため、1回のシミュレーション時間が長くなる。また、ポストレイアウト回路内の素子が膨大になると、ばらつきパラメータの数も膨大となり、シミュレーションの回数が増えるため、ポストレイアウト回路のばらつきモデルを作成する時間が長くなる。
ばらつきモデルの作成方法として、例えば、以下の2つの方法がある。1つ目の方法はRSM(Response Surface Methodology)であり、2つ目の方法は、Sparsity特性を利用した方法である。RSMは、ポストレイアウト回路のばらつきパラメータの数と同数以上のばらつきパラメータ群に設定するサンプリングデータを用意しておくことになる。
Sparsity特性とは、ポストレイアウト回路のばらつきパラメータ群のうち性能に影響を与えるばらつきパラメータがばらつきパラメータ全体の極一部であるという特性である。Sparsity特性を利用した方法とは、このSparsity特性を利用した方法である。Sparsity特性の度合いは、サンプリングデータと性能に影響を与えるばらつきパラメータの比によって表すことができる。Sparsity特性を利用した方法として、例えば、LAR(Least Angle Regression)、LASSO(Least Absolute Shrinkage and Selection Operator)などがある。LARの詳細については、下記参考文献1に記載されている。LASSOの詳細については、下記参考文献2に記載されている。
(参考文献1:BRADLEY EFRON,他3名,“LEAST ANGLE REGRESSION”,The Annals of Statistics 2004,Vol.32,No.2,407−499,Institute of Mathematical Statistics,2004)
(参考文献2:Robert Tibshirani,“Regression Shrinkage and Selection via the Lasso”,Journal of the Royal Statistical Society.Series B(Methodological),Volume 58,Issue 1(1996),267−288)。
性能に影響を与えるばらつきパラメータは、発振周波数、遅延量といった性能の種別によって異なるものとなる。サンプリングデータが性能に影響を与えるばらつきパラメータに対して多いほど、Sparsity特性の度合いが増加する。Sparsity特性を利用した方法は、Sparsity特性の度合いが小さい場合、ばらつきモデルの誤差が大きくなり、精度の悪いばらつきモデルが作成されてしまうことになる。サンプリングデータを多く用意することによって、ばらつきモデルを精度よく作成することができる。一方、サンプリングデータが多いと、ばらつきモデルの作成に時間がかかる。
そこで、レイアウト前後の回路の性能の差とポストレイアウト回路のばらつきパラメータの値とから、上述したLARによって、性能の差分を表す差分モデルの候補を作成することが考えられる。作成した差分モデルの候補から、誤差値が最も小さい差分モデルの候補を差分モデルとして選択することができる。ここで、誤差値とは、ポストレイアウト回路のばらつきパラメータの値を差分モデルに代入して得られる性能値と、レイアウト前後の回路の性能の差とから得られるモデル評価誤差である。
しかしながら、差分モデルの候補から、誤差値が最も小さい差分モデルを選んでも、最小誤差の最適な差分モデルではない可能性がある。特に、ポストレイアウト回路のばらつきパラメータの値は少ないため、差分モデルの候補の誤差値が大きくなる場合がある。
そこで、本実施の形態にかかる設計支援装置100は、レイアウト前後の回路の性能の差とポストレイアウト回路のばらつきパラメータの値とから、性能の差分を表す差分モデルのパラメータ群の各々の係数の値の組み合わせを複数通り作成する。設計支援装置100は、係数の値の組み合わせごとの特徴値と誤差値とに基づいて、誤差値と特徴値との関係式を導出し、差分モデルの誤差値を最小とする各々の係数の値を算出する。
以下の説明では、ポストレイアウト回路のばらつきモデルのばらつきパラメータの個数をnとする。また、プレレイアウト回路のばらつきモデルのばらつきパラメータの個数をmとする。nは、mよりも大きい値となる。さらに、ポストレイアウト回路のばらつきモデルの各々のばらつきパラメータの値を一まとめの組み合わせにした際の組み合わせの個数を、cntとする。
図1において、設計支援装置100は、プレレイアウト回路101の回路情報を取得する。プレレイアウト回路101は、トランジスタM1_preを含む。また、プレレイアウト回路101の各々の素子の特性を表す第1ばらつきパラメータ群は、x1,…,xmというm個のパラメータを有する。また、設計支援装置100は、プレレイアウト回路101に対してレイアウト処理を行い、ポストレイアウト回路102の回路情報を取得する。ポストレイアウト回路102は、トランジスタM1_postと、レイアウト処理によって発生したレイアウト寄生素子として、C1_post〜C6_postと、R1_postと、R2_postとを含む。また、ポストレイアウト回路102の各々の素子の特性を表す第2ばらつきパラメータ群は、x1,…,xm,…,xnというn個のパラメータを有する。
設計支援装置100は、記憶部110に第2ばらつきパラメータ群の各々の値を記憶する。設計支援装置100は、プレレイアウト回路101の性能値を表す第1関数モデルに、第2ばらつきパラメータ群のうちの第1ばらつきパラメータ群の各々に対応するパラメータの値を入力することにより、プレレイアウト回路101の第1性能値を算出する。具体的に、設計支援装置100は、Δx1_1,…,Δxm_1を第1関数モデルに代入し、第1性能値としてΔp_pre_1を算出し、…、Δx1_cnt,…,Δxm_cntを第1関数モデルに代入し、第1性能値としてΔp_pre_cntを算出する。
また、設計支援装置100は、第2ばらつきパラメータ群の各々の値を用いてポストレイアウト回路102をシミュレーションして得られるポストレイアウト回路102の第2性能値を取得する。例えば、設計支援装置100は、Δx1_1,…,Δxm_1,…,Δxn_1を用いてポストレイアウト回路102をシミュレーションして得られるポストレイアウト回路102の第2性能値として、Δp_post_1を取得する。同様な処理を続けて、設計支援装置100は、Δx1_cnt,…,Δxm_cnt,…,Δxn_cntを用いてポストレイアウト回路102をシミュレーションして得られるポストレイアウト回路102の第2性能値として、Δp_post_cntを取得する。
(1)設計支援装置100は、第1性能値と、第2性能値と、第2ばらつきパラメータ群の各々の値とに基づいて、プレレイアウト回路101とポストレイアウト回路102の性能値の差分を表す関数モデルの第2ばらつきパラメータ群の係数を作成する。また、関数モデルの第2ばらつきパラメータ群の係数は、設計支援装置100が他の装置から取得する形態であってもよい。係数については、例えば、LARによって算出される。関数モデルf_diff_1(),…,f_diff_m()は、第2ばらつきパラメータ群を用いてプレレイアウト回路101とポストレイアウト回路102の性能値の差分を表す関数モデルである。
具体的に、設計支援装置100は、第1性能値と第2性能値との差分を算出する。図1の例では、設計支援装置100は、Δp_post_1−Δp_pre_1=Δp_1を算出し、…、Δp_post_k−Δp_pre_k=Δp_kを算出する。なお、kはcntより小さい整数である。続けて、設計支援装置100は、Δp_1、…、Δp_kと、第2ばらつきパラメータ群の各々の値とを用いてLARを用いることで、関数モデルf_diff_1(),…,f_diff_m()を算出する。関数モデルf_diff_1(),…,f_diff_m()は、例えば、下記(4)式となる。
Δp=f_diff_1(a1,Δx1)
Δp=f_diff_2(a1,Δx1,a2,Δx2)
Δp=f_diff_3(a1,Δx1,a2,Δx2,a3,Δx3)
…
Δp=f_diff_m(a1,Δx1,a2,Δx2,a3,Δx3,…,an,Δxn) …(4)
ただし、Δpは、プレレイアウト回路101と、ポストレイアウト回路102の性能値の偏差を示す。a1は、関数モデルf_diff_1()〜f_diff_m()での、第2ばらつきパラメータ群x1の偏差Δx1の係数である。同様に、a2は、関数モデルf_diff_2()〜f_diff_m()での、第2ばらつきパラメータ群x2の偏差Δx2の係数である。a3〜anも同様である。
設計支援装置100は、関数モデルf_diff_1(),…,f_diff_m()から第2パラメータ群の各々の係数の値の組み合わせ(a1)、(a1,a2)、…、(a1,a2,a3,…,an)を作成する。
(2)設計支援装置100は、係数の値の組み合わせごとに、係数の値の組み合わせに基づく関数モデルの特徴値λを算出する。また、設計支援装置100は、第2パラメータ群の各々の値を関数モデルに代入して得られる性能値の差分と第1の性能値と第2性能値とに基づく関数モデルの誤差値を算出する。ここで、関数モデルの特徴値λとは、第2関数モデルが算出する性能値に影響を与える係数に依存する値である。なお、ポストレイアウト回路内の素子の数は、例えば数万と膨大な数であるため、第2パラメータ群の各々の係数の数も膨大となる。このため、本実施の形態では、すべての係数を扱うのではなく、性能値に影響を与える係数に依存する値である特徴値λを扱う。
図1の例では、設計支援装置100は、関数モデルf_diff_1()の係数の値の組み合わせ(a1)から関数モデルf_diff_1()の特徴値λ1を算出する。同様な処理を続けて、関数モデルf_diff_m()の係数の値の組み合わせ(a1,a2,a3,…,an)から関数モデルf_diff_m()の特徴値λmを算出する。
また、図1の例では、設計支援装置100は、関数モデルf_diff_1()にΔx1_k+1,…,Δxn_k+1を代入して得られる性能値の差分と、Δp_pre_k+1と、Δp_post_k+1との誤差値を算出する。続けて、設計支援装置100は、関数モデルf_diff_1()にΔx1_k+2,…,Δxn_k+2を代入して得られる性能値の差分と、Δp_pre_k+2と、Δp_post_k+2との誤差値を算出する。同様な処理を続けて、設計支援装置100は、関数モデルf_diff_1()にΔx1_cnt,…,Δxn_cntを代入して得られる性能値の差分と、Δp_pre_cntと、Δp_post_cntとの誤差値を算出する。設計支援装置100は、これらの誤差値を評価して、関数モデルf_diff_1()の誤差値e1を算出する。例えば、誤差値の評価は、AIC(Akaike’s Information Criterion,赤池情報量基準)、2乗誤差で評価する。
同様な処理を続けて、設計支援装置100は、関数モデルf_diff_2()の誤差値e2を算出し、…、関数モデルf_diff_m()の誤差値emを算出する。
(3)設計支援装置100は、係数の値の組み合わせごとの特徴値λと関数モデルの誤差値eとに基づいて、誤差値eと特徴値λとの関係式を導出する。図1の例では、設計支援装置100は、(λ1、e1)、(λ2、e2)、…、(λm、em)に基づいて、関係式e=E(λ)を導出する。例えば、設計支援装置100は、最小自乗法で(λ1、e1)、(λ2、e2)、…、(λm、em)を多項式にフィッティングする。
(4)設計支援装置100は、関係式から得られる関数モデルの誤差値を最小とする特徴値に基づいて、関数モデルの誤差値を最小とする各々の係数の値を算出する。図1の例では、設計支援装置100は、関係式e=E(λ)のeを最小にするλoptに基づいて、関数モデルの誤差値を最小とする各々の係数の値(ad1,ad2,ad3,…,adn)を算出する。ad1は、第2ばらつきパラメータ群x1の偏差Δx1の係数であり、同様に、anは、第2ばらつきパラメータ群xnの偏差Δxnの係数である。
例えば、設計支援装置100は、関係式e=E(λ)のeを最小にするλoptを、関係式e=E(λ)を微分して、微分したE’(λ)=0となるλから求めることができる。また、例えば、設計支援装置100は、各々の係数の値(ad1,ad2,ad3,…,adn)を次のようにして算出することができる。
設計支援装置100は、λ1、…、λmから、λk≦λopt≦λ(k+1)となる最大のλk、最小のλ(k+1)(kは1以上、m以下の整数)を特定する。次に、設計支援装置100は、特徴値λkの関数モデルf_diff_k()の係数の値の組み合わせ(a1k,a2k,a3k,…,ank)を算出する。また、設計支援装置100は、特徴値λ(k+1)の関数モデルf_diff_λ(k+1)()の係数の値の組み合わせ(a1(k+1),a2(k+1),a3(k+1),…,an(k+1))を算出する。設計支援装置100は、これらの係数の値の組み合わせを、λk、λopt、λ(k+1)で補完することにより、各々の係数の値(ad1,ad2,ad3,…,adn)を算出することができる。
以上の処理を実行することにより、設計支援装置100は、関数モデルの誤差値を最小とする各々の係数の値(ad1,ad2,ad3,…,adn)を作成することができる。各々の係数の値(ad1,ad2,ad3,…,adn)を使用することにより、誤差値が最小となる関数モデルf_diff()は、例えば、下記(5)式となる。
Δp=f_diff(ad1,Δx1,ad2,Δx2,ad3,Δx3,…,adn,Δxn) …(5)
これにより、設計支援装置100は、関数モデルf_diff()を作成する場合、サンプリングデータを少なくしても、高精度の関数モデルを作成することができる。以下、図2〜図18を用いて、設計支援装置100の詳細について説明する。
(設計支援装置100のハードウェア)
図2は、設計支援装置のハードウェア構成の一例を示すブロック図である。図2において、設計支援装置100は、Central Processing Unit(CPU)201と、Read−Only Memory(ROM)202と、Random Access Memory(RAM)203と、を含む。また、設計支援装置100は、ディスクドライブ204と、ディスク205と、通信インターフェース206と、を含む。また、設計支援装置100は、ディスプレイ207と、キーボード208と、マウス209とを含む。また、CPU201〜マウス209はバス210によってそれぞれ接続されている。
CPU201は、設計支援装置100の全体の制御を司る演算処理装置である。ROM202は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM203は、CPU201のワークエリアとして使用される揮発性メモリである。
ディスクドライブ204は、CPU201の制御に従ってディスク205に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ204には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク205は、ディスクドライブ204の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ204が磁気ディスクドライブである場合、ディスク205には、磁気ディスクを採用することができる。また、ディスクドライブ204が光ディスクドライブである場合、ディスク205には、光ディスクを採用することができる。また、ディスクドライブ204がソリッドステートドライブである場合、ディスク205には、半導体素子メモリを採用することができる。
通信インターフェース206は、ネットワーク211と内部のインターフェースを司り、外部装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース206は、通信回線を通じてネットワーク211となるLocal Area Network(LAN)、Wide Area Network(WAN)、インターネットなどに接続され、ネットワーク211を介して他の装置に接続される。通信インターフェース206には、例えば、モデムやLANアダプタなどを採用することができる。
ディスプレイ207は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する装置である。ディスプレイ207には、例えば、Cathode Ray Tube(CRT)、Thin Film Transistor(TFT)液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
キーボード208は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う装置である。また、キーボード208は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス209は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う装置である。マウス209は、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
(設計支援装置100の機能構成)
次に、設計支援装置100の機能構成について説明する。図3は、設計支援装置の機能構成例を示すブロック図である。設計支援装置100は、第1算出部301と、取得部302と、作成部303と、第2算出部304と、導出部305と、第3算出部306と、を含む。制御部となる第1算出部301〜第3算出部306は、記憶装置に記憶されたプログラムをCPU201が実行することにより、第1算出部301〜第3算出部306の機能を実現する。記憶装置とは、具体的には、例えば、図2に示したROM202、RAM203、ディスク205などである。または、通信インターフェース206を経由して他のCPUが実行することにより、第1算出部301〜第3算出部306の機能を実現してもよい。また、第1算出部301〜第3算出部306の処理結果は、例えば、ROM202、RAM203、ディスク205などの記憶装置に記憶される。
また、設計支援装置100は、記憶部110にアクセス可能である。記憶部110は、RAM203、ディスク205といった記憶装置に格納されている。記憶部110は、第2ばらつきパラメータ群の各々の値を含む組み合わせを複数通り記憶する。例えば、記憶部110は、Δx1_1,…,Δxm_1,…,Δxn_1の組み合わせと、Δx1_2,…,Δxm_2,…,Δxn_2の組み合わせと、…、Δx1_cnt,…,Δxm_cnt,…,Δxn_cntの組み合わせとを、cnt個通り記憶する。
また、ポストレイアウト回路102は、プロセスの設計規則を満たした回路であってもよい。DRCを満たすことにより、ポストレイアウト回路102がプロセスの設計規則を満たすことになる。また、ポストレイアウト回路102は、ポストレイアウト回路102内の各々の素子のうちのプレレイアウト回路101内の各々の素子に対応する素子の接続関係がプレレイアウト回路101の各々の素子の接続関係と一致する回路であってもよい。LVSを満たすことにより、接続関係が一致することになる。
第1算出部301は、第1関数モデルに、記憶部110を参照して、第2ばらつきパラメータ群のうちの第1ばらつきパラメータ群の各々に対応するパラメータの値を入力することにより、プレレイアウト回路101の第1性能値を算出する。第1関数モデルは、第1パラメータ群を用いてプレレイアウト回路101の性能値を表す関数モデルである。第1関数モデルが表す性能値は、性能値そのものでもよいし、性能値の平均値からの差分でもよい。
対応するパラメータを特定する例として、第1算出部301は、例えば、第2ばらつきパラメータ群のパラメータの名称や識別情報の一部が、第1ばらつきパラメータ群のあるパラメータと一致する場合、あるパラメータを対応するパラメータとして特定する。
第1算出部301は、組み合わせに含まれる第2ばらつきパラメータ群の各々の値のうちの第1ばらつきパラメータ群の各々に対応するパラメータの値を第1関数モデルに入力する。これにより、第1算出部301は、プレレイアウト回路101の第1性能値を組み合わせに対応して算出する。図1の例を用いると、例えば、第1算出部301は、Δx1_1,…,Δxm_1,…,Δxn_1の組み合わせのうち、Δx1_1,…,Δxm_1を第1関数モデルに入力して第1性能値Δp_pre_1を算出する。さらに、第1算出部301は、Δx1_cnt,…,Δxm_cnt,…,Δxn_cntの組み合わせのうち、Δx1_cnt,…,Δxm_cntを第1関数モデルに入力して第1性能値Δp_pre_cntを算出する。なお、算出された第1性能値は、RAM203、ディスク205などの記憶装置に格納される。
取得部302は、記憶部110に記憶されている組み合わせに含まれる第2ばらつきパラメータ群の各々の値を用いてポストレイアウト回路102の動作を模擬して得られるポストレイアウト回路102の第2性能値を組み合わせに対応して取得する。図1の例を用いると、取得部302は、Δx1_1,…,Δxm_1,…,Δxn_1を用いてシミュレーションして得られる第2性能値Δp_post_1を取得する。さらに、取得部302は、Δx1_cnt,…,Δxm_cnt,…,Δxn_cntを用いてシミュレーションして得られる第2性能値Δp_post_cntを取得する。なお、取得された第2性能値は、RAM203、ディスク205などの記憶装置に格納される。
作成部303は、次に示す情報に基づいて、第2ばらつきパラメータ群から選ばれた一部のパラメータ群の組み合わせに対応して、第2関数モデルの候補のパラメータ群の各々の係数の値の組み合わせを、複数通り作成する。次に示す情報とは、記憶部110に記憶されている複数の組み合わせのうちの第1の組み合わせに対応する第1性能値と第1の組み合わせに対応する第2性能値と第1の組み合わせに含まれる第2ばらつきパラメータ群の各々の値となる。第2関数モデルは、第2ばらつきパラメータ群を用いてプレレイアウト回路101とポストレイアウト回路102の性能値の差分を表す関数モデルである。第2関数モデルが表す性能値は、性能値そのものでもよいし、性能値の平均値からの差分でもよい。
図1の例では、第1の組み合わせに対応する第1性能値は、Δp_1、…、Δp_kであり、第1の組み合わせに対応する第2性能値は、Δp_post_1、…、Δp_post_kである。また、第1の組み合わせに含まれる第2ばらつきパラメータ群の各々の値は、Δx1_1,…,Δxn_1の組み合わせからΔx1_k,…,Δxn_kの組み合わせである。
より具体的には、例えば、cntが50である場合、k=40として、50個の組み合わせのうち、40個の組み合わせが関数モデル作成に用いられ、10個の組み合わせが第2算出部304で、第2の性能値の算出に用いられる。
本実施の形態では、パラメータ群の組み合わせをフィッティング用と評価用に分け、交差で関数モデルを評価するクロスバリデーションと呼ばれる技術を用いることで、オーバーフィッティングを防止することができる。
例えば、作成部303は、x1,…,xm,…,xnのうちの一部のパラメータとして、LARに従い、最も相関が高いx1を用いて第2関数モデルの候補の1つ目を作成する。次に、作成部303は、LARに従い、最も相関が高いx1と次に相関の高いx2を用いて第2関数モデルの候補の2つ目を作成する。このように、作成部303は、相関の高いパラメータの順にパラメータを選択して、選択したパラメータを用いて第2関数モデルの候補のパラメータ群の各々の係数の値の組み合わせを複数作成する。なお、作成された第2関数モデルの候補のパラメータ群の各々の係数の値の組み合わせは、RAM203、ディスク205などの記憶装置に格納される。
本実施の形態では、第1算出部301と、取得部302と、作成部303とが、第2関数モデルの第2ばらつきパラメータ群の係数を作成する。しかし、第2関数モデルの第2ばらつきパラメータ群の係数は、設計支援装置100が他の装置から取得する形態であってもよい。
第2算出部304は、係数の値の組み合わせごとに、係数の値の組み合わせに基づく第2関数モデルの特徴値λを算出する。また、第2算出部304は、パラメータ群の各々の値を第2関数モデルに代入して得られる性能値の差分と第1性能値と第2性能値とに基づく第2関数モデルの誤差値eを算出する。
ここで、第2関数モデルの特徴値λとは、第2関数モデルが算出する性能値に影響を与える係数に依存する値である。例えば、第2関数モデルが線形で表される場合、係数の絶対値が大きいほど、性能値に影響を与えるため、係数の絶対値の和を第2関数モデルの特徴値として、算出することができる。なお、算出された特徴値λは、RAM203、ディスク205などの記憶装置に格納される。具体的には、(4)式の関数モデルf_diff_m()=a1*Δx1+a2*Δx2+a3*Δx3+…+an*Δxnの線形である場合、特徴値λmは、例えば、下記(6)式となる。
λm=|a1|+|a2|+…+|an| …(6)
次に、第2算出部304は、記憶部110に記憶されている第1の組み合わせの残余である第2の組み合わせに含まれる第2ばらつきパラメータ群の各々の値を、特徴値λを算出した第2関数モデルに代入して、性能値の差分を算出する。図1の例を用いると、第2算出部304は、関数モデルf_diff_1()〜f_diff_m()にΔx1_k+1,…,Δxn_k+1を代入して得られる性能値の差分を算出する。なお、算出された性能値性能値の差分は、RAM203、ディスク205などの記憶装置に格納される。
第2算出部304は、算出した性能値の差分と、第1算出部301が算出した第1性能値と、取得部302が取得した第2性能値との誤差値を算出する。図1の例を用いると、第2算出部304は、関数モデルf_diff_1()にΔx1_k+1,…,Δxn_k+1を代入して得られる性能値の差分と、Δp_pre_k+1と、Δp_post_k+1との誤差値e1k+1を算出する。同様な処理を続けて、第2算出部304は、Δx1_cnt,…,Δxn_cntを代入して得られる性能値の差分と、Δp_pre_cntと、Δp_post_cntの誤差値e1cntを算出する。第2算出部304は、関数モデルf_diff_1()に対して、誤差値e1k+1,…,誤差値e1cntを算出する。第2算出部304は、これらの誤差値を評価して、関数モデルf_diff_1()の誤差値e1を算出する。例えば、誤差値の評価は、AIC、2乗誤差で評価する。同様な処理を続けて、第2算出部304は、関数モデルf_diff_2()〜f_diff_m()に対して、誤差値e2〜emを算出する。
第2算出部304は、第2関数モデルの特徴値λに対応する誤差値eの組み合わせを、以下のm通り算出する。
(λ1、e1)、(λ2、e2)、…、(λm、em)
導出部305は、係数の値の組み合わせごとの特徴値λと第2関数モデルの誤差値eとに基づいて、誤差値λと特徴値eとの関係式を導出する。図1の例では、導出部305は、(λ1、e1)、(λ2、e2)、…、(λm、em)に基づいて、関係式e=E(λ)を導出する。例えば、導出部305は、最小自乗法で(λ1、e1)、(λ2、e2)、…、(λm、em)を多項式にフィッティングする。
具体的には、導出部305は、最初にE(λ)の多項式の次数を決定する。例えば、次数を3とした場合、E(λ)は下記(7)式となる。
導出部305は、変数行列Φを作成する。例えば、多項式の次数をRとした場合、Φは下記(8)式となる。
導出部305は、多項式の係数を、変数行列Φを使用して以下の(9)式から算出する。
なお、(9)式で添え字のTは転置行列を表し、−1は逆行列を表す。
第3算出部306は、関係式から得られる第2関数モデルの誤差値を最小とする特徴値に基づいて、第2関数モデルの誤差値を最小とする各々の係数の値の組み合わせを算出する。なお、算出された各々の係数の値の組み合わせは、RAM203、ディスク205などの記憶装置に格納される。
第3算出部306は、誤差eを最小にする特徴値λoptを求める。例えば、第3算出部306は、関係式e=E(λ)を微分して、例えば、ニュートン法で、微分したE’(λ)=0となる特徴値λ0を求める。図1の例では、elm=min(e1,e2,…,em)とすると、下記(10)式を満たす場合、特徴値λ0が誤差eを最小にする特徴値λoptになる。
E(λ0)≦elm …(10)
次に、第3算出部306は、特徴値λoptに基づいて、第2関数モデルの誤差値を最小とする各々の係数の値を算出する。図1の例では、第3算出部306は、λ1、…、λmから、λk≦λopt≦λ(k+1)となる最大のλk、最小のλ(k+1)(kは1以上、m以下の整数)を特定する。次に、第3算出部306は、特徴値λkの第2関数モデルf_diff_k()の係数の値の組み合わせ(a1k,a2k,a3k,…,ank)を算出する。また、第3算出部306は、特徴値λ(k+1)の第2関数モデルf_diff_(k+1)()の係数の値の組み合わせ(a1(k+1),a2(k+1),a3(k+1),…,an(k+1))を算出する。
第3算出部306は、これらの係数の値の組み合わせを、λk、λopt、λ(k+1)で補完することにより、各々の係数の値(ad1,ad2,ad3,…,adn)を算出する。例えば、下記(11)式から算出することができる。
adi=aik+(λopt−λk)/(λ(k+1)−λk)*(ai(k+1)−aik) …(11)
ここで、iは、1からnまでの整数である。
なお、第3算出部306は、各々の係数の値を求める際、第2ばらつきパラメータ群から選ばれたすべてのパラメータ群の組み合わせに対応して、第2関数モデルの候補のパラメータ群の各々の係数の値の組み合わせを、複数通り再作成してもよい。第3算出部306は、再作成した各々の係数の値の組み合わせから、上記と同じようにして、各々の係数の値の組み合わせ(ad1,ad2,ad3,…,adn)を算出してもよい。
より具体的には、例えば、パラメータ群の組み合わせが50通りである場合、第2関数モデルの候補のパラメータ群の各々の係数の値の組み合わせを、49通り再作成してもよい。
この場合、第3算出部306は、係数の値の組み合わせを、すべてのパラメータ群の組み合わせから再作成する。多いパラメータ群から作成されるため、再作成した係数の値の組み合わせは、所定の個数を選んだ組み合わせから作成した係数の値の組み合わせよりも、精度の高い第2関数モデルの係数の値の組み合わせとなる。したがって、精度の高い第2関数モデルの係数の値の組み合わせから、各々の係数の値の組み合わせが算出されるため、第3算出部306は、第2関数モデルの精度を向上させることができる。
次に、設計支援装置100が記憶するプレレイアウト回路のばらつきモデルの一例を、図4を用いて説明し、ポストレイアウト回路のサンプリングデータの一例を、図5を用いて説明する。サンプリングデータは、設計対象回路のばらつきパラメータの値と、ばらつきパラメータを用いてシミュレーションして得られる設計対象回路の性能値と、を含むものとする。
図4は、プレレイアウト回路のばらつきモデルの一例を示す説明図である。図4の(A)にて示す、プレレイアウト回路のばらつきモデルは、下記(12)式となる。
Δ性能値=f_pre(Δばらつきパラメータ1,Δばらつきパラメータ2,…,Δばらつきパラメータm) …(12)
プレレイアウト回路のばらつきモデルは、プレレイアウト回路をシミュレーションして得られたサンプリングデータを用いてフィッティングすることにより得られる。プレレイアウト回路は、ポストレイアウト回路に比べてばらつきパラメータの数が少ない。したがって、ポストレイアウト回路に比べると、プレレイアウト回路の方がシミュレーションデータの数を多くすることが容易であり、結果、精度の高いプレレイアウト回路のばらつきモデルを作成することができる。
図4の(B)は、トランジスタM1_preと、トランジスタM2_preが含まれるプレレイアウト回路401について、遅延量に関するプレレイアウト回路401のばらつきモデルを示す。図4の(B)にて示すプレレイアウト回路401のばらつきモデルf_pre()は、下記(13)式となる。
Δdelay_pre=f_pre(ΔM1_pre_vth,ΔM1_pre_L,ΔM2_pre_vth,ΔM2_pre_L,…) …(13)
ただし、Δdelay_preは、プレレイアウト回路401の遅延量の偏差を示す。ΔM1_pre_vthは、トランジスタM1_preの閾値電圧の偏差を示す。ΔM1_pre_Lは、トランジスタM1_preのチャネル長の偏差を示す。ΔM2_pre_vthは、トランジスタM2_preの閾値電圧の偏差を示す。ΔM2_pre_Lは、トランジスタM2_preのチャネル長の偏差を示す。また、f_pre()が線形モデルの場合、(13)式は、下記(14)式のように表すことができる。
Δdelay_pre=a1*ΔM1_pre_vth+a2*ΔM1_pre_L+a3*ΔM2_pre_vth+a4*ΔM2_pre_L+… …(14)
ただし、a1〜a4は、プレレイアウト回路401のシミュレーションデータを用いてフィッティングして得られた係数である。
図5は、ポストレイアウト回路のサンプリングデータの一例を示す説明図である。図5の(A)にて示すポストレイアウト回路のサンプリングデータ群501は、ポストレイアウト回路のばらつきパラメータの偏差と、ポストレイアウト回路の性能値の偏差とを含む。1つのサンプリングデータには、ポストレイアウト回路のばらつきパラメータの値がn個あり、性能値が1つある。
図5の(A)と図5の(B)での説明において登場するばらつきパラメータおよび性能値は、すべてポストレイアウト回路のばらつきパラメータおよび性能値である。そこで、図5の(A)と図5の(B)の説明では、説明の簡略化のため、「ポストレイアウト回路のばらつきパラメータ」を、単に、「ばらつきパラメータ」と呼称し、「ポストレイアウト回路の性能値」を、単に、「性能値」と呼称する。
ポストレイアウト回路のサンプリングデータは、ばらつきパラメータの偏差と性能値の偏差とを1レコードとして記憶している。図5の(A)に示すポストレイアウト回路のサンプリングデータ群501は、レコード501−1〜レコード501−cnt分有する。例えば、レコード501−1には、1つ目の性能値の偏差と、1つ目のばらつきパラメータ1の偏差と、1つ目のばらつきパラメータ2の偏差と、…、1つ目のばらつきパラメータnの偏差とが格納されている。
また、図5の(B)は、ポストレイアウト回路510のサンプリングデータの具体例を示す。図5の(B)で示すポストレイアウト回路510のサンプリングデータ群502が、レコード502−1、レコード502−2、…、レコード502−cnt分あるとする。また、図5の(B)で示すポストレイアウト回路510には、トランジスタM1_postと、トランジスタM2_postと、抵抗器R1_postと、コンデンサC1_postが含まれるとする。ポストレイアウト回路510のばらつきパラメータは、各トランジスタのばらつきパラメータが、各トランジスタの閾値電圧を示すvthと、各トランジスタのチャネル長を示すLを含む。さらに、図5の(B)では、性能値は、遅延量であるとする。
上述した前提において、ポストレイアウト回路510のサンプリングデータ群502は、Δdelay_post、ΔM1_post_vth〜ΔM2_post_L、…、ΔR1_post、ΔC1_post…、というフィールドを有する。Δdelay_postフィールドには、遅延量の偏差が格納される。ΔM1_post_vthフィールドには、トランジスタM1_postの閾値電圧の偏差が格納される。ΔM1_post_Lフィールドには、トランジスタM1_postのチャネル長の偏差が格納される。ΔM2_post_vthフィールドには、トランジスタM2_postの閾値電圧の偏差が格納される。ΔM2_post_Lフィールドには、トランジスタM2_postのチャネル長の偏差が格納される。ΔR1_postフィールドには、抵抗器R1の抵抗値の偏差が格納される。ΔC1_postフィールドには、コンデンサC1の容量の偏差が格納される。
例えば、レコード502−1には、1つ目のサンプリングデータとして、Δd_post_1と、ΔM1_post_vth_1と、ΔM1_post_L_1と、ΔM2_post_vth_1と、ΔM2_post_L_1とが格納されている。さらに、レコード502−1には、ΔR1_post_1と、ΔC1_post_1と、が格納されている。
(Sparseデータ処理)
次に、図6〜図10を用いて、Sparseデータ処理の動作手順について説明する。Sparseデータ処理は、差分モデルのSparsity特性の度合いが増加すると予測される方法を用いて、ポストレイアウト回路のばらつきモデルを作成する処理である。図6〜図10では、プレレイアウト回路401のばらつきモデルと、ポストレイアウト回路510のサンプリングデータとを用いて、Sparseデータ処理の説明を行う。
図6では、Sparseデータ処理に含まれる、プレレイアウト回路のモデルの引数とポストレイアウト回路とのばらつきパラメータの対応付けの例について説明する。図7では、対応付けの結果の一例について説明する。図8と図9では、Sparseデータ処理に含まれる処理である、対応付けの結果を用いて性能の差分データを作成する例について説明する。図10では、Sparseデータ処理に含まれる処理である、性能の差分データを用いて差分モデルを作成する例について説明する。
図6は、プレレイアウト回路のモデルの引数とポストレイアウト回路とのばらつきパラメータの対応付けの一例を示す説明図である。設計支援装置100は、レイアウト抽出ツールを実行することにより、プレレイアウト回路のモデルの各引数の名称と、ポストレイアウト回路とのばらつきパラメータの各データの名称とを用いて対応付ける。
例えば、図6の例では、設計支援装置100は、名称に“M1”と“vth”が共通しているΔM1_pre_vthとΔM1_post_vthとを対応付ける。同様に、設計支援装置100は、名称に“M1”と“L”が共通しているΔM1_pre_LとΔM1_post_Lとを対応付ける。さらに、設計支援装置100は、名称に“M2”と“vth”が共通しているΔM2_pre_vthとΔM2_post_vthとを対応付け、名称に“M2”と“L”が共通しているΔM2_pre_LとΔM2_post_Lとを対応付ける。図7に、対応付けの結果の一例を示す。
図7は、対応付けの結果の一例を示す説明図である。設計支援装置100は、ポストレイアウト回路510のサンプリングデータに対応付けの結果を反映したvar_post_map701として保持する。var_post_map701は、縦がcnt個であり、横がn+1個のデータを有する行列となる。var_post_map701は、レコード701−1〜レコード701−cntを有する。
また、図7では、対応付けの結果を、var_post_map701のセル内にハッチを掛けることにより表現している。具体的に、対応付けられたセルは、ΔM1_post_vth、ΔM1_post_L、ΔM2_post_vth、ΔM2_post_Lの4つのフィールドに属するセルである。
なお、var_post_map701を作成する装置は、設計支援装置100でもよいし、別の装置でもよい。別の装置がvar_post_map701を作成した場合、設計支援装置100は、作成されたvar_post_map701を別の装置から取得して、図8、図9にて説明する差分データを作成する。
図8は、性能の差分データの作成例を示す説明図(その1)である。設計支援装置100は、var_post_map701と、プレレイアウト回路401のばらつきモデルと、ポストレイアウト回路510のサンプリングデータを用いて、性能の差分データを作成する。
はじめに、設計支援装置100は、var_post_map701を参照して、ポストレイアウト回路510のサンプリングデータのうち対応付けられたばらつきパラメータの偏差を、プレレイアウト回路401のばらつきモデルの対応する引数として代入する。代入した結果、設計支援装置100は、プレレイアウト回路401のばらつきモデルを実行して、遅延量の偏差を作成する。
図8の例では、設計支援装置100は、レコード701−1〜レコード701−cntの各値を、プレレイアウト回路401のばらつきモデルの引数として代入し、プレレイアウト回路401のばらつきモデルから得られた遅延量の偏差を算出する。具体的に、設計支援装置100は、レコード701−1のΔM1_post_vth_1をプレレイアウト回路401のばらつきモデルの第1引数として代入し、ΔM1_post_L_1をプレレイアウト回路401のばらつきモデルの第2引数として代入する。同様に、設計支援装置100は、ΔM2_post_vth_1をプレレイアウト回路401のばらつきモデルの第3引数として代入し、ΔM2_post_L_1をプレレイアウト回路401のばらつきモデルの第4引数として代入する。第1引数〜第4引数を代入した結果、設計支援装置100は、レコード701−1の各データをプレレイアウト回路401のばらつきモデルに代入した結果得られた遅延量の偏差Δd_pre_1を算出する。
同様に、設計支援装置100は、レコード701−2の各データ、…、レコード701−cntの各データをプレレイアウト回路401のばらつきモデルに代入した結果得られた遅延量の偏差Δd_pre_2、…、Δd_pre_cntを算出する。後続の処理については、図9を用いて説明する。
図9は、性能の差分データの作成例を示す説明図(その2)である。設計支援装置100は、ポストレイアウト回路510の遅延量の偏差を示すΔdelay_postと、プレレイアウト回路401の遅延量の偏差を示すΔdelay_preとの差分を、差分データΔdとして算出する。
具体的に、設計支援装置100は、Δd_post_1−Δd_pre_1から差分データとしてΔd_1を算出する。同様に、設計支援装置100は、Δd_post_2−Δd_pre_2を算出して、差分データとしてΔd_2を算出し、…、Δd_post_cnt−Δd_pre_cntを算出して、Δd_cntを算出する。次に、図10にて、LARを用いて差分モデルを作成する例について説明する。
図10は、差分モデルの作成例を示す説明図である。図10では、設計支援装置100は、LARに従って、複数の差分モデルを複数通り作成する。初めに、設計支援装置100は、ポストレイアウト回路510のサンプリングデータ群502を、フィッティング用に用いるデータと、評価に用いるデータとに分割する。図10の例では、xを、cntより小さい整数として、設計支援装置100は、Δd_1〜Δd_xと、レコード502−1〜レコード502−xを、フィッティング用に用いるデータに設定し、残余のデータを評価に用いるデータに設定する。
設計支援装置100は、フィッティング用に用いるデータを用いて、複数の差分モデルの候補を作成する。非特許文献1に記載したように、LARは、相関の高いパラメータを順に選択して、関数モデルを複数作成する。
例えば、非特許文献1の(14)式では、f(ΔY)=−0.43*Δy1−1.66*Δy2+0.12*Δy3+0.28*Δy4−1.14*Δy5を得たとする。また、α1=−0.43とし、α2=−1.66とし、α3=−0.12とし、α4=−0.28とし、α5=1.14とする。このとき、LARを実行する装置は、係数の絶対値が大きいα2、α5、α1、α4、α3の順に、差分に影響を与えるパラメータの係数として選択し、関数モデルを複数作成する。
上述したLARを適用して、設計支援装置100は、枠1001内に示すm個の差分モデルの候補を作成する。例えば、設計支援装置100は、ばらつきパラメータがΔM1_post_vth1つであるf_diff_1()、ΔM1_post_vthとΔM2_post_vth2つであるf_diff_2()、…、というようにm個の差分モデルを作成する。次に、設計支援装置100は、m個の差分モデルから、枠1002内に示すm個のパラメータに対応する係数の値の組み合わせを算出する。例えば、設計支援装置100は、f_diff_1()から係数の値の組み合わせ(a1、0、0、0、…、0、0、…)、f_diff_2()から係数の値の組み合わせ(a1、0、a3、0、…、0、0、…)を算出する。同様な処理を続けて、設計支援装置100は、f_diff_m()から係数の値の組み合わせ(a1、a2、a3、a4、…、a5、a6、…)を算出する。
図11は、係数の値の組み合わせごとに、差分モデルの特性値と差分モデルの誤差値の算出例を示す説明図である。設計支援装置100は、差分モデルの係数から差分モデルの特性値を算出する。具体的には、図11では、設計支援装置100は、係数の値の絶対値の和から差分モデルの特性値を算出する。例えば、設計支援装置100は、係数の値の組み合わせ(a1、0、0、0、…、0、0、…)からf_diff_1()の特徴値λ1=|a1|を算出する。また、設計支援装置100は、係数の値の組み合わせ(a1、0、a3、0、…、0、0、…)からf_diff_2()の特徴値λ2=|a1|+|a3|を算出する。
設計支援装置100は、クロスバリデーションを用いて、m個の係数の値の組み合わせごとに、差分モデルのm個の誤差値を算出する。具体的には、図11では、設計支援装置100は、Δd_cntと、Δd_pre_cntと、レコード502−cntを用いて、m個の差分モデルの誤差値を算出する。例えば、設計支援装置100は、f_diff_1()にΔM1_post_vth_cntを代入したf_diff_1(ΔM1_post_vth_cnt)と、Δd_cntと、Δd_pre_cntとから誤差値を算出する。設計支援装置100は、f_diff_2()〜f_diff_m()にも、レコード502−cntの各値を代入し、Δd_cntと、Δd_pre_cntとから誤差値を算出する。
なお、設計支援装置100は、Δd_(x−1)と、Δd_pre_(x−1)と、レコード502−(x−1)からΔd_(cnt−1)と、Δd_pre_(cnt−1)と、レコード502−(cnt−1)を用いて、さらに誤差値を算出することができる。この場合、設計支援装置100は、これらの誤差値を評価して、誤差値を算出する。例えば、誤差値の評価は、AIC、2乗誤差で評価する。
図12は、差分モデルの特徴値λと誤差値eの関係例を示す説明図である。具体的には、図12には、f_diff_1()の特徴値λ1と誤差値e1、f_diff_2()の特徴値λ2と誤差値e2、f_diff_3()の特徴値λ3と誤差値e3が記載されている。設計支援装置100は、特徴値λと誤差値eとに基づいて、差分モデルの特徴値λと誤差値eの関係式を導出する。例えば、設計支援装置100は、最小自乗法で(λ1、e1)、(λ2、e2)、(λ3、e3)を多項式にフィッティングする。図12では、関係式は、(λ1、e1)、(λ2、e2)、(λ3、e3)を結ぶ曲線として描かれる。
図10で作成された差分モデルの候補から、誤差値が最も小さい差分モデルの候補を選んだ場合、誤差値が最も小さいe2の差分モデルf_diff_2()が選ばれる。しかしながら、図12では、e2より小さい誤差値を示す特徴値λoptが存在する。特徴値λoptを有する差分モデルを選択すれば、差分モデルの誤差値はe2より小さくなる。このため、設計支援装置100は、特徴値λoptの両側の特徴値λ1と特徴値λ2の特徴値を有するf_diff_1()とf_diff_2()の係数の値を使用して、誤差値を最小とする係数の値を算出する。
例えば、f_diff_1()の係数の値の組み合わせを(a11,a21,…,an1)、f_diff_2()の係数の値の組み合わせを(a12,a22,…,an2)とする。設計支援装置100は、誤差値を最小とする係数の値(ad1,ad2,ad3,…,adn)を算出する。
なお、設計支援装置100は、算出した係数の値から誤差値を最小とする差分モデルf_diff()を作成することができる。設計支援装置100は、プレレイアウト回路401のばらつきモデルf_pre()と差分モデルf_diff()とに基づいて、ポストレイアウト回路510のばらつきモデルf_post()を作成することもできる。
例えば、設計支援装置100は、f_post()を、下記(15)式を用いて算出する。
f_post()=f_pre()+f_diff() …(15)
プレレイアウト回路401のばらつきモデルf_pre()と差分モデルf_diff()が線形モデルである場合、設計支援装置100は、f_post()を、例えば、下記(16)式を用いて算出する。
f_post()=(a1+ad1)*ΔM1_post_vth+(a2+ad2)*ΔM1_post_L+(a3+ad3)*ΔM2_post_vth+(a4+ad4)*ΔM2_post_L+…+ad5*ΔR1_post+ad6*ΔC1_post+… …(16)
(ポストレイアウト回路作成処理)
次に、図13〜図17を用いてポストレイアウト回路作成処理について説明する。
図13は、ポストレイアウト回路作成処理手順の一例を示すフローチャートである。ポストレイアウト回路作成処理は、ポストレイアウト回路510の回路情報とポストレイアウト回路510のばらつきモデルを作成する処理である。設計支援装置100は、プレレイアウト回路401の回路情報を取得する(ステップS1301)。次に、設計支援装置100は、プレレイアウト回路401に対してレイアウト処理を実行する(ステップS1302)。続けて、設計支援装置100は、Sparseデータ処理を実行する(ステップS1303)。Sparseデータ処理の詳細は、図14にて後述する。
次に、設計支援装置100は、ポストレイアウト回路510の回路情報とポストレイアウト回路510のばらつきモデルを出力する(ステップS1304)。ステップS1304の処理実行後、設計支援装置100は、ポストレイアウト回路作成処理を終了する。ポストレイアウト回路作成処理を実行することにより、設計支援装置100は、ポストレイアウト回路510のばらつきモデルを作成することができる。
図14は、Sparseデータ処理手順の一例を示すフローチャートである。
設計支援装置100は、プレレイアウト回路401のばらつきモデルの引数とポストレイアウト回路510とのばらつきパラメータを対応付ける(ステップS1401)。次に、設計支援装置100は、対応付け結果と、プレレイアウト回路401のばらつきモデルと、ポストレイアウト回路510のばらつきパラメータの値とを用いて、プレレイアウト回路401の性能値を算出する(ステップS1402)。続けて、設計支援装置100は、ポストレイアウト回路510のばらつきパラメータの値を用いて、ポストレイアウト回路510をシミュレーションして得られるポストレイアウト回路510の性能値を取得する(ステップS1403)。なお、ステップS1403の処理は、ステップS1401の処理またはステップS1402の処理と並列に行われてもよい。
次に、設計支援装置100は、算出したプレレイアウト回路401の性能値と、取得したポストレイアウト回路510の性能値との差分を算出する(ステップS1404)。続けて、設計支援装置100は、第1の組み合わせの算出した差分とポストレイアウト回路510のばらつきパラメータの値を用いて、差分モデルのばらつきパラメータの係数を作成する(ステップS1405)。次に、設計支援装置100は、第2の組み合わせの算出した差分とポストレイアウト回路510のばらつきパラメータの値を用いて、差分モデルのばらつきパラメータの係数の値から、最適差分モデルのばらつきパラメータの係数の値を算出する(ステップS1406)。最適差分モデルのばらつきパラメータの係数の値算出処理の詳細は、図15にて後述する。続けて、設計支援装置100は、プレレイアウト回路401のばらつきモデルと、最適差分モデルとに基づいて、ポストレイアウト回路510のばらつきモデルを作成する(ステップS1407)。
ステップS1407の処理実行後、設計支援装置100は、Sparseデータ処理を終了する。Sparseデータ処理を実行することにより、設計支援装置100は、差分モデルのSparsity特性の度合いが増加すると予測される方法を用いて、ポストレイアウト回路のばらつきモデルを作成することができる。
(最適差分モデルのばらつきパラメータの係数の値算出処理)
図15は、最適差分モデルのばらつきパラメータの係数の値算出処理手順の一例を示すフローチャートである。設計支援装置100は、係数の値の組み合わせごとに、差分モデルの特徴値を算出する。設計支援装置100は、ポストレイアウト回路510のばらつきパラメータの値を差分モデルに代入して得られる性能値の差分と、プレレイアウト回路401の性能値と、ポストレイアウト回路510の性能値とに基づく差分モデルの誤差値を算出する(ステップS1501)。設計支援装置100は、係数の値の組み合わせごとの特徴値λと誤差値eとに基づいて、差分モデルの誤差値eと特徴値λとの関係式e=E(λ)を導出する(ステップS1502)。設計支援装置100は、関係式e=E(λ)から得られる差分モデルの誤差値を最小とする特徴値λoptを算出する(ステップS1503)。特徴値λopt算出処理の詳細は、図16にて後述する。設計支援装置100は、特徴値λoptに基づいて、差分モデルの誤差値を最小とするばらつきパラメータの係数の値を算出する(ステップS1504)。ばらつきパラメータの係数の値の算出処理の詳細は、図17にて後述する。
ステップS1504の処理実行後、設計支援装置100は、ばらつきパラメータの係数の値算出処理を終了する。ばらつきパラメータの係数の値算出処理を実行することにより、設計支援装置100は、誤差値eと特徴値λとの関係式から最小の誤差を求めることで、最適差分モデルのばらつきパラメータの係数の値を算出することができる。
図16は、誤差eを最小化する特徴値λopt算出処理手順の一例を示すフローチャートである。設計支援装置100は、関係式e=E(λ)の微分式E'(λ)を算出する(ステップS1601)。設計支援装置100は、ニュートン法で、E’=0のλ0を算出する(ステップS1602)。設計支援装置100は、elmを最小の誤差として、E(λ0)≦elmを満たすか否かを確認する(ステップS1603)。E(λ0)≦elmを満たす場合(ステップS1603:Yes)、設計支援装置100は、λopt=λ0とする(ステップS1604)。E(λ0)≦elmを満たさない場合(ステップS1603:No)、設計支援装置100は、λopt=λlmとする(ステップS1605)。なお、λlmは、誤差値がelmとなる差分モデルの特徴値である。
ステップS1604、ステップS1605の処理実行後、設計支援装置100は、誤差eを最小化する特徴値λopt算出処理を終了する。誤差eを最小化する特徴値λopt算出処理を実行することにより、設計支援装置100は、誤差値を最小とする特徴値λoptを算出することができる。
図17は、最適差分モデルの各々の係数の値の算出処理手順の一例を示すフローチャートである。設計支援装置100は、すべての組み合わせの算出した差分とポストレイアウト回路510のばらつきパラメータの値を用いて、差分モデルを再作成する(ステップS1701)。設計支援装置100は、再作成した差分モデルの特徴値から、λk≦λopt≦λ(k+1)となる最大のλk、最小のλ(k+1)を算出し、特徴値λkの差分モデルの係数の値、特徴値λ(k+1)の差分モデルの係数の値を算出する(ステップS1702)。設計支援装置100は、λk、λ(k+1)、λopt、特徴値λkの差分モデルの係数の値、特徴値λ(k+1)の差分モデルの係数の値から、最適差分モデル係数の値を算出する(ステップS1703)。
ステップS1703の処理実行後、設計支援装置100は、最適差分モデルの各々の係数の値の算出処理を終了する。最適差分モデルの各々の係数の値の算出処理を実行することにより、設計支援装置100は、再作成した差分モデルの係数の値から、最適差分モデル係数の値を算出することができる。
(最小誤差の差分モデルと本実施の形態の最適差分モデルとによる誤差の比較)
図18は、最小誤差の差分モデルと本実施の形態の最適差分モデルとによる誤差例を示す説明図である。例えば、100個の係数aのうち、0以外の係数aが5個であるモデル候補Pについての例を挙げる。最小誤差の差分モデルは、差分モデルの候補から選択された、誤差値が最も小さい差分モデルである。サンプル数とは、ポストレイアウト回路510のばらつきパラメータの値の組み合わせの数である。サンプル数が少ない場合、例えば40以下の場合において、本実施の形態による最適差分モデルは、最小誤差の差分モデルよりも2乗誤差が小さくなる。
以上説明したように、設計支援装置100によれば、レイアウト前後の回路の性能値の差分を表す関数モデルの誤差値と、関数モデルの係数の値に基づく特徴値との関係式から算出した、誤差値を最小とする特徴値から、関数モデルの係数の値を算出する。これにより、設計支援装置100は、サンプリングデータを少なくしても、高精度の関数モデルを作成することができる。
また、設計支援装置100は、レイアウト前の回路の性能値と、レイアウト後の回路の性能値と、レイアウト後の回路内の各々の素子の特性を表すパラメータ群の各々の値との複数通りの組み合わせから、関数モデルの係数の値の組み合わせを作成してもよい。複数の性能値とパラメータ群の各々の値の複数の組み合わせを用いて関数モデルの係数の値の組み合わせを作成することにより、関数モデルの精度を向上させることができる。
また、設計支援装置100は、複数の組み合わせから所定の個数を選んだ組み合わせから関数モデルの各々の係数の値の組み合わせを作成し、選ばれなかった組み合わせから、関数モデルの誤差値を算出してもよい。これにより、設計支援装置100は、関数モデルの作成時に、オーバーフィッティングを抑えることができる。
また、設計支援装置100は、すべての組み合わせで関数モデルの各々の係数の値の組み合わせを再作成して、再作成した各々の係数の値の組み合わせから、関数モデルの係数の値を算出してもよい。精度の高い関数モデルの係数の値の組み合わせから、各々の係数の値の組み合わせが算出されるため、関数モデルの精度を向上させることができる。
なお、本実施の形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、磁気ディスク、光ディスク、フレキシブルディスク、USB(Universal Serial Bus)フラッシュメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本設計支援プログラムは、インターネット等のネットワークを介して配布されてもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータが、
レイアウト前後の設計対象回路の性能値の差分をレイアウト後の設計対象回路内の各々の素子の特性を表すパラメータ群を用いて表す関数モデルについて、前記パラメータ群の各々の係数の値の組み合わせを複数通り取得し、
前記係数の値の組み合わせごとに、前記パラメータ群の各々の値を前記関数モデルに代入して得られる性能値の差分と、レイアウト前の設計対象回路の第1性能値と、前記レイアウト後の設計対象回路の第2性能値とに基づいて、前記関数モデルの誤差値を算出し、
前記係数の値の組み合わせごとの誤差値に基づいて、前記関数モデルの誤差値と、前記係数の値の組み合わせに基づく前記関数モデルの特徴値との関係式を導出し、
前記関係式から得られる前記関数モデルの誤差値を最小とする特徴値に基づいて、前記関数モデルの誤差値を最小とする前記各々の係数の値を算出する、
処理を実行することを特徴とする設計支援方法。
(付記2)前記コンピュータが、
前記係数の値の組み合わせに基づく前記関数モデルの前記特徴値のうちの、前記最小とする特徴値以下かつ最大の特徴値と、前記最小とする特徴値以上かつ最小の特徴値とを特定し、
前記係数の値の組み合わせのうちの、前記最大の特徴値に対応する第1の組み合わせと前記最小の特徴値に対応する第2の組み合わせとを特定する処理を実行し、
前記各々の係数の値を算出する処理は、
前記最小とする特徴値と、前記最大の特徴値と、前記最小の特徴値と、前記第1の組み合わせと、前記第2の組み合わせとに基づいて、前記各々の係数の値を算出することを特徴とする付記1に記載の設計支援方法。
(付記3)前記パラメータ群の各々の係数の値の組み合わせを複数通り取得する処理は、
前記第1性能値と、前記第2性能値と、前記パラメータ群の各々の値とに基づいて、前記パラメータ群の各々の係数の値の組み合わせを複数通り作成することを特徴とする付記1または2に記載の設計支援方法。
(付記4)前記パラメータ群の各々の係数の値の組み合わせを複数通り取得する処理は、
レイアウト前の設計対象回路の第1性能値と、レイアウト後の設計対象回路の第2性能値と、前記レイアウト後の設計対象回路内の各々の素子の特性を表すパラメータ群の各々の値と、の複数通りの組み合わせから、所定の個数を選んだ組み合わせに基づいて、前記係数の値の組み合わせを複数通り作成し、
前記誤差値を算出する処理は、
前記複数通りの組み合わせの中で前記所定の個数に選ばれなかった組み合わせごとに、前記パラメータ群の各々の値を前記関数モデルに代入して得られる性能値の差分と、前記第1性能値と、前記第2性能値とに基づいて、前記関数モデルの誤差値を算出することを特徴とする付記1または2に記載の設計支援方法。
(付記5)前記コンピュータが、
前記第1性能値と、前記第2性能値と、前記各々の値と、の複数通りの組み合わせとに基づいて、前記各々の係数の値の第3の組み合わせを複数通り作成する処理を実行し、
前記第1の組み合わせと前記第2の組み合わせとを特定する処理は、
前記係数の値の第3の組み合わせのうちの、前記最大の特徴値に対応する第1の組み合わせと前記最小の特徴値に対応する第2の組み合わせとを特定することを特徴とする付記4に記載の設計支援方法。
(付記6)前記関数モデルの特徴値は、前記関数モデルの前記パラメータ群の各々の係数値の絶対値の和であることを特徴とする付記1〜5のいずれか一つに記載の設計支援方法。
(付記7)レイアウト前後の設計対象回路の性能値の差分をレイアウト後の設計対象回路内の各々の素子の特性を表すパラメータ群を用いて表す関数モデルについて、前記パラメータ群の各々の係数の値の組み合わせを複数通り取得し、
前記係数の値の組み合わせごとに、前記パラメータ群の各々の値を前記関数モデルに代入して得られる性能値の差分と、レイアウト前の設計対象回路の第1性能値と、前記レイアウト後の設計対象回路の第2性能値とに基づいて、前記関数モデルの誤差値を算出し、
前記係数の値の組み合わせごとの誤差値に基づいて、前記関数モデルの誤差値と、前記係数の値の組み合わせに基づく前記関数モデルの特徴値との関係式を導出し、
前記関係式から得られる前記関数モデルの誤差値を最小とする特徴値に基づいて、前記関数モデルの誤差値を最小とする前記各々の係数の値を算出する制御部
を有することを特徴とする設計支援装置。
(付記8)コンピュータに、
レイアウト前後の設計対象回路の性能値の差分をレイアウト後の設計対象回路内の各々の素子の特性を表すパラメータ群を用いて表す関数モデルについて、前記パラメータ群の各々の係数の値の組み合わせを複数通り取得し、
前記係数の値の組み合わせごとに、前記パラメータ群の各々の値を前記関数モデルに代入して得られる性能値の差分と、レイアウト前の設計対象回路の第1性能値と、前記レイアウト後の設計対象回路の第2性能値とに基づいて、前記関数モデルの誤差値を算出し、
前記係数の値の組み合わせごとの誤差値に基づいて、前記関数モデルの誤差値と、前記係数の値の組み合わせに基づく前記関数モデルの特徴値との関係式を導出し、
前記関係式から得られる前記関数モデルの誤差値を最小とする特徴値に基づいて、前記関数モデルの誤差値を最小とする前記各々の係数の値を算出する、
処理を実行させることを特徴とする設計支援プログラム。
(付記9)レイアウト前後の設計対象回路の性能値の差分をレイアウト後の設計対象回路内の各々の素子の特性を表すパラメータ群を用いて表す関数モデルについて、前記パラメータ群の各々の係数の値の組み合わせを複数通り取得し、
前記係数の値の組み合わせごとに、前記パラメータ群の各々の値を前記関数モデルに代入して得られる性能値の差分と、レイアウト前の設計対象回路の第1性能値と、前記レイアウト後の設計対象回路の第2性能値とに基づいて、前記関数モデルの誤差値を算出し、
前記係数の値の組み合わせごとの誤差値に基づいて、前記関数モデルの誤差値と、前記係数の値の組み合わせに基づく前記関数モデルの特徴値との関係式を導出し、
前記関係式から得られる前記関数モデルの誤差値を最小とする特徴値に基づいて、前記関数モデルの誤差値を最小とする前記各々の係数の値を算出する、
処理をコンピュータに実行させる設計支援プログラムを記憶したことを特徴とする記録媒体。