LAB14_2 RC系数

这个章节主要是了产生一个比较合适的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
2
3
Innovus 内部 RC 提取结果
≠
StarRC signoff RC 提取结果

在工业流程中,通常认为:

1
StarRC + PrimeTime 的结果更接近最终 signoff 结果

而 Innovus 更多用于布局布线和实现阶段的优化。

如果 Innovus 的 RC 估计不准确,可能导致:

1
2
Innovus timing 显示通过
但 PrimeTime signoff 出现 violation

或者:

1
2
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
2
比较 Innovus 内部 RC 与外部 signoff RC 的差异
并生成用于校准的 RC scale factor

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
2
StarRC SPEF 作为参考
Innovus RC 结果向 StarRC SPEF 靠近

5.5 -spefMapFile spef.map

spef.map 是一个 SPEF 文件映射文件。

它的作用是告诉 Innovus:

1
哪个 RC corner 对应哪个外部 SPEF 文件

示例:

1
2
3
rc_worst  ./starrc/DTMF_CHIP.rcworst.spef
rc_best ./starrc/DTMF_CHIP.rcbest.spef
typical ./starrc/DTMF_CHIP.typ.spef

注意:

spef.map 本身不是 SPEF 文件,而是记录外部 SPEF 文件路径的映射表。


6. 原文中容易混淆的地方

原文中提到:

spef.map 为 StarRC 寄生参数提取 signoff 工具抽出来的 spef 文件,externalSpef 为 Innovus 内部自己写出来的 spef 文件。

这个说法不太准确。

更准确的理解应该是:

1
2
3
4
5
spef.map 是外部 SPEF 文件的映射文件,
里面记录 StarRC 提取出来的 SPEF 文件路径。

externalSpef 表示以外部 SPEF 作为参考,
不是 Innovus 内部生成的 SPEF。

也就是说:

-reference externalSpef 表示以 StarRC 等 signoff 工具生成的外部 SPEF 文件作为参考,生成 Innovus 内部 RC 模型的缩放系数。


7. 整体流程理解

整个流程可以理解为:

1
2
3
4
5
6
7
8
9
10
11
12
13
Innovus 完成布局布线
↓
StarRC 提取 signoff SPEF
↓
编写 spef.map 文件
↓
Innovus 读取外部 SPEF 映射
↓
generateRCFactor 比较两边 RC 差异
↓
生成 RC scale factor
↓
Innovus 后续 timing 更接近 PrimeTime signoff

8. 为什么自动生成的 RC Factor 不一定最佳?

工具自动生成的 RC factor 只是一个参考值,不一定是最终最优值。

原因包括:

1
2
3
4
5
6
7
RC corner 设置可能不完全一致
layer map 可能存在差异
SPEF 文件可能不完整
net name 可能匹配不完全
clock net 和 signal net 的处理方式不同
coupling capacitance 处理方式不同
Innovus 与 StarRC 的提取精度不同

因此在真实工程中,工程师还需要结合 timing 结果进行人工判断。

通常会比较:

1
2
3
4
5
Innovus 与 PrimeTime 的 WNS/TNS 差异
关键路径 delay 差异
clock path delay 差异
net delay 差异
cell delay 差异

如果差异较大,还需要进一步调整 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 结果。

ESC 关闭 | ↑↓ 导航 | Enter 打开
输入关键词开始搜索