ISE 12.4 で構文チェックに合格するモジュールを取得しようとしていますが、理解できないエラーが表示されます。最初のコード スニペット:
parameter ROWBITS = 4;
reg [ROWBITS-1:0] temp;
genvar c;
generate
always @(posedge sysclk) begin
for (c = 0; c < ROWBITS; c = c + 1) begin: test
temp[c] <= 1'b0;
end
end
endgenerate
構文チェックを試みると、次のエラー メッセージが表示されます。
ERROR:HDLCompiler:731 - "test.v" 46 行目: 非レジスタ <c> への手続き型代入は許可されていません。
なぜそれが不平を言っているのか、私は本当に理解していません。「c」はワイヤではなく、genvar です。これは、完全に正当な構文と同等である必要があります。
reg [3:0] temp;
always @(posedge sysclk) begin
temp[0] <= 1'b0;
temp[1] <= 1'b0;
temp[2] <= 1'b0;
temp[3] <= 1'b0;
end
生成せずにこれを書く方がいかに簡単かについてのコメントはありません。これは、複数の if と "temp" へのノンブロッキング代入を含む、はるかに複雑なコード部分の簡略化された例です。また、新しいバージョンの ISE があるとだけ言わないでください。私はすでにそれを知っています。OTOH さん、ISE の新しいバージョンで修正されていることがわかっている場合は、動作することがわかっているバージョンを教えてください。