2、数字芯片设计基础回顾:从RTL到GDSII的流程,综合、布局布线、制造

做逆向工程,你得先知道正向设计是怎么走的。

这话听起来像废话,但我在带新人时发现,很多人对着一个芯片版图发呆,根本不知道这些金属层、标准单元是怎么来的。说白了,你不懂正向流程,逆向时连线索都找不到。

这一节,我带你快速过一遍从RTL到GDSII的完整流程。重点讲综合、布局布线、制造这三个核心环节。嗯,都是干货。

2.1 整体流程:从代码到芯片

一个数字芯片从设计到量产,大致走这么几步:

  1. RTL设计——用Verilog/VHDL写逻辑功能
  2. 功能验证——仿真跑起来,看功能对不对
  3. 逻辑综合——把RTL转成门级网表
  4. 布局规划与布局布线——把门级网表摆到芯片上,连好线
  5. 物理验证——检查DRC、LVS,确保版图没问题
  6. 流片(Tape-out)——把GDSII文件交给晶圆厂
  7. 制造与测试——晶圆厂生产,然后封装测试

你想想看,逆向工程其实就是把这个流程倒着走一遍。从GDSII版图反推出门级网表,再从网表还原出RTL代码。所以,每一步你都得知道它干了什么,留下了什么痕迹。

核心知识点:正向设计是「抽象→具体」,逆向工程是「具体→抽象」。你越懂正向设计,逆向时就越能猜出设计者的意图。

从RTL到GDSII的完整流程 RTL设计 功能验证 逻辑综合 布局布线 物理验证 流片(Tape-out) 制造与测试 GDSII 文件 逆向工程起点

2.2 逻辑综合:RTL到门级网表

综合这一步,说白了就是把你的Verilog代码翻译成由标准单元(与门、或门、触发器、MUX等)组成的网表。

我刚开始做设计时,总觉得综合就是「翻译」,后来踩了坑才明白——综合其实是「优化」。同样的功能,不同的写法,综合出来的面积和速度天差地别。

举个例子:

// 写法A:直接描述
always @(posedge clk) begin
  if (rst)
    q <= 8'b0;
  else if (en)
    q <= d;
end

// 写法B:用MUX描述
wire [7:0] mux_out = en ? d : q;
always @(posedge clk) begin
  if (rst)
    q <= 8'b0;
  else
    q <= mux_out;
end

这两种写法综合出来的电路完全一样。但如果你写了一些奇怪的组合逻辑环路,综合工具会给你报错,或者默默帮你「优化」掉——嗯,那才是真正的坑。

个人经验:我在做逆向时,经常通过观察门级网表中的标准单元类型,来判断原始RTL的写法风格。比如大量使用MUX2的,说明设计者喜欢用条件表达式;大量使用AOI(与或非)复合门的,说明设计者对面积有极致追求。

2.3 布局布线:把网表变成物理版图

综合完,你得到的是一个「逻辑上正确」的网表。但芯片是物理存在的,你得把这些门摆到硅片上,再用金属线连起来。

布局布线分两步:

  • 布局(Placement)——决定每个标准单元放在芯片的哪个位置
  • 布线(Routing)——用金属层把这些单元的引脚连起来

这里有个关键点:时序收敛

你想想看,两个触发器之间如果走线太长,信号延迟就会变大,可能导致建立时间违例。布局布线工具会反复迭代,调整单元位置、插入缓冲器,直到所有路径的时序都满足要求。

注意:逆向工程中,你看到的版图已经是「优化后」的结果。有些缓冲器是后来插进去的,它们和原始RTL中的逻辑无关。如果你在还原RTL时把这些缓冲器也当成逻辑门,那还原出来的代码会多出一堆没用的东西。

我曾经逆向过一个芯片,发现版图里有一长串反相器链。一开始我以为是什么特殊逻辑,后来才意识到——那只是布局布线工具为了驱动长线而插入的缓冲器。嗯,白忙活了两天。

2.4 制造:从GDSII到芯片

布局布线完成后,你会得到一个GDSII文件。这个文件描述了芯片每一层的几何图形——哪些地方是扩散层,哪些地方是多晶硅,哪些地方是金属。

晶圆厂拿到GDSII后,会做一系列光刻、刻蚀、沉积、离子注入等工艺步骤。每一步都在硅片上「画」出一层图案。最终,几十层图案叠加在一起,就形成了你手里的芯片。

这里有个表格,列出了常见的工艺层和它们在版图中的颜色(不同工具显示不同,但大致如此):

工艺层 作用 版图颜色(典型)
N阱 形成PMOS的衬底 浅蓝色
有源区(扩散层) 形成晶体管的源漏 绿色
多晶硅 形成栅极 红色
金属1 第一层互连 蓝色
金属2 第二层互连 紫色
通孔 连接不同金属层 黑色方块

做逆向时,你就是在跟这些层打交道。你得学会「读」版图——看到红色和绿色交叉的地方,就知道那里是一个晶体管;看到金属线连到哪里,就知道信号是怎么走的。

一句话总结:正向设计是从抽象到具体,逆向工程是从具体到抽象。你越懂正向流程中的每一个细节,逆向时就越能快速定位关键结构,还原出设计者的原始意图。

好了,这一节就到这里。记住这个流程,后面我们讲具体逆向技术时,会反复用到这些知识。


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