¿Cómo NO usar los bucles while () en verilog (para síntesis)?

Tengo la costumbre de desarrollar muchos bancos de pruebas y usar bucles for () y while () para fines de prueba. Esta bien. El problema es que he adoptado este hábito para codificar circuitos que deberían ser sintetizables. XST y otros se niegan a sintetizar código (sin modificación adicional a los parámetros de síntesis) como:

while (num < test_number) 
     begin 
     . 
     . 
     . 
     num = num+1; 
     end

Este es un mal estilo de codificación porque para el sintetizador test_num es un int con valor 2 ^ 32! o lo ve como un parámetro ilimitado. De cualquier manera, es un mal hábito de codificación. Pero estoy tan acostumbrado a hacer esto en C y bancos de pruebas. ¿Cuál sería el código sintetizable equivalente del segmento de código anterior?

¡Gracias!