芯片行業(yè)是個高風險、高投入的行業(yè),做一款芯片僅僅是開模的費用就是百萬起。
從設計到制造都是環(huán)環(huán)相扣的,設計過程中的BUG或者錯誤能夠達到上千個。
所以驗證是保證芯片功能正確性和完整性最重要的一環(huán)。
如果設計方面的缺陷沒被發(fā)現,那么化沙子為芯片的這種高能操作就會變成:沙子→沙子做的垃圾。這就是驗證工程師之于芯片的重要性。
一般好的IC設計公司設置設計和驗證崗位的比例都是1:3。
驗證在設計的哪個環(huán)節(jié)?
作為一名驗證工程師,一定要具備全流程的意識。芯片設計流程,主要有需求分析→芯片規(guī)格定義→RTL設計→邏輯綜合→布局布線→Sign-off這幾個大的步驟。
那驗證處于哪個環(huán)節(jié)?又在扮演什么樣的角色呢?
主要處于RTL設計環(huán)節(jié),這個環(huán)節(jié)的驗證就是功能驗證,也就是RTL前仿真。在這個環(huán)節(jié),功能驗證工程師要驗證RTL設計是否符合芯片規(guī)格說明書里要求的功能。
其次就是布局布線環(huán)節(jié),需要進行物理驗證,比方說時序分析和后仿真。
事實上驗證是貫穿于芯片設計整個流程的,而數字驗證工程師主要做的工作就是前仿真+后仿真。
扮演的角色可以理解為驗證就是為設計糾錯的存在。這就是驗證的價值體現。
優(yōu)秀的驗證工程師,需要掌握的技能有很多,兼?zhèn)?a class="article-link" target="_blank" href="/tag/%E7%A1%AC%E4%BB%B6/">硬件和軟件,可以說是更加觸類旁通。所以還是需要循序漸進,從最基礎的內容開始逐步掌握。
驗證工程師的必備技能?
這里羅列的是數字IC驗證工程師需要具備的技能,是要用所有“資源”點滿的。
· 理論知識
說起理論知識,數電知識是做數字芯片的基石,也是很多同學入行學習的第一本書,一定是需要先掌握的??梢岳斫鉃樽詭У谋粍蛹寄?。
· 語言類
先來看Q技能,語言。
驗證工程師們需要使用各種驗證語言去搭建驗證環(huán)境。常用的驗證語言有C、C++和StemVerilog。
驗證崗位對Verilog語言的要求是能夠看懂、能夠理解的程度,并不需要像設計崗位那樣精通。
System Verilog就屬于驗證工程師的核心技能了,隨著設計越來越復雜,為了更方便例化模塊,所以SV語言也是越來越流行。
· 工具類
再來看W技能,驗證工具。
UVM是現在主流的驗證方法學,同樣屬于驗證工程師必備的核心技能。
當驗證環(huán)境和測試用例都搭建好后,就需要進行仿真和debug了。
EDA仿真工具,不同公司使用的工具軟件不同,但大都是三巨頭家的(Synopsys、Cadence、Mentor)。掌握并熟練使用這些EDA工具,能夠很大程度上提升仿真和debug效率。
· 環(huán)境類
接下來是E技能,環(huán)境。
EDA工具基本都提供的是Linux版本,芯片設計公司提供的開發(fā)環(huán)境也都是Linux。所以需要熟練掌握Linux環(huán)境下的常用命令和操作。
處理文本需要使用到編輯器,比如VIM,所以對于編輯器同樣要做到熟練使用。
· 協議類
除了驗證的一些基本技術之外。IP中還會使用到很多協議,所以驗證工程師還需要了解各種通用協議。
如果說前面的技能都屬于基礎的話,協議就屬于進階類型的技能了,可以直接理解為大招。
· 綜合能力
這類綜合能力在一眾技能中算是平A。
作為驗證工程師,有很大一部分的工作時間都是在讀文檔,而文檔全都是英文,所以英語的讀寫能力是非常重要的。
溝通、學習和團隊能力就不必多說了,這是任何崗位都需要具備的基礎能力。
結 語
驗證在整個芯片設計流程中的重要性不言而喻。
作為兼?zhèn)溆布蛙浖尿炞C崗來說,對于學歷和專業(yè)的要求還是比較友好的。且路漫漫其修遠兮,入行之后的進步空間和學習上限仍然很充足。
技術、管理、轉崗都是可以選擇的道路,自然不必擔心長期的職業(yè)發(fā)展。
著眼當下,學到知識、學得扎實才是最緊要的任務。
學習之路上,IC修真院與你同行。