Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GPR — 通用寄存器文件验证说明文档

1. 模块概述

gpr 是 RISC-V 架构的通用寄存器文件,包含 32 个 32-bit 寄存器(x0 ~ x31)。提供两个组合读端口和一个时序写端口。

1.1 关键特性

特性 说明
读端口 2 个,组合逻辑,零延迟
写端口 1 个,时序逻辑(posedge clk)
x0 硬连线 读 x0 始终返回 0,写 x0 被忽略
写转发 同一周期写入的值可在读端口上直接看到(组合转发)

1.2 接口信号

信号名 方向 位宽 描述
clk input 1 时钟
rst_n input 1 异步复位,低有效
rs1_addr input 5 读端口 1 地址
rs1_data output 32 读端口 1 数据(组合)
rs2_addr input 5 读端口 2 地址
rs2_data output 32 读端口 2 数据(组合)
wen input 1 写使能,高有效
rd_addr input 5 写目标地址
rd_data input 32 写入数据

2. 测试平台 (gpr_tb) 架构

测试平台文件:tb/gpr_tb.v

  +------------------+
  |  时钟生成器       |  100MHz (period = 10ns)
  +------------------+
  |  激励发生器       |  驱动 wen / rd_addr / rd_data / rs1_addr / rs2_addr
  +------------------+
  |  DUT (gpr)       |  被测试的寄存器文件
  +------------------+
  |  自检逻辑         |  $display("[PASS]/[FAIL] ...")
  +------------------+

3. 测试场景

Test 1: 基本读写

  • 依次写入 x1 ~ x5 特定的值。
  • 回读 rs1 和 rs2 验证写入值正确。

Test 2: x0 恒为零

  • 读取 rs1 = x0,验证读数据恒为 0。
  • 尝试写入 x0,读回仍为 0。

Test 3: 写转发

  • 在同一拍内,写入新值的同时用同一个地址做读操作。
  • 验证读端口立即看到新写入的数据(组合转发)。

Test 4: 复位清零

  • 复位后验证所有读取返回 0。

4. 运行仿真

# 在 regs/ 目录下执行
make sim      # 编译 + 运行
make verdi    # 查看波形
make clean    # 清理

5. 关键检查点

检查项 预期结果
复位后读 所有寄存器 = 0
写入后回读 读数据 = 写入值
x0 读取 始终 = 0
x0 写入 不生效
同周期写转发 读端口立即看到新值

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages