LEARNING_PATH.md

SOC3.0 分阶段学习路径与实践任务

📋 使用说明

本文档提供了 SOC3.0 项目的完整学习路径,分为 5 个阶段,每个阶段包含:
- 学习目标:本阶段要掌握的知识
- 实践任务:需要完成的具体任务
- 验收标准:如何判断任务完成
- AI 审核清单:AI 审核时会检查的内容

建议
- 每个阶段完成后,使用 AI 审核工具检查完成情况
- 完成所有阶段后,进入最终项目阶段,选择自己的研究方向


🎯 阶段一:基础准备(1-2 周)

学习目标

  • [ ] 明确学习方向和目标(通过生成简历)
  • [ ] 理解 SOC 系统架构
  • [ ] 熟悉项目结构和代码组织
  • [ ] 掌握基本的 Verilog/SystemVerilog 语法
  • [ ] 能够运行仿真和查看波形
  • [ ] 理解基本的总线协议概念

实践任务

任务 0:生成简历模板 ⭐ 第一步

  • [ ] 访问简历生成器页面
  • [ ] 选择学习方向(IC 设计/IC 验证/数字后端)
  • [ ] 填写基本信息(姓名、项目时间等)
  • [ ] 生成个性化简历模板
  • [ ] 保存简历模板,作为学习目标参考

为什么这是第一步?
- ✅ 帮助你明确学习方向(设计/验证/后端)
- ✅ 了解项目结束后简历上能写什么
- ✅ 在学习过程中有针对性地积累成果
- ✅ 提前规划项目时间和里程碑

验收标准
- 已生成简历模板
- 明确了学习方向
- 理解了项目结束后能获得的技能和经验

AI 审核检查点
- [ ] 提交生成的简历模板
- [ ] 说明选择的学习方向
- [ ] 说明为什么选择这个方向


任务 1.1:环境搭建

  • [ ] 安装 EDA 工具(VCS/QuestaSim/Verilator)
  • [ ] 安装波形查看工具(Verdi/DVE)
  • [ ] 配置开发环境
  • [ ] 验证工具安装成功

验收标准
- 能够编译项目
- 能够运行一个简单的测试用例
- 能够查看波形

AI 审核检查点
- [ ] 提供工具安装截图或日志
- [ ] 提供成功运行的测试用例输出
- [ ] 提供波形截图


任务 1.2:阅读架构文档

  • [ ] 阅读 soc/sw/SOC_TESTPLAN.md
  • [ ] 阅读 QUICK_START.md
  • [ ] 理解系统架构图
  • [ ] 理解地址映射关系

验收标准
- 能够画出系统架构图
- 能够说出每个模块的功能
- 能够找到任意外设的基地址

AI 审核检查点
- [ ] 提交系统架构图(手绘或电子版)
- [ ] 回答以下问题:
- SOC3.0 包含哪些主要模块?
- AHB 和 APB 总线的区别是什么?
- SRAM 的基地址是多少?


任务 1.3:运行第一个测试

  • [ ] 选择最简单的测试用例(推荐 sram_test
  • [ ] 编译并运行测试
  • [ ] 查看波形,理解信号变化
  • [ ] 记录观察结果

验收标准
- 测试用例成功运行
- 能够解释波形中的关键信号
- 理解测试的基本流程

AI 审核检查点
- [ ] 提供测试运行成功的日志
- [ ] 提供波形截图,并标注关键信号
- [ ] 简要说明测试的目的和结果


任务 1.4:代码阅读练习

  • [ ] 阅读 soc/top/top.sv 顶层模块
  • [ ] 理解模块之间的连接关系
  • [ ] 选择一个简单模块(如 UART)阅读代码
  • [ ] 理解模块的接口和功能

验收标准
- 能够解释顶层模块的作用
- 能够说明模块之间的连接方式
- 能够理解一个简单模块的工作原理

AI 审核检查点
- [ ] 提交代码阅读笔记
- [ ] 回答以下问题:
- 顶层模块连接了哪些子模块?
- UART 模块有哪些主要接口?
- 模块是如何通过总线连接的?


阶段一总结

完成检查清单
- [ ] 所有任务已完成
- [ ] 通过 AI 审核
- [ ] 提交阶段一总结报告

总结报告应包含
- 学习内容总结
- 遇到的问题和解决方案
- 下一步学习计划


🎯 阶段二:理解架构(2-3 周)

学习目标

  • [ ] 深入理解 AMBA AHB/APB 总线协议
  • [ ] 理解 RISC-V 处理器架构
  • [ ] 掌握系统集成方法
  • [ ] 能够分析模块接口和协议

实践任务

任务 2.1:总线协议学习

  • [ ] 学习 AMBA AHB 协议规范
  • [ ] 学习 AMBA APB 协议规范
  • [ ] 分析 AHB2APB 桥接器代码
  • [ ] 理解总线信号和时序

验收标准
- 能够解释 AHB 和 APB 的区别
- 能够说明总线传输的基本流程
- 能够分析总线时序图

AI 审核检查点
- [ ] 提交总线协议学习笔记
- [ ] 回答以下问题:
- AHB 总线有哪些主要信号?
- APB 总线有哪些主要信号?
- AHB2APB 桥接器的作用是什么?


任务 2.2:RISC-V 处理器学习

  • [ ] 学习 RISC-V 指令集基础
  • [ ] 理解 Ibex 处理器架构
  • [ ] 分析处理器与总线的接口
  • [ ] 理解中断和异常处理

验收标准
- 能够解释 RISC-V 的基本指令
- 能够说明处理器的流水线结构
- 能够理解处理器如何访问外设

AI 审核检查点
- [ ] 提交 RISC-V 学习笔记
- [ ] 回答以下问题:
- RISC-V 有哪些基本指令类型?
- Ibex 处理器如何访问内存和外设?
- 中断是如何处理的?


任务 2.3:系统集成分析

  • [ ] 分析地址映射关系
  • [ ] 理解时钟域管理
  • [ ] 理解复位策略
  • [ ] 分析系统级连接

验收标准
- 能够画出完整的地址映射图
- 能够说明时钟域的处理方法
- 能够理解系统复位流程

AI 审核检查点
- [ ] 提交地址映射表
- [ ] 提交系统集成分析报告
- [ ] 回答以下问题:
- 每个外设的基地址是多少?
- 系统有哪些时钟域?
- 复位是如何管理的?


任务 2.4:模块接口分析

  • [ ] 选择一个外设模块(如 SPI)
  • [ ] 分析模块的接口信号
  • [ ] 理解模块的寄存器定义
  • [ ] 分析模块的工作流程

验收标准
- 能够说明模块的所有接口信号
- 能够解释模块的寄存器映射
- 能够画出模块的状态机或工作流程

AI 审核检查点
- [ ] 提交模块接口分析文档
- [ ] 提交模块工作流程图
- [ ] 回答以下问题:
- 模块有哪些接口信号?
- 模块的寄存器是如何定义的?
- 模块是如何工作的?


阶段二总结

完成检查清单
- [ ] 所有任务已完成
- [ ] 通过 AI 审核
- [ ] 提交阶段二总结报告


🎯 阶段三:模块级实践(4-6 周)

学习目标

根据选择的方向,深入学习:
- 设计方向:能够设计或优化 IP 模块
- 验证方向:能够搭建验证平台并编写测试用例
- 后端方向:能够完成模块的综合和优化

实践任务(设计方向)

任务 3.1:模块设计/优化

  • [ ] 选择一个模块进行深入学习(推荐:UART、SPI、PWM)
  • [ ] 分析现有设计
  • [ ] 提出优化方案或新功能
  • [ ] 实现设计改进

验收标准
- 完成设计改进
- 代码通过语法检查
- 功能验证通过

AI 审核检查点
- [ ] 提交设计文档
- [ ] 提交改进后的代码
- [ ] 提交功能验证结果
- [ ] 说明改进点和效果


任务 3.2:接口设计

  • [ ] 设计模块的接口
  • [ ] 遵循总线协议规范
  • [ ] 编写接口文档
  • [ ] 验证接口正确性

验收标准
- 接口设计符合协议规范
- 接口文档完整清晰
- 接口验证通过

AI 审核检查点
- [ ] 提交接口设计文档
- [ ] 提交接口验证结果
- [ ] 说明接口设计考虑


实践任务(验证方向)

任务 3.1:UVM 验证平台搭建

  • [ ] 选择一个模块(推荐:UART、SPI)
  • [ ] 搭建 UVM 验证平台
  • [ ] 实现 Driver、Monitor、Scoreboard
  • [ ] 编写基础测试用例

验收标准
- 验证平台能够编译运行
- 基础测试用例通过
- 代码结构清晰

AI 审核检查点
- [ ] 提交验证平台代码
- [ ] 提交测试用例代码
- [ ] 提交运行结果
- [ ] 说明验证平台架构


任务 3.2:测试用例开发

  • [ ] 编写功能测试用例(10+ 个)
  • [ ] 编写边界条件测试
  • [ ] 编写错误注入测试
  • [ ] 实现覆盖率收集

验收标准
- 测试用例覆盖主要功能
- 覆盖率 ≥ 80%
- 所有测试用例通过

AI 审核检查点
- [ ] 提交测试用例列表
- [ ] 提交覆盖率报告
- [ ] 提交测试运行结果
- [ ] 说明测试策略


任务 3.3:协议检查

  • [ ] 编写 SystemVerilog Assertion(SVA)
  • [ ] 实现协议检查器
  • [ ] 验证协议正确性
  • [ ] 发现并报告协议违规

验收标准
- SVA 断言覆盖主要协议点
- 能够检测协议违规
- 协议检查器工作正常

AI 审核检查点
- [ ] 提交 SVA 断言代码
- [ ] 提交协议检查器代码
- [ ] 提交检查结果
- [ ] 说明协议检查策略


实践任务(后端方向)

任务 3.1:逻辑综合

  • [ ] 选择一个模块进行综合
  • [ ] 编写 SDC 约束文件
  • [ ] 运行 Design Compiler
  • [ ] 分析综合结果

验收标准
- 综合成功完成
- 时序满足约束
- 面积在合理范围

AI 审核检查点
- [ ] 提交 SDC 约束文件
- [ ] 提交综合报告
- [ ] 提交时序分析结果
- [ ] 说明综合策略


任务 3.2:时序优化

  • [ ] 分析时序报告
  • [ ] 识别关键路径
  • [ ] 优化时序违规
  • [ ] 验证优化效果

验收标准
- 所有路径满足时序约束
- 优化方法合理
- 优化效果明显

AI 审核检查点
- [ ] 提交时序分析报告
- [ ] 提交优化方案
- [ ] 提交优化前后对比
- [ ] 说明优化方法


阶段三总结

完成检查清单
- [ ] 所有任务已完成
- [ ] 通过 AI 审核
- [ ] 提交阶段三总结报告
- [ ] 提交阶段三作品(代码、文档、报告)


🎯 阶段四:系统级实践(3-4 周)

学习目标

  • [ ] 理解系统级集成
  • [ ] 能够进行系统级验证/设计
  • [ ] 能够分析和解决系统级问题
  • [ ] 提升覆盖率或优化系统性能

实践任务

任务 4.1:系统级测试

  • [ ] 编写系统级测试用例
  • [ ] 测试多模块协同工作
  • [ ] 测试系统级场景
  • [ ] 分析系统性能

验收标准
- 系统级测试用例通过
- 能够验证系统功能
- 性能分析完整

AI 审核检查点
- [ ] 提交系统级测试用例
- [ ] 提交测试结果
- [ ] 提交性能分析报告
- [ ] 说明测试场景


任务 4.2:覆盖率提升(验证方向)

  • [ ] 分析覆盖率报告
  • [ ] 识别覆盖漏洞
  • [ ] 编写定向测试用例
  • [ ] 提升覆盖率至 95%+

验收标准
- 功能覆盖率 ≥ 95%
- 代码覆盖率 ≥ 98%
- 覆盖漏洞已解决

AI 审核检查点
- [ ] 提交覆盖率分析报告
- [ ] 提交覆盖率提升前后的对比
- [ ] 提交新增测试用例
- [ ] 说明覆盖率提升策略


任务 4.2:系统优化(设计方向)

  • [ ] 分析系统性能瓶颈
  • [ ] 提出优化方案
  • [ ] 实现优化
  • [ ] 验证优化效果

验收标准
- 优化方案合理
- 优化效果明显
- 系统功能正常

AI 审核检查点
- [ ] 提交性能分析报告
- [ ] 提交优化方案
- [ ] 提交优化前后对比
- [ ] 说明优化方法


任务 4.3:问题定位与解决

  • [ ] 发现系统级问题
  • [ ] 分析问题原因
  • [ ] 提出解决方案
  • [ ] 验证解决方案

验收标准
- 问题定位准确
- 解决方案有效
- 问题已解决

AI 审核检查点
- [ ] 提交问题分析报告
- [ ] 提交解决方案
- [ ] 提交验证结果
- [ ] 说明问题解决过程


阶段四总结

完成检查清单
- [ ] 所有任务已完成
- [ ] 通过 AI 审核
- [ ] 提交阶段四总结报告
- [ ] 系统级目标已达成


🎯 阶段五:最终项目(4-6 周)

学习目标

  • [ ] 选择自己的研究方向
  • [ ] 完成独立的项目或研究
  • [ ] 形成个人作品集
  • [ ] 准备技术分享和简历

研究方向选择

方向 1:新模块设计

适合:设计方向学生

可选主题
- Timer 定时器模块设计
- Watchdog 看门狗模块设计
- ADC 接口模块设计
- 自定义加速器设计

要求
- 完成 RTL 设计
- 完成功能验证
- 完成综合(可选)
- 编写完整文档


方向 2:验证平台开发

适合:验证方向学生

可选主题
- 为未验证模块搭建验证平台
- 开发可复用的验证 IP(VIP)
- 实现高级验证技术(如 Formal Verification)
- 自动化验证流程开发

要求
- 完成验证平台
- 覆盖率 ≥ 95%
- 编写完整文档
- 平台可复用


方向 3:系统优化

适合:所有方向学生

可选主题
- 系统性能优化
- 功耗优化
- 面积优化
- 系统级验证优化

要求
- 完成优化方案
- 量化优化效果
- 编写完整文档
- 验证优化效果


方向 4:算法加速器

适合:对算法感兴趣的学生

可选主题
- 图像处理算法加速器
- 信号处理算法加速器
- 加密算法加速器
- 自定义算法加速器

要求
- 完成算法分析
- 完成硬件设计
- 完成功能验证
- 性能评估


方向 5:工具开发

适合:对工具开发感兴趣的学生

可选主题
- 自动化测试脚本
- 覆盖率分析工具
- 性能分析工具
- 设计辅助工具

要求
- 完成工具开发
- 工具功能完整
- 编写使用文档
- 工具可复用


最终项目要求

项目文档

  • [ ] 项目提案(Project Proposal)
  • [ ] 设计/验证方案文档
  • [ ] 实现文档
  • [ ] 测试/验证报告
  • [ ] 项目总结报告

代码/作品

  • [ ] 完整的代码实现
  • [ ] 测试用例或验证平台
  • [ ] 运行结果和报告
  • [ ] 代码注释和文档

技术分享

  • [ ] 准备技术分享 PPT
  • [ ] 能够讲解项目
  • [ ] 能够回答技术问题

阶段五总结

完成检查清单
- [ ] 最终项目已完成
- [ ] 通过 AI 审核
- [ ] 提交最终项目报告
- [ ] 准备技术分享
- [ ] 更新简历


📊 整体进度跟踪

阶段完成情况

  • [ ] 阶段一:基础准备
  • [ ] 阶段二:理解架构
  • [ ] 阶段三:模块级实践
  • [ ] 阶段四:系统级实践
  • [ ] 阶段五:最终项目

作品集清单

  • [ ] 阶段一总结报告
  • [ ] 阶段二总结报告
  • [ ] 阶段三作品(代码+文档)
  • [ ] 阶段四作品(代码+文档)
  • [ ] 最终项目(完整作品集)

🎓 学习建议

  1. 循序渐进:按阶段完成,不要跳跃
  2. 理论结合实践:每学一个概念,立即实践
  3. 记录笔记:好记性不如烂笔头
  4. 主动思考:多问为什么,深入理解原理
  5. 定期总结:每个阶段结束后总结学习成果
  6. 寻求帮助:遇到问题及时寻求帮助

祝学习顺利!通过完整的 5 个阶段,你将拥有完整的 IC 设计/验证项目经验! 🚀