Introducción

El Quartus puede ser controlado mediante linea de comando y ejecutar scripts en lenguaje TCL. La información de esta página es un extracto del manual de referencia del Scripting de Altera, orientado a poder manipular el contenido de una memoria que tenga habilitada la opción de In-System content Memory editor.


Ejecutables de linea de comando

En la carpeta de instalación de Quartus ( altera\13.1\quartus\bin) hay una serie de ejecutables de linea de comando que permiten realizar mutiles acciones que habitualmente se hacen a través de la interfaz gráfica. En la la tabla 1 del capitulo 1 hay un resumen de los ejecutables y en el capítulo 2 se profundiza en cada uno de ellos.

En particular el ejecutable quartus_stp es el que nos permite acceder a recursos dentro del FPGA a través de la interfaz JTAG. Este será el que nos permitirá acceder a la memoria que tengamos en el diseño.

La opción -t permite ejecutar un conjunto de comandos TCL que se encuentran en un archivo: quartus_stp -t <script file>

La opción --tcl_eval permite ejecutar un solo comando TCL para probarlo.


Identificando recursos accesibles por JTAG

Para acceder a la memoria en nuestro diseño debemos de conocer:

- El hardware de acceso JTAG (hardware_name)

- El dispositivo dentro de la cadena JTAG al que queremos acceder (device_name)

- El indice de la instancia accesible por JTAG dentro de nuestro diseño a la que queremos acceder.

Esto se puede hacer dentro de un script ejecutando ciertos comandos y guardando los resultados en variables. En forma similar a lo que se hizo en la práctica 4.

Con la placa conectada y programada, ejecutamos esta serie de comandos con la opción tcp_eval:

Para conocer el hardware_name:

C:\altera\13.1\quartus\bin>quartus_stp --tcl_eval get_hardware_names
{USB-Blaster [USB-0]}

Ahora que conocemos eso podemos consultar el nombre de los FPGAs accesibles por JTAG:

C:\altera\13.1\quartus\bin>quartus_stp --tcl_eval get_device_names -hardware_name "USB-Blaster [USB-0]"
{@1: EP3C16/EP4CE15 (0x020F20DD)}

ATENCION: cuando se usan [ ] en la evaluación de un comando, por ejemplo en  [USB-0], los [ ] deben de estar precedidos de un \ para escaparlos.

Ahora el indice del dispositivo accesible (es el primero de los valores entre {}, el 0):

C:\altera\13.1\quartus\bin>quartus_stp --tcl_eval get_editable_mem_instances -hardware_name "USB-Blaster [USB-0]" -device_name "@1: EP3C16/EP4CE15 (0x020F20DD)"
{0 16 8 RW ROM/RAM uy2}


Script para cargar MIF en memoria

El archivo se ejecuta con la opción -t :

C:\altera\13.1\quartus\bin>quartus_stp -t escribir_mem.tcl

Archivo escribir_mem.tcl:

------------8<----------

begin_memory_edit -hardware_name "USB-Blaster USB-0" -device_name "@1: EP3C16/EP4CE15 (0x020F20DD)"

update_content_to_memory_from_file -instance_index 0 -mem_file_path "top.mif" -mem_file_type mif
end_memory_edit
------------8<----------


Otro ejemplo de acrhivo TCL que descubre el HW y device name en el propio script.

------------8<----------
load_package insystem_memory_edit

# Obtengo el nombre del hardware y el nombre del dispositivo
set hwname [lindex [get_hardware_names] 0]
set devname [lindex [get_device_names -hardware_name ${hwname}] 0]
set hexfile [lindex $argv 0]

# Initiate a editing sequence
begin_memory_edit -hardware_name ${hwname} -device_name ${devname}

# Write memory content using the hex memory file
update_content_to_memory_from_file -instance_index 0 -mem_file_path ${hexfile} -mem_file_type hex

# End the editing sequence
end_memory_edit
------------8<----------










Última modificación: martes, 4 de julio de 2023, 17:41