vivado 有关 SVF 链的操作

2024-04-06 11:36
文章标签 操作 vivado svf

本文主要是介绍vivado 有关 SVF 链的操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

按正确顺序创建反映所有器件及其配置存储器的 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 ”消息。

这篇关于vivado 有关 SVF 链的操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/879795

相关文章

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文