數字前端,后端介紹


轉載自:https://www.cnblogs.com/youngforever/p/3142483.html

  • 前端設計(也稱邏輯設計)和后端設計(也稱物理設計)並沒有統一嚴格的界限,涉及到與工藝有關的設計就是后端設計。
  • 個人理解是:
  • 數字前端以設計架構為起點,以生成可以布局布線的網表為終點;是用設計的電路實現想法;
  • 主要包括:基本的RTL編程和仿真,前端設計還可以包括IC系統設計、驗證(verification)、綜合、STA、邏輯等值驗證 (equivalence check)。其中IC系統設計最難掌握,它需要多年的IC設計經驗和熟悉那個應用領域,就像軟件行業的系統架構設計一樣,而RTL編程和軟件編程相當。
  • 數字后端以布局布線為起點,以生成可以可以送交foundry進行流片的GDS2文件為終點;是將設計的電路制造出來,在工藝上實現想法。
  • 主要包括:后端設計簡單說是P&R,但是包括的東西不少,像芯片封裝和管腳設計,floorplan,電源布線和功率驗證,線間干擾的預防和修 正,時序收斂,STA,DRC,LVS等,要求掌握和熟悉多種EDA工具以及IC生產廠家的具體要求。

  • 術語:tape-out—提交最終GDS2文件做加工;Foundry—芯片代工廠,如中芯國際。。。

    數字前端設計的一般流程:

                 1.    規格制定

      芯片規格,也就像功能列表一樣,是客戶向芯片設計公司(稱為Fabless,無晶圓設計公司)提出的設計要求,包括芯片需要達到的具體功能和性能方面的要求。

  •       2.    詳細設計

    Fabless根據客戶提出的規格要求,拿出設計解決方案和具體實現架構,划分模塊功能。目前架構的驗證一般基於SystemC語言,對構架模型的仿真可以使用SystemC的仿真工具。其中典型的例子是Synopsys公司的CoCentric和Summit公司的Visual Elite等。

          3.    HDL編碼

    使用硬件描述語言(VHDL,Verilog HDL,業界公司一般都是使用后者)將模塊功能以代碼來描述實現,也就是將實際的硬件電路功能通過HDL語言描述出來,形成RTL(寄存器傳輸級)代碼。

    設計輸入工具:具有強大的文本編輯功能,多種輸入方法(VHDL,Verilog,狀態轉移圖,模塊圖等),語法模板,語法檢查,自動生產代碼和文檔等功能。如Active-HDL,VisualVHDL/Verilog等。

    RTL分析檢查工具:Synopsys LEDA

          4.    仿真驗證

          仿真驗證就是檢驗編碼設計的正確性,檢驗的標准就是第一步制定的規格。看設計是否精確地滿足了規格中的所有要求。規格是設計正確與否的黃金標准,一切違反,不符合規格要求的,就需要重新修改設計和編碼。

    設計和仿真驗證是反復迭代的過程,直到驗證結果顯示完全符合規格標准。

    仿真驗證工具Synopsys的VCS,Mentor ModelSim,Cadence Verilog-XL,Cadence NC-Verilog。
          5.    邏輯綜合――Design Compiler

          仿真驗證通過,進行邏輯綜合。邏輯綜合的結果就是把設計實現的HDL代碼翻譯成門級網表netlist。綜合需要設定約束條件,就是你希望綜合出來的電路在面積,時序等目標參數上達到的標准。邏輯綜合需要基於特定的綜合庫,不同的庫中,門電路基本標准單元(standard  cell)的面積,時序參數是不一樣的。所以,選用的綜合庫不一樣,綜合出來的電路在時序,面積上是有差異的。

    一般來說,綜合完成后需要再次做仿真驗證(這個也稱為后仿真,之前的稱為前仿真)

    邏輯綜合工具Synopsys的Design Compiler(DC),Cadence的 PKS,Synplicity的Synplify等。另外,和綜合工具配合使用的還有很多其他工具,如靜態時間分析工具,等效性檢查工具等等。Synopsys公司和Cadence公司都提供完整的工具包。
          5.1.    STA

    Static Timing  Analysis(STA),靜態時序分析,這也屬於驗證范疇,它主要是在時序上對電路進行驗證,檢查電路是否存在建立時間(setup  time)和保持時間(hold time)的違例(violation)。這個是數字電路基礎知識,一個寄存器出現這兩個時序違例時,是沒有辦法正確采樣數據和輸出數據的,所以以寄存器為基礎的數字芯片功能肯定會出現問題。STA工具有Synopsys的Prime Time。
          5.2.    形式驗證

          這也是驗證范疇,它是從功能上(STA是時序上)對綜合后的網表進行驗證。常用的就是等價性檢查(Equivalence Check)方法,以功能驗證后的HDL設計為參考,對比綜合后的網表功能,他們是否在功能上存在等價性。這樣做是為了保證在邏輯綜合過程中沒有改變原先HDL描述的電路功能。形式驗證工具有Synopsys的Formality。前端設計的流程暫時寫到這里。從設計程度上來講,前端設計的結果就是得到了芯片的門級網表電路。

  • 數字前端后端區別

下面轉自:http://blog.sina.com.cn/s/blog_875c3b2f01010pi6.html

IC前端主要是數字前端設計、軟件硬件驗證、FPGA驗證等,前端的入門門檻相對后端較低(但其實還相對其他行業是比較高的)。在北京,就我知道,前端的工程師起薪是7.5k。現在全國合格的前端工程師還是非常少的,數量缺口達到3萬。

后端主要是模擬部分以及layout,這方面需要及其豐富的經驗,相對應收入會比前端高一點,人才也是奇缺的。人才缺口相對前端就更大了。 同時還有一些IC流程工程師,也是非常吃香的。 前端需要學習的周期相對后端短,后端尤其是模擬部分,完全是靠經驗熬出來的,所以如果有毅力,在模擬的路上多走幾年,前途(錢途)也是不可限量的。我有一個同學,學模擬的,在公司屬於奇缺人才,裁員和他是絕緣體。當然本身實力也很強的, 所以樓主主要看自己吧,喜好哪個方面。IC有時候很有挑戰,有時候很枯燥。像我,debug波形多了,會惡心

數字前端主要包括兩個方面:設計和驗證。設計前期是寫verilog代碼,到后來就是做些架構層面的東西,設計和驗證都是針對邏輯功能而言的,不太關心時序問題
數字后端做實現、流程,主要是學會使用工具軟件后端經驗比較重要。相對而言,前端的門檻較低,后端門檻較高。

我們來看一下獵頭招聘就明白這兩個概念了。呵呵。。


高級數字電路工程師
工作地點:成都      
職位描述:
1.  完成公司ASIC數字前端的設計和驗證
2.  配合數字后端部門完成ASIC的后端設計;
3.  配合測試部門完成ASIC的測試;
4.  完成相關文檔的整理與編寫。
任職要求:
1.    相關專業本科以上學歷;
2.    4-5年相關工作經驗,具有獨立設計模塊、芯片能力;
3.    熟練掌握Verilog,熟悉芯片的仿真驗證方法,熟悉 NC-Sim CS, Quartus等EDA工具;熟悉ASIC設計流程;了解系統總線架構和常用軟硬件接口協議。
4.    良好的溝通協調能力及團隊合作精神。

 

  • 數字后端設計工程師

職位描述:
負責數字電路的綜合、自動布局布線、時鍾分析、時序修正、電源分析、信號完整性分析、物理驗證、代工廠tapeout等數字后端工作,協助前端工程師完成設計、驗證和時序分析,完成對代工廠數據交接和對客戶技術支持。
任職資格:
1. 微電子相關專業,本科以上學歷。
2. 熟悉SOC從RTL到GDS的完整設計流程;                                                                                                         
3. 能夠熟練使用Astro/Encounter、DC/PC、PT、Formality、MentorDFT、StarRC、Calibre等相關設計工具的某一套或幾種;
4. 較好的英文閱讀能力;                                                                                                         
5.高效的學習能力和團對合作精神。

 

  • 數字前端和后端設計工程師需要具備什么能力

下面轉自:http://yuqix.blog.51cto.com/979066/242564

<前端>

  1. 精通verilog(包括2001)的編程,仿真,測試
  2. 充分掌握邏輯綜合和時序分析
  3. 理解前端經常使用的各種庫的格式和內容,比如.v, .lib
  4. 了解某個應用領域的知識
  5. 學會使用FPGA測試代碼
  6. 具備DFT的基本概念

<后端>

  1. 熟悉后端流程,(IO plan, floorplan, power flan, place, CTS, route)
  2. 熟練掌握一種后端工具的使用
  3. 學會如何使用工具分析功耗及其對設計的影響,(static/dynamic IR-drop, EM等)
  4. 學會使用工具分析和解決cross talk問題
  5. 精通時序分析
  6. 理解后端常用庫和文件的格式,內容,生成和轉換,比如: .lib, spice, lef, def
  7. 精通一種unix script語言,現在大多用perl,也可以用awk。(TCL不是unix script語言,但是也一定要會)
  8. 十分了解circuit design及其工具 (為DRC/LVS准備的)
  9. 具備DFT的基本概念
  10. 了解package design的種類和過程

一個優秀的后端工程師要能夠在復雜的結果中,識別出問題的真假,比如時序上的違反,找出解決問題或者防止問題發生的方法,然后靈活有效地使用工具來達到你的要求。
 
也來說兩句前端工程師:

前端工程師還可以考慮掌握:

  1. 掌握系統的划分:功能定義,資源分析,結構划分等體系結構上的知識.
  2. 掌握關於低功耗,高速度,低面積相關的設計理念
  3. 熟悉或掌握系統仿真平台的搭建:前仿真,后仿真和atpg仿真等仿真平台的擴充性和兼容性的知識,仿真一定是一大塊了.
  4. 熟悉或掌握集成電路前后端設計流程:前端和后端設計接口及影響和前后端工具的接口及影響
  5. 除.lib,.v外還應掌握,SDF/SPEF/DSPF/RSPF等數據結構
  6. 熟悉或掌握你所有用的廠家工藝的工藝特性.
  7. 掌握形式驗證工具.
  8. 掌握靜態時序分析工具的使用:比如如何保證你利用靜態時序分析分析通過的設計,流片回來時序一定正確.
  9. 掌握perl語言,shell,makefile語言

 

1)  前端主要負責邏輯實現,通常是使用verilog/VHDL之類語言,進行行為級的描述。而后端,主要負責將前端的設計變成真正的 schematic&layout,流片,量產。打個比喻來說,前端就像是做藍圖的,可以功能性,結構性的東西。而后端則是將藍圖變成真正的高樓。

2)  前端設計主要是進行功能設計,代碼的編寫,要會使用硬件描述語言,也就是上面有提到的verilog/VHDL等,當然,也會要使用一些仿真軟件。后端設計需要的則會更加多一些了,包括綜合,到P&R,以及最后的STA,這些工具里candence和synopsys都有一整套系統的。有關心的可以去他們的網站看看。

其實前端和后端對於編程沒有特別的要求。前端的設計會需要使用硬件描述語言來寫代碼,但是,需要注意的是,這里指的是"描述",而不像是C或者 java之類的強調編程技巧啊什么的。所以,這個選擇就看你自己了,而與編程沒有什么特別的關系了。

 


免責聲明!

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



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