首页 > 其他分享 >UVM - 6 (Transaction Modeling)

UVM - 6 (Transaction Modeling)

时间:2024-03-14 16:33:05浏览次数:28  
标签:Transaction sequence item transaction UVM Modeling 数据 uvm

内容

  • 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_*

标签:Transaction,sequence,item,transaction,UVM,Modeling,数据,uvm
From: https://www.cnblogs.com/Icer-newer/p/18072827

相关文章

  • UVM - 5 (Lab 1)
    DUT的RTL文件:router.vtestbench架构Flowtest.svtest_base.sv注册的时候,以uvm_component扩展出来的类,在注册的时候要使用uvm_component_utils()注册,以uvm_transaction,uvm_sequence扩展出来的类需要用uvm_object_utils()注册//以uvm_component扩展出来的类uv......
  • UVM - 4 (UVM验证平台)
    Reviewthis-指的是当前的类双冒号进行索引-静态方法或者是静态变量在类之外写函数也可以使用双冒号进行索引,双冒号指定作用域所有的phaze是UVM中已经定义好的,不需要显式调用TLM-事务级传输UVM中组件之间的通信使用的是TLM,不使用mailboxuvm_sequence_itemcla......
  • UVM - 3 (UVM验证平台)
    内容UVM-统一的验证方法学UVM演进什么是验证?验证计划验证目标RTL代码覆盖率功能覆盖率功能覆盖率和代码覆盖率的关系覆盖率驱动的验证CDV验证阶段随机大量测试加定向边界测试UVM提供了哪些内容UVM基础类库和宏定义UVM编码原则更多的测试案例和......
  • UVM - 1
    VMM/OVM-都是验证方法学CDV-coveragedriververification-覆盖率驱动的验证课程概述课程概述内容OOP:class类OOP:封装OOP:继承OOP:多态不是虚方法,看句柄的类型是虚方法,看对象的类型使用虚方法,创建通用的方法OOP编程规则:在class之外定......
  • UVM - 2 (补充虚基类及纯虚函数知识点)
    虚方法和纯虚方法虚方法定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。virtualfunction纯虚方法定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范......
  • UVM宏解释+odt文件转doc+merge命令和difflib+python调用命令+clog2和系统函数+java添
    UVM宏解释UVM_DISABLE_AUTO_ITEM_RECORDINGhttps://blog.csdn.net/MGoop/article/details/127295965itemrecord的方法主要是用于记录事务信息的,原理是调用accept_tr,begin_tr,end_tr。似乎和波形上显示出各个事务相关。默认情况下,在调用get_next_item()和item_done()时自动......
  • How to use try-catch with DB::transaction in Laravel
    Howtousetry-catchwithDB::transactioninLaravel.Whenaddingnumerousqueries,DB::transaction()isusedtocheckwhethereachquerywasproperlyrunbeforerollingback.Therefore,canweuseatry-catchblockwithdb::transactionaswell?Usingat......
  • 【UVM】 【source_code】 uvm_cmdline_processor
    classuvm_cmdline_processor 函数get_arg_values()用于收集命令行(commandline)中匹配的参数,便于后续处理。返回所有匹配上的参数数量,所有匹配上的参数词尾被存放在values[$]中。sourcecodefunctionintget_arg_values(stringmatch,refstringvalues[$]);  int......
  • 2.1.一个简单的UVM验证平台------验证平台的组成
    1.1验证平台的组成:一个验证平台中通常要实现以下的功能:1.验证平台要能模拟DUT的各种真实使用情况,也就是可以提供激励,激励的功能是由driver来实现的。2.验证平台要能够根据DUT的输出来判断DUT的行为是否与预期相符合,称为计分板scoreboard3.验证平台能够收集DUT的输出并把它们传......
  • @Transactional事务注解失效
    @Transactional事务注解失效事务注解失效可能出现在以下几个方面:@Transactional标注在了非public修饰的方法上————事务注解失效@Transactional注解属性propagation设置错误—————事务注解失效PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则......