声明数组时出现 Verilog 错误

Verilog error while declaring a array

reg [11:0] rom_sin_type [0:4095]= '{12'h000, 12'h003, 12'h006, 12'h009, 12'h00d, 12'h010, 12'h013, 12'h016, .....};

在verilog中,当我综合上述包含4096个值的代码行时,每个值12位,其显示错误如下。

期待“;”,找到“=”

期待 'endmodule',发现'{'

谁能帮帮我,怎么解决这个问题?

Verilog 不支持 '{} 语法。它是 SystemVerilog (IEEE Std 1800-2012) 的一个特性;参考§ 5.10 结构文字, § 5.11 数组文字, § 7.2.2 赋值给结构, § 和 10.9 分配模式

您可以启用 SystemVerilog(所有现代 Verilog 模拟器都是 SystemVerilog 模拟器)或分配 Verilog 方式:

reg [11:0] rom_sin_type [0:4095];
initial begin
  rom_sin_type[0] = 12'h000;
  rom_sin_type[1] = 12'h003;
  rom_sin_type[2] = 12'h006;
  rom_sin_type[3] = 12'h009;
  .....
end

您也可以尝试 for 循环。

genvar  i;
for (i=0;i<4096;i= i+1) begin
    assign a[i] = i;
end

我不确定 rom_sin_type 是否需要赋值语句。