ARTICLE DETAIL

资讯详情

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

芯片IO Ring与Pad规划避坑指南:从结构到IP Checklist

芯片IO Ring与Pad规划避坑指南:从结构到IP Checklist 上个月评审一颗数模混合芯片的IO Ring方案我在IP Checklist上圈出六个问题其中三个需要动版图重绕。负责后端的小伙子跟我说早知道先把检查清单过一遍也不至于排到流片窗口末尾才返工。这大概是很多团队的常态core里面做了十几层金属、绕线绕得密不透风结果到Pad Ring这层就觉得“无非是摆一圈单元”一带而过最后被封装厂打回或者上电翻车的却往往就是这个不起眼的环。今天的主题就围绕芯片级IOPadRing和Pad规划展开再把一份可以直接用的IP Checklist拆开讲。无论你是做数字后端、模拟版图还是封装协同这篇文章都能当一份避坑参考。我会从Ring的结构讲起到Pad规划的关键决策再到流片前需要核对的一整套检查闭环中间穿插我实际踩过的几个坑。里面有公式、有表格、有排查思路尽量让文字上面有据可依。1. IO Ring不是“围着Core画个框”那么简单很多入行不久的工程师第一次打开芯片版图看到最外围那一圈方方正正的结构觉得这就是“把IO cell放成一圈再画一圈电源线”。实际上IO Ring是一个由多种单元和金属环共同构成的功能区它承担的任务比“把pad接出来”多得多。1.1 拆开看IO Ring的组成单元一次完整的IO Ring从外到内大致包括这几个部分Seal Ring密封环在芯片最外侧用于保护芯片在切割时不受机械应力和湿气侵入。它必须连续闭合不能有断开通常由各层金属和通孔堆叠而成。Pad开口也就是把顶层钝化层开窗、露出顶层金属的区域。封装厂通过bond wire或者bump从这里连接外部。ESD结构在pad下方或旁边的硅层面上通常会做二极管、GGNMOS或SCR等器件形成静电泄放通道。这部分看不见的时候最容易出问题因为版图上不会像数字逻辑那样显眼。IO buffer cell输入、输出、双向IO的逻辑电路包括主驱动、预驱动、输入接收器和一些配置逻辑。Corner cell位于芯片四个角用于连接两条边上的电源/地ring也用来处理转角处的特殊应力。有些工艺允许在corner cell里放一些用于工艺检测的结构。这些单元组合起来才构成一个完整的IO环路。你在版图上看到的“一圈”其实每一段都在干不同的活。1.2 为什么是“Ring”而不是把Pad摆成一条直线关键的原因有三个供电均衡、ESD泄放路径、信号回流。电源和地如果只在两个方向接入那么距离电源点较远的IO单元会感受到明显的压降。做成环形之后电流可以从多个方向汇聚远端供电会好很多。ESD事件发生时电流从某个pad进入需要经过power bus到clamp电路再到地如果bus不是连续的环路径阻抗就会变大ESD窗口很容易失效。信号同样如此所有从core到pad的信号都在ring的下面或上面走线一个完整的参考环能减小回流面积降低辐射和串扰。如果我们把IO Ring类比成小区围墙那seal ring就是围墙本身power ring是沿围墙铺设的主水管每一个pad则是门卫室。你不能在围墙某一段把水管锯断否则远端门卫室水压就不够围墙和门卫室之间的关系就是这样一个整体。Ring类型核心作用断开会怎样Seal Ring切割保护、水汽阻隔芯片碎裂、可靠性下降IO Power Ring为所有IO buffer供电远端IR drop超标、ESD路径不完整信号走线环把core信号引到Pad绕线拥塞、时序恶化1.3 物理层次上的IO RingIO Ring涉及的金属层次通常不是普通core里那几层薄金属而是顶层厚金属。以常见工艺为例pad开口一般放在AP顶部铝层或者RDL层上下面需要用VIA堆叠把电流从IO cell拉到顶层。很多工艺还会在pad底下做“solder mask”或“passivation opening”的定义这些层次在GDS里对应哪一层必须在PDK文档里逐一确认。我见过一个比较典型的错误设计者以为bond pad开窗就是“顶层金属画一个方块”实际上开窗层和顶层金属层之间还有一层钝化层定义如果钝化层开窗尺寸和顶层金属方块不匹配封装厂在封测阶段会反馈焊线位置偏移或焊接不良。2. 从Floorplan到IO RingPad规划的关键决策Pad规划不是后端阶段随便排一排就完事它应该在floorplan阶段就和封装方案一起定下来。很多项目遇到返工都是因为Pad的位置在早期没有和封装、系统、模拟模块对齐。2.1 先判断是Pad-limited还是Core-limited拿到一颗芯片的芯片面积约束时第一件事是判断这颗die大小到底由core面积决定还是由Pad数量决定。Core-limitedcore区域占的面积比Pad展开后的面积大这种时候IO单元选型相对从容可以用驱动能力强、面积大的IO cell也不一定要用最紧凑的pitch。Pad-limitedcore很小但Pad数量很多比如一颗SoC要引出几百个引脚die边长基本由Pad展开长度决定。这种时候就必须用紧凑型IO库甚至考虑双排交错Pad。怎么估算假设有120个信号Pad单个Pad pitch是60um均匀分布在四边每边放30个那么每边长度至少30 × 60 1800um再加上四个corner占掉的长度芯片边长通常在2000um上下。如果你的core逻辑只需要1500um × 1500um那就是Pad-limited。这种情况下应该优先优化Pad排布而不是无限增大core面积。2.2 信号Pad排布别按网表顺序放很多工程师习惯按netlist里信号出现的顺序一个接一个往ring上摆这通常会在后期付出代价。信号Pad的排布顺序应当服从三个约束封装Ball Map或Bonding Diagram的信号顺序差分对、高速总线、敏感模拟信号的物理相邻性每个边上同时翻转信号的数量均衡对于高速并行总线比如DDR、USB、MIPI这类接口同一组的信号Pad要尽量相邻而且每组附近最好有对应的地Pad做回流。差分信号对更是必须相邻摆放如果P和N隔了几个Pad等到绕线阶段会发现模拟版图怎么走都别扭。我习惯把每个信号Pad按功能分组再在各组之间放一个或多个地Pad形成一个“用地区域”。这样不仅信号回流路径短后续做SSN分析也方便。2.3 电源Pad的数量估算与摆放电源Pad数量是最容易被拍脑袋决定的但这里其实有一个简单的估算公式。假设芯片core总电流I_core 3A每个core VDD Pad能承受的最大平均电流I_per_pad 200mA那么理论上的VDD Pad总数至少是N_vdd I_core / I_per_pad 3000 / 200 15当然这只是平均值估算实际还要看IR drop。core的VDD和VSS Pad最好数量对等且均匀分布。对于IO电源VDDIO要看IO翻转时的动态电流通常比静态功耗大很多。摆放上有一个我反复强调的原则电源Pad不要集中在一条边上。如果所有VDDIO Pad都放在左侧右侧的IO单元供电就要从左边绕过整条ring途中每一段bus都有电阻到最远端时电压可能已经跌到IO阈值附近。一个比较实用的做法是把电源Pad按“对角补偿”或“每边等量”的方式排布并且对准core内部电源ring的入口区域。2.4 与封装Bonding图的协同Pad坐标和封装厂的bonding图必须一一对应。这里有一个经常被忽略的点两个团队用的坐标原点可能不同。有的封装图以die中心为原点有的以左下角为原点还有的以seal ring外沿为原点。坐标只要偏移哪怕25umbonding时就有可能把线打偏到相邻Pad上。更稳妥的做法是建立一个共享的“Pad坐标基准表”统一以die中心或者统一以某个corner cell中心为原点所有导出的坐标CSV都以这个基准为准。封装厂拿到GDS之前先让他们按这个基准出图两边对齐后再往下走。3. IP Checklist流片前逐项核对IO相关IP清单“IP Checklist”听起来像是一张检查表实际它应该是一个“活文档”。IO Ring里涉及的IP类型太多参数组合也极其繁杂靠人脑记必出问题。3.1 为什么IO相关的检查必须清单化以一颗典型芯片为例IO Ring上可能有这样几种类型的单元普通单端数字IOLVCMOS、LVTTL高速差分IOLVDS、CML、MIPI模拟信号IOADC输入、DAC输出、参考电压电源/地IO特殊功能IO时钟输入、复位、测试模式、保险丝每一种都有自己的电平标准、驱动能力、ESD等级、上下拉配置、供电电源域和失效策略。这几项互相组合数量很容易达到几十甚至上百种。更麻烦的是数字团队、模拟团队、封装团队都会对同一组Pad有不同的描述方式如果没有清单锁定某个信号在数字netlist里叫“UART_TX”到了封装图里变成“GPIO_12”最后检查时会发现对齐成本极高。清单的好处是它把每个Pad的属性和状态固定下来任何改动都有记录评审时不用现场回忆“当时为什么这样摆”。3.2 一张可以直接拿来改的IO IP Checklist结构下面是我在实际项目里常用的检查项结构大家可以按自己项目情况增删。检查项具体内容常见风险Cell名称所使用的IO cell型号、版本库版本不对导致LVS失败电平标准1.8V/2.5V/3.3V/LVDS等接错电平芯片烧毁或无法通信电源域归属VDDIO1/VDDIO2/模拟电源域跨域连接漏电或闩锁ESD策略HBM/CDM等级、ESD bus结构等级不够静电打坏上/下拉配置内部上拉、下拉、悬空造成总线冲突或输入浮空驱动强度高/中/低驱动配置边沿过冲、SSN超标Slew Rate快/慢翻转模式高速信号不能配慢slewFail-safe掉电时IO是否允许外部接入掉电漏电路径异常模式复用该Pad是否复用为测试功能功能冲突坐标GDS坐标是否与bonding图一致打线偏移这张表里的每一行我都见过真实翻车案例。驱动强度配低导致片外信号上升沿不够上下拉配置和外部电路冲突导致电流过大fail-safe选项没开系统断电后芯片仍然发热。所以拿到任何IO cell先对照这张表逐项确认再进入布局阶段。3.3 模拟敏感IP和高速差分Pad的特殊检查模拟信号和高速差分信号在Checklist里需要更多关注。以LVDS的P/N差分对为例至少要检查差分对的两个Pad是否相邻中间没有插入其他信号Pad从Pad到模拟模块输入晶体管的走线是否等长、是否对称敏感信号两侧是否有地Pad或guard ring隔离是否跨越了数字电源IO bus还有一类容易忽略高速接口的输出翻转会引起地弹如果模拟参考电压Pad正好在旁边参考电压会被扰动。常规做法是把模拟信号Pad和数字翻转频繁的Pad之间至少隔一个VSS Pad或者干脆放到Ring的不同边上。3.4 未使用Pad、Filler和Corner的策略IO Filler经常被当作“凑数单元”对待其实它的作用比想象中重要。IO Ring在放置完所有信号和电源Pad后会留下空隙这些空隙如果直接留白power bus会断开ESD路径也会断。所以需要插入IO Filler让整个Ring的电源环保持连续。有些Filler还承担密度填充功能能帮助满足金属覆盖率的工艺要求。插入时要注意选和所在IO电源域匹配的类型不同电压域的filler不能混用。Corner cell同理。早期项目里有人为了省面积把Corner cell里的环保留后来发现ESD clamp缺少了回路整颗芯片ESD测试挂掉。这个坑踩一次就够刻骨铭心了。4. 电源完整性与ESDIO Ring最容易翻车的地方4.1 IR Drop在环形供电带上的特殊表现Core内部的IR drop分析可以用网格状电源网络来分摊电流但IO Ring本质上是一条长窄带。电源bus的宽度受IO pitch限制不可能像core里那样铺很宽的金属所以IO Ring上的IR drop分析往往比core更敏感。举个简化例子假设VDDIO bus是一条宽20um的顶层铝线方块电阻0.03Ω/sq在某一方向上长度5000um那么这一段金属电阻大约是R_bus ≈ 0.03 × (5000/20) 7.5Ω如果这条bus上流过的平均电流是0.5A那么压降就是3.75V——显然不可能实际设计里不会允许这么大的电流从单侧流过。这告诉我们IO Ring供电不能靠单边接力必须有足够多的电源Pad从多个点注入电流。每个电源Pad相当于一个“电流源”把电流注入bus从而把IR压降控制在一定范围内。设计上一般要求IO Ring的IR drop不超过供电电压的3%-5%。1.8V的VDDIO压降最好控制在90mV以内。要做到这一点除了增加电源Pad还要保证bus的宽度和via数组足够。4.2 从Pad到地的ESD路径有多少条ESD事件发生时电流并不是直接从pad流到地而是有一条完整的泄放路径。常规的路径是外部静电从Pad进入经过正向二极管到VDDIO bus再经过电源到地的clamp电路最后到VSS bus再通过相邻Pad的二极管流到外部或泄放。这个路径里最容易翻车的两个点ESD bus在某个地方断开比如某一角没接好导致泄放路径电感增大。电源Pad和信号Pad共用的bus过窄ESD瞬间大电流会出现局部熔断。版图阶段可以跑一个简化电阻提取看Pad到最近clamp的主路径电阻是否小于1~2Ω。如果大于这个范围在ESD事件下电压会抬升过高内部电路就会被击穿。CDM事件更强调低电感路径Pad到地via数量要足够。有些工艺会在Pad下方特意做一排密集via这些via不是随便放的它们就是CDM防护的一部分。4.3 同步开关噪声SSN与地弹同步开关噪声是所有高速IO设计绕不开的话题。它产生的原因是多个输出同时翻转时电流变化di/dt在封装和bonding寄生电感上产生压降导致芯片内部地电位相对于外部地发生波动。这个波动如果太大可能造成误触发甚至IO失效。估算方法可以用这个简化公式V_noise L_eff × N × dI/dt假设16个IO同时从低到高翻转单个IO翻转时的电流变化量ΔI 20mA翻转时间t 2ns那么总 di/dt ≈ 16 × 20mA / 2ns 1.6e8 A/s。如果等效寄生电感L_eff 1nH那么地弹噪声约为160mV。对于1.8V的IO来说这个数值已经相当危险。要降下来通常有几个方向减小驱动强度、增加回流地Pad数量、让高翻转信号分布在不同边上、优化bonding线长度。我一般在每8个信号IO旁边至少放一个VSS Pad对于一串同时翻转的高速总线甚至要放到每4个配1个。4.4 电源Pad摆放的黄金法则这里整理几条我习惯遵循的摆放规则电源Pad均匀分布不集中在一侧或一个角落每组高速信号区域的近端和远端各放一个地Pad模拟电源Pad和数字电源Pad之间隔开不要相邻大电流输出IO比如驱动LED、驱动大电容负载附近必须有额外的VSS Pad电源Pad的位置最好对齐core内部电源ring的供电入口缩短供电路径规则本身不复杂难的是在每个项目都坚持执行。很多时候因为封装图引脚顺序固定一两个电源Pad的位置就被“挤”到了不合适的地方。遇到这种情况我宁可调整封装图里引脚顺序也不要让电源Pad迁就一个看似无所谓的位置。5. 实测踩坑记录三个翻车现场与排查思路下面是我实际经历过的三个IO Ring问题。每个都不是特别困难的技术难题但都在关键节点上耗费了大量人力值得写出来给大家当参考。5.1 坑一坐标原点偏差让Bonding图整体错位现象是封装厂反馈GDS里Pad的坐标和Bonding Diagram对不上整体偏移了大约25um。如果按封装厂给出的坐标去打线部分bond wire会压在相邻Pad边缘有短路风险。项目已经快走到提交连封装厂的FAE都开始催。排查链路是这样的先拿封装厂Excel里的Ball List和GDS坐标做差发现所有Pad的XY偏移量并不是常数有的边差25um有的边差50um。进一步开后发现我们团队在导出坐标时把原点设成了die中心而封装图用的是左下角原点两个坐标系之间差了半个die尺寸加一部分seal ring宽度。最后解决方式并不复杂写了一个坐标转换脚本把GDS坐标统一到封装原点。但这件事情本来完全可以在最开始用一次checklist对齐就避免。之后我把“坐标原点约定”列进IO Checklist的第一页再没出过类似问题。5.2 坑二差分IO分列Ring两侧模拟版图绕线崩溃那是一个数模混合芯片有两个LVDS输入和一个ADC前端。封装Ball Map里一对LVDS的P端在左边N端被安排到上边两个Pad隔了几十上百个Pad的距离。模拟团队做完版图后回来说从N端Pad到模拟模块的走线必须绕大半个chip绕线途中穿过一整片数字IO bus屏蔽根本做不好。排查链路我们回头查ball map发现最初定义ball顺序的是系统工程师他按板级走线方便来分配引脚没有考虑芯片内部差分对必须相邻。模拟团队当时也没有在floorplan早期介入直到PDK版图出来才发现。最终处理是修改封装图的ball分配把P/N挪到相邻位置板级PCB重新走线。好在还没到PCB投板损失不大但内部返工浪费了三周时间。这件事给我的教训是封装pin assignment和Pad Ring布局必须放到同一个table上来做差分对、敏感模拟信号这些“必须在物理上靠近”的约束要在最早期就明确标出来。5.3 坑三VDDIO Pad全堆在左侧右侧IR drop超标这是一颗相对简单的数字控制芯片IO数量不多总共四十几个。设计者图省事把所有VDDIO Pad都排在左侧右侧全部是信号Pad。因为封装ball map正好也这样排。第一次跑IR drop分析时右侧IO的VDDIO电压掉到了标称值的85%。前端说后级逻辑在高温低电压下直接失效。排查的时候我们截了一段右侧IO Ring的IR map明显看到bus从左侧引到右侧后电压逐步下跌中途没有任何一个vdd pad“补电”。更麻烦的是右侧几个IO单元下面via数量也不足电流密度已经逼近EM limit。那次修改直接动了三处右侧补了两个VDDIO Pad把上下两条边的供电bus加宽再删掉一个不用的信号Pad来腾位置。因为IO数量和封装Ball图是对应的补电源Pad意味着封装引脚也要改又是一轮协调。如果一开始按“电源均匀分布”的规则来排完全不用折腾。5.4 踩坑后的三条口头禅现在每次评审IO Ring我都会说三句话“先对齐坐标再谈摆放。”“该挨着的必须挨着不管外面怎么排。”“电源Pad不均匀IR drop后面一定找你算账。”话虽简单但每句都来自真实返工换来的经验。6. 从Checklist到Signoff流片前IO相关检查的完整闭环6.1 物理层核查DRC、LVS和开窗层IO Ring的物理检查重点在几组间距和层次定义上。Seal Ring与IO cell间距PDK会给定最小间距太近了切割应力可能影响IO电路太远了浪费面积。Pad opening尺寸必须和封装厂给出的bond finger或bump尺寸匹配不能为了省面积画小。钝化层开窗和顶层金属覆盖开窗层必须落在顶层金属有效覆盖范围内否则键合时强度不够。LVS连接关系Power ring和每个IO cell的VDD/VSS引脚必须连接完整filler不能阻断bus。这些检查看着基础但最后跑DRC时最常见的错误往往不是core内部而就是IO Ring上的层次关系和间距。建议在顶层merge后专门分出一份IO Ring区域的DRC单独跑方便定位问题。6.2 电学层核查IR drop、EM和SSO电学层要跑的关键项目有三个IO Ring单独IR drop分析把IO ring的供电域单独提取出来看不要混在core的供电网里。因为IO电流是动态的最好按最差情况下的翻转率来加载电流源。EM检查重点是IO Ring供电bus和Pad下方via数组的电流密度。电流密度超标在可靠性测试中才会爆发流片前必须清零。SSO分析根据最终IO驱动强度和封装寄生参数核对同时翻转的IO数量是否在安全范围内。6.3 封装与SI协同检查IO Ring的最终状态不是给芯片自己看的而是给封装、PCBA系统看的。签核前要输出一份完整的Pad信息表包括Pad名称、坐标、所属电源域信号类型、方向、电平标准驱动强度配置和slew rate配置是否复用、是否连接测试逻辑这份表要和封装厂的bonding netlist做逐项比对。我现在习惯写一个小脚本直接对比两份CSV的Net Name和坐标差值任何不匹配都作为error输出。别小看这一步它救过我至少两次。6.4 我常用的最终确认顺序流片前一周我按这个顺序过IO相关检查阶段检查内容负责角色D-7坐标基准对齐封装图与GDS比对后端/封装D-6IO IP Checklist逐项确认设计/后端D-5IR drop、EM、SSO场景复核后端/信号完整性D-4DRC/LVS专项IO Ring区域单独跑版图D-3Pad信息表输出与bonding网表diff后端/封装D-2全芯片总check确认没有占位/dummy残留全组D-1最终review坐标、电源域、信号名一一复核领导/架构最后再分享一个小习惯tapeout前把所有Pad的Net Name、坐标、IO类型、电源域导成一张CSV和封装团队的bonding list跑一遍diff。别用眼睛对Excel写个十行脚本自动比对就够。这个动作已经至少帮我抓出两次坐标偏移和一次Net Name拼写错误。IO Ring不复杂但正因为不复杂它才最容易在最后一刻翻车。
返回列表