本文是從 西西在冰城 在EETOP的一個問答帖整理而來, 由 qyxu1979、dtyuzhou 給出了比較詳細的解答。
西西在冰城 的提問:
我的老師之前就從事的是驗證的工作, 所以受他影響我也希望自己可以做驗證方面的工作。 但是真正開始接觸這方面發現, 驗證比設計是更難更重要的存在誒(個人觀點)
而且發現驗證工作對程式設計能力要求很高?
所以小白在此求助:
1 驗證工作需要哪些知識?(比如:指令碼語言, system verilog)
2 驗證方法學是必須的嗎?驗證方法學應該怎麼學呢?(因為我們有驗證這門課程, 但是在課程中主要講system verilog, 所以不是很理解驗證方法學需要怎麼學)
3 有 驗證工程師進階讀本之類的嗎?就像
程式師的讀書歷程:
x 語言入門
x 語言應用實踐
x 語言高階程式設計
x 語言的科學與藝術
程式設計之美
程式設計之道
程式設計之禪
頸椎病康復指南
哈哈, 開個玩笑。
希望瞭解的工程師、同學們說一說。
qyxu1979 的解答:
試著幫你解答下, 希望可以幫到你。
1 驗證工作需要哪些知識?
a、linux基本知識, 編輯器基本操作(gvim), 驗證基本知識(驗證與測試的區別, 驗證流程與測試點分解等等), 設計基本知識
b、驗證程式設計語言sv, 腳本知識(perl, shell, tcl至少會一種), 驗證模擬工具(cadence和synopsis公司的), makefile, 待驗證領域知識
c、驗證方法學(建議就學uvm吧), formal驗證
2 驗證方法學是必須的嗎?驗證方法學應該怎麼學呢?
a、個人認為驗證方法學是必須的,
b、先學會應用, 然後逐步深入學習原始程式碼(源碼不看也可, 但思想要理解)。 至於應用最快的是找個適當的小模組搭建下驗證環境即可, 第一個是最難的。
3 有驗證工程師進階讀本之類的嗎?
這個太多了, 英語好的話直接看原版吧, 寧缺毋濫, 否則越看越糊塗, 每個人的理解可能都不一樣, 找到適合自己的即可, 總之目標就是自己搭建的環境簡單易用, 方便靈活。
後記:
個人覺得驗證比設計入門要難, 如果說設計3個月初步可以獨立幹活的話, 驗證至少需要6個月。 一個好的師傅及驗證平臺很關鍵, 否則會把你帶到溝裡, 形成思維定式想改變就難了。
一個前端專案至少70%的工作量都在驗證領域, 但很多公司不重視驗證, 還是認為設計更重要(畢竟是從無到有, 而且最終需要形成產品的), 看不到或輕視驗證所做的貢獻。
dtyuzhou 的解答:
驗證涉及到的知識面可能確實會比設計多一點, 但是好多優秀的工程師是可以做到設計驗證通吃的, 只是工作重點會有所偏重設計或偏重驗證而已。 如果覺得自己的軟體基礎還不錯的話, 可以考慮做驗證。
現在市場對驗證工程師的需求非常大, 基本上是超過設計人員的需求。 現在有很多公司的驗證人員都是短缺的, 所以工作前景還是不錯的。
基礎要求前面的大神已經都有所提及了。 基本來看的話最基礎的還是systemverilog, 這個是基礎,
方法學肯定是要的, 最好是UVM, 至於版本沒有必要刻意的最求高的UVM版本, 現在1.1d基本上還是可以的。 如果身邊有VMM的環境可供學習的話, 也是可以的, 最好是基於VMM1.2版本的驗證環境, VMM 1.2和UVM算是互相借鑒了, 可以比較容易的過渡到UVM, 畢竟以後的大趨勢還是UVM。
書籍的話還是相關的user 手冊比較靠譜啊。