UVM的这些标志位本身其实是一个17bit的数字,bit0表示copy,bit1表示no_copy,bit2表示compare,bit3表示no_compare,bit4表示print,bit5表示no_print,bit6表示record,bit7表示no_record,bit8表示pack,bit9表示no_pack,UVM_ALL_ON的值是’b000000101010101,表示打开copy、compare、print、record、pack功能 3.3.4 field...
通过field_automation机制, 使用uvm_field系列宏来自动实现new_tr.copy(tr)、new_tr.print()、 get_actual.compare(tmp_tran)三个函数: `uvm_object_utils_begin(my_transaction) `uvm_field_int(dmac, UVM_ALL_ON) ... `uvm_object_utils_end uvm_object_utils_begin和uvm_object_utils_end来实现my_tran...
function bit compare(uvm_object rhs, uvm_compare comparer=null); 默认情况下,如果不对比较情况做出额外配置,用户调用compare()方法时,省略第二项参数,即采用默认的比较配置。 比较方法经常会在两个数据类中进行。例如从generator产生的一个transaction(数据类),和在设计输出捕捉的transaction(数据类),如果它们为同...
put:通信发起者A把一个transaction发给B; get:通信发起者A向B索取一个transaction; transport:相当于1次put+1次get,A向B提交1个request,B返回给A1个response; 3.put、get和transport操作都有阻塞和非阻塞之分; 以关键字blocking和nonblocking关键字区分,对于名称中不含这两者的,可以表示这个端口既可以用作阻塞,也...
function uvm_check_e get_compare() Returns the compare policy for this field.is_indv_accessible function bit is_indv_accessible ( uvm_path_e path, uvm_reg_map local_map ) Check if this field can be written individually, i.e. without affecting other fields in the containing register.pre...
uvm_object类是所有UVM数据和层次化类的基类。它主要的角色是为像create/copy/compare/print/record这样的通用操作来定义一系列method。从uvm_object派生出来的类必须执行像create和get_type_name这样的纯虚函数。 uvm_object的methods介绍: a) new – 用给定的实例名字创建一个新的uvm_object。
get_num_children() `define uvm_field_**_**(ARG, FLAG) copy 函数: B.copy(A):把实例A复制到B实例中,B必须已经使用new函数分配好了内存空间。 compare 函数: A.compare(B) or B.compare(A)。 pack_bytes 函数: 用于将所有字段打包成byte流。 unpack_bytes 函数: 用于将一个byte流逐一恢复...
compare 函数: A.compare(B) or B.compare(A)。 pack_bytes 函数: 用于将所有字段打包成byte流。 unpack_bytes 函数: 用于将一个byte流逐一恢复到某个类的实例中。 pack 函数: 用于将所有的字段打包成bit流。 unpack 函数: 用于将一个bit流逐一恢复到某个类的实例中。
这个类包含了compare, printer等,一般默认使用uvm_object_globals.svh中的全局变量,uvm_default_comparer, uvm_default_table_printer。也可以自己配置compare, printer中的参数,并在调用compare(), print()时传入即可或者重写do_compare, do_print函数,实现自定义功能。
act_port.get(get_actual); if(expect_queue.size() > 0) begin tmp_tran = expect_queue.pop_front(); result = get_actual.compare(tmp_tran);//<=== if(result) begin `uvm_info("my_scoreboard", "Compare SUCCESSFULLY", UVM_LOW); end 1. 2. ...