HSPICE はゴールデンな回路シミュレータですが,みんなが使うのでライセンスがなくなりやすい.パンがなければお菓子を食べれば(ry と言われるけれど,じゃあどんなお菓子(選択肢)があるのか気になります. 代替になりうるシミュレータについて調べてみた.
・FineSim SPICE
旧Magma の SPICE / FastSPICE シミュレータ.HSPICE 向けの記述がほぼそのまま動きます.今は Synopsys が売り出しているから安心?
finesim spice.sp -mode=spicemd -np [numCPU] -auto -spice
・Eldo
Mentor Graphics の SPICE シミュレータ.HSPICE 互換モードがある(-compat).欧州では結構メジャーらしい.
eldo -compat spice.sp
こちらの環境ではプロセスコーナーオプションの指定に難があり,ライブラリが多段になっていてなかでプロセスコーナーオプションの名前が変わる場合(例えば,最初の.libで"TT"オプションを指定し,呼び出した次の.libでは"tt_core"オプションになる)に追随できないようで,最終的に「そんなトランジスタモデル無いよ」と言われてエラーが出る.
トランジスタモデルが暗号化されているからかもしれない.
そもそもこの PDK の設計がクソという意見もある.
・Spectre
Cadence の SPICE シミュレータ.HSPICE 互換モードがあるのか調べてません.
・SmartSpice
Silvaco の SPICE シミュレータ.某所ではバイナリがなくなってしまったので未調査.ライセンスはまだ発行されているっぽい??
LTspice や Ngspice が商用 PDK で動くかどうかは知りません.計算結果もあまり変わらない Finesim でいいんじゃないかな.
2019年8月19日月曜日
2019年3月4日月曜日
FineSimで波形ファイルのフォーマットを指定する
FineSimで波形ファイルのフォーマットを指定するには以下の設定を加える.
.option finesim_output=[fsdb|wdf|psf|tr0|utf|psfascii|none|out]
デフォルトではfsdbになる.noneを設定すると,.probeや.option postに関係する設定を全て無視するそうだ.
.option finesim_output=[fsdb|wdf|psf|tr0|utf|psfascii|none|out]
デフォルトではfsdbになる.noneを設定すると,.probeや.option postに関係する設定を全て無視するそうだ.
2019年3月3日日曜日
FineSimでfsdbのバージョンを指定する
FineSim M-2017.03で波形ファイルを出力するとデフォルトでfsdbのversion 5.5になる.Custom Waveview の2016.06-SP2では,fsdbのバージョンは5.4までしかサポートしておらず波形を読めない.
FineSimの出力するfsdbのバージョンを指定するには以下のオプションを使う.
.option finesim_fsdb_version=[5.4|5.5]
FineSim M-2017.03ではfsdbの5.3以下のバージョンはサポートされないらしい.悲しい.
FineSimの出力するfsdbのバージョンを指定するには以下のオプションを使う.
.option finesim_fsdb_version=[5.4|5.5]
FineSim M-2017.03ではfsdbの5.3以下のバージョンはサポートされないらしい.悲しい.
2018年12月18日火曜日
FineSimを使ってみる
TAU Workshopで「HSPICE遅すぎるんですけど(><)」って文句を言いまくっていたら,「FineSimいいよ,マルチコア対応だし速いし」と元MagmaからSynopsysに移った人がお勧めしていたので使ってみた.試したのは FineSim M-2017.03-SP2-5,普段使いは HSPICE J-2014.09-SP1-2 .FineSimをSPICE互換モードで利用するには以下のようにする.マルチプロセッサで実行するために-np [numCPU] を付けている(HSPICEの-mtと同じようだ).-autoオプションを付けると,独立したsweepを別プロセッサで実行する(HSPICEの-mpと同じようだ).
% finesim spice.sp -mode=spicemd -np [numCPU] -auto -spice
あるプロセスのDFFのD2Q遅延とセットアップ時間を評価してみた.D2Cを変えながらD2Qの最小値を求める.
D2Q遅延:1.4% の差(FineSimの方が速い)
Setup:同じ(刻みは0.1ps)
ほとんど同等の結果だ.
速度は以下のような感じ.201点スイープです@intel Core i7 4790K 8-thread.
HSPICE (-mp -merge) 37秒
FineSim (-np) 22秒
FineSim (-np -auto) 13秒
めっちゃ速い.FineSimは標準出力へのログの吐き出しが無ければもっと速くなりそう.
気になったところ
・HSPICEの構文解析でOKな記述がFineSimではエラーになったりする.
・.measureに失敗したときに,HSPICEは"failed"と表示するが,FineSimは"error"と表示する.
・FineSim-EmbeddedというのがSiliconSmartに入っていてライセンス無く使えるらしい.
・FineSimは2つの解析エンジンを持っているので,どちらのエンジンで実行すべきか指定する(指定しないと自動選択されるらしい).
(1) FineSim Pro,回路分割を行いマルチCPUで解く.いわゆるFastSPICEでほどよい精度と速度のトレードオフをもつ.オプションは-mode=promd
(2) FineSim SPICE,回路分割を行わなず,単一のマトリックスをマルチCPUで解く.いわゆる普通のSPICEでSPICE精度を保ちマルチコア対応で速い.オプションは-mode=spicemd
% finesim spice.sp -mode=spicemd -np [numCPU] -auto -spice
あるプロセスのDFFのD2Q遅延とセットアップ時間を評価してみた.D2Cを変えながらD2Qの最小値を求める.
D2Q遅延:1.4% の差(FineSimの方が速い)
Setup:同じ(刻みは0.1ps)
ほとんど同等の結果だ.
速度は以下のような感じ.201点スイープです@intel Core i7 4790K 8-thread.
HSPICE (-mp -merge) 37秒
FineSim (-np) 22秒
FineSim (-np -auto) 13秒
めっちゃ速い.FineSimは標準出力へのログの吐き出しが無ければもっと速くなりそう.
気になったところ
・HSPICEの構文解析でOKな記述がFineSimではエラーになったりする.
・.measureに失敗したときに,HSPICEは"failed"と表示するが,FineSimは"error"と表示する.
・FineSim-EmbeddedというのがSiliconSmartに入っていてライセンス無く使えるらしい.
・FineSimは2つの解析エンジンを持っているので,どちらのエンジンで実行すべきか指定する(指定しないと自動選択されるらしい).
(1) FineSim Pro,回路分割を行いマルチCPUで解く.いわゆるFastSPICEでほどよい精度と速度のトレードオフをもつ.オプションは-mode=promd
(2) FineSim SPICE,回路分割を行わなず,単一のマトリックスをマルチCPUで解く.いわゆる普通のSPICEでSPICE精度を保ちマルチコア対応で速い.オプションは-mode=spicemd
登録:
投稿 (Atom)