目录
1. 安装相关工具
主要安装risv需要用到的GNU工具链
1.1 工具下载
下载地址:https://pan.baidu.com/s/1eUbBlVc
1.2 工具安装
tar -xzvf gnu-mcu-eclipse-riscv-none-gcc-7.2.0-4-20180606-1631-centos64.tgz
cd <your_e200_dir>
mkdir -p ./riscv-tools/prebuilt_tools/prefix/bin //在 e200 opensource 目录下创建上述这个 bin 目录
cd ./riscv-tools/prebuilt_tools/prefix/bin //进入到这个新建的 bin 目录下
ln -s ~/e200_opensource/gnu-mcu-eclipse/riscv-none-gcc/7.2.0-4-20180606-1631/bin . //将用户根目录下解压压缩包中 bin 目录下的所有可执行文件作为软链接链接到该 . /riscv-tools/prebuilt tools/prefix/bin/目录下
cd e200_opensource/riscv-tools
sudo apt-get install autoconf automake autotools-dev curl device-tree-compiler libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zliblg-dev //预先将工具包先安装好
./build-e200-spike-rvtests.sh
//运行该脚本将编译出指令模拟器 Spike 和riscv-tests
2. 修改相关汇编代码
2.1 修改isa/rv64ui/add.S
比如修改e200_opensource/riscv-tools/riscv-tests/isa/rv64ui/add.S
RVTEST_RV64U
RVTEST_CODE_BEGIN
#-------------------------------------------------------------
# Arithmetic tests
#-------------------------------------------------------------
li x8, 3;
li x9, 7;
add x10, x8, x9;
li x3, 3;
li x4, 7;
add x5, x3, x4;
add x5, x3, x5;
# TEST_RR_OP( 2, add, 0x00000000, 0x00000000, 0x00000000 );
# TEST_RR_OP( 3, add, 0x00000002, 0x00000001, 0x00000001 );
# TEST_RR_OP( 4, add, 0x0000000a, 0x00000003, 0x00000007 );
2.2 修改isa/rv32ui/add.S
加一个空格就好,因为不修改的话Makefile的依赖关系无法追踪间接Include的源代码改动
3 重新生成.verilog dump 和可执行文件
运行source regen.S
那么在generated 目录下的相关rv32ui-p-add*文件将会被重新生成
比如dump文件
4. 生成fsdb文件
在vsim目录下执行make run_test TESTNAME=rv32ui-p-add,生成对应的fsdb文件,之后执行make wave,打开verdi并找到导入对应的波形,可以看到EXU模块的波形rs1,rs2和dst的寄存器index以及它们对应的值。