ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

数字后端物理签核四大挑战:IR Drop、EM、Noise、Antenna实战解析

数字后端物理签核四大挑战:IR Drop、EM、Noise、Antenna实战解析 做了这么多年数字后端有个感受特别强烈跑到物理签核这一步设计只剩最后一口气但最容易出问题的恰恰也是这一口气。功能仿真全绿、时序收敛差不多可真要tapeout时IR Drop、EM、Noise、Antenna这四大物理签核挑战一个接一个冒出来每个都能让你的芯片在特定工况下突然“拉胯”。这篇文章我想聊的就是这四件事——它们到底是什么、为什么会失效、签核工具怎么判违例、以及实战中怎么修。适合正在做后端实现和物理签核的工程师也适合刚入门想搞懂“后端最后一道关”到底在查什么的朋友。我会尽量把背后的物理机制和工具逻辑讲透再配上实际项目里常见的那点“坑”。1. IR Drop电源网格的“最后一公里”为何总在关键路径上掉链子1.1 电压降的物理本质与检查对象IR Drop说白了就是电源网络上电阻引起的电压损耗名字本身就是欧姆定律V I × R。芯片里的电源网络从封装的电源引脚一路铺到每个标准单元这中间全是金属连线每段金属都有电阻电流流过时必然产生压降。到了单元端实际看到的供电电压已经比芯片外部给的电压低了一截这个差值就是IR Drop。很多刚入行的同学容易把它理解成“静态电压损失”其实不够全面。芯片正常工作时电流是动态变化的尤其是时钟沿到来时大量寄存器同时翻转瞬间抽取的电流非常大。这时候电源网络上的瞬时压降会更加明显这就是动态IR Drop。签核阶段同时查静态和动态两种静态IR Drop主要看平均电流下的稳态电压分布动态IR Drop要看特定时间窗口内的峰值电流引起的电压跌落幅度。举个例子可能更好理解。小区供水总管的水压是够的但因为末端水管细、管路长到了你家水龙头水就变小了。芯片里的情况一模一样电源pad附近的电压最接近理想值芯片中间区域或高密度翻转区域往往是电压最低的地方。更麻烦的是这个“水压不足”出现在哪条路径上直接影响那条路径上的单元速度快慢。工具跑IR Drop时基本流程是先做功耗分析拿到每个instance的功耗和电流信息然后抽取电源网格的寄生电阻网络最后用大规模线性方程组求解每个节点的电压。这个过程对网格规模和模型精度都很敏感网格抽取不全、功耗估算偏乐观都会让结果失真。1.2 从动态电压波形到时序违例一条完整的失效链路IR Drop之所以让后端工程师头疼不是因为它本身有多复杂而是它和时序深度绑定。晶体管的驱动能力直接受供电电压影响电压越低单元开关速度越慢门延迟越大。如果一条关键路径正好处在IR Drop严重的区域路径上的单元延迟整体变大setup timing就很容易崩掉。我碰到过一个典型案例一个模块的floorplan阶段功耗密度估计不足floorplan中间塞了太多高翻转率逻辑结果post-route之后动态IR Drop在最差角下超过5%。从功耗波形上看模块内部电压在时钟沿后几百皮秒内跌落了将近80mV关键路径上的一组寄存器刚好在这个时间窗口采样setup余量直接从正的几十皮秒变成了负几百皮秒。当时第一反应是修时序但实际查下来才发现问题根源在IR Drop时序只是受影响的那个“结果”。更深一层说动态IR Drop和时钟网络的交互也值得关注。时钟树上的buffer如果处于低压区时钟到达时间会偏移可能导致hold违例或setup违例同时出现。尤其是多电源域设计不同域之间的电压差异会让跨域路径的时序分析变得更加棘手。签核工具里经常看到的VMVoltage Map文件就是把这个电压分布写到标准延迟格式里让STA工具在计算延迟时考虑实际供电电压。这也是为什么很多团队要求IR Drop签核和STA必须用同一套功耗数据否则两边对不上修了也没用。1.3 实战修复思路从改善网格到降低切换电流修IR Drop的核心思路就两条要么降低电流流过的电阻要么降低该区域的瞬时电流需求。第一种方法也是最直接的就是加强电源网格。具体操作包括加宽电源轨和电源strap、增加竖向电源条带的密度、在电流瓶颈区域多打via孔连接上下层金属。别小看via的作用很多IR Drop违例并不是金属线宽不够而是层间via太稀电流在换层时被“卡脖子”。我在项目里遇到过好几次Strap宽度明明达标了但via阵列数量不够导致局部电阻偏大IR Drop数值迟迟压不下来。第二种方法是从功耗源头下手。高翻转率的单元是电流消耗大户可以在不影响功能的前提下把同时翻转的寄存器组拉开分布降低局部峰值电流密度也可以在功耗热点附近插入适量的decap电容decap相当于一个“小水库”在电流峰值时先释放储存的电荷缓解瞬间压降。不过decap不能乱加加太多会浪费面积、增大漏电还会影响时序需要看功耗波形找对位置。另外封装和供电方案也对IR Drop有影响。如果封装模型里电源引脚的电感偏大动态电流变化时会产生明显的L·di/dt噪声这部分电压跌落会叠加在IR Drop上。所以到签核后期如果片内IR Drop已经压得很低但波形上仍有明显的快速跌落不妨回头检查一下package模型和power pad分配是否合理。2. EM金属原子“被电流吹跑”是一种什么失效2.1 EM失效的物理机制不是“断线”而是“原子搬家”Electromigration中文叫电迁移简称EM。很多人第一反应是“电流太大把线烧断了”这个理解不算错但物理机制完全不同。EM是金属原子在电子流作用下发生定向迁移简单说就是高密度电子流撞击金属原子把原子一点点“吹”向电子流动方向时间长了某段金属里的原子越来越少形成空洞void最终导致电阻增大甚至开路而原子堆积的地方又会形成小丘hillock可能引起相邻导线短路。这个失效过程和电流密度强相关单位面积流过的电流越大原子迁移越明显。Black方程给了一个很好的直观概念芯片寿命和电流密度的n次方成反比和温度也有很强的指数关系。所以EM又叫“可靠性失效”它不是立刻发生的而是芯片工作几个月甚至几年后慢慢恶化。签核阶段查EM就是为了避免芯片在保修期内因为金属“搬家”而报废。这也是为什么我们在工具报告里经常看到“EM失效”这个词。它不是说设计现在坏了而是说按照当前电流密度和温度条件推算某根金属会在目标寿命内失效。比如消费级芯片目标寿命可能是5到10年车规芯片可能要求15年以上同样的电流密度在不同寿命要求下结论完全不同。2.2 签核工具怎么判定EM违例从DC到AC再到thermal工具算EM违例核心是算每段金属上的电流密度J再和工艺允许的电流密度上限Jmax比较。J I / AA是金属截面积。关键来了这里的“电流”不是随便给一个平均值而是要分场景看。一般来说电源网络EM检查和信号线EM检查用的是不同的电流模型。电源网络上电流是持续流动的工具用平均电流结合占空比来评估同时对峰值电流也会做检查因为短时间的大电流也可能触发原子迁移。信号线上的EM更复杂信号不是恒定电平电流方向来回变化工具需要根据翻转率toggle rate和负载电容计算有效电流。很多工艺还会对信号EM和电源EM给出不同的规则因为双向电流和单向电流对金属损伤的严重程度不一样。这里要提一个实际流程里常见的检查项EM_PX。在有些EDA工具的电源EM检查里会专门针对每个instance的电源引脚做逐点检查报告里会出现EM_PX这样的标签或对应rule deck。它的含义是对每个cell的power pin到内部晶体管之间的电流密度做评估而不是只看整根power rail。这个检查特别容易暴露设计里的局部热点比如一个高驱动强度的buffer集中驱动了大量负载它的VDD pin附近电流密度可能远超平均单看上层金属线反而发现不了。还有一个必须考虑的变量是温度。EM对温度极其敏感温度每升高一点允许电流密度就得下降。所以签核的EM检查要在芯片工作的最差温度条件下跑不能拿常温仿真结果来签。先进工艺里功耗密度高局部温度可能和芯片平均温度差很多所以更严谨的流程会用热仿真结果把温度分布喂给EM检查工具这样得到的热感知EM结果才更接近真实情况。2.3 修EM的真正难点路径太多、修复窗口太小修EM的常规手段并不难理解加宽金属线、把信号换到更厚的金属层、降低单元的驱动强度、减小负载电容、降低翻转率这些都是有效方法。难的是EM违例通常散布在大量net上不是修一两个点就能收工的。我印象最深的一个项目里信号EM检查一次性报了上千条违例。单独看每一条都很好修但连起来看就头疼了很多违例集中在高翻转率的数据总线上这些net本身已经走得比较宽再加宽就得改布线改完又可能堵住别的net换金属层绕线更远延迟又增加降低驱动强度则可能导致slew违例甚至是时序直接收敛不了。EM修复往往是一个多目标权衡问题修一个点可能拆东墙补西墙。实际操作中我的建议是分层处理电源EM违例优先处理因为影响全局可靠性且修复方向明确直接加宽电源网格或增加供电via信号EM违例则按违例严重程度排序优先修那些EM余量最差、翻转率最高的关键net。还有一点容易被忽略ECO阶段加了buffer或者调整了逻辑局部电流分布会变化之前没违例的地方可能新出现违例。所以EM检查和IR Drop一样不能改完版图就不管每次significant ECO后都要重新跑一遍相关检查否则tapeout前会“惊喜”不断。3. Noise一根线上的毛刺如何变成芯片的假功能3.1 耦合电容与受害者的“数字毛刺”Noise在物理签核里主要指串扰噪声。芯片里的每根金属线和旁边的金属线之间都存在寄生电容尤其是同层长距离平行走线耦合电容相当可观。当一条线上电平翻转时会通过寄生电容把电荷感应到旁边的线上让旁边这条本该安静的线产生电压波动这就是串扰。具体到失效画面是这样的一条数据线作为受害者victim它本来应该稳稳地保持高电平结果旁边那条作为攻击者aggressor的总线在下一拍翻转通过耦合电容把电压尖峰传了过来受害线上就出现了一个毛刺glitch。如果毛刺幅度足够大被接收单元误判成一个有效电平变化逻辑状态就错了这就是功能性失效。串扰不只是引起毛刺还会影响信号延迟。攻击者如果和受害者在同一个方向翻转受害者会被“推一把”信号到得早一点如果反向翻转受害者会被“拖后腿”信号到得晚一点。这种delay push-out和pull-in效应在高频设计中非常烦人因为它是一种动态时序扰动静态时序分析里很难完全覆盖。实际项目中串扰的重灾区往往是长距离并行数据总线、时钟线旁边的数据线以及拥塞区域里被迫间距变小的那些net。APR工具在布线时已经做了相当多的串扰预防但只要设计密度高总会有漏网之鱼需要签核阶段揪出来。3.2 从noise margin到functional failure的判定逻辑签核工具判断一条Noise违例不是简单看毛刺高度有没有超过某个电压值而是有一套更细致的判定逻辑。第一步是计算受害线上感应出的噪声波形包括峰值幅度和脉冲宽度。第二步是把波形和接收单元的噪声容限做比较每个标准单元输入端对噪声都有一定的容忍度超过这个容限才可能翻转逻辑状态。这里有个非常关键的概念叫AC noise rejection我最早看报告时也误解过以为它就是简单的高通滤波。实际上AC noise rejection描述的是接收单元对“有一定宽度”的噪声脉冲的抑制能力。窄脉冲即使幅度很高也可能因为能量持续时间太短来不及把节点拉到翻转阈值就被“吸收”了而宽脉冲即使幅度不算太高也可能造成误翻转。所以签核工具用的不是单个电压阈值而是一条幅度-宽度曲线只有噪声波形越过接收单元的这条rejection边界线才会被报成违例。这也是为什么我在项目里反复跟新人强调Noise报告里报出来的glitch首先要看接收单元是什么再看脉冲宽度千万不能一看到噪声幅度超过VDD的一半就慌。有一次我们在报告里看到一个看起来非常吓人的大毛刺波形幅度几乎满摆幅但接收端是加了噪声抑制特性的触发器输入脉冲宽度只有几十皮秒工具分析下来并不构成违例最终什么也没改就放行了。3.3 如何有效缓解串扰屏蔽、间距、驱动强度三件套真正需要修Noise违例时手段其实不少但每个手段都有代价。最彻底的方法是屏蔽shielding把关键信号两侧放上接地的电源线相当于给信号线装了两堵“墙”耦合电荷被引导到地上不再干扰信号。缺点是布线资源占用大只有对极少数最关键信号才舍得这么干。第二个常用手段是拉大间距spacing。很多工艺的布线规则里有double spacing选项把net和net的最小间距加倍耦合电容直接减半。代价是拥塞加剧可能引起绕线溢出或者面积增大。所以在布线初期就要给高风险net设置偏大的间距约束而不是等到签核再处理。第三招是调整驱动强度和加buffer。把victim的驱动能力加大能让它更“扛揍”在噪声来临时更快恢复或者切一段buffer把长线打断减小单段上的耦合长度。还有一个方向是减小aggressor的驱动强度或改善其slew攻击者翻转得越慢感应出的噪声峰值越低。不过改驱动强度会影响时序需要结合STA一起迭代。工程上修复Noise违例一定要看加权后的严重程度不能只看个数。通常工具会给出每个violation的net、aggressor列表和噪声波形我习惯优先处理那些噪声余量noise margin为负、且接收端是异步复位信号或时钟相关信号的违例。这类违例一旦真实触发后果非常严重大概率直接造成功能错误。4. Antenna制造车间的电荷积累怎么跑到版图上算总账4.1 天线效应的本质等离子体刻蚀与电荷积累Antenna Effect也叫等离子体感应损伤是四个问题里唯一一个“电学仿真跑不出来”的签核项。因为它的根源不在芯片正常工作状态而在制造过程。芯片制造中用等离子体刻蚀金属层时等离子体里充满了带电离子和电子。如果一根金属线在刻蚀过程中暴露面积很大它就相当于一根天线会收集等离子体中的电荷电势不断升高。这根金属线如果恰好连到晶体管的栅极栅氧化层又非常薄积累的电荷就可能穿过栅氧化层形成漏电通道甚至直接击穿导致晶体管永久损伤。这句话值得重复一遍天线效应损伤的是晶体管但“天线”是那根在制造中暴露面积过大的金属线。所以签核阶段查的不是芯片工作时的电压电流而是版图几何关系——每层导体连接到栅极的面积比例。面积越大、栅极面积越小风险越高。这个比例就叫天线比率Antenna Ratio。很多没接触过工艺的人会觉得奇怪制造时金属线断不断开版图不都长一个样吗但实际上版图设计数据决定了每一层金属的实际形状和面积工艺厂根据这些图形做刻蚀。所以设计阶段完全可以提前算出哪些gate会被“天线”打到这就是Antenna检查的意义。4.2 天线比率、跳线规则与修复手段签核工具判断Antenna违例会读取Fab提供的antenna rule通常是每层金属允许的最大antenna ratio。如果版图上某段金属连到gate的面积比例超标就报违例。规则里还会区分累积比率和逐层比率因为不同金属层加工顺序不同电荷积累方式也不一样。修复Antenna违例的经典手段是跳线也就是layer hopping。比如一根长金属线在第一层金属上画得太长、面积超标可以在中间切一段上去走二层金属再跳回来。为什么这个操作有效因为制造过程中每一层的刻蚀是分步的当二层金属还没被刻蚀时一层金属的“暴露面积”已经被断开了累积的电荷没有了继续收集的导体路径损伤风险大大降低。简单说跳线的本质是破坏“天线”的连续性让它在工艺的每个阶段都保持足够小的收集面积。除了跳线还可以在靠近栅极的位置插入反偏二极管给积累的电荷一条泄放通路或者在长线上插入buffer把一段金属和栅极隔开。这三种方法各有适用场景跳线最常用但会消耗布线资源二极管在高层金属长走线上很有效插buffer则对信号延迟有一定影响需要同步评估时序。实际项目中Antenna check通常在详细布线完成后跑如果在tapeout前才想起来看那就比较被动因为违例多的时候改起来会牵动大片布线。我建议在place route过程里就打开in-route antenna checking让布线器在绕线时自动规避部分风险这样最终剩下来要手动修的违例会少很多。4.3 为什么天线问题在先进工艺中愈发难缠先进工艺下Antenna检查越来越严格背后有几个直接原因。首先是栅氧化层厚度在持续变薄。从28nm到7nm再到更先进节点栅氧厚度只有一两纳米量级能承受的电荷非常有限一点点积累就可能造成损伤。意味着同样大小的antenna ratio在先进工艺里的安全阈值远低于老工艺。其次是FinFET工艺的引入让栅极表面积的计算更复杂。FinFET的栅极从三个方向包裹鳍片有效面积不能简单套用平面CMOS的公式Fab给的rule往往更精细签核工具也要支持特殊的面积提取算法。很多团队在先进节点上发现Antenna违例数量暴增部分原因是规则更严了部分原因是多层金属堆叠带来的累积效应更难处理。第三是芯片规模变大metal层数变多。高层金属通常很长很宽是天然的“大天线”而现代芯片动辄上千条全局信号线这些线跨越整个芯片单根线的导电面积非常可观。配合先进工艺的低阈值高层长走线的Antenna风险非常高这也是为什么很多高速接口IP在设计文档里会明确要求信号线在指定层跳线。我的体会是Antenna问题的修复速度往往取决于你对版图结构的熟悉程度。同样一条总线有人能快速找到最合适的跳线点有人只能来回试错。签核后期时间宝贵建议在布线阶段就定期抽查Antenna报告不要依赖最后一轮统一检查。5. 四种失效的交叉影响签核收敛就像在全屋漏水时修房顶5.1 IR Drop与EM之间的耦合关系把四个问题分开讲是为了说清楚但实际项目中它们不是孤立存在的。IR Drop和EM首先就是一对难兄难弟。IR Drop严重的地方往往意味着局部电流大、功耗密度高这种地方EM风险天然就高。修复方向上加宽电源网格对两者都有好处线宽增加电阻变小IR Drop改善截面积变大电流密度下降EM余量也改善。所以电源网格上的IR Drop和EM违例经常可以一起修。但也有互相制约的地方。比如为了降低IR Drop在热点区域加了大量decapdecap本身会带来额外的充电电流在启动瞬间或者从低功耗模式唤醒时可能造成局部电流尖峰反而恶化EM检查。另外IR Drop修复让某些单元的实际工作电压提高了驱动能力增强翻转电流也可能变大之前刚好在EM边缘的路径就又危险了。我在项目里养成了一个习惯每次改完电源网格或decap分布IR和EM报告同步对比着看不要只盯一个指标。曾经有一版我们花了很大力气把IR Drop从4.8%压到4.2%结果EM违例多了几十条原因就是decap加的太集中唤醒瞬间的电流冲击被EM工具抓了个正着。后来把decap打散分布两个指标才同时收敛。5.2 Noise与IR Drop相互叠加的时序影响Noise和IR Drop的交互更多体现在时序上而且往往是“雪上加霜”的关系。前面说了IR Drop会让victim单元的驱动变弱对串扰的抵抗力下降。同一个区域如果同时存在IR Drop和Noise问题victim的噪声容限会更差同样的毛刺可能从“不违例”变成“违例”。另一方面aggressor如果处于低压区它翻转时对victim的感应也可能变弱。但总的趋势是IR Drop严重的热点区域Noise问题通常是恶化的因为受害方更脆弱了。时序分析里Noise引起的额外延迟和IR Drop引起的基准延迟恶化是叠加的。我遇到过一次很典型的情况一条关键路径单独看IR Drop余量还算够单独看Noise也只是轻微违例但把两个效应同时放进STA之后路径总延迟直接超标。如果只修其中一个另一个仍然存在时序还是过不了。这种耦合场景在低电压工艺角下尤其明显因为低压下驱动本来就弱任何一点额外扰动都会被放大。签核阶段建议把IR Drop和Noise的分析放在同一个场景里来做用一致的功耗和翻转假设让时序工具在延迟计算中同时考虑这两个效应。如果设计流程把这两步拆得太开很容易出现“各修各的最后合不到一起”的尴尬局面。5.3 Antenna与其他三项的“制造阶段”差异Antenna和前三个问题有一个根本性区别IR Drop、EM、Noise都是芯片工作时的电学可靠性问题Antenna则是制造工艺过程中的损伤风险。所以在修复策略上Antenna跟它们几乎可以完全解耦只需要在版图层面处理几何关系。不过工程上仍然存在交叉影响。修Antenna要跳线跳线必然改变绕线拓扑线长和耦合长度变了串扰和时序就会变化多跳一层金属走线电阻略有不同EM和IR Drop也可能受影响。虽然这些变化通常不大但在margin很紧的设计里任何版图变动都需要重新跑一遍相关检查。所以Antenna修复的最佳时机是布线阶段这时候详细布线还没完全定型跳线对周围net的影响最小。如果把Antenna问题拖到所有signoff都做完之后才修经常会出现“修好Antenna时序又崩了”的死循环。好的做法是在时序收敛的大框架下同步处理Antenna把它作为版图ECO的一部分整体验证而不是孤立的最后一步。5.4 签核收敛流程与工程实践建议四类签核检查全做完设计才算真正有底气tapeout。但什么时候跑、跑到什么程度、怎么组织ECO这些流程问题往往比单个修法更影响效率。我推荐的做法是分阶段推进而不是一口气全跑。早期floorplan阶段就跑一版粗略的IR Drop和电源EM主要看电源网格结构和power pad分配是否合理。这个阶段发现问题改起来最便宜。详细布线完成后跑完整的IR Drop、EM、Noise和Antenna检查这时候的结果才有签核意义。之后每次ECO不需要全部重跑但要至少把受影响区域的IR、EM、Noise和Antenna快速回归一遍。还有一个经验是统一数据源。IR Drop、EM、Noise都依赖功耗和寄生参数如果三个工具用的不是同一组翻转率和RC抽取结果违例会互相矛盾定位起来非常痛苦。我见过不少团队功耗分析是一套数据信号完整性分析又是另一套数据最后的违例列表对不上折腾了很久才发现是数据源没有对齐。多角分析同样重要。IR Drop和Noise在不同电压、温度工艺角下表现完全不一样不能只看最好角。通常最差IR Drop出现在低压高温组合EM可能是在高压大电流下更严重Noise则要看slew和coupling的坏角。把这些corner铺开跑完违例按严重程度排序然后集中力量修那些跨corner都违例的“硬骨头”一些小修小补的随机违例可以降低优先级。回到开头说的那句物理签核是整个芯片设计流程里最考验综合判断能力的一步。IR Drop、EM、Noise、Antenna这四个问题单独看都有成熟的修复方法真正决定项目成败的是你能不能在一堆互相打架的约束里找到平衡点。我个人的体会是不要迷信某一项工具报告里报出来的违例数量要把报告当线索去理解每条violation背后的物理场景再决定怎么修。多跑几轮、多看几个corner、多跟工艺厂和EDA支持沟通签核收敛的速度往往比想象中更快。
返回列表