ASIC后端設(shè)計(jì)中的時(shí)鐘樹綜合
0 引言
在大規(guī)模高性能的ASIC設(shè)計(jì)中,對(duì)時(shí)鐘偏移(Clock Skew)的要求越來越嚴(yán)格,時(shí)鐘偏移是限制系統(tǒng)時(shí)鐘頻率的主要因素。而時(shí)鐘樹綜合又是減小時(shí)鐘偏移的有效途徑,因此它是ASIC后端設(shè)計(jì)中最重要的環(huán)節(jié)之一。本文以基于SOC Encounter,采用SMIC0.18μm工藝進(jìn)行的FFT處理器的版圖設(shè)計(jì)為例,提出在設(shè)計(jì)過程中如何減小時(shí)鐘偏移,結(jié)合手動(dòng)優(yōu)化幫助工具設(shè)計(jì)出更好的時(shí)鐘樹。
1 時(shí)鐘偏移產(chǎn)生的原因分析
同一時(shí)鐘源到達(dá)各個(gè)同步單元的最大時(shí)間差稱作時(shí)鐘偏移。產(chǎn)生時(shí)鐘偏移的原因有:時(shí)鐘源到各個(gè)時(shí)鐘端點(diǎn)的路徑長(zhǎng)度不同;各個(gè)端點(diǎn)負(fù)載不同;在時(shí)鐘網(wǎng)中插入的緩沖器不同等。時(shí)鐘偏差過大會(huì)引起同步電路功能混亂。
在圖1中,假設(shè)CLK到達(dá)reg1和reg2的時(shí)間差最大,為dskew,組合邏輯C的延時(shí)為dc,寄存器的延時(shí)為d,其建立時(shí)間約束為dsetup,保持時(shí)間為dhold,時(shí)鐘周期為T。滿足建立時(shí)間的要求是在CLK2跳變前的dsetup時(shí)間,reg2上D端的數(shù)據(jù)應(yīng)該穩(wěn)定,考慮最壞情況reg1比reg2晚dskew,這時(shí)滿足的時(shí)間關(guān)系應(yīng)該是:
滿足保持時(shí)間的要求是:在CLK2跳變后的dhold時(shí)間內(nèi),reg2上D端的數(shù)據(jù)必須保持穩(wěn)定,考慮最壞情況reg1比reg2早dskew,這時(shí)滿足的時(shí)間關(guān)系應(yīng)該是:
由此可見,時(shí)鐘偏移對(duì)電路速度和時(shí)鐘頻率的限制是很大的,而寄存器的保持時(shí)間、建立時(shí)間和自身的延時(shí),都是與器件單元本身的結(jié)構(gòu)和性質(zhì)有關(guān),依賴于工藝的改進(jìn)來進(jìn)一步減小,所以減小skew成為后端設(shè)計(jì)重要內(nèi)容,也是提高電路速度的關(guān)鍵。
2 SOC Encounter的時(shí)鐘樹綜合
SOC Encounter的時(shí)鐘樹綜合在完成布局之后進(jìn)行,可以采用手動(dòng)模式和自動(dòng)模式。手動(dòng)模式能控制時(shí)鐘樹的層次、buffer的數(shù)目和每層加入buffer的類型。自動(dòng)模式根據(jù)時(shí)鐘樹定義文件自動(dòng)決定時(shí)鐘樹的層次和buffer的數(shù)目。時(shí)鐘樹綜合從外部時(shí)鐘輸入端口自動(dòng)遍歷整個(gè)時(shí)鐘樹,遍歷完成后加入buffer用來平衡時(shí)鐘樹。SOC Encounter的時(shí)鐘樹綜合流程如圖2所示。
2.1 布局階段對(duì)時(shí)序的優(yōu)化考慮
布局的好壞直接影響到時(shí)序的好壞。本設(shè)計(jì)采用時(shí)序驅(qū)動(dòng)布局,時(shí)序驅(qū)動(dòng)布局是基于連續(xù)收斂引擎而設(shè)計(jì)的,工具自動(dòng)的尋找一些最關(guān)鍵路徑,將關(guān)鍵路徑上的單元放得很近,以減小連線長(zhǎng)度來減小關(guān)鍵路徑時(shí)延,平衡其setup時(shí)間約束,預(yù)先為這些關(guān)鍵路徑留出足夠的布線空間,提高關(guān)鍵信號(hào)線的可布通性。同時(shí),為了減少擁塞度,對(duì)布局時(shí)的最大密度設(shè)置為70%,限制布局密度。時(shí)序驅(qū)動(dòng)布局采用setPlace-Mode-timingDriven命令設(shè)置布局模式,plaeeDesign命令執(zhí)行布局。
如果只是依賴工具的時(shí)序驅(qū)動(dòng)布局是不夠的,為了盡量減小時(shí)鐘偏移(Skew),采取的策略是,在時(shí)序驅(qū)動(dòng)布局的基礎(chǔ)上,進(jìn)行手動(dòng)的布局調(diào)整,根據(jù)時(shí)鐘的不同,將各時(shí)鐘控制的寄存器擺在靠近時(shí)鐘源(Clock-source)差不多遠(yuǎn)的位置。這樣,同一時(shí)鐘到達(dá)各寄存器的時(shí)間差就不會(huì)太大,有利于減少插入buffer的數(shù)量,也有利于Skew的減小。
2.2 時(shí)鐘樹綜合時(shí)的特殊處理
在時(shí)鐘樹綜合之前,需要通過時(shí)鐘樹約束文件來設(shè)置綜合需要用到的buffer類型、時(shí)鐘偏移的目標(biāo)值MaxSkew、最大時(shí)延MaxDelay、最小時(shí)延MinDelay、最大扇出MaxFanout、時(shí)鐘樹布線規(guī)則等。本設(shè)計(jì)選用驅(qū)動(dòng)能力為中間值的buffer類型來做時(shí)鐘樹綜合,因?yàn)轵?qū)動(dòng)能力大的buffer,面積也大,如果插入這種buffer太多,會(huì)對(duì)芯片的功耗和面積產(chǎn)生影響,而且這種buffer對(duì)于上一級(jí)也意味著更大的負(fù)載;驅(qū)動(dòng)能力太小的buffer雖然面積小點(diǎn),但是會(huì)增加時(shí)鐘級(jí)數(shù),產(chǎn)生的延時(shí)卻是很大的,所以buffer的選擇一定要適當(dāng),本設(shè)計(jì)在選用buffer時(shí),將驅(qū)動(dòng)能力最大的BUFHD20X和驅(qū)動(dòng)能力最小的BUFHDLX去掉不選用。
對(duì)于Skew要求比較嚴(yán)格的設(shè)計(jì),可以將時(shí)鐘偏移目標(biāo)值MaxSkew設(shè)置盡量小,工具在綜合時(shí)會(huì)盡量的將Skew優(yōu)化到接近到該目標(biāo)值。但一般設(shè)計(jì)中,只要Skew能滿足要求,就不要過分的將該值設(shè)小,因?yàn)楣ぞ邽榱私咏撃繕?biāo)值會(huì)插入大量的buffer,從而占用太多的面積和太多功耗。因此,本設(shè)計(jì)選用MaxSkew的適當(dāng)值為100ps。
時(shí)鐘樹布線規(guī)則是可以通過手動(dòng)設(shè)置的,為了讓時(shí)序路徑的布線降低功耗,減小線路的延時(shí),一般將時(shí)序路徑的布線寬度和間距都設(shè)置的比默認(rèn)值大,本設(shè)計(jì)采取一般信號(hào)線的兩倍寬度和間距來布時(shí)鐘信號(hào)線。而且在布線的時(shí)候,采取時(shí)鐘樹優(yōu)先布線的策略,充分保證時(shí)鐘樹路徑的布通。經(jīng)過encounter工具自動(dòng)CTS后的時(shí)鐘樹分布圖如圖3所示。
2.3 時(shí)鐘樹的手動(dòng)優(yōu)化
工具自動(dòng)的時(shí)鐘樹綜合總是會(huì)有一些skew沒有滿足設(shè)計(jì)要求,工具自動(dòng)插入的一些buffer也不一定都合理,一般情況下,encounter自動(dòng)綜合產(chǎn)生的時(shí)鐘樹是不滿足要求的,在經(jīng)過了時(shí)序分析后要進(jìn)行必要的修復(fù)優(yōu)化??偟脑瓌t就是想辦法平衡各線路的延時(shí),一般的優(yōu)化途徑有以下一些:
(1)在時(shí)鐘信號(hào)源(Clock Source)處手動(dòng)添加驅(qū)動(dòng)能力很大的drive cell,因?yàn)闀r(shí)鐘樹一般扇出很大,負(fù)載很大,所以在時(shí)鐘源點(diǎn)處需要驅(qū)動(dòng)能力大的門單元,更大驅(qū)動(dòng)能力的門單元可以明顯減少延時(shí)。
(2)替換(Re_sizing)驅(qū)動(dòng)能力不一樣的單元,尤其是buffer單元。時(shí)鐘樹綜合完成后,經(jīng)過仔細(xì)的時(shí)序分析后,根據(jù)時(shí)序分析結(jié)果報(bào)告,分析Skew違規(guī)原因,找出導(dǎo)致Skew違規(guī)的路徑,根據(jù)延時(shí)情況來替換一些驅(qū)動(dòng)能力不同的單元,如buffer等,使其延時(shí)情況與其他時(shí)鐘信號(hào)線相平衡,從而達(dá)到減小Skew的目的。
(3)添加buffer?;ミB線的延時(shí)與連線長(zhǎng)度的平方成正比,所以插入buffer可以將長(zhǎng)的關(guān)鍵路徑分成較小的連線,可以有效地減小互連線的延時(shí)。插入的buffer的驅(qū)動(dòng)能力的大小靠經(jīng)驗(yàn)估計(jì),插入后做時(shí)序分析,然后再做re_sizing,直到滿足延時(shí)要求。
經(jīng)過eneounter自動(dòng)時(shí)鐘樹綜合后,查看其CTS時(shí)序報(bào)告,如圖4所示,發(fā)現(xiàn)時(shí)鐘elk_pad的最大偏移值達(dá)到了152.4 ps,這樣與目標(biāo)值還有很大差距。經(jīng)過timing Debug跟蹤時(shí)鐘信號(hào),如圖5所示,從中找出一些Skew較大的線路,如從fft4442_inst/CT/M3_R_reg/Q到fft4442 _inst/PEII/pc42_in4_reg_76_/RN的延時(shí)太長(zhǎng),達(dá)到了27.035 ns,因?yàn)檫@樣的線路與其他信號(hào)線的延時(shí)相差比較大,它們之間的Skew就很容易違規(guī),必須減小它們的延時(shí)來減小Skew。
再進(jìn)一步查看該線路,發(fā)現(xiàn)有些單元,如FFDCRHD1X延時(shí)達(dá)到13.483 ns,HAND281HD1X延時(shí)達(dá)到8.578ns,INVHDPX也達(dá)到了4.209ns,而且該線路還插入了不少BUFHD1X,由于此類buffer的驅(qū)動(dòng)能力太小,從而導(dǎo)致了該線路的延時(shí)過大。于是,采用第二類修復(fù)辦法:替換(r-e_sizing)驅(qū)動(dòng)能力不一樣的buffer。于是調(diào)用Interactive ECO功能,手動(dòng)將延時(shí)太長(zhǎng)的單元FFDCRHD1X、HAND2B1HD1X等的尺寸替換為更大的,從而加強(qiáng)其驅(qū)動(dòng)能力,并將部分BUFHD1X替換成BUFHD4X等,再做了PostCTS optimization后,再進(jìn)行時(shí)序分析,這樣經(jīng)過幾輪反復(fù)的修復(fù),降低了一些線路的延時(shí),終于將時(shí)鐘CLK的Skew降到了93.3ps,如圖6所示,滿足了設(shè)計(jì)要求。從eneounter的CTS報(bào)告中可以看出,加上有針對(duì)性的手動(dòng)修復(fù)之后,對(duì)Skew的減小有明顯效果。
3 結(jié)語
隨著集成電路設(shè)計(jì)尺寸的減小和芯片運(yùn)行頻率的提高,時(shí)鐘偏移已經(jīng)成為影響ASIC芯片性能的關(guān)鍵因素。本文以對(duì)FFT處理器芯片的時(shí)鐘樹綜合為例,分析了時(shí)鐘偏移的產(chǎn)生機(jī)理及影響,從布局階段就開始關(guān)注時(shí)序的優(yōu)化,進(jìn)行了一系列的優(yōu)化設(shè)置。經(jīng)過時(shí)序分析證明,采取工具自動(dòng)綜合和手動(dòng)修復(fù)相結(jié)合的辦法,容易滿足設(shè)計(jì)要求,不僅可以提高綜合效率,還可以保證優(yōu)化的有效性。