數位IC設計/驗證工程師
以硬體描述語言設計邏輯電路,透過模擬確認正確性,再經過邏輯合成與時序分析,把設計做成晶片的工程師。
以硬體描述語言設計邏輯電路,透過模擬確認正確性,再經過邏輯合成與時序分析,把設計做成晶片的工程師。
數位 IC 設計工程師使用 Verilog 等硬體描述語言,以 RTL(暫存器傳輸層級)描述處理器、通訊電路等功能。驗證工程師則主要以使用測試平台的模擬等方式,確認設計是否依規格運作。在大型晶片中,驗證所需的工夫有時與設計相當,甚至更多。RTL 經由邏輯合成轉換為邏輯閘電路,再以 STA(靜態時序分析)確認能否在目標頻率下運作。經過佈局與繞線,到交出製造資料的投片為止,是一個階段的結束。負責哪些階段依公司與團隊而不同。
他們以團隊方式工作,成員包括訂定規格的架構師、統整整顆晶片的設計人員、負責佈局繞線與時序的人員,以及負責加入測試機制的 DFT(可測試性設計)人員等。也可能與在晶片上執行的軟體開發人員,討論如何確認動作。處理的事物包括:規格書、RTL 原始碼、測試平台、EDA 工具,以及模擬與時序分析的結果。設計資料和軟體一樣以版本控制管理,並以回歸測試確認每次變更的影響。
基礎是邏輯電路,也就是組合電路與循序電路、正反器與狀態機的理解。在此之上,需要能在 SystemVerilog 等語言中,區分可合成的寫法與驗證用的寫法。時序方面,設定時間與保持時間、Slack,以及跨越不同時脈域的訊號處理都很重要。驗證方面,先學好受限隨機驗證與覆蓋率的觀念會很有幫助。以腳本語言將作業自動化的能力,也在許多場合用得到。
先在「邏輯電路」領域打好基礎,再到「硬體描述語言與驗證」學習 Verilog 的寫法與測試平台的觀念。接著在「LSI設計流程與EDA」掌握整體設計流程,在「時序分析與CDC」學習時序與跨時脈域訊號的處理。處理器常是設計的對象,「CPU與架構」領域會很有幫助。若要準備求職或轉職面試,推薦「硬體技術面試準備」課程;想廣泛學習電路與記憶體,則推薦「電路、設計與記憶體」課程。
邏輯電路 50題 硬體描述語言與驗證 51題 LSI設計流程與EDA 50題 時序分析與CDC 50題 CPU與架構 50題 測試與檢查 51題 電源管理(軟體控制) 51題
從應學習的領域中選出10道基本題
RTL(暫存器傳輸層級) SystemVerilog 測試平台(Testbench) 受限隨機驗證(Constrained random verification) 回歸測試(Regression testing) 邏輯合成 STA(靜態時序分析) Slack(時序裕度) 設定時間 時脈域 同步器(Synchronizer) 投片(Tape-out)
這個職務以邏輯電路與程式的知識為核心。一般來說,多半要求電機電子或資訊相關的知識,但也有人運用軟體開發的經驗,從驗證工作切入。錄用條件依公司與時期而不同。自學邏輯電路與硬體描述語言,實際設計並模擬簡單的電路,也有助於確認自己是否適合。
硬體描述語言看起來像程式語言,但最大的不同在於,寫出來的東西不是依序執行的指令,而是平行運作的電路。此外,晶片製造後很難修改,重新投片需要龐大的費用與時間,因此製造前的驗證非常受重視。時時意識到時序、面積、功耗等物理限制,也是這個職務的特色。
一般來說,沒有必備的執照或證照。實務上重視的是對邏輯電路的理解、以硬體描述語言設計或驗證的經驗,以及時序的觀念。學生時期若用 FPGA 實際讓自己設計的電路動起來,就能體驗從設計到確認動作的流程。