Sei sulla pagina 1di 8

BLOQUE 5. Verificacin de sistemas digitales.

1. Introduccin:
- El Flujo de Diseo de una FPGA es:

- La verificacin de un diseo mediante simulacin se basa en inyectar unos estmulos sobre el circuito a verificar y observar la evolucin de ste. - Al contrario que ocurre con un simulador de puertas, se puede emplear cdigo VHDL para realizar estas operaciones.

2. BANCOS DE PRUEBAS:
- Un testbench o banco de prueba es un mdulo VHDL en el que se instancia el componente a verificar (DUT) y contiene cdigo para: Inyectar los estmulos sobre el modelo a verificar. Observar los resultados obtenidos e informar al usuario. - Los testbench no se sintetizan. - Se utilizan descripciones algortmicas para aprovechar toda la potencia de VHDL. =>Estructura del banco de pruebas. - El testbench no tiene puertos. - Los estmulos se aplican sobre las seales de conexin al DUT. Hay un proceso principal con el que se controla la simulacin Generacin de estmulos. Observacin de seales. - Los estmulos sencillos se pueden aplicar con asignaciones concurrentes.
entity testbench is end testbench; architecture sim of testbench is DECLARACIN DEL COMPONENTE CONFIGURACIN DEL COMPONENTE SEALES DE CONEXIN AL DUT begin INSTANTACIN DEL COMPONENTE PROCESO PRINCIPAL DE CONTROL end sim; 1

=> Generacin de estmulos. - Para cada entrada del DUT se declara una seal en la arquitectura: Dicha seal se conecta al puerto homnimo de entrada. Sobre dicha seal se generan los estmulos con una determinada temporizacin. - Estas seales se pueden generar empleando: Asignaciones concurrentes de seal. Poco flexibles. Asignaciones secuenciales en el proceso principal Fcil de modelar como secuencia de operaciones en un proceso. 1- Uso de asignaciones concurrentes de seal. - Son poco flexibles. - Difcil modelar la interrelacin temporal entre seales. - Por estos motivos slo se suelen emplear en casos sencillos: Seales peridicas, p.e. Clk. Seales autnomas, p.e. Rst. - Siempre hay una forma alternativa de modelarlo con un proceso. 2- Uso de asignaciones secuenciales en el proceso principal - Se dispone de un proceso principal con el que se controla la evolucin conjunta de las seales de forma secuencial. Gran flexibilidad: Empleo de bucles, subprogramas, etc. - Formato ms sencillo: Se describe la secuencia de valores que toman las seales mediante pares: Aplicacin de estmulos: seal <= valor; Espera hasta la siguiente conmutacin: wait for <tiempo>; - El hecho de poder emplear descripciones algortmicas permite abordar situaciones ms complejas: Sentencias condicionales: Introduccin de estmulos dependiendo de la evolucin del circuito analizado. Bucles: pruebas exhaustivas. Procedimientos. Situaciones repetitivas de cierta complejidad.

Resto y ejemplillo o no

=> Observacin de seales. - Tpicamente para verificar un diseo mediante simulacin se representan los cronogramas de las seales de inters en la pantalla del simulador. - Es posible emplear sentencias de cdigo VHDL para comprobar distintas situaciones en el diseo. Sentencia report: Produce mensajes de texto en la consola del simulador. Sentencia assert: Comprueba situaciones permitiendo controlar la simulacin - Podemos seguir las pautas de verificacin indicadas en el estndar de sntesis RTL (IEEE 1076.6): Aplicar estmulos al DUT. Esperar desaparicin de transitorios: sentencia wait for. Comprobar resultados obtenidos: sentencia assert. Repetir el proceso. Sentencia assert. - Se emplea para comprobar condiciones y generar informes en funcin de su cumplimiento. - Se utiliza tanto en estructuras concurrentes como secuenciales. - Utilidades: - Permiten mostrar informacin durante la simulacin: - Comprobar las violaciones de tiempos en los circuitos. - S la condicin_booleana no se cumple se enva la expresin_del_informe. - El nivel de severidad: note, warning, error, failure (error por defecto) - Segn el grado de severidad se puede interrumpir la simulacin. - S no se usa report el mensage es Assertion violation - Sintaxis:
assert condicin_booleana report[expresin del informe][severity valor]; C <= A after t_delay when (S='0') else B after t_delay; assert (S='0' or S='1') report Valor desconocido en S" severity error;

Sentencia report. - Slo se utiliza en estructuras secuenciales. - Por defecto el valor de severidad es note. [etiqueta:] report expresin [ severity expresin ] - Sentencia null: - Se utiliza para indicar que no se debe realizar ninguna accin - Sintaxis. [ label:] null

=> Tratamiento de Ficheros: - El empleo de ficheros es una herramienta muy potente en simulacin: Ficheros de entrada: Para almacenamiento de vectores de test a aplicar al diseo. Ficheros de salida: Para almacenar los resultados de la simulacin para un anlisis a posteriori o como vectores de test de otro diseo. - Facilita el enlace con otras herramientas de diseo capaces de procesar informacin almacenada en ficheros de texto (Matlab)

- Los ficheros se emplean para almacenar informacin en el ordenador de la simulacin. Por defecto los ficheros se almacenan en formato binario. - Si se desea almacenar en formato texto es preciso emplear el paquete textio de la librera estndar. - Para utilizar un fichero en VHDL es preciso: - Definir el tipo del fichero: Define el tipo de datos que se almacenan en el objeto. - Declarar el objeto fichero. Las operaciones (apertura, lectura, etc) se realizan especificando el indentificador con que se declara el objeto. La forma de realizar estas operaciones difiere en VHDL 87 y 93. Slo se comentar la versin VHDL 93. => Versin 93 - Definicin del tipo de fichero segn VHDL 93: - Identificador: Es el nombre del tipo del fichero, el cual se emplear cuando se declare el fichero. - Tipo_objetos: Es el tipo de datos que se almacenarn en el fichero. Slo se permiten escalar, registro o array restringido. type identificador is file of tipo_objetos - Declaracin del objeto fichero segn VHDL 93. - Identificador: Handler del fichero. - Tipo_fichero: Tipo previamente definido que indica el tipo de datos a almacenar. - tipo_acceso: puede ser: read_mode: Lectura write_mode: Escritura append_mode. - nombre: Expresin de tipo string correspondiente al nombre fsico del fichero. file identificador: tipo_fichero [open tipo_acceso] is nombre;

- Al declarar el tipo fichero se declaran implcitamente las siguientes operaciones:

=> Paquete Textio: - El paquete textio de la librera standard contiene tipos fichero y subprogramas para gestionar ficheros de texto con formato. - El tipo fichero definido en textio es TEXT. - Ejemplo de declaracin de un fichero. use std.textio.all;
file estimulos: text open READ_MODE is "signalin.txt";

- Las operaciones de lectura o escritura se realizan a travs de un buffer intermedio de tipo LINE. Se trata de un puntero a una cadena de caracteres STRING.
type LINE is access STRING; type TEXT is file of STRING - El fichero de texto se estructura en lneas delimitadas por CR. - Los procedimientos read( ) y write( ) leen/escriben cadenas de texto formateadas en el buffer. - Los procedimientos readline( ) y writeline( ) leen/escriben el texto del buffer desde/hacia el fichero de texto: - Los procedimientos read( ) y write( ) admiten los siguientes tipos de datos (sobrecarga de operadores):

- Ejemplo:

Simulacin de Diseos con FPGA: - El flujo de diseo de una FPGA es:

- Un modelo VHDL para FPGAs puede contener: - Descripciones VHDL sintetizables. - Componentes propios de la tecnologa destino. - Componentes de la librera genrica del sintetizador. - Componentes COREGEN. - Cores proporcionados por terceras partes. - En el caso de incluir componentes se debe disponer de los modelos de stos. - Xilinx proporciona las siguientes libreras: - UNISIM SIMPRIM COREGEN. - El contenido de estas libreras se hace visible intercalndolas entre pragmas de control de desactivacin/activacin de la sntesis. - Se debe utilizar el mismo testbench para las tres simulaciones: - Simulacin RTL - Simulacin post-sntesis (Pre-implementacin) - Simulacin Post-implementacin - En el modelo que genera las herramientas de implementacin (Xilinx). - La entidad utiliza el nombre de la entidad de mayor nivel jerrquico que se ha sintetizado. - La arquitectura siempre recibe el nombre STRUCTURE. - Pueden aparecer componentes adicionales asociados a GSR y/o GTS. - En cada simulacin se emplea una configuracin para seleccionar la arquitectura a simular, evitando tocar el resto de ficheros fuente.

=> Modelo de componentes externos - En un sistema tpico la FPGA se conecta a dispositivos externos con los que interacta. - En algunos casos puede ser preciso crear el modelo de comportamiento de dicho componente - Se trata de un modelo de comportamiento (no sintetizable). - Carta blanca para emplear cualquier tipo de construccin VHDL. - Dicho modelo debe cubrir: - Aspectos funcionales. - Aspectos temporales. - En el modelado temporal aparecen: Retardos: OUT <= IN after 10 ns; Comprobacin de tiempos mnimos: setup, hold, periodo mnimo. - Los simuladores permiten crear modelos descritos en C lo que facilita el modelado de sistemas heterogneos (SW+HW). => Modelsim: FLI. EJEMPLO