乐于分享
好东西不私藏

我用OpenClaw+全开源EDA工具+开源IP,做了一颗SoC!

我用OpenClaw+全开源EDA工具+开源IP,做了一颗SoC!

OpenClaw帮我做了件我一直想做的事情。

一直想串一下基于全开源EDA flow的芯片设计流程,但其中有大量的工具的安装和工具flows的使用,需要耗费大量的精力,OpenClaw用了一天时间帮我串了整个流程。

🎯设计目标

  • 基于 PicoSoC 架构的增强版 RISC-V SoC
  • 集成多种常用外设 (UART, GPIO, I2C, PWM, Timer, SPI)
  • 适用于嵌入式控制和物联网应用
  • 目标频率: 100 MHz
  • 工艺节点: SkyWater 130nm (sky130hd)

📄芯片SPEC

顶层规格

参数
规格
备注
处理器架构
RISC-V RV32IM
32位整数+乘除法
指令集
RV32I + M + C
基础整数+乘除+压缩
系统时钟
100MHz
PLL从20MHz倍频
复位方式
异步复位,同步释放
低电平有效
工作电压
1.8V (数字)
SkyWater 130nm
工艺节点
130nm
SkyWater开源PDK
标准单元
sky130_fd_sc_hd
高密度单元库

性能规格

指标
目标
实测/估计
DMIPS/MHz
>1.0
~1.2 (估计)
CoreMark/MHz
>2.0
~2.5 (估计)
功耗
<100mW
待测量
门数
<500K
381,865
面积
<10mm²
-

系统架构

(OpenClaw自己瞎画的,看个乐就行)

模块清单

模块名称
描述
来源
状态
riscv_soc
顶层模块
自定义
picorv32
RISC-V CPU 核心
开源
picosoc_mem
片上 RAM
开源
simpleuart
UART 控制器
开源
spimemio
SPI Flash 接口
开源
crg
时钟复位生成
自定义
pll
锁相环
自定义
gpio_apb
GPIO 控制器
自定义
timer_apb
定时器
自定义
i2c_apb
I2C 控制器
自定义
pwm_apb
PWM 控制器
自定义

处理器规格

CPU 核心 (PicoRV32)

参数
规格
架构
RV32IMC (32位 RISC-V)
指令集
RV32I + M (乘法) + C (压缩)
流水线
单周期执行
寄存器
32个通用寄存器
乘法器
硬件乘法 (单周期)
除法器
硬件除法 (多周期)
** Barrel Shifter**
硬件移位器
压缩指令
支持 (RVC)
中断
支持 32 个中断源
计数器
支持 (MCYCLE, MINSTRET)

内存规格

片上 RAM

参数
规格
类型
SRAM (触发器实现)
容量
16 KB (4096 × 32-bit)
字宽
32-bit
字节使能
4-bit (支持字节/半字/字访问)
地址范围
0x0000_0000 - 0x0000_3FFF

物理规格

工艺信息

参数
规格
工艺节点
SkyWater 130nm
库类型
sky130hd (高密度)
电压
1.8V (数字), 3.3V (IO)
温度
25°C (典型)

物理规格

参数
数值
单位
芯片尺寸
3.14 × 3.14
mm
芯片面积
9.86
mm²
利用率
51
%
标准单元数
381,865
触发器数
133,682
金属层数
5
层 (met1-met5)
引脚数
54
主要单元类型
DFF, AOI, NAND, NOR, BUF
-

🔧 完整工具链

RTL的开发和集成:根据指令下载开源IP或自研IP

安装工具:开源工具的安装由OpenClaw自己安装,碰到问题再干预

各种工具的flow:OpenClaw接收指令自动去写脚本,执行并纠错

┌─────────────────────────────────────────────────────────────────────────────┐│                        RTL 设计阶段 (Design)                                 │├─────────────────────────────────────────────────────────────────────────────┤│  1. 架构设计                                                                 ││     ├── 规格定义 (Excel/Word)                                               ││     ├── 架构图 (Draw.io/Visio)                                              ││     └── 微架构文档 (Markdown)                                               ││                                                                              ││  2. RTL 编码                                                                 ││     ├── 编辑器: Vim / VSCode                                                ││     ├── 语言: Verilog-2001 / SystemVerilog                                  ││     └── 版本控制: Git                                                       ││                                                                              ││  3. Lint 检查 ⭐ 新增                                                        ││     ├── 工具: Verilator --lint-only                                         ││     ├── 工具: svlint                                                        ││     └── 检查项: 语法/可综合性/命名规范/风格                                  ││                                                                              ││  4. 代码审查                                                                 ││     ├── 工具: GitHub/GitLab PR                                              ││     └── 检查项: 功能/时序/面积/功耗                                          │└─────────────────────────────────────────────────────────────────────────────┘                                    ↓┌─────────────────────────────────────────────────────────────────────────────┐│                      功能验证阶段 (Verification)                             │├─────────────────────────────────────────────────────────────────────────────┤│  5. 测试平台搭建                                                             ││     ├── 仿真器: Icarus Verilog                                              ││     ├── 波形查看: GTKWave                                                   ││     └── 测试框架: cocotb (可选)                                             ││                                                                              ││  6. 单元测试                                                                 ││     ├── 模块级测试 (Module Test)                                            ││     ├── 集成测试 (Integration Test)                                         ││     └── 系统测试 (System Test)                                              ││                                                                              ││  7. 回归测试                                                                 ││     ├── 工具: Makefile自动化                                                ││     └── 覆盖率: 代码覆盖率/功能覆盖率                                        ││                                                                              ││  8. 形式验证 (Formal Verification) ⭐ 可选                                   ││     ├── 工具: SymbiYosys                                                    ││     └── 检查: 属性检查/等价性检查                                            │└─────────────────────────────────────────────────────────────────────────────┘                                    ↓┌─────────────────────────────────────────────────────────────────────────────┐│                      逻辑综合阶段 (Synthesis)                                │├─────────────────────────────────────────────────────────────────────────────┤│  9. RTL 综合                                                                 ││     ├── 工具: Yosys                                                         ││     ├── 库: sky130_fd_sc_hd                                                 ││     └── 输出: 门级网表 (synth.v)                                            ││                                                                              ││  10. 逻辑优化                                                                ││      ├── 工具: ABC (集成在Yosys中)                                          ││      ├── 优化: 面积/时序/功耗                                               ││      └── 输出: 优化后门级网表                                               ││                                                                              ││  11. DFF 映射                                                                ││      ├── 工具: dfflibmap (Yosys)                                           ││      └── 映射: 标准单元DFF                                                  ││                                                                              ││  12. 综合后仿真 ⭐ 新增                                                      ││      ├── 工具: Icarus Verilog + 标准单元库                                  ││      └── 验证: 综合后网表功能正确性                                          │└─────────────────────────────────────────────────────────────────────────────┘                                    ↓┌─────────────────────────────────────────────────────────────────────────────┐│                      物理设计阶段 (Physical Design)                          │├─────────────────────────────────────────────────────────────────────────────┤│  13. 导入设计                                                                ││      ├── 工具: OpenROAD (init)                                             ││      ├── 输入: 综合网表 + 约束文件(SDC)                                     ││      └── 输出: 初始数据库 (1_1_yosys.odb)                                   ││                                                                              ││  14. 布局 (Floorplan)                                                        ││      ├── 工具: OpenROAD (floorplan)                                        ││      ├── 步骤:                                                              ││      │   ├── 芯片尺寸定义                                                   ││      │   ├── IO引脚布局                                                     ││      │   ├── 宏单元布局 (如果有)                                            ││      │   └── 电源环规划                                                     ││      └── 输出: 2_floorplan.odb                                              ││                                                                              ││  15. 电源网络 (PDN)                                                          ││      ├── 工具: OpenROAD (pdn)                                              ││      ├── 步骤:                                                              ││      │   ├── 电源环生成                                                     ││      │   ├── 电源条带生成                                                   ││      │   └── 电源连接                                                       ││      └── 输出: 2_4_floorplan_pdn.odb                                        ││                                                                              ││  16. 放置 (Placement)                                                        ││      ├── 工具: OpenROAD (place)                                            ││      ├── 步骤:                                                              ││      │   ├── 全局放置 (Global Placement)                                    ││      │   ├── 详细放置 (Detailed Placement)                                  ││      │   ├── 时序优化                                                       ││      │   └── 拥塞优化                                                       ││      └── 输出: 3_place.odb                                                  ││                                                                              ││  17. 时钟树综合 (CTS)                                                        ││      ├── 工具: OpenROAD (cts)                                              ││      ├── 步骤:                                                              ││      │   ├── 时钟树综合                                                     ││      │   ├── 时钟缓冲器插入                                                 ││      │   ├── 时钟网格生成                                                   ││      │   └── 时钟偏斜优化                                                   ││      └── 输出: 4_cts.odb                                                    ││                                                                              ││  18. 布线 (Routing)                                                          ││      ├── 工具: OpenROAD (route)                                            ││      ├── 步骤:                                                              ││      │   ├── 全局布线 (Global Route)                                        ││      │   ├── 详细布线 (Detailed Route)                                      ││      │   ├── 布线优化                                                       ││      │   └── 天线修复                                                       ││      └── 输出: 5_route.odb, 6_final.odb                                     ││                                                                              ││  19. 寄生参数提取 (PEX) ⭐ 新增                                              ││      ├── 工具: OpenROAD (rcx) 或 Magic                                      ││      ├── 输出: SPEF文件                                                     ││      └── 用途: 时序分析/功耗分析                                             │└─────────────────────────────────────────────────────────────────────────────┘                                    ↓┌─────────────────────────────────────────────────────────────────────────────┐│                      签核验证阶段 (Signoff)                                  │├─────────────────────────────────────────────────────────────────────────────┤│  20. 静态时序分析 (STA)                                                      ││      ├── 工具: OpenSTA (集成在OpenROAD中)                                   ││      ├── 输入: 最终网表 + SPEF + SDC                                        ││      ├── 检查:                                                              ││      │   ├── 建立时间 (Setup)                                               ││      │   ├── 保持时间 (Hold)                                                ││      │   ├── 时钟偏斜 (Skew)                                                ││      │   └── 转换时间 (Transition)                                          ││      └── 输出: 时序报告                                                     ││                                                                              ││  21. 物理验证 (Physical Verification)                                        ││      ├── 21.1 DRC (设计规则检查)                                            ││      │     ├── 工具: Magic                                                  ││      │     ├── 输入: GDS文件                                                ││      │     ├── 检查: 间距/宽度/面积/密度等                                  ││      │     └── 输出: DRC报告                                                ││      │                                                                      ││      ├── 21.2 LVS (版图vs原理图)                                            ││      │     ├── 工具: Netgen                                                 ││      │     ├── 输入: GDS + 网表                                             ││      │     ├── 步骤:                                                        ││      │     │   ├── GDS提取网表 (Magic)                                      ││      │     │   └── 网表对比 (Netgen)                                        ││      │     └── 输出: LVS报告                                                ││      │                                                                      ││      └── 21.3 ERC (电气规则检查) ⭐ 新增                                     ││            ├── 工具: Magic                                                  ││            └── 检查: 开路/短路/浮空节点等                                    ││                                                                              ││  22. 功耗分析 ⭐ 新增                                                        ││      ├── 工具: OpenROAD (power)                                            ││      ├── 输入: 最终网表 + 活动文件(VCD)                                     ││      └── 输出: 功耗报告                                                     ││                                                                              ││  23. 可靠性分析 ⭐ 新增                                                      ││      ├── 23.1 电迁移分析 (EM)                                               ││      │     └── 工具: OpenROAD                                               ││      ├── 23.2 压降分析 (IR Drop)                                            ││      │     └── 工具: OpenROAD                                               ││      └── 23.3 天线检查                                                      ││            └── 工具: Magic                                                  │└─────────────────────────────────────────────────────────────────────────────┘                                    ↓┌─────────────────────────────────────────────────────────────────────────────┐│                      流片准备阶段 (Tapeout)                                  │├─────────────────────────────────────────────────────────────────────────────┤│  24. GDS 生成                                                                ││      ├── 工具: OpenROAD 或 Magic                                            ││      ├── 输入: 最终布局数据库                                               ││      └── 输出: 6_final.gds                                                  ││                                                                              ││  25. 流片文档                                                                ││      ├── 25.1 设计文档                                                      ││      │     ├── 规格说明书                                                   ││      │     ├── 架构设计文档                                                 ││      │     └── 验证报告                                                     ││      ├── 25.2 物理文档                                                      ││      │     ├── 版图数据 (GDS)                                               ││      │     ├── LEF文件                                                      ││      │     └── 时序库 (LIB)                                                 ││      └── 25.3 签核报告                                                      ││            ├── DRC报告                                                      ││            ├── LVS报告                                                      ││            └── STA报告                                                      ││                                                                              ││  26. 流片检查清单 (Tapeout Checklist)                                        ││      ├── ✅ 功能验证通过                                                    ││      ├── ✅ 时序收敛                                                        ││      ├── ✅ DRC清洁                                                         ││      ├── ✅ LVS通过                                                         ││      ├── ✅ 功耗满足规格                                                    ││      └── ✅ 文档完整                                                        ││                                                                              ││  27. 提交流片 (Tapeout)                                                      ││      ├── 提交GDS到代工厂                                                    ││      ├── 提交文档到代工厂                                                   ││      └── 等待流片完成                                                       │└─────────────────────────────────────────────────────────────────────────────┘

项目的目录结构甚至有模有样,doc、rtl、tb、flow、sw、netlist齐全。

riscv_soc/                          # 项目根目录├── 📂 rtl/                         # RTL源代码│   ├── riscv_soc_picosoc.v│   ├── crg.v│   ├── pll.v│   └── ...├── 📂 constraints/                 # 时序约束│   ├── constraint_final.sdc│   └── constraint_obfuscated.sdc├── 📂 ips/                         # 第三方IP│   ├── picorv32/                  # RISC-V CPU│   └── picosoc_integration/       # SoC集成├── 📂 tb/                          # Testbench├── 📂 tests/                       # 测试用例├── 📂 software/                    # 软件代码├── 📂 synthesis/                   # 综合结果├── 📂 pr/                          # 物理设计│   ├── floorplan/│   ├── placement/│   ├── cts/│   ├── routing/│   └── final/├── 📂 signoff/                     # 签核检查│   ├── drc/│   ├── lvs/│   └── erc/├── 📂 docs/                        # 文档│   ├── reports/                   # 分析报告│   ├── images/                    # 图片│   └── specs/                     # 规格书├── 📂 scripts/                     # 脚本工具│   ├── synthesis/                 # 综合脚本│   ├── pr/                        # 物理设计脚本│   └── verification/              # 验证脚本├── 📂 results/                     # 设计结果├── 📂 outputs/                     # 最终输出(GDS)├── 📂 tools/                       # EDA工具配置│   ├── openlane/│   ├── orfs/│   └── magic/├── 📂 configs/                     # 配置文件└── 📄 README.md                    # 项目说明

✅ 验证报告

验证自动搭建测试平台,构造case,测试通过,并收集覆盖率,随便打开一个波形看了下,是真的有点东西

测试用例汇总

测试类别
用例数
通过
失败
基础功能测试
6
6
0
完整功能测试
4
4
0
覆盖率测试
13
13
0
SPI Flash测试
4
4
0
总计
27
27
0
通过率100%

⏳代码覆盖率 (Code Coverage)

测量工具: Icarus Verilog + GTKWave

模块
当前覆盖率
目标
状态
picorv32
78%
90%
⏳ 提升中
picosoc_mem
95%
95%
✅ 达标
simpleuart
85%
90%
⏳ 提升中
gpio_apb
90%
90%
✅ 达标
timer_apb
88%
90%
⏳ 提升中
i2c_apb
70%
85%
⏳ 提升中
pwm_apb
75%
85%
⏳ 提升中
spimemio
60%
80%
⏳ 提升中
crg
95%
95%
✅ 达标

总体覆盖率: 78% → 目标: 90%+

⏳功能覆盖率 (Functional Coverage)

测试平台: tb_riscv_soc_coverage.v

功能点
测试状态
覆盖率
复位测试
✅ 已测试
100%
内存边界
✅ 已测试
90%
UART中断
✅ 已测试
95%
GPIO所有引脚
✅ 已测试
95%
Timer所有模式
✅ 已测试
85%
所有中断源
✅ 已测试
90%
SPI Flash命令
✅ 已测试
80%
I2C事务
✅ 已测试
75%
PWM所有通道
✅ 已测试
85%
非法指令
⏳ 占位
0%
除零
⏳ 占位
0%
栈溢出
⏳ 占位
0%
外设组合
✅ 已测试
80%

总体功能覆盖率: 72% → 目标: 90%+

📊 后端报告

本报告总结了RISC-V SoC项目的中后端工作当前状态,包括已完成的工作、待完成的工作

阶段
状态
完成度
关键指标
逻辑综合
✅ 完成
100%
381,865门,133,682触发器
物理设计
✅ 完成
100%
5mm²,51%利用率
时序分析
⚠️ 有条件
80%
建立时间违例-1591ns
签核验证
⏳ 进行中
60%
Magic已安装,DRC待进行
整体进度有条件通过85%
预计1-2周完成

1️⃣ 已完成工作

1.1 逻辑综合 (100% 完成)

任务
状态
输出
说明
RTL读取
-
成功读取所有RTL文件
层次分析
-
完成模块层次分析
逻辑优化
-
ABC优化完成
技术映射
-
映射到sky130hd库
DFF映射
-
触发器映射完成
网表输出
49MB
最终网表生成

关键数据:

  • 标准单元: 381,865个
  • 触发器: 133,682个
  • 组合逻辑: 248,183个

1.2 物理设计 (100% 完成)

阶段
状态
数据库
说明
初始化
1_1_yosys.odb (159M)
读取网表完成
布局
2_floorplan.odb (203M)
芯片尺寸2237×2237μm
PDN
2_4_floorplan_pdn.odb (203M)
电源网络完成
放置
3_place.odb (203M)
所有单元已放置
CTS
4_cts.odb (203M)
时钟树综合完成
布线
5_route.odb (211M)
所有网络已布线
最终
6_final.odb (211M)
物理设计完成

关键数据:

  • 芯片面积: 9.86 mm²
  • 实例面积: 4.93 mm²
  • 利用率: 51%
  • 金属层: 5层 (met1-met5)

2️⃣ 待完成工作

2.1 时序收敛 (优先级: 高)

任务
状态
问题
解决方案
约束修复
端口名不匹配
使用实际端口名
时序优化
建立时间违例
降频或优化约束
时序签核
待验证
修复后重新分析

2.2 DRC检查 (优先级: 高)

任务
状态
工具
说明
DRC运行
Magic
工具已安装,待执行
DRC修复
Magic
根据结果修复
DRC签核
-
清洁后通过

2.3 LVS检查 (优先级: 高)

任务
状态
工具
说明
GDS提取
Magic
从GDS提取SPICE网表
LVS对比
Netgen
对比版图和原理图
LVS修复
-
根据结果修复

2.4 功耗分析 (优先级: 中)

任务
状态
工具
说明
功耗估算
OpenROAD
静态功耗分析
动态功耗
OpenROAD
需要VCD文件
IR Drop
OpenROAD
压降分析
电迁移
OpenROAD
EM分析

前端到中后端flow到最终生成,全程一行代码不用写,只提指令。当然整个过程做出的质量是肯定有问题的,需要用户去提需求,不断迭代。

🤔对于OpenClaw的思考

对 “OpenClaw狂潮” 的一些思考:

我是本地电脑部署+API买token,现阶段烧token很费钱,不用自动化工作日常使用不如直接用各家大模型。

OpenClaw 主要是做一些自动化的东西,可以多agent扮演多个角色,协作做事情。AI的能力是取决于模型的能力,并不会比大模型聪明。

有长记忆功能,学习的所有数据都在自己本地,可以培养成自己专属的贾维斯。

一个不断学习你的使用习惯和需求的强大助手,随着模型的升级能力会越来越强。它可以24小时不间断工作,对于编程和各种重复性、零碎的、繁琐的工作场景完全可以胜任,并且未来的想象空间巨大。

当然,整个过程还是需要人工干预,对于个人生产力的提升很大,可以帮你延伸你的技能边界。取决于openclaw的技能(skills)。

芯片设计三大 EDA 厂已经推出了对应的 AI 辅助设计工具,开始芯片设计的方式和工作方式会发生很大的变化。

维度
Synopsys
Cadence
Siemens EDA
旗舰平台
Synopsys.ai
JedAI + ChipStack
EDA AI System
AI层级
优化AI + 生成式AI
优化AI + Agentic AI
生成式AI + Agentic AI
核心优势
流片数量最多,覆盖全流程
前端Agentic AI领先(ChipStack)
数字孪生+多物理场集成
最新发布
Synopsys.ai Copilot
ChipStack AI Super Agent (2026.03)
Questa One Toolkit (2026.03)

最后,本篇文章95%的内容由OpenClaw生成。

END

来源:硅农


版权归原作者所有,如有侵权,请联系删除
推荐阅读
福禄克17B拆解,竟然还分国内版、国外版?
他开发了最厉害的操作系统,却被比尔·盖茨“偷”走了
你的代码好骚啊!你跟我说这是C语言最新C23标准,embed能嵌入二进制文件?
→点关注,不迷路←