HSPICEの出力結果は,ムダに空白行が多い.わかりにくいので,zshの関数を使って出力結果の空白行を削除してみた.ついでに,"***"から始まる行を消し,.lisに標準出力をリダイレクトするようにしてみた.
# cshなら引数をエイリアスに入れられるが,zshだと関数にしないといけないらしい.
function hspice-func () {
local input_file_name
input_file_name=$1
hspice64 $1 | grep -v -e '^\s*$' | grep -v '\*\*\*' | tee ${1}.lis
}
1つめのgrepで,空白行に該当しなかった行を表示し,2つめのgrepで,***に該当しなかった行を表示させている.他に,grepを駆使しまくれば,いらないメッセージもどんどん消せるだろう.出力結果はなるべくシンプルにしたいものだ.
11/13追記:
grepで"***"を消してしまうと,HSPICEの出す***simulation concluded***というメッセージも消してしまうので,やめた方が良いかも.
2012年10月30日火曜日
2012年10月25日木曜日
GVimのフォントを変える
GVimのフォントを変える際,以下の手順をたどると良い.
(1) GUIで好みのフォントを探す.
(2) 指定したフォントを.vimrcに指定する.
(1) フォントを探す
GVimをひらき,[編集]→[フォント設定]をひらく.するとGUIでフォントを選ぶ画面が出るので,好みのフォントを入れる.
(2) 指定したフォントを.vimrcに指定する.
次に,指定すべきフォントの名前を調べる.現在のフォントの設定は,以下のコマンドで調べることができる.
:set guifont
実行した結果を以下に示す.
(1) GUIで好みのフォントを探す.
(2) 指定したフォントを.vimrcに指定する.
(1) フォントを探す
GVimをひらき,[編集]→[フォント設定]をひらく.するとGUIでフォントを選ぶ画面が出るので,好みのフォントを入れる.
今回は,Osakaフォントの10ptを選ぶ.
(2) 指定したフォントを.vimrcに指定する.
次に,指定すべきフォントの名前を調べる.現在のフォントの設定は,以下のコマンドで調べることができる.
:set guifont
実行した結果を以下に示す.
これを,.vimrcに書けばよい.フォントの名前に全角が入っているが,きちんと認識するようだ.スペースはバックスラッシュ"\"を使ってエスケープする必要がある.
set guifont=Osaka-等幅\ 10
参考にしたサイト
新しくフォントをインストールしてVimエディタから利用する。
vim/任意のフォントを設定する方法
set guifont=Osaka-等幅\ 10
参考にしたサイト
新しくフォントをインストールしてVimエディタから利用する。
vim/任意のフォントを設定する方法
2012年10月23日火曜日
HSPICEの出力桁の制御(.option measdgt/numdgt)
HSPICEは標準出力(.lis)および..MEASUREの出力ファイル(.ma0,.mt0,.ms0等)に測定結果を書き込むが,デフォルトの出力桁は4桁でしかない.出力桁数を変えるには,MEASDGTオプションおよびNUMDGTオプションを使う.
MEASDGTオプションは.MEASUREの出力ファイルへの出力桁数を指定し,NUMDGTオプションは標準出力への出力桁数を指定する.
.option measdgt=value
.option numdgt=value
valueのところに桁数を指定する事で,出力桁を制御する.なお,最大値は10である.
MEASDGTオプションは.MEASUREの出力ファイルへの出力桁数を指定し,NUMDGTオプションは標準出力への出力桁数を指定する.
.option measdgt=value
.option numdgt=value
valueのところに桁数を指定する事で,出力桁を制御する.なお,最大値は10である.
2012年10月19日金曜日
HSPICEのライセンス数を知る
最近のHSPICEは-mpオプション(マルチプロセッサ),-mtオプション(マルチスレッド)等があり,うまく制御できれば計算速度を飛躍的に向上させることができる.一方でこれらの高速化機能を使うとモリモリライセンスを占有してしまう欠点がある.特にVDECのCADを使わせてもらっているところでは,むやみにライセンスを占有すると他の利用者に迷惑になる可能性が高い.
従って,今存在しているFloating License数を知る事ができれば,ある程度並列化しても良い規模を見積もることができる.
HSPICEでシミュレーションを実行すればライセンス数はわかるが,毎回C-cで止めるのはおっくうである.この場合,HSPICEをインタラクティブモードで起動させることで,HSPICEのライセンスを知ることができる.
hspice -I
インタラクティブモードで起動することで,1ライセンスを取り,次の入力待ちとなる.なおquitでHSPICEを終了する.
% hspice -I
lic:
lic: FLEXlm: v10.8
lic: USER: xxxxxxxxxx HOSTNAME: xxxxxxxxxx
lic: HOSTID: xxxxxxxxxx PID: 2426
lic: Using FLEXlm license file:
lic:
lic: Checkout 1 hspice
lic: License/Maintenance for hspice will expire on 01-may-2013/2011.09
lic: 37(in_use)/xxx(total) FLOATING license(s) on SERVER
lic:
Hspice license have checked out
HSPICE >quit
lic: Release hspice token(s)
%
もう少しエレガントにできればいいのだが,まあこれで満足(でもC-cと大して変わらないかも).
従って,今存在しているFloating License数を知る事ができれば,ある程度並列化しても良い規模を見積もることができる.
HSPICEでシミュレーションを実行すればライセンス数はわかるが,毎回C-cで止めるのはおっくうである.この場合,HSPICEをインタラクティブモードで起動させることで,HSPICEのライセンスを知ることができる.
hspice -I
インタラクティブモードで起動することで,1ライセンスを取り,次の入力待ちとなる.なおquitでHSPICEを終了する.
% hspice -I
lic:
lic: FLEXlm: v10.8
lic: USER: xxxxxxxxxx HOSTNAME: xxxxxxxxxx
lic: HOSTID: xxxxxxxxxx PID: 2426
lic: Using FLEXlm license file:
lic:
lic: Checkout 1 hspice
lic: License/Maintenance for hspice will expire on 01-may-2013/2011.09
lic: 37(in_use)/xxx(total) FLOATING license(s) on SERVER
lic:
Hspice license have checked out
HSPICE >quit
lic: Release hspice token(s)
%
もう少しエレガントにできればいいのだが,まあこれで満足(でもC-cと大して変わらないかも).
2012年10月18日木曜日
HSPICEの出力フォーマットを変える(.option measform)
HSPICEの出力結果は,デフォルトで見やすいものではなく,またgnuplotやExcel
等の加工に向かない.
いままではスクリプトを使って加工していたが,実はHSPICEのオプションで制御できる.
.option measform=value
valueは0から3の数字で,それぞれ
0: default
1: スペース区切り
2: HSIM互換
3: csv (.m*は作らない)
となる.
以下に,それぞれのオプションの出力結果を示す.
(1) .option measform=0
% cat nmos_TT.ms0
$DATA1 SOURCE='HSPICE' VERSION='E-2010.12 32-BIT'
.TITLE '*ring oscillator'
index _vdd iload ipower
temper alter#
1 1.000000e-01 3.992798e-10 1.215245e-08
2.500000e+01 1
2 2.000000e-01 5.940276e-09 1.756581e-07
2.500000e+01 1
3 3.000000e-01 7.720563e-08 2.095723e-06
2.500000e+01 1
4 4.000000e-01 7.989804e-07 1.771483e-05
2.500000e+01 1
(2) .option measform=1
% cat nmos_TT.ms0
$DATA1 SOURCE='HSPICE' VERSION='E-2010.12 32-BIT'
$OPTION MEASFORM=1
.TITLE '*ring oscillator'
index _vdd iload ipower temper alter#
1 1.000000e-01 3.992798e-10 1.215245e-08 2.500000e+01 1
2 2.000000e-01 5.940276e-09 1.756581e-07 2.500000e+01 1
3 3.000000e-01 7.720563e-08 2.095723e-06 2.500000e+01 1
4 4.000000e-01 7.989804e-07 1.771483e-05 2.500000e+01 1
(3) .option measform=2
% cat nmos_TT.ms0
$DATA1 SOURCE='HSPICE' VERSION='E-2010.12 32-BIT'
$OPTION MEASFORM=2
.TITLE '*ring oscillator'
index = 1.000000e+00
_vdd = 1.000000e-01
iload = 3.992798e-10
ipower = 1.215245e-08
temper = 2.500000e+01
alter# = 1.000000e+00
index = 2.000000e+00
_vdd = 2.000000e-01
iload = 5.940276e-09
ipower = 1.756581e-07
temper = 2.500000e+01
alter# = 1.000000e+00
index = 3.000000e+00
_vdd = 3.000000e-01
iload = 7.720563e-08
ipower = 2.095723e-06
temper = 2.500000e+01
alter# = 1.000000e+00
index = 4.000000e+00
_vdd = 4.000000e-01
iload = 7.989804e-07
ipower = 1.771483e-05
temper = 2.500000e+01
alter# = 1.000000e+00
(4) .option measform=3
% cat nmos_TT.ms0.csv
$DATA1 SOURCE='HSPICE' VERSION='E-2010.12 32-BIT'
.TITLE '*ring oscillator'
index,_vdd,iload,ipower,temper,alter#
1, 1.000000e-01, 3.992798e-10, 1.215245e-08, 2.500000e+01,1
2, 2.000000e-01, 5.940276e-09, 1.756581e-07, 2.500000e+01,1
3, 3.000000e-01, 7.720563e-08, 2.095723e-06, 2.500000e+01,1
4, 4.000000e-01, 7.989804e-07, 1.771483e-05, 2.500000e+01,1
個人的には,.option measform=1にするのがお薦め.
等の加工に向かない.
いままではスクリプトを使って加工していたが,実はHSPICEのオプションで制御できる.
.option measform=value
valueは0から3の数字で,それぞれ
0: default
1: スペース区切り
2: HSIM互換
3: csv (.m*は作らない)
となる.
以下に,それぞれのオプションの出力結果を示す.
(1) .option measform=0
% cat nmos_TT.ms0
$DATA1 SOURCE='HSPICE' VERSION='E-2010.12 32-BIT'
.TITLE '*ring oscillator'
index _vdd iload ipower
temper alter#
1 1.000000e-01 3.992798e-10 1.215245e-08
2.500000e+01 1
2 2.000000e-01 5.940276e-09 1.756581e-07
2.500000e+01 1
3 3.000000e-01 7.720563e-08 2.095723e-06
2.500000e+01 1
4 4.000000e-01 7.989804e-07 1.771483e-05
2.500000e+01 1
(2) .option measform=1
% cat nmos_TT.ms0
$DATA1 SOURCE='HSPICE' VERSION='E-2010.12 32-BIT'
$OPTION MEASFORM=1
.TITLE '*ring oscillator'
index _vdd iload ipower temper alter#
1 1.000000e-01 3.992798e-10 1.215245e-08 2.500000e+01 1
2 2.000000e-01 5.940276e-09 1.756581e-07 2.500000e+01 1
3 3.000000e-01 7.720563e-08 2.095723e-06 2.500000e+01 1
4 4.000000e-01 7.989804e-07 1.771483e-05 2.500000e+01 1
(3) .option measform=2
% cat nmos_TT.ms0
$DATA1 SOURCE='HSPICE' VERSION='E-2010.12 32-BIT'
$OPTION MEASFORM=2
.TITLE '*ring oscillator'
index = 1.000000e+00
_vdd = 1.000000e-01
iload = 3.992798e-10
ipower = 1.215245e-08
temper = 2.500000e+01
alter# = 1.000000e+00
index = 2.000000e+00
_vdd = 2.000000e-01
iload = 5.940276e-09
ipower = 1.756581e-07
temper = 2.500000e+01
alter# = 1.000000e+00
index = 3.000000e+00
_vdd = 3.000000e-01
iload = 7.720563e-08
ipower = 2.095723e-06
temper = 2.500000e+01
alter# = 1.000000e+00
index = 4.000000e+00
_vdd = 4.000000e-01
iload = 7.989804e-07
ipower = 1.771483e-05
temper = 2.500000e+01
alter# = 1.000000e+00
(4) .option measform=3
% cat nmos_TT.ms0.csv
$DATA1 SOURCE='HSPICE' VERSION='E-2010.12 32-BIT'
.TITLE '*ring oscillator'
index,_vdd,iload,ipower,temper,alter#
1, 1.000000e-01, 3.992798e-10, 1.215245e-08, 2.500000e+01,1
2, 2.000000e-01, 5.940276e-09, 1.756581e-07, 2.500000e+01,1
3, 3.000000e-01, 7.720563e-08, 2.095723e-06, 2.500000e+01,1
4, 4.000000e-01, 7.989804e-07, 1.771483e-05, 2.500000e+01,1
個人的には,.option measform=1にするのがお薦め.