Vivado综合设置之-no_lc

本文详细讨论了当勾选或者不勾选-no_lc时的差异,也详细介绍了using O5 and O6以及using O6 output only的具体含义。

-no_lc表示NO LUT Combining,即无LUT整合,默认不勾选,即默认有LUT整合。LUT整合可以减少对LUT的使用量,但也可能导致布线拥塞( yōnɡ sè)。

在Reports->Report Utilization中可通过using O5 and O6查看整合的LUT6的使用个数。

通过using O6 output only可查看只使用了O6输出引脚的LUT6的使用个数,也即没有整合的LUT6的使用个数。

目录

结论

测试代码(4位带进位端的加法器)

当-no_lc不勾选(默认情况)

原理图

 资源利用率

Device视图

资源利用率中LUT数量的计算方法

当-no_lc勾选

原理图

 资源利用率

Device视图


结论

1. 当不勾选-no_lc,则有LUT整合,此时资源利用率中的LUT数量常常小于我们在综合后的原理图中用眼睛数出来的LUT数量,这是因为后者需要减去整合后的LUT。

2. 当勾选-no_lc,则无LUT整合,此时资源利用率中的LUT数量等于我们在综合后的原理图中用眼睛数出来的LUT数量。

3. 无论勾选-no_lc与否,综合后和实现后的Schematic总是一样的,不同之处仅体现在Device视图中。

4. 无论勾选-no_lc与否,本文中的2个原理图中均带有IBUF和OBUF,本文发现的一个问题是若在综合设置中将More Options设置为-mode out_of_context(见下图),

 即此时产生的原理图中不带IBUF和OBUF,此时-no_lc的作用似乎是无效的,原因待后续确认。因此本文的More Options未设置。

测试代码(4位带进位端的加法器)

module top(
    input [3:0] X,
    input [3:0] Y,
    output [3:0] sum,
    output C
);
    assign {C,sum} = X + Y;
endmodule

当-no_lc不勾选(默认情况)

原理图

上图中不同颜色的MARK仅为了便于描述,①和②用于描述LUT的整合情况。

 资源利用率

 LUT用了4个,其中,

using O5 and O6 <> LUT as logic的数量为2,这个表示整合后的LUT使用个数。

using O6 output only <> LUT as logic的数量为2,这个表示未经过整合的LUT使用个数。

 以下进一步说明。

Device视图

 上图大红框框表示一个SLICEM,上图的颜色MARK与原理图中的颜色一一对应,上图的①可以看出绿色MARK和浅蓝色MARK被整合进一个LUT6中,上图的②可以看出粉色MARK和深蓝色MARK被整合进一个LUT6中,这里的①和②与原理图中的①和②分别对应。

继续放大上图,得到下图:

 可以看出,右上图、右下图均是整合后的LUT,因此同时使用了O5和O6,而左上和左下角均是未整合后的LUT,因此仅使用了O6。

这就是using O5 and O6以及using O6 output only都为2的原因。

资源利用率中LUT数量的计算方法

使用如下通用脚本可计算本例的LUT个数=4,复制下方脚本代码,直接粘贴至Tcl Console运行即可。

#初始化计数0
set count 0
#找到设计中被使用的LUT6
set bel_list [get_bels -regexp {SLICE_X\d+Y\d+/(A|B|C|D|E|F|G|H)6LUT} -filter {IS_USED == 1}]
#找到这些被使用的LUT6中LUT5也被使用的情形,并统计被使用的LUT5个数,从而获得了Combined LUT的个数
set combined_lut [list]
set no_combined_lut [list]
foreach bel $bel_list {
	set second_bel [string replace $bel end-3 end-3 5]
	if {[get_property IS_USED [get_bels $second_bel]] == 1} {
	 lappend combined_lut $second_bel
	 incr count
	} else {
	  lappend no_combined_lut $bel
	}
}
puts $count
#从总共被使用的LUT(total_used_luts)中减去Combined LUT(因为Combined LUT被统计了两次)即为实际被使用的LUT
set total_used_luts [llength [get_bels -filter {NAME =~ SLICE*LUT && IS_USED == 1}]]
set final_logic_lut_count [expr $total_used_luts - $count]
puts $final_logic_lut_count

当-no_lc勾选

原理图

 资源利用率

Device视图

 

 继续放大上图,得到下图:

 因为-no_lc被勾选,所以无LUT整合,所以每个LUT6都只使用了O6,也可以发现当无LUT整合时,资源利用率中的LUT数量=综合后的原理图中眼睛数出来的LUT数量。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力不期待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值