这个章节主要是了产生一个比较合适的rc scale factor系数,使得PT和Innovus之间的timing比较接近。
值得注意的是,工具自动产生出来的rc factor不一定是最佳的,很多时候还是需要工程师来辅助一些分析。对于初学者来说,这部分内容可以大体上了解即可。
generateRCFactor –preroute true -postroute medium -reference externalSpef -spefMapFile spef.map
其中sepf.map为Starrc寄生参数提取signoff工具抽出来的spef文件,externalSpef为Innovus内部自己写出来的spef文件。
RC Scale Factor 与 generateRCFactor 命令理解
1. 这部分内容在讲什么?
这部分主要讲的是 RC 相关性校准,也就是通过生成一个合适的 RC scale factor,让 Innovus 中计算出来的 timing 结果尽量接近 signoff 工具流程中的 timing 结果。
简单理解:
Innovus 内部提取/估算的 RC 寄生参数,可能和 StarRC 等 signoff 工具提取出来的 RC 寄生参数不完全一致,所以需要通过 RC scale factor 对 Innovus 的 RC 模型进行校准。
2. 为什么需要 RC Scale Factor?
数字后端时序分析中,互连线的寄生参数会直接影响 net delay。
1 | net delay 与 wire RC 密切相关 |
但是不同工具对 RC 的提取结果可能不同:
1 | Innovus 内部 RC 提取结果 |
在工业流程中,通常认为:
1 | StarRC + PrimeTime 的结果更接近最终 signoff 结果 |
而 Innovus 更多用于布局布线和实现阶段的优化。
如果 Innovus 的 RC 估计不准确,可能导致:
1 | Innovus timing 显示通过 |
或者:
1 | Innovus timing 过于悲观 |
因此,需要生成 RC scale factor,使 Innovus 的 timing 结果更接近 signoff 结果。
3. RC Scale Factor 是什么?
scale factor 就是缩放系数。
如果 Innovus 提取的电容偏小,而 StarRC 提取的电容更大,可能需要:
1 | C_scale_factor = 1.08 |
表示:
1 | Innovus 内部电容 × 1.08 |
如果 Innovus 提取的电阻偏大,可能需要:
1 | R_scale_factor = 0.95 |
表示:
1 | Innovus 内部电阻 × 0.95 |
通过这种方式,Innovus 后续进行 timing 分析和时序优化时,RC 模型会更接近 signoff 工具结果。
4. generateRCFactor 命令作用
命令示例:
1 | generateRCFactor -preroute true -postroute medium -reference externalSpef -spefMapFile spef.map |
该命令用于:
根据外部 signoff SPEF 文件,生成 Innovus 内部 RC 模型的缩放系数。
也就是让 Innovus 把自己的 RC 结果和外部 SPEF 结果进行对比,然后自动生成一组 RC factor。
5. 命令参数解释
5.1 generateRCFactor
表示生成 RC 缩放系数。
作用是:
1 | 比较 Innovus 内部 RC 与外部 signoff RC 的差异 |
5.2 -preroute true
表示生成 pre-route 阶段 使用的 RC factor。
Pre-route 阶段还没有真实布线,RC 多数依赖估算,因此更需要通过 factor 进行校准。
5.3 -postroute medium
表示生成 post-route 阶段 使用的 RC factor。
medium 表示使用中等精度的 post-route RC 提取/分析方式。
Post-route 阶段已经完成真实布线,因此可以将 Innovus 自身提取的 RC 与外部 signoff SPEF 进行对比。
5.4 -reference externalSpef
表示以 外部 SPEF 文件 作为参考标准。
这里的 external SPEF 通常是由 StarRC 等 signoff 寄生参数提取工具生成的 SPEF 文件。
也就是说:
1 | StarRC SPEF 作为参考 |
5.5 -spefMapFile spef.map
spef.map 是一个 SPEF 文件映射文件。
它的作用是告诉 Innovus:
1 | 哪个 RC corner 对应哪个外部 SPEF 文件 |
示例:
1 | rc_worst ./starrc/DTMF_CHIP.rcworst.spef |
注意:
spef.map本身不是 SPEF 文件,而是记录外部 SPEF 文件路径的映射表。
6. 原文中容易混淆的地方
原文中提到:
spef.map 为 StarRC 寄生参数提取 signoff 工具抽出来的 spef 文件,externalSpef 为 Innovus 内部自己写出来的 spef 文件。
这个说法不太准确。
更准确的理解应该是:
1 | spef.map 是外部 SPEF 文件的映射文件, |
也就是说:
-reference externalSpef表示以 StarRC 等 signoff 工具生成的外部 SPEF 文件作为参考,生成 Innovus 内部 RC 模型的缩放系数。
7. 整体流程理解
整个流程可以理解为:
1 | Innovus 完成布局布线 |
8. 为什么自动生成的 RC Factor 不一定最佳?
工具自动生成的 RC factor 只是一个参考值,不一定是最终最优值。
原因包括:
1 | RC corner 设置可能不完全一致 |
因此在真实工程中,工程师还需要结合 timing 结果进行人工判断。
通常会比较:
1 | Innovus 与 PrimeTime 的 WNS/TNS 差异 |
如果差异较大,还需要进一步调整 RC factor 或检查 SPEF、corner、layer map 等设置是否正确。
9. 和 SPEF、PT、Innovus 的关系
可以这样理解:
| 项目 | 作用 |
|---|---|
| Innovus | 后端实现工具,用于 placement、CTS、routing 和优化 |
| StarRC | signoff 级寄生参数提取工具 |
| SPEF | 保存 RC 寄生参数的文件 |
| PrimeTime | signoff 静态时序分析工具 |
| RC Scale Factor | 用于校准 Innovus 内部 RC,使其 timing 更接近 signoff |
10. 一句话总结
generateRCFactor的作用是以 StarRC 等 signoff 工具提取的外部 SPEF 作为参考,生成 Innovus 内部 RC 模型的缩放系数,使 Innovus 实现阶段的 timing 结果尽量接近 PrimeTime signoff 结果。