HSPICE Chan-Ming Chang
Outline Declaration Voltage source Circuit statement SUBCKT of circuit statement Measure Simulation
Declaration ***** SPICE COURSE EXAMPLE INVERTER LJC *****.LIB 'mm018.l' tt.global Vdd.TRAN 1ns 1000ns Vdd.OPTION post ***** VOLTAGE SOURCE ***** Mp0 Vsource0 Vdd 0 1.8v Vsignal0 in 0 pulse(1.8v 0 0ns 5ns 5ns 95ns 200ns) in out ***** CIRCUIT STATEMENT ***** Mn0 Mp0 out in Vdd Vdd pch L=0.18u W=0.44u M=1 Mn0 out in 0 0 nch L=0.18u W=0.22u M=1 ***** MEASURE ***** GND.MEAS TRAN out_rise_delay TRIG v(in) VAL=0.9v TD=0 FALL=3 TARG v(out) VAL=0.9v RISE=3.MEAS TRAN pwr AVG POWER.END
Declaration.LIB Declare the libraries you want to used Syntax.LIB Fname Example.LIB 'mm018.l' tt
Declaration.GLOBAL Declare a global variable Syntax.GLOBAL node1 node2 node3... Example.GLOBAL Vdd
Declaration.TRAN 1ns 1000ns Print the transient analysis every 1 ns for 1000 ns.option post Write an output file ending in.tr0 containing the simulation waveforms
Voltage source ***** SPICE COURSE EXAMPLE INVERTER LJC *****.LIB 'mm018.l' tt.global Vdd.TRAN 1ns 1000ns Vdd.OPTION post ***** VOLTAGE SOURCE ***** Mp0 Vsource0 Vdd 0 1.8v Vsignal0 in 0 pulse(1.8v 0 0ns 5ns 5ns 95ns 200ns) in out ***** CIRCUIT STATEMENT ***** Mn0 Mp0 out in Vdd Vdd pch L=0.18u W=0.44u M=1 Mn0 out in 0 0 nch L=0.18u W=0.22u M=1 ***** MEASURE ***** GND.MEAS TRAN out_rise_delay TRIG v(in) VAL=0.9v TD=0 FALL=3 TARG v(out) VAL=0.9v RISE=3.MEAS TRAN pwr AVG POWER.END
Voltage source Vxxx Syntax Vname n+ n- val Example Vsource0 Vdd 0 1.8v V1 node1 0 5v
Voltage source Pulse source function: PULSE Syntax PULSE ( V1 V2 Tdelay Trise Tfall duty_cycle_width Period ) V2 V1 Tdelay Trise duty_cycle_width Tfall duty_cycle_width Period
Voltage source Example V1 node1 node2 PULSE ( 0V 5V 10ns 10ns 10ns 40ns 100ns) 5 0 10 20 30 40 50 60 70 80 90 100 110 120 130 V2 node3 node4 PULSE ( 5V 0V 10ns 10ns 10ns 40ns 100ns) 5 0 10 20 30 40 50 60 70 80 90 100 110 120 130
Voltage source Piecewise linear source function: PWL Syntax PWL (t1 v1, t2 v2, ) Example V1 node1 0 PWL (0n 0v, 20n 0v, 21n 3v, 25n 3v, 26n 0v,30n 0v)
Circuit Statement ***** SPICE COURSE EXAMPLE INVERTER LJC *****.LIB 'mm018.l' tt.global Vdd.TRAN 1ns 1000ns Vdd.OPTION post ***** VOLTAGE SOURCE ***** Mp0 Vsource0 Vdd 0 1.8v Vsignal0 in 0 pulse(1.8v 0 0ns 5ns 5ns 95ns 200ns) in out ***** CIRCUIT STATEMENT ***** Mn0 Mp0 out in Vdd Vdd pch L=0.18u W=0.44u M=1 Mn0 out in 0 0 nch L=0.18u W=0.22u M=1 ***** MEASURE ***** GND.MEAS TRAN out_rise_delay TRIG v(in) VAL=0.9v TD=0 FALL=3 TARG v(out) VAL=0.9v RISE=3.MEAS TRAN pwr AVG POWER.END
Circuit Statement Instance and element names C Capacitor Cxxx Node1 Node2 Value D Diode E,F,G,H Dependent current and voltage controlled source I Current J JFET or MESFET K Mutual inductor L Inductor M MOSFET Q BJT R Resistor O,T,U Transmission line V Voltage source X Subcircuit call
Circuit Statement MOSFET element Syntax Mxxx nd ng ns nb mname <L=val> <W=val> <M=val> Example M0 d0 g0 s0 b0 nch L=0.18u W=0.22u M=1 M1 d1 g1 s1 b1 pch L=0.18u W=0.22u M=4 M1 d1 g1 s1 b1 pch L=0.18u W=0.88u M=1 D S G B G B NMOS S PMOS D
Circuit Statement Resistance: R R1 node1 node2 10k Voltage source: V V4 node3 node4 1v Capacitor: C C2 node2 node4 10p MOS: M M3 node2 node3 node4 node4 + nch W=0.22u L=0.18u M=1 node3 V V=1 node4 node1 R=10k node2 C=10p
Circuit Statement Units Ohm *Resistance Farad *Capacitor Henry *Inductor Scales T 10 12 G 10 9 Meg 10 6 K 10 3 M 10-3 U 10-6 N 10-9 P 10-12 F 10-15
SUBCKT of Circuit Statement.SUBCKT Syntax.SUBCKT subname Node1 <Node2... > SUBCKT circuit statement.ends subname Subcircuit calls.xinstantname n1 <n2 n3...> Subname <param=val...> <M=val>
SUBCKT of Circuit Statement ***** SUBCKT inverter circuit statement *****.SUBCKT inverter inv invb Mp0 invb inv Vdd Vdd pch L=0.18u W=0.66u M=1 Mn0 invb inv GND GND nch L=0.18u W=0.22u M=1.ENDS inverter ***** circuit statement ***** Xinv1 in x inverter Xinv2 x out inverter inv Vdd Mp0 invb Mn0 GND inverter Xinv1 Vdd Xinv2 Vdd in x out GND GND
Measures ***** SPICE COURSE EXAMPLE INVERTER LJC *****.LIB 'mm018.l' tt.global Vdd.TRAN 1ns 1000ns Vdd.OPTION post ***** VOLTAGE SOURCE ***** Mp0 Vsource0 Vdd 0 1.8v Vsignal0 in 0 pulse(1.8v 0 0ns 5ns 5ns 95ns 200ns) in out ***** CIRCUIT STATEMENT ***** Mn0 Mp0 out in Vdd Vdd pch L=0.18u W=0.44u M=1 Mn0 out in 0 0 nch L=0.18u W=0.22u M=1 ***** MEASURE ***** GND.MEAS TRAN out_rise_delay TRIG v(in) VAL=0.9v TD=0 FALL=3 TARG v(out) VAL=0.9v RISE=3.MEAS TRAN pwr AVG POWER.END
Measures.MEAS Syntax.MEASURE <AC DC TRAN> result TRIG... TARG... TRIG trig_var VAL = trig_val <TD = time_delay> <CROSS = c> <RISE = r> <FALL = f> TARG targ_var VAL = targ_val <TD = time_delay> <CROSS = c LAST> <RISE = r LAST> <FALL = f LAST>.MEAS TRAN pwr AVG POWER
Measures Example.MEAS TRAN out_rise_delay TRIG v(in) VAL=0.9v TD=0 FALL=3 + TARG v(out) VAL=0.9v RISE=3 FALL=1 FALL=2 FALL=3 FALL=4 RISE=1 RISE=2 RISE=3 RISE=4
Simulation Compile your file: hspice Output file
Simulation View waveform by nwave 1. 3. 2. 4.
Simulation 5. 6. 7.
Simulation
Simulation View the measure results by vi Quit vi command => :q!