电路拓扑描述
输入网表文件中很重要的一部分内容就是电路拓扑结构的描述(Element statements)。
简单来说就是,你要对什么样的一个电路进行仿真。
在HSPCIE中,是通过定义构成电路的单元(element)和单元之间的连接关系来描述一个电路,这些单元可以是电阻、电容、晶体管等等。
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
指定该长度。(举个例子,这里就是说,如果要定义一个电阻,电阻的名称就必须以R开头。) -
nodeN
:节点名,用来说明元件所连接的节点,节点名称可以是数字、字母以及两者的组合,但必须以字母开始,整个字符串不超过 16 个字符(包括第一个字母在内)。= ( ) , . [ ]
等符号不能出现在节点名中。节点0,GND,GND!,GROUND
默认表示“地”。 -
mname
:模型参考名,无源器件除外的所有元件都是必需的,后面会介绍模型的具体内容。 -
pnameN
:元件参数名,用来指定元件的参数值。 -
valN
:指定参数值或模型节点,这些数值可以是具体的数值,也可以是代数表达式。 -
M=val
:元件的倍增因子
器件类型及其关键字的具体内容如下:
可以看出,电流源、电压源等也是以元件的形式进行描述的。
电阻(Resistor)
电容(Capacitors)
MOSFET
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]
对于[]
中的参数,在这里可以指定也可以不指定。如果不指定使用模型(mname)中给定的默认值。
部分参数的含义如下,
示例:
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.
模型其实就像是电路设计时候的“标准单元库”,它描述了电路网表文件使用的各种元器件的各项参数,比如MOS管的阈值电压等,基于这些参数,工具才能进行仿真计算。
或者说,模型是对真实物理器件的一种描述,有了这些模型,才能将真实的物理器件放到计算机中,然后使用HSPICE才可以进行仿真。模型中的具体内容就是一个个的参数,比如说,为了描述MOS管,我们需要知道它的阈值电压、宽长比、载流子迁移率等等。
在仿真的时候,给这些参数指定一个具体的值,SPICE仿真工具就可以计算MOS管的一些特性。
( 不同的模型参数代表的就是不同性能的器件,比如说,对于MOS管,模型是描述方式,就是说,只要是相同结构的MOS管,都可以使用模型中给定的参数对其进行描述。但是对于同一个结构的MOS管,它的宽长比、阈值电压等等可能是不同的,模型参数的具体值就是反应的这些不同。)
真实的物理器件是十分复杂的,可能没有一个完美的模型来模型其在各种场景下的各种特定,所以就会有各种各样的模型来对其进行描述,某种模型可以反应真实的物理器件在某个场景下的特定,众多的模型就构成了对真实物理器件各种特性的详细描述。
在仿真层面,只需要通过指定模型和模型所需要的所需要的参数值,就可以得到一个”真实的物理器件”,然后就可以进行仿真。
对于器件的模型参数,当然可以在描述元件实例的时候对其进行逐一定义。但是这样的问题是, 每个模型中可能包含很多参数,每个元件可能有多个实例,如此一来,在描述电路结构的时候,就会显得很繁琐。所以我们就把模型相关的参数提前定义好,并给定也给默认值,然后给他起一个名字(model name),这样在定义元件实例的时候,直接使用模型名字即可,对于具体的参数,可以根据需求指定,如果不指定,就使用模型中指定的默认值。
有了模型,我们在描述元件的时候,就只需要指定所使用的模型,工具就可以读取该模型对应的各项参数,我们就不需要在网表中指定元器件的各项参数,这样以来,不仅可以更快的去创建一个网表文件,还可以避免一些错误。
所以,模型就是elements各项参数的定义,我们可以自己生成,也可以使用别人定义好的模型,比如来自Foundary厂的模型参数可以能够更加贴近实际制造时的数据。当然,HSPCIE工具也会给定一些模型(Synopsys device models),我们可以基于这些模型给定的参数进行仿真。
2.2 模型的使用
为了在网表中指定一个器件,需要使用元件描述语句和模型描述语句。
一个简单的示例如下:
Q3 3 2 5 MOD1 <parameters>
.MODEL MOD1 NPN <parameters>
① 在元件描述语句中,只能使用模型的参考名称(这里是MOD1)来指定所使用的模型,而参考名称则是在.model
中进行指定。
② 在模型描述语句(.model
)中,NPN是模型,即真实物理器件的某种描述方式,MOD1是带有特定参数值的模型,是一个具体的器件。
③ 元件描述语句和模型描述语句中都可以定义参数,对于同名的参数,元件描述语句中的定义会覆盖模型描述语句中定定义。未指定
的参数,就使用模型的默认参数。
④ 除了选择工具内置的模型外,还可以从模型库中选择模型,如下示例:
.LIB '../models/mosfet.lib' tt
M3 3 2 1 0 PCH L=1u W=1u
该示例使用了 mosfet.lib
模型库文件中的参考名称为 PCH
的模型
.model 描述语句
该语句的作用就是在输入网表文件中包含一个预定义的HSPICE模型的实例。
基本语法如下:
type 和 level 共同确定了都某种器件的描述方式。
(根据执行仿真的类型,会有一些拓展描述,这里就先不展开了。)
参数说明:
MOSFET的 .model 语句
对于和MOSFET相关的模型,其描述语句如下:
参数说明:
这里,模型参数中的LEVEL其实对应的就是不同类型的器件模型。工具支持的一些MOSFET模型如下:
3. 电源和激励描述语句
HSPICE 中提供了一些供激励用的独立源和受控源。电源描述语句也由代表电源名称的关键字、连接情况和有关参数值组成。描述电源的关键字含义如下:
V:
独立电压源
I:
独立电流源
E:
电压控制电流源
F:
电流控制电流源
G:
电压控制电压源
H:
电流控制电压源
3.1 独立源
基本语法:
参数说明:
基于上述语句格式,HSPICE规定出以下几种独立电源:DC Source、AC Source、Transient Sources。
直流源
语法:
示例:
V1 1 0 DC=5V
V1 1 0 5V
I1 1 0 DC=5mA
I1 1 0 5mA
瞬态源
Transient Sources说的是,在执行瞬态分析的时候,可以使得 source 随时间变化,主要有以下几种类型:
梯形脉冲源
基本语法:
参数说明:
波形随时间变化情况:
示例一:
示例二:
PWL Source
PWL是Piecewise Linear(分段线性)的缩写。
基本语法格式如下:
每一对(t1, v1)
指定了v1在t1时候的值。
示例:
① PL 是 ASPEC 格式的关键字,描述上不同是时间点和值的位置做了互换。
② 重复次数 r 的值必须是前面定义的时间点中的一个。
波形如下:
Pattern Source
HSPICE为独立电压源或者电流源提供了 pattern source function,pattern source function使用了四种状态:0, 1, m, z
,分别表示高、低和中等电压或电流,以及高阻态。
这四种状态的构成的序列称之为 “b-string”。
基本语法:
参数说明:
tsample
就是每个值的持续时间
波形随时间变化分析:
就是说,tsample中包含了一半的上升时间和下降时间。
示例一:
向量信息如下:
先是 1011,然后从0开始重复一次(也就是011),然后是 0m1z,第二个b-string没有设定R或RB的值,那么HSPICE会使用默认值(R=0,RB=1)。
示例二:
描述语句:
向量信息:
使用工具对示例2的输入波形进行测试,
测试用的输入网表文件如下:
得到结果如下:
放大第一部分:
经过对波形的放大计算得知,tsample
就是每一个状态的持续时间,这个持续时间包含了一半的上升时间和下降时间。
例如,对于01110
的情况,中间的1
就会保持完整的tsample
,第一个1
会持续tsample-(tr/2)
,第三个1
会持续tsample-(tf/2)
。
如果是010
的情况,这里的1
就只会持续tsample-(tr/2)-(tf/2)
,示例(1010110)里面就是350。
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
)定义文件中的部分内容,该文件中给出了模型参数文件中变量的值(不工艺角下的参数漂移量是不一样的),同时也使用include
语句包含了模型参数文件。
这样,在仿真的时候,通过调用这两个文件,就可以使用对应工艺角的器件参数。
这里其实是根据文件的内容选择调用语句。c18vmos001.mdl
中的内容是模型参数,并不是LIB
格式的定义,所以我们就使用.INC
命令,对于LIB
格式的命令,那么就是使用.LIB
命令来调用。
今天的文章什么是输入表_网表文件中有关网络的定义分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79449.html