vivado 有关 SVF 链的操作

本文详细介绍了如何在XilinxVivado环境中创建反映器件配置的SVF链,添加编程操作,如器件编程和配置存储器编程,以及如何正确编写和执行SVF文件。涉及使用Tcl命令和VivadoIDE工具进行操作。
按正确顺序创建反映所有器件及其配置存储器的 SVF 链之后即可开始向 SVF 链中的器件添加编程操作。 例如,您可右键单击链中的赛灵思 a200t 器件然后选择“添加器件编程操作 (Add Program Device Operation)”对话 框,如下所示。指定比特流文件以便将其用于对器件进行编程。
单击“OK”后就会在“SVF 操作 (SVF Operations)”窗口底部列出器件编程操作。
同样您可通过右键单击存储器器件并选择“添加配置存储器编程 (Add Program Configuration Memory)”以启动 “Add Program Configuration Memory”对话框来对内存存储器器件进行编程如下所示。指定配置文件以便将其用 于对存储器器件进行编程。您也可以为存储器器件选择其它编程选项,例如“擦除 (Erase)”、“空白检查 (Blankcheck)”和“验证 (Verify)”。
单击“OK”后就会在“SVF Operations”窗口底部列出配置存储器器件编程操作。
写入 SVF 文件
使用 Vivado IDE
单击位于“SVF 操作 (SVF Operations)”窗口底部的“导出 SVF (Export SVF)”即可将 SVF 链设置及其操作保存至文 件,如下图所示。
重要提示通过指定在先前流程运行中使用 Vivado 硬件管理器创建的 SVF 文件即可重新创建现有 SVF 链。
Vivado IDE 会将 SVF 链的规格保存到文件中以便在回读时可重新创建该 SVF 链。
使用命令行
要使用 Vivado Tcl 模式或者 Tcl 控制台来编写 SVF 文件请在 Vivado IDE 中使用 write_hw_svf 命令。 这样会在临时文件中捕获 SVF 链、直接 FPGA 和间接闪存编程操作。调用 write_hw_svf 命令时临时文件将改为 传递给该命令的文件名。调用 write_hw_svf 命令后临时文件将复位并在 SVF 文件序列开头处添加 1 项后续编程操作。
以下代码段显示了用于创建名为 my_xcku9p.svf 的文件的 Tcl 命令包括对 xcku9p 器件进行直接编程):
create_hw_target my_svf_target
open_hw_target
set device0 [create_hw_device -part xcku9p]
set_property PROGRAM.FILE {my_xcku9p.bit} $device0
program_hw_devices $device0
write_hw_svf my_xcku9p.svf
close_hw_target
在此样本代码中xcku9p 器件是使用 create_hw_device 命令创建的其返回值设置为名为 device0 的临时变
量。随后PROGRAM.FILE 属性设置到 my_xcku9p.bit 文件时此临时值将用于引用对象。下一步将使用
device0 引用来调用 program_hw_device 命令。运行此 program_hw_device 命令时它会通过必要的 SVF
作来创建临时 SVF 文件用于对 xcku9p 上的 my_xcku9p.bit 文件执行编程。最后write_hw_svf 命令会将此临
时文件移至最终目标 myxcku9p.svf。此时SVF 文件创建流程即告完成并且可关闭目标。
提示关于编写 SVF 文件最后值得注意的是应首先为 JTAG 链创建所有器件然后再执行编程操作。如果
在执行编程命令间交织执行了 create_hw_device 命令那么生成的输出 SVF 文件将包含 2 条不同的序列
链。
• 错误的 SVF 文件创建步骤示例
create_hw_target my_svf_target
open_hw_target
set device0 [create_hw_device -part xcku9p]
set_property PROGRAM.FILE {my_xcku9p1.bit} $device0
# this program command will produce SVF instructions
# which account for only device0 in chain
program_hw_devices $device0
set device1 [create_hw_device -part xcku9p]
set_property PROGRAM.FILE {my_xcku9p2.bit} $device1
# this program command will produce SVF instructions
# which account for device0 and device1 in chain
program_hw_devices $device1
write_hw_svf my_bad_xcku9p.svf
close_hw_target
第一条编程命令仅采集包含首个器件的链定义。第二条编程命令在写出 SVF 指令时会包含链中的 2 个器件。因此如果
您尝试在含 2 个器件的链上运行此 SVF 文件则第一项编程操作将失败因为活动链会收到 2 个器件而非此命令期
望的 1 个器件。
要纠正此问题请首先运行 create_hw_device 命令。然后当链完成定义后请按如下所示执行编程操作
• 正确的 SVF 文件创建步骤示例
create_hw_target my_svf_target
open_hw_target
# create device chain first
set device0 [create_hw_device -part xcku9p]
set device1 [create_hw_device -part xcku9p]
# program device0
set_property PROGRAM.FILE {my_xcku9p1.bit} $device0
program_hw_devices $device0
# program device1
set_property PROGRAM.FILE {my_xcku9p2.bit} $device1
program_hw_devices $device1
write_hw_svf my_good_xcku9p.svf
close_hw_target
执行 SVF 文件
创建 SVF 文件后您可有选择性地通过 Vivado IDE 来执行 SVF 文件。Vivado IDE 可以执行通过 SVF 生成功能所生成 的 SVF 文件主要用作为验证测试工具。execute_hw_svf 命令并非常用的 SVF 执行命令请注意只能使用通过 Vivado IDE 创建的 SVF 文件。
要运行 svf 命令请在已打开并处于活动状态的目标上运行如下命令
execute_hw_svf my_file.svf
INFO: [Labtoolstcl 44-548] Creating JTAG TCL script from SVF file
INFO: [Labtoolstcl 44-549] Re-opening target in JTAG mode
INFO: [Labtoolstcl 44-551] Sourcing JTAG TCL script: my_file.tcl
Pass: SVF Execution completed with no errors
INFO: [Labtoolstcl 44-550] Restoring target to original mode
INFO: [Labtoolstcl 44-570] Execute SVF completed successfully
在本例中指定的文件是 my_file.svf。在执行流程中输入 SVF 文件可通过 HW_JTAG Tcl 操作转换为临时文件。 创建此 Tcl 代码后将使用此文件来执行转换后的 SVF 指令。要查看 JTAG_TCL 操作可使用 -verbose 选项运行 execute_hw_svf 命令。命令完成后将在消息日志末尾显示指令出错执行失败或者显示成功“Pass”消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cckkppll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值