QUICK_START.md

SOC3.0 快速入门指南

🚀 5 分钟了解项目

项目是什么?

SOC3.0 是一个完整的 RISC-V 片上系统,包含:
- 🎯 RISC-V Ibex 处理器核心
- 🔌 10+ 个外设模块(SPI、UART、I2C、PWM 等)
- ⚡ 加速器(CNN、ISP)
- 🔗 标准总线系统(AHB/APB)

你能做什么?

  • 学习 IC 设计:理解 SOC 架构,设计数字电路
  • 学习 IC 验证:使用 UVM 进行功能验证
  • 学习综合:将 RTL 转换为门级网表
  • 学习嵌入式:为 SOC 编写驱动和测试程序

📍 项目结构速览

SOC3.0/
├── soc/                    # 核心代码
│   ├── top/               # 顶层模块(从这里开始!)
│   ├── ip/                # IP 模块
│   │   ├── apb_subsystem/ # 外设子系统
│   │   ├── dma/           # DMA 控制器
│   │   ├── cnn_v0/        # CNN 加速器
│   │   └── isp/           # ISP 处理器
│   ├── ibex/              # RISC-V 处理器
│   └── sw/                # 软件和测试
│       ├── soc_test_c/    # C 语言测试用例
│       └── SOC_TESTPLAN.md # 测试计划(必读!)
├── dc/                    # 综合相关
└── flow/                  # 设计流程

🎯 四步开始学习

第零步:生成简历模板 ⭐ 最重要!

为什么要先做这一步?
- 帮助你明确学习方向(设计/验证/后端)
- 了解项目结束后简历上能写什么
- 在学习过程中有针对性地积累成果

如何生成
- Web 版本:访问 /projects/soc3/resume-generator
- 命令行:python3 tools/generate_resume.py

完成标准
- ✅ 已生成简历模板
- ✅ 明确了学习方向
- ✅ 保存了模板作为学习目标参考


第一步:理解架构(1 天)

📖 阅读文档:
- soc/sw/SOC_TESTPLAN.md - 了解系统架构
- soc/top/top.sv - 查看顶层连接

💡 关键概念:
- AHB:高性能总线,连接处理器和高速外设
- APB:外设总线,连接低速外设
- 地址映射:每个外设都有唯一的基地址

第二步:运行测试(1 天)

🔧 操作步骤:
1. 编译项目:make 或使用 EDA 工具
2. 运行测试:选择一个简单测试(如 sram_test
3. 查看波形:使用 Verdi 或 DVE

📝 推荐测试顺序:
1. sram_test - 最简单
2. uart_test - 理解串口通信
3. pwm_test - 理解定时器
4. spi1_test - 理解 SPI 协议

第三步:深入模块(1 周+)

🎓 选择一个模块深入学习:
- UART(推荐入门):代码简单,容易理解
- SPI:理解串行通信协议
- DMA:理解数据传输机制

📚 学习方法:
1. 阅读模块的 RTL 代码
2. 运行相关测试用例
3. 观察波形,理解数据流
4. 尝试修改测试用例


💼 简历一句话描述

设计方向

参与 RISC-V SOC 系统设计,负责 SPI/QSPI 控制器和 DMA 模块的 RTL 实现,使用 Verilog/SystemVerilog 完成 5000+ 行代码,系统成功集成并通过功能验证。

验证方向

基于 UVM 搭建 RISC-V SOC 验证平台,编写 50+ 个测试用例,功能覆盖率从 60% 提升至 95%+,发现并修复设计缺陷 20+ 个。

综合方向

使用 Design Compiler 完成 SOC 逻辑综合,目标工艺 GF180MCU(180nm),编写 SDC 约束,优化时序和面积,满足设计约束。


🛠️ 必备工具

仿真工具(三选一)

  • VCS(Synopsys)- 工业标准
  • QuestaSim(Mentor)- 功能强大
  • Verilator(开源)- 免费替代

波形查看

  • Verdi(Synopsys)- 最常用
  • DVE(Synopsys)- VCS 自带

综合工具(选学)

  • Design Compiler(Synopsys)

其他

  • Git - 版本控制
  • TCL - 脚本语言
  • Python - 自动化脚本

📚 学习资源速查

必读文档

  • [ ] soc/sw/SOC_TESTPLAN.md - 系统架构和测试计划
  • [ ] STUDENT_PROJECT_GUIDE.md - 完整学习指南
  • [ ] dc/README_GF180.md - 综合指南(如果学综合)

在线资源

  • RISC-V 官网:https://riscv.org/
  • ARM AMBA 规范:https://developer.arm.com/documentation
  • EDA Playground:https://www.edaplayground.com/(在线仿真)

推荐书籍

  • 《数字设计和计算机体系结构》(RISC-V 版)
  • 《SystemVerilog for Verification》
  • 《UVM 实战》

❓ 常见问题

Q: 我是零基础,能学吗?
A: 建议先学 Verilog 基础(1-2 周),然后从最简单的模块开始。

Q: 没有 EDA 工具怎么办?
A: 使用开源工具 Verilator,或申请教育版 License。

Q: 应该学设计还是验证?
A: 建议都了解,然后选择一个方向深入。验证更容易上手。

Q: 需要多长时间?
A: 入门 1-2 周,完整学习 3-6 个月。


✅ 学习检查清单

第一周

  • [ ] 阅读架构文档
  • [ ] 成功运行一个测试用例
  • [ ] 能够查看并理解波形
  • [ ] 理解地址映射关系

第一个月

  • [ ] 深入理解一个模块(如 UART)
  • [ ] 能够修改测试用例
  • [ ] 理解总线协议(AHB/APB)
  • [ ] 能够定位简单 bug

第三个月

  • [ ] 完成一个模块的验证平台(验证方向)
  • [ ] 或完成一个模块的设计优化(设计方向)
  • [ ] 覆盖率/功能达到目标
  • [ ] 完成项目报告

🎯 下一步

  1. 📖 阅读 STUDENT_PROJECT_GUIDE.md 获取完整指南
  2. 🔧 搭建开发环境
  3. 🚀 开始第一个测试用例!

祝学习顺利! 💪