模块中端口/阵列端口的可变大小和数量,在Verilog系统Verilog中取决于参数

模块中端口/阵列端口的可变大小和数量,在Verilog系统Verilog中取决于参数,verilog,system-verilog,Verilog,System Verilog,参考以下问题 关于这一点,我还有一个问题 module my_module #(SIZEOF_LENGTH = 3, LENGTH = {8,8,7})( input clk, input rst_n, input [LENGTH[0]-1:0] data_1, input [LENGTH[1]-1:0] data_2, input [LENGTH[2]-1:0] data_3 ); 我基本上想要这样的东西。大小

参考以下问题

关于这一点,我还有一个问题

module my_module #(SIZEOF_LENGTH = 3,
                    LENGTH = {8,8,7})(
    input clk,
    input rst_n,
    input [LENGTH[0]-1:0] data_1,
    input [LENGTH[1]-1:0] data_2,
    input [LENGTH[2]-1:0] data_3
);

我基本上想要这样的东西。大小取决于从顶部传递的参数以及端口数。这可以做到吗?

不使用Verilog,但可以使用Ruby或Perl等模板语言

或者,可以在SystemVerilog中使用阵列端口: 注意,这些宽度必须相同

module my_module #(
    SIZEOF_LENGTH = 3,
    LENGTH = 8)(
    input clk,
    input rst_n,
    input [LENGTH-1:0] data [0:SIZEOF_LENGTH-1]
);

不在Verilog中,但可以使用Ruby或Perl等模板语言

或者,可以在SystemVerilog中使用阵列端口: 注意,这些宽度必须相同

module my_module #(
    SIZEOF_LENGTH = 3,
    LENGTH = 8)(
    input clk,
    input rst_n,
    input [LENGTH-1:0] data [0:SIZEOF_LENGTH-1]
);

这个简写符号也可以使用
输入[LENGTH-1:0]数据[SIZEOF_LENGTH]
这就是问题所在,我希望数据部分有一个可变的长度。这应该是可能的,因为它是HDL,但我想LRM不支持。这种简写符号也可以
input[LENGTH-1:0]data[SIZEOF_LENGTH]
这就是问题所在,我希望数据部分有一个可变的长度。这应该是可能的,因为它是一个HDL,但我想LRM不支持。