每日一摘:數字IC設計流程


簡述ASIC設計流程,並列出各部分用到的工具:

芯片架構:fabless

考慮芯片定義、工藝、封裝

RTL設計:Verilog HDL、System Verilog、Vim、Emacs

使用Verilog、System Verilog、VHDL進行描述

功能仿真:Modelsim/Questasim(Mentor公司)、VCS(Synopsys公司)、NC-Verilog(Cadence)、UVM

理想情況下的仿真

綜合&掃描鏈的輸入(DFT):Synplify(Synopsys公司)、Design Compile(Synopsys公司)、DFT Compile(Synopsys公司)

邏輯綜合,將描述的RTL代碼映射到基本邏輯單元門、觸發器上,UVM驗證方法學、FPGA原型驗證,DFT技術插入掃描鏈

等階性檢查形式驗證:Formality(Synopsys公司)、Conformal(Cadence公司)

使用形式驗證技術

靜態時序分析(STA):Prime Time(Synopsys公司)

布局規划:保證沒有太多的內部交互,避免布線上的擁堵和困擾

布局布線:IC Compile(Synopsys公司)

布線圖與原理圖比較:Dracula(Cadence公司)

設計規則檢查:Calibre(Mentor公司)

GDSII:這個整個流程成為RTL2GDSII,利用GDSII來生產芯片的過程稱作流片(Tapeout),以上是一個Fabless公司的簡易設計流程,最后將GDSII送到Foundry生產芯片。

數字前端:

1. 架構/算法設計分析

  • 目的:完成芯片中數字部分的高層次算法或架構的分析與建模,為硬件提供一個正確的軟件功能模型,更為重要的是,通過大量的高層次仿真和調試,為RTL實現提供總體性的設計指導。數字部分越復雜,這一點越重要。
  • 工具:MATLAB、C++、C、System C、System Verilog等。不同類型的芯片都不同的選擇,如數字信號處理類芯片,偏好MATLAB。
  • 特點:這部分工作至關重要,基本上奠定了整個芯片的性能和功耗的基礎。這部分工作主要由具有通信、信號處理、計算機、軟件專業背景的工程師完成,也有很多微電子專業背景的工程師參與。

2. RTL實現

  • 目的:依據第一步的結果,完成由高層次描述到Verilog HDL實現的過程。

  • 工具:GVim/Emac、Verilog/VHDL

  • 特點:這一步能明顯區別中訓練有素的工程師和初學者。前者在寫代碼的過程中,具有極強的大局觀,能夠在書寫Verilog HDL、描述邏輯功能的同時,還能夠兼顧邏輯綜合、STA、P&R、DFX、功耗分析等多方面因素,最終提供一份另其他環節的工程師都賞心悅目的代碼。初學者則處處留地雷,一不小心就引爆。

3. Coding Style Check

  • 目的:排除RTL代碼中CDC(Clock Domain Cross)、Lint等問題。
    CDC:跨時鍾域檢查
    LInt:代碼潛在問題檢查(例如A+B的進位溢出)
  • 工具:Syglass、LEDA、0inCDC
  • 特點:目前大部分芯片中的數字部分基本上都采用局部同步和全局異步的設計策略,因此,在設計中需要小心注意跨時鍾域的數據同步問題。
  • 輸入:RTL,SDC,lib/sglib
  • 輸出:wave file,report

4. 功能驗證

  • 目的:在無延遲的理想情況在,通過大量的仿真,發現電路設計過程中的人為或者非人為引起的bug。主要指標是功能覆蓋率。

  • 工具:Modelsim、VCS、NC-Verilog、(DVE/Verdi波形查看器)

  • 語言:C++、C、System C、System Verilog,基於UVM的方法學等。主要是System Verilog,一般哪個方便用哪個。

  • 特點:驗證工程師近年來已經成為IC設計中需求量最大的崗位。這個階段會占用大量的時間,數以月計。

5. 邏輯綜合+DFT

  • 目的:將RTL代碼映射為與工藝庫相關的網表。

  • 工具:DesignCompiler、RTL Compiler。DesignCompiler在市場中占有壟斷性地位,幾乎成為邏輯綜合的標准。

  • 特點:
    a.從芯片生產的角度來看,在該步驟之前,所有的工作都可近似看做一個虛擬性的,與現實無關。而從邏輯綜合起,后續所有的工作都將與工藝的物理特性、電特性等息息相關。邏輯綜合工具的功能主要是將VerilogHDL格式的文本映射為網表格式的文本,因此,它的功能等同於文本編譯器。那么轉換的方式有很多種,工具如何選取呢?邏輯綜合過程中,整個文本格式的編譯過程是在給定的人為約束條件下進行的,通過這些約束和設定的目標來指導工具完成Compiler的工作。所以,邏輯綜合過程可以看成一個多目標(頻率、面積、功耗)多約束的工程優化問題。
    b.該步驟中,通常會插入DFT、clock gating等。
    c.該步驟中通常加入Memory、各種IP等。為了在各種工藝庫以及FPGA原型驗證平台之間有一個更方便的移植,注意適當處理這些Memory、IP等的接口。該步驟中也可加入I/O、PLL等。
    DFT(Design For Test): 為了保證芯片內部的制造缺陷盡量能夠哦被檢測到,通過在電路中插入掃描鏈(Scan Chain)的方式,測試IC在生產制造過程中是否出現問題。加入DFT會增加20%~30%的面積。但為了保證良率,為了給客戶的片子是合格的需要將具有缺陷(工廠制造缺陷)的片子篩除。

  • 輸入文件:
    a.RTL代碼:由ASIC design engineers團隊提供;交接前,必須保證在第3步的check中沒有任何問題;
    b.工藝庫(.db):由晶圓廠提供;
    c.約束(SDC):由邏輯綜合工程師和ASIC design engineers共同商定。

  • 輸出文件:
    a.網表:包含了RTL中的所有的邏輯信息,除此以外,可能還會有DFT、clock gating、I/O等;網表主要用於P&R等流程;
    b.標准延遲文件SDF:主要包含了網表中所有器件的延遲信息,用於時序仿真;PT 會結合后端工具生成的一個更為精確的sdf ,所以,通常會用PT的sdf 文件做后仿真。
    Project文件:.ddc;
    c.各種報告:timing report、area report、constrain report、clock report、violation report等等,以及工具的log文件。(此處最好能夠熟悉各種腳本語言,將各種report處理為友好易讀形式)

6.形式驗證

  • 目的:RTL代碼和邏輯綜合后的網表是否具有一致的功能。(尤其是在后端做ECO的時候)
  • 工具:Formality、Conformal
  • 輸入文件:RTL代碼、netlist(邏輯綜合輸出)、約束
  • 輸出文件:match和verify 報告。

7. 靜態時序分析

    • 目的:分析設計中所有的路徑,確保滿足內部時序單元對建立時間和保持時間的要求。
    • 工具:PrimeTime、Tempus。PrimeTime在市場中占有壟斷性地位,幾乎成為STA的標准
      特點:
    • 輸入:spef文件、PnR網表,標准單元庫db文件,IP的dp文件
    • 輸出:SDF,timing ECO文件
    • 特點:
      a.從邏輯綜合開始,基本上每做一步大的調整,都會完成一次STA分析,以保證每步都能實現時序收斂。鑒於該特性非常重要,PrimeTime成為了Signoff的重要工具。
      b.所用到的SDC同邏輯綜合;
      c.通常設計中會存在大量的違例路徑,STA要修大量的setup、hold等,如何修這些違例,可以體現工作經驗的重要性。此外,如果是前端修timing違例,一般會修的很快,但是會帶來一個重大的問題,代碼被前端修改后是否存在新的bug,還需重新仿真確認,仿真會消耗掉數以月計的時間,所以除非萬不得已,不會找前端修timing。

 注:靜態時序分析和形式驗證這屬於驗證范疇。
STA主要是在時序上對電路進行驗證,檢查電路是否存在建立時間(setup time)和保持時間(hold time)的違例(violation)。而形式驗證是從功能上對綜合后的網表進行驗證。常用的就是等價性檢查(LEC)方法,以功能驗證后的HDL設計為參考,對比綜合后的網表功能,他們是否在功能上存在等價性。
靜態時序分析和形式驗證出現在設計流程中前后端過程,有一些地方在前端中沒有提到,應該是在后端當中比較重要,作為驗證設計工作的一部分,在前端中也加入靜態時序分析和形式驗證可以提高設計的可靠性。

數字IC設計筆試題簡答:

    • 1.需求分析(制定規格書): 分析用戶或市場的需求,並將其翻譯成對芯片產品的技術需求

    • 2.算法/架構設計:

      a.算法設計:設計和優化芯片鍾所使用的算法。這一階段一般使用高級編程語言(如 C/C++),利用算法級建模和仿真工具(如 MATLAB, SPW)進行浮點和定點的仿真,進而對算法進行評估和優化。

      b.構架設計:根據設計的功能需求和算法分析的結果,設計芯片的構架,並對不同的方案進行比較,選擇性能價格最優的方案。這一階段可以使用 SystemC 語言對芯片構架進行模擬和分析。

    • 3.RTL 設計(代碼輸入): 使用 HDL 語言完成對設計實體的 RTL 級描述。這一階段使 用 VHDL 和 Verilog HDL 語言的輸入工具編寫代碼。

    • 4.RTL 驗證(功能仿真): 使用仿真工具或其他 RTL 代碼分析工具,驗證 RTL 代碼的 質量和性能。

    • 5.綜合:從 RTL 代碼生成描述實際電路的門級網表文件。

    • 6.門級驗證(綜合后仿真):對綜合產生的門級網表進行驗證。這一階段通常會使用仿

      真、靜態時序分析和形式驗證等工具。

    • 7.布局布線:后端設計對綜合產生的門級網表進行布局規划(Floorplanning)、布局 (Placement)、布線(Routing),生成生產用的版圖。

    • 8.電路參數提取:確定芯片中互連線的寄生參數,從而獲得門級的延時信息。

    • 9.版圖后驗證: 根據后端設計后取得的新的延時信息,再次驗證設計是否能夠實現所有 的功能和性能指標。

    • 10.芯片生產: 生產在特定的芯片工藝線上制造出芯片。

    • 11.芯片測試: 對制造好的芯片進行測試,檢測生產中產生的缺陷和問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM