在 systemverilog 中传递多维数组

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);

另外,既然我引起了你的注意,请尽量不要在你的类型声明中使用宏。最好有参数和 typedefs

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