
简介面向射频、微波与高速数字电路设计者的技术文档围绕在 ADS 中构建电感与变压器模型展开兼顾单端、差分与巴伦结构并覆盖方形、正八边形、对称与非对称、抽头等多种绕线形态。压缩包内为 1 个 PDF 文件约 3.1MB图文对照、篇幅完整便于边看边在工程中复现。内容从螺旋电感的四个关键几何参数外径、线宽、间距与圈数切入串联基板电阻率、金属层选择、顶层金属厚度等工艺条件说明其对低频电感、电阻损耗、交叉寄生电容与衬底损耗的影响并给出电感值、品质因数、自谐振频率在单端与差分下的计算方式及 2-port 到差分 1-port 的转换处理。实现环节对比两条路径用 Coilsys 快速生成参数可调的 Pcell或用 AEL 宏编写脚本定制结构同时介绍 Momentum 电磁仿真的环境搭建与推荐设置并指出变压器结构相对固定、无法任意指定初、次级感值的局限。目前已有 9448 人学习。1. 从一颗电感的 Q 值说起为什么要在 ADS 里把电感和变压器做成参数化 Pcell射频前端的匹配网络里一颗片上电感的 Q 从 12 掉到 9整条链路的噪声系数和增益预算就得重算一遍。我见过最常见的低效做法是版图画一版、导出去提参、发现感值偏了百分之八回来改线宽再导一次一天就这么没了。所以这套方案的目标很明确——利用 ADS 建立电感以及变压器模型把外径 D、线宽 W、间距 S、圈数 N、金属层和过孔层全部做成可调参数用 Coilsys 或 AEL 脚本生成版图 Pcell再挂到 Momentum 上做电磁验证最后统一抽出单端、差分、巴伦三种接法下的 L、Q 和自谐振频率。这套流程适合正在做射频微波方向毕设或课程设计的人也适合要给团队交付一套可复用无源元件库的工程师。下面把需求、方案、实现和验收一层层拆开最终会落成一份可查的文档资料和一套可跑的脚本。2. 需求与工艺底稿先把 D/W/S/N 和金属叠层定死参数化这三个字听起来简单把四个数字做成滑动条就行了实际做起来第一个卡住人的地方不是脚本而是「哪些量是自由变量、哪些量被工艺锁死」。这一章先把设计变量、寄生元件和工艺叠层的对应关系理清楚后面写 Pcell、跑 Momentum 才不会返工。判断标准很朴素如果拿到一份新工艺你能在半小时内说清楚哪些参数要改、哪些代码不用动底稿就算立住了。2.1 五个设计变量与六个寄生元件螺旋电感在版图上只有四个几何自由度外径 D、金属线宽 W、相邻两圈的间距 S、圈数 N。这四个量不是独立的占用面积大致由 D 决定D 一锁W、S、N 就在有限空间里互相挤压——W 加粗能降串联电阻但同面积下圈数就得减感值上不去S 拉大能压住圈间耦合电容代价还是圈数。工艺侧还有四个不可调的量基板电阻率、金属选项、顶层金属厚度、用哪一层金属来做成螺旋。它们决定了模型的「天花板」改版图只能在下面折腾。设计参数符号主要影响调整代价外径D决定感值上限与占用面积受面积预算硬约束线宽W降低 Rs、提升 Q同时抬高 Cox挤压圈数与间距空间间距S降低圈间横向电容 Cs同面积内圈数减少圈数N感值近似按 N² 增长内径变小Q 在中高频恶化金属层—决定方阻与厚度由工艺选项锁定不可改模型的等效电路一般拆成六个元件低频电感 Ls、金属串联电阻与趋肤效应带来的 Rs、跨接层cross-under与螺旋主体交叠形成的电容 Cs圈间横向电容也算在内、螺旋对基板的电容 Cox、基板损耗 Rsi、基板电容 Csi。这六个量里Ls 和 Rs 决定你在低频段看到的阻抗Cs 决定自谐振点Cox 与 Rsi 决定 Q 在高频段的塌陷速度。很多人做课设时只关心 L 对不对结果 Q 曲线在 5 GHz 之后一路往下掉就是因为 Cox 和 Rsi 没在版图参数上留余地。我一般会先把 D 按面积预算固定住再扫 W 和 N最后微调 S。原因是 D 一旦变动Coilsys 的查找范围和 Pcell 的坐标原点全要跟着改返工成本最高W 和 N 是连续变量扫描代价低。这个顺序写进方案里后面别人接手也不会乱。2.2 工艺叠层、金属层与过孔层的约定ADS 的工程组织是四级Workspace 是项目主目录可以装多个 LibraryLibrary 绑定一套具体工艺层定义和单位在建立时就固定了Cell 是库里的一个设计单元View 是同一个单元的不同视图比如 schematic、layout、emModel。这个结构看着是常识但它直接决定了 Pcell 能不能复用——Pcell 里的层名是硬编码的字符串跨库搬到另一套工艺里层名对不上就会静默失败版图上什么都不画也不报错。一套典型的六层金属叠层在文档里通常这样写数值是示例实际按工艺文件替换层名作用厚度量级备注M6主螺旋数微米顶层厚金属方阻最低M5跨接与引出亚微米与 M6 通过 VIA5 连接VIA5M5–M6 通孔—孔径与阵列规则由工艺给定M1可选地屏蔽—图案化地可抑制涡流Substrate衬底数百微米电阻率决定 Rsi层名大小写敏感这一点在文档里必须单独写一行。写 Pcell 输入文件时把M6写成m6脚本不会提示你拼错了只会在生成时找不到层最后得到一个空版图。这并不是玄学纯粹是字符串匹配没有容错。工艺文件里drawing、pin、label这些用途名同样要一一对上。2.3 性能矩阵单端、差分、巴伦三套口径同一颗电感接法不同报出来的数字完全不同。单端口径以另一端开路为前提电感取 Z11 的虚部除以 2πfQ 取虚部比实部。差分开口径要把两端口合成一个端口Zdiff Z11 Z22 − Z12 − Z21也就是把两路的自阻抗加上、互阻抗减掉。巴伦结构本质上是带中心抽头的对称电感抽头位置会改变两臂之间的耦合单端和差分的值都不能直接套用通常的做法是抽头接地、两臂分别看再合成一次。import numpy as np import skrf as rf # 读入 Momentum 或电路仿真导出的两端口 Touchstone端口1、2 均为单端对地 nw rf.Network(spiral_2port.s2p) f nw.f z nw.z # 形状 (nfreq, 2, 2) 的阻抗矩阵 z11, z12 z[:, 0, 0], z[:, 0, 1] z21, z22 z[:, 1, 0], z[:, 1, 1] # 单端口径另一端开路 L_se z11.imag / (2 * np.pi * f) Q_se z11.imag / z11.real # 差分开口径两端口合成一端口 z_diff z11 z22 - z12 - z21 L_diff z_diff.imag / (2 * np.pi * f) Q_diff z_diff.imag / z_diff.real # 自谐振点L 由正过零的第一个频点Q 过零同样可以交叉验证 idx np.where(np.signbit(L_se[:-1]) ! np.signbit(L_se[1:]))[0] fsr f[idx[0]] if len(idx) else np.nan print(fFsr(se) {fsr / 1e9:.2f} GHz, L_diff2.4G f{np.interp(2.4e9, f, L_diff) * 1e9:.3f} nH)这段后处理的关键在两点一是所有量都从同一个 Z 矩阵派生避免单端和差分用两套不同来源的数据对不上二是 Fsr 用 L 过零判断再用 Q 过零做交叉验证两个结果差得远说明端口参考面或去嵌有问题而不是电感本身有问题。参数上唯一要改的是目标频点 2.4e9换频段时同步改这一处即可。把这段脚本固化成后处理模板每版版图跑完自动出 L、Q、Fsr 三张曲线比手工在图上读数可靠得多。3. 总体方案Coilsys 快路径与 AEL 慢路径怎么分工ADS 里做电感模型有两条路很多人一上来就纠结选哪条其实它们不是二选一而是分工。快路径解决「给定指标找几何」慢路径解决「给定几何做变体」。实际项目里九成的电感用快路径出剩下一成特殊结构才动脚本。这一章把两条路各自的入口、产物和边界说清楚顺带交代变压器模块为什么必须提前划红线。3.1 快路径Coilsys 的合成、查找与 Pcell 落地Coilsys 的用法是从指标反推几何。输入是目标感值、工作频率、Q 下限、可用面积和工艺选项工具给出若干组 D/W/S/N 的组合按占用面积或 Q 排序这个过程叫合成也可以反过来给定一组几何参数让它算感值和 Q这叫查找。选定一组后直接生成 Pcell落到当前库里之后在原理图里就能当可变参数元件用改圈数、改线宽不用重画。这条路第一次用有个容易忽略的步骤Coilsys 依赖一组配套脚本和用户输入文件第一次使用后要重启 ADS让脚本在启动时被加载进来否则应用管理器里看不到 Coilsys 入口。这不是安装问题是加载时机问题。重启之后在应用管理器里确认入口出现再检查一遍用户输入文件里的层名和工艺对得上然后才开始建 Pcell。快路径的产物是一个带参数的 layout view它本质上仍然是一段生成规则不是静态图形。所以调参时要注意改完参数必须让 Pcell 重新求值视图才会更新如果在版图上手工拖过某一根线Pcell 就退化成静态图形参数失效。这个坑在赶进度的深夜特别容易踩通常的做法是给 Pcell 生成的单元单独建一个 cell任何手工修改都在复制出来的普通 cell 上做。3.2 慢路径AEL 脚本与 boot.ael 的加载机制需要非标准形状时比如螺旋走线要按特定角度偏转、抽头位置不在正中、或者要一次生成一组阵列就得写 AEL 脚本。脚本分两层一层是全局输入放层名、默认尺寸、单位换算这些常量另一层是 Pcell 定义本体负责按参数算坐标、画多边形、打通孔。// user_input.ael —— 全局常量层名大小写必须与工艺文件完全一致 layer_spiral M6; // 主螺旋所在顶层厚金属 layer_under M5; // 跨接层 layer_via VIA5; // M5 到 M6 的连接孔 unit 1e-6; // 所有长度参数以微米输入内部换算成米 default_W 6.0; // 默认线宽微米 default_S 2.0; // 默认间距微米// boot.ael —— 放在目标库根目录库被打开时自动执行 // 作用是把定义脚本挂进当前库省掉每次手工加载 load(user_input.ael); // 先加载常量顺序不能反 load(spiral_pcell.ael); // 螺旋电感 Pcell load(xfmr_pcell.ael); // 变压器与巴伦 Pcellboot.ael的加载顺序是有讲究的定义脚本里引用了layer_spiral这类常量常量文件必须先进内存否则定义脚本在解析阶段就报未定义变量而这个报错往往出现在库打开的一瞬间一闪而过容易被当成软件卡顿。我第一次遇到时盯着日志翻了很久后来养成的习惯是先把两个文件在文本编辑器里单独跑一遍语法检查再放进库目录。脚本写完之后配置 Pcell 的版图参数表把 W、S、N、D 这些量暴露成可调项并给每个参数设上下限。上下限不是装饰它能挡住后面扫描时参数跑到不合法的区间比如间距小于工艺最小间隔生成的多边形直接短路。3.3 变压器模块的边界哪些能生成哪些必须手工优化变压器这一段必须提前说清楚能力和边界否则验收时一定扯皮。方案里能覆盖的结构包括方形与正八边形两种绕组形状对称与非对称两种布局带中心抽头的巴伦接法以及圈数、线宽、间距、内外径均可调的初次级线圈金属层与过孔层可以指定Pcell 生成后是可变参数元件。做不到的是给定任意一组初次级感值让工具自动反推出几何。变压器结构相对固定初次级的感值比由圈数比和耦合区长度共同决定工具只保证几何合法不保证感值落在你想要的点上。这条边界在方案文档里要写成明确的一句话不要留模糊空间。替代路径是把「反推」变成「扫描加优化」。固定初次级圈数比为离散候选对每个候选扫耦合长度用表达式算目标函数选出最接近的一组再局部微调线宽和间距。// 变压器优化目标初级 3.0 nH、次级 1.2 nH、耦合系数 k 0.7 // 扫描变量耦合区长度 Lc、次级线宽 Ws goal_Lp 3.0e-9; goal_Ls 1.2e-9; goal_k 0.7; Lp imag(Z11) / (2 * pi * freq); // 初级自感 Ls imag(Z22) / (2 * pi * freq); // 次级自感 k sqrt(1 - (real(Z11) * real(Z22)) / (imag(Z12) * imag(Z21))); err abs(Lp - goal_Lp) / goal_Lp // 归一化误差三项加权求和 abs(Ls - goal_Ls) / goal_Ls max(0, goal_k - k); // k 不达标才计入惩罚目标函数写成归一化误差加权和而不是直接把三个量相加是因为它们的量纲和数量级都不同直接相加会被感值项完全主导。max(0, goal_k - k)这一项只在耦合系数不达标时产生惩罚达标后不再拉低目标值避免优化器为了追高 k 牺牲感值精度。这套写法在带约束的几何优化里很常见参数上只需要调权重不用改结构。4. 电磁验证Momentum 设置与 2-port 到差分 1-port 的换算Pcell 给的是几何不是性能。几何到性能之间隔着一次电磁仿真而这次仿真的设置错一步后面所有曲线都是错的且错得很像对的。这一章讲 Momentum 的能力边界、推荐设置以及端口数据怎么换算成设计要看的口径。4.1 介质层、边界与导体厚度三种设置Momentum 是平面三维电磁求解器它的模型假设要先讲清楚介质层在水平方向延伸到无穷远同一个 Z 坐标上不支持并排的两种不同材料任意跨层的导体也不支持。这三条限制决定了版图建模的方式——衬底按叠层一层层堆每层给介电常数和损耗角正切跨层连接必须老老实实用过孔层表达不能画一根斜线穿过去同一高度上如果有两种介质比如局部开了钝化窗口要么简化成一种要么把模型拆开分别仿真。厚金属是它的强项。导体的顶面、底面和侧壁电流都会被考虑侧壁之间的耦合也能算进去这对顶层厚金属绕的电感很关键因为厚金属的侧壁电流对 Q 的贡献不可忽略。导体厚度有三档设置选错了结果差得很远设置电流建模方式适用场景三维分布顶面、底面、侧壁电流全部计入默认推荐厚金属螺旋、变压器二维分布侧壁只计垂直方向电流厚度较大但侧壁效应次要的结构薄片不计侧壁电流极薄金属、屏蔽地层通常的做法是主螺旋和变压器一律用三维分布屏蔽地用薄片因为地的侧壁电流对结果影响小用薄片能省不少网格。有人为了省时间把主螺旋也设成薄片Q 会明显偏高看起来很美实测对不上这就是典型的仿真自嗨。4.2 emSetup 推荐设置与网格收敛仿真设置里真正影响结果的是四件事频率计划、网格密度、端口形式和边界条件。频率计划不要只填一个中心频点要覆盖到自谐振频率以上否则看不到 Fsr网格密度和最高频率挂钩一般按最高频点的波长来定每波长网格数密到两倍左右做一次收敛检查端口用差分端口还是单端端口取决于你的测试计划如果后面要对比实测的两端口数据就先按单端出再在后处理里合成边界条件默认是开放边界除非要做屏蔽腔体否则不要改成理想导体壁。设置项推荐值说明频率范围0.1 GHz 至 3 倍预估 Fsr必须覆盖自谐振点每波长网格数20 至 30加倍一次做收敛对比导体厚度模型三维分布主螺旋与变压器端口单端参考地为最近的地便于和实测两端口对比边界开放不做腔体时不要改收敛检查的做法很土但有效把每波长网格数翻倍再跑一遍看目标频点的 L 变化是否在百分之一以内、Q 变化是否在百分之三以内。不达标就继续加密或者检查是不是有细长条多边形拉低了网格质量。这一步花的时间比返工少得多。4.3 端口重归一化与差分数据提取Momentum 导出的 S 参数默认归一化到 50 欧但片上电感的端口阻抗远不是 50 欧直接拿 S 参数看回波损耗没有意义。正确做法是先转成 Z 参数再从 Z 参数抽 L、Q、Fsr也就是第 2 章那段后处理脚本在做的事。如果要做差分就在 Z 域里合成不要在 S 域里合成因为 S 参数的合成公式依赖参考阻抗一旦两端口的参考阻抗不一致合成结果就偏。端口的物理位置也要统一。两个端口都放在同一侧、参考地取最近的地环和把端口分散在两侧得到的寄生电容不一样。项目里我一般规定所有电感 Pcell 的端口都放在版图左侧间距固定参考地取最下层金属的接地环这样不同版本之间的数据才有可比性。这条规定写进文档比每次口头交代可靠。5. 避坑与排查Pcell 生不出来、Q 值虚高、端口接反的典型现场这一章的五条都是从实际项目里捞出来的共同点是现象看起来像软件 bug实际都是输入或设置的问题。按「现象—原因—解决」的顺序写遇到时可以直接对照。5.1 生成 Pcell 后版图一片空白现象脚本执行完没有报错新建的 layout view 里什么都看不到或者只看到一个空的原点标记。原因八成是层名大小写不匹配或用途名写错脚本按字符串找层找不到就跳过绘制不抛异常。解决办法是把user_input.ael里的层名和用途名逐个对照工艺文件的层定义表大小写、下划线、用途后缀全对上再检查一次长度单位如果内部按米算而你输入的是微米图形会缩到看不见。排查顺序建议是先看单位再看层名最后看多边形坐标是否有负值跑到视图外面。5.2 Q 值虚高甚至出现负值现象仿真出来的 Q 在低频段就有二十几或者某一段突然变成负数。原因通常是端口参考地选错或导体厚度模型设成了薄片前者让回流路径变成一条不存在的捷径后者丢掉了侧壁损耗。负数则多半是端口去嵌过头参考面被推到了导体内部。解决办法是先把导体厚度改回三维分布复跑一遍再把端口参考地改成最近的接地环最后检查去嵌长度是否超过了端口到结构边缘的实际距离。改完还是异常就把频率范围缩到 1 GHz 以内看低频极限低频正常高频异常问题一定在寄生电容或网格上。5.3 差分电感的值和单端对不上现象单端测出 2.0 nH按公式合成差分却得到 3.6 nH明显超出合理范围。原因是两端口的数据不是同一参考面或者其中一个端口在导出时被重新归一化过。解决办法是回到仿真工程确认两个端口用同一套参考地和同一去嵌设置导出时统一归一化到同一阻抗再用后处理脚本检查 Z12 和 Z21 是否近似相等无源互易结构里这两个值差得大说明端口定义有问题。这条我踩过一次查了两天才发现是一个端口的参考地被自动改成了理想地。5.4 变压器的耦合系数对不上实测现象仿真给出的 k 是 0.8实测只有 0.6 左右。原因通常是忽略了跨接层与次级线圈之间的寄生耦合或者把初次级之间的间距设得比实际版图大。解决办法是把跨接层也纳入仿真不要图省事把它简化掉再量一遍实际版图里初次级的最小间距按真实值填回 Pcell 参数。还有一种情况是抽头位置建模不完整抽头引出的那段短线被忽略导致两臂耦合不对称把这段线补上再跑。5.5 仿真跑了一夜还没收敛现象网格数看上去不大求解时间却一路涨到几个小时。原因多半是版图里存在极细长的多边形或者孤立的碎片网格在这些地方被迫加密也可能是频率点设了几百个每个点都重新自适应加密。解决办法是先做几何清理把所有宽度小于工艺最小线的碎片删掉把尖角做倒角再把频率点减到十几个关键点用插值补曲线最后检查介质层是否有厚度为零的层零厚度层会让求解器反复试探。提示这五条里前三条属于配置类改一次就能受益整个项目后两条属于几何类最好在 Pcell 脚本里就加上合法性检查把不合规的参数挡在生成之前。6. 验收与答辩用三张对照表证明这套电感模型可信验收这一步最容易被糊弄过去跑出一条好看的曲线就说完成了。真正要交差得能回答「凭什么信这条曲线」。我一般准备三张对照表。第一张是几何对照表。把 Pcell 生成的版图导出量出外径、线宽、间距、圈数、金属层和过孔层和参数表一一对齐误差超过工艺最小精度就算不合格。这张表挡的是参数没生效的问题比如改了圈数但视图没重新求值。第二张是端口与口径对照表。同一个结构分别按单端口径和差分开口径出结果再和解析估算或者工艺方给的参考值对比偏差在合理范围内才算通过。这张表挡的是端口参考面和去嵌错误。验收项判据证据形式几何一致性六项尺寸误差小于工艺最小精度版图测量记录口径一致性单端与差分换算自洽两份数据与换算脚本输出网格收敛网格加倍后 L 变化小于 1%Q 小于 3%两次仿真对比曲线频段覆盖仿真范围覆盖 Fsr 且有余量频率计划配置截图参数可调性改动 W/S/N 后曲线单调合理参数扫描结果第三张是参数敏感性表。固定其他量单独扫线宽、间距、圈数看 L 和 Q 是不是朝预期方向变化。这张表最能说明模型是活的而不是一张贴图——如果扫线宽从 4 微米到 10 微米Q 完全不涨那基本可以判定仿真里金属损耗没算对。答辩时最常被问的两个问题一个是「你凭什么说这个差分值是对的」另一个是「换一套工艺这套东西还能不能用」。前一个问题用第二张表回答讲清楚换算关系和参考面后一个问题当场打开输入文件指出层名常量集中在一个文件里换工艺只改这个文件其余脚本不动。这比嘴上说可移植有说服力得多。从那以后我每次交付这类模型都会强制走一遍三张表哪怕时间紧也至少把几何对照和网格收敛做完。血泪经验是跳过这一步省下的半天后面往往要用两天来对账。希望帮到你。本文还有配套的精品资源点击获取