“
关键词:LEGO 加速器、自动生成 RTL、空间加速器、张量应用、AI 芯片设计、Gemmini 对比、数据流融合、MIT Han Lab
一句话先给答案
LEGO 是 MIT Han Lab 2025 年发布的开源框架,像搭积木一样把深度学习里的张量运算直接变成可综合的芯片 RTL,不需要手写模板,就能让 AI 模型在定制加速器上跑出 3.2 倍速度、节省 2.4 倍能耗。
本文讲什么?
- 
为什么需要 LEGO?—— 手工写 AI 加速器 RTL 的痛  - 
LEGO 到底怎么“搭积木”?—— 三步工作流图解  - 
它跟以前的“模板派”有何不同?—— 一张表看懂  - 
真实跑起来有多快?—— 对 Gemmini 实测数据  - 
想自己玩,怎么上手?—— 代码、依赖、示例命令  - 
常见疑问 FAQ —— License、商用、FPGA、功耗、坑点  
1. 为什么需要 LEGO?—— 手工写 AI 加速器 RTL 的痛
LEGO 目标:让“算法-硬件”迭代周期从月变天,且不把设计空间锁死。
2. LEGO 到底怎么“搭积木”?—— 三步工作流图解
2.1 输入:张量算子描述(你只管写循环)
// GEMM 例子
for (int i = 0; i < M; i++)
  for (int j = 0; j < N; j++)
    for (int k = 0; k < K; k++)
      Y[i][j] += X[i][k] * W[k][j];
把循环写成 Python 嵌套列表或 MLIR 文件即可,无需画电路图。
2.2 前端:自动生成“数据流图”
- 
利用仿射变换找出“谁在什么时候复用哪块数据”  - 
求解线性方程组,得到 PE 之间“直连”或“FIFO 延迟”两种最优连接  - 
用最小生成树 (Chu-Liu) 剪掉冗余边,保证每个 PE 只有一条有效数据源  
结果:一张“FU 级网表”—— 节点是乘加器(MAC),边是数据线 + 延迟标签。
2.3 后端:把网表变成可综合 RTL
- 
将 FU 拆成“寄存器-算子-多路选择”原子节点(DAG)  - 
用线性规划插最少 pipeline 寄存器,让时序收敛  - 
再跑三轮优化: - 
广播改写链 → 省寄存器  - 
提取归约树 → 省加法器级数  - 
引脚复用 → 动态数据流共用硬件  
 - 
 
输出:可直接丢给 Synopsys DC 或 Xilinx Vivado 的 Verilog,28 nm 下 1 GHz 综合通过。
3. 它跟以前的“模板派”有何不同?
4. 真实跑起来有多快?—— 对 Gemmini 实测数据
测试平台:TSMC 28 nm,256 MAC,256 kB 片上 SRAM,128-bit 16 GB/s DRAM 接口。
“
图:LEGO 与 Gemmini 端到端对比
5. 想自己玩,怎么上手?
5.1 环境依赖
- 
Ubuntu 20.04+ / macOS 12+  - 
Python ≥ 3.8  - 
C++17 编译器(g++-9 或 clang-12)  - 
CMake ≥ 3.20  - 
Java 11(HiGHS LP 求解器需要)  - 
SpinalHDL(后端自动生成 Verilog)  - 
Synopsys DC 或 Vivado(可选,仅综合)  
5.2 一键安装
git clone https://github.com/mit-han-lab/lego.git
cd lego
pip install -r requirements.txt
./scripts/setup.sh   # 自动装 HiGHS、SpinalHDL
5.3 跑第一个 GEMM 示例
# 1. 写循环描述
python examples/gemm/write_loop.py --M=64 --N=64 --K=512 -o gemm.json
# 2. 前端生成网表
./build/bin/lego-front --input gemm.json --output gemm.adg
# 3. 后端生成 Verilog
./build/bin/lego-back --adg gemm.adg --verilog gemm_rtl
# 4. 综合(示例)
vivado -mode batch -source scripts/synth.tcl -tclargs gemm_rtl
5.4 目录结构一眼看懂
lego/
├─ examples/          # GEMM、Conv2d、Attention、MTTKRP 官方样例
├─ docs/              # 仿射表示、DAG 算法论文原文
├─ scripts/           # 综合、仿真、功耗分析脚本
├─ spinal/            # SpinalHDL 原语库
└─ build/             # 编译产出,自动生成
6. 常见疑问 FAQ
7. 结论:一句话带走
LEGO 把“写循环 → 出芯片”变成一条命令,不再需要手写 RTL 模板,还能让 AI 模型跑得更快、更省电;如果你想定制自己的张量加速器,又苦于周期太长,先试试 LEGO,再决定是否流片。
引用
若需在论文或博客中引用,请使用官方 BibTeX:
@inproceedings{lin2025lego,
  title={LEGO: Spatial Accelerator Generation and Optimization for Tensor Applications},
  author={Lin, Yujun and Zhang, Zhekai and Han, Song},
  booktitle={2025 IEEE International Symposium on High Performance Computer Architecture (HPCA)},
  pages={1335--1347},
  year={2025},
  organization={IEEE}
}
相关阅读
- 
MIT Han Lab 项目主页  - 
arXiv 全文 PDF  - 
Gemmini 开源地址 (对比 baseline)  


