可以看到我们在调用print()函数时,最终打印在调用do_print()之前会调用我们在图5提到的_m_uvm_field_automation函数,进而调用我们在图4提到的`M_UVM_FIELD_QDA_INT中case语句选择的UVM_PRINT中的内容。这里print()函数还有个uvm_printer类型的参数,是指定我们选择的打印器类型,这个我们后面会讲,这里我们先继续讲图...
第三个是打印该object相关的信息,用的是sprint()函数,本质上会调用该object里的do_print()函数,就可以运用call_back重写该do_print()来增加打印内容或者修改打印格式。 根据上面的分析,只有uvm_component才会被加到uvm树形结构中进而添加到parent的m_children中,所以print_topology的时候只会打印uvm_component相关的信息。
在UVM中,要灵活控制print函数打印数组元素的数量,可以通过以下两种方法实现:1. 重写transaction的do_print函数 自定义打印内容与格式:通过重写do_print函数,你可以完全自定义需要打印的内容和格式。这样,你可以根据实际需求决定打印哪些元素,以及它们的显示方式。2. 修改UVM源代码中的相关设定 关键宏与...
实现方式分为两种:1)用户注册,field系列宏;uvm内部调用static status container中的function; 2)用户自己实现do_copy,do_print等函数,调用static printer内的函数; uvm_object中实现了print,sprint等函数,实现调度接口,调度status_container和do_function; status_container中的function在进行filed注册的时候,被实现出来; ...
实际工作中,我们常遇到需打印包含多个数组或队列元素的transaction时,仅默认显示开始5个和最后5个元素。若需查看更多元素值或完整内容,可考虑两种方法:一是重写transaction的do_print()函数,自定义打印内容与格式;二是探索现有UVM源代码,修改相关设定以实现打印更多元素。首先,分析can_txrx_transfer的...
do_print(printer); ... endfunction 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); ...
sprint方法和print方法类似,除了输出返回在一个字符串中,而不是显示。 // // Thesprintmethod is not virtual and must not be overloaded. To include // additional fields in theprintandsprintoperation, derived classes // must override the <do_print> method and use the provided printer policy ...
do_print() 方法由 uvm_object.print() 方法调用。它的目的是使用 uvm_printer 策略类之一打印出 uvm 数据对象的字符串表示。实现该方法的最简单方法是将uvm_printer 的字符串设置为 convert2string() 方法返回的值。 代码语言:javascript 代码运行次数:0 ...
2. function string uvm_object::sprint(uvm_printer printer=null); //调用do_print(printer)打印(主要目的是返回一个string,而不是为了打印) 1. The printer policy will manage all string concatenations and provide the string to sprint to return to the caller. ...
本身提供的回调函数包括:do_copy、do_print、do_compare、do_pcak、do_unpack、do_record、pre_trigger、post_trigger...等等 定义回调的步骤: 定义相应的继承uvm_callback的回调类(object) 使用宏绑定callback('uvm_register_cb(所在的类名,callback类名)) 插入...