《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > Multi-Tap FlexHtree在高性能CPU設(shè)計(jì)中的應(yīng)用
Multi-Tap FlexHtree在高性能CPU設(shè)計(jì)中的應(yīng)用
2018年電子技術(shù)應(yīng)用第8期
彭書濤1,黃 薇1,邊少鮮1,杜廣山2
1.天津飛騰信息技術(shù)有限公司,天津102209;2.上??请娮涌萍加邢薰?,上海201204
摘要: 對于高性能CPU設(shè)計(jì),特別是在16 nm以及更高級的工藝節(jié)點(diǎn)上,signoff的corner很多,增加公共時(shí)鐘路徑長度、改善各RC端角下時(shí)鐘延遲的一致性、降低設(shè)計(jì)的局部時(shí)鐘偏斜已經(jīng)成為數(shù)字后端設(shè)計(jì)師的共識。Cadence innovus工具新增的multi-tap FlexHtree結(jié)構(gòu)時(shí)鐘樹方案不僅提供了H-tree對稱的時(shí)鐘緩沖器單元結(jié)構(gòu)和相等的線長特點(diǎn),而且其對幾何對稱性降低了要求,確保了時(shí)序單元擺放完畢后就可以進(jìn)行時(shí)鐘樹綜合。建立了一個自動化的FlexHtree實(shí)現(xiàn)流程來降低不同corner下的時(shí)鐘偏斜。詳細(xì)討論了FlexHtree tap點(diǎn)的數(shù)量以及子樹時(shí)鐘綜合引擎對時(shí)鐘偏斜和設(shè)計(jì)時(shí)序的影響,進(jìn)而找到了一個較好的FlexHtree實(shí)現(xiàn)方案。最后從時(shí)序、功耗和單元數(shù)量等方面對FlexHtree、CCOPT和魚骨型Fishbone結(jié)構(gòu)時(shí)鐘樹進(jìn)行了較為全面的比較,從而得出該設(shè)計(jì)更適合采用靈活的FlexHtree結(jié)構(gòu)。
中圖分類號: TN402
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.189014
中文引用格式: 彭書濤,黃薇,邊少鮮,等. Multi-Tap FlexHtree在高性能CPU設(shè)計(jì)中的應(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ù)處理需求越來越高,時(shí)鐘樹作為處理器時(shí)鐘信號傳遞的載體,對整個處理器的計(jì)算性能有著直接的影響。要想在低時(shí)鐘偏差(clock skew)的要求下將時(shí)鐘信號分配到各個局部區(qū)域在高性能系統(tǒng)中變得極富挑戰(zhàn)。

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

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

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

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

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

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

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

wdz1-t1.gif

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

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

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

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

wdz1-t2.gif

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

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

2.1 FlexHtree時(shí)鐘樹綜合流程

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

wdz1-t3.gif

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

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

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

wdz1-t4.gif

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

2.3 Multi-tap FlexHtree tap點(diǎn)合理劃分分析

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

wdz1-t5.gif

    表1為8個tap點(diǎn)所帶sink數(shù)目以及tap點(diǎn)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點(diǎn)下掛載sink數(shù)量基本接近。8個tap點(diǎn)下CPCL都在40%以上,這樣OCV對tap點(diǎn)下sink的影響就沒那么大。從tap點(diǎn)下sink數(shù)量與CPCL的對應(yīng)關(guān)系看,Htree_tap0和Htree_tap1并沒有因?yàn)閟ink數(shù)量多平均clock latency就越大,出現(xiàn)這種情況說明工具對tap0和tap1 sink切分合理,子樹下sink clock latency做得比較平。從另外一個方面來看,8個tap點(diǎn)的CPCL百分之間偏差不大,8個子樹之間做得也比較平,這樣對子樹間hold響主要就是OCV了。所以,分析FlexHtree做得好不好,可以從子樹sink module劃分、物理位置、子樹sink數(shù)目和CPCL百分比出發(fā)。

wdz1-b1.gif

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

wdz1-t6.gif

2.4 使用平衡和非平衡樹綜合tap點(diǎn)子樹

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

wdz1-b2.gif

wdz1-b3.gif

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

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

    本節(jié)將3種不同結(jié)構(gòu)時(shí)鐘樹FlexHtree、CCOPT和Fishbone從時(shí)序、面積和功耗方面進(jìn)行比較,進(jìn)而選出一種更優(yōu)的時(shí)鐘樹實(shí)現(xiàn)方案。從表4中可以看出8個tap點(diǎn)的FlexHtree setup和hold時(shí)序均要好于CCOPT和Fishbone結(jié)構(gòu),從側(cè)面也反映了8個tap點(diǎn)方案對clock skew控制要好于另外兩種結(jié)構(gòu),并且其density利用率也是最低的,從clock buff count也進(jìn)一步證明了其使用了較少的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)時(shí)鐘樹功耗最小,這與其占用的布線資源少、使用的時(shí)鐘緩沖器少有直接的關(guān)系。但是對于Fishbone結(jié)構(gòu),由于必須手工進(jìn)行,子樹的劃分是一個難題,本文也只是做了大量的嘗試,但時(shí)序結(jié)果看起來并未有多少好處。這也是本文選用FlexHtree的原因。

wdz1-b4.gif

4 結(jié)論

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

參考文獻(xiàn)

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

[2] 曾艷飛.魚骨型時(shí)鐘結(jié)構(gòu)的研究與實(shí)現(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)載。