Articulo de referencia

Optimización lógica

La optimización lógica es un proceso que consiste en encontrar una representación equivalente del circuito lógico especificado bajo una o más restricciones específicas. Este pro...

La optimización lógica es un proceso que consiste en encontrar una representación equivalente del circuito lógico especificado bajo una o más restricciones específicas. Este proceso forma parte de la síntesis lógica aplicada en la electrónica digital y el diseño de circuitos integrados .

Generalmente, el circuito está limitado a un área mínima de chip que cumpla con un retardo de respuesta predefinido. El objetivo de la optimización lógica de un circuito dado es obtener el circuito lógico más pequeño que evalúe los mismos valores que el original. [ 1 ] Por lo general, el circuito más pequeño con la misma función es más barato, [ 2 ] ocupa menos espacio, consume menos energía , tiene menor latencia y minimiza los riesgos de diafonía inesperada , el peligro de procesamiento de señal retardado y otros problemas presentes en el nivel de nanoescala de las estructuras metálicas en un circuito integrado .

En términos de álgebra booleana , la optimización de una expresión booleana compleja es un proceso para encontrar una más simple que, al evaluarse, produzca finalmente los mismos resultados que la original.

Motivación

El problema de tener un circuito complejo (es decir, uno con muchos elementos, como puertas lógicas ) es que cada elemento ocupa espacio físico y su producción requiere tiempo y dinero. La minimización de circuitos puede ser una forma de optimización lógica que se utiliza para reducir el área de la lógica compleja en los circuitos integrados .

Con la llegada de la síntesis lógica , uno de los mayores desafíos que enfrentó la industria de la automatización del diseño electrónico (EDA) fue encontrar la representación de circuito más simple de la descripción de diseño dada. [ nb 1 ] Si bien la optimización lógica de dos niveles había existido durante mucho tiempo en forma del algoritmo Quine-McCluskey , seguido posteriormente por el minimizador lógico heurístico Espresso , la rápida mejora de las densidades de los chips y la amplia adopción de lenguajes de descripción de hardware para la descripción de circuitos formalizaron el dominio de la optimización lógica tal como existe hoy, incluyendo Logic Friday (interfaz gráfica), Minilog y ESPRESSO-IISOJS (lógica multivaluada). [ 3 ]

Métodos

Los métodos de simplificación de circuitos lógicos son igualmente aplicables a la minimización de expresiones booleanas .

Clasificación

Actualmente, la optimización lógica se divide en varias categorías:

Basado en la representación de circuitos
Optimización lógica de dos niveles
Optimización lógica multinivel
Basado en las características del circuito
Optimización de lógica secuencial
Optimización de lógica combinacional
Según el tipo de ejecución
Métodos de optimización gráfica
Métodos de optimización tabular
Métodos de optimización algebraica

Métodos gráficos

Los métodos gráficos representan la función lógica requerida mediante un diagrama que muestra las variables lógicas y el valor de la función. Al manipular o inspeccionar un diagrama, se pueden eliminar muchos cálculos tediosos. Los métodos gráficos de minimización para lógica de dos niveles incluyen:

Minimización de expresiones booleanas

Los mismos métodos de minimización (simplificación) de expresiones booleanas que se enumeran a continuación pueden aplicarse a la optimización del circuito.

Para el caso en que la función booleana se especifica mediante un circuito (es decir, queremos encontrar un circuito equivalente del tamaño mínimo posible), se conjeturó durante mucho tiempo que el problema de minimización de circuitos no acotados eraΣ2PAG{\displaystyle \Sigma _{2}^{P}}-completa en complejidad temporal , un resultado finalmente demostrado en 2008, [ 4 ] pero existen heurísticas efectivas como los mapas de Karnaugh y el algoritmo de Quine-McCluskey que facilitan el proceso.

Los métodos de minimización de funciones booleanas incluyen:

Métodos multinivel óptimos

Los métodos que encuentran representaciones de circuitos óptimas de funciones booleanas se denominan a menudo síntesis exacta en la literatura. Debido a la complejidad computacional, la síntesis exacta solo es viable para funciones booleanas pequeñas. Enfoques recientes transforman el problema de optimización en un problema de satisfacibilidad booleana . [ 5 ] [ 6 ] Esto permite encontrar representaciones de circuitos óptimas utilizando un solucionador SAT .

Métodos heurísticos

Un método heurístico utiliza reglas establecidas que resuelven un subconjunto práctico y útil del conjunto mucho mayor de problemas posibles. Si bien el método heurístico puede no producir la solución teóricamente óptima, si resulta útil, proporcionará la mayor parte de la optimización deseada con un mínimo esfuerzo. Un ejemplo de sistema informático que utiliza métodos heurísticos para la optimización lógica es el minimizador lógico heurístico Espresso .

Representaciones de dos niveles frente a representaciones de múltiples niveles

Si bien una representación de circuitos de dos niveles se refiere estrictamente a la vista plana del circuito en términos de SOP ( suma de productos ) —que es más aplicable a una implementación PLA del diseño— , una representación multinivel es una vista más genérica del circuito en términos de SOP conectados arbitrariamente, POS ( producto de sumas ), forma factorizada, etc. Los algoritmos de optimización lógica generalmente trabajan con la representación estructural (SOP, forma factorizada) o funcional ( diagramas de decisión binarios , diagramas de decisión algebraicos ) del circuito. En la forma de suma de productos (SOP), las compuertas AND forman la unidad más pequeña y se unen mediante OR, mientras que en la forma de producto de sumas (POS) es al revés. La forma POS requiere paréntesis para agrupar los términos OR bajo las compuertas AND, porque OR tiene menor precedencia que AND. Tanto la forma SOP como la POS se traducen bien a la lógica de circuitos.

Si tenemos dos funciones F 1 y F 2 :

F1=AB+Ado+AD,{\displaystyle F_{1}=AB+AC+AD,\,}
F2=AB+Ado+Ami.{\displaystyle F_{2}=A'B+A'C+A'E.\,}

La representación de 2 niveles anterior utiliza seis términos de producto y 24 transistores en CMOS Rep.

Una representación funcionalmente equivalente en multinivel puede ser:

P = B + C .
F 1 = AP + AD .
F 2 = A ' P + A ' E .

Si bien el número de niveles aquí es 3, el número total de términos de producto y literales se reduce debido a que se comparte el término B + C.

De forma similar, distinguimos entre circuitos combinacionales y circuitos secuenciales . Los circuitos combinacionales generan sus salidas basándose únicamente en las entradas actuales. Se pueden representar mediante relaciones booleanas . Algunos ejemplos son los codificadores de prioridad , los decodificadores binarios , los multiplexores y los demultiplexores .

Los circuitos secuenciales generan su salida a partir de entradas actuales y pasadas, dependiendo de una señal de reloj para distinguir las entradas anteriores de las actuales. Se pueden representar mediante máquinas de estados finitos. Algunos ejemplos son los biestables y los contadores .

Ejemplo

Circuito de ejemplo original y simplificado

Si bien existen muchas maneras de minimizar un circuito, este es un ejemplo que minimiza (o simplifica) una función booleana. La función booleana realizada por el circuito está directamente relacionada con la expresión algebraica a partir de la cual se implementa la función. [ 7 ] Considere el circuito utilizado para representar(AB¯)(A¯B){\displaystyle (A\wedge {\bar {B}})\vee ({\bar {A}}\wedge B)}Es evidente que en esta afirmación se utilizan dos negaciones, dos conjunciones y una disyunción. Esto significa que para construir el circuito se necesitarían dos inversores , dos compuertas AND y una compuerta OR .

El circuito se puede simplificar (minimizar) aplicando las leyes del álgebra booleana o usando la intuición. Dado que el ejemplo indica queA{\displaystyle A}es cierto cuandoB{\displaystyle B}es falso y viceversa, se puede concluir que esto simplemente significaAB{\displaystyle A\neq B}En términos de compuertas lógicas, la desigualdad simplemente significa una compuerta XOR (o exclusivo). Por lo tanto,(AB¯)(A¯B)AB{\displaystyle (A\wedge {\bar {B}})\vee ({\bar {A}}\wedge B)\iff A\neq B}Entonces, los dos circuitos que se muestran a continuación son equivalentes, como se puede comprobar utilizando una tabla de verdad :

Véase también

Notas

  1. El tamaño de la lista de conexiones se puede utilizar para medir la simplicidad.

Referencias

  1. Maxfield, Clive "Max" (1 de enero de 2008). "Capítulo 5: Flujos de diseño "tradicionales"" . En Maxfield, Clive "Max" (ed.). FPGAs . Acceso instantáneo. Burlington: Newnes / Elsevier Inc. pp. 75–106 . doi : 10.1016/B978-0-7506-8974-8.00005-3 . ISBN  978-0-7506-8974-8. Consultado el 04-10-2021 .
  2. Balasanyan, Seyran; Aghagulyan, Mane; Wuttke, Heinz-Dietrich; Henke, Karsten (16 de mayo de 2018). "Electrónica digital" (PDF) . Licenciatura en Sistemas Embebidos - Grupo de año. Tempus. DesIRE. Archivado (PDF) del original el 4 de octubre de 2021. Recuperado el 4 de octubre de 2021 .(101 páginas)
  3. Theobald, M.; Nowick, SM (noviembre de 1998). "Algoritmos heurísticos y exactos rápidos para la minimización lógica libre de riesgos de dos niveles" . IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 17 (11): 1130– 1147. doi : 10.1109/43.736186 .
  4. Buchfuhrer, David; Umans, Christopher (enero de 2011). "La complejidad de la minimización de fórmulas booleanas" (PDF) . Journal of Computer and System Sciences . 77 (1). Departamento de Ciencias de la Computación, Instituto Tecnológico de California , Pasadena, California, EE. UU.: Elsevier Inc .: 142–153 . doi : 10.1016/j.jcss.2010.06.011 .Esta es una versión extendida del artículo de la conferencia: Buchfuhrer, David; Umans, Christopher (2008). "La complejidad de la minimización de fórmulas booleanas". Actas del 35.º Coloquio Internacional sobre Autómatas, Lenguajes y Programación (ICALP) (PDF) . Lecture Notes in Computer Science . Vol. 5125. Berlín/Heidelberg, Alemania: Springer-Verlag . págs. 24-35 . doi : 10.1007/978-3-540-70575-8_3 . ISBN   978-3-540-70574-1. Archivado (PDF) del original el 14-01-2018 . Recuperado el 14-01-2018 .
  5. Haaswijk, Winston. "SAT-Based Exact Synthesis: Encodings, Topology Families, and Parallelism" (PDF) . EPFL . Consultado el 7 de diciembre de 2022 .
  6. Haaswijk, Winston. "Síntesis exacta basada en SAT para redes lógicas multinivel" (PDF) . EPFL . Consultado el 7 de diciembre de 2022 .
  7. Mano, M. Morris; Kime, Charles R. (2014). Fundamentos de lógica y diseño informático (4.ª edición internacional). Pearson Education Limited . pág. 54. ISBN   978-1-292-02468-4.

Lecturas adicionales

  • Lind, Larry Frederick; Nelson, John Christopher Cunliffe (1977). Análisis y diseño de sistemas digitales secuenciales . Macmillan Press . ISBN 0-33319266-4.(146 páginas)
  • De Micheli, Giovanni (1994). Síntesis y optimización de circuitos digitales . McGraw-Hill . ISBN 0-07-016333-2.(Nota: Los capítulos 7 a 9 tratan sobre la optimización combinatoria de dos niveles, la optimización combinatoria de múltiples niveles y la optimización de circuitos secuenciales, respectivamente).
  • Hachtel, Gary D.; Somenzi, Fabio (2006) [1996]. Algoritmos de síntesis y verificación lógica . Springer Science & Business Media . ISBN 978-0-387-31005-3.
  • Kohavi, Zvi; Jha, Niraj K. (2009). "4-6". Teoría de la conmutación y los autómatas finitos (3ª  ed.). Prensa de la Universidad de Cambridge . ISBN 978-0-521-85748-2.
  • Rutenbar, Rob A. Minimización multinivel, Parte I: Modelos y métodos (PDF) (diapositivas de la clase). Universidad Carnegie Mellon (CMU). Clase 7. Archivado (PDF) del original el 15 de enero de 2018. Recuperado el 15 de enero de 2018 ;Rutenbar, Rob A. Minimización multinivel, Parte II: Extracto de cubo/cokernel (PDF) (diapositivas de la clase). Universidad Carnegie Mellon (CMU). Clase 8. Archivado (PDF) del original el 15 de enero de 2018. Recuperado el 15 de enero de 2018 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Logic_optimization&oldid=1331449561#Circuit_minimization_in_Boolean_algebra "