在Virtuoso里跑运放仿真,GBW(单位增益带宽)和相位裕度是必须看的两个指标。但很多人不知道怎么用Calculate工具直接把这两个值算出来,还在手动读曲线、手动记录频率点。2026年Cadence Virtuoso更新到ICV23之后,Calculate工具的函数更全了,算这两个指标其实就3步。
GBW和相位裕度都是从环路增益的Bode图里提取的,所以第一步必须先跑stb(稳定性)仿真。
打开Virtuoso Analog Environment, schematic里把运放的反馈环路断开,在断开点插入一个大电感(比如1GH)做交流接地,这样环路就打开了。然后设置stb仿真:在Analyses里选stb,sweep类型选logarithmic,起始频率设10Hz,终止频率设10GHz,点数给100就够了。
跑完之后,你会得到两条曲线:一条是环路增益的幅度(dB),一条是相位(度)。GBW就是幅度曲线穿过0dB的那个频率点,相位裕度就是在GBW频率处,相位曲线距离-180°还差多少度。
原理不复杂,但手动去读这两个值太慢了。下面说怎么用Calculate工具一键提取。
幅度曲线有了之后,在波形窗口里点Tools → Calculate,或者右键曲线选Send to Calculate。
进了Calculate窗口,在Functions里找到cross函数。这个函数的作用是找曲线穿过某个阈值的横坐标值。
具体操作:
点Evaluate,结果直接出来,比如显示5.23MHz。这个值就是你的GBW。
我实测过一个两级运放,手算GBW大概是5MHz左右,cross函数算出来是5.18MHz,误差不到4%。比你拿光标去曲线上一点一点挪,快了不止10倍。
为什么用cross而不是value?因为value只能取某个固定频率点的幅值,但你不知道GBW具体在哪个频率。cross函数是自动搜索交叉点,不需要你猜频率范围。
GBW算出来了,下一步算相位裕度。
还是在Calculate窗口,这次选相位曲线,Function换成value。
关键操作在这里:在X Value那一栏,不要填固定数字,而是把上面cross函数算出来的GBW结果引用过来。具体做法是,在X Value里输入cross函数的结果变量名,或者直接填刚才算出来的频率值,比如5.23e6。
然后勾上Interpolate(插值)。因为你的相位曲线是离散点,5.23MHz这个频率点不一定刚好落在某个采样点上,勾了插值之后,Calculate会自动在相邻两个点之间做线性插值,算出精确值。
点Evaluate,假设结果显示-135.6°。
相位裕度 = 180° + 相位值 = 180 + (-135.6) = 44.4°。
搞定。
整个过程不超过30秒。我之前手算的时候,先在增益曲线上找0dB点,记下频率,再去相位曲线上找同一个频率对应的相位,两个光标来回切,至少花5分钟。现在30秒出结果,而且精度更高。
说两个我踩过的坑,你别再踩了。
坑1:stb仿真的电感值选太小
环路断开点的那个大电感,我见过有人用1mH,结果低频段的增益曲线直接歪了。这个电感的作用是交流短路、直流开路,值太小的话低频增益不准,GBW算出来就偏了。我现在固定用1GH,跑了上百次没出过问题。
坑2:cross函数的阈值填错单位
增益曲线如果你导出来看,单位可能是dB,也可能是倍数(线性值)。如果是线性值,0dB对应的是1,不是0。所以填Threshold Value之前,先确认你的曲线单位。在Virtuoso的stb仿真里,默认输出就是dB,填0没问题。但如果你自己做了后处理转成了线性值,阈值要改成1。
我有一次就是没注意这个,阈值填了0,结果cross函数返回了一个完全不对的频率,查了半天才发现是单位的问题。

GBW和相位裕度只是Calculate工具最基础的用法。这套方法可以扩展到很多场景:
2026版Virtuoso的Calculate里函数数量比2024年多了十几个,基本覆盖了运放仿真里80%的指标提取需求。
你现在手上有运放在仿真吗?打开stb的结果,按上面3步试一遍,cross算GBW、value加interpolate算相位裕度,30秒出两个指标,比手算靠谱多了。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。