System verilog 如何在系统verilog中声明动态数组

System verilog 如何在系统verilog中声明动态数组,system-verilog,modelsim,System Verilog,Modelsim,我试图在SystemVerilog source中声明动态数组,但出现如下错误: 仅在SystemVerilog中允许动态范围 我使用的工具是ModelSim。这段代码如下所示: module sv1; reg [7:0] memory []; // 8 bit memory with 16 entries endmodule 可能的问题是什么?您的代码没有问题。唯一的问题是您使用的模拟器不支持SystemVerilog 您可以在处尝试SystemVerilog代码大多数工具将命令行或

我试图在SystemVerilog source中声明动态数组,但出现如下错误:

仅在SystemVerilog中允许动态范围

我使用的工具是ModelSim。这段代码如下所示:

module sv1;

  reg [7:0] memory []; // 8 bit memory with 16 entries

endmodule

可能的问题是什么?

您的代码没有问题。唯一的问题是您使用的模拟器不支持SystemVerilog


您可以在

处尝试SystemVerilog代码大多数工具将命令行或项目列表中的源文件视为Verilog,除非您为该文件指定了一个
*.sv
扩展名以将其识别为SystemVerilog。原因是仍然有许多工具不支持SystemVerilog,您必须明确要求它


还有一个ModelSim
-sv
开关,它将所有文件视为SystemVerilog,但如果您的旧版Verilog代码使用SystemVerilog保留关键字,如
bit

,则可能会遇到编译问题,即使我在vivado 14.2上尝试过,我也会遇到同样的错误。是否需要任何库声明来实现此功能??支持SystemVerilog的工具通常需要
.sv
文件扩展名,或者需要您传递一个参数,例如
-sv
,以指示源代码是sv而不是Verilog。事实上,我使用的扩展名是.sv,我得到这个错误,它说Vivado合成忽略了Verilog或SystemVerilog文件的库规范。[C:/Users/Prasad/Desktop/vivado/system/proj1/proj1.srcs/sources\u 1/new/main.sv]我在liabrary部分有xil\u defaultlib(1)。是否需要包括任何其他图书馆?这是一个完全不同的问题。