Тип петли значения не имеет. Вы не можете синтезировать переменное количество оборудования. Однако, чтобы цикл был синтезируемым, он должен иметь определенный верхняя граница — синтезатору должно быть понятно максимальное количество итераций. Допускается досрочный выход из цикла.
Я бы порекомендовал вам придерживаться for
петель для синтеза. Это сделает ваш код более переносимым.
Вы не нужно использовать цикл, но, возможно, вы считаете, что это наиболее удобно?
Если вы используете цикл, чтобы определить, сколько аппаратного обеспечения будет построено, вам нужно включить все возможное аппаратное обеспечение (поэтому установите верхнюю границу цикла), а затем используйте некоторую логику, чтобы получить требуемый результат из нужного места в аппаратном обеспечении, поэтому эмулировать случай цикла "выход раньше"
В качестве альтернативы, если вы эмулируете программный цикл в конечном автомате, вы можете отслеживать итерации или флаг «завершения» в переменной состояния и использовать его для перехода к следующему состоянию, когда вы выполнили достаточное количество вычислений. .