顧光華,張海平,何志偉
(中國電子科技集團(tuán)公司第58研究所,江蘇 無錫 214035)
隨著現(xiàn)代嵌入式芯片設(shè)計(jì)的芯片功能及復(fù)雜性的不斷提高,需要實(shí)現(xiàn)更高的時(shí)鐘頻率、更多的時(shí)鐘域及更復(fù)雜的時(shí)鐘結(jié)構(gòu)?,F(xiàn)在的工藝尺寸可以縮減到65 nm、40 nm或更小,先進(jìn)的工藝技術(shù)可提高集成電路器件集成度及生產(chǎn)出更大的芯片尺寸,但這同時(shí)意味著時(shí)鐘網(wǎng)絡(luò)的負(fù)載越來越重并可能穿過更長的距離。因此,芯片時(shí)鐘的不確定性和時(shí)鐘延時(shí)會(huì)變得更為可觀,芯片的時(shí)序收斂也成為一項(xiàng)艱巨的任務(wù)。例如,臺(tái)積電的65 nm低功耗設(shè)計(jì)標(biāo)準(zhǔn)如下:
WC corner(setup check):set_timing_derate from 0.95 to 1.0
BC corner(hold check): set_timing_derate from 1.0 to 1.1
假設(shè)時(shí)鐘頻率為800 MHz,時(shí)鐘周期1.25 ns,如果時(shí)鐘延時(shí)較大(如500 ps)則占用的時(shí)鐘比例較大,有可能達(dá)到時(shí)鐘的50%左右。這種情況下建立時(shí)間和保持時(shí)間很難滿足,時(shí)序很難收斂,芯片的功能也基本無法實(shí)現(xiàn)。所以,最大限度地減少時(shí)鐘延時(shí)實(shí)現(xiàn)更小的時(shí)鐘漂移,對于設(shè)計(jì)頻率較高的集成電路至關(guān)重要。本文將介紹在不同轉(zhuǎn)換率的輸入輸出單元、大負(fù)載電容端口和來自不同時(shí)鐘域的時(shí)鐘網(wǎng)絡(luò)情況下怎樣處理可以實(shí)現(xiàn)較小時(shí)鐘延時(shí)的時(shí)鐘網(wǎng)絡(luò)。
在大多數(shù)情況下,系統(tǒng)時(shí)鐘是由輸入輸出單元產(chǎn)生的,如晶振等,這樣的輸入輸出單元的時(shí)序特性會(huì)影響時(shí)鐘樹的綜合結(jié)果。輸入輸出單元根據(jù)不同的負(fù)載會(huì)產(chǎn)生不同轉(zhuǎn)換率,在時(shí)鐘源產(chǎn)生時(shí)鐘上升漂移和時(shí)鐘下降漂移,由于它是時(shí)鐘源,這種漂移會(huì)通過時(shí)鐘網(wǎng)絡(luò)傳播。然而,時(shí)鐘樹自動(dòng)綜合時(shí)會(huì)試圖插入緩沖器或反向器來平衡這些漂移。這些插入單元會(huì)使時(shí)鐘延時(shí)變大。
為了避免這個(gè)問題,應(yīng)根據(jù)實(shí)際情況,選擇合適轉(zhuǎn)換率的輸入輸出單元,但實(shí)際情況是很難找到一個(gè)完美的輸入輸出單元。圖1對應(yīng)的是一個(gè)晶振輸入輸出單元的時(shí)序參數(shù),從時(shí)序表可以發(fā)現(xiàn),存在約300 ps的上升沿和下降沿的延遲差異。
這種延遲的差異將通過時(shí)鐘網(wǎng)絡(luò)傳播,為了防止這種非對稱的傳輸延遲的時(shí)鐘根,時(shí)鐘源定義點(diǎn)應(yīng)移至輸入輸出單元的輸出引腳。例如,時(shí)鐘源應(yīng)該定義如下:
Create_clock -name xclk-p 30-waveform {0 15}[get_pins {IO_xclk/XC}],而不是Create_clock -name xclk-p 30-waveform {0 15} [get_ports{IO_xclk}],這樣可以使時(shí)鐘延時(shí)更小。
某些宏模塊(IP)端口的輸入電容是非常大的。輸入電容由兩部分組成,一部分是固有電容,其可以通過時(shí)序表查表得到,而另一部分是端口相鄰的信號(hào)線寄生效應(yīng)產(chǎn)生的耦合電容。如果端口的尺寸很小,這種耦合電容是很小的,外在耦合電容的影響可以忽略不計(jì)。然而,如果pin的圖形很大,耦合電容將變得不可忽略。這種情況在端口圖形被走線指引覆蓋時(shí)表現(xiàn)得更為顯著,如圖2所示。
由于走線指引代表隱藏的某層金屬走線,在寄生參數(shù)提取時(shí),自動(dòng)布局布線工具將自動(dòng)識(shí)別這些“虛擬信號(hào)線”,整條走線指引將被視為較粗的金屬走線。因此,在宏模塊端口上將產(chǎn)生一個(gè)較大的耦合寄生電容。相對于宏模塊端口的固有電容,這個(gè)耦合電容必須考慮,但大多數(shù)情況下,走線指引區(qū)域的金屬走線密度不是特別高,這種寄生模型提取的寄生電容耦合電容值偏大。這種高估的耦合電容會(huì)導(dǎo)致較長的時(shí)鐘延時(shí)。自動(dòng)布局布線工具綜合時(shí)鐘樹時(shí)會(huì)插入緩沖器去修復(fù)如大電容、最大過渡及大扇出錯(cuò)誤,這些額外插入的緩沖器會(huì)增加時(shí)鐘延時(shí)。而時(shí)鐘自動(dòng)綜合工具會(huì)去平衡各個(gè)分支的時(shí)鐘,從而導(dǎo)致整個(gè)時(shí)鐘延時(shí)變大。
圖1 OSC時(shí)序特性
圖2 宏模塊端口和走線指引示意圖
合理的解決方案是根據(jù)時(shí)序報(bào)告在宏模塊端口附近插入一個(gè)合適驅(qū)動(dòng)能力的緩沖器,將宏模塊端口從整個(gè)時(shí)鐘網(wǎng)絡(luò)分離出來,根據(jù)這個(gè)緩沖器的真正延時(shí)得到一個(gè)比較準(zhǔn)確的時(shí)鐘延時(shí)。
在現(xiàn)代嵌入式芯片設(shè)計(jì)時(shí),多時(shí)鐘域是很常見的,不同時(shí)鐘域是相互獨(dú)立的,但有可能時(shí)鐘源又存在著某種聯(lián)系,如圖3所示,CK1、CK2…CKn是相互獨(dú)立的時(shí)鐘域,不需要同步,而對于各個(gè)時(shí)鐘所管的各功能模塊則需要同步,這種設(shè)計(jì)的好處是能提供各種不同頻率的時(shí)鐘使芯片的各功能模塊工作在最佳狀態(tài)。
圖3 時(shí)鐘網(wǎng)絡(luò)圖
不同時(shí)鐘域的時(shí)鐘網(wǎng)絡(luò)可能是由相同的時(shí)鐘源衍生出來的,自動(dòng)布局布線工具時(shí)鐘樹自動(dòng)生成時(shí)會(huì)去插入緩沖器/反相器以平衡整個(gè)時(shí)鐘網(wǎng)絡(luò),但實(shí)際情況可能是這些衍生的時(shí)鐘群之間沒有任何數(shù)據(jù)交流,沒必要去整體全局同步。
如圖4所示,有兩個(gè)時(shí)鐘域,xclk和pll_clk,在xclk時(shí)鐘域,adc_clk和sscg_clk之間沒有數(shù)據(jù)交流,所以adc_clk和sscg_clk沒必要同步,而對應(yīng)pll_clk時(shí)鐘域,vd_mem_clk、lvds_mem_clk和pll_clk、sys_clk、cpu_clk、afe_clk、video_clk、vd_clk、lvds_clk及l(fā)vds_ip_clk之間也沒有數(shù)據(jù)交流,即vd_mem_clk、lvds_mem_clk和pll_clk域別的時(shí)鐘群是異步的,不需要去整體平衡。建議處理方式是在編寫時(shí)鐘樹定義文件時(shí)將vd_mem_clk和lvds_mem_clk從pll_clk域獨(dú)立出來,用去除pll_clk時(shí)鐘域來去掉自動(dòng)生成的時(shí)鐘樹。
從上面的分析中可以看出,對于多時(shí)鐘域的同步一定要分析清楚電路結(jié)構(gòu),清晰地分解各個(gè)時(shí)鐘樹模塊的數(shù)據(jù)交流情況,劃分出各個(gè)時(shí)鐘的邊界,準(zhǔn)確地定義出時(shí)鐘樹文件,將不需要同步的時(shí)鐘從時(shí)鐘源域獨(dú)立出來才能自動(dòng)綜合出較小延時(shí)的時(shí)鐘網(wǎng)絡(luò)。
圖4 時(shí)鐘結(jié)構(gòu)圖
在某些設(shè)計(jì)中,不同的時(shí)鐘域有一些共同的路徑,即時(shí)鐘域重疊。如圖5所示,cpu_clk域的分支和test_clk域的分支有重合部分,時(shí)鐘到達(dá)不同時(shí)鐘分支的延時(shí)分別為1.1 ns、1.2 ns和2.5 ns,為了平衡各個(gè)時(shí)鐘分支,自動(dòng)時(shí)鐘樹綜合時(shí)插入相應(yīng)的延時(shí)單元,可能產(chǎn)生如圖6的時(shí)鐘網(wǎng)絡(luò),這樣的結(jié)果一般不是設(shè)計(jì)者想要的結(jié)果,因?yàn)樵赾pu_clk分支分別插入了0.9 ns和0.8 ns的延時(shí),是一個(gè)有較大時(shí)鐘延時(shí)的時(shí)鐘網(wǎng)絡(luò)。
圖5 不同時(shí)鐘域重疊
圖6 CTS后clock時(shí)序圖
更合理的解決方法是先自動(dòng)綜合cpu_clk,然后再自動(dòng)綜合test_clk。一般cpu_clk的時(shí)鐘頻率比test_clock的時(shí)鐘頻率高很多,cpu_clock路徑延時(shí)較小,需要優(yōu)先去平衡。如圖6所示,在cpu_clk上面一條時(shí)鐘分支插入0.1 ns就可以平衡整個(gè)cpu_clk域,自動(dòng)布局布線工具在時(shí)鐘樹自動(dòng)綜合完cpu_clk后再去自動(dòng)綜合test_clk,自動(dòng)布局布線工具會(huì)發(fā)現(xiàn)時(shí)鐘重疊部分已經(jīng)做過時(shí)鐘樹而對公共部分不做任何延時(shí)處理,為了同步test_clk,在test_clk上面時(shí)鐘分支插入1.3 ns的延時(shí),如圖7所示,這樣產(chǎn)生的時(shí)鐘網(wǎng)絡(luò)才是更優(yōu)化的時(shí)鐘網(wǎng)絡(luò)。
圖7 優(yōu)化的時(shí)鐘網(wǎng)絡(luò)
在做時(shí)鐘樹自動(dòng)綜合之前,可能時(shí)鐘網(wǎng)絡(luò)已經(jīng)存在一些不必要的緩沖器或反相器,延長了整個(gè)時(shí)鐘網(wǎng)絡(luò),對于這些單元最好的方法是找到它們并刪除掉。
在時(shí)鐘樹自動(dòng)綜合時(shí),選擇合適的延時(shí)單元也很重要,合理的延時(shí)單元能有效減少時(shí)鐘延時(shí)。時(shí)鐘樹的構(gòu)建主要有兩種形式,一種是基于緩沖器的時(shí)鐘網(wǎng)絡(luò),而另一種是基于反相器的時(shí)鐘網(wǎng)絡(luò)。如圖8所示,緩沖器是由兩級反相器產(chǎn)生的,而且一般前一級晶體管的寬長比小于后一級的寬長比,所以對于相同輸出驅(qū)動(dòng)能力的緩沖器延時(shí)單元和反相器延時(shí)單元,緩沖器的輸入負(fù)載電容比反相器的輸入負(fù)載電容小一些,相對應(yīng)前級時(shí)鐘延時(shí)單元影響較小,更容易修復(fù)大電容問題。另外,反相器需要成對使用,相對于緩沖器時(shí)鐘網(wǎng)絡(luò)會(huì)增加時(shí)鐘網(wǎng)絡(luò)的級數(shù)。
另一方面,對于緩沖器時(shí)鐘網(wǎng)絡(luò),由于緩沖器的兩級反相器是直接相連,且兩級反相器組成的緩沖器前后級的驅(qū)動(dòng)能力是不一致的,這樣會(huì)導(dǎo)致整個(gè)時(shí)鐘網(wǎng)絡(luò)的延時(shí)單元驅(qū)動(dòng)不一致,使時(shí)鐘網(wǎng)絡(luò)的占空比變化。而反相器時(shí)鐘網(wǎng)絡(luò)在這一方面有更大的優(yōu)勢,所以一般在選擇時(shí)鐘樹類型時(shí)需權(quán)衡電路特性,看哪種時(shí)鐘網(wǎng)絡(luò)結(jié)構(gòu)特性更容易滿足電路設(shè)計(jì)的需要,一般推薦使用反相器時(shí)鐘網(wǎng)絡(luò)。
圖8 緩沖器時(shí)鐘網(wǎng)絡(luò)和反相器時(shí)鐘網(wǎng)絡(luò)
在現(xiàn)代高速嵌入式芯片的后端實(shí)現(xiàn)過程中,盡量減小時(shí)鐘延時(shí),有助于快速實(shí)現(xiàn)時(shí)序收斂,有助于設(shè)計(jì)出更高時(shí)鐘頻率的芯片。本文提到了幾種在集成電路時(shí)鐘樹自動(dòng)綜合過程中很可能經(jīng)常碰到的情形及常用的解決方法,通過這些手段可以使自動(dòng)布局布線工具自動(dòng)綜合出時(shí)鐘延時(shí)比較小的時(shí)鐘網(wǎng)絡(luò),如不采用以上常用方法讓工具自動(dòng)去綜合時(shí)鐘樹,一個(gè)實(shí)際可以達(dá)到800 MHz頻率的時(shí)鐘網(wǎng)絡(luò)可能由于時(shí)鐘樹的延時(shí)不當(dāng)而只能工作在630 MHz。采用以上方法可以自動(dòng)綜合出達(dá)到設(shè)計(jì)要求時(shí)鐘頻率的時(shí)鐘網(wǎng)絡(luò)。
[1] 拉貝. 數(shù)字集成電路設(shè)計(jì)透視[Z]. 清華大學(xué),2007.
[2] 沃爾夫. 現(xiàn)代VLSI系統(tǒng)[Z]. 美國,2005.