OCV 与 STA 进阶:从 derating 到统计静态时序分析
一、从一个问题开始
假设一条数据路径上有 10 级组合逻辑,每级 delay 在 PVT corner 下 nominal 值为 100ps。如果所有 cell 同向偏差(都变慢),路径 delay = 10 × 110ps = 1.1ns;如果有的快有的慢,实际 delay 可能只有 1.03ns。
传统 STA 怎么处理? 统一用一个 global margin(如 setup 0.75ns / hold 0.3ns),不管路径长短、cell 多少,一刀切。
问题来了:芯片越大、工艺越先进,这种一刀切要么过于悲观(过度设计),要么过于乐观(sign-off 遗漏)。这就是 OCV 要解决的问题。
二、OCV 是什么
2.1 定义
OCV(On-Chip Variation,片上偏差) 指同一芯片上不同位置的器件由于工艺、电压、温度的局部差异而表现出的性能偏差。
2.2 偏差来源
PVT 偏差
├── 全局偏差(Global/Systematic)
│ ├── 工艺角(TT/SS/FF/SF/FS)
│ ├── 电压(VDD 波动)
│ └── 温度(chip 级温差)
│
└── 局部偏差(Local/Random)—— OCV 关注的核心
├── 晶体管沟道长度差异(L 偏差)
├── 阈值电压波动(Vt mismatch)
├── 氧化物厚度不均(Tox 差异)
└── 金属线宽/间距变化
关键理解: 全局偏差在 PVT corner 中已经覆盖了。OCV 处理的是 同一 corner 内、不同 cell 之间的相对偏差——这在对时序路径两端(launch vs capture)做比较时才真正重要。
2.3 为什么 180nm 也需要关注 OCV
虽然 180nm 属于成熟工艺,在 2.5MHz / 400ns 的时钟下 timing 通常很宽松,但以下场景 OCV 仍可能造成影响:
| 场景 | 风险 | 说明 |
|---|---|---|
| 长路径 | setup 悲观不足 | 多级 cell 累积偏差可能超过 margin |
| hold 检查 | hold 实际变差 | data 变慢且 clock 变快时 hold 恶化 |
| 异步接口 | 同步失败 | 跨时钟域的格雷码路径也需要考虑 |
| IO 接口 | 片外 timing | FPGA/memory 接口 margin 紧张时 |
三、OCV 方法论演进
3.1 Flat OCV(传统 derating)
最简单的做法:给 data path 和 clock path 各乘一个 derating factor。
setup check:
data_path_delay × (1 + derate) < clock_path_delay × (1 - derate) + T_period - setup_time
hold check:
data_path_delay × (1 - derate) > clock_path_delay × (1 + derate) + hold_time
- derate factor 通常由 foundry 提供(例如 1.1 / 0.9)
- 优点:简单
- 缺点:
- 长路径过度悲观(实际偏差会平均化)
- 短路径可能不足够悲观
- 对所有路径一刀切
3.2 AOCV(Advanced OCV)
核心思想: derating factor 根据路径深度(logic level)动态减小。
- 路径越深 → 偏差相互抵消 → derating 越小
- 路径越浅 → 偏差影响越大 → derating 越大
AOCV derating table (示例):
Logic Levels | Setup Derate | Hold Derate
-------------|-------------|------------
1-3 | 1.15 | 0.85
4-7 | 1.12 | 0.88
8-12 | 1.10 | 0.90
13-20 | 1.08 | 0.92
21+ | 1.05 | 0.95
- 优点:比 flat OCV 更精确
- 缺点:查表法仍然是经验值,不是统计模型
3.3 POCV(Statistical OCV)
核心思想: 每个 cell 的 delay 不再是一个固定值,而是一个概率分布(高斯分布)。
cell_delay = nominal_delay + sensitivity × ΔP
其中 ΔP 是工艺参数的随机偏差分量
STA 工具沿着路径传播这些分布,最终得到路径 delay 的概率分布,在指定的 sigma 点(如 3-sigma)做 sign-off。
- 优点:最精确,消除了 AOCV 的过度悲观
- 缺点:需要 foundry 提供统计模型(CCS/ECSM 中的 statistical moments),工具支持(PrimeTime POCV)
在 180nm 的实际情况: 9TV50 库通常不提供 POCV 模型,因此 AOCV 是实用选择。
四、方法论总结
工艺节点 推荐 OCV 方法 原因
───────── ───────────── ────
180nm ~ 130nm Flat OCV + guardband 库不提供 AOCV/POCV 模型
90nm ~ 65nm AOCV(可查表定制) 有 distance-based OCV 数据
40nm ~ 28nm AOCV + distance-based 需要物理距离信息
16nm ~ 7nm POCV mandatory 必须统计模型
lookout 的环境(180nm / 2.5MHz):
SDC uncertainty: setup 0.75ns / hold 0.3ns
时钟周期: 400ns
OCV derate: flat OCV 1.08/0.92(保守估算)
400ns 的周期下,0.75ns uncertainty 仅占 0.19%,远小于通常建议的 5-10%。对于 180nm 工艺,建议 先以 flat OCV 快速评估,只在 timing 紧张的关键路径上启用 AOCV 精细分析。
五、Tcl 命令实战
5.1 Flat OCV 设置(PrimeTime)
# 设置 OCV derating
# data path derate
set_timing_derate -early 0.92 -late 1.08 -cell_check
set_timing_derate -early 0.92 -late 1.08 -net_delay
# clock path derate
set_timing_derate -early 0.95 -late 1.05 -clock
# 使能 CRPR(Clock Reconvergence Pessimism Removal)
set_analysis_mode -cppr both
# 指定 clock pair
report_timing -cppr -derate -nosplit_output_transition \
-max_paths 50 -nworst 10
5.2 AOCV 设置(PrimeTime)
# 读入 AOCV table
read_aocvm -load_from_file aocv_tables/aocv_9tv50.tbl
# 使能 AOCV 分析
set_analysis_mode -aocvm enabled
# AOCV 距离相关(distance-based)
set_analysis_mode -aocvm_distance enabled
set_analysis_mode -aocvm_distance_file aocv_distance.tbl
# 报告同时查看 AOCVM factor
report_timing -derate -aocvm -cppr
5.3 AOCV Table 格式示例
# aocv_9tv50.tbl
# AOCV derating table for 9TV50 180nm library
# Format: logic_depth early_factor late_factor
AOCV_TABLE: setup {
1-3: 0.88 1.15
4-7: 0.90 1.12
8-12: 0.92 1.10
13-20: 0.93 1.08
21-99: 0.95 1.05
}
AOCV_TABLE: hold {
1-3: 0.85 1.18
4-7: 0.88 1.14
8-12: 0.90 1.11
13-20: 0.92 1.08
21-99: 0.94 1.05
}
5.4 CRPR 原理验证
# 查看 CPPR 前后的 slack 对比
report_timing -cppr -slack_lesser_than 0.1
report_timing -nocppr -slack_lesser_than 0.1
# CPPR 取消的 common path pessimism
report_cppr -summarize
5.5 快速筛选 OCV 影响大的路径
# 报告 derate 对 slack 贡献最大的路径
report_derate -significant 20
# path group 级别汇总
report_derate -group "*"
六、虚拟项目复盘
项目 XXX 背景
- 工艺:180nm (9TV50)
- 时钟:2.5MHz / 400ns
- 规模:约 200K gates,含 SPI、I2C、PWM、ADC 控制逻辑
- SDC uncertainty 初设:setup 0.5ns / hold 0.2ns
问题
第一轮 STA 发现 setup 最差路径 slack 仅 12ps(RC worst corner),hold 最差路径 slack 仅 5ps(BC best corner)。项目 sign-off 不通过。
分析过程
Step 1 — 确认 OCV 设置
当前 derate: flat OCV 1.15 / 0.85(从 130nm 项目沿用)
Step 2 — 检查 AOCV 是否启用
未启用。全芯片用 flat OCV,所有路径相同 derate。
Step 3 — 按路径深度分组检查
# 按逻辑级数分组报告
report_timing -group_by_level -path_type full_clock
发现:
| 路径深度 | 路径数 | WNS | 瓶颈 |
|---|---|---|---|
| 1-5 级 | 12 | -0.03ns | 短路径,derate 过大 |
| 6-15 级 | 156 | +0.08ns | 可接受 |
| 16+ 级 | 45 | +0.21ns | 宽松 |
Step 4 — 结论
flat OCV 1.15/0.85 对短路径过度悲观。改用三段式 AOCV table 后,所有路径 slack 转正。
修复清单
| 操作 | 效果 |
|---|---|
| 从 flat OCV 切换为 AOCV(3 级 table) | 短路径 slack +0.12ns |
| 启用 CRPR | 公共路径 pessimism 消除 +0.08ns |
| SDC uncertainty 调整为 0.75ns / 0.3ns | 更匹配 180nm 工艺 |
| 最终 sign-off | WNS +0.05ns,TNS 0 |
经验
180nm 工艺下 OCV 的核心不是"用多激进的 derating 节省面积",
而是"用合理的 derating 避免误报,让真正的 timing 问题暴露出来"。
七、延伸思考
OCV 是 STA 从"静态"走向"统计"的桥梁。当你理解了 OCV 的本质——同一芯片上不同位置的器件不是一模一样的——就能理解为什么现代 EDA 流程越来越强调 statistical timing。
对于 180nm 工艺,虽然 timing 通常宽松,但理解 OCV 的意义在于:
- 面试必问(OCV / AOCV / CRPR 是 STA 经典考点)
- 当项目迁移到更先进工艺时,OCV 知识直接复用
- 混合信号芯片中模拟和数字接口的 timing margin 往往很紧,OCV 分析是必需的
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)