注本文为“Xilinx Vitis”相关合辑。略作重排如有内容异常请看原文。本文档保留操作说明供历史项目参考。Xilinx Vitis | 开发环境搭建、流程设计及故障排除1. Vitis 概述1.1 简介Vitis 是 Xilinx 出品的一套统一软件开发平台用于 FPGA 和 SoC 器件的应用开发。与 Vivado 相比Vitis 具有以下区别Vitis 支持 C/C 高级语言以及 Verilog 等硬件描述语言实现硬件逻辑Vivado 仅支持 Verilog 和 VHDL。Vitis 开发基于一套 Platform平台机制Vivado 需要开发者自行搭建硬件平台。Vitis 提供 C/C 编译的标准库和语法支持Vivado 不提供。Vitis 提出 Kernel内核的概念*.xo 文件使用 AXI、AXI4-Lite、AXIS 三种接口进行通信分别对应 Verilog 中的相关概念。为避免不同时钟差异Vitis 中一个 Kernel 只能使用一种时钟频率甚至同一工程内多个 Kernel 也共用同一时钟Vivado 无此限制。Vitis 通过 dataflow、unroll、pipeline、task 等编译指示解决并发问题Vivado 需要开发者手动控制。Vitis 与 Vivado 对 RAM 访问有相同的限制Vitis 通过 array_partition 等相关编译指示对 RAM 变量进行分割、重组、位宽管理以达到最优化效果。Vitis 对 AXI 访问全局内存采用突发burst方式通过实现 FIFO 缓存、组合请求来优化访问效率。1.2 Vitis 版本演进Vitis 2024.1 版本完全移除了传统 GUI 界面采用统一软件界面Unified IDE。该界面整合了 Vitis、Vitis AIE 编译器/仿真器和 Vitis HLS 的图形用户界面提供一致的操作体验。Vitis 统一 IDE 的主要特性Flow Navigator支持工作流程管理提供模板样本辅助入门支持多任务并行执行。AI 引擎优化软件仿真在 x86 环境下加快迭代速度AI 引擎的流水线和微代码视图获得多核支持和筛选功能增强。主题与快捷键提供明亮和暗色两种主题支持自定义快捷键支持 C 语法高亮和智能提示。灵活切换GUI 和 CLI 模式无缝转换配置文件实时展示CLI 用于构建项目GUI 用于调试和内核分析操作记录可用于批处理。2. 环境搭建2.1 系统要求推荐使用 Linux 系统进行开发。Vitis 2024.1 在 Ubuntu 22.04 环境下进行测试验证。2.2 安装 Vitis2.2.1 安装包选择安装 Vitis 时自动包含 Vivado。若仅安装 VivadoVitis 不会被安装。根据需求选择设备支持包避免安装全部组件占用约 100 GB 空间。2.2.2 安装步骤在线安装网速较慢时可选择离线下载安装包。以 Vitis 2019.2 为例# 解压缩安装包tarxvf Xilinx_Vitis_2019.2_1106_2127.tar# 进入安装目录cdXilinx_Vitis_2019.2_1106_2127/# 执行安装程序./xsetup安装需要至少 120 GB 磁盘空间建议预留 150 GB 以上。安装过程中建议关闭磁盘优化选项optimize disk usage否则安装过程可能长时间卡住。2.2.3 从 Vivado 启动 Vitis安装完成后可通过 Vivado 启动 Vitis IDEVivado - Tools - Launch Vitis IDE2.3 安装 PetaLinuxPetaLinux 用于生成 Linux 镜像。从 Xilinx 官方网站下载对应版本的 PetaLinux 工具和 BSP 文件https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html安装完成后设置环境变量source~/Desktop/petalinux/settings.sh创建工程petalinux-create-tproject-sxilinx-zcu102-v2019.2-final.bsp根据硬件描述文件重新配置petalinux-config --get-hw-description/path/to/hardware/description2.4 许可证配置2.4.1 申请 HLS 许可证依照《Vitis High-Level Synthesis User Guide (UG1399)》中的步骤申请 Xilinx.lic 文件。设置 Host ID 后下载许可证文件。设置 Host ID下载 License 文件2.4.2 导入许可证在 Linux 系统中启动 Vivado License Manager 导入许可证文件sourcesettings64.sh vlm按照界面提示导入许可证文件并验证是否导入成功。2.5 Cable 驱动与串口配置Linux 系统需手动安装硬件调试的 Cable 驱动。串口调试时注意可能的驱动冲突如 CH341出现问题时可尝试卸载无关依赖或禁用冲突程序。3. Vivado 设计流程3.1 创建 Vivado 工程启动 Vivado选择Create Project点击Next。输入工程名称并选择保存路径点击Next。选择工程类型点击Next。根据目标器件选择器件型号点击Next。确认工程信息点击Finish。以下截图展示了 Vivado 工程创建向导的各步骤界面依次呈现工程命名与路径设置、工程类型选择、器件型号选择以及工程信息确认等页面。3.2 创建 Block Design在 Sources 窗口右键选择Create Block Design修改名称后点击OK。打开 Diagram 窗口右键空白处或按CtrlI选择Add IP。搜索并添加 Zynq Processing SystemZynq7 或 Zynq UltraScale MPSoC。右键空白处选择Run Block Automation进行自动连线。以下截图展示了 Block Design 的创建流程包括新建 Block Design、通过 IP Catalog 添加 IP、搜索并选择 Zynq Processing System IP 以及执行 Block Automation 自动连线等操作界面。手动连接M_AXI_GP0_ACLK和FCLK_CLK0。双击 Zynq 器件进入配置界面根据需求配置 PS 端外设如 UART、DDR 等。以下截图展示了手动连接时钟信号后的 Block Design 结果、手动连接M_AXI_GP0_ACLK与FCLK_CLK0的操作界面以及 Zynq PS 器件配置窗口中外设参数的设置情况。3.3 配置 PS 端外设根据实际需求配置 Zynq PS 的外设DDR作为系统运行的必要内存组件。UART用于串口调试通信。MIO/EMIO根据外设类型选择复用 I/O 或扩展复用 I/O。配置完成后取消不需要的时钟和接口勾选如FCLK_RESET0_N和M_AXI_GP0接口若不使用。以下截图展示了 Zynq PS 外设配置的具体操作包括 DDR 内存控制器配置、UART 串口参数设置、取消不需要的时钟输出勾选以及禁用FCLK_RESET0_N和M_AXI_GP0接口的配置界面。PS 外设配置UART 参数配置取消不需要的时钟取消 FCLK_RESET0_N 和 M_AXI_GP03.4 验证设计右键空白处选择Validate Design验证 Block Design 的完整性。验证通过后显示成功提示。以下截图展示了执行 Design Validation 的操作界面以及验证通过后的成功提示信息。3.5 生成 HDL Wrapper 与比特流在 Sources 窗口找到.bd文件右键选择Create HDL Wrapper。勾选Let Vivado manage wrapper and auto-update点击OK。以下截图展示了在 Sources 窗口中对.bd文件右键创建 HDL Wrapper 的操作界面以及勾选 “Let Vivado manage wrapper and auto-update” 选项的配置窗口。运行综合右键选择Run Synthesis。以下截图展示了在 Vivado 中运行综合Run Synthesis的操作界面。生成比特流选择Generate Bitstream。以下截图展示了执行 Generate Bitstream 生成比特流的配置与执行界面。生成输出产品右键.bd文件选择Generate Output Products。以下截图展示了右键.bd文件执行 Generate Output Products 的操作界面、生成进度窗口以及完成提示对话框。3.6 导出硬件描述文件导出硬件平台文件*.xsa该文件在 Vitis 和 PetaLinux 开发中为必需文件选择File - Export - Export Hardware。勾选Include bitstream点击Next。为 *.xsa 文件设置存放路径点击Finish。以下截图展示了导出硬件平台文件.xsa的完整流程包括选择 Export Hardware 菜单、配置导出选项包含比特流、设置文件保存路径以及导出完成的确认界面。4. Vitis 开发流程4.1 启动 Vitis IDE通过 Vivado 启动 VitisVivado - Tools - Launch Vitis IDE设置工作路径后点击Launch。4.2 创建 Platform 工程选择Create Platform Project为平台项目命名点击Next。点击Browse选择之前生成的 *.xsa 文件点击Finish。以下截图展示了创建 Platform Project 的工程命名界面以及浏览选择之前导出的.xsa硬件描述文件的操作窗口。4.3 创建 Application 工程选择Create Application Project点击Next。选择已创建的 Platform点击Next。输入应用工程名称点击Next。选择模板如 Hello World点击Next。命名工程点击Next。选择模板点击Finish。以下截图展示了创建 Application Project 的完整向导流程包括项目名称设置、Platform 选择、模板选择Hello World、工程命名以及最终确认等各个界面。创建 Application Project选择 Platform选择模板工程命名选择 Hello World4.4 编译与调试右击工程进行编译选择Launch Hardware进行调试运行。编译与调试4.5 串口调试打开 Vitis Serial Terminal 配置接口信息点击OK后 Resume 运行。4.6 使用 Board Support Package 例程在 Platform 工程中展开platform.spr-Board Support Package可查看文档或加载例程点击Documentation在浏览器中打开外设 API 文档。点击Import Examples导入示例代码。以下截图展示了在 Platform 工程中展开 Board Support Package 查看 BSP 例程的界面包括 GPIO 外设驱动示例列表、API 参考文档页面以及导入示例代码的操作窗口。示例说明xgpiops_intr_example.c展示如何使用 XGpiops 驱动程序在中断模式下检测按钮事件并控制 LED 输出。xgpiops_polled_example.c展示如何使用 XGpiops 驱动程序进行引脚的读取/写入操作。4.7 编写应用程序源码在应用工程的 src 目录下新建.c文件编写应用程序代码。编译工程后若使用了 PL 资源需先加载比特流文件对 PL 部分进行配置Xilinx - Program FPGA点击Program完成 PL 配置后在应用工程上右击选择Run As - Launch Hardware下载并运行程序。以下截图展示了在 Vitis 中编写应用程序的完整操作流程包括新建.c源文件、输入文件名main.c、编译工程、查看编译完成状态、通过 Program FPGA 下载比特流配置 PL 部分以及串口终端输出运行结果的界面。串口调试窗口可通过Window - Show View - Terminal打开点击右上角连接相应串口。5. Vitis HLS 开发5.1 概述在 Vitis Unified IDE 中PL 内核被创建为 HLS 组件。开发者可在 C/C 源代码上运行 C 仿真使用编译指示或指令优化设计综合和分析结果并将设计导出为 Vivado IP 与 Vivado Design Suite 一起使用或作为 Vitis Kernel.xo文件在更高级别的系统项目中使用。编写测试平台可提升开发效率。C 函数的执行速度显著高于 RTL 仿真在综合前使用 C 进行算法开发与验证可缩短开发周期。5.2 创建 HLS 组件选择HLS Component类型创建新项目。输入组件名称和路径。创建配置文件。选择综合源文件和 TestBench可后续添加。选择硬件平台。配置 Clock 和 Flow。当未指定时钟不确定度时默认时钟不确定性为时钟周期的 27%。查看摘要信息完成组件创建。以下截图展示了在 Vitis Unified IDE 中创建 HLS Component 的完整向导流程依次呈现选择 HLS 组件类型、输入组件名称与路径、创建配置文件、选择综合源文件和 TestBench、选择硬件平台、配置 Clock 与 Flow 参数、查看配置摘要信息以及组件创建完成等各个界面。5.3 C Synthesis 配置详解在 Vivado IP Flow Target 流程中C Synthesis 提供两类配置选项。5.3.1 Classic Configuration Settings在 Vitis HLS 的 Classic 配置界面中可通过config_*命名空间的配置项对综合行为进行精细控制。以下列出各配置组的参数及其默认值与作用说明。config_array_partition— 数组分区配置组complete_threshold, default4 — 设置完全分区数组的元素数量阈值。元素个数小于该阈值的数组将被完全分区为独立元素避免综合器对小型数组进行不必要的分区优化。throughput_driven, defaultauto (auto/off) — 控制是否根据吞吐量需求自动执行数组分区。auto模式下综合器根据数据流分析自动决定分区策略off模式禁用自动分区。config_compile— 综合编译配置组enable_auto_rewind, defaulttrue — 启用自动循环回绕机制。为真时综合器为流水线循环生成替代实现使用自动循环回绕auto-rewind逻辑减少流水线气泡。ignore_long_run_time, defaultfalse — 忽略长运行时间警告。启用后综合器在耗时较长的综合阶段不会因超时发出警告。name_max_length, default80 — 指定函数/信号名称的最大长度。超过该阈值的名称将被截断以避免 RTL 输出中名称过长导致下游工具解析失败。no_signed_zeros, defaultfalse — 忽略浮点零的符号位。启用后可对浮点运算进行更激进的合并与化简优化等价于-ffast-math中的no-signed-zeros选项。pipeline_loops, default64 — 设置自动流水线化的循环迭代阈值。迭代次数大于该值的循环将被自动应用PIPELINE编译指示。pipeline_style, defaultfrp (stp/flp/frp) — 设置默认流水线样式偏好。stpsingle-threaded pipeline单线程流水线flpflat loop pipeline扁平循环流水线frpflat region pipeline扁平区域流水线。此为偏好设置而非硬性约束。pragma_strict_mode, defaultfalse — 启用严格的编译指示语法检查。启用后将旧版或不正确的#pragma语法视为错误而非警告。pre_tcl— 综合前执行的 Tcl 脚本路径。可用于在综合之前注入自定义 Tcl 命令以修改综合选项或环境变量。unsafe_math_optimizations, defaultfalse — 启用不安全的数学优化。忽略浮点零的符号并允许浮点运算的结合律重排从而对浮点操作进行激进的编译器优化可能影响数值精度。config_dataflow— 数据流配置组default_channel, defaultpingpong (fifo/pingpong)— 设置数据流通道中未显式指定内存类型的数组所使用的默认存储通道类型。pingpong使用 ping-pong 双缓冲 RAMfifo使用 FIFO 内存适用于流式数据数据按顺序读取和写入场景。需配合set_directive_array_stream命令将数组设为流式访问。disable_fifo_sizing_opt, defaultfalse— 禁用 FIFO 大小优化。该优化会自动增大 FIFO 深度以提升性能并减少死锁风险但会增加资源消耗禁用后 FIFO 深度保持用户指定值。fifo_depth, default2— 指定 FIFO 通道的默认深度。当使用 ping-pong 存储时此选项不生效。未指定时通道 FIFO 深度自动设为最大生产者或消费者大小中的较大者。override_user_fifo_depth, default0— 覆盖设计中所有 FIFO 的深度除非用户已指定的深度大于覆盖值。设为 0 表示不覆盖。scalar_fifo_depth, default2 — 指定标量值传播 FIFO 的最小深度。未指定时取fifo_depth选项值若已指定否则为 2。start_fifo_depth, default2— 指定启动传播start propagationFIFO 的最小深度。未指定时取fifo_depth 选项值若已指定否则为 2。strict_mode, defaultwarning (off/warning/error)— 设置数据流规范消息的严重级别。off关闭数据流检查消息warning以警告级别报告数据流规范问题error以错误级别报告并阻止综合。strict_stable_sync, defaultfalse— 强制稳定端口stable ports与done信号同步。启用后确保稳定端口的数据在done有效时保持稳定。task_level_fifo_depth, default2— 设置任务级 FIFO 的默认深度用于自动创建的在处理过程之间传输标量的 FIFO。config_debug— 调试配置组directory, default.debug— 指定调试文件输出目录名称相对于 solution 方案目录。enable, defaultfalse— 启用调试文件生成。开启后综合过程中生成调试信息文件供后续分析使用。config_export— 导出配置组Vivado IP 导出相关选项config_interface— 接口配置组AXI 接口映射相关选项config_op— 运算符配置组运算符 RTL 实现风格相关选项config_rtl— RTL 配置组RTL 输出相关选项config_schedule— 调度配置组enable_dsp_full_reg, defaulttrue — 启用完整的 DSP48 寄存器利用率。启用后综合器充分使用 DSP48 Slice 内部的流水线寄存器以提升高频性能。config_storage— 存储实现配置组fifo impl, defaultautosrl (bram/lutram/ram/memory/srl) — 指定 FIFO 的底层存储实现类型。autosrl自动选择最优实现bram使用 Block RAMlutram使用 LUT RAMram使用分布式 RAMmemory使用 BRAM/URAMsrl使用移位寄存器链。fifo auto_srl_max_bits, default1024 — 设置 FIFO 自动推断 SRL移位寄存器链的最大比特数。超过此值的 FIFO 不会使用 SRL 实现。fifo auto_srl_max_depth, default2 — 设置 FIFO 自动推断 SRL 的最大深度。深度超过此值的 FIFO 不会使用 SRL 实现。config_unroll— 循环展开配置组tripcount_threshold, default0 — 设置自动展开循环的迭代次数阈值。迭代次数trip count小于该阈值的循环将被自动展开unroll设为 0 表示不自动展开。5.3.2 New Configuration Settings (Vitis Unified IDE)Array Partitionarray_partition.complete_threshold: 设置完全分区数组的阈值。具有少于阈值元素的数组将被完全分区为单独的元素。array_partition.throughput_driven: 启用自动部分和/或完全数组分区。Array Stencilarray_stencil.throughput_driven: 启用自动数组模板。Compilecompile.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选项将忽略浮点零的符号并启用浮点操作的结合性以便编译器可以对浮点操作进行激进的优化。Dataflowdataflow.default_channel: 默认情况下在使用数据流流水线时将以 ping-pong 方式配置的 RAM 内存用于在函数或循环之间缓冲数据。当使用流式数据数据总是按顺序读取和写入时FIFO 内存将更有效并可以选择为默认内存类型。必须使用 set_directive_array_stream 命令将数组设置为流式以便执行 FIFO 访问。dataflow.disable_fifo_sizing_opt: 禁用增加资源使用量并可能提高性能并减少死锁的 FIFO 大小优化。dataflow.fifo_depth: 指定 FIFO 的默认深度的整数值。当使用 ping-pong 方式的存储器时此选项不起作用。如果未指定通道中使用的 FIFO 将设置为最大生产者或消费者的大小以较大者为准。dataflow.override_user_fifo_depth: 设置设计中所有 FIFO 的深度除非深度已经大于覆盖值。dataflow.scalar_fifo_depth: 指定标量值传播 FIFO 的最小深度的整数值。如果未指定最小值为fifo_depth选项的值如果指定否则为 2。dataflow.start_fifo_depth: 指定启动传播 FIFO 的最小深度的整数值。如果未指定最小值为fifo_depth选项的值如果指定否则为 2。dataflow.strict_mode: 设置数据流规范形式消息的严重程度。dataflow.strict_stable_sync: 稳定端口强制与 done 同步。dataflow.task_level_fifo_depth: 默认任务级 FIFO 深度用于自动创建的用于在处理过程之间传输标量的 FIFO。Debugdebug.directory: 相对于 solution 方案目录的输出目录名称。debug.enable: 启用调试文件生成。debug.enable_verbose_report: 启用覆盖率报告。InterfaceRTLScheduleschedule.enable_dsp_full_reg: 启用完整的 dsp48 寄存器利用率。Unrollunroll.tripcount_threshold: 自动展开循环其迭代次数少于此阈值。Ophls.syn.op: 配置不同运算符的默认实现样式和延迟。Storagehls.syn.storage: 配置不同类型存储元素的默认实现样式和延迟。5.4 C SimulationVitis Unified IDE 的 C Simulation 对话框提供以下选项csim.clean启用清理构建。如果不选择此选项csim_design 将进行增量编译。csim.code_analyzer启用代码分析器。设计在执行过程中将被分析。csim.sanitize_address启用地址检查器。csim.sanitize_undefined启用未定义行为检查器。csim.setup当指定此选项时C 仿真二进制文件将被创建在当前解决方案的 ‘csim’ 目录中但不会执行仿真。5.5 C/RTL Co-simulation、Implementation 与 PackageC/RTL 协同仿真、Implementation 和 Package 流程与传统 Vitis IDE 类似。在 Vitis Unified IDE 中Package 为独有流程步骤。以下截图展示了 Vitis HLS 的 C Synthesis、C/RTL 协同仿真、Implementation 和 Package 各流程步骤的配置界面以及 Classic Configuration 和 New Configuration 两类配置选项的界面对比。6. Zynq 外设开发6.1 MIO 与 EMIO6.1.1 MIOMultiplexed I/OMIO 是用于直接连接 Zynq Processing SystemPS的固定 I/O 接口支持外设如 UART、SPI 和 I2C。它们不需要通过可编程逻辑PL的中介。配置步骤在 Vivado 中通过 “Zynq Processing System” 界面分配特定的输入/输出引脚到 MIO。开启 MIO 外设功能例如将 UART1 映射到特定的 MIO 引脚。Vitis 中的使用调用适当的外设驱动如 xuartpsUART 驱动用于初始化并执行操作例如发送和接收数据。6.1.2 EMIOExtended Multiplexed I/OEMIO 允许 PS 和 PL 之间灵活的 I/O 指配能够借助 FPGA 灵活实现自定义逻辑和外设控制。配置步骤在 Vivado 的 Block Design 中将 PL 与 PS 的接口切换至 EMIO。利用 PL 来传输信号至外部硬件或在 FPGA 内部逻辑中处理。Vitis 中的使用集成对应外设驱动通过 API 函数来进行 I/O 操作。6.2 GPIO 实现6.2.1 AXI 总线概述AXI 总线提供三种接口类型AXI-Lite简化版用于低延迟控制信号。AXI-Full全功能版适合高吞吐量数据传输。AXI-Stream面向高效数据流传输无需地址常用于实时应用。6.2.2 添加和配置 AXI 外设在 Vivado 中打开 IP Catalog选择 AXI GPIO 等外设配置 AXI 总线参数地址范围、数据宽度。将这些外设通过 Block Design 集成到 Zynq PS 的 AXI 总线上。在 Vitis 中使用 xgpio 驱动 APIs 进行操作初始化XGpio_Initialize()、方向设置XGpio_SetDataDirection()、数据读写XGpio_DiscreteWrite() 和XGpio_DiscreteRead()。6.2.3 AXI GPIO 示例代码#includexgpio.hXGpio Gpio;intmain(){// 初始化 GPIOXGpio_Initialize(Gpio,GPIO_DEVICE_ID);// 设置方向通道 1 设为输出XGpio_SetDataDirection(Gpio,1,0x00);while(1){// 写入数据XGpio_DiscreteWrite(Gpio,1,0xFF);}return0;}6.3 中断实现6.3.1 中断配置在 Vivado 中激活 Zynq 中断控制器General Interrupt Controller, GIC。为需要中断支持的外设如 GPIO、Timer指定中断线。在 Vitis 中创建中断向量表自动生成的 Board Support PackageBSP中通常包括。进行中断处理程序注册和初始化。编写中断服务程序ISR并用XScuGic_Enable() 函数激活特定中断。6.3.2 中断服务程序示例voidMyInterruptHandler(void*CallbackRef){// 中断处理逻辑}6.3.3 中断初始化示例XScuGic InterruptController;XScuGic_Config*ConfigPtr;// 初始化中断控制器ConfigPtrXScuGic_LookupConfig(INTC_DEVICE_ID);XScuGic_CfgInitialize(InterruptController,ConfigPtr,ConfigPtr-CpuBaseAddress);// 注册和启用中断XScuGic_Connect(InterruptController,INTR_ID,(Xil_ExceptionHandler)MyInterruptHandler,NULL);XScuGic_Enable(InterruptController,INTR_ID);7. Vitis 2024.1 界面变更7.1 界面变更概述Vitis 2024.1 不再支持传统界面采用 Vitis Unified 统一开发环境将 Vitis HLS 与 SDK 合并至同一界面。启动 Vitis Unified IDEvitis-wworkspace其中 workspace 是一个文件夹用于保存设计的各种组件和项目。7.2 Flow Navigator传统 Vitis IDE 启动每个 Flow 时都会弹出配置对话框。新 Vitis Unified IDE 全部都在 Vitis Component 下的 Settings 下进行设置启动每个 Flow 则会直接运行。各 Flow 配置选项C Simulation DialogC Simulation 对话框提供 C 仿真相关的配置选项包括清理构建、代码分析器、地址检查器等设置。C Synthesis配置 C 综合目标速度/面积/时序优化、时钟频率、存储实现策略等选项。综合完成后生成 RTL 网表文件。C/RTL Co-simulation执行 C/RTL 协同仿真在 RTL 级别验证设计功能正确性支持信号级波形查看。Implementation执行实现流程包括布局布线Place Route和时序分析生成比特流文件。PackageVitis Unified IDE 独有将综合实现后的设计打包为.xo文件供 Vitis 上层平台工程使用。7.3 License 管理7.3.1 申请 HLS 许可证HLS 许可证的申请步骤详见本文 2.4.1 申请 HLS 许可证 章节。7.3.2 导入 HLS 许可证在 Ubuntu 系统中通过以下命令启动 Vivado License Managersourcesettings64.sh vlm在 License Manager 界面中选择File - Install License浏览并选择已下载的.lic许可证文件按提示完成导入。导入后可通过File - View License Status确认许可证状态。8. 故障排除8.1 Vitis IDE 启动失败闪退偶尔使用 Vitis IDE 2022.1 时发现启动后闪退闪退后可以在 Windows 任务管理器中看到 eclipse.exe 已运行但不出现 UI 界面。按照网上做法修改 vitis.bat 无效。通过如下方式可以临时解决启动 Xilinx Software Command Line Tool 2022.1。输入命令execvitis-workspacepath to save files不可使用鼠标右键菜单但可以通过 CtrlV 粘贴路径地址。8.2 Vitis IDE Launch Failed / Web Installer Client Obsolete8.2.1 原因分析出现 “Vitis IDE Launch Failed” 或 “Web installer client Obsolete” 错误的原因安装 Xilinx 软件时选择的是 Vivado 版本而非 Vitis 版本导致只安装了 Vivado 和 vitis_hls未安装 vitis_IDE。“Web installer client Obsolete” 错误表示当前操作系统版本不是 Xilinx 官方支持的版本无法通过在线安装器安装。8.2.2 补救方法打开 Terminal进入 Xilinx 安装路径。执行以下命令查看隐藏的安装目录ls-a可以看到名为.xinstall的隐藏目录。进入该目录cd.xinstall进入对应版本的文件夹如 Vivado_2020.2以下截图展示了在.xinstall目录下进入对应版本文件夹如Vivado_2020.2的文件管理器界面。找到 xsetup 文件并执行以下截图展示了在版本目录中找到xsetup安装程序文件的文件管理器界面。sudo./xsetup# 或者卸载后重装sudo./xsetup-Uninstall进入安装界面后选择 Vitis 版本进行安装。此时会下载 Vitis IDE已安装的 Vivado 和 Vitis HLS 不会重复下载。以下截图展示了执行xsetup后弹出的 Xilinx 安装界面以及选择安装 Vitis 版本的配置窗口。安装完毕后设置环境变量source[安装路径]/Xilinx/Vitis/2020.2/settings64.shsource.bashrc即可通过 Vivado - Tools - Launch Vitis IDE 正常使用。8.3 Vitis 安装界面安装时可选择不同的软件组件选择 Vitis 版将安装三个主要软件Vivado、Vitis HLS、Vitis IDE。选择 Vivado 版仅安装 Vivado 和 Vitis HLS。9. 开发流程总结9.1 Vivado 端开发流程新建 Vivado 工程选择器件型号。创建 Block Design添加 Zynq Processing System IP。运行 Block Automation 自动连线。配置 PS 端外设UART、DDR 等。验证设计Validate Design。生成 HDL Wrapper。运行综合并生成比特流。导出硬件描述文件.xsa。9.2 Vitis 端开发流程打开 Vitis IDE设置工作路径。创建 Platform Project导入 .xsa 文件。创建 Application Project选择模板。编写应用程序代码。编译工程。下载比特流若使用 PL 资源。运行程序通过串口查看输出。9.3 HLS 开发流程创建 HLS Component。配置时钟和综合选项。编写 C/C 源代码和测试平台。运行 C Simulation 验证功能。运行 C Synthesis 综合。运行 C/RTL Co-simulation 协同仿真。运行 Implementation 实现。打包为 .xo 文件供上层项目使用。ReferenceXilinx UG1209: Embedded Design TutorialXilinx UG1399: Vitis High-Level Synthesis User GuideXilinx Vitis 官方文档https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug1209-embedded-design-tutorial.pdfVitis 与 Vivado 对比高级编程与硬件加速框架-CSDN 博客https://blog.csdn.net/liushuiwu_001/article/details/131181547Vitis 安装与 ZYNQ 开发-CSDN 博客https://blog.csdn.net/I_LOVE_MCU/article/details/109456549Xilinx Vivado vitis IDE launch Failed \ Web installer client Obsolete 怎么办-CSDN 博客https://blog.csdn.net/weixin_44820962/article/details/135570439第一个 Xilinx Vitis IDE 入门 helloworld 程序-CSDN 博客https://blog.csdn.net/u011747505/article/details/105331413VivadoVitis 操作流程Hello World 例程_vivado vitis-CSDN 博客https://blog.csdn.net/qq_46635722/article/details/132697374Vitis IDE 艰难切换–从传统 Vitis GUI 到 2024.1 统一软件界面_vitis unified ide-CSDN 博客https://blog.csdn.net/DongDong314/article/details/139979712Vitis2024.1 入门与基本使用指南实现 hello_world 输出-CSDN 博客https://blog.csdn.net/Devil_xiaojie/article/details/143893942手把手教你学 ZYNQ — 正点原子资料下载中心 1.0.0 文档http://47.111.11.73/docs/book-videos/zdyzshipin/3fpga/zynq.html正点原子手把手教你学 ZYNQ 之嵌入式 SDK 开发-基于领航者 V2/启明星 V2【第二期】-Spiritual_V-FPGA-哔哩哔哩视频https://www.bilibili.com/list/ml2807833172