作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 e 使用 vr_ad 包。我在 vr_ad_reg_file my_reg_file
中定义了一个寄存器 my_reg
:
reg_def MY_REG MY_REG_FILE 20'h00018 {
reg_fld my_reg_field : uint (bits : 32) : RW : 0x0;
};
我想访问寄存器的值。直接访问寄存器有什么区别(如果有的话):
some_var = my_reg_file.my_reg.my_reg_field;
并使用 read_reg_val()
访问寄存器:
some_var = my_reg_file.my_reg.read_reg_val();
感谢您的帮助。
最佳答案
在你的情况下,因为你的寄存器只有一个字段,所以没有。但是为了更深入地理解,让我们以您的寄存器定义如下的情况为例:
reg_def MY_REG MY_REG_FILE 20'h00018 {
reg_fld my_reg_field : uint (bits : 32) : W : 0x0;
};
请注意,我将字段设置为只写。假设您的字段更新为 0x1010_1010
的值。
调用 my_reg.my_reg_field
将返回此值,0x1010_1010
。
read_reg_val()
方法返回您对该寄存器进行读访问时将获得的值。在这种情况下,由于该字段不可读,您将得到 0x0000_0000
(此值是可配置的,但默认情况下它是重置值)。
还有一个 read_reg_rawval()
方法返回存储在寄存器中的值(即它忽略字段的访问策略)。在我们的例子中,它将返回存储在字段中的值,0x1010_1010
。
read_reg_val()
和 read_reg_rawval()
在寄存器中声明了多个字段时很有用,因为这些方法将打包所有字段的值并返回给您标量值(vr_ad_data_t
类型)。
关于Specman UVM : What is the difference between access a register directly and using read_reg_val()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26648328/
我是一名优秀的程序员,十分优秀!