Ayuda con las opciones de optimización de Espresso

0

Necesito minimizar algunas funciones booleanas. Encontré en algunas publicaciones aquí que Espresso es una gran herramienta de código abierto para hacer esto. Encontré este enlace donde las diferentes opciones de optimización para Espresso tienen ha sido discutido Mi requisito es que mi salida tenga un número mínimo de operaciones (& amp ;, | y!). Entonces, ¿qué optimización (es) debo elegir al ejecutar espresso. Mi tabla de verdad se ve así,

  | A | B | C | D ........................| Y0 | Y1 | ........  |
  _______________________________________________________________
  | 1 | 1 | 0 | 1 ........................| 1  | 0  | ........  |
  | 1 | 1 | 0 | X.........................| 1  | 1  | ........  |
  | 0 | 0 | 1 | 0.........................| 0  | 0  | ........  |

donde Y1...Yn son las variables de salida. Intenté con -Dexact, pero la mayoría de las veces se atasca (quizás debido a la alta complejidad). Si intento con -Dso -S1, el programa se ejecuta muy rápido con un número menor de términos.

Pido disculpas por adelantado si esta pregunta es demasiado ingenua, mi experiencia es en software y tengo muy poco conocimiento de estas herramientas. La función booleana solo es necesaria para el software, por lo que no me preocupa la potencia, el área, etc. Aprecio tu ayuda.

EDIT 1: Creo que hay cierta confusión con respecto al término "número mínimo de operaciones". Lo que quise decir es, supongamos que la salida minimizada es (! A & b) | (A & B & C & d) | (! C & D) y considere que usaré operadores bitwise en C para operaciones lógicas. ¿Ahora lo que necesito son optimización (s) que resultarán en el código más rápido?

EDIT 2: Para mayor aclaración, el compilador C (u otro) no puede hacer esto. Hay casi 12 variables que quiero minimizar. Ahora, no creo que el compilador de C pueda minimizar la lógica, por ejemplo, si Y = (A & B &! C & D) | (A & B & C & D) | (A &! B & D), (todos son variables de 64 bits y utilizan operadores bitwise). El compilador de C no hará la minimización Y = A & B y amp; D, pero creo que el espresso puede hacer esto. Esto resultará en un código más rápido. No puedo hacerlo usando el mapa KV del algoritmo QM ya que tengo muchas variables. Además, se debe tener en cuenta que no estoy evitando la optimización del compilador por completo después de obtener las expresiones minimizadas de Espresso. Voy a compilar el código usando GCC con -O3, así que también obtendré las optimizaciones específicas del compilador.

    
pregunta Rick

0 respuestas

Lea otras preguntas en las etiquetas