Se necesita un poco más para que funcione. La siguiente plantilla debería funcionar:
set module [lindex $quartus(args) 0]
set revision [lindex $quartus(args) 2]
if {[string match "quartus_asm" $module]} {
#Commands which are run after the Quartus Assembler
post_message "Running TCL after Quartus Assembler"
#Use Chain file to program sof.
qexec "quartus_pgm ProgramSof.cdf"
}
Coloque la plantilla en un archivo de script TCL con el nombre que elija, por ejemplo. PostModule.tcl
, luego en su archivo .qsf
de proyectos y la siguiente línea:
set_global_assignment -name POST_MODULE_SCRIPT_FILE quartus_sh:PostModule.tcl
La línea en el archivo .qsf
le indicará a Quartus que ejecute el script TCL cada vez que un módulo (por ejemplo, instalador, ensamblador, timequest, etc.) termine de ejecutarse.
En el script obtenemos el módulo actual que se está ejecutando y también podemos obtener la revisión del proyecto correspondiente. Luego verificamos si el módulo actual es el que queremos ejecutar después de la secuencia de comandos, en este caso el ensamblador de Quartus ( quartus_asm
).
Cualquier comando que coloque dentro de esa instrucción if ahora se ejecuta cada vez que finaliza el ensamblador Quartus.
La forma más sencilla de lograr la programación es utilizar un archivo en cadena. Si abre el programador de Quartus y configura todo: hardware de programación, nombre de archivo, lista de dispositivos, etc. Luego guarde ese archivo como algo así como "ProgramSof.cdf". La plantilla anterior ejecutará el programador de Quartus usando ese archivo de cadena que usará todos los ajustes que hayas guardado.
También puede cambiar el comando para hacerlo completamente a través de los interruptores de la línea de comandos en lugar de un archivo de cadena, sin embargo, si va a hacer esto, debe especificar el nombre del cable de programación, los dispositivos en la cadena JTAG si hay más de uno (por ejemplo, muchos kits de desarrollo tienen supervisores MAX V en la cadena con el FPGA principal), y así sucesivamente. Es más fácil simplemente guardar un archivo de cadena y luego, si necesita cambiar cualquier configuración, simplemente puede editar ese archivo de cadena.