Introducción al laboratorio: Uso del simulador Modelsim Diseño y Simulación de Circuitos Electrónicos por Asistido por Computador Ingeniería Técnica Industrial Electrónica DSEAC. Introducción al laboratorio: Uso del simulador Modelsim Modelsim es un software que administra un entorno que permite editar, compilar, simular y depurar diseños de sistemas digitales descritos en VHDL, Verilog y SystemC, aunque para la asignatura DSEAC solo se utilizará con VHDL. La siguiente figura representa el flujo de diseño con Modelsim: Crear una librería de trabajo Crear un proyecto Añadir archivos al proyecto Compilar diseño Ejecutar el simulador Depurar resultados Existen tres modos de operación: - Mediante procesos por lotes. - Línea de comandos (se trata de un entorno interactivo en modo texto, accesible desde el ‘prompt’ del sistema operativo con el comando vsim -c). - Ejecución basada en GUI (Graphic User Interface). Es el modo por defecto y el más habitual pues utiliza una interface amigable con el usuario. Es interactiva, maneja menús, ventanas, botones y líneas de comando (asumiremos que se conoce el manejo del sistema operativo Windows XP). Podemos acceder a Modelsim desde Inicio> Programas> Modelsim XE III 6.3c> Modelsim o ejecutando C:\Modeltech_xe_starter\win32xoem\modelsim.exe. Si se va a utilizar frecuentemente es interesante crear un Acceso Directo en el escritorio. 2 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim La pantalla inicial se muestra en la siguiente figura: Además de los elementos básicos de una ventana del sistema operativo Windows (menú, barra de herramientas y barra de estado), se distinguen dos zonas, una llamada Workspace (espacio de trabajo) en la que a través de unas pestañas tendremos acceso a diferentes bloques relacionados con un diseño: Project, Structure, Library, Sim, Files y Memories. La segunda zona (Transcript Session) se utiliza para dar órdenes de compilación, simulación, etc. en modo texto (aunque la mayoría de estos comandos se pueden ejecutar también desde el menú y barra de herramientas) y para mostrar los mensajes que nos proporciona el programa, como respuesta a nuestras acciones: resultados de una compilación, mensajes de error, etc. En primer lugar crearemos un proyecto, aunque no es necesario para realizar simulaciones, simplifica y automatiza el proceso de interacción con Modelsim. Un proyecto es una colección de archivos VHDL (o referencia a ellos), ficheros del tipo ‘README’ o con documentación relativa al diseño, librerías locales, referencias a librerías globales, configuraciones de simulación, etc. Los proyectos se albergan en un directorio raíz, en el que se encuentra un archivo con extensión mpf donde se almacena información relativa al estado de la sesión, opciones, orden de compilación, etc. Incluye también otro directorio para la biblioteca de diseño local llamada generalmente work y que posee unos atributos especiales. No es necesario declararla 3 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim explícitamente (library work) y es considerada por el compilador como destino por defecto de las unidades de diseño. Una biblioteca de diseño es un directorio donde se almacenan las unidades de diseño compiladas: entidades, arquitecturas, paquetes y configuraciones. Concretamente la información almacenada para cada unidad de diseño es su código ejecutable o relocalizable e información sobre dependencias o depuración. Además de la biblioteca local de trabajo a la que hemos hecho referencia anteriormente, existen bibliotecas de recursos. Estas se pueden utilizar desde las unidades VHDL que se están compilando (library/use), en ellas podremos encontrar declaraciones de tipos, constantes, funciones o unidades de diseño (componentes) de otros proyectos o proporcionadas por fabricantes, que podemos reutilizar. Puesto que el objetivo de esta primera práctica es sobre todo conocer el entorno de Modelsim, se ha seleccionado un circuito combinacional muy sencillo para introducir las posibilidades de simulación-verificación de un circuito digital. En la siguiente figura se presenta el circuito a modelar y simular: Al crear un proyecto Modelsim automáticamente crea una librería de trabajo asignándole el nombre work salvo que se indique lo contrario. Podemos crear un diseño con el nombre primero en el directorio c:\fpga\tutorial, A través de File>New>Project Tras pulsar OK, desde la ventana que se muestra a la izquierda indicaremos el tipo de acción a realizar. 4 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim Cretate New File: añade un fichero nuevo al proyecto. El tipo de fichero puede ser de texto, tcl, verilog, SystemC o VHDL, etc. Add Existing File: incorpora un fichero que está creado, se puede trabajar con una copia o haciendo referencia al mismo. Create Simulation: con esta opción podremos indicar ficheros fuente y opciones de simulación. Create New Folder: si organizaremos los archivos del proyecto en diversas carpetas. Desde Create New File, introduciremos mediante el editor tres ficheros VHDL: puertas.vhd, circuito.vhd y testbench.vhd. En el primer archivo especificaremos las entidades-arquitecturas de sendas puertas nand, or y xor de dos entradas, con un tiempo de propagación seleccionable a través de un genérico. Combinacional.vhd modelará el circuito anterior mediante una descripción estructural y otra funcional. Por último en testbench.vhd escribiremos los vectores de test para todos los valores posibles de las entradas, que nos permitirá la comprobación del funcionamiento del circuito durante la simulación, en la que se comparará el resultado del modelo estructural con el del modelo funcional. Cada vez que se crea un archivo VHDL, aparece una línea con esa entrada en la pestaña ‘Project’, de la zona Workspace en la ventana principal, que naturalmente no tiene todavía ningún código. Al hacer doble-click sobre el aparecerá el editor. Este reconoce las palabras reservadas del VHDL y las resalta mediante un color específico, esta característica será muy útil a la hora de comprobar errores de transcripción. El uso del editor es sencillo, con las funcionalidades típicas de un programa de este tipo en Windows (teclas de edición, cortar, copiar, pegar, etc.), a las que hay que añadir otras específicas orientadas a la compilación y simulación. 5 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim Cuando la descripción esté completa se grabará y se compilará, hay varias formas de hacerlo: - desde el menú principal: opción Compile - con click-derecha en la ventana Workspace o - desde la barra de herramientas de la ventana principal y Compilar Compilar todo de edición: Click-derecha En el menú desplegable Compile o desde del menú contextual se pueden encontrar otras opciones: compilar todos los archivos del proyecto (Compile All), solo los seleccionados (Compile Selected) o únicamente los que hayan sido modificados (Compile Out of Date). El Orden de compilación 6 Compilación correcta Sin compilar Compilación con errores orden de compilación es importante, en primer lugar se han de procesarse los archivos a DSEAC. Introducción al laboratorio: Uso del simulador Modelsim cuyas unidades se hará referencia en los diseños que se compilarán después. El orden se establece a medida que se van añadiendo archivos al proyecto, aunque este se pude cambiar mediante la opción Compile Order. Se pueden obtener detalles de la compilación mediante Compile Report y Compile Summary. Las opciones de compilación se pueden indicar en Compile Propierties. El resultado de la compilación se muestra en la ventana de Tanscript, si se producen errores o avisos, además se indicará la línea del código fuente implicada y la posible causa. Con doble-click abriremos el editor en el que la línea de código correspondiente estará resaltada (desde el menú Source>More>Clear Highlights, con la ventana de edición el texto seleccionada, volverá a su aspecto normal), cuando solventemos el error, antes de volver a compilar debemos salvar. La figura superior muestra el resultado de la opción Compile All, en la que la que solo se produce un error en puertas.vhd, debido a que falta un ‘;’ al final de la línea 9. Aunque hemos utilizado el Interface Gráfico de Usuario (GUI), en la ventana Transcript podemos observar la orden en línea de comandos equivalente: vcom -work work -2002 -explicit C:/fpga/tutorial/puertas.vhd 7 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim Cuando no exista ningún error de compilación estaremos en disposición de simular el diseño: Simulate>Star Simulation…: Tendremos que indicar entonces en la ventana de simulación, que entidad-arquitectura (en la figura se muestran las que actualmente incluye la biblioteca work) es verificar. la que queremos También podremos indicar la resolución del tiempo de simulación. Desde View>Wave activaremos la ventana donde podremos mostrar los resultados de la simulación para las señales seleccionadas. Podremos elegir las señales a simular desde la pestaña Sim de la ventana Workspace, mediante la opción Add>Add to Wave del menú contextual correspondiente a cada señal o grupo de señales: 8 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim Para obtener mayor claridad en la simulación, se pueden arrastrar las señales a la posición deseada dentro del panel izquierdo de la ventana Wave y agruparlas mediante ‘divisores’ tal y como muestra la siguiente figura La Simulación se iniciará desde el menú Simulate o su correspondiente acceso en las barras de herramientas: 9 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim Para analizar los resultados con precisión se pueden utilizar cursores, situarse en eventos de las señales y realizar ‘zooms’ sobre la ventana Wave. 10 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim ANEXO A continuación se lista un ejemplo de código para los archivos puertas.vhd, combinacional.vhd y testbench.vhd: 11 DSEAC. Introducción al laboratorio: Uso del simulador Modelsim 12