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 打开
输入关键词开始搜索