我正在使用vr_ad
套餐。我的问题是:以下2个用于修改寄存器的宏之间有什么区别(假设foo
寄存器包含2个字段:field1
和field2
):
1)
write_reg foo {.field1 == 1;};
2)
write_reg_fields foo {.field1 = 1};
我非常感谢任何帮助
答案 0 :(得分:4)
这些形式之间存在非常重要的差异。
在第一个中,将使用所有已定义的约束生成寄存器值,+您在此操作中编写的约束(field1 == 1)。新生成的值将写入DUT。
在第二个代码中,您声明的是您只想修改寄存器的一个字段 - field1。 会发生什么是vr_ad将从e模型(阴影模型)获得寄存器的当前值,更改field1 - 并将新值写入DUT中的寄存器。其他寄存器的字段都不会被更改。此外 - 不会检查您为field1指定的值是否符合此寄存器中定义的约束。