面試時(shí)被問到了對(duì)IC設(shè)計(jì)流程的理解,隱約覺得和FPGA的整套流程有點(diǎn)像,但確實(shí)沒接觸過,在此總結(jié)一下。
芯片開發(fā)流程如下圖所示,芯片設(shè)計(jì)被分為兩個(gè)階段:前端設(shè)計(jì)和后端設(shè)計(jì)階段。
前端設(shè)計(jì)
1.1 市場(chǎng)需求分折文件
(Market Rcouirement Document,MRD)
芯片開發(fā)的第一項(xiàng)工作,是一個(gè)市場(chǎng)調(diào)研報(bào)告,說明了潛在市場(chǎng)規(guī)模和可獲取市場(chǎng)規(guī)模。
客戶向芯片設(shè)計(jì)公司(稱為Fabless,無(wú)晶圓設(shè)計(jì)公司)提出的設(shè)計(jì)要求,包括芯片需要達(dá)到的具體功能和性能方面的要求;
1.2 架構(gòu)文件
這是一個(gè)關(guān)于系統(tǒng)構(gòu)成和芯片架構(gòu)的高層次描達(dá)文件,涉及芯片的高層次操作、引腳分配與定義、軟件編程模型、可測(cè)性、寄存器定義以及應(yīng)用模型等。
1.3 微架構(gòu)文件
它包括芯片內(nèi)部操作的細(xì)節(jié)、時(shí)鐘和復(fù)位方案、主要模塊的功能描述、典型數(shù)據(jù)路徑描述、緩沖區(qū)需求分析、吞吐率和延遲分析、中斷和功率管理等問題。
這是多個(gè)設(shè)計(jì)者在采用高級(jí)語(yǔ)言( Verilog或VHDL)進(jìn)行設(shè)計(jì)時(shí)所依照的藍(lán)圖。
1.4 RTL設(shè)計(jì)
芯片被劃分成多個(gè)塊,每個(gè)塊又被劃分成多個(gè)模塊。多個(gè)設(shè)計(jì)者使用Verilog 或VHDL共同承擔(dān)設(shè)計(jì)工作。使用Lint和其他結(jié)構(gòu)工具以保證所有的設(shè)計(jì)遵循共同的基本設(shè)計(jì)指導(dǎo)原則。
Lint工具用于檢查RTL代碼錯(cuò)誤,其檢查的范用從基本的矢量寬度不匹配到時(shí)鐘交叉和同步問題。使用一個(gè)好的代碼分析工具對(duì)RTL代碼進(jìn)行檢查以便在早期就發(fā)現(xiàn)設(shè)計(jì)和代碼中的錯(cuò)誤是非常有益的。
常見的商用代碼分析工具有:Atrenta的Spyglass、Synopsys的Leda、Cadence的Surelint、Springsoft的nLint和eritools的HDLint等。
1.5 驗(yàn)證
1.5.1 功能驗(yàn)證
在RTL設(shè)計(jì)完成后,需要對(duì)其進(jìn)行功能驗(yàn)證。
它需要一個(gè)testbench驗(yàn)證環(huán)境,基于此環(huán)境可以生成測(cè)試激勵(lì)并進(jìn)行設(shè)計(jì)驗(yàn)證。
System Verilog, OVM/UVM是目前最新的驗(yàn)證語(yǔ)言和驗(yàn)證方法,可以進(jìn)行受約束的隨機(jī)化驗(yàn)證。
通常需要一個(gè)高層次的,對(duì)測(cè)試場(chǎng)景進(jìn)行描述的文件。
仿真工具用于通過各種測(cè)試用例對(duì)設(shè)計(jì)進(jìn)行仿真。每一種測(cè)試用例都會(huì)針對(duì)芯片的某些功能進(jìn)行測(cè)試。仿真工具記錄所有內(nèi)部信號(hào)在每個(gè)時(shí)鐘周期的狀態(tài)值,這對(duì)于發(fā)現(xiàn)設(shè)計(jì)錯(cuò)誤的內(nèi)部細(xì)節(jié)非常重要。商用的仿真工具有Silvaco的SILos、Mentor的Modelsim和Questa、Cadence的nCSim、Synopsys的VCS等。
1.5.2 模擬
芯片設(shè)計(jì)時(shí),經(jīng)常會(huì)使用FPGA進(jìn)行系統(tǒng)模擬驗(yàn)證。FPGA與芯片類似,都使用綜合后的網(wǎng)表實(shí)現(xiàn)所需要的功能,但FPGA更為靈活。FPGA最初是一塊空白的芯片,用戶的設(shè)計(jì)經(jīng)過綜合后得到比特文件,燒錄到FPGA中之后可以實(shí)現(xiàn)與芯片相同的功能。FPGA可以反復(fù)燒錄,易于進(jìn)行設(shè)計(jì)修改。
使用FPGA實(shí)現(xiàn)芯片功能,在系統(tǒng)中進(jìn)行實(shí)際驗(yàn)證,有助于從系統(tǒng)級(jí)對(duì)芯片的功能進(jìn)行實(shí)際驗(yàn)證,可以先期就開發(fā)軟件和驅(qū)動(dòng)程序,這些都有助于在流片之前發(fā)現(xiàn)隱藏較深的設(shè)計(jì)缺陷。
目前,F(xiàn)PGA模擬已經(jīng)成為芯片開發(fā)流程中的一個(gè)標(biāo)準(zhǔn)環(huán)節(jié)。
后端設(shè)計(jì)
2.1 綜合
綜合是使用軟件工具將RTL代碼(Verilog或VHDL)轉(zhuǎn)換為邏輯門(與門、或門和觸發(fā)器等)的過程。綜合工具可以按照某些原則,如最小面積或最佳定時(shí)特性,生成綜合后的網(wǎng)表。
在開始綜合之前,我們需要編寫綜合約束文件。綜合約束文件中需要說明的一些重要內(nèi)容包括以下幾點(diǎn):
時(shí)鐘頻率:這是綜合工具需要知道的最重要的信息,它決定了滿足定時(shí)要求的情況下兩個(gè)觸發(fā)器之間可以有多少級(jí)邏輯電路。
優(yōu)化目標(biāo):最小面積或最佳定時(shí)特性。如果工作頻率較低,定時(shí)不存在問題,那么我們可以將綜合過程的優(yōu)化目標(biāo)確定為最小面積;如果定時(shí)要求苛刻,那么綜合的優(yōu)化目標(biāo)應(yīng)該為最佳定時(shí)特性,此時(shí)綜合工具可能會(huì)將某些電路設(shè)計(jì)為并行或流水線結(jié)構(gòu),這會(huì)增大芯片面積,但定時(shí)特性會(huì)更好。
輸出延遲和輸入延遲:當(dāng)一個(gè)模塊的輸出與另一個(gè)模塊的輸人相連接時(shí),我們需要對(duì)輸出引腳的輸出延遲和輸人引腳的輸入延遲進(jìn)行描述。
展平(fattening)與保持層次(keeping hierarchy):當(dāng)保持層次時(shí),RTL代碼在模塊級(jí)進(jìn)行綜合,其輸入輸出引腳被保留。當(dāng)設(shè)計(jì)被展平后,綜合時(shí)不考慮模塊之間的邊界。
一些常用的綜合工具有,
ASIC:Synopsys的DC(Design Compiler)、Cadence(RTL Compiler)和Magma的Talus等。
FPGA:Mentor的Precision、Synopsys的Synplify family、Xilinx的XST、Altera的Quartus、Magma的BlastFPGA等。
2.2 STA
STA ( Statie Timing Analysis., 靜態(tài)定時(shí)分析)是一種用于發(fā)現(xiàn)芯片在綜合或布局布線之后的邏輯是否滿足定時(shí)要求的方法。RTL代碼綜合和布局在線之后,就可以將邏輯門及邏輯門之間互聯(lián)信導(dǎo)線的延遲參數(shù)提取出來(lái),這一過程稱為延遲提取。在同步設(shè)計(jì)中,信號(hào)從一個(gè)觸發(fā)器的輸出、經(jīng)過多個(gè)邏輯門之后進(jìn)入另一個(gè)觸發(fā)器的輸入端。
STA工具可以計(jì)算出從一個(gè)觸發(fā)器的輸出到另一個(gè)觸發(fā)器入之間的最大延遲,最大延遲值應(yīng)小于1個(gè)時(shí)鐘周期,這樣才能保證輸出的信號(hào)在本周期內(nèi)到達(dá)下一個(gè)觸發(fā)器,并且不會(huì)出現(xiàn)建立時(shí)間不滿足要求的問題。STA工具還會(huì)計(jì)算從一個(gè)觸發(fā)器的輸出到另一個(gè)觸發(fā)器輸入之間的最小延遲,最小延遲用于確保延遲值大于觸發(fā)器所需要的保持時(shí)間。
常見的STA工具有,Synopsys Prime Time、Cadence CTE(Common Timing Engine)、Mentor SST Velocity、Magma等。
2.3 門級(jí)仿真
門級(jí)仿真是在包含定時(shí)信息的情況下檢查芯片功能是否正確。
此時(shí)芯片內(nèi)部的所有延遲都放標(biāo)注出來(lái),因此所有內(nèi)部節(jié)點(diǎn)和邏輯門的邏輯值變化都包含了實(shí)際的延遲。這反映了真實(shí)芯片的操作行為。
2.4 布局布線(layout)
在這一階段,layout 工具將綜合后的網(wǎng)表讀入,所有邏輯門都以晶體管和其他基本元件的方式出現(xiàn)。
有些芯片的layout是由布局布線工具自動(dòng)完成的。
有些高頻設(shè)計(jì)需要以手工的方式進(jìn)行布局布線。
2.5 提交設(shè)計(jì)數(shù)據(jù)(tape-out)
芯片布局布線后,可以提取出精確的定時(shí)信息并反饋給STA工具進(jìn)行精確的定時(shí)特性檢查。此后還需要進(jìn)行設(shè)計(jì)規(guī)則檢查(Design Rule Check,DRC)。這些工作都完成后,就可以將設(shè)計(jì)數(shù)據(jù)提交給芯片制造廠了。早期進(jìn)行芯片設(shè)計(jì)時(shí),都是以磁帶來(lái)存儲(chǔ)芯片設(shè)計(jì)數(shù)據(jù)的,因此稱為tape-out。目前多以電子文檔的方式提交數(shù)據(jù),已經(jīng)不使用磁帶了,但這一稱呼沿用至今。
系統(tǒng)實(shí)現(xiàn)
3.1 實(shí)驗(yàn)室測(cè)試
芯片的工程樣片需要安裝在預(yù)先設(shè)計(jì)好的評(píng)估板上進(jìn)行實(shí)際應(yīng)用測(cè)試。
第一次所投的芯片被稱為工程樣片,目的是發(fā)現(xiàn)芯片在實(shí)際應(yīng)用時(shí)存在的問題并解決這些問題。
第二次所投芯片如果經(jīng)過全面測(cè)試后沒有發(fā)現(xiàn)任何問題,那么這一批芯片就可以作為正式的產(chǎn)品。
有些博客在前后端劃分有不一樣,有的前端將綜合和STA包括進(jìn)前端設(shè)計(jì)中。
因此其前端包括:規(guī)格制定、詳細(xì)設(shè)計(jì)、HDL編碼、仿真驗(yàn)證、邏輯綜合、STA和形式驗(yàn)證,前端設(shè)計(jì)的結(jié)果就是得到了芯片的門級(jí)網(wǎng)表電路;
后端劃分更細(xì),包括:
DFT:Design For Test,可測(cè)性設(shè)計(jì)。DFT的常見方法就是,在設(shè)計(jì)中插入掃描鏈,將非掃描單元(如寄存器)變?yōu)閽呙鑶卧?/p>
DFT工具有Synopsys的DFT Compiler。
布局規(guī)劃(FloorPlan):布局規(guī)劃就是放置芯片的宏單元模塊,在總體上確定各種功能電路的擺放位置,如IP模塊,RAM,I/O引腳等等;布局規(guī)劃能直接影響芯片最終的面積。
工具為Synopsys的Astro。
CTS:Clock Tree Synthesis,時(shí)鐘樹綜合,時(shí)鐘的布線;由于時(shí)鐘信號(hào)在數(shù)字芯片的全局指揮作用,它的分布應(yīng)該是對(duì)稱式的連到各個(gè)寄存器單元,從而使時(shí)鐘從同一個(gè)時(shí)鐘源到達(dá)各個(gè)寄存器時(shí),時(shí)鐘延遲差異最小,這也是為什么時(shí)鐘信號(hào)需要單獨(dú)布線的原因。
CTS工具有Synopsys的Physical Compiler。
布線(Place & Route):普通信號(hào)布線,包括各種標(biāo)準(zhǔn)單元(基本邏輯門電路)之間的走線;比如我們平常聽到的0.13um工藝,或者說90nm工藝,實(shí)際上就是這里金屬布線可以達(dá)到的最小寬度,從微觀上看就是MOS管的溝道長(zhǎng)度。
寄生參數(shù)提取:由于導(dǎo)線本身存在的電阻,相鄰導(dǎo)線之間的互感,耦合電容在芯片內(nèi)部會(huì)產(chǎn)生信號(hào)噪聲,串?dāng)_和反射;這些效應(yīng)會(huì)產(chǎn)生信號(hào)完整性問題,導(dǎo)致信號(hào)電壓波動(dòng)和變化,如果嚴(yán)重就會(huì)導(dǎo)致信號(hào)失真錯(cuò)誤;提取寄生參數(shù)進(jìn)行再次的分析驗(yàn)證,分析信號(hào)完整性問題是非常重要的。
工具Synopsys的Star-RCXT。
版圖物理驗(yàn)證:對(duì)完成布線的物理版圖進(jìn)行功能和時(shí)序上的驗(yàn)證,驗(yàn)證項(xiàng)目很多,如LVS(Layout Vs Schematic)驗(yàn)證,簡(jiǎn)單說,就是版圖與邏輯綜合后的門級(jí)電路圖的對(duì)比驗(yàn)證;DRC(Design Rule Checking),設(shè)計(jì)規(guī)則檢查,檢查連線間距,連線寬度等是否滿足工藝要求;ERC(Electrical Rule Checking),電氣規(guī)則檢查,檢查短路和開路等電氣 規(guī)則違例。
工具為Synopsys的Hercules。
實(shí)際的后端流程還包括電路功耗分析,以及隨著制造工藝不斷進(jìn)步產(chǎn)生的DFM(可制造性設(shè)計(jì))問題。
物理版圖以GDS II的文件格式交給芯片代工廠(Foundry)在晶圓硅片上做出實(shí)際的電路,再進(jìn)行封裝和測(cè)試,就得到了實(shí)際看見的芯片。
編輯:黃飛
?
評(píng)論
查看更多