【发布时间】:2019-06-03 15:39:41
【问题描述】:
我正在研究 Rocket Chip,想模拟没有 FPU 的处理器并在其上运行程序。但是,我找不到任何关于我应该添加哪些开关来以这种方式配置 RISC-V 工具的完整信息。谁能帮帮我?
从不同页面和论坛上的一些部分信息中,我尝试了许多替代方案,包括添加选项--with-isa=RV64IMAC、--with-arch=RV64IMAC 和--with-abi=64lp,但大多数时候该项目会产生“未知选项”,所以我是想知道我是否使用了正确的开关,或者我没有遗漏什么。
在我尝试过的开关中,最成功的是只将--with-arch=RV64IMAC添加到riscv-gnu-toolchain:
这是我的 build.sh(在 riscv-tools 目录中):
build_project riscv-fesvr --prefix=$RISCV
build_project riscv-isa-sim --prefix=$RISCV --with-fesvr=$RISCV --with-isa=RV64IMAC
build_project riscv-gnu-toolchain --prefix=$RISCV --with-arch=RV64IMAC --disable-float
CC= CXX= build_project riscv-pk --prefix=$RISCV --host=riscv64-unknown-elf
build_project riscv-tests --prefix=$RISCV/riscv64-unknown-elf
在我添加开关 --with-arch 之前,它运行得非常好,我可以模拟在尖峰以及模拟器和 VCS 上运行我的程序(使用代理内核)。
现在的问题是:
在这种情况下,项目 riscv-tests 无法正确构建,并以找不到“fma”功能而终止
仍然使用代理内核,我像以前一样编译我的程序,添加选项
-msoft-float和-march=RV64IMAC。可执行文件在峰值时可以毫无问题地运行,但在模拟器和 VCS 上它们永远不会结束......
我认为这是由于使用 RV64IMAC 构建的,因为这是我唯一改变的东西,但也许我错了。如有任何建议,我将不胜感激。
【问题讨论】:
-
我不确定如何解决 #2,但我认为从 riscv-tests 中删除浮点测试应该可以解决 #1
-
啊,是的,我没想到这一点,谢谢!但同样,没有任何选择可以为我做这件事吗?否则我真的不知道如何只删除一些测试
-
如果您进入 riscv-tests 目录并删除 isa/rv32uf 和 isa/rv64uf,应该可以这样做。快速查看 riscv-tests 的 makefile 表明没有禁用某些测试的配置选项。
-
谢谢,但这对我不起作用...
标签: riscv fpu rocket-chip