Я пытаюсь получить модуль для проверки синтаксиса в 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
Когда я пытаюсь проверить синтаксис, я получаю следующее сообщение об ошибке:
ОШИБКА: HDLCompiler: 731 - "test.v" Строка 46: Процедурное присвоение не-регистр <c> не разрешено.
Я действительно не понимаю, почему он жалуется. "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". Кроме того, не просто скажите мне, что есть более новые версии ISE, я уже это знаю. OTOH, если вы знаете, что это исправлено в более поздней версии ISE, сообщите мне, какая версия, которую вы знаете, работает.