Estoy trabajando en un gran diseño FPGA, y estoy muy cerca de los límites de recursos de la 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 cabe en la FPGA. Puedo desactivar partes para que quepa, pero necesito reducir el uso de recursos para completar el diseño y que cumpla los requisitos de temporización y tamaño.
Me gustaría saber si existen herramientas o informes que puedan ayudarme a identificar qué partes de mi diseño consumen más recursos. Mi diseño no está particionado y se divide en una docena o más de módulos VHDL.
Los informes de sincronización de Xilinx son fantásticos, pero ahora necesito saber dónde puedo obtener la mejor relación calidad-precio en términos de ahorro de espacio.
También me cuesta saber qué tipo de recursos se me están acabando o qué efectos tienen esos recursos.
Otra molestia es que, a medida que el diseño se hace más grande, los componentes que antes cumplían los plazos empiezan a fallar porque su colocación ya no es tan idónea.
Actualmente, utilizo los informes de cronometraje Post-Place y Route Static, y utilizo SmartXplorer. Utilizo estrategias de diseño para optimizar la temporización.
Después de desactivar parte de mi diseño para que encajara, estos son algunos de los resultados:
utilización del registro de rebanadas: 42% utilización de slice LUT: 96 número de pares LUT-FF totalmente utilizados: 38 ¿Significa esto que tengo pocos registros, pero mucho uso de puertas?
¿Existen herramientas que ayuden a los desarrolladores a optimizar por zonas o que, al menos, les permitan conocer mejor su código?
Actualización: Después de mirar la utilización a nivel de módulo, descubrí que tenía pequeños fifos asíncronos de cola por todas partes que ocupan alrededor del 30% del total de LUTs. Los estoy usando como pegamento entre dominios de reloj para buses 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 DCMs)
0 votos
Parece que tienes muchas interconexiones entre las señales, seguro que puedes arreglarlo cambiando los niveles de optimización, compartiendo recursos y tal. ¿Qué herramienta estás utilizando? ¿ISE o Vivado?
1 votos
Estoy usando ISE (Vivado no es compatible con Spartan-6) He cruzado esto en los foros de Xilinx, y me dijeron que a su vez en el informe detallado del mapa. Hice esto, y el archivo *. mrp ahora contiene la Sección 13 - Utilización por jerarquía. Voy a publicar los datos una vez que tenga un mejor formato.