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就掌握了一半。

  1. 输入到寄存器路径:从芯片输入端口到第一个寄存器的D端。这里要小心输入延迟约束。
  2. 寄存器到寄存器路径:最经典的路径,也是我们优化的主战场。
  3. 寄存器到输出路径:从最后一个寄存器的Q端到芯片输出端口。输出负载会影响延迟。
  4. 输入到输出路径:纯组合逻辑路径。这种路径在高速设计中尽量少用。

我的经验:寄存器到寄存器路径占了芯片中90%以上的时序路径。所以,当你遇到时序问题时,先看这部分的报告。我曾经有个项目,90%的违例都集中在一条关键路径上,最后发现是综合时没加合理的约束。

下面这张图,是我自己总结的时序分析知识体系。你把它存下来,每次做STA前看一眼,思路会清晰很多。

时序分析基础知识体系 时序分析基础 建立时间与保持时间 Tsu: 时钟沿前数据需稳定 Th: 时钟沿后数据需保持 违例修复: 加流水线/降频率 时钟周期与路径延迟 Tclk = 1 / Fclk Tpath = Tcq + Tlogic + Tnet 余量 = Tclk - Tpath - Tsu 时序路径分类 输入→寄存器 寄存器→寄存器(核心) 寄存器→输出 输入→输出(组合逻辑) 核心思想:建立时间决定最高频率,保持时间决定功能正确性 两者必须同时满足,芯片才能正常工作

最后说一句:时序分析不是跑完工具就完事了。你得理解每条违例背后的物理意义。是组合逻辑太深?是扇出太大?还是时钟偏斜没控制好?搞清楚了这些,你才能真正做到“时序收敛与面积优化”的平衡。

本章要点速记:

  • 建立时间看“最慢”的路径,保持时间看“最快”的路径
  • 时钟周期 = 路径延迟 + 建立时间 + 余量
  • 四种路径中,寄存器到寄存器是优化重点
  • 互连线延迟在先进工艺下不可忽视

可可精品资料库