UnityChipForXiangShan/ut_frontend/ifu/frontend_trigger/README.md

3.8 KiB
Raw Permalink Blame History

FrontendTrigger 单元验证

测试目标

测试目标是验证FrontendTrigger子模块的功能。

FrontendTrigger的功能分为两部分断点设置和断点触发。

对于断点设置FrontendTrigger接收来自前端的update请求基于该请求设置内部的断点寄存器状态。

对于断点触发FrontendTrigger接收pc信息根据pc和寄存器存储的基准值的关系决定是否触发断点返回断点触发行为。

测试基本流程为:

TBD

测试环境 Env

本测试基于toffee封装测试环境。

其中对DUT的数据职责封装由bundle完成可参见当前目录下的bundle目录。

对DUT的行为抽象由本目录下的agent目录完成提供两个接口

set_breakpoint设置断点返回内部断点的状态

check传入pc检查断点触发的情况。注意pc是根据ftq请求的startAddr连续+2得到的。

功能点和测试点

所有的测试点如下:

序号 功能 名称 描述
1.1 断点设置和检查 select1判定 给定tdata1的select位为1随机构造其它输入检查断点是否没有触发
1.2.1 断点设置和检查 select0关系匹配判定 给定tdata1的select位为0构造PC与tdata2数据的关系同tdata2的match位匹配的输入检查断点是否触发
1.2.2 断点设置和检查 select0关系不匹配判定 给定tdata1的select位为0构造PC与tdata2数据的关系同tdata2的match位不匹配的输入检查断点是否触发
2.1 链式断点 chain位测试 对每个trigger在满足PC断点触发条件的情况下设置chain位检查断点是否一定不触发
2.2 链式断点 timing测试 对两个trigger仅设置前一个trigger的chain位且两trigger的timing位不同随机设置PC等测试后一个trigger是否一定不触发
2.3.1 链式断点 未命中测试 对两个trigger仅设置前一个trigger的chain位且两trigger的timing位相同设置后一个trigger命中而前一个未命中检查后一个trigger是否一定不触发
2.3.2 链式断点 命中测试 对两个trigger仅设置前一个trigger的chain位且两trigger的timing位相同且均命中检查后一个trigger是否触发

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

测试用例

参考模型

文档:测试流程