首页资源分类IC设计及制造 > Hspice中文教程

Hspice中文教程

已有 445176个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:Hspice

    分    享:

    文档简介

    Hspice中文教程

    文档预览

    第一章 概 论 §1.1 HSPICE 简介 随着微电子技术的迅速发展以及集成电路规模不断提高,对电路性能的设计 要求越来越严格,这势必对用于大规模集成电路设计的 EDA 工具提出越来越高的 要求。自 1972 年美国加利福尼亚大学柏克莱分校电机工程和计算机科学系开发 的用于集成电路性能分析的电路模拟程序 SPICE(Simulation Program with IC Emphasis)诞生以来,为适应现代微电子工业的发展,各种用于集成电路设计的 电路模拟分析工具不断涌现。HSPICE 是 Meta-Software 公司为集成电路设计中 的稳态分析,瞬态分析和频域分析等电路性能的模拟分析而开发的一个商业化通 用电路模拟程序,它在柏克莱的 SPICE(1972 年推出),MicroSim 公司的 PSPICE (1984 年推出)以及其它电路分析软件的基础上,又加入了一些新的功能,经 过不断的改进,目前已被许多公司、大学和研究开发机构广泛应用。HSPICE 可 与许多主要的 EDA 设计工具,诸如 Candence,Workview 等兼容,能提供许多重要 的针对集成电路性能的电路仿真和设计结果。采用 HSPICE 软件可以在直流到高 于 100MHz 的微波频率范围内对电路作精确的仿真、分析和优化。在实际应用中, HSPICE 能提供关键性的电路模拟和设计方案,并且应用 HSPICE 进行电路模拟时, 其电路规模仅取决于用户计算机的实际存储器容量。 §1.2 HSPICE 的特点与结构 HSPICE 除了具备绝大多数 SPICE 特性外,还具有许多新的特点,主要有: ! 优越的收敛性 ! 精确的模型参数,包括许多 Foundry 模型参数 ! 层次式节点命名和参考 ! 基于模型和库单元的电路优化,逐项或同时进行 AC,DC 和瞬态分析中的 优化 ! 具备蒙特卡罗(Monte Carlo)和最坏情况(worst-case)分析 ! 对于参数化单元的输入、出和行为代数化 ! 具备较高级逻辑模拟标准库的单元特性描述工具 ! 对于 PCB、多芯片系统、封装以及 IC 技术中连线间的几何损耗加以模拟 在 HSPICE 中电路的分析类型及其内部建模情况如图 1.2.1 和图 1.2.2 所示: 1 图 1.2.1HSPICE 的电路分析类型 图 1.2.2 HSPICE 的内部建模技术 集成电路设计中的分析和验证是一种典型的围绕一系列结构的试验和数据 管理。在电路性能分析中,一般都要在不同应用条件下,根据需要加入各种容差 和限制后进行直流分析(.DC)、交流分析(.AC)和瞬态分析(.TRAN)。HSPICE 模拟时的程序结构如图 1.2.3 所示 2 图 1.2.3 HSPICE 模拟时的程序结构 HSPICE 能够通过不同的源文件去访问各种输入和模拟控制信息,并绘制和 输出有关节点的分析曲线和结果。图 1.2.4 表示了 HSPICE 模拟过程中各数据的 状态。 图 1.2.4 HSPICE 模拟过程各数据状态 3 §1.3 HSPICE 的输入与输出文件 HSPICE 根据输入网表(netlist)文件运算并产生仿真结果,仿真结果存储 在输出列表文件或图形数据文件之中。 HSPICE 读或写的文件都与当前的电路设计有关,而且都采用电路设计名作 为前缀。一般情况下,与一个设计有关的所有文件都存放在同一目录下面。 一.文件名的后缀 1.HSPICE 输入文件 配制文件 初始化文件 直流工作点初始化文件 输入网表文件 库输入文件 模拟转移数据文件 meta.cfg hspice.ini .ic .sp .d2a 2.HSPICE 输出文件 输出列表 .lis 或由用户自己定义 瞬态分析结果 .tr#+ 瞬态分析测量结果 .mt# 直流分析结果 .sw#+ 直流分析测量结果 .ms# 交流分析结果 .ac#+ 交流分析测量结果 .ma# 硬拷贝图形数据 .gr#++ 数字输出 .a2d FFT 分析图形数据 .ft#++ 子电路交叉列表 .pa# 输出状态 .st# 工作点节点电压(初始条件) .ic # :代表扫描分析序号或者硬拷贝文件序号,一般从 0 开始。 +:表示在用.POST 语句产生图形数据后该文件才被确立。 ++:表示该文件需要一个.GRAPH 语句或有一个针对 meta.cfg 文件中存在的 文件的地址计数器。该文件在 HSPICE 的 PC 版中不产生。 +++:表示只有当应用了.FFT 语句后该文件才被确立。 二. 输入网表文件 4 输入网表文件和库输入文件能够由一个线路网表转换器或用一个文本编 辑器产生。 1.写输入网表文件的规则 输入网表文件的第一个语句必须是标题行,最后一个语句必须是.END 语 句,它们之间的语句次序是随意的,除非是续行(行首有“+”的行)必须 接在要接下去的行后面,最后值得注意的是.ALTER 子模块必须紧跟文件的 结尾并出现在.END 语句前。注释行可加在文件中的任何地方。 2. 输入文件的编辑 (a)HSPICE 采用自由格式输入。语句中的域由一个或多个空格,一个 Tab,一个逗号, 一个等号或一个左/右圆括号分开。 (b)除 UNIX 系统中的文件名外,不予区分大写或小写字母。 (c)每行语句长度限于 80 个字符以下。 (d)一个语句如在一行写不下,可以用续号继续下去。续行以“+”作为 第一个非数值、非空格字符。 (e)输入网表文件不能被“打包”,也不能被压缩。 (f)输入网表文件中不要采用特殊的控制字符。 三. 输出列表文件 电路模拟运行的结果和输入网表都被放入输出列表文件。输出列表文件被 自动地取与指定的输入列表文件相同的前缀,不同的仅是带有“.lis”后缀。 如输入列表文件为 netlist.sp,则输出列表文件为 netlist.lis。 输出列表文件包含了由输入列表文件中的.PLOT、.PRINT 以及分析语句指定 的模拟结果。例如输入列表文件包含了多于一次的模拟运行(通过采 用.ALTER、.INCLUDE、.DATA 等语句),输出列表文件中也包含了每一次模拟 运行的结果。 四. 数值比例因子 HSPICE 中的数值可以是整形数、浮点数。一个整形数或浮点数后跟随一 个整形指数(如 1e-14,2.65e3,但不能是 1e-3pf)或者一个整形数或浮点数后跟 随一个以下列出的数值比例因子: MI=25.4E-6 FT=.305 DB=20lg10 F=1e-15 P=1e-12 N=1e-9 U=1e-6 M=1e-3 T=1e12 G=1e9 MEG=X=1e6 K=1e3 5 图 1.3.1 显示了 HSPICE 的模拟流程。 图 1.3.1 HSPICE 模拟流程 第二章 电路的描述语句 本章介绍 HSPICE 的一些主要描述电路的语句。用这些语句对电路模拟的标 题,电路的连接方式即拓扑信息,构成电路的元件、器件、电源等的属性、参数、 模型、所加的注释、电路模拟结束等进行描述。 §2.1 输入描述语句和规定 在输入的电路描述语句中输入的第一条语句是标题语句,最后一条语句必须 是结束语句。 一. 标题语句(.TITLE 语句) 6 一般形式:.TITLE 例:POWER AMPLIFIER CIRCUIT TEST 若用户不需要标题,则第一行必须空出,否则第一行的其它 HSPICE 语句被 作为标题行,而不被执行。 二. 结束语句(.END) 一般形式:.END 注意“.”不能少,它是结束语句整体的一部分。若一个 HSPICE 输入文件包含 有几个 HSPICE 的运行,则每一个 HSPICE 运行的最后都要加上.END 语句。 例 MOS OUTPUT .OPTIONS NODE NOPAGE VDS 3 0 VGS2 0 M1 1 2 0 0 MOD1 L=4U W=6U AD=10P AS=10P .MODEL MOD1 NMOS VTO=-2 NSUB=1.0E15 TOX=1000 UO=550 VIDS 3 1 .DC VDS 0 10 0.5 VGS 0 5 1 .PRINT DC I(M1) V(2) .END MOS OUTPUT MOS CAPS .OPTION SCALE=1U SCALM=1U WL ACCT .OP .TRAN .1 6 V1 1 0 PWL 0 -1.5V 6 4.5V V2 2 0 1.5VOLTS MODN1 2 1 0 0 M 10 3 M2 .MODEL M NOS VTO=1 NSUB=1E15 TOX=1000 + UO=800 LEVEL=1 CAPOP=2 .PLOT TRAN V(1) (0,5) LX18(M1) LX19(M1) + LX20(M1) (0,6E-13) .END MOS CAPS 三. .GLOBAL 语句 一般形式:.GLOBAL node1 node2 node3… node1… Global nodes, such as supply and clock names, override local subcircuit definitions 输入文件若定义了.GLOBAL 语句,则输入文件所有子电路中与.GLOBAL 节点 名相同的节点将都被自动定义成有连接关系。一般线路的电源、地被定义 成.GLOBAL 语句。 四. 注释语句 是用户对程序运算和分析时加以说明的语句。在列出输入程序时会打印出 来,但不参与模拟分析。该语句可放在输入文件标题语句以后的任意位置加以注 7 释。 一般形式:* $ §2.2 元件描述语句 元件语句一般由元件名、元件所连接的电路节点号和元件参数值组成。元件 在输入中以一行表示,该行不能以“.”开始。语句中的第一个字母是关键字,它 确定了该元件的类型。 一 般 形 式 : elname 或 elname 其中: elname: 元件名,是一个带有一个关键字母的不超过 15 个字符的 字符串。 HSPICE 中表示元件的关键字母的含义: C-电容 K-耦合互感 L-电感 R-电阻 T-无损耗传输线 U-有损耗传输线 node1... 节点名,用来说明元件所连接的节点,节点名的第一个 字符必须是字母,整个字符串不超过 16 个字符(连第一个 字母在内)。=()′. ′[ ]等符号不能出现在节点名中。 mname: 模型参考名,对除了无源器件外所有元件都是必需的。 pname1... 元件参数名,用来标明一些元件的参数值。 val1... 赋于的参数值或模型节点,这些数值可以是数值,也可以 是代数表达式。 M=val 元件的倍增因子。 一. 电阻 一般形式:RXXX n1 n2 Rval> + + 或 RXXX n1 n2 R=val + + 或 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 是温 度系数,其缺省值是零。 8 二. 电容和电感 (1) 电容: 一般形式: + + 或 + + 或 CXXX n1 n2 capval > CXXX n1 n2 C=val CXXX n1 n2 C=equation CTYPE=0 or 1 例: C1 3 2 10U IC=3V CBYP 13 0 1UF C2 1 2 CMOD 6PF 若系统中所用电容是非线性的,则其一般形式是: CXXX n1 n2 POLY C0 C1 C2 ... 电容值=C0+C1*V+C2*V**2+… (2) 电感: 一般形式:LXXX n1 n2 Lval > + 或 LXXX n1 n2 L=val + 或 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 ... 电感值=L0+L1*i+L2*i**2+… 在非线性电容和电感的表达式中,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 9 四. 无损耗和有损耗传输线 (1) 无损耗传输线: 一般形式: TXXX in refin out refout Z0=val TD=val + 或 TXXX in refin out refout Z0=val F=val + 或 TXXX in refin out refout mname L=val 传输线是一个双向的理想延迟线,有两个端口,in 和 refin 是端口 1 的(+) 和(-)节点;out 和 refout 分别是端口 2 的(+)和(-)节点。Z0 是特征 阻抗。传输线长度可用三种形式表示:一种是由传输线的延迟 TD 确定的,例如: TD=10NS;另一种是给出一个频率 F 和参数 NL 来确定,NL 是在频率为 F 时相对 于传输线波长归一化的传输线电学长度。若规定了 F 而未给出 NL,则认为 NL= 0.25(即频率为 1/4 波长的频率,F 为二次谐波频率);第三种是直接用传输线长 度来表示。IC 规定了传输线每个端口的初始电压和初始电流。 例: T1 1 0 2 0 Z0=50 TD=10NS T2 1 2 3 4 Z0=120 F=1.5MHZ T3 1 3 4 6 Z0=200 F=4.5MHZ NL=0.5 (2) 均匀分布的 RC 传输线(有损耗传输线) 一般形式:UXXX N1 N2 N3 MNAME L=LEN N1 和 N2 是 RC 传输线连接的两个元件节点,N3 是连接到电容的节点,MNAME 是模型名称。LEN 是 RC 传输线长度(单位是米),LUMPS 如果给定,它用于模拟 RC 传输线中所采用的集总分段数目(the number of lumped segments)。 例: U1 1 5 0 URCMOD L=50U URC2 1 10 4 UMOPL L=100U N=4 §2.3 电源描述语句 HSPICE 中提供了一些供激励用的独立源和受控源。电源描述语句也由代表 电源名称的关键字、连接情况和有关参数值组成。描述电源的关键字含义为: V: 独立电压源 I: 独立电流源 E: 电压控制电压源 F: 电流控制电流源 G: 电压控制电流源 H: 电流控制电压源 一. 独立电压源 V 和独立电流源 I 一般形式:VXXX n+ n- <<DC=>dcval> <tranfun > + <AC=acmag,<acphase>> 或 IYYY n+ n- <<DC=>dcval> <tranfun > + <AC= acmag,<acphase>> 其中: 10 VXXX: 独立电压源名。必须以“V”开始,后面字符串不得超过 15 个字符。 IYYY: 独立电流源名。必须以“I”开始,后面字符串不得超过 15 个字符。 n+/n-: 电源的正负节点,电流源的电流正方向是使电流从 n+节点流 出,经过电流源流入 n-节点。正的电压源是使电流从 n+节 点流出,通过电压源流入 n-节点。注意电源不必接地。若将 零值的电压源接到电路某支路中,这样可得到流经该支路的 电流值。零值电压源就是短路线,所以不影响电路的工作。 DC: 电源直流值 tranfun: 电源的瞬态功能 AC: 表示电源用来作交流小信号分析 acmag: 交流幅度 acphase: 交流初相位(缺省值为 0.0) M: 电流源并联数(缺省值为 1.0) 基于上面的语句格式,HSPICE 规定有七种独立电源: 1. 直流源 一般形式:VXXX n+ n- <dcval> IXXX n+ n- <dcval> 例 V1 2 0 DC=5v V1 2 0 5v I1 3 0 DC=3mA I2 3 0 3mA 2. 交流源 一般形式: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。 3. 脉冲源 一般形式:PULSE <(> V1 V2 >>> <)> 或: PU <(> >>> <)> 其中: V1: 脉冲源开始前的初始值 V2: 脉动值 td: 第一个脉冲开始前的延迟时间,缺省值为 0.0 tr: 脉冲上升时间,缺省值为 TSTEP tf: 脉冲下降时间,缺省值为 TSTEP 11 pw: 脉冲宽度,缺省值为 TSTEP per: 脉冲周期,缺省值为 TSTEP 图 2.3.1 脉冲源示意图 例: VIN 3 0 PULSE (-1 1 2ns 2ns 2ns 50ns 100ns) V1 99 0 PU lv hv tdlay tris tfall tpw tper 上述第二个例子中将用.PARAM 语句中的参数来定义此脉冲源的相关值。 4. 正弦源(调幅正弦信号) 一般形式:SIN <(> vo va >>> <)> 其中: vo: 电压或电流偏移量 va: 电压或电流幅度峰值 freq: 频率,缺省值是 1/TSTOP。单位是 Hz td: 延迟时间,缺省值是 0.0,单位是秒。 θ: 阻尼因子,单位是 1/秒,确省值是 0.0。 ϕ: 相位,确省值是 0.0,单位是度。 例:VIN 3 0 SIN(0 1 100MEG 1NS 1e10) 12 图 2.3.2 正弦源示意图 5. 指数源: 一般形式: EXP<(> v1 v2 >>> <)> 其中: v1: 电压或电流的初始值 v2: 电压或电流的趋向值 td1: 上升延迟时间,缺省值为 0.0,单位是秒 td2: 下降延迟时间,缺省值为 td1+TSTEP,单位是秒 τ1: 上升时间常数,缺省值为 TSTEP,单位是秒 τ2: 下降时间常数,缺省值为 TSTEP,单位是秒 图 2.3.3 指数源示意图 13 例:VIN 3 0 EXP(-4 -1 2NS 30NS 60NS 40NS) 6. 分段线性源: 一般形式: PWL <(> t1 v1 > <)> 其中: v1... 电流或电压值。 t1... 分段点时间。 R 定义分段重复功能 repeat 定义分段重复的波形起始点 TD 定义实际分段线性开始前的延迟时间的关键字 delay 规定了分段线性的延迟时间 下面举一个应用分段线性源的实例: *FILE: PWL.SP THE REPEATED PIECEWISE LINEAR SOURCE *ILLUSTRATION OF THE USE OF THE REPEAT FUNCTION “R” .file pwl.sp REPEATED PIECEWISE LINEAR SOURCE .OPTION POST .TRAN 5N 500N V1 1 0 PWL 60N 0V, 120N 0V, 130N 5V, 170N 5V, 180N 0V, R 0N R1 1 0 1 V2 2 0 PL 0V 60N, 0V 120N, 5V 130N, 5V 170N, 0V 180N, R 60N R2 2 0 1 .END 图 2.3.4 上述实例中分段线性源示意图 PWL 形式是分段线性源。每一对值(ti,vi)确定了在时间 TIME=ti 时分段 14 线性源的值 vi,从而确定了波形的一个拐点,中间时间的源值可用线性插值 方法确定。 7. 单频调频源: 一般形式:SFFM <(> vo va >> <)> 其中: vo 输出电压或电流的偏移量 va 输出电压或电流的幅度 fc 载频,缺省值为 1/TSTOP,单位是 Hz mdi 调制指数,缺省值为 0.0 fs 调制信号频率,缺省值为 1/TSTOP,单位是 Hz 波形由下式决定: sourcevalue=vo+va*SIN[2*π*fc*Time+mdi*SIN(2*π*fs*Time)] 图 2.3.5 单频调频源示意图 例:VIN 7 0 SFFM(0.01 0.4 100MEG 0.3 20k) 8. 单频调幅源: 一般形式:AM(sa oc fm fc td) 其中: sa 调制信号幅度,缺省值为 0.0 oc 偏移常数,缺省值为 0.0 fm 调制信号频率,缺省值为 1/TSTOP,单位是 Hz fc 载频,缺省值为 0.0,单位是 Hz td 信号开始前的延迟时间,确省值为 0.0,单位是秒 15 波形由下式决定: sourcevalue=sa*{oc+SIN[2*π*fm*(Time-td)]} *SIN[2*π*fc*(Time-td)] 图 2.3.6 单频调幅源示意图 例:V3 3 0 AM (10 1 100 1k 1M) 二. 电压和电源控制源: (1) 电压控制电压源—E 元件 一般形式: 线性:EXXX n+ n- in+ in- gain + + 多阶: EXXX n+ n- POLY(NDIM) in1+ in1- ... + inndim+ inndim- + + P0 分段线性:EXXX n+ n- PWL(1) in+ in- + + x1, y1, x2, y2... + x100, y100 多输入门:EXXX n+ n- gatetype(k) in1+ in1-... + ink+ ink- + 16 + x1, y1,... x100, y100 延迟元件:EXXX n+ n- DELAY in+ in- TD=val + (2) 电流控制电流源—F 元件 一般形式: 线性: FXXX n+ n- vn1 gain + + 多阶:FXXX n+ n- POLY(NDIM) vn1 <...vnndin> + + P0 分 段 线 性 : FXXX n+ n- PWL(1) Vn1 + x1, y1,... x100, y100 多输入门: FXXX n+ n- gatetype(k) vn1, ..., vnk + + x1, y1, ..., x100, y100 延迟元件: FXXX n+ n- DELAY vn1 TD=val + NPDELY=val (3) 电压控制电流源—G 元件 一般形式: 线性:GXXX n+ n- in+ in- transconductance + + 多阶:GXXX n+ n- POLY(NDIM) in1+ in1- ... + + + P0 分段线性:GXXX n+ n- PWL(1) in+ in+ + x1, y1, x2, y2 ... x100, y100 + 或:GXXX n+ n- NPWL(1) in+ in+ + x1, y1, x2, y2 ... x100, y100 + 17 或:GXXX n+ n- PPWL(1) in+ in+ + x1, y1, x2, y2... x100, y100 + 多输入门:GXXX n+ n- gatetype(k) in1+ in1- ... + ink+ ink+ + x1, y1, ..., x100, y100 延迟元件:GXXX n+ n- DELAY in+ in- TD=val + NPDELY=val (4) 电流控制电压源—H 元件 一般形式: 线性: HXXX n+ n- vn1 transresistance + + 多阶: HXXX n+ n- POLY (NDIM) vn1 + <...vnndim> + P0 + 分段线性:HXXX n+ n- PWL(1) vn1 + + x1, y1, x2, y2 ... , x100, y100 多输入门:HXXX n+ n- gatetype(k) vn1, ..., vnk + + x1, y1, ..., x100, + y100 延迟元件:HXXX n+ n- DELAY vn1 TD=val + 上述是 HSPICE 中具有的四种电压和电流控制元件,通称为 E、F、G 和 H 元 件。在 HSPICE 中用这些控制元件能够模拟 MOS 晶体管、双极型晶体管、隧道二 极管和可控硅整流器,此外还能对一些功能块,诸如运放、加法器、比较器、压 控振荡器、调制解调器和开关电容电路等进行模拟。控制元件有线性和非线性两 类。 控制元件在实际应用中将根据不同情况以线性、多阶、分段线性、多输入门 和延迟元件等方式来处理。 下面简单介绍一下多阶函数和分段线性函数: 18 控制元件描述语句允许控制输出变量作为一个或多个电压或分支电流的多 阶函数来定义。在 HSPICE 中可通过 POLY(NDIM)参数对三种多阶方程加以选择。 POLY(1) 一维方程 POLY(2) 二维方程 POLY(3) 三维方程 与多阶方程有关的多阶方程系数(P0,P1,...,Pn)对每一个多阶方程都要明 确设置。 POLY(1)对应一个控制变量的函数 FV=P0+(P1⋅FA)+(P2⋅FA2)+(P3⋅FA3)+(P4⋅FA4)+(P5⋅FA5)+.... POLY(2)对应两个控制变量的函数 FV=P0+(P1⋅FA)+(P2⋅FB)+(P3⋅FA2)+(P4⋅FA⋅FB)+(P5⋅FB2)+(P6⋅FA3) +(P7⋅FA2⋅FB)+(P8⋅FA⋅FB2)+(P9⋅FB3)+... POLY(3)对应三个控制变量的函数 FV=P0+(P1⋅FA)+(P2⋅FB)+(P3⋅FC)+(P4⋅FA2)+(P5⋅FA⋅FB)+(P6⋅FA⋅FC) + (P7⋅FB2) +(P8⋅FB⋅FC)+(P9⋅FC2)+(P10⋅FA3)+(P11⋅FA2⋅FB) + (P12⋅FA2⋅FC) +(P13⋅FA⋅FB2) +(P14⋅FA⋅FB⋅FC)+(P15⋅FA⋅FC2)+(P16⋅FB3) +(P17⋅FB2⋅FC) +(P18⋅FB⋅FC2) +(P19⋅FC3)+(P20⋅FA4)+... 其中: FV: 来自控制源的控制电压或电流 P0...PN: 多阶方程系数 FA, FB, FC: 控制变量(分支电流或节点电压) 分段线性函数可以对诸如隧道二极管,可控硅整流器和二极管击穿范围等, 通过规定测定数据点来进行分段描述,并且 DELTA 参数的设定可用来控制分段转 角的曲率。 上述四种控制元件描述语句中的一些主要参数的定义规定如下: ABS ABS=1,输出是绝对值 DELAY 延迟元件的关键字。这个延迟元件简化了宏模型处理中传播延迟的 调整,作为 HPSPICE 的一个关键字,DELAY 不能用来当作节点名。 DELTA 用来控制分段线性转角的曲率。DELTA 的缺省值是最小转折点距离 的 1/4,最大值被限制在最小转折点距离的 1/2。 GXXX 电压控制电流源名,必须以“G”开头,随后的字符串不得超过 15 个字符。 FXXX 电流控制电流源名,必须以“F”开头,随后的字符串不得超过 15 个字符。 EXXX 电压控制电压源名,必须以“E”开头,随后的字符串不得超过 15 个字符。 HXXX 电流控制电压源名,必须以“H”开头,随后的字符串不得超过 15 19 个字符。 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 没设置,则 HSPICE 假定其为一维的。NDIM 必须是正数。 NPDELAY 延迟模拟中设置的数据点数目,它由下式决定: NPDELAYdefault = max[ min < TD, tstop > ,10] tstep 其中 tstep 或 testop 的值在.TRAN 语句中规定 NPWL 建立 NMOS 对称双向开关或传输门模式。 P0,P1... 多阶方程系数。当规定一个系数时,HSPICE 假定是 P1(P0=0.0) 并 且 认 为 元 件 是 线 性 的 , 当 规 定 多 个 系 数 时 , 则 HSPICE 用 P0,P1,P2...来表示,此时元件是非线性的 POLY 多阶状态关键字。 PWL 分段线性状态关键字。 PPWL 建立 PMOS 对称双向开关或传输门模式。 SCALE 元件倍增数 SMOOTH 选择分段线性中曲线平滑的方法 TC1,TC2 一阶和二阶温度系数,“SCALE”靠温度来刷新: SCALEeff = SCALE ⋅ (1 + TC1⋅ ∆t + TC2 ⋅ ∆t2 ) TD 时间延迟关键字 transconductance 电压(电流)到电流(电压)转换因子 vn1... 控制电流流进的电压源名。 20 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 在 HSPICE 中代表控制源的 关键字,不能用来当作节点名用。 §2.4 半导体器件描述语句 电路中每个半导体器件也和上述的元件一样需用器件语句来描述。每个器件 描述语句的第一字母是代表某种器件的关键字,这一节中所涉及的关键字的含义 为: D:晶体二极管 Q:双极型晶体三极管 J:结型或 MES 场效应晶体管 M:MOS 场效应管 一. 晶体二极管 一般形式: DXXX nplus nminus mname + + 或 DXXX nplus nminus mname > + 或 DXXX nplus nminus mname + + 其中: AERA: 二极管的面积,它定义了饱和电流,电容和电阻值。在 LEVEL =1 模型中通过选择 SCALE,可以不受 AREA 因子影响。缺省值 是 1.0。模型 LEVEL=3 还要影响 IK,IKR,JS,CJ0 和 RS 等 参数。 21 AREAeff = AREA * M * SCALE2 * SHRINK2或 AREAeff = Weff * Leff * M 如果没定义 AREA,则模型从 W,L 中计算得到。 DTEMP: 元件温度与电路温度之间的差额,缺省值为 0.0 DXXX: 二极管元件名。必须以“D”开头,后面最多跟 15 个字符。 IC=vd: 若瞬态分析不要求从静态工作点开始,就可规定 IC=vd 为初 始条件,注意若选用 IC 选项,则它必须和.TRAN 的 UIC 可选 项连用,并且可不必再考虑使用.IC 语句来设置初始条件。 IC=vd 规定二极管两端的初始电压值。 L: 二极管的长度(level3 特有)。 LM: 寄生金属电容的长度(level3 特有),缺省值为 0.0。 LMeff = LM * SCALE * SHRINK LP: 寄生多晶电容的长度(level3 特有),缺省值为 0.0。 LPeff = LP *SCALE *SHRINK M: 多重二极管模拟时的倍增因子,其间所有的电流寄生电容和电 阻均受影响,缺省值为 1。 mname: 二极管模型名,可以是一个最多 16 个字符组成的字符串。 nplus/nminus: 二极管的正端(阳极)和负端(阴极),可以是一个最 多 16 个字符组成的字符串。 OFF: 规定在进行直流分析时使器件所加初始条件为关态,缺省值为 ON。 PJ: PN 结的周长,由 W,L 得到,它影响 JSW 和 CJP 等模型参数, 缺省值为 0.0。 对于 LEVEL=1, PJ eff = PJ * M 对于 LEVEL=2, PJeff = PJ *SCALE * M * SHRINK PJeff = (2 * Weff + 2Leff ) * M W: 二极管宽度(level3 特有)。 Weff = W * SCALE * SHRINK + XWeff WM: 寄生金属电容的宽度(level3 特有),缺省值为 0.0。 WMeff = WM * SCALE * SHRINK WP: 寄生多晶电容的宽度(level3 特有),缺省值为 0.0。 WPeff = WP * SCALE * SHRINK 二极管的正电流是从正节点流出,通过二极管流入负节点。HSPICE 中可通 过模型用到四种二极管:齐纳二极管,扩散 PN 结硅二极管,肖特基势垒二极管, 非易失性存储二极管(隧道电流)。 例: DBRIDGE 6 7 DIODE 1 DCLMMMP 3 substrate DMOD 3 IC=0.2 22 图 2.4.1 二极管模型中电流方向 二. 双极型晶体三极管 一般形式: QXXX nc nb ne mname + 或 QXXX nc nb ne mname + + + 其中: 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。 23 AREB: AREC: 基区面积倍增因子,它影响电流、寄生电容和电阻值,缺 省值为 1。 集电区面积倍增因子,它影响电流、寄生电容和电阻值, 缺省值为 1。 双极型晶体管模型中电流方向规定: 图 2.4.2 双极型晶体管模型中电流方向 例: Q108 Q26 Q50A CX BX EX QPNP AREA=1.5 AREAB=2.5 AREAC=3.0 10 18 12 QMOD IC=0.6, 5.0 11 265 4 20 MOD 三. 结型场效应管或 MESFET 一般形式: JXXX nd ng ns mname + 或 JXXX nd ng ns mname <| W=val L=val> + < DTEMP=val > + 其中: JXXX: JFET 或 MESFET 元件名,必须以“J”开头,后面最多跟 15 个字符的字符串。 nb: 衬底节点 nd: 漏极节点 ng: 栅极节点 ns: 源极节点 mname: 与 JFET 或 MESFET 相关的模型参考名 AREA: 面积倍增因子,它影响 BETA、RD、RS、IS、CGS 和 CGD 等 模型参数。如果 AREA 没有定义,但 Weff 和 Leff 远大于 0, 24 则: AREA = Weff Leff ,ACM= 0 。 AREA = Weff * Leff ,ACM= 1 AREAeff = M * AREA 缺省值是 1.0。 W=val, L=val: FET 栅极的宽度和长度。 Weff = W *SCALE + WDELeff , Leff = L * SCALE + LDELeff OFF: 表示在进行直流分析时在器件上不加初始条件,缺省值为 ON。 IC=vdsval,vgsval: 设置初始 Vds 和 Vgs 值,必须和.TRAN 中的 UIC 选项连用。 M=val: 多重 JFET 的倍增因子,它影响电流、寄生电容和电阻值。 DTEMP: 器件相对于电路的温度差异,缺省值为 0.0。 结型场效应管模型中的电流方向规定: 图 2.4.3 结型场效应管模型中电流方向 例: J6 jmes 7 4 2 JM1 x-load gdrive common jmodel 四. MOS 场效应管 一般形式:MXXX nd ng ns mname + + + + 或 MXXX nd ng ns mname lval wval ... 或 .OPTIONWL MXXX nd ng ns mname wval lval 其中: 25 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。 MOSFET 模型中的电流方向规定: 图 2.4.4 MOSFET(以 n 沟为例)模型中电流方向 26 例 :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 2U 或 .OPTION WL M31 2 17 6 10 MODM 0.8U 5U M1 2 9 3 0 MOD1 L=10U w=5U AD=100P + AS=100P PD=40P PS=40U M1 2 9 3 0 MOD1 10U 5U 2P 2P §2.5 子电路描述语句(.SUBCKT 或.MACRO 语句) HSPICE 软件允许用户在程序执行过程中调用由各种 HSPICE 元件和器件构 成的子电路。子电路的大小或复杂性没有限制,子电路中可嵌套其它子电路。 子电路是以 .SUBCKT 或 .MACRO 开头,以 .ENDS 结束的一组语句。一旦定义好, 它可看作是以 X 关键字开头的器件。 一.子电路定义开始语句 一般形式: .SUBCKT subnam n1 或 .MACRO subnam n1 其中: subnam 是子电路参考名 n1… 是子电路外部参考节点,它们不能为零(地节点)。 子电路定义中的任何节点是局部变量,只有下述三 种节点情 况例外 : 1. 接地点 (节点为 0 ) 2. 在 MOSFET 或 BJT 模型中用 BLUK 定义 的节点号 3.由 .GLOBAL 语句定义的节点号 所以子电路定义中的节点号、器件名、MODEL 的说明可以和外部的相同,而 不会冲突 。 27 parnam : 用来设置子电路中用到的参数值。 二. 子电路终止语句 一般形式 : .ENDS < SUBNAM > 或 .EOM < SUBNAM > 该语句一定是子电路定义的最后一个语句。SUBNAM 代表该子电路名。如果 该语句后有子电路名,则表示该子电路定义结束,若无子电路名,则表示 .ENDS 或 .EOM 之前的所有子电路定义都结束。子电路名只有在子电路定义嵌套时才 需要写在 .ENDS 或 .EOM 语句中。 三. 子电路调用语句 一般形式: Xyyy n1 < n2 n3 . . . > subnam < parnam=val . . . > + 其中: XYYY 子电路元件名,必须以”X”开头,后面最多跟 15 个 字符的字符串 n1... 子电路调用节点号 subnam 子电路参考名 parnam 用来设置子电路中用到的参数值 M 子电路并联使用时的倍增因子. 由于子电路本身的外节点号是局部的,所以和子电路调用的节点号无关, 但电路节点号的顺序必须和 。SUBCKT 语句中定义的顺序一致。 例: *FILE SUB2.SP TEST OF SUBCIRCUITS .OPTIONS LIST ACCT * .PARAM p5=5 p2=10 * .SUBCKT SUB1 1 2 p4=4 R1 1 0 p4 R2 2 0 p5 X1 1 2 SUB2 p6=7 X2 1 2 SUB2 .ENDS 28 * .MACRO SUB2 1 2 p6=11 R1 1 2 p6 R2 2 0 p2 .EOM * X1 1 2 SUB1 p4=6 X2 3 4 SUB1 p6=15 X3 3 4 SUB2 .MODEL DA D CJA=CAJA CJP=CAJP VRB=-20 IS=7.62E-18 + PHI= .5 EXA= .5 EXP= .33 * .PARAM CAJA=2.535E-16 CAJP=2.53E-16 .END §2.6 模型描述语句 (.MODEL 语句) 在用 HSPICE 模拟过程中,很多元器件都要使用相关模型以确定它们的参 数值。 模型语句的一般形式是: .MODEL mname type < prame1=val1 pname2=val2 . . . > 其中: mname 模型参考名、元件必须靠这个名字来指明所要参考的 模型。 type 用来选择模型类型、模型类型必须是下列类型中的 一种: AMP: 运算放大器模型 C: 电容模型 CORE: 磁芯模型 D: 二极管模型 L: 磁芯互感模型 NJF: n 沟 JFET 模型 NMOS: n 沟 MOSFET 模型 NPN: npn 双极型晶体管模型 OPT: 优化模型 PJF: p 沟 JFET 模型 PLOT : 针对.GRAPH 语句的硬拷贝绘图模型 PMOS: p 沟 MOSFET 模型 PNP: pnp 双极型晶体管模型 R: 电阻器模型 pname1… 用来设置模型参数名。模型参数名必须是相应模型 中存在的参数,未给定的参数名和值就由程序中的 缺省值代替。模型参数值由圆括号内参数表中的参 数值给出。每个独立参数之间用空格或逗号分隔, 续行前要加”+”号。 29 例: .MODEL MOD1 NPN BF = 50 IS = 1E-13 VBF = 50 AREA = 2 + PJ = 3 N = 1.05 §2.7 库文件调用及定义语句 (.LIB 语句) 在用 HSPICE 对电路的模拟中,经常要对元器件的模型及其参数以及子电路 进行描述或定义。HSPICE 软件允许将器件模型(.MODEL 语句)、子电路的定义(包 含.ENDS 语句)、有关注释语句及库文件调用语句(.LIB 语句)等集中存放到库文 件中,而在调用所要使用的模型和子电路时,仅需要将所要的模型、子电路等 内容取出进入存储器即可,这样速度快、占内存少。HSPICE 中一个读取库文件 的执行过程直到遇到.ENDL 语句才结束。所以库文件给电路模拟带来极大方便。 一 .库文件调用语句 一般形式: .LIB ′< filepath > f ilename ′ entryname 或 .LIB libnumber entryname 其中: filepath 指明库文件所在的路径,当库文件与 HSPICE 运行在 一目录下,则可缺省目录路径。“../”表示当前目录的 上一级目录。 filename 包含在数据文件的文件名,所有文件目录路径和文件 名组合最长不超过 256 个字符。文件目录路径和文件 名必须包含在单引号或双引号中。 entryname 进入文件的类型名,这个名字的第一个字符不能是一 个整数。 libnumber 参考库文件的另一种方法。值得注意的是在不同的 操作系统下,数字定义域不同,如 11~89 可以用在 除 UNIX 以外的所有系统中。UNIX 系统一般用 9~14。 例: .LIB ′MODELS ′ cmos1 .LIB ′../sum/MODELS ′ cmos1 .LIB 14 lm 101 二 .宏模块库建立的规定: 1. .ALTER 语句不能包含在库中 2. 一个库可以嵌套自身可供调用的库或其它可供调用的库 3. 一个库中不能嵌套与它有同样库类型进入识别名的同一库文件 4. 库文件中不能包含 END 语句 5. 在用 .INCLUDE 语句调用 .LIB 语句期间是不能再用 .ALTER 语句来进 行运行处理。 .LIB 文件在调用时相当灵活,它里面包含了由.MODE L 语句定义的模型参 数,并能作为一个以 .LIB entyname 开头,.ENDL entyname 结束的宏模块来 30 加以调用。在一个库文件中可嵌套多个库文件,分层调用,给电路模拟带来了 极大的方便。 第三章 电路性能分析和控制语句 对电路性能进行分析,进而对电路设计起到指导性作用,这是电路模拟的 意义所在。电路的性能分析包括:直流分析(直流工作点、直流扫描分析、灵 敏度分析、小信号输出函数分析等);交流分析(交流小信号分析、小信号失 真分析、交流噪声分析等);瞬态分析(瞬态分析、富利叶分析等)及蒙特卡 罗(Monte Carlo)分析和最坏情况(WAST CASE)、温度特性等分析。本章主 要介绍 HSPICE 电路模拟中的一些主要分析语句和控制语句。HSPICE 中的所有分 析和控制语句都必须以“.”开头,各语句间的次序可随意且可多次设置。 §3.1 电路性能分析语句 一.直流工作分析语句 1. 直流工作点分析.OP 当输入文件中包含了一个.OP 语句时,HSPECE 软件将去计算电路的直流工 作点,.OP 语句也可能在进行瞬态分析时产生一个直流工作点作为瞬态分析的初 始条件。此语句在进行电路直流工作点计算时,电路中所有电感短路,电容开 路。值得注意的是,在一个 HSPICE 模拟中只能出现一个.OP 语句。 一般形式: .OP < format > < time > < forme > < time > 其中: format 是下述关键字中的任何一个(只有第一个自号有效的, 缺省值为 ALL): ALL 提供全部工作点值,包括电压、电流、电导和电容等值。 BRIEF 每一个元件都产生一行电压、电流和功率值,电流单位是 mA ,功率单位是 mw。 CURRENT 提供一种带有元件电流和功率的电压表格样式的简明结 果。 DEBUG 此参数同上只有在模拟结果不收敛的情况下才由程序来 调用。并能调整打印出收敛节点的新、老电压以及不收 敛的程度(容差),它也能打印出带容差值的不收敛元 件。 NOTE 禁止节点和元件打印输出,但允许执行时附加分析规 定。 VOLTAGE 仅提供电压输出表格形式。 对上述关键字有一点值得特别注意,这些关键字互相不兼容,同一时间只能 用一个关键字定义。 time 这个参数直接跟在 All、Voltage、Current 或 DEBUG 等参 31 数后面 ,用来确定这些参数值输出打印的时间 。 下面给出两个进行直流工作点分析的例子: 例 1:.OP .5NS CUR 10NS VOL 17.5NS 20NS 25NS 在例 1 中计算了直流工作点,并要求在 0.5ns 时打印出所有直流工作点值, 此外电流在 10 ns,电压在 17.5 ns、20ns 以及 25 ns 时进行瞬态分析。 例 2:给出了一个直流工作点分析后的输出结果。 .OP Example Output ***** OPERATING POINT INFORMATION TNOM= 25.000 TEMP= 25.000 ***** OPERATING POINT STATUS IS ALL SIMULATION TIME IS 0. NODE VOLTAGE NODE VOLTAGE NODE VOLTAGE + 0:2 = 0. 0:3 = 437.3258M 0:4 = 455.1343M + 0:5 = 478.6763M 0:6 = 496.4858M 0:7 = 537.8452M + 0:8 = 555.6659M 0:10 = 5.0000 0:11 = 234.3306M **** VOLTAGE SOURCES SUBCKT ELEMENT 0:VNCE 0:VN7 0:VPCE 0:VP7 VOLTS 0. 5.00000 0. -5.00000 AMPS -2.07407U -405.41294P 2.07407U 405.41294P POWER 0. 2.02706N 0. 2.02706N TOTAL VOLTAGE SOURCE POWER DISSIPATION = 4.0541 N WATTS **** BIPOLAR JUNCTION TRANSISTORS SUBCKT ELEMENT 0:QN1 0:QN2 0:QN3 0:QN4 MODEL 0:N1 0:N1 0:N1 0:N1 IB 999.99912N 2.00000U 5.00000U 10.00000U IC -987.65345N -1.97530U -4.93827U -9.87654U VBE 437.32588M 455.13437M 478.67632M 496.48580M VCE 437.32588M 17.80849M 23.54195M 17.80948M VBC 437.32588M 455.13437M 478.67632M 496.48580M VS 0. 0. 0. 0. POWER 5.39908N 875.09107N 2.27712U 4.78896U BETAD-987.65432M -987.65432M -987.65432M - 987.65432M GM 0. 0. 0. 0. RPI 2.0810E+06 1.0405E+06 416.20796K 208.10396K RX 250.00000M 250.00000M 250.00000M 250.00000M RO 2.0810E+06 1.0405E+06 416.20796K 208.10396K 32 CPI 1.43092N 1.44033N 1.45279N 1.46225N CMU 954.16927P 960.66843P 969.64689P 977.06866P CBX 0. 0. 0. 0. CCS 800.00000P 800.00000P 800.00000P 800.00000P BETAAC 0. 0. 0. 0. FT 0. 0. 0. 0. 2.直流扫描分析.DC 该语句规定了直流传输特性分析时所用的电源类型和扫描极限。在直流分 析中,.DC 语句可进行 a. 直流参数值扫描 b. 电源值扫描 c. 温度范围扫描 d. 执行直流蒙特卡罗分析(随机扫描) e. 完成直流电路优化 f. 完成直流模型特性化 .DC 语句具体格式取决于实际应用需要,下面给出了一些应用格式: (1)直流扫描或直流参数化扫描 .DC var1 START=start1 STOP=stop1 STEP=incr1 或 .DC var1 START= STOP = + STEP=< param-expr3> 或 .DC var1 start1 stop1 incr1 .DC var1 start1 stop1 incr1 < var2 start2 stop2 incr2> (2)数据驱动扫描 .DC var1 type np start1 stop1 或 .DC DATA=datanm 或 .DC DATA=datanm (3)蒙特卡罗分析 .DC var1 type np start1 stop1 或 .DC MONTE=val (4)优化 .DC DATA=datannm OPTIMIZE=opt_par_fun + RESULTS=measnames MODEL=optmod 或 .DC var1 start1 stop1 SWEEP OPTIMIZE=OPT××× + RESULTS=measnames MODEL=optmod 其中: DATA=datanm incr1… MODEL .DATA 语句的参考名 电压、电流、分量模型参数或温度的增量 用于优化分析的.MODEL OPT 语句中所规定 33 的优化参考名 MODEL=val 表示一个随机产生数,用来从某一分布选择参 数,这个分布可以是高斯分布、均匀 分布或者 是随机分布 np 以十进制或倍频程变化的点的数目,也可以是 代表上述关键字的数字 OPTIMIZE .PARAM 语句中用于优化所规定的参数参考名 RESULTS .MEASURE 语句中用于优化所规定的量度名 start1 起始电压、电流、分量模型参数或温度值 stop1 终止电压、电流、分量模型参数或温度值 值得注意的是若“type”用“POI”,则一个参数值表将替代“start”、 “stop” SWEEP 表示具有不同变量类型(DEC、OCT、LIN、 POI、DATA 语句或 MONTE=val)的第二次扫 描的关键字 TEMP 表示进行温度扫描的关键字 type 可以用下列任何一个关键字表明扫描类型 DEC 十进制变量(变量按十个一组的数量级变 化进行扫描 OCT 倍频程变量(变量按倍频程规律变化进行 扫描) LIN 线性变量(变量按线性规律变化进行扫描) POI 参数点表(按所列参数点表进行扫描〕 var1… 可以是独立电压源或电流源名,任何分量或模型 的参数,也可以是用来表明温度扫描的关键字 “TEMP”。 下面给出了几个直流扫描分析的实际例子: The following example causes the value of the voltage source VIN to be swept from 0.25 volts to 5.0 volts in increments of 0.25 volts. .DC VIN 0.25 5.0 0.25 The following example invokes a sweep of the drain to source voltage from 0 to 10 V in 0.5 V increments at VGS values of 0, 1, 2, 3, 4, and 5 V. .DC VDS 0 10 0.5 VGS 0 5 1 The following example asks for a DC analysis of the circuit from -55 癈 to 125 癈 in 10 癈 increments. .DC TEMP -55 125 10 8-6 Star-Hspice Manual, Release 1998.2 34 As a result of the following script, a DC analysis is conducted at five temperatures: 0, 30, 50, 100 and 125 癈. .DC TEMP POI 5 0 30 50 100 125 In the following example, a DC analysis is performed on the circuit at each temperature value, which results from a linear temperature sweep from 25 癈 to 125 癈 (five points), sweeping a resistor value called xval from 1 k to 10 k in 0.5 k increments. .DC xval 1k 10k .5k SWEEP TEMP LIN 5 25 125 The example below specifies a sweep of the value par1 from 1 k to 100 k by 10 points per decade. .DC DATA=datanm SWEEP par1 DEC 10 1k 100k The next example also requests a DC analysis at specified parameters in the .DATA statement referenced by the .DATA statement reference name datanm. Parameter par1 also is swept from 1k to 100k by 10 points per decade. .DC par1 DEC 10 1k 100k SWEEP DATA=datanm The final example invokes a DC sweep of the parameter par1 from 1k to 100k by 10 points per decade, using 30 randomly generated (Monte Carlo) values. .DC par1 DEC 10 1k 100k SWEEP MONTE=30 Schmitt Trigger Example *file: bjtschmt.sp bipolar schmitt trigger .options post=2 vcc 6 0 dc 12 vin 1 0 dc 0 pwl(0,0 2.5u,12 5u,0) cb1 2 4 .1pf rc1 6 2 1k rc2 6 5 1k rb1 2 4 5.6k rb2 4 0 4.7k re 3 0 .47k 35 * diode 0 1 dmod q1 2 1 3 bmod 1 ic=0,8 q2 5 4 3 bmod 1 ic=.5,0.2 * .dc vin 0,12,.1 * .model dmod d is=1e-15 rs=10 .model bmod npn is=1e-15 bf=80 tf=1n + cjc=2pf cje=1pf rc=50 rb=100 vaf=200 .plot v(1) v(5) .graph dc model=schmittplot input=v(1) output=v(5) 4.0 5.0 .model schmittplot plot xscal=1 yscal=1 xmin=.5u xmax=1.2u .end 3.直流灵敏度分析.SENS 如果在输入文件中包括了一个.SENS 语句,HSPICE 将对每一个规定的的输出 变量相对于相关的电路参数做直流小信号灵敏度分析。灵敏度测量就是一个输入 变量相对于给定的电路元件参数在工作点附近求偏微分并加以归一化的过程。因 此,所有元件的灵敏度总和是 100%,HSPICE 能对电阻、独立电压源、独立电流 源、二极管及双极型晶体管做直流小信号灵敏度分析。每一次电路模拟中只能执 行一个.SENS 分析,若输入文件中有多个.SENS 语句,则 HSPICE 只执行最后一 个.SENS 语句。 一般形式:.SENS ov1 其中: ov1 ov2 代表直流灵敏度分析中的分支电流或节点电压。 例:SENS V(9) V(4,3) V(17) I(Vcc) 4.直流小信号出数函数分析.TF 直流小信号传输函数.TF 定义了直流小信号分析中输出与输入的比值,输入 电阻值和输出电阻值。每一次电路模拟过程中只能用一个.TF 语句,若输入文件 中有多个.TF 语句,则 HSPICE 只执行最后一个.TF 语句 例:.TF V(5,3) VIN .TF I(VLOAD) IN 在上述第一个例子中,HSPICE 计算了 V(5,3)对 VIN 的比值,在 VIN 端的输 入电阻及节点 5 和节点 3 之间的小信号输出电阻。 5.极/零点分析.PZ HSPICE 中提供了一种供电路进行极点和零点分析的语句。在 pole/zero 分 36 析中,其分析网络用它的网络传输函数来描述,对于任何线性时间恒定的网络, 其传输函数表示为: H (S) = N (s) D(s) = a0 ⋅ s m + a1 ⋅ s (m −1) + ... + a m b0 ⋅ s n + b1 ⋅ s ( n −1) + ... + bn 它是输出函数 n(s)的拉普拉斯变换 N(s)与输入函数 d(x)的拉普拉斯变换 D(s) 的比。当 H(s)的分母等于零的特征方程的根 Pj(j=1,2,...,m)被称为传输函数的 极点。H(s)的分子等于零的特征方程的根 Zi(i=1,2,...,m)被称为传输函数的零 点。利用零点和极点,系统的传输函数可以写成另一种形式: H (s) = a0 ⋅ (s + z1)(s + z2 )...(s + zi )...(s + zm ) b0 (s + p1)(s + p2 )...(s + p j )...(s + pm ) .PZ 语句的一般形式:.PZ output input 其中: PZ 表示进行极/零点分析 input 表示输入源,可以是任何独立电压或电流源名 output 代表输出变量,可以是任何节点电压 V(n)或支路电流 I(element name) 例: .PZ V(10) VIN .PZ I(RL) ISORC .PZ L1(M1) VSRC 二.交流分析语句 1.交流小信号分析.AC 交流小信号分析时,HSPICE 将交流输出变量作为指定频率的函数来加以分 析计算。分析时 HSPICE 首先求直流工作点,作为交流分析的初始条件,这时 HSPICE 将电路中所有非线性器件变换成线性小信号模型,电容和电感则被换算 成相应的导纳值:YC=jwc 和 YL=1/jwl。 HSPICE 允许电阻有不同的直流和交流值。若在电阻描述语句中定义了 AC=,则在直流工作点计算时用直流电阻值,但在交流分析时则用交流 电阻值。这对于分析运算放大器特性十分便利,因为在进行运放直流工作点计算 时,可以用一个低阻值直流电阻构成反馈式单位增益结构来进行计算,而在运放 交流分析时,可以用一个高阻交流电阻构成开环形式来进行交流分析。 交流分析允许对下述参数进行扫描分析: (a)频率 (b)分量 37 (c)温度 (d)模型参数 (e)随机分布(蒙特卡罗分析) (f)优化及交流设计分析 .AC 语句形式视具体的应用情况而定,下面给了几种应用情况的语句形式: (1)单/双扫描 .AC type np fstart fstop 或 .AC type np fstart fstop 或 .AC type np fstart fstop 或 .AC var1 START= STOP= + STEP= 或 .AC var1 START=start1 STOP=stop1 STEP=incr1 (2)参数化扫描: .AC type np fstart fstop 或 .AC DATA=datanm (3)优化扫描 .AC DATA=datanm OPTIMIZE=opt_par_fun + RESULTS=measnames MODEL=optmod (4)随机/蒙特卡罗分析: .AC type np fstart fstop 其中: DATA=datanm .AC 语句中涉及到的数据名: incr 代表电压、电流、分量或模型参数增量。值得注意的是,若 “type”变量在语句中被设置,则“np”值将替代“incr”值。 fstart 表示起始频率。 fstop 表示中止频率。 如果“POI”变量在语句中被设置,则一个频率值表将替代“fstart”和 “stop”设置 MONTE=val 表示一个随机产生数,用来从某一分布选择参数,这个分 布可以是高斯分布、均匀分布或者是随机范围分布。 np 以十进制或倍频程变化的点的数目,也可以是代表关键字的数 字。 start 起始电压、电流、任何分量或模型参数值。 stop 中止电压、电流、任何分量或模型参数值。 SWEEP 表示在.AC 语句中第二个扫描的关键字。 TEMP 表示进行温度扫描的关键字。 type 可以用下列任何一个关键字表明的扫描类型: DEC 十进制变量(变量按十个一组的数量级变化进行扫描) 38 OCT 倍频程变量(变量按倍频程规律变化进行扫描) LIN 线性变量(变量按线性规律变化进行扫描) POI 参数点表(按所列参数点表进行扫描) var 可以是独立电压源或电流源名、任何分量或模型的参数,也可 以是用来表明温度扫描的关键字”TEMP”。 下面给出几个交流扫描分析的实际例子: The following example performs a frequency sweep by 10 points per decade from 1 kHz to 100 Mhz. .AC DEC 10 1K 100MEG The next line calls for a 100 point frequency sweep from 1Hz to 100 Hz. .AC LIN 100 1 100HZ The following example performs an AC analysis for each value of cload,which results from a linear sweep of cload between 1 pF and 10 pF(20 points),sweeping frequency by 10 points per decade from 1Hz to 10 kHz. .AC DEC 10 1 10K SWEEP cload LIN 20 1pf 10pf The following example performs an AC analysis for each value of rx,5 k and 15 k,sweeping frequency by 10 points per decade from 1Hz to 10 kHz. .AC DEC 10 1 10K SWEEP rx POI 2 5k 15k The next example uses the DATA statement to perform a series of AC analyses modifying more than one parameter.The parameters are contained in the file datanm. .AC DEC 10 1 10K SWEEP DATA=datanm The following example illustrates a frequency sweep along with a Monte Carlo analysis with 30 trials. .AC DEC 10 1 10K SWEEP MONTE=30 最后还有一点在实际应用中要值得注意,在进行交流分析时,其数据文件 中至少应包含一个独立交流源元件,例如(VI INPUT GND AC 1V)。HSPICE 在 进行交流扫描分析时,会检查这个条件是否成立,若没有这个条件,则 HSPICE 会报错并停止相应的交流扫描分析。 2.交流小信号失真分析.DISTO .DISTO 语句是 HSPICE 用来计算小信号条件下电路的失真特性,它是交流小 信号(正弦稳态)频率特性分析的一部分。该语句在规定负载电阻的情况下计算 五个失真量(DIM2,DIM3,HD2,HD3,SIM2),分析时假定在输入端叠加一个或 两个频率的信号。第一个频率 F1 被用来计算谐波失真特性,它就是.AC 语句做 频率扫描中设置的标称分析频率,另外第二个频率是一个可选的输入频率 F2, 它被用来计算相互调制失真特性,这个频率由 skw2 参数隐含设置,skw2=F2/F1。 .DISTO 语句可计算的五种失真量是: (1)DIM2 相互调制失真量(与第一级谐波差额时的失真量)。即频率 分量 F1-F2 相关的幅度和相位。 39 (2)DIM3 (3)HD2 (4)HD3 (5)SIM2 相互调制失真量(与第二级谐波差额时的失真量)。即频率 分量 2*F1-F2 相关的幅度和相位。 第二级谐波失真量。即忽略 F2 时,2*F1 频率分量相关的幅度 和相位。 第三级谐波失真量。即忽略 F2 时,3*F1 频率分量相关的幅度 和相位。 相互调制失真量(总量)。即频率分量 F1+F2 相关的幅度和 相位。 一般形式: .DISTO Rload >>> 其中: Rload 输出负载电阻名字,所有输出失真功率是在该负载电阻上计 算得出的。 nter 打印失真计算结果的频率间隔,一般这个频率就是进行交流扫 描的频率。如果这个参数省略或置零就不打印失真计算结果输 出 一览表,在这种情况下可以用.PRINT 和.PLOT 语句对失真 计算结果进行打印。如果这个参数置 1 或大于 1,则以所设置 数 为第一个打印频率,并以此为增量打印出失真计算结果。在实 际应用中,有时仅需要第一个和最后一个频率的失真计算结果 被打印出来,此时 inter 可设置成与.AC 中分析的总步长一样 的 值,如若仅要求最后一个频率的失真计算结果被打印出来,则 只要把 inter 值设置得比.AC 分析的终止频率还要大即可。 skw2 代表第二个频率 F2 与标称分析频率 F1 的比值。允许的范围是 1e-3 + 其中: FS=freg 数据采样频率,单位是 Hz TOL 采样出错容差:最高叠加频率间隔时的噪声功率与基频时的噪 声功率的比值。缺省值是 1.0e-3 NUMF 允许用户自定义的最大频率值,一般要求内部产生频率是这个 频率的 10 倍,因此一般要求这个自定义频率小些。其缺省值是 100。 MAXFLD 允许的最大叠加频率间隔。采样噪声分析计算中的最高频率由 下式决定: FMAX=MAXFLD.FS 41 BETA 其缺省值为 100。 积分器占空比。这是一个可选项,表示在采样节点规定了一个 可选的噪声积分器,BETA=0,表示没有规定积分器,BETA=1 或缺省,表示规定了采样积分器。 4.交流网络分析.NET 语句 .NET 语句在 HSPICE 进行交流分析时,计算了阻抗矩阵(Z 矩阵),导纳矩阵(Y 矩阵),混合矩阵(H 矩阵)和散射矩阵(S 矩阵)的参数。另外,输入阻抗,输出阻 抗和导纳也被计算。交流网络分析是交流小信号分析的一个组成部分,因此,.NET 语句也要求与.AC 语句配合使用。 一般形式:单端网络 .NET input 或 .NET input 双端网络 .NET output input 其中: input 交流输入电压或电流源名 output 输出端口。它可以是输入电压,如 V(n1,n2),也可以是输出 电 流,如 I(source) 或 I(element) RIN 代表输入或源电阻值的关键字。RIN 值被用来计算输出阻抗 和导纳,也可以用来计算散射参数。RIN 的缺省值是 1Ω ROUT 代表输出或负载电阻值的关键字。ROUT 值被用来计算输入 阻抗和导纳,也可以用来计算散射参数。ROUT 的缺省值是 1Ω 例:单端网络 .NET VINAC RIN=50 .NET IIN RIN=50 双端网络 .NET V(10,30) VINAC ROUT=75 RIN=50 .NET I(RX) VINAC ROUT=75 RIN=50 三.瞬态分析语句 1.瞬态分析.TRAN 瞬态分析是与时间有关的电路特性分析。HSPICE 在进行瞬态分析时首先执 行直流工作点分析,并以此为初始条件开始进行瞬态分析,除非在.TRAN 语句中 也包含了 UIC 参数,则.TRAN 语句进行瞬态分析时,从.IC 语句中规定的节点电 压开始进行。值得注意的是,对于振荡器电路或带有反馈的电路,因为其没有稳 态工作点,所以在瞬态分析时,必须把反馈回路打断,这样瞬态分析开始前才能 进行直流工作点计算。 例如: .TRAN 1ns 100ns UIC .op 20ns 42 这个例子说明.TRAN 语句由于包含 UIC 参数,其瞬态分析从.IC 语句中规定 的初始条件开始,并且说明.OP 语句在瞬态分析期间能被用来存储一个直流工作 点的计算值。上述例子中说明在瞬态分析期间在 t=0 和 t=20ns 时.OP 语句计算 了瞬态工作点。 在瞬态分析中,若出现“internal timestep too small”信息,则表示电 路分析不收敛。造成不收敛的原因可能是所调用的初始条件没有充分抑制实际直 流工作点值。 瞬态分析最常用的形式是: .TRAN TSTEP TSTOP 其中 TSTEP 是行打印机输出的打印或作图的增量,亦即瞬态分析的步长。 TSTOP 是终止时间,TSTART 是初始时间,如果省去 TSTART,HSPICE 用缺省值 0.0。 瞬态分析总是从时间为零开始,在时间为零到 TSTART 的时间间隔内,瞬态电路 分析仍进行(为了达到一个稳态),但没有输出,而且瞬态分析值没有存储起来。 在 TSTART 和 TSTOP 间隔内进行的计算才被存储并输出。 HSPICE 还可以进行多种用途的瞬态分析: (1)单点分析 .TRAN var1 START=start1 STOP=stop1 STEP=incr1 .TRAN var1 START= STOP= + 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 + (6)优化: .TRAN DATA=datanm OPTIMIZE=opt_par_fun RESULTS=measnames + MODEL=optmode 43 其中 : DATA=datanm 有关 .TRAN 语句中的数据名 MONTE=val 表示一个随机产生数,用来从某一分布选择参数,这个 分布可以是高斯分布、均匀分布或者随机范围分布。 np 以十进制或倍频程变化的点的数目,也可以是代表上述 关键字的数字 param_exp... 用户规定的表达式,例如:param_exp1... param_expN pincr 示电压、电流、分量或模型参数及温度的增量。值得 注意的是:若“type”变量在语句中被设置,则“np”值 将代替“pincr”值 pstart 起始电压、电流、温度、任何分量或模型参数指。 pstop 终止电压、电流、温度、任何分量或模型参数值。 如果“POI”变量在语句中被设置,则一个参数值表将 替代“pstart”和“pstop”设置 START 打印或绘图开始时间。值得提醒的是,当 .TRAN 语句 连同 .MEASURE 语句一起用时,START 时间要设置成 0。即从零时间开始打印或绘图,否则会导致.MEASURE 语句得出不正确结果 SWEEP 在 .TRAN 语句中被用来规定第二次扫描的关键字。 tincr1... 打印机上打印或绘图点增量的设置。 tstop1... 瞬态分析终止时间。 type 可以用下列任何一个关键字表明分析类型 DEC 十进制变量 (变量按十个一组的数量级变化进行分 析) OCT 倍频程变量 (变量按倍频程规律变化进行分析) LIN 线性变量 (变量按线性规律变化进行分析) POI 参数点表 (按所列参数点表进行分析) UIC 在 .TRAN 语句中设置了 UIC 参数后,HSPICE 进行瞬态分 析时用 .IC 语句或各分量中“IC=”参数所规定的值作为 其初始条件(节点电压),而不用静态工作点作为初始条 件 var 可以是独立电压源或电流源名,任何分量或模型的参数, 也可以是用来表明温度扫描的关键字“TEMP” 下面给出几个瞬态分析的实际例子: The following example performs and prints the transient analysis every 1ns for 100ns. .TRAN 1NS 100NS The following example performs the calculation every 0.1ns for the first 25ns, and then every 1ns until 40ns; the printing and plotting begin at 10ns. .TRAN .1NS 25NS 1NS 40NS START=10NS The following example performas the calculation every 10ns for 1us; the 44 initial DC operating point calculation is bypassed, and the nodal voltages specified in the .IC statement (or by IC parameters in element statements) are used to calculate initial conditions. .TRAN 10NS 1US UIC The following example increases the temperature by 10°C through the range -55°C to 75°C and performs transient analysis for each temperature. .TRAN 10NS 1US UIC SWEEP TEMP -55 75 10 The following performs an analysis for each load parameter value at 1pF,5pF, and 10pF. .TRAN 10NS 1US SWEEP load POI 3 1pF 5pF 10pF 2.傅立叶 (Fourier) 分析 .FOUR 傅立叶分析是瞬态分析的一部分,HSPICE 在 tstop-fperiod 到 tstop 的 时间间隔内进行傅立叶分析,tstop 就是 .TRAN 语句中的终止时间,而 fperiod 是傅立叶分析的基频。傅立叶分析时不是所有的瞬态结果都要用到,只用到瞬态 分析分析终止时间 TSTOP 之前的基频的一个周期。傅立叶分析时间是 TSTOP- (TSTOP-1/fperiod)=1/fperiod,就是说,瞬态分析至少要持续 1 / fperiod。 傅立叶分析能够得到基频、DC 分量和第 2 到第 9 次谐波(交流分量)。 为了得到最高的精度,应把 .OPTION DELMAX 设置成 period / 100。对那 些高谐振因子(高 Q 值)电路,诸如晶振电路、谐振电路及有源滤波器等 DELMAX 可被设置得小些(比 period /100 小〕。 一般形式: .FOUR freq ov1 其中 : freq 傅立叶分析的基频 ov1… 是要求分析的输出变量 (节点电压) 例: .FOUR 100K V(5) §3.2 设置初始状态语句 设置初始状态是为在电路模拟中计算偏置点而设定一个或多个电压 (电流) 值的过程。在模拟非线性电路、振荡电路及触发器电路的直流或瞬态特性时,常 出现解的不收敛现象,当然实际电路不一定没有解。其原因是偏置点发散或收敛 的偏置点不能适应多种情况。设置初始值最通常的原因就是在两个或更多的稳定 工作点中选择出一个,使模拟顺利进行。 初始状态的设置除了在元器件描述语句中使用的 IC=…以外,还可用 .IC 和 .DCVOLT 及 .NODESET 语句来实现。 一.初始条件语句.IC 和.DCVOLT .IC 语句或.DCVOLT 语句是用来设置瞬态分析初始条件的,并取决于.TRAN 语句中是否规定了参数 UIC。该语句有两种不同的解释。 1.当.TRAN 语句中规定了 UIC 参数时,HSPICE 不去计算初始直流工作点, 而 45 用.IC 语句总规定的节点电压计算电路中的初始条件。这和每个器件语句中规定 的 IC 参数是完全等效的,但更为方便。这时仍规定一些 IC=…值,在器件语句中 规定的 IC=…值优先于.IC 语句的值被考虑。由于在瞬态分析前没有计算直流偏置 (初始瞬态〕解,如果要用这些值来计算器件的初始条件,就应在.IC 语句中仔 细设定各点的直流电压值。 2.当.TRAN 语句中未规定 UIC 参数时,HSPICE 在瞬态分析前先计算直流工作 点。这时.IC 语句中指定的节点电压仅当作求解直流工作点时相应的节点初始值。 而在瞬态分析时,对这些节点的电压限制就取消了 一般形式: .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 语句是用来帮助直流解的收敛,并不影响最后得到的工作点(对多 稳态电路除外)。一旦由该语句在指定的节点上给出了规定的电压后,HSPICE 先按这些节点电压来求解直流工作点,在解收敛后就去掉这些约束条件继续选 代,直到算得真正的解为止。所以,.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。在电路模 拟中,若有这三种或三种语句共存时,HSPICE 进行电路特性分析时优先考虑的 次序是(1) IC = ... (2) .IC (3) .NODESET。如.IC 语句和.NODESET 语句共存 时,.IC 语句将取代.NODESET 语句。 §3.3 统计分析于参数变化分析 46 在电路的设计和性能模拟中,通常是从已知的激励源及给定电路中各元器件 的值来分析和计算电路的工作状态及其响应,但将这些计算结果与实际测量值进 行比较时,往往不相符。这是因为设计计算的标称值与实际使用的元器件值中那 些存在着一定容差的随机数值总是有一定的差异,这是一方面。另一方面,实际 电路在实际使用中其参数值会随着工作条件的变化而发生变化,为了正确把握电 路设计结果与实际情况的差异,进而进一步完善电路的设计性能,在电路性能模 拟时进行电路的容差分析(蒙特卡罗分析)、最坏情况(worst case)及参数变化 分析是必要的。本节主要介绍 HSPICE 中常用的统计分析与参数变化分析方法。 一。蒙特卡罗(MONTE CARLO〕分析.MC 蒙特卡罗分析法是使用随机数发生器按元件值的概率分布来选择元件,然后 对电路进行模拟分析。所以蒙特卡罗分析可在元器件模型参数赋给的容差范围 内,进行各种复杂的分析,包括直流分析,交流及瞬态特性分析。这些分析结果 可以用来预测电路生产时的成品率及成本等。 蒙特卡罗分析法是在给定电路中各元件容差范围内的分布规律,然后用一组 组的随机数对各元件取值,并确立了如下的分布规律: (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=val 上述应用中的“val”表示蒙特卡罗分析中迭代的次数。一般较合理的取值是 30。经 30 次迭代蒙特卡罗统计分析后,若所有电路性能都合格,则在实际应用 中,电路的 80%以上元件特性正确的概率可达 99%。 二.最坏情况分析 最坏情况分析经常被用来对 MOS 和双极型集成电路进行参数极端情况的分 析,一般用来作最坏情况分析的参数是取其统计分布的+/-2σ 或+/-3σ 值来进 行的。所选取的参数作最不利的组合,如:Fast、Slow、FF、SS、FS 等,而后 在这种情况下进行电路性能模拟,从而进一步调整电路设计参数,最后以一种符 合实际的折衷方法完善电路的设计。 47 三.温度特性分析 .TEMP .TEMP 语句规定了电路在什么温度下进行模拟,HSPICE 允许用户对三种温度 加以规定: (1)模型参考温度。这个温度由.MODEL 语句中的 TREF 参数决定。 (2)电路温度。由.TEMP 语句或一些 TEMP 参数决定。用户也可以通过设置 DTEMP 参数来改变某个特定元件的温度。电路温度的缺省值取 TNOM 值。 (3)单个元件温度。这是用 DTEMP 参数的扩展功能。 HSPICE 运行中的温度可以用.TEMP 语句或.DC、.AC、.TRAN 语句中的 TEMP 参数来决定。电路模拟时若未写.TEMP 语句或未设定 TEMP 参数,则电路模拟将 在 TNOM 值下进行,TNOM 值在.OPTION 语句中设定,其缺省值是 250 C 。 一般形式:.TEMP t1 < t2 < t3... >> 其中: t1, t2 ... 电路模拟时设定的温度值,HSPICE 对每一个设定的温度值 都做一遍模拟 下面给出几个实例: .TEMP -55.0 25.0 125.0 The .TEMP statement sets the circuit temperatures for entire circuit simulation.HSPICE uses the temperature set in the .TEMP statement along with the TNOM option setting (or theTREE model parameter) and the DTEMP element temperature,and simulates the circuit with with individual elements or model temperature. .TEMP 100 D1 N1 N2 DMOD DTEMP=30 D2 NA NC DMOD R1 NP NN 100 DTEMP =-30 .MODEL DMOD D IS=1E-1.5 VJ=0.6 CJA=1.2E-13 CJP=1.3E-14 TREF=60.0 From the .TEMP statement ,the circuit simulation temperature is given as 100 0 C.Since TNOM is not specified,it defaults to 25o C .the temperature of the diode is given as 300 C above the circuit temperature by the DTEMP parameter.That is, D1temp=1000 C + 300 C =1300 C .the diode,D2,is simulated at1000 C .R1 is simulated at 700 C .Since TREE is specified at 600 C in the diode model statement,the diode model parameters given are derated by 700 C (1300 C - 600 C ) fordiode D1 and by 400 C (1000 C - 600 C ) for diode D2. The value of R1 is derated by 450 C ( 700 C -TNOM). 48 四.参数及表达式定义语句.PARAM .PARAM 语句被用来对 HSPICE 模拟中的元件和模型所指定的关键字进行赋 值,这特别适合要调用不同参数进行模拟以及统计分析(蒙特卡罗分析)等场合。 因为.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 分布的正常值上改变+/- (nominal_val.rel_variation) sigma 规定的统计分布图。 multiplier 计算重复的次数,缺省值是 1 §3.4 输入和输出控制语句 在用 HSPICE 进行电路模拟时,还需要对输入文件和输出的结果加以处理和 控制,本章主要介绍几种 HSPICE 运行常用的输入和输出控制语句。 一.输入控制语句 1. ALTER 语句 .ALTER 语句功能是能针对设定的不同参数和数据自动进行更替来进行电路的 模拟。 .ALTER 语句中不能包含.PRINT、.PLOT、.GRAPH 或其它任何 I/O 语句,但可以 包含所有用于分析的语句,如.DC、.AC、.OP、.TRAN、.FOUR、.DISTO、.PZ、.TF 等。除此之外,.ALTER 语句的程序块还可包括一些分量语句(除源分量外)、.DATA 49 语句、.DEL LIB 语句、.INCLUDE 语句、.IC 和.NODESET 语句、.LIB 语句、.MODEL 语句、.OPTION 语句、.PARAM 语句、.TEMP 语句等 一般形式: .ALTER < title_string > 其中 title_string 不能超过 72 个字符。 下面是几个运用.ALTER 语句的实际例子: Example 1 FILE1: ALTER1 TEST CMOS INVERTER .OPTIONS ACCT LIST .TEMP 125 .PARAM WVAL=15U VDD=5 * .OP .DC VIN 0 5 0.1 .PLOT DC V(3) V(2) * VDD 1 0 VDD VIN 2 0 * M1 3 2 1 1 P 6U 15U M2 3 2 0 0 N 6U W=WVAL * .LIB 'MOS.LIB' NORMAL .ALTER .DEL LIB 'MOS.LIB' NORMAL $removes LIB from memory $PROTECTION .PROT $protect statements below .PROT .LIB 'MOS.LIB' FAST $get fast model library .UNPROT .ALTER .OPTIONS NOMOD OPTS $suppress model parameters printing * and print the option summary .TEMP -50 0 50 $run with different temperatures .PARAM WVAL=100U VDD=5.5 $change the parameters VDD 1 0 5.5 $using VDD 1 0 5.5 to change the $power supply VDD value doesn't 50 $work VIN 2 0 PWL 0NS 0 2NS 5 4NS 0 5NS 5 $change the input source .OP VOL $node voltage table of operating $points .TRAN 1NS 5NS $run with transient also M2 3 2 0 0 N 6U WVAL $change channel width .MEAS SW2 TRIG V(3) VAL=2.5 RISE=1 TARG V(3) + VAL=VDD CROSS=2 $measure output * .END Example 1 calculates a DC transfer function for a CMOS inverter. The device is first simulated using the inverter model NORMAL from the MOS.LIB library. By using the .ALTER block and the .LIB command, a faster CMOS inverter, FAST, is substituted for NORMAL and the circuit is resimulated. With the second .ALTER block, DC transfer analysis simulations are executed at three different temperatures and with an n-channel width of 100 µm instead of 15 µm. A transient analysis also is conducted in the second .ALTER block, so that the rise time of the inverter can be measured (using the .MEASURE statement). Example 2 FILE2: ALTER2.SP CMOS INVERTER USING SUBCIRCUIT .OPTIONS LIST ACCT .MACRO INV 1 2 3 M1 3 2 1 1 P 6U 15U M2 3 2 0 0 N 6U 8U .LIB 'MOS.LIB' NORMAL .EOM INV XINV 1 2 3 INV VDD 1 0 5 VIN 2 0 .DC VIN 0 5 0. 1 .PLOT V(3) V(2) .ALTER .DEL LIB 'MOS.LIB' NORMAL 51 .TF V(3) VIN $DC small-signal transfer function * .MACRO INV 1 2 3 $change data within subcircuit def M1 4 2 1 1 P 100U 100U $change channel length,width,also $topology M2 4 2 0 0 N 6U 8U $change topology R4 4 3 100 $add the new element C3 3 0 10P $add the new element .LIB 'MOS.LIB' SLOW $set slow model library $.INC 'MOS2.DAT' $not allowed to be used inside $subcircuit allowed outside $subcircuit .EOM INV * .END In Example 2, the .ALTER block adds a resistor and capacitor network to the circuit. The network is connected to the output of the inverter and a DC small-signal transfer function is simulated. 2. .DATA 语句 .DATA 语句针对每一个模拟过程期间,那些需要改变的参数提供了一种简便 的改变参数并给出数值设置的有效方法。它使模拟成为一种内循环,而不需根据 不同参数要求去重复读取数据再建立模拟过程,从而节省了计算时间。.DATA 语 句中可以读入任何数据 。并在一个输出曲线中绘制出调用不同参数进行模拟的 结果。. DATA 语句特别适合做数据驱动分析。 根据不同要求 .DATA 语句有三种语句形式: (1)inline .DATA 语句 inline .DATA 语句使参数数据以列表形式在 .DATA 语句程序块中出现。 一般形式: .DATA datanm pnam1 + pval1 < pval2 pval3… pval…> + pval1' .ENDDATA 其中: datanm 在.TRAN、 .DC 或.AC 语句设定的数据调用名 pnami 在 .PARAM 语句中用到的一些参数名 pvali 参数值 下面是几个运用.ALTER 语句的实际例子: .TRAN 1n 100n SWEEP DATA=devinf 52 .AC DEC 10 1hz 10khz SWEEP DATA=devinf .DC TEMP -55 125 10 SWEEP DATA=devinf .DATA devinf width length thresh cap + 50u 30u 1.2v 1.2pf + 25u 15u 1.0v 0.8pf + 5u 2u 0.7v 0.6pf + ... ... ... ... .ENDDATA Hspice performs the above analyses for each set of parameter values defined in the .DATA statement. For example, the program first takes the width=50u, length=30u, thresh=1.2v, and cap=1.2pf parameters and performs .TRAN, .AC and .DC analyses. The analyses are then repeated for width=25u, length=15u, thresh=1.0v, and cap=0.8pf, and again for the values on each subsequent line in the .DATA block. (2)Concatenated .DATA File 语句 Concatenated .DATA File 语句提供了一种以相同数字的列,一列接一列 排列的数据表示方式。例如有 A, B, C 三个文件: A B C aaa bbb ccc aaa bbb ccc aaa 则数据排成: aaa aaa aaa bbb bbb ccc ccc 一般形式: .DATA dataname MER FILE='file1' p1=1 p2=3 p3=4 p4=4 p1=1 .END DATA 其中:dataname 由 .DC、.AC 或.TRAN 语句的设置给出,关键字 MER 告诉 HSPICE 去访问 Concatenated .DATA 文件。 (3)Column Laminated .DATA 语句 53 Column Laminated .DATA 语句提供了一种以具有相同行的列并排排列的数 据排列形式。例如,有三种文件 D E F D E F d1 d2 d3 e4 e5 f6 d1 d2 d3 e4 e5 f6 d1 d2 d3 e4 e5 f6 则数据排列成: d1 d2 d3 e4 e5 f6 d1 d2 d3 e4 e5 f6 d1 d2 d3 e4 e5 f6 一般形式: .DATA dataname LAM FILE='file’ p1=1 p2=2 p3=3 p4=1 p5=2 p6=1 .ENDDATA 其中:LAM 是一个关键字,它告诉 HSPICE 去访问 Colum Laminated .DATA 程序块。在这个程序块中所包含的文件不能超过 10 个。 3.任选项语句 .OPTIONS 任选项语句是为了满足用户的需要或特殊的模拟目的,允许用户重新设置程 序的参数或/和控制程序的功能 一般形式: .OPTIONS opt1 其中 : opt1…是所有输入控制选项。一般以=x 形式出现。其中, 是控制选项名称,“x”表示那些选项的赋值。 不同的任选项在语句中可任意顺序排列。.OPTIONS 语句中的选项有两种, 一种是无值的,一种是有值的。关于各选项关键字含义描述列于本讲义附录二中。 例 : . OPTIONS RELTOL=0.05 NOPAGE NOECHO DEFL=12U + DEFW=5U DEFAD=150P DEFAS=150P .OPTIONS ACCT LIST ITL1=60 .OPTIONS DISTRIBUTION=GAUSS 二.输入控制语句 本节介绍几条 HSPICE 常用的输出控制语句。 1.打印语句.PRINT .PRINT 语句规定了要输出打印的变量值。 一般形式 其中: .PRINT antype ov1 antype: 是用户规定的输出分析类型: DC 、AC、TRAN 、 54 NOISE 或 DISTO ov1… 要被打印的输出变量。 在.PRINT 语句中一个变量最多被赋值 32 位。 下面给出几个实用例子: .PRINT TRAN V(4) I(VIN) PAR(`V(OUT)/V(IN)') This example prints out the results of a transient analysis for the nodal voltage named 4 and the current through the voltage source named VIN. The ratio of the nodal voltage at node “OUT” and node “IN” is also printed. .PRINT AC VM(4,2) VR(7) VP(8,3) II(R1) VM(4,2) specifies that the AC magnitude of the voltage difference (or the difference of the voltage magnitudes, depending on the value of the ACOUT option) between nodes 4 and 2 is printed. VR(7) specifies that the real part of the AC voltage between nodes 7 and ground is printed. VP(8,3) specifies that the phase of the voltage difference between nodes 8 and 3 (or the difference of the phase of voltage at node 8 and voltage at node 3 depending on the value of ACOUT options) is printed. II(R1) specifies that the imaginary part of the current through R1 is printed. .PRINT AC ZIN YOUT(P) S11(DB) S12(M) Z11(R) The above example specifies that the magnitude of the input impedance, the phase of the output admittance, and several S and Z parameters are to be printed. This statement would accompany a network analysis using the .AC and .NET analysis statements. .PRINT DC V(2) I(VSRC) V(23,17) I1(R1) I1(M1) This example specifies that the DC analysis results are tprinted for several different nodal voltages and currents through the resistor named R1, the voltage 55 source named VSRC, and the drain- to-source current of the MOSFET named M1. .PRINT NOISE INOISE In this example the equivalent input noise is printed. .PRINT DISTO HD3 SIM2(DB) This example prints the magnitude of the third-order harmonic distortion and the decibel value of the intermodulation distortion sum through the load resistor specified in the .DISTO statement. .PRINT AC INOISE ONOISE VM(OUT) HD3 In this statement, specifications of NOISE, DISTO, and AC output variables are included on the same .PRINT statements. .PRINT pj1=par(‘p(rd) +p(rs)‘) This statement prints the value of pj1 with the specified function. 2.打印宽度语句 .WIDTH .WIDTH 语句决定了打印输出的宽度。 一般形式:.WIDTH OUT={80|132} 其中:OUT 表示输出打印的宽度,可设置成 80 或 132 两种。打印宽 度也可用.OPTION 语句中的 CO 参数来设置。 例:.WIDTH OUT=132 $SPICE compatible style .OPTION CO=132 $preferred style 3.绘图语句 .PLOT .PLOT 语句能对某种选定分析的结果进行绘图输出,在一个绘图输出中可以 多达 32 个变量。 一般形式: .PLOT antype ov1 <(plo1,phi1)>… <(plo32,phi32)> 其中: antype 规定绘图的分析类型。它们可以是 DC、AC、TRAN 、 NOISE 或 DISTO 中的一个。 ov1… 绘图输出的变量 plo1, phi1… 对绘图输出规定的上限和下限。 在.PLOT 语句中若没有规定绘图限制,HSPICE 将自动地确定所有绘图的输出 变量的最小值和最大值,并换算合适的作图比例。若各输出变量的值差别是数量 级的,那么输出变量在一张图上绘制时可采用不同的比例和作图符号绘图。在同 一张图上有多个输出变量时,第一个被指定的变量,在绘图的同时还将打印出值 来。但如果要求把所有变量值都打印时,应具有相应的.PRINT 语句。绘图输出 56 的宽度由.OPTION 语句中的参数来决定,若 CO=80,则产生一个 50 列宽的绘图范 围,若 CO=132,则产生一个 100 列宽的绘图范围。 下面给出几个实际例子: In the following example, PAR invokes the plot of the ratio of the collector current and the base current of the transistor Q1. .PLOT DC V(4) V(5) V(1) PAR(`I1(Q1)/I2(Q1)') .PLOT TRAN V(17,5) (2,5) I(VIN) V(17) (1,9) .PLOT AC VM(5) VM(31,24) VDB(5) VP(5) INOISE The second of the two examples above uses the VDB output variable to plot the AC analysis results of the node named 5 in decibels. Also, NOISE results may be requested along with the other variables in the AC plot. .PLOT AC ZIN YOUT(P) S11(DB) S12(M) Z11(R) .PLOT DISTO HD2 HD3(R) SIM2 .PLOT TRAN V(5,3) V(4) (0,5) V(7) (0,10) .PLOT DC V(1) V(2) (0,0) V(3) V(4) (0,5) In the last example above, Hspice sets the plot limits for V(1) and V(2), while 0 and 5 volts are specified as the plot limits for V(3) and V(4). 4.探针显示语句.PROBE .PROBE 语句把输出变量存贮到接口文件和图形数据文件中。该语句规定了 哪些参数将在输出列表中被打印出来。如果用户仅仅对输出数据感兴趣,而不想 在列表文件中列入列表或绘图数据,那就设置.OPTION PROBE 和用.PROBE 语句来 规定想要在输出列表中进行存贮的数值。 一般形式: .PROBE antype ov1… 其中: antype 是要进行绘图的分析类型,这些类型可以是 DC、AC、 TRAN、NOISE 或 DISTO 中的一种。 ov1… 绘图输出的变量。一个.PROBE 语句最多用 32 个输出变 量。 例: .PROBE DC V(4) V(5) V(1) beta=PAR('I1(Q1)/I2(Q1)') 5.图形语句 .GRAPH .GRAPH 语句产生一个高分辨率的输出绘图结果。这个语句与一个附加了一 个可选模型的.PLOT 语句功能一样。.GRAPH 语句产生一个.gr#图形数据文件,同 时直接发送到一个缺省的高分辨率图形发生器(由 meta.cfg 配置文件中 PRTDEFAULT 规定)。.gr#文件中的#表示存在的文件序号,.GRAPH 产生的.gr# 文件最大序号是 36。.GRAPH 语句对 HSPICE 的 PC 版本不支持。 一般形式: .GRAPH antype 57 其中: + ov1, ov2,… ov32 (plo,phi) antype 是要进行绘图的分析类型,这些类型可以是 DC、AC、 TRAN、NOISE 或 DISTO 中的一种 mname .GRAPH 语句参考的模型名。.GRAPH 语句和它的绘图类型 允许直接在 HSPICE 中进行高分辨率绘图。 unam1… 用户规定的输出名,这些输出名相对应输出变量 ov1…ov32(相 应的输出名是 unam1…unam32),在高分辨率图形输出中这些 输出名替代了输出变量 ov1…ov2 可被打印的输出变量,最多 32 个变量一次打印输出。这些变 量可以是电压、电流,也可以是不同分析中的分量变量。代 数表达式也可以作为变量输出,但一定要在 PARAM 语句中对 这个代数式加以定义 plo,phi 绘图中设定的上限和下限,这个上、下限在.GRAPH 语句中仅 仅在语句最后设置 6.图形显示语句.OPTION POST .OPTION POST 语句用于在终端上显示模拟结果的高分辨率图形曲线。POST 的缺省值提供了许多有用的参数。 7.统计运行过程语句.OPTION ACCT .OPTION ACCT 语句在电路模拟过程结束后,提供了一个运行过程的统计结 果。ACCT 参数是可选的: (1) .OPTION ACCT 说明要给出运行过程统计报告 (2) .OPTION ACCT=1 与(1)的功能一样,ACCT=1 是缺省值 (3) .OPTION ACCT=2 说明要给出一个正矩阵统计报告 下面给出一个实例: The following output appears at the end of the output listing. ****** job statistics summary tnom= 25.000 temp= 25.000 # nodes = 15 # elements= 29 # real*8 mem avail/used= 333333/ 13454 # diodes= 0 # bjts = 0 # jfets = 0 # mosfets = 24 analysis time # points tot. iter conv.iter op point 0.24 1 11 transient 5.45 161 265 103 rev= 1 pass1 0.08 readin 0.12 errchk 0.05 58 setup 0.04 output 0.00 the following time statistics are already included in the analysis time load 5.22 solver 0.16 # external nodes = 15 # internal nodes = 0 # branch currents= 5 total matrix size= 20 pivot based and non pivotting solution times non pivotting: ---- decompose 0.08 solve 0.08 matrix size( 109) = initial size( 105) + fill( 4) words copied= 111124 total cpu time 6.02 seconds job started at 11:54:11 21-sep92 job ended at 11:54:36 21-sep92 The definitions for the items in the above listing follow: # BJTS Number of bipolar transistors in the circuit # ELEMENTS Total number of elements # JFETS Number of JFETs in the circuit # MOSFETS Number of MOSFETs in the circuit # NODES Total number of nodes # POINTS Number of transient points specified by the user on the .TRAN statement. JTRFLG is usually at least 50 unless the option DELMAX is set. CONV.ITER Number of points that the simulator needed to take in order to preserve the accuracy specified by the tolerances DC DC operating point analysis time and number of iterations required. The option ITL1 sets the maximum number of iterations. ERRCHK Part of the input processing MEM + Amount of workspace available and used for the simulation AVAILUSED Measured in 64-bit (8-byte) words OUTPUT Time required to process all prints and plots LOAD Constructs the matrix equation SOLVER Solves equations PASS1 Part of the input processing READIN Specifies the input reader that takes the user data file and any additional library files, and generates an internal 59 representation of the information REV Number of times the simulator had to cut time (reversals). This is a measure of difficulty. SETUP Constructs a sparse matrix pointer system TOTAL JOB TIME Total amount of CPU time required to process the simulation. This is not the length of actual (clock) time that was taken, and may differ slightly from run to run, even if the runs are identical. The ratio of TOT.ITER to CONV.ITER is the best measure of simulator efficiency. The theoretical ratio is 2:1. In this example the ratio was 2.57:1. SPICE generally has a ratio of 3:1 to 7:1. In transient, the ratio of CONV.ITER to # POINTS is the measure of the number of points evaluated to the number of points printed. If this ratio is greater than about 4, the convergence and timestep control tolerances might be too tight for the simulation. 第四章 HSIPCE 在电路模拟中的运用 HSPICE 因其具有多功能和高兼容性等特点,问世以来被广泛运用于集成 电路设计领域,HSPICE 的高兼容性体现在它可以和许多 EDA 软件,诸如 Cadence、 Mentor、Valid、Work View 等 配套使用。本章主要介绍 HSPICE 和 Work View 连用情况下的运行情况。WorkView 与 HSPICE 连用对电路性能进行模拟的关联 性如图 4.1 所示 Viewtrace Workview CSDF H S P IC E Schematic Netlist 图 4.1 Work View 与 HSPICE 连用关联图 §4.1 输入文件的生成 60 HSPICE 和 Workview 连用时,在输入文件的.OPTION 语句中必须加入 CSDF 可选项。在模拟过程中若需要改变输入文件中的某一部分后再进行模拟,可以 在结束语句.END 之前加入.ALTER 语句,然后把要改的部分重写一遍,则 HSPICE 模拟完.ALTER 语句之前的部分后,会根据改过的条件重新再进行模拟一遍。 HSPICE 的输入文件可以用两种方法获得: 1. 用文本编辑软件直接写入文件,可以用 vi 软件,也可以用其它文本编 辑软件来写。 2. 在 Workview 上先画出电路图(Schematic),然后在 Workview 主菜单上 选中 Export 项,然后选 Netlist 项,再选 HSPICE 项,就可将 Schematic 自动 生成用于 HSPICE 模拟的电路连接文件(xxx.cir)。然后,根据实际情况对该文 件加以 必要的修改、补充,即生成 HSPICE 的输入文件 xxx.cir。 在用 Workview 进行电路图输入时,首先要对将要调用的元件建立元件库。 下面以一个 N 沟 MOS 管为例说明建立元件库的方法。 第一步:建单元库。在 Workview 中建立一个 MODULE 型的 SYMBOL 库以备画 Schematic 时调用。下面以建一个如图 4.1.1 所示 MOS 管 SYMBOL 为例加以介绍 。 ND NG NB NS 图 4.1.1 MOS 管 SYMBOL 第二步:确定所建 SYMBOL 的参数。在 SYMBOL 状态下,键入 CATTR 命令, 屏幕上出现如表 4.1.1 所示的表格,在表格中填入各项参数及其对应值。 MODEL ORDER PINORDER PREFIX REFDES W L ? MODEL$ W= L= ND NG NS NB M M? ? ? 表 4.1.1 在第二章中我们已介绍过 HSPICE 输入文件中 MOS 管的描述语句,上述表格 中的参数就是为将来由 Schematic 转成 netlist 时得到有关器件的描述语句而设 的。表的第一栏是参数名称,第二栏是参数值,其中 MODEL 指定了模型类型; ORDER 说明描述语句中描述节点号后的各项参数排列次序。例如有一描述语句 61 Mxxx ND NG NS NB MNAME W=VAL L=VAL,ORDER 说明 “MNAME W=VAL L=VAL ”在上述描述语句中排列的次序,该部分中的 “MODEL$”由参数 MODEL 指定,“W=”和“L=”可由表中参数 W 和 L 指定;PINORDER 说明描述语句中器件的节点定义,对 MOS 器件一般排成漏、栅、源和衬底节点次 序,如上述语句中的“ND、NG、NS、NB”;PREFIX 即前缀,由此得到语句中代 表元件名的第一个关键字,MOS 器件关键字是“M”;REFDES 是元件名称,对应 上述语句中的“Mxxx”部分。W、L 代表该 MOS 器件中的沟道宽和长。表格中参 数值为“?”的项,表明可以在将来调用该元件时根据实际情况来加以指定,提 高了应用灵活性。 第三步:输入电路图。在输入电路时,若要对一个 NMOS 管加以参数定义, 可选中一个待定 MOS 管,再键入 CATTR 命令,屏幕上出现如表 4.1.2 的表格(第 三栏最初是空的,待填〕,可根据实际情况填入各参数的值,例如对于一个 MOS 管在表中填入如表 4.1.2 第三栏中的参数: MODEL ? ORDER MODEL$ W= L= PINORDER ND NG NS NB PREFIX M REFDES M? M21 W ? 10U L ? 1U 表 4.1.2 用类似的方法可以对电路图中不同类型的元器件的参数进行赋值。 §4.2 HSPICE 在电路模拟中的使用 完成电路图输入并生成相应的网表文件后,可以使用 HS- PICE 来对电路 性能进行模拟了。键入以下命令,启动 HSPICE 模拟程序: hspice filename (例如 demo.sp) 若使用 GSI 软件,则直接键入 gsi&命令。此命令在打开 Meta Window 窗口的同 时,还会打开 Graph Window 和 File Selection Dialog 窗口,在 Meta Window 中点击 Hspice,在 File Selection Dialog 中选择所需网表文件,然后点击 HspiceRun 中的 Run 即可运行 HSPICE 进行电路模拟;也可以在点击 MetaWindow 窗口中的 Hspice 后,直接在 HspiceRun 窗口内键入 InputFile,即装入需运行 的 Hspice 输入文件,然后点击 Run 即可。 如前几章所述,HSPICE 可进行多种分析。每运行一次 HSPICE 模拟工具, 都会产生一个文字型的输出文件(如 demo.list),并根据分析的种类不同,而 产生相应的图形数据文件。几种常见的输出文件列于表 4.2.1 中: 分析语句 功能 输出文件格式(以电路 demo 为例) 62 .DC .AC .TRAN 直流扫描分析 交流扫描分析 瞬态分析 demo.SW# demo.AC# demo.TR# 表 4.2.1 此外,HSPICE 运行时还会产生用于硬件拷贝(hardcopy)的图形数据文件(如 demo.CR#),上述文件名的后缀中,# 是序号,表明此种分析运行的次数。若一 个输入文件中,某种分析只做了一次,则相应的输出文件名的“ # ”为 0; 在输 入文件中用了 .ALTER 语句,则模拟后的输出文件中”#”根据实际运行的次数而 定。 §4.3 HSICE 模拟输出结果显示方法 HSPICE 对电路性能进行模拟后,在其输出结果的图形输出文件中可用多 种方法将模拟得出的图形曲线显示出来。例如用 HSPLOT、GSI、WorkView 及 Cadence 等软件。本节主要介绍 HSPLOT、 WorkView 和 GSI 三种方法。 一 .用 HSPLOT 方法显示 使用 HSPLOT 时,先键入如下命令: HSPLOT filename ( 例如: demo.TRO、demo.SW1 或 demo.ACO 等) 键入上述命令后,屏幕上出现一张菜单,首先键入 p,设定希望看几幅图 形曲线(p 最大值为 6),然后键入 n,逐一选择需显示的节点号,也可以用类似 方法设置菜单上列出的其它项,最后键入 g,此时屏幕上即出现所要观察的波 形图,同时屏幕下方出现菜单,可根据其提示进行各种操作。 二.用 WorkView 显示 我们也可以用 WorkView 中 Viewtrace 的命令看输出结果。首先在主菜单上选中 Window 项,然后在弹出的子菜单上选中 Option 项,再击中 Viewtrace 项并键 入所要显示文件的文件名,打开显示窗口,则该窗口内将出现输出结果波形图。 同样,也可以通过菜单对波形图进行各种操作。 三.用 GSI 软件来显示输出波形图 首先键入 gsi&命令,此命令在打开 Meta Window 窗口的同时,还会打开 Graph Window 和 File Selection Dialog 窗口, 当装入输入文件并运行 Hspice 后, 在 MetaWindow 中会显示输入文件中各相应的 Curves 名,选择需要观测的 Curves 名,然后点击 Draw,即会在 Graph Window 窗口中出现对应的曲线,在 GraphWindow 窗口中通过选择 Panels 项可同时最多看 6 个曲线,也可以在同一 显示坐标中同时显示几种类型曲线,若在观测输出曲线的同时选择 Measurement 选项中的 Turn Measure On 项, 则可以通过移动光标观测各点的 具体数值。 63 本章对如何使用HSPICE软件来进行电路模拟作了一个概述。由于模拟软 件版本不同或使用环境的差异,在具体使用中会有些不同,读者在实际使用中 可有针对性地查阅有关HSPICE的用户手册。 参考文献: 1) 姚立真,《通用电路模拟技术及软件应用 SPICE 和 Pspice》, 电子工业出版社,1994年 2) 〈美〉阿•弗拉吉米列斯科 等,《SPICE通用电路模拟程序用户指 南》,清华大学出版社,1983年 3) HSPICE User’s Manual,Meta-Software,Inc,1996 4) Star-Hspice Manual,Avant,1998 5) 秦世才 等, 《模拟集成电子学》,天津科学技术出版社, 1996 年 6) 梁家昌 等,《线性电路瞬态分析》,机械工业出版社,1987年 7) 陈启康,《HSPICE电路模拟软件讲义》,复旦大学专用集成电 路 与系统国家重点实验室 64 附录一 HSPICE 模型 一. 二极管模型 1.模型参数(LEVEL1、LEVEL3): 2.. 直流参数(LEVEL1、LEVEL3): 65 66 3.电容参数: 4.噪声参数(LEVEL1、LEVEL3): 67 4.温度参数(LEVEL1、LEVEL3): 68

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。