2. 时序分析基础:建立时间与保持时间、时钟周期与路径延迟、时序路径分类
各位同学,咱们今天聊聊时序分析。说实话,这是整个数字芯片设计里最绕不开的一关。我见过太多新手,RTL写得飞起,一跑STA就懵了。嗯,我自己也踩过不少坑,今天就把这些经验掰开揉碎讲给你听。
2.1 建立时间与保持时间——寄存器的“脾气”
先问个问题:寄存器到底怎么工作的?说白了,它就是个“听话”的存储单元。但它的“听话”是有条件的——你得在它规定的时间窗口内把数据送过来。
建立时间(Setup Time, Tsu):时钟有效沿到来之前,数据必须稳定住的最短时间。你想想看,寄存器内部需要一点时间去“看清”数据,如果数据变来变去,它就读错了。
保持时间(Hold Time, Th):时钟有效沿到来之后,数据必须继续稳定的最短时间。为什么?因为时钟沿过去那一瞬间,寄存器内部还在“消化”数据,你这时候把数据抽走,它就消化不良了。
核心公式(必须刻在脑子里):
- 建立时间约束:Tclk ≥ Tcq + Tlogic + Tsu + Tskew(实际是Tclk - Tskew ≥ Tcq + Tlogic + Tsu)
- 保持时间约束:Tcq + Tlogic ≥ Th + Tskew
我在一个项目里遇到过这样的情况:综合后时序报告显示建立时间违例,我加了好几级流水线,结果保持时间又出问题了。这就是典型的“按下葫芦浮起瓢”。
避坑指南:我曾经在某个28nm项目里,因为忽略了时钟树综合后的时钟偏斜(clock skew),导致保持时间批量违例。后来花了整整两天手动修。记住:建立时间看最差路径,保持时间看最好路径。
2.2 时钟周期与路径延迟——速度的博弈
时钟周期决定了你的芯片能跑多快。1GHz的时钟,周期就是1ns。你想想看,1ns内你要完成寄存器输出、组合逻辑计算、再到下一个寄存器建立,时间非常紧张。
路径延迟由三部分组成:
- Tcq:时钟到Q输出的延迟。这是寄存器本身的物理特性,工艺定了它就定了。
- Tlogic:组合逻辑延迟。这是我们可以优化的重点。
- Tnet:互连线延迟。随着工艺节点下降,这个占比越来越高。
| 工艺节点 | Tcq典型值 | Tlogic典型值 | Tnet占比 |
|---|---|---|---|
| 28nm | ~50ps | ~200ps | ~30% |
| 7nm | ~30ps | ~100ps | ~50% |
| 5nm | ~20ps | ~60ps | ~65% |
看到没?随着工艺进步,互连线延迟越来越“嚣张”。我个人习惯在早期评估时,就按40%的互连线余量来估算,这样后期压力会小很多。
2.3 时序路径分类——四种“路况”
静态时序分析把路径分成四类。你搞清楚这四类,STA就掌握了一半。
- 输入到寄存器路径:从芯片输入端口到第一个寄存器的D端。这里要小心输入延迟约束。
- 寄存器到寄存器路径:最经典的路径,也是我们优化的主战场。
- 寄存器到输出路径:从最后一个寄存器的Q端到芯片输出端口。输出负载会影响延迟。
- 输入到输出路径:纯组合逻辑路径。这种路径在高速设计中尽量少用。
我的经验:寄存器到寄存器路径占了芯片中90%以上的时序路径。所以,当你遇到时序问题时,先看这部分的报告。我曾经有个项目,90%的违例都集中在一条关键路径上,最后发现是综合时没加合理的约束。
下面这张图,是我自己总结的时序分析知识体系。你把它存下来,每次做STA前看一眼,思路会清晰很多。
最后说一句:时序分析不是跑完工具就完事了。你得理解每条违例背后的物理意义。是组合逻辑太深?是扇出太大?还是时钟偏斜没控制好?搞清楚了这些,你才能真正做到“时序收敛与面积优化”的平衡。
本章要点速记:
- 建立时间看“最慢”的路径,保持时间看“最快”的路径
- 时钟周期 = 路径延迟 + 建立时间 + 余量
- 四种路径中,寄存器到寄存器是优化重点
- 互连线延迟在先进工艺下不可忽视
可可精品资料库