ARTICLE DETAIL

资讯详情

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

芯片设计工艺角仿真指南:从TT/FF/SS到PVT验证实战

芯片设计工艺角仿真指南:从TT/FF/SS到PVT验证实战 1. 从一次流片翻车说起为什么工艺角不是纸上谈兵刚入行那会儿我对工艺角Process Corner的理解就停留在“TT是典型、FF是快、SS是慢”这种口诀层面。直到有一次参与一个电源管理芯片的项目流片回来测试发现常温下工作正常的模块在低温环境下启动时间比仿真慢了将近三倍导致整个上电时序紊乱。复盘的时候才发现问题出在我们只跑了TT和FF的仿真SS corner下的低温慢速特性压根没覆盖到。那次教训让我明白工艺角不是foundry手册里随便翻翻的表格而是决定芯片能不能量产、能不能在客户手里稳定工作的生死线。这篇文章就是写给那些刚接触芯片设计、被TT/FF/SS这些缩写搞得一头雾水的朋友。我不会堆砌一堆公式和模型参数而是从“为什么会有工艺角”这个根子上讲起把它的物理来源、命名逻辑、仿真方法、以及在真实项目里怎么用一层层拆开。看完之后你至少能做到三件事第一看到TT/FF/SS不再发懵知道它们分别代表什么第二理解为什么同一个电路在不同corner下表现差异巨大第三知道在项目里怎么规划corner仿真避免我当年踩过的坑。芯片设计这个行当说到底是在跟“不确定性”打交道。你画出来的版图交给晶圆厂生产出来的芯片每一颗都不可能完全一样。掺杂浓度、氧化层厚度、光刻线宽这些工艺参数在制造过程中都会有波动。工艺角就是用来描述这些波动范围的极端情况。你设计的电路必须在所有这些极端情况下都能正常工作否则量产良率就是一场灾难。所以搞懂工艺角是每一个芯片设计工程师从入门到独立负责模块的必修课。2. 工艺角背后的物理世界MOS管参数为什么会漂移2.1 从晶圆厂的“不完美”说起要理解工艺角得先接受一个事实晶圆厂的生产线不是理想化的数学公式。拿MOS管来说它的核心参数是阈值电压Vth和迁移率μ。Vth决定了管子什么时候开启μ决定了开启后电流能跑多快。这两个参数在制造过程中会受到几十道工序的影响。离子注入是决定Vth的关键步骤。注入的剂量和能量如果有偏差Vth就会偏移。氧化层生长过程中厚度的均匀性直接影响栅极电容进而影响驱动电流。光刻环节线宽的CDCritical Dimension偏差会改变沟道长度和宽度同样影响电流能力。这些偏差不是随机分布的它们有系统性成分也有随机成分。系统性偏差可能来自设备状态、批次差异随机偏差则来自原子级别的统计波动。Foundry在建立工艺模型的时候会把这些偏差综合起来定义出几个极端组合。所谓“快”的管子就是Vth偏低、迁移率偏高、氧化层偏薄导致同样栅压下电流更大、开关速度更快。“慢”的管子则相反。TT就是所有这些参数都处于典型值的情况。但实际生产出来的芯片没有一颗是完完全全的TT它们分布在TT周围的某个范围内。工艺角就是把这个范围的两个极端快端和慢端以及它们的组合用模型卡的形式固定下来供设计者仿真验证。2.2 温度与电压工艺角的两个“帮凶”光有工艺偏差还不够芯片的工作环境同样会加剧参数漂移。温度对MOS管的影响非常直接温度升高晶格散射增强迁移率下降所以电流会减小但同时Vth会随温度升高而降低这又会让电流增大。这两个效应相互竞争在不同工艺节点和偏置条件下谁占主导并不一定。一般来说在先进工艺里迁移率下降的影响更大所以高温下电路通常更慢。电压的影响更直观。电源电压降低过驱动电压Vov Vgs - Vth减小电流按平方律下降门延迟增加。对于一个标称1.2V的工艺如果电压掉到1.08V-10%延迟可能增加20%以上。所以完整的工艺角仿真从来不是只看工艺本身而是要把工艺、电压、温度三者组合起来。这就是PVTProcess-Voltage-Temperature的概念。Foundry提供的模型卡里通常已经包含了温度范围设计者需要自己决定在哪些电压和温度点进行组合仿真。一个常见的做法是在慢速工艺角下同时施加低电压和高温这叫“最坏情况”在快速工艺角下施加高电压和低温这叫“最好情况”。但“最好情况”未必真的最好比如某些动态电路在太快的时候可能出现保持时间不足或者过冲这也是需要验证的。2.3 为什么先进工艺下工艺角更“难搞”在0.18μm及以上的工艺节点工艺角的影响相对温和TT和SS之间的延迟差异可能在30%到50%左右。但到了28nm、16nm甚至更先进的节点这个差异会急剧拉大。原因有几个一是器件尺寸缩小后随机掺杂波动RDF的影响变得显著Vth的分布展宽二是工作电压降低过驱动电压很小Vth的微小变化会导致电流的巨大相对变化三是寄生电容和电阻在总延迟中的占比越来越高互连线的工艺偏差也开始主导性能。这就意味着在先进工艺下如果你只跑TT仿真就签核那基本等于在赌博。而且先进工艺的corner数量也更多除了传统的TT/FF/SS还有SF、FS这类跨类型的corner以及针对特定器件如IO管、SRAM管的独立corner。搞不清楚这些仿真覆盖率就是个大问题。3. 五类基础工艺角逐个拆解TT、FF、SS、SF、FS到底差在哪3.1 TT不是“正常”而是“标称”TT的全称是Typical-Typical第一个Typical指NMOS第二个指PMOS。它代表NMOS和PMOS都处于标称的典型值。很多新手会误以为TT就是“正常情况”实际芯片都会工作在这个状态。这个理解有偏差。TT只是foundry给出的一个参考点用来做初始设计和功能验证。真实芯片的参数是围绕TT分布的可能偏快也可能偏慢。TT仿真的意义在于如果你的电路在TT下都工作不了那后面的事就不用谈了。但它绝对不能作为签核的唯一依据。在TT下你主要关注的是功能正确性、功耗的典型值、以及一些对速度不敏感的性能指标。比如一个LDO的静态电流、一个基准源的输出电压这些在TT下应该符合设计目标。但像建立时间、保持时间、振荡频率这些对速度敏感的参数必须看其他corner。3.2 FF与SS速度的两个极端FF是Fast-FastNMOS快、PMOS也快。这通常对应Vth偏低、迁移率偏高的情况。SS是Slow-SlowNMOS慢、PMOS也慢对应Vth偏高、迁移率偏低。这两个corner是数字电路时序验证的主力。在FF下电路延迟最小你可能遇到的是保持时间违例Hold Violation因为数据跑得太快在时钟有效沿之前就到达了导致旧数据被冲掉。同时FF下动态功耗会偏大因为电流大、翻转快。在SS下电路延迟最大建立时间违例Setup Violation是主要风险因为数据跑得太慢在时钟沿到来之前还没稳定。SS下如果电压再低一点、温度再高一点延迟会进一步恶化。对于模拟电路FF和SS的影响同样关键。比如一个带隙基准源在FF下可能启动过快导致过冲在SS下可能启动困难甚至无法启动。一个振荡器在FF下频率偏高在SS下频率偏低如果超出规格范围就需要调整设计。3.3 SF与FS容易被忽视的“偏科生”SF是Slow-FastNMOS慢、PMOS快。FS是Fast-SlowNMOS快、PMOS慢。这两个corner在早期工艺节点里不太受重视因为NMOS和PMOS的工艺偏差通常有一定的相关性同时快或同时慢的概率更大。但在先进工艺里NMOS和PMOS的制造步骤差异增大比如应变硅技术对两者的影响不同导致SF和FS出现的概率不可忽略。SF和FS对CMOS电路的影响很微妙。比如一个反相器NMOS慢PMOS快上升沿会变慢下降沿会变快导致输出波形的占空比失真。对于一个差分放大器输入对管的匹配如果因为NMOS和PMOS的偏差而恶化失调电压会增大。对于一个锁存器SF或FS可能导致其翻转阈值偏移影响噪声容限。所以在先进工艺的仿真清单里SF和FS必须包含尤其是对匹配性敏感的模拟模块。3.4 用一张表看清五类corner的核心差异Corner名称NMOS状态PMOS状态主要风险典型应用场景TT典型典型功能验证参考初始设计、功能仿真FF快快保持时间违例、功耗偏大数字时序签核、动态电路SS慢慢建立时间违例、启动失败数字时序签核、低功耗验证SF慢快占空比失真、匹配恶化模拟匹配、时钟电路FS快慢阈值偏移、噪声容限下降模拟匹配、锁存器这张表建议刚入门的朋友存下来每次做corner规划的时候对照看一眼避免漏掉关键组合。但要注意不同foundry对corner的命名可能略有差异有的还会加后缀区分电压和温度比如SS_0P99V_125C这种。看到这种命名不要慌拆开看就是工艺角电压温度。4. 在仿真工具里怎么跑工艺角从模型卡到波形对比4.1 模型卡里藏着什么Foundry交付的PDK里模型卡是核心文件之一。以常见的SPICE模型为例里面会定义多个corner section每个section对应一组参数。比如.SECTION TT .MODEL NMOS NMOS LEVEL54 VTH00.45 U0400 ... .MODEL PMOS PMOS LEVEL54 VTH0-0.42 U0120 ... .ENDS TT .SECTION SS .MODEL NMOS NMOS LEVEL54 VTH00.52 U0360 ... .MODEL PMOS PMOS LEVEL54 VTH0-0.49 U0100 ... .ENDS SS可以看到SS下的Vth0比TT高了约0.07VU0低了约10%。这些数字看起来不大但经过电路放大后延迟差异可能达到40%以上。模型卡里还会包含温度相关的参数比如Vth的温度系数、迁移率的温度指数等。仿真器会根据你设定的温度自动计算当前温度下的参数值。有些PDK还会提供Monte Carlo模型用来做统计仿真。Monte Carlo和corner仿真是互补的corner看极端情况Monte Carlo看分布。一个完整的验证流程通常是先跑corner确保极端情况下没问题再跑Monte Carlo评估良率。4.2 以Spectre为例手把手配置corner仿真假设你用Cadence的Spectre做仿真corner配置通常通过model文件里的section切换来实现。在ADEAnalog Design Environment里你可以设置多个仿真任务每个任务对应一个corner。具体操作路径是在ADE L或ADE XL中打开Setup - Model Libraries。添加PDK的模型文件然后在section栏里填入对应的corner名称比如TT、FF、SS。对于每个corner再设置对应的温度。比如SS对应125℃FF对应-40℃。电压方面可以在Design Variables里定义VDD然后为每个corner设置不同的值。比如TT用1.2VSS用1.08VFF用1.32V。使用ADE XL的Corners Setup功能可以批量生成所有组合一键跑完。如果你用的是HSPICE配置方式类似通过.alter语句或者多个.lib调用实现.lib pdk_model.l TT .temp 25 .alter .lib pdk_model.l SS .temp 125 .alter .lib pdk_model.l FF .temp -40跑完之后重点看几个东西关键节点的电压波形、电流波形、延迟测量值、功耗。建议把不同corner的波形叠在一起对比这样一眼就能看出差异。比如一个时钟缓冲器TT下上升沿是100psSS下变成160psFF下变成70ps这个差异是否在规格内一目了然。4.3 仿真之外的验证手段Corner仿真再全面也只是仿真。真实芯片还要经过硅验证。但硅验证成本高、周期长不可能每个corner都去测。所以通常的做法是在仿真阶段覆盖所有corner在测试阶段选取几个关键corner进行验证。比如在高温和低温下各测几颗芯片看看实际表现和仿真趋势是否一致。如果发现某个corner下仿真和实测偏差很大那就要回头检查模型卡是否准确、版图寄生是否提取完整。另外现在很多团队会做“corner on silicon”的测试结构就是在芯片里嵌入一些工艺监控电路比如环形振荡器、Vth监测管等。流片后测这些结构的频率或电压就能反推当前芯片处于哪个corner附近。这对于分析良率、定位问题非常有帮助。5. 项目实战中的corner规划别等流片回来才后悔5.1 数字模块建立时间和保持时间的双保险数字模块的corner仿真核心就是保证时序收敛。建立时间检查要在SS corner下做而且要用最慢的路径、最差的温度电压组合。保持时间检查要在FF corner下做用最快的路径、最快的温度电压组合。但这里有个细节先进工艺下温度对延迟的影响可能不是单调的。比如在某个电压下温度升高延迟反而减小温度反转效应。所以不能简单地认为“高温就是最慢”必须根据工艺库提供的数据找到真正的最坏情况。我一般会建议团队在项目初期就建立一张corner矩阵表列出所有需要仿真的组合包括工艺角、电压、温度、以及对应的设计变量。然后分配给不同的工程师去跑跑完汇总结果。这张表要随着项目进展不断更新比如发现某个模块对温度特别敏感就增加温度扫描的点数。5.2 模拟模块匹配和裕度的双重考验模拟模块对corner的敏感度和数字不同。数字主要看延迟模拟看的是增益、带宽、失调、噪声、电源抑制比等一堆指标。这些指标在不同corner下的变化趋势可能完全不一样。比如一个运算放大器的增益在SS下可能因为本征增益下降而降低但在FF下可能因为输出阻抗变化而先升后降。所以模拟模块的corner仿真不能只看一个指标要综合评估。对于匹配性要求高的模块比如电流镜、差分对SF和FS corner必须跑。因为这两个corner下NMOS和PMOS的偏差方向相反会导致匹配恶化。我见过一个案例一个带隙基准源在TT下失调只有1mV在SF下变成了8mV直接导致输出电压偏差超出规格。后来通过增大器件面积、优化版图对称性才解决。5.3 低功耗设计中的corner陷阱低功耗设计现在很流行但低功耗和corner结合起来坑特别多。比如你设计了一个电源门控电路在TT下关断漏电很小但在FF下漏电可能翻好几倍。如果你只看了TT的漏电数据量产时功耗指标就可能超标。再比如低电压工作下SS corner的电路可能根本启动不起来因为Vth相对VDD的占比太高了。还有一个容易被忽视的点低功耗模式下的corner仿真。很多团队只跑正常工作模式的corner忘了休眠模式、待机模式也需要验证。休眠模式下电压可能更低温度可能更高这时候电路的保持能力、唤醒时间都是关键。如果不在corner仿真里覆盖等芯片回来发现唤醒失败那就麻烦了。6. 那些年我踩过的corner坑三个真实案例复盘6.1 案例一漏掉FS corner导致LDO振荡有一次做一个LDOTT、FF、SS都跑了相位裕度都在60度以上看起来没问题。结果流片回来在某个批次上发现LDO输出有振荡。排查了很久最后用片上监控电路反推发现那批芯片的PMOS偏慢、NMOS偏快正好落在FS corner附近。而我们恰恰没跑FS。补跑FS仿真后发现在FS下LDO的相位裕度掉到了35度接近不稳定边缘。后来在补偿网络里加了一个小电容把FS下的裕度拉回50度以上问题才解决。这个教训很深刻不要以为SF和FS是小概率事件就不跑。在先进工艺里它们的出现概率可能比你想象的高。而且模拟电路对器件偏差的敏感度往往在跨类型corner下才会暴露。6.2 案例二温度反转导致的时序违例另一个项目是数字为主的SoC。按照常规做法建立时间检查用SS125℃保持时间用FF-40℃。仿真结果都通过了。但芯片回来测试在常温下反而出现了建立时间违例。一开始大家都不信常温怎么会比高温更差后来查工艺库文档才发现这个工艺在标称电压附近存在温度反转效应温度从-40℃升到25℃时延迟是增加的但从25℃升到125℃时延迟反而略有下降。也就是说真正的最慢点不在125℃而在25℃附近。我们恰恰没跑SS25℃这个组合。补跑之后果然发现有几条路径在SS25℃下建立时间不够。后来调整了时钟树增加了裕度。这个案例告诉我们corner规划不能凭经验拍脑袋必须仔细阅读工艺库的温度特性数据找到真正的最坏情况。6.3 案例三Monte Carlo和corner的配合失误还有一个项目corner仿真全过了Monte Carlo也跑了良率评估95%看起来不错。但量产后的测试良率只有80%出头。分析发现问题出在corner和Monte Carlo的覆盖范围不匹配。Corner只覆盖了工艺的极端组合但Monte Carlo的随机分布里有一些参数组合虽然不在corner定义的极端点上但多个参数同时偏移的叠加效应导致电路失效。换句话说corner是超立方体的角而实际失效可能发生在超立方体的面上或内部。解决方法是增加corner的数量比如在TT和SS之间插入一些中间corner或者在Monte Carlo里增加采样点数并对失效样本进行参数敏感性分析。后来我们把Monte Carlo采样从1000次增加到5000次找到了几个关键的参数组合针对性地调整了设计良率才提上去。7. 给新手的corner仿真检查清单与进阶方向7.1 每次流片前必须确认的七件事根据我自己的经验整理了一份corner仿真检查清单每次流片前逐条核对能避免绝大多数低级失误Corner覆盖是否完整TT、FF、SS、SF、FS是否都跑了有没有遗漏foundry推荐的额外corner温度点是否合理是否覆盖了规格书要求的温度范围有没有考虑温度反转效应电压拉偏是否到位是否跑了标称电压的±10%低功耗模式下的电压是否单独验证关键路径是否覆盖数字模块的时序报告里最差路径是否在SS下检查过最快路径是否在FF下检查过模拟指标是否全面增益、带宽、相位裕度、失调、噪声、PSRR是否在所有corner下都达标启动和关断是否验证上电启动、掉电关断、模式切换在极端corner下是否正常Monte Carlo是否配合Corner和Monte Carlo的结果是否一致有没有corner覆盖不到的失效模式这份清单看起来简单但真正每条都做到位需要团队有严格的流程和检查机制。我建议把它做成一个表格每个项目流片前由不同的人交叉检查签字确认。7.2 从corner仿真到统计签核的进阶路径如果你已经熟练掌握了基础corner仿真下一步可以往统计签核方向走。现在先进工艺越来越强调统计化的设计方法比如SSTAStatistical Static Timing Analysis和统计良率分析。这些方法不再把corner当成离散的点而是把工艺参数当成概率分布通过统计模型来计算电路的良率。要往这个方向进阶你需要补充几方面的知识一是统计分布的基本概念比如均值、方差、相关性二是工艺库里的统计模型比如如何从Monte Carlo数据里提取参数分布三是统计时序分析工具的使用比如PrimeTime的SSTA模式或者专门的良率分析工具。这些内容比基础corner仿真复杂得多但也是未来芯片设计的大势所趋。7.3 一个容易被忽视的细节corner命名里的电压温度后缀最后分享一个实操中的小细节。很多foundry的模型卡里corner名称会带电压和温度后缀比如SS_0P99V_125C、FF_1P32V_M40C。这些后缀不是随便写的它们对应的是foundry推荐的极端组合。但你要注意这些组合未必适合你的设计。比如你的芯片工作电压是1.2V±5%那foundry推荐的0.99V可能就太极端了跑出来的结果过于悲观导致过度设计。反过来如果你的芯片要工作在更宽的电压范围那foundry推荐的组合可能还不够。所以正确的做法是先理解foundry推荐组合的物理含义然后根据自己芯片的实际规格调整电压和温度点。不要盲目照搬也不要随意忽略。最好的方式是在项目初期就和foundry的AE沟通确认哪些corner是必须跑的哪些可以根据实际情况调整。搞懂工艺角说到底是为了让设计在真实世界里站得住脚。仿真跑得再漂亮如果corner没覆盖到流片回来照样翻车。希望这篇内容能帮你少走一些弯路至少在下次看到TT/FF/SS的时候心里不再发虚。
返回列表