吳雨臻 袁書偉 鐘傳杰
(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院 無錫 214122)
隨著半導(dǎo)體制造工藝的不斷發(fā)展,芯片集成度越來越高,規(guī)模越來越大,門級(jí)數(shù)目越來越多[1]。時(shí)鐘樹結(jié)構(gòu)的設(shè)計(jì)成為數(shù)字后端設(shè)計(jì)的重中之重。時(shí)鐘樹綜合(CTS)的主要目的是使時(shí)鐘偏差、相位延時(shí)盡量最小化,最大限度地為時(shí)序收斂服務(wù)[2]。在時(shí)鐘網(wǎng)絡(luò)中,通常應(yīng)用EDA工具生成二叉型時(shí)鐘樹結(jié)構(gòu)[3]。
這種方法實(shí)現(xiàn)時(shí)間短,但使用的緩沖器較多,時(shí)鐘級(jí)數(shù)與時(shí)鐘延時(shí)較大,影響時(shí)序收斂[4],更重要的是OCV(On Chip Variation)難以避免會(huì)發(fā)生[5]。在實(shí)際情況中,芯片級(jí)(TOP)設(shè)計(jì)中時(shí)鐘樹網(wǎng)絡(luò)的負(fù)載包括觸發(fā)器與模塊單元(Block)。通常負(fù)載為模塊單元的時(shí)鐘路徑延時(shí)相對(duì)很大,最終導(dǎo)致時(shí)鐘樹的最大延時(shí)過大,造成很大的時(shí)鐘偏差[6]。同時(shí),在芯片級(jí)設(shè)計(jì)中,芯片面積很大,時(shí)鐘路徑互連線很長(zhǎng),使用傳統(tǒng)CTS方法生成的時(shí)鐘樹不能提供很好的時(shí)鐘傳輸速度,也難以避免噪聲的影響。
針對(duì)大規(guī)模芯片級(jí)后端設(shè)計(jì),本文提出了一種發(fā)散性時(shí)鐘樹結(jié)構(gòu),利用該方法可以解決傳統(tǒng)CTS產(chǎn)生的芯片級(jí)時(shí)鐘樹中時(shí)鐘繞線過長(zhǎng)、噪聲過大等缺點(diǎn),得到更小的時(shí)鐘延時(shí)與更小的時(shí)鐘偏差,以滿足時(shí)序要求。
結(jié)果表明,在芯片級(jí)設(shè)計(jì)中,通過該方法實(shí)現(xiàn)的時(shí)鐘樹比傳統(tǒng)二叉樹型時(shí)鐘樹減少了27%的時(shí)鐘延時(shí)和22%的時(shí)鐘偏差,且大幅度減少了59%的串?dāng)_噪聲,從而大量減少時(shí)序違例的數(shù)目。
局部的發(fā)散型時(shí)鐘樹結(jié)構(gòu)如圖1所示,即使用驅(qū)動(dòng)能力強(qiáng)大的多級(jí)驅(qū)動(dòng)器將時(shí)鐘信號(hào)由時(shí)鐘源點(diǎn)推至芯片中心,再由該點(diǎn)針對(duì)負(fù)載分布進(jìn)行時(shí)鐘發(fā)散,將芯片分為若干區(qū)域,各區(qū)域分別實(shí)現(xiàn)負(fù)載為觸發(fā)器的二叉樹時(shí)鐘樹與多級(jí)驅(qū)動(dòng)器直接驅(qū)動(dòng)負(fù)載為模塊單元的時(shí)鐘樹相結(jié)合的方法。
圖2為發(fā)散型時(shí)鐘樹結(jié)構(gòu)的基本設(shè)計(jì)流程。
在完成芯片的模塊布局和標(biāo)準(zhǔn)單元放置以后,計(jì)算時(shí)鐘傳輸路徑的距離,根據(jù)多級(jí)驅(qū)動(dòng)的驅(qū)動(dòng)能力,每隔一定距離插入多級(jí)驅(qū)動(dòng)以推動(dòng)時(shí)鐘信號(hào),以此保證時(shí)鐘信號(hào)具有較小的傳輸延時(shí)。將時(shí)鐘信號(hào)推至芯片中心點(diǎn)后,根據(jù)負(fù)載情況對(duì)芯片進(jìn)行區(qū)域劃分,同樣根據(jù)多級(jí)驅(qū)動(dòng)的驅(qū)動(dòng)能力來決定一個(gè)多級(jí)驅(qū)動(dòng)能驅(qū)動(dòng)的時(shí)鐘路徑數(shù)目,將時(shí)鐘信號(hào)分別傳輸至不同的區(qū)域。在時(shí)鐘信號(hào)到達(dá)各個(gè)區(qū)域之后,對(duì)不同類型的負(fù)載進(jìn)行分離處理。模塊單元負(fù)載采用直接由處于各個(gè)區(qū)域點(diǎn)的多級(jí)驅(qū)動(dòng)器直接驅(qū)動(dòng)的方法;觸發(fā)器負(fù)載則采用傳統(tǒng)的二叉樹型時(shí)鐘樹結(jié)構(gòu),以此降低時(shí)鐘延時(shí),平衡負(fù)載類型不同所造成的時(shí)鐘偏差。
本文以工程編號(hào)為MD-GRAPE的芯片級(jí)模塊為例,實(shí)現(xiàn)發(fā)散型時(shí)鐘樹結(jié)構(gòu)。該芯片采用TSMC40nm工藝,芯片尺寸為18000μm×18000μm,主時(shí)鐘SCLK的工作頻率為600MHz。
芯片級(jí)設(shè)計(jì)面積巨大,時(shí)鐘緩沖器需具有很大的驅(qū)動(dòng)能力,多個(gè)緩沖器并聯(lián)組成的多級(jí)驅(qū)動(dòng)器可以提供較大的驅(qū)動(dòng)能力,以此推動(dòng)時(shí)鐘信號(hào)。
本設(shè)計(jì)選擇了一種由驅(qū)動(dòng)能力和面積相對(duì)較大的CKBD24BWP緩沖器所組成的多級(jí)驅(qū)動(dòng)器。典型的多級(jí)驅(qū)動(dòng)器為二級(jí)驅(qū)動(dòng)器,由一個(gè)第一級(jí)CKBD24BWP緩沖器推動(dòng)4個(gè)次級(jí)CKBD24BWP緩沖器組成。
CKBD24BWP單元的時(shí)序信息庫中上拉轉(zhuǎn)換組(rise_transition_group)如圖3所示。
通過查閱TSMC提供的靜態(tài)時(shí)序分析(STA)指導(dǎo)文檔可知,TSMC40nm工藝對(duì)于時(shí)鐘路徑上的最大電平轉(zhuǎn)換時(shí)間約束為150ps,但對(duì)于芯片級(jí)設(shè)計(jì)而言,時(shí)鐘樹級(jí)數(shù)相較于模塊級(jí)設(shè)計(jì)而言通常會(huì)更多,各級(jí)單元的電平轉(zhuǎn)換時(shí)間會(huì)在更長(zhǎng)的時(shí)鐘路徑上疊加,使芯片級(jí)的時(shí)鐘延時(shí)相比于模塊級(jí)設(shè)計(jì)而言更大。通過反復(fù)試驗(yàn)比較,在芯片級(jí)設(shè)計(jì)中,當(dāng)時(shí)鐘路徑最大電平轉(zhuǎn)換時(shí)間控制在50ps以下時(shí),時(shí)序能夠達(dá)到可接受的范圍。通過對(duì)比上拉轉(zhuǎn)換組信息可知,第五行第五列,即輸入電平轉(zhuǎn)換時(shí)間約為55ps,輸出電平轉(zhuǎn)換時(shí)間約為43ps時(shí),比較符合設(shè)計(jì)要求。此時(shí)每個(gè)CKBD24BWP緩沖器可驅(qū)動(dòng)的負(fù)載電容為0.1265pF,即每個(gè)第二級(jí)緩沖器數(shù)目為4的多級(jí)驅(qū)動(dòng)器可驅(qū)動(dòng)電容約為0.506pF的負(fù)載。
主時(shí)鐘SCLK由PLL_SCLK的PLL_SCLK/FOUTPOSTDIV輸出端輸出,距離芯片中心點(diǎn)約15000μm。為減小時(shí)鐘延時(shí)、降低時(shí)鐘偏差,首先需要將時(shí)鐘信號(hào)傳輸至芯片的中心點(diǎn)。
由于多級(jí)驅(qū)動(dòng)器需要驅(qū)動(dòng)較強(qiáng)信號(hào),為防止電遷移效應(yīng),多級(jí)驅(qū)動(dòng)器選用線寬為1μm的互連線,同時(shí)信號(hào)繞線占用M2~M7層大量的繞線資源,容易造成串?dāng)_,因此,選用繞線資源更足的高層金屬層M8、M9用于時(shí)鐘走線,不同層間利用多通孔相連,以保證信號(hào)傳遞的可靠性[7]。
目前后端設(shè)計(jì)通常使用Synopsis公司的EDA工具PrimeTime進(jìn)行時(shí)序分析。在TSMC40nm工藝的設(shè)計(jì)中,通常約定不同單元之間互連線長(zhǎng)度需小于 4000μm,若互連線長(zhǎng)度超過 4000μm,通過PrimeTime進(jìn)行時(shí)序分析產(chǎn)生的誤差將會(huì)超過可接受的范圍。
在PrimeTime使用report_delay_caculation命令得知,每1000μm線寬為1μm的互連線負(fù)載電容值約為0.120pF,即每4000μm的互連線電容約為0.480pF,即單個(gè)典型的多級(jí)驅(qū)動(dòng)器可驅(qū)動(dòng)長(zhǎng)度約為4000μm的線寬為1μm的互連線。因此每4000μm插入一個(gè)多級(jí)驅(qū)動(dòng)器,使用4個(gè)典型多級(jí)驅(qū)動(dòng)器將時(shí)鐘信號(hào)傳輸至芯片中心點(diǎn)。
將時(shí)鐘信號(hào)傳輸至芯片中心位置后,根據(jù)芯片的負(fù)載分布情況對(duì)時(shí)鐘信號(hào)進(jìn)行發(fā)散,即通過多個(gè)多級(jí)驅(qū)動(dòng)器將時(shí)鐘信號(hào)推至不同的區(qū)域。時(shí)鐘發(fā)散的主要目的是將時(shí)鐘信號(hào)由高層金屬層更快的傳輸至距離負(fù)載更近的位置,降低時(shí)鐘延時(shí),減小互連線之間的串?dāng)_噪聲。
多級(jí)驅(qū)動(dòng)器所驅(qū)動(dòng)的總電容量包括負(fù)載電容、互連線電容以及寄生電容的總和[8]。在深亞微米設(shè)計(jì)中,較長(zhǎng)互連線的負(fù)載電容已經(jīng)遠(yuǎn)遠(yuǎn)大于標(biāo)準(zhǔn)單元和宏單元的負(fù)載電容,成為負(fù)載總電容的主要組成部分[9]。通過查找時(shí)序信息庫(lib)文件得知,芯片級(jí)設(shè)計(jì)中的模塊單元時(shí)鐘端輸入電容約為0.02pF~0.04pF,標(biāo)準(zhǔn)單元時(shí)鐘端輸入電容約為0.003pF~0.005pF,遠(yuǎn)遠(yuǎn)小于互連線的電容。因此,在進(jìn)行時(shí)鐘發(fā)散時(shí),各區(qū)域距離芯片中心點(diǎn)時(shí)鐘源點(diǎn)的距離是主要需要考慮的因素。
根據(jù)前后級(jí)單元互連線長(zhǎng)度不超過4000μm距離的設(shè)計(jì)規(guī)則,將時(shí)鐘信號(hào)由芯片中心位置傳輸至各區(qū)域負(fù)載周圍的時(shí)鐘路徑節(jié)點(diǎn)。為平衡時(shí)鐘延時(shí),降低時(shí)鐘偏差,在對(duì)時(shí)鐘信號(hào)發(fā)散結(jié)構(gòu)設(shè)計(jì)時(shí)需遵循以下原則:1)每一條由時(shí)鐘源點(diǎn)至各分支終點(diǎn)的路徑上的多級(jí)驅(qū)動(dòng)器數(shù)目必須一致;2)單個(gè)分支終點(diǎn)多級(jí)驅(qū)動(dòng)器距其不同負(fù)載的距離的均方差盡量?。?)不同分支終點(diǎn)的多級(jí)驅(qū)動(dòng)器距其負(fù)載最大距離之間的均方差盡量小。
時(shí)鐘發(fā)散后的時(shí)鐘結(jié)構(gòu)如圖4所示。時(shí)鐘信號(hào)由芯片中心點(diǎn)M點(diǎn)通過Ⅰ、Ⅱ、Ⅲ三點(diǎn)的多級(jí)驅(qū)動(dòng)器傳輸至A、B、C、D四個(gè)點(diǎn)的多級(jí)驅(qū)動(dòng)器,再分別傳輸至各區(qū)域總計(jì)16個(gè)時(shí)鐘分支終點(diǎn)。
完成時(shí)鐘發(fā)散后,需要對(duì)各分支路徑上的多級(jí)驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng)能力調(diào)整,以平衡各路徑的傳輸延時(shí)。芯片中心點(diǎn)的多級(jí)驅(qū)動(dòng)器到Ⅰ、Ⅱ、Ⅲ三點(diǎn)多級(jí)驅(qū)動(dòng)器的距離保持在4000μm以內(nèi),滿足PT分析時(shí)序的要求,但它共驅(qū)動(dòng)了三條總長(zhǎng)度為約為10000μm的互連線,總電容值約為1.20pF,因此芯片中心點(diǎn)選擇插入第二級(jí)緩沖器數(shù)目為8的多級(jí)驅(qū)動(dòng)器。同樣地,A、B點(diǎn)的多級(jí)驅(qū)動(dòng)器分別驅(qū)動(dòng)五個(gè)多級(jí)驅(qū)動(dòng)器,互連線負(fù)載總長(zhǎng)度約為15000μm,總電容值約為1.80pF,因此A、B選用第二級(jí)緩沖器數(shù)目為12的多級(jí)驅(qū)動(dòng)器。C、D點(diǎn)的多級(jí)驅(qū)動(dòng)器分別驅(qū)動(dòng)三個(gè)多級(jí)驅(qū)動(dòng)器,互連線負(fù)載總長(zhǎng)度約為8000μm,總電容約為0.960pF,因此C、D點(diǎn)選用第二級(jí)緩沖器數(shù)目為8的多級(jí)驅(qū)動(dòng)器。
由于觸發(fā)器負(fù)載與模塊單元負(fù)載的輸入電容相差較大,當(dāng)其處于同一平衡型時(shí)鐘樹時(shí),時(shí)鐘到達(dá)不同類型負(fù)載的時(shí)鐘延時(shí)差距較大,導(dǎo)致時(shí)鐘偏差較大[10],因此,對(duì)于觸發(fā)器負(fù)載,由于觸發(fā)器數(shù)目較多,采用EDA工具可自動(dòng)優(yōu)化時(shí)鐘偏差的平衡型二叉樹時(shí)鐘樹結(jié)構(gòu);對(duì)于模塊單元負(fù)載,由于其數(shù)目較少、負(fù)載電容較大,采用由多級(jí)驅(qū)動(dòng)器直接驅(qū)動(dòng)的時(shí)鐘樹結(jié)構(gòu)。
由16個(gè)分支終點(diǎn)的多級(jí)驅(qū)動(dòng)器分別分出兩條時(shí)鐘路徑,一條與一個(gè)就近的多級(jí)驅(qū)動(dòng)器相連,用于驅(qū)動(dòng)模塊單元;另一條與一個(gè)CKBD24BWP時(shí)鐘緩沖器相連,用于驅(qū)動(dòng)觸發(fā)器單元。對(duì)于每個(gè)與觸發(fā)器負(fù)載相連的CKBD24BWP緩沖器,首先使用ICC2命令create_generated_clock在其輸出端創(chuàng)建一個(gè)周期與SCLK周期相同的時(shí)鐘信號(hào),然后使用synthesize_clock_trees-clock針對(duì)每個(gè)generated clock進(jìn)行時(shí)鐘樹綜合。對(duì)于每個(gè)與模塊單元相連的最后一級(jí)的多級(jí)驅(qū)動(dòng)器,使用命令route_group將模塊單元時(shí)鐘輸入管腳與多級(jí)驅(qū)動(dòng)器的輸出端相連,發(fā)散型時(shí)鐘樹結(jié)構(gòu)生長(zhǎng)完成。完成后的發(fā)散型時(shí)鐘樹結(jié)構(gòu)如圖5所示。
在某些后端設(shè)計(jì)時(shí),以不影響芯片功能為前提,可更改器件尺寸,或者添加緩沖器和反相器,因此也可以在那些已經(jīng)很小的延遲路徑中插入幾個(gè)緩沖單元,這樣的skew值更佳[11]。
由于模塊單元使用多級(jí)驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),時(shí)鐘信號(hào)傳輸至模塊單元的延時(shí)是小于時(shí)鐘信號(hào)傳至觸發(fā)器負(fù)載的延時(shí)的。同時(shí),不同模塊內(nèi)部的時(shí)鐘延時(shí)也不同,這也會(huì)導(dǎo)致模塊之間時(shí)鐘偏差過大。為降低時(shí)鐘偏差,需要對(duì)時(shí)鐘樹進(jìn)行時(shí)鐘延時(shí)平衡。根據(jù)PrimeTime的時(shí)序報(bào)告,在不同模塊單元的時(shí)鐘輸入端插入不同的驅(qū)動(dòng)較小的緩沖器,適當(dāng)延遲時(shí)鐘信號(hào)傳輸至模塊時(shí)鐘輸入端的時(shí)間,以此平衡不同負(fù)載時(shí)鐘路徑的時(shí)鐘延時(shí),降低時(shí)鐘偏差。同時(shí)調(diào)整各個(gè)分支終點(diǎn)多級(jí)驅(qū)動(dòng)器包含的CKBD24BWP緩沖器數(shù)目,以此平衡不同模塊內(nèi)部時(shí)鐘延時(shí)不同造成的影響。
利用EDA工具PrimeTime分別對(duì)發(fā)散時(shí)鐘樹結(jié)構(gòu)與傳統(tǒng)二叉樹型平衡時(shí)鐘樹結(jié)構(gòu)進(jìn)行靜態(tài)時(shí)序仿真。為減少片上偏差導(dǎo)致的時(shí)序仿真誤差,PT使用AOCV(Advance OCV)基于路徑級(jí)數(shù)和物理距離設(shè)置不同下降因子的方法[12],精確報(bào)告出兩種時(shí)鐘樹的時(shí)序質(zhì)量。兩種時(shí)鐘樹的性能比較如表1所示。
由表1可知,在大規(guī)模芯片級(jí)設(shè)計(jì)中,傳統(tǒng)二叉樹型時(shí)鐘樹時(shí)鐘級(jí)數(shù)較多,延時(shí)很大,而且抗噪聲能力很差,導(dǎo)致了建立時(shí)間違例數(shù)較大。發(fā)散型時(shí)鐘樹相比于傳統(tǒng)二叉樹型時(shí)鐘延遲和時(shí)鐘偏差較小,抗噪聲能力更強(qiáng),能更好地為時(shí)序收斂服務(wù)。
表1 兩種時(shí)鐘樹的性能比較
在大規(guī)模芯片級(jí)后端設(shè)計(jì)中,通過本文方法實(shí)現(xiàn)的發(fā)散型時(shí)鐘樹比傳統(tǒng)二叉樹型時(shí)鐘樹減少了26%的時(shí)鐘延時(shí)和22%的時(shí)鐘偏差以及59%的噪聲,大大地減少了時(shí)序違例的數(shù)量,在數(shù)字后端芯片級(jí)設(shè)計(jì)中應(yīng)用前景廣泛。
[1]程鋒.超大規(guī)模集成電路布局算法研究[D].上海:上海交通大學(xué),2005.
[2]張玲,王澧.百萬門系統(tǒng)級(jí)芯片的時(shí)鐘樹設(shè)計(jì)[J].電子與封裝,2014,14(12):21-24.
[3]LIN H T,CHUANG Y L,YANG Z H,et al.Pulsed-latch utilization for clock-tree power optimization[J].IEEE Trans VLSI Syst,2014,22(4):721-733.
[4]陽若寧.一種低功耗集成電路的時(shí)鐘分布策略[J].中南林業(yè)科技大學(xué)學(xué)報(bào),2011,31(12):192-196.
[5]陳祺,林平分,張玥.超大規(guī)模集成電路中基于OCV的時(shí)序收斂方法[J].電子科技,2009,22(7):30-33.
[6]曾艷飛.魚骨型時(shí)鐘結(jié)構(gòu)的研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國防科學(xué)技術(shù)大學(xué),2012.
[7]Hou W,Liu D,Ho P H.Automatic register banking for low-power clock trees[C]//Quality of Electronic Design,2009.ISQED 2009.Quality Electronic Design.IEEE,2009:647-652.
[8]張巖,楊銀堂.一種新型分布式互連線功耗優(yōu)化模型[J].西安電子科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2014,41(4):36-40.
[9]孫驥.超大規(guī)模集成電路時(shí)鐘線網(wǎng)的布線及優(yōu)化算法研究[D].上海:上海交通大學(xué),2005.
[10]楊賀,嚴(yán)偉.點(diǎn)接魚骨型時(shí)鐘網(wǎng)路設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2016,33(7):11-14.
[11]童瓊,張曉林,蘇琳琳等.雙頻雙系統(tǒng)導(dǎo)航芯片的時(shí)鐘樹分析和設(shè)計(jì)[J]. 微電子學(xué),2011,41(2):246-250.
[12]嚴(yán)偉,范光宇,朱兆偉,鄭永力.一種改進(jìn)型FBT時(shí)鐘樹結(jié)構(gòu)[J].微電子學(xué),2017,47(1):92-95.