🎯 2025 · 实战课程
RISC-V 自定义指令扩展开发实战
30章
🧩 模块化 · 开放架构
⚡ 从工具链到流片
📘 友好色系
📂 共30个章节 · 点击卡片跳转
01
RISC-V基础与开放指令集架构
起源
发展历程、设计哲学、模块化特性、与其他ISA对比
02
开发环境搭建
工具链
GNU工具链编译、QEMU模拟器、Verilator仿真配置
03
指令格式详解
编码
R-type / I-type / S-type / B-type / U-type / J-type
04
自定义指令设计原则
规划
编码空间分配、操作码选择、寄存器约定、对齐要求
05
工具链扩展——GAS汇编器修改
汇编
添加汇编语法、操作数编码、gas源码修改实战
06
工具链扩展——Binutils修改
反汇编
objdump支持、readelf解析、符号处理
07
工具链扩展——GCC编译器后端
builtin
内建函数、intrinsic、自动向量化支持
08
RTL实现——单周期CPU设计
数据通路
控制单元、ALU扩展、自定义指令译码
09
RTL实现——流水线CPU设计
五级
数据冒险/控制冒险处理、流水线集成
10
RTL实现——写回与提交阶段
写回
寄存器文件写回、写回控制、异常处理
11
仿真验证——Verilator测试平台
C++
测试框架、DPI-C接口、波形生成与调试
12
仿真验证——指令级随机测试
随机
约束随机生成器、覆盖率驱动、Golden Model
13
仿真验证——形式化验证入门
SVA
断言编写、Formal工具、不变量检查
14
FPGA原型验证
Vivado
Vitis流程、资源约束、ILA调试、性能测量
15
自定义指令性能分析
CPI
指令吞吐量、加速比、Amdahl定律应用
16
自定义访存指令
向量化
向量化加载/存储、非对齐访问、缓存一致性
17
自定义算术指令
MAC
乘累加、饱和运算、SIMD并行计算
18
自定义位操作指令
位级
位提取/插入/反转、popcount、clz/ctz
19
自定义加密指令
AES
AES/SM4加速、哈希计算指令
20
自定义AI加速指令
AI
矩阵乘加、卷积加速、激活函数近似
21
自定义中断与异常指令
Trap
快速上下文切换、向量化中断、自定义Trap
22
自定义调试指令
调试
硬件断点、追踪点、性能计数器、调试模式
23
自定义系统级指令
CSR
自定义CSR、机器模式扩展、SBI调用
24
多核一致性指令
原子
原子操作扩展、内存屏障、缓存一致性协议
25
自定义指令的标准化流程
基金会
RISC-V国际扩展提案、SIG/TG、兼容性
26
自定义指令的软件生态
Linux
内核支持、Glibc适配、OpenOCD调试
27
自定义指令的安全考虑
安全
侧信道防护、指令掩码、权限检查
28
自定义指令的功耗优化
低功耗
门控时钟、操作数隔离、低功耗编码
29
综合项目——自定义DSP指令集
流片
从需求分析到流片验证的全流程实战
30
课程总结与未来展望
趋势
RISC-V自定义扩展趋势、Chiplet、开源硬件生态