System verilog 通过systemverilog结构成员循环的方法

System verilog 通过systemverilog结构成员循环的方法,system-verilog,System Verilog,我有一个结构x定义如下 typedef struct packed { int a; int b; } x_s; 结构内部构件的数量不是确定的。我想分别打印出结构成员的每个值。有没有办法在结构构件之间循环 提前谢谢。你可以试试 $display("x: %p",x); %p用于分配p模式。和显示 x:'{a:0, b:0} 如果您想要更复杂的内容,那么无法迭代SystemVerilog本身的struct成员。有一个基于C的API(VPI)可以访问这些信息,但要做到这一点,您需要

我有一个结构x定义如下

typedef struct packed {
  int a;
  int b;
} x_s;
结构内部构件的数量不是确定的。我想分别打印出结构成员的每个值。有没有办法在结构构件之间循环

提前谢谢。

你可以试试

$display("x: %p",x); 
%p
用于分配p模式。和显示

 x:'{a:0, b:0}

如果您想要更复杂的内容,那么无法迭代SystemVerilog本身的
struct
成员。有一个基于C的API(VPI)可以访问这些信息,但要做到这一点,您需要是一个认真的开发人员

多谢各位。我试着在课堂上这样做。它只打印了%p,没有值。在哪里可以使用它有任何限制吗?类事务\u类;typedef结构压缩{inta;intb;}成员;成员mem,不要比较;功能新;this.don_compare='0;endfunction函数比较(事务类实际);如果((this.mem&~this.dont\u compare)!=(\u actual.mem&~this.dont\u compare))$错误(“比较不匹配。预期为%p,实际为%p\n”,this.mem,\u actual.mem);else$display(“比较成功\n”);显示的endfunction endclass:比较不匹配。预期为%p,实际为%p,看起来像是工具问题。某些工具不支持$error中的%p,仅支持$display或$sformaf。此外,您的比较函数需要
void
返回类型。隐式默认返回类型是一个
logic
bit