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

相关文章

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

java Stream操作转换方法

《javaStream操作转换方法》文章总结了Java8中流(Stream)API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、... 目录流创建1、list 转 map2、filter()过滤3、foreach遍历4、groupingB

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.

Python视频剪辑合并操作的实现示例

《Python视频剪辑合并操作的实现示例》很多人在创作视频时都需要进行剪辑,本文主要介绍了Python视频剪辑合并操作的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录介绍安装FFmpegWindowsMACOS安装MoviePy剪切视频合并视频转换视频结论介绍