九同方ESPICE语法

来源:互联网 发布:日本反ps软件 编辑:程序博客网 时间:2024/04/28 05:44
  • 第一章ESPICE简介

      ESPICE是NINECUBE公司提供的一款模拟集成电路仿真软件,用于检测电路的连接和功能的完整性,以及预测电路的行为。主要应用于模拟电路和混合信号电路的仿真,能够提供快速和精确的Spice级别的模拟仿真,实现晶体管电路的直流,交流和瞬态分析。针对需要快速收敛的设计,可执行高级Spice精度仿真,同时支持可扩展性能,可以与Cadence ADE 设计平台精密集成,允许设计者在相同环境中接受和传递设计思路。其独特的的分块全矩阵求解技术利用先进的多CPU计算平台和计算集群,可以带来无与伦比的可扩展性和多线程功能。这些特性充分保证了高速可靠的仿真,而不会对结果的精确性产生任何影响。

    1.1 ESPICE的特点

    ESPICE具备绝大多数SPICE的特性,可以实现所有SPICE的仿真功能。同时它还具有许多新的特征,主要包括:
    高精确度  采用独特的分块全矩阵求解技术
    优越的收敛性  采用先进的优化算法,实现计算的快速收敛
    高运算速度  基于互联网云平台,采用先进的多CPU计算机集群,实现多线程的高速计算
    高精度  使用大型计算机集群,对电路所有路径进行精确计算

    第二章ESPICE输入文件与输出文件

      ESPICE对输入网表文件进行运算并产生仿真结果,仿真结果保存在输出列表文件或图形数据文件中。ESPICE的输入文件后缀没有限制 ,可以以自己熟悉的方式命名。

    2.1输入文件

    ESPICE输入文件必须含有一个主文件,其他文件以附件的形式上传。
    输入文件主要包括  :一个主文件,该文件一般即是整个设计的顶层电路的网表;其余文件包括子电路网表、库文件、或者其他功能描述文件。

    2.2 输出文件


    输出文件包括:
    仿真日志文件——logfile.txt 
    该文件内容包括:使用的工具版本信息、仿真时间、输入主文件名称;电路的详细信息,有多少个电阻电容晶体管,多少个节点等;仿真过程有什么错误警告等;执行了哪些仿真;如果网表中有静态工作点分析等,该文件还会打印电路中所有元件的工作状态。如果执行了零极点分析,将会打印零极点信息。如果执行了傅里叶分析,将会打印傅里叶变换结果。

    输出结果文件——以.print为后缀 
    若使用.print语句,则会产生此文件,该文件打印待输出节点的电压电流或者频率等信息。

    图形数据文件——以.raw* 为后缀,*代表数字1,2,3或者为空 
    该文件即仿真后产生的波形文件,它记录了仿真的结果,可以用波形查看工具将该文件绘制成波形。

    其他文件 仿真产生的其他各类文件

    第三章 电路描述语句

    3.1 输入文件组织结构

    一个简单的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                                             

    由上可知,网表中除了描述电路连接关系的语句,其余都是以.开头的语句。

    3.1.1 标题 .TITLE

    标题一般即网表第一行内容,主要介绍该网表的主要功能。也可以不用写标题,若不用标题,一般需将第一行空出。

    3.1.2 结束语句 .END

    它表示整个文件结束,必须放在最后一行。

    3.1.3 注释语句 *或$

    注释语句是用户对程序运算和分析时加以说明的语句,它不参与仿真。
    一般形式为  *<this is a comment>  
    或者        ESPice language $<this is a comment> 
    $一般放在仿真语句后面,必须与仿真语句至少隔一个空格。
    ESPice可以用*注释一整行或后半行

    3.1.4 换行语句 +

    若某条语句很长,须分为多行来写,则可以用+来分行,例如:
    .MODEL  M  NOS  VTO=1  NSUB=1E15  TOX=1000  
    +  UO=800  LEVEL=1  CAPOP=2

    3.1.5 全局定义 .GLOBAL

    一般形式:.GLOBAL  node1  node2  node3…
    输入文件若定义了.GLOBAL 语句,则输入文件所有子电路中与.GLOBAL 节点名相同的节点将都被自动定义成有连接关系。一般线路的电源、地以.GLOBAL 语句定义。

    3.2 元件描述语句

    元件描述语句一般由元件名、元件所连接的电路节点号和元件参数值组成。元件在输入中以一行表示,该行不能以“.”开始。语句中的第一个字母是关键字,它确定了该元件的类型。 
    一般形式: 
    elname <node1 node2...nodeN>  <pnamel=val1>   <pname2=val2>  <M=val> 
    或 elname  <node1 node2...nodeN>  <mname>  <val1 val2...valn> 
    其中: 
    elname: 元件名, 是一个带有一个关键字母的不超过15个字符的字符串。 
    ESPICE 中表示元件的关键字母的含义:  
    C-电容       K-耦合互感
    L-电感       R-电阻
    node1...  节点名,用来说明元件所连接的节点,节点名的第一个字符必须是字母,整个字符串不超过16 个字符(连第一个字母在内)。=()′ ′ ′ ′. ′[ ]等符号不能出现在节点名中。  
    mname:    模型参考名,对除了无源器件外所有元件都是必需的。 
    pname1... 元件参数名,用来标明一些元件的参数值。 
    val1...   赋于的参数值或模型节点,这些数值可以是数值,也可以是代数表达式。 
    M=val     元件的倍增因子。

    3.2.1基本无源器件

    电阻

    一般形式:
    RXXX  n1  n2  <mname>  Rval<TC=TC1<,TC2>> 
              +  <SCAL=val>  <M=val>  <AC=val>  <DTEMP=val> 
              +  <L=val>  <W=val>  <C=val> 
    或  RXXX  n1  n2  <manme>  R=val  <TC1=val> 
     +  <TC2=val>  <SCAL=val>  <M=val>  <AC=val> 
              +  <DTEMP=val>  <L=val>  <W=val>  <C=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 是温
    度系数,其缺省值是零。

    电容电感

    (1) 电容: 
    一般形式:  CXXX  n1  n2  <mname>  capval  <TC=TC1<,TC2>> 
           +<SCALE=val>  <IC=val>  <M=val>  <w=val> <L=val>  <DTEMP=val> 
    或  CXXX  n1  n2  <mname>  C=val  <TC1=val> 
       +<TC2=val>  <IC=val>  <M=val>  <W=val>  <L=val>  <DTEMP> 
    或  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 ...  <IC=val> 
    (2) 电感: 
    一般形式:LXXX  n1  n2  <mname>  Lval  <TC=TC1<,TC2>> 
             +  <SCALE>  <IC=val>  <M=val>  <DTEMP=val> 
    或   LXXX  n1  n2  <mname>  L=val  <TC1=val> 
             +  <TC2=val>  <SCALE=val>  <IC=val>  <M=val>  <DTEMP> 
    或   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 ...  <IC=val> 
    在非线性电容和电感的表达式中,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

    3.2.2 电源

    ESPICE中提供了一些供激励用的独立源和受控源。电源描述语句也由代表电源名称的关键字、连接情况和有关参数值组成。描述电源的关键字含义为: 
    V:  独立电压源         I:  独立电流源
    E:  电压控制电压源      F:  电流控制电流源
    G:  电压控制电流源      H:  电流控制电压源


    独立电压源电流源

    独立电压源以V开头,独立电流源以I开头,它可以有许多激励类型。

    直流源

    一般形式: VXXX  n+  n-  <<DC=>dcval> 
           IXXX   n+  n-  <<DC=>dcval> 
    例  V1  2  0  DC=5v 
       V1  2  0  5v 
       I1  3  0  DC=3mA 
       I2  3  0  3Ma

    交流源

    一般形式:VXXX  n+  n-  <AC<=>acmag,<acphase>> 
             IXXX  n+  n-  <AC<=>acmag,<acphase>> 
    例: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  <td<tr<tf<pw<per>>>>  <)> 
    或:   PU  <(>  <V1  V2  <td<tr<tf<pw<per>>>>  <)> 
    其中:  
           V1:   脉冲源开始前的初始值 
           V2:   脉动值 
           td:   第一个脉冲开始前的延迟时间,缺省值为 0.0 
           tr:   脉冲上升时间,缺省值为 TSTEP 
           tf:   脉冲下降时间,缺省值为 TSTEP
           pw:   脉冲宽度,缺省值为 TSTEP 
           per:  脉冲周期,缺省值为 TSTEP
    例: VIN  3  0  PULSE  (-1  1  2ns  2ns  2ns  50ns 100ns) 
         V1  99  0  PU  lv  hv  tdlay  tris  tfall  tpw  tper 
       上述第二个例子中将用.PARAM语句中的参数来定义此脉冲源的相关值。

    分段线性源 PWL,PL

    一般形式: PWL <(> t1 v1 <t2 v2 t3 v3...> <R<=repeat>> <TD=delay> <)> 
    其中:   
          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 

    正弦源 SIN

    一般形式:SIN  <(>  vo  va  <freq<td<θ<Φ>>>>  <)> 
    其中: 
          vo:     电压或电流偏移量 
          va:     电压或电流幅度峰值 
          freq:   频率,缺省值是1/TSTOP。单位是 Hz 
          td:     延迟时间,缺省值是 0.0,单位是秒。 
          θ:     阻尼因子,单位是1/秒,确省值是 0.0。 
          ϕ:      相位,确省值是 0.0,单位是度。 
    例:VIN  3  0  SIN(0  1  100MEG  1NS  1e10)

    指数源 EXP

    一般形式: EXP<(> v1 v2 <td1 <τ1<td2<τ2>>>> <)> 
    其中:  
            v1:   电压或电流的初始值 
            v2:   电压或电流的趋向值 
            td1:   上升延迟时间,缺省值为 0.0,单位是秒 
            td2:   下降延迟时间,缺省值为 td1+TSTEP,单位是秒 
            τ1:   上升时间常数,缺省值为 TSTEP,单位是秒 
            τ2:   下降时间常数,缺省值为 TSTEP,单位是秒
    例:VIN  3  0  EXP(-4  -1  2NS  30NS  60NS  40NS)

    单频调频源 SFFM

    一般形式:SFFM <(> vo va <fc <mdi <fs>>> <)> 
    其中:  
         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
    一般形式:AM(sa oc fm fc td) 
    其中:  
         sa   调制信号幅度,缺省值为 0.0 
         oc   偏移常数,缺省值为 0.0 
         fm   调制信号频率,缺省值为1/TSTOP,单位是 Hz 
         fc   载频,缺省值为 0.0,单位是 Hz 
         td   信号开始前的延迟时间,确省值为0.0,单位是秒

    电压电流控制源 

    电压控制电压源 E

    一般形式: 
    线性:EXXX  n+  n-  <VCVS>  in+  in-  gain  <MAX=val>  <MIN=val> 
          + <SCALE=val>  <TC1=val>  <TC2=val>  <ABS=1>  <IC=val>
    多阶: EXXX  n+  n-  <VCVS>  POLY(NDIM)  in1+  in1-  ...  
          + inndim+  inndim-  <TC1=val> <TC2=val>        
          +  <SCALE=val>    <MAX=val>   
          +  <MIN=val>  <ABS=1>  P0  <P1...>  <IC=vals> 
    分段线性:EXXX  n+  n-  <VCVS>  PWL(1)  in+  in- 
          +  <DELTA=val> 
          +  <SCALE=val>  <TC1=val>  <TC2=val>  x1, y1, x2, y2...  
          +  x100, y100  <IC=val> 
    多输入门:EXXX  n+  n-  <VCVS>  gatetype(k)  in1+  in1-... 
          +  ink+  ink- 
          + <DELTA=val>  <TC1=val>  <TC2=val>  <SCALE=val>
          +  x1, y1,... x100, y100  <IC=val> 
    延迟元件:EXXX  n+  n-  <VCVS>  DELAY  in+  in-  TD=val 
          + <SCALE=val>  <TC1=val>  <TC2=val>  <NPDELY=val>

    电流控制电流源 F

    一般形式: 
    线性:  FXXX  n+  n-  <CCCS>  vn1  gain  <MAX=val> 
         +  <MIN=val>  <SCALE=val>  <TC1=val>  <TC2=val> 
         +  <M=val>  <M=val>  <ABS=1>  <IC=val> 
    多阶:FXXX  n+  n-  <CCCS>  POLY(NDIM)  vn1  <...vnndin>  
         + <MAX=val>  <MIN=val>  <TC1=val>  <TC2=val> 
         + <SCALE=vals>  <M=val>  <ABS=1>  P0  <P1...> <IC=val> 
    分段线性:FXXX  n+  n-  <CCCS>  PWL(1)  Vn1  <DELTA=val>  
    +<SCALE=val>  <TC1=val>  <TC2=val> 
         + <M=val>  x1, y1,... x100, y100  <IC=val> 
    多输入门: FXXX  n+  n-  <CCCS>  gatetype(k)  vn1, ..., vnk 
         +  <DELTA=val>  <SCALE=val>  <TC1=val>  <TC2=val> 
         + <M=val>  <ABS=1>  x1, y1, ..., x100, y100  <IC=val> 
    延迟元件: FXXX  n+  n-  <CCCS>  DELAY  vn1  TD=val 
         +  <SCALE=val>  <TC1=val>  <TC2=val>  NPDELY=val

    电压控制电流源 G

    一般形式: 
    线性:GXXX  n+  n-  <VCCS>  in+  in-  transconductance 
          +  <MAX=val>  <MIN=val>  <SCALE=val>  <M=val> 
          +  <TC1=val>  <TC2=val>  <ABS=1>  <IC=val> 
    多阶:GXXX  n+  n-  <VCCS>  POLY(NDIM)  in1+  in1-  ...  
          +  <inndim+  inndim->  <MAX=val>  <MIN=val> 
          +  <SCALE=val>  <M=val>  <TC1=val>  <TC2=val> 
          +  <ABS=1>  P0  <P1…>  <IC=vals>
    分段线性:GXXX  n+  n-  <VCCS>  PWL(1)  in+  in- 
          +  <DELTA=val>  <SCALE=val>  <M=val>  <TC1=val> 
          + <TC2=val>  x1, y1, x2, y2 ... x100, y100  <IC=val> 
          +  <SMOOTH=val> 
    或:GXXX  n+  n-  <VCCS>  NPWL(1)  in+  in- 
         +  <DELTA=val>  <SCALE=val>  <M=val>  <TC1=val> 
         +  <TC2=val>  x1, y1, x2, y2 ... x100, y100  <IC=val> 
         +  <SMOOTH=val >
    或:GXXX  n+  n-  <VCCS>  PPWL(1)  in+  in- 
       +  <DELTA=val>  <SCALE=val>  <M=val>  <TC1=val> 
       +  <TC2=val>  x1, y1, x2, y2... x100, y100  <IC=val> 
       +  <SMOOTH=val> 
    多输入门:GXXX  n+  n-  <VCCS>  gatetype(k)  in1+  in1- ... 
         +  ink+ ink- 
         + <DELTA=val>  <TC1=val>  <TC2=val>  <SCALE=val> 
         +  <M=val> x1, y1, ..., x100, y100  <IC=val> 
    延迟元件:GXXX  n+  n-  <VCCS>  DELAY  in+  in-  TD=val 
         + <SCALE=val>  <TC1=val>  <TC2=val>  NPDELY=val

    电流控制电压源 H

    一般形式: 
    线性:   HXXX  n+  n-  <CCVS>  vn1  transresistance 
         +  <MAX=val>  <MIN=val>  <SCALE=val>  <TC1=val> 
         + <TC2=val>  <ABS=1>  <IC=val> 
    多阶:    HXXX  n+  n-  <CCVS>  POLY (NDIM)  vn1 
         +  <...vnndim>  <MAX=val>  <MIN=val>  <TC1=val> 
         + <TC2=val>  <SCALE=val>  <ABS=1>  P0  <P1...> 
         + <IC=vals> 
    分段线性:HXXX  n+  n-  <CCVS>  PWL(1)  vn1 
         +  <DELTA=val>  <SCALE=val>  <TC1=val>  <TC2=val> 
         +  x1, y1, x2, y2 ... , x100, y100   <IC=val> 
    多输入门:HXXX  n+  n-  <CCVS>  gatetype(k)  vn1, ..., vnk 
         +  <DELTA=val> 
         + <SCALE=val>  <TC1=val>  <TC2=val>  x1, y1, ..., x100, 
         +  y100  <IC=val> 
    延迟元件:HXXX  n+  n-  <CCVS>  DELAY  vn1  TD=val 
         +   <SCALE=val>  <TC1=val>  <TC2=val>  <NPDELY=val>
    上述四种控制元件描述语句中的一些主要参数的定义规定如下: 
    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 半导体器件

    二极管 D

    一般形式: DXXX  nplus  nminus  mname  <AREA=val>  <PJ=val> 
              +  <WP=val>  <LP=val>  <WM=val>  <LM=val>  <OFF> 
              +  <IC=vd>  <M=val>  <DTEMP=val> 
    或  DXXX  nplus  nminus  mname  <area_val<periphery_val>> 
    +  <OFF>  <IC=vd>  <M=val> 
    或  DXXX  nplus  nminus  mname  <W=val>  <L=val> 
         +  <WP=val>  <LP=val>  <WM=val>  <LM=val>  <OFF> 
         +    <IC=vd>  <M=val>  <DTEMP=val> 
      其中: 
    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

    双极型晶体管 Q

    一般形式: QXXX nc nb ne <ns> mname <aval> <OFF> 
         +  <IC=vbeval,vceval>  <M=val>  <DTEMP=val> 
    或   QXXX nc nb ne <ns> mname <AREA=val> 
         +  <AREAB=val> 
         +  <AREAC=val> <OFF> <VBE=val> <VCE=val>  
         +  <M=val>  <DTEMP=val> 
    其中: 
    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 <nb> mname <AREA|W=val  L=val> 
         + <OFF>  <IC=vdsval,vgsval>  <M=val>  <DTEMP=val> 
    或   JXXX nd ng  ns mname <<AREA=val>| W=val  L=val> 
        + <M=val>  <OFF>  < DTEMP=val >  <VDS=vdsval>  
        + <VGS=vgsval> 
    其中:  
    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

    MOS场效应晶体管 M

    一般形式:MXXX nd ng ns <nb> mname <L=val>    <W=val>   
        + <AD=val>  <AS=val>  <PD=val>  <PS=val>  <NRD=val> 
        + <NRS=val>  <RDC=val>  <RSC=val>  <OFF> 
        +  <IC=vds,vgs,vbs>  <M=val> <DTEMP=val>  <GEO=val> 
        + <DELVTO=val> 
    或  MXXX nd ng  ns <nb>  mname lval  wval  ... 
    MXXX nd ng  ns <nb>  mname wval  lval 
    其中:
    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   2U

    3.3 子电路语句 .SUBCKT 或.MACRO

    子电路是以 .SUBCKT 或 .MACRO 开头,以 .ENDS 或.EOM结束的一组语句。一旦定义好,它可看作是以X 关键字开头的器件。

    子电路定义开始语句  

    一般形式:  .SUBCKT  subnam  n1 <n22  n3 . . . >  <parnam=val . . . > 
          或  .MACRO   subnam  n1  <n2  n3 . . . >  <parnam=val . . . > 
    其中: 
       subnam   是子电路参考名 
       n1…     是子电路外部参考节点,它们不能为零(地节点)。 
    子电路定义中的任何节点是局部变量,只有下述三种节点情况例外 : 
    1.接地点 (节点为 0 ) 
    2.在 MOSFET 或 BJT 模型中用 BLUK 定义 的节点号 
    3.由 .GLOBAL 语句定义的节点号 
    所以子电路定义中的节点号、器件名、MODEL 的说明可以和外部的相同,而不会冲突 。
    parnam  : 用来设置子电路中用到的参数值。

    子电路终止语句  

    一般形式 : .ENDS   < SUBNAM > 
       或    .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 . . . > <M=val> 
    其中:            
         XYYY   子电路元件名,必须以”X”开头,后面最多跟 15 个 字符的字符串 
         n1...      子电路调用节点号 
         subnam   子电路参考名 
         parnam   用来设置子电路中用到的参数值 
         M       子电路并联使用时的倍增因子. 
    由于子电路本身的外节点号是局部的,所以和子电路调用的节点号无关,
    但电路节点号的顺序必须和 .SUBCKT 语句中定义的顺序一致。
    例:Xinv IN VCC 0 OUT INV

    3.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.05

    3.5 库文件调用及定义语句 .LIB语句

    在用 ESPICE 对电路的模拟中, 经常要对元器件的模型及其参数以及子电路
    进行描述或定义。 ESPICE 软件允许将器件模型(.MODEL 语句)、 子电路的定义(包含.ENDS 语句)、有关注释语句及库文件调用语句(.LIB 语句)等集中存放到库文件中,而在调用所要使用的模型和子电路时,仅需要将所要的模型、子电路等内容取出进入存储器即可,这样速度快、占内存少。ESPICE 中一个读取库文件的执行过程直到遇到.ENDL 语句才结束。所以库文件给电路模拟带来极大方便。 

      库文件调用语句 

      一般形式:  .LIB  ′<  filepath  >  f ilename ′   entryname 
                 其中: 
           filepath    指明库文件所在的路径,当库文件与ESPICE运行在一目录下,则可缺省目录路径。“../”表示当前目录的 上一级目录。 
           filename   包含在数据文件的文件名,所有文件目录路径和文件名组合最长不超过 256 个字符。文件目录路径和文件 名必须包含在单引号或双引号中。 
           entryname  进入文件的类型名,这个名字的第一个字符不能是一个整数。 
               
    例:    .LIB  ′MODELS ′ cmos1 
          .LIB ′../sum/MODELS ′  cmos1  

    库定义语句:

    以 .LIB entyname 开头,.ENDL entyname 结束。
    宏模块库建立的规定: 
    1.  .ALTER 语句不能包含在库中 
    2.  一个库可以嵌套自身可供调用的库或其它可供调用的库 
    3.  一个库中不能嵌套与它有同样库类型进入识别名的同一库文件 
    4.   库文件中不能包含 END 语句 
    5.  在用 .INCLUDE 语句调用 .LIB 语句期间是不能再用 .ALTER语句来进行运行处理

    3.6 文件调用语句 .INCLUDE

    使用.INCLUDE语句可以将各个子网表或者其他需要包含的文件添加进来。
    一般形式:  .INCLUDE  <filepath>/filename 

  • 第四章 电路分析

        对电路性能进行分析,进而对电路设计起到指导性作用,这是电路模拟的意义所在。电路的性能分析包括:直流分析(直流工作点、直流扫描分析、灵
    敏度分析、小信号输出函数分析等);交流分析(交流小信号分析、小信号失真分析、交流噪声分析等);瞬态分析及蒙特卡罗(Monte Carlo)分析、温度特性等分析。

    4.1 直流分析

    4.1.1 直流工作点分析

    一般形式: .OP < format > < time > < forme > < time > 
        其中: 

    format    是下述关键字中的任何一个(只有第一个自号有效的,缺省值为 ALL): 
       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=<param-expr1>   STOP =<param-expr2> 
            +  STEP=< param-expr3> 
        或  .DC  var1  start1  stop1  incr1  <SWEEP var2  type  np 
            start2 stop2> 
            .DC  var1  start1  stop1  incr1  < var2 start2 stop2 incr2>
         (3)蒙特卡罗分析 
            .DC  var1  type  np  start1  stop1   <SWEEP  MONTE=val> 
        或  .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 125

    4.1.3 直流灵敏度分析.SENS

      如果在输入文件中包括了一个.SENS 语句, ESPICE 将对每一个规定的的输出变量相对于相关的电路参数做直流小信号灵敏度分析。 灵敏度测量就是一个输入变量相对于给定的电路元件参数在工作点附近求偏微分并加以归一化的过程。 因此,所有元件的灵敏度总和是100%,ESPICE 能对电阻、独立电压源、独立电流源、二极管及双极型晶体管做直流小信号灵敏度分析。每一次电路模拟中只能执行一个.SENS 分析,若输入文件中有多个.SENS 语句,则 ESPICE只执行最后一个.SENS 语句。 
         一般形式:.SENS  ov1  <ov2...> 
         其中: 
             ov1  ov2 代表直流灵敏度分析中的分支电流或节点电压。 
             例:SENS  V(9)  V(4,3)  V(17)  I(Vcc)

    4.2 交流分析

    4.2.1 交流小信号分析 .AC

       交流小信号分析时,ESPICE将交流输出变量作为指定频率的函数来加以分析计算。分析时 ESPICE 首先求直流工作点,作为交流分析的初始条件,这时ESPICE 将电路中所有非线性器件变换成线性小信号模型,电容和电感则被换算成相应的导纳值:YC=jwc ,YL=1/jwl。 
    ESPICE 允许电阻有不同的直流和交流值。若在电阻描述语句中定义了AC=<value>,则在直流工作点计算时用直流电阻值,但在交流分析时则用交流电阻值。这对于分析运算放大器特性十分便利,因为在进行运放直流工作点计算时,可以用一个低阻值直流电阻构成反馈式单位增益结构来进行计算,而在运放交流分析时,可以用一个高阻交流电阻构成开环形式来进行交流分析。
    交流分析允许对下述参数进行扫描分析: 
       (a)频率 
       (b)分量   
       (c)温度 
       (d)模型参数 
       (e)随机分布(蒙特卡罗分析)
    单/双扫描 
           .AC  type  np  fstart  fstop 
       或  .AC  type  np  fstart  fstop  <SWEEP var start stop incr> 
       或  .AC  type  np  fstart  fstop  <SWEEP var type np start stop> 
       或  .AC  var1  START=<param_expr1>  STOP=<param_expr2>   STEP=<param_expr3> 
       或  .AC  var1  START=start1  STOP=stop1  STEP=incr1
    随机/蒙特卡罗分析: 
        .AC  type  np  fstart  fstop  <SWEEP MONTE=val>
    其中:
    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  15k

    4.2.2 交流噪声分析 .NOISE

       电路中产生噪声的元器件有电阻和半导体器件,每个器件的噪声源在AC分析的每个频率计算出相应的噪声,并传送到一个输出节点。电路总的输出噪声就是各个噪声源计算所得噪声在该点进行 RMS(root-mean-square 均方根)相加而得到的结果:
         一般形式:.NOISE  ovv  srcnam  inter 
           其中: 
              ovv     是指定节点总的噪声输出电压 
              srcnam  是作为噪声输入基准的独立电压源或独立电流源。 
              inter   打印噪声分析结果的频率间隔,一般这个频率就是进行交流扫描的频率。如果这个参数省略或置零就不打印噪声分析结果输出一览表;如果这个参数置 1或大于1,则以所设置数为第一个打印频率,并以此为增量打印出噪声分析结果。 
           例:.NOISE  V(5)  VIN  10

    4.2.3 零极点分析.PZ

      语句的一般形式:.PZ  output  input 
        其中: 
             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  <TSTART>  <UIC>

    其中
    TSTEP是行打印机输出的打印或作图的增量,亦即瞬态分析的步长。
    TSTOP 是终止时间, TSTART 是初始时间, 如果省去 TSTART, ESPICE用缺省值0.0。瞬态分析总是从时间为零开始,在时间为零到 TSTART 的时间间隔内,瞬态电路分析仍进行(为了达到一个稳态),但没有输出,而且瞬态分析值没有存储起来。在 TSTART 和 TSTOP 间隔内进行的计算才被存储并输出。
           (1)单点分析 
            .TRAN  var1  START=start1  STOP=stop1  STEP=incr1 
            .TRAN  var1  START=<param_expr1>  STOP=<param_expr2>  
            +  STEP=<param_expr3> 
         (2)双点分析: 
            .TRAN  var1  START=start1  STOP=stop1  STEP=incr1 
            +  <SWEEP  var2  type  np start2  stop2> 
            .TRAN  tincr1  tstop1  <tincr2  tstop2…tincrN  tstopN> 
            +  <START=val>  <UIC>  <SWEEP var pstart  pstop  pincr> 
         (3)参数化扫描: 
            .TRAN  tincr1  tstop1  <tincr2  tstop2…tincrN  tstopN> 
            +  <START=val>  <UIC>
         (4)数据驱动扫描: 
           .TRAN  DATA=datanm  
           .TRAN  var1  START=start1  STOP=stop1  STEP=incr1  
           +  <SWEEP  DATA=datanm> 
           .TRAN  DATA=datanm  <SWEEP  var  pstart  pstop  pincr> 
         (5)蒙特卡罗: 
        .TRAN tincr1 tstop1  <tincr2  tstop2…tincrN  tstopN>  
        +  <START=val>  <UIC>  <SWEEP MONTE=val>
        
    其中 : 
           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  <V(node2) = val2...> 
               或  .NODESET  node1  val1  <node2  val2...> 
            其中: 
                 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 语句被用来对 ESPICE 模拟中的元件和模型所指定的关键字进行赋
    值, 这特别适合要调用不同参数进行模拟以及统计分析 (蒙特卡罗分析) 等场合。
    因为.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    计算重复的次数,缺省值是1

    4.5.2 参数扫描 SWEEP

    参数扫描用于对某个参数改变分析,表明对变化的每个参数都作仿真。前面有很多分析中都使用到了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=val

    4.5.4 温度扫描分析 .TEMP

    一般形式:.TEMP t1<t2<t3…>>  
    其中: t1 t2 …为电路模拟时设定的温度值,ESPICE 对每一个设定的温度值都做一遍模拟。

    第五章 控制语句

    5.1 输出语句 

    5.1.1 打印语句 .PRINT

          一般形式:  .PRINT  antype  ov1  <ov2…ov32> 
               其中:   
                 antype:  是用户规定的输出分析类型: DC 、AC、TRAN 等
                 ov1…    要被打印的输出变量。 
    例: .PRINT TRAN V(4) I(VIN) PAR(`V(OUT)/V(IN)')
    注意:espice的.PRINT语句不能输出包含二重扫描的结果。

    5.1.2 探针显示语句 .PROBE

        一般形式:  .PROBE  antype  ov1…<ov32> 
            其中:  
          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语句功能是能针对设定的不同参数和数据自动进行更替来进行电路的模拟。 
    .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 ss

    5.3控制选项 .option

    一般而言不需要设置option的值,取默认值即可。

1 0
原创粉丝点击