
Vivado知识锦集
文章平均质量分 73
分享各个方向,角度的Vivado使用方法,常见问题的解决
FPGA芯中的小蚂蚁
积极的态度,佛系的人生,带领新手入门FPGA的世界,分享各种工具小妙招。
展开
-
Vivado时序报告八:Report Bus skew详解
在时序报告中,可以针对两类特殊的约束专门进行报告,一类是前面介绍过的Report Exception,包含了约束set_multicycle_path/set_false_path/set_max_dealy/set_min_delay。另一类就是本文要介绍的set_bus_skew约束,对应的分析为Report Bus Skew,该报告不包含在Report Timing Summary中。原创 2024-11-03 17:43:20 · 1226 阅读 · 0 评论 -
Vivado时序报告七:Report Clock Network&Report Clock Interaction详解
本文介绍时序报告中关于时钟的两个报告:Report clock network和Report Clock interaction,Report clock network报告主要是以树状结构报告设计中各时钟驱动的load,Report Clock interaction则是报告设计中时钟间的关系,如同步时钟还是异步时钟等,与load无关。原创 2024-10-27 11:00:15 · 1511 阅读 · 0 评论 -
Vivado时序报告六:Report Timing详解
时序分析中,Report_timing_summary默认是对所有路径进行分析,当工程设计较大时,时序路径较多,想要查找指定时序路径的时序情况就不方便,此时就可以使用“Report Timing"功能,但“ReportTiming”不会报告“Pulse Width” (脉冲宽度)。与其他时序报告类似,General information主要包含一些基本信息,报告类型,设计模块名称,器件信息,Vivado版本,报告生成时间,报告生成对应的tcl命令。可同时设置多个,设置多个时会对分析所有的对象。原创 2024-10-20 11:46:46 · 2285 阅读 · 0 评论 -
Vivado时序报告五:Report Exceptions详解
时序约束中,有一类约束属于Exceptions类,之所以称为Exceptions(例外)是指约束后进行时序分析时与默认的边沿选取不同,包含set_multicycle_path/set_false_path/set_max_dealy/set_min_delay四种约束。在运行时序分析时,Report Exceptions即是专门针对涉及Exceptions的路径进行报告,并且还会报告clk group约束,通过时序例外约束报告可以获取以下信息。a) 设计中设置的所有影响时序分析的时序例外约束。原创 2024-10-13 13:24:52 · 961 阅读 · 0 评论 -
Vivado时序报告三:Report pulse width详解
在进行时序分析时,除了slack的分析,还存在pulse width的检查,下面将对pulse width检查进行详细说明。在report timing summary报告中,也会带上Pulse Width检查结果。原创 2024-09-08 13:49:37 · 1982 阅读 · 0 评论 -
Report Design Analysis报告之logic level详解
在工程设计中,如果需要了解路径的逻辑级数,可以在report timing summary中找到对应的时序路径,查看时序路径的详情报告中有逻辑级数的信息,如下图这种方法查看有一个缺点,就是无法知道工程设计中逻辑级数的总体情况,这个时候就可以使用Report design analysis中的Include logic level distribution来查看。原创 2024-07-07 13:29:31 · 1328 阅读 · 0 评论 -
Vivado时序报告四:Report Datasheet详解
时序报告中不仅包含对时序路径的详细信息,还有一类专门针对IO端口的时序报告分析,即“Report->Timing->”里面的Report Datasheet功能,下面将针对Datasheet的内容进行详解,注:本文示例的vivado版本为vivado2022.1,器件为xc7k480tffv1156-2L。原创 2024-06-09 10:16:06 · 2110 阅读 · 1 评论 -
Vivado工程收敛之报告分析大全
在大型工程设计中,为了设计时序收敛,往往需要对初步运行的结果进行调试,调试的很重要的依据就是各种报告的分析,下面将介绍一些常用的分析报告,演示的器件为xcku3p-ffvb676-2-i。原创 2024-03-27 21:50:12 · 1456 阅读 · 0 评论 -
质量报告Report_qor_assessment使用详解
Vivado对于工程设计在综合阶段或布线后的质量提供了一个分析命令report_qor_assessment,执行命令后可以得到当前设计的一个评分值,用于评估后续的时序收敛难度大小,该值范围为1-5,值越大说明质量越高,越容易收敛,通常低于3是较差。特别是在综合阶段执行该命令提前预知结果的好差,如综合阶段如果评分值小于3,则无需执行实现阶段的流程了。原创 2024-03-24 12:49:29 · 1398 阅读 · 0 评论 -
时序报告Report_timing_summary之一步精通配置选项使用
在Vivado初步跑通综合与实现流程后,就需要时序报告关注时序效果,时序报告的生成需要单独执行流程Report_timing_summary。在运行report timing summary时,可以进行相关的配置选项设置,使得筛选出自己需要的报告,有时配置不恰当,会导致无法查看到需要的路径,本文结合实际的工程例子进行详细的说明配置选项相关功能。原创 2024-03-09 11:53:16 · 2618 阅读 · 0 评论 -
图解Vivado工程的目录结构
在使用Vivado进行工程设计时,创建工程以及运行工程的过程中都会生成大量的目录和文件,下面图将对目录和文件结构及功能进行一个简单说明。工程示例图添加图片注释,不超过 140 字(可选)原创 2024-03-03 09:39:39 · 1384 阅读 · 0 评论 -
Vivado使用入门之四:时序约束操作大全
点击Edit Timing Constraints,进入设置界面,左侧中显示可设置的约束类型,默认是选择Create Clock,点击红框中的“+”号,进入添加界面。在timing constraints中显示了可设置的约束,左侧点击要设置的约束类型,右侧序号2位置处自动显示该类约束,此时再点击3,自动进入创建约束的窗口中。Constraints Wizard流程下将会以引导式的方式帮助用户设置约束,以综合后的设置为例,在Flow Navigator窗口中,进入。原创 2023-09-13 23:16:54 · 4163 阅读 · 0 评论 -
Modelsim仿真问题解疑三:LM_LICENSE_FILE与Vivado命名冲突
modelsim和Vivado的环境变量名称都为LM_LICENSE_FILE,值配置为其中一个时会导致另一个值被覆盖。对LM_LICENSE_FILE同时配置modelsim和vivado的license路径,以分号;modelsim和Vivado同一时间只能使用一个,另一个会报license相关的错误。原创 2023-09-10 19:57:59 · 920 阅读 · 0 评论 -
超详细-Vivado配置Sublime+Sublime实现VHDL语法实时检查
对于使用过其他IDE或编辑工具如Sublime,Vim等小伙伴,在使用Vivado时会发现自带的编辑器很不友好,如缩进功能不友好,不支持高亮显示,不支持自动补全等常用功能。因次,使用第三方编译的需求是很强,但在网上搜索了相关的博文后,发现很多不全或场景不符,在踩了能踩的坑后,终于将整个流程整明白,配置成功,下面将分享整个配置的过程,希望后面的小伙伴能避坑,配置一步到位。注:本文是针对VHDL语言进行设置的,verilog的设置存在差异,可参照文章。原创 2023-09-05 22:57:24 · 1352 阅读 · 1 评论 -
Xilinx-7系列之可配置逻辑块CLB
1个LUT6可以实现4:1的选择器,2个LUT6可实现8:1的选择器,4个LUT6可实现16:1的选择器,以16:1的多路选择器为例,从每个LUT中选择2位D[1:0]作为选择位,其余4位D[3:0]作为数据选择输入位,4个LUT共16个选择输入位,结合F7AMUX,F7BMUX,F8MUX,选择位为4位,组合后即是有16种结果。使能信号CE与时钟同步,固定的在Q31中读取数据,LUT的最低有效为A[1]未被使用,工具将自动将其值设为1,A[6:2]为5位的地址,数据在Q(LUT6的O6)中进行输出。原创 2023-08-30 23:25:57 · 902 阅读 · 0 评论 -
Vivado使用入门之二:网表物理约束
物理约束包括I/O位置约束,网表单元约束,布局约束,布线约束,约束的内容是保存在XDC(Xilinx Design Constraints)文件或Tcl脚本中,在打开工程时被加载进入工程中,载入工程后也可以对约束进行修改。布线约束主要是对net的布线资源进行控制,效果和Vivado工具直接布线相同。在device中对ff_s1_reg和ff_s2_reg进行位置约束后,在右侧的layers->nets中可知无布线约束的net为unrouted net,显示深红色,ff_s1在device中为图中的斜线。原创 2023-08-16 22:37:08 · 2175 阅读 · 0 评论 -
Vivado使用入门之三:I/O约束
上节说到修改I/O Ports中Package Pin列的值可设置约束,下面有一种更简单的方法,鼠标左键选中需要约束port,按住左键可将port直接拖入Package中,对于放置在不可约束的位置时,会有禁止的图标(带斜杠的圆圈)出现,也会出现提示语不能放置。设置I/O约束,有3中界面操作方式,I/O port表格中设置,port拖入Package中设置,port拖入Device中设置,三种方式都可以实现I/O port的位置约束,在设定位置约束后,其他属性的约束就只能在I/O port界面设置。原创 2023-08-20 16:35:21 · 5081 阅读 · 0 评论 -
超详细-Vivado配置Sublime+Sublime实现Verilog语法实时检查
对于使用过其他IDE或编辑工具如Sublime,Vim等小伙伴,在使用Vivado时会发现自带的编辑器很不友好,如缩进功能不友好,不支持高亮显示,不支持自动补全等常用功能。因次,使用第三方编译的需求是很强,但在网上搜索了相关的博文后,发现很多不全或场景不符,在踩了能踩的坑后,终于将整个流程整明白,配置成功,下面将分享整个配置的过程,希望后面的小伙伴能避坑,配置一步到位。原创 2023-07-23 14:01:33 · 4834 阅读 · 3 评论 -
Vivado使用入门之一:Schematic图
在一个设计中,有时因定位或其他原因需要去查看综合后的电路图或是布局布线后的电路逻辑连接,此时需要用Schematic视图功能。通过Schematic,有时在综合后的结果就能知道设计是否合理,而无需运行到布局布线,对于大型工程可以节省很多时间。注,本文示例的版本为Vivado v2019.1。原创 2023-08-06 09:27:43 · 8784 阅读 · 0 评论 -
Verilog基础之十四、FIFO实现
FIFO(First in First out)为先进先出队列,具有存储功能,可用于不同时钟域间传输数据以及不同的数据宽度进行数据匹配。如其名称,数据传输为单向,从一侧进入,再从另一侧出来,出来的顺序和进入的顺序相同。原创 2023-07-09 10:35:38 · 3885 阅读 · 3 评论 -
Verilog基础之十七、锁相环PLL
1.1 背景若将一个FPGA工程看做一个人体,时钟的重要性丝毫不亚于心脏对于人体的重要性,时钟的每一个周期对于工程都是一次全面的状态更新,因此,时钟的有效使用重要性不言而喻。以赛灵思7系列的器件为例,在之前的文章Xilinx之7系列时钟资源与时钟架构中,第三节时钟管理单元 提到了7系列时钟管理单元CMT,CMT包含了MMCM和PLL,PLL的功能为MMCM功能的子集,可实现时钟网络去偏斜,频率合成,去抖动。1.2 PLL结构根据赛灵思官网用户手册,PLL的结构如下图。原创 2023-07-16 20:19:12 · 2425 阅读 · 0 评论 -
Verilog基础之十五、锁存器实现
在之前的文章中介绍过寄存器,本节介绍一个类似的逻辑单元:锁存器。在大部分的资料和文章介绍中,都是告诉读者设计中应尽量避免出现锁存器,这主要是由锁存器的特点决定的。锁存器和普通触发器最大的区别就是锁存器为电平触发,如高电平或低电平,而触发器为边沿触发,这一特性使得锁存器不如触发器稳定,电平触发容易受干扰信号的影响而导致状态变化,也即产生毛刺。另一方面,因为可不受时钟控制,不利于时序分析,时序分析更加复杂。原创 2023-07-12 22:55:51 · 2379 阅读 · 0 评论 -
Verilog基础之十三、ROM实现
对于工程中的存储逻辑分为两种,一种是可读可写的RAM,另一种是只能读取的ROM,两者的数据读取都是通过地址来查找。对于ROM,因为是只能读取不能写入,里面的数据在初始化时进行存入。二、非IP核设计通常ROM的实现是调用IP核,在IP核创建时使用coe文件进行初始化,coe文件中存储了初始化的数据,工程设计中IP核和data文件(如txt文件)读取两种方式来设计ROM。2.1 工程设计文件读取初始化。原创 2023-07-02 22:11:56 · 3890 阅读 · 6 评论 -
Vivado使用技巧之外部编辑器配置
Vivado自带的默认编辑器功能受限,不如第三方编辑器Eclipse,Notepad++,Sublime功能强大。因此,Vivado提供了一个可配置项,可将编辑器设置成外部编辑器。原创 2023-06-23 15:05:14 · 2402 阅读 · 0 评论 -
Verilog基础之十二、分频器实现
分频器即将高频率的信号转化为更低频率的信号,常用的分频可使用锁相环PLL来实现,也可自己编写RTL代码来实现。根据分频的系数N(假设信号频率为M,分频系数为N,则分频后的信号频率为M/N)分为奇数分频和偶数分频,奇数分频根据占空比可分为50%占空比和非50%占空比。原创 2023-07-01 22:04:28 · 2118 阅读 · 0 评论 -
Verilog基础之十六、RAM实现
工程设计中除逻辑计算单元外,存储单元也是不可获取的部分,RAM(Random Access Memory)随机存取存储器即可以写入数据,也可读取数据,写入或读取的位置由输入的地址决定。原创 2023-07-16 09:56:58 · 3948 阅读 · 0 评论 -
Verilog基础之十一、移位寄存器实现
移位寄存器SRL在工程中属于使用频率较高个模块,可用于存储数据,实现串并转换;根据数据移动方向可分为左移寄存器,右移寄存器,左移是向数据高位移动,右移是向数据低位移动。原创 2023-06-26 21:59:20 · 3775 阅读 · 0 评论 -
Verilog基础之十、计数器实现
计数器是较为基础的逻辑,很多其他逻辑可依靠计数器实现,如控制器,分频。原理为通过统计时钟脉冲的个数来输出计数值。原创 2023-06-25 21:26:51 · 3052 阅读 · 0 评论 -
Verilog基础之九、比较器实现
比较器是数字电路中使用频率高的逻辑,器件通常也有自带的比较器IP核,本文通过verilog代码来实现。原创 2023-06-23 13:14:07 · 2564 阅读 · 0 评论 -
Verilog基础之八、多路选择器实现
选择器在FPGA中是基础的组成部分,英文全称为Multiplexer,为一个多输入单输出的结构。以器件xc7k480tffv1156为例,在slice中,也可以看到F7AMUX,F8MUX,这两个MUX都是二输入单输出的选择器。原创 2023-06-20 22:11:51 · 3632 阅读 · 0 评论 -
Verilog基础之七、译码器实现
译码器的实现为编码器的逆过程,以3-8译码器为例,真值表如下。原创 2023-06-19 21:43:53 · 1345 阅读 · 0 评论 -
Verilog基础之六、编码器实现
编码是将其他信号,如图像,文字等用其他形式表示,通常针对计算机时指用二进制表示,对人通常是用十进制表示,像用十进制数表示温度,身高等,都可看作编码的过程。在电路中,编码是将数量为2的N次方的信号转换为N位2进制输出。根据编码信号中是否允许逻辑为1的个数大于1分为普通编码器和优先编码器,普通编码器上每个要编码的信号只有1位为1,优先编码器可对编码的信号存在多位为逻辑1的进行编码。以4-2线编码器为例,普通编码器和优先编码器真值表如下图。原创 2023-06-14 21:32:59 · 2033 阅读 · 0 评论 -
Verilog基础之四、乘法器实现
本文介绍verilog实现乘法器,乘法的实现本质可以通过移位和加法实现,乘法的实现无需时序控制,用组合逻辑电路实现即可,因此即可用always或assign实现。原创 2023-06-11 20:02:41 · 2823 阅读 · 0 评论 -
Verilog基础之三、减法器实现
设计2个4位数的减法器,包括全减器和半减器,同时分别采用always和assign语句来实现。对比加法器和半加器综合图,可见二者使用的资源一致,差异点为LUT的INIT值不同。对于N位的减法,可以通过定义一个参数N,需要修改位数时,只需修改N的值即可。减法器的实现与加法器类似,根据是否考虑借位分为半减器和全减器。原创 2023-06-07 20:28:45 · 2620 阅读 · 0 评论 -
Verilog基础之二、加法器实现
在第一个红框出,进位ci从0变成1,可看到全加器的输出sum变成2,半加器的输出sum_half无变化,第二个红框15ns处,d1从0变成1,此时sum和sum_half都加1。算术运算中,加法是最为基础的运算,其他运算从计算机实现的角度来看,本质上也都可由加法运算来实现。加法器根据是否考虑进位分为半加器和全加器,半加器做加法时不会将进位考虑到加法运算中,但运算结果中会保留运算的进位结果。设计2个4位数的加法器,包括全加器和半加器,同时分别采用always和assign语句来实现,原创 2023-06-06 22:09:36 · 1287 阅读 · 0 评论 -
Verilog基础之一、触发器实现
1.1 触发器作用触发器是工程中基础的单元结构也是相当重要的组成,时序电路的实现离不开触发器。触发器是具有存储功能的器件,时钟脉冲的边沿触发状态改变。通常,触发器可分为D触发器,T触发器,JK触发器等。原创 2023-06-04 20:44:02 · 2412 阅读 · 0 评论 -
Verilog测试文件编写大全之时钟
完成工程设计之后,通常需要编写对应的测试文件对设计进行功能仿真验证。因为测试文件中对外是只有输入输出端口,并无信号,而测试文件就是通过编写输入信号的形式,连接到设计文件对应的输入端口,通过输出端口来确认逻辑是否正确。时钟又是最最基础的信号,无时钟信号类似手机不联网。本节将结合实际modelsim来讲解测试文件中时钟的写法。原创 2023-05-31 20:08:17 · 1603 阅读 · 0 评论 -
Vivado综合属性系列之十三 FSM_ENCODING
状态机的实现有很多方式,如auto,one_hot,sequential,如下图中Synthesis中-fsm_extraction的配置项,但此处作用范围为全局,如果要对部分状态机指定实现方式,则可通过在RTL代码中设置FSM_ENCODING属性。原创 2023-05-29 21:58:17 · 1263 阅读 · 0 评论 -
Vivado综合属性系列之十二 BLACK_BOX
在调试中,有时不需要知道一个模块或实例的具体实现,或者需要使其对外属于不可见,只知道它的输入输出,即像一个黑盒,此时可以对模块设置BLACK_BOX属性。原创 2023-05-28 19:23:22 · 3592 阅读 · 0 评论 -
Vivado综合属性系列之十一 GATED_CLOCK
在工程设计中,时钟信号通常来源于专用的时钟单元,如MMCM和PLL等。但也存在来自逻辑单元的信号作为时钟,这种时钟信号为门控时钟。门控时钟可以降低时钟网络的动态功耗,但同时也因为由组合逻辑生成,容易产生毛刺。针对门控时钟,综合工具有专门的配置项-gated_clock_conversion和属性gated_clock,启用后会将门控时钟进行转换。原创 2023-05-24 21:19:30 · 2512 阅读 · 0 评论