IR drop 是电流乘电阻。这个式子把 corner 的选择问题拆成了两个方向相反的诉求:想让压降最大,电流要取最大,电阻也要取最大,而这两个最大值并不出现在同一个温度上。
电流随温度怎么变,看的是载流子迁移率。温度低,晶格散射弱,迁移率高,管子驱动强、边沿快,瞬时电流更大。电阻反过来,金属电阻率随温度上升,常用系数是每摄氏度千分之三到千分之四,从 25 ℃ 到 125 ℃ 电阻涨三成多。于是“最大电流”落在低温角,“最大电阻”落在高温角。
工程上常听到“低压高温最坏”,这句话针对的是建立时间检查:电压低、管子弱、路径慢,最容易 setup 不满足。把它套到 IR drop 上会出错,因为低压意味着电流小、压降小,用的是偏乐观的一侧。做压降分析时选快工艺(FF)、高电压(标称电压加一成),配合高温和最大电阻的提取角,才是主流做法。
一个务实的方案是两个温度都跑:高温角抓电阻和漏电,低温角抓最大开关电流,取更差的那个。工具一次只能设一个温度,跑两遍的成本远低于漏掉一个最坏点的风险。
corner 不是单独一项,是四件东西要对齐。
器件库(lib 或 db)决定单元电流,它本身就带着工艺、电压、温度三个标签。提取出来的寄生(SPEF)和 RedHawk 的技术文件(tech)决定电网电阻,两者都要取最大电阻的角(rcmax 或 rcworst),而且必须是同一个角。混用不同角,例如用最大电阻的 tech 配最小电容的 SPEF,会得到无法解释的结果。GSR 里的 TEMPERATURE 要与器件库的温度标签配对:热库配热温,冷库配冷温。冷库配高温等于同时取了两边的悲观值,可以用,但必须在报告里写明这是混合角。
最后是后仿 VCD。GSR 里打开 TRUE_TIME 之后,工具会直接采纳 VCD 里的翻转时刻和边沿信息,所以后仿用的角必须与分析角一致,否则峰值电流会失真。如果后仿只在时序角(慢工艺、低压、高温)跑过,拿它来分析快工艺、高压下的压降,边沿偏慢、电流偏小,结论就会偏乐观。
这个可以实测。金属电阻的温度系数写在技术文件里,以某一层为例,一阶系数 0.003406、二阶 2.465e-6,从 25 ℃ 算到 125 ℃:
电阻涨 36.5%,压降应当跟着涨差不多同样的比例。实测把温度从 25 ℃ 提到 125 ℃,压降从 2.30% 涨到 3.02%,比值 1.31。两者量级吻合,说明温度这条链是通的,同时也说明之前没设温度时,电阻是按 25 ℃ 提的,结果系统性偏乐观。
工具其实在日志里警告过这件事:没有指定温度,电阻的温度效应会被忽略。这类警告很容易淹没在其他几十条 INFO 里,值得单独搜一遍日志里的 ERROR 和 WARNING。
器件库的文件名通常把工艺、电压、温度都编码进去了。以我们手上那份为例,中间一段 N40CFF1P98 拆开看是:N40C 表示零下 40 摄氏度,FF 表示快工艺,1P98 表示 1.98 V,也就是标称 1.8 V 加一成。反过来 N125CSS1P62 是 125 摄氏度、慢工艺、1.62 V,典型的建立时间角。看懂命名规则之后,光看文件名就能大致判断一个角是干什么用的,比翻文档快。
动手之前把这四件确认掉:器件库的工艺、电压、温度标签,以及这次打算跑哪个角;GSR 里的 TEMPERATURE 与器件库的温度标签一致;技术文件和 SPEF 用的是同一个最大电阻角;后仿 VCD 的角与分析角一致,频率口径也一致。
另外记住两个常用判据,动态压降小于标称电压的 10%,静态小于 5%,用标称 1.8 V 算就是 180 mV 和 90 mV。拿到工具给的毫伏值先换算成百分比再对比,否则很容易被“才几十毫伏”这种直观印象误导。
| 分析 | PVT(lib/db) | 电压 | 温度(GSR) | TECH_FILE | SPEF | VCD/激励 |
|---|---|---|---|---|---|---|
| 动态压降(主角) | FF | 1.98 V | 125 °C | rcmax | rcmax | 同角后仿 + 最重活动场景 |
| 动态压降(对照角) | FF | 1.98 V | −40 °C | rcmax | rcmax | FF/1.98V/−40 °C |
| 静态压降 | FF | 1.98 V | 125 °C | rcmax | rcmax | 不需要 VCD |