伍艷春


摘 要本文提出了一種clock mesh與H-tree相結合的混合時鐘樹設計方法,同時通過對設計中的寄存器按照一定規則進行分組并分別布局在相同大小的網格中從而具備一定的對稱性和規則性,可更好的優化H-tree結構,提高H-tree的性能從而提高了整個混合時鐘樹的性能。實驗表明,該混合時鐘樹結構可顯著減少時鐘樹長度和時鐘分支間的skew,降低OCV影響。
【關鍵詞】clock mesh H-tree 寄存器組布局 clock skew
1 引言
隨著芯片規模的不斷增大,設計復雜度的不斷提升,同種工藝下對性能追求的極限化,時鐘網絡的分布越來越重要。如何減小時鐘skew、降低OCV影響,對時鐘樹綜合來說,是個嚴峻的挑戰。業界常用的時鐘樹設計方法有很多種,比如H-tree、二叉樹、clock mesh、魚骨等,其中H-tree的時鐘偏斜skew小,但對設計的規則性要求嚴格;clock mesh的時鐘樹長度小、延時小、OCV影響小,但局部時鐘偏斜較大。為了充分利用這兩種時鐘樹結構的優點,本文提出了一種混合時鐘樹設計方法,能有效的減小時鐘偏斜skew、降低OCV影響。
2 混合時鐘樹結構
混合時鐘樹結構如圖1所示。它主要由三部分組成:H-tree結構pre-mesh、clock mesh、H-tree結構local tree。因其包含不同的時鐘樹結構,故稱之為混合時鐘樹結構。
該混合時鐘樹先通過H-tree結構將時鐘源分布到clock mesh上,clock mesh上的時鐘以就近原則連接到附近的local tree起點,local tree再通過H-tree結構將時鐘信號分布到每個寄存器的時鐘端;同時,由于local H-tree末端驅動的寄存器布局經特殊處理后具有一定的對稱性,可更好的優化H-tree的性能。因到達每個寄存器的pre-mesh H-tree和local H-tree的級數基本相同,clock mesh又將時鐘信號在全局范圍內均勻分布,從而可保證時鐘源端到各寄存器的時鐘樹長度基本均衡,時鐘偏斜很小;同時,通過對寄存器進行分組,將存在時序關系的寄存器集中布局在局部區域,共享同一個時鐘樹分支,由于同一時鐘樹分支中共同的時鐘路徑很長,OCV影響很小。
3 設計方法及實例
本章節詳細描述了在一個40nm工藝、面積為3200um*6200um的設計中運用該混合時鐘樹結構的具體方法,并通過PT時序分析說明了該時鐘樹結構時鐘路徑短,latency、skew很小等優點。
3.1 寄存器組布局
local tree設計采用H-tree結構。但H-tree對其所要驅動的寄存器布局有嚴格的要求,要求其布局盡量具有對稱性,這樣才能更好的保證H-tree長度的均衡性,時鐘skew才會更小。因此,在進行local H-tree設計前,需先對設計中的寄存器進行處理,讓寄存器以一定的規則布局在規整的局部區域內。本文采用的方法是:
(1)將設計中的寄存器按一定的規則如按命名規則進行分類,將具有相同名稱前綴的寄存器聚成一類。為了讓H-tree結構的驅動能力更強、時鐘樹延時更短、時鐘skew更小,每一聚類最多只能包含一級ICG單元(可以無ICG),寄存器數量必須在5與64之間。
(2)寄存器分組完成后,將每個寄存器組分別創建group bound,通過設置合適的利用率如90%指導工具將bound內的寄存器集中布局在一定大小的范圍內;針對相鄰bound距離過小、內部寄存器數量過少的情況,需依據一定的規則如間距大小、寄存器數量等對相關bound進行合并,合并后的寄存器布局更集中,每個bound內部寄存器的數量更均衡(其數量必須不大于64個)。
(3)寄存器布局規則化,將die以一定大小的網格grid(比如(20倍row height)寬*(16倍row hight)高,grid面積基本為64個寄存器的面積)進行網格狀劃分,對每個bound的位置進行微調,保證每個bound中心點均位于grid內,每個grid內最多64個寄存器。
通過上述處理后,每個寄存器組均布局在相同大小規則的grid內,且每個寄存器組內寄存器數量基本均衡,grid的規則化,為每一個local H-tree分支的對稱設計提供了前提條件。
3.2 local H-tree設計
由于每個local H-tree的分支只需驅動其grid內最多64個寄存器,因此,local H-tree只需要兩級驅動,分別為sink buffer tree和grid buffer tree:
(1)sink buffer tree:每個grid分成上下左右共四個小網格,每個小網格內包含16個寄存器,每個小網格內插入一個sink buffer,用于驅動16個寄存器;為了平衡該sink buffer到16個寄存器的tree長度,將該sink buffer布局在16個寄存器布局位置的中心。
(2)grid buffer tree:每個grid內均有4個sink buffer,為了驅動這四個buffer,需要在每個grid內部插入一個grid buffer,作為local H-tree的起點。由于該grid buffer直接與clock mesh相連,針對grid內有ICG單元的情況,將該grid buffer插在ICG單元之前,如果grid內沒有ICG單元,為了平衡各local tree分支間的級數,需先在4個sink buffer前插入一級專門用來平衡ICG單元的buffer,再在該buffer前面插入grid buffer,grid buffer布局在每個grid的中心,以此平衡grid buffer到4個sink buffer之間的距離
如圖2所示,是local H-tree在一個grid內的分布示意圖。Grid為圖示黃色線內區域,grid buffer布局在grid中間位置,其驅動的4個sink buffer分別位于各自驅動的16個寄存器的中間位置,grid 與 sink buffer以H-tree的結構進行時鐘走線,grid buffer作為local tree的起點,在clock mesh布局后,將與附近的clock mesh相連,完成local tree與clock mesh的連接。
3.3 clock mesh與pre-mesh H-tree設計
clock mesh與電源網格類似,設置好clock mesh橫縱向金屬層,網格寬度、網格間隔等約束,使用命令create_clock_mesh即可完成clock mesh的創建。
時鐘源到clock mesh的分布,采用pre-mesh H-tree結構,本文采用的設計方法如下:
(1)pre-mesh H-tree級數的計算:為了更好的驅動clock mesh,pre-mesh最后一級H-tree buffer數量必須足夠多,至少每200um左右需插入一級clock buffer。級數與buffer間距的關系如下公式所示:buffer間距=die(寬)/2H-tree(級數)。
(2)pre-mesh H-tree的分布:先從clock port端插入一級buffer,將該buffer布局在芯片中央位置,作為H-tree的起點;再從該起點插入相應級數的H-tree buffer,每一級buffer驅動其后一級的4個buffer,這四個buffer分別位于該buffer的上下左右四個點,形成H結構,H結構的橫向間距=die寬/2該級H-tree級數,縱向間距= die高/2該級H-tree級數。
(3)H-tree結構縱向中心buffer的插入:為了讓h-tree結構的時鐘走線呈H結構,也為了更好的驅動能力,需分別在每級四個buffer的縱向中心點插入一級buffer,該buffer與前級buffer處于同一水平線上。
(4)驅動buffer的插入:當H結構縱向buffer間距過大、驅動能力不夠時,需以一定間隔(如每200um左右)插入一個驅動buffer,以滿足每兩個互連buffer之間的驅動能力。
(5)當H-Tree結構完成后,將最后一級buffer的輸出連接到clock mesh上,完成premesh H-tree與clock mesh的連接。
如圖4所示,是pre-mesh H-tree的分布示意圖及pre-mesh與clock mesh的連接示意圖。pre-mesh H-tree共有5級驅動,最后一級驅動buffer以大概200um的間距均勻的布局,該級buffer的輸出以就近原則連接到周圍的clock mesh上。
3.4 混合時鐘樹延時結果
由于pre-mesh H-tree結構最終驅動同一根clock net(clock mesh),布局布線工具目前無法獲取從時鐘源到clock mesh之間各分支的clock延時,本文通過第三方電路仿真分析工具Hspice來獲取clock mesh的延時信息。具體的分析方法如下:
(1)在布局布線工具中分析clock mesh電路結構,生成clock mesh spice網表及相應的measure文件,并收集需要獨立使用仿真工具分析的clock net和clock cell,將其加到生成的measure文件中。
(2)使用Hspice仿真工具,輸入1)生成的相關文件,以SDC文件格式計算并生成可被布局布線工具識別的延遲信息,完成clock mesh電路的延時計算。
(3)將生成的sdc 文件加載到布局布線工具中,即可完成clock mesh電路延時的反標。
將clock mesh的延時信息在PT中進行反標兵分析整個是鐘樹的latency及skew,發現時鐘skew很小,在30ps以內。
4 總結
本文通過綜合考慮各種時鐘樹結構的優缺點,提出一種混合時鐘樹結構,該結構由pre-mesh H-tree、clock mesh、local H-tree三部分組成,并通過對設計中的寄存器按照一定原則進行分組處理并集中布局在指定大小的grid內,保證了H-tree的設計規則性,從而更好的優化了H-tree的性能。本文結論表明,該時鐘樹結構可顯著減少時鐘樹長度、增加同一grid內時鐘樹的共同路徑長度從而減少OCV影響,同時能很好的均衡不同grid內各時鐘樹分支,減少時鐘skew。
參考文獻
[1]陳彥白.Fishbone和CTS時鐘樹的比較[D].上海 :復旦大學,2008.
作者單位
南京電子技術研究所 江蘇省南京市 210039