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