声明数组时Verilog错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了声明数组时Verilog错误相关的知识,希望对你有一定的参考价值。

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
另一答案

您也可以尝试循环。

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

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

以上是关于声明数组时Verilog错误的主要内容,如果未能解决你的问题,请参考以下文章

verilog 初始化十进制数组

Notepad++编辑器——Verilog代码片段直接编译

verilog模块端口为二维数组如何调用?

在头文件中声明 Verilog 函数

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

Pycuda 在函数参数中按值声明数组时返回错误