HSPICEでは変数の定義と同様に,自作関数を定義することができる.フォーマットは以下の通り.
.param funcname1(arg1[,arg2...]) = expression1
+ funcname2(arg1[,arg2...]) = expression2
関数名(funcname)は組み込み関数と異なる名前である必要があり,また別の関数内で利用する関数はあらかじめ定義されている必要がある.引数(arg)は必ず1つ以上必要であり,複数定義できる.関数は再定義できるが,オーバーロードではなくオーバーライドになる様だ(明確には述べられていないが).
例えば剰余を求める関数は,以下のようになった(SPICEv3にはあるのになぜHSPICEには無いのだろう??).
.param remain(numer, denom)='numer - (int(numer/denom) * denom)'
10進数を2進数に変換してみる.SPICEのカードの一部を示す.
.param remain(numer, denom)='numer - (int(numer/denom) * denom)'
.param COND_DCC_0 = 'remain(TRIAL, 2)'
.param COND_DCC_1 = 'remain(int(TRIAL/2), 2)'
.param COND_DCC_2 = 'remain(int(TRIAL/4), 2)'
.param COND_DCC_3 = 'remain(int(TRIAL/8), 2)'
.param COND_DCC_4 = 'remain(int(TRIAL/16), 2)'
.param COND_DCC_5 = 'remain(int(TRIAL/32), 2)'
.param COND_DCC_7 = 'remain(int(TRIAL/64), 2)'
.param COND_DCC_6 = 'remain(int(TRIAL/128), 2)'
.tran 10p 10n sweep TRIAL 0 256 1
HSPICEでシミュレーションしたところ,ちゃんと2進数に変換できた!
試していないが,おそらくHSIMでもできる
2013年7月12日金曜日
2013年2月8日金曜日
64bit版HSIMを使う方法
環境変数HSIM_64に1をセットする事で,64bit版HSIMを利用可能である.
% setenv HSIM_64 1 # csh. tcsh
% export HSIM_64=1 # ksh, bash
これさえあれば,チップレベルのシミュレーションも怖くない!
試しにやってみた.
[11:00]% export HSIM_64=1
[11:00]% hsim
================
**************************************************************************
ERROR : amd64/bin/hsim is not installed under
/mnt/cad/synopsys/hsim_vE-2010.12/hsimplus/platform
and no compatible binary can be found
**************************************************************************
[11:00]%
orz
amd64のバイナリをインストールしてもらおう…
% setenv HSIM_64 1 # csh. tcsh
% export HSIM_64=1 # ksh, bash
これさえあれば,チップレベルのシミュレーションも怖くない!
試しにやってみた.
[11:00]% export HSIM_64=1
[11:00]% hsim
================
**************************************************************************
ERROR : amd64/bin/hsim is not installed under
/mnt/cad/synopsys/hsim_vE-2010.12/hsimplus/platform
and no compatible binary can be found
**************************************************************************
[11:00]%
orz
amd64のバイナリをインストールしてもらおう…
HSPICE/HSIMでRC Reductionを行う(.OPTION SIM_LA/.PARAM HSIMPOSTL)
ポストレイアウトシミュレーションを行う場合,レイアウトから大量のRCが抽出されるためシミュレーションに時間がかかる.HSPICEでは,ネットリスト中の大量のRCを縮約(Reduction)する事でノード数を減らし,シミュレーションを高速化することができる.この場合,SIM_LAオプションを利用する.LAとはLinear Accelerationの略である.
.OPTION SIM_LA = value
valueは[PACT | PI | 0 | 1 | 2]を取り,以下の対応となる.
PACT: PACT(Pole Analysis via Congruence Transforms)アルゴリズムでRC Reductionを行う.PACTアルゴリズムでは,DCでの特性を完全に合わし,同時に指定された周波数f0以下の範囲に存在する極を保存するようにReductionを行う.以下に示すPIより高精度.
f0はLA_FREQオプションで以下のように指定する.
.OPTION LA_FREQ=value
valueが0である場合,Cの情報は消えてしまう.
PI: RCネットワークから等価パイ型モデルを作る.
0: SIM_LAオプションを無効にする(default).
1: PACTを有効にする(.OPTION LA_FREQ=PACTと同じ).
2: PIを有効にする(.OPTION LA_FREQ=PACTと同じ).
HSIMの場合,SIM_LAオプションではなく,変数HSIMPOSTLを指定する事でRC Reductionを行う.
.PARAM HSIMPOSTL = value
valueは[0 | 1 | 2 | 3]を取り,以下の対応となる.
0: RC Reductionを無効にする.
1: RC Reductionを有効にする.
2: RC Reductionを有効にする.
このオプションは,一つのネットに大量のMOSFETのドレイン/ソースがつながっているときに有効.
3: RC Reductionを有効にする.
このオプションは,RC Reductionを行う閾値となる電圧を1mVから10mVに緩和することで,より高速にポストレイアウトシミュレーションを実行可能にする.
マニュアルを読む限り,HSIMのRC Reductionはメモリーやデジタル回路のクロックツリーのシミュレーションを対象としている様だ.従ってHSPICEとは異なり,周波数ドメインの事はあまり考えていないようだ(要調査).
.OPTION SIM_LA = value
valueは[PACT | PI | 0 | 1 | 2]を取り,以下の対応となる.
PACT: PACT(Pole Analysis via Congruence Transforms)アルゴリズムでRC Reductionを行う.PACTアルゴリズムでは,DCでの特性を完全に合わし,同時に指定された周波数f0以下の範囲に存在する極を保存するようにReductionを行う.以下に示すPIより高精度.
f0はLA_FREQオプションで以下のように指定する.
.OPTION LA_FREQ=value
valueが0である場合,Cの情報は消えてしまう.
PI: RCネットワークから等価パイ型モデルを作る.
0: SIM_LAオプションを無効にする(default).
1: PACTを有効にする(.OPTION LA_FREQ=PACTと同じ).
2: PIを有効にする(.OPTION LA_FREQ=PACTと同じ).
HSIMの場合,SIM_LAオプションではなく,変数HSIMPOSTLを指定する事でRC Reductionを行う.
.PARAM HSIMPOSTL = value
valueは[0 | 1 | 2 | 3]を取り,以下の対応となる.
0: RC Reductionを無効にする.
1: RC Reductionを有効にする.
2: RC Reductionを有効にする.
このオプションは,一つのネットに大量のMOSFETのドレイン/ソースがつながっているときに有効.
3: RC Reductionを有効にする.
このオプションは,RC Reductionを行う閾値となる電圧を1mVから10mVに緩和することで,より高速にポストレイアウトシミュレーションを実行可能にする.
マニュアルを読む限り,HSIMのRC Reductionはメモリーやデジタル回路のクロックツリーのシミュレーションを対象としている様だ.従ってHSPICEとは異なり,周波数ドメインの事はあまり考えていないようだ(要調査).
登録:
投稿 (Atom)