---
title: "EDA 101"
description: "从规格到 Tapeout：设计环节、主要产物、开源与商业软件，以及真实界面和演示。"
---

做 AI4Chip，先要知道模型改动的对象是什么、工具如何检查它、结果会影响后面的哪个环节。这一页以数字 ASIC 为主线，把设计流程、软件和产物放在一起；模拟电路另列一条入门路径。

## 从 Specification 到 Tapeout

<img src="/assets/eda-design-flow.svg" alt="数字 ASIC 设计流程：从规格与架构，经 RTL、综合、物理实现和签核到 Tapeout，并列展示阶段产物和常用开源、商业工具。" width="1200" height="1050" loading="eager" decoding="async" />

[查看完整尺寸](/assets/eda-design-flow.svg)

图中列出各环节的常用软件。OpenROAD 负责物理实现；OpenROAD Flow Scripts 和 OpenLane 将多个工具连接成可运行的流程。Genus、Innovus、Fusion Compiler 等商业工具也会跨阶段协同，实际工程会根据工艺、IP 和团队配置选择工具组合。工具入口见 [Open Source](/resources/eda/open-source) 和 [Closed Source](/resources/eda/closed-source)。

| 环节 | 主要输入 → 产物 | 看结果时关注什么 |
|---|---|---|
| Specification / Architecture / Microarchitecture | Workload、接口和性能目标 → 模块划分、流水线、存储层次与时序约定 | 设计是否满足目标；吞吐、延迟、带宽和资源预算如何分配 |
| RTL & Verification | 规格 → RTL、testbench、断言、波形和测试报告 | 行为是否正确；复位、边界条件和协议是否覆盖；失败出在哪个周期 |
| Synthesis | RTL、标准单元库、SDC 约束 → Gate-level netlist 和初步 PPA 报告 | 逻辑映射成了哪些单元；面积与时序是否满足约束；功能是否保持 |
| Floorplan | Netlist、宏单元和工艺信息 → 芯核尺寸、宏单元／引脚位置、电源规划 | 模块是否放得下；连接是否合理；哪里可能拥塞 |
| Placement → CTS (Clock Tree Synthesis) → Routing | Floorplan → 单元位置 → 时钟树 → 金属连线 | 单元放在哪里；时钟如何分发；连线对时序、拥塞和功耗有什么影响 |
| Signoff → Tapeout | 布线版图、提取的寄生参数和约束 → 检查报告、最终 GDSII / OASIS 及交付文件 | STA、功耗／电源完整性、DRC、LVS 等是否满足项目和工艺要求 |

**Verification 贯穿整个流程。** RTL 仿真、形式验证、综合网表的等价性检查各有作用；STA (Static Timing Analysis) 从综合阶段就会参与优化。DRC (Design Rule Checking) 检查版图是否符合工艺规则，LVS (Layout Versus Schematic) 检查版图提取的电路是否与参考网表一致，两者都是物理签核的一部分。后期的时序、拥塞或功耗问题，也可能要求回头修改 RTL 或架构。

实际 SoC 还包含 IP 集成、DFT、低功耗设计等工作。下方的 [Flow Diagrams](#现成的-flow-diagrams) 分别给出开源工具链、工业设计流程和端到端 benchmark 的视角。

## 软件、PDK 和设计文件如何配合

EDA 软件执行仿真、综合或布局布线；PDK 提供工艺模型、层定义与规则，标准单元库提供可映射的单元及其时序、功耗和物理信息。设计还需要时钟、输入输出延迟等约束。同一份 RTL，换了工艺、库或约束，得到的 PPA 也会改变。

初次运行流程时，先找到这几类文件即可：`.v` / `.sv` 是设计或 testbench，`.sdc` 描述时序约束，`.lib` 描述单元特性，LEF / DEF 表达物理抽象与设计布局，SPEF 保存提取的寄生参数，GDSII / OASIS 保存版图几何。ORFS 还用 ODB 保存可重新打开的设计数据库。[ORFS 官方教程](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html)把这些输入、目录和中间结果串在了一起。

## 真实界面：工程师在看什么

下面几张真实界面分别对应调试、物理实现和物理验证。先认出每个窗口处理的设计对象，再看如何从报告定位问题。

### Synopsys Verdi · RTL Debug

左侧是设计层次，中间是源码，右侧是电路连接，下方是波形。先找到出错的时钟周期，再把信号值对应回源码与相关模块。

<figure>

<img src="/assets/eda-101/verdi-debug.jpg" alt="Verdi 的设计层次、源码、电路连接与波形窗口。" width="1123" height="703" loading="lazy" decoding="async" />

<figcaption>

来源：[Synopsys Verdi Datasheet，Figure 3 / 第 3 页](https://www.synopsys.com/content/dam/synopsys/verification/datasheets/verdi-ds.pdf#page=3)。

</figcaption>
</figure>

### Cadence Innovus · Physical Implementation

中央显示布局与金属连线，右侧控制单元、网络和各图层的可见性。先看芯核边界与模块分布，再逐层查看连线，理解 RTL 最终如何变成版图。

<figure>

<img src="/assets/eda-101/innovus-berkeley-layout.png" alt="Innovus 的版图窗口及右侧图层控制。" width="1521" height="1028" loading="lazy" decoding="async" />

<figcaption>

来源：[UC Berkeley EECS 151，Lab 3 — Running the Flow](https://eecs151.org/asic/lab3/docs/pg6-running-the-flow/)。

</figcaption>
</figure>

### OpenROAD · Physical Implementation

这是 Ibex 设计的布线结果：左侧为图层控制，右侧为设计层次，底部为 Tcl 控制台。运行 ORFS 后打开保存的设计数据库，可以在同一界面中检查布局、连线和时序路径。

<figure>

<img src="/assets/eda-101/openroad-ibex-gui.webp" alt="OpenROAD 中的 Ibex 版图、图层控制、设计层次与 Tcl 控制台。" width="1684" height="872" loading="lazy" decoding="async" />

<figcaption>

来源：[OpenROAD Flow Scripts 官方教程，Ibex Final Database](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html)。

</figcaption>
</figure>

### Siemens Calibre RVE · Physical Verification

这个例子展示井连接 soft check 的结果。左侧列出检查项与涉及的单元，右侧提供结果详情和坐标；工程师据此回到版图定位连接问题。

<figure>

<img src="/assets/eda-101/calibre-rve-soft-checks.jpg" alt="Calibre RVE 的井连接检查列表、单元和坐标详情。" width="1430" height="597" loading="lazy" decoding="async" />

<figcaption>

来源：[Siemens Calibre，Well Connectivity / Soft Checks，Figure 4](https://blogs.sw.siemens.com/calibre/2024/04/10/how-to-verify-well-layer-connectivity-with-soft-checks/)。红色标注来自原图。

</figcaption>
</figure>

想继续看实际操作，可以选择 [OpenROAD 的 GUI / CTS / Routing 演示](https://openroad.org/resources/videos)，或 [Questa AutoCheck 的形式检查演示](https://resources.sw.siemens.com/en-US/product-demo-questa-autocheck-demo/)。

### 从脚本到 GUI

GUI 常用来理解设计和定位问题，脚本则负责可重复地运行流程。一个典型操作顺序是：

1. 用配置和 Tcl 脚本加载设计、库与约束，执行某个阶段。
2. 先读日志和报告，确认失败原因或需要优化的指标。
3. 在 GUI 中打开保存的数据库，查看对应路径、单元、连线或错误标记。
4. 将改动保存到 RTL、约束或脚本，重新运行并比较结果。

Berkeley 的 Innovus 教程演示了脚本与 GUI 的配合。初次体验开源流程，可以沿 ORFS 教程完成一次 RTL-to-GDS，再分别打开综合、Floorplan、CTS 和 Routing 的结果。先能把每份报告对应到一个设计阶段，再开始调整参数。

## Analog / Mixed-Signal 的另一条路径

模拟电路的起点通常是拓扑、器件尺寸和性能指标，主要操作对象是原理图与晶体管级电路：

```text
Specification
    ↓
Schematic & Sizing ↔ SPICE Simulation
    ↓
Layout ↔ DRC / LVS
    ↓
Parasitic Extraction → Post-layout Simulation → Signoff
```

用 Xschem 画原理图、ngspice 做仿真，可以先学会观察工作点、增益、带宽与瞬态响应；再进入版图、寄生提取和后仿真。商业环境中常见 Cadence Virtuoso / Spectre 和 Synopsys Custom Compiler / PrimeSim。入门推荐 [JKU Analog Circuit Design 的第 1、2 章](https://iic-jku.github.io/analog-circuit-design/aicd.html)，其中有原理图、仿真示例和工具环境说明；后续章节再深入尺寸设计与 PVT 分析。

### Xschem & ngspice · Schematic and Simulation

下图是一个 RLC 瞬态仿真：后方是 Xschem 原理图，前方是 ngspice 波形和控制台。观察节点 A、B、C 的电压如何随时间变化，再回到原理图理解器件与连线。

<figure>

<img src="/assets/eda-101/xschem-ngspice.png" alt="Xschem 的 RLC 原理图，以及 ngspice 瞬态波形和控制台。" width="869" height="853" loading="lazy" decoding="async" />

<figcaption>

来源：[Xschem 官方教程，Run a Simulation with Xschem](https://xschem.sourceforge.io/stefan/xschem_man/tutorial_run_simulation.html)。

</figcaption>
</figure>

## 现成的 Flow Diagrams

### OpenLane · From RTL to Silicon

沿着图观察设计表示的变化：RTL 变成门级网表，再变成版图，通过签核后交给制造。仿真在多个阶段检查行为是否正确。

<figure>

<img src="/assets/eda-101/openlane-asic-flow.webp" alt="OpenLane 的 ASIC 流程：RTL、仿真、综合、版图、签核与制造。" width="1102" height="862" loading="lazy" decoding="async" />

<figcaption>

来源：[OpenLane 文档，Figure 2 — ASIC Flow](https://openlane2.readthedocs.io/en/latest/getting_started/newcomers/index.html#id1)。

</figcaption>
</figure>

### Synopsys · A Broader SoC Flow

这张图把 DFT、封装、软件开发和系统验证也放了进来。功耗贯穿整个流程，会影响架构选择和后续的设计决策。

<figure>

<img src="/assets/eda-101/synopsys-ai-chip-flow.png" alt="Synopsys 设计流程：架构探索、芯片设计、封装、软件开发与贯穿流程的功耗考虑。" width="1536" height="657" loading="lazy" decoding="async" />

<figcaption>

来源：[Synopsys，Building an AI Chip: Pre-Silicon Planning，Figure 4 / 第 4 页](https://www.synopsys.com/content/dam/synopsys/verification/white-papers/building-an-ai-chip-pre-silicon-planning-wp.pdf#page=4)。

</figcaption>
</figure>

### Build-A-Chip-Bench · Stages and Feedback

这十二个阶段连接了 Workload specification 与 GDS。虚线解释了 agent 为什么需要回头修改：面积超标可能要重构 RTL，时序失败可能要调整微架构，布线拥塞可能要重做 Floorplan。

<figure>

<img src="/assets/eda-101/chipagents-build-a-chip-bench-figure-3.png" alt="Build-A-Chip-Bench 的十二个设计阶段，以及面积、时序和拥塞反馈。" width="1756" height="650" loading="lazy" decoding="async" />

<figcaption>

来源：[ChipAgents，Build-A-Chip-Bench，Figure 3](https://chipagents.ai/research/build-a-chip-bench#spec-to-gds)。

</figcaption>
</figure>

## 接下来读什么

- [Guide](/#guide) — 按 AI、芯片设计或系统背景选择学习路线。
- [AI EDA](/resources/eda/ai-eda) — 看 AI 如何读规格、修改设计、调用工具并处理反馈。
- [EDA Optimization](/resources/eda/optimization) — 看性能预测、逻辑优化、物理设计和模拟电路优化中的研究工作。
