1. 为什么要在ADS里折腾TSMC 65nm的衬底配置很多刚接触射频集成电路设计的朋友第一次在ADS里跑电感仿真时都会遇到一个很尴尬的情况明明照着教程画好了螺旋电感仿真出来的Q值却低得离谱电感值也和手算对不上。问题往往不在电感本身而在于衬底配置这一步被跳过了。TSMC 65nm工艺是一套非常成熟的射频CMOS工艺节点它的衬底不是理想绝缘体而是有掺杂浓度的硅衬底。在GHz频段下硅衬底的损耗会直接吃掉电感的品质因数。如果你在ADS里用默认的理想衬底去仿真结果和流片实测能差出30%以上。所以衬底配置不是可选项是必选项。这篇内容适合三类人一是正在用ADS做射频无源器件仿真的IC设计工程师二是需要快速评估片上电感性能的版图工程师三是高校里做射频电路课题、需要跑仿真验证的研究生。我会把TSMC 65nm的衬底参数怎么填、Coilsys怎么调、生成的电感模型怎么验证整条链路拆开讲清楚。需要提前说明的是TSMC 65nm的完整工艺参数属于代工厂的PDK内容我这里不会给出具体的掺杂浓度数值但会告诉你这些参数从PDK的哪个文件里找、在ADS的哪个界面填、填完之后怎么判断配置是否合理。这些操作层面的经验才是真正能帮你跑通流程的东西。2. TSMC 65nm衬底在ADS中的参数映射逻辑2.1 衬底损耗从哪来理解硅衬底的三层结构TSMC 65nm的衬底不是一块均匀的硅。从剖面看它大致分为三层最上面是器件层附近的低阻区域中间是外延层最下面是高阻的体硅衬底。射频信号从金属螺旋电感耦合到衬底时会通过衬底电容形成位移电流再通过衬底的电阻性路径流回地。这个路径的阻抗越低损耗越大Q值就越低。在ADS的衬底定义里你需要描述的就是这个路径的电气特性。具体来说ADS的Substrate Definition界面会要求你输入每层材料的厚度、介电常数、电导率或者电阻率。对于TSMC 65nm这些数据在PDK的工艺文件里通常以.sub或者.tech为后缀里面会定义衬底层的堆叠顺序和每层的电学参数。我自己的习惯是先在PDK目录下找到工艺堆叠文件用文本编辑器打开搜索substrate或者SUB关键词。你会看到类似这样的结构一层是p-substrate标注了电阻率上面可能有p-epi层标注了厚度和掺杂浓度。把这些数值抄下来对应填到ADS的衬底编辑器里。2.2 在ADS里建衬底从PDK文件到Substrate Editor打开ADS后衬底配置的入口在Layout或者Momentum的相关设置里。如果你用的是Coilsys它有自己的衬底设置入口但底层逻辑和Momentum是共通的。具体路径是在Coilsys的界面里找到Substrate选项卡点击Edit Substrate。进入Substrate Editor后你会看到一个层叠结构的表格。每一行代表一层材料列包括Layer Name、Thickness、Permittivity、Conductivity、Loss Tangent等。对于TSMC 65nm你需要至少定义两层衬底本体和上面的氧化层SiO2。氧化层的参数比较好填介电常数通常在3.9到4.2之间厚度取决于金属层到衬底的距离这个在PDK的ITF文件里有。衬底本体的参数就要小心了电阻率不能直接填PDK里标注的体电阻率因为射频信号主要走的是外延层。我的经验是如果PDK给出了外延层的掺杂浓度用公式换算成电阻率再填进去。换算公式是电阻率 1 / (q × μ × N)其中q是电子电荷μ是迁移率N是掺杂浓度。对于P型硅空穴迁移率大概在400到500 cm²/(V·s)之间。这个计算不需要特别精确因为后续还要用实测或者电磁仿真校准。2.3 常见配置错误为什么你的Q值总是偏低我见过最多的错误是衬底厚度填得太薄。有人直接把衬底厚度设成10微米觉得反正下面都是地薄一点算得快。但射频信号在硅里的趋肤深度在GHz频段大概是几十微米量级衬底太薄会导致电磁场在底部边界反射仿真出来的Q值会异常偏高或者偏低完全不可信。正确的做法是衬底厚度至少设为趋肤深度的3到5倍。对于TSMC 65nm我一般会把衬底厚度设在200到300微米。虽然实际晶圆厚度可能是700多微米但仿真时不需要那么厚200微米已经足够让电磁场衰减掉了。另一个常见错误是忘了设置衬底底部的边界条件。在Substrate Editor里最下面一层需要指定是Perfect Conductor还是Impedance Boundary。对于硅衬底通常选Perfect Conductor作为背金地的近似。如果你的工艺没有背金那就选Impedance Boundary并填入一个合理的表面阻抗。还有一个坑是氧化层的损耗角正切。很多人直接填0觉得氧化层是绝缘体没有损耗。但在高频下即使是SiO2也有微小的损耗填一个0.001到0.002的值更接近实际。这个值对Q值的影响大概在5%以内但如果你追求仿真和实测的吻合度这个细节不能忽略。3. Coilsys生成电感的完整操作链路3.1 Coilsys的启动与工艺文件绑定Coilsys是ADS里专门用来生成和优化平面螺旋电感的工具。它的入口在ADS的Tools菜单下或者直接在原理图里通过Insert Component Coilsys调用。启动后第一件事是绑定工艺文件这一步决定了后续金属层、过孔、衬底的默认参数。在Coilsys的Technology选项卡里点击Load Technology然后选择TSMC 65nm PDK里的ITF文件。ITF文件是工艺的互连技术文件里面定义了每层金属的厚度、方阻、介质厚度等。加载成功后Coilsys的金属层下拉菜单里会出现类似MET1到MET9的选项以及VIA1到VIA8的过孔选项。这里有个细节TSMC 65nm的顶层金属通常比较厚方阻低适合做电感。我一般会选MET8或者MET9作为电感的主金属层。如果你选错了金属层比如用了薄金属Coilsys算出来的串联电阻会偏大Q值自然上不去。绑定工艺文件后Coilsys会自动读取衬底配置。但有时候ITF文件里的衬底参数不全你还需要手动在Coilsys的Substrate选项卡里补充。补充的方法和前面说的Substrate Editor一样只是入口不同。3.2 电感参数设置圈数、线宽、间距怎么定Coilsys的主界面是一个参数化的电感模型。你需要填的核心参数有圈数Turns、线宽Width、间距Spacing、内径Inner Radius、金属层Metal Layer。这些参数不是随便填的它们之间相互制约。圈数决定了电感值的大致范围。对于TSMC 65nm的顶层金属单圈电感的电感值大概在0.1到0.2 nH之间。如果你需要2 nH的电感大概需要4到6圈。但圈数多了串联电阻会增加Q值会下降。所以圈数要在电感值和Q值之间折中。线宽影响两个东西串联电阻和寄生电容。线宽越宽串联电阻越小Q值越高但线宽宽了金属和衬底之间的耦合面积增大寄生电容增加自谐振频率下降。我的经验是对于2 GHz以下的应用线宽可以设在6到10微米对于5 GHz以上线宽要降到3到5微米。间距主要影响相邻圈之间的耦合。间距太小圈间电容大自谐振频率低间距太大同样的圈数下电感面积变大衬底损耗增加。TSMC 65nm的顶层金属最小间距通常是0.5微米左右但电感设计里我一般用2到3微米这样寄生电容可控面积也不会太夸张。内径决定了电感的中心空洞大小。内径太小中心区域的磁场利用率低电感值上不去内径太大同样的圈数下外径会很大衬底损耗增加。对于65nm工艺内径一般设在20到40微米之间。3.3 从参数扫描到生成版图Coilsys的优化流程填好初始参数后不要急着生成版图。先点Simulate跑一次单点仿真看看电感值和Q值是否在合理范围。如果电感值差得远先调圈数和内径如果Q值太低先调线宽和金属层。Coilsys有一个很好用的功能是参数扫描。在Optimization选项卡里你可以设置圈数、线宽、间距的扫描范围然后让Coilsys自动跑一批仿真找出Q值最大的参数组合。这个功能比手动调参快得多但要注意扫描范围不要设得太宽否则跑一次要很久。我一般会这样设置扫描圈数固定因为圈数主要由目标电感值决定线宽从4微米扫到10微米步长1微米间距从1微米扫到4微米步长0.5微米。跑完之后看Q值的等高线图选Q值最高且电感值满足要求的那个点。确定参数后点Generate LayoutCoilsys会在ADS的Layout窗口里生成电感的版图。这个版图是参数化的你可以直接在Layout里微调比如修改拐角处的斜切角度、调整过孔的排列方式。但要注意手动修改后Coilsys的参数化模型就不再对应了后续仿真要用Momentum重新提取。4. 电感模型验证从Coilsys到Momentum的交叉检查4.1 为什么Coilsys的结果不能直接信Coilsys用的是解析模型加经验公式计算速度很快但精度有限。它的衬底模型是简化的没有考虑金属的趋肤效应和邻近效应也没有考虑衬底涡流。所以Coilsys的结果只能作为初始设计参考不能直接拿去流片。我一般会把Coilsys的结果作为起点然后用Momentum做电磁仿真验证。Momentum是ADS里的全波电磁仿真器它会把版图网格化直接求解麦克斯韦方程。虽然跑得慢但精度高得多。从Coilsys到Momentum的流程是在Coilsys里生成版图后把版图导出为ADS的Layout格式然后在Layout里新建一个Momentum仿真设置。设置里要选对衬底文件确保和Coilsys用的是同一套衬底参数。然后设置频率范围一般从0.1 GHz扫到20 GHz覆盖你关心的频段。4.2 Momentum仿真设置网格、频率、端口Momentum的仿真设置里网格密度是关键。网格太粗结果不准网格太细跑得慢。ADS的Momentum有自适应网格功能你只需要设置一个初始网格密度它会自动加密。我一般把初始网格设为每波长10个网格对于2 GHz的信号波长在硅里大概是几厘米但电感尺寸只有几百微米所以实际网格会很密。频率设置要注意Momentum是频域仿真器你需要设置一个频率扫描范围。对于电感我一般设0.1 GHz到20 GHz点数设100到200个。这样既能看清低频的电感值也能看到自谐振频率。端口设置是另一个容易出错的地方。电感有两个端口一个是输入一个是输出。在Momentum里你需要用Port元件定义这两个端口并且要设置端口阻抗。对于射频电感端口阻抗通常设为50欧姆。但如果你是要提取电感的S参数用于电路仿真端口阻抗可以设为任意值后续在电路里再做匹配。4.3 结果对比Coilsys和Momentum差多少算正常跑完Momentum后把S参数转换成Y参数再从Y参数提取电感和Q值。提取公式是L Im(1/Y11) / (2πf)Q -Im(Y11) / Re(Y11)。注意这里的Y11是去嵌后的Y参数需要把端口寄生去掉。Coilsys和Momentum的结果对比我的一般预期是电感值差异在5%以内Q值差异在10%到15%以内。如果差异超过这个范围说明衬底配置或者版图有问题。最常见的原因是衬底参数不一致或者Momentum的网格太粗。如果Q值差异很大先检查衬底。把Coilsys和Momentum的衬底文件都打开逐层对比厚度、介电常数、电导率。有时候Coilsys会自动简化衬底比如把多层合并成一层这会导致差异。解决办法是在Coilsys里手动设置衬底关掉自动简化选项。如果电感值差异大检查版图的金属层和过孔。Coilsys生成的版图有时候过孔数量不够导致串联电阻偏大。在Momentum里过孔是用矩形金属块近似的如果过孔太少电阻会偏大。我一般会在版图里手动增加过孔确保过孔的总截面积足够。5. 实操中容易踩的五个坑5.1 衬底文件路径含中文或空格ADS对文件路径很敏感如果PDK的安装路径里有中文或者空格Coilsys加载ITF文件时可能会失败或者加载后参数读不全。我遇到过好几次明明ITF文件没问题但Coilsys就是报错。后来发现是路径里有个空格。解决办法很简单把PDK复制到一个纯英文、无空格的路径下比如D:\TSMC65\PDK。5.2 金属层厚度填错导致Q值虚高TSMC 65nm的顶层金属厚度在PDK里有标注但有些ITF文件里写的是nominal值实际流片时会有±10%的偏差。如果你在Coilsys里填了偏厚的值Q值会虚高。我的做法是填PDK里的最小值这样仿真结果偏保守流片后Q值只会更好不会更差。5.3 忘了设置金属的趋肤效应模型Coilsys默认用的是直流电阻没有考虑趋肤效应。在GHz频段趋肤深度可能只有几个微米和金属厚度可比。如果不考虑趋肤效应串联电阻会偏小Q值会偏高。在Coilsys的Options里有一个Skin Effect选项勾上它。Momentum会自动考虑趋肤效应不需要额外设置。5.4 端口去嵌不干净从Momentum提取电感时端口寄生会影响结果。特别是当端口焊盘比较大时焊盘电容会让自谐振频率偏低。我一般会在版图里把端口焊盘做小或者在提取时用开路去嵌法把焊盘去掉。ADS的Momentum里有去嵌功能在Simulation设置里选De-embedding然后指定去嵌结构。5.5 仿真频率范围设得太窄有人只关心2.4 GHz就把频率范围设成2 GHz到3 GHz。这样跑得快但看不到自谐振频率。如果自谐振频率刚好在2.4 GHz附近你的电感在这个频率下已经不是电感了而是电容。所以频率范围一定要设宽至少覆盖自谐振频率的两倍。我一般从0.1 GHz扫到20 GHz确保能看到完整的阻抗特性。6. 从仿真到流片电感设计的最后一步仿真跑通之后还有几件事要做。第一是检查DRCTSMC 65nm的金属密度、间距、宽度都有设计规则Coilsys生成的版图不一定完全符合。我一般会把版图导入到Virtuoso或者ADS的DRC工具里跑一遍确保没有违规。第二是做蒙特卡洛分析。TSMC 65nm的工艺参数有偏差金属厚度、介电常数、衬底电阻率都会波动。在ADS里可以设置蒙特卡洛仿真跑100次看电感值和Q值的分布。如果分布太宽说明设计鲁棒性不够需要调整参数。第三是考虑温度影响。硅的电阻率随温度升高而增加金属的电阻也随温度增加。在85度时电感的Q值可能比25度时低10%到20%。如果应用场景对温度敏感需要在仿真里设置温度扫描。最后把最终的电感模型导出为ADS的电路符号方便在原理图里调用。导出的模型可以是S参数模型也可以是等效电路模型。S参数模型精度高但只能用于特定端口阻抗等效电路模型更灵活但精度稍低。我一般两个都导出根据后续电路仿真的需要选择。整个流程走下来从衬底配置到电感生成再到验证大概需要半天到一天的时间。如果只是做初步评估Coilsys跑几分钟就能出结果。但要拿到可信的流片数据Momentum仿真和后续验证不能省。我自己的经验是花在验证上的时间越多流片回来的惊喜就越少。