当前位置:首页>排行榜>OCV / AOCV / SOCV 怎么选?—— Innovus 时序 variation 配置速查指南

OCV / AOCV / SOCV 怎么选?—— Innovus 时序 variation 配置速查指南

  • 更新时间 2026-09-26 13:39:11
OCV / AOCV / SOCV 怎么选?—— Innovus 时序 variation 配置速查指南
🤔 现代时序收敛离不开对 PVT(Process, Voltage, Temperature)variation 的精确处理。
🎯 在 Innovus 里,怎么选对 variation mode、配好 accuracy setting、再把 reporting 调明白,从而在 accuracy 和 pessimism 之间找到平衡?
这篇从 OCV 到 SOCV,一次讲透!

1. 三种 Variation Mode 怎么选?

模式
机制
适用场景
OCV
On-Chip Variation
给每个 timing arc 分配固定的 Early (min) 和 Late (max) delay
老节点,local variation 小。设置简单,但 非常悲观——假设了 worst-case 叠加
AOCV
Advanced OCV
基于 path depth(级数) 和 空间位置 来 derate
随机 variation 在长逻辑链上会相互抵消的节点。比标准 OCV 更准确地捕捉逻辑深度效应
SOCV
Statistical OCV / POCV
把 delay 建模成 统计分布(Mean μ + Sigma σ),用 RSS(Root Sum Square) 方法合并
先进节点(16nm 及以下)。最贴近真实、pessimism 最小

2. 给单个 instance 单独设 derate / sigma

场景: 想给某个 macro 或 instance 单独设 derate / sigma,而不影响全局设置?
用 set_timing_derate 直接覆盖就行!

🔹 覆盖 cell delay(OCV / AOCV):

set_timing_derate -cell_delay -early 0.85 [get_cells {MY_MACRO_INST}]

🔹 覆盖 SOCV sigma / mean(SOCV):

# 覆盖 sigmaset_timing_derate -sigma 1.2 [get_cells {MY_MACRO_INST}]# 覆盖 meanset_timing_derate -mean 1.05 [get_cells {MY_MACRO_INST}]

📌 优先级: instance-specific derate 优先级高于 global derate——所以你可以放心地给特定 instance “开小灶”。

3. SOCV 精度和 skewness 推荐设置

问题:delaycal_socv_accuracy_mode 和 timing_enable_socv_skewness_propagation_mode 到底该设什么值?

🔧 delaycal_socv_accuracy_mode

值
说明
low
跑得快,忽略 slew 和 delay 之间的相关性
highsignoff 级精度
,计算 quantile 时考虑非高斯分布的 skewness
ultra
最高精度,用于最终 timing signoff 或 retiming

🔧 timing_enable_socv_skewness_propagation_mode

推荐设成 true!

原因: 标准高斯模型(只有 mean/sigma)可能过于乐观。开启后会传播 delay 分布的 “尾巴”(tail)——这对复杂逻辑路径的精度至关重要。

4. 怎么确认当前生效的 derate?

想看 Innovus session 里到底应用了哪些 derate?用 report_timing_derate:

# 全局视图report_timing_derate# 查看继承关系(是直接应用还是从上层继承?)report_timing_derate -include_inherited# 查看特定对象report_timing_derate [get_cells {INST_NAME}]

-include_inherited 特别有用——它会告诉你这个 derate 是 直接打在 instance 上的,还是 从顶层 hierarchy 或 power domain 继承下来的。

5. N-sigma 设置与验证

统计 slack 计算要用几 sigma?这个可以按 view 单独设:

# 设置 reporting multiplierset_socv_reporting_nsigma_multiplier -setup 3.0 -hold 3.0 -view <view_name># 查看当前设置get_socv_reporting_nsigma_multiplier -view <view_name> -setup

想在报告里看到实际的 mean 和 sigma 值?把 report fields 改一下:

set_db timing_report_fields {hpin fanout load arrival_mean arrival_sigma arrival delay_mean delay_sigma delay}

这样报告里就会多出 arrival_mean、arrival_sigma、delay_mean、delay_sigma 等字段,统计信息一目了然 📊

📋 快速自查清单

  • ✅ 你的工艺节点适合哪种 variation mode?(老节点 OCV / 中间 AOCV / 先进节点 SOCV)
  • ✅ 关键 macro 需要单独 derate 吗?
  • ✅ SOCV 精度设对了吗?(signoff 用 high 或 ultra)
  • ✅ skewness propagation 开了吗?(推荐 true)
  • ✅ 当前生效的 derate 确认过了吗?(report_timing_derate -include_inherited)
  • ✅ N-sigma multiplier 设对了吗?(signoff 一般用 3.0)
  • ✅ 报告字段加上了 mean/sigma 吗?

🎉 总结

  • 🎛️ Variation mode 选择: 老节点 OCV → 中间 AOCV → 先进节点 SOCV(16nm 以下)
  • 🔧 Instance 级覆盖: 用 set_timing_derate 给特定 macro 单独设 derate / sigma
  • 🎯 SOCV 精度: signoff 用 high 或 ultra,并且 开启 skewness propagation
  • 🔍 验证 derate:report_timing_derate -include_inherited 看全局和继承关系
  • 📊 N-sigma 报告: 用 set_socv_reporting_nsigma_multiplier 设阈值,报告字段加 mean/sigma
  • 💡 核心思想:既要准,又不能太悲观——选对 mode、配好精度、看清报告,三步到位!

随机文章