¿Cuál es la forma estándar de detener un banco de pruebas VHDL después de un cierto período de tiempo?

En Verilog puedo usar la función $finish para detener la simulación, pero mi búsqueda de una opción similar en VHDL ha fallado hasta ahora.

La solución más cercana que encontré en línea es usar este código en mi banco de pruebas VHDL:

stop_simulation :process
begin
   wait for 1000 ns; --run the simulation for this duration
   assert false
       report "simulation ended"
       severity failure;
end process ;

¿Cómo establece el tiempo para su simulación en VHDL? Por ejemplo, si quiero que mi reloj funcione a las 10, ¿cuál es la opción ESTÁNDAR para lograrlo?

hola esan. si desea detener la simulación, debe esperar 1000 ns; funciona bien. Y si eres persa, puedo ayudarte fácilmente.
Sí, soy iraní. Entonces, ¿ese código es la forma ESTÁNDAR de detener la simulación en VHDL?
Esa no es la forma ESTÁNDAR, pero funciona y es la forma recomendada en al menos un libro de texto (Janick Bergeron, "Writing Testbenches"). Hoy en día simplemente llamaría std.env.stop;(y configuraría las opciones del compilador en VHDL-2008).
Solo espera; declaración después de una espera de ... s; declaración.

Respuestas (1)

Se utilizan comúnmente dos formas:

Detener el reloj (o relojes). De esa forma no hay más eventos y la simulación se detiene. A veces, hay una señal (por ejemplo llamada done) que apaga el generador de reloj. El banco de pruebas afirma la doneseñal cuando se completan todas las pruebas.

Informar de un fallo . Esto no es tan elegante, pero mucha gente lo usa. La gravedad de la falla hará que el simulador se detenga.report "simulation finished successfully" severity FAILURE;

Detener procedimiento Una tercera forma, solo disponible desde VHDL 2008, es llamar al procedimiento stop, en el envpaquete de la stdbiblioteca. Por ejemplo, así:std.env.stop;

¿ Cómo observa el simulador la doneseñal? Te has perdido el punto de la pregunta, creo.
Una vez que todos los relojes se detienen y ya no se activa ningún evento, la simulación se vuelve infinitamente rápida. Se puede utilizar un tiempo simulado largo arbitrario.
Esta respuesta se mejoraría agregando el std.env.stopmétodo del comentario anterior de @BrianDrummond.
@scary_jeff He actualizado la respuesta para incluir std.env.stop. Todavía no he visto que esto se use "en la naturaleza", pero estoy de acuerdo en que esta es la forma más elegante de detener el simulador.