Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Wu Yuzhang
ustc_ca2021_lab
Commits
c7b985a5
Commit
c7b985a5
authored
Apr 14, 2021
by
Wu Yuzhang
Browse files
Upload New File
parent
540989c2
Changes
1
Hide whitespace changes
Inline
Side-by-side
lab2/lab2.md
0 → 100644
View file @
c7b985a5
# 计算机体系结构Lab2
## 简要说明
*
在实验一中我们初步了解了RISCV指令集和数据通路,接下来需要用verilog去实现我们的RV32I 流水线CPU了。
*
本次实验分为三周,总共分为三个阶段进行验收。每周完成一个阶段。
*
实验结束后(阶段三检查完成)一周内需要提交Lab2的实验报告。
*
**实验工具**
:Vivado
*
**实验方式**
:Vivado自带的波形仿真
## 代码说明
*
三个目录Simulation、SourceCode、TestDataTools分别包含了仿真文件及测试数据、源代码、测试数据生成工具。
*
由于Vivado的编辑器存在中文编码问题,推荐在VScode环境下开发代码。
*
源代码均有注释,说明了模块功能、接口作用、是否需要补全,请参考注释完成RV32I Core
*
阶段二的测试可以参考General Register的3号寄存器,它的值代表执行到第几个test,全部测试通过,3号寄存器的值最终变为1
## 使用说明
*
以Vivado开发为例,新建工程,将SourceCode的代码导入,Simulation文件夹下的testBench.v作为仿真文件导入,并将testBench.v设置为Simulation的Top文件。之后直接进行仿真即可,会自动将.inst和.data的文件加载进Instruction Cache和Data Cache,并开始执行。
*
testBench.v定义的四个宏:
`DataCacheContentLoadPath`
,
`InstCacheContentLoadPath`
,
`DataCacheContentSavePath`
,
`InstCacheContentSavePath`
,分别是Data Cache、Instruction Cache的写入文件路径,及Data Cache、Instruction Cache导出内容路径,请根据需要自行修改。
*
TestDataTools的工具使用说明,请参考文件夹的Readme文档
## 验收说明
### 阶段一验收要求(30%):
*
自己手写合适的测试用汇编代码,通过提供的工具生成.inst和.data文件,用于初始化指令和数据的Block Memory,或者直接手写二进制测试代码
*
测试用的指令流中需要包含的指令包括SLLI、SRLI、SRAI、ADD、SUB、SLL、SLT、SLTU、XOR、SRL、SRA、OR、AND、ADDI、SLTI、SLTIU、XORI、ORI、ANDI、LUI、AUIPC
*
测试例(汇编和对应的.inst .data)可以用其他同学提供的,但是需要自己知道对应的指令逻辑,需要能清楚的向助教表达这个测试例如何验证CPU功能正确,即正确运行后寄存器值应该是多少
*
CPU执行后,各寄存器值符合预期
*
此时不需要处理数据相关。可以令Harzard模块始终输出stall、flush恒为0,forward恒为不转发,每两条指令之间间隔四条空指令。
### 阶段二验收要求(30%):
*
我们提供了 1testAll.data、1testAll.inst、2testAll.data、2testAll.data、3testAll.data、
3testAll.inst 三个测试样例的.inst 和.data 文件,用于初始化指令和数据的 Block Memory。
*
对于任意一个测试样例,CPU 开始执行后 3 号寄存器的值会从 2 一直累增,该数字正在进行第多少项测试,执行结束后 3 号寄存器值变为 1
*
CPU 执行后,各寄存器值符合预期
*
测试用的指令流中,除了阶段一的测试指令,还需要包含的指令包括 JALR、LB、LH、LW、LBU、LHU、SB、SH、SW、BEQ、BNE、BLT、BLTU、BGE、BGEU、JAL
*
此时需要处理数据相关,实现 Harzard 模块内部逻辑。
### 阶段三验收要求(20%):
*
自己手写合适的测试用汇编代码,通过提供的工具生成.inst 和.data 文件,用于初始化
指令和数据的 Block Memory
*
在我们给的代码框架上添加你设计好的 CSR 数据通路
*
测试用的指令流中需要包含的指令包括: CSRRW、CSRRS、CSRRC、CSRRWI、CSRRSI、
CSRRCI
*
CPU 执行后,各寄存器值符合预期
*
阶段二已经处理好数据相关,这里不再特别考察
### Lab2实验报告(20%):
*
实验目标
*
实验环境和工具
*
实验内容和过程(总结自己所做的三个阶段工作)
*
实验总结(说说自己踩的坑,总结收获,分析下自己花了多少时间,都用来做什么事情)
*
提出改进实验的意见
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment