尧图精选

Cadence ADE中VCO相位噪声仿真:PSS/Pnoise设置实战指南

🕒 发布时间:2026/10/2 13:21:40 📁 来源:尧图网络
做射频或者模拟IC设计的应该都有过对着Cadence ADE界面一脸茫然的阶段。尤其是VCO的相位噪声仿真PSS怎么设都不收敛Pnoise出来的曲线形状诡异甚至仿真器直接报错崩溃。我当年在1GHz VCO项目上踩过的坑比很多人走过的路还多。这几年用Cadence ADE做PSS/Pnoise仿真算是摸出了一套完整流程今天把这份实战经验完整写出来从PSS的设置逻辑到Pnoise的参数避坑再到结果曲线的读取与分析一次性说透。这篇内容适合正在做VCO设计、或者刚接触射频仿真器的新手也适合已经跑通仿真但对参数含义一知半解、想彻底弄明白背后原理的工程师。文章里所有截图和数据都来自我实际仿真中记录的内容步骤可以直接当成操作手册来用。先说结论相位噪声仿真的核心不在于点几下鼠标而在于理解PSS的beat频率设置、Pnoise的扫描逻辑以及噪声类型选择这三个关键点。这三个点搞定了整个仿真流程就顺了。1. PSS和Pnoise到底在做什么1.1 为什么VCO的相位噪声不能直接用瞬态仿真看很多人第一次接触相位噪声仿真时第一反应是既然VCO输出是个波形那直接用Transient跑一段然后对时域波形做FFT不就能看到噪声频谱了吗这个思路理论上没错但实操起来根本不现实。1GHz的VCO如果你要看到1kHz偏移处的相位噪声意味着需要至少1ms的仿真时间这对应100万个振荡周期。以目前Spectre的瞬态仿真能力跑完这个量级的仿真要几十个小时甚至几天而且数值积分误差积累到后期波形精度已经没法看了。这就是PSSPeriodic Steady State分析方法存在的意义。PSS用数学方法直接求解周期稳态解不是把时间一步步往前推而是通过Newton迭代和有限差分法找到电路的周期解。你可以理解为瞬态仿真是沿着时间轴一步步走走错了就偏了PSS是在空间中直接找到那个稳定的环不管离起点多近都能收敛过去。这样一来对于振荡器这种有明确周期特性的电路PSS能在相对短的时间内得到高精度的稳态解。1.2 Pnoise相对于常规AC仿真的意义PSS算完稳态工作点之后Pnoise才能在这个工作点基础上进行小信号噪声分析。之所以不能用普通的AC分析是因为AC分析要求电路工作在一个固定的直流工作点上而振荡器在工作时各个管子的偏置点随着振荡波形在不断周期性变化。MOS管的噪声系数、跨导这些参数在每个周期内都在改变只有基于PSS周期性稳态点的周期性噪声分析才能准确反映噪声如何被周期性地调制、折叠到载波附近。这里有一个比较绕的点需要弄清楚Pnoise本质上是在频域做的但它是在PSS解出来的周期时域工作点上做的线性时变LTV分析。正是因为这个原因它能捕捉到混频效应、噪声折叠、频率转变这些普通AC分析完全看不到的现象。VCO相位噪声的核心机制就是器件的低频噪声上变频到载波附近的相位波动没有LTV分析能力这些都是不可能仿准的。2. 仿真前的电路准备和关键检查2.1 VCO电路拓扑选择对仿真收敛性的影响我自己常用的是LC-tank VCO和环形VCO两种结构。在1GHz这个频点如果你是做片上集成LC-tank是主流选择如果是做简单验证或者数字PLL里的低性能场景环形振荡器也能用。但要注意电路拓扑不同PSS仿真时收敛难度差距极其大。LC-tank VCO因为有明确的谐振频率仿真器比较容易找到稳态解环形VCO因为工作频率有时会偏离预期值反而更容易出现不收敛的问题。不管是哪种拓扑有一个共通的注意事项确保电路有明确的起振机制且起振时间不要太长。如果VCO的负阻设计得太贴近临界值起振可能需要几十甚至上百微秒这会让PSS里tstab的设置变得很尴尬。我通常建议设计VCO时让振荡器有足够的设计余量负阻比至少做到1.5倍以上这样不仅在PVT下起振可靠仿真时也更快收敛。2.2 检查供电和负载配置是否合理仿真不收敛的很多情况其实不是PSS算法的问题而是电路本身配置不合理。最常见的是电源和地没有加足够的idealPath或者输出负载没有接。1GHz的VCO在版图上可能带各种寄生但在前仿阶段一定要确保输出端有明确的负载电容或者缓冲电路。如果不接负载VCO输出节点阻抗过高PSS计算时节点电压摆动过大Newton迭代很容易发散。另外电源电压在PSS分析中一定要设置成DC值不能用脉冲或者斜坡。之前有个同事把电源设置成了带斜升的PWL源结果PSS怎么跑都不收敛折腾了一天最后发现是这个问题。这个细节虽然听起来很低级但真踩过这个坑的人不在少数我把它写在这里就有理由大家都是从这些细节坑里爬出来的少一个人踩坑就多一个人把时间花在真正的设计上。2.3 Cadence ADE环境变量与仿真器选择使用Cadence ADE做仿真前建议先确认用的是ADE L还是ADE XL。对于单点仿真ADE L就够用了如果要做PVT扫描或者多个corner的批量仿真用ADE XL效率更高。我个人建议起步阶段先固定在ADE L中跑通单点确认参数没问题后再迁移到ADE XL做批量验证。还有一个容易被忽略的事在仿真设置中要选择正确的spectre版本和模型文件。不同工艺库对spectre版本有着严格的要求如果你用的是老版本的spectre去跑新工艺的模型可能会直接报模型不兼容的错或者更糟糕的是模型参数读错导致仿真结果完全错误。我之前在tsmc 65nm工艺上就吃过这个亏后来习惯了每次新建cellview之前先检查model library setup确认无误后才开始后续工作。3. PSS仿真设置一步步带你走通3.1 设置tstab和beat频率的思路PSS设置界面里最核心的两个参数是tstab瞬态稳定时间和beat频率。tstab的作用是让电路先跑一段瞬态等到振荡稳定之后才开始计算周期稳态。这个值如果设得太短电路还没起振稳定PSS计算出来的结果不准确设得太长则浪费仿真时间。对于1GHz LC-VCO起振时间通常在20-50ns之间我一般取100-200ns作为tstab留足余量又不至于太慢。如果电路起振特别慢可以先跑一个短瞬态看看波形确定合理的起振时间再据此设置tstab。beat频率的设置有几种思路一是直接设为预估的振荡频率。在1GHz VCO里你可以根据LC谐振频率粗略估算1/(2π√(LC))加上容性负载等修正后微调。二是在ADE中勾选accurate选项让仿真器自动寻找稳态振荡频率这在不确定精确振荡频率的场合非常实用。两种方式我都用过如果你对电路振荡频率十拿九稳手动设置beat频率收敛更快如果不太确定用accurate让仿真器自己找反而省心。3.2 谐波数和精度设置的内在逻辑PSS里的Number of Harmonics参数决定了仿真器计算多少个傅里叶谐波项。这个值不是越大越好虽然更大的谐波数能提高对波形非正弦性的刻画精度但计算量会大幅上升而且过多的谐波项可能导致Newton-Jacobi迭代矩阵病态。对于1GHz VCO我一般设置在7到15之间。如果VCO输出波形接近正弦LC振荡器通常如此7到10个谐波足够精确如果波形畸变较大环形振荡器末尾级输出往往接近方波可以提高到15。另一个精度参数是Accuracy Defaults通常选moderate或conservative。起步调试阶段建议用moderate速度快用于验证设置是否正确最终跑数据用conservative精度更可靠。这里有一个经验值如果PSS跑完没有报warning还能稳定收敛那精度基本够用如果跑出很多warning或者花了特别长时间才收敛适当降低精度要求或者调整tstab。3.3 我用到的具体PSS参数配置以我之前做过的一个1GHz LC-VCO为例PSS的具体参数配置如下tstab设为150nbeat频率设为1GNumber of Harmonics取9Accuracy Defaults选conservative。信号源部分不需要额外设置射频驱动因为VCO是自激振荡电路输出完全靠电路内部产生。PSS会跑出一段时间瞬态用于起振然后进入周期稳态计算整个过程在我的工作站上大约需要30到60秒。PSS的Output Harmonic选项要设置为1这表示我们要提取基波频率处的稳态数据。如果VCO输出的是二分频信号或者我们关心的是某个分谐波处的性能才需要改成对应的谐波次数。对于基波工作的1GHz VCO输出谐波选1就是正确的。跑完PSS可以在Direct Plot里看到稳态波形确认振荡频率和幅度是否符合预期这一步也能帮我们提前发现电路工作是否正常。4. Pnoise参数设置的核心要点4.1 Noise Type选alias还是phase noisePnoise分析类型通常有几种选择最常见的分歧点是选phase noise还是jitter。这两者概念不同phase noise是频域的相位噪声谱密度单位是dBc/Hzjitter是时域的抖动单位是秒。对于VCO设计第一关注点肯定是phase noise所以Analysis Type选择phase noise即可。如果你设计的是高速数字接口里的时钟源或者PLL里的VCO可能还需要额外跑一个jitter分析很多工艺库的Pnoise也支持直接从phase noise结果中导出jitter数据。真正让人纠结的是Pnoise Output中的noise type选项常见的有voltage、current和phase三种。在VCO相位噪声仿真中Output类型要选择phase参考源设为none。因为我们要看的不是某个电压节点的输出噪声而是由电路内部噪声引起的相位偏差。如果误选了voltage得到的曲线是输出端总电压噪声谱单位也不是dBc/Hz这不是通常需要的相位噪声指标。4.2 Sweep范围和MaxSideband的取舍Pnoise的扫描频率范围根据应用需求来定。对于1GHz VCO我推荐的扫频范围是100Hz到10MHz或者更宽到100MHz这覆盖了PLL环路带宽附近的offset频率到远端噪声基底。如果你关心的是PLL带内相位噪声重点看1kHz到100kHz这段如果关心的是带外噪声看100kHz到10MHz。这个扫描范围不影响PSS只影响Pnoise的计算时间通常设为logarithmic扫描间隔为10 points per decade即可。MaxSideband参数控制的是噪声混叠分析中考虑的边带数量。这个参数直接跟计算精度和时间的tradeoff相关。设置太小噪声混叠信息丢失相位噪声结果偏低看似更好其实是假象设置太大计算时间暴增。我实际测试下来的平衡点是7到15之间。做过一个实验把MaxSideband从3改到13仿出的相位噪声曲线在100kHz offset处差了将近2dB这就足以说明这个参数不容小觑。最终我一般设为11在精度和速度之间比较均衡。4.3 输入和输出的设置方法Pnoise设置界面中Input Source要设为“none”Output选择要分析相位噪声的节点对于VCO来说就是振荡输出端。用direct plot的方式的话选中vout节点然后选择相位噪声输出Cadence会自动设置好相应的参数这个方法最简单也最少出错。有一个特别重要的地方Pnoise要分析的信号频率不是载波频率本身而是相对于载波的偏移频率。所以在Pnoise中选择Relative Harmonic然后设为1意思是相对于1次谐波即基波的偏移频率。如果你忘了设这一步跑出来的横轴频率是绝对频率而不是offset频率曲线形状会完全不对。这是新手最容易犯的错误我当年在这个点上栽过跟头。5. 完整仿真流程实操演示5.1 从原理图到PSS仿真的完整操作链路完整的仿真流程是这样的首先在Cadence原理图编辑器中确认VCO电路连接无误检查电源、地、输出节点都有明确标号。然后打开ADE L选择Simulator为spectre在Model Library Setup里添加工艺库的模型文件。接着在Analyses目录下选择pss分析填入前面说的参数tstab150nbeat frequency1G谐波数9精度选conservative。设置好后点击Run按钮仿真开始。仿真结束后在ADE L的Direct Plot表单中选择PSS点击“Main Form”然后选择Voltage再选择要看的输出节点Vout。界面上会弹出稳态波形。确认振荡频率在1GHz附近幅度正常例如峰峰值1.8V。如果这些都对PSS算是跑通了。如果波形频率偏了检查电路参数或者tstab是否足够再回来调整。5.2 PSS收敛时的确认标准和错误处理PSS跑完后怎么判断结果是否可信我一般看三个信号一是仿真日志中是否有“PSS calculation converged”或者类似的信息二是看稳态波形是否呈周期性且幅度稳定三是检查输出频率和手算谐振频率是否一致。三者都通过才算真正跑通了PSS。日志中如果出现“Newton iterations fail to converge”或者“PSS failed to converge”之类的报错信息常见原因有tstab不够长导致电路还没稳定beat频率跟实际振荡频率差太远电路本身存在双稳态或多稳态行为。处理思路也对应拉长tstab用accurate模式让仿真器自己找频率或者调整一下初始条件。我遇到一种比较棘手的情况是电路存在高频寄生振荡PSS收敛在一个错误的频率上这时候单纯调参数已经没用要回到电路原理图查寄生路径和耦合问题。5.3 Pnoise仿真运行的如何规范操作PSS确认收敛后再在ADE L 中新增一个pnoise分析。Pnoise参数设置中Analysis Type选phase noiseSweep Type选logarithmicStart频率100HzStop频率10MHzPoints per decade设为10。Pnoise里的Noise Type选择为phaseOutput设为VoutReference Source设为noneMaxSideband设为11。完成设置后点击Run运行Pnoise仿真。Pnoise仿真时间通常比PSS更短因为它是在已经收敛的PSS基础上做的线性分析。整个仿真完成后在Direct Plot中选择Pnoise选择Phase Noise然后选择对应的PSS beat频率和分析Cadence会画出相位噪声曲线。曲线横轴是offset频率纵轴是dBc/Hz。一个理想的1GHz LC-VCO在1MHz offset处的相位噪声大约在-120到-130dBc/Hz量级如果你的仿真结果和这个大致相当说明设置和电路都基本没问题。6. 我踩过的坑和总结的检查清单6.1 五个典型报错场景和对应的解决方法第一个典型问题是PSS不收敛就是前面反复提到的。第二个典型问题是Pnoise结果出现负值或者曲线形状像锯齿这种情况大部分是扫描点数不够或者MaxSideband设得太小。第三个问题是相位噪声曲线低频端100Hz附近异常上翘甚至达到0dBc/Hz以上这往往是因为时域仿真窗口内的闪烁噪声模型导致的可以在Pnoise设置中检查是否包含了flicker noise。如果不需要闪烁噪声可暂时关掉它做对比看看曲线变化是否正常。第四个问题是跑了半天仿真但结果是空白的查看一下是不是波形或者曲线显示窗口被隐藏了在ADE L中选择Results→Direct Plot确保已经正确选中PSS和Pnoise分析。第五个问题更隐蔽就是你明明设置的是dBc/Hz但出来的数值居然是正的这种情况通常是输出节点的幅度不正常或者PSS频率设错了导致计算出来的载波功率很低分母小结果就大了。6.2 PSS/Pnoise仿真参数速查参考表这里整理了一个我平时贴在工作站屏幕旁的速查表用的参数都是我在1GHz这档VCO上实测下来的通用值参数名称推荐设置说明tstab100n-200n根据起振时间调整beat frequency预估振荡频率自动模式更省心harmonics number7-15波形越方取值越大accuracyconservative最终数据取保守模式pnoise sweep范围100Hz-10MHz覆盖带内带外points per decade10精度够用maxsideband7-15影响噪声混叠精度relative harmonic1基波处分析output typephase相位噪声模式reference sourcenoneVCO自激振荡6.3 逆向检查仿真结果到底靠不靠谱仿出相位噪声曲线后不要直接拿去写报告或者投稿先做个逆向检查看看数据是否符合物理直觉。比如相位噪声在低频端按1/f³规律上升闪烁噪声上变频引起的在中频段按1/f²规律上升热噪声引起的在远端趋于平坦噪声基底。如果曲线走向不符合这些规律要排查是不是PSS没收敛好、Pnoise参数选错或者噪声模型有问题。另一个实用的交叉验证方法是用瞬态仿真直接跑一段然后用波形计算器算一下相邻周期的抖动换算成相位噪声。虽然这种做法精度不如PSS/Pnoise但作为数量级验证足够了。如果两种方法差出5dB以上说明至少有一个环节出了问题值得回头细查。最后再分享一个小技巧跑批量PVT仿真时不要每个corner都用最高精度。先跑一个典型corner快速验证整个设置链路是通的、曲线合理然后再用conservative精度去跑全corners。这样可以避免因为参数设置错误导致所有corner仿真白跑一整天。这个习惯帮我少熬了不少夜建议你也试试。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →