在verilog中通过模块传递数组

时间:2015-08-24 22:37:00

标签: arrays multidimensional-array verilog system-verilog

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

我试图通过设计愿景来阅读设计。它会产生错误:

  

/Farhana/Synopsys/dct_8p.v:56:非法引用内存xin。 (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;
....
....

1 个答案:

答案 0 :(得分:3)

我编译了你的代码here,它完美无缺。正如你所知,我已经使用xin [7]作为输入。

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

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

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