1. STA概述:什么是静态时序分析,为什么需要STA,STA与动态仿真的区别

1.1 什么是静态时序分析

静态时序分析,说白了就是检查你的芯片能不能跑在目标频率上。

我刚开始做设计时总觉得这步可有可无。直到有一次流片回来,芯片死活上不了高频……嗯,从那以后我再也不敢跳过STA了。

静态时序分析(Static Timing Analysis,简称STA)是一种穷举式的时序验证方法。它会分析电路中所有可能的路径,检查每条路径上的信号传播时间是否满足设定的时序约束。

关键点在于「静态」这两个字。什么意思呢?就是不需要输入激励,不需要仿真波形,直接根据电路的结构和单元库的时序参数来计算。

核心思想:STA遍历所有时序路径,验证每个触发器的建立时间和保持时间是否满足要求。

1.2 为什么需要STA

你想想看,一个现代SoC芯片里有多少个触发器?几百万甚至上亿个。每个触发器都有建立时间和保持时间的要求。如果用手工去算,那是不可能的任务。

STA存在的理由,我总结为三点:

  • 保证芯片功能正确 —— 时序违规会导致数据采样错误,芯片直接罢工
  • 确保芯片能跑在目标频率 —— 比如你要做1GHz的设计,STA告诉你最差路径只能跑到800MHz,那你就得改
  • 发现潜在风险 —— 温度变化、工艺偏差、电压波动,这些都会影响时序

我记得有一次做28nm的项目,后端说时序收敛了。我拿STA报告一看,有个路径的setup slack只有2ps。2ps啊!温度一波动就完蛋。后来果然,高温测试时芯片就挂了。这就是STA的价值——提前发现问题。

注意:STA只能检查同步时序电路。对于异步电路、跨时钟域路径,STA无法完全覆盖,需要配合其他验证手段。

1.3 STA与动态仿真的区别

很多新手会问:我做了仿真,为什么还要做STA?

这个问题我当年也问过我的导师。他的回答很直接:「仿真只能验证你测到的,STA能验证你没测到的。」

两者的区别,我用一个表格来说明:

对比项 静态时序分析(STA) 动态仿真
验证方式 穷举所有路径 基于测试向量
输入要求 网表+约束+库文件 网表+测试激励
覆盖范围 100%时序路径 取决于激励质量
运行速度 快(分钟级) 慢(小时甚至天级)
功能验证 不能 可以
时序验证 可以 有限

说白了,动态仿真就像抽查——你写1000个测试用例,可能只覆盖了20%的路径。而STA像普查——所有路径都给你过一遍。

但STA也有短板。它只看时序,不看功能。举个例子:一个加法器,STA能告诉你信号从输入到输出需要多少纳秒,但它不知道加法结果对不对。功能正确性还得靠仿真。

我的建议:STA和动态仿真不是二选一,而是互补的。先做功能仿真保证逻辑正确,再做STA保证时序收敛。两个都过了,芯片才能放心去流片。

1.4 什么时候做STA

在实际项目中,STA不是只在最后才做。我个人习惯是分阶段进行:

  1. RTL阶段 —— 初步评估,看看关键路径的时序大概什么水平
  2. 综合后 —— 检查综合结果是否满足约束,不满足就调整
  3. 布局布线后 —— 最精确的STA,带寄生参数的时序分析
  4. 签核阶段 —— 最终确认,所有corner都要过

我曾经见过一个团队,等到流片前一周才做STA。结果发现几十条路径不满足时序,改都来不及。最后只能降频使用,损失惨重。

所以我的经验是:STA要尽早做,频繁做。每做完一次综合就跑一遍STA,发现问题及时修。别等到最后才来抱佛脚。

1.5 一个简单的STA示例

为了让你更直观地理解STA在做什么,我写一个简单的例子:

// 假设有一个简单的寄存器到寄存器的路径
// 时钟周期为 10ns(100MHz)

// 数据路径延迟:
// - 寄存器1的时钟到输出延迟 (CK->Q):0.5ns
// - 组合逻辑延迟:6.0ns
// - 布线延迟:1.5ns
// - 寄存器2的建立时间:0.3ns

// 计算建立时间余量 (Setup Slack):
// 数据到达时间 = 0.5 + 6.0 + 1.5 = 8.0ns
// 数据要求时间 = 10.0 - 0.3 = 9.7ns
// Setup Slack = 9.7 - 8.0 = 1.7ns  ✅ 满足

// 如果组合逻辑延迟变成 8.5ns:
// 数据到达时间 = 0.5 + 8.5 + 1.5 = 10.5ns
// Setup Slack = 9.7 - 10.5 = -0.8ns  ❌ 违规

这个例子虽然简单,但STA的核心逻辑就是这样——算时间,比大小,看余量。

实际项目中,路径会更复杂,有几百级逻辑,有各种工艺角,有OCV(片上工艺偏差)等等。但本质不变。

一句话总结:STA就是给芯片做「体检」,看看它能不能在规定的速度下正常工作。不做STA就流片,那是在赌运气。

好了,第一章就到这里。下一章我会讲STA的基本概念——什么是路径、什么是时序弧、什么是约束。这些是STA的基础,搞懂了后面就顺了。