Vivado综合设置之-no_lc
创始人
2024-05-09 02:33:59
0次

本文详细讨论了当勾选或者不勾选-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_belincr 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数量。

上一篇:前端项目-小米商城

下一篇:CSS基础

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...