[英]passing multidimensional array passing in systemverilog
我知道在Verilog中,多维数组无法通过模块端口传递。 我听说在systemverilog中允许这样做,这正是我开始使用systemverilog的原因。 但是,对于以下代码,对于x和y我仍然遇到下面显示的错误。
A reference to an entire array is not permitted in this context [Systemverilog]
这是代码。
module Chien(p, clk, reset, load);
wire [`m - 1 : 0] x [0 : `t - 1];
wire [`m - 1 : 0] y [0 : `t - 1][0 : `col];
mul_array mularray0(x, y);
endmodule
我正在使用ncverilog进行仿真,并且使用了-sv选项。 我的代码是否有问题,或者是模拟器的问题?
谢谢
在Modelsim / Questa中,对我来说效果很好,除了您需要在端口列表中声明端口,而不仅仅是在位置列表中声明端口。
module Chien(input wire p, clk, reset, load);
另外,由于我引起了您的注意,因此请不要在类型声明中使用宏。 最好有参数和typedef
package pkg;
parameter int col = 4, m = 5, t = 6;
typedef logic [m-1:0] array_t[t];
endpackage
module Chien(input p, clk, reset, load);
import pkg::*;
wire array_t x;
wire array_t y [col];
mul_array mularray0(x, y);
endmodule
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.