前面我分享过一些 SoC 设计 Skill 和 Silicon-Crew 硅农智能体集群,一直在尝试用 AI 重塑 SoC 设计工作流。但之前遗憾地脱离了实际生产环境,AI 能做的事基本停留在 demo 阶段——只能算玩具。所以我决定引入真实 SoC 项目,打通 AI 从设计到 RTL 交付的工作流。我把这个项目称为 Vibe_SoC,也就是“氛围”SoC,或者再玩梗一点,叫“口喷”SoC。
🎙️ 全程通过自然语言描述设计需求,由 Agent 完成任务,这就是 Vibe SoC。如果把输入法切换成语音转文字,那真的就成了“说话就能做芯片”,也就是“口喷”SoC。(绷不住了)
引入实际生产 SoC 项目
为了真正进入实际生产场景,我选择了一款有流片经历的开源 SoC 项目——谷歌的 OpenTitan。

🛡️ OpenTitan 是一个开源 silicon Root of Trust(RoT)项目,目标是提供一套可审计、可复用的安全芯片参考实现。它不是单纯的软件项目,而是包含 RTL、固件、验证环境、工具链、文档和 FPGA/仿真支持的完整安全芯片工程。
核心定位:
- Root of Trust 芯片设计:用于安全启动、密钥保护、生命周期管理、设备身份、固件验证等。
- 开源硬件实现:主要 RTL 使用 SystemVerilog,项目包含完整 top-level SoC、IP、总线、外设和 DV 环境。
- 软硬件协同:Boot ROM、ROM_EXT、测试固件、DIF 驱动、host 工具都在同一个仓库里。
- 安全设计:大量模块围绕 secure boot、flash scrambling、OTP、lifecycle、key manager、entropy、crypto accelerator 设计。
- 可验证设计:包含 UVM DV、lint、formal、FPV、CDC/RDC、Verilator/VCS 等流程。
Earlgrey 里常见模块包括:
- Earlgrey:独立 RoT SoC 顶层,通常是这个仓库里最核心、最完整的 top。
- CPU:Ibex,32-bit RISC-V core。
- Memory:ROM、SRAM、embedded flash、OTP。
- Security:keymgr、lc_ctrl、otp_ctrl、entropy_src、csrng、edn、alert_handler。
- Crypto:AES、HMAC、KMAC、OTBN 等。
- 外设:UART、SPI host/device、I2C、GPIO、USB、PWM、timer、PLIC。
- Bus:内部主要用 TL-UL。
我把 OpenTitan 项目移植到 vibe_soc 开发环境,采用 vibe_soc 的目录和 filelist 组织结构,并复用其中的 Skill 和开发 Flow。
🧪 用户到 vibe_soc 项目目录下启动 Codex 或 Claude Code,说一句:“帮我跑下顶层的 smoke case,带波形。”主 Agent 收到指令后会调用 soc_build:soc_sim MCP 跑 smoke case。

跑完之后结果如下:

跑完后说:“帮我打开这个 case 的波形。”Agent 会自动调用 soc_build:soc_verdi MCP。

然后就可以愉快地看代码学习了。(你这个 Verdi 界面怎么和我的不一样)
chip_sw_uart_smoketest 做了哪些事情?大致流程如下:
- DV 会 backdoor 预加载镜像
- test ROM 和 uart_smoketest 软件镜像被加载到片上 ROM/flash 模型。
- CPU 正常启动
- Ibex 从 test ROM 启动。
- ROM 跳到 flash 中的 UART smoke 测试程序。
- 软件初始化 UART
- 配置 UART 寄存器。
- 设置 UART clock/baudrate。
- 使能 TX/RX 基础功能。
- 通过 UART 打印测试信息
- 软件向 UART TX FIFO 写数据。
- UART IP 通过 tx pin 发串行数据。
- testbench UART monitor/DPI 捕获 UART 输出。
smoke case 测试成功。
我已经把源项目所有 case 都移植到 vibe_soc 项目中了,只是其他 case 还没有用 token 去调试。有了基础 SoC 骨架作基石,后续 IP 替换和增删会更加顺利。
Wiki + RAG 项目知识库
我建立了一个本地 wiki+RAG 知识库。注意,这不是给用户建的,而是给 AI 建的。AI 现在虽然很强,但面对冷门或本地知识,不一定能准确回答或执行。就像我们人类,遇到复杂问题,最靠谱的方式是查一下文档和资料再回答,而不是仅靠记忆。
比如你问 Agent 一个问题或让它执行一个任务时:
远程 Codex / Kimi / Claude
↓ 发送问题
MCP Client
↓ 调用你的知识库工具
本地 embedding 模型把“问题”转成向量
↓
本地 Chroma 向量检索 + BM25 关键词检索
↓
融合排序,取最相关的资料片段
↓
返回 context / citations 给远程 AI
↓
云端 LLM 根据这些本地检索结果组织回答
关键点是:每次查询都会本地推理一次 embedding,但不是重新索引整个知识库。
当你有大量资料和数据积累时,最适合做 RAG 检索,而不是把整个文档扔给 AI 做上下文——资料多到一定程度,它也确实塞不下。
我的本地知识库架构是这样的:
本地 SoC/IC 设计知识库 + 远程 MCP 访问层 + 云端 LLM 回答层
🔍 资料、索引、embedding、检索全部在本机;Codex / Claude 等 Agent 只通过 MCP 拿检索结果,再由云端模型负责组织回答。
整体链路:
data/ 原始资料
↓
parsers.py 解析 PDF / Markdown / 代码 / 文本
↓
chunk 切块
↓
本地 bge-m3 embedding
↓
storage/ 本地索引
├─ Chroma 向量库
├─ BM25 关键词索引
├─ manifest.json
└─ chunks.jsonl
↓
retriever.py 混合检索
↓
mcp_server.py 对外提供工具
↓
Codex / Kimi / Claude 远程调用
↓
云端 LLM 只基于检索结果回答
最后还加了一层 Wiki 层,用于把检索到的内容进一步整理成你自己的 SoC 设计 Wiki。这个层不是简单问答,而是面向长期沉淀。
至于知识库怎么搭建,问你的 Agent,它会帮你全部搞好。
哪些东西适合放知识库
我能想到的有:
- 项目文档、公共约束、EDA 工具使用手册,各种 checklist、lint 规则、CDC 规则等。
- 芯片设计相关标准、协议、datasheet、白皮书、红皮书、绿皮书等。
- 任何项目知识、项目中遇到的坑,以及沉淀下来的经验。
- 蒸馏同事的知识,emmmm。
- 高质量的本地 Verilog 代码,让 AI 写代码时不只用 LLM 自己的训练集,还有更高质量的数据参考。
有些适合做成 Skill,有些适合做成知识库。可以根据具体场景判断:
比如同事需要不同 PLL 的频率计算参数,这种需求做成 Skill,给到他的 Agent,每次问一下直接输出计算结果,不用再问你。
比如设计文档、寄存器地址,适合做成知识库,有问题先问 Agent;如果没有,就把答案加入知识库,再问 Agent。
以前给同事交付/交接工作,是代码和资料;现在给同事交付/交接工作,是 Skill 和知识库。
如果一个工程师的知识和技能都能沉淀给 AI,那么……
Silicon-Crew 全面升级
Silicon-Crew 硅农智能体集群这次也做了全面升级。上一版本以插件形式发布,需要用户自己安装到 Agent 上,一个字:麻烦。而且用户自己安装是全局安装,实际项目不开发时,用户全局并不需要这样一个 Agent 集群。所以我将 Silicon-Crew 直接预装在 vibe_soc 项目上,相关的 subagent 和 Skill 也直接预装,以后直接更新 vibe_soc 项目即可。用户只需要在 vibe_soc 项目根目录打开 Codex 或 Claude Code,就会自动加载。其他 coding agent 工具暂时没有实测,用户可以自行适配。
启动后问一句:“你有什么 subagent 和 Skill?”


本次 vibe_soc 项目 Flows 更新也支持了 VCS、Verdi、Spyglass Lint CDC、DC、LC 等流程,可以更好地完成从学习项目到实际工程开发的衔接。
🏗️ 同时新增了一个 soc-pd_engineer subagent,装配 soc-openroad Skill,使用开源的 OpenROAD 项目(OpenROAD-flow-scripts,ORFS),配置 Silicon-Crew 实现 24 小时无人看守跑完从 RTL-GDS 流程,非常适合学习。

配合 SkyWater SKY130 Open Source PDK 130nm 工艺设计套件,可以真正带真实库跑中后端 Flow。这个 PDK 里面的库都是 .lib 格式,DC 吃的是 .db 格式。
Silicon-Crew 新增一个 lib-db-gen 的 Skill,支持两件事:
- 把已有 Liberty
.lib 转成 .db
- 从 Verilog top 端口生成 black-box
.lib/.db
第一点很好理解;第二点是项目早期评估阶段,子 IP 或子 harden 无法交付 .lib/.db 给顶层时,可以根据子 IP 或子 harden 的 Verilog top 端口生成 black-box .lib/.db。早期阶段本来也不会在乎端口时序信息和 PG 信息,这样就不会阻塞项目进度。
CI/CD 流程
vibe_soc 项目还引入了 CI/CD 流程,基于 GitHub,解决实际工作场景中的痛点:
- 发布版本问题,下游需要一个稳定能用的版本
- 别人拿到代码总是编译不过
- 中端拿到代码总是 lint 不过
- 验证拿到代码总是 smoke case 不过
- FPGA 拿到代码 FPGA 分支总是编译不过
CI,即持续集成,是指每次代码变化后,尽快自动验证“这次改动有没有把主线弄坏”。
✅ 目前项目已部署为每次提交都会自动创建新分支,然后用另一台本地机器 checkout 下来跑一个 smoke case,确认 pass 后再 merge 到主分支上,永远保证主分支健康,可以随时从主分支拉取 release 分支进行发布。你可以把任何想跑的检查任务追加进 CI。
CD,即持续交付,是指自动生成可发布产物,但是否真正发布或部署可以人工确认。创建 release 分支和 release tags 后,CD 会验证 release ref,生成可追溯交付包,上传 artifact/Release。
如何安装
1️⃣ 第一步:下载
项目已开源到 GitHub,可以通过仓库获取安装链接。有什么问题欢迎提 issue,我的 Agent 收到后会自动修复并回复。
2️⃣ 第二步:安装
把 GitHub 链接发给你的 Codex、Claude Code 等助手,让它给你下载安装。
最后
一起来“口喷”SoC 吧!更多 SoC 与 AI 工程化实践,欢迎到 云栈社区 一起交流。