1. 为什么用ADS做PA仿真:整体思路与前置准备
1.1 做PA仿真绕不开的ADS
做射频功率放大器的朋友,对ADS(Advanced Design System)这个软件应该都不陌生。它是是德科技(原Agilent/HP的EEsof分部)出品的射频微波设计平台,在业内用了很多年,从分立器件匹配到MMIC设计、从模块级联到系统级仿真,覆盖面很广。如果你要设计功率放大器,特别是要做Load Pull、谐波平衡、包络仿真、EM验证这些环节,ADS基本上是最顺手的工具之一,很多射频工程师从学校到工作都用它。
这篇笔记主要记录我用ADS做PA仿真的完整流程,重点放在设计思路和实际操作上。内容会涉及:如何做稳定性分析、怎么用负载牵引找最优阻抗、谐波平衡仿真怎么设置、匹配网络怎么调、最后怎么把版图导出来做EM联合仿真。适合正在入门射频功放设计、或者已经在做PA但想系统梳理ADS仿真流程的朋友参考。文章里的思路和参数都是以常见实践为基础的,具体型号和工艺不同,你需要根据自己的器件来调整。
我当初刚接触PA仿真时,最大的困惑是“每个按钮都知道在哪,但不知道该按什么顺序点”。ADS提供了很多模板,比如Load Pull模板、HB1Tone模板、PA DesignGuide,但模板用起来很死板,不搞清楚背后的原理,一碰到发散、不收敛、结果不对就完全懵了。所以这篇笔记不光是教你点哪里,更会解释每一步为什么要这么做。
1.2 仿真流程规划:从器件模型到EM联合仿真
完整的PA仿真流程可以分为几个阶段。先看整体规划,会让你对后面每一步做到什么程度、需要做什么心中有数。
第一,器件与工艺库准备。不管是用了代工厂的PDK,还是供应商提供的Spice模型、大信号模型(比如Cree/Wolfspeed的GaN模型、NXP的LDMOS模型),你要先在ADS里把模型库挂好。常见的挂载方式是在Design Kit或Library里Add Library。用PDK的话,TSMC、IBM、UMC这些常见工艺库里都有现成的晶体管模型和微带线、电阻电容等元件库。很多刚接触的朋友卡在这一步,主要是因为路径设置有误,切记库路径不要用中文文件夹,ADS对中文路径支持不好,经常出现"Library not found"报错。
第二,原理图搭建。这个阶段是用理想元件或者工艺库元件搭出PA的完整电路:晶体管、偏置网络、输入匹配、输出匹配、扼流电感、电源、隔直电容等。初始值不用太准,能起振、能通过稳定性分析就行。
第三,射频仿真验证。包括小信号S参数仿真(观察增益、S11、S22、稳定性系数)、大信号谐波平衡仿真(观察输出功率、增益压缩、PAE、IMD3),以及必要的源牵引/负载牵引仿真来确定最优源阻抗和负载阻抗。这是PA设计最核心的迭代环节。
第四,匹配网络实现。根据负载牵引得到的最优阻抗,用微带线、集总元件或者两者的组合实现输入/输出匹配。这个过程会大量用到Smith圆图工具和优化器。实际匹配网络做出来后,还要回到谐波平衡仿真里,确认加了真实匹配网络之后的性能没有明显恶化。
第五,版图设计与EM联合仿真。原理图验证通过后,生成版图,做EM仿真(Electromagnetic Simulation,电磁仿真),用emModel和emCosim把版图的寄生效应带进电路仿真里联合验证。这一步非常关键,高频PA在几GHz以上的匹配网络,走线之间的耦合、过孔、焊盘的寄生电容都会影响实际性能,不做EM仿直接打板,十有八九要返工。
整个流程是“原理图-仿真优化-版图-EM验证-再优化”的循环,不是一蹴而就的。下面我从设计思路和原理层面展开讲,再进到具体实操环节。
2. 核心原理与关键细节拆解
2.1 稳定性分析:K因子和稳定圆
PA设计里,稳定性是第一优先级。一个不稳定的功放,轻则自激,重则烧管子。ADS里常用 μ 因子和K因子来判断稳定性。公式虽然不复杂,但仿真时容易踩坑。
K因子的定义是:
K = (1 - |S11|² - |S22|² + |Δ|²) / (2 × |S21 × S12|)
其中 Δ = S11×S22 - S12×S21。
理论上,K > 1 且 |Δ| < 1 时,放大器是绝对稳定的;否则就是条件稳定,需要检查稳定圆(Stability Circle),确保匹配网络选择的阻抗不会落在潜在振荡区域。
ADS里有两个最常用的控件:StabFact(稳定因子)和StabCircle(稳定圆)。一般S参数仿真里加上这两个方程即可。我之前犯过的错误是只看K因子大于1就认为稳定,其实那是窄带情况的判断,宽带PA必须扫全频段,特别是低频段。很多PA在低频段(接近DC)反而是最容易自激的,因为增益高、反馈强。所以做稳定性判定时,频率扫描范围一定要从很低开始,比如100kHz,甚至1kHz,不能只扫工作频段。
如果发现K因子在某些频段小于1,常见补救方法有几种:在栅极(或基极)串一个低值电阻(比如5-50Ω)加上并联RC网络,压低低频增益;或者在漏极加反馈网络;或者用有损网络来平衡增益和稳定。但这些措施会带来噪声系数恶化和增益下降,需要权衡。稳定性网络最好加在输入侧,对输出功率和效率的影响相对小一些。
2.2 负载牵引:为什么PA不能直接用共轭匹配
小信号放大器追求最大增益,会用共轭匹配;但功率放大器追求的是特定条件下(给定频率、给定输入功率)的最大输出功率或最大效率,而功率管在接近饱和时的输出阻抗与小信号S22完全不同,共轭匹配根本不适用。这就是为什么要做负载牵引(Load Pull)和源牵引(Source Pull)。
负载牵引的原理,是在晶体管输出端扫描不同的负载阻抗,测得对应的输出功率、增益、效率,画出一圈一圈的等功率圆和等效率圆,找到最优负载阻抗。ADS的Load Pull模板是现成的,一个比较典型的控件配置如图所示(这里描述一下,不贴图):负载由V_Load端口连接一个等效阻抗扫描网络,通过参数扫描遍历Smith圆图上的点,然后显示结果。
实操中要注意几个点:
扫描点的分布要控制在合理范围内。ADS模板里用
LoadPull模板会画一个圆心和半径,在圆内生成扫描点。扫描点太多会拖慢仿真,太少则不够细,找不准峰值。一般先用稀疏网格(比如9×9或11×11)粗扫,锁定最优区域后,再在局部加密扫描。输入功率Pin的选择要根据你的设计目标来。如果做饱和功率,就按压缩到增益比线性增益低3dB左右的输入功率来牵引;如果做线性PA,那要在回退点牵引。
源牵引和负载牵引要交替做几轮。严格来说,负载牵引要看输入驻波,源牵引要看输出效率,二者相互影响。通常的做法是:先用50Ω源阻抗做负载牵引,找到最优负载;再固定该负载,做源牵引,找到最优源阻抗;再固定源阻抗,重新做负载牵引。这样迭代两三轮,基本上收敛。
2.3 谐波平衡仿真的设置逻辑
PA是强非线性器件,大信号工作时会产生大量谐波和交调分量,S参数仿真完全无法描述这种情况。ADS里做非线性仿真,核心是**谐波平衡(Harmonic Balance,HB)**算法。
谐波平衡的思路是:把电路分成线性子网络和非线性子网络,线性部分用频域分析,非线性部分用时域分析,然后通过谐波平衡把两边匹配起来,迭代求解。你不用完全掌握数学细节,但要理解几个关键设置:
Order(谐波阶数):默认5阶通常够用。做Doherty或E类PA时,谐波讲究较多,比如Class-E靠谐波 shaping,至少取7阶以上,否则波形不准。但阶数越高,仿真越慢,内存占用越大。
Freq和Pin设置:HB模板里通常让你填基波频率、功率扫描范围和步进。注意功率扫描范围要比实际需求更大一些,至少多扫4-6dB,这样可以看到压缩后的形态,方便找P1dB。
状态变量与初始值:非线性模型对初始值很敏感,特别是GaN器件。如果仿真发散了,有时候设置一个合理的电压初值(比如Vds=28V,Vgs=偏置电压)会让收敛容易很多。ADS里可以通过设置
NodeSet或OscTest来辅助收敛。HarmonicBalance控制器里的MaxIterations:默认是25,如果发散,可以调到50甚至100。但也不要无脑往上调,如果迭代到50次以上还不收敛,多半是电路本身就不对,先检查偏置点。
3. 实操过程:从原理图到EM联合仿真
3.1 搭建原理图:偏置、匹配、电源
从零搭建原理图时,建议按模块推进。我一般按这个顺序摆元件:晶体管在中间,输入匹配在左边,输出匹配在右边,偏置网络从上侧接入,用直流馈电(扼流电感或四分之一波长线)和旁路电容构成。
先摆器件模型。以GaN HEMT为例,ADS里可以直接从DesignKit里拖一个晶体管符号,也可以自己建一个基于厂商Spice模型的子电路。器件模型摆进去后,先设置静态工作点:漏极电压Vds、栅极电压Vgs(或对应的静态漏电流Idq)。
偏置电路设计有一些经验:
扼流电感(RFC)的电感值要足够大,让它在工作频段呈高阻。一般要求感抗大于负载阻抗的十倍以上。比如2.4GHz,负载阻抗20Ω,那感抗要200Ω以上,对应电感L = 200/(2π×2.4GHz) ≈ 13nH。实际常用几十nH到几百nH,但要注意自谐振频率要远高于工作频段。
旁路电容需要并联多个不同容值的电容,用来覆盖不同频段的退耦。比如100pF、10pF、1pF并联,分别对应低中高频的射频接地。大电容用钽电容或者陶瓷电容,小电容靠近管子放置。
也可以用四分之一波长微带线加扇形(Radial stub)来代替RFC,这样在高频段(比如X波段以上)效果更好。
3.2 功率扫描与性能指标提取
原理图搭好之后,放一个HB1Tone控制器,设置频率为2.4GHz,功率扫描从0dBm到30dBm,步进1dB,谐波阶数5。再放几个测量方程,比如:
Pout_dBm = dBm(Vout) # 输出功率 Gain_dB = Pout_dBm - Pin_dBm # 增益 PAE = (Pout_W - Pin_W) / Pdc_W * 100 # 功率附加效率ADS的Data Display里有一些现成的测量模板,比如Pout、Gain、PAE、P1dB,你直接拖进数据显示区就能用。但如果是自己做方程,要注意单位转换,ADI的功率单位默认是W(瓦),dBm要手动换算。
仿真结束后,在数据显示窗口画三条曲线:Pout vs Pin、Gain vs Pin、PAE vs Pin。这一步看几个关键指标:
- 小信号增益多少;
- P1dB压缩点在哪个功率位置;
- 最大PAE对应的输出功率点;
- 在目标输出功率处的增益和PAE,以及是否进入饱和区太深。
如果功率上不去,或者增益不够,别急着调匹配,先用Load Pull看负载阻抗方向对不对。因为很多时候输出功率低不是匹配的问题,而是晶体管负载阻抗远不在最优区域。
3.3 阻抗匹配与Goal优化
通过负载牵引拿到最优负载阻抗和最优源阻抗之后,下一步就是把它们转换成实际匹配网络。
ADS里常用的方法有这么几种:
- 用集总元件L/C搭L型、T型、π型匹配,特别适合1GHz以下;
- 用微带线(MLIN、MSTEP、MTEE)做分布式匹配,适合1GHz以上;
- 用共轭匹配+S参数控件快速验证,但这只是初值。
实操中我习惯先找一个离目标阻抗最近的拓扑。比如目标负载阻抗需要把20Ω匹配到50Ω,那我可能直接拖一个L型网络:串感+并容或者并容+串感。选择哪种结构,要看偏置馈电方式:如果直流要从漏极进入匹配网络,那么串联电感最好用微带线实现,方便同时当成馈电线。
ADS的Smith Chart Utility工具非常实用。你可以输入源阻抗和目标阻抗,它会自动给出L型或π型匹配的元件初值。这个初值再放到原理图里微调。但Smith Chart工具给出的元件值往往是理想值,比如1.37nH、3.2pF,这种不值在现实里未必买得到或者工艺能实现。所以还需要用Design变量+优化来把元件值落到可实现的范围内(比如标准容值序列E24,或者工艺规则下的最小线宽限制)。
优化是ADS的核心功能之一。在原理图里把元件的值设为变量,比如L1、C1,再加一个Goal控件和一个优化器。Goal设置时要注意:
- Goal里要指定目标表达式,比如
dB(S(2,1)),目标值设为你要的增益,权重设为1;如果同时要控制S11和S22,也要加上目标和权重。 - 优化器种类有Random、Gradient、Minimax等。我一般先用Random全局搜索,再用Gradient精调,这样不容易陷入局部最优。
- 优化前在变量属性里定义取值范围。比如
L1 = 5 nH,范围1 nH ~ 15 nH。范围给得太小可能跳不到最优解;给得太大,优化时间长、还可能跑到不合理值上去。
优化不是万能的。如果优化半天还是不达标,大概率是拓扑选得不对。比如L型匹配的Q值固定,带宽和匹配范围有限,需要换T型或π型。经验法则是:如果S11要小于-20dB且带宽要求超过20%,单个L型很难实现,考虑T型或者多节结构。
3.4 emModel与emCosim联合仿真
原理图验证完性能之后,就要考虑版图了。ADS里的联合仿真流程主要有两个概念:emModel和emCosim。
emModel是把某个平面电路结构(比如一个微带匹配网络)生成EM模型(用Momentum或FEM求解器仿真过的),然后作为一个子电路放回原理图里参与电路仿真。这样,原来原理图中的理想微带线就被真实的、带寄生效应的EM模型替代。
emCosim(Electromagnetic Co-Simulation)则是在版图(Layout)环境下,把整个版图或者部分版图做了EM仿真后,再和外围有源器件模型一起做协同仿真。它的价值在于:你不是对一个孤立的匹配网络做EM仿真,而是对完整的版图互连结构(包括转角、T型结、过孔、接地)做电磁提取,然后和晶体管模型放一起跑谐波平衡,得到更接近流片/制板结果的数据。
具体操作流程是这样的:
- 在原理图里选中你要做EM仿真的子网结构(通常是整个匹配网络、偏置网络或整个无源部分),右键选择"Generate/Update Layout"。
- 版图编辑器里把各层的叠层信息(substrate stackup)设置好,包括介质厚度、介电常数、铜箔厚度、损耗角正切。
- 选择Momentum(平面分层介质,适合微带/带状线)或者FEM(适合结构复杂的3D结构,比如过孔密集、不规则互连)。
- 设置端口(Pin/Port)。这一步很关键,端口的位置和类型(Internal Port还是External Port)会影响仿真结果。端口间距太近会导致端口间耦合误差,要稍微拉开一点。port的参考地也要明确。
- 跑EM仿真,完成后在原理图里插入emModel并替换原来的无源结构模块,再跑电路仿真对比结果。
做EM仿真的朋友经常问我:“为什么EM仿真后的S22和原理图差那么多?”原因是原理图里的理想微带线模型只考虑了传输线的阻抗和长度,而EM仿真把转角的不连续性、T型结的分支效应、金属损耗、衬底耦合全都算进去了。这些都是真实存在的寄生效应,尤其在5GHz以上,差别会非常明显。
如果在EM联合仿真后发现输出功率掉了不少,或者匹配点偏了,不要慌,这是非常正常的。这时候回到版图,观察微带线是否需要修剪,过孔是否需要调整位置,然后重新仿真。这个过程可能要循环好几次。
4. 常见问题与排查技巧实录
4.1 仿真发散的处理思路
ADS的HB仿真发散,是初学者最常遇到的头号问题。现象五花八门:仿真直接报错,结果显示成一堆NaN,或者跳出“Simulation failed to converge”。
应对发散问题,我一般按下面这个顺序排查:
第一,检查模型是否正常。有些PDK模型对电压范围特别敏感,比如GaN模型在栅压超过某个阈值后会报错,先确认静态工作点是否在模型允许范围内。
第二,增加HB控制器的迭代次数。默认MaxIterations=25,可以调到100。同时把Tolerance适当放宽,比如默认1e-6,可以暂时改成1e-4,先看能不能跑通。跑通了再把精度调回去。
第三,调整扫参模式。如果用功率扫描发散,尝试用Power sweep里的“Start from previous solution”或者选上“Reuse solution from previous point as initial guess”。ADS里这个功能叫NodeSet或Solver选项。连续扫参时,前一个收敛点作为后一个点的初值,发散概率会低很多。
第四,给节点指定初值。在原理图里添加NodeSet控件,给你认为关键的直流节点(比如Vds)设一个电压初值。这个初值偏离最终解太远也没关系,但能避免仿真从零状态开始盲目迭代。
值得一提的是,发散不一定是仿真设置的锅,很有可能是电路本身有问题。比如栅极电阻为0导致Q值过高、偏置馈电网络在某个频率形成负阻等,这种情况调再多次迭代也白搭。所以先“模拟-理论-模拟”循环检查电路,再动仿真参数。
4.2 稳定性误判与补救
很多同学在ADS里做PA仿真,一看StabFact全频段大于1就放心了。但实际打板之后还是自激。为什么?因为仿真时的稳定性判定可能没做全。
一个容易被忽略的问题是:稳定性分析必须考虑不同输入功率下的状态。小信号稳定不代表大信号稳定。在大信号激励下,器件的等效参数发生变化,某些偏置状态下可能激发负阻。这一点在Behavioral模型和器件模型之间差异很大。所以推荐在大信号HB仿真中也检查一下基波和次谐波处的阻抗特性,或者直接做小信号稳定性扫描(把大信号偏置点固化后跑S参数)。
如果发现不稳定频段,常见的补救手段:
- 栅极串联一个低阻值电阻(如5-20Ω),会牺牲一点增益,但压制低频自激效果立竿见影。
- 栅极到地接一个RC串联网络,R在几十Ω、C在几十到几百pF量级,专门吸收低频振荡。
- 用并联负反馈网络增加稳定裕度,适合宽带PA。
- 在输出端加隔离器,这个属于工程措施,不在芯片设计阶段常用。
4.3 指标不达标时的排查顺序
假如仿真跑完了,结果发现输出功率比指标差3dB,PAE也远低于预期,这时候怎么排查?
建议的顺序:
- 先看负载阻抗对没对。负载牵引扫过没有?最优负载阻抗是多少?现在的输出匹配网络反射到漏极端口的阻抗是多少?如果不在最优负载附近,那就先调匹配网络。用ListPNA或者Data Display里直接看Zin或GammaL。
- 再看输入匹配。源阻抗对输入驻波和增益影响很大。如果源匹配没有做好,可能输入功率反射严重,实际进入管子的功率远小于设置值。
- 然后看偏置点。静态电流(Idq)调得对不对?对于Class A需要大约最大电流的一半,对于Class AB大约10%-20%左右。如果偏置点不对,增益和线性度都会掉。
- 最后检查谐波谐波负载。特别是做宽频或者高效率PA,二次谐波和三次谐波终端阻抗非常重要。E类和F类PA对谐波阻抗有明确要求,需要单独传输线来控制谐波。如果忘了控制谐波,效率会明显偏低。
这里插一个关于器件选型的建议:仿真时如果各种措施都试了还是达不到指标,先回头看看晶体管本身的潜力。在数据手册里查一下该器件在目标频率下的最大输出功率、最大PAE,如果仿真结果已经逼近手册值,那就接受现实——要么换器件,要么降低指标预期。
4.4 环境配置与版本相关的坑
ADS的安装和库配置虽然不算难,但确实有几个坑值得单独提。
安装路径、工程路径、库路径都别用中文或空格,否则容易出莫名其妙的问题。我记得在某个版本的Linux版ADS里,工程文件夹放在带空格的路径下,直接在Momentum仿真时崩溃,换成纯英文路径才正常。
工艺库(PDK)挂载要注意版本兼容性。ADS的版本差异比较大,有些PDK只适配特定的大版本。如果挂载时报错,先看PDK的文档确认支持哪个版本的ADS。可以用DesignKits菜单里的Check功能来验证库是否加载成功。
还有一个常见问题是license相关的报错,比如“Unable to check out a license for feature...”。如果不是license没启动,可以考虑在ADS里设置好环境变量(Windows下是LM_LICENSE_FILE或AGILE_LICENSE_FILE),确保客户端能正确指向license服务器。
写在最后的实际操作体会
做PA仿真这些年,我最深的感受是:仿真工具再强大,也只是设计闭环中的一环,模型精度、设置合理性、对电路原理的理解,最终决定仿真结果能有多少可信度。ADS里的模板和向导给了很多便利,但能不用就不要盲目依赖——比如把Load Pull模板里的扫描范围直接套到别的频段,结果搜索圆没覆盖最优负载区,找出来的“最优阻抗”其实是个局部最优,这种坑我踩过不止一次。
再分享一个提高效率的小技巧:每次跑大点的仿真前,先在低精度设置下跑通流程,再逐步提升精度。比如HB先设3阶谐波、粗扫功率步进2-3dB,确认没有发散和明显的参数异常后,再改成5阶、步进0.5dB做精细扫描。这样调试阶段几秒出一轮结果,效率会明显高很多。Momentum EM仿真也一样,先用粗网格、低频率点快速验证趋势,最后才用细网格出精确结果,节省的时间非常可观。
最后提一句,如果项目对成本和时间敏感,建议在有条件的情况下把EM联合仿真的结果和流片/制板后的实测做一次全面对比。记录下仿真和实测之间每个指标的偏差量级,形成自己的“校正系数”。这个活儿一开始比较花时间,但积累两三次之后,你对ADS仿真结果的信心会大增,后续设计的迭代周期也能缩短不少。希望这篇笔记能帮你在PA仿真的路上少踩几个坑。