1

我找不到可以在我的测试台中使用的 uvm_field_* 宏。我定义了一个结构:

typedef struct {
   unsigned byte red;
   unsigned byte green;
   unsigned byte blue;
} pixel;

现在,在我的序列项目中,我声明:

rand pixel unsigned data[];
rand int   unsigned height;
rand int   unsigned width;

`uvm_object_utils_begin(cgs_rgb_trans_t)
  `uvm_field_int(height, UVM_ALL_ON)
  `uvm_field_int(width, UVM_ALL_ON)
  `uvm_field_array_pixel(data, UVM_ALL_ON)
`uvm_object_utils_end

我怀疑这会奏效。我可以将它注册为`uvm_field_array_int 吗?这样做的方法是什么?

4

2 回答 2

2

我们 Mentor 不建议使用现场自动化宏,因为这些限制、对哪些情况是自动配置的混淆以及它们施加的严重性能损失。此外,所谓的 UVM int在内部表示为 4K 位向量,浪费了大量内存。有关更多信息和替代方案,请参阅本文

于 2014-05-28T20:09:14.220 回答
1

您总是可以使用'uvm_field_array_int一对将像素信息转换为 int 的打包/解包函数(您仍然可以使用 int 的一个字节),反之亦然。您的序列将有一个整数数组,而不是一个像素数组,然后您可以在驱动程序和监视器中从/到转换。

于 2014-05-28T16:19:26.607 回答