第二章 芯片制造流程与EDA工具链:从RTL设计到GDSII的完整流程

说实话,很多做逆向的朋友一听到「芯片制造流程」就头大。觉得那是晶圆厂的事,跟自己没关系。

但我得说句实在话——不懂制造流程,你就看不懂GDSII文件里的那些图形到底在干嘛。你看到的那些多边形、那些层次,背后都是有故事的。

这一章,我就带你走一遍从RTL到GDSII的完整流程。重点不是教你用工具,而是让你理解每个环节EDA工具扮演了什么角色,以及这些环节在逆向工程中意味着什么。

核心观点:EDA工具链就是芯片的「设计-验证-制造」流水线。逆向工程,本质上是把这个流水线倒着走一遍。

EDA工具链:从RTL到GDSII的完整流程 RTL设计 Verilog / VHDL 逻辑综合 RTL → 门级网表 布局布线 Place & Route 物理验证 DRC / LVS / RCX GDSII输出 掩模数据准备 ← 逆向工程方向(从GDSII反推RTL) Design Compiler Synplify / Yosys Innovus / ICC2 Calibre / ICV KLayout / Virtuoso

2.1 RTL设计:一切从这里开始

RTL,全称是Register Transfer Level。说白了,就是用代码描述数字电路的行为。

你写的是 always @(posedge clk),但最终它会被映射成真实的触发器、组合逻辑、连线。我见过不少新手以为RTL就是最终设计——其实它只是「设计意图」的文本表达。

逆向视角:当你拿到一个GDSII文件,想理解它的功能,第一步就是尝试恢复出它的RTL描述。这个过程叫「网表到RTL的逆向综合」,后面章节我会详细讲。

2.2 逻辑综合:把「想法」变成「电路」

逻辑综合,就是把RTL代码翻译成门级网表。EDA工具会做三件事:

  • 翻译:把Verilog/VHDL转成布尔表达式
  • 优化:根据面积、速度、功耗的约束,选择最优的门电路组合
  • 映射:把逻辑门映射到目标工艺库里的标准单元

举个例子,你写了个 a & b | c,综合工具可能会把它实现成两个与非门加一个或门,也可能用一个复合门——取决于你给的约束。

我踩过的坑:有一次我写了个很复杂的组合逻辑,综合后面积爆了。后来发现是代码里有个不必要的优先级嵌套。所以我现在写RTL时,会刻意考虑综合工具会怎么「理解」我的代码。

2.3 布局布线:把「电路」放到「芯片」上

布局布线,简称P&R(Place and Route)。这是EDA工具最「物理」的一步。

简单说:

  • 布局:把标准单元(门、触发器)放到芯片的指定位置上
  • 布线:用金属层把这些单元连起来

你想想看,一个现代芯片上有几亿个晶体管,每个都要精确放置、精确连线。没有EDA工具,这事根本不可能手工完成。

注意:布局布线阶段会产生大量的中间文件,比如DEF、LEF。这些文件在逆向工程中非常有用——它们包含了单元的精确位置和连线信息。我建议你在做逆向时,优先找这些文件,比直接看GDSII轻松得多。

2.4 物理验证:检查「设计」和「制造」的差距

物理验证,是流片前的最后一道关卡。主要做三件事:

验证项 全称 检查什么 逆向意义
DRC 设计规则检查 线宽、间距、包围等制造规则 帮你理解工艺限制
LVS 版图与原理图一致性检查 版图连接是否和网表一致 验证你提取的网表是否正确
RCX 寄生参数提取 提取连线电阻电容 用于时序分析

嗯,这里要注意——物理验证工具(比如Calibre)在逆向工程中也有大用。你可以用它来检查自己提取的版图结构是否合理。

2.5 GDSII输出:最终交付物

GDSII是芯片设计的最终输出格式。晶圆厂就靠这个文件来制作掩模版。

GDSII文件里存的是啥?说白了就是一堆多边形,每个多边形属于一个层(比如金属1层、多晶硅层)。这些多边形组合起来,就构成了芯片的物理版图。

个人经验:我刚开始看GDSII文件时,觉得就是一堆乱画的图形。后来发现,每个图形都有它的「语法」——比如电源线的宽度通常是固定的,时钟树的走法也有规律。看懂这些规律,逆向就成功了一半。

2.6 逆向视角:EDA工具链的「反向」应用

讲完正向流程,咱们聊聊逆向。

逆向工程,其实就是把上面这个流程倒着走一遍:

  1. 从GDSII提取版图 → 用KLayout或Calibre打开GDSII
  2. 从版图提取网表 → 用Calibre LVS或NetTran提取晶体管级网表
  3. 从晶体管网表恢复门级网表 → 用自定义脚本识别标准单元
  4. 从门级网表恢复RTL → 用逆向综合工具(比如我们自己写的)

我曾经接手过一个项目,客户只给了GDSII文件,连文档都没有。我就是按这个流程,一步步把整个芯片的功能还原了出来。花了三个月,但最后连客户都惊讶——我们还原出的RTL和他们原始设计几乎一致。

核心思路:EDA工具既能「正向」设计芯片,也能「反向」分析芯片。关键是你得知道每个工具能输出什么中间文件,以及这些文件里藏着什么信息。

好了,这一章就到这里。下一章我们会深入GDSII文件格式本身——它到底是怎么存储那些多边形的?为什么一个文件能描述整个芯片?到时候我会手把手带你解析GDSII的二进制结构。


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