¿Qué significa delta en ModelSIM?

Ejecuté una simulación para un circuito lógico combinacional con 8 entradas, 4 salidas dentro de MODELSIM. Cuando veo la forma de onda simulada, todo se ve bien, sin embargo, cuando exporto el resultado a un archivo de lista, hay algunos valores intermedios relacionados con los deltas dentro de un intervalo de tiempo como este:

t(ns) delta               output input
    460  +1                   4'h1 8'h2E 
    460  +4                   4'h0 8'h2E 
    460  +5                   4'h2 8'h2E 
    470  +1                   4'h2 8'h2F 
    470  +4                   4'h3 8'h2F 
    480  +1                   4'h3 8'h30 
    480  +4                   4'h2 8'h30 
    480  +5                   4'h4 8'h30 
    480  +6                   4'h6 8'h30 
    490  +1                   4'h6 8'h31 
    500  +1                   4'h6 8'h32 
    500  +4                   4'h7 8'h32 
    500  +5                   4'h5 8'h32 
    510  +1                   4'h5 8'h33 
    510  +6                   4'h7 8'h33 
    510  +9                   4'h5 8'h33 

Quiero saber cuáles son estos valores intermedios y ¿causarán problemas para mi circuito o no?
por ejemplo, hay 3 valores para t=460ns

¿Podría ser que los primeros tres valores estuvieran en 461ns, 464ns y 465ns?

Respuestas (2)

Los ciclos de simulación se caracterizan por los que dan como resultado el avance del tiempo de simulación y los que no. Los que no lo son se conocen como ciclos delta.

De un ciclo de simulación resultante del avance de la asignación de tiempo de simulación a una señal sin demora (p. ej. after, wait for) provocará un ciclo delta como el siguiente ciclo de simulación sin cambiar el tiempo de simulación actual. Los ciclos delta ocurren hasta que no hay más asignaciones de señales al tiempo de simulación actual.

Así es como el simulador emula el paralelismo. La simulación consiste en ejecutar procesos en respuesta a eventos en señales que hacen que los procesos se despierten. Y cada declaración concurrente se delega en procesos equivalentes y/o declaraciones de bloque que representan jerarquía, las llamadas a funciones son expresiones.

Cuando no hay eventos programados en el tiempo de simulación actual, el tiempo de simulación avanza al más temprano que esté programado cualquier evento en cualquier forma de onda de salida proyectada para cualquier controlador (hay una cola).

Cuando no hay eventos programados en un tiempo de simulación futuro, el tiempo de simulación avanza hasta el tiempo de simulación máximo y la simulación se completa.

Esto no es específico de Modelsim, el ciclo de simulación se define en VHDL LRM y se usa para simular la mayoría de los HDL. Originalmente se definió en CONLAN un proyecto HDL que fue de 1971 a 1983.

El número de ciclos delta ejecutados se puede utilizar como información sobre la eficiencia de un modelo de diseño; puede establecer el número máximo permitido en una simulación.

La información también se puede utilizar para construir un gráfico o una forma de onda que muestre la secuencia de ejecución del modelo en todos los ciclos de simulación.

La información no tiene un interés particular a menos que desee comprender la secuencia de asignaciones en la ejecución del modelo o mejorar el rendimiento del modelo.

Si rastrea cómo se generan los valores para esas ocurrencias de ciclo delta +4, +5 y +9, aprenderá por qué hay tantos.

Un delta es un incremento de tiempo pequeño (infinitesimal) que se utiliza durante la simulación. El número indicado es el número de estos pasos de tiempo que se tomaron para resolver la sincronización de la señal. Puede suprimirlos con el interruptor -NODELTA en la línea de comando.

Esto le indica que la señal está cambiando después del evento de marca de tiempo principal. Para saber qué valor se presenta en el próximo tic de tiempo, se toma el último valor delta. Entonces, para el valor de 460 ns, toma 460 +5 como el valor justo antes del tic de tiempo de 470 ns.

Si desea saber qué actividad estaba ocurriendo justo después de 460 ns, mire los deltas.