=====HSIMシミュレーション=====
ここでは,2入力1出力のNANDを対象に,HSIMシミュレーションをすることを仮定する.
% hsim nand.sp
と実行することで,hsimシミュレーションができる.
ふんが研環境下では,
/home/vdec/synopsys/hsim-2010.12/hsimplus/platform/amd64/bin/hsim
を実行すること.
===== nand.spの記述=====
====libraryとsubcktを読み込む====
* HSIMモデルファイルの読み込み
(例)高速ライブラリの場合
*** Technology library ***
.lib '/home/vdec/lib/fujitsu65/CS200HP_Technology100712/HSPICE/CLI000-065SPM01002-01/CLI000-065SPM01002-01/option' OPTION
.lib '/home/vdec/lib/fujitsu65/CS200HP_Technology100712/HSPICE/CLI000-065SPM01002-01/CLI000-065SPM01002-01/ST' ST_TT
.lib '/home/vdec/lib/fujitsu65/CS200HP_Technology100712/HSPICE/CLI000-065SPM01002-01/CLI000-065SPM01002-01/ST' NOISE_TYP
.lib '/home/vdec/lib/fujitsu65/CS200HP_Technology100712/HSPICE/CLI000-065SPM01002-01/CLI000-065SPM01002-01/ST' ST_SET_PROC_DEVI
.lib '/home/vdec/lib/fujitsu65/CS200HP_Technology100712/HSPICE/CLI000-065SPM01002-01/CLI000-065SPM01002-01/STcore' ST_CORE
.lib '/home/vdec/lib/fujitsu65/CS200HP_Technology100712/HSPICE/CLI000-065SPM01111-00/CS200HP_Passive_Rev0.71/Passive_BulkDev_Antenna' DIODE_ANT
(例)低速ライブラリの場合
.lib '/home/vdec/lib/fujitsu65/CS200L_Technology080825/2.HSPICE/CLI000-065SPM02012-05/CS200L_1p2SVt_Rev1.01/option' OPTION
.lib '/home/vdec/lib/fujitsu65/CS200L_Technology080825/2.HSPICE/CLI000-065SPM02012-05/CS200L_1p2SVt_Rev1.01/1p2SVt' NOISE_TYP
.lib '/home/vdec/lib/fujitsu65/CS200L_Technology080825/2.HSPICE/CLI000-065SPM02012-05/CS200L_1p2SVt_Rev1.01/1p2SVt' TT
.lib '/home/vdec/lib/fujitsu65/CS200L_Technology080825/2.HSPICE/CLI000-065SPM02012-05/CS200L_1p2SVt_Rev1.01/1p2SVt' SET_PROC_DEVI
.lib '/home/vdec/lib/fujitsu65/CS200L_Technology080825/2.HSPICE/CLI000-065SPM02012-05/CS200L_1p2SVt_Rev1.01/1p2SVt' CORE
.lib '/home/vdec/lib/fujitsu65/CS200L_Technology080825/2.HSPICE/CS200L_Passive_Rev0.50/Passive_BulkDev_Antenna' DIODE_ANT
====ネットリストを読み込む====
* ネットリストを読み込む場合,.incを最初につける.
*** Netlist ***
.inc '/home/vdec/lib/fujitsu65/cs203mx_sc_io_lib/cdl/CS203/CS203SN/cs203sn_uc.cdl'
==== オプションやパラメータの設定====
*** Option and parameters ***
* HSIM.incは設定ファイル.記述は以下を参照
* nand.vecはベルトルファイル.入力にどんな値を入れるかを決める.記述は以下を参照.
.inc './HSIM.inc'
.param HSIMVECTORFILE = './nand.vec'
.option measdgt = 10
.option numdgt = 10
.param HSIMDCITER = 2000
.param Tstart = 50n
.param Tcycle = 5n
.param Twakeup = 5n
.param Tlast = 50n
.param slew = 30p
.param Tstable = 10n
.param Tspan = 'Tstart + Tsleep + Tstable'
.param paramVdd = 1.0 paramVss = 0.00
.param temperature = 25
.temp temperature
====電源などの宣言====
.global VDD VSS VNW VPW
Vd VDD 0 paramVdd
Vs VSS 0 paramVss
Vn VNW 0 paramVdd
Vp VPW 0 paramVss
====SC32NAND2XA1====
* 入力A&B,出力YB,Nwell,Pwellの電圧,VDDとVSSの電圧という意味.
* 最初はモジュール名にXをつけたものを宣言し(XSC32NAND2XA1),最後はモジュール名(SC32NAND2XA1)をそのまま記述する.
* 元のネットリストを参照し,順番通りにポートが宣言されていることを確認.
XSC32NAND2XA1 A B VDD VNW VPW VSS YB SC32NAND2XA1
.probe I(V*) V(*)
.meas norm avg I(Vs) from=20ns to=50ns
====最後====
.end
=====HSIM.incの記述=====
* Simulation Acculacy High Acculacy 0 <=> 8 High Speed ( default : 3 )
*.param HSIMSPEED=3
.param HSIMSPEED=0
* Time Scale unit : ns ( default : 1 ;=1ns )
*.param HSIMTIMESCALE=1
.param HSIMTIMESCALE=0.1
* MOS modeling
*.param HSIMSPICE=0
.param HSIMSPICE=0
*.param HSIMSPICE=3
* Minimam Voltage Variation for simulation Time Step ( default : 0.3v )
.param HSIMALLOWEDDV=0.1v
*.param HSIMALLOWEDDV=0.01v
* ( default : 10nA )
.param HSIMSTEADYCURRENT=0.1nA
*.param HSIMSTEADYCURRENT=0.001nA
.param HSIMOUTPUT = fsdb
.option post probe
.option measdgt = 12
*.option measdgt = 10
.option ingold=2 $ 0 : 1g 1x 1k 1m 1u 1n 1p 1f
$ 2 : 1e9 1e6 1e3 1e-3 1e-6 1e-9 1e-12 1e-15
=====nand.vecの記述=====
タイミングで入力する電圧の値を変化させ,出力の値を見る.
* 何ビットか(2入力,1出力とも1ビット)
radix 11 1
signal
+ A B YB
* i 入力,o 出力
io ii o
;stop_at_error
* vih = VDD[V], vil = VSS[V]
vih 1.0
vil 0.0
rise 0
fall 0
* [時間(nsec)][2入力(0or1)][1出力]
* uはドントケア
0 00 u
10 11 u
20 10 u
30 01 u
* Cscopeで見た波形は以下の通り.
{{:tapeout_enter:screenshot-3.png|}}