稳定性分析(stb)
用于线性化电路的直流工作点和计算环路增益,增益裕度(gain margin),或者特定环路或有源器件的相位裕度。电路的稳定性可以通过环路增益波形来确定。为了进行稳定性分析,必须指定probe参数。
在Spectre电路模拟器中,基于环路和基于器件的算法可用于小信号稳定性分析。两者都是基于波特图的返回比计算得出的。该分析可输出环路增益波形,增益裕度和相位裕度。
您可以通过指定断点或扫描的中心值和范围来定义扫描限制。步数可以是线性的,也可以是对数的,可以指定步数和步长。您可以指定步长参数(step、lin、log或dec)来确定扫描是线性的还是对数的。如果不指定步长参数,则当停止值与开始值得比值小于10时,扫描是线性的,当比值大于或等于10时,扫描是对数的。所有频率的单位是赫兹。
Examples of the stb command
stbloop stb start=1.0 stop=1e12 dec=10 probe=Iprobe
stbdev stb start=1.0 stop=1e12 dec=10 probe=mos1
分析参数与小信号交流分析相似,probe参数必须指定以用于稳定性分析。当probe指向一个电流probe或者电压源实例是,将调用基于环路的算法,当它指向一个有源器件实例时,将调用基于器件的算法。
增益裕度和相位裕度将基于增益和相位波形的过零点自动计算。如果裕度无法通过特定的稳定性分析决定,则log文件将显示相应的原因。
基于环路的算法(Loop-Based Algorithm)
基于环路的算法将反馈环路视为具有normal回路和reverse回路传输的集总模型。它计算真实的环路增益,包括normal loop增益和reverse loop增益。低频应用的稳定性分析方法假设信号通过反馈回路单向流动,他们使用normal loop gain来评估设计的稳定性。然而,真实的环路增益为涉及重要reverse transmission的应用提供了更精确的稳定性信息。
您可以在反馈回路上放置一个probe组件(电流probe或者零直流值电压源)来分析感兴趣的回路。probe组件不改变电路的任何特性,对probe组件的极性配置没有特殊要求。
基于环路的算法为单回路和多回路提供了准确的稳定性信息,其中probe组件可以放置在关键导线上以断开所有回路。对于多回路电路,这种线路可能是不可用的。基于环路的算法只能在单个反馈环路上执行,以确保它们是稳定的。虽然所有反馈回路的稳定性只是整个电路稳定的必要条件,但如果所有单个回路都具有合理的稳定裕度,则多回路电路整体趋于稳定。
对于基于环路的算法,probe需要放置在反馈环路上。常用的方法是在网络列表中插入一个当前探针或电压源实例,探针参数指向该实例、第二种方法是插入probe并指定某个实例的终端。
语法格式:
probe=X:n
x可以是一个实例或子电路实例,n是终端索引。第二种方法有一个限制,我们不能指定一个分支的电流由多个实例的终端电流组成。电流探头或电压源实例需要手动插入。
基于器件的算法
基于器件的算法为电路提供准确的稳定性信息,可以识别关键的有源器件,从而使该期间的主要增益源失效,使整个网络成为无源的。例如多级放大器,单晶体管电路和s参数表征的微波元件。
该算法常用于不可忽略的局部反馈回路的电路稳定性的分析,基于环路的算法不能用于这些分析,因为不能从原理图级别或网表级别去插入probe组件。
一般来说,基于器件的算法分析得到的信息可以用来评估某特定器件的稳定性。大多数情况下,反馈网络由一个全局反馈回路和许多嵌套的围绕单个晶体管的局部回路组成。基于环路的算法可以确定整个网络的稳定性,只要所有嵌套环路都是稳定的,而基于器件的算法可以确保所有局部环路都是稳定的。
subckt diffprobe x1in x2in x1out x2outibranch inout x1out iprobevinj inout x1in iprobeevinj x2in x2out x1in x1out vcvs gain=0fiinj 0 x2out pcccs probes=[ibranch vinj] coeffs=[0 1 1] gain=0
ends diffprobe
如果定义了localgnd参数,则上述子电路应做如下修改
subckt diffprobe x1in x2in x1out x2out localgndibranch inout x1out iprobevinj inout x1in iprobeevinj x2in x2out x1in x1out vcvs gain=0fiinj localgnd x2out pcccs probes=[ibranch vinj] coeffs=[0 1 1] gain=0
ends diffprobe
以diffprobe_inst作为子电路diffprobe的实例,下面的分析测量了差分的环路增益:
DMalterv alter dev=diffprobe_inst.evinj param=gain value=-1
DMalteri alter dev=diffprobe_inst.fiinj param=gain value=-1
DMloopgain stb probe=diffprobe_inst.vinj
下面的分析测量共模环路增益
CMalterv alter dev=diffprobe_inst.evinj param=gain value=1
CMalteri alter dev=diffprobe_inst.fiinj param=gain value=1
CMloopgain stb probe=diffprobe_inst.vinj
所支持的有源器件及其主要增益源如下表所示:
可用于stb扫描的参数
Spectre可以在扫描参数的同时执行分析。参数可以是frequency,temperature,component instance parameter,component model parameter,或者是netlist parameter。如果更改参数影响直流工作点,则在每一步重新计算工作点。如果以前的分析计算了一个工作点,您可以设置prevoppoint=yes以避免重新计算它。例如,如果再前面的分析是瞬态分析时使用此选项,则工作点是电路在最后时间点上的状态。
nodesets有助于找到电路的直流或初始瞬态工作状态。您可以使用nodeset语句在电路描述文件中指定节点集,也可以使用readns参数在单独的文件中指定节点集。当指定接集时,Spectre通过执行直流分析计算solution的初始假设,同时通过使用电压源和电阻为rforce的电阻串联将指定的值施加到节点上。然后,Spectre移除这些电压源和电阻,并从最初的假设中计算出所需的解决方案。
节点集有两个重要用途,首先,如果一个电路有两个或更多的solution,节点集可以使模拟器偏向于计算所需的solution。其次,这是一种convergence aid。通过估计最大可能节点数的解决方案,您可能能够消除收敛问题或显著加快收敛速度。
当您多次模拟同一电路时,建议您同时使用write和read参数,并为这两个参数指定相同的文件名。然后,即使电路自上次仿真以来发生了变化,直流分析也会迅速收敛,节点集文件也会自动更新。
在初始的直流工作点分析器件,你可以强制一些电路变量的值在ic file,ic statements或ic parameter on the capacitors anad inductors。ic parameter 控制了各种方法的相互作用。个别设置的效果如下:
force=none:忽略任何初始条件
force=node:调用ic statements,忽略ic parameter on the capacitors and inductors
force=dev:调用ic parameters on the capacitors and inductors,忽略ic statements
force=all:ic statements和ic parameters均调用,ic parameters覆盖了ic statements
如果你使用readforce参数指定一个ic文件,将使用该文件中的强制值,并忽略任何ic语句。
在指定初始条件后,Spectre通过视同电压源和电阻为rforce 的电阻串联来计算指定节点的直流工作点到给定值(参见options)。
您可以通过将参数名称指定为temp来扫描电路温度,而不需要dev或mod参数。您可以在不带dev或mod参数的情况下,通过给出参数名来扫描网络列表参数,分析完成后,修改后的参数返回原始值。
实例
在ADE原理图中,可以选择analogLib中命名为diffstbprobe的差分探针,如图所示。
With that component of diffstbprobe, there are four nodes defined as
Istbprobe (IN1 IN2 OUT1 OUT2) diffstbprobe
Example of differential mode:
stbloop stb start=1 stop=10G probe= Istbprobe.IPRB_DM
The analysis parameter of probe has to specify as IPRB_DM of a probe instance for
differential circuit.
Reference
- Virtuoso? Spectre Circuit Simulator User Guide,Product Version 7.0.1,June 2008
- Spectre? Circuit Simulator Reference,Product Version 19.1,
January 2020 - Spectre? Circuit Simulator and Accelerated Parallel Simulator User Guide,Product Version 15.1,October 2015