我有一个名为dct_8p的模块,其中我有一个包含8个元素的输入数组,其中每个元素是4位数字,8个元素输出数组每个包含5位数字。我想通过模块传递每个4bit的数字输入。
我试着通过设计视觉来解读设计。它生成一个错误:
/Farhana/Synopsys对此/dct_8p。v:56:非法引用内存xin。(版本- 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允许传递多维数组作为模块的输入。您可以修改示例代码并验证这一事实。
使用sys -vcs执行SystemVerilog代码的命令如下:
vcs -timescale=1ns/1ns +vcs+flush+all +warn=all -sverilog -R