En la simulación de VHDL, hay un concepto de "tiempo delta", que se interpreta de manera general como "grupo de eventos desencadenados por el tiempo delta anterior". Después de un cambio, una vez que todos los cambios en cascada se han solucionado y no se generan más eventos de tiempo delta, el tiempo de simulación avanza. (Además, el tiempo de simulación puede avanzar después de N eventos de tiempo delta, ya que hay algún límite superior a la longitud de una cascada).
En un proceso dado, ¿cuándo se activa un cambio en la lista de sensibilidad del proceso? ¿Se dispara solo cuando el estado de una señal es diferente en un momento de simulación en comparación con el tiempo de simulación anterior, o puede activarse como resultado de cualquier evento de tiempo delta? Si se desencadena en cualquier momento delta, ¿se puede desencadenar un proceso más de una vez si hay una lógica combinatoria efímera?
Considera este ejemplo:
Digamos que comenzamos con el estado estacionario A = 1, B = 0, C = 1. Además, supongamos que no hay una entidad externa que inspeccione la señal B, es puramente interna.
Ahora, introduce un evento de simulación: A = 0.
Esto generará un evento de salida para B = 1, y un evento de salida para C = 0, para la próxima hora delta. En el siguiente tiempo delta, se generará un nuevo evento de salida para C = 1, y no se generarán más eventos, por lo que el tiempo de simulación puede avanzar.
Ahora, digamos que tengo un proceso con C en la lista de sensibilidad. Digamos que este proceso incrementa un contador cada vez que se invoca.
¿Se incrementará ese contador dos veces como resultado de un cambio? Ese sería el caso si los cambios en tiempo delta provocan / desencadenan / invocan procesos.
¿O ese contador se incrementará cero veces? Ese sería el caso si solo los cambios en el tiempo de simulación provocan / desencadenan / invocan procesos.
¿O es indefinida la relación entre el cambio en A y el contador de procesos? Por ejemplo, si el simulador (o sintetizador, para hardware) optimiza la tabla de verdad NO y XOR, dirá que C siempre es 1, pero si no lo optimiza, puede generar dos cambios para C y ¿Entonces desencadenar el proceso dos veces?
Segunda pregunta: ¿Cuál es la palabra correcta que se debe usar para "provocar / desencadenar / invocar" un proceso al cambiar alguna señal en su lista de sensibilidad?