如何用hspice仿真数字stdcell中的反相器
专栏:iLoveIC Nov. 15, 2025, 7:09 p.m. 3 阅读
以反相器为例,介绍用hspice仿真数字标准单元库的方法

首先,从数字cdl文件中找到反相器的晶体管级电路。如下,可以看出反相器INV2_7TV50由一个nmos和一个pmos组成。

.SUBCKT INV2_7TV50 I ZN VDD VSS VNW VPW
MM12 ZN I VSS VPW n50_ckt W=1.16u L=500.00n
MM13 ZN I VDD VNW p50_ckt W=1.81u L=450.00n
.ENDS

然后来写一个仿真testbench,“test.sp”,把反相器包起来,接上负载电容,并提供激励,如下。

* spice test for INV2_7TV50
.OPTION POST INGOLD=2

.LIB 'hsp/d18_v3e_bcd_v1p4_rev1.lib' tt

.SUBCKT INV2_7TV50 I ZN VDD VSS VNW VPW
XMM12 ZN I VSS VPW n50_ckt W=1.16u L=500.00n
XMM13 ZN I VDD VNW p50_ckt W=1.81u L=450.00n
.ENDS

XINV2 I ZN VDD VSS VDD VSS INV2_7TV50
CL ZN 0 10fF

VDD VDD 0 DC 5
VSS VSS 0 DC 0
VIN I 0 PULSE(0 5 1n 100p 100p 10n 20n)

.TRAN 10p 40n

.END

其中,.LIB 'hsp/d18_v3e_bcd_v1p4_rev1.lib' tt表示引用模拟晶体管器件库。由于n50_ckt、p50_ckt在库里是由subckt定义,所以需要例化时需要以X开头。

XINV2 I ZN VDD VSS VDD VSS INV2_7TV50是例化反相器,CL ZN 0 10fF是在反相器的ZN后面挂一个电容。

VDD VDD 0 DC 5VSS VSS 0 DC 0分别定义了5V电源和地。VIN I 0 PULSE(0 5 1n 100p 100p 10n 20n)定义了一个周期20ns、占空比50%的方波。

最后,.TRAN 10p 40n表示做一个时序仿真,仿真时间长度为40ns。

用hspice仿真的命令是:

hspice -i test.sp

跑完仿真后,当前目录下会多出几个文件:

test.pa0
test.ic0
test.tr0
test.st0

用wv打开test.tr0,即可以看到仿真波形。

image.png

感谢阅读,更多文章点击这里:【专栏:iLoveIC】
最新20篇 开设专栏