Está en la página 1de 10

SUMADOR DE PUNTO FLOTANTE EN VHDL: DISEÑO Y ANÁLISIS DE

ALTERNATIVAS DE OPTIMIZACIÓN
Ignacio E. Sardi, Bruno L. Uberti, Fernando G. Tinetti, Antonio A. Quijano

Centro de Investigación y Desarrollo en Microelectrónica (CIDEM)
Instituto Tecnológico de Buenos Aires (ITBA)
Buenos Aires
Argentina

ftinetti@itba.edu.ar
RESUMEN sistema para luego detallar cada uno de los bloques que
componen el diseño final. Desde el inicio mismo, el
En este trabajo se presenta el diseño de un sumador de énfasis está puesto en la reducción de tiempo de
números representados en punto flotante siguiendo la operación para el circuito (sumador). El trabajo que aquí
norma IEEE. Además de definir una solución de se presenta tiende al diseño de un ASIC, pero no llega
hardware aplicando los principios de paralelización de hasta la obtención del prototipo físico. Para una primera
operaciones establecidos por los pipelines, se analizan aproximación de la síntesis y optimización mediante las
las alternativas de optimización de tiempo de operación herramientas de CAD, se ha adoptado provisoriamente
utilizando herramientas de síntesis de hardware a partir una tecnología CMOS (SXLIB [13]) y la librería y kit de
del lenguaje VHDL. Las alternativas se evalúan en diseño incluidos en Alliance. Pero será parte de una
función de la optimización de tiempo de operación y de etapa futura elegir una tecnología definitiva.
las variaciones de área de silicio estimadas por las Más que proveer un nuevo sumador de punto
herramientas de síntesis. Finalmente, se presenta una flotante se muestra un diseño que es fácil y rápido
posible evolución hacia el cambio del diseño a nivel de gracias a VHDL y mediante las herramientas de síntesis
VHDL del circuito y su impacto en la optimización de también es fácil y rápida la optimización. El sumador se
tiempo. toma más como ejemplo que como aplicación final y la
idea no es proveer el mejor o más rápido sino algunas
1. INTRODUCCION alternativas de optimización de tiempo. En el presente
artículo no sería tampoco posible agregar más detalles
La utilización del lenguaje VHDL [1] es aceptada desde del uso de Alliance debido a las limitaciones de
hace mucho tiempo para la utilización en el diseño, extensión establecidas. En principio, tanto Alliance
simulación e implementación de hardware [2]. Sin como otros entornos de CAD tales como Cadence se
embargo, sigue siendo un problema a resolver la componen de múltiples herramientas usualmente
optimización de distintos aspectos de los circuitos independientes, cada una de ellas enfocada a realizar una
diseñados a la hora de su implementación real. En este tarea específica dentro del ciclo/proceso de diseño.
contexto las herramientas de CAD (Computer Aided En la siguiente sección, se describe la
Design) como Alliance [3] [4] [5] [6] [7] y Cadence [8] arquitectura completa del circuito. En la sección 3 se
son de gran utilidad no solamente para el ciclo completo detallan algunos aspectos relevantes de los bloques que
de desarrollo y verificación de hardware sino también componen el sumador en punto flotante. La sección 4
para el análisis de alternativas de optimización. muestra la síntesis preliminar o sin optimizar del diseño
En este artículo se presenta un ejemplo en función de tiempo de operación y área de silicio
completo de la utilización combinada de VHDL y necesaria. Luego, en la sección 5 se dan los detalles
herramientas de CAD para el diseño, verificación y relevantes de la optimización utilizando las herramientas
optimización de un circuito en particular. Más de CAD. La sección 6 comenta las alternativas de
específicamente, se propone resolver en hardware la optimización de tiempo a nivel de rediseño en VHDL.
suma de números reales cuya representación sigue los Finalmente, la sección 7 detalla las conclusiones y las
lineamientos de la norma IEEE para números de alternativas de trabajo futuro.
precisión simple [9] [10] [11] [12]. El proceso de diseño
comenzará por la descripción de comportamiento del

1

Aunque el A = (-1) X 1. c" 5. 2. se propuso realizar el mismo en IEEE 754. también se muestra cómo se agrupan los Los números de entrada del sumador se bloques funcionales en un pipeline de cuatro etapas. 7. Desplazar c’ a la izquierda u lugares para producir la fracción normalizada c”.Q⏐. Determinar la cantidad u de ceros iniciales en la fracción c’. no se consideran. se puede calcular la suma AddC C = A + B = c 2R en los pasos: T DESPLAZADOR A DERECHA 1. Q). las definiciones de NaN (Not a Number). DESCRIPCION DE LOS BLOQUES 9. Resumiendo.b 2 Q X Y P Q a' b' sumador opera con el cero. con 10. Esta descripción se lleva a cabo con las partes de código más importante de VDHL y en algunos casos se 2 . Además. Detectar los casos especiales en que debe manejarse DESPLAZADOR SignOut R A IZQUIERDA el cero: ambos números de entrada son cero o son iguales y la operación a realizar es la resta.b 2Q . En esta sección se describe el pipeline completo. Calcular R = máx(P. y determinar el mayor de los números ETAPA 2 PASO 7 de entrada: Z (=0 si A < B. y el resto de los números con representación no normalizada. Desplazar a la derecha la fracción asociada con el DE FRACCION número menor T lugares (bits) para igualar los SignOut Exponente Fracción exponentes antes de sumar las fracciones. sin embargo. REDONDEO RESTADOR 6. DESCRIPCION DE LA ARQUITECTURA normalizarla y luego se le suma el eventual acarreo producido en el punto 7. =1 en caso contrario). Determinar el signo del resultado y la operación SignOut Carry binaria a realizar. SUMADOR 3. resultado conocido como desborde de mantisa. y R all_zero Otra Fracción Fracción mín(A.a 2P y B = (-1)Y 1. obteniendo las SignOut fracciones con las que se operará a’ y b’.a 2 P . El signo del resultado está R all_zero c’ determinado por Z (el signo de la suma de los dos números será el signo del número mayor). DE CERO Y Si se consideran las entradas al sumador A y B SELECTOR DE como A = (-1)X 1. B = (-1) Y 1. una serie de etapas (pipelined architecture) [14] aunque en principio implica la utilización de mayor área de Cada uno de estos pasos puede realizarse de distintas silicio para su fabricación. donde X e Y SIGNO Z FRACCION son los signos (1 bit). Clear 4. 2. La operación puede dar un bit de acarreo que se traduce en un incremento del exponente del resultado. determinar la diferencia T =⏐P . Para ETAPA 3 determinar la operación binaria (suma o resta) flip-flop CONTADOR PASOS 8 y 9 bastará con comparar los signos de los respectivos DE CEROS c’ números: X e Y. Agregar el bit implícito de la fracción junto con los bits de guarda a las mantisas a y b. se manejan todos los números ETAPA 1 PASOS 1 a 6 normalizados más el cero de la definición de la norma X COM PARADOR DETECTOR IEEE. Figura 1: Sumador en Cuatro Etapas 8. Esto a su vez incrementa el maneras y la Figura 1 muestra esquemáticamente los costo total del circuito a expensas de su mejor bloques funcionales que resuelven cada una de estas rendimiento. Seleccionar la fracción (a’ o b’) que corresponde al ETAPA 4 PASOS 10 y 11 número menor. Dado que el énfasis está puesto en la velocidad de 11. B) P y Q los exponentes (8 bits). 3. Sumar las fracciones para producir la fracción de la suma no normalizada c’. tareas. Modificar el exponente resultado restando los u todos los bloques funcionales que aparecen en la Figura lugares que se desplazó la fracción para 1. Redondear el número según lo indicado en la norma operación del circuito. a y b son las fracciones (23 bits). consideran representados siguiendo los lineamientos de la norma IEEE 754 de precisión simple.

La Figura 2 muestra el comportamiento del bloque cero o iguales y de signo contrario.1. Esta última señal se utiliza además en dos En la Figura 5 se muestra la implementación en bloques externos. Este bloque es el encargado de ubicar en el rango AddC <= '1' when x = y else '0'. que es operandos X e Y. La salida AddC se entornos de CAD para circuitos integrados. estableciendo de este código las herramientas de síntesis que proveen los esta manera el signo de la operación. Etapa 1 3.agregan esquemas gráficos para aclarar la descripción en (SignOut). y en Figura 4: Esquema del Detector de Cero. Las entradas de este en VHDL.4. T=⏐P-Q⏐ dar cero.B) Figura 2: Bloque Comparador.a 2 P. dentro del mismo rango. para poder realizar la suma end ARCH_sign_comp. La señal Z se utiliza en el selector para indicar cuál de los exponentes de los operandos se debe seleccionar. descripción en VHDL provee una manera casi inmediata La salida SignOut se propaga a través de todo el de implementación.b 2 Q a' P b' Q X Y a’ b’ P Q signal dif_exp_aux: std_logic_vector(7 downto 0). el bloque que se encarga de computar VHDL. lenguaje en cuanto a la creación y utilización de señales intermedias o auxiliares. Bloque Detector de Cero Quizás esta es la etapa que contiene mayor cantidad de Este bloque se encarga de detectar si el resultado puede bloques funcionales y por lo tanto su descripción será la más extensa de las cuatro propuestas. adecuado los dos operandos.p). 3.B) o A = B = 0 poner en el rango adecuado una de las dos fracciones. architecture ARCH_comparador of comparador is A = ( . Bloque Selector de Fracción fracciones (AddC) y el signo de la operación de suma Este bloque funciona como si fuesen dos multiplexores 3 . B = ( .2. se puede notar que hacer la simplicidad de la descripción de este bloque en VHDL. AND AND end ARCH_comparador.Q). architecture ARCH_sign_comp of sign_comp is begin 3. T <= dif_exp_aux when (dif_exp_aux<32) else X"FF". La señal R contiene el exponente en el cual se OR realizará la operación.3. y la señal Z que indica cuál de los dos única: all_zero.1) Y 1.1) X 1. R <= p when z = '1' else q. De hecho. begin ¿= 0? ¿= 0? ¿X ≠Y? ¿a=b? ¿P=Q? Z <= '0' when p < q else out = 1 out = 1 out = 1 out = 1 ou t = 1 '1' when p > q else '0' when a < b else si a & P si b & Q si X ≠Y si a=b si P=Q '1'. números (A o B) es el mayor (Z = 1 si A > B).1. es decir bajo el mismo exponente. caso de igualdad de exponentes selecciona la fracción mayor. Recibe como entradas a los exponentes y Figura 3: Bloque Signo. donde se puede notar también la versatilidad del el signo y el bloque selector de fracciones. fracciones de los correspondientes números a ser sumados y tiene como salidas a R=máx(P. En la Figura 3 se puede observar la VHDL. En la Figura 4 se -.1. Bloque de Signo utilizadas en este caso para la generación del valor Las entradas que posee este bloque son los signos de los correcto para la señal de salida de este bloque. =0 =0 dif_exp_aux <= (p – q) when z = '1' else (q .1. Para ello verifica que las entradas sean ambas y Z. Tiene como salidas el tipo de operación a realizar con las 3. la señal T indica al bloque de desplazamiento cuánto tiene que mover al dato para all_zero = 0 si A=( .1. Estas señales intermedias son 3. =1 si A=B=0 =1 si A=( . bloque son los dos operandos: A y B.## Celda Comparador ## muestra el diagrama esquemático de este bloque. Bloque de Comparación SignOut <= x when sel = '1' else y.1. dado que se pueden utilizar sobre pipeline hasta llegar a la última etapa. utiliza en la siguiente etapa para saber si se suman o restan las fracciones.

restantes bits de la fracción). Por la otra salida. signal zero_b : std_logic. una demora sustancial en esta etapa del Figura 8: Bloque Desplazador a Derecha. paralelo que tiene conectadas pero su diseño y ruteo en signal b_info : std_logic_vector(30 downto 0). “mux_out2” saldrá la fracción que corresponda al número mayor. exponentes (debido a los bits de guarda junto con los end ARCH_sft_der. Bloque Desplazador a Derecha Este bloque debe ser rápido para no retrasar al pipeline..1. multiplexor que es manejado por un bit de selección. begin -. Un posible esquema de signal zero_a : std_logic.son similares . all_inputs_zero <= '1' when (zero_a='1' and Shift zero_b='1') else '0'. comp. 4 ..5. uno lineal [15] y otro logarítmico [16].que se encargan de dirigir el flujo de datos de cada una pipeline. en el peor de los casos. para poder desplazar a la fracción e igualar los fr_out <= stg5_a when shft(4) = '0' else stg5_b. 0 Figura 5: Bloque Detector de Cero. es por ello que se optó por realizarlo en forma combinacional y no con registros. por consiguiente. zero_b <= '1' when b_info=("000"&X"0000000") else '0'. El primero es más lento que Architecture ARCH_zero_verif of zero_verification is el logarítmico debido a la cantidad de compuertas en Signal a_info : std_logic_vector(30 downto 0)..creación de un solo vector para facilitar la a a a a . Se tendría. end ARCH_zero_verif. Shift contenida en la señal “sel” que. VHDL que describe este bloque.. necesitarían. signal stg5_a : std_logic_vector (30 downto 0). eq_inputs <= '1' when ((x/=y)and(a=b)and(q=p))else 0 '0'. Por la salida denominada “mux_out1” saldrá la fracción que corresponda al menor de los dos números. a_info (30 downto 23) <= p. Figura 6: Bloque Selector de Fracción. es la señal Z 1 0 1 0 1 0 1 0 producida en el bloque Comparador.etapa 1 del desplazador logarítmico stg1_a <= fraction. 0 a_info (22 downto 0) <= a. donde cada bloque representa un signal all_inputs_zero : std_logic. Dentro de los circuitos combinacionales se de las fracciones. mux_out1 <= a when sel = '0' else b.etapa 5 del desplazador logarítmico stg5_b(30 downto 15) <= X"0000". Shift b_info (22 downto 0) <= b.## Celda Multiplexor ## architecture ARCH_sft_der of sft_der is architecture ARCH_multiplexor of multiplexor is signal stg1_a : std_logic_vector (30 downto 0). -.. implementación del desplazador logarítmico se muestra signal eq_inputs : std_logic. stg2_a <= stg1_a when shft(0) = '0' else stg1_b. signal stg1_b : std_logic_vector (30 downto 0).etapa2 2 a 4 del desplazador logarítmico -. En la Figura 6 se muestra el código Figura 7: Esquema del Desplazador. 3. Se utiliza la información que está tienen dos tipos distintos de desplazadores. Al utilizar registros se -.. -. stg1_b(30) <= '0'. 1 0 1 0 1 0 1 0 zero_a <= '1' when a_info=("000"&X"0000000") else '0'. b_info (30 downto 23) <= q. mux_out2 <= b when sel = '0' else a. layout es más sencillo. están las líneas de código que son similares a las -. stg1_b(29 downto 0) <= fraction(30 downto 1). donde además se puede notar una vez más el poder de descripción de este La Figura 8 muestra de manera reducida (no lenguaje. 1 0 1 0 1 0 1 0 all_zero <= '0' when (all_inputs_zero or eq_inputs) else '1'. begin . en la Figura 7. signal stg5_b : std_logic_vector (30 downto 0). begin end ARCH_multiplexor. 31 pulsos de reloj stg5_b(14 downto 0) <= stg5_a(30 downto 16). de hecho.

velocidad de operación (reducción de tiempo).adder2). adder2(30 downto 0) <= b. Etapa 2: Bloque de Suma o Resta de Fracciones Frac_1 Frac_2 En esta etapa se resuelve efectivamente la operación binaria a realizar. En el código de VHDL que se Frac_1+Frac_2 si AddC=1 Frac_1-Frac_2 si AddC=0 observa en la Figura 9 no se puede determinar la manera en que está implementado. ubicada en la 32 veces (25 ya que es logarítmico en base 2). la cuarta en 8 y la quinta en 16. Dentro de esta etapa. signal adder2 : std_logic_vector (31 downto 0). En el caso de trabajar con otro entorno de diseño.3. La última etapa del pipeline. se tienen dos alternativas en cuanto al resultado de la operación: se debe producir un cero a end ARCH_frac_adder. la tercera ajustar el exponente por el desborde producido en la en 4. tal como lo establece la norma. adder1(30 downto 0) <= a. Este bloque opera con cantidad u de ceros que hay al principio de la fracción. 5 . c’ <= res_add(30 downto 0) when carry = '0' else res_add(31 downto 1). adder2(31) <= '0'.1. Este bloque es de vital importancia ya que es uno de los que más puede demorar al pipeline dado que la propagación del carry es notoria para la suma o resta Frac_1 + Frac_2 Frac_1 . AddC. pero para dar formato a la salida distinta de El entorno de diseño Alliance provee la cero se deben realizar varias operaciones que se facilidad de especificar esto como una opción de una de describen en los bloques a continuación. 3. las segunda en 2. una señal etapas (5 en total) para poder desplazar a la entrada en es enviada al restador de exponentes. Figura 10: Esquema del Sumador. carry begin c' = A2 si carry = 0 c’ = A1 si carry = 1 adder1(31) <= '0'. Etapa 3 carry <= res_add(31). que le indica si fracción a izquierda. Como contrapartida. las herramientas de compilación/síntesis de código. SELECTOR signal res_add : std_logic_vector (31 downto 0). AddC Bit extra F_1 Bit extra F_2 de carry de carry 0 0 3. por lo operando con una señal interna de carry para indicar el que el desplazador implementado fue el logarítmico. combinaciones de éstas se puede desplazar al dato de 0 a 31. una señal externa que se calcula en la unidad que Esta salida (u) es utilizada luego para desplazar la computa el signo de la operación. esquemática la operación de este bloque e indica cómo Nuevamente se dio prioridad al aumento en la es tenido en cuenta el caso de desborde de mantisa.Frac_2 de dos números de 31 bits. Producir un cero es sencillo. la salida o se debe trabajar sobre el resultado binario de la operación para producir el formato de punto flotante Figura 9: Bloque Sumador.2. Tomando operación parcial. De hecho. lo que se SELECTOR pierde es área de silicio ya que este tipo de sumador ocupa más espacio. para indicarle que tiene que primera etapa desplaza en 1. Por este motivo se eligió un sumador (o restador) con carry look-ahead para acelerar el cálculo del carry. Bloque Contador de Ceros especificar directamente en VHDL el circuito Se basa en un circuito combinacional que determina la combinacional que corresponde. res_add <= (adder1 + adder2) when AddC = '1' else (adder1 . A1 architecture ARCH_frac_adder of frac_adder is A2 signal adder1 : std_logic_vector (31 downto 0). En el caso de ocurrir desborde. desborde y poniendo el resultado de la operación en el Este circuito combinacional consta de una serie de rango correcto. además de la operación binaria (que puede ser de suma o resta) se debe calcular/generar la señal de carry o borrow de la SUMA RESTA operación.incluidas) la descripción en VHDL del bloque de El gráfico de la Figura 10 muestra de manera desplazamiento. Su implementación es similar a la debe realizar una operación de suma o resta. se podría 3.3.

se vez que la fracción ya está normalizada. reducida (para no repetir líneas de código similares) la exponente <= r . las dos señales se restan para dar el exponente “área” de silicio y tiempo de propagación (ejecución) de correcto. La Figura 12 muestra el código VHDL herramientas de CAD. en este caso las provistas por correspondiente. ceros a la derecha. Etapa 4 Figura 13: Bloque de Redondeo de Fracción. 4.u + carry_vector. como entrada un conjunto de 31 bits dentro de los cuales se encuentra la fracción junto con los bits de guarda y se architecture ARCH_exp_sub of exp_sub is fija en donde aparece el primer 1 lógico desde el bit más signal carry_vector : std_logic_vector significativo hasta el menos significativo codificando (7 downto 0) := X"00". señal carry indica que se debe ajustar nuevamente el Para la etapa de síntesis se utilizan las exponente.de un priority encoder [17]. La Figura 11 muestra de manera carry_vector(0) <= carry. este entorno utiliza un con carry look-ahead si se quiere ganar en velocidad.4. se opera por con la posibilidad de dar distintas alternativas para la separado sobre el exponente y sobre la mantisa del asignación de los valores posibles de una señal. pero esto va a depender de cómo sean las velocidades de minimizando las expresiones (ecuaciones) en cada nodo las otras etapas del pipeline. y la señal u del bloque que se normalmente surgen dos posturas bien definidas que encarga de contar los ceros al principio del resultado de definen la relación costo – beneficio: el consumo de la suma. SÍNTESIS DEL CIRCUITO 3.1. Además. La señal R proviene del componen para su posterior optimización. end Arch_round_block. sobre los los bits adicionales llamados bits de guarda. se sintetiza cada uno de los bloques que lo normalizado del resultado. Para realizar el redondeo se debe tomar la decisión de architecture Arch_ZeroCounter of ZeroCounter is sumar un bit al bit menos significativo de la mantisa del resultado en caso que corresponda. Este bloque puede ser implementado Alliance. end ARCH_exp_sub. y entrega como salida el exponente lógica. 3.2. ya que usualmente más de la red. el código VHDL que describe este bloque. Bloque de Recálculo de Exponente Este bloque realiza el ajuste del exponente una Una vez finalizada la descripción del sumador. Recibe las verifica su correcto funcionamiento vía simulación señales R. U y carry. la cada bloque. Bloque de Redondeo de Fracción desplazamiento). Aquí comparador de la etapa 1. descripción en VHDL del bloque que cuenta los ceros al principio de la fracción de entrada. c’’ + X"00000080".round_block u <= X"1F" when (Mantisa(30 downto 0) = zerovector(30 downto 0)) else architecture Arch_round_block of round_block is X"1E" when (Mantisa(30 downto 1) = zerovector(30 downto 1)) else begin … X"02" when (Mantisa(30 downto 29) = fraccion <= (c’’ + X"00000080") when zerovector(30 downto 29)) else (c’’(6 downto 0) > "1000000") X"01" when Mantisa(30) = zerovector(30) else else X"00". La única diferencia reside en que este Este bloque lleva a cabo la operación de redondeo según desplazamiento del dato de entrada a izquierda agrega. Dado que ya se han producido los potencia de expresión del lenguaje VHDL. o sea que este bloque recibe velocidad produce un gasto mayor en área de silicio. La Figura 13 muestra signal zerovector : bit_vector(30 downto 0) := "000" & X"0000000". Para la optimización. begin -. resultado. Bloque Desplazador a Izquierda Figura 12: Bloque de Recálculo de Exponente. indica la norma IEEE 754 [18]. c’’ when (c’’(6 downto 0) < "1000000") end Arch_ZeroCounter. 3. si ocurrió desborde de mantisa. dicha posición en forma binaria y dando este valor como begin resultado del bloque. Este bloque fue implementado igual que el desplazador a derecha (en cuanto a la cantidad logarítmica de pasos de 3. En esta etapa se realizan los últimos ajustes para producir la salida correcta de la operación realizada en el También en este bloque se puede apreciar la formato correcto. luego. else c’’ when (fraction_N(7) = '0') else Figura 11: Bloque Contador de Ceros.4. en particular datos necesarios en los pasos anteriores.4. El resultado arrojado da una menor 6 . algoritmo que construye una red lógica equivalente.3. Básicamente trabaja además.2.

debería ser posible llamado “standard cell mapping”. que es la de mayor tiempo Registros* . por ejemplo. Esta forma de Etapa 3 Contador de Ceros* . 643 157750 de la información de la Tabla 1. Esto necesario mejorar las Etapas 1 y 2 para acercarlas a los significa que las herramientas de optimización intentan tiempos de las Etapas 3 y 4. un de hardware a cada etapa de un pipeline no conjunto de celdas que produce la misma ecuación necesariamente puede ser hecha por las herramientas de lógica de dicho nodo.* . Específicamente. manteniendo la Registros* . Este es el mencionaron anteriormente. Dentro de los diferentes identificación de los bloques de hardware que etapas para minimizar el tiempo de propagación o el área pertenecen al camino crítico de propagación de las de silicio. el tiempo está Desplazador a Der. Esta información de camino crítico se utiliza en porcentual cuál de estos dos parámetros se requiere la Tabla 1 para calcular el tiempo total de operación de optimizar en mayor medida. dado que en este caso. 882 565750 de propagación: 11681 ps. Analizando los datos de la Tabla 1. el tiempo de cada etapa En la Tabla 1 se muestra un resumen de los estará dado por la suma de los tiempos de propagación tiempos de propagación de cada bloque con el área de de los bloques del camino crítico dentro de la etapa. (ps) (λ2) Una vez que se tiene la información de síntesis Etapa 1 Signo . Para esto se puede hacer uso el mejor balance entre el área ocupada y el tiempo de de las herramientas de optimización y síntesis que se propagación de las señales en todo el pipeline. Registros* . Para evitar una cantidad muy Tabla 1 en cuanto a los bloques: el tiempo de grande de posibilidades de optimización y de tiempo de propagación de cada bloque. 2366 306250 determinado por la Etapa 2. Total E4 CLA 5737 910500 ps: picosegundo (10-12 seg). De compuertas para disminuir el “delay” y la capacidad. 5. 2 RCA: Ripple Carry Adder. cada etapa. el reconexionado de las posible. Por último. se puede 2 Comparador RCA 16947 303500 calcular el tiempo de operación del pipeline. Total E1 CLA 9873 1747250 En vez de sintetizar y optimizar todo el circuito. 1923 136500 Selector de Frac. 2655 337750 Flip Flop Neg. en lo posible. En una implementación del estilo pipeline es necesario. 882 325500 estructura de la descripción inicial (se mantienen la Total E2 CLA 11681 1162500 mayoría de las señales intermedias). la asociación de los bloques biblioteca que contiene la tecnología utilizada. la información de más “alto nivel” que agregando buffers entre ellas si fuere necesario. RCA 2698 217250 expresan en términos de las entradas o de registros Registros* . también es posible Sumador RCA 18228 471000 realizar síntesis y optimización local. realiza el especificar que se trata de un pipeline (algo que no es cálculo del camino crítico. de los entornos de CAD para circuitos integrados En el caso de la Etapa 1. área de silicio estimada y ejecución de las herramientas. 2404 155750 optimización local es ideal para circuitos grandes como Desplazador a Izq.* . trata de encontrar en la de las señales. sería 50% en área y un 50% en delay de todo el cirtuito. Este proceso habitualmente es síntesis. que los tiempos de cada una de las etapas La optimización realizada en este caso fue un sean similares. se tienen varios proporcionan toda la información que aparece en la bloques a optimizar. que será la suma de las áreas de todos los bloques Etapa Bloque Tipo Tiempo Area que pertenecen a la etapa. OPTIMIZACION DE SÍNTESIS Tabla 1: Tiempo y Area sin Optimizaciones de Síntesis. alguna manera. * Camino Crítico 1 CLA: Carry LookAhead. con la utilización de los modo de operación estándar (o default) a menos que se parámetros del algoritmo en forma “local” a estas etapas indique explícitamente lo contrario.* . Sin embargo. Etapa 2 Sumador* CLA 10799 837000 que es modo default de operación. En el caso Detector de Cero . 882 7750 pueden ser los sumadores y comparadores en este caso.profundidad de la red lógica. 506 4500 agrupada por etapas y con los tiempos de cada etapa Comparador* CLA1 5982 576500 dados por los bloques del camino crítico. 882 379750 En la tabla anterior los resultados mostrados no tuvieron Total E3 5941 881000 en cuenta esta opción ya que el default del CAD es la Etapa 4 Restador* CLA 4855 383250 optimización global en la que se remueven la mayoría de Restador RCA 5047 543000 las señales intermedias de manera que las salidas se Redondeo de Frac. También proporcionan las herramientas de síntesis es la realiza el cálculo del área. 882 310000 internos. variando el costo de optimización entre área y Se debe notar que las herramientas de síntesis delay (en forma porcentual). Luego para la función bloques que pertenecen al camino crítico de propagación lógica de cada nodo de la red. . en VHDL de manera explícita). (1 y 2). el algoritmo permite ajustar en forma señales. se diferencia del área necesaria para implementar cada etapa. Esto silicio ocupada. se decidió optimizar el 7 .

A diferencia de lo que sucede en el para las herramientas de Alliance utilizadas para la bloque Sumador.0 2. Dado que se ha obtenido una mejora mejorar el sumador.0 12 0. se puede observar que a mayor menor: poco más de 1000 ps.5 Sumador Aumento de Area Total (%) 20 2.5 16 Aumento de Area Total (%) 14 1.3%.0 18 1.2% a +0. en particular la ganancia de tiempo es cercana al 50% Una vez aplicadas las optimizaciones que se han (utilizando solamente 16% más de área).5 4 5982 5948 5473 5410 5408 5106 4964 2 T iempo (ps) 0 10799 9625 9270 9040 6329 6064 5801 Figura 15: Optimización en Síntesis: Comparador. se estaría en la y ruteo de señales. Estas alternativas son paramétricas bloque Comparador. T iempo (ps) Otra de las características del bloque Figura 14: Optimización en Síntesis: Sumador. La Figura 14 muestra gráficamente los La Figura 15 muestra gráficamente los resultados de varias alternativas de optimización para el resultados de varias alternativas de optimización para el bloque Sumador. algoritmos de optimización y su combinación con los En resumen. implica un aumento Comparador aproximado de 16% del total del área del pipeline.0 6 -0. En 8 . Sumador y Comparador. comenzando por el tiempo inicial de la relación tiempo-área. que representa una optimización de tiempo se tiene mayor área ocupada. Además. En el (se debe recordar una vez más el carácter heurístico de caso del tiempo inicial no se tiene ninguna variación. original. se debe todo el pipeline. La mejora de los tiempos de operación del pipeline puede ser de casi 5000 ps propagación de las etapas más lentas lleva a mejorar (10799-5801 = 4988 ps). optimizando solamente al bloque tiempo de operación total: el comparador. Sin embargo.1% más de área total. Sin embargo. para cada una de variaciones de área son muy pequeñas: en el rango de las alternativas de optimización se da una estimación de -0. dado que solamente se necesita poco más de Esto da una idea de las características heurísticas de los 0. Sobre el eje x se muestra el tiempo de operación bloque Comparador no son muy consistentes en cuanto a de cada alternativa. La ganancia de aproximadamente 17%. la Etapa 1 pasaría a ser la de mayor tiempo de la Etapa 2 no hay posibilidades de elección. esta ganancia del optimización: aunque el tiempo de operación se reduce 17% se obtiene casi al mismo costo que el pipeline de 6064 ps a 5801 ps el área ocupada también se reduce.5 10 8 0. Esto significa que se puede optimizar el la variación (aumento) del área de silicio ocupada en tiempo de propagación casi con la misma área de silicio forma porcentual respecto del total sobre el eje y. la ganancia en tiempo total de operación de cada etapa. pipeline. En particular. 3. es decir 10799 ps. aplicando las optimizaciones a los algoritmos (también heurísticos) de ubicación de celdas dos bloques.bloque dentro de esta etapa que tiene más de la mitad del tiempos. de notarse que las la Tabla 1. Evidentemente en este bloque significativamente el tiempo de operación del pipeline. los algoritmos utilizados para la síntesis). más que significativa para la Etapa 2 se aplicarán las Se analizará primero el sumador de la Etapa 2 opciones de optimización al bloque Comparador de la por ser el bloque de mayor tiempo absoluto de todo el Etapa 1 para mejorar su tiempo de operación. 5801 ps. el tiempo de operación de todo se deben tener en cuenta todas las etapas y su relación de el pipeline está determinado por la Etapa 1: 8855 ps. las opciones de optimización sobre el síntesis. pero no se detallado y con los tiempos de las etapas que se conoce aún la ganancia exacta de todo el pipeline porque muestran en la Tabla 2. desde excepción está dada en los dos últimos valores de el punto de vista del área ocupada. pero el mejor tiempo de operación del circuito obtenido por optimización. Por otro lado. En el caso de sumador. aunque el área total del situación que describe la Tabla 2 en cuanto a tiempos de circuito aumenta. Comparador que es esencialmente distinta del bloque Sumador es que la optimización de tiempo es mucho En general.

La nueva Etapa 2 no tendría un impacto significativo en los tiempos de propagación. 3891 ps. Lo inmediato sería seguir aplicando alternativas de optimización disponibles en las herramientas de síntesis 7. dado que se tiene una etapa 6. el costo de que el pipeline entre “en régimen” y se obtengan los Aunque la mejora obtenida en cuanto a optimización primeros resultados. tiene herramientas para extraer el mapa de transistores del costos asociados. y simulación del circuito. es de esperar que haya alguna forma de 16% de área para todo el circuito. aunque elegante. Sin embargo. En más rápidamente en la optimización del mismo. Y esto utilizando poco más de Sin embargo. Otro de los costos asociados al rediseño (subdividiendo una etapa en dos nuevas) que no es tan Figura 16: ASIC del Sumador. Se debe notar que la mayoría del trabajo realizado en la optimización de síntesis sigue siendo útil: los tiempos que se obtuvieron antes (los detallados en la sección anterior. OPTIMIZACION POR REDISEÑO más. más del 24% de mejora. transistores que posee el core. Ahora el tiempo de operación del pipeline estaría determinado por la nueva Etapa 3 (que contiene el Sumador) y sería de 6683 ps (Tabla 2). Por lo tanto sería mayor. en este caso) se reutilizan y no es necesario recalcular nuevos. rediseño es importante: la nueva Etapa 1 tendría tiempo de operación de 4964 ps (Comparador con su correspondiente optimización en síntesis) más 882 ps de los nuevos flip flops. se circuito total y de cada bloque por separado. inmediato: ahora el tiempo de llenado y de vaciado del pipeline no es el mismo. el costo es mínimo por la potencia significativa.términos de mejora porcentual. misma del lenguaje de descripción. La cantidad deben agregar los registros intermedios entre las nuevas utilizada fue alrededor de 24000 y en la Figura 16 se Etapas 1 y 2. por ejemplo. Como mínimo en términos de área. es de esperar que estas optimizaciones no Se ha presentado un sumador de números representados aporten muchas mejoras significativas porque: en punto flotante siguiendo la norma definida por IEEE. de gran ayuda: el bloque de comparación se incluye en la nueva Etapa 1 y el resto de los bloques se consideran Otro resultado de interés que está relacionado parte de la nueva Etapa 2. aún quedan posibilidades de optimización. la información de la Tabla 1 respecto de los bloques que pertenecen al camino crítico puede ser Tabla 2: Tiempo y Área Con Optimizaciones de Síntesis. la ganancia ha sido 50% del tiempo de propagación no puede ser significativa: de 11681 ps a 8855 ps. Etapa 4 5737 910500 En este caso. Etapa 1 8855 1161250 Una posible solución. Las demás etapas solamente con el área de silicio utilizada es la cantidad de se renumeran. ambas de menor tiempo. ya que sumaría: 643 ps (Selector de Fracción) más 2366 ps (Desplazador a Derecha) más 882 ps (Registros) lo cual implica. que es bastante inmediata Etapa 2 6683 3512250 en el contexto de los pipelines: subdividir la etapa mayor Etapa 3 5941 881000 para obtener dos etapas nuevas. CONCLUSIONES Y TRABAJO FUTURO como se ha mostrado en la sección anterior. en total. El CAD de diseño posee El rediseño del pipeline. mejorar los tiempos de operación del pipeline dado que la Etapa 1 tiene un tiempo bastante mayor de operación Etapa Tiempo (ps) Area (λ2) que el resto de las etapas. el bloque de la Etapa 1 que tiene más del optimizaciones hechas a nivel de las herramientas de 9 . valor muy similar al de las últimas dos etapas. En total: 5886 ps. Las particular. Es de esperar que esto se mantenga siempre y cuando el rediseño mantenga la mayoría de los bloques funcionales como en este caso. • La Etapa 1 es la que ahora (Tabla 2) determina el La potencia de VHDL permite una rápida especificación tiempo de operación del pipeline. la ganancia en tiempo por el muestra el ASIC del sumador de punto flotante. con lo cual se puede pensar • La Etapa 1 ya ha sido parcialmente optimizada. Sin embargo. es decir un poco optimizado más de manera significativa. Es importante que a nivel de desde los resultados de síntesis de la Tabla 1 ha sido rediseño en VHDL.

Part 1 México. Rabaey. K. el entorno de CAD no identifica más que Alliance: A Complete CAD System for VLSI Design. http://www. Pierre & Marie Curie University. France. Prentice Hall Hispanoamericana. 53500 Naucalpan de Juárez – [3] Kai-shing Lam. En el caso del [7] Équipe Architecture des Systèmes et Micro-Électronique. pp. Nuevamente la potencia de VHDL simplifica en [6] Greiner A. pp. pp. [1] IEEE Standard VHDL Language Reference Manual. Frederic Ak. 2004. Part 3 herramientas de síntesis y optimización tienen un límite. 1993.vlsitechnology.A Design Perspective.. Esto [12] Jain S. Pêcheux. Principles of CMOS VLSI Design.síntesis pueden ser muy útiles. [10] Seidel P-M. June 11 . Frederic Ak. http://www-asim. Bhasker. 1985. [17] John F. 10 . 1995. 2nd. Esto implica.html herramientas de síntesis.lip6. Peters. 2004. France. bloques de hardware y por lo tanto debe reorganizarse la Université Pierre et Marie Courie. MIT. 2001. cambio a otra herramienta de CAD como Cadence. Natik.fr/pub/alliance/distribution/latest/ Aunque son útiles y necesarias. [2] J. que consume mucho tiempo es la de optimización vía las http://www. Vail. LIP 6. MA. Digital Integrated Circuits . VHDL Modeling and Simulation”.org/html/sx_description. Addison-Wesley Publishing Company. Edition. Colorado. Alliance distribution: [18] William Stallings. A Complete Set of gran medida esta tarea. simple y doble precisión. IEEE. las [5] Kai-shing Lam.. REFERENCIAS 1985. 3-13. Included in the Alliance distribution available at: más del 24% de tiempo de operación se debe recurrir http://www-asim. necesaria para una correcta evaluación. 8. 1992. The Institute of Electrical and sumador que cumple la norma IEEE de punto flotante de Electrionics Engineers. operación con poco más de 16% más de área de silicio 14-18.. Madrid. USA. pp. el paso inmediato sería la definición de un Floating-Point Arithmetic”. May 2003. 1992. p. Computer Arithmetic Algorithms.lip6. principalmente [14] Kai Hwang. ISBN 0-13-090996-3. tiempos de diseño. Advanced Computer Architecture: sobre los bloques de hardware más complejos.fr/pub/alliance/distribution/latest/ etapas del pipeline en cuanto a bloques que contienen y cuáles bloques dentro de cada etapa son importantes en [8] Virginia Polytechnic Institute and State University. 1997. las herramientas CAD Tools for Teaching VLSI Design”. Anantha Chandrakasan. Second Edition. France. Place and Route”. 2003. 184. Part 2 se obtiene una mejora de más de 24% de tiempo de Logic Synthesis”. si se necesita optimizar mucho 2-7.fr/pub/alliance/distribution/latest/ necesariamente al rediseño del circuito o de partes del mismo. ©2003. “Alliance Tutorial.fr/pub/alliance/distribution/latest Computadores. En el caso presentado. ISBN: 0070316228 herramientas mismas del CAD. France. Desde el punto de vista de las alternativas de mejorar los [11] Koren I.edu/~ha/cadtools/cadence/cadence. En particular. en este caso se estarían modificando las Science/Engineering/Math. Sin Parallelism. NY. sumador. salida de las herramientas para identificar claramente las http://www-asim. 15th IEEE Symposium on Computer tecnología definitiva.13. “Alliance Tutorial. Wakerly. Otra de las tareas que ha demostrado [13] SXLIB Standard Cell Library Description. “Alliance Tutorial. y esto puede significar un posible Arithmetic. Even G. Programmability. Dec. Master of Engineering.. and Borivoje 1076-1993.lip6. F. A. Scalability. Grenoble. Diseño Digital Principios y Practicas. 2004. pp. las heurísticas consumen mucho tiempo de ejecución. “IEEE Standard for Binary diseño. McGraw-Hill embargo. Por otro lado. 2002. cuanto a su pertenencia al camino crítico de propagación “Cadence tutorial for VLSI Design”. Prentice Hall. incluir el manejo de NaN y números no normalizados.ee. es importante considerar la A. “On the Design of Fast IEEE En cuanto a la implementación se debería elegir una Floating Point Adders”.. ISBN 1-56881-160-8. “ALLIANCE . Proceedings of the incluidas en los CAD para circuitos integrados no Third Eurochip Workshop on VLSI Design Training. Included in the Alliance distribution available at: necesaria para la implementación. y por lo tanto aumentaría también la confiabilidad del diseño en VHDL. A VHDL Primer. En el caso de este artículo [4] Kai-shing Lam. 2-16. Kamran Eshraghian. France. Low Power Single-Precision IEEE Floating permitiría definir un conjunto de casos de pruebas mayor Point Unit. Frederic Ak. Prentice Hall PTR. January 25. Pierre & Marie Curie University. de las señales. Pierre & Marie Curie University. Upper Saddle River NJ 07458. Organización y Arquitectura de http://www-asim. por ejemplo. Sept. Prentice Hall. 1992.lip6. Std. 230- necesariamente proveen los resultados en la forma 37. [15] Neil Weste. [16] Jan M. paralelización de la simulación de código VHDL.vt. Nikolic.html En términos de la continuidad de las tareas de [9] ANSI/IEEE Std 754-1985.