首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RISC-V浮点四舍五入结果Spike。RTL仿真

RISC-V浮点四舍五入结果Spike。RTL仿真
EN

Stack Overflow用户
提问于 2021-09-28 16:16:57
回答 1查看 217关注 0票数 0

我正在运行一个程序与浮点和双指令,我是观察这些指令的写回值不匹配,当比较我的RTL模拟和Spike。

例如:

代码语言:javascript
复制
fsqrt.d fa3, fa3 
Instruction in hex: 0x5a06c6d3

指令的输入参数的值为

代码语言:javascript
复制
0x41e2e80040000000 = 2537554432.0
sqrt(2537554432.0) = 50374.1444790876820703394273903...

根据RISC规范和解码指令,该指令的舍入方式是圆到最近,与最大震级()相关。我正在从Spike和RTL获得以下的回写值.

代码语言:javascript
复制
Spike   = 0x40e898c49f929b92 (in hex) = 50374.144479087685 (in decimal)
RTL sim = 0x40e898c49f929b91 (in hex) = 50374.144479087680 (in decimal)

从实际的十进制值来看,RTL的结果似乎更接近实际值,因此给出了正确的结果,但是Spike和dromajo都给出了相同的值,这略有不同。

I想确认哪个结果是正确的,这种不匹配在浮点算法中是否可以被认为是一种错误行为。

请告诉我任何有助于解决我的疑问的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-28 18:21:08

似乎RTL的结果更接近实际值。

不斯派克更近了。您的观察是倾斜的,因为双四舍五入和低级OP的RTL sim double的文本。使用更好的库和更高的十进制精度来查看。

代码语言:javascript
复制
Spike (OP)   = 0x40e898c49f929b92     50374.144479087 685 (in decimal)
Spike        =  0x1.898c49f929b92p+15 50374.144479087 684886               +0028
sqrt(2537554432.0)                    50374.144479087 6820703394273903...
RTL sim      =  0x1.898c49f929b91p+15 50374.144479087 677610               -0044
RTL sim (OP) = 0x40e898c49f929b91     50374.144479087 680 (in decimal)

我怀疑RTL sim with 50374.144479087680中的错误可能是由于它的库double不正确地运行文本代码,而在圆到最近的时候,可能与最大震级(double)有关。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69365191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档