systemverilog 中的参数数组
Array of parameters in systemverilog
我尝试实例化参数数组,例如
module top();
parameter array_size = 10;
parameter par_array [array_size] = '{array_size{12}};
initial begin
$display("%d",par_array[array_size-1]);
end
endmodule
但是当我尝试在 questasim 中编译这个模块时,我得到了这种错误
-- Compiling module top
** Error: (vlog-13069) parameters_array.sv(3): near "[": syntax error, unexpected '[', expecting ';' or ','.
关于这个主题的搜索让我找到了 following 主题,回答者说 systemverilog 确实允许这种构造。
我真的不想使用长参数向量,因为它会导致新的困难,并且这个构造是在 Vivado 中编译的(但为了验证我需要使用 Questa)。
仅 system verilog
支持参数数组。因此,请确保您在系统 verilog 模式下编译(文件扩展名 .sv 或您需要的任何限定符)。
另外你最好int
在你的情况下:
parameter int par_array [array_size] = '{array_size{12}};`
----------^^^
尝试在某些地方定义动态数组类型:
typedef int int_arr_t[];
然后在你的模块中使用新的定义类型
module #(parameter array_size =12,
parameter int_arr_t par_array = '{array_size{12}})
解压缩的数组参数需要数据类型。
parameter int par_array [array_size] = '{array_size{12}};
只能指定简单的整型参数,不能指定数据类型,只能指定范围。
帮自己一个忙,不要在任何地方依赖隐式数据类型。
我尝试实例化参数数组,例如
module top();
parameter array_size = 10;
parameter par_array [array_size] = '{array_size{12}};
initial begin
$display("%d",par_array[array_size-1]);
end
endmodule
但是当我尝试在 questasim 中编译这个模块时,我得到了这种错误
-- Compiling module top ** Error: (vlog-13069) parameters_array.sv(3): near "[": syntax error, unexpected '[', expecting ';' or ','.
关于这个主题的搜索让我找到了 following 主题,回答者说 systemverilog 确实允许这种构造。
我真的不想使用长参数向量,因为它会导致新的困难,并且这个构造是在 Vivado 中编译的(但为了验证我需要使用 Questa)。
仅 system verilog
支持参数数组。因此,请确保您在系统 verilog 模式下编译(文件扩展名 .sv 或您需要的任何限定符)。
另外你最好int
在你的情况下:
parameter int par_array [array_size] = '{array_size{12}};`
----------^^^
尝试在某些地方定义动态数组类型:
typedef int int_arr_t[];
然后在你的模块中使用新的定义类型
module #(parameter array_size =12,
parameter int_arr_t par_array = '{array_size{12}})
解压缩的数组参数需要数据类型。
parameter int par_array [array_size] = '{array_size{12}};
只能指定简单的整型参数,不能指定数据类型,只能指定范围。
帮自己一个忙,不要在任何地方依赖隐式数据类型。