Vivado综合设置之-no_lc的疑惑

时间:2023-01-03 22:59:41

一. -no_lc的设置位置

-no_lc的设置位置在Settings -> Synthesis的Options界面下,见下图。

Vivado综合设置之-no_lc的疑惑

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

二. 测试代码(8-3编码器)

module top (

   output none_on,

   output out2,

   output out1,

   output out0,

   input h,

   input g,

   input f,

   input e,

   input d,

   input c,

   input b,

   input a

);

   wire [3:0] outvec;

   assign outvec = h? 4'b0111:g? 4'b0110:f? 4'b0101:e? 4'b0100:d? 4'b0011:c? 4'b0010:b? 4'b0001:a? 4'b0000:4'b1000;

   assign none_on = outvec[3];

   assign out2 = outvec[2];

   assign out1 = outvec[1];

   assign out0 = outvec[0];

endmodule

三. 不勾选no-lc时有LUT整合

3.1 原理图(xc7z045环境)

Vivado综合设置之-no_lc的疑惑

3.2 资源利用率(xc7z045环境)

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

Vivado综合设置之-no_lc的疑惑

3.3 Device视图(xc7z045环境)

原理图中2个红色MARK的LUT4整合为下图的LUT5。

Vivado综合设置之-no_lc的疑惑

四. 勾选no-lc时无LUT整合


4.1 原理图(xc7z045环境)

Vivado综合设置之-no_lc的疑惑

4.2 资源利用率(xc7z045环境)

Vivado综合设置之-no_lc的疑惑

4.3 Device视图(xc7z045环境)

Vivado综合设置之-no_lc的疑惑

五. 疑惑

为何勾选或者不勾选no-lc,效果相同...