Está en la página 1de 23

Práctica I – Introducción ISE.

Place & Route

Practica I – Introducción a la Herramienta Xilinx ISE.

El termino “flujo de diseño” describe el proceso completo que se debe seguir para
llevar un proyecto desde la definición de especificaciones hasta el resultado final.
Aun cuando nuestra responsabilidad se limite a una parte de este flujo, es
indispensable conocerlo en su totalidad para prever los problemas que puedan
aparecer en otras fases.

En general lo que diferencia a los distintos flujos de diseño empleados para


un mismo fin, son las distintas herramientas que se usan en cada fase, así como los
distintos puntos de entrada y salida de dichas herramientas. Para estas prácticas se
han escogido las herramientas Xilinx ISE. Xilinx ISE en si constituye un flujo de
diseño completo formado por muchas herramientas distintas integradas, sin embargo
carece de flexibilidad y potencia que proporciona un simulador de lenguajes HDL,
sobre todo porque este nos permite la creación de entidades de test para verificación
Pre-síntesis y Post-implementación. En la figura 1 se puede observar el flujo de
diseño propuesto.

Ilustración 1 - Flujo de Diseño HDL

1
Práctica I – Introducción ISE. Place & Route

1. Descripción del diseño


En la presente práctica se va a hacer un recorrido por el flujo de diseño antes
descrito, empleando para ello un proyecto de complejidad moderada pero con el que
se tenga la oportunidad de hacer uso del mayor numero de herramientas y recursos.
Se va a desarrollar un circuito que encienda/apague un LED (LD0) a una velocidad
de un segundo. Está velocidad se podrá modificar mediante la utilización de los
Switch SW3:SW0.

2. Creación de un proyecto en Xilinx ISE


El “Project Navigator” es la herramienta integradora de ISE. Constituye un entorno
de trabajo desde el que se puede llamar a todas las utilidades. El espacio de trabajo
esta dividido en tres ventanas: La inferior donde se muestran mensajes de texto sobre
el funcionamiento y dos superiores donde se muestran los ficheros fuente del
proyecto con sus librerías y el flujo de diseño ISE. A medida que se vaya avanzando
en el desarrollo del proyecto, en las dos ventanas superiores se hará accesible más
información sobre los resultados de la síntesis, la implementación en el dispositivo,
etc.…. Se tratara en detalle en puntos posteriores.

Ilustración 2 - Flujo diseño ISE

2
Práctica I – Introducción ISE. Place & Route

Ilustración 3 - Ventana principal ISE

Dentro del menú file existe la opción de creación de un proyecto nuevo. Después de
seleccionarla se nos preguntara que tipo de proyecto queremos crear: Top level
module type: > HDL. Se escoja uno u otro siempre tendremos la opción de incluir
ficheros fuente de todo tipo.

Ilustración 4 – Selección Tipo fichero

Pulsando sobre el icono siguiente accederemos a la ventana en la que indicamos con


que dispositivo vamos a trabajar, en nuestro caso será con la FPGA Xilinx Spartan
3XC3SS200 y pulsaremos sobre el icono para seguir con el proceso de creación del
proyecto.

3
Práctica I – Introducción ISE. Place & Route

Ilustración 5 – Selección dispositivo


En la siguiente ventana procederemos a la creación de nuestros ficheros fuente, si no
lo tenemos ya creado. Pulsaremos New Source y nos aparecerá una ventana con
todos los tipos de ficheros fuente que podemos realizar. En nuestro caso
seleccionaremos VHDL Module y le daremos un nombre, aceptamos y nos saldrá
una ventana donde podemos realizar la descripción de nuestra Entidad.

Ilustración 6 – Creación Módulo VHDL

4
Práctica I – Introducción ISE. Place & Route

En esta ventana definimos los puertos de entrada y salida, una vez especificados
todos los puertos, procederemos a pulsar Siguiente con lo que accederemos a nuestra
ultima ventana, en la que procederemos a confirmar todos nuestros datos. Con estos
pasos ya tenemos creada una parte de nuestro fichero fuente. Si nos queremos crear
nuevos ficheros fuente pulsaremos en el icono siguiente para acceder a la ventana
Add Existing Sources, en ella añadiremos ficheros VHDL ya creados. Si no
tenemos añadir ningún fichero VHDL existente a nuestro proyecto pulsaremos en
siguiente y pasaremos a una ventana en la que finalizaremos el proceso de creación
del proyecto.

Ilustración 7 – Sumario Proyecto

Nuestro siguiente paso será terminar de confeccionar nuestro fichero VHDL con
la declaración de Arquitectura. Para confeccionar nuestro fichero VHDL
disponemos editor de textos, el cual es capaz de reconocer las palabras clave
reservadas, señalándolas en rojo, los tipos de datos reconocidos aparecen en gris
y los comentarios en verde.

• El editor lleva incorporado un chequeador de sintaxis ( Check Syntax )


en el menú síntesis. Esta herramienta comprueba además la coherencia
entre los tipos de datos y otros errores de construcción muy comunes.

5
Práctica I – Introducción ISE. Place & Route

Ilustración 8 - Ventana edición VHDL

Ilustración 9 – Código y chequeo de sintaxis.

6
Práctica I – Introducción ISE. Place & Route

• Otra herramienta muy útil es el Language Templates, en el que se nos


abre una ventana con información sobre como declarar determinados
tipos de entidades, información sobre el lenguaje, ejemplos de
descripciones estructuras que podemos utilizar para síntesis, etc.

Ilustración 10 - Ventana Lenguaje Template

Terminada la introducción del código HDL y después de haber comprobado la


sintaxis, se explicará la estructura de ficheros fuente HDL dentro del “Project
Navigator”, así como las diferentes opciones para comenzar la síntesis.

2.1. Inclusión de componentes de librería y generados con


herramientas auxiliares

• Componentes de librería

En función de la FPGA escogida en la creación del proyecto o durante el


proceso de síntesis lógica, el Project Navigator incluye la librería de
componentes propia de cada dispositivo. Dicha librería consta de un set
completo de puertas lógicas. Diversos tipos de flip-flops, componentes de
memoria, componentes digitales básicos y además incluye recursos
propios del dispositivo escogido, es decir, buffers, osciladores internos,
multiplicadores, componentes relacionados con la programación, etc.

• Herramientas de generación de componentes prefabricados

ISE posee una herramienta auxiliar que permite incorporar a nuestro


diseño componentes prefabricados. Estos componentes poseen algunos

7
Práctica I – Introducción ISE. Place & Route

parámetros configurables, por ejemplo, en el caso de una memoria


podremos elegir la profundidad de la memoria, así como la anchura de
palabra de datos.

Esta herramienta se llama Core Generador. Esta herramienta es muy


potente y esta en constante evolución, sirve de soporte para lo que se han
denominado I.P. Cores (Cores de propiedad intelectual). Estos cores
desarrollados por terceros, tienen gran complejidad y en ocasiones son
sistemas completos por si mismos (µC, etc), que podemos comprar e
incluir en nuestros diseños.

Ilustración 11 - Ventana Core Generator


Los componentes generados con estas herramientas son algo más que
código HDL sintetizable o previamente sinteticazo. Poseen (en ocasiones,
es opcional) información sobre su emplazamiento y rutado en el
dispositivo, lo que se conoce como bloques RPM (relational placement
modules). Es decir estos bloques son linkados directamente en la fase de
implementación y “se supone” que están optimizados al máximo. El
modo de utilización de las dos herramientas es muy similar. Veremos la
utilización de estas herramientas en practicas posteriores.

3. Simulación HDL con ISE Simulator.


Aunque la simulación HDL previa a la síntesis podría ser un paso prescindible en
proyectos de pequeña envergadura, resulta necesario cuando la complejidad del
mismo provoca que el proceso de síntesis sea costoso y por lo tanto no susceptible de
emplear el “método de prueba y error”. Además usando la simulación HDL
disfrutamos de muchas ventajas, como por ejemplo la posibilidad de crear entidades
de test y por lo tanto utilizar ficheros externos de entrada y salida de datos, sin

8
Práctica I – Introducción ISE. Place & Route

mencionar el ahorro de tiempo, ya que un simulador de alto nivel es varias veces más
rápido que un simulador EDIF (netlist).

3.1. Creación de un fichero testbench


El proceso de creación de un testbench es el paso principal para la
verificación de un modelo VHDL.

• En la ventana de sources, seleccionamos el proyecto y con el botón


derecho seleccionamos un nuevo fichero (New source) e indicamos que
queremos un fichero VHDL Testbench. Pulsamos en next y lo asociamos
a la entidad a simular. De esta manera el asistente nos declarará todas las
señales/instanciaciones necesarias para la realización del fichero
testbench.

Ilustración 12 – Creación fichero testbench.

• A continuación visualizaremos los ficheros necesarios para la realización


de la simulación mediante la selección en la ventana sources:

9
Práctica I – Introducción ISE. Place & Route

Ilustración 13 – Selección Flujo diseño

• Por ultimo, definiremos los estímulos necesarios para verificar el correcto


funcionamiento de la entidad. Ya solo quedará comprobar la sintaxis y
realizar la simulación.

Ilustración 14 – Estímulos testbench

A continuación podemos ver los resultados de simular el proyecto HDL del


diseño propuesto empleando el testbench mostrado a continuación:

10
Práctica I – Introducción ISE. Place & Route

Ilustración 15 – Simulador

4. Síntesis lógica
El proceso de síntesis es uno de los más importantes del flujo de diseño. El
sintetizador se encarga de traducir el código HDL a puertas lógicas. El conocimiento
del funcionamiento del sintetizador, así como su control, nos permitirá sacarle todo
el partido y mejorar las características de los diseños. Nosotros utilizaremos el
sintetizador que esta incluido en la herramienta Xilinx ISE, aunque también se
pueden utilizar otros sintetizadores como LeonardoSpectrum, FPGA Express,
Precision RTL, etc.

Lo primero que tenemos que hacer es arrancar el Project Navigator e irnos en


la ventana Process View la opción de síntesis, una vez seleccionado realizaremos
doble clic y procederemos a la síntesis del fichero VHDL. Recordad que debemos de
volver a seleccionar la opción Implementation en la opción Sources for:

Ilustración 16 – Síntesis XST

11
Práctica I – Introducción ISE. Place & Route

Si una vez seleccionada la opción de síntesis pulsamos sobre el botón derecho


accederemos a las opciones de síntesis:

Ilustración 17 – Configuración propiedades síntesis


En vez dentro de las opciones de síntesis tenemos tres pestañas,
seleccionando una u otra, iremos seleccionando las distintas opciones, este paso es
muy importante ya que una buena configuración de nuestro sintetizador, nos puede
dar muy buenos resultados.

Ilustración 18 – Opciones síntesis


En primer lugar podemos optimizar el funcionamiento para ahorrar área o
para mejorar la velocidad. En este último caso el sintetizador puede replicar
hardware para acelerar el diseño, de ahí que en ocasiones aumente
considerablemente el área del mismo. La opción más aconsejable es la optimización
por velocidad. El nivel de esfuerzo (efford level) determinara la cantidad de tiempo
que la herramienta va a emplear en el proceso. Es recomendable invertir un mayor
esfuerzo en la síntesis lógica que en el emplazamiento y rutado, ya que siempre es
preferible obtener un buen diseño a nivel lógico donde las mejoras en
funcionamiento serán siempre superiores a las que podamos obtener por introducir
adecuadamente el diseño en la FPGA seleccionada. Las demás opciones las
dejaremos por defecto.

12
Práctica I – Introducción ISE. Place & Route

Ilustración 19 - Opciones síntesis (y2)


Seleccionando HDL Options, la única opción reseñable es como codificar las
Maquinas de Estado, FSM Encoding Algorithm, pulsando sobre el icono vemos
todos los tipos de codificación, a continuación se comentan varios tipos de
codificación de maquinas de estado:

• Auto: En la codificación automática el sintetizador varía el tipo de


codificación dependiendo del ancho de los bits. Por ejemplo, para tipos
enumerados y algunos elementos como enteros son codificados como
Binarios. Tipos enumerados grandes son codificados OneHot, etc.
• Binary: Generación de maquinas de estado con el menor numero de flip-
flops posibles. Este tipo de codificación para los diseños en los que el
tamaño del diseño es critico y las temporizaciones no son importantes.
• Gray: Generación de maquinas de estado en los que solo un flip-flop
cambia de estado cuando ocurre una transición de estado. Este tipo de
codificación se utiliza para reducir el riesgo de glitches.
• OneHot: Generación de maquinas de estado en las que cada estado
contiene un solo flip-flop. Con este tipo de codificación se obtiene el
mejor rendimiento y unos retardos bastante pequeños. Las
implementaciones usando codificación OneHot usan más área que las
Binarias.

13
Práctica I – Introducción ISE. Place & Route

Ilustración 20 - Opciones síntesis (y3)


En esta última ventana tenemos opciones específicas para los dispositivos de
Xilinx, dejaremos todas las opciones por defecto, para terminar pulsaremos Aceptar.
Si no ha habido ningún error podemos ver la implementación de nuestro circuito
mediante la opción View RTL Schematic:

Ilustración 21 – Resultado Síntesis RTL.

o mediante la opción View Technology Schematic ( primitivas de síntesis):

Ilustración 22 – Resultado Síntesis Primitivas Xilinx.

14
Práctica I – Introducción ISE. Place & Route

Ilustración 23 – Resultado Síntesis.

5. Introducción de Constraints
En este apartado se va a describir como introducir constraits por medio de una
utilidad Create Timing Constraints, con esta herramienta elegiremos tanto
constraints temporales, como la asignación de nuestras señales a pines de la FPGA.
La influencia de estos constraints en el funcionamiento del sintetizador es muy
relativa, sin embargo si que pueden exportarse para su posterior uso en al fase de
implementación, evitando así el uso de la complicada herramienta Constraints
editor. Para ello una vez sintetizado nuestro circuito pincharemos en el siguiente
programa, dentro del menú User Constraints, para ello realizaremos doble clic sobre
Create Timing Constraints y comenzaremos nuestra definición.

Ilustración 24 – Creación Fichero Constraints.

15
Práctica I – Introducción ISE. Place & Route

Antes de comenzar con la definición de constraints, tendremos que crear un archivo


donde almacenaremos nuestros datos, para ello iremos al menú Project > New
Source y seleccionaremos Implementation Constraints File, le daremos un nombre
y aceptaremos.

Ilustración 25
Ya podemos empezar con la definición de Constraints, para ello disponemos de
cuatro apartados:

1. Definición de reloj o relojes de diseño. Tanto la herramienta de síntesis como


el analizador de tiempo están perfectamente preparados para trabajar con
varios relojes y lo que es más importante con varia fases de reloj1. En esta
ventana se definen los relojes. Si hacemos doble click en la opción period
podemos definir un constraint para el reloj.

1
Se desaconseja el uso de más de un reloj, para respetar las reglas de diseño síncrono, aunque puede
ser interesante en diseños complejos y de gran tamaño el empleo de varias fases de un mismo reloj.

16
Práctica I – Introducción ISE. Place & Route

Ilustración 26 – Asignación de Constraints temporales

Ilustración 27 – Asignación de Constraints temporales de reloj

2. La ventana dedicada a los ports consiste es una tabla en la que podemos ver
todas las características de los mismos. En la primera columna tenemos todos
los ports de entrada y salida del diseño. En la columna de direcciones se
especifica (automáticamente) la dirección de los ports. Las dos columnas
siguientes presentan características temporales que nuestro diseño debe
cumplir con respecto al exterior del dispositivo, considerando una filosofía

17
Práctica I – Introducción ISE. Place & Route

síncrona de un único flanco activo de reloj en todo el entorno ( la PCB por


ejemplo).

Ilustración 28 – Constraints temporales puertos I/O


Las otras dos ventanas son para controlar opciones más complejas, por lo que
normalmente las dejaremos por defecto.

3. Lo siguiente que tendremos que realizar será la asignación de pines. Hay que
indicar a la herramienta cada puerto de la entidad a que pin físico
corresponde, para ello daremos doble click en la acción Floorplan IO-
Presynthesis. Dentro de la columna LOC en la ventana I/O pins podremos
los pines que vayamos a utilizar.

Ilustración 29 – Constraints puertos I/O

18
Práctica I – Introducción ISE. Place & Route

6. El proceso de implementación

Ilustración 30 -Flujo Diseño implementación FPGA

Una vez se ha finalizado la síntesis lógica, el siguiente paso consiste en mapear el


Netlist de puertas lógicas en la estructura de la FPGA, es decir, en los CLBs. Estos
bloques están formados por una LUT, que es una pequeña RAM estática para
implementar funciones lógicas, FF-D, recursos de rutado y buffers.

Ilustración 31 – Place & Route

19
Práctica I – Introducción ISE. Place & Route

A la salida del mapeado obtenemos un fichero .NCD, que junto con el fichero de
constraints, que es el mismo que el introducido en la síntesis, se llevan a la fase
siguiente, Place And Route. En la fase PAR, nuestro diseño traducido a CLBs se
emplaza y ruta automáticamente siguiendo los constraints. Al finalizar, obtenemos
un fichero .NCD, reanotado con la posición de cada CLB y cada recurso de la Fuga.
Con este fichero, ya se puede generar un fichero .BIT, mediante el programa
Generate Programming File dentro del visor de procesos, que será el que se graba
en la memoria de configuración de la FPGA.

En varios puntos del flujo de implementación disponemos de herramientas accesorias


para poder intervenir manualmente. Dos de las más utilizadas son el FPGA Editor y
el Floorplanner:

• El FPGA Editor nos permite programar la FPGA manualmente, es decir,


introducir la configuración de cada CLB, emplear los recursos especiales de
la Fuga y rutar todo el diseño. Se usa en situaciones muy especiales, donde la
síntesis lógica no es valida o donde la frecuencia de funcionamiento es un
factor critico.
• El Floorplanner permite realizar un emplazamiento manual, del diseño ya
mapeado. Se emplea bastante a menudo, por ejemplo para separar
adecuadamente aquellos bloques del diseño que tienen una temporización
interna critica, o simplemente para mejorar el lo posible los resultados
temporales del procedimiento automático de emplazado. Para diseños HDL,
la herramienta de Floorplanner recupera perfectamente la jerarquía, lo que
sumado a una fiel representación grafica de la FPGA, facilita mucho su
empleo.

Conviene destacar que por defecto el proceso de implementación funciona en Auto


Run, es decir haciendo doble clic sobre Implement Design comenzará el proceso de
mapeado y PAR automáticamente. Si pulsamos con el botón derecho del ratón
accederemos a las opciones, lo único a reseñar es la ventana PAR Properties

Ilustración 32 – Propiedades Place & Route

20
Práctica I – Introducción ISE. Place & Route

La primera opción y mas importante es el tiempo (effort) que queremos que la


herramienta emplee en el proceso de emplazado y rutado. En ocasiones puede llegar
a durar horas, y por lo tanto conveniente realizar algunas pruebas previas para
detectar errores con niveles inferiores de esfuerzo.

7. Opciones de configuración
Estas opciones hacen referencia a la generación del bit-stream, con el que se
configura la FPGA a través de una memoria externa, o bien descargándolo
directamente desde otro dispositivo (PC, etc). Para ello realizaremos doble clic sobre
Generate Programming File y crearemos el fichero .BIT, ya solo nos quedara
mandar este fiche mediante una utilidad de la placa de pruebas a la FPGA y ya
tendremos nuestro circuito funcionando.

Ilustración 33 – Generación Fichero Configuración.

Ya solo nos quedará configurar la FPGA con el fichero de configuración generado


para ello pulsamos doble click en la opción Configure Target Device y dejamos
todo por defecto pulsando Finish. Asignaremos el fichero de configuración al
dispositivo Xc2S200 y finalmente programaremos la FPGA.

21
Práctica I – Introducción ISE. Place & Route

Ilustración 34 – Configuración comunicación Placa de Pruebas.

Ilustración 35 – Asignación FPGA fichero Configuración.

Ilustración 36 – Configuración FPGA Programa generado.

22
Práctica I – Introducción ISE. Place & Route

Ilustración 37 – Funcionamiento FPGA Programa generado.

23

También podría gustarte