嘿嘿,没想到吧,刚水完一篇FPGA调时序总结的我转头就回来了233 这篇要记录一下UVM代码里uvm_field宏背后的真面目。 下面是一个例子,我们最常看到uvm_field的使用就是下面这样的: `uvm_object_utils_begin(jelly…
进一步查看`M_UVM_FIELD_QDA_INT宏的定义,如图4所示 图4 uvm_object_defines.svh中定义的`M_UVM_FIELD_QDA_INT宏 我们选择将于print()无关的内容进行了折叠,这里case的参数what_是在uvm_field_utils_begin宏中定义的,如图5所示 图5 uvm_object_defines.svh中定义的`uvm_field_utils_begin宏 这里就涉及到了...
30`uvm_field_int(crc, UVM_ALL_ON) 31`uvm_object_utils_end … 37endclass 这里使用uvm_object_utils_begin和uvm_object_utils_end来实现my_transaction的factory注册,在这两个宏中间,使用uvm_field宏注册所有字段。uvm_field系列宏随着transaction成员变量的不同而不同,如上面的定义中出现了针对bit类型的uvm_...
(1) uvm_config_db::set与uvm_config_db::get函数一般都是成对出现,但是在某些情况下,可以只有set而没有get语句,即省略get语句. (2)所谓的特定情况指的是变量使用uvm_field_int注册,在build_phase中调用super.build_phase(),并且set函数的第三个参数必须要与get函数中变量的名字一致.这种情况下可以省略掉uvm...
field automation机制相关的宏 最简单的uvm_field系列宏有如下几种: `define uvm_field_int(ARG,FLAG) `define uvm_field_real(ARG,FLAG) `define uvm_field_enum(T,ARG,FLAG) `def
uvm_field automation 定长数组,STL是指C++的标准模板库。(存储着一些常用的算法和容器) vector是一个不定长数组。它把一些常用的操作”封装“在vector类型内部。例如,a是一个vector。1对元素的操作有,可以用a.size()读取它的大小,a.resize()改变它的大小,a.pus
2. 修改UVM源代码中的相关设定 关键宏与函数:UVM的打印机制主要通过UVM_FIELD_QDA_INT宏与UVM_FIELD_UTILS_BEGIN宏结合调用_m_uvm_field_automation函数实现。该函数根据指定的参数调用相应的打印函数。 控制打印数量的变量:在调用print函数时,最终会调用到uvm_print_array_int3宏,该宏通过uvm_print...
uvm_field_int用法 UVM Field_Int用法 简介 UVM(Universal Verification Methodology)是一种面向对象的验证方法学,在硬件验证中广泛使用。UVM提供了一种强大的机制来描述和管理寄存器和寄存器字段,其中包括uvm_field_int。在本文中,将详细介绍uvm_field_int的使用方法。 什么是 uvm_field_int是UVM中的一个类,用于...
在调用print()函数时,最终调用_m_uvm_field_automation,进一步调用uvm_print_array_int3宏。该宏通过uvm_print_qda_int4宏实现打印逻辑,对静态或动态数组、队列元素的打印格式进行统一处理。在uvm_print_qda_int4宏中,定义了uvm_printer与uvm_printer_knobs变量,用于接收打印参数与配置信息。uvm_...
uvm_reg_field:包含uvm_reg_data_t类型的三个成员变量value,m_mirrored,m_desire。 uvm_reg:包含成员变量m_fields,加入各个uvm_reg_field。 uvm_reg_block:uvm_reg的集合,uvm_reg需要加入到uvm_reg_map中,且属于同一个uvm_reg_block。每个uvm_reg_block至少包含一个uvm_reg_map。uvm_reg_block中也可以再...