使用riscv-tests进行指令测试(二)

使用riscv-tests进行指令测试(二)

  • [1 测试用例命名规则](#1 测试用例命名规则)
  • [2 测试用例dump文件介绍](#2 测试用例dump文件介绍)

本文属于《 TinyEMU模拟器基础系列教程》之一,欢迎查看其它文章。

1 测试用例命名规则

cpp 复制代码
用例名称 = TVM Name + "-" + Target Environment Name + "-" + "指令"

比如,rv64ui-p-add,表示在用户模式下,测试riscv 64位整型指令集中add指令,运行环境条件为:未打开虚拟内存,仅从core0启动。

TVM Name Description
rv32ui RV32 user-level, integer only
rv32si RV32 supervisor-level, integer only
rv64ui RV64 user-level, integer only
rv64uf RV64 user-level, integer and floating-point
rv64uv RV64 user-level, integer, floating-point, and vector
rv64si RV64 supervisor-level, integer only
rv64sv RV64 supervisor-level, integer and vector
... ...
Target Environment Name Description
p virtual memory is disabled, only core 0 boots up
pm virtual memory is disabled, all cores boot up
pt virtual memory is disabled, timer interrupt fires every 100 cycles
v virtual memory is enabled

在riscv-tests/isa目录下,有若干TVM Name,如下:

比如,rv64ui目录下,又有若干指令的S文件,如下:

在编译时,会自动按上述命名规则,生成可执行文件名称。

2 测试用例dump文件介绍

我们以rv64ui-p-add.dump为例,其执行流程,如下所示:

在每个测试程序中,都包含了若干个测试点。

gp寄存器保存了,当前测试点的编号。

  • 从入口开始执行,再跳转到<reset_vector>位置;
  • 在<reset_vector>位置,开始做一些初始化操作,主要包括x系列寄存器、mtvec、stvec、satp、medeleg、mideleg、mstatus、mepc等寄存器;
  • 其中,mepc寄存器初始化最关键,这里将地址0x80000190,保存到mepc寄存器中,以确保mret指令执行模式返回时(M模式切到U模式),PC可直接跳转到0x80000190处,即<test_2>处,我们的第一个测试点;这里切换到U模式运行,也与我们rv64ui-p-add.dump名称中的u对应上了;
  • 随后,便依次顺序执行<test_2> 至 <test_38>测试点,只要发现某个测试点失败,则忽略剩余测试点,立即跳转到 < fail > 标签;除非所有测试点均成功,才跳转到 < pass > 标签;
  • 在 < fail > 和 < pass > 标签,会对a7、a0、gp寄存器进行相应设置(前面介绍过),以便模拟器依据这些寄存器值,来判断测试成功与否。

无论进入哪个标签,最后都会执行ecall指令,陷入M模式,PC跳转到<trap_vector>处,如下所示:

最终,在<write_tohost>标签中,形成死循环,反复执行,模拟器也就停在这里了。

因此,rv64ui-p-add.bin执行完后,TinyEMU打印出Test Pass,后续就是"停止"的状态,不会有其他打印信息。

其他测试用例,可类比本例,自行查看,不再赘述。

相关推荐
互联网杂货铺1 天前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
山海青风2 天前
自动化生成边界测试和极端情况测试用例
人工智能·python·自动化·测试用例
杭州_燕十三3 天前
从零开始学习 sg200x 多核开发之 milkv-duo256 编译运行 sophpi
risc-v·sg2002
山海青风4 天前
利用OpenAI进行测试需求分析——从电商网站需求到测试用例的生成
python·测试用例·需求分析
安全二次方security²5 天前
2024 RISC-V中国峰会 安全相关议题汇总
安全·虚拟化·risc-v·中国峰会·侧信道攻击·riscv optee·riscv hsm
安全二次方security²5 天前
2024 RISC-V 中国峰会 演讲幻灯片和视频回放 均已公开
视频·risc-v·中国峰会·risc-v安全·ppt·2024
啊策策6 天前
软件测试之测试用例扩展
测试用例·ui布局测试用例覆盖·兼容性覆盖
杭州_燕十三6 天前
从零开始学习 sg200x 多核开发之 eth0 MAC 地址修改
risc-v·sg2002
老汉忒cpp7 天前
测试用例的设计
测试用例
互联网杂货铺8 天前
基于Selenium+Python的web自动化测试框架(附框架源码+项目实战)
自动化测试·软件测试·python·selenium·测试工具·单元测试·测试用例