Программирование устройства in vivado с использованием tcl - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь запрограммировать мою цифровую ПЛИС через командную строку 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 Ответ

0 голосов
/ 27 апреля 2018

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

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

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

...