• No se han encontrado resultados

Reporte Proyecto Terminal Ingeniería en Electrónica Desarrollo de Sistemas Digitales en

N/A
N/A
Protected

Academic year: 2018

Share "Reporte Proyecto Terminal Ingeniería en Electrónica Desarrollo de Sistemas Digitales en"

Copied!
72
0
0

Texto completo

(1)

Universidad Autónoma Metropolitana

Reporte Proyecto Terminal Ingeniería en Electrónica

Desarrollo de Sistemas Digitales en

FPGAS

Asesor: Gonzalo I. Duchen S

Área de Sistemas Digitales

-

(2)

ÍNDICE

CAPITULO

1

Arquitectura de los Arreglos Logicos Programables

PP.

1

PP.

3

CAPITULO

2

Métodos de Síntesis

para los Arreglos de Compuertas Programables

PP.

16

CAPITULO

3

Manual de Usuario PLDSHELL

CAPITULO

4

Códigos Correctores de Error

y

sus iplicaciones

CAPITULO

5

Desarrollo de un Código Fire-Bourton Acotado (24,16)

BIBLIOGRAFIA

PP.

26

PP.

55

PP.

59

(3)

Los FPGA's son circuitos integrados eléctricamente programables, desarrollados recientemente, los cuales ofiecen la alta integración disponible con anterioridad utilizando ímicamente arreglos enmascarables programables de compuertas (MPGA's) y proveen todo un nuevo enfoque para los dispositivos de lógica programable (PLDs) basados en la PLA tradicional. Desde su introducción comercial por )(illinx en 1986,

los FPGA's se encuentran entre los segmentos de más rápido crecimiento en la industsia de semiconductores, con aplicaciones que van desde la integración de algunos pocos miles de compuertas que requerían de otra manera la utilization de múltiples integrados convencionales, hasta la construcción de microprocesadores de avanzada tecnología. Se espera que este'crecimiento continúe en los próximos años con ganancias proyectadas que excederán el bdlón de dólares para hales de los 90's.

En la práctica se utiliza un procedimiento difaente en el diseño y conslmcción de circuitos, puede

empezar aún por describir la tabla de verdad o el diagrama de transición de estados para el circuito lógico. Pero entonces el circuito lógico necesitado para realizar la tabla de verdad se trabaja mediante un

programa de síntesis lógica. La operación de este circuito lógico se checa utilizando

un

programa de

simulación.

Si

el circuito se simula correctamente, el circuito puede construirse en un IC de arreglo de compuertas programable en campo (FPGA) utilizando un programa de ajuste de dispositivo. El FPGA contiene compuertas lógicas y los me&os para conectarlas dentro de un sólo circuito integrado. El ajustador de dispositivo detemina como pueden conectarse

l a s

compuertas para construir el circuito

lógico. La salida del ajustador de dispositivo es un archivo,

&

configuración que es cargado dentro del FPGA para hacer que este actúe como el circuito lógico.

El

IC FPGA puede entonces colocarse dentro de

un circuito más grande donde realizará sus funciones (después de cierta depuración posiblemente). Nótese que en la rutina,

l a s

tareas mecánicas han sido automatizadas y son realizadas por los ingenieros medante programas de diseño-asistido-por-computadora

(CAD)

y FPGA's.

Además de su notable éxito comercial, los FPGA's están abriendo nuevas áreas de investigación en el

diseño VLSI, tecnologías de programación, arqutectura de computadoras, diseño asistido por computadora, y supercómputo de propósito especial. Los FPGA's también están desempehdo un papel

importante en la educación de ingeniería, muchas escuelas están reemplazando los obsoletos cursos de

diseño basados en lógica

TTL

por cursos basados en FPGA's.

El

papel de los FPGA's en

la

educación

ha

(4)

Este reporte es una introducción a los FPGA’s. El reporte consiste de dos articulas, un manual de usuario, un pequeño arbculo introductorio a los cóchgos detectores de error y un desarrollo del cóchgo Flre-Bourton acortado. E l primero por Jonathan Rose, A. El Gamal y A. Sangiovanni-Vicentelli nos presenta una visión panorámica de

las

arquitecturas de FPGA’s existentes, sus tlcIuc:is de p r o g r a n a c i h y !a clasificación de estos a

p

.

&

de la granularidad de sus bloques lbgicos. Las ar‘qultzcturas bisicas dz un cierto número de FPGA’s existentes se describen medante un modelo general. Una investigación reciente en los efectos de la eleccion del bloque lógco y la arquitectura bhica sobre el área y el desempeño se resume brevemente.El segundo artículo por A. El Gamal, J. Rose y A. Sangiovanni-Vicentelli provee m visión completa del trabajo reciente en síntesis lógica enfocada a FPGA’s, la complejidad de los FPGA’s hace que el trazado manual de los h e ñ o s sea consumidor de tiempo y propenso a errores. De hecho la reducción de tiempo que se logra ublizando FPGA’s debe sobrepasar el tiempo gastado en el trazado manual del dtseño. Como resultado

las

herramientas de diseño automatizado son esenciales para una u W c i Ó n efectiva de los FPGA’s. Estas herramientas incluyen el enrutamiento y posicionamiento automático, síntesis lógca y herramientas de síntesis a alto nivel..&En el manual de usuario se considera que se tienen conocimientos previos de lógica secuncial y lógica combinacional, por lo que los comentarios contaidos son referidos úricamente a la programación de diseños en el PldsheS. El método empleado para el manual es: proponer un programa para cada sección en la que interviene un conocimiento nuevo y dar una breve explicación de las estructuras y asignaciones contenidas en él. En la última parte del reporte es propuesta

una

aplicación del FPGA NFX780-84 enfocada a las comunicaciones *tales en la implementación del códgo detector y corrector de errores Fire-Bouton. Los códgos correctores de errores pueden dividirse en dos clases : códigos de bloque y códigos convolucionales, el Fire-Bouton corresponde a los primeros y es tratado hgeramente en un articulo introductono a los códgos detectores de error desarrollado por Kasahara , posteriormente se presenta un desarrollo del código acortado (24,16) y finalmente se presenta un programa donde se implementa un codificador y el decodiíicador de un códgo Fire-Bourton acortado (24,16).

(5)

CAPITULO UNO

ARREGLOS DE COMPUERTAS PROGRAMABLES EN CAMPO

ANTIFUSIBLE

Un antlfusible es un dspositivo de dos terminales eléctricamente programable con un área pequeña y bajas resistencia y capacitancia parásitas. Los arreglos de compuertas programables en campo (FPGA’s) que utilizan antlfusibles en una arquitectura enrutadora de canales segmentados ofrecen ahora las capacidades lógcas digtales de un arreglo convencional de 8000 compuertas y velocidades de sistema de 40

-

60 MHz. Se provee una breve panorámica de las tecnologías antifusible. Se describen la tecnología antifisible, arquitectura enrutadora, lógica modular, dsedo automatizado, programación, prueba y uso de los F’PGA’s ACT antifusible. Se ilustran algunos compromisos inherentes al involucrar las características antifisible, la arquitectura enrutadora y la lógica modular.

1.

Introducción

Hace una década el disefiador de un circuito integrado de aplicación específica (ASIC) estaba limitado principalmente por el desempefio, complejidad lógica y el costo de fabricación accesible con la más avanzada tecnología en el proceso de semiconductores. Hoy en día, las capacidades del silicón de borde anterior han dejado atrás los requerimientos de las aplicaciones tipicas. Se encuentre ahora disponibles arreglos con más de 1 O0 O00

compuertas utilizables y retardos de propagación muy por abajo de 1 nseg. Sin embargo, se estima que el volumen de más de la mitad del mercado de arreglos de compuertas se encuentra por abajo de las 10 O00 compuertas, y que más de la mitad de los sistemas que utilizan arreglos de compuertas, trabajan a frecuencias menores a los 25 MHz. Al mismo tiempo,

han

aumentado las presiones para reducir el tiempo de desarrollo del producto.

Los

arreglos de compuertas refieren máscaras especiales para cada cliente para el alambrado metálico y por lo tanto toma semanas

o meses producirlos.

Este ambiente motivó el desarrollo de arreglos de compuertas programables en campo (FPGA’s). Para los muchos usuarios que no requieren la velocidad y capacidad de compuertas de los arreglos convencionales, ts preferible programar un FPGA de fabricación convencional y tener chips disponibles en espacio

de

minutos, una vez que su dlseíío se ha completado.

Una característica clave de un FPGA es la tecnología de switcheo programable que se utiliza para configurarlo. Muchas de estas tecnologías se

han

considerado para utilizarse en los FFGA’s, icluyendo la programación láser, transistores de paso controlados, ya sea por celdas de memoria SR4M o EPROM, y antifusibles.

Un antifusible en un dispositivo de dos terminales eléctricamente programables. Este cambia irreversiblemente de una alta a una baja resistencia cuando un voltaje de programación (mayor a los niveles normales de señal) se aplica a través de sus terminales. Los antífusibles ofrecen varías características únicas para los FPGA’s, lo m á s notable es una relativa baja resistencia de ”encenddo” de 100

-

600 ohms y un tamaño pequeño. El área de diagrama de una celda anufusible es generalmente más pequeña que la dstancia de la líneas metálicas que ésta conecta; es aproximadamente del mismo tamaño que las líneas metálicas de conexión en un arreglo programable enmascarable. Cerca de 750 O00 antilüsibles pueden ahora integrarse en un solo chip FPGA, facilitando el desarrollo de arquitecturas enrrutadoras aproximando la flexibilidad y potencial de escalamiento de los arreglos de compuertas convencionales. Los FPGA’s an-ible actuales ofrecen una complejidad equivalente a un arreglo de 8000 compuertas convencional y velocidades tipicas de reloj del sistema de 40

-

60 MHz.

(6)

FIG I

scffmCm!!s

/ I

I ’ I I 1;21

lb1

I

1

ESTRUCTURA BASICA DE

U N ACT FPGA

La Fig. I muestra la estructura básica de un FPGA ACT. Hileras de módulos I ó g ~ o s están entremezclados con canales horizontales de enrutamiento conteniendo segmentos alambrados

predefinidos de varias longitudes y posiciones horizontales. Otros segmentos atambrados corren de manera vertical por los módulos y a través de los canales. (La Sgura muestra solo unas pocas sugerencias de segmentos verticales). Cada módulo lógico calcula una función de

una

única salida y varias entradas. Cada entrada a l módulo está conectada a un segmento vertical de alambre dedicado que tiende un puente

con el canal ya sea abajo o arriba del módulo. Cada señal de salida aparece en un segmento metálico vertical dedicado de cierta mayor longitud. Se provee un antifbsible en cada intersección de un segmento vertical y uno horizontal, permitiendo que estos puedan conectarse. La salida del amplificador, módulo 3,

se conecta por medio de antifusibles programados a los segmentos horizontaies, que a su vez están conectados a los segmentos de entrada. En el canal de la extrema superior, se utiliza un antifusible para

conectar extremo con extremo dos segmentos horizontales adyacentes, haciendo posible accesar ya sea una entrada del módulo 1 o

una

del módulo 2.

El arreglo central de módulos y canales está rodeado por adaptadores de entrada / salida y buffers. Cada buffer de E/S puede ser conectado a la lógica interna med~ante un módulo especial cercano a la oriUa del módulo.

11.

Tecnología Antifusible

Un FPGA de alto desempefio requiere un switch programable de interconexión que tenga un área pequeña y una resistencia y capacitancia parkitas bajas. La tecnología de switcheo debe ser factible de manufacturarse y confiable.

Los an-ibles son dispositivos “normalmente apagados”. Solamente la pequeiia hcción que necesita ser encendida debe ser p r o m a d a (alrededor del 2% para una aplicación típica). A s í , aunque otras

características son iguales, la programación es más rápida con los antifhibles que con los dispositivos “normalmente encenddos”.

El concepto de anfisible data de por lo menos 1957, cuando se les consideró para utilizarse en

memorias. Los antifusibles que se desarrollaron a partir de entonces caen dentro de dos categorias: silicón amorfo y délectricos.

Esfherzos recientes en el desarrollo de anbfbsibles de sdicón amorfo para FF’GA’s reportan los siguientes resultados. La resistencia es inversamente proporcional a la corriente de programacióq y es de 50 -1 10

(7)

ohms con urra I n e b de SO ohms a u n a comente de progrmacidn superior u les 10 I ~ A . L a wpautanm aportada por cada anhfüsible es de 1.3 femtofarads en un proceso CbfOS tlc 1 O micros !Esta figura no

toma en cuenta l a s capacitancias de las lineas metáhcas en si, que contribuyen con muchas wczs esta cantidad por cada anhbible.) La corriente de fuga de preprogmrrlación está por abajo de los 10 nanoamperes a 5.5 volts.

Los ant&sibles &eléctricos consisten de un estrato de &eléctrico colocado entre una &fhión

N +

y pohhcón. Cuando se le aplica suficiente voltaje, el &eléctrico se descompone. Los primeros arltihibles &eléctricos utdizaban un buco estrato de &ido &elCctnco. El resto de esta sección se enfoca en el “elemento de circuito programable de baja impedancia” (PLICE), un antifusible &eléctrico mdticapas óxido

-

n i t m o

-

óxido (ONO) para utilizarse en los FPGA’s. Actualmente ya se producen en masa

FPGA’s integrando en un solo chip hasta 750 O00 antifúsiiles PLICE.

Cuando se aplica un voltaje de programación de 16

V

a través del PLICE, se derrite el &eléctrico, creando

un enlace conductor de silicón policristaho entre los electrodos. Típicamente, se observa un solo enlace. El radio del enlace se incrementa con la comente de programación, &minuyendo por lo tanto la resistencia. Conforme fluye la corriente de programación, los átomos dopados fluyen de ambos electrodos hacia el enlace, proveyendo

una

resistencia baja controlable. Un pulso menor a un mseg es suficiente.

FIG

2

%Distribuci6n

0 200 300 400 500 600 7011 BOO goo

moo”

Resistencia

Dlstrlbucl6n de reslstencla en el antlfuslble programable PLICE con una corriente de 5mA

Para un PLICE de área mínima porgramado con 5 mA, la resistencia se htribuye como se muestra en la

(8)

FIG

3

E o h u d u n del snli(usible R I C E

La estructura del PLICE se muestra en la Fig. 3. Un sustrato delgado de óxido se deposita térmicamente en una superficie N+, seguida por una deposición química de vapor a baja presión del nituro (LPCVD) y el óxido reoxidado de la superficie. La uthzación de la estructura O N 0 estrecha la distribución de resistencia y también mejora tanto el rendmiento como la conflabhdad comparado con los antifusibles de óxido simple. El PLICE agrega tres máscaras para ser un proceso CMOS doble-metal convencional. F’uede fabricarse u-do los medtos CMOS tipicos con material, equipo de procesamiento y técnicas estándares.

La confiabdidad de un antifusible debe considerarse tanto en el estado programado como en el no- programado. Para un antifbsjble no-programado, con un O N 0 de espesor menor a 10 run, es importante considerar un rompimiento del diélectrico. debido al tiempo O D B ) con

una

confiabilidad mayor a 40

años. Se han realizado pruebas de aceleracibn ordinarias sometiendo el dieléctrico a la acción de campos eléctricos y temperatura con el fin de extrapolar la vida de éste bajo condiciones normales de operación, lo que ha demostrado ser un modelo apropiado. Basándose en esta información, se puede extrapolar una

vida

para un a n ~ i b l e ON0 de más de 40 años de operación normal a 5.5 V y 125 C.

Es de i g u a l importancia que la resistencia del antifbible progranlado se mantenga baja durante la vida del componente. Se sabe ahora que los dieléctricos de una sola capa de óxido son susceptibles de “auto curación”? lo que aumentará la resistencia con el tiempo. Este no es el caso para los &eléctricos ONO. Las mediciones aceleradas por temperatura no revelan un mecanismo intrinseco de falla; el antifilsible programado pennanzce s i n cambio en todos los casos. El vzrdadero tizmpo de vida dz un antifilsiblz programado todavía no se ha determinado ya que la electtomigaci6n normal CMOS destruye l a estructura de prueba primero.

Por supuesto, la confiabilidad del FPGA es afectada por la confiabilidad del proceso basado en CMOS así como del PLICE. Estudios acerca de la confiabhdad de los productos FPGA basados en PLICE muestran niveles de M a s&es a los encontrados en circuitos CMOS normales.

111.

Principios de Enrutamiento Programable

Una arquitectura de enrutamiento para un FPGA debe cumplir dos criterios: emtabdidad y velocidad. La enrutabdidad se refiere a la capacidad de un FPGA de acomodar todas las redes de

una

aplicación tipica, a pesar del hecho que los segmentos de alambre deben estar definidos al momento de hacer el modelo del

FPGA. Solo los switches que conectan los segmentos de cable pueden ser propios del usuario (mediante programación) para una aplicación específica, no así el número, longitud y l o c h c i ó n de los segmentos

(9)

en sí. Mientras que se deben proveer suficientes segmentos de alambre para logru una huend enrutabhdad, un exceso de ellos desperdlciaria ire3 en el chp. Tanlbiin es importante que el enrutamiento de un aplicación pueda determinarse Inediante

un

programa automitico con poca o rungum intervención manual.

El retardo de propagación a través del enrutamiento es una factor de la mayor importancia en el desempeño del FPGA. En cualquier arquitectura eficiente de arreglo de compuertas, ya sea programable por máscara o en campo, es inevitable que ciertas redes requieran m t a m i e n t o s más largos que otras. DespuCs del enrutamiento, se conoce el número exacto de segmentos y switches utihzados para establecer la red y el retardo a partu de la s&da conductora a cada entrada puede ser calculado en conformidad. Los resultantes retardos post-cbagrama &&irán de las estimaciones pre-diagrama de acuerdo a una

dstribución estadística. Si la distribución de los retardos para redes de una ramificación de sallda (fan

-out) particular es muy ancho, el usuario tendrá dificultades para estimar los retardos al dlseÍíar una aplicación. Y, por supuesto, si el promedlo de la dstribución es demasiado alto el chip será lento.

La distribución del retardo para arreglos programados por máscara es lo suficientemente estrecha que la variación no es

una

dificultad mayor para el diseñador, ya que la resistencia y capacitancia de los alambres metálicos es baja '2. Cada vez que

una

señal pasa a través de un switch programable, se agrega una etapa a l camino de propagación.

Para

una

R y C fijas, el retardo de propagación aumenta cuadráticamente con el número de etapas RC en sene. Esto tiende a aumentar el promedo de retardos en la red y a ensanchar la distribución de retardo post-dqrama.

J3 uso de un switch de baja resistencia,

tal

como un antifusible, ayuda a mantener el retardo bajo y su distribución estrecha. De igual importancia es la optimización de la arquitectura de enrutamiento. Algunos compromisos que involucran la longtud de los segmentos de alambre en un canal, el área requerida y la resistencia y capacitancia del switch se ilustran en la Fig. 4.

FIG 4

1 2 1 3 3 2 4 4

u

U I U

2 1 3 3 2 4 4

k

Intercambio segmentado. Los

clrculos

en negro

s o n

los antlfusibles

programados, y los abiertos son los no programados.

(10)

los alambres horimntdes puede adecuarse d usuario pua el cor?jur:lo Im.&ular de rzdes. El “dgc:~itmu

de arista Izquierda” muestra como hacer esto u h d o un n h e r o de trayectorias igual a l a d;nsltlnd di:

cllllullrJ, l I w l l b l u LL,;R;mo de ndes pasando a través de cualquier seccion de1 c - d . íSe asume que no hay

“vínculos verticales”. Los vínculos verticales no existen en los FPGA’s ya que cada sefial entra o sale de1 canal por su propio segmento vertical.)

En

un FPGA, lograr esta completa libertad requeriría switches en cada punto de cruce. Se requcnrhtn más switches entre cada dos puntos de cruce a lo largo de una trayectoria para perrnihr que Csta se sub&vida en segmentos de longitud arbitraria (Fig.

e)).

Ya que el número de etapas RC que encuentra una red es proporcional a su longitud, el retardo de redes largas es inaceptable.

Otra alternativa sena proveer trayectorias continuas en número suficiente para acomodar todas las redes (Ftg. 40). Este es el enfoque uttlizado en muchos tipos de arreglos lógicos programables y en la porción de interconexión del arreglo de ciertos dispositivos lógicos programables. Algunas ventajas es que solo se encuentran dos etapas RC y el retardo de cada red es idéntico y predecible. Sin embargo, aún

las

redes cortas incurren en la capacitancia de una trayectoria de longitud completa. Aún más el área es excesiva, creciendo cuadráticmente con el número de redes.

Un canal de enrutamiento segmentado ofiece un enfoque intermecho. Las trayectorias están &vididas en segmentos de longitudes variables (Fig 4(d)), pennitiendo que cada red se m t e utilizando un solo segmento del tamaño apropiado. Se obtiene una flexibhdad de emtamiento mayor permitiendo que múltiples segmentos adyacentes en una misma trayectoria se conecten de extremo a extremo medante switches (Fig. 4(e)). La observancia de limites simples en el nilmero de segmentos unidos o su longitud total garantiza que el retardo no se incrementará indebidamente.

El problema de enrutar un c a d segmentado , i.e. determinar que segmentos se asgnarAn a cada red, es

soluble en un tiempo lineal para el enrutamiento de un solo segmento (el modelo de la Fig.

Nd)).

Cuando se permite que una red uthce múltiples segmentos (Fig.qe)), el problema de enrutamiento general se vuelve más M c i l (en particular, NP-completo). Sin embargo muchos casos especiales importantes pueden resolverse en un tiempo polinomd, y los problemas prácticos pueden enrutarse en pocos minutos con una computadora p e r s o d utilizando metodos heurísticos.

¿Cómo se dseña un canal segmentado? En un canal convencional el número de trayectorias, o ancho de canal, debe escogerse para acomodar la mayoría de las aplicaciones. Se han desarrollado modelos estadísticos para estimar el ancho de canal requerido. En un canal segmentado, tanto el ancho de canal como la longtud y posición de los segmentos deben escogerse cuidadosamente para satisfacer las estadísticas de aplicaciones anteriores. Soluciones analíticas a este problema son todavía desconocidas, pero la experiencia in&ca que los canales clseiiados de manera ad hoc pueden ser lo suficientemente adecuados (con el uso limitado de enrutamiento múltiple de segmentos).

Un canal segmentado bien h e ñ a d o no requiere mas trayectorias que las requeridas por un canal convencional, puede demostrarse tanto experimental como analíticamente. UM distribución dando la probabhdad de ocurrencia de una conexión como h c i ó n de la longitud y el punto de inicio se derivtj del posicionamiento de 510 c d e s para 34 aplicaciones. Una segmentación h e diseñada para un canal con

32 trayectorias;. En un c m d convencional, cualquier problema con una densidad de 32 o menor puede ser enrutado. Se observa una alta probabilidad de enrutamiento en un cmal segmentado cuando la densidad es solo tres o cuatro por abajo del número de trayectorias.

o ~ n ~ l l ~ e nl;matn m.,”,

/V.

Arquitectura

de

Enrutamiento

de

los

FPGA

’S

ACT

Ahora describiremos como se aplica el enrutamiento segmentado en la arquitectura de emtamiento de los FPGA’s ACT 2 y 3. La Fig.7 muestra un vista simplificada de una sección de arreglo de módulos de cuatro filas por dos columnas. Los canales segmentados se extienden horizontalmente entre las filas.

(11)

FIG

5

Vista detallada del encaminamiento de 6u arquitectura y elementos. (Solo una representacldn mostrada de entradas y segmentos mostrados)

Cada módulo tiene una sola salida, que aparece en un segmento vertical de salida dedlcado. Los segmentos de saltda abarcan dos canales arriba y dos canales debajo de cada módulo. (Por lo tanto alcanzar el canal superior o inferior puede ser un poco más largo o corto). De esta manera un módulo puede distribuir su salida a

más

de un canai de salida cercano sin la necesidad de ins- más antifisibles en el camino de la señal.

La

capacitancia agregada del segmento de s&da es un pequeiIo precio a pagar ya que el segmento es -do directamente por el módulo, no mediante ningún antifusible.

Cada segmento de entrada o salida puede conectarse a cualquiera de los segmentos horizontales no dedicados en los canales que éste atraviesa mediante un antifusible tal como el marcado con una X. Los antifusibles como el marcado con una H permiten la conexión de los segmentos horizontales de extremo a extremo para soportar el enrutamiento múltiple de segmentos. El número de trayectorias por canal varía con el tamaño del arreglo, de acuerdo con la necesidad de recursos de enrutamiento. Cada canal también contiene un segmento horizontal de longitud completa que está conectado a tierra y otro conectado a voltaje de manera que la entrada pueda ser programada corno O 6 1 16gico.

Los segmentos no dedicados también se proveen en la hecci6n vertical. Estos abarcan varias 6las y canales, en muchos casos la altura total del arreglo. Típicamente se proveen ya sea una o dos trayectorias de segmentos no dedicados por columna de modulos (como se muestra en la figura), pero nuevamente esto varia con el tamaño. Los segmentos verticales no dedicados pueden unirse extremo B extremo

medante altifusibles como el marcado con una V, constituyendo por lo tanto un canal vertical segmentado. Sin embargo no nos referimos a ellos como un canal ya que en el diagrama rzal los segmentos verticales pasan sobre los módulos en vez de entre ellos (como las ‘‘conexiones interfacialts” . en un arreglo de compuertas crrnaltzado convencional). Cada segmento vertical no dedicado puede

conectarse a los segmentos horizontales que éste atraviesa. Además, antifbibles especiales como el marcado con una F conectan la salida de un módulo y cada segmento vertical no dedicado que pasa sobre el módulo o su vecino; dos módulos horizontalmente adyacentes comparten por lo tanto un conjunto de segmentos verticales no dedrcados. Estos antifüsibles e s t h locahados dentro del irea del módulo

(12)

(La arquitectura primitiva ACT 1 es sirrular a la descripcihrl ud&r es ce po e n Ins sguicntc.; asp:~::tcrs

Antibibles adcionales permiten que ciertos pares de entradas de un módulo se junten: esto aummta I ~ I flexibddad del enrutamiento. Además, antifbibles como el marcado con una F no se proveen en ACT 1 . ) El enrutamiento mostrado en la Fig. 1 es tipico para muchas redes. N6tese que a

En

de mlnirnizar el número de etapas RC en serie, los segmentos horizontales de cada segmento son manejados chrectamentz por el segmento de sahda dedicado. Este esblo de enrutamiento global es clasificado como un “&bol Steiner con Tronco”. La longtud elegida del segmento de sahda es suficiente para pznnitir que este amtamiento se n a c e en la mayoría de l a s redes.

FIG 6

Encaminamlcnto usando cl manejo dlrccto de segrnetos verticales

Aim cuando este enrutamiento favorable puede asegurarse para todas las redes de velocidad crítica, otro

S-10% de l a s redes generalmente deben colocarse con una entrada en algún canal füera del alcance del

segmento de salida dedcado. En este caso, un segmento vertical no dehcado apropiado se selecciona para proveer un tronco alternativo para los canales filma del alcance de la salida. El segmento vertical es mado por la salida hacia un antihible “F”, solo se muestra en la Fig. 6. Ya que se puede considerar que

éste antifbible aporta casi toda la carga capacitiva de una red extensamente dispersa, el retardo es muy sensible a esta resistencia. Programando estos anWibles con comentes más altas y agregándoles

contactos en puente, la resistencia se reduce a cerca de 100 ohms, comparado con los 600 ohms para otros

anbfkibles. Los antifüsible “F” requieren por lo tanto un &ea de diagrama mayor pero ya que hay pocos de ellos su costo es despreciable.

La asignación de segmentos no dedicados en cada canal horizontal y vertical a las redes que los necesitan

constituye un problema de enrutamiento de canal segmentado.

(13)

V.

M6dulo

Lógico

Las arquitecturas de FPGA se clasdcan con Erecuencia por la complejidad de s u módulo l6gco bkico, denominado granularidad. Un módulo más simple tendrá un retardo interno menor y, ya que cada módulo ocupa menos área, se podrán proveer más de ellos en un chp. A h más, una arquitechlra de fina granularidad tenderá a ser mis flexible. Por ejemplo, una ,amplia v,uie&d de funciones puede constnlirse con igual eficiencia a partir de compuertas NAND de dos entradas, pero l a s compuertas

NAND

de ocho entradas son mucho mejores en ciertas funciones que en otras. Con módulos simplzs existe también con frecuencia más de una manera de implementar una función, permitiendo compromisos benéficos entre área y retardo.

Por otra parte, el utilizar un módulo que sea demasiado simple puede sobrecargar la red de enrutamiento.

Si

una función que pueda ser empaquetada en unos cuantos módulos complejos debe ser &tribuida en cambio entre muchos módulos simples, deben hacerse más conexiones a través de la red de enrutmiento. Como una regla práctica, un FPGA debe ser de una granularidad tan fina como sea posible mientras se mantiene

una

buena enrutabklad y retardo de enrutamiento para la tecnología de switcheo dada. El módulo &be escogerse para implementar una amplia variedad de funciones eficientemente, teniendo sin embargo un área de diagrama y retardo mínimos.

Nuestro enfoque para seleccionar un módulo empieza por coleccionar estadísticas de la utilización de varias funciones lógicas, o macros, en aplicaciones reales de arreglos de compuertas. Estas keron entonces utilizadas para evaluar candidatos para la función del módulo en sí. La idea es escoger un módulo en el cual las macros más utilizadas puedan ser eficientemente englobadas 3.

FIG

7

A0

E O

SA

B O

E31

S 6 - 0

z

"1S

I

O 2 " -

- 0 ' S

z

1

" 1 S

J

4?

SO

' I

OUT

3 1

Elemento ldgico ACT 1

La M aACT 1 utiliza un módulo lógico de propósito general, mostrado en la Fig. 7. El módulo está compuesto de tres multiplexores dos 3 uno y una compuerh. Varias macrofunciones [AND, NOR &p-

flops, etc.) pueden implementme aplicando cada señal de entrada a las entradas apropiadas del módulo y mandando otras entradas al módulo a O ó 1. El módulo puede implementar todas las funciones

(14)

compuertas de lógica por módulo. Este valor es bastante consistente en su indzpeltdcncra del rango de macros secuenciales y combinacionales en el diseño.

Para chips más grandes, podemos apoyamos más füertemente en la ley de prome&os p a a mantena una fiacción de macros secuencmles en un dueiio. Aún más, las estadísticas in&can que una proporción significativa de

l a s

redes que guían los datos de entrada de un fhp-flop no tiznen otra ramificación (fan-

out). Esto motivó el uso de una mezcla de dos módulos especiahados en l a s fmhs ACT 2 y 3.

FIG

8

D O

O1

1 0

1 1

S1

S O

I

D O

O1

1 0

1 1

S1

S O

z

A1

E l

A0

E30

El módulo C (Fig. 8) es

una

versión modificada del módulo ACT 1 reoptimizado para acomodar macros combinacionales de alta ramificación de entrad (fan-in), notablemente algunas compuertas

AND

y OR de cinco entradas de amplitud, aunque se pierda se pierde algo de habdidad en la construcción defunciones secuenciales. Está compuesto de un multiplexor cuatro a uno y dos compuertas, y puede implementar un

total de 766 macros combinacionales distintas.

(15)

FiG 9

Elemento "S". En el chip ACT 2, las entradas

EO

y CLR

-

están unidas

El módulo S consiste de un extremo frontal equivalente al módulo C segudo por un bloque secuencial construido alrededor de dos latches; la Fig. 9 muestra un diagrama funcional. El bloque secuencd puede

ser utdmdo como un flip-flop D de fiente de subida o de bajada, o un latch de alta o baja transparencia, conectando las entradas C1 y C2 a una señal de reloj, cero o uno lógico en varias combinaciones. Por ejemplo, conectando C1 a O y C2 a un reloj se implementa un flp-flop D de frente de subida. El bloque también puede hacerse permanentemente transparente (conectando C1 a 1 y C2 a O), haciendo el módulo S equivalente un simple módulo C con un pequeño retardo adicional. La Fig. 13 muestra las categonas de

las

funciones que pueden ser implementadas utilizando el módulo S. Los flip-flops toggle o habilitados pueden construirse u-do el extremo ítontal combhcional además del flip-flop D. otros fhp-flops usados menos comúnmente (tales como JK o setheset) que no son soportados por el bloque secuencd puede configurarse a partir de uno, o más módulos C o S uttlizando conexiones extemas de retroalimentación.

En los chips ACT 2, la entrada de clear se une a la entrada BO del extremo fiontal para limitar el número totai de entradas a un costo algo menor en flexibhdad. Los FPGA's ACT 3 proveerán entradas clear y BO independientes para mayor regularidad, principalmente para el beneficio de programas de síntesis lógica. Un c h p con una mezcla igual de módulos C y S proveen suficientes fhp-flops para l a mayoria de los diseños, m i s un margen extra para asegurar flexibilidad cn la colocación. Sobre un rango de dueños, la mezcla ACI' 2 provee aproximadamente de 1.4 a 2 veces la capacidad lógica por módulo del módulo ACT

1 * 4 .

La elección del módulo también mfluye grandemente en la emtabhdad del chip. Dcbido a que cada entrada es accesible desde solo uno de los dos car~~les adyacentes al m6dudo. parecería que la

mtabilidad se degrada comparada a una cilula de arreglo de compuertas de dos entradas convencional, donde una szñal puede entrar por cualquier entrada según ia conveniencia del enrutador. Sin embargo, casi siempre hay mis de una manera de implementar una macro. Para una macro de N entradas, puede haber tanto como 2N asignaciones diferentes de las señales de entrad3 a los dos canales. Esto corresponde a una simetría de doble entrada completa. Aún cuando no sean posibles todas las 2N asignaciones, un enrutador suticientemente sofisticado puede tomar ventaja de cualquier flexibdidad existente.

Para el módulo C, una señal dada puede enrutme por cualquier lado del módulo en promedio un 7096 del

I tiempo (evaluado por la utrlización de macros), lo que es suficiente para una buena emtabdidad. Este

(16)

Finalmente, notamos que el usuario estA islado de los detalles de la lilncicin del mrjdulo. La 1jgii.a se

introduce como un esquema u t h d o una fkmkar librería de macros estdo arreglo dz corrlptwtas o un programa de síntesis lógica. El software automáticamente determina h macro deseada. (Métodos de diszño se describen más completamente en la sección VIII.)

FIG IO

(17)

Flip-flop lip0 D con clear

- O0

-

-

o1

11 S1

so

-

10

2 - OUT

Latch an dear

-

O0

-

-

o1

11

S1

so

-

10

b

CLR

2-

,OUT

GATE I

-

-

O0

o1

- 10

-

11 S1

so

8

CLR

CM

P

2"- -

r ,

r

10 11 S1

so

Transparente [ igual al elemento 'VI

I;

11 S1

so

-

Salida

o

u-

Todas las anteriores son las categorlas funcionales de elementos "S"

(18)
(19)

CAPITULO DOS

MÉTODOS DE SÍNTESIS

PARA

ARREGLOS DE COMPUERTAS

PROGRAMABLES EN CAMPO

Existen algunos incovenientes para este procedimiento:

1) La limitación del numero de entradas es artificial.

2) La restricción de orden en las entras

es

impuesta por el

ROBDD

puede ser muy severa y producir un

3)

Los nodos en el

ROBDD

pueden tener múltiples padres, y por lo tanto la descomposición puede resultado pobre.

producir muchos árboles pequeños reduciendo de ésta manera el poder del enfoque de programacion dinimica.

Una alternativa es utilizar BDDs donde la secuencia de grafos no tenga que ser pequeña para todos los

vértices del BDD. La meta en la construcción de estos BDDs es minimizar el número de nodos con múltiples padres. La segunda meta es importante para ofrecer el máximo grado de libertad en el enfoque de programación dinámíca.

El algoritmo para la producción de BDDs utiliza los cofactores

de

Shannon repetidamente hasta que todas las funciones hoja son "aunadas" 14. Un problema de cobertura mínima se resuelve entonces para encontrar una buena representación factorizada de la función "aunada" respecto a la arquitectura. Ést0 está sintonizado con la estrategia general seguida en la mininlización lógca donde una función genénca se descompone con la operación de cofactor Shannon hasta que se llega a una función "aunada". En ambos casos, las variables para las operaciones de cofactor se escogen de manera que las hojas puedan ser aunadas rápidamente.

Los arreglos de compuertas Prograrnables en campo (FPGAS) reducen el tiempo de elaboración de los círciútos integrados específicos para una aplicación de semanas a minutos. Sin embargo, la alta complejidad de sus arqiutecturas hacen que el mapeo manual de sus diseños sea consumidor de tiempo y propenso a errores opacando

cualqiúer ventaja en la elaboración. Como consecuencia, se necesitarán herramientas eficientes de disefio

automático para reducir el tiempo de diseíío: Entre las más importantes está la síntesis lógica. Mentras las técnícas estándar de síntesis pueden ser utilizadas por los FPGAs, la calidad de los diseiios sintetizados con frecuencia es inaceptable. Como ressultado, mucho del trabajo reciente se ha dedicado a desarrollar herramientas de síntesis lógica enfbcadas a diferentes arquitecturas de FPGAS. El capitulo nos da una panorámica de este trabajo. Los tres tipos de arquitecturas para FPGAs más populares son considerados, es decir aquellos que utilizan bloques lógicos basados en tabla de consulta, multiplexores, y amplios arreglos

AND/OR.

Se hace énfasis en las herramientas que intentan mimimizar el área de la parte de lógica combinacional del diseíío ya que se ha hecho

poco trabajo para optimizar el desempeño o enrutabilidad, o en la síntesis de la parte secuencial del diseño.Las diferentes herramintas retisadas son comparadas utilizando un conjunto de diseños de referencia.

1.

riztroducción

Las herramientas de síntesis que mapean automáticamente un disefio compuesto de compuertas sencillas o descrito con un lenguaje descriptor de hardware (HDL) en compuertas de una librería dada, están utilizandose ampliamente. Además de simplificar el proceso de diseiio y reducir el tiempo de diseíío, estas herramientas han tenido un may-or impacto en la metodología de diseño para circuitos integrados de aplicación específíca (ASICs), permitiendo a los diseiiadores seleccionar fácilmente entre diferentes opciones de implementación, tales como entre una célula estándar y un arreglo de compuertas programable por máscara (MPGA) o entre diferentes vendedores de

ASIC, basados en estimaciones precisas de desempeíío y

área.

(20)

opacada por e1 tiempo empleado en 111apea el diseño rnarlulilrrlente Ccmw rt.sultndo %e

ha

e r h x l u mucho trabajo recientemente a desarrollar herramientas de sintesis cuyo objetivo son thferentes arquitecturas de FPGA. Tales herramientas e s t h dando buenos resultados y se han vuelto hponibles comercialmente.

El enfoque más duecto de síntesis para FPGAs es adaptar l a s herramientas de síntesis desarrolladas para

las librerías de MPGA a FPGAs. Un I s & o primero es mapeado en compuertas sen:nLllias (Itales como compuertas NAND de dos entradas), y después se reemplazan grupos de compuertas por bloques lógicos del FPGA elegido. Este enfoque trabaja bien para FPGAs con bloques firmente granulados tales como los de Algotronix, Concurrent Logc, Plessey y Toshba, debido a que un bloque finamente granulado únicamente puede implementar una o dos compuertas sencillas. Sin embargo, para los FPGAs más ampliamente utilizados de bloques lógicos más toscos tales como los de Actel, Altera y ).wluyc, este enfoque no da en general buenos resultados. Un enfoque más prometedor pero más a c i l es mapear el h e ñ 0 hectamente en bloques lógicos. Herramientas de síntesis para FPGA recientemente desarrolladas emplean tanto el enfoque de mapeo por librería como el enfoque de mapeo directo,

En este artículo revisamos .los métodos recientemente desarrollados para la síntesis de FPGA. Aún cuando existe mucho interes en la síntesis secuencial PWd FPGAs, no se

ha

publicado a la fecha ningún artículo referente a este tema . Más aún, la mayoría de los métodos desarrollados optimizan el área de un &seiio y sólo algunos mejoran el desempeño explícitamente. Por lo tanto, enfocaremos nuestra revisión en la síntesis combinacional para FPGAs donde los reg&os e n el. diseño es& espedcados explícitamente por el diseñador y dedicaremos la mayoría de la discusión a los métodos de síntesis que

optimizan el área. Ya que los FPGAs de grano h o no presentan nuevos retos a los algoritmos de síntesis únicamente describiremos el trabajo sobre la síntesis de FPGAs de grano burdo como los de Actel, Altera y .xl.hx.

El artículo está organizado de la siguiente manera. Las defuuciones básicas están dadas en la sección 11. En la sección I11 revisamos los más efectivos métodos conocidos de minimización lógica y síntesis. ‘En la

sección IV revisamos varios enfoques de síntesis lógica para FPGAs con bloques lógcos de tabla de consulta tal como el xlllinx. En la sección V presentamos una hcusión smilax pero para los FPGAs con bloques lógicos basados en mdtiplexores como el Actel. En la sección VI discutimos brevemente la síntesis para FPGAs con bloques lógicos basados en PLA.

11.

Definiciones

básicas

Una variable lógica o Booleana x toma uno de dos posibles valores, O ó 1. Denotaremos por x’ el complemento de la variable x. Tanto x como x’ son llamadas literales.

Una h c i ó n Booleana

E.

(0,l }n -> {0,1} es una función binaria de variables lógicas. Con ftecuencia es conveniente representar el espacio Booleano n-dimensional mediante un hipercubo Booleano n-

dimensional. Un hpercubo Booleano de dimensión n contiene 2n vértices. El conjunto de vértices del hpercubo donde la función toma un valor de 1 es llamado conjunto encendido (on) y el conjunto de vkrtices donde la función toma un valor de O es llamado conjunto apagado (off). A veces el valor de una función lógica no esth especificado para un conjunto de vértices. En este caso, se I c e que la función está incompletamente especificada y el conjunto de vértices no especificados es llamado conjunto de no importa (dc). El resto de los vértices (i.e el conjunto-on y el conjunto-off) constituyen el conjunto de importa. El conjunto de entradas en el cual la función está explícitamente definida se llama su soporte. En el resto del artículo nos referiremos a un función lógca incompletamente especificada simplemente como a una fünción lógca a menos que se especifique de otra manera.

El cubo de una función lógica f es una fhción lógica dada por el producto de las literales cuyo conjunto- on no tenga vértices en el conjunto-off de f. El origen de este nombre se basa en el hecho de que el producto de k literales corresponde al hpercubo Booleano de dmensión n-k en el espacio Booleano de dimensión n. Un minitérmino es el cubo en donde a todas las variables es asignado un valor de O ó 1 .

Éste cubo es de dimensión O, y contiene sólo un vértice.

El cofactor Shanon o simplemente el cofactor de una fimción lógica f respecto a la variable x, denotado por es la función lógica obtenida a partir de f fijando la variable x al valor constante l . El cofactor de f

respecto a x’, denotado por 5c’, es la

e

ó

n

lógica obtenida fijando la varahle x en al valor constante O.

(21)

Una hnci6n Ibgica tiene varias representaciones, por ejemplo, e1 conjurltio de SUS I I ~ U ~ ~ I T ~ I ~ I ~ L I S !‘qw <’a equivalente a la representacion mechante una tabla de verdad), la forma de suma de productos, la fcums factorizada, y el Diagrama de Decisión Binaria.

Una expresión de suma de productos para f e s un conjuuto de cubos que contiene todos los virtices del conjunto-on de € y ninguno del conjunto-off.

Una forma factorizada se d e h e recursivamente de la siguiente manera:

o Una literal es una forma factorizada.

0 La suma de formas factorizadas es una forma factorizada. 0 El producto de formas factorizadas es una forma factorizcida.

De esta manera, por ejemplo, a+b, (a+b)(c+(e’(f+g’))), donde e’g’ denotan el complemento de las variables eg, son formas factorizadas.

Una característica importante de las formas factorizadas es que pueden pensarse como representantes tanto de una función como de su complemento, ya que, por la leyes de De

Morgan,

la forma factorizada del complemento de una h c i ó n puede obtenerse simplemente a &rtir de la forma factorizada de la función mediante el intercambio de la operación lógica de suma por la de producto lógico así como de las fases de las variables. Nótese en contraste, que la forma de suma de productos

d e l

complemento de una función puede ser drásticamente diferente de la suma de productos de la función.

Un diagrama de decisión binaria (BDD) es una representación simple pero eficiente de

una

h c i ó n logica completamente especificada. Los BBDs se propusieron hace muchos años por Akers pero su uso en la manipulación lógica se ha hecho práctica y efectiva recientemente por Bryant

.

Un BDD es un grafo acíclico (DAG) donde se asocia

una

función lógica a cada nodo. La función lógica completamente especificada f representada por el BDD es asociada con el nodo raíz. Cada nodo tiene dos nodos de rramificación de salida representando la función obtenida mediante el cofactor de la función lógica representada en el nodo con respecto a la variable y su complemento. Sea x la variable indexando el nodo i y fi la función asociada con ese nodo. El nodo superior corresponde al cofactor fix, y el nodo inferior corresponde a fix’. Los nodos hoja son las funciones constantes O y 1. Note que esta h c i ó n tiene un

níunero exponencid de nodos y es canónica en el sentido de que dada una función lógica y un orden de las variables correspon&endo a la secuencia de operaciones de cofactor a lo largo de un camino desde la

raíz hasta los nodos hoja, la representación.es ímica. De hecho esta representación es equivalente a la representación de tabla de verdad de la función. Como tal no es m u y interesante. Sin embargo, si los nodos asociados con la misma función lógica son fusionados, la complejidad de la representación puede reducirse. El BDD resultante es llamado BDD reducido o RBDD. El número de nodos en un RBDD puede ser dramáticamente menor que el del BDD no reducido. Este hecho hace que los RBDDs sean

atractivos para un buen número de aplicaciones. Una simpficación adicional úbl de los RBDDs propuesta por

Bryant,

es escoger el mismo orden de la variable para todos los caminos desde la raíz hasta las hojas. Esta representación es llamada BDD reducido ordenado (ROBDD) y es canónica.

(22)

I = tt

T = lhen

E = else

0

= mux

UM ventaja del DAG if-then-else sobre los BDDs aparece cuando se convierte una forma de suma de productos. Seleccione una variable, digamos

VI.

Dividamos los cubos de la h c i ó n asociada con un nodo de la red Booleana en tres conjuntos C1, C2, C3 con respecto a vl: C1 corresponde a los cubos que no dependen de la variable seleccionada

VI,

C2 contiene todos los cubos que dependen de vl, y C3 contiene todos los cubos que dependen de vl

’,

el complemento de vl. El DAG if-then-else correspondiente se implementa if C l then TRUE, else (if vl then C2 else C3) y contiene dos nodos como se muestra en la Fig. l. El primer nodo tiene la h c i ó n determinada por los cubos en C. 1 conectados a su entrada de control, la constante TRUE conectada a su segundo hijo y la salida de su segundo hijo conectada a su tercer hijo. El segundo nodo tiene su entrada de control conectada a la variable vl, su segundo iujo a los cubos en C2 y su tercer hijo a los cubos en C3. Note que esta puede ser una representación más pequeña que la del

BDD

para la misma fúnción ya que las expresiones conectadas al

hijo superior e inferior del nodo BDD contienen cubos duplicados (los que están en Cl). En el DAG

if-

then-else estos cubos aparecen una sola vez.

Existen muchos enfoques para la opthizaión 16gica , El enfoque más comúnmente utdizado es romper el

proceso de síntesis en dos fases: una fase independente de la tecnología seguda de una fase de mapeo tecnológico. La fase independiente de la tecnología intenta generar una represenhción abstacta óptima del circuito lógico. La fase de mapeo tecnológico selecciona un conjunto de compuertas a partir de una librería 1 para implementar la representación abstracta mientras optimiza el área, retardo o una combinación de los dos.

Para la lógica cornbinacional, la representación abstracta escogida en MIS y en muchas otras herramientas universitarias e industriales, es la red Booleana, un grafo dirigido acíclico G(V,E) donde cada uno de los nodos v que pertenece a V representa una h c i ó n lógica de complejidad arbitraria de una sola salida. Existe un arco desde el nodo j hasta el nodo i si la función representada por el nodo i depende explícitamente de la función representada por j. Se dice que el nodo j es una ramificación de entrada del nodo i y el nodo i es una ramificación de salida del nodo j. Existen dos conjuntos de nodos especiales: nodos de entrada sin arcos Llegando a ellos que representan entradas primarias, y nodos de salida sin arcos saliendo de ellos que representan salid& primarias. Un ejemplo de red Booleana se muestra en la Fig. 2.

L a red tiene cuatro entradas primarias a,b,c, y d, y una salida pimaria z.

(23)

En el primer enfoque, l a red Bovleana se mapea en un grafo sujeto que es una red consistente de dos compuertas NAND de dos entradas. Todas las compuertas en la librería también son expresadas como redes (lamadas grafos patrones) en términos de compuertas NAND de dos entradas, resultando de esta manera una representación consistente entre la red y Ias compuertas en la librería. El problema se transforma ahora en un problema de cobertura: encontrar el costo mínimo cubierto del grafo sujeto mediante los grafos patrones. Y3 que tanto el grafo sujeto y los grafos patrones son grafos acíclicos dmgdos (DAGS), el problema es llamado de cobertura DAG mediante DAGS. Desafortunadamente el problema es de ddicultad NP (no conocida), y debido a que no existe un algoritmo exacto que proporcione resultados prácticos aún para redes relativamente pequeñas , se utilizan mktodos heurísticos. El primer heuuístico propuesto fue inspirado por el trabajo sobre compiladores optimizadores de Ah0 . Este heurístico es óptimo si la red a mapearse es un árbol y las compuertas de librería son representadas mediante árboles. Sin embargo, en general, la red BooIeana opfimizada no es un árbol. Por esta razón, l a red se descompone en árboles. Debido a que l a mayoría de las compuertas en

las

librerías ampliamente hponibles comercialmente pueden ser e'xpresadas en tkrminos de árboles de compuertas NAND de dos entradas, el problema de mapeo se transforma en un problema de cobertura de árbol por árboIes que es fidmente resuelto cubriendo cada uno de los árboles por separado. Éste es un heurístico eficiente ya que está basado en propiedades de optunIlidad probadas, el tiempo de corrida del procednniento es h e a l en el tamaño de los árboles, y la cahdad de los resultados 2s bastante buena.

Un enfoque alternativo es la red de compuertas NAND de dos entradas se descompone en subredes que no son necesariamente árboles; el Único requerimiento en común con la descomposición en árboles es que la conexión al resto del circuito o a la salida primaria sea un nodo de ramificación de salida igual a uno (el nodo receptor). Un enfoque de programación dmámica se uthza para encontrar el acoplamiento óptimo de las subredes en términos de un conjunto dado de primitivas (compuertas de librería). En este enfoque,

las operaciones Booleanas son utdizadas para determinar si un3 subred es lógicamente equivalente a una

de las funciones de librería (acoplamiento Booleano). Primero, se define un conjunto de funciones racimo como el conjunto de funciones que corresponden a los subgrafos conectados de la subred enrutada en el nodo receptor. Las hojas de estos DAGS son las variables de soporte de la función racimo. La estructura multinivel de los subgrafos se aplana obteniendo una representación de dos niveles de la función racimo. La función racimo es entonces verificada contra todas las compuertas de libreria para identificar aquellas compuertas que son Iógxamente equivalentes en el conjunto de importa de la h c i ó n racimo. ÉSto se hace resolviendo un problema de tautología, i.e. se toma la NOR exclusiva de la función racimo y de la compuerta de librería y se verifica para determinar si la salid3 de la

NOR

exclusiva es idénticamente

=al

a 1 en el conjunto de condiciones de importa de la función racimo. El acople de costo mínimo es seleccionado y el procedunlento se repite para todas las funciones que a t i n enrutadas zn los nodos que definen las variables de soporte de l a h c i o n racimo. Ésto define el paso basic0 para el p r o c e h e n t o de progamacion dinimica.

Entre las ventajas de este enfoque, podemos identificar:

la descomposición del gmfo sujeto no esli restringda por el bosque de kboles;

las condiciones de no-importa pueden incorporarse de manera natural para obtener acoplamientos que no habrían podido obtenerse con un entbque puramente estructural tal como el enfoque de cobertura de árbol por árboles.

Estas ventajas no ofrecen mejores sustanciales sobre el enfoque de cobertura de irbol cuando se aplican a librerías estándar en un conjunto de sistemas de referencia. Sin embargo, como veremos en la sección V, se logran mejores resultados para librerías que contienen XORs, multiplexores y h c i o n e s de mayoría

(24)

Fig 2

c w t d y

“--Lo

Cada nodo de la red puede representar una h c i ó n 1ógtca arbitraria (nodo general) o una función lógica simple tal como una

NAND

o

NOR

de dos entradas (nodo genérico). El soporte de un nodo es el conjunto de variables de las que depende la fúnción lógica explícitamente. Durante la optimización, los nodos de la red pueden ser mapeados de una forma general a una forma genérica como veremos más

adelante. Un nodo general puede ser representado en forma de suma de productos, forma factorizada, o como un

BDD.

La representación de los nodos puede cambiar de una forma a otra de acuerdo a las operaciones realizadas. La forma de suma de productos es conveniente en la minimización de nodos donde se utiliza

un minimizador lógico de dos niveles

.

La representación en forma fkctorizada es útil ya que corresponde a una posible implementación de la función en lógca CMOS dinámica donde cada literal corresponde a

un transistor

.

Más

aún, cuando se ubi& lógica

CMOS

estitica existe

una

correspondencia entre el número de literales en

una

forma factorizada óptima y la función de costo más comúnmente utihzada en la minimización lógica.

El problema de encontrar una forma factorizada óptima para una función lógica dada es, sin embargo, muy complejo y los algoritmos exactos no son prácticos para funciones de más de seis variables. Por lo tanto, se u t i h n métodos heurísticos para calcular la forma factorizada óptima. Más aún, la mininhción del número de literales no considera explícitamente el área de cableado la cual es particularmente importante para la síntesis FPGA. Esto representa un reto mayor en la adaptación de enfoques existentes, bien probados a los FPGAs.

Las operaciones realizadas en la fase independiente de l a tecnología se clasifican en dos clases: operaciones de reestructuración de red y rninimización de nodos. Las primeras incluyen operaciones que modifican l a estructura de la red Booleana mediante la introducción de nuevos nodos, ehinación de otros, y la adición y remoción de arcos, mientras que las últimas incluyen operaciones que simpldican las ecuaciones lógicas asociadas con los nodos.

1) Operaciones de Reestructuracibn:

Las operaciones reestructuradoras de red incluyen la descomposición, eeacción, factorización, resustitución y colapso.

La descomposición es el proceso de expresar una función lógca dada en téxminos de un número de nuevas funciones. Por ejemplo, sea

F=abcef+abdef+a’c’d’+b’c’d‘ (1)

Entonces una descomposición de F es

F=XYef+X’Y’

(25)

dondz S=ab y Y-c td

Nbtese que mientras ia expresibn que representa a F antes de la tícscon~posicibn dzpznde espiicita~r~znt.: de seis variables, la que resulta despuks de la descontposición depende explícit<munente de cuatro variables lirucamente. La descomposición es un paso esenclal para la opt~~nlzacih logica para los FPGAs.

La extracción está relacionada con la descomposición pero con un nLimero de funciones dadas. Con la extraccion, las funciones dadas son expresadas en términos de h c i o n e s y variables intermedm creadas nuevamente. Por ejemplo, cuando se aplica la extracción a las sigwentes funciones

F=(a’Wab’)cd ( 3

Wa’b’tab) (4)

resulta

F=Xcd (5)

G=X’+etf (6)

X=a’btab’ (7)

Subexpresiones comúnes son identdicadas y extraídas a fin de minimizar el número total de literales mediante la compartición de expresiones entre las funciones lógcas. Sin embargo, el número de arcos en la red Booleana resultante aumenta lo cual puede aumentar el área de cableado.

L a factorizacibn transforma la forma de suma de productos de una función lógtca en una forma Eactorizada. Por ejemplo, F de la Eq. (1) puede ser factorizada como abef(c+d)+(ab)’(c+d)’.

La sustitución o resustitución es el proceso de expresar una función lógca dada F en térmjnos de otra fimción dada G. Por ejemplo, sea G=abc entondes F=Gef+abdef+(G+abd)’.

El colapso, también llamado elirmnación o aplanamiento, es la operación inversa de la sustitución. Si G es un nodo de ramiiicación de entrada de F, el colapso “empuja” a G dentro de F de manera que F es expresada sólo en términos de sus nodos de ramificación de entmda los cuales incluyen también los nodos de ramificación de entrada de G.

Todas estas operaciones hacen uso de operaciones análogas a la multiplicación y división convencionales. De hecho, la descomposición, extracción y hctorización dependen de

hallar

subexpresiones

las

cuales sean “divisores” o “factores” de la representación de la función. El número de &visores y factores de una expresión Booleana dada, sin embargo, puede ser tan grande que es prácticamente imposible buscar el espacio para encontrar aquél que sea óptimo respecto al costo de la h c i ó n utilizada en la síntesis lógica. Como resultado en la mayoría de los sistemas de síntesis lógica, los &visores y factores son seleccionados a partir de un espacio restringido de manera que la búsqueda sea mucho más rápida y la calidad del resultado sea aceptable.

2) Operaciones Algebraicas:

El espacio restringido es el espacio dz las expresiones algebraicas. Una expresión algebraica es un conjunto de cubos tal que nni@, cubo contiene n a otro, i.e. ningún cubo contiene todos 10s vértices de otro cubo. Un producto Booleano de dos cubos e5 el producto de

Pa

literales de los cubos si ninguna literal aparece complementada en un cubo y sin complementar en el otro y es cero de otra manera. El producto de dos expresiones es el conjunto de productos de los cubos de las dos zxpresiones. Un producto de dos expresiones es un producto algebraico si éstas son espresiones algebraicas y si b dos espresiones no tienen variables de entrada comunes. La tarea bkica en la descomposición, extracción, factorización y resustitución es la operación de división: dadas dos funciones F y P, encontrar Q y R tales que F=PQtR. La &visión es algebraica si PQ es un producto algebraico.

Figure

FIG  7  A0  E O   SA  B O   E31  S 6   - 0   z &#34;1S I  O  2 &#34; -  - 0  'Sz 1 &#34; 1  S  J  4?  SO  ' I   OUT  3 1
FIG  10  t  5v  Habilitacih  ~~  -4  Tg  Th Entrada TI  Tg  f  Salida  w  A
FIG  12  -P,  Entrada  Entrada  3  I I I ' I 1 I 1 t  phl  t  phl
FIG  13  CLK

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

El nuevo Decreto reforzaba el poder militar al asumir el Comandante General del Reino Tserclaes de Tilly todos los poderes –militar, político, económico y gubernativo–; ampliaba

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

La siguiente y última ampliación en la Sala de Millones fue a finales de los años sesenta cuando Carlos III habilitó la sexta plaza para las ciudades con voto en Cortes de

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

El desarrollo de una conciencia cáritas es esencial para identificar cuando un momento de cuidado se convierte en transpersonal, es necesaria para identificar

En la parte central de la línea, entre los planes de gobierno o dirección política, en el extremo izquierdo, y los planes reguladores del uso del suelo (urbanísticos y