如何以编程方式定义可变数量的 "and" 门(逻辑门)?

How to define variable number of "and" gates (logic gates) programatically?

我需要创建 31 个 "and" 门,我尝试使用 for 循环和 begin:

for(i=1;i<=30;i=i+1)
    begin
    and g[i](u[i],p[i],q[1]);  // Line 29
    end
end

但是,它在 "and"- 第 29 行显示语法错误。 有什么方法可以以编程方式声明和初始化它而不是声明每个 "and" 门?

还有另外两种方法。您可以使用实例数组

and g[31:1](u,p, q);

或者您可以使用生成循环

genvar i;
for(i=1;i<=31;i=i+1) begin : block
  and g(u[i],p[i],q[i]);
end

这将创建 and 门块 [1].g 到块[31].g