仿真实战
- 1. 反相器直流仿真
- 1.1 输入文件
- 2.2 执行仿真
- 3.3 仿真输出控制
- .lis 文件内容
- 波形文件
- 3.4 修改输出配置
- 2. 反相器瞬态分析
- 使用不同宽长比进行仿真
- 3. 几种不同输入源的比较
- Pulse Source
- Pattern Source
- PWL Source
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 文件。
hspice quickDC.sp > quickDC.lis &
3.3 仿真输出控制
可以看到,生成了三个文件。

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

然后是器件参数信息


和执行仿真相关的信息:

使用.print语句输出到该文件中的数据:


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


波形文件
波形文件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)所示。



















