实验环境
实验环境搭建¶
本学期的课程,我们需要在自己的电脑上安装:
- Linux 环境(Ubuntu 20.04)
- Verilator
- GTKWave
- Vivado 2018.3
1 Linux 环境安装¶
有三种方案:
- Windows+WSL
- Linux 虚拟机(VMware)
- Linux 原生系统
如果你没安装过后两种,那么我推荐第一种方案,以下给出安装步骤:
- 在 Windows 系统上打开 Microsoft Store
- 搜索 Ubuntu 20.04 并安装
- 安装 Visual Studio Code(推荐的代码编辑器)
- 将 WSL 设置为默认 Terminal
- 配置 apt 源(修改
/etc/apt/sources.list
,推荐中科大源) - 安装一些基本的软件包
sudo apt install git perl python3 make autoconf g++ flex bison ccache
2 仿真器 Verilator¶
我们将使用 verilator 进行电路仿真。需要 verilator >= 4.210 版本。Verilator 没有 Windows 版本的,需要在 Linux 环境中运行。
无论你使用什么版本的 Linux,我们都推荐从源码进行编译。
cd ~ #如果使用 WSL,这个目录在 C 盘的某个位置
git clone git://github.com/verilator/verilator
cd verilator
git checkout v4.210
autoconf #如果显示 not found,那么sudo apt install autoconf后再执行 autoconf
./configure
make -j12 #如果这一步出现问题,改成make -j4或者直接make
sudo apt remove verilator #卸载已有的版本
sudo make uninstall
sudo make install
verilator --version #查看verilator的版本
如果报某个头文件 not found,请参考 https://verilator.org/guide/latest/install.html#git-quick-install
3 波形图软件 GTKWave¶
我们将使用 GTKWave 软件查看仿真波形图。
如果你使用 Linux 虚拟机或 Linux 原生系统,只需:
sudo apt install gtkwave
- 运行 GTKwave:
gtkwave trace.fst
如果你使用的是 Windows + WSL,则需要安装 GTKwave 的 Windows 版本,在 elearning 上可以下载免安装版本。使用时,双击 fst 波形图文件,设置 gtkwave/bin/gtkwave.exe
为默认打开程序即可。
4 Vivado¶
我们要求使用 Vivado 2018.3,指定这个版本,如果是其他版本的 Vivado 可能有不兼容。
可以根据 https://github.com/Tan-YiFan/DigitalLogic-Autumn2020 里的 notes/01开发流程(上)
进行安装,也可以直接从 参考资料 中下载源文件。
由于该软件体积过大,你也可以用机房电脑上 Win10-2 分区上的 Vivado。
实验环境介绍¶
-
verilator:我们采用 verilator 对CPU进行模拟( verilator 要求运行在linux环境下,此外还需要安装一些库文件,具体可见 实验环境搭建),然后用 difftest 进行指令级别层面的对比,直接在仓库目录下执行
make test-lab*
即可。虽然verilator的仿真速度一般而言更快,但是功能还不完善,因此对我们编写代码有一定的限制(具体见 实验测试方法 中的代码编写部分)可以参考去年实验的介绍 -
vivado:打开 vivado ,运行
vivado\test1\project\project_1.xpr
,点击tools
选项下的run tcl script
,运行vsrc\add_sources.tcl
添加源文件后,就可以开始仿真、综合、生成bit文件上板了。 -
Makefile:makefile可以简单理解为工程文件的编译规则,描述了整个工程的编译和链接等规则,内部具体的实现不需要了解,只需要知道通过
make test-lab*
可以对对应的lab进行仿真测试即可 -
git:我们采用 git 工具 对所有的 lab 进行管理并发布
请先用 clone 命令下载我们的仓库的master,然后再下载difftest子仓库:
git clone -b master https://github.com/FDUCSLG/Arch-2022Spring-FDU.git #我们的实验只需关注master这个分支
cd Arch-2022Spring-FDU
git submodule update --init --recursive
其中的第一条命令的 -b master
指的是下载 master 这个分支,我们的实验只需要关注 master 分支,所以其它的分支可以不下载。
此外我们会不定时地更新代码仓库以解决bug(因此必须用clone把仓库配置相关文件也下载下来,这样才方便进行后续更新),每次更新的时候助教都会在群里或者上课的时候进行提醒,当然更好的是养成每次写代码前及时更新的习惯 。以下是更新的步骤:
# 先在vsrc目录下提交保存你写的代码
cd vsrc
git add .
git commit -m "本此提交的信息,比如:commit for pull"
# 然后运行以下命令拉取并合并远端仓库的代码
git pull origin master # 我们的实验只需关注master分支
# 可能会有冲突,因人而异,需要自行解决
git submodule update #更新子仓库
git 的功能十分强大,这里所用的不及九牛一毛,如果你感兴趣的话可以自行搜索。
- GTKWave:开源的波形图浏览器,在
make
命令后加上VOPT="--dump-wave"
即可在 build 目录下看到 fst 格式的波形图,可以参考去年实验的介绍。