compiler公司的llvm-rv工具github链接:https://github.com/compiler-dev/llvm-rv
1. RVV工具链
compiler公司 V扩展相关的工具链有riscv-gnu-toolchain、llvm-rv、riscv-isa-sim(spike)三个。
- 三个工具的作用
——》llvm-rv将C语言中的特定宏和特定函数用intrinsic函数链接起来,编译时clang可直接将特定函数编译成V指令。
——》riscv-gnu-toolchain将生成的汇编指令编译成可执行文件和机器码。该流程llvm中的工具也可以完成。
——》spike作为ISS(指令集模拟器)可以运行生成的可执行文件(elf文件),来测试输入的激励。
2. 测试集结构分析
rvv-test是compiler公司开源的github上的用于riscv向量扩展指令的指令测试集API,借助rvv-test内的函数,可以生成用于某条向量指令的c语言测试激励。
事实上,rvv-test只定义了c文件和编译器内建的intrinsic的API接口,测试激励的编写还是需要调用intrinsic文件夹中的函数,当然也可以直接调用riscv_vector.h中的函数,实际上二者基本是同一个函数。
3. RVV扩展测试激励生成
由于rvv向量指令很多,因此测试激励的产生还是需要通过python脚本生成。
- 脚本生成的原则
- 脚本语言承担激励的所有运算,激励文件(C文件)只承担系统初始化,API函数调用、结果判断的作用
- 若激励文件为 ISS 用,可以增加message打印功能;若为DUT所用则无需信息打印(testbench可承担)。
- 脚本中依然按指令集验证的corner分条进行赋值运算,即python不会采用数组一起计算所有值,当然在生成的C文件中是可以一起测的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82496.html