void'(__m_uvm_status_container.comparer.compare_field(`"ARG`", ARG, local_data__.ARG, $bits(ARG))); \ if(__m_uvm_status_container.comparer.result && (__m_uvm_status_container.comparer.show_max <= __m_uvm_status_container.comparer.result)) return; \ end \ end \ end \ UVM_PA...
常见的UVM机制: 1.field_automation机制 对field_automation最直观的感受是,他可以自动实现copy、compare、print等三个函数。当使用uvm_field系列相关宏注册之后,可以直接调用以上三个函数,而无需自己定义。这极大的简化了验证平台的搭建,尤其是简化了driver和monitor,提高了效率。 2.config_db机制 config_db机制在UVM...
grep下我们发现UVM_SHALLOW只有在联合数组相关的field_automation相关的定义里才有提到,并且还都是定义在UVM_COMPARE里,所以我们就可以把这个应用忽略不计了,基本不会使用UVM_SHALLOW(因为UVM源代码都不太支持) 关于UVM中copy都是进行的深拷贝,UVM_REFERENCE标志位可以实现浅拷贝我们再举下面一个例子 uart_ctrl_config...
virtual function bit do_compare (uvm_object rhs,uvm_comparer comparer); mytype rhs_; do_compare = super.do_compare(rhs,comparer); $cast(rhs_,rhs); do_compare &= comparer.compare_field_int("f1", f1, rhs_.f1); endfunction endclassuvm...
UVM从uvm_void扩展而来,因此所有的类都可以使用其函数。常用的函数有:print、sprint、copy、clone、compare、record、pack/unpack。 UVM_FIELD_*宏 例如,定义一个32位变量sa:verilog uvm_field_int(sa, UVM_ALL_ON | UVM_NOCOPY)这里,UVM_ALL_ON表示所有权限打开,UVM_NOCOPY表示不复制数据。
1.4与队列有关的uvm_field系列宏 1.5与关联数组有关的uvm_field系列宏 注1:宏中第一个类型是存储数据的类型,第二个类型是索引类型,如`uvm_filed_aa_int_string用于声明存储的数据是int类型,而其索引是string类型的关联数组; 2.该机制的功能? 2.1 提供copy,clone,compare,print,pack_bytes等函数,而不需user定...
复制的内容仅限于使用了UVM field automation.机制的成员 print 可按照给定的格式打印出对象的成员,打印的内容仅限于使用了UVM field automation机制的成员 sprint 与print类似,但返回的是一个字符串 compare 执行深度对比功能,对比的内容仅限于使用了JVM field automation机制的成员 pack 将成员按一定格式打包成一个...
UVM:3.3.2 field_automation 机制常用的函数 1.copy 要把A的实例复制到B实例中,应该使用B.copy(A),使用前,B必须使用new分配好内存空间。 2.compare 比较A 与 B是否一样,可以使用A.compare(B),也可以使用B.compare(A)。相等时,返回1;否则为 0 。
uvm_object类是所有UVM数据和层次化类的基类。它主要的角色是为像create/copy/compare/print/record这样的通用操作来定义一系列method。从uvm_object派生出来的类必须执行像create和get_type_name这样的纯虚函数。 uvm_object的methods介绍: a) new – 用给定的实例名字创建一个新的uvm_object。
function bit uvm_object::compare (uvm_object rhs, uvm_comparer comparer=null); ... __m_uvm_field_automation(rhs, UVM_COMPARE, ""); dc = do_compare(rhs, comparer); ... endfunction function void uvm_object::m_pack (inout uvm_packer packer); ...