¿Cómo se enruta físicamente una señal en un FPGA?

He mirado esta pregunta similar, pero no proporciona la respuesta que estoy buscando. Los documentos de Xilinx también me confunden y el diagrama proporcionado en la vista de implementación del software de Xilinx no arroja mucha luz sobre esta cuestión.

Mi interpretación de cómo se realiza el enrutamiento dentro de un FPGA es como el siguiente diagrama:

ingrese la descripción de la imagen aquí

Cuando digo señales, quise decir CLB

En cada intersección de los cables azul y naranja, hay un interruptor que se configura cuando la FPGA está programada para conectar los dos cables, como se ilustra en la imagen con el punto "Punto de conexión". Una vez que se establece un punto de conexión, la longitud completa de los cables azul y naranja estará activa en la conexión.

No creo que mi interpretación sea correcta.

Respuestas (2)

Tu interpretación es demasiado simplista. Los FPGA reales tienen una jerarquía compleja de recursos de enrutamiento, algunos solo para conexiones locales, otros para conexiones de rango medio y otros para abarcar todo el chip. Estas estructuras se han desarrollado a lo largo de muchos años de estudio de diseños de aplicaciones, tratando de lograr un equilibrio entre el área requerida para el enrutamiento y la capacidad de admitir una amplia gama de estructuras lógicas de aplicaciones.

En los chips Xilinx, por ejemplo, estos recursos están en las capas de metal y se conectan a pequeños bloques de lógica activa que funcionan como pequeños interruptores de barra cruzada, lo que permite conexiones bastante arbitrarias entre los puertos de cada interruptor.

Si activa la herramienta de planificación de piso de Xilinx en su diseño y se acerca al nivel de los cortes individuales, puede comenzar a tener una idea del diseño físico real del chip y sus recursos de enrutamiento. Es bastante sorprendente lo pequeña que es el área dedicada a la lógica de corte real que implementa su aplicación. La gran mayoría del área del chip está dedicada a los recursos de enrutamiento.

Básicamente, mi interpretación tiene algo de mérito, pero pierde una gran cantidad de detalles. El motivo de mi pregunta es que intento comparar el costo de los recursos de enrutamiento entre el uso del protocolo APB (un bus de direcciones para operaciones de lectura y escritura) y el uso del protocolo AXI4-Lite (un bus de direcciones separado para operaciones de lectura y escritura). Pensé que podría desarrollar una ecuación y una buena estimación con mi interpretación simplista, pero parece fuera de alcance después de leer su respuesta.

Además de las respuestas anteriores: aquí hay una vista detallada de 4 cajas de interruptores, cada una para un CLB con 2 rebanadas cada una.

ingrese la descripción de la imagen aquí

Leyenda:

  • gris: cables sin usar
  • verde: cables usados
  • blanco: un cable seleccionado
  • azul: elementos usados ​​(LUTs, FFs, ...)
¡Esto es excelente! ¿Cómo generaste esta imagen? Me gustaría hacer esto con mi diseño para aprender más!!!
Puede usar Xilinx ISE FPGA Editor para los antiguos FPGA de Xilinx o Xilinx Vivado (vista del dispositivo + zoom) para los FPGA de la serie 7 de Xilinx o más nuevos. Lattice también tiene un visor de dispositivos. Altera debería tener una herramienta similar.
Uso Xilinx Vivado y no veo detalles como este, solo veo las unidades CLB y no hay cables... Le echaré un segundo vistazo más tarde y veré si he pasado algo por alto.
Debe abrir una implementación, luego Vivado muestra la pestaña del dispositivo. Luego habilite los cables ("Recursos de enrutamiento", segundo botón en el lado izquierdo). Ahora puedes hacer zoom y zoom y zoom...