ISE 12.4で構文チェックに合格するモジュールを取得しようとしていますが、それは私には分かりません。最初のコードスニペット:それは文句だ、なぜ私は本当に理解していないVerilogは常にブロック内に/ genvarを生成します
ERROR:HDLCompiler:731 - "test.v" Line 46: Procedural assignment to a non-register <c> is not permitted.
:私は構文チェックをしようとすると
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
、私は、次のエラーメッセージが表示されます。 "c"はワイヤーではない、それはジェネバーです。これは、完全に正当な構文と同等でなければなりません。
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
生成しないとこれを簡単に書く方法についてのコメントはありません。これは、 "temp"に対する複数のifとnon-blockingの代入を含むはるかに複雑なコードの縮小例です。また、ISEの新しいバージョンがあると私には分かっていません。私はすでにそれを知っています。 OTOH、がを知っている場合は、ISEのそれ以降のバージョンで修正されています。あなたが動作しているバージョンを教えてください。あなたが生成するブロック内のネストを逆にする必要がある
感謝を行います。私はそれがこのようなものになるのではないかと心配しました。問題の一部は、forループを使用してif文またはcase selectorのシーケンスを生成したいのです。これは別のalwaysブロックでは実行できません。 – user1684538
すべてのコードを1つのalwaysブロックに生成する方法はありますか?そうでないのはgenvarですか? – user2569332