在这篇文档中,将介绍chisel项目+difftest环境配置。在完成所有步骤之后,工作目录下会有如下内容:
./
chisel_env.sh
NEMU/
difftest/
DRAMsim3/
chisel基于scala语言,运行环境为JVM。mill作为编译工具,因此需要安装mill
和java
sudo sh -c "curl -L https://github.com/com-lihaoyi/mill/releases/download/0.9.8/0.9.8 > /usr/local/bin/mill && chmod +x /usr/local/bin/mill"
这个过程很快,因为下载的其实是一个安装脚本
然后运行:
mill
之后会进入到一个下载程序,默认会把程序安装到${HOME}/.cache/mill/download
,运行之后会在这个文件夹放置可运行文件。
sudo apt-get install default-jre
检查是否成功:
mill -v
如果显示如下即可成功:
Mill Build Tool version 0.9.8
Java version: 11.0.11, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "Linux", version: 4.4.0-19041-Microsoft, arch: amd64
HOME_DIR=$(pwd)
echo "export NOOP_HOME=$HOME_DIR" >> chisel_env.sh
echo "export NEMU_HOME=$HOME_DIR/NEMU" >> chisel_env.sh
echo "export AM_HOME=$HOME_DIR/abstract-machine" >> chisel_env.sh
echo "export DRAMSIM3_HOME=$HOME_DIR/Zhoushan/DRAMsim3" chisel_env.sh
然后根目录下会新建chisel_env.sh
,运行以下来声明必要的环境变量:
source chisel.sh
difftest是chisel开发非常好用的工具,提供的online的测试,极大的提升了debug效率。
sudo apt-get install verilator libsdl2-dev
github
下载git clone --recursive https://github.com/OpenXiangShan/difftest.git
DRAMsim3
为difftest提供运行时dram环境,作为co-simulation功能的静态库。
sudo apt-get install cmake
git clone --recursive https://github.com/OpenXiangShan/DRAMsim3.git
这里因为我们不是需要源代码,而是编译成为静态库,需要运行:
mkdir build
cd build
cmake -D COSIM=1 ..
cmake ..
make -j 16
随后可以检查build/
下是否有libdramsim3.a
文件
NEMU
为difftest提供了运行时的“标答”,主要需要其动态库。
bison
和flex
sudo apt-get install bison flex libreadline-dev
安装nemu
git clone https://github.com/OpenXiangShan/NEMU.git
cd NEMU
export NEMU_HOME=$pwd
make riscv64-xs-ref_defconfig # load default configuration
make
然后检查build
下是否有<your/isa>-so
文件。