本篇文章將分享我對 DE vs DV 及 IP team vs SoC team 的一些想法
歡迎各位一起來交流想法喔~~~
嗨嗨~各位好,這裡是九椅特報!
大家有因為以下的簡稱而感到疑惑嗎?
DD ? DE ? DV ?
IP team ?!SoC team ?!
到底是什麼鬼啦!!!
其實這就只是在 design house 常用的簡稱啦
這篇文章就來簡單分析這些名稱"代表的意義"及"區別"
好讓跟我一樣的菜鳥們更容易找到適合自己的職缺吧~
1. DD(Digital Designer) or DE(Digital design Engineer)
DD 和 DE 其實都是代表數位 IC 工程師喔,並沒有什麼區別!(後面我就都用 DE 來簡稱囉 比較習慣叫 DE XD)
以 front-end 來說,DE 主要負責:
a. 根據 project 需求制訂相關的 Spec. (Specification)
b. 根據 function 需求來撰寫對應的 verilog code
c. 撰寫 testbench 來驗證 function 是否正確
d. 檢查 code coverage (有分 Line / toggle / branch / functional 等等等的 coverage)
舉例: Line coverage 就是在找 verilog code 是否每行都有執行到( 抓冗員出來扁!)
e. 將撰寫好的 verilog code 透過 EDA tool 合成出相對應的電路
f. 測試合成後電路的 function 與合成前的 function 是否吻合
g. 根據合成後的 PPA 數據進行 cost down 動作 (盡可能達到低功耗、高效能、面積小) 要馬兒好,又要馬兒不吃草XD
以上是 DE 大致會負責的內容
當然這所謂的 function 定義非常廣,有可能是很純粹的控制訊號,
也有可能負責不同的 IP 介面的對接,甚至是跨不同頻率的訊號處理及low power處理等等等的
這部分就等後面 IP/SoC 再多講一些吧~
2. DV(Digital Verification Engineer)
DV 顧名思義就是驗證 function 是否正確啊
咦~DE 不就要寫 testbench 驗證了嗎! DV 是要驗什麼?!
其實 DE 的 testbench 會根據自己的想法去設計測試方式
但我們沒辦法保證 DE 的想法是否正確 (在業界對任何事都要抱持懷疑的態度XD)
且測資的數量是無法跑太大量的,不然一次 simulation 就要跑個 2~3 天,太慢了啦XD
且 DE 想的測資會有侷限性,沒辦法驗到所有 case
因此就有 DV 的誕生啦~
那 DV 負責的部分主要可以拆成 IP 及 system level
IP level:
盡可能解決測資有侷限性的問題,提高測資的 coverage
Solution:用 FPGA 進行測試,就可以花幾分鐘的時間把原本要跑 2~3 天才會跑完的測資一次跑完!
至於 FPGA 是怎麼辦到的,就等到以後有機會再討論吧 (FPGA design 也是一分很大的工啊)
而一個好 DV 的價值就在於"如何在短時間內提高 design 的可信度"
甚至可以協助 DE 突破盲點 主導整個 design 的方向
所以一個好 DV 的功用完全不亞於 DE 喔,現在大公司也愈來愈重視 DV 了!
System level:
有點類似 SoC 整合會 cover 到的事,看公司有沒有細分出這塊
而這個驗證就更複雜了
各個 IP team 做出來的 IP 都經過各單位驗證過
但這些 IP 整合在一起後又是另一個世界了...
function 出一卡車的問題是常有的事
這通常是因為各 IP 間的溝通方式定義得不清楚或彼此認知有出入
DV 就得一個個抓出問題,並把問題回報給各 IP team 進行處理 (這時很常會被質疑是不是驗法有問題 怎麼可能是我們的錯)
因此做 system level 的驗證必須要對整個 system 有非常清楚的認知,說話才會有說服力!
總結 DV的工作內容主要是
a. 了解整個 design / system
b. 建立驗證環境
c. 瘋狂抓bug
3. DE vs DV
常常聽到有人說 DE >>>>>> DV
公司不重視 DV 或 DV 都屎缺等等等的 (要比屎 FW 應該更屎XD)
但現在 design 規模愈來愈大,flow 愈來愈複雜的情況下
各個重要關卡都需要有 DV team 來協助把關 Chip 是否還活著
否則 Tape-out 後 function fail 就要人頭落地了...
所以現在大公司可以說是愈來愈重視 DV 了,有種地位昇華的感覺XD
因此新人找職缺也不一定要只鎖定 DE 缺,DV 也是可以很有貢獻的!
雖然我是在 DE team XD
4. IP team vs SoC team
我們先簡單定義一下 IP 跟 SoC
IP(Intellectual Property core):
一個已通過驗證,可以快速完成某種功能或應用的單元
通常只會是一項產品中的一小塊功能
業界有滿多公司專門在做 IP
再把 IP 嵌入至大公司的產品中 (SoC system 中)賺取營利
SoC(System on Chip):
將不同功能的單元 (IP) 整合成一個具有完整功能的晶片
如下圖 (MTK 最近很夯的 5G SoC)
可以看到它是由很多 Unit 來組成一顆 SoC
但這一個 Unit 可能本身就是一顆 SoC 喔
以 Display 為例,可能裡面就包含了很多不同的影像處理及傳輸的 IP 了
這也呼應到前面所說,現在的 design 真的都複雜到爆啊~~~
那加入 IP team 還是 SoC team 比較好呢
其實這真的是一個很艱深的問題XD
先講IP的部分:
雖然 IP 相較於 SoC 會比較專精一點 (就比較不雜啦)
但若是這顆 IP 過時了,就會比較難跨到其他領域 (Spec不一樣,需重新學習)
又或是其他公司做的 IP 比貴單位的 IP 好用又便宜,高層就決定把貴單位裁掉(砍冗員)買人家的 IP 來用
所以找 IP team 可以研究一下該 IP 目前的前景怎麼樣,有多少公司可以跳
SoC的部分:
如同前面所述,要把各個 IP 整合在一起真的是一個很大的學問
也會要負責很多雜工及大量的溝通協調
但在 SoC 可以看到更全面更完整的 design
一個有經驗的 SoC 整合工程師在業界可是非常有價值的
以上就是我的小小見解了~~
可能有些敘述不是那麼精準,就有請各位一起交換想法囉 (請各位鞭小力一點啊XD)
再來預計下篇文章會 overview 一下 front-end 的 design flow(也是我工作主要負責的部分XD)
帶大家了解一下各個階段所代表的含意及對應的 EDA tool 有什麼
就再請各位多多關照給予支持啦~~