Verilog genera / genvar en un bloque siempre

Estoy tratando de obtener un módulo para pasar la comprobación de sintaxis en ISE 12.4, y me da un error que no entiendo. Primero un fragmento de código:

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

Cuando intento una comprobación de sintaxis, aparece el siguiente mensaje de error:

ERROR: HDLCompiler: 731 - "test.v" Línea 46: No se permite la asignación de procedimiento a un no-registro <c>.

Realmente no entiendo por qué se queja. "c" no es un cable, es un genvar. Este debería ser el equivalente de la sintaxis completamente legal:

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

Por favor, no hay comentarios acerca de cómo sería más fácil escribir esto sin generar. Este es un ejemplo reducido de un código mucho más complejo que involucra múltiples ifs y asignaciones no bloqueantes a "temp". Además, no solo me digan que hay versiones más nuevas de ISE, ya lo sé. Oh si tusaber&nbsp;Se solucionó en una versión posterior de ISE. Por favor, hágame saber qué versión sabe que funciona.