【发布时间】:2021-09-18 14:48:46
【问题描述】:
我正在使用系统 verilog 进行综合。我有一组接口实例。在接口定义中,我想要一个参数,它可以告诉这个实例在数组中的索引是什么。我认为我们不能将不同的参数值传递给数组中的每个不同实例。有没有办法做到这一点?
【问题讨论】:
-
您究竟是如何创建实例数组的?
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: system-verilog
我正在使用系统 verilog 进行综合。我有一组接口实例。在接口定义中,我想要一个参数,它可以告诉这个实例在数组中的索引是什么。我认为我们不能将不同的参数值传递给数组中的每个不同实例。有没有办法做到这一点?
【问题讨论】:
标签: system-verilog
对于具有实例数组的可合成代码,没有自动的方法来执行此操作。如果您的综合工具支持,您可以使用defparam 手动完成。
module dut#(int I=0);
initial $display("%m",,I);
endmodule
module top;
dut u[1:2] ();
defparam u[1].I=1;
defparam u[2].I=2;
endmodule
更好的方法是使用 generate-for 循环。
module dut#(int I);
initial $display("%m",,I);
endmodule
module top;
for(genvar i=1;i<=2;i++) begin : A
dut #(.I(i)) u();
end : A
endmodule : top
【讨论】: