当前位置: 首页 > ops >正文

Vivado软件开发流程操作详解

目录

一、前言

二、Project模式和Non-Project模式

2.1  Project模式

2.2 Non-Project模式

2.3 Project和Non-Project区别

三、Project模式开发流程

3.1 创建工程

3.1.1 创建设计文件

3.1.2 编写设计文件

3.2 运行工程

3.3 运行仿真

3.4 设计流程信息分析

3.4.1 Log文件

3.4.2 Message信息

3.4.3 Report报告

3.4.4 Property

3.5 设计分析

3.5.1 设计连接图

3.5.2 时序分析

3.5.3 DRC分析

四、参考资料


一、前言

        在进行FPGA设计开发时根据是否想直接使用Vivado套件工具还是想更快速的创建管理设计,可分为Project模式和Non-Project模式,本文主要介绍Vivado进行FPGA设计的主要流程。

二、Project模式和Non-Project模式

2.1  Project模式

作用:Vivado会自动管理设计源文件,约束文件,IP数据,综合与实现运行结果以及报告文件,通过Flow Navigator栏可以指定运行的流程。

方式:Vivado IDE 或Tcl命令或是Tcl 脚本

优点:

a)自动管理项目状态、HDL源文件、约束文件、IP核和块设计。

b)生成并保存综合和实现结果

c)支持高级设计分析功能,包括从实现结果到RTL源文件检查检测

d)使用运行策略自动设置命令选项并生成标准报告

e)支持创建多个运行来配置和探索可用约束或命令选项

2.2 Non-Project模式

作用:Non-Project模式下,可以管理设计的不同属性,完全控制设计的每一个流程,更加灵活地运行工程,并且工程不会写入到磁盘中,只会在内存中。

方式:Tcl命令或Tcl脚本

优点:

a)管理HDL源文件、约束文件和IP

b)设置依赖关系

c)生成并保存综合和实施结果

d)对于工程有最高程度的控制

2.3 Project和Non-Project区别

•源文件管理和状态

•流程导航器和项目概要

•友好的告警消息和自动生成的标准报告

•交叉检测回RTL设计

•工具设置和设计配置的保存

•可以进行多次综合和实现运行的试验

•支持约束集的使用和管理

•支持运行结果管理和状态

•支持IP配置和与IP目录的集成

总结:Project模式的易用性体验明显优于Non-Project模式,Non-Project模式支持对设计的完全控制。

三、Project模式开发流程

3.1 创建工程

3.1.1 创建设计文件

打开安装的Vivado,选择下图中Create Project

 

选择Next

 

设置工程名和保存路径

 

设置创建的工程类型,选择RTL Project,可涉及各种文件

 

添加设计源文件,可以选择Add Files添加已存在的文件或者是选择Create File创建源文件,Target language选择语言为verilog还是VHDL,Simulator language设置仿真语言

 

此处以创建计数器的源文件counter.v为例

 

约束文件可通过Add Files添加已有的约束文件或通过Create File创建新的约束文件,设置后点击Next

 

此处以新建约束文件counter_clk.xdc为例

 

器件设置界面,Family,Package,Speed和Temperature等信息,以下图器件示例

 

此时会再次生成一个前面所有设置的概要确认界面,如果设置不符合预期可返回修改,点击Finish

 

设置模块名,默认与源文件名counter一致,也可修改

 

工程创建成功,在source窗口可以看到之前创建的源文件counter.v和约束文件counte_clk.xdc

 

在sim_1(1)中点击右键,进入到添加仿真文件界面

 

创建仿真文件counter_tb.v

 

创建成功

 

3.1.2 编写设计文件

在counter.v中输入设计文件

module counter (input wire clk,        // 时钟信号input wire rst_n,      // 异步复位信号,低电平有效input wire en,         // 计数使能信号input wire load,       // 加载使能信号input wire [7:0] data, // 并行加载数据output reg [7:0] count // 计数器输出
);// 计数器逻辑
always @(posedge clk or negedge rst_n) beginif (!rst_n) begin// 异步复位count <= 8'b0;end else if (load) begin// 同步加载count <= data;end else if (en) begin// 计数使能count <= count + 1;end
end
endmodule

在约束文件中写入约束文件,需先运行完synthesise流程

create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]

在counter_tb.v中写入测试文件

`timescale 1ns/1ps
module counter_tb;
// 输入信号
reg clk;
reg rst_n;
reg en;
reg load;
reg [7:0] data;
// 输出信号
wire [7:0] count;// 实例化被测模块
counter uut (.clk(clk),.rst_n(rst_n),.en(en),.load(load),.data(data),.count(count)
);
// 时钟生成
initial beginclk = 0;forever #10 clk = ~clk; // 50MHz时钟
end
// 测试激励
initial begin// 初始化输入rst_n = 0;en = 0;load = 0;data = 8'h00;// 复位#20 rst_n = 1;// 测试1: 正常计数en = 1;#200; // 计数10个周期// 测试2: 暂停计数en = 0;#100;// 测试3: 加载数据load = 1;data = 8'h55;#20;load = 0;en = 1;#100;// 测试4: 复位rst_n = 0;#20;rst_n = 1;en = 1;#100;// 结束仿真$finish;
end
// 监控输出
initial begin$monitor("Time = %t, rst_n = %b, en = %b, load = %b, data = %h, count = %h", $time, rst_n, en, load, data, count);
end
endmodule

3.2 运行工程

工程运行有三个入口Flow Navigator,Design Run,Tool

 a)Flow Navigator选择对应流程运行

 

b) Design Runs中选中对应流程运行

 

c)Flow菜单栏选中对应流程运行

 

在Design Runs可以看到synth_1和impl_1前面绿色的勾说明已成功运行完

 

3.3 运行仿真

仿真的运行方式和综合以及实现类似,除了Flow Navigator,Tool,但在Design Runs中没法运行仿真,可以在Sources窗口的sim_1(1)中可执行

 

下图为执行Run Post-Implementation Functional Simulation为例

 

注:运行仿真前需先编译仿真库

3.4 设计流程信息分析

运行完流程后需对运行结果确认,根据侧重点不同主要关注四个方面,Log信息,Message信息,Report报告,Property

3.4.1 Log文件

Log中主要是Vivado.log中的信息,运行过程中的一些基本信息,如中间文件保存路径,运行时间,内存占用等

 

3.4.2 Message信息

Message窗口展示根据设计中一些问题的严重等级划分的信息,分为Errors,Critical Warning,Warning,Info,Status五类,可以通过勾选框进行过滤信息。

 

3.4.3 Report报告

双击对应阶段的内容,如report_utilization,可以打开详细的报告

 

详细的资源使用报告如下图

 

3.4.4 Property

通过Tool->Edit Device Properties,该界面可以设置器件以及位流相关的属性设置

 

3.5 设计分析

3.5.1 设计连接图

通过Flow Navigator中的Open Elaborated Design、Open Synthesized Design、Open Implemented Design可以分别查看各阶段的设计连接图

RTL schematic图

 

Synthesis阶段的网表图,Implement阶段的图也类似,区别是单元为Implement后的单元

 

3.5.2 时序分析

在synthesis/Implement阶段,可以进行时序分析。

 

也可通过菜单栏“Report->Timing”中进行不同角度的分析

 

3.5.3 DRC分析

在Rtl analysis,Synthesis,Impletation中有Report DRC(Design Rule Check:设计规则检查),支持对各阶段的设计进行DRC检查,下图是综合阶段的规则检查,有3198条

 

下图是DRC报告

 

四、参考资料

《ug892-vivado-design-flows-overview-en-us-2024.2》

《ug893-vivado-design-suite-user-guide-en-us-2024.1》

http://www.xdnf.cn/news/12809.html

相关文章:

  • 五年级数学知识边界总结思考-下册
  • 【会员专享数据】1980—2022年中国逐日月年潜在蒸散发栅格数据
  • JavaScript 数组学习总结
  • Spyglass:跨时钟域同步(时钟门控单元)
  • eBPF系列--BCC中提供的BPF maps高级抽象如何映射到内核的BPF maps?
  • 【Ragflow】27.RagflowPlus(v0.4.1):小版本迭代,问题修复与功能优化
  • 比较一组结构之间的变换
  • Python爬虫实战:研究PySocks库相关技术
  • Halcon案例(三):C#联合Halcon识别排线
  • 【整数逐位除法求余补〇完整版】2022-4-11
  • 1 Studying《Linux Media Documentation》
  • 深度学习模块缝合
  • 【redis】线程IO模型
  • 第16届蓝桥杯青少Stema11月 Scratch编程——初/中级组真题——行走的图形
  • GD图像处理与SESSiON
  • MySQL(63)如何进行数据库读写分离?
  • 进程与线程的区别
  • SQL Server从入门到项目实践(超值版)读书笔记 16
  • Linux多线程-进阶
  • 设计模式学习
  • AtCoder Beginner Contest 409
  • Continue 开源 AI 编程助手框架深度分析
  • C++17 和 C++20 中的新容器与工具:std::optional、std::variant 和 std::span
  • 学习python做表格6月8日补录
  • B站_Miachael_ee_通过GDB和OpenOCD对ESP32 进行JTAG Debug_笔记1
  • Python Day46
  • 【AI论文】MiMo-VL技术报告
  • 整数的字典序怎么算
  • 【FPGA开发】DDS信号发生器设计
  • 【题解-Acwing】1097. 池塘计数