SKILLS_CHECKLIST.md

SOC3.0 技能清单与学习路径

📊 技能掌握度自测表

使用此表格跟踪你的学习进度,每完成一个技能点,在对应位置打勾 ✅


🔹 一、基础知识(必学)

1.1 硬件描述语言

技能点 入门 熟练 精通 学习资源
Verilog 语法 [ ] [ ] [ ] 《Verilog 数字系统设计教程》
SystemVerilog 语法 [ ] [ ] [ ] 《SystemVerilog for Verification》
组合逻辑设计 [ ] [ ] [ ] 数字电路基础
时序逻辑设计 [ ] [ ] [ ] 数字电路基础
状态机设计 [ ] [ ] [ ] 项目代码示例
时钟域交叉(CDC) [ ] [ ] [ ] 高级主题

掌握标准
- 入门:能够阅读和理解代码
- 熟练:能够独立编写模块
- 精通:能够优化和调试复杂设计


1.2 RISC-V 架构

技能点 入门 熟练 精通 学习资源
RISC-V 指令集 [ ] [ ] [ ] RISC-V 官方文档
处理器流水线 [ ] [ ] [ ] 《计算机组成与设计》
中断和异常 [ ] [ ] [ ] Ibex 文档
JTAG 调试接口 [ ] [ ] [ ] 项目代码

掌握标准
- 入门:理解基本指令和流水线概念
- 熟练:能够编写汇编程序
- 精通:能够优化处理器性能


1.3 总线协议

技能点 入门 熟练 精通 学习资源
AMBA AHB 协议 [ ] [ ] [ ] ARM AMBA 规范
AMBA APB 协议 [ ] [ ] [ ] ARM AMBA 规范
AHB2APB 桥接 [ ] [ ] [ ] 项目代码
总线仲裁 [ ] [ ] [ ] 高级主题
地址映射 [ ] [ ] [ ] 项目文档

掌握标准
- 入门:理解协议基本信号和时序
- 熟练:能够设计总线接口
- 精通:能够优化总线性能


🔹 二、IC 设计技能(设计方向)

2.1 IP 模块设计

模块 理解原理 阅读代码 修改优化 独立设计 难度
UART [ ] [ ] [ ] [ ]
PWM [ ] [ ] [ ] [ ]
SPI/QSPI [ ] [ ] [ ] [ ] ⭐⭐
I2C [ ] [ ] [ ] [ ] ⭐⭐
DMA [ ] [ ] [ ] [ ] ⭐⭐⭐
Pinmux [ ] [ ] [ ] [ ] ⭐⭐
CNN 加速器 [ ] [ ] [ ] [ ] ⭐⭐⭐⭐
ISP [ ] [ ] [ ] [ ] ⭐⭐⭐⭐

学习建议:按难度从低到高学习


2.2 系统集成

技能点 入门 熟练 精通
顶层模块设计 [ ] [ ] [ ]
时钟域管理 [ ] [ ] [ ]
复位策略 [ ] [ ] [ ]
地址解码 [ ] [ ] [ ]
系统级调试 [ ] [ ] [ ]

2.3 设计优化

技能点 入门 熟练 精通
面积优化 [ ] [ ] [ ]
时序优化 [ ] [ ] [ ]
功耗优化 [ ] [ ] [ ]
代码风格 [ ] [ ] [ ]

🔹 三、IC 验证技能(验证方向)

3.1 UVM 方法学

技能点 入门 熟练 精通 学习资源
UVM 基础概念 [ ] [ ] [ ] 《UVM 实战》
Testbench 搭建 [ ] [ ] [ ] 项目示例
Driver/Sequencer [ ] [ ] [ ] UVM 文档
Monitor/Scoreboard [ ] [ ] [ ] UVM 文档
Agent 封装 [ ] [ ] [ ] 项目示例
环境配置 [ ] [ ] [ ] 项目示例

掌握标准
- 入门:理解 UVM 基本概念
- 熟练:能够搭建简单验证平台
- 精通:能够设计复杂验证环境


3.2 验证技术

技能点 入门 熟练 精通
测试用例设计 [ ] [ ] [ ]
约束随机验证 [ ] [ ] [ ]
断言(SVA) [ ] [ ] [ ]
覆盖率分析 [ ] [ ] [ ]
回归测试 [ ] [ ] [ ]
错误注入 [ ] [ ] [ ]

3.3 模块验证实践

模块 理解测试用例 运行测试 修改测试 编写 UVM 覆盖率
SRAM [ ] [ ] [ ] [ ] [ ]
UART [ ] [ ] [ ] [ ] [ ]
SPI [ ] [ ] [ ] [ ] [ ]
I2C [ ] [ ] [ ] [ ] [ ]
PWM [ ] [ ] [ ] [ ] [ ]
DMA [ ] [ ] [ ] [ ] [ ]

目标:每个模块覆盖率 ≥ 90%


🔹 四、综合与实现(选学)

4.1 逻辑综合

技能点 入门 熟练 精通 学习资源
Design Compiler 使用 [ ] [ ] [ ] DC 用户手册
SDC 约束编写 [ ] [ ] [ ] SDC 规范
时序分析 [ ] [ ] [ ] 时序分析基础
面积优化 [ ] [ ] [ ] 综合优化技巧
功耗分析 [ ] [ ] [ ] 功耗分析工具

4.2 工艺库

技能点 入门 熟练 精通
标准单元库理解 [ ] [ ] [ ]
PDK 使用 [ ] [ ] [ ]
时序角概念 [ ] [ ] [ ]
库文件转换 [ ] [ ] [ ]

🔹 五、软件开发(选学)

5.1 嵌入式开发

技能点 入门 熟练 精通
RISC-V 汇编 [ ] [ ] [ ]
裸机 C 编程 [ ] [ ] [ ]
外设驱动开发 [ ] [ ] [ ]
中断服务程序 [ ] [ ] [ ]
链接脚本 [ ] [ ] [ ]

🔹 六、工具使用

6.1 EDA 工具

工具 基本使用 熟练使用 高级技巧
VCS/QuestaSim [ ] [ ] [ ]
Verdi/DVE [ ] [ ] [ ]
Design Compiler [ ] [ ] [ ]
SpyGlass [ ] [ ] [ ]
Verilator [ ] [ ] [ ]

6.2 脚本语言

语言 基本语法 项目应用 自动化脚本
TCL [ ] [ ] [ ]
Python [ ] [ ] [ ]
Shell [ ] [ ] [ ]
Makefile [ ] [ ] [ ]

📈 学习进度跟踪

总体进度

  • [ ] 阶段一:基础准备(1-2 周)
  • [ ] 阶段二:理解架构(2-3 周)
  • [ ] 阶段三:模块级实践(4-6 周)
  • [ ] 阶段四:系统级实践(3-4 周)
  • [ ] 阶段五:综合与实现(2-3 周,选学)

里程碑

  • [ ] 里程碑 1:成功运行第一个测试用例
  • [ ] 里程碑 2:深入理解一个模块
  • [ ] 里程碑 3:完成模块级验证/设计
  • [ ] 里程碑 4:完成系统级验证/设计
  • [ ] 里程碑 5:完成项目报告

🎯 技能目标设定

初级目标(适合初学者)

  • ✅ 理解 SOC 系统架构
  • ✅ 能够阅读 RTL 代码
  • ✅ 能够运行仿真和查看波形
  • ✅ 理解基本总线协议

中级目标(适合有一定基础)

  • ✅ 能够独立分析模块功能
  • ✅ 能够编写测试用例
  • ✅ 能够搭建简单验证平台
  • ✅ 能够定位并修复 bug

高级目标(适合深入学习)

  • ✅ 能够设计新的 IP 模块
  • ✅ 能够完成系统级验证
  • ✅ 能够进行逻辑综合和优化
  • ✅ 能够撰写技术文档

📝 学习笔记模板

建议为每个技能点记录:

  1. 学习日期_年_月____日
  2. 学习内容:简要描述
  3. 关键概念:列出 3-5 个关键点
  4. 实践任务:完成的任务
  5. 遇到的问题:遇到的问题和解决方案
  6. 下一步计划:后续学习计划

💡 学习建议

  1. 循序渐进:从简单模块开始,逐步深入
  2. 理论结合实践:每学一个概念,立即实践
  3. 记录笔记:好记性不如烂笔头
  4. 主动思考:多问为什么,深入理解原理
  5. 项目驱动:以完成项目为目标,倒推学习内容

定期更新此清单,跟踪你的学习进度! 📊