🔍 搜索帖子 / 资讯 / 芯片型号…
论坛/开源蜂鸟E203/解决回归测试过程中CSR指令未通过的问题
解决回归测试过程中CSR指令未通过的问题
开源蜂鸟E203 作者 CICC2259刘宇轩 发布于 2023-05-31 15:01(1227 天前) 5631 浏览

队伍CICC2259      队员:刘宇轩 周嘉琪 冷思远

        指导老师:李阳,曹超

在修添加完浮点指令集和乘法树结构之后,我们对所有的整数指令集进行回归测试。

使用命令make regress_run SIM=vcs对原代码所有指令集进行测试。

使用以下指令查看回归测试的结果:

我们可以发现CSR指令并没有通过,于是打开仿真波形,发现程序在8000032c处跳转至fail。


查看反汇编代码,代码跳转的依据是t4和a0的值不相等。分析代码可知auipc将a1的值赋成0x2,然后a0经过addi的处理形成了一个存储器的地址。接下来将ft0的值存进该地址中,再有lw读出赋给a0。由fmv.w.x ft0,zero可知,ft0的具体值为0,所以a0的值为0。li t4,1则将ft4的值赋成1。综上,我们可以了解到ft4与a0的值必定不相等,所以程序失败是必定的,从逻辑上就已经出错,执行过程正确也会被当成错误。这应当是开发者的小疏忽。

那么为什么在测试未加浮点指令的版本时,会测试通过呢?原因是因为它根本没有测试test10,而是直接跳过。在test9中有下图指令:

它先用csr指令读出misa寄存器中的值,判断是否添加了浮点指令集。若没有,就会跳转到test11继续执行。通过波形仿真我们也能验证我们的思考:

在执行完指令8000030a后,下一条指令跳转到80000336。略过中间的测试指令。

 


全部回复 9
Blank °
Blank °1026 天前 · 1 楼

1

I
IC_wen1065 天前 · 2 楼

顶一顶

d
dsjdx1068 天前 · 3 楼

1

E
ECOfang1089 天前 · 4 楼

1

h
hello-coded1132 天前 · 5 楼

1

结
结云村猫车侠1160 天前 · 6 楼

1

v
void1179 天前 · 7 楼

1

H
Hideaki1181 天前 · 8 楼

1

z
zzyt1181 天前 · 9 楼

1

💡 请 登录 后参与讨论(微信扫码即登录/注册)