使用tcl在vivado中编程设备
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用tcl在vivado中编程设备相关的知识,希望对你有一定的参考价值。
我正在尝试通过vivado命令行编程我的digilent FPGA。打开硬件服务器后,我可以按如下方式对设备进行编程......
program_hw_devices [get_hw_devices xc7a100t_0]
然后,如果我运行puts [get_hw_devices xc7a100t_0]
它输出xc7a100t_0
,这让我认为我应该能够做像program_hw_devices xc7a100t_0
这样的事情。然而,这失败了,我得到以下输出。
错误:[Common 17-161]为'hw_device'指定的选项值'xc7a100t_0'无效。
我真的不明白这有什么问题。我认为这两个命令是等价的,因为我刚刚传递了get_hw_devices返回的内容。另外我认为tcl中所有东西的类型只是一个字符串。 [get_hw_devices xc7a100t_0]
的输出有一些特殊类型吗?
看看usage patterns,我们看到推荐的用法是:
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
所以我只做一次列表提取,但那是纯粹的风格;如果有人工作,另一个也应该。
以上是关于使用tcl在vivado中编程设备的主要内容,如果未能解决你的问题,请参考以下文章
xilinx vivado:从tcl中读取组件.xml文件到项目中。
官方例程给了四个文件两个tcl文件,一个xdc文件,一个v文件,能在vivado下还原出整个工程吗?怎么做呢?
Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》