
1. 这次实战要解决什么问题1.1 原理图仿真看着没问题一到版图就翻车做射频和微波设计的工程师应该都有过这种体验原理图仿真跑得漂漂亮亮S参数曲线平滑得让人心花怒放结果Layout画完、加工回来一测回波损耗偏移了插损多了零点几个dB严重的时候功放直接自激。问题出在哪说白了原理图里用理想节点连接的电路到了真实PCB上走线的寄生电感、相邻走线的耦合效应、地平面的不连续全都会变成“看不见的元件”在几百MHz甚至GHz频段尤其致命。ADSAdvanced Design System解决这个问题的思路非常直接把Layout里的真实版图拿去跑电磁仿真EM Simulation把每条走线、每个拐角、每段间隙的电磁行为都算出来再把算出来的结果重新带回电路原理图里做联合仿真。这样一来仿真链路的末端就不再是“理想的端口”而是“真实的物理版图”。这也是为什么很多团队把ADS Layout和协同仿真当成从设计到流片、从图纸到PCB的必经关卡。1.2 我这次做的是什么类型的工程为了把“参数设置到协同仿真”这条链路讲透我以一个典型的射频前端匹配网络作为载体工程输入端的微带线匹配、一颗串联电容和一颗并联电感外加一小段差分走线。这个结构看起来简单但它同时包含了单端微带线、集总元件焊盘、差分信号三种最常见的Layout场景足够说明ADS里EM建模和协同仿真的绝大多数操作要点。整个方案我选择了Momentum作为电磁求解器协同仿真走的是emModel与emCosim联合仿真模式。可能有人会问为什么不直接用Momentum RF或者FEM这里我细说一下选型逻辑Momentum是平面结构求解器处理PCB和片上无源结构效率高、网格量适中适合微带线、带状线和层叠结构FEM有限元适合三维结构比如过孔阵列、腔体、封装但网格量和求解时间会明显增加。对于普通的微带匹配网络Momentum完全够用而且和emModel emCosim的联合仿真流程配合得最顺。如果你是第一次跑这个流程建议选择的载体工程尽量简单先用一段损耗匹配网络练手不要一上来就仿真完整的Doherty功放否则很难分清错误是来自版图建模还是来自协同仿真配置。2. Layout设计前的参数准备做错一步后面全乱2.1 层叠结构与材料参数不能沿用默认值不少新手打开ADS Layout新建一个衬底就直接画图等到EM仿真时才发现微带线的特性阻抗完全不对。问题十有八九出在Momentum衬底Substrate的设置上。在ADS里Layout的电磁仿真并不直接读取你在原理图中设置的微带线模型参数而是需要单独定义一层一层的物理信息。以我常用的FR4两层板为例实际设置是这样一套顶层金属铜厚度0.035mm电导率5.8e7 S/m介质层FR4介电常数4.31GHz附近实际值损耗角正切0.02厚度1.6mm底层金属铜厚度0.035mm作为参考地平面表面粗糙度如果工作频率到了5GHz以上铜箔表面粗糙度会对插入损耗有明显影响建议至少按0.5um RMS估算设置入口在Layout窗口的EM菜单下选择Substrate或者直接在Momentum控件里编辑。注意一件事介电常数不是越高越好也不是照抄供应商标称值就完事供应商给的通常是1MHz下的数值在GHz频段FR4的介电常数通常会掉到4.2左右损耗角正切也会随频率变化。如果你在做宽带设计建议导入供应商提供的频率相关曲线。这里补一个我自己踩过的坑有一段时间做2.4GHz的匹配仿真和实测差了差不多0.5dB的插损查了很久发现是介质损耗设成了0.008而实际板材的损耗角正切是0.02加上表面粗糙度高频损耗被严重低估。2.2 单位、格点与显示精度画图之前必须要调Layout画图最烦的是什么画完以后发现线宽是19.999mil而不是20mil或者两根走线的间距本该是0.2mm却变成了0.1995mm到了加工厂直接被当作设计违规打回来。ADS里这套单位系统其实很强大只是默认设置不一定适合所有人。我建议在开始画图前按这个顺序调整打开Layout窗口的Options - Layout Units把显示单位切到你习惯的制式公制选mm英制选mil精度至少保留小数点后三位。这个设置只影响显示不会影响底层数据库精度。打开Ellipse/Path等绘图工具的参数框设置格点捕捉Snap Grid为你设计规则里的最小步长。比如50欧姆微带线宽是1.88mm间距规则是0.2mm格点就设成0.01mm这样所有操作都会落在规则网格上后期DRC检查能省大量时间。打开Display - Layers把每一层对应的颜色和填充模式改清楚。ADS默认的配色不能说不好但颜色太接近的时候画多层板容易看串行。我习惯把顶层金属设成红色、底层金属设成蓝色、丝印设成灰色、禁止布线区设成黄色。这些看起来都是细枝末节实际上直接决定了你画版图的速度和准确性。我见过有工程师用默认的mil单位配0.001精度画公制的板子结果导出Gerber以后单位对不上整个项目重新来。2.3 工艺库安装后的Layer Mapping核对很重要如果你的设计是片上电路比如CMOS工艺或者GaAs工艺那Layout的Layer信息就不是自己随便定义了。以tsmc18rf工艺库为例在ADS里调用PDK生成的Layout会自动关联到对应的Momentum衬底前提是你在安装工艺库时把Layer Mapping文件配置正确。这方面我需要多说一句。很多人在网上找工艺库安装教程下载安装包、复制到相应目录、在Schematic里调用模型然后原理图仿真一切正常。等到画完Layout想跑EM时发现Momentum根本不认这个版图或者衬底信息完全缺失。原因通常是工艺库的Layout相关文件夹比如kit的layout/文件夹和layers映射文件没有被正确加载。正常的流程是在ADS里打开DesignKit菜单选择Install DesignKit或者通过厂商提供的安装脚本完成安装安装完成后打开一个测试工程确认Schematic和Layout的单元库都能正常调用。接下来重点检查Layer Setup里有没有正确生成工艺层的映射。如果没有需要手动加载PDK自带的layers.map文件不然就算画出版图Momentum也分不清哪层是M1、哪层是VIA1自然没法正确设置衬底。这个环节的教训是不要跳步。PDK装完以后哪怕只是做个点亮LED的测试也建议先把版图库打开看一眼Layer信息是否完整。否则等你花两天画完版图到EM阶段发现整层金属材料都是错的那个崩溃程度只有经历过的人才懂。3. 版图核心细节与EM模型建立3.1 画版图的几个关键规则EM仿真才会准Layout画法直接影响EM仿真精度。有些人在原理图里用微带线模型仿真得很好但把这些物理尺寸平移进Layout直接按“感觉”画线忘了版图和原理图模型之间的一致性。这里有几个关键点第一走线端口的参考点要在合适的位置。Momentum仿真时会在端口位置建立参考地如果端口放在走线中间而不是边缘或者把端口放在一个夹角很小的位置容易产生非物理的寄生效应导致仿真结果出现莫名其妙的尖峰。第二T型接头和拐角要处理干净。原理图中的微带线T型结在版图里如果直接用三条Path相交Momentum会在相交区域生成一个不规则的网格造成电流密度集中。更稳妥的方法是用走线合并功能在编辑菜单中选择Merge或者直接在版图里用多边形绘制接头区域保证电流路径平滑。第三集总元件电阻电容电感在Layout里怎么处理。协同仿真的常规做法是把元件焊盘画在版图里EM模型只仿真布线结构元件本体用Schematic里的模型来加。这样一来元件的寄生参数由模型描述而焊盘、走线的寄生则由EM描述两部分合在一起才是完整的电路行为。千万不要试图把元件实体也画进版图做EM那会让模型复杂度暴涨而且元件模型精度反而比不上Schematic模型。这里还涉及一个细节如果版图里有较长的一段差分线两条走线之间必须有明确的耦合关系不要画成两条互不相干的单端线。差分线在程序里要成组定义同时端口类型要选择差模/共模这样Momentum才能正确提取混合模式S参数也就是你后面做差分信号仿真时看到的Sdd11、Scc21这一组数据。3.2 EM仿真参数设置基板、网格与频率的选择参数设置是ADS Layout设计里最容易产生“仿真结果变异”的环节。我通常把EM仿真参数拆成两块来讲一块是衬底已经确定情况下的电磁设置另一块是网格和收敛控制。在Momentum的EM设置界面里你可以在原理图里放置EMModel元件也可以直接在Layout里设置需要重点确认三个参数Mesh Frequency网格频率这个值决定网格加密程度。经验做法是取仿真频率上限的2倍左右或者取重点关注频段的中心频率。网格频率越高网格越细精度越高但求解时间会急剧上升。对微带线来说取最高工作频率的1.5到2倍已经足够。Edge Mesh是否在导体边缘加密网格。建议开启。微带线的电流集中在边缘不加密的话特性阻抗会有几个百分点的偏差反射系数都会跟着偏。Arc Approximation走线拐角用多少段弧线逼近。这个值太小圆形焊盘和圆弧走线会被折成多边形高频模型会有残留电抗。端口参数里需要特别注意Port Type的选择。对于微带线和共面波导通常选Single端口并指定参考地平面。对于差分走线需要选择Slot或者Direct类型确保参考地正确。还有一点如果走线很长端口之间的电长度很大Momentum会有提示这种时候需要在原理图级做合理切分或者使用端口重分组功能来避免不收敛。频率范围和扫频点数我一般设置成两个阶段先用频点较少的快速扫频比如50个点验证大方向确认没有异常谐振以后再加密频点做最终仿真。如果你使用的是插值扫频Adaptive Sweep注意插值容差对带通结构可能会漏掉窄带谐振这时候老老实实用离散频点更稳妥。3.3 生成emModel的完整流程从Layout到Schematic组件这是整个协同仿真链路的“桥梁”环节。emModel的本质是把Layout的EM仿真打包成一个可以在原理图中使用的黑盒组件外部只暴露你定义的端口。生成过程不复杂但流程顺序错了会非常折腾。以我常用的流程为例在Layout窗口完成版图绘制检查DRC如果有规则文件确认没有短路和间距违规。在Layout里定义端口Port。使用Insert Port工具在每个需要连接的物理位置放置端口。放置端口时特别注意它和参考地的相对位置端口箭头的方向代表激励的方向。在Layout窗口的EM菜单下选择Generate Model软件会弹出EM Model Generator对话框。这里要选好仿真器类型Momentum RF / Momentum Microwave / FEM和要生成的模型类型emModel或者emCosim。生成的模型会自动关联到当前原理图设计中通常会以一个带特定图标的元件形式出现在元件库列表里你可以像放普通S参数文件一样把它拖入原理图。在原理图中打开emModel元件设置物理参数比如实际加工时要变动走线长度的变量同时确认端口映射和Layout里定义的端口号一致。生成emModel之后我建议立刻做一次单点验证仿真只在原理图里放这个emModel不接任何有源器件跑一次S参数看结果是否符合预期回损趋势。如果这一步就对不上说明要么Layout画错了要么端口定义有问题再往后做协同仿真只会越绕越远。4. 协同仿真emModel与emCosim联合仿真深度解析4.1 为什么单独跑EM不够还得拉回电路里协同有人会问EM仿真不是已经能给出S参数了吗直接拿S参数文件去系统仿真不就行了理论上是这样但实际设计里没这么简单。第一EM模型本身是无源结构的频域响应没法描述非线性器件的行为。你给一个射频功放做匹配功放管的非线性模型、偏置网络的工作点变化、温度漂移这些都必须依靠电路仿真器配合器件模型来实现。如果把EM模型当成一个固定S参数文件塞进去虽然也能做谐波平衡仿真但电气连接的可视化和参数扫描能力都会受限尤其当你需要做负载牵引或者配合封装模型联合分析时emModel的可配置性就体现出来了。第二emModel与emCosim的核心价值在于“动态绑定”。emModel生成的元件在原理图里可以联动Layout中的物理变量你在原理图里改一个线宽参数EM模型会自动在后台重新求解或者更新物理尺寸映射。而如果直接导出一个S2P文件改一次尺寸就得重新导一次文件流程割裂不说还特别容易版本混乱。第三协同仿真模式下你能把Schematic里的理想微带线、集总元件、有源器件和EM模型全部放在一个仿真环境里跑。这对排查问题有很大帮助。我举个真实例子有一次匹配网络的EM模型单独看是好的接上晶体管模型以后增益曲线在高频出现一个凹陷。单独看EM数据发现不了问题但在协同仿真环境里我能直接看到晶体管的输出阻抗和EM端口阻抗在某个频率处发生了失配瞬间定位到是并联电感焊盘的寄生电容偏大改了一版焊盘就解决了。4.2 emCosim联合仿真模式的实际操作配置在ADS里emCosim有两种常见的配置方式。一种是基于Schematic的联合仿真就是前面生成的emModel元件直接作为电路的一部分和其他模型一起跑S参数、谐波平衡、瞬态或包络仿真。另一种是使用单独的Co-simulation窗口将版图EM数据和电路原理图绑定在一起。以谐波平衡仿真实战为例我在原理图里搭建这样的链路端口 - 匹配网络由emModel实现 - 晶体管模型 - 输出匹配另一个emModel - 负载。Harmonic Balance仿真器的设置重点有两个把仿真频率设置成基波频率和需要关注的谐波次数或者用谐波平衡的频带扫描模式。对于非线性器件必须给定合适的源功率和负载阻抗否则仿真器找不到收敛解。在运行之前还有一件容易被忽略的事确认emModel元件的参考地和原理图地是不是同一个。有的PDK里晶体管模型的地和版图的参考地表示方式不同直接连接会出现浮地错误轻则仿真警告重则结果完全错误。包络信号仿真是ADS的强项。做调幅包络仿真时emModel同样可以参与进来只需要把仿真器类型改成Envelope再设置载波频率和调制信号带宽。我测试过在调制带宽很宽的情况下EM模型的S参数频点如果不够密包络仿真结果会有明显的纹波。建议做宽带调制信号仿真前把EM频点加密到覆盖整个调制带宽的范围。4.3 差分线和混合模式S参数的协同仿真如果你在Layout里画了差分走线协同仿真的重点会有一点变化。Momentum对差分端口有两种处理方式一种是把两个单端端口各自建好然后在协同仿真时用混合模式转换公式算出差模/共模响应另一种是在Layout里直接定义差模端口对使用Port Type的Differential选项让EM仿真器直接提取混合模式S参数。我强烈建议用第二种方式。原因很简单直接在Layout里定义差分端口Momentum会针对差模和共模激励分别建立正确的激励模式提取的Sdd和Scc参数更准确也省去后来做数学变换的麻烦。协同仿真时差模S参数可以直接和Schematic里的差分放大器芯片模型对接。你需要关注三个指标插入损耗对应|Sdd21|回波损耗对应|Sdd11|模式转换对应|Scd21|。如果Scd21太差说明两条走线的对称性有瑕疵仿真结果能直接告诉你是拐角处不等长、还是参考地开槽导致的回流路径不一致。4.4 协同仿真跑完如何判断结果是不是可信协同仿真跑完不是终点。我每次拿到结果都会做三个确认缺一个都不敢发给下家第一和原理图前仿真对比。前仿真用的理想模型协同仿真用EM模型两者结果有差异是必然的关键看差异方向是否符合物理直觉。比如插入损耗变差、回波损耗频率点轻微漂移这就是正常的“版图寄生效应”。如果出现新增的谐振尖峰说明EM模型捕捉到了某个高Q寄生结构要认真检查。第二看电流密度分布图。ADS协同仿真可以查看电流密度结果这里能直观看出哪些走线区域电流拥挤、哪些焊盘形成了意外的耦合。我经常在仿真结果不理想时打开电流密度图寻找“热点”然后回Layout调整线宽或间距。第三做参数扫描验证稳定性。比如把工作频率或温度扫一遍看看协同仿真结果是否有跳变。如果某几个频点上结果突然异常大概率是EM模型在这些频点网格不够密或者出现了非物理谐振。5. 常见报错与排查技巧实录5.1 端口间距过大的报错很多人一上来就遇到热词里有一条很典型的报错信息“the distance between the layout pins for port 2 is electrically large above”。这几乎是所有新手第一次做Momentum仿真都会撞上的提示。简单解释一下Momentum对端口有“电尺寸”要求。当两个端口之间的距离在最高仿真频率下超过一定波长求解器会担心端口之间的电磁耦合路径不够精确于是发出警告甚至中止求解。这种问题在长走线结构的Layout里尤其常见比如分布式MIMO天线馈电网络、Doherty功放的合路走线因为电路尺寸动辄超过四分之一波长。解决方案有四种按优先级排列检查端口位置是否合理。有时候把端口放在走线两端但走线中间经过大面积绕行造成实际电长度过长。优化Layout布线减少不必要的绕行。提高Mesh频率。Mesh频率越高网格越密仿真器对电大尺寸的处理能力更强。把Mesh Frequency从默认值往上调很多情况下警告会消失。对超长结构做切分。把一条长走线从中间物理切分成多段每段单独建EM模型然后在原理图里用理想微带或短线连接。这种做法相当于用分段逼近整条线误差可控。换用FEM求解器。FEM对电大尺寸结构的处理更稳健如果Momentum持续报错换FEM往往是最后的办法代价是仿真时间变长。5.2 网格设置导致的仿真结果“孤儿”频点协同仿真中如果出现“某个频点突然出现尖峰而前后频点都很正常”的情况大概率是网格问题而不是电路问题。我在排查时一般先做一次网格无关性验证把Mesh Frequency翻倍重新跑同一个工程。如果尖峰位置移动了或者消失了说明之前的网格密度不足以描述该频点下的电磁场分布。还有一种可能是扫频方式的问题插值扫频在窄带谐振点附近容易跳过真实响应用离散频点重扫一下就能验证。如果用了自适应扫频仍然出现局部抖动我会把求解器的内部精度从默认的0.5%收紧到0.1%虽然时间会增加不少但换来结果的平滑和可信。5.3 工艺库对不上、层叠信息丢失的处理前面提到tsmc18rf工艺库安装后Layer Mapping不对这里补充一个具体的排查步骤在ADS主窗口打开Layer Setup不同版本入口略有差别检查是否存在名为“active”或“M1/CON”等层确认它们的用途是Conductor还是不用的层。如果发现层叠信息有误比如板上的走线层被当成布线辅助层Momentum就会完全忽略它仿真结果自然不对。修复方法通常是重新导入PDK自带的layers.map或layout技术文件。在ADS里可以使用File - Import - Layer Map来加载厂家提供的映射文件。加载完成后再回到Layout确认各层的显示和EM属性。如果工艺库比较旧和当前ADS版本不兼容还有可能需要降级或者使用兼容模式运行这类信息一般在工艺库安装说明里有写别只装一半就完事。5.4 仿真收敛困难是器件模型还是EM模型的问题协同仿真跑不动、频繁不收敛这类问题在实际项目里几乎是家常便饭。按照我的经验排查顺序应该是第一步先把EM模型剥离出来只对理想电路模型跑一次同样的仿真。如果理想模型也存在收敛问题那问题出在有源器件的工作点设置或谐波平衡仿真器参数上比如谐波次数太高、步进不够或者初始工作点没有给好。第二步尝试降低谐波次数或者放宽收敛条件先确认同步仿真的数值稳定性。ADS谐波平衡仿真器有一套收敛参数默认设置对大部分电路适用但遇到强非线性电路比如深层AB类或C类功放需要调节Solver的阶数、最大迭代次数。第三步如果理想模型没问题再挂回EM模型。这时如果出现不收敛多半是EM模型在某个频段产生了病态阻抗比如接近零或无穷大把电路仿真器逼到了数值边界。解决办法是检查EM模型的S参数结果找到异常频点回到Layout里修改。5.5 版本与安装类的实际问题热词里有“ADS下载和安装”“ADS卸载”“删除ADS注册表”这些搜索说明很多人卡在环境配置上。虽然这篇文章的重点不是安装但我还是想提一句版本管理ADS版本更新很快同一个工程在不同版本之间打开Layer映射、Momentum求解器设置可能会出现细微变化。如果团队里有人用2022有人用2024最好约定统一用某一个版本跑协同仿真否则两边仿真结果对比起来非常痛苦。另外装PDK之前一定要确认ADS版本兼容性。我见过有工程师在2023版本上装了2021版工艺库结果Schematic调用正常、Layout也能画但Momentum仿真时衬底信息一直加载失败排查了大半天才发现是版本兼容问题。卸载重装的时候注意把安装目录和用户目录的注册表信息清理干净Windows系统上ADS残留项比较多清了以后再装新版会省去很多莫名其妙的问题。6. 实操后的几个额外心得最后再分享几个实战过程中的小技巧都谈不上高深但挺实用一个是关于射频匹配的快速验证。协同仿真的最终目标不是“仿真结果好看”而是和实测对得上。我通常在板子回来以后用矢量网络分析仪测S参数然后回头把仿真里的EM模型微调一两个参数比如走线宽度、介质厚度让仿真和实测曲线对齐。这个过程能帮你建立一个很重要的经验库以后再做类似频段的设计准确率会高很多。另一个是关于x轴范围调整的基础操作很多人问“ADS修改x轴范围”怎么做。在数据显示窗口里双击坐标轴刻度弹出属性对话框把轴范围改成你的目标扫描范围即可。这条看着简单但如果你在查看宽带仿真结果时只关心2.4GHz附近的情况把X轴范围压到2.3到2.5GHz观察谐振点和匹配深度的效率会高得多。还有一个是运用村里元件库做优化的经验。热词里有“村田ADS优化”这指的是在ADS里调用Murata的元件库比如村田的GCM系列电容模型做匹配网络优化。协同仿真环境下你完全可以用Murata的真实模型替换理想电容在Optimization控制器里设置目标函数让ADS自动优化匹配元件的容值。这样出来的方案更贴近实际物料可以避免“仿真用理想电容很完美、生产中换个村田料就偏了”的尴尬。ADS从Layout参数设置到协同仿真这条路说到底是让“画的板子”和“设计的电路”在仿真层面先合体。这个过程有坑也有惊喜但只要把握好仿真器参数、端口定义和模型边界这三大核心点多数问题都能控制住。希望这篇实战记录能给你省下几个加班的夜晚。