Mostrando entradas con la etiqueta post place and route. Mostrar todas las entradas
Mostrando entradas con la etiqueta post place and route. Mostrar todas las entradas

martes, 6 de junio de 2017

Guía de Codificación para Diseños y Proyectos VHDL-FPGA

Basado en mis años de experiencia profesional y educativa les presento un documento de lineamientos generales tanto para la codificación en VHDL como para la partición de un proyecto de un sistema complejo, pasando por clocking, sintesis, nombres, FSM hasta test bench. Es un documento extenso, a pesar de que lo he resumido a los puntos mas importantes, pero siempre útil al momento de comenzar un nuevo proyecto, o como referencia para la codificación en HDL (VHDL o Verilog)/FPGA.

Link al documento es el siguiente. .....   ; )   ......

Se reciben sugerencias en caso que alguno de Uds. tengan alguna 'guia' que haya omitido.

PD: por ahora esta versión está en inglés, si recibo suficientes pedidos, la pasaré al español....

martes, 14 de mayo de 2013

ModelSim-Quartus: "Failed to find INSTANCE '/NA'"

Introducción

Como bien es sabido los mensajes de error dados por la herramientas que comúnmente usamos son bastantes encriptados, y por ende no fácil de darnos cuenta cual es el origen del mismo. Uno de estos casos es este mensaje generado por ModelSim cuando tratamos de ejecutar una 'gate level simulation", ya sea automáticamente desde Quartus o desde el mismo ModelSim:



Veremos en esta entrada del blog como se soluciona este error. 


Descripción


La simulación a nivel de compuertas, gate level simulation (también conocida como post-place and route simulation) es un paso importante para asegurarnos que el sistema implementado en el FPGA cumple satisfactoriamente los requerimientos de tiempo después de colocar (place) y rutear (route) la logica de nuestro sistema en el FPGA. Para ejecutar la simulación a nivel de compuertas, es necesario generar un archivo de simulación (netlist) con todos los retardos (logics y de ruteo) y simular el sistema con ese archivo (netlist).
Quartus tiene una manera de configurar la simulación a ejecutar de un modo bastante detallado. Para la simulación a nivel RTL el procedimiento fue explicado en este blog anteriormente.  
Para ejecutar la simulación a nivel de compuerta (gate level simulation) Quartus genera a partir del .vhd a simular y de la información provista por la herramienta de place & route (especialmente con los retardos, delays, incorporados) un archivo con extensión .sdo, (standard delay output,  usualmente llamado standard delay format, .sdf), que contiene toda la información de los delays lógicos y de ruteo, y un archivo .vho, que contiene toda la información del conexionado del sistema a implementar en el FPGA. Ambos archivos contienen todo lo necesario para llevar a cabo la simulación a nivel de compuerta. Para los que les interese pueden abrir los archivos generados en el directorio: 

.../tu_proyecto/simulation/modelsim/nombre_top_entity_.vho
.../tu_proyecto/simulation/modelsim/nombre_top_entity_.sdo

Pasos a Seguir

Si has intentado correr la simulación a nivel de compuertas es porque ya tienes el respectivo test bench escrito. Solo falta decirle a Quartus por medio de lo Altera llama NativeLink que el dispositivo bajo test esta identificado con el nombre de la instancia en el test becnh. 
Para configurar el proceso de correr automáticamente en ModelSim la simulación a nivel de compuertas llevá a cabo los siguientes pasos. 
1- Ir a Assignments -> Settings
2- La ventana de 'Settings' se abrirá. Seleccioná 'Simulation'.
3- Dentro de la ventana de 'Simulation', hace click en el cuadrado de 'Run gate-level simulation automatically after compilation'. 
La siguiente figura muestra los pasos 2 y 3. 



4- En la misma ventana 'Simulation', y en la parte inferior done dice 'Compile test bench', simple click en 'Test Bench'. 
5- La ventana 'Test Benches' se abrirá. Simple click en 'Edit'.



6- Ahora deberá aparecer la ventana titulada 'Edit Test Bench Settings'; mostrando el nombre del test bench que será usado en la simulación. En esta ventana seleccione 'Use test bench to perform VHDL timing simulation'. Y en la parte donde dice 'Design instance name in test bench' debes escribir el nombre de la instancia del componente en el test bench. Por ejemplo en el test bench tengo la siguiente instrucción de instanciación de componente: 



En el caso que estoy detallando, yo use U1 como nombre de la instancia. 
Hay que ser muy cuidadoso de verificar cual es el nombre de la instancia y escribirlo en "Design instance name in test bench". 


7- Click Ok. y cerrar cualquier otra ventana que haya quedado abierta. 
8- Ya puedes efectuar una simulación a nivel de compuertas usando


Nota 1: por favor acordate después de ejecutar una simulación a nivel de compuertas de borrar el archivo vsim.wlf generado por ModelSim, porque es inmensamente grande.
Nota 2: agradezco la inquietud de mis alumnos Mario Ruiz, y Germán González en este post. 
Nota 3: como podrán ver en el calendario me borre por unos meses.... bueno.. anduve haciendo otros trabajos no tan lindos como codificar en VHDL e implementar en FPGA..... así es q estoy muy contento de poder volver a mi temática favorita!!

martes, 14 de diciembre de 2010

Slack Positivo/Negativo ?

Slack = Tiempo Requerido - Tiempo de Arribo

Donde:

Tiempo Requerido: usualmente el periodo del reloj
Tiempo de Arribo: tiempo que tarda una señal en llegar a cierto punto.

Un Slack positivo de un valor n, significa que el tiempo de arribo al nodo en cuestión puede ser incrementado por n sin afectar el retardo general del circuito. Si todos los Slacks del reporte son positivos, de 10 !!!!
Contrariamente, un Slack negativo implica que el path es demasiado lento, y deberá ser 'acelerado' si se desea que el diseño trabaje a la frecuencia deseada. Si hay algun Slack negativo, mmmmm a trabajar... primero encontrar la razon (investigar el timing path presentado por el Post P&R Timing report), y después ver como se puede solucionar (pipelining, etc)

El valor del Slack es presentado por el post-P&R Timing Report. Generalmente el reporte ordena los Slacks de menor valor, comenzando con los valores negativos si hay, a los Slacks de mayor valor. La cantidad de información presentada depende del seteo de la herramienta. Por lo general, por defecto se muestran los primeros 5 o 10 paths con menor Slack, pero esta cantidad de paths a presentar es configurable por el usuario. Por ejemplo en ISE 12, seleccione Implement Design->Place & Route -> Generate Post_place & Route Static Timing. Presione botón derecho del mouse, y seleccione Properties. 'Number of Paths in Error/Verbose Report' es la propiedad a cambiar para seleccionar la cantidad de paths a ser mostrados durante el timing report.