Hay al menos tres tipos de simulaciones en el diseño de FPGA.
El primer tipo son las simulaciones de comportamiento, la más rápida. Realmente debería agregar explícitamente los retrasos, pero solo a la evaluación de no bloqueo, para representar el retraso de "reloj a Q" de la propagación físicamente existente en los flip-flops. El valor del retardo se debe tomar de los elementos típicos de los registros FPGA, 20-50 ps es suficiente para que el circuito se comporte correctamente. La lógica combinatoria no necesita retrasos preventivos. Mientras los retrasos de los puntales se ajusten razonablemente a la tecnología de silicio usada, no "sesgará su circuito". Algunos compiladores pueden hacer este trabajo por usted, pero siempre prefiero los retrasos explícitos.
El segundo tipo de simulación se realiza después de asignar su lógica a los CLB, que tienen retrasos básicos conocidos, por lo que no necesita cambiar nada. Sus retrasos preinsertados serán ignorados, por lo que no hacen daño.
La tercera ronda de simulación se ejecuta después del lugar y el enrutamiento. La herramienta ahora sabrá casi exactamente todas las demoras y las anotará en su lista de redes. Nuevamente, sus retrasos explícitos artificiales serán reemplazados por retrasos reales.
Como puede ver, los retrasos explícitos en las asignaciones no bloqueantes son inofensivos, pero sin ellos su diseño podría comportarse incorrectamente. Podría cometer un error al modificar el diseño para cumplir con sus expectativas de comportamiento, pero este diseño podría desintegrarse totalmente en las próximas etapas del proceso de compilación.