Verilog generuje / genvar w stałym bloku

Próbuję uzyskać moduł, który przejdzie sprawdzanie składni w ISE 12.4, i daje mi błąd, którego nie rozumiem. Najpierw fragment kodu:

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

Gdy próbuję sprawdzić składnię, otrzymuję następujący komunikat o błędzie:

BŁĄD: HDLCompiler: 731 - „test.v” Wiersz 46: Przypisanie procedur do nierejestrowanego <c> jest niedozwolone.

Naprawdę nie rozumiem, dlaczego narzeka. „c” nie jest przewodem, to genvar. Powinno to być odpowiednikiem całkowicie legalnej składni:

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

Proszę, nie komentuj tego, jak łatwiej byłoby napisać to bez generowania. Jest to zredukowany przykład znacznie bardziej złożonego fragmentu kodu obejmującego wiele przypisań if i nieblokujących do „temp”. Ponadto, nie tylko powiedz mi, że są nowsze wersje ISE, już to wiem. OTOH, jeśli tywiedzieć jest naprawiony w nowszej wersji ISE, daj mi znać, którą wersję znasz.

questionAnswers(6)

yourAnswerToTheQuestion