两个芯片设计的开源项目

两个最有代表性、资料完整且确实走到过流片环节的开源项目,是 Efabless Caravel/Open MPWTiny 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 TapeoutCaravel
定位初学者、多项目小芯片完整用户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设计、总线接口、寄存器、固件、功能验证、逻辑综合、时序分析、布局布线和版图检查,是比较完整的开源芯片设计练习。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Are you human? Please solve:Captcha