Vivado从此开始(进阶篇)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.2 −control_set_opt_threshold

−control_set_opt_threshold在综合设置中的位置如图1.2所示。

img

图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运行即可。

img

图1.3

对控制集百分比的说明(适用于7系列FPGA和UltraScale FPGA)如图1.4所示。从图中可以看到:当控制集的百分比超过15%时,需要降低控制集。

img

图1.4

计算控制集百分比的步骤如下:

❶ 打开综合阶段或实现阶段生成的DCP(Design Checkpoint,Vivado专用网表文件),通过report_control_sets −verbose命令获取unique_ctrl_set,即unique control sets值,如图1.5所示。

img

图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文件中,并将文件设置为综合阶段使用。