侵权投诉

Vivado开发技巧:综合策略与合适的编译顺序

39度创意研究所 2020-12-29 14:07 次阅读

综合(Synthesis)是指将RTL设计转换为门级描述。Vivado开发套件中的综合工具是一款时序驱动型、专为内存使用率和性能优化的综合工具,支持System Verilog 2012、Verilog 2005、VHDL 2008、混合语言中的可综合子集,以及XDC设计约束文件(基于工业标准的SDC文件),此外还支持RTL属性来控制综合细节。

综合设置选项
在Flow Navigator中点击Settings,切换到Synthesis标签中:

1.Constraints部分
选择用于综合的约束集,一个约束集是一组XDC约束文件,默认选择状态为active的约束集。设计约束分两种:

物理约束:定义管脚布局、单元(如块RAM、查找表、触发器等)布局的的绝对或相对位置;

时序约束:定义设计的频率需求。如果没有时序约束,Vivado会根据布线长度和布局拥挤度优化设计。

2.Options部分
选择综合运行时使用的策略(strategy)。Vivado提供了几种预定义的策略,后文将讲述如何创建自定义策略。这里给出综合策略中每个设置选项的含义:

flatten_hierarchy:定义综合工具如何控制层次结构(比如模块之间的调用),选择将所有层次展开融为一体进行综合,还是分别独立综合再连接到一起。

none表示从不展开层次结构,综合输出与原始RTL有相同的层次;

full表示全部展开层次结构,只留下顶层;

rebuilt让综合工具展开层次结构后进行综合,综合后再按原始RTL重建层次结构。这样既保留了跨界优化的好处,又让最终层次结构与RTL类似,便于分析。

gated_clock_conversion:选择是否将门控时钟转换为使能信号。设计中应该避免使用门控时钟,需要的时钟信号应尽可能由MMCM/PLL产生。转换过程需要与RTL属性配合工作,具体在第24篇介绍。

bufg:设置综合工具可以从设计中推断出多少个BUFG。比如使用默认的12时,如果RTL中实例化了3个BUFG,那么综合工具最多还可以推测出9个没有明确实例化的BUFG。

fanout_limit:设置一个信号的最大驱动负载数量,如果超出了该限制,就会复制一个相同的逻辑来驱动超出的负载。这里只是一个总体设置,在RTL设计中还可以使用RTL属性进行更具体的设置,具体在第24篇介绍。

directive:设置Vivado综合运行时擦爱去的优化方式,具体包括

Default,默认设置。

RuntimeOptimized,执行最短时间的优化选项,会忽略一些RTL优化来减少综合运行时间。

AreaOptimized_high/medium,执行一些通用的面积优化。

AlternateRoutability,使用算法提高布线能力,减少MUXF和CARRY的使用。

AreaMapLargeShiftRegToBRAM,将大型的移位寄存器用块RAM来实现。

AreaMultThresholdDSP,会更多地使用DSP块资源。

FewerCarryChains,位宽较大的操作数使用查找表(LUT)实现,而不用进位链。

retiming:启用该功能,可以通过在组合门和LUT之间移动寄存器(达到寄存器平衡状态)提高内部时钟时序路径的电路性能。该功能会保留原来的功能和电路延迟,也不需要改变RTL源文件。

fsm_extraction:设置综合如何从设计中提取和映射有限状态机,具体在第24篇介绍。

keep_equivalent_registers:阻止合并有相同输入逻辑的寄存器。

resource_sharing:设置不同信号间共享算数操作符,选择为auto时设计会根据设计时序判断是否进行资源共享。

no_lc:选中会关闭LUT组合。

no_srlextract:选中该选项时,移位寄存器会用普通的寄存器实现,而不用FPGA内部专用的SRL资源。

max_bram:设置设计中运行使用的最大块RAM数量。通常当设计中有黑盒子或第三方网表时,使用该选项来节省空间。默认值为-1,表示允许使用该FPGA中所有的块RAM。

max_uram:设置设计中运行使用的最大UltraRAM数量(对于UltraScale架构FPGA而言)。-1,表示允许使用该FPGA中所有的UltraRAM。

max_dsp:设置设计中运行使用的最大DSP块数量。通常当设计中有黑盒子或第三方网表时,使用该选项来节省空间。默认值为-1,表示允许使用该FPGA中所有的DSP资源。

max_bram_cascade_height:设置可以将BRAM级联在一起的最大数量。

max_uram_cascade_height:设置可以将URAM级联在一起的最大数量。

cascade_dsp:设置在求DSP块输出总数时使用多少个加法器,默认计算时会使用块内部的加法器链。设置为tree会强制将该计算在fabric结构中实现。

no_timing_driven:禁用默认的时序驱动综合算法,这样可以减少综合运行时间,但会忽略综合中时序的影响。

sfcu:在单文件编译单元模式下运行综合。

assert:将VHDL中的assert状态纳入评估。失败或错误级别会停止综合进程并产生一个错误信息;警报级别会产生一个警告信息。

tcl.pre/tcl.post:选择tcl文件,在综合前和综合后会自动运行其中的命令。这两个文件应该放在相应的运行目录下,如project/project.runs/run_name。

创建综合策略
除了Vivado提供的配置好的综合策略外,还可以自行配置。在Settings中根据需要修改了设置选项后,点击右侧的Save strategy as按钮(如下图红框),会弹出窗口,填写策略名称和相关描述,即可保存为用户自定义的综合策略。综合策略列表的User defined strategies中即会出现自定义的综合策略。

在Settings->Tool Settings->Strategies中也可以设置综合策略,点击“+”即可新建策略。如果想在已有策略的基础上修改,则选中一个策略,点击上方的Copy Strategy按钮,User Defined Strategies中就会出现备份以供修改(Vivado提供的策略是不能修改的)。点击Apply应用配置后,综合策略列表中就会出现自定义的策略。

控制文件编译顺序
综合时必须选取合适的编译顺序,比如一个文件需要用到另一个文件中的相关申明。Vivado按照RTL文件的层次化结构编译文件,相关顺序显示在Sources窗口的Compile Order子窗口中(在底部选择切换)。

Vivado可以自动识别和设置最佳的顶层模块,同时自动管理编译顺序。顶层模块文件和该层次结构下所有的文件,都会以正确的顺序用于综合和仿真。Sources窗口的右键菜单->Hierarchy Update命令用于设置Vivado如何处理设计中文件的改动。

Automatic Update and Compile Order设定当源文件发生改动时,工具自动管理编译顺序,Compile Order窗口中将显示编译顺序,Hierarchy窗口中显示文件是否在层次结构中使用以及所处的位置。

Automatic Update, Manual Compile Order设定Vivado可以自动决定最佳顶层模块,但是允许人工设定编译顺序。在Compile Order窗口中拖动文件所处位置即可完成修改。

Vivado支持将Verilog(.v)或Verilog Header(.vh)文件作为全局`include文件。Vivado会在其它源文件前优先处理此类文件。选中需要添加的文件,右键->Set Global Include即可,或者在属性窗口中选中相应复选框。

o4YBAF9uJbqACBuPAAAsHRGDTjI188.png

编辑:hfy

收藏 人收藏
分享:

评论

相关推荐

Vivado中运行时出现visual c++运行错误该如何解决

Vivado中运行时出现visual c++运行错误的解决办法Win10系统中运行Vivado一直好....
的头像 OpenFPGA 发表于 10-21 14:56 90次 阅读
Vivado中运行时出现visual c++运行错误该如何解决

一文快速带你理解RTL与LUT之间的关系

Quartus II EDA工具进行综合 布局布线后,点击“Chip Planner”,Chip P....
的头像 OpenFPGA 发表于 10-21 14:35 158次 阅读
一文快速带你理解RTL与LUT之间的关系

VIVADO中时序报告中WNS、WHS、TNS、THS有什么含义

VIVADO中时序报告中WNS,WHS,TNS,THS含义运行“report_timing”或“re....
的头像 OpenFPGA 发表于 10-21 14:32 159次 阅读
VIVADO中时序报告中WNS、WHS、TNS、THS有什么含义

为什么vivado2016调用MIG ip核会收到严重警告呢

为什么vivado2016调用MIG ip核会收到严重警告呢?这个critical warning会有影响吗,要怎么解决呢?...
发表于 10-18 09:41 0次 阅读

Vivado中XDC文件的约束顺序

很对人在使用Vivado时喜欢使用多个约束文件对整个工程进行约束,同时Vivado允许设计者使用一个....
的头像 OpenFPGA 发表于 10-13 16:56 1086次 阅读

Vivado设计套件有何作用

Vivado设计套件有何作用? Verilog HDL是什么? STM32按内核架构分为哪些? ...
发表于 10-11 07:22 0次 阅读

芯片开发语言为什么要用Chisel和Verilog

在最近召开的RISC-V中国峰会上,中科院计算所的包云岗研究员团队正式发布了名为“香山”的开源高性能....
的头像 FPGA技术江湖 发表于 09-26 11:00 1836次 阅读
芯片开发语言为什么要用Chisel和Verilog

DAN JOYCE的仅通过门级仿真发现的错误类型有哪些

为什么仍必须进行门级仿真(GLS)? DAN JOYCE的仅通过门级仿真发现的错误类型有哪些? ...
发表于 09-22 07:21 0次 阅读

关于Actel 的FPGA的译码器的VHDL源代码

关于Actel 的FPGA的译码器的VHDL源代码(通信电源技术期刊2020年第14期)-关于Act....
发表于 09-16 15:18 45次 阅读
关于Actel 的FPGA的译码器的VHDL源代码

使用Vivado License Manager时Vivado的错误信息

Vivado License Manager在使用Vivado License Manager时,如....
的头像 FPGA交流平台 发表于 09-12 15:15 527次 阅读

新手求助FPGA画板bank电压问题?

小弟在网上查询资料说FPGA不同bank独立供电,在参考的原理图中看到在bank3中34脚 IO_L1N_VREF_3未接电压,然而这个b...
发表于 09-10 19:04 2145次 阅读
新手求助FPGA画板bank电压问题?

verilog语言如何给一个数组赋值呢,新手求助,感谢各位大佬!

给定一组数据,比如1024个8位数据,需要在后续调用,因此希望定义一个位宽为8,个数1024的数组,但是因为实际需求不能用$readmem...
发表于 09-09 18:22 1170次 阅读

Vivado调用Questa Sim或ModelSim仿真小技巧

Vivado调用Questa Sim或ModelSim仿真中存在的一些自动化问题的解决方案。 Viv....
的头像 FPGA之家 发表于 09-02 10:12 494次 阅读
Vivado调用Questa Sim或ModelSim仿真小技巧

基于VHDL语言的IP核验证

在IC(integrated circuit.集成电路)发展到超大规模阶段的今天,基于IP(Intellectual Property,知识产权)核的IC设计及其...
发表于 09-01 19:32 707次 阅读

如何追溯同一时钟域内partial false path的来源

随着设计复杂度和调用IP丰富度的增加,在调试时序约束的过程中,用户常常会对除了自己设定的约束外所涉及....
的头像 算法与数据结构 发表于 08-23 11:31 2019次 阅读
如何追溯同一时钟域内partial false path的来源

小鸟科技借助Xilinx Kintex® FPGA打造高性价比4K60无损分布式解决方案

赛灵思FPGA平台出色的性能和简洁易用的 Vivado™开发工具,助力小鸟科技将业界领先的专业音视频....
发表于 08-20 14:22 754次 阅读
小鸟科技借助Xilinx Kintex® FPGA打造高性价比4K60无损分布式解决方案

如何调试设计中的时钟域交汇问题

本篇博文中的分析是根据客户真实问题撰写的,该客户发现即使时序已得到满足的情况下,硬件功能仍出现错误。....
的头像 思佳讯SkyworksSolutions 发表于 08-20 09:32 3330次 阅读
如何调试设计中的时钟域交汇问题

在Vitis中把Settings信息传递到底层的Vivado

本篇文章来自赛灵思高级工具产品应用工程师 Hong Han. 本篇博文将继续介绍在Vitis中把Se....
的头像 算法与数据结构 发表于 08-13 14:35 2025次 阅读

一文解析Vivado的三种封装IP的方式

Vivado提供了三种封装IP的方式:(1)将当前工程封装为IP;(2)将当前工程中的BD(IPI ....
的头像 OpenFPGA 发表于 08-10 18:09 1133次 阅读
一文解析Vivado的三种封装IP的方式

基本的时序约束和STA操作流程

一、前言 无论是FPGA应用开发还是数字IC设计,时序约束和静态时序分析(STA)都是十分重要的设计....
的头像 麻辣软硬件 发表于 08-10 09:33 724次 阅读
基本的时序约束和STA操作流程

vivado点击xsetup.exe没有反应如何解决

1、vivado点击xsetup.exe没有反应 原因1:vivado安装文件存放路径过长 解决方法....
的头像 麻辣软硬件 发表于 08-09 18:11 831次 阅读

在Vivado中Block Design如何改名称?

在一个Demo中找到一个工程叫petalinux_sd,我将它另存为My_Work,可是其中的Block Design仍然叫petalinux_sd,其顶层文件仍...
发表于 08-06 16:04 101次 阅读

VHDL与Verilog硬件描述语言如何用TestBench来进行仿真

VHDL与Verilog硬件描述语言在数字电路的设计中使用的非常普遍,无论是哪种语言,仿真都是必不可....
的头像 FPGA设计论坛 发表于 08-04 14:16 317次 阅读

Vivado中综合,实现,编程和调试工程可能会出现的问题及解决方案

Xilinx公司的IDE(集成开发环境) Vivado用处广泛,学会使用Vivado对FPGA的学习至关重要,这里以PRX100-D开发板为例...
发表于 07-31 09:09 1010次 阅读

vivado有哪几种常用IP核?如何去调用它们

vivado三种常用IP核的调用当前使用版本为vivado 2018.3vivado的IP核,IP核(IP Core):Vivado中有很多IP核可以直接...
发表于 07-29 06:07 101次 阅读

Verilog HDL verilog hdl和vhdl的区别

Verilog HDL是一种以文本形式描述数字系统硬件的结构和行为的硬件描述语言,也可描述逻辑电路图....
的头像 如意 发表于 07-23 14:36 524次 阅读

教大家在Vivado中FFT IP调配置及应用

01 FFT简介 快速傅里叶变换 (Fast Fourier Transform,FFT), 即利用....
的头像 FPGA之家 发表于 07-23 14:29 451次 阅读
教大家在Vivado中FFT IP调配置及应用

Socionext将选用Flex Logix嵌入式eFPGA用于5G无线基站平台

摘要 近日,Flex Logix宣布与Socionext签署协议,Socionext获得其EFLX ....
的头像 Socionext 发表于 06-25 10:47 630次 阅读

浅析Vivado在非工程模式下的FPGA设计流程

参考:UG892 UG835 Vivado集成开发工具为设计者提供了非工程模式下的FPGA设计流程。....
的头像 OpenFPGA 发表于 06-19 10:52 607次 阅读
浅析Vivado在非工程模式下的FPGA设计流程

一个工程可以同时使用.edf和IP吗

Q1 一个synplify综合得到的.edf,和vivado生成的RAM IP,(synplify综....
的头像 XILINX开发者社区 发表于 06-18 10:21 554次 阅读
一个工程可以同时使用.edf和IP吗

Verilog有哪几个版本?怎样去写出它?

众所周知,用于FPGA开发的硬件描述语言(HDL)主要有两种:Verilog和VHDL。
的头像 FPGA之家 发表于 06-15 16:12 700次 阅读

如何在Vivado下设置BITSTREAM配置信息

首先我们看一下如何在Vivado下设置BITSTREAM配置信息。这可以在综合之后进行。借助如下操作....
的头像 FPGA交流平台 发表于 06-15 14:26 699次 阅读
如何在Vivado下设置BITSTREAM配置信息

Vivado的XDC设置输出延时问题

Vivado 的XDC设置输出延时 Vivado 的XDC设置输出延时,用于输出伴随时钟和数据的,数....
的头像 电子发烧友网工程师 发表于 06-09 17:28 678次 阅读
Vivado的XDC设置输出延时问题

浅析modelsim 自动化 高效独立仿真含vivado IP核的工程

1.modelsim编译vivado库 1)双击启动vivado软件,如下图操作。 2)Simula....
的头像 FPGA之家 发表于 06-01 11:33 644次 阅读
浅析modelsim 自动化 高效独立仿真含vivado IP核的工程

基于FPGA的电机测速的设计与实现

基于FPGA的电机测速的设计与实现介绍说明。
发表于 06-01 09:39 123次 阅读

基于Python的聚类分析及其应用简介

基于Python的聚类分析及其应用简介。
发表于 05-28 10:54 110次 阅读

一种基于FPGA的分频器的实现

一种基于FPGA的分频器的实现说明。
发表于 05-25 16:57 95次 阅读

基于FPGA的数字时钟实现

EDA技术使得电子线路的设计人员能在计算机上完成电路的功能设计、逻辑设计、时序测试直至印刷电路板的自....
发表于 05-25 16:28 105次 阅读

深度解读VHDL语言的卷积码和Viterbi译码的实现

介绍并用VHDL语言实现了卷积编码和维特比译码。根据编码器特征设计了一种具有针对性的简洁的维特比译码....
的头像 电子发烧友网工程师 发表于 05-12 15:22 517次 阅读
深度解读VHDL语言的卷积码和Viterbi译码的实现

Verilog数字系统设计教程(第2版)

Verilog数字系统设计教程(第2版)免费下载。
发表于 05-12 14:26 170次 阅读

简述HDL中循环语句的可综合性

在HDL的循环语句中,在指定的循环过程中,其代码块(循环体)输出同名信号,则构成顺序-循环(SAS-....
的头像 电子发烧友网工程师 发表于 05-12 09:27 578次 阅读
简述HDL中循环语句的可综合性

RTL中多时钟域的异步复位同步释放

1 多时钟域的异步复位同步释放 当外部输入的复位信号只有一个,但是时钟域有多个时,使用每个时钟搭建自....
的头像 FPGA开源工作室 发表于 05-08 09:59 728次 阅读
RTL中多时钟域的异步复位同步释放

如何用Python实现Vivado和ModelSim仿真自动化?

芯片设计从RTL代码一直到最后流片的GDSII文件,都是文本文件,因此,掌握文本分析处理语言是集成电....
的头像 FPGA开源工作室 发表于 05-03 10:06 490次 阅读
如何用Python实现Vivado和ModelSim仿真自动化?

详细分析Verilog编写程序测试无符号数和有符号数的乘法

有符号数的计算在 Verilog 中是一个很重要的问题(也很容易会被忽视),在使用 Verilog ....
的头像 FPGA之家 发表于 05-02 10:48 878次 阅读
详细分析Verilog编写程序测试无符号数和有符号数的乘法

探讨VHDL和Verilog模块互相调用的问题

1、 关于如何在VHDL模块调用一个Verilog模块 在VHDL模块声明一个要与调用的Verilo....
的头像 FPGA之家 发表于 04-30 14:06 1078次 阅读
探讨VHDL和Verilog模块互相调用的问题

使用matlab产生待滤波信号并编写testbench进行仿真分析

本讲使用matlab产生待滤波信号,并编写testbench进行仿真分析,在Vivado中调用FIR....
的头像 Hx 发表于 04-27 18:18 822次 阅读
使用matlab产生待滤波信号并编写testbench进行仿真分析

解析Vivado如何调用DDS的IP进行仿真

本次使用Vivado调用DDS的IP进行仿真,并尝试多种配置方式的区别,设计单通道信号发生器(固定频....
的头像 Hx 发表于 04-27 16:33 1226次 阅读
解析Vivado如何调用DDS的IP进行仿真

浅析Vivado的IP核DDS使用方式及注意事项

vivado提供了DDS IP核可以输出正余弦波形,配置方法如下
的头像 Hx 发表于 04-27 15:52 1318次 阅读
浅析Vivado的IP核DDS使用方式及注意事项

关于Vivado三种常用IP核的调用详细解析

vivado的IP核,IP核(IP Core):Vivado中有很多IP核可以直接使用,例如数学运算....
的头像 Hx 发表于 04-27 15:45 1955次 阅读
关于Vivado三种常用IP核的调用详细解析

关于Vitis使用教程详解

首先是安装,本教程分两个主要的平台(WIN10和Ubuntu)给出安装教程和源文件。
的头像 OpenFPGA 发表于 04-26 10:02 2436次 阅读
关于Vitis使用教程详解

浅谈基于FPGA的电子计算器系统设计(附代码)

导读 本篇介绍了一个简单计算器的设计,基于 FPGA 硬件描述语言 Verilog HDL,系统设计....
的头像 电子发烧友网工程师 发表于 04-23 11:44 1209次 阅读
浅谈基于FPGA的电子计算器系统设计(附代码)

Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程

作者:Harvest Guo来源:Xilinx DSP Specilist 本文通过对OpenCV中....
发表于 04-23 11:32 3891次 阅读
Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程

Vivado生成、固化烧录文件

Vivado生成、固化烧录文件方法说明。
发表于 04-21 11:08 159次 阅读

详解Vivado与Modelsim关联方法及器件库编译

在vivado中设置modelsim(即第三方仿真工具)的安装路径。在vivado菜单中选择“Too....
的头像 FPGA之家 发表于 04-15 10:10 982次 阅读
详解Vivado与Modelsim关联方法及器件库编译

Verilog HIDL的RTL设计风格指南资源下载

Verilog HIDL的RTL设计风格指南资源下载
发表于 04-13 10:09 152次 阅读

Xilinx_Vivado_zynq7000入门笔记

Xilinx_Vivado_zynq7000入门笔记说明。
发表于 04-08 11:48 217次 阅读

使用Synplify设计安全的VHDL状态机

Synplify的优势之一是有限状态机编译器。 这是一个强大的功能,不仅具有自动检测状态机中的状态的....
发表于 04-07 09:20 117次 阅读
使用Synplify设计安全的VHDL状态机