文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.189014
中文引用格式: 彭書(shū)濤,黃薇,邊少鮮,等. 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)代高性能處理器對(duì)數(shù)據(jù)傳輸和數(shù)據(jù)處理需求越來(lái)越高,時(shí)鐘樹(shù)作為處理器時(shí)鐘信號(hào)傳遞的載體,對(duì)整個(gè)處理器的計(jì)算性能有著直接的影響。要想在低時(shí)鐘偏差(clock skew)的要求下將時(shí)鐘信號(hào)分配到各個(gè)局部區(qū)域在高性能系統(tǒng)中變得極富挑戰(zhàn)。
時(shí)鐘結(jié)構(gòu)主要分為兩種:樹(shù)形結(jié)構(gòu)與網(wǎng)狀結(jié)構(gòu)。樹(shù)形結(jié)構(gòu)設(shè)計(jì)比較成熟,以Cadence innovus CCOPT為典型代表,EDA工具能夠根據(jù)指定的約束條件自動(dòng)生成時(shí)鐘樹(shù),并且可以選擇平衡樹(shù)還是借用有用偏差(useful skew)的不平衡樹(shù),樹(shù)形結(jié)構(gòu)廣泛應(yīng)用于手機(jī)和物聯(lián)網(wǎng)等芯片設(shè)計(jì)中;而網(wǎng)狀型時(shí)鐘結(jié)構(gòu)需要大量的手工工作,并經(jīng)過(guò)大量的嘗試調(diào)整之后才能體現(xiàn)出優(yōu)勢(shì),其見(jiàn)諸于高性能計(jì)算芯片中。
數(shù)字同步邏輯電路時(shí)鐘樹(shù)實(shí)現(xiàn)方案的合理選擇才能使得CPU的高性能不是浮云。例如,網(wǎng)狀型(Mesh)、魚(yú)骨型(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)偏大、布線資源開(kāi)銷大,而魚(yú)骨型結(jié)構(gòu)由于子樹(shù)手工劃分比較難,手工操作比較多。目前以Flexible H-tree(縮寫(xiě)為FlexHtree)結(jié)構(gòu)為代表的時(shí)鐘樹(shù)近年來(lái)廣泛應(yīng)用于ARM架構(gòu)處理器,其特點(diǎn)是使用靈活、功耗低、各工藝端角(corner)下時(shí)鐘偏差比較小。
本文將以帶多末梢點(diǎn)(multi-tap)的FlexHtree作為研究對(duì)象,嘗試在降低clock skew的同時(shí)不對(duì)建立時(shí)序(setup)和功耗帶來(lái)明顯的影響。本文的設(shè)計(jì)結(jié)果給高性能CPU的時(shí)鐘樹(shù)設(shè)計(jì)提供了一個(gè)較優(yōu)的解決方案,同時(shí)對(duì)目前自主高性能芯片的后端物理實(shí)現(xiàn)提供了工程參考。
1 Multi-tap FlexHtree和Fishbone時(shí)鐘結(jié)構(gòu)介紹
以高性能CPU為研究對(duì)象,本文主要討論和對(duì)比兩種時(shí)鐘結(jié)構(gòu),multi-tap FlexHtree和Fishbone,以下將從結(jié)構(gòu)及特點(diǎn)方面對(duì)兩種結(jié)構(gòu)進(jìn)行簡(jiǎn)單描述。
1.1 帶multi-tap的H-tree時(shí)鐘樹(shù)結(jié)構(gòu)
傳統(tǒng)單一的H-tree多用于Mesh、Fishbone時(shí)鐘結(jié)構(gòu)的前級(jí)驅(qū)動(dòng),或者部分對(duì)clock skew有要求的電路結(jié)構(gòu)進(jìn)行時(shí)鐘的平衡。圖1中所示帶multi-tap點(diǎn)的H-tree的結(jié)構(gòu)可以與時(shí)鐘樹(shù)綜合(CTS)相結(jié)合來(lái)控制整個(gè)時(shí)鐘樹(shù)的clock skew[1]。時(shí)鐘根節(jié)點(diǎn)(root pin)可以是時(shí)鐘輸入端口,也可以是時(shí)鐘緩沖器,借助H-tree將時(shí)鐘信號(hào)傳遞到各個(gè)葉節(jié)點(diǎn)(sink)。最上面7個(gè)驅(qū)動(dòng)器組成了H-tree的“H”形結(jié)構(gòu),當(dāng)tap點(diǎn)比較多時(shí)可以采用多級(jí)的H-tree網(wǎng)絡(luò)實(shí)現(xiàn)tap點(diǎn)之間的多工藝端角(multi-corner)下時(shí)鐘延遲的平衡。最后一級(jí)驅(qū)動(dòng)器為子樹(shù)的根節(jié)點(diǎn),該子樹(shù)可以使用普通的CTS完成。
FlexHtree結(jié)構(gòu)具有實(shí)現(xiàn)流程簡(jiǎn)單,易于嵌入到整個(gè)P&R(布局和布線)流程中實(shí)現(xiàn)的特點(diǎn)。并且對(duì)于含有存儲(chǔ)器(memory)和宏模塊(macro)的布局也可以采用H-tree實(shí)現(xiàn)。還有其對(duì)時(shí)鐘門控單元(clock gating)結(jié)構(gòu)的復(fù)雜度也沒(méi)有過(guò)多要求。由于其不需要過(guò)分關(guān)注H-tree上時(shí)鐘緩沖器和時(shí)鐘主干的幾何對(duì)稱性,只要能保證在multi-corner下RC參數(shù)的電氣對(duì)稱性也可實(shí)現(xiàn)clock skew的降低。而對(duì)于傳統(tǒng)的H-tree,出于幾何對(duì)稱性的考慮,必須對(duì)H-tree sink數(shù)量以及sink位置進(jìn)行約束[1]。
1.2 Fishbone時(shí)鐘結(jié)構(gòu)
顧名思義,F(xiàn)ishbone時(shí)鐘結(jié)構(gòu)就是其形狀類似于魚(yú)骨頭的一種時(shí)鐘結(jié)構(gòu)。依據(jù)主干的條數(shù),通常將Fishbone時(shí)鐘網(wǎng)絡(luò)分為單魚(yú)骨結(jié)構(gòu)、雙魚(yú)骨結(jié)構(gòu)與多魚(yú)骨結(jié)構(gòu)。圖2中是一個(gè)單魚(yú)骨結(jié)構(gòu)的示意圖,灰色三角形為前級(jí)驅(qū)動(dòng)器,白色三角形為主干驅(qū)動(dòng)器?;疑珵闀r(shí)鐘分支。Fishbone前級(jí)驅(qū)動(dòng)一般多采用H-tree結(jié)構(gòu)來(lái)驅(qū)動(dòng)多扇入緩沖器陣列,根據(jù)負(fù)載點(diǎn)的數(shù)量來(lái)選擇金字塔形狀的多扇入驅(qū)動(dòng)緩沖器陣列級(jí)數(shù)。正是由于最后一級(jí)主干驅(qū)動(dòng)器并聯(lián)提供的驅(qū)動(dòng)能力,魚(yú)骨(trunk)才可以“橫穿”整個(gè)floorplan,保證每根魚(yú)刺(branch)上的局部緩沖器時(shí)鐘到達(dá)延時(shí)相同。這里的局部緩沖器作為子樹(shù)的根節(jié)點(diǎn),使用CTS生成時(shí)鐘樹(shù)。
Fishbone結(jié)構(gòu)的優(yōu)點(diǎn)是skew小,時(shí)鐘latency短,OCV小,只需要很少的緩沖器,功耗低,布線開(kāi)銷小,可實(shí)現(xiàn)useful skew。缺點(diǎn)就是不能自動(dòng)化,需要大量手工調(diào)整[2]。其比較適用于長(zhǎng)條形較為對(duì)稱的floorplan。
2 Multi-tap FlexHtree實(shí)現(xiàn)
本節(jié)主要介紹FlexHtree的時(shí)鐘樹(shù)綜合流程,對(duì)各步驟進(jìn)行了說(shuō)明。然后分別討論tap點(diǎn)個(gè)數(shù)對(duì)clock skew的影響,并對(duì)比了子樹(shù)使用innovus ICTS和CCOPT引擎生成時(shí)鐘樹(shù)對(duì)時(shí)序的影響。本節(jié)也同時(shí)對(duì)比了CTS、FlexHtree和Fishbone 3種結(jié)構(gòu)實(shí)現(xiàn)時(shí)鐘樹(shù)的clock skew變化,指導(dǎo)芯片設(shè)計(jì)者更進(jìn)一步挖掘3種結(jié)構(gòu)的特點(diǎn)。
2.1 FlexHtree時(shí)鐘樹(shù)綜合流程
圖3所示為使用Cadence innovus工具綜合帶multi-tap的FlexHtree的流程,先將做完memory、macro和標(biāo)準(zhǔn)單元布局的數(shù)據(jù)庫(kù)作為FlexHtree綜合的起點(diǎn),此時(shí)數(shù)據(jù)路徑延時(shí)優(yōu)化已經(jīng)做好。具體步驟:(1)工具依據(jù)標(biāo)準(zhǔn)時(shí)序約束(SDC)來(lái)創(chuàng)建時(shí)鐘樹(shù)spec;(2)定義時(shí)鐘樹(shù)繞線規(guī)則,對(duì)時(shí)鐘主干和分支指定不同的繞線規(guī)則;(3)確定時(shí)鐘樹(shù)設(shè)計(jì)約束,以達(dá)到預(yù)期的skew、transition和時(shí)鐘緩沖器扇出數(shù)量;(4)定義FlexHtree創(chuàng)建規(guī)范,如時(shí)鐘源點(diǎn)、是否對(duì)稱、tap點(diǎn)個(gè)數(shù)及位置區(qū)域等;(5)對(duì)定義的Flex-Htree主干進(jìn)行綜合,綜合之后檢查tap點(diǎn)位置及trunk繞線是否比較合理;(6)對(duì)放好的multi-tap點(diǎn)創(chuàng)建時(shí)鐘以及定義時(shí)鐘分組;(7)對(duì)定義子樹(shù)進(jìn)行綜合,子樹(shù)內(nèi)部可以采取平衡樹(shù),也可以采取借用useful skew的不平衡樹(shù),此時(shí)子樹(shù)綜合后的時(shí)序不理想就要分析子樹(shù)的劃分是否合理,是否依據(jù)邏輯關(guān)系、物理位置進(jìn)行了合理的掛載,同時(shí)要注意單個(gè)子樹(shù)的clock latency是否過(guò)長(zhǎng)。
用帶multi-tap點(diǎn)FlexHtree實(shí)現(xiàn)時(shí)鐘樹(shù)的難點(diǎn)在于tap點(diǎn)數(shù)量的確定以及不同tap點(diǎn)下合理掛載sink問(wèn)題。
2.2 不同tap點(diǎn)個(gè)數(shù)對(duì)clock skew影響
本節(jié)tap點(diǎn)子樹(shù)使用了ICTS引擎進(jìn)行平衡樹(shù)生成,保證tap點(diǎn)以下子樹(shù)內(nèi)的clock latency也能做平。為了探討不同tap點(diǎn)對(duì)clock skew的影響,分別選取了4、6、8、18個(gè)tap點(diǎn)生成FlexHtree,圖4為tap點(diǎn)個(gè)數(shù)與clock skew分布關(guān)系圖。橫軸為clock skew范圍,每50 ps一個(gè)步長(zhǎng),縱軸是各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來(lái)修保持時(shí)序(hold)違反有關(guān)系;圖4(b)和圖4(c)中正的useful skew集中于25 ps~100 ps,說(shuō)明工具將時(shí)鐘樹(shù)做得比較平衡,而圖4(a)和圖4(d)比較離散,時(shí)鐘樹(shù)做得不是很平。對(duì)hold折線來(lái)說(shuō),圖4(b)和圖4(c)的skew分布更為集中在-75 ps~0 ps和25 ps~175 ps這兩個(gè)區(qū)間,因此其setup時(shí)序好于其他兩者。圖4(c)中clock skew更為集中在-75 ps~0 ps以及25 ps~125 ps區(qū)間,這說(shuō)明8個(gè)tap點(diǎn)在兼顧setup時(shí)序的同時(shí)也修了hold。從4個(gè)圖中可以看出8個(gè)tap點(diǎn)下clock skew較小,且比較集中, setup和hold好于其他3種情況。
2.3 Multi-tap FlexHtree tap點(diǎn)合理劃分分析
為了深一步搞清楚8個(gè)tap點(diǎn)下時(shí)序好的原因,圖5提供了8個(gè)tap點(diǎn)FlexHtree在floorplan中的sink分布。從圖中可以看出,本設(shè)計(jì)為典型的長(zhǎng)方形結(jié)構(gòu),memory成對(duì)稱放置,沿上下出pin區(qū)域左右兩邊分別歸屬于l3c_pipeline_0和l3c_pipeline_1 module。圖中8塊位置用不同顏色以及邊界折線區(qū)分開(kāi)來(lái),同時(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距離過(guò)遠(yuǎn)和tap點(diǎn)下所帶sink數(shù)過(guò)大導(dǎo)致的子樹(shù)clock latency偏大,從而不利于子樹(shù)間talk path時(shí)序的收斂。圖5中module的切分考慮到了減少talk path,更多將某些小的module都掛載到一個(gè)tap點(diǎn)下,因此這種8個(gè)tap的定義才獲得了時(shí)序容易滿足的好處。
表1為8個(gè)tap點(diǎn)所帶sink數(shù)目以及tap點(diǎn)common path clock latency(簡(jiǎn)稱CPCL)在子樹(shù)平均clock latency中百分比。從表中可以看出Htree_tap0下面掛載sink數(shù)量最多,對(duì)應(yīng)圖5liu_pre_processor module所在區(qū)域;Htree_tap1下掛載sink數(shù)量次之,對(duì)應(yīng)圖5 L3c_cfg和L3c_pipeline_0 module所在區(qū)域;Htree_tap4下掛載sink數(shù)量最少,對(duì)應(yīng)圖5中間右下位置L3c_pipeline_1 module區(qū)域。其他tap點(diǎn)下掛載sink數(shù)量基本接近。8個(gè)tap點(diǎn)下CPCL都在40%以上,這樣OCV對(duì)tap點(diǎn)下sink的影響就沒(méi)那么大。從tap點(diǎn)下sink數(shù)量與CPCL的對(duì)應(yīng)關(guān)系看,Htree_tap0和Htree_tap1并沒(méi)有因?yàn)閟ink數(shù)量多平均clock latency就越大,出現(xiàn)這種情況說(shuō)明工具對(duì)tap0和tap1 sink切分合理,子樹(shù)下sink clock latency做得比較平。從另外一個(gè)方面來(lái)看,8個(gè)tap點(diǎn)的CPCL百分之間偏差不大,8個(gè)子樹(shù)之間做得也比較平,這樣對(duì)子樹(shù)間hold響主要就是OCV了。所以,分析FlexHtree做得好不好,可以從子樹(shù)sink module劃分、物理位置、子樹(shù)sink數(shù)目和CPCL百分比出發(fā)。
圖6為8個(gè)tap點(diǎn)在5個(gè)不同corner下公共clock latency的比較圖。從柱狀圖中可以看出tap點(diǎn)時(shí)鐘clock latency在不同corner下的偏差不超過(guò)70 ps,tap點(diǎn)之間的clock latency相差不到3 ps,這也證實(shí)了前面1.1節(jié)所提到的FlexHtree特點(diǎn):multi-corner下RC參數(shù)的電氣對(duì)稱性,以及tap點(diǎn)之間的RC參數(shù)電氣對(duì)稱性。這樣保證了各corner下時(shí)序的一致性。
2.4 使用平衡和非平衡樹(shù)綜合tap點(diǎn)子樹(shù)
本節(jié)中討論了分別使用innovus的ICTS和CCOPT引擎綜合tap點(diǎn)子樹(shù)的時(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é)果來(lái)看,8個(gè)tap點(diǎn)效果最好,不論setup和hold;tap點(diǎn)多的情況下hold的wns和tns會(huì)好于tap點(diǎn)少的情況。
將表2與表3進(jìn)行比較可知,使用CCOPT引擎綜合的子樹(shù)對(duì)于4個(gè)、6個(gè)和8個(gè)tap點(diǎn)時(shí)wns和tns均會(huì)變差,但tap點(diǎn)為18個(gè)時(shí),setup的wns和tns會(huì)變好。因此可以得出如下結(jié)論:tap點(diǎn)多更適合于降低hold違反條數(shù),在tap點(diǎn)比較多情況下,使用CCOPT引擎綜合子樹(shù)的時(shí)序效果好于ICTS引擎。
3 3種不同結(jié)構(gòu)實(shí)現(xiàn)時(shí)鐘樹(shù)時(shí)序、面積和功耗比較
本節(jié)將3種不同結(jié)構(gòu)時(shí)鐘樹(shù)FlexHtree、CCOPT和Fishbone從時(shí)序、面積和功耗方面進(jìn)行比較,進(jìn)而選出一種更優(yōu)的時(shí)鐘樹(shù)實(shí)現(xiàn)方案。從表4中可以看出8個(gè)tap點(diǎn)的FlexHtree setup和hold時(shí)序均要好于CCOPT和Fishbone結(jié)構(gòu),從側(cè)面也反映了8個(gè)tap點(diǎn)方案對(duì)clock skew控制要好于另外兩種結(jié)構(gòu),并且其density利用率也是最低的,從clock buff count也進(jìn)一步證明了其使用了較少的useful skew。從average clock latency來(lái)看,由于FlexHtree使用了高層繞線,其值要低于CCOPT,但高于Fishbone。從功耗來(lái)看,F(xiàn)lexHtree的功耗,尤其是使用ICTS引擎綜合子樹(shù)的FlexHtree,其clock network功耗要高于CCOPT和Fishbone結(jié)構(gòu)。表格中一個(gè)顯著的特征就是,F(xiàn)ishbone結(jié)構(gòu)時(shí)鐘樹(shù)功耗最小,這與其占用的布線資源少、使用的時(shí)鐘緩沖器少有直接的關(guān)系。但是對(duì)于Fishbone結(jié)構(gòu),由于必須手工進(jìn)行,子樹(shù)的劃分是一個(gè)難題,本文也只是做了大量的嘗試,但時(shí)序結(jié)果看起來(lái)并未有多少好處。這也是本文選用FlexHtree的原因。
4 結(jié)論
本文在innovus工具平臺(tái)下建立了帶multi-tap的FlexHtree自動(dòng)化時(shí)鐘樹(shù)綜合流程。使用innovus實(shí)現(xiàn)了4、6、8和18個(gè)tap點(diǎn)的FlexHtree,同時(shí)針對(duì)tap點(diǎn)子樹(shù)要不要做平,分別選用了ICTS和CCOPT進(jìn)行子樹(shù)的綜合。為了更深入地說(shuō)明為何選用FlexHtree結(jié)構(gòu),也嘗試了CCOPT綜合和Fishbone手工實(shí)現(xiàn)時(shí)鐘樹(shù)的方案,從clock skew、時(shí)序、面積和功耗等方面進(jìn)行了比較,最終確定了使用FlexHtree方案實(shí)現(xiàn)L3 cache設(shè)計(jì)。同時(shí)本文也對(duì)FlexHtree tap點(diǎn)合理劃分進(jìn)行了分析,有利于接下來(lái)對(duì)tap點(diǎn)位置和sink掛載進(jìn)一步優(yōu)化,控制clock skew,實(shí)現(xiàn)setup和hold均比較容易收斂的結(jié)果。本文的結(jié)果也對(duì)類似memory比較多的設(shè)計(jì)提供直接的時(shí)鐘樹(shù)設(shè)計(jì)經(jīng)驗(yàn),同時(shí)本文的分析方法也可以指導(dǎo)設(shè)計(jì)者探索時(shí)鐘樹(shù)物理空間。
參考文獻(xiàn)
[1] Cadence.Flexible H-tree and multi-tap clock flow in innovus version 17.10[Z].2017.
[2] 曾艷飛.魚(yú)骨型時(shí)鐘結(jié)構(gòu)的研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2012.
作者信息:
彭書(shū)濤1,黃 薇1,邊少鮮1,杜廣山2
(1.天津飛騰信息技術(shù)有限公司,天津102209;2.上??请娮涌萍加邢薰荆虾?01204)