ESPICE是NINECUBE公司提供的一款模拟集成电路仿真软件,用于检测电路的连接和功能的完整性,以及预测电路的行为。主要应用于模拟电路和混合信号电路的仿真,能够提供快速和精确的Spice级别的模拟仿真,实现晶体管电路的直流,交流和瞬态分析。针对需要快速收敛的设计,可执行高级Spice精度仿真,同时支持可扩展性能,可以与Cadence ADE 设计平台精密集成,允许设计者在相同环境中接受和传递设计思路。其独特的的分块全矩阵求解技术利用先进的多CPU计算平台和计算集群,可以带来无与伦比的可扩展性和多线程功能。这些特性充分保证了高速可靠的仿真,而不会对结果的精确性产生任何影响。
ESPICE具备绝大多数SPICE的特性,可以实现所有SPICE的仿真功能。同时它还具有许多新的特征,主要包括:
高精确度 采用独特的分块全矩阵求解技术
优越的收敛性 采用先进的优化算法,实现计算的快速收敛
高运算速度 基于互联网云平台,采用先进的多CPU计算机集群,实现多线程的高速计算
高精度 使用大型计算机集群,对电路所有路径进行精确计算
ESPICE对输入网表文件进行运算并产生仿真结果,仿真结果保存在输出列表文件或图形数据文件中。ESPICE的输入文件后缀没有限制 ,可以以自己熟悉的方式命名。
ESPICE输入文件必须含有一个主文件,其他文件以附件的形式上传。
输入文件主要包括 :一个主文件,该文件一般即是整个设计的顶层电路的网表;其余文件包括子电路网表、库文件、或者其他功能描述文件。
输出文件包括:
仿真日志文件——logfile.txt
该文件内容包括:使用的工具版本信息、仿真时间、输入主文件名称;电路的详细信息,有多少个电阻电容晶体管,多少个节点等;仿真过程有什么错误警告等;执行了哪些仿真;如果网表中有静态工作点分析等,该文件还会打印电路中所有元件的工作状态。如果执行了零极点分析,将会打印零极点信息。如果执行了傅里叶分析,将会打印傅里叶变换结果。
输出结果文件——以.print为后缀
若使用.print语句,则会产生此文件,该文件打印待输出节点的电压电流或者频率等信息。
图形数据文件——以.raw* 为后缀,*代表数字1,2,3或者为空
该文件即仿真后产生的波形文件,它记录了仿真的结果,可以用波形查看工具将该文件绘制成波形。
其他文件 仿真产生的其他各类文件
一个简单的ESPICE设计文件结构如下所示:
.title invert ***Sheet Name: invert Title
************************************************* Sources
V1 N-000001 GND 3.3
V0 in GND DC 1.43 PULSE(0 3.3 2n 5n 5n 200n 400n)
************************************************* Components
M2 out in N-000001 N-000001 p_33 l=1u w=6u m=1
M1 out in GND GND n_33 l=1u w=4u m=1
************************************************** Libiary
.lib"CMOS_035_Spice_Model.lib"tt
************************************************** Controls
.op
.dc V0 0 3.3 0.01
.probe dc V(out)
.tran 1n 1u
.probe tran V(in) V(out)
************************************************** Alter
.alter
V0 in GND sin(1.43 10m 20meg)
************************************************** End
.end
由上可知,网表中除了描述电路连接关系的语句,其余都是以.开头的语句。
标题一般即网表第一行内容,主要介绍该网表的主要功能。也可以不用写标题,若不用标题,一般需将第一行空出。
它表示整个文件结束,必须放在最后一行。
注释语句是用户对程序运算和分析时加以说明的语句,它不参与仿真。
一般形式为 *
或者 ESPice language $
$一般放在仿真语句后面,必须与仿真语句至少隔一个空格。
ESPice可以用*注释一整行或后半行
若某条语句很长,须分为多行来写,则可以用+来分行,例如:
.MODEL M NOS VTO=1 NSUB=1E15 TOX=1000
+ UO=800 LEVEL=1 CAPOP=2
一般形式:.GLOBAL node1 node2 node3…
输入文件若定义了.GLOBAL 语句,则输入文件所有子电路中与.GLOBAL 节点名相同的节点将都被自动定义成有连接关系。一般线路的电源、地以.GLOBAL 语句定义。
元件描述语句一般由元件名、元件所连接的电路节点号和元件参数值组成。元件在输入中以一行表示,该行不能以“.”开始。语句中的第一个字母是关键字,它确定了该元件的类型。
一般形式:
elname
或 elname
其中:
elname: 元件名, 是一个带有一个关键字母的不超过15个字符的字符串。
ESPICE 中表示元件的关键字母的含义:
C-电容 K-耦合互感
L-电感 R-电阻
node1... 节点名,用来说明元件所连接的节点,节点名的第一个字符必须是字母,整个字符串不超过16 个字符(连第一个字母在内)。=()′ ′ ′ ′. ′[ ]等符号不能出现在节点名中。
mname: 模型参考名,对除了无源器件外所有元件都是必需的。
pname1... 元件参数名,用来标明一些元件的参数值。
val1... 赋于的参数值或模型节点,这些数值可以是数值,也可以是代数表达式。
M=val 元件的倍增因子。
电阻
一般形式:
RXXX n1 n2
+
+
或 RXXX n1 n2
+
+
或 RXXX n1 n2 R=equation
例: R1 1 2 100k
RC1 12 17 1k TC=0.001, 0 1.2
R4 5 54 RMOD 12k
上述电阻描述语句中,电阻值可以是正值或负值,但不能为零。TC1和 TC2 是温
度系数,其缺省值是零。
电容电感
(1) 电容:
一般形式: CXXX n1 n2
+
或 CXXX n1 n2
+
或 CXXX n1 n2 C=equation CTYPE=0 or 1
例: C1 3 2 10U IC=3V
CB YP 13 0 1UF
C2 1 2 CMOD 6PF
若系统中所用电容是非线性的,则其一般形式是:
CXXX n1 n2 POLY C0 C1 C2 ...
(2) 电感:
一般形式:LXXX n1 n2
+
或 LXXX n1 n2
+
或 LXXX n1 n2 L=equation LTYPE=0 or 1
例:LLINK 42 69 1UH
LSHUNT 23 51 10U 0.001 0 15 IC=15.7MA
LH8 5 80 LMOD 2MH
若系统中所用电感是非线性的,则其一般形式是:
LXXX n1 n2 POLY L0 L1 L2 ...
在非线性电容和电感的表达式中,POLY 表示其中的数值 C0,C1,C2…(和L0,L1,L2…) 是描述元件值的多项式系数。 电容值为元件两端电压 V 的函数,而电感值则为流过电感的电流i 的函数,故有下述的表达式:
电容值=C0+C1*V+C2*V**2+…
电感值=L0+L1*i+L2*i**2+…
互感
一般形式: KXXX LYYY LZZZ Kvalue
或 KXXX LYYY LZZZ K=val
其中LYYY和 LZZZ 是两耦合电感的名字,耦合系数 K 的值,必须大于零且小于等于1。
例: K34 LAA LBB 0.9999
KXFTR L1 L4 K=0.87
ESPICE中提供了一些供激励用的独立源和受控源。电源描述语句也由代表电源名称的关键字、连接情况和有关参数值组成。描述电源的关键字含义为:
V: 独立电压源 I: 独立电流源
E: 电压控制电压源 F: 电流控制电流源
G: 电压控制电流源 H: 电流控制电压源
独立电压源以V开头,独立电流源以I开头,它可以有许多激励类型。
直流源
一般形式: VXXX n+ n- <
IXXX n+ n- <
例 V1 2 0 DC=5v
V1 2 0 5v
I1 3 0 DC=3mA
I2 3 0 3Ma
交流源
一般形式:VXXX n+ n-
IXXX n+ n-
例:V1 1 0 AC=10V 90
VIN 1 0 AC 10V 90
ISRC 23 21 AC 0.333 45.0
如果在关键字 AC 后面省去 acmag, 就认为该值是1。 如果省去acphase,则认为该值为 0。
脉冲源 PULSE
一般形式:PULSE <(> V1 V2
分段线性源 PWL,PL
一般形式: PWL <(> t1 v1 正弦源 SIN 一般形式:SIN <(> vo va 指数源 EXP 一般形式: EXP<(> v1 v2 单频调频源 SFFM 一般形式:SFFM <(> vo va 单频调幅源 AM 电压控制电压源 E 一般形式: 电流控制电流源 F 一般形式: 电压控制电流源 G 一般形式: 电流控制电压源 H 一般形式: 二极管 D 一般形式: DXXX nplus nminus mname 双极型晶体管 Q 一般形式: QXXX nc nb ne MOS场效应晶体管 M 一般形式:MXXX nd ng ns 子电路是以 .SUBCKT 或 .MACRO 开头,以 .ENDS 或.EOM结束的一组语句。一旦定义好,它可看作是以X 关键字开头的器件。 子电路定义开始语句 一般形式: .SUBCKT subnam n1 子电路终止语句 一般形式 : .ENDS < SUBNAM > 子电路调用语句 一般形式: 在用 ESPICE 对电路的模拟中, 经常要对元器件的模型及其参数以及子电路 库文件调用语句 一般形式: .LIB ′< filepath > f ilename ′ entryname 库定义语句: 以 .LIB entyname 开头,.ENDL entyname 结束。 使用.INCLUDE语句可以将各个子网表或者其他需要包含的文件添加进来。 对电路性能进行分析,进而对电路设计起到指导性作用,这是电路模拟的意义所在。电路的性能分析包括:直流分析(直流工作点、直流扫描分析、灵 一般形式: .OP < format > < time > < forme > < time > format 是下述关键字中的任何一个(只有第一个自号有效的,缺省值为 ALL): 该语句规定了直流传输特性分析时所用的电源类型和扫描极限。在直流分 如果在输入文件中包括了一个.SENS 语句, ESPICE 将对每一个规定的的输出变量相对于相关的电路参数做直流小信号灵敏度分析。 灵敏度测量就是一个输入变量相对于给定的电路元件参数在工作点附近求偏微分并加以归一化的过程。 因此,所有元件的灵敏度总和是100%,ESPICE 能对电阻、独立电压源、独立电流源、二极管及双极型晶体管做直流小信号灵敏度分析。每一次电路模拟中只能执行一个.SENS 分析,若输入文件中有多个.SENS 语句,则 ESPICE只执行最后一个.SENS 语句。 交流小信号分析时,ESPICE将交流输出变量作为指定频率的函数来加以分析计算。分析时 ESPICE 首先求直流工作点,作为交流分析的初始条件,这时ESPICE 将电路中所有非线性器件变换成线性小信号模型,电容和电感则被换算成相应的导纳值:YC=jwc ,YL=1/jwl。 电路中产生噪声的元器件有电阻和半导体器件,每个器件的噪声源在AC分析的每个频率计算出相应的噪声,并传送到一个输出节点。电路总的输出噪声就是各个噪声源计算所得噪声在该点进行 RMS(root-mean-square 均方根)相加而得到的结果: 语句的一般形式:.PZ output input 瞬态分析最常用的形式是: 其中 执行傅里叶变换,基本语法为: 设置初始状态是为在电路模拟中计算偏置点而设定一个或多个电压 (电流)值的过程。在模拟非线性电路、振荡电路及触发器电路的直流或瞬态特性时,常出现解的不收敛现象,当然实际电路不一定没有解。其原因是偏置点发散或收敛的偏置点不能适应多种情况。 设置初始值最通常的原因就是在两个或更多的稳定工作点中选择出一个,使模拟顺利进行。 .PARAM 语句被用来对 ESPICE 模拟中的元件和模型所指定的关键字进行赋 参数扫描用于对某个参数改变分析,表明对变化的每个参数都作仿真。前面有很多分析中都使用到了sweep,用法可参考各个具体分析。 蒙特卡罗分析法是使用随机数发生器按元件值的概率分布来选择元件, 然后对电路进行模拟分析。所以蒙特卡罗分析可在元器件模型参数赋给的容差范围内,进行各种复杂的分析,包括直流分析,交流及瞬态特性分析。这些分析结果可以用来预测电路生产时的成品率及成本等。 一般形式:.TEMP t1 一般形式: .PRINT antype ov1 一般形式: .PROBE antype ov1… .ALTER语句功能是能针对设定的不同参数和数据自动进行更替来进行电路的模拟。 一般而言不需要设置option的值,取默认值即可。 <)>
其中:
v1... 电流或电压值。
t1... 分段点时间。
R 定义分段重复功能
repeat 定义分段重复的波形起始点
TD 定义实际分段线性开始前的延迟时间的关键字
delay 规定了分段线性的延迟时间
例:V1 1 0 PWL 60N 0V, 120N 0V, 130N 5V, 170N 5V, 180N 0V, R 0N
V2 2 0 PL 0V 60N, 0V 120N, 5V 130N, 5V 170N, 0V 180N, R 60N
其中:
vo: 电压或电流偏移量
va: 电压或电流幅度峰值
freq: 频率,缺省值是1/TSTOP。单位是 Hz
td: 延迟时间,缺省值是 0.0,单位是秒。
θ: 阻尼因子,单位是1/秒,确省值是 0.0。
ϕ: 相位,确省值是 0.0,单位是度。
例:VIN 3 0 SIN(0 1 100MEG 1NS 1e10)
其中:
v1: 电压或电流的初始值
v2: 电压或电流的趋向值
td1: 上升延迟时间,缺省值为 0.0,单位是秒
td2: 下降延迟时间,缺省值为 td1+TSTEP,单位是秒
τ1: 上升时间常数,缺省值为 TSTEP,单位是秒
τ2: 下降时间常数,缺省值为 TSTEP,单位是秒
例:VIN 3 0 EXP(-4 -1 2NS 30NS 60NS 40NS)
其中:
vo 输出电压或电流的偏移量
va 输出电压或电流的幅度
fc 载频,缺省值为1/TSTOP,单位是 Hz
mdi 调制指数,缺省值为 0.0
fs 调制信号频率,缺省值为1/TSTOP,单位是 Hz
例:VIN 7 0 SFFM(0.01 0.4 100MEG 0.3 20k)
一般形式:AM(sa oc fm fc td)
其中:
sa 调制信号幅度,缺省值为 0.0
oc 偏移常数,缺省值为 0.0
fm 调制信号频率,缺省值为1/TSTOP,单位是 Hz
fc 载频,缺省值为 0.0,单位是 Hz
td 信号开始前的延迟时间,确省值为0.0,单位是秒电压电流控制源
线性:EXXX n+ n-
+
多阶: EXXX n+ n-
+ inndim+ inndim-
+
+
分段线性:EXXX n+ n-
+
+
+ x100, y100
多输入门:EXXX n+ n-
+ ink+ ink-
+
+ x1, y1,... x100, y100
延迟元件:EXXX n+ n-
+
线性: FXXX n+ n-
+
+
多阶:FXXX n+ n-
+
+
分段线性:FXXX n+ n-
+
+
多输入门: FXXX n+ n-
+
+
延迟元件: FXXX n+ n-
+
线性:GXXX n+ n-
+
+
多阶:GXXX n+ n-
+
+
+
分段线性:GXXX n+ n-
+
+
+
或:GXXX n+ n-
+
+
+
或:GXXX n+ n-
+
+
+
多输入门:GXXX n+ n-
+ ink+ ink-
+
+
延迟元件:GXXX n+ n-
+
线性: HXXX n+ n-
+
+
多阶: HXXX n+ n-
+ <...vnndim>
+
+
分段线性:HXXX n+ n-
+
+ x1, y1, x2, y2 ... , x100, y100
多输入门:HXXX n+ n-
+
+
+ y100
延迟元件:HXXX n+ n-
+
上述四种控制元件描述语句中的一些主要参数的定义规定如下:
ABS ABS=1,输出是绝对值
DELAY 延迟元件的关键字。这个延迟元件简化了宏模型处理中传播延迟的调整,作为 ESPICE的一个关键字,DELAY 不能用来当作节点名。
DELTA 用来控制分段线性转角的曲率。DELTA 的缺省值是最小转折点距离的1/4,最大值被限制在最小转折点距离的1/2。
GXXX 电压控制电流源名,必须以“G”开头,随后的字符串不得超过15个字符。
FXXX 电流控制电流源名,必须以“F”开头,随后的字符串不得超过15个字符。
EXXX 电压控制电压源名,必须以“E”开头,随后的字符串不得超过15个字符。
HXXX 电流控制电压源名,必须以“H”开头,随后的字符串不得超过15个字符。
gatetype(k) 逻辑门的类型可以是AND,NAND,OR 或 NOR 中的一种,参数(k)代表逻辑门的输入端数目,”x”,”y”表示作为输入函数的输出分段线性变量。在多输入门中,只要一种输入状态就能确定输出的状态。
IC 初始条件,控制电压(电流)初始估算值。如果 IC 没有被赋值,缺省值是 0.0。
in+/- 正或负控制节点
M 元件并联数
MAX 在 VCCS 中是:最大电流或电阻值,不定义缺省值,无最大限制
在 CCCS 中是:最大输出电流值,不定义缺省值,无最大限制
在 VCVS 中是:最大输出电压值,不定义缺省值,无最大限制
在 CCVS 中是:最大电压值,不定义缺省值,无最大限制
MIN 在 VCCS 中是:最小电流或电阻值,不定义缺省值,无最小限制
在 CCCS 中是:最小输出电流值,不定义缺省值,无最小限制
在 VCVS 中是:最小输出电压值,不定义缺省值,无最小限制
在 CCVS 中是:最小电压值,不定义缺省值,无最小限制n+/- 控制源的正负连接节点
NDIM 多阶函数维数, 如果 NDIM 没设置, 则 ESPICE 假定其为一维的。 NDIM
必须是正数。
NPDELAY 延迟模拟中设置的数据点数目
其中 tstep 或 testop 的值在.TRAN 语句中规定
NPWL 建立 NMOS 对称双向开关或传输门模式。
P0,P1... 多阶方程系数。 当规定一个系数时, ESPICE 假定是P1 (P0=0.0)
并且认为元件是线性的,当规定多个系数时,则 ESPICE 用P0,P1,P2...来表示,此时元件是非线性的
POLY 多阶状态关键字。
PWL 分段线性状态关键字。
PPWL 建立 PMOS 对称双向开关或传输门模式。
SCALE 元件倍增数
SMOOTH 选择分段线性中曲线平滑的方法
TC1,TC2 一阶和二阶温度系数,“SCALE”靠温度来刷新:
TD 时间延迟关键字
transconductance 电压(电流)到电流(电压)转换因子
vn1... 控制电流流进的电压源名。
x1...在 VCCS 中是: 通过节点 in+和 in-的控制电压,x值必须是递增次序排列。
在 CCCS 中是: 通过 vn1 源的控制电流,x 值必须是递增次序排列。
在 VCVS 中是: 通过节点 in+和 in-的控制电压,x值必须是递增次序排列。
在 CCVS 中是: 通过 vn1 源的控制电流,x 值必须是递增次序排列。
y1...在 VCCS 中是: 与 x 相应的元件数值
在 CCCS 中是: 与 x 相应的输出电流值
在 VCVS 中是: 与 x 相应的元件数值
在 CCVS 中是: 与 x 相应的输出电压值
最后要提请注意的是,VCCS,CCCS,VCVS,CCVS 在 ESPICE 中代表控制源的关键字,不能用来当作节点名用。3.2.3 半导体器件
+
+
或 DXXX nplus nminus mname
+
或 DXXX nplus nminus mname
+
+
其中:
AERA: 二极管的面积,它定义了饱和电流,电容和电阻值。在 LEVEL=1模型中通过选择 SCALE,可以不受 AREA因子影响。缺省值是1.0。模型 LEVEL=3 还要影响 IK,IKR,JS,CJ0 和 RS 等参数。
DTEMP: 元件温度与电路温度之间的差额,缺省值为0.0
DXXX: 二极管元件名。必须以“D”开头,后面最多跟15个字符。
IC=vd: 若瞬态分析不要求从静态工作点开始,就可规定 IC=vd 为初始条件,注意若选用 IC 选项,则它必须和.TRAN 的 UIC 可选项连用,并且可不必再考虑使用.IC 语句来设置初始条件。
IC=vd 规定二极管两端的初始电压值。
L: 二极管的长度(level3 特有)。
LM: 寄生金属电容的长度(level3 特有),缺省值为0.0。
LP: 寄生多晶电容的长度(level3 特有),缺省值为 0.0
M: 多重二极管模拟时的倍增因子, 其间所有的电流寄生电容和电阻均受影响,缺省值为1。
mname: 二极管模型名,可以是一个最多16 个字符组成的字符串。
nplus/nminus: 二极管的正端(阳极)和负端(阴极),可以是一个最多16 个字符组成的字符串。
OFF: 规定在进行直流分析时使器件所加初始条件为关态, 缺省值为ON。
PJ: PN 结的周长,由W,L 得到,它影响 JSW 和 CJP 等模型参数,缺省值为0.0。
W: 二极管宽度(level3 特有)。
WM: 寄生金属电容的宽度(level3 特有),缺省值为0.0。
WP: 寄生多晶电容的宽度(level3 特有),缺省值为0.0。
例: DBRIDGE 6 7 DIODE 1
DCLMMMP 3 substrate DMOD 3 IC=0.2
+
或 QXXX nc nb ne
+
+
+
其中:
QXXX: 双极型晶体三极管名,必须以“Q”开头,后面最多跟 15个字符的字符串。
nc: 集电极节点
nb: 基极节点
ne: 发射极节点
ns: 衬底节点,这是可选项。可以用模型中的 BULK=节点名来设定。
mname: 模型参考名
aval: 面积(AREA)数值
OFF: 表示在进行直流分析时在器件上不加初始条件,缺省值为ON。
IC=vbeval,vceval: 设置初始 Vbe 和 Vce 值,若选用了此项,则必须和.TRAN
中的 UIC 可选项连用,并可不必再用.IC 语句来设置初始条件。
M: 多重三极管模拟时的倍增因子,其间所有的电流、寄生电容和电阻均受影响,缺省值为1。
DTEMP: 元件温度与电路温度之间的差额,缺省值为0.0。
AREA: 发射区面积倍增因子,它影响电流、寄生电容和电阻值,缺省值为1。
AREB: 基区面积倍增因子,它影响电流、寄生电容和电阻值,缺省值为1。
AREC: 集电区面积倍增因子,它影响电流、寄生电容和电阻值,缺省值为1。
例: Q108 CX BX EX QPNP AREA=1.5 AREAB=2.5 AREAC=3.0
Q26 10 18 12 QMOD IC=0.6, 5.0
Q50A 11 265 4 20 MOD
结型场效应晶体管或MESFET J
一般形式: JXXX nd ng ns
+
或 JXXX nd ng ns mname <| W=val L=val>
+
+
其中:
JXXX: JFET或 MESFET 元件名,必须以“J”开头,后面最多跟 15个字符的字符串。
nb: 衬底节点
nd: 漏极节点
ng: 栅极节点
ns: 源极节点
mname: 与 JFET 或 MESFET 相关的模型参考名
AREA: 面积倍增因子,它影响 BETA、RD、RS、IS、CGS 和 CGD 等模型参数。如果 AREA 没有定义,但 Weff 和 Leff 远大于 0,缺省值是1.0。
W=val, L=val: FET 栅极的宽度和长度。
OFF: 表示在进行直流分析时在器件上不加初始条件,缺省值为ON。
IC=vdsval,vgsval: 设置初始Vds 和 Vgs 值,必须和.TRAN 中的 UIC 选项连用。
M=val: 多重JFET 的倍增因子,它影响电流、寄生电容和电阻值。
DTEMP: 器件相对于电路的温度差异,缺省值为0.0。
例: J6 7 4 2 JM1
jmes x-load gdrive common jmodel
+
+
+
+
或 MXXX nd ng ns
MXXX nd ng ns
其中:
MXXX: MOSFET 元件名,必须以“M”开头,后面最多跟 15 个字符的字符串。
ng, ns, nd: 分别是 MOSFET 的栅、源和漏的节点名。
nb: MOSFET 衬底节点名,它可以通过模型语句中的 BULK 参数来加以定义。
mname: MOSFET 的模型参考名
L: MOSFET 的沟道长度,缺省值为 DEFL。
W: MOSFET的沟道宽度,缺省值为 DEFW。
AD: 漏扩散区面积
AS: 源扩散区面积
PD: 漏结的周长
PS: 源结的周长
NRD: 用以计算漏极寄生串联电阻的漏扩散区等效方块数。
NRS: 用以计算源极寄生串联电阻的源扩散区等效方块数。
RDC: 漏极与连线的接触电阻。
RSC: 源极与连线的接触电阻。
OFF: 表示在进行直流分析时在器件上不加初始条件,缺省值为ON。这个规定不适用于耗尽型器件。
M: 多重 MOSFET 模拟时的倍增因子,这个因子将对 MOSFET 的沟道宽度、二极管反向漏电、结覆盖电容和寄生电阻发生影响,缺省值为1.0。
vbs: MOSFET衬底与源极之间的初始电压。
vds: MOSFET 漏极与源极之间的初始电压。
vgs: MOSFET 栅极与源极之间的初始电压。
DTEMP: 元件温度与电路温度之间的差额,缺省值为 0.0。
GEO: 在ACM=3的情况下源漏分配选择设置。
DELVTO: 零偏压下的阈值电压漂移量,缺省值为 0.0。
例 : M1 24 2 0 20 TYPE1
M31 2 17 6 10 MODM L=0.5U W=2U
M31 2 17 6 10 MODM 0.5U 2U3.3 子电路语句 .SUBCKT 或.MACRO
或 .MACRO subnam n1
其中:
subnam 是子电路参考名
n1… 是子电路外部参考节点,它们不能为零(地节点)。
子电路定义中的任何节点是局部变量,只有下述三种节点情况例外 :
1.接地点 (节点为 0 )
2.在 MOSFET 或 BJT 模型中用 BLUK 定义 的节点号
3.由 .GLOBAL 语句定义的节点号
所以子电路定义中的节点号、器件名、MODEL 的说明可以和外部的相同,而不会冲突 。
parnam : 用来设置子电路中用到的参数值。
或 .EOM < SUBNAM >
该语句一定是子电路定义的最后一个语句。SUBNAM 代表该子电路名。如果
该语句后有子电路名, 则表示该子电路定义结束, 若无子电路名, 则表示 .ENDS
或 .EOM 之前的所有子电路定义都结束。子电路名只有在子电路定义嵌套时才
需要写在 .ENDS 或 .EOM 语句中。
例:.SUBCKT INV SIGIN VCC GND SIGOUT W1=20U
M1 SIGOUT SIGIN VCC VCC PCH L = 1U W = W1
M2 SIGOUT SIGIN 0 0 NCH L = 1U W = W1
.ENDS
一般形式: Xyyy n1 < n2 n3 . . . > subnam < parnam=val . . . >
其中:
XYYY 子电路元件名,必须以”X”开头,后面最多跟 15 个 字符的字符串
n1... 子电路调用节点号
subnam 子电路参考名
parnam 用来设置子电路中用到的参数值
M 子电路并联使用时的倍增因子.
由于子电路本身的外节点号是局部的,所以和子电路调用的节点号无关,
但电路节点号的顺序必须和 .SUBCKT 语句中定义的顺序一致。
例:Xinv IN VCC 0 OUT INV3.4 模型描述语句 .MODEL
.MODEL mname type < pname1=val1 pname2=val2 . . . >
其中:
mname 模型参考名,元件必须靠这个名字来指明所要参考的模型。
type 用来选择模型类型,模型类型必须是下列类型中的一种:
AMP: 运算放大器模型
C: 电容模型
CORE: 磁芯模型
D: 二极管模型
L: 磁芯互感模型
NJF: n 沟 JFET 模型
NMOS: n 沟 MOSFET 模型
NPN: npn 双极型晶体管模型
PJF: p 沟 JFET 模型
PMOS: p 沟 MOSFET 模型
PNP: pnp 双极型晶体管模型
R : 电阻器模型
pname1… 用来设置模型参数名。模型参数名必须是相应模型中存在的参数,未给定的参数名和值就由程序中的缺省值代替。模型参数值由圆括号内参数表中的参 数值给出。每个独立参数之间用空格或逗号分隔,续行前要加”+”号。
例: .MODEL MOD1 NPN BF = 50 IS = 1E-13 VBF = 50 AREA = 2
+ PJ = 3 N = 1.053.5 库文件调用及定义语句 .LIB语句
进行描述或定义。 ESPICE 软件允许将器件模型(.MODEL 语句)、 子电路的定义(包含.ENDS 语句)、有关注释语句及库文件调用语句(.LIB 语句)等集中存放到库文件中,而在调用所要使用的模型和子电路时,仅需要将所要的模型、子电路等内容取出进入存储器即可,这样速度快、占内存少。ESPICE 中一个读取库文件的执行过程直到遇到.ENDL 语句才结束。所以库文件给电路模拟带来极大方便。
其中:
filepath 指明库文件所在的路径,当库文件与ESPICE运行在一目录下,则可缺省目录路径。“../”表示当前目录的 上一级目录。
filename 包含在数据文件的文件名,所有文件目录路径和文件名组合最长不超过 256 个字符。文件目录路径和文件 名必须包含在单引号或双引号中。
entryname 进入文件的类型名,这个名字的第一个字符不能是一个整数。
例: .LIB ′MODELS ′ cmos1
.LIB ′../sum/MODELS ′ cmos1
宏模块库建立的规定:
1. .ALTER 语句不能包含在库中
2. 一个库可以嵌套自身可供调用的库或其它可供调用的库
3. 一个库中不能嵌套与它有同样库类型进入识别名的同一库文件
4. 库文件中不能包含 END 语句
5. 在用 .INCLUDE 语句调用 .LIB 语句期间是不能再用 .ALTER语句来进行运行处理3.6 文件调用语句 .INCLUDE
一般形式: .INCLUDE
第四章 电路分析
敏度分析、小信号输出函数分析等);交流分析(交流小信号分析、小信号失真分析、交流噪声分析等);瞬态分析及蒙特卡罗(Monte Carlo)分析、温度特性等分析。4.1 直流分析
4.1.1 直流工作点分析
其中:
ALL 提供全部工作点值,包括电压、电流、电导和电容等值。
BRIEF 每一个元件都产生一行电压、电流和功率值,电流单位是 mA ,功率单位是 mw。
CURRENT 提供一种带有元件电流和功率的电压表格样式的简明结果。
DEBUG 此参数同上只有在模拟结果不收敛的情况下才由程序来调用。并能调整打印出收敛节点的新、老电压以及不收敛的程度(容差),它也能打印出带容差值的不收敛元件。
NOTE 禁止节点和元件打印输出,但允许执行时附加分析规定 。
VOLTAGE 仅提供电压输出表格形式。
对上述关键字有一点值得特别注意,这些关键字互相不兼容,同一时间只能用一个关键字定义。
time 这个参数直接跟在 All、Voltage、Current 或DEBUG等参数后面 ,用来确定这些参数值输出打印的时间 。
例 :.OP .5NS CUR 10NS VOL 17.5NS 20NS 25NS
例中计算了直流工作点,并要求在 0.5ns 时打印出所有直流工作点值,此外电流在10 ns,电压在17.5 ns、20ns 以及 25 ns 时进行瞬态分析。4.1.2 直流扫描分析 .DC
析中,.DC 语句可进行
a. 直流参数值扫描
b. 电源值扫描
c. 温度范围扫描
d. 执行直流蒙特卡罗分析(随机扫描)
.DC 语句具体格式取决于实际应用需要,下面给出了一些应用格式:
(1)直流扫描或直流参数化扫描
.DC var1 START=start1 STOP=stop1 STEP=incr1
或 .DC var1 START=
+ STEP=< param-expr3>
或 .DC var1 start1 stop1 incr1
.DC var1 start1 stop1 incr1 < var2 start2 stop2 incr2>
(3)蒙特卡罗分析
.DC var1 type np start1 stop1
或 .DC MONTE=val
例:.DC VIN 0.25 5.0 0.25
.DC VDS 0 10 0.5 VGS 0 5 1
.DC TEMP -55 125 10
.DC xval 1k 10k .5k SWEEP TEMP LIN 5 25 1254.1.3 直流灵敏度分析.SENS
一般形式:.SENS ov1
其中:
ov1 ov2 代表直流灵敏度分析中的分支电流或节点电压。
例:SENS V(9) V(4,3) V(17) I(Vcc)4.2 交流分析
4.2.1 交流小信号分析 .AC
ESPICE 允许电阻有不同的直流和交流值。若在电阻描述语句中定义了AC=
交流分析允许对下述参数进行扫描分析:
(a)频率
(b)分量
(c)温度
(d)模型参数
(e)随机分布(蒙特卡罗分析)
单/双扫描
.AC type np fstart fstop
或 .AC type np fstart fstop
或 .AC type np fstart fstop
或 .AC var1 START=
或 .AC var1 START=start1 STOP=stop1 STEP=incr1
随机/蒙特卡罗分析:
.AC type np fstart fstop
其中:
incr 代表电压、电流、分量或模型参数增量。值得注意的是,若 “type”变量在语句中被设置,则“np”值将替代“incr”值。
fstart 表示起始频率。
fstop 表示中止频率。 如果“POI”变量在语句中被设置,则一个频率值表将替代“fstart”和 “stop”设置
MONTE=val 表示一个随机产生数,用来从某一分布选择参数,这个分 布可以是高斯分布、均匀分布或者是随机范围分布。
np 以十进制或倍频程变化的点的数目,也可以是代表关键字的数字。
start 起始电压、电流、任何分量或模型参数值。
stop 中止电压、电流、任何分量或模型参数值。
SWEEP 表示在.AC语句中第二个扫描的关键字。
TEMP 表示进行温度扫描的关键字。
type 可以用下列任何一个关键字表明的扫描类型:
DEC 十进制变量(变量按十个一组的数量级变化进行扫描)
OCT 倍频程变量(变量按倍频程规律变化进行扫描
LIN 线性变量(变量按线性规律变化进行扫描)
POI 参数点表(按所列参数点表进行扫描)
var 可以是独立电压源或电流源名、任何分量或模型的参数,也可以是用来表明温度扫描的关键字”TEMP”。
例子:
.AC DEC 10 1K 100MEG
.AC LIN 100 1 100HZ
.AC DEC 10 1 10K SWEEP rx POI 2 5k 15k4.2.2 交流噪声分析 .NOISE
一般形式:.NOISE ovv srcnam inter
其中:
ovv 是指定节点总的噪声输出电压
srcnam 是作为噪声输入基准的独立电压源或独立电流源。
inter 打印噪声分析结果的频率间隔,一般这个频率就是进行交流扫描的频率。如果这个参数省略或置零就不打印噪声分析结果输出一览表;如果这个参数置 1或大于1,则以所设置数为第一个打印频率,并以此为增量打印出噪声分析结果。
例:.NOISE V(5) VIN 104.2.3 零极点分析.PZ
其中:
PZ 表示进行极/零点分析
input 表示输入源,可以是任何独立电压或电流源名
output 代表输出变量,可以是任何节点电压 V(n)或支路电流I(elementname)
例: .PZ V(10) VIN
.PZ I(RL) ISORC
.PZ L1(M1) VSRC
使用espice执行此分析时,会将结果打印至logfile中。4.3 瞬态分析
4.3.1 瞬态分析 .TRAN
.TRAN TSTEP TSTOP
TSTEP是行打印机输出的打印或作图的增量,亦即瞬态分析的步长。
TSTOP 是终止时间, TSTART 是初始时间, 如果省去 TSTART, ESPICE用缺省值0.0。瞬态分析总是从时间为零开始,在时间为零到 TSTART 的时间间隔内,瞬态电路分析仍进行(为了达到一个稳态),但没有输出,而且瞬态分析值没有存储起来。在 TSTART 和 TSTOP 间隔内进行的计算才被存储并输出。
(1)单点分析
.TRAN var1 START=start1 STOP=stop1 STEP=incr1
.TRAN var1 START=
+ STEP=
(2)双点分析:
.TRAN var1 START=start1 STOP=stop1 STEP=incr1
+
.TRAN tincr1 tstop1
+
(3)参数化扫描:
.TRAN tincr1 tstop1
+
(4)数据驱动扫描:
.TRAN DATA=datanm
.TRAN var1 START=start1 STOP=stop1 STEP=incr1
+
.TRAN DATA=datanm
(5)蒙特卡罗:
.TRAN tincr1 tstop1
+
其中 :
MONTE=val 表示一个随机产生数,用来从某一分布选择参数,这个
分布可以是高斯分布、均匀分布或者随机范围分布。
np 以十进制或倍频程变化的点的数目,也可以是代表上述
关键字的数字
param_exp... 用户规定的表达式,例如:param_exp1...param_expN
pincr 表示电压、电流、分量或模型参数及温度的增量。
值得注意的是:若“type”变量在语句中被设置,则“np”值将代替“pincr”值
pstart 起始电压、电流、温度、任何分量或模型参数指。
pstop 终止电压、电流、温度、任何分量或模型参数值。
如果“POI”变量在语句中被设置,则一个参数值表将代“pstart”和“pstop”设置
START 打印或绘图开始时间。
SWEEP 在 .TRAN 语句中被用来规定第二次扫描的关键字。
tincr1... 打印机上打印或绘图点增量的设置。
tstop1... 瞬态分析终止时间。
type 可以用下列任何一个关键字表明分析类型
DEC 十进制变量 (变量按十个一组的数量级变化进行分
析)
OCT 倍频程变量 (变量按倍频程规律变化进行分析)
LIN 线性变量 (变量按线性规律变化进行分析)
POI 参数点表 (按所列参数点表进行分析)
UIC 在 .TRAN 语句中设置了 UIC 参数后,ESPICE进行瞬态分析时用 .IC 语句或各分量中“IC=”参数所规定的值作为 其初始条件(节点电压),而不用静态工作点作为初始条件
var 可以是独立电压源或电流源名,任何分量或模型的参数,也可以是用来表明温度扫描的关键字“TEMP”
例:
.TRAN 1NS 100NS
步进为1ns,结束时间为100ns。
.TRAN .1NS 25NS 1NS 40NS START=10NS
从0到25ns步进为0.1ns,接下来直到40ns步进为1ns,从10ns开始打印
.TRAN 10NS 1US UIC
使用.IC设置的初始值作为分析条件
.TRAN 10NS 1US SWEEP load POI 3 1pF 5pF 10pF
参数扫描三个值4.3.2 傅里叶分析 .FOUR
.FOUR freq ov1 [ov2 ov3 ...]
其中:
Freq Fundamental frequency 基频
ov1 ... Output variables to analyze 输出变量
例:.FOUR 100K V(5)
使用espice执行此分析时,会将结果打印至logfile中。4.4 初始状态设置 .IC
初始状态的设置除了在元器件描述语句中使用的 IC=…以外,还可用 .IC和 .DCVOLT 及 .NODESET语句来实现。
一般形式: .IC V(node1) = val1 V(node2)= val2 ...
或 .DCVOLT V(node1) = val1 V(node2) = val2...
其 中:
val1... 是设置的电压值,这些电压值的应用取决.TRAN语句中是否规 定了 UIC 参数
node1... 节点号或节点名
例: .IC V(11) = 5 v(4) = -5 V(2) = 2.2
.DCVOLT 11 5 4 -5 2 2.2
节点电压设置语句.NODESET
.NODESET 语句是用来帮助直流解的收敛,并不影响最后得到的工作点(对多稳态电路除外)。一旦由该语句在指定的节点上给出了规定的电压后,ESPICE先按这些节点电压来求解直流工作点,在解收敛后就去掉这些约束条件继续选代,直到算得真正的解为止。所以,.NODESET 语句提供了节点电压的“猜测值”。此语句对双稳态或非稳态电路的直流计算收敛可能是必须的, 它可以使电路摆脱“停顿”状态,而进入所希望的状态。在模拟过程中NODESET 电压仅被用在第一步迭代中。
一般形式:.NODESET V(node1) = val1
或 .NODESET node1 val1
其中:
node1:节点名或节点号
例:.NODESET V (5: SETX) = 3.5v V(X1.X2.VINT) = 1v
.NODESET V (12) = 4.5 V(4) = 2.23
.NODESET 12 4.5 4 2.33 1 1
在初始条件的设置中共有三种形式:IC = ...、.IC 和.NODESET。在电路模
拟中,若有这三种或三种语句共存时,ESPICE 进行电路特性分析时优先考虑的
次序是(1) IC = ... (2) .IC (3) .NODESET。如.IC 语句和.NODESET 语句共存
时,.IC语句将取代.NODESET语句。4.5 参数变化分析
4.5.1 参数定义 .PARAM
值, 这特别适合要调用不同参数进行模拟以及统计分析 (蒙特卡罗分析) 等场合。
因为.PARAM语句中可写入一个函数分布或参数表。
一般形式: .PARAM xx=UNIF(nominal_val , rel_variation <,multiplier>)
或 .PARAM xx=AUNIF(nominal_val , abs_variation <,multiplier>)
或 .PARAM xx=GAUSS(nominal_val , rel_variation , sigma <,multiplier>)
或 .PARAM xx=AGAUSS(nominal_val , abs_variation ,sigma <,multiplier>)
或 .PARAM xx=AUNIF(nominal_val , abs_variation)
其中:
xx 用分布函数计算的参数
UNIF 用相对变量的均匀分布函数
AUNIF 用绝对变量的均匀分布函数
GAUSS 用相对变量的高斯分布函数
AGAUSS 用绝对变量的高斯分布函数
LIMIT 用绝对变量的随机范围分布函数,这个范围是比0大1或小 1的随机结果
nominal_val 适用所有分析的蒙特卡罗分析和缺省值的正常值。
abs_variation 在AUNIF和AGAUSS 分布中正常值改变+/-绝对值变量而到 的分布
rel_variation 在UNIF和GAUSS分布的正常值上改变+/-
sigma 规定的统计分布图。
multiplier 计算重复的次数,缺省值是14.5.2 参数扫描 SWEEP
4.5.3 蒙特卡罗分析
蒙特卡罗分析法是在给定电路中各元件容差范围内的分布规律, 然后用一组组的随机数对各元件取值,并确立了如下的分布规律:
(1)高斯参数分布
(2)均匀参数分布
(3)随机范围参数分布。
蒙特卡罗分析在电路模拟中是否进行由.DC、.AC、.TRAN 等分析语句中的关键字 MONTE 来决定。
下面给出了一些实际应用中的一般形式:
(1)直流工作分析:
.DC MONTE=val
(2)直流扫描分析:
.DC vin 15 .25 SWEEP MONTE=val
(3)交流扫描分析:
.AC dec 10 100 10meg SWEEP MONTE=val
(4)瞬态扫描分析:
.TRAN 1n 10n SWEEP MONTE=val4.5.4 温度扫描分析 .TEMP
其中: t1 t2 …为电路模拟时设定的温度值,ESPICE 对每一个设定的温度值都做一遍模拟。第五章 控制语句
5.1 输出语句
5.1.1 打印语句 .PRINT
其中:
antype: 是用户规定的输出分析类型: DC 、AC、TRAN 等
ov1… 要被打印的输出变量。
例: .PRINT TRAN V(4) I(VIN) PAR(`V(OUT)/V(IN)')
注意:espice的.PRINT语句不能输出包含二重扫描的结果。5.1.2 探针显示语句 .PROBE
其中:
antype 是要进行绘图的分析类型,这些类型可以是 DC、AC、TRAN、NOISE中的一种。
ov1… 绘图输出的变量。
例: .PROBE DC V(4) V(5) V(1) beta=PAR('I1(Q1)/I2(Q1)')
.PROBE DC Vth(M1) gm(M5) Cgs(M1)
注意:espice的.PROBE语句不能输出包含表达式的二维扫描结果。5.2 输入条件控制语句 .ALTER
.ALTER 语句中不能包含.PRINT或其它任何 I/O 语句,但可以包含所有用于分析的语句,如.DC、.AC、.OP、.TRAN、.PZ、.TF等。
.ALTER语句一般放在网表最后。
例:
1、
V1 1 0 1
.alter
V1 1 0 2
2、
.lib model.lib tt
.alter
.lib model.lib ss5.3控制选项 .option
你可能感兴趣的:(数字集成电路设计,模拟集成电路设计)