UVM - 6 (Transaction Modeling)

内容

  • uvm_sequence_item是transaction的基类
  • 可以使用uvm_sequence_item和uvm_transaction对数据进行建模

什么是事务(transaction)?

  • 总线协议可以认为是一个事务

UVM数据流

  • testcase一般不产生数据,通常进行config
  • sequencer会产生激励给到driver,传递的就是transaction
  • driver和dut之间会进行一些时序解析,通过interface进行连接
  • monitor和dut也通过interface进行连接
  • monitor和scoreboard通过transaction进行交互
  • 组件与组件之间传递的都是transaction传递,需要通过TLM进行传递

UVM数据建模

  • uvm中transaction class继承自uvm_sequence_item,名字取为ahb_transaction...
  • 其中定义了一些随机的变量,协议的接口
  • rand_mode(0/1) - 关闭或者是打开随机

数据建模的考虑因素


事务:必须遵守的约束


  • 约束分开写,可以对于几个约束进行关闭和打开

事务:如何添加约束

uvm_sequence_item class

  • uvm_sequence_item继承自uvm_object,然后又扩展了一些方法

数据处理函数

数据处理函数的功能描述

UVM提供自定义函数

数据处理函数的使用方法

  • 注册的时候需要通过宏对transaction中定义的变量进行设置才能打印出信息

uvm_object_utils macros

uvm_field_*字段宏定义

通过FLAG设置数据初始函数

通过FLAG设置数制

重写方法









修改数据约束并通过type_override进行替换

数据替换结果

修改数据约束并通过inst_override进行替换

参数化的数据类

数据建模的重用性:给数据类分层

总结

  • transaction中的变量可以进行添加随机变量,添加约束,设置uvm_field_*
posted @ 2024-03-14 16:27  Icer_Newer  阅读(110)  评论(0编辑  收藏  举报