在 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
我知道在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