1. STA基础概念:什么是静态时序分析,为什么需要STA,STA在芯片设计流程中的位置
1.1 静态时序分析到底是什么?
静态时序分析,说白了就是检查你的芯片能不能跑在目标频率上。
我刚开始做设计时,总觉得这步可有可无。直到有一次流片回来,芯片死活上不了高频……嗯,从那以后我再也不敢跳过STA了。
静态时序分析是一种穷举式的时序验证方法。它不需要输入激励,而是遍历所有可能的路径,检查每条路径上的信号传播时间是否满足约束。
你想想看,一个几千万门的芯片,如果靠动态仿真一条条路径去跑,跑到猴年马月也跑不完。但STA不一样,它一次性把所有路径都检查了。
核心要点:STA验证的是「数据从起点到终点,能不能在规定时间内到达」。
1.2 为什么我们需要STA?
这个问题我问过很多新人。他们的第一反应是:「为了确保芯片能工作啊。」
对,但不全对。
我个人的理解是,STA存在的意义有三个方面:
- 保证功能正确:时序违规会导致数据采样错误,芯片直接罢工
- 保证性能达标:你的芯片标称1GHz,结果只能跑800MHz,这谁受得了?
- 保证良率:工艺角、温度、电压变化下,芯片依然能稳定工作
我曾经接手过一个项目,前端设计人员拍着胸脯说时序没问题。结果STA一跑,setup violation上千条。你猜怎么着?他们用的约束根本不对。所以啊,STA不是可有可无的,它是芯片设计的最后一道防线。
个人经验:我建议在RTL阶段就开始做初步的STA评估,不要等到后端布局布线完了再跑。那时候发现问题,改起来成本太高了。
1.3 STA在芯片设计流程中的位置
芯片设计流程大致是这样的:
| 阶段 | STA的作用 | 我的建议 |
|---|---|---|
| RTL设计 | 初步时序评估 | 用综合后的网表跑一次,心里有个底 |
| 逻辑综合 | 检查综合后时序 | 这里要仔细看,综合工具不一定靠谱 |
| 布局规划 | 评估floorplan影响 | 重点关注长线延迟 |
| 时钟树综合 | 检查时钟偏差 | skew超标的话,后面很难救 |
| 布线 | 最终时序签收 | 这是最后的机会,务必跑全corner |
| 签收 | STA sign-off | 所有violation必须清零 |
你看,STA贯穿了整个后端流程。它不是最后才做的事情,而是每一步都要做。
我记得有一次,在布局阶段发现了一条关键路径的时序特别差。当时我建议调整floorplan,把两个模块放近一些。项目经理觉得麻烦,说「后面布线再优化吧」。结果呢?布线阶段花了三倍的时间去修这条路径,最后还是没修干净。从那以后,我坚持每个阶段都要跑STA,发现问题尽早处理。
1.4 STA的两个核心检查
STA主要做两件事:setup检查和hold检查。
- Setup检查:数据必须在时钟沿之前稳定下来。说白了就是「别迟到」。
- Hold检查:数据必须在时钟沿之后保持稳定。说白了就是「别早退」。
这两个检查缺一不可。setup不满足,芯片跑不快;hold不满足,芯片根本没法跑。
避坑指南:我曾经遇到过一个案例,setup全部满足,但hold violation一大堆。原因是时钟树做得太激进,skew太大。所以做STA时,setup和hold要一起看,不能只看一个。
1.5 STA的输入输出
做STA需要哪些东西?我列一下:
- 网表:综合或布局布线后的电路连接
- 约束文件:SDC,告诉工具你的时钟、输入输出延迟等
- 工艺库:标准单元的延迟信息
- 寄生参数:SPEF,包含互连线的电阻电容
输出呢?就是一份时序报告。里面会告诉你哪些路径违规了,违规了多少。
我个人的习惯是,拿到时序报告后先看最差的几条路径。如果最差的路径都只差一点点,那问题不大。如果最差的路径差了很多,那就要考虑是不是约束有问题,或者设计本身就有缺陷。
1.6 小结
静态时序分析不是什么高深莫测的东西。它就是一把尺子,量一量你的芯片能不能在目标频率下正常工作。
做STA这么多年,我最大的体会是:不要等到最后才跑STA。越早发现问题,改起来越轻松。这个道理,很多新人要吃过亏才能明白。
下一章,我会讲STA的基本流程和工具链。到时候咱们再细聊。