蔡沅坤,王仁平,孫恒
(福州大學(xué)物理與信息工程學(xué)院,福建 福州 350108)
隨著集成電路產(chǎn)業(yè)的不斷發(fā)展,特征尺寸不斷縮小,到了深亞微米工藝下,芯片功能受到工藝、電壓、溫度的影響更為嚴(yán)重,需要使用更多的工藝角來保證所設(shè)計(jì)的芯片在不同極端情況下能夠穩(wěn)定工作。同時(shí),隨著芯片測試需求的增加和芯片功能的增強(qiáng),芯片工作模式也在不斷增加。設(shè)計(jì)者除了保證芯片在不同的工藝角下時(shí)序收斂,也需要保證在各種工作模式下正常工作。對此,工藝角和芯片工作模式的增加使得芯片在時(shí)序收斂方面遭受較大的挑戰(zhàn)。所謂工藝角是指在保證芯片功能正確的前提下所表現(xiàn)出來的參數(shù)波動(dòng)的極端情況[1-2]。在以往設(shè)計(jì)過程中習(xí)慣性采用傳統(tǒng)的方法實(shí)現(xiàn)時(shí)序收斂,但在這過程中往往需要大量的人工操作進(jìn)行大工作量的反復(fù)迭代并且分析消除模式之間的影響,容易產(chǎn)生時(shí)序難以收斂的情況。除此以外,可測試性設(shè)計(jì)(Design for Test,DFT)技術(shù)也可以降低芯片功耗成本和測試成本,在DFT中的掃描鏈技術(shù)(Scan Chain)可以在短時(shí)間內(nèi)檢查芯片內(nèi)部各寄存器的好壞,早一步將因工藝缺陷和塵埃附著的損壞芯片在裸片階段檢測出來,可以防止損壞的芯片流入下一階段的設(shè)計(jì)中,從而避免造成更大損壞[3]。目前,很多知名電子設(shè)計(jì)自動(dòng)化EDA(Electronic Design Automation)公司已相繼發(fā)布了系統(tǒng)層面的電路設(shè)計(jì)軟件,被行業(yè)廣泛應(yīng)用[4]。本文采用了Synopsis公司IC Compiler軟件的MCMM設(shè)計(jì)技術(shù),以FD_Z801芯片設(shè)計(jì)為例,對比傳統(tǒng)時(shí)序收斂方法,證明了MCMM技術(shù)有效實(shí)現(xiàn)了時(shí)序快速收斂,縮短了設(shè)計(jì)周期。
時(shí)序分析的目的是檢查時(shí)序路徑延時(shí)是否符合時(shí)序約束要求,根據(jù)到達(dá)時(shí)間(arrival time)、要求時(shí)間(required time)和違例值(slack)判斷是否存在時(shí)序違約[6]。由于早期工具的限制,早期的時(shí)序分析方式是利用一套單元庫,在單一的情況下進(jìn)行時(shí)序分析。在邏輯綜合、自動(dòng)布局布線過程中選擇最差的工藝角。在最后時(shí)序signoff時(shí)更換成其他不同的庫,反復(fù)分析時(shí)序這一流程,如圖1所示。這一情況只能考慮到一種時(shí)序情況進(jìn)行邏輯綜合和布局布線,對此,在設(shè)計(jì)過程中需要預(yù)留足夠的裕量(margin)從而保證在最后時(shí)序signoff時(shí)能夠在其他工藝角下滿足時(shí)序。
對此EDA工具提供對建立時(shí)間和保持時(shí)間的時(shí)序分析分別設(shè)定不同的兩套單元庫。使用最差狀況(延遲最大)的庫處理建立時(shí)間,使用最佳狀況(延遲最小)的庫處理保持時(shí)間,該方法被稱為最佳-最差(best-case worst-case,BC-WC)分析。該方法的工作模式是:建立時(shí)間對時(shí)鐘頻率以及最長路徑總延時(shí)敏感,所以希望數(shù)據(jù)路徑延遲越小越好,對此采用最大延遲情況去分析,得到的結(jié)果是最悲觀的,如果該結(jié)果能夠滿足,則其他情況也能同時(shí)被滿足;同時(shí)保持時(shí)間希望數(shù)據(jù)路徑延遲越大越好,對此采用最小延遲情況去分析,以此覆蓋所有情況[5]。
該方法存在的問題:保持時(shí)間希望數(shù)據(jù)路徑來得越晚越好,但在最佳狀況下的保持時(shí)間裕量可能比最差狀況下的保持時(shí)間裕量大。這說明使用最佳狀況檢查,保持時(shí)間符合時(shí)序要求,但在使用最差狀況進(jìn)行檢查時(shí),保持時(shí)間就不符合時(shí)序要求,這種情況存在多數(shù)復(fù)雜的實(shí)際情況中。所以傳統(tǒng)的BC-WC方法并不能保證覆蓋靜態(tài)時(shí)序分析結(jié)果的最差狀況[7]。
從圖1流程圖不難看出,該方法存在的問題是EDA工具無法同時(shí)覆蓋所有模式下的時(shí)序問題,只能通過串行的方式對各個(gè)模式下的時(shí)序進(jìn)行修復(fù),同時(shí)需要保證修復(fù)過程中各個(gè)模式之間沒有影響。對此需要設(shè)計(jì)者反復(fù)切換到各個(gè)模式檢查時(shí)序是否滿足,只要對其中某一個(gè)模式進(jìn)行時(shí)序修復(fù)操作,其他模式也需要進(jìn)行檢查。這無疑增加了各個(gè)模式之間切換迭代的次數(shù)和人工手動(dòng)ECO(Engineering Change Order)的時(shí)間成本。工作量會(huì)隨著芯片工藝角和模式增多而增大[8]。
圖1 傳統(tǒng)時(shí)序收斂方法
傳統(tǒng)的靜態(tài)時(shí)序分析,屬于串行的,需要逐個(gè)分析,且每種工作模式都要分析。因此,需要耗費(fèi)大量的時(shí)間。為了解決傳統(tǒng)設(shè)計(jì)流程帶來的不便,MCMM旨在解決這一問題。其內(nèi)容主要是將工作模式和工藝角相互組合,corner分析由工藝參數(shù)(process),電源電壓(voltage)和溫度(temperature)組成,從而創(chuàng)建多個(gè)場景(Scenario),接著選擇需要激活的場景讓EDA工具對其進(jìn)行優(yōu)化[10]。在這過程中同一條時(shí)序違例的路徑會(huì)在不同的場景中出現(xiàn),評估這條時(shí)序?yàn)槔穆窂皆诓煌瑘鼍爸械臅r(shí)序裕量大小,例如一條路徑在場景1中的裕量為-1,在場景2中的裕量為-0.2,可以認(rèn)為該路徑在場景1中的權(quán)重更高,選擇在場景1中進(jìn)行修復(fù)[9]。流程如圖2所示。
圖2 MCMM設(shè)計(jì)流程
傳統(tǒng)設(shè)計(jì)流程可以理解為每次對一個(gè)場景進(jìn)行時(shí)序分析和操作,但無法分析其他場景的狀況,同時(shí)也無法確定當(dāng)前要修復(fù)的時(shí)序路徑是否在其他場景下也有影響。但倘若對所有場景進(jìn)行分析評估以后便可以確定時(shí)序修復(fù)的最佳方案,并依照該方案進(jìn)行時(shí)序修復(fù),一方面提高了時(shí)序修復(fù)的效率,另一方面也保證不對其他場景的時(shí)序產(chǎn)生其他影響。
綜上所述,與傳統(tǒng)的時(shí)序收斂方法相比,MCMM設(shè)計(jì)通過在靜態(tài)時(shí)序分析的過程中將不同的工作模式和工藝角相互組合,創(chuàng)建場景的方式來減少設(shè)計(jì)迭代,由“串行”變?yōu)椤安⑿小?,大大?jié)省了人工手動(dòng)ECO的工作量,提高了工作效率和減少了設(shè)計(jì)成本[11]。
場景就是工藝角和工作模式相互組合[12]。雖然EDA工具能夠?qū)斎氲亩鄠€(gè)模式進(jìn)行優(yōu)化,但工作模式的增加會(huì)導(dǎo)致計(jì)算機(jī)運(yùn)算時(shí)間的增加,所以需要選出有針對性的模式。經(jīng)過綜合考慮選擇如表1的4個(gè)場景。
表1 工藝角和模式的選擇
定義場景的腳本如下:
建立名叫func_ss_cmax的Scenario:
create_scenario func_ss_cmax
讀入該模式的時(shí)序約束文件:
source FD_Z801_core.sdc
場景Scenario是由工藝角Corner和工作模式Mode組合而成的,其中Corner分析由工藝參數(shù)(process),電源電壓(voltage)和溫度(temperature)組成,下面指定時(shí)序分析類型和對應(yīng)Corner下的lib庫:
set_operating_conditions-analysis_type on_chip_variation-max library scc018ug_uhd_rvt_ss_v1p62_125c_basic-max ss_v1p62_125c
同時(shí)設(shè)定相應(yīng)corner的RC寄生模型:
set_tlu_plus_files-max_tluplus $TLUPLUS_CMAX-min_tluplus $TLUPLUS_CMAX-tech2itf_map $TLUPLUS_MAP
同理,根據(jù)如上腳本依次建立func_ss_cmax,func_ss_cmin,func_ff_cmin,func_ff_cmax場景。
在完成時(shí)鐘樹綜合以后,下一步需要對保持時(shí)間進(jìn)行時(shí)序修復(fù)??紤]到4個(gè)場景都有保持時(shí)間違約,需要對其進(jìn)行修復(fù)。對此應(yīng)當(dāng)同時(shí)激活func_ss_cmax,func_ss_cmin,func_ff_cmin,func_ff_cmax這4個(gè)關(guān)鍵scenario進(jìn)行時(shí)序收斂,操作腳本具體如下:
激活關(guān)鍵的場景Scenario:
set_active_scenarios {func_ss_cmax func_ss_cmin func_ff_cmin func_ff_cmax}
對已經(jīng)激活的場景Scenario依次設(shè)置每個(gè)場景的時(shí)序裕量:
foreach scenario[all_active_scenarios]{
current_scenario $scenario
set_clock_uncertainty-setup 0.2[all_clocks]
set_clock_uncertainty-hold 0.2[all_clocks]
set_max_transition 0.8[current_design]
set_max_transition-clock_path 0.7[all_clocks]
set_max_fanout 64[current_design]
set_app_var timing_remove_clock_reconvergence_pessimism true
set_scenario_options-setup true-hold true
set_propagated_clock[all_clocks]
set_fix_hold[all_clocks]
remove_ideal_network-all
group_path-name INPUTS-from[all_inputs]
group_path-name OUTPUTS-to[all_outputs]
group_path-name COMBO-from[all_inputs]-to[all_outputs]
}
設(shè)置完各類場景的時(shí)序裕量后更新clock延遲:
update_clock_latency
開始進(jìn)行時(shí)序修復(fù):
clock_opt-fix_hold_all_clocks
經(jīng)過一輪時(shí)序修復(fù)后,再進(jìn)行增量修復(fù):
psynopt
經(jīng)過上述操作,4個(gè)關(guān)鍵場景時(shí)序路徑完成優(yōu)化,當(dāng)前時(shí)序違約情況如表2所示。
表2 MCMM第1次優(yōu)化結(jié)果
結(jié)果顯示,大部分時(shí)序已經(jīng)滿足要求,func_ss_cmax的場景有建立時(shí)間上的時(shí)序的違例,func_ff_cmin場景有保持時(shí)間上的時(shí)序違例,只需要激活該場景然后迭代運(yùn)行一次指令“psynopt”即可修復(fù),結(jié)果如表3所示。
表3 MCMM第2次優(yōu)化結(jié)果
傳統(tǒng)方式修復(fù)時(shí)序,由于不同模式和工藝角之間數(shù)量較多,需要人工來回切換模式,并且模式之間時(shí)序相互影響,導(dǎo)致在時(shí)序收斂方面所需要的時(shí)間多于MCMM技術(shù)所需要的時(shí)間,在本次設(shè)計(jì)中嘗試?yán)脗鹘y(tǒng)方法進(jìn)行時(shí)序收斂。在這一過程中因?yàn)楣ぷ髂J綌?shù)量多,從而導(dǎo)致在模式間來回切換,切換次數(shù)多于20次,由于不同模式之間的時(shí)序干擾較為嚴(yán)重,所以人工ECO的工作量很大,時(shí)序收斂所需要的時(shí)間遠(yuǎn)遠(yuǎn)高于MCMM技術(shù)所需要的時(shí)間,具體結(jié)果如表3所示。對此可以看出MCMM技術(shù)在時(shí)序收斂方面優(yōu)勢明顯。MCMM流程完成后的版圖如圖3所示。
表3 傳統(tǒng)方法與MCMM技術(shù)所用時(shí)間對比
圖3 最終版圖
本文介紹了MCMM技術(shù)在時(shí)序收斂方面的應(yīng)用,并利用FD_Z801設(shè)計(jì)實(shí)例闡述實(shí)現(xiàn)過程,結(jié)果表明該技術(shù)能夠?yàn)榘鎴D設(shè)計(jì)工程師節(jié)省設(shè)計(jì)時(shí)間,其實(shí)際應(yīng)用價(jià)值可觀。CTS(Clock Tree Synthesis)階段需要平衡時(shí)鐘網(wǎng)絡(luò)的負(fù)載,減小時(shí)鐘偏差,保持時(shí)鐘信號(hào)的完整性,從而建立一個(gè)合理的時(shí)鐘網(wǎng)絡(luò)[13]。所以本次設(shè)計(jì)過程中將MCMM技術(shù)從CTS階段開始應(yīng)用,并且達(dá)到芯片時(shí)序收斂的結(jié)果。在今后遇到更為復(fù)雜的設(shè)計(jì)時(shí)可以將MCMM技術(shù)應(yīng)用到邏輯綜合階段和布局布線階段,保證芯片能夠一次性滿足在不同工作模式和不同工藝角下的時(shí)序要求,同時(shí)避免在時(shí)序驗(yàn)證時(shí)反復(fù)回到布局布線階段進(jìn)行時(shí)序修復(fù),達(dá)到縮短設(shè)計(jì)周期和節(jié)約面積的效果,從而節(jié)約設(shè)計(jì)成本。同時(shí)現(xiàn)階段已有很多優(yōu)秀的EDA工具,可以從更多不同的角度研究MCMM優(yōu)化的設(shè)計(jì)流程以及方法。對于新的工藝和設(shè)計(jì)流程還有許多值得深入研究討論的地方。