这是一个开源的AI原生Chiplet设计流程,基于开源EDA工具链和AI Coding Agent
#同步更新 https://www.gitlink.org.cn/amoslee2011/Babel https://github.com/amoslee2026/Babel
面向电子工程毕业生的完整学习教程(16 章),涵盖 AI 原生芯片设计全流程:
| Part | 章节 | 主题 |
|---|---|---|
| I. 范式与准备 | 01-04 | AI 原生范式、前置知识、用 Claude Code 学习、人机协作模式 |
| II. 规范驱动设计 | 05-07 | PRD、架构设计、微架构规范 (MAS) |
| III. AI 实现流程 | 08-11 | RTL 生成、验证闭环、逻辑综合、物理设计 |
| IV-V. 工具与实战 | 12-16 | EDA 工具链、NPU 实战走读、调试、术语表、延伸阅读 |
首个完整开源的"AI Coding Agent 驻动"芯片设计流程,从自然语言需求到 GDSII signoff 全流程由 Agent 自动化完成。打破传统 IC 设计依赖资深工程师手工迭代的方式,用专业化 Agent 代替人力完成设计、验证、综合、物理设计各阶段。
5 个专业化 Agent 通过 labeled issue 触发 handoff 协作,每个 Agent 有独立迭代收敛限制和 escalate-user 机制,超限时自动暂停请求人类决策。下游发现问题可通过 *-needs-fix 回流到上游修正。
用户需求 → [architect] → guru-rtl → guru-verification → guru-synthesis → guru-pd → signoff
↑_________________________*-needs-fix 回流__________________________|
三层追溯模型确保需求、代码、断言、约束始终一致:
- Layer 1: RTL 文件头
@requirement / @spec_hash / @spec_ref - Layer 2: 内嵌 SVA 断言
@verifies / @constraint标签 - Layer 3: SDC 约束
@requirement / @spec_ref / @constraint
REQ_ID 编码规范跨 PRD → ARCH → MAS → RTL → TB → SDC 全链路传播,babel_traceability.py 生成多阶段追溯矩阵。
Hook 自动检测上游 artifact 变更 → 标记下游 stale → 提醒重跑下游 Agent。git commit 前自动执行质量门禁:RTL lint、REQ_ID 唯一性、@spec_hash 一致性校验,防止上下文断裂。
每个模块的 regmap.md 一键生成三种产物:Markdown/SVD 文档、SystemVerilog 断言(reset/RO/W1C/reserved/addr)、SHA256 spec hash 注入,确保寄存器定义与实现一致。
35+ Skill 封装开源 EDA 工具(Yosys/OpenSTA/Magic/Netgen/QRouter/KLayout/Verilator/ABC)为 Agent 可调用的标准化接口。综合采用 5-Phase 并行策略,验证要求 100% 功能 + 100% code 覆盖率。
Babel 采用 5-agent 流水线架构,每个 agent 专注于特定设计阶段,通过 issue handoff 协作。
用户需求 → [bba-architect] → bba-guru-rtl → bba-guru-verification → bba-guru-synthesis → bba-guru-pd → signoff
↑_________________________*-needs-fix 回流__________________________|
| Agent | 触发方式 | 职责 |
|---|---|---|
/bba-architect |
新设计想法 / arch-needs-fix |
PRD → arch_spec → MAS,架构设计流程负责人 |
/bba-guru-rtl |
ready-for-rtl / rtl-needs-fix |
MAS → lint-clean SystemVerilog,RTL生成专家 |
/bba-guru-verification |
ready-for-verification |
100% 覆盖率验证,验证专家 |
/bba-guru-synthesis |
ready-for-synth / synth-needs-fix |
SDC + CDC + 并行综合 → timing closure |
/bba-guru-pd |
ready-for-pd / pd-rework |
Floorplan → Place → Route → DRC/LVS → GDSII |
启动新设计:
# 在 Claude Code 中描述设计需求
/bba-architect
# 例如: "设计一个 AI 推理处理器 主频1Ghz,能运行主流大模型,使用 ASAP7 PDK"继续现有设计:
# 查看当前状态
/bb-list-issues
# 触发特定阶段
/bba-guru-rtl # RTL 生成
/bba-guru-verification # 验证
/bba-guru-synthesis # 综合
/bba-guru-pd # 物理设计| 类别 | Skill | 用途 |
|---|---|---|
| EDA 工具 | /bb-invoke-yosys |
并行综合 (LLM驱动5-Phase) |
/bb-invoke-verilator |
仿真 + 覆盖率收集 | |
/bb-invoke-opensta |
静态时序分析 | |
/bb-invoke-magic |
Placement + DRC | |
/bb-invoke-netgen |
LVS 比对 | |
/bb-invoke-qrouter |
详细布线 | |
/bb-invoke-klayout |
GDSII 导出/验证 | |
/bb-invoke-abc |
逻辑优化 | |
| 质量检查 | /bb-check-lint |
verible lint (含修复迭代) |
/bb-check-cdc |
CDC + RDC 检查 | |
/bb-spec-review |
MAS 对抗评审 | |
/bb-code-review |
RTL 代码审查 | |
| 流程生成 | /bb-rtl-coder |
MAS → SV 代码生成 |
/bb-create-sdc |
MAS → SDC 约束 | |
/bb-generate-tb |
测试平台生成 | |
/bb-create-verif-plan |
验证计划 | |
/bb-create-floorplan |
Floorplan TCL | |
| 质量门控 | /bb-gate-rtl-quality |
RTL 交付检查 |
/bb-gate-test-quality |
验证交付检查 | |
/bb-gate-synth-quality |
综合交付检查 | |
/bb-gate-pd-quality |
PD 交付检查 | |
| 辅助工具 | /bb-find-module-deps |
模块依赖拓扑排序 |
/bb-trace-signal-path |
信号路径追踪 | |
/bb-collect-coverage |
覆盖率数据收集 | |
/bb-search-protocol / /bb-search-cbb |
协议/CBB 复用搜索 | |
| 问题管理 | /bb-create-issue / /bb-list-issues / /bb-close-issue |
Issue 协议 |
designs/<name>/
├── idea/
│ └── parsed_idea.json # 解析后的设计需求
├── PRD.md # 产品需求文档
├── arch_spec/
│ ├── arch_doc.md # 架构文档
│ ├── data_flow.md # 数据流
│ └── workflow.md # 工作流
├── mas/
│ ├── mas.json # 微架构规范 (schema-valid)
│ ├── fsm/ # FSM 定义
│ ├── datapath/ # 数据通路
│ └── verif_plan_seed.md # 验证计划种子
├── rtl/
│ ├── *.sv # SystemVerilog 源码
│ ├── file_list.f # 拓扑排序文件列表
│ └── rtl_artifact.json # RTL 交付产物
├── tb/
│ ├── *.sv / *.py # 测试平台 / cocotb
├── verif/
│ ├── verification_plan.md # 完整验证计划
│ └── test_cases.md # 测试用例列表
├── sim_results/
│ ├── *.log / *.vcd # 仿真结果
├── coverage.json # 覆盖率数据
├── test_report.json # 验证报告
├── constraints/
│ └ *.sdc # 时序约束
├── synth_parallel/
│ ├── synthesis_summary.json # 并行综合结果
│ └ <module>/netlist.v # 网表
├── synth_report.json # 综合报告
├── pd/
│ ├── floorplan.def # Floorplan
│ ├── placed.def / routed.def
│ ├── drc_report.txt / lvs_report.txt
│ └── timing_signoff.json # Post-PD STA
├── gdsii/
│ └ *.gds # 最终布局
├── pd_report.json # PD 交付报告
├── .handoff/
│ ├── ready-for-*.md # 各阶段 handoff
│ ├── fix_iter.json # 修复迭代计数
│ └── global_fix_iter.json # 全局计数
└── ADR/
└ *.md # 架构决策记录
Babel v1.2 引入完整的 spec ↔ code 双向追溯体系,确保需求、代码、断言、约束始终一致。
Layer 1: Spec Header — RTL 文件头部 @requirement / @spec_ref / @spec_hash
Layer 2: Inline SVA — 寄存器断言内嵌 @verifies / @constraint 标签
Layer 3: Cross-Ref Tags — SDC 约束内嵌 @requirement / @spec_ref / @constraint
每个模块拥有独立的 spec/MAS/<module>/regmap.md,通过自动化脚本生成三种产物:
spec/MAS/<module>/regmap.md
├── generate_regmap_doc.py → doc/regmap/<module>.md + .svd
└── generate_regmap_assertions.py → rtl/<module>/src/*_regmap_assertions.sv
└── compute_spec_hash.py --inject (SHA256 注入)
| 模块 | 寄存器数 | SVA Properties | Spec Hash |
|---|---|---|---|
| M00_SystolicArray | 4 | 22 | sha256:40d48df8c266 |
| M01_DataflowController | 10 | 52 | sha256:91d2b1405f45 |
| M02_SRAM | 3 | 18 | sha256:66d1bba70afc |
| M03_DRAMController | 4 | 20 | sha256:081931ff9be5 |
| M04_SystemBus | 7 | 36 | sha256:0e08e60cc0ad |
| M05_PowerManager | 3 | 20 | sha256:b04a03e91656 |
| M06_ClockManager | 3 | 20 | sha256:eefa1152b74a |
| M07_ResetManager | 3 | 20 | sha256:1fd07a37ec6a |
所有 SDC 约束命令内嵌 @requirement + @spec_ref 标签,由 babel_traceability.py sdc 自动扫描并生成 traceability/requirements_matrix.sdc.csv。
| 前缀 | 含义 | 示例 |
|---|---|---|
REQ-M##-R### |
模块寄存器需求 | REQ-M00-R001 |
REQ-M##-F### |
模块功能需求 | REQ-M12-F001 |
REQ-NFR-F## |
非功能需求(时序等) | REQ-NFR-F001 |
REQ-SYS-## |
系统级需求 | REQ-SYS-001 |
| 脚本 | 用途 |
|---|---|
scripts/generate_regmap_doc.py |
regmap.md → Markdown + CMSIS-SVD 文档 |
scripts/generate_regmap_assertions.py |
regmap.md → SystemVerilog 断言 (reset/RO/W1C/reserved/addr) |
scripts/compute_spec_hash.py |
计算 spec SHA256 并注入 RTL 文件头 |
scripts/babel_traceability.py |
多阶段追溯矩阵生成 (prd/arch/impl/src/test/sdc) |
scripts/allocate_req_id.py |
REQ_ID 自动分配 |
scripts/check_req_uniqueness.py |
REQ_ID 唯一性校验 |
Agent 间通过 labeled issue 协作:
| Label | 含义 |
|---|---|
ready-for-rtl |
MAS 完成,等待 RTL 生成 |
ready-for-verification |
RTL lint-clean,等待验证 |
ready-for-synth |
100% 覆盖率通过,等待综合 |
ready-for-pd |
Timing closed,等待物理设计 |
signoff |
GDSII 完成,用户审核 |
arch-needs-fix |
MAS 问题,回流 architect |
rtl-needs-fix |
RTL 问题,回流 rtl guru |
synth-needs-fix |
综合问题,回流 synthesis guru |
escalate-user |
超出迭代限制,需用户决策 |
| Agent | 单阶段迭代限制 | 全局限制 |
|---|---|---|
| architect | — | 10 |
| rtl | lint 3 次 | 10 |
| verification | coverage 8 次 | 10 |
| synthesis | timing 6 次 | 10 |
| pd | total 8 次 (DRC 3 / LVS 2 / STA 3) | 10 |
超过限制时,agent 自动触发 escalate-user issue,停止并等待用户决策。
# 1. 启动 Claude Code
claude-code
# 2. 描述设计需求
> 设计一个简化版 UART 控制器,支持 9600 baud,目标频率 50MHz,使用 ASAP7
# 3. 或显式触发 architect
> /bba-architect
# 4. architect 会依次生成 PRD → arch_spec → MAS
# 每阶段完成后暂停,等待用户确认
# 5. 确认后继续,直到 ready-for-rtl 开启
# 6. 触发 RTL 生成
> /bba-guru-rtl
# 7. 依次触发后续阶段...# 加载 EDA 环境
source ~/wrk/eda_opensources/eda_env.sh| 工具 | 版本 | 用途 |
|---|---|---|
| Yosys | 0.35 | RTL 综合 |
| ABC | latest | 逻辑优化 |
| OpenSTA | 2.2.0 | 静态时序分析 |
| Magic | 8.3.641 | Layout/DRC/LVS |
| Netgen | 1.5 | LVS 网表比对 |
| QRouter | 1.4 | 详细布线 |
| KLayout | 0.30.8 | GDSII 查看/DRC |
| Verilator | latest | Verilog 仿真 |
| verible | latest | SV lint |
ASAP7 (Arizona State University 7nm PDK) — 开源预测性 7nm 工艺设计套件。
位置:libs/asap7/
| Library | 描述 |
|---|---|
| asap7sc6t_26 | 6-track 标准单元库 |
| asap7sc7p5t_27 | 7.5-track 标准单元库 (r27) |
| asap7sc7p5t_28 | 7.5-track 标准单元库 (r28) |
| asap7_sram | SRAM 模型 |