¿Cómo hacer archivos de programación generados por Quartus para dos FPGA diferentes pero compatibles con pines?

En la mayoría de las placas de porotipo hay un FPGA más pequeño que se ajusta al diseño pero no puede adaptarse a una gran cantidad de tap tap de señal para ayudar en la depuración. Por lo tanto, modifiqué algunas placas con el FPGA compatible con pines más grande que pude encontrar. Los tableros modificados funcionan.

El problema ahora es que cuando abro el proyecto Quartus y cambio el dispositivo a un FPGA compatible con pin más grande, Quartus elimina todo el pinout y tengo que empezar de cero. Una forma de hacerlo es guardar el pinout en un archivo .tcl y ejecutarlo para recuperar el pinout cuando se cambia el FPGA en el proyecto Quartus.

Ahora, todo esto da como resultado un flujo de trabajo tedioso en el que tengo que seleccionar manualmente las dos partes diferentes de FPGA en Quartus GUI y luego ejecutar la compilación manualmente dos veces para obtener los archivos de programación para que los usemos yo y otros miembros del equipo para estos dos tipos diferentes de tableros de prototipos. Esto solo desperdicia tiempo que es mejor gastarlo en otras cosas.

No he podido encontrar una manera de decirle explícitamente a Quartus que siempre compile el proyecto para dos FPGA diferentes. En este caso, idealmente podría ejecutar la síntesis una vez y luego ajustar dos veces para ajustar el diseño en dos partes diferentes de FPGA.

Ahora mi pregunta, ¿cómo le digo a Quartus que compile el proyecto FPGA para dos partes diferentes de FPGA y, por lo tanto, genere un archivo de software de programación para dos partes diferentes de FPGA? ¿Escribir un script bash y usar la línea de comandos es la única forma de hacer esto?

Respuestas (3)

La opción más sencilla para hacer esto en Quartus es usar "Revisiones del proyecto". Puede crear una nueva revisión del proyecto que use el otro dispositivo, y de esa manera, para cambiar entre los dispositivos, simplemente necesita cambiar las revisiones, lo que no afectará ninguna de sus asignaciones.

De la documentación de Quartus sobre revisiones:

Una revisión es un grupo de configuraciones y asignaciones para los archivos de diseño en un diseño. Puede usar diferentes revisiones para determinar cómo las diferentes configuraciones y asignaciones afectan los resultados del procesamiento del diseño.

Por ejemplo, puede usar varias revisiones para compilar un diseño para el mismo dispositivo pero con diferentes opciones de lógica predeterminadas y configuraciones de análisis de tiempo. O bien, puede usar dos revisiones para compilar un diseño para dos dispositivos diferentes mientras mantiene constantes todas las demás configuraciones y asignaciones .

Al usar las herramientas de la línea de comandos (p. ej. quartus_cdb, etc.), uno de los argumentos de la línea de comandos que pasa es el nombre de la revisión, por lo que puede compilar diferentes revisiones desde la línea de comandos simplemente cambiando el argumento de la línea de comandos.

No creo que puedas hacer eso directamente en Quartus. Lo que recomendaría hacer es automatizar la creación y construcción del proyecto, por lo que simplemente puede tener una secuencia de comandos para cada dispositivo de destino y el proyecto para cada uno puede crearse desde cero y configurarse de manera idéntica, excepto para el dispositivo de destino seleccionado. He usado makefiles para esto, pero también puede ser posible hacer lo mismo con tcl.

¿Qué pasa con el comentario de Tom Carpenter?
Nunca antes había oído hablar de esa función, probablemente porque automatizo la creación y compilación del proyecto y paso el menor tiempo posible en la GUI. Si esa característica hace lo que quieres, entonces úsala por todos los medios.

Hay una función llamada "Dispositivos de migración" que le permite compilar para múltiples dispositivos de destino, pero genera un único flujo de bits que se puede cargar en cualquiera de los dispositivos. Tiene una definición de pin único y se verifica que sea compatible con todos los dispositivos (algunas de las variantes más grandes reemplazan los pines de E/S con pines de suministro adicionales).

Puede seleccionar esto en el cuadro de diálogo de selección de dispositivo.

Que yo sepa, la opción de dispositivos de migración no produce un flujo de bits compatible con varios dispositivos. Según tengo entendido, simplemente verifica que las asignaciones de pines que realice sean compatibles con todos los dispositivos de migración (es decir, no está usando un pin que no estaría disponible en un dispositivo más pequeño).