I can't handle this error in my Verilog code: "error: malformed statement"

I can't handle this error in my Verilog code: "error: malformed statement"

"main.v:38: 错误:语句格式错误"。 在Adder模块调用.

我想在 Verilog 中实现 ALU,但我遇到了这个错误。

即使是 Whosebug 的上一个问题也帮不了我。

module Adder(A, B, Cin, S, Cout);
  input A, B, Cin;
  output reg S, Cout;
  
  always @(*)
    begin
      S = (A ^ B) ^ Cin;
      Cout = (A & B) | (A & Cin) | (B & Cin);
    end
endmodule

module ALU(op1, op2, opCode, Cin, Res, cFlag, zFlag, oFlag);
  input [31 : 0] op1, op2;
  input [3 : 0] opCode;
  input Cin;
  output [31 : 0] Res;
  output cFlag, zFlag, oFlag;
  integer i;
  
  wire Cout;
  
  always @(*) begin
      if(opCode == 4'b1001) begin
        for(i = 0; i < 32; i = i + 1) begin
           Adder adder(op1[i], op2[i], Cin, Res[i], Cout);
           case(Cout)
            1'b1 : Cin = 1'b1;
            1'b0 : Cin = 1'b0;
           endcase
        end
      end
    end
endmodule

不能在 always 块中实例化模块。如果您需要一个模块的多个实例,请使用带有 for 循环的生成。您可以完全不使用循环来实例化模块。我可能首先使用两个模块来执行此操作只是为了让它工作,然后进行更改以获得设计所需的数字(在本例中为 32)。

所有模块都在仿真的细化阶段静态实例化,仅一次,时间在 t=0 之前。没有动态创建模块。

您可能会发现这对这个问题和类似问题有帮助:
https://www.amiq.com/consulting/2014/10/01/what-goes-where-in-systemverilog/
always 块不是此图表上的 'container'。