Você está na página 1de 65

Curso de doctorado

Diseo y modelado digital con VHDL y sntesis lgica


Universidad de Zaragoza
Dpto. Ing. Electrnica y Comunicaciones Area de Tecnologa Electrnica

Luis Angel Barragn


barragan@posta.unizar.es

Jos Ignacio Artigas


jiartigas@posta.unizar.es

Diciembre 1.997

DESCRIPCION DEL DISEO TEMA 1: PROCESO DE DISEO DE SISTEMAS DIGITALES


t t

Desde la especificacin de un diseo hasta su fabricacin, el diseo pasa a travs de un conjunto de etapas: Las distintas etapas utilizan distintos niveles de abstraccin
Las etapas iniciales son ms abstractas A medida que se avanza en el diseo se aumenta el nivel de detalle de la implementacin y de la tecnologa

Descripcin del diseo Representaciones de diseo Niveles de abstraccin Proceso de diseo Pasos del proceso de diseo Herramientas CAD de diseo Metodologa tpica de diseo

t t

Para cada nivel de abstraccin, el diseo puede ser descrito utilizando distintas representaciones de diseo. En algunas tareas el diseador cuenta con la ayuda de herramientas CAD
DETALLE

Especificacin del Diseo


ABSTRACCION

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Proceso de diseo de sistemas digitales - 1

Representaciones de diseo
t

Niveles de abstraccin. Granularidad


t

Las distintas representaciones difieren en el tipo de informacin que se destaca Comportamental Especifica el comportamiento del sistema en funcin de los valores de entrada Estructural El sistema se describe como un conjunto de componentes y sus conexiones La funcionalidad no se da explcitamente Fsica Especifica las dimensiones y situacin de cada componente y las conexiones contenidas en la descripcin estructural

Los distintos niveles de abstraccin difieren en el tipo de objeto (grano) que utilizan como componentes bsicos en la descripcin del diseo Nivel de transistor: transistores, resistencias, condensadores. Nivel lgico: puertas lgicas y FFs. Nivel de registro: unidades funcionales y de almacenamiento (sumadores, registros, contadores, pilas). Nivel de procesador: procesador, memoria, controlador, interfaz, ASIC.

t t

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Proceso de diseo de sistemas digitales - 2

U nid. funcio nales C o ntado res M acroceldas P ilas

R epr esenta ciones vs. N iveles de A b str a ccin

M dulos U nidades

F ISIC A

PC Bs M CM s

C elda dig ital

PROCESO DE DISEO
t

C O M P O R T A M E N T A L E ST R U C T U R A L

P rocesador A SI C , M em oria C o ntroladores

T ransistores R , C onexi ones

P uertas FFs

El proceso de diseo evoluciona desde la especificacin del circuito electrnico hasta su fabricacin Existen diferentes alternativas
ESPECIFICACION

E c. difere nciales V ( t) , I (t)

T ransfe re ncias entre reg istros

E c. Booleanas M EF

P ro gram as A lg oritm os

Una Metodologa de Diseo est constituida por: Conjunto de tareas especficas realizadas en el proceso de diseo Orden en el que dichas tareas han de ser ejecutadas Herramientas CAD utilizadas en la realizacin de cada tarea

P R O C E SA D O R

R E P R E SE N T / N IV E L

Universidad de Zaragoza, IEC.

D ISP O SI T IV O

R E G IST R O

L O G IC O

Luis A. Barragn y Jos I. Artigas

Proceso de diseo de sistemas digitales - 3

F ISIC A

Metodologa top-down
Especificacin

C O M P O R T A M E N T A L E ST R U C T U R A L

P r oceso de D iseo

Validacin

Sntesis

Biblioteca de componentes

Validacin

Diseo Fsico

P R O C E SA D O R

R E P R E SE N T / N IV E L

D I SP O SI T IV O

Test

R E G I ST R O

Fabricacin

Universidad de Zaragoza, IEC.

L O G IC O

Luis A. Barragn y Jos I. Artigas

Proceso de diseo de sistemas digitales - 4

Especificacin del sistema


t

E str uctur a F ull-C ustom

Guiados por las especificaciones del diseo (velocidad, rea, tamao de la serie,...), el diseador debe seleccionar: Tipo de implementacin Fabricante Herramientas de diseo (EDA)
C.I. estndar C.I. estndar Microprocesador Microprocesador

Data path

I/O

Programable Programable

Semi-custom

Full-custom

PLD

FPGA

Gate Array

Standard Cell

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Pads

SSI/MSI

LSI/VLSI

ASIC ASIC

Proceso de diseo de sistemas digitales - 5

RAM

ADC

Universidad de Zaragoza, IEC. Luis A. Barragn y Jos I. Artigas Proceso de diseo de sistemas digitales - 6

E str uctur a Standar d C ell


Pads Cells Feedthrough

C ell L ibrary
A C D B

I/O FUNCTIONAL BLOCK Vdd Vss

Routing channels

E str uctur a A r r ay de P uer tas


C ada C I est parcialm ente prefabricado , inc o rpo ra un g ran nmero de puertas idnticas q ue se dispo nen en una matriz bidimensional re g ular
Pads Gates

Routing

Universidad de Zaragoza, IEC. Luis A. Barragn y Jos I. Artigas Proceso de diseo de sistemas digitales - 7

E str uctur a b sica d e F P G A

P r o gr am m able Inter co n nect

I/O B locks (IOB s )

C onf igur able L og ic B lock s (C L B s )

C ompa r acin entr e tipos d e implementacin


Full-custom C ell Size V ari able S ta ndar d cell F ix ed H eig ht G a te A r r ay F ix ed F PG A F i xed

C ell T ype

V ari able

V ariable

F ix ed

P ro g ram .

C ell Placem ent

V ariable

in row

F ix ed

F ix ed

I nter connections

V ari able

V ariable

V ari abl e

P ro g ram .

D esig n C ost

H igh

M edium

M edi um

L ow

C omp ar acin entr e tipos de implementa cin

N ing una

G rande

FPG A

B aja

Sntesis
t

G ate A r r ay

M oderada

Standar d cell

P eq uea a M oderada

A lta a M ediana

T odas

C apas de R outing

M ediana

Sntesis: conversin de una descripcin comportamental en una estructural, en la que cada bloque es un componente de la biblioteca elegida

Tareas de sntesis

F ull-custom

Sntesis de la arquitectura

P eq uea

T odas

A lta

V elocida d

Sntesis Lgica

Universidad de Zaragoza, IEC.

C apa s a F ab r icar
Luis A. Barragn y Jos I. Artigas

A r ea

Proceso de diseo de sistemas digitales - 8

HERRAMIENTAS CAD
t

Herramientas de Modelado
t

Clasificacin Modelado
Captura de Esquemas HDL

Captura de esquemas: Permite seleccionar componentes de men e interconectarlos


Esquemticos

Sntesis
Sntesis de Alto Nivel (Comportamental) Sntesis Lgica Generadores de Macroceldas
t

Modela representaciones estructurales HDLs. Caractersticas: Permite la captura de representaciones estructurales Adems, modela representaciones comportamentales Esquemticos y HDLs deben ser utilizados de forma conjunta La interconexin entre componentes se captura mejor grficamente La funcionalidad de un controlador se captura mejor con HDL, utilizando instrucciones if-then-else

Simulacin
Funcional A nivel de transistor

Ubicacin e interconexionado (P&R)


Reglas de diseo (DRC) Extraccin del circuito (LVS)

Test
Generacin de vectores de test Cobertura de fallos

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Proceso de diseo de sistemas digitales - 9

Herramientas de Modelado
t

Herramientas de Sntesis
t

Ambito de utilizacin de HDLs: Eficiente Poco eficiente


COMPORT. ESTRUCT. Diag. Bloques FISICA

La sntesis lgica es el proceso de convertir una descripcin HDL en un netlist de puertas de una tecnologa dada Permite: Transformar descripciones de MEF en puertas y biestables Transformar expresiones booleanas en puertas Minimizar nmero de puertas, retardos de propagacin, rea y/o consumo Ventajas: Reduce el ciclo de diseo Permite modelar un diseo en HDL de forma independiente de la tecnologa y posteriormente sintetizarlo para distintas tecnologas

PROCESADOR REGISTRO LOGICO DISPOSITIVO

CIF, EDIF EDIF

HDLs ms utilizados:
VHDL Origen Dominio Parecido a IEEE estndar Pblico ADA Verilog Cadence Pblico C, Pascal
t

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Proceso de diseo de sistemas digitales - 10

Herramientas de sntesis lgica


Compaa Nombre del Producto Max-Plus-4 (AHDL, VHDL) Synergy (VHDL, Verilog) Warp II, III (VHDL) Autologic (VHDL) Design Compiler (VHDL, Verilog) ViewSynthesis (VHDL, Verilog) Nivel de Sntesis RTL, MEF Tipo de Circuitos CPLD

METODOLOGIA TPICA DE DISEO


Especificaciones Castellano

Altera

Cadence

RTL, MEF Test RTL, MEF

ASIC FPGA PLD FPGA ASIC FPGA ASIC FPGA ASIC FPGA

Diseo de la arquitectura

Cypress

Especificacin RTL

Descripcin HDL

Mentor Graphics Synopsys

RTL, MEF Test, Datapath RTL, MEF Test RTL, MEF Test

Diseo Lgico Especificacin a nivel de celdas prediseadas Diseo Fsico

Netlist de puertas

Viewlogic

Layout
Manual Automatizado

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Proceso de diseo de sistemas digitales - 11

Metodologa tpica de diseo


Especificacin Funcional del Diseo Diagrama de Bloques

Anlisis Temporal

Simulacin Funcional del VHDL

Sntesis Lgica

Sntesis del test / ATPG

Simulacin a nivel de Puertas

Netlist de Puertas

Universidad de Zaragoza, IEC.

Cobertura de test Insuficiente

Pre-sntesis

Codificacin VHDL

Luis A. Barragn y Jos I. Artigas

Proceso de diseo de sistemas digitales - 12

INTRODUCCION TEMA 2: LENGUAJE VHDL


t t t t t t t t t t t

Breve historia Caractersticas de VHDL Codificacin orientada al hardware Objetivos del tema

Introduccin Conceptos bsicos Organizacin del diseo Descripcin de la arquitectura Modelo de tiempos Descripcin de circuitos digitales Simulacin

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 1

Breve historia
t

Caractersticas de VHDL (1)


t

Qu significa VHDL? VHDL = VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuits Inicialmente, documentacin de diseos y creacin de modelos de simulacin de hardware para el DoD (1981). Estndar IEEE Portabilidad 1987, se aprob el lenguaje estndar IEEE 1076-1987 1992, cada 5 aos se revisa el proceso de estandarizacin, IEEE 1076-1992 Permite descripcin de hardware digital: Puertas lgicas Sistemas complejos (SPARC)

Permite diseos modulares y jerrquicos. Soporta distintas metodologas de diseo: Arriba-abajo Abajo-arriba Mixto Soporta varias tcnicas de modelado digital: Descripcin algortmica Ecuaciones booleanas Mquinas de Estados Finitos (MEFs) Soporta temporizacin: Sncrona Asncrona Es un lenguaje concurrente, aunque permite definir dominios en los que las acciones se suceden en orden secuencial

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 2

Caractersticas de VHDL (2)


t t

Codificacin orientada al hardware


t

Soporta tipos abstractos de datos. Permite simular el diseo y generar formas de onda Entornos de test (test benchs). Soporta distintos niveles de descripcin: Comportamental RTL Lgico A partir de un modelo en HDL se puede sintetizar hardware a nivel de puertas con herramientas especiales de sntesis Independencia de la tecnologa.

Codificar pensando en puertas y FFs, no en variables y funciones!! Disear circuitos sncronos Un nico reloj y flanco (si es posible). Codificar en HDL no nos preserva de problemas hardware: glitches, violacin de restricciones temporales tsu, th. Evitar: Bucles combinacionales. Buffers triestado. Latches (usar slo FFs). Set, Reset asncronos. Relojes condicionales (Gated-clock). Comentar el cdigo fuente Reutilizacin

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 3

Objetivos del tema


t

CONCEPTOS BASICOS
t t t

Enmarcar los lenguajes de descripcin de hardware dentro del proceso de sntesis lgica Presentar una introduccin a VHDL Reforzar la sintaxis y semntica de VHDL con la presentacin de ejemplos
Conocer la sintaxis de VHDL, no implica necesariamente saber disear hardware con l

Objetos Tipos Operadores

t t

Introducir mediante ejemplos la influencia del estilo de codificacin en el hardware sintetizado

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 4

Objetos
t t

Tipos
t

Los objetos en VHDL contienen valores. Clases de objetos: Constant. Se les asigna un valor inicial que no puede ser modificado. Variable. Contiene un valor que puede ser modificado. Signal. Contiene una lista de valores que incluye el valor actual y un conjunto de posibles valores futuros. File. Modelan ficheros en el entorno del host. Se utilizan en test-benchs. Estos objetos se crean mediante su declaracin:
variable R: natural := 0;

Todos los objetos en VHDL son de algn tipo. Es ilegal conectar seales que no son del mismo tipo Un tipo de datos se caracteriza por un conjunto de valores que puede tener y un conjunto de operaciones. El tipo de cada objeto es esttico Los tipos predefinidos en el lenguaje estn declarados en el package STANDARD:
boolean, bit, bit_vector, character, string, integer, real, time, positive, natural.

El lenguaje permite crear nuevos tipos y definir operaciones con esos tipos a travs de funciones Tipos de datos predefinidos: - Scalar - Composite - Access - File

Declaraciones implcitas: Puertos de una entidad Indices de bucles

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 5

Tipos escalares
t

Composite
t

Existe una relacin de orden entre los valores de los objetos de este tipo
INTEGER constant MUX_ADDRESS: integer := 5; -- Rango desde -(2**31) hasta (2**31-1) -- Se puede especificar un rango menor type INDEX is integer range 0 to 15; constant MUX_ADDRESS: INDEX := 5; type natural is integer range 0 to integer'high; FLOATING POINT variable F0 : real := 62.3E-2; -- Se puede especificar un rango type ANALOG_IN is real range 0.0 to 5.0; ENUMERATION -- Conjunto de valores definidos por el usuario -- Hace ms legible el cdigo, se utiliza en la -- definicin de mquinas de estado type MICRO_OP is (LOAD, STORE, ADD, SUB); FISICOS -- Representan medidas de magnitudes fsicas -- Existe un tipo TIME cuya unidad es fs constant TH : time := 10 ns;

Tipo matriz: Una o ms dimensiones Elementos del mismo tipo Acceso indexado
1 2 3

0 0 1 2 3

type ADR_WORD is array (0 to 63) of BIT; type DATA_WORD is array (7 downto 0) of BIT; type ROM is array (0 to 125) of DATA_WORD; -- arrays predefinidos: BIT_VECTOR variable OP_CODE: BIT_VECTOR(1 to 5); OP_CODE := "01001"; OP_CODE := ('0','1','0','0','1'); OP_CODE := (2=>'1', 5=>'1', others=>'0');

Tipo Registro: Uno o ms campos Campos de diferente tipo Acceso por nombre
type OPCODE is (LD, ST, ADD, SUB); type ADR is array (0 to 63) of BIT; type INSTRUCTION is record OPCODE_FIELD: OPCODE; OPERAND1 : ADR; OPERAND2 : ADR; end record;

Campo1 Campo2 Campo3 Campo4

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 6

Tipos de datos
t

Operadores
t

Un SUBTIPO es un tipo con una restriccin. Se especifica el tipo base y el rango de restricciones Se comprueba cada asignacin para garantizar que el valor entra dentro del rango del subtipo

Se definen sobre los tipos de datos predefinidos, aunque se pueden sobrecargar.

package std_logic_arith package std_logic_unsigned package std_logic_signed

type MATRIZ is array(integer range<>, integer range <>) of integer; subtype IMAGEN is MATRIZ (0 to 255, 0 to 255); subtype POSITIVE is INTEGER range 1 to INTEGERHIGH t

ALIAS. Define nombres alternativos para partes de un objeto ya existente


signal SCON : bit_vector (7 downto 0); alias RI : bit is SCON (0) variable DATA_WORD : BIT_VECTOR (15 downto 0); alias DATA_BUS : BIT_VECTOR (7 downto 0) is DATA_WORD (15 downto 8);

ARITMTICOS + * / mod rem ** abs RELACIN SIGN O + = /=

DESPL. sll srl sla sra rol ror

LOGICOS AND OR NAND NOR XOR NOT

<

>

<=

>=

CONCATENACIN

&

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 7

ORGANIZACIN DEL DISEO


t

Entidad
t

Entidad: Declaracin de la entidad. Descripcin de la arquitectura. Declaracin de la configuracin. Empaquetamientos y libreras. Entorno de trabajo con Synopsys.

Entidad = Abstraccin Hardware de un Sistema Digital Las entidades pueden ser jerrquicas. Una entidad E1 puede, a su vez, estar constituida por otras entidades Una entidad E2 se puede utilizar como componente de otra entidad E1 Una entidad consta de: Declaracin de la Entidad Descripcin de la Arquitectura Declaracin de la Configuracin

t t

E2 E1

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 8

Declaracin de la entidad
t

Modo de un puerto
t

Especifica el nombre de la entidad y el interfaz con su entorno (los puertos) Los puertos son seales; su declaracin es implcita. No especifica la estructura de la entidad. Visin de caja negra (Encapsulado).
Design Entity

El Modo define la direccin del flujo de datos visto desde la entidad. Pueden ser: IN, slo pueden ser ledos OUT, slo se les puede asignar valor INOUT, BUFFER. se les puede leer y asignar un valor desde dentro de la entidad.

A B C D

M N P Q

Entity Declaration

Architecture Body

IN t

OUT

INOUT

BUFFER
R/W

Config. Declaration

-- Declara el nombre de la entidad, -- los puertos de entrada y salida, los -- modos y los tipos de dichos puertos ENTITY E1 IS PORT (A, B, C, D : in BIT; M, N, P, Q : out BIT ); END E1; Nombres Modos Tipos

Lectura de un INOUT, lee el valor del flujo de datos entrante Lectura de un BUFFER, como solo tiene una fuente, lee el valor asignado

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 9

Descripcin de la arquitectura
t

Declaracin de configuracin
t

Contiene la descripcin interna de la entidad. Estilos de modelado: Estructural: Conexin de componentes. Comportamental:
Algoritmo secuencial (Alto Nivel Abstraccin) Ecuaciones booleanas (Bajo Nivel Abstraccin)

Realiza la correspondencia entre: Entidad/Arquitectura Entidad/Componente Una vez que la configuracin se ha compilado, VHDL puede simular el modelo global
Entity E1

Una entidad puede tener varias arquitecturas, que representan diferentes implementaciones de la misma.
ARCHITECTURE mi_arq OF E1 IS

component E2 ... end component ...

Design Entity Entity Declaration

-- Declaracin de items que sern -- utilizados dentro del cuerpo de -- la arquitectura -- Los nombres de los puertos y -- genricos no requieren ser -- declarados
BEGIN

I_1: E2 E1_A1 E1_A2

-- Descripcin de entidad E1 en -- fichero E1.vhd configuration CFG_E1 of E1 is for E1_A2 for I_1: E2 use configuration WORK.CFG_E2_A1; end for; end for; end CFG_E1;

Entity E2

Architecture Body

Config. Declaration

-- Instrucciones Concurrentes -- El orden textual no importa -- ya que se ejecutan en paralelo END mi_arq;

E2_A1

E2_A2

-- Descripcin de E2 entity en -- fichero E2.vhd configuration CFG_E2_A1 of E2 is for E2_A1 end for; end CFG_E2_A1

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 10

Entidad de diseo vs. placa de circuito impreso


t

Empaquetamientos y libreras (1)


t

Declaracin de Entidad Definir zcalos Arquitectura Soldar zcalos en la placa y Rutear pistas En un mismo zcalo se pueden insertar distintos C.I. compatibles funcionalmente y pin a pin segn: velocidad, precio, consumo,... Configuracin Insertar en cada zcalo un integrado

Empaquetamientos: Pueden contener declaraciones y definiciones de objetos a usar en diferentes diseos. Constan de:
Declaracin: Componentes, constantes, tipos, funciones y procedimientos. Cuerpo: Cuerpos de las funciones y procedimientos declarados.
package EX_PACK is z z --Declarations z end; package body EX_PACK is z z --Body Declarations z end;

Libreras: Los diseos, una vez compilados, se almacenan en Libreras. Una librera es un directorio. Los diseos compilados son ficheros.

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 11

Empaquetamientos y libreras (2)


t

Entorno de trabajo con Synopsys


odf.sym
CLK RST

Existen libreras predefinidas: STD: Contiene los empaquetamientos


STANDARD, define los tipos, subtipos y funciones bsicas del lenguaje. TEXTIO contiene declaraciones de tipos, subtipos y programas para operaciones ASCII.

Smbolo

OUT_DATA(15:0)

IN_DATA(15:0) DATA_RDY

ppp.sch
odf odf

WORK: librera de trabajo


Aqu se almacenan las entidades de diseo del usuario
Esquemtico

I_1 ctl I_3

I_2

IEEE: Contiene empaquetamientos:


STD_LOGIC_1164 STD_LOGIC_ARITH
t

Estas declaraciones pueden ser importadas y utilizadas por otros diseos utilizando la clausula USE.
Ejemplo: Suponiendo que EX_PACK se ha compilado en la librera DESIGN_LIB:
library DESIGN_LIB; use DESIGN_LIB.EX_PACK.ALL; VHDL

odf.vhd
library IEEE; use IEEE.std_logic_1164.all

Entity Declaration

Architecture Body

Config. Declaration

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 12

Arbol de directorios
/

DESCRIPCION DE LA ARQUITECTURA
t t

Introduccin Estilos de modelado Sentencia PROCESS Sentencias secuenciales Sentencias de asignacin Sentencia IF Sentencia CASE Sentencia LOOP Sentencia COMPONENT Ejemplo

VLSI1 home synopsys sd4 packages usuario IEEE WORK src lib
t xxx.vhd xxx.sym xxx.sch xxx.syn xxx.sim xxx.mra t t t

std_logic_1164.vhd std_logic_arith.vhd ...

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 13

Introduccin
t

Estilos de modelado (1)


t

La descripcin de una arquitectura se compone de un conjunto de sentencias concurrentes que se ejecutan de forma asncrona entre s y se comunican mediante seales El orden textual de las mismas no importa La sentencia fundamental es el proceso que define los lmites de un dominio secuencial El resto de sentencias concurrentes son formas particulares de procesos
Architecture

Cdigo vs. estilo de modelado

ARCHITECTURE name OF entity IS

-- Declaracin de items que sern utilizados -- dentro del cuerpo de la arquitectura BEGIN Sentencias Concurrentes PROCESS Conjunto de procesos ejecutandose asncronamente COMPONENT instantation
Comportamental

t t

Secuencial Concurrente

Estructural

END name; t

En la descripcin de una arquitectura dada se pueden mezclar los dos estilos de modelado VHDL tiene un dominio secuencial en el que opera un funcionamiento puramente algortmico y un dominio concurrente en el que evolucionan los procesos a ritmo de eventos discretos

Statement A

Statement B

Statement C

Signal Assignment Process Component Block

Procedure Generate Assert

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 14

Estilos de modelado (2)


t

Estilos de modelado (3)


t

Nombre y pines de la entidad


SET Q

Descripcin comportamental

Q
N_SET

RS_Latch
RESET Q

entity RS_Latch is Port (N_SET : In BIT; N_RESET: In BIT; Q : Out BIT; N_Q : Out BIT); end RS_Latch;

Ecuaciones Booleanas Dominio Concurrente.


N_RESET

0 0 1 1 0

1 1 Q

Descripcin comportamental

Algoritmo secuencial.
architecture SEQUENTIAL of RS_Latch is begin process (N_SET, N_RESET) begin if (N_SET='1' and N_RESET='0') then Q <= '0' after 2 ns; N_Q <= '1' after 2 ns; elsif (N_SET='0' and N_RESET='1') then Q <= '1' after 2 ns; N_Q <= '0' after 2 ns; elsif (N_SET='0' and N_RESET='0') then Q <= '1' after 2 ns; N_Q <= '1' after 2 ns; end if; end process; end SEQUENTIAL;

architecture DATAFLOW of RS_Latch is signal Qtmp, N_Qtmp: BIT; begin -- Q y N_Q son de modo OUT, no pueden ser ledos -- no pueden aparecer en el lado derecho -- de una sentencia de asignacin -- Solucin definir seales temporales Q <= Qtmp; N_Q <=N_Qtmp; Qtmp <= (not(N_SET)) or (Qtmp and N_RESET) after 2 ns; N_Qtmp <= (not(N_RESET)) or (N_Qtmp and N_SET) after 2 ns; end DATAFLOW;

Descripcin estructural
SET U1 Q architecture STRUCTURE of RS_Latch is component NAND2 port ( A, B : in BIT; C : out BIT); end component; begin U1: NAND2 PORT MAP(N_SET, N_Q, Q); U2: NAND2 PORT MAP(N_RESET, Q, N_Q); end STRUCTURE;

SET RESET 0 0 1 1 0 1 0 1

Q 1 1 0 Q

Q 1 0 1 Q

U2 RESET

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 15

Sentencia PROCESS (1)


t t

Sentencia PROCESS (2)


t

Un proceso es una sentencia concurrente En el interior de un proceso las sentencias se ejecutan en el orden secuencial marcado por las sentencias de control de flujo de programa tpicas de un lenguaje imperativo. La ejecucin se hace en tiempo cero. Dominio Concurrente
process (sensitivity list);
Dominio secuencial

Mecanismos para suspender un proceso: Lista de sensibilidades Sentencias WAIT Es un error: No utilizar ninguno de los dos mecanismos en un proceso. El proceso permanece en un bucle infinito Utilizar lista de sensibilidades y sentencias wait en el mismo proceso Ejecucin temporal de un proceso con lista de sensibilidades
process (A, B); begin Stmt_1; z Stmt_N; end process; Activo Eventos en AoB Suspenso

end process; process (sensitivity list); -- Declarations (var.) begin -- Sequential stmts end process; t t

Un proceso puede estar activo o en suspenso. El proceso se ejecuta hasta que se suspende.

Proceso Activo Suspenso

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 16

Sentencia PROCESS (3)


t

Sentencia PROCESS (4)


t

La sentencia WAIT, suspende el proceso: Hasta que se cumple una condicin, Ej: wait until A=B; Hasta que se produce un evento en seales, Ej: wait on A, B; Durante un intervalo de tiempo, Ej: wait for 10 ns; Presencia de lista de sensibilidades en un proceso wait on lista de sensibilidades Ejecucin temporal de un proceso con sentencia WAIT:
process begin Stmt_1; z wait on A, B; Stmt_I; z Stmt_N; end process; Suspenso Eventos en AoB Activo

Generacin de una seal de reloj


-- Mal Comportamental -- Si no hay ni lista de sensibilidades ni sentencias wait -- El proceso siempre est activo y permanece en un bucle infinito CLOCK: process begin if CLK = '1' then CLK <= '0' after 10 ns; else CLK <= '1' after 15 ns; end if; end process; -- Comportamental1: Lista de sensibilidades -- El proceso se suspende al ejecutar la ltima instruccin -- Se reactiva cuando hay un evento en la seal CLK y -- comienza la ejecucin a partir de la primera sentencia CLOCK: process (CLK) begin if CLK = '1' then CLK <= '0' after 10 ns; else CLK <= '1' after 15 ns; end if; end process; -- Comportamental2: Sentencia wait CLOCK: process begin if CLK = '1' then CLK <= '0' after 10 ns; else CLK <= '1' after 15 ns; end if; wait on CLK; end process;

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 17

Sentencias secuenciales
t

Sentencias de asignacin
t

Para consultas sobre la sintaxis: Utilizar ayuda on-line iview &


Sentencias de Flujo Control IF CASE RETURN LOOP NEXT EXIT Sincronizacin entre procesos WAIT

Asignacin de seal: Nombre_sig <= expresion; Las seales a ambos lados del operador de asignacin deben ser del mismo tipo Si hay varias asignaciones a la misma seal dentro de un mismo proceso: prevalece el valor de la ltima Pueden aparecer en sentencias secuenciales y concurrentes Asignacin de variable: Nombre_var := expresion; Los objetos a ambos lados del operador de asignacin deben ser del mismo tipo Mantienen su valor a lo largo del ciclo de simulacin Slo puede aparecer en el interior de un proceso (dominio secuencial)

Tipos de Sentencias Secuenciales

Subprogramas PROCEDURE FUNCTION

Asignacin de Seales Asignacin de Variables Assertion

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 18

Sentencia IF
t

Sentencia CASE
t

Sentencia IF: Cada una de las condiciones debe ser booleana Si una condicin es evaluada como verdadera, el resto de las expresiones no son evaluadas
PROCESS BEGIN if S1='0' and S0='0' then Z <= IN0 after 5 ns; elsif S1='0' and S0='1' then Z <= IN1 after 5 ns; elsif S1='1' and S0='0' then Z <= IN2 after 5 ns; else Z <= IN3 after 5 ns; end if; wait on IN0,IN1,IN2,IN3, S1,S0; END PROCESS IN0 IN1

Sentencia CASE Se escoge una y slo una de las alternativas Cuando no se cubren todas las alternativas es necesario la inclusin como ltima alternativa de :
when others

MUX
IN2 IN3 S0 S1

PROCESS (IN0, IN1,IN2,IN3,S1,S0) subtype two_bits is BIT_VECTOR(1 downto 0); BEGIN case two_bits'(S1&S0) is when "00" => IN0 Z <= IN0 after 5ns; when "01" => IN1 Z <= IN1 after 5ns; Z MUX when "10" => IN2 Z <= IN2 after 5ns; IN3 when others => Z <= IN3 after 5ns; S0 S1 end case; END PROCESS;

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 19

Sentencia LOOP (1)


t

Sentencia LOOP (2)


---------- COMPARADOR DE 4 BITS ---------entity COMP4 is PORT(A, B: in BIT_VECTOR(3 downto 0); AEQB, AGTB, ALTB: out BIT); end COMP4; architecture LOOP_BEH of COMP4 is begin process(A,B) variable var_EQ : bit := '0'; variable var_LT : bit := '0'; variable var_GT : bit := '0'; begin L1: for I in 3 downto 0 loop if(A(I)=B(I)) then var_EQ := '1'; else var_EQ := '0'; if (A(I) = '1') then var_GT := '1'; else var_LT := '1'; end if; exit L1; end if; end loop L1; AEQB <= var_EQ; AGTB <= var_GT; ALTB <= var_LT; end process; end LOOP_BEH;

Sentencia LOOP: La forma con while primero evalua la condicin y si sta es verdadera se ejecuta el contenido del bucle. La forma con for especifica un nmero de iteraciones. La declaracin de la variable de iteracin es implcita. No se le puede asignar valores dentro del bucle y no existe fuera de l. Dentro de un bucle se pueden utilizar las sentencias: NEXT y EXIT.
L1: L2: while A < 10 loop for I in 0 to 10; -- Sentencias next L2 when I = A; -- exit L2 when I = A; -- Sentencias end loop L2; -- Sentencias end L1;

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 20

Sentencia COMPONENT
t

Ejemplo (1)
clock CLK I_1 3bit_counter CLK RST reset RST I_2 I_3 COUNT

Se utiliza para modelar una entidad como un conjunto de componentes conectados por seales
Sentencia concurrente: el orden textual no importa Un componente se puede instanciar un nmero arbitrario de veces. Cada instancia debe tener una etiqueta nica

architecture STRUCT_A of GATING is -- Declaracin de componentes component AND2 port (X, Y: in BIT; Z : out BIT); end component; component NAND2 port(A, B:in BIT; MR C:out BIT); RDY Q end component; S1 D A component DFF QN S2 port(D, CLK:in BIT; CLK Q, NQ:out BIT); CTL CK end component; DIN signal S1, S2 : BIT; begin -- Instanciacin de componentes. Asocia -- Asocia las seales de la entidad con los -- puertos de los componentes I_1: DFF port map (A, CK, S1, S2); I_2: AND2 port map(S2, DIN, CTL); I_3: NAND2 port map (C=>RDY, A=>S1, B=>MR); end STRUCT_A;

entity reset is PORT(RST: out bit); end reset;


reset RST

architecture rst_beh of reset is begin -- Forma de onda NO repetitiva RST <= '0', '1' after 100 ns; end rst_beh; entity clock is PORT(CLK: out bit); end clock; architecture clk_beh of clock is constant TCLK: time := 20 ns; begin -- Forma de onda repetitiva process begin CLK <= '0', '1' after TCLK/2; wait for TCLK; end process; end clk_beh;

clock CLK

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 21

Ejemplo (2)
entity 3bit_counter is PORT(CLK,RST: in bit; COUNT: out integer range 0 to 7); end 3bit_counter; architecture behavioral of 3bit_counter is signal NEXT_COUNT: integer range 0 to 7; signal COUNT_tmp : integer range 0 to 7; begin COUNT <= COUNT_tmp; process begin wait until CLK='1'; COUNT_tmp <= NEXT_COUNT; end process;
3bit_counter CLK process(COUNT_tmp, RST) RST begin if (COUNT_tmp = 7) then NEXT_COUNT <= 0; else NEXT_COUNT <= COUNT_tmp + 1; end if; if(RST = 0) then NEXT_COUNT <= 0; end if; end process; end behavioral; COUNT

MODELO DE TIEMPOS
t t t t t t

Ciclo de simulacin Tiempo de simulacin es 2_D Seales vs. variables Asignacin concurrente de seales Driver Mltiples drivers

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 22

Ciclo de simulacin
t

Tiempo de simulacin es 2_D


t

La simulacin Comienza con las asignaciones de seal y todos los procesos suspendidos Los procesos reaccionan ante eventos en ciertas seales Finaliza cuando no hay procesos activos ni asignaciones de seal que hacer en dicho tiempo T
Current T Simulation Time Next Simulation Time

Retraso delta No se corresponde con ningn retraso real. El tiempo fsico de simulacin no avanza. Permite ordenar eventos que ocurren en el mismo tiempo de simulacin La ordenacin es causal
-- Sea un conjunto de asignaciones -- concurrentes de seales cuyos -- valores iniciales son '0'

3 1st Half UPDATE SIGNALS t 2nd Half AWAKE PROCESS 2 1

E B <= '1' after 20ns; D <= C; C <= B; E <= D; F <= E after 20ns;

*D *C * 20 ns
B F

Durante el ciclo de simulacin el tiempo fsico no avanza


Existe al menos un retraso delta desde que se asigna un nuevo valor a una seal hasta que sta adquiere dicho valor

* 40 ns

-- Una asignacin concurrente se -- ejecuta siempre que ocurre un -- evento en una seal que aparece -- en su lado derecho

* X, seal X es actualizada

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 23

Seales vs. variables (1)


t

Seales vs. Variables (2)


CONDICIONES INICIALES A=0, B=1, C=2, X=3

Aunque ambas sintetizan en los mismos elementos: cables o FFs, su semntica es totalmente distinta. La asignacin de un nuevo valor a una variable es instantanea. Visibilidad local. La declaracin y asignacin de variables slo puede aparecer en el interior de un proceso (dominio secuencial)
No se recomienda el uso de variables globales (VHDL'93)

La asignacin de un nuevo valor a una seal no es instantnea, existe al menos un retraso . Z <= A0 and A1 [after 6ns]; Son globales. No se pueden declarar en el interior de un proceso Pueden aparecer en sentencias secuenciales y concurrentes

PROCESS -- A, B, C, X son variables -- Declaracin y asignacin -- dentro del proceso BEGIN -- wait until the trailing -- edge of the clock wait until Clock = '1'; -- variable assignments A:= B+C; -- 1+2 X:= A+C; -- 3+2 A:= X+C; -- 5+2 END PROCESS;

PROCESS -- A, B, C, X son seales -- Las seales se han de-- clarado fuera del proceso BEGIN -- wait until the trailing -- edge of the clock wait until Clock = '1'; -- signal assignments A<= B+C; -- 1+2 X<= A+C; -- 0+2 A<= X+C; -- 3+2 END PROCESS;

A=7, X=5

A=5, X=2

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 24

Asignacin concurrente de seales (1)


t

Asignacin concurrente de seales (2)


t

Las sentencias de asignacin de seales se ejecutan en respuesta a eventos en alguna de las seales que aparecen en el miembro derecho de la asignacin La seal no adquiere su nuevo valor de forma instantanea, existe al menos un retraso .
architecture A1 of INV is signal B, C : bit; begin -- El orden textual A -- no importa Z <= NOT C; B <= NOT A; C <= NOT B; end A1;
3 2 1

Una asignacin concurrente se ejecuta siempre que ocurre un evento en una seal que aparece en su lado derecho Existe una sentencia PROCESS equivalente
Out <= In2 - In1 after 8 ns; process (In1, In2) begin Ou t <= In2 - In1 after 8ns; end process;

Asignaciones secuenciales vs. concurrentes


process(B) begin -- Secuencial A<= B; Z <= A; end process;
B B A Z A Z

-- En T= 20 ns, ocurre evento en A

-- Concurrente A<= B; Z <= A;

* * *

Z C B A B C Z 20ns 20ns + 3

* 20 ns

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 25

Driver
t

Multiples drivers
t

Driver: lista de pares (valor, tiempo) ordenados temporalmente (T, ) asociados a una seal El driver de una seal representa la evolucin temporal futura de la misma La sentencia de asignacin de seal crea en el driver de la seal asignada un nuevo par (valor, tiempo) El valor es el resultado de evaluar la expresin de la sentencia El tiempo es igual a la suma del tiempo actual de simulacin (en el que se ejecuta la sentencia) ms el retardo declarado a la derecha de la palabra reservada AFTER.
Z ('0', 5ns) ('1' ,10ns + 3)

Cada sentencia de asignacin concurrente asocia un driver a la seal modificada Una seal con ms de un driver debe de tener una funcin de resolucin, en caso contrario es un error.
A B
1 0 0

t t

?
0 1

architecture A1 of TWO_DR is begin Z <= A and B after 10 ns; Z <= not C after 5 ns; end;

DR1: DR2:

('0' , 10ns) ('1' , 5ns)

Funcin de Resolucin

Analoga entre funcin de resolucin en VHDL y los C.I. con salidas en colector abierto: si existe un driver t.q. su valor = '0', entonces la salida es '0'.

'U' 5

'0' 10

'1' ns

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 26

DESCRIPCION DE CIRCUITOS DIGITALES


t t t

Introduccin
t

Introduccin Circuitos combinacionales Circuitos secuenciales: Latches Flip-Flops Mquinas de Estados Finitos (MEFs)

En este apartado se dan plantillas o patrones que modelan distintos tipos de circuitos digitales. Se indican algunos de los posibles problemas que nos pueden aparecer: Diferencias Simulacin vs. Sntesis. VHDL es muy flexible, y no todas sus construcciones sirven para describir circuitos. Nos centraremos en el subconjunto de VHDL sintetizable para Synopsys.

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 27

Circuitos combinacionales
t

Procesos => Cir. combinacionales


t

Sentencias de Asignacin concurrentes => Lgica Combinacional


library IEEE; use IEEE.std_logic_1164.all; entity COMBI is port( A, B, C: in std_logic; D: out std_logic); end COMBI; architecture BEHAVIORAL of COMBI is begin D <= (A and B) or C; end BEHAVIORAL; configuration CFG_COMBI of COMBI is for BEHAVIORAL A end for; end CFG_COMBI; B

Si una seal es leda en el interior de un proceso y no aparece en la lista de sensibilidad se producen diferencias entre sntesis y simulacin
process (A, B) begin D <= (A and B) or C; end process; Modelo VHDL original process (A, B, C) begin D <= (A and B) or C; end process; Cdigo interpretado por la herramienta de sntesis

t D

No sintetiza asignaciones a seales con la clasula AFTER


C <= A and B after 10 ns;

C t

Procesos => Lgica Combinacional


process (A, B, C) begin D <= (A and B) or C; end process;

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 28

Sentencia IF => Circuitos combinacionales (1)


t

Sentencia IF => Circuitos combinacionales (2)


t

Tipo booleano Cierto => 1 Falso => 0 La seal COND es leda dentro del proceso y debe aparecer en la lista de sensibilidad
process(A, B, COND) begin -- Asignar valor a D_OUT -- en todas las condiciones if (COND) then D_OUT <= B; else D_OUT <= A; end if; end process;

Las seales y variables (locales) mantienen su valor hasta que se les asigna uno nuevo. Para asegurar que se sintetiza un circuito combinacional, se debe asignar un valor a la seal D_OUT independientemente de si la condicin de la sentencia IF es cierta o falsa
process(A, B, COND) begin -- Asignar valor a D_OUT -- en todas las condiciones if (COND) then D_OUT <= B; else D_OUT <= A; end if; process(A, B, COND) end process; begin -- Dar a D_OUT -- un valor por defecto D_OUT <= A; if (COND) then D_OUT <= B; end if; end process;

B COND D_OUT A

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 29

Sentencia CASE => Circuitos combinacionales


t

Latch
t

Las sentencias CASE no siempre se sintetizan en multiplexores Para asegurar que se sintetiza un circuito combinacional, se debe asignar un valor a la seal Z para todo valor de SEL.
PROCESS (A,B,C,D,SEL) BEGIN case SEL is when "00" => Z <= A; when "01" => Z <= B; when "10" => Z <= C; when others => Z <= D; end case; END PROCESS;

Sentencia IF Latch

process (Enable,Data) begin if (Enable='1') then Value <= Data; end if; end process;

Data Enable

Value

process (Enable, Data) begin Value <= '0'; if (Enable='1') then Value <= Data; end if; end process;

Data Enable

Value

A B

t MUX
Z

C D SEL

Si se desea evitar que la herramienta de sntesis infiera latches, se debe asignar valores a las seales y variables para todas las condiciones de una sentencia IF o CASE

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 30

Circuitos secuenciales
t

Flip-Flop
t

Se sintetiza un circuito secuencial:


Instanciacin de Flip Flops (o componentes con FFs) en una descripcin estructural Procesos activados por flanco de reloj en una descripcin comportamental

Flip Flop con RESET sncrono


process (CLK) begin if (CLK'EVENT and CLK='1') then if (Reset = '1') then Q <= '0'; else Q <= Data; end if; end if; end process;

Patrones bsicos (descrip. comportamental)

process begin -- Flanco Ascendente wait until CLK='1'; ... end process; process (CLK) begin if CLK'EVENT and CLK='1' then ... end if; end process; process (CLK, RST) begin if RST= '1' then ... elsif CLK'EVENT and CLK='1' then ... end if; end process;

Flip Flop con RESET y PRESET asncronos


process (CLK, RST, PRT) begin if (Reset = '1') then Q <= '0'; elsif (PRT = '1') then Q <= '1'; elsif (CLK'EVENT and CLK='1') then Q <= Data; end if; end process;

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 31

Mquinas de Estados sncronas


t

MEFs
t

Una MEF es una sex-tupla: Vector de estados S={Sj} Vector de entrada I={Ij} Vector de salida O={Oj} Funcin de transicin I S S Funcin de salida I S O Estado inicial o de reset R Se utilizan para describir y simular subsistemas de control Niveles de descripcin: Algortmico  Tablas de Transicin de estados Ecuaciones booleanas y registros Descripcin algortmica. Requisitos: Claridad Sintetizable

Tipos: MOORE, correspondencia entre estado y vector de salida biunvoca Funcin de salida S O
I
Funcin de Transicin Next state Registros S Funcin de Salida

Current state

MEALY, el vector de salida depende del estado y del vector de entrada Funcin de salida: I S O
I
Funcin de Salida

Funcin de Transicin

Next state

Registros S

Current state

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 32

Descripcin en 2 procesos de MEF sncronas


t

Descripcin en 2 procesos de MEF sncronas


t

Descripcin en 2 procesos: Proceso secuencial, actualiza el estado Proceso combinacional, deriva el siguiente estado y actualiza las salidas Para evitar "glitches", registrar salidas
ENTITY fsm ARCHITECTURE Beh2 OF fsm Combinacional: PROCESS( Current_state, All_inputs)

Estructura General:

CASE Para cada estado: Transicin de estados; Generacin de salidas; END PROCESS;
Current_state Next_state

Secuencial: PROCESS BEGIN -- Un unico CLK wait until CLK ='1'; Current_state <= Next_state; END PROCESS;

ARCHITECTURE beh2 OF fsm IS type STATE_TYPE is (S0,S1,S2); signal current_state, next_state: STATE_TYPE; BEGIN combi: PROCESS(current_state, all_inputs, RST) BEGIN signals <= default assignments; CASE current_state is WHEN S0 => 0/0 IF input = '0' THEN output <= '0'; S0 next_state <= S0; ELSE output <= '1'; 1/1 next_state <= S2; END IF; unconditional signal generation; S2 WHEN S1 => ................. WHEN OTHERS => -- Fail safe behavior -- illegal state recovery END CASE; -- Power on reset initialization IF reset_conditions THEN transition to reset state R and reset signals; END IF; END PROCESS combi; Seq: PROCESS BEGIN -- All FFs driven by the same clock wait until CLK='1'; current_state <= next_state; END PROCESS seq; END beh2;

OUTPUTS

INPUTS

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 33

SIMULACION
t t

Entornos de test
t

Entornos de test Generacin de estmulos Vectores de test Ficheros

Un entorno de test (test bench) es otra entidad de diseo que se utiliza para verificar la correccin funcional de nuestro diseo. Se pueden utilizar construcciones VHDL no sintetizables. Partes de un entorno de test: Entidad a testear (EUT). Se instancia como un componente Generador de Estmulos. Estos se aplican a los puertos de entrada de la EUT. Monitor de los resultados: Fichero de datos o Waveform Viewer.
Comparar resultados obtenidos con valores esperados.
TEST BENCH
CLK RST, IN_DATA

Generador de Estmulos Monitor de Resultados

OUT_DATA

EUT: Engloba todo el hardware que va a ser sintetizado

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 34

Generacin de estmulos
t

Vectores de test almacenados en tabla (1)


t

Los estmulos pueden: ser generados mediante cdigo VHDL no sintetizable ser vectores de datos almacenados en:
vector o tabla fichero ASCII

Utilizacin: Los estmulos pueden ser vectores de entrada almacenados en una tabla Los resultados esperados se pueden almacenar junto con el correspondiente vector de entrada para su comparacin con el resultado obtenido Ejemplo: Declaracin

Generacin de estmulos: Patrones NO Repetitivos Patrones Repetitivos


--No repetitivo RST <= '1', '0' after 20 ns;

--Repetitivo process begin CLK <= '0'; wait for 10 ns; CLK <= '1'; wait for 10 ns; end process; --Repetitivo process begin CLK <= '1', '0' after 20 ns; wait for 50 ns; end process;

type test_vector is record input1, input2, output: std_logic; end record; type test_vector_table is array(natural range <>) of test_vector; constant input_vectors: test_vector_table := ( (input1 => '0', input2 => '0', output => '0'), ... (input1 => '1', input2 => '1', output => '1') );

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 35

Vectores de test almacenados en tabla (2)


Aplicacin de estmulos a las entradas de EUT y comprobacin de las salidas
-- Instanciacin de EUT U1:eut port map(CLK=>actual_clk,I1=>actual_input1, I2=>actual_input2, O=>actual_output); -- Aplicacin de los estmulos process begin for i in input_vectors'range loop -- Aplicar vector de test -- en el flanco de bajada del reloj actual_clk <= '0'; actual_input1 <= input_vectors(i).input1; actual_input2 <= input_vectors(i).input2; wait for 10 ns; actual_clk <= '1'; wait for 10 ns; -- Comprobar resultados de simulacin assert(actual_output=input_vectors(i).output) report "Resultado incorrecto"; end loop; assert FALSE -- Parar la simulacin report "Fin"; end process;

Ficheros (1)
t

Utilizacin: Los estmulos pueden ser vectores de entrada almacenados en un fichero ASCII Los resultados se pueden escribir en un fichero para posterior comprobacin Construcciones:

Package TEXTIO
-- Definiciones de tipos type STRING is array (POSITIVE range <>) of CHARACTER type LINE is access STRING;-- Pointer to a STRING value type TEXT is file of STRING; type SIDE is (RIGHT, LEFT);-- Justify output data type WIDTH is NATURAL;-- Specify widths of output fields -- Funciones y Procedimientos predefinidos function ENDFILE (F: TEXT) return BOOLEAN; procedure READLINE(F: in TEXT, L: out LINE); procedure READ(L:inout LINE; VALUE:out <tipo>; GOOD: out BOOLEAN); procedure WRITELINE(F: out TEXT; L: in LINE); procedure WRITE(L:inout LINE; VALUE:out <tipo>; JUSTIFIED: in SIDE; FIELD: in WIDTH); <tipo> cualquiera de los definidos en el package STANDARD

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 36

Ficheros (2)
t

Ejemplo:

-- Instanciacin de EUT U1:eut port map(CLK=>actual_clk,I1=>actual_input1, I2=>actual_input2, O=>actual_output); -- Aplicacin de los estmulos READ FILE: process file INPUT_FILE: text is in "./eut_test.vec"; variable MY_LINE: line; variable IN1, IN2, OUT: std_logic; BEGIN WHILE (NOT (endfile (INPUT_FILE))) LOOP readline(INPUT_FILE, MY_LINE); read (MY_LINE, IN1); read (MY_LINE, IN2); read (MY_LINE, OUT); -- Aplicar valores leidos actual_clk <= '0'; actual_input1 <= IN1; actual_input2 <= IN2; wait for 10 ns; actual_clk <= '1'; wait for 10 ns; assert (actual_output = OUT) report "Resultado incorrecto"; END LOOP; assert FALSE -- Parar la simulacin report "Fin"; END PROCESS;

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Lenguaje VHDL - 37

Metodologa top-down TEMA 3: SINTESIS LOGICA


t t t

Especificacin Validacin

Introduccin
Sntesis

Codificacin VHDL orientada a sntesis Sntesis lgica con Synopsys Entorno de Synopsys Empezar con Design Analyzer Descripcin del entorno del diseo Restricciones en el proceso de sntesis Optimizacin Anlisis del diseo
Validacin

Biblioteca de componentes

Diseo Fsico

Test

Fabricacin

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 1

Sntesis
t

Introduccin
t

Sntesis: conversin de una descripcin comportamental en una estructural, en la que cada bloque es un componente de la biblioteca elegida

Descripcin VHDL de un sistema. Requisitos: Capturar la funcionalidad Cumplir especificaciones de diseo Ser SINTETIZABLE SINTESIS: proceso de transformar una descripcin VHDL comportamental/RTL en un netlist de puertas y biestables de una tecnologa dada La descripcin funcional VHDL es independiente de la tecnologa. Sin embargo:
EL CIRCUITO SINTETIZADO DEPENDE FUERTEMENTE DEL ESTILO DE CODIFICACION

Tareas de sntesis

Sntesis de la arquitectura
t

Sntesis Lgica

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 2

Introduccin
t

Introduccin
entity combi is port(A,B,C: in std_logic; D: out std_logic); end combi; architecture behavioral of combi is begin D <= (A and B) or C; end behavioral

Sntesis: Estilo de diseo => Celdas estndar Herramienta de sntesis => Synopsys Librera de celdas => ES2

HDL Comportamental /RTL

Librera de Celdas

Objetivos de Diseo

A B C

Netlist de puertas optimizado e independiente de la tecnologa

HERRAMIENTA DE SNTESIS

A B C

Netlist para una tecnologa: - CMOS, n metales, 1 - Fabricante

Netlist
A B C D

Buffers adicionales para satisfacer necesidades de corriente

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 3

Codificacin VHDL orientada a sntesis TEMA 3: SINTESIS LOGICA


t t t t

La sntesis lgica es muy dependiente del estilo de cdigo utilizado. Pensar en tminos de circuito.
Recordar que VHDL es principalmente un lenguaje de descripcin de hardware.

Introduccin Codificacin VHDL orientada a sntesis Sntesis lgica con Synopsys Entorno de Synopsys Empezar con Design Analyzer Descripcin del entorno del diseo Restricciones en el proceso de sntesis Optimizacin Anlisis del diseo

Estilo recomendado:
Sentencias de asignacin de seal concurrentes. Procesos simples. Uso de componentes para el particionado.
t

Vamos a considerar los siguientes temas: Tipos VHDL. Seales frente a variables. Estructuras condicionales. Operadores aritmticos. Compartir recursos. Particionado del sistema.

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 4

Tipos VHDL (1)


t

Tipos VHDL (2)


t

Tipos soportados para sntesis:


STD_LOGIC Tiene 9 valores: 'U' Sin inicializar; no tiene significado en sntesis. 'X' Desconocido (fuerte); conflicto, ERROR!!. '0' Cero (fuerte); equivalente a Vss. '1' Uno (fuerte); equivalente a Vcc o Vdd. 'Z' Alta impedancia; se infiere un triestado. 'W' Desconocido (dbil). 'L' Cero (dbil); resistencias pull-down. 'H' Uno (dbil); resistencias pull-up. '-' Don't care; Se sintetiza en 0 1. Permite vectores: std_logic_vector (7 downto 0) std_logic_vector ( 0 to 7) INTEGER Si no se acota el rango, se sintetizan 32 bits. integer range 0 to 7 Se sintetizan 3 bits. TIPOS ENUMERADOS Por defecto se codifican en representacin binaria type STATE_TYPE is (S0, S1, S2, S3, S4); S0 "000", S1 "001", ..., S4 "100", 3 bits. En la codificacin de MEF, incorporar mecanismos para salir de estados no deseados, por ejemplo "101".

El package std_logic_1164 de la librera IEEE contiene: Los tipos std_logic y std_logic_vector Funciones lgicas y de conversin de tipos. Es recomendable usar el tipo Std_logic Sus 9 valores son muy apropiados para describir el comportamiento del hardware. En simulacin se inicializa a 'U', lo que ayuda a no olvidar el RESET.
Ojo!, no inicializar las seales cuando se declaran:
signal out1: std_logic:= '0'; --mala idea

La herramienta de sntesis ignora las inicializaciones, puesto que no tienen sentido circuital.

En particular, usar Std_logic para la declaracin de todos los puertos de entidades.


Evita la necesidad de funciones de conversin en la jerarqua.

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 5

Tipos VHDL (3)


t

Seales frente a variables (1)


t

Minimizar el uso de puertos declarados como BUFFER. El modo buffer se usa cuando se desea leer internamente una seal de salida. El inconveniente es que el modo buffer se propaga por la jerarqua. Solucin: declarar el puerto como OUT y aadir una seal interna.

Las variables se actualizan en el instante se simulan ms rpido, pero pueden enmascarar aleas. Las seales esperan un delta de tiempo antes de tomar un nuevo valor simulacin ms lenta, pero su comportamiento se acerca ms al hardware que las variables. Es recomendable usar seales para la descripcin de hardware. Las variables se pueden sintetizar de forma ineficiente. Ejemplo pg. siguiente: circuito modelado con variables y con seales.
VHDL Compiler genera un registro para todas las seales y algunas variables asignadas en un proceso con wait o 'event.

entity BUF is port (A: In std_logic; CLK: In std_logic; B: Out std_logic); end BUF; architecture BEHAVIORAL of BUF is signal B_tmp: std_logic; -- seal interna begin B <= B_tmp; -- asignacin concurrente -- En el cdigo, ya slo se usa la seal -- interna b_tmp. process begin wait until CLK = '1'; B_tmp <= A and B_tmp; end process; end BEHAVIORAL;

El modelo con variables es ineficiente para sntesis pues utiliza un registro adicional.

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 6

Seales frente a variables (2)


VARIABLE_ARCH: process variable SUM: std_logic; begin wait until CLK = '1'; if RST = '0' then SUM := '0'; else SUM := SUM + '1'; end if; O1 <= SUM; end process;

Estructuras condicionales (1)


La estructura de la lgica sintetizada se infiere directamente de la estructura del cdigo VHDL de partida.
t

Sentencia if, else Genera lgica ms estructurada => suele ocupar menos rea Sentencia case Genera lgica ms paralela => suele ser ms rpida Recomendaciones: Usar case para decodificaciones complejas. Usar if para caminos crticos.
Genera lgica en que cada condicin tiene mayor prioridad que la siguiente. Pasar el camino crtico por la primera condicin. En cualquier caso, no usar sentencias if muy anidadas.

'0'
D Q

0 D Q 1

'1'

+
RST

O1

SIGNAL_ARCH: process begin wait until CLK = '1'; if RST = '0' then SUM <= '0'; else SUM <= SUM + '1'; end if; end process; O1 <= SUM; D Q

O1 '0'
0 1

'1'

+
RST

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 7

Estructuras condicionales (2)


t

Operadores aritmticos (1)


t

Ejemplo de estilo de codificacin y eficiencia del hardware sintetizado.

El package std_logic_1164 no incluye funciones aritmticas y de comparacin Para realizar estas funciones, es necesario incluir el package std_logic_arith. Contiene funciones de conversin para pasar de std_logic_vector a signed o unsigned:
Codificacin binaria sin signo
UNSIGNED("1011") -- representa 11

process (SEL,A,B,C,D) begin if SEL = "00" then DO <= A; elsif SEL = "01" then DO <= B; elsif SEL = "10" then DO <= C; else process (SEL,A,B,C,D) DO <= D; begin end if; case SEL is end process; when "00" => DO <= when "01" => DO <= when "10" => DO <= when "11" => DO <= D 0 end case; end process; C 1
0

A; B; C; D;

Codificacin en complemento a 2
SIGNED("1011") -- representa -5

1 0

A DO B SEL[0]

Suministra funciones aritmticas, de comparacin y conversin para los tipos signed, unsigned e integer. Adems se puede incluir el package
std_logic_unsigned: por defecto interpreta los std_logic_vector como sin signo. std_logic_signed: por defecto interpreta los std_logic_vector como complem. a 2.

0 1 0

A SEL[0] SEL[1]

DO
1 0 1

C D SEL[1]

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 8

Operadores aritmticos (2)


t

Compartir recursos
t

Dos posibilidades de codificacin:

library IEEE use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity ARITH is Port ( A: In std_logic_vector (0 to 15); B: In std_logic_vector (0 to 15); O: Out std_logic_vector (0 to 15)); end ARITH; architecture BEHAVIORAL of ARITH is begin O <= UNSIGNED (A) + UNSIGNED (B); end BEHAVIORAL;

Un recurso es un circuito presintetizado que se puede seleccionar para implementar un operador VHDL "complejo", como * La sntesis puede +,compartir los operadores de la misma lnea > , < , >= , <= Los recursos se pueden compartir slo si estn en el mismo proceso y en distintas ramas de sentencias if o case.
if CTL = '0' then Z <= A + B; else Z <= C + D; end if;

library IEEE use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity ARITH is Port ( A: In std_logic_vector (0 to 15); B: In std_logic_vector (0 to 15); O: Out std_logic_vector (0 to 15)); end ARITH; architecture BEHAVIORAL of ARITH is begin O <= A + B; end BEHAVIORAL;

A B

+
0

0 1

C Z

+
B D CTL
0 1

C D CTL

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 9

Particionado del sistema


t

Particionado del sistema: resultados de la sntesis lgica


t

El particionado debe tener en cuenta La funcionalidad y la estructura del diseo. El proceso de sntesis lgica posterior. La estructura de la lgica sintetizada se infiere directamente de la estructura del cdigo VHDL de partida.

Describir toda la lgica combinacional relacionada en un slo bloque. DC no puede optimizar entre bloques. En particular, para el camino crtico
recomendable modificar la jerarqua para que est contenido en un nico bloque.

Un particionado adecuado consigue Alcanzar los mejores resultados de la sntesis lgica. Acelerar el proceso de sntesis. Simplificar las restricciones de optimizacin. Aunque el particionado se define en SGE al principio del diseo, se puede modificar en DC mediante las rdenes group y ungroup.

Describir los recursos que se pueden compartir en el mismo bloque. Es la nica forma para que DC los pueda compartir. Separar en bloques distintos las partes a optimizar con diferentes objetivos o estrategias. Area frente a velocidad. Lgica aleatoria frente a estructurada. ...

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 10

Particionado del sistema: acelerar el proceso de sntesis


t

Particionado del sistema: simplificar las restricciones


t t t

Eliminar lgica entre bloques. El diseo slo debe contener puertas en los ltimos bloques de la jerarqua. NO

Registrar todas las salidas. Utilizar un nico reloj en cada bloque. Separar los FF que se disparan con distintos flancos. Test Compiler genera las cadenas de registros para los de un tipo de flanco.
De los otros se olvida.

Aislar las mquinas de estados si se desean optimizar con su compilador especfico.

Nmero de puertas. Limitar entre 250 y 5000 puertas los ltimos bloques de la jerarqua.
Depende de la CPU y de la memoria disponible en la mquina.

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 11

ENTORNO DE SYNOPSYS: Flujo de diseo TEMA 3: SINTESIS LOGICA


t t t VHDL Comportamental Sntesis Lgica Descripcin Booleana

Introduccin Codificacin VHDL orientada a sntesis Sntesis lgica con Synopsys Entorno de Synopsys Empezar con Design Analyzer Descripcin del entorno del diseo Restricciones en el proceso de sntesis Optimizacin Anlisis del diseo
Librera de Celdas Objetivos de Diseo Descripcin Booleana Optimizada Mapeado Tecnolgico NO

Area, velocidad

Netlist Vectores de test NO NO

Cobertura de Fallos Simulacin lgica

DISEO FISICO

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 12

Entorno de Synopsys: Herramientas de sntesis


Design Analyzer

Entorno de Synopsys: Interfaz con Design Compiler


t

SGE
Captura del diseo VHDL

VHDL Compiler
Sntesis

Modos de interaccionar con DC: design_analyzer invoca el interfaz grfico de Synopsys. dc_shell invoca el interfaz de lnea de comandos.
Interfaz grfico con mens

Synthetic Library Compiler


Esquemas Tablas de estados Objetivos Librera tecnolgica

Design Compiler Family


Optimizacin del circuito

Design Analyzer

FPGA Compiler

Design Compiler
(CMOS)

Design Compiler dc_shell

Test Compiler

Library Compiler

Vectores de test

Lnea de comandos

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 13

EMPEZAR CON DESIGN ANALYZER


t t t t

Configuracin inicial
t

Configuracin inicial Libreras tecnolgicas Generadores de macroceldas Iniciar un diseo analyze y elaborate read

Cuando DC arranca, lee el archivo .synopsys_dc.setup Se pueden leer hasta tres archivos:
.synopsys_dc.setup del sistema. .synopsys_dc.setup del directorio home. .synopsys_dc.setup del direct. de trabajo.

Se leen en el orden listado y prevalece el ltimo ledo.


t t

Permite personalizar el entorno de trabajo. Contiene informacin sobre: Lista de directorios en los que DC debe buscar los archivos
search_path = {. /usr/my_dir/design}

Libreras tecnolgicas a utilizar:


target_library = "___.db" symbol_library = "___.sdb" link_library = { }

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 14

Libreras tecnolgicas (1)


t

Libreras tecnolgicas (2): Ejemplo hoja caractersticas


StdLib

Contiene las celdas prediseadas que sern utilizadas en el proceso de sntesis lgica. DC utiliza las libreras tecnolgicas asignadas a las variables: target_library link_library Ejemplo para CELDAS ESTANDAR Proceso: ECPD10 (1.0 micra) Lista de Componentes:
StandardLib PadLib2

ECPD07
2-input NAND

NA2
Truth Table Datasheet Version: 2.0
Y 1 1 0 A 0 X 1 B X 0 1

Symbol

Y = A AND B A Y B Code X Y Ntran Parameter Length Height Transistor count AC Power dissipation Value 10.000 38.000 4 2.21 Unit um um trans uW/MHz NA2

Power

Input/Output Specifications
Input A B Description Data in Data in Fanin 0.048 0.050 Unit pF pF Output Y Description Data out Fanout 0.82 Unit pF

Informacin de cada celda:


Propagation Delays
Code From A A B B ANY ANY To Y Y Y Y Y Y Min 0.07 0.04 0.05 0.07 0.55 0.46 Typ 0.14 0.09 0.11 0.14 1.18 0.97 Max 0.27 0.18 0.21 0.28 2.33 1.93 Mil 0.32 0.21 0.25 0.32 2.71 2.24 Unit ns ns ns ns ns/pF ns/pF tplh tphl tplh tphl dtplh dtphl

Funcin Lgica Entradas/Salidas Parmetros temporales Area

Page 2-42

E02A03

Universidad de Zaragoza, IEC.

Luis A. Barragn y Jos I. Artigas

Sntesis lgica - 15

Você também pode gostar