仿真实战
1. 反相器直流仿真
1.1 输入文件
仿真所用电路图:

输入网表文件:
Inverter Circuit
.OPTION POST
.DC VIN 0 5 0.1
.PRINT DC V(IN) V(OUT)
M1 OUT IN VCC VCC PCH L=1U W=20U
M2 OUT IN 0 0 NCH L=1U W=20U
VCC VCC 0 5
VIN IN 0 0 PULSE .2 4.8 2N 1N 1N 5N 20N
CLOAD OUT 0 .75P
.MODEL PCH PMOS LEVEL=1
.MODEL NCH NMOS LEVEL=1
.END
2.2 执行仿真
执行仿真的命令有很多,第一种仿真执行命令如下:
hspice -i quick.sp -o quick.lis &
执行该命令的时候,终端不会输出内容,仿真结束之后,会有如下提示:

如果是使用如下命令启动仿真:
hspice quickDC.sp
这个时候,不会产生 .lis 文件,但是,终端会显示内容,显示的就是 .lis文件中的内容。
下面这个命令就是在加了一个重定向命令,此时,终端不会输出任何内容,但是可以得到 .list 文件。 (重定向算是Linux系统的功能吧。)
hspice quickDC.sp > quickDC.lis &
3.3 仿真输出控制
可以看到,仿真结束后,生成了如下三个文件:

其中 .st0是输出状态文件,和仿真结果无关,.sw0就是使用option post得到的仿真波形结果。(波形文件的后缀名是和仿真类型相关联的。)
.lis 文件内容
一开始是一些基本信息:

然后是器件参数信息


和执行仿真相关的信息:

使用.print语句输出到该文件中的数据:
(x是数据起始位置,y是数据结束位置。)


最后是一些统计分析的信息


波形文件
波形文件quickDC.sw0是option post命令生成的,使用WaveView打开之后如下所示:

这里我们可以选择电路中所有的节点进行观察,也就是说HSPICE工具保存了所有的仿真数据。
3.4 修改输出配置
对输入网表文件的输出控制部分增加一些内容,如下所示:
.option POST NODE LIST PROBE
此时,输出文件的变化
① 输出波形文件
可以看到,这里只能选择 .print 语句中描述的语句,这是.option probe在发挥作用。

② 输出列表文件中,增加了如下内容。
所有的元件(elements)信息,这是.option list在发挥作用。


所有节点的连接信息,这是.option node在发挥作用。

2. 反相器瞬态分析
输入网表文件:

直流工作点计算结果(.ic0文件):

仿真得到的波形文件(.tr0):

这个时候我们发现,反相器的上升延时和下降延时差距很大,这是因为我们把 PMOS 和 NMOS 的宽长比设置的一样了。
为了分析不同的宽长比对电路产生的影响,我们可以对该参数进行扫描分析。
使用不同宽长比进行仿真
第一个思路是.alter语句,如下:

这个时候会执行三次仿真,得到三个直流工作点计算结果和三个输出文件:

当然啊,我们可以使用WaveView打开这三个文件,然后把他们放在一起进行比较,得到的波形如下:

第二个思路是使用sweep,如下所示:

这个时候我们只得到一个输出波形文件,打开之后如下所示:

显然第二种方法更方便一些。
3. 几种不同输入源的比较
这里就主要考虑脉冲源、向量源和 PWL 源,主要是和数字电路相关的输入波形确定。
Pulse Source
定义文件:

波形文件:

在脉冲波形的定义中,是可以有关于周期的定义的,波形长度会随着仿真时间的增加而增加。
Pattern Source
输入激励定义如下:

得到的输入波形如下:

这里的问题是,输入激励定义了多久就是多久,不会随着仿真时间的增加,自动的进行周期性的重复。
仿真时间超过定义的输入激励事件的部分,输入激励会保持为定义的最后一个值,上例中就保持为1。
PWL Source
激励定义文件:

波形文件:

三个波形依次是 v1,v3,v2。
① 如果没有给出 r 关键字,波形是不会重复的,指定了 r 之后,波形就会随仿真施加周期性的重复。
② 如果没有定义 0 时刻的值,那么就是默认为定义的第一个值
③ 分段线性的意思就是,t1时刻的值到 t2 时刻的值是线性变化的,如图中黄线(V3)所示。
文章详细介绍了使用HSPICE进行反相器的直流仿真,包括输入文件处理、执行命令、仿真输出控制,以及如何通过.sweep进行参数扫描。此外,还对比了PulseSource、PatternSource和PWLSource三种不同输入源的特点。
3299

被折叠的 条评论
为什么被折叠?



