串行矢量格式 (SVF) 文件编程
注释 : 串行矢量格式 (SVF) 编程在 Versal ™ 器件上不受支持。
对 FPGA 和配置存储器器件进行编程的另一种方法是通过使用串行矢量格式 (SVF) 文件来执行编程。通过 Vivado ® Design Suite 和 Vivado Lab Edition 生成的 SVF 文件包含对这些器件执行编程所需的低级别 JTAG 指令和数据。生成此 文件后, 即可通过独立于 Vivado IDE 的边界扫描测试工具来使用。
创建 SVF 文件的一般步骤如下所述 :
1. 创建 SVF 脱机目标。
2. 打开创建的 SVF 目标。
3. 向目标添加器件以定义 SVF JTAG 扫描链。
4. 对 FPGA 或配置存储器器件进行编程。
5. 编写 SVF 。
6. 关闭 SVF 目标。
7. ( 可选 ) 执行 SVF 。
在步骤 4 中 , 编程操作将按顺序被记录并存储在高速缓存文件中。随后 , 此缓存文件将写出至步骤 5 中的目标。此文 件创建完成后, 即可通过边界扫描工具来使用 , 或者通过 Vivado Design Suite 或 Vivado Lab Edition 工具来执行。
重要提示 ! XSVF 文件格式在 Vivado IDE 中不受支持。
创建 SVF 目标
SVF 目标类似于有效的赛灵思平台电缆 USB 或 Digilent JTAG 线缆硬件目标。属性和 Tcl 命令全部相同 , 主要差异在于 SVF 目标并非实时有效的电缆。这表示对此目标执行的任何操作直至执行 SVF 后才会对硬件产生影响。请注意 , 您无 需将电缆连接至系统以创建 SVF 。
使用 Vivado IDE
要在 Vivado 硬件管理器中创建 SVF 目标 , 请通过启动 Vivado 或 Vivado Lab Edition 来打开 Vivado 硬件管理器。您可 通过依次选中“Tools ” → “ Create SVF Target ”来创建 SVF 目标。这样会在本地主机上自动打开服务器 , 还会打开 “创建 SVF 目标 (Create SVF Target) ”对话框 , 如下图中的对话框所示。 在任意可用服务器上, 您均可创建脱机 SVF 目标 , 如下所示。
这样会打开“ Create SVF Target ”对话框 , 如下所示。
提示 : 您可通过启用“ Copy from target ”选项来复制现有 SVF 链。或者 , 您也可以指定在先前运行的流程中使 用 Vivado 硬件管理器所创建的 SVF 文件。 Vivado IDE 会保存 SVF 链的规格 , 以便在回读时可重新创建该 SVF 链。 在 Vivado 硬件管理器的“硬件 (Hardware) ”窗口中您的服务器下 , 您刚创建的 SVF 目标会在显示“打开 (Open) ”。
要删除现有 SVF 目标 , 请在“ Hardware ”窗口中右键单击该 SVF 目标 , 然后选择“ Delete ”。
重要提示 ! 删除目标后 , 还会删除针对此目标创建的所有器件。此外 , 如果删除的目标先前处于打开状态 , 则会 被关闭。
您也可以在 Vivado IDE 中使用 Vivado Tcl 模式或 Tcl 控制台来创建 SVF 目标。
以下是初始启动 Vivado 或 Vivado Lab Edition 后创建 SVF 目标所需的步骤 :
使用命令行
以下是初始启动 Vivado 或 Vivado Lab Edition 后创建 SVF 目标所需的步骤 :
open_hw_manager
connect_hw_server
create_hw_target my_svf_target
if {[string length [get_hw_targets -quiet -filter
{IS_OPENED == TRUE}]] > 0} \
{close_hw_target [get_hw_targets * -filter {IS_OPENED == TRUE}
] }; \
open_hw_target [get_hw_targets *my_svf_target]
current_hw_target
如已连接到服务器 , 则可省略前 2 条命令。执行 create_hw_target 命令可定义 my_svf_target 。请注意 , 同一 会话中不得存在 2 个同名目标。最后 , 关闭所有打开的目标并打开 svf 目标后 , 就会运行 create_hw_target 命令。这样 最终命令会显示已创建的 my_svf_target 的完整硬件目标处理名称。 针对目标执行的所有标准操作( 例如 , get_hw_targets 和 open_hw_target commands ) 均受支持。您可使用 IS_SVF 硬件目标属性来区分活动目标和 SVF 目标。例如 , 以下命令行样本可从名为“ my_svf_target ”的目标读 取 IS_SVF 属性。
get_property IS_SVF [get_hw_targets -regexp .*my_svf_target]
此外 , 发出以下命令即可显示此会话中创建的所有 SVF hw_targets :
get_hw_targets -filter {IS_SVF}
要删除已创建的目标 , 请使用 delete_hw_target 命令。例如 , 发出以下命令即可删除 my_svf_target :
delete_hw_target [get_hw_targets -regexp .*my_svf_target]
重要提示 ! 删除目标后 , 还会删除针对此目标创建的所有器件。此外 , 如果删除的目标先前处于打开状态 , 则会被关闭。