ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

SMIC 130nm工艺PEX寄生参数提取实战指南:从配置到验证

SMIC 130nm工艺PEX寄生参数提取实战指南:从配置到验证 1. 为什么130nm节点的PEX值得单独拿出来讲很多人觉得PEX就是个点按钮等结果的活尤其是到了先进工艺节点大家注意力全在FinFET和3D IC上130nm这种老古董似乎没什么好聊的。但实际情况恰恰相反——SMIC 130nm混合信号工艺smic13mmf系列至今仍然是国内大量模拟IC、电源管理芯片、MCU和传感器接口芯片的主力工艺平台。我接触过的项目中至少有一半以上的量产模拟芯片跑在130nm节点上而PEX做得好不好直接决定了流片回来的芯片是一次点亮还是反复迭代。问题的关键在于130nm是一个承上启下的节点。它不像180nm那样寄生参数相对温和、PEX精度要求没那么苛刻也不像65nm以下那样有成熟的RC extraction deck和标准化的PEX流程。130nm的金属层数多1P6M意味着1层多晶硅加6层金属、介质厚度变化大、金属密度对CMP的影响开始显著这些因素叠加起来让PEX的配置变得非常讲究。你用默认设置跑出来的结果和实际硅片上的表现可能差出20%以上的延迟误差对于高速接口或者高精度ADC这类对时序敏感的设计来说这个误差足以让整个设计崩掉。这篇文章面向的是正在用或即将用SMIC 130nm工艺做设计的工程师尤其是那些第一次接触smic13mmf_1233_1P6M这个工艺库、对Cadence Virtuoso环境下的PEX流程还不够熟悉的朋友。我会从工艺库的结构讲起把PEX的完整流程拆开揉碎包括规则文件的选择、寄生提取的配置、结果验证的方法以及我在实际项目中踩过的那些坑。不管你是刚入行的新手还是做了几年但一直用默认设置蒙混过关的老手相信都能从中找到有用的东西。2. smic13mmf_1233_1P6M工艺库的目录结构与关键文件2.1 工艺库命名规则解读先把这个工艺库的名字拆开看。smic13mmf是SMIC 130nm混合信号工艺的统称后面的1233通常代表工艺版本号或者特定的器件选项组合1P6M则明确告诉你这是1层多晶硅加6层金属的配置。别小看这个命名它直接决定了你后面PEX要选哪套规则文件——1P6M和1P5M的金属层堆叠不同寄生电容的计算模型也不一样选错了规则文件提取出来的参数就是错的。在实际项目目录里这个工艺库通常挂在PDK的路径下结构大致是这样的顶层目录下有techfile、assura或calibre规则目录、model目录、pcell目录等。其中和PEX直接相关的是calibre目录下的pex子目录里面存放着.rules文件和相关的层映射文件。我见过不少新手拿到PDK后直接翻到calibre目录就开始跑LVS结果PEX的时候找不到规则文件又回头来翻目录浪费不少时间。建议一开始就把目录结构摸清楚。2.2 PEX规则文件的核心组成在smic13mmf_1233_1P6M的Calibre PEX规则目录下通常会有几个关键文件主规则文件一般叫pex.rules或者带工艺角后缀的变体、层映射文件layer.map、以及可选的温度/电压角配置文件。主规则文件里定义了提取模式RC、C、RCC等、频率相关的参数、以及各个金属层和通孔的寄生模型参数。这里有个容易忽略的点SMIC 130nm的PEX规则文件通常提供多个版本对应不同的提取精度和运行时间。比如有的规则文件是fast模式只提取总电容不提取耦合电容有的是full模式提取完整的RC网络包括耦合效应。选哪个取决于你的设计类型——如果是纯数字逻辑fast模式可能够用如果是模拟电路尤其是高精度模拟必须用full模式。我在一个电源管理芯片项目里一开始为了省时间用了fast模式结果后仿真的环路稳定性怎么调都不对换成full模式后才发现是两条相邻走线之间的耦合电容导致了相位裕度下降。2.3 工艺文件与PEX的关联Virtuoso里的工艺文件techfile和PEX规则文件之间需要保持一致。具体来说techfile里定义的金属层号、通孔类型、介质厚度等参数必须和PEX规则文件里的定义匹配。如果PDK更新了techfile但PEX规则文件没同步更新提取出来的结果可能完全不对。我建议在开始PEX之前先确认一下PDK的版本号然后检查calibre/pex目录下的规则文件日期是否和PDK发布说明一致。这个检查花不了两分钟但能避免后面几个小时的无效调试。3. 在Virtuoso中搭建PEX环境的完整步骤3.1 前置检查LVS必须先过PEX的前提是LVS干净。我见过太多人LVS还有几个未匹配的器件就急着跑PEX结果提取出来的网表和原理图对不上后仿真根本没法做。所以在启动PEX之前务必确认LVS报告里没有unmatched或者mismatch的条目。具体操作是在Virtuoso的Layout界面打开Calibre LVS跑完确认报告确保所有器件和网络都正确匹配。如果LVS有问题先解决LVS。常见的问题包括器件识别错误比如把多个finger的MOS识别成了单个、电源地网络短路、衬底接触缺失等。这些问题不解决PEX就是白跑。3.2 启动PEX从Calibre界面到规则配置在Virtuoso中启动PEX通常有两种方式一种是通过Calibre的图形界面calibre -gui另一种是直接在终端用命令行跑。图形界面适合新手因为可以直观地看到每一步的配置命令行适合批量处理和脚本化。我这里以图形界面为主来讲解因为大部分工程师还是习惯用GUI。打开Calibre PEX界面后需要配置几个关键项输入文件LVS输出的网表和layout的GDS、规则文件指向smic13mmf_1233_1P6M的pex.rules、输出格式通常选SPICE或SPECTRE、以及提取选项RC还是C-only。这里特别注意输出格式要和你的仿真器匹配——如果你用Spectre做后仿就选SPECTRE格式如果用HSPICE就选SPICE格式。选错了后面仿真器读不进去。3.3 提取模式的选择RC、C、RCC到底选哪个这是PEX配置里最核心的一个决策。简单来说C-only模式只提取电容忽略电阻。适用于低频、对时序不敏感的设计或者作为快速评估用。RC模式提取电阻和电容但不提取耦合电容。适用于大多数数字电路和部分模拟电路。RCC模式提取电阻、电容和耦合电容。这是最完整的模式适用于高速、高精度模拟和混合信号设计。对于SMIC 130nm的模拟设计我的经验是只要你的设计里有任何对时序或者匹配敏感的部分直接上RCC模式。虽然运行时间会长一些可能多出30%到50%但结果的可信度完全不是一个级别。我曾经在一个ADC项目里对比过RC和RCC的结果RC模式下INL仿真结果是0.5LSBRCC模式下变成了1.2LSB——差距就是这么明显。3.4 温度角和电压角的设置PEX提取时的温度和电压条件需要和你的仿真条件一致。SMIC 130nm的规则文件通常支持多个温度角比如-40°C、25°C、125°C不同温度下金属电阻和介质电容都会变化。如果你在PEX时选了25°C但后仿真跑的是125°C那结果肯定对不上。我的做法是在PEX阶段就提取多个温度角的结果生成多个网表后仿真时根据实际工作条件选择对应的网表。虽然这样会增加提取时间但避免了反复重跑PEX的麻烦。具体操作是在规则文件里指定温度列表或者在Calibre界面里勾选多个温度选项。4. PEX规则文件的关键参数与调优策略4.1 金属层寄生模型的精度控制SMIC 130nm的PEX规则文件里每个金属层都有对应的寄生参数模型。这些模型通常基于foundry的测试结构数据拟合而来精度在±10%以内。但规则文件里有一些参数可以调整提取的精度比如ACCURACY参数、MIN_RES和MIN_CAP阈值等。MIN_RES和MIN_CAP这两个阈值决定了多小的电阻和电容会被忽略。设得太大会漏掉重要的寄生参数设得太小会让网表变得巨大无比、仿真跑不动。我的经验值是对于130nm工艺MIN_RES设在0.1欧姆左右MIN_CAP设在0.01fF左右比较合适。当然具体值还要看你的设计规模和仿真资源。4.2 耦合电容的提取与简化RCC模式下耦合电容的提取是最耗时的部分。规则文件里通常有选项控制耦合电容的提取范围——比如只提取相邻金属层之间的耦合还是提取所有层之间的耦合。对于6层金属的工艺如果全提网表会非常庞大。一个实用的策略是先全提一遍看看哪些耦合电容对电路性能影响最大然后在后续迭代中适当简化那些影响小的耦合。Calibre PEX支持输出耦合电容的详细报告你可以根据报告来决策。我在一个高速SerDes项目里就是这么做的最终把网表大小压缩了40%仿真速度提升了一倍多而关键路径的延迟误差控制在2%以内。4.3 通孔电阻的处理130nm工艺的通孔电阻不能忽略。规则文件里通常会给每个通孔一个固定的电阻值或者根据通孔的数量和尺寸来计算。对于大电流路径比如电源和地通孔电阻的累积效应可能很显著。我建议在PEX之后专门检查一下电源和地网络上的通孔电阻如果压降超过设计裕度的10%就需要考虑增加通孔数量或者调整布局。5. PEX结果验证与后仿真衔接5.1 网表检查从SPICE文件到仿真器PEX跑完之后你会得到一个SPICE或者SPECTRE格式的网表文件。这个文件通常很大直接打开看是不现实的。我通常用几个方法来快速检查网表的质量一是看文件大小和节点数如果节点数比预期少很多可能是提取模式选错了二是用仿真器跑一个简单的DC分析看看静态工作点是否和原理图仿真一致三是检查关键节点的寄生电容值和手工估算的对比一下。5.2 后仿真设置如何正确调用PEX网表在Virtuoso里做后仿真需要把PEX生成的网表替换掉原理图的网表。具体操作是在ADE里设置Simulation - Netlist - Recreate然后指定PEX网表的路径。或者用config视图来切换。这里有个细节PEX网表里的器件命名可能和原理图不一样需要确保仿真器的netlist选项正确映射了这些名称。5.3 前仿后仿对比定位差异来源后仿结果和前仿有差异是正常的但如果差异超过预期就需要定位原因。常见的差异来源包括寄生电容导致的延迟增加、耦合电容导致的串扰、通孔电阻导致的压降、以及提取模式选择不当导致的误差。我的做法是先对比关键节点的波形看差异出现在哪个时间点或者哪个信号上然后反推到具体的寄生参数。6. 实战中踩过的坑与排查链路6.1 坑一规则文件版本不匹配导致提取结果异常有一次我拿到一个新的PDK版本直接用了旧的PEX规则文件结果提取出来的电容值比预期大了将近一倍。排查过程是这样的先检查了LVS确认没问题然后检查了PEX的日志文件发现里面有一堆warning说某些层找不到对应的模型最后对比了新旧PDK的techfile发现金属层的厚度参数变了旧规则文件里的电容模型还是基于旧厚度算的。换成新规则文件后问题解决。这个坑的教训是每次更新PDK务必同步更新PEX规则文件并且跑一个简单的测试结构来验证提取结果是否合理。6.2 坑二耦合电容提取导致的网表爆炸在一个大规模混合信号芯片里我一开始用了RCC模式全提耦合电容结果生成的网表有几十GB仿真器直接内存溢出。后来调整了策略对数字部分用RC模式对模拟部分用RCC模式并且设置了耦合电容的提取阈值只提取大于0.1fF的耦合。这样网表大小降到了可接受的范围内仿真也能跑起来了。6.3 坑三温度角设置错误导致后仿结果偏差有一次后仿真的结果和测试芯片的实测数据差了将近30%排查了很久才发现是PEX提取时用的温度角是25°C但测试是在85°C下进行的。重新提取了85°C的网表后仿真和实测的偏差缩小到了5%以内。这个坑提醒我PEX的温度角一定要和实际工作条件一致不能想当然。6.4 坑四通孔电阻被忽略导致电源网络压降过大在一个大电流的电源管理芯片里后仿真发现电源网络的压降比预期大了200mV。检查PEX网表发现规则文件里通孔电阻的默认值是0.5欧姆但实际工艺下大尺寸通孔的电阻应该更小。后来在规则文件里调整了通孔电阻的计算方式问题解决。这个坑说明不要盲目相信规则文件的默认值关键参数要自己验证。7. 提高PEX效率的实用技巧7.1 分块提取策略对于大规模设计一次性提取整个芯片的寄生参数既耗时又耗资源。我的做法是分块提取把芯片分成几个功能模块分别提取PEX然后在顶层做联合仿真。这样每个模块的提取时间短而且可以并行处理。Calibre PEX支持通过-block选项来实现分块提取。7.2 利用Calibre的增量提取功能如果你的设计只是局部修改不需要每次都全提。Calibre PEX支持增量提取incremental extraction只重新提取修改过的部分。这个功能在迭代阶段非常有用能把提取时间从几小时缩短到几分钟。具体用法是在规则文件里启用INCREMENTAL选项并指定上次提取的结果作为参考。7.3 脚本化与自动化如果你需要频繁跑PEX建议把整个流程脚本化。用Shell或者Python写一个脚本自动完成LVS检查、PEX提取、网表格式转换、后仿真设置等步骤。这样不仅节省时间还能避免手动操作带来的错误。我在项目里维护了一套这样的脚本新版本一出来跑一个命令就能完成全部PEX流程。8. 一些个人体会PEX这个环节说难不难说简单也不简单。工具本身的操作可能几天就能学会但真正做好PEX需要对工艺有深入的理解对设计有清晰的判断还要有足够的耐心去调试和验证。我在刚开始做130nm设计的时候也觉得PEX就是个流程化的东西直到有一次流片回来发现芯片的时序完全不对才意识到PEX配置的重要性。现在我的习惯是每个新项目开始的时候先花半天时间把PEX的规则文件和配置仔细过一遍确认提取模式、温度角、阈值参数都设置正确。然后在设计过程中定期跑PEX做后仿真而不是等到tapeout前才临时抱佛脚。这样虽然前期多花了一些时间但后期省下的调试时间远远超过这个投入。另外SMIC 130nm的PEX规则文件虽然提供了默认配置但默认配置不一定适合你的设计。花点时间研究规则文件里的参数根据你的设计特点做调整往往能显著提高提取结果的准确性。这个投入是值得的。
返回列表