简介:《RedHawk User Manual》是ANSYS官方推出的RedHawk电源完整性分析工具用户手册,主要面向数字后端设计、芯片物理实现及电源完整性分析工程师。RedHawk专注于全芯片静态和动态电源完整性分析,其内容系统覆盖RedHawk在设计流程中的典型应用路径,包括设计规划阶段的功耗评估与优化、设计开发阶段的分析调优,以及设计验证阶段的检查方法,同时给出静态电压降与动态电压降两种分析流程的详细步骤,帮助工程师从流程理解到工具实操建立完整认知。资源包仅含1个PDF文档,大小11.73MB,作为官方手册内容紧凑、便于检索。目前已有1813人学习,适合数字后端初级工程师系统学习,也适合有经验的设计者作为日常排障与流程配置的参考手册。书中还收录TCL命令用户接口和数据准备等实用章节,涉及文件格式、接口调用等细节,对于需要定制RedHawk分析流程或编写自动化脚本的团队具有直接参考价值。 做芯片后端的人,几乎没有没听过 RedHawk 的——它是流片前电源签核(power sign-off)的事实标准之一,专门回答两个问题:芯片供电网络上的电压跌了多少,以及这些金属线会不会在寿命期内被电流应力折断。RedHawk user guide 读起来动辄几百页,但真正干活时你需要抓住的只有一条主线:把版图、寄生参数、功耗和工艺规则喂进去,算出一份可信的 IR drop 与 EM 报告。这里不打算逐页翻译指南,而是按一个物理设计工程师从入门到 submit 的实际路径,把 RedHawk 怎么用、参数怎么设、坑在哪说清楚。适合正在做 IR drop sign-off 的后端工程师,也适合刚接触电源完整性分析的菜鸟。
2. 进 RedHawk 之前:六类输入文件缺一类都别开工
RedHawk 不是那种丢一个 GDS 就能跑的工具,它更像一个数据融合平台,吃的是版图、寄生、时序库和工艺规则。这里的核心难点不在于软件操作,而在于这些文件之间的 object 命名是否一致、单位是否一致、时序条件是否对齐。我见过太多人在这一步翻车,后面所有分析全部失真。
2.1 文件清单与各自职责:一张表讲清
| 文件类型 | 来源 | RedHawk 拿它做什么 | 缺失或错误后果 |
|---|---|---|---|
| LEF | 工艺库 | 定义金属层、通孔、单元边界与电源地 pin | 电源网络没法识别,单元不接电 |
| DEF | P&R 工具输出 | 提供实例坐标、布局和电源网络走线 | 没有版图可分析 |
| SPEF | RC 抽取工具 | 提供每个 net 的寄生电阻和电容 | IR drop 被严重低估或高估 |
| .lib | 时序库 | 提供单元功耗、输入转换、输出负载模型 | 功耗算不准,动态分析失去意义 |
| SDC | 综合或后端流程 | 提供时钟定义,用于计算翻转率 | 活动窗口缺失,功耗分布集中在错误位置 |
| 工艺电源文件 | Foundry PDK | 提供金属电流密度上限、via 规则、EM 规则 | 静态 IR drop 可跑,EM 分析直接停摆 |
LEF 是 RedHawk 认识版图的第一层基础。它告诉工具每个标准单元有哪些电源 pin、pin 在哪一层、什么形状,也告诉工具金属层和 via 的规则。常见的坑是抽象单元里没打印 power pin,结果 RedHawk 认为这个单元根本不接电,IR drop 图上就会出现一片没有颜色的区域。如果你用的是后端团队自己的 LEF,记得先确认里面包含 power and ground pin。
DEF 提供的是实例位置和真正的电源网络布线。P&R 工具输出的 DEF 里,电源网络往往用 specialRoute 画得非常碎,RedHawk 需要先做一次合并,把同一层上同一 net 的走线拼起来。如果你的 DEF 里电源轨是一段一段的,运行前先检查合并结果,否则后续求解器会在断裂处给出一个不自然的压降。
SPEF 是最容易让新手误判的一个文件。它记录每个 net 的寄生 R 和 C,RedHawk 用它构造电源网络的等效电阻网络。SPEF 里电阻的单位通常写在文件头部,比如欧姆或者毫欧姆,一旦单位读错,IR drop 的结果会直接差出几个数量级。我一般会在导入后先抓某个关键 VDD net 看一眼总电阻值,和手算的预期量级比对一下,再继续往下走。
.lib 和 SDC 决定了功耗建模是否可信。RedHawk 需要从 .lib 里拿到每个 cell 的 internal power 和输出负载模型,需要从 SDC 里拿到时钟频率和约束,然后推算出每个 cell 的翻转率。这里有个隐藏要求:.lib 的 PVT 角要和时序 sign-off 用的一致。不要图方便拿一个 fast 角来灌功耗,否则算出来的功耗偏乐观,IR drop 报告会非常好看,但流片回来就哭。
工艺电源文件不是必须放在最前面导入,但它决定了 IR drop 和 EM 的判定标准。Foundry 给你的文件里包含每层金属的最大电流密度、via 电流上限、以及温度修正系数。不同 PDK 版本的这些数值差异不小,最怕的就是拿着旧工艺文件跑新工艺版图,EM 报告会变得不可信。
2.2 最容易出错的三个格式细节
第一个是单位网格问题。LEF 的 manufacturing grid 经常是 1nm 或 0.5nm,DEF 里的坐标单位和数据库单位可能相差 1000 倍。RedHawk 会把不同单位的输入统一到内部数据库,如果 LEF 和 DEF 的 DATABASE MICRONS 不一致,power via 会被吸到错误位置,明明连着的电源网络变成开路。我一般在读入 DEF 后第一件事就是查看 "UNITS DISTANCE MICRONS" 一行,确保和 LEF 匹配。
第二个是电源网络命名不一致。DEF 里 VDD! 带个叹号,UPF 里写的是 VDD,看起来像同一个东西,但 RedHawk 是按层次路径去匹配的。只要命名对不上,工具就会报告大量 instance 没有供电连接,热点图全黑或者全红。解决方法是统一命名规则,或者在导入配置里建立显式映射表,让 VDD 和 VDD! 指向同一个逻辑电源。
第三个是 SPEF 覆盖不完整。RC 抽取工具偶尔会因为某些区域走线被 block 住而漏掉部分金属层,SPEF 里缺了那些 net,RedHawk 会认为那段走线电阻为零,IR drop 被低估。验证方法很简单:把 DEF 里的 net 数量和 SPEF 里的 net 数量做一个比对,缺了超过 1% 就要回头重新抽取。这个动作看起来无关紧要,但往往能提前救下一整个项目周期。
3. 跑通一次静态 IR drop:从建工程到看报告的八个步骤
静态 IR drop 是 RedHawk 里最入门、也最能筛出基础供电缺陷的事情。它不考虑电流随时间的变化,只用平均功耗算出每个 cell 的抽电流,再求解整个电源网络的直流压降。为什么要先做静态?因为它收敛快、定位直观,能在几小时之内告诉你芯片上哪个区域缺电。很多项目把静态当作 sign-off 的第一道篱笆,静态就崩的区域,动态和 EM 基本不用往下看。
3.1 最小跑通流程:八个步骤
新建工程并指定工艺技术文件。 在 RedHawk 里新建工程后,第一步是选择工艺技术文件。这一步把金属层 stack、通孔定义和默认电流密度规则载入内部数据库。不要跳过,否则后面导入 LEF 时会报 layer 冲突。
导入 LEF 和 DEF。 先导入 LEF 定义单元和层信息,再导入 DEF 放实例和电源网络。导入完成后打开 power network 视图,确认每个标准单元的 VDD/VSS pin 都落到了对应电源轨上。这个视图里如果有大量 pin 没有连接,多半是命名或单位问题,回到第 2 章排查。
导入 SPEF 寄生参数。 SPEF 在静态分析里主要用于计算电源网络的等效电阻。导入时留意文件头部的单位声明。我一般会顺手检查几个高扇出 net 的电阻值,比如时钟 buffer 的电源端,如果数值异常大或异常小,先解决再继续。
导入 .lib 和 SDC。 把时序库和约束文件加进来,RedHawk 会为每个 cell 计算出活动因子和翻转率。这一步也要留意 SDC 里的时钟定义是否覆盖了所有寄存器,尤其是跨时钟域的那些异步逻辑,漏掉一个时钟域,整个区域功耗都会偏低。
定义电源网络和供电入口。 指定 VDD/VSS net 是哪些,供电入口是 bump、pad 还是封装上的 power pin。移动芯片通常有一整面 bump,服务器芯片则依赖顶部金属的 pad。入口位置直接决定电流从哪流入,放错位置会让热点图严重失真。
设置功耗模式和温度。 填入工作温度、VDD 值、默认翻转率。静态分析推荐先跑一个 baseline:温度用 PDK 规定的最大结温,翻转率取 0.1 到 0.2。去耦电容这一项先给一个固定占用率,比如 5%,后面激进一点可以跑到 10%。
运行静态求解器。 静态求解本质是构建一个大的电阻网络,然后做直流分析。运行前设置好收敛容差,一般用默认值即可,不需要为了追求精确去调小容差,那只会白白增加运行时间。求解器跑完后先看日志里的总功耗,和手写功耗估计对比,偏差超过 20% 就说明前面输入有问题。
生成 IR drop 报告和热点图。 RedHawk 会输出每个 instance 的电压降数值和一张芯片平面热图。报告里默认按 instance 列出 IR drop 最大的一组,我习惯先按违规率排序,再看热点图确认是否有区域性趋势。到这里,一次静态 IR drop 的最小闭环就跑通了。
3.2 三个关键参数:改一个结果就变一个样
| 参数 | 推荐范围 | 对结果的影响 |
|---|---|---|
| 结温 | PDK 指定的最大结温,一般 105°C 到 125°C | 温度越高,金属电阻越大,IR drop 越差 |
| 翻转率 | 0.1 到 0.3,取 0.1 是整体平均,取 0.3 偏激进 | 每个 cell 功耗和翻转率近似成正比,直接改变电流分布 |
| VDD 限值 | 通常取 VDD 的 5%,0.8V 就是 40mV | 低于 5% 容易被噪声淹掉,高于 5% 时序容易崩 |
结温不能自己拍脑袋。Foundry 的 PDK 里会写清楚 interconnect 的温升模型,RedHawk 需要的不是芯片外壳温度,而是金属层的实际工作温度。有些项目为了留裕量,直接把温度抬高到 125°C 以上,结果报告里的 hotspot 全片都是,反而看不出真正的问题。我一般先用 PDK 指定值跑一次,再往上加 10°C 做一次敏感度验证,看热点是否转移。
翻转率是对结果影响最直接、也最容易做假的参数。0.1 意味着每个时钟周期每个 node 有 10% 的概率翻转,这是一个宏观平均概念。真实场景里有些模块跑到 0.5,有些长期睡眠接近 0。如果整个芯片统一用 0.2,热点会集中在 CPU 集群;如果统一用 0.05,功耗偏低,报告会变得乐观。正确做法是按模块给不同翻转率,至少把主处理器、存储控制器、IO 分成三档。
IR drop 限值不是工具自动算的,而是设计和时序团队一起定的。5% VDD 是一个常见起点,但对低电压高功耗的芯片,5% 可能已经被噪声 budget 吃掉太多,需要收到 3% 到 4%。这个值不一定要提前定死,可以先跑完一轮静态 IR drop,看分布曲线大概是什么形状,再回头和时序团队敲定。
4. 动态 IR drop 和 EM 检查:静态过了远远不够
静态 IR drop 的局限在于它把时间抹平了。而芯片上最危险的不是平均功耗,而是时钟沿到来那一刻,成千上万个寄存器同时翻转造成的电流尖峰。电源网络有寄生电阻、电感和电容,当电流在几个纳秒内从低跳到高,供电电压会瞬间塌下去一块,这个局部电压尖峰就是动态 IR drop。静态分析看不到它,因为静态用的是平均电流。
4.1 静态和动态到底差在哪
| 维度 | 静态分析 | 动态分析 |
|---|---|---|
| 功耗输入 | 平均翻转率和活动因子 | VCD/FSDB 波形文件 |
| 网络建模 | 主要看电阻网络 | 需要完整的 RLC 模型 |
| 时间维度 | 不建模,只看最终压降 | 建模 di/dt 效应 |
| 输出 | 整体 IR drop 地图 | 随时间变化的电压波形 |
| 耗时 | 小时级 | 天级 |
| 适用场景 | 早期评估、供电主干检查 | sign-off 前最后确认 |
动态分析需要喂进去的不是平均活动因子,而是一段真实的翻转波形。常见做法是从回归测试里拉一段最差 case 的 VCD,时间窗口不要太短,至少要覆盖几十个时钟周期,让电流尖峰有机会完全建立。波形采样率也要够密,如果 VCD 里只有周期边界处的翻转记录,RedHawk 计算出的压降尖峰会被平滑掉,看起来一切正常,实际在现场照样时序收敛不了。
我一般会针对关键模块单独做动态分析,而不是全芯片一股脑轰一遍。全芯片动态分析跑一次动辄一两周,而且内存占用极高。主 CPU 集群、GPU 的供电网络、以及所有可以同时翻转的 SRAM 阵列,这几个区域单独拎出来做动态,比盲目全片跑更有价值。跑之前先确认网表、SPEF 和 VCD 的层次路径对得上,否则动态波形没法映射到某个具体 cell 上。
动态分析另一个容易忽略的点是去耦电容。RedHawk 可以计算出某个 hotspot 因为开关电流产生的电压下冲,但如果你在版图里插入的 decap 没有被模型化,计算结果会整体偏悲观。我在动态分析前会把 DRC clean 的 decap 区域标记出来,让工具把这部分电容纳入网络求解,否则后半段修 IR drop 的努力都会白费。
4.2 EM 检查:另一套规则,完全不同的视角
EM 全称 electromigration,和 IR drop 是两套完全不同的视角。IR drop 看的是当下电压够不够,EM 看的是长期可靠性——金属在持续电流应力下,原子会沿着电子流动方向迁移,久而久之在线上形成空洞,最终导致断路或者短路。RedHawk 的 EM 分析会计算每段金属和每个 via 上的电流密度,再和 Foundry 给出的 EM 限值比对。
Foundry 给的 EM 规则一般分两种:一种是最大平均电流密度,对应长时间稳定工作下的迁移风险;一种是最大峰值电流密度,对应突发尖峰造成的局部损坏。RedHawk 里都要设置,不能只挂平均电流这一条。EM 规则对温度非常敏感,温度越高,迁移越快,所以 EM 分析用的温度经常比静态 IR drop 还要高。有些项目为了赶进度,直接复用 IR drop 的温度设置,最后 EM 报告一片绿灯,拿到 Foundry 那里复核就全部超标,这种翻车我见过不止一次。
EM 分析和 IR drop 的修复思路也不一样。IR drop 要的是低电阻路径,所以加宽金属、加厚走线有效;EM 要的是降低电流密度,光加宽线还不够,还要看整条 current path 上的 via 数量。一个电源通孔里挤了太多电流,EM 就会在这里违规。修复 EM 时我习惯先把每类 via 的电流统计拉出来,找到超过上限的那批,再决定是加 via 阵列还是把走线拆成多条并联路径。
5. RedHawk 踩坑实录:五个高频报错与排查过程
RedHawk 的报错,很多时候不是工具本身的 bug,而是输入数据在撒谎。新上手的人看到红字就慌,其实每一步都有规律可循。下面这几条是从多个项目里爬出来的高频案例,每一条都按现象、原因、解决来记录。
5.1 电源网络识别不出来,热点图全黑
现象:RedHawk 导入 DEF 后,报 "power net not found" 一类的警告,打开热点图全片黑色,一个完整的电压网络都画不出来。
原因:DEF 里电源网络是用 specialRoute 画的,net 名和电源定义文件里的名字不一致。最常见的是 DEF 里叫 VDD!,电源文件里叫 VDD,工具匹配不上就认为没有供电。
解决:先统一命名,再导入。如果项目里已经到处用 VDD!,就在 RedHawk 的电源定义里加一条映射,把 VDD 指向 VDD!。改完后重新导入 DEF,再用报告确认电源网络的 coverage 是不是覆盖了全部实例。不要急着往下跑,这一步错了后面全是白算。
5.2 静态 IR drop 全片偏大,所有单元都违规
现象:静态分析跑完,IR drop 报告里每个 instance 的压降都超过 50mV,热点图整体发红,但总功耗看起来正常。
原因:SPEF 里的电阻单位被误读。常见的是 SPEF 里电阻单位为毫欧姆,工具按欧姆读入,电源网络等效电阻被放大一千倍,压降自然全片超标。
解决:打开 SPEF 文件头,找到单位和比例字段,确认 RedHawk 里选的单位一致。修改后重跑,不需要动任何其他设置。这个坑很隐蔽,因为它只影响数值,不会报错。
5.3 动态分析跑到一半内存爆掉
现象:动态分析进行到十几个 cycle 的时候,机器内存直接耗尽,进程被杀,连日志都没来得及写完。
原因:动态窗口设得太长,VCD 文件太大,RedHawk 需要把整个时间窗口的所有翻转和电流波形展开成矩阵去求解。内存消耗随窗口长度不是线性的,越往后越夸张。
解决:把动态窗口拆成几段,一段一段跑,每一段覆盖一个完整的时钟唤醒事件。比如先从 0 到 200 cycle 算一段,再从 200 到 400 cycle 算一段,最后把各段的结果拼起来看最差的压降波形。这样既能看到尖峰,又不会把整台机器拖垮。
5.4 EM 报告一堆假违规,窄线全报超标
现象:EM 报告里所有细金属线都报 violation,甚至电源网络的 main stripe 都在违规,明显不正常。
原因:没有加载 Foundry 的 EM 电流密度文件,工具启用了内置的保守默认值,那个默认值远低于实际工艺能力,导致全线超标。
解决:重新检查工艺电源文件是否加载成功。有些版本需要在运行前单独点击 EM 规则选项,不能只依赖技术文件里的 layer 定义。同时确认金属宽度用的是不是 DRC 后的最小宽度,如果用 pre-notch 宽度算,电流密度会被低估,EM 反而不容易报错,这也是个潜在风险。
5.5 RedHawk 结果和另一套流程对不齐
现象:同一个设计,RedHawk 算出的 IR drop 热点和 Foundry 自己的电源分析流程结果差 30% 以上,每个区域对不上。
原因:两边输入的翻转率、温度或 PVT 角不一致。最常见的不是 SPEF 差异,而是时序库的 PVT 角选得不一样,一个用 ss corner,另一个用 tt corner,功耗模型本身就差很多。
解决:把两边的翻转率表、温度、VDD 值全部拉出来面对面比对,确认完全一致后再复跑。不要一上来就怀疑工具精度。IR drop 分析工具在同样输入下通常能对到 5% 以内,差出 30% 一定有一边在输入参数上撒了谎。
6. 结果解读到改版闭环:不止会看热点图
6.1 热点图怎么读
热点图从蓝到红表示压降逐渐增大,但只看红色区域会漏掉真正的隐患。我习惯先看红色,再看浅红和橙色,尤其是时钟单元密集区。这些区域在静态分析里可能只有 20mV 压降,不显眼,但到了动态分析里,同一片区域因为同时翻转会产生一个比平均值高两三倍的尖峰,直接变成新的 hotspot。所以静态热点图要和动态热点图叠在一起看,静态红色是优先级最高的,静态浅红但动态深红的是第二优先级。
6.2 修复优先级
拿到 IR drop 报告后,按压降值从大到小排前 10% 的 instance,优先修这些。修法无非是四种:局部加去耦电容、把附近电源 stripe 加宽、在 pad 和 bump 周围把 via 打满、以及调整几个标准单元的摆放位置。每次改完重跑一遍静态分析,对比 IR drop 直方图 90% 分位有没有下降。我自己的习惯是每轮改动都留一份参数快照,把温度、翻转率、VDD 值和库的 PVT 角记录下来,这样流片后如果回来查问题,至少还有一份后悔药可以用。希望帮到你。
本文还有配套的精品资源,点击获取