繁体   English   中英

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

另外,由于我引起了您的注意,因此请不要在类型声明中使用宏。 最好有参数和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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM