如果你正在使用vivado开发套件进行设计,你会发现综合设置中提供了许多综合选项。这些选项对综合结果有着潜在的影响,而且能够提升设计效率。为了更好地利用这些资源,需要仔细研究每一个选项的功能。本文将要介绍一下vivado的综合参数设置。
一、vivado综合参数介绍在vivado中,默认情况下,综合器会根据指定的目标芯片和设定的优化策略来产生最优的电路实现方案。常用的选项都可以在下图菜单中设置。
1、flatten_hierarchy这个参数决定了vivado综合工具将如何控制层次结构,一般默认为rebuilt,主要有以下3个参数选项:
(1)full
表示采用完全展平层次结构,只留下顶层。只保留顶层层次,执行边界优化 。
(2)none
表示采用不展平层次结构, 综合后的输出具有与原始rtl相同的层次结构,且不执行边界优化 。
(3)rebuilt
表示允许综合工具展平层次结构,然后根据原始rtl重建层次结构。 此值允许跨边界优化的qor优势,最终层次结构与rtl类似,便于分析。
2、gated_clock_conversion控制综合工具的转换时钟逻辑能力,使用门控时钟转换还需要使用rtl属性才能工作。
3、fsm_extraction控制状态机的编码方式综合方式,默认值为auto,此时vivado会自动推断最佳的编码方式,它有以下几个选项:关闭、sequential、独热码、自动等等,其设定的fsm编码方式优先于hdl代码中定义的方式。
4、fsm_encoding设置针对某个状态机设定编码方式,综合属性 -fsm_coding的优先级高于-fsm_extraction,但如果hdl代码中已经定义了编码方式,该设定将无效。
5、 keep_equivalent_registers设置是否保留等效寄存器,equivalent registers也就是等效寄存器,共享输入数据的寄存器。 勾选时,等效寄存器不会合并; 不勾选时,等效寄存器会被合并。
6、resource_sharing设置算术运算通过资源共享来优化设计资源,默认值为auto。
7、control_set_opt_threshold设置是否开启控制集的优化,以减少控制集的个数,但会增加lut资源消耗。 触发器的控制集由时钟信号、复位/置位信号和使能信号构成,通常只有{clk,set/rst,ce}均相同的触发器才可以被放置在一个slice中,但开启这个参数后3个触发器会被放置到同一个slice中。
8、no_lc是否开不允许出现lut整合。 通过lut整合可以降低lut的资源消耗,但也可能导致布线拥塞。 因此,xilinx建议,当整合的lut超过了lut总量的15%时,应考虑勾选-no_lc,关掉lut整合。
9、shreg_min_size影响移位寄存器的实现方式,默认值为3。 当hdl代码描述的移位寄存器深度大于此设定值时,将采用“触发器+srl+触发器”的方式实现,其中srl由lut实现。
10、bufg控制综合时推断出来的bufg数量。 当综合过程中看不到设计网表中的其他bufg时,vivado设计工具会使用此选项,可以推断出指定的数量,并跟踪在rtl中实例化的bufg数量。 例如,如果bufg选项设置为12并且在rtl中实例化了三个bufg,则该工具最多可以推断出9个bufg。
11、fanout_limit设置全局信号高扇出数目,但当hdl代码中有max_fanout时,该属性失效。
12、directive设置不同的优化策略,主要选项参数如下:
default,默认设置。runtimeoptimized,执行最短时间的优化选项,会忽略一些rtl优化来减少综合运行时间。areaoptimized_high/medium,执行一些通用的面积优化。alternateroutability,使用算法提高布线能力,减少muxf和carry的使用。areamaplargeshiftregtobram,将大型的移位寄存器用块ram来实现。areamultthresholddsp,会更多地使用dsp块资源。fewercarrychains,位宽较大的操作数使用查找表(lut)实现,而不用进位链。13、max_bram设定当前工程的最大块ram数量,通常在设计中有黑盒或第三方网表时使用,默认设置为-1时,表示使用当前芯片的最大块ram数量。
max_uram:指定ultra ram最大使用个数。 max_bram_cascade_height:指定bram最大级联数。 max_uram_cascade_height:指定uram最大级联数。
14、max_dsp设定当前工程的胡最大块dsp的数量。 与max_ram一样。
15、cascase_dsp控制sum dsp块输出中的加法器,默认为auto。 auto表示使用块内置加法器链计算dsp输出的总和。 tree强制在结构中(fabric)实现总和。
16、tcl.pre和tcl.post在综合之前和之后立即运行的tcl文件
二、重要选项介绍1、report setting设置是否开启综合资源消耗报告,默认开启即可,如果不需要看,可以关闭。
2、setting设置中的strategy这里可选不同优化策略设计,使得设计满足相应的需求,如下图所示:
(1) “速度优化”:使时钟频率最快。 面积和功耗可能更大。
(2) “平衡优化”:在速度和面积之间取得平衡。
(3) “面积优化”:使元素数量最少,但可能会影响时钟速度和功耗。
(4) “功耗优化”:降低功耗。
三、hdl代码设置综合属性1、srl_stylesrl_style可设定移位寄存器的不同实现方式,主要有以下几种方式:
(* srl_style = “srl_reg” ),实现移位寄存器为srl + ff结构。
( srl_style = “reg_srl” ),实现移位寄存器为ff + srl结构。
( srl_style = “reg_srl_reg” ),实现移位寄存器为ff + srl + ff 结构。
( srl_style = “register” ),实现移位寄存器为纯ff结构。
( srl_style = “srl” *),实现移位寄存器为纯srl结构。
其中srl可以有效减小面积,相比级联寄存器的结构性能要更好,如果再加了ff,时序性能更好。
2、ram_style和rom_style定义存储器实现方式,主要有以下几种方式:
(*ram_style = block *),表示用block ram实现
(*ram_style = reg *),表示用寄存器实现
(*ram_style = distributed *),表示用分布式 ram实现
(*ram_style = uram *),表示用uram实现
3、use_dsp48定义实现这部分算术运算使用dsp资源进行实现,常用形式为:( use_dsp48=“yes” )。
(*use_dsp48=“yes”*) reg test;4、dont_touchdont_touch可以防止相关内容被逻辑优化,常用形势为:( dont_touch =“yes” )
(*dont_touch =“yes”*) reg test;5、max_fanout设置当前信号的最大扇出数目,常用形式为:(* max_fanout = “20”*)
(*max_fanout = 50 *) reg test;
英特尔Gaudi2C处理器或为Gaudi2的简化版,Gaudi3预计2024年面世
坚果Pro怎么样?坚果Pro最新消息:情怀接地气,坚果pro一定会是锤子最好卖的产品
新唐科技M4TKLG6AE单片机简介
熔喷无纺布在线瑕疵检测系统的原理及功能
发光二极管的仿真分析
Vivado综合参数设置
使用Hi-Z缓冲器简化模拟前端
东软集团推出车道级导航OneCoreGo3.0
变则通,国内先进封装大跨步走
鸿蒙操作系统及华为全场景新品发布会即将到来,硬件生态发展有望迎来加速度
食品甲醛含量检测仪设备的特点及功能介绍
半导体功率器件封装结构热设计综述
基于PC和PLC原理完成集散控制(DCS)
戴森推出新款台灯 可自动调节灯光的色温与亮度
板上钉钉!下一代 iPhone 将使用改进的 5nm+ 工艺、X60 5G 调制解调器
高频内存AMD处理器安装方式分享
光库科技公司与Lumentum签署了铌酸锂系列高速调制器产品购买协议
光纤光栅,光纤光栅是什么意思
浅谈高土壤电阻率地区的接地装置
2020年中国碳性电池行业发展现状分析,碳性电池出口规模震荡下行