=====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|}}