forループを使用してリップルキャリー加算を使用して加算を実行しようとしていますが、クロックのposedgeでのみ演算を実行したかったのです。そのために、generateブロックを使用して、generateブロック内でforループを使用しました。いつものステートメントを使わないとうまくいくでしょうが、alwaysブロックを追加すると、シミュレーション時にエラーが発生します。以下 コードである:常に生成ブロック内のVerilogがエラーをスローしています
genvar i;
generate
always @(posedge clk)
for(i=0;i<=31;i=i+1) begin : generate_block
fulladd f1(.sum(sum[i]),.cin(cout1[i]),.a(b[i]),.b(temp[i]),.cout(cout1[i+1]));
end
end
endgenerate
ここfulladd異なるモジュールです。
以下シミュレートしたときに、私は取得していますエラーです:
Error-[IBLHS-CONST] Illegal behavioral left hand side
add32.v, 36
Constant Expression cannot be used on the left hand side of this assignment
The offending expression is : i
Source info: i = 0;
Error-[IBLHS-CONST] Illegal behavioral left hand side
add32.v, 36
Constant Expression cannot be used on the left hand side of this assignment
The offending expression is : i
Source info: i = (i + 1);
Error-[SE] Syntax error
Following verilog source has syntax error :
"add32.v", 37: token is '('
fulladd
f1(.sum(sum[i]),.cin(cout1[i]),.a(b[i]),.b(temp[i]),.cout(cout1[i+1]));
add32.vは、設計モジュール名です。私は概要vcsを使用しています。私はVerilogプログラミングの初心者です。私が間違っている根底にある概念について説明してください。事前に感謝
alwaysブロック内ではインスタンスを使用しないでください。 – toolic