版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
物理層設(shè)計(jì)工具ICCompiler7.1ICCompiler(ICC)工具發(fā)展歷史7.2ICCompiler(ICC)設(shè)計(jì)流程介紹7.3數(shù)據(jù)準(zhǔn)備7.4布局規(guī)劃7.5電源規(guī)劃第7章物理層設(shè)計(jì)工具ICCompiler7.6布局7.7時鐘樹綜合7.8布線7.9芯片ECO與DFM7.10小結(jié)
7.1ICCompiler(ICC)工具發(fā)展歷史
ICC與Encounter是兩大EDA軟件巨頭博弈的產(chǎn)物。它們的發(fā)展歷史,也可以看作微電子EDA業(yè)界風(fēng)云變幻的歷史。早在20世紀(jì)80年代后期,微電子EDA廠商即呈現(xiàn)出兩強(qiáng)對峙的局面:Synopsys基本壟斷了前端技術(shù),占有將近六成市場;Cadence基本壟斷了后端技術(shù)與驗(yàn)證技術(shù),占有將近八成的市場。
1991年,4名Cadence的中國雇員離職并成立了Arcsys,推出了APR類軟件ArcCell。4年后,Arcsys與做驗(yàn)證技術(shù)的ISS合并,加強(qiáng)公司的競爭能力,合并后,公司取名Avanti。
1996年,Avanti公司卷入與Cadence的商業(yè)機(jī)密竊取案,為了使工具銷售合法化,Avanti采用“潔凈室”手段重寫其Arccell的源程序,新產(chǎn)品稱為MilkywayDatabase與Apollo。
2001年7月,Avanti公司敗訴,需向Cadence賠償一億九千五百萬美元,創(chuàng)下硅谷知識產(chǎn)權(quán)官司中,公司對公司最高賠償金額的刑事案件。
2003年Synopsys公司在收購Avanti之后推出了Astro。Astro繼承Apollo的風(fēng)格,使用了MilkywayDatabase。2004年Astro開始支持Tcl腳本語言,Astro工作界面如圖7.1所示,可看到Astro是Scheme和Tcl(ToolCommandLanguage)的混用,但是它對Tcl的支持比較差。面對著越來越復(fù)雜的設(shè)計(jì),Astro應(yīng)付起來明顯吃力,于是在2007年Synopsys在Astro的基礎(chǔ)上,結(jié)合PhysicalCompiler推出了新一代完整的布局布線設(shè)計(jì)系統(tǒng)ICCompiler。圖7.1Astro工具界面
ICCompiler采用基于Tcl的統(tǒng)一架構(gòu),利用了Synopsys最為優(yōu)秀的核心技術(shù)實(shí)現(xiàn)了創(chuàng)新,其工作界面如圖7.2所示。圖7.2ICCompiler工具界面
使用ICC進(jìn)行后端物理實(shí)現(xiàn)的設(shè)計(jì)流程如圖7.3所示。
7.2ICCompiler(ICC)設(shè)計(jì)流程介紹圖7.3ICCAPR流程
在完成數(shù)據(jù)準(zhǔn)備,并將數(shù)據(jù)導(dǎo)入之后,即可開始布局規(guī)劃(FloorPlan)。布局規(guī)劃主要包含下面四方面內(nèi)容:
(1)完成對電源域及電源網(wǎng)絡(luò)方面的定義(Powerplan)。
(2)宏模塊(Macro)的擺放及約束。
(3)標(biāo)準(zhǔn)輸入輸出單元(IO)的擺放。
(4)標(biāo)準(zhǔn)單元(standardcell)布局(Place)約束。
7.3數(shù)據(jù)準(zhǔn)備
7.3.1設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)是指前端移交給后端的數(shù)據(jù),包括經(jīng)綜合后的門級網(wǎng)表(.v)及具有時鐘定義及時序約束的綜合約束文件(SDC)。門級網(wǎng)表和RTL網(wǎng)表(RegisterTransferLevel)應(yīng)具有邏輯上的一致性。由于硬件描述語言的復(fù)雜性,在此處并不加以展開,請參照本書Modelsim相關(guān)內(nèi)容加以學(xué)習(xí)完善。圖7.4是一個簡單的門級網(wǎng)表實(shí)例,一個簡單的一位全加器的門級網(wǎng)表、RTL網(wǎng)表及電路圖,可以比較三者之間的關(guān)系。圖7.4一位全加器的門級網(wǎng)表及RTL網(wǎng)表
作為最主要內(nèi)容的設(shè)計(jì)約束相關(guān)的命令,按照類別主要分為以下九種類型,SDC命令見表7.1。
7.3.2邏輯庫數(shù)據(jù)
LibertyLibraryFormat(.lib)是由Synopsys公司研發(fā)的,用于描述單元的時序和功耗特性的文件格式。根據(jù)工藝的復(fù)雜度及設(shè)計(jì)要求,現(xiàn)階段普遍應(yīng)用三種模型,它們分別為非線性延時模型(NLDM)、復(fù)合電流源模型(CCSM)以及有效電流源模型(ECSM)。其中CCSM及ECSM不僅包含了時序和功耗屬性,還包含了噪聲信息,所以與Spice模型的誤差可以控制在2%~3%?以內(nèi),而NLDM則一般與Spice模型的誤差在7%?以內(nèi)。以文件大小而論,在相同工藝條件下描述相同電路結(jié)構(gòu),采用CCSM模型的Liberty文件大小一般是采用NLDM模型liberty文件的8~10倍。
7.3.3物理庫數(shù)據(jù)
ICC使用物理庫是Milkyway格式。物理庫中包含了做布局規(guī)劃,布局和整體布線所需要的全部信息。值得注意的是,物理庫中的物理單元和引腳名字必須和邏輯庫中的單元和引腳名字相匹配。
Milkyway參考庫(ReferenceLibraries)包含以下信息,這些信息以圖形(Views)的形式存放,Milkyway結(jié)構(gòu)圖如圖7.5所示。圖7.5Milkyway結(jié)構(gòu)圖
(1)?CEL:Fulllayoutview。包含了所有圖層的全版圖視圖,在流片寫出GDSII文件時會用到CELView。
(2)?FRAM:Abstractview。僅包含Cells的框架,只有Pin和金屬信息的抽象圖,是用來布局布線的View,這樣可以大大減少布局布線所需的內(nèi)存資源。
(3)?LM:Logicmodelview。邏輯模型視圖,包含有db的邏輯單元庫,同時也是可選的View。
技術(shù)文件?.tf文件通常由工藝廠提供,文件中主要包含了每層掩膜層的層號,連接層信息,在EDA工具中顯示的顏色與線條,最小寬度,最小面積等信息。ICC就是根據(jù)tf文件中描述的金屬層和通孔層的設(shè)計(jì)規(guī)則進(jìn)行布線的,圖7.6為tf文件中部分信息。圖7.6tf文件部分信息
Tluplus文件是由工藝廠商提供的,但有些情況下工藝廠商僅提供了itf文件,該文件是文本文件,可以通過編輯器打開和編輯。itf文件描述了跟Tluplus文件一樣的信息,它提供了每層金屬和通孔的層厚,電容介質(zhì)參數(shù)等。圖7.7是itf文件的部分信息??梢酝ㄟ^EDA工具StarRC將itf文件轉(zhuǎn)化為Tluplus文件,方法為在terminal下運(yùn)行命令:
grdgenxo-itf2TLUPlus-i<itf_file>-o<tlupuls_file>圖7.7itf文件部分信息
7.3.4創(chuàng)建設(shè)計(jì)數(shù)據(jù)
1.設(shè)置設(shè)計(jì)變量
編寫Tcl腳本,設(shè)置設(shè)計(jì)的宏變量,這樣做的目的是方便后續(xù)文件的編寫、替換和調(diào)用。
2.設(shè)置邏輯庫
ICC中針對邏輯庫的設(shè)置主要是search_path,target_library,link_library這三個系統(tǒng)變量及命令set_min_library。其中search_path是一個查找目錄,需要包含所有邏輯庫文件所在的目錄,這樣在設(shè)置targe_library和link_library中的db文件時,只需文件名即可,不需要再加上其存放的路徑。
其設(shè)置腳本為:
3.創(chuàng)建設(shè)計(jì)數(shù)據(jù)
設(shè)置完設(shè)計(jì)中所用單元的邏輯庫之后,就可以創(chuàng)建設(shè)計(jì)的Milkyway庫。Milkyway設(shè)計(jì)庫是把Milkyway物理參考庫和技術(shù)文件相關(guān)聯(lián),并存儲所有的設(shè)計(jì)數(shù)據(jù)。
構(gòu)建Milkyway設(shè)計(jì)庫的圖形界面是File-CreateLibrary,會彈出圖7.8所示的創(chuàng)建設(shè)計(jì)數(shù)據(jù)圖形界面。前面步驟1——設(shè)置設(shè)計(jì)變量,已經(jīng)定義好的宏變量?$my_mw_lib指定的是Milkyway設(shè)計(jì)庫的名字,一般會定義為top_module的名字,$tech_file是技術(shù)文件,Inputreferencelibraries所列的路徑是所用到的單元的物理庫(Milkyway)路徑。圖7.8創(chuàng)建設(shè)計(jì)數(shù)據(jù)
ICC在圖形界面操作完成之后,點(diǎn)擊“OK”按鈕,會在History框下看到create_mw_lib的Tcl命令,-open是創(chuàng)建設(shè)計(jì)Milkyway庫之后,直接打開該數(shù)據(jù)庫。
在link了邏輯庫文件,設(shè)置了物理庫文件,并創(chuàng)建完設(shè)計(jì)數(shù)據(jù)后,就需要檢查庫文件的完整性與一致性了,具體的操作方法是使用命令行:
set_check_library_options-all
check_library
4.讀入設(shè)計(jì)網(wǎng)表
輸入設(shè)計(jì)的圖形界面是File-ImportDesign,會彈出圖7.9的讀入設(shè)計(jì)網(wǎng)表窗口。圖7.9讀入設(shè)計(jì)網(wǎng)表
通過該步驟,設(shè)計(jì)的網(wǎng)表就讀入到已經(jīng)打開的?$my_mw_lib設(shè)計(jì)庫中。Layout窗口就會將設(shè)計(jì)所要用到的所有單元都堆在坐標(biāo)原點(diǎn)處。讀入設(shè)計(jì)網(wǎng)表之后的Layout窗口如圖7.10所示。圖7.10讀入設(shè)計(jì)網(wǎng)表之后的Layout窗口
5.設(shè)置Tluplus文件
設(shè)計(jì)讀入之后,可設(shè)置Tluplus文件,設(shè)置Tluplus文件的圖形界面是File-SetTlu+...,會彈出圖7.11的設(shè)置Tluplus文件窗口。圖7.11設(shè)置Tluplus文件
6.讀入SDC文件
前面已經(jīng)介紹過,門級網(wǎng)表只是描述了設(shè)計(jì)中各個單元之間的電路連接關(guān)系,SDC文件則是保證電路功能正確運(yùn)行的約束文件。該步驟就是運(yùn)行命令行,將SDC文件讀入該設(shè)計(jì)所使用的命令:
read_sdc$sdc_file
check_timing
讀入SDC文件后需要進(jìn)行時序約束檢查,check_timing命令的目的是檢查所有的路徑是否都有約束,如果沒有約束,會導(dǎo)致后續(xù)優(yōu)化時不會優(yōu)化其中的路徑,并很有可能導(dǎo)致時序不符合要求卻無法在時序報(bào)告中發(fā)現(xiàn)。通常電路沒有時序約束的原因有以下三種。
(1)寄存器單元的時鐘端口沒有設(shè)置上時鐘,或者設(shè)置有問題。
(2)?IO輸入端沒有設(shè)置input_delay。
(3)?IO輸出端沒有設(shè)置output_delay。check_timing命令是讀入SDC文件必須要進(jìn)行的檢查命令項(xiàng)。
7.保存設(shè)計(jì)
設(shè)計(jì)中所用到的邏輯庫和物理庫、設(shè)計(jì)網(wǎng)表和時序約束SDC文件都讀入設(shè)計(jì)的Milkyway數(shù)據(jù)庫之后,就需要對該設(shè)計(jì)進(jìn)行保存。保存的圖形界面是File-SaveDesign,會彈出如圖7.12所示的保存設(shè)計(jì)窗口。圖7.12保存設(shè)計(jì)
7.4布局規(guī)劃
7.4.1布局規(guī)劃的目標(biāo)一個好的布局規(guī)劃需要實(shí)現(xiàn)以下4個目標(biāo)。1.確定芯片的面積2.滿足時序的收斂3.確保布線的要求4.保證芯片的穩(wěn)定
7.4.2芯片結(jié)構(gòu)介紹
一顆完整的數(shù)字集成電路芯片,其結(jié)構(gòu)如圖7.13所示,需要包含以下3種應(yīng)用類型的單元:標(biāo)準(zhǔn)單元(standardcell);模塊宏單元(macroblock);輸入輸出單元(I/Opadcell)。圖7.13芯片結(jié)構(gòu)示意圖
7.4.3布局規(guī)劃的實(shí)現(xiàn)
布局規(guī)劃一般需要完成下面幾個步驟。
1.IO單元的放置
其中參數(shù)side指定了IO所在邊所代表的數(shù)字,最左邊的邊代表數(shù)字“1”,然后按照順時針方向旋轉(zhuǎn),每個邊數(shù)字加1,Side邊數(shù)字示意圖如圖7.14所示。-order參數(shù)的定義是從下到上,從左到右的IO的排列順序,IO單元會根據(jù)指明的順序進(jìn)行排列。-offset參數(shù)指定的是IO排放的具體坐標(biāo),該值是IO的左下角偏離芯片最下面(豎邊)和最左邊(橫邊)的差值,必須是個正的浮點(diǎn)數(shù)。
圖7.14Side邊數(shù)字示意圖
在Floorplan之后,Pad會根據(jù)上面的命令行按照如圖7.15形式進(jìn)行排列。圖7.15IO排布示意圖
2.芯片大小形狀的確定
在讀入IO排布的腳本之后,就可以通過GUI界面或者命令行創(chuàng)建芯片的形狀了,ICCLayout窗口下選擇Floorplan-CreateFloorplan,會彈出圖7.16所示的GreateFloorplan窗口。圖7.16CreateFloorplan
運(yùn)行完該命令之后,可以看到在Layout窗口中,宏單元模塊位于芯片的正上方,IO按照腳本設(shè)置的邊和順序整齊地?cái)[放在Core的四邊,如圖7.17所示。需要注意的是通常情況下IO單元之間會有一些空隙,需要插入IO填充單元(Filler),以保證IO形成一個完整的電源環(huán)狀網(wǎng)絡(luò),如果IO之間的距離較大,推薦使用IO供電單元來填充,這樣可以提供更好的ESD保護(hù);另外,如果有數(shù)字IO與模擬IO的交接處,還需要使用IO隔離單元,具體的特殊IO使用方法需參考相關(guān)的IO單元庫Datasheet。圖7.17CreateFloorplan之后Layout窗口的顯示
3.宏單元的布局規(guī)劃
完成了芯片的初步形狀規(guī)劃之后,芯片中所用的所有宏單元和標(biāo)準(zhǔn)單元都還放置在芯片外面,接下來就是要放置宏單元的位置。
通過命令set_fp_placement_strategy來設(shè)置宏單元自動擺放的規(guī)則。參數(shù)?-sliver_size是指定在宏單元周圍禁止擺放標(biāo)準(zhǔn)單元的最小寬度,-min_distance_between_macros指定宏單元與宏單元之間的最小距離,-macro_on_edgeon/off指定宏單元是否擺放在Core邊緣等參數(shù)選項(xiàng)。設(shè)定完這些參數(shù)之后,可以用命令report_fp_placement_strategy來確認(rèn)這些參數(shù)的設(shè)置。然后選擇Placement-PlaceMacrosandStandardCells,標(biāo)準(zhǔn)單元和宏單元模塊根據(jù)上面的設(shè)定進(jìn)行快速布局,該布局對網(wǎng)表不做任何優(yōu)化。如圖7.18所示,該操作對應(yīng)的命令行是create_fp_placement。圖7.18create_fp_placement
布局規(guī)劃完成之后,Layout窗口上芯片的形狀如圖7.19所示。選中宏單元出現(xiàn)的“X”表示該單元已經(jīng)被設(shè)置了dont_touch的屬性,這個“X”只有在被選中之后才顯現(xiàn)。完成該步驟之后,注意使用save_design-asfloorplan命令將上述的操作進(jìn)行保存。圖7.19布局規(guī)劃之后的芯片圖示
7.5電源規(guī)劃7.5.1全局電源本文設(shè)計(jì)實(shí)例是一個單電壓域數(shù)字電路集成電路芯片,由于數(shù)字部件電源、地的名稱分別為VDD和VSS,因此設(shè)置單元的VDD和VSS端口分別連接電源網(wǎng)絡(luò)的VDD和VSS。由于設(shè)計(jì)中存在恒定的高電平Logic1或者恒定的低電平Logic0的信號端口,這些端口也需要連接到電源網(wǎng)絡(luò)的VDD和VSS上。操作為在菜單欄里點(diǎn)擊Preroute-DerivePGConnection,會彈出全局電源網(wǎng)絡(luò)的設(shè)置界面,如圖7.20所示。圖7.20全局電源網(wǎng)絡(luò)設(shè)置
7.5.2電源環(huán)線
電源環(huán)線是指為了均勻供電,包圍在標(biāo)準(zhǔn)單元和宏單元周圍的金屬環(huán)線。電源環(huán)線是連接供電IO和標(biāo)準(zhǔn)單元之間的橋梁,供電IO單元通過金屬連接到電源環(huán)上,標(biāo)準(zhǔn)單元通過Followpin連接到電源環(huán)。
實(shí)際的設(shè)計(jì)中,電源環(huán)的寬度主要結(jié)合設(shè)計(jì)參數(shù)、經(jīng)驗(yàn)值以及最后電壓降分析的結(jié)果來確定。當(dāng)金屬的層數(shù)比較多的情況下,可以選擇多層金屬布置電源環(huán),從而有效地減小電源環(huán)的寬度和電源環(huán)所占據(jù)芯片的面積。在設(shè)置電源環(huán)金屬層數(shù)時,由于高層金屬比低層金屬的方塊電阻要小、電流密度要大,因此組成電源環(huán)的金屬層應(yīng)該選擇高層金屬。
選擇Preroute-CreateRing會彈出電源環(huán)的設(shè)置界面,如圖7.21所示。圖7.21電源環(huán)線設(shè)置界面
除了對芯片內(nèi)核Core添加電源環(huán)線之外,還需要對宏單元添加相應(yīng)的電源環(huán)。與Core添加電源環(huán)不同的是,這里在Around一欄選擇對應(yīng)的宏單元,如圖7.22所示,設(shè)置完畢之后點(diǎn)擊“OK”鍵來實(shí)現(xiàn)宏單元電源環(huán)線的生成。圖7.22宏單元電源環(huán)的設(shè)置
7.5.3電源條線
電源條線和電源環(huán)線構(gòu)成了芯片內(nèi)部縱橫交錯的電源網(wǎng)絡(luò)。設(shè)置用于內(nèi)核供電和與電源環(huán)線相連接的內(nèi)核電源條線,在菜單欄里點(diǎn)擊Preroute-CreatePowerStraps,設(shè)置界面如圖7.23所示,點(diǎn)擊“OK”實(shí)現(xiàn)電源條線的設(shè)置。圖7.23電源條線設(shè)置界面
7.5.4各個單元的電源連接
電源環(huán)線和電源條線構(gòu)成的電源網(wǎng)絡(luò)完成之后,需要將設(shè)計(jì)中的各個單元與電源網(wǎng)絡(luò)進(jìn)行連接。設(shè)置標(biāo)準(zhǔn)單元的電源連接(Powerrail),宏單元的電源連接和IO單元的電源連接。點(diǎn)擊Preroute-PrerouteInstances,設(shè)置宏單元和IO單元的電源連接。Preroute-PrerouteStandardCell實(shí)現(xiàn)標(biāo)準(zhǔn)單元的電源連接。
經(jīng)過上述步驟完成了由電源環(huán)線、電源條線、電源軌線、宏單元和IO單元的電源連接而構(gòu)成的電源網(wǎng)絡(luò)。圖7.24所示為電源網(wǎng)絡(luò)的物理實(shí)現(xiàn)圖。圖7.24電源網(wǎng)絡(luò)的物理實(shí)現(xiàn)
7.5.5電壓降
使用ICC進(jìn)行電壓降分析,選擇Preroute-PowerNetworkVoltageDropMap,進(jìn)行簡易的IRDrop分析,如果要詳細(xì)分析還需要有專門的工具。IRDrop分析的map如圖7.25所示。該map圖描述了芯片電壓降的下降程度。圖7.25IRDropmap
如果IRdrop分析不滿足設(shè)計(jì)的要求,需要分析原因并進(jìn)行調(diào)整。主要方法如下:
(1)調(diào)整布局。
(2)添加供電IO,這個是電壓降的源頭。
(3)增加電源環(huán)線和條線的金屬層數(shù)。
(4)加寬電源環(huán)線和電源條線的寬度。
(5)加密電源條線,即增加電源條線的數(shù)目。
上述這些方法需要具體問題具體分析,不能一概而論。在加寬加密電源環(huán)線和電源條線的同時還需要注意不能因此而影響布線資源而導(dǎo)致布線的擁塞(congestion)。
7.6布局7.6.1特殊單元的放置特殊單元一般包含阱接觸單元(WellTap)、邊界單元(EndCap)、填充單元(Filler)和去耦電容單元(DecapFiller)等。有些工藝設(shè)計(jì)還要求在芯片的內(nèi)核兩邊添加EndCap單元,選擇Finishing-InsertEndCap。這些特殊的要求一般會在庫工藝文檔里詳述。在做設(shè)計(jì)之前,需仔細(xì)查看相應(yīng)的工藝文檔,了解該工藝庫的特殊要求,防止大規(guī)模的迭代返工。
7.6.2標(biāo)準(zhǔn)單元的放置
標(biāo)準(zhǔn)單元的物理布置應(yīng)該同時滿足布線的通暢性和時序的收斂性兩個最基本的要求。在菜單欄里點(diǎn)擊Placement-CorePlacementandoptimization。自動布局的設(shè)置界面如圖7.26所示。圖7.26自動布局的設(shè)置界面
7.6.3掃描鏈重組
掃描鏈(scanchain)是可測性設(shè)計(jì)(DFT)的重要內(nèi)容。它是將芯片中所有的帶掃描功能的寄存器首尾連接成串,從而實(shí)現(xiàn)附加功能的測試?;趻呙杪窂椒ǖ目蓽y性設(shè)計(jì)就是將電路中的時序元件觸發(fā)器替換為相應(yīng)的可掃描的時序元件掃描觸發(fā)器(SDFF);然后將上一級掃描觸發(fā)器的輸出端(Q)連接到下一級的數(shù)據(jù)輸入端(SDI),從而形成一個從輸入到輸出的測試串行移位寄存器,即掃描鏈(ScanChain);通過CP端時鐘的控制,實(shí)現(xiàn)對時序元件和組合邏輯的測試。
在對標(biāo)準(zhǔn)單元進(jìn)行布局時,掃描單元被隨機(jī)地?cái)[放在版圖內(nèi),掃描鏈重組是將連接在掃描鏈上的、在芯片內(nèi)隨機(jī)分布的掃描寄存器單元按照其物理位置,在不影響邏輯功能的前提下,重新進(jìn)行連接,從而減少掃描鏈的走線長度。掃描鏈重組可以有效地減小Congestion,從而保證布線的通暢。圖7.27是掃描鏈重組前后的示意圖,從圖中可以看出經(jīng)過重組之后的掃描鏈繞線減少,有效地節(jié)約了布線空間。圖7.27掃描鏈重組前后示意圖
布局完成之后,需要分析設(shè)計(jì)的Congestionmap來判斷布線的通暢性,分析時序保證建立時間(setup)的時序收斂,還需要進(jìn)行電壓降IRdrop的分析來確保標(biāo)準(zhǔn)單元放置之后IRdrop并沒有惡化。圖7.28是布局之后的版圖形狀,可以看到所有的單元均放置于芯片內(nèi)部。圖7.28布局完成之后的版圖形狀
7.7時?鐘?樹?綜?合
在數(shù)字集成電路設(shè)計(jì)中,時鐘信號是數(shù)據(jù)傳輸?shù)幕A(chǔ),它通常是整個芯片中有最大扇出、通過最長距離、以最高速度運(yùn)行的信號。時鐘信號必須保證關(guān)鍵的時序路徑能夠滿足時序的要求,否則錯誤的信號就會被鎖存到寄存器中,從而導(dǎo)致系統(tǒng)功能的錯誤。因此,時鐘樹綜合是后端物理設(shè)計(jì)中非常關(guān)鍵的步驟之一。
ICC中時鐘樹的綜合流程包括時鐘樹綜合前的設(shè)置、時鐘樹綜合以及時鐘樹分析和優(yōu)化。而在進(jìn)行時鐘樹綜合前需要首先進(jìn)行相關(guān)檢查:
(1)?check_physical_design-stagepre_clock_opt。
檢查布局結(jié)果是否已經(jīng)符合時鐘樹綜合的需要,時鐘是否被正確地定義。
(2)?check_clock_tree。
進(jìn)一步檢查時鐘樹的設(shè)置及相關(guān)定義是否符合綜合要求。
7.7.1時鐘樹綜合的設(shè)置
ICC進(jìn)行時鐘樹綜合需要進(jìn)行下列設(shè)置:
1.設(shè)置時鐘樹綜合相關(guān)的DRC值
在一個設(shè)計(jì)中,時鐘網(wǎng)絡(luò)往往會需要比其他電路更為嚴(yán)格的DRC(DesignRuleConstraint-Transition,Capacitance,F(xiàn)anout)要求,以保證時鐘樹上的Latency和Transition相對穩(wěn)定,使得最終的Skew不超過設(shè)計(jì)預(yù)期。Clock-SetClockTreeOption,圖7.29所示是SetClockTreeOption的設(shè)置界面。
2.設(shè)置時鐘樹綜合優(yōu)化目標(biāo)
傳統(tǒng)實(shí)現(xiàn)時鐘樹綜合的一個重要指標(biāo)就是達(dá)到理論上的“零偏差”(zeroskew),在默認(rèn)條件下ICC的TargetSkew設(shè)置為0?ns。對某些設(shè)計(jì)而言,這樣的設(shè)置會導(dǎo)致時鐘樹上會插入過多的Buffer,引起Congestion的違例而需要重新迭代,所以一般都需要設(shè)置TargetSkew的值。
采用的還是圖7.29所示的設(shè)置界面。圖7.29SetClockTreeOption的設(shè)置界面
3.設(shè)置時鐘樹所用單元
時鐘樹綜合與優(yōu)化需要緩沖器與反相器單元,默認(rèn)情況下ICC會使用target_library中的所有單元進(jìn)行時鐘樹綜合,通常一個標(biāo)準(zhǔn)單元庫中會有專門的上升/下降時間對稱的緩沖器和反相器,此時選擇Clock-SetClockTreeReference來設(shè)置時鐘樹綜合時需要用到的緩沖器和反相器。
4.時鐘樹之間的平衡
在默認(rèn)條件下,ICC會將同一個master_clock下的時鐘樹作平,進(jìn)行skew的匹配,但如果不同時鐘域之間有數(shù)據(jù)交互的話,需要時鐘樹之間進(jìn)行平衡。
set_inter_clock_delay_options-balance_group"CLK1CLK2"
然后在clock_opt命令中需要添加選項(xiàng)?-inter_clock_balance,這樣工具在進(jìn)行時鐘樹綜合的時候就會去平衡兩個時鐘域。
5.對已有時鐘樹的處理
如果在DC綜合階段,設(shè)計(jì)人員已經(jīng)加入了全部或者部分的時鐘樹,推薦在后端設(shè)計(jì)時將其刪除,重新進(jìn)行時鐘樹的生成,因?yàn)榫C合階段的時鐘樹并沒有考慮寄存器的物理位置。刪除已有時鐘樹的命令為:
remove_clock_tree-clock_tree[all_clocks]
但如果需要保留部分的時鐘樹單元,可以采用
set_clock_tree_exceptions-dont_touch_subtrees{preserving_clk_tree}或者
set_clock_tree_exceptions-dont_size_cell{dont_size_clk_cells}
6.對時鐘布線規(guī)則的定義
在ICC布線中,默認(rèn)的布線規(guī)則來自于TF文件中對每一層金屬的定義。由于時鐘信號的特殊性,其布線規(guī)則不同于默認(rèn)的布線規(guī)則,通常會采用雙倍寬度、雙倍間距的布線規(guī)則,使得時鐘網(wǎng)絡(luò)不容易受到信號串?dāng)_的影響,保證芯片的正常工作。定義非默認(rèn)布線規(guī)則的方法為:
define_routing_ruleCLK_ROUTE_RULE\
-multiplier_width2\
-multiplier_spacing2
在某些設(shè)計(jì)中還需要定義非標(biāo)準(zhǔn)的通孔規(guī)則,方法為加上選項(xiàng)?-cuts或者?-via_cuts,詳細(xì)情況可參考ICC手冊及具體的TF文件。
定義完后還需將規(guī)則應(yīng)用于具體的時鐘樹:
set_clock_tree_options-clock_tees[all_clocks]\
-routing_ruleCLK_ROUTE_RULE
7.7.2時鐘樹綜合
所有設(shè)置完成之后,選擇Clock-CoreCTSandOptimization。圖7.30所示為時鐘樹綜合的設(shè)置界面。圖7.30時鐘樹綜合的設(shè)置界面
7.7.3時鐘樹分析與優(yōu)化
時鐘樹生成后,需要對時鐘結(jié)果進(jìn)行分析和優(yōu)化,通過命令設(shè)置時鐘為傳播延時的狀態(tài):
set_propagated_clcok[all_clocks]
當(dāng)然如果存在相關(guān)問題,通過分析之后,可以使用下面命令對時鐘樹進(jìn)行優(yōu)化:
clock_opt-no_clock_route-only_psyn
具體的優(yōu)化選項(xiàng)可以根據(jù)實(shí)際情況進(jìn)行添加,主要的選項(xiàng)有?-area_recovery,-power等。隨后可以再次運(yùn)行report_constraint-all來保證沒有數(shù)值比較大的Setup及Hold違例。
7.8布線
布線是繼布局和時鐘樹綜合之后的重要步驟。在數(shù)字集成電路物理中采用的是自動布線的方法。自動布線是將分布在芯片核內(nèi)標(biāo)準(zhǔn)單元、模塊宏單元和輸入輸出(IO)單元按邏輯關(guān)系進(jìn)行互連,完成單元之間的所有邏輯信號的互連并滿足各種約束條件。
7.8.1布線前的檢查
在布線之前需要對設(shè)計(jì)進(jìn)行相關(guān)檢查,來保證布線的順利進(jìn)行,檢查的步驟依次如下。
1.check_physical_design
用來確認(rèn)設(shè)計(jì)已經(jīng)完成了布局,所有的PG端口都已連到了對應(yīng)的電源地網(wǎng)絡(luò)上。
2.命令
check_physical_design-stagepre_route_opt
all_ideal_nets
all_high_fanout-nets-threhold<value>
確保所有的時鐘樹綜合已完成,沒有任何idealnet和highfanoutnet。通過這個命令可以檢查是否還有遺漏的時鐘網(wǎng)絡(luò)沒有進(jìn)行時鐘樹綜合。
3.report_timing/report_constraint-all
保證布線前,設(shè)計(jì)的時序和DRC(DesignRuleConstraint)滿足設(shè)計(jì)約束的要求。
7.8.2ICC布線步驟
大部分集成電路的多層布線都是采用基于格點(diǎn)的自動布線的方法。圖7.31所示為格點(diǎn)布線示意圖,橫向和縱向的虛線稱為Track,兩條Track之間間距稱為Pitch,基于格點(diǎn)的布線要求所有的金屬走線要走在Track之上,而實(shí)際走出的金屬線稱為Trace。兩條Track的交點(diǎn)稱為格點(diǎn)GridPoint。不同的金屬線走線方向是不同的,奇數(shù)層金屬默認(rèn)走水平方向,偶數(shù)層默認(rèn)走豎直方向。標(biāo)準(zhǔn)單元的高寬都被設(shè)計(jì)成了Pitch的整數(shù)倍,而在布局時標(biāo)準(zhǔn)單元的Pin都被放在了GridPoint上,這主要是為了方便規(guī)范布局,方便布線。圖7.31格點(diǎn)布線示意圖
在實(shí)施過程中,布線被分為全局布線(Globalroute)、軌道分配(TrackAssignment)、詳細(xì)布線(DetailRoute)3個步驟。
1.全局布線
全局布線是對整個芯片的走線做全局規(guī)劃,為設(shè)計(jì)中還沒有布線的連線規(guī)劃出布線路徑,確定其大體位置及走向,并不做實(shí)際的連線,只是把布線路徑映射到特定的金屬層。全局布線是一種“松散”的布線,它將芯片核區(qū)預(yù)先劃分成若干大方塊(Gcell-GlobalRoutingCell),每個方塊縱橫方向可以走多條線。這樣布線時,工具能規(guī)劃出多條走線方案,極大地加快布線速度并盡早報(bào)告結(jié)果,以便進(jìn)行調(diào)整和修改。全局布線是為詳細(xì)布線做好準(zhǔn)備。
2.軌道分配
軌道分配是將每一條線分配到相應(yīng)的軌道上,并且確定其實(shí)際的金屬線。軌道分配的主要內(nèi)容是為每條線的金屬層確定Prefer方向,例如,奇數(shù)層金屬走橫向,偶數(shù)層金屬走縱向,從而減少繞線;使每一條金屬線盡可能長且直,這樣是為了減少線上的通孔數(shù)目,提高成品率。軌道分配不做DRC(DesignRuleCheck)規(guī)則檢查(space,width等),因此在軌道分配之后會有很多DRC的違規(guī)。
3.詳細(xì)布線
詳細(xì)布線也叫作最終布線,詳細(xì)布線使用全局布線和軌道分配過程中產(chǎn)生的路徑進(jìn)行布線和布孔。軌道分配時只考慮盡量走長線,會有很多DRC違規(guī)產(chǎn)生,詳細(xì)布線使用固定尺寸的Sbox(searchandrepairbox)來修復(fù)違規(guī)。Sbox是整個版圖平均劃分的小格子,小格子內(nèi)部違規(guī)會被修復(fù),但是其邊界的DRC違規(guī)修復(fù)不了,所以在此步驟中通過尺寸逐漸加大的Sbox來尋找和修復(fù)DRC違規(guī),最終實(shí)現(xiàn)一個滿足DRC規(guī)則的布線結(jié)果。
全局布線、軌道分配、詳細(xì)布線3個步驟,只需要執(zhí)行一條命令route_opt就可完成。
7.8.3特殊信號的布線
芯片中通常包含有高頻信號、時鐘信號等有特殊要求的信號。這里主要詳細(xì)講述時鐘信號的布線。
時鐘樹布線是從時鐘樹的根節(jié)點(diǎn)(rootpin)到葉節(jié)點(diǎn)(leafpin)按照在7.7.1節(jié)第6條設(shè)置的時鐘樹布線的規(guī)則進(jìn)行布線的過程。由于通常時鐘信號具有頻率大、翻轉(zhuǎn)快的特點(diǎn),對于噪聲比較敏感,因此在高頻時鐘應(yīng)用中,一般采用雙倍線寬雙倍間距配合電源屏蔽(Shield)的方式進(jìn)行布線。
選擇Route-NetGroupRoute,特殊信號布線的設(shè)置界面如圖7.32所示。選擇“Allclocknets”選項(xiàng),該界面的默認(rèn)選項(xiàng)是“Specifiednets”。圖7.32特殊信號布線的設(shè)置界面
7.8.4一般信號布線
接下來進(jìn)行一般信號線的布線,ICC中與布線相關(guān)的設(shè)置主要包括以下內(nèi)容。
1.設(shè)置優(yōu)化迭代次數(shù)
默認(rèn)情況下ICC的優(yōu)化迭代次數(shù)為10,如果設(shè)計(jì)較復(fù)雜或者工藝非常先進(jìn),默認(rèn)的優(yōu)化次數(shù)達(dá)不到設(shè)計(jì)人員的預(yù)期,可以加大優(yōu)化迭代次數(shù),代價是會增加運(yùn)行時間,命令為:
set_route_opt_strategy-search_repair_loop<value>
2.設(shè)置連線RC計(jì)算模型
與CTS時相同,默認(rèn)的連線RC計(jì)算模型為Elmore,如果希望更精確的結(jié)果可以采用Arnoldi模型,命令為:
set_delay_calculation_options-postroutearnoldi
3.進(jìn)行串?dāng)_相關(guān)設(shè)置
通過set_si_options和set_route_opt_zrt_crosstalk_options可以進(jìn)行布線時對串?dāng)_的相關(guān)設(shè)置,通常需要將避免串?dāng)_的選項(xiàng)打開,并設(shè)置串?dāng)_優(yōu)化閾值。
set_si_options-route_xtalk_preventiontrue-route_xtalk_prevention_threshold<value>
這里的閾值指的是串?dāng)_的電壓值相對于電源電壓的比值,其他串?dāng)_相關(guān)的設(shè)置可以查看上述兩個命令的說明,根據(jù)設(shè)計(jì)的具體需求進(jìn)行設(shè)置。
4.各個步驟的相關(guān)設(shè)置
在7.8.2節(jié)詳細(xì)介紹了ICC布線步驟,ICC也有相關(guān)的命令對每個步驟進(jìn)行控制。
set_route_zrt_common_options選項(xiàng)被用來控制全局布線、軌道分配和詳細(xì)布線三個步驟的命令。
set_route_zrt_global_options選項(xiàng)僅作用于全局布線階段。
set_route_zrt_track_options選項(xiàng)只影響軌道分配。
set_route_zrt_detail_options選項(xiàng)僅在詳細(xì)布線階段起作用。
可以通過man命令詳細(xì)了解各個選項(xiàng)的控制內(nèi)容。選擇Route-RoutingSetup來進(jìn)行圖形界面的設(shè)置。
5.進(jìn)行特殊單元及特殊區(qū)域的布線規(guī)則設(shè)置
在芯片中,特別是數(shù)字和模擬區(qū)域交界處,往往對布線有特殊的要求,如某些區(qū)域不能走數(shù)字信號,某些區(qū)域不能走某層金屬線,或者某些接口連線必須用某層金屬線連出等等,這些規(guī)則可以使用命令Create_Route_Guide控制,推薦首次生成RouteGuide時采用圖形界面,如圖7.33所示。圖7.33RouteGuide設(shè)置界面
-initial_route_only是初步的布線操作,但實(shí)際上進(jìn)行了全局布線、軌道分配和詳細(xì)布線完整的三個階段布線,完成了芯片上所有單元之間的連接。但是該設(shè)置并不對單元的位置和驅(qū)動能力進(jìn)行任何優(yōu)化。這種快速的布線目的是讓設(shè)計(jì)者對芯片的布線結(jié)果有一個初步的評估。如果該步驟布完線之后很多Congestion的違反,就需要查看原因重新迭代。
-skip_initial_route-xtalk_reduction相比與-initial_route_only的布線命令,該操作考慮到了實(shí)際連線上的延時,在布線之后進(jìn)行時序檢查,如果還有一些無法容忍的違例,需要調(diào)整布線的相關(guān)設(shè)置并采用-incremental的方式繼續(xù)優(yōu)化;如果符合設(shè)計(jì)人員的預(yù)期,便可以使用命令verify_zrt_route對布線違例情況進(jìn)行檢查,檢查設(shè)計(jì)是否存在布線規(guī)則的違反。完成布線之后的版圖形狀如圖7.34所示。
圖7.34布局布線的版圖
7.9芯片ECO與DFM
ECO是EngineeringChangeOrder的簡稱,泛指項(xiàng)目在開發(fā)過程中的改動。布局布線設(shè)計(jì)流程中的ECO指的是設(shè)計(jì)后期在保持原設(shè)計(jì)布局布線結(jié)果基本不變的基礎(chǔ)上做的小規(guī)模改動和優(yōu)化的過程。布局布線中的ECO分為流片前的ECO和流片后的ECO兩個階段。
7.9.1流片前ECO
在流片前,實(shí)際布線完成之后,可能由于時序不滿足要求,或者需要少量修改設(shè)計(jì)邏輯功能等問題,需要對布線之后的結(jié)果進(jìn)行少量的改動,此時就需要進(jìn)行流片前的ECO,又稱為Pre-maskECO。通過改變物理單元的驅(qū)動大小或者物理位置等方法來修復(fù)剩余的少量時序違反,并在修改后保證芯片在物理上滿足設(shè)計(jì)規(guī)則(DRC-DesignRuleCheck和LVS-LayoutVersusSchematic),在時序上滿足時序約束的要求,驗(yàn)證完全通過后才可流片。
7.9.2流片后ECO
在實(shí)際功能中,芯片流片之后,需要進(jìn)行嚴(yán)格的功能測試來保證芯片運(yùn)行的正確性。如果芯片通過測試查出致命問題,就需要對設(shè)計(jì)進(jìn)行少量修復(fù)來彌補(bǔ)這個缺陷,這就是流片后的ECO,又稱為Post-maskECO。
由于流片制版費(fèi)用昂貴,不可能重新進(jìn)行一次全新的流片,所以在布局布線的過程中會事先插入少量的冗余單元(Sparecell),流片后ECO不需要進(jìn)行重新布局,即不改變晶體管制版信息的前提下利用這些Sparecell,只改變少量金屬層的方法來實(shí)現(xiàn)網(wǎng)表邏輯功能的少量改動來達(dá)到滿足功能要求的目的。
7.9.3DFM
DFM(DesignForManufacturing)面向制造的設(shè)計(jì)是指產(chǎn)品設(shè)計(jì)需要滿足產(chǎn)品制造的要求,具有良好的可制造性,使得產(chǎn)品以最低的成本、最短的時間、最高的質(zhì)量制造出來。DFM的目的也是要提高芯片的良率。
下面簡單介紹ICCDFM的主要流程。ICCDFM主要流程如圖7.35所示。圖7.35ICCDFM主要流程
天線比率(AntennaRatio)是指同一層金屬受離子影響的面積與該面積下連接的所有晶體管的門柵面積之比。
2.WireSpreading線擴(kuò)展
在芯片制造過程中產(chǎn)生的隨機(jī)顆粒缺陷(RandomParticleDefects)可能導(dǎo)致芯片的短路(short)或開路(open)。線最小間距之間可能產(chǎn)生短路,最小線寬的位置可能對開路敏感。
I
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 便攜式超細(xì)粉塵檢測儀產(chǎn)業(yè)規(guī)劃專項(xiàng)研究報(bào)告
- 將藥物制劑導(dǎo)入人體的醫(yī)療器械市場發(fā)展預(yù)測和趨勢分析
- 重慶市2025屆高三第三次質(zhì)量檢測政治試題(含解析)
- 養(yǎng)老院設(shè)施改善方案
- XXXX年學(xué)校防火應(yīng)急預(yù)案范1
- 醫(yī)用皮膚清潔制劑產(chǎn)業(yè)深度調(diào)研及未來發(fā)展現(xiàn)狀趨勢
- 四年級下冊語文《尊嚴(yán)》說課稿
- 中職計(jì)算機(jī)班級文化建設(shè)方案
- 法理學(xué) 學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 高級語言程序設(shè)計(jì)(VB)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 現(xiàn)代簡約風(fēng)格發(fā)展趨勢
- 鋼網(wǎng)架防火涂料施工方案
- 路緣石滑模施工工法
- 農(nóng)村商業(yè)銀行信貸業(yè)務(wù)發(fā)展規(guī)劃-2019年文檔
- 設(shè)備稼動率如何計(jì)算
- 一汽大眾供應(yīng)商物流管理評價標(biāo)準(zhǔn)
- jtestF級詞匯
- 強(qiáng)直性脊柱炎的護(hù)理PPT
- 模具典型零件加工工藝分析
- 1為老年人更換紙尿褲
- 不動產(chǎn)登記業(yè)務(wù)基本知識
評論
0/150
提交評論