我们使用内置的print()函数打印一个包含多个数组、队列元素变量的transaction时,这里以can_txrx_transfer为例,默认只会打印开始5个和最后5个元素,如图1所示,如果我们想要查看更多的元素值甚至完整的所有元素内容,有什么办法呢? 图1 can_txrx_transfer打印结果 第一种方法,也是我们最为熟悉的,就是重写这个can_txrx_tr...
function void uvm_transaction::do_print (uvm_printer printer);//打印accept/begin/end time,initiator的名字 function void uvm_transaction::do_copy (uvm_object rhs);//做一些copy,把各个内部变量做copy function void uvm_transaction::do_record (uvm_recorder recorder);//记录initiator和accept time 9.f...
uvm_sequence_item派生自uvm_transaction,而uvm_transaction派生自uvm_objection。TLM是Transaction Level Modeling的缩写,所谓的transaction level是相对DUT中各个module之间pin级别的通信来说的。通俗点说,DUT中各个module之间通信是以bit为单位的,而transaction level则是以包为单位的。 每个transaction包含了我们关心的一些...
3.1.2 常用的派生自uvm_component的类 uvm_driver:所有的driver都要派生自uvm_driver,driver的功能主要就是向sequencer索要sequence_item,并将sequence_item的信息驱动到DUT的端口上,这相当于完成了从transaction级别到DUT能够接受的端口级别信息的转换。与uvm_component相比,uvm_driver多了一下几个成员变量: uvm_seq_i...
uvm_sequence_item派生自uvm_transaction,而uvm_transaction派生自uvm_objection。TLM是Transaction Level Modeling的缩写,所谓的transaction level是相对DUT中各个module之间pin级别的通信来说的。通俗点说,DUT中各个module之间通信是以bit为单位的,而transaction level则是以包为单位的。
在UVM验证环境的项目中,经常需要使用内置的print()函数或sprint()函数打印 uvm_sequence_item类或者uvm_transaction类,这些transaction或sequence_item的class中通常会包含多个列表()数组(array)和/或队列(queue),这些数组和队列通常又包含很多个元素变量。默认情况下,系统只会打印数组和队列开始的5个元素和最后的5个元...
自动实现my_transaction中print、copy、compare这样的比较常见的结构体操作,简化my_transaction的实现。同时默认的pack_bytes(tr中的各个字段转换成byte流)和unpack_bytes(byte流转换成tr中的各个字段)也简化了driver、monitor的实现。 使用uvm_object_utils_begin和uvm_object_utils_end来实现my_transaction的factory注册,...
sequence_item,在uvm中所有的transaction都要从uvm_sequence_item派生;二 my_transaction需要使用uvm_...
实际工作中,我们常遇到需打印包含多个数组或队列元素的transaction时,仅默认显示开始5个和最后5个元素。若需查看更多元素值或完整内容,可考虑两种方法:一是重写transaction的do_print()函数,自定义打印内容与格式;二是探索现有UVM源代码,修改相关设定以实现打印更多元素。首先,分析can_txrx_transfer的...
1.driver把transaction 级别的数据变成DUT 端口级别,并驱动给DUT。 2.monitor用于收集DUT端口的数据,并转换成transaction交给后续components,入reference model,scoreboart处理。 3.monitor定义如下: `ifndef MY_MONITOR__SV `define MY_MONITOR__SV class my_monitor extends uvm_monitor; ...