[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

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

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



