¿Algún beneficio de implementar CSA en lugar de solo usar el símbolo de multiplicación al sintetizar?

Estoy sintetizando algunas unidades de multiplicación en Verilog y me preguntaba si generalmente obtiene mejores resultados en términos de área/ahorro de energía si implementa su propio CSA usando Booth Encoding al multiplicar o si solo usa el símbolo * y deja que la herramienta de síntesis tome cuidado del problema para usted?

Respuestas (3)

Si sus herramientas de síntesis son buenas, entonces debería usar el operador *, establecer restricciones razonables y dejar que las herramientas hagan el trabajo pesado. Esto es particularmente cierto para los FPGA, que pueden ser celdas multiplicadoras muy rápidas y densas. La serie Xilinx Spartan-3, por ejemplo, tiene algunas celdas multiplicadoras de 9x9 muy buenas. Si insiste en escribir ecuaciones lógicas para su propio multiplicador CSA, es posible que el sintetizador no pueda inferir que realmente desea un multiplicador, y el resultado usaría muchas LUT mientras las celdas del multiplicador permanecen inactivas.

sí, estaba pensando que dejar que las herramientas supieran que desea un multiplicador mediante el uso del operador * probablemente conduciría a mejores resultados cuando se realiza la optimización.

Deje que la herramienta de síntesis decida.

A menos que esté interesado en los resultados intermedios de la multiplicación, no habrá grandes ganancias en el enfoque manual. De hecho, dadas las muy amplias estrategias de optimización presentes en las herramientas de síntesis actuales, lo mejor que puede obtener manualmente en términos de rendimiento/área/potencia es lo mismo (y hay muchas posibilidades de que su implementación manual sea peor).

El único escenario (en mi opinión) en el que no permitirá que la herramienta de síntesis se encargue de la multiplicación es cuando hay bibliotecas/módulos estándar para multiplicadores disponibles (libs en ASIC, módulos en FPGA). Este enfoque se utiliza a veces en partes críticas de los sistemas (críticas en términos de rendimiento/área/potencia). Estas celdas están diseñadas para un uso particular (a nivel de diseño) y no hay posibilidad de que RLS funcione mejor que eso.

A menos que esté configurando algunos nodos internos de su multiplicador de codificación Booth como salidas, la herramienta de síntesis derivará la lógica de bajo nivel. Dado que las entradas y salidas de los dos enfoques son exactamente las mismas, una buena herramienta de síntesis las optimizaría exactamente de la misma manera y el resultado no sería diferente. La única manera de obligar a la herramienta de síntesis a implementar un multiplicador de stand es dividirlo en varios bloques y deshabilitar la optimización de límites.