CPU系统级验证——测试激励——compiler向量扩展指令测试集rvv-test分析

导读:本篇文章讲解 CPU系统级验证——测试激励——compiler向量扩展指令测试集rvv-test分析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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脚本生成。

  • 脚本生成的原则
  1. 脚本语言承担激励的所有运算,激励文件(C文件)只承担系统初始化,API函数调用结果判断的作用
  2. 若激励文件为 ISS 用,可以增加message打印功能;若为DUT所用则无需信息打印(testbench可承担)。
  3. 脚本中依然按指令集验证的corner分条进行赋值运算,即python不会采用数组一起计算所有值,当然在生成的C文件中是可以一起测的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82496.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!