UVM自动化宏的目的是什么?

what is the purpose of UVM automation macro?

我正在尝试了解 UVM 自动化宏。 除其他外,我从文本中找到了一些句子 "UVM system Verilog call library also includes macros that automatically implement the print, copy, clone, compare, pack and unpack methods and more"。

而且我发现很多示例都使用了以下用法。 例如,

....
uvm_object_utils_begin(apb_transfer)
'uvm_field_int(addr, UVM_DEFAULT)
'uvm_field_int(data, UVM_DEFAULT)
...
uvm_object_utils_end

但我没听懂。 'uvm_field_int() 的用法只是定义变量而不是复制、克隆、比较....

我如何理解 uvm 自动化宏的作用? 甚至我也很好奇为什么那些东西被命名为自动化?我找不到任何自动的东西。

如您所说,UVM 字段自动化宏 生成许多 class 实用方法,例如包含已注册字段的复制、打印和克隆。而已。我猜使用了名称 "automation",因为它们会自动编写代码,因此您不必这样做。

我的公司 (Doulos) 建议您不要使用这些无用的宏,您知道自己在做什么。这是因为它们很难调试,可以生成比你需要的更多的代码,并且有奇怪的副作用(可以在你不知情的情况下自动从配置数据库中读取值)。当然,使用它们的好处是您可以免费获得一大堆代码——复制、比较、打印方法等。

UVM 下载提供的 HTML 文档非常好。搜索`uvm_object_utils 并跟随您的鼻子。