[UVM源代码研究] UVM的field_automation实现的print()函数如何灵活控制打印数组元素的数量
引言
实际工作中我们经常会遇到如下问题:
我们使用内置的print()函数打印一个包含多个数组、队列元素变量的transaction时,这里以can_txrx_transfer为例,默认只会打印开始5个和最后5个元素,如图1所示,如果我们想要查看更多的元素值甚至完整的所有元素内容,有什么办法呢?
图1 can_txrx_transfer打印结果

第一种方法,也是我们最为熟悉的,就是重写这个can_txrx_transfer中的do_print()函数,想要打印什么内容,以什么格式打印都可以自己决定,这个就不在这里介绍了。
第二种方法,我们能不能借助现有的UVM源代码内容,看看其中实现只打印前后5个元素是在哪里设定的,通过修改设定能够实现打印更多的数组、队列内容。
源代码溯源分析
首先我们看看can_txrx_transfer里面我们是怎么注册的,如图2所示
图2 can_txrx_transfer中的field automation注册

可以看到,除了我们要研究的
`uvm_field_queue_int
其他地方还有定义
`uvm_field_array_int
这个就源于变量定义成队列还是动态数组了,分析方法相同,这里我们就以uvm_field_queue_int为例进行分析。
`uvm_field_queue_int溯源
uvm_field_queue_int宏定义在文件uvm_object_defines.svh中,如图3所示
图3 uvm_object_defines.svh中定义的`uvm_field_queue_int宏
UVM源码解析:灵活控制field_automation打印数组元素数量的方法

最低0.47元/天 解锁文章
4989

被折叠的 条评论
为什么被折叠?



