从 RTL 到 GDS:EDA 流程入门的第一条主线
更新时间:2026-09-14。本文是
eda/域入门层第 00 篇。芯片设计视角的工具角色见 EDA 在流程里的角色,工具厂商与产品清单见 EDA 工具全矩阵,本文只追踪一件事:一份 RTL 怎样一步步变成可交给晶圆厂的 GDSII。
本文要回答的问题
- 为什么 EDA 流程不是“点一下综合、再点一下布局布线”?
- RTL、SDC、网表、DEF、SPEF、SDF、GDSII 分别在哪一步产生、被谁消费?
- 功能正确的 RTL,为什么还可能因为时序、功耗、物理规则而不能流片?
- 新手看到一堆工具名时,怎样判断某个工具到底在流水线的哪一段?
一、先建立总图:设计数据往下走,违例反馈往回走
EDA(Electronic Design Automation,电子设计自动化)流程最容易被误解成一条单向流水线:RTL 写好,综合,布局布线,导出 GDSII,结束。真实项目更像一个反复迭代的闭环:设计数据逐级变得更具体,约束和违例报告不断把问题推回上游。

这个闭环里有两个关键词。第一是表示层级:RTL 描述寄存器之间“每拍做什么”;门级网表把逻辑映射成标准单元;P&R(Place and Route,布局布线)后才有物理坐标、金属线和通孔;GDSII 则是可供掩模制造使用的几何数据库。越往下游走,物理信息越多。
第二是签核口径:仿真通过只说明在测试激励下功能行为正确,不代表芯片能在目标频率、电压、温度和工艺偏差下工作。最终 tape-out(流片交卷)前还要分别通过 STA(Static Timing Analysis,静态时序分析)、物理验证、功耗与电源完整性检查。
二、开工前的地基:PDK、库和约束到底是什么
很多新手以为流程的输入只有 RTL,其实工具至少还需要三类“非 RTL 输入”:PDK、标准单元库和时序约束。
| 输入 | 全称 / 含义 | 提供方 | 主要被谁消费 | 错了会怎样 |
|---|---|---|---|---|
| RTL | Verilog/SystemVerilog 描述的寄存器传输逻辑 | 设计团队 | 仿真、Lint、综合、形式验证 | 功能错、综合不过、网表不可实现 |
| Testbench | 驱动 DUT 并检查结果的验证环境 | 验证团队 | 仿真器、回归系统 | 功能 bug 测不出来 |
| SDC | Synopsys Design Constraints,时序约束事实标准 | 前端/约束负责人 | 综合、P&R、STA | 欠约束假收敛,过约束牺牲面积功耗 |
| LIB | 标准单元时序/功耗/功能特征库 | 库团队/晶圆厂/IP 厂商 | 综合、STA、功耗分析 | 延迟和功耗数字不可信 |
| LEF | 单元抽象物理信息:尺寸、引脚、障碍、金属方向 | PDK/库团队 | P&R | 单元摆放、布线层和引脚连接错误 |
| PDK | Process Design Kit,工艺设计套件 | 晶圆厂 | 全流程 | 工艺规则、器件模型和签核基线失配 |
| GDSII/OASIS | 版图几何数据库 | 物理设计团队 | DRC/LVS、晶圆厂 | 无法制造或与原理图不一致 |
PDK 把工艺规则、器件模型、标准单元抽象、金属层定义、DRC deck、签核版本和工艺角组织在一起。商业流程里,工具、PDK、库和 deck 版本必须按晶圆厂认证组合锁定;SKY130 等开源 PDK 角色相同,但工艺成熟度和签核责任体系不同,见 开源 EDA 生态。
SDC 是工具理解设计意图的合同:时钟、异步关系、IO 预算和时序例外都在这里声明。约束漏了会“假收敛”,约束写错又会逼工具过度优化。格式全貌见 EDA 数据格式与标准。
三、第一阶段:RTL 与功能验证,先证明“逻辑想做的事”正确
RTL 的核心抽象是寄存器与时钟沿:数据每拍从一组寄存器出发,经组合逻辑到达下一组寄存器。功能验证与 RTL 并行推进:testbench 驱动设计,仿真器按时间调度信号跳变;SVA(SystemVerilog Assertion,SystemVerilog 断言)固化协议性质;覆盖率说明哪些结构和场景还没碰到;形式验证则可对仲裁、FIFO、协议等控制逻辑做数学穷尽。三者分工见 EDA 验证工具链。
前端还会跑 RTL Lint、CDC/RDC 等静态检查。Lint 查位宽、锁存器、不可综合写法和复位不一致;CDC(Clock Domain Crossing,跨时钟域)检查同步器、握手协议和异步路径。这个阶段修问题成本最低。
四、第二阶段:逻辑综合,把 RTL 映射成标准单元网表
综合工具读取 RTL、LIB 和 SDC,先形成通用布尔逻辑,再做逻辑优化并映射成目标工艺标准单元,输出门级网表。它像“硬件世界的编译器”,但优化对象是门、触发器、算术单元和互连;同一个加法器也可能按时序、面积和功耗目标映射成不同结构。典型流程是读库、读 RTL、elaborate/link、施加 SDC、compile,再写出网表和报告。
RTL + LIB + SDC
│
▼
elaboration/link 解析层次、参数、模块引用
│
▼
generic logic GTECH/与或非/触发器等通用表示
│
▼
mapping + optimization 映射标准单元,优化时序/面积/功耗
│
▼
gate-level netlist + SDC + timing/area/power reports综合后至少读三类报告:timing report 看 WNS(Worst Negative Slack,最差负裕量)和 TNS(Total Negative Slack,总负裕量);area report 看逻辑、宏单元和缓冲器占比;power report 早期可用默认翻转率,严肃分析要导入 VCD/SAIF,见 VCD 与 SAIF。违例时先查约束是否真实,再决定改 RTL、拆流水级或让工具优化,不能只靠无限插 buffer。
DFT(Design For Test,可测性设计)也常在网表阶段插入:普通触发器被替换成扫描触发器并串成 scan chain,配合 ATPG(Automatic Test Pattern Generation,自动测试向量生成)筛查制造缺陷,存储器还要插入 MBIST。功能验证回答“设计对不对”,DFT 回答“这颗硅有没有造坏”。
五、第三阶段:P&R,把门放进真实硅片坐标
门级网表仍然只是“逻辑单元和连接关系”,不知道每个单元摆在芯片的哪个 row(单元行),也不知道连线走第几层金属。P&R 工具要在有限面积、多层金属、电源网格、宏单元、IP 块和拥塞约束下,把网表变成真实物理版图。主流程通常拆成以下阶段:
| 阶段 | 工具在做什么 | 关键产物 | 常见问题 |
|---|---|---|---|
| Floorplan | 定芯片尺寸、宏单元/IO/IP 位置、电源网络 | DEF、floorplan 数据库 | 宏单元摆错导致长走线和拥塞 |
| Power planning | 建电源环线、条带、rail 和 via | 电源网格 | IR-Drop、电迁移、电源布线资源不足 |
| Placement | 全局布局、合法化、详细布局 | 单元坐标 | 拥塞热区、局部过度密集 |
| CTS | 插入时钟缓冲,构造平衡时钟树 | clock tree | skew、latency、时钟功耗过大 |
| Routing | 全局布线、详细布线、通孔生成 | 金属连线 | short/open、spacing、天线、串扰 |
| Post-route opt | 根据真实寄生修 setup/hold、功耗和 DRC | ECO 网表/补丁 | 修一处破坏另一角点或 DRC |
Floorplan 是后端最“架构化”的决策。SRAM、模拟模块、SerDes、PCIe/DDR PHY 等大宏单元靠近 IO 还是核心、端口朝哪、周围留多少通道,会决定后续拥塞和时序上限。电源规划要把电流从 bump/ball 经电源环、条带和 rail 送到单元,避免 IR-Drop 与 EM(Electromigration,电迁移);多电压域和电源门控还涉及 level shifter、isolation、retention,见 低功耗设计与验证导读。
Placement 先全局布局,再把单元合法化到 site/row,随后局部优化。CTS(Clock Tree Synthesis,时钟树综合)插入缓冲器,控制时钟 skew 和 latency,但时钟树也会消耗大量动态功耗。Routing 先估算通道拥塞,再在具体 track 上分配金属线段和 via;拥塞、天线、间距、串扰等问题往往要退回 floorplan 甚至 RTL 解决。
六、第四阶段:寄生提取、STA 与各种签核
布局布线后,连线有了真实长度、金属层和 RC 参数。提取工具把互连线写成 SPEF(Standard Parasitic Exchange Format,标准寄生交换格式),STA 工具再结合网表、LIB、SDC、SPEF 计算路径到达时间与要求时间:setup 保证数据在下一个时钟沿前到齐,hold 保证数据不会太快穿透寄存器;slack 为负就是违例。

签核不是单一命令,而是一组通行证:
- STA:在多个 function/test mode 和 PVT(Process/Voltage/Temperature,工艺/电压/温度)角点下检查 setup/hold;
- 功耗与 PI:结合网表、LIB、VCD/SAIF、电源网络检查平均功耗、动态压降、IR-Drop 和 EM;
- 物理验证:DRC(Design Rule Check,设计规则检查)确认几何图形可制造,LVS(Layout Versus Schematic,版图原理图一致性)确认版图连接等于网表;
- 形式等价与门级仿真:证明综合、后端和 ECO 变换未改功能,并检查低功耗、X 传播、DFT 协议等问题。
实现工具内部“时序过了”不等于黄金签核通过。真实流片通常用晶圆厂认证的 PrimeTime/Tempus、Calibre 等独立工具,并冻结 MMMC(Multi-Mode Multi-Corner,多模式多角点)view、库版本和 RC corner。
七、最终交付:GDSII/OASIS 与流片前检查清单
签核通过后,物理版图导出为 GDSII 或 OASIS。它不是“截图”,而是逐层、逐坐标描述金属、多晶硅、扩散区、通孔和制造标记的几何数据库,并伴随 metal fill、seal ring、bump map 等代工厂要求。版图基础见 版图数据是什么。
流片前通常会有一张多人签字的 checklist。入门阶段至少要知道这些项目:
- [ ] RTL 冻结版本、网表版本、约束版本和形式等价结果可追溯;
- [ ] 功能验证回归、断言、覆盖率达到项目准入标准;
- [ ] DFT 扫描链、MBIST、ATPG 故障覆盖率与测试协议通过;
- [ ] 所有签核 mode/corner 的 setup/hold 无未批准违例,时序例外已评审;
- [ ] DRC/LVS/ANT 等物理验证清零或所有 waiver 有负责人批准;
- [ ] IR-Drop、EM、功耗、热分析在预算内,低功耗电源序已验证;
- [ ] GDSII/OASIS、网表、SPEF、SDC、LIB、PDK 和签核 deck 版本一致;
- [ ] 不可避免的遗留问题有 ECO 方案、风险说明和回退路径。
真实项目很难做到零 warning,但 false path、multicycle、DRC/lint waiver、未覆盖场景都必须写明原因、影响范围、批准人和有效期。EDA 工具不会替人承担流片失败责任,人才是签核主体。
八、怎样记住一堆工具名
以后看到陌生 EDA 工具,不要先背公司,先问它吃什么、吐什么:仿真器吃 RTL/testbench、吐波形和覆盖率;综合工具吃 RTL/LIB/SDC、吐网表;P&R 吃网表和 LEF/DEF、吐物理版图;STA 吃网表/LIB/SDC/SPEF、吐 timing report;物理验证吃 GDSII 和规则 deck、吐 DRC/LVS 结果。完整产品矩阵见 EDA 工具全矩阵。
Verilator、Yosys、OpenROAD、KLayout 已能支撑学习、研究和成熟工艺项目,但先进工艺签核还依赖工艺数据、规则 deck、工具认证、责任支持和大规模容量。产业护城河见 EDA 产业格局。
常见误区
| 误区 | 更准确的理解 |
|---|---|
| 仿真通过就等于芯片能工作 | 仿真只覆盖激励;还要时序、功耗、物理、DFT、制造规则全部签核 |
| 综合就是 Verilog 翻译成门 | 它还在面积、时序、功耗、可测试性之间做大量优化与取舍 |
| STA 不通过就只改约束 | 先判断约束是否真实,再看 RTL/架构、floorplan、物理实现是否可改 |
| P&R 是后端工具自己的事 | 宏单元位置、电源规划、RTL 数据通路和拥塞在前端就埋下了约束 |
| warning 清零不现实所以不用管 | 可以有 waiver,但必须有原因、影响范围、批准人和有效期 |
| 开源工具能点通每个按钮就能商用流片 | 学习和成熟工艺很有价值;先进节点签核还受认证、PDK、容量和支持体系限制 |
| GDSII 是最终“报告” | 它是制造几何数据库,还要配合网表、检查结果、版本记录和代工厂数据包 |
后续学习路线
这篇只建立主干,入门阶段建议继续沿四个工具视角展开:仿真器怎样跑 RTL、综合器怎样生成网表、P&R 工具怎样摆放和连线、STA 签核怎样判断时序。学习时不要孤立背命令;先弄清“输入从谁来、输出给谁、失败退回哪一步”,命令才有工程意义。
相关与延伸
领域总览见 EDA 导读;芯片设计读者可先读 EDA 在流程里的角色 和 EDA 工具链地图;工具分类见 EDA 工具全矩阵;工具背后的 NP 难优化见 EDA 核心算法;数据交接格式见 EDA 数据格式与标准;开源链路见 开源 EDA 生态。
总结
从 RTL 到 GDS 的 EDA 流程,本质是把“寄存器每拍做什么”的抽象描述,逐级变成“用哪些门、摆在什么坐标、走哪层金属、能否在所有工艺角和测试模式下正确制造”的物理数据库:仿真和形式验证先回答逻辑对不对,综合与 DFT 把门和测试结构生成出来,P&R 在真实芯片面积里摆放、长时钟树并布线,寄生提取把走线变成 RC,STA/功耗/IR-Drop/DRC/LVS 分别从时序、电气和制造规则角度签核,最后才导出 GDSII/OASIS;整条链靠 RTL、SDC、LIB、LEF/DEF、SPEF、SDF、SAIF 和 GDSII 等标准文件咬合,任何版本、角点或约束错配都可能静默产出“工具通过但芯片不可信”的结果,所以理解 EDA 的第一课不是记工具名,而是看清每一步吃什么、吐什么、失败该退回到哪里。