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