forked from XS-MLVP/UnityChipForXiangShan
predecode framework added predecode test env constructed f3predecoder env construction finished add frontend trigger and some docs |
||
|---|---|---|
| .. | ||
| agent | ||
| bundle | ||
| env | ||
| test | ||
| README.md | ||
| __init__.py | ||
| predecode_internal.yaml | ||
README.md
PreDecode 单元验证
测试目标
PreDecode的功能是从IFU接收17 x 2B的指令缓存块,拼接出16 x 4B的指令序列,同时对每条指令,提取预译码信息并计算两种有效指令开始向量:一种假定上一预测块的末尾是一条RVI指令的开始,另一种假定上一预测块的末尾是一条RVC指令或者是一条RVI指令的末尾。
测试基本流程为:
TBD
测试环境 Env
本测试基于toffee封装测试环境。
其中,对DUT的数据职责封装由bundle完成,可参见当前目录下的bundle目录。
对DUT的行为抽象由本目录下的agent目录完成,提供一个接口predecode,该接口接受17 x 2B的指令码,返回16 x 4B的指令码和指令跳转偏移、有效指令开始向量、RVC类型判断信息。
功能点和测试点
所有的测试点如下:
| 序号 | 功能 | 名称 | 描述 |
|---|---|---|---|
| 1 | 拼接指令码 | 拼接测试 | 随机生成17 x 2字节的初始指令码,检验PreDecoder拼接结果 |
| 2.1.1 | RVC判定 | RVC判定 | 传入RVC指令,应该判断为RVC |
| 2.1.2 | RVC判定 | RVI判定 | 传入RVI指令,不应判断为RVC |
| 2.2.1 | 跳转目标计算 | RVC.J计算 | 对传入RVC扩展的J指令,检查计算的偏移 |
| 2.2.2 | 跳转目标计算 | RVI.J计算 | 对传入RVI扩展的J指令,检查计算的偏移 |
| 2.2.3 | 跳转目标计算 | RVC.BR计算 | 对传入RVC扩展的BR指令,检查计算的偏移 |
| 2.2.4 | 跳转目标计算 | RVI.BR计算 | 对传入RVI扩展的BR指令,检查计算的偏移 |
Env提供的验证接口(API)
为了让测试用例更通用,具有继承性,本Env提供的接口对外屏蔽了电路引脚和时序,且接口保持稳定:
用例说明
TBD
检查列表
- 本文档符合指定模板要求
- Env提供的API不包含任何DUT引脚和时序信息
- Env的API保持稳定(共有[ X ]个)
- Env中对所支持的RTL版本(支持版本[ X ])进行了检查
- 功能点(共有[ X ]个)与设计文档一致
- 检查点(共有[ X ]个)覆盖所有功能点
- 检查点的输入不依赖任何DUT引脚,仅依赖Env的标准API
- 所有测试用例(共有[ X ]个)都对功能检查点进行了反标
- 所有测试用例都是通过 assert 进行的结果判断
- 所有DUT或对应wrapper都是通过fixture创建
- 在上述fixture中对RTL版本进行了检查
- 创建DUT或对应wrapper的fixture进行了功能和代码行覆盖率统计
- 设置代码行覆盖率时对过滤需求进行了检查
TODO
测试用例
参考模型
文档:测试流程