队伍CICC2259 队员:刘宇轩 周嘉琪 冷思远
由于团队修改了muldiv指令,需要测试div指令、divu指令是否功能正常:
rv32um-p-div:
意外的,程序会产生自检报错(实际上这个报错在原工程中也会出现),通过info我们可以看到错误在e203_exu_alu_muldiv模块中产生,产生错误的指令为i_div,操作数rs1的值为ffff_ffec,操作数rs2的值为0000_0006,黄金参考结果golden_res的值为5555_5552,而我们的计算结果为ffff_fffd。我们使用电脑自带的计算器进行计算,其中rs1的十进制表示为-20,rs2的十进制表示为6,结果应当为-20/6=-3,转换为十六进制为ffff_fffd,这与我们的结果是一致的,而代码中的自检产生了错误,可以暂时注释掉代码中的自检部分:
在工程目录下的rtl文件夹中core/e203_exu_alu_muldiv.v文件:
我们将其中第639行开始至731行全部注释,返回工程目录下的hbird-sdk目录下的vsim文件夹,执行make clean以及make install目录,再次运行make run_test SIM=vcs指令:
指令测试无误,继续测试divu指令:
rv32um-p-divu: