Metodología “top-down” Especificación ❏ Validación TEMA 3: SINTESIS LOGICA Introducción Codificación VHDL orientada a síntesis ❏ Síntesis lógica con Synopsys – Entorno de Synopsys – Empezar con Design Analyzer – Descripción del entorno del diseño – Restricciones en el proceso de síntesis – Optimización – Análisis del diseño Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas Diseño Físico Test ❏ Biblioteca de componentes Validación Síntesis Fabricación Síntesis lógica - 1 Síntesis ❏ Introducción Síntesis: conversión de una descripción comportamental en una estructural, en la que cada bloque es un componente de la biblioteca elegida Tareas de síntesis ❏ Descripción VHDL de un sistema. Requisitos: – Capturar la funcionalidad – Cumplir especificaciones de diseño – Ser SINTETIZABLE ❏ SINTESIS: proceso de transformar una descripción VHDL comportamental/RTL en un netlist de puertas y biestables de una tecnología dada ❏ La descripción funcional VHDL es independiente de la tecnología. Sin embargo: Síntesis de la arquitectura EL CIRCUITO SINTETIZADO DEPENDE FUERTEMENTE DEL ESTILO DE CODIFICACION Síntesis Lógica Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas Síntesis lógica - 2 Introducción ❏ Introducción 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 Síntesis: – Estilo de diseño => Celdas estándar – Herramienta de síntesis => Synopsys – Librería de celdas => ES2 HDL Comportamental /RTL Librería de Celdas A B C Objetivos de Diseño HERRAMIENTA DE SÍNTESIS A B C Netlist de puertas optimizado e independiente de la tecnología D Netlist para una tecnología: - CMOS, nº metales, 1µ - Fabricante D Netlist A B C Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas D Buffers adicionales para satisfacer necesidades de corriente Síntesis lógica - 3 Codificación VHDL orientada a síntesis ❏ TEMA 3: SINTESIS LOGICA • Recordar que VHDL es principalmente un lenguaje de descripción de hardware. ❏ Introducción ❏ Codificación VHDL orientada a síntesis ❏ Síntesis lógica con Synopsys – Entorno de Synopsys – Empezar con Design Analyzer – Descripción del entorno del diseño – Restricciones en el proceso de síntesis – Optimización – Análisis del diseño Universidad de Zaragoza, IEC. La síntesis lógica es muy dependiente del estilo de código utilizado. – Pensar en téminos de circuito. – Estilo recomendado: • Sentencias de asignación de señal concurrentes. • Procesos simples. • Uso de componentes para el particionado. ❏ Luis A. Barragán y José I. Artigas Vamos a considerar los siguientes temas: – Tipos VHDL. – Señales frente a variables. – Estructuras condicionales. – Operadores aritméticos. – Compartir recursos. – Particionado del sistema. Síntesis lógica - 4 Tipos VHDL (1) ❏ Tipos VHDL (2) Tipos soportados para síntesis: ❏ El package std_logic_1164 de la librería IEEE contiene: – Los tipos std_logic y std_logic_vector – Funciones lógicas y de conversión de tipos. ❏ Es recomendable usar el tipo Std_logic – Sus 9 valores son muy apropiados para describir el comportamiento del hardware. – En simulación se inicializa a 'U', lo que ayuda a no olvidar el RESET. STD_LOGIC Tiene 9 valores: 'U' → Sin inicializar; no tiene significado en síntesis. '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 (débil). 'L' → Cero (débil); resistencias pull-down. 'H' → Uno (débil); 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) ¡Ojo!, no inicializar las señales cuando se declaran: INTEGER signal out1: std_logic:= '0'; --mala idea Si no se acota el rango, se sintetizan 32 bits. integer range 0 to 7 → Se sintetizan 3 bits. La herramienta de síntesis ignora las inicializaciones, puesto que no tienen sentido circuital. TIPOS ENUMERADOS – En particular, usar Std_logic para la declaración de todos los puertos de entidades. Por defecto se codifican en representación binaria type STATE_TYPE is (S0, S1, S2, S3, S4); S0 → "000", S1 → "001", ..., S4 → "100", 3 bits. En la codificación de MEF, incorporar mecanismos para salir de estados no deseados, por ejemplo "101". Ö Universidad de Zaragoza, IEC. • Evita la necesidad de funciones de conversión en la jerarquía. Luis A. Barragán y José I. Artigas Síntesis lógica - 5 Tipos VHDL (3) ❏ Minimizar el uso de puertos declarados como BUFFER. – El modo buffer se usa cuando se desea leer internamente una señal de salida. – El inconveniente es que el modo buffer se propaga por la jerarquía. – Solución: declarar el puerto como OUT y añadir una señal interna. entity BUF is port (A: In std_logic; CLK: In std_logic; B: Out std_logic); end BUF; Señales frente a variables (1) ❏ Las variables se actualizan en el instante – se simulan más rápido, pero – pueden enmascarar aleas. ❏ Las señales esperan un delta de tiempo antes de tomar un nuevo valor – simulación más lenta, pero – su comportamiento se acerca más al hardware que las variables. ❏ Es recomendable usar señales para la descripción de hardware. Las variables se pueden sintetizar de forma ineficiente. – Ejemplo pág. siguiente: circuito modelado con variables y con señales. architecture BEHAVIORAL of BUF is signal B_tmp: std_logic; -- señal interna begin B <= B_tmp; -- asignación concurrente -- En el código, ya sólo se usa la señal -- interna b_tmp. process begin wait until CLK = '1'; B_tmp <= A and B_tmp; end process; end BEHAVIORAL; Universidad de Zaragoza, IEC. • VHDL Compiler genera un registro para todas las señales y algunas variables asignadas en un proceso con wait o 'event. – El modelo con variables es ineficiente para síntesis pues utiliza un registro adicional. Luis A. Barragán y José I. Artigas Síntesis lógica - 6 Señales frente a variables (2) Estructuras condicionales (1) 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; '0' D Q '1' La estructura de la lógica sintetizada se infiere directamente de la estructura del código VHDL de partida. Sentencia if, else – Genera lógica más estructurada => – suele ocupar menos área ❏ Sentencia case – Genera lógica más paralela => – suele ser más rápida ❏ Recomendaciones: – Usar case para decodificaciones complejas. – Usar if para caminos críticos. 0 O1 D Q + ❏ 1 RST SIGNAL_ARCH: process begin wait until CLK = '1'; if RST = '0' then SUM <= '0'; else SUM <= SUM + '1'; end if; end process; O1 O1 <= SUM; '0' D Q '1' + • Genera lógica en que cada condición tiene mayor prioridad que la siguiente. Pasar el camino crítico por la primera condición. • En cualquier caso, no usar sentencias if muy anidadas. 0 1 RST Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas Síntesis lógica - 7 Estructuras condicionales (2) ❏ Operadores aritméticos (1) Ejemplo de estilo de codificación y eficiencia del hardware sintetizado. 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 ❏ El package std_logic_1164 no incluye funciones aritméticas y de comparación ❏ Para realizar estas funciones, es necesario incluir el package std_logic_arith. – Contiene funciones de conversión para pasar de std_logic_vector a signed o unsigned: • Codificación binaria sin signo UNSIGNED("1011") -- representa 11 A; B; C; D; 0 B 1 0 DO A SEL[0] SEL[1] 1 A 0 B 1 0 SEL[0] DO 1 C 0 D 1 • Codificación en complemento a 2 SIGNED("1011") -- representa -5 – Suministra funciones aritméticas, de comparación y conversión para los tipos signed, unsigned e integer. – Además 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. SEL[1] Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas Síntesis lógica - 8 Operadores aritméticos (2) ❏ Dos posibilidades de codificación: 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; Compartir recursos ❏ Un recurso es un circuito presintetizado que se puede seleccionar para implementar un operador VHDL "complejo", como * La síntesis puede +,compartir los operadores de la misma línea > , < , >= , <= ❏ Los recursos se pueden compartir sólo si están 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 A 0 C 1 B 0 D 1 + Z C D CTL Universidad de Zaragoza, IEC. + Luis A. Barragán y José I. Artigas 1 + Z CTL Síntesis lógica - 9 Particionado del sistema ❏ El particionado debe tener en cuenta – La funcionalidad y la estructura del diseño. – El proceso de síntesis lógica posterior. La estructura de la lógica sintetizada se infiere directamente de la estructura del código VHDL de partida. ❏ ❏ Un particionado adecuado consigue – Alcanzar los mejores resultados de la síntesis lógica. – Acelerar el proceso de síntesis. – Simplificar las restricciones de optimización. Particionado del sistema: resultados de la síntesis lógica ❏ • recomendable modificar la jerarquía para que esté contenido en un único bloque. ❏ 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. – Lógica aleatoria frente a estructurada. – ... Aunque el particionado se define en SGE al principio del diseño, se puede modificar en DC mediante las órdenes group y ungroup. Universidad de Zaragoza, IEC. Describir toda la lógica combinacional relacionada en un sólo bloque. – DC no puede optimizar entre bloques. – En particular, para el camino crítico Luis A. Barragán y José I. Artigas Síntesis lógica - 10 Particionado del sistema: acelerar el proceso de síntesis ❏ Eliminar lógica entre bloques. – El diseño sólo debe contener puertas en los últimos bloques de la jerarquía. NO Particionado del sistema: simplificar las restricciones ❏ 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 máquinas de estados – si se desean optimizar con su compilador específico. Número de puertas. – Limitar entre 250 y 5000 puertas los últimos bloques de la jerarquía. • Depende de la CPU y de la memoria disponible en la máquina. Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas Síntesis lógica - 11 ENTORNO DE SYNOPSYS: Flujo de diseño TEMA 3: SINTESIS LOGICA VHDL Comportamental Síntesis Lógica Descripción Booleana ❏ Introducción ❏ Codificación VHDL orientada a síntesis ❏ Síntesis lógica con Synopsys – Entorno de Synopsys – Empezar con Design Analyzer – Descripción del entorno del diseño – Restricciones en el proceso de síntesis – Optimización – Análisis del diseño Librería de Celdas Descripción Booleana Optimizada Mapeado Tecnológico Objetivos de Diseño Area, velocidad NO Netlist Vectores de test Cobertura de Fallos Simulación lógica NO NO DISEÑO FISICO Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas Síntesis lógica - 12 Entorno de Synopsys: Herramientas de síntesis Entorno de Synopsys: Interfaz con Design Compiler ❏ Design Analyzer SGE Captura del diseño VHDL Compiler Síntesis Design Compiler Family Optimización del circuito FPGA Compiler Design Compiler (CMOS) Test Compiler VHDL Synthetic Library Compiler Esquemas Tablas de estados Objetivos Interfaz gráfico con menús Design Analyzer Librería tecnológica Design Compiler dc_shell Library Compiler Vectores de test Universidad de Zaragoza, IEC. Modos de interaccionar con DC: – design_analyzer invoca el interfaz gráfico de Synopsys. – dc_shell invoca el interfaz de línea de comandos. Línea de comandos Luis A. Barragán y José I. Artigas Síntesis lógica - 13 EMPEZAR CON DESIGN ANALYZER ❏ Configuración inicial ❏ Librerías tecnológicas ❏ Generadores de macroceldas ❏ Iniciar un diseño – analyze y elaborate – read Configuración inicial ❏ 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 leído. ❏ Permite personalizar el entorno de trabajo. ❏ Contiene información sobre: – Lista de directorios en los que DC debe buscar los archivos • search_path = {. /usr/my_dir/design} – Librerías tecnológicas a utilizar: • target_library = "___.db" • symbol_library = "___.sdb" • link_library = { } Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas Síntesis lógica - 14 Librerías tecnológicas (1) ❏ Librerías tecnológicas (2): Ejemplo hoja características Contiene las celdas prediseñadas que serán utilizadas en el proceso de síntesis lógica. NA2 2-input NAND Truth Table ❏ ❏ ECPD07 StdLib DC utiliza las librerías tecnológicas asignadas a las variables: – target_library – link_library Datasheet Version: 2.0 A B Y 0 X 1 X 0 1 1 1 0 Symbol Y = A AND B A Y B Ejemplo para CELDAS ESTANDAR – Proceso: ECPD10 (1.0 micra) – Lista de Componentes: Code Parameter Value X Length 10.000 Y Height 38.000 Ntran Transistor count 4 Power AC Power dissipation 2.21 Unit NA2 um um trans uW/MHz Input/Output Specifications Input Description A Data in 0.048 pF B Data in Fanin 0.050 Unit pF Output Description Y Data out Fanout 0.82 Unit pF • StandardLib • PadLib2 – Información de cada celda: • • • • Propagation Delays Función Lógica Entradas/Salidas Parámetros temporales Area Code From To Min Typ tplh A Y 0.07 0.14 0.27 0.32 ns tphl A Y 0.04 0.09 0.18 0.21 ns tplh B Y 0.05 0.11 0.21 0.25 tphl B Y 0.07 0.14 0.28 0.32 ns dtplh ANY Y 0.55 1.18 2.33 2.71 ns/pF dtphl ANY Y 0.46 0.97 1.93 2.24 ns/pF Page 2-42 Universidad de Zaragoza, IEC. Luis A. Barragán y José I. Artigas Max Mil Unit ns E02A03 Síntesis lógica - 15