Вы находитесь на странице: 1из 83

1

Tema II.
VHDL para sntesis Lgica y verificacin de Diseos.

Roberto Gutirrez Mazn

Tema II. VHDL para sntesis Lgica y verificacin de Diseos.


a. VHDL (recordatorio).

b. Restricciones en las descripciones. Sntesis Lgica c. Acondicionamiento entradas asncronas. d. Segmentacin (pipeline). e. Tipos de Simulacin. f. Lectura/escritura en Ficheros. g. Generacin de Estmulos.

Sistema Multimedia Automvil


3

Punto de Vista Diseador de Sistemas


4

? ? ?

+++ Potencia Hardware (DSP, uP,FPGAs)

Sistemas cada vez ms Complejos

Nuevas Metodologas de diseo

Metodologa Diseo Ideal


5

Software
Diseo Algoritmos Cdigo C/C++

Simulacin

Compilacin

!P

Arquitectura
Diseo Algoritmos Lenguaje Alto nivel

Independiente Tecnologa

Simulacin

Sntesis

FPGA

Hardware

Flujo de Diseo con VHDL


6

Independiente Register transfer level Tecnologa!

Gate-level netlist Mapping Packing Place-andRoute

RTL

Logic Synthesis

Logic Simulator

Logic Simulator

RTL functional verification

Gate-level functional verification

VHSIC Hardware Description Languaje


7

!! VHDL

permite realizar especificaciones textuales del Hardware utilizando una sintaxis similar a la de los lenguajes de programacin de alto nivel.

Caractersticas del lenguaje VHDL


8

!!

Permite la descripcin del Hardware con distintos niveles de abstraccin (algortmico, RTL, estructural, etc). Facilita la documentacin de las especificaciones y la verificacin formal de las mismas. Facilita la reutilizacin de las descripciones en distintos proyectos.

!!

!!

Estructura del Lenguaje VHDL


9

!!

!!

El modelado del hardware en VHDL se realiza mediante la elaboracin de unidades de cdigo. Existen cinco tipos distintos de unidades de cdigo:
!!

Unidades Primarias.
"! "! "!

Declaracin de Entidad. Declaracin de Paquete. Declaracin de Configuracin. Cuerpo de Arquitectura. Cuerpo de paquete.

!!

Unidades secundarias:
"! "!

!!

Cada unidad de cdigo esta orientada a una determinada funcin dentro de la elaboracin de un modelo VHDL.

Libreras
10

!!

Libreras ms utilizadas:
!! !! !!

work: librera de usuario. Donde se almacenan todos los diseos .vhd y ficheros auxiliares del compilador/simulador. Esta librera es visible por defecto. std: Librera de recursos disponible en VHDL. Dispone de declaraciones de tipos de datos, entrada/salida a ficheros, etc. Esta librera es visible por defecto. ieee: Define un nuevo tipo de dato multi-nivel.
"! "! "! "!

std_logic_1164: Define el tipo STD_LOGIC u STD_ULOGIC. std_logic_arith: Define los tipos SIGNED y UNSIGNED, operaciones aritmticas y de comparacin. Adems dispone de mltiples funciones de conversin de tipos. std_logic_signed: Define el tipo de datos STD_LOGIC_VECTOR y realiza las operaciones aritmticas CON SIGNO (Ca2). std_logic_unsigned: Define el tipo de datos STD_LOGIC_VECTOR y realiza las operaciones aritmticas SIN SIGNO.

Declaracin de Entidad
11 !! !!

La Declaracin de Entidad modela el interfaz de los dispositivos. Cumple funciones anlogas a las de los smbolos en los esquemas.
DECLARACION DE ENTIDAD: NOMBRE Y PUERTOS

NOMBRE

PUERTOS
OUT IN

Circuito

INOUT

BUFFER

Declaracin de Entidad
12

!!

Nombre del Dispositivo es una etiqueta de usuario que identifica el dispositivo hardware cuyo interfaz define.
cont8bits, mux21, men16K, etc

!!

Para cada puerto del dispositivo hay que definir:


!! !! !!

Su nombre: Etiqueta de usuario. Su direccionalidad: IN, OUT, INOUT o BUFFER. Su tipo de datos.

!!

!!

Los puertos de la declaracin de entidad son objetos de tipo SEAL. Adems, a diferencia de las seales normales, tienen direccionalidad.

Declaracin de Arquitectura
13 !!

Modelado del funcionamiento de los dispositivos: Los dispositivos se modelan como sistemas que realizan un procesamiento de la informacin. CUERPOS DE ARQUITECTURA

ENTRADAS

ALGORITMO DE PROCESAMIENTO

SALIDAS

Estilos de Descripcin del Hardware.


14

!!

Descripcin Estructural (netlist)


!! Equivalente

a un esquemtico.

Behavioral (Algoritmo)

Bucles Procesos RTL Booleano Puertas

!!

Descripcin de Ruta de Datos (Data-flow)


!! Descripcin

mixta funcin-

Funcional

estructura.
!!

Descripcin Comportamental
!! Descripcin

Estructural Switch

Algortmica.

15

Descripcin de un dispositivo en VHDL:


Declaracin de Entidad + Cuerpo de Arquitectura
ENTITY ADD IS !!..

ARCHITECTURE

Conceptos Bsicos
16

No se distingue entre maysculas y minsculas. !! Como en todos los lenguajes, tienen una serie de palabras reservadas, que tienen una funcin determinada y no se pueden usar para otros propsitos. !! Comentarios:
!!

hacen con un par de guiones -- !! Solo existen comentarios de una sola linea.
!! Se
-- Esto es un comentario -- Este es otro comentario.

!! A

veces contienen informacion para las herramientas CAD (pragmas). Ej:


-- pragma synthesis_on

Tipos de Datos
17

Cada objeto del lenguaje ha de pertenecer a uno de los tipos de datos permitidos. !! Existen tipos de datos predefinidas por el lenguaje y tipos de datos que pueden ser definidos por el usuario. !! VHDL es un lenguaje fuertemente tipado, por lo que toda asignacin se ha de hacer sobre un determinado tipo de datos. !! La conversin entre distintos tipos de datos no se hace de manera automtica, sino que hay que implementar funciones para hacer la conversin.
!!

Tipos de Datos
18

!!

Existen cuatro tipos de datos fundamentales en VHDL:


!! Escalares:

Son Objetos que solo pueden contener un nico valor en cada instante. !! Compuestos !! Ficheros !! Punteros

Tipos de Datos Pre-definidos VHDL


19

!!

El Lenguaje VHDL contiene una serie de tipos de datos pre-definidos, definidos en los standards IEEE 1076 e IEEE 1164.
!! !! !!

!!

Paquete standard de la librera std: Define los tipos de datos BIT, BOOLEAN, INTEGER y REAL. Paquete std_logic_1164 de la librera ieee: Define el tipo de datos STD_LOGIC y STD_ULOGIC. Paquete std_logic_arith de la librera ieee: Define el tipo de datos SIGNED y UNSIGNED. Adems define diferentes funciones de conversin de tipos. conv_integer(x), conv_unsigned(x,n), conv_std_log_vector(x,n), etc. Paquete std_logic_signed y std_logic_unsigned de la librera ieee: Define funciones que permiten operar con el tipo STD_LOGIC_VECTOR como si fuera un tipo de datos SIGNED y UNSIGNED. Define operaciones aritmticas, lgicas y funciones de conversin de datos.

20
!!

Tipos de Datos predefinidos (hardware)


STD_ULOGIC y STD_ULOGIC_VECTOR. Tipo de dato predefinido no resuelto, el cual puede tomar 9 valores lgicos. Este tipo de datos esta definido en el paquete std_logic_1164.
---------------------------------------------------------------- logic state system (unresolved) -------------------------------------------------------------type STD_ULOGIC is ( 'U', -- Uninitialized 'X', -- Forcing Unknown '0', -- Forcing 0 '1', -- Forcing 1 'Z', -- High Impedance 'W', -- Weak Unknown 'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't care ); -------------------------------------------------------------

!!

!!
!!

Este tipo de datos se puede utilizar para modelar drivers activos (puertas logicas Forcing 0/1), drivers resistivos (pull-up/pull-down weak 0/1) y Alta impedancia (Z). Es un tipo de datos no resuelto, los conflictos a nivel de asignacin no son resueltos automticamente.
type STD_ULOGIC_VECTOR is array (NATURAL range <>) of STD_ULOGIC;

Tipos de Datos predefinidos (hardware)


21
!! !!

STD_LOGIC y STD_LOGIC_VECTOR. Subtipo de dato predefinido a partir del tipo STD_ULOGIC. Este tipo de datos esta definido en el paquete std_logic_1164. Es un tipo de datos resuelto, los conflictos a nivel de asignacin son resueltos automticamente. nicamente utilizar a nivel de simulacin.
subtype STD_LOGIC is resolved STD_ULOGIC; subtype STD_LOGIC_VECTOR is (resolved) STD_ULOGIC_VECTOR;
-------------------------------------------------------------------- resolution function ------------------------------------------------------------------constant resolution_table : stdlogic_table := ( ----------------------------------------------------------| U X 0 1 Z W L H | | ---------------------------------------------------------('U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U'), -- | U | ('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'), -- | X | ('U', 'X', '0', 'X', '0', '0', '0', '0', 'X'), -- | 0 | ('U', 'X', 'X', '1', '1', '1', '1', '1', 'X'), -- | 1 | ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X'), -- | Z | ('U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X'), -- | W | ('U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X'), -- | L | ('U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X'), -- | H | ('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X') -- | - | );

Tipos de Datos (Compuestos)


22 !!

Tipos Compuestos Existen dos tipos de datos compuestos


!! !!

Arrays Registros

A diferencia de los tipos de datos escalares, los tipos de datos compuestos son aqullos que contienen varios tipos de datos mas pequeos. Los objetos que pertenezcan a tipos de datos compuestos pueden ser manejados globalmente o individualmente sobre cada uno de los datos menores que contenga. Un tipo de datos compuesto puede estar a su vez formado por otros datos tambin compuestos.

Tipos de Objetos
23 !!

!!

!!

!!

Un objeto es un contenedor de valores. En VHDL existen cuatro tipos distintos de objetos: constant (constantes), variable (variables), file (archivos) y signal (seales). Los tres primeros son similares a los Existentes en los HLLs; las seales son objetos que modelan nodos lgicos. Al igual que en los HLLs estructurados, antes de poder utilizar un objeto, es necesario declararlo. En la declaracin hay que indicar el tipo de objeto y el tipo de dato que puede contener el objeto.

Asignacin a seales
24 !!

Sintaxis: identificador <= expresin;

!!

Cuando se realiza la asignacin de una seal no se hace inmediatamente:


!! !!

Si se especifica un retardo, se realiza despus de pasado ese tiempo. Si no se incluye, se realiza despus de suspenderse el proceso.

!!

Una sentencia de asignacin de valor a seal PROYECTA una TRANSACCION sobre el valor de la seal. Si se realizan dos asignaciones sobre una misma seal en el mismo instante de tiempo la ultima es la que se proyecta, descartando las anteriores (diferente en asignaciones concurrentes).

!!

Asignacin a variables
25 !!

Sintaxis: identificador := expresin;

!!

!! !! !! !!

Cuando se realiza la asignacin de una variable, su valor cambia instantneamente y no se guarda informacin sobre los valores que dicha variable tuvo anteriormente. La expresin ha de devolver un valor del mismo tipo que el tipo de la variable sobre la que se realiza la asignacin. Las variables solo se utilizan en partes secunciales (procesos, funciones y procedimientos), y son locales. No se pueden incluir retardos en las asignaciones de variable. Ejemplo:
signal sig : integer; var := sig + 1; variable var : integer;

Modelado Concurrente Vs Modelado Secuencial


26 !!

Combinacional Vs Secuencial:
!!

!!

Concurrente Vs Secuencial
!!

Por definicin, la Lgica combinacional es aquella en la cual la salida nicamente del valor actual de las entradas.

El lenguaje VHDL es un lenguaje que permite el modelar un funcionamiento paralelo (concurrente). Utilizacin de instrucciones CONCURRENTES para el modelado de lgica combinacional. (WHEN,GENERATE;BLOCK, XOR, +,SLL,etc) Utilizacin de instrucciones secuenciales para el modelado de lgica SECUENCIAL. (PROCESS,FUNCTIONS,PROCEDURES).

!!

!!

Por otro lado, la lgica secuencial, es aquella que depende de valores anteriores.

!!

Sentencias concurrentes
27

!!

!! !!

!!

Las sentencias concurrentes se ejecutan continuamente, en contra de las sentencias secunciales que se ejecutan una despus de la otra. Se utilizan en los cuerpos de la arquitectura. Por lo tanto, da igual en que orden se pongan las sentencias concurrentes. De hecho no sabemos el orden va a ejecutar el simulador dichas sentencias concurrentes. Las sentencias concurrentes son:
-!Procesos -!Bloques -!Llamadas a procedimientos concurrentes -!Asignaciones de seal -!Instanciacin de componentes -!Sentencias generate

Sentencias concurrentes
28

WHEN
!!

WHEN/ELSE
asignacion WHEN condicion ELSE asignacion WHEN condicion ELSE ......;

mux_sal<= a WHEN sel=00 ELSE b WHEN sel=01 ELSE c WHEN sel=10 ELSE d;

!!

WITH/SELECT/WHEN
WITH identificador SELECT asignacion WHEN condicion ELSE asignacion WHEN condicion ELSE ......; WITH sel SELECT mux_sal <= a WHEN b WHEN c WHEN d WHEN 00, 01, 10, OTHERS;

Sentencias secuenciales
29

!!

!! !!

Procesos Un proceso contiene una serie de sentencias que se ejecutan secuencialmente. Se utilizan en descripciones RTL y comportamentales. Su sintaxis es la siguiente:
etiqueta: PROCESS (lista sensibilidad) [zona declaracin] VARIABLE nombre : tipo; BEGIN ...... instrucciones secuenciales ...... END PROCESS etiqueta;

Sentencias secuenciales
30

DECLARACIONES

Procesos

SENTENCIAS DE CONTROL IF, CASE

VARIABLES CONSTANTES

SENTENCIAS DE ASIGNACION A SEALES A VARIABLES

PROCESS BEGIN !! !! END PROCESS;

BUCLES FOR, WHILE, REPREAT, LOOP

Sentencias secuenciales
31

Sentencia if
!!

Los posibles formatos de la sentencia if son:

Sentencias secunciales
32

Sentencia case !! El formato de la sentencia CASE es:

Sentencias secunciales
33

Bucles
!!

Los posibles formatos de los bucles son:


BUCLES FOR Y WHILE BUCLE INFINITO

Sentencia exit salir del bucle. Sentencia return para pasar a la prxima iteracin.

34

Tema II. VHDL para sntesis Lgica y verificacin de Diseos.


a. VHDL (recordatorio).

b. Restricciones en las descripciones. Sntesis Lgica c. Acondicionamiento entradas asncronas. d. Segmentacin (pipeline). e. Tipos de Simulacin. f. Lectura/escritura en Ficheros. g. Generacin de Estmulos.

Restricciones en las descripciones VHDL


35

Independiente Register transfer level Tecnologa!

Gate-level netlist Mapping Packing Place-andRoute

RTL

Logic Synthesis

Logic Simulator

Logic Simulator

RTL functional verification

Gate-level functional verification

Restricciones en las descripciones VHDL


36

VHDL
HERRAMIENTAS SIMULACION SINTESIS

!Permite asegurar el funcionamiento de un circuito antes de la realizacin, en diferentes situaciones. !Acepta todas las caractersticas del lenguajes (ideal para especificar o prototipar). !Permite comprobar el funcionamiento en etapas posteriores al diseo.

!Genera un circuito Hardware con el funcionamiento especificado. !Soporta solo un subconjunto del lenguaje. !La calidad del resultado depende del estilo de descripcin. !Sntesis lgica y sntesis arquitectural.

Restricciones en las descripciones VHDL


37
!!

La sntesis lgica permite implementar automticamente circuitos digitales a partir de descripciones con lenguajes HDL. Los sintetizadores exigen que las descripciones estn realizadas con un determinado nivel de abstraccin, llamado RTL. En el nivel RTL hay que especificar explcitamente el comportamiento de la lgica combinacional, y las transiciones de la lgica secuencial. El comportamiento del sintetizador se puede controlar mediante atributos y restricciones.

Register transfer level

Gate-level netlist Mapping Logic Synthesis Packing Place-andRoute

RTL

!!

Logic Simulator

Logic Simulator

RTL functional verification

Gate-level functional verification

!!

Flujo Diseo HDL

!!

Modelo RTL

Restricciones en las descripciones VHDL


38

!!

!!

!!

!!

No todos los Sintetizadores permiten las misma construcciones. Consultar los manuales. Con un poco de experiencia con el sintetizador se pueden realizar descripciones que sean directamente sintetizables. Las Descripciones RTL son independientes de la tecnologa sobre la que se implementa el circuito. Las descripciones RTL solo describen la funcionalidad del circuito, con lo que no se incluye informacin sobre los retardos del circuito. Estos dependern de la tecnologa utilizada.

Restricciones en las descripciones VHDL


39 !!

!!

!!

!!

En las Descripciones RTL sintetizables se pueden utilizar tanto sentencias secuenciales como concurrentes. Cada asignacin de seal, proceso o instanciacin de componente hace que el sintetizador genere un bloque de lgica para ello. Cada seal o variable se implementa mediante un cable. El sintetizador es capaz de realizar distintos tipos de optimizaciones sobre el cdigo, dependiendo de las restricciones (constraints) y atributos que se apliquen en la sintesis.

Definicin de Constraints

Definicin de Atributos

Restricciones en las descripciones VHDL


40

!!

!!

!!

Los tipos de datos mas utilizados en sntesis son los de las libreras de Synopsis: std_logic, std_logic_vector, signed y unsigned. Tambin se utilizan los tipos bit y bit_vector, as como tipos de datos enumerados definidos por el usuario. El tipo de datos integer tambin se puede utilizar, pero se suele restringir el rango (sino se suelen utilizar 32 bits).

!!

Para el resto de tipos de datos debemos consultar el manual de sintetizador

Restricciones en las descripciones VHDL


41

Introduccin
!!

!!

!!

Los circuitos combinacionales son aquellos cuyas salida son una funcin del valor actual de las entradas. No tienen reloj ni guardan informacin sobre los estados anteriores. En VHDL se pueden implementar tanto con sentencias concurrentes (recomendable), como dentro de un proceso.

Restricciones en las descripciones VHDL


42

Sentencias concurrentes
!!

!!

!!

!!

La lgica combinacional se implementa mediante asignaciones de seal. Las asignaciones pueden ser directas, condicionales o de seleccin. No importa el orden en que se realicen las asignaciones, ya que son concurrentes. Si sobre una misma seal hay varias asignaciones, solo una de ellas ha de asignar un valor fuerte, el resto tienen que estar en alta impedancia.

Asignaciones seal

Restricciones en las descripciones VHDL


43

Asignacin condicional

Asignacin seleccin

Restricciones en las descripciones VHDL


44

Sentencias Secuenciales
!!

Se puede crear lgica combinacional en un proceso, pero dicho proceso ha de activarse cada vez que cambie alguna de las entradas de dicha lgica combinacional. En una seal combinacional hay que especificar su valor para todas las opciones. Si no se hace as, el sintetizador incluir un latch, para mantener su valor.

!!

Restricciones en las descripciones VHDL


45

Buffers Tri-estado
!!

Se suelen escribir en sentencias concurrentes:

!!

Los puertos de entrada/salida se implementan con buffers tri-estado:

Restricciones en las descripciones VHDL


46

Introduccin
!!

!!

!!

Los circuitos secuenciales son capaces de almacenar valores. Los flip-flops mantienen el valor de su salida hasta que se produce un determinado flanco en su entrada de reloj. Son activos por flanco. Los latches mantienen su valor mientras una de sus entradas tenga un nivel. Si esa entrada tiene otro nivel se comporta de modo transparente. Son activos por nivel.

Restricciones en las descripciones VHDL


47

Flip-flop D flanco subida latch D

Flip-flop D flanco subida y reset asncrono.

latch D y reset asncrono.

Restricciones en las descripciones VHDL


48

Modelado seal reloj.


!!

!!

!!

Las herramientas de sntesis generalmente no son capaces de realizar asignaciones en ambas transiciones de reloj. NO SINTESIS El atributo EVENT debe de estar relacionado con una condicin de test. NO SINTESIS Si una seal aparece en la lista de sensibilidad de un PROCESS, pero no es usada en l, la herramienta de sntesis la ignorar.

PROCESS(clk) BEGIN IF clkevent and clk=1 THEN COUNTER<=COUNTER + 1; ELSIF clkevent and clk=0 THEN COUNTER<=COUNTER - 1; END IF; END PROCESS; ----------------------------------------PROCESS(clk) BEGIN IF clkevent THEN COUNTER<=COUNTER + 1; END IF; END PROCESS; ----------------------------------------PROCESS(clk) BEGIN COUNTER<=COUNTER + 1; END PROCESS;

Restricciones en las descripciones VHDL


49

Las variables se actualizan inmediatamente. Las seales NO.

Restricciones en las descripciones VHDL


50

Restricciones en las descripciones VHDL


51

if-then-else

case

if SEL = 00 then Y elsif SEL = 01 then Y elsif SEL = 10 then Y else Y end if;

<= <= <= <=

A; B; C; D;

4:1 MUX
case SEL is when 00=> when 01=> when 10=> when others end case;
Y

2:1 MUX D C B SEL == 10

2:1 MUX

Y <= Y <= Y <= => Y

A; B; C; = D;

A B C D

00 01 10 11

2:1 MUX

A SEL == 01 SEL == 00

SEL

Restricciones en las descripciones VHDL


52 !!

!!

!!

!!

!!

NO cambiar el valor de una seal en dos procesos, porque depender su valor de qu proceso se ejecute antes. La herramienta de sntesis no sintetizar dicha descripcin. NO inicializar variables o seales en la propia declaracin (el sintetizador suele omitirlas). Hacerlo cuando se realice el reset. Las salida combinacionales no hace falta inicializarlas. Si a un objeto de tipo std_logic se le asigna el valor de X, el sintetizador interpretar que puede asignarle cualquier valor. La simulacin post sntesis diferir de la funcional. Si dentro de un proceso se hacen dos asignaciones sobre una misma seal en el mismo instante de tiempo, se programar la ultima asignacin. Ello permite asignar valores por defecto a las seales, evitando que se infieran latches. NO utilizar buffers tri-estado internamente, unicamenete en los bloques I/ O.

Restricciones en las descripciones VHDL


53

!!

!!

!!

Realizar un diseo sncrono disminuye riesgos de un posterior mal funcionamiento. Evitar asincronismos; tanto el reset como el reloj tienen que ser iguales para todos los registros. Si se quieren relojes de distinta frecuencia, se debern de generar internamente con divisores y aplicarlos en las entradas de habilitacin de los distintos bloques. Intentar evitar latches, ya que pueden producir problemas temporales y no todas las FPGAs disponen de ellos. UN SINTETIZADOR SOLO PERMITIR DESCRIPCIONES CUYO COMPORTAMIENTO SE PUEDA IMPLEMENTAR EN HARDWARE DIGITAL.

54

Tema II. VHDL para sntesis Lgica y verificacin de Diseos.


a. VHDL (recordatorio).

b. Restricciones en las descripciones. Sntesis Lgica c. Acondicionamiento entradas asncronas. d. Segmentacin (pipeline). e. Tipos de Simulacin. f. Lectura/escritura en Ficheros. g. Generacin de Estmulos.

Acondicionamiento entradas asncronas.


55

!!

Entradas Asncronas: Necesidad


!! !!

!!

Los sistemas digitales de todos los tipos deben tratar inevitablemente con seales de entrada asncronas con el reloj del sistema Las entradas asncronas son tpicamente solicitudes de servicio o flags de estatus. Tales entradas normalmente cambian en forma lenta comparada con la frecuencia del reloj del sistema y no necesitan reconocerse durante la pulsacin particular de reloj. Si una transicin se pierde en una pulsacin de reloj, siempre puede detectarse en la siguiente. Es esencial que las entradas asncronas sean sincronizadas en un solo lugar del sistema.

Acondicionamiento entradas asncronas.


56

!!

Circuito acondicionador

57

Tema II. VHDL para sntesis Lgica y verificacin de Diseos.


a. VHDL (recordatorio).

b. Restricciones en las descripciones. Sntesis Lgica c. Acondicionamiento entradas asncronas. d. Segmentacin (pipeline). e. Tipos de Simulacin. f. Lectura/escritura en Ficheros. g. Generacin de Estmulos.

Segmentacin (pipeline)
58

!!

Temporizacin
!!

En general las herramientas de anlisis temporal de los fabricantes de PLDs informan de que mrgenes disponemos a una determinada frecuencia "! Ms habitual es el anlisis sobre el margen de activacin. "! Lo suelen llamar Slack = tclk tffpd(max) tcomb(max) tsu tdesfase "! Si el slack es negativo el diseo no cumple las especificaciones temporales.

Segmentacin (pipeline)
59
!!

Segmentacin (pipeline).
!!

!!

!!

La segmentacin o pipeline es una estrategia de control para aumentar la velocidad de proceso de una determinada arquitectura digital. Consiste en introducir registros que permiten dividir el proceso en tramos cuya ejecucin se solapa en el tiempo. El tiempo de latencia es lo que tarda el pipeline en llenarse. Inconvenientes:
"!

Combinational Logic

Combinational Logic

Combinational Logic

Data In

etc.

Circuito sin segmentar

Registers

Combinational Logic

Registers

Combinational Logic

Registers

"! "!

El retardo de las distintas etapas no es similar, velocidad limitada a la del bloque mas pequeo. Debe estudiarse si el retardo de las etapas es comparable con el del registro. Si la secuencia con que llegan los datos no es regular se pierde velocidad.

Data In etc.

Clock

Circuito segmentado

Segmentacin (pipeline)
60

!!

Comparticin de recursos:
!!

if (B > C) then Y = A + B; else Y = A + C; end if;


Resource Sharing = ON Resource Sharing = OFF

!!

La comparticin de recursos es una tcnica de optimizacin que nos permite utilizar un nico bloque para implementar diferentes operadores. Si no compartimos operadores, cada bloque se realizar utilizando su propia lgica. Si compartimos operadores obtendremos una ocupacin de rea menor a costa de un rendimiento menor.

A A B C

+ +
Y B Y

+
C

>
Total LUTs = 32 Clock frequency = 87.7 MHz

>
Total LUTs = 64 Clock frequency = 133.3 MHz (+52% !)

61

Tema II. VHDL para sntesis Lgica y verificacin de Diseos.


a. VHDL (recordatorio).

b. Restricciones en las descripciones. Sntesis Lgica c. Acondicionamiento entradas asncronas. d. Segmentacin (pipeline). e. Tipos de Simulacin. TestBench f. Lectura/escritura en Ficheros. g. Generacin de Estmulos.

TestBench
62

Independiente Register transfer level Tecnologa!

Gate-level netlist Mapping Packing Place-andRoute

RTL

Logic Synthesis

Logic Simulator

Logic Simulator

RTL functional verification

Gate-level functional verification

TestBench
63

!! !!

Verificacin de un diseo por medio de simulaciones. Realizacin de un modelo testbench.


!! !! !!

Cuerpo de arquitectura que incluya una instancia del Dispositivo bajo test (DUT). Generacin de secuencias de valores para aplicarlos a las entradas. Monitorizar los valores obtenidos a la salida.
"! "!

Mediante la utilizacin de un simulador. Mediante un proceso que verifica el correcto funcionamiento.


Process Generacin estmulos entrada.

Design Under Test (DUT)

Verificacin salida

TestBench
64
!!

Hay cuatro tipos de TestBench:


!!

Tipo I Simulacin funcional manual. Los retardos internos del DUT no estn modelados y la salida es verificada manualmente (inspeccin visual del simulador). Tipo II Simulacin temporal Manual. Los retardos internos del DUT son tenidos en cuenta y la salida es verificada manualmente. Tipo III Simulacin automatizada funcional. Los retardos internos del DUT no estn modelados y la salida es verificada por el simulador comparando las salidas del DUT con un fichero o modelo ideal. Tipo IV Simulacin automatizada temporal. Los retardos internos del DUT son tenidos en cuenta y la salida es verificada por el simulador comparando las salidas del DUT con un fichero o modelo ideal. Tipo de simulacin ideal para la verificacin un dispositivo.

!!

!!

!!

TestBench
65

entity test_bench is end entity test_bench; architecture test_reg4 of test_bench is signal d0, d1, d2, d3, en, clk, q0, q1, q2, q3 : bit; begin dut : entity work.reg4(behav) port map ( d0, d1, d2, d3, en, clk, q0, q1, q2, q3 ); stimulus : process is begin d0 <= 1; d1 <= 1; d2 <= 1; d3 <= 1; wait for 20 ns; en <= 0; clk <= 0; wait for 20 ns; en <= 1; wait for 20 ns; clk <= 1; wait for 20 ns; d0 <= 0; d1 <= 0; d2 <= 0; d3 <= 0; wait for 20 ns; en <= 0; wait for 20 ns; ! wait; end process stimulus; end architecture test_reg4;

TestBench
66

Process Generacin Estmulos entrada

Design Under Test (DUT)

Process Comparacin salidas actuales vs. Salidas esperadas

Fichero Vectores test

Si/No Diseo Correcto/Incorrecto

TestBench
67 Architecture verif of test_bench is signal d0, d1, d2, d3, en, clk : bit; signal q0a, q1a, q2a, q3a, q0b, q1b, q2b, q3b : bit; begin dut_a : entity work.reg4(struct) Generacin estmulos port map ( d0, d1, d2, d3, en, clk, q0a, q1a, q2a, q3a ); dut_b : entity work.reg4(behav) port map ( d0, d1, d2, d3, en, clk, q0b, q1b, q2b, q3b ); stimulus : process is begin d0 <= 1; d1 <= 1; d2 <= 1; d3 <= 1; wait for 20 ns; en <= 0; clk <= 0; wait for 20 ns; en <= 1; wait for 20 ns; clk <= 1; wait for 20 ns; ! ! verify : process is wait; begin end process stimulus; wait for 10 ns; ... assert q0a = q0b and q1a = q1b and q2a = q2b and q3a = q3b report implementations have different outputs severity error; Verificacin Modelo wait on d0, d1, d2, d3, en, clk; end process verify; end architecture regression;

68

Tema II. VHDL para sntesis Lgica y verificacin de Diseos.


a. VHDL (recordatorio).

b. Restricciones en las descripciones. Sntesis Lgica c. Acondicionamiento entradas asncronas. d. Segmentacin (pipeline). e. Tipos de Simulacin. f. Lectura/escritura en Ficheros. g. Generacin de Estmulos.

Lectura/escritura en Fichero
69

Lectura/escritura en Fichero
70

!! !!

Los objetos de este tipo representan ficheros. La sintaxis de su declaracin es: type nombre_fichero is file of nombre_del_tipo; type VECTORES is file of bit_vector;

=> Ejemplo

!!

!!

Operaciones que pueden realizarse con un fichero: abrirlo, cerrarlo, leerlo, escribirlo o comprobar si se ha llegado al final del mismo Estas operaciones se realizan a travs de ciertos procedimientos y funciones que estn declarados implcitamente para el tipo fichero

Lectura/escritura en Fichero
71 !!

El paquete TEXTIO, que est incluido en la librera STD, contiene las declaraciones bsicas para trabajar con ficheros de texto En TEXTIO estn declarados los tipos: TEXT y LINE: type LINE is access string; type TEXT is file ft/'string;

!!

!!

Utilizando estos tipos se puede declarar un fichero de texto: file objeto fichero: TEXT is in/out "nombrefichero.extensin";

!!

Los datos en los ficheros de texto estn organizados en lneas. Cada lnea puede contener un nmero de elementos variable.

Lectura/escritura en Fichero
72
!!

!!

!!

Para leer los datos de un fichero de texto, primero hay que realizar una llamada al procedimiento READLINE, con el que se lee una lnea entera. Despus, hay que realizar un nmero de llamadas determinado al procedimiento READ para leer los elementos de la lnea La escritura de un fichero se realiza formando lneas con el procedimiento WRITE, y despus escribiendo la lnea entera en el fichero mediante el procedimiento WRITELINE Estos procedimientos estn declarados en el paquete TEXTIO para los tipos predefinidos en VHDL.

Lectura/escritura en Fichero
73 !!

=> Ejemplo: Lectura de fichero sincronizada con seal de reloj El fichero vectores.txt contiene los siguientes valores: 001 010 011 100

!!

Lectura/escritura en Fichero
74 !!

El paquete std_logic_textio contiene dichos procedimientos declarados para los tipos std_logic y std_logic_vector

!!

Lectura/escritura en Fichero
75 !!

=> Ejemplo: Lectura de datos de un fichero y conversin a formato serie El fichero datos.txt contiene los siguientes valores: 01010101 10101010 00110011 11001100 00001111 11110000

!!

!!

Formato de salida:

Lectura/escritura en Fichero
76

Lectura/escritura en Fichero
77 !!

=> Ejemplo: Entrada de fichero con elementos de distinto tipo en la misma lnea El fichero dif_datos.txt contiene los siguientes elementos: 00 0 CERO 01 1 UNO 10 2 DOS 11 3 TRES

!!

Lectura/escritura en Fichero
78 !!

Formas de onda resultantes de la simulacin del ejemplo:

!!

Durante la simulacin aparecen los siguientes mensajes en la consola:


Simulator is doing circuit initialization process. at 0 ns: Note: (/lectura_file/). Finished circuit initialization process. at 100.000 us: Note: CERO (/lectura_file/). at 200.000 us: Note: UNO (/lectura_file/). at 300.000 us: Note: DOS (/lectura_file/). at 400.000 us: Note: TRES (/lectura_file/).

Lectura/escritura en Fichero
79

Lectura/escritura en Fichero
80

Ejemplo: Banco de pruebas de un Full-Adder El fichero v_FA_in.txt contiene los siguientes valores: 000 001 010 011 100 101 110 111 Al ejecutar el banco de pruebas se obtiene el fichero v_FA_out.txt con el siguiente contenido:
Vector numero 1 : 000 ---> 00 Vector numero 2 : 001 ---> 01 Vector numero 3 : 010 ---> 01 Vector numero 4 : 011 ---> 10 Vector numero 5 : 100 ---> 01 Vector numero 6 : 001 ---> 10 Vector numero 7 : 110 ---> 10 Vector numero 8 : 111 ---> 11

81

Tema II. VHDL para sntesis Lgica y verificacin de Diseos.


a. VHDL (recordatorio).

b. Restricciones en las descripciones. Sntesis Lgica c. Acondicionamiento entradas asncronas. d. Segmentacin (pipeline). e. Tipos de Simulacin. f. Lectura/escritura en Ficheros. g. Generacin de Estmulos.

Generacin Estmulos
82 !!

La generacin de estmulos es una parte importante de los TestBench. Para ello el lenguaje VHDL dispone de una serie de instrucciones: AFTER, WAIT FOR, NOW, LAST_EVENT , etc. La instruccin NOW representa el tiempo de simulacin actual. Puede ser importante verificar eventos en tiempos particulares de simulacin.

!!

!!

El atributo objLAST_EVENT nos devuelve el tiempo transcurrido desde que se dio un evento en ese objeto.

!!

La sentencia wait for suspende la ejecucin hasta que transcurra un tiempo de simulacin igual al especificado.

Generacin Estmulos
83