第三章 仿真工具介绍与设置:Cadence Spectre/ADS仿真环境搭建

做LNA的1dB压缩点仿真,工具选对只是第一步。怎么搭环境、怎么设参数,才是真正拉开工程师差距的地方。我见过太多人拿着最新的PDK,却因为仿真器设置不对,折腾一整天都跑不出一个靠谱的P1dB曲线。

这一章,咱们就聊聊Cadence Spectre和ADS这两大主流工具的环境搭建,以及PSS与PAC分析的核心要点。嗯,都是实战中反复踩坑后总结出来的东西。

3.1 Cadence Spectre仿真环境搭建

Spectre在RFIC领域算是老大哥了。我个人习惯用IC617或IC618搭配MMSIM15.1以上的版本。版本太老的话,PSS收敛性会差很多。

3.1.1 基础环境配置

先说说最基础的——PDK加载。很多新手上来就报错,十有八九是PDK路径没指对。

# 在.cdsinit或.bashrc中设置
setenv PDK_DIR /home/design/PDK/TSMC65nm
setenv MMSIM_HOME /opt/cadence/MMSIM151
setenv CDS_Netlisting_Mode Analog

# 启动命令
virtuoso &

这里有个坑:CDS_Netlisting_Mode一定要设成Analog。我曾经因为忘了设这个,结果Spectre把数字网表也带进来了,仿真速度慢得离谱。

3.1.2 ADE L/XL/GXL选择

做P1dB仿真,我建议直接用ADE XL。为什么?因为要扫输入功率,ADE L每次都要手动改参数,太累了。XL可以一次设好扫描范围,跑完还能直接看结果。

工具 适用场景 我的建议
ADE L 单点验证、快速调试 只适合看DC或小信号
ADE XL 参数扫描、P1dB仿真 主力工具,强烈推荐
ADE GXL 多目标优化、良率分析 进阶使用,新手慎入

3.1.3 Spectre仿真器参数设置

跑PSS之前,有几个关键参数必须调。默认值往往不够用。

核心参数清单:

  • tstab(稳定时间):设为载波周期的50-100倍。比如2.4GHz,tstab至少设到50ns。
  • maxperiods(最大周期数):默认4,我一般设到8-12,收敛性会好很多。
  • oversample(过采样率):默认1,建议设成4或8,谐波精度更高。
  • reltol(相对误差):默认1e-3,做P1dB时我习惯收紧到1e-4。

为什么tstab要设这么大?因为LNA的偏置电路有RC滤波,建立时间很长。如果稳定时间不够,PSS算出来的工作点就是错的,后面的PAC结果全废了。我吃过这个亏,那次整整浪费了两天。

3.2 ADS仿真环境搭建

ADS在射频系统级仿真上有天然优势。如果你做的是模块级LNA,Spectre更合适;但要是做系统级链路预算,ADS是首选。

3.2.1 原理图与仿真控制器

ADS里做P1dB仿真,核心是HB(谐波平衡)仿真器。不是SPICE,也不是AC。

// 在ADS原理图中放置以下控件
HB1: HARMONIC_BALANCE
    MaxOrder=5
    Freq[1]=2.4 GHz
    Order[1]=5
    SweepVar="Pin"
    Start=-30
    Stop=0
    Step=0.5

// 测量公式
Pout_dBm = dBm(HB.Vout[1])
Pin_dBm = dBm(Pin)
P1dB = p1dB(Pout_dBm, Pin_dBm)

这里要注意MaxOrder。做LNA时,非线性主要来自三次谐波,所以Order设到5就够用了。设太大反而会让仿真变慢,而且容易不收敛。

3.2.2 仿真器参数对比

参数 Spectre PSS ADS HB
核心算法 时域打靶法 频域谐波平衡
收敛性 强非线性时易发散 对强非线性更鲁棒
谐波数量 自动截断 手动设置Order
仿真速度 中等 谐波多时慢

说白了,Spectre的PSS适合弱非线性(LNA正好属于这一类),ADS的HB更适合PA那种强非线性场景。但如果你做的是LNA的P1dB仿真,两个工具都能用,看个人习惯。

3.3 PSS与PAC分析简介

这两个分析是1dB压缩点仿真的核心。很多教材讲得云里雾里,我试着用大白话解释一下。

3.3.1 PSS(周期性稳态分析)

PSS要解决的问题很简单:电路在周期性大信号驱动下,最终稳定下来的工作点是什么?

你想想看,LNA的输入信号是正弦波,幅度很大时,晶体管的工作点会随着信号摆动。传统的DC分析只能算静态偏置,算不了这种动态情况。PSS就是干这个的。

我的经验:PSS收敛失败时,别急着改算法。先检查tstab够不够,再看输入功率是不是设得太大了。有一次我直接把Pin设到+10dBm,PSS死活不收敛——后来才意识到,LNA在这么大输入下已经饱和了,PSS当然算不出来。

3.3.2 PAC(周期性AC分析)

PAC是在PSS算出的稳态工作点上,叠加一个小信号扰动,然后计算电路的线性响应。说白了,就是“大信号下的AC分析”。

为什么不能用普通AC?因为普通AC假设电路是时不变的。但LNA在大信号下,晶体管跨导是随时间变化的。PAC能捕捉到这种时变效应,算出来的增益才是真实的。

3.3.3 PSS+PAC联合仿真流程

做P1dB仿真时,标准流程是这样的:

  1. 设置PSS:指定频率、tstab、maxperiods
  2. 扫描输入功率:从-30dBm到0dBm,步长0.5dB
  3. 在每个功率点跑PSS:得到稳态工作点
  4. 在每个功率点跑PAC:得到小信号增益
  5. 绘制增益 vs 输入功率曲线:找到增益下降1dB的点

注意:PSS和PAC必须用同一个仿真器实例。很多人分开跑,结果PSS的工作点和PAC对不上,P1dB算出来完全是错的。

3.4 知识体系结构图

下面这张图把本章的核心逻辑串起来了。从工具选择到参数设置,再到PSS/PAC的配合关系,一目了然。

LNA 1dB压缩点仿真工具与分析方法 LNA 1dB压缩点仿真工具与分析方法 Cadence Spectre ADS Spectre环境搭建 ADE XL / PSS参数 / tstab / oversample ADS环境搭建 HB控制器 / MaxOrder / SweepVar PSS分析 PAC分析 PSS + PAC 联合仿真 → P1dB曲线 关键:PSS提供稳态工作点,PAC计算小信号增益 扫Pin → 找增益下降1dB点 → 得到P1dB

3.5 避坑指南与个人经验

最后分享几个实战中容易踩的坑:

  • tstab设得太短:PSS收敛了,但工作点不对。检查方法:看PSS输出的DC电压是否和预期一致。
  • oversample设成1:谐波精度不够,P1dB可能差2-3dB。我一般设4起步。
  • PAC频率点太少:只扫基频是不够的。至少要包含二次和三次谐波,才能准确反映非线性。
  • 忘记设Port阻抗:Spectre里Port默认50Ω,但ADS里要手动设。不设的话,增益和P1dB全不对。

一句话总结:PSS算稳态,PAC算增益,两者配合才能得到真实的P1dB。工具只是手段,理解背后的物理才是关键。