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.mfbz.cn/a/758701.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windosw下宝塔面板mysql无法使用的问题

先了解一下什么是wsl1和wsl2 WSL 1:WSL 1 使用的是一个兼容层,通过翻译 Linux 系统调用,使其能够在 Windows 内核上运行。这种方法的性能较好,但并不能完全兼容所有的 Linux 功能。WSL 2:WSL 2 通过使用真正的 Linux 内核在轻量级虚拟机 (VM) 中运行 Linux,这使得它能更好…

java基于ssm+jsp 个人交友网站

1前台首页功能模块 个人交友网站&#xff0c;在系统首页可以查看首页、交友信息、线下活动、系统公告、论坛信息、我的、跳转到后台、客服等内容&#xff0c;如图1所示。 图1系统功能界面图 用户注册&#xff0c;在用户注册页面可以填写用户账号、密码、用户姓名、年龄等信息进…

折半查找详解

一&#xff1a;折半查找概念 折半查找&#xff08;也称为二分查找&#xff09;是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始&#xff0c;如果中间元素正好是目标值&#xff0c;则搜索过程结束&#xff1b;如果目标值大于或小于中间元素&#x…

git 用户名密码Clone代码

#密码中包含&#xff0c;则使用%40代表 cd /disk03/wwwroot/GitDemo/BuildTemp && git clone -b dev --single-branch http://root:test%40123192.168.31.104/root/SaaS.Auto.Api.git git pull origin dev 今天使用LibGit2Sharp在Linux上Clone代码时报错&#xff0c;因…

新能源汽车 LabCar 测试系统方案(二)

什么是LabCar测试 LabCar测试目标是进行整车黄板台架功能测试&#xff0c;用于整车开发和测试阶段&#xff0c;满足设计人员和测试人员的试验需求&#xff0c;以验证整车性能&#xff0c;减少开发工作量。系统主要用于测试静态及动态工况下的纯电动汽车的各项功能实现情况。 …

使用StarWind软件做P2V转换

近期有个项目要将一个老的Win7还有XP 32位版本转换为虚拟机。先后用了StarWind&#xff0c;Vmwared的vcenter conerter&#xff0c;还有disk2vhd软件工具。本文介绍下StarWind的使用和一些优势。 其实转换过程很简单&#xff0c;难度是转换以后的虚机无法正常启动。对于虚机的…

云服务器安装部署LAMP网站Web环境教程

搭建网站如何安装LAMP环境&#xff0c;以腾讯云轻量应用服务器为例&#xff0c;应用模板直接选择“LAMP”镜像即可&#xff0c;打开腾讯云轻量应用服务器页面&#xff0c;在应用模板中选择LAMP即可&#xff0c;如下图&#xff1a; 轻量服务器“LAMP”镜像 腾讯云的LAMP应用镜像…

性能评测系列:云架构扩展演进横向对比

原始测评报告 性能评测系列&#xff08;PT-010&#xff09;&#xff1a;Spring Boot RDS for MySQL&#xff0c;高并发insert 性能评测系列&#xff08;PT-012&#xff09;&#xff1a;Spring Boot(K8s多实例) RDS for MySQL&#xff0c;高并发insert 性能评测系列&#xff…

智能黄历运势API:用科学解读你的命运

黄历是一种能同时显示公历、农历和干支历等多套历法&#xff0c;并附加大量与趋吉避凶相关的规则和内容的历书。在中国传统文化中&#xff0c;人们相信黄历可以预测吉凶祸福&#xff0c;指导人们的日常生活。 现在&#xff0c;有了智能黄历运势API&#xff0c;我们可以通过科学…

AI 助力的在线 Excel 表格:真正的革命还是市场噱头?

在当今数字化和自动化的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术被广泛应用于各种领域&#xff0c;从智能手机到工业生产&#xff0c;无所不在。最近&#xff0c;一些产品声称通过AI技术来增强传统的办公软件&#xff0c;如在线Excel表格。例如&#xff0c;Cha…

昇思MindSpore学习笔记7--函数式自动微分

摘要&#xff1a; 介绍了昇思MindSpore神经网络训练反向传播算法中函数式自动微分的使用方法和步骤。包括构造计算函数和神经网络、grad获得微分函数&#xff0c;以及如何处理停止渐变、获取辅助数据等内容。 一、概念要点 神经网络训练主要使用反向传播算法&#xff1a; 准备…

5个大气的wordpress付费主题

Sesko赛斯科wordpress外贸主题 适合用于重型机械设备公司建外贸官方网站的橙红色wordpress外贸主题。 https://www.jianzhanpress.com/?p5886 Polar钋啦wordpress外贸主题 制造业wordpress网站模板&#xff0c;适合生产制造企业官方网站使用的wordpress外贸主题。 https:/…

【CV炼丹师勇闯力扣训练营 Day22:§7 回溯1】

CV炼丹师勇闯力扣训练营 代码随想录算法训练营第22天 回溯法其实就是暴力查找,回溯的本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案&#xff0c;一般可以解决如下几种问题&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合切割…

weiyang**3.控制台01

1. 搭建单群组FISCO BCOS联盟链 使用开发部署工具 build_chain.sh脚本在本地搭建一条4 节点的FISCO BCOS链&#xff0c;以Ubuntu 22.04 64bit系统为例操作。 1.1 安装依赖 sudo apt install -y openssl curl 1.2 创建操作目录, 下载安装脚本 ## 创建操作目录 cd ~ &&a…

YOLO系列笔记(十八)—— YOLOv1和YOLOv2总结与对比

YOLOv1和的v2总结与对比 YOLOv1主要思想算法架构主干网络损失函数 训练过程网络预测主要成果优化方向 YOLOv2算法架构主干网络损失函数 相较之前的优化添加Batch Normalization引入锚框&#xff08;Anchor Boxes&#xff09;机制引入DarkNet-9多尺度输入训练 网络训练第一阶段&…

单片机学习(16)--直流电机驱动

直流电机驱动 15.1直流电机驱动基础知识1.直流电机介绍2.电机驱动电路3.PWM介绍 15.2LED呼吸灯和直流电机调速1.LED呼吸灯代码2.直流电机调速&#xff08;1&#xff09;产生PWM的方法&#xff08;2&#xff09;工程目录&#xff08;3&#xff09;main.c函数 15.1直流电机驱动基…

kaggel-汽车价格预测项目

1.读取数据&#xff0c;查看数据基本概况 import pandas as pd datapd.read_csv(r./car_price_prediction.csv)#查看前5行数据 print(data.head(5))output:ID Price Levy ... Wheel Color Airbags 0 45654403 13328 1399 ... Left wheel Silve…

css 滚动词云

css javascript 实现滚动词云效果 // 163css.js var radius 120; var dtr Math.PI / 180; var d 300; var mcList []; var active false; var lasta 1; var lastb 1; var distr true; var tspeed 10; var size 250; var mouseX 0; var mouseY 0; var howElliptic…

宝塔安装rabbitMQ实战

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

进程间通信简介-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

进程间通信简介 进程间通信简介 进程间进程简称IPC(interprocess communication)&#xff0c;进程间通信就是在不同进程之间传递信息或交换信息 进程间通信的目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的…