第三节:网表结构基础——门级网表的构成与时钟复位单元

各位同学,今天咱们聊聊门级网表。这东西说白了,就是芯片设计的「施工图纸」。RTL 代码是建筑师的概念图,而门级网表就是给施工队看的钢筋水泥布置图。

我刚开始接触逆向工程时,面对一堆门级网表,说实话,头大。但后来发现,只要抓住几个关键点,这东西其实挺有规律的。

3.1 门级网表长什么样?

门级网表,本质上是一个文本文件。它描述的是:哪些标准单元被使用了,它们之间怎么连线的

举个例子,一个简单的 D 触发器(DFF)在网表里可能是这样的:

DFF_X1 U_FF1 ( .CK(clk), .D(data_in), .Q(data_out) );

你看,这行代码告诉了我们三件事:

  • 单元类型:DFF_X1 —— 这是一个 D 触发器,驱动能力为 X1
  • 实例名:U_FF1 —— 这个单元在电路里的名字
  • 端口连接:.CK(clk) 表示时钟引脚接在 clk 网络上

我个人习惯,拿到网表第一件事,就是先扫一遍所有的单元类型。看看有哪些 DFF、哪些 latch、哪些 buffer。这能快速判断出设计的大致风格。

3.2 标准单元库里的时钟与复位单元

标准单元库,你可以把它想象成一个乐高零件箱。里面摆满了各种功能的小积木。对于时钟和复位网络,我们最关心的是以下几类:

3.2.1 时钟缓冲器(Clock Buffer)

时钟信号在芯片里要跑很长的距离,还要驱动很多触发器。信号会衰减,会变形。这时候就需要时钟缓冲器来「接力」。

常见的时钟缓冲器有:

  • CLKBUF_X1, CLKBUF_X2:普通时钟缓冲器,数字越大驱动能力越强
  • CLKINV_X1:时钟反相器,用于产生反相时钟
  • ICG_X1:集成时钟门控单元,这个后面会重点讲

关键点:时钟缓冲器和普通缓冲器有什么区别?

说白了,时钟缓冲器在版图设计上更讲究。它的上升沿和下降沿的延迟更对称,占空比失真更小。我在项目中遇到过,有人用普通 buffer 代替时钟 buffer,结果时钟占空比歪了,芯片直接没法正常工作。

3.2.2 复位单元

复位信号负责把电路初始化到一个已知状态。常见的复位单元有:

单元名称 功能描述 典型应用场景
DFF_X1 不带复位的 D 触发器 数据路径,不需要复位
DFFR_X1 带异步复位的 D 触发器 复位信号不依赖时钟
DFFS_X1 带异步置位的 D 触发器 需要初始化为高电平
DFFRN_X1 带异步低电平有效复位的 D 触发器 低电平复位设计

嗯,这里要注意:复位信号的名字往往能透露很多信息。比如叫 rst_n 的,大概率是低电平有效;叫 reset 的,可能是高电平有效。但别太相信名字,我见过太多命名不规范的设计了。

3.2.3 时钟门控单元(ICG)

ICG 是低功耗设计里的明星单元。它的作用很简单:当不需要时钟时,把时钟关掉

一个典型的 ICG 单元内部结构是这样的:

// 集成时钟门控单元的内部逻辑
// 输入:CLK, EN
// 输出:GCLK

// 实际上是一个 latch + AND 门
latch (EN, CLK, EN_LATCHED);
AND (CLK, EN_LATCHED, GCLK);

为什么用 latch 而不用触发器?因为 latch 是电平敏感的,可以避免毛刺。我曾经在逆向一个低功耗芯片时,发现整个时钟树里密密麻麻全是 ICG 单元。那感觉,就像在迷宫里找路标一样。

3.3 如何快速识别时钟和复位网络?

拿到网表后,我一般按这个步骤来:

  1. 找全局信号:扫描网表里出现频率最高的网络名。通常 clkclockrstreset 这些名字会反复出现。
  2. 找特殊单元:搜索 CLKBUFICGDFFR 这些关键词。它们的位置就是时钟和复位的「骨架」。
  3. 追踪扇出:从时钟输入端口开始,一路追踪 buffer 链。看看哪些单元被同一个时钟信号驱动。

小技巧:在大型网表里,直接用文本搜索 .CK( 可以快速找到所有触发器的时钟引脚连接。再用 .RN(.SN( 找到复位和置位引脚。

3.4 知识体系结构图

下面这张图,是我自己总结的门级网表分析框架。你看一眼,心里就有谱了:

门级网表分析框架 门级网表(Gate-level Netlist) 标准单元实例 互连网络(Net) 端口连接关系 时钟相关单元 • 时钟缓冲器(CLKBUF) • 时钟门控(ICG) • 时钟反相器(CLKINV) 复位相关单元 • 异步复位DFF(DFFR) • 异步置位DFF(DFFS) • 复位缓冲器 其他关键单元 • 普通DFF(无复位) • 锁存器(Latch) • 多路选择器(MUX) 分析方法:扫描单元类型 → 追踪时钟树 → 识别复位结构 → 构建时序路径 输出:时钟复位网络拓扑图

3.5 避坑指南

我曾经踩过的坑,你们别踩了:

  • 别信名字:网表里叫 clk 的不一定是时钟,可能是数据信号。一定要看它连到了什么单元上。
  • 注意电平极性:复位信号有高有效和低有效之分。搞反了,整个分析就全错了。
  • 小心时钟门控:ICG 单元的输出才是真正的时钟。别把 ICG 的输入时钟当成最终时钟。

好了,这一节的内容就这些。记住,门级网表分析的核心就是:认单元、追连线、找结构。多练几次,你也能一眼看出门道。


公众号:蓝海资料掘金营,微信deep3321