LTSpiceのascファイルからHSPICE互換のネットリストを抽出する方法
同一回路のシミュレーションをして,LTSpiceでの解析精度はHSPICEの解析精度と全く同じである(※すくなくとも試した回路においては)ことは確認したのだが,シミュレーション結果を論文等に載せるのを考えるとやはりHSPICEでシミュレーションしておくと良い.そこで,研究室に残してきたノウハウ(2006-09-24)より転記.
まず,できる限りLTSpice上で,HSPICE互換のネットリストを作成しておく.
- tran解析時は,0nsから始めるとうまくいかないことがあるので,.tran 10psのように少し遅らせる
- デバイスモデルを利用するときは,「.include "./TSMC-018.mod"」のように.includeを使う
- 消費電力測定のために,電源電圧のノード名を「Vdd」としておく
- 消費電力測定のために,以下の文を書いておく(LTSpice上ではエラーが出るが無視されるので特に問題ない)
.meas tran avepower P(Vdd) from=0ns to=??ns
View->Spice Netlistでネットリストが表示される.このとき,オプションで,終了時にネットリストは削除しないようにすると,????.netという名前で,ネットリストが保存される.(※この操作は,回路図更新後は必ず必要.この操作を行わないと,ネットリストが更新されない.)
この得られたネットリストは,以下のように若干修正する必要がある.
- {ll}など中括弧で指定した変数は,エラーになるので,llなどと,中括弧を削除する
- .model NMOS NMOS など,.modelステートメントは削除するかコメントアウトする
- .lib C:\PROGRA~1\LTC\SwCADIII\lib\cmp\standard.mos の行も同様に削除するかコメントアウトする
これらは,それぞれ以下のコマンドで対応可能
sed 's/{//g' moge.net
sed 's/}//g' moge.net
sed 's/\.model/\*\.model/' moge.net
sed 's/\.lib/\*\.lib/' moge.net
上記コマンドを一気にやろうとすると,
sed -e 's/{//g' -e 's/}//g' -e 's/\.model/\*\.model/' -e 's/\.lib/\*\.lib/' moge.net
実際は,下記のnet2sp.shを作って,
#!/bin/bash # This script converts from LTSpice net file to sp file that can be used in HSPICE # usage: net2sp.sh moge.net name=`basename $1 .net` sed -e 's/{//g' -e 's/}//g' -e 's/\.model/\*\.model/' -e 's/\.lib/\*\.lib/' $name.net > $name.sp
bash上で,以下のように実行した.
for f in *.sp; do sh net2sp.sh $f; done