李 斌,張 磊,張 勇
(中國電子科技集團(tuán)公司第五十四研究所,河北石家莊050081)
近年來,數(shù)字集成電路設(shè)計工藝越來越先進(jìn),電路規(guī)模越來越大,工作頻率越來越高,如何使得時序滿足設(shè)計要求,成為IC設(shè)計者必須考慮的問題。對于一些大規(guī)模的數(shù)據(jù)運算電路,其中包含很多運算單元,這些運算單元可能是相同結(jié)構(gòu)的,但是在不同的運算階段,輸入數(shù)據(jù)可能不同,各個運算單元處于的工作狀態(tài)是不一樣的;為了設(shè)計的實現(xiàn),設(shè)計者一般會選擇數(shù)據(jù)運算階段指示信號來做為全局控制信號,各個運算單元會根據(jù)當(dāng)前全局控制信號的狀態(tài)值來確定各自的工作狀態(tài)。
在超大規(guī)模電路中,全局控制信號產(chǎn)生來源可能是外部輸入信號,或者是內(nèi)部模塊生成,但是都連接到了大部分的二級模塊,這些二級模塊的工作狀態(tài),就由當(dāng)前的全局控制信號的狀態(tài)值來進(jìn)行變換。
全局控制信號的示意圖如圖1所示,當(dāng)全局控制信號進(jìn)入不同的狀態(tài)時,相關(guān)運算單元處于相應(yīng)的工作模式。
圖1 全局控制信號示意圖
全局控制信號的邏輯描述語言如下:
if GCS=′1′then
statement;
end if;
上述語言中的信號GCS為全局控制信號。對于全局控制信號的使用,在邏輯設(shè)計階段,由于沒有時序信息,通過軟件仿真只要滿足了功能要求即可。
在綜合時,由于沒有物理走線的信息,只采用了一個平均的線負(fù)載模型,走線延時相對于門延時較小,可以不計算在內(nèi);如果時序要求比較寬松,全局控制信號就可以滿足約束的要求。
但是到了物理后端的布局布線階段,這時就有了真實的走線信息。由于全局控制信號連接了大部分的二級模塊,是基于全片進(jìn)_行布線的(如圖1所示)。無論怎么擺放,都會出現(xiàn)一些被控制模塊相對距離較遠(yuǎn)的情況(如圖1中的運算單元7),導(dǎo)致全局控制信號的走線延時過大,甚至大于門延時;當(dāng)工作時鐘頻率較高時,全局控制信號無法在一個時鐘周期內(nèi)收斂,就出現(xiàn)了時序違反,設(shè)計的功能就無法完成。所以如何使全局控制信號在布線階段能夠滿足時序要求,成為了設(shè)計者重點關(guān)注的問題。
在邏輯設(shè)計時,完成一個模塊的編寫之后,會使用仿真軟件進(jìn)行功能仿真,在對軟件仿真得到的波形仔細(xì)分析之后可以發(fā)現(xiàn),雖然全局控制信號已經(jīng)有效,運算單元進(jìn)入工作狀態(tài),但是此刻運算數(shù)據(jù)還沒有到來,該運算單元模塊依然空閑,即程序沒有翻轉(zhuǎn)。在等待了若干時鐘周期之后,運算數(shù)據(jù)到來,才真正的開始工作,可以利用這個等待時間來改善全局控制信號的時序。
采用以下方法對時序緊張的全局控制信號進(jìn)行處理:
在被控制的二級模塊中,生成一個合適的、時序滿足要求的使能信號。在邏輯描述中,把全局控制信號和二級模塊使能信號結(jié)合使用,并且保證二級模塊使能信號的控制優(yōu)先級始終高于全局控制信號,即二級模塊使能信號有效時才去檢測全局控制信號的邏輯;同時要求全局控制信號的變化一定在二級模塊使能信號有效之前若干周期時發(fā)生。這樣就可以把全局控制信號設(shè)置為具有多周期路徑特性的信號了。
可設(shè)置多周期路徑的全局控制信號的邏輯描述語言描述如下:
if LOCAL_ EN=′1′then
if GCS=′1′then
statement;
end if;
end if;
上述信號LOCAL_EN為二級模塊電路內(nèi)部的控制信號,GCS為全局控制信號。
這樣的寫法可以在綜合時使用指令來改善布線時的時序壓力。
在綜合工具Design_Compiler 手冊中,有一條設(shè)置多周期路徑(Multicycle Path) 屬性的指令,該指令可以將一個普通信號設(shè)置為具有多周期路徑特性的信號。具有該特性的信號,在時序檢查時,時序收斂是在多個周期內(nèi)完成的。
設(shè)置多周期路徑屬性的約束指令如下:
set_multicycle _pathnsetup/-hold-from clkthrough gcs
指令中,set_multicycle _path 為設(shè)置多周期的命令;clk為檢查時鐘;gcs為全局控制信號;setup為建立時間的檢查項;hold為保持時間的檢查項;n為周期數(shù),這個數(shù)值一定要小于設(shè)計中最大容忍的時鐘周期數(shù),也就是當(dāng)二級模塊使能信號變化時,全局控制信號就已經(jīng)至少穩(wěn)定了n個周期。
當(dāng)指令中n為1時,全局控制信號時序收斂就是一個周期內(nèi)完成的,那么就和其他信號一樣進(jìn)行一個周期內(nèi)的時序檢查;大于1時,只要在n個時鐘周期內(nèi)完成收斂都可以滿足時序檢查。這樣就大大減輕了布線時的時序壓力。
選取一個已經(jīng)實現(xiàn)的電路來進(jìn)行舉例分析,該電路的頻率為250 M,時鐘的周期為4 ns,電路的規(guī)模為500萬門,流片的工藝為Gsmc0.18 μ m。電路的功能為實現(xiàn)64 K點的快速傅里葉變換(FFT)運算,采用4組并行基16蝶算單元,完成一組64 K數(shù)據(jù)FFT運算,內(nèi)部包含了大量的數(shù)據(jù)運算通道。
設(shè)計中使用的仿真工具為Modelsim,綜合工具為Design_Compiler ,布局布線工具為Encounter,時序分析工具為Prime Time。
由于在FFT運算中存在多級蝶形運算,為了指示電路處于哪一級的運算,電路產(chǎn)生了一個全局控制信號(i_tran_ctrl/ Stage),并連接到了大多數(shù)的二級模塊,該信號控制著電路中的蝶算單元進(jìn)入不同的工作狀態(tài)。
首先不對全局控制信號Stage做多周期路徑的設(shè)置,然后使用 Design_Compiler 進(jìn)行電路的綜合,交付物理設(shè)計人員使用Encounter進(jìn)行布局布線,最終使用PT(Prime_Time) 對布線結(jié)果進(jìn)行時序分析。時序報告中存在著很多的時序違反,檢查其中一條路徑,該路徑經(jīng)過了全局控制信號Stage,時序分析結(jié)果如表1所示。
表1 非多周期路徑描述布線后的結(jié)果
可以看出,由于此路徑需要在一個時鐘周期內(nèi)完成收斂,而路徑過長,走線延時較大,結(jié)果導(dǎo)致了時序違反。
接下對算法以及電路結(jié)構(gòu)進(jìn)行分析,發(fā)現(xiàn)在各個運算蝶形運算單元進(jìn)行運算時,當(dāng)全局控制信號(Stage)有效之后,并不是立即就進(jìn)行運算,而是等待了若干時鐘周期之后才開始運算。所以就生成了一個運算使能信號(Rb _en _in),這個使能信號確保在每次運算過程中都一直有效,且與當(dāng)前運算級數(shù)無關(guān)。使用Modelsim工具進(jìn)行仿真,得到的波形如圖2所示。
圖2 64 KFFT電路仿真
選擇該使能信號(Rb _en_in)做為二級模塊使能信號,在邏輯描述中的控制優(yōu)先級高于全局控制信號,并且通過仿真得知,該使能信號變換前7個周期,全局控制信號Stgae就已經(jīng)穩(wěn)定了,所以只要設(shè)置多周期路徑的時序收斂檢查周期數(shù)小于7即可滿足要求。
在使用軟件仿真工具對電路功能仿真完備且無誤之后,在綜合時加入對全局控制信號設(shè)置多周期路徑的指令,設(shè)置的多周期路徑指令如下:
set_multicycle _path 4-setup/-hold-from i_top/i_tran _ctrl/ sys _clk through i__top/i tran _ctrl/stage
布線后再次對該路徑進(jìn)行時序分析,其結(jié)果顯示如表2所示。
表2 設(shè)置多周期路徑布線后的結(jié)果
可以看出,由于對全局控制信號Stage設(shè)置了多周期路徑的屬性,在進(jìn)行時序檢查時,Stage到達(dá)的時間依然是6.3 ns左右,但是時序檢查的sys _clk長度,由一個時鐘周期的4 ns變更為了4個時鐘周期的16 ns;即只要被檢查的全局控制信號Stage在4個周期內(nèi)到達(dá),都是滿足時序要求的。
由此全局控制信號的時序就變得寬松了,在布局布線階段不再是布線的難點,并且對電路功能本身及電路結(jié)構(gòu)沒有負(fù)面影響,只是增加了設(shè)計初期的架構(gòu)分析和綜合時指令的插入。
如果在設(shè)計中存在時序緊張的全局控制信號,那么針對不同的二級模塊生成不同的二級模塊使能信號,通過對全局控制信號設(shè)置多周期路徑的方式可以更好地實現(xiàn)時序收斂。熟練地掌握并應(yīng)用這門技術(shù),會減少設(shè)計時的難度,更好地實現(xiàn)設(shè)計功能。
[1]Release U-2005.06-QA.Synopsys Design Compiler User Guide[S].
[2]ReleaseU-2005.06-QA.Synopsys PowerCompilerUser Guide[S].
[3]Release U-2005.06-QA.SynopsysPrime Time User Guide[S].
[4]高 峰,周永川.MATLAB中多EDA軟件實現(xiàn)數(shù)字系統(tǒng)設(shè)計[J].無線電通信技,2010,215(3):31-33.