Criterios generales de enrutamiento FPGA

Estaba implementando un circuito simple en un FPGA usando Quartus (6 elementos lógicos) y noté que el bloque que contiene las 6 celdas está ubicado cerca del perímetro. ¿Es este un criterio general? ¿La colocación en la frontera puede ayudar a minimizar algún retraso? (es decir, está "más cerca" de los pines de salida y esto es beneficioso)

ingrese la descripción de la imagen aquí

Respuestas (2)

Hay muchas cosas que intervienen en él, pero creo que es seguro decir que el instalador decidió que el mejor lugar para colocar ese bloque de lógica es porque estaba justo al lado del pin FPGA. Si su proyecto tiene requisitos de tiempo bajos, probablemente podría haber colocado ese bloque de lógica en un lugar diferente y aun así cumplir con los requisitos de tiempo.

Entonces, para responder a su pregunta, sí, hay alguna optimización que coloca ese bloque de lógica junto al puerto, y sí, en una distancia FPGA puede equivaler a un retraso, porque cuanto más lejos está, más lógica y buses tiene que atravesar la señal.

Aquí hay un diagrama de cómo se compila la lógica, la adaptación toma el HDL sintetizado y luego decide dónde colocarlo. Si cumple con las restricciones de tiempo, entonces se puede compilar en un archivo para programar el dispositivo.

ingrese la descripción de la imagen aquí

... the *best* place ...suena raro. Es más bien que el instalador eligió una ubicación que cumpla con todas las restricciones conocidas. No es necesariamente la mejor opción, pero es una opción suficiente.

Si su diseño contiene E/S, al menos la parte de E/S estará en el perímetro, porque ahí es donde está la interfaz de E/S. La interfaz debe estar dedicada a esa función porque las corrientes son mucho más altas, a menudo las oscilaciones de voltaje también lo son, y la protección contra el mundo y su ESD es (relativamente) grande y voluminosa.

Los FPGA tienen varios niveles de recursos de enrutamiento. Tienen unas pocas líneas que abarcan el chip, muchas líneas que abarcan parte del chip y una gran cantidad de líneas que se conectan a la lógica adyacente. El enrutador intenta favorecer la colocación de regiones conectadas una al lado de la otra para que pueda usar el recurso abundante y guardar el recurso escaso para cuando realmente se necesite. En un diseño simple, podría ubicar la lógica lejos de los pines, pero no está programado para hacer eso.

No todos los FPGA tienen todas sus IOB en el borde. Para dispositivos de gran cantidad de pines con un troquel BGA, muchos de los IOB estarán dispersos por todo el troquel.