流片前夜:从RTL到GDSII的完整流程概览
芯片从代码变成硅片,到底经历了什么?
很多刚入行的朋友问我这个问题。我通常会说:你写的是逻辑,工厂造的是物理。中间这趟旅程,就是我们要讲的——从RTL到GDSII。
说白了,就是把你的Verilog代码,一步步变成工厂光刻机需要的掩模版图。每一步都有坑,每一步都烧钱。我见过太多团队在最后一步才发现问题,然后……嗯,流片延期,几百万打水漂。
1.1 整体流程:一张图看懂
先给你一张全景图。别被吓到,我们后面会一个一个拆解。
1.2 前端阶段:把代码变成门级网表
这个阶段,你主要跟EDA工具打交道。输入是RTL,输出是门级网表(Gate-level Netlist)。
1.2.1 逻辑综合
综合工具会把你的RTL代码,映射到工艺库提供的标准单元上。比如一个加法器,会被拆成若干个与门、或门、触发器。
我个人习惯在综合前先跑一遍lint检查。很多低级错误,比如位宽不匹配、组合反馈,lint都能抓出来。我曾经见过一个团队,综合后仿真发现功能不对,查了三天,结果是一个always块里漏了敏感列表。这种坑,lint一步就能拦住。
1.2.2 形式验证
综合后的网表跟原始RTL功能一致吗?形式验证就是干这个的。它用数学方法证明两个版本等价,不需要测试向量。
嗯,这里要注意:形式验证只能证明功能等价,不能保证时序。时序问题交给STA。
1.2.3 DFT插入
可测试性设计。说白了,就是给芯片加一些测试电路,方便流片回来以后检测制造缺陷。
常见的DFT结构包括扫描链(Scan Chain)、边界扫描(JTAG)、内建自测试(BIST)。
| DFT类型 | 用途 | 面积开销 |
|---|---|---|
| 扫描链 | 测试逻辑电路 | 约5-10% |
| BIST | 测试存储器 | 约1-3% |
| JTAG | 边界测试/调试 | 约1-2% |
1.3 后端阶段:从网表到版图
这个阶段,你开始跟物理打交道。输入是门级网表,输出是GDSII版图。
1.3.1 布局规划
决定芯片的宏观布局:哪些模块放左边,哪些放右边,IO pad怎么摆,电源网络怎么走。
布局规划做得好,后面布线就顺畅。做得不好……嗯,我见过一个项目,因为两个大模块的通信量巨大,却放在了芯片的对角,结果布线绕了半圈,时序全崩。
1.3.2 单元放置
把标准单元(与门、或门、触发器)一个一个放到芯片内部。工具会根据时序和拥塞程度自动优化位置。
1.3.3 时钟树综合
时钟信号要同时到达所有触发器。但芯片很大,时钟线有延迟。怎么办?插入时钟缓冲器,构建一棵树,让时钟到达时间尽量一致。
时钟树综合是后端最考验经验的步骤之一。skew(时钟偏差)做得好不好,直接决定芯片能不能跑在目标频率。
1.3.4 布线
把所有的标准单元用金属线连起来。这一步最耗时,也最容易出问题。
布线完成后,要检查天线效应、串扰、IR Drop(电压降)。这些物理效应,在RTL阶段是看不见的。
1.4 签核阶段:最后的把关
在输出GDSII之前,必须做三件事:
- 静态时序分析(STA):检查所有路径的建立时间和保持时间是否满足约束。不满足?要么改约束,要么改设计。
- 物理验证:检查版图是否符合设计规则(DRC),电路与版图是否一致(LVS)。
- 功耗分析:确认芯片功耗在预算范围内。
1.5 常见误区与避坑
- 误区一:RTL写完了就万事大吉。 实际上,后端实现才是真正的战场。很多RTL写得很漂亮的设计,后端跑不通,最后只能改代码。
- 误区二:综合后的网表直接拿去布局布线。 我建议先做形式验证,确认网表功能正确。否则后面发现问题,回溯成本极高。
- 误区三:STA只跑一次。 实际上,STA要跑很多轮。每做一次ECO(工程变更),都要重新跑STA。
- 误区四:DRC过了就一定能制造。 不一定。DRC只检查规则,不检查可制造性。有些图形虽然符合规则,但良率很低。这时候需要做OPC(光学邻近效应修正)和MDP(掩模数据准备)。
好了,这一章我们走了一遍从RTL到GDSII的完整流程。你心里应该有个全景图了。后面每一章,我们会深入每一个步骤,把工具命令、参数设置、常见问题的解法都讲透。