Escolar Documentos
Profissional Documentos
Cultura Documentos
Diciembre 1.997
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
Representaciones de diseo
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
M dulos U nidades
F ISIC A
PC Bs M CM s
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 uertas FFs
El proceso de diseo evoluciona desde la especificacin del circuito electrnico hasta su fabricacin Existen diferentes alternativas
ESPECIFICACION
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
D ISP O SI T IV O
R E G IST R O
L O G IC O
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
L O G IC O
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
Pads
SSI/MSI
LSI/VLSI
ASIC ASIC
RAM
ADC
Universidad de Zaragoza, IEC. Luis A. Barragn y Jos I. Artigas Proceso de diseo de sistemas digitales - 6
C ell L ibrary
A C D B
Routing channels
Routing
Universidad de Zaragoza, IEC. Luis A. Barragn y Jos I. Artigas Proceso de diseo de sistemas digitales - 7
C ell T ype
V ari able
V ariable
F ix ed
P ro g ram .
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
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
C apa s a F ab r icar
Luis A. Barragn y Jos I. Artigas
A r ea
HERRAMIENTAS CAD
t
Herramientas de Modelado
t
Clasificacin Modelado
Captura de Esquemas HDL
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
Test
Generacin de vectores de test Cobertura de fallos
Herramientas de Modelado
t
Herramientas de Sntesis
t
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
HDLs ms utilizados:
VHDL Origen Dominio Parecido a IEEE estndar Pblico ADA Verilog Cadence Pblico C, Pascal
t
Altera
Cadence
ASIC FPGA PLD FPGA ASIC FPGA ASIC FPGA ASIC FPGA
Diseo de la arquitectura
Cypress
Especificacin RTL
Descripcin HDL
RTL, MEF Test, Datapath RTL, MEF Test RTL, MEF Test
Netlist de puertas
Viewlogic
Layout
Manual Automatizado
Anlisis Temporal
Sntesis Lgica
Netlist de Puertas
Pre-sntesis
Codificacin VHDL
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
Lenguaje VHDL - 1
Breve historia
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
Lenguaje VHDL - 2
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
Lenguaje VHDL - 3
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
t t
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
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;
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
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
<
>
<=
>=
CONCATENACIN
&
Lenguaje VHDL - 7
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
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
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
-- Declaracin de items que sern -- utilizados dentro del cuerpo de -- la arquitectura -- Los nombres de los puertos y -- genricos no requieren ser -- declarados
BEGIN
-- 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
Lenguaje VHDL - 10
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.
Lenguaje VHDL - 11
Smbolo
OUT_DATA(15:0)
IN_DATA(15:0) DATA_RDY
ppp.sch
odf odf
I_2
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
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
Lenguaje VHDL - 13
Introduccin
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
-- 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
Lenguaje VHDL - 14
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;
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
Lenguaje VHDL - 15
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.
Lenguaje VHDL - 16
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
Lenguaje VHDL - 17
Sentencias secuenciales
t
Sentencias de asignacin
t
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)
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;
Lenguaje VHDL - 19
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;
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;
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
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
Lenguaje VHDL - 22
Ciclo de simulacin
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'
E B <= '1' after 20ns; D <= C; C <= B; E <= D; F <= E after 20ns;
*D *C * 20 ns
B F
* 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
Lenguaje VHDL - 23
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
Lenguaje VHDL - 24
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;
* * *
Z C B A B C Z 20ns 20ns + 3
* 20 ns
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:
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
Lenguaje VHDL - 26
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.
Lenguaje VHDL - 27
Circuitos combinacionales
t
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
C t
Lenguaje VHDL - 28
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
Lenguaje VHDL - 29
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
Lenguaje VHDL - 30
Circuitos secuenciales
t
Flip-Flop
t
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;
Lenguaje VHDL - 31
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
Lenguaje VHDL - 32
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
Lenguaje VHDL - 33
SIMULACION
t t
Entornos de test
t
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
OUT_DATA
Lenguaje VHDL - 34
Generacin de estmulos
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
--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') );
Lenguaje VHDL - 35
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
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;
Lenguaje VHDL - 37
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
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
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
Librera de Celdas
Objetivos de Diseo
A B C
HERRAMIENTA DE SNTESIS
A B C
Netlist
A B C D
Sntesis lgica - 3
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.
Sntesis lgica - 4
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.
Sntesis lgica - 5
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.
Sntesis lgica - 6
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
Sntesis lgica - 7
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]
Sntesis lgica - 8
Compartir recursos
t
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
Sntesis lgica - 9
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. ...
Sntesis lgica - 10
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.
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.
Sntesis lgica - 11
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
DISEO FISICO
Sntesis lgica - 12
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
Design Analyzer
FPGA Compiler
Design Compiler
(CMOS)
Test Compiler
Library Compiler
Vectores de test
Lnea de comandos
Sntesis lgica - 13
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.
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}
Sntesis lgica - 14
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
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
Page 2-42
E02A03
Sntesis lgica - 15