一個芯片產品從構想到完成電路設計是怎樣的過程?










一顆芯片從無到有,從有需求到最終應用,經歷的是一個漫長的過程,作為人類科技巔峰之一的芯片,凝聚了人們的智慧,而芯片產業鏈也是極其復雜的,在此,我大致把它歸為四個部分(市場需求--芯片設計--芯片制造--測試封裝),然后再一一的做詳細介紹。
一個芯片產品從構想到完成電路設計是怎樣的過程?的圖1

市場需求

這個無需多講,目前芯片應用已經滲透到我們生活的方方面面,早晨上班騎的共享單車,到公司刷的IC卡,工作時偷偷地打游戲,手機卡了還要換更快的手機,可以說IC的市場需求一直都在。

(注:以下圖片部分來自網絡,侵刪)

一個芯片產品從構想到完成電路設計是怎樣的過程?的圖2

芯片設計

芯片設計又可以分為兩部分, 芯片前端設計 和 芯片后端設計 ,整體流程如下圖:


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖3

芯片前端設計

前端設計也就是從輸入需求到輸出網表的過程:主要分為以下六個步驟:


  1. RTL設計
  2. 驗證
  3. 靜態時序分析
  4. 覆蓋率
  5. ASIC邏輯綜合

時序分析和驗證時出現的錯誤可能需要反復重做前面幾步才能解決,是一個多次迭代優化的過程。


下面我來仔細介紹一下這六個步驟。


1、RTL設計


在設計之前我們先要確定芯片的工藝,比如是選擇TSMC還是SMIC,是7nm,還是5nm,而工藝的選擇也是受很多因素的制約(如下圖),而芯片工藝的選擇,就是對這些因素的權衡。


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖4

IC設計的第一步就是制定Spec,這個步驟就像是在設計建筑前,要先畫好圖紙一樣,在確定好所有的功能之后在進行設計,這樣才不用再花額外的時間進行后續修改。IC 設計也需要經過類似的步驟,才能確保設計出來的芯片不會有任何差錯。

一個芯片產品從構想到完成電路設計是怎樣的過程?的圖5

而用RTL實現的各種功能模塊,來組成一個實現具體功能的IP,SOC芯片最終由SOC integration工程師把各個IP集成到一起。


IP又分為 模擬IP 和 數字IP ,大概可以做如下的分類:


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖6


在芯片功能設計完備后,我們還要做可測性設計DFT(Design For Test)。

關于DFT的具體介紹,請閱讀:

① https://www.zhihu.com/question/401109345/answer/1387028607

② https://zhuanlan.zhihu.com/p/159273941

一個芯片產品從構想到完成電路設計是怎樣的過程?的圖7

RTL設計最后要做的就是代碼的設計規則檢查。


通過lint, Spyglass等工具,針對電路進行設計規則檢查,包括代碼編寫風格,DFT,命名規則和電路綜合相關規則等。

2、驗證

驗證是保證芯片功能正確性和完整性最重要的一環。驗證的工作量也是占整個芯片開發周期的50%-70%,相應的,驗證工程師與設計工程師的數量大概在2-3:1。


從驗證的層次可以分位:模塊級驗證 , 子系統級驗證 和 系統級驗證 。


從驗證的途徑可以分為:模擬(simulation) , 仿真 和 形式驗證(formality check) 。


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖8

3、靜態時序分析(STA)

靜態時序分析是套用特定的時序模型(timing model),針對特定電路,分析其是否違反designer給定的時序限制(timing constraint)。


目前主流的STA工具是synopsys的Prime Time。


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖9

靜態時序分析的作用:


  1. 確定芯片最高工作頻率
    通過時序分析可以控制工程的綜合、映射、布局布線等環節,減少延遲,從而盡可能提高工作頻率。


  1. 檢查時序約束是否滿足
    可以通過時序分析來查看目標模塊是否滿足約束,如不滿足,可以定位到不滿足約束的部分,并給出具體原因,進一步修改程序直至滿足要求。


  1. 分析時鐘質量
    時鐘存在抖動、偏移、占空比失真等不可避免的缺陷。 通過時序分析可以驗證其對目標模塊的影響。

4、覆蓋率

覆蓋率作為一種判斷驗證充分性的手段,已成為驗證工作的主導。


從目標上,可以把覆蓋率分為兩類:

  • 代碼覆蓋率

作用:檢查代碼是否冗余,設計要點是否遍歷完全。

檢查對象:RTL代碼


  • 功能覆蓋率

作用:檢查功能是否遍歷

檢查對象:自定義的container

在設計完成時,要進行代碼覆蓋率充分性的sign-off, 對于覆蓋率未達到100%的情況,要給出合理的解釋,保證不影響芯片的工能。

5、ASIC綜合

邏輯綜合的結果就是把設計實現的RTL代碼翻譯成門級網表(netlist)的過程。


在做綜合時要設定約束條件,如電路面積、時序要求等目標參數。


工具:synopsys的Design compiler, 綜合后把網表交給后端。


至此我們前端的工作就結束啦,看到這里我先給各位看官個贊!

芯片后端設計

后端設計也就是從輸入網表到輸出GDSII文件的過程:主要分為以下六個步驟:


  1. 邏輯綜合
  2. 形式驗證
  3. 物理實現
  4. 時鐘樹綜合-CTS
  5. 寄生參數提取
  6. 版圖物理驗證

1.邏輯綜合

在前端最后一步已經講過了,在此不做贅述。

2. 形式驗證

  • 驗證芯片功能的一致性
  • 不驗證電路本身的正確性
  • 每次電路改變后都需驗證

形式驗證的意義在于保障芯片設計的一致性,一般在邏輯綜合,布局布線完成后必須做。

工具:synopsys Formality

3. 物理實現

物理實現可以分為三個部分:

  • 布局規劃 floor plan

  • 布局 place

  • 布線 route

  1. 布圖規劃floor plan
    布圖規劃是整個后端流程中作重要的一步,但也是彈性最大的一步。 因為沒有標準的最佳方案,但又有很多細節需要考量。

布局布線的目標:優化芯片的面積,時序收斂,穩定,方便走線。

工具:IC compiler,Encounter


布圖規劃完成效果圖:

一個芯片產品從構想到完成電路設計是怎樣的過程?的圖10
  1. 布局

布局即擺放標準單元,I/O pad,宏單元來實現個電路邏輯。


布局目標:利用率越高越好,總線長越短越好,時序越快越好。


但利用率越高,布線就越困難;總線長越長,時序就越慢。因此要做到以上三個參數的最佳平衡。


布局完成效果圖:


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖11
  1. 布線

布線是指在滿足工藝規則和布線層數限制、線寬、線間距限制和各線網可靠絕緣的電性能約束條件下,根據電路的連接關系,將各單元和I/O pad用互連線連接起來。


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖12

4. 時鐘樹綜合——CTS

Clock Tree Synthesis,時鐘樹綜合,簡單點說就是時鐘的布線。


由于時鐘信號在數字芯片的全局指揮作用,它的分布應該是對稱式的連到各個寄存器單元,從而使時鐘從同一個時鐘源到達各個寄存器時,時鐘延遲差異最小。這也是為什么時鐘信號需要單獨布線的原因。


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖13

5. 寄生參數提取

由于導線本身存在的電阻,相鄰導線之間的互感,耦合電容在芯片內部會產生信號噪聲,串擾和反射。這些效應會產生信號完整性問題,導致信號電壓波動和變化,如果嚴重就會導致信號失真錯誤。提取寄生參數進行再次的分析驗證,分析信號完整性問題是非常重要的。


工具Synopsys的Star-RCXT


6.版圖物理驗證

這一環節是對完成布線的物理版圖進行功能和時序上的驗證,大概包含以下方面:


LVS(Layout Vs Schematic)驗證:簡單說,就是版圖與邏輯綜合后的門級電路圖的對比驗證;


DRC(Design Rule Checking):設計規則檢查,檢查連線間距,連線寬度等是否滿足工藝要求;


ERC(Electrical Rule Checking):電氣規則檢查,檢查短路和開路等電氣規則違例;


實際的后端流程還包括電路功耗分析,以及隨著制造工藝不斷進步產生的DFM(可制造性設計)問題等。


物理版圖以GDSII的文件格式交給芯片代工廠(稱為Foundry)在晶圓硅片上做出實際的電路。


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖14


最后進行封裝和測試,就得到了我們實際看見的芯片。


一個芯片產品從構想到完成電路設計是怎樣的過程?的圖15
芯片設計的流程是紛繁復雜的,從設計到流片耗時長(一年甚至更久),流片成本高,一旦發現問題還要迭代之前的某些過程。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1