Specman UVM:write_reg {.field == 2;};之间有什么区别?和write_reg_fields?

时间:2014-09-14 07:43:05

标签: specman uvm e

我正在使用vr_ad套餐。我的问题是:以下2个用于修改寄存器的宏之间有什么区别(假设foo寄存器包含2个字段:field1field2):

1)

write_reg foo {.field1 == 1;};

2)

write_reg_fields foo {.field1 = 1};

我非常感谢任何帮助

1 个答案:

答案 0 :(得分:4)

这些形式之间存在非常重要的差异。

在第一个中,将使用所有已定义的约束生成寄存器值,+您在此操作中编写的约束(field1 == 1)。新生成的值将写入DUT。

在第二个代码中,您声明的是您只想修改寄存器的一个字段 - field1。 会发生什么是vr_ad将从e模型(阴影模型)获得寄存器的当前值,更改field1 - 并将新值写入DUT中的寄存器。其他寄存器的字段都不会被更改。此外 - 不会检查您为field1指定的值是否符合此寄存器中定义的约束。