声明数组时Verilog错误

时间:2016-02-23 07:20:52

标签: arrays compiler-errors syntax-error verilog xilinx

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位,它的显示错误如下所示。

期待&#39 ;;',找到' ='

期待' endmodule',找到' {'

请有人帮助我,如何克服这个问题?

2 个答案:

答案 0 :(得分:3)

Verilog不支持'{}语法。它是SystemVerilog(IEEE Std 1800-2012)功能;请参阅第5.10节结构文字,第5.11节数组文字,第7.2.2节分配给结构,§和10.9 分配模式< / em>的

您可以启用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

答案 1 :(得分:0)

您也可以尝试进行循环。

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

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