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という名前で,ネットリストが保存される.(※この操作は,回路図更新後は必ず必要.この操作を行わないと,ネットリストが更新されない.)

この得られたネットリストは,以下のように若干修正する必要がある.

これらは,それぞれ以下のコマンドで対応可能

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