文獻(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.
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完成。
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。
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是否過長。
用帶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ù)百分比。
從圖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í)序容易滿足的好處。
表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ā)。
圖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í)序的一致性。
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)少的情況。
將表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的原因。
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)