3、握手时序分析基础:时序路径分类、建立时间与保持时间、时钟偏斜对握手的影响、组合逻辑延迟分析

各位同学,今天我们来聊聊握手时序分析的基础。说实话,我刚入行那会儿,觉得时序分析就是跑个工具,看看有没有红色报错就完事了。直到有一次,我设计的异步FIFO在实验室死活跑不到目标频率,示波器上一看,数据采样全乱了。嗯,从那以后,我才真正开始重视这些基础概念。

3.1 时序路径分类

握手信号在芯片里跑来跑去,总要经过不同的路径。我习惯把时序路径分成三类,这样分析起来思路清晰很多。

  • 寄存器到寄存器路径:这是最常见的路径。数据从发送端的寄存器出发,经过组合逻辑,到达接收端的寄存器。说白了,就是两个触发器之间的连线。
  • 输入到寄存器路径:数据从芯片的输入引脚进来,经过一些缓冲和组合逻辑,最终被寄存器采样。这里要注意,输入引脚的延迟往往很大,容易成为瓶颈。
  • 寄存器到输出路径:数据从寄存器出来,经过输出缓冲,送到芯片外部。我遇到过不少设计,内部时序没问题,但输出路径太长,导致外部设备采样失败。

重点提醒:握手协议中,valid和ready信号各自都有自己的时序路径。你想想看,如果valid路径延迟大,ready路径延迟小,那接收端可能还没准备好,数据就已经被采样了——这就会出大问题。

3.2 建立时间与保持时间

这两个概念,是时序分析的基石。我见过太多工程师把建立时间和保持时间搞混,结果流片回来芯片没法正常工作。

建立时间(Setup Time):在时钟有效沿到来之前,数据必须保持稳定的最短时间。说白了,就是数据要提前到场,不能迟到。

保持时间(Hold Time):在时钟有效沿到来之后,数据必须保持稳定的最短时间。也就是说,数据不能刚被采样就溜走。

为什么会这样?因为寄存器内部需要一段时间来锁存数据。如果数据变化太快,寄存器就会进入亚稳态,输出不确定的值。

我的经验:我曾经调试过一个握手接口,数据偶尔会出错。查了半天,发现是保持时间违例。数据在时钟沿之后变化太快,寄存器没来得及锁存。解决办法很简单,在路径上加两级缓冲,增加延迟,问题就解决了。

建立时间和保持时间的检查公式如下:

// 建立时间检查
T_clk + T_skew >= T_co + T_logic + T_setup

// 保持时间检查
T_co + T_logic >= T_hold + T_skew

其中:

  • T_clk:时钟周期
  • T_skew:时钟偏斜
  • T_co:寄存器时钟到输出的延迟
  • T_logic:组合逻辑延迟
  • T_setup:建立时间
  • T_hold:保持时间

3.3 时钟偏斜对握手的影响

时钟偏斜,说白了就是时钟信号到达不同寄存器的时间不一样。这在握手时序中是个大麻烦。

我举个例子。假设发送端和接收端用的时钟源相同,但走线长度不同。发送端的时钟早到了0.5ns,接收端的时钟晚到了0.5ns。这样一来,发送端的数据已经发出去了,接收端却还没收到时钟沿,数据就白白丢失了。

注意:时钟偏斜对建立时间和保持时间的影响是相反的。正偏斜(接收端时钟晚到)有利于建立时间,但不利于保持时间。负偏斜则相反。你设计时一定要权衡好。

我曾经在一个多时钟域的设计中,因为时钟偏斜没处理好,导致握手信号频繁出错。后来我用了时钟树综合工具,把偏斜控制在50ps以内,问题才解决。

3.4 组合逻辑延迟分析

组合逻辑延迟,就是信号从输入到输出经过的所有门电路的延迟总和。握手信号中,valid和ready信号都会经过组合逻辑,延迟大小直接影响握手效率。

我习惯把组合逻辑延迟拆成两部分来看:

  • 门延迟:每个逻辑门(与门、或门、非门等)的固有延迟。这个跟工艺有关,一般工艺库会给出典型值。
  • 线延迟:信号在金属线上传输的延迟。随着工艺节点缩小,线延迟占比越来越大。在7nm工艺下,线延迟可能占到总延迟的70%以上。

组合逻辑延迟的分析方法,我推荐用静态时序分析(STA)工具。但工具归工具,你心里要有数。我一般会先估算一下:

// 估算组合逻辑延迟
T_logic = N * T_gate + L * T_wire

其中:
N = 逻辑级数
T_gate = 每级门延迟(约20-50ps,取决于工艺)
L = 连线长度(mm)
T_wire = 每毫米线延迟(约50-100ps/mm)

避坑指南:我曾经设计过一个握手接口,组合逻辑级数达到了15级。结果时序分析发现,建立时间违例严重。后来我把逻辑拆成两级流水线,每级7-8级逻辑,时序就收敛了。记住,组合逻辑级数一般不要超过10级,否则时序很难收。

另外,组合逻辑延迟还会受温度、电压、工艺角的影响。我建议你在设计时留出20%的余量,别卡得太死。否则芯片一量产,良率可能惨不忍睹。

3.5 本章知识体系

下面这张图,是我自己画的时序分析知识体系。你可以把它当作一个思维导图,方便理解各个概念之间的关系。

握手时序分析基础 时序路径分类 寄存器到寄存器路径 输入到寄存器路径 寄存器到输出路径 建立与保持时间 建立时间:数据提前到场 保持时间:数据不能溜走 亚稳态风险 时钟偏斜影响 正偏斜:有利建立时间 负偏斜:有利保持时间 时钟树综合控制偏斜 组合逻辑延迟分析 门延迟(工艺相关) 线延迟(占比越来越大) 逻辑级数控制(≤10级)

这张图把时序路径、建立保持时间、时钟偏斜、组合逻辑延迟串在了一起。你仔细看看,其实它们之间是相互影响的。比如,组合逻辑延迟大了,建立时间就容易违例;时钟偏斜大了,保持时间又可能出问题。所以,分析握手时序时,一定要综合考虑这些因素。

好了,这一章的内容就到这里。记住,时序分析不是跑个工具就完事了,你得理解背后的原理。下次遇到时序违例,别急着加流水线,先看看是哪个路径出了问题,再对症下药。

可可精品资料库