首页 / 资讯中心 / 文章详情

Cadence Virtuoso中AC和STB仿真对比:全差分反相放大器稳定性分析

Cadence Virtuoso中AC和STB仿真对比:全差分反相放大器稳定性分析 ★ FEATURED ARTICLE
做模拟IC设计Cadence Virtuoso几乎是绕不开的工具。放大器设计里AC分析和STB分析又是天天要碰的两个按钮——说实话我见过不少工程师把AC当STB用或者搞不清楚为什么AC扫出来的相位裕度跟闭环稳定性对不上。今天拿一个全差分反相放大器当例子把这两个仿真的一次完整操作、结果解读和背后的原理差异一次讲透。全差分反相放大器这个电路很有代表性它同时包含差模反馈路径、共模反馈环路还自带“反相”这个容易搞错信号方向的坑。你把这一个电路吃透了Cadence里大多数运放类仿真套路都能举一反三。这篇内容适合正在学模拟IC设计的学生、刚接触Virtuoso的工程师以及写报告时被AC/STB结果折磨的人。1. 为什么用全差分反相放大器来讲stb和ac1.1 电路结构拆解先把这个电路说清楚。这里说的全差分反相放大器不是运放内部只有一个反相端的那种结构而是标准的全差分运算放大器配上外部电阻反馈网络接成反相闭环形式。运放内部是经典的五管结构NMOS输入差分对M1、M2、PMOS电流镜负载M3、M4、尾电流源M5。从差模信号的角度看VINP经过M1放大后在VOUTN得到反相输出VINN经过M2放大后在VOUTP得到反相输出所以这是一个天然的反相放大器核心。外部反馈用两个输入电阻Rs和两个反馈电阻Rf连接形成闭环。VINP信号经过Rs接到M2的栅极VOUTP经过Rf也接到M2的栅极在这个求和节点完成反馈M1侧对称接法类似。闭环增益表达式为[ A_{CL} -\frac{R_f}{R_s} ]这里负号就是反相放大器的由来。取Rf10kΩ、Rs2kΩ时闭环增益就是-5倍约14dB。这个电路最大的特点是反馈网络本身在差模方向形成负反馈同时由于是全差分对称的P、N两条支路各有一条反馈路径。如果你想看环路稳定性就不得不同时处理两个对称的反馈支路——这对仿真方法提出了要求。1.2 stb与ac两种仿真的定位差异这是全篇的核心先把概念捋顺。AC仿真的本质是小信号线性频率响应分析。它在直流工作点的基础上对电路施加一个特定频率的小正弦信号扫描频率后得到从激励点到测量点的传输函数。注意AC测的是“从某点到某点”的传输函数。如果你把激励加在闭环放大器的输入端测输出端那测到的是闭环响应。想用AC测环路增益就必须先手动断开反馈环路在断点的一侧加激励另一侧测响应。问题就出在这个“断开”上。断开点两侧的阻抗是相互影响的断开后你可能会把反馈网络的负载效应丢掉也可能把下一级的输入阻抗和这一级的输出阻抗的相互关系破坏掉。结果就是AC算出的环路增益和相位裕度跟实际闭环工作时的真实环路增益对不上偏差在复杂反馈网络中可能相当可观。STB仿真的定位完全不同。STBStability Analysis基于Middlebrook的环路增益测量理论它通过一个插入在环路中的探针器件iprobe注入小信号扰动同时测量环路对这个扰动的响应在不破坏闭环结构的前提下直接计算出环路增益、相位裕度和增益裕度。它对探针插入位置不敏感也不要求你断开反馈网络更重要的是它能同时处理多个反馈环路。说得直白一点AC像是你要测电路板上某根走线的电流必须把走线剪断串入电流表STB则是用了钳形电流表不用剪线直接夹上去就能读。全差分放大器这种存在两条对称差模反馈路径和共模反馈环路的电路正是STB大展拳脚的地方。1.3 为什么全差分比单端更能体现stb价值单端反相放大器用AC断开环路测环路增益虽然有一定误差但结构简单断点就一个很多老工程师凭经验也能调对。换成全差分之后情况立刻变复杂P侧和N侧各有一条从输出到反相输入的反馈支路断点增多、对称性容易破坏断开一侧而另一侧保持闭环仿真结果可能完全偏离真实。更麻烦的是全差分运放几乎没有例外都需要**共模反馈电路CMFB**来稳定输出共模工作点。这个CMFB环路本身也是一个反馈环路它与差模环路共存。如果你用AC去断环到底断哪个断差模还是断共模断完之后工作点可能都建立不起来了。STB在Cadence里可以同时指定多个iprobe把差模两条路径的probe都填进去Spectre会自动合成环路增益给出总的稳定性结论。这才是全差分电路的标准仿真姿势。2. 仿真平台搭建与初始配置2.1 原理图设计从器件到反馈网络我用的是Cadence Virtuoso IC6.1.8环境PDK用的常见CMOS工艺库。如果你用其他版本菜单名称可能有细微差异但整体流程一致。在Schematic Editor中从analogLib里调出以下器件nmos4输入差分对M1、M2尾电流管M5pmos4电流镜负载M3、M4iprobe环路探针后面STB仿真要用res外部反馈电阻Rf、输入电阻Rsvdc电源、偏置、共模参考电压vacAC小信号激励源器件尺寸参考值我用的是输入对管W/L20μ/0.5μPMOS负载管W/L40μ/0.5μ尾电流管W/L20μ/1μ。电源电压1.8V尾电流设置为100μA每边支路50μA。根据公式gm2Id/Vov估算过驱动电压在200mV左右时每个输入管的gm大约0.5mS。输出阻抗取决于ro和负载的并联粗略估计在几十kΩ量级所以运放开环增益大概在30~40dB之间。这个量级做演示足够而且容易看出反馈前后的区别。画原理图时注意管子的衬底连接NMOS的衬底统一接地PMOS衬底接VDD。电流镜负载的栅极相连处要把M3和M4的漏极连接关系画对否则电流镜比例不对差分输出会偏到一边去。外部反馈网络连接时我有一个习惯先在图纸上标出“求和节点”也就是Rs、Rf和运放输入栅极三者的交汇点再连线。全差分结构里有两个求和节点P侧一个、N侧一个连反了就成了正反馈仿真出来的增益会诡异到让你怀疑人生。2.2 激励源与CMFB让仿真先跑起来建立直流工作点是所有仿真成功的前提。全差分运放如果没有共模反馈输出共模电压是不确定的AC和STB都没法进行。这里做两个选择一是用理想CMFB模型。在analogLib中调一个vcvs压控电压源增益设为100倍正输入端接共模参考电压比如900mV负输入端接输出共模检测点两个大电阻Rcm从VOUTP和VOUTN接到检测点输出端接到尾电流源M5的栅极。这个模型能体现CMFB的基本控制思想但它毕竟是理想模型掩盖了真实CMFB电路的带宽和极点只适合学习演示。二是用大电阻强制共模。在VOUTP和VOUTN各接一个1MΩ电阻到一个固定共模电压源上。这个方法最简单缺点是会在输出端引入额外负载对低频差模增益影响不大但高频行为会有点失真。实际工程里必须用真实CMFB电路而且在流片前要单独对CMFB环路跑STB。我在做这个演示时为了把焦点集中在AC与STB方法对比上用了大电阻强制共模的方式同时会在文章后面指出这种方法在精确设计时是不够的。输入激励源的设置也要注意。设置一个直流共模偏置在反相输入端的电阻之前给定共模电平1V。AC信号源用vac对于闭环AC仿真把vac的AC magnitude设为1V这样输出的差分电压值直接等于闭环增益数值不用再换算。对于开环AC仿真则把AC magnitude设为1mV防止输出超出线性范围。2.3 ADE分析设置前的自检清单很多仿真失败不是因为电路设计错误而是初始设置不完整。我在跑任何仿真前都会过一遍这个清单电源和地是否都连到了VDD/VSS符号上所有晶体管的model名是否填写正确长度宽度是否在PDK允许范围内所有独立电压源是否设置了DC值AC分析的信号源是否设置了AC magnitude这个特别容易漏漏了扫出来的结果全为0是否有悬空节点Cadence的CIM标记会提示但还是要肉眼检查全差分输出是否成对对称不夸张地说AC仿真出来是一条0dB平坦直线十有八九就是AC激励幅度没设。别问我怎么知道的。3. AC仿真实操闭环增益与带宽怎么看3.1 ADE L中一步步完成AC仿真启动ADE L如果你用ADE XL也行流程类似打开原理图所在的cellview后按以下步骤操作第一步把仿真器设为spectre。在ADE L的Setup-Simulator/Directory/Host里选择spectre目录设置到你有权限的路径。第二步选择分析类型。点击Analyses-Choose在Analysis Type里选ac。默认情况下的扫描类型是Logarithmic从1Hz扫到100MHz每10倍频程10个点。这些默认参数对放大器演示够用但我一般会把点数增加到20波形更平滑。第三步设置输出。在ADE L的Outputs-To Be Plotted里先选择要观察的节点。全差分放大器的输出是差分信号直接看单端波形会少算6dB增益。用计算器里的diff函数diff(VS(/VOUTP) VS(/VOUTN))这样读到的才是真正的差分输出增益。同理输入也可以用diff但如果AC激励只加在单侧或按反相方式加在两侧要看你对“差分输入”的定义。标准做法是VINP接vac正端VINN接vac负端也就是ac magnitude为1V相位0和180然后输入也读差分。第四步跑仿真前先检查DC工作点。点击DC Operating Point或者直接Run后看输出打印的直流信息。确认所有MOS管工作在饱和区VdsVovVgsVth。如果发现某管子在线性区回去调共模电平或偏置电流。3.2 AC结果解读增益、带宽和稳定性线索仿真跑完后直接看VOUTP-VOUTN的幅频和相频曲线。正常的闭环响应应该是这样的低频段增益稳定在14dB左右对应5倍关系然后在高频某一处开始滚降最终以-20dB/dec的斜率下降。3dB带宽就是增益从低频值下降3dB对应的频率点用Calculator里的bandwidth函数或者直接在波形窗口右键Mark-Marker-Peak找峰值再往前挪到-3dB位置。如果闭环AC响应在滚降之前出现明显的上冲尖峰这不是好事。这个尖峰是环路相位裕度不足的典型信号尖峰越高相位裕度越小。理论上相位裕度60度时闭环响应没有尖峰大约在相位裕度45度时出现1dB左右的尖峰再小就会出现2dB以上的明显peaking。你可以通过这个尖峰反向推断稳定性但它毕竟只是个间接信号。用开环AC也能测相位裕度去掉反馈电阻在运放输入端加1mV小信号测出开环增益和相位曲线再看0dB穿越点处的相位。问题是断开反馈后你测量的环路与真实工作时的环路并不相同反馈网络的负载效应被忽略了。在低频时MOS管输入阻抗高误差不大在高频时反馈网络和输入电容的相互作用会影响相位误差就会放大。这也就是为什么开环AC测出的相位裕度只能作为粗略估计不能当作流片前的稳定性结论。3.3 AC仿真替代不了STB的核心原因还是回到那个比喻。全差分反馈电路里有多个环路叠加AC断开反馈后你会改变环路的负载关系。有些环路如实测时没注意的CMFB环路依然存在它们的影响依然存在于结果中而真正想看的差模环路却因为断开操作而失真。具体到本例如果你把反馈电阻Rf断开有了前面用大电阻固定共模电平还好工作点还能保住。但如果你用的是真实CMFB断环会引起共模环路震荡DC工作点直接不收敛AC仿真根本跑不出来。即便跑出来了你看到的“开环电压增益”也是共模和差模混在一起的结果没法用来判断闭环稳定性。所以结论很简单AC适合看闭环增益、带宽和传输函数环路稳定性判定请无条件用STB。这是Cadence里最标准的使用方式也是业界认可的做法。4. STB仿真实操相位裕度与环路稳定性4.1 iprobe插入的位置与方向STB仿真最关键的步骤是插iprobe。iprobe在analogLib里可以直接搜索到符号看起来像一个带箭头的四端器件实际上可以串接在反馈支路中。插入位置选择有一个原则放在你要分析的反馈环路的信号通路上。本例中反馈信号从输出端经过Rf流向运放输入端求和节点所以iprobe最适合串在Rf和求和节点之间也就是反馈电阻与输入管栅极相连的走线上。连接时务必注意iprobe的方向。Cadence中stb分析要求iprobe的电流方向定义清晰通常正端指向负端的方向就是信号流动方向。反馈信号是从输出端流向输入端所以iprobe正端应该靠近Rf一侧负端靠近栅极一侧。全差分设计需要插两个iprobe一个放在VOUTP-Rf-VINN支路另一个放在VOUTN-Rf-VINP支路。建议把两个iprobe命名清晰比如iprobe_p和iprobe_n这样在STB设置时不会搞混。4.2 STB参数设置与运行在ADE L中打开Analyses-Choose选择stb。关键设置项如下Probe instance填写你放置的iprobe名。多个probe用空格分隔例如“iprobe_p iprobe_n”Start frequency1HzStop frequency100MHzSweep typeLogarithmic点数20有一些版本的Cadence会让你填“Reference Node”或者要求保存所有节点save all为保证STB计算的准确性推荐勾选保存所有节点。否则结果显示可能因内部节点信息不足而无法计算相位裕度。设置好后直接Run。仿真完成后Results-Direct Plot-Main Form里选stb然后点击环路增益波形。Spectre会把环路增益的幅频、相频曲线画出来同时在结果日志中给出相位裕度Phase Margin、增益裕度Gain Margin和单位增益频率0dB crossing。阅读STB结果的第一个经验正常环路增益的相位曲线应该从0°附近开始或接近0°然后随频率下降穿越-180°。如果你看到的相位曲线从180°开跑或者环路增益低频段几乎是0dB以下平坦的首先要怀疑iprobe方向反了。把iprobe方向调换一下再跑一次结果就会正常。4.3 STB结果解读与补偿调整假设我们跑出来的STB结果如下环路增益低频段约为30dB0dB交叉频率单位增益频率约为12MHz交叉点处相位裕度为58°相位穿越-180°时增益裕度约10dB这个结果说明系统是稳定的有58°的相位裕度闭环响应接近临界阻尼阶跃响应超调量大约在10%以内可以接受。如果你想要更好的瞬态响应可以继续补偿把PM提到65°以上。如果相位裕度只有十几度甚至几度那闭环系统很可能已经处于震荡边缘。解决思路基本上围绕给环路增加主极点或零点补偿增大输出端负载电容把主极点往低频推让增益曲线在穿越0dB之前以-20dB/dec滚降避免第二个极点影响穿越点的相位。加入零点补偿最常见的是在输出电阻上串一个小电容形成零极点对或者用密勒补偿电容跨接在增益级输入输出之间。减小第二极点的影响在电流镜负载管的源极串联小电阻抵消镜像极点。补偿手段调整完后重新跑STB看相位裕度是否提升。这里我在实操中养成的习惯是同时对照闭环AC响应和STB结果。正常情况是STB的PM变大后闭环AC的尖峰也消失两个结果互相印证心里才踏实。如果STB显示PM已经60°闭环AC还有明显尖峰那要回到电路里找是不是其他非主环路比如CMFB环路在捣乱。在STB结果窗口还可以查看环路增益的多个极点零点。Cadence的报告里会列出主要极点位置这对定位哪个极点导致PM不足非常有帮助。我记得有一次放大器PM只有5°STB报告里清晰看到一个高频极点出现在3倍单位增益频率处正是电流镜的镜像极点后来在镜像管源级加电阻补偿后PM直接恢复到60°这种效率是开环AC给不了的。5. 常见问题与避坑技巧实录5.1 工作点异常与仿真不收敛我见过最多的问题就是STB跑了几秒钟直接报错“Unable to find DC solution”或者“Newton iterations failed”。这种时候先别急着怀疑Cadence坏了按顺序排查症状常见原因处理方法DC不收敛反馈连接形成正反馈检查P、N两侧的反馈是否交叉连反DC不收敛CMFB缺失或失效输出共模漂移加入CMFB或大电阻强制共模DC不收敛器件不在饱和区查看工作点调整偏置电压或尺寸STB结果相位从180°开始iprobe方向反了翻转iprobe方向重新跑STB提示找不到probeinstance名填写错误确认填的是iprobe的instance名而非model名AC结果为全0激励源没有设AC magnitude在源属性里设置AC magnitude闭环AC有尖峰但STB正常CMFB环路不稳定单独对CMFB环路插入probe跑STB除了表格里的问题还有一个很实用的技巧在仿真设置里把gmin稍微调大一点比如从默认的1e-12调到1e-9很多DC收敛问题能迎刃而解。不过跑后仿或者高精度验证时记得调回默认值否则漏电会干扰真实结果。如果电路规模大、反馈环路多STB要确保探针插入的是“主要信号通路”而不是偏置支路。把iprobe误插到尾电流源的偏置线上测出来的环路增益会非常小而且相位乱七八糟跟放大器主环路完全没关系。5.2 全差分电路里CMFB带来的额外坑全差分放大器真正的设计难点往往不是差模回路而是共模回路。你在做STB时如果只关心差模稳定而忽略了CMFB环路很可能差模PM有60°CMFB环路PM却是负的整体电路在时域大信号激励下依然会震荡。检查CMFB环路稳定性的方法和差模环路完全一样在CMFB误差放大器的输出到被控管栅极的反馈路径上插入iprobe跑STB看共模环路的相位裕度。由于CMFB环路经常会有额外的检测电阻和误差放大器寄生电容极点位置往往比差模主极点更高所以CMFB环路不稳定是常见事。另一个坑是CMFB检测电阻Rcm本身给输出节点引入了负载在STB结果里也会体现。如果你用大电阻强制共模做学习演示你的STB结果实际上包含了这个额外负载的影响这可能让你误判实际电路的稳定性。所以演示完了一定要换成真实CMFB再跑一次以真实电路为准。5.3 我踩过的一些坑和手工检查方法最后分享几个纯粹的实操心得。第一个心得仿真前先手工算一遍期望值。全差分反相放大器的闭环增益就是-Rf/Rs这个不依赖运放增益很好算环路增益的低频值理论上等于运放开环增益乘以反馈系数β其中β≈Rs/(RsRf)本例中β2/12≈0.167。如果开环增益100倍环路增益大约17倍约24.6dB。STB跑出来如果低频环路增益跟这个估算差太远大概率是连线或者设置出了问题。这个小习惯帮我抓出过两次原理图连接错误。第二个心得iprobe放置后先用DC仿真验证它没有破坏原电路工作点。在跑STB之前用前面设置好的DC operating point检查一遍比较插入iprobe前后工作点是否一致。iprobe理想情况下是零压降、无电流损失的如果工作点变化明显说明插得不对或者方向影响了信号路径。第三个心得AC和STB的扫描频率范围最好保持一致。从1Hz到10倍0dB穿越频率是比较保险的选择。如果只扫到0dB交叉点附近你看到的相位裕度可能受扫描截止影响看起来比实际偏大或偏小。我一般扫到交叉频率的10倍以上确保相位曲线完整经过-180°。第四个心得善用Cadence自带的stb summary。在Results里直接读Summary就能看到phase margin和gain margin的数值不用肉眼去读曲线。但注意spectre对多个probe合成的结果有时候会把对称的两条反馈环路的信息合并你会发现只有一个loopgain曲线这是正常的。如果你发现summary里的数字跟曲线对不上多半是扫描点数太少导致插值误差把点数增加到50就好。第五个心得STB结果异常时把两个iprobe分开单独跑一次。全差分结构里P侧和N侧理论上对称两侧的环路增益应该一模一样。如果只有一侧结果异常另一侧正常说明那侧电路的反馈网络或信号方向有问题。这个过程用来排查对称性破坏特别有效比盯着整体合成结果猜半天要快得多。写在最后前面说的都是固定流程最后讲点我的体会。刚开始做全差分放大器时我也有一阵子只跑AC看到开环相位裕度60°就以为稳了结果搭成闭环后阶跃响应振铃明显折腾半天才发现是反馈网络加载效应被AC忽略真实相位裕度只有20°。从那以后我的固定组合拳就是AC看闭环增益和带宽STB看环路稳定裕度阶跃响应当最终验证。这套组合基本覆盖了放大器从指标到稳定性的所有需求。Cadence里STB和AC是互补工具不是替代关系。你不需要掌握复杂的Middlebrook数学推导但一定要知道它们各自测什么、什么时候用哪个、结果怎么互相印证。还有个小建议是初学阶段多手动算算增益和带宽的估计值再跟仿真结果对照这样你才会对软件里的数字保持警惕而不是盲目相信一条漂亮的曲线。这个全差分反相放大器例子做完一遍之后你可以接着把放大器换成套筒式共源共栅结构或者把反馈网络改成开关电容STB的设置完全不需要变。方法学会了换电路只是换个probe位置而已。
阅读完成 · 觉得有帮助?
咨询建站