【文献】
GOEL, A. et al.,Current source based standard cell model for accurate signal integrity and timing analysis,DATE '08 Proceedings of the conference on Design, automation and test in Europe [online],ACM,2008年 3月,pp. 574-579,[検索日 2018.10.23],インターネット,URL,https://dl.acm.org/citation.cfm?id=1403515
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態を図面に基づいて説明する。先ず、セル遅延について
図1で説明する。
図1は、セル遅延を説明するための図である。
図1において、任意の入力波形1aをセル2へ入力することで出力される実際応答1cを得る。セル2は、予めインバータ等のスタンダードセルである。スタンダードセル2から出力された実際応答1cと、理想応答1bとを比較することにより、このスタンダードセル2の遅延3を得る。
【0017】
1つのLSIに配置されたスタンダードセル2の全てに対して遅延3を取得することで、LSI全体の遅延を見積もる。以下、スタンダードセル2の遅延を見積もることをセル遅延見積と言う。
【0018】
セル遅延見積の手法には、主に、
(1)線形遅延モデル
(2)SPICE(Simulation Program with Integrated Circuit Emphasis)シミュレーションモデル
(3)電流源モデル
等が存在する。
【0019】
上記(1)の線形遅延モデルでは、1ゲート当たりの処理速度は凡そマイクロ秒(μs)単位(μs/gate)であり、比較的高速にセル遅延見積を行える。しかしながら、トランジスタの精密な動作などが考慮されておらず、高速に見積れるものの誤差が大きい。
【0020】
上記(2)のSPICEシミュレーションモデルでは、トランジスタの動作を細かく解析するため、見積り精度が高い。しかしながら、数百のパラメータを要するため、計算処理に時間を要する。1ゲート当たりの処理速度は凡そ秒単位(s/gate)であり、上記(1)に比べて、100万倍程の処理時間を要する。数10万ゲートを実装している近年のチップ全体に対して遅延見積を行う場合は、上記(2)は適していないと考えられている。
【0021】
上記(3)の電流源モデルでは、1ゲート当たりの処理速度は凡そマイクロ秒(μs)単位(ms/gate)であり、上記(1)よりは処理時間が掛るものの、上記(2)の及び1/1000程の処理時間で遅延見積を行える。上記(3)の電流源モデルは、非特許文献1及び2を参照すると、
図1のように示される。
【0022】
図2は、電流源モデルの例を示す図である。
図1に示す電流源モデル6aは、容量Cm(ミラー容量)、電流Idc、及び容量Coを素子として含む。容量CmはVin側の容量を示し、電流Idcは直流電流を示し、そして容量CoはVout側の容量を示す。電流源モデル6aのパラメータとなる。電流源モデル6aは、
【0024】
電流源モデル6aを用いた遅延見積では、1セル内の、ゲート数が少ない簡単な構成であれば精度がよいが、ゲート数が多くなりゲート構成が複雑になると精度が悪化する。一例として、2並列インバーターのゲート構成の場合、遅延見積の誤差は1.3%であったのに対して、26並列インバーターのゲート構成の場合、遅延見積の誤差は8.6%であった。
【0025】
本実施例では、複雑なゲート構成に対して、
図2及び数1で表される電流源モデル6aのパラメータ値を補正することで、精度良く遅延を見積もる半導体集積回路の遅延見積プログラム、方法、及び回路設計装置を提供する。
【0026】
デジタルセルは、以下の点において動作範囲が限られている。
(a)0<−>1遷移である
例えば、0VからVDD+αへの遷移、VDD+αから0Vへの遷移である。αは、オーバーシュート応答である。
(b)負荷も任意ではない
基本的にセルライブラリにあるセルの入力が前段の出力である。つまり、セル間の接続は制限されている。
(c)データ遷移時間が限られている
ある設計において、0VからVDDまでの遷移時間は0.5ps〜60psの範囲である。
【0027】
発明者は、上述した動作範囲に関する制限(a)〜(c)より、電流源モデル6aのパラメータCmの値を補正することで、精度良く遅延を見積もれることに着目した。以下、精度良く遅延見積を行う回路設計について説明する。
【0028】
図3は、回路設計装置のハードウェア構成を示す図である。
図3において、回路設計装置100は、コンピュータによって制御される情報処理装置であって、CPU(Central Processing Unit)11と、主記憶装置12と、補助記憶装置13と、入力装置14と、表示装置15と、通信I/F(インターフェース)17と、ドライブ装置18とを有し、バスBに接続される。
【0029】
CPU11は、主記憶装置12に格納されたプログラムに従って回路設計装置100を制御する。主記憶装置12には、RAM(Random Access Memory)、ROM(Read Only Memory)等が用いられ、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を記憶又は一時保存する。
【0030】
補助記憶装置13には、HDD(Hard Disk Drive)等が用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置13に格納されているプログラムの一部が主記憶装置12にロードされ、CPU11に実行されることによって、各種処理が実現される。主記憶装置12及び補助記憶装置13が、記憶部130に相当する。
【0031】
入力装置14は、マウス、キーボード等を有し、ユーザが回路設計装置100による処理に必要な各種情報を入力するために用いられる。表示装置15は、CPU11の制御のもとに必要な各種情報を表示する。入力装置14と表示装置15とは、一体化したタッチパネル等によるユーザインタフェースであってもよい。通信I/F17は、有線又は無線などのネットワークを通じて通信を行う。通信I/F17による通信は無線又は有線に限定されるものではない。
【0032】
回路設計装置100によって行われる処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によって回路設計装置100に提供される。
【0033】
ドライブ装置18は、ドライブ装置18にセットされた記憶媒体19(例えば、CD−ROM等)と回路設計装置100とのインターフェースを行う。
【0034】
また、記憶媒体19に、後述される本実施の形態に係る種々の処理を実現するプログラムを格納し、この記憶媒体19に格納されたプログラムは、ドライブ装置18を介して回路設計装置100にインストールされる。インストールされたプログラムは、回路設計装置100により実行可能となる。
【0035】
尚、プログラムを格納する記憶媒体19はCD−ROMに限定されず、コンピュータが読み取り可能な、構造(structure)を有する1つ以上の非一時的(non-transitory)な、有形(tangible)な媒体であればよい。コンピュータ読取可能な記憶媒体として、CD−ROMの他に、DVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【0036】
図4は、回路設計装置の機能構成例を示す図である。
図4において、回路設計装置100は、主に、シミュレーション部40と、モデル生成部43と、遅延見積部47とを有する。記憶部130には、PDK(Process Design Kit)51、セルライブラリ52、パラメータデータ53、学習データ54、電流源モデル6a、補正モデル6b、セル入力電圧値56、見積遅延値57等が記憶される。
【0037】
シミュレーション部40は、PDK51及びセルライブラリ52を用いて、モデル生成に係るデータを生成する処理部であり、電流源モデル同定データ生成部41と、学習データ生成部42とを有する。
【0038】
電流源モデル同定データ生成部41は、電流源モデル6aの生成に係るパラメータデータ53を生成する。パラメータデータ53は、容量Cm、及び容量Coの値であり、非特許文献1、2に基づき同定される。
【0039】
学習データ生成部42は、電流源モデル6aのパラメータCmを補正する補正モデル6bの生成に係る学習データ54を生成する。
【0040】
例えば、電流Idcは、セル2の電圧Vin及び電圧Voutに一定電流量のDC(Direct Current)電流源を接続したモデルによって得られる。容量Cmは、セル2の電圧VinにDC電流源を接続し、電圧Voutに所定時間内で電圧最小値から電圧最大値まで上昇するランプ電圧源を接続したモデルによって得られる。容量Coは、容量Cm及び容量Coの合算値から求めた容量Cmを減算することにより得られる。容量Cm及び容量Coは、セル2の電圧Vinに所定時間内で電圧最小値から電圧最大値まで上昇するランプ電圧源を接続し、電圧VoutにDC電流源を接続したモデルによって得られる。
【0041】
モデル生成部43は、電流源モデル6a及び補正モデル6bを作成し、記憶部130に保存する処理部であり、電流源モデル生成部44と、補正モデル生成部45と、モデル保存部46とを有する。
【0042】
電流源モデル生成部44は、電流源モデル同定データ生成部41によって得られたパラメータデータ53を用いて電流源モデル6aを生成する。補正モデル生成部45は、電流源モデル6aを用いて得られる容量Cmと、学習データ53から得られる容量Cmとの差に基づいて補正モデル6bを生成する。学習データ53の代わりに実機で得られた実際のデータを用いてもよい。
【0043】
電流源モデル6aのパラメータは、
・Idc=f_idc(vin, vout):従来手法で同定されたIdc値
・Co=f_co(vin, vout):従来手法で同定されたCo値
・Cm_past=f_cmpast(vin, vout):従来手法で同定されたCm値
・f_Δcm(vin, vout, vin'):本実施例の手法で同定されたCmの補正値、vin':入力電圧vinの微分値
・Cm=Cm_past+ΔCm:補正されたCm値
である。
【0045】
【数2】
と表される微分方程式を数値積分で解くことにより得られる。数値積分は、解の精度、解くスピード、安定性などによって、種々の既存アルゴリズムが知られている。一例として、Forward Eulerの場合、出力計算は、
【0047】
モデル保存部46は、電流源モデル生成部44によって生成された電流源モデル6aと、補正モデル生成部45で得られた補正モデル6bとを記憶部130に保存する。
【0048】
遅延見積部47は、電流源モデル6aと補正モデル6bとを用いて、セル遅延を見積もる処理部であり、モデル読出部48と、遅延見積計算部49とを有する。
【0049】
モデル読出部48は、記憶部130から電流源モデル6aと、補正モデル6bとを読み出す。遅延見積計算部49は、配線遅延の算出に加えて、モデル読出部48によって読み出された電流源モデル6aと、補正モデル6bとを用いて、予め記憶部130に用意されたセル入力電圧値56を電流源モデル6aと、補正モデル6bとに与えることにより、セル遅延を算出する。算出したセル遅延の値を含む見積遅延値57が記憶部130に記憶される。
【0050】
PDK51は、回路設計において標準的な設計データセットである。セルライブラリ52は、スタンダードセル2を含む複数の機能ブロックの各々の論理機能、電気的特性、レイアウトに係るデータを有する。
【0051】
パラメータデータ53は、電流源モデル同定データ生成部41によって得られた電流源モデル6aのパラメータ値を示す。学習データ54は、SPICE(Simulation Program with Integrated Circuit Emphasis)により回路動作をシミュレーションすることにより得られたデータであり、時間毎に、電圧Vinと電圧Voutとを示す。
【0052】
電流源モデル6aは、電流源モデル生成部44によって生成されたセル2のモデルである。電流源モデル6bは、補正モデル生成部45によって生成された電流源モデル6aの容量Cmを補正するモデルである。
【0053】
セル入力電圧値56は、遅延見積計算部49がセル遅延を算出するために、セル2に入力する電圧値である。見積遅延値57は、遅延見積計算部49によって得られたセル遅延値を含むLSIの遅延の予測値を示す。
【0054】
図5は、学習データのデータ例を示す図である。
図5において、学習データ54は、時系列にシミュレーションの時間毎に電圧Vin、電圧Vout、電流源の素子毎の電圧等を記録したテーブルである。電流源の素子毎の電圧には、Cmの電圧値を少なくとも含むものとする。
【0055】
図5の例において、時刻t0のときの、入力電圧は「Vin_t0」であり、出力電圧は「Vout_t0」であり、Cmの電圧値は「Cm_t0」であることを示している。次の時刻t1では、入力電圧は「Vin_t1」であり、出力電圧は「Vout_t1」であり、Cmの電圧値は「Cm_t1」であることを示している。そして、時刻tnでは、入力電圧は「Vin_tn」であり、出力電圧は「Vout_tn」であり、Cmの電圧値は「Cm_tn」であることを示している。
【0056】
次に、電流源モデル6a及び補正モデル6bが生成されるまでの処理の流れについて説明する。
図6は、モデルが生成されるまでの処理の流れを説明するための図である。
図6において、シミュレーション部40では、電流源モデル同定データ生成部41と、学習データ生成部42とが、それぞれの処理を行う。
【0057】
電流源モデル同定データ生成部41は、PDK51とセルライブラリ52とを参照して、電流源モデル6aに関して同定したパラメータを生成する。パラメータデータ53が、記憶部130に記憶される。
【0058】
モデル生成部43では、パラメータデータ53を用いて、電流源モデル生成部44が電流源モデル6aを生成する。電流源モデル6aは、補正モデル生成部45によって利用可能となる。
【0059】
一方、シミュレーション部40において、学習データ生成部42は、PDK51とセルライブラリ52とを用いたSPICEによりシミュレーションを行い、その結果を示す学習データ54を出力する。
【0060】
図7は、遅延見積部における処理の流れを説明するための図である。
図7において、遅延見積部47では
、モデル読出部48が、記憶部130から電流源モデル6a及び補正モデル6bを読み出して、遅延見積計算部49に入力する。
【0061】
遅延見積計算部49は、時刻毎のセル入力電圧値56を与えて、補正モデル6bで時刻毎に容量Cmを補正して電流源モデル6aに適応する。電流源モデル6aは、与えられたセル入力電圧値56に対して出力電圧を出力する。遅延見積計算部49は、セル遅延等を算出して見積遅延値57を出力する。
【0062】
モデル生成部43によるモデル生成処理について説明する。
図8は、モデル生成処理を説明するためのフローチャート図である。
図8において、モデル生成部43の電流源モデル生成部44は、電流源モデル6aを生成する(ステップS1)。
【0063】
次に、補正モデル生成部45は、電流源モデル生成部44によって生成された電流源モデル6aの容量Cmと、学習データ54から得られる容量Cmとを比較してパラメータである容量Cmの誤差を求める(ステップS2)。補正モデル生成部45は、学習データ54の時間毎の入力電圧及び出力電圧と、入力電圧の微分値とを用いて、容量Cmの誤差を求める。補正モデル生成部45は、時間毎の容量Cmの誤差から補正モデル6bを生成する(ステップS3)。
【0064】
補正モデル6bが生成されると、モデル保存部46は、電流源モデル6aと補正モデル6bとを記憶部130に記憶する(ステップS4)。その後、モデル生成部43によるモデル生成処理は終了する。
【0065】
補正モデル生成部54による補正モデル生成処理について説明する。
図9は、パラメータの誤差例を示す図である。
図9では、学習データ54と電流源モデル6aとにおける容量Cmの電圧値の例を示している。
【0066】
ある時刻tpを参照すると、学習データ54のCm_学習8pに対して、電流源モデル6aでは、Cm_モデル9pを示している。Cm_学習8pとCm_モデル9pとは、差ΔCmを示し、Cm_モデル9pがより高い電圧値を示している。
【0067】
補正モデル生成部45は、時刻毎の差ΔCmを補正することで、Cm_モデル9pの値をCm_学習8pの値へと近似する補正モデルを生成すればよい。
【0068】
Cm_学習8pとCm_モデル9pとの関係は、
【0069】
【数4】
で表される。この数4では、時刻t0から時刻t1に経過した場合で示している。この場合において、
Δt=t1−t0
で示され、Δ5は、学習データ54におけるタイムステップ値に相当する。また、
Δv
o=vout_t1−vout_t0
Δv
in=vin_t1−vin_t0
で示される。更に、
I
dc_tは、既知の技術で同定された時刻t1における電流源の電流値であり、
Cloadは、与えられた負荷容量を示し、
Cmpo_モデルは、既知の技術で同定された容量Cmと容量Coの合計値(Cm+Co)を示す。上記は、任意の時刻t
iから時刻t
i+1においても同様である。
【0071】
【数5】
で表され、関数fに近似され、入力電圧v
in、出力電圧v
in、及び入力電圧の微分値を与えることにより得られる。関数fは、補正モデル6bに相当する。補正モデル6bは、容量Cmの補正に限定されない。ここでは一例として容量Cmの場合で説明したにすぎない。
【0072】
図10は、補正値の例を示す図である。
図10において、Vin及びVoutの値に対する、Cm_学習8pとCm_モデル9pとの実際の差ΔCmと、数5の補正モデル6bで計算されたCm補正値を示している。
【0073】
図10のグラフの作成では、機械学習のCART(Classification And Regression Tree)アルゴリズムを用いている。補正モデルの特徴v
in、v
in、Cm補正値の値の組み合せによるテーブル構造の場合では検索時間が補正特徴の指数関数で増加する。例えば、時間複雑度は、O(N^M)の場合には、O(M・log2(N))の時間を要する。ここで、Mは補正モデルの特徴の数(v
in、v
in、Cm補正値)、Nはサンプルデータ数である。
【0074】
一方、補正モデルの特徴をトリー構造とすることで、検索時間を補正特徴と線形にすることができる。
図10のグラフは、このような手法により得られた結果を示している。
図10から分かるように、Cm補正値は、実際の差ΔCmと非常に類似している。
【0075】
図11は、入力電圧に対する出力電圧の比較結果を示す図である。
図11において、遅延見積計算部49が電流源モデル6a及び補正モデル6bを用いて得られた補正有りvout7eを、パラメータの補正をしなかった場合の補正無しvout7cと、SPICE等による学習時の学習vout7dとで比較した結果を示している。
【0076】
学習vout7dは、学習vin7bに対して得られた結果であり、補正有りvout7e及び補正無しvout7cは、学習vin7bと略同一の入力電圧vin7aに対して得られた電圧値である。
【0077】
パラメータを補正しなかった場合では、補正無しvout7cは学習vout7dとあまり一致していないことが分かる。一方、本実施例における補正有りvout7eは、学習vout7dと略一致しているといえる。
【0078】
図12は、誤差の比較例を示す図である。
図12では、見積誤差を正規分布と仮定して最尤化された誤差分布を示している。縦軸に確立密度、横軸に遅延相対誤差を示している。遅延相対誤差が0の場合に誤差が無かったことを示し、0から離れる程誤差が大きいことを示す。
【0079】
この例では、発明者は、20nmライブラリの26並列インバータを用い、Raise/Fallを10−30psとし、Cloadを0−20fとして比較を行った。
【0080】
非特許文献1、2に基づく従来技術12bでは、μ=0.044で誤差のピークとなり、分布の幅はσ=0.023であった。
【0081】
一方、本実施例12aでは、μ=0.0055で誤差のピークとなり、分布の幅はσ=0.014であった。本実施例12aと、従来技術12bの遅延相対誤差の結果は、本実施例12aにおいて顕著に優位であることが分かる。
【0082】
上述したように、本実施例では、電流源モデル6aでセル遅延を見積もる際にパラメータを補正する補正モデル6bを用いることで、セル遅延の見積精度を改善することができる。
【0083】
本実施例では、補正モデル6aと容量Cmを補正するモデルとしたが、電流源モデル6aの容量Cm以外の要素の電圧を入力電圧に対して夫々補正する計算式を含むようにしてもよい。
【0084】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、主々の変形や変更が可能である。
【0085】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
時間毎の入力電圧と出力電圧とを記憶した学習データを用いて、セルの電流源モデルに入力電圧を与えることにより得られた出力電圧と学習データの出力電圧に近似されるように、該電流源モデルの1以上のパラメータの値を補正する補正モデルを生成し、
時間毎に入力される入力電圧に対して、前記補正モデルによって補正されたパラメータ値を前記電流源モデルに適用することで、セルの遅延を算出する
処理をコンピュータが行う半導体集積回路の遅延見積方法。
(付記2)
前記コンピュータは、
少なくともミラー容量の値を補正する前記補正モデルを生成する
ことを特徴とする付記1記載の半導体集積回路の遅延見積方法。
(付記3)
前記学習データは、更に、時間毎のミラー容量の電圧値を記録し、
前記コンピュータは、
前記電流源モデルのミラー容量の電圧値と、前記学習データのミラー容量の電圧値との差を算出する前記補正モデルを生成する
ことを特徴とする付記2記載の半導体集積回路の遅延見積方法。
(付記4)
前記コンピュータは、
プロセスデザインキットとセルライブラリとを用いて、前記電流源モデルのパラメータを同定し、また、半導体集積回路のセル毎の動作をシミュレーションする
処理を行うことを特徴とする付記1乃至3のいずれか一項記載の半導体集積回路の遅延見積方法。
(付記5)
時間毎の入力電圧と出力電圧とを記憶した学習データを用いて、セルの電流源モデルに入力電圧を与えることにより得られた出力電圧と学習データの出力電圧に近似されるように、該電流源モデルの1以上のパラメータの値を補正する補正モデルを生成し、
時間毎に入力される入力電圧に対して、前記補正モデルによって補正されたパラメータ値を前記電流源モデルに適用することで、セルの遅延を算出する
処理をコンピュータに実行させる半導体集積回路の遅延見積プログラム。
(付記6)
時間毎の入力電圧と出力電圧とを記憶した学習データを用いて、セルの電流源モデルに入力電圧を与えることにより得られた出力電圧と学習データの出力電圧に近似されるように、該電流源モデルの1以上のパラメータの値を補正する補正モデルを生成する補正モデル生成部、
時間毎に入力される入力電圧に対して、前記補正モデルによって補正されたパラメータ値を前記電流源モデルに適用することで、セルの遅延を算出する遅延算出部と
を有することを特徴とする回路設計装置。