2、数字芯片设计基础回顾:从RTL到GDSII的流程,综合、布局布线、制造
做逆向工程,你得先知道正向设计是怎么走的。
这话听起来像废话,但我在带新人时发现,很多人对着一个芯片版图发呆,根本不知道这些金属层、标准单元是怎么来的。说白了,你不懂正向流程,逆向时连线索都找不到。
这一节,我带你快速过一遍从RTL到GDSII的完整流程。重点讲综合、布局布线、制造这三个核心环节。嗯,都是干货。
2.1 整体流程:从代码到芯片
一个数字芯片从设计到量产,大致走这么几步:
- RTL设计——用Verilog/VHDL写逻辑功能
- 功能验证——仿真跑起来,看功能对不对
- 逻辑综合——把RTL转成门级网表
- 布局规划与布局布线——把门级网表摆到芯片上,连好线
- 物理验证——检查DRC、LVS,确保版图没问题
- 流片(Tape-out)——把GDSII文件交给晶圆厂
- 制造与测试——晶圆厂生产,然后封装测试
你想想看,逆向工程其实就是把这个流程倒着走一遍。从GDSII版图反推出门级网表,再从网表还原出RTL代码。所以,每一步你都得知道它干了什么,留下了什么痕迹。
核心知识点:正向设计是「抽象→具体」,逆向工程是「具体→抽象」。你越懂正向设计,逆向时就越能猜出设计者的意图。
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