refactor: 重构实验目录结构

This commit is contained in:
Liphen 2024-02-03 11:34:41 +08:00
parent ea7ce1cab9
commit 6ccd13ee47
42 changed files with 66 additions and 105 deletions

View File

@ -1,18 +1,17 @@
Chisel Project Template
=======================
# Chisel Project Template
Another version of the [Chisel template](https://github.com/ucb-bar/chisel-template) supporting mill.
mill is another Scala/Java build tool without obscure DSL like SBT. It is much faster than SBT.
Contents at a glance:
* `.gitignore` - helps Git ignore junk like generated files, build products, and temporary files.
* `build.sc` - instructs mill to build the Chisel project
* `Makefile` - rules to call mill
* `playground/src/GCD.scala` - GCD source file
* `playground/src/DecoupledGCD.scala` - another GCD source file
* `playground/src/Elaborate.scala` - wrapper file to call chisel command with the GCD module
* `playground/test/src/GCDSpec.scala` - GCD tester
- `.gitignore` - helps Git ignore junk like generated files, build products, and temporary files.
- `build.sc` - instructs mill to build the Chisel project
- `Makefile` - rules to call mill
- `playground/src/GCD.scala` - GCD source file
- `playground/src/DecoupledGCD.scala` - another GCD source file
- `playground/src/Elaborate.scala` - wrapper file to call chisel command with the GCD module
- `playground/test/src/GCDSpec.scala` - GCD tester
Feel free to rename or delete files under `playground/` or use them as a reference/template.
@ -21,11 +20,13 @@ Feel free to rename or delete files under `playground/` or use them as a referen
First, install mill by referring to the documentation [here](https://com-lihaoyi.github.io/mill).
To run all tests in this design (recommended for test-driven development):
```bash
make test
```
To generate Verilog:
```bash
make verilog
```

View File

@ -1,64 +0,0 @@
# 信号列表
## CSR 模块
### 信号
| 信号名 | 用处 |
| -------------- | --------------------------------------------------------------------- |
| wen | CSR 写使能write && !illegal_access 为真时,信号有效) |
| addr | CSR 地址 |
| mode | 当前模式 |
| rdata | 读到的 CSR 数据 |
| wdata | 写往 CSR 的数据 |
| write | 该指令为 CSR 写指令(即除 ECALL、ERET、EBREAK 这类 CSR 指令外的指令) |
| only_read | 该 CSR 指令只进行读操作 |
| illegal_mode | 当前模式低于要操作的 CSR 的最低模式 |
| illegal_write | 当前写操作非法(指令为写指令且为非只读操作但访问的 CSR 权限为只读) |
| illegal_access | 当前 CSR 访问非法(模式非法或写非法时,信号有效) |
| illegal_addr | 要访问的 CSR 地址不存在 |
### 掩码
| 掩码名 | 数值 |
| ------------- | ------------------------ |
| sstatus_wmask | h00000000000c6122 |
| sstatus_rmask | h80000003000de762 |
| sie_rmask | "h222".U(64.W) & mideleg |
| sie_wmask | "h222".U(64.W) & mideleg |
| sip_rmask | "h222".U(64.W) & mideleg |
| sip_wmask | "h222".U(64.W) & mideleg |
## Decoder Unit 模块
### InstInfo 结构体
| 信号名 | 用处 |
| ---------- | -------------------------- |
| valid | 指令有效 |
| inst_legal | 指令合法,是已经实现的指令 |
| reg1_ren | src1 读寄存器堆使能 |
| reg1_raddr | src1 访问寄存器堆地址 |
| reg2_ren | src2 读寄存器堆使能 |
| reg2_raddr | src2 访问寄存器堆地址 |
| fusel | FU 模块选择信号 |
| op | FU 模块内部的操作码 |
| reg_wen | 写回级是否写回寄存器堆 |
| reg_waddr | 寄存器堆写回地址 |
| imm | 立即数 |
| inst | 原指令 |
### SrcInfo 结构体
| 信号名 | 用处 |
| --------- | -------------------- |
| src1_data | 当前指令的源操作数 1 |
| src2_data | 当前指令的源操作数 2 |
### ExceptionInfo 结构体
| 信号名 | 用处 |
| --------- | -------------------------- |
| exception | 当前指令的异常信息 |
| interrupt | 当前指令的中断信息 |
| tval | 保留出现异常时的地址或指令 |

View File

@ -39,7 +39,7 @@
## 《数字逻辑与计算机结构实验指导书》目录
### 数字电路设计实验
### 数字电路设计实验(上册)
#### 一、FPGA 设计与 Verilog HDL 硬件描述语言
@ -63,23 +63,45 @@
#### 实验 8 开关消抖实验
### 计算机结构设计实验
---
### 计算机结构设计实验(下册)
#### 一、RISC-V 体系结构与指令系统
#### 二、Chisel 语法简介
#### 三、差分测试调试方法
#### 三、开发环境
#### 实验 9 实现 R 型运算类指令的理想流水线设计实验
#### 四、差分测试调试方法
##### 实验目的
#### 五、RV64I 单周期处理器设计实验
##### 5.1 实现 R 型运算指令的处理器设计实验
##### 5.2 实现 I 型运算指令的处理器设计实验
##### 5.3 实现 U 型运算指令的处理器设计实验
##### 5.4 实现 I 型和 S 型访存指令的处理器设计实验
##### 5.5 实现 J 型无条件转移指令的处理器设计实验
##### 5.6 实现 B 型条件转移指令的处理器设计实验
---
#### 六、流水线处理器设计实验
##### 6.1 实验 7 实现 R 型运算类指令的理想流水线设计实验
###### 实验目的
1. 掌握 R 型运算类指令的数据通路
2. 掌握经典单发射五级流水线的设计方法
3. 掌握流水线 CPU 设计的编程基本框架
##### 实验原理和方法
###### 实验原理和方法
1. 实现经典的单发射五级流水,这样比较简单
@ -87,24 +109,24 @@
3. 使用没有数据相关的测试集对其处理器进行测试,用于验证指令的正确性
##### 实验要求
###### 实验要求
1. 根据本实验提供的五级流水线编程框架,在流水线 CPU 中添加以下指令ADD、SLL、SLT 、SLTU、XOR 、SRL 、OR、AND 、SUB 、SRA
2. 通过本实验提供的所有测试用例
##### 实验步骤
###### 实验步骤
1. 如何打开工程文件进行编程
2. 如何使用模拟器进行仿真
3. 如何提交测评
##### 思考题
###### 思考题
1.
#### 实验 10 实现 I 型和 U 型运算类指令的理想流水线设计实验
##### 6.2 实验 8 实现 I 型和 U 型运算类指令的理想流水线设计实验
##### 实验目的
###### 实验目的
1. 掌握 I 型和 U 型运算类指令的数据通路
2. 掌握在五级流水线中添加 I 型和 U 型指令的方法
@ -113,9 +135,9 @@
使用没有数据相关的测试集对其处理器进行测试,用于验证指令的正确性
#### 实验 11 实现乘除法指令的理想流水线设计实验
##### 6.3 实验 9 实现乘除法指令的理想流水线设计实验
##### 实验目的
###### 实验目的
1. 掌握乘法指令和除法指令的数据通路
2. 掌握在执行级中添加乘除法运算部件 MDU 的方法
@ -125,9 +147,9 @@
实现 M 拓展,在 exe 级增加 FU 选择
#### 实验 12 实现访存指令的理想流水线设计实验
##### 6.4 实验 10 实现访存指令的理想流水线设计实验
##### 实验目的
###### 实验目的
1. 掌握访存指令的数据通路
2. 掌握在访存级中添加访存部件 LSU 的方法
@ -137,9 +159,9 @@
在 mem 级增加 lsu
#### 实验 13 实现转移指令的理想流水线设计实验
##### 6.5 实验 11 实现转移指令的理想流水线设计实验
##### 实验目的
###### 实验目的
1. 掌握转移指令的数据通路
2. 掌握在执行级中添加转移控制部件 BRU 的方法
@ -149,15 +171,15 @@
转移指令可以设计在 id 级也可以实现在 exe 级
#### 实验 14 气泡流水线设计实验
##### 6.6 实验 12 气泡流水线设计实验
##### 实验目的
###### 实验目的
1. 掌握各种流水线冲突的概念
2. 掌握插入气泡解决各种冲突的原理
3. 学习判断流水线冲突的逻辑单元的设计方法
##### 实验原理与方法
###### 实验原理与方法
1. 流水线冲突的基本概念与流水线的控制方法
@ -186,17 +208,17 @@
- 读后写
##### 实验要求
###### 实验要求
##### 实验步骤
###### 实验步骤
##### 思考题
###### 思考题
当发现译码级的源操作数和执行级、访存级、写回级目的寄存器一致时,通过阻塞译码级来解决数据冲突
保证后一级无法运行时,前一级也无法运行,即可完成阻塞
#### 实验 15 使用数据前递解决冲突的流水线设计实验
##### 6.7 实验 13 使用数据前递解决冲突的流水线设计实验
- 数据前递的方式
@ -208,38 +230,38 @@
完成数据相关处理后,使用有数据相关的数据集进行测试
#### 实验 16 实现 CSR 指令的流水线设计实验
##### 6.8 实验 14 实现 CSR 指令的流水线设计实验
- 实现 M 模式
- 增加 CSR 指令
- 在 exe 级增加 fu 选择
#### 实验 17 例外和中断的支持
##### 6.9 实验 15 例外和中断的支持
- 可以先实现 ecall、eret、ebreak 指令,再实现别的例外
- 实现 M 和 U 模式
- 截止这里应该已经完成了 RV64 的 I、M、Zicsr 指令集
#### 实验 18 支持 AXI 总线的流水线互连设计实验
##### 6.10 实验 16 支持 AXI 总线的流水线互连设计实验
- 将现有的 sram 接口改为类 sram 接口
- 再设计一个类 sram 转 AXI 协议转换桥
- 通过 AXI 随机延迟验证
#### 实验 19 流水线 CPU 访存提速设计实验
##### 6.11 实验 17 流水线 CPU 访存提速设计实验
- 先设计 cache 模块
- 然后实现 icache调整总线接口
- 实现 fence.i 指令
- 跑性能测试程序
#### 实验 20 流水线 CPU 分支预测设计实验
##### 6.12 实验 18 流水线 CPU 分支预测设计实验
#### 实验 21 动态顺序双发射流水线设计实验
##### 6.13 实验 19 动态顺序双发射流水线设计实验
#### 实验 22 支持虚实地址转换的超标量流水线设计实验
##### 6.14 实验 20 支持虚实地址转换的超标量流水线设计实验
- 增加 MMU、TLB实现虚实地址转换使用 SV39 标准
- 增加 S 相关的 CSR
@ -248,4 +270,6 @@
- 运行操作系统
#### 实验 23 RISC-V 核修改为 LongArch 核的相关指导
##### 6.15 实验 21 RISC-V 核修改为 LongArch 核的相关指导
#### 七、模拟器设计实验

Binary file not shown.

Binary file not shown.

Binary file not shown.