SiliconSmart 2016では,シミュレータとしてHSPICE_embeddedを選択する事ができ,これを使うとSiliconSmartのライセンスだけでHSPICEを用いてキャラクタライズをする事ができる.
(ただしHSPICEは2015.06より新しくないといけない)
configure.tclのシミュレータ選択に以下のように書けばよい.
set simulator hspice_embedded
set simulator_cmd { full-path-to-hspice < input_deck > -o < listing_file >}
これでHSPICEのライセンスをモリモリ消費せずにキャラクタライズを回せる.
2018年12月20日木曜日
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
2018年12月17日月曜日
SiliconSmart Aceで出力スリューの大きいセルをキャラクタライズする
SiliconSmart Aceで特に出力がRail-to-Railにスイングしにくいセルをキャラクタライズするには以下の設定を追加する.
・configure.tclに対する追加
set total_slew_multiplier [val]
内部パラメータであるtotal_slewの定数倍を指定する.total_slewは遅延やエネルギーを計算するウィンドウを示すパラメータで以下の式で計算される.
total_slew = largest_slew / (logic_high_threshold - logic_low_threshold) * total_slew_multiplier
largest_slewは入力スリューの最大値.
・該当セルの.instに対する追加
set_config_opt -type -timing -to [PIN] -pin [PIN] partial_swing 1
フルスイングしない信号ピンに対し,Rail-to-Rail以外の電圧を評価できるようにする設定.partial_swing を 1 にすると,SiliconSmartの波形解析エンジンではなく,.measureで評価した電圧の絶対値を評価するようになる.ただ,デバッグ用?でNLDMに使えるのかはよくわからない.
・configure.tclに対する追加
set total_slew_multiplier [val]
内部パラメータであるtotal_slewの定数倍を指定する.total_slewは遅延やエネルギーを計算するウィンドウを示すパラメータで以下の式で計算される.
total_slew = largest_slew / (logic_high_threshold - logic_low_threshold) * total_slew_multiplier
largest_slewは入力スリューの最大値.
・該当セルの.instに対する追加
set_config_opt -type -timing -to [PIN] -pin [PIN] partial_swing 1
フルスイングしない信号ピンに対し,Rail-to-Rail以外の電圧を評価できるようにする設定.partial_swing を 1 にすると,SiliconSmartの波形解析エンジンではなく,.measureで評価した電圧の絶対値を評価するようになる.ただ,デバッグ用?でNLDMに使えるのかはよくわからない.