Specman e vr_ad:如何使用read_reg_field?

时间:2014-10-28 14:54:09

标签: specman uvm e

UVM e Reference文档中写了

You can call read_reg_field or write_reg_field for registers whose fields
are defined as single_field_access (see “vr_ad_port_unit Syntax and Examples”).
...
For example:
write_reg_fields tx_mode_reg {.resv = 4; .dest = 2};

但是没有使用 read_reg_field 的例子...... 你能解释一下它应该如何使用?

(我已经尝试了下一个代码,但它提供了编译错误: some_var = read_reg_field my_reg_file.my_reg {.my_reg_field}) 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

据我所知,没有read_reg_fieds宏。如果要读取寄存器然后保存某个字段的值,请执行以下操作:

read_reg my_reg;
value = my_reg.my_reg_field;

通常,当您阅读注册时,您会完全阅读它们。如果您的总线协议允许窄传输(即您的数据宽度为32位,但您可以对其进行16位传输),则仅读取单个字段是有意义的。我还没有在vr_ad中看到这样的事情(可能就在那里,我只是不知道),但是UVM RAL(SystemVerilog寄存器包)支持它。

长话短说,如果您只关心从DUT获取数据,使用read_reg就足够了。

答案 1 :(得分:1)

当在Verilog或vhdl中实现被测设计时 - 你可以整体阅读注册表,你不能只阅读它的一些字段"。

寄存器位于特定地址,读取该寄存器 - >从这个地址读。

关于字段访问的规范的引用是在DUT是SystemC模型时。

使用端口连接到SC型号。如果模型为每个字段定义了一个端口 - 您可以读取一个字段。