STA 静态时序分析是什么?
一句话回答
STA(Static Timing Analysis,静态时序分析)是一种「不需要输入测试激励」的时序检查方法:它把电路里所有触发器到触发器的路径都枚举出来,沿路径累加单元和连线延迟,算出数据到达时间,再和要求的时钟周期比,检查每条路径的建立时间(setup)和保持时间(hold)是否满足,从而判断芯片能不能在目标频率下稳定跑。
它在查什么
- 建立时间 setup:数据必须在时钟有效沿到来之前提前稳定的时间。违例通常意味着这条路径太慢、频率上不去(可降频或优化逻辑解决)。
- 保持时间 hold:数据在时钟沿到来之后还必须保持稳定的时间。违例意味着数据太快冲过下一级,和频率无关,必须修(插缓冲延迟)。
- 工具(如 PrimeSpace/Tempus)读入门级网表 + SDC 约束 + 标准单元库延迟,输出每条路径的时序裕量 WNS(slack):正数满足,负数违例。
为什么不能只靠仿真
| 维度 | 门级仿真 | STA |
|---|---|---|
| 要不要激励 | 要,只能覆盖你写的测试场景 | 不要,枚举所有路径 |
| 覆盖完整性 | 没跑到的路径发现不了问题 | 理论上所有路径都检查 |
| 目的 | 验证功能对不对 | 验证时序满不满足 |
| 速度 | 慢 | 快,适合大规模签核 |
仿真哪怕 100 个用例全过,也只代表「这些输入下功能对」,无法证明没被激励触发的路径在目标频率下时序也满足。所以时序签核(signoff)必须跑 STA,而不是只看仿真。
常见坑
- 以为「仿真过了频率就能到」:功能对 ≠ 时序满足,两者分开验证。
- 约束写错或漏写:STA 结果完全依赖 SDC,时钟、false path、multicycle 给错会误报或漏报。
- 只修 setup 不管 hold:hold 违例在任何频率下都可能出错,流片后无法靠降频补救。
- 只看单一工况:真实签核要做多工艺角(最好/最差、不同温度电压),见时序收敛相关内容。
- 把异步/CDC 路径当同步路径做 STA:跨时钟域路径需要正确约束或用同步器处理。
总结
STA 是不依赖激励、枚举所有时序路径并累加延迟来检查 setup 和 hold 的静态方法,判断芯片在目标频率下能否稳定工作;门级仿真只能覆盖给定激励下的功能、无法保证全部路径时序,因此时序签核必须以 STA 为准,且约束(SDC)正确、多工况覆盖、setup/hold 都要收敛。