Estoy trabajando en un gran diseño de FPGA, y estoy muy cerca de los límites de recursos del FPGA que estoy utilizando actualmente, el Xilinx LX16 en el paquete CSG225.
El diseño también está casi completo, sin embargo, en este momento ya no encajará en el FPGA. Puedo apagar partes para que se ajusten, sin embargo, necesito reducir el uso de recursos para completar el diseño y hacer que cumpla con los requisitos de tamaño y tiempo.
Me gustaría saber si hay alguna herramienta de nuestros informes que pueda ayudarme a identificar qué partes de mi diseño consumen más recursos. Mi diseño no tiene particiones y está dividido en una docena o más de módulos VHDL.
Los informes de tiempos de Xilinx son fantásticos, pero ahora necesito saber dónde puedo obtener mi mejor valor por dinero en términos de ahorro de espacio.
También me cuesta mucho decir qué tipo de recursos me estoy quedando o qué efectos tienen esos recursos.
Otra molestia es que a medida que el diseño se hace más grande, los componentes que solían cumplir con el tiempo comienzan a fallar porque su ubicación ya no es tan ideal.
Actualmente, utilizo los informes de tiempo de Posicionamiento de Ruta y Lugar y uso SmartXplorer. Estoy usando estrategias de diseño para optimizar el tiempo.
Después de apagar parte de mi diseño para que encaje, aquí están algunos de los resultados:
utilización del registro de corte: 42% Utilización de LUT de rebanada: 96% número de pares LUT-FF completamente usados: 38% ¿Significa esto que soy ligero en los registros, pero pesado en el uso de la puerta?
¿Existen herramientas para ayudar a los desarrolladores a optimizar el área, o al menos darles una mejor comprensión de su código?
Actualización: Después de ver el Nivel de Módulo de Utilización, descubrí que tenía pegamento pequeño y asíncrono por todas partes que ocupaba alrededor del 30% del total de LUT. Los estoy utilizando como pegamento de dominio de reloj cruzado para autobuses de alta velocidad. Debería poder eliminarlos, ya que los relojes están estrechamente relacionados. (120 MHz de entrada, produce 100 MHz y 200 MHz a través de DCM)