vivado开发流程
Vivado 是 Xilinx(现为 AMD 旗下)提供的用于 FPGA 和 SoC 设计的主要集成开发环境 (IDE)。其标准开发流程主要包含以下步骤,我们用中文详细说明:
-
创建项目:
- 启动 Vivado。
- 选择
Create Project或File -> Project -> New。 - 指定项目名称和存储位置。
- 选择项目类型:通常选择
RTL Project(从 RTL 代码开始设计),你也可以选择使用 IP Integrator 创建 Block Design,或在已有设计上添加源文件。 - (可选)添加现有的设计源文件(HDL 代码、约束文件、IP 核等)。如果还没有,可以跳过,稍后添加。
- 选择目标器件:这是最关键的一步。根据你使用的开发板(如 Zynq-7000, Zynq UltraScale+, Artix-7, Kintex-7, Virtex 等系列的具体型号和封装速度等级)或项目需求,精确选择 FPGA 或 SoC 器件型号。可以通过搜索、筛选器或直接指定型号来选择。
- 确认总结信息,完成项目创建。
-
设计输入 / 源文件添加:
- HDL 源代码: 这是设计的核心。
- 在
Sources窗口中,右键点击Design Sources,选择Add Sources或直接使用Add Sources按钮。 - 选择
Add or create design sources。 - 可以添加现有的 HDL 文件(
.v,.vh,.sv,.vhd,.vhdl),也可以在 Vivado 中创建新的 HDL 文件(使用Create File按钮,选择语言 VHDL 或 Verilog/SystemVerilog)。编写或修改你的硬件描述代码。
- 在
- 约束文件 (.xdc): 定义设计的物理和时序要求。
- 在
Sources窗口中,右键点击Constraints,选择Add Sources或使用Add Sources按钮。 - 选择
Add or create constraints。 - 可以添加现有的
.xdc文件,也可以创建一个新的约束文件。约束主要包括:- 时钟约束: 定义时钟频率、不确定性等。
- 输入/输出延迟约束: 定义信号相对于时钟的到达时间要求。
- 管脚位置约束: 将设计的顶层端口绑定到 FPGA 的物理管脚。
- 时序例外约束: 如
set_false_path,set_multicycle_path等。 - 物理约束: (如布局约束,通常较少在 XDC 中直接写,更多在实现后通过 GUI 设置)。
- 在
- IP 核: 使用 Vivado IP Catalog 中的预验证模块加速开发。
- 打开
IP Catalog。 - 浏览或搜索需要的 IP 核(如时钟发生器 Clocking Wizard, 存储器控制器 MIG, 处理器系统 PS, 各种接口 IP 如 AXI, UART, Ethernet, PCIe 等)。
- 双击 IP 核进行配置(参数化)。
- 生成输出文件(通常包括 HDL 封装、约束、网表等)。生成的 IP 会自动添加到项目中。
- 在你的顶层设计中实例化该 IP。
- 打开
- HDL 源代码: 这是设计的核心。
-
RTL 分析 (RTL Analysis) / 语法检查 (Elaboration):
- 在
Flow Navigator中的RTL ANALYSIS部分,点击Open Elaborated Design。 - 此步骤检查 HDL 代码的语法和基本语义错误。
- 生成设计的原理图视图(Schematics),便于理解模块连接关系。
- 检查 I/O Ports 是否正确定义。
- 注意: 这不是综合,只是初步分析。
- 在
-
综合 (Synthesis):
- 在
Flow Navigator的SYNTHESIS部分,点击Run Synthesis。 - Vivado 综合引擎 (
synth_design) 将你的 RTL (Verilog/VHDL) 描述转换为底层 FPGA 基本元件(查找表 LUTs、寄存器 Registers、块存储器 BRAMs、DSP Slices 等)组成的逻辑网表。 - 执行一些初步的优化。
- 检查逻辑资源使用情况。
- 生成初步的时序报告(基于线负载模型估算,不精确)。
- 综合后,可以点击
Open Synthesized Design查看综合后的原理图、资源利用率报告、时序报告等,进行初步分析。
- 在
-
实现 (Implementation):
- 在
Flow Navigator的IMPLEMENTATION部分,点击Run Implementation。 - 注意: 有时需要先对综合后的设计进行约束修改或分析,再启动实现。
- 实现包含三个主要自动化子步骤:
- 布局 (Placement -
place_design): 将综合网表中的逻辑单元(LUTs, Regs, BRAMs, DSPs)分配到 FPGA 芯片上的特定物理位置。 - 布线 (Routing -
route_design): 使用 FPGA 内部的可编程连线资源,连接所有已布局单元之间的信号。 - 物理优化 (Physical Optimization): 在布局布线过程中和完成后进行的优化,以满足时序和性能要求。
- 布局 (Placement -
- 实现是最耗时且最关键的阶段之一,目标是在满足所有约束(主要是时序约束)的前提下,完成物理映射。
- 实现完成后,点击
Open Implemented Design。这是分析设计物理实现的关键环节:- 查看布局布线结果: Device 视图、Routing 视图。
- 分析关键时序报告: 非常重要!检查是否满足所有时序约束(Setup/Hold)。查看关键路径(Critical Path)信息。
- 查看资源利用率报告: 确认使用的 LUTs, Registers, BRAMs, DSPs 等是否在目标器件容量范围内。
- 检查管脚分配: 确认 I/O Ports 是否按约束文件正确映射到物理管脚。
- 功耗分析: 运行功耗估算(需提供翻转率或仿真文件)。
- 迭代: 如果时序不满足或资源超限,通常需要回到前面步骤修改 HDL 代码、优化逻辑、调整约束(尤其是时序约束或布局约束)、优化 IP 配置,然后重新运行综合和实现。
- 在
-
生成比特流 (Generate Bitstream):
- 在
Flow Navigator的PROGRAM AND DEBUG部分,点击Generate Bitstream。 - 此步骤将经过验证的实现结果(布局布线信息、配置信息)转换成 FPGA 能够加载和执行的二进制配置文件,通常称为比特流 (Bitstream),文件后缀为
.bit。 - 可以选择同时生成用于间接编程的文件(如
.bin)。 - 比特流包含了配置 FPGA 内部所有可编程资源(逻辑、布线、IO、Block RAM 初始化等)的信息。
- 在
-
下载与调试 (Download & Debug):
- 硬件连接: 将开发板通过 JTAG 或 USB 电缆连接到主机(通常使用 Platform Cable USB II 或 SmartLynq 下载器)。
- 打开硬件管理器: 在
Flow Navigator的PROGRAM AND DEBUG部分,点击Open Hardware Manager。 - 自动检测硬件: 点击
Open target->Auto Connect。Vivado 应该能检测到 JTAG 链上的 FPGA 或下载器。 - 编程器件:
- 在
Hardware窗口中右键检测到的器件(通常是xc7...),选择Program Device...。 - 在弹出的对话框中,浏览并选择生成的
.bit文件。 - (可选)勾选
Program debug cores如果你在设计中插入了 ILA 或 VIO 等调试核。 - 点击
Program。比特流将被下载到 FPGA 中,设计开始运行。
- 在
- 片上调试 (ChipScope/ILA):
- 如果设计中集成了集成逻辑分析仪 (ILA) 或虚拟输入输出 (VIO) 核,在下载包含调试核的比特流后,可以在
Hardware Manager中看到这些调试核。 - 设置触发条件 (Trigger Setup)。
- 运行 (Run Trigger)。
- 捕获并查看内部信号波形进行调试分析。
- 如果设计中集成了集成逻辑分析仪 (ILA) 或虚拟输入输出 (VIO) 核,在下载包含调试核的比特流后,可以在
-
验证 (Verification - 贯穿始终):
- 虽然常被单独列出,但验证是贯穿整个流程的关键活动,并非仅在最后一步。
- RTL 仿真 (Simulation): 在设计早期(综合前),使用 HDL 仿真器(如 Vivado 自带的 XSim,或第三方 Modelsim, VCS)对 RTL 代码进行功能验证。创建 Testbench (
.v/.vhd/.sv) 来激励设计并检查输出。 - 时序仿真 (Post-Implementation Simulation): 在实现后,利用布局布线后的延时信息进行更精确的仿真(较少使用,通常静态时序分析 STA 更高效)。
- 静态时序分析 (STA - Static Timing Analysis): 在综合后(估算)和实现后(精确)进行。这是验证设计是否满足所有时序约束的主要手段(步骤 5 中分析的关键环节)。Vivado 的时序报告是 STA 的结果。
- 板上验证: 下载比特流到 FPGA 后,配合外部仪器(示波器、逻辑分析仪)或软件进行实际功能测试。
总结流程图:
创建项目(选器件) -> 设计输入(HDL代码 + 约束 + IP核) -> RTL分析/语法检查 (Elaboration) -> 综合 (Synthesis) -> 实现 (Implementation:布局Place + 布线Route) -> 时序/资源分析 -> [不满足? -> 修改设计/约束 -> 重新综合/实现] -> 满足 -> 生成比特流 (Bitstream) -> 下载到FPGA -> 调试/验证 (ILA, 功能测试)
关键点:
- 约束是关键: 准确的约束(特别是时序约束
.xdc)是实现成功的基础。 - 迭代优化: FPGA 设计流程本质是迭代的。综合->实现->分析->修改->再综合/实现 的循环很常见。
- 资源及时序分析: 实现后必须仔细检查资源利用率和时序报告。
- IP核集成: 充分利用 IP 核可以极大提高开发效率和质量。
- 调试工具: ILA 等片上调试工具是验证和定位硬件问题的利器。
这个流程提供了 Vivado FPGA/SOC 开发的标准框架。具体项目的细节和复杂度会有所不同,但这个基本步骤是通用的在实际开发中,需要根据具体需求熟练运用 Vivado 的各种功能(如时序约束向导、DRC 检查、功耗分析、版本控制集成等)。
(可选)Linux 用户注意: Vivado 也支持 Linux 环境(如 Ubuntu)。安装和启动命令 (vivado, vitis) 通常在终端执行。项目流程本身与 Windows 版本基本相同。
Vivado无法选中开发板的常见原因及解决方法
对应的器件信息和约束文件(XDC),大大简化工程初始化流程。然而,在某些情况下,我们可能会发现 Vivado 的界面中无法选中目标开发板,导致只
2025-07-15 10:19:43
vivado主界面及设计流程
Vivado设计主界面,它的左边是设计流程导航窗口,是按照FPGA的设计流程设置的,只要按照导航窗口一项一项往下进行,就会完成从设计输入到最后下
2023-09-17 15:40:17
Vivado设计流程指导说明
Vivado 设计分为 Project Mode 和 Non-project Mode 两种模式,一般简单设计中,我们常用的是 Project Mode。在本手册中,我们将以一个简单的实验案例,一步一步的完成 Vivado
资料下载
姚小熊27
2021-03-25 14:39:13
Vivado设计流程指导手册
Vivado 设计分为 Project Mode 和 Non-project Mode 两种模式,一般简单设计中,我们常用的是 Project Mode。在本手册中,我们将以一个简单的实验案例,一步一步的完成 Vivado
资料下载
姚小熊27
2021-03-22 11:39:53
Vivado的安装生成bit文件及烧录FPGA的简要流程教程免费下载
本文档的主要内容详细介绍的是Vivado的安装生成bit文件及烧录FPGA的简要流程教程免费下载。
资料下载
jollylin7788
2019-06-18 08:00:00
Xilinx FPGA Vivado开发流程介绍
系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。本次带来Vivado系列,Vivado
2023-02-21 09:16:44
基于microblaze的vivado开发流程
、SW拨码开关以下是官网提供的资料链接:arty a7开发板资料Pmod DA4资料vivado安装说明board files添加基于microblaze的v
Vivado与ISE的开发流程以及性能差异
的 .mdl 的模型文件依旧可以被打开,编辑,保存,如果需要的话,新的模型也可以被向后兼容保存成 .mdl 格式。为了体现Vivado与ISE的开发流程
Vivado综合引擎的增量综合流程
从 Vivado 2019.1 版本开始,Vivado 综合引擎就已经可以支持增量流程了。这使用户能够在设计变化较小时减少总的综合运行时间。
2019-07-21 11:02:08
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览