Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 系统Verilog数组缩减gotcha和参数数组_Arrays_System Verilog - Fatal编程技术网

Arrays 系统Verilog数组缩减gotcha和参数数组

Arrays 系统Verilog数组缩减gotcha和参数数组,arrays,system-verilog,Arrays,System Verilog,我正在努力学习系统verilog中的数组缩减技术。我写了以下模块: module main; localparam [7:0]PARAM_ARR0[3:0] = '{8'h1,8'h3,8'h4,8'h0}; localparam [3:0]PARAM_ARR1[7:0] = '{4'h3,4'h2,4'h2,4'h2,4'h1,4'h1,4'h1,4'h1}; int s = 0; logic [7:0]arr0[3:0] = '{8'h1,8'h3,8'h4,8'h0}; logic [

我正在努力学习系统verilog中的数组缩减技术。我写了以下模块:

module main;

localparam [7:0]PARAM_ARR0[3:0] = '{8'h1,8'h3,8'h4,8'h0};
localparam [3:0]PARAM_ARR1[7:0] = '{4'h3,4'h2,4'h2,4'h2,4'h1,4'h1,4'h1,4'h1};

int s = 0;
logic [7:0]arr0[3:0] = '{8'h1,8'h3,8'h4,8'h0};
logic [3:0]arr1[7:0] = '{4'h3,4'h2,4'h2,4'h2,4'h1,4'h1,4'h1,4'h1};

initial begin

//s = int'(PARAM_ARR0.sum() with (item.index<int'(PARAM_ARR1[0])?item:0));
//$display("sum0 = %0d",s);
//s = int'(PARAM_ARR0.sum() with (item.index<int'(PARAM_ARR1[4])?item:0));
//$display("sum1 = %0d",s);
s = int'(arr0.sum() with (item.index<int'(arr1[0])?item:0));
$display("sum0 = %0d",s);
s = int'(arr0.sum() with (item.index<int'(arr1[4])?item:0));
$display("sum1 = %0d",s);
s = int'(arr0.sum() with (item.index<int'(arr1[7])?item:0));
$display("sum2 = %0d",s);
end

endmodule
我希望结果分别是0、4和7。因为我试图得到arr0中索引分别小于arr1[0](1)、arr1[4](2)、arr1[7](3)的所有元素的总和


谢谢

这在Questa 2019.2中对我很有用。你可能得跟你的EDA AE谈谈问题所在。Serge建议使用动态阵列:

另外,看起来您的代码给出了您在Questa中期望的结果

# Loading sv_std.std
# Loading work.main(fast)
# run -all
# sum0 = 0
# sum1 = 4
# sum0 = 0
# sum1 = 4
# sum2 = 7
#  quit -f
# End time: 11:17:11 on May 23,2019, Elapsed time: 0:00:21
# Errors: 0, Warnings: 0

vcs是正确的。从基本数据类型创建的数组没有任何与之关联的函数。因此,
.sum()
在那里是非法的。请尝试使用动态数组。谢谢您提供的信息。无法访问Questa或NC Sim卡进行尝试。我要和他谈谈。
sum0 = 1
sum1 = 4
sum2 = 8
# Loading sv_std.std
# Loading work.main(fast)
# run -all
# sum0 = 0
# sum1 = 4
# sum0 = 0
# sum1 = 4
# sum2 = 7
#  quit -f
# End time: 11:17:11 on May 23,2019, Elapsed time: 0:00:21
# Errors: 0, Warnings: 0