ngspice 的手册阅读笔记

通过阅读ngspice 的官方pdf版本的document做得笔记。

ngspice

RUN

source EX1.cir
run
plot v(5)

CMD

.TITLE line

//Examples:
POWER AMPLIFIER CIRCUIT
* additional lines following
*...
Test of CAM cell
* additional lines following
*...

//.TITLE line example:
******************************
* additional lines following
*...
.TITLE Test of CAM cell
* additional lines following
*...

//Internal input deck:
Test of CAM cell
* additional lines following
*...
*TITLE Test of CAM cell
* additional lines following
*...

.END Line

.end

Comments

// $ *
* <any comment>
* RF=1K Gain should be 100
* Check open-loop gain and phase margin

model device models

//.model mname type(pname1=pval1 pname2=pval2 ... )
.model MOD1 npn (bf=50 is=1e-13 vbf=50)

SUBCIRCUITS

// .SUBCKT subnam N1 <N2 N3 ...>
.SUBCKT OPAMP 1 2 3 4
//.ENDS <SUBNAM>
.ENDS OPAMP
//XYYYYYYY N1 <N2 N3 ...> SUBNAM
X1 2 4 17 3 1 MULTI
* The following is the instance card:
*
xdiv1 10 7 0 vdivide
* The following are the subcircuit definition cards:
*
.subckt vdivide 1 2 3
r1 1 2 10K
r2 2 3 5K
.ends

.GLOBAL

// .GLOBAL nodename
.GLOBAL gnd vcc

.INCLUDE

//.INCLUDE filename
.INCLUDE /users/spice/common/bsim3-param.mod

.LIB

// .LIB filename libname
.LIB /users/spice/common/mosfets.lib mos1

###.PARAM Parametric netlists

//.param <ident> = <expr> <ident> = <expr> ...
.param pippo=5
.param po=6 pp=7.8 pap={AGAUSS(pippo, 1, 1.67)}
.param pippp={pippo + pp}
.param p={pp}
.param pop=’pp+p’

.param a = 123 * 3 b = sqrt(9) // doesn’t work, a <= 123
.param a = ’123 * 3’ b = sqrt(9) // ok.
.param c = a + 123 // won’t work
.param c = ’a + 123’ // ok.
.param c = a+123 // ok.

Subcircuit

* Param-example
.param amplitude= 1V
*
.subckt myfilter in out rval=100k cval=100nF
Ra in p1 {2*rval}
Rb p1 out {2*rval}
C1 p1 0 {2*cval}
Ca in p2 {cval}
# ngspice

## RUN

    source EX1.cir
    run
    plot v(5)

## CMD


### .TITLE line

```verilog
//Examples:
POWER AMPLIFIER CIRCUIT
* additional lines following
*...
Test of CAM cell
* additional lines following
*...

//.TITLE line example:
******************************
* additional lines following
*...
.TITLE Test of CAM cell
* additional lines following
*...

//Internal input deck:
Test of CAM cell
* additional lines following
*...
*TITLE Test of CAM cell
* additional lines following
*...

.END Line

.end

Comments

// $ *
* <any comment>
* RF=1K Gain should be 100
* Check open-loop gain and phase margin

model device models

//.model mname type(pname1=pval1 pname2=pval2 ... )
.model MOD1 npn (bf=50 is=1e-13 vbf=50)

SUBCIRCUITS

// .SUBCKT subnam N1 <N2 N3 ...>
.SUBCKT OPAMP 1 2 3 4
//.ENDS <SUBNAM>
.ENDS OPAMP
//XYYYYYYY N1 <N2 N3 ...> SUBNAM
X1 2 4 17 3 1 MULTI
* The following is the instance card:
*
xdiv1 10 7 0 vdivide
* The following are the subcircuit definition cards:
*
.subckt vdivide 1 2 3
r1 1 2 10K
r2 2 3 5K
.ends

.GLOBAL

// .GLOBAL nodename
.GLOBAL gnd vcc

.INCLUDE

//.INCLUDE filename
.INCLUDE /users/spice/common/bsim3-param.mod

.LIB

// .LIB filename libname
.LIB /users/spice/common/mosfets.lib mos1

###.PARAM Parametric netlists

//.param <ident> = <expr> <ident> = <expr> ...
.param pippo=5
.param po=6 pp=7.8 pap={AGAUSS(pippo, 1, 1.67)}
.param pippp={pippo + pp}
.param p={pp}
.param pop=’pp+p’

.param a = 123 * 3 b = sqrt(9) // doesn’t work, a <= 123
.param a = ’123 * 3’ b = sqrt(9) // ok.
.param c = a + 123 // won’t work
.param c = ’a + 123’ // ok.
.param c = a+123 // ok.

Subcircuit

* Param-example
.param amplitude= 1V
*
.subckt myfilter in out rval=100k cval=100nF
Ra in p1 {2*rval}
Rb p1 out {2*rval}
C1 p1 0 {2*cval}
Ca in p2 {cval}
Cb p2 out {cval}
R1 p2 0 {rval}
.ends myfilter
*
X1 input output myfilter rval=1k cval=1n
V1 input 0 AC {amplitude}
.end

.PARAM PARAMETRIC NETLISTS

* Logical operators
v1or 1 0 {1 || 0}
v1and 2 0 {1 && 0}
v1not 3 0 {! 1}
v1mod 4 0 {5 % 3}
v1div 5 0 {5 \ 3}
v0not 6 0 {! 0}
.control
op
print allv
.endc
.end

.FUNC

// .func <ident> { <expr> }
// .func <ident> = { <expr> }
.func icos(x) {cos(x) - 1}
.func f(x,y) {x*y}
.func foo(a,b) = {a + b}

.CSPARAM

Create a constant vector (see 17.8.2) from a parameter in plot (17.3) const.

//.csparam <ident> = <expr>
.param pippo=5
.param pp=6
.csparam pippp={pippo + pp}
.param p={pp}
.csparam pap=’pp+p’

* test csparam
.param TEMPS = 27
.csparam newt = {3*TEMPS}
.csparam mytemp = ’2 + TEMPS’
.control
echo $&newt $&mytemp
.endc
.end

.TEMP

Sets the circuit temperature in degrees Celsius.

//.temp value
.temp 27

.IF Condition-Controlled Netlist

//.if(boolean expression)
//...
//.elseif(boolean expression)
//...
//.else
//...
//.endif

//Example 1:
* device instance in IF-ELSE block
.param ok=0 ok2=1
v1 1 0 1
R1 1 0 2
.if (ok && ok2)
R11 1 0 2
.else
R11 1 0 0.5 $ <-- selected
.endif
//Example 2:
* .model in IF-ELSE block
.param m0=0 m1=1
M1 1 2 3 4 N1 W=1 L=0.5
.if(m0==1)
.model N1 NMOS level=49 Version=3.1
.elseif(m1==1)
.model N1 NMOS level=49 Version=3.2.4 $ <-- selected
.else
.model N1 NMOS level=49 Version=3.3.0
.endif

3

m 并行

.param madd = 6
X1 a b sub1 m=5
.subckt sub1 a1 b1
Cs1 a1 b1 C=5p m=’madd-2’
.ends
.param madd = 4
X1 a b sub1 m=3
.subckt sub1 a1 b1
X2 a1 b1 sub2 m=’madd-2’
.ends
.subckt sub2 a2 b2
Cs2 a2 b2 3p m=2
.ends

猜你喜欢

转载自blog.csdn.net/u012939880/article/details/93341093
今日推荐