[UVM源代码研究] UVM的field_automation实现的print()函数如何灵活控制打印数组元素的数量

UVM源码解析:灵活控制field_automation打印数组元素数量的方法

[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宏

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值