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