module test; typedef struct packed { logic [9:-1][2:0] a; //REQ-EXT-10001, REQ-EXT-10004 } ST1; typedef struct { ST1 st1; logic [2:0] b; } ST2; typedef struct { logic [31:0] c; // ST3 definition missing } ST3; typedef struct { ST3 st3; ST2 st2_arr[3:0]; } ST4; initial begin ST2 st2; ST2 st2_1 = {3'b101, {ST1{10'b110}}, {ST1{20'b10101010101010}},{ST1{30'b1}}}; ST2 st2_2 = {3'b010, {ST1{10'b101}}, {ST1{20'b01010101010101}},{ST1{30'b0}}}; st2 = {3'b1, {ST1{10'b110}}, {ST1{20'b10101010101010}}, {ST1{30'b1}}}; $display("%p",st2); //CHECK-001:'{a:'h1}, st2:'{'a:'h1}, '{a:'h0},'{a:h1}}} $display("st2_1:%p", st2_1); //CHECK-002 $display("st2_2:%p", st2_2); //CHECK-003 end endmodule 这段system verilog代码在用vcs编译时会报35行有语法错误,也就是st2赋初值似乎出了问题,应该怎么修改才能使得这段代码可以用vcs编译通过呢?
时间: 2023-11-01 10:25:12 浏览: 32
在这段代码中,ST2结构体中包含了ST1结构体,因此在使用ST2结构体时需要先定义ST1结构体。
此外,st2的初始化语句中,每个元素的类型应该是ST1,而不是{ST1}。正确的初始化语句应该是:
```
st2 = {3'b1, {ST1{10'b110}}, {ST1{10'b1010101010}}, {ST1{10'b1010101010}}, {ST1{10'b1010101010}}, {ST1{10'b1}}};
```
这样,每个元素都是ST1类型,而且每个元素的位数都是10位。
最终修改后的代码如下:
```
module test;
typedef struct packed {
logic [9:-1][2:0] a; //REQ-EXT-10001, REQ-EXT-10004
} ST1;
typedef struct {
ST1 st1;
logic [2:0] b;
} ST2;
typedef struct {
logic [31:0] c;
} ST3;
typedef struct {
ST3 st3;
ST2 st2_arr[3:0];
} ST4;
initial begin
ST2 st2;
ST2 st2_1 = {3'b101, {ST1{10'b110}}, {ST1{20'b10101010101010}},{ST1{30'b1}}};
ST2 st2_2 = {3'b010, {ST1{10'b101}}, {ST1{20'b01010101010101}},{ST1{30'b0}}};
st2 = {3'b1, {ST1{10'b110}}, {ST1{10'b1010101010}}, {ST1{10'b1010101010}}, {ST1{10'b1010101010}}, {ST1{10'b1}}};
$display("%p",st2);
$display("st2_1:%p", st2_1);
$display("st2_2:%p", st2_2);
end
endmodule
```
相关推荐
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)