uvm 形式验证_IC设计职位详解之“数字验证工程师”就业必学课程
數(shù)字驗(yàn)證處于數(shù)字IC設(shè)計(jì)流程的前端,屬于數(shù)字IC設(shè)計(jì)類崗位的一種。在IC設(shè)計(jì)中,數(shù)字驗(yàn)證所占的人數(shù)比重是非常多的,很多大公司,數(shù)字前端設(shè)計(jì)工程師與驗(yàn)證工程師的比例已經(jīng)達(dá)到1:3。
數(shù)字驗(yàn)證主要分成幾種層次的驗(yàn)證:IP level, unitlevel,fullchip/SoC level, gatelevellevel,硬件加速仿真等。
一、數(shù)字驗(yàn)證工程師主要干什么?
1. 閱讀各種SPEC
最重要的一份spec是design spec,就是和你一起合作的好基友設(shè)計(jì)工程師寫(xiě)的設(shè)計(jì)文檔,比如下面這種:UART IP Core Specification
其中需要重點(diǎn)了解的是:
fetures:這個(gè)模塊需要支持的性能列表。
IO ports:這個(gè)模塊對(duì)外的IO端口。
operation mode:這個(gè)模塊的主要工作模式。
除了這份詳細(xì)的設(shè)計(jì)文檔之外,如果這個(gè)IP需要用到很多協(xié)議,那你自然還要去閱讀一些協(xié)議文檔咯,比如AMBA總線協(xié)議,MIPI協(xié)議,DDR協(xié)議等。
2. 撰寫(xiě)verification spec
公司里面,工程師做事情之前都需要出一份詳細(xì)的文檔,驗(yàn)證工程師也不例外,你要出的文檔叫做verification spec,其中主要的內(nèi)容包括:
驗(yàn)證平臺(tái)架構(gòu):以UVM驗(yàn)證平臺(tái)為例。
現(xiàn)在IC行業(yè)內(nèi),很多公司的驗(yàn)證環(huán)境都不盡相同,比如有純C/C++的環(huán)境,有純UVM的環(huán)境,有UVM+C++的環(huán)境,甚至還有systemc的環(huán)境??偟膩?lái)說(shuō),現(xiàn)在的趨勢(shì)都是在往UVM的驗(yàn)證環(huán)境上轉(zhuǎn)。
測(cè)試用例(test plan)
test plan的出爐是一個(gè)高質(zhì)量的工作,因?yàn)樗鼪Q定了你驗(yàn)證的工作量,最重要是它決定了你驗(yàn)證的完整度。驗(yàn)證工程師的終極目標(biāo)就是:覆蓋所有的情況,不放過(guò)任何一個(gè)bug。
這份東西需要你和designer反復(fù)的詳細(xì)討論,在后面的過(guò)程中,還需要進(jìn)一步的優(yōu)化補(bǔ)充這份文檔。
3. 碼代碼,搭建驗(yàn)證環(huán)境
verification spec完成之后,接下來(lái)就要開(kāi)始碼代碼了,使用各種驗(yàn)證語(yǔ)言去搭建驗(yàn)證環(huán)境,常用的驗(yàn)證語(yǔ)言有C/C++,systemC,systemverilog。
4. 創(chuàng)建test cases
根據(jù)前面完成的詳細(xì)test plan去創(chuàng)建驗(yàn)證需要用的test cases,每家公司對(duì)test cases的命名有一定規(guī)則,比如長(zhǎng)這樣的:
有些公司就直接用數(shù)字來(lái)給test cases命名。
還有些公司,直接用腳本來(lái)生成test cases,只要把關(guān)鍵的一些設(shè)置調(diào)好,用腳本一刷,case就全部生成了。
當(dāng)然每種創(chuàng)建cases的方法各有優(yōu)缺點(diǎn),你進(jìn)去公司之后,也只能入鄉(xiāng)隨俗。
5. debug
驗(yàn)證環(huán)境和測(cè)試用例都搭建好了,下一步重點(diǎn)就是仿真和debug了。前面搭環(huán)境的時(shí)間其實(shí)大概只占20%,debug才是最花時(shí)間的。
仿真所用到的工具主要有:
mentor:questasim
cadence:NC-sim
synopsys:VCS
幾款工具一個(gè)比一個(gè)好,當(dāng)然價(jià)格也是一個(gè)比一個(gè)貴。工欲善其事必先利其器,要想提高你的仿真和debug效率,工具里面好的功能也要好好研究下的。
debug主要目的是尋找RTL的bug,當(dāng)然前面搭建的驗(yàn)證平臺(tái)也會(huì)存在很多bug,最終的目標(biāo)就是所有的test cases都能完全仿真通過(guò)。
最主要的debug手段有:
查看log文件:仿真結(jié)束會(huì)生成很多結(jié)果文件。
看波形:最常用工具就是verdi了。
每家公司對(duì)于驗(yàn)證工程師debug的要求不盡相同,比如AMD,就要求驗(yàn)證工程師能找到最終的root cause,而大多數(shù)公司只要求驗(yàn)證工程師能基本定位,然后designer去詳細(xì)debug。
6. regression和coverage
到了項(xiàng)目的后期,所有的case都pass過(guò)了,并且比較穩(wěn)定了,下一步就要開(kāi)始跑regression和coverage了。
所謂regression就是把所有的case同時(shí)跑一遍,因?yàn)榇蠖鄶?shù)case里面會(huì)有很多random的機(jī)制,所以在不斷重跑的過(guò)程中,會(huì)隨機(jī)性的出現(xiàn)case fail。這也是regression的主要目的,就是抓出那些極端情況下出現(xiàn)的debug。
coverage主要包括code coverage和function coverage等,每家公司的要求都不盡相同。
每家公司跑regression和coverage都會(huì)使用腳本來(lái)完成,怎么高效順利跑完,是最關(guān)鍵的問(wèn)題,最終的結(jié)果一般會(huì)以網(wǎng)頁(yè)的形式呈現(xiàn),直觀明了。
7. support
前面屬于驗(yàn)證工程師的常規(guī)任務(wù)差不多就完成了,support屬于進(jìn)階版的。比如項(xiàng)目用的database出問(wèn)題了,跑仿真用的flow碰到問(wèn)題了,經(jīng)常就會(huì)叫驗(yàn)證工程師去support,幫忙解決問(wèn)題。
當(dāng)然搞不定也無(wú)所謂,但是如果你經(jīng)常能幫同事搞定這些問(wèn)題,那你在公司的地位就能與日俱增,升職加薪就更有籌碼了。
8. meeting
作為驗(yàn)證工程師,和其他工程師一樣,經(jīng)常還有無(wú)窮無(wú)盡的會(huì)議要開(kāi),各種review,各種討論。
如果你作為會(huì)議組織者,請(qǐng)記得事先做好充分的準(zhǔn)備噢,不然很容易被人鄙視的。
所以總結(jié)來(lái)說(shuō),最主要做的兩件重要的事情是:編程、debug
二、數(shù)字驗(yàn)證主要打交道的人有哪些?
1.驗(yàn)證工程師打交道最多的就是前端設(shè)計(jì)工程師(RTL設(shè)計(jì)工程師),一起討論問(wèn)題,經(jīng)常一起debugcase,目的就是讓寫(xiě)的verilog代碼沒(méi)有bug。
2.還經(jīng)常需要和架構(gòu)工程師打交道,去了解更多芯片的整體架構(gòu)和features;
3.如果你也負(fù)責(zé)后仿gatelevelsimulation的話,那還經(jīng)常需要和后端工程師打交道,因?yàn)楹蠓碌木W(wǎng)表是他提供給你的;
4.DFT工程師經(jīng)常也會(huì)來(lái)找你,因?yàn)樗残枰鰷y(cè)試和驗(yàn)證,很多時(shí)候他的驗(yàn)證平臺(tái)經(jīng)常就是從你的驗(yàn)證平臺(tái)移植過(guò)去的;
5.FPGA工程師也經(jīng)常會(huì)打交道,因?yàn)镕PGA驗(yàn)證也是數(shù)字驗(yàn)證的一種,你們會(huì)復(fù)用很多的測(cè)試用例,他也會(huì)經(jīng)常來(lái)找你復(fù)現(xiàn)一些錯(cuò)誤現(xiàn)場(chǎng)。
當(dāng)然,如果你是在一家大公司的話,分工就非常明確,你也就不需要和這么多人打交道了,比如如果你只負(fù)責(zé)IP level的驗(yàn)證,那基本只要和前端設(shè)計(jì)工程師打交道就可以了。
三、數(shù)字驗(yàn)證需要掌握的技能和條件。
現(xiàn)階段由于數(shù)字驗(yàn)證的平臺(tái)有很多種,主要的平臺(tái)有:
純verilog平臺(tái)、SystemC、純C/C++(CPU驗(yàn)證)、純UVM平臺(tái)、UVM+C/C++平臺(tái)、其他語(yǔ)言混合平臺(tái)(Matlab等)
每種平臺(tái)需要你掌握的技能不大一樣,但比較主流的平臺(tái)是3、4、5三種。一個(gè)初級(jí)工程師想全部掌握這些技能也很難,如果這些平臺(tái)你都搭過(guò),就變成老司機(jī)了。
由于驗(yàn)證工程師需要編程,所以掌握編程語(yǔ)言也是必須的,比如掌握下面知識(shí)就顯得比較重要:
Verilog、 C/C++、 Systemverilog、 UVM
另外,驗(yàn)證工程師經(jīng)常需要流程的自動(dòng)化,所以一些腳本語(yǔ)言也是必須的:
Shell、 Makefile、 Perl、 Python
除了這些外,熟悉一些協(xié)議和架構(gòu),也是有很大幫助的,比如:
ARM架構(gòu)、 AXI/AHB協(xié)議、 MIPI協(xié)議、 DDR協(xié)議等等
所有的技術(shù)類崗位,主要看的兩點(diǎn)就是:專業(yè)技能(skills)和項(xiàng)目經(jīng)驗(yàn)(experience)。
所以除了上面列的這些技能,你能實(shí)際做過(guò)一兩個(gè)項(xiàng)目,哪怕是IP級(jí)別的驗(yàn)證項(xiàng)目,也是很重要的,尤其是做項(xiàng)目過(guò)程中積攢的debug經(jīng)驗(yàn)。
如果你是在校學(xué)生,早幾年懂驗(yàn)證的人極少,所以基本上你只要會(huì)verilog,可能就可以找到驗(yàn)證工程師的職位了。現(xiàn)在在校學(xué)生通過(guò)各種渠道(比如:ic修真院)學(xué)習(xí),掌握了上面的這些技能,甚至積累了一兩個(gè)項(xiàng)目經(jīng)驗(yàn)。
四、數(shù)字驗(yàn)證誰(shuí)可以學(xué)習(xí)?
現(xiàn)階段,數(shù)字驗(yàn)證工程師主要以招聘本科以上學(xué)歷,對(duì)專業(yè)的要求并不是很苛刻,非集成電路方向也可以,只要你掌握了上面的這些技能,哪怕不相關(guān)專業(yè),比如材料、物理、自動(dòng)化、機(jī)械等專業(yè),也是可以成功應(yīng)聘。
五、數(shù)字驗(yàn)證發(fā)展方向?
未來(lái)的發(fā)展,一些人會(huì)一直做技術(shù),成為一名資深驗(yàn)證工程師,有些人會(huì)成為驗(yàn)證經(jīng)理,做一些管理類的工作。好消息是大部分人只要一直做下去都能成為一名資深工程師(STAFF級(jí)別)或者經(jīng)理。
有少數(shù)人也可以轉(zhuǎn),比如轉(zhuǎn)去做架構(gòu)工程師,去EDA公司做應(yīng)用工程師(AE),要么就索性創(chuàng)業(yè)。總的來(lái)說(shuō),絕大多數(shù)驗(yàn)證工程師還是會(huì)一直做下去,畢竟這個(gè)崗位還算一個(gè)天花板不低的崗位。
關(guān)于《數(shù)字驗(yàn)證》就介紹到這里!!!
你唯一需要保障的只是時(shí)間和堅(jiān)持!
了解→
就業(yè)、面試、課程、未來(lái)職業(yè)規(guī)劃@小編
喜歡你就分享,有想法、有疑問(wèn)你就@私信我,實(shí)在不行還可以在評(píng)論區(qū)嗶嗶......
總結(jié)
以上是生活随笔為你收集整理的uvm 形式验证_IC设计职位详解之“数字验证工程师”就业必学课程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 妇科输卵管积水怎么治疗
- 下一篇: dwf怎么合成一个_将ActionFor