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

相关文章

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 列出当前目录下的文

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解