Vivado综合设置选项分析:no_lc
- 2019 年 10 月 31 日
- 筆記

Xilinx FPGA内部LUT6的结构决定了对于一个x输入布尔表达式和一个y输入布尔表达式,只要满足x+y≤ 5(相同变量只算一次),这两个布尔表达式就可以放置在一个LUT6中实现,此时A6=1,运算结果分别由O6和O5输出。如下图所示:

默认情况下,当存在共享变量时,Vivado会自动把这两个布尔表达式放在一个LUT6中实现,称之为LUT整合(LUT Combining)。否则,仍占用两个LUT6分别实现每个布尔表达式。但是,当-no_lc(No LUT Combining)被勾选时,则不允许出现LUT整合。通过LUT整合可以降低LUT的资源消耗率,但是也可能导致布线拥塞。
在实现后的报告中,选择下图中的using O5 and O6可查看整合的LUT6个数。

相应地,在Vivado模块综合技术中,有个类似地选项LUT_COMBINING,其值可以是0或1。其中1表示使能LUT Combining。这样可以灵活地设定对某些模块使能或者不使能LUT Combining。一个可能的判断依据是设计的布线拥塞报告。
结论:
LUT Combining的好处是降低了LUT的资源利用率;坏处是可能会导致布线拥塞。