Программирование устройства in vivado с использованием tcl

Я пытаюсь запрограммировать свою цифровую ПЛИС через командную строку vivado. После открытия аппаратного сервера я могу запрограммировать свое устройство следующим образом...

program_hw_devices [get_hw_devices xc7a100t_0]

Тогда, если я бегу puts [get_hw_devices xc7a100t_0] это выводит xc7a100t_0 что заставляет меня думать, что я должен быть в состоянии сделать что-то вроде program_hw_devices xc7a100t_0, Это, однако, не удается, и я получаю следующий вывод.

ОШИБКА: [Общее 17-161] Недопустимое значение параметра 'xc7a100t_0', указанное для 'hw_device'.

Я не очень понимаю, что с этим не так. Я думал, что две команды будут эквивалентны, так как я только что передал то, что было возвращено get_hw_devices. Также я думал, что тип всего в tcl был просто строкой. Есть ли выход [get_hw_devices xc7a100t_0] есть какой-то особый тип?

1 ответ

Решение

Глядя на шаблоны использования, мы видим, что рекомендуемое использование:

program_hw_devices [lindex [get_hw_devices] 0]

Учитывая текст вывода get_hw_devices это "простое" слово (без пробелов или метасимволов Tcl), я подозреваю, что токены устройства на самом деле являются специальными значениями, которые имеют нетривиальные типы, свисающие с конца их представления. Мы не рекомендуем такой подход, так как он может привести к очень странным сообщениям об ошибках (например, к тому, что вы получили), но, учитывая, что это так, вам нужно использовать именно тот шаблон, как описано выше, чтобы вы удалили ровно один уровень вдали.


Для дальнейшего использования скрипт по этой ссылке (который предположительно работал) был:

# Connect to the Digilent Cable on localhost:3121

connect_hw_server -url localhost:3121
current_hw_target [get_hw_targets */xilinx_tcf/Digilent/12345]
open_hw_target

# Program and Refresh the XC7K325T Device

current_hw_device [lindex [get_hw_devices] 0]
refresh_hw_device -update_hw_probes false [lindex [get_hw_devices] 0]
set_property PROGRAM.FILE {C:/design.bit} [lindex [get_hw_devices] 0]
set_property PROBES.FILE {C:/design.ltx} [lindex [get_hw_devices] 0]

program_hw_devices [lindex [get_hw_devices] 0]
refresh_hw_device [lindex [get_hw_devices] 0]

Я бы написал это больше так:

# Connect to the Digilent Cable on localhost:3121
connect_hw_server -url localhost:3121
current_hw_target [get_hw_targets */xilinx_tcf/Digilent/12345]
open_hw_target

# Program and Refresh the XC7K325T Device
set Device [lindex [get_hw_devices] 0]
current_hw_device $Device
refresh_hw_device -update_hw_probes false $Device
set_property PROGRAM.FILE "C:/design.bit" $Device
set_property PROBES.FILE "C:/design.ltx" $Device

program_hw_devices $Device
refresh_hw_device $Device

так что я делаю извлечение списка только один раз, но это чисто стиль; если один работает, другой должен.

Другие вопросы по тегам