去年做一款NPU加速芯片的时候样片回来后出现了一个让人头皮发麻的现象同一片wafer上A芯片在1.1 GHz跑得稳如老狗B芯片死活只能到900 MHzC芯片更离谱低温柜里一开机就死。开发组一开始以为是layout问题查了半天最后才发现根子全在工艺角Process Corner上。这篇文章就把工艺角这件事彻底讲透它从哪来、怎么影响电路性能、设计阶段和signoff阶段怎么处理最后放几个我实际排查过的翻车案例。想看明白为什么同一颗设计有的能跑高频有的不能这个问题的朋友这篇文章就是给你准备的。1. 工艺角到底是什么从晶圆制造的随机扰动说起1.1 同一块wafer上为什么有快片有慢片很多人第一次接触工艺角会有个误区以为foundry做出来的芯片性能都一样TT corner就是所有芯片的真实性能。实际上CMOS制造流程里的偏差多到数不过来光刻环节的关键尺寸CD会有±几纳米的抖动离子注入的剂量和能量有波动栅氧化层厚度tox没那么均匀退火温度在不同批次之间也有差异。这些偏差最终都会反映在器件的电学参数上最直观的就是阈值电压Vth变高或变低、饱和电流Idsat变大或变小、漏电水平出现成倍差异。打个比方你在同一个烤箱里烤两盘饼干同一盘里每块饼干的受热都不同两盘之间差异更大。芯片制造是成百上千道工序的累积每一道工序都有微小偏差叠加起来的结果就是同一片wafer上不同die的速度可能相差20%甚至更多而且NMOS和PMOS受到的影响方向还不一定相同。foundry为了让你在设计阶段就能评估这些偏差带来的影响就把工艺偏差包络归纳成几个典型的标准工艺角每个corner对应一组SPICE模型参数。你的设计要是能在这些corner下都正常工作那就能覆盖绝大多数真实芯片的体质范围。记住这句话工艺角不是靠玄学猜出来的它是foundry根据产线实测数据统计出来的器件参数包络。1.2 认识5类Standard CornerTT、FF、SS、FS、SF工艺角总共分五种前两个字母分别表示NMOS和PMOS的快慢。我整理了一张表方便你直观对照。Corner名称NMOS速度PMOS速度典型场景说明TT典型典型大多数芯片的典型性能仿真和功耗评估的基准FF快快晶体管驱动能力强速度最快但漏电也最大SS慢慢晶体管驱动能力弱速度最慢最容易出现setup违例FS快慢下拉强、上拉弱输出波形不对称模拟电路最怕这个SF慢快上拉强、下拉弱与FS正好相反同样会导致波形畸变TT、FF、SS这三种可以算是同向偏差NMOS和PMOS一起快或者一起慢数字逻辑分析时最关注的就是这三个。FS和SF属于交叉偏差两种管子一快一慢。数字电路里单纯看速度也许是大的方向主导但一旦遇到传输门、锁存器、SRAM bitcell这类需要NMOS和PMOS配合工作的结构FS和SF的影响就会冒出来。模拟电路和存储电路设计对这两个corner尤其敏感后面我会细讲。2. 工艺角对电路性能的四方面真实影响2.1 时序与速度SS、FF如何决定你能跑多高频率数字电路能不能在目标频率下工作本质上是时序是否收敛的问题。SS corner下NMOS和PMOS都变慢cell的上升沿和下降沿延迟变大数据从寄存器A传到寄存器B的时间变长setup时间余量就会缩小。如果缩到负数芯片在这个corner下就跑不到目标频率表现出来就是某些芯片体质差频率上不去。这就是你看到同一批芯片有的能跑1.1 GHz有的只能跑900 MHz的根本原因之一。反过来FF corner下晶体管变得太快也有麻烦。数据信号到达时间的偏差是由路径的物理长度和器件延迟共同决定的当器件延迟变小信号在某些路径上飙车可能会破坏保持时间hold time。比如时钟到达寄存器的时刻被skew推后了一些数据却已经在这个时刻之前就翻到下一级了寄存器采到的就是下一个新数据数据完整性和同步就会崩坏。很多初学者以为FF corner一定是最好的其实对于hold分析来说FF是最危险的corner必须重点检查。在数字IC后端做STA静态时序分析时这个是基本认知setup重点盯SS cornerhold重点盯FF corner。但注意这只是工艺维度实际还要叠加电压和温度构成我们常说的PVT分析。不同工艺节点温度的影响方向甚至可能相反有的先进工艺下低温反而让器件变慢所以setup也可能在低温corner下最差。具体哪个组合最差一定要看foundry提供的.lib文件里的延迟数据不要凭经验拍脑袋。2.2 功耗与热FF corner下漏电翻几倍怎么算FF工艺角下Vth更低驱动电流更大看起来是好事但亚阈值漏电会随着Vth降低而指数级上升。我实际做过一个对比一颗在TT corner下漏电约100 mW的芯片到了FF corner漏电直接飙到400到500 mW。这个量级差异不是靠调调电压能解决的因为你总得给FF芯片留够供电裕量。量化算一笔账可以帮助建立感觉。假设FF corner相对TT的Vth降低了大约100 mV器件的亚阈值摆幅S值subthreshold swing典型在70 mV/dec附近那么漏电大约会增加到原来的e^(100/70)≈4.2倍。如果工作温度从25℃升到85℃漏电还会再翻几倍。所以你看datasheet上的对应关系通常很保守因为功耗规格必须能覆盖FF与高温组合这种极端情况。这对芯片设计的影响是全方位的芯片散热方案、封装选型、电源网络PDN设计都要按FF corner的功耗来留余量。特别是NPU这种高算力芯片功耗密度本来就大如果只按TT评估功耗流片回来在FF高温的片子上很可能直接触发过热降频甚至烧毁。我建议每个项目的功耗预算表里至少要有一列是按FF/高温来核算的最大功耗。2.3 模拟链路与NPU实例偏置漂移、MAC阵列、SRAM的实际表现模拟电路对工艺角的态度和数字电路不太一样。数字电路关心快慢模拟电路更关心参数漂移和匹配性。比如电流镜的镜像比例依赖NMOS和PMOS的匹配程度在FS和SF corner下上下管电流不匹配会导致偏置点偏移放大器的增益和带宽都会变化。带隙基准的输出电压会随corner偏移如果偏移超出规格整个芯片的参考电压系统就废了。举一个NPU芯片里的实际场景NPU核心是大量的MAC乘法累加阵列这些MAC单元的路径非常长而且每个周期都要完成大量并行计算。在SS corner下MAC阵列的关键路径延迟变大如果设计没有留足够的setup余量芯片就无法在标称频率下完成要求的TOPS算力。我见过一个项目SS corner下MAC阵列频率只能提到标称的85%最后靠优化关键路径上的加法器进位链结构才收回来。还有SRAMNPU里的权重和激活都依赖SRAM缓存而SRAM bitcell的稳定性高度依赖上拉管和下拉管的强度比。在FS或SF corner下下拉和上拉的强度不对称静态噪声容限会恶化写操作和读操作的冗余度变小严重时会造成误读误写。设计SRAM compiler和定制存储器的时候FS/SF的仿真验证绝不能省否则小概率的存储错误会直接毁掉NPU计算的正确性。3. 设计与Signoff阶段正确使用Corner的实操指南3.1 Multi-Corner Signoffsetup/hold应该看哪些corner组合一个成熟的设计流程一定会在signoff阶段跑多个corner也就是所谓的PVT corner组合。这里说的corner是广义的除了工艺角Process本身还要叠加电压Voltage和温度Temperature。只跑单一典型corner就签核的做法在旧工艺低性能芯片上可能勉强够用现在的先进工艺下基本等于裸奔。我建议至少按下面这个表来规划你的Multi-Corner分析维度分析目标工艺角电压温度典型场景Setup最差SS低电压高温旧工艺/低温先进工艺视库而定最慢器件最差电压最差温度Hold最差FF高电压低温最快器件最高电压低温最快功耗最大FF高电压高温漏电最大场景功能典型TT典型电压25℃日常功能验证与基准性能评估模拟匹配FS/SF典型电压典型温度偏置漂移、存储稳定性、波形对称性具体到你的芯片项目到底跑哪些corner组合先看foundry提供的签核推荐表signoff recommendation再结合自己的功耗、性能和可靠性目标做加减。不要懒宁可多跑几个也不能少。3.2 操作实录在STA流程中配置多Corner做签核以常见的PT/Tempus流程为例你需要把每个corner对应的.lib文件、SPEF文件、SDC约束都组织好。下面这个TCL脚本是示意性质的命令名称在不同版本工具里略有差异但思路是通用的。# 定义库集合 create_library_set -name ss_lib \ -timing /ref/libs/ss_0p90v_125c.lib \ -si /ref/libs/ss_0p90v_125c.cdb create_library_set -name ff_lib \ -timing /ref/libs/ff_0p95v_neg40c.lib \ -si /ref/libs/ff_0p95v_neg40c.cdb create_library_set -name tt_lib \ -timing /ref/libs/tt_0p90v_25c.lib \ -si /ref/libs/tt_0p90v_25c.cdb # 创建延时corner create_delay_corner -name setup_corner -library_set ss_lib create_delay_corner -name hold_corner -library_set ff_lib create_delay_corner -name typical_corner -library_set tt_lib # 创建分析视图并绑定 create_analysis_view -name ss_view -delay_corner setup_corner create_analysis_view -name ff_view -delay_corner hold_corner create_analysis_view -name tt_view -delay_corner typical_corner # 指定signoff模式setup用ss_viewhold用ff_view set_analysis_view -setup {ss_view} -hold {ff_view}设置完之后工具会在sesssetup分析时使用SS库的延迟数据在hold分析时使用FF库的延迟数据同时报出在各个corner下的违例路径你可以根据违例类型快速定位是setup问题还是hold问题。过程中还需要提取寄生参数SPEF每个corner都要提取对应的RC寄生因为连线电阻在不同电压温度下也有变化。做signoff时注意把片上变异OCV或路径基于变异PBA也打开不然会过度乐观。3.3 设计思路从Corner分析到性能分bin与良率平衡很多人不知道工艺角分析和量产后的良率策略是绑在一起的。一颗芯片流片回来后有快有慢那测试部门就可以根据芯片实际能达到的最高频率和漏电水平给芯片分类这就是性能分binbinning。快的FF芯片设置成高主频的型号卖高端市场慢的SS芯片降频降级卖中低端这样能最大化利用整片wafer整体收益不浪费。前提是你的设计必须能覆盖整个corner范围。假如你只按TT corner做设计没关心SS和FF可能出现这种情况快芯片因为hold违例直接废掉一批慢芯片因为setup问题跑不到降频后的最低要求又废掉一批良率哗啦一下掉到50%以下整个项目的BOM成本就失控了。做Corner分析本质上是在设计阶段用较低的成本换量产阶段的确定性这笔账非常值得。我曾经参与过一个项目最开始signoff只跑了TT、SS、FF三个corner良率大概88%。后来发现失效芯片集中在高频段而且和晶圆边缘位置相关进一步分析定位到是SF corner下SRAM写余量不足。补做SF/FS分析后又优化了bitcell的上拉管尺寸良率提到97%以上。做Corner验证不是流程负担而是一道保险丝。4. 常见问题与排查技巧实录4.1 五个高频问题逐个拆解第一个最经典的问题所有corner仿真都pass了流片回来还是有人批量跑不到目标频率。排查思路不要一上来就怀疑fabrication先看时序分析有没有遗漏corner组合例如低电压高温和大电压低温的组合。电源网络的IR drop也要检查如果局部电压比标称低5%延迟增加10%就是家常便饭。我遇过一次奇葩情况片上某处时钟树密度太高导致局部发热严重片子跑起来后温度升高时序变差频率上不去最后靠调整时钟buffer分布才解决。第二个问题是setup违例在SS corner下怎么都修不完。别急着堆buffer先看关键路径的logical depth是不是太长。我一般先降逻辑级数用更优的布尔优化折叠逻辑或者调整综合时对这条路径的权重。再不行就pipeline切开把超长路径拆成两拍。实在不行再考虑换低阈值cellLVT但要注意LVT的漏电代价很大别全线替换只替换关键路径上的少数单元。第三个问题是hold违例只在FF corner低温下出现。这种违例通常数量很少但非常顽固。常规做法是插入delay buffer或者同时拉长物理距离增加连线延迟。注意delay buffer不要加在关键setup路径上否则你刚修完holdsetup又崩了。更稳的方法是在时钟到达寄存器的路径上做有用的skew调整让数据保持窗口移动但这个容易引入新的收敛难度。第四个问题是很多数字工程师问FS和SF corner到底要不要每个项目都看。我从模拟电路和存储电路的角度强烈建议看尤其是有定制SRAM bitcell、存内计算电路、模拟前端、高速接口的项目FS/SF的偏置漂移和匹配问题可能会带来你意想不到的失效。如果是纯标准单元搭的简单数字逻辑FS/SF影响不大但也建议在项目hardening阶段跑一次确认。第五个问题是功耗在FF corner下超标了怎么提前避免。早期功耗评估不要只用TT算要把FF/高温组合的漏电预测算进去。如果超标第一优先是选择高阈值HVTcell比例降低漏电基线其次是电源门控power gating设计关掉空闲模块的电源域再配合动态电压频率调整DVFS。这些方案要在设计早期确定架构方向等到后端阶段再想就晚了。4.2 避坑速查表为了方便你排查项目问题时快速对照我把上面这些经验的要点整理成一个速查表。坑点症状常见根因处置建议只跑TT和SS就签核流片后部分片子hold失稳漏了FF corner hold分析signoff必须加FF低温高电压重点查功耗只按TT评估FF高温下片子烫得不敢摸漏电估计不足功耗预算表加FF/高温列模拟电路只查TT放大器增益批量漂移偏置点在FS/SF下偏移所有偏置和基准电路必须跑FS/SFsetup修不完大量path在SS下超时逻辑级数过高优化逻辑深度、流水线拆分、谨慎用LVTSRAM误读误写频率提高后偶发数据错误FS/SF下bitcell稳定性不足定制存储必须完整仿真FS/SF板上测到最高频率不一致同一wafer芯片差异大工艺角分布正常按频率做分bin策略设计时覆盖Corner范围我自己在实际项目中踩过最多次的坑其实是那些看起来概率很小的交叉corner问题。现代工艺的偏差包络比你想象的更宽一颗芯片在实际的电压温度条件下工作落到某个corner区域的概率远不是零。设计阶段多做几次corner全分析后端的优化手段虽然会变复杂但比起流片后昂贵的改版成本这点工作量根本不算什么。最后再分享一个小技巧如果你手头的项目还没有建立完善的corner策略先从官方工艺文档里的signoff推荐组合出发整理出一份适合自己芯片类型的corner列表然后每次流片后把良率数据和corner分析结果做对比发现哪个corner分析没覆盖到失效模式下个版本就补上对应的分析。几个项目迭代下来你就有了一套非常贴合自家产品和工艺平台的corner方法论这比网上任何模板都管用。
阅读完成 · 觉得有帮助?