找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4383

积分

0

好友

575

主题
发表于 1 小时前 | 查看: 2| 回复: 0

前面我分享过一些 SoC 设计 Skill 和 Silicon-Crew 硅农智能体集群,一直在尝试用 AI 重塑 SoC 设计工作流。但之前遗憾地脱离了实际生产环境,AI 能做的事基本停留在 demo 阶段——只能算玩具。所以我决定引入真实 SoC 项目,打通 AI 从设计到 RTL 交付的工作流。我把这个项目称为 Vibe_SoC,也就是“氛围”SoC,或者再玩梗一点,叫“口喷”SoC。

🎙️ 全程通过自然语言描述设计需求,由 Agent 完成任务,这就是 Vibe SoC。如果把输入法切换成语音转文字,那真的就成了“说话就能做芯片”,也就是“口喷”SoC。(绷不住了)

引入实际生产 SoC 项目

为了真正进入实际生产场景,我选择了一款有流片经历的开源 SoC 项目——谷歌的 OpenTitan。

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。

Vibe_SoC 通过 MCP 调用 VCS 启动 chip_sw_uart_smoketest 仿真

跑完之后结果如下:

chip_sw_uart_smoketest 仿真日志显示 SW TEST PASSED 与 UVM_ERROR 0

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

Verdi TraceMain 查看 chip_earlgrey_asic 波形与 module 信号

然后就可以愉快地看代码学习了。(你这个 Verdi 界面怎么和我的不一样)

chip_sw_uart_smoketest 做了哪些事情?大致流程如下:

  1. DV 会 backdoor 预加载镜像
    • test ROM 和 uart_smoketest 软件镜像被加载到片上 ROM/flash 模型。
  2. CPU 正常启动
    • Ibex 从 test ROM 启动。
    • ROM 跳到 flash 中的 UART smoke 测试程序。
  3. 软件初始化 UART
    • 配置 UART 寄存器。
    • 设置 UART clock/baudrate。
    • 使能 TX/RX 基础功能。
  4. 通过 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?”

Silicon-Crew SoC 流水线角色代理与 Gated Pipeline 阶段

Silicon-Crew Skills 技能列表:SoC 主线与 EDA 目标

本次 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 流程,非常适合学习。

OpenROAD 开源物理设计流程标志

配合 SkyWater SKY130 Open Source PDK 130nm 工艺设计套件,可以真正带真实库跑中后端 Flow。这个 PDK 里面的库都是 .lib 格式,DC 吃的是 .db 格式。

Silicon-Crew 新增一个 lib-db-gen 的 Skill,支持两件事:

  1. 把已有 Liberty .lib 转成 .db
  2. 从 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,解决实际工作场景中的痛点:

  1. 发布版本问题,下游需要一个稳定能用的版本
  2. 别人拿到代码总是编译不过
  3. 中端拿到代码总是 lint 不过
  4. 验证拿到代码总是 smoke case 不过
  5. 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 工程化实践,欢迎到 云栈社区 一起交流。




上一篇:为什么项目经理越忙工资越低?执行忙碌陷阱与加薪底层逻辑
下一篇:多Agent集群交付RTL:UART IP从Spec到网表效率提高1000%
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-18 05:10 , Processed in 1.225921 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表