开源芯片设计EDA工具 | AI生成和翻译

Home 2026.05

问题: AMD MI300X 这类芯片是如何设计的?我应该了解哪些芯片设计软件(EDA 工具)?

回答:

很好的转向。这是开源硬件的前沿领域——相当于硅片界的 Linux 与 Windows 之争。让我为你梳理整个技术栈。


芯片设计栈(从顶层到底层)

规格 / 架构
        ↓
RTL(寄存器传输级)—— Verilog/VHDL/Chisel
        ↓
综合(Synthesis)—— RTL → 门级网表
        ↓
布局布线(Place & Route)—— 门级 → 物理版图
        ↓
签核(Sign-off,时序、功耗、DRC/LVS)
        ↓
GDSII → 晶圆厂(台积电、三星)
        ↓
硅片

MI300X 由 AMD 工程师在步骤 1-4 设计,然后在台积电 N5/N6 工艺上制造。


需要了解的开源 EDA 工具

1. OpenROAD —— 完整的开源 RTL→GDSII 流程

这是最重要的一个。由 DARPA 资助,在真实流片中投入使用。

git clone https://github.com/The-OpenROAD-Project/OpenROAD
# 或者使用流程封装工具:
git clone https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts

cd OpenROAD-flow-scripts
./build_openroad.sh
# 运行一个示例设计(GCD 电路)
make DESIGN_CONFIG=./flow/designs/asap7/gcd/config.mk

它能做什么:综合 → 布局规划 → 布局 → 时钟树综合 → 布线 → 签核。完整流程,无需许可证。


2. Yosys —— RTL 综合

将 Verilog 转换为门级网表。相当于芯片设计中的 GCC。

brew install yosys  # 或 apt

# 综合一个简单的模块
cat > counter.v << 'EOF'
module counter(input clk, input rst, output reg [7:0] count);
  always @(posedge clk) begin
    if (rst) count <= 0;
    else count <= count + 1;
  end
endmodule
EOF

yosys -p "read_verilog counter.v; synth -top counter; write_json counter.json; stat"

Yosys 是 OpenROAD 内部用于综合的工具。阅读它的源码能让你了解综合的实际工作原理。


3. Chisel —— 基于 Scala 的硬件描述语言(RISC-V 使用)

与 Verilog(1980 年代的语言)不同,Chisel 允许你用编程方式描述硬件。被 Google TPU 团队、伯克利 RISC-V 项目使用。

import chisel3._
import chisel3.util._

class Adder(width: Int) extends Module {
  val io = IO(new Bundle {
    val a   = Input(UInt(width.W))
    val b   = Input(UInt(width.W))
    val sum = Output(UInt((width+1).W))
  })
  io.sum := io.a +& io.b  // +& = 不截断溢出
}

// 生成 Verilog → 输入到 Yosys → OpenROAD
# 安装并从 Chisel 生成 Verilog
sbt "runMain Adder --target-dir generated"
# 输出 generated/Adder.v

与 AI 芯片的相关性: Google TPU v4 的脉动阵列是用类似 Chisel 的 DSL 描述的。理解这一点就能理解矩阵引擎是如何构建的。


4. Magic VLSI + KLayout —— 版图编辑器

用于查看实际的晶体管级版图。

brew install --cask klayout  # GDSII 查看器
# 打开任意开源 PDK 版图文件
klayout sky130_fd_sc_hd__and2_1.gds

KLayout 允许你查看开源 PDK(SkyWater 130nm)中的实际 GDSII 文件。你可以直接看到晶体管。


5. SkyWater SKY130 PDK —— 免费工艺设计套件

开放的晶圆厂工艺。让你设计可在 SkyWater 制造的芯片(通过 Efabless/Google shuttle)。

git clone https://github.com/google/skywater-pdk
# 包含:单元库、SPICE 模型、DRC 规则
ls skywater-pdk/libraries/sky130_fd_sc_hd/  # 标准单元

通过这种方式,你可以实际流片而无需向台积电支付数百万美元。Google 通过 Efabless 赞助免费 shuttle。


6. OpenLane —— Sky130 自动化流程

封装了 Yosys + OpenROAD + Magic,适用于 SKY130:

git clone https://github.com/The-OpenROAD-Project/OpenLane
cd OpenLane
make
make mount
# 在容器内:
./flow.tcl -design spm  # 在示例设计上运行完整 RTL→GDSII

这是人们用来提交到 Google 免费芯片 shuttle 的工具。真实的芯片已经通过这种方式制造出来。


MI300X 的实际设计方式(高层视角)

1. 架构规格
   - 计算单元数量、缓存层次结构、HBM 接口
   - 以文档形式编写,非代码

2. RTL(Verilog/SystemVerilog)—— 数百万行
   - 每个功能模块:着色器核心、内存控制器、
     Infinity Fabric 链路、显示引擎
   - AMD 使用内部专有工具(Synopsys DC、Cadence Genus)

3. 验证(最困难的部分——占 60-70% 的工作量)
   - SystemVerilog 断言
   - UVM 测试平台
   - 形式验证(sby / Cadence JasperGold)

4. 综合 → Cadence Genus 或 Synopsys DC
   (相当于 Yosys,但许可证费用为 100 万美元/年)

5. 布局布线 → Cadence Innovus 或 Synopsys ICC2
   (相当于 OpenROAD,但许可证费用为 500 万美元/年)

6. 签核 → Synopsys PrimeTime(时序)、Mentor Calibre(DRC/LVS)

7. GDSII → 台积电 N5 晶圆厂

开源工具涵盖的概念与商业工具完全一致——只是速度较慢、成熟度较低。学习 OpenROAD 可以让你了解 Cadence Innovus 的功能。


AI 芯片特有部分 —— 脉动阵列

MI300X 矩阵引擎(以及任何 AI 加速器)的核心是用于 GEMM 的脉动阵列。以下是一个最小的 Chisel 实现,帮助你理解概念:

// 脉动阵列的最小 PE(处理单元)
class PE extends Module {
  val io = IO(new Bundle {
    val a_in  = Input(SInt(8.W))   // 向右流动的权重
    val b_in  = Input(SInt(8.W))   // 向下流动的激活值
    val c_in  = Input(SInt(32.W))  // 向下流动的部分和
    val a_out = Output(SInt(8.W))
    val b_out = Output(SInt(8.W))
    val c_out = Output(SInt(32.W))
  })
  // 寄存输入(流水线阶段)
  val a_reg = RegNext(io.a_in)
  val b_reg = RegNext(io.b_in)

  io.a_out := a_reg
  io.b_out := b_reg
  io.c_out := RegNext(io.c_in + (a_reg * b_reg))
}

这些 PE 组成的阵列 = 矩阵乘法引擎。MI300X 的 CDNA3 拥有 228 个计算单元,每个单元包含进行 4x4 或 16x16 块运算的矩阵核心。


适合你的学习路径

鉴于你的背景(系统、GPU 计算、LLM 训练):

第 1-2 周:Verilog 基础 → 编写简单的 ALU、FIFO、计数器
第 3-4 周:Yosys 综合 → 了解你的 RTL 变成了什么门电路
第 5-6 周:OpenLane/OpenROAD → 在 SKY130 上运行完整流程
第 7-8 周:Chisel → 用 Chisel 重写你的 RTL,理解抽象层
第 9 周+:阅读实际 GPU RTL —— MIAOW(开源 AMD GCN 克隆)

MIAOW 是 AMD GCN 指令集架构的开源 Verilog 实现——根本就是一个开源 GPU:

git clone https://github.com/VerticalResearchGroup/miaow
# AMD GCN 着色器核心的真实 Verilog 实现

现在就该 Star 的关键仓库

仓库 教授内容
The-OpenROAD-Project/OpenROAD 完整 RTL→GDSII 流程
YosysHQ/yosys 综合内部机制
chipsalliance/chisel 基于 Scala 的硬件描述
google/skywater-pdk 真实工艺节点数据
VerticalResearchGroup/miaow 开源 GPU RTL
ucb-bar/gemmini 开源脉动阵列(RISC-V)
efabless/caravel 用于流片的开源芯片框架

gemmini 尤其相关——它是伯克利开发的可配置脉动阵列生成器,用于研究领域。在概念上直接类比 TPU/MI300X 的矩阵引擎。


Back Donate