《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > Multi-Tap FlexHtree在高性能CPU設(shè)計中的應(yīng)用
Multi-Tap FlexHtree在高性能CPU設(shè)計中的應(yīng)用
2018年電子技術(shù)應(yīng)用第8期
彭書濤1,黃 薇1,邊少鮮1,杜廣山2
1.天津飛騰信息技術(shù)有限公司,天津102209;2.上??请娮涌萍加邢薰荆虾?01204
摘要: 對于高性能CPU設(shè)計,特別是在16 nm以及更高級的工藝節(jié)點上,signoff的corner很多,增加公共時鐘路徑長度、改善各RC端角下時鐘延遲的一致性、降低設(shè)計的局部時鐘偏斜已經(jīng)成為數(shù)字后端設(shè)計師的共識。Cadence innovus工具新增的multi-tap FlexHtree結(jié)構(gòu)時鐘樹方案不僅提供了H-tree對稱的時鐘緩沖器單元結(jié)構(gòu)和相等的線長特點,而且其對幾何對稱性降低了要求,確保了時序單元擺放完畢后就可以進行時鐘樹綜合。建立了一個自動化的FlexHtree實現(xiàn)流程來降低不同corner下的時鐘偏斜。詳細討論了FlexHtree tap點的數(shù)量以及子樹時鐘綜合引擎對時鐘偏斜和設(shè)計時序的影響,進而找到了一個較好的FlexHtree實現(xiàn)方案。最后從時序、功耗和單元數(shù)量等方面對FlexHtree、CCOPT和魚骨型Fishbone結(jié)構(gòu)時鐘樹進行了較為全面的比較,從而得出該設(shè)計更適合采用靈活的FlexHtree結(jié)構(gòu)。
中圖分類號: TN402
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.189014
中文引用格式: 彭書濤,黃薇,邊少鮮,等. Multi-Tap FlexHtree在高性能CPU設(shè)計中的應(yīng)用[J].電子技術(shù)應(yīng)用,2018,44(8):5-9,12.
英文引用格式: Peng Shutao,Huang Wei,Bian Shaoxian,et al. Multi-Tap FlexHtree application in high performance CPU design[J]. Application of Electronic Technique,2018,44(8):5-9,12.
Multi-Tap FlexHtree application in high performance CPU design
Peng Shutao1,Huang Wei1,Bian Shaoxian1,Du Guangshan2
1.Tianjing Phytium Technology Co.,Ltd.,Tianjing 102209,China;2.Cadence Design Systems,Inc.,Shanghai 201204,China
Abstract: For high performance CPU design, especially on 16 nm and advanced process nodes, with the increase in the number of signoff corner, increasing the clock common path, improving the clock latency correlation on various RC corners, decreasing local skew of design, those are our common view. The Cadence innovus Flexible H-tree(FlexHtree) feature not only provides the symmetric buffer structure and equal wire lengths benefits of an H-tree, but also relaxes the requirement to be geometrically symmetric, enabling clock tree synthesis even in floorplans with sink placement. This paper presents an automatic Flexible H-tree flow to decrease clock skew on different corners. Meanwhile, this paper will discuss the impact of multi-taps counts and synthesis engines of the sub-tree on clock skew and design timing in details, then choses a better solution. Finally, in terms of timing, power consumption, and instance counts results, the design mentioned in this paper is suitable to use Flexible H-tree clock structure in comparison to CCOPT and fishbone structure clock tree.
Key words : FlexHtree; clock skew; clock tree;CCOPT;innovus

0 引言

    現(xiàn)代高性能處理器對數(shù)據(jù)傳輸和數(shù)據(jù)處理需求越來越高,時鐘樹作為處理器時鐘信號傳遞的載體,對整個處理器的計算性能有著直接的影響。要想在低時鐘偏差(clock skew)的要求下將時鐘信號分配到各個局部區(qū)域在高性能系統(tǒng)中變得極富挑戰(zhàn)。

    時鐘結(jié)構(gòu)主要分為兩種:樹形結(jié)構(gòu)與網(wǎng)狀結(jié)構(gòu)。樹形結(jié)構(gòu)設(shè)計比較成熟,以Cadence innovus CCOPT為典型代表,EDA工具能夠根據(jù)指定的約束條件自動生成時鐘樹,并且可以選擇平衡樹還是借用有用偏差(useful skew)的不平衡樹,樹形結(jié)構(gòu)廣泛應(yīng)用于手機和物聯(lián)網(wǎng)等芯片設(shè)計中;而網(wǎng)狀型時鐘結(jié)構(gòu)需要大量的手工工作,并經(jīng)過大量的嘗試調(diào)整之后才能體現(xiàn)出優(yōu)勢,其見諸于高性能計算芯片中。

    數(shù)字同步邏輯電路時鐘樹實現(xiàn)方案的合理選擇才能使得CPU的高性能不是浮云。例如,網(wǎng)狀型(Mesh)、魚骨型(Fishbone)時鐘結(jié)構(gòu)作為Intel和IBM CPU處理器慣常采用的結(jié)構(gòu),其共同特點是時鐘傳播延時(latency)、時鐘偏斜(skew)、片上偏差(OCV)都很低。Mesh結(jié)構(gòu)的缺點是功耗(power)偏大、布線資源開銷大,而魚骨型結(jié)構(gòu)由于子樹手工劃分比較難,手工操作比較多。目前以Flexible H-tree(縮寫為FlexHtree)結(jié)構(gòu)為代表的時鐘樹近年來廣泛應(yīng)用于ARM架構(gòu)處理器,其特點是使用靈活、功耗低、各工藝端角(corner)下時鐘偏差比較小。

    本文將以帶多末梢點(multi-tap)的FlexHtree作為研究對象,嘗試在降低clock skew的同時不對建立時序(setup)和功耗帶來明顯的影響。本文的設(shè)計結(jié)果給高性能CPU的時鐘樹設(shè)計提供了一個較優(yōu)的解決方案,同時對目前自主高性能芯片的后端物理實現(xiàn)提供了工程參考。

1 Multi-tap FlexHtree和Fishbone時鐘結(jié)構(gòu)介紹

    以高性能CPU為研究對象,本文主要討論和對比兩種時鐘結(jié)構(gòu),multi-tap FlexHtree和Fishbone,以下將從結(jié)構(gòu)及特點方面對兩種結(jié)構(gòu)進行簡單描述。

1.1 帶multi-tap的H-tree時鐘樹結(jié)構(gòu)

    傳統(tǒng)單一的H-tree多用于Mesh、Fishbone時鐘結(jié)構(gòu)的前級驅(qū)動,或者部分對clock skew有要求的電路結(jié)構(gòu)進行時鐘的平衡。圖1中所示帶multi-tap點的H-tree的結(jié)構(gòu)可以與時鐘樹綜合(CTS)相結(jié)合來控制整個時鐘樹的clock skew[1]。時鐘根節(jié)點(root pin)可以是時鐘輸入端口,也可以是時鐘緩沖器,借助H-tree將時鐘信號傳遞到各個葉節(jié)點(sink)。最上面7個驅(qū)動器組成了H-tree的“H”形結(jié)構(gòu),當(dāng)tap點比較多時可以采用多級的H-tree網(wǎng)絡(luò)實現(xiàn)tap點之間的多工藝端角(multi-corner)下時鐘延遲的平衡。最后一級驅(qū)動器為子樹的根節(jié)點,該子樹可以使用普通的CTS完成。

wdz1-t1.gif

    FlexHtree結(jié)構(gòu)具有實現(xiàn)流程簡單,易于嵌入到整個P&R(布局和布線)流程中實現(xiàn)的特點。并且對于含有存儲器(memory)和宏模塊(macro)的布局也可以采用H-tree實現(xiàn)。還有其對時鐘門控單元(clock gating)結(jié)構(gòu)的復(fù)雜度也沒有過多要求。由于其不需要過分關(guān)注H-tree上時鐘緩沖器和時鐘主干的幾何對稱性,只要能保證在multi-corner下RC參數(shù)的電氣對稱性也可實現(xiàn)clock skew的降低。而對于傳統(tǒng)的H-tree,出于幾何對稱性的考慮,必須對H-tree sink數(shù)量以及sink位置進行約束[1]。

1.2 Fishbone時鐘結(jié)構(gòu)

    顧名思義,F(xiàn)ishbone時鐘結(jié)構(gòu)就是其形狀類似于魚骨頭的一種時鐘結(jié)構(gòu)。依據(jù)主干的條數(shù),通常將Fishbone時鐘網(wǎng)絡(luò)分為單魚骨結(jié)構(gòu)、雙魚骨結(jié)構(gòu)與多魚骨結(jié)構(gòu)。圖2中是一個單魚骨結(jié)構(gòu)的示意圖,灰色三角形為前級驅(qū)動器,白色三角形為主干驅(qū)動器?;疑珵闀r鐘分支。Fishbone前級驅(qū)動一般多采用H-tree結(jié)構(gòu)來驅(qū)動多扇入緩沖器陣列,根據(jù)負載點的數(shù)量來選擇金字塔形狀的多扇入驅(qū)動緩沖器陣列級數(shù)。正是由于最后一級主干驅(qū)動器并聯(lián)提供的驅(qū)動能力,魚骨(trunk)才可以“橫穿”整個floorplan,保證每根魚刺(branch)上的局部緩沖器時鐘到達延時相同。這里的局部緩沖器作為子樹的根節(jié)點,使用CTS生成時鐘樹。

Fishbone結(jié)構(gòu)的優(yōu)點是skew小,時鐘latency短,OCV小,只需要很少的緩沖器,功耗低,布線開銷小,可實現(xiàn)useful skew。缺點就是不能自動化,需要大量手工調(diào)整[2]。其比較適用于長條形較為對稱的floorplan。

wdz1-t2.gif

2 Multi-tap FlexHtree實現(xiàn)

    本節(jié)主要介紹FlexHtree的時鐘樹綜合流程,對各步驟進行了說明。然后分別討論tap點個數(shù)對clock skew的影響,并對比了子樹使用innovus ICTS和CCOPT引擎生成時鐘樹對時序的影響。本節(jié)也同時對比了CTS、FlexHtree和Fishbone 3種結(jié)構(gòu)實現(xiàn)時鐘樹的clock skew變化,指導(dǎo)芯片設(shè)計者更進一步挖掘3種結(jié)構(gòu)的特點。

2.1 FlexHtree時鐘樹綜合流程

    圖3所示為使用Cadence innovus工具綜合帶multi-tap的FlexHtree的流程,先將做完memory、macro和標準單元布局的數(shù)據(jù)庫作為FlexHtree綜合的起點,此時數(shù)據(jù)路徑延時優(yōu)化已經(jīng)做好。具體步驟:(1)工具依據(jù)標準時序約束(SDC)來創(chuàng)建時鐘樹spec;(2)定義時鐘樹繞線規(guī)則,對時鐘主干和分支指定不同的繞線規(guī)則;(3)確定時鐘樹設(shè)計約束,以達到預(yù)期的skew、transition和時鐘緩沖器扇出數(shù)量;(4)定義FlexHtree創(chuàng)建規(guī)范,如時鐘源點、是否對稱、tap點個數(shù)及位置區(qū)域等;(5)對定義的Flex-Htree主干進行綜合,綜合之后檢查tap點位置及trunk繞線是否比較合理;(6)對放好的multi-tap點創(chuàng)建時鐘以及定義時鐘分組;(7)對定義子樹進行綜合,子樹內(nèi)部可以采取平衡樹,也可以采取借用useful skew的不平衡樹,此時子樹綜合后的時序不理想就要分析子樹的劃分是否合理,是否依據(jù)邏輯關(guān)系、物理位置進行了合理的掛載,同時要注意單個子樹的clock latency是否過長。

wdz1-t3.gif

    用帶multi-tap點FlexHtree實現(xiàn)時鐘樹的難點在于tap點數(shù)量的確定以及不同tap點下合理掛載sink問題。

2.2 不同tap點個數(shù)對clock skew影響

    本節(jié)tap點子樹使用了ICTS引擎進行平衡樹生成,保證tap點以下子樹內(nèi)的clock latency也能做平。為了探討不同tap點對clock skew的影響,分別選取了4、6、8、18個tap點生成FlexHtree,圖4為tap點個數(shù)與clock skew分布關(guān)系圖。橫軸為clock skew范圍,每50 ps一個步長,縱軸是各clock skew區(qū)間下條數(shù)占總條數(shù)百分比。

wdz1-t4.gif

    從圖4中可以看出,菱形setup折線的峰值點主要出現(xiàn)在-150 ps~125 ps區(qū)間內(nèi),圖4(b)和圖4(c)skew分布比較集中于-150 ps~0 ps范圍,這與工具使用負的useful skew來修保持時序(hold)違反有關(guān)系;圖4(b)和圖4(c)中正的useful skew集中于25 ps~100 ps,說明工具將時鐘樹做得比較平衡,而圖4(a)和圖4(d)比較離散,時鐘樹做得不是很平。對hold折線來說,圖4(b)和圖4(c)的skew分布更為集中在-75 ps~0 ps和25 ps~175 ps這兩個區(qū)間,因此其setup時序好于其他兩者。圖4(c)中clock skew更為集中在-75 ps~0 ps以及25 ps~125 ps區(qū)間,這說明8個tap點在兼顧setup時序的同時也修了hold。從4個圖中可以看出8個tap點下clock skew較小,且比較集中, setup和hold好于其他3種情況。

2.3 Multi-tap FlexHtree tap點合理劃分分析

    為了深一步搞清楚8個tap點下時序好的原因,圖5提供了8個tap點FlexHtree在floorplan中的sink分布。從圖中可以看出,本設(shè)計為典型的長方形結(jié)構(gòu),memory成對稱放置,沿上下出pin區(qū)域左右兩邊分別歸屬于l3c_pipeline_0和l3c_pipeline_1 module。圖中8塊位置用不同顏色以及邊界折線區(qū)分開來,同時在相應(yīng)區(qū)塊中標記了sink所屬module,高亮的直線為8tap點H-tree結(jié)構(gòu)。這樣的tap點劃分充分考慮到了sink點的物理位置以及module間交互(talk)關(guān)系,避免了tap點與sink距離過遠和tap點下所帶sink數(shù)過大導(dǎo)致的子樹clock latency偏大,從而不利于子樹間talk path時序的收斂。圖5中module的切分考慮到了減少talk path,更多將某些小的module都掛載到一個tap點下,因此這種8個tap的定義才獲得了時序容易滿足的好處。

wdz1-t5.gif

    表1為8個tap點所帶sink數(shù)目以及tap點common path clock latency(簡稱CPCL)在子樹平均clock latency中百分比。從表中可以看出Htree_tap0下面掛載sink數(shù)量最多,對應(yīng)圖5liu_pre_processor module所在區(qū)域;Htree_tap1下掛載sink數(shù)量次之,對應(yīng)圖5 L3c_cfg和L3c_pipeline_0 module所在區(qū)域;Htree_tap4下掛載sink數(shù)量最少,對應(yīng)圖5中間右下位置L3c_pipeline_1 module區(qū)域。其他tap點下掛載sink數(shù)量基本接近。8個tap點下CPCL都在40%以上,這樣OCV對tap點下sink的影響就沒那么大。從tap點下sink數(shù)量與CPCL的對應(yīng)關(guān)系看,Htree_tap0和Htree_tap1并沒有因為sink數(shù)量多平均clock latency就越大,出現(xiàn)這種情況說明工具對tap0和tap1 sink切分合理,子樹下sink clock latency做得比較平。從另外一個方面來看,8個tap點的CPCL百分之間偏差不大,8個子樹之間做得也比較平,這樣對子樹間hold響主要就是OCV了。所以,分析FlexHtree做得好不好,可以從子樹sink module劃分、物理位置、子樹sink數(shù)目和CPCL百分比出發(fā)。

wdz1-b1.gif

    圖6為8個tap點在5個不同corner下公共clock latency的比較圖。從柱狀圖中可以看出tap點時鐘clock latency在不同corner下的偏差不超過70 ps,tap點之間的clock latency相差不到3 ps,這也證實了前面1.1節(jié)所提到的FlexHtree特點:multi-corner下RC參數(shù)的電氣對稱性,以及tap點之間的RC參數(shù)電氣對稱性。這樣保證了各corner下時序的一致性。

wdz1-t6.gif

2.4 使用平衡和非平衡樹綜合tap點子樹

    本節(jié)中討論了分別使用innovus的ICTS和CCOPT引擎綜合tap點子樹的時序結(jié)果,如表2、表3所示,表格中wns(worst negative slack)代表時序違反最差路徑,tns(total negative slack)代表所有時序違反路徑的違反值之和。兩表格中的setup和hold結(jié)果均為postroute階段innovus報出的結(jié)果。從表2和表3中wns和tns結(jié)果來看,8個tap點效果最好,不論setup和hold;tap點多的情況下hold的wns和tns會好于tap點少的情況。

wdz1-b2.gif

wdz1-b3.gif

    將表2與表3進行比較可知,使用CCOPT引擎綜合的子樹對于4個、6個和8個tap點時wns和tns均會變差,但tap點為18個時,setup的wns和tns會變好。因此可以得出如下結(jié)論:tap點多更適合于降低hold違反條數(shù),在tap點比較多情況下,使用CCOPT引擎綜合子樹的時序效果好于ICTS引擎。

3 3種不同結(jié)構(gòu)實現(xiàn)時鐘樹時序、面積和功耗比較

    本節(jié)將3種不同結(jié)構(gòu)時鐘樹FlexHtree、CCOPT和Fishbone從時序、面積和功耗方面進行比較,進而選出一種更優(yōu)的時鐘樹實現(xiàn)方案。從表4中可以看出8個tap點的FlexHtree setup和hold時序均要好于CCOPT和Fishbone結(jié)構(gòu),從側(cè)面也反映了8個tap點方案對clock skew控制要好于另外兩種結(jié)構(gòu),并且其density利用率也是最低的,從clock buff count也進一步證明了其使用了較少的useful skew。從average clock latency來看,由于FlexHtree使用了高層繞線,其值要低于CCOPT,但高于Fishbone。從功耗來看,F(xiàn)lexHtree的功耗,尤其是使用ICTS引擎綜合子樹的FlexHtree,其clock network功耗要高于CCOPT和Fishbone結(jié)構(gòu)。表格中一個顯著的特征就是,F(xiàn)ishbone結(jié)構(gòu)時鐘樹功耗最小,這與其占用的布線資源少、使用的時鐘緩沖器少有直接的關(guān)系。但是對于Fishbone結(jié)構(gòu),由于必須手工進行,子樹的劃分是一個難題,本文也只是做了大量的嘗試,但時序結(jié)果看起來并未有多少好處。這也是本文選用FlexHtree的原因。

wdz1-b4.gif

4 結(jié)論

    本文在innovus工具平臺下建立了帶multi-tap的FlexHtree自動化時鐘樹綜合流程。使用innovus實現(xiàn)了4、6、8和18個tap點的FlexHtree,同時針對tap點子樹要不要做平,分別選用了ICTS和CCOPT進行子樹的綜合。為了更深入地說明為何選用FlexHtree結(jié)構(gòu),也嘗試了CCOPT綜合和Fishbone手工實現(xiàn)時鐘樹的方案,從clock skew、時序、面積和功耗等方面進行了比較,最終確定了使用FlexHtree方案實現(xiàn)L3 cache設(shè)計。同時本文也對FlexHtree tap點合理劃分進行了分析,有利于接下來對tap點位置和sink掛載進一步優(yōu)化,控制clock skew,實現(xiàn)setup和hold均比較容易收斂的結(jié)果。本文的結(jié)果也對類似memory比較多的設(shè)計提供直接的時鐘樹設(shè)計經(jīng)驗,同時本文的分析方法也可以指導(dǎo)設(shè)計者探索時鐘樹物理空間。

參考文獻

[1] Cadence.Flexible H-tree and multi-tap clock flow in innovus version 17.10[Z].2017.

[2] 曾艷飛.魚骨型時鐘結(jié)構(gòu)的研究與實現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),2012.



作者信息:

彭書濤1,黃  薇1,邊少鮮1,杜廣山2

(1.天津飛騰信息技術(shù)有限公司,天津102209;2.上??请娮涌萍加邢薰?,上海201204)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。