設(shè)計一款芯片,明確需求(功能和性能)之后,先由架構(gòu)工程師設(shè)計架構(gòu),得出芯片設(shè)計方案,前端設(shè)計工程師形成RTL代碼,驗(yàn)證工程師進(jìn)行代碼驗(yàn)證,再通過后端設(shè)計工程師和版圖工程師生成物理版圖。
設(shè)計環(huán)節(jié)到此為止,后面則是制造和封測環(huán)節(jié)。
設(shè)計環(huán)節(jié)的各個工作崗位,都需要使用到EDA工具。這也就要求IC設(shè)計端的工程師們對EDA工具的使用了如指掌。
設(shè)計中使用的EDA工具如下:
1、架構(gòu)的設(shè)計與驗(yàn)證
按照要求,對整體的設(shè)計劃分模塊。
架構(gòu)模型的仿真可以使用Synopsys公司的CoCentric軟件,它是基于System C的仿真工具。
2、HDL設(shè)計輸入
設(shè)計輸入方法有:HDL語言(Verilog或VHDL)輸入、電路圖輸入、狀態(tài)轉(zhuǎn)移圖輸入。
使用的工具有:Active-HDL,而RTL分析檢查工具有Synopsys的LEDA。
3、前仿真工具(功能仿真)
初步驗(yàn)證設(shè)計是否滿足規(guī)格要求。
使用的工具有:Synopsys的VCS,Simens EDA的ModelSim,Cadence的Verilog-XL,Cadence的NC-Verilog。
4、邏輯綜合
將HDL語言轉(zhuǎn)換成門級網(wǎng)表Netlist。綜合需要設(shè)定約束條件,就是你希望綜合出來的電路在面積,時序等目標(biāo)參數(shù)上達(dá)到的標(biāo)準(zhǔn);邏輯綜合需要指定基于的庫,使用不同的綜合庫,在時序和面積上會有差異。邏輯綜合之前的仿真為前仿真,之后的仿真為后仿真。
使用的工具有:Synopsys的Design Compiler,Cadence的 PKS,Synplicity的Synplify等。
5、靜態(tài)時序分析工具(STA)
在時序上,檢查電路的建立時間(Setuptime)和保持時間(Hold time)是否有違例(Violation)。
使用的工具有:Synopsys的Prime Time。
6、形式驗(yàn)證工具
在功能上,對綜合后的網(wǎng)表進(jìn)行驗(yàn)證。常用的就是等價性檢查(Equivalence Check)方法,以功能驗(yàn)證后的HDL設(shè)計為參考,對比綜合后的網(wǎng)表功能,他們是否在功能上存在等價性。這樣做是為了保證在邏輯綜合過程中沒有改變原先HDL描述的電路功能。
使用的工具有:Synopsys的Formality
而后端相應(yīng)的流程如下:
1、數(shù)據(jù)準(zhǔn)備
對于 CDN 的 Silicon Ensemble而言,后端設(shè)計所需的數(shù)據(jù)主要有是Foundry廠提供的標(biāo)準(zhǔn)單元、宏單元和I/O Pad的庫文件,它包括物理庫、時序庫及網(wǎng)表庫,分別以.lef、.tlf和.v的形式給出。前端的芯片設(shè)計經(jīng)過綜合后生成的門級網(wǎng)表,具有時序約束和時鐘定義的腳本文件和由此產(chǎn)生的約束文件以及定義電源Pad的DEF(Design Exchange Format)文件。(對synopsys 的Astro 而言,?經(jīng)過綜合后生成的門級網(wǎng)表,時序約束文件 SDC 是一樣的,Pad的定義文件–tdf,.tf 文件 --technology file,F(xiàn)oundry廠提供的標(biāo)準(zhǔn)單元、宏單元和I/O Pad的庫文件 就與FRAM, CELL view, LM view形式給出(Milkway 參考庫 and DB, LIB file)
2、布局規(guī)劃
主要是標(biāo)準(zhǔn)單元、I/O Pad和宏單元的布局。I/OPad預(yù)先給出了位置,而宏單元則根據(jù)時序要求進(jìn)行擺放,標(biāo)準(zhǔn)單元則是給出了一定的區(qū)域由工具自動擺放。布局規(guī)劃后,芯片的大小,Core的面積,Row的形式、電源及地線的Ring和Strip都確定下來了。如果必要在自動放置標(biāo)準(zhǔn)單元和宏單元之后,你可以先做一次PNA(power network analysis)–IR drop and EM 。
3、Placement -自動放置標(biāo)準(zhǔn)單元
布局規(guī)劃后,宏單元、I/O Pad的位置和放置標(biāo)準(zhǔn)單元的區(qū)域都已確定,這些信息SE(Silicon Ensemble)會通過DEF文件傳遞給PC(Physical Compiler),PC根據(jù)由綜合給出的.DB文件獲得網(wǎng)表和時序約束信息進(jìn)行自動放置標(biāo)準(zhǔn)單元,同時進(jìn)行時序檢查和單元放置優(yōu)化。如果你用的是PC +Astro,那你可用write_milkway,read_milkway 傳遞數(shù)據(jù)。
4、時鐘樹生成(CTS Clock tree synthesis)?
芯片中的時鐘網(wǎng)絡(luò)要驅(qū)動電路中所有的時序單元,所以時鐘源端門單元帶載很多,其負(fù)載延時很大并且不平衡,需要插入緩沖器減小負(fù)載和平衡延時。時鐘網(wǎng)絡(luò)及其上的緩沖器構(gòu)成了時鐘樹。一般要反復(fù)幾次才可以做出一個比較理想的時鐘樹—Clock skew。
5、STA 靜態(tài)時序分析和后仿真
時鐘樹插入后,每個單元的位置都確定下來了,工具可以提出Global Route形式的連線寄生參數(shù),此時對延時參數(shù)的提取就比較準(zhǔn)確了。
SE把.V和.SDF文件傳遞給PrimeTime做靜態(tài)時序分析。確認(rèn)沒有時序違規(guī)后,將這來兩個文件傳遞給前端人員做后仿真。
對Astro 而言,在detail routing 之后,用starRC XT 參數(shù)提取,生成的SPEF文件傳遞給PrimeTime做靜態(tài)時序分析,那將會更準(zhǔn)確。
6、ECO(Engineering Change Order)
針對靜態(tài)時序分析和后仿真中出現(xiàn)的問題,對電路和單元布局進(jìn)行小范圍的改動。
7、Filler的插入(padfliier,?cell filler)
Filler指的是標(biāo)準(zhǔn)單元庫和I/O Pad庫中定義的與邏輯無關(guān)的填充物,用來填充標(biāo)準(zhǔn)單元和標(biāo)準(zhǔn)單元之間,I/O Pad和I/O Pad之間的間隙,它主要是把擴(kuò)散層連接起來,滿足DRC規(guī)則和設(shè)計需要。
8、布線(Routing)
布線是指在滿足工藝規(guī)則和布線層數(shù)限制、線寬、線間距限制和各線網(wǎng)可靠絕緣的電性能約束的條件下,根據(jù)電路的連接關(guān)系將各單元和I/O Pad用互連線連接起來,這些是在時序驅(qū)動(Timing driven )?的條件下進(jìn)行的,保證關(guān)鍵時序路徑上的連線長度能夠最小。
9、Dummy Metal的增加
Foundry廠都有對金屬密度的規(guī)定,使其金屬密度不要低于一定的值,以防在芯片制造過程中的刻蝕階段對連線的金屬層過度刻蝕從而降低電路的性能。加入Dummy Metal是為了增加金屬的密度。
10、DRC和LVS
DRC是對芯片版圖中的各層物理圖形進(jìn)行設(shè)計規(guī)則檢查(spacing ,width),它也包括天線效應(yīng)的檢查,以確保芯片正常流片。LVS主要是將版圖和電路網(wǎng)表進(jìn)行比較,來保證流片出來的版圖電路和實(shí)際需要的電路一致。
DRC和LVS的檢查–EDA工具Synopsy hercules/ Simens EDA calibre/ CDN Dracula進(jìn)行的。Astro also include LVS/DRC check commands。
11、Tape out
在所有檢查和驗(yàn)證都正確無誤的情況下把最后的版圖GDSⅡ文件傳遞給Foundry廠進(jìn)行掩膜制造,也就是送去流片了。