Spectre可以进行FFT分析与蒙特卡洛分析等高阶仿真,这些仿真功能在分析信号的频谱与偏差中具有很好的应用,本书对这两种功能的使用方法进行介绍。
对于一些特定的电路来说,无法仅通过静态仿真来判断其功能是否达标,因此还需要进行动态仿真,通过FFT分析信号的频谱能很好地反映信号的特点,对信号功率进行清晰的表示。本节以栅压自举开关的仿真来举例说明,以FFT的结果来分析栅压自举开关的动态特性,栅压自举开关电路图如图2.44所示,开关符号图如图2.45所示。
1)首先,我们需要为栅压自举开关建立一个仿真电路,在命令行窗口工具栏选择File→New→Cellview命令,弹出“Creat New File”对话框,输入“switch_fft_test”,单击“OK”按钮,此时原理图设计窗口自动打开。按键盘上的“I”键弹出对话框,单击“Browse”按钮调入栅压自举开关的符号图,调入analogLib的理想电压源vdc、vsin、vpulse、电容cap(3p)以及vdd和gnd,连接成如图2.46所示的FFT仿真电路图,单击调入的器件,按“Q”键可以调节器件的参数,由Fin=(M/N)·Fs,选取1024个点做FFT,即N=1024,为防止重复采样,选择质数M=17,经验证M与N互质,满足FFT算法,Fs为1MHz,输入信号频率Fin=16.601kHz,仿真时间设置1100μs。所以如图所示设置vdc为1.2V。设置vsin参数如图2.47所示,设置频率为16.601kHz。设置vpulse参数如图2.48所示,设置频率为1MHz,占空比为90%。
图2.44 栅压自举开关电路图
图2.45 栅压自举开关符号图
图2.46 FFT仿真电路图
图2.47 设置vsin参数
图2.48 设置vpulse参数
2)在完成仿真电路设计以后,在电路图工具栏中选择“Check and Save”对电路进行检查和保存,再选择Launce→ADE L命令,弹出窗口。在工具栏中选择Setup→Model Libraries命令,设置工艺库模型信息和工艺角(一般来说工艺库自动添加,需要打开确认),如图2.49所示。
图2.49 设置工艺库模型信息和工艺角
3)对电路进行瞬态仿真。选择Analyses→Choose命令,弹出对话框,选择“tran”进行瞬态仿真。设置Stop Time为1.1m,单击“OK”按钮,完成设置(见图2.50)。选择Outputs→To Be Plotted→Select On Design命令,弹出电路图,在电路图中选择需要的导线。如图2.51所示,完成设置。
图2.50 设置“tran”仿真参数
图2.51 ADE L窗口
4)选择Simulation→Netlist and Run命令,进行仿真,得到仿真结果如图2.52所示。选择vout曲线,选择Measurements→Spectrum命令,弹出对话框。如图2.53所示,设置取点的起始和结束时间,设置取点数量,选择“Hanning”,单击“S”按钮确定Star/End Freq,单击“Plot”按钮就可以得到仿真结果。图2.53显示ENOB为12.664892,SNR为78.00,SFDR为80.34。图2.54为FFT仿真结果。
图2.52 仿真结果
图2.53 设置“Spectrum”参数
图2.54 FFT仿真频谱图
Monte Carlo分析是一种器件参数变化分析,使用随机抽样统计来估算数学函数的计算方法。它需要一个良好的随机数源。这种方法往往包含一些误差,但是随着随机抽取样本数量的增加,结果也会越来越准确。
如图2.55所示,矩形框四个角和中心表示5个不同工艺角的覆盖范围,而灰色填充表示用Monte Carlo分析得到的实际电路工艺偏差(一般满足高斯分布)。从图2.55中可以看出,满足工艺角变化的范围不一定能完全满足覆盖实际工艺角变化范围,因此要用Monte Carlo分析得到工艺角变化的概率,以得到电路的良率。
图2.55 工艺角覆盖范围图
Monte Carlo分析是基于统计分析,需要Foundry提供关于工艺变化分布概率,因此首先需要检查工艺文件是否支持Monte Carlo分析。仿真前,更改对应的器件模型section。如SMIC 55nm下的MOS管为mis_ckt。
进行Monte Carlo分析首先需要搭建基本仿真电路,如tran仿真,这里以比较器为例。
1)仿真电路搭建。与前面类似,在Cadence中建立Schematic电路图(应用mis_ckt型号的MOS管),并搭建仿真电路,如图2.56所示。
图2.56 Monte Carlo仿真电路图
2)建立瞬态仿真。与前面介绍瞬态仿真一样,这里打开ADE窗口设置200μs的瞬态仿真时间,如图2.57所示。需要注意的是,由于Monte Carlo仿真与普通仿真用到的Model Libraries的Section不一致,需要将其改为带_mc结尾的Section,如图2.58所示。
图2.57 瞬态仿真ADE窗口设置
图2.58 修改Model Libraries的Section
图2.58 修改Model Libraries的Section(续)
3)打开ADE XL设置Mento Carlo仿真。如图2.59所示,打开ADE XL,打开之后如图2.60所示,单击箭头所指处选择Monte Carlo Sampling。
单击图2.61中箭头处带齿轮图标调出Monte Carlo设置界面。
图2.59 选择Launch打开ADE XL
图2.60 ADE XL界面选择Monte Carlo Sampling
图2.61 调出Monte Carlo
Monte Carlo设置界面如图2.62所示,Statistical Variation可选择随机误差来源,Number of Points是随机抽取样本数量,Results Database Save Options根据Statistical Variation来选择,选择哪种就保存哪种。Monte Carlo Seed是随机数种子,这保证了仿真可重复,相同的Seed可以保证每次生成的随机是相同的。最下面的Specify Instances/Devices(Not Specified)可以设置对特定器件的Monte Carlo仿真。
图2.62 Monte Carlo设置界面
4)仿真。仿真设置好之后单击图2.63中圆形图标开始仿真,需要注意的是对仿真结果需要选择Save,仅仅选择Plot,仿真结束会出现不出波形的情况。
仿真开始后,会自动跳到Results界面,单击图2.64中的Yield,选择Detail,得到如图2.65所示的界面,表明仿真在进行中,待仿真结束之后单击Replace左边的图形,可以将仿真结果Plot出来,这里得到的结果是所设置的失配总数所对应的仿真结果,能够直观地看出不同失配条件对应的不同的电路表现结果,如要对仿真数据进行系统的分析,则需要将仿真文件夹中的psf文件导出,应用MATLAB等工具处理数据。
图2.63 进行Monte Carlo仿真
图2.64 Monte Carlo仿真开始之后的界面
图2.65 Monte Carlo仿真进行中的界面