Cómo acelerar la simulación de Modelsim

¿Cómo puedo hacer que Modelsim funcione más rápido para la simulación en lugar de algo en el rango de picosegundos (intervalo de tiempo)? ¿Existen otros métodos para acelerar la simulación? Se necesitan 45 minutos para llegar a 1 ms a partir de ahora. Quiero que la simulación se ejecute durante 20 ms para verificar ciertos contadores, módulos de temporizador y eventos. El reloj del sistema funciona a 50 MHz.

Y si hay una opción, habrá algún inconveniente. Por ejemplo, faltan eventos, etc.?

El enfoque principal es la prueba unitaria: si desea probar un contador, pruébelo de forma aislada. En el momento en que esté ejecutando 20 ms de funcionamiento completo del sistema, debería tener un alto grado de confianza de que no necesitará ejecutar la prueba mucho más de una vez.
@BrianDrummond Sí, ya lo he hecho. Y hay contadores que también dependen de otros contadores. Además, los eventos se desencadenan en intervalos de tiempo específicos que deben probarse.
¿Cuántas señales estás registrando en la ventana de onda? ¿Su diseño incluye código que no es necesariamente relevante para la prueba particular que está ejecutando? Por ejemplo, es posible que a una prueba de UART no le importe realmente lo que está haciendo una interfaz esclava SPI.
Alrededor de 50 señales. Los eventos de disparo y temporizador suman alrededor de 32 señales. Solo tengo el código requerido en ejecución. Tengo un banco de pruebas separado con los módulos requeridos.
Parece un diseño relativamente pequeño, por lo que estoy muy sorprendido por esta velocidad de simulación. ¿Qué versión de ModelSim es y qué procesador/RAM tienes? ¿Estás ejecutando en una máquina virtual?
¿Está utilizando una versión completa de ModelSim Altera Edition (AE)? La Starter Edition (ASE) no tiene optimización.
Desafortunadamente, es una edición de inicio. Y las señales son hasta 50 después de eliminar las señales no deseadas para la prueba. Su Modelsim Altera Starter Edition 10.4b.
¿Cuánto vale su tiempo? Actualizar a una versión "no para principiantes" de Modelsim probablemente le dará una mejora de 10 veces... ¿O puede probar GHDL?
El límite de resolución (IEEE 1076-2008 5.2.4 tipos físicos predefinidos) no causa una simulación más lenta. No 'ejecuta' cada paso de tiempo, los eventos están programados. El tiempo de simulación avanza al siguiente evento programado (14.7.5 Ejecución del modelo). La simulación lenta proviene de la cantidad de eventos (velocidad del reloj) frente a la duración, el tamaño del modelo, el rendimiento de la plataforma host y puede ser intencional (Modelsim-Altera Starter Edition: la versión paga es un 33 por ciento más rápida ) . Utilice un reloj más lento siempre que sea posible.

Respuestas (5)

Este es un problema muy común para todos los desarrolladores de FPGA. Estos son mis consejos (probablemente haya muchos otros).

Primero, puede decidir ver solo algunas señales, de modo que el cálculo se ejecute más rápido. Solo necesita separar su diseño en módulos más pequeños (o solo mirar un proceso tras otro).

O puede definir diferentes constantes para la simulación como esta:

CONSTANT MY_CONSTANT : integer := 50; -- for simu
--CONSTANT MY_CONSTANT : integer := 500; -- for real

Hacer esto para cada contador realmente puede hacerte ahorrar tiempo.

Y finalmente, obviamente, también puedes acelerar el tuyo clock.

Sí. Estoy usando solo constantes para los contadores. Tal vez sí, acelerar el reloj debería ayudar.
Reducir el valor de sus constantes acelerará la simulación sin cambiar el comportamiento
Inicialice las constantes con una función que contenga lo siguiente: -- pragma translate_off <return> return 50;<return> --pragma translate_on <return> return 500;en lugar de comentar las cosas... (disculpe el formato en los comentarios. La síntesis ignorará el valor de la simulación.
Dudo que 'acelerar el reloj' sirva de algo. Estas simulaciones generalmente están impulsadas por eventos, donde la frecuencia del reloj es completamente arbitraria, solo el número de flancos.

Asegúrese de que su escala de tiempo y precisión de tiempo se establezcan adecuadamente para su diseño. Si el reloj del sistema es de 50 Mhz, no necesita una resolución de 1ps. Al reducir la precisión del tiempo, el simulador evaluará menos eventos y debería ayudar a la velocidad de la simulación.

Para Verilog, use la directiva de escala de tiempo:

`timescale 1ns/100ps 

El primer argumento es la escala de tiempo; se utilizará como unidad cuando se utilicen retrasos como #10. El segundo argumento es la precisión de tiempo.

Para un diseño de 50 Mhz donde esa es la frecuencia más alta que necesita simular, 1ns/100ps sería apropiado.

Para VHDL, no recuerdo cómo se controla esto, y si es una construcción de lenguaje o una herramienta específica. Pero se mantiene el mismo concepto.

¿Es lo mismo que cambiar la resolución de la escala de tiempo en Modelsim? Por ejemplo vsim -t 1ns ?

Dependiendo de su instalación, la resolución de su simulador puede ser de picosegundos por defecto. Verifique su modelsim.iniy busque la Resolutionvariable debajo del [vsim]encabezado.

Alternativamente, puede forzar la resolución en la línea de comando. Estás muy cerca de tu ejemplo. La sintaxis es vsim -t nspara resolución de nanosegundos.

Tenga en cuenta que Verilog timescalees muy diferente en VHDL. Dado que timees una unidad en VHDL, la naturaleza de la referencia de tiempo timescaleno es significativa (todos wait for ...tienen un tiempo explícito, no implícito como el de Verilog #). El parámetro de resolución para Modelsim es más análogo a la precisión en timescale, pero redondeado a la precisión más pequeña. Entonces, si usa un Verilog timescaleque sugirió dwikle, Modelsim usará una resolución de picosegundos.

Ahora, si su ciclo de reloj es de 50 MHz, necesitará al menos una precisión de nanosegundos.

Solo vengo aquí para ver el problema de la velocidad de simulación. Simplemente deshabilité la visualización de errores en la sección Trascript durante la simulación, y se hizo mucho más rápido. solo inténtalo

¿Puede elaborar, agregar algunos detalles como cómo puede deshabilitar la visualización de los errores? Y por favor use puntuación, las oraciones comienzan con mayúscula, etc.

En caso de que alguien vea esto nuevamente, deshabilitar los mensajes yendo a Simular> Opciones de tiempo de ejecución> Gravedad del mensaje y marcando todas las casillas en "No mostrar mensaje para" aceleró la simulación sustancialmente para mí. Creo que enviar el texto a la terminal tomó mucho tiempo.