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》