copy函数用于实例的复制,其原型为: externfunctionvoidcopy(uvm_objectrhs); 如果要把某个A实例复制到B实例中,那么应该使用B.copy(A)。在使用此函数前,B实例必须已经使用new函数分配好了内存空间。 compare函数用于比较两个实例是否一样,其原型为: externfunctionbitcompare(uvm_objectrhs,uvm_comparercomparer=null)...
4compare_object ⽐较两个uvm_object类型的object 。若policy为UVM_REFERENCE,直接⽐较两个handle,否则调⽤lhs.compare(rhs, this)进⾏⽐较。lhs或rhs任意⼀个为null都会⽐较失败 5compare_string⽐较两个string类型的object,直接⽐较 6print_msg ⽐较失败时会调⽤该函数打印两个⽐较的对象...
注1:field automation机制的本质是覆盖了uvm_object类中的m_uvm_field_automation函数,而不是定义了copy等函数,也不是定义了do_copy等函数; 注2:field automation机制使得我们可以不用定义do_copy,do_compare函数,而直接使用copy, compare等操作;但是如果需要特殊的处理或者field automation机制不能满足user需求,可以定...
在使用此函数前,B实例必须已经使用new函数分配好了内存空间。 compare函数用于比较两个实例是否一样:如果要比较A与B是否一样,可以使用A.compare(B),也可以使用B.compare(A)。当两者一致时,返回1;否则为0。 pack_bytes函数用于将所有的字段打包成byte流: unpack_bytes函数用于将一个byte流逐一恢复到某个类的实例...
比较方法经常会在两个数据类中进行,例如从generator产生的一个transaction(数据类),和在设计输出上捕捉的transaction(数据类),如果它们为同一种类型,除了可以自定义数据比较之外,也可以直接使用uvm_object::compare()函数来实现数据比较和消息打印。 class box extends uvm_object;...
field automation机制的常用函数 copy:如果要把某个A实例复制到B实例中,那么应该使用B.copy(A),在使用此函数前,B实例必须已经使用new函数分配好了内存空间 compare:用于比较两个实例是否一样,如果要比较A与B是否一样,可以使用A.compare(B),也可以使用B.compare(A)。当两者一致时,返回1;否则为0 ...
uvm中的field_automation主要实现了class中的基础元素的copy,compare等函数, 实现方式分为两种:1)用户注册,field系列宏;uvm内部调用static status container中的function; 2)用户自己实现do_copy,do_print等函数,调用static printer内的函数; uvm_object中实现了print,sprint等函数,实现调度接口,调度status_container和do...
compare 函数: A.compare(B) or B.compare(A)。 pack_bytes 函数: 用于将所有字段打包成byte流。 unpack_bytes 函数: 用于将一个byte流逐一恢复到某个类的实例中。 pack 函数: 用于将所有的字段打包成bit流。 unpack 函数: 用于将一个bit流逐一恢复到某个类的实例中。
_get_port新建两个port:exp_port、act_port,并在main_phase中,通过fork建立起两个进程,一个进程处理exp_port的数据(ref),当收到数据后,把数据放入expect_queue中;另外一个进程处理act_port的数据(dut),当收集到这些数据后,从expect_queue中弹出之前从exp_port收到的数据,并调用my_transaction的my_compare函数...