Arrays 在verilog中通过模块传递数组

Arrays 在verilog中通过模块传递数组,arrays,multidimensional-array,verilog,system-verilog,Arrays,Multidimensional Array,Verilog,System Verilog,我有一个名为dct_8p的模块,其中我有一个8个元素的输入数组,其中每个元素是一个4位数字,8个元素的输出数组每个包含5位数字。我想通过模块传递每个4位数字输入 我试图通过设计视觉来解读设计。它会生成一个错误: /Farhana/Synopsys/dct_8p.v:56:对内存的非法引用。(VER-253) 我猜我在数组声明中犯了非常愚蠢的错误,我无法得到这些错误 module dct_8p(xin,cin,add,sub,xout); input [3:0] xin [0:7]; input

我有一个名为dct_8p的模块,其中我有一个8个元素的输入数组,其中每个元素是一个4位数字,8个元素的输出数组每个包含5位数字。我想通过模块传递每个4位数字输入

我试图通过设计视觉来解读设计。它会生成一个错误:

/Farhana/Synopsys/dct_8p.v:56:对内存的非法引用。(VER-253)

我猜我在数组声明中犯了非常愚蠢的错误,我无法得到这些错误

module dct_8p(xin,cin,add,sub,xout);
input [3:0] xin [0:7]; 
input cin; 
output [4:0] xout[0:7]; 
input add,sub; 



//layer 1 
RCA3 #(.n(4), .approx(0)) l10(.p(xin[0]),.q(xin[]),.ci(cin),.op(add),.r(xout[0]));
.... 
.. 

module RCA3(p,q,ci,op,r); 
parameter n=4; 
input[n-1:0]p,q; 
input ci,op; 
output [n:0] r; 
parameter approx=0;
....
....
我编译了你的代码,它工作得很好。正如您所告知的,我使用xin[7]作为输入

SystemVerilog允许将多维数组作为输入传递给模块。您可以修改示例代码并验证这一事实

使用Synosis vcs执行SystemVerilog代码的命令如下:


vcs-timescale=1ns/1ns+vcs+flush+all+warn=all-sverilog-R

Verilog不支持二维阵列端口;确保已启用SystemVerilog。建议SystemVerilog文件使用
.v
.sv
指令。检查您是否有第二个
xin
的索引?我已经尝试了.sv扩展名,但仍然得到了相同的错误。我想在测试台脚本中传递4位寄存器值,但l10无法接收输入。是否有人可以提供一个示例?尝试将-sverilog传递给vcs编译时开关。(这是针对SystemVerilog的)