module test; typedef struct packed { logic [9:-1][2:0] a; ///REQ-EXT-10001, REQ-EXT-10004 } ST1; typedef struct { ST1 st1; ST1 st2; }ST2; initial begin ST2 st2; st2.st1.a='h001; st2.st1.a='{'h001, 'h000, 'h001}; $display("%p", st2); //CHECK-001:'{a:'h1}, st2:'{'a:'h1}, '{a:'h0},'{a:h1}}} end endmodule 这段代码对st2的初始化有什么语法错误吗?如果有,应该如何修改才能使这段sverilog代码跑通呢?
时间: 2024-03-10 10:43:45 浏览: 71
C/C++中的结构体声明: struct 和 typedef struct 用法
这段代码对st2的初始化存在语法错误,应该将第二个赋值语句中的单引号改为双引号,并将大括号内的元素用逗号分隔开,如下所示:
```
st2.st1.a = 'h001;
st2.st2.a = "{ 'h001, 'h000, 'h001 }";
```
这样就可以正确初始化st2的两个成员变量了。
阅读全文