两个最有代表性、资料完整且确实走到过流片环节的开源项目,是 Efabless Caravel/Open MPW 和 Tiny Tapeout。二者主要面向数字ASIC设计,适合用来理解“Verilog代码如何变成真实硅片”。
1. Efabless Caravel / Open MPW
Caravel是一个开放的SoC芯片模板。它已经预先提供芯片外围框架、管理处理器、GPIO、SPI、时钟、复位、电源控制和测试接口,设计者只需把自己的数字或模拟模块放入预留的“用户设计区”。
Caravel本身包括:
- 芯片IO和Pad框架
- 时钟、复位和DLL
- Housekeeping SPI接口
- Wishbone片上总线
- RISC-V管理SoC
- UART、定时器、GPIO等外设
- 逻辑分析和用户模块控制接口
- 用户数字/模拟电路区域
官方将其定义为用于开放多项目晶圆和相关流片服务的SoC模板,主要配合SkyWater SKY130工艺使用。(GitHub)
典型设计过程
设计者可以在用户区域中加入:
- RISC-V处理器
- DSP或FIR滤波器
- AES加密模块
- PWM控制器
- UART、SPI、I²C控制器
- AI加速单元
- 传感器接口
- PLL、ADC等模拟模块
典型流程是:
编写Verilog RTL
↓
编写Testbench或cocotb测试
↓
RTL功能仿真
↓
OpenLane逻辑综合
↓
布局规划、布局、时钟树和布线
↓
静态时序分析
↓
DRC、LVS检查
↓
生成用户模块GDSII
↓
集成进Caravel用户区域
↓
芯片级验证
↓
提交流片
Caravel的官方用户项目流程要求准备RTL Verilog、OpenLane配置文件,然后分别完成用户模块和顶层user_project_wrapper的物理实现;它还提供RTL仿真、门级仿真、SDF反标仿真、cocotb测试和OpenSTA时序分析流程。(Caravel User Project)
使用的主要开源工具
Verilog/SystemVerilog RTL设计
Icarus Verilog 功能仿真
cocotb Python验证
Yosys 逻辑综合
OpenROAD 布局布线
OpenSTA 静态时序分析
Magic 版图、DRC及寄生提取
Netgen LVS检查
KLayout GDS查看和物理验证
OpenLane 整合上述工具
SKY130 / GF180MCU 开放PDK
OpenLane的参考流程能够使用Yosys、OpenROAD、Magic、Netgen、KLayout等开源工具,从RTL一直处理到最终GDSII。(GitHub)
适合学习什么
Caravel特别适合学习:
- 较完整的ASIC项目目录结构
- 用户IP与片上总线集成
- 寄存器和固件控制
- RTL到GDSII完整流程
- 芯片级IO和电源规划
- 门级与版图后验证
- RISC-V SoC和自定义加速器集成
它比单纯运行一个OpenLane示例更接近真实芯片工程,但环境搭建、接口集成和签核要求也更复杂。
2. Tiny Tapeout
Tiny Tapeout是一个面向教学和个人开发者的多项目芯片平台。它把一颗芯片的用户区域切分成很多小型设计单元,每位参与者可以提交一个较小的数字电路,最后把大量项目合并到同一颗芯片中制造。
用户可以提交:
- 计数器
- 时钟分频器
- UART
- PWM控制器
- 小型CPU
- VGA图形电路
- 音频发生器
- 加密模块
- 数字滤波器
- 状态机
- 简单游戏硬件
以官方的时钟分频器示例项目为例,其代码仓库包含Verilog源代码、项目配置和自动构建文件;GitHub Actions会调用开源ASIC工具,把设计转换为可制造的版图文件。(GitHub)
典型设计过程
设计一个小型数字电路
↓
使用Verilog或图形化工具描述
↓
运行功能仿真
↓
提交到GitHub
↓
GitHub Actions自动运行ASIC流程
↓
OpenLane生成GDSII
↓
设计规则和时序自动检查
↓
合并到Tiny Tapeout顶层芯片
↓
多项目晶圆流片
↓
使用开发板测试实体芯片
Tiny Tapeout官方说明,其流程使用OpenLane把Verilog数字网表转换成ASIC制造所需的GDS文件,并可在GitHub服务器上自动运行。(tinytapeout.com)
使用的主要开源工具
底层工具与Caravel相似:
- Verilog
- Yosys
- OpenROAD
- OpenSTA
- Magic
- Netgen
- KLayout
- OpenLane或相关后续流程
- SKY130、GF180MCU或平台支持的其他开放工艺
但多数初学者不必直接操作所有底层工具,GitHub自动化流程已经封装了综合、布局布线和检查步骤。
适合学习什么
Tiny Tapeout适合:
- 第一次接触ASIC设计
- 熟悉Verilog基本语法
- 理解组合逻辑和时序逻辑
- 观察RTL综合后的门级电路
- 了解布局布线和GDSII
- 获得一颗实际制造出来的芯片
- 验证自己的数字电路是否能在硅片上运行
它的主要限制是:
- 用户面积较小
- IO数量有限
- 时钟和接口受平台约束
- 不适合大型SoC
- 不适合高速SerDes等复杂电路
- 对复杂模拟设计支持有限
两个项目的对比
| 对比项 | Tiny Tapeout | Caravel |
|---|---|---|
| 定位 | 初学者、多项目小芯片 | 完整用户ASIC/SoC平台 |
| 入门难度 | 较低 | 中等到较高 |
| 用户设计规模 | 小 | 较大 |
| 是否需要理解后端 | 初期可以不深入 | 通常需要 |
| SoC集成 | 有限 | 支持 |
| 管理处理器 | 平台统一管理 | 带RISC-V管理SoC |
| 总线接口 | 简化接口 | Wishbone等片上接口 |
| 固件开发 | 通常不需要或较少 | 经常需要 |
| 适合项目 | 计数器、UART、PWM、小CPU | 加速器、处理器、控制SoC |
| 适合人群 | ASIC初学者 | 有RTL和FPGA基础的开发者 |
推荐学习顺序
比较合理的顺序是:
第一步:Tiny Tapeout
完成计数器、PWM、UART或小型状态机
↓
第二步:独立运行OpenLane
观察综合、布局、布线、时序和DRC报告
↓
第三步:Caravel User Project
集成一个Wishbone外设或硬件加速模块
↓
第四步:完整SoC或混合信号项目
加入CPU、固件、RAM、PLL或模拟接口
对于已经具有C/C++、嵌入式或FPGA开发经验的人,推荐直接选择一个具体项目,例如:
在Caravel用户区域中实现“RISC-V管理核+Wishbone寄存器+FIR数字滤波加速器”,通过固件配置滤波器参数,并由OpenLane完成RTL到GDSII。
这个项目能够覆盖RTL设计、总线接口、寄存器、固件、功能验证、逻辑综合、时序分析、布局布线和版图检查,是比较完整的开源芯片设计练习。