电路拓扑描述
- 1.元器件描述语句(Elements)
- 电阻(Resistor)
- 电容(Capacitors)
- 电感(Inductors)
- 二极管(Diode)
- MOSFET
- 2. 模型(.MODEL)
- 2.1 基本概念
- 2.2 模型的使用
- .model 描述语句
- MOSFET的 .model 语句
- 3. 电源和激励描述语句
- 3.1 独立源
- 直流源
- 梯形脉冲源
- Pattern Source
- 4. 库文件的调用
- 4.1 .LIB语法
- 4.2 示例
- 定义参数的库文件
输入网表文件中很重要的一部分内容就是电路拓扑结构的描述(Element statements),该部分的主要内容就是电路单元及其连接关系和电路的输入激励。
1.元器件描述语句(Elements)
元件描述语句一般由元件名称、类型、元件所连接的电路节点号和元件电学参数值组成。
每个元件在输入文件中在一行内进行描述,一行放不下,就使用+
进行拼接。
一般形式为:
elname <node1 node2 … nodeN> <pname1 = val1> <pname2 = val2> … <M = val>
elname <node1 node2 … nodeN> <mname> <val1 val2 … valN>
-
elname
:元件的实例名,实例名的首字母必须元件关键字( element key letter),该关键字确定了元件的类型。实例名最长不能超过1024个字符。输出的实例名称默认长度是16个字符,可以使用.option lennan
进行指定。 -
nodeN
:节点名,用来说明元件所连接的节点,节点名称可以是数字、字母以及两者的组合,但必须以字母开始,整个字符串不超过 16 个字符(包括第一个字母在内)。= ( ) , . [ ] 等符号不能出现在节点名中。节点0,GND,GND!,GROUND
默认表示“地”。 -
mname
:模型参考名,无源器件除外的所有元件都是必需的。 -
pnameN
:元件参数名,用来标明一些元件的参数值。 -
valN
:赋于的参数值或模型节点,这些数值可以是数值,也可以是代数表达式。 -
M=val
:元件的倍增因子
器件类型及其关键字的具体内容如下:
电阻(Resistor)
电容(Capacitors)
电感(Inductors)
二极管(Diode)
MOSFET
描述形式:
Mxxx nd ng ns [nb] mname [[L=]length] [[W=]width]
+ [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]
示例:
M1 1 2 3 model_1
Mopamp1 d1 g3 s2 b Mod1stage L=2u W=10u
Mdrive driver in output bsim3v3 W=3u L=0.25u DTEMP=4.0
2. 模型(.MODEL)
元件描述语句中的模型到底是什么呢?
2.1 基本概念
官方手册中的定义:
Every device model is a template defining various versions of each supported element type used in a netlist formatted for use by the HSPICE tool.
模型其实就像是电路设计时候的“标准单元库”,它描述了电路网表文件使用的各种元器件的各项参数,基于这些参数,工具才能进行仿真计算。(预先定义好的各种器件参数)
有了模型,我们在描述元件的时候,只需要指定所使用的模型,工具就可以读取该模型对应的各项参数,我们就不需要在网表中指定元器件的各项参数,这样以来,不仅可以更快的去创建一个网表文件,还可以避免一些错误。
就是说,输入网表中是需要指定元件用于仿真计算的各项参数的。第一,我们可以在网表种描述元件的时候,自己进行详细定义;第二,就是使用参考模型。
所以,模型就是elements各项参数的定义,我们可以自己生成,也可以使用别人定义好的模型,比如来自Foundary厂的模型参数可以能够更加贴近实际制造时的数据。当然,HSPCIE工具也会给定一些模型(Synopsys device models),我们可以基于这些模型给定的参数进行仿真。
2.2 模型的使用
为了在网表中指定一个器件,需要使用元件描述语句和模型描述语句。
一个简单的示例如下:
Q3 3 2 5 MOD1 <parameters>
.MODEL MOD1 NPN <parameters>
① 在元件描述语句中,只能使用模型的参考名称(这里是MOD1)来指定所使用的模型,而参考名称则是在.model
中进行指定。
② 元件描述语句和模型描述语句中都可以定义参数,对于同名的参数,元件描述语句中的定义会覆盖模型描述语句中定定义。未指定的参数,就使用模型的默认参数。
③ 除了选择工具内置的模型外,还可以从模型库中选择模型,如下示例:
.LIB '../models/mosfet.lib' tt
M3 3 2 1 0 PCH L=1u W=1u
该示例使用了 mosfet.lib
模型库文件中的参考名称为 PCH
的模型
.model 描述语句
该语句的作用就是在输入网表文件中包含一个预定义的HSPICE模型的实例。
基本语法如下:
(根据执行仿真的类型,会有一些拓展描述,这里就先不展开了。)
参数说明:
MOSFET的 .model 语句
对于和MOSFET相关的模型,其描述语句如下:
参数说明:
这里,模型参数中的LEVEL其实对应的就是不同类型的器件模型。工具支持的一些MOSFET模型如下:
3. 电源和激励描述语句
HSPICE 中提供了一些供激励用的独立源和受控源。电源描述语句也由代表电源名称的关键字、连接情况和有关参数值组成。描述电源的关键字含义如下:
V:
独立电压源
I:
独立电流源
E:
电压控制电流源
F:
电流控制电流源
G:
电压控制电压源
H:
电流控制电压源
3.1 独立源
基本语法:
参数说明:
基于上述语句格式,HSPICE规定出以下几种独立电源:DC Source、AC Source、Transient Sources。
其中Transient Sources说的是,在执行瞬态分析的时候,可以使得 source 随时间变化,主要有以下几种类型:
直流源
语法:
示例:
V1 1 0 DC=5V
V1 1 0 5V
I1 1 0 DC=5mA
I1 1 0 5mA
梯形脉冲源
基本语法:
参数说明:
波形随时间变化情况:
示例一:
示例二:
Pattern Source
HSPCIE为独立电压源或者电流源提供了 pattern source function,pattern source function使用了四种状态:0,1,m,z
,分别表示高、低和中等电压或电流,以及高阻态。
这四种状态的构成的序列称之为 “b-string”。
基本语法:
参数说明:
波形随时间变化分析:
示例一:
向量信息如下:
先是 1011,然后从0开始重复一次(也就是011),然后是 0m1z,第二个b-string没有设定R或RB的值,那么HSPICE会使用默认值(R=0,RB=1)。
示例二:
描述语句:
向量信息:
4. 库文件的调用
前面在描述模型的时候提到,可以使用.LIB
命令调用库文件。
在使用 HSPICE 对电路的模拟时,经常要对元器件的模型及其参数以及子电路进行描述或定义。**HSPICE 软件允许将器件模型(.MODEL 语句)、子电路的定义(包含.ENDS 语句)、有关注释语句及库文件调用语句(.LIB 语句)等集中存放到库文件中,**而在调用所要使用的模型和子电路时,仅需要将所要的模型、子电路等(库文件内容)内容取出进入存储器即可,这样速度快、占内存少。
4.1 .LIB语法
.LIB
命令的语法如下,主要包括库的调用和库的定义两部分。
① entry_name
:一个库文件可定义多个库,entry_name
就是每个库自己名称。该名称的第一个字符不能是整数。在调用库的时候加上该名称,就只会读取名称对应内容。(.LIB entry_name
为开始,.ENDL
为结束。)
4.2 示例
定义参数的库文件
模型参数文件(c18vmos001.mdl
)中的部分内容:
① 这里可以看出,有些参数上面是有一些变量的,这些就是参数的漂移量,我们可以在一个新的文件中去定义,如下所示。
② 从文件开头的内容可以看出,该文件中的参数是基于 LEVEL = 49 模型定义的,模型的参考名称为 N_18_LL
,也就是说,我们在元件描述语句中,要使用N_18_LL
来获取库中定义的参数信息。
参数漂移量(c18vmos001.lib
)定义文件中的部分内容:
这样以来,在仿真的时候,通过调用这两个文件,就可以使用对应工艺角的器件参数。