3. 时序基础回顾:组合逻辑与时序逻辑、建立时间与保持时间、时钟周期与路径延迟

做逆向分析,说白了就是在没有原始设计文档的情况下,把网表里的电路逻辑给“读”出来。但不管你怎么读,最终都绕不开一个核心问题——时序。你想想看,一个芯片能不能正常工作,能不能跑到目标频率,全看时序满不满足。我这些年拆过的网表,十有八九的bug都跟时序理解不到位有关。

所以这一节,咱们把时序基础好好捋一捋。别嫌基础,越是基础的东西,越容易在关键时刻掉链子。

3.1 组合逻辑与时序逻辑

先问个问题:网表里那么多标准单元,你怎么一眼看出哪些是组合逻辑,哪些是时序逻辑?

组合逻辑,输出只取决于当前输入。说白了就是“即时响应”——输入一变,输出跟着变。常见的组合逻辑单元有:AND、OR、NAND、NOR、XOR、MUX、AOI(与或非)、OAI(或与非)等等。

时序逻辑,输出不仅取决于当前输入,还取决于之前的状态。它是有“记忆”的。最常见的时序单元就是D触发器(DFF),还有锁存器(Latch)。

关键区别:组合逻辑没有存储能力,时序逻辑有存储能力。在网表里,时序逻辑的输入端通常有一个时钟引脚(CK或CLK),这是最明显的识别标志。

我在项目中遇到过一种情况:有人把锁存器当成了组合逻辑来分析,结果整个路径的时序分析全错了。嗯,这里要注意——锁存器虽然是时序逻辑,但它在电平敏感期间是“透明”的,这个特性经常让人混淆。

举个简单的例子,一个D触发器的Verilog描述:

always @(posedge clk)
    q <= d;

这个DFF在时钟上升沿采样数据。而组合逻辑呢,比如一个二输入与门:

assign y = a & b;

没有时钟,没有存储,纯粹的组合。

3.2 建立时间与保持时间

这两个概念,是时序分析的基石。我建议你把它刻在脑子里。

建立时间(Setup Time, Tsu):在时钟有效沿到来之前,数据必须保持稳定的最短时间。

保持时间(Hold Time, Th):在时钟有效沿到来之后,数据必须保持稳定的最短时间。

为什么会这样?因为D触发器内部是靠电容存储电荷的。数据需要提前稳定下来,让电容充到正确的电压(建立时间)。时钟沿来了之后,数据还不能马上撤,得让电容把电荷“锁住”(保持时间)。

避坑指南:我曾经在分析一个老工艺的网表时,发现保持时间违例特别多。后来一查,是因为那个工艺库的保持时间参数给得特别保守。如果你在做逆向分析时发现时序报告里保持时间违例一大堆,先别急着改电路,看看是不是工艺库参数的问题。

建立时间和保持时间的关系,可以用一个简单的时序图来表示:

时钟沿 时钟沿 数据变化 Tsu(建立时间) Th(保持时间)

3.3 时钟周期与路径延迟

时钟周期(Tclk)就是时钟信号重复一次的时间。比如一个1GHz的时钟,周期就是1ns。这个很好理解。

但真正关键的是——路径延迟。一条时序路径,从起点(通常是DFF的时钟端)到终点(下一个DFF的数据输入端),中间经过的所有组合逻辑和互连线的延迟之和,就是路径延迟。

路径延迟必须满足两个条件:

  1. 建立时间约束: Tclk >= Tck2q + Tcomb + Tsu + Tmargin
  2. 保持时间约束: Tck2q + Tcomb >= Th + Tmargin

其中:

  • Tck2q:时钟到Q输出的延迟
  • Tcomb:组合逻辑延迟
  • Tsu:建立时间
  • Th:保持时间
  • Tmargin:时序裕量

个人经验:我习惯在逆向分析时,先找出所有DFF的时钟端,然后沿着数据路径往前推。这样能快速定位关键路径。说白了,关键路径就是延迟最大的那条路,它决定了芯片能跑多快。

举个例子,假设一个路径的Tck2q=0.2ns,Tcomb=0.6ns,Tsu=0.1ns,那么最小时钟周期就是0.2+0.6+0.1=0.9ns,对应的最高频率约1.11GHz。如果实际时钟周期是1ns(1GHz),那还有0.1ns的裕量,没问题。

但如果Tcomb变成了0.7ns,那最小周期就是1.0ns,刚好卡在边界上。这种路径就是关键路径,需要重点关注。

参数 含义 典型值(28nm工艺)
Tck2q 时钟到Q输出延迟 0.1~0.3 ns
Tcomb 组合逻辑延迟 0.2~2.0 ns(取决于逻辑深度)
Tsu 建立时间 0.05~0.15 ns
Th 保持时间 0.02~0.08 ns

你想想看,如果保持时间不满足,数据还没锁住就被新数据冲掉了,这叫“保持时间违例”。这种问题在低速下可能测不出来,但一上高频就崩。我见过一个案例,芯片在实验室跑得好好的,到客户那边死活不稳定,最后查出来就是保持时间差了0.01ns。

嗯,这一节的内容就这些。记住:组合逻辑和时序逻辑的区别、建立时间和保持时间的含义、时钟周期和路径延迟的关系——这三样东西,是你在网表逆向分析中每天都要用的。


专注资料整理