我正在尝试制作一个简单的DUT,它包含了很多实现FPGA的实例。
如何制作实例化DUT的I / O端口?
你可以看到下面的代码,有TEST DUT,我想在TOP模块中制作84个input_data I / O.
如果我使用下面的方法,top的input_data连接到所有实例的input_data。
但我想制作每个84的I / O端口并连接它们。
但我不知道该怎么做。
你能帮我一下,我该怎么办?
module top(
input_data0,
input_data1,
input_data2,
//...
input_data83,
// TODO make I/O ports
);
// to declare reg/wire signals.
input signed [49:0] input_data0;
input signed [49:0] input_data1;
input signed [49:0] input_data2;
//....
input signed [49:0] input_data83;
// I'd like to connect between input_data0~input_data83 and u_test's 83 input_data
genvar i;
generate
for (i=0; i<84; i=i+1) begin : amp
TEST u_test (
.in_input ( input_data )
);
end
endgenerate
endmodule
你不能在Verilog中这样做。在SystemVerilog中,您可以将input_data端口设为数组。
你可以在Verilog中做的最好的事情就是创建一个非常大的向量,并将其中的一部分连接到每个TEST模块
module top( input wire [(84*50)-1:0] input_data,
// TODO make I/O ports
);
genvar i;
for (i=0; i<84; i=i+1) begin : amp
TEST u_test (
.in_input ( input_data[i*50 +:50] )
);
end
endmodule