CMOS工艺存在各种偏差,这些偏差可能来自掺杂浓度、栅氧层厚度或扩散深度等很多因素,造成不同晶圆之间、同一晶圆不同芯片之间、同一芯片不同区域之间器件特性会有所不同,在极限情况下工艺偏差的综合效果可能会造成MOS管最快(F,Fast)或最慢(S,Slow),当然在大多数工艺情况下MOS管还是表现出典型(T,Typical)特性。
为了说明工艺角的概念,这里暂且把造成MOS管偏快或偏慢的原因理解为载流子迁移率 μ 的大小。如果把NMOS管载流子迁移率 μ n 当作横坐标、PMOS管载流子迁移率 μ p 当作纵坐标,可以得到如图3.57所示的方块图形,FF、FS、SS和SF被称为CMOS的工艺角(process corner)。
图3.57 CMOS的工艺角
在图3.57中,从原点SS出发沿四边形顺时针转,依次得到SS、SF、FF和FS 4个转角,第一个字母代表NMOS管的快慢,第二个字母代表PMOS管的快慢,四边形中心是TT,表示NMOS管和PMOS管都是典型情况。通常情况下,电路设计之初先按照TT仿真,当基本功能仿真调试通过后,再对电路进行4个工艺角的仿真,即进行SS、SF、FF和FS仿真,完成了这4个工艺角的仿真(corner simulation)才算仿真通过。
能通过TT仿真的电路不一定能通过所有的工艺角仿真,如果工艺角仿真没通过,芯片的成品率就会大打折扣,所以工艺角仿真在模拟集成电路设计中非常重要。有时候一个电路看似很简单,TT仿真很容易就通过了,但是工艺角仿真却通过不了,这时候就必须对电路进行调整或修改,直到所有的工艺角仿真都能通过为止。
工艺角仿真不是什么特殊的仿真,它是通过加载库文件时选择不同的工艺角实现的。例如在表3.3的模型文件语句
这个语句加载的tt就对应图3.57中的TT,它是对典型工艺情况进行的仿真,只要把语句中的tt改成ss、sf、ff或fs,仿真就变成了对不同工艺角的仿真。注意,tt、ss、sf、ff和fs不是Spice语法选择工艺角的关键字,虽然这种表示方式最直观,且符合人们的认知习惯,但并非所有的库文件都按这种方法命名工艺角,在面对具体模型文件时,需要查阅模型文件的说明,确认不同工艺角的名称。如前所述,使用617版选择工艺角不用查阅模型文件,模型库文件调入完成后,所有的工艺角都可以通过下拉菜单显示出来,直接单击即可。
图3.58中的文字描述了MOS管、电阻和MIM电容的工艺角名称,可以看出MOS管的TT、SS和FF都符合认知习惯,但是SNFP和FNSP却不是通常的SF和FS。另外,电阻和MIM电容只给出了TT、SS和FF三种情况,为了表示与MOS管的区分,电阻和MIM电容的工艺角名称前面分别增加了RES_和MIM_。
图3.58 工艺角名称举例
在Spice的模型文件中有很多工艺参数,基于这些参数可以建立数学模型,虽然不同的工艺角使用相同的数学模型,但它们的工艺参数值是不同的。Spice模型以典型工艺参数为基础,把工艺角参数与典型工艺参数的偏差定义成不同的section,并为每个section取了个名字。如图3.59所示,图a为1.8V NMOS管(n18)的section tt,由于是典型工艺,所以偏差都为0;图b为section mim_tt、section mim_ff和section mim_ss,可以看出,section mim_tt的工艺偏差参数dmin为0,而section mim_ff和section mim_ss的分别为-2e-4和2e-4。
图3.59 section定义举例
用Cadence工具进行工艺角仿真有两种方法,一种是section替换法,另一种是专用工具法,下面分别进行介绍。
(1)section替换法 直接在Model Library Setup对话框中修改section,把tt换成ss或ff等不同的工艺角。如图3.60所示,在Model Library Setup对话框中双击t t,在Model Library File栏和Section(opt.)栏中就会出现模型库文件名和t t,将t t改为ss和f f,然后单击Add。选中f f和t t工艺角,将它们disable掉(#号表示disable),只保留ss,单击OK按钮后,这样再仿真就是对工艺角ss的仿真了,类似地,还可以进行f f、fnsp和snfp等工艺角的仿真。如果使用Cadence 617版,可以直接单击section的下拉箭头来选择不同的工艺角。
section替换法的最大优点是简单和直观,缺点是不能一次完成所有的工艺角仿真,而且每次只能与一种电源电压和温度组合,也不能同时输出不同工艺角的仿真结果,不便比较,而专用工具法就可以解决这些问题。
图3.60 在Model Library Setup中只保留ss
(2)专用工具法 Cadence提供了工艺角仿真专用工具Analog Corners Analysis,它不仅可以一次完成不同工艺角的仿真,而且还能将工艺角、电源电压、温度和电路中的参数进行任意组合,在同一个波形窗口输出所有结果,便于分析和比较,适合电路设计后期对电路进行全面而系统的仿真验证,下面以Cadence 5141为例介绍这种方法的具体流程,Cadence 617的流程可以仿照此流程。
使用Cadence 5141专用工具的工艺角仿真流程可以分成4个步骤,即添加工艺角(add process)、添加显示信号(add measurement)、启动仿真(run)和显示波形曲线(plot),这些步骤都是在Analog Corners Analysis窗口中进行的。下面以CS_stage为例具体介绍一下这种方法。在使用Analog Corners Analysis工具进行工艺角仿真之前,应该先完成tt仿真,以确保基本仿真环境正确。
1)添加工艺角(add process):单击ADE窗口菜单Tools→Corners...弹出Analog Corners Analysis窗口(见图3.61),单击窗口菜单Setup→Add Process...弹出Add Process对话框(见图3.62)用于添加工艺和工艺角。单击图3.62中的Process,先在Process Name栏中为添加的工艺任意取一个名字,比如本例为smic18。然后在Model Style栏中选择Single Model Library(现在只需要一个Library)。在Base Directory栏中填写Model文件的路径,在Model File栏中填写Model文件的名字,如果不记得Model文件的路径,可以在ADE窗口中打开Model Library Setup对话框(见图3.62中下面的窗口),在这里可以查到tt仿真时填写的Model文件路径和名字。
图3.61 Analog Corners Analysis窗口
图3.62 Add Process对话框和Model Library Setup对话框
单击图3.62中的Groups/Variants,得到如图3.63所示的Group/Variants对话框,为需要仿真的MOS管工艺角建一个组。在Group Names栏中填写MOS(这里MOS不是关键字),表示将要建一个MOS管的工艺角组;在Variants栏中填写MOS管的工艺角名称,根据图3.58可知,MOS管的工艺角分别为ss、tt、ff、fnsp和snfp,填写时用逗号隔开,完成后单击OK按钮,这样就建成了MOS管的工艺角组,在Analog Corners Analysis窗口中,Corner Definitions栏中的Variables列表里增加了MOS组(见图3.64)。
图3.63 Group/Variants对话框
图3.64 添加MOS组之后的Analog Corners Analysis窗口
单击图3.64中的Add Corner按钮,弹出如图3.65所示的Enter Corner name对话框,填写SS,然后单击OK按钮,按照相同方法再填写TT、FF、FNSP和SNFP,在MOS行选择对应的工艺角。Variables列表中的temp代表温度,填写室温27℃,最终设置结果如图3.66所示。单击菜单File→Save Setup As...,输入文件名为smic18.cor并保存供以后调用。
图3.65 Enter Corner name对话框
图3.66 设置完成的Analog Corners Analysis窗口
2)添加显示信号(add measurement):单击Analog Corners Analysis窗口中的Add Measurement按钮,弹出Enter Measurement name对话框(见图3.67),输入vout_sch_db20,然后单击OK按钮,vout_sch_db20信号就加入到了Measurement栏中。单击Analog Corners Analysis窗口中的Calculator...按钮弹出计算器,并在计算器中选择ac和vf,此时原理图处于Select nets for the VF expression...状态,然后在原理图中单击vout_sch,再单击计算器中的dB20,得到如图3.68所示的波形计算表达式。选中Measurement栏中的vout_sch_db20,并单击Get Expression按钮,则计算器中的波形表达式就传给了vout_sch_db20。用类似的方法再添加vout_sch_phase,然后选择计算器中的phase得到vout_sch的相位信号,完成后选中两个信号的Plot选项,操作结果如图3.69所示,保存设置到smic18.cor。
图3.67 Enter Measurement name对话框
图3.68 波形计算表达式
图3.69 Add Measurement操作结果
3)启动仿真(run):本例是对CS_stage进行ac的工艺角仿真,所以在ADE窗口中调出前面保存过的状态state_ac_db20,单击红绿灯图标先运行一下,如果一切正常则可单击Analog Corners Analysis窗口中的Run按钮,此时就启动了ac的工艺角仿真,仿真结束后列在Performance Measurements栏中的波形曲线就会自动显示出来,结果如图3.70所示。
从图3.70可以看出,tt工艺角的增益大于30dB,比其他工艺角的增益高很多,所以从增益的角度看,这个电路不能单独使用,因为工艺角对电路性能的影响太大,这个问题出在恒流源负载的偏置上,在实际电路中恒流源负载用电流镜偏置。在第8章的运算放大器设计实例中,将会用到电流镜偏置电路。
图3.70 工艺角仿真波形曲线
4)显示波形曲线(plot):工艺角仿真结束后,可以用多种方法显示波形曲线,下面以本节的工艺角仿真为例,把显示波形曲线的方法进行一下总结。
①直接显示:工艺角仿真结束后,列在Performance Measurements栏中的信号会自动显示,这需要提前进行Add Measurement操作,并勾选Plot,图3.70就是这样显示的。与此相同,列在ADE窗口中Outputs栏中的信号也会自动显示,如图3.55中的vout_sch_db20和vout_sch_phase。
②计算器显示:通过计算器和仿真原理图可以获得波形表达式,这些表达式既可以通过Get Expression送到ADE窗口和工艺角仿真窗口,也可以直接显示出来,显示的方法就是单击计算器上的Plot按钮(带曲线的小按钮)或Eval按钮。
③ADE窗口显示:无论是普通仿真还是工艺角仿真,都可单击ADE窗口中右下角的Plot Outputs图标(带曲线的图标),随时显示ADE窗口中Outputs栏中的信号。
④Results菜单显示:单击ADE窗口菜单Results→Plot Outputs会列出已完成的仿真类型,选择其中的一种仿真类型,则该类型的仿真信号波形会显示出来,显示的波形信号应列在Outputs栏中,这种方法适合单独显示指定仿真类型信号波形。
单击ADE窗口菜单Results→Direct Plot也可以显示所有波形,不受限于Outputs栏的列表信号,它的功能更加强大,灵活度更高。该菜单可以提供如图3.71所示的两组菜单选项用于波形显示,其中第一项Main Form...是一组,剩余的其他项是另外一组,每个组都能独立完成所有节点信号的显示,其最主要区别是第二组需要按Esc键才能结束选择,否则将一直处于选择状态。
图3.71 菜单Results→Direct Plot的选项
第一组的操作从单击Main Form...开始,得到如图3.72所示的Direct Plot Form对话框,在Analysis栏中选择仿真类型,例如tran、dc或ac等,这是最后一次仿真所包括的仿真类型。在Function栏中选择Voltage或Current指定显示电压或电流,在Select栏中选择相应的节点或端口,例如左图选择ac仿真的电压信号Voltage,所以对应节点Net,而右图选择电流信号Current,所以对应端口Terminal。根据对话框中最下面的提示,可以到原理图中选择想要显示的节点或端口,每单击一次就显示一个。如果想显示电路模块内部的信号,可以选中电路模块,按E键再按回车键,就可以进入到下一层选择节点或端口,按Ctrl+E键可返回。
图3.72 Direct Plot Form对话框
第二组的操作更加直观,各种仿真类型的结果种类都直接列在菜单里,单击其中之一,然后就可以到原理图中选择节点,选择完成后按Esc键即可显示,这是与第一组操作的最主要区别。注意,第二组操作必须按Esc键,否则不显示。