En la simulación es posible manipular el tiempo. Una de las cosas más comunes es esperar a que algo suceda o simplemente esperar una determinada cantidad de tiempo. La sentencia wait nos permite realizar esto.
Existen tres formas básicas de wait, las mismas pueden ser combinadas en una misma sentencia. Las tres formas son:
Es posible realizar una demora de tiempo esperando a que una o más señales cambien. Para esto se utiliza la sentencia wait on seguida por una lista de señales separadas por comas.
El efecto de wait on es similar al funcionamiento de la lista de sensibilidad de un proceso, sólo que wait on lo podemos usar en cualquier parte de un proceso.
En el Ejemplo 2-2 vemos dos procesos que son completamente equivalentes.
Es posible realizar una demora de tiempo esperando a que una condición se cumpla utilizando la sentencia wait until seguido de una expresión condicional. La expresión será del mismo tipo que la usada para sentencias como if.
Es posible realizar una demora de tiempo prefijada utilizando la sentencia wait for seguida de la cantidad de tiempo a esperar. La demora debe ser del tipo físico time.
En ocasiones es útil detener por completo la ejecución de un proceso, es decir que buscamos esperar por siempre. Para lograr esto basta con usar la sentencia wait sin ningún modificador.
Este mecanismo es particularmente útil para finalizar exitosamente un banco de pruebas. Cuando el simulador detecta que todos los procesos (explícitos e implícitos) se han detenido finaliza la ejecución. En un sistema completamente sincrónico basta con detener el proceso que genera el reloj.
En el Ejemplo 2-3 vemos la forma genérica de la sentencia wait, así como las distintas formas básicas explicadas y ejemplos de su uso.
Ejemplo 2-3. Usos de la sentencia wait
wait on señales until condición for tiempo; wait on señales; wait on s1, s2; wait until condición; wait until clk='1'; wait for tiempo; wait for 10 ns;
![]() | Para detener la ejecución de un proceso secuencial es posible utilizar la sentencia wait, cuya forma genérica es wait on señales until condición for tiempo. |