Vitis IDE 艰难切换--从传统 Vitis GUI 到 2024.1 统一软件界面

目录

1. 简介

2. 界面展示

2.1 启动

2.2 Flow Navigator

2.1.1 C Simulation Dialog

2.1.2 C Synthesis

2.1.3 C/RTL Co-simulation

2.1.4 Implementation

2.1.5 Package

3. C Synthesis 详解

3.1 Classic Configuration Settings

3.1.1 config_array_partition

3.1.2 config_compile

3.1.3 config_dataflow

3.1.4 config_debug

3.1.5 config_export

3.1.6 config_interface

3.1.7 config_op

3.1.8 config_rtl

3.1.9 config_schedule

3.1.10 config_storage

3.1.11 config_unroll

3.2 New Configuration Settings

3.2.1 Array Partition

3.2.2 Array Stencil

3.2.3 Compile

3.2.4 Dataflow

3.2.5 Debug

3.2.6 interface

3.2.7 RTL

3.2.8 Schedule

3.2.9 Unroll

3.2.10 Op

3.2.11 Storage

4. 创建 HLS 工程

4.1 选择 HLS 组件

4.2 名称和路径

4.3 创建配置文件

4.4 选择综合源文件和TestBench

4.5 选择硬件平台

4.6 配置Clock和Flow

4.7 查看摘要

4.8 新建组件完毕

5. 总结


1. 简介

Vitis 2024.1 已经完全不支持传统界面了,新版软件提供一个更加统一和现代化的用户界面。

传统的 Vitis GUI 像是一位老朋友,我们熟悉它的每一个角落,每一个命令,就像回到自己温馨的家。新的统一软件界面却像是搬进了一个未知的新城市,尽管它充满了现代化的便利和先进的功能,但那份亲切感和熟悉度却需要时间来建立。

命令行选项的变更、菜单结构的重组、工具链的整合,每一个细节都需要重新学习。笔者不得不告别那些熟悉的命令行快捷方式,转而学习新的操作方法。

比如运行 vitis -w <workspace> 将直接进入新的界面,不在提供进入传统 SDK 的模式。

这个过程中,我们可能会感到迷茫,甚至有些挫败。

但正如所有的成长过程一样,适应是必经之路。随着时间的推移,我们将逐渐掌握新界面的奥秘,发现它带来的高效和便捷。新的统一软件界面不仅仅是一个工具的更新,它是我们作为开发者进步的象征,是我们与时俱进的证明。

据说从2023.2版本开始,Vitis统一IDE整合了多个工具,以便在Vitis、Vitis AIE编译器/仿真器和Vitis HLS中提供一致的图形用户界面。

本文将探索这种变换的一角,开启笔者适应新GUI的过程。

Vitis IDE的新特性简述如下:

  • 用户界面友好:Flow Navigator助力工作流程管理,模板样本启迪新手,多任务并行执行提升效率。
  • AI引擎优化:软件仿真在x86环境下加快迭代,AI引擎的流水线和微代码视图得到多核支持和筛选功能增强。
  • 界面现代化:提供明亮和暗色两种主题,自定义快捷键简化操作,命令选用板更加人性化,C++语法高亮和智能提示功能。
  • 灵活切换:GUI和CLI模式无缝转换,结合两者优势,配置文件实时展示,CLI构建项目,GUI用于调试和核心分析,操作记录可用于批处理。

2. 界面展示

2.1 启动

Vitis Unified 把 Vitis HLS 和 SDK 合并了。

启动 Vitis Unified IDE:

vitis -w <workspace>

workspace 是一个文件夹,用于保存设计的各种组件和项目。 

 

2.2 Flow Navigator

传统 Vitis IDE 启动每个 Flow,都会弹出配置对话框。新 Vitis Unified IDE,全部都在 Vitis Component下的 Settings 下进行设置,启动每个 Flow 则会直接运行。 

2.1.1 C Simulation Dialog

Vitis Unified IDE

csim.clean:启用清理构建。如果不选择此选项,csim_design将进行增量编译。

csim.code_analyzer:启用代码分析器。设计在执行过程中将被分析。

csim.sanitize_address:启用地址检查器

csim.sanitize_undefined:启用未定义行为检查器

csim.setup:当指定此选项时,C仿真二进制文件将被创建在当前解决方案的'csim'目录中,但不会执行仿真。

2.1.2 C Synthesis

Vitis IDE

Vitis Unified IDE

2.1.3 C/RTL Co-simulation

2.1.4 Implementation

2.1.5 Package

在 Vitis Unified IDE 中独有。

3. C Synthesis 详解

在 Vivado IP Flow Target 流程中。

3.1 Classic Configuration Settings

3.1.1 config_array_partition

  • complete_threshold, defalt=4
  • throughput_driven, default=auto, (auto/off)

3.1.2 config_compile

  • enable_auto_rewind, default=true
  • ignore_long_run_time, default=false
  • name_max_length, default=80
  • no_signed_zeros, default=false
  • pipeline_loops, default=64
  • pipeline_style, default=frp, (stp/flp/frp)
  • pragma_strict_mode, default=false
  • pre_tcl
  • unsafe_math_optimizations, default=false

3.1.3 config_dataflow

  • default_channel, default=pingpong, (fifo/pingpong)
  • disable_fifo_sizing_opt, default=false
  • fifo_depth, default=2
  • override_user_fifo_depth, default=0
  • scalar_fifo_depth, default=2
  • start_fifo_depth, default=2
  • strict_mode, default=warning, (off/warning/error)
  • strict_stable_sync, default=false
  • task_level_fifo_depth, default=2

3.1.4 config_debug

  • directory, default=.debug
  • enable, default=false

3.1.5 config_export

3.1.6 config_interface

3.1.7 config_op

3.1.8 config_rtl

3.1.9 config_schedule

  • enable_dsp_full_reg, default=true

3.1.10 config_storage

  • fifo impl, default=autosrl, (bram/lutram/ram/memory/srl)
  • fifo auto_srl_max_bits, default=1024
  • fifo auto_srl_max_depth, default=2

3.1.11 config_unroll

  • tripcount_threshold, default=0

3.2 New Configuration Settings

3.2.1 Array Partition

  • array_partition.complete_threshold: 设置完全分区数组的阈值。具有少于阈值元素的数组将被完全分区为单独的元素。
  • array_partition.throughput_driven: 启用自动部分和/或完全数组分区。

3.2.2 Array Stencil

  • array_stencil.throughput_driven: 启用自动数组模板

3.2.3 Compile

  • compile.design_size_maximum_warning: 当总设计指令超过此值时显示警告
  • compile.enable_auto_rewind: 当为真时,启用用于流水线循环的替代 HLS 实现,该实现使用自动循环回绕
  • compile.ignore_long_run_time: 忽略长运行时间警告
  • compile.name_max_length: name_max_length 选项将指定函数名称的最大长度。如果长度超过阈值,名称的最后部分将被截断。
  • compile.no_signed_zeros: no_signed_zeros 选项将忽略浮点零的符号,以便编译器可以对浮点操作进行最大程度的优化。
  • compile.pipeline_flush_in_task: 启用数据流程中的非回绕流水线默认刷新。
  • compile.pipeline_loops: 循环的迭代次数大于此值将自动进行流水线处理。
  • compile.pipeline_style: 设置默认流水线样式,这是一种偏好而不是硬性约束。
  • compile.pragma_strict_mode: 启用错误而不是警告,用于旧的和不正确的编译指示语法检查。
  • compile.unsafe_math_optimizations: unsafe_math_optimizations 选项将忽略浮点零的符号,并启用浮点操作的结合性,以便编译器可以对浮点操作进行激进的优化。

3.2.4 Dataflow

  • dataflow.default_channel: 默认情况下,在使用数据流流水线时,将以ping-pong方式配置的RAM内存用于在函数或循环之间缓冲数据。当使用流式数据(其中数据总是按顺序读取和写入)时,FIFO内存将更有效,并可以选择为默认内存类型。请注意,必须使用 set_directive_array_stream 命令将数组设置为流式,以便执行FIFO访问。
  • dataflow.disable_fifo_sizing_opt: 禁用增加资源使用量并可能提高性能并减少死锁的FIFO大小优化。
  • dataflow.fifo_depth: 指定FIFO的默认深度的整数值。当使用ping-pong方式的存储器时,此选项不起作用。如果未指定,通道中使用的FIFO将设置为最大生产者或消费者的大小(以较大者为准)。在某些情况下,这可能过于保守,引入比实际所需更大的FIFO。当用户知道FIFO比所需更大时,可以使用此选项。在使用此选项时要小心,因为不正确的使用可能导致设计无法正确运行。
  • dataflow.override_user_fifo_depth: 设置设计中所有FIFO的深度,除非深度已经大于覆盖值。
  • dataflow.scalar_fifo_depth: 指定标量值传播FIFO的最小深度的整数值。如果未指定,最小值为 fifo_depth 选项的值(如果指定),否则为2。这些FIFO用于将数据流区域的标量参数值传播到区域内具有前驱的处理过程。它们不影响功能正确性,但自动计算的大小不足可能导致性能损失甚至死锁。粗略来说,最佳深度是发出标量的处理过程在最后读取它的处理过程实际启动前的平均次数。
  • dataflow.start_fifo_depth: 指定启动传播FIFO的最小深度的整数值。如果未指定,最小值为 fifo_depth 选项的值(如果指定),否则为2。这些FIFO用于将 ap_start 握手信号转发到区域内具有前驱的处理过程。它们不影响功能正确性,但自动计算的大小不足可能导致性能损失。粗略来说,最佳深度是处理过程应该被允许提前启动的预期平均次数。
  • dataflow.strict_mode: 设置数据流规范形式消息的严重程度。
  • dataflow.strict_stable_sync: 稳定端口强制与 done 同步。
  • dataflow.task_level_fifo_depth: 默认任务级FIFO深度(用于自动创建的用于在处理过程之间传输标量的FIFO)。

3.2.5 Debug

  • debug.directory: 相对于 solution 方案目录的输出目录名称
  • debug.enable: 启用调试文件生成
  • debug.enable_verbose_report: 启用覆盖率报告

3.2.6 interface

3.2.7 RTL

3.2.8 Schedule

  • schedule.enable_dsp_full_reg: 启用完整的 dsp48 寄存器利用率

3.2.9 Unroll

  • unroll.tripcount_threshold: 自动展开循环,其迭代次数少于此阈值。

3.2.10 Op

  • hls.syn.op: 配置不同运算符的默认实现样式和延迟。

3.2.11 Storage

  • hls.syn.storage: 配置不同类型存储元素的默认实现样式和延迟。

4. 创建 HLS 工程

在 Vitis Unified IDE 中,PL 内核被创建为 HLS 组件,你可以在 C/C++ 源代码上运行 C 仿真,使用编译指示或指令优化设计,综合和分析结果,并将设计导出为 Vivado IP 与 Vivado Design Suite 一起使用,或作为 Vitis 内核 ( .xo ) 文件在更高级别的系统项目中使用。

4.1 选择 HLS 组件

4.2 名称和路径

4.3 创建配置文件

4.4 选择综合源文件和TestBench

这里我们先跳过,后续再添加。

编写良好的测试平台可以极大地提高工作效率,因为 C 函数的执行速度比 RTL 仿真快几个数量级。在综合之前使用 C 来开发和验证算法比开发和调试 RTL 代码要快得多。 

4.5 选择硬件平台

4.6 配置Clock和Flow

当未指定时钟不确定度时,默认时钟不确定性为时钟周期的 27%。 

4.7 查看摘要

4.8 新建组件完毕

5. 总结

在Vitis 2024.1版本中,传统的Vitis GUI已经被全新的统一软件界面所取代。这个变化虽然初看令人生疏,但它实际上为开发者们带来了更加高效和现代化的工作环境。新界面的Flow Navigator、多任务并行执行、AI引擎优化、以及界面的现代化设计,都极大地提升了工作流程的管理和执行效率。此外,新的统一软件界面还提供了GUI和CLI模式的无缝转换,使得项目构建和调试更加灵活。虽然适应新界面需要时间,但随着熟悉度的提升,开发者们将能够充分利用这些新特性,以更快的速度迭代和优化他们的工程。总的来说,Vitis的这次更新不仅仅是界面上的改变,更是开发者与时俱进、不断进步的体现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL进阶:存储过程和函数

存储过程和函数 1. 简介2. 创建存储过程使用MySQL工作台创建存储过程 3. 删除存储过程4. 参数带默认值的参数参数验证输出参数 5. 变量6. 函数7. 其他约定 1. 简介 存储过程三大作用&#xff1a; 储存和管理SQL代码&#xff08;置于数据库中&#xff0c;与应用层分离&#xf…

快递物流仓库管理系统java项目springboot和vue的前后端分离系统java课程设计java毕业设计

文章目录 快递物流仓库管理系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 快递物流仓库管理系统 一、项目演示 快递物流仓库管理系统 二、项目介绍 语言: Java 数据库&#xff1a;MySQL 前…

宝塔安装rabbitMQ实战

服务器环境说明 阿里云服务器、宝塔、centos7 一、下载erlang 原因&#xff1a;RabbitMQ服务端代码是使用并发式语言Erlang编写的&#xff0c;安装Rabbit MQ的前提是安装Erlang。 下载地址&#xff1a;http://www.erlang.org/downloads 下载对应的版本&…

山东省著名烈士孙善师孙善帅故居布展喜添新篇

人海信息网山东讯&#xff08;张春兄、冯爱云&#xff09; “……他们以钢铁般的意志&#xff0c;坚守共产党员的使命&#xff0c;他们就是泺口九烈士的孙善师孙善帅兄弟&#xff01;”6月28日&#xff0c;对于山东省著名烈士孙善师孙善帅故居来说&#xff0c;又是一个不平凡的…

LabVIEW电压电流实时监测系统

开发了一种基于LabVIEW和研华&#xff08;Advantech&#xff09;数据采集卡的电压电流实时监测系统&#xff0c;通过高效的数据采集和处理&#xff0c;为工业和科研用户提供高精度、实时的电压电流监测解决方案。系统采用研华USB-4711A数据采集卡&#xff0c;结合LabVIEW编程环…

AI论文速读 | 2024[KDD]自适应时空图神经网络中图中奖彩票的预训练识别

题目&#xff1a;Pre-Training Identification of Graph Winning Tickets in Adaptive Spatial-Temporal Graph Neural Networks 作者&#xff1a;Wenying Duan, Tianxiang Fang, Hong Rao, Xiaoxi He 机构&#xff1a;南昌大学&#xff0c;澳门大学 arXiv网址&#xff1a;h…

Python数据分析-股票分析和可视化(深证指数)

一、内容简介 股市指数作为衡量股市整体表现的重要工具&#xff0c;不仅反映了市场的即时状态&#xff0c;也提供了经济健康状况的关键信号。在全球经济体系中&#xff0c;股市指数被广泛用于预测经济活动&#xff0c;评估投资环境&#xff0c;以及制定财政和货币政策。在中国…

IEEE JSTSP综述:从信号处理领域分析视触觉传感器的研究

触觉传感器是机器人系统的重要组成部分&#xff0c;虽然与视觉相比触觉具有较小的感知面积&#xff0c;但却可以提供机器人与物体交互过程中更加真实的物理信息。 视觉触觉传感是一种分辨率高、成本低的触觉感知技术&#xff0c;被广泛应用于分类、抓取、操作等领域中。近期&a…

如何跑起来一个前后端项目

后端部署 第一步配置自己的maven 第二步优先导入自己本地jar包当本地没有在从远程下载 第三步找到配置文件 第四步成功运行后端部署完毕 前端部署 第一步看看项目node_modules有没有文件如果有就是已经安装好了对应的依赖&#xff0c;没有执行npm install 第二步运行即可

决策树划分属性依据

划分依据 基尼系数基尼系数的应用信息熵信息增益信息增益的使用信息增益准则的局限性 最近在学习项目的时候经常用到随机森林&#xff0c;所以对决策树进行探索学习。 基尼系数 基尼系数用来判断不确定性或不纯度&#xff0c;数值范围在0~0.5之间&#xff0c;数值越低&#x…

【知识学习】Unity3D中Scriptable Render Pipeline的概念及使用方法示例

Unity3D中的Scriptable Render Pipeline&#xff08;SRP&#xff09;是一种高度可定制的渲染管线框架&#xff0c;允许开发者完全控制渲染流程&#xff0c;以适应不同的渲染需求和硬件平台。SRP使得开发者可以编写自己的渲染逻辑&#xff0c;包括摄像机管理、渲染设置、光照处理…

【机器学习】K-means++: 一种改进的聚类算法详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 K-means: 一种改进的聚类算法详解引言1. K-means算法回顾1.1 基本概念1.2 局限性…

RDMA建链的3次握手和断链的4次挥手流程?

文章目录 基础信息建链 3次握手断链4次挥手建联状态active端passive端 报文结构函数关系其他后记 基础信息 CM: Communication Management 通信管理 连接管理SIDR: Service ID Resolution Protocol. 作用&#xff1a; enables users of Unreliable Datagram service to locate …

实验4 图像空间滤波

1. 实验目的 ①掌握图像空间滤波的主要原理与方法&#xff1b; ②掌握图像边缘提取的主要原理和方法&#xff1b; ③了解空间滤波在图像处理和机器学习中的应用。 2. 实验内容 ①调用 Matlab / Python OpenCV中的函数&#xff0c;实现均值滤波、高斯滤波、中值滤波等。 ②调…

【操作系统期末速成】 EP02 | 学习笔记(基于五道口一只鸭)

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、正文&#xff1a;☀️☀️☀️2.1 考点二&#xff1a;操作系统的功能及接口2.2 考点三&#xff1a;操作系统的发展及分类2.3 考点四&#xff1a;操作系统的运行环境&#xff08;重要&#xff09; 一、前言&#x…

从零开始三天学会微信小程序开发(三)

看到不少入门的小程序开发者不断的问重复性的问题&#xff0c;我们从实战角度开发了这个课程&#xff0c;希望能够帮助大家了解小程序开发。 课程分三天&#xff1a; 第一天&#xff1a;微信小程序开发入门第二天&#xff1a;给小程序接入云端数据第三天&#xff1a;完善我的…

MySQL高级-MVCC- readview介绍

文章目录 1、介绍2、ReadView中包含了四个核心字段&#xff1a;3、版本链数据的访问规则&#xff1a;4、不同的隔离级别&#xff0c;生成ReadView的时机不同&#xff1a; 1、介绍 ReadView&#xff08;读视图&#xff09;是 快照读 SQL执行时MVCC提取数据的依据&#xff0c;记录…

【计算机组成原理实验】——运算器组成实验

计组TEC4实验——运算器组成实验 1. 实验目的 (1&#xff09;掌握算术逻辑运算加、减、乘、与的工作原理。 (2) 熟悉简单运算器的数据传送通路。 (3) 验证实验台运算器的8位加、减、与、直通功能。 (4) 验证实验台的4位乘4位功能。 (5) 按给定数据&#xff0c;完成几种指…

SerDes介绍以及原语使用介绍(4)ISERDESE2原语仿真

文章目录 前言一、iserdese2_module模块二、oserdese2_module模块三、顶层模块四、仿真结果分析 前言 上文详细介绍了ISERDESE2原语的使用&#xff0c;本文根据仿真对ISERDESE2原语的使用进一步加深印象。在仿真时&#xff0c;与OSERDESE进行回环。 一、iserdese2_module模块…

昇思MindSpore学习笔记4--数据集 Dataset

昇思MindSpore学习笔记4--数据集 Dataset 摘要&#xff1a; 昇思MindSpore数据集Dataset的加载、数据集常见操作和自定义数据集方法。 一、数据集 Dataset概念 MindSpore数据引擎基于Pipeline 数据预处理相关模块&#xff1a; 数据集Dataset加载原始数据&#xff0c;支持文本…