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 Layout",Coilsys会在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. 从仿真到流片:电感设计的最后一步
仿真跑通之后,还有几件事要做。第一是检查DRC,TSMC 65nm的金属密度、间距、宽度都有设计规则,Coilsys生成的版图不一定完全符合。我一般会把版图导入到Virtuoso或者ADS的DRC工具里跑一遍,确保没有违规。
第二是做蒙特卡洛分析。TSMC 65nm的工艺参数有偏差,金属厚度、介电常数、衬底电阻率都会波动。在ADS里可以设置蒙特卡洛仿真,跑100次,看电感值和Q值的分布。如果分布太宽,说明设计鲁棒性不够,需要调整参数。
第三是考虑温度影响。硅的电阻率随温度升高而增加,金属的电阻也随温度增加。在85度时,电感的Q值可能比25度时低10%到20%。如果应用场景对温度敏感,需要在仿真里设置温度扫描。
最后,把最终的电感模型导出为ADS的电路符号,方便在原理图里调用。导出的模型可以是S参数模型,也可以是等效电路模型。S参数模型精度高,但只能用于特定端口阻抗;等效电路模型更灵活,但精度稍低。我一般两个都导出,根据后续电路仿真的需要选择。
整个流程走下来,从衬底配置到电感生成再到验证,大概需要半天到一天的时间。如果只是做初步评估,Coilsys跑几分钟就能出结果。但要拿到可信的流片数据,Momentum仿真和后续验证不能省。我自己的经验是,花在验证上的时间越多,流片回来的惊喜就越少。