ARTICLE DETAIL

资讯详情

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

RedHawk-SC电源完整性分析:IR Drop与电迁移EM验证实战指南

RedHawk-SC电源完整性分析:IR Drop与电迁移EM验证实战指南 最近群里聊RedHawk-SC的人明显多了很多做后端物理验证、功耗分析和芯片signoff的朋友都在问这东西到底怎么用。RedHawk-SC是Ansys收购Apache之后推出的下一代芯片电源完整性、可靠性分析平台用来做IR Drop、电迁移EM、功耗和热分析算是目前大规模SoC项目里做功耗签核绕不开的工具之一。这篇文章不打算讲太虚的概念我会从一个使用者角度把RedHawk-SC的定位、环境准备、输入文件、仿真流程、结果分析和踩坑经验完整拆一遍。不管你是刚接触这个工具的新人还是从老版本RedHawk迁移过来的老手应该都能在里面找到可以直接参考的东西。1. RedHawk-SC到底是什么和传统RedHawk有什么区别1.1 从Apache到AnsysRedHawk-SC的出身RedHawk-SC的名字里带着SC全称是SeaScape这是Ansys自研的一套分布式大数据计算平台。老一代的RedHawk大家应该很熟悉曾经是Apache公司的旗舰产品后来Ansys把Apache收进来在原有RedHawk基础上重写引擎搞出了RedHawk-SC。简单理解RedHawk-SC就是RedHawk的云端化、并行化、大数据化版本底层架构完全换了不再是传统单机内存计算模式而是把设计数据切分成海量数据单元用分布式计算的方式处理。这套架构带来的直接好处是容量和速度。以前跑一个几亿门规模的SoCRedHawk可能要跑几十个小时机器内存吃紧甚至需要跑在大型服务器上。RedHawk-SC通过SeaScape的分布式并行可以把任务拆到多核多机处理几十亿实例的设计也相对从容。实际使用中一个中等规模的MCU项目在配置合理的服务器上动态分析跑完差不多半天到一天比老版本快不少。RedHawk-SC并不是简单换皮它的输入输出继承了RedHawk的很多习惯但底层的网格生成、电阻电容提取、求解器和EM计算都重写了。也就是说你以前会RedHawk上手RedHawk-SC会容易很多但要注意两者在配置和命令上还是有差异不能直接拿老脚本硬跑。1.2 它解决什么问题三个最核心的场景RedHawk-SC最常干的活有三个静态IR Drop分析、动态IR Drop分析、电迁移EM验证。除此之外它也做功耗分析、热分析、地弹分析、静电防护检查等但日常signoff最关注的就是前三个。静态IR Drop也叫电源网络压降分析主要看芯片在某个稳态功耗下从电源焊盘到内部标准单元供电端口的电压损失是否超标。如果IR Drop过大标准单元实际供电电压不足时序就会出问题严重时候直接功能失效。动态IR Drop则是考虑开关翻转瞬间的大电流冲击用VCD/FSDB波形作为激励看某一时刻片内电流激增造成的瞬态压降。EM电迁移验证关心的是电源网络里的金属连线在长期电流应力下会不会慢慢迁移断裂这是可靠性问题直接决定芯片寿命。RedHawk-SC做这些分析的共同前提是它需要比较完整的物理设计数据包括版图、网表、寄生参数、工艺库和翻转活动因子。它最终输出的是整个芯片电源网络上的电压分布图、电流密度分布图、功耗分布图和EM违反报告。2. 跑通一个RedHawk-SC项目需要准备什么2.1 环境与License准备RedHawk-SC目前主要是Linux环境常见的是RHEL/CentOS或者Ubuntu服务器。安装本身不复杂解压安装包设置好环境变量就可以但有几个细节容易被坑。第一是License。RedHawk-SC用的是Ansys的License机制常见环境变量是ANSYSLMD_LICENSE_FILE或者LM_LICENSE_FILE。我建议用ANSYSLMD_LICENSE_FILE避免跟服务器上其他工具冲突。启动之前用lmstat先确认License还能正常checkout不然跑半天突然报License错特别耽误事。License里要确保包含RedHawk-SC的feature不同版本的feature名可能不太一样最好让IT把对应版本的license feature列出来。第二是内存和CPU配置。SeaScape分布式引擎会尽量吃满可用资源机器核数越多跑得越快但内存也要跟上。一个几千万门的设计建议内存至少256GB起步有条件上512GB。同时要注意ulimit设置有时候进程起来直接崩不是工具问题是系统限制进程打开文件数和内存太小。第三是临时磁盘空间。RedHawk-SC运行时会产生大量中间文件和缓存一般建议工作目录和tmp目录留出设计数据体积5到10倍的空间。如果磁盘写满工具会报一些莫名其妙的I/O错误排查起来很头疼。2.2 输入文件清单及常见格式RedHawk-SC的分析精度很大程度上取决于输入数据质量。一个典型项目需要准备以下几类输入文件。文件类型格式说明版图/物理数据LEF/DEF标准单元LEF和设计DEF描述电源网络形状和单元摆放网表Verilog网表 / SPICE网表用于识别单元连接关系一般和DEF配合寄生参数SPEF / DSPF / RSPF描述互连电阻电容RC精度直接影响压降和EM时序库Liberty.lib单元功耗模型、电流模型、时序信息翻转活动VCD / FSDB / SAIF动态分析激励记录信号翻转活动和时间信息工艺/技术文件RedHawk-SC tech文件工艺电源网络参数、电流密度极限、通孔电阻等LEF和DEF基本从后端物理实现流程直接拿SPEF从寄生提取工具生成Liberty库是Foundry和IP供应商提供的标准库文件。VCD/FSDB一般从仿真得到如果是signoff级别的动态分析尽量用门级仿真波形RTL仿真波形做早期评估可以signoff精度不足。RedHawk-SC也支持很多特殊格式比如多电压域的UPF低功耗设计需要准备UPF文件在跑多电压域分析时特别重要不然工具不知道怎么处理电平转换器和隔离单元。2.3 搭建一个标准的工程目录刚接触RedHawk-SC的人容易把一堆文件全扔根目录结果项目一多就乱。我建议按下面这种方式组织目录project_root/ input/ lef/ def/ spef/ lib/ vcd/ tech/ script/ output/ log/ data/input按数据类型分子目录script专门放RedHawk-SC脚本output放结果报告log放日志data放工具生成的中间数据。这样做的好处是出问题时候排查快而且不同项目之间可以共用input里的标准化文件比如工艺Tech文件和标准单元LEF其实可以集中管理没必要每个项目拷一份。还有一个细节RedHawk-SC对路径里的空格和中文支持不好工程路径最好全英文、无空格目录层级不要太深否则一些脚本引用路径时容易出问题。3. RedHawk-SC典型仿真流程拆解3.1 读入数据与设计初始化RedHawk-SC支持GUI和脚本两种模式。GUI模式适合学习和调试脚本模式适合跑量产和回归。我一般先用GUI把一个小模块跑通再转成脚本跑全芯片。启动方式通常在安装目录bin下RedHawk-SC的可执行文件名是rhsc或者redhawk-sc具体看版本。启动后先要创建或者打开一个Project然后进入Design Setup开始导入LEF、DEF、Liberty等文件。导入的顺序有讲究。先导入LEF和Tech文件让工具先认识工艺规则和单元形状再导入DEF这样工具能把单元实例和物理位置对应上。然后导入Verilog网表或者直接依赖DEF里的单元信息。最后导入SPEF和Liberty。Liberty文件通常需要和DEF里的单元一一对应如果某些IP库没导全会在初始化阶段报很多warning最好提前检查。初始化之后要跑一步叫Build的过程工具会自动提取电源网络拓扑建立片上电阻电容网络这个过程等价于给整个供电网络做一次电阻提取和电容提取。Build完成后可以显示电源网络连接关系检查VDD/VSS网络是否完好有没有悬空区域。我每次都会先看Build日志里的提取结果摘要确认提取的电阻电容数量在合理范围内如果异常少说明电源网络可能断了一部分。3.2 静态IR Drop分析怎么跑静态IR Drop在RedHawk-SC里对应的是Static Analysis它不需要波形只需要一个平均功耗/电流分布。工具会根据Liberty里的功耗模型和设计里的翻转率switching activity计算出每个单元的平均电流然后在提取好的电源网络上做直流求解最终得到每个节点上的电压。这里的翻转率很关键。没有波形文件时候可以在工具里设置一个全局默认翻转率比如10%或15%但最好还是用实际仿真得到的SAIF或VCD反标到设计上。翻转率设太高IR Drop结果会偏悲观导致过度设计设太低又会掩盖真实的压降风险。我看过不少项目用默认翻转率跑出来一片红其实真实场景没那么差就是因为翻转率设置不合理。静态IR Drop跑完后主要查看电压梯度图Voltage Map和Vioaltion报告。一般Foundry给的signoff标准是IR Drop不超过供电电压的3%到5%比如0.8V核心电压压降不能超过24mV到40mV。不同工艺节点要求不同先进工艺更严有些甚至要求低于2%。如果出现局部热点先看是不是标准单元排放太密集再看电源条带配置够不够。3.3 动态IR Drop与波形文件处理动态IR Drop更接近真实工作情况它把时间轴上每个时刻的电流脉冲叠加到电源网络上用瞬态求解器算出不同时刻的电压波动。这个分析能够抓出静态分析看不到的瞬态峰值压降比如大量触发器同时翻转时的电流尖峰。动态分析需要波形文件常见格式是VCD、FSDB或者SAIF。VCD是通用格式但文件体积巨大一个门级仿真的VCD动辄几百GB读入非常慢。FSDB是Synopsys格式体积小、读取快RedHawk-SC支持直接读FSDB推荐优先用FSDB。SAIF只有平均翻转信息严格说不算真正的动态激励只能做静态分析用精度有限。波形时间窗口的选择也很重要。有些朋友随便切一段波形就跑动态分析结果峰值电流没抓到IR Drop看起来很好签核却出问题。正确做法是先看功耗波形找到功耗最高的时间窗口比如时钟使能同时打开的周期、总线翻转最密集的周期截取这段时间做动态仿真。RedHawk-SC里可以设置多个waveform window分别仿真再取最差。动态分析的求解器参数里有一个叫步长设置直接影响精度和速度。步长太大电流峰值被平滑掉步长太小求解时间成倍增长。实际项目中可以从系统时钟周期的1/50开始尝试如果结果变化不大再增大步长找到一个精度和速度的平衡点。3.4 EM电迁移检查EM检查可以跟着IR Drop分析一起做RedHawk-SC在求解完电源网络电流分布后会计算每条电源金属线上的电流密度并和工艺Tech文件里的电流密度极限比较。超限的地方就是EM违反需要修改电源网络或调整绕线。EM分析里最容易忽略的是电流方向。金属连线里的电流方向不是固定的尤其电源网络里电流从上层VDD流向标准单元而VSS网络里电流从标准单元流到焊盘方向不同EM判定标准也不同。RedHawk-SC会区分单向电流和双向电流Tech文件里通常会给出不同情况下的电流密度极限比如单向直流电流的允许值比双向交流电流更严。另外一个坑是Via的EM。很多时候上层金属连线EM没问题但Via孔电流密度超了尤其是电源条带和标准单元电源轨之间打的Via不够多。检查报告时要专门看Via EM不要只盯着Metal。修复办法通常是在热点区域补Via、加宽电源条带或者调整电源网格的pitch。4. 结果怎么看常用分析报表与收敛技巧4.1 结果数据库与图形界面RedHawk-SC跑完分析后结果会写入一个结果数据库。GUI里可以直接加载数据库查看电压分布、电流密度分布、功耗分布等。图形界面操作比较直观可以缩放、旋转、点击单元看具体数值也可以把多个结果叠加对比比如对比不同温度、不同波形窗口下的IR Drop。需要特别说明的是RedHawk-SC输出结果既包含图形化数据也包含文本报告。图形数据方便定位热点文本报告方便做自动化和汇总。我通常会让工具默认生成一个叫做summary_report的文件里面会统计全芯片最差IR Drop、最差EM、违反cell数量、违反net数量等关键指标。这些指标可以直接列到signoff checklist里。有个小技巧看图形结果时不要只看颜色分布要右键查看具体节点的数值。颜色渐变有时候会掩盖局部问题尤其是当整个芯片大部分都很好只有一个点特别差时常规色标会把那个点显示成红色但周围区域看起来都还行容易误判。直接把报告里的最差节点坐标抓出来到版图里定位检查效率更高。4.2 关键指标和spec检查做signoff不能只盯着最大IR Drop一个数要建立一个完整的检查列表。我常用的指标包括全局最差IR Drop电压值及对应坐标违反IR Drop约束的标准单元数量各电压域的IR Drop分布统计每条电源网络分支的最大电流密度违反EM的Metal和Via数量全芯片总功耗和功耗密度热点Foundry的signoff guideline一般会给出这些指标的极限值比如IR Drop限值、EM lifetime目标、电流密度安全系数。RedHawk-SC也支持在配置里设置这些spec工具会直接在报告里标出哪些节点超了这样就不用自己去比对。Spec设置最好写到脚本里作为固定配置每次跑完自动对照。不同项目可能有不同spec比如同一颗芯片里数字核心和模拟IP的电源要求不一样可以通过voltage domain或区域约束分开设置。这样报告会更清晰不会一刀切。4.3 收敛问题和精度权衡RedHawk-SC跑批处理脚本时候偶尔会遇到不收敛的情况尤其是动态分析。最常见的原因是电源网络提取规模太大时间步长太激进导致瞬态求解振荡。解决办法是先减小时间步长再看结果是否稳定。如果减小步长后结果变化很大说明之前的步长不合理需要继续减小如果结果变化很小说明已经收敛可以适当增大步长提升速度。还有一种情况是静态分析里某些节点的电压出现负值或者超过VDD这通常是电源网络断开导致的孤立节点或者是Liberty模型里的电流模型异常。可以先做一次connectivity检查看看有没有电源网络孤岛。RedHawk-SC会在Build阶段报告一些孤立区域warning不要直接忽略。精度和速度的权衡没法回避。完全准确的动态IR Drop需要非常精细的RC提取和非常密的波形采样点但实际项目不可能无限烧资源。我的经验是先用大step、简化RC跑一版快速结果摸情况再对最差区域缩小范围做精确复算。RedHawk-SC支持只对局部区域进行精细化分析这个功能非常实用没必要每次都全芯片跑高精度。5. 我踩过的坑和排查方法5.1 波形不全导致动态分析偏差动态IR Drop最怕波形活动率失真。有一次我拿RTL仿真波形跑动态分析结果IR Drop数值异常偏低后来查了半天发现是波形里有很多高阻态X态工具把这些X态当成无翻转处理导致开关电流被低估。后来改用门级仿真波形并且把X态过滤规则打开数据就正常了。如果项目早期没有门级波形只能用RTL波形至少要保证峰值功耗窗口和真实场景一致并且对关键模块做额外约束避免因为未知态太多导致结果偏乐观。动态IR Drop是安全验证宁可悲观一点也不要在边缘上裸奔。5.2 SPEF和RCR精度问题SPEF里的RC精度对EM结果影响很大。有一次跑EM报告里一堆Via违反工程上觉得根本不可能后来检查SPEF里Via的寄生参数模型发现提取工具有个配置没开导致Via电阻偏小电流密度虚高。重新提寄生后EM全部干净。所以拿到SPEF后建议先做一次基础校验比如看看总电阻电容数量级是否合理跟之前版本的提取结果对比一下。另一个经验是RedHawk-SC自己也会用Tech文件里定义的Metal/Via电阻计算IR Drop这部分跟SPEF提供的信息会有重叠要搞清楚哪些电阻来自SPEF哪些来自Tech文件避免重复计算。5.3 License与并行效率问题RedHawk-SC的SeaScape支持多机并行但配置不好速度反而会变慢。我遇到过License数量限制导致只能开少数核心却硬把并行度设很高的情况结果大量时间耗在排队等待License上根本不加速。建议根据License里允许的核心数来设置并行度不要盲目写一个很大的数字。并行任务的文件I/O也是瓶颈。如果多台机器共享一个NFS目录大量小文件读写会拖慢整个流程。最好把工作目录放在本地固态盘跑完再把结果同步到共享存储。这一步对大规模设计影响非常明显。5.4 常见问题速查表现象可能原因排查思路Build阶段报大量孤立网络LEF/DEF电源网络不完整检查导入DEF时的电源网络名称确认VDD/VSS命名一致静态IR Drop异常偏大翻转率设置太高改为实际SAIF/波形反标动态分析结果与功耗波形不匹配波形窗口选错截取功耗峰值窗口EM报告大量Via违反SPEF精度不够重新提寄生检查Via寄生参数求解不收敛时间步长太大减小步长或换求解器模式启动时报License错误环境变量配置错误检查ANSYSLMD_LICENSE_FILE和feature脚本运行中磁盘写入失败临时空间不足清理磁盘设置独立大容量tmp目录6. 关于RedHawk-SC使用的一些个人体会RedHawk-SC的学习曲线比老RedHawk略陡主要在于它是新架构很多概念换了一套说法但底层物理原理没有变。只要理解IR Drop和EM的本质工具只是实现手段。我自己的经验是新手入门不要一上来就拿着大芯片脚本跑先用一个小模块把GUI流程完整走一遍看每一步生成的日志和中间文件理解工具在干什么。然后试着用脚本复现同样流程再逐步增加复杂度。这样走一遍比看十遍文档都管用。还有一点RedHawk-SC虽然自动化程度高但输入数据的质量永远是第一位的。LEF/DEF、SPEF、Liberty、波形任何一个数据有问题结果都不会靠谱。跑分析之前花点时间检查输入数据绝对比跑完再回头查要省时间。
返回列表