Skip to content

实验环境

实验环境搭建

本学期的课程,我们需要在自己的电脑上安装:

  • 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 格式的波形图,可以参考去年实验的介绍