时序签核一般迭代多少轮:量级经验与收敛判据
时序签核(timing signoff)是流片前最后一道时序关卡:用签核级 STA 工具在全部 PVT corner 下确认设计没有任何 setup/hold 违例。几乎所有第一次负责签核的工程师都会问同一个问题——这一般要迭代多少轮才算完?这个问题的背景知识可以参考 静态时序分析基础 与 时序收敛迭代方法论,本篇只聚焦「轮数」这一个点。
本文要回答的问题
- 时序签核一般迭代多少轮,新模块和老设计差多少?
- 为什么「轮数」本身不是一个好的收敛指标?
- 判断签核收敛真正该看哪三个信号?
- 一个真实项目里的迭代曲线长什么样?
- 关于迭代轮数最常见的几个误区是什么?
简短结论
没有一个适用于所有项目的固定轮数,但量级经验是有的:
- 全新模块初签:5 到 10 轮很常见,第一次拿到完整违例报告时 WNS 往往差几十甚至几百皮秒,前 3 轮通常都在处理结构性问题。
- 成熟设计的例行签核(网表小改、constraint 微调后重跑):1 到 3 轮即可收口,理想情况是首轮就接近干净。
- 真正决定能不能收口的不是轮数,而是趋势:WNS/TNS 是否单调改善、违例路径是否越来越集中、违例类型是否从「结构性」退化成「零星修得动」的。轮数多但趋势向好是健康的;轮数少但每次违例构成都在漂移,反而是危险信号。
一、为什么新模块要 5 到 10 轮
新模块的签核迭代不是在「修时序」,而是在「暴露问题」。首轮完整 STA 报告跑出来后,典型会发现几类此前根本没暴露的东西:SDC 约束本身的缺陷(漏写的 false path、错误的 clock group)、跨模块接口的时序预算错误、物理实现阶段的拥塞热点反映到关键路径上。这些问题每一个都可能要求回综合或回布局布线,一来一回就是一轮。
下面这张对比卡把新模块和成熟设计的迭代特征放在一起,可以看到两者的差异不只是轮数,而是从违例来源到每轮修复手段的整个构成都不同。
读这张卡抓一个要点:左右两栏的本质差异是「违例类型构成」。新模块的违例里混着约束错误、结构缺陷和真正的时序违例;成熟设计的违例几乎只剩真正的物理时序问题。后者才是 ECO 几刀就能修掉的,前者每一轮都可能推翻一部分前一轮的工作。这也是为什么问「多少轮」之前要先问「设计处于什么阶段」。
二、收敛判据一:WNS/TNS 趋势
WNS(Worst Negative Slack,最差负裕量)和 TNS(Total Negative Slack,总负裕量)是每轮签核后最先看的两个数。健康的收敛曲线是:WNS 逐轮向 0 靠拢,TNS 下降速度比 WNS 更快——这说明你不仅在修最差的那条路径,也在成片地消灭违例。
真正需要警惕的曲线形态有三种:WNS 反复横跳(修 A 路径时动了共享逻辑,把 B 路径打爆);WNS 不动了但 TNS 还在涨(违例面在扩散);WNS 卡在 -20ps 左右若干轮不动(遇到了结构性瓶颈,ECO 手段已经不够,需要回 RTL 或重布局)。这三种形态都不能靠「再跑一轮」解决,对应的处置手段见 时序 ECO 方法论。
三、收敛判据二与三:违例集中度与类型构成
第二个判据是违例路径的集中度。把每轮的违例路径按起点/终点寄存器分组,如果违例从「散布在全芯片各个角落」逐轮收敛到「集中在两三个已知热点模块」,这是健康的;如果每轮冒出来的违例都在新的地方,说明约束或时钟树有问题,继续 ECO 只是在打地鼠。
第三个判据是违例类型构成。setup 违例多、hold 违例少,说明数据路径偏紧但时钟结构尚可;hold 违例成片出现往往是时钟树偏差问题;max transition/max capacitance 这类 DRC 型违例混在时序违例里,则提示要先修电气规则再谈时序。不同构成的处置优先级完全不同,详细的分诊流程见 STA 报告评审分诊流程。
下面这张思维导图把三个判据和它们对应的「健康/危险」信号组织在一起,可以作为每轮签核后自查的 checklist。

这张图的读法是自顶向下:三个判据是并列的第一层,每个判据下挂「健康」与「危险」两组信号;最下面一支单独放「轮数」,提醒它只是前三个判据共同作用的结果,而不是可以独立优化的目标。每轮跑完 STA,按这三个判据各打一次分,比盯着轮数计数器有用得多。
四、一个典型的迭代例子
以一个新做的 200 万门级模块为例,一条典型的签核迭代路径是:
| 轮次 | 主要动作 | WNS(setup) | 违例构成 |
|---|---|---|---|
| 第 1 轮 | 全 corner 首跑 | -380 ps | 大量接口违例 + 约束缺陷 |
| 第 2 轮 | 修 SDC、补 false path | -210 ps | 接口违例消失,热点浮现 |
| 第 3-5 轮 | 回综合/重布局热点模块 | -95 ps → -40 ps | 集中到 2 个模块 |
| 第 6-8 轮 | ECO:VT swap、单元放大、插 buffer | -15 ps → 0 | 零星 setup + 少量 hold |
| 第 9 轮 | 复跑全 corner 确认 | 0 | 干净 |
这条曲线里值得注意的不是「9 轮」这个数字,而是第 3 到 5 轮那段平台期——WNS 从 -95 到 -40 走得慢,因为结构性问题必须回物理实现修,每轮要等完整流程。如果第 5 轮还看不到收敛迹象,就该启动降级预案(降频目标或砍功能),而不是继续赌下一轮。迭代的追踪与看板化做法可参考 ECO 迭代收敛追踪。
五、常见误区
- 误区一:轮数越少团队越厉害。 首轮干净往往只是因为约束没写全、corner 没跑全。把「首轮零违例」当 KPI,会诱导团队少跑 corner。
- 误区二:轮数多就是失败。 新模块 8 轮收口、每轮趋势向好,远好于 3 轮但每轮违例漂移。轮数要和趋势一起看。
- 误区三:只看 setup 不看 hold。 setup 干净后 hold 违例成片冒出来是常见剧本,签核口径必须是 setup 和 hold 同时清零。
- 误区四:把 WNS=0 当终点。 还要确认 unconstrained endpoint 为零、所有 mandatory check(max tran/cap/fanout)干净,签核清单见 流片前最终检查流程。
这一篇在知识体系里的位置
本篇回答「迭代多少轮」这个量级与判据问题,属于时序签核方法论簇的入门问答。向上,完整的收敛策略见 时序收敛迭代方法论;向下,具体每轮怎么修见 时序 ECO 方法论,签核工具侧的实践见 PrimeTime 签核 STA。想先搞懂每轮迭代里那份报告在看什么,推荐 建立时间检查原理:从公式推导到 OpenSTA 报告逐列解读。
一句话总结
时序签核没有固定轮数:新模块初签 5 到 10 轮、成熟设计例行签核 1 到 3 轮是常见的量级;真正能告诉你「快收口了」的不是轮数计数器,而是 WNS/TNS 单调改善、违例向已知热点集中、违例类型退化为可 ECO 修复的零星问题这三条趋势信号。