一、背景
RIDECORE(RIsc-v Dynamic Execution CORE)是由东京工业大学 Arch Lab 开发的一款 2 路超标量乱序执行(Out-of-Order)RISC-V 处理器,使用 Verilog HDL 编写,支持 RV32IM 指令集。其微架构参考了《Modern Processor Design: Fundamentals of Superscalar Processors》一书,并在 Xilinx VC707 开发板上实现了 50MHz 的 FPGA 原型。
二、项目文件结构介绍
0.项目根目录
| 文件/目录 | 说明 |
|---|---|
README.md | 项目说明文档,包含工具链安装、使用方法等 |
LICENSE | 开源许可证 |
.gitignore | Git 忽略规则 |
doc/ | 项目文档目录 |
src/ | 源代码目录(FPGA 设计与测试) |
toolchain/ | 辅助工具链目录 |
- doc/ — 文档目录
| 文件 | 说明 |
|---|---|
ridecore_document.pdf | 英文版详细设计文档(建议优先阅读) |
ridecore_document_jp.pdf | 日文版设计文档 |
RISC-V-subset.pdf | 所支持的 RISC-V 指令子集说明 |
struct_repository.pdf | 仓库文件结构说明文档 |
- src/fpga/ — 核心 RTL 源代码
该目录包含约 50 个 Verilog 文件,实现了完整的乱序超标量处理器。按功能模块划分如下:
顶层与系统
top.v — FPGA 顶层模块
topsim.v — 仿真顶层模块
system.v — 系统级封装
main.xdc — Vivado 约束文件(针对 VC707)
流水线与取指
pipeline.v — 核心流水线顶层
pipeline_if.v — 取指阶段(IF)流水线
imem.v — 指令存储器接口
imem_outa.v — 指令存储器输出地址处理
译码与发射
decoder.v — 指令译码器
imm_gen.v — 立即数生成
brimm_gen.v — 分支立即数生成
alloc_issue_ino.v — 指令分配与发射(in-order 部分)
寄存器文件与重命名
arf.v — 架构寄存器文件(Architectural Register File)
rrf.v — 物理寄存器文件(Reorder Buffer / Register File)
rrf_freelistmanager.v — 空闲物理寄存器管理
保留站(Reservation Stations)
rs_alu.v — ALU 运算保留站
rs_branch.v — 分支指令保留站
rs_ldst.v — 访存指令保留站
rs_mul.v — 乘法指令保留站
rs_reqgen.v — 保留站请求生成
执行单元
exunit_alu.v — ALU 执行单元
exunit_branch.v — 分支执行单元
exunit_ldst.v — 访存执行单元
exunit_mul.v — 乘法执行单元
alu.v — ALU 核心
multiplier.v — 乘法器
访存与存储缓冲
dmem.v — 数据存储器接口
storebuf.v — Store Buffer(解决非阻塞缓存/顺序提交问题)
dualport_ram.v — 双端口 RAM
ram_sync.v / ram_sync_nolatch.v — 同步 RAM 实现(带/不带锁存器)
重排序与提交
reorderbuf.v — 重排序缓冲(ROB),支持按序提交
分支预测
gshare.v — Gshare 分支预测器
btb.v — 分支目标缓冲(Branch Target Buffer)
mpft.v — 分支预测相关辅助模块
辅助模块
oldest_finder.v — 最旧指令查找(用于 ROB/提交)
tag_generator.v — 标签生成器
src_manager.v / srcopr_manager.v / srcsel.v — 源操作数管理/选择
search_be.v — 字节使能搜索
prioenc.v — 优先级编码器
uart.v — UART 串口模块(用于 FPGA 输出)
头文件与常量
constants.vh / define.v — 全局常量与宏定义
alu_ops.vh — ALU 操作码定义
rv32_opcodes.vh — RISC-V RV32 操作码定义
- src/test/ — 测试与验证
src/test/ridecore/ — RIDECORE 处理器测试
| 子目录 | 说明 |
|---|---|
app/ | 示例 C/汇编测试程序(如 fib, matmul, hanoi, sort_3, stencil, tarai 等 15+ 个 benchmark) |
bin/ | 编译后的二进制文件(init.bin) |
sim/ | Verilog 仿真测试平台 |
src/test/ridecore/sim/ 关键文件:
Makefile — 编译仿真工程
testbench.v — 调试模式 testbench(每周期报告处理器状态)
testbench_last.v — 静默模式 testbench(仅输出最终结果)
testbench_pred.v — 分支预测信息报告 testbench
alu_ops.vh, constants.vh, rv32_opcodes.vh — 仿真用头文件
src/test/singlecyc/ — 单周期参考模型
sim/ — 单周期模型仿真环境
verilog/ — 单周期参考模型 Verilog 代码
- toolchain/ — 软件工具链
| 目录 | 说明 |
|---|---|
memgen-v0.9/ | 将 RISC-V ELF 文件转换为 Verilog 仿真可用的二进制初始化文件(init.bin)的工具 |

2269

被折叠的 条评论
为什么被折叠?



