Инструменты синтеза различаются, но обычно цикл может быть синтезирован, если известно, что количество итераций для инструмента синтеза известно. Итак,
for ( i = 0; i < 10; i = i + 1 )
в порядке, потому что инструмент знает, что есть 10 итераций цикла. Но
reg [10:0] r;
for ( i = 0; i < r; i = i + 1 )
не в порядке, потому что r - это значение переменной, неизвестное во время синтеза.
Думайте о циклах в коде RTL как о создании известного фиксированного числа копий фрагмента логики.