1. 程式人生 > >淺談IC前端後端的區別、以及流程簡介

淺談IC前端後端的區別、以及流程簡介

  • 前端設計(也稱邏輯設計)和後端設計(也稱物理設計)並沒有統一嚴格的界限,涉及到與工藝有關的設計就是後端設計。
  • 個人理解是:
  • 數字前端以設計架構為起點,以生成可以佈局佈線的網表為終點;是用設計的電路實現想法;
  • 主要包括:基本的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。前端設計的流程暫時寫到這裡。從設計程度上來講,前端設計的結果就是得到了晶片的門級網表電路。

  • 數字前端後端區別

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.高效的學習能力和團對合作精神。

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

<前端>

  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的種類和過程

一個優秀的後端工程師要能夠在複雜的結果中,識別出問題的真假,比如時序上的違反,找出解決問題或者防止問題發生的方法,然後靈活有效地使用工具來達到你的要求。
 
作者:china_soc   時間:2007-12-20 17:26

也來說兩句前端工程師:
前端工程師還可以考慮掌握:

  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之類的強調程式設計技巧啊什麼的。所以,這個選擇就看你自己了,而與程式設計沒有什麼特別的關係了。

相關推薦

IC前端區別以及流程簡介

前端設計(也稱邏輯設計)和後端設計(也稱物理設計)並沒有統一嚴格的界限,涉及到與工藝有關的設計就是後端設計。個人理解是:數字前端以設計架構為起點,以生成可以佈局佈線的網表為終點;是用設計的電路實現想法;主要包括:基本的RTL程式設計和模擬,前端設計還可以包括IC系統設計、驗證(verification)、綜

IC前端 科普

前端:       就是將你的想法或別人的想法用你設計的電路來實現,也就是說你可以通過電路設計來實現你的想法。可以這樣說,那時你就是一個科學家。有人這樣認為:一個好的前端IC設計師不應該叫設計師而應該叫科學家。 後端:     

.Net Core單元測試

- [1. 前言](#head1) - [2. 為什麼需要單元測試](#head2) - [2.1 防止迴歸](#head3) - [2.2 減少程式碼耦合](#head4) - [3. 基本原則和規範](#head5) - [3.1 3A原則](#head6) - [3.2 儘量避免直接測試私有方法

MVC框架(二)----前端MVCMVVM等設計模式區別與聯絡

        上篇文章中提到了前端的框架分類,其中前端JS框架中有些是MVC設計模式,但是java和dotNET平臺也有自己的MVC也有自己的設計模式,這兩類有什麼區別呢,好多猿們甚是不解,旁徵博引

移動webpc通用前端資料庫支援emoji表情存入的方法

一、utf8mb4的最低mysql版本支援版本為5.5.3+,若不是,請升級到較新版本。 二、 修改mysql配置檔案my.cnf(windows為my.ini) my.cnf一般在etc/mysql/my.cnf位置。找到後請在以下三部分裡新增如下內容: [client] defa

sqlserver 和 mysql儲存過程函式的區別

其實我不太喜歡搞資料庫,平常也就是用用select、insert。這次公司要把資料庫從sqlserver遷到mysql,我也試著改了幾個儲存過程,在此總結。首先吐槽一句,sqlserver和 mysql差別還真大! 區別一:儲存過程入參 USE [LearningRep

一下web移動基本

5.5 相關 過程 部件 位圖 都是 3.5 柵格 開發 屏幕尺寸、屏幕分辨率、屏幕像素密度 屏幕尺寸: 指屏幕的對角線的長度,單位是英寸,1英寸=2.54厘米。 常見的屏幕尺寸有2.4、2.8、3.5、3.7

唇槍舌戰,誰與爭鋒?——前端激情辯論賽

開發者辯論賽你是否還在為才華無處施展而苦惱?你是否還在為觀點不被認同而孤立?你是否有顆操著程序猿的心而無人問津?來這裏就對了,51CTO為你量身打造一場神辯論賽,說出你的觀點,表達你那顆用代碼改變世界的決心!辯論賽主題:前端好還是後端好?正方辯友團觀點:後端飽和,前端發展空間大反方辯友團觀點:前端沒前途,後端

angular2與angularJS的區別

iges style 區別 float 頁面加載速度 小夥伴 困境 特征 架構 簡介 大家好,今天給大家介紹一下angular,相信做過前端的小夥伴們都知道angular的大名,angularJS自2012年發布起就受到了大家的廣泛關註。他首次提出

C++ strlen 與 sizeof的區別

數據 數組長度 eof out 其他 使用 c++ 區別 字符串數組 先舉個栗子: 字符串數組跟字符串指針,然後分別使用sizeof跟strlen看輸出結果。 char strA[] = "2017-7-19"; char *strB = "23333"; cout &

web前端開發

非主流 寫代碼 人員 使用 actions css3 認識 ont 高效 我個人認為前端攻城獅其實就是編程技術人員,用一句話來形容“比UI設計懂技術,比技術人員更懂交互”,當然也有人說前端工程師是工程師中的設計師,是設計師中的工程師。既然是編程工作,那就不會做一輩子,畢竟太

SQL優化入門:3利用索引

其它 工作 書籍 htm color 之前 index mage 即使 0、寫在前面的話關於索引的內容本來是想寫的,大概收集了下資料,發現並沒有想象中的簡單,又不想總結了,糾結了一下,決定就大概寫點淺顯的,好吧,就是懶,先挖個淺坑,以後再挖深一點。最基本的使用很簡單,直接就

Web前端傻傻分不清,

processor sea fix world port submit 文章 word targe 1. Web前端後端傻傻分不清 原創 2016年12月25日 19:50:08 7178 0 2 前言 ??做C開發將近六年,基本上沒有接觸過web相關的東西,原

web前端工具

速度 hbuild dcloud hbuilder sub 格式 demo 問題 也有 相信大家在剛接觸前端時候肯定會面臨一個問題,用什麽編譯器來寫代碼呢?如果大家去搜索的話肯定能找到很多,個人覺得比較好用的有hbuilder、subliem text。我自己的電腦上就裝了

對象的創建內存布局和訪問定位

虛擬機創建 head 分配 完成 原子性 mar ava 失敗重試 檢查 在此簡單的記錄一下《深入理解Java虛擬機》第2章的2.3節內容。 對象的創建   這裏的對象的創建是指普通的對象(不包括數組和Class對象)。對象的創建簡單來說就是執行new的時候,虛擬機做出對應

超多慕課網實戰教程破解自學教程百度雲盤分享-Python/Java/前端/小程序/運維測試/人工智能

上線 備註 面試 漏洞 vue ret 服務號 協作平臺 java軟件 以下課程,需要的可以加我微*信:hgh813210,備註你需要的課程 Java企業級電商項目架構演進之路 Tomcat集群與Redis分布式百度雲實戰分享 前端成長必經之路 基於Storm構建實時熱力分

Log4j和Log4j2的區別

淺談Log4j和Log4j2的區別1、配置文件類型 log4j是通過一個.properties的文件作為主配置文件的,而現在的log4j 2則已經棄用了這種方式,采用的是.xml,.json或者.jsn這種方式來做,可能這也是技術發展的一個必然性,畢竟properties文件的可閱讀性真的是有點差。 2、核心

call apply bind的區別

lB src cti lba itl UNC 分享 spa div 這三個方法的用法非常相似,將函數綁定到上下文中,即用來改變函數中this的指向。舉個例子: var zlw = { name: "zlw", sayHello: function (ag

unix, linux, ios, android 區別和聯絡

淺談 unix, linux, ios, android 區別和聯絡 網上的答案並不是很好,便從網上整理的相對專業的問答,本人很菜,大佬勿噴 UNIX 和 Linux   UNIX 作業系統(尤尼斯), 是一個強大的多使用者、多工作業系統,支援多種處理器架構,按照作業系統的分類,屬於

unix, linux, ios, android 區別和聯系

bubuko 而且 否則 實施 淺談 win 由於 優秀 規範 淺談 unix, linux, ios, android 區別和聯系 網上的答案並不是很好,便從網上整理的相對專業的問答,本人很菜,大佬勿噴 UNIX 和 Linux ??UNIX 操作系統(尤尼斯), 是一個