¿Está mi FPGA sin recursos de enrutamiento?

9

Tengo un diseño de controlador Serial-ATA que funciona en casi cualquier tipo de dispositivos de la serie Xilinx 7, excepto el dispositivo Artix-7, que me da dolores de cabeza ...

El diseño puro (SATA 6.0Gb / s, reloj de diseño de 150 MHz) se puede implementar en mi Artix-7 200T. Si agrego núcleos ILA (anteriormente conocido como ChipScope), no se cumple el tiempo.

¿Qué hice para relajar la situación? - Agregué 2 etapas de canalización en cada núcleo ILA - Agregué 1 etapa de canalización entre el transceptor GTP y la lógica - Usé el reajuste, la reasignación y la colocación amplia como estrategia de implementación alternativa

Estas imágenes muestran el flujo de diseño normal. Los núcleos ILA están muy lejos del SATAController (SATAC) y la CPU de 8 bits ( SoFPGA ), pero el controlador todavía tiene rutas defectuosas (esa es la única región con rutas defectuosas).

ingrese la descripción de la imagen aquí

Parece que el Artix-7 no tiene recursos de enrutamiento en algunas áreas. ¿Cómo puedo obtener un informe que indique tal sospecha?

También probé estrategias de reajuste, reasignación y colocación más amplia. El resultado es este:

ingrese la descripción de la imagen aquí

La falla de tiempo es casi la misma ...

PD El diseño usa solo 178 de> 300 BlockRAMs. Usé Xilinx ISE para usar casi todos los BlockRAM en otros diseños, pero nunca encontré tal comportamiento.

Editar:

Aquí hay un mapa de calor de todos los valores de holgura negativos por sector (coloreado en rojo) ingrese la descripción de la imagen aquí

Paebbels
fuente
3
En Altera Quartus hay algo llamado regiones LogicLock que le permite restringir una partición o fragmento de lógica a una región específica. Supongo que habrá algo similar para Xilinx (aunque no estoy seguro de cómo se llamaría). Si puede hacer eso, debe restringir el ILA a una región lejos de su lógica (para evitar que desplace cosas importantes) y agregar una canalización adicional (sin restricciones a la región) para ayudar con el tiempo.
Tom Carpenter
2
También puede ser un caso de rutas falsas entre el dominio de reloj de la ILA y cualquier otro dominio de reloj que provoque rutas falsas que resulten en un esfuerzo adicional por parte del instalador (lo que hace que las rutas reales sean tratadas con menos prioridad y, por lo tanto, fallando el tiempo)
Tom Carpenter
2
He tenido problemas similares con SignalTap (nuevamente el equivalente de Altera de ILA), con rutas defectuosas causadas porque las rutas sensibles se estaban separando por la lógica de toque que quería estar más cerca de las señales que se estaban tocando. Estaba sucediendo principalmente donde había una alta densidad BRAM porque los BRAM SignalTap estaban forzando a otros BRAM a separarse más. Una vez que SignalTap se limitó a una región que estaba menos llena de críticas, los problemas desaparecieron.
Tom Carpenter
@TomCarpenter Las restricciones de ubicación se denominan PBlock :). Por lo que puedo decir, no hay células ILA en la región SoFPGA o SATAC, están separadas a través de 3 etapas FF en cada una de las 151 señales de rastreo. El diseño explorado se ejecuta en el mismo dominio de reloj que el ILA (150 MHz). Todas las rutas están restringidas (sin restricciones, sin fallas entre las rutas del reloj). Las rutas de falla mencionadas están todas en el mismo dominio de reloj, ya sea en el SATAC o en el propio ILA. Encontré un informe de congestión de enrutamiento, que dice alrededor del 54% de uso (hor. Y vert.). Por favor mira mi neg. Mapa de calor flojo agregado a mi pregunta.
Paebbels
1
Encontré 2 problemas: al principio, el Artix-7 es 15 a 50% más lento que un Kintex-7. Si cambio el grado de velocidad predeterminado de -2 a -3, todo está bien (hay un margen de seguridad de 200 ps en comparación con 670 ps de holgura negativa. Por lo tanto, el grado de velocidad -3 mejora una trayectoria de 6.600 ns en casi 0.970 ns. parece que la conexión pura de las señales de rastreo provoca un mayor abanico, lo que causa problemas de temporización. Además, las rutas de rastreo atraviesan el dominio de reloj de 100 MHz para la CPU de 8 bits, lo que a su vez provoca (una de cada 5 ejecuciones) problemas en ese dominio de reloj. Así que las líneas / rutas largas causan problemas en otras líneas.
Paebbels

Respuestas:

1

Puede obtener un informe detallado haciendo un análisis de diseño en Xilinx Vivado. Ejecute el siguiente comando en la consola tcl: "report_design_analysis" Le proporciona el informe de tiempo, complejidad y congestión del diseño implementado. También puede ejecutar este informe yendo a Herramientas-> Informe-> Informe Diseño_análisis.

En este informe, puede ver qué áreas están causando congestión debido a la colocación. Qué rebanadas se utilizan por completo o cuál es el alquiler de dichas rebanadas y / o rutas.

Espero que esto haya sido de ayuda.

Saludos, KWQ

KashifWajid
fuente
Gracias por este informe (para mí desconocido). ¿Cómo difiere de mi última imagen (el mapa de calor de tiempo)?
Paebbels