[UVM源代码研究] UVM中在使用field_automation时如果加入了条件控制时无法正常使用copy/clone

文章探讨了在UVM中,当使用field_automation加入条件控制时,copy和clone功能的失效问题。作者提供了三种解决方法:避免条件控制、重写do_copy函数以补充未复制的字段,以及重写copy函数以全面控制。

[UVM源代码研究] UVM中在使用field_automation时如果加入了条件控制时无法正常使用copy/clone

引言

这个标题相当长,实在没有想到怎么去言简意赅的表达,这是本人今天刚刚遇到的一个问题,有时我们的driver需要支持pipeline就需要把收到get_next_item收到的包备份起来,这时候就会用到内置的函数clone或者copy,在不override这两个函数的情况下,只能通过field_automation里的flag来控制各个字段在调用内置函数时的行为,需不需要copy可以通过UVM_NOCOPY来控制,但是如果field_automation添加了条件控制,那就带来新的问题了。

问题描述

在transaction中有如图1所示的field_automation的定义

图1 transaction中field_automation代码段截图

在这里插入图片描述

而我们在driver中收到包之后clone一份的代码如图2所示

图2 driver中收包clone代码段截图

在这里插入图片描述

driver里收到包之后会存到mailbox中等到总线空闲时再发包,这里我们需要看下UVM源代码中clone函数的定义,如图3所示

图3 src/base/uvm_object.svh中cl

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值