如何在没有创建虚拟变量的情况下获取SystemVerilog中结构的字段宽度?

时间:2017-03-23 01:55:02

标签: system-verilog

如何获取结构中字段的宽度?我试着用

frame = step(videoReader);
foreground = step(foregroundDetector, frame);
him = imshow(foreground);

for k = 1:119
    set(him, 'CData', foreground)
    drawnow

    frame = step(videoReader); % read the next video frame
    foreground = step(foregroundDetector, frame);
end

但它无法编译。我必须创建一个虚拟变量并在其上应用$bits(struct_type_name.field_name) 。但如果我需要很多宽度,这将产生很多垃圾。

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

不幸的是,struct类型的field_name不是另一种类型或变量。两个建议

  1. 在声明_field_name_时使用typedef并使用$bits(field_name_t)
  2. 在需要$ bits的范围内声明一个自动变量。它可能会被优化掉,但不会在为$ bits提取类型信息之前。