资讯详情

开关电源环路稳定性仿真:Cadence PSS+PSTB实战指南

📅 2026/9/21 2:39:51 | 华诺云谱 👁 阅读
开关电源环路稳定性仿真:Cadence PSS+PSTB实战指南
先说个很多人踩过的场景。你在Cadence Virtuoso里搭好了一个Buck变换器的完整电路参考电压、误差放大器、PWM比较器、功率级、LC滤波、反馈分压全都有想看看环路稳不稳下意识调出AC分析从1kHz扫到10MHz出来的幅频特性却完全没法看——相位曲线莫名其妙地高高低低低频增益也对不上手算的-20dB/dec。问题不在你的电路而在工具选型开关电源的工作点本身就是周期性变化的传统AC分析从根上就不适用。这篇我只聊一件事——用Cadence环境下的PSS配合PSTB/PAC分析把开关电源的环路稳定性仿真做对、做准并且把我在实际项目中踩过的收敛、谐波、探针设置的坑一并交代清楚。1. 先别急着跑AC开关电源不是线性时不变系统1.1 两种隐含假设直接在电源环路里同时失效教科书上AC分析或者叫小信号AC的原理是先把电路在某个直流工作点上做直流工作点分析然后在该点线性化再扫频求出小信号传递函数。这背后藏着两个假设。第一电路有个明确且唯一的直流工作点第二从该工作点附近的小扰动出发系统的响应是线性的、时不变的。线性线性说的就是响应与激励幅度成正比时不变就是无论你在哪个时刻看它系统特性都一样。这两个条件放到纯模拟电路里基本都成立。比如一个LDO输出恒定在1.8V功率管工作在某个固定的饱和区偏置点你在这个点两边加几毫伏扰动响应完全可以用一个线性时不变模型描述。但开关电源不同它靠PWM斩波工作开关管在一个开关周期内导通、关断、再导通功率级的拓扑在两种状态之间来回切换整个电路的工作状态本身就是时间周期函数。这带来了一个直接后果你在某个瞬时“冻结”出的直流工作点根本不代表电路的真实状态。你在频率域看到的增益和相位其实是多个状态叠加的结果。用LDO那套线性时不变方法去分析开关电源的环路结论自然不可信。1.2 一个最小Buck模型的AC仿真失败过程我早期刚转做电源也不信这个邪搭了个最简电压模Buck想用AC硬跑。电路很简单误差放大器OTARC补偿、斜坡发生器、PWM比较器再带一个同步Buck功率级和LC输出滤波器反馈分压电阻进FB。AC分析配置在参考电压源上叠加1V的AC小信号扫描范围100Hz到10MHz。跑完看到幅频响应从低频开始就不是平坦的中间有几段莫名其妙的尖峰相位曲线更是乱跳。更离谱的是把AC幅度从0.5V改成1VBode图都会发生变化——这对真正的线性时不变系统是不可能出现的事情正好说明系统本质是非线性的。那次失败让我彻底记住了电源的正弦扫频正确的做法是先求电路的周期稳态解再做“周期时变”小信号分析。Cadence的PSS就是干第一件事的PSTB和PAC负责第二件事。2. PSS、PSTB、PAC三兄弟各管哪一段2.1 PSS周期稳态解是后面一切分析的地基PSS全称是Periodic Steady-State周期稳态分析。它解决的是“这个开关电源稳定工作一段时间后在一个开关周期内电路每一时刻的波形是什么”。注意这个波形不是正弦波而是一个完整的、包含纹波和开关噪声的周期波形频率等于开关频率或者你指定的基频。求这个周期解有两种主流方法Cadence Spectre里常用的是shooting method打靶法思路大体上是给定电路在周期开始时的一组初始状态然后在一个周期内做瞬态积分看看周期末的状态和初始状态差多少如果差得超出精度就修正初始状态不断迭代直到“一个周期末的波形”与“下一个周期开始的波形”完全一致。收敛之后你就得到了一个真正的周期稳态解。得到了这个周期稳态解后面的PSTB和PAC才能开始工作。因为这两类分析本质上是在这个“周期性工作点”上做线性化——不是线性化到单一静态点而是线性化到一条随时间周期变化的轨迹上。这正好对应了开关电源的真实物理状态开关管一会儿通一会儿断不同时刻对应不同的小信号响应环路增益是这些响应的周期时变组合。2.2 PSTB和PAC的本质差别自动算环路增益 vs 先求周期传递函数PSTB全称是Periodic Stability Analysis有的文档里也叫Periodic Transfer Function的探针扩展它做的事情非常明确像传统STB分析一样在环路里某个位置放置探针自动计算出环路增益、相位裕度、增益裕度只不过工作点换成PSS求出的周期稳态解。它是把STB分析和周期稳态分析结合的产物输出直接就是T(s)的Bode图。PAC全称是Periodic AC Analysis周期AC分析。它的输出是一个从某个激励源到某个响应节点的周期时变传递函数。它不像PSTB那样包含“断开环路自动测环路增益”这一步。用PAC测环路增益你需要自己搭“注入—返回”结构在环路断开处注入一个小信号扰动再测量返回信号最后自己按环路增益的定义算。我做一个不太严谨但好记的类比PSTB是“一条龙”的环路稳定性测试仪把探针往环路里一插相位裕度直接读出来PAC则更像一个通用的频率响应测试平台你得自己设计测试方法它只负责输出从激励到响应的曲线。前者专注于环路稳定性问题后者可以用来测电源的输出阻抗、音频敏感度、控制到输出的传递函数等更多东西。2.3 我什么时候用PSTB什么时候临时凑PAC在Cadence里我做开关电源的稳定性分析90%的情况首选PSTB。原因是省事、直观、不容易出错探针放对位置跑完直接看相位裕度和增益裕度结果可读性好也方便做多corner、多条件的扫描对比。PAC则用在两类场景。一类是我要的不是环路增益而是某个特定路径的频率响应比如误差放大器输出对输入电压的抑制比Audio Susceptibility音频敏感度或者输出阻抗曲线。这些用PSTB测不了因为它的输出默认是环路增益。另一类是当PSTB因为模型问题比如某些行为级模型探针不兼容跑不出来的时候我会退而求其次用PAC手动搭注入/返回来算虽然步骤繁琐一点但至少能把环路特性看个大概。3. 从原理图到Bode图PSSPSTB的实操链路3.1 环路断开点这么选结果才可信PSTB分析的第一步不是设置PSS参数而是决定探针放在哪儿。探针位置直接决定了你测到的环路增益代表的到底是哪条信号路径。我的经验是环路断开点应当满足三个条件第一信号流向清晰断开后“前向路径”和“反馈路径”不会互相串扰。第二断开点两侧都是低阻抗或高阻抗的明显分界探针插入不会改变原电路直流工作点。第三你希望研究的补偿与反馈特性都在这个断开点所围成的环路内。在电压模Buck里我最常用的断开点是误差放大器输出到PWM比较器正输入之间。这里信号是从误差放大器输出过来的电压信号断开后左侧是放大器的输出电阻通常较高右侧是比较器的输入电容通常很小插入一个理想电流探针几乎不影响直流偏置。更重要的是这个断开点把整个环路分成了两半前半段包括误差放大器、反馈分压和补偿网络包含了你最想优化的Type II/Type III补偿网络后半段包括PWM比较器、功率级、LC滤波和反馈网络包含了功率级的特性。两者的乘积就是完整的环路增益。如果我关心的是电流模控制峰值电流模我会把探针放在PWM比较器的另一个输入端之前因为电流采样信号也是环路的一部分。但这时要注意电流采样路径里的电流检测增益也要涵盖在环路范围内。Cadence里STB分析用的探针是analogLib里的iprobe它是一个零电压源、理想电流表流经它的电流被原样检测并在分析中被用来形成环路增益。它放在原理图上就是串联在信号线中间。PSTB分析时需要指定这个iprobe的实例名。3.2 PSS四个关键参数背后的工程考虑在Cadence Spectre里PSS分析需要设置的参数看起来很多但真正决定成败的核心是这四个。第一个是振荡周期或者说基频Fundamental Frequency或者Beat Period。对开关电源来说这是确定的就是开关周期。比如500kHz开关频率周期就是2微秒。如果你是同步整流Buck死区时间对周期的影响可以忽略直接用开关周期即可。第二个是tstabskip initial transient time跳过初始瞬态的时间。PSS是从某个起始状态开始求解的如果起始状态距离真正的稳态解太远直接开始PSS收敛会很困难甚至根本收敛不了。tstab的作用是先把电路“跑”一段时间让它接近稳态再开始PSS迭代。我的经验是tstab至少要覆盖输出电压从0爬升到目标值并稳定下来的时间。对于LC品质因数较高的电源启动阶段输出可能有振荡要等振荡衰减完再启动PSS。一个比较稳的初值是设成500到1000个开关周期再去看瞬态波形确认确实稳了。第三个是谐波数Number of Harmonics。谐波数决定PSS在频域上保留多少倍频成分。调节谐波数需要考虑两个方面一方面是希望保留足够多的开关噪声谐波使得后续PSTB在高频段不会因为谐波截断而失真另一方面谐波数越多仿真矩阵越大耗时成倍增长。对Buck这类硬开关电源我一般设10到20对谐振类拓扑LLC因为波形里面正弦占比高、谐波相对干净可以适当少一些对反激这种电流尖峰明显的拓扑可能需要30以上。第四个是errpreset误差预设可选liberal、moderate、conservative三档。它控制PSS求解精度与速度的平衡。我一般用moderate。如果发现PSTB结果在某个频率附近有异常毛刺再考虑把精度提到conservative重跑PSS。看似小改动但有时能消除结果中一些不明来源的振荡。3.3 PSTB探针的接法与谐波数设置PSS跑通之后PSTB就顺理成章了。在Spectre的analysis setup里添加PSTB分析关键的设置项是probe指定iprobe的实例名例如iprobe_ea_out。start和stop扫频范围。开关电源的环路带宽交叉频率通常在开关频率的1/10左右所以扫频下限可以从1kHz或更低开始上限到开关频率的1到2倍。比如500kHz开关频率上限扫到500kHz基本能看到交叉点之后的高频行为。不过我也会顺手扫到1MHz多看一段相位在高频的表现。sweep type默认是auto实际用对数扫描Logarithmic点数按需设置我一般给50到100个点。点数太少相位裕度的读数不够精确点数太多跑起来慢。还有一类参数是PSTB自身的谐波数设置这个一般和PSS保持一致或者略微降低。因为PSTB是在PSS结果的线性周期时变模型上做传递函数求解谐波数直接关系到高频段的计算精度。我实际测试下来PSS谐波数设20PSTB的谐波数保持默认20测得的交叉频率和相位裕度已足够稳定强行把谐波数拉到50结果几乎不动只是白白多跑几倍时间。3.4 跑通后的输出与读数跑完之后Spectre会输出环路增益T(s)的幅频和相频曲线。相位裕度在幅频曲线穿越0dB处读取把交叉频率单位增益频率对应的相位减去-180°得到的差值就是相位裕度。增益裕度则在相位曲线穿越-180°处读取该频率对应的增益绝对值dB就是增益裕度。在Cadence里PSTB分析结束后结果会被组织在Direct Plot下面可以直接选“PSTB”再选“Loop Gain”Cadence会在图上自动标记出交叉频率、相位裕度和增益裕度。这个自动标记功能很方便但我的建议是标记出来之后还是自己用光标在曲线上核对一遍因为某些模型下自动标记容易把谐波毛刺当成真正的交叉点。4. 不止看相位裕度稳定性判断与补偿验证的工程细节4.1 相位裕度、增益裕度之外的三个检查项很多初学者拿到PSTB结果看到相位裕度大于45°就觉得稳了。实际工程中只看相位裕度远远不够我一般还会额外检查三个东西。第一交叉频率与开关频率的关系。交叉频率太高说明环路带宽逼近甚至超过开关频率的1/5此时环路延迟和采样效应会被激发相位裕度的实际值会显著低于仿真值。我在项目里一般要求交叉频率在开关频率的1/10到1/5之间再高就会开始怀疑补偿方案的可靠性。第二相位曲线的“平坦度”。正常的Type III补偿环路相位曲线在中频段应该是平滑的一个峰一个谷不会剧烈抖动。如果相位曲线在高频段出现明显的“多峰”或者毛刺那大概率不是真实的环路特性而是谐波截断或者仿真精度问题。我会回头调PSS谐波数或errpreset直到曲线变干净。第三负载阶跃的时域响应。PSTB毕竟是线性化小信号分析开关电源在大信号阶跃下补偿器可能进入非线性区小信号相位裕度好不一定代表大信号瞬态就漂亮。所以我的习惯是PSSPSTB跑完判断“理论稳定”之后一定还要做一次负载阶跃瞬态仿真观察输出电压的振铃次数和恢复时间。两者结论一致我才会把电路投出去。4.2 负载、输入电压变化的环路扫描开关电源的环路增益不是固定的。负载电流重、轻不同功率级的低频增益完全不同输入电压不同PWM调制器的小信号增益也不同。一个在任何条件下都稳定的环路才是合格的设计。Cadence里的做法很直接用参数化扫描包住PSSPSTB分析。我一般把输入电压作为第一个扫描变量从最低工作电压扫到最高工作电压比如12V到48V负载电流作为第二个扫描变量从空载1mA扫到满载15A。每次扫描都会自动完成一次PSS和PSTB。跑完以后把不同条件下的相位裕度整理在一张表格里关注最恶劣的情况。多数情况下重载、低输入电压的组合会让交叉频率最高、相位裕度最低这就是最需要关心的点。这里有一个容易被忽视的地方PSS的收敛速度和扫描条件有关。在极端轻载比如空载CCM/DCM临界时电感电流不连续电路的非线性更强PSS收敛更难。我建议在扫描前先单独跑一个极轻载条件的瞬态仿真确认电路稳定、电流波形清晰再挂到扫描里。否则扫描到一半PSS不收敛整轮结果都浪费了。4.3 补偿网络参数如何借助仿真快速收敛PSTB最大的价值不只是判断“这个设计稳不稳”而是帮助你快速定位“该改哪里”。我做Type III补偿调整时有个固定的步骤先在Cadence里搭好初始补偿值我会先把零点、极点位置按经验设定跑一次PSSPSTB观察交叉频率和相位裕度确定需要提升还是压低频段增益然后再修改RC值重跑。不要盲目试参数一边看曲线一边调更高效。举例来说如果交叉频率偏低假设在5kHz而目标在30kHz我会先减小误差放大器增益电阻R1把中频段增益整体抬高约10dB再看交叉频率是否接近30kHz。如果相位裕度不足再调整补偿零点位置增大零点对应的RC乘积把相位提升区域往交叉频率附近搬。每轮仿真只需要几步改参数、跑PSS、跑PSTB、看两条曲线。熟练之后一轮完整的“参数修改仿真验证”在5到10分钟就能完成。这种方式比在纸上反复演算效率高得多也比盲调参数心里有底得多。5. 仿真不收敛、结果毛刺我踩过的坑和排查顺序5.1 PSS不收敛的排查链路PSS不收敛是做电源仿真遇到最多的报错没有之一。Spectre的报错信息通常以“PSS analysis failed to converge”之类的话出现但真实原因五花八门我按出现频率排个顺序供大家逐项排查。第一tstab太短。电路还没有结束启动瞬态就强行开始求周期稳态解必然不收敛。这个最好判断先跑一个足够长的瞬态比如1ms看输出电压和电感电流是否已经稳定。稳定的时间点就是tstab的下限。第二初始条件不合适。PSS对电路的初始状态很敏感我在某些半桥/全桥设计中遇到过直接开始PSS不收敛但把电感电流的初始值设成接近稳态值比如利用上一步瞬态仿真的终值作为初值之后PSS很快收敛。Cadence里可以通过修改PSS的初始条件选项把初始工作点设置为前面瞬态分析的最后一个时间点。第三模型的问题。行为级模型中的理想开关、理想二极管在PSS的Newton迭代中很容易产生数值突变导致不收敛。这类问题在真正的晶体管开关电源中反而不常见因为晶体管的导电特性是平滑的。如果确实用了理想开关模型可以考虑并联一个很小的电导或者电容把开关瞬间的突变削平一些。第四误差预设太严格。有些设计里我把errpreset从moderate改成conservative仿真反而从收敛变成不收敛。这时我会把tstab稍微加长一点或者把PSS的采样点数增加帮助迭代过程稳定。说白了精度的提升也要建立在数值条件更优的基础上不能盲目堆精度。5.2 tstab、beat period和harmonic之间玩平衡PSS三个核心参数——tstab、beat period、harmonic——之间有明显的相互制约关系实际设置时需要在物理正确与仿真成本之间找平衡。beat period是物理确定的一般不能随便改。但有一种特殊情况如果你仿真的是多相Buck比如4相交错并联PSS的基频应该是交错的等效开关频率比如单相500kHz、4相交错等效2MHz而不是单相的500kHz。如果把基频误设成单相频率PSS也能跑但PSTB的结果会混入周期误差环路增益的相位出现异常。这个细节我见过不止一次有人踩坑。tstab的设置不要盲目追求长。tstab太长前期瞬态仿真占用的时间会被白白拉长太短PSS不收敛。我现在的做法是先用瞬态仿真跑一个几百微秒的波形直观判断输出电压稳定在哪个时间点然后把tstab设置成这个时间点再乘以1.2到1.5留一点余量。harmonic的设置同样有技巧。对于Buck这种电感电流基本线性的电路开关节点波形近似方波谐波含量很高但PSTB关心的频率范围其实只在开关频率附近所以harmonic数不用过多。对于LLC这类谐振电路波形本身正弦度很好harmonic设置要求也不高。真正需要小心的是反激类拓扑变压器漏感和二极管寄生振荡会产生很高的谐波成分harmonic数不足会导致PSTB高频段结果失真。5.3 波形毛刺、负相位跳变最容易被忽视的原因PSTB跑完之后偶尔会出现两类看起来很吓人的结果一类是低频段相位曲线出现莫名其妙的毛刺另一类是相位在高频段突然朝着-360°方向跳变。第一类毛刺我遇到过的情况绝大部分是PSS谐波数不足引起的。环路增益的相位在低频段理论上是很平缓的如果出现一个个尖峰多半是某次谐波成分在计算的频率点附近被截断了。解决方法是把PSS和PSTB的harmonic数同步增加再观察毛刺是否消失。第二类高频负相位跳变需要多留个心眼。开关电源的PWM比较器本身有采样效应即使在理想的平均模型下环路在高频段的相位也会比连续系统低得多。这里的“低”是真实物理现象不是仿真误差。但有些电路模型尤其是没有考虑比较器传输延迟的理想模型会把采样效应低估导致功率级在高频显示出来的相移过小。因此在仿真中看到的“相位裕度充足”只是一个必要条件真正做产品还要考虑实际芯片的传输延迟等寄生参数。还有一类极度容易忽略的原因参考电压源和反馈网络里的寄生电阻没有加。某些Cadence库里参考电压源默认带一个很小的串联电阻它和反馈分压电阻并联后会改变低频增益。低频增益不对交叉频率和相位裕度自然全错。排查时可以先量一下反馈分压点的直流电压是否精确等于参考电压如果偏了往往就是这类“不起眼”的寄生参数在捣乱。5.4 一个实用心得用“扫描-对比-微调”的闭环方式减少返工最后分享一个我长期使用的习惯。拿到一个新的开关电源拓扑时我不会只跑一个工作点的PSTB就结束而是把设计条件里的关键参数整理成一张表比如输入电压范围、负载电流范围、温度范围每个变量取3到5个点然后用Cadence的参数扫描一次性跑完把结果汇总成一张相位裕度、增益裕度的二维表。这样的好处是在很多问题还没被流片验证之前就能提前看到“哪个工作点最危险”。我在做某款宽输入电压Buck的时候就是通过这种扫描方式发现在最低输入电压最大负载的一个组合下交叉频率超过了开关频率的五分之一相位裕度只剩下30°。如果只跑一个典型条件这个问题很可能被掩盖投片后大概率会出现负载阶跃振铃超标的现象。另外参数扫描前我会把补偿网络里的可调元件比如运放的反馈电阻、补偿电容也设置成设计变量。在第一轮扫描结果的基础上用“哪一段频率增益不足调哪一段”的原则微调RC值两三轮之后通常就能得到一组在所有条件下都满足相位裕度要求的参数。这个“先全条件摸底、再定向微调”的方法比一边改参数一边单点验证的效率高得多强烈推荐给做电源仿真的同行。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。