OpenClaw帮我做了件我一直想做的事情。
一直想串一下基于全开源EDA flow的芯片设计流程,但其中有大量的工具的安装和工具flows的使用,需要耗费大量的精力,OpenClaw用了一天时间帮我串了整个流程。
🎯设计目标
基于 PicoSoC 架构的增强版 RISC-V SoC 集成多种常用外设 (UART, GPIO, I2C, PWM, Timer, SPI) 适用于嵌入式控制和物联网应用 目标频率: 100 MHz 工艺节点: SkyWater 130nm (sky130hd)
📄芯片SPEC
顶层规格
| 处理器架构 | ||
| 指令集 | ||
| 系统时钟 | ||
| 复位方式 | ||
| 工作电压 | ||
| 工艺节点 | ||
| 标准单元 |
性能规格
| DMIPS/MHz | ||
| CoreMark/MHz | ||
| 功耗 | ||
| 门数 | ||
| 面积 |
系统架构
(OpenClaw自己瞎画的,看个乐就行)

模块清单
处理器规格
CPU 核心 (PicoRV32)
| 架构 | |
| 指令集 | |
| 流水线 | |
| 寄存器 | |
| 乘法器 | |
| 除法器 | |
| 压缩指令 | |
| 中断 | |
| 计数器 |
内存规格
片上 RAM
| 类型 | |
| 容量 | |
| 字宽 | |
| 字节使能 | |
| 地址范围 |
物理规格
工艺信息
| 工艺节点 | |
| 库类型 | |
| 电压 | |
| 温度 |
物理规格
🔧 完整工具链
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,测试通过,并收集覆盖率,随便打开一个波形看了下,是真的有点东西

测试用例汇总
| 通过率 | 100% |
⏳代码覆盖率 (Code Coverage)
测量工具: Icarus Verilog + GTKWave
总体覆盖率: 78% → 目标: 90%+
⏳功能覆盖率 (Functional Coverage)
测试平台: tb_riscv_soc_coverage.v
总体功能覆盖率: 72% → 目标: 90%+
📊 后端报告
本报告总结了RISC-V SoC项目的中后端工作当前状态,包括已完成的工作、待完成的工作
| 逻辑综合 | |||
| 物理设计 | |||
| 时序分析 | |||
| 签核验证 | |||
| 整体进度 | 有条件通过 | 85% |
1️⃣ 已完成工作
1.1 逻辑综合 (100% 完成)
关键数据:
标准单元: 381,865个 触发器: 133,682个 组合逻辑: 248,183个
1.2 物理设计 (100% 完成)
关键数据:
芯片面积: 9.86 mm² 实例面积: 4.93 mm² 利用率: 51% 金属层: 5层 (met1-met5)
2️⃣ 待完成工作
2.1 时序收敛 (优先级: 高)
2.2 DRC检查 (优先级: 高)
2.3 LVS检查 (优先级: 高)
2.4 功耗分析 (优先级: 中)
前端到中后端flow到最终生成,全程一行代码不用写,只提指令。当然整个过程做出的质量是肯定有问题的,需要用户去提需求,不断迭代。
🤔对于OpenClaw的思考
对 “OpenClaw狂潮” 的一些思考:
我是本地电脑部署+API买token,现阶段烧token很费钱,不用自动化工作日常使用不如直接用各家大模型。
OpenClaw 主要是做一些自动化的东西,可以多agent扮演多个角色,协作做事情。AI的能力是取决于模型的能力,并不会比大模型聪明。
有长记忆功能,学习的所有数据都在自己本地,可以培养成自己专属的贾维斯。
一个不断学习你的使用习惯和需求的强大助手,随着模型的升级能力会越来越强。它可以24小时不间断工作,对于编程和各种重复性、零碎的、繁琐的工作场景完全可以胜任,并且未来的想象空间巨大。
当然,整个过程还是需要人工干预,对于个人生产力的提升很大,可以帮你延伸你的技能边界。取决于openclaw的技能(skills)。
芯片设计三大 EDA 厂已经推出了对应的 AI 辅助设计工具,开始芯片设计的方式和工作方式会发生很大的变化。
| 旗舰平台 | |||
| AI层级 | |||
| 核心优势 | |||
| 最新发布 |
最后,本篇文章95%的内容由OpenClaw生成。

END
来源:硅农
夜雨聆风