Vivado从此开始(进阶篇) - (EPUB全文下载)
文件大小:0.16 mb。
文件格式:epub 格式。
书籍内容:
Vivado从此开始(进阶篇)
第1章 综合阶段
第2章 实现阶段
第3章 高效设计
第4章 时序约束
第5章 时序收敛
第6章 SSI器件设计
第7章 应用技巧
后 记
封底
第1章 综合阶段
1.1 综合设置分析
1.1.1 −flatten_hierarchy
−flatten_hierarchy在综合设置(Synth Design)中的位置如图1.1所示。
图1.1
−flatten_hierarchy有三个可选值,每个值的具体含义如表1.1所示[1]。通常来讲,当−flatten_hierarchy为none时,工具进行的优化最少,消耗的资源最多,层次保留最为完整。相反,当其为full时,工具进行的优化最多,消耗的资源最少,层次完全被打平(只能看到顶层)。从这个角度来说,−flatten_hierarchy的三个值体现了工具对设计层次完整性和优化力度的折中。在通常情况下,使用默认值rebuilt即可。
表1.1
−flatten_hierarchy是一个全局设置(凡是出现在综合设置中的均为全局设置),意味着对设计中的所有模块生效。如果期望模块中的某个层次使用与−flatten_hierarchy的可选值不同的层次优化方式,则要用到综合属性(Synthesis Attribute)中的KEEP_HIERARCHY,它只能在RTL代码中使用,其优先级高于−flatten_hierarchy。
在Verilog版中,KEEP_HIERARCHY的使用方法如下。
(* KEEP_HIERARCHY="yes" *) module uart_r ();
在VHDL版中,KEEP_HIERARCHY的使用方法如下。
作用于entity:
attribute KEEP_HIERARCHY : string;
attribute KEEP_HIERARCHY of uart_rx : entity is "yes";
作用于Instance:
attribute KEEP_HIERARCHY : string;
attribute KEEP_HIERARCHY of uart_rx_u0 : label is "yes";
结论:
① 对于−flatten_hierarchy,通常使用默认值rebuilt即可。使用默认值rebuilt的一个好处是,在使用Vivado Logic Analyzer 时,可快速根据层次找到待观测信号。
② KEEP_HIERARCHY的优先级高于−flatten_hierarchy,因此,可根据设计需求灵活地对某些层次设置此属性。
1.1.2 −control_set_opt_threshold
−control_set_opt_threshold在综合设置中的位置如图1.2所示。
图1.2
触发器的控制集由时钟信号、复位/置位信号和使能信号构成。在通常情况下,只有{clk,rst/ set, ce}均相同的触发器才可以被放置在一个SLICE中。但是,对于同步复位、同步置位和同步使能信号,Vivado会根据−control_set_opt_threshold的设置进行优化,其目的是减少控制集的个数。优化的方法如图1.3所示。在优化之前,3个触发器被分别放置在3个SLICE中;而在优化后,3个触发器被放置在1个SLICE中,但此时需要占用LUT(Look Up Table,查找表)资源。
−control_set_opt_threshold的值为控制信号(不包括时钟)的扇出个数,表明对小于此值的同步信号进行优化。显然,此值越大,被优化的触发器越多,被占用的LUT也越多。若此值为0,则不进行优化。在通常情况下,按默认值auto运行即可。
图1.3
对控制集百分比的说明(适用于7系列FPGA和UltraScale FPGA)如图1.4所示。从图中可以看到:当控制集的百分比超过15%时,需要降低控制集。
图1.4
计算控制集百分比的步骤如下:
❶ 打开综合阶段或实现阶段生成的DCP(Design Checkpoint,Vivado专用网表文件),通过report_control_sets −verbose命令获取unique_ctrl_set,即unique control sets值,如图1.5所示。
图1.5
❷ 通过两条命令获得当前芯片中SLICE的个数slice_num:
set part [get_property PART [current_design]]
set slice_num [get_property SLICES [get_parts $part]]
❸ 计算控制集百分比,即unique_ctrl_set/slice_num*100%。
此外,CONTROL_SET_THRESHOLD(可选值为0~128)也是综合设置中的一个选项。利用该选项可以根据设计需求灵活地对某些模块的控制集进行控制。例如:
set_property BLOCK_SYNTH. CONTROL_SET_THRESHOLD { 8 } [get_cells uart_rx]
set_property BLOCK_SYNTH. CONTROL_SET_THRESHOLD { 16 } [get_cells uart_tx]
可将上述两条语句写入一个单独的XDC文件中,并将文件设置为综合阶段使用。
1.1.3 −no_lc
对于两个布尔表达式x和y,只要满足x+y <= 5(相同变量只算一次),则这两个布尔表达式就可以放置在一个LUT6(6输入查找表)中实现。此时A6=1,运算结果分别由O6和O5输出。
在默认情况下(不勾选−no_lc),当存在共享变量时,Vivado会自动把这两个布尔表达式放在一个LUT6中实现,称之为LUT整合(LUT Combining);否则,仍占用两个LUT6,分别实现每个布尔表达式。但是,当勾选−no_lc(No LUT Combining)时,则不允许出现LUT整合,如 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Vivado从此开始(进阶篇) - (EPUB全文下载)