您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > Cadence电路参数变量扫描分析说明
Cadence电路参数变量扫描分析庞则桂2006-12-22Version-1.0在使用Cadence的AffirmaAnalogCircuitDesignEnvironment对电路进行仿真的时候,适当地使用DesignVariables将会获得事半功倍的效果。什么是DesignVariables?直观地说它们就是出现在AffirmaAnalogCircuitDesignEnvironment界面中的一些可变的参数值。如下图红色虚线框中所示的就是一些已经定义好了的变量。图1AffirmaAnalogCircuitDesignEnvironment界面变量可以是一些全局的参数。例如temp,就是系统默认的温度参数,当设置对温度变量进行扫描分析时,可以获得一组代表了整个电路在不同温度下某个参数的变化曲线。变量还可以是电路中某些元器件的具体数值。通过扫描该参数可以获得该器件的这个参数值在一定范围内变化对整个电路的影响。Cadence还可以对多个变量进行扫描,可以获得电路多个参数同时变化时的昀优值,这对设计电路,确定元器件的取值具有非常重要的作用。变量的取值可以是具体的数值、等式或者表达式。这里我们主要讨论数值的情况,关于等式和表达式的变量取值还没有用到,以后接触到之后再继续详述之。对变量进行扫描,例如电路中激励源vdc的直流电压大小,电路中某个电容,电阻的大小等等,使用Analyses菜单下的Choosedc,即DCsweep(直流参数扫描)也可以分析电路某个参数变化对整体的影响,为什么还要刻意地进行DesignVariables的参数变量扫描分析呢?两者有什么不同?我们可以先假设这样一种情况。假如,我有一个电路,在上电之后,要延时一定的时间电路才能开始正常工作,而且这个启动的过程不可忽略,那么,我就需要进行时域上的分析,即采用瞬态分析(tran)才能仿真出这个过程。如果我想考察电路启动模块中某个电容对电路启动时间的影响,假设我使用DCsweep,对电容的参数进行扫描,那么很显然,在整个扫描的过程中,由于DCsweep本身并没有考虑到时域上的过程,所以电容变化的整个过程都是在t=0的时刻进行的,而这时电路还没有开始工作,所以无论电容值怎么变化,电路的状态都是一样的,未进入工作状态,由这个仿真结果看来,电容值似乎对电路没有产生什么影响,但是,实际上该电容的数值可能对电路的启动过程,甚至于启动之后的电路工作状态都有着至关重要的影响,因此,在这种情况下,DCsweep并不能真实地反映出电路的真实工作情况。如果我将电容的数值设置成一个DesignVariable,那么我可以给这个变量赋予一个固定的值,不影响我对电路进行时域上的瞬态分析,并且我还可以设定该变量的变化范围及变化的步长,进行参数变量扫描分析。此时Cadence会自动地按照设定的步长和范围自动地改变变量的数值,每变化一次变量值进行一次瞬态分析,昀后把不同变量值下的瞬态分析结果都绘制到一个wave窗口上,形成一簇曲线,用户就可以知道变量取值为多少时能够获得较好的曲线。而且采用参数变量扫描分析可以一次进行多个变量同时变化的分析,从而可以知道电路中多个变量相互制约的复杂情况下各个变量取值为多少才能获得全局昀优的结果。这些都是DCsweep无法完成的功能。下面我们以一个简单的电路为例,介绍一下使用参数变量扫描分析的具体实现步骤。我们来看考察以下的一个电路图2实验原理图电路中激励源V3,V4和管子的模型名n18,长宽的具体参数都已经在图中标得很明确了,不再详述。我们要观察的是R1取不同数值的时候电路的变化情况,那么我们就要把R1的值设为变量,这么设置呢?在原理图中,选中R1,按下键盘上的Q键调出元件属性窗口,如图3。通常,如果我们不需要设置元器件参数的话,比如我就需要让R取值为1KΩ,那么我可以在属性窗口的CDFParameter下的Resistance一栏中填入1K。这里我们要让电阻值成为一个参数,所以,我将要在这一栏中填入一个参数变量名aa。参数变量名是以字母开头的,表示该器件参数,如电阻阻值已经被定义成为一个参数变量,而不是一个具体的数值。后面的Ohms单位是系统自动加的,不需要理会。你可以把这一过程看成C语言中的宏替换,将来如果定义了aa为1K,那么这里CDFParameter中Resistance中的aa将会被1K替换,然后进行仿真。那aa什么时候会被赋予一个具体的数值呢,这在后面会讲到,请继续往下看。图3元件属性窗口好,参数按照上图设置好之后,点击左上角的OK回到原理图窗口。通过窗口左上角的ToolsAnalogEnvironment调出AffirmaAnalogCircuitDesignEnvironment界面。下面要做的就是具体定义参数变量的数值了。你可以有两种办法将原理图中刚刚设定的元器件参数变量调入到AffirmaAnalogCircuitDesignEnvironment的DesignVariables窗口中:(1)通过AffirmaAnalogCircuitDesignEnvironment界面的菜单VariablesEdit调出变量编辑窗口,如图4。图4变量编辑窗口在name这一栏中,填入aa,在Value(Expr)一栏中,填入aa的具体数值,或者一个表达式或者等式。这里我们可以填入1K,aa的具体数值就在这一步被确定了。填完后,点击Add就将该变量添加到右边的变量列表(TableofDesignVariables)中了。如果你要更改变量的数值或者删除一个变量也可以在这里完成,在变量列表中选中一个变量,可以对其进行更改或者删除。对变量的添加,更改或者删除完成后,点击左上角的OK,回到AffirmaAnalogCircuitDesignEnvironment界面。(2)通过AffirmaAnalogCircuitDesignEnvironment界面的VariablesCopyFromCellview可以一次将原理图中的所有变量调入AffirmaAnalogCircuitDesignEnvironment界面中的变量列表。然后双击你想要编辑的一个变量,可以调出图4的EditingDesignVariables界面,从而可以对变量进行修改。设置好变量的AffirmaAnalogCircuitDesignEnvironment界面如下图所示。图5完成变量设置的AffirmaAnalogCircuitDesignEnvironment接下来,要对这个电路进行一次仿真。用AffirmaAnalogCircuitDesignEnvironment进行仿真过程包括以下几个步骤:(1)添加模型库;(2)选择分析类型;(3)选择要输出到波形窗口进行观察的变量;(4)导入网表开始仿真;下面简单介绍一下仿真的过程。(1)添加模型库在AffirmaAnalogCircuitDesignEnvironment的SetupModelLibraries调出加载模型库的窗口图6加载模型库窗口点击右下角的Browse…在弹出的Browse窗口中找到模型库所在的路径,选择要加载的模型库,选好后点击OK,然后点击Add将模型库加载到上面的窗口中,然后在点击OK,回到AffirmaAnalogCircuitDesignEnvironment界面。(2)选择分析类型在AffirmaAnalogCircuitDesignEnvironment界面中的AnalysesChoose…调出分析类型窗口图7分析类型窗口这里默认的就是我们要做的瞬态分析。不用改,填入仿真停止时间StopTime,激励源是10K的sin信号,我们访10个周期,就是1ms,所以填入1m,点击OK返回。(3)选择要输出到波形窗口进行观察的变量在AffirmaAnalogCircuitDesignEnvironment界面中的OutputsToBePlottedSelectOnSchematic,激活原理图窗口,此时原理图窗口的左下角会显示modify_plot,表示当前状态是选择输出信号。我们要观察的是MOS管输出输出的关系,所以用鼠标在原理图上点选了分别与M9漏极和栅极相连的两根导线被选中的导线颜色随之改变,如果鼠标点中了图中元器件的某个端点,该端点会被彩色的椭圆包围,表示将来在波形窗口中可以看到流入或者流出该点的电流。(4)导入网表开始仿真在AffirmaAnalogCircuitDesignEnvironment界面中的SimulationNetlistandRun仿真顺利结束后会弹出一个波形窗口,如图8所示。图8波形窗口上图中粉红色的是输入信号,青色的是输出信号,可以看到尽管输入信号幅度很大,输出信号的幅度却很小,现在我们就要选择一个合适的电阻值使得电路能够有足够的放大倍数又不会导致失真,这就是参数变量扫描要完成的工作。由于在整个参数变量变化的过程中输入信号始终是不变的,而输出将有很多条曲线,指示了在不同电阻值下的波形,为了使波形更加容易观察,我们将去掉输入信号的显示,只显示输出信号的波形。这需要在AffirmaAnalogCircuitDesignEnvironment中去掉输出信号的节点net8。点击输出列表中的net8节点,然后点击Delete按钮即可将其删除。下面开始进行参数变量扫描分析。点击AffirmaAnalogCircuitDesignEnvironment的ToolsParametricAnalysis调出参数分析窗口图9参数分析窗口点击SetupPickNameForVariableSweep1,会弹出一个参数选择窗口图10参数选择窗口可以看到窗口中有两个参数temp和aa,其中aa就是我们刚才在AffirmaAnalogCircuitDesignEnvironment中添加的参数变量,而temp是一个默认的系统参数变量,表示环境温度变量。我们选择aa,点击OK回到参数分析窗口,此时窗口中VariableName一栏中出现了aa的字符,当然我们也可以在一开始就在VariableName中输入aa。接下来,我们在扫描范围RangeType后的From,To中分别填入扫描的下限和上限,我们可以先从大的范围开始搜索,比如分别填入1k和100k。然后在StepControl中如果没有在TotalSteps中填入任何数值,那么Cadence将会自动选择步长,为了观测得更精细一点,填入10,表示将Cadence将在1k~100k的范围内选择10个点进行分析。分析的要求定义完成后要开始仿真了。在参数分析窗口中,选择菜单AnalysisStart,仿真即开始,经过一段时间后,波形窗口将会被更新,将会出现10条新的曲线。如下图可以看到,下面的曲线已经出现了明显的削顶失真,而上面的曲线幅度太小,这样你就可以在中间选择有可以接受的幅度的一条曲线的作为新的下限和一条失真不太严重的曲线作为新的上限值进行更精细的扫描昀终获得达到要求的数值。对于这个电路的进一步优化参数选择已经没有多少可以探讨的东西了,剩下的工作基本上可以算作是体力活。有一点需要提及的就是利用参数变量扫描分析对电路中多个变量均变化的情况找出各个变量的昀优值的应用。添加变量的过程都是一样的,例如,在上述电路中如果我需要将电源电压的变化也考虑进去,可以将电源电压值作为一个变量添加到AffirmaAnalogCircuitDesignEnvironment中,如果要使这两个变量同时变化的话,只需要在参数分析窗口中的SetupAddNewVariableToTop或者SetupAddNewVariableToBottom就可以多出一个变量相关的设置选项,剩下的操作和前述的操作是一样的。在AffirmaAnalogCircuitDesignEnvironment的Tools菜单下,还有蒙特卡洛分析,昀优化分析等许多非常有用的工具可以进一步探讨。结论:Cadence是个好东西!*☺*
本文标题:Cadence电路参数变量扫描分析说明
链接地址:https://www.777doc.com/doc-1874482 .html