UnityChipForXiangShan/ut_frontend/ifu/f3predecoder
shimingyu 59460cfdc0
Pr smy ifu predecode new (#140)
* test

* f3predecoder

* predecode

* predecode

* update

* 优化细节

* fix

* fix

* delete some files

* update

* final

* update

* Simplify and remove duplicate code

* Revert: 撤回在 3a2d830 中的错误修改

* Revert: 撤回在 6a3fa2f  中的错误修改

* Update files

---------

Co-authored-by: mingyu shi <smy@DESKTOP-FO5TJ66>
2025-07-30 15:48:03 +08:00
..
agent Pr smy ifu predecode new (#140) 2025-07-30 15:48:03 +08:00
bundle add framework for predecode, f3predecoder, frontend_trigger; framwork includes: bundle, agent, env, test fixture 2024-12-23 17:00:44 +08:00
env add framework for predecode, f3predecoder, frontend_trigger; framwork includes: bundle, agent, env, test fixture 2024-12-23 17:00:44 +08:00
test Pr smy ifu predecode new (#140) 2025-07-30 15:48:03 +08:00
README.md add framework for predecode, f3predecoder, frontend_trigger; framwork includes: bundle, agent, env, test fixture 2024-12-23 17:00:44 +08:00
__init__.py add framework for predecode, f3predecoder, frontend_trigger; framwork includes: bundle, agent, env, test fixture 2024-12-23 17:00:44 +08:00

README.md

F3Predecoder 单元验证

测试目标

F3Predecoder的功能是从PreDecode中时序优化出来的。该模块接收16 x 4B的指令码输入负责判定该指令的CFI类型和是否为ret或call指令。

测试基本流程为:

TBD

测试环境 Env

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

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

对DUT的行为抽象由本目录下的agent目录完成提供一个接口f3predecode该接口接受16 x 4B的指令码返回16条指令的CFI类型和是否为ret或call指令。

功能点和测试点

所有的测试点如下:

序号 名称 描述
1.1 非CFI判定 对传入的非CFI指令包括RVC.EBREAK应该判定为类型0
1.2 BR判定 对传入的BR指令应该判定为类型1
1.3 JAL判定 对传入的JAL指令应该判定为类型2
1.4 JALR判定 对传入的JALR指令应该判定为类型3

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

测试用例

参考模型

文档:测试流程