SystemVerilog错误10748

时间:2014-08-24 04:12:35

标签: verilog system-verilog

我使用SystemVerilog来处理三维数组。我的代码如下。

module sub_bytes();


reg [7:0] word_stream_reg [0:1][0:1]= '{'{8'hFF,8'hA4},'{8'h50,8'hC6}};
reg [7:0] test = word_stream_reg[0][1][7:0]; 


endmodule

我收到此错误:

Error (10748): Verilog HDL error at sub_bytes.v(6): expression in variable declaration assignment to test must be constant

我花了大约4个小时但找不到这个错误的原因。如果有人能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

即使某些工具允许,使用另一个静态变量初始化静态变量也是一种非常糟糕的编程习惯。这是指" 静态初始化惨败"在许多编程语言中。在过程上下文之外,没有静态初始化器的定义排序。

为变量赋值常量不会使该变量成为常量。就编译器而言,它仍然是一个变量。

您可能想要做的是使用parameter而不是变量。

parameter logic [7:0] word_stream_reg [0:1][0:1]= '{'{8'hFF,8'hA4},'{8'h50,8'hC6}};

注意:由于您使用的是SystemVerilog,因此请使用logic代替reg

答案 1 :(得分:1)

正如@Qui所说,引用另一个变量用于初始化不适用于某些模拟器。

为什么不使用:

reg  [7:0] word_stream_reg [0:1][0:1]= '{'{8'hFF,8'hA4},'{8'h50,8'hC6}};
wire [7:0] test = word_stream_reg[0][1][7:0];