FPGA設(shè)計之控制集優(yōu)化詳解
一、前言
????????在工程設(shè)計優(yōu)化中,綜合階段優(yōu)化中有一項常見的優(yōu)化,控制集(control set)優(yōu)化,在vivado的Synthesis中有對該配置項的解釋,如下圖

大意為該配置項為觸發(fā)器的同步控制集門限設(shè)置,默認(rèn)值為auto,也可設(shè)置為0-16之間的其他數(shù)字,數(shù)字設(shè)置的越大,優(yōu)化的控制集將更多,最終存在的控制集將更少,設(shè)置為0表示不進行優(yōu)化。

二、Control Set控制集
????????控制集即為觸發(fā)器控制信號的集合,觸發(fā)器的控制信號包括時鐘信號,使能信號,置位/復(fù)位信號。以器件xc7vx485tffg1157-1為例,Slice的結(jié)構(gòu)如下圖,右側(cè)8個為寄存器。因為一個Slice只有一路的CK信號,一路CE信號,一路SR信號輸入,因此,在一個Slice中的FF是共用CK,CE,SR信號,也只有FF使用相同的CK,CE,SR信號才能放置到同一個Slice中。

三、Control Set控制集優(yōu)化
????????對控制集的優(yōu)化也即是根據(jù)設(shè)置的Control_set_opt_threshold值調(diào)整的控制集的數(shù)量,通過第二章可知,如果控制集的信號完全相同的寄存器,可放入同一個slice中。設(shè)置了控制集優(yōu)化后,對于一些同步復(fù)位,同步置位和同步使能信號,當(dāng)數(shù)量小于設(shè)置的Control_set_opt_threshold值時,也可以放置到同一個slice中。
????????下圖中,左側(cè)中是兩個處于兩個Slice中的寄存器,一個是同步復(fù)位,一個是同步使能,二者的時鐘信號都是clk0,。通常情況因為兩個寄存器的復(fù)位和使能信號不同,因此放置在兩個slice中。設(shè)置優(yōu)化后,復(fù)位和使能信號都是通過前面添加一個LUT來實現(xiàn)同步復(fù)位和同步使能的作用,對應(yīng)寄存器的RST和使能端口不用。

????????為何前面增加使用一個LUT可以實現(xiàn)同步復(fù)制或同步使能的效果?以同步復(fù)位為例。

????????假設(shè)原先直接使用寄存器的RST信號輸入時,寄存器數(shù)據(jù)輸入D和RST信號的邏輯真值表如下,使能信號高電平時有效,復(fù)位信號RST高電平復(fù)位,即只有在使能信號高電平,復(fù)位信號為低電平時,輸入才有效,表中0/1表示為0或1。

????????優(yōu)化增加了LUT后,通過LUT的INIT值來控制同步復(fù)位,寄存器的輸入D1和復(fù)位信號RST1是連接到了LUT的I0和I1輸入口,LUT的輸出為Q0,即只要保證Q0與D1和RST1的邏輯真值表如下表。即只要RST為1時,LUT的輸出Q0為1,RST為0時,輸出等于輸入D1,即保證了復(fù)位信號RST的有效性。下述邏輯最終是在LUT的INIT值上體現(xiàn)。

四、優(yōu)劣
? ? ? ? 通過第三節(jié)的分析可知,優(yōu)化后的寄存器放置到了同一個Slice中,在時序上可能會有一定的提高作用,缺點也是顯而易見的,需要消耗更多的LUT資源。
????????根據(jù)xilinx的經(jīng)驗,當(dāng)工程的控制集小于整個芯片控制集數(shù)目的7.5%時,可以無需優(yōu)化,當(dāng)大于整個芯片控制集數(shù)目的15%時,需要降低控制集數(shù)目。