0

有人请看一下我的代码并解释为什么我会收到这些错误。我是iverilog的新手。这是一个项目

Power_ALU.v:13 error: Unable to bind parameter 'select' in 'Power_ALU_tb.ALU8'

Power_ALU.v:13 error: Cannot evaluate genvar conditional expression: (select)==('sd0)

第 13 行是 //INCREMENT 下的第一行

这是我的代码

module PowerALU(Out,Cin,s1,s2,s3,A,B);

input [7:0] A,B;
input Cin,s1,s2,s3;
output [7:0] Out;

wire Cout,A_LT_B,A_GT_B,A_EQ_B;
wire [7:0] Sum,And,Or,Xor,Nand,Nor,Xnor;
wire select;
assign select = {s3,s2,s1,Cin};

//INCREMENT
if(select == 0)
begin
    assign B = 8'b00000001;
    RCA8 rca1(Cout,Sum,A,B,Cin);
    assign Out = Sum;
end
//TRANSFER
.
.
.
//EQ
else if(select == 14)
begin
    Comparator8 comp3(A_GT_B,A_LT_B,A_EQ_B,A,B);
    assign Out = {0,0,0,0,0,0,0,A_EQ_B};
end

endmodule
4

1 回答 1

1

如果您在(or ) 块if之外有一个语句,它将被解释为 generate-if 用于在构建时选择要创建的不同硬件。因此,如果条件不是精化时间常数,如这里,那么结果是编译错误。alwaysinitial

您应该将您的if语句放在一个always @*块中,并assign从分配中删除关键字。您需要将子模块实例移到always块之外,它们不能在运行时打开或关闭。

于 2020-05-16T17:13:10.080 回答