第三节:时序分析基础——建立时间与保持时间、时序路径、时钟抖动与偏斜

各位好,我是老李。今天咱们聊聊时序分析里最基础、也最绕不开的几个概念。说实话,我入行头两年,对这些东西的理解也是模模糊糊的。直到有一次,一个项目在tape-out前三天,后端同事跑过来跟我说:“老李,你这条路径保持时间违例了,改不改?” 我当时心里一紧——改,要动RTL,风险大;不改,芯片回来可能直接废掉。嗯,从那以后,我才真正把建立时间和保持时间刻在了脑子里。

3.1 建立时间与保持时间:触发器的“脾气”

每个触发器都有两个“脾气”。你必须在时钟沿到来之前,把数据准备好,这叫建立时间(Setup Time)。你还要在时钟沿到来之后,把数据稳住一段时间,这叫保持时间(Hold Time)。

说白了,建立时间就是“别迟到”,保持时间就是“别早退”。

核心公式(建立时间检查):

T_clk_to_q + T_comb_logic + T_setup <= T_clock_period + T_clock_skew

核心公式(保持时间检查):

T_clk_to_q + T_comb_logic >= T_hold + T_clock_skew

我在项目中遇到过一种情况:综合后的时序报告显示建立时间有200ps的余量,但保持时间却差了50ps。当时我以为是后端工具能自动修,结果发现那条路径的时钟偏斜太大,导致保持时间更难满足。所以,别光盯着建立时间,保持时间才是真正的“暗坑”。

我的个人习惯:在写RTL时,我会刻意避免在同一个时钟域内做太深的组合逻辑链。比如,超过15级LUT的路径,我一般会插入一级寄存器。这样做,建立时间好修,保持时间也更容易收敛。

3.2 时序路径:芯片里的“高速公路”

时序路径,你可以把它想象成芯片里的高速公路。数据从起点出发,经过组合逻辑,最终到达终点。STA工具会检查每一条路径,看看数据能不能在规定时间内跑完。

路径主要分三类:

  • 输入到输出(Input to Output): 从芯片的输入引脚到输出引脚。这种路径通常受IO接口时序约束影响,比如DDR接口的读写时序。
  • 寄存器到寄存器(Register to Register): 这是最核心的路径。从一个触发器的输出,经过组合逻辑,到另一个触发器的输入。我建议你重点盯住这类路径,因为90%的时序违例都出在这里。
  • 输入到寄存器(Input to Register)与寄存器到输出(Register to Output): 这两种路径涉及IO pad的延迟,需要结合芯片封装和PCB走线来约束。

你想想看,为什么寄存器到寄存器的路径最重要?因为芯片内部的工作频率,就是由这条路径的延迟决定的。我曾经优化过一个视频处理芯片,把一条关键路径的延迟从3.2ns降到了2.8ns,整个芯片的主频就从200MHz提到了250MHz。说白了,时序优化的本质,就是跟这些路径“死磕”。

避坑指南:我曾经犯过一个错误——在综合时只看了建立时间,忽略了保持时间。结果流片回来,芯片在低温下工作不稳定。后来一查,是保持时间违例导致数据采样错误。记住:建立时间决定你能跑多快,保持时间决定你能不能跑得稳。

3.3 时钟抖动与时钟偏斜:时钟的“不完美”

时钟信号不是完美的方波。它会有抖动,也会有偏斜。

时钟抖动(Clock Jitter): 指的是时钟沿在时间轴上的随机波动。说白了,就是时钟沿“晃了一下”。抖动主要来自PLL的相位噪声、电源噪声和热噪声。在STA中,抖动会吃掉你的建立时间余量。

时钟偏斜(Clock Skew): 指的是同一个时钟信号到达不同触发器的时刻差异。偏斜分为两种:

  • 正偏斜(Positive Skew): 目标触发器的时钟沿比源触发器晚到。这有利于建立时间,但不利于保持时间。
  • 负偏斜(Negative Skew): 目标触发器的时钟沿比源触发器早到。这有利于保持时间,但不利于建立时间。

我在项目中遇到过一种情况:后端工程师为了修建立时间,故意引入了正偏斜。结果保持时间反而违例了。这就是典型的“按下葫芦浮起瓢”。所以,时钟树综合(CTS)的目标是让偏斜尽可能小,而不是刻意利用偏斜去修时序。

时钟抖动与偏斜的典型值(以28nm工艺为例):

参数 典型值 影响
时钟抖动(周期抖动) ±30ps 主要影响建立时间
时钟偏斜(全局偏斜) ±50ps 同时影响建立时间和保持时间
时钟偏斜(局部偏斜) ±20ps 主要影响保持时间

嗯,这里要注意:在STA分析中,我们通常把抖动和偏斜都当作“不确定性”来处理。工具会从时钟周期里扣除这些不确定性,然后检查时序是否满足。说白了,就是“留点余量,别卡得太死”。

3.4 知识体系结构图

下面这张图,是我自己总结的时序分析核心逻辑。你可以把它当作一张“地图”,随时回来看看。

时序分析核心知识体系 建立时间与保持时间 时序路径 时钟抖动与偏斜 Setup检查公式 Hold检查公式 输入到输出 寄存器到寄存器 时钟抖动 时钟偏斜 核心目标:确保所有路径的建立时间和保持时间都满足 时钟抖动吃掉建立时间余量,时钟偏斜同时影响建立和保持时间 注:实际项目中,建立时间和保持时间需要同时满足,缺一不可

这张图把三个核心概念串在了一起。你从左边看起,建立时间和保持时间是触发器的基本要求;中间是时序路径,它们是检查的对象;右边是时钟的不确定性,它们是影响时序的“干扰因素”。三者合在一起,就是STA要解决的全部问题。

我的一个小技巧:在做时序分析时,我会先看建立时间,再看保持时间。如果建立时间违例,我会先优化组合逻辑或调整时钟频率。如果保持时间违例,我会检查时钟偏斜,或者在后端插入buffer。记住:建立时间靠“减延迟”,保持时间靠“加延迟”。

好了,这一节的内容就到这里。时序分析是低功耗设计的基础,你把这些概念吃透了,后面讲功耗优化、多电压域、时钟门控,你才能听得明白。嗯,咱们下一节见。

可可精品资料库