尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MOS管Width参数详解:从电路到版图的multi-finger与DRC实践

MOS管Width参数详解:从电路到版图的multi-finger与DRC实践 1. 从一个“W/L填多少”的问题说起做模拟版图或者电路设计的兄弟大概率都遇到过这样的场景电路图里一个MOS管旁边标着W10u、L1u、M4然后你打开版图工具准备画的时候脑子里冒出一连串问号——这个W到底是单根finger的宽度还是总宽度M4是四根管子并联还是指四个finger版图上画出来的有源区总宽度到底该是多少DRC跑出来的宽度检查为什么和电路标的不一样这些问题看起来是小事但真到了流片阶段一个Width理解错了轻则匹配性变差、电流偏离仿真值重则DRC报错、LVS对不上、整块版图返工。我自己刚入行那会儿就因为把总宽度和单指宽度搞混画了一个电流镜结果镜像比例偏了将近20%找了半天才发现是Width的定义没吃透。这篇内容就围绕MOS管参数Width在电路与版图之间的对应关系展开把multi-finger结构、版图实现方式、DRC检查逻辑这几个关键环节串起来讲清楚。不管你是刚接触版图的新手还是做了几年但一直靠“经验值”填参数的工程师都能从这里找到可以直接用的结论和操作方法。核心关键词就几个MOS、Width、版图、multi-finger、DRC围绕它们把“为什么”和“怎么做”都说明白。2. 搞懂Width之前先把MOS管的几何参数理清楚2.1 电路符号里的W和L到底指什么在SPICE模型或者电路原理图里一个MOS管最核心的几何参数就是W和L。L是沟道长度也就是源极到漏极之间电流经过的那段距离这个一般没什么歧义。W是沟道宽度垂直于电流方向的那个维度。问题就出在这个W上——它描述的是一根“手指”的宽度还是整个管子所有手指加起来的总宽度答案取决于你用的工具和模型定义方式。在大多数SPICE模型比如BSIM系列中W参数指的是单根finger的宽度而总的有效宽度是W乘以finger数量通常记为M或者NF。但有些工艺库或者PDK会把W直接定义为总宽度然后内部再除以finger数。这两种定义方式如果搞混了仿真结果和版图实现就会完全对不上。我个人的经验是拿到一个工艺库第一件事就是翻它的模型文档或者问foundry要参数定义说明确认W到底是单指还是总宽。这个信息通常在PDK的release note或者模型文件注释里能找到。如果找不到就自己搭一个简单的测试电路设W10u、NF1和W10u、NF2两种情况看仿真出来的电流是不是差一倍就能反推出定义方式。2.2 Multi-finger结构为什么会出现一个MOS管的宽度如果做得很大比如W100u甚至更大直接画成一根长条会带来几个问题。首先是栅极电阻太大栅极信号从一端传到另一端会有延迟高频应用下这是致命的。其次是版图面积利用率低一根又长又窄的矩形放在那里周围的空间很难利用。再就是匹配性差大尺寸管子的工艺梯度效应更明显两个 supposedly 一样的管子实际特性可能差很多。Multi-finger结构就是为了解决这些问题。把一根总宽度为W_total的管子拆成N根宽度为W_single的finger每根finger的宽度是W_total/N。这些finger并排摆放栅极从两侧或者一侧连出来源漏交替排列。这样做的好处很直接栅极电阻降到原来的1/N近似版图更紧凑匹配性也更好因为每个finger的尺寸小了工艺梯度的影响相对均匀。但这里有个关键点电路图里填的W在multi-finger结构下到底该填W_total还是W_single这就是很多人踩坑的地方。在Cadence的电路图里如果你用的MOS管符号有NFnumber of fingers参数那么W通常填的是单指宽度总宽度是W×NF。但如果你用的符号没有NF参数只有一个Mmultiplier那M表示的是并联管子的数量每个管子的W是独立的总宽度是W×M。这两种情况在版图上实现出来的结构完全不同前者是共享源漏的finger结构后者是多个独立管子并联。2.3 版图上的Width和电路上的Width怎么对应到了版图这一步Width的物理意义就变得非常具体了。版图上的有源区active area宽度、多晶硅栅极的宽度、接触孔的位置都和电路里的W、L、NF参数直接相关。以一个简单的NMOS为例假设电路参数是W5u、L0.18u、NF2。那么在版图上你会看到两根多晶硅栅极每根的长度对应沟道长度L是0.18u每根栅极覆盖的有源区宽度对应单指沟道宽度是5u。两根栅极之间的源极或漏极区域是共享的整个管子的有源区总宽度大约是5u×2加上中间的共享扩散区宽度。如果电路参数是W5u、L0.18u、M2那版图上就是两个完全独立的MOS管每个管子的有源区宽度是5u两个管子之间可能有间距也可能共享扩散区取决于你的画法。这两种情况在LVS版图与原理图一致性检查时工具会根据你提取出的参数来判断是否匹配。如果你电路里用的是NF2版图画成了两个独立管子LVS可能会报错因为提取出的参数是M2而不是NF2。注意不同工艺厂的LVS规则对NF和M的识别方式不一样。有些工艺会把共享扩散区的多指结构自动识别为NF有些则要求你在版图里明确标记。跑LVS之前最好先看一下工艺的LVS文档或者拿一个已知正确的例子试跑一遍。3. Width参数在版图实现中的具体操作3.1 从电路参数到版图尺寸的换算过程假设你现在拿到一个电路上面标着NMOSW20uL0.5uNF4。你要在版图上实现它第一步是确定单指宽度W_single W_total / NF 20u / 4 5u。也就是说每根finger的沟道宽度是5u。接下来确定版图上的具体尺寸。沟道长度L0.5u意味着多晶硅栅极的宽度在电流方向上是0.5u。有源区的宽度垂直于电流方向要覆盖单指宽度5u再加上两侧的扩散区余量。通常工艺会规定有源区边缘到栅极边缘的最小间距比如0.2u那么有源区的总宽度大约是5u 2×0.2u 5.4u。但这只是单指的尺寸四根finger并排之后整个管子的有源区总宽度还要加上finger之间的共享扩散区。共享扩散区的宽度怎么定这取决于你的接触孔contact怎么放。如果两个finger共享一个源极或漏极那个共享区域里要放足够多的接触孔来保证电流能力。接触孔的数量和尺寸由工艺的电流密度规则决定比如每个接触孔能承载0.5mA你的管子电流是2mA那至少需要4个接触孔。接触孔的排列方式又会影响共享扩散区的最小宽度。我一般会这样做先根据电流确定接触孔数量然后根据接触孔的最小间距和包围规则算出共享扩散区的最小宽度最后加上finger的宽度和栅极尺寸得到整个管子的版图尺寸。这个过程听起来繁琐但做熟了之后就是几分钟的事。关键是第一次做的时候要把每个尺寸的来源搞清楚不要凭感觉填。3.2 Multi-finger的版图布局方式与Width的关系Multi-finger的版图布局有几种常见方式每种方式对Width的体现不一样。第一种是直排式所有finger沿着一个方向依次排列源漏交替。这种布局最直观每个finger的宽度就是W_single总宽度是NF×W_single加上共享扩散区。优点是画起来简单缺点是栅极电阻虽然降低了但还不够低因为栅极还是从一端连出来的。第二种是折叠式把finger分成两组分别从两侧连栅极。这种布局的栅极电阻更低因为信号从两侧同时进入。版图上的Width体现和直排式类似但栅极连接方式不同。第三种是同心式或者环形布局主要用于对匹配性要求极高的场合比如电流镜或者差分对。这种布局下每个finger的宽度可能不完全相同需要根据具体结构来定。不管哪种布局核心原则是版图上所有finger的沟道宽度之和必须等于电路里的总宽度W_total。如果你在电路里填的是W20u、NF4版图上四根finger每根5u加起来20uLVS才能过。如果你版图上画了四根finger但每根只有4u加起来16uLVS就会报宽度不匹配。3.3 DRC对Width相关规则的检查逻辑DRC设计规则检查对Width的检查主要集中在几个方面。第一个是最小宽度检查有源区、多晶硅、接触孔、金属线都有最小宽度要求。如果你的单指宽度W_single小于工艺规定的最小值DRC会报错。比如某个工艺规定多晶硅最小宽度是0.18u你设W_single0.15u那就过不了。第二个是最小间距检查finger之间的间距、接触孔之间的间距、金属线之间的间距都有最小值。Multi-finger结构下finger间距如果太小DRC会报spacing violation。这个间距通常由工艺的 lithography 能力决定比如0.18u工艺下多晶硅间距最小可能是0.2u左右。第三个是宽度与长度的比例检查有些工艺会对W/L比例设限制比如W/L不能超过某个值否则会报warning。这个主要是为了防止设计出过于极端的管子影响良率。第四个是密度检查有源区密度、多晶硅密度、金属密度都有均匀性要求。如果你的版图上某个区域管子太密或者太疏DRC会报密度违规。这个在multi-finger结构下尤其要注意因为finger排列很紧凑局部密度可能超标。实操心得跑DRC之前先看一下工艺的DRC rule deck里关于width和space的规则编号心里有个数。遇到报错时不要盲目改尺寸先定位是哪个规则触发的然后根据规则的具体要求来调整。有时候一个width violation可以通过调整finger数量来解决比如把NF从4改成5单指宽度变小但总宽度不变可能就避开了某个最小宽度限制。4. 常见问题与排查技巧实录4.1 Width不匹配导致LVS报错的排查思路LVS报错是版图工程师的家常便饭其中Width相关的问题占了相当比例。常见的报错信息有“Width mismatch”、“Total width mismatch”、“NF mismatch”等。排查的时候可以按以下步骤来。第一步确认电路里的W定义。是单指宽度还是总宽度NF和M分别是什么含义这个前面已经讲过了不再重复。第二步检查版图提取出的参数。LVS工具会从版图中提取出每个管子的W、L、NF、M等参数然后和电路对比。你可以在LVS的报告里看到提取出的具体数值和电路参数逐项对比。第三步检查版图的连接方式。有时候版图提取出的NF不对是因为finger之间的共享扩散区没有被正确识别。比如你画了四根finger但中间某个共享扩散区的接触孔没放够工具可能把它识别成两个独立的管子NF就变成了22而不是4。第四步检查工艺的LVS规则。有些工艺对NF的识别有特殊要求比如要求finger之间的扩散区必须连续或者要求栅极连接方式必须符合某种模式。这些细节在工艺的LVS文档里会有说明。我遇到过一个案例电路里是W10u、NF2版图画了两根finger但中间用金属把源漏分别连出去了结果LVS提取出两个独立的M1管子每个W10u总宽度变成了20u。后来把中间的扩散区改成共享的接触孔重新排布LVS就过了。这个问题的根源就是版图的连接方式影响了参数提取。4.2 Multi-finger结构下DRC常见报错与解决Multi-finger结构下DRC报错主要集中在间距和密度上。下面整理了一个速查表方便遇到问题时快速定位。报错类型常见原因解决方法Poly spacing violationfinger间距小于最小规则增大finger间距或减少NFActive spacing violation有源区间距不足调整finger排列增加间距Contact spacing violation接触孔太密减少接触孔数量或增大间距Density violation局部密度超标分散布局增加dummyWidth violation单指宽度小于最小值增大W_single或调整NFEnclosure violation接触孔包围不足增大有源区或金属包围这个表里的每一行我都实际遇到过。比如Poly spacing violation有一次我为了省面积把finger间距设成了0.18u结果工艺最小间距是0.2uDRC直接报了几百个错。后来把间距改成0.22u面积虽然大了一点但DRC干净了。这个教训是不要为了省面积去挑战工艺的最小规则良率比面积重要得多。Density violation也是常客。Multi-finger结构下有源区和多晶硅的局部密度很容易超标。解决方法通常是在管子周围加dummy结构或者把大管子拆成几个小管子分散摆放。有些工艺还要求金属密度均匀这时候需要在空白区域填充dummy metal。4.3 Width参数填错导致的仿真与实测偏差电路仿真时Width填错后果可能在仿真阶段就能看出来也可能要到实测才暴露。如果W填成了总宽度但模型认为是单指宽度仿真出来的电流会偏大NF倍。反过来如果W填成了单指宽度但模型认为是总宽度电流会偏小NF倍。这种偏差在电流镜、差分对等对匹配性敏感的电路里尤其致命。我见过一个案例一个电流镜电路参考电流和镜像电流的比例设计是1:4版图上参考管NF1、镜像管NF4但电路里镜像管的W填的是单指宽度而不是总宽度。仿真的时候看起来没问题因为仿真器用的是电路里的W值。但到了版图LVS提取出的总宽度是单指宽度的4倍和电路里的W对不上LVS报错。后来把电路里的W改成总宽度仿真结果变了因为仿真器现在用的是总宽度除以NF之后的单指宽度。这个案例说明电路里的W定义必须和仿真模型、版图实现三者一致任何一个环节理解错了都会出问题。避坑技巧在项目开始阶段拿一个最简单的MOS管做一次全流程验证——电路设参数、仿真看电流、画版图、跑LVS、再后仿。把这个流程走通一遍确认W、NF、M的定义方式后面所有管子都按这个规则来能避免90%以上的Width相关问题。4.4 不同工艺下Width规则的差异对比不同工艺厂对Width的定义和规则确实有差异这里列几个常见的差异点。工艺类型W定义NF识别方式特殊规则常见CMOS工艺单指宽度共享扩散区自动识别最小W_single限制部分BCD工艺总宽度需要显式标记W/L比例限制SOI工艺单指宽度浮体连接影响识别体接触规则FinFET工艺等效宽度Fin数量决定Fin间距和数量规则这个表只是大致分类具体到每个工艺厂可能还有细微差别。我的建议是每换一个新工艺第一件事就是找它的模型文档和LVS文档把Width相关的定义和规则看一遍。不要凭经验套用上一个工艺的做法否则很容易踩坑。5. 从Width出发把MOS管参数体系串起来5.1 Width与其他参数L、NF、M的联动关系Width从来不是孤立存在的它和L、NF、M、AD、AS、PD、PS等参数一起构成了MOS管的完整几何描述。在电路图里填参数的时候这几个值是联动的。L决定了沟道长度影响管子的速度、匹配性和输出阻抗。W决定了沟道宽度影响电流能力和寄生电容。NF决定了finger数量影响栅极电阻和版图布局。M决定了并联管子数量影响总电流和匹配性。AD和AS是源漏扩散区面积PD和PS是源漏扩散区周长这些参数影响寄生电容和LVS提取。在版图上实现的时候这些参数会具体化为有源区尺寸、多晶硅尺寸、接触孔数量、金属连线宽度等。比如AD和AS在版图上就是源漏扩散区的面积如果你在电路里填了AD5p、AS5p但版图上画出来的扩散区面积是8pLVS可能会报错或者warning。有些工艺允许AD/AS自动计算有些则要求手动填写这个也要看具体PDK的设置。我个人的习惯是在电路设计阶段就把所有几何参数填完整不要留空让工具自动算。因为自动算出来的值可能和版图实际画出来的不一致到了LVS阶段还是要改。不如一开始就根据版图布局的预估把参数填好后面微调。5.2 版图匹配对Width精度的要求在模拟电路里匹配性往往比绝对精度更重要。两个 supposed 一样的管子如果版图上Width有微小差异匹配性就会变差。比如电流镜的两个管子一个W10u一个W10.1u镜像电流就会有1%的偏差。这个偏差在有些应用里可以接受在有些应用里就是致命的。为了保证匹配性版图设计时对Width的处理有几个原则。第一相同功能的管子用相同的finger数量和单指宽度不要一个用NF2、W_single5u另一个用NF1、W_single10u虽然总宽度都是10u但匹配性会差很多。第二finger的排列方向要一致不要一个横着一个竖着工艺梯度的影响方向不同。第三加dummy管子在主要管子周围放一些不工作的dummy保证工艺环境一致。这些原则在电流镜、差分对、带隙基准等对匹配性敏感的电路里尤其重要。我做过一个带隙基准两个关键管子的Width差了0.5%结果输出电压偏了十几毫伏。后来把两个管子的finger数量和单指宽度完全统一偏差降到了1mV以内。这个经历让我深刻体会到在模拟版图里Width的精度不是开玩笑的。5.3 先进工艺下Width概念的新变化到了FinFET和GAAGate-All-Around时代Width的概念发生了根本性变化。在FinFET工艺里沟道宽度不再是一个连续的尺寸而是由Fin的数量决定的。一个Fin的等效宽度是固定的比如7nm工艺下大约是6-7nm你只能通过改变Fin的数量来调整总宽度。这时候电路里的W参数通常填的是等效宽度版图上体现为Fin的数量。这种变化对版图设计的影响很大。在平面工艺里你可以任意设定W_single只要不小于最小值就行。在FinFET工艺里W_single只能是Fin等效宽度的整数倍灵活性降低了。而且Fin的数量和间距都有严格规则DRC检查更复杂。对于做先进工艺的兄弟我的建议是尽早熟悉工艺的Fin规则在电路设计阶段就把W设成Fin等效宽度的整数倍。不要等到版图阶段才发现W设得不对那时候改电路就麻烦了。另外FinFET的匹配性规则和平面工艺不同dummy Fin的添加方式也有讲究这些都要提前了解。6. 一套可以直接抄的Width参数检查流程6.1 设计阶段的参数确认清单在开始画版图之前先把下面这些信息确认清楚能省掉后面很多返工。工艺PDK里W的定义单指宽度还是总宽度NF和M的含义NF是finger数量M是并联管子数量最小W_single限制工艺规定的最小单指宽度最小finger间距多晶硅之间的最小间距接触孔规则最小尺寸、最小间距、包围要求密度规则有源区、多晶硅、金属的密度上下限LVS识别规则NF和M的提取方式这个清单看起来简单但每一条都对应着实际工作中可能踩的坑。我一般会把这些信息整理成一个checklist每换一个新工艺就更新一遍画版图之前过一遍心里有底。6.2 版图绘制时的Width自检步骤画完版图之后跑DRC和LVS之前先自己检查一遍Width相关的尺寸。第一步数finger数量。版图上有几根多晶硅栅极电路里的NF是多少两者是否一致。第二步量单指宽度。每根finger覆盖的有源区宽度是多少是否等于W_total/NF。第三步算总宽度。所有finger的宽度之和是否等于电路里的W_total。第四步查间距。finger之间的间距是否满足最小规则接触孔之间的间距是否满足最小规则。第五步看密度。局部密度是否在允许范围内需不需要加dummy。这五步做完再跑DRC和LVS通过率会高很多。我自己的经验是花十分钟做这个自检比跑完DRC再一个个改错要快得多。6.3 跑完DRC和LVS后的验证要点DRC和LVS都过了之后还有几件事要做。第一看LVS报告里的提取参数确认W、L、NF、M和电路一致。第二跑后仿看后仿结果和前仿的偏差是否在可接受范围内。第三如果时间允许做一个简单的匹配性仿真看关键管子的特性是否一致。后仿这一步很多人会忽略觉得LVS过了就行了。但实际上版图上的寄生参数会影响电路性能尤其是高频电路和大电流电路。Width相关的寄生电容比如栅极电容、源漏电容在后仿里会体现出来如果偏差太大可能需要调整版图布局。最后分享一个小技巧在版图里给关键管子加label标注W、L、NF等参数。这样后面检查或者别人接手的时候一眼就能看出这个管子的参数不用再去翻电路图。这个习惯我保持了多年省了很多沟通成本。7. 写在最后的一点个人体会Width这个参数说简单也简单就是个数说复杂也复杂它牵扯到电路定义、仿真模型、版图实现、DRC规则、LVS提取、匹配性设计等一整条链路。我做了这么多年版图见过太多因为Width理解错误导致的返工和bug也见过很多新手在这个问题上反复纠结。我的体会是不要怕麻烦第一次就把定义搞清楚。拿到新工艺花半个小时看文档、做测试、验证流程后面能省下几十个小时的debug时间。另外多和电路设计工程师沟通确认他们填的W是什么含义不要自己猜。很多时候一个简单的确认就能避免一个大坑。这个内容后续还可以这样扩展针对具体工艺比如某家的40nm或者55nm把Width相关的规则和实操案例再细化一遍或者针对FinFET工艺专门讲Fin数量和等效宽度的换算方法。如果有兄弟对某个具体方向感兴趣可以顺着这个框架继续深挖。
返回列表