首页 理论教育 使用SPICE语言设计IC电路

使用SPICE语言设计IC电路

时间:2023-07-02 理论教育 版权反馈
【摘要】:30年来,SPICE已经被广泛地接受为集成电路仿真的标准软件。SPICE有一系列版本。著名的有HSPICE,PSPICE等。然后生成SPICE电路描述和分析指令文件。接下来调用SPICE仿真程序进行电路性能分析,打印输出结果。

使用SPICE语言设计IC电路

一、SPICE电路仿真概述

1.集成电路计算机辅助电路仿真程序SPICE

电路仿真(Simulation)是电路设计者的最基本任务,仿真结果的可靠性很大程度上决定了一个在技术上能够实现的电路,在功能上能否满足要求。

对电路仿真来说,最有用的软件是SPICE。30年来,SPICE已经被广泛地接受为集成电路仿真的标准软件。事实上,SPICE早在1998年就已定为美国国家工业标准。SPICE有一系列版本。目前常用的版本是SPICE2.X(X代表A、B、C、D等)和SPICE3.X,最高版本是基于Berkeley SPICE 3F.5的商用版本,可以获得的版本是XSPICE,比如5SPICE。SPICE之所以会对集成电路设计有如此巨大的影响,一方面是因为其强大的功能,另一方面是因为它的源程序是公开的,可以免费得到。

众多集成电路设计与制造厂家和集成电路设计软件开发商在标准SPICE的基础上,增加了具有他们知识产权的内容,形成了不同版本的SPICE,大多都加上标志性的前缀符号,从而有了众多的XSPICE(X代表众多前缀)。著名的有HSPICE,PSPICE等。一些集成电路设计软件开发商的产品,例如Cadence公司的Spectro,Mentro Graphics公司的Eldo和Agilent公司的ADS等,其核心程序都包括SPICE的功能。因此,集成电路设计工程师,特别是要从事晶体管级电路设计的工程师,必须全面熟练掌握SPICE的应用。

2.采用SPICE的电路设计流程

采用SPICE进行电路设计的基本流程如图6-1所示。

设计从给定的技术指标出发,首先根据掌握的系统和电路知识,确定电路的初始方案,确定电路元件参数。然后生成SPICE电路描述和分析指令文件。有语句和图表两种SPICE电路描述文件形式。语句描述是最原始、最基本、互通性最好的形式,所以本章重点介绍这种文件的语句形式。图表描述形式具有直观易懂的优点,但不同的商用软件有不同的操作方式,这将在语句描述形式之后简单给以概括性介绍。

以语句描述形式生成SPICE电路描述和分析指令文件之前,首先需要画出电路图对元件命名,对节点编号,然后编写输入文件。接下来调用SPICE仿真程序进行电路性能分析,打印输出结果。通过检查输出数据和观察图形,对结果是否满足技术指标作出判断。不满足时,或改变元件参数,或从根本上改变电路结构,进行下一轮分析过程。如此反复多次,直到电路性能满足技术指标,才给出最终电路设计方案,进入版图制作。下面将简要介绍最基本的SPICE的器件描述、分析功能和一些应用技巧。

图6-1 采用SPICE进行电路设计的基本流程

二、无源器件描述语句

SPICE语言的语句按句子开头标识可分为四类:①句子直接由字母开头,没有标识的是器件描述语句,用于定义电路包含的各种器件;②句子以“.”号开头的是命令控制语句,用于对仿真进行控制;③句子以“*”号开头的是注释语句,用于给用户提示信息,不参与仿真运算;④句子以“+”号开头的是后续语句,当上一句无法在一行内写完的时候,在下一行续写时加以标识,具体语句性质与其续写的那一行相同。在SPICE语言中,仅支持英文字符,且不区分大小写,因此在对不同的单位量级描述时使用如表6-1所示简写。尤其应注意的是对于单位兆(多用M表示)和单位毫(多用m表示)的区别,由于SPICE不区分大小写,因此将单位兆用Meg表示,在实际应用中应格外加以注意。

表6-1 SPICE中数量级单位表示法

1.电阻器件

(1)描述格式:R<name> N+ N- <mname> <<R=>Value> <<TC1=>val><<TC2=>val> <M=val> <AC=val> <L=val> <W=val>

R是电阻主名(特性代号),<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电阻的正、负端点,由于电阻没有极性,所以可以任意连接,一般是以电位较高的一端为N+,电位较低的一端为N-;<mname>是电阻模型名,为任选项,可任意命名,也可根据工艺模型文件命名;<<R=>Value>是常温(25℃)下的电阻值;<<TC1=>val>、<<TC2=>val>分别是电阻的一阶温度系数和二阶温度系数,默认值为零;<M=val>是指电阻的并联个数,默认值为1;<AC=val>是交流分析时电阻的交流阻值,默认值为电阻有效值;<L=val>、<W=val>分别为集成电路中电阻的长度和宽度。

(2)温度函数:

RT=<VALUE>×[1+TC1×(T-TNOM)+TC2×(T-TNOM2

其中RT是所求温度下的阻值;<VALUE>是常温(25℃)下的电阻值;TC1、TC2分别是电阻的一阶温度系数和二阶温度系数;T是电阻温度,TNOM是常温(25℃)。

(3)例句:

①RLOAD 10 0 1K

RLOAD的电阻值为1千欧,接在10和0(接地)节点;

②R2 1 2 2.4E+4 TC1=0.01 TC2=-0.02

R2的电阻值为24千欧,接在1和2节点,一阶温度系数为TC1=0.01,二阶温度系数为TC2=-0.02;

③RFBK 33 3 RMOD L=100um W=1um

RFBK为集成电路中模型名为RMOD的电阻,接在33和3节点,电阻长100微米,宽1微米。

2.电容器件

(1)描述格式:C<name> N+ N- <mname> <<C=>Value> <<TC1=>val><<TC2=>val><IC=val> <M=val> <L=val> <W=val>

C是电容主名(特性代号),<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电容的正、负端点;<mname>是电阻模型名,为任选项,可任意命名,也可根据工艺模型文件命名;<<C=>Value>是常温(25℃)下的电容值;<<TC1=>val>、<<TC2=>val>分别是电容的一阶温度系数和二阶温度系数,默认值为零;<IC=val>是电容两端电压的初值,多用于瞬态仿真,默认值为零;<M=val>是指电容的并联个数,默认值为1;<L=val>、<W=val>分别为集成电路中电容的长度和宽度。

(2)温度函数:

CT=<VALUE>×[1+TC1×(T-TNOM)+TC2×(T-TNOM2

其中CT是所求温度下的容值;<VALUE>是常温(25℃)下的电容值;TC1、TC2分别是电容的一阶温度系数和二阶温度系数;T是电容温度,TNOM是常温(25℃)。

(3)例句:

①C1 1 2 10U

C1的电容值为10微法,正端和负端分别接在1和2节点;

②CLOAD 15 0 1000P IC=0.5

CLOAD为1000皮法的电容,电容上的初始电压为0.5V,接在15和0(接地)节点;

③CIN 1 0 CMOD L=100um W=120um

CIN为集成电路中模型名CMOD的电容,接在1和0(接地)节点,电阻长100微米,宽120微米。

3.电感器件

(1)描述格式:L<name> N+ N- <mname> <<L=>Value> <<TC1=>val><<TC2=>val><IC=val> <M=val> <R=val>

L是电感主名(特性代号),<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电感的正、负端点;<mname>是电感模型名,为任选项,可任意命名,也可根据工艺模型文件命名;<<L=>Value>是常温(25℃)下的电感值;<<TC1=>val>、<<TC2=>val>分别是电感的一阶温度系数和二阶温度系数,默认值为零;<IC=val>是电感内电流的初值,多用于瞬态仿真,默认值为零;<M=val>是指电感的并联个数,默认值为1;<R=val>是电感的阻值,默认值为零。

(2)温度函数:

LT=<VALUE>×[1+TC1×(T-TNOM)+TC2×(T-TNOM2

其中LT是所求温度下的感值;<VALUE>是常温(25℃)下的电感值;TC1、TC2分别是电感的一阶温度系数和二阶温度系数;T是电感温度,TNOM是常温(25℃)。

(3)例句:

(1)L1 2 4 10MH

L1的电感值为10毫亨,接在2和4节点;

(2)LLOAD 10 12 15MH IC=1mA

LLOAD的电感值为15毫亨,初始电流为1mA,接在10和12节点;

(3)LCLOCK 20 21 LMOD 10UH IC=0.5mA

LCLOCK的电感量为10微亨,初始电流为0.5mA,电感模型名为LMOD。

三、有源器件描述语句

通过前面所列的元件通常只需要几个参数就可以完全确定它们的电特性。但是二极管,双极性三极管BJT,结型场效应管JFET与MESFET和MOSFET一类的半导体器件的电性能则需要几十到上百个参数才能较为精确地加以描述。此外,电路中的许多器件常常用一套器件模型参数来进行定义。因此,需要用一条独立的.MODEL语句来定义一套器件模型参数,并指定一个专用名的模型名。然后,SPICE中的器件描述语句就可以引用这个模型名。采用这种方式,可以避免在每一条器件语句中都列出所有的器件模型参数。

二极管和双极性三极管BJT语句中的面积因子可以用来确定具有特定模型的、等效并联器件的数目。在MOSFET器件描述语中,则有几个与沟道和源区及漏区几何尺寸关联的因子。

对于半导体器件可以采用两种不同的形式确定其初始条件:第一种用来改善含有一种以上稳定电路的收敛性。如果一个器件定义为OFF,其直流工作点就定义为它的端点电压。得到收敛的结果后,程序继续迭代,得到端点电压的精确值。如果电路含有一种以上的直流稳定状态,OFF选项可以用来强制其解对应于一个希望的状态。第二种确定初始条件的形式与瞬态分析共用。这种形式相对于上面的辅助收敛来说是“真正的”初始条件。

下面依次给出二极管,双极性三极管BJT和MOSFET的输入语句格式。

1.二极管D

(1)描述格式:D<name> N+ N- MNAME <AREA> <OFF> <IC=VD>

D是二极管主名(特性代号),<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接二极管的正、负端点;<mname>是二极管模型名,根据工艺模型文件命名;<AREA>是二极管面积因子,如果省去面积因子,默认值为1.0;<OFF>表示直流分析时器件的一个起始条件;<IC=VD>描述二极管的静态工作点,用于瞬态分析时定义二极管两端的初始电压。

(2)例句:

①DBRIDGE 2 10 DIODE1

DBRIDGE接在2和10节点之间,模型为DIODE1;

②DCLMP 3 8 DMOD 3.0 IC=0.2

DCLMP接在3和8节点之间,模型为DMOD,面积因子为3.0,初始电压为0.2伏;

2.双极性三极管BJT

(1)描述格式:Q<name> NC NB NE <NS> MNAME <AREA> <OFF><IC=VBE,VCE> <M=val>

Q是三极管主名(特性代号),<name>是字长为8个字元的器件副名,可由数字或英文字母组成;NC、NB、NE、<NS>分别是集电极、基极和发射极节点,<NS>是可选的衬底节点,如果不特别定义,衬底接地,即<NS>约定为0;<mname>是三极管模型名,根据工艺模型文件命名;<AREA>是二极管面积因子,如果省去面积因子,默认值为1.0;<OFF>表示直流分析时器件的一个起始条件;<IC=VBE,VCE>描述三极管的静态工作点,用于瞬态分析时定义三极管的初始BE结电压和CE端电压。

(2)例句:

①Q23 10 20 25 QMOD IC=0.6,5.0

Q23集电极接在10节点、基极接在20节点、发射极接在25节点,模型为QMOD,初始VBE=0.6V,VCE=5.0V;

②QA1 11 26 3 8 MOD1

QA1集电极接在11节点、基极接在26节点、发射极接在3节点,衬底接在8节点,模型为MOD1;

3.MOSFET

(1)描述格式:

M<name> ND NG NS NB MNAME <L=VAL> <W=VAL><OFF> <IC=VDS,VGS,VBS><M=val>

M是MOS型场效应管主名(特性代号),<name>是字长为8个字元的器件副名,可由数字或英文字母组成;ND、NG、NS、NB分别是漏极、栅极、源极和衬底节点;<mname>是MOS型场效应管模型名,根据工艺模型文件命名;<L=VAL>和<W=VAL>分别表示MOS型场效应管的长度和宽度;<OFF>表示直流分析时器件的一个起始条件;<IC=VDS,VGS,VBS>描述MOS型场效应管的静态工作点,用于瞬态分析时定义MOS型场效应管的初始DS端电压、GS结电压和BS结电压;<M=val>表示同样的MOS型场效应管并联的个数。

(2)例句:

①M11 24 2 0 10 TYPE1

M11漏极接在24节点、栅极接在2节点、源极接在0节点,衬底接在10节点,模型为TYPE1;

②M21 2 16 4 20 NMOD L=1UW=5U M=3

M21漏极接在2节点、栅极接在16节点、源极接在4节点,衬底接在20节点,模型为NMOD,长度为1微米,宽度为5微米,将3个同样的MOS管并联在一起

③M8 2 9 0 0 NMOD 10U 5U

M8漏极接在2节点、栅极接在9节点、源极接在0节点,衬底接在0节点,模型为NMOD,长度为10微米,宽度为5微米;

四、独立电源描述语句(www.xing528.com)

1.独立直流电源

(1)描述格式:V<name> N+ N-<<DC=>dcval>

I<name> N+ N-<<DC=>dcval>

V是独立电压源主名(特性代号),I是独立电流源主名,<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电源的正、负端点;<<DC=>dcval>是电源的直流电压(电流)值。

(2)例句:

①V1 1 0 DC=5V

或V1 1 0 5V

V1的电压值为直流5伏,接在1和0(接地)节点;

②I1 5 0 DC=5mA

或I1 5 0 5mA

I 1的电流值为直流5毫安,接在5和0(接地)节点。

2.独立交流电源

(1)描述格式:V<name> N+ N-<AC=acmag,<acphase>>

I<name> N+ N-<AC=acmag,<acphase>>

V是独立电压源主名(特性代号),I是独立电流源主名,<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电源的正、负端点;<AC=acmag,<acphase>>是电源的交流电压(电流)的幅值和相位。

(2)例句:

①V1 1 0 AC=10V,90

或V1 1 0 AC 10V 90

V1的电压值为交流5伏,相位90°,接在1和0(接地)节点;

②I1 5 0 AC=50mA,120

或I1 5 0 AC 50mA 120

I1的电流值为交流50毫安,相位120°,接在5和0(接地)节点。

3.脉冲时变电源

(1)描述格式:

V<name> N+ N-pu<lse> <(v1 v2<td<tr<tf<pw<per>>>>>)>

I<name> N+ N-pu<lse> <(v1 v2<td<tr<tf<pw<per>>>>>)>

V是独立电压源主名(特性代号),I是独立电流源主名,<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电源的正、负端点;pu<lse>是脉冲时变电源的关键词,可将<lse>略去;v1是脉冲电源的初始电压(电流)值;v2是脉冲电源的峰值;td是脉冲电源初始脉冲的时间延迟;tr是脉冲上升沿的时间;tf是脉冲下降沿的时间;pw是脉冲峰值的稳定持续时间;per是脉冲电源的单个脉冲周期。

(2)例句:

VIN 3 0 PULSE (0 1 15NS 15NS 10NS 20NS 75NS)

该脉冲时变电源的具体波形示意如图6-2所示。

4.正弦函数电源

(1)描述格式:

V<name> N+ N-SIN <(vo va <freq <td<θ<φ>>>>)>

I<name> N+ N-SIN <(vo va <freq <td<θ<φ>>>>)>

图6-2 脉冲时变电源示意图

V是独立电压源主名(特性代号),I是独立电流源主名,<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电源的正、负端点;SIN是正弦函数电源的关键词;vo是正弦函数电源的偏置电压(电流)值;va是正弦函数电源的振荡幅值;freq是正弦函数电源的振荡频率;td是正弦函数电源在振荡前的时间延迟;θ是正弦函数电源的衰减因数;φ是正弦函数电源的初相位。

(2)例句:

VIN 1 0 SIN (0 1 100MEG 2NS 5E7 0)

VIN是接在节点1和0(接地)之间的正弦函数电源,正弦函数电源的偏置电压为0,振幅为1伏,振荡频率100兆赫兹,振荡前时间延迟2纳秒,衰减因数为5×107,初相位为0。

该正弦函数电源的具体波形示意如图6-3所示。

图6-3 正弦函数电源示意图

5.指数函数电源

(1)描述格式:

V<name> N+ N-EXP <(v1 v2 <td1<tau1<td2<tau2>>>>)>

I<name> N+ N-EXP <(v1 v2 <td1<tau1<td2<tau2>>>>)>

V是独立电压源主名(特性代号),I是独立电流源主名,<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电源的正、负端点;EXP是指数函数电源的关键词;v1是指数函数电源的初始电压(电流)值;v2是指数函数电源的脉冲峰值电压(电流)值;td1是指数函数电源在上升前的时间延迟;tau1是指数函数电源上升沿的时间常数;td2是指数函数电源在下降前的时间延迟;tau2是指数函数电源下降沿的时间常数。

(2)例句:

图6-4 指数函数电源示意图

VIN 1 0 EXP (0 3 5NS 30NS 80NS 40NS)

VIN是接在节点1和0(接地)之间的指数函数电源,初始电压为0,脉冲峰值电压为3伏,上升前的时间延迟为5纳秒,上升沿的时间常数为30纳秒,下降前的时间延迟为80纳秒,下降沿的时间常数为40纳秒。

该指数函数电源的具体波形示意如图6-4所示。

6.分段线性函数电源

(1)描述格式:

V<name> N+ N-PWL <(t1 v1 <t2 v2 t3 v3…>)>

I<name> N+ N-PWL <(t1 v1 <t2 v2 t3 v3…>)>

V是独立电压源主名(特性代号),I是独立电流源主名,<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电源的正、负端点;PWL是分段线性函数电源的关键词;t1、t2、t3、…、tn是分段线性函数各个电压(电流)值相应的时间点数值;v1、v2、v3、…、vn是分段线性函数各个时间点相应的电压(电流)值。

(2)例句:

V1 1 0 PWL 60NS 0V 120NS 3V 130NS 5V 170NS 5V

+ 180NS 3V 200NS 3V 230NS 0V

V1是接在节点1和0(接地)之间的分段线性函数电源,在60纳秒时电压为0伏,在120纳秒时电压为3伏,在130纳秒时电压为5伏,在170纳秒时电压为5伏,在180纳秒时电压为3伏,在200纳秒时电压为3伏,在230纳秒时电压为0伏。

该正弦函数电源的具体波形示意如图6-5所示。

图6-5 分段线性函数电源示意图

7.单频调频函数电源

(1)描述格式:

V<name> N+ N-SFFM <(vo va <fc <mdi <fs>>>)>

I<name> N+ N-SFFM <(vo va <fc <mdi <fs>>>)>

V是独立电压源主名(特性代号),I是独立电流源主名,<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电源的正、负端点;SFFM是单频调频函数电源的关键词;vo是单频调频函数电源的偏置电压(电流)值;va是单频调频函数电源的振荡幅值;fc是单频调频函数电源的载波频率;mdi是单频调频函数电源的调频比例常数,一般在1到10之间取值,默认值为0;fs是单频调频函数电源的信号频率。

(2)例句:

VIN 1 0 SFFM (0 1MV 60K 10 5K)

VIN是接在节点1和0(接地)之间的单频调频函数电源,单频调频函数电源的偏置电压为0,振幅为1毫伏,载波频率为60千赫兹,调频比例常数为10,信号频率为5千赫兹。

该正弦函数电源的具体波形示意如图6-6所示。

8.单频调幅函数电源

(1)描述格式:V<name> N+ N-AM <(sa oc fm fc <td>)>

I<name> N+ N-AM <(sa oc fm fc <td>)>

V是独立电压源主名(特性代号),I是独立电流源主名,<name>是字长为8个字元的器件副名,可由数字或英文字母组成;N+、N-分别是连接电源的正、负端点;AM是单频调幅函数电源的关键词;sa是单频调幅函数电源的信号振幅电压(电流)值;oc是单频调幅函数电源的偏移常数;fm是单频调幅函数电源的调制频率;fc是单频调幅函数电源的载波频率;td是单频调幅函数电源在振荡前的时间延迟。

图6-6 单频调频函数电源示意图

(2)例句:

VIN 1 0 AM(10V 2 100 1K 1MS)

VIN是接在节点1和0(接地)之间单频调频函数电源,信号振幅为10V,偏移常数为2,调制频率为100赫兹,载波频率为1千赫兹,振荡前的时间延迟1毫秒

该正弦函数电源的具体波形示意如图6-7所示。

图6-7 单频调幅函数电源示意图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈