🔍 搜索帖子 / 资讯 / 芯片型号…
论坛/开源蜂鸟E203/解决浮点代码测试的时候遇到的测试陷入死循环问题
解决浮点代码测试的时候遇到的测试陷入死循环问题
开源蜂鸟E203 作者 CICC2259刘宇轩 发布于 2023-05-31 14:39(1227 天前) 6066 浏览

我们小组基于开源的自测试用例(Self-Check Testcase)来检测修改后的代码运行成功还是失败。在我们小组进行自己编写的浮点代码测试的时候遇到了测试陷入死循环,不输出fail或者pass的的状况。

在经过我们仔细分析后,发现是pc_write_to_host_cnt的计数问题。tb_top.v退出仿真的地方如图所示,调用图中$finish程序的前提是pc_write_to_host_cnt计数到8。


pc_write_to_host_cnt的累加规则如图所示,累加的前提是pc值等于`PC_WRITE_TOHOST,即80000086。



根据反汇编.dump中的pc信息,我们查找到80000086地址属于一个循环函数,如下图所示。pc_write_to_host_cnt累加到8时结束循环,这表示该函数被调用了8次。


上面所描述的是测试用例,运行的非常顺利,但是它还有一个bug。

在测试用例helloworld中,pc为80000086处的指令的不一定是与指令测试相同,不是实现相同的功能。如下图,我们使用整数gcc工具链编译helloworld的结果中80000086处没有指令,但是使用浮点gcc工具链编译结果在80000086处就会出现bltu指令,凑巧的是,它正好是一个循环结构,这里会被执行多遍。由我们上文所提到的,pc_write_to_host_cnt累加到8就会自动退出程序,导致程序运行失败。




当去掉pc_write_to_host_cnt的判断后,程序运行正常。


 

 

全部回复 9
s
shiruyicool765 天前 · 1 楼

6666

d
dsjdx1156 天前 · 2 楼

1

Sheep.
Sheep.1178 天前 · 3 楼

1

v
void1179 天前 · 4 楼

1

s
szy13801180 天前 · 5 楼

1

H
Hideaki1181 天前 · 6 楼

1

z
zzyt1181 天前 · 7 楼

1

s
situxiao1186 天前 · 8 楼

66666666666

B
BobCCCC1223 天前 · 9 楼

1

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